DE10121745A1 - Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher - Google Patents

Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher

Info

Publication number
DE10121745A1
DE10121745A1 DE10121745A DE10121745A DE10121745A1 DE 10121745 A1 DE10121745 A1 DE 10121745A1 DE 10121745 A DE10121745 A DE 10121745A DE 10121745 A DE10121745 A DE 10121745A DE 10121745 A1 DE10121745 A1 DE 10121745A1
Authority
DE
Germany
Prior art keywords
memory
data
register
stack
tos
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE10121745A
Other languages
English (en)
Inventor
Uwe Porst
Wolfram Drescher
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
Systemonic AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Systemonic AG filed Critical Systemonic AG
Priority to DE10121745A priority Critical patent/DE10121745A1/de
Priority to JP2002101428A priority patent/JP2003006040A/ja
Priority to US10/137,781 priority patent/US6871256B2/en
Publication of DE10121745A1 publication Critical patent/DE10121745A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

Um bei einer Datenspeicheranordnung für ein Mikroprozessorsystem, bei welcher der Datenspeicher (1) als ein sich aus Elementenspeichern zusammengesetzter Gruppenspeicher ausgebildet ist, in dem Daten in Datengruppen mit mehreren Elementen unter jeweils einer Gruppenadresse speicherbar sind, einen Speicherstapel bereitzustellen, bei dem der zur Verfügung stehende Speicherraum optimal ohne das Auftreten von Speicherlücken genutzt werden kann, wird die Verwendung zumindest eines Speicherzeigers (7, 21) vorgeschlagen, welcher eine Gruppenadresskomponente und eine Elementenadresskomponente aufweist. Damit kann der Stapelspeicher mit Datenwörtern betrieben werden, deren Breite geringer als die Datengruppenbreite ist, ohne das nicht genutzte Speicherbereiche im Stapelspeicher auftreten.

Description

Die Erfindung betrifft ein Verfahren zum Realisieren eines Stapelspeichers in einem aus Elementenspeichern zusammenge­ setzten Datenspeicher für ein Mikroprozessorsystem sowie eine Datenspeicheranordnung zur Ausführung des Verfahrens.
Aufgrund der Entwicklungen auf dem Gebiet der digitalen Si­ gnalprozessoren ist das Interesse an paralleler Datenverarbei­ tung stark gestiegen. Beispielsweise ist in der DE 198 35 216.1 eine Prozessoranordnung zur parallelen Datenverarbeitung mit einem Datenspeicher und parallelen Verarbeitungseinheiten offenbart, die über Kommunikationseinheiten miteinander ver­ bunden sind. Der Datenspeicher ist als Gruppenspeicher ausge­ führt, in den Datengruppen mit jeweils mehreren Elementen unter einer Adresse gespeichert sind, wobei jedem Element der Datengruppe eine Verarbeitungseinheit zugeordnet ist und der Datenspeicher in der Breite eines Elements direkt mit Spei­ cherelementen einer zugeordneten Verarbeitungseinheit verbun­ den ist. Durch eine derartige Anordnung wird es ermöglicht, dass Datenelemente einer Datengruppe entweder direkt an eine zugeordnete Verarbeitungseinheit gegeben werden oder über die Kommunikationseinheit auf andere Verarbeitungseinheiten ver­ teilt werden können. Eine Datengruppe kann somit gleichzeitig aus dem Datenspeicher ausgelesen und auf mehrere Verarbei­ tungseinheiten aufgeteilt und parallel verarbeitet werden.
Auch bei einer derartigen Prozessoranordnung tritt bei der Abarbeitung eines Datenverarbeitungsprogramms beispielsweise die Notwendigkeit auf, lokale Variablen von Prozeduren zu speichern. Insbesondere bei rekursiven Prozeduren ist das Halten jeder Variablen auf einer absoluten Speicheradresse nicht möglich, da ein zweiter Aufruf der Prozedur die ersten abgelegten Variablenwerte überschreiben würde. Aus diesem Grund wird üblicherweise für das Speichern lokaler Variablen ein spezieller Speicherbereich eingerichtet, der als Stapel (Stack) bezeichnet wird und als LIFO (last in first out)-Spei­ cher arbeitet, siehe beispielsweise Andrew S. Tanenbaum, James Goodman "Computerarchitektur", Prentice Hall, 2001, S. 263- 265. Andere Anwendungen für einen Speicherstapel sind dem Fachmann wohlbekannt, weshalb im Folgenden darauf nicht einge­ gegangen werden muss.
Somit besteht die Aufgabe der Erfindung darin, bei einem oben­ beschriebenen Datenspeicher einen Stapelspeicher bereitzustel­ len, wobei der zur Verfügung stehende Speicherraum optimal, möglichst ohne das Auftreten von Speicherlücken genutzt werden kann.
Verfahrensseitig wird die Aufgabe dadurch gelöst, dass ein Stapelspeicherbereich im Datenspeicher festgelegt und ein Speicherzeiger zum Zeigen auf einen Speicherplatz im Stapel­ speicher verwendet wird. Der Speicherplatz wird dabei durch eine Gruppenadressenkomponente des Speicherzeigers und durch einen den Speicherelementen zugeordneten Parameter festgelegt, wobei dieser Parameter eine Elementenadresskomponente des Speicherzeigers sein kann.
Der Erfindung liegt die Idee zugrunde, bei einem sich aus Elementenspeichern zusammengesetzten Datenspeicher für Daten­ wörter, deren Breite kleiner als die Summe der Elementenspei­ cherbreiten ist, dadurch einen Stapelspeicher bereitzustellen, dass der Speicherplatz mehrerer, insbesondere aller Elementen­ speicher, verwendet wird, wobei ein einzelnes Element eines Elementenspeichers angesprochen werden kann.
Zum optimalen Ausnutzen des Speicherplatzes des Datenspeichers wird der Stapel auf mehrere Elementenspeicher derartig ver­ teilt, dass beim aufeinanderfolgenden Ablegen auf den Stapel zuerst die einer Gruppenadresse zugehörigen Elementenspeicher nacheinander aufgefüllt werden und dann die Elemente der be­ nachbarten Gruppenadresse aller Elementenspeicher gefüllt werden.
Eine besonders zweckmäßige Ausgestaltung der Erfindung besteht darin, dass beim Einschreiben eines Datenworts in den Stapel­ speicher bzw. beim Auslesen eines Datenworts aus dem Stapel­ speicher das Datenwort jeweils in ein als Stapel-Eingangs­ register bzw. Stapel-Ausgangsregister arbeitendes TOS(top of stack)-Register geschrieben wird. Durch die spezielle Ausge­ staltung des Speicherzeigers mit einer Gruppenadresskomponente und einer Elementenadresskomponente kann ein mit einem Push- Befehl in das TOS-Register eingeschriebene Datenwort in den Bereich des Datenspeichers eingeschrieben werden, welcher durch den Speicherzeiger angezeigt wird. Dieser Speicherzeiger wird zur Anzeige eines Speicherbereichs im Stapelspeicher nach dem Einschreiben bzw. der Entnahme eines Datenworts aus dem Datenspeicher um das Verhältnis der Breite des TOS-Registers zur Elementenbreite des Datenspeichers erhöht. Somit kann der Stapelspeicher für unterschiedliche Wortbreiten konfiguriert werden.
In einer günstigen Ausgestaltung des erfindungsgemäßen Verfah­ rens wird ein zweiter Speicherzeiger verwendet, der auf einen Speicherbereich zeigt, der um einen vorgegebenen Wert niedri­ ger liegt, als der vom ersten Speicherzeiger angezeigte Spei­ cherbereich, wobei der Wert auf das Verhältnis der Breite des TOS-Registers zur Elementenbreite des Datenspeichers einge­ stellt wird. Dieser zweite Pointer ist dann vorteilhaft, wenn ein Datenwort nicht direkt vom TOS-Register in den Datenspei­ cher eingeschrieben wird sondern über ein Zwischenregister. Die Funktion des zweiten Pointers kann aufgrund seines vor­ gegebenen Wertes relativ zum ersten Pointer auch dadurch be­ reitgestellt werden, dass ausgehend vom ersten Pointer der vorgegebene Wert abgezogen und die sich ergebende Adresse als die durch den zweiten Pointer angegebene Adresse verwendet wird.
Es ist besonders zweckmäßig, wenn bei der Erhöhung oder Er­ niedrigung eines Speicherzeigers die Elementenadresskomponente modulo der Anzahl der Elementenspeicher verändert wird, wobei ein Übertrag oder Untertrag in die Gruppenadresskomponente übertragen wird. Damit wird erreicht, dass der Speicherbe­ reich, wie obenstehend schon beschrieben, so ausgefüllt wird, dass Elemente einer Gruppenadresse nacheinander beschrieben werden und nach dem vollständigen Auffüllen der Elemente einer Gruppenadresse diese um eins bzw. das Verhältnis der TOS-Regi­ sterbreite zur Elementenspeicherbreite verändert wird.
Vorteilhafterweise wird mit dem zweiten Speicherzeiger der Elementenspeicher und die Gruppenadresse angezeigt, von wel­ chem als nächstes gelesen wird, wobei auch nach dem Auftreten eines Pop-Befehls beide Speicherzeiger um das Verhältnis der Breite des TOS-Registers zur Elementenbreite des Datenspei­ chers verändert, d. h. vermindert werden.
Um eine Laufzeitoptimierung bzw. Takterhöhung für den auf mehrere Elementenspeicher verteilten Stapelspeicher bereit­ stellen zu können, kann vorgesehen sein, dass nach dem Ablegen eines Datenworts in das TOS-Register bzw. nach dem Auslesen eines Datenworts aus dem Datenspeicher das Datenwort in einem Zwischenregister zwischengespeichert wird.
Um die gewünschte Arbeitsgeschwindigkeit des erfindungsgemäßen Stapelspeichers für eine bidirektionale Übertragung bereit­ stellen zu können, kann vorgesehen sein, dass ein Datenwort in ein Lese-Zwischenregister oder ein Schreib-Zwischenregister geladen wird.
Anordnungsseitig wird die Aufgabe dadurch gelöst, dass die Datenspeicheranordnung, welche einen sich aus Elementenspei­ chern zusammengesetzten Gruppenspeicher umfasst, in welchem Daten in Datengruppen mit mehreren Elementen unter jeweils einer Gruppenadresse speicherbar sind, einen Speicherzeiger, insbesondere in Form eines Registers aufweist, der eine Grup­ penadresskomponente und eine Elementenadresskomponente um­ fasst, wobei der Speicherzeiger auf einen Bereich eines in­ nerhalb des Datenspeichers festgelegten Stapelspeichers zeigt und sich der Stapelspeicher über zumindest zwei Elementen­ speichern des Datenspeichers erstreckt.
Wie schon obenstehend erläutert, kann durch die Bereitstellung des Speicherzeigers mit einer Gruppenadresskomponente und einer Elementenadresskomponente der im Datenspeicher festge­ legte Stapelspeicher lückenlos adressiert werden.
Um die bei einem verteilten Speicher auftretenden größeren Laufzeiten zumindest teilweise zu kompensieren, kann vorgese­ hen sein, dass ein mit dem Datenspeicher in Verbindung stehen­ des und als Stapeleingangs- und Stapelausgangsregister arbei­ tendes, feststehendes TOS-Register vorgesehen ist, über das Datenwörter in den Stapelspeicher einschreibbar und aus dem Stapelspeicher entnehmbar sind.
Um den Schaltungsaufwand der erfindungsgemäßen Datenspeicher­ anordnung gering zu halten, kann die Breite des TOS-Registers an die Breite der Elementenspeicher bzw. die Gesamtbreite einer Datengruppe angepasst sein. Besonders vorteilhaft ist es, wenn die Anzahl der Elementenspeicher ein ganzzahliges Vielfaches des Verhältnisses der Breite des TOS-Registers zur Elementenspeicherbreite ist. Somit kann sichergestellt werden, dass innerhalb einer Datengruppe der gesamte Speicherinhalt einer vorgegebenen Anzahl von TOS-Register-Datenwörtern abge­ legt und keine Datenwortsplittung in eine andere Datengruppe notwendig ist.
Zur Erhöhung der Arbeitsgeschwindigkeit kann ferner vorgesehen sein, dass zwischen den Elementenspeichern und dem TOS-Regi­ ster jeweils eine bidirektional arbeitende Zwischenregister­ einrichtung angeordnet ist, die ein Lese-Zwischenregister und eine Schreib-Zwischenregister aufweist, wobei die Zwischen­ register eine Breite entsprechend der Elementenspeicher besit­ zen.
In das Schreib-Zwischenregister bzw. das Lese-Zwischenregister eingeschriebene Daten sind durch die Verbindung zum TOS-Regi­ ster innerhalb eines Taktes wieder im TOS-Register verfügbar. Weiterhin kann durch das Vorsehen einer Zwischenregisterein­ richtung für jeden Elementenspeicher erreicht werden, dass das als nächstes aus einem Elementenspeicher auszulesende Daten­ wort im Zwischenregister schon vorgehalten wird, von welchem es bei Bedarf in das TOS-Register übermittelt werden kann. Ferner ist es auch möglich, dass alle Lese-Zwischenregister das jeweilige als nächstes aus dem zugeordneten Elementen­ speicher auszulesende Datenwort für einen zukünftigen Abruf vorhalten.
Um zu erreichen, dass ein in das TOS-Register eingeschriebenes Datenwort auch schon beim nächsten Takt wieder im TOS-Register verfügbar ist, kann eine dem Lese-Zwischenregister zugeordnete Multiplexer-Einrichtung vorgesehen sein, mit welchem ein Da­ tenwort aus dem TOS-Register oder dem zugeordneten Elementen­ speicher zum Einschreiben in das Lese-Zwischenregister ausge­ wählt werden kann.
Die Erfindung wird im Folgenden durch das Beschreiben einer Ausführungsform unter Bezugnahme auf die beiliegenden Zeich­ nungen beschrieben, wobei
Fig. 1 eine erfindungsgemäße Datenspeicheranordnung zum Be­ reitstellen eines Stapelspeichers,
Fig. 2 den Aufbau der beiden Speicherzeiger für den Stapel­ speicher und
Fig. 3 die Verschaltung der Zwischenregistereinrichtung mit dem TOS-Register des Stapelspeichers und dem Daten­ speicher zeigt.
In Fig. 1 ist eine schematische Darstellung einer erfindungs­ gemäßen Datenspeicheranordnung zum Bereitstellen eines Stapel­ speichers 2 dargestellt, wobei sich der Datenspeicher 1 aus mehreren Elementenspeichern 3, 4, 5 und 6 zusammensetzt. Die Daten sind in Datengruppen mit mehreren Elementen im Daten­ speicher abgelegt und werden über eine sogenannte Gruppen­ adresse angesprochen. Innerhalb des Datenspeichers ist nun ein Speicherbereich festgelegt, der für die Realisierung eines Stapelspeichers 2 bestimmt ist. Hierzu ist die Gruppenadresse [0] vorgegeben, welche die niedrigste Gruppenadresse des Sta­ pelspeichers festlegt, von welcher der Speicherplatz aufge­ füllt wird. Die Festlegung des Stapelspeicherbereichs besteht demnach in der Festlegung der Startadresse des Stapels. Der vom Stapelspeicher verwendete Speicherplatz richtet sich nach der Anzahl der ausgehend von der Basisadresse in den Stapel eingeschriebenen Stapelwörter. Aus dem Stapelspeicher her­ ausgezogen ist ein TOS-Register 14, das als Stapelausgangs- und Stapeleingangsregister ausgebildet ist. Das TOS-Register ist über ein Verbindungsnetzwerk 13 mit Zwischenregisterein­ richtungen 9, 10, 11 und 12 verbunden, die jeweils einem der Elementenspeicher zugeordnet und mit diesen verbunden sind, wobei die Breite der Zwischenregister gleich der Breite der Elementenspeicher ist. In der dargestellten Ausführungsform der Erfindung ist die Breite des TOS-Registers 14 auch iden­ tisch mit der Elementenspeicherbreite, sodass ein in das TOS- Register eingeschriebenes Datenwort nach einer Zwischenablage in einem Zwischenregister direkt in einen Elementenspeicher eingeschrieben werden kann. Die mit den Bezugszeichen 16, 17 und 18 bezeichneten Register sind beispielhafte Prozessor­ register, aus denen über das TOS-Register in den Stapelspei­ cher eingeschrieben oder Daten aus dem Stapelspeicher entnom­ men werden können.
Ein einzelnes in den Stapelspeicher einzuschreibendes oder zu entnehmendes Datenwort besteht somit aus einem vorgegebenen Anteil einer Datengruppe, d. h. aus einem Element. Um ein der­ artiges Element bzw. dessen Speicherplatz im Stapelspeicher 2 ansprechen zu können, ist je nach Ausführungsform zumindest ein Speicherzeiger oder Pointer vorgesehen, der auf einen Speicherbereich des Stapelspeicher 2 zeigt, in den ein Daten­ wort eingeschrieben werden kann. In der in Fig. 1 dargestell­ ten Ausführungsform der Erfindung sind zwei Pointer 7, 21 umfasst. Der erste Stapelzeiger 7 wird als Push-Pointer und der zweite Zeiger 21 als Pop-Pointer bezeichnet, wobei die Speicherzeiger vom Decodierer 8 decodiert werden.
Der Aufbau der beiden Speicherzeiger ist in Fig. 2 dar­ gestellt. Die Pointer umfassen jeweils eine Gruppenadress­ komponente 71 und eine Elementenadresskomponente 72. Die Grup­ penadresskomponente weist eine beispielhafte Breite von 8 Bit und die Elementenadresskomponente eine Breite von 2 Bit auf, sodass mit den in Fig. 1 dargestellten Pointern mit der Ele­ mentenadresskomponente 72 vier Elementenspeicher und mit der Gruppenadresskomponente 71 insgesamt 256 Datengruppen ange­ sprochen werden können. Demnach können die Stapelzeiger einen Stapel mit insgesamt 1.024 Datenwörtern abdecken.
Der in Fig. 2 gezeigte Push-Pointer 7 zeigt mit seiner Elemen­ tenadresskomponente 72 auf den ersten Elementenspeicher 3 und mit seiner Gruppenadressskomponente 71 auf die achte Daten­ gruppe, sodass der Push-Pointer 7 auf das Speicherelement 37 im Elementenspeicher 3 weist. Der Push-Pointer gibt die Adres­ se an, in welche das nächste mit einem Push-Befehl über das TOS-Register in den Stapel eingeschriebene Datenwort abgelegt werden soll. Demgegenüber zeigt der Pop-Pointer 21 auf das Element im Stapelspeicher, das zuletzt in diesen eingeschrie­ ben wurde beziehungsweise als nächstes Stapelelement aus dem Datenspeicher zu entnehmen ist. Im vorliegenden Beispiel zeigt dieser mit seiner Elementenadresskomponente 72 auf den vierten Elementenspeicher und mit seiner Gruppenadresskomponente 71 auf die siebte Datengruppe, wodurch der in Fig. 2 dargestellte Pop-Pointer 21 das Datenelement oder Datenwort 66 adressiert, siehe Fig. 1. Die Notwendigkeit, mit zwei Pointern zu arbei­ ten, ergibt sich aus der Tatsache, dass ein in das TOS-Regi­ ster eingeschriebenes Datenwort nicht direkt in den Daten­ speicher eingeschrieben wird. Hierdurch erhöht sich zwar der Aufwand zum Betrieb des Speichers, dieser wird jedoch durch den gewonnenen Geschwindigkeitsvorteil mehr als kompensiert.
Nachfolgend wird auf die Funktionsweise des erfindungsgemäßen Stapelspeichers eingegangen. Es sei angenommen, dass ein Sta­ pelspeicher im in Fig. 1 dargestellten Datenspeicher durch Festlegung der ersten Datengruppe initialisiert ist. Somit weist der Push-Pointer auf das erste Element 30 im Elementen­ speicher 3. Da noch kein Datenelement in den Datenspeicher eingeschrieben ist, zeigt der Pop-Pointer auf keine gültige Adresse. Nun wird mit einem Push-Befehl der Speicherinhalt des Registers 16 in das TOS-Register 14 eingeschrieben. Noch im gleichen Takt wird das Datenwort vom TOS-Register in die dem ersten Elementenspeicher 3 zugeordnete Zwischenregisterein­ richtung 9 geschrieben, wobei das TOS-Register 14 mittels des Verbindungsnetzwerks 13 mit allen Zwischenregistereinrichtun­ gen 9, 10, 11 und 12 verbunden ist. Das Zwischenregister 9 wird dabei durch den Decoder 8 aufgrund der Elementenadress­ komponente des Push-Pointers ausgewählt. Der Push-Pointer wird jedoch noch nicht erhöht, da das Datenwort sich noch nicht im zugeordneten Elementenspeicher 3 befindet. Erst im nachfolgen­ den Takt wird das in der Zwischenregistereinrichtung 9 befind­ liche Datenwort in die durch den Push-Pointer angegebene Adresse eingeschrieben, der Push-Pointer in der Elementen­ adresse um eins erhöht und der Pop-Pointer auf den vorherigen Wert des Push-Pointers eingestellt. Schon in diesem zweiten Takt kann ein weiteres Datenwort, beispielsweise aus dem Pro­ zessorregister 17 über das Verbindungswerk 15 in das TOS-Regi­ ster 14 mittels eines Push-Befehls eingeschrieben werden. Demnach ist zwar das Eintragen des Datenworts in die diesem zugeordnete Stapel-Speicherstelle verzögert, eine Blockierung des Stapelspeichereingangs tritt jedoch nicht auf. Durch wei­ tere Push-Befehle werden zuerst die Elemente der anderen Ele­ mentenspeicher an der vorgegebenen Gruppenadresse aufgefüllt und der Push-Pointer sowie der Pop-Pointer jeweils in der Elementenadresskomponente um eins erhöht. Immer wenn ein Da­ tenelement im letzten Elementenspeicher 6 eingeschrieben wird, wird im Push-Pointer durch die Erhöhung der Elementenadresskomponente um eins die Elementenadresskomponente auf Null gesetzt, wobei der Übertrag zur Gruppenadresskomponente hin­ zugefügt wird, sodass der Push-Pointer dann auf das Element des Elementenspeichers 3 mit der um eins erhöhten Gruppen­ adresse zeigt. Demnach wird die Elementenadresskomponente modulo der Anzahl der Elementenspeicher verändert, wobei ein Übertrag (Push-Befehl) oder Untertrag (Pop-Befehl) in die Gruppenadresskomponente eingeht.
Bei der Entnahme eines Datenworts aus dem Stapelspeicher 2 wird das zuletzt eingeschriebene Wort über das TOS-Register übernommen und beispielsweise in das Prozessorregister 18 eingeschrieben. Nach der Entnahme eines Datenworts aus einem der Elementenspeicher 3, 4, 5 oder 6 wird der Push-Pointer und der Pop-Pointer in der Elementenadresskomponente um eins er­ niedrigt, wobei gleichzeitig eine eventuell auftretender Un­ tertrag, wie obenstehend erläutert, in der Gruppenadresskompo­ nente berücksichtigt wird. Durch den speziellen Aufbau der beschriebenen Ausführungsform, bei welchem das TOS-Register und die Elementenspeicher bzw. die Zwischenregistereinrichtun­ gen die gleiche Datenbreite aufweisen, ist das Hoch- bzw. Herunterzählen der Pointer vereinfacht. Es ist jedoch auch möglich, im TOS-Register andere Datenwortbreiten, beispiels­ weise die zweifache Breite der Elementenspeicher, zu verwen­ den. In diesem Fall wird das in das TOS-Register eingeschrie­ bene Datenwort in zwei Datenwörter aufgeteilt und in benach­ barte Elementenspeicher eingeschrieben, wobei die Pointer dann jeweils um den Wert zwei in der Elementenadresskomponente verändert werden.
Um zu verhindern, dass durch die Zwischenschaltung der Regi­ stereinrichtungen 9, 10, 11 und 12 zwischen die Elementen­ speicher und das TOS-Register 14 Verzögerungen beim Auslesen der Daten entstehen, weisen die Zwischenregistereinrichtungen jeweils ein Lese-Zwischenregister und eine Schreib-Zwischen­ register auf. Eine ausführliche Darstellung der Verschaltung des Elementenspeichers 3 mit dessen zugeordneter Zwischen­ registereinrichtung 9 zeigt Fig. 3. In der dargestellten Ausführungsform sind alle Zwischenregistereinrichtungen gleich aufgebaut, sodass sich Fig. 3 nur auf den Elementenspeicher 3 und dessen zugeordneter Zischenregistereinrichtung 9 bezieht. Wird ein Datenwort in das TOS-Register 14 eingeschrieben, wird dieses über den Datenpfad S1 zum Schreib-Zwischenregister 23 übermittelt, von welchem es im nächsten Takt in das durch die Gruppenadresskomponente festgelegte Element des Elementen­ speichers 3 eingeschrieben werden kann. Um bei einem direkt nachfolgenden Pop-Befehl das im vorherigen Takt in das TOS- Register eingeschriebene Datenwort sofort wieder zur Entnahme im TOS-Register bereitstellen zu können, ist ein weiterer Schreibpfad S2 vorgesehen, über den gleichzeitig mit dem Ein­ schreiben in das Schreib-Zwischenregister 23 das Datenwort auch in das Lese-Zwischenregister 22 eingeschrieben werden kann. Hierzu ist ein Multiplexer 24 vorgesehen, über den aus­ gewählt werden kann, ob in das Lese-Zwischenregister 22 ein Datenwort aus dem Elementenspeicher 3 oder das in das TOS- Register eingeschriebene Datenwort übermittelt wird.
Weiterhin ist in einem bestimmten Betriebsmodus vorgesehen, dass in allen Lese-Zwischenregistern jeweils das zuletzt in dem zugeordneten Elementenspeicher eingeschriebene Datenwort vorgeladen wird, sodass diese beim Auftreten eines oder mehre­ rer aufeinanderfolgender Pop-Befehle ohne Verzögerung an das TOS-Register übertragen werden können.
Bezugszeichenliste
1
Datenspeicher
2
Stapelspeicher
3
,
4
,
5
,
6
Elementenspeicher
7
Push-Pointer
8
Decoder
9
,
10
,
11
,
12
Zwischenregistereinrichtung
13
,
15
Verbindungsnetzwerk
14
TOS-Register
16
,
17
,
18
Prozessorregister
21
Pop-Pointer
22
Lese-Zwischenregister
23
Schreib-Zwischenregister
24
Multiplexer
71
Gruppenadresskomponente
72
Elementenadresskomponente
30
,
37
Datenelement des ersten Elementenspeichers
66
Datenelement des vierten Elementenspeichers
S1, S2 Schreibpfad

