Warum hat die MIPS-CPU 32 Register?

2480
user306919

Warum hat die MIPS-CPU 32 Register in der Registerdatei? Könnte es mehr oder weniger sein? Was ist die Auswirkung, wenn wir die Größe der Registerdatei ändern?

2
Es verfügt über 32 Register, da die Anzahl der physischen Register der CPU tatsächlich ist. Ramhound vor 10 Jahren 0
** Mögliches Duplikat dieser Fragen zu Stack Overflow **: [Warum sind 16 Register die ideale Anzahl von Registern in der CPU-ARM-Architektur?] (Http://stackoverflow.com/questions/8466981/why-16-registers-is-ideal) -number-of-register-in-cpu-arm-architecture) (* die Antwort bezieht sich auf MIPS, nicht auf ARM *) und [Wenn Register so unglaublich schnell sind, warum haben wir nicht mehr davon?] (http: / /stackoverflow.com/questions/6079215/if-registers-are-so-blazingly-fast-why-dont- wir- haben-mehr-von-einem). Breakthrough vor 9 Jahren 0

3 Antworten auf die Frage

1
LawrenceC

MIPS ist eine "RISC" - oder "Load-Store" -Architektur.

RAM war früher so schnell wie CPUs. Die Leute schreiben also Programme, die RAM als Zwischenspeicher oder temporären Speicher verwenden. Frühe CPUs hatten daher nur wenige Register (dh 6502, Z80 - der 6502 hatte nur 3 Universalregister. Einige CPUs wie der TMS9900 verwendeten tatsächlich RAM als Register). Dadurch wurden für die CPUs weniger Transistoren verwendet, was bedeutet, dass sie billiger waren, sich leichter ausbilden lassen und einfacher zu entwickeln waren (kein CAD-basiertes Chipdesign in den 70er Jahren ...).

RAM ist so schnell wie die CPU um 1985 oder so, und ist nur noch schlimmer geworden.

RISC hat sich zum Teil auf dieses Problem konzentriert (dies war, bevor der CPU-Cache üblich war oder so groß wie heute ist). Durch die Bündelung von Registern kann langsamer RAM-Speicher viel Zeit für Zwischenberechnungsergebnisse und ähnliches vermeiden.

Wenn Sie die verfügbaren Register reduzieren, müssen Sie dafür häufiger auf langsameres RAM wechseln.

Ich weiß nicht genau, warum 32 als "Sweet Spot" ausgewählt wurde - abgesehen von den 5 Bits und ich weiß, dass MIPS-Opcodes 3 5-Bit-Felder haben. und es ist wirklich 31, da das erste Register immer 0 zurückgibt.

0
Ben Voigt

In einem System mit Registerumbenennung können Sie die Anzahl der physischen Register variieren und nur die Leistung beeinflussen.

Sie können jedoch nicht die Anzahl der Registernamen ändern, ohne eine völlig neue Architektur zu erstellen. Versuchen Sie, einige Namen zu entfernen, und Programme, die diese Namen verwendet haben, schlagen fehl. Versuchen Sie, einige Namen hinzuzufügen, und die 5-Bit-Codierung reicht nicht mehr aus, um sie alle zu beschreiben.

Sie können versuchen, Tricks wie Instruktionspräfixe zu verwenden, um den Instruktionssatz um erweiterte Instruktionen zu erweitern, die mehr oder andere Namen akzeptieren, während die alten Kodierungen intakt bleiben, um die Abwärtskompatibilität zu ermöglichen. Ich kenne niemanden, der dies mit MIPS macht, aber AMD64 aka EM64T aka x86_64 verwendete den Ansatz "Erweitern mit (meistens) Rückwärtskompatibilität" basierend auf x86.

0
Joe

Das musste nicht sein, aber es ist ein guter Kompromiss mit anderen Designentscheidungen.

Zuallererst beträgt die Befehlslänge in MIPS 32 Bit (die meisten MIPS gibt es eine 64-Bit-Version). (Sie können viele Details sehen, wie es hier zusammenbricht ). In vielen MIPS-Anweisungen müssen Sie drei Register angeben, beispielsweise zwei Quellen und ein Ziel (z. B. r4 = r2 + r4). Die MIPS-Architektur ermöglicht die Angabe von 5 Bits für jedes dieser Register, und 32 ist die maximale Anzahl, die Sie mit fünf Bits darstellen können. Es gibt also keinen Grund, mehr Register zu erhalten, auf die Sie nicht zugreifen können.

Wenn Sie mit MIPS 6 Bits zur Auswahl eines Registers haben, können Sie bis zu 64 verschiedene Register verwenden. Diese zusätzlichen Bits müssen jedoch von irgendwoher kommen, möglicherweise durch Verringerung der Anzahl von Operationen oder Adressierungsmodi.

Es gibt andere Ansätze, einige Prozessoren verwenden Bankwechsel, was im Wesentlichen heißt: "Ich habe diese 32 Register, die ich gerade verwende, aber ich habe auch diese spezielle SWITCH-Anweisung, mit der ich diese 32 Register für eine Weile herausziehen kann vor dem Zurückschalten "ist für bestimmte Anwendungen praktisch, für andere jedoch konzeptionell schwierig.