DE112006000340T5 - Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor - Google Patents

Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor Download PDF

Info

Publication number
DE112006000340T5
DE112006000340T5 DE112006000340T DE112006000340T DE112006000340T5 DE 112006000340 T5 DE112006000340 T5 DE 112006000340T5 DE 112006000340 T DE112006000340 T DE 112006000340T DE 112006000340 T DE112006000340 T DE 112006000340T DE 112006000340 T5 DE112006000340 T5 DE 112006000340T5
Authority
DE
Germany
Prior art keywords
coprocessor
processor
command
list
interface
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.)
Ceased
Application number
DE112006000340T
Other languages
English (en)
Inventor
Terry Lynn Austin Cole
James Los Altos Nichols
William Michael Austin Johnson
Harish Austin Kutagulla
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE112006000340T5 publication Critical patent/DE112006000340T5/de
Ceased 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

Datenprozessor (200) mit:
einem Prozessorkern (300);
einer mit dem Prozessorkern (300) gekoppelten Schnittstelle (210); und
einem Coprozessor (500), der über die Schnittstelle (210) mit dem Prozessorkern (300) verbunden ist, wobei der Coprozessor (500) einen ersten Listenspeicher (522) aufweist,
wobei in Reaktion auf einen vorbestimmten Befehl (400) der Prozessorkern (300) über die Schnittstelle (210) einen Operanden an den Coprozessor (300) weitergibt,
und wobei der Coprozessor (500) den Operanden in dem ersten Listenspeicher (522) speichert und eine Operation entsprechend dem vorbestimmten Befehl (400) unter Anwendung mehrerer Werte aus dem ersten Listenspeicher (522) ausführt, um ein Ergebnis bereitzustellen.

Description

  • Gebiet der Offenbarung
  • Die vorliegende Erfindung betrifft im Allgemeinen Datenprozessoren und betrifft insbesondere Datenprozessoren, die in der Lage sind, digitale Signalverarbeitungsfunktionen auszuführen.
  • Hintergrund
  • Über die vergangenen Jahrzehnte haben es die Fortschritte in der Fertigungstechnologie für integrierte Schaltungen möglich gemacht, mikroprozessorgestützte Computersysteme bereitzustellen, die sich von großvolumigen Anwendungen bis hin zum Tischrechner und nunmehr zum Handgerät entwickelten, etwa in Form von Geräten wie persönliche digitale Assistenten (PDA's), Mobiltelefone, intelligente Telefone, Videospielen, und dergleichen. Ein klassisches Computersystem ist durch drei wesentliche Komponenten definiert: eine zentrale Recheneinheit (CPU), einen Speicher und Eingabe/Ausgabe-Peripherie-Einrichtungen. Jedoch sind nunmehr eine CPU uns selbst Speicher und einige Eingabe/Ausgabe-Schaltungen in einem einzelnen integrierten Schaltungschip zusammengefasst. Die äußerst komplexen Bauelemente, die manchmal auch als System auf einem Chip oder SOC bezeichnet werden, haben die Kosten für tragbare Geräte deutlich reduziert, wobei viele nützliche Funktionen bereitgestellt werden.
  • Gleichzeitig haben sich auch die Arten der Verarbeitungsaufgaben geändert. Früher führten Mikroprozessoren Ganzzahlarithmetik und logische Befehle an Ganzzahlen und boolsche-Daten aus. Obwohl diese Operationen weiterhin benötigt werden, sind speziellere Verarbeitungsaufgaben für gewisse Geräte ebenso nützlich. Ein Beispiel einer spezialisierten Verarbeitung ist die Gleitkommaarithmetik. Die Gleitkommaarithmetik ist nützlich in mathematisch orientierten Operationen, etwa in komplexen Graphiken. Das Ausführen einer Gleitkommaarithmetik auf Mikroprozessoren für allgemeine Zwecke, die gestaltet sind, um ganze zahlen und boolsche Daten zu verarbeiten, erfordern komplexe Softwareroutinen, und die Verarbeitung ist relativ langsam. Um dieser Forderung nachzukommen, haben Mikroprozessorentwerfer Gleitkommacoprozessoren entwickelt. Ein Coprozessor ist ein Datenprozessor, der speziell gestaltet ist, eine spezielle Aufgabe zu handhaben, um damit einen anderen Prozessor von seinen Verarbeitungsaufgaben in gewisser Weise zu entlasten, wie etwa die CPU in dem System. Gleitkommamathematikcoprozessoren, etwa der 80287 Gleitkommamathemtatikcoprozessor, der zuerst von Intel Corp. Santa Clara, Kalifornien, hergestellt wurde, waren in Tischrechnersystemen in den 80ziger Jahren üblich. Gleitkommacoprozessoren verbesserten das Computersystemleitungsverhalten, indem komplexe Gleitkommaberechnungen mit speziellen Schaltungen effizient gehandhabt wurden.
  • Handgeräte erfordern ebenso spezialisierte Verarbeitungsaufgaben. Beispielsweise werden häufig Sprachsignale im Frequenzbereich unter Anwendung digitaler Signalprozessoren (DSP) verarbeitet. Somit erscheint es natürlich, DSP-Coprozessoren zu Datenprozessoren für allgemeine Zwecke in Handgeräten hinzuzufügen.
  • Es ist auch wünschenswert, hochintegrierte SOC's in diesen Handgeräten einzusetzen, um die Anzahl der Komponenten und die Kosten zu senken. Bislang war es schwierig, DSP-Coprozessoren und CPU's für allgemeine Zwecke in SOC's gemeinsam zu verwenden. Die SOC's-Entwurfsphilosophie erfordert, dass die Schaltungsblöcke modular sind, so dass sie wieder verwendet werden können. Die CPU ist für gewöhnlich als ein „Kern" gestaltet und kann sogar mittels einer Hochsprache unter Anwendung computergestützter Gestaltungs- (CAD) Techniken zusammengesetzt werden. Jedoch erfordert ein Coprozessor komplexe Wechselwirkungen mit der Befehlsverarbeitungsabfolge bzw. der Befehlspipeline der CPU, und eine Änderung der Gestaltung der CPU, um einen DSP-Coprozessor mit aufzunehmen, zerstört die Modularität.
  • Auf Grund dieser Schwierigkeit wird in einigen Entwürfen ein separater DSP für allgemeine Zwecke zusammen mit der CPU eingesetzt. Der DSP war ähnlich zur CPU, da dieser auf seinen eigenen Speicher Zugriff hat und besaß seinen eigenen Befehlssatz und sein eigenes Betriebssystems und erforderte seinen eigenen Satz an Entwicklungswerkzeugen. Jedoch erhöhen diese Merkmale die Kosten für Handgeräte. Ferner kommunizierten die CPU und der DSP unter Anwendung eines gemeinsam benutzten Speichers, und es war ein beträchtlicher Aufwand im Hinblick auf das Übertragen von Operanden und Ergebnissen zwischen diesen beiden Bauelementen erforderlich. Somit wurden die Vorteile der DSP-Verarbeitung mit speziellen Zwecken teilweise durch die zusätzliche Komplexität und die Kosten aufgehoben.
  • Um diese Schwierigkeiten bei der Verwendung modularer Prozessorkerne in SOC-Strukturen zu überwinden, haben einige Hersteller kürzlich Prozessorkerne mit zusätzlichen „Aufhängpunkten bzw. Verknüpfungspunkten" entwickelt, die in Systemen mit optionalen Coprozessoren eingesetzt werden können. Z. B. enthält der 4KES RISC-Mikroprozessor, der von MIPS-Technologie Inc., Mountain View, Kalifornien erhältlich ist, einen speziellen Satz an Coprozessorbefehlen und eine Schnittstelle für spezielle Zwecke, um zu ermöglichen, dass Befehle und Daten zwischen dem CPU-Kern und dem Coprozessor ausgetauscht werden. Wenn der CPU-Kern einen dieser speziellen Coprozessor-Befehle decodiert, ruft er die geeigneten Operanden aus der Registerdatei ab und gibt sie zusammen mit dem Befehl über eine spezielle Schnittstelle an den Coprozessor weiter. Die Pipeline des CPU-Kerns wird angehalten, während der Coprozessor den Befehl ausführt. Wenn der Coprozessor das Ergebnis des Befehls zurückgibt, speichert der CPU-Kern das Ergebnis in der Registerdatei und fährt mit der Verarbeitung von Befehlen in der Pipeline fort.
  • Es wird daher ein Datenprozessor benötigt, der diese neue Fähigkeit von RISC-Mikroprozessorkernen ausnutzt, um kleinere SOC's mit geringerer Leistungsaufnahme bereitzustellen, die für elektronische Handgeräte und dergleichen verwendet werden können.
  • Kurzer Überblick
  • Somit wird in einem Aspekt der vorliegenden Erfindung ein Datenprozessor bereitgestellt, der einen Prozessorkern, eine Schnittstelle, die mit dem Prozessorkern gekoppelt ist und einen Coprozessor aufweist. Der Coprozessor ist mit dem Prozessorkern über die Schnittstelle verbunden und enthält einen ersten Listenspeicher. In Reaktion auf einen vorbestimmten Befehl stellt der Prozessorkern einen Operanden für den Coprozessor über die Schnittstelle bereit. Der Coprozessor speichert den Operanden in dem ersten Listenspeicher und führt eine Operation entsprechend dem vorbestimmten Befehl unter Anwendung mehrerer Werte aus dem ersten Listenspeicher aus, um ein Ergebnis bereitzustellen.
  • In einem weiteren Aspekt stellt die vorliegende Erfindung einen Coprozessor zur Verwendung in einem Datenprozessor mit einer zentralen Recheneinheit, die Befehle ausführt, bereit. Der Coprozessor enthält eine Steuerlogik, einen ersten Listenspeicher und eine arithmetische Schaltung. Die Steuerlogik ist ausgebildet, mit der zentralen Recheneinheit über eine Schnittstelle verbunden zu werden, und empfängt Befehle und Operanden über die Schnittstelle. Der erste Listenspeicher speichert mehrere Werte, wobei die Operanden mit eingeschlossen sind. Die Arithmetikschaltung ist mit dem ersten Listenspeicher gekoppelt. In Reaktion auf einen vorbestimmten Befehl bewirkt die Steuerlogik, dass die Arithmetikschaltung eine Operation entsprechend dem vorbestimmten Befehl unter Anwendung von mehreren Werten aus dem ersten Listenspeicher ausführt, um ein Ergebnis bereitzustellen.
  • In einem weiteren Aspekt stellt die vorliegende Erfindung einen Datenprozessor mit einem Prozessorkern, einer mit dem Prozessorkern gekoppelten Schnittstelle und einem mit der Schnittstelle gekoppelten Coprozessor bereit. In Reaktion auf einen ersten vorbestimmten Befehl liefert der Prozessorkern über die Schnittstelle einen Befehl und einen Operandenwert an den Coprozessor, und der Coprozessor initiiert eine erste vorbestimmte Operation gemäß dem ersten vorbestimmten Befehl. In Reaktion auf einen zweiten vorbestimmten Befehl liefert der Coprozessor das Ergebnis an die Schnittstelle bei Beendigung der ersten vorbestimmten Operation.
  • In einer noch weiteren Ausführungsform stellt die vorliegende Erfindung ein Datenverarbeitungssystem mit einer zentralen Recheneinheit, einem mit der zentralen Recheneinheit gekoppelten Speicher zum Speichern mehrerer Operanden, einer mit der zentralen Recheneinheit gekoppelten Schnittstelle und einem mit der Schnittstelle gekoppelten Coprozessor bereit. Der Coprozessor enthält einen ersten Listenspeicher. In Reaktion auf einen vorbestimmten Befehl liefert die zentrale Recheneinheit über die Schnittstelle einen Operanden an den Coprozessor. Der Coprozessor speichert den Operanden in dem ersten Listenspeicher und führt eine Operation entsprechend den vorbestimmten Befehl unter Anwendung mehrerer Werte aus dem ersten Listenspeicher aus, um ein Ergebnis bereitzustellen.
  • In einer noch weiteren Ausführungsform stellt die vorliegende Erfindung ein Verfahren zum effizienten Betreiben eines Datenverarbeitungssystems bereit. Ein Operand wird in ein Register einer zentralen Recheneinheit in Reaktion auf einen ersten Befehl eingeladen. Der Operand wird aus dem Register an eine Schnittstelle in Reaktion auf einen zweiten Befehl weitergeleitet. Der Operand wird in einem ersten Listenspeicher des Coprozessors in Reaktion auf den zweiten Befehl gespeichert. Es wird eine vorbestimmte Operation, die dem zweiten Befehl entspricht, in dem Coprozessor unter Anwendung mehrerer Werte aus dem ersten Listenspeicher ausgeführt, um ein Ergebnis bereitzustellen.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Offenbarung kann besser verstanden werden und deren zahlreichen Merkmale und Vorteile werden für den Fachmann durch Bezugnahme auf die begleitenden Zeichnungen verständlich, in denen gleiche Bezugszeichen gleiche oder identische Komponenten bezeichnen.
  • 1 zeigt eine Blockansicht eines Datenverarbeitungssystems gemäß dem Stand der Technik;
  • 2 zeigt in einer Blockansicht ein Datenverarbeitungssystem gemäß der vorliegenden Erfindung;
  • 3 zeigt eine Blockansicht den RISC-Prozessorkern aus 2;
  • 4 zeigt in Blockansicht das Format der Coprozessorbefehle, das von dem RISC-Prozessorkern aus 3 verwendet wird; und
  • 5 zeigt in Blockform den DSP-Listencoprozessor aus 2.
  • Beschreibung der bevorzugten Ausführungsform(en)
  • 1 zeigt in Blockansicht ein Datenverarbeitungssystem 100, wie es im Stand der Technik bekannt ist. Das Datenverarbeitungssystem 100 umfasst einen Mikroprozessor mit reduziertem Befehlssatz (RISC) 102, der die zentrale Recheneinheit (CPU) des Systems 100 bildet. Der RISC-Mikroprozessor 102 ist mit einem flüchtigen Hochgeschwindigkeitsspeicher in Form eines Speichers mit wahlfreiem Zugriff (RAM) 104 und mit einem nicht-flüchtigen Speicher mit geringer Geschwindigkeit (NVM) 106 verbunden, der in Form eines maskierten Nur-Lese-Speichers (ROM), eines Flash-elektrisch löschbaren programierbaren Nur-Lese-Speichers („Flash") oder dergleichen vorgesehen sein kann. Das System 100 umfasst ferner Eingabe/Ausgabe-Einrichtungen, die mit dem RISC-Mikroprozessor 102 direkt oder über Eingabe/Ausgabe-Adapter, die in 1 nicht gezeigt sind, verbunden sind.
  • Um eine spezialisierte Verarbeitung auszuführen, die für Handgeräte, etwa einen PDA, ein Mobiltelefon, ein mobiles Videospielsystem und dergleichen erforderlich ist, enthält das System 100 einen digitalen Signalprozessor für allgemeine Zwecke (DSP) 110 mit seinem eigenen RAM 112 und NVM 114 für die Datenspeicherung und Programmspeicherung. Um Aufgaben und Ergebnisse zwischen dem RISC-Mikroprozessor 102 und dem DSP 110 auszutauschen, umfasst das System 100 einen gemeinsam benutzten Speicher 108.
  • Es gibt mehrere Nachteile des Computersystems 100, wenn es für kostengünstige Handgeräte verwendet wird. Erstens, der RISC-Mikroprozessor 102 und der DSP 110 sind separate Chips, wodurch die Systemkosten ansteigen. Zweitens, jeder Prozessor erfordert seinen eigenen separaten Speicher, wodurch die Chipzahl und damit die Kosten höher werden. Drittens, da jeder Prozessor seinen eigenen Befehlssatz besitzt, erfordert jeder Prozessor seinen eigenen separaten Aassembler, Compiler und Entwicklungswerkzeuge, wodurch die Komplexität ansteigt und die Zeitdauer für die Vermarktung höher wird.
  • 2 zeigt in Blockform ein Datenverarbeitungssystem 200 gemäß der vorliegenden Erfindung. Das Datenverarbeitungssystem 200 umfasst einen RISC-Prozessorkern 300, einen Speicher 204 mit einem RAM 205 und einem NVM 206, einer Schnittstelle 210 und einem speziellen DSP-Listencoprozessor 500. Wie zuvor kann der NVM 206 die Form eines Masken-ROM's, eines Flash-EEPROM's, etc. annehmen. In der beispielhaften Ausführungsform sind der RISC-Prozessorkern 300, die Schnittstelle 210 und der DSP-Listencoprozessor 500 in einer einzelnen integrierten Schaltung kombiniert. Anders als der RISC-Prozessorkern 102 in 1 ist der RISC-Prozessorkern 300 so ausgebildet, dass er mit anderen Systemkomponenten mit Coprozessoren integriert wird. Folglich enthält der RISC-Prozessorkern 300 die spezielle Fähigkeit, Coprozessorbefehle zu erkennen, die von dem Anwender definiert sind, und diese speziellen Befehle zu einem Coprozessor über die Schnittstelle 210 weiterzuleiten. In der dargestellten Ausführungsform ist der RISC-Prozessorkern 300 ein Kern, der mit der 4KES-Prozessorkernfamilie kompatibel ist, die von MIPS Technologies, Inc., Mountain View, Kalifornien, erhältlich ist, aber es kann auch ein äquivalenter Prozessorkern mit ähnlicher Funktionsweise verwendet werden.
  • Die Schnittstelle 210 ist der Wechselwirkungspunkt zwischen dem RISC-Prozessorkern 300 und dem DSP-Listencoprozessor 500. Eine Wechselwirkung wird über Signalleitungen für den Datentransfer zwischen diesen Prozessoren und zur Steuerung der Schnittstelle erreicht. In Folgenden werden entsprechende Signalleitungen beschrieben, aber es sollte klar sein, dass diese nur beispielhafte Leitungen repräsentieren. Eine Gruppe aus 32 Signalleitungen 212, die als „Befehl" bezeichnet sind, entsprechen einem oder mehreren Befehlen in dem Befehlssatz des RISC-Prozessorkerns 202. Im Falle des 4KES-Kerns sind einige Befehle, die früher reserviert waren, nunmehr zur Verwendung mit dem Coprozessor vorgesehen. Diese Befehle, die als anwenderdefinierte Schnittstellen- (UDI) Befehle bezeichnet werden, nehmen einen Bereich des Befehlsfeldes ein, der diese als einen UDI-Befehl kennzeichnet, und diese nehmen einen weiteren Bereich des Befehlsfeldes ein, der die Art der auszuführenden Operation angibt. Der RISC-Prozessorkern 300 verwendet das Feld „Befehl bzw. „Instruction", um zumindest die Art des UDI-Befehls anzugeben, der zu dem DSP-Listencoprozessor 500 gesendet wird. Somit kann das Feld „Befehl" identisch zu dem RISC-Prozessorkernbefehl sein, kann jedoch eine geringere Anzahl an Bits enthalten, solange eine ausreichende Anzahl vorhanden ist, um den Befehl zu identifizieren. Ferner kann das Feld „Befehl" den Befehl in anderer Weise als den Befehl codieren, wie er von dem RISC-Prozessorkern 300 erkannt wird.
  • Die Schnittstelle 210 überträgt bis zu zwei Operanden an den DSP-Listencoprozessor 500 unter Anwendung einer ersten Gruppe aus 32 Signalleitungen, um einen ersten Operanden, der als „rs" bezeichnet ist, zuzuführen, und verwendet eine zweite Gruppe aus 32 Signalleitungen, um einen zweiten Operanden, der als „rt" benannt ist, zu übertragen. Eine oder beide Gruppen aus Signalleitungen ist unter Umständen für einige UDI-Befehle nicht erforderlich.
  • Die Schnittstelle 210 enthält eine Gruppe aus Signalleitungen 218 zum Übertragen eines 32-Bit-Ergebnisoperanden, der als „rd" bezeichnet ist, durch welchem der DSP-Listencoprozessor 500 das Ergebnis des Befehls an den RISC-Prozessorkern 300 zurückgibt.
  • Die Schnittstelle 210 umfasst ferner einen Steuerbus, der als „Steuerung bzw. Control" 220 bezeichnet ist, um mehrere Steuersignale zu übertragen, die die Betriebsweise der Schnittstelle 210 steuern.
  • Der RISC-Prozessorkern 300 und der DSP-Listencoprozessor 500 sind zusammen mit anderen Eingabe/Ausgabe-Einrichtungen, die in 2 nicht gezeigt sind, in einem SOC integriert. Der RISC-Prozesssorkern 300 kann mit dem DSP-Listencoprozessor 500 in Verbindung treten, ohne dass seine Pipeline auf Grund der Verfügbarkeit des UDI modifiziert wird.
  • Das System 200 enthält lediglich ein einzelnes Speichersystem 204, ohne dass ein zusätzlicher Speicher erforderlich ist, der dem DSP-Coprozessor 500 zugeordnet ist, oder ein Kommunikationsspeicher zwischen dem RISC-Prozessorkern 300 und dem DSP-Listencoprozessor 500 erforderlich ist. Der Austausch von Operanden geschieht wie folgt. Der RISC-Prozessorkern 300 liest zunächst Daten in eines seiner Register für Allgemeinzwecke in Reaktion auf einen Verschiebe- bzw. „Move"-Befehl ein. Die Daten können in dem Speicher 204 vorhanden sein oder können von einem Eingabe/Ausgabe-Gerät (in 2 nicht gezeigt) empfangen werden. Anschließend führt der RISC-Prozessorkern 300 einen UDI-Befehl aus, der die Daten zu dem DSP-Listencoprozessor 500 verschiebt. Der DSP-Coprozessor 500 enthält seinen eigenen Listenspeicher, um viele unterschiedliche Arten an DSP-Aufgaben ausführen zu können, ohne dass separate Speicherzugriffe erforderlich sind. Ferner bewahrt auf Grund des sequenziellen Natur vieler DSP-Routinen der DSP-Listencoprozessor 500 Werte und aktualisiert diese, wenn ein Befehl empfangen wird, wobei nur minimaler Aufwand beim Eingreifen von dem RISC-Prozessorkern 300 erforderlich ist, und wobei zusätzliche Bearbeitungskapazität freigesetzt wird. Der DSP-Coprozessor 500 gibt das Ergebnis über rd-Signalleitungen 218 zurück, und der RISC-Prozesskern 300 speichert das Ergebnis in dem Register, das von dem durch den UDI-Befehl definierten rd-Feld angegeben ist.
  • Um eine effiziente DSP-Verarbeitung ohne zusätzliche Speicherstrukturen zu erreichen, enthält der DSP-Listencoprozessor 500 einen internen Listenspeicher, der eine Liste aus Datenwerte enthält, die für viele DSP-Befehle und zugehörige Befehle erforderlich sind. Wenn gewisse UDI-Befehle angetroffen werden, speichert der DSP-Listencoprozessor 500 einen neuen Operandenwert in dem Listenspeicher und führt den Befehl unter Verwendung dieses Wertes und anderer Werte, die bereits in dem Listenspeicher enthalten sind, aus. In anderen Ausführungsformen wird jedoch der tatsächlich übertragene Wert nicht für die aktuelle Berechnung verwendet, sondern wird nur für eine spätere Verwendung gespeichert.
  • Obwohl dies nicht eigentlich in dem DSP-Listencoprozessor 500 eingerichtet ist, kann diese Technik für andere Berechnungen mit speziellem Zweck verwendet werden. Z. b. erfordern einige Datenkommunikationsaufgaben das Berechnen einer Blockprüfsequenz in Form einer zyklischen Redundanzprüfung (CRC). Es gibt mehrere bekannte CRC-Polynome, wobei diese alle das Polynom auf eine Reihe von Datenproben anwenden, um eine Zahl zu ermitteln. Der Listenspeicher könnte verwendet werden, die Geschichte der Datenproben zu speichern, für die eine laufende CRC berechnet ist. Ferner kann das spezielle CRC-Generatorpolynom im Voraus ermittelt werden oder kann zuvor mittels anderer Befehle programmiert werden. In ähnlicher Weise kann der DSP-Listencoprozessor 500 so modifiziert werden, dass der Listenspeicher effizient als Teil einer Polynombewertung für Allgemeinzwecke verwendet wird.
  • 3 zeigt in Blockansicht den RISC-Prozessorkern 300 aus 2. 3 zeigt die Details des RISC-Prozessorkerns 300, die für ein Verständnis der vorliegenden Erfindung wichtig sind, wobei andere konventionelle Merkmale weggelassen sind. Der RISC-Prozessorkern 300 umfasst eine Registerdatei 302 für Allgemeinzwecke. Die Registerdatei für Allgemeinzwecke 302 enthält 32 Register, wobei jedes 32 Bits breit ist, die der Reihe nach „r0", „r1", „r2", etc. bis „r31" bezeichnet sind. Des weiteren enthält der RISC-Prozessorkern 300 ein Konfigurationsregister 304 mit einem Bit 306, das als „UDI" bezeichnet ist und verwendet wird, um die anwenderdefinierte Schnittstelle zu aktivieren oder zu deaktivieren. Sowohl das UDI-Bit 306 als auch die Register in der Registerdatei 302 sind für eine Ausführungseinheit 308 zugänglich, die Befehle in dem Befehlsrepertoire gemäß einem Softwareprogramm ausführt.
  • Eine Klasse an Befehlen ist der Satz aus UDI-Befehlen. In Reaktion auf das Empfangen eines UDI-Befehls – wenn UDI-Befehle durch das UDI-Bit 306 aktiviert sind – sendet die Ausführungseinheit 308 ein Feld, das den Befehl und die erforderlichen Registerwerte angibt, als Operanden an eine UDI-Schnittstellensteuerung 310. Die UDI-Schnittstellensteuerung 310 steuert dann den Austausch von Werten zwischen dem RISC-Prozessorkern 300 und dem DSP-RISC-Coprozessor 500 über die UDI-Schnittstelle 210.
  • Wenn die Ausführungseinheit 308 durch das UDI-Bit 306 aktiviert ist, decodiert sie einen UDI-Befehl und führt diesen aus, wie in 4 gezeigt ist, wobei das Format eines Coprozessorbefehls 400 gezeigt ist, das von dem RISC-Prozessorkern 300 aus 3 verwendet wird. Der Befehl 400 ist ein 32-Bit-Befehl mit 7 Feldern 402, 404, 406, 308, 410, 412 und 414 aus diversen Bitlängen. Die Bits 3 bis 0 enthalten ein Feld 402, das als Feld „Setzen der Kodierung bzw. Set Code" bekannt ist. Das Feld „Setzen der Codierung" kennzeichnet die wesentlichen Arten an UDI-Befehlen, einschließlich von Alu-Operationen, MAC-Operationen, Listenoperationen (wie nachfolgend detaillierter beschrieben werden), „verschieben zu und erhalten von" – Operationen und erweiterten Alu-Operationen.
  • Bits 5 und 4 enthalten ein Feld 404, das als das „Block"-Feld bekannt ist. Das Block-Feld 404 ist stets auf 01 für den DSP-Listencoprozessor 500 festgelegt.
  • Die Bits 10 bis 6 enthalten ein Feld 406, das als das Feld „Teilkodierung bzw. Subset Code" bekannt ist. Das Feld „Teilkodierung" 406 definiert spezielle Operationskodierungen (opcode), die von dem DSP-Listenkoprozessor 500 erkannt werden, und hat unterschiedliche Bedeutungen in Abhängigkeit von dem Wert des „Setzen der Kodierung" Felds 402.
  • Die Befehle für die meisten Werte von „Setzen der Kodierung" veranlassen den DSP-Listencoprozessor 500, konventionelle Datenverarbeitungsoperationen auszuführen. Jedoch ist der DSP-Listencoprozessor 500 in der Lage, einen speziellen Satz aus Operationen auszuführen, die als Listenoperationen bekannt sind, wobei die sequenzielle Natur vieler DSP-Operationen vorteilhaft ausgenutzt wird. Wenn daher das Feld „Setzen der Kodierung" 402 eine Listenoperation bezeichnet, besitzt das Feld „Teilkodierung" 406 Dekodierungen, die in Tabelle 1 gezeigt sind.
  • Tabelle 1
    Figure 00110001
  • Tabelle 2 zeigt die Operanden, die zwischen dem RISC-Prozessorkern 300 und dem DSP-Listenkoprozessor 500 während der Listenbefehle ausgetauscht werden: Tabelle 2
    Figure 00120001
    wobei "X" ein "beliebig" repräsentiert und "mehrere" angibt, dass die Anzahl der Zyklen von der Anzahl an Elementen in (d. h. der Länge von) den Listen im X-Speicher 524 und/oder im Y-Speicher 522 abhängt.
  • Die Bits 31 bis 26 bilden ein Befehlsfeld 414 mit dem binären Wert „011100", um ein sogenanntes „Spezial 2" Befehlsformat anzugeben, das anzeigt, wenn das Block-Feld ebenso den Wert 01 aufweist, dass der Befehl ein UDI-Befehl ist, der für den DSP-Listencoprozessor 500 gedacht ist.
  • Die verbleibenden Bit-Felder enthalten Operandenregisterzuweisungen, wovon jede 5 Bits lang ist, um eines der 32 Register für Allgemeinzwecke auszuwählen. Die Bits 25 bis 21 enthalten ein erstes Quellenoperandenidentifizierfeld 412, das als „rs" bezeichnet ist. Die Bits 20 bis 16 enthalten ein zweites Quellenoperandenidentifizierfeld 410, das als „rt" bezeichnet ist. Die Bits 15 bis 11 enthalten ein Zieloperandenidentifizierfeld 408, das als „rd" bezeichnet ist. Ob diese Felder verwendet werden, hängt von der Befehlsart ab.
  • 5 zeigt in Blockansicht den DSP-Listencoprozessor 500 aus 2. Der DSP-Listencoprozessor 500 enthält im Wesentlichen eine Steuer- und Sequenzierlogik 512, einen Listenspeicher 520 und eine arithmetisch-logische Einheit (ALU) 530. Die Steuer- und Sequenzierlogik 510 verwaltet die UDI-Schnittstelle 210 und decodiert Befehle, die von dem Befehlsfeld gekennzeichnet sind. Sie bewahrt ferner Zeiger in dem Listenspeicher 520. Diese Zeiger enthalten sowohl einen Kopfzeiger als auch einen Endbereichzeiger jeweils für einen „Y"-Speicher 522 und einen „X"-Speicher 524. Daher gibt die Steuer- und Sequenzierlogik 510 einen Y-Kopfzeiger, der als „YH" bezeichnet ist, einen Y-Endbereichzeiger, der als „YT" bezeichnet ist, einen X-Kopfzeiger, der als „XH" bezeichnet ist, und einen X-Endbereichszeiger, der als „XT" bezeichnet ist, aus. Wie nachfolgend beschrieben ist, definieren der Kopfzeiger und der Endbereichszeiger die Startadresse und die Endadresse der sequenziellen Listen aus Werten. Die Steuer- und Sequenzierlogik 510 gibt ferner eine Adresse für eine Indexbezeichnung in die Liste in dem Y-Speicher 522, die als „Adresse A" bezeichnet ist, eine Adresse für den Index der Liste in dem X-Speicher 524, die als „Adresse B" bezeichnet ist, einen Datenwert, der in dem Y-Speicher zu speichern und als „Data Y" bezeichnet ist, und einen Datenwert, der in dem X-Speicher zu speichern ist und als „Data X" bezeichnet ist, aus.
  • Der Listenspeicher 520 enthält sowohl den Y-Speicher 522 als auch den X-Speicher 524, wobei jeder 16-Bit-Werte speichert. Zum Zwecke des Ausführens einer einzelnen speziell nützlichen DSP-Operation, d. h. eine Filterberechnung mit begrenzter Impulsantwort (FIR), entsprechende Werte in dem X-Speicher 524 den Koeffizienten des Filters und die Werte in dem Y-Speicher 522 entsprechen den Datenproben bzw. den Datenwerten.
  • Die ALU 530 enthält Register 532 und 534, einen Multiplexer (MUX) 540, Multiplizier- und Akkumulier- (MAC) Einheiten 542 und 544 und eine Korrekturlogik 546. Das Register 532 ist mit dem Ausgang des Y-Speichers 522 verbunden und besitzt sowohl einen „A"-Bereich als auch einen „B"-Bereich zum Speichern von oberen und unteren Bytes eines 16-Bit-Wortes an Daten, die von dem Y-Speicher 522 ausgegeben werden. In ähnlicher Weise ist das Register 534 mit dem Ausgang des X-Speichers 524 verbunden und besitzt einen „C"-Bereich und einen „D"-Bereich zum jeweiligen Speichern von oberen und unteren Bytes eines 16-Bit-Wortes aus Daten, die von dem X-Speicher 524 ausgegeben werden. Der MUX 540 besitzt Eingänge, die mit Ausgängen der A, B, C und C-Register verbunden sind, und besitzt 4 Ausgänge. Der MUX 540 ist ein voller 4 × 4-MUX, der beim Ausführen gepackter arithmetischer Operationen vorteilhaft ist, wie nachfolgend detaillierter erläutert ist. Der MAC 542 besitzt einen ersten und einen zweiten Eingangsanschluss, die mit einem ersten und einem zweiten Ausgangsanschluss des MUX 540 verbunden sind, und besitzt ferner einen 40-Bit-Ausgangsanschluss. Der MAC 544 besitzt einen ersten und einen zweiten Eingangsanschluss, der mit dem dritten und dem vierten Ausgangsanschluss von dem MUX 540 verbunden sind, und weist ferner einen 40-Bit-Ausgangsanschluss auf. Wie nachfolgend detaillierter beschrieben ist, besitzen die MAC 542 und 544 jeweils auswählbare Sättigungsmodi, um unterschiedliche Sättigungsannahmen für zwei gut bekannte Arten der Signalverarbeitung zu ermöglichen.
  • Die ALU 530 enthält eine Korrekturlogikschaltung 546 mit einem ersten Eingangsanschluss, der mit dem Ausgangsanschluss des MAC 542 verbunden ist, einem zweiten Eingangsanschluss, der mit dem Ausgangsanschluss des MAC 544 verbunden ist, und einem Ausgangsanschluss, der mit der Schnittstelle 210 zum Bereitstellen des rd-Werts verbunden ist. Insbesondere enthält die Korrekturlogik 546 einen Akkumulator mit einem unteren 16-Bit-Bereich 548, der als „ACC0" bezeichnet ist, und einen oberen 16-Bit-Bereich 550, der als „ACC1" bezeichnet ist. Die Akkumulatorbereiche 548 und 550 sind als separate Bereiche dargestellt, da diese separate Ergebnisse speichern, wenn gepackte Operationen ausgeführt werden. Wenn jedoch eine volle 32-Bit Arithmetikfunktion ausgeführt wird, wird der untere Bereich des Ergebnisses in dem Akkumulator 548 gespeichert und der obere Bereich wird über dem Akkumulator 550 gespeichert. Die Korrekturschaltung 546 führt eine Normierung, Skalierung, Rundung und Sättigung durch, wie dies durch den Befehl definiert ist.
  • Bei Betrachtung der 4 und 5 zusammen wird deutlich, dass das Datenverarbeitungssystem 200 mehrere Coprozessbefehle ausführt, die als ein Teil einer effizienten Signalverarbeitung für Routinen verwendet werden können. Der erste Befehl ist ein Befehl mit einem sogenannten Skalarprodukt. Ein Skalarproduktbefehl multipliziert jeden der Werte in einer ersten Liste mit entsprechenden Werten in einer zweiten Liste und summiert die Produkte. Somit kann beispielsweise der DSP-Listencoprozessor 500 effizient eine FIR-Filterberechnung mit minimaler Unterbrechung des Betriebs des RISC-Prozessorkerns 300 ausführen. Eine Kodierung, die von dem RISC-Prozessorkern 390 abgearbeitet wird, führt einen Befehl aus, beispielsweise die MTYH_REAL32-Anweisung, die eine neue Datenprobe bzw. einen neuen Datenwert zu der Liste hinzufügt, die in dem Y-Speicher 522 bewahrt wird und beginnt die Operation für das Skalarprodukt. Der DSP-Listencoprozessor 500 fügt zuerst die Datenprobe der Liste hinzu, indem der Kopfzeiger YH erhöht wird und speichert die Datenprobe dort und entfernt die älteste Datenprobe, indem der Endbereichszeiger YT hochgesetzt wird. Danach liest der Coprozessor einen Koeffizienten aus dem X-Speicher 524 und eine entsprechende Datenprobe aus dem Datenspeicher 522 unter Anwendung der Adressenzeigeradresse B und Adresse A aus und speichert diese in den Registern 522 und 534. Der MUX 540 leitet die Operanden zu einer der MAC-Einheiten 542 und 544 weiter, in denen die Multiplikation stattfindet. Die Sequenz geht weiter für die verbleibenden Koeffizienten- und Datenwerte in der Liste, bis der Wert, "LENGTH" erreicht ist. Danach wird das Ergebnis der Korrekturlogik 546 für eine geeignete Rundung und Sättigung zugeführt. Durch Beibehalten von Listenspeichern in dem DSP-Listencoprozessor 500 ist es in dem Datenprozessor 200 in einfacher Weise möglich, den RISC-Prozessorkern 300 und den DSP-Listencoprozessor 500 in einer Weise zu integrieren, die nur wenige externe Speicherzugriffe erfordert. Ferner kann das Zuführen des neuen Operanden, der der Liste hinzuzufügen ist und das Beginnen der Berechnung einer neuen Kalkulation gleichzeitig beginnen.
  • Ein wichtiges Merkmal des Systems 200 besteht darin, dass der DSP-Listencoprozessor 500 in der Lage ist, auf einen einzelnen Befehl zu reagieren, etwa MTYH_REAL32, um die Skalarproduktberechnung zu beginnen und um auf einen weiteren Befehl, etwa MFXH1, zu reagieren, um damit das Ergebnis abzurufen und dieses in dem Register für Allgemeinzwecke zu speichern. Somit kann ein Software-Compiler den RISC-Mikroprozessorkern 300 veranlassen, eine sinnvolle Verarbeitung fortzusetzen, während der DSP-Listencoprozessor 500 die lange Skalarproduktberechnung ausführt. Der anfängliche Befehl (MTYH_REAL32) darf die Pipeline nicht unterbrechen, wohingegen der am Ende liegende Befehl (MFXH1) die Pipeline unterbrechen darf, wenn das Ergebnis noch nicht bereit ist. Somit kann ein effizienter Compiler beide Befehle verwenden, um eine Verschwendung von Taktzyklen, die mit der Coprozessorverarbeitungszeit verknüpft ist, zu vermeiden.
  • Ein weiteres wichtiges Merkmal besteht darin, dass der DSP-Listencoprozessor 500 zwei separate MAC enthält, die jeweils ausgewählt werden können, um unterschiedliche Rundungs- und Sättigungsannahmen zu berücksichtigen. Eine davon ist ein 32-Bit-Sättigungsmodus, der als ETSI- (europäisches Telekommunikationsstandardinstitut) Arithmetik bekannt ist. In dem 32-Bit-Sättigungsmodus führt der DSP-Listencoprozessor 500 eine Sättigung von Teilergebnissen bei 32-Bits aus. Ein weiterer Modus ist ein 40-Bit-Sättigungsmodus. In dem 40-Bit-Sättigungsmodus sammelt der DSP-Listencoprozessor 500 Teilergebnisse in einem 40-Bit-Akkumulator und führt eine Sättigung lediglich bei der endgültigen Summe auf 32-Bits am Ende der Berechnung aus. Diese beiden Techniken führen manchmal zu unterschiedlichen Ergebnissen, und der DSP-Listencoprozessor 500 bewahrt die Bitgenauigkeit für jeden dieser beiden Algorithmen. In anderen Ausführungsformen können auch zusätzliche auswählbare Rundungs- und Sättigungsmodi des DSP-Listencoprozessors 500 unterstützt werden. Diese auswählbaren Modi können einen weiten Bereich an mathematischen Darstellungen, die nicht notwendigerweise linear sind, unterstützen, was für Anwendungen, etwa Gaphiktransformationen, Bildverarbeitungen und Kryptographie vorteilhaft sein kann.
  • Ein noch weiteres wichtiges Merkmal ist der sogenannte serielle MAC-Modus. In vielen DSP-Algorithmen folgt auf einen MAC-Befehl unmittelbar ein weiterer MAC-Befehl. Unter solchen Bedingungen kann es vorteilhaft sein, dass die MAC-Ergebnisse bei 32 Bits sättigen, anstatt dass die nicht gesättigten 40-Bit-Ergebnisse des ersten MAC-Befehls mit dem ungesättigten 40-Bit-Ergebnis des zweiten MAC-Befehls kombiniert werden. Der DSP-Listencoprozessor 500 stellt in effizienter Weise diese Art an Betriebsweise unter Anwendung eines dualen Multiplizier-Akkumulier- (DMAC) Befehls bereit. Die Korrekturlogik 546 kombiniert zwei 40-Bit-Ergebnisse von den MAC-Einheiten 542 und 544, das Ergebnis in 32 Bit in sättigender Weise dargestellt wird.
  • Das Vorsehen zweier MAC-Einheiten ermöglicht es dem DSP-Listencoprozessor 500, effizient gepackte arithmetische Funktionen auszuführen. Beispielsweise können die Operan den als zwei 16-Bit-Operanden oder als vier 8-Bit-Operanden behandelt werden. Die beiden MAC-Einheiten erlauben gleichzeitig zwei unabhängige Multiplikationen.
  • Ferner umfasst der DSP-Listencoprozessor 500 eine vollständige komplementäre Anordnung von Befehlen, wozu standardmäßige ALU- und Operandenverschiebebefehle gehören, die auch für die speziellen Listenoperationen und gepackten arithmetischen Operationen vorteilhaft sind. Um die Länge der Listen festzulegen, kann ein Befehl „Verschieben in Längenregister (MTL)" verwendet werden, um einen Wert auf den rd-Signalleitungen zu einem internen Längen-Register zu verschieben.
  • Somit wird ein Datenprozessor beschrieben, der in effizienter Weise eine Signalverarbeitung ausführt. Der Datenprozessor liefert viele Vorteile gegenüber bekannten Datenprozessoren. Erstens, bietet er die Fähigkeiten eines RISC-Prozessors für Allgemeinzwecke, wozu eine Speicherverwaltung in einem einzelnen großen Speicherbereich gehört, eine große Gruppe aus Registern für Allgemeinzwecke, Befehle für Allgemeinzwecke, eine Harvard-Architektur des RISC-Prozessors, und eine Ablaufsteuerung.
  • Zweitens, durch Einbinden eines Coprozessors für spezielle Zwecke mit einer speziellen Schaltung für DSP-Operationen führt der Datenprozessor DSP-Funktionen effizienter aus, während weniger Leistung verbraucht wird.
  • Drittens, da keine speziellen Abholbefehle, Speicherbefehle, Konflikte, Ausnahmensituationen, etc. in der Maschine auftreten, unterbricht der DSP-Listencoprozessor die RISC-Pipeline-Verarbeitung nicht.
  • Viertens, durch Vorsehen zweier abwechselnder MAC-Einheiten mit unterschiedlicher Größe ermöglicht es der Datenprozessor, dass ein Programmierer die Bitgenauigkeit von DSP-Algorithmen beibehält, unabhängig davon, ob ETSI-Standardberechnungen oder AMD-artige Berechnungen verwendet werden.
  • Fünftens, der Datenprozessor unterstützt die sehr fortgeschrittenen Compiler-Technologien, die für den RISC-Prozessorkern vorhanden sind, wobei Makros auf tiefer und hoher Ebene bereitgestellt werden, die zusammen als Assembler- oder C-Sprachen-Codierung eingebunden werden können.
  • Sechtens, der DSP-Listencoprozessor enthält einen relativ kleinen lokalen Listenspeicher zum Speichern von Operanden, die häufig in DSP-Operationen verwendet werden. Der Datenprozessor kann diese Operanden einmal von dem Hauptspeicher bei hohem Energieaufwand abrufen, und diese dann wiederholt in dem DSP-Listencoprozessor mit relativ geringer Leistung verwenden.
  • Siebtens, da sowohl Start- als auch Endbefehle für längliche DSP-Operationen verfügbar sind, ermöglicht der Datenprozessor, dass die Pipeline der CPU weiterhin parallel zu der DSP-Listencoprozessorpipeline abgearbeitet wird, wobei die Pipeline der CPU nur zu einem späteren Zeitpunkt unterbrochen wird, wenn das Ergebnis noch nicht verfügbar ist.
  • Achtens, der DSP-Listencoprozessor besitzt eine skalierbare ALU. In der dargestellten Ausführungsform enthält der DSP-Listencoprozessor zwei MAC-Einheiten, wobei allerdings die Anzahl der MAC-Einheit verringert oder auf eine größere Zahl angehoben werden kann, etwa auf vier, um den unterschiedlichen Designkompromissen Rechnung zu tragen.
  • Neuntens, der Datenprozessor verwendet eine listengestützte Speicherarchitektur, die speziell für DSP-Operationen, etwa FIR-Filter und Konvolution effizient ist. Diese Architektur ermöglicht ein großes Maß an Wiederverwendung des internen Listenspeichers und verringert die Notwendigkeit, neue Daten aus dem Hauptspeicher einzuladen, woraus sich Einsparungen in der Leistungsaufnahme und Verbesserungen in der Verarbeitungseffizienz ergeben.
  • Zehntens, der DSP-Listencoprozessor unterstützt unterschiedliche Operandenlängen und Formate, wodurch nützliche DSP-Berechnungen effizient ausgeführt werden können. Somit kann beispielsweise der DSP-Listencoprozessor ein einzelnes reelles Skalarprodukt, zwei parallele Skalarprodukte, oder ein einzelnes komplexe Skalarprodukt berechnen.
  • Elftens, der Datenprozessor kann in vorteilhafter Weise gepackte arithmetische Operationen unterstützten. Somit nutzt der Datenprozessor vorteilhafter Weise eine bestehende 32-Bit-Registerschnittstelle aus, um zu ermöglichen, dass der DSP-Listencoprozessor gleichzeitig zwei DSP-Variablen mit einer Größe von 16 Bits (entweder zwei reelle Zahlen oder eine komplexe Zahl) in den Listenspeicher des DSP-Listencoprozessors einlädt.
  • Zwölftens, die Architektur des Datenprozessors unterstützt eine Kontextumschaltung in einfacher Weise mittels des Aufbaus mit dem Listenspeicher. Somit ist die Architektur erweiterbar, um mehrerer Grundtexte in Hardware zu unterstützen, um damit den normalen Aufwand zu vermeiden, der mit bestehender Kontextumschaltung verknüpft ist.
  • Dreizehntes, der Datenprozess optimiert ferner das Gesamtleistungsverhalten des RISC-Prozessorkerns im Hinblick auf die Verarbeitungszeit und die Leistungsaufnahme, indem ein ausgiebiger Satz an Befehlen bereitgestellt wird, die von dem DSP-Listencoprozessor zum Ausführen nützlicher Funktionen ausgeführt werden. Zu Beispielen derartiger Funktionen gehören das Einhüllen einer Adresse in einem spezifizierten Bereich und das Berechnen eines Autokorrelationsarrays aus einem Eingangsarray, das in die Listen eingeladen wird, die intern in dem DSP-Listencoprozessor vorgesehen sind. Es ergeben sich auch viele andere nützliche Funktionen für den Fachmann auf Grund der Beschreibung des obigen Befehlssatzes.
  • Obwohl zumindest eine beispielhafte Ausführungsform in der vorhergehenden detaillierten Beschreibung angegeben ist, sollte beachtet werden, dass eine große Anzahl an Modifizierungen möglich ist. Es sollte auch beachtet werden, dass die beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen lediglich Beispiele sind und nicht beabsichtigen, den Schutzbereich, die Anwendbarkeit oder die Konfiguration der Erfindung in irgendeiner Weise zu beschränken. Vielmehr soll die vorhergehende detaillierte Beschreibung den Fachmann auf dem Gebiet mit einer effiziente Anleitung zum Implementieren der beispielhaften Ausführungsform oder der beispielhaften Ausführungsformen ausstatten. Es sollte beachtet werden, dass diverse Änderungen an der Funktion und dem Aufbau von Elementen ausgeführt werden können, ohne vom Schutzbereich der Erfindung abzuweichen, wie sie in den angefügten Patentansprüchen und deren Äquivalenten dargelegt ist.
  • Zusammenfassung
  • Ein Datenprozessor (200) enthält einen Prozessorkern (300), eine Schnittstelle (210), die mit dem Prozessorkern (300) verbunden ist, und einen Coprozessor (500). Der Coprozessor (500) ist mit dem Prozessorkern (300) über die Schnittstelle (210) verbunden und umfasst einen ersten Listenspeicher (522). In Reaktion auf einen vorbestimmten Befehl stellt der Prozessorkern (300) einen Operanden für den Coprozessor (500) über die Schnittstelle (210) bereit. Der Coprozessor (500) speichert den Operanden in dem ersten Listenspeicher (522) und führt eine Operation, die dem vorbestimmten Befehl entspricht, unter Anwendung mehrerer Werte aus dem ersten Listenspeicher (522) aus, um ein Ergebnis bereitzustellen.

Claims (10)

  1. Datenprozessor (200) mit: einem Prozessorkern (300); einer mit dem Prozessorkern (300) gekoppelten Schnittstelle (210); und einem Coprozessor (500), der über die Schnittstelle (210) mit dem Prozessorkern (300) verbunden ist, wobei der Coprozessor (500) einen ersten Listenspeicher (522) aufweist, wobei in Reaktion auf einen vorbestimmten Befehl (400) der Prozessorkern (300) über die Schnittstelle (210) einen Operanden an den Coprozessor (300) weitergibt, und wobei der Coprozessor (500) den Operanden in dem ersten Listenspeicher (522) speichert und eine Operation entsprechend dem vorbestimmten Befehl (400) unter Anwendung mehrerer Werte aus dem ersten Listenspeicher (522) ausführt, um ein Ergebnis bereitzustellen.
  2. Datenprozessor (200) nach Anspruch 1, wobei der Coprozessor (500) ferner einen zweiten Listenspeicher (524) aufweist und ferner die Operation entsprechend dem vorbestimmten Befehl unter Anwendung mehrerer Werte aus dem zweiten Listenspeicher (524) ausführt, um das Ergebnis bereitzustellen.
  3. Datenprozessor (200) nach Anspruch 2, wobei die mehreren Werte aus dem ersten Listenspeicher (522) abgetastete Datenwerte enthalten, wobei die mehreren Werte aus dem zweiten Listenspeicher (524) mehrerer Filterkoeffizienten enthalten und wobei die Operation entsprechend dem vorbestimmten Befehl eine Filterausgangssignalberechnung mit finiter Impulsantwort (FIR) umfasst.
  4. Datenprozessor (200) nach Anspruch 1, wobei der Coprozessor (500) eine erste Multiplizier- und Akkumulier- (MAC) Einheit (542) umfasst.
  5. Datenprozessor (200 nach Anspruch 4, wobei der Coprozessor (500) ferner eine zweite MAC-Einheit (544) umfasst und wobei jeweils die erste (542) und die zweite (544) MAC-Einheit einen auswählbaren Sättigungsmodus besitzen.
  6. Datenprozessor (200) mit: einem Prozessorkern (300); einer Schnittstelle (210), die mit dem Prozessorkern (300) verbunden ist; und einem Coprozessor (500), der mit der Schnittstelle (210) verbunden ist, wobei in Reaktion auf einen ersten vorbestimmten Befehl der Prozessorkern (300) über die Schnittstelle (210) einen Befehl und einen Operandenwert an den Coprozessor (500) überträgt, und wobei der Coprozessor (500) eine erste vorbestimmte Operation gemäß dem ersten vorbestimmten Befehl initiiert, und wobei in Reaktion auf einen zweiten vorbestimmten Befehl der Coprozessor (500) der Schnittstelle (210) bei Beendigung der ersten vorbestimmten Operation das Ergebnis zur Verfügung stellt.
  7. Datenprozessor (200) nach Anspruch 6, wobei der erste vorbestimmte Befehl einen Startbefehl für einen Filter mit finiter Impulsantwort (FIR) umfasst und wobei der zweite vorbestimmte Befehl einen Stoppbefehl für den FIR-Filter umfasst.
  8. Datenprozessor (200) nach Anspruch 7, wobei in Reaktion auf den Startbefehl des FIR-Filters der Prozessorkern (300) mit der Ausführung von Befehlen fortfährt und in Reaktion auf den Stoppbefehl für den FIR-Filter der Prozessorkern (300) die weitere Befehlsverarbeitung anhält, bis der Coprozessor (500) mitteilt, dass die vorbestimmte Operation abgeschlossen ist.
  9. Verfahren zum effizienten Betreiben eines Datenverarbeitungssystems (200) mit den Schritten: Einladen eines Operanden in ein Register einer zentralen Rechneinheit (300) in Reaktion auf einen ersten Befehl; Bereitstellen des Operanden aus dem Register für eine Schnittstelle (210) in Reaktion auf einen zweiten Befehl (400); Speichern des Operanden in einem ersten Listenspeicher (522) eines Coprozessors (500), der mit der Schnittstelle (210) verbunden ist, in Reaktion auf den zweiten Befehl (400); und Ausführen einer vorbestimmten Operation, die dem zweiten Befehl entspricht, in dem Coprozessor (500) unter Anwendung mehrerer Werte aus dem ersten Listenspeicher (522), um ein Ergebnis bereitzustellen.
  10. Verfahren nach Anspruch 9, wobei der Schritt des Ausführens der vorbestimmten Operation umfasst: Ausführen der vorbestimmten Operation unter Anwendung der mehreren Werte aus dem ersten Listenspeicher (522) und mehreren Werten aus einem zweiten Listenspeicher (524) des Coprozessors (500).
DE112006000340T 2005-02-09 2006-01-17 Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor Ceased DE112006000340T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/054,220 US20060179273A1 (en) 2005-02-09 2005-02-09 Data processor adapted for efficient digital signal processing and method therefor
US11/054,220 2005-02-09
PCT/US2006/001603 WO2006086122A1 (en) 2005-02-09 2006-01-17 Data processor adapted for efficient digital signal processing and method therefor

Publications (1)

Publication Number Publication Date
DE112006000340T5 true DE112006000340T5 (de) 2007-12-27

Family

ID=36593622

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006000340T Ceased DE112006000340T5 (de) 2005-02-09 2006-01-17 Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor

Country Status (8)

Country Link
US (1) US20060179273A1 (de)
JP (1) JP2008530689A (de)
KR (1) KR20070105328A (de)
CN (1) CN101116053A (de)
DE (1) DE112006000340T5 (de)
GB (1) GB2437684B (de)
TW (1) TW200636571A (de)
WO (1) WO2006086122A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7586904B2 (en) * 2004-07-15 2009-09-08 Broadcom Corp. Method and system for a gigabit Ethernet IP telephone chip with no DSP core, which uses a RISC core with instruction extensions to support voice processing
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7865808B2 (en) 2007-05-09 2011-01-04 Harris Corporation Fast error detection system and related methods
CN101521960B (zh) * 2009-02-11 2013-12-11 北京中星微电子有限公司 一种基带和协处理器间的通信方法、装置及系统
US8495343B2 (en) * 2009-09-09 2013-07-23 Via Technologies, Inc. Apparatus and method for detection and correction of denormal speculative floating point operand
JP5445147B2 (ja) * 2010-01-07 2014-03-19 富士通株式会社 リスト構造制御回路
CN101777037B (zh) * 2010-02-03 2013-05-08 中兴通讯股份有限公司 一种查找引擎实时系统内数据传输的方法和系统
CN107832083B (zh) * 2011-04-07 2020-06-12 威盛电子股份有限公司 具有条件指令的微处理器及其处理方法
TWI478065B (zh) * 2011-04-07 2015-03-21 Via Tech Inc 執行模式備份暫存器之模擬
KR101849702B1 (ko) 2011-07-25 2018-04-17 삼성전자주식회사 외부 인트린직 인터페이스
CN102262608A (zh) * 2011-07-28 2011-11-30 中国人民解放军国防科学技术大学 基于处理器核的协处理器读写操作控制方法及装置
CN102523374B (zh) * 2011-12-19 2014-02-19 北京理工大学 一种实时并行的电子稳像系统设计方法
US9760371B2 (en) 2011-12-22 2017-09-12 Intel Corporation Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9785444B2 (en) 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
US11449452B2 (en) * 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
WO2016187232A1 (en) 2015-05-21 2016-11-24 Goldman, Sachs & Co. General-purpose parallel computing architecture
WO2017146706A1 (en) 2016-02-25 2017-08-31 Hewlett Packard Enterprise Development Lp Performing complex multiply-accumulate operations
US11294679B2 (en) * 2017-06-30 2022-04-05 Intel Corporation Apparatus and method for multiplication and accumulation of complex values
WO2019005115A1 (en) 2017-06-30 2019-01-03 Intel Corporation APPARATUS AND METHOD FOR MULTIPLICATION AND CUMULATION OF COMPLEX VALUES
US10884953B2 (en) 2017-08-31 2021-01-05 Hewlett Packard Enterprise Development Lp Capability enforcement processors
CN110489356B (zh) * 2019-08-06 2022-02-22 上海商汤智能科技有限公司 信息处理方法、装置、电子设备及存储介质
TWI719786B (zh) * 2019-12-30 2021-02-21 財團法人工業技術研究院 資料處理系統與方法
CN111158756B (zh) * 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置
CN111400986B (zh) * 2020-02-19 2024-03-19 西安智多晶微电子有限公司 一种集成电路计算设备及计算处理系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4897779A (en) * 1988-07-20 1990-01-30 Digital Equipment Corporation Method and apparatus for optimizing inter-processor instruction transfers
EP0843254A3 (de) * 1990-01-18 1999-08-18 National Semiconductor Corporation Integrierte, digital arbeitende Signalverarbeitungsanlage/Universalprozessor mit anteilig genutzten internem Speicher
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
TW439380B (en) * 1995-10-09 2001-06-07 Hitachi Ltd Terminal apparatus
US5909463A (en) * 1996-11-04 1999-06-01 Motorola, Inc. Single-chip software configurable transceiver for asymmetric communication system
US6530014B2 (en) * 1997-09-08 2003-03-04 Agere Systems Inc. Near-orthogonal dual-MAC instruction set architecture with minimal encoding bits
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
IL139249A (en) * 1998-05-27 2005-08-31 Advanced Risc Mach Ltd Recirculating register file
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US8090928B2 (en) * 2002-06-28 2012-01-03 Intellectual Ventures I Llc Methods and apparatus for processing scalar and vector instructions

Also Published As

Publication number Publication date
CN101116053A (zh) 2008-01-30
TW200636571A (en) 2006-10-16
US20060179273A1 (en) 2006-08-10
WO2006086122A1 (en) 2006-08-17
GB2437684B (en) 2009-08-05
KR20070105328A (ko) 2007-10-30
JP2008530689A (ja) 2008-08-07
GB0716020D0 (en) 2007-09-26
GB2437684A (en) 2007-10-31

Similar Documents

Publication Publication Date Title
DE112006000340T5 (de) Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69926458T2 (de) Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE69916962T2 (de) Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102020126212A1 (de) Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers
DE112010002773T5 (de) Entpacken von gepackten daten auf mehreren spuren
DE102007045496A1 (de) Anweisung und Logik zum Bearbeiten von Textstrings
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE102014002510A1 (de) Präzise Ausnahmesignalisierung für Mehrfachdatenarchitektur
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE102018125971A1 (de) Systeme und verfahren zum berechnen von skalaprodukten von halbbytes in operanden aus zwei kacheln
DE102018005859A1 (de) Einrichtung und Verfahren zur Multiplikation und Akkumulation von komplexen und echten gepackten Datenelementen
DE69629646T2 (de) Verfahren zur durchführung einer "rotate through carry" operatiion

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8128 New person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20120721