DE60132633T2 - Digitale signalprozessorvorrichtung - Google Patents

Digitale signalprozessorvorrichtung Download PDF

Info

Publication number
DE60132633T2
DE60132633T2 DE60132633T DE60132633T DE60132633T2 DE 60132633 T2 DE60132633 T2 DE 60132633T2 DE 60132633 T DE60132633 T DE 60132633T DE 60132633 T DE60132633 T DE 60132633T DE 60132633 T2 DE60132633 T2 DE 60132633T2
Authority
DE
Germany
Prior art keywords
hardware resource
resources
interrupt
store
acu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60132633T
Other languages
English (en)
Other versions
DE60132633D1 (de
Inventor
Jeroen A. Leijten
Marco J. Bekooij
Adrianus J. Bink
Johan S. Van Gageldonk
Jan Hoogerbrugge
Bart Mesman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE60132633D1 publication Critical patent/DE60132633D1/de
Application granted granted Critical
Publication of DE60132633T2 publication Critical patent/DE60132633T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Communication Control (AREA)

Description

  • 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.

Claims (15)

  1. Digitale Signalprozessoreinrichtung, die Folgendes umfasst: – eine Vielzahl verfügbarer Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6), und – ein erstes Befehlssatzmittel mit Zugriff auf die genannten verfügbaren Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6), sodass mindestens ein Teil der genannten Hardware-Ressourcenmittel Operationen unter der Kontrolle des genannten ersten Befehlssatzmittels ausführen; – ein zweites Befehlssatzmittel mit Zugriff nur auf eine vorher festgelegte limitierte Teilmenge (ACU, Laden/Speichern) der genannten Vielzahl von verfügbaren Hardware-Ressourcenmitteln, sodass mindestens ein Teil der genannten Hardware-Ressourcenmittel Operationen unter der Kontrolle des genannten zweiten Befehlssatzmittels ausführen; – Zustandspuffermittel zum Speichern des aktuellen Zustands mindestens eines Teils der genannten vorher festgelegten limitierten Teilmenge der Hardware-Ressourcenmittel (ACU, Laden/Speichern) im Falle eines Interrupts; – Mittel, die auf einen Interrupt reagieren, zum Speichern eines aktuellen Zustands des genannten mindesten Teils der genannten vorher festgelegten limitierten Teilmenge der Hardware-Ressourcenmittel (ACU, Laden/Speichern) in den Zustandspuffer als Reaktion auf einen Interrupt; – gekennzeichnet durch erste Scan-Kettenmittel und zweite Scan-Kettenmittel, wobei mindestens ein Teil der Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6), auf den nicht direkt zugegriffen werden kann und der nicht in der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmittel enthalten ist, in dem ersten Scan-Kettenmittel verkettet ist und mindestens ein Teil der Hardware-Ressourcen (ACU, Laden/Speichern, FU3, FU4, FU5, FU6), auf den nicht direkt zugegriffen werden kann und der in der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6) enthalten ist, in dem zweiten Scan-Kettenmittel verkettet ist.
  2. Einrichtung nach Anspruch 1, in der die genannten verfügbaren Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6) Prozessor-Ressourcenmittel sind.
  3. Einrichtung nach Anspruch 1 oder 2, die weiter Zustandspuffermittel zum Speichern des aktuellen Zustands der Hardware-Ressourcenmittel im Falle eines Interrupts umfasst, dadurch gekennzeichnet, dass im Falle eines Interrupts die genannten Zustandspuffermittel den aktuellen Zustand von mindestens einem Teil solcher Hardware-Ressourcenmittel, die nicht in der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmitte enthalten sind, speichern.
  4. Einrichtung nach Anspruch 3, gekennzeichnet durch weitere Zustandspuffermittel zum Speichern des aktuellen Zustands von mindestens einem Teil der genannten Hardware-Ressourcenmittel im Falle eines Interrupts, wobei die genannten Zustandspuffermittel eine kleinere Größe haben als die genannten weiteren Zustandspuffermittel.
  5. Einrichtung nach Anspruch 4, die Mittel zum Liefern von Stromversorgung an die genannten Zustandspuffermittel umfasst, dadurch gekennzeichnet, dass die genannten Stromversorgungsmittel nur während der Interrupt- Bearbeitung Stromversorgung an die genannten Zustandspuffermittel liefern.
  6. Einrichtung nach mindestens einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die genannten zweiten Befehlssatzmittel keine Paralleloperationen erlauben.
  7. Einrichtung nach Anspruch 1, die Registerdateien (RF) und Funktionseinheiten-Cluster (UC) mit Funktionseinheiten-Pipelines mit an die Registerdateien gekoppelten Ausgangs-Ports umfasst, wobei die Einrichtung FIFO-Puffer an den Ausgangs-Ports der Funktionseinheiten-Cluster (UC) umfasst, jeder FIFO-Puffer eine Größe hat, die mindestens gleich einer maximalen Latenzzeit des Ausgangs-Ports ist, an den der FIFO-Puffer angehängt ist, die FIFO-Puffer so ausgebildet sind, dass während des Entleeren der Funktionseinheiten-Pipelines Daten und Registerindizes, die an den Ausgangs-Ports erscheinen, in die FIFO-Puffer anstatt in die Registerdateien (RF) geschrieben werden, Daten und Registerindizes für die Registerdateien (RF) am Ende einer Interrupt-Serviceroutine anstatt von den Funktionseinheiten-Ausgangs-Ports von den FIFO-Puffern genommen werden, bis die FIFO-Puffer leer werden.
  8. Einrichtung nach Anspruch 7, in der die FIFO-Puffer Teil der Scan-Ketten sind.
  9. Verfahren zur Verarbeitung digitaler Signale in einer digitalen Signalverarbeitungseinrichtung mit einer Vielzahl verfügbarer Hardware-Ressourcenmittel, – in dem mindestens ein Teil der genannten Hardware-Ressourcenmittel Operationen unter der Kontrolle eines ersten Befehlssatzes ausführen; – mindestens ein Teil einer vorher festgelegten limitierten Teilmenge der genannten Vielzahl verfügbarer Hardware-Ressourcenmittel Operationen unter der Kontrolle eines zweiten Befehlssatzes ausführt, der nur auf die genannte vorher festgelegte limitierte Teilmenge der genannten Hardware-Ressourcemitte Zugriff hat; – wobei mindestens auf einen Teil der Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6), auf den nicht direkt zugegriffen werden kann und der nicht in der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmittel enthalten ist, durch ein erstes Scan-Kettenmittel zugegriffen wird; – wobei auf einen Interrupt reagiert wird, um einen aktuellen Zustand der Hardware-Ressourcenmittel in der limitierten Teilmenge (ACU, Laden/Speichern) in einem Zustandspuffer zu speichern; und – wobei mindestens auf einen Teil der Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6), auf den nicht direkt zugegriffen werden kann und der nicht in der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmittel (ACU, Laden/Speichern, FU3, FU4, FU5, FU6) enthalten ist, durch ein zweites Scan-Kettenmittel zugegriffen wird.
  10. Verfahren nach Anspruch 9, in dem im Falle eines Interrupts die aktuellen Zustände von Hardware-Ressourcenmitteln in einem ersten Zustandspuffermittel gespeichert werden, dadurch gekennzeichnet, dass im Falle eines Interrupts die aktuellen Zustände mindestens eines Teils solcher Hardware-Ressourcenmittel, die nicht in der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmittel enthalten sind, in den genannten ersten Zustandspuffermitteln gespeichert werden.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass im Falle eines Interrupts die aktuellen Zustände mindestens eines Teils der genannten vorher festgelegten limitierten Teilmenge der genannten Hardware-Ressourcenmittel in einem zweiten Zustandspuffermittel ge speichert werden, der eine kleinere Größe als die der genannten ersten Zustandspuffermittel hat.
  12. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass die Stromversorgung im Prinzip nur während der Interrupt-Bearbeitung an die genannten zweiten Zustandsmittel geliefert wird.
  13. Verfahren nach mindestens einem der Ansprüche 9 bis 13, dadurch gekennzeichnet, dass der genannte zweite Befehlssatz keine Paralleloperationen erlaubt.
  14. Verfahren zur Verarbeitung digitale Signale nach Anspruch 9, in dem die Hardware-Ressourcenmittel Registerdateien (RF) und Funktionseinheiten-Cluster (UC) mit Funktionseinheiten-Pipelines mit an die Registerdateien gekoppelten Ausgangs-Ports umfassen, wobei die Einrichtung FIFO-Puffer an den Ausgangs-Ports der Funktionseinheiten-Cluster (UC) umfasst, jeder FIFO-Puffer eine Größe hat, die mindestens gleich einer maximalen Latenzzeit des Ausgangs-Ports ist, an den der FIFO-Puffer angehängt ist, wobei das Verfahren Folgendes umfasst: – Sichern eines Kontexts auf die Detektion eines Interrupts hin; – Starten keiner neuen Operationen in den Funktionseinheiten-Clustern während des genannten Sicherns und Fertigstellen von Operationen, die im Gange sind; – Schreiben von Daten und Registerindizes, die während des genannten Fertigstellens an den Ausgangs-Ports erscheinen, in die FIFO-Puffer; – Erhalten von Daten und Register-Indizes für die Registerdateien (RF) von den FIFO-Puffern anstatt von den Ausgangs-Ports, wenn eine Interrupt-Serviceroutine endet; – Zurückschalten in den Normalbetrieb, wenn die FIFO-Puffer leer werden.
  15. Verfahren zur Verarbeitung digitale Signale nach Anspruch 14, in dem die FIFO-Puffer Teil der Scan-Ketten sind.
