DE69727127T2 - Verarbeitungsgerät zum lesen von befehlen aus einem speicher - Google Patents

Verarbeitungsgerät zum lesen von befehlen aus einem speicher Download PDF

Info

Publication number
DE69727127T2
DE69727127T2 DE69727127T DE69727127T DE69727127T2 DE 69727127 T2 DE69727127 T2 DE 69727127T2 DE 69727127 T DE69727127 T DE 69727127T DE 69727127 T DE69727127 T DE 69727127T DE 69727127 T2 DE69727127 T2 DE 69727127T2
Authority
DE
Germany
Prior art keywords
command
jump
instruction
memory
logically
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69727127T
Other languages
English (en)
Other versions
DE69727127D1 (de
Inventor
Frederik Zandveld
Claudius Marnix VLOT
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69727127D1 publication Critical patent/DE69727127D1/de
Application granted granted Critical
Publication of DE69727127T2 publication Critical patent/DE69727127T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Description

  • Die Erfindung bezieht sich auf ein Verarbeitungsgerät mit
    • – einer Verarbeitungseinheit,
    • – einem Speicher zum Speichern von Befehlen für die Verarbeitungseinheit,
    • – einer Leseeinheit zum Lesen von Befehlen aus dem Speicher in einer logischen
  • Reihenfolge und zum Weiterleiten der Befehle an die Verarbeitungseinheit, damit sie in der logischen Reihenfolge ausgeführt werden.
  • Ein Verarbeitungsgerät dieser Art ist aus der internationalen Patentanmeldung Nr. WO 93/14457 bekannt. Während der Ausführung eines Programms werden aufeinanderfolgende Befehle aus dem Speicher in die Verarbeitungseinheit geladen, um ausgeführt zu werden. Zeitgemäße Verarbeitungseinheiten sind jedoch in der Lage, die Befehle im Allgemeinen schneller auszuführen als die Befehle aus dem Speicher gelesen werden können. Aus diesem Grund ist der Speicher, wenn keine speziellen Maßnahmen getroffen werden, ein begrenzender Faktor in Bezug auf die Gesamtgeschwindigkeit des Verarbeitungsgeräts. Dieses Problem wird als „Speicher-Engpass" bezeichnet.
  • Aus dem Stand der Technik ist eine Reihe von Maßnahmen zur Umgehung des Engpass-Problems bekannt. Es sind zum Beispiel „Caching"-Techniken bekannt. Beim „Caching" wird ein schneller Cache-Speicher verwendet, der die Befehle, die voraussichtlich durch die Verarbeitungseinheit ausgeführt werden, gemäß einer Cache-Strategie speichert. Der Cache-Speicher ist vergleichsweise kostenaufwändig, weil er ausreichend schnell sein muss, um einen Befehl pro Befehlszyklus der Verarbeitungseinheit zu lesen. Außerdem sind Caching-Techniken im Allgemeinen sehr komplex und erfordern daher einen erheblichen Schaltungsaufwand.
  • Aus dem Stand der Technik ist auch bekannt, dass man den Speicher wesentlich breiter macht als dies zum Lesen eines einzelnen Befehls erforderlich ist. Das bedeutet, dass eine Vielzahl von aufeinanderfolgenden Befehlen gleichzeitig parallel in einem einzelnen Lesezyklus des Speichers gelesen werden kann. Diese Befehle werden in einem Vorabbefehlspuffer gespeichert, der sehr schnell ausgelesen werden kann, und anschließend werden sie nacheinander der Verarbeitungseinheit zugeführt. Während die Verarbeitungs einheit die Vielzahl von Befehlen aus dem Vorabbefehlspuffer ausführt, wird anschließend ein neuer Speicherlesezyklus für eine nächste Vielzahl von Befehlen gestartet. Wenn N Befehle gleichzeitig aus dem Speicher gelesen werden, wird unter optimalen Bedingungen die effektive Geschwindigkeit des Speichers auf diese Weise um einen Faktor N gesteigert, so dass der Speicher nicht mehr der beschränkende Faktor in Bezug auf die Geschwindigkeit des Verarbeitungsgeräts zu sein braucht. Dieses Verfahren liefert nur dann optimale Ergebnisse, wenn die Verarbeitungseinheit Befehle in einer „logischen" Reihenfolge ausführt (also in einer Reihenfolge, die durch die Leseeinheit definiert wird, ohne durch die Verarbeitungseinheit neu angepasst zu werden). Dies ist normalerweise der Fall. Die durch die Verarbeitungseinheit ausgeführten Befehle können jedoch auch Sprungbefehle enthalten, die eine andere Reihenfolge der Befehlsausführung zur Folge haben. Aufgrund eines Sprungbefehls ist dann ein Teil des Inhalts des Vorabbefehlspuffers (nach einem herausgehenden Sprung oder einem eintreffenden Sprung) daher nutzlos. Das bereits begonnene Auslesen des Speichers ist dann ebenfalls nutzlos. Hierdurch wird wiederum die Geschwindigkeit des Prozessors beschränkt.
  • Die Erfindung hat unter anderem zur Aufgabe, ein Verarbeitungsgerät zu schaffen, in dem der Speicher-Engpass mit weniger Aufwand eliminiert wird.
  • Das erfindungsgemäße Verarbeitungsgerät ist dadurch gekennzeichnet, dass der Speicher eine Vielzahl von unabhängig adressierbaren Speicherbänken umfasst, wobei logisch aufeinanderfolgende Befehle in verschiedenen Speicherbänken gespeichert werden, und dass die Leseeinheit vorgesehen ist, um eine Anzahl von Befehlen aus verschiedenen Speicherbänken parallel zu lesen und diese Anzahl von Befehlen jedes Mal wieder aufzufüllen, wenn die Verarbeitungseinheit mit dem Ausführen eines Befehls beginnt, indem sie beginnt, einen Befehl zu lesen, der logisch auf die Befehle folgt, die in diesem Augenblick parallel aus den Speicherbänken ausgelesen werden.
  • Jeder nachfolgende Befehl wird auf diese Weise in einer nächsten Speicherbank gespeichert. Zu diesem Zweck verfügt die Verarbeitungseinheit vorzugsweise ausschließlich über Befehle von fester Länge. Als Folge der Erfindung werden die Befehle auf Pipeline-Weise gesucht, und normalerweise wird sich eine Anzahl von Befehlen in unterschiedenen Stadien des Auslesens befinden. Die Befehle können daher nacheinander über den gleichen Bus und mit zwischengefügten Zeitintervallen, die kürzer als das zum Auslesen einer einzelnen Speicherbank erforderliche Zeitintervall sind, dem Prozessor zugeführt werden. Weil für jeden Befehl, der ausgeführt wird, ein neuer Befehl adressiert wird, ist die Anzahl der adressierten Befehle nicht größer als unbedingt erforderlich. Dadurch wird das Risiko von Speicherkonflikten reduziert, das auftritt, wenn mehr als ein Befehl gleichzeitig aus der gleichen Speicherbank ausgelesen werden müsste.
  • Die Verarbeitungseinheit einer Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist in der Lage, nicht mehr als die aufeinanderfolgende Ausführung von einer Anzahl N Befehlen in einem Zeitintervall zu starten, das mindestens zwischen dem Adressieren einer Speicherbank und dem Zuführen eines dann gelesenen Befehls an die Verarbeitungseinheit erforderlich ist, wobei die Leseeinheit vorgesehen ist, um N Befehle parallel aus den verschiedenen Speicherbänken zu lesen. Auf diese Weise können exakt so viele Befehle parallel ausgelesen werden, dass die Verarbeitungseinheit nicht durch den Speicher verlangsamt wird. Infolgedessen wird die Anzahl der immer noch mit dem Auslesen befassten und daher noch nicht für eine neue Adressierung verfügbaren Speicherbänke minimiert. Aus diesem Grunde gibt es vorzugsweise mindestens N Speicherbänke.
  • Die Verarbeitungseinheit in einer Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist vorgesehen, um unter anderem einen Sprungbefehl auszuführen, nach dem die Verarbeitungseinheit abhängig von der Erfüllung der zu beurteilenden Bedingung mit der Ausführung von entweder einem Sprungzielbefehl oder einem Befehl, der logisch auf den Sprungbefehl folgt, fortfahren sollte, wobei die Leseeinheit vorgesehen ist, um Befehle zwischen dem Auslesen aus dem Speicher und dem Zuführen zur Verarbeitungseinheit in einer Pipeline-Einheit zwischenzuspeichern, um den Sprungbefehl in der Pipeline-Einheit zu erkennen, und außerdem vorgesehen ist, um in Reaktion auf das Erkennen des Sprungbefehls und parallel zu dem Auslesen von einem oder mehreren Befehlen, die logisch auf den Sprungbefehl folgen, mit dem Auslesen des Sprungzielbefehls aus einer weiteren Speicherbank zu beginnen, vorausgesetzt, dass die weitere Speicherbank nicht einen oder mehrere Befehle) enthält, der (die) logisch auf den Sprungbefehl folgt (folgen), und auch vorgesehen ist, um nach der Ausführung des Sprungbefehls und in Abhängigkeit von dem Erfüllen der Bedingung entweder die Sprungzielbefehle und die logisch darauf folgenden Befehle oder den Befehl, der logisch auf den Sprungbefehl folgt und Befehle, die logisch auf diesen folgen, an die Verarbeitungseinheit weiterzuleiten. Auf diese Weise wird eine Verlangsamung auch in dem Fall eines Sprungbefehls vermieden. Aus der Patentanmeldung WO 93/14457 ist an sich ein Vorauslesen auch ab dem Sprungziel bekannt, aber nicht aus anderen Speicherbänken, die jeweils einen Befehl aus einer Reihe von logisch nachfolgenden Befehlen enthalten, und es erfolgt auch kein Pipeline-Auslesen aus den Speicherbänken. Aufgrund des Pipeline-Auslesens der Speicherbänke und der Zwischenspeicherung in der Pipeline-Einheit wird die Anzahl der aktiven Speicherbänke minimiert, so dass das Risiko von Speicherbankkonflikten zwischen dem Auslesen des Sprungzielbefehls und der auf den Sprungbefehl folgenden Befehle minimiert wird.
  • Die Leseeinheit in einer Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist vorgesehen, um parallel zu der Adressierung eines Sprungzielbefehl-Speicherplatzes einen Befehlsspeicherplatz von mindestens einem Befehl zu adressieren, der logisch auf den Sprungzielbefehl folgt, und um den genannten mindestens einen Befehl in eine interne Stufe oder entsprechende interne Stufen der Pipeline-Einheit zu laden, wenn die Bedingung erfüllt wird.
  • Die Verarbeitungseinheit in einer weiteren Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist in der Lage, nicht mehr als die aufeinanderfolgende Ausführung von einer Anzahl N Befehlen in einem Zeitintervall zu starten, das mindestens zwischen dem Adressieren einer Speicherbank und dem Zuführen eines daraufhin gelesenen Befehls an die Verarbeitungseinheit erforderlich ist, wobei die Leseeinheit vorgesehen ist, um parallel zur Adressierung des Sprungzielbefehls Befehlsspeicherplätze von N – 1 Befehlen, die logisch auf den Sprungzielbefehl folgen, zu adressieren, und vorgesehen ist, um die N – 1 Befehle parallel in die Pipeline-Einheit zu laden, wenn die Bedingung erfüllt wird. Die Pipeline-Einheit kann daher wieder so schnell wie möglich mit Befehlen geladen werden, die logisch auf den in der Verarbeitungseinheit ausgeführten Befehl folgen, und das Auslesen der nachfolgenden Befehle wird ebenfalls so schnell wie möglich abgeschlossen, so dass die Speicherbänke wieder zum Auslesen von anderen Befehlen zur Verfügung stehen. Um Lesekonflikte zu vermeiden, umfasst der Speicher vorzugsweise mindestens 2*N Speicherbänke. Da die Anzahl der Speicherbänke größer ist, besteht ein geringeres Konfliktrisiko, wo der Sprungzielbefehl oder logisch darauf folgende Befehle aus der gleichen Speicherbank ausgelesen werden müssen wie die Befehle, die logisch auf den Sprungbefehl folgen.
  • Die Leseeinheit in einer Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist vorgesehen, um nach der Erkennung des bedingten Sprungbefehls und bis die Verarbeitungseinheit den bedingten Sprungbefehl ausgeführt hat, jedes Mal, wenn die Verarbeitungseinheit mit der Ausführung eines Befehls beginnt, mit dem parallelen Auslesen eines Befehls, der logisch dem Sprungbefehl folgt, und eines Befehls, der logisch auf den Sprungzielbefehl folgt, aus verschiedenen Speicherbänken zu beginnen. Nach dem Start der Ausführung des Sprungzielbefehls stehen auf diese Weise jedes Mal, wenn mit der Ausführung eines neuen Befehls begonnen wird, unmittelbar ohne Verzug Befehle zur Verfügung, wobei die Anzahl der aktiven Speicherbänke auf ein Minimum beschränkt ist.
  • Die Leseeinheit in einer Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist vorgesehen, um zu erkennen, ob sich der Speicherplatz des Sprungzielbefehls in der gleichen Speicherbank befindet wie ein Befehlsspeicherplatz eines Befehls, der logisch dem Sprungbefehl folgt, und vorgesehen, um im Fall einer Koinzidenz und auf der Basis von ergänzenden Informationen bezüglich des Sprungbefehls entweder den Speicherplatz des Sprungzielbefehls und die Befehlsspeicherplätze der Befehle zu adressieren, die logisch auf den Speicherplatz des Sprungziels folgen, oder den Befehlsspeicherplatz des Befehls, der logisch dem Sprungbefehl folgt, und die Befehlsspeicherplätze der Befehle, die diesem logisch folgen. Die Informationen geben an, wie wahrscheinlich es ist, dass die Bedingung erfüllt wird. Diese Informationen können zum Beispiel während des Kompilierens des Programms oder auf der Basis von neuen Sprungstatistiken während der Ausführung der Befehle erzeugt werden. Die Informationen werden benutzt, um sicherzustellen, dass der Befehl, der am wahrscheinlichsten ausgeführt wird, tatsächlich im Fall einer Koinzidenz adressiert wird.
  • Eine Ausführungsform des erfindungsgemäßen Verarbeitungsgeräts ist mit einem Programm programmiert, in dem der Sprungzielbefehl und M Befehle, die dem Sprungzielbefehl logisch folgen, in anderen Speicherbänken gespeichert werden als der Befehl, der logisch dem Sprungbefehl und M Befehlen folgt, die diesem Sprungbefehl logisch folgen. Diese Befehle werden auf diese Weise so schnell wie möglich gelesen, so dass die Speicherbänke so schnell wie möglich wieder für andere Leseoperationen (zum Beispiel zugunsten eines Sprungbefehls) zur Verfügung stehen. Wenn eine Pipeline-Einheit verwendet wird, können die auf diese Weise gelesenen Befehle direkt parallel in die Pipeline-Einheit geladen werden.
  • Das Verarbeitungsgerät ist vorzugsweise zusammen mit den Speicherbänken auf einem Halbleitersubstrat integriert. Damit kann eine große Anzahl von Verbindungsleitungen zum Laden der Befehle auf einfache Weise zwischen den Speicherbänken und der Verarbeitungseinheit implementiert werden.
  • Die Erfindung bezieht sich auch auf einen Kompilierer, der vorgesehen ist, um Befehle zu erzeugen, die in dem Befehlsspeicher gespeichert werden, einschließlich eines Sprungbefehls, und außerdem vorgesehen ist, um die Anordnung von Befehlen im Befehlsspeicher auf eine solche Weise anzupassen, dass ein Sprungzielbefehl und ein oder mehrere Befehle, die logisch darauf folgen, in anderen Speicherbänken gespeichert werden als eine gleiche Anzahl von Befehlen, die dem Sprungbefehl folgen. Bankkonflikte können vermieden werden, indem man bereits bei der Kompilierung die Bankstruktur berücksichtigt, vor allem die Anzahl der Bänke im Speicher. In dem erfindungsgemäßen Verarbeitungsgerät kann genau vorhergesagt werden, welcher Befehl wann gelesen wird. Konflikte zwischen Bänken werden durch eine geeignete Anordnung der gleichzeitig zu lesenden Befehle vermieden. Die Anordnung kann zum Beispiel durch Auffüllen realisiert werden: die Aufnahme von „Keine Operation"-Befehlen, oder die Speicherung eines Sprungzielbefehls in einer geeigneten Anzahl von nicht-benutzten Speicherplätzen nach einem unbedingten Sprungbefehl, oder das Verzweigen über nicht-benutzte Befehlsspeicherplätze.
  • Diese und andere vorteilhafte Aspekte der Erfindung werden im Folgenden unter Bezugnahme auf die Figuren ausführlich beschrieben. Es zeigen:
  • 1 eine Ausführungsform eines erfindungsgemäßen Verarbeitungsgeräts;
  • 2 ein Timing-Diagramm der Funktion des Verarbeitungsgeräts aus 1;
  • 3 eine weitere Ausführungsform eines erfindungsgemäßen Verarbeitungsgeräts, und
  • 4 ein Timing-Diagramm der Funktion des Verarbeitungsgeräts aus 3.
  • In 1 ist eine Ausführungsform eines erfindungsgemäßen Verarbeitungsgeräts dargestellt. Das Verarbeitungsgerät umfasst eine Verarbeitungseinheit 10, einen Speicher mit einer Anzahl von Speicherbänken 12ad, eine Leseeinheit 14 und einen Takt 19. Die Leseeinheit 14 hat eine Anzahl von Adress/Auswahl-Ausgängen, die jeweils über eine zugehörige Adress/Auswahl-Verbindung 18ad mit einer entsprechenden Speicherbank 12ad gekoppelt sind. Die Speicherbänke 12ad sind über einen Befehlsbus 16 mit einem Befehlseingang der Verarbeitungseinheit 10 verbunden. Der Takt 19 ist mit der Leseeinheit 14, den Speicherbänken 12ad und der Verarbeitungseinheit 10 verbunden.
  • In 2 ist ein Timing-Diagramm für die Funktion des Verarbeitungsgeräts aus 1 dargestellt. Die Leseeinheit 14 adressiert aufeinanderfolgende Speicherplätze in aufeinanderfolgenden Taktperioden (auch als Befehlszyklen oder Lesezyklen be zeichnet). Der Verlauf mit der Bezeichnung AD gibt pro Taktperiode an, welche Speicheradresse (I1, I2, ...) ausgewählt wurde. Speicherplätze mit aufeinanderfolgenden Speicheradressen (I1, I2, ...) befinden sich in aufeinanderfolgenden Speicherbänken 12ad. Aus diesem Grunde wählt die Leseeinheit 14 während der Adressierung immer aufeinanderfolgende Speicherbänke 12ad. Nach Empfang der Speicheradresse (I1, I2, ...) beginnt die gewählte Speicherbank 12ad, den Inhalt des durch die Speicheradresse (I1, I2, ...) angegebenen Speicherplatzes zu lesen. Die Verläufe B1, B2, B3, B4 geben die Speicheradressen (I1, I2, ...) der durch die entsprechenden Speicherbänke 12ad ausgelesenen Speicherplätze an. Eine Speicherbank 12ad benötigt mehr als eine Taktperiode, damit der Inhalt des Speicherplatzes nach Empfang der Speicheradresse (I1, I2, ...) zur Verfügung steht (zum Beispiel drei Taktperioden in dem Timing-Diagramm). In der Taktperiode, die auf die Taktperiode folgt, in der eine Speicherbank 12ad adressiert wurde, während die Speicherbank 12ad daher noch nicht über den Inhalt verfügt, wählt die Leseeinheit 14 bereits eine andere Speicherbank 12ad und führt dieser Speicherbank 12ad eine Speicheradresse (I1, I2, ...) zu. Die Leseeinheit 14 tut dies zum Beispiel auf der Basis eines zyklischen Warteschlangenbetriebs, wo die Speicherbänke 12ad in allen vier aufeinanderfolgenden Taktperioden in einer festen Sequenz adressiert werden. Auf diese Weise wird jedes Mal eine Anzahl von Speicherbänken 12ad parallel mit dem Lesen von Befehlen beschäftigt sein. Der Inhalt des adressierten Speicherplatzes (I1, I2, ...) wird eine Anzahl von Taktperioden nach dem Adressieren der Speicherbank 12ad zur Verfügung stehen (zum Beispiel drei Taktperioden). In Reaktion darauf führt die Leseeinheit 14 der entsprechenden Speicherbank 12ad ein Signal zu, um diesen Inhalt über den Befehlsbus 16 an die Verarbeitungseinheit 10 zu leiten. In Reaktion darauf beginnt die Verarbeitungseinheit 10 mit der Ausführung des gelesenen Befehls. Der Verlauf EX stellt die Speicheradressen (I1, I2, ...) der auszuführenden Befehle dar. Die Verarbeitungseinheit 10 ist zum Beispiel eine RISC-Verarbeitungseinheit, die im Prinzip in jeder Taktperiode mit der Ausführung eines Befehls beginnen kann. Gelegentlich kann die Ausführung eines vorhergehenden Befehls jedoch ein „Stehenbleiben" verursachen, so dass die Verarbeitungseinheit 10 in einer bestimmten Taktperiode nicht mit der Ausführung eines Befehls beginnen kann. In diesem Fall wird auch keine Speicherbank 12ad adressiert, es sei denn, die Anzahl der mit dem Auslesen beschäftigten Speicherbänke ist kleiner als die Anzahl der zum Lesen eines Befehls erforderlichen Befehlszyklen.
  • Die Leseeinheit 14 stellt sicher, dass die nacheinander ausgewählten Speicherbänke 12ad auch ihre betreffenden adressierten Speicherinhalte nacheinander der Ver arbeitungseinheit zuführen. Wenn die Anzahl der Speicherbänke 12ad mindestens der maximalen Anzahl von Befehlen entspricht, die durch die Verarbeitungseinheit 10 in dem zum Lesen eines Befehls aus einer Speicherbank 12ad benötigten Zeitintervall ausgeführt werden kann, kann auf diese Weise in jeder Taktperiode ein neuer Befehl an die Verarbeitungseinheit 10 geleitet werden.
  • Die Befehle können auch Sprungbefehle umfassen, die möglicherweise nur ausgeführt werden, wenn eine vorgegebene Bedingung erfüllt wurde. Der Sprungbefehl definiert eine Sprungzieladresse. Nach der erfolgreichen Ausführung eines Sprungbefehls (d. h. wenn die Bedingung, falls vorhanden, erfüllt wurde), muss anschließend der Befehl aus der Sprungzieladresse in dem Speicher 12ad an die Verarbeitungseinheit 10 geleitet werden. Der Befehl, der unmittelbar nach der Taktperiode, in der der Sprung ausgeführt wird, von den Speicherbänken 12ad zur Verfügung steht, wird im Allgemeinen kein Befehl von der Sprungzieladresse sein. Die Leseeinheit 14 sollte in dieser Hinsicht eine Korrektur vornehmen.
  • Zu diesem Zweck informiert die Verarbeitungseinheit 10 die Leseeinheit 14, wenn ein Sprungbefehl „erfolgreich" ausgeführt wurde, und informiert sie auch über die Sprungzieladresse. Die Leseeinheit 14 verhindert dann die weitere Zuführung von bereits adressierten Befehlen an die Verarbeitungseinheit 10 und wählt die Speicherbank 12ad, in der sich die Sprungzieladresse befindet. Die Leseeinheit 14 wählt anschließend erneut nacheinander die Speicherbänke ab dieser Sprungzieladresse, wie vor dem Sprungbefehl. Von dem Augenblick an, an dem der Inhalt der Sprungzieladresse zur Verfügung steht, werden die Befehle auch wieder der Verarbeitungseinheit 10 zugeführt.
  • Diese Vorgehensweise hat jedoch den Nachteil, dass der Prozessor während einer Anzahl von Taktperioden keine Befehle empfängt.
  • 3 zeigt eine Ausführungsform, in der dieser Nachteil im Wesentlichen behoben wurde.
  • 3 zeigt eine weitere Ausführungsform eines erfindungsgemäßen Verarbeitungsgeräts. Dieses Verarbeitungsgerät enthält ebenfalls eine Verarbeitungseinheit 20, eine Anzahl von Speicherbänken 22ah, eine Leseeinheit 24 und einen Takt 29. Die Verbindungen zwischen der Verarbeitungseinheit 20, den Speicherbänken 22ah und der Leseeinheit 24 entsprechen denen aus 1, mit der Ausnahme, dass in 3 drei Befehlsbusse 26ac dargestellt sind, die über eine Pipeline-Einheit 240 mit der Verarbeitungseinheit gekoppelt sind.
  • Die Verarbeitungseinheit 20 ist zum Beispiel eine Pipeline-RISC-Verarbeitungseinheit, die jeden Befehl in aufeinanderfolgenden Stufen ausführt, zum Beispiel die Stufen der Decodierung, arithmetischen/logischen Verarbeitung, Datenspeicheradressierung, Schreiben. Die verschiedenen Stufen der aufeinanderfolgenden Befehle werden in der Pipeline-RISC-Verarbeitungseinheit parallel ausgeführt: während die durch einen Befehl spezifizierte arithmetische und logische Operation ausgeführt wird, wird bereits der nächste Befehl parallel decodiert. Wenn die Ausführung eines Befehls beginnt, kann daher ein vorhergehender Befehl gerade ausgeführt werden. Zu diesem Zweck enthält die Verarbeitungseinheit 20 vorzugsweise auch eine Pipeline von Registern (nicht abgebildet) zur Speicherung der Befehle für die verschiedenen Stufen. Diese Pipeline kann nach der Pipeline-Einheit 240 angeschlossen werden, um eine zusammengesetzte Pipeline-Einheit zu bilden.
  • Jede der Speicherbänke ist über eine entsprechende Umschaltschaltung 25ah mit drei Befehlsbussen 26ac gekoppelt. Die Pipeline-Einheit 240 umfasst zwei Register 242, 244 und zwei Multiplexer 243, 245. Ein erster Befehlsbus 26a ist mit einem Eingang eines vordersten Registers 242 verbunden. Ein Ausgang des vordersten Registers 242 ist über einen ersten Multiplexer 243 mit einem hintersten Register 244 verbunden. Ein Ausgang des hintersten Registers 244 ist über den zweiten Multiplexer 245 mit der Verarbeitungseinheit 20 verbunden. Ein zweiter Befehlsbus 26b ist über den ersten Multiplexer 243 mit dem hintersten Register 244 verbunden. Ein dritter Befehlsbus 26c ist über den zweiten Multiplexer 245 mit dem Verarbeitungselement 20 verbunden. Das Verarbeitungsgerät enthält außerdem einen Detektor 248, der mit dem Ausgang des vordersten Registers 242 gekoppelt ist. Ein Ausgang des Detektors ist mit der Leseeinheit 24 verbunden. Die Anzahl der Register 242, 244 der Pipeline-Einheit 240 und die Anzahl der Befehlsbusse 26ac sei beispielsweise als zwei oder drei angenommen. Im Allgemeinen entsprechen die Anzahl der Register plus eins und die Anzahl der Befehlsbusse vorzugsweise der Anzahl der Taktperioden, die die Leseeinheit 24 benötigt, um einen Befehl aus einer Speicherbank 22ah zu lesen.
  • In 4 ist die Funktion des Verarbeitungsgeräts aus 3 auf der Basis eines Timing-Diagramms dargestellt, das eine Reihe von Verläufen mit Speicheradressen (I1, I2, ..., T1, T2, ...) zeigt. Die Verläufe zeigen die Zeit „n" ausgedrückt in Taktzyklen, die Speicheradressen (I1, I2, ..., T1, T2, ...), welche aus jeder der sechzehn Speicherbänke (Verläufe B1, B2, ..., B16) gelesen werden, die Speicheradressen (I1, I2, ..., T1, T, ...), die in den Registern 242, 244 gespeichert werden, und die Speicheradresse (I1, I2, ..., T1, T2, ...) der in der Verarbeitungseinheit 20 ausgeführten Befehle. Normalerweise (d. h. wenn kein Sprungbefehl gelesen wurde) funktioniert das Verarbeitungsgerät aus 3 auf die gleiche Weise wie das in 1 dargestellte Verarbeitungsgerät, bis auf die Ausnahme, dass die Befehle von einer Speicherbank 22ah zum vordersten Register 242 geleitet werden und in jeder nachfolgenden Taktperiode, in der die Verarbeitungseinheit 20 mit der Ausführung eines Befehls beginnt, an ein nächstes Register (beispielsweise direkt an das hinterste Register 244) in der Pipeline-Einheit 240 weitergeleitet werden. Von dem hintersten Register 244 werden die Befehle der Verarbeitungseinheit 20 zugeführt, um ausgeführt zu werden.
  • Wenn ein Befehl über den ersten Befehlsbus 26a in dem vordersten Register 244 eintrifft, erkennt der Detektor 248, ob es sich um einen bedingten Sprungbefehl handelt. Wenn dies der Fall ist, informiert der Detektor 248 die Leseeinheit 24 und führt der Leseeinheit 24 auch die Sprungzieladresse zu. Dies ist zum Beispiel der Fall beim Lesen eines Befehls aus der Speicheradresse I3. In Reaktion auf die Erkennung beginnt die Leseeinheit 24, wenn die Verarbeitungseinheit 20 die Ausführung eines nächsten Befehls startet, parallel mit der Adressierung der Speicherbänke 22ah mit Hilfe der Adressen (I4, I5, I6, ...) der Befehle, die logisch dieser Speicheradresse (I3) des Sprungbefehls folgen, und auch mit der Adressierung von Speicherbänken mit den Speicheradressen (T1, T2, ...) ab der Sprungzieladresse (T1) und logisch nachfolgenden Adressen (T2, T3, ...). (Man sagt, dass ein Befehl logisch einem anderen Befehl folgt, wenn er – ausgenommen bei Sprüngen – nach dem genannten anderen Befehl zur Ausführung gelangt.) Für die Adressierung der Sprungzieladresse (T1) und der logisch nachfolgenden Adressen (T2, T3) beginnt die Leseeinheit 24 mit dem parallelen Adressieren von so vielen Speicherbänken für nachfolgende Befehle, wie es Befehlsbusse 26ac gibt, soweit dies nicht zu einem Konflikt führt, wo eine Speicherbank 22ah mehr als einmal adressiert wird. Während einer oder mehrerer Taktperioden, die auf diese Adressierung folgen, führt die Leseeinheit 24 den Speicherbänken 22ah parallel, sobald die Verarbeitungseinheit mit der Ausführung eines Befehls beginnt, eine Speicheradresse (T4, T5, ...) zu, die den Speicheradressen (T1, T2, T3) der bereits adressierten Befehle folgt, und eine Speicheradresse (I8, I9), die der Speicheradresse (I4) des Sprungbefehls folgt.
  • Nachdem die Verarbeitungseinheit 20 anschließend mit der Ausführung von Befehlen aus einigen Speicheradressen (I1, I2) begonnen hat, beginnt sie mit der Ausfüh rung des Sprungbefehls (aus der Speicheradresse I3). Dieser Sprungbefehl wird dann zum Beispiel in einer ersten Stufe decodiert. In einer zweiten Stufe wird zum Beispiel die Bedingung des Sprungbefehls geprüft. Nach Beendigung des Sprungbefehls (aus der Speicheradresse I3) signalisiert die Verarbeitungseinheit 20 der Leseeinheit 24, ob der Sprungbefehl (aus der Speicheradresse I3) erfolgreich ausgeführt wurde oder nicht (unter „erfolgreich" ist zu verstehen, dass die Bedingung so beschaffen ist, dass der Sprungzielbefehl nach dem Sprungbefehl ausgeführt werden muss). Diese Signalisierung erfolgt zum Beispiel am Ende eines Befehlszyklus, in dem die Ausführung des Befehls aus der Speicheradresse (I4), die logisch der Speicheradresse des Sprungbefehls (I3) folgt, begonnen wurde.
  • Wenn der Sprungbefehl (aus der Speicheradresse I3) erfolgreich ausgeführt wurde, stoppt die Leseeinheit 24 in Reaktion auf die Signalisierung mit der Adressierung der Speicheradressen (I10, I11, nicht abgebildet) von Befehlen, die normalerweise dieser Speicheradresse (I3) des Sprungbefehls folgen. Die Verarbeitungseinheit 20 stoppt die Ausführung (zum Beispiel Stufen nach der Decodierung) von allen Befehlen (aus der Speicheradresse I4), deren Ausführung nach dem Sprungbefehl (aus der Speicheradresse I3) begonnen wurde. Die Leseeinheit 24 steuert auch die Speicherbänke 22ah auf eine solche Weise, dass die aus der Sprungzieladresse (T1) und den nachfolgenden Adressen (T2, T3), die gleichzeitig mit der Sprungzieladresse adressiert werden, gelesenen Befehle über die Befehlsbusse 26ac zur Verfügung stehen. Mit Hilfe der Multiplexer 243, 245 stellt die Einheit 24 sicher, dass der Sprungzielbefehl (aus der Speicheradresse T1) der Verarbeitungseinheit 20 parallel zum Laden der Befehle aus den nachfolgenden Speicheradressen (T3, T2) in die Register 242, 244 der Pipeline-Einheit 240 zugeführt wird. Während nachfolgender Taktperioden werden die nachfolgenden Befehle wie üblich in das vorderste Register 242 geladen. Dieses Verfahren kann im Fall von unbedingten Sprungbefehlen angewendet werden, sei es, dass die Leseeinheit das Lesen von Befehlen, die logisch dem Sprungbefehl folgen, bereits ab der Signalisierung des unbedingten Sprungbefehls stoppen kann.
  • Wenn der Sprungbefehl (aus der Speicheradresse I3) nicht erfolgreich ausgeführt wurde (die Situation ist in 4 nicht dargestellt), stoppt die Leseeinheit 24 die Adressierung der Speicheradressen (T7, T8) von Befehlen, die der Sprungzieladresse (T1) folgen. Während aufeinanderfolgender Taktperioden werden die dem Sprungbefehl folgenden Befehle wieder in das vorderste Register 242 geladen, wobei dann der aus der Sprungzieladresse gelesene Befehl und die nachfolgenden Befehle ignoriert werden.
  • Wenn die Verarbeitungseinheit 20 einen Sprungbefehl ausführt, der nicht durch den Detektor 248 signalisiert wurde (zum Beispiel weil der entsprechende Befehl in die Pipeline-Einheit 240 geladen wurde, während das vorderste Register 242 umgangen wurde), verarbeitet die Leseeinheit 24 den Sprungbefehl wie in Bezug auf die 1 und 2 beschrieben, so dass mehr Zeit verloren geht. Das gleiche gilt für Sprungbefehle, deren Sprungzieladresse nicht im vorhinein bekannt ist, zum Beispiel weil sie von der Verarbeitungseinheit 20 auf der Basis von Daten berechnet werden muss. Es hat sich in der Praxis gezeigt, dass diese Umstände nur selten in Programmen auftreten. Wenn gewünscht, kann dieses Problem abgemildert werden, indem man eine Vielzahl von Sprungdetektoren (nicht abgebildet) aufnimmt, die jeweils mit dem Eingang eines entsprechenden Befehlsbusses 26bc verbunden sind. Diese Detektoren können der Leseeinheit 24 im vorhinein Sprungbefehle signalisieren, die in die Pipeline-Einheit geladen wurden, während das vorderste Register 242 umgangen wurde. Die Leseeinheit 24 kann dann derartige Sprungbefehle wie zuvor beschrieben verarbeiten, so dass weniger Zeit verloren geht.
  • Während der Adressierung der Speicherbänke 22ah kann ein Konflikt zwischen der Adressierung der Speicheradressen (I4, I5, I6, ...) von Befehlen, die logisch dem Sprungbefehl folgen, und der Adressierung des Sprungzielbefehls (T1) und der dem Sprungzielbefehl (T2, T3, ...) logisch folgenden Befehlen auftreten. Ein Konflikt tritt auf, wenn eine Speicherbank 22ah zum Lesen eines Befehls adressiert werden muss, während diese Speicherbank auch für einen anderen Befehl adressiert werden muss oder noch mit dem Lesen eines anderen Befehls befasst ist. Ein derartiger Konflikt kann nicht zwischen den Speicheradressen (I1, I2, I4, I5, ...) von Befehlen auftreten, die logisch der Speicheradresse (I3) des Sprungbefehls vorangehen oder folgen, weil Speicheradressen von direkt logisch folgenden Befehlen auf der Basis eines zyklischen Warteschlangenbetriebs auf verschiedene Speicherbänke 22ah verteilt sind und weil die Anzahl der Speicherbänke so groß ist, dass eine Speicherbank 22ah das Lesen immer beendet haben wird, bevor so viele neue Befehle zur Ausführung übernommen werden konnten, dass diese Speicherbank 22ah wieder zum Lesen eines Befehls adressiert werden kann, der logisch auf einen zuvor gelesenen Befehl folgt. Aus dem gleichen Grund kann auch kein Konflikt zwischen dem Lesen des Sprungzielbefehls (T1) und der Befehle (T2, T3, ...) auftreten, die logisch auf den Sprungzielbefehl folgen.
  • Die Speicheradresse (T1) des Sprungzielbefehls kann jedoch in einer Speicherbank 22ah gespeichert werden, in der auch die Speicheradresse (I4, I5, I6, ...) eines Befehls gespeichert wird, die logisch der des Sprungbefehls (I3) folgt und die in einem Zeitintervall gelesen werden sollte, das sich mit dem zum Lesen des Sprungzielbefehls (T1) erforderlichen Zeitintervall überlappt. Das gleiche kann für Befehle (T2, T3, ...) gelten, die logisch dem Sprungzielbefehl (T1) folgen. Die Leseeinheit 24 erkennt derartige Konflikte und verhindert daraus entstehende Fehler.
  • Wenn die gleiche Speicherbank 22ah zum Lesen von zwei Befehlen gleichzeitig adressiert werden müsste (d. h. innerhalb der gleichen Taktperiode), wählt die Leseeinheit 24 einen dieser beiden Befehle und adressiert die Speicherbank 22ah nur zum Lesen des gewählten Befehls. Die Leseeinheit 24 kann diese Entscheidung im Prinzip zufallsmäßig treffen. Die Leseeinheit 24 verschiebt das Lesen des nicht-gewählten Befehls und der logisch folgenden Befehle, bis bekannt ist, ob der Sprung erfolgreich war oder nicht. Wenn der Sprungzielbefehl in einer Speicherbank 22ah gespeichert wird, die noch mit dem Lesen eines anderen Befehls befasst ist, wenn der Sprungbefehl signalisiert wird, wählt die Leseeinheit 24 zwischen dem Unterbrechen dieses Lesevorgangs und dem Adressieren des Sprungzielbefehls auf der einen Seite und dem Unterlassen der Adressierung des Sprungzielbefehls auf der anderen Seite. (Dies erfolgt natürlich nur, wenn die Speicherbänke 22ah Speicher enthalten, die während (des relevanten Teils) der Leseoperation unterbrochen werden dürfen, also zum Beispiel nicht im Fall von DRAMs). Die Leseeinheit 24 verschiebt das Lesen des nicht-gewählten Befehls und der diesem logisch folgenden Befehle, bis bekannt ist, ob der Sprung erfolgreich war oder nicht.
  • Wenn sich herausstellt, dass infolge des Sprungs der derzeit adressierte Befehl ausgeführt werden muss, setzt das Verarbeitungsgerät seinen Betrieb fort, wie unter Bezugnahme auf 4 beschrieben. Wenn sich herausstellt, dass infolge des Sprungs der nicht-adressierte Befehl ausgeführt werden muss, adressiert die Leseeinheit 24 nun diesen Befehl und die diesem logisch folgenden Befehle. In diesem Fall kann die Verarbeitungseinheit 20 die Ausführung der Befehle für einige Taktperioden nicht starten, bis die auf diese Weise adressierten Befehle aus den Speicherbänken 22ah ausgelesen wurden. Die gelesenen Befehle werden dann der Verarbeitungseinheit 20 und den Registern 242, 244 zugeführt, und anschließend kann die Verarbeitungseinheit 20 mit dem Betrieb fortfahren. Die Leseeinheit 24 kann dann im Prinzip parallel zum Adressieren dieses Befehls (parallel bedeutet in der gleichen Taktperiode) auch eine Anzahl von Adressen adressieren, die diesem Befehl logisch folgen, so dass diese logisch folgenden Befehle so schnell wie möglich zum Laden in die Register 242, 244 der Pipeline-Einheit zur Verfügung stehen und dadurch die Wartezeit der Verarbeitungseinheit 20 minimiert wird und die relevanten Speicherbänke 22ah so schnell wie möglich wieder für die weitere Adressierung zur Verfügung stehen. In dem Fall, dass die Speicherbänke 22ah Speicher umfassen, die nicht während (eines Teils) der Leseoperation unterbrochen werden dürfen (wie dies zum Beispiel bei DRAMs der Fall ist), kann es erforderlich sein, das Lesen dieser logisch folgenden Befehle zu verschieben.
  • Die von der Leseeinheit 24 getroffene Wahl beim Bestimmen, welcher Befehl bei einem Konflikt gelesen werden soll und welcher Befehl nicht gelesen werden soll, kann auf verschiedene Weise implementiert werden. Akzeptable Möglichkeiten sind: eine zufallsmäßige Wahl, eine bewusste Entscheidung für das Sprungziel, oder eine bewusste Entscheidung für den Befehl, der logisch dem Sprungbefehl folgt. Solange der Erfolg des Sprungs nicht vorhergesagt werden kann, kann bei der Ausführung der Befehle immer ein Zeitverlust auftreten, wenn sich herausstellt, dass der Befehl ausgeführt werden muss, der nicht gelesen wurde. Um diesen Zeitverlust zu minimieren, können zusammen mit dem Sprungbefehl Informationen gespeichert werden, mit denen angegeben wird, welche Entscheidung vorzugsweise zu treffen ist. Nach dem Lesen kann die Leseeinheit 24 dann eine Entscheidung auf der Basis dieser Informationen treffen. Diese Informationen können zum Beispiel durch einen Kompilierer erzeugt oder während der Ausführung der Befehle aktualisiert werden, und zwar in Abhängigkeit davon, ob der Sprung erfolgreich war oder nicht.
  • Außerdem kann durch das Kompilieren auch sichergestellt werden, dass Speicherkonflikte verhindert werden, indem ein Sprungzielbefehl an einer solchen Adresse in Bezug auf den zugehörigen Sprungbefehl platziert wird, dass keine Konflikte entstehen, d. h., indem man ihn in der zyklischen Warteschlangensequenz der Speicherbänke 22ah weit genug von dem Sprungbefehl entfernt platziert.

Claims (11)

  1. Verarbeitungsgerät mit – einer Verarbeitungseinheit, – einem Speicher zum Speichern von Befehlen für die Verarbeitungseinheit, – einer Leseeinheit zum Lesen von Befehlen aus dem Speicher in einer logischen Reihenfolge und zum Weiterleiten der Befehle an die Verarbeitungseinheit, damit sie in der logischen Reihenfolge ausgeführt werden, dadurch gekennzeichnet, dass der Speicher eine Vielzahl von unabhängig adressierbaren Speicherbänken umfasst, wobei logisch aufeinanderfolgende Befehle in verschiedenen Speicherbänken gespeichert werden, und dass die Leseeinheit vorgesehen ist, um eine Anzahl von Befehlen aus verschiedenen Speicherbänken parallel zu lesen und diese Anzahl von Befehlen jedes Mal wieder aufzufüllen, wenn die Verarbeitungseinheit mit dem Ausführen eines Befehls beginnt, indem sie beginnt, einen Befehl zu lesen, der logisch auf die Befehle folgt, die in diesem Augenblick parallel aus den Speicherbänken ausgelesen werden.
  2. Verarbeitungsgerät nach Anspruch 1, in dem die Verarbeitungseinheit ist in der Lage, nicht mehr als die aufeinanderfolgende Ausführung von einer Anzahl N Befehlen in einem Zeitintervall zu starten, das mindestens zwischen dem Adressieren einer Speicherbank und dem Zuführen eines dann gelesenen Befehls an die Verarbeitungseinheit erforderlich ist, wobei die Leseeinheit vorgesehen ist, um N Befehle parallel aus den verschiedenen Speicherbänken zu lesen.
  3. Verarbeitungsgerät nach Anspruch 1 oder 2, in dem die Verarbeitungseinheit vorgesehen ist, um unter anderem einen Sprungbefehl auszuführen, nach dem die Verarbeitungseinheit abhängig von der Erfüllung der zu beurteilenden Bedingung mit der Ausführung von entweder einem Sprungzielbefehl oder einem Befehl, der logisch auf den Sprungbefehl folgt, fortfahren sollte, wobei die Leseeinheit vorgesehen ist, um Befehle zwischen dem Auslesen aus dem Speicher und dem Zuführen zur Verarbeitungseinheit in einer Pipeline-Einheit zwischenzuspeichern, um den Sprungbefehl in der Pipeline-Einheit zu erken nen, und außerdem vorgesehen ist, um in Reaktion auf das Erkennen des Sprungbefehls und parallel zu dem Auslesen von einem oder mehreren Befehlen, die logisch auf den Sprungbefehl folgen, mit dem Auslesen des Sprungzielbefehls aus einer weiteren Speicherbank zu beginnen, vorausgesetzt, dass die weitere Speicherbank nicht einen oder mehrere Befehle) enthält, der (die) logisch auf den Sprungbefehl folgt (folgen), und auch vorgesehen ist, um nach der Ausführung des Sprungbefehls und in Abhängigkeit von dem Erfüllen der Bedingung entweder den Sprungzielbefehl und die logisch darauf folgenden Befehle oder den Befehl, der logisch auf den Sprungbefehl folgt und Befehle, die logisch auf diesen folgen, an die Verarbeitungseinheit weiterzuleiten.
  4. Verarbeitungsgerät nach Anspruch 3, in dem die Leseeinheit vorgesehen ist, um parallel zu der Adressierung eines Sprungzielbefehl-Speicherplatzes einen Befehlsspeicherplatz von mindestens einem Befehl zu adressieren, der logisch auf den Sprungzielbefehl folgt, und um den genannten mindestens einen Befehl in eine interne Stufe oder entsprechende interne Stufen der Pipeline-Einheit zu laden, wenn die Bedingung erfüllt wird.
  5. Verarbeitungsgerät nach Anspruch 4, in dem die Verarbeitungseinheit in der Lage ist, nicht mehr als die aufeinanderfolgende Ausführung von einer Anzahl N Befehlen in einem Zeitintervall zu starten, das mindestens zwischen dem Adressieren einer Speicherbank und dem Zuführen eines daraufhin gelesenen Befehls an die Verarbeitungseinheit erforderlich ist, wobei die Leseeinheit vorgesehen ist, um parallel zur Adressierung des Sprungzielbefehls Befehlsspeicherplätze von N – 1 Befehlen, die logisch auf den Sprungzielbefehl folgen, zu adressieren, und vorgesehen ist, um die N – 1 Befehle parallel in die Pipeline-Einheit zu laden, wenn die Bedingung erfüllt wird.
  6. Verarbeitungsgerät nach Anspruch 3, 4 oder 5, in dem die Leseeinheit vorgesehen ist, um nach der Erkennung des bedingten Sprungbefehls und bis die Verarbeitungseinheit den bedingten Sprungbefehl ausgeführt hat, jedes Mal, wenn die Verarbeitungseinheit mit der Ausführung eines Befehls beginnt, mit dem parallelen Auslesen eines Befehls, der logisch dem Sprungbefehl folgt, und eines Befehls, der logisch auf den Sprungzielbefehl folgt, aus verschiedenen Speicherbänken zu beginnen.
  7. Verarbeitungsgerät nach Anspruch 3, 4, 5 oder 6, in dem die Leseeinheit vorgesehen ist, um zu erkennen, ob sich der Speicherplatz des Sprungzielbefehls in der gleichen Speicherbank befindet wie ein Befehlsspeicherplatz eines Befehls, der logisch dem Sprungbefehl folgt, und vorgesehen, um im Fall einer Koinzidenz und auf der Basis von ergänzenden Informationen bezüglich des Sprungbefehls entweder den Speicherplatz des Sprungzielbefehls und die Befehlsspeicherplätze der Befehle zu adressieren, die logisch auf den Speicherplatz des Sprungzielbefehls folgen, oder den Befehlsspeicherplatz des Befehls, der logisch dem Sprungbefehl folgt, und die Befehlsspeicherplätze der Befehle, die diesem logisch folgen.
  8. Verarbeitungsgerät nach einem der Ansprüche 3 bis 7, programmiert mit einem Programm, in dem der Sprungzielbefehl und M Befehle, die dem Sprungzielbefehl logisch folgen, in anderen Speicherbänken gespeichert werden als der Befehl, der logisch dem Sprungbefehl und M Befehlen folgt, die diesem Sprungbefehl logisch folgen.
  9. Verarbeitungsgerät nach einem der Ansprüche 1 bis 8, in dem die Leseeinheit vorgesehen ist, um – wenn keine Befehle gelesen werden und die Verarbeitungseinheit bereit ist, mit der Ausführung eines Befehls zu beginnen – mit dem parallelen Lesen eines ersten auszuführenden Befehls und mindestens eines Befehls, der logisch auf den ersten auszuführenden Befehl folgt, zu beginnen.
  10. Verarbeitungsgerät nach einem der Ansprüche 1 bis 9, das auf einem Halbleitersubstrat integriert ist.
  11. Kompilierer für ein Verarbeitungsgerät nach einem der Ansprüche 1 bis 9, der vorgesehen ist, um in dem Befehlsspeicher zu speichernde Befehle zu erzeugen, einschließlich eines Sprungbefehls, und vorgesehen ist, um die Anordnung von Befehlen im Befehlsspeicher auf eine solche Weise anzupassen, dass ein Sprungzielbefehl und ein oder mehrere Befehle, die logisch darauf folgen, in anderen Speicherbänken gespeichert werden als eine gleiche Anzahl von Befehlen, die dem Sprungbefehl folgen.
