Hintergrund der Erfindung
Die Erfindung betrifft ein Verfahren und eine Anordnung zum
Vor-Abrufen und zum Abgleichen (Ausrichten) einer Befehlsfol
ge, die durch eine Speichereinheit zur Verfügung gestellt
wird. Moderne Mikroprozessoren können mehrere Befehle paral
lel ausführen. Solche Mikroprozessoren haben im allgemeinen
eine Pipeline-Struktur und umfassen mehrere Ausführungsein
heiten, um Befehle parallel auszuführen. Ein Mikroprozessor
kann zum Beispiel eine Lade- und Speicher-Ausführungseinheit
zum Durchführen von Lade- und Speicher-Befehlen sowie eine
arithmetische logische Einheit zum Ausführen von Daten beein
flussenden Befehlen umfassen. Ferner ist es möglich, dass ein
32 Bit Mikroprozessor Befehle mit variabler Länge, zum Bei
spiel 16 Bit Befehle und 32 Bit Befehle ausführt.
Um eine solche Pipeline-Struktur mit den entsprechenden Be
fehlen aus dem Speicher zu versorgen, wird üblicherweise eine
Anforderung an die Speichereinheit übermittelt. Die Spei
chereinheit muss die entsprechende Anzahl von Befehlen aus
dem Speicher laden und der Abruf-Einheit diese Befehle zufüh
ren. Da Speichersysteme im Vergleich zu Ausführungseinheiten
im allgemeinen langsamer sind, bildet eine solche Anordnung
einen Flaschenhals bei der Ausführung von Befehlen. Insbeson
dere dann, wenn es zu einer sogenannten Grenzüberschreitung
kommt, können die Speichersysteme die angeforderten Daten und
Befehle nicht mit einem einzigen Zugriff abrufen. Ein Spei
chersystem ist im allgemeinen in Zeilen und Spalten organi
siert. Zu einem Zeitpunkt kann nur auf eine einzige Zeile zu
gegriffen werden. Wenn die Start- und End-Adressen einer an
geforderten Befehlsfolge nicht innerhalb einer einzigen Zeile
liegen, kann somit nur ein Teil der angeforderten Informatio
nen abgerufen werden. Der Rest der Informationen muss inner
halb einer zweiten Anforderung zugeführt werden.
Zusammenfassung der Erfindung
Der Erfindung liegt deshalb die Aufgabe zugrunde, ein Verfah
ren und eine Vorrichtung zum Erzeugen einer Mehrzahl von ab
geglichenen (ausgerichteten) Befehlen aus einer Befehlsfolge
mit einer minimalen Verzögerung zu schaffen.
Eine erfindungsgemäße Datenverarbeitungseinheit umfasst eine
Superscalar-Struktur, die eine Mehrzahl von Befehlen parallel
ausführen kann, einen Speicher zum Speichern der Befehle mit
einer Mehrzahl von n-Bit Eingangs-/Ausgangsports, und eine
Verbindungseinheit zum Verbinden des Speichers mit einer Be
fehls-Abrufeinheit, eine Befehlsfolge-Anforderungs-
Steuereinheit zum Adressieren des Speichers, um eine Befehls
folge an seinem Ausgangsport zu erzeugen. Die Verbindungsein
heit umfasst eine Verschiebeeinrichtung mit einem Eingang und
einem Ausgang sowie einem Steuereingang, wobei der Eingang
mit dem Speicher und der Steuereingang mit der Befehlsfolge-
Anforderungs-Steuereinheit verbunden ist. Die Befehls-
Abrufeinheit umfasst ein Register zum Speichern der Befehls
folge, eine Register-Steuereinheit zum Verteilen der Anzahl
von Befehlen aus dem Register, sowie Mittel zum Verschieben
des Inhalts der Register.
Bei einer anderen Ausführungsform umfasst eine Datenverarbei
tungseinheit eine Superscalar-Struktur, die eine Mehrzahl von
Befehlen parallel ausführen kann, einen Speicher zum Spei
chern der Befehle mit einer Mehrzahl von n-Bit Eingangs-/
Ausgangsports und eine Verbindungseinheit zum Verbinden des
Speichers mit einer Befehls-Abrufeinheit, sowie eine Befehls
folge-Anforderungs-Steuereinheit zum Adressieren des Spei
chers, um an seinem Ausgangsport eine Befehlsfolge zu erzeu
gen. Die Verbindungseinheit umfasst eine Verschiebeeinrich
tung mit einem Eingang und einem Ausgang sowie einem Steuer
eingang, wobei der Eingang mit dem Speicher und der Steuer
eingang mit der Befehlsfolge-Anforderungs-Steuereinheit ver
bunden ist. Die Befehls-Abrufeinheit umfasst ein Register zum
Speichern der Befehlsfolge, eine Register-Steuereinheit zum
Verteilen der Anzahl von Befehlen aus dem Register, sowie
Mittel zum Schreiben eines Teils des Inhalts des Registers in
die Verschiebeeinrichtung.
Mit einer Anordnung, wie sie anhand der Ausführungsformen be
schrieben wird, ist es mit einem Minimum an zusätzlicher
Hardware möglich, viele Fälle zu vermeiden, bei denen eine
Grenzüberschreitung zu einer Blockierung der Pipelines führen
würde. Je länger die Vorabruf-Puffer sind, desto geringer ist
die Wahrscheinlichkeit, dass eine Grenzüberschreitung auftre
ten wird.
Ein Verfahren zum Zuführen einer Mehrzahl von Befehlen aus
einem Speicher mit einer Mehrzahl von n-Bit Eingangs-/Ausgangsports
zu einer Verarbeitungseinheit in einem Datenpro
zessor mit einer Superscalar-Struktur, mit der eine Mehrzahl
von Befehlen parallel ausgeführt werden kann, umfasst folgen
de Schritte:
- a) Adressieren des Speichers zur Ausgabe einer Befehlsfolge
an seinen Ausgangsports; und
- b) Ausgeben einer Anzahl von Befehlen aus der Befehlsfolge
und Puffern mindestens der Befehle der Befehlsfolge, die
nicht ausgegeben worden sind.
Weiterhin ist ein Verfahren zum Zuführen einer Mehrzahl von
Befehlen aus einem Speicher mit einer Mehrzahl von Eingangs-
/Ausgangsports zu einer Verarbeitungseinheit in einem Daten
prozessor mit einer Superscalar-Struktur, mit der eine Mehr
zahl von Befehlen parallel ausgeführt werden kann, offenbart.
Das Verfahren umfasst folgende Schritte:
- a) Ausgeben einer Anzahl von Befehlen aus einer zuvor gespei
cherten Befehlsfolge,
- b) Erzeugen einer Adresse und eines Verschiebewertes in Ab
hängigkeit von den zuvor ausgegebenen Befehlen;
- c) Adressieren des Speichers zur Ausgabe einer Befehlsfolge
an seinen Ausgangsports;
- d) Kombinieren der Befehlsfolge mit der zuvor nicht ausgege
benen Befehlsfolge und Ausrichten der Befehlsfolge;
- e) Speichern der kombinierten Befehlsfolge;
- f) Wiederholen der Schritte a) bis f).
Kurze Beschreibung der Zeichnungen
Fig. 1 zeigt ein Blockschaltbild einer ersten Ausführungsform
der Erfindung;
Fig. 2 zeigt ein Blockschaltbild einer zweiten Ausführungs
form der Erfindung;
Fig. 3 zeigt ein Blockschaltbild des Verlaufes einer Befehls
folge gemäß der ersten Ausführungsform der Erfindung; und
Fig. 4 zeigt ein Blockschaltbild des Verlaufes einer Befehls
folge gemäß der zweiten Ausführungsform der Erfindung.
Beschreibung der bevorzugten Ausführungsform
Ein Speichersystem wie zum Beispiel ein Cache-Speicher oder
ein Befehlsspeicher weist vier Bänke 1, 2, 3 und 4 auf. Jede
Speicherbank weist einen Ausgangsport mit einer Breite von 16
Bit auf. Der Speicher ist in Zeilen und Spalten organisiert,
wobei die Länge der Zeile die maximale Größe von Daten defi
niert, auf die parallel zugegriffen werden kann. Bei dieser
Ausführungsform beträgt die Zeilenlänge 256 Bit und die Aus
gabegröße des Speichersystems 64 Bit, wodurch die Wahrschein
lichkeit einer Grenzüberschreitung vermindert wird. Dazu ist
jede Speicherbank in 64 Bit Leitungen organisiert, wobei jede
Bank einen 16 Bit Ausgangsport aufweist. Jede Speicherbank 1,
2, 3 und 4 weist die entsprechenden Multiplexer auf, um die
entsprechenden Speicherzellen jeder Bank mit dem entsprechen
den Ausgangsport zu verbinden. Die vier Speicherbänke 1, 2, 3
und 4 werden durch eine Steuereinheit 6 für eine Befehlsfol
ge-Anforderung adressiert. In dieser Speichereinheit ist ein
Programm, das aus einer Mehrzahl von sequentiellen Befehlen
besteht, in der Weise gespeichert, dass 64 Bit einer kontinu
ierlichen Befehlsfolge parallel ausgegeben werden können. Innerhalb
eines Zugriffszyklus kann der Speicher eine Zeile,
die zum Beispiel aus 256 Bit besteht, adressieren und an sei
nem Ausgangsport eine Auswahl aus 64 Bit ausgeben. Die Aus
gänge der Speicherbänke 1, 2, 3 und 4 sind mit dem Eingang
eines 64 Bit Ringverschiebers 5 verbunden. Der Ringverschie
ber 5 wird über ein Steuersignal 11 gesteuert, das durch die
Steuereinheit 6 für eine Befehlsfolge-Anforderung erzeugt
wird. Der Ausgang des Ringverschiebers 5 wird in vier 16 Bit
Signale aufgeteilt, die einem Pufferregister 12 zugeführt
werden. Lese- und Schreib-Steuersignale 10 werden durch eine
Steuereinheit 9 für die Puffer-Verteilung erzeugt, die auch
eine Anforderungsadresse 7 und einen Verschiebewert 8 er
zeugt, die zu der Steuereinheit 6 für eine Befehlsfolge-
Anforderung geführt werden.
Weiterhin sind ein erster Multiplexer 15 mit drei 16 Bit Ein
gängen und einem 16 Bit Ausgang, ein zweiter Multiplexer mit
zwei 16 Bit Eingängen und einem 16 Bit Ausgang sowie ein
steuerbarer 16 Bit Leitungstreiber 13 vorgesehen. Die Bits 0
bis 15 des Pufferregisters 12 sind mit dem Ausgang des Multi
plexers 15 verbunden. Die Bits 16 bis 31 sind mit dem Ausgang
des Multiplexers 14 und die Bits 32 bis 47 sind mit dem Aus
gang des steuerbaren Leitungstreibers 13 verbunden. Der Ein
gang des steuerbaren Leitungstreibers 13, der erste Eingang
des Multiplexers 14 und der erste Eingang des Multiplexers 15
sind mit den Bits 48 bis 63 des Pufferregisters 12 verbunden.
Der zweite Eingang des Multiplexers 14 und der zweite Eingang
des Multiplexers 15 ist mit den Bits 32 bis 47 des Pufferre
gisters 12 verbunden. Schließlich sind die Bits 16 bis 31 des
Pufferregisters 12 mit dem dritten Eingang des Multiplexers
15 verbunden. Der Multiplexer 15, der Multiplexer 14 und der
steuerbarer Leitungstreiber 13 werden durch die Steuereinheit
9 für die Puffer-Verteilung gesteuert. Der Ausgang des Ring
verschiebers 5 ist auch mit einer Abgleich-/Kombinier-
Einheit 16 verbunden, der auch die Ausgangssignale des Puf
ferregisters 12 zugeführt werden. Um die empfangenen Signale
in geeigneter Weise abzugleichen oder zu kombinieren, liegen
an der Abgleich-/Kombinier-Einheit 16 auch Steuersignale
zum Beispiel von der Steuereinheit 9 für Pufferverteilung
oder von der Steuereinheit 6 für eine Befehlsfolge-
Anforderung an.
Der Leitungstreiber 13 und die Multiplexer 14 und 15 bilden
Mittel zum Schreiben von q × p Bits, wobei q < der maximalen
Anzahl von p Bit-Teilen in dem Register 12 ist. Bei der vor
liegenden Ausführungsform ist p = 16 Bit. Diese Anordnung
kann natürlich an jede andere Befehlsgröße angepasst werden.
Anstelle der Multiplexer können auch steuerbare Treiber oder
Puffer verwendet werden. Der Ringverschieber 24 kann eben
falls durch Multiplexer implementiert werden. Weiterhin kann
eine einfache Verschiebeeinrichtung verwendet werden, mit der
eine Verschiebung nur in einer Richtung möglich ist. Die
Steuersignale müssen dabei entsprechend angepasst werden.
Nach einem Rücksetzen des Mikrocontrollers gemäß dieser Aus
führungsform ist das Pufferregister 12 entweder leer oder un
definiert. Die Steuereinheit 9 für die Pufferverteilung for
dert eine erste Befehlsfolge an, indem der Steuereinheit 6
für eine Befehlsfolge-Anforderung eine Startadresse und ein
Verschiebewert von 0 zugeführt werden. Die Steuereinheit 6
für eine Befehlsfolge-Anforderung adressiert die vier Spei
cherbänke 1, 2, 3 und 4 zur Ausgabe einer kontinuierlichen
Befehlsfolge, wobei zum Beispiel mit der Adresse 0 begonnen
wird. Bei dieser Ausführungsform erzeugt die Bank 1 Start
adressen von 0, 64, 128, . . ., die Speicherbank 2 erzeugt
Startadressen von 16, 80, 144, . . ., die Speicherbank 3 erzeugt
Startadressen von 32, 96, 160, . . ., und die Speicherbank 4 er
zeugt Startadressen von 48, 112, 176, . . .. Bei dieser Ausfüh
rungsform hat eine Zugriffsleitung Startadressen von 0, 32,
64, . . ., bzw. Endadressen von 31, 63, 95, . . ., wobei jede Adres
se auf ein Byte zugreift. Zum Beispiel endet im Falle einer
Startadresse von 24 die Befehlsfolge von 64 Bit (= 8 Byte)
mit der Adresse 31. Somit ist die adressierte 64 Bit Befehls
folge, die durch ein solches Speichersystem ausgegeben wird,
ausgerichtet, und eine Grenzüberschreitung tritt nicht auf.
Das Steuersignal 11 ist somit 24, und der Ringverschieber 5
verschiebt diese Befehlsfolge nicht. Der Ausgang des Ringver
schiebers 5 wird in das Pufferregister 12 geschrieben.
Gemäß der Erfindung kann ein Mikroprozessor mehrere Befehle
parallel ausführen. Ferner kann ein Mikroprozessor gemäß der
Erfindung Befehle mit unterschiedlichen Befehlslängen, zum
Beispiel 8 Bit, 16 Bit, 32 Bit usw. ausführen. Somit kann die
Länge der tatsächlich ausgegebenen Befehlsfolge zwischen ei
nem minimalen und einem maximalen Wert legen. Bei der erfin
dungsgemäßen Ausführungsform hat ein Mikroprozessor eine mi
nimale Befehlslänge von 16 Bit und eine maximale Befehlslänge
von 64 Bit. Es ist möglich, einen einzigen 16 Bit Befehl,
zwei einzelne 16 Bit Befehle, einen 32 Bit Befehl, einen 16
Bit Befehl und einen 32 Bit Befehl oder zwei 32 Bit Befehle
auszugeben. In Abhängigkeit davon, wieviele Befehle ausgege
ben worden sind, erzeugt die Steuereinheit 9 für Pufferverteilung
eine neue Adresse 7 und einen Verschiebewert 8 für
den folgenden Zyklus.
Somit ist bei dieser Ausführungsform die Struktur des Aus
gangsports des Speichers 1, des Ringverschiebers 5 und des
Register-Puffers 12 zu vier Einheiten mit 16 Bit segmentiert,
was die minimale Befehlsgröße darstellt. Es kann entsprechend
der Größe eines Befehls jede Art von Anordnung für diese Ein
heiten gewählt werden. Die Befehle haben im allgemeinen eine
Länge von m × p Bits, wobei m <= 1 ist.
Bei einem Beispiel ist die Startadresse auf 24 gesetzt. Wenn
ein 16 Bit Befehl und ein 32 Bit Befehl ausgegeben worden
sind, ist die durch die Steuereinheit 9 für Pufferverteilung
für die folgende 64 Bit Befehlsfolge erzeugte Adresse 32 und
der Verschiebewert 3. Während einer folgenden Anforderung für
eine weitere Befehlsfolge würde die Steuereinheit 9 für Puf
ferverteilung diesen Adressenwert und diesen Verschiebewert
zu der Steuereinheit 6 für eine Befehlsanforderung senden und
den Multiplexer 15 ansteuern, um den Inhalt der Bits 48 bis
63 des Pufferregisters 12 in die Bitstellen 0 bis 15 zu ver
schieben. Die Multiplexer 14 und 16 und der Bit-
Leitungstreiber 13 werden in diesem Fall nicht aktiviert.
Die Steuereinheit 6 für eine Befehlsanforderung erzeugt
Adressen für die Speicherbänke 1, 2, 3 und 4, beginnend mit
der Startadresse 32 für die Speicherbank 1. Mit der Anordnung
gemäss der Erfindung wird eine Grenzüberschreitung verhin
dert, die bei einem bekannten System aufgetreten wäre. Insbe
sondere wäre die Adresse der angeforderten Befehlsfolge
gleich der Adresse des ersten Befehls-Byte (bei dem obigen
Beispiel der Adresse 31), das bis jetzt noch nicht ausgegeben
wurde. Somit wäre eine Grenzüberschreitung und eine Verzöge
rung zwischen der Adresse 31 und der Adresse 32 aufgetreten.
Da der Inhalt der Speicherbank 4 an die Bitstellen 16 bis 32
des Pufferregisters 12, der Inhalt der Speicherbank 1 an die
Bitstellen 32 bis 47 des Pufferregisters 12 und der Inhalt
der Speicherbank 2 an die Bitstellen 48 bis 63 zu übertragen
ist, erzeugt die Steuereinheit für eine Befehlsfolge-
Anforderung ein Steuersignal 11. Um die Befehlsfolge aus den
Speicherbänken 1, 2, 3 und 4 auszurichten, werden die Bits 1
und 2 des Adressensignals 7 verwendet. Wenn die Adresse gemäß
der Annahme bei diesem Beispiel 6 ist, erhalten die Bits 1
und 2 den Wert "1". Somit bilden die Bits 1 und 2 der Adresse
7 einen Verschiebewert von 3. Wenn der Ringverschieber 5 sei
ne Inhalte um 3 × 16 Bit verschieben könnte, wäre die durch
die Speicherbänke 1, 2, 3 und 4 erzeugte Befehlsfolge ausge
richtet. Bei diesem Beispiel muss die Befehlsfolge mit dem
Bit 16 des Register-Puffers 12 ausgerichtet werden, da der
Inhalt der Bits 0 bis 15 in dem Register 12 gespeichert wor
den ist und bis jetzt noch nicht ausgegeben wurde. Somit muss
ein Verschiebewert 8 eine Verschiebung nach links um den Wert
1 anzeigen. Kombiniert man diese zwei Werte, so ergibt sich
eine Verschiebung nach rechts um 2 × 16 Bit. Die in dem Ring
verschieber 5 verschobene Befehlsfolge wird dann zu dem Puf
fer-Register 12 übertragen, wobei die Steuereinheit 9 für
Pufferverteilung die Bits 0 bis 15 des Puffer-Registers 12,
die zu überschreiben sind, ausschließt. Nach diesen Vorgang
enthält das Puffer-Register 12 eine ausgerichtete Befehlsfol
ge mit 64 Bit, die einer zuvor ausgegebenen Befehlsfolge ohne
Verzögerung folgt.
Parallel dazu empfängt die Einheit 16 zum Ausrichten und Kom
binieren die gleichen Ausgangssignale von dem Ringverschieber
5 sowie die zuvor gespeicherten Daten von dem Puffer-Register
12. Mit den durch die Steuereinheit 9 für Puffer-Verteilung
zugeführten Steuersignalen kombiniert jene die zwei Datenfol
gen zu einer 64 Bit Befehlsfolge in der gleichen Weise, wie
es oben beschrieben wurde. Das Ausgangssignal, das durch die
Ausführungseinheiten erzeugt wird, ist identisch mit der Be
fehlsfolge, die in dem Puffer-Register 12 gepuffert wird.
Dies wird parallel ausgeführt, um einen "Straf-" Zyklus vom
Zusammenbau der Befehlsfolge in dem Puffer-Register 12 zu
vermeiden. Die Einheit 16 zum Ausrichten und Kombinieren kann
durch eine Mehrzahl von Multiplexern realisiert sein, die
durch die Steuereinheit für Puffer-Verteilung gesteuert wer
den.
Der sich ergebende Verschiebewert für den Ringverschieber 5
wird in Abhängigkeit davon bestimmt, wieviele 16 Bit Teile
des Register-Puffers 12 ausgegeben worden sind, sowie in Ab
hängigkeit von der aktuellen Stelle (Bank) in dem Speichersy
stem. Tabelle 1 zeigt die verschiedenen Verschiebewerte für
den Ringverschieber 5 entsprechend der Startadresse und der
Anzahl von zuvor ausgegebenen Befehlen. Negative Verschiebe
werte zeigen eine Verschiebung nach links, positive Verschie
bewerte eine Verschiebung nach rechts an.
Der sich ergebende Verschiebewert wird wie folgt berechnet:
(5 - y) - (x + 1) = 4 - y - x
wobei y den Wert der Adressbits 2 und 1 und x die Anzahl von
16 Bit Teilen, die ausgegeben worden sind, bezeichnet.
Fig. 3 zeigt als ein weiteres Beispiel einen sich ergebenden
Befehls-Daten-Weg in einem System gemäß der ersten Ausfüh
rungsform. Gemäß Fig. 3 wird angenommen, dass zwei Befehle
I + 4 und I + 2 aus einer in dem Puffer-Register 12 gespeicherten
Befehlsfolge ausgegeben worden sind. Die Steuereinheit 9 für
Puffer-Verteilung steuert dann die Multiplexer 14 und 15 so,
dass die Inhalte der Bits 32 bis 64 in die Bits 0 bis 31 des
Puffer-Registers 12 verschoben werden. Die Steuereinheit 9
für Puffer-Verteilung führt ferner ein Adressensignal I + 10
und einen Verschiebewerte von 2 zu der Steuereinheit 6 für
eine Befehlsfolge-Anforderung. Die Steuereinheit 6 für eine
Befehlsfolge-Anforderung adressiert dann die Speicherbänke 1,
2, 3 und 4, um die Befehle I + 10, I + 12, I + 14 und I + 16 zuzufüh
ren. Wie in Fig. 3 gezeigt ist, liegen nur die Adressen
I + 10, i + 12, I + 14 innerhalb einer Speicherleitung. Auf die
Adresse 16 kann in diesem Zyklus nicht zugegriffen werden. Da
nur zwei 16 Bit Worte benötigt werden, ist diese Grenzüber
schreitung unschädlich und führt nicht zu einer Verzögerung,
da die Adressen i + 14, i + 16 nicht benötigt werden. Die Inhalte
der Adressen i + 10, i + 12 und i + 14 werden in den 64 Bit Ring
verschieber 5 übertragen. An der Adresse I + 10 würden die Bits
1 und 2 die Werte 1 beziehungsweise 0 haben. Somit würde die
Steuereinheit 6 für eine Befehlsfolge-Anforderung schließlich
gemäß Tabelle 1 eine Verschiebung nach links um den Wert 1
erzeugen. Der Befehl I + 10 und der Befehl I + 12 würden dann an
den zwei ganz linken Positionen in dem Ringverschieber 5 lie
gen und könnten zu dem Puffer-Register 12 übertragen werden,
um dessen Inhalt aufzufüllen.
Wie oben beschrieben wurde, empfängt die Einheit 16 zum Aus
richten und Kombinieren zur Vermeidung eines "Straf-" Zyklus
alle 64 Bit aus dem Ringverschieber 5 und alle 64 Bit aus dem
Puffer-Register 12. Die Einheit 16 zum Ausrichten und Kombi
nieren wählt in diesem Fall parallel die Bits 32 bis 63 aus
dem Puffer-Register 12 als Ausgangs-Bits 0 bis 31 und die
Bits 16 bis 47 aus dem Ringverschieber 5 als Ausgangs-Bits 32
bis 63.
Das Puffer-Register 12 muss nicht unbedingt auf die Größe des
Ringverschiebers 5 begrenzt sein. Wenn ein größeres Puffer-
Register 12 verwendet wird, müssen zusätzliche Multiplexer
zwischen dem Ringverschieber 5 und dem Puffer-Register 12
vorgesehen werden, um den Inhalt des Ringverschiebers 5 mit
den zuvor nicht ausgegebenen Befehlen des Puffer-Registers 12
auszurichten.
Eine Grenzüberschreitung kann nur auftreten, wenn sie inner
halb der angeforderten Befehlsfolge liegt und Daten, die über
der Grenze gespeichert sind, benötigt werden, um das Register
12 aufzufüllen. In allen anderen Fällen tritt keine Verzöge
rung auf. Um die Gefahr einer solchen Verzögerung zu verrin
gern, können die Speicher-Leitungsgrössen und die Puffer-
Registergrössen vergrößert werden.
Fig. 2 zeigt eine zweite Ausführungsform der Erfindung. Auch
hierbei ist wieder ein Speichersystem vorgesehen, das iden
tisch mit dem Speichersystem der ersten Ausführungsform mit
Speicherbänken 1, 2, 3 und 4 ist. Die Ausgänge jeder Spei
cherbank 1, 2, 3 und 4 sind über Steuerpegel-Leitungstreiber
20, 21, 22 beziehungsweise 23 mit einem Ringverschieber 24
verbunden. Die Leitungstreiber 20, 21, 22 und 23 werden alle
durch die Steuereinheit 25 für eine Befehlsfolge-Anforderung
gesteuert, die ebenfalls den Ringverschieber 24 steuert. In
ähnlicher Weise ist der Ringverschieber 24 mit einem Puffer-
Register 34 verbunden, an dem sich vier Steuerpegel 16 Bit
Leitungstreiber 30, 31, 32 und 33 befinden. Ein weiterer 16
Bit Leitungstreiber 26 ist vorgesehen, der den Inhalt der
Bits 48 bis 63 des Registers 34 mit den Bits 32 bis 47 des
Ringverschiebers 24 verbindet. Weiterhin ist ein Multiplexer
27 mit zwei 16 Bit Eingängen und einem 16 Bit Ausgang sowie
ein Multiplexer mit drei 16 Bit Eingängen und einem 16 Bit
Ausgang vorgesehen. Der Ausgang des Multiplexers 27 ist mit
den Bits 16 bis 31 des Ringverschiebers 24 verbunden, der
Ausgang des Multiplexers 28 ist mit den Bits 0 bis 15 des
Ringverschiebers 24 verbunden. Der erste Eingang des Multi
plexers 27 und der erste Eingang des Multiplexers 28 ist mit
den Bits 48 bis 63 des Registers 34 verbunden. Die zweiten
Eingänge des Multiplexers 27 und des Multiplexers 28 sind mit
Bits 32 bis 37 des Registers 24 verbunden. Schließlich sind
die Bits 13 bis 31 des Registers 34 mit dem dritten Eingang
des Multiplexers 28 verbunden. Die Ausgänge der Leitungstrei
ber 30, 31, 32 und 33 sind parallel zu den Ausführungseinhei
ten geführt. Die Steuereinheit 29 für Puffer-Verteilung ist
mit Steuerleitungstreibern 30, 31, 32 und 33, 31, 32, 33 und
26 und Multiplexern 27 und 28 versehen. Die Steuereinheit 29
für Puffer-Verteilung erzeugt auch ein Adressensignal 35 und
einen Verschiebewert 36, die der Steuereinheit 25 für Be
fehlsfolge-Anforderung zugeführt werden. Der Leitungstreiber
26 und die Multiplexer 27 und 28 sind Erzeugungsmittel, um q
× p Bits in den Ringverschieber zu schreiben, wobei q < der
maximalen Anzahl von p Bitteilen in dem Ringverschieber 24
ist. Bei der vorliegenden Ausführungsform ist p = 16 Bit. Die
Anordnung kann natürlich an jede andere Befehlsgröße ange
passt werden. Anstelle von Multiplexern können auch steuerba
re Treiber oder Puffer verwendet werden. Der Ringverschiebers
24 kann ebenfalls durch Multiplexer implementiert sein. Wei
terhin kann ein einfacher Verschieber verwendet werden, mit
dem eine Verschiebung nur in eine Richtung vorgenommen werden
kann. Die Steuersignale sind dabei entsprechend anzupassen.
Der Ringverschieber 24 wird durch ein ähnliches Steuersignal
wie das in Fig. 1 gezeigte und in Übereinstimmung mit Tabel
le 1 gesteuert.
Die Funktion der zweiten Ausführungsform soll in Verbindung
mit der Darstellung in Fig. 4 erläutert werden. Fig. 4
zeigt den Weg der Befehlsdaten bei der zweiten Ausführungs
form. Es sei angenommen, dass die Befehlsdaten I + 6, I + 8 und
I + 10 während eines vorherigen Zyklus ausgegeben worden sind.
Somit enthalten die Bits 48 bis 63 des Puffer-Register 34 die
zuvor nicht ausgegebenen Befehlsdaten I + 12. Während der An
forderung einer weiteren Befehlsfolge werden die Inhalte der
Bits 48 bis 63 über den Multiplexer 28 in die Bits 0 ist 15
des Ringverschiebers 24 geschrieben. Die Steuereinheit 25 für
eine Befehlsfolge-Anforderung empfängt die Adresse 35, die
I + 14 und den Verschiebewert 36 enthält, der den Wert 3 auf
weist. Somit ergibt sich unter der Annahme, dass die Adress
bits 1 und 2 die Werte "1" beziehungsweise "0" haben, gemäß
Tabelle 1 ein Verschiebewert von "0". Die Befehlsfolge wird
ausgerichtet und kann übertragen werden. Wenn anstelle der
adressierten ersten Bank 2 zum Beispiel die Bank 3 adressiert
worden wäre, so wäre eine Grenzüberschreitung an der Adresse
i + 16 aufgetreten, die nur dann die Pipelines blockiert haben
würde, wenn alle 64 Bit ausgegeben worden wären.
Bei dieser Ausführungsform ist keine Einheit zum Ausrichten
und Kombinieren erforderlich, um eine Verzögerung während der
Zuführung der Befehlsfolge zu den Ausführungenseinheiten zu
vermeiden. Die Befehlsfolge wird innerhalb des Ringverschie
bers 24 zusammengesetzt, der mit den entsprechenden Daten von
beiden Seiten, den Speicherbänken 1, 2, 3 und 4 und dem Puf
fer-Register 34, versorgt wird. Nach einer geeigneten espeichert
Verschiebeoperation liegt am Ausgang des Ringverschie
bers 24 eine ausgerichtete Befehlsfolge an, die direkt zu den
Ausführungseinheiten geführt und parallel in dem Puffer-
Register 34 gespeichert werden kann.