-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf Prozessoren und auf die Emulation
eines Prozessors, um Hardware oder Software auszutesten.
-
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. Es ist bekannt, einen
Stapel vorzusehen, der verwendet werden kann, um Variablen von einer
Software-Routine zu einer weiteren weiterzuleiten. Stapel werden
außerdem
verwendet, um die Inhalte des Programmzählers aufrechtzuerhalten, wenn
eine erste Software-Routine eine zweite Software-Routine aufruft,
sodass der Programmablauf beim Abschluss der aufgerufenen zweiten
Routine zur ersten Software-Routine zurückkehren kann. Ein Aufruf innerhalb
der zweiten Software-Routine kann eine dritte Routine aufrufen usw.
Außerdem
ist es bekannt, einen Software-Unterbrechungspunkt-Befehl vorzusehen,
der während
des Austestens der Software zu verwenden ist.
-
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.
-
Die
europäische
Patentanmeldung 0 849 672 beschreibt eine Decodierungs- und Ausführungsanordnung
für Befehle,
die auf Daten mit verschiedenen Längenformaten wirkt.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Spezielle
und bevorzugte Aspekte der Erfindung sind in den beigefügten unabhängigen und
abhängigen
Ansprüchen
dargelegt. Kombinationen aus Merkmalen der abhängigen Ansprüche können mit
Merkmalen der unabhängigen
Ansprüche
kombiniert werden, wie es geeignet ist, und nicht lediglich so,
wie in den Ansprüchen
explizit dargelegt ist. Die vorliegende Erfindung ist auf die Verbesserung
der Leistung von Prozessoren, wie z. B., aber nicht ausschließlich, von
digitalen Signalprozessoren, gerichtet.
-
Gemäß einem
ersten Aspekt der Erfindung wird ein Prozessor geschaffen, 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 niedrigere Leistungsaufnahme
und die Ausführung
mit hohem Wirkungsgrad sowohl von DSP-Algorithmen, wie z. B. für schnurlose
Telephone, als auch von reinen Steueraufgaben optimiert. Der Prozessor
enthält
eine Befehlspuffereinheit, die so betreibbar ist, dass sie einen von
einem Befehlsspeicher geholten Befehl decodiert. Der Befehl kann
eine Anzahl von Befehlsformatlängen besitzen.
Der Prozessor besitzt außerdem
eine Datenrecheneinheit, die die Befehle ausführt, die durch die Befehlspuffereinheit
decodiert werden, und einen Programmzähler, der so betreibbar ist,
dass er eine Befehlsadresse bereitstellt, die für den Befehlspuffer bereitgestellt
wird. Die Befehlspuffereinheit ist so betreibbar, dass sie einen
Software-Unterbrechungspunkt-Befehl (SWBP) decodiert, der eine Länge besitzt,
die gleich einem der Befehlslängenformate
des Befehlssatzes ist.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung ist der Befehlspuffer
so betreibbar, dass er einen Software-Unterbrechungspunkt-Befehl,
der mit einem nicht operationalen Befehl kombiniert ist, in einem einzigen
Zyklus deco diert, sodass der kombinierte Software-Unterbrechungspunkt-Befehl
und der nicht operationale Befehl (NOP) durch die Datenrecheneinheit
als ein einziger Befehl behandelt werden.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung besitzt der Software-Unterbrechungspunkt-Befehl
eine kleine Anzahl von Befehlslängenformaten,
die kleiner als die Anzahl der Befehlslängenformate im vollständigen Befehlssatz
ist. Für
die Kombination aus dem SWBP- und dem NOP-Befehl gibt es jedoch
ein kombiniertes Befehlslängenformat,
um jedem Befehlslängenformat
des Befehlssatzes zu entsprechen.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum
Betreiben eines digitalen Systems geschaffen. Mehrere Befehle werden
in einer Befehlspipeline des Prozessorkerns ausgeführt, wobei
die Befehle in Reaktion auf einen Programmzähler von einem dem Prozessorkern
zugeordneten Befehlsspeicher geholt werden, wobei die Folge von
Befehlen aus einer Befehlsmenge ausgewählt wird, die eine Anzahl von
Befehlslängenformaten
besitzt. Während
der Emulation wird ein Befehl in der Folge von Befehlen durch einen
Software-Unterbrechungspunkt-Befehl, der dasselbe Befehlslängenformat
wie der Befehl hat, den er ersetzt, ungeachtet der Länge ersetzt.
Die Ausführungsfolge
wird durch Ausführen
des Software-Unterbrechungspunkt-Befehls nach der Ausführung eines
Teils der Folge von Befehlen unterbrochen. Dann wird die Ausführung der
Folge von Befehlen durch Ersetzen des Software-Unterbrechungspunkt-Befehls durch den vorher
ersetzen Befehl in der Folge von Befehlen wiederaufgenommen.
-
Ein
weiterer Aspekt der vorliegenden Erfindung ist, dass der erste Software-Unterbrechungspunkt-Befehl
durch Auswählen
eines von einigen Software-Unterbrechungspunkt-Befehlen und Kombinieren
des Software-Unterbrechungspunkt-Befehls mit dem nicht operationalen
Befehl, derart, dass die kombinierte Länge des Software-Unterbrechungspunkt-Befehls
und des nicht operationalen Befehls gleich der Befehlslänge des ersetzen
Befehls ist, gebildet.
-
Ein
weiterer Aspekt der vorliegenden Erfindung ist, dass, wenn ein Software-Unterbrechungspunkt-Befehl
in einem Verzögerungsschlitz
ausgeführt
wird, der sich aus der Ausführung
eines Befehls des diskontinuierlichen Typs ergibt, eine Rücksprungadresse
mit demselben Wert gespeichert wird, den sie hätte, wenn der ersetzte Befehl
in der Folge von Befehlen vorhanden wäre.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
Besondere
Ausführungsformen
gemäß der Erfindung
werden nun lediglich beispielhaft und unter Bezugnahme auf die beigefügten Zeichnungen
beschrieben, in denen 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 Prozessors gemäß einer
Ausführungsform
der Erfindung ist;
-
2 eine
schematische Darstellung eines Kerns des Prozessors nach 1 ist;
-
3 ein
ausführlicherer
schematischer Blockschaltplan der verschiedenen Ausführungseinheiten des
Kerns des Prozessors ist;
-
4 eine
schematische Darstellung einer Befehlspuffer-Warteschlange und eines
Befehlsdecodierers des Prozessors ist;
-
5 eine
schematische Darstellung des Kerns des Prozessors ist, um die Operation
der Pipeline des Prozessors zu erklären;
-
6 ein
Blockschaltplan des Prozessors ist, der einen verbundenen Speicher
der Speichermanagementeinheit veranschaulicht;
-
7 die
vereinheitlichte Struktur der Programm- und Daten-Speicherräume des
Prozessors zeigt;
-
8 eine
schematische Darstellung der Befehlspipeline während der Ausführung eines
Software-Unterbrechungspunkt-Befehls ist;
-
9 ein
Ablaufplan ist, der den Ablauf der Ausführung des Programms während eines
Unterprogramm-Aufrufs veranschaulicht;
-
10A–10C Zeitlinien sind, die die Berechnung einer
Rücksprungadresse
während
des Unterprogramm-Aufrufs nach 9 im Zusammenhang
mit einem Software-Unterbrechungspunkt-Befehl veranschaulichen;
-
10 eine graphische Darstellung ist, die
die Unterbrechungspunkt-Befehle mit verschiedenen Längen veranschaulicht,
die durch die Kombination mit nicht operationalen Befehlen gemäß einem
Aspekt der vorliegenden Erfindung gebildet werden;
-
11 ein
ausführlicherer
Blockschaltplan der verschiedenen Register ist, die in der Befehlspuffereinheit
nach 4 verwendet werden;
-
12 ein
Taktdiagramm ist, das die Operation der Befehlspipeline während eines
Unterprogramm-Aufrufs veranschaulicht;
-
13 ein
Taktdiagramm ist, das die Operation der Befehlspipeline während der
Ausführung
eines Software-Unterbrechungspunkt-Befehls veranschaulicht, der
im ersten Verzögerungsschlitz
nach einem CALL-Befehl angeordnet ist;
-
14 ein
Taktdiagramm ist, das die Operation der Befehlspipeline während der
Ausführung
eines Software-Unterbrechungspunkt-Befehls veranschaulicht, der
im zweiten Verzögerungsschlitz
nach einem CALL-Befehl angeordnet ist;
-
15 eine
schematische Darstellung einer integrierten Schaltung ist, die den
Prozessor enthält;
und
-
16 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 Beispiel 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
Ausführungsform
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 Ausführungsform
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
Speicherschnittstelle 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
Befehls-Cache-Speicher 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 verschiedenen 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
verschiedenen 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-Operatoren
(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 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 weitergelei tet, 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 7-stufige 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 Beschreibung 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
separat, 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,
oder 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 Operation 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 Ausführungsform
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, CB, 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
-
Um
das Software- oder Hardware-Austesten auszuführen, ist es bekannt, einen
Emulations-Host-Prozessor mit einem Mikroprozessor, der geprüft wird,
zu verbinden, sodass der Host-Prozessor in Reaktion auf die verschiedenen
Software- oder Hardware-Ereignisse
die Inhalte der verschiedenen internen Register anzeigen kann, wie
im US-Patent 5.329.471, erteilt an Gary Swoboda, auf das vorausgehend
Bezug genommen worden ist, beschrieben ist. Die Software-Ereignisse
können
erzeugt werden, indem ein Befehl in einem Programm durch einen Software-Unterbrechungspunkt-Befehl
ersetzt wird. Der Host-Prozessor wird aufgerufen, wenn der Software-Unterbrechungspunkt-Befehl
durch den Mikroprozessor, der geprüft wird, ausgeführt wird. Ähnlich kann
die Austest-Software im Mikroprozessor, der geprüft wird, aufgerufen werden,
indem der Software-Unterbrechungspunkt-Befehl ausgeführt wird.
-
Ein
Software-Unterbrechungspunkt wird implementiert, indem der ursprünglich geladene
Befehl durch einen ersetzt wird, der den Prozessor veranlasst, die
Ausführung
anzuhalten. Die Emulations-Software verwendet die folgenden Schritte,
wenn ein Software-Unterbrechungspunkt festgelegt wird:
- 1. Das Diagnoseprogramm spezifiziert eine Byteadresse eines
Befehls, der durch einen Software-Unterbrechungspunkt zu ersetzen
ist.
- 2. Die Emulations-Software liest beginnend bei dieser Byteadresse
einen Abschnitt, typischerweise 64 Bits, des Programms.
- 3. Die Emulations-Software bestimmt die Größe des Originalbefehls, wobei
sie Parallelität,
weichen Dualismus usw. in Betracht zieht.
- 4. Die Emulations-Software wählt
einen Software-Unterbrechungspunkt-Befehl derselben Größe wie der Originalbefehl
aus und schreibt ihn in den Programmspeicher.
- 5. Die Emulations-Software verifiziert dann, dass der Software-Unterbrechungspunkt
im Speicher vorhanden ist, indem sie ihn liest und das Ergebnis
mit dem vergleicht, was geschrieben worden ist. Falls die spezifizierte
Adresse ein Festwertspeicher (ROM) ist, dann ist die Verwendung
eines Software-Unterbrechungspunkts nicht möglich, wobei stattdessen ein
Hardware-Unterbrechungspunkt verwendet wird.
-
Im
Befehlssatz des Prozessors 100 sind mehrere Befehle für die Verwendung
durch die Emulation vorgesehen. ESTOP 0 wird für einen Software-Unterbrechungspunkt
verwendet. Wenn ein Emulator angeschlossen ist, hält der ESTOP
0-Befehl die Ausführung des
Prozessors an, wobei der PC auf den ESTOP 0-Befehl zeigt. Dieser
Befehl wird verwendet, um einen Software-Unterbrechungspunkt des
Diagnoseprogramms zu implementieren. Falls kein Emulator angeschlossen
ist (die Programmlauf-Zustandsmaschine (RSM) befindet sich im EXE_CONT-Zustand), ist dieser
Befehl effektiv ein NOP, wobei der PC nach dem ESTOP 0-Befehl inkrementiert
wird. Dieser Befehl ist in der DECODIER-Pipelinestufe wirksam. Es
gibt zwei Formate für
den ESTOP 0-Befehl, ein 32-Bit- und ein 8-Bit-Format. Für einen
zu ersetzenden gegebenen Originalbefehl wird als der Ersatz entweder
ein 8- oder ein 32-Bit-ESTOP-0-Befehl verwendet. Um den Software-Unterbrechungspunkt
auf die Größe des Originalbefehls
aufzufüllen,
wird ein 8-Bit- oder ein 16-Bit-NOP-Befehl angehängt. Die Ersetzung des Software-Unterbrechungspunkt-Befehls
behandelt parallele Befehle als einen einzelnen zu ersetzenden Befehl.
Folglich gibt es für
die Kombination der SWBP-ESTOP()-
und NOP-Befehle ein kombiniertes Befehlslängenformat, um jedem Befehlslängenformat
des Befehlssatzes der vorliegenden Ausführungsform zu entsprechen.
-
In
der Assemblersprache sind keine ESTOP 0-Befehle definiert, sie werden
nur durch die Emulations-Software verwendet. Die Befehlscodierungen
sind: 'estop_0()' (0x92) und 'estop_32()' (0xFD000000).
-
Ein
ESTOP 1-Befehl ist zu einem ESTOP 0 ähnlich, mit Ausnahme, dass
der PC nach dem ESTOP 1-Befehl fortgeschaltet wird. Dieser Befehl
wird verwendet, um einen Unterbrechungspunkt in einer Anwendung
einzubetten. Der eingebettete Unterbrechungspunkt kann verwendet
werden, während
mit einem Emulator eine Verbindung besteht oder nicht. Im ersteren
Fall wirkt der eingebettete Unterbrechungspunkt wie ein Software-Unterbrechungspunkt.
Im letzteren Fall kann der eingebettete Unterbrechungspunkt eine
Emulationsfalle für
ein Echtzeit-Betriebssystem (RTOS) (oder ein Überwachungsprogramm) erzeugen,
um die Emulationsanforderung zu bearbeiten. Wenn kein Emulationsereignis
konfiguriert ist, dann ist dieser Befehl effektiv ein NOP-Befehl.
Dieser Befehl ist in der DECODIER-Pipelinestufe wirksam. Dieser
Befehl kann in irgendeiner Position eines parallelen Paars erscheinen.
Die Assembler-Mnemonik und Codierung des ESTOP 1 ist 'estop_1()' (0x2AC1).
-
Die
Operation und Verwendung des ESTOP-Befehls werden nun unter Bezugnahme
auf die 8–15 ausführlicher
beschrieben.
-
8 ist
eine schematische Darstellung der früher beschriebenen Befehlspipeline
während
der Ausführung
eines Software-Unterbrechungspunkt-Befehls. Ein Aspekt der vorliegenden
Erfindung bezieht sich auf die Notwendigkeit, während der Emulation in Reaktion
auf einen Software-Unterbrechungspunkt-Befehl die Befehlsausführung an
der Grenze eines Befehls der Assemblersprache anzuhalten. Innerhalb
der Befehlspipeline der vorliegenden Ausführungsform des Prozessorkerns
kann ein Befehl, sobald er in die Adressier-Stufe (P4) eingetreten
ist, nicht mehr für
Emulationszwecke abgebrochen werden. Der Befehl muss abgeschlossen
werden, sodass keine falschen Speicherzugriffe ausgeführt werden.
-
In 8 sind
zum Zeitpunkt 800 die Zustände von vier Befehlen A, B,
C und ESTOP aus einer Folge von Befehlen in den vier Stufen der
Pipeline P3, P2, P1 bzw. P0 gezeigt. Für die Deutlichkeit sind die
anderen Befehle aus der Folge von Befehlen in den Stufen P4–P6 nicht
gezeigt. ESTOP ist ein Software-Unterbrechungspunkt-Befehl. Zum
Zeitpunkt 802 ist jeder Befehl zur jeweiligen nächsten Pipelinestufe
fortgeschritten, während
der neue Befehl D in die Vorauslese-Stufe eingetreten ist. Zum Zeitpunkt 804 ist
jeder Befehl zur jeweiligen nächsten
Pipelinestufe fortgeschritten, wobei der neue Befehl E in die Vorauslese-Stufe
eingetreten ist. Zum Zeitpunkt 804 wird der ESTOP-Befehl
in der Decodier-Stufe P2 decodiert. Zum Zeitpunkt 806 ist
jeder Befehl zur jeweiligen nächsten
Pipelinestufe fortgeschritten, wobei der neue Befehl F in die Vorauslese-Stufe eingetreten
ist.
-
Nach
der Decodierung des ESTOP-Befehls wird eine Null in die Adressier-Stufe gedrückt, wie
bei 820 gezeigt ist. NULL ist ähnlich zu einem nicht operationalen
Befehl NOP, mit Ausnahme, dass NULL den PC nicht inkrementiert (d.
h. der Zustand der CPU verbleibt unverändert) und auch das Modell
des Programmierers des CPU-Zustands nicht verändert (z. B. sind die Zustandsbits
unverändert).
Die CPU wird als "angehalten" betrachtet, wenn
ein NULL-Befehl in alle Pipelinestufen von der Adressierung P3 bis
Ausführung
P6 gedrückt worden
ist.
-
Die
Pipeline der vorliegenden Ausführungsform
arbeitet mit den folgenden Eigenschaften:
- – Es tritt
keine Änderung
der Register oder des Speichers vor der Adressier-Stufe der Pipeline
auf. Die Befehle, die in die Vorauslese-, Hol- oder Decodier-Stufe geholt worden
sind, können
verworfen und später neu
geholt werden, ohne den Zustand des Modells des Programmierers zu
verändern.
- – Die
Veränderungen
der Register oder des Speichers, die innerhalb der Adressier-Stufe
und einer späteren
Stufe (Zugreifen, Lesen, Ausführen)
auftreten, stützen
sich nicht auf Befehle vor der Adressier-Stufe (d. h., die Inhalte
der Stufen vor der Adressierung könnten, zurückzuführen auf eine Unterbrechung
oder eine Verzweigung, verworfen werden).
- – Der
Akt des Verwerfens der Inhalte der Pipelinestufen vor der Adressierung,
während
der Abschluss der Adressierung und der späteren Pipelinestufe erlaubt
wird, wird als Räumen
der Pipeline bezeichnet.
-
Das
PC-Register (wie es durch ein Emulationsprogramm dargestellt wird)
hält im
Allgemeinen die Adresse des Befehls in der Adressier-Stufe der Pipeline.
Dies ist der Befehl, der als Nächstes "auszuführen" ist, vorausgesetzt,
dass kein Befehlsstau auftritt.
-
Der
Software-Unterbrechungspunkt-Befehl verursacht ein Austestereignis
am Anfang der Adressier-Stufe des Befehls. Falls der Unterbrechungspunkt-Befehl
ein ESTOP 0 war (wie er durch das Diagnoseprogramm festgelegt ist),
zeigt der PC auf die Adresse des ESTOP-Befehls, der ausgeführt wird,
aber für
einen ESTOP 1 (als in den Code eingebettet) zeigt der PC auf die
Adresse nach dem ESTOP-Befehl. In beiden Fällen ändern sich die Zustandsbits
nicht von ihrem früheren
Wert.
-
Wenn
kein Emulator-Host mit dem Prozessor 100 verbunden ist
oder wenn die Austest-Software die Emulation gesperrt hat, werden
die ESTOPs als NOPs behandelt, wobei der Programmzähler nach
dem ESTOP-Befehl inkrementiert wird.
-
9 ist
ein Ablaufplan, der den Ablauf der Ausführung des Programms während eines
Unterprogramm-Aufrufs veranschaulicht. Innerhalb des Unterprogramms
wird unter Verwendung der relativen Adressierung des Stapelzeigers
auf die Variable zugegriffen, wie in der folgenden Codesequenz veranschaulicht
ist:
push(DAx) ;var1, Datenadressenregister x
push(DAy)
;var2, Datenadressenregister y
...
call func_a ;schiebt
PC auf den Stapel
...
...
func_a ACy = ACx + *SP(offset_var1)
;Akkumulator y, Akkumulator x
ACy = *SP(offset_var) * ACy
...
return
@PC
-
In
der obigen Codesequenz gibt der Term "*SP(offset_var1)" an, dass der Datenwert, der sich an
einer Speicherstelle befindet, die sich um einen Betrag (offset_var1)
auf den Stapelzeiger SP bezieht, geholt wird. Ein Kompilierer berechnet
die relative Adresse jeder Variable während des Kompilierungsprozesses.
Nach dem Schieben der Variable auf den Stapel wird ein CALL-Befehl
ausgeführt,
der den Wert des Programmzeigers PC in Reaktion auf die Ausführung des "call func_a"-Befehls schiebt.
Die Rücksprungadresse
wird anhand der Befehlslänge
der Befehle, die dem CALL-Befehl folgen, durch den Prozessor 100 berechnet.
Die vorliegende Befehlspipeline enthält nach einem Befehl, der den
Programmablauf ändert,
wie z. B. CALL, JUMP, Verzweigung usw., Verzögerungsschlitze. Hierin werden
diese Typen der Befehle als "Diskontinuitätsbefehle" bezeichnet. Ein
Verzögerungsschlitz
erlaubt die Ausführung
von einem oder mehreren Befehlen, die einem Diskontinuitätsbefehl
folgen, während
die Befehlspipeline geräumt
wird.
-
In 9 ist
ein Beispielprogramm veranschaulicht, das eine Folge von Befehlen
in einem ersten Abschnitt 900, einen oder mehrere Befehle
im Verzögerungsschlitz 901 und
eine Folge von Befehlen in einem zweiten Abschnitt 902 enthält. Die
Befehle A, B und C repräsentieren
die Folge in 900. Das Unterprogramm 905 befindet
sich in einem anderen Abschnitt des Befehlsspeichers. Ein Diskontinuitätsbefehl 910 führt zu einer Übertragung
des Programmablaufs zum Unterprogramm 905, wie bei 906 gezeigt
ist. Die Befehle D und E werden während des Verzögerungsschlitzes 901 ausgeführt. Nach
dem Abschluss des Unter programms 907 kehrt der Programmablauf
zur Folge 902, beginnend mit dem Befehl F, zurück, wie
bei 907 gezeigt ist.
-
10A–10C sind Zeitlinien, die die Berechnung einer
Rücksprungadresse
während
des Unterprogramm-Aufrufs nach 9 im Zusammenhang
mit einem Software-Unterbrechungspunkt-Befehl veranschaulichen.
Gemäß den Aspekten
der vorliegenden Erfindung enthält
der Befehlssatz des Prozessors 100 mehrere verschiedene
Befehlslängenformate.
Weil der Prozessor 100 Befehle mit variabler Länge besitzt,
wird die Rücksprungadresse
für einen
Diskontinuitätsbefehl
durch die Decodierung jedes der Befehle im Verzögerungsschlitz berechnet, um
ihre kombinierte Länge
zu bestimmen. 10A veranschaulicht einen Fall,
in dem die Befehle D und E beide Ein-Byte-Befehle sind, die eine
Länge L1
bzw. L2 von einem Byte besitzen. In diesem Fall wird die Rücksprungadresse
als n + 2 berechnet, wobei "n" der Wert des Programmzählers nach
dem Diskontinuitätsbefehl
C ist. 10B anschaulicht einen Fall,
in dem der Befehl D eine Länge
L1 von sechs Bytes besitzt, sodass die Rücksprungadresse als n + 7 berechnet
wird. Gleichermaßen
veranschaulicht 10C einen Fall, in dem der Befehl
E eine Länge
L2 von drei Bytes besitzt, sodass die Rücksprungadresse als n + 4 berechnet
wird. Es wird angegeben, dass in diesen Figuren ein CALL-Befehl
als der Diskontinuitätsbefehl
C veranschaulicht ist, diese Erörterung
gilt aber für
jeden Diskontinuitätsbefehl
im Befehlssatz des Prozessors 100.
-
Es
ist erwünscht,
jeden Befehl in einer Programmfolge durch einen Software-Unterbrechungspunkt-Befehl
ersetzen zu können,
um das Software- oder Hardware-Austesten auszuführen. Damit die Rücksprungadresse
im Prozessor 100 der vorliegenden Ausführungsform richtig berechnet
wird, muss es einen Software-Unterbrechungspunkt-Befehl
für jede
Länge des
Befehls im Befehlssatz des Prozessors 100 geben. Wie früher beschrieben
worden ist, enthält
der Befehlssatz des Prozessors Befehlslängenformate von 8 Bits, 16
Bits, 24 Bits und 32 Bits. Außerdem
erlaubt die Befehlspuffereinheit 106, dass zwei Befehle
in einem einzelnen Zyklus parallel decodiert und ausgeführt werden,
sodass die Befehlsausführungspipeline
außerdem
die Befehlslängenformate
von 40 Bits und 48 Bits handhabt. Mit anderen Worten, es gibt effektiv
sechs verschiedene Befehlslängenformate
im Befehlssatz des Prozessors 100. Es ist ein Aspekt der
vorliegenden Erfindung, sechs verschiedene Arten von Software-Unterbrechungspunkt-Befehlen,
eine für
jedes Befehlslängenformat, vorzusehen.
-
Es
ist ein weiterer Aspekt der vorliegenden Erfindung, eine kleinere
Anzahl von Software-Unterbrechungspunkt-Befehlen mit einer Anzahl
von nicht operationalen Befehlen zu kombinieren, um die erforderliche Anzahl
von Software-Unterbrechungspunkt-Befehlen zu verringern. Dies verringert
vorteilhaft die Anzahl der Befehle, die die Befehlsdecodierer 512 und 514 erkennen
müssen.
-
11 ist
eine graphische Darstellung, die die Unterbrechungspunkt-Befehle
mit verschiedenen Längen
veranschaulicht, die durch die Kombination mit nicht operationalen
Befehlen gemäß einem
Aspekt der vorliegenden Erfindung gebildet werden. Es sind zwei
Arten von Software-Unterbrechungspunkt-Befehlen vorgesehen, estop 1100,
der eine Länge 1110 von
8 Bits besitzt; und estop_32, der eine Länge 1113 von 32 Bits besitzt,
wie früher
beschrieben worden ist. Im Befehlssatz des Prozessors 100 sind
aus anderen Gründen
zwei Arten von nicht operationalen Befehlen mit Parallelfreigabebits
enthalten: NOP mit einer Länge
von 8 Bits und NOP_16 mit einer Länge von 16 Bits. Wie unter
Bezugnahme auf 4 beschrieben worden ist, können die Befehle
im Prozessor 100 kombiniert werden, indem ein Parallelfreigabebit
in einem Befehl aus einem Paar von Befehlen gesetzt wird. Folglich
wird durch das Kombinieren eines ausgewählten Befehls der zwei estop-Befehle
mit einem ausgewählten
Befehl der NOP-Befehle und durch das Setzen des Parallelfreigabebits im
NOP-Befehl ein Software-Unterbrechungspunkt-Befehl mit einer Länge 1110 von
8 Bits, einer Länge 1111 von
16 Bits, einer Länge 1112 von
24 Bits, einer Länge 1113 von
32 Bits, einer Länge 1114 von
40 Bits oder einer Länge 1115 von
48 Bits geschaffen.
-
Die
Emulations-Software berechnet das Befehlsformat des zu ersetzenden
Befehls, wobei sie die Parallelität und das weiche duale Schema
berücksichtigt,
bevor sie die Ersetzung des Software-Unterbrechungspunkt-Befehls
ausführt,
wie früher
beschrieben worden ist.
-
12 ist
ein ausführlicherer
Blockschaltplan der verschiedenen Register, die in der Befehlspuffereinheit
für die
Berechnung der Rücksprungadresse
verwendet werden. Das Zielregister 1200 hält die Adresse
der Zieladresse des Diskontinuitätsbefehls.
Der Schreibprogrammzähler 530,
der lokale Schreibprogrammzähler 532,
der Leseprogrammzähler 534 und
der lokale Leseprogrammzähler 536 sind
unter Bezugnahme auf 4 beschrieben worden. Der temporäre Leseprogrammzähler 1210 und
der temporäre
Schreibprogrammzähler 1220 halten
die Werte, während
sie in den Stapel 1230 geschrieben werden.
-
13 ist
Taktdiagramm, das die Operation der Befehlspipeline während eines
Unterprogramm-Aufrufs veranschaulicht; wie früher in Bezug auf die 9 und 10A–10C beschrieben worden ist. Zum Zeitpunkt 1300 wird
bei 1310 ein Diskontinuitätsbefehl decodiert. Zum Zeitpunkt 1306 werden
die Inhalte des LCRPC-Registers 536 zum T1RPC-Register 1210 übertragen,
wie bei 1312 gezeigt ist. Dann werden die Inhalte in den
Stapel 1230 geschrieben, wie bei 1314 gezeigt
ist. Folglich wird die Rücksprungadresse
auf dem Stapel gesichert.
-
In 13 bezieht
sich eine Adresse, die als "@SR(p – 1)" bezeichnet ist,
auf eine vorhergehende Rücksprungadresse,
im Gegensatz zur aktuellen Rücksprungadresse "@SR(p)". Bei einem CALL-Befehl
wird z. B. SR(p) gesichert, wobei die Rücksprungadresse des CALL SR(p)
wird. SR(p – 1)
wird im Register T1RPC gespeichert, während SR(p) im Register LCRPC
gespeichert wird. Diese Registerwerte werden auf den Stapel geworfen,
in dieser Weise werden mehrere verschachtelte CALLS oder Unterbrechungen
usw. unterstützt.
-
14 ist
ein Taktdiagramm, das die Operation der Befehlspipeline während der
Ausführung
eines Software-Unterbrechungspunkt-Befehls SWBP veranschaulicht,
der im ersten Verzögerungsschlitz
nach einem CALL-Befehl angeordnet ist, der bei 1410 gezeigt
ist. Vorteilhaft besitzt der Software-Unterbrechungspunkt-Befehl
die gleiche Länge
wie der Befehl, den er ersetzt, sodass die gleiche Rücksprungadresse
berechnet und im Stapel 1230 gespeichert wird, wie bei 1420 gezeigt
ist.
-
15 ist
ein Taktdiagramm, das die Operation der Befehlspipeline während der
Ausführung
eines Software-Unterbrechungspunkt-Befehls SWBP veranschaulicht,
der im zweiten Verzögerungsschlitz
nach einem CALL-Befehl angeordnet ist, der bei 1510 gezeigt
ist. Wie in 14 besitzt der Software-Unterbrechungspunkt-Befehl
die gleiche Länge
wie der Befehl, den er ersetzt, sodass die gleiche Rücksprungadresse
berechnet und im Stapel 1230 gespeichert wird, wie bei 1520 gezeigt
ist.
-
16 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.
-
17 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 17 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.
-
Eine
alternative Ausführungsform
eines Software-Unterbrechungspunkt-Befehls kann mehr als zwei Befehlslängenformate
besitzen. Gleichermaßen
können
verschiedene Befehlscodierungen verwendet werden.
-
Eine
alternative Ausführungsform
des Prozessors 100 kann mehr oder weniger Stufen der Befehlspipeline
besitzen, wobei der Software-Unterbrechungspunkt-Befehl in einer anderen Pipelinestufe
wirksam werden kann. Außerdem
kann in einer alternativen Ausführungsform
die Anzahl der Befehlslängenformate
größer oder
kleiner als die sechs Formatlängen
des Prozessors 100 sein.
-
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. Für Austestzwecke ist ein Software-Unterbrechungspunkt-Be fehl
vorgesehen. Um die Operation der Befehlspipeline richtig zu emulieren,
wenn ein Software-Unterbrechungspunkt-Befehl während eines Verzögerungsschlitzes
ausgeführt
wird, muss die Breite des Software-Unterbrechungspunkts die gleiche
wie die des ersetzten Befehls sein. Eine begrenzte Anzahl von Längenformaten
des Unterbrechungspunkt-Befehls wird mit nicht operationalen Befehlen
kombiniert, um eine große
Anzahl von Kombinationsbefehlen zu bilden, die jedem Befehlslängenformat
entsprechen. Vorteilhaft muss nur eine kleine Anzahl von Software-Unterbrechungspunkt-Befehlen
definiert und decodiert werden, während trotzdem eine große Anzahl
von Befehlslängenformaten
bereitgestellt wird. In der vorliegenden Ausführungsform sind z. B. nur zwei
Arten von Software-Unterbrechungspunkt-Befehlen erforderlich, um
Befehle zu ersetzen, die sechs verschiedene Befehlslängenformate
besitzen.
-
Vorteilhaft
ermöglichen
die Aspekte der vorliegenden Erfindung, dass ein Software-Unterbrechungspunkt
in einen Verzögerungsschlitz
eines CALL-Befehls eingefügt
wird.
-
Vorteilhaft
ist durch das Unterstützen
eines SWBP in irgendeinem Befehl, wie z. B. in einem Verzögerungsschlitz,
ein Prozessor gemäß der vorliegenden
Erfindung in jedem Befehl unterbrechbar.
-
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.