-
Die
vorliegende Erfindung betrifft eine digitale Signalprozessoreinrichtung
gemäß dem Oberbegriff
von Anspruch 1 und ein gemäß dem Oberbegriff von
Anspruch 1 ausgelegtes Verfahren zum Verarbeiten digitaler Signale
in einer digitalen Signalprozessoreinrichtung.
-
Das
U.S.-Patent Nr. 6,026,479 beschreibt
einen Digitalprozessor, der mehrere Ausführungseinheiten enthält. Normalerweise
arbeiten die Ausführungseinheiten
parallel zueinander, jedoch ist im Fall eines Interrupts nur einer
der Prozessoren aktiv, um das Interrupt zu handhaben. Die genannte
Patentschrift schlägt
die Verwendung von Schatten-Registern vor, um beim Start der Interrupt-Handhabung
die Status-Information dieses einen Prozessors der Prozessoren zu
speichern.
-
Um
schnell auf externe Ereignisse reagieren zu können, werden in digitalen Signalprozessoren (DSP)
Interrupts verwendet. Für
die bei digitalen Signalprozessoren erforderliche Echtzeit-Performance ist
eine vorhersehbare Interrupt-Latenzzeit von zentraler Bedeutung.
Um dies zu erzielen, sollte ein Prozessor idealerweise immer unterbrechbar
sein. Interrupts sind externe Ereignisse, welche die Ausführung eines
Programms vorübergehend
unterbrechen können,
um ein mit höherer
Priorität
versehenes Task, das als Interrupt-Bedienungs-Routine implementiert ist, ausführen zu
können,
bevor mit dem OriginalProgramm fortgefahren wird.
-
Ein
Interrupt veranlasst den Prozessor dazu, die weitere Ausführung der
aktuellen Programm-Ablaufverfolgung vorübergehend aufzuschieben und stattdessen
eine andere Ablaufverfolgung durchzuführen. Der Status der aufgeschobenen
Ablaufverfolgungen muss derart gespeichert werden, dass, wenn das
Interrupt bedient worden ist, der Prozessor dessen ursprünglichen
Status wiederherstellen kann und in korrekter Weise mit der ursprünglichen
Ablaufverfolgung fortfahren kann. Die Status-Informationsmenge,
die gespeichert werden muss, und folglich die Anzahl der zum Speichern
des Status erforderlichen Programmzyklen sind abhängig von
dem Punkt in dem Programm, an dem der Prozessor unterbrochen wird.
-
Um
die Auswirkung des Kontext-Speicherns zu beschränken, sind bei zahlreichen
im Handel erhältlichen
digitalen Signalprozessoren Beschränkungen für Unterbrechbarkeit des Prozessors
vorgesehen.
-
Bei
dem "TriMedia"-Prozessor, bei dem
es sich um einen von Philips entwickelten VLIW-(Very Large Instruction
Word-)Prozessor handelt, werden zur Minimierung der Status-Informationsmenge,
die bei einem Interrupt gespeichert werden muss, nur Interrupts
an bestimmten Punkten des Programmflusses von dem Prozessor bedient.
Diese Punkte treten nur zwischen Entscheidungsbäumen auf, wo nur globale Variablen
aktiv sind. Die Architektur kennt diese Punkte aufgrund sogenannter
unterbrechbarer Sprünge.
-
Nachteiligerweise
behindert der Kompilationsvorgang eine gute Interrupt-Latenzzeit,
da er zum Erzielen eines guten parallelen Codes versucht wird, die
Grundblöcke
so groß wie
möglich
auszubilden, z. B. durch If-Konversion, Grafting und Spekulation. Zum
Erhalt einer guten Interrupt-Latenzzeit sollten unterbrechbare Sprünge oft
auftreten, was jedoch im Konflikt mit den Compiler-Zielen steht.
Infolgedessen ist bei dem "TriMedia"-Prozessor die Interrupt-Latenzzeit hochgradig
code-abhängig,
unvorhersehbar und normalerweise lang, falls der Compiler nicht
explizit gezwungen wird, Interrupts an regelmäßigen Punkten in dem Code einzubeziehen.
-
Die "VelociTI"-Architektur von
Texas Instruments erlaubt keine Interrupts während Abzweigen oder im Schatten
eines Abzweigs. Nachteiligerweise hat diese Architektur eine relativ
lange Abzweig-Verzögerung
von 5 Zyklen. Ferner ermöglicht
die Architektur ein Einplanen der Abzweige in Abzweigverzögerungs-Slots,
wodurch der gesamte Abzweig-Schatten im Effekt ausgedehnt wird.
Da bei den meisten Algorithmen ein großes Maß an Abzweigen erfolgt, kann
ein Interrupt selten auftreten.
-
Der "R.E.A.L."-Kern-Prozessor der
ersten Generation kann stets unterbrochen werden, außer während der
Ausführung
einer einzelnen Befehlsschleife, bei der einen "Repeat"-Befehl verwendet wird. Um eine hinreichend
kurze Interrupt-Latenzzeit zu gewährleisten, muss somit die Anzahl
von Schleifen-Iterationen
hinreichend klein gehalten werden, indem bei Bedarf eine Hoch-Iterations-Schleife
in mehrere Klein-Iterations-Schleifen unterteilt wird. Aufgrund
der Nichtunterbrechbarkeit des Repeat-Befehls wird ein derartiger
Befehl bei den "R.E.A.L."-Kern-Prozessoren
der zweiten Generation nicht mehr unterstützt.
-
US 5,987,601 A beschreibt
ein einzigartiges, mit Null-Hardware-Aufwand betriebenes Interrupt- und
Task-Veränderungs-System
zur Reduzierung oder Beseitigung von Interrupt-Latenzzeit und von durch
Task-Veränderungs-Verarbeitungsaufwand verursachten
Verzögerungen
bei Computer-Architekturen. Dieses herkömmliche System führt ohne
Zeitverlust eine vollständige
Task-Status-Speicherung und Wiederherstellung zwischen einem Zyklus
und dem nächsten
ohne Software-Intervention durch. Für jedes Zentralverarbeitungseinheits-Register
verwendet dieses System einen oder mehrere Hilfs-Latch-Speicher, wobei ein Latch-Speicher
als der "laufende" Latch-Speicher verwendet
wird und einer der Hilfs-Latch-Speicher mit einem Task-Speicher
verbunden ist. Das System wechselt die Verbindungen zwischen alternativen "laufenden" Registern und Hilfsregistern,
während
andere Tasks zu und aus dem Task-Speicher übertragen werden. Ferner bietet dieses
System ein Task-Verknüpfungssystem,
um das Verknüpfen
von Tasks oder die zwingende sequentielle Ausführung der verknüpften Tasks
zu ermöglichen.
Schließlich
enthält
dieses System ein Prioritäten-"Ungedulds"-Zählersystem,
um die relativen Prioritäten
der verschiedenen Tasks zu erhöhen, während diese
sich ihren Task-Deadlines
nähern.
-
US 5,860,014 A offenbart
ein Verfahren und eine Vorrichtung zum Beibehalten des Inhalts von Registern
eines Prozessors, der die Register zum Verarbeiten von Befehlen
verwendet. Einträge
werden in einem Puffer gespeichert, um auf ein Interrupt hin, das
aufgrund eines unterbrechungsfähigen
Befehls erfolgt ist, den Registerinhalt wiederherzustellen. Die
Einträge
enthalten Information zum Reduzieren der Anzahl der zur Wiederherstellung
gewählten Einträge. Als
Reaktion auf das Interrupt und die Information wird ein Satz der
Puffereinträge
gewählt,
um den Registerinhalt wiederherzustellen. Der Satz enthält nur Einträge, die
zum Wiederherstellen des Inhalts auf die Unterbrechung hin erforderlich
sind, so dass der Inhalt der Prozessor-Register in einem einzigen
Prozessor-Zyklus wiederhergestellt werden kann, selbst wenn mehrere
Einträge
für ein
zweites der Register gespeichert sind.
-
Ferner
ist aus
US 5,115,506
A ein Mikroprozessor bekannt, der versehen ist mit Unprime-Registern
zur Verwendung während
des normalen Betriebs, Prime-Registern zur Verwendung während Interrupts,
einem normalen Register, das zur Verwendung während Interrupts eingestellt
ist, einem normalen Register, das zur Verwendung während des
normalen Betriebs und herkömmlicher
Interrupt-Operationen eingestellt ist, einen Alternativ-Register,
das zur Verwendung während
schneller Interrupt-Operationen eingestellt ist, und einem Speicher-Stapel.
Es werden drei Status-Bits verwendet, um anzuzeigen, dass ein oder
mehrere schnelle Interrupts initiiert, jedoch nicht abgeschlossen
worden sind, dass gerade ein schnelles Interrupt auftritt, jedoch
keine anderen schnellen Interrupts verarbeitet werden, und dass
die CPU derzeit ein schnelles Interrupt verarbeitet. Diese Status-Bits
zeigen an, ob eine Rekursions-Gefahr besteht, und werden zum Steuern
des Informationsflusses zwischen den Normal- und Alternativ-Register-Sätzen und
dem Speicher-Stapel verwendet, um eine Rekursion zu verhindern.
-
US 5,003,462 A beschreibt
eine Vorrichtung und ein Verfahren zum Implementieren des Systemarchitektur-Erfordernisses
einer präzisen
Interrupt-Meldung
in einem gemäß dem Pipeline-Typ
ausgebildeten Prozessor mit mehreren Funktionseinheiten. Da der
Aufwand einer Interrupt-Pipeline bei denjenigen Interrupts gerechtfertigt
ist, die häufig
auftreten – insbesondere
denjenigen, die sich aus der Handhabung eines virtuellen Speichers
ergeben – werden
bei der Vorrichtung eine Interrupt-Pipeline für häufig auftretende Interrupts
und ein langsameres, jedoch beträchtlich
weniger kostenaufwendiges software-basiertes System zum präzisen Melden
der verbleibenden Interrupts verwendet. Das software-basierte System
wird durch ein Befehls-Numerierungs- und Verfolgungssystem erleichtert,
wodurch relevante Information zu ausgeführten Befehlen aufgezeichnet
wird, während
sich die Befehle durch die Prozessor-Pipeline und möglicherweise
zu anderen Funktionseinheiten bewegen. Eine Software-Interrupt-Handhabungsvorrichtung
kann diese Information verwenden, um ein Interrupt zu isolieren
und präzise
zu melden.
-
Damit
eine vorhersehbare und kurze Interrupt-Latenzzeit ermöglicht werden
kann, muss stets die Möglichkeit
bestehen, den Prozessor jedes Mal zu unterbrechen, wenn dies gewünscht ist.
Das Unterbrechen des Prozessors an irgendeinem Punkt in dem Programm
kann implizieren, dass eine beträchtliche
Menge an Statusinformation gespeichert werden muss.
-
Nur
ein Teil des Status ist in Form von Variablen in Registerdateien
verfügbar
und steht dem Programmierer direkt zur Verfügung, um über normale Lade-/Speicheroperationen
gespeichert oder wiederhergestellt zu werden. Der Rest des Status
ist bei normalem Betrieb für
den Programmierer unsichtbar, wobei er z. B. in den Pipeline-Stufen
funktionaler Einheiten verborgen ist. Es sind spezielle Vorkehrungen in
der Hardware erforderlich, um auf diesen Status zum Speichern und
Wiederherstellen zugreifen zu können.
-
Um
einen effizienten Code zu erhalten, plant ein leistungsstarker VLIW-Compiler die Operationen auf
der Basis einer sogenannten "Non-Unit-Assumed-Latency with Equal"-(NUAL-EQ-)Semantik. Dies
führt zu
einer Erstellung von Ablaufplänen,
die nicht an beliebigen Positionen durch Interrupts unterbrochen
werden können,
ohne dass spezielle Vorsichtsmaßnahmen
in der Hardware getroffen werden, um ein inkorrektes Prozessorverhalten
zu verhindern.
-
Der
unkomplizierteste Weg zur Handhabung des Problems des Unterbrechens
eines Ablaufplans besteht in der Verwendung eines Schatten-Puffers zum
Speichern des Status. Das Implementieren eines Schatten-Puffers
bedeutet, dass sämtliche
Statusregister in einem Prozessor dupliziert werden. Der Schatten-Puffer
wird verwendet, um bei der Interrupt-Handhabung eine Kopie des Prozessor-Status zu
erstellen, und er behält
diese Kopie, bis entweder die Interrupt-Handhabung beendet und die
gespeicherte Kopie in Statusregistern wiederhergestellt worden ist
oder das Interrupt wiederum durch ein Interrupt höherer Priorität unterbrochen
wird. Im letzteren Fall wird der Inhalt des Schatten-Puffers in
einem Software-Stapel im Datenspeicher gespeichert, und es wird
eine Kopie des Prozessor-Status erstellt. Dies ist jedoch eine kostenaufwendige
Lösung.
-
Das
U.S.-Patent Nr. 5,280,616 beschreibt eine
Datenverarbeitungseinrichtung, bei der Abtast-Ketten zum Zugreifen
auf Status-Information verwendet werden, um die Status-Information
während
des Task-Umschaltens zu speichern.
-
Das
U.S.-Patent Nr. 5,717,933 beschreibt eine
Datenverarbeitungseinrichtung, bei der ein Teilsatz der Register
zur Verwendung während
der Interrupt-Handhabung reserviert ist, so dass es möglich ist,
diese Register während
der Interrupt-Handhabung zu verwenden, ohne zuerst ihren Inhalt
zu speichern.
-
Es
ist Aufgabe der Erfindung, eine Lösung vorzulegen, bei der weniger
Hardware-Aufwand erforderlich ist.
-
Um
diese und weitere Aufgaben zu erfüllen, ist die Vorrichtung gemäß der Erfindung
durch den kennzeichnenden Teil von Anspruch 1 gekennzeichnet, und
das Verfahren gemäß der Erfindung
ist durch den kennzeichnenden Teil von Anspruch 9 gekennzeichnet.
-
Gemäß der vorliegenden
Erfindung unterstützt
die digitale Signalprozessoreinrichtung sowohl einen ersten Befehls-Satz,
der Zugriff auf sämtliche verfügbaren Hardware-Ressourcen
hat und somit ein normaler Befehls-Satz ist, als auch einen zweiten
Befehls-Satz, der nur auf einen begrenzten Teilsatz von Hardware-Ressourcen
Zugriff hat und somit auch als kompakter Befehls-Satz bezeichnet
werden kann. Somit wird gemäß der vorliegenden
Erfindung eine digitale Signalprozessoreinrichtung mit einem doppelten
Befehls-Satz geschaffen, wobei einer der Befehls-Sätze, nämlich der
kompakte zweite Befehls-Satz, nur einen kleinen Teilsatz sämtlicher Hardware-Ressourcen
benötigt.
-
Der
gesamte Status der Ressourcen, die zu dem begrenzten Teilsatz gehören, ist
in Form von Schatten-Registern in einem (kleinen) Schatten-Puffer
gespeichert. Um die Anzahl der zum Adressieren des Schatten-Puffers
erforderlichen Bits zu reduzieren, werden die Flipflops von Ressourcen,
die nicht zu dem begrenzten Teilsatz gehören, und die Schatten-Register
der Ressourcen, die zu dem begrenzten Teilsatz gehören, in
Scan-Ketten miteinander verkettet.
-
Der
Vorteil der Verwendung eines begrenzten zweiten Befehls-Satzes besteht
in einer Einsparung von Code-Größe in Programmteilen,
die keinen strikten Leistungsanforderungen unterliegen. Da der kompakte
zweite Befehls-Satz
eine begrenzte Sicht auf die Hardware-Ressourcen hat, können Befehle
in diesem Befehls-Satz mit sehr viel weniger Bits kodiert werden
als Befehle in dem normalen ersten Befehls-Satz. Somit kann die
Leistungsfähigkeit
einem Kompromiss zugunsten der Code-Größe unterzogen werden. Der normale
erste Befehls-Satz wird für
Programmteile verwendet, die eine hohe Leistung verlangen (z. B.
zeitlich kritische Schleifen im DSP-Code), so dass der normale erste
Befehls-Satz weite VLIW-Befehle enthält, die aus zahlreichen Programm-Bits
bestehen.
-
Ein
weiterer Vorteil des Konzepts der vorliegenden Erfindung besteht
in einer Reduzierung der Menge an Statusinformation, die bei einem
Interrupt gespeichert werden muss. Wenn der normale erste Befehls-Satz
in einer Interrupt-Bedienungs-Routine (ISR) verwendet werden soll,
muss der Status sämtli cher
von diesem Befehls-Satz verwendeter Hardware-Ressourcen, d. h. der
Status der gesamten Prozessoreinrichtung, gespeichert werden. Falls
bei Interrupt-Bedienungs-Routinen,
denen nur ein leichtes Gewicht zukommt, nur der kompakte zweite
Befehls-Satz verwendet wird, ist es ausreichend, nur den Status
des begrenzten Teilsatzes der Hardware-Ressourcen zu speichern,
die von dem kompakten zweiten Befehls-Satz verwendet werden, während der
Status der anderen Ressourcen einfach eingefroren wird. Dies kann
während
des Kontext-Schaltens
beträchtliche
Zeit einsparen. Somit kann die kompakte Sicht der Hardware-Ressourcen auch
dazu verwendet werden, im Fall eines Interrupts den Aufwand des
Kontext-Schaltens zu reduzieren.
-
Da
zahlreiche Interrupts sehr einfache Handhabungsmittel erfordern,
ist es normalerweise ausreichend, wenn diese Handhabungsmittel nur
den kompakten zweiten Befehls-Satz gemäß der vorliegenden Erfindung
verwenden.
-
Schließlich erfordert
die gemäß der vorliegenden
Erfindung vorgesehene Lösung
nur einen geringen Hardware-Aufwand.
-
Normalerweise
handelt es sich bei den verfügbaren
Hardware-Ressourcenmitteln und Prozessor-Ressourcenmittel.
-
Eine
bevorzugte Ausführungsform
der vorliegenden Erfindung weist eine erste Statuspuffervorrichtung
zum Speichern des aktuellen Status von Hardware-Ressourcenmitteln
im Fall eines Interrupts auf, wobei, wenn ein Interrupt auftritt,
die erste Statuspuffervorrichtung den aktuellen Status mindestens
eines Teils derjenigen Hardware-Ressourcenmittel speichert, die
nicht in dem vorbestimmten begrenzten Teilsatz der Hardware-Ressourcenmittel enthalten
sind. Ein derartige erste Statuspuffervorrichtung kann z. B. als
separate Puffer-Hardwarevorrichtung
vorgesehen sein oder einen logischen Puffer in dem Datenspeicher
bilden, welcher in der digitalen Signalprozessoreinrichtung enthalten
ist.
-
Ferner
kann eine zweite Statuspuffervorrichtung vorgesehen sein, um in
Fall eines Interrupt den aktuellen Status mindestens eines Teils
des vorbestimmten begrenzten Teilsatzes der Hardware-Ressourcenmittel
zu speichern, wobei die zweite Statuspuffervorrichtung eine geringere
Größe hat als
die erste Statuspuffervorrichtung. Diese zweite Statuspuffervorrichtung
kann z. B. als separate Puffer-Hardwarevorrichtung vorgesehen sein
oder einen weiteren logischen Pufferteil in dem Datenspeicher der
digitalen Signalprozessoreinrichtung bilden. Somit lässt sich
die zweite Statuspuffervorrichtung gemäß der bevorzugten Ausführungsform
der vorliegenden Erfindung als eine kleine Schatten-Puffervorrichtung
vorstellen. Da der kompakte zweite Befehls-Satz eine begrenzte Sicht
auf die Hardware-Ressourcenmittel hat, wird durch Begrenzen der
erforderlichen Größe des Schatten-Puffers
im Gegensatz zu dem vollformatigen Schatten-Puffer des Standes der
Technik eine beträchtliche
Kostenersparnis erreicht. Anders ausgedrückt kann für anspruchsvolle Interrupts
der kompakte zweite Befehls-Satz verwendet werden, um den Hardware-Aufwand
des Implementierens eines vollen Schatten-Puffers zu reduzieren.
-
Normalerweise
ist eine Vorrichtung zum Zuführen
von Energie zu der zweiten Statuspuffervorrichtung vorgesehen, wobei
gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung die Energiezuführvorrichtung im Wesentlichen
nur während
der Interrupt-Handhabung Energie zu der zweiten Statuspuffervorrichtung
zuführt,
so dass die zweite Statuspuffervorrichtung ihren Status während dieser
Zeit beibehält.
Normalerweise sind unter "Energie" sowohl die Versorgungsspannung
als auch das Taktsignal zu verstehen. Beim normalen Betrieb, wenn
kein Interrupt auftritt, kann die Energiezufuhr zu der zweiten Statuspuffervorrichtung
vollständig
unterbrochen werden, um Energie zu sparen.
-
Während der
gesamten Periode der Interrupt-Handhabung sollte die Versorgungsspannung derart
zugeführt
werden, dass die zweite Statuspuffervorrichtung ihren Status beibehält. Das
Taktsignal braucht der zweiten Statuspuffervorrichtung nur zu Beginn
einer Interrupt-Bedienungs-Routine zugeführt zu werden, wenn eine Kopie
dieses Zustands erstellt und in der zweiten Status puffervorrichtung
gespeichert wird, jedoch während
des Rests der Interrupt-Handhabung
kein Taktsignal zugeführt
zu werden braucht, falls die zweite Statuspuffervorrichtung aus
Flipflops besteht, und in diesem Fall kann am Ende der Interrupt-Bedienungs-Routine
der Inhalt der zweiten Statuspuffervorrichtung gelesen werden, ohne
dass ein Taktsignal erforderlich ist.
-
Gemäß einer
weiteren bevorzugten Ausführungsform
der vorliegenden Erfindung erlaubt die Vorrichtung für den zweiten
Befehls-Satz keine parallele Durchführung von Operationen. Dadurch,
dass dem kompakten zweiten Befehls-Satz kein paralleles Ausführen von
Operationen erlaubt ist, wird eine Reduzierung der Verwendung der
Hardware-Ressourcenmittel erzielt. Der normale erste Befehls-Satz
ist nämlich üblicherweise
ein VLIW-Befehls-Satz, was bedeutet, dass Befehle aus mehreren Operationen zusammengesetzt
sind, die gleichzeitig ausgeführt werden
können.
Ein gleichzeitiges Ausführen
von Befehlen verlangt, dass mehrere Hardware-Ressourcen parallel
verwendet werden. Wie oben bereits erwähnt hat der kompakte zweite
Befehls-Satz eine begrenzte Sicht auf die Hardware-Ressourcen, so
dass jede begrenzte Sicht, bei der es sich nicht um die volle parallele
Sicht handelt, zur Verwendung durch den kompakten zweiten Befehls-Satz
qualifiziert ist.
-
Die
vorliegende Erfindung wird vorzugsweise in der "COCOON"-eingebetteten DSP-Kern-Architektur-Vorlage
verwendet. Aus dieser Architekturvorlage ist die Drittgenerations-"R.E.A.L."-Kern-Familie abgeleitet.
Diese Kerne sind vorgesehen für
anspruchsvolle Audio-Anwendungen (z. B. denjenigen mit Audio-Komprimierung)
und für
Drittgenerations-Mobiltelefon-Anwendungen (UMTS). Die Anwendung
der Erfindung ist ferner zweckmäßig bei
jedem Typ eines programmierbaren Prozessors, bei dem eine kurze
und vorhersehbare Interrupt-Latenzzeit wichtig ist und bei dem zu
erwarten ist, dass das Speichern interner Statusinformation einen "Flaschenhals" bildet.
-
Diese
und weitere Aufgaben und Merkmale der vorliegenden Erfindung werden
aus der folgenden Beschreibung ersichtlich, die anhand der bevorzug ten
Ausführungsformen
und unter Bezugnahme auf die beigefügten Zeichnungen vorgenommen wird,
in denen Folgendes gezeigt ist:
-
1 zeigt
ein schematisches Blockschaltbild eines Teils eines VLIW-Datenpfads;
-
2a zeigt
ein schematisches Blockschaltbild einer Funktionseinheit mit drei
Pipeline-Stufen;
-
2b zeigt
die entsprechende Status-Scan-Organisation von Pipeline-Registern;
-
3 zeigt ein schematisches Blockschaltbild
von Flipflop-Anordnungen für
Kompakt-Befehls-Satz- (CIS-) Ressourcen (a) und Nicht-CIS-Ressourcen
(b); und
-
4 zeigt
ein schematisches Blockschaltbild von FIFO-Puffern an den Ausgängen von
Clustern funktionaler Einheiten.
-
1 zeigt
ein schematisches Blockschaltbild eines Teils eines VLIW-Datenwegs, bei dem Schatten-Flipflops
und Flipflop-Scan-Ketten mittels einer Schattenpuffer-Register-Datei
in einer einzigen Adressliste kombiniert sind; dabei bezeichnet "RF" eine Registerdatei, "FU" eine Funktionseinheit,
und "ACU" eine Adressberechnungseinheit
zum Berechnen von Speicheradressen. Die in 1 gezeigte Anordnung
ist in einem Prozessor mit einem doppelten Befehls-Satz implementiert,
wobei einer der Befehls-Sätze,
der als kompakter Befehls-Satz
(CIS) bezeichnet wird, nur einen (kleinen) Teilsatz sämtlicher
Prozessor-Ressourcen
benötigt.
Der andere der Befehls-Sätze
ist der normale Befehls-Satz,
der aus einem VLIW-Befehls-Satz besteht, was bedeutet, dass Befehle
aus mehreren Operationen zusammengesetzt sind, die gleichzeitig
ausgeführt
werden. Die gleichzeitige Ausführung
von Operanden erfordert, dass mehrere Hardware-Ressourcen parallel
verwendet werden. Im Gegensatz dazu hat der kompakte Befehls-Satz
eine begrenzte Sicht auf die Prozessor-Hardware, und es ist ihm
nicht gestattet, Operationen parallel durchzuführen. Somit ist jede beschränkte Sicht,
bei der es sich nicht um die volle parallele Sicht handelt, zur
Verwendung durch den kompakten Befehls-Satz qualifiziert.
-
Der
Status der Ressourcen, die zu dem Kompakt-Satz (CIS) gehören und
auch als CIS-Ressourcen bezeichnet werden, wird in Form von Schatten-Registern in einem
(kleinen) Schatten-Puffer gespeichert. Zu diesen Ressourcen zählt selbstverständlich der
Status der Ablaufsteuerung. Bei einem Interrupt wird eine Kopie
des gesamten CIS-Status in dem Schatten-Puffer gespeichert. Dies
benötigt
nur einen einzigen Taktzyklus. Gleichzeitig wird der Zustand sämtlicher
Ressourcen, die nicht von dem kompakten Befehls-Satz verwendet werden
und die als Nicht-CIS-Ressourcen bezeichnet werden, eingefroren,
z. B. mittels Takt-Gattern. Das Speichern des Prozessor-Status bei
einem Interrupt kann erfolgen, indem unmittelbar vor dem Bedienen
des Interrupts ein "Schnappschuss" von dem Interrupt
gemacht wird. Ein derartiger Schnappschuss sollte während der
Ausführung
der Interrupt-Bedienungs-Routine gespeichert werden und bei Beendigung
der Interrupt-Bedienungs-Routine derart wiederhergestellt werden,
dass der Prozessor in exakt dem gleichen Zustand und exakt an der
Programmstelle, an der er bei der Unterbrechung seine Arbeit stoppte,
wieder fortfahren kann. Nachdem ein derartiger Schnappschuss gemacht
worden ist und des gesamte übrige Status
eingefroren worden ist, kann die Ausführung der Interrupt-Bedienungs-Routine
starten. Somit beträgt
die Interrupt-Latenzzeit nur 1 Zyklus.
-
Befehle
in dem ersten Teil dieser Interrupt-Bedienungs-Routine müssen aus
dem kompakten Befehls-Satz stammen. Solange der Status der Nicht-CIN-Ressourcen gespeichert
oder wiederhergestellt wird, kann nur der kompakte Befehls-Satz verwendet
werden, und sämtliche
anderen Hardware-Ressourcen sind eingefroren. Nach dem Speichern
des CIS-Status kann die übrige
Statusinformation gespeichert werden, indem die Flipflops, die in den
Funktionseinheiten FU enthalten sind, direkt gelesen werden. Zu
diesem Zweck werden die Flipflops in Speicher-Wörtern gruppiert und in eine
einstellbaren Registerdatei-Liste
platziert, z. B. in der Registerdatei-Liste des Schatten-Puffers
(vgl. 1).
-
Um
die Anzahl der zum Adressieren des Schatten-Puffers erforderlichen
Bits zu reduzieren, können
die Flipflops, die zu Nicht-CIS-Ressourcen und zu Schatten-Registern
der CIS-Ressourcen gehören,
als Scan-Ketten miteinander verkettet werden. In diesem Fall braucht
zum Speichern und Wiederherstellen nur der Beginn oder das Ende
der Kette adressiert zu werden. Ein Lesen oder Schreiben einer Scan-Kette
muss im Hinausschieben oder Hineinschieben des Ketten-Inhalts resultieren.
Diese Scan-Ketten können
mit den Scan-Ketten kombiniert werden, die bereits für die Zwecke
des IC-Testens erforderlich sind. Um zu ermöglichen, nur einen Teil des Status
zu speichern, können
Gruppen von Scan-Ketten erstellt werden, wobei jede Gruppe von Scan-Ketten
separat in der Schattenpuffer-Registerdatei adressiert werden kann.
-
Vor
dem Neuaktivieren der Nicht-CIS-Ressourcen wird die gesamte Statusinformation
der Nicht-CIS-Funktionaleinheiten ungültig gemacht, so dass keine
ungültigen
Daten in irgendeine Registerdatei geschrieben werden und/oder Lade-/Speicher-Operationen
durchgeführt
werden, wenn Nicht-CIS-Funktionaleinheiten reaktiviert werden. Von
diesem Moment an kann wieder der volle Befehls-Satz verwendet werden,
und sämtliche
erforderlichen normalen variablen Register können durch Lade-/Speicher-Operationen,
die an normalen Register-Dateien vorgenommen werden, gespeichert
werden. Nachdem der Zustand der benötigten Register gespeichert
worden ist, können
sämtliche
Interrupts reaktiviert werden, um eine Interrupt-Verschachtelung
zu ermöglichen.
Eine Interrupt-Verschachtelung bezieht sich auf eine Situation,
in der einem Interrupt erlaubt wird, die Interrupt-Bedienungs-Routine
eines anderen Interrupts zu unterbrechen.
-
Es
laufen M Scan-Ketten durch die Nicht-CIS-Ressourcen und durch die
Schattenregister der CIS-Ressourcen, mit Ausnahme der Register, auf
die direkt über
Software zugegriffen werden kann. Dabei repräsentiert M die Anzahl von Bits,
die parallel in den Datenspeicher geschrieben werden können. Diese
Anzahl ist gleich der Datenspeicher-Wortbreite, multipliziert mit
der Anzahl von Lade-/Speicher-Einheiten, die parallel verwendet
werden können,
um dem Sta tus zu speichern und wiederherzustellen. Die Scan-Ketten
werden verwendet, um beim Start und am Ende einer Interrupt-Bedienungs-Routine
den aktuellen Status in die und aus den Ressourcen zu scannen. Mit
Ausnahme der Register, auf die direkt über Software zugegriffen wird,
werden sämtliche
Ressourcen über
diese M Scan-Ketten miteinander verkettet. Innerhalb der Ressourcen,
wie z. B. der Funktionseinheiten, sind die Flipflops derart in Scan-Ketten
angeordnet, dass sich ausgeglichene Ketten ergeben. Beispielsweise
könnte
bei einer typischen Funktionseinheit die Kette derart durch eine Anzahl
von Flipflops laufen, dass die Gesamtlänge der Kette höchstens
ein Flipflop mehr oder weniger beträgt als die Gesamtlänge sämtlicher
anderer Ketten. Dies bedeutet, dass bei einer Gesamtlänge von N
Flipflops in der Funktionseinheit für jede Scan-Kette [N/M] Flipflops
hinzuaddiert werden müssen.
Die übrigen
N – M[N/M]
Flipflops müssen
zuerst den Ketten hinzuaddiert werden, die beim Eintritt in die
Funktionseinheit die kleinste Anzahl von Flipflops passiert haben.
Ein Beispiel ist in 2 gezeigt, wobei 2(a) eine Funktionseinheit mit drei Pipeline-Stufen
mit 24, 16 und 20 Bits zeigt und 2(b) die
entsprechende Status-Scan-Organisation von Pipeline-Registern in
32 Scan-Ketten zeigt.
-
3 zeigt ein Schatten-Flipflop für CIS-Ressourcen
(a) und ein Flipflop-Scannen für Nicht-CIS-Ressourcen
(b). Diese Darstellung zeigt jedoch nicht das Taktsignal-Gattern,
das zum Einfrieren des Status und gleichzeitig zum Einsparen von Energie
verwendet wird.
-
Im
normalen Betrieb, wenn kein Interrupt auftritt, kann die Energiezufuhr
zu dem Schattenpuffer vollständig
abgeschaltet werden, so dass weder eine Versorgungsspannung noch
ein Taktsignal zugeführt werden.
Nur während
der vollen Periode der Interrupt-Handhabung wird die Versorgungsspannung derart
zugeführt,
dass der Schattenpuffer aktiv ist und seinen Status beibehält. Das
Taktsignal wird dem Schattenpuffer nur am Beginn der Interrupt-Bedienungs-Routine
zugeführt,
wenn eine Kopie des Status erstellt wird und in dem Schatten-Puffer
gespeichert wird. Während
des Rests der Interrupt-Handhabung braucht kein Taktsignal zugeführt zu werden, falls
der Schatten-Puffer aus Flipflops besteht, und in einem derartigen
Fall kann am Ende der Interrupt- Bedienungs-Routine
der Inhalt des Schatten-Puffers gelesen werden, ohne dass ein (weiteres)
Taktsignal erforderlich ist.
-
Gemäß 4 können FIFO-Puffer
an den Ausgängen
der Funktionseinheiten-Cluster verwendet werden, um einen Schnappschuss
des internen Status von Funktionseinheiten mit Pipeline-Anordnung
zu machen.
-
Es
besteht die Möglichkeit,
als Scan-Ketten die gleichen Scan-Ketten zu verwenden, die zum Testen
erforderlich sind.
-
Für Funktionseinheiten
mit Pipeline-Anordnung kann eine Schnappschuss-Pufferung implementiert
werden, ohne dass für
jedes Flipflop in der Einheit ein Schatten-Flipflop erforderlich
ist, oder ohne das Erfordernis, dass jedes Flipflop ein Teil einer
Scan-Kette ist. An den Ausgangs-Ports der Funktionseinheiten-Cluster
können
FIFO-Puffer platziert werden (vgl. 4). Die
Größe eines
FIFO-Puffers gleicht der maximalen Latenzzeit des Ausgangs-Ports,
an den der Puffer angeschlossen ist. Bei Detektion eines Interrupts
wird das Kontext-Speichern
gestartet. Während
dieses Vorgangs werden keine neuen Operationen gestartet. Jedoch
werden diejenigen Operationen, die bereits an Funktionseinheiten
mit Pipeline-Anordnung vorgenommen werden, abgeschlossen, d. h.
die Funktionseinheiten, an denen diese Operationen ausgeführt werden,
werden geflusht, indem ihre Pipelines mit NOP-Operationen gefüllt werden.
Während
des Flushens der Funktionseinheiten-Pipelines werden die Daten-
und Register-Indizes, die an den Ausgangs-Ports der Funktionseinheiten-Cluster
erscheinen, in den FIFO-Puffer statt in eine Registerdatei RF geschrieben.
Der Vorgang endet, wenn sämtliche
Register voll sind.
-
Wenn
eine Interrupt-Bedienungs-Routine endet, werden die Daten- und Register-Indizes
für die Registerdateien
RF aus den FIFO-Puffern statt aus den Ausgangs-Ports der Funktionseinheiten-Cluster erhalten.
Das Schalten auf den Normalbetrieb, in dem Daten- und Register-Indizes
einem Ausgangs-Port entnommen werden, erfolgt, wenn ein FIFO-Puffer
leer wird.
-
Die
Interrupt-Verschachtelung bildet eine weitere Komplexität bei diesem
Ansatz. Wenn eine Verschachtelung zulässig ist, muss es möglich sein, den
Inhalt der FIFO-Puffer in einem Software-Stapel zu speichern. Zu
diesem Zweck muss die Möglichkeit bestehen,
auf den in diesen FIFOs gespeicherten Status zuzugreifen. Um dies
zu erlauben, können
die FIFO-Puffer Teil einer Gruppe von Scan-Ketten sein, die von
einer Lade-/Speicher-Einheit her adressierbar ist, wie bereits beschrieben
wurde.
-
Der
Vorteil der Verwendung von FIFO-Puffern für CIS-Funktionseinheiten mit
Pipeline-Anordnung besteht darin, dass die Schatten-Flipflops unter verschiedenen
CIS-Funktionseinheiten in einem Funktionseinheiten-Cluster aufgeteilt
werden. Dadurch kann die Anzahl erforderlicher Schatten-Flipflops
beträchtlich
reduziert werden. Wenn dieser Ansatz für Nicht-CIS-Funktionseinheiten
mit Pipeline-Anordnung verwendet wird, werden keine Scan-Ketten
innerhalb dieser Funktionseinheiten benötigt. Dies erfolgt jedoch unter
Inkaufnahme der zusätzlichen
Schatten-Flipflops für
den FIFO-Puffer, die nicht benötigt
worden wären,
falls nur Scan-Ketten verwendet worden wären.
-
Es
folgt ein Beispiel der Vorgänge,
die erforderlich sind, wenn der normale Programmfluss unterbrochen
wird, wobei angenommen wird, dass die ISR sämtliche Prozessor-Ressourcen
verwenden darf und durch ein weiteres Interrupt unterbrochen werden
darf (Verschachtelung):
- – Der Prozessor führt einen
normalen Programmablauf aus.
- – Die
Hardware detektiert ein IRQ.
- – Die
Hardware friert Nicht-CIS-Ressourcen ein, deaktiviert Interrupts
durchgehend, und kopiert den Status von CIS-Ressourcen in den Schatten-Puffer.
- – Die
Programmsteuerung tritt in eine ISR ein.
- – Die
ISR speichert den Status von CIS-Sätzen in dem Software-Stapel.
- – Die
ISR kopiert den Schatten-Puffer-Inhalt in den Software-Stapel.
- – Die
ISR speichert die erforderlichen Register in dem Software-Stapel.
- – Die
ISR reaktiviert Interrupts generell, um eine Verschachtelung zu
ermöglichen.
- – Die
ISR führt
die erforderlichen Vorgänge
durch, d. h. es bedient tatsächlich
das Interrupt.
- – Die
ISR deaktiviert Interrupts generell.
- – Die
ISR führt
eine Wiederherstellung benutzter Register aus dem Software-Stapel
durch.
- – Die
ISR führt
eine Wiederherstellung des Schatten-Puffer-Inhalts aus dem Software-Stapel durch.
- – Die
ISR friert Nicht-CIS-Ressourcen ein.
- – Die
ISR nimmt eine Wiederherstellung des Status an den Nicht-CIS-Ressourcen
aus dem Software-Stapel vor.
- – Die
Programmsteuerung erreicht das Ende der ISR.
-
Die
Hardware kopiert den Schatten-Puffer-Inhalt in den Status von CIS-Ressourcen, taut Nicht-CIS-Ressourcen
auf, und deaktiviert die Interrupts generell.
-
Der
Prozessor fährt
mit dem normalen Programmablauf fort.