Register Stack Engine
Die Diskussion über diesen Antrag findet auf der Löschkandidatenseite statt.
Hier der konkrete Grund, warum dieser Artikel nicht den Qualitätsanforderungen entsprechen soll:
Begründung:Eine Denglische Sprachvergewaltigung ohne erkennbaren Sinn. Was sich verstehen läßt scheint zudem zeimlich unwichtig zu sein. --((ó)) Käffchen?!? 13:39, 25. Apr 2006 (CEST)
Momentan für Laien unverständlich, zuviele unerklärte Fachbegriffe. Das Format muss natürlich auch überarbeitet werden.--Thomas S.Postkastl 21:42, 11. Apr 2006 (CEST)
Die Register Stack Engine (RSE) ist ein Mechanismus zur Verwaltung des Stacks bei der IA64 Architektur.
Die IA64 definiert 127 General Purpose Register, von denen die Register 0 bis 31 wie normale Register funktionieren und die Register 32 bis 127 spezielle Mechanismen unterstützen.
Bei einem Funktionsaufruf werden Argumente, die Rücksprungaddresse und Rückgabewerte grundsätzlich nicht auf dem Stack übergeben, sondern in Registern. Die Register 32 bis 127 dienen dabei selbst als Stack,
der Register-Stack-Pointer zeigt auf das Register, das als nächstes für die Übergabe von Funktionsparametern zur Verfügung steht. Sind keine Register mehr Verfügbar, werden welche aus einem früheren Stackrahmen in den Hauptspeicher (meistens nur in den Prozessorcache) geschrieben.
Bei jedem Funktionsaufruf werden die Register rotiert, sodass die Funktionsparameter immer in Register 32 anfangen. Nach diesen kommen die lokalen Daten der Funktion und dann die Register, die für die Weitergabe
an untergeordnete Funktionen bestimmt sind. Man spricht von Input, Local und Output Registern.
Bei der Rotation werden Registerinhalte nicht kopiert. Es wird ein Zeiger angepaßt, der auf das aktuelle Register Nr. 32 zeigt. Die Synchronisation mit dem Hauptspeicher ist nur nötig, wenn keine Register mehr verfügbar sind, das waere z.B. der Fall bei einer Aufruftiefe von 96 Funktionen, die keine Parameter übernehmen (pro Funktionsaufruf muß nur die Rücksprungaddresse gesichert werden).
Optional kann die Synchronisation mit dem Hauptspeicher auch im Hintergrund geschehen, falls die Load/Store Einheit nicht beschäftigt ist kann sie spekulativ entweder die Anzahl der verfügbaren Register erhöhen, indem sie Register von früheren Calls in den Hauptspeicher schreibt, oder Register früherer Stackrahmen aus dem Hauptspeicher ausließt, damit sie bei der Rückkehr aus Funktionen schnell verfügbar sind.
Die RSE ist eine Generalisierung von Register Windows, wie sie bei SPARC Prozessoren auftauchen. Dort ist z.B.
die größe eines Register Windows immer gleich, bei der RSE kann sie beliebig festgelegt werden.