DE3750935T2 - Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. - Google Patents
Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.Info
- Publication number
- DE3750935T2 DE3750935T2 DE3750935T DE3750935T DE3750935T2 DE 3750935 T2 DE3750935 T2 DE 3750935T2 DE 3750935 T DE3750935 T DE 3750935T DE 3750935 T DE3750935 T DE 3750935T DE 3750935 T2 DE3750935 T2 DE 3750935T2
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- unit
- information
- processor
- cache memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 33
- 230000015654 memory Effects 0.000 claims description 99
- 230000009466 transformation Effects 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims 3
- 230000003111 delayed effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die Erfindung betrifft ein Verfahren zum Erleichtern der Verarbeitung eines Befehles in einem Rechner gemäß dem Oberbegriff van Anspruch 1 und ein System zum Erleichtern der Verarbeitung eines Befehles in einem Rechner nach dem Oberbegriff von Anspruch 12 (EP 0 052 194 A1).
- Die Erfindung betrifft allgemein digitale Rechner mit Cache- Speichern, bei denen Information zwischen einem Hauptspeicher und einem Hochgeschwindigkeitsprozessor über einen Hochgeschwindigkeits-Cache-Speicher ausgetauscht wird. Ein Cache- Speicher ist ein schneller kleiner Speicher, der zwischen einem langsameren Hauptspeicher und einem Hochgeschwindigkeits- Prozessor angeordnet ist. In der Vergangenheit wurden Cache- Speicher dazu verwendet, häufig verwendete Teile des Hauptspeichers für einen sehr schnellen Zugriff durch einen zugeordneten Hochgeschwindigkeits-Prozessor zu speichern. Ursprünglich war der Cache-Speicher dazu vorgesehen, eine nicht modifizierte Untermenge des Inhaltes eines Hauptspeichers zu enthalten. Mit anderen Worten, der Inhalt des Hauptspeichers und des Cache-Speichers unterschieden sich, wenn überhaupt, nur vorübergehend, wenn der Cache-Speicher von dem Prozessor beschrieben wurde. Diese Schreiboperationen spiegeln sich jedoch entweder sofort oder später in einem Beschreiben des Hauptspeichers wieder.
- Der Zweck von Hochleistungs-Prozessoren, wie parallelen Prozessoren und RISC-Prozessoren (Prazessoren für Rechner mit vermindertem Befehlsavorrat), ist die schnellste und effizienteste Ausführung von vorgegebenen Befehlen. Ein Befehl ist eine Form von digitaler Information, welcher eine Operation und die Operanden definiert und von einem Prozessor ausgeführt wird. Die Ausführung eines Befehles ist die Ausführung einer Operation durch den Prozessor. Bei der Dekodierung eines Befehles muß aus Informationsbits, welche den Befehl definieren, ermittelt werden, welche Operation mit welchen Operanden ausgeführt werden soll. Die Dekodierung eines Befehls ist erforderlich, um Steuerbits zu erzeugen, welche die Werte sind, die an den Steuerpunkten des Prozessors vorgesehen werden.
- Zur Dekodierung eines Befehls vor der Ausführung des Befehls ist eine endliche Zeitspanne notwendig.
- Die EP 0 052 194 A1 offenbart ein System zur Verwendung in einem Rechner gemäß dem ersten Teil von Anspruch 12 und ein Verfahren gemäß dem ersten Teil von Anspruch 1, bei denen Befehle, welche aus dem Hauptspeicher in den Cache-Speicher geladen werden, bevor sie im Cache-Speicher gespeichert werden, vordekodiert werden, um direkt durch den Prozessor ausgeführt werden zu können. Im Falle von Verzweigungsbefehlen ist eine endliche Zeitspanne notwendig, um die Adresse des Zielbefehles zu berechnen. in der Vergangenheit war es notwendig, einen ausreichend langen Befehlszyklus vorzusehen, um alle Bits eines Befehles zu untersuchen, um zu ermitteln, welche Operation ausgeführt werden soll und welcher Befehl als nächstes abgerufen werden soll. Langsame Rechner, d.h. Rechner, bei denen alle Stufen der Befehlsverarbeitung sequentiell durchgeführt werden, ohne daß sich Stufen zwischen den Befehlen überlappen, müssen eine ausreichend lange Latenzzeit vorsehen, um alle Teile des Befehles auszuführen. Bei schnelleren Rechnern, beispielsweise bei Rechnern, welche einen Pipeline-Prozessor verwenden, bei dem sich Schritte eines Befehlszyklus überlappen können, müssen die Schritte eines Befehles hinausgezögert werden, welche sich auf die Beendigung der Schritte eines vorherigen Befehles verlassen. Daraus kann sich ein Blockieren der Pipeline und ein Verlust von einem oder mehreren Maschinenzyklen ergeben.
- Es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren zum Vermeiden von Verzögerungen bei der Ausführung von Befehlen abhängig von der Beendigung eines anderen Befehles sowie ein hierauf bezogenes Rechnersystem vorzusehen.
- Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und durch ein System gemäß Anspruch 12 gelöst.
- Die vorliegende Erfindung hat viele Vorteile. Einer der Vorteile dieser Erfindung ist die Fähigkeit, Operationen wesentlich zu beschleunigen. Verzweigungs- oder Sprungbefehle oder Datentransformationsprozesse können wirksam in weniger als einem Maschinenzyklus ausgeführt werden.
- Wenn die Architektur verzögerte Sprungbefehle definiert, d.h. Sprungbefehle, bei denen auch der dem Sprungbefehl unmittelbar nachfolgende Befehl ausgeführt wird und die daher einen damit verbundenen Verzögerungsbefehl enthalten müssen, erlaubt diese Erfindung, daß der Sprungbefehl in effektiv null Maschinenzyklen ausgeführt wird, weil der Verzögerungsbefehl während des Maschinenzyklus ausgeführt werden kann, indem der Sprungbefehl normalerweise ausgeführt werden würde, während der Zieladressbefehl von dem Speicher abgerufen wird. Dies erfordert zusätzlich die Fähigkeit, in demselben Zyklus zwei Befehle von den Cache-Speicher abzurufen, anstatt in einem Zyklus nur einen Befehl von dem Cache-Speicher abzurufen.
- Die Erfindung ist im folgenden mit weiteren Einzelheiten in Bezug auf die Zeichnungen näher erläutert. In den Figuren zeigen:
- Fig. 1 ein Blockdiagramm eines Teiles eines herkömmlichen Rechners mit einem Cache-Speicher nach dem Stand der Technik,
- Fig. 2 ein Blockdiagramm einer Ausführungsform eines Teiles eines Rechners nach der vorliegenden Erfindung,
- Fig. 3 ein Blockdiagramm einer anderen Ausführungsform eines Teiles eines Rechners nach der vorliegenden Erfindung,
- Fig. 4 ein Blockdiagramm einer weiteren Ausführungsform eines Teiles eines Rechners nach der vorliegenden Erfindung,
- Fig. 5 ein Flußdiagramm eines Verfahrens nach der vorliegenden Erfindung,
- Fig. 6 ein Flußdiagramm weiterer Einzelheiten eines Verfahrens nach der vorliegenden Erfindung, und
- Fig. 7 ein Zeitdiagramm zur Erläuterung des Ablaufs von Null-Zyklen-Befehlen.
- In Fig. 1 ist ein Teil eines herkömmlichen Rechners 10 nach dem Stand der Technik gezeigt, bei dem ein Cache-Speicher 12 verwendet wird. Ein Hauptspeicher 14 ist normalerweise sehr groß, und er besteht aus Komponenten, welche relativ wirtschaftlich, im Betrieb jedoch im Vergleich zur Geschwindigkeit des Betriebs des Prozessors 16 relativ langsam sind. Der Cache-Speicher (oder Cache) 12 ist relativ schnell, dies hat zur Folge, daß er aus Komponenten besteht, die relativ teuer sind. Üblicherweise wurde daher nur ein relativ kleiner Cache-Speicher 12 vorgesehen, um einen kleinen Teil eines genauen Abbildes der in dem Hauptspeicher 14 gespeicherten Information zu speichern, nämlich den Teil der Information aus dem Hauptspeicher 14, der mit der größten Wahrscheinlichkeit von dem Prozessor 16 benötigt wird.
- Dem Cache-Speicher 12 zugeordnet ist eine Cache-Steuerungseinrichtung 18. Seine Rolle umfaßt die Handhabung von Anforderungen über Befehls- und Adressleitungen 20 von dem Prozessor 16 für Informationseinheiten in der Form von Dateneinheiten oder Befehlseinheiten (beispielsweise Daten-Bytes oder Datenwörter), und er bewirkt, daß die angeforderte Information über die Daten- und Befehlsleitungen 22 van dem Cache-Speicher 12 zu dem Prozessor 16 übertragen wird. Für den Fall, daß der Cache-Speicher 12 die angeforderte Informationseinheit nicht enthält, kann die Cache-Steuerungseinrichtung 18 über die Adressleitungen 24 Blöcke der Informationseinheiten von dem Hauptspeicher 14 in den Cache-Speicher 12 wiedergewinnen (abrufen), welche unverändert über die Datenleitungen 26 zum dem Cache-Speicher 12 übertragen würden.
- In Fig. 2 ist ein Teil eines Rechnersystems 100 gezeigt, welches eine Ausführungsform der vorliegenden Erfindung darstellt. Andere Ausführungsformen werden sich bei Betrachtung der Ausführungsbeispiele ergeben. Der Einfachheit halber entsprechen die Bezeichnungen von Komponenten, welche identisch oder im wesentlichen identisch mit bekannten Elementen nach dem Stand der Technik sind, den in Fig. 1 verwendeten Bezugszeichen. Erfindungsgemäß ist ein logisches Element 30 zwischen den Hauptspeicher 14 und den Cache-Speicher 112 eingefügt, das ausgewählte Informationseinheiten in eine Form transformiert, welche für einen Prozessor besser nutzbar ist. Derartige transformierte Informationseinheiten werden in den Cache-Speicher 112 in einer Form gespeichert, welche für einen Prozessor, wie den Prozessor 116, erkennbar ist.
- Das logische Element 30 kann so gestaltet sein, daß es nur Befehle oder nur Daten oder Befehle und Daten vorverarbeitet. Die in Fig. 2 gezeigte Konfiguration dient lediglich einer verallgemeinerten Darstellung der Erfindung und kann von der tatsächlichen Realisierung in ihren Einzelheiten abweichen. Beispielsweise können die Leitungen 26 für die Informationseinheiten einen ersten Leitungssatz 32 umfassen, der zu dem logischen Element 30 führt und der einen Teil einer Informationseinheit übertragen soll, welcher von dem logischen Element 30 transformiert werden soll, sowie einen zweiten Leitungssatz 34 aufweisen, der immer unverändert zu einem Cache- Speicher 112 führt. Von dem zweiten Leitungssatz 34 kann ferner ein Teil 36 des Leitungssatzes zu dem logischen Element 30 geführt werden, um diesen Teil einer Informationseinheit, welche von dem ersten Leitungssatz 32 übertragen wird, zu verarbeiten. Das logische Element 30 ist mit dem Cache-Speicher 112 über einen dritten Leitungssatz 38 verbunden, der in Verbindung mit dem zweiten Leitungssatz 34 vermehrte Informationsleitungen 126 zu dem Cache-Speicher 112 definiert.
- Bestimmte Prozeßarten können beschleunigt werden, wenn der Cache-Speicher 112 eine Einrichtung zum gleichzeitigen Weitergeben von mehr als einer Informationseinheit an den Prozessor hätte. Es ist daher ein Cache-Speicher 112 dargestellt, der zwei parallele Pfade für Informationseinheiten zu einem Prozessor 116 aufweist, der so modifiziert wurde, daß er Informationseinheiten gleichzeitig empfängt. Es wird angenommen, daß der Prozessor 116 zu einem bestimmten Zeitpunkt nur eine Informationseinheit verarbeiten kann. Zur Darstellung dieser optionalen Konfiguration zeigt der Prozessor 116 ein erstes Informationseinheit-Register (IR1) 44 und ein zweites Informationseinheit-Register (IR2) 46, die so angeschlossen sind, daß sie jeweils Informationseinheiten über eine erste Informationsleitung 122A bzw. eine zweite Informationsleitung 122B empfangen, sowie einen Multiplexer (MUX) 48, der zwischen IR1 44 und IR2 46 auswählen kann, um die ausgewählte Informationseinheit auf die alte herkömmliche Weise durch den Prozessor 116 zu leiten, wie durch eine Zielposition 50 dargestellt ist.
- Eine noch weiter verallgemeinerte Cption ist in Verbindung mit Fig. 2 gezeigt. Optionale Steuerleitungen 40 können direkt zwischen dem Prozessor 116 und dem logischen Element 30 vorgesehen werden, wenn das logische Element 30 eine Transformationseinheit mit mehreren Funktionen ist. Das logische Element 30 kann beispielsweise eine Einheit sein, welche nur Operationscodes (im folgenden als Opcodes bezeichnet) vordecodieren kann, oder sie kann eine Einheit sein, welche nur Befehlsadressen berechnen kann. Die Art der Vordecodierung oder Berechnung, welche das logische Element 30 also durchführen muß, wäre daher eng mit der Informationseinheit verknüpft (inherent), welche auf einen allgemeinen Abrufbefehl hin, der zur gegebenen Zeit von der Cache-Steuerungseinrichtung 18 an den Hauptspeicher 14 ausgegeben wird, an das logische Element übergeben wird. Bei einer allgemeineren Realisierung kann es jedoch erforderlich sein. daß der Prozessor dem logischen Element 30 weitere Anweisungen gibt, wodurch das logische Element über die Art der Informationseinheit informiert wird, welche in Verbindung mit dem Abrufbefehl von einer bestimmten Stelle erwartet werden kann. Das logische Element könnte beispielsweise wissen müssen, ob die Informationseinheit bei einer bestimmten Adresse in diesem Zusammenhang als ein Datenwort oder als ein Befehl behandelt werden soll, und wenn sie als Befehl behandelt werden soll, als welche Art von Befehl. Es müssen daher Vorkehrungen getroffen werden, um einen unmodifizierten Befehl von dem Hauptspeicher 14 immer dann abzurufen, wenn die Information bei einer Stelle in dem Hauptspeicher als Daten behandelt werden soll (d.h. die Information soll mit einem Befehl bearbeitet werden).
- Speziellere Beispiele von Anordnungen, welche die vorliegende Erfindung realisieren, sind in Fig. 3 und in Fig. 4 gezeigt. In Fig, 3 ist ein Teil eines Rechnersystems gemäß der vorliegenden Erfindung gezeigt, bei dem das logische Element ein Befehls-Vordecodierer 130 ist. Der Befehls-Vordecodierer 130 kann auf jede passende Weise realisiert werden, beispielsweise als Zufallslogik. ROM (Festspeicher), PROM (programmierbarer Festspeicher), PAL (programmierbare Matrixlogik) oder PLA (programmierbare Logikanordnung). Augrund der sehr allgemeinen Natur des Konzeptes eines Befehls-Vordecodierers 130 gibt es nicht nur eine Form, welche zur Realisierung der Erfindung am besten geeignet wäre. Seine Struktur wird wesentlich durch die auszuführende Aufgabe und die für seine Realisierung gewählte Technologie bestimmt.
- Bei dem in Fig. 3 gezeigten Ausführungsbeispiel sieht der Hauptspeicher 14 als Leitungen für die Informationseinheiten einen 32 Bit breiten Befehlsbus 26 vor, der in einen 6 Bit breiten Opcode-Pfad 32 und in einen 26 Bit breiten Restpfad 34 aufteilbar ist. Des Restpfad 34 entspricht also dem Befehlsbus weniger dem Opcode. Der Restpfad 34 umfaßt einen 10 Bit breiten Leitungssatz 36, der parallel zu dem Befehls-Vordecodierer 130 und zu dem Cache-Speicher 112 verzweigt wird. Der 10 Bit breite Leitungssatz 36 wird dazu verwendet, den Teil des Befehles weiterzugeben, der unverändert zu dem Cache-Speicher 112 weitergegeben werden soll, den jedoch auch der Vordecodierer 130 benötigt. Der Vordecodierer 130 kann ein einfacher PROM sein, der bei dem vorliegenden Beispiel einen Adresswert mit einer Breite von 9 Bit abhängig von dem als ein Eingangssignal empfangenen, 16 Bit breiten Befehlswert ausliest.
- Ein Adressverteilerbus 38 liefert parallel zu dem Restpfad 34 neun Bits, um eine Informationseinheit mit einer Breite von 35 Bits auf den Datenleitungen 126 an den Cache-Speicher 112 zu liefern. Ein entsprechender 35 Bit breiter Pfad 122 ist zwischen dem Cache-Speicher 112 und dem Prozessor 116 vorgesehen. Bei dem gegebenen Beispiel wird der neun Bit breite Adressverteilerabschnitt des Pfades 122 dazu verwendet, einen Satz binärer Bitwerte auszuwählen, welche Signale darstellen, die direkt mit den Steuerpunkten 51 des Prozessors 116 verdrahtet sind.
- Die Cache-Steuerungseinrichtung 18 wird über die Adressleitungen 20 von den Prozessor 116 angesteuert und überwacht die Übertragung der Daten und Befehle in und aus dem Cache-Speicher 112. Adressen werden zu dem Hauptspeicher 14 über einen Adressbus 24 geleitet. Optional können Befehlsauswahlleitungen 40 und 42 von dem Prozessor 116 und der Cache-Steuerungseinrichtung 18 zu dem Vordecodierer 130 vorgesehen werden, so daß der Vordecodierer zwischen Befehlen und Daten unterscheiden kann und die Befehlsart oder die Datenart identifizieren kann, welche von dem Hauptspeicher 14 zu erwarten ist.
- Im Betrieb sieht der Vordecodierer 130 einen Teil der Funktionen vor, welche früher von einem Prozessor ausgeführt wurden. Der Vordecodierer 130 kann beispielsweise jedes der Opcode- Muster decodieren, die bei sechs Haupt-Opcode-Bits und zehn Hilfs- oder Subop-Bits möglich sind, um einen Satz von neun Binärwert-Signalen zu bilden, die als ein Teil eines 35-stelligen Binärwert-Wortes in dem Cache-Speicher 112 gespeichert werden. Die neun Signale sind Signale, welche direkt von dem Prozessor 116 ausgeführt werden können, ohne daß eine weitere Decodierung notwendig wäre, d.h., die neun Bits werden zum Auswählen eines Satzes von binären Bitwerten eingesetzt, die Signale darstellen, welche direkt Steuerpunkte 51 (siehe beispielsweise Fig. 2) des Prozessors 116 ansteuern.
- Die Vordecodierung hat erhebliche Vorteile, weil der in dem Cache-Speicher gespeicherte Befehl üblicherweise mehrmals aufgerufen wird, wenn er einmal in dem Cachespeicher 112 gespeichert wurde. Der herkömmliche Schritt für die Decodierung in dem Befehlsausführungsprozeß wird verkürzt oder ganz eliminiert, und ein Teil der oder die gesamte zum Ausführen der Decodierung notwendige Zeit wird für die Cache-Fehltreffer-Operationen verwendet (eine Operation, bei der Information, welche in dem Cache-Speicher 112 nicht aufgefunden wird, von dem Hauptspeicher 14 abgerufen wird).
- Bei einer speziellen Ausführungsform sollten alle Befehle vorzugsweise dieselbe Länge haben, um eine schnelle Decodierung zu erleichtern. Um Wortbreiten für alle Befehle zu ermöglichen, wird der Cache-Speicher 112 so erweitert, daß die Breite des breitesten vordecodierten Satzes von Binärwerten und das Ergebnis des Befehles untergebracht werden können. Bei der Ausführungsform von Fig. 3 hat man herausgefunden, daß eine gemäßigte Vergrößerung der Cache-Breite um drei Bit (von 32 Bit auf 35 Bit) zu einer Abnahme der Zyklus zeit geführt hat.
- Fig. 4 zeigt eine andere Ausführungsform nach der vorliegenden Erfindung. Bei der Ausführungsform von Fig. 4 erlaubt die Transformation die Berechnung einer Zielsprungadresse eines Sprungbefehles im voraus. Ein Befehl umf aßt im allgemeinen mindestens zwei Teile: Abrufen (Wiedergewinnen) und Ausführen. Der Ausführungsteil eines Sprungbefehles erfordert normalerweise zwei Schritte. Im ersten Schritt wird durch eine Berechnung die Zielsprungadresse aus der relativen Adressinformation ermittelt, welche den Sprung-Opcode begleitet. Im zweiten Schritt wird zu der berechneten Adresse gesprungen. Dieser zweite Ausführungsschritt eines Sprungbefehles ist gleichzeitig der Abrufteil seines Zielbefehles. Bei der Pipelineverarbeitung sollten sich die Teile Abrufen und Ausführen aufeinanderfolgender Befehle vorzugsweise überlappen, um die Vorteile der Resourcen des Prozessors vollständig auszuschöpfen. Ein herkömmlicher Sprungbefehl vergeudet in einem Pipelinesystem Zeit, weil der Prozessor auf die Beendigung des ersten Ausführungsschrittes (die Berechnung der Sprungzieladresse) warten muß, bevor er den zweiten Ausführungsschritt (Abrufen der Informationseinheit bei der Sprungzieladresse) beginnen kann. Dieses Problem wird durch eine Struktur, wie die in Fig. 4 gezeigte, gelöst.
- In Fig. 4 ist ein Teil eines Rechensystems 200 gezeigt, mit einem Hauptspeicher 14, einem Cache-Speicher 212, einer zugeordneten Cache-Steuerungseinrichtung 218 und einem Prozessor 116. Zwischen dem Hauptspeicher 14 und dem Cache-Speicher 212 ist auf Datenleitungen 126 und 226 ein Befehlsadressen-Berechner 230 eingefügt. Im Falle von Sprungbefehlen ist der Adressenberechner 230 im wesentlichen ein Addierer, der die Befehlsadresse von Leitungen 142 zu dem Verschiebungsfeld des Sprungbefehls addiert, um die Adresse des Zielbefehles zu erhalten. Um die Verarbeitung dieses Sprungbefehles zu vereinfachen, ist ein Multiplexer (MUX) 222 bei dem Adresseingang der Cache-Steuerungseinrichtungs 218 vorgesehen. Die Cache- Steuerungseinrichtung 218 überwacht den Betrieb des MUX 222, so daß dieser den Empfang von Adressinformationen von entweder dem Prozessor 116 oder von dem Cache-Speicher 212 auswählen kann. Wenn Information auf diese Weise von dem Cache-Speicher 212 wiedergewonnen wird, bringt der über die Leitungen 122 vom Prozessor 116 abgerufene Sprungbefehl die Sprungzieladresse mit, welche von dem Befehlsadressen-Berechner 230 vorberechnet wurde.
- Fig. 7 zeigt Zeitablaufdiagramme von Maschinenzyklen, um zwei Betriebsmodi für verschiedene Fälle darzustellen, nämlich den Fall eines Sprungbefehles und den Fall eines Formatumwandlungsbefehles. Da die Fälle grundsätzlich im wesentlichen identisch sind, wird nur der Fall des Sprungbefehles erläutert.
- Die Gruppe A in Fig. 7 zeigt den Zeitablauf eines nicht verbesserten Sprungbefehles mit einer verzögerten Verzweigung. Eine Anzahl von Maschinenzyklen 402, 404, 406 und 408 ist dargestellt. Jeder Befehl umfaßt mindestens zwei Schritte, einen Abrufschritt und einen Ausführungsschritt, wobei jeder Schritt während eines anderen Maschinenzyklus auftritt. Während eines ersten Maschinenzyklus 402 läuft ein Abrufschritt 401 eines ersten Befehles (der in diesem Fall ein Sprung- oder Verzweigungsbefehl ist) ab. Während des nächsten Maschinenzyklus 404 läuft ein Ausführungsschritt 403 des ersten Befehles gleichzeitig mit dem Abrufschritt 405 eines zweiten Befehles (der in diesem Fall ein Verzögerungsbefehl ist) ab. Da der Ausführungsschritt 403 des ersten Befehles die Sprungzieladresse berechnet, kann der dritte Befehl (in diesem Fall einen Befehl bei der Sprungzieladresse) erst während des Maschinenzyklus 406 abgerufen werden und dann während des Ausführungsschrittes 411 in dem Maschinenzyklus 408 ausgeführt werden.
- Wenn die Architektur des Prozessors des Rechners ohne die Möglichkeit einer verzögerten Verzweigung ausgelegt ist, kann der Abrufschritt 409 für den Zielbefehl nicht während des Maschinenzyklus 404 ablaufen, so daß ein Pipeline-Verriegelungszyklus notwendig wird, wobei im Maschinenzyklus 406 kein Ausführungsschritt durchgeführt werden kann. Bei der vorliegenden Erfindung kann jedoch selbst dann, wenn die Architektur nicht die Möglichkeit einer verzögerten Verzweigung vorsieht, der Abrufschritt 409 für den Zielbefehl während des Maschinenzyklus 404 ablaufen, weil die Sprungzieladresse im voraus berechnet und in dem Cache-Speicher gespeichert wurde.
- Die Gruppe B von Fig. 7 zeigt den Zeitablauf eines Nullzyklus- Sprungbefehles gemäß der vorliegenden Erfindung, wenn eine verzögerte Verzweigung in der Rechnerarchitektur vorgesehen ist. Während eines ersten Maschinenzyklus 402 werden gleichzeitig der erste und der zweite Befehl während eines Abrufschrittes 501 abgerufen (die Befehle sind in diesem Fall ein Sprungbefehl und sein zugeordneter Verzögerungsbefehl). Während des nächsten Maschinenzyklus 404 laufen gleichzeitig der Ausführungsschritt 503 des zweiten Befehles (der in diesem Fall der Verzögerungsbefehl ist) und der Abruf schritt 505 des dritten und des vierten Befehles ab (die in diesem Fall ein Befehl bei der Sprungzieladresse und ein Befehl bei der der Sprungzieladresse folgenden Adresse sind). Da der Ausführungsschritt 503 in dem Maschinenzyklus 404 nicht notwendig ist, um die Sprungzieladresse zu erhalten, kann der dritte Befehl (in diesem Fall ein Befehl bei der Sprungzieladresse) im selben Mashinenzyklus abgerufen und während des nächsten Maschinenzyklus 406 ausgeführt werden, und der nächste Befehl kann während des Maschinenzyklus 408 ausgeführt werden. Ein Vergleich von Gruppe A und Gruppe B zeigt daß sich im Ergebnis eine Zeitersparnis von einem Maschinenzyklus ergibt.
- Der Unterschied liegt darin, daß in normalen Betrieb des Cache-Speichers zu einem Zeitpunkt nur ein Befehl abgerufen wird, während bei dem Nullzyklus-Sprungbefehl ein Mechanismus vorgesehen sein muß, um zwei aufeinanderfolgende Befehle abzurufen. Eine Struktur, welche einen solchen Mechanismus zum Abholen von zwei Befehlen vorsieht, wurde allgemein in Fig. 2 gezeigt, bei der IR1 44 und IR2 46 Informationseinheiten gleichzeitig von dem Cache-Speicher 112 empfangen. Diese Struktur wird genauer in der Ausführungsform von Fig. 4 betrachtet, bei der ein Nullzyklus-Sprungbefehl realisiert ist. Während bei dem normalen Zyklus der Prozessor 116 den Befehl Nummer eins abrufen würde und dann den Befehl Nummer eins ausführen würde, während er den Befehl Nummer zwei abruft, und dann den Befehl Nummer zwei ausführen würde, während er den Befehl Nummer drei abruft, und so weiter, würde der Prozessor 116 bei dem Nullzyklus-Sprungbefehl den Befehl Nummer eins und den Befehl Nummer zwei gleichzeitig abrufen und, wenn es sich um einen geeigneten Befehl handelt, würde er den Befehl Nummer zwei ausführen, während er das Ziel des Sprunges abruft, welches der Befehl Nummer eins wäre, und dann würde der Prozessor das Ziel des Sprunges ausführen.
- Bei einem Pipelineprozessor würde dieses Verfahren im Vergleich zu der herkömmlichen Verarbeitung von Sprungbefehlen Maschinenzyklen einsparen. Wie in Fig. 7 gezeigt, würde der Prozessor während einer Periode von drei Maschinenzyklen effektiv vier Befehle ausführen, einschließlich eines Sprungbefehles, der effektiv in null Zyklen ausgeführt würde. Dasselbe Verfahren könnte für Datenumwandlungsbefehle angewendet werden, wenn Daten beim Laden des Cachespeichers von dem Hauptspeicher transformiert werden sollen. Eine Beschränkung des Befehlssatzes, für den diese Fähigkeit gilt, ist folgende: Der Sprung muß relativ zu der Adresse des Sprungbefehles erfolgen und nicht relativ zu dem Programmzähler. Bei einer Rechenmaschine, welche verzögerte Sprünge verwendet, ist nicht notwendigerweise vorgesehen, daß der momentane Inhalt des Programmzählers (nicht gezeigt) gleich der Adresse des Sprungbefehles ist.
- In Fig. 5 ist ein Flußdiagramm für ein verallgemeinertes Verfahren gemäß der vorliegenden Erfindung gezeigt. Es wird angenommen, daß bereits entschieden wurde, ob die Informationseinheit einem Befehl oder Daten entspricht. In Fig. 5 ist der erste Schritt daher das Abrufen, d.h. Anfordern eines Befehles oder einer Dateneinheit von dem Cache-Speicher 112 durch den Prozessor 116 (Schritt A), wobei für diesen Zweck auf Fig. 2 Bezug genommen werden kann. Der Cache-Kontroller 18 ermittelt, ob der angeforderte Befehl oder die Dateneinheit in dem Cache- Speicher 116 ist (Schritt B). Wenn den so ist, dann wird der Befehl oder die Dateneinheit zu dem Prozessor 116 weitergegeben und verarbeitet (Schritt C). Diese Operation kann dann wieder neu beginnen (Schritt A). Wenn der Befehl oder die Dateneinheit nicht in dem Cache-Speicher 112 ist, fordert die Cache-Steuerungseinrichtung 18 diesen Block der Informationseinheiten von dem Hauptspeicher 14 an, von dem (aus der Adressanforderung) bekannt ist, daß er die ursprünglich angeforderte Informationseinheit enthält (Schritt D) Die Cache-Steuerungseinrichtung 18 überwacht die Übertragung von dem Hauptspeicher 14 zu den Cache-Speicher 112, bis der gesamte Block gespeichert und, wenn notwendig, verarbeitet worden ist (Schritt E). Der Cache-Kontroller 18 bewirkt die Übertragung jeder Informationseinheit (je nach Fall, Daten oder Befehl) von dem Hauptspeicher 14 zu dem Cache-Speicher 112 (Schritt F) und ermittelt für jede Informationseinheit, ob die Einheit eine Transformation benötigt (Schritt G). Wenn sie keine Information erfordert, speichert die Cache-Steuerungseinrichtung 18 die Informationseinheit in dem Cache-Speicher 112 (Schritt J) und setzt die Ermittlung, ob der gesamte Block übertragen worden ist, fort (Schritt E). Wenn die Informationseinheit eine Transformation benötigt, dann wird gemäß der vorliegenden Erfindung die Informationseinheit transformiert, d.h., ein Befehl wird vordecodiert, die Zielsprungadresse eines Sprungbefehles wird vorberechnet oder eine andere vorgegebene Vorverarbeitung einer Dateneinheit oder eines Befehles wird ausgeführt (Schritt H). Die sich ergebende transformierte Informationseinheit wird in dem Cache-Speicher 112 gespeichert (Schritt J), und die Cache-Steuerungseinrichtung überprüft, ob der gesamte Block gespeichert worden ist (Schritt E). Wenn der gesamte Block einmal gespeichert ist, kann nun die ursprünglich angeforderte Informationseinheit, welche in dem Cache- Speicher 112 gespeichert worden ist, unter der Steuerung des Prozessors 116 verarbeitet werden (Schritt C).
- Fig. 6 zeigt ein Flußdiagramm, in dem weitere Einzelheiten optionaler Schritte bei der Position des Schrittes H dargestellt sind, abhängig von der Architektur des speziellen Rechners. Wenn in dem Cache Informationseinheiten behandelt werden können, die sowohl Daten als auch Befehle sind, muß man zwischen Daten und Befehlen unterscheiden können (Schritt H1). Wenn die Informationseinheit Daten entspricht, muß ermittelt werden, ob die Daten transformiert werden müssen (Schritt H5), und daraufhin wird ein Datentransformations-Schritt oder Datentransformations-Schritte durchgeführt (Schritt H6), beispielsweise eine Konvertierung des Datenformats. Wenn sie ein Befehl ist, muß die Art des Befehles identifiziert werden, beispielsweise, ob der Befehl ein Sprungbefehl ist (Schritt H2). Wenn er ein Sprungbefehl ist, berechnet das logische Element, üblicherweise ein Addierer (Element 230 von Fig. 4), die Sprungzieladresse (Schritt H3). In jedem Fall, in dem eine Vordecodierung erwünscht ist, wird der Befehl zumindest teilweise in einen Satz von binären Werten decodiert, welche die Signale für die Steuerpunkte des Prozessors darstellen (Schritt H4). Dieser Prozeß wird dann, wie oben beschrieben, mit dem nächsten Schritt (Schritt J) fortgesetzt.
Claims (17)
1. Verfahren zum Erleichtern der Verarbeitung eines Befehles
in einem Prozessor eines Rechners, wobei dem Prozessor
ein Hauptspeicher und ein Cache-Speicher zugeordnet sind
und der Cache-Speicher in dem Hauptspeicher gespeicherte
Informationseinheiten empfängt, um diese
Informationseinheiten zur Verwendung durch den Prozessor besser
verfügbar zu machen, mit folgenden Verfahrensschritten:
Anfordern von mindestens einer Informationseinheit von
dem Hauptspeicher durch den Prozessor,
Transformieren mindestens eines Teiles dieser mindestens
einen Einheit mit einem Transformationselement, um
mindestens eine transformierte Informationseinheit zu
erzeugen, und
Speichern der mindestens einen transformierten Einheit in
dem Cache-Speicher zur möglichen Verwendung durch den
Prozessor,
dadurch gekennzeichnet, daß bei dem
Transformationsschritt identifiziert wird, ob die mindestens eine
Einheit ein Verzweigungsbefehl ist, und eine Verzweigungs-
Zieladresse berechnet wird, wenn diese Einheit ein
Verzweigungsbefehl ist.
2. Verfahren nach Anspruch 1, bei dem beim
Transformationsschritt die mindestens eine Informationseinheit als ein
Befehl behandelt wird und mindestens ein Teil dieses
Befehles verarbeitet wird, um einen zwischendecodierten
Befehl als die transformierte Einheit zur Speicherung in
dem Cache-Speicher zu erzeugen.
3. Verfahren nach einem der vorangehenden Ansprüche, bei dem
der Cache-Speicher ein Cache-Speicher ist, der sowohl
Befehle als auch Dateneinheiten speichern kann, und bei
dem ferner unterschieden wird, ob die mindestens eine
Einheit ein Befehl ist oder Daten ist.
4. Verfahren nach einem der vorangehenden Ansprüche, bei dem
beim Transformationsschritt identifiziert wird, ob die
Informationseinheit Daten ist und das Format der Daten
umgewandelt wird, um die transformierte Einheit zu
erzeugen, wenn die Informationseinheit Daten ist.
5. Verfahren nach einem der vorangehenden Ansprüche, bei dem
der Cache-Speicher ein Befehls-Cache-Speicher ist und bei
dem die Informationseinheit ein Befehl ist.
6. Verfahren nach Anspruch 5, bei dem die Länge des Befehles
identisch mit der aller anderen Befehle ist.
7. Verfahren nach einem der vorangehenden Ansprüche, bei
dem der Anforderungsschritt das Anfordern eines Minimums
einer ersten Informationseinheit und einer zweiten
Informationseinheit von dem Hauptspeicher durch den Prozessor
umfaßt, wobei die erste Informationseinheit derart ist,
daß sie keine weitere Transformation in dem Prozessor
benötigt, wobei die erste Informationseinheit und die
zweite Informationseinheit jeweils einen gesonderten
Befehl an den Prozessor umfassen und wobei die Verarbeitung
jedes Befehles mindestens eine Abholphase und eine der
Abholphase folgende Ausführungsphase umfaßt, mit den
weiteren Verfahrensschritten:
Abholen des ersten Befehles und des zweiten Befehles von
dem Cache-Speicher während einer ersten Abholphase und
Ausführen des zweiten Befehles während einer ersten
Ausführungsphase, wobei zur selben Zeit während einer
zweiten Abholphase ein dritter Befehl abgeholt wird, so
daß ein Ergebnis erzeugt wird, bei dem im Vergleich zu
einem Befehl, der dem Transformationsschritt nicht
unterzogen wurde, für mindestens einen Befehl eine effektive
Ausführungszeit von null Zyklen verstreicht.
8. Verfahren nach Anspruch 7, bei dem der erste Befehl ein
Formatumwandlungsbefehl ist.
9. Verfahren nach einem der vorangehenden Ansprüche, bei dem
die Befehlsverarbeitung mindestens eine Abholphase und
eine der Abholphase folgende Ausführungsphase umfaßt,
wobei eine erste Informationseinheit ein Befehl mit einer
im voraus berechneten Abzweigungs-Zieladresse ist und
eine zweite Informationseinheit ein Verzögerungsbefehl
ist, mit den weiteren Verfahrensschritten:
Abholen des ersten Befehles und des zweiten Befehles von
dem Cache-Speicher während der ersten Abholphase eines
ersten Maschinenzyklus, dann
Ausführen des zweiten Befehles während eines zweiten
Maschinenzyklus, während ein Zielbefehl des ersten Befehles
abgeholt wird, und dann
Abholen eines dritten Befehles relativ zu einer Adresse
des Zielbefehles, während der Zielbefehl bei der
Zieladresse ausgeführt wird, so daß ein Ergebnis erzeugt
wird, bei dem im Vergleich zu einem Befehl, welche dem
Transformationsschritt nicht unterzogen wurde, für
mindestens einen Befehl eine effektive Ausführungszeit von
null Zyklen verstreicht.
10. Verfahren nach einem der vorangehenden Ansprüche, bei dem
die Befehlsverarbeitung mindestens eine Abholphase und
eine der Abholphase folgende Ausführungsphase umfaßt, und
bei dem der Prozessor während des Anforderungsschrittes
gleichzeitig mindestens zwei der Informationseinheiten
von dem Hauptspeicher anfordern kann, wobei die
Maschinenzyklen mindestens einen ersten Maschinenzyklus, einen
zweiten Maschinenzyklus und einen dritten Maschinenzyklus
umfassen, wobei eine erste Informationseinheit ein Befehl
mit einer im voraus berechneten Verzweigungs-Zieladresse
ist und eine zweite Informationseinheit ein
Verzögerungsbefehl ist, mit den weiteren Verfahrensschritten:
Abholen des ersten Befehles und des zweiten Befehles von
dem Cache-Speicher während der Abholphase während des
ersten Maschinenzyklus, dann
Ausführen des zweiten Befehles während der
Ausführungsphase für den ersten Befehl während des zweiten
Maschinenzyklus, wobei zur selben Zeit ein Zielbefehl des
ersten Befehls abgeholt wird und ein dritter Befehl relativ
zu einer Adresse dieses Zielbefehls abgeholt wird, und
dann
Ausführen des Zielbefehls bei der Zieladresse während der
Ausführungsphase während des dritten Maschinenzyklus,
wobei zur selben Zeit die nächsten Informationseinheiten
abgeholt werden, so daß ein Ergebnis erzeugt wird, bei
dem im Vergleich zu einem Befehl, welcher dem
Transformationsschritt nicht unterzogen wurde, für mindestens einen
Befehl eine effektive Ausführungszeit von null Zyklen
verstreicht.
11. Verfahren nach Anspruch 2, bei dem der zwischendecodierte
Befehl gespeicherte binäre Signale zur direkten Steuerung
der Steuerpunkte des Prozessors umfaßt.
12. System zum Erleichtern der Verarbeitung eines Befehles in
einem Prozessor (116) eines Rechners (100, 200), wobei
dem Prozessor ein Hauptspeicher (14) und ein
Cache-Speicher (112, 212) zugeordnet sind und der Cache-Speicher
(112, 212) in dem Hauptspeicher (14) gespeicherte
Informationseinheiten empfängt, um diese Informationseinheiten
zur Verwendung durch den Prozessor (116) leichter
verfügbar zu machen, mit
einer Cache-Steuervorrichtung (18, 218), welche mit dem
Prozessor (116) und dem Cache-Speicher (112, 212)
verbunden ist, um mindestens eine Informationseinheit von dem
Hauptspeicher (14) anzufordern, und
einer Vorrichtung (30, 130, 230), welche derart
angeschlossen ist, daß sie Informationseinheiten von dem
Hauptspeicher (14) empfängt, um mindestens einen Teil
dieser mindestens einen Inforinationseinheit zu
transformieren, um mindestens eine transformierte
Informationseinheit zu erzeugen und diese mindestens eine
transformierte Einheit zur Speicherung in dem Cache-Speicher
(112, 212) zur möglichen Verwendung durch den Prozessor
(116) zu führen,
dadurch gekennzeichnet, daß die
Transformationsvorrichtung eine Vorrichtung zum Identifizieren, ob die
mindestens eine Einheit ein Verzweigungsbefehl istl und eine
Vorrichtung zum Berechnen einer Verzweigungs-Zieladresse
aufweist.
13. System nach Anspruch 12, bei dem die Transformations- und
Führungsvorrichtung aus der folgenden Gruppe von
Vorrichtungen ausgewählt ist: eine Speichervorrichtung (330),
eine Addierervorrichtung (230) und eine Logikvorrichtung
(30).
14. System nach Anspruch 12, bei dem die
Transformationsvorrichtung (30, 130, 230) eine Vorrichtung zum Behandeln
der mindestens einen Informationseinheit als ein Befehl
und Verarbeiten von mindestens einem Teil dieses Befehles
aufweist, um einen zwischendecodierten Befehl als die
transformierte Einheit zur Speicherung in dem
Cache-Speicher (112, 212) zu erzeugen.
15. System nach Anspruch 12, bei dem der Cache-Speicher (112)
sowohl Befehle als auch Dateneinheiten speichern kann und
die Transformationsvorrichtung (30) unterscheiden kann,
ob die mindestens eine Einheit ein Befehl ist oder Daten
ist.
16. System nach Anspruch 12, bei dem die Informationseinheit
Daten ist und bei dem die Transformationsvorrichtung (30)
eine Vorrichtung zum Umwandeln des Fornates der Daten
aufweist, um die transformierte Einheit zu bilden.
17. System nach Anspruch 12, bei dem der Cache-Speicher (112,
212) ein Befehls-Cache-Speicher ist und bei dem die
Informationseinheit ein Befehl ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/845,213 US4722050A (en) | 1986-03-27 | 1986-03-27 | Method and apparatus for facilitating instruction processing of a digital computer |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3750935D1 DE3750935D1 (de) | 1995-02-16 |
DE3750935T2 true DE3750935T2 (de) | 1995-08-03 |
Family
ID=25294662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3750935T Expired - Lifetime DE3750935T2 (de) | 1986-03-27 | 1987-01-30 | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. |
Country Status (5)
Country | Link |
---|---|
US (1) | US4722050A (de) |
EP (1) | EP0238810B1 (de) |
JP (1) | JPS62235658A (de) |
CA (1) | CA1282181C (de) |
DE (1) | DE3750935T2 (de) |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5101341A (en) * | 1988-08-25 | 1992-03-31 | Edgcore Technology, Inc. | Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO |
US5155818A (en) * | 1988-09-28 | 1992-10-13 | Data General Corporation | Unconditional wide branch instruction acceleration |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5113515A (en) * | 1989-02-03 | 1992-05-12 | Digital Equipment Corporation | Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer |
US5142634A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Branch prediction |
US5187783A (en) * | 1989-03-15 | 1993-02-16 | Micral, Inc. | Controller for direct memory access |
US5440749A (en) * | 1989-08-03 | 1995-08-08 | Nanotronics Corporation | High performance, low cost microprocessor architecture |
WO1991004536A1 (en) * | 1989-09-20 | 1991-04-04 | Dolphin Server Technology A/S | Instruction cache architecture for parallel issuing of multiple instructions |
JP2695017B2 (ja) * | 1989-11-08 | 1997-12-24 | 富士通株式会社 | データ転送方式 |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
US5230068A (en) * | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
KR100210205B1 (ko) * | 1990-03-15 | 1999-07-15 | 리패치 | 스톨캐쉬를 제공하기 위한 장치 및 방법 |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
US5226138A (en) * | 1990-11-27 | 1993-07-06 | Sun Microsystems, Inc. | Method for selectively transferring data instructions to a cache memory |
US5285527A (en) * | 1991-12-11 | 1994-02-08 | Northern Telecom Limited | Predictive historical cache memory |
US5353419A (en) * | 1992-01-09 | 1994-10-04 | Trustees Of The University Of Pennsylvania | Memory-side driven anticipatory instruction transfer interface with processor-side instruction selection |
US5581719A (en) * | 1992-11-12 | 1996-12-03 | Digital Equipment Corporation | Multiple block line prediction |
US5337415A (en) * | 1992-12-04 | 1994-08-09 | Hewlett-Packard Company | Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency |
US5710912A (en) * | 1993-05-06 | 1998-01-20 | Hewlett-Packard Co. | Method and apparatus for enabling a computer system to adjust for latency assumptions |
AU6701594A (en) * | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding sequences of guest instructions for a host computer |
AU6629894A (en) * | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5428807A (en) * | 1993-06-17 | 1995-06-27 | Digital Equipment Corporation | Method and apparatus for propagating exception conditions of a computer system |
US5420990A (en) * | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Mechanism for enforcing the correct order of instruction execution |
US6704861B1 (en) | 1993-06-17 | 2004-03-09 | Hewlett-Packard Development Company, L.P. | Mechanism for executing computer instructions in parallel |
US5421022A (en) * | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Apparatus and method for speculatively executing instructions in a computer system |
US5680642A (en) * | 1993-06-25 | 1997-10-21 | At&T Global Information Solutions Company | Method and apparatus for pseudo-aligned transfers of data to memory wherein a re-alignment is performed based on the data byte control header |
US5809271A (en) * | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
US5742784A (en) * | 1995-01-25 | 1998-04-21 | International Business Machines Corporation | System for reordering of instructions before placement into cache to reduce dispatch latency |
US5687339A (en) * | 1995-09-14 | 1997-11-11 | Elan Microelectronics Corp. | Pre-reading and pre-decoding of instructions of a microprocessor within single cycle |
US5828895A (en) * | 1995-09-20 | 1998-10-27 | International Business Machines Corporation | Methods and system for predecoding instructions in a superscalar data processing system |
US6055628A (en) * | 1997-01-24 | 2000-04-25 | Texas Instruments Incorporated | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks |
US6134649A (en) * | 1997-11-17 | 2000-10-17 | Advanced Micro Devices, Inc. | Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction |
US6167506A (en) | 1997-11-17 | 2000-12-26 | Advanced Micro Devices, Inc. | Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location |
US6061786A (en) * | 1998-04-23 | 2000-05-09 | Advanced Micro Devices, Inc. | Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction |
US6230260B1 (en) | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US7941647B2 (en) * | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8121828B2 (en) * | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US7254806B1 (en) | 1999-08-30 | 2007-08-07 | Ati International Srl | Detecting reordered side-effects |
US6408382B1 (en) | 1999-10-21 | 2002-06-18 | Bops, Inc. | Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture |
US6934832B1 (en) | 2000-01-18 | 2005-08-23 | Ati International Srl | Exception mechanism for a computer |
US6615300B1 (en) * | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
US6738794B2 (en) | 2001-04-10 | 2004-05-18 | Analog Devices, Inc. | Parallel bit correlator |
US7010558B2 (en) * | 2001-04-19 | 2006-03-07 | Arc International | Data processor with enhanced instruction execution and method |
US7177891B2 (en) * | 2002-10-09 | 2007-02-13 | Analog Devices, Inc. | Compact Galois field multiplier engine |
US7269615B2 (en) * | 2001-12-18 | 2007-09-11 | Analog Devices, Inc. | Reconfigurable input Galois field linear transformer system |
US7082452B2 (en) * | 2001-11-30 | 2006-07-25 | Analog Devices, Inc. | Galois field multiply/multiply-add/multiply accumulate |
US6766345B2 (en) | 2001-11-30 | 2004-07-20 | Analog Devices, Inc. | Galois field multiplier system |
WO2003048947A1 (en) * | 2001-11-30 | 2003-06-12 | Analog Devices, Inc. | Reconfigurable input galois field linear transformer system |
US7283628B2 (en) | 2001-11-30 | 2007-10-16 | Analog Devices, Inc. | Programmable data encryption engine |
US7895253B2 (en) | 2001-11-30 | 2011-02-22 | Analog Devices, Inc. | Compound Galois field engine and Galois field divider and square root engine and method |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
US7000090B2 (en) * | 2002-01-21 | 2006-02-14 | Analog Devices, Inc. | Center focused single instruction multiple data (SIMD) array system |
US6865661B2 (en) * | 2002-01-21 | 2005-03-08 | Analog Devices, Inc. | Reconfigurable single instruction multiple data array |
US6941446B2 (en) * | 2002-01-21 | 2005-09-06 | Analog Devices, Inc. | Single instruction multiple data array cell |
US8484282B2 (en) * | 2002-03-21 | 2013-07-09 | International Business Machines Corporation | High-speed content transformation engine |
JP3683248B2 (ja) * | 2002-10-22 | 2005-08-17 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US7139902B2 (en) * | 2002-10-29 | 2006-11-21 | Broadcom Corporation | Implementation of an efficient instruction fetch pipeline utilizing a trace cache |
US7421076B2 (en) | 2003-09-17 | 2008-09-02 | Analog Devices, Inc. | Advanced encryption standard (AES) engine with real time S-box generation |
US7512647B2 (en) * | 2004-11-22 | 2009-03-31 | Analog Devices, Inc. | Condensed Galois field computing system |
US20070186049A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for instruction lines |
US20080162819A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Design structure for self prefetching l2 cache mechanism for data lines |
US20080162907A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Structure for self prefetching l2 cache mechanism for instruction lines |
US20070186050A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for data lines |
US7640422B2 (en) * | 2006-08-16 | 2009-12-29 | Qualcomm Incorporated | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache |
US8756404B2 (en) * | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4521850A (en) * | 1977-12-30 | 1985-06-04 | Honeywell Information Systems Inc. | Instruction buffer associated with a cache memory unit |
US4437149A (en) * | 1980-11-17 | 1984-03-13 | International Business Machines Corporation | Cache memory architecture with decoding |
JPS6020245A (ja) * | 1983-07-15 | 1985-02-01 | Hitachi Ltd | デ−タ処理装置の命令制御回路 |
-
1986
- 1986-03-27 US US06/845,213 patent/US4722050A/en not_active Expired - Lifetime
-
1987
- 1987-01-15 CA CA000527412A patent/CA1282181C/en not_active Expired - Lifetime
- 1987-01-30 DE DE3750935T patent/DE3750935T2/de not_active Expired - Lifetime
- 1987-01-30 EP EP87101300A patent/EP0238810B1/de not_active Expired - Lifetime
- 1987-03-26 JP JP62072933A patent/JPS62235658A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP0238810A3 (en) | 1990-04-25 |
US4722050A (en) | 1988-01-26 |
CA1282181C (en) | 1991-03-26 |
DE3750935D1 (de) | 1995-02-16 |
EP0238810B1 (de) | 1995-01-04 |
EP0238810A2 (de) | 1987-09-30 |
JPS62235658A (ja) | 1987-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3750935T2 (de) | Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. | |
DE69534113T2 (de) | Kompression der Befehlswörter eines Rechners | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE3116100C2 (de) | Datenverarbeitungseinheit | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE3588009T2 (de) | Vorrichtung und Verfahren zum Rekonfigurieren eines Speichers in einer Datenverarbeitungsanordnung. | |
DE69429226T2 (de) | Absendung von Befehlen an mehrere Verarbeitungseinheiten | |
DE69325086T2 (de) | Verfahren und System für spekulative Befehlsausführung | |
DE69032174T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE2339636C2 (de) | Einrichtung zur Adressierung eines schreibbaren Mikroprogrammspeichers | |
DE2715073C3 (de) | Mikroprogrammierte Rechner-Steuervorrichtung | |
DE3424962C2 (de) | ||
DE69738188T2 (de) | Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE1774296B2 (de) | Restruktuierbare Steuereinheit für elektronische Digitalrechner | |
DE2714805A1 (de) | Datenverarbeitungssystem | |
DE2360303C2 (de) | Datenverarbeitungsanlage mit Adreßübersetzung für Ein-/Ausgabekanäle | |
DE69616718T4 (de) | Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten | |
DE3856139T2 (de) | Mikroprozessor | |
DE4216905A1 (de) | Superskalarprozessor | |
DE69130233T2 (de) | Verfahren und gerät um ein sperrungscache einzusetzen | |
DE3852675T2 (de) | Steuerungssystem zum Lesen von Mikrocode. | |
DE3853985T2 (de) | Datenverarbeitungsanlage, geeignet für Hochgeschwindigkeitsverarbeitung. |
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: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |