-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf digitale Mikroprozessoren
und insbesondere auf die Überwachung
des Betriebs von digitalen Mikroprozessoren.
-
HINTERGRUND
DER ERFINDUNG
-
Mikroprozessoren
sind Mehrzweckprozessoren, die hohe Befehlsdurchsätze erfordern,
um die darauf ablaufende Software auszuführen, wobei sie, abhängig von
den beteiligten speziellen Software-Anwendungen, einen weiten Bereich
von Verarbeitungsanforderungen besitzen können. Ein Unterbrechungs-Reaktionsmechanismus
in einem Mikroprozessor enthält
typischerweise eine Unterbrechungsvektortabelle, um den Ort der
Unterbrechungs-Dienstprogramme zu identifizieren.
-
Es
sind viele verschiedene Typen von Prozessoren bekannt, von denen
die Mikroprozessoren nur ein Beispiel sind. Digitale Signalprozessoren
(DSPs) werden z. B. weit und breit verwendet, insbesondere für spezifische
Anwendungen, wie z. B. mobile Verarbeitungsanwendungen. Die DSPs
sind typischerweise konfiguriert, um die Leistung der betroffenen
Anwendungen zu optimieren, wobei sie spezialisiertere Ausführungseinheiten
und Befehlssätze
verwenden, um dies zu erreichen. Insbesondere, aber nicht ausschließlich, ist
es bei Anwendungen, wie z. B. Mobiltelekommunikationsanwendungen,
erwünscht,
eine ständig
zunehmende DSP-Leistung bereitzustellen, während die Leistungsaufnahme
so niedrig wie möglich
gehalten wird.
-
In
der Entwicklung der digitalen Systeme, die derartige Prozessoren
enthalten, ist die Verfolgung bekannt, sodass der Systembetrieb überwacht
werden kann. Eine Anordnung, um dies zu erreichen, ist im US-Patent
5.724.505 beschrieben, in dem Befehle und Adressen für Diskontinuitäten in einem
FIFO-Puffer gespeichert sind. Die Befehls- und Adressendaten werden
codiert, um FIFO-Raum zu sparen.
-
Die
vorliegende Erfindung schafft Verfahren und Vorrichtungen, wie sie
in den Ansprüchen
dargelegt sind.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
Besondere
Ausführungsformen
gemäß der Erfindung
werden nun lediglich beispielhaft und unter Bezugnahme auf die beigefügte Zeichnung
beschrieben, in der gleiche Bezugszeichen verwendet werden, um gleiche
Teile zu bezeichnen, und in der sich die Figuren auf den Prozessor
nach 1 beziehen, wenn es nicht anders angegeben ist,
und in der:
-
1 ein
schematischer Blockschaltplan eines digitalen Systems ist, das einen
Mikroprozessor gemäß einer
Ausführungsform
der Erfindung enthält;
-
2 eine
schematische Darstellung des Prozessorkerns nach 1 ist;
-
3 ein
ausführlicherer
schematischer Blockschaltplan der verschiedenen Ausführungseinheiten des
Prozessorkerns ist;
-
4 eine
schematische Darstellung einer Befehlspufferwarteschlange und eines
Befehlsdecodierers des Prozessors ist;
-
5 eine
schematische Darstellung des Prozessorkerns ist, um die Funktionsweise
der Pipeline des Prozessors zu erklären;
-
6 ein
Blockschaltplan des Prozessors ist, der eine mit dem Speicher verbundene
Speichermanagementeinheit veranschaulicht;
-
7 die
vereinheitlichte Struktur der Programm- und Daten-Speicherräume des
Prozessors zeigt;
-
8 ein
Blockschaltplan ist, der ein digitales System mit dem Prozessor
nach 1 in Kombination mit einem Verfolgungs-FIFO gemäß den Aspekten
der vorliegenden Erfindung veranschaulicht;
-
9 ein
Blockschaltplan des Verfolgungs-FIFO nach 8 ist;
-
10 ein
Blockschaltplan der externen Speicherschnittstelle nach 8 ist;
-
11 ein
Taktdiagramm ist, das die Taktung für die Verfolgungssignale veranschaulicht,
die von der externen Speicherschnittstelle nach 9 ausgegeben
werden;
-
12 ein
Taktdiagramm ist, das die Speicherzyklentaktung veranschaulicht,
wobei die Zwischenspeicherung in einem Cache und die Verfolgung
gesperrt sind;
-
13 ein
Taktdiagramm ist, das die Speicherzyklentaktung veranschaulicht,
wobei die Zwischenspeicherung in einem Cache gesperrt ist und die
Verfolgung freigegeben ist;
-
14 ein
Blockschaltplan ist, der das Verschmelzen der Steuersignale mit
den Einstellungen des Verfolgungssteuerregisters veranschaulicht;
-
15 ein
Blockschaltplan ist, der veranschaulicht, wie einzelne Register
im Verfolgungs-FIFO adressiert werden, während Verfolgungsinformationen
geschrieben werden;
-
16 ein
Blockschaltplan ist, der veranschaulicht, wie die Verfolgungsregister
für den
R-Bus-Lesezugriff adressiert werden;
-
17 eine
konzeptionelle Ansicht einer Diskontinuität ist, die durch den FIFO nach 9 verfolgt worden
ist;
-
18 die
Bitzuordnung eines Eintrags eines "Diskontinuitätsereignisses" veranschaulicht,
der im Verfolgungs-FIFO gespeichert ist;
-
19 die
Bitzuordnung des Eintrags eines "letzten
PC-Ereignisses" veranschaulicht,
der im Verfolgungs-FIFO gespeichert ist;
-
20 eine
konzeptionelle Ansicht der Bearbeitung eines Blockwiederholungsbefehls
im Verfolgungs-FIFO nach 9 ist;
-
21 eine
konzeptionelle Ansicht der Bearbeitung eines verschachtelten Blockwiederholungsbefehls
im Verfolgungs-FIFO nach 9 ist;
-
22 eine
konzeptionelle Ansicht der Bearbeitung eines Einzelwiederholungsbefehls
im Verfolgungs-FIFO nach 9 ist;
-
23 ein
Blockschaltplan ist, der eine alternative Ausführungsform eines digitalen
Systems mit dem Prozessor nach 1 gemäß den Aspekten
der vorliegenden Erfindung veranschaulicht;
-
24 eine
schematische Darstellung einer integrierten Schaltung ist, die den
Prozessor enthält;
und
-
25 eine
schematische Darstellung einer Telekommunikationsvorrichtung ist,
die den Prozessor nach 1 enthält.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Obwohl
die Erfindung besondere Anwendung in digitalen Signalprozessoren
(DSPs) findet, die z. B. in einer anwendungsspezifischen integrierten
Schaltung (ASIC) implementiert sind, findet sie außerdem Anwendung
in anderen Formen von Prozessoren.
-
Die
Grundarchitektur eines Beispiels eines Prozessors gemäß der Erfindung
wird nun beschrieben. Der Prozessor 100 ist ein programmierbarer
Festkomma-DSP-Kern
mit variabler Befehlslänge
(8 Bits bis 48 Bits), der sowohl eine hohe Codedichte als auch eine
leichte Programmierung bietet. Die Architektur und der Befehlssatz
sind für
eine niedrigere Leistungsaufnahme und die Ausführung mit hohem Wirkungsgrad
sowohl von DSP-Algorithmen als auch von reinen Steueraufgaben, wie
z. B. für
schnurlose Telephone, optimiert. Der Prozessor 100 enthält Emulations-
und Codeaustest-Einrichtungen.
-
1 ist
ein schematischer Überblick über ein
digitales System 10 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Das digitale System enthält einen
Prozessor 100 und eine Prozessor-Hauptplatine 20. In
einem speziellen Bei spiel der Erfindung ist das digitale System
ein System 10 eines digitalen Signalprozessors, das in
einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert
ist. Im Interesse der Klarheit zeigt 1 nur diejenigen
Abschnitte des Mikroprozessors 100, die für ein Verständnis einer
Ausfihrungsform der vorliegenden Erfindung relevant sind. Die Einzelheiten
der allgemeinen Konstruktion für
DSPs sind wohlbekannt, wobei sie leicht anderswo gefunden werden
können.
US-Patent 5.072.418, erteilt an Frederick Boutaud u. a., beschreibt
z. B. einen DSP ausführlich.
US-Patent 5.329.471, erteilt an Gary Swoboda u. a., beschreibt ausführlich,
wie ein DSP zu prüfen
und zu emulieren ist. Einzelheiten der Abschnitte des Mikroprozessors 100,
die für
eine Ausfihrungsform der vorliegenden Erfindung relevant sind, werden
im Folgenden ausreichend ausführlich
erklärt,
um einem Durchschnittsfachmann auf dem Gebiet der Mikroprozessoren
zu ermöglichen,
die Erfindung auszuführen
und zu verwenden.
-
Wie
in 1 gezeigt ist, bildet der Prozessor 100 eine
Zentraleinheit (CPU) mit einem Prozessorkern 102 und einer
Speicherschnittstelleneinheit 104, um den Prozessorkern 102 mit
den Speichereinheiten außerhalb
des Prozessorkerns 102 zu verbinden.
-
Die
Prozessor-Hauptplatine 20 umfasst einen Hauptplatinen-Bus 22,
mit dem die Speichermanagementeinheit 104 des Prozessors
verbunden ist. Mit dem Hauptplatinen-Bus 22 sind außerdem ein
Befehlsspeicher 24, die Peripherievorrichtungen 26 und
eine externe Schnittstelle 28 verbunden.
-
Es
ist klar, dass in anderen Beispielen die Erfindung unter Verwendung
anderer Konfigurationen und/oder anderer Technologien implementiert
sein könnte.
Der Prozessor 100 könnte
z. B. eine erste integrierte Schaltung bilden, wobei die Prozessor-Hauptplatine 20 davon
separat ist. Der Prozessor 100 könnte z. B. ein DSP sein, der
von einer Hauptplatine 20 separat ist und auf einer Hauptplatine 20 angebracht
ist, die einen Hauptplatinen-Bus 22, die Peripherieschnittstellen
und die externen Schnittstellen unterstützt. Der Prozessor 100 könnte z.
B. anstatt ein DSP ein Mikroprozessor sein, wobei er in anderen
Technologien als der ASIC-Technologie
implementiert sein könnte.
Der Prozessor oder ein Prozessor, der den Prozessor enthält, könnte in
einer oder mehreren integrierten Schaltungen implementiert sein.
-
2 veranschaulicht
die Grundstruktur einer Ausführungsform
des Prozessorkerns 102. Wie veranschaulicht ist, enthält diese
Ausführungsform
des Prozessorkerns 102 vier Elemente, nämlich eine Befehlspuffereinheit
(I-Einheit) 106 und drei Ausführungseinheiten. Die Ausführungseinheiten
sind eine Programmablaufeinheit (P-Einheit) 108, eine Adressendaten-Ablaufeinheit
(A-Einheit) 110 und eine Datenrecheneinheit (D-Einheit) 112,
um die von der Befehlspuffereinheit (I-Einheit) 106 decodierten Befehle
auszuführen
und um den Programmablauf zu steuern und zu überwachen.
-
3 veranschaulicht
die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 des
Prozessorkerns 102 ausführlicher,
wobei sie die Busstruktur zeigt, die die verschiedenen Elemente
des Prozessorkerns 102 verbindet. Die P-Einheit 108 enthält z. B.
die Schleifen-Steuerschaltungsanordnung, die GoTo/Verzweigungs-Steuerschaltungsanordnung
und verschiedene Register, um den Programmablauf zu steuern und
zu überwachen,
wie z. B. die Wiederholungszählerregister
und die Unterbrechungsmaskierungs-, Merker- oder Vektor-Register.
Die P-Einheit 108 ist an die universellen Datenschreibbusse
(EB, FB) 130, 132, die universellen Datenlesebusse
(CB, DB) 134, 136 und einen Koeffizientenprogrammbus
(BB) 138 gekoppelt. Außerdem ist
die P-Einheit 108 über
verschiedene Busse, die als CSR, ACB und RGD bezeichnet sind, an
die Untereinheiten innerhalb der A-Einheit 110 und der
D-Einheit 112 gekoppelt.
-
Wie
in 3 veranschaulicht ist, enthält in der vorliegenden Ausführungsform
die A-Einheit 110 eine Registerdatei 30, eine
Datenadressenerzeugungs-Untereinheit (DAGEN) 32 und eine
Arithmetik- und Logikeinheit (ALU) 34. Die Registerdatei 30 der
A-Einheit enthält
verschiedene Register, unter denen sich die 16-Bit-Zeigerregister
(AR0, ..., AR7) und die Datenregister (DR0, ..., DR3) befinden,
die außerdem
sowohl für den
Datenfluss als auch die Adressenerzeugung verwendet werden können. Außerdem enthält die Registerdatei
16-Bit-Umlaufspeicherregister und 7-Bit-Datenseitenregister. Sowohl
die universellen Busse (EB, FB, CB, DB) 130, 132, 134, 136 als
auch ein Koeffizientendatenbus 140 und ein Koeffizientenadressenbus 142 sind
an die Registerdatei 30 der A-Einheit gekoppelt. Die Registerdatei 30 der
A-Einheit ist durch die einseitig gerichteten Busse 144 bzw. 146,
die in entgegengesetzten Richtungen arbeiten, an die DAGEN-Einheit 32 der A-Einheit
gekoppelt. Die DAGEN-Einheit 32 enthält 16-Bit-X/Y-Register und Koeffizienten- und
Stapelzeiger-Register, z. B. zum Steuern und Überwachen der Adressenerzeugung
innerhalb des Prozessors 100.
-
Die
A-Einheit 110 umfasst außerdem die ALU 34,
die sowohl eine Schieberfunktion als auch die Funktionen enthält, die
typischerweise einer ALU zugeordnet sind, wie z. B. Addition, Subtraktion
und die logischen UND-, ODER- und XOR-Operatoren. Die ALU 34 ist
außerdem
an die universellen Busse (EB, DB) 130, 136 und
an einen Befehlskonstanten-Datenbus (KDB) 140 gekoppelt.
Die ALU der A-Einheit ist durch einen PDA-Bus an die P-Einheit 108 gekoppelt,
um die Registerinhalte von der Registerdatei der P-Einheit 108 zu empfangen.
Die ALU 34 ist außerdem
durch die Busse RGA und RGB, um die Inhalte der Adressen- und Datenregister
zu empfangen, und durch einen Bus RGD, um die Adressen- und Datenregister
in der Registerdatei 30 weiterzuleiten, an die Registerdatei 30 der
A-Einheit gekoppelt.
-
Gemäß der veranschaulichten
Ausführungsform
der Erfindung enthält
die D-Einheit 112 eine
Registerdatei 36 der D-Einheit, eine ALU 38 der
D-Einheit, eine Verschiebeeinrichtung 40 der D-Einheit
und zwei Multiplikations- und Akkumulationseinheiten (MAC1, MAC2) 42 und 44.
Die Registerdatei 36 der D-Einheit, die ALU 38 der
D-Einheit und die Verschiebeeinrichtung 40 der D-Einheit
sind an die Busse (EB, FB, CB, DB und KDB) 130, 132, 134, 136 und 140 gekoppelt,
während
die MAC-Einheiten 42 und 44 an die Busse (CB,
DB, KDB) 134, 136, 140 und den Datenlesebus
(BB) 144 gekoppelt sind. Die Registerdatei 36 der
D-Einheit enthält 40-Bit-Akkumulatoren
(AC0, ..., AC3) und ein 16-Bit-Übergangsregister.
Die D-Einheit 112 kann außer den 40-Bit-Akkumulatoren
außerdem
den 16-Bit-Zeiger und die Datenregister in der A-Einheit 110 als
die Quell- oder Zielregister verwenden. Die Registerdatei 36 der
D-Einheit empfängt
Daten über
die Akkumulator-Schreibbusse (ACW0, ACW1) 146, 148 von
der ALU 38 der D-Einheit
und den MACs 1 u. 2 42, 44 und über den
Akkumulator-Schreibbus (ACW1) 148 von der Verschiebeeinrichtung 40 der
D-Einheit. Die Daten werden aus den Akkumulatoren der Registerdatei
der D-Einheit über
die Akkumulator-Lesebusse
(ACR0, ACR1) 150, 152 in die ALU 38 der
D-Einheit, die Verschiebeeinrichtung 40 der D-Einheit und
die MACs 1 u. 2 42, 44 gelesen. Die ALU 38 der
D-Einheit und die Verschiebeeinrichtung 40 der D-Einheit
sind außerdem über verschiedene
Busse, die als EFC, DRB, DR2 und ACB bezeichnet sind, an die Untereinheiten
der A-Einheit 108 gekoppelt.
-
In 4 ist
eine Befehlspuffereinheit 106 gemäß der vorliegenden Ausführungsform
veranschaulicht, die eine 32-Wort-Befehlspuffer-Warteschlange (IBQ) 502 umfasst.
Die IBQ 502 umfasst 32 × 16-Bit-Register 504,
die logisch in 8-Bit-Bytes 506 unterteilt
sind. Die Befehle kommen über
den 32-Bit-Programmbus (PB) 122 an der IBQ 502 an.
Die Befehle werden in einem 32-Bit-Zyklus in die Stelle geholt,
auf die durch den lokalen Schreibprogrammzähler (LWPC) 532 gezeigt
wird. Der LWPC 532 ist in einem Register enthalten, das
sich in der P-Einheit 108 befindet. Die P-Einheit 108 enthält außerdem das
Register des lokalen Leseprogrammzählers (LRPC) 536 und
die Register des Schreibprogrammzählers (WPC) 530 und
des Leseprogrammzählers (RPC) 534.
Der LRPC 536 zeigt auf die Stelle in der IBQ 502 des
nächsten
Befehls oder der nächsten
Befehle, der/die in den/die Befehlsdecodierer 512 und 514 zu
laden sind. Das heißt,
der LRPC 534 zeigt auf die Stelle in der IBQ 502 des
Befehls, der gegenwärtig
zu den Decodierern 512, 514 abgefertigt wird.
Der WPC zeigt auf die Adresse im Programmspeicher des Beginns der
nächsten
4 Bytes des Befehlscodes für
die Pipeline. Für jeden
Holvorgang in die IBQ werden die nächsten 4 Bytes vom Programmspeicher
ungeachtet der Befehlsgrenzen geholt. Der RPC 534 zeigt
auf die Adresse im Programmspeicher des Befehls, der gegenwärtig zu dem/den
Decodierer/n 512/514 abgefertigt wird.
-
In
dieser Ausführungsform
werden die Befehle in einem 48-Bit-Wort gebildet und werden über die
Multiplexer 520 und 521 über einen 48-Bit-Bus 516 in
die Befehlsdecodierer 512, 514 geladen. Es wird
für einen Durchschnittsfachmann
auf dem Gebiet offensichtlich sein, dass die Befehle in Wörtern gebildet
werden können,
die nicht 48 Bits umfassen, und dass die vorliegende Erfindung nicht
auf die oben beschriebene spezifische Ausführungsform eingeschränkt ist.
-
Für die gegenwärtig bevorzugte
48-Bit-Wortgröße kann
der Bus 516 ein Maximum von 2 Befehlen, einen pro Decodierer,
während
irgendeines Befehlszyklus für
die parallele Ausführung
laden. Die Kombination der Befehle kann in irgendeiner Kombination
der Formate, 8, 16, 24, 32, 40 und 48 Bits erfolgen, die über den 48-Bit-Bus
passen. Der Decodierer 1, 512, wird gegenüber dem
Decodierer 2, 514 bevorzugt geladen, falls nur ein
Befehl während
eines Zyklus geladen werden kann. Die entsprechenden Befehle werden
dann zu den entsprechenden Funktionseinheiten weitergeleitet, um
sie auszuführen
und um auf die Daten zuzugreifen, für die der Befehl oder die Operation
auszuführen
ist. Bevor die Befehle zu den Befehlsdecodierern weitergeleitet werden,
werden sie auf die Bytegrenzen ausgerichtet. Die Ausrichtung wird
basierend auf dem für
den vorhergehenden Befehl während
seiner Decodierung abgeleiteten Format ausgeführt. Die der Ausrichtung der
Befehle auf die Bytegrenzen zugeordnete Multiplexierung wird in
den Multiplexierern 520 und 521 ausgeführt.
-
Zwei
Befehle können
parallel angeordnet werden, falls einer der zwei Befehle mit einem
Parallelfreigabebit versehen ist. Die Hardware-Unterstützung für einen
derartigen Typ der Parallelität
wird als der Parallelfreigabemechanismus bezeichnet. Gleichermaßen können zwei
Befehle parallel angeordnet werden, falls beide Befehle einzelne
Datenspeicherzugriffe (Smem oder dbl(lmem)) in der indirekten Betriebsart
ausführen. Die
Hardware-Unterstützung
für einen
derartigen Typ der Parallelität
wird als der weiche duale Mechanismus bezeichnet.
-
Der
Prozessorkern 102 führt
die Befehle durch eine 7-stufige Pipeline aus, wobei deren jeweiligen
Stufen nun unter Bezugnahme auf die Tabelle 1 und auf 5 beschrieben
werden. Die Prozessorbefehle werden ungeachtet dessen, wo die Ausführung stattfindet
(A-Einheit oder D-Einheit), durch eine siebenstufige Pipeline ausgeführt. Um
die Größe des Programmcodes
zu verringern, fertigt ein C-Kompilierer gemäß einem Aspekt der vorliegenden
Erfindung so viele Befehle wie möglich
für die
Ausführung
in der A-Einheit ab, sodass die D-Einheit ausgeschaltet werden kann,
um mit der Leistung sparsam umzugehen. Dies erfordert, dass die A-Einheit
die an den Speicheroperanden ausgeführten Grundoperationen unterstützt.
-
-
Tabelle
1: Die Funktionsweise der Prozessorpipeline für einen Einzelzyklusbefehl
ohne Speicherwartezustände
-
Die
erste Stufe der Pipeline ist eine VORAUSLESE-Stufe (P0) 202,
wobei während
dieser Stufe eine nächste
Programmspeicherstelle adressiert wird, indem eine Adresse auf dem
Adressenbus (PAB) 118 der Speicherschnittstelle 104 aktiviert
wird.
-
In
der nächsten
Stufe, der HOL-Stufe (P1) 204, wird der Programmspeicher
gelesen, wobei die I-Einheit 106 von der Speicherschnittstelleneinheit 104 über den
PB-Bus 122 gefüllt
wird.
-
Die
VORAUSLESE- und HOL-Stufen sind vom Rest der Pipelinestufen separat,
weil die Pipeline während
der VORAUSLESE- und HOL-Stufen unterbro chen werden kann, um den
sequentiellen Programmablauf zu unterbrechen und auf andere Befehle
im Programmspeicher zu zeigen, z. B. für einen Verzweigungsbefehl.
-
Der
nächste
Befehl im Befehlspuffer wird dann in der dritten Stufe, DECODIEREN
(P2) 206, an den/die Decodierer 512/514 abgefertigt,
wo der Befehl decodiert und an die Ausführungseinheit für die Ausführung dieses
Befehls, z. B. an die P-Einheit 108, die A-Einheit 110 oder
die D-Einheit 112, abgefertigt wird. Die Decodier-Stufe 206 enthält die Decodierung
wenigstens eines Teils des Befehls einschließlich eines ersten Teils, der
die Klasse des Befehls angibt, eines zweiten Teils, der das Format
des Befehls angibt, und eines dritten Teils, der eine Adressierungsbetriebsart
für den
Befehl angibt.
-
Die
nächste
Stufe ist eine ADRESSIER-Stufe (P3) 208, in der die Adresse
der in dem Befehl zu verwendenden Daten berechnet wird oder eine
neue Programmadresse berechnet wird, sollte der Befehl eine Programmverzweigung
oder einen Sprung erfordern. Die jeweiligen Berechnungen finden
in der A-Einheit 110 bzw. der P-Einheit 108 statt.
-
In
einer ZUGRIFFS-Stufe (P4) 210 wird die Adresse eines Leseoperanden
erzeugt, wobei dann der Speicheroperand, dessen Adresse in einem
DAGEN-Y-Operator
mit einer indirekten Ymem-Adressierungsbetriebsart erzeugt worden
ist, aus dem indirekt adressierten Y-Speicher (Ymem) GELESEN wird.
-
Die
nächste
Stufe der Pipeline ist die LESE-Stufe (P5) 212, in der
ein Speicheroperand, dessen Adresse in einem DAGEN-X-Operator mit
einer indirekten Xmem-Adressierungsbetriebsart oder in einem DAGEN-C-Operator
mit der Koeffizientenadressenbetriebsart erzeugt worden ist, GELESEN
wird. Die Adresse der Speicherstelle, an der das Ergebnis des Befehls
zu schreiben ist, wird erzeugt.
-
Schließlich gibt
es eine Ausführungs-Stufe
AUSFÜHREN
(P6) 214, in der der Befehl entweder in der A-Einheit 110 oder
in der D-Einheit 112 ausgeführt wird. Das Ergebnis wird
dann in einem Datenregister oder Akkumulator gespeichert oder für die Lese-/Modifiziere-/Schreib-Befehle
in den Speicher geschrieben. Au ßerdem
werden während
der AUSFÜHRUNGS-Stufe
die Verschiebungsoperationen an den Daten in den Akkumulatoren ausgeführt.
-
Die
Pipeline des Prozessors 100 ist geschützt. Dies verbessert die Leistung
des C-Kompilierers signifikant, weil keine NOP-Befehle eingefügt werden
müssen,
um Latenzzeitanforderungen zu erfüllen. Es macht außerdem die
Codeübersetzung
von einem Prozessor einer früheren
Generation zu einem Prozessor einer späteren Generation viel leichter.
-
Eine
im Prozessor 100 verwendete Grundregel des Pipelineschutzes
lautet wie folgt: Falls ein Schreibzugriff eingeleitet worden ist,
bevor der laufende Lesezugriff noch nicht abgeschlossen worden ist,
und falls beide Zugriffe dasselbe Betriebsmittel gemeinsam benutzen,
dann werden zusätzliche
Zyklen eingefügt,
um den Schreibabschluss zu erlauben und den nächsten Befehl mit den aktualisierten
Operanden auszuführen; aber
für die
Emulation muss sich eine Einzelschritt-Codeausführung genau wie die freilaufende
Codeausführung
verhalten.
-
Das
Grundprinzip der Funktionsweise für einen Pipelineprozessor wird
nun unter Bezugnahme auf 5 beschrieben. Wie aus 5 ersichtlich
ist, finden für
einen ersten Befehl 302 die aufeinanderfolgenden Pipelinestufen
während
der Zeitperioden T1-T7 statt.
Jede Zeitperiode ist ein Taktzyklus für den Maschinentakt des Prozessors.
Ein zweiter Befehl 304 kann in der Periode T2 in
die Pipeline eintreten, weil der vorhergehende Befehl nun in die
nächste
Pipelinestufe bewegt worden ist. Für den Befehl 3, 306,
tritt die VORAUSLESE-Stufe 202 in
der Zeitperiode T3 auf. Wie aus 5 für eine siebenstufige
Pipeline ersichtlich ist, kann eine Gesamtmenge von 7 Befehlen gleichzeitig
verarbeitet werden. Für
alle 7 Befehle 302–314 zeigt 5 sie
alle in der Zeitperiode T7 unter Verarbeitung.
Eine derartige Struktur fügt
eine Form der Parallelität
zur Verarbeitung der Befehle hinzu.
-
Wie
in 6 gezeigt ist, enthält die vorliegende Ausfihrungsform
der Erfindung eine Speicherschnittstelleneinheit 104, die über einen
24-Bit-Adressenbus 118 und einen bidirektionalen 32-Bit-Datenbus 120 an den
externen Programm speicher 150 gekoppelt ist. Außerdem ist
die Speicherschnittstelleneinheit 104 über einen 24-Bit-Adressenbus 114 und
einen bidirektionalen 16-Bit-Datenbus 116 an die Datenspeichereinheiten 151 gekoppelt.
Die Speicherschnittstelleneinheit 104 ist außerdem über einen
32-Bit-Programmlesebus (PB) 122 an die I-Einheit 106 des
Maschinenprozessorkerns 102 gekoppelt. Die P-Einheit 108,
die A-Einheit 110 und
die D-Einheit 112 sind über
die Datenlese- und Datenschreibbusse und die entsprechenden Adressenbus an
die Speicherschnittstelleneinheit 104 gekoppelt. Die P-Einheit 108 ist
ferner an einen Programmadressenbus 128 gekoppelt.
-
Insbesondere
ist die P-Einheit 108 über
einen 24-Bit-Programmadressenbus 128, die zwei 16-Bit-Datenschreibbusse
(EB, FB) 130, 132 und die zwei 16-Bit-Datenlesebusse (CB,
DB) 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt.
Die A-Einheit 110 ist über
zwei 24-Bit-Datenschreibadressenbusse (EAB, FAB) 160, 162,
die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132,
die drei Datenleseadressenbusse (BAB, CAB, DAB) 164, 166, 168 und
die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 an
die Speicherschnittstelleneinheit 104 gekoppelt. Die D-Einheit 112 ist über die
zwei Datenschreibbusse (EB, FB) 130, 132 und die drei
Datenlesebusse (BB, CD, DB) 144, 134, 136 an
die Speicherschnittstelleneinheit 104 gekoppelt.
-
6 stellt
bei 124 die Weiterleitung der Befehle von der I-Einheit 106 zur
P-Einheit 108 dar,
um z. B. Verzweigungsbefehle weiterzuleiten. Außerdem stellt 6 bei 126 und 128 die
Weiterleitung der Daten von der I-Einheit 106 zur A-Einheit 110 bzw.
zur D-Einheit 112 dar.
-
Der
Prozessor 100 ist um einen vereinheitlichten Programm/Daten-Raum
organisiert, wie in 7 veranschaulicht ist. Ein Programmzeiger
umfasst intern 24 Bits, wobei er eine Byte-Adressierungs-Fähigkeit
besitzt, wobei aber nur eine 22-Bit-Adresse zum Speicher exportiert
wird, weil ein Programm-Holvorgang immer an einer 32-Bit-Grenze
ausgeführt
wird. Während
der Emulation für
die Software-Entwicklung werden jedoch z. B. die vollen 24-Bit-Adressen
für die
Hardware-Unterbrechungspunkt-Implementierung bereitgestellt. Die Datenzeiger umfassen
16 Bits, erweitert um eine 7-Bit-Hauptdatenseite, wobei sie eine
Wortadressierungsfähigkeit
besitzen. Die Software kann bis zu 3 Hauptdatenseiten wie folgt
definieren:
MDP Direktzugriff indirekter Zugriff CDP
MDP05 – indirekter
Zugriff AR[0-5]
MDP67 – indirekter
Zugriff AR[6-7]
-
Es
wird ein Stapel aufrechterhalten, wobei er immer auf der Hauptdatenseite
0 steht. Die speicherabgebildeten Register der CPU sind von allen
Seiten sichtbar.
-
Verschiedene
Aspekte des Prozessors 100 sind in der Tabelle 2 zusammengefasst.
-
-
Tabelle
2 – Zusammenfassung
des verbesserten Prozessors 100
-
8 ist
ein Blockschaltplan, der ein digitales System mit dem Prozessorkern 102 in
Kombination mit einem Verfolgungs-FIFO 800 gemäß den Aspekten
der vorliegenden Erfindung veranschaulicht. Der Verfolgungs-FIFO 800 ist
ein Mechanismus, um ein Fenster mit hoher Bandbreite zu schaffen,
um die Sichtbarkeit der Sequentialisierung der Befehlsausführung bereitzustellen.
Der Prozessorkern 102 ist mit der Speicherschnittstelle 810 verbunden.
Die Befehle und die Daten können
vom Cache 814, dem internen Speicher 812 oder
dem externen Speicher 830 über die externe Speicherschnittstelle 802 erhalten
werden. Der Programmholadressenbus 820 stellt die Programmzähleradressen
für den
Cache 814 oder die Speicher 812, 830 in
Reaktion auf den RPC 534 bereit (siehe 5).
Der Cache fordert über
den Bus 815 einen Programmholvorgang vom externen Speicher 830 an,
wenn ein Cache-Fehltreffer auftritt. In diesem Fall werden die Befehlsdaten über den
Bus 808 dem Prozessorkern 102 bereitgestellt,
während
der Cache über
den Bus 809 aktualisiert wird. Der Programmdecodierungsadressenbus 822 stellt
die Adresse des Befehls, der in Reaktion auf den LRPC 536 decodiert
wird, der Verfolgungsschnittstelle 804 bereit. Die Verfolgungsschnittstelle 804 sendet dann
die Programmdecodierungsadresse über
den Decodierungs-PC-Bus 806 an den Verfolgungs-FIFO 800. Die
Hardware-Unterbrechungspunkt/Fensterpunkt-Schaltungsanordnung 824 überwacht
die Adressenbusse 820 und 822 und sendet ein Fenstersignal 825 an
die Verfolgungsschnittstelle 804, wenn eine im Voraus ausgewählte Adresse
oder ein im Voraus ausgewählter
Adressenbereich erfasst wird. Verschiedene Steuersignale, die sich
auf das Befehlsformat, die Diskontinuitäten, die Wiederholungsbefehle
und die Unterbrechungen beziehen, werden innerhalb des Prozessorkerns 102 gebildet
und über
den Bus 821 an die Verfolgungsschnittstelle 804 gesendet.
Diese Signale werden später
ausführlicher
beschrieben.
-
In 8 ist
die Brücke 860 mit
dem Datenbus 861 verbunden, wobei sie einen gepufferten
Datenbus, den RBus 862, schafft. Die Peripherievorrichtungen 863 und 844 repräsentieren
verschiedene Peripherievorrichtungen, die mit dem Rbus 862 verbunden
sein können.
Der Rbus 862 ist außerdem
mit dem Verfolgungs-FIFO 800 verbunden,
um die Inhalte des Verfolgungs-FIFO 800 zu lesen, um die
Verfolgungshistoriendaten zu erhalten oder um in den FIFO zu schreiben,
um den FIFO zu steuern und zu konfigurieren.
-
Ein
Testsystem für
den externen Host 870 ist mit dem Testanschluss 850 verbunden,
um die Emulation und das Testen zu steuern. Das externe Testsystem 870 repräsentiert
verschiedene bekannte Testsysteme, um integrierte Schaltungen auszutesten
und zu emulieren. Ein derartiges System ist im US-Patent 5.535.331 beschrieben.
-
Die
Tabelle 3 listet ein speicherabgebildetes Register innerhalb des
Prozessorkerns 102 auf, das für ein Verständnis dieser Ausführungsform
der vorliegenden Erfindung relevant ist. Dieses Register wird in
den folgenden Abschnitten ausführlicher
beschrieben. Der Prozessorkern 102 besitzt außerdem eine
Anzahl speichergebildeter Register, die für verschiedene Steuer-, Zustands-
und Betriebsaufgaben verwendet werden.
-
Tabelle
3: Das speicherabgebildete CPU-Register
-
Die
Tabelle 4 fasst die Bitzuordnungen des Zustands-/Steuerregisters
ST3 zusammen.
-
-
Tabelle
4 – Das
Zustands-/Steuerregister ST3
-
9 ist
ein Blockschaltplan des Verfolgungs-FIFO nach 8.
Der Verfolgungs-FIFO 800 besteht aus zwei Registerbänken, eine
enthält
eine Folge von Diskontinuitäten,
während
die andere Informationen enthält,
um eine Folge der PC-Adressen zu identifizieren, auf die zuletzt
zugegriffen worden ist. Diese Ausführungsform des Verfolgungs-FIFO 800 speichert
32 8-Bit-Abtastwerte der letzten PC-Informationen im letzten PC-Abschnitt 910 und
16 64-Bit-Abtastwerte der letzten Diskontinuitäten im Diskontinuitäts-PC-Abschnitt 911. Alternative
Ausführungsformen
können
einen Speicher für
eine größere oder
kleinere Anzahl von Abtastwerten bereitstellen.
-
Jeder
Abtastwert für
den letzten Programmzähler-Wert
(der von nun an als TRC_LPC bezeichnet wird) besitzt ein Bitfeld,
das die durch die Zustandssignale 821 bereitgestellten
Informationen enthält,
das angibt, ob es zu einem bedingten Befehl gehört und ob die bedingte Ausführung zu
einem "wahr" aufgelöst worden
ist. Durch Vorgabe wird angenommen, dass jeder Befehl zu einem wahr
ausge wertet wird, wobei dieses Bit nur auf "0" gesetzt
wird, wenn ein bedingter Befehl fehlschlägt. Es gibt außerdem ein
Bitfeld, das angibt, ob der letzten PC-Abtastwert zu einem Wiederholungseinzelbefehl
gehört;
in diesem Fall wird der Decodierungs-PC nur einmal gespeichert.
Dies kann jedoch durch das Steuerregister gesteuert werden. Das
Bitfeld übermittelt außerdem Informationen über die
Größe des Befehls
(das Befehlsformat).
-
Der
Diskontinuitäts-PC-Abschnitt
besteht aus dem Decodierungs-PC-Wert, wenn eine PC-Diskontinuität auftritt.
Jede Diskontinuität
ist ein Paar von Werten: einer zeigt den PC-Wert gerade bevor die
Diskontinuität vorkommt,
während
der andere den PC-Diskontinuitätswert
zeigt. Das "pcdiscont"-Signal (mit positiver
Logik) von der Verfolgungsschnittstelle 804 gibt an, ob
die entsprechende Adresse eine Diskontinuitätsadresse ist.
-
Die
Schnittstelle kann in zwei Abschnitte klassifiziert werden: die
Rbus-spezifischen Signale und die verfolgungsspezifischen Signale.
Die Tabelle 5 beschreibt die Rbus-spezifischen Signale, die über den
Rbus 862 mit dem Verfolgungs-FIFO 800 verbunden
sind. Die Tabelle 6 beschreibt die verfolgungsspezifischen Signale,
die über
den PC-Decodierungs-Bus 806 und den Steuersignalbus 807 mit
dem Verfolgungs-FIFO 800 verbunden sind und die durch die
Steuerschaltungsanordnung 900 empfangen werden.
-
Tabelle
5 – Die
Rbus-spezifischen Signale
-
Tabelle
6 – Die
verfolgungsspezifischen Eingangssignale
-
Die
verfolgungsspezifischen Eingangssignale PCINT, PCINTR besitzen eine
doppelte Funktionalität. Während der
sequentiellen Codeausführung übertragen
sie das Befehlsformat. Während
einer Code-Diskontinuität übertragen
sie die oben erklärten
Informationen. In diese Weise sind weniger Signale erforderlich.
-
Die
CPU 102 exportiert die Programmzähleradresse (die Decodierungspipelinestufe) über den
Bus 822 und eine Menge von Zustandssignalen von der Befehlsdecodierungs-
und Bedingungsauswerte-Logik über
den Bus 821, um die Verfolgung der Ausführung des Anwenderprogramms
zu unterstützen,
wie in der Tabelle 6 beschrieben ist. Dies kann in zwei Arten erreicht
werden: indem diese Signale durch die externe Speicherschnittstelle 802 an
den Rand der Vorrichtung gebracht werden, falls dies vom Standpunkt
der Anschlussstift-Anzahl und der Leistung annehmbar ist; oder indem
der Verfolgungs-FIFO 800 innerhalb derselben integrierten
Schaltung implementiert wird. Der letztere Ansatz erlaubt das Rennen
der letzten Programmadressenwerte und der letzten Programmadressendiskontinuitäten, wobei
für das
effiziente Austesten ein Etikett an ihnen angebracht ist. Vorteilhaft
erfordert dieses Schema keine zusätzlichen Vorrichtungs-Anschlussstifte und unterstützt die
Verfolgung mit voller Geschwindigkeit.
-
Die
Tabelle 7 beschreibt verschiedene Register und Busse innerhalb des
Verfolgungs-FIFO 800.
-
-
-
Tabelle
7 – Die
in dieser Beschreibung verwendeten Begriffe
-
Das
LPC_OFFSET_REG 923 wird verwendet, weil keine PC-Bits im
SEC_LPC gespeichert sind. Dieses Register enthält den vollen 24-Bit-PC-Wert, wenn
der FIFO aus irgendeinem Grund anhält. Deshalb wird es im Normalfall
immer auf den aktuellen Decodierungs-PC-Wert zeigen, der zum sequentiellen
Code gehört. Wenn
es jedoch ein Stoppereignis gibt, das auf die Fensterbildung der
Verfolgung von der Unterbrechungspunktlogik 824 oder von
den Fensterbildungsoptionen zurückzuführen ist,
das durch das Verfolgungssteuerregister gesteuert werden kann, enthält das LPC_OFFSET_REG
den vollen PC-Wert beim Stopp. Dies bedeutet, dass der Anwender
(oder die Diagnoseprogramm-Software) vollständige Informationen besitzt,
um alle Adressenwerte für
die Folge der Befehlsadressen der zuletzt verwendeten Befehle zusammen
mit den Befehlsformatinformationen zu rekonstruieren.
-
Jeder
TRC_LPC-Wert wird vorübergehend
im TEMP_LPC_REG 924 gespeichert, sodass für jede Diskontinuität ein Paar
von PC-Werten gespeichert werden kann: einer, der den Wert gerade
vor der Diskontinuität zeigt,
und der andere, der die Adresse der Diskontinuität zeigt.
-
Es
gibt mehrere Register, die verwendet werden, um den Verfolgungs-FIFO 800 zu
steuern. Es folgt eine ausführliche
Beschreibung von jedem Register.
-
Das
Verfolgungssteuerregister (TRC_CNTL) 926 ist ein Sechzehn-Bit-Register,
das verwendet wird, um die verschiedenen Betriebsarten des Verfolgungs-FIFO aufzubauen und
zu steuern. Die Tabelle 8 beschreibt die TRC_CNTL-Bits und gibt
ihre vorgegebenen Werte beim Rücksetzen
an.
-
-
-
Tabelle
8 – Die
Bitbeschreibungen des Verfolgungssteuerregisters
-
Das
Verfolgungszeigerregister (TRC_PTR) ist ein Sechzehn-Bit-Register,
das zwei funktional verschiedene Register bildet: den Schreibzeiger
zur Verfolgung des letzten PC (TRC_LWPTR) 920 und den Schreibzeiger
zur Verfolgung des Diskontinuitäts-PC
(TRC_DWPTR) 921. Dieses Register ist schreibgeschützt. Die
Tabelle 9 beschreibt die Bits des Verfolgungszeigers.
-
Tabelle
9 – Das
Verfolgungszeigerregister
-
Die
Verfolgungsregister TRC00 bis TRC79 sind 16-Bit-Register, die verwendet
werden, um die Verfolgungsinformationen zu speichern. Die Verfolgungsinformationen
sind in zwei Teile geteilt. Ein Teil enthält die letzten PC-Informationen,
während
der andere den PC-Diskontinuitätswert
hält. In
der aktuellen Ausführungsform
sind die letzten PC-Informationen in den Registern TRC64 bis TRC79
im letzten PC-Abschnitt 910 gespeichert. Jeder letzte PC-Abtastwert
umfasst acht Bits, sodass in jedem Verfolgungsregister zwei Abtastwerte gespeichert
sind. Die Diskontinuitäts-PC-Informationen
sind in den Registern TRC00 bis TRC63 gespeichert. Jeder Diskontinuitätsabtastwert
umfasst vierundsechzig Bits, sodass vier Verfolgungsregister verwendet
werden, um jeden Diskontinuitätsabtastwert
zu speichern. In der vorliegenden Ausführungsform ist der Verfolgungs-FIFO konstruiert,
um 16 Abtastwerte der vorhergehenden PC-Diskontinuitäten und
32 Abtastwerte des letzten PC-Wertes aufzunehmen. Eine weitere Ausführungsform
kann eine größere oder
kleinere Anzahl von Abtastwerten speichern.
-
Jedem
Diskontinuität-Decodierungs-PC-Wert
ist ein Bitfeld zugeordnet, das als das Verfolgungsereignis (TRC_DEVT)
bezeichnet wird. Dieses Feld spezifiziert den Grund für die Diskontinuität (das Ereignis,
das die Diskontinuität
verursacht). Die TRC_DEVT-Bits werden gewählt, um zu irgendeinem Zeitpunkt
die Rekonstruktion der letzten Befehlsausführungs-Sequentialisierung zu
ermöglichen.
-
Ähnlich ist
jedem Eintrag im letzten PC-Abschnitt ein Bitfeld geordnet, das
als TRC_LEVT bezeichnet wird, das die Informationen über die
bedingte Ausführung
und das Befehlsformat spezifiziert. Ein TRC_LEVT-Eintrag ist außerdem in
jedem Diskontinuitätsabtastwert
enthalten.
-
Der
FIFO ist in einer derartigen Weise organisiert, dass die neuesten
Abtastwerte die ältesten
Abtastwerte überschreiben.
Es folgt eine Beschreibung der Verfolgungsregister und der Ereigniskennzeichner.
-
Jeder
Diskontinuitätseintrag
ist ein Paar von 32-Bit-Werten.
- 1. Die erste
32-Bit-Adresse, die die Diskontinuität verursacht + die TRC_LEVT-Bits
- 2. Die zweite 32-Bit-Diskontinuitäts-Zieladresse + die TRC_DEVT-Bits
-
Die
Tabelle 10 zeigt den 64-Bit-Wert für jeden Diskontinuitätseintrag.
Wie oben erklärt
worden ist, belegt jeder Abtastwert vier Verfolgungsregister, sodass
ein einzelner Abtastwert z. B. in den Registern TRC00-TRC03 steht.
Die Verfolgungsregister werden als Sechzehn-Bit-Werte gelesen.
-
-
Tabelle
10 – Die
Beschreibung der Bits des Verfolgungsregisters (des Diskontinuitäts-PC-Abschnitts) TRC00-TRC64
-
Die
Verfolgungsregister TRC65-TRC79, der letzte PC-Abschnitt 910,
enthalten die letzten PC-Informationen. Die Tabelle 11 beschreibt
die Inhalte der Verfolgungsregister, die die letzten PC-Abtastwerte
speichern.
-
Tabelle
11 – Die
Beschreibung der Bits des Verfolgungsregisters (des letzten PC-Abschnitts)
TRC64-TRC79
-
18 veranschaulicht
die Bitzuordnung eines Eintrags eines "Diskontinuitätsereignisses", der im Verfolgungs-FIFO
gespeichert ist. 19 veranschaulicht die Bitzuordnung
des Eintrags eines "letzten
PC-Ereignisses",
der im Verfolgungs-FIFO gespeichert ist.
-
Tabelle
12 beschreibt das Verfolgungs-LPC-Versatzregister 823.
Dieses Register enthält
den aktuellen Decodierungs-PC-Wert und seine TRC_LEVT-Bits.
-
Tabelle
12 – Der
aktuelle Decodierungs-PC-Wert und seine TRC_LEVT-Bits
-
Tabelle
13 beschreibt das Verfolgungs-FIFO-ID-Register 925. Dieses
Register spezifiziert die "Eigentümeridentifikation" des Verfolgungs-FIFO 800.
Der Eigentümer
kann die Diagnoseprogramm-Software, die Anwendung oder kein aktueller
Eigentümer
sein. Die cTOOLS id für
das Merkmal der Emulationsverfolgung wird außerdem von hier gelesen.
-
Tabelle
13 – Die
Bitdefinitionen des Verfolgungs-FIFO-ID-Registers
-
Die
cTOOLs-Austest-System-ID für
den Verfolgungspuffer ist 0x004, was in die Bits 11-0 des ID-Registers 925 gesetzt
ist. Die Eigentümerschaft
wird während
eines Rücksetzens
auf "NONE_OWNS" gesetzt. Die Eigentümerschaft
kann beansprucht werden, indem auf das Steuerregister durch das
Schreiben in das Steuerregister 926 zugegriffen wird. Falls
es bereits einen Eigentümer
gibt, ändert
ein Schreiben in das Steuerregister die Eigentümerschaft nicht. Die Betriebsmittel
können
in Besitz gelangen, wenn sich die Steuerregisterbits (1 bis hinab
zu 0) auf "freigegeben" bewegen.
-
Die
Tabelle 14 zeigt die Adressenabbildung der Register innerhalb des
Verfolgungs-FIFO.
-
Tabelle
14 – Die
Adressenabbildung
-
Alle
Rbus-Leseoperationen sind 16-Bit-Lesevorgänge. Im Fall des Lesens der
Verfolgungsregister TRC64 bis TRC79 – letzter PC-Abschnitt 910,
enthält
jede Leseoperation 2 letzte PC-Werte. Die unteren acht Bits enthalten
den ersten Wert, während
die oberen acht Bits den nächsten
Wert enthalten. Dies vergrößert den
Durchsatz der Lesevorgänge.
-
Die
Steuerschaltungsanordnung 930, das ID-Register 925 und
das Steuerregister 926 werden später ausführlicher beschrieben.
-
Der
Hardware-Rücksetzzustand
für alle
Ausgangssignale ist in Tabelle 15 beschrieben.
-
Tabelle
15 – Der
Hardware-Rücksetzzustand
für alle
Ausgangssignale
-
10 ist
ein Blockschaltplan, der die externe Speicherschnittstelle 802 ausführlicher
veranschaulicht. Die externe Speicherschnittstelle umfasst separate
Programm- und Daten-Bus-Controller 1010, 1011 und eine
Verfolgungs-/Emulationsschnittstelle 804.
Die Daten- und Programm-Bus-Controller sind separat, aber der Konfigurationsblock
wird gemeinsam benutzt. Deshalb laufen die Holvorgänge auf
dem externen Datenbus 1022 und Programmbus 1020 gleichzeitig
ab. Die Verfolgungs-/Emulationsschnittstelle 804 umfasst
sowohl die generische Verfolgung als auch die Adressensichtbarkeit
(AVIS). Der MMT-Bus 806, 807 wird verwendet, um die
Verfolgungsinformationen von dem internen Megazellen-Verfolgungs-/Emulationsblock
auszugeben. Die AVIS-Ausgabe wird auf den MMP-Programmadressenbus
multiplexiert. Die Megazelle 1000 ist eine komplexe ASIC-Vorrichtung,
die durch das Kombinieren mehrerer vorgegebener ASIC-Zellen, einschließlich des
Prozessorkerns 102, gebildet wird. Die externe Speicherschnittstelle 802 wird
außerdem
als Megazellen-Speicherschnittstelle (MMI) 802 bezeichnet.
-
Die
32-Bit-Verfolgungs-/Emulationsschnittstelle 804 gibt bei
jeder Programmdiskontinuität
die aktuelle 24-Bit-Ausführungsadresse über den
Bus 806 und die zwölf
Steuersignale für
die generische Verfolgung über den
Bus 807 aus (siehe Tabelle 6). Diese Informationen erlauben
einem externen Nach-Prozessor, wie z. B. dem Testsystem 870,
den Programmablauf zu rekonstruieren. Durch das Konsultieren des
Programmlistings kann das Testsystem 870 den tatsächlichen
Befehlsablauf zusammen mit den Kommentaren anzeigen, die sich auf
die einzelnen Befehle beziehen, die im Programmlisting vorgesehen
sind. Da nur die Diskontinuitäten ausgegeben
werden, ist die mittlere Datenrate ein Bruchteil der DSP_CLK-Rate.
-
11 ist
ein Taktdiagramm, das die Taktung für die Verfolgungssignale veranschaulicht,
die von der externen Speicherschnittstelle ausgegeben werden. Die
MMI 802 gibt die Signale für die generische Verfolgung
direkt vom generischen Verfolgungsblock 804 innerhalb der
Megazelle aus. Die Ausgaben der generischen Verfolgung umfassen
die 24-Bit-Ausführungsadresse
und zwölf
Steuersignale.
-
Die
Ausführungsadresse
wird nur bei jeder Programmdiskontinuität ausgegeben, bei der die Steuersignale
die Art der Diskontinuität
definieren, z. B. einen Sprung, eine Unterbrechung oder einen Unterprogrammaufruf.
Der Adressenbus ist 24 Bits breit, da die Ausführungsadresse falsch ausgerichtet
sein kann, selbst wenn die Programmholadressen immer auf 32 Bit
ausgerichtet sind.
-
Die
Daten der generischen Verfolgung erfordern eine Nachverarbeitung,
um den Programmablauf zu rekonstruieren, falls die Daten protokolliert
worden sind, z. B. unter Verwendung des externen Testsystems 800.
Ein (von Texas Instruments, Inc. verfügbares) Emulationssystem XDS510
kann konfiguriert werden, um dies zusammen mit der Emulationssteuerschaltungsanordnung 851 über eine
7-Anschlussstift-JTAG-Schnittstelle 850 auszuführen.
-
Die
MMI 802 puffert lediglich die generischen Verfolgungssignale 1110, 1112 und
steuert sie extern von der Abfallflanke des Taktsignals 1100 an,
die mit den externen MMP- und MMD-Bussen konsistent ist, sodass jedes
künftige
Verschmelzen problemlos sein würde.
Der Block für
die generische Verfolgung steuert die generischen Verfolgungsausgaben 1120, 1122 von
der Anstiegsflanke des Taktsignals 1100 so an, dass der
interne Bus nur die Hälfte
einer DSP CLK-Periode für
die Ausbreitung besitzt. Dieser Bus sollte jedoch nicht den Grundflächenplan
der Megazelle 1000 dominieren, weil dieser Bus von Punkt
zu Punkt verläuft,
d. h. leicht belastet ist, und keine Adressendecodierung usw. erfordert.
Alternativ könnte
der externe Verfolgungsbus 1120, 1122 von der
Anstiegsflanke des DSP_CLK angesteuert werden, um den Grundflächenplan
unkritisch zu machen.
-
Die
Ausgabe der generischen Verfolgung wird nicht quittiert, wobei der
Ratenanpassungs-FIFO 800 außerhalb der Megazelle 1000 angeordnet
ist. Die Statistiken verändern
sich, wenn aber eine Diskontinuität einmal alle 4 Befehle auftritt,
dann beträgt
die mittlere Rate der Ausgangsdaten der generischen Verfolgung 25
% der Befehlsausführungsrate.
Eine alternative Ausführungsform
kann den FIFO 800 innerhalb der Megazelle 1000 anordnen.
-
Die
Steuerausgaben 1122 der generischen Verfolgung können miteinander
logisch ODER-verknüpft und
mit dem SHIFT_IN-Eingang eines externen synchronen FIFO verbunden
sein, der durch den DSP_CLK getaktet wird. Für den externen FIFO können zwei
alternative Topologien betrachtet werden:
- a
Ein kleiner bis mittelgroßer
FIFO. Dieser FIFO muss mit der vollen Geschwindigkeit des DSP_CLK
arbeiten.
- b Ein kleiner Ratenanpassungs-FIFO und ein großer Massenspeicher-FIFO.
Der kleine FIFO würde
zwischen die MMI und den großen
FIFO geschaltet sein. Der kleine FIFO muss mit der vollen Geschwindigkeit des
DSP_CLK arbeiten und dimensioniert sein, um die Spitzenraten der
Daten zu puffern, wenn sich die Diskontinuitäten nah zusammen befinden.
Der große
FIFO kann dann für
die Fläche
optimiert sein, wobei er dann nur mit der mittlere Rate arbeiten
muss, mit der auf die Diskontinuitäten gestoßen wird. Um Chip-Fläche zu bewahren,
könnte
sein großer
FIFO unter Verwendung eines externen SRAM auf dem Chip konstruiert
sein, der zu ei nem Anwendungs-SRAM zurückfallen würde, wenn die generische Verfolgung
gesperrt worden ist.
-
Wenn
der avis_tr-Eingang 1030 in Reaktion auf das AVIS-Bit im
Steuerregister ST3 aktiviert wird, tritt die MMI in die AVIS-Betriebsart
ein, in der jede CPU-Holadresse, die an den internen Pbus 820 ausgegeben wird,
außerdem
an den externen Programmadressenbus 1020 ausgegeben wird.
Während
des normalen Betriebs werden die Adressen für die internen Vorrichtungen
nicht an den externen Bus ausgegeben, um Leistung zu sparen. Normalerweise
ist in der AVIS-Betriebsart
der Cache-Controller gesperrt, um zu garantieren, dass die Schlitze
des externen Programmbusses immer verfügbar sind.
-
Jede
neue AVIS-Adresse wird auf dem externen Programmbus über einen
externen mmi_validavis_nf-Anschlussstift signalisiert, die als ein
Taktfreigabesignal an einem FIFO verwendet werden kann, der durch
den DSP_CLK getaktet wird.
-
Deshalb
werden, wenn der Cache-Controller und die AVIS gesperrt sind, nur
die Adressen der externen Vorrichtungen extern angesteuert, wie
beim Übergang 1210 in 12 gezeigt
ist. 12 ist ein Taktdiagramm, das die Speicherzyklentaktung
veranschaulicht, wobei die Zwischenspeicherung in einem Cache und die
Verfolgung gesperrt sind. Das AVIS-Signal 1200 ist gesperrt,
das Anforderungssignal 1202 für den externen Bus ist nur
für eine
externe Adresse aktiviert und die externen Adressensignale 1204 gehen
nur beim Übergang 1210 für eine externe
Adresse über.
-
Wenn
jedoch der Cache-Controller über
das CAEN-Bit im ST3 gesperrt und die AVIS freigegeben ist, werden
die Adressen sowohl für
die internen als auch die externen Vorrichtungen extern angesteuert,
wie im folgenden in 13 gezeigt ist. 13 ist
ein Taktdiagramm, das die Speicherzyklentaktung veranschaulicht, wobei
die Zwischenspeicherung in einem Cache gesperrt ist und die Verfolgung
freigegeben ist. Das AVIS-Signal 1300 ist freigegeben,
das Busanforderungssignal 1302 ist während einer externen Adresse
beim Übergang 1312 aktiviert,
während
die internen und externen Adressen bei den Übergängen 1310–1313 auf
den externen Programmadressensignalen 1304 angesteuert
werden.
-
Der
Cache-Controller ist während
der AVIS-Betriebsart normalerweise gesperrt, sodass der externe Bus
immer verfügbar
ist, um die AVIS-Adressen auszugeben. Falls ähnlich der Cache-Controller
freigegeben ist und die Adressen des Pbus 820 für den SARAM
oder DARAM sind oder den Cache treffen, ist der externe Bus immer
verfügbar,
um die AVIS-Adressen auszugeben.
-
Falls
der Cache-Controller freigegeben ist, wenn die AVIS außerdem freigegeben
ist, dann konkurrieren sowohl der Cache-Controller als auch der
interne Pbus um den externen Pbus 1020. Wenn der Pbus zu einer
externen, im Cache zwischenspeicherbaren Adresse holt, was zu einem
Cache-Fehltreffer führt,
dann beginnt der Cache-Controller ein Datenblock-Füllen in
die MMI. Die MMI gibt dann diese Adressen extern aus, wobei, wenn
die externe Vorrichtung eine lange Latenzzeit besitzt, dann die
Daten für
einige Zeit nicht zurückgeschickt
werden. Wenn während
dieser Zeit der Prozessorkern 102 den Pbus-Holvorgang durch
das Aktivieren von pdismiss_nr aufgibt und das Holen vom internen
SARAM beginnt, dann ist es für
die MMI unmöglich, die
internen AVIS-Adressen auszugeben, wenn nicht die externe Vorrichtung
Abbrüche
unterstützt.
-
Wenn
die externen Vorrichtungen keine Abbrüche unterstützen, dann werden deshalb die
avis-Schlitze verfehlt, da der Cache-Datenblock unteilbar ist. Dies
bedeutet, dass die resultierende Emulationsverfolgung nicht vollständig ist.
Die Systemleistung ist jedoch höher,
da die Cache-Füllungen
gleichzeitig mit den Holvorgängen
von den internen Vorrichtungen ablaufen können.
-
Die
AVIS-Adressenausgabe wird nicht quittiert, wobei jeder Ratenanpassungs-FIFO
außerhalb
der MMI angeordnet ist. Da jede Holadresse ausgegeben wird, könnte eine
neue AVIS-Adresse bei jedem DSP_CLK-Zyklus ausgegeben werden. Die
AVIS wird über
das Steuerregister ST3 freigegeben. Wenn die AVIS freigegeben ist,
vergrößert sich
die Leistungsaufnahme, weil die externen Adres senleitungen während jedes
internen Programmzugriffs durch den Prozessorkern 102 angesteuert
werden.
-
Der
Verfolgungs-FIFO wird nun ausführlicher
beschrieben. 14 ist ein Blockschaltplan,
der das Verschmelzen der Steuersignale mit den Einstellungen des
Verfolgungssteuerregisters veranschaulicht. Die verschiedenen Signale
vom Steuerregister 926 (siehe Tabelle 8) werden mit den
verschiedenen durch die Verfolgungsschnittstelle 804 bereitgestellten
Steuersignalen (siehe Tabelle 6) kombiniert, wie gezeigt ist, um
ein Freigabeverfolgungssignal 1410, ein Freigabesignal 1411 für den letzten
PC und ein Freigabediskontinuitätssignal 1412 zu
bilden.
-
15 ist
ein Blockschaltplan, der veranschaulicht, wie einzelne Register
im Verfolgungs-FIFO adressiert werden, während Verfolgungsinformationen
geschrieben werden. Wenn das Freigabesignal 1410 aktiviert ist,
dann werden entweder die LPC-Register 910 oder die DPC-Register 911 durch
das LPC-Freigabesignal 1411 bzw. das DPC-Freigabesignal 1412 ausgewählt. Wenn
das LPC-Freigabesignal 1411 aktiviert wird, dann wird eine
im TRC_LWPTR 920 gespeicherte Fünf-Bit-Register-Zahl durch
einen aktiven Codierer 950 in eines von zweiunddreißig Auswahlsignalen 951 codiert.
Falls gleichermaßen
das DPC-Freigabesignal 1412 aktiviert wird, wird eine im
TRC_DWPTR 921 gespeicherte Sechs-Bit-Register-Zahl durch einen aktiven Codierer 952 in
eines von sechzehn Auswahlsignalen 953 codiert. Das ausgewählte Register
speichert dann entweder den auf dem Bus 912 dargestellten
TRC_LEVT-Abtastwert oder den auf dem Bus 913 dargestellten 64-Bit-TRC_DPC-Abtastwert.
-
16 ist
ein Blockschaltplan, der veranschaulicht, wie die Verfolgungsregister
für den
R-Bus-Lesezugriff adressiert werden. Die Adressendecodierungsschaltungsanordnung 940 decodiert
eine auf dem Rbus 862 dargestellte Datenleseadresse für ein ausgewähltes FIFO-Verfolgungsregister.
Die Durchschaltsteuerungs-Schaltungsanordnung 1610 wählt das
entsprechende Register aus und stellt die Inhalte des ausgewählten Registers
den Rbus-Dateneingangssignalen des Rbus 862 bereit.
-
Nun
werden die verschiedenen Algorithmen, die während der Verfolgung verwendet
werden, ausführlich
beschrieben. In der Tabelle 7 sind verschiedene Begriffe zu finden,
die verwendet werden, um die Algorithmen zu beschreiben. 17 ist
eine konzeptionelle Ansicht einer Diskontinuität, die durch den FIFO verfolgt worden
ist. Die Steuerung des Prozessorkerns 102 ist, z. B. zurückzuführen auf
die Erfassung einer Unterbrechungspunktadresse, durch die Austest-Software übernommen
worden; deshalb hat der FIFO 800 die Verfolgung angehalten.
Die auf eine Unterbrechung 1700 und einen folgenden Rücksprung 1701 zurückzuführenden Diskontinuitäten sind
veranschaulicht. Der aktuelle Decodierungs-PC-Wert, der die Adresse X ist, wird
vom LPC OFFSET REGISTER erhalten. Der Abschnitt des Codes zwischen
diesem Wert und dem letzten Eintrag 1710 im SEC_DPC ist
linear, die Adressen R bis X in diesem Beispiel. Die Informationen über das
Befehlsformat sind in den TRC_LEVT-Abtastwerten 1711 verfügbar, siehe 19 und
Tabelle 11, die verwendet werden können, um alle Adressen in diesem
Bereich zu konstruieren.
-
In
der 17 sind der SEC_LPC und der SEC_DPC mit gleicher
Tiefe gezeigt, aber die tatsächliche Implementierung
ist nicht so. Es wird ferner angegeben, dass nur die TRC_LEVT-Bits,
siehe Tabelle 11, im SEC_LPC gespeichert sind, der jeder gezeigten
Adresse entspricht.
-
Die
folgenden Tabellen veranschaulichen verschiedene Algorithmen unter
Verwendung von Pseudo-Code, um den in jedem Fall beteiligten Prozess
zu beschreiben. Das Symbol "&" gibt "beide Operanden" an. Die Tabelle
16 beschreibt den Algorithmus, um einen Abtastwert entweder im LPC-Abschnitt
oder im DPC-Abschnitt
zu speichern.
-
Tabelle
16 – Der
Pseudo-Code für
das Speichern eines Abtastwertes
-
Die
Tabelle 17 beschreibt den Algorithmus zur Berechnung der Befehlsgröße.
-
Tabelle
17 – Der
Algorithmus zur Berechnung der Befehlsgröße
-
Das
jedem Decodierungs-PC-Wert zugeordnete Befehlsformat ist das Befehlsformat
für den
vorhergehenden Befehl. Dies erlaubt, dass ein früherer PC-Wert aus dem letzten
Wert rekonstruiert wird.
-
Der
Verfolgungs-FIFO wird zurückgesetzt,
indem eine "1" in das Bitfeld TRC_RST
des Verfolgungssteuerregisters (TRC_CNTL) geschrieben wird oder
indem eine "1" im "Rücksetz"-Eingangssignal angelegt wird. Die Tabelle
18 beschreibt das Rücksetzverhalten
des Verfolgungs-FIFO.
-
Tabelle
18 – Das
Rücksetzverhalten
-
Der
Prozessorkerns 102 besitzt einen "repeat()"-Befehl, der verursacht, dass der nächste einzelne
Befehl in einer ausgewählten
Anzahl wiederholt wird. Der Prozessorkern 102 besitzt außerdem einen "blockrepeat()"-Befehl, der veranlasst, dass
ein spezifizierter Block von Befehlen in einer ausgewählten Anzahl
wiederholt wird. Die durch die Wiederholungsbefehle verursachten
Diskontinuitäten
werden mit spezieller Sorgfalt behandelt. Der Verfolgungs-FIFO bearbeitet
die durch einen Einzelwiederholungsbefehl, einen Blockwiederholungsbefehl
und Wiederholungsbefehle (entweder Wiederholungseinzel- oder Blockwiederholungsbefehle)
innerhalb von Wiederholungsbefehlen verursachten Diskontinuitäten. Gemäß einem
Aspekt der vorliegenden Erfindung werden die durch Wiederholungsbefehle
verursachten Diskontinuitäten
nur einmal für
die Dauer des Wiederholungsbefehls gespeichert.
-
Ein
Vorteil dieses Ansatzes besteht darin, das schnelle Füllen des
Verfolgungs-FIFO mit denselben Diskontinuitäten zu verhindern, die während des
Austestens keine zusätzliche
Informationen bereitstellen. Das Diagnoseprogramm besitzt jedoch
eine Option, um alle Informationen innerhalb der Wiederholungsblöcke darzulegen,
indem es das TRC_RP7-Bit im Verfolgungssteuerregister 926 setzt.
In diesem Fall werden die Wiederholungsbefehle nicht unterschieden.
-
Die
Tabelle 19 (siehe Tabelle 6) beschreibt die verschiedenen Signale,
die ins Spiel kommen, um die Verfolgung des Wiederholungsbefehls
zu bearbeiten.
-
Tabelle
19 – Die
bei der Verfolgung eines Wiederholungsbefehls verwendeten Signale
-
20 ist
eine konzeptionelle Ansicht der Bearbeitung eines Blockwiederholungsbefehls
im Verfolgungs-FIFO. Ein blockrepeat()-Befehl bei der Adresse M
+ K (2100) verursacht, dass der Block der Befehle 2110 zwischen
den Adressen M + K und M + P (2102) in einer ausgewählten Anzahl
wiederholt wird. Der SEC_DPC besitzt jedoch vorteilhaft nur einen
einzelnen Abtastwert 2130, ungeachtet der Anzahl der Wiederholungen
des Blocks 2110. Das Verfolgungswiederholungsfeld 2120 (siehe 18 und
Tabelle 10: Die Bitbeschreibung der Verfolgungsregister (des Diskontinuitäts-PC-Abschnitts)
TRC00-TRC64) gibt an, dass eine Blockwiederholungsdiskontinuität aufgetreten
ist. Die Tabelle 20 beschreibt den Prozess, um die Blockwiederholung 1 zu
erfassen, die angibt, dass ein Blockwiederholungsbefehl ausgeführt wird.
-
Tabelle
20 – Der
Prozess, um die Blockwiederholung 1 zu erfassen
-
21 ist
eine konzeptionelle Ansicht der Bearbeitung eines verschachtelten
Blockwiederholungsbefehls im Verfolgungs-FIFO. Innerhalb des wiederholten
Blocks 2200 gibt es einen weiteren Wiederholungsblock 2210.
Vorteilhaft wird nur ein einzelner Abtastwert 2220 im SEC_DPC 911 gespeichert,
um den. verschachtelten Block 2210 anzugeben, wie durch
das Wiederholungsfeld 2221 angegeben ist. Ein einzelner
Abtastwert 2222 wird gespeichert, um den wiederholten Block 2200 anzugeben,
wie durch das Wiederholungsfeld 2223 angegeben ist. Die Tabelle
21 beschreibt den Prozess, um die Block repeat2 zu erfassen, die
angibt, dass verschachtelte Blockwiederholungsbefehle ausgeführt werden.
-
Tabelle
21 – Der
Prozess, um die Block repeat2 zu erfassen
-
22 ist
eine konzeptionelle Ansicht der Bearbeitung eines Einzelwiederholungsbefehls
im Verfolgungs-FIFO. Ein Wiederholungsbefehl 2300 bei der
Adresse M + K verursacht, dass der Befehl 2302 bei der Adresse
M + K + 1 in einer ausgewählten
Anzahl wiederholt wird. In diesem Fall sind im SEC_DPC 911 keine Diskontinuitätsabtastwerte
gespeichert. Im TRC_LEVT 2320, der dem wiederholten Befehl
entspricht, ist jedoch das RPTS-Bit 2321 gesetzt, um anzugeben,
dass ein Wiederholungseinzelbefehl ausgeführt wird. In diesem Fall ist
der Befehl 2302 kein bedingter Befehl, deshalb ist das
EXECOND-Bit 2322 nicht gesetzt. Die Tabelle 22 beschreibt
den Prozess, um eine Einzelwiederholung zu erfassen.
-
-
Tabelle
22 – Der
Prozess, um eine Einzelwiederholung zu erfassen
-
Wenn
es eine Diskontinuität
gibt, die auf einen bedingten Befehl innerhalb eines Wiederholungsblocks zurückzuführen ist,
dann kann die Folge der Ausführung
in der Iteration, in der die Bedingung zu einem wahr ausgewertet
wird, von 5 anderen Iterationen verschieden sein, in denen die Bedingungen
zu einem falsch ausgewertet werden. Die Tabelle 23 veranschaulicht
ein typisches Beispiel.
-
Tabelle
23 – Ein
Beispiel-Code mit einem bedingten Befehl in einem Wiederholungsblock
-
Wie
in der Tabelle 23 gezeigt ist, besitzt die Iteration, in der "cond" zu einem "WAHR" ausgewertet wird, eine
andere Ausführungsfolge
als die Iterationen, in denen "cond" zu einem "FALSCH" ausgewertet wird.
Ein derartiger Fall wird bearbeitet, indem angegeben wird, dass
es eine Diskontinuität
gibt, die auf einen bedingten Befehl innerhalb eines Wiederholungsblocks
zurückzuführen ist,
folglich selbst wenn TRC_RPT = 0 gilt (dies impliziert, dass die
Wiederholungsblockiteration nur einmal gespeichert wird), wobei
dann die Verfolgung am Ende der Iteration nicht angehalten wird,
sondern in der nächsten
Iteration fortgesetzt wird. Dieser Prozess wird iterativ angewendet,
bis eine Iteration erreicht wird, in der die "cond" falsch
ist und der Wiederholungsblock wie ein geradliniger Code ausgeführt wird.
Dieser Ansatz verfolgt die richtige Befehlsausführungs-Sequentialisierung.
-
In
dem Fall, in dem ein Aufrufbefehl innerhalb eines Wiederholungsblocks
die Ausführung
eines weiteren Wiederholungsblocks verursacht, wird dies dann als
eine Verschachtelung der Ebene 2 betrachtet. Die Tabelle 24 veranschaulicht
einen typischen Fall. In diesem Fall wird, selbst wenn TRC_RPT =
0 gilt, nur RPTB2 komprimiert. RPTB1 wird für alle Iterationen voll verfolgt.
-
Tabelle
24 – Ein
Aufrufbefehl innerhalb eines wiederholten Blocks
-
Ein
weiterer Spezialfall ist für
die Verfolgung beim Vorhandensein von Unterbrechungen vorgesehen. Wenn
im Verfolgungssteuerregister 926 TRC_BACK = 1 und TRC_INT
= 0 gilt, wird nur der Hintergrundcode verfolgt. Während die
Codeausführung
innerhalb des Unterbrechungs-Dienstprogramms (ISR) nicht verfolgt wird,
werden die Diskontinuitäten,
die auf den Eintritt in das und das Verlassen des ISR zurückzuführen sind, im
Diskontinuitäts-PC-Abschnitt
des Verfolgungs-FIFO gespeichert.
-
Es
wird ein 3-Bit-Zähler
verwendet, um den Kontext des ISR zu bewahren. Dieser Zähler wird
um "1" inkrementiert, wann
immer eine Unterbrechung genommen wird (PCINT = 1), und dekrementiert,
wenn die Unterbrechung zurückspringt
(PCINTR = 1). Der Wert des Zählers
beträgt
beim Rücksetzen
0. Dieser Zähler
wird so verwendet, dass alle Unterbrechungsverfolgung blockiert
ist, wenn nur TRC_BACK gesetzt ist.
-
Der
Verfolgungs-FIFO schafft einen Mechanismus, durch den ein spezifischer
Abschnitt des Codes verfolgt werden kann. Eine Startadresse und
eine Endadresse des Codes werden spezifiziert, indem die Fensterunterbrechungspunkt-Schaltungsanordnung 824 geladen
wird. Das Signal EXT_QUAL 825 wird für die Dauer zwischen diesen
2 Gegenstücken
aktiv. Ein Bitfeld im Steuerregister 926, das als TRC_EXTQUAL
bezeichnet wird, wird verwendet, um den Verfolgungs-FIFO zu steuern,
der in diese Betriebsart eintritt. Dieses Merkmal erlaubt, dass
ein kleines Codefragment allein verfolgt wird, ohne den ganzen Code
zu verfolgen. In dieser Betriebsart ist der Verfolgungs-FIFO nur
für die
Dauer des EXT_QUAL-Signals
von der Unterbrechungspunktlogik aktiv. Die Bits TRC_INT und TRC_BACK
im TRC_CNTL-Register sind selbst in dieser Betriebsart immer noch
gültig.
Vorteilhaft erlaubt dies die Verfolgung von Unterbrechungen, die
in einem kleinen Abschnitt des Codes auftreten. Um zur normalen
Verfolgungsbetriebsart zurückzugehen,
wird eine "0" in das TRC_EXTQUAL-Feld
geschrieben.
-
Der
Prozess zum Rekonstruieren einer Befehlsadressenfolge wird nun ausführlicher
beschrieben. In 17 hält das LPC OFFSET REGISTER 823 den
Decodierungs-PC-Wert für
den letzten Befehl zusammen mit den TRC_LEVT-Bits. Das TRC_LEVT-Feld und die TRC_DEVT-Felder
sind in 18 bzw. 19 veranschaulicht.
Die F2-, F1- und F0-Bits im TRC_LEVT geben das Längenformat des vorhergehenden
Befehls an.
-
Die
Folge der Schritte zum Rekonstruieren der Folge der Befehlsadressen
durch Interpolieren zwischen jeder Diskontinuität in der Folge der Diskontinuitätsadressen
ist im Folgenden gezeigt:
- 1. Lesen des LPC
OFFSET-Registers 823, das die Adresse X enthält.
- 2. Lesen des letzten Abtastwerts 1720 im SEC_DPC 911,
der ein Paar von 32-Bit-Werten, P + Q und R, enthält.
- 3. Der zweite Wert, R, in dem Paar ist das Ziel der Diskontinuität, wobei
er als solcher im TRC_DEVT-Feld 1721 markiert ist.
- 4. Der Adressenbereich von dieser Diskontinuitätsadresse
R zur Adresse X im LPC OFFSET REGISTER ist sequentieller Code. Alle
Adressen in diesem Bereich können
rekonstruiert werden, indem der Befehlsformatwert in jedem Abtastwert
der Folge 1711 iterativ vom Wert im LPC_OFFSET-Register
subtrahiert wird.
- 5. Wenn der Wert der Adresse R erreicht wird, wird dann gefolgert,
dass das Ende dieses Segments erreicht worden ist. In dieser Weise
werden alle Adressen im Bereich R bis X konstruiert.
- 6. Der erste 32-Bit-Wert P + Q im SEC_DPC-Abtastwert 1720 zeigt
die volle 24-Bit-Adresse, die die Diskontinuität verursacht hat. Die nicht
gezeigten TRC_LEVT-Bits zusammen mit ihm besitzen die Formatinformationen.
Dieser Wert wird für
den nächsten
Bereich anstelle des Wertes im LPC_OFFSET-Register verwendet.
- 7. Durch das Wiederholen der Schritte 2 bis 5 werden alle Adressen
im Bereich P bis P + Q rekonstruiert.
- 8. Wiederholen der Schritte 2–6, bis der Anfang des SEC_DPC
erreicht ist.
-
Um
die Verfolgungsregister zu lesen, wird das folgende Verfahren zum
Lesen des FIFO verwendet:
- 1. Setzen des TRC_LCK-Bits
im Verfolgungssteuerregister auf "1",
andernfalls wird die Lesetransaktion zeitlich gesperrt.
- 2. Lesen des LPC OFFSET REGISTER.
- 3. Lesen des Verfolgungszeigerregisters 920–921,
um den letzten Round-Robin-Eintrittspunkt im SEC_LPC und im SEC_DPC
zu bestimmen. Aus den Zeigerwerten werden die richtigen Rbus-Adressen bestimmt.
- 4. Vollständiges
Lesen des FIFO. Lesen der geeigneten Menge von Verfolgungsregistern
im SEC_DPC, auf den durch den TRC_DWPTR 921 gezeigt wird.
Jeder Eintrag im SEC_DPC ist ein 32-Bit-Wert, wobei zwei Rbus-Leseoperationen
erforderlich sind, um den ganzen Wert zu erhalten. Wie früher beschrieben worden
ist, enthält
jeder vollständige
Diskontinuitätsabtastwert
zwei Einträge.
Lesen der geeigneten Menge von Verfolgungsregistern im SEC_LPC,
auf die durch den TRC_LWPTR 920 gezeigt wird. Jeder Eintrag
im SEC_LPC ist 8 Bits breit. Deshalb ergibt jede Rbus-Leseoperation
2 Einträge
vom SEC_LPC. Der letzte Wert ist in der unteren Hälfte des
Rbus-Datenbusses verfügbar.
- 5. Setzen des TRC_LCK auf "0", um die Verfolgung
wiederaufzunehmen.
-
23 ist
ein Blockschaltplan, der eine alternative Ausführungsform eines digitalen
Systems mit dem DSP 100 gemäß den Aspekten der vorliegenden
Erfindung veranschaulicht. Das digitale System 800 enthält den Prozessor 100,
wie früher
beschrieben worden ist, und einen zweiten Prozessor, der als Host-Prozessor 810 bezeichnet
wird. Der DSP-Kern 100 führt die mit der digitalen Signalverarbeitung
in Beziehung stehenden Aufgaben aus, während der Host-Prozessor 810 die
anderen Anwendungsaufgaben ausführt.
Der DSP 100 ist über
den Bus 830 mit einer internen Programmspeicherschaltung 801 und
mit einer Zweiport-Kommunikationsspeicherschaltung 802 verbunden.
Der Verfolgungs-FIFO 823 überwacht den Bus 830,
um die Befehlsholadressen abzutasten. Die Brücke 803 ist außerdem mit
dem Bus 830 verbunden, wobei sie über den Bus 831 Zugriff
auf die Peripherievorrichtungen 820 und 821 schafft. Über den
Bus 831 wird außerdem
Zugriff auf die dedizierte Hardware 822 geschaffen, die
verschiedene Vorrichtungen und Schaltungen, wie z. B. Zeitgeber, Leistungssteuerungen,
eine Austest- und Emulations-Schaltungsanordnung und dergleichen,
enthält.
Der Verfolgungs-FIFO 823 ist außerdem mit dem Bus 831 verbunden,
um Zugriff auf den Verfolgungs-FIFO zu schaffen, um auf die darin
gespeicherten Verfolgungsdaten zuzugreifen. Die Unterbrechungsanforderungssignale 840 stellen
dem DSP 100 die Unterbrechungsanforderungen von den Vorrichtungen 820–822 bereit.
-
Der
Host-Prozessor 810 ist über
den Bus 833 mit einer Host-Prozessor-Schnittstellenschaltung (HPI) 811 verbunden.
Die HPI 811 schafft die Pufferung und die Zeitsteuerung,
um dem Host-Prozessor 810 zu erlauben, über den Bus 832 auf
die Kommunikationsspeicherschaltung 802 zuzugreifen. In
dieser Weise kann der Host-Prozessor 810 Datenwerte im
Kommunikationsspeicher 802 speichern und auf Datenwerte
im Kommunikationsspeicher 802 zugreifen, die außerdem durch
den DSP 100 gespeichert werden können und auf die außerdem durch
den DSP 100 zugegriffen werden kann. Der Bus 832 ist
vom Bus 830 separat, wobei der Kommunikationsspeicher 802 so
beschaffen ist, dass der Host-Prozessor 810 auf die Datenwerte
in der Zweiport-Speicherschaltung 802 in einer Weise zugreifen
kann, die den Betrieb der Speicherschaltung 801 nicht beeinflusst.
Die Unterbrechungsanforderungssignale 841 stellen dem DSP 100 die
Unterbrechungsanforderungen vom Host-Prozessor 810 bereit.
-
Die
Host-Port-Schnittstelle 811 besitzt zwei Register, ein
Unterbrechungsregister 812, um Unterbrechungsanforderungen
zu aktivieren, und ein Zustandregister 813 für die HPI-Betriebsarten.
Beide Register sind über
den Bus 833 durch den Host 810 zugänglich.
Das Unterbrechungsregister 812 ist betreibbar, um die Host-Unterbrechungsanforderungen
für den
Prozessor 100 in Reaktion auf eine Schreibtransaktion vom
Host 810 zu aktivieren. In der vorliegenden Ausführungsform
werden acht Bits ausgewählt,
um acht Host-Unterbrechungsanforderungssignale bereitzustellen.
Ein Unterbrechungsanforderungsimpuls wird jedes Mal, wenn der Host
eine "1" in das Bit schreibt,
das jeder Host-Unterbrechungsanforderung im Unterbrechungsregister 812 zugeordnet
ist, in einem oder mehreren der acht Host-Anforderungssignale 841 gebildet.
Eine weitere Ausführungsform
kann eine kleinere oder größere Anzahl
von Unterbrechungsanforderungssignalen besitzen, die einem Host-Prozessor
zugeordnet sind.
-
24 ist
eine schematische Darstellung einer integrierten Schaltung, die
den Prozessor 100 enthält. Wie
gezeigt ist, enthält
die integrierte Schaltung mehrere Kontakte für den Oberflächeneinbau.
Die integrierte Schaltung könnte
jedoch andere Konfigurationen einschließen, z. B. mehrere Anschlussstifte
auf einer unteren Oberfläche
der Schaltung für
den Einbau in einen steckkraftfreien Sockel oder in der Tat irgendeine
andere geeignete Konfiguration.
-
25 veranschaulicht
eine beispielhafte Implementierung eines Beispiels einer derartigen
integrierten Schaltung in einer Mobiltelekommunikationsvorrichtung,
wie z. B. einem Mobiltelephon, mit der integrierten Tastatur 12 und
der integrierten Anzeige 14. Wie in 25 gezeigt
ist, ist das digitale System 10 mit dem Prozessor 100 mit
der Tastatur 12, wo es geeignet ist über einen (nicht gezeigten)
Tastaturadapter, mit der Anzeige 14, wo es geeignet ist über einen
(nicht gezeigten) Anzeigeadapter, und mit der Hochfrequenz-Schaltungsanordnung
(HF-Schaltungsanordnung) 16 verbunden.
Die HF-Schaltungsanordnung 16 ist mit einer Antenne 18 verbunden.
-
Die
Fertigung der Datenverarbeitungsvorrichtung 100 umfasst
mehrere Schritte des Implantierens verschiedener Mengen von Störstellen
in ein Halbleitersubstrat und des Diffundierens der Störstellen
in ausgewählte
Tiefen innerhalb des Substrats, um Transistorvorrichtungen auszubilden.
Es werden Masken ausgebildet, um die Anordnung der Störstellen
zu steuern. Es werden mehrere Schichten leitenden Materials und
isolierenden Materials abgeschieden und geätzt, um die verschiedenen Vorrichtungen
zu verbinden. Diese Schritte werden in einer Reinraumumgebung ausgeführt.
-
Ein
signifikanter Teil der Kosten, um die Datenverarbeitungsvorrichtung
zu erzeugen, umfasst das Prüfen.
Die einzelnen Vorrichtungen werden in einen Betriebszustand vorgespannt
und mit einer Sonde auf die elementare betriebsfähige Funktionalität untersucht,
während
sie in einer Wafer-Form vorliegen. Der Wafer wird dann in einzelne
Chips getrennt, die als bloße
Chips oder eingekapselt verkauft werden können. Nach der Einkapselung
werden die fertiggestellten Teile in einen Betriebszustand vorgespannt
und auf betriebsfähige Funktionalität geprüft.
-
Eine
alternative Ausführungsform
der neuartigen Aspekte der vorliegenden Erfindung kann andere Schaltungsanordnungen
enthalten, die mit den hierin offenbaren Schaltungsanordnungen kombiniert
sind, um die Gesamtsumme der Gatter der kombinierten Funktionen
zu verringern. Weil die Fachleute auf dem Gebiet die Techniken für die Minimierung
der Gatter kennen, sind die Einzelheiten einer derartigen Ausführungsform hierin
nicht beschrieben.
-
Folglich
ist ein Prozessor beschrieben worden, der ein programmierbarer digitaler
Signalprozessor (DSP) ist, der sowohl eine hohe Codedichte als auch
eine leichte Programmierung bietet. Die Architektur und der Befehlssatz
sind für
eine niedrige Leistungsaufnahme und eine Ausführung mit hohem Wirkungsgrad
sowohl der DSP-Algorithmen, wie z. B. für drahtlose Telephone, als
auch reiner Steueraufgaben optimiert. Der Prozessor enthält eine
Befehlspuffereinheit und eine Datenrecheneinheit, um die durch die
Befehlspuffereinheit decodierten Befehle auszuführen. Die Befehle können in
einer parallelen Weise entweder in Reaktion auf implizite Parallelität oder in
Reaktion auf vom Anwender definierte Parallelität ausgeführt werden. Außerdem besitzt
der Mikroprozessor Mittel, um die Befehlsadresse des ersten Befehls
zu verfolgen, die betreibbar sind, um die Adresse des ersten Befehls
nur zu speichern, wenn der erste Befehl einer Diskontinuität in der
Folge der Befehle benachbart ist.
-
Der
Verfolgungs-FIFO speichert nur volle Programmadressen, die einer
Diskontinuität
des Befehlsadressenstroms benachbart sind. Für sequentielle Adressen wird
ein Dateneintrag gespeichert, der das Längenformat jedes Befehls angibt,
sodass die Befehlsadressenfolge rekonstruiert werden kann. Für Wiederholungs befehle
wird nur die erste Diskontinuität
gespeichert. Vorteilhaft kann dadurch ein kleinerer FIFO ausreichend
Informationen speichern, um eine viel längere Folge von Befehlsadressen
zu rekonstruieren.
-
Eine
weitere Ausführungsform
kann außerdem
die Datenadressen verfolgen.
-
Die
vorliegende Ausführungsform
begrenzt die Größen der
Verfolgungseinträge
auf 1 Byte pro Befehl. Dies erlaubt die Bereitstellung irgendeines
Befehlszustands (Befehlsgröße, Befehlsbedingung
(wahr oder falsch) usw.). Um die Größe weiter zu minimieren, könnte eine
weitere Ausführungsform
z. B. 2 Bits verwenden, um jeden Befehl anzugeben. In einer derartigen
Ausführungsform
würde nur
die Anzahl der durch den Prozessor ausgeführten Befehle bekannt sein,
z. B. 44 Befehle in einer Zeile, die bei dem Wert beginnt, der in LPCOFFSET
enthalten ist. Die Codierung könnte
z. B. sein:
01B → DISCONTINUITY:
betrachte den Diskontinuitätseintrag,
um vom/zum PC zu bestimmen
10B → LINEAR FLOW: –1 Befehl
vom vorhergehenden 00/11B → INVALID
-
Beginnend
beim LPCOFFSET kann der Befehlsfluss rekonstruiert werden, indem
jedes 2-Bit-Feld untersucht wird und indem bestimmt wird, ob der
Befehl vor LPCOFFSET linear war oder eine Diskontinuität war. Ein
externes Testsystem, wie z. B. das Testsystem 870, kann
das Programmlisting konsultieren, um die Länge jedes Befehls zu bestimmen.
Die nicht benutzten Bedingungen könnten außerdem verwendet werden, um
zusätzliche
Informationen zu befördern.
-
In
einer weiteren Ausführungsform
sind alle Einträge
für lineare
Befehle durch einen einzelnen Eintrag ersetzt, der die Anzahl der
linear ausgeführten
Befehle ist. Im obigen Beispiel würde z. B. ein Wert von "43" nach dem Codierungseintrag "des linearen Ablaufs" eingetragen sein.
Die Austest-Software im Testsystem könnte den Programmablauf rekonstruieren,
indem sie das Programmlisting konsultiert.
-
Andere
Ausführungsformen
können
andere Typen der Komprimierung der PC-Verfolgung gemäß den Aspekten
der vorliegenden Erfindung besitzen, um eine komprimierte Darstellung
einer Folge von Befehlen zu speichern, die in einer linearen Weise
ausgeführt
wird.
-
Die
Begriffe "angelegt", "verbunden" und "Verbindung" bedeuten, wie sie
hierin verwendet werden, elektrisch verbunden, einschließlich des
Falls, in dem sich zusätzliche
Elemente im elektrischen Verbindungsweg befinden können.
-
Während die
Erfindung unter Bezugnahme auf veranschaulichende Ausführungsformen
beschrieben worden ist, ist nicht beabsichtigt, dass diese Beschreibung
in einem einschränkenden
Sinn ausgelegt wird. Für die
Fachleute auf dem Gebiet werden unter Bezugnahme auf diese Beschreibung
verschiedene andere Ausführungsformen
der Erfindung offensichtlich sein. Es ist deshalb beabsichtigt,
dass die beigefügten
Ansprüche alle
derartigen Modifikationen der Ausführungsformen einschließen, die
in den wahren Umfang der Erfindung fallen.