DE69727127T 1996-11-04 1997-10-02 Verarbeitungsgerät zum lesen von befehlen aus einem speicher Expired - Fee Related DE69727127T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP96203063 1996-11-04
EP96203063 1996-11-04
PCT/IB1997/001197 WO1998020415A1 (en) 1996-11-04 1997-10-02 Processing device, reads instructions in memory

Publications (2)

Publication Number Publication Date
DE69727127D1 DE69727127D1 (de) 2004-02-12
DE69727127T2 true DE69727127T2 (de) 2004-11-25

Family

ID=8224542

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69727127T Expired - Fee Related DE69727127T2 (de) 1996-11-04 1997-10-02 Verarbeitungsgerät zum lesen von befehlen aus einem speicher

Country Status (6)

Country Link
US (2) US6360311B1 (de)
EP (1) EP0877981B1 (de)
JP (1) JP2000507016A (de)
KR (1) KR19990076967A (de)
DE (1) DE69727127T2 (de)
WO (1) WO1998020415A1 (de)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073330A (ja) * 2000-08-28 2002-03-12 Mitsubishi Electric Corp データ処理装置
KR20040008714A (ko) * 2002-07-19 2004-01-31 주식회사 하이닉스반도체 마이크로 제어 시스템에 있어서 메모리 정보를 읽는 장치
US10127558B2 (en) * 2002-12-06 2018-11-13 Altisource S.À R.L. Expense tracking, electronic ordering, invoice presentment, and payment system and method
US8266028B2 (en) 2002-12-06 2012-09-11 Altisource Solutions S.à r.l. Expense tracking, electronic ordering, invoice presentment, and payment system and method
US7412418B2 (en) 2002-12-06 2008-08-12 Ocwen Financial Corporation Expense tracking, electronic ordering, invoice presentment, and payment system and method
US7254690B2 (en) * 2003-06-02 2007-08-07 S. Aqua Semiconductor Llc Pipelined semiconductor memories and systems
US7702883B2 (en) * 2005-05-05 2010-04-20 Intel Corporation Variable-width memory
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US8139071B1 (en) 2006-11-02 2012-03-20 Nvidia Corporation Buffering unit to support graphics processing operations
US7999817B1 (en) 2006-11-02 2011-08-16 Nvidia Corporation Buffering unit to support graphics processing operations
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
US8286246B2 (en) 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US8079084B1 (en) 2007-08-10 2011-12-13 Fortinet, Inc. Virus co-processor instructions and methods for using such
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US9100319B2 (en) 2007-08-10 2015-08-04 Fortinet, Inc. Context-aware pattern matching accelerator
CN101394541A (zh) * 2007-09-21 2009-03-25 中兴通讯股份有限公司 用于交互式网络电视系统的文件内容的分发方法
CN102037652A (zh) 2008-05-21 2011-04-27 Nxp股份有限公司 包括存储器组的数据处理系统和数据重排
CN102037514A (zh) * 2008-05-21 2011-04-27 Nxp股份有限公司 包括重排网络的数据处理系统
EP3156896B1 (de) 2010-09-17 2020-04-08 Soft Machines, Inc. Mehrfach verzweigte einzelzyklusvorhersage mit einem latenten cache für frühe und entfernte verzweigungsvorhersage
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
KR101703400B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US9280398B2 (en) 2012-01-31 2016-03-08 International Business Machines Corporation Major branch instructions
US9229722B2 (en) 2012-01-31 2016-01-05 International Business Machines Corporation Major branch instructions with transactional memory
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) * 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
EP2972836B1 (de) 2013-03-15 2022-11-09 Intel Corporation Verfahren zur emulierung einer zentralisierten gast-flag-architektur mithilfe einer nativen verteilten flag-architektur
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
CN104424128B (zh) * 2013-08-19 2019-12-13 上海芯豪微电子有限公司 变长指令字处理器系统和方法
WO2015175555A1 (en) 2014-05-12 2015-11-19 Soft Machines, Inc. Method and apparatus for providing hardware support for self-modifying code
US10019743B1 (en) 2014-09-19 2018-07-10 Altisource S.á r.l. Methods and systems for auto expanding vendor selection
US11550577B2 (en) * 2019-05-15 2023-01-10 Western Digital Technologies, Inc. Memory circuit for halting a program counter while fetching an instruction sequence from memory
CN113434198B (zh) * 2021-06-25 2023-07-14 深圳市中科蓝讯科技股份有限公司 Risc-v指令处理方法、存储介质及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727474A (en) * 1983-02-18 1988-02-23 Loral Corporation Staging memory for massively parallel processor
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
CA1250667A (en) * 1985-04-15 1989-02-28 Larry D. Larsen Branch control in a three phase pipelined signal processor
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
DE69032812T2 (de) * 1989-07-07 1999-04-29 Hitachi Ltd Vorrichtung und Verfahren zur parallelen Verarbeitung
US5261068A (en) * 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
EP0544083A3 (en) * 1991-11-26 1994-09-14 Ibm Interleaved risc-type parallel processor and processing methods
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
US5619663A (en) * 1994-09-16 1997-04-08 Philips Electronics North America Corp. Computer instruction prefetch system
US5784548A (en) * 1996-03-08 1998-07-21 Mylex Corporation Modular mirrored cache memory battery backup system

