DE3226214C2 - Datenverarbeitungsanlage - Google Patents
DatenverarbeitungsanlageInfo
- Publication number
- DE3226214C2 DE3226214C2 DE3226214A DE3226214A DE3226214C2 DE 3226214 C2 DE3226214 C2 DE 3226214C2 DE 3226214 A DE3226214 A DE 3226214A DE 3226214 A DE3226214 A DE 3226214A DE 3226214 C2 DE3226214 C2 DE 3226214C2
- Authority
- DE
- Germany
- Prior art keywords
- operand
- byte
- read
- address
- main memory
- 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.)
- Expired
Links
- 230000015654 memory Effects 0.000 claims abstract description 37
- 238000001514 detection method Methods 0.000 claims description 3
- 230000003247 decreasing effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 2
- 101100490563 Caenorhabditis elegans adr-1 gene Proteins 0.000 description 4
- 101100388220 Caenorhabditis elegans adr-2 gene Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 102100036848 C-C motif chemokine 20 Human genes 0.000 description 1
- 101000713099 Homo sapiens C-C motif chemokine 20 Proteins 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Die Erfindung betrifft ein Verfahren für ein arithmetisches Betriebssystem und eine arithmetische Verarbeitungseinrichtung zur schnellen Ausführung eines Befehls, dessen Operand eine arithmetische Operation betrifft, die in einem Hauptspeicher (1) gespeichert ist. Ein für die nachfolgende arithmetische Verarbeitung nötiger Operand wird aus dem Hauptspeicher (1), vor dem Einschreiben eines Verarbeitungszwischen ergebnisses in den Hauptspeicher, ausgelesen, so daß die nachfolgende arithmetische Verarbeitung und das Einschreiben des Verarbeitungszwischenergebnisses sich zeitlich überlappen.
Description
- Die Erfindung betrifft eine Datenverarbeitungsanlage gemäß dem Oberbegriff des Anspruchs 1.
- Eine solche Datenverarbeitungsanlage ist aus dem US-Buch "Introduction to Computer Architecture" Science Research Associates Inc., S. 383-393 bekannt.
- In einer herkömmlichen Datenverarbeitungsanlage wird zur Ausführung eines Befehls zur Verarbeitung von in einem Hauptspeicher stehenden Operanden (weiterhin Speicher- Speicher-Befehl [SS] genannt) ein Teil eines ersten Operanden und ein Teil eines zweiten Operanden aus dem Hauptspeicher geholt, darauf werden die Daten in einer Datenbreite auf die die Datenverarbeitungseinheit gleichzeitig zugreifen kann verarbeitet, ein Ergebnis in dieser Datenbreite in ein erstes Operandenfeld im Hauptspeicher eingeschrieben, eine Zugriffsadresse dann überschrieben, um einen zusätzlichen Teil des ersten Operanden zu holen und die obigen Operationen solange wiederholt, bis eine gegebene Datenlänge verarbeitet ist.
- Entsprechend wird das Holen der nachfolgenden Operanden verzögert, bis das Einschreiben des Ergebnisses beendet ist, und die Datenverarbeitung wird unterbrochen, da die zu verarbeitenden Daten fehlen. Daraus ergibt sich, daß die Ausführung des SS-Befehls lange Zeit braucht.
- In dem genannten US-Buch "Introduction to Computer Architecture" wird anhand der Datenverarbeitungsanlagen 7094 und 360 von IBM und der UNIVAC LARC eine Überlappung von Befehlsauslese-, Befehlsdecodierung und Datenauslese- sowie Ausführungszyklen in mehreren Möglichkeiten beschrieben. Eine Möglichkeit, um die Speicherzugriffszeit für die überlappende Verarbeitung zu verkürzen, besteht darin, zwei separate Speicherworte jeweils in einer geradzahlig und einer ungeradzahlig adressierten Speicherbank vorzusehen (7094 II von IBM, beschrieben anhand der Fig. 9-5 auf Seite 384).
- Auch das IBM-System 360, Modell 75 verwendet eine zweifache Überlappung von Befehlsauslese-, Befehlsdecodierung und Datenauslese- sowie Befehlsausführungszyklen.
- Das genannte US-Buch erwähnt auch, daß bei solcher überlappender Verarbeitung das eigentliche Problem in dem Speicherzugriff besteht.
- Als weiteres Beispiel einer überlappenden Befehlsverarbeitung führt das genannte US-Buch die Verarbeitung im Pipeline-Betrieb an.
- Eine Pipeline-Verarbeitung kommt jedoch bei dem Anmeldungsgegenstand nicht in Betracht.
- Eine Erfassungseinheit, die aktiv wird, wenn für die Ausführung desselben Befehls das Einschreiben eines durch die Verarbeitung eines Teils des Operanden angefallenen Verarbeitungsteilergebnis in den Hauptspeicher in derselben Befehlsausführungsphase mit dem Auslesen eines weiteren Teils des Operanden in der vorgegebenen Phase angefordert wird, oder eine Prioritätseinrichtung, die das Einschreiben des Verarbeitungsteilergebnisses in den Hauptspeicher nach dem Auslesen des weiteren Operandenteils so steuert, daß die Verarbeitung für den ausgelesenen weiteren Operandenteil überlappend mit der Einschreiboperation ausgeführt werden kann, ist in dem genannten US-Buch nicht beschrieben.
- Der Erfindung liegt die Aufgabe zugrunde, bei einer Datenverarbeitungsanlage der gattungsgemäßen Art die Ausführungszeit für Befehle bei längeren Operanden zu verkürzen.
- Diese Aufgabe wird bei einer gattungsgemäßen Datenverarbeitungsanlage erfindungsgemäß durch die im Kennzeichen des Anspruchs 1 angegebenen Merkmale gelöst.
- Die Unteransprüche 2 bis 8 kennzeichnen jeweils eine vorteilhafte Ausbildung davon.
- Die Erfindung wird im folgenden anhand der Zeichnung näher beschrieben. Es zeigen:
- Fig. 1 ein Format eines SS-Befehls,
- Fig. 2 ein Blockschaltbild einer Datenverarbeitungsanlage gemäß der Erfindung,
- Fig. 3 Einzelheiten peripherer Schaltkreise eines in Fig. 2 dargestellten Datenleseregisters und eines ersten Operandenregisters.
- Fig. 4 eine Verarbeitungszeittabelle einer herkömmlichen Datenverarbeitungsanlage und
- Fig. 5 eine Verarbeitungszeittabelle bei der vorgeschlagenen Datenverarbeitungsanlage.
- Fig. 1 zeigt ein typisches Beispiel des Formats eines Speicher- Speicher-Befehls. Ein Operandenfeld ist 8 Bit breit und enthält einen Befehlscode, der eine mit Operanden durchgeführte Verarbeitung kennzeichnet. Ein L-Feld ist 8 Bit breit und bezeichnet eine Länge von zu verarbeitenden Operanden und enthält eine Binärzahl, die gleich der Operandenlänge minus eins ist. Demgemäß können 1 bis 256 Byte (ein Byte besteht aus 8 Bits) Operanden vom L-Feld gekennzeichnet werden. Ein ADR 1-Feld und ein ADR 2-Feld sind jeweils 16 Bit breit und kennzeichnen Startadressen jeweils eines ersten und eines zweiten Operanden. Demgemäß befinden sich die zur arithmetischen Verarbeitung gehörenden Operanden jeweils in ADR 1~ADR 1+L und ADR 2~ADR 2+L und die Operanden werden bei anwachsenden Adressen verarbeitet. Ein Verarbeitungsergebnis wird in ein erstes Operandenfeld eingeschrieben.
- Anhand der Fig. 2 bis 5 wird nun eine Ausführung der vorgeschlagenen Datenverarbeitungsanlage beschrieben.
- Fig. 2 zeigt ein Blockschaltbild einer Ausführungsart der Datenverarbeitungsanlage. Mit dem Bezugszeichen 1 ist ein Hauptspeicher (MS), in dem Operanden für den SS-Befehl und Befehle gespeichert sind, bezeichnet. Der Zugriff zum Hauptspeicher 1 kann gleichzeitig 8 Byte über einen MS-Adreßbus 53 umfassen und die Lesedaten werden in ein 8 Byte tiefes Lesedatenregister (MSRDR) 5 über einen 8 Byte breiten Lesebus 2 geladen. 8 Byte breite Schreibdaten werden von einem Schreibdatenregister (MSWDR) 4 dem Hauptspeicher 1 über einen Schreibbus 3 geliefert. Das Bezugszeichen 10 bezeichnet ein 8 Byte breites erstes Operandenregister (FOPR). Zum Setzen des Operanden werden die Bytes im MSRDR 5 an das FOPR 10 über MSRDR-Ausgangsleitungen 101-108, FOPR-Eingabewähler 111-118, von denen jeweils einer für jedes Byte des FOPR 10 vorgesehen ist und Datenleitungen 121-128 übertragen. Das Bezugszeichen 20 bezeichnet ein 8 Byte breites zweites Operandenregister (SOPR). Die Bytes im MSRDR 5 werden an das SOPR 20 gleichzeitig zu 8 Bytes über einen 8 Byte breiten MSRDR-Datenbus 21 übertragen.
- Die in das FOPR 10 und das SOPR 20 geladenen Operanden werden an eine Arithmetik-Logik-Einheit (ALU) 31 mit 1 Byte breiten Eingängen über Wähler 32 und 33, von denen jeder 1 Byte vom entsprechenden 8 Byte breiten Register auswählt, angelegt.
- Die ALU 31 führt eine Arithmetik-Logik-Operation mit den Eingabedaten gemäß einer in einem Befehlscoderegister (F) 30 gespeicherten Operation, aus und erzeugt Ausgangsdaten auf einer 1 Byte breiten ALU-Ausgangsleitung 34.
- Die Ausgangsdaten der ALU 31 werden zu den Byte-Stellen des FOPR 10, in denen die ALU-Eingangsdaten gespeichert waren, über die FOPR-Eingabewähler 111-118, die Setzsignale nur zu diesen Byte-Stellen hinzufügen, gesendet. Der so in das FOPR 10 geladene Operand wird der ALU 31 1-Byte- weise geliefert und die ALU-Ausgangsdaten in die Byte- Stellungen 1-Byte-weise eingeschrieben. Wenn das Einschreiben des Ergebnisses beendet ist, werden ein Erstoperanden-Byte-Zeiger (FBP) 141 und ein Zweitoperanden- Byte-Zeiger (SBP) 241, die die Byte-Stellen des FOPR 10und des SOPR 20 jeweils kennzeichnen, um eines inkrementiert. Die Funktionen des FBP 141 und des SBP 241 werden später erklärt.
- Am Schluß jeder 1-Byte-Verarbeitung wird ein nicht verarbeiteter Byte-Zähler (BCNT) 40 mit einer Subtrahier- Ausgangsleitung 43 eines Subtrahierers 41 über einen BCNT- Eingangswähler 42 verbunden, so daß der Inhalt des BCNT 40 um eins dekrementiert wird.
- Beim Lesen oder Schreiben des ersten Operanden wird die Zugriffsadresse zum MS 1 von einem ersten Operandenadreßregister (FMSAR) 50 über einen Adreßwähler 52 und den MS- Adreßbus 53 dem MS 1 angelegt. Der MS-Adreßbus 53 ist auch mit einem Eingang eines Adressenaddierers-Subtrahierers (AA) 54, der die MS-Zugriffsadressen auffrischt, verbunden.
- Beim Lesen des zweiten Operanden wird ein Inhalt eines zweiten Operandenadreßregisters (SMSAR) 51 als die MS-Zugriffsadresse verwendet.
- Der Adressenaddierer-Subtrahierer 54 empfängt die Adresse vom FMSAR 50 oder dem SMSAR 51 an einem seiner Eingänge und eine Konstante (0, 8 oder 16) von einem Konstantengenerator (C) 58 am anderen Eingang. Der Adressenaddierer-Subtrahierer 54 kann eine Addieroperation und eine Subtrahieroperation durchführen. Die Operationsart und der Wert der Konstanten des Generators 58 werden von einer (nicht gezeigten) Systemsteuerung bestimmt, die die Verarbeitungen des Systems, gesteuert von einem Mikroprogramm, regelt.
- Der Ausgang des Adressenaddierer-Subtrahierer 54 ist zum Eingangsregister über eine AA-Ausgangsleitung 55, einen Adreßregister-Eingangswähler 56und eine Adreßregister-Eingangsleitung 57 zurückgeführt, so daß das Adreßregister aufgefrischt wird.
- Fig. 3 zeigt Einzelheiten peripherer Schaltungen des MSRDR 5 und des FOPR 10, die in Fig. 2 gezeigt sind.
- Das FBP 141 steuert den Wähler 32, der ein Byte, das an die ALU 31 geliefert wird, auswählt. Zu Beginn der Ausführung des Befehls wird die erste Operandenadresse, das sind die drei niederwertigen Bits des FMSAR 50, in das FBP 141 geladen, das ein dekodiertes Signal erzeugt. Wenn der Inhalt des FBP 141 in binärer Schreibweise "000" ist, so kennzeichnet dies die erste Byte-Stelle oder die höchstwertige Byte-Stelle (an der Daten mit der kleinsten Adresse gespeichert sind) des FOPR 10. Wenn der Inhalt des FBP 141 "010" ist, so kennzeichnet dieser die dritte Byte-Position und wenn er "111" ist, wird die achte Byte-Position oder die niederwertigste Byte-Position spezifiziert.
- Der Ausgang 140 des FBP 141 wird ebenfalls an die FOPR- Eingangswähler 111-118 angelegt, um den ALU-Ausgang in die gekennzeichneten Stellen des FOPR 10 (die identisch mit den für die Eingänge der ALU 31 gekennzeichneten Byte- Stellen sind) einzuschreiben.
- Wenn die 8 Bytes des MSRDR 5 parallel ausgewählt werden sollen, geben die FOPR-Eingabewähler 111-118 ein 8-Byte- Setzsignal 132 aus und unterdrücken ein 1-Byte-Setzsignal 131, so daß die Bytes vom MSRDR 5 an das FOPR 10 übertragen werden. Auf der anderen Seite wird, wenn 1 Byte von der ALU 31 eingeschrieben werden soll, das Byte nur in ein Byte eingeschrieben, das von dem FBP 141 mittels UND- Schaltungen, gesteuert vom Ausgang 140 des FBP 141, dem Ausgang 34 der ALU 31 und dem 1-Byte-Setzsignal 131 gekennzeichnet wird.
- Am Ende jeder 1-Byte-Verarbeitung wird der Inhalt des FBP 141 um eins durch einen Addierer 142 inkrementiert. Wenn der Inhalt des FBP 141 "111" in binärer Schreibweise erreicht, wird er zyklisch auf "000" gesetzt.
- Das SPB 241 für den zweiten Operanden ist für den SOPR 20 in gleicher Weise wie für den FOPR 10 vorhanden. Die Operationen des SOPR 20 und des SBP 241 sind mit denen des FOPR 10 und des FBP 141 identisch mit der Ausnahme, daß die 1-Byte-Schreiboperation von der ALU 31 nicht ausgeführt wird. Deshalb fehlt an dieser Stelle die Beschreibung dieser Operation.
- Ein MCC 200 stellt eine Speichersteuerschaltung dar, das die Zugriffe zum MS 1, gesteuert von einem Mikroprogramm, steuert und ist ein Teil der Systemsteuerung. Dem MCC 200 liegen Ausgänge des FBP 141, SBP 241 und BCNT 40 an. Das MCC 200 erfaßt die Anwesenheit einer Schreibanforderung, wenn der Inhalt des BCNT 40 gleich 0 oder der Inhalt des FBP 141 gleich "000" ist sowie die Anwesenheit einer Leseanforderung, wenn der Inhalt des FBP 141 gleich "000" oder der Inhalt des SBP 241 gleich "000" ist.
- Der im MS 1 gespeicherte SS-Befehl tritt auf dem Datenbus 60 ein-Byte-weise über den Datenlesebus 2, das MSRDR 5, den Datenbus 21, das SOPR 20, den Wähler 33, die ALU 31 und die ALU-Ausgangsleitung 34 auf und wird dann so übertragen, daß Teile von ihm, die sich auf die entsprechenden, in Fig. 1 gezeigten Felder beziehen, in das F 30, das BCNT 40, das FMSAR 50, das FBP 141, das SMSAR 51 und das SBP 241 geladen werden. Bei dieser Operation gehen die Daten lediglich durch die ALU 31.
- Zum Vergleich ist nachfolgend eine Operationsfolge eines herkömmlichen Systems dargestellt:
- Schritt 1: Lies den ersten Operanden (MS →MSRDR →FOPR)
Schritt 2: Lies den zweiten Operanden SMSAR +8 →SMSAR (MS →MSRDR →SOPR)
Schritt 3: Wähle Bytes durch das FBP, SBP aus
Schritt 4: 1-Byte-Verarbeitung durch ALU. Ergebnis →FOPR
Schritt 5: FBP + 1 →FBP. SBP +1 →SBP
Schritt 6: Falls BCNT = 0 fahre fort mit Schritt 15
Schritt 7: BCNT-1 →BCNT
Schritt 8: Falls FBP ≠0 und SBP ≠0 fahre mit Schritt 3 fort
Schritt 9: Falls FBP ≠0 und SBP ≠0 fahre mit Schritt 2 fort
Schritt 10: FOPR →MSWDR
Schritt 11: Schreibe das Ergebnis in den MS. FMSAR +8 →FMSAR (MSWDR →MS)
Schritt 12: Lies den ersten Operanden (vom FMSAR adressiert) (MS →MSRDR →FOPR)
Schritt 13: Falls SBP = 0 ist, lies den zweiten Operanden (MS →MSRDR →SOPR) SMSAR +8 →SMSAR
Schritt 14: Fahre mit Schritt 3 weiter
Schritt 15: FOPR →MSWDR
Schritt 16: Schreibe das Ergebnis in den MS (adressiert durch das FMSAR) (MSWDR →MS)
Schritt 17: Ende des Befehls. - Bei jedem Schritt geht die Verarbeitung, falls keine bedingte Abfrage (Test) enthalten ist, mit dem nächsten Schritt weiter. Falls die Bedingung nicht erfüllt ist, fährt die Verarbeitung ebenfalls mit dem nächsten Schritt fort. Die Schritte stellen logische Verarbeitungen dar und jeder Schritt entspricht nicht einem Zyklus oder einem Mikroschritt der Verarbeitungseinheit.
- Das FMSAR 50 wird überschrieben, wenn das Einschreiben des Ergebnisses in die erste Operandenstelle gekennzeichnet wurde und das SMSAR 51 wird überschrieben, wenn das Lesen des zweiten Operanden spezifiziert wurde. Beidesmal wird die Additionsverarbeitung im AA 54 ausgeführt.
- Eine erfindungsgemäße Verarbeitungsfolge wird durch die folgenden Schritte beispielshaft dargestellt:
- Schritt 1: Lies den ersten Operanden. FMSAR +8 →FMSAR (MS →MSRDR →FOPR)
Schritt 2: Lies den zweiten Operanden. SMSAR +8 →SMSAR (MS →MSRDR →SOPR)
Schritt 3: Wähle die Bytes aus durch FBP, und SBP
Schritt 4: 1-Byte-Verarbeitung durch die ALU. Ergebnis →FOPR
Schritt 5: FBP +1 →FBP. SBP +1 →SBP
Schritt 6: Falls BCNT = 0 fahre fort mit Schritt 15
Schritt 7: BCNT-1 →BCNT
Schritt 8: Falls FBP ≠0 und SBP ≠0 fahre mit Schritt 3 fort.
Schritt 9: Falls FBP ≠0 und SBP ≠0 fahre mit Schritt 2 fort.
Schritt 10: FOPR →MSWDR
Schritt 11: Lies den ersten Operanden. FMSAR -8 →FMSAR (MS →MSRDR →FOPR)
Schritt 12: Falls SBP = 0 ist, lies den zweiten Operanden (MS →MSRDR →SOPR) SMSAR +8 →SMSAR
Schritt 13: Schreibe das Ergebnis in das MS (adressiert vom FMSAR) (MSWDR →MS) FMSAR +16 →FMSAR
Schritt 14: Fahre mit Schritt 3 fort. Schritt 15: FOPR →MSWDR, FMSAR-8 →FMSAR
Schritt 16: Schreibe das Ergebnis in den MS (adressiert durch das FMSAR) (MSWDR →MS)
Schritt 17: Ende des Befehls. - In den Schritten 1, 2, 11, 12 und 15 erzeugt der C 58 eine Konstante 8 und setzt sie in das AA 54 und im Schritt 13 erzeugt der C 58 eine Konstante 16 und setzt sie in das AA 54. Das AA 54 führt die Additionsverarbeitung in den Schritten 1, 2, 12 und 13 und die Subtraktionsverarbeitung in den Schritten 11 und 15 durch.
- Die Merkmale der vorgeschlagenen Datenverarbeitungsanlage werden am deutlichsten durch Schritt 1 und die Schritte 10-15 dargestellt. Insbesondere prüft das MCC 200 den Inhalt des BCNT 40 in Schritt 6 und prüft den Inhalt des FBP 141 in den Schritten 8 und 9. Daraus ergibt sich, daß, wenn der Inhalt des BCNT 40 größer als Null ist und der Inhalt des FBP 141 gleich "000", das Lesen des ersten Operanden, der im darauffolgenden 8-Byte-Block (Tiefe) gespeichert ist, vor dem zeitaufwendigen Einschreiben des Ergebnisses erfolgt. Falls der Inhalt des SBP 241 in Schritt 12 zu "000" und dadurch die Notwendigkeit nachfolgender Daten erkannt wird, wird das Lesen des zweiten Operanden ebenfalls ausgeführt. Danach wird das Ergebnis eingeschrieben.
- Das FMSAR 50 wird aufgefrischt, wenn das Auslesen des ersten Operanden, oder das Einschreiben des Ergebnisses in die erste Operandenstelle gekennzeichnet sind. In diesen Fällen führt das AA 54 die Addition oder Subtraktion aus. Das SMSAR 51 wird aufgefrischt, wenn das Auslesen des zweiten Operanden gekennzeichnet wird, wie es im herkömmlichen System erfolgt, und die Addition wird im AA 54 ausgeführt.
- Ein spezielles Beispiel wird für eine herkömmliche und die vorgeschlagene Datenverarbeitung anhand der Fig. 4 und 5 beschrieben. In diesem speziellen Beispiel benötigt das Auslesen des MS 1 zwei Zyklen, das Einschreiben in den MS 1 sechs Zyklen, die ALU 31 kann ein Byte pro Zyklus verarbeiten, das L -Feld des Befehls enthält "7" (gibt die Verarbeitung von acht Bytes an), die niederwertigen drei Bits des ADR 1- Feldes enthalten eine Binärzahl "110" und die niederwertigen drei Bits des ADR 2-Feldes enthalten eine Binärzahl "000".
- Zum Vergleich zeigt Fig. 4 ein Zeitdiagramm der Verarbeitung des herkömmlichen Systems. Das Auslesen des ersten und zweiten Operanden dauert 4 Zyklen und nach zwei Zyklen ALU-Verarbeitung wird eine Binärzahl "000" in das FBP 141 gesetzt. Das Einschreiben des Ergebnisses für das FBP = 0 braucht sechs Zyklen und das Auslesen des nachfolgenden ersten Operanden zwei Zyklen und nach sechs Zyklen ALU-Verarbeitung wird in das BCNT 40 Null gesetzt. Am Schluß braucht das Einschreiben des Ergebnisses für BCNT = 0 sechs Zyklen. So ergibt sich eine Summe von 26 Zyklen.
- Fig. 5 zeigt ein Zeitdiagramm der Verarbeitung der vorgeschlagenen Datenverarbeitungsanlage. Das Auslesen des ersten und zweiten Operanden braucht vier Zyklen und die ALU-Verarbeitung zwei Zyklen. Das Einschreiben des Ergebnisses für FBP = 0 ist an diesem Punkt erlaubt, aber das Auslesen des nachfolgenden ersten Operanden wird zuerst in zwei Zyklen ausgeführt. Zu dieser Zeit sind die für die ALU-Verarbeitung nötigen Daten im FOPR 10 und dem SOPR 20 erhältlich und die ALU-Verarbeitung wird wieder aufgenommen. Die ALU-Verarbeitung benötigt sechs Zyklen. Das Einschreiben des Ergebnisses für FBP = 0 wird parallel mit der ALU-Verarbeitung in sechs Zyklen ausgeführt. Wenn die ALU-Verarbeitung beendet ist, wird eine Null in das BCNT 40 gesetzt und das Einschreiben des Ergebnisses für BCNT = 0 wird in sechs Zyklen ausgeführt. Auf diese Weise benötigt man insgesamt 20 Zyklen. Die vorgeschlagene Datenverarbeitungsanlage ist ebenfalls für die Ausführung von Befehlen geeignet, deren Operanden in anderen Speichern oder anderen Registern stehen.
- Der in der vorgeschlagenen Datenverarbeitungsanlage verwendete Hauptspeicher kann ein magnetischer, elektrostatischer oder ein optischer Speicher, sowie ein Halbleiter- oder ein Plattenspeicher sein. Die vorliegende Erfindung ist besonders wirksam, wenn die Schreibzeit länger als die Lesezeit ist.
- Beim beschriebenen Beispiel wird durch die vorgeschlagene Datenverarbeitungsanlage das Einschreiben und die nachfolgende ALU-Verarbeitung parallel ausgeführt und die Ausführungszeit des Befehls, verglichen mit dem herkömmlichen System, um sechs Zyklen verringert. Entsprechend wirkt sich dies in einer schnellen Befehlsausführung aus.
Claims (8)
1. Datenverarbeitungsanlage mit einer Überlappung von Befehlsausführungsphasen zur schrittweisen Verarbeitung von Operanden, die in mehreren Lesezyklen aus einem Hauptspeicher (1) in vorgegebener Byte-Tiefe ausgelesen, nach Maßgabe eines Befehls in Teilschritten in einer Arithmetik/Logik-Einheit (31) verarbeitet werden, wobei die Verarbeitungsteilergebnisse in den Hauptspeicher (1) eingeschrieben werden, dadurch gekennzeichnet, daß
- eine Erfassungseinheit (40, 141, 241) aktiv wird, wenn für die Ausführung desselben Befehls das Einschreiben eines durch die Verarbeitung eines Teils des Operanden angefallenen Verarbeitungsteilergebnisses in den Hauptspeicher (1) in derselben Befehlsausführungsphase mit dem Auslesen eines weiteren Teils des Operanden in der vorgegebenen Byte-Tiefe angefordert wird, wobei der weitere Operandenteil an Speicherstellen im Hauptspeicher (1) gespeichert ist, die den Speicherstellen des ersten Operandenteils folgen, und
- daß bei Aktivwerden der Erfassungseinheit (40, 141, 241)
- eine Prioritätseinrichtung (200) das Einschreiben des Verarbeitungsteilergebnisses in den Hauptspeicher (1) nach dem Auslesen des weiteren Operandenteils so steuert, daß die Verarbeitung für den ausgelesenen weiteren Operandenteil überlappend mit der Einschreiboperation ausgeführt werden kann.
- daß bei Aktivwerden der Erfassungseinheit (40, 141, 241)
- eine Prioritätseinrichtung (200) das Einschreiben des Verarbeitungsteilergebnisses in den Hauptspeicher (1) nach dem Auslesen des weiteren Operandenteils so steuert, daß die Verarbeitung für den ausgelesenen weiteren Operandenteil überlappend mit der Einschreiboperation ausgeführt werden kann.
2. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet,
daß die Lesedauer kürzer als die Einschreibdauer des Hauptspeichers (1) ist.
daß die Lesedauer kürzer als die Einschreibdauer des Hauptspeichers (1) ist.
3. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet,
daß das Operationsergebnis an Speicherstellen gespeichert wird, an denen der für die arithmetische und logische Operation ausgelesene Operandenteil gespeichert war.
daß das Operationsergebnis an Speicherstellen gespeichert wird, an denen der für die arithmetische und logische Operation ausgelesene Operandenteil gespeichert war.
4. Datenverarbeitungsanlage nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß die arithmetische Verarbeitung mit geringerer Datenbreite als die Operanden-Byte-Tiefe ausgeführt wird.
daß die arithmetische Verarbeitung mit geringerer Datenbreite als die Operanden-Byte-Tiefe ausgeführt wird.
5. Datenverarbeitungsanlage nach Anspruch 1, dadurch gekennzeichnet,
daß die im Hauptspeicher (1) gespeicherten Daten erste und zweite Operanden variabler Länge enthalten, die jeweils eine Operandenadresse und eine von einem Befehl gekennzeichnete Operandenlänge haben,
die Arithmetik/Logik-Einheit (31) eine vorgegebene Byte- Verarbeitungstiefe aufweist und die arithmetischen und logischen Operationen mit den aus dem Hauptspeicher (1) ausgelesenen ersten und zweiten Operanden so oft ausgeführt, wie die durch den jeweiligen Befehl gekennzeichnete Operandenlänge angibt,
eine Operandenlängen-Fortschreibeeinrichtung (40, 41) die vom Befehl angegebene Operandenlänge der ersten und zweiten Operanden hält und diese bei jeder von der Arithmetik/Logik-Einheit (31) ausgeführten Arithmetik/Logik-Operation fortschreibt,
eine Operandenadressen-Fortschreibeeinrichtung (141, 241) die Operandenadresse jedes Operanden fortschreibt, ein Leseregister (10, 20) die aus dem Hauptspeicher (1) gelesenen ersten und zweiten Operanden hält und sie der Arithmetik/Logik-Einheit (31) in vorgegebener Byte-Tiefe eingibt,
ein Schreibregister (4) das von der Arithmetik/Logik- Einheit erhaltene Operationsergebnis in den Hauptspeicher (1) in dessen erste Operandenposition in der vorgegebenen Byte-Tiefe einspeichert,
eine erste und zweite Operandenadressiereinrichtung (50, 51) eine Speicherzugriffsadresse kennzeichnen, und die Prioritätseinrichtung (200) Mittel aufweist, die auf die Ausgänge der Operandenlängen-Fortschreibeeinrichtung und der Operandenadressen-Fortschreibeeinrichtung anspricht und die Lese- und Schreiboperationen im Hauptspeicher (1) so steuert, daß
daß die im Hauptspeicher (1) gespeicherten Daten erste und zweite Operanden variabler Länge enthalten, die jeweils eine Operandenadresse und eine von einem Befehl gekennzeichnete Operandenlänge haben,
die Arithmetik/Logik-Einheit (31) eine vorgegebene Byte- Verarbeitungstiefe aufweist und die arithmetischen und logischen Operationen mit den aus dem Hauptspeicher (1) ausgelesenen ersten und zweiten Operanden so oft ausgeführt, wie die durch den jeweiligen Befehl gekennzeichnete Operandenlänge angibt,
eine Operandenlängen-Fortschreibeeinrichtung (40, 41) die vom Befehl angegebene Operandenlänge der ersten und zweiten Operanden hält und diese bei jeder von der Arithmetik/Logik-Einheit (31) ausgeführten Arithmetik/Logik-Operation fortschreibt,
eine Operandenadressen-Fortschreibeeinrichtung (141, 241) die Operandenadresse jedes Operanden fortschreibt, ein Leseregister (10, 20) die aus dem Hauptspeicher (1) gelesenen ersten und zweiten Operanden hält und sie der Arithmetik/Logik-Einheit (31) in vorgegebener Byte-Tiefe eingibt,
ein Schreibregister (4) das von der Arithmetik/Logik- Einheit erhaltene Operationsergebnis in den Hauptspeicher (1) in dessen erste Operandenposition in der vorgegebenen Byte-Tiefe einspeichert,
eine erste und zweite Operandenadressiereinrichtung (50, 51) eine Speicherzugriffsadresse kennzeichnen, und die Prioritätseinrichtung (200) Mittel aufweist, die auf die Ausgänge der Operandenlängen-Fortschreibeeinrichtung und der Operandenadressen-Fortschreibeeinrichtung anspricht und die Lese- und Schreiboperationen im Hauptspeicher (1) so steuert, daß
wenn der erste Lesezugriffszyklus für die vorgegebene Byte-Tiefe des jeweiligen Operanden beendet ist, die erste und zweite Adressiereinrichtung (50, 51) jeweils die Operandenadresse des Hauptspeichers (51) fortschreiben und damit eine nachfolgende Leseadreßposition angeben, und
wenn der nachfolgende Lesezugriffszyklus in vorgegebener Byte-Tiefe des ersten Operanden aufgrund der Leseanforderung beendet ist, die erste Operandenadressiereinrichtung (50) die Operandenadresse des Hauptspeichers (1) zur Vorbereitung eines Schreibzugriffszyklus aufgrund der Schreibanforderung fortschreibt und die Adresse für die nachfolgende Leseoperation nach Beendigung des Schreibzugriffszyklus fortschreibt.
wenn der nachfolgende Lesezugriffszyklus in vorgegebener Byte-Tiefe des ersten Operanden aufgrund der Leseanforderung beendet ist, die erste Operandenadressiereinrichtung (50) die Operandenadresse des Hauptspeichers (1) zur Vorbereitung eines Schreibzugriffszyklus aufgrund der Schreibanforderung fortschreibt und die Adresse für die nachfolgende Leseoperation nach Beendigung des Schreibzugriffszyklus fortschreibt.
6. Datenverarbeitungsanlage nach Anspruch 5, dadurch gekennzeichnet, daß die Operandenadressen-Fortschreibeeinrichtung (141, 241) einen Byte-Zeiger (141) für einen ersten Operanden und einen Byte-Zeiger (241) für einen zweiten Operanden aufweist, die jeweils die Byte-Position für das Leseregister (10, 20) kennzeichnet, sobald eine Arithmetik/Logik-Operation ausgeführt wurde,
die Operandenlängen-Fortschreibeeinrichtung (40, 41) einen Byte- Zähler (40) für unverarbeitete Bytes aufweist, der die Anzahl unverarbeiteter Bytes des Operanden durch Vermindern des Inhalts des Zählers nach der Beendigung jeder Byte-Verarbeitung angibt, und
die Prioritätseinrichtung (200) die Anwesenheit einer Schreibanforderung erfaßt, wenn der Byte-Zähler (40) den Zählerstand Null hat oder wenn der Zeiger (141) für das erste Operanden-Byte eine vorbestimmte Byte-Position angibt und die Anwesenheit einer Leseanforderung erfaßt, wenn die Zeiger (141, 241) für das erste oder zweite Operanden-Byte die vorgegebene Byte-Position angeben.
die Operandenlängen-Fortschreibeeinrichtung (40, 41) einen Byte- Zähler (40) für unverarbeitete Bytes aufweist, der die Anzahl unverarbeiteter Bytes des Operanden durch Vermindern des Inhalts des Zählers nach der Beendigung jeder Byte-Verarbeitung angibt, und
die Prioritätseinrichtung (200) die Anwesenheit einer Schreibanforderung erfaßt, wenn der Byte-Zähler (40) den Zählerstand Null hat oder wenn der Zeiger (141) für das erste Operanden-Byte eine vorbestimmte Byte-Position angibt und die Anwesenheit einer Leseanforderung erfaßt, wenn die Zeiger (141, 241) für das erste oder zweite Operanden-Byte die vorgegebene Byte-Position angeben.
7. Datenverarbeitungsanlage nach Anspruch 5, dadurch gekennzeichnet, daß die Byte-Verarbeitungstiefe der Arithmetik/Logik-Einheit (31) kleiner als die vorgegebene Byte-Tiefe jedes Operanden ist.
8. Datenverarbeitungsanlage nach Anspruch 6, dadurch gekennzeichnet,
daß die erste und zweite Adressiereinrichtung (50, 51) die Operandenadresse des Speichers nach Beendigung des ersten Lesezyklus fortschreiben, indem sie einen positiven Wert gleich der vorgegebenen Lese/Schreib-Byte-Tiefe zur laufenden Adresse addieren,
die erste Operandenadressiereinrichtung (50) die Operandenadresse des Hauptspeichers (1) nach dem Ende eines dem ersten Lesezyklus folgenden Lesezyklus fortschreibt, indem sie zur laufenden Adresse einen negativen Wert addiert, der gleich der vorgegebenen Lese/Schreib-Byte- Tiefe ist und dadurch einen Schreibzyklus vorbereitet, durch den ein von der Arithmetik/Logik-Einheit (31) gewonnenes Operationsergebnis in diejenige Adreßposition der vorgegebenen Byte-Tiefe eingeschrieben wird, an der der dem Operationsergebnis zugrundeliegende Operand gespeichert war und daß dann die erste Operandenadressiereinrichtung (50) die Adresse für die folgende Leseoperation durch Addition eines positiven Werts fortschreibt, der gleich der doppelten vorgegebenen Byte-Tiefe ist.
daß die erste und zweite Adressiereinrichtung (50, 51) die Operandenadresse des Speichers nach Beendigung des ersten Lesezyklus fortschreiben, indem sie einen positiven Wert gleich der vorgegebenen Lese/Schreib-Byte-Tiefe zur laufenden Adresse addieren,
die erste Operandenadressiereinrichtung (50) die Operandenadresse des Hauptspeichers (1) nach dem Ende eines dem ersten Lesezyklus folgenden Lesezyklus fortschreibt, indem sie zur laufenden Adresse einen negativen Wert addiert, der gleich der vorgegebenen Lese/Schreib-Byte- Tiefe ist und dadurch einen Schreibzyklus vorbereitet, durch den ein von der Arithmetik/Logik-Einheit (31) gewonnenes Operationsergebnis in diejenige Adreßposition der vorgegebenen Byte-Tiefe eingeschrieben wird, an der der dem Operationsergebnis zugrundeliegende Operand gespeichert war und daß dann die erste Operandenadressiereinrichtung (50) die Adresse für die folgende Leseoperation durch Addition eines positiven Werts fortschreibt, der gleich der doppelten vorgegebenen Byte-Tiefe ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP56156267A JPS5858653A (ja) | 1981-10-02 | 1981-10-02 | デ−タ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3226214A1 DE3226214A1 (de) | 1983-04-21 |
DE3226214C2 true DE3226214C2 (de) | 1987-04-23 |
Family
ID=15624069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3226214A Expired DE3226214C2 (de) | 1981-10-02 | 1982-07-13 | Datenverarbeitungsanlage |
Country Status (4)
Country | Link |
---|---|
US (1) | US4580238A (de) |
JP (1) | JPS5858653A (de) |
DE (1) | DE3226214C2 (de) |
GB (1) | GB2123995B (de) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6015746A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | デ−タ処理装置 |
JPH0769818B2 (ja) * | 1984-10-31 | 1995-07-31 | 株式会社日立製作所 | デ−タ処理装置 |
US4739472A (en) * | 1984-12-07 | 1988-04-19 | Nec Corporation | Information processing device capable of rapidly processing instructions of different groups |
JPH0752390B2 (ja) * | 1985-05-07 | 1995-06-05 | 株式会社日立製作所 | 命令処理装置 |
JPH0743648B2 (ja) * | 1985-11-15 | 1995-05-15 | 株式会社日立製作所 | 情報処理装置 |
JPS62159274A (ja) * | 1986-01-08 | 1987-07-15 | Hitachi Ltd | 条件分岐の分割・複写によるベクトル化方式 |
US4802085A (en) * | 1987-01-22 | 1989-01-31 | National Semiconductor Corporation | Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor |
US5168571A (en) * | 1990-01-24 | 1992-12-01 | International Business Machines Corporation | System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data |
WO2001067235A2 (en) * | 2000-03-08 | 2001-09-13 | Sun Microsystems, Inc. | Processing architecture having sub-word shuffling and opcode modification |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL136146C (de) * | 1957-12-09 | |||
GB888732A (de) * | 1959-12-30 | |||
GB1077339A (en) * | 1965-04-05 | 1967-07-26 | Ibm | Control device for a data processor |
GB1148471A (en) * | 1965-04-05 | 1969-04-10 | Ibm | Data processing apparatus |
US3840861A (en) * | 1972-10-30 | 1974-10-08 | Amdahl Corp | Data processing system having an instruction pipeline for concurrently processing a plurality of instructions |
US3903516A (en) * | 1973-06-26 | 1975-09-02 | Ibm | Control logic for gas discharge display panel |
US4025771A (en) * | 1974-03-25 | 1977-05-24 | Hughes Aircraft Company | Pipe line high speed signal processor |
CA1059639A (en) * | 1975-03-26 | 1979-07-31 | Garvin W. Patterson | Instruction look ahead having prefetch concurrency and pipe line features |
JPS51144142A (en) * | 1975-06-06 | 1976-12-10 | Hitachi Ltd | Information processing |
US4168523A (en) * | 1975-11-07 | 1979-09-18 | Ncr Corporation | Data processor utilizing a two level microaddressing controller |
DE2704560C2 (de) * | 1977-02-03 | 1979-01-18 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Datenverarbeitende Anlage mit paralleler Bereitstellung und Ausführung von Maschinenbefehlen |
JPS5440537A (en) * | 1977-09-07 | 1979-03-30 | Hitachi Ltd | Pipeline control system |
JPS5447438A (en) * | 1977-09-21 | 1979-04-14 | Mitsubishi Electric Corp | Control system for scratch memory |
US4167779A (en) * | 1978-03-10 | 1979-09-11 | Digital Equipment Corporation | Diagnostic apparatus in a data processing system |
US4197579A (en) * | 1978-06-06 | 1980-04-08 | Xebec Systems Incorporated | Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner |
CA1127315A (en) * | 1978-10-27 | 1982-07-06 | Shigeyuki Unagami | Digital signal processing system with overlap processings |
US4313158A (en) * | 1978-12-11 | 1982-01-26 | Honeywell Information Systems Inc. | Cache apparatus for enabling overlap of instruction fetch operations |
CA1134952A (en) * | 1979-04-24 | 1982-11-02 | Thomas E. Kloos | Means and method within a digital processing system for prefetching both operation codes and operands |
JPS5621240A (en) * | 1979-07-27 | 1981-02-27 | Hitachi Ltd | Information processor |
-
1981
- 1981-10-02 JP JP56156267A patent/JPS5858653A/ja active Granted
-
1982
- 1982-07-08 GB GB08219810A patent/GB2123995B/en not_active Expired
- 1982-07-13 DE DE3226214A patent/DE3226214C2/de not_active Expired
- 1982-07-14 US US06/397,992 patent/US4580238A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH0363092B2 (de) | 1991-09-30 |
US4580238A (en) | 1986-04-01 |
GB2123995A (en) | 1984-02-08 |
DE3226214A1 (de) | 1983-04-21 |
GB2123995B (en) | 1985-11-13 |
JPS5858653A (ja) | 1983-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69129565T2 (de) | Hochleistungsfähiger Emulator mit Pipelining | |
DE3751503T2 (de) | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. | |
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE3587277T2 (de) | System fuer die umgehungssteuerung beim pipelinebetrieb eines computers. | |
DE3151745C2 (de) | ||
DE2521289C2 (de) | Datenverarbeitungsanordnung mit Datenfeld-Hilfsprozessor | |
DE3210816C2 (de) | ||
DE3424962C2 (de) | ||
DE68907518T2 (de) | Inhaltsadressierte Speicheranordnung. | |
DE3689595T2 (de) | Datenverarbeitungssystem. | |
DE69027932T2 (de) | Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen | |
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE3781794T2 (de) | Vorrichtung und verfahren zum versehen eines cachespeichers mit einer schreiboperation mit zwei systemtaktzyklen. | |
DE60224774T2 (de) | Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE2630323B2 (de) | Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten | |
DE2332971C2 (de) | Mikroprogrammsteuereinrichtung | |
DE3856139T2 (de) | Mikroprozessor | |
DE3226214C2 (de) | Datenverarbeitungsanlage | |
DE69618831T2 (de) | ECC-geschützte Speicherorganisation mit Lese-Änderungs-Schreib-Pipelinezugriff | |
DE68924883T2 (de) | Mikroprozessor mit Befehlspipeline. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition |