DE19824289A1 - Pipelineverarbeitungsmaschine - Google Patents

Pipelineverarbeitungsmaschine

Info

Publication number
DE19824289A1
DE19824289A1 DE19824289A DE19824289A DE19824289A1 DE 19824289 A1 DE19824289 A1 DE 19824289A1 DE 19824289 A DE19824289 A DE 19824289A DE 19824289 A DE19824289 A DE 19824289A DE 19824289 A1 DE19824289 A1 DE 19824289A1
Authority
DE
Germany
Prior art keywords
pipeline
address
execution
stage
instruction
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.)
Granted
Application number
DE19824289A
Other languages
English (en)
Other versions
DE19824289C2 (de
Inventor
Joshua Porten
Amir Bar-Niv
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.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
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 National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19824289A1 publication Critical patent/DE19824289A1/de
Application granted granted Critical
Publication of DE19824289C2 publication Critical patent/DE19824289C2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification

Landscapes

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

Description

Die Erfindung betrifft eine Pipelineverarbeitungsmaschine nach dem Oberbegriff des Anspruchs 1.
Eine Pipelineverarbeitungsmaschine ist beispielsweise ein Rechnerprozessor, in dem die Durchführung von Befehlen in einer Reihe von Einheiten oder Stufen abläuft, die so angeordnet sind, daß mehrere Stufen die entsprechenden Teile mehrerer Befehle gleichzeitig verarbei­ ten können. Zwei oder mehr Stufen einer Pipelinebearbeitungsmaschine, wie etwa Vorabruf, Abruf, Decodierung, Durchführung und Zurückschreiben, können gleichzeitig einen jeweils anderen Befehl bearbeiten. Pipeline­ verarbeitung dient somit zum Abrufen und Decodieren (Vorverarbeiten) von Befehlen, bei dem zu einem bestimmten Zeitpunkt mehrere Programmbefehle sich in unterschiedlichen Stufen des Abrufs, der Decodierung oder der Durchführung befinden. Idealerweise beschleunigt die Pipelineverarbei­ tung die Durchführung, indem sie dafür sorgt, daß die Vorrichtung nicht auf Befehle warten muß; wenn die Durchführung eines Befehls abgeschlos­ sen ist, ist der nächste bereit und in Wartestellung. Ein Beispiel für eine Pipelineverarbeitungsmaschine ist der DECchip 21064 (auch DEC Alpha oder DEC Alpha AXP genannt) der Firma Digital Equipment Corporation (Massachusetts).
Eine typische Pipelineverarbeitungsmaschine weist eine Anzahl von Stufen auf, die unterschiedliche Phasen eines Befehls parallel durchführen. Eine solche Vorrichtung kann beispielsweise vier Stufen aufweisen. Die erste Stufe führt einen Vorabruf eines neuen Befehls durch, die zweite decodiert den soeben vorabgerufenen Befehl, die dritte führt einen Vorabruf von Operanden durch, die für den soeben decodierten Befehl erforderlich sein können, und die vierte Stufe führt den Befehl aus, nachdem er vorabgerufen und decodiert und all seine Operanden vor­ abgerufen worden sind. Folglich sind die vier Pipelinestufen in diesem Beispiel: Vorabruf, Decodierung, Operanden-Vorabruf und Durchführung. Diese Pipeline wird Durchführungspipeline genannt, da sie für die Durch­ führung des Programmierercodes verantwortlich ist. Statt bei Rechnerpro­ zessoren kann die Pipelinebearbeitung auch bei jeder anderen auf Befeh­ len basierenden Vorrichtung, wie beispielsweise Digitalsignalprozessoren (DSP) oder Plattenspeichersteuereinheiten durchgeführt werden.
Ein anderes Beispiel einer bekannten Pipelineverarbeitungsma­ schine ist der Motorola 68020 Mikroprozessor der Firma Motorola, Inc. (Schaumburg, Illinois). Dieser Prozessor enthält gemäß Fig. 4 eine Be­ fehlsvorabrufs- und Decodierungseinheit. Diese Einheit liefert den Me­ chanismus zum gleichzeitigen Vorabrufen, Decodieren und Durchführen von Befehlen. Eine Befehlspipeline 2 enthält mehrere Stufen 3, 4, 5, die von Befehlen bei deren Bearbeitung durchlaufen werden. Die Befehlspipeline wird durch ein Cache-Halteregister 1 gespeist, welches im wesentlichen einen Puffer zwischen dem Speicher und der Befehlspipeline 2 dar­ stellt. Eine Folgesteuerungseinheit 6 und eine Steuereinheit 7 steuern den Prozessor einschließlich der Befehlspipeline 2 in Antwort auf in den Stufen 3, 4, 5 enthaltenen Werte an. Eine Ausführungseinheit 8 ist im wesentlichen das Rechenelement des Prozessors. Zu einem gegebenen Zeit­ punkt kann der Prozessor vier Worte eines Befehls oder vier separate Wortlängenbefehle bearbeiten.
Beispielsweise kann die Ausführungseinheit 8 die Ergebnisse eines soeben ausgeführten Befehls enthalten, während die Stufe A 3 den nächsten zu verarbeitenden Befehl liefern kann. Stufe B 4 kann die zur Komplettierung des gegenwärtigen Befehls erforderlichen Daten, etwa ei­ nen Direktoperanden, liefern. Stufe C 5 kann schließlich einen vollstän­ dig decodierten und auf Gültigkeit geprüften Befehl, der zur Ausführung bereit ist, enthalten. Dieser Teil der Pipelinearchitektur erfüllt den Zweck, die bei einer Befehlsdurchführung zum Vorabruf und zur Decodie­ rung erforderliche Zeit zu eliminieren. Dies kann erreicht werden, da diese Operationen parallel durchgeführt werden, während der vorherige Befehl noch ausgeführt wird. Hierdurch wird eine schnellere Ausführung des Programms erreicht.
Idealerweise funktioniert eine Reihe von Befehlen, die in ei­ ner Pipelineverarbeitungsmaschine ausgeführt wird, schneller und sonst in identischer Weise relativ zu einer nicht-pipelinebearbeitenden Reihe von Befehlen. Ein Programmierer sollte erwarten können, daß, wenn sein Code zunächst spezifiziert, daß ein bestimmtes Register gelesen und das­ selbe Register dann in den nächsten Befehl geschrieben werden soll, die Pipelineverarbeitungsmaschine seine Befehle in dieser Reihenfolge aus­ führt. Er sollte gleichermaßen erwarten können, daß bei einer Umkehrung der Reihefolge der Befehle das Register zunächst geschrieben und dann gelesen wird. Die Befehle sollten in derselben Reihenfolge durchgeführt werden wie es bei einer Vorrichtung ohne Pipelinebearbeitung der Fall wäre. Falls dies so ist, wird die Pipeline als transparent bezeichnet, da sie keine unerwünschten oder unvorhersehbaren Effekte in die Ausfüh­ rung der Befehle einführt. Mit anderen Worten besteht der einzige Unter­ schied zwischen einer Vorrichtung ohne Pipelinebearbeitung und einer transparenten Vorrichtung mit Pipelinebearbeitung darin, daß die Vor­ richtung mit Pipelinebearbeitung die Befehlsausführung schneller ab­ schließt und somit die Arbeit schneller erledigt wird.
Pipelineverarbeitsmaschinen sind jedoch leider nicht transpa­ rent. Sie besitzen in Wirklichkeit Nebeneffekte, welche anomale Resulte hervorrufen können. Wenn beispielsweise zwei unterschiedliche Befehls­ folgen ABC und ACB logisch dasselbe tun, jedoch bei Ausführung mit Pipe­ lineverarbeitungsmaschine unterschiedliche Resultate liefern, so ist dies ein Nebeneffekt. Dies stellt ein Problem dar, da es für einen Pro­ grammierer schwierig zu wissen ist, was bei Berechnung eines Wertes er­ wartet werden soll. Zur effektiven Programmierung einer Pipelineverar­ beitungsmaschine müssen Programmierer in der Lage sein, die Ergebnisse ihrer Berechnungen folgerichtig bestimmen zu können und zu wissen, wann diese Resultate verwertbar sind. Wenn die Pipeline die zur Berechnung eines Werts erwartete Ordnung zerstört, ist es wahrscheinlich, daß das Programm nicht funktioniert, auch wenn der Wert schließlich korrekt be­ rechnet wurde.
Nebeneffekte können subtiler und schwerer nachweisbar sein als Probleme bei der Ausführungsreihenfolge. Beispielsweise führt eine DSP-Vorrichtung typischerweise mehrere Operationen pro Befehl durch. Eine DSP-Vorrichtung, welche eine Adresseneinheit verwendet, die Register und eine Arithmetik/Logik-Einheit (ALU = arithmetic logic unit) zur Berech­ nung der Adresse, von der der nächste Operand geladen werden soll, ent­ hält, weist mit hoher Wahrscheinlichkeit Nebeneffekte auf. Auf die Adresseneinheitsregister kann mittels eines Befehls direkt oder mittels eines Inkrementierungsadressenspeicherbefehls indirekt zugegriffen wer­ den. Wenn ein Befehl, wie ein "Lade-Akkumulator" (LACC) mit einem be­ stimmten Speicheroperanden, durchgeführt werden soll, wird der Operand aus dem Speicher abgerufen und dann in den Akkumulator geladen. Zur sel­ ben Zeit auf der selben Befehlsleitung kann jedoch die DSP-Vorrichtung einen Adressenzeiger weiterschalten, einen Offset zum Adressenzeiger ad­ dieren und verschiedene andere Funktionen durchführen. Bei all diesen verschiedenen Funktionen desselben Verbundbefehls ist es möglich, daß als Ergebnis eines Prozessorentwurffehlers mindestens zwei der Funktio­ nen auf derselben Stufe der Pipeline ablaufen. Folglich kann ein solcher Verbundbefehl ein undefiniertes Ergebnis verursachen, wenn zwei Funktio­ nen auf dasselbe Register während derselben Stufe zugreifen. Bis zur Do­ kumentation dieses speziellen Ablaufs kann der Programmierer nur das Endergebnis des Konflikts beobachten, und es stellt sich für ihn die Frage, wie dieses erhalten wurde. Bekannte Pipelines stellen eine Black­ box dar, bei der die Reihenfolge der Ausführung verschiedener Teile ei­ nes Befehls versteckt ist, so daß es Nebeneffekte gibt, die nur bei Do­ kumentation oder durch Ausprobieren verstanden werden können.
Eine weitere Schwierigkeit, die zu Nebeneffekten führt, tritt auf, wenn zwei Befehle, beispielsweise "Inkrementiere Adreßregister 1" und "Schreibe einen neuen Wert in Adreßregister 1" aufeinanderfolgen. Wenn sich ein Programmierer der Nebeneffekte nicht bewußt ist, würde er hier kein Problem erwarten, da sogar dann, wenn beide Befehle auf das­ selbe Register zugreifen, sie als gleichzeitig durchzuführen geschrieben werden. Wenn jedoch "Inkrementiere Adreßregister 1" auf einer anderen Stufe der Pipeline als "Schreibe einen neuen Wert in Adreßregister 1" ausgeführt wird, kann sehr leicht der Fall eintreten, daß zwei Befehle gleichzeitig einen Zugriff auf das Adreßregister 1 versuchen, wodurch ein Konflikt mit undefinierten Folgen hervorgerufen wird.
Aufgrund der Komplexität von Pipelineverarbeitungsmaschinen ist es leider schwierig und kostenintensiv, sie komplett zu dokumentie­ ren. Die Anzahl verschiedener Befehlspermutationen und Datenfolgen, die auftreten können, ist sehr groß. Folglich ist es nicht überraschend, daß viele Nebeneffekte üblicherweise nicht dokumentiert sind. Folglich sind die Beschaffenheit und die vollständige Wirkung eines Pipelinenebenef­ fekts für die Konstrukteure der Vorrichtung nicht völlig verständlich und damit noch weniger für die Benutzer.
Der Nachweis von Pipelinenebeneffekten kann schwierig sein, da diese häufig nach dem Ereignis als Ergebnis vieler gleichzeitiger Ge­ schehnisse auftreten. Mit anderen Worten führt jede Stufe der Pipeline gleichzeitig eine andere Funktion aus, und die Folge eines Konflikts zwischen zwei Stufen könnte solange nicht offenkundig werden, bis einige zusätzliche Befehle die Pipeline durchlaufen haben. Bekannte Pipeline­ verarbeitungsmaschinen bieten keinerlei Möglichkeiten, die Stufen der Pipeline einzusehen, um zu bestimmen, wie unterschiedliche Befehle auf den verschiedenen Pipelinestufen gehandhabt werden. Wenn eine bekannte Pipelineverarbeitungsmaschine mit einem Zustandsregister ausgestattet ist, wäre es nahezu unmöglich, zu bestimmen, zu welchem Zeitpunkt wel­ cher Teil welchen Befehls auf welcher Stufe der Pipeline einen bestimm­ ten Zustand verursacht hat. In diesem Falle ist eine Einrichtung zum gleichzeitigen Verfolgen des Fortschritts und Effekts mehrerer Befehle bei deren Durchlauf durch die Pipeline erforderlich, so daß Nebeneffekte identifiziert und ihre Auswirkungen genau bestimmt werden können. Zum korrekten Betrieb der Pipeline müssen nur die aktuellen auszuführenden Befehle (oder eine Form der Befehle) in jeder der unterschiedlichen Pi­ pelinestufen gespeichert werden. Die ursprünglichen Speicheradressen der Befehle sind für die korrekte Funktion der Pipeline nicht erforderlich. Die Befehlsadressen können jedoch dazu verwendet werden, die zur Identi­ fikation und zum Verständnis eines Pipelinenebeffekts erforderliche In­ formation zu liefern.
Wenn bekannt ist, welcher Befehl zu jeder Phase der Pipeline durchgeführt worden ist, kann ein komplettes Bild des Pipelinebetriebs abgeleitet werden. Diese Information kann durch das Fehlersuchprogramm verwendet werden, um ein genaues Bild davon zu liefern, wie jede Be­ fehlsfolge beim Durchgang durch die Pipeline gehandhabt wird. Die Effek­ te jeder Stufe auf jeden Befehl können entweder durch schrittweises Durchlaufen einer Sequenz oder durch das Setzen von Haltepunkten ver­ folgt werden. Somit ist eine Einrichtung zum Einsehen in den Betrieb der Pipeline erforderlich. Insbesondere ist eine Einrichtung zur Feststel­ lung erforderlich, welcher Befehl sich zu einem gegebenen Zeitpunkt auf welcher Stufe der Pipeline befindet, und ob diese Befehle ausgeführt worden sind. Ferner ist ein Betrachten des Zustands der Pipeline nach Erreichen eines Haltepunkts und ein Anzeichen dafür, welcher Befehl zum Erreichen des Haltepunkts durch den Prozessor geführt hat, erforder­ lich.
Außer der Fehlersuche in einem Programm zur Vermeidung jegli­ cher negativer oder unerwünschter Folgen von Nebeneffekten können Pro­ gramme optimiert werden, um alle Möglichkeiten, die Nebeneffekte bieten könnten, auszunutzen. Dies gilt insbesondere für Anwendungen mit zeit- oder raumkritischen Anforderungen. Mit anderen Worten kann, wenn ein Ne­ beneffekt völlig verstanden ist, dieser dazu verwendet werden, die Zahl der zur Durchführung einer Aufgabe erforderlichen Befehle oder die zur Durchführung einer Aufgabe erforderliche Zeit zu reduzieren.
Viele Digitalsignalverarbeitungs-(DSP = digital signal proces­ sing)- Anwendungen werden in einer Software realisiert, die auf einer programmierbaren DSP wie bei einem gewöhnlichen Prozessor läuft. DSP-An­ wendungen müssen jedoch mit Echtzeitzwangsbedingungen laufen, da sie wirkliche Signale, wie Sprache, Vision, Prozeßsteuerung etc., verarbei­ ten müssen. In dem Maße, wie die Anwendungen komplizierter werden, wach­ sen die Anforderungen an ihre Durchführung an. Eines der Hauptmerkmale programmierbarer DSPs ist ihre Pipeline. Die Pipeline ermöglicht es ei­ ner DSP, einen hohen Durchgang zu erreichen, wobei komplizierte (Mehr­ fach-) Operationen mit derselben Rate wie der Prozessortakt durchgeführt werden. Beispielsweise kann ein 50-MHz-DSP 40 Millionen MAC-(Multiplika­ tions- und Akkumulations-) Befehle pro Sekunde ausführen.
Eine der Anforderungen an den Programmierer besteht darin, ei­ nen Code zu schreiben, der in optimaler Weise die besonderen Eigenschaf­ ten der Pipeline ausnutzt, um Nutzen aus der maximal möglichen Lei­ stungsfähigkeit der DSP zu ziehen. Diese Aufgabe wird durch das Vorhan­ densein von Pipelinenebeneffekten verkompliziert. Eine Pipelineoperation ist für den Programmierer hinsichtlich des von ihm geschriebenen Codes nicht immer transparent. Ferner ist der DSP-Pipelinebetrieb wie die Pi­ peline für einen allgemeinen Prozessor für den DSP-Programmierer nicht sichtbar (d. h. es gibt keine Register, die Information über den Pipeli­ nebetrieb liefern). Nur seine Auswirkungen auf den Code sind zu erken­ nen. Außerdem ist die Pipeline für einen DSP wie bei allgemeinen Pipeli­ neverarbeitungsmaschinen eine sehr komplexe Vorrichtung und daher schwierig vollständig zu dokumentieren, da abhängig von einer speziellen Folge von Befehlen und Daten viele verschiedene Situationen auftreten können.
Aufgabe der Erfindung ist es, eine Pipelineverarbeitungsma­ schine nach dem Oberbegriff des Anspruchs 1 zu schaffen, welche dem Pro­ grammierer ein besseres Verständnis des Pipelinebetriebs und eine Opti­ mierung seines Codes für eine gegebene Anwendung ermöglicht.
Diese Aufgabe wird entsprechend dem kennzeichnenden Teil des Anspruchs 1 gelöst.
Zusätzlich zur Ausführungspipeline einer Pipelineverarbei­ tungsmaschine ist eine hierzu parallelgeschaltete zweite Pipeline, Adressenpipeline genannt, vorgesehen. Diese Adressenpipeline speichert die Adressen der gegenwärtig in der Pipeline vorhandenen Befehle. Die Adressenpipeline besitzt dieselbe Zahl von Stufen wie die Ausführungspi­ peline und wird gleichzeitig mit dieser weitergeschaltet. Jede Stufe der Adressenpipeline speichert die Speicheradresse des entsprechenden Be­ fehls in der Ausführungspipeline. Die Adressenpipeline ist lesbar, so daß ein Programmierer (oder Fehlersuche) ihre Werte auslesen kann.
Obwohl die Leistungsfähigkeit von besonderem Interesse für DSP- und Echtzeitprogrammierer ist, ist die Erfindung auch auf andere Pipelinevorrichtungen oder Prozessoren anwendbar. Außerdem kann eine Einsicht in die Pipeline die Prozessorkonstrukteure bei der Fehlersuche und der Verbesserung des Pipelinebetriebs unterstützen.
Weitere Ausgestaltungen der Erfindung sind der nachfolgenden Beschreibung und den Unteransprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand von in den dargestellten Abbildungen dargestellten Ausführungsbeispielen näher erläutert.
Fig. 1 zeigt ein Blockdiagramm einer dreistufigen Pipelinever­ arbeitungsmaschine mit einer ersten Ausführungsform einer Adressenpipe­ line.
Fig. 2 zeigt ein Blockdiagramm einer vierstufigen Pipelinever­ arbeitungsmaschine mit einer zweiten Ausführungsform einer Adressenpipe­ line.
Fig. 3 zeigt ein Blockdiagramm einer Pipelineverarbeitungsma­ schine mit einer dritten Ausführungsform einer Adressenpipeline.
Fig. 4 zeigt ein Blockdiagramm einer bekannten Pipelineverar­ beitungsmaschine.
Gemäß Fig. 1 ist eine dreistufige Ausführungspipeline 30 mit einer Adressenpipeline 40 dargestellt. Die Ausführungspipeline 30 liest Befehle von einem Datenbus 10. Zur selben Zeit liest die Adressenpipeli­ ne 40 die Speicheradressen der Befehle von einem Adressenbus 20.
Die Ausführungspipeline 30 enthält eine Befehlsstufe 50, eine Operandenstufe 60 und eine Ausführungsstufe 70. Die unterschiedlichen Stufen sind zwar mit speziellen Funktionen bezeichnet, sie hängen jedoch von der jeweiligen Pipelineverarbeitungsmaschine ab. In ähnlicher Weise variiert die spezielle Zahl von Stufen von einer Pipelineausführung zur anderen, und die Adressenpipeline 40 ist gemäß Fig. 2 zur Anpassung an jede beliebige Zahl von Pipelinestufen skalierbar.
Die Adressenpipeline 40 enthält ein der Befehlsstufe 50 der Ausführungspipeline 30 zugeordnetes Befehlsadressenregister 80, ein der Operandenstufe 60 der Ausführungspipeline 30 zugeordnetes Operanden­ adressenregister 90 und ein der Ausführungsstufe 70 der Ausführungspipe­ line 30 zugeordnetes Ausführungsadressenregister 100. Wenn Befehle die Ausführungspipeline 30 durchlaufen, rücken ihre entsprechenden Speiche­ radressen durch die zugehörigen Befehlsadressenregister 80, Operanden­ adressenregister 90 und Ausführungsadressenregister 100 der Adressenpi­ peline 40 vor. Dies bedeutet, daß ein aus dem Datenbus 10 gelesener Be­ fehl von der Befehlsstufe 50 zur Operandenstufe 60 und anschließend von der Operandenstufe 60 zur Ausführungsstufe 70 bei seiner Verarbeitung wandert. Zur selben Zeit wird die Speicheradresse des Befehls vom Adres­ senbus 20 in das Befehlsadressenregister 80 gelesen, und die Speicherad­ resse wird vom Befehlsadressenregister 80 zum Operandenadressenregister 90 weitergegeben, wenn der Befehl von der Befehlsstufe 50 zur Operanden­ stufe 60 fortschreitet. In ähnlicher Weise wird die Speicheradresse vom Operandenadressenregister 90 zum Ausführungsadressenregister 100 weiter­ gegeben, wenn der Befehl von der Operandenstufe 60 zur Ausführungsstufe 70 fortschreitet. Das Befehlsadressenregister 80, das Operandenadressen­ register 90 und das Ausführungsadressenregister 100 sind groß genug, um sich an die Größe der Systemspeicheradressierungsanforderungen anzupas­ sen. Als Beispiel ist eine 16-bit-große Adressenpipeline 40 dargestellt.
Ein von einer Pipelinesteuerung 110 erzeugtes Advance_Pipe-Si­ gnal 200 wird verwendet, um anzuzeigen, daß die Befehle zur nächsten Stufe der Ausführungspipeline 30 weitergegeben werden. Dieses Signal oder eines von gleichwertiger Funktion ist ein in allen Pipelineverar­ beitungsmaschinen vorhandenes generelles Signal. Es wird freigegeben, wenn die Ausführungspipeline 30 alle Operationen des gegenwärtigen Zy­ klus für die Befehlsstufe 50, die Operandenstufe 60 und die Ausführungs­ stufe 70 abgeschlossen hat und die Befehle weitergegeben werden können. Mit anderen Worten wird das Advance_Pipe-Signal 200 freigegeben, wenn der Befehl in der Ausführungsstufe 70 ausgeführt; der in der Operanden­ stufe 60 erforderliche Operand gelesen und der Befehl in der Befehlsstu­ fe 50 decodiert worden ist. Das Advance_Pipe-Signal 200 wird verwendet, um das Fortschreiten der Speicheradressen durch die Adressenpipeline 40 und das Fortschreiten der Befehle durch die Ausführungspipeline 30 zu triggern. Folglich wird das Advance_Pipe-Signal 200 an das Befehlsadres­ senregister 80, das Operandenadressenregister 90 und das Ausführungs­ adressenregister 100 sowie an die Befehlsstufe 50, die Operandenstufe 60 und die Ausführungsstufe 70 der Ausführungspipeline 30 gesandt. Auf die­ se Weise werden die Speicheradressen in dem Befehlsadressenregister 80, dem Operandenadressenregister 90 und dem Ausführungsadressenregister 100 der Adressenpipeline 40 mit den Befehlen in der jeweils zugehörigen Be­ fehlsstufe 50, der Operandenstufe 60 und der Ausführungsstufe 70 syn­ chron gehalten.
Ein weiterer Aspekt ist das Lesen von Speicheradressen, die zwischen den verschiedenen Adressenregistern übertragen werden. Ein Mul­ tiplexer 150 ermöglicht einen adressierbaren Zugriff auf die zwischen den Adressenregistern übertragenen Werte. Der Benutzer einer Fehlersuch­ vorrichtung kann auf die gewünschte Information über den Multiplexer 150 zugreifen, welcher den ausgewählten Adressenregisterwert auf einen Regi­ sterlesebus 210 überträgt. Zusätzlich zu den Speicheradressen wird auch der Zustand der Befehlsstufe 50, der Operandenstufe 60 und der Ausfüh­ rungsstufe 70 der Ausführungspipeline 30 über ein Befehlszustandsregi­ ster 130 zugänglich.
Ein Fehlersuchprogramm ermöglicht es dem Programmierer, sein Programm schrittweise zu durchlaufen oder einen Haltepunkt zu setzen. Der Programmierer kann einen Haltepunkt bei einem bestimmten Befehl set­ zen oder eine bestimmte Bedingung spezifizieren, die die Ausführung des Prozessors anhält (z. B. Abbruch, falls auf Adresse X zugegriffen wird). In jedem Fall möchte der Programmierer wissen, wann genau der Haltepunkt eingetreten ist (d. h. welcher Befehl den Haltepunkt aktuell getriggert hat).
Wenn ein Haltepunkt auf einen bestimmten Befehl gesetzt wird, bricht der Prozessor ab, wenn dieser Befehl die Ausführungsphase er­ reicht hat. Wenn jedoch eine Bedingung gesetzt worden ist, bricht der Prozessor ab, wenn diese Bedingung erfüllt ist. Dies muß nicht während der Ausführungsphase geschehen. Daher ist ein zusätzliches Register er­ forderlich, welches die Speicheradresse des Befehls speichert, der aktu­ ell das Anhalten des Prozessors verursacht hat. Dieses Register wird PCABP- ("program counter address breakpoint" = Programmzähleradressen­ haltepunkt)-Register 140 genannt.
Bei Erreichen eines Haltepunkts signalisiert die Pipeline­ steuerung 110 einem Multiplexer 120 über ein Address_select-Signal 190, daß die Stufe, die das Erreichen des Haltepunkts verursacht, ausgewählt werden soll. Wenn sich der Befehl, der das Anhalten des Prozessors her­ vorgerufen hat, gegenwärtig in der Ausführungsstufe 70 befindet, zwi­ schenspeichert das PCABP-Register 140 den Inhalt des Ausführungsregi­ sters 100. In ähnlicher Weise zwischenspeichert das PCABP-Register 140 den Inhalt des Operandenadressenregisters 90, wenn sich der Befehl, der das Anhalten des Prozessors verursacht hat, gegenwärtig in der Operan­ denstufe 60 befindet. Wenn sich der Befehl, der das Anhalten des Prozes­ sors verursacht hat, gegenwärtig in der Befehlsstufe 50 befindet, spei­ chert das PCABP-Register 140 den Inhalt des Befehlsadressenregisters 80 zwischen.
Zusätzlich zur Speicheradresse und zur gegenwärtigen Stufe des Befehls, der das Anhalten des Prozessors verursacht hat, möchte der Pro­ grammierer wissen, ob jede der Phasen der Ausführungspipeline 30 vor dem Anhalten des Prozessors erfolgreich abgeschlossen war. Dies wird durch eine Reihe von Zustandssignalen 160, 170 und 180, eines pro Pipelinestu­ fe, erleichtert, welche durch die Pipelinesteuerung 110 erzeugt werden. Diese Zustandssignale 160, 170 und 180 zeigen an, ob die zugehörige Be­ fehlsstufe 50, Operandenstufe 60 oder Ausführungsstufe 70 in der Ausfüh­ rungspipeline 30 die Ausführung abgeschlossen hat. Der Status der Zu­ standssignale 160, 170 und 180 wird in dem Befehlszustandsregister 130 gespeichert.
Gemäß der in Fig. 1 dargestellten Ausführungsform speichert das Befehlszustandsregister 130 drei Bits. Jedes Bit entspricht einem Zustandssignal 160, 170, 180, welches anzeigt, ob die entsprechende Pha­ se der Ausführungspipeline 30 ausgeführt worden ist. Ein ExecEx-Signal als Zustandssignal 180 zeigt an, ob der gegenwärtig in der Ausführungs­ stufe 70 befindliche Befehl ausgeführt worden ist. Ein OperEx-Signal als Zustandssignal 170 zeigt ob, ob der in der Operandenstufe 60 spezifi­ zierte Operand vorabgerufen worden ist, und ein InstrEx-Signal als Zu­ standssignal 160 zeigt an, ob der in der Befehlsstufe 50 befindliche Be­ fehl decodiert worden ist.
Beispielsweise sei angenommen, daß ein bedingter Abbruch auf eine Leseoperation gesetzt wird, die durch einen gegenwärtig in der Ope­ randenstufe 60 befindlichen Befehl getriggert worden ist. Es sei ferner angenommen, daß innerhalb desselben Pipelinezyklus (beispielsweise bevor das nächste Advance_Pipe-Signal 200 freigegeben wird) der gegenwärtig in der Ausführungsstufe 70 befindliche Befehl nicht ausgeführt worden ist, da es sich um einen bedingten Befehl handelt und die Bedingung nicht er­ füllt worden ist. Schließlich sei angenommen, daß der gegenwärtig in der Befehlsstufe 50 befindliche Befehl nicht decodiert worden ist, da der vorherige Befehl ein Verzweigungsbefehl ist und die Ausführungspipeline 30 ausgeräumt werden soll. In diesem Falle würde das Befehlszustandsre­ gister 130 den binären Wert "010" erhalten, welcher den Programmierer (oder Fehlersucher) unmittelbar anzeigt, daß der in der Ausführungsstufe 70 befindliche Befehl nicht ausgeführt worden ist, der in der Operanden­ stufe 60 befindliche Befehl den Operanden vorabgerufen hat und der in der Befehlsstufe 50 befindliche Befehl nicht decodiert worden ist.
Gemäß Fig. 2 ist eine Adressenpipeline 240 so vergrößert, daß sie an eine vierstufige Ausführungspipeline 230 angepaßt ist. Die Adres­ senpipeline 240 kann in einfacher Weise auf jede beliebige Zahl von Pi­ pelinestufen skaliert werden. Eine Vorabrufstufe 245 der Ausführungspi­ peline 230 besitzt ein zugehöriges Vorabrufadressenregister 275 (und ei­ nen zugehörigen Zugriffsbus) in der Adressenpipeline 240, und die Vor­ richtung arbeitet auf dieselbe Weise wie die dreistufige Vorrichtung. Ein weiterer signifikanter Unterschied gegenüber der dreistufigen Pipe­ linevorrichtung aus Fig. 1 besteht darin, daß ein zusätzliches FetchEx-Signal als Zustandssignal 355 hinzugefügt worden ist, um ein Befehlszu­ standsregister 330 zur Handhabung der zusätzlichen Vorabrufstufe 245 zu versorgen. Das FetchEx-Signal als Zustandssignal 355 zeigt einfach an, ob ein neuer Befehl vorabgerufen worden ist. Ansonsten besteht kein Un­ terschied zwischen einer Anwendung auf eine dreistufige und einer Anwen­ dung auf eine vierstufige Pipeline. In ähnlicher Weise kann eine Skalie­ rung auf jede beliebige Stufe durch einfaches Hinzufügen von Adressenre­ gistern, Zustandssignalen und der zugehörigen Unterstützungshardware er­ folgen.
Gemäß Fig. 3 ist eine Adressenpipeline 500 in einer weiteren Ausführungsform dargestellt. Hierbei sind die separaten Adressenregister durch ein adressierbares FIFO-Schieberegister ersetzt. Diese Ausfüh­ rungsform arbeitet ähnlich wie die vorherigen Ausführungsformen. Der Hauptunterschied besteht in der Hardware-Realisierung.

Claims (8)

1. Pipelineverarbeitungsmaschine mit einer Ausführungspipeline (30, 230) mit einer Vielzahl von Stufen (50, 60, 70, 245, 250, 260, 270) und einer Pipelinesteuerung (110, 310), dadurch gekennzeichnet, daß eine Adressenpipeline (40, 240) zum sequentiellen und synchronen Abspeichern von Befehlsidentifikatoren vorgesehen ist, die parallel zur Ausführungs­ pipeline (30, 230) geschaltet ist und zu jeder der Vielzahl von Stufen (50, 60, 70, 245, 250, 260, 270) der Ausführungspipeline (30, 230) min­ destens ein individuell zugreifbares Speicherelement umfaßt.
2. Pipelineverarbeitungsmaschine nach Anspruch 1, dadurch gekennzeichnet, daß an die Pipelinesteuerung (110, 310) ein Befehlszustandsregister (130, 330) zur Speicherung von Zustandssignalen (160, 170, 180, 355, 360, 370, 380), welche einen Ausführungszustand jeder der Vielzahl von Stufen (50, 60, 70, 245, 250, 260, 270) der Ausführungspipeline (30, 230) bezeichnen, gekoppelt ist.
3. Pipelineverarbeitungsmaschine nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß an die Speicherelemente der Adressenpipeline (40, 240) ein Adressenhaltepunktregister (140, 340) zum Speichern der Befehlsidentifikatoren eines Befehls, welcher bei Ausführung eine vorbestimmte Bedingung erfüllt, gekoppelt ist.
4. Pipelineverarbeitungsmaschine nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß Einrichtungen zum Zugriff auf die Befehlsidentifikatoren in der Adressenpipeline (40, 240) vorgesehen sind.
5. Pipelineverarbeitungsmaschine nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Adressenpipeline (40, 240) eine Sequenz von Registern (80, 90, 100, 275, 280, 290, 300) umfaßt.
6. Pipelineverarbeitungsmaschine nach Anspruch 4 oder 5, dadurch gekennzeichnet, daß die Einrichtungen zum Zugriff auf die Befehlsidentifikatoren einen Multiplexer (120, 320) zum Auswählen aus der Sequenz von Registern (80, 90, 100, 275, 280, 290, 300) umfassen.
7. Pipelineverarbeitungsmaschine nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die Adressenpipeline (40, 240) ein FIFO-Register (500) umfaßt.
8. Pipelineverarbeitungsmaschine nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Adressenpipeline (40, 240) eine Sequenz von Speicherplätzen und für jede der Vielzahl von Stufen (50, 60, 70, 245, 250, 260, 270) mindestens einen zugehörigen Speicherplatz umfaßt, wobei jede der Sequenz von Speicherplätzen individuell adressierbar sowie zum Speichern eines Werts und zur Verschiebung des Werts zum nächsten Speicherplatz in der Sequenz von Speicherplätzen bei Empfang eines Pipeline-Weiterschaltungssignals ausgelegt ist.
DE19824289A 1997-07-01 1998-05-29 Pipelineverarbeitungsmaschine Expired - Fee Related DE19824289C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/886,520 US5996059A (en) 1997-07-01 1997-07-01 System for monitoring an execution pipeline utilizing an address pipeline in parallel with the execution pipeline

Publications (2)

Publication Number Publication Date
DE19824289A1 true DE19824289A1 (de) 1999-01-07
DE19824289C2 DE19824289C2 (de) 2000-05-25

Family

ID=25389184

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19824289A Expired - Fee Related DE19824289C2 (de) 1997-07-01 1998-05-29 Pipelineverarbeitungsmaschine

Country Status (3)

Country Link
US (1) US5996059A (de)
KR (1) KR100303712B1 (de)
DE (1) DE19824289C2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6286062B1 (en) 1997-07-01 2001-09-04 Micron Technology, Inc. Pipelined packet-oriented memory system having a unidirectional command and address bus and a bidirectional data bus
US6597394B1 (en) * 1997-11-16 2003-07-22 Pictos Technologies, Inc. Programmable image transform processor for digital image processing
US6449736B1 (en) * 1999-10-20 2002-09-10 Texas Instruments Incorporated Method and apparatus for providing chained breakpoints in a microprocessor
US6918028B1 (en) * 2000-03-28 2005-07-12 Analog Devices, Inc. Pipelined processor including a loosely coupled side pipe
US6708326B1 (en) * 2000-11-10 2004-03-16 International Business Machines Corporation Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
US7281140B2 (en) * 2001-12-28 2007-10-09 Intel Corporation Digital throttle for multiple operating points
US20040136241A1 (en) * 2002-10-31 2004-07-15 Lockheed Martin Corporation Pipeline accelerator for improved computing architecture and related system and method
US6954623B2 (en) 2003-03-18 2005-10-11 Skyworks Solutions, Inc. Load variation tolerant radio frequency (RF) amplifier
US7383426B2 (en) * 2003-06-11 2008-06-03 University Of Washington Processor employing loadable configuration parameters to reduce or eliminate setup and pipeline delays in a pipeline system
US20060085781A1 (en) 2004-10-01 2006-04-20 Lockheed Martin Corporation Library for computer-based tool and related system and method
US7769987B2 (en) * 2007-06-27 2010-08-03 International Business Machines Corporation Single hot forward interconnect scheme for delayed execution pipelines
US7984272B2 (en) * 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
KR101003150B1 (ko) * 2009-05-14 2010-12-21 주식회사 하이닉스반도체 어드레스 시프트 회로 및 방법
US10686539B2 (en) * 2015-05-29 2020-06-16 Avago Technologies International Sales Pte. Limited Flexible debug observation point insertion in pipeline designs

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682493A (en) * 1993-10-21 1997-10-28 Sun Microsystems, Inc. Scoreboard table for a counterflow pipeline processor with instruction packages and result packages
DE69430352T2 (de) * 1993-10-21 2003-01-30 Sun Microsystems Inc., Mountain View Gegenflusspipeline
DE69415126T2 (de) * 1993-10-21 1999-07-08 Sun Microsystems Inc., Mountain View, Calif. Gegenflusspipelineprozessor
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
SG75756A1 (en) * 1994-02-28 2000-10-24 Intel Corp Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
US5704054A (en) * 1995-05-09 1997-12-30 Yale University Counterflow pipeline processor architecture for semi-custom application specific IC's

Also Published As

Publication number Publication date
KR19990013383A (ko) 1999-02-25
KR100303712B1 (ko) 2001-09-24
US5996059A (en) 1999-11-30
DE19824289C2 (de) 2000-05-25

Similar Documents

Publication Publication Date Title
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE19824289C2 (de) Pipelineverarbeitungsmaschine
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE3884101T2 (de) Abholung von Operanden in Unordnung.
DE3151745C2 (de)
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE69322683T2 (de) Verfahren und Vorrichtung zur Durchführung eines pseudo-LRU Cachespeicherersetzungsschemas mit einer Verriegelungsfunktion
DE69600995T2 (de) Fehlerbearbeitung in spekulativen befehlen
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE3851746T2 (de) Sprungvorhersage.
DE69228360T2 (de) Registerlesekontrolle
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69027932T2 (de) Cpu-pipeline mit registerfile-bypass durch adressvergleich bei aktualisierungen/zugriffen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
R082 Change of representative
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20141202