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
Application number
DE3750935T
Other languages
English (en)
Other versions
DE3750935D1 (de
Inventor
Allen J Baum
Russell Kao
Ruby Bei-Loh Lee
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE3750935D1 publication Critical patent/DE3750935D1/de
Application granted granted Critical
Publication of DE3750935T2 publication Critical patent/DE3750935T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative 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.
DE3750935T 1986-03-27 1987-01-30 Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner. Expired - Lifetime DE3750935T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 デ−タ処理装置の命令制御回路

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