DE19824289A1 - Pipelineverarbeitungsmaschine - Google Patents
PipelineverarbeitungsmaschineInfo
- 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
Links
- 230000001360 synchronised effect Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 8
- 238000000034 method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013024 troubleshooting Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/006—Identification
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.
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)
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)
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 |
-
1997
- 1997-07-01 US US08/886,520 patent/US5996059A/en not_active Expired - Lifetime
-
1998
- 1998-05-29 DE DE19824289A patent/DE19824289C2/de not_active Expired - Fee Related
- 1998-05-30 KR KR1019980020008A patent/KR100303712B1/ko not_active IP Right Cessation
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 |