Also Published As

Publication number Publication date
US6360311B1 (en) 2002-03-19
US7124282B2 (en) 2006-10-17
EP0877981A1 (de) 1998-11-18
DE69727127D1 (de) 2004-02-12
KR19990076967A (ko) 1999-10-25
US20020038415A1 (en) 2002-03-28
EP0877981B1 (de) 2004-01-07
WO1998020415A1 (en) 1998-05-14
JP2000507016A (ja) 2000-06-06

Similar Documents

Publication Publication Date Title
DE69727127T2 (de) Verarbeitungsgerät zum lesen von befehlen aus einem speicher
EP0947049B1 (de) Umkonfigurierungs-verfahren für programmierbare bausteine zur laufzeit
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE4330751C2 (de) Verfahren zum Liefern von Daten von einem Hauptspeicher über ein Speicherpuffersystem zu einem Datenverarbeitungssystem
DE3638572C2 (de)
DE1499182C3 (de) Datenspeichersystem
DE102007038877B4 (de) Steuervorrichtung mit schneller I/O-Funktion und Steuerverfahren zum Steuern ihrer Daten
DE1915818B2 (de) Steuerschaltung für ein elektronisches Datenverarbeitungssystem
DE2306115A1 (de) Datenprozessor mit ablage-mikrosteuerung
DE1966633A1 (de) Datenverarbeitungsanlage
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE3131341A1 (de) "pufferspeicherorganisation"
DE2556617C2 (de) Schiebe- und Rotierschaltung
DE4216905A1 (de) Superskalarprozessor
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE1949916C3 (de) Verfahren zum Betrieb einer programmgesteuerten Datenverarbeitungsanlage und Anordnung zur Durchführung des Verfahrens
DE2720842C3 (de) Datenübertragungssystem
DE2824711A1 (de) Steuereinrichtung fuer speicherzugriffe
DE1774211C3 (de) Datenspeicheranordnung für ein Datenverarbeitungssystem
EP0535265B1 (de) Verfahren zur Erstellung einer ablauffähigen Konfiguration eines in einen Systemspeicherbereich eines Prozessorsystems ladbaren Systemprogramms
EP1163577B1 (de) Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
EP0010625B1 (de) Hierarchisches Speichersystem
DE2544071C3 (de) Mehrstufiges Arbeitsspeichersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee