-
Datenverarbeitunaseinrichtung Die Erfindung bezieht sich auf eine
Datenverarbeitungseinrichtung und insbesondere das Abrufen von Befehlen in solchen
Einrichtungen.
-
Bei programmgesteuerten Datenverarbeitungseinrichtungen ist es üblich,
die Programmbefehle in einer.Hauptspeicher zu halten und sie von dem Speicher abzurufen,
wenn eine Ausführung dieser Befehle erforderlich ist. Die Arbeitsgeschwindigkeit
einer solchen Einrichtung ist dabei durch die Zeitdauer begrenzt, die zum Abrufen
eines Befehles erforderlich ist. Es ist bereits vorgeschlagen worden, in Verbindung
mit dem Hauptspeicher einen kleineren, aber schnelleren Hilfsspeicher vorzusehen,
der so ausgelegt ist, daß er eine Kopie der Information im Hauptspeicher hält, die
gerade benut zt wird, so daß ein sehr rascher Zugriff zu dieser Information möglich
ist. Die Verwendung eines derartigen Hilfsspeichers kann die Zeitdauer, die zum
Abrufen eines Befehles erforderlich ist, wesentlich verringern und damit die Arbeitsgeschwindigkeit
der Einrichtung erhöhen, insbesondere, wenn das Programm eine Schleife von Befehlen
enthält, die vollständig im Hilfsspeicher enthalten ist, da in einem solchen Fall
die Schleife wiederholt ohne Zugriff zum Hauptspeicher durchgeführt werden kann.
Der
Hilfsspeicher ist jedoch in dem Fall nicht so effektiv, indem
das Programm viele Folgen von Instruktionen ohne Schleifen enthält, da dann eine
große Anzahl von Befehlen aus dem Hauptspeicher abgerufen werden muß.
-
Gemäß vorliegender Erfindung wird hierzu eine Datenverarbeitungseinrichtung
vorgeschlagen, die gekennzeichnet ist durch einen Hauptspeicher, der eine Folge
von aus mehreren Wörtern bestehenden Befehlsblöcken enthält, einen Hilfsspeicher
mit einer rascheren Zugriffszeit und einer geringeren Befehlskapazität als der Hauptspeicher,
einen Befehispufferspeicher, der einen der Blocks hält und zwei Abschnitte unterschiedlicher
Größe aufweist, eine Vorrichtung zum wiederholten Abtasten der Inhalte des Pufferspeichers
in einer vorbestimmten Folge, damit eine Befehlsreihe zur Ausführung kommt, eine
Vorrichtung, die zu Beginn des Abtast-Vorganges des größeren Abschnittes des Pufferspeichers
wirksam wird, um den nächsten Block in der Folge zu adressieren und das Abrufen
der Wörter in diesem Block parallel aus dem Hauptspeicher in den Hilfsspeicher einzuleiten,
wenn der Block noch nicht im Hilfsspeicher vorhanden ist, eine Vorrichtung, die
während des Abtastens des größeren Abschnittes des Pufferspeichers wirksam wird,
um einen entsprechenden Teil des adresierten Blocks in den kleineren Abschnitt des
Pufferspeichers einzuschreiben, und eine Vorrichtung, die während der Abtastung
des kleineren Abschnittes des Pufferspeichers wirksam wird, um den übrigen Teil
des adressierten Blocks in den größeren Abschnitt des Pufferspeichers einzuschreiben.
-
Die Verwendung eines ungleich unterteilten Befehlspufferspeichers
in dieser Weise trägt zur Erhöhung der Geschwindigkeit des Abrufen von aufeinanderfolgenden
Befehlen zur Ausführung und somit zur Erhöhung der Arbeitsgeschwindigkeit der 1>atenverarbeitungseinrichtung
bei Nachstehend wird die Erfindung in Verbindung mit der Zeichnung anhand eines
Ausführungsbeispieles erläutert. Die Zeichnung zeigt ein Blockschaltbild einer Anordnung
zum Abrufen von Befehlen in einer Datenverarbeitungseinrichtung.
-
Die Einrichtung weist einen Hauptspeicher 100 auf, in welchem die
Programmbefehle der Einrichtung gehalten werden. Der Speicher 100 kann eine große
Anzahl von Befehlsblöcken aus jeweils vier Wörtern halten. Bei dem hier beschriebenen
Ausführrngsbeispiel wird zugrunde gelegt, daß die Wortlänge 32 Bits beträgt. Es
wird weiter davon ausgegangen, daß ein Befehl, der im Speicher 100 gehalten wird,
entweder die halte Länge (16 Bits) haben kann, wobei der Befehl in einer Hälfte
des Wortes gespeichert wird, oder aber die volle Länge (32 Bits), wobei der Befehl
dann in zwei aufeinanderfolgenden Haibwörtern im Speicher gespeichert wird.
-
Jeder Block im Speicher ist individuell dadurch adressierbar, daß
eine Blockadresse dem Speicher über den Pfad 101 aufgegeben wird, was bewirkt, daß
die Inhalte der vier Wörter in diesem Block parallel über einen Pfad 102 ausgelesen
werden.
-
Dem Hauptspeicher 100 ist ein Hilfsspeicher 10 zugeordnet,der eine
wesentlich geringere Größe als der Hauptspeicher aufweist; im Falle vorliegenden
Ausführungsbeispiels hält der Hilfsspeicher 10 nur 16 Blocks mit je vier Wörtern.
Der Hilfsspeicher 10 hat jedoch eine wesentlich schnellere Zugriffszeit als der
Hauptspeicher; beispielsweise kann der Hilfsspeicher eine Zugriffszeit von 100 Nanosekunden
verglichen mit einer Zugriffszeit von lOQO Nanosekunden für den Hauptspeicher haben.
In der Zeichnung ist der Hilfsspeicher 10 in vier Abschnitte 11-14 entsprechend
den vier Wörtern in einem Block unterteilt dargestellt.
-
Jeder aus vier Wörtern bestehende Block im Hilfsspeicher kann durch
eine Adresse adressiert werden, die ihm auf dem Pfad 15 aufgegeben wird. Die Inhalte
der vier Wörter in dem adressierten Block treten parallel auf vier entsprechenden
Ausgangspfaden 17-20 auf. Ferner können alle vier Wörter innerhalb des adressierten
Blockes parallel von dem Hauptspeicherausgang 102 über einen Pfad 21 beladen werden.
-
Die Ausgangapfade 17-20 werden über entsprechende UND-Gatter 22-25
und entsprechende Pfade 27-30 mit einem Befehlspufferregister 26 verbunden, das
vier Wortspeicherplätze 31-34 besitzt, welche Wörter aus entsprechenden Pfaden 27-30
aufnehmen.
-
Jeder Wortspeicherplatz im Pufferregister weist zwei Halbwort-Ausgänge
M und L auf, die die mehr oder weniger bedeutenden Hälften des Wortes repräsentieren.
-
Diese Halbwort-Ausgänge sind mit zwei Sätzen 35 und 36 von Gattern
verbunden, deren jedes 16-Bit breite ODER-Gatter aufweist , welche von acht 16-Bit
breiten UND-Gattern A bis H gespeist werden, die von den Registerausgangspfaden
M und L versorgt werden. Der Satz 35 nimmt die Ausgänge des Registers 26 auf, 31M
ist mit 35A verbunden, und so weiter, bis 34L mit 35H verbunden ist. Der Satz 36
nimmt die gleichen Ausgänge einmal nach vorwärts verschoben auf, so daß 31L mit
36A und 34L mit 36G und schließlich 31N mit 36H verbunden ist. Dieses Verbindungsschema
besagt, daß dann, wenn ähnlich bezeichnete Paare von UND-Gattern A-H in den Sätzen
35 und 36 gleichzeitig bezeichnet sind, zwei aufeinanderfolgende Halbwörter im Register
36 an den Ausgängen 37 und 38 der Gattersätze 35 und 36 auftreten.
-
Eine Folge von Halblängen-Befehlen im Register 26 kann somit auf den
Pfad 37 dadurch ausgelesen werden, daß jedes der UND-Gatter A-H der Reihe nach wirksam
gemacht wird. In diesem Ball ist der Pfad 38 nicht erforderlich und wird durch Unwirksammachen
eines UND-Gatters 38 blockiert. Andererseits kann eine Folge von Befehlen voller
Länge im Regi#ster 26 auf die Pfade 37, 38 ausgelesen werden (wobei das UND-Gatter
39 wirksam gemacht wird), indem abwechselnde Gatter A-H wirksam gemacht werden.
Wenn beispielsweise das Register 26 vier Befehle voller Länge enthält, und zwar
einen in jedem der Wortspeicherplätze 31-34, können diese Befehle durch nacheinander
erfolgendes Wirksammachen der Gatter A, C, D und s ausgelesen werden.
-
Eine geeignete Steuerung zum Wirksammachen der UND-Gatter A-H ist
in der Zeichnung mit acht Steuerleitungen gezeigt, die von einem Dekodierer 40 ausgehen
und die ebenfalls mit A-H bezeichnet sind, damit erkennbar wird, wie sie den UND-Gattern
der Gattersätze 35, 36 entsprechen. Der Dekodierer 40 spricht auf drei Befehlsadressenbits
an, die Halbwdrter innerhalb eines aus vier Wörtern bestehenden Blockes identifizieren.
Der laufende 3-Bit-Wert wird in einem Register 41 gespeichert und über den Pfad
42 dem Dekodierer 40 aufgegeben. Ein Addierer 43 wird von dem Pfad 42 gespeist und
bewirkt die Addition einer 1 oder 2 (binäre 001 oder 010), abhängig davon, ob es
sich um Befehle halber Länge oder voller Länge handelt, wie dies durch die Zustände
der Steuereingänge 44 und 45 wiedergegeben wird. Der Ausgang des Addierers 43 wird
einem anderen Register 44 zugeführt, dessen Ausgang 45 mit einem UND-Gatter 46 verbunden
ist, das einen Eingang eines ODER-Gatters 47 speist, dessen Ausgang 48 mit dem laufenden
Adressenregister 41 verbunden ist. Das UND-Gatter 46 wird für jeden Befehlszyklus
der Instruktionsabrufeinheit wirksam gemacht, mit Ausnahme des Falles, wenn ein
Sprung in der regulären Befehlsfolge auftritt.
-
Die Anordnung aus den Registern 41, 44, dem Addierer 43 und den Gattern
46 und 47 stellt in der Wirkung einen Zähler dar, der in Einsen oder Zweien zählen
kann, abhängig von der speziellen Befehlslänge. Aufeinanderfolgende Werte des Registerausganges
42 bewirken, daß der Dekodierer weiter geht und jeweils einen seiner Ausgänge A-H
gleichzeitig in einer Folge erregt, die entweder jeden einen oder jeden anderen
der Ausgänge umfaßt, wie dies zur Steuerung der Gattersätze 35, 36 erforderlich
ist. Jedes Gemisch von kurzen und langen Befehlen kann auf diese Weise behandelt
werden.
-
Der dekodierer 40 dient somit zum sequentiellen Adressieren von Befehlen,
wenn diese Befehle in das Befehlspufferregister 25 geladen worden sind, und kann
dies sehr rasch unter Verwendung einer
vergleichsweise einfachen
logischen Schaltung durchführen, die zum Speisen des Dekodierers 40 und zum Auswählen
der Ausgänge 37 und 38 verwendet wird.
-
Wie in der Zeichnung dargestellt, ist das Pufferregister 26 bei 50
ungleich in einen ersten Abschnitt, der den ersten Wortspeicherplatz 31, und einen
zweiten Abschnitt, der die anderen drei Wortspeicherplätze 32-34 aufweist, unterteilt.
Während Befehle in dem zweiten Abschnitt ausgeführt werden, wird das UND-Gatter
22 in der Weise wirksam gemacht, daß das ~ erste Wort des nächsten Blockes von Befehlen
von dem Hilfsspeicher in den ersten Wortspeicherplatz 31 gegattert werden kann.
Wenn der gewünschte Block nicht im Hilfsspeicher vorhanden ist, tritt natürlich
eine Verzögerung auf, die dadurch bedingt ist, daß der Block aus dem Hauptspeicher
100 abgerufen wird. Das Abrufen der Blöcke wird weiter unten beschrieben. Während
die Instruktion in dem Wortspeicherplatz 31 ausgeführt wird, werden die UND-Gatter
23-25 wirksam gemacht, derart, daß der zweite Pufferregisterabschnitt 32-34 mit
den übrigen drei Wörtern des nächsten Blockes aus dem Hilfsspeicher 10 beladen wird
--. Vor#-gesetzt, daß keine Sprungbefehle aufgetreten sind, sollen diese drei Wörter
bereits in dem Hilfsspeicher vorhanden sein und sind aus dem Hauptspeicher erforderlichenfalls
während der Ausführung des vorausgehenden Blockes abgerufen worden.
-
Der Grund für die ungleiche Unterteilung des Pufferregisters 26 besteht
darin, daß eine längere Zeitperiode zum Laden des ersten Wortes in einen Block von
Befehlen erzielt wird, da Verzögerungen wahrscheinlicher in diesem Falle auftreten
als wenn die übrigen drei Wörter in den Block gefüllt werden.
-
Die UND-Gatter 22 und 23-25 werden durch Steuersignale auf entsprechenden
Leitungen 51 und 52 aus entsprechenden ODER-Gattern 53 und 54 gesteuert. Das ODER-Gatter
53 nimmt als Eingang die Ausgänge A und B aus dem Dekodierer 40 auf, während das
ODER-Gatter 54 als Eingang die Ausgänge C-H aus dem Dekodierer aufnimmt. Dies bewirkt,
daß die Gatter 22-25 zu den geeigneten Zeiten in der vorbeschriebenen Weise wirksam
gemacht werden.
-
Blöcke von Befehlen werden normalerweise sequentiell wie folgt adressiert.
Die Blockadresse des Blockes, der gerade ausgeführt wird, wird in einem laufenden
Befehlsregister 67 gehalten. Diese Adresse wird über einen Pfad 66 einem Addierer
91 aufgegeben, der die Adresse um eine Einheit erhöht und sie einem UKDGatter 90
aufgibt Das Gatter 90 wird zu Beginn der Abtastung des zweiten Abschnittes 32-34
des Pufferspeichers 26 mit Hilfe des Ausgangssignales aus dem ODER-Gatter 54 wirksam
gemacht, so daß die erhöhte Blockadresse über ein ODER-Gatter 80 in ein nächstes
Befehlsregister 70 gleitet wird. Die Inhalte des Register 70 werden anschließend
über ein UND-Gatter 68 auf das laufende Befehlsregister 67 übertragen. Durch Wiederholung
dieses Zyklus wird eine Reihenfolge von aufeinanderfolgenden Blockadressen erzeugt.
-
Die Blockadresse im Register 70 wird über einen Pfad 76 einem assoziativen
(inhaltsadressierbaren) Speicher 71 aufgegeben, der eine Tabelle von Blockadressen
solcher Blöcke enthält, die bereits im Hilfsspeicher 10 vorhanden sind. Der asoziative
Speicher vergleicht die Blockadresse auf dem Pfad 76 mit jeder Blockadresse in der
Tabelle und erzeugt, wenn er ein Gegenstück findet, einen Ausgang auf den Pfad 15,
der den Speicherplatz dieses Blockes im Hilfsspeicher 10 anzeigt. Dieser Ausgang
auf dem Pfad 15 wird zum Adressieren des entsprechenden Blockes im Hilfsspeicher
verwendet, so daß die Inhalte in der vorbeschriebenen Weise in das Pufferregister
26 eingelesen werden können.
-
Wenn andererseits kein Gegenstück festgestellt werden kann, was anzeigt,
daß der gesuchte Block nicht im Hilfsspeicher vorhanden ist, wird ein Signal "Gegenstück
fehlt" auf dem Pfad 85 erzeugt.
-
Dieses Signal "Gegenstück fehlt" macht ein UND-Gatter 84 wirksam,
das die Blockadresse auf dem Pfad 76 zum Adresseneingang 101 des Hauptspeichers
führt, wodurch das Abrufen des gesuchten Bbckes eingeleitet wird. Der abgerufene
Block tritt am Ausgang 102 des Hauptspeichers auf und wird über den Pfad 21 in den
Hilfaspeicher BO eingeschrieben, wobei einer der bereits im Speicher vorhandenen
Blöcke überschrieben wird. Die Inhalte dieses Blockes können dann
in
das Pufferregister 26 eingelesen werden.
-
Der Block, der überschrieben werden soll, wird durch eine entsprechende
Auswechselschaltung ausgewählt. Eine solche Auswechselschaltung für einen Hilfsspeicher
ist in Patent (deutsche Patentanmeldung vom gleichen Tage - entsprechend britischer
Anmeldung 34427/73 - Anwaltsakte I/p 8035) beschrieben und ist nicht Gegenstand
vorliegender Erfindung, so daß auf eine detaillierte Erörterung verzichtet werden
kann. Die Austauschschaltung weist einen Zähler auf, der auf den Speicherplatz im
Hilfsspeicher hinweist, welcher überschrieben werden soll. Wenn dieser Speicherplatz
überschrieben oder aus ihm ausgelesen werden soll, wird der Zähler erhöht. Dies
gewährleistet, daß der Zähler stets auf den Speicherplatz hinweist, der den zuletzt
verwendeten Block enthält. Wenn ein Block in den HilSsspeicher aus dem Hauptspeicher
eingeschrieben worden ist, wird seine Adresse auch in den entsprechenden Speicherplatz
des asseziativen Speichers eingeschrieben, so daß die darin gehaltene Tabelle auf
den letzten Stand gebracht wird.
-
Wie oben angegeben, werden die Befehlsblöcke normalerweise sequentiell
adressiert. Eine Unterbrechung der normalen Folge von Befehlen kann jedoch im Falle
einer Sprung- oder Unterbrechungsbedingung auftreten. In einem solchen Fall wird
das UND-Gatter 90 unwirksam gemacht, so daß die normalerweise erhöhte Adresse daran
gehindert wird, daß es dem ODER-Gatter 80 aufgegeben wird.
-
Bei einer ßprungbedingung wird ein weiteres UND-Gatter 78 wirksam
gemacht, was zur Folge hat, daß eine Sprungblockadresse, die auf dem Pfad 58 auftritt,
dem ODER-Gatter 80 aufgegeben wird.
-
Das ODER-Gatter 68 wird auch in der Weise wirksam gemacht, daß die
Sprungadresse in beide Register 70 und 67 aus dem Gatter 80 eingeschrieben wird.
In ähnlicher Weise wird für eine Unterbrechung ein weiteres UND-Gatter 79 wirksam
gemacht, was zur Folge hat, daß eine Unterbrechungsblockadresse von dem Pfad 59
aus dem Pfad 59 dem ODER-Gatter 80 aufgegeben wird.
-
Zusätzlich zu einer Blockadresse führt jeder der Sprung- und Unterbrechungsadressenpfade
58, 59 eine Wortadresse, die angibt, welches der vier Wörter innehalb des adressierten
Blockes den nächsten, durchzuführenden Befehl erhält. Diese Wortadressen werden
über Pfade 60 und 61 Eingängen entsprechender UND-Gatter 62 und 63 aufgegeben, deren
Ausgänge 64 und 65 weitere Eingänge in das ODER-Gatter 47 ergeben. Während der normalen
sequentiellen Ausführung von Befehlen wird das UND-Gatter 56 wirksam und werden
die Gatter 62, 63 unwirksam gemacht. Wenn ein Sprung auftritt, wird jedoch das Gatter
62 anstelle des Gatters 46 wirksam gemacht, wodurch bewirkt wird, daß die Inhalte
des Registers 41 in den Zustand springen, der durch diese Wortadresse auf dem Pfad
60 angegeben wird. Wenn eine Unterbrechung auftritt, wird in ähnlicher Weise das
Gatter 63 anstelle des Gatters 46 wirksam gemacht.
-
In der vorstehenden Beschreibung ist ausgeführt, daß das nächste Befehlsregister
70 zu Beginn der Abtastung des größeren Abschnittes 32-34 des Registers 26 geladen
wird, so daß ein Abrufen des nächsten Blockes von Befehlen aus dem Hauptspeicher
eingeleitet wird, wenn dieser Block nicht bereits im Hilfsspeicher vorhanden ist.
Das Laden des Registers 70 kann jedoch tatsächlich auch zu einer beliebigen Zeit
nach Einfüllen der laufenden Instruktionen in den Abschnitt 32-34 durchgeführt werden,
und kann somit während des Abtastens des kleineren Abschnittes 31 erfolgen.