DE3751356T2 - Informationsverarbeitungssystem. - Google Patents

Informationsverarbeitungssystem.

Info

Publication number
DE3751356T2
DE3751356T2 DE3751356T DE3751356T DE3751356T2 DE 3751356 T2 DE3751356 T2 DE 3751356T2 DE 3751356 T DE3751356 T DE 3751356T DE 3751356 T DE3751356 T DE 3751356T DE 3751356 T2 DE3751356 T2 DE 3751356T2
Authority
DE
Germany
Prior art keywords
instruction
address
bus
processor
register
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 - Fee Related
Application number
DE3751356T
Other languages
English (en)
Other versions
DE3751356D1 (de
Inventor
Hisao C O Nec Corporat Harigai
Junichi C O Nec Corpor Iwasaki
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.)
NEC Electronics Corp
Original Assignee
NEC Corp
Nippon Electric Co Ltd
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 NEC Corp, Nippon Electric Co Ltd filed Critical NEC Corp
Publication of DE3751356D1 publication Critical patent/DE3751356D1/de
Application granted granted Critical
Publication of DE3751356T2 publication Critical patent/DE3751356T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

    Hintergrund der Erfindung Feld der Erfindung
  • Die vorliegende Erfindung betrifft ein Informationsverarbeitungssystem und insbesondere ein Informationsverarbeitungssystem mit einer Funktion, entweder die Mnemonik eines in einem Prozessor, wie beispielsweise einem auf einem Halbleiterchip integrierten Mikroprozessor, ausgeführten Befehls, wieder in der Ausführungsordnung aus den Informationen herzustellen, die an Chipanschlüssen, wie beispielsweise dem Adressbusanschluß und Datenbusanschluß des Prozessors, auftreten (z. B. dort eingegeben oder ausgegeben werden) oder sowohl die Adressen, auf die der Prozessor in Übereinstimmung mit dem mnemonischen Befehl tatsächlich als Operand zugegriffen hat, als auch das Datum dieser Adresse wiederherzustellen (oder den Befehl zu tracen), falls der ausgeführte Befehl den Operanden außerhalb des Prozessors hat. Das Informationverarbeitungssystem ist wirkungsvoll bei einer Fehlerbeseitigung der durch den Prozessor zu entwickelnden Software.
  • Beschreibung des Standes der Technik
  • Eine erste durchzuführende Beschreibung ist auf die interne Struktur eines Mikroprozessors, der eine Dringlichkeit- Steuerungsfunktion eines Befehls aufweist, und insbesondere auf die Vorabrufsteuerung eines Befehlscodes, eines Warteschlangenstatus und eines Busstatus gerichtet. Eine anschließende Beschreibung wird dazu durchgeführt werden, wie der Mikroprozessor des Standes der Technik den Warteschlangenstatus und den Busstatus benutzt, um einen Befehlstrace auszuführen. Eine weitere Beschreibung wird zu der internen Struktur eines multifunktionalen Mikroprozessors, der eine ausgehend von dem vorerwähnten Mikroprozessor des Standes der Technik entwickelte Mehrstufen-Pipelinestruktur aufweist, und zu den Nachteilen, im Falle, daß der vorerwähnte Befehlstrace durch diesen multifunktionalen Mikroprozessor ausgeführt wird, durchgeführt.
  • In dem Mikroprozessor des Standes der Technik, in welchem alle grundlegenden Operationssequenzen des Mikroprozessors - Befehlscode heranholen - Befehl dekodieren - Operandenzugriff - Befehlsausführung - Operandenzugriff - sequentiell durchgeführt werden, kann der Befehlstrace bereits durchgeführt werden, indem den Informationen seguentiell gefolgt wird, die an dem Adressbusanschluß und dem Datenanschluß in der Zeit erscheinen, in der der Mikroprozessor eine Folge von Befehlen ausführt. Andererseits werden in einem Mikroprozessor der Art, in welchem die Befehlscodeheranholung der vorerwähnten grundlegenden Operationsseguenzen des Mikroprozessors einer unabhängigen Einheit zugewiesen ist, so daß diese nach Dringlichkeit gesteuert werden kann, die während der Verarbeitung einer Folge von Befehlen durch den Mikroprozessor an dem Adressbusanschluß, dem Datenbusanschluß und dem Ausgangsanschluß erscheinenden Informationen eines Statussignals, die den internen Status der Befehlscode-Heranholeinheit anzeigen, erst einmal als Zeitfolgedatum in dem Tracepufferspeicher gehalten. Sowohl der in dem Prozessor durch die vordringlich gesteuerte Befehlscode-Heranholung herangeholte Befehlscode als auch das nachfolgende Ausführungsergebnis dieses Befehlscodes werden durch das Statussignal übereinstimmend editiert, so daß der Befehlstrace durchgeführt werden kann. Auf diese Weise werden, entsprechend dem Befehlstracingverfahren des Mikroprozessors, die an den Anschlüssen des Mikroprozessors erscheinenden Informationen getraced. Als Ergebnis wird es, falls sich die interne Struktur des Mikroprozessors ändert, um dadurch die Dringlichkeitssteuerung der vorerwähnten Befehlscode-Heranholung durchzuführen, in entsprechender Weise nötig werden, die mindest-notwendige Information, die den internen Status für den Befehlstrace anzeigt, von der Mindestanzahl von Anschlüssen aus zugeben und das Befehlstracingverfahren selbst zu ändern.
  • Figur 4 ist ein Blockdiagramm, das die interne Struktur eines Prozessors gemäß dem Stand der Technik zeigt. Bezugszeichen 401 bezeichnet einen Prozessorchip, und Zeichen 402 bezeichnet einen Busanschluß, über welchen Adressen und Daten ein- und ausgegeben werden. Zeichen 403 bezeichnet einen internen Bus; Zeichen 404 ein Datenregister, Zeichen 405 einen Adressgenerator; und Zeichen 406 eine Befehlswarteschlange und ihre Steuerung aus 6 Bytes. Die Warteschlangenstatusinformation des Prozessors 401 wird durch die Befehlswarteschlangensteuerung 406 generiert und an die Außenseite des Prozessors 401 ausgegeben. Ein von der Befehlswarteschlange 406 ausgegebener Befehlscode wird über eine Signalleitung 408 und einen internen Datenbus 409 an einen Befehlshalter 411 überführt und durch diesen gehalten. Zeichen 412 bezeichnet einen Befehlscodedekoder, welcher für das Ausgangssignal des Befehlshalters 411 empfangsbereit gemacht ist. Zeichen 410 bezeichnet eine Befehlsausführungssteuerung. Zeichen 413, 414 und 415 bezeichnen jeweils verschiedene Register, eine Arithmetik- und Logikeinheit (das heißt, ALU) und ein Operandenregister für die ALU. Zeichen 416 bezeichnet eine Bussteuerung zum Steuern der Buszyklen des Prozessors 401, der Generierung eines Busstatussignals, usw. Zeichen 417 bezeichnet eine Signalleitung zum Ausgeben des durch die Bussteuerung 416 generierten Busstatussignals an die Außenseite des Prozessors 401.
  • Die Befehlkodier-/-vorabruf-, -dekodier- und -ausführoperationen des Prozessors 401 werden mit Bezug auf Fig. 4 beschrieben.
  • Bei den Befehlkodier-/-vorabrufoperationen des Prozessors 401 wird eine durch den Adressgenerator 405 generierte vorabgerufene Adresse über den Busanschluß 402 an einen nicht dargestellten Systemadressbus ausgegeben, und ein von einem korrespondierenden Bereich in einem nicht dargestellten Speicher an einen nicht dargestellten Systemdatenbus ausgegebener Befehlscode wird von dem Busanschluß 402 herangeholt und über den internen Bus 403 in dem nachlaufenden Block der die FIFO-Struktur (das heißt, First-In First-Out) aufweisenden Befehlswarteschlange 406 gehalten. Hierbei kann, falls der Datenbus des Prozessors 401 eine Länge von 16 Bits hat, ein 2-Byte-Befehlscode (das heißt, 1 Byte = 8 Bits) in der Befehlswarteschlange 406 durch eine einzige Befehlskodier-/-vorabrufoperation gespeichert werden.
  • Der Prozessor 401 hält sequentiell einen 1-Byte-Befehlscode pro Befehl vom Kopf der Befehlswarteschlange 406 über die Signalleitung 408 und den internen Bus 409 in dem Befehlshalter 411 und verwendet den Befehlsdekoder 412 dazu, diesen Befehlscode zu dekodieren. Die als das Dekodierergebnis generierte Steuerinformation wird an die Befehlsausführungssteuerung oder dgl. überführt, so daß die Operation, die in dem durch den Dekoder 412 dekodierten Befehlscode beschrieben ist, umgehend ausgeführt wird. Wenn die Ausführung dieser Operation abgeschlossen ist, wiederholt der Prozessor 401 die Abfolge aus Heranholen eines nachfolgenden Befehlscodes von der Befehlswarteschlange 412 in den Befehlshalter 411 und Dekodieren und Ausführen desselben.
  • Zum Beispiel wird in dem Fall, in welchem ein Leseoperand im Speicher als ein Ergebnis davon angefordert wird, daß der von der Befehlswarteschlange 406 herangeholte und in dem Befehlshalter 411 gehaltene Befehlscode durch den Dekoder 412 dekodiert ist, dieser erst nach dem Dekodieren des Befehlscodes aus dem Speicher herausgelesen. Die Befehlsausführungssteuerung 410 gibt dem Adressgenerator 405 die für das Generieren der Adresse des Leseoperanden in dem Speicher notwendige Information und befiehlt dann den Start des Speicher-Lesebuszyklusses. In Antwort auf diesen Befehl von der Befehlsausführungssteuerung 410 verwendet die Bussteuerung 416 die durch den Adressgenerator 405 generierte Adresse, um den Speicher-Lesebuszyklus zu starten, speichert das von dem Speicher erhaltene Datum in das Datenregister 404 und überträgt dieses an die Befehlsausführungssteuerung 410, womit das Speicherlesen abgeschlossen ist. Die Befehlsausführungssteuerung 410 verwendet den Inhalt des Datenregisters 404 dazu, die notwendige Verarbeitung durchzuführen, wenn sie von der Bussteuerung 416 die Information der Speicherlesebeendigung in Antwort auf den vorher ausgegebenen Startbefehl für den Speicher-Lesebuszyklus empfängt. Als Ergebnis kann die Bussteuerung 416 den Befehl nicht ausführen, da der durch die Befehlsausführungssteuerung 410 befohlene Speicher-Lesebuszyklus nicht gestartet werden kann, obwohl diese von der Bussteuerung 416 den Speicher-Lesebuszyklus-Startbefehl von der Befehlsausführungssteuerung 410 erhält, vorausgesetzt, daß der Systemdatenbus und der Systemadressbus durch einen anderen Busmaster oder dgl. besetzt sind. Die Befehlsausführung wird solange zurückgestellt, bis die Bussteuerung 416 das Benutzungsrecht des Systemdatenbusses und des Systemadressbusses erwirbt, um den Speicher-Lesebuszyklus zu starten und das Datum von einem vorbestimmten Bereich in dem Speicher heranzuholen und in das Datenregister zu schreiben. Mit anderen Worten wird der tatsächliche Buszyklus dieses Prozessors 401 für den Speicher- oder I/O-Zugriff eines diesen Zugriff anfordernden Befehls in der Zeit, in der der Befehl ausgeführt wird, eingeschränkt.
  • Eine Software muß durch ein Tracing des Befehls von Fehlern befreit werden, so daß sie unter Verwendung des oben beschriebenen Prozessors entwickelt werden kann. Das Befehlstracing ist eine der nutzvollen Techniken für die Softwareentwicklung und zum Erhalten einer notwendigen Information für die Untersuchung: welches Ergebnis wird erhalten, wenn ein bestimmter Befehl durch eine CPU ausgeführt wird; welcher Einfluß wird als Ergebnis einer Ausführung eines Befehls auf nachfolgende Befehle ausgeübt; welcher Einfluß wird auf ein ausgeführtes Befehlsprogramm ausgeübt, falls eine externe Unterbrechung in der Zeit herbeigeführt wird, in der ein Befehl oder eine Routine ausgeführt wird; usw.
  • Da der Prozessor in der Lage ist, den Befehlscode vorabzurufen, wie oben beschrieben, hängt der Zeitraum, in welchem der über den I/O-Datenanschluß des Prozessors in den Prozessor geholte Befehl ausgeführt werden soll, von dem internen Status des Prozessors ab. Der Prozessor ist in der Lage, Warteschlangen-Statussignale QS0 und QS1, die den Status der Befehlswarteschlange wiedergeben, und Busstatussignale S0 bis S2, die die Arten des Buszyklus wiedergeben, auszugeben. Als Ergebnis davon werden wie folgt die Status der Befehlswarteschlange aus den Warteschlange-Statussignalen, wie in Tabelle 1 aufgelistet, erkannt, und die Arten des Buszyklus aus den Busstatussignalen erkannt, wie in Tabelle 2 aufgelistet: Tabelle 1 Symbol Warteschlange ohne Fluktuation Warteschlange beim Byte eines Befehlscodes Warteschlange leer Warteschlange beim oder nach dem Byte Tabelle 2 Symbol Unterbrechungsbestätigung I/O-Leseanschluß I/O-Schreibanschluß Halt Codezugriff Lesespeicher Schreibspeicher Passiv
  • Die Information eines Tracepufferspeichers in einem Befehlstracer wird editiert, indem eine Pseudo-Befehlswarteschlange, die die gleiche Aktionsweise wie die Befehlswarteschlange in dem Prozessor hat, realisiert wird mittels der Software des Befehlstracers und durch ein mit Bezug auf den Status der Pseudo-Befehlswarteschlange umgekehrtes Zusammensetzen eines Befehlscodes in dem Tracepufferspeicher in der tatsächlichen Verarbeitungsordnung des Prozessors, um eine Befehlsmnemonik einzurichten, während die Befehlswarteschlange in dem Prozessor in Übereinstimmung mit dem Fortschreiten des Verarbeitens auf Basis des Warteschlangen-Statussignals und des Busstatussignals jeder Adresse von Zeitfolgedaten in dem Tracepufferspeicher simuliert wird Falls darüber hinaus der ausgeführte Befehl einmal durch einen Speicherzugriff oder einen I/O-Zugriff begleitet wird, ist es notwendig, den Befehlscode umgekehrt zusammenzusetzen, um die Befehlsmnemonik einzurichten, und zudem, um zu bestimmen, welche Adresse und welches Datum tatsächlich benutzt werden, um den Speicherzugriff oder den I/O-Zugriff durchzuführen.
  • Der Befehlstracer des vorerwähnten Prozessors hat die folgenden Hauptfunktionen: eine Tracepuffer-Speicherfunktion, um die durch den Prozessor ausgeführte Adressbusinformation und Datenbusinformation sowie die Steuersignalstatus-Information zu speichern; eine Anhaltepunkt-Einstellfunktion; eine Warteschlangenstatus-Emulationsfunktion; und eine Funktion, um die Information in den Tracepufferspeicher zu editieren. Während der Prozessor das Programm ausführt, holt der Befehlstracer jene jeweilig vorbestimmten Daten und Signale in den Tracepufferspeicher, welche mit fortschreitender Ausführung an den einzelnen Bussen und Eingang/Ausgang-Signalanschlüssen erscheinen. Der gegenwärtig implementierte Tracepufferspeicher hat ein Wort von etwa 64 Bits und eine Kapazität von etwa 64 Worten bis 2000 Worten Der Anwender kann die Ausführung des Programms an einem durch die Anhaltepunkt-Einstellfunktion gesetzten Anhaltepunkt unterbrechen und dann die entwickelte Software im Hinblick auf das Ergebnis der Editierung der Information in dem Tracepufferspeicher prüfen.
  • Da der Prozessor die Vorabruffunktion hat, wird hierbei der über den Datenbusanschluß eingegebene Befehl nicht direkt dekodiert/ausgeführt, sondern erst einmal in die Befehlswarteschlange geholt und veranlaßt, zu warten. Diese Wartezeit ist nicht konstant, da sie von der Stauung in der Befehlswarteschlange, der Art des gerade ausgeführten Befehls usw. abhängig ist. Im Fall des beschriebenen Prozessors kann der Status der Befehlswarteschlange und die Art des gerade vorliegenden Buszyklus jeweils als die Warteschlangen-Statusinformation QS0 und QS1 und die Busstatusinformation S0 und S2 vom Anschluß an die Außenseite ausgegeben werden. Als Ergebnis holt der Befehlstracer die Warteschlangen-Status- und Busstatussignale zusammen mit weiterer Information in den Tracepufferspeicher und setzt sie, nachdem er das Programm an dem Anhaltepunkt unterbrochen hat, nicht nur in Bezug dazu, die als das Zeitfolgedatum in dem Tracepufferspeicher gespeicherte Information zu editieren, sondern zudem auch dazu, von welcher Adresse der Befehlscode dekodiert oder ausgeführt werden muß und welche speicherzugriff in dem Tracepufferspeicher mit dem in diesem Vorgang eingerichteten Speicher- oder I/O-Zugriff korrespondiert.
  • Das Prinzip dieser Editierung wird im folgenden kurz beschrieben. Falls ein Befehl aus der Befehlswarteschlange geholt ist und dekodiert und ausgeführt wird, wird die Ausführung eines nachfolgenden Befehls solange hinausgeschoben, bis der gerade ausgeführte Befehl beendet ist. Daraus folgt, daß auch wenn der durch den Speicher- oder I/O-Zugriff begleitete Befehl z. B. aus zwei aufeinanderfolgenden Befehlen besteht, ist deren Ordnung hinsichtlich des Speicher- oder I/O-Zugriffs identisch mit der der in dem Programm geschriebenen Befehle. Darüber hinaus hängt die Differenz zwischen der Zeit, in welcher der durch den Speicher- oder I/O-Zugriff begleitete Befehl aus dem Speicher herangeholt wird, und der Zeit des Speicherzugriffs, in welcher dieser aus der Befehlswarteschlange herangeholt und dekodiert und ausgeführt wird, zwar von dem Status der Befehlswarteschlange ab, die Zeit des Speicher- oder I/O-Zugriffs jedoch stimmt mit der überein, bei welcher der Befehl ausgeführt wird. Mit diesen Grundvoraussetzungen wird der Tracepufferspeicher im folgenden beschrieben.
  • Fig. 5A und 5B stellen ein Beispiel der Daten dar, welche in den Tracepufferspeicher geschrieben sind. Jeder Frame entspricht einer jeweiligen Adresse des Tracepufferspeichers, an welcher die Information eines einmal in den Frame heranzuholenden Wortes geschrieben ist. Die Frames sind in der Reihenfolge numeriert, in der sie in den Tracepufferspeicher geholt wurden. Die Buchstaben BHE* bezeichnen ein Byte-Hoch-Freigabesignal, und das * bezeichnet einen aktiven Tiefstatus. Das BHE*-Signal zeigt an, das Daten an die höhere Hälfte des Datenbusses ausgegeben werden. Die Buchstaben STS bezeichnen die Busstatussignale S0 bis S2 mit den in Tabelle 2 aufgelisteten Symbolen. Die Buchstaben QSTS bezeichnen die Warteschlangen-Statussignale QS1 und QS0 mit den in Tabelle 1 aufgelisteten Symbolen. Die Buchstaben QDEPTH bezeichnen die Anzahl der Bytes des in der Befehlswarteschlange gespeicherten Befehlcodes. Die Buchstaben DMUX stellen dar, zu welchem Zweck der Tracepufferspeicher heranholt. Die Buchstaben A, D und Q bezeichnen jeweils eine Adresse, ein Datum und einen Status. Ein Buszyklus, ähnlich dem des Prozessors, ist dem Befehlstracer zugeordnet, so daß der Tracer die Tracedaten, wie beispielsweise die Adresse, das Datum oder den Status, für jeden Systemtakt des Prozessors überwacht. Da sich die Adresse in einem Buszyklus T1 ändert, wird das Tracedatum eines Wortes im Zyklus T1 in den Tracepufferspeicher geholt. Zu diesem Zeitpunkt wird die Adresse A in den DMUX geschrieben. Da das Datum an der in T1 ausgegebenen Adresse in einem identischen Buszyklus T4 fixiert ist, wird in T4 ein Frame in des Tracepufferspeicher geholt. Der Busstatus ist für eine Zeitspanne von Buszyklen von T2 bis T4 wirksam. Der unmittelbar vor dieser Periode in den Tracepufferspeicher geholte Busstatus wird nur mit einem Frame in den Tracepufferspeicher geholt, falls sich sein Inhalt ändert. Der Warteschlangenstatus hängt zwar grundsätzlich nicht von dem Buszyklus ab, das unmittelbar vorher in den Tracepufferspeicher geholte Tracedatum wird aber mit nur einem Wort herangeholt, falls sich sein Warteschlangenstatusinhalt ändert. Wenn der Status herangeholt ist, wird der Status Q in den DMUX geschrieben. In diesem Prozessor werden alle Adressdaten und Zustände in Zeitfolgeweise an dem gemeinsamen Anschluß empfangen und multiplext. Dies macht es notwendig, einen Index, wie beispielsweise den DMUX, vorzusehen, so daß die Adresse (A), das Datum (D) oder der Status (Q) unterschieden werden können. Die QDEPTH ist nicht die direkt von dem Anschluß des Prozessors erhaltene Information, sondern ist aus dem Warteschlangenstatus (QSTS) und dem Busstatus (STS) in der folgenden Weise berechnet.
  • Daneben gibt es einige Pseudo-Befehlswarteschlangen-Framingverfahren, von denen eines mit Bezug auf Fig. 6 beschrieben wird. Bezugszeichen 601 bezeichnet einen Speicherraum mit einer Länge von 1 Byte, was zum Anstauen des Befehlstrace ausreichend ist. In dem Prozessor wird der Pefehlscode alle 2 Bytes vorabgerufen, und der Busstatus und der DMUX werden jeweils im Hinblick auf F und D erfaßt. Um die vorausschauende Befehlscode-Vorabrufoperation zu simulieren, wird deshalb der vorabgerufene Befehlscode in die durch einen Schreibzeiger (WP) einer Pseudo-Befehlswarteschlange angezeigte Speicheradresse geschrieben, während jeder Inhalt des Zeigers WP um 2 inkrementiert wird. Um andererseits zu simulieren, daß der Befehlscode aus der Befehlswarteschlange herangeholt wird, wird die Befehlswarteschlange von der durch einen Lesepointer (RP) einer Pseudo- Befehlswarteschlange angezeigten Speicheradresse herangeholt, und wird der Inhalt dieses Zeigers (RP) um 1 inkrementiert, weil diese Heranholung von dem Warteschlangenstatus erfaßt werden kann.
  • Der Wert der QDEPTH wird für die tatsächliche Operation ausgehend von der Rückstellzeit des Prozessors durch eine in dem Befehlstracer angeordnete Hardwareschaltung 700 sequentiell berechnet, wie in Fig. 7 gezeigt. Das berechnete Ergebnis ist in der Information eines durch den Befehlstracer in den Pufferspeicher heranzuholenden Frames enthalten. In Fig. 7 bezeichnet das Bezugszeichen 701 eine Signalleitung zum Übertragen des Warteschlangenstatussignals, und Zeichen 702 bezeichnet einen Dekoder zum Dekodieren des Wartenschlangenstatussignals auf der Signalleitung 701. Von dem Dekoder 701 werden zwei Signale ausgegeben: das Signal auf einer Signalleitung 703 nimmt einen Hochpegel ein, wenn das Warteschlangenstatussignal das Symbol F oder S aus Tabelle 1 anzeigt; und das Signal auf einer Signalleitung 707 nimmt den Hochpegel ein, wenn das Warteschlangenstatussignal das Symbol E aus Tabelle 1 anzeigt. Das Zeichen 704 bezeichnet, einen Modulo-6-Aufwärtszähler, dessen Wert bei jeder Detektion einer ansteigenden Flanke, an welcher das Signal auf der Leitung 703 von den niedrigen zu den hohen Pegeln übergeht, um 1 inkrementiert wird. Das Zeichen 705 bezeichnet die Ausgangssignalleitung des Zählers 704, welche eine Länge von 3 Bits aufweist. Zeichen 708 bezeichnet eine Signalleitung zum Übertragen des Rückstellsignals auf ein System, das den Prozessor und den Befehlstracer umfaßt, und das Resetsignal ist aktiv hoch. Zeichen 709 bezeichnet ein AND-Gate, das für das Signal auf der Leitung 707 und das Resetsignal auf der Leitung 708 empfangsbereit gemacht ist. Das Zeichen 710 bezeichnet die Ausgangssignalleitung des AND-Gates 709. Zeichen 711 bezeichnet eine Signalleitung zum Übertragen des Busstatussignals von dem Prozessor an einen Dekoder 712. Zeichen 713 bezeichnet die Ausgangssignalleitung des Dekoders 712, und das Signal auf der Leitung 713 nimmt den Hochpegel ein, wenn das Busstatussignal das Symbol F (das heißt, die Codeheranholung) aus Tabelle 2 anzeigt. Zeichen 714 bezeichnet einen Modulo-6-Aufwärtszähler, welcher für das Signal auf der Leitung 713 empfangsbereit gemacht ist. Der Wert des Zählers 714 wird jedesmal um 2 inkrementiert, wenn er eine ansteigende Flanke des Signals auf der Leitung 713 erfaßt. Zeichen 715 bezeichnet die Ausgangssignalleitung des Zählers 714, welcher eine Länge von 3 Bits hat. Das Zeichen 706 bezeichnet ein Subtrahierglied. Dieses Subtrahierglied 706 ist für die jeweiligen Ausgangssignale des Zählers 704 und 714 über jeweils die Signalleitung 705 und 715 empfangsbereit gemacht, um den Wert des Ausgangssignals des Zählers 704 von dem Wert des Ausgangssignals des Zählers 714 zu subtrahieren und die sich daraus ergebende Differenz an eine Signalleitung 716 aus zugeben.
  • Die Operationen der QDEPTH-Berechnungshardware 700 aus Fig. 7 wird im folgenden kurz beschrieben. Das Warteschlangenstatussignal und Busstatussignal des Prozessors werden jeweils über die Signal leitungen 701 und 711 an das Innere der QDEPTH-Berechnungshardware 700 sequentiell übertragen. Wenn das Resetsignal 708 des Systems den Hochpegel annimmt, nimmt auch das Ausgangssignal des AND-Gates 709 den Hochpegel an und wird über die Signalleitung 710 in die Zähler 704 und 714 eingegeben. Diese Zähler 704 und 714 sind mit ihren Ausgängen auf 0 zurückgesetzt, wenn das Signal auf der Leitung 710 den Hochpegel einnimmt. Wenn der Prozessor seine Operation beginnt, den Befehlscode in Antwort auf ein Fesetsignal vorabzurufen, stellt sich der Busstatus mit dem Symbol F (das heißt, für Codeabruf) aus Tabelle 2 dar, so daß der Zähler 714 einen Ausgang bei 2 annimmt. Da der Prozessor durch eine einzige Vorabrufoperationden den Befehlscode aus 2 Bytes in der Befehlswarteschlange hält, inkrementiert der Dekoder 713 den Ausgang des Zählers 714 jedesmal um 2, wenn das Busstatussignal einmal das Symbol F aus Tabelle 2 erfaßt. Die Tatsache, daß der Prozessor den Befehlscode von 1 Byte aus der Befehlswarteschlange holt, ist aus der Tatsache zu entnehmen, daß das Warteschlangenstatussignal auf der Signalleitung 701 das Symbol F (zuerst) oder S (nachfolgend) aus Tabelle 1 erfaßt und der Dekoder 702 den Ausgang des Zählers 704 jedesmal um 1 inkrementiert, wenn das Symbol F oder S erfaßt wird. Das Ergebnis eines momentanen Subtrahierens des die Heranholung des Befehlscodes aus der Befehlswarteschlange anzeigenden Wertes des Ausganges des Zählers 704 von dem den Befehlscodevorabruf anzeigenden Wert des Ausganges des Zählers 714 durch das Subtrahierglied 706 zeigt die Warteschlangenteufe QDEPTH in diesem Moment an. Wenn das Symbol E (Warteschlangenleerung) aus Tabelle 1 als ein Ergebnis dessen detektiert wird, daß das Warteschlangenstatussignal durch den Dekoder 702 dekodiert ist, nimmt darüber hinaus das Signal auf einer Ausgangssignalleitung 707 des Dekoders 702 den Hochpegel an. Als Ergebnis nimmt das Signal auf der Ausgangssignalleitung 710 des AND-Gates 709 den Hochpegel an, so daß die Zähler 704 und 714 zurückgesetzt werden. Diese Zurücksetzungen der Zähler 704 und 714 durch das Signal auf der Signalleitung 707 entsprechen dem, daß der Prozessor den Inhalt der Befehlswarteschlange leert.
  • Auf diese Weise werden das Inkrement und das Dekrement des in die Befehlswarteschlange einzugebenden oder aus dieser auszugebenden Befehlscodes durch die Hardwareschaltung 700 für eine QDEPTH-Berechnung auf Fig. 7 simuliert. Das simulierte Ergebnis wird sequentiell als ein Teil der Information eines Frames herangeholt, der dazu da ist, die Signale auf der Ausgangssignalleitung 716 gemeinsam in dem Pufferspeicher des Befehlstracers, zusammen mit den Informationen des Datenbusses, Adressbusses, der Warteschlangenstatus- und Busstatussignale für eine Zeitspanne ausgehend von dem Moment, an dem der Prozessor zurückgesetzt wird, bis zu dem Moment, an dem eine Folge von Operationen an der Anhaltepunktadresse unterbrochen werden, zu halten.
  • Als nächstes wird im folgenden das Verfahren eines umgekehrten Zusammensetzens der Befehle, welche durch den Prozessor auf Grundlage der Daten im Tracepufferspeicher aus Fig. 5 tatsächlich ausgeführt und durch den I/O- oder Speicherzugriff begleitet werden, in der Weise, daß diese dem die Ausführung der Befehle begleitenden I/O- oder Speicherzugriff des Prozessors entsprechen, beschrieben. In der Dringlichkeitssteuerung ist die Zeitspanne von der Festhaltung bis zur Ausführung der Befehle des Prozessors nicht konstant. Jedoch wird die folgende Beschreibung unter der Voraussetzung durchgeführt, daß die Abfolge der Ausführung der Befehle solange identisch mit der der Heranholung in die Befehlswarteschlange ist, wie die Befehle nicht so etwas wie einen Verzweigungsbefehl mit einer Möglichkeit zum Verändern der Sequenz des Programms enthalten.
  • Wenn der Befehl, der ausgeführt wurde, getraced werden soll, wird dafür der Status einer leeren Befehlswarteschlange gesucht und als Bezugnahme für den Trace benutzt. Aus dem Warteschlangenstatus E ist zu erkennen, wann die Befehlswarteschlange geleert ist. In Fig. 5, zum Beispiel, stellt sich QSTS an den Frames 0002 und 0022 als E dar. Der Befehlscode, der durch den Befehlsabruf unmittelbar nach dem Auftritt des Warteschlangenstatus E in die Befehlswarteschlange herangeholt wurde, ist am Kopf der Befehlswarteschlange angeordnet, so daß er an erster Stelle dekodiert und ausgeführt wird. Wenn der Befehlscode eine variable Bytelänge (das heißt, einen Befehl von 1 bis 6 Bytes) aufweist, zeigt er die Bytezahl des Befehls an, indem die Anzahl eines F, von dem F bis zu einem nachfolgenden F des Warteschlangenstatus, und die Anzahl von S summiert wird. Wie in Fig. 5 gezeigt, wird, nachdem der QSTS sich im Frame 0002 als E darstellt, an einem Frame 0003 eine Adresse (als A in DMUX) ausgegeben und an einem Frame 0004 das Datum (als D in DMUX) herangeholt. Da sich jedoch der STS als F darstellt, ist das am Frame 0004 herangeholte Datum der Befehlscode und demgemäß der, unmittelbar nachdem sich der QSTS als E im Frame 0002 darstellt, erfolgende Befehlsabruf, und die Befehlswarteschlange leer ist. Als Ergebnis ist der am Frame 0004 herangeholte Befehlscode am Kopf der Warteschlange im Frame 0004. Da sich im Frame 0006 der QSTS als F darstellt, wird erkannt, daß der am Frame 0004 herangeholte Befehlscode durch den Ausführungsteil abgerufen wurde. Da sich der QSTS an den Frames 0007 und 0010 als S darstellt, bis sich der QSTS nach dem Frame 0006 am Frame 0011 wieder als F darstellt, wird erkannt, daß der Befehl, der am Frame 0004 herausgeholt und von dem Frame 0006 begonnen wurde ausgeführt zu werden, 3 Bytes hat. Da darüber hinaus die Adresse am Frame 0005 ausgegeben wird und der Befehlscode an einem Frame 0008 vorabgerufen wird, hat der Befehl, mit dessen Ausführung bereits von dem Frame 0006 begonnen wurde, Befehlscodes BA, EA und FF (alle in hexadezimaler Schreibweise) und liefert Mnemoniks MOV, DX und FFEA, falls umgekehrt zusammengesetzt. Nachfolgend wird das Verfahren zum Bestimmen der Bytezahl des Befehlscodes mit Bezug zum Leerstatus der Befehlswarteschlange am Frame 0002, um den Code eines Befehls zu erhalten, wiederholt.
  • Den Befehlen der Frames 0006 bis 0010 folgen jene der Frames 0011 bis 0014. Der Warteschlangenstatus stellt sich am Frame 0011 als F dar, nicht aber als S bevor er sich nachfolgend an einem Frame 0015 als F darstellt. Daraus folgt, daß die Befehle, die an den Frames 0011 bis 0014 ausgeführt wurden, 1 Byte und einen Code EC (in hexadezimaler Schreibweise) von 1 Byte der am Frame 0008 herangeholten Befehlscodes aus 2 Bytes haben, anders als die Befehlscodes der Frames 0006 bis 0010. Falls der EC (in hexadezimaler Schreibweise) umgekehrt zusammengesetzt wird, werden Mnemoniks IN, AL und DX erhalten. An den Frames 0013 und 0014 stellt sich der Busstatus STS als I dar, was darauf schließen läßt, daß das am Schritt des Frames 0014 angezeigte Datum entsprechend der am Schritt des Frames 0013 ausgegebenen Adresse von dem I/O-Anschluß herangeholt wurde. Mit anderen Worten sind die in den Ausführungsprozeduren der Befehle IN, AL und DX eingerichteten I/O-Zugriffe diejenigen an den Schritten der Frames 0013 und 0014.
  • Auf diese Weise wird mit Bezugnahme auf die Frames, in welchen sich das Warteschlangenstatussignal durch das Symbol E aus Tabelle 1 darstellt, der Code eines Befehls aus dem Warteschlangenstatussignal, dem Busstatussignal, dem DDMUX- Index, den Daten auf dem Datenbus und den Adressen auf dem Adressbus ausgewählt und umgekehrt zusammengesetzt, um die Befehlsmnemonik zu erhalten, welche so ausgebildet ist, daß sie dem für die Befehlsausführung notwendigen Speicher- oder I/O-Zugriff entspricht, so daß die durch den Prozessor wirklich ausgeführten Befehle wieder hergestellt werden können. Falls der Tracepufferspeicher einen Frame für die Bezugnahme aufweist, können die Befehle an und nach dem Frame sequentiell, einer nach dem anderen auf der Basis des Warteschlangensignals, des Busstatussignals und des in dem Befehlscodevorabruf befindlichen Datums auf der Datenbuslinie wiederhergestellt werden. Andererseits können die Befehle an und vor dem Bezugsframe durch ein zurücklaufendes Tracing des Zeitverlaufs vom Bezugsframe aus, unter Benutzung des Warteschlangenstatussignals, des Busstatussignals, des in dem Befehlscodevorabruf befindlichen Datums auf dem Datenbus und der Information von der Warteschlangenteufe QDEFTH, wiederhergestellt werden.
  • Die Ergebnisse der Wiederherstellung (bzw. des Tracens) von Befehlen auf Grundlage der Daten im Tracepufferspeicher, wie in Fig. 5 gezeigt, sind in Fig. 8 dargestellt.
  • Als nächstes wird im folgenden der Prozessor mit der Mehrstufen-Pipelinestruktur beschrieben (dieser Prozessor soll vorübergehend "A-Prozessor" genannt werden).
  • Fig. 9 ist ein Blockdiagramm, das die interne Struktur des A-Prozessors wiedergibt. Bezugszeichen 901 bezeichnet einen A-Prozessorchip; Zeichen 902 eine Adressbus-Signalleitung des A-Prozessors, Zeichen 903 eine Datenbus-Signalleitung des A-Prozessors; Zeichen 904 einen Datenbus in dem A-Prozessor; und Zeichen 905 eine Befehlsvorabrufeinrichtung zusammengesetzt aus einer Befehlswarteschlange mit FIFO- Struktur und einer Befehlswarteschlangensteuerung. Zeichen 906 bezeichnet eine Signalleitung zum Überführen des Kopfes der Befehlswarteschlange in der Befehlsvorabrufeinrichtung 905 an eine Befehlsdekodiereinrichtung 907, welche wiederum aus einem Befehlsdekoder und einer Folgesteuerungseinrichtung um Steuern des Betriebs der Befehlsdekodiereinrichtung 907 zusammengesetzt ist. Zeichen 908 bezeichnet eine Dekodierte-Information-Warteschlange mit FIFO-Struktur zum Halten solcher Informationen, die durch die Befehlsdekodiereinheit 907 dekodiert wurden, sowie zum Anweisen des Betriebs einer Befehlsausführungseinheit 910. Zeichen 909 bezeichnet eine Signalleitung zum Übertragen der Information von der Dekodierte-Information-Warteschlange 908 an die Befehlsausführungseinheit 910. Diese Befehlsausführungseinheit 910 ist aus einer Hardware aufgebaut, die aus einer Arithmetik- und Logikeinheit und einer Vielzahl von Registern zusammengesetzt ist. Zeichen 911 ist ein Adressgenerator zum Durchführen von Adressberechnungen in Antwort auf eine Information oder einen Befehl von der Befehlsdekodiereinheit 907. Zeichen 912 bezeichnet eine Signalleitung zum Übertragen der durch den Adressgenerator 911 generierten Adresse an eine Adressbusschnittstelle einer Bussteuerung 913. Diese Bussteuerung 913 steuert den Bus des A-Prozessors und kann funktionsabhängig und grob in drei Teile unterteilt werden: das Adressbus-Schnittstellenteil; ein Datenbus-Schnittstellenteil; und ein Buszyklus- Steuerteil. Das Adressbus-Schnittstellenteil hat eine Funktion, die bezüglich des Systemadressbusses des den A-Prozessor umfassenden Systems bestimmte Adresse von dem Adressbus 902 des A-Prozessors auszugeben und ist aus einer Hardware aufgebaut, die aus einer Gruppe von Adressregistern 919 zum Halten einer Vielzahl von Adressen zusammengesetzt ist. Der Datenbus-Schnittstellenteil ist aus einer Hardware aufgebaut, die aus temporären Registern 916 zum Heranholen und temporären Halten von Daten über den Datenbus 903 des A-Prozessors von dem Systemdatenbus und einem temporären Register 917 zum temporären Halten eines in dem A-Prozessor generierten Datums bevor das Datum an den Systemdatenbus ausgegeben wird. Der Buszyklus-Steuerteil der Bussteuerung 913 steuert den Buszyklus des A-Prozessors, den Busstatusausgang und den Eingang/Ausgang des Signals von dem externen Anschluß des A-Prozessors. Zeichen 915 bezeichnet eine Signalleitung zum bidirektionalen Übertragen jeweils der den Betrieb der Bussteuerung 913 anweisenden Information von der Befehlsdekodiereinheit 907 und der den internen Status der Bussteuerung 913 anzeigenden Information an die Befehlsdekodiereinheit 907. Zeichen 914 ist eine Signalleitung sowohl zum Senden der für die Adresserzeugung notwendigen Information und der Information zum Anweisen des Betriebs des Adressengenerators 911 von der Befehlsdekodiereinheit 907 an den Adressgenerator 911, als auch zum Übertragen der den internen Status des Adressgenerators 911 anzeigenden Information von dem Adressgenerator 911 an die Befehlsdekodiereinheit 907. Zeichen 918 bezeichnet eine Signalleitung zum Überführen des in der Befehlsausführungseinheit 910 generierten Datums an das in dem Datenbus-Schnittstellenteil der Bussteuerung 913 angeordnete temporäre Register 917 und von den in dem Datenbus-Schnittstellenteil der Bussteuerung 913 angeordneten temporären Registern 916 an den Befehlsausführungsteil 910. Zeichen 920 bezeichnet eine Busstatus-Signalleitung des A-Prozessors, und Zeichen 921 bezeichnet eine Signalleitung für Informationen, wie beispielsweise das an die Außenseite des A-Prozessors auszugebende Speicherlesesignal oder das I/O- Schreibsignal. Zeichen 922 bezeichnet eine Warteschlangenstatus-Signalleitung des A-Prozessors.
  • Der A-Prozessor ist aus der Befehlsvorabrufeinrichtung 905, der Befehlsdekodiereinheit 907, dem Adressengenerator 911, der Bussteuerung 913 und der Befehlsausführungseinheit 910 aufgebaut. Die Befehlsvorabrufeinrichtung 905 hat eine Hardware, die hauptsächlich aus einer Befehlswarteschlange mit FIFO-Struktur zum Halten eines vorabgerufenen Befehlscodes zusammengesetzt ist. Die Befehlsdekodiereinheit 907 hat eine Hardware, die aus einem Dekoder für einen aus der Befehlswarteschlange herangeholten Befehlscode von mehreren Bytes, einer Folge zum Verwalten des Betriebs der Befehlsdekodiereinheit, einem Programmzähler und der Dekodierte- Information-Warteschlange 908 mit FIFO-Struktur zum Halten der dekodierten Information eines Befehls zusammengesetzt. Der Adressgenerator 911 besitzt eine Hardware für einen Adressiervorgang. Die Bussteuerung 913 ist hauptsächlich aus dem Adressbus-Schnittstellenteil, dem Datenbus-Schnittstellenteil und dem Buszyklus-Steuerteil zusammengesetzt. Der Adressbus-Schnittstellenteil ist aus einer Gruppe von Registern 919, wie beispielsweise einem Vorabruf-Adressregister, einem Leseoperanden-Adressregister und einem Schreiboperanden-Adressregister, zusammengesetzt. Der Datenbus-Schnittstellenteil ist zusammengesetzt aus: den temporären Registern 916 zum temporären Halten des durch den Lesezugriff des A-Prozessors erhaltenen Datums an die Außenseite; und dem temporären Register 917 zum temporären Halten eines Datums für den Schreibzugriff des A-Prozessors an die Außenseite. Der Buszyklus-Steuerteil ist hauptsächlich aus einer Folgesteuereinrichtung zusammengesetzt. Die Befehlsausführungseinheit 910 ist aus einer Arithmetik- und Logikeinheit, einer Registergruppe, einer Schiebeeinrichtung und einer Steuerschaltung zum Steuern der Befehlsausführungen zusammengesetzt.
  • Die zum Beschreiben der vorliegenden Erfindung zu benutzende Hardware des A-Prozessors ist wie folgt festgelegt. Die Befehlswarteschlange der Befehlsvorabrufeinrichtung 905 hat eine Länge von 1 Byte und eine Kapazität von 8 Bytes im Maximum. Die Befehlsdekodiereinheit 907 holt einen Befehlscode von 1 Byte aus der Befehlswarteschlange in Antwort auf einen Takt. Die Dekodierte-Information-Warteschlange 908 hat eine Kapazität zum Halten einer dekodierten Information von zwei Befehlen. Zwei temporäre Register 916 der Bussteuerung 913 sind für ein Datenwort vorgesehen und jeweils mit RDR1 und RDR2 bezeichnet. Ein temporäres Register 917 ist für ein Datenwort vorgesehen und mit WDR bezeichnet. Ein Vorabrufen eines der Adressregister 919 ist für eine Adressinformation vorgesehen und mit PAR bezeichnet. Zwei Leseoperandenregister der Adressregister 919 sind für eine Adressinformation vorgesehen und jeweils mit RAR1 und RAR2 bezeichnet. Das Adressregister RAR1 entspricht dem temporären Register RDR1, und das Adressregister RAR2 entspricht dem temporären Register RDR2. Ein Schreiboperandenregister der Adressregister 919 ist für eine Adressinformation vorgesehen und mit WAR bezeichnet. Dieses Adressregister WAR entspricht dem temporären Register WDR.
  • Fig. 10 ist ein Blockdiagramm, das die Hauptkomponenten des Adressbus-Schnittstellenteils der Bussteuerung 913 des A- Prozessors wiedergibt. Die Signalleitung 912 ist identisch zu der aus Fig. 9 und überführt die durch den Adressgenerator 911 generierte Adresse. Bezugszeichen 1002, 1005, 1008 und 1011 bezeichnen eine Gruppe von Adressregistern, welche entsprechend der Arten der zu speichernden Adressen unterteilt sind in ein Vorabruf-Adressregister (PAR) 1002, eine Leseoperanden-Adressregister 1 (PAR1) 1005, ein Leseoperanden-Adressregister 2 (PAR2) 1008 und ein Schreiboperanden- Adressregister (WAR) 1011. Zeichen 1003, 1006, 1009 und 1012 bezeichnen die jeweiligen Haltesignale der Register 919 (das heißt, 1002, 1005, 1008 und 1011). Zeichen 1004, 1007, 1010 und 1013 bezeichnen jeweils die Ausgangssignalleitung der Register 1002, 1005, 1008 und 1011. Zeichen 1014 bezeichnet einen Multiplexer, welcher für die Signale auf den Signalleitungen 1004, 1007, 1010 und 1013 empfangsbereit gemacht ist, um in Antwort auf ein Auswahlsignal eines der vier Eingangssignale ohne Fehler auszuwählen. Das Ausgangssignal dieses Multiplexers 1014 wird dem Adressbus 902 zugeführt. Die vier Haltesignale 1003, 1006, 1009 und 1012 und das Auswahlsignal des Multiplexers 1014 werden in der Befehlsdekodiereinheit 907 generiert und über eine Signalleitung 915 überführt. Das Register 1002 besitzt eine automatische Adressfortschreibe- (oder -inkrementier) Funktion, die keine der anderen drei Register 1005, 1008 und 1011 aufweist. Falls die Adresse auf der Signalleitung 912 einmal in dem Register 1002 in Antwort auf das Haltesignal 1003 gehalten wird, wird das Signal auf der Ausgangssignalleitung 1004 des Registers 1002 als das Ausgangssignal des Multiplexers 1014 ausgewählt, so daß der Inhalt des Register 1002 jedesmal dann um eine konstante Größe inkrementiert wird, wenn die Bussteuerung 913 ihren Lesebuszyklus für den Befehlscode-Vorabrufspeicher abgeschlossen hat. Dank dieser automatischen Fortschreibefunktion des Registers 1002 ist die Befehlsdekodiereinheit 907 um ihre Last erleichtert, weil der Inhalt des Registers 1002 nicht in jedem Buszyklus für den Befehlscodevorabruffortgeschrieben werden muß, nachdem sie das Register 1002 einmal mit der Befehlscode-Vorabrufadresse besetzt hat, solange, bis sie nachfolgend in Antwort auf einen Verzweigungsbefehl das Register 1002 mit einer neuen Befehlscode-Vorabrufadresse besetzen muß.
  • Als nächstes werden Operationen des A-Prozessors zusammenfassend beschrieben.
  • Der in dem Speicher gehaltene Befehlscode wird durch die Befehlscode-Vorabruffunktion des A-Prozessors in den Prozessor geholt. Diese Vorabrufaktion teilen sich die Befehlsdekodiereinheit 907, der Adressgenerator 911, die Bussteuerung 913 und die Befehlsvorabrufeinrichtung 905. Bei dieser Vorabrufaktion wird, wenn die Vorabrufadresse in Antwort auf den Befehl aus der Befehlsdekodiereinheit 907 von dem Busgenerator 911 in das Vorabruf-Adressregister PAR der Bussteuerung 913 geschrieben wird, das Fortschreiben des Adressregisters PAR durch die Bussteuerung 913 solange durchgeführt, bis der Inhalt des Registers PAR nachfolgend in Antwort auf den Befehl der Befehlsdekodiereinheit 907 zurückgeschrieben wird. Die Bussteuerung 913 führt die Vorabrufaktion aus, wenn der den A-Prozessor und das System koppelnde Systemadressbus und Systemdatenbus leer sind. Die Bussteuerung 913 gibt nicht nur den Inhalt des Adressregisters PAR an den Systemadressbus aus, sondern zudem auch den Code bzw. den Befehlscodeabruf an ein Busstatussignal BST2-0, um dem Speicher ein MMIO-Signal zugänglich zu machen. Die Bussteuerung 913 holt den Inhalt (das heißt, den Befehlscode) der Adresse in den Speicher, der der an den Systemadressbus ausgegebenen Vorabrufadresse entspricht und überführt ihn an die Befehlswarteschlange der Befehlsvorabrufeinrichtung 903, um den Inhalt des Registers PAR fortzuschreiben. Dann hält die Befehlsvorabrufeinrichtung 905 die von der Bussteuerung 913 überführten Befehlscodes sequentiell im Schwanz der Befehlswarteschlange. Eine Hauptfunktion der Befehlsvorabrufeinrichtung 905 besteht darin, die Aktion der Befehlswarteschlange und das Ausgangssignal eines Warteschlangenstatus QST3-0 zu steuern. Die Hauptfunktion der Bussteuerung 913 ist der Speicherzugriff, der I/O- Zugriff und die Steuerung des Eingang/Ausgang der meisten der Steuersignale. Die Hauptfunktion des Adressgenerators 911 ist die Berechnung von Adressen für verschiedene Adressiervorgänge. Die Hauptfunktion der Befehlsdekodiereinheit 907 besteht darin, den Befehlscode zu dekodieren und die Aktionen der einzelnen Teile des A-Prozessors zu steuern. Die Hauptfunktion der Befehlsausführungseinheit 910 besteht darin, die Daten wirklich zu verarbeiten, wie beispielsweise die arithmetischen und logischen Berechnungen.
  • Die Status des A-Prozessors werden im folgenden beschrieben. Der A-Prozessor hat zwei Arten von Warteschlangen: die Warteschlange der Befehlsvorabrufeinrichtung 905 und die Dekodierte-Information-Warteschlange der Befehlsdekodiereinheit 907. Um die Status dieser zwei Arten von Warteschlangen zu anzuzeigen, gibt der A-Prozessor das Warteschlangenstatussignal QST3-0 aus 4 Bits nach außen ab. Das QST3-0-Signal nimmt für eine Taktdauer den Hochpegel an, wenn die dekodierte Information eines Befehls am Kopf der Dekodierte-Information-Warteschlange in die Befehlsausführungseinheit 910 herangeholt ist, und zeigt an, daß durch die Befehlsausführungseinheit 910 damit begonnen wird, einen neuen Befehl auszuführen. Ein Signal QST2-0 zeigt die Status der zwei Arten von Warteschlangen des A-Prozessors, wie in Tabelle 4 kodiert. Die Warteschlangenstatussignale werden in der Befehlsdekodiereinheit 907 dekodiert. Die Busstatus sind so durch ein Busstatussignal BST2-0, das den Speicherzugriff oder den I/O-Zugriff anzeigende Signal MMIO und ein den Lesezugriff oder den Schreibzugriff anzeigendes Signal RDWR kodiert, wie in Tabelle 5 aufgelistet. Das MMIO-Signal steht für den Speicherzugriff, wenn es sich auf dem Hochpegel befindet, für den I/O-Zugriff, wenn es sich auf dem Niedrigpegel befindet, und für keinen Zugriff, wenn es sich in dem Hochimpedanzzustand befindet. Das RDWR-Signal steht für den Lesezugriff, wenn es sich auf dem Hochpegel befindet, für den Schreibzugriff, wenn es sich auf dem Niedrigpegel befindet und für keinen Zugriff, wenn es sich in dem Hochimpedanzzustand befindet. Das Busstatussignal BST2-0, das MMIO-Signal und das RDWR-Signal werden in der Bussteuerung 913 generiert.
  • Die Befehlsdekodiereinheit 907 holt die Befehlscodes eines Befehls byteweise, sequentiell vom Befehlscode am Kopf der Befehlswarteschlange aus, und hält diese in dem Befehlscoderegister. Der Befehlsdekoder empfängt das Ausgangssignal des Befehlscoderegisters und dekodiert den Befehlscode. Als Ergebnis des Dekodiervorganges an der Befehlsdekodiereinheit 907 werden generiert: eine Information zum Anweisen der Aktion der Befehlsausführungseinheit 910, eine für die Aktion der Befehlsausführungseinheit 910 notwendige Information, eine Information zum Anweisen der Aktion des Adressgenerators 911, eine für die Aktion des Adressgenerators 911 notwendige Information, eine Information zum Anweisen der Aktion der Bussteuerung 913 und eine für die Aktion der Bussteuerung 913 notwendige Information. Die Information, die die Befehlsausführungseinheit 910 betrifft, wird in der Dekodierte-Information-Warteschlange 908 gehalten. Die den Adressgenerator 911 und die Bussteuerung 913 betreffenden Informationen werden in der Befehlsdekodiereinheit 907 nicht in besonderer Weise gehalten. Daraus folgt, daß sich, wenn der Inhalt des Befehlscoderegisters fortgeschrieben wird, die den Adressgenerator 911 und die Bussteuerung 913 betreffenden Informationen ändern. Die von der Befehlsdekodiereinheit 907 übersandten und den Adressgenerator 911 und die Bussteuerung 913 betreffenden Informationen werden jeweils in dem Adressgenerator 911 und der Bussteuerung 913 gehalten. Falls jedoch der Adressgenerator 911 oder die Bussteuerung 913 nicht in der Lage sind, die von der Befehlsdekodiereinheit 907 durch ihren internen Status übersandte Information zu empfangen, wird eine die Unfähigkeit zum Empfangen der gerade vorliegenden Information anzeigende Information (das heißt, ein In-Betrieb-Signal) an die Befehlsdekodiereinheit 907 zurückgesandt. Die Befehlsdekodiereinheit 907 beendet ihre Dekodieraktion des Befehlscodes eines Befehls, indem sie die Information, die die Aktion der Befehlsausführungseinheit 910 betrifft, in der Dekodierte-Information-Warteschlange 908 hält. Falls die Dekodierte-Information-Warteschlange 908 besetzt ist, und falls das Busysignal von dem Adressgenerator 911 oder der Bussteuerung 913 empfangen wird, unterbricht die Befehlsdekodiereinheit 907 ihre Dekodieraktion. Auch in diesem Fall wird die Befehlsvorabrufeinrichtung 905 gesteuert.
  • Die Befehlsdekodiereinheit 907 überwacht nicht nur die Verstopfung der Befehlswarteschlange der Befehlsvorabrufeinrichtung 905, sondern steuert zudem die Vorabrufanforderung des Befehlscodes. Falls zum Beispiel die Befehlswarteschlange geleert ist, nämlich in einem Fall, in welchem als Ergebnis eines Dekodierens des Befehlscodes eines Befehls von einigen Bytes, der aus der Befehlswarteschlange geholt wurde, an der Befehlsdekodiereinheit 907 ein unbedingter Verzweigungsbefehl erkannt wird, befiehlt diese Einheit 907 der Befehlsvorabrufeinrichtung 905, den gesamten Inhalt der Befehlswarteschlange sofort zu entleeren; befiehlt dem Adressgenerator 911, eine an die Bussteuerung 913 abzuzweigende Adresse zu generieren und zu überführen; und befiehlt der Bussteuerung 913, den Inhalt des vorabrufenden Adressregisters PAR durch eine über den Adressgenerator 911 überführte, neue Vorabruf-Adressinformation umzuschreiben und die Vorabrufaktion von einer neuen, abgezweigten Adresse zu starten. Der Vorabrufaktion von der abgezweigten Adresse unmittelbar nach dem Dekodieren des Verzweigungsbefehls wird die höchste Dringlichkeitsstufe aller Ereignisse in dem A-Prozessor, die die Benutzung des externen Pusses benötigen, gegeben. Insbesondere werden die Vorabrufaktionen von den abgezweigten Adressen unmittelbar nach dem Dekodieren des abgezweigten Befehles solange sequentiell fortgesetzt, bis ein Befehlscode mit einer vorbestimmten Anzahl von Bytes in der Befehlswarteschlange gehalten wird, und der für die Befehlsausführung notwendige, externe Bus für den Speicherzugriff kann während der Dauer der Vorabrufaktion nicht benutzt werden. In Übereinstimmung mit den Befehlen von der soweit beschriebenen Befehlsdekodiereinheit 907 wird die Vorabrufaktion des Befehlscodes durch den A-Prozessor weitergehen.
  • Die Sequenzen der Befehlsdekodiereinheit 907 und der Befehlsausführungseinheit 901 in Antwort auf eine Folge von Befehlen sind vollständig identisch. Als einfaches Beispiel sei der Fall betrachtet, in welchem andere Befehle (1) und (2) als die Verzweigungsbefehle in der angegebenen Reihenfolge in Bereichen eines Speichers mit fortlaufenden Adressen gespeichert sind. Durch die Vorabruffunktion des A-Prozessors werden die Befehlscodes mit jeweils mehreren Bytes in der Reihenfolge der Befehle (1) und (2) in die Befehlswarteschlange der Befehlsvorabrufeinrichtung 905 geholt, und das Dekodieren des Befehls (2) wird solange verschoben, bis die Befehlsdekodiereinheit 907 das Dekodieren des Befehls (1) beendet, um die notwendige Dekodierinformation in der Dekodierte-Information-Warteschlange 908 zu speichern. Als Ergebnis holt die Befehlswarteschlange 910 auch die dekodierte Information des Befehls (2) an den Kopf der Dekodierte-Information-Warteschlange 908, um den Befehl (2) auszuführen, nachdem sie die unter Verwendung der aus der Dekodierte-Information-Warteschlange 908 herangeholten dekodierten Information des Befehls (1) die Ausführung des Befehls (1) beendet hat.
  • Falls die in der Befehlsdekodiereinheit 907 dekodierte Information einmal in dem Speicher gehalten wird oder den Leseoperanden für den I/O anfordert, wird der Leseoperand vordringlich eingelesen. Der Leseoperand wird zwar vor dem Zeitpunkt, an welchem der den Leseoperanden anfordernde Befehl in der Befehlsausführungseinheit 910 ausgeführt wird, vorausschauend eingelesen, dieses vorausschauende Lesen kann aber aufgrund der Status und Zustände innerhalb und außerhalb des A-Prozessors nicht immer vorher durchgeführt werden. Das vorausschauende Lesen des Lesoperanden wird im folgenden beschrieben. Wenn der Befehlscode des den Leseoperanden anfordernden Befehls in dem Befehlscoderegister der Befehlsdekodiereinheit 907 gehalten wird und in den Dekoder eingegeben und durch diesen dekodiert wird, wird die vorausschauende Leseaktion des Leseoperanden durch die Befehlsdekodiereinheit 907 als die Information bezeichnet, die die Aktionen des Adressgenerators 911 und der Bussteuerung 913 betrifft. Bei den Aktionen für das vorausschauende Lesen des Leseoperanden, der dem Adressgenerator 911 durch die Befehlsdekodiereinheit 907 zugewiesen ist, wird die für die Adresserzeugung für den Leseoperanden notwendige Information von der Befehlsdekodiereinheit 907 an den Adressgenerator 911 als vorausschauend ermittelte Leseadresse des Leseoperanden ausgegeben, und diese vorausschauend generierte Leseadresse wird an die Bussteuerung 913 überführt. Bei den Aktionen für das vorausschauende Lesen des der Bussteuerung 913 durch die Befehlsdekodiereinheit 907 zugewiesenen Leseoperanden wird die über den Adressgenerator 911 an die Bussteuerung 913 überführte vorausschauend ermittelte Leseadresse des Leseoperanden in einem der zwei Leseoperanden-Adressregister PAR1 und PAR2 in dem Adressbus- Schnittstellenteil der Bussteuerung 913 durch Bezeichnen des speziellen Registers gehalten, und der Lesebuszyklus wird gestartet, um den Leseoperanden entsprechend dem Leseoperanden-Adressregister in das Leseoperanden-Datumregister einzulesen und darin zu halten. Bei den Aktionen für das vorausschauende Lesen des der Bussteuerung 913 durch die Befehlsdekodiereinheit 907 zugewiesenen Leseoperanden wird keine Zeitsteuerung angegeben. Die Bussteuerung 913 startet, wenn sie die Information für das vorstehend erwähnte vorausschauende Lesen des Leseoperanden von der Befehlsdekodiereinheit 907 erhält, den Lesebuszyklus für das vorausschauende Lesen des Leseoperanden in Übereinstimmung mit den Status und Zuständen des äußeren Systemdatenbusses, dem Systemdatenbus und dem Systemadressbus des A-Prozessors, um den Leseoperanden in dem bezeichneten temporären Leseregister zu halten. Die Startzeit des Lesebuszyklus für das vorausschauende Lesen des Leseoperanden wird durch die Befehlsausführungseinheit 910 und die Befehlsdekodiereinheit 907 nicht gesteuert, die Bussteuerung 913 wird aber unabhängig von den restlichen Einheiten gesteuert.
  • Das vorausschauende Lesen des Leseoperanden wird in der Dekodierstufe der Befehlsdekodiereinheit 907 des den Leseoperanden anfordernden Befehlscodes erfaßt. Die Befehlsdekodiereinheit 907 weist dem Adressgenerator 911 und der Bussteuerung 913 die vorstehend erwähnten Aktionen zu und stellt das Leseoperandenregister RDR1 bzw. RDR2 dafür zur Verfügung, daß dieses durch die Befehlsausführungseinheit 910 einen Lesezugriff bekommt, als eine Information zur Bezeichnung der Aktion der Befehlsausführungseinheit 910 in der Dekodierte-Information-Warteschlange 908, nachdem die Bussteuerung 913 den Leseoperanden gelesen hat. Falls zum Beispiel der in der Befehlsdekodiereinheit 907 dekodierte Befehl ein Befehl ist, der zwei Leseoperanden in dem Speicher benötigt, wird die Bussteuerung 913 dazu angewiesen, die Adresse des ersten Operanden in dem Register RAR2 und entsprechend das Datum des ersten Operanden in dem Register RDR2 sowie die Adresse des zweiten Operanden in dem Register RAR1 und entsprechend das Datum des zweiten Operanden in dem Register RDR1 zu halten. In diesem Fall wird die Information in der Dekodierte-Information-Warteschlange 908 so gehalten, daß das Dekodieren des Befehls, daß die Befehlsausführungseinheit 910 den Befehl unter Verwendung des Inhalts des Registers RDR2 für das erste Operandendatum und des Inhalts des Registers RDR1 für das zweite Operandendatum ausführen darf, beendet wird. Falls beide Leseoperanden in dem Speicher vorausschauend von dem Speicher an die Register RDR1 und RDR2 überführt wurden, wenn die dekodierte Information des Befehls vom Kopf der Dekodierte-Information-Warteschlange 908 herangeholt und durch die Befehlsausführungseinheit 910 ausgeführt werden soll, kann die Einheit 910 die Daten der zwei in dem Speicher intrinsisch vorliegenden Operanden nur durch Zugriffe auf die Register in dem A-Prozessor erhalten. Obwohl dieser Speicherzugriff mehrere Takte benötigt, erscheint die Befehlsausführungseinheit 910 so, als hätte sie mit einem Takt auf einen Leseoperanden zugegriffen, falls die Daten der Leseoperanden in dem Speicher vorausschauend an die Register RDR1 und RDR2 (in diesem Fall) in der Bussteuerung 913 in dem A-Prozessor, vor dem Moment einer Anforderung der Befehlsausführungseinheit 910, überführt werden könnten, so daß die Befehlsausführungseffektivität und, noch besser, der Durchsatz des A-Prozessors verbessert werden kann.
  • Falls jedoch der externe Systemdatenbus und Systemadressbus des A-Prozessors durch einen anderen Busmaster besetzt sind, wird der Start des Lesebuszyklus für das vorausschauende Lesen des Leseoperanden verschoben, mindestens bis die Besetzung des Systembusses von dem gegenwärtig effektiven Busmaster an den A-Prozessor zurückgegeben wird, auch wenn die Bussteuerung 913 die das vorausschauende Lesen des Leseoperanden betreffende Information empfängt, die von der Befehlsdekodiereinheit 907 während der Dekodierzeitspanne des Befehlscodes des den Leseoperanden anfordernden Befehls an der Befehlsdekodiereinheit 907 zugeführt wird. Auch wenn das vorausschauende Lesen des Leseoperanden auf diese Weise verschoben wird, führt die Befehlsausführungseinheit 910 den tatsächlich den Leseoperanden anfordernden Befehl aus, ungeachtet dessen, ob der Leseoperand vorausschauend herausgelesen sein könnte oder nicht, um den Inhalt des Leseoperandenregisters der durch die Befehlsdekodiereinheit 907 bezeichneten Bussteuerung 913 herauszulesen. Wenn der Leseoperand nicht vorausschauend in das durch die Befehlsdekodiereinheit 907 bezeichnete Leseoperandenregister eingelesen ist, unterbricht die Befehlsausführungseinheit 910 ihre Aktion und wartet bis die Bussteuerung 913 den Lesebuszyklus startet, um das Datum von dem Leseoperanden zu lesen und dieses in dem durch die Befehlsdekodiereinheit 907 bezeichneten Leseoperandenregister zu halten, so daß der Befehlsausführungseinheit 910 erlaubt wird, auf das Leseoperandenregister zuzugreifen. Wenn die Aktion der Befehlsausführungseinheit 910 unterbrochen ist, wird die Dekodierte-Information-Warteschlange 908 ebenfalls angehalten, so daß die Dekodieraktion an der Befehlsdekodiereinheit 907 unterbrochen ist, wodurch alle Hauptoperationen des A-Prozessors angehalten sind. Wenn die Bussteuerung 913 den Lesebuszyklus startet, um den Leseoperanden in dem durch die Befehlsdekodiereinheit 907 bezeichneten temporären Leseregister zu halten, wird die Aktion der Befehlsausführungseinheit 910 zusammen mit der Dekodieraktion der Befehlsdekodiereinheit 907 wieder in Betrieb genommen, wodurch die Operationen des A-Prozessors wieder in Betrieb genommen sind. In diesem Beispiel wird gleichzeitig damit, daß der den Leseoperanden in dem Speicher oder dem I/O anfordernde Befehl in der Befehlsdekodiereinheit 907 dekodiert wird, die vorausschauende Leseaktion des Leseoperanden von der Befehlsdekodiereinheit 907 dem Adressgenerator 911 und der Bussteuerung 913 zugewiesen, um die dekodierte Information des Befehls in der Dekodierte-Information-Warteschlange 908 zu halten. Danach wird das vorausschauende Lesen des Leseoperanden solange nicht durchgeführt, bis die Befehlsverarbeitung an der Befehlsausführungseinheit 910 fortschreitet, um den Befehl vom Kopf der Dekodierte-Information-Warteschlange 908 auszuführen. In diesem Fall ist die erreichbare Ausführungseffektivität ähnlich der des vorstehend erwähnten Prozessors.
  • Die Reihenfolge einer in der Befehlsdekodiereinheit 907 zu dekodierenden Folge von Befehlen und die Reihenfolge von im voraus in die Bussteuerung 913 einzulesender Leseoperanden sind völlig identisch. Zum Beispiel sei der Fall betrachtet, in welchem zwei Befehle (3) und (4), die beide Leseoperanden in einem Speicher anfordern, in der genannten Reihenfolge in einer Befehlswarteschlange gehalten werden. Die Befehlsdekodiereinheit 907 holt zuerst den Befehlscode (3) aus mehreren Bytes des Befehls (3) aus der Befehlswarteschlange, um diesen zu dekodieren, und weist der Bussteuerung 913 einen Speicherlesezugriff für das vorausschauende Lesen des Leseoperanden (3) des Befehls zu, um die den Befehl (3) betreffende dekodierte Information in der Dekodierte-Information-Warteschlange 908 zu halten. Als nächstes holt die Befehlsdekodiereinheit 907 den Befehlscode (4) aus mehreren Bytes des Befehls (4) heran, um diesen zu dekodieren, und weist der Bussteuerung 913 den Speicherlesezugriff für das vorausschauende Lesen des Leseoperanden (4) des Befehls (4) zu. Als Ergebnis erhält die Bussteuerung 913 die Speicherlesezugriff-Bezeichnung für das vorausschauende Lesen des Leseoperanden (3) und dann die Speicherlesezugriff-Bezeichnung für das vorausschauende Lesen des Leseoperanden (4) des Befehls (4) von der Befehlsdekodiereinheit 907, um die Leseoperanden vorausschauend in der Reihenfolge ihrer Ankünfte zu lesen, so daß die Reihenfolgen des Ablaufs der Folgebefehle und des vorausschauenden Lesens der Leseoperanden an der Bussteuerung 913 identisch sind.
  • Falls der in der Befehlsdekodiereinheit 907 dekodierte Befehl einen Schreiboperanden in dem Speicher oder I/O anfordert, wird der Schreiboperand nachgeschrieben. Dieses Nachschreiben des Schreiboperanden wird kurz beschrieben, da der Schreiboperand mit dem Leseoperanden äquivalent ist. Wenn der Befehlscode eines den Schreiboperanden anfordernden Befehls in dem Befehlscoderegister der Befehlsdekodiereinheit 907 so gehalten wird, daß er in den Dekoder eingegeben und durch diesen dekodiert wird, wird das Nachschreiben des Schreiboperanden durch die Befehlsdekodiereinheit 907 als die Information bezeichnet, die die Aktionen des Adressgenerators 911 und der Bussteuerung 913 betrifft. Bei den Aktionen des Nachschreibens des Schreiboperanden, die dem Adressgenerator 911 durch die Befehlsdekodiereinheit 907 zugewiesen sind, wird der Adressgenerator 911 von der Befehlsdekodiereinheit 907 mit der zum Erzeugen der Adresse des Schreiboperanden notwendigen Information versehen, und die auf diese Weise erzeugte Adresse zum Nachschreiben des Schreiboperanden wird an die Bussteuerung 913 überführt. Bei den Aktionen zum Nachschreiben des Schreiboperanden, die der Bussteuerung 913 durch die Befehlsdekodiereinheit 907 zugewiesen sind, wird die Schreiboperand-Nachschreibeadresse, die über den Adressgenerator 911 an die Bussteuerung 913 überführt wurde, in dem Schreiboperanden-Adressregister WAR in dem Adressbus- Schnittstellenteil der Bussteuerung 913 gehalten, und der den Schreiboperanden anfordernde Befehl wird in der Befehlsausführungseinheit 907 ausgeführt. Nachdem das Ausführungsergebnis dieses Befehls in dem temporären Schreibregister WDR 917 gehalten ist, startet die Befehlsausführungseinheit 907 den Schreibbuszyklus, um den Inhalt des Registers WDR an die in dem Adressregister WAR gehaltene Adresse auszuschreiben. Bei den Aktionen zum Nachschreiben des Schreiboperanden, die der Bussteuerung 913 durch die Befehlsdekodiereinheit 907 zugewiesen sind, ist der Zeitpunkt zum Starten des Schreibbuszyklus nicht bezeichnet. In der Bussteuerung 913 wird die Information zum Nachschreiben des Schreiboperanden aus der Befehlsdekodiereinheit 907 erhalten, und das Befehlsausführungsergebnis von der Befehlsausführungseinheit 910 wird in dem temporären Register WDR gehalten. Danach wird der Schreiboperand ausgeschrieben, wenn der Speicherzugriff oder der I/O-Zugriff möglich ist, abhängig von den Status und Zuständen des externen Systemdatenbusses und Systemadressbusses des A-Prozessors. Die Start zeit des Schreibbuszyklus zum Nachschreiben des Schreiboperanden wird nicht durch die Befehlseinheit 910, sondern durch die Bussteuerung 913 unabhängig von den restlichen Einheiten gesteuert.
  • Darüber hinaus ist genauso, wie die vorausschauende Lesefolge der Leseoperanden identisch mit dem Ablauf der Folgebefehle ist, auch die Nachschreibefolge der Schreiboperanden identisch mit dem Ablauf der Folgebefehle.
  • In dem A-Prozessor, der die hochgradige Pipelinestruktur annimmt, wie vorstehend beschrieben wurde, werden das vorausschauende Lesen der Leseoperanden und das Nachschreiben der Schreiboperanden durch die temporären Leseregister, temporären Schreibregister und die Steuerungshardware der Bussteuerung 913 ausgeführt, und die Befehlsausführungseinheit 910 und die Bussteuerung 913, die unterschiedliche Befehlsverarbeitungsgeschwindigkeiten haben, verarbeiten die Befehle problemlos zusammen und verbessern die Befehlsverarbeitungseffektivität. Wie vorstehend beschrieben wurde, sind darüber hinaus der Ablauf der Folgebefehle und die Verarbeitungsordnung der Befehle an der Befehlsausführungseinheit 910 identisch, und die Reihenfolge des vorausschauenden Lesens der Leseoperanden und die Reihenfolge des Nachschreibens der Schreiboperanden sind ebenfalls identisch zu dem Ablauf der Folgebefehle. Jedoch wird die Bussteuerung 913 für den Speicherzugriff und I/O-Zugriff für das vorausschauende Lesen der Leseoperanden und für das Nachschreiben der Schreiboperanden durch die internen und externen Status des A-Prozessors beschränkt, so daß die Zeitsteuerung für den Speicherzugriff oder I/O-Zugriff der Bussteuerung 913 nicht durch die Befehlsdekodiereinheit 907 oder die Befehlsausführungseinheit 910 in dem A-Prozessor gesteuert wird, sondern unabhängig davon ist. Daraus folgt ganz offensichtlich, daß der Lesebuszyklus für das vorausschauende Lesen der Leseoperanden während einer Zeitspanne durchgeführt wird, nachdem der Befehlscode des den Leseoperanden anfordernden Befehls in der Befehlsdekodiereinheit 907 dekodiert wurde und bevor die Ausführung des Befehls beendet ist, und daß der Schreibbuszyklus für das Nachschreiben der Schreiboperanden durchgeführt wird, nachdem die Ausführung des den Schreiboperanden anfordernden Befehls beendet wurde. Es ist jedoch unmöglich, vorherzusagen, wann der Buszyklus zum vorausschauenden Lesen eines bestimmten Leseoperanden oder zum späteren Schreiben eines bestimmten Schreiboperanden gestartet wird.
  • Für die folgende Beschreibung werden zwei Befehle der Assemblersprache des A-Prozessors in Verbindung mit ihren Mnemoniks und Operationen definiert.
  • Buchstaben MOV d,s bezeichnen einen Überführungsbefehl, in welchem der Buchstabe d einen Zieloperanden bezeichnet, während der Buchstabe s einen Quelloperanden bezeichnet, so daß der Inhalt des mit s bezeichneten Operanden an den mit d bezeichneten Operanden überführt wird. Der Zieloperand d und der Quelloperand s können entweder Registerquellen in dem A-Prozessor oder in dem Speicher- oder I/O-Anschluß sein. Andererseits können der Zieloperand d und Quelloperand s unter Verwendung eines Registers entweder direkt oder indirekt adressiert werden. Daraus folgt, daß, falls einer Adresse in dem Speicher der Quelloperand s zugewiesen ist, der Überführungsbefehl MOV d,s ein Befehl ist, der den Leseoperanden im Speicher anfordert. Falls andererseits einer Adresse im Speicher der Zieloperand d zugewiesen ist, ist der Befehl MOV d,s ein Befehl, der den Schreiboperanden im Speicher anfordert.
  • Die Buchstaben JUMP adr bezeichnen einen unbedingten Verzweigungsbefehl, in welchem die Buchstaben adr die Verzweigungsadresse des Verzweigungsbefehls bezeichnen. Falls der Befehlscode des Verzweigungsbefehls JUMP adr durch die Befehlsdekodiereinheit 907 in dem A-Prozessor dekodiert wird, werden alle Inhalte der Befehlswarteschlange der Befehlsvorabrufeinrichtung 905 in Antwort auf die Anweisung der Befehlsdekodiereinheit 907 gelöscht, und der Wert, der der Adresse adr entspricht, wird in dem Vorabruf-Adressregister PAR der Bussteuerung 913 gehalten, so daß diese Steuerung 913 einen neuen Befehlscode von der durch den Inhalt des Registers PAR angezeigten Speicheradresse vorabruft.
  • Fig. 11 stellt einen Abschnitt des Programms dar, welches unter Verwendung des Überführungsbefehls MOV d,s und des unbedingten Verzweigungsbefehls JUMP adr geschrieben ist. Die Buchstaben L1, L2, ..., und L10 bezeichnen Zeilennummern und die Operanden M10, M11, M21, ..., M100 und M101 sind alle in dem Speicher. Andererseits sind Operanden R2, R3, R6 und R7 den Registern in der Befehlsausführungseinheit 910 zugewiesen. Die Operanden M10, M11, ..., M100 und M101 können direkt oder indirekt adressiert werden.
  • Tabelle 3 führt Übereinstimmungen zwischen den in Fig. 11 benutzten Befehlsmnemoniks und -codes auf. Tabelle 3 Befehl Mnemoniks Codes
  • In Tabelle 3 haben z. B. die Befehle der Mnemoniks MOV M10 und M11 Befehlscodes OPCD10 und OPCD11. Hier haben diese Befehlscodes OPCD10 und OPCD11 binäre Muster mit einer Länge von 1 Byte. Für die Überführungsbefehle MOV d,s und die unbedingten Verzweigungsbefehle JUMP adr werden Befehlscodes von 2 Bytes angenommen.
  • Fig. 12 ist ein Diagramm, das den Ort in dem Speicher wiedergibt, wenn die durch Zusammensetzen des Programms aus Fig. 11 erhaltenen Objektcodes in dem Speicher gespeichert sind. Die in Fig. 12 erscheinenden Buchstaben ADR10, ADR11, ..., ADR100 und ADR101 bezeichnen die Adressen des Speichers. Dieser Speicher hat eine Länge von 1 Byte. Es ergibt sich z. B., daß der Befehlscode OPCD10 in einem Bereich mit der Adresse ADR10 des Speichers gehalten wird. Die Adressen ADR10 bis ADR51 und die Adressen ADR60 und weiter sind fortlaufend, die Adressen ADR51 und ADR60 sind aber nicht immer fortlaufend.
  • Fig. 13 ist ein Zeitdiagramm, das die Zusammenfassung der Operationszeitverläufe der einzelnen Einheiten innerhalb des A-Prozessors wiedergibt. Die Einzelheiten der zeitlichen Beziehungen zwischen der Gateverzögerung, den Adressen und Daten sind aus Fig. 13 weggelassen. In Fig. 13 sind dargestellt: Zeitpunkte t1 bis t17, an welchen Aktionen an einzelnen Teilen innerhalb des A-Prozessors durchgeführt werden; die Reihenfolge des Dekodierens der Befehle in der Befehlsdekodiereinheit 907 und die Ausgangssignale des Warteschlangenstatus 922, wie durch die abgekürzten Symbole aus Tabelle 4 angezeigt; die Änderungen in den Inhalten der zwei Leseoperanden-Adressregistern RAR1 und RAR2 und des Schreiboperanden-Adressregisters WAR in dem Adress-Schnittstellenteil der Bussteuerung 913; und Informationen auf dem Systemadressbus und dem Systemdatenbus außerhalb des A-Prozessors; und die Änderungen in den Inhalten der zwei Leseoperanden-Datenregister RDR1 und RDR2 und des Schreiboperanden-Datenregister WDR des Datenbus-Schnittstellenteils innerhalb des A-Prozessors. Zu den Warteschlangenstatus sind jedoch nur die Symbole F und E1 aus Tabelle 4 dargestellt, während die anderen Symbole weggelassen sind. Tabelle 4 Status einer Befehlswarteschlange Status einer Dekodierte-Information-Warteschlange Keine Fluktuation einer Befehlswarteschlange und Dekodierte-Information-Warteschlange Kopf einer Befehlswarteschlange an erster Stelle Byte eines Befehlscodes Keine Fluktuation einer dekodierten Information Kopf einer Befehlswarteschlange an zweiter Stelle und nach einem Befehlscode Inhalt einer Befehlswarteschlange geleert Inhalt einer Dekodierte-Information-Warteschlange geleert Symbol
  • In den Spalten der Befehlsdekodiereinheit 907 und der Befehlsausführungseinheit 910 sind I1, I2, I3, JUMP, I6 und I7 Symbole zum Unterscheiden der in Fig. 11 dargestellten Befehle. Zum Beispiel steht das Symbol I1 für einen Überführungsbefehl der Mnemoniks MOV M10 und M11.
  • In der Befehlsdekodiereinheit 907 wird zm Zeitpunkt t1, (welcher ebenso mit t1, t2, ..., usw. abgekürzt wird), der Befehlscode aus 2 Bytes des Befehls I1 (welcher ebenso mit I1, I2, ..., usw. abgekürzt wird) sequentiell aus dem Kopf der Befehlswarteschlange herangeholt und wird dekodiert. Da der Befehl I1 den Leseoperanden M11 im Speicher anfordert, weist die Befehlsdekodiereinheit 907 den Adressgenerator 911 an, die Adresse RA1 des Leseoperanden M11 zu generieren und an die Bussteuerung 913 zu überführen, und weist die Eussteuerung 913 an, die von dem Adressgenrator 911 überführte Adresse RA1 in dem Lieseoperanden-Adressregister RAR1 des Adressbus-Schnittstellenteils zu halten und das in dem bereich der Adresse RA1 gespeicherte Datum vorausschauend in den Speicher zu lesen und dieses in dem Leseoperanden- Datenregister RDR1 des Datenbus-Schnittstellenteils zu halten. Da andererseits der Befehl I1 den Schreiboperanden M10 in dem Speicher anfordert, weist die Befehlsdekodiereinheit 907 den Adressgenerator 911 an, eine Adresse WA1 des Schreiboperanden M10 zu generieren und an die Bussteuerung 913 zu überführen, und weist die Bussteuerung 913 an, die von dem Adressgenerator 911 überführte Adresse in dem Schreiboperanden-Adressregister WAR des Adressbus-Schnittstellenteils zu halten und das Datum, welches in das Schreiboperanden-Datenregister WDR des Datenbus-Schnittstellenteils der Bussteuerung 913 während der Ausführung des Befehls I1 durch die Befehlsausführungseinheit 910 überführt und in diesem gehalten wird, nach der Ausführung des Befehls I1 durch die Befehlsausführungseinheit 910 in dem Bereich der Adresse WA1 im Speicher zu halten. Das Dekodieren des Befehls I1 wird durch Halten der für das Verarbeiten des Befehls I1 an der Befehlsausführungseinheit 910 notwendigen Information in dem Ende der Dekodierte-Information-Warteschlange 908 beendet. Von dem Zeitpunkt t2 an und danach wird ein Befehlscode aus 2 Bytes des Befehls I2 aus dem Kopf der Befehlswarteschlange herangeholt und wird dekodiert. Da der Befehl I2 den Leseoperanden M21 im Speicher anfordert, wie der Befehl I1, wird die Adresse RA2 des Leseoperanden M21 in dem Adressgenerator 911 generiert und in dem Adressregister RAR2 der Bussteuerung 913 gehalten, und es erfolgt eine Anweisung, daß das Datum vorausschauend aus dem bereich der Adresse RA2 im Speicher gelesen wird. Das Dekodieren des Befehls I2 endet am Zeitpunkt t6. Zum Zeitpunkt t6 und danach wird der Befehl I3 dekodiert. Zum Zeitpunkt t6 und danach wird insbesondere der Befehlscode aus 2 Bytes des Befehls I3 aus dem Kopf der Befehlswarteschlange herangeholt, um dessen Dekodierung zu starten. Da der Befehl ebenfalls den Leseoperanden M31 im Speicher anfordert, wie die Befehle I1 und I2, wird die Adresse RA3 des Leseoperanden M31 in dem Adressgenerator 911 generiert und wird in demjenigen der zwei Leseoperanden-Adressregister in der Bussteuerung 913 gehalten, welches bereits dem vorausschauenden Lesen des Leseoperanden unterzogen wurde, so daß dessen Inhalt nicht mehr benötigt wird. In dem Fall dieses Beispiels wird die Adresse RA3 in dem Adressregister RAR1 gehalten. Wie nachfolgend beschrieben wird, benutzt die Bussteuerung 913 zum Zeitpunkt t3 die Leseoperandenadresse RA1 des Befehls I1, welche in dem Register RAR1 an t1 gehalten wurde, um den Speicherlesebuszyklus für das vorausschauende Lesen des Leseoperanden des Befehls I1 zu starten und das Datum RD1 der Adresse RA1 des Speichers in dem Register RDR1 zu halten. An t6 ist deshalb der Inhalt RA1 des Register RAR1 nicht mehr notwendig. Genauso wird an t5 der Inhalt RA2 des Registers RAR2 dazu benutzt, den Speicherlesebuszyklus für das vorausschauende Lesen des Leseoperanden des Befehls I2 zu starten, so daß das Datum RD2 der Adresse RA2 im Speicher in dem Register RDR2 gehalten wird. Als Ergebnis wird an t6 der Inhalt RA2 des Registers RAR2 nicht mehr benötigt, und das Register RAT2 selbst ist im wesentlichen geleert. An t9 ist das Dekodieren des Befehls I3 beendet. Zum Zeitpunkt t9 und danach wird das Dekodieren des Befehls JUMP gestartet. Zum Zeitpunkt t9 und danach wird insbesondere der Befehlscode des Befehls JUMP aus 2 Bytes sequentiell aus dem Kopf der Befehlswarteschlange herangeholt und dekodiert. Dieser Befehl JUMP ist ein unbedingter Verzweigungsbefehl, so daß er alle Inhalte der Befehlswarteschlange unwirksam macht, wenn sein Befehlscode an der Befehlsdekodiereinheit 907 dekodiert ist. Da der Befehlscode des Befehls JUMP eine Verzweigungsadresse hat, dekodiert die Befehlsdekodiereinheit 907 die Verzweigungsadresse und weist den Adressgenerator 911 an, die durch ein Dekodieren der Verzweigungsadresse erhaltene Information zu überführen und dadurch die Verzweigungsadresse zu generieren und an die Bussteuerung 913 zu überführen. Die Befehlsdekodiereinheit 907 weist die Bussteuerung 913 ferner an, die von dem Adressgenerator 911 in das Vorabrufadressregister PAR überführte Verzweigungsadresse zu halten und dann den Vorabruf des Befehlscodes aus dem Inhalt des Registers PAR vordringlich gegenüber dem vorausschauenden Lesen des Leseoperanden und dem Nachschreiben des Schreiboperanden durchzuführen. Es findet zwar keine Ausführung des Befehls JUMP in der Befehlsausführungseinheit 910 statt, die Information von "Keine Ausführung" wird aber als die dekodierte Information des Befehls JUMP in dem Schwanz der Dekodierte-Information-Warteschlange 908 gehalten, womit das Dekodieren des unbedingten Verzweigungsbefehls JUMP an t12 beendet wird. Von t12 bis t13 unterbricht die Befehlsdekodiereinheit 907 ihre Aktion und wird in einem Wartezustand gehalten, bis der Befehlscode eines oder mehrerer Befehle in der beim Dekodieren des Befehls JUMP geleerten Befehlswarteschlange durch den Vorabruf eines neuen Befehlscodes des Befehls JUMP aus der Verzweigung gespeichert wird. An und nach dem Zeitpunkt t13 wird der Befehl I6 dekodiert. Der Befehlscode des Befehls I6 aus 2 Bytes wird aus dem Kopf der Befehlswarteschlange herangeholt und dekodiert, und die Adresse RA6 für den Leseoperanden M61 des für den Befehl I6 notwendigen Speichers wird in dem Adressgenerator 911 generiert und in dem Register RAR2 der Bussteuerung 913 gehalten. Dann wird das vorausschauende Lesen des Leseoperanden in dem Speicher für den Befehl 16 durch Benutzung des Inhaltes RA6 des Registers RAR1 befohlen. An t15 ist das Dekodieren des Befehls I6 durch Halten der für die Ausführung des Befehls I6 durch die Befehlsausführungseinheit 910 in dem Schwanz der Dekodierte-Information-Warteschlange 908 beendet. An und nach t15 wird das Dekodieren des Befehls I7 gestartet. Dieses Dekodieren des Befehls I7 wird durch Heranholen des Befehlscodes des Befehls I7 aus zwei Bytes aus dem Kopf der Eefehlswarteschlange durchgeführt. Da dieser Befehl I7 den Leseoperanden M70 im Speicher anfordert, weist die Befehlsdekodiereinheit 907 den Adressengenerator 911 an, eine Adresse WA7 für den Schreiboperanden M70 zu erzeugen und an die Bussteuerung 913 zu überführen. Diese Bussteuerung 913 wird ebenfalls dazu angewiesen, die von dem Adressgenerator 911 in das Schreiboperanden-Adressregister WAR überführte Adresse WA7 zu halten und nach dem Verarbeiten des Befehls I7 an der Befehlsausführungseinheit 910 das in das Register WDR überführte und darin gehaltene Datum unter Verwendung der Adresse WA7 des Inhalts des Adressregisters WAR in den Speicher zu schreiben. Auf diese Weise werden die Befehlsdekodiereinheit 907, die Dekodierungen der Befehle I1, I2, I3, JUMP, I6 und I7 jeweils von t1, t2, t6, t9, t13 und tls aus gestartet. Der Warteschlangenstatus 922 gibt einen durch das Symbol F aus Tabelle 4 wiedergegebenen 3-Bit-Code an die Außenseite des A-Prozessors aus, wenn das erste 1 Byte des Befehlscodes eines Befehls aus der Befehlswarteschlange in die Befehlsdekodiereinheit 907 geholt wird, so daß er sich unmittelbar nach t1, t2, t6, t9, t13 und t15 als Symbol F darstellt. Falls andererseits das Dekodieren des unbedingten Verzweigungsbefehls JUMP von t9 aus an der Befehlsdekodiereinheit 907 gestartet ist, werden alle Inhalte der Befehlswarteschlange an t10 unwirksam gemacht, so daß der dem Symbol E1 aus Tabelle 4 entsprechende 3-Bit- Code als der Warteschlangenstatus zum Zeitpunkt t10 an die Außenseite des A-Prozessors ausgegeben wird.
  • An t4 holt die Befehlsausführungseinheit 910 die dekodierte Inforrnation des Befehls I1, welche die Dekodierte-Information-Warteschlange 908 zum Zeitpunkt t4 angeführt hat, heran, um den Befehl I1 auszuführen. Dieser Befehl I1 ist ein Befehl zum Überführen des Leseoperanden M11 im Speicher an den Leseoperanden M10 im Speicher. Der A-Prozessor hat die Funktion des vorausschauenden Lesens der Leseoperanden. In dem Beispiel aus Fig. 13 wird der Speicherlesebuszyklus zum Lesen des Leseoperanden M11 des A-Prozessors zum Zeitpunkt t3 gestartet, vor dem Zeitpunkt t4, an welchem die Ausführung des Befehls I1 an der Befehlsausführungseinheit 910 gestartet wird, und das Datum RD1, das dem für die Zeitspanne des Speicherlesebuszyklus erhaltenen Leseoperanden M11 entspricht, wird in dem Register RDR1 gehalten. Als Ergebnis liegt der Leseoperand M11 des Befehls I1 in dem A- Prozessor bereits vor, wenn die Ausführung des Befehls I1 an t4 gestartet wird. Deshalb braucht die Ausführung des Befehls I1 nicht auf die Außenseite des A-Prozessors zum Einrichten des Leseoperanden M11 zurückgreifen, sondern dieser Operand M11 kann erhalten werden, wenn auf das Register RDR1 in dem A-Prozessor zugegriffen wird, um die Zeitspanne zum Ausführen des Befehls I1 zu verkürzen. Andererseits fordert dieser Befehl I1 den Schreiboperanden M10 im Speicher an. Da jedoch der A-Prozessor die Funktion des Nachschreibens eines Schreiboperanden hat, wird das Datum WD1 des Befehls I1, das dem Schreiboperanden M10 außerhalb des A-Prozessors entspricht, in dem Datenregister WDR des A-Prozessors gehalten, wenn die Ausführung des Befehls I1 an der Befehlsausführungseinheit 910 zum Zeitpunkt t7, in dem Beispiel aus Fig. 13, beendet ist. Das Schreiben des Schreiboperanden M10 des Befehls I1 im Speicher wird als Ergebnis dessen durchgeführt, daß der Speicherschreibbuszyklus zum Herausschreiben des Schreiboperanden M10 des Befehls I1 an die Außenseite des A-Prozessors an oder nach dem Zeitpunkt t8 gestartet wird, an welchem die Ausführung des Befehls I1 an der Befehlsausführungseinheit 910 beendet ist, und daß das dem Schreiboperanden M10 entsprechende Datum WD1 des Befehls I1, welches in dem Datenregister WDR des A-Prozessors zum Zeitpunkt t8 gehalten wird, in einem vorbestimmten bereich des Speichers gehalten wird. Als Ergebnis setzt die Zeitspanne zum Ausführen des Befehls I1 an der Befehlsausführungseinheit 910 zwar nicht die Buszyklusperiode zum Herauslesen des Leseoperanden im Speicher und zum Herausschreiben des Schreiboperanden im Speicher fort, auf die Register RDR1 und WDR in dem A-Prozessor kann aber zugegriffen werden, falls entweder der Leseoperand oder der Schreiboperand angefordert wird, so daß die Zeitspanne zum Ausführen des Befehls I1 drastisch verkürzt werden kann.
  • Die Ausführung des Befehls I2 an der Befehlsausführungseinheit 910 startet von t7 aus und endet an t11. Der Leseoperand M21 im Speicher, welcher durch den Befehl I2 angefordert wird, wird zum Zeitpunkt t5 gelesen, vor dem Zeitpunkt t7, an welchem die Ausführung des Befehls I2 an der Befehlsausführungseinheit 910 gestartet wird, und wird in dem Register RDR2 in dem A-Prozessor gehalten. Zum Zeitpunkt t10 entsteht für die Zeitspanne zum Ausführen des Befehls I2 an der Befehlsausführungseinheit 910 eine Situation, in welcher der durch die Befehlsdekodiereinheit 907 dekodierte Befehl der unbedingte Verzweigungsbefehl JUMP ist, so daß alle Inhalte der Befehlswarteschlange unwirksam gemacht werden, um eine neue Befehlscode-Vorabrufaktion aus der in dem Befehlscode des Befehls JUMP bezeichneten Verzweigung zu starten. Diese Situation übt jedoch keinen Einfluß auf die Ausführung des Befehls I2 an der Befehlsausführungseinheit 910 aus.
  • Die Ausführung des Befehls I3 an der Befehlsausführungseinheit 910 wird zum Zeitpunkt t11 gestartet und zum Zeitpunkt t17 beendet. Da der Vorabrufaktion eines neuen Befehlscodes aus einer Verzweigung, welche an t10 gestartet wird und durch das Dekodieren des Befehls JUMP veranlaßt ist, mit höchster Vordringlichkeit, was die Besetzung des externen Busses angeht, erlaubt ist bis zum Zeitpunkt t13 fortzufahren, kann das durch den Befehl I3 angeforderte vorausschauende Lesen des Leseoperanden M31 im Speicher nicht vor dem Zeitpunkt t11 durchgeführt werden, an welchem die Ausführung des Befehls I3 an der Befehlsausführungseinheit 910 gestartet wird. Deshalb wird die Ausführung des Befehls I3 an der Befehlsausführungseinheit 910 solange verschoben, bis das vorausschauende Lesen des Leseoperanden des Befehls I3 die Busbelegung am Zeitpunkt t14 zugesprochen bekommt, um den Speicherlesebuszyklus zum Lesen des Leseoperanden M31 zu starten, um ein dem Operanden M31 von dem Speicher entsprechendes Datum RD3 in dem Register RDR1 in dem A-Prozessor zu halten, so daß die Befehlsausführungseinheit 910 auf das Register RDR 1 zugreifen kann. Danach wird das dem Leseoperanden M31 entsprechende Datum RD3 des Befehls I3 aus dem Register RDR1 in die Befehlsausführungseinheit 910 geholt, um den Befehl I3 auszuführen, womit die Ausführung des Befehls I3 am Zeitpunkt t17 beendet ist.
  • Die Ausführung des Befehls JUMP an der Befehlsausführungseinheit 910 wird zum Zeitpunkt t17 gestartet. Diese Ausführung des Befehls JUMP fordert keine wesentliche Aktion an. Der Speicherlesebuszyklus zum vorausschauenden Lesen des Leseoperanden M61 des Speichers, welcher durch den Befehl I6 zum Zeitpunkt t16 angefordert wird, wird gestartet, so daß das dem Leseoperanden M61 entsprechende Datum RA6 in dem Register RDR2 des A-Prozessors gehalten wird.
  • Wenn das Befehlsdekodieren an der Befehlsdekodiereinheit 907 in der Reihenfolge der Befehle I1, I2, I3, ..., usw., durchgeführt wird, wird die Befehlsausführung an der Befehlsausführungseinheit 910 ebenfalls in der Reihenfolge der Befehle I1, I2, I3, ..., usw., durchgeführt. Jedoch wird z. B. die Zeitspanne von dem Zeitpunkt t1, an welchem das Dekodieren des Befehls I1 an der Befehlsdekodiereinheit 907 gestartet wird, bis zu dem Zeitpunkt t4, an welchem die Ausführung des Befehls I1 an der Befehlsausführungseinheit 910 gestartet wird, abhängig von mehreren internen und externen Zuständen des A-Prozessors bestimmt und ist im allgemeinen schwierig vorauszusagen. Falls andererseits die Befehle, die den Operanden außerhalb des A-Prozessors, wie beispielsweise in einem Speicher, anfordern, in der Reihenfolge von I1, I2 und I3 an der Befehlsdekodiereinheit 907 dekodiert werden, greift die Bussteuerung 913 auf die Außenseite des A-Prozessors in der Reihenfolge der Zugriffe auf die Operanden der Befehle I1, I2 und I3 zu. Zum Beispiel fordern alle die Befehle I1, I2 und I3 die Leseoperanden RA1, RA2 und RA3 im Speicher an, und der Speicherlesebuszyklus wird an der Bussteuerung 913 in der Reihenfolge der Leseoperanden RA1, RA2 und RA3 gestartet. Wie aus der vorstehenden Beschreibung zu entnehmen ist, wird der Speicherlesebuszyklus für den Leseoperanden des Befehls I3 zwar zum Zeitpunkt t14 nach dem Zeitpunkt t11 gestartet, an welchem die Ausführung des Befehls I3 an der Befehlsausführungseinheit 910 gestartet wird, dem Zeitpunkt nämlich, an welchem der Buszyklus für den Zugriff auf den Leseoperanden des den Leseoperanden anfordernden Befehls außerhalb des A- Prozessors zwischen dem Startzeitpunkt des Dekodierens des Befehls an der Befehlsdekodiereinheit 907 und dem Endzeitpunkt der Ausführung dieses Befehls eingreift, wird aber durch mehrere interne und externe Zustände des A-Prozessors beeinflußt, so daß er im allgemeinen schwierig vorherzusagen ist. Diese Schwierigkeit trifft in gleicher Weise auf den Befehl zu, der den Schreiboperanden außerhalb des A- Prozessors anfordert. Insbesondere kommt zwar der Zeitpunkt, an welchem der Buszyklus für den Zugriff auf den Schreiboperanden dieses Befehls gestartet wird, das heißt, der Zeitpunkt t8, an welchem der Buszyklus für den Zugriff auf den Schreiboperanden M10 des Befehls I1 gestartet wird, nach dem Zeitpunkt der Beendung der Ausführung dieses Befehls an der Befehlsausführungseinheit 910, wird aber durch mehrere interne und externe Zustände des A-Prozessors beeinflußt, so daß er ebenfalls im allgemeinen schwer vorherzusagen ist.
  • Der die hochgradige Pipelinestruktur verwirklichende Prozessor wurde vorstehend in Verbindung mit der Zusammenfassung der Hardware des A-Prozessors und der Zusammenfassung der Aktionen der einzelnen Einheiten innerhalb des A-Prozessors, insbesondere der vorausschauenden Befehlslesefunktion des A-Prozessors, der vorausschauenden Lesefunktion der Leseoperanden und der Nachschreibefunktion der Schreiboperanden beschrieben.
  • Als nächstes soll in Petracht gezogen werden, eine Software durch die Verwendung des A-Prozessors zu entwickeln. Wenn eine Software unter Verwendung des vorstehend erwähnten Prozessors entwickelt werden sollte, wurde die zu entwikkelnde Software durch das Befehlstracingverfahren von Fehlern befreit. Die durch den A-Prozessor zu entwickelnde Software wird ebenso wie bei dem vorstehend erwähnten Prozessor unter Verwendung des Befehlstracingverfahren und des Befehlstracers von Fehlern befreit, um dadurch ihre Entwicklungseffektivität zu verbessern. Das Befehlstracingverfahren des A-Prozessors ist dem vorerwähnten Prozessor-Pefehlstracingverfahren ähnlich. Für den Befehlstracer für den A-Prozessor ist es erforderlich, eine Einstellfunktion für einen Tracepufferspeicher-Anhaltepunkt zu haben, um die einzelnen Frames, welche durch Abtasten der Information auf dem Adressbus 902, der Information auf dem Datenbus 903, des notwendigen Steuersignals und des Statussignals in der Zeit gebildet werden, in der der A-Prozessor eine Folge von Befehlen ausführt, als Zeitfolgedaten sequentiell zu speichern und eine Funktion zu haben, um die Information in dem Tracepufferspeicher zu editieren. Der Anhaltepunkt wird durch die Verwendung des Befehlstracers für den A-Prozessor gesetzt, so daß der A-Prozessor veranlaßt wird, jeden Frame heranzuholen, wenn z. B. eine neue Information an den Adressbus 902 ausgegeben wird oder wenn sich das Statussignal ändert. Nachdem der A-Prozessor seine Operationen an dem Anhaltepunkt unterbrochen hat, editiert er den Inhalt des Tracepufferspeichers, um die Mnemonik der Befehle in der Reihenfolge ihrer tatsächlichen Ausführung einzurichten. Für den Speicher und die dem I/O-Zugriff bereits unterzogenen Befehle muß der A-Prozessor andererseits dem Anwender die tatsächlich zugegriffenen Adressen und Daten in einer Weise darbieten, die den Befehlsmnemoniks entspricht.
  • Angenommen, daß das in Fig. 11 gezeigte Programm zusammengesetzt ist und in dem Speicher gespeichert ist, wie in Fig. 12 gezeigt, wird die durchzuführende Beschreibung auf den Fall gerichtet, in welchem das Befehlstracing durch die Verwendung des Befehlstracers für den A-Prozessor durchgeführt werden muß, wenn der A-Prozessor eine Folge von Befehlen in der Nachbarschaft der in Fig. 12 erscheinenden Speicheradresse ADR10 ausführt. Tabelle 5 stellt einen Speicherausdruck eines Abschnittes des Inhaltes des Tracepufferspeichers des Befehlstracers für den A-Prozessor dar. Tabelle 5 FRAME ADDRESS DATA Tabelle 6 Symbol I/O-Schreibzugriff I/O-Lesezugriff Speicher-Schreibzugriff Speicher-Lesezugriff Befehlscodeabruf Halten-Bestätigung Unterbrechung-Bestätigung Leer-Zustand
  • In Tabelle 5 sind die in der ADDRESS-Spalte erscheinenden Adressen RA1, ADR41, ..., usw. jene, die durch den A-Prozessor auf den Adressbus 902 ausgegeben sind, und die Daten RDL, OPCD41, ..., usw. der DATA-Spalte, sind jene, die auf dem Datenbus 903 für den Eingang/Ausgang des A-Prozessors erscheinen. Die BUS-STS-Spalte stellt den Busstatuscode, ein MMIO-Signal, RD- und WR-Signale, welche durch den A- Prozessor an den Busstatusanschluß ausgegeben werden, einfach durch die Symbole F, MR und MW dar, wie in Tabelle 6 gezeigt. Die in der QSTS4-Spalte erscheinenden Buchstaben 11 und L stehen dafür, ob die durch den A-Prozessor an den QSTS4-Anschluß ausgegebenen Signale auf dem Hoch (H)- oder Niedrig (L)-Pegel waren. Die QSTS3-0-Spalte stellt die Warteschlangenstatussignale, welche durch den A-Prozessor an den Warteschlangenstatusanschluß ausgegeben werden, einfach durch die Symbole F, S und E1 dar, wie in Tabelle 4 gezeigt. Das rechte Spaltenende ist dazu vorgesehen, nicht den Inhalt des Tracepufferspeichers darzustellen, sondern die Übereinstimmung zwischen Figur 13 und Tabelle 5, in welcher das Symbol t2 dem Zeitpunkt t2 aus Figur 13 entspricht. Zuerst wird das Verfahren zum Einrichten der Befehlsmnemoniks in der Reihenfolge der tatsächlichen Ausführung der Befehle durch den A-Prozessor kurz mit Bezug auf den Speicherauszug des Inhalts des Tracepufferspeichers, wie in Tabelle 5 aufgelistet, beschrieben.
  • Wie bei dem Prozessor-Befehlstracingverfahren wählt der Warteschlangenstatus als gegenwärtigen Befehlstracingbezug den Moment, der anzeigt, daß alle Inhalte der Befehlswarteschlange geleert sind. Da die QSTS3-0-Spalte in dem Frame 021, wie aus Tabelle 5 zu sehen ist, ein E1 zeigt (das heißt, die Entleerung des Inhaltes der Befehlswarteschlange), wird der Frame als der Befehlstracingbezug aus dem Tracepufferspeicher aus Tabelle 5 ausgewählt. Am Frame 031 ist es so, daß die QSTS3-0-Spalte erstmals ein F zeigt, nachdem sie am Frame 021 ein E1 angezeigt hatte, und am Frame 035 ist es so, daß die QSTS3-0-Spalte nachfolgend auf den Frame 031 ein F zeigt. Da es nur am Frame 032 so ist&sub1; daß die QSTS3-0-Spalte zwischen den Frames 031 und 035 ein S zeigt, ist der Befehl, dessen erster Byte seines Befehlscodes aus der Befehlswarteschlange geholt und am Frame 031 an die Befehlsdekodiereinheit 907 übertragen wird, ein Befehl mit einem Befehlscode mit einer Länge von 2 Bytes. Der Befehl, dessen erstes Byte seines Befehlscodes am Frame 031 aus der Befehlswarteschlange geholt ist, ist mit I bezeichnet. Als nächstes wird der Befehlscode dieses Befehls I ausgewählt. Nachdem alle Inhalte der Befehlswarteschlange am Frame 021 geleert worden sind, findet der erste Befehlscodeabruf an den Frames 023 und 024 statt. Der aus einem Speicherbereich, der der am Frame 023 ausgegebenen Vorabrufadresse entspricht, ausgegebene Befehlscode ist OPCD60 der DATA-Spalte am Frame 024. Aus den Frames 023 und 024 ergibt sich, daß der Befehlscode des ersten Bytes des Befehls I OPCD60 ist. Der den Frames 023 und 024 nachfolgende Refehlscodeabruf wird an den Frames 025 und 026 durchgeführt, und der Befehlscode OPCD61 wird in den A-Prozessor geholt. Als Ergebnis ist der Befehlscode mit der Länge von 2 Bytes des Befehls I OPCD60 und OPCD61. Da die Mnemoniks MOV M60 und M61 durch umgekehrtes Zusammensetzen der Befehlscodes OPCD60 und OPCD61 mit einer Länge von 3 Bytes erhalten werden, sind die Befehlsmnemoniks des Befehls I MOV M60 und M61. Von nun an werden Operationen, die denjenigen, die oben beschrieben wurden, ähnlich sind, wiederholt. Der Befehl mit dem ersten und zweiten Byte seines aus der Befehlswarteschlange jeweils an den Frames 035 und 036 herangeholten Befehlscodes ist ein Befehl mit einem Befehlscode von einer Länge von 2 Bytes, und die Befehlscodes sind jene, die aus dem zweifachen Vorabruf resultieren, der dem Vorabruf des Befehls I nachfolgt, das heißt, an den Frames 027 und 028 sowie 029 und 030, so daß sie OPCD70 und OPCD71 sind, welche umgekehrt zusammengesetzt werden können, um MOV M70 und M71 zu erhalten.
  • Als nächstes muß, falls der durch den A-Prozessor ausgeführte Befehl einen Operanden in dem Speicher oder I/O außerhalb des A-Prozessors hat, der reale Wert dieses Operanden, das heißt, auf welches Datum wird zugegriffen und für welche Adresse wird der Zugriff durchgeführt, getraced werden. Dieses wird im folgenden durch Aufnehmen des Befehls I als Beispiel beschrieben. Der Befehl I ist ein Überführungsbefehl, der den Leseoperanden M61 und den Schreiboperanden M60 im Speicher anfordert. Der Leseoperand des Befehls wird durch die vorausschauende Lesefunktion des Leseoperanden des A-Prozessors aus dem Speicher herausgelesen, nachdem der Befehl an der Befehlsdekodiereinheit 907 vor dem Ende der Befehlsausführung des Befehls I an der Befehlsausführungseinheit 910 dekodiert wurde. Falls jedoch die Adresse des Leseoperanden von MOV M60 und M61 des Befehls I durch eine indirekte Adressierung erhalten wird, erscheint sein Wert in dem Befehlscode des Befehls I nicht positiv. Dieses macht es unmöglich, zu identifizieren, welcher Frame der vielen Frames, die das Speicherlesen (wie durch MR in der BUS-STS-Spalte angedeutet) in dem Speicherauszug aus Tabelle 5 anzeigen, das Speicherlesen zum Lesen des Leseoperanden des Befehls durchführt. Tabelle 5 hat vier Speicherlesungen an den Frames 003 und 004, an den Frames 010 und 011, an den Frames 033 und 034 und an den Frames 037 und 039. Da die Speicherlesungen an den Frames 003 und 004 und an den Frames 010 und 011 vor den Frame 031 fallen, an welchem der Befehl des Befehls I dekodiert werden muß, ist offensichtlich, daß die Speicherlesungen an den Frames 003 und 004 und an den Frames 010 und 011 nicht zu dem Speicherlesebuszyklus zum Lesen der Leseoperanden des Befehls I aus dem Speicher gehören. Die Frames beider Speicherlesungen an den Frames 033 und 034 und an den Frames 037 und 039, welche dem Frame 031 zum Dekodieren des Befehls I nachfolgen, und die Speicherlesungen, welche an und nach dem Frame 039 erscheinen werden, obwohl sie in Tabelle 5 nicht gezeigt sind, können möglicherweise dem Speicherlesebuszyklus zum Auslesen der Leseoperanden des Befehls I aus dem Speicher angehören. Es ist auch nicht möglich, zu identifizieren, welcher der Frames dem Speicherlesebuszyklus für die Leseoperanden des Befehls I angehört. Als Ergebnis können die Operationen des Befehls I, obwohl die Mnemoniks des Befehls I erhalten werden könnten, nicht vollständig wieder hergestellt werden, weil keine Information vorliegt, die anzeigt, welchen Wert der Befehl I von einem Leseoperanden abgeleitet hat und von welcher Adresse der Befehl I den Wert genommen hat.
  • Es wurde vorstehend das Befehlstracingverfahren des Standes der Technik beschrieben, in welchem es notwendig und ausreichend ist, sowohl die Information, die den Status der Befehlscode-Vorabrufwarteschlange innerhalb des Informationsverarbeitungssystems, das nur die Befehlscode-Vorabruffunktion hat, anzeigt, als auch die Information, die die Arten der Buszyklen von dem Informationverarbeitungssystem nach außerhalb des Systems anzelgt, so daß die Befehlsausführung durch die außerhalb dieses Systems angeordneten Mittel getraced werden kann, auszugeben. Das soweit beschriebene Befehlstracingverfahren jedoch wird von einem Nachteil begleitet, daß es für ein Hochleistungs-Informationsverarbeitungssystem, welches die Mehrstufen-Pipelinestruktur und die Befehlscode-Vorabruffunktion, die vorausschauende Lesefunktion für Leseoperanden und die Nachschreibefunktion für Schreiboperanden aufweist, ineffektiv ist.
  • Das wie oben beschriebene Informationsverarbeitungssystem, insbesondere mit Bezug auf Fig. 9, bildet die Grundlage für den Oberbegriff von Anspruch 1. Eine ähnliche Schaltung ist in IEEE Micro, Band 5, Nr. 6, Dezember 1985, Seiten 4-22, offenbart.
  • Es ist eine Aufgabe der Erfindung, einen Prozessor mit einer Mehrstufen-Pipelinestruktur zu schaffen, die derart funktioniert, daß die externen Leseoperanden des Prozessors vorausschauend gelesen und die Schreiboperanden später geschrieben werden, wobei der Prozessor durch einen Befehlstracer außerhalb des Prozessors einen vollständigen Trace ausgeführter Befehle ermöglicht, wodurch die Effektivität des Prozessors bezüglich einer Softwareentwicklung und -fehlerbeseitigung drastisch verbessert werden kann, sowie ein Befehlstracingverfahren zur Verwendung mit einem Multifunktionsprozessor, der eine Mehrstufen-Pipelinestruktur aufweist, zu schaffen.
  • Diese Aufgabe wird durch ein Informationsverarbeitungs- System gemäß Anspruch 1 und durch ein Befehlstracingverfahren gemäß Anspruch 8 gelöst; die abhängigen Ansprüche betreffen Weiterentwicklungen der Erfindung.
  • Andere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden Beschreibung mit den beigefügten Zeichnungen deutlich. Es zeigen:
  • Fig. 1 ein Blockdiagramm, das die interne Struktur eines Prozessors gemäß einer ersten Ausführungsform der vorliegenden Erfindung wiedergibt;
  • Fig. 2 ein detailliertes Blockdiagramm, das eine Gruppe von Adressregistern in dem Adressbus-Schnittstellenteil des Prozessors aus Fig. 1 wiedergibt;
  • Fig. 3 ein Zeitablaufdiagramm, das die Operationen des in Fig. 1 und 2 gezeigten Prozessors wiedergibt;
  • Fig. 4 ist ähnlich Fig. 1, zeigt aber die interne Struktur des Prozessors gemäß des Standes der Technik;
  • Figs. 5A und 5B sind Diagramme, die den Speicherauszug des Tracepufferspeichers eines mit dem Prozessors aus Fig. 4 verwendeten Befehlstracers wiedergeben;
  • Fig. 6 ein Diagramm, das die Struktur einer in dem Prozessor aus Fig. 4 verwendeten Pseudowarteschlange wiedergibt;
  • Fig. 7 ein Blockdiagramm, das eine in dem Befehlstracer zum Berechnen der Tiefe der Warteschlange angeordnete Schaltung wiedergibt;
  • Fig. 8 ein Diagramm, das das editierte Ergebnis des Inhalts des Tracepufferspeichers aus Fig. 5 wiedergibt;
  • Fig. 9 ein Blockdiagramm, das die interne Struktur eines A- Prozessors mit der Pipelinestruktur wiedergibt;
  • Fig. 10 ein detailliertes Blockdiagramm, das die interne Struktur von Registern des in Fig. 9 gezeigten A- Prozessors wiedergibt;
  • Fig. 11 ein Diagramm, das ein Testprogramm wiedergibt;
  • Fig. 12 ein Diagramm, das den Ort des Testprogramms aus
  • Fig. 11 im Speicher wiedergibt; und
  • Fig. 13 ein Zeitablaufdiagramm, das die Operationen des A- Prozessors aus Fig. 9 wiedergibt.
  • Beschreibung der bevorzugten Ausführungsform
  • Fig. 1 ist ein Blockdiagramm, das eine Ausführungsform der vorliegenden Erfindung wiedergibt. In Fig. 1 bezeichnet Bezugszeichen 101 einen Mikroprozessorchip, Zeichen 102 eine Adressbus-Signalleitung des Prozessors 101, Zeichen 103 eine Datenbus-Signalleitung des Prozessors 101, Zeichen 104 einen Datenbus in dem Prozessor 101 und Zeichen 105 eine Befehlsvorabrufeinrichtung des Prozessors 101, welche aus einer Befehlswarteschlange in FIFO-Struktur zum Halten eines Befehlscodes aus mehreren Bytes und einer Steuerung für eineefehlswarteschlangen zusammengesetzt ist. Zeichen 106 bezeichnet eine Signalleitung zum Überführen des Befehlscodes am Kopf der Befehlswarteschlange der Befehlsvorabrufeinrichtung 105 an eine Befehlsdekodiereinheit 107. Diese Befehlsdekodiereinheit 107 ist aus einem Befehlscoderegister zum Halten eines dekodierten Befehlscodes aus mehreren Bytes, einem Befehlsdekoder und einer Folgesteuereinrichtung zum Steuern der Aktion der Befehlsdekodiereinheit 107 zusammengesetzt. Zeichen 108 bezeichnet eine Dekodierte-Information-Warteschlange in FIFO-Struktur für eine der durch das Dekodierungsergebnis an der Befehlsdekodiereinheit 107 erhaltenen Informationen, welche die Aktion einer Befehlsausführungseinheit 110 anweisen wird. Zeichen 109 bezeichnet eine Signalleitung zum Übertragen der Information aus der Dekodierte-Information-Warteschlange 108 an die Befehlsausführungseinheit 110. Diese Befehlsausführungseinheit 110 ist aus einer Hardware aufgebaut, die aus einer Arithmetik- und einer Logikschaltung und einer Vielzahl von Registern zusammengesetzt ist. Zeichen 111 bezeichnet einen Adressgenerator zum Durchführen von Adressberechnungen in Antwort auf die Information und Anweisung von der Befehlsdekodiereinheit 107. Zeichen 112 bezeichnet eine Signalleitung zum Übertragen der in dem Adressgenerator 111 generierten Adresse an ein Adressbus-Schnittstellenteil einer Bussteuerung 113 für den Prozessor 101. Diese Bussteuerung 113 ist grob in drei Hauptteile unterteilt: den Adressbus- Schnittstellenteil, einen Datenbus-Schnittstellenteil und einen Buszyklus-Steuerteil. Der Adressbus-Schnittstellenteil hat eine Funktion, eine vorbestimmte Adresse aus dem Adressbus 102 des Prozessors 101 an den Adressbus eines den Prozessor 111 enthaltenden Informationsverarbeitungssystems auszugeben und ist aus einer Hardware aus einer Gruppe von Adressregistern 119 zum Halten einer Vielzahl von Adressen zusammengesetzt. Der Datenbus-Schnittstellenteil ist ein Teil zum Verwalten von Datenkommunikationen zwischen dem Systemdatenbus und dem Prozessor 101 über den Datenbus 103 des Prozessors 101 und hat eine Hardware, die zusammengesetzt ist aus: temporären Leseregistern 116 zum temporären Speichern von aus dem Systemdatenbus über den Datenbus 103 herangeholten Daten und einem temporären Register 117 zum temporären Speichern der in dem Prozessor 101 generierten Daten vor der Datenausgabe, bei der das Datum an den Systemdatenbus ausgegeben werden soll. Der Buszyklus-Steuerteil der Bussteuerung hat die Funktionen, den Buszyklus des Prozessors 101, den Ausgang des Busstatus und den Eingang/Ausgang von Signalen an den externen Anschlüssen des Prozessors 101 zu steuern. Zeichen 115 bezeichnet eine Signalleitung, durch welche die Befehlsdekodiereinheit 107 die einer Aktion zugeordneten Information der Bussteuerung zuführt und durch welche die Bussteuerung 113 die Information ihres internen Status an die Befehlsdekodiereinheit 107 überträgt. Zeichen 114 bezeichnet ein Bündel von Signalleitungen, durch welches die Befehlsdekodiereinheit 107 dem Adressgenerator 111 sowohl die für die Adressgenerierungen notwendige Information als auch die Information zum Zuordnen der Aktion des Adressgenerators 111 zuführt und durch welche der Adressgenerator 111 die Information seines internen Status an die Befehlsdekodiereinheit 107 überträgt. Zeichen 118 bezeichnet eine Signalleitung zum Überführen des in der Befehlsausführungseinheit 110 generierten Datums an das temporäre Schreibregister 117 des Datenbus- Schnittstellenteils in der Bussteuerung 113 und von den temporären Leseregistern 116 des Datenbus-Schnittstellenteils in der Bussteuerung 113 an die Befehlsausführungseinheit 110. Zeichen 120 bezeichnet eine Busstatus-Signalleitung des Prozessors 101, und Bezugszeichen 121 bezeichnet ein Bündel von Signalleitungen zum Ausgeben eines I/O-Speichersignals (das heißt, MMIO) und eines Lese/Schreib-Signals (das heißt, RDWR) an die Außenseite des Prozessors 101. Zeichen 122 bezeichnet eine Warteschlangenstatus-Signalleitung des Prozessors 101. Zeichen 123, 124, 125 und 126 sind neu-vorgesehene Hardwareelemente zum Verwenden der vorliegenden Erfindung. Die Hardware 123 ist ein bistabiles Flipflop, das in der Befehlsdekodiereinheit 107 angeordnet ist und dessen Ausgangssignal jedesmal dann, wenn ein Verzweigungsbefehl in der Befehlsdekodiereinheit 107 dekodiert wird, invertiert ist. Die Hardware 124 ist eine Signalleitung für das Ausgangssignal des bistabilen Flipflops 123. Die Hardware 125 ist eine Gruppe von Registern, die den jeweiligen Registern der Gruppe in dem Adressbus-Schnittstellenteil der Bussteuerung 113 eins zu eins entsprechen. Die Hardware 126 ist eine Signalleitung zum Ausgeben eines ausgewählten Signals der Ausgangssignale der gruppierten Register 125 an die Außenseite des Prozessors 101.
  • Der Prozessor 101 entsprechend der vorliegenden Ausführungsform ist durch Hinzufügen des bistabilen Flipflops 123, der Signalleitung 124, der gruppierten Register 125 und der Ausgangssignalleitung 126 zu der Struktur des in Fig. 9 gezeigten A-Prozessors aufgebaut, so daß er all die Funktionen des A-Prozessors enthält, das heißt, die Befehlscode-Vorabruffunktion, die vorausschauende Lesefunktion eines Leseoperanden und die Nachlesefunktion eines Schreiboperanden.
  • Figur 2 ist ein Blockdiagramm, das einen Hauptteil des Adressbus-Schnittstellenteils der Bussteuerung 113 in dem Prozessor 101 wiedergibt. Bezugszeichen 201 bezeichnet eine Signalleitung, die der Signalleitung 112 aus Fig. 1 zum Überführen von durch den nicht dargestellten Adressgenerator generierten Adressen entspricht. Zeichen 205, 208, 211 und 214 bezeichnen eine Gruppe von Registern, von welchen: das Register 205 ein Vorabruf-Adressregister (PAR) ist; das Register 208 ein Leseoperanden-Adressregister (RAR1) ist, das Register 211 ein Leseoperanden-Adressregister (RAR2) ist; und das Register 214 ein Schreiboperanden-Adressregister (WAR) ist. Zeichen 206, 209, 212 und 215 bezeichnen die jeweiligen Haltesignale der Register 205, 208, 211 und 214, die den Registern 119 aus Fig. 1 entsprechen. Zeichen 207 bezeichnet die Ausgangssignalleitung des Registers 205; Zeichen 210 die Ausgangssignalleitung des Registers 208; Zeichen 213 die Ausgangssignalleitung des Registers 211; und Zeichen 216 die Ausgangssignalleitung des Registers 214. Zeichen 217 bezeichnet eine Signalleitung, welche in der vorliegenden Erfindung neu hinzugefügt ist und welche der Signalleitung 124 aus Fig. 1 entspricht. Zeichen 219, 221, 223 und 225 bezeichnet Register, von welchen die Register 219, 221, 223 und 225 als die jeweiligen Erweiterungen der Register 205, 208, 211 und 214 gedacht sind. Zeichen 220, 222, 224 und 226 bezeichnen die Ausgangssignalleitungen jeweils der Register 219, 221, 223 und 225. Zeichen 202 bezeichnet einen Multiplexer, der empfangsbereit gemacht ist für sowohl vier Adressen, das heißt, die jeweils von den Registern 205, 208, 211 und 214 ausgegebenen Adressen, als auch für vier Signale, das heißt, die jeweils von den Registern 219, 221, 223 und 225 ausgegebenen Signale, zum Auswählen eine der vier Adressen in Antwort auf ein Auswahlsignal 204, um es an eine Adress-Ausgangssignalleitung 203 auszugeben und um das Ausgangssignal von der Registererweiterung, welche dem Register entspricht, das diese ausgewählte Adresse gehalten hat, an eine Signalleitung 218 auszugeben. Wenn die von dem Register 208 ausgegebene Adresse in Antwort auf das Auswahlsignal 204 ausgewählt wird, wird z. B. der Inhalt des Registers 221 ausgewählt und an die Signalleitung 218 ausgegeben. Die Signale 204, 206, 209, 212 und 215 werden in der nicht dargestellten Befehlsdekodiereinheit generiert und über die Signalleitung 115 aus Fig. 1 an die Bussteuerung gesandt. Die Signalleitung 203 entspricht dem Adressbus 102 aus Fig. 1, und die Signalleitung 218 entspricht der Signalleitung 126 aus Fig. 1. Nur das Register PAR 205 hat eine Funktion, ein Fortschreiben der Adressen automatisch durchzuführen. Zur Vereinfachung der folgenden Beschreibung ist die Erweiterung des Registers PAR 205 bzw. der Teil 219 zum Halten der Information auf der Signalleitung 217 mit PAR bezeichnet; die Erweiterung 221 mit RAT1, im Gegensatz zu dem Register RAR1 208; die Erweiterung 223 mit RAT2, im Gegensatz zu dem Register RAR2 211; und die Erweiterung 225 mit WAT, im Gegensatz zu dem Register WAR 214.
  • Fig. 3 ist ein schematisches Zeitablaufdiagramm, das dem aus Fig. 13 entspricht. Um den Vergleich mit dem Beispiel des Standes der Technik zu erleichtern, sei für das Zeitablaufdiagramm aus Fig. 3 angenommen, daß das Programm aus Fig. 11, daß mit den in Tabelle 3 aufgelisteten Befehlen mit den Befehlsmnemoniks und -codes in den Assemblersprachen geschrieben ist, so zusammengesetzt und in dem Speicher gespeichert ist, wie in Fig. 12 dargestellt, und die zeitlichen Beziehungen zwischen den Informationen, die innerhalb und an den externen Busanschlüssen des Prozessors 101 erscheinen, wenn der Prozessor 101 eine Folge von Befehlen in der Nachbarschaft des Speichers ADR10 aus Fig. 12 ausführt, zeigt. Da der Prozessor 101 alle die Hauptfunktionen des vorerwähnten A-Prozessors enthält, sind die Befehlsverarbeitungs-Zeitsteuerungen der Befehlsdekodiereinheit 107, des Warteschlangenstatus 122 und der Befehlsausführungseinheit 110, die Änderungs-Zeitsteuerungen der Inhalte der Register RAR1, RAR2, WAR, RDR1, RDR2 und WDR und die Änderungszeitsteuerungen der auf dem Adressbus 102 und dem Datenbus 103 erscheinenden Informationen, so wie in Fig. 3 gezeigt, jeweils ähnlich jener aus Fig. 13. Hier werden die gemäß der vorliegenden Erfindung neu hinzugefügten Funktionen im folgenden beschrieben.
  • In Fig. 3 stellt das bistabile Ausgangssignal den Signalpegel auf der Signalleitung 124 für das Ausgangssignal des bistabilen Flipflops 123 dar, welcher der Befehlsdekodiereinheit 107 aus Fig. 1 in Übereinstimmung mit der vorliegenden Erfindung neu hinzugefügt ist. Für das bistabile Ausgangssignal sei angenommen, daß es den Hochpegel (H) zum Zeitpunkt t1 einnimmt, wenn das Dekodieren des Befehls I1 an der Befehlsdekodiereinheit 107 gestartet wird.
  • Falls das Dekodieren des Befehlscodes aus 2 Bytes des Befehls JUMP an t9 in der Befehlsdekodiereinheit 107 gestartet wird, so daß der Befehl JUMP an t10 als ein unbedingter Verzweigungsbefehl erkannt wird, wird das Ausgangssignal des bistabilen Flipflops 123 invertiert, damit dieser den Niedrigpegel (L) einnimmt. Nach t10 bleibt das Ausgangssignal des bistabilen Flipflops 123 mindestens bis t17 aus Fig. 3 auf dem Niedrigpegel. Wenn der den Leseoperanden M31 im Speicher außerhalb des Prozessors 101 anfordernde Befehl I3 an t6 in der Befehlsdekodiereinheit 107 dekodiert wird, weist diese Einheit 107 den Adressgenerator 111 an, die Adresse RA3 des Leseoperanden M31 des Befehls I3 zu generieren und diesen an die Bussteuerung 113 zu überführen. Gleichzeitig damit weist die Befehlsdekodiereinheit 107 die Bussteuerung 113 an, die Adresse RA3 des von dem Adressgenerator 111 überführten Leseoperanden M31 in dem Leseoperanden-Adressregister RAR1 in dem Adressbus-Schnittstellenteil der Bussteuerung 113 zu halten. Diese Anweisung an die Bussteuerung 113 wird durch Aktivieren des Haltesignals des Adressregisters RAR1 208 auf der Haltesignalleitung 206, während der Adressgenerator 111 die Adresse RA3 an die Signalleitung 201 aus Fig. 2 ausgibt, herausgegeben. Wenn das Haltesignal auf der Haltesignalleitung 206 aktiv wird, wird die Adresse RA3 auf der Signalleitung 201 in dem Adressregister RAR1 gehalten, und das an t6 auf der Signalleitung 217 den Hochpegel einnehmende Signal wird gleichzeitig in dem Register RAT1 221 gehalten. Mit anderen Worten wird gleichzeitig damit, daß die Informationen auf der Signalleitung 201, das heißt, die Adresse RA3, abgetastet und in dem Register RAR1 an t6 des schematischen Zeitablaufdiagramms aus Fig. 3 gehalten wird, das Ausgangssignal des in der Befehlsdekodiereinheit 107 angeordneten bistabilen Flipflops 123 abgetastet und in dem Register RAT1 gehalten. An t10 ist das Ausgangssignal des bistabilen Flipflops 123 als ein Ergebnis dessen invertiert, daß der Befehlscode des unbedingten Verzweigungsbefehls an der Befehlsdekodiereinheit 107 dekodiert ist. Danach wird, da der an t13 in der Befehlsdekodiereinheit 107 zu dekodierende Befehl I6 ebenfalls den Leseoperanden M61 außerhalb des Prozessors 101 anfordert, an t13 wie im vorerwähnten Fall des Befehls I3, die Adresse RA6 des Leseoperanden M61 des Befehls I6, welche an dem Adressgenerator 111 generiert wird, in dem Register RAR2 gehalten, und das Ausgangssignal des vorerwähnten bistabilen Flipflops 123 mit Niedrigpegel wird gleichzeitig abgetastet und in dem Register RAT2 gehalten. An t14 beginnt die Bussteuerung 113 den Speicherlesebuszyklus für das vorausschauende Lesen des Leseoperanden M31 des Befehls I3 unter Verwendung der Adresse RA3 dieses in dem Register RAR1 gehaltenen Leseoperanden M31. An t14 wird in Antwort auf das Auswahlsignal auf der Signalleitung 204, wie in Fig. 2 gezeigt, die Adresse RA3 des von dem Register RAR1 ausgegebenen Leseoperanden M31 des Befehls I3 als das Ausgangssignal der zwei Ausgangssignalleitungen des Multiplexers 202 ausgewählt und an den Adressbus 203 ausgegeben. Gleichzeitig damit wird das von dem Register RAT1 ausgegebene Signal mit Hochpegel ausgewählt und an die Signalleitung 218 ausgegeben. An t14 wird, wie in Fig. 1 gezeigt, die Adresse RA3 an den Adressbus 102 ausgegeben, und das in dem Register RAT1 gehaltene Hochpegelsignal wird gleichzeitig an die Signalleitung 126 ausgegeben. An t14 wird die Adresse RA3 an die Spalte des Adressbusses 102 aus Fig. 3 ausgegeben, und das Hochpegelsignal wird an eine Spalte AT aus Fig. 3 ausgegeben, die der Signalleitung 218 aus Fig. 2 entspricht. Nachfolgend an t16 startet die Bussteuerung 113 den Speicherlesebuszyklus für das vorausschauende Lesen des Leseoperanden M61 des Befehls I6 unter Verwendung der Adresse RA6 des Leseoperanden M61. An t16 wird, genauer gesagt, die Adresse RA6 des Leseoperanden M61 des Befehls I6 an den Adressbus 102 aus Fig. 1, die Adress-Ausgangssignalleitung 203 aus Fig. 3 und die Spalte des Adressbusses 102 aus Fig. 3 ausgegeben. Gleichzeitig damit wird das in dem Register RAT 2 gehaltene Niedrigpegelsignal an die Signalleitung 126 aus Fig. 1, die Signalleitung 218 aus Fig. 2 und die Spalte AT aus Fig. 3 ausgegeben. Falls andererseits herausgefunden wird, daß der an t6 in der Befehlsdekodiereinheit 107 dekodierte Befehlscode zu dem unbedingten Verzweigungsbefehl gehört, werden alle in die Befehlswarteschlange der Befehlsvorabrufeinrichtung 105 vorabgerufenen Befehlscodes unwirksam gemacht. In dem Prozessor 101, wie in dem A-Prozessor, erwirbt der Vorabruf des Befehlscodes von der abgezweigten Adresse, welcher in dem Befehlscode des unbedingten Verzweigungsbefehls angezeigt ist, die höchste Priorität zum Besetzen der externen Busse. An t10 weist die Befehlsdekodiereinheit 107 den Adressgenerator 111 an, die in dem Befehlscode des Befehls JUMP angezeigte Verzweigungsinformation über die Signalleitung 114 zu überführen und die verzweigte Adresse ADR60 zu generieren und an die Bussteuerung 113 zu überführen. Die Befehlsdekodiereinheit 107 weist die Bussteuerung 113 zudem an, die von dem Adressgenerator 111 überführte Verzweigungsadresse ADR60 in dem Register PAR zu halten und den Vorabruf des Befehlscodes unter Verwendung des Inhaltes des Registers PAR zu starten. Hier wird gleichzeitig damit, daß die Verzweigungsadresse ADR60, die das Verzweigen durch den Befehl JUMP anzeigt und von dem Adressgenerator 111 an die Bussteuerung 113 überführt wird, in der Adresse PAR 205 gehalten wird, das Signal auf der Ausgangssignalleitung 217 des bistabilen Flipflops 123 in der Befehlsdekodiereinheit 107 in der Erweiterung PAT 219 des Registers PAR 205 gehalten. Wie vorstehend beschrieben wurde, hat das Register PAR 205 eine Funktion zum automatischen Fortschreiben einer Adresse, so daß deren Inhalt an jedem Ende des Speicher-Lesebuszyklus für den Vorabruf des Befehlscodes fortgeschrieben wird, nachdem die Verzweigungsadresse ADR60, die das Verzweigen durch den Befehl JUMP anzeigt, an t10 gehalten wurde. Im Gegensatz dazu jedoch bleibt der Inhalt der Registererweiterung PAT 219 unverändert, unabhängig von der Funktion zum automatischen Fortschreiben einer Adresse des Registers PAR 205, bis eine neue Adresse in dem Register PAR 205 in Antwort auf die Anweisung von der Befehlsdekodiereinheit 107 nachfolgend gesetzt ist. In Antwort auf die Information auf der Auswahlsignalleitung 204 wählt der Multiplexer 202 des Adressbus-Schnittstellenteils der Bussteuerung 113 nicht nur das Register PAR 205 für die Vorabrufaktion auf, um den Inhalt des Registers PAR 205 an den Adressbusanschluß 203 auszugeben, sondern zudem die Registererweiterung PAT 219, um den Inhalt der Erweiterung PAT an die Signalleitung 218 auszugeben. Da in der Ausführungsform aus Fig. 3 das auf der Signalleitung 217 existierende und an t10 den Niedrigpegel einnehmende Signal an der Registererweiterung PAT 219 abgetastet wird, wird das Signal AT, das zum gleichen Zeitpunkt, wie die Adresse von der Signalleitung 126, durch die Befehlscode-Vorabrufaktion unmittelbar nach dem Verzweigungsbefehl von t10 bis t13 ausgegeben wird, auf dem Niedrigpegel (L) gehalten.
  • In der vorliegenden Ausführungsform ändert sich das Ausgangssignal des bistabilen Flipflops 123 in der Befehlsdekodiereinheit 107, falls der Befehlscode des unbedingten Verzweigungsbefehls in der Befehlsdekodiereinheit 107 dekodiert wird. Hier wird der unbedingte Verzweigungsbefehl als ein Faktor zum Ändern des Ausgangssignals des bistabilen Flipflops 123 ausgewählt, da er in dem gewöhnlichen Programm statistisch einmal bei etwa zehn Schritten angewendet wird. Falls im Gegensatz dazu ein selten anzuwendender Befehl als ein Faktor zum Ändern des Ausgangssignals des bistabilen Flipflops 123 herangezogen wird, wird sich das Signal AT nicht ein einziges Mal in dem infiniten Tracepufferspeicher des Befehlstracers ändern, wodurch der vorliegende Befehlstrace unmöglich gemacht wird. Es ist deshalb empfehlenswert, entweder einen Befehl, welcher einmal an mehreren bis mehreren zehn Schritten erscheint, oder einen Befehl, welcher zwangsweise durch diesen Schrittzyklus eingefügt werden kann, zu verwenden.
  • Die Aktionen der Hardware, die dem A-Prozessor, der die hochgradige Pipelinestruktur aufweist, durch die vorliegende Erfindung neu hinzugefügt sind, wurden vorstehend beschrieben. Als nächstes wird im folgenden das Befehlstracingverfahren beschrieben, das zu verwenden ist, wenn eine Software durch den die vorliegende Erfindung umsetzenden Prozessor 101 zu entwickeln ist. Das Befehlstracingverfahren der vorliegenden Erfindung ist in der Lage, das ernste Problem, das das Befehlstracingverfahren in dem vorerwähnten Fall des A-Prozessors begleitet, grundsätzlich zu lösen, indem die von der neuartigen Hardware der vorliegenden Erfindung erhältlichen Informationen dem Befehlstracingverfahren des Standes der Technik hinzugefügt werden.
  • Der Befehlstracer gemäß dem Befehlstracingverfahren der vorliegenden Erfindung muß, wie der vorerwähnte Befehlstracer des A-Prozessors, aufweisen: die Tracepufferspeicher-Anhaltepunkt-Einstellfunktion, um die Informationen auf dem Adressbus 102, die notwendigen Steuersignale, die Statussignale und die während der Ausführung der Folgebefehle durch den Prozessor von der Signalleitung 126 ausgegebenen Signale sequentiell als die Zeitfolgedaten abzutasten und zu halten; und die Editierfunktion, um die Zeitfolgeinformationen in dem Tracepufferspeicher zu editieren. Das Befehlstracingverfahren der vorliegenden Erfindung ist dem vorerwähnten Verfahren des A-Prozessors dahin gehend ähnlich, daß der Moment, an welchem der Warteschlangenstatus anzeigt, daß alle Inhalte der Befehlswarteschlange in dem Tracepufferspeicher unwirksam gemacht worden sind, als der Bezugspunkt für den Befehlstrace verwendet wird, und dahin gehend, daß die Zeitsteuerdaten in dem Tracepufferspeicher von diesem Bezugspunkt des vorliegenden Befehlstracingverfahrens aus getraced werden, um den Befehlscode eines Befehls, welcher unmittelbar nach diesem Bezugspunkt ausgeführt wurde, auszuwählen und umgekehrt zusammenzusetzen, um dadurch die Mnemoniks des unmittelbar nach dem Bezugspunkt ausgeführten Befehls zu erstellen. Hier werden sowohl die Befehlsmnemoniks, welche durch die vorerwähnte Zusammensetzung der durch den Speicher- oder den I/O-Zugriff begleiteten Befehle erhalten werden, als auch das Verfahren zum Bewirken, daß die tatsächlich durch den Befehl zugegriffenen Adressen und Daten den Befehlsmnemoniks entsprechen, beschrieben.
  • In der Annahme, daß das in Fig. 11 gezeigte Programm so zusammengesetzt und in dem Speicher gespeichert wird, wie in Fig. 12 gezeigt ist, wird im folgenden die Beschreibung des Verfahrens zum Durchführen des Befehlstraces unter Verwendung des Befehlstracers für den Prozessor 101, wenn der A- Prozessor die Folgebefehle aus der Nachbarschaft der Speicheradresse ADR10 aus Fig. 12 ausführt, durchgeführt. Tabelle 7 zeigt den Speicherauszug eines Abschnitts des Inhaltes des Tracepufferspeichers des Befehlstracers für den Prozessor 101 und stimmt mit ihrem Auszug im wesentlichen mit Tabelle 5 überein. Tabelle 7 FRAME ADDRESS DATA
  • Falls in Tabelle 7 der Punkt, an welchem sich die Spalte QSTS3-0 am Frame 021 mit E1 darstellt, als Bezug verwendet wird, sind der Befehlscode eines Befehls J mit einem Befehlscode aus 2 Byte Länge, der an den Frames 031 und 032 durch die Befehlsdekodiereinheit 107 durch das in Tabelle 5 benutzte Verfahren dekodiert ist, die Befehlscodes OPCD60 und OPCD61 aus 2 Bytes, die an den Frames 023 und 024 und den Frames 025 und 026 vorabgerufen sind, und die Befehlscodes OPCD60 und OPCD61 umgekehrt zusammengesetzt, um die Befehlsmnemoniks MOV R6 und M61 als den Befehl J zu erstellen. Da der Befehl J ein den Leseoperanden M61 im Speicher anfordernder Überführungsbefehl ist, ist es zum Tracen des Befehls J notwendig, anzuzeigen, welches Datum als der Leseoperand M61 des Befehls J herangeholt wird und von welcher Speicheradresse dieses Datum herangeholt wird. Für diese Notwendigkeit werden die Informationen der in Tabelle 7 neu hinzugefügten Spalte AT benutzt.
  • Die Informationen in der Spalte AT speichern den Ausgangsstatus des bistabilen Flipflops 123 in der Befehlsdekodiereinheit 107, wenn die an den Adressanschluß 102 des Prozessors 101 ausgegebene Adresse in dem Adressregister der Bussteuerung 113 gehalten wird. Der bistabile Flipflop 123 invertiert das Ausgangssignal in dem Moment, in welchem der Befehlscode des unbedingten Verzweigungsbefehls in der Befehlsdekodiereinheit 107 dekodiert wird. Da das Dekodieren des Befehlscodes des unbedingten Verzweigungsbefehls unmittelbar nach außerhalb des Prozessors 101 übertragen wird, als Ergebnis dessen, daß der Warteschlangenstatus QSTS3-0 sich als E1 darstellt, nimmt die Spalte AT vor dem Frame 021 den Hochpegel (H) und nach dem Frame 021 den Niedrigpegel (L) hinsichtlich des Wertes der Spalte AT ein, wenn die Adresse für das Vorabrufen vor und nach dem Frame 021, an welchem der Warteschlangenstatus QSTS3-0 sich als E1 darstellt, ausgegeben wird. Wenn der Befehlscode des Überführungsbefehls J unmittelbar nach dem Dekodieren des unbedingten Verzweigungsbefehls in der Befehlsdekodiereinheit 107 nach dem Frame 021 dekodiert wird, so daß die Adresse des Leseoperanden M61 des Befehls J in dem Adressgenerator 111 generiert und in den gruppierten Adressregistern der Bussteuerung 113 gespeichert wird, wird das Ausgangssignal des bistabilen Flipflops 123 mit Niedrigpegel in den Erweiterungen dieser Adressregister gehalten. Deshalb ist der Speicherlesebuszyklus zum Lesen des Leseoperanden des den Leseoperanden M61 im Speicher anfordernden Befehls J derjenige, gegenüber dem Befehlscodevorabruf andere Speicherlesebuszyklus, in welchem die Spalte AT sich für ein erstes aller Frames nach dem Frame 021 als L (das heißt, Niedrigpegel) darstellt. In Tabelle 7 sind zwei Speicherlesebuszyklen an den Frames 033 und 034 sowie an den Frames 037 und 039 nach dem Frame 021 angeordnet. Es bewirkt jedoch das Adressausgangssignal am Frame 037, daß die Spalte AT sich nach dem Frame 021 zuerst als L darstellt. Deshalb ist der Buszyklus zum Lesen des Leseoperanden des den Leseoperanden M61 im Speicher anfordernden Befehls J der Speicherlesebuszyklus an den Frames 037 und 039. Die Adresse des Leseoperanden M61 des Befehls J wird an RA6 im Hinblick auf Frame 037 bestimmt, und das Datum des Leseoperanden M61 wird an RD6 im Hinblick auf Frame 039 bestimmt. Von nun an kann ebenso der Speicherlesebuszyklus zum Lesen des Leseoperanden eines Befehls, welcher den Leseoperanden im Speicher anfordert und nachfolgend auf den Leseoperanden anfordernden Befehl J erscheint und als erster nach dem Dekodieren des Befehlscodes des unbedingten Verzweigungsbefehls erscheint, als derjenige bestimmt werden, in welchem die Spalte AT sich als L nach den Frames 037 und 039 darstellt. Die soweit durchgeführte Beschreibung wurde auf den Fall gerichtet, in welchem der Befehl den Leseoperanden im Speicher hat, das Verfahren an sich zum Schaffen von Korrespondenzen zwischen den Befehlen und Operanden des Befehlstracingverfahrens kann jedoch in vollständig ähnlicher Weise erreicht werden, unabhängig davon, ob die Operanden im Speicher oder im I/O sind.
  • Wie vorstehend beschrieben wurde, zieht das vorliegende Verfahren in Erwägung, ein Befehlstracingverfahren zu schaffen, welches mit einem Multifunktionsprozessor verwendet wird, welcher eine Mehrstufen-Pipelinestruktur aufweist und einen Adressgenerator, eine Bussteuerung und eine Befehlsdekodiereinheit zum Bestimmen der Sequenz der Befehlsverarbeitung jeder der Stufen umfaßt, wobei die Befehlsdekodiereinheit ein bistabiles Flipflop aufweist, damit ihr Ausgangssignal invertiert wird, wenn der Befehlscode einer vorbestimmten Art von Befehl dekodiert wird, mit den Schritten: Speichern einer durch den Adressgenerator erzeugten Adresse in einem von Adressregistern der Bussteuerung und gleichzeitig des Status des bistabilen Flipflops in den Erweiterungen der Adressregister; Ausgeben derjenigen Adresse dieser Adressregister, welche ausgewählt wird, wenn die Bussteuerung einen Buszyklus startet, an den Adressbusanschluß des Prozessors und der Information der Erweiterungen dieser Adressregister an den Informationsausgangsanschluß des Prozessors; sequentielles Heranholen des auf dem Informationsausgangsanschluß in einem Befehlstracer für den Prozessor erscheinenden Signals zusammen mit dem auf dem Adressbus des Prozessors erscheinenden Signals an einen Tracepuffer des Befehlstracers; und Bewirken einer Befehlsmnemonik und eines Operandenzugriffs des Befehls außerhalb des Prozessors, um miteinander mit Bezug auf die Information, die zusammen mit der Adresse von den Erweiterungen der Adressregister an die Außenseite des Prozessors ausgegeben ist, zu korrespondieren, wenn in dem Befehlstracing des Prozessors zum vorausschauenden Lesen von Leseoperanden und zum Nachschreiben von Schreiboperanden vorhanden.
  • In Tabelle 7 stellen die in der ADDRESS-Spalte erscheinenden RA1, ADR41, ... die an den Adressbus 102 durch den Prozessor 101 ausgegebenen Adressen dar, und die in der DATA- Spalte erscheinenden RD1, OPCD41, ..., usw. stellen die auf dem Datenbus 103 durch Eingeben und Ausgeben des Datums an den Prozessor 101 bzw. von demselben erscheinenden Daten dar. Die BUS-STS-Spalte zeigt die Busstatuscodes, welche an den Busstatusanschluß 120 durch den Prozessor 101 ausgegeben werden, und die MMIO- und RDWR-Signale, welche an die Signalleitung 121 ausgegeben werden, nur in den in Tabelle 6 aufgelisteten Symbolen F, MR und MW. Die Buchstaben H und L, die in der QSTS-Spalte erscheinen, stellen dar, ob die an den QSTS4-Anschluß 122 ausgegebenen Signale auf dem Hochpegel (H) oder dem Niedrigpegel (L) sind. Die QSTS3-0- Spalte stellt die Warteschlangenstatussignale, welche an den Warteschlangenstatusschluß 122 durch den Prozessor 101 ausgegeben werden, nur mit den in Tabelle 4 aufgelisteten Symbolen F, S und E1 dar. Die AT-Spalte stellt dar, ob das Signal, welches an die Signalleitung 126 in der gleichen Zeit ausgegeben wird, wenn der Prozessor 101 die Adresse an den Adressbusanschluß 102 ausgibt, auf dem Hochpegel (H) oder dem Niedrigpegel (L) ist.
  • Als Ergebnis können auch in einem Fall, in welchem der die Mehrstufen-Pipelinestruktur verwendende Prozessor das vorausschauende Lesen des Leseoperanden oder das Nachschreiben der Schreiboperanden des die Operanden außerhalb des Prozessors anfordernden Befehls durchführt, Befehlsmnemoniks des Befehls durch den Prozessor in der Ausführungsorder erhalten werden. Im Fall des die Operanden außerhalb des Prozessors anfordernden Befehls sind die Befehlsmnemoniks und die Adressen, wenn auf die Operanden tatsächlich zugegriffen wird, in die Lage versetzt, mit den Daten zu korrespondieren.
  • Daneben zeigt Tabelle 1 den Warteschlangenstatus des vorerwähnten Prozessors des Standes der Technik. Tabelle 2 zeigt den Busstatus des gleichen Prozessors. Tabelle 3 zeigt die Korrespondenzen zwischen den Befehlsmnemoniks und -codes der Programme des A-Prozessors und des Prozessors 101, welche in der Assemblersprache geschrieben sind. Tabelle 4 zeigt die Warteschlangenstatus des A-Prozessors und des Prozessors 101. Tabelle 5 zeigt den Speicherauszug der Informationen, welche in dem Tracepufferspeicher des Befehlstracers gespeichert sind, wenn der A-Prozessor die in Fig. 12 gezeigten Befehle aus der Nachbarschaft der Adresse ADR im Speicher ausführt. Tabelle 6 zeigt die Busstatus des A- Prozessors und des Prozessors 101. Tabelle 7 zeigt den Speicherauszug der in dem Tracepufferspeicher des Befehlstracers gespeicherten Informationen, wenn die Befehle durch den Prozessor 101 sequentiell von der Nachbarschaft in Fig. 12 gezeigten Adresse ADR10 des Speichers ausgeführt werden.
  • Gemäß der vorliegenden Erfindung ist der Prozessor, der die Mehrstufen-Pipelinestruktur aufweist und das vorausschauende Lesen eines Leseoperanden und das Nachschreiben eines Schreiboperanden der Operanden außerhalb des Prozessors durchführt, in die Lage versetzt, daß seine Befehle vollständig getraced werden, so daß dies die Wirkung hat, daß seine Effektivität bei Softwareentwicklung und -fehlerbeseitigung drastisch verbessert werden kann.

Claims (8)

1. Informationsverarbeitungssystem mit einem Mikroprozessor (101) mit einer Mehrstufen-Pipelinestruktur mit:
einer Befehlsdekodereinheit (105, 107) mit einem Befehlsdekoder (107) zum Dekodieren eines empfangenen Befehlscodes und Adresserzeugungsmitteln (111), die mit der Befehlsdekodereinheit (105, 107) gekoppelt sind, zum Empfang zumindest eines Teils eines dekodierten Befehlscodes, der vom Befehlsdekoder (107) ausgegeben wird, zur Erzeugung einer Adresse zum Lesen und/oder Schreiben eines Operanden, der für den dekodierten Befehlscode erforderlich ist,
Bussteuermitteln (113) mit ersten Registermitteln (119) die mit den Adresserzeugungsmitteln (111) gekoppelt sind, zum zeitweiligen Halten der Adresse zum Lesen und/oder Schreiben des Operanden,
dadurch gekennzeichnet, daß die Befehlsdekodereinheit (105, 107) ferner Statusanzeigemittel (123) mit einem Ausgang aufweist, der sich auf Realzeitbasis ändert, wenn ein vorgegebener Befehlscode, der als Index in einem Programmablauf, der durchgeführt wird, nachdem das zu testende Programm ausgeführt wurde, dekodiert wird, und dessen Ausgang ungeändert verbleibt, wenn ein anderer Befehlscode als der vorgegebene Befehlscode dekodiert wird, daß die Bussteuermittel ferner zweite Registermittel (125) aufweisen, die mit den Statusanzeigemitteln (123) gekoppelt sind, zum zeitweiligen Halten des Ausgangs der Statusanzeigemittel (123), wenn der dekodierte Befehlscode von dem Befehlsdekoder (107) ausgegeben wird, wobei die Bussteuermittel (113) arbeiten, wenn ein Buszyklus auf Basis der in den ersten Registermitteln (119) gehaltenen Adresse gestartet wird, um den Inhalt der zweiten Registermittel (125) einen der in den ersten Registermitteln (119) gehaltenen Adresse während einer Buszyklusspanne des Mikroprozessors (101), synchron mit einer Ausgabezeitsteuerung an einen Befehlstracer auszugeben, der extern von dem Mikroprozessor (101) ist, und
Speichermitteln in dem Befehlstracer zum Speichern von Informationen, die von dem Mikroprozessor (101) sequentiell als zeitserielle Daten ausgegeben werden, wobei die Informationen die in den ersten Registermitteln (119) gehaltene Adresse und den Inhalt der zweiten Registermittel (125) umfassen,
wobei die zeitseriellen Daten, basierend auf dem Inhalt der zweiten Registermittel (125), der in der Speichereinrichtung gespeichert ist und die Ausgabeinformation der Statusanzeigemittel (123) angibt, durch Unterscheiden editiert werden, ob der Buszyklus des Mikroprozessors (101) zu einem Buszyklus gehört, der einem Befehl an oder vor dem vorgegebenen Befehlscode folgt, zur Änderung der Ausgabe der Statusmittel, oder einem Buszyklus, der einem Befehl nach dem vorgegebenen Befehlscode folgt.
2. Informationsverarbeitungssystem nach Anspruch 1, wobei die Befehlsdekodereinheit (105, 107) ferner ein Befehlscoderegister aufweist, das mit dem Befehlsdekoder gekoppelt ist zum Halten des Befehlscodes, der dekodiert wird, so daß der Befehlsdekoder den in dem Befehlscoderegister gehaltenen Befehlscode dekodiert, und wobei die Bussteuermittel (113) einen Adressbus-Schnittstellenteil aufweisen, der mit einem externen Adressbus gekoppelt ist und das erste und das zweite Registermittel (119, 125) aufweist, zum Ausgeben der in den ersten Registermitteln gehaltenen Adresse und des Inhalts der zweiten Registermittel an den Befehlstracer, der extern von dem Mikroprozessor, wobei ein Datenbus-Schnittstellenteil, der mit einem externen Datenbus gekoppelt ist, zum Verwalten von Datenkommunikationen zwischen dem System und dem Mikroprozessor vorgesehen ist und ein Buszyklus-Steuerteil zum Steuern des Buszyklus des Mikroprozessors, der Ausgabe eines Busstatus und der Eingabe-/Ausgabe von Signalen an und von dem Mikroprozessor.
3. Informationsverarbeitungssystem nach Anspruch 2, wobei der Datenbus-Schnittstellenteil eine Anzahl von temporären Leseregistern (116) aufweist, zum temporären Speichern von Daten, die von außerhalb der Vorrichtung des Mikroprozessors über den externen Datenbus zugeführt werden, und ein Temporärregister (117), das zeitweilig die im Mikroprozessor erzeugten Daten speichert, zur Ausgabe der erzeugten Daten über den externen Datenbus an die externe Vorrichtung des Mikroprozessors.
4. Informationsverarbeitungssystem nach Anspruch 3, wobei die Statusanzeigemittel (123) ein bistabiles Flip- Flop aufweisen, dessen Ausgang (124) in Abhängigkeit von jeder Dekodierung eines Verzweigungsbefehls invertiert wird und wobei die zweiten Registermittel (125) mit dem bistabilen Flip-Flop gekoppelt sind zum zeitweiligen Halten des Ausgangstatus des bistabilen Flip-Flops.
5. Informationsverarbeitungssystem nach Anspruch 4, wobei die Bussteuermittel eine Signalleitung (126) aufweisen zum Ausgeben des Inhaltes der ersten Registermittel, die zeitweilig den Ausgangsstatus des bistabilen Flip-Flops halten, an die externe Vorrichtung des Mikroprozessors.
6. Informationsverarbeitungssystem nach Anspruch 5, wobei die Speichermittel in dem Befehlstracer eine Gruppe von Registern aufweisen, die den entsprechenden Registern des Adressbus-Schnittstellenteils in einer 1:1-Beziehung entsprechen.
7. Informationsverarbeitungssystem nach Anspruch 6, wobei die zweiten Registermittel (125) eine Gruppe erweiterter Register (219, 221, 223, 225) aufweisen, die den entsprechenden Registern des Adressbus-Schnittstellenteils entsprechen, und mit ferner einer Signalleitung zum Ausgeben eines Signals eines der erweiterten Register, das aus der Gruppe erweiterter Register ausgewählt ist, an die externe Vorrichtung des Mikroprozessors.
8. Befehlstracingverfahren zur Verwendung mit einem Vielfunktionsprozessor (101), mit einer Mehrstufen-Pipelinestruktur und mit einem Adressgenerator (111), einer Bussteuerung (113) und einer Befehlsdekodiereinheit (107), die eine Folge von Befehlscodes zur Bestimmung einer Befehlsfolge zur Verarbeitung jeder einer Vielzahl von Stufen erhält, dadurch gekennzeichnet, daß die Befehlsdekodereinheit ein bistabiles Flip-Flop (123) aufweist, dessen Ausgangszustand invertiert wird, wenn eine vorgegebene Art von Befehlscode dekodiert wird, wobei das Verfahren die Schritte aufweist:
(i) Invertieren des Ausgangszustandes des bistabilen Flip- Flops (123) auf Realzeitbasis, wenn die vorgegebene Art von Befehlscode, der als ein Index bei einem Programmtracen verwendet wird, das nach dem ein zu testendes Programm ausgeführt wurde, durch die Befehlsdekodereinheit (107) dekodiert wird, wobei jedoch der Ausgangsstatus des bistabilen Flip-Flops (123) aufrechterhalten wird, wenn ein anderer Befehlscode als die vorgegebene Art Befehlscode dekodiert wird,
(ii) Speichern einer durch den Adressengenerator (111) erzeugten Adresse in einem einer Anzahl von Adressregistern (119) der Bussteuerung (113) und gleichzeitiges Speichern des Ausgangsstatus des bistabilen Flip-Flops (123) in einem entsprechenden erweiterten Register von erweiterten Registern (125) der Anzahl von Adressregistern,
(iii) Ausgeben des Inhalts des einen Adressregisters der Adressregister (119), das ausgewählt wird, wenn die Bussteuerung einen Buszyklus startet, an ein Adressbusanschluß (102) des Prozessors und Ausgeben des Inhalts des erweiterten Registers (125), das dem gewählten Adressregister entspricht, an einen Informationsausgangsanschluß (126) des Prozessors,
(iv) sequentielles Meranholen einer von dem Adressbusanschluß (102) des Prozessors ausgebenen Adresse und eines an dem Informationsausgangsanschluß (126) erscheinenden Signals in einen Befehlstracer für den Prozessor, und
(v) Bewirken einer Befehlsmnemonik und eines Operandenzugriffs jeden Befehlscode der Folge von Befehlscodes, so daß sie einander auf Basis der von dem Adressbusanschluß (102) des Prozessors ausgegebenen Adresse korrespondieren und in dem Befehlstracer geholt sind und dem Signal, das auf dem Befehlsausgangsanschluß (126) erschienen ist und in den Befehlstracer eingelesen wurde, wenn ein Befehlstracing des Prozessors für vorausschauendes Lesen von Leseoperanden und für nachträgliches Schreiben von Schreiboperanden durchgeführt werden.
DE3751356T 1986-04-18 1987-04-21 Informationsverarbeitungssystem. Expired - Fee Related DE3751356T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61090702A JPH0731615B2 (ja) 1986-04-18 1986-04-18 情報処理装置

Publications (2)

Publication Number Publication Date
DE3751356D1 DE3751356D1 (de) 1995-07-27
DE3751356T2 true DE3751356T2 (de) 1995-12-14

Family

ID=14005856

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3751356T Expired - Fee Related DE3751356T2 (de) 1986-04-18 1987-04-21 Informationsverarbeitungssystem.

Country Status (5)

Country Link
US (1) US4879646A (de)
EP (1) EP0241946B1 (de)
JP (1) JPH0731615B2 (de)
KR (1) KR930008686B1 (de)
DE (1) DE3751356T2 (de)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0782448B2 (ja) * 1987-12-10 1995-09-06 三菱電機株式会社 マイクロプロセッサ
JP2982875B2 (ja) * 1987-12-28 1999-11-29 株式会社日立製作所 スレーブ制御装置
JP2678283B2 (ja) * 1988-03-15 1997-11-17 株式会社日立製作所 データ通信制御装置
JPH0233631A (ja) * 1988-07-22 1990-02-02 Fujitsu Ltd 先行制御トレース方式
JPH02133834A (ja) * 1988-11-14 1990-05-23 Nec Corp インサートキットエミュレータ
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
JPH06105432B2 (ja) * 1989-06-01 1994-12-21 三菱電機株式会社 マイクロプロセッサ
FR2649507B1 (fr) * 1989-07-07 1994-07-08 Bull Sa Procede d'observation de l'execution d'un programme charge dans un systeme informatique et dispositif pour la mise en oeuvre dudit procede
US5412799A (en) * 1990-02-27 1995-05-02 Massachusetts Institute Of Technology Efficient data processor instrumentation for systematic program debugging and development
JPH0511827A (ja) * 1990-04-23 1993-01-22 Canon Inc 工業用自動装置の実行時間出力方式
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
JP2505950B2 (ja) * 1991-05-13 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション ハ―ドウェア支援ブレ―クポイント・システム
US5237684A (en) * 1991-08-12 1993-08-17 International Business Machines Corporation Customized and versatile event monitor within event management services of a computer system
US5355484A (en) * 1991-08-12 1994-10-11 International Business Machines Corporation Dynamically established event monitors in event management services of a computer system
US5305454A (en) * 1991-08-12 1994-04-19 International Business Machines Corporation Notification of event handlers in broadcast or propagation mode by event management services in a computer system
US5625821A (en) * 1991-08-12 1997-04-29 International Business Machines Corporation Asynchronous or synchronous operation of event signaller by event management services in a computer system
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
JP2693678B2 (ja) * 1992-01-28 1997-12-24 株式会社東芝 データ処理装置
JP3544214B2 (ja) * 1992-04-29 2004-07-21 サン・マイクロシステムズ・インコーポレイテッド プロセッサの状態を監視する方法及び監視システム
US5367657A (en) * 1992-10-01 1994-11-22 Intel Corporation Method and apparatus for efficient read prefetching of instruction code data in computer memory subsystems
US5383192A (en) * 1992-12-23 1995-01-17 Intel Corporation Minimizing the likelihood of slip between the instant a candidate for a break event is generated and the instant a microprocessor is instructed to perform a break, without missing breakpoints
US5410686A (en) * 1993-11-01 1995-04-25 Motorola, Inc. Methods for scan path debugging
JPH07182182A (ja) * 1993-12-21 1995-07-21 Mitsubishi Electric Corp システムコール情報採取装置
US5922070A (en) * 1994-01-11 1999-07-13 Texas Instruments Incorporated Pipelined data processing including program counter recycling
US5724566A (en) * 1994-01-11 1998-03-03 Texas Instruments Incorporated Pipelined data processing including interrupts
US5680583A (en) * 1994-02-16 1997-10-21 Arkos Design, Inc. Method and apparatus for a trace buffer in an emulation system
US5446876A (en) * 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
US5920712A (en) * 1994-05-13 1999-07-06 Quickturn Design Systems, Inc. Emulation system having multiple emulator clock cycles per emulated clock cycle
US5850562A (en) * 1994-06-27 1998-12-15 International Business Machines Corporation Personal computer apparatus and method for monitoring memory locations states for facilitating debugging of post and BIOS code
US5642478A (en) * 1994-12-29 1997-06-24 International Business Machines Corporation Distributed trace data acquisition system
US5923865A (en) * 1995-06-28 1999-07-13 Quickturn Design Systems, Inc. Emulation system having multiple emulated clock cycles per emulator clock cycle and improved signal routing
US5819065A (en) * 1995-06-28 1998-10-06 Quickturn Design Systems, Inc. System and method for emulating memory
US5754827A (en) * 1995-10-13 1998-05-19 Mentor Graphics Corporation Method and apparatus for performing fully visible tracing of an emulation
US5678003A (en) * 1995-10-20 1997-10-14 International Business Machines Corporation Method and system for providing a restartable stop in a multiprocessor system
US5822564A (en) * 1996-06-03 1998-10-13 Quickturn Design Systems, Inc. Checkpointing in an emulation system
US6003107A (en) * 1996-09-10 1999-12-14 Hewlett-Packard Company Circuitry for providing external access to signals that are internal to an integrated circuit chip package
US5881224A (en) * 1996-09-10 1999-03-09 Hewlett-Packard Company Apparatus and method for tracking events in a microprocessor that can retire more than one instruction during a clock cycle
US5867644A (en) * 1996-09-10 1999-02-02 Hewlett Packard Company System and method for on-chip debug support and performance monitoring in a microprocessor
US5887003A (en) * 1996-09-10 1999-03-23 Hewlett-Packard Company Apparatus and method for comparing a group of binary fields with an expected pattern to generate match results
US5956476A (en) * 1996-10-31 1999-09-21 Hewlett Packard Company Circuitry and method for detecting signal patterns on a bus using dynamically changing expected patterns
US5956477A (en) * 1996-11-25 1999-09-21 Hewlett-Packard Company Method for processing information in a microprocessor to facilitate debug and performance monitoring
US5881217A (en) * 1996-11-27 1999-03-09 Hewlett-Packard Company Input comparison circuitry and method for a programmable state machine
US6009539A (en) * 1996-11-27 1999-12-28 Hewlett-Packard Company Cross-triggering CPUs for enhanced test operations in a multi-CPU computer system
US5960191A (en) * 1997-05-30 1999-09-28 Quickturn Design Systems, Inc. Emulation system with time-multiplexed interconnect
US5970240A (en) * 1997-06-25 1999-10-19 Quickturn Design Systems, Inc. Method and apparatus for configurable memory emulation
US6202199B1 (en) * 1997-07-31 2001-03-13 Mutek Solutions, Ltd. System and method for remotely analyzing the execution of computer programs
JP3214613B2 (ja) * 1998-07-03 2001-10-02 日本電気株式会社 マイクロプロセッサ及びデータ処理システム
US6374370B1 (en) 1998-10-30 2002-04-16 Hewlett-Packard Company Method and system for flexible control of BIST registers based upon on-chip events
US6393606B1 (en) * 1999-06-25 2002-05-21 Agilent Technologies, Inc. Inverse assembler
US6446029B1 (en) * 1999-06-30 2002-09-03 International Business Machines Corporation Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
US20020087949A1 (en) * 2000-03-03 2002-07-04 Valery Golender System and method for software diagnostics using a combination of visual and dynamic tracing
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7069545B2 (en) * 2000-12-29 2006-06-27 Intel Corporation Quantization and compression for computation reuse
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
US8032866B1 (en) 2003-03-27 2011-10-04 Identify Software Ltd. System and method for troubleshooting runtime software problems using application learning
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
US7827539B1 (en) 2004-06-25 2010-11-02 Identify Software Ltd. System and method for automated tuning of program execution tracing
US20090178032A1 (en) * 2005-03-03 2009-07-09 Rongzhen Yang Mining for performance data for systems with dynamic compilers
US8108198B2 (en) * 2006-02-21 2012-01-31 Mentor Graphics Corporation Memory tracing in an emulation environment
US20070226471A1 (en) * 2006-03-13 2007-09-27 Arm Limited Data processing apparatus
US8010774B2 (en) * 2006-03-13 2011-08-30 Arm Limited Breakpointing on register access events or I/O port access events
US7555424B2 (en) 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
JP2008071227A (ja) * 2006-09-15 2008-03-27 Nec Electronics Corp 半導体集積回路
US9811335B1 (en) * 2013-10-14 2017-11-07 Quicklogic Corporation Assigning operational codes to lists of values of control signals selected from a processor design based on end-user software
US9858189B2 (en) * 2015-06-24 2018-01-02 International Business Machines Corporation Hybrid tracking of transaction read and write sets
US9760494B2 (en) 2015-06-24 2017-09-12 International Business Machines Corporation Hybrid tracking of transaction read and write sets

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6042968B2 (ja) * 1978-02-07 1985-09-26 日本電気株式会社 情報処理装置
JPS5916370B2 (ja) * 1979-05-07 1984-04-14 株式会社明電舎 真空しや断器
JPS56140931A (en) * 1980-04-04 1981-11-04 Nippon Zeon Co Ltd Preparation of conjugated diolefin
JPS56140932A (en) * 1980-04-07 1981-11-04 Toray Ind Inc Isolation of cyclohexene by adsorption
US4390946A (en) * 1980-10-20 1983-06-28 Control Data Corporation Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
JPS58181152A (ja) * 1982-04-15 1983-10-22 Fujitsu Ltd デ−タ処理装置のデバグ方式
US4775927A (en) * 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag

Also Published As

Publication number Publication date
DE3751356D1 (de) 1995-07-27
EP0241946A3 (en) 1989-12-27
KR870010438A (ko) 1987-11-30
JPH0731615B2 (ja) 1995-04-10
JPS62245442A (ja) 1987-10-26
US4879646A (en) 1989-11-07
EP0241946B1 (de) 1995-06-21
EP0241946A2 (de) 1987-10-21
KR930008686B1 (ko) 1993-09-11

Similar Documents

Publication Publication Date Title
DE3751356T2 (de) Informationsverarbeitungssystem.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE10085375B4 (de) Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE3689394T2 (de) Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor.
EP0293517B1 (de) Steuerprozessor
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE3587167T2 (de) Geraet zur vektorverarbeitung.
DE69127992T2 (de) Mikroprozessor zur Buszykluseinfügung zwecks Informationslieferung für eine Emulation
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69031658T2 (de) Vorrichtung und verfahren für instandhaltung von cache/zentralspeicherkonsistenz
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE2953861C2 (de)
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE19729618C2 (de) Mikroprozessor und Mehrprozessorsystem
EP0325677B1 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: NEC ELECTRONICS CORP., KAWASAKI, KANAGAWA, JP

8339 Ceased/non-payment of the annual fee