Claims (25)

1. Verfahren zum Realisieren eines Stapelspeichers (2) in einem aus Elementenspeichern zusammengesetzten Datenspei­ cher (1), in welchem Daten in Datengruppen mit jeweils mehreren Elementen gespeichert werden, für Datenwörter, deren Breite kleiner als die Summe der Elementenspeicher­ breiten ist, wobei ein Stapelspeicherbereich im Daten­ speicher festgelegt wird und ein Speicherzeiger (7, 21) zum Zeigen auf einen Speicherplatz (30, 37, 66) im Stapel­ speicher verwendet wird, wobei dieser Speicherplatz durch eine Gruppenadresskomponente (71) des Speicherzeigers (7) und durch ein den Speicherelementen zugeordneter Parameter, insbesondere durch eine Elementenadresskomponente (72) des Speicherzeigers, festgelegt wird.
2. Verfahren nach Anspruch 1, . dadurch gekennzeichnet, dass beim Einschreiben eines Datenworts in den Stapelspeicher (2) das Datenwort in einem als Stapel-Eingangsregister arbei­ tenden TOS(Top of Stack)-Register (14) zwischengespeichert wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass beim Auslesen eines Datenworts aus dem Stapelspeicher das Da­ tenwort in ein als Stapel-Ausgangsregister arbeitendes TOS (Top of Stack)-Register (14) geschrieben wird.
4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass ein mit einem Push-Befehl in das TOS-Register (14) eingeschriebenes Datenwort in einen Bereich des Datenspeichers (1) eingeschrieben wird, welcher durch den Speicherzeiger (7) angezeigt wird.
5. Verfahren nach Anspruch 2, 3 oder 4, dadurch gekennzeichnet, dass der Spei­ cherzeiger (7) nach dem Einschreiben eines Datenworts in den Datenspeicher (1) um das Verhältnis der Breite des TOS- Registers zur Elementenbreite des Datenspeichers erhöht wird.
6. Verfahren nach einem der Ansprüche 2 bis 5 dadurch gekennzeichnet, dass ein zwei­ ter Speicherzeiger (21) nach dem Einschreiben eines Daten­ worts in den Datenspeicher um das Verhältnis der Breite des TOS-Registers zur Elementenbreite des Datenspeichers erhöht wird.
7. Verfahren nach Anspruch 5 und 6, dadurch gekennzeichnet, das s durch den zweiten Speicherzeiger (21) ein Speicherbereich im Stapel­ speicher (2) festgelegt wird, der um einen vorgegebenen Wert niedriger als der erste Speicherzeiger liegt, wobei der Wert dem Verhältnis der Breite des TOS-Registers zur Elementenbreite des Datenspeichers entspricht.
8. Verfahren nach einem der Ansprüche 2 bis 7, dadurch gekennzeichnet, dass bei der Erhöhung oder Erniedrigung eines Speicherzeigers (7, 21) die Elementenadresskomponente (72) modulo der Anzahl der Elementenspeicher (3, 4, 5, 6) entsprechend verändert wird, wobei ein Übertrag oder Untertrag in die Gruppen­ adresskomponente (71) übertragen wird.
9. Verfahren nach einem der Ansprüche 6, 7 oder 8, dadurch gekennzeichnet, dass durch den zweiten Speicherzeiger (21) der Speicherplatz im Stapel angezeigt wird, welcher bei einem Pop-Befehl in eine durch den Speicherzeiger angegebenes Zwischenregistereinrichtung geladen wird.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass beide Speicherzeiger (7, 21) nach einem Pop-Befehl um einen dem Verhältnis der Breite des TOS-Registers (14) zur Elemen­ tenbreite des Datenspeichers entsprechenden Wert erniedrigt werden.
11. Verfahren nach einem der Ansprüche 2 bis 10, dadurch gekennzeichnet, dass nach dem Ablegen eines Datenworts in das TOS-Register (14) durch einen Push-Befehl, dieses Datenwort vor dem Ablegen im Datenspeicher in einem Schreib-Zwischenregister (23) zwi­ schengespeichert wird.
12. Verfahren nach einem der Ansprüche 2 bis 11, dadurch gekennzeichnet, dass vor dem Einlesen eines Datenworts aus dem Datenspeicher in das TOS- Register (14) dieses Datenwort in einem Lese-Zwischen­ register (22) zwischengespeichert wird.
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, dass nach dem Ablegen eines Datenworts in das TOS-Register (14) durch einen Push-Befehl, dieses Datenwort vor dem Ablegen im Datenspeicher in dem Lese-Zwischenregister (22) zwischen­ gespeichert wird.
14. Verfahren nach einem der Ansprüche 12 oder 13, dadurch gekennzeichnet, dass nach dem Auftreten eines Pöp-Befehls das Datenwort, welches im Datenspeicher in dem Bereich gespeichert ist, auf den der zweite Speicherzeiger (21) zeigt, in das Lese-Zwischen­ register (22) vorgeladen wird, wobei das Lese-Zwischen­ register durch die Elementenadresse des zweiten Speicher­ zeigers festgelegt wird.
15. Datenspeicheranordnung für ein Mikroprozessorsystem, wobei der Datenspeicher ein sich aus Elementenspeichern zusam­ mengesetzter Gruppenspeicher ist, in welchem Daten in Datengruppen mit mehreren Elementen unter jeweils einer Gruppenadresse speicherbar sind, insbesondere eine Daten­ speicheranordnung zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 14, gekennzeichnet durch einen Speicher­ zeiger (7, 21), welcher eine Gruppenadresskomponente (71) und eine Elementenadresskomponente (72) aufweist und der auf einen Speicherplatz eines innerhalb des Datenspeichers (1) festgelegten Stapelspeichers (2), wobei sich der Sta­ pelspeicher (2) über zumindest zwei Elementenspeichern (3; 4, 5, 6) des Datenspeichers erstreckt.
16. Datenspeicheranordnung nach Anspruch 15, gekennzeichnet durch ein mit dem Daten­ speicher in Verbindung stehendes und als Stapeleingangs- und/oder als Stapelausgangsregister arbeitendes, fest­ stehendes TOS-Register (14), über das Datenwörter in den Stapelspeicher einschreibbar und/oder Datenwörter aus dem Stapelspeicher entnehmbar sind.
17. Datenspeicheranordnung nach Anspruch 15 oder 16, dadurch gekennzeichnet, dass das Ver­ hältnis der Breite des TOS-Registers (14) zur Elementen­ speicherbreite eine ganze Zahl ist.
18. Datenspeicheranordnung nach Anspruch 17, dadurch gekennzeichnet, dass die Breite des TOS- Registers (14) gleich der Breite eines Elementenspeichers ist.
19. Datenspeicheranordnung nach einem der Ansprüche 17 oder 18, dadurch gekennzeichnet, dass die Anzahl der Elementenspeichern ein ganzzahliges Vielfaches des Verhältnis der Breite des TOS-Registers zur Elementen­ speicherbreite ist.
20. Datenspeicheranordnung nach einem der Ansprüche 15 bis 19, dadurch gekennzeichnet, dass den Elementenspeichern (3, 4, 5, 6) jeweils eine bidirektional arbeitende Zwischenregistereinrichtung (9, 10, 11, 12) zugeordnet ist, welche zwischen dem jeweiligen Elementen­ speicher und dem TOS-Register (14) angeordnet ist.
21. Datenspeicheranordnung nach Anspruch 20, dadurch gekennzeichnet, dass zumindest eine Zwischen­ registereinrichtung (9) ein Lese-Zwischenregister (22) und ein Schreib-Zwischenregister (23) aufweist, wobei Zwischenregister die Breite der Elementenspeicher aufweisen.
22. Datenspeicheranordnung nach Anspruch 20 oder 21, dadurch gekennzeichnet, dass vom TOS- Register (14) ein Datenwort in ein Schreib-Zwischenregister (23) einschreibbar ist, von welchem das Datenwort zum jeweiligen Elementenspeicher (3) weiterführbar ist, wobei die zugeordnete Zwischenregistereinrichtung (9) durch die Elementenadresskomponente des ersten Speicherzeigers fest­ gelegt ist.
23. Datenspeicheranordnung nach einem der Ansprüche 20, 21 oder 22, dadurch gekennzeichnet, dass vom TOS-Register (14) ein Datenwort in ein Lese-Zwischen­ register (23) einschreibbar ist, wobei die zugeordnete Zwischenregistereinrichtung (9) durch die Elementenadress­ komponente des ersten Speicherzeigers (7) festgelegt ist.
24. Datenspeicheranordnung nach einem der Ansprüche 21 bis 23, dadurch gekennzeichnet, dass von einem Elementenspeicher ein Datenwort in ein Lese-Zwi­ schenregister einschreibbar ist, wobei die zugeordnete Zwischenregistereinrichtung durch die Elementenadress­ komponente eines zweiten Speicherzeigers festgelegt ist.
25. Datenspeicheranordnung nach einem der Ansprüche 21 bis 24, gekennzeichnet durch eine dem Lese-Zwischenregister (22) zugeordnete Multiplexer­ einrichtung 24), mit welchem ein Datenwort aus dem TOS- Register (14) oder dem zugeordneten Elementenspeicher (3) auswählbar ist.
DE10121745A 2001-05-04 2001-05-04 Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher Ceased DE10121745A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE10121745A DE10121745A1 (de) 2001-05-04 2001-05-04 Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher
JP2002101428A JP2003006040A (ja) 2001-05-04 2002-04-03 多数の要素を有する複数のデータグループに分割された1つの記憶装置を備えた1つのスタックに関する方法と装置
US10/137,781 US6871256B2 (en) 2001-05-04 2002-05-02 Method and arrangement in a stack having a memory segmented into data groups having a plurality of elements

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10121745A DE10121745A1 (de) 2001-05-04 2001-05-04 Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher

Publications (1)

Publication Number Publication Date
DE10121745A1 true DE10121745A1 (de) 2002-11-14

Family

ID=7683639

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10121745A Ceased DE10121745A1 (de) 2001-05-04 2001-05-04 Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher

Country Status (3)

Country Link
US (1) US6871256B2 (de)
JP (1) JP2003006040A (de)
DE (1) DE10121745A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100618817B1 (ko) * 2003-12-17 2006-08-31 삼성전자주식회사 소비 전력을 절감시키는 amba 버스 구조 시스템 및 그방법
EP1723440B1 (de) * 2004-03-11 2012-12-19 Preh KeyTec GmbH Dynamische verwaltung eines tastaturspeichers
WO2007139964A2 (en) * 2006-05-26 2007-12-06 Vns Portfolio Llc Circular register arrays of a computer
US8555026B2 (en) 2010-09-06 2013-10-08 Lsi Corporation Methods and systems for storing variable width stack elements in a single memory stack

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4459657A (en) * 1980-09-24 1984-07-10 Tokyo Shibaura Denki Kabushiki Kaisha Data processing system having re-entrant function for subroutines
EP0165822A2 (de) * 1984-06-21 1985-12-27 Fujitsu Limited Speicherzugriffsteuerungsanordnung

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
US6654871B1 (en) * 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
US6560696B1 (en) * 1999-12-29 2003-05-06 Intel Corporation Return register stack target predictor
DE10163206B4 (de) * 2001-12-21 2004-03-11 Schneider Automation Gmbh Verfahren zum Betrieb einer speicherprogrammierbaren Steuerung

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4459657A (en) * 1980-09-24 1984-07-10 Tokyo Shibaura Denki Kabushiki Kaisha Data processing system having re-entrant function for subroutines
EP0165822A2 (de) * 1984-06-21 1985-12-27 Fujitsu Limited Speicherzugriffsteuerungsanordnung

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
THIES, Klaus-Dieter, 80486 Systemsoftware- Entwicklung, Carl Hanser Verlag München Wien, 1992, S. 15-18 *

Also Published As

Publication number Publication date
JP2003006040A (ja) 2003-01-10
US20020166021A1 (en) 2002-11-07
US6871256B2 (en) 2005-03-22

Similar Documents

Publication Publication Date Title
DE2753062C2 (de) Einrichtung zur wiederholten Durchführung von Programmschleifen
DE4305442C2 (de) Verfahren und Vorrichtung zum Erzeugen eines Testvektors
DE3424962C2 (de)
DE69321929T2 (de) Verfahren und System um einen unabhängige Zugriff auf Zwischenspeicherpuffern in einem superskalaren Prozessorsystem zu gewährleisten.
DE4220698C2 (de) Verfahren zum Betreiben einer Datenverarbeitungsanlage
DE3015875A1 (de) Speicherzugriffssystem und verfahren fuer einen zugriff zu einem digitalen speichersystem
DE1499182A1 (de) Elektrische Datenverarbeitungsanlage
DE69632655T2 (de) Pipeline-Datenverarbeitungsanordnung zur Durchführung einer Mehrzahl von untereinander datenabhängigen Datenprozessen
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem
DE2417578C2 (de) Verfahren zur Verhinderung von Befehlskonflikten in einer Zentraleinheit einer Datenverarbeitungsanlage und Vorrichtung zur Durchführung des Verfahrens
DE3209046C2 (de) Terminal-Verarbeitungssystem
EP1079307B1 (de) Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
DE2912073A1 (de) Stapelspeicheranordnung zur kurzzeitigen speicherung von informationen bei nichtabsetzbarkeit dieser informationen in einem datenverarbeitungssystem
DE2720864A1 (de) Verfahren und anordnung zum lueckenfreien einspeichern einer anzahl von datenblocks unbestimmter laenge
CH625895A5 (de)
DE10121745A1 (de) Verfahren und Anordnung zu einem Stack mit einem, in Datengruppen mit mehreren Elementen aufgeteilten Speicher
DE2726679A1 (de) Kanalsteuerung fuer datenverarbeitungsanlagen und verfahren zu ihrem betrieb
WO2003029953A2 (de) Verfahren zum speichern oder weiterleiten von daten
DE3923872A1 (de) Schaltungsanordnung zum steuern des zugriffs auf einen speicher
DE3535215C2 (de)
DE2355814A1 (de) Kanalzugriffseinrichtung fuer eine hierarchische speicheranordnung
DE2836873C2 (de) Speichersystem mit wahlfreiem Zugriff
DE4342521C1 (de) Verfahren und Anordnung zur Expansion komprimierter Daten
DE9412376U1 (de) Speicherschaltung zur Kompensation von Bitfehlern in Speicherbausteinen
DE3215062C2 (de) Schaltungsanordnung zur Prüfung der Verarbeitbarkeit von Speicheroperanden für logische und dezimale Befehle vor Befehlsausführung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: NXP SEMICONDUCTORS GERMANY GMBH, 22529 HAMBURG, DE

8127 New person/name/address of the applicant

Owner name: NXP B.V., EINDHOVEN, NL

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R081 Change of applicant/patentee

Owner name: LSI CORP. (N.D.GES.D.STAATES DELAWARE), MILPIT, US

Free format text: FORMER OWNER: NXP B.V., EINDHOVEN, NL

Effective date: 20120614

Owner name: LSI CORP. (N.D.GES.D.STAATES DELAWARE), US

Free format text: FORMER OWNER: NXP B.V., EINDHOVEN, NL

Effective date: 20120614

R082 Change of representative

Representative=s name: PATENTANWAELTE LIPPERT, STACHOW & PARTNER, DE

Effective date: 20120614

Representative=s name: LIPPERT STACHOW PATENTANWAELTE RECHTSANWAELTE , DE

Effective date: 20120614

R008 Case pending at federal patent court
R011 All appeals rejected, refused or otherwise settled
R011 All appeals rejected, refused or otherwise settled
R003 Refusal decision now final

Effective date: 20120807

Effective date: 20130125