DE60132633T 2000-10-18 2001-10-10 Digitale signalprozessorvorrichtung Expired - Lifetime DE60132633T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP00203591 2000-10-18
EP00203591 2000-10-18
PCT/EP2001/011720 WO2002033570A2 (en) 2000-10-18 2001-10-10 Digital signal processing apparatus

Publications (2)

Publication Number Publication Date
DE60132633D1 DE60132633D1 (de) 2008-03-13
DE60132633T2 true DE60132633T2 (de) 2009-01-15

Family

ID=8172144

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60132633T Expired - Lifetime DE60132633T2 (de) 2000-10-18 2001-10-10 Digitale signalprozessorvorrichtung

Country Status (8)

Country Link
US (1) US7082518B2 (de)
EP (1) EP1368732B1 (de)
JP (1) JP3801987B2 (de)
KR (1) KR100852563B1 (de)
CN (1) CN1230740C (de)
AT (1) ATE384992T1 (de)
DE (1) DE60132633T2 (de)
WO (1) WO2002033570A2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022600A (ja) * 1999-07-06 2001-01-26 Matsushita Electric Ind Co Ltd ディジタル信号処理装置
JP2005537580A (ja) * 2002-09-03 2005-12-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ スタックタイプのスナップショットバッファがネスト化されたインタラプトを処理すること
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
WO2005020065A2 (en) * 2003-08-25 2005-03-03 Koninklijke Philips Electronics, N.V. Dynamic retention of hardware register content in a computer system
DE60321010D1 (de) * 2003-11-26 2008-06-26 Texas Instruments Inc Scan-testbarer FIFO-Speicher
EP1763748A1 (de) * 2004-05-27 2007-03-21 Koninklijke Philips Electronics N.V. Signalverarbeitungsvorrichtung
US20060294344A1 (en) * 2005-06-28 2006-12-28 Universal Network Machines, Inc. Computer processor pipeline with shadow registers for context switching, and method
US7433986B2 (en) * 2005-11-14 2008-10-07 Fujitsu Limited Minimizing ISR latency and overhead
US7832601B2 (en) * 2005-12-21 2010-11-16 The Ritedose Corporation Dispensing container with nipple dispensing head
US7979684B2 (en) * 2006-08-07 2011-07-12 Qualcomm Incorporated Method and context switch device for implementing design-for-testability functionality of latch-based register files
TWI386814B (zh) * 2007-12-31 2013-02-21 Ind Tech Res Inst 具動態工作管理能力之多處理器界面及其程式載卸方法
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US9280347B2 (en) * 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
GB2505183A (en) * 2012-08-21 2014-02-26 Ibm Discovering composite keys
US9170968B2 (en) 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
US11029997B2 (en) * 2013-07-15 2021-06-08 Texas Instruments Incorporated Entering protected pipeline mode without annulling pending instructions
GB2516864A (en) * 2013-08-02 2015-02-11 Ibm Increased instruction issue rate and latency reduction for out-of-order processing by instruction chaining and collision avoidance
CN105306658A (zh) * 2014-07-28 2016-02-03 中国电信股份有限公司 基于黑名单的来电处理方法和来电处理系统
US9535846B2 (en) * 2014-07-28 2017-01-03 International Business Machines Corporation Using a decrementer interrupt to start long-running hardware operations before the end of a shared processor dispatch cycle

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003462A (en) 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
US5280616A (en) * 1989-02-27 1994-01-18 International Business Machines Corporation Logic circuit for task processing
US5115506A (en) 1990-01-05 1992-05-19 Motorola, Inc. Method and apparatus for preventing recursion jeopardy
EP0621535B1 (de) * 1993-04-23 2000-03-15 Advanced Micro Devices, Inc. Unterbrechungsverarbeitung
US5860014A (en) 1996-10-15 1999-01-12 International Business Machines Corporation Method and apparatus for improved recovery of processor state using history buffer
US5844422A (en) * 1996-11-13 1998-12-01 Xilinx, Inc. State saving and restoration in reprogrammable FPGAs
US5987601A (en) 1997-02-14 1999-11-16 Xyron Corporation Zero overhead computer interrupts with task switching
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs

Also Published As

Publication number Publication date
EP1368732A2 (de) 2003-12-10
EP1368732B1 (de) 2008-01-23
KR20020091056A (ko) 2002-12-05
ATE384992T1 (de) 2008-02-15
CN1494677A (zh) 2004-05-05
CN1230740C (zh) 2005-12-07
US7082518B2 (en) 2006-07-25
US20020083253A1 (en) 2002-06-27
KR100852563B1 (ko) 2008-08-18
JP2004512599A (ja) 2004-04-22
JP3801987B2 (ja) 2006-07-26
WO2002033570A3 (en) 2003-10-16
DE60132633D1 (de) 2008-03-13
WO2002033570A2 (en) 2002-04-25

Similar Documents

Publication Publication Date Title
DE60132633T2 (de) Digitale signalprozessorvorrichtung
DE69524570T2 (de) Verfahren und Vorrichtung zur Verbesserung der Systemleistung in einem Datenverarbeitungssystem
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69129569T2 (de) Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
DE69033398T2 (de) Rechnerarchitektur mit Mehrfachbefehlsausgabe
DE69132675T2 (de) Parallelfliessband-Befehlsverarbeitungssystem für sehr lange Befehlswörter
DE68927218T2 (de) Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
DE2722099C2 (de)
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE69033443T2 (de) Mechanismus zur Verzweigungsrücksetzung in einem Prozessor mit gepaarten Befehlen
DE69032381T2 (de) Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE2317870C2 (de) Schaltungsanordnung zur Steuerung der Datenübertragung zwischen dem Hauptspeicher und mindestens einem E/A-Gerät in einer digitalen Datenverarbeitungsanlage
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE60131864T2 (de) Speichern von stapeloperanden in registern
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE3638572C2 (de)
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE4206062A1 (de) Pipelineverarbeitung von instruktionen
DE2714805A1 (de) Datenverarbeitungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition