[go: up one dir, main page]

DE69919059T2 - Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren - Google Patents

Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren Download PDF

Info

Publication number
DE69919059T2
DE69919059T2 DE69919059T DE69919059T DE69919059T2 DE 69919059 T2 DE69919059 T2 DE 69919059T2 DE 69919059 T DE69919059 T DE 69919059T DE 69919059 T DE69919059 T DE 69919059T DE 69919059 T2 DE69919059 T2 DE 69919059T2
Authority
DE
Germany
Prior art keywords
data
digital signal
coprocessor
signal processor
memory
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
DE69919059T
Other languages
English (en)
Other versions
DE69919059D1 (de
Inventor
Dale E. Plano Hocevar
Allan Richardson Gatherer
Karl E. Jr. Garland Lemonds
Ching-Yu Plano Hung
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE69919059D1 publication Critical patent/DE69919059D1/de
Application granted granted Critical
Publication of DE69919059T2 publication Critical patent/DE69919059T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

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)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf die Gebiete der digitalen Signalverarbeitung und insbesondere auf einen digitalen Signalprozessor mit einem Kerndatenprozessor und einem rekonfigurierbaren Coprozessor.
  • HINTERGRUND DER ERFINDUNG
  • Die digitale Signalverarbeitung wird für die Audio- und Videoverarbeitung immer weiter verbreitet. In vielen Fällen kann ein einziger digitaler Prozessor eine Menge früherer diskreter analoger Komponenten ersetzen. Die Zunahme der Verarbeitungskapazität, die digitale Signalprozessoren bieten, ermöglicht weitere Typen von Vorrichtungen und weitere Funktionen für frühere Vorrichtungen. Dieser Prozess hat den Bedarf an komplizierteren Funktionen und Merkmalen in momentanen Vorrichtungen und an neuen Typen von Vorrichtungen erzeugt. In einigen Fällen übertrifft dieser Bedarf die Fähigkeit zur kosteneffizienten Lieferung der gewünschten Funktionalität mit vollständig programmierbaren digitalen Signalprozessoren.
  • Eine Reaktion auf diesen Bedarf ist die Kopplung eines digitalen Signalprozessors mit einer anwendungsspezifischen integrierten Schaltung (ASIC). Der digitale Signalprozessor wird so programmiert, dass er die Steuerfunktionen und einen Teil der Signalverarbeitung behandelt. Die vollständige Programmierbarkeit des digitalen Signalprozessors ermöglicht eine Produktdifferenzierung durch Produktprogrammierung. Die ASIC ist so konstruiert, dass sie eine Verarbeitungs-Hardware für bestimmte Kernfunktionen schafft, die üblicherweise ausgeführt werden und zeitkritisch sind. Mit der erhöhten Dichte integrierter Schaltungen wird es nun möglich, einen digitalen Signalprozessor und einen ASIC-Hardware-Coprozessor auf demselben Chip anzuordnen.
  • Dieser Zugang besitzt zwei Probleme. Dieser Zugang führt selten zu einer effizienten Verbindung zwischen der Hardware-Coprozessor-ASIC und dem digitalen Signalprozessor. Es ist typisch, dass der größte Teil der Schnittstelle durch Programmierung des digitalen Signalprozessors behandelt wird. In vielen Fällen muss der digitale Signalprozessor Datenzeiger und Befehle in Echtzeit liefern, während der Hardware-Coprozessor arbeitet. Um sichere Entwürfe zu bilden, ist es typisch, dass für den digitalen Signalprozessor eine Zusatzzeit zum Bedienen des Hardware-Coprozessors vorgesehen ist. Das heißt, dass der Hardware-Coprozessor nicht vollständig genutzt verwendet. Ein zweites Problem kommt von dem Problem der Entwurfszeitdauer. Mit der erhöhten Fähigkeit, verschiedene Funktionalität zu entwerfen, sind die Produktzyklen verringert worden. Dadurch wird dem schnellen Entwurf neuer Funktionen ein hoher Wert beigemessen. Die Fähigkeit, Programme und Schnittstellen wiederzuverwenden, würde bei der Verkürzung der Entwurfszyklen helfen. Allerdings können die in dem ASIC-Hardware-Coprozessor implementierten festen Funktionen nicht leicht wiederverwendet werden. Der typische ASIC-Hardware-Coprozessor besitzt eine begrenzte Menge von Funktionen, die für einen engen Bereich von Problemen geeignet sind. Diese Entwürfe können nicht einmal zur Implementierung eng verwandter Funktionen schnell wiederverwendet werden. Außerdem neigt die Schnittstelle zwischen dem digitalen Signalprozessor und dem ASIC-Hardware-Coprozessor dazu, Ad-hoc-Techniken zu verwenden, die für ein besonderes Produkt spezifisch sind.
  • Die in der europäischen Patentanmeldung EP-A 0758 123, 'High speed video board as a case study for hardware-software co-design' VON HERRMANN, D., U. A. in den PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER DESIGN. ICCD. VLSI IN COMPUTERS AND PROCESSORS. AUSTIN, 7.–9. OKT 1996, LOS ALAMITOS, IEEE COMP. SOC. PRESS, USA, 7. Oktober 1996 (1996-10-07), S. 185–190, XP010201800, ISBN: 0-8186-7554-3, und im Patent der Vereinigten Staaten US-A-5 420 989 beschriebenen Anordnungen zeigen Prozessoren, die an Adress- und Datenbusse angeschlossen sind, und beschreiben den Speicherzugriff.
  • Die vorliegende Erfindung schafft ein Datenverarbeitungssystem und -verfahren, wie sie in den beigefügten Ansprüchen dargestellt sind.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Die vorliegende Erfindung wird nun beispielhaft mit Bezug auf die beispielhaften Ausführungsformen weiter beschrieben, die in der beigefügten Zeichnung veranschaulicht sind, in der:
  • 1 die Kombination eines digitalen Signalprozessorkerns und eines rekonfigurierbaren Hardware-Coprozessors in Übereinstimmung mit dieser Erfindung veranschaulicht;
  • 2 die logische Kopplung des Speicherabbilds zwischen dem digitalen Signalprozessorkern und dem rekonfigurierbaren Hardware-Coprozessor dieser Erfindung veranschaulicht;
  • 3 eine Art und Weise der Verwendung des rekonfiguierbaren Hardware-Coprozessorspeichers veranschaulicht;
  • 4 eine Speichermanagementtechnik veranschaulicht, die für Filteralgorithmen nützlich ist;
  • 5 eine alternative Ausführungsform der Kombination aus 1 veranschaulicht, die zwei Coprozessoren mit einem privaten Bus dazwischen enthält;
  • 6 die Konstruktion eines Hardware-Coprozessors veranschaulicht, der rekonfigurierbar ist, um eine Vielzahl von Filterfunktionen auszuführen;
  • 7 die Eingabeformatierungseinrichtung des in 6 veranschaulichten rekonfigurierbaren Hardware-Coprozessors veranschaulicht;
  • 8 den rekonfigurierbaren Datenpfadkern des in 6 veranschaulichten rekonfigurierbaren Hardware-Coprozessors veranschaulicht;
  • 9 die Ausgabeformatierungseinrichtung des in 6 veranschaulichten rekonfigurierbaren Hardware-Coprozessors veranschaulicht;
  • 10 die Datenflussverbindungen über den Datenpfadkern zur Ausführung eines reellen Filters mit endlicher Impulsantwort veranschaulicht;
  • 11 die Datenflussverbindungen über den Datenpfadkern zur Ausführung eines komplexen Filters mit endlicher Impulsantwort veranschaulicht;
  • 12 die Datenflussverbindung über den Datenpfadkern zur Ausführung einer Koeffizientenaktualisierungsfunktion veranschaulicht; und
  • 13 die Datenflussverbindungen über den Datenpfadkern zur Ausführung einer schnellen Fourier-Transformation veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
  • 1 veranschaulicht eine Schaltung 100, die einen digitalen Signalprozessorkern 110 und einen rekonfigurierbaren Hardware-Coprozessor 140 enthält. In Übereinstimmung mit der bevorzugten Ausführungsform dieser Erfindung sind diese Teile in einer einzigen integrierten Schaltung ausgebildet. Der digitale Signalprozessorkern 110 kann einen herkömmlichen Entwurf besitzen. In der bevorzugten Ausführungsform ist der digitale Signalprozessorkern 110 so beschaffen, dass er die Direktspeicherzugriffsschaltung 120 für selbstständige Datenübertragungen steuert, die unabhängig von dem digitalen Signalprozessorkern 110 sind. Die externe Speicherschnittstelle 130 dient als Schnittstelle des internen Datenbusses 101 und des internen Adressbusses 103 zu ihren externen Gegenstücken, dem externen Datenbus 131 bzw. dem externen Adressbus 133. Die externe Speicherschnittstelle 130 besitzt eine herkömmliche Konstruktion. Optional kann die integrierte Schaltung 100 zusätzliche herkömmliche Merkmale und Schaltungen enthalten. Insbesondere wird angemerkt, dass das Hinzufügen von Cache-Speicher zur integrierten Schaltung 100 die Leistung wesentlich verbessern kann. Die in 1 veranschaulichten Teile sollen die Bereitstellung weiterer herkömmlicher Teile nicht ausschließen. Diese in 1 veranschaulichten herkömmlichen Teile sind lediglich diejenigen Teile, die von der Hinzunahme des rekonfigurierbaren Hardware-Coprozessors 140 am meisten betroffen sind.
  • Der rekonfigurierbare Hardware-Coprozessor 140 ist über den Datenbus 101 und über den Adressbus 103 mit weiteren Teilen der integrieren Schaltung 100 gekoppelt. Der rekonfigurierbare Hardware-Coprozessor 140 enthält einen Befehlsspeicher 141, einen Coprozessor-Logikkern 143, einen Datenspeicher 145 und einen Koeffizientenspeicher 147. Der Befehlsspeicher 141 dient als ein Kanal, über den der digitale Signalprozessorkern 110 die Operationen des rekonfigurierbaren Hardware-Coprozessors 140 steuert. Dieses Merkmal ist in 2 weiter veranschaulicht. Der Coprozessor-Logikkern 143 reagiert auf im Befehlsspeicher 141 gespeicherte Befehle, um die Coprozessorfunktionen auszuführen. Diese Coprozessorfunktionen umfassen den Austausch von Daten zwischen dem Coprozessorlogikkern 143 und dem Datenspeicher 145 und dem Koeffizientenspeicher 147. Der Datenspeicher 145 speichert die durch den rekonfigurierbaren Hardware-Coprozessor 140 verarbeiteten Eingabedaten und speichert ferner das Ergebnis der Operationen des rekonfigurierbaren Hardware-Coprozessors 140. Die Art und Weise der Speicherung dieser Daten wird unten anhand von 2 weiter beschrieben. Der Koeffizientenspeicher 147 speichert die vom Coprozessor-Logikkern 143 verwendeten unveränderlichen oder verhältnismäßig unveränderlichen Prozessparameter, die Koeffizienten genannt werden. Obgleich der Datenspeicher 145 und der Koeffizientenspeicher 147 als getrennte Teile veranschaulicht sind, könnten diese leicht lediglich als verschiedene Abschnitte eines einzigen Einheitsspeichers verwendet werden. Wie unten gezeigt ist, ist es für den unten beschriebenen Mehrfachmultiplikations-Akkumulations-Coprozessor am besten, wenn ein solcher einziger Einheitsspeicher zwei Leseports für Daten und Koeffizienten und zwei Schreibports zum Schreiben der Ausgabedaten besitzt. Es wird davon ausgegangen, dass es am besten ist, dass sich der Speicher, auf den der rekonfigurierbare Hardware-Coprozessor 140 zugreifen kann, in derselben integrierten Schaltung in physikalischer Nähe des Coprozessor-Logikkern 143 befindet. Diese physikalische Nähe ist erforderlich, um die breiten Speicherbusse unterzubringen, die durch den gewünschten Datendurchsatz des Coprozessor-Logikkerns 143 erforderlich sind.
  • 2 veranschaulicht die auf den Speicher abgebildete Schnittstelle zwischen dem digitalen Signalprozessorkern 110 und dem rekonfigurierbaren Hardware-Coprozessor 140. Der digitale Signalprozessorkern 110 steuert den rekonfigurierbaren Hardware-Coprozessor 140 über den Befehlsspeicher 141. In der bevorzugten Ausführungsform ist der Befehlsspeicher 141 ein Zuerst-Eingeben/Zuerst-Ausgeben-Speicher (FIFO-Speicher). Der Schreibport des Befehlsspeichers 141 wird auf einen einzigen Speicherplatz in dem Adressraum des digitalen Signalprozessorkerns 110 auf den Speicher abgebildet. Somit steuert der digitale Signalprozessorkern 110 den rekonfigurierbaren Hardware-Coprozessor 140 dadurch, dass er Befehle, die als die Eingabe in den Befehlsspeicher 141 dienen, an die Adresse schreibt. Vorzugsweise enthält der Befehlsspeicher 141 zwei zirkulär ausgerichtete Zeiger. Der Schreibzeiger 151 zeigt auf den Platz in dem Befehlsspeicher 141, an dem der nächste empfangene Befehl gespeichert werden soll. Jedesmal, wenn ein Schreiben an die vorgegebene Adresse des Befehlsspeichers 141 erfolgt, wählt der Schreibzeiger den physikalischen Platz aus, der die Daten empfängt. Nach einem solchen Datenschreiben wird der Schreibzeiger 151 aktualisiert, so dass er auf den nächsten physikalischen Platz im Befehlsspeicher 141 zeigt. Der Schreibzeiger 151 ist zirkulär ausgerichtet, da er von dem letzten physikalischen Platz auf den ersten physikalischen Platz zurückgesetzt wird. Der rekonfigurierbare Hardware-Coprozessor 140 liest die Befehle unter Verwendung des Lesezeigers 153 in der gleichen Reihenfolge aus dem Befehlsspeicher 141, wie sie empfangen werden (FIFO). Der Lesezeiger 153 zeigt auf denjenigen physikalischen Platz im Befehlsspeicher 141, der den nächsten zu lesenden Befehl speichert. Nach jedem solchen Lesen wird der Lesezeiger 153 aktualisiert, so dass er auf den nächsten physikalischen Platz im Befehlsspeicher 141 Bezug nimmt. Es wird angemerkt, dass der Lesezeiger 153 ebenfalls zirkulär ausgerichtet ist und von dem letzten physikalischen Platz auf den ersten physikalischen Platz zurückgesetzt wird. Der Befehlsspeicher 141 enthält ein Merkmal, das verhindert, dass der Schreibzeiger 151 den Lesezeiger 153 überholt. Dies kann z. B. dadurch ge schehen, dass das Schreiben abgelehnt und ein Speicherfehlersignal an den digitalen Signalprozessorkern 110 zurückgesendet wird, wenn der Schreibzeiger 151 und der Lesezeiger 153 auf den gleichen physikalischen Platz Bezug nehmen. Somit kann der FIFO-Puffer des Befehlsspeichers 141 voll sein und keine zusätzlichen Befehle annehmen.
  • Der Datenspeicher 145 und der Koeffizientenspeicher 147 werden beide in den Datenadressraum des digitalen Signalprozessorkerns 110 abgebildet. Wie in 2 veranschaulicht ist, ist der Datenbus 101 doppeltgerichtet mit dem Speicher 149 gekoppelt. In Übereinstimmung mit der oben erwähnten alternativen Ausführungsform sind sowohl der Datenspeicher 145 als auch der Koeffizientenspeicher 147 als Teil des Speichers 147 ausgebildet. Der (in 2 nicht veranschaulichte) Coprozessor-Logikkern 143 kann ebenfalls auf den Speicher 147 zugreifen. Außerdem veranschaulicht 2 drei abgegrenzte Speicherbereiche im Speicher 149. Wie unten weiter beschrieben wird, führt der rekonfigurierbare Hardware-Coprozessor 140 vorzugsweise mehrere Funktionen aus, die verschiedene Speicherbereiche verwenden.
  • Die integrierte Schaltung 100 arbeitet wie folgt. Der digitale Signalprozessorkern 110 steuert die vom rekonfigurierbaren Hardware-Coprozessor 140 verwendeten Daten und Koeffizienten, indem er die Daten in dem Datenspeicher 145 und die Koeffizienten in dem Koeffizientenspeicher 147 lädt. Alternativ lädt der digitale Signalprozessorkern 110 die Daten und die Koeffizienten in den Einheitsspeicher 149. Der digitale Signalprozessorkern 110 kann so programmiert werden, dass er diese Datenübertragung direkt ausführt. Alternativ kann der digitale Signalprozessorkern 110 so programmiert werden, dass er die Direktspeicherzugriffsschaltung 120 so steuert, dass sie diese Datenübertragung ausführt. Insbesondere bei Audio- oder Videoverarbeitungsanwendungen wird der Datenstrom mit einer voraussagbaren Rate und von einer voraussagbaren Eingabevorrichtung empfangen. Somit ist es typisch effizient, dass der digitale Signalprozessorkern 110 die Direktspeicherzugriffsschaltung 120 so steuert, dass sie Übertragungen vom ex ternen Speicher zu einem Speicher vornimmt, auf den der rekonfigurierbare Hardware-Coprozessor 140 zugreifen kann.
  • Nach der Übertragung der zu verarbeitenden Daten signalisiert der digitale Signalprozessorkern 110 den rekonfigurierbaren Hardware-Coprozessor 140 mit dem Befehl für den gewünschten Signalverarbeitungsalgorithmus. Wie zuvor festgestellt wurde, werden Befehle durch einen Speicherschreibvorgang an eine vorgegebene Adresse an den rekonfigurierbaren Hardware-Coprozessor 140 gesendet. Die empfangenen Befehle werden auf einer Zuerst-Eingeben/Zuerst-ausgeben-Grundlage im Befehlsspeicher 141 gespeichert.
  • Vorzugsweise enthält jeder Rechenbefehl des rekonfigurierbaren Hardware-Coprozessors 140 eine Art und Weise, in der die besondere auszuführende Funktion spezifiziert wird. In der bevorzugten Ausführungsform ist der rekonfigurierbare Hardware-Coprozessor 140 so konstruiert, dass er rekonfigurierbar ist. Der rekonfigurierbare Hardware-Coprozessor 140 besitzt eine Menge von Funktionseinheiten wie etwa Multiplizierer und Addierer, die auf verschiedene Weise miteinander verbunden werden können, um verschiedene, aber verwandte Funktionen auszuführen. Die Menge der verwandten Funktionen, die für jeden rekonfigurierbaren Hardware-Coprozessor ausgewählt werden, beruht auf einer Ähnlichkeit der Mathematik der Funktionen. Diese Ähnlichkeit der Mathematik ermöglicht es, ähnliche Hardware für die mehreren Funktionen zu rekonfigurieren. Der Befehl kann die besondere Berechnung in der Art von Datenprozessoranweisungen über einen Opcode angeben.
  • Jeder Rechenbefehl enthält eine Art und Weise des Spezifizierens des Platzes der von der Berechnung zu verwendenden Daten. Es gibt viele geeignete Verfahren, um den Datenraum zu bestimmen. Beispielsweise kann der Befehl eine Startadresse und eine Anzahl der Datenwörter oder Abtastwerte in dem Block spezifizieren. Die Datengröße kann als ein Parameter spezifiziert werden oder kann durch den Opcode spezifiziert werden, der die Art der Berechnung definiert. Als ein weiteres Beispiel kann der Befehl die Datengröße, die Startadresse und die Endadresse der Eingabedaten spezifizieren. Es wird angemerkt, dass bekannte indirekte Verfahren verwendet werden können, um zu spezifizieren, wo die Eingabedaten gespeichert werden. Der Befehl kann einen Zeiger auf ein Register oder auf einen Speicherplatz enthalten, der irgendeinen dieser Parameter wie etwa Startadresse, Datengröße, Anzahl der Abtastwerte in dem Datenblock und Endadresse speichert.
  • Ferner muss jeder Rechenbefehl den Speicheradressbereich angeben, der die Daten für den besonderen Befehl speichert. Diese Angabe kann durch irgendeines der Verfahren erfolgen, die oben in Bezug auf die Orte, die die Eingabedaten speichern, aufgeführt sind. In vielen Fällen ist die Rechenfunktion eine Filterfunktion, wobei die Menge der Ausgabedaten, die auf die Verarbeitung folgen, etwa gleichwertig der Menge der Eingabedaten ist. In anderen Fällen kann die Menge der Ausgabedaten größer oder kleiner als die Menge der Eingabedaten sein. Auf jeden Fall ist die Menge der resultierenden Daten aus der Menge der Eingabedaten und der Art der angeforderten Rechenfunktion bekannt. Somit liefert lediglich das Spezifizieren der Startadresse ausreichend Informationen, um anzugeben, wo sämtliche resultierenden Daten zu speichern sind. Es ist möglich, die Ausgabedaten auf löschende Weise zu speichern, wobei die Eingabedaten während der Verarbeitung überschrieben werden, Alternativ können die Ausgabedaten in einen anderen Speicherabschnitt geschrieben und die Eingabedaten wenigstens vorübergehend erhalten werden. Die Auswahl zwischen diesen Alternativen kann davon abhängen, ob die Eingabedaten wiederverwendet werden.
  • 3 veranschaulicht eine nützliche Technik, die die alternative Verwendung zweier Speicherbereiche umfasst. Ein Speicherbereich 144 speichert die für die Coprozessorfunktion benötigten Eingabedaten. Die relativ konstanten Koeffizienten werden im Koeffizientenspeicher 147 gespeichert. Diese Daten werden zur Verwendung durch den Coprozessor-Logikkern 143 zurückgerufen (1 Lesevorgang). Die Ausgabedaten werden in den zweiten Speicherbereich 146 geschrieben (1 Schreibvorgang). Nach der Verwendung des Datenspeicherbereichs 144 schreibt die Direktspeicherzugriffsschaltung 120 die Daten für den nächsten Block, wobei die zuvor verwendeten Daten überschrieben werden (2 Schreibvor gänge). Gleichzeitig liest die Direktspeicherzugriffsschaltung 120 die Daten aus dem Speicherbereich 146 vor ihm, die durch den rekonfigurierbaren Hardware-Coprozessor 140 überschrieben werden (2 Lesevorgänge). Diese zwei Speicherbereiche für Eingabedaten und für resultierende Daten könnten als zirkuläre Puffer konfiguriert sein. In einem Produkt, das mehrere verwandte Funktionen erfordert, können getrennte Speicherbereiche verwendet werden, die als zirkuläre Puffer definiert sind. Für jede getrennte Funktion wird ein Speicherbereich zugeordnet, der als ein zirkulärer Puffer konfiguriert ist.
  • Vorzugsweise ist das Format der Rechenbefehle sehr ähnlich dem Format einer Unterroutinenaufrufanweisung in einer höheren Programmiersprache. Das heißt, der Befehl enthält einen Befehlsnamen, dessen Funktion ähnlich dem Namen der Unterroutine ist, die die besondere auszuführende Rechenfunktion spezifiziert. Außerdem enthält jeder Befehl eine Menge von Parametern, die die in dem Befehlstyp verfügbaren Optionen spezifizieren. Diese Parameter können die Form direkter Größen oder Variablen annehmen, die Zeiger auf Register oder Speicherplätze sind, die die gewünschten Größen speichern. Die Anzahl und der Typ dieser Parameter hängen von dem Befehlstyp ab. Dieses Unterroutinenaufrufformat ist wichtig bei der Wiederverwendung von Programmen, die für den digitalen Signalprozessorkern 110 geschrieben worden sind. Bei der Verwendung stellt der Programmierer oder der Compiler eine Programmstumpf-Unterroutine bereit, die den rekonfigurierbaren Hardware-Coprozessor 140 aktiviert. Diese Programmstumpf-Unterroutine empfängt lediglich die Unterroutinenparameter und bildet unter Verwendung dieser Parameter den entsprechenden Coprozessor-Befehl. Daraufhin schreibt die Programmstumpf-Unterroutine diesen Befehl an die vorgegebene Speicheradresse, die für die Befehlsübertragung zum rekonfigurierbaren Hardware-Coprozessor 140 reserviert ist, und kehrt daraufhin zurück. Diese Erfindung sieht vor, dass die Rechenkapazität der digitalen Signalprozessorkerne regelmäßig mit der Zeit zunimmt. Somit können die Verarbeitungsanforderungen eines besonderen Produkts zu einem Zeitpunkt die Kombination des digitalen Signalprozessorkerns 110 und des rekonfigurierbaren Hardware-Coprozessors 140 erfordern. Zu einem späteren Zeitpunkt kann die verfügbare Rechenkapazität ei nes befehlssatzkompatiblen digitalen Signalprozessorkerns zunehmen, so dass die Funktionen, die zuvor einen rekonfigurierbaren Hardware-Coprozessor erforderten, durch den digitalen Signalprozessorkern in Software ausgeführt werden können. Der frühere Programmcode für das Produkt kann leicht in den neuen, leistungsfähigeren digitalen Signalprozessor umgesetzt werden. Dies wird dadurch erreicht, dass für jeden der Befehle, die durch den ersetzten rekonfigurierbaren Hardware-Coprozessor unterstützt werden, unabhängige Unterroutinen vorgesehen werden. Daraufhin wird jede Stelle, an der das ursprüngliche Programm den Unterroutinen-Programmstumpf verwendet, um einen Befehl an den rekonfigurierbaren Hardware-Coprozessor zu senden, durch den entsprechenden Unterroutinenaufruf ersetzt. Somit wird eine umfangreiche Neuprogrammierung vermieden.
  • Nach Abschluss der Verarbeitung an einem Datenblock können die Daten aus dem Datenspeicher 145 oder aus dem Einheitsspeicher 149 übertragen werden. Diese zweite Übertragung kann entweder durch direkte Wirkung des digitalen Signalprozessorkerns 110, der die an den Ausgabespeicherplätzen gespeicherten Daten liest, oder mit Hilfe der Direktspeicherzugriffsschaltung 120 stattfinden. Diese Ausgabedaten können die Ausgabe des Prozesses repräsentieren. In diesem Fall werden die Daten an eine Nutzungsvorrichtung übertragen. Alternativ können die Ausgabedaten des rekonfigurierbaren Hardware-Coprozessors 140 Arbeit repräsentieren, die im Gang ist. In diesem Fall werden die Daten typisch vorübergehend zur späteren Wiedergewinnung und Weiterverarbeitung in einem Speicher gespeichert, der extern gegenüber der integrierten Schaltung 100 ist.
  • Daraufhin ist der rekonfigurierbare Hardware-Coprozessor 140 zur Weiterverwendung bereit. Diese Weiterverwendung kann eine zusätzliche Verarbeitung der gleichen Funktion sein. In diesem Fall wird der oben beschriebene Prozess auf die gleiche Weise an einem neuen Datenblock wiederholt. Diese Weiterverarbeitung kann eine Verarbeitung einer anderen Funktion sein. In diesem Fall müssen die neuen Daten in einen Speicher geladen werden, auf den der rekonfigurierbare Hardware-Coprozessor 140 zugreifen kann, muss der neue Befehl geladen werden und müssen daraufhin die verarbeiteten Daten zur Ausgabe oder Weiterverarbeitung gelesen werden.
  • Vorzugsweise kann der rekonfigurierbare Hardware-Coprozessor 140 mehr als eine Funktion des Produktalgorithmus ausführen. Viele digitale Signalverarbeitungsaufgaben verwenden mehrere Instanzen ähnlicher Funktionen. Beispielsweise kann der Prozess viele ähnliche Filterfunktionen enthalten. Vorzugsweise besitzt der rekonfigurierbare Hardware-Coprozessor 140 genügend Verarbeitungsfähigkeit, um diese Filterfunktionen alle in Echtzeit auszuführen. Der Vorteil, Datenblöcke anstelle diskreter Abtastwerte zu bearbeiten, wird offensichtlich, wenn der rekonfigurierbare Hardware-Coprozessor 140 in einem solchen System arbeitet. Als ein Beispiel wird angenommen, dass der rekonfigurierbare Hardware-Coprozessor 140 drei Funktionen A, B und C ausführt. Diese Funktionen können sequentiell sein oder können mit Funktionen, die durch den digitalen Signalprozessorkern 110 ausgeführt werden, verschachtelt sein. Zunächst führt der rekonfigurierbare Hardware-Coprozessor 140 an einem Datenblock die Funktion A aus. Diese Funktion wird wie oben skizziert ausgeführt. Der digitale Signalprozessorkern 110 lädt die Daten entweder direkt oder durch die Steuerung der Direktspeicherzugriffsschaltung 120 in den Speicherbereich 155 des Speichers 149. Bei Ausgabe des Befehls zur Konfiguration für die Funktion A, die die Menge der zu verarbeitenden Daten spezifiziert, führt der rekonfigurierbare Hardware-Coprozessor 140 die Funktion A aus und speichert die sich ergebenden Daten in dem durch den Befehl spezifizierten Abschnitt des Speicherbereichs 155. Es findet ein ähnlicher Prozess statt, der veranlasst, dass der rekonfigurierbare Hardware-Coprozessor 140 an den im Speicherbereich 157 gespeicherten Daten die Funktion B ausführt und das Ergebnis an den Speicherbereich 157 zurückgibt. Die Ausführung der Funktion kann an Datenblöcken stattfinden, die eine Größe haben, die ohne Beziehung zur Größe der Datenblöcke für die Funktion B ist. Schließlich wird der rekonfigurierbare Hardware-Coprozessor 140 angewiesen, an den Daten im Speicherbereich 159 die Funktion C auszuführen und das Ergebnis an den Speicherbereich 159 zurückgegeben. Die Blockgröße zur Ausführung der Funk tion C ist unabhängig von den für die Funktionen A und B ausgewählten Blockgrößen.
  • Aus diesem Beispiel ist die Nützlichkeit der Blockverarbeitung ersichtlich. Typisch haben die drei Funktionen A, B und C Datenflussraten, die unabhängig sind, d. h. nicht notwendig gleich sind. Die Bereitstellung von Spezialhardware für jede Funktion opfert die Allgemeinheit der Funktionalität und die Wiederverwendbarkeit der rekonfigurierbaren Hardware. Ferner wäre es schwierig, die jeder Funktion gewährten Betriebsmittel in Hardware anzupassen, um ein Gleichgewicht und die beste Nutzung der Hardware zu schaffen. Wenn rekonfigurierbare Hardware verwendet wird, gibt es zwangsläufig einen Organisationsaufwand zur Umschaltung zwischen den Konfigurationen. Die Bearbeitung auf Abtastwertweiser Grundlage für den Fluss durch die drei Funktionen erfordert eine Maximalzahl solcher Rekonfigurationsumschaltungen. Dies ist eindeutig suboptimal. Somit würde das Betreiben jeder Funktion an einem Datenblock vor der Rekonfiguration zum Umschalten zwischen den Funktionen diesen Organisationsaufwand verringern. Außerdem wäre es dann verhältnismäßig leicht, durch Auswählen der jeder Funktion gewidmeten Zeitdauer Betriebsmittel zwischen den Funktionen zuzuordnen. Schließlich würde diese Blockverarbeitung allgemein weniger Steuerorganisationsaufwand von dem digitalen Signalprozessorkern als das Umschalten zwischen den Funktionen auf einer Abtastwertebene erfordern.
  • Die für die verschiedenen Funktionen A, B und C ausgewählten Blockgrößen hängen von den geforderten relativen Datenraten und von den Datengrößen ab. Außerdem müssen ebenfalls die dem digitalen Signalprozessorkern 110 zugewiesenen Aufgaben und ihre jeweiligen Rechenanforderungen betrachtet werden. Ideal sind sowohl der digitale Signalprozessorkern 110 als auch der rekonfigurierbare Hardware-Coprozessor 140 nahezu vollständig belastet. Dies würde zur optimalen Verwendung der Betriebsmittel führen. Ein solcher Lastausgleich des digitalen Signalprozessorkerns 110 und des rekonfigurierbaren Hardware-Coprozessors 140 kann nur mit Produktalgorithmen erzielt werden, die den rekonfigurierbaren Hardware-Coprozessor 140 bei etwa 50% der Berechnungen verwenden können. Falls der rekonfigurierbare Hardware-Coprozessor 140 mehr als die Hälfte der minimal erforderlichen Berechnungen ausführen kann, können die in dem digitalen Signalprozessorkern 110 implementierten zusätzlichen Merkmale zu dem Produkt hinzugefügt werden, um die Belastung anzugleichen. Dies würde zur Verwendung von Reserverechenbetriebsmitteln im digitalen Signalprozessorkern 110 führen. Die Belastung der Rechenprozesse kann statistisch bestimmt werden. Eine solche statistische Rechenzuweisung kann am besten vorgenommen werden, wenn sowohl der digitale Signalprozessorkern 110 als auch der rekonfigurierbare Hardware-Coprozessor 140 feste und bekannte Funktionen ausführen. Falls erwartet wird, dass sich die Rechenlast mit der Zeit ändert, ist es wahrscheinlich am besten, die Rechenbetriebsmittel zwischen dem digitalen Signalprozessorkern 110 und dem rekonfigurierbaren Hardware-Coprozessor 140 dynamisch zur Laufzeit zuzuordnen. Es wird erwartet, dass die von dem rekonfigurierbaren Hardware-Coprozessor 140 ausgeführten Prozesse verhältnismäßig stabil bleiben und dass sich lediglich die von dem digitalen Signalprozessorkern 110 ausgeführten Prozesse ändern.
  • 4 zeigt eine Speichermanagementtechnik, die eine bessere Unterbrechung der Operationen ermöglicht. Die Daten 400, die die Datenblöcke 401, 402 und 403 umfassen, werden durch das Fenster 410 eines Filters mit endlichem Impuls geleitet. Solche Filter bearbeiten eine Zeithistorie der Daten. In den jeweiligen Ringpuffern 421, 431 und 441 im Datenspeicher 145 arbeiten drei Prozesse A, B und C. Ein solcher Ringpuffer ermöglicht, die Historie aufzubewahren. Somit sind die Historiendaten an voraussagbaren Adressen zur Verwendung verfügbar, wenn nach einer anderen Verarbeitung der nächste Block verarbeitet wird. Diese Historiendaten stehen unmittelbar vor den neu geschriebenen Daten für den nächsten Block.
  • Diese Technik arbeitet gut mit Ausnahme, wenn Speicherraum gelöscht werden muss, um eine andere Aufgabe zu ermöglichen. In diesem Fall könnten die Historiendaten geleert werden und bei Fortsetzung der Filterverarbeitung neu geladen werden. Alternativ könnten die für den nächsten Block benötigten Histo riendaten zu einem weiteren Speicherbereich 145 oder zu einem an die externe Speicherschnittstelle 130 angeschlossenen externen Speicher verschoben werden. Beide Verfahren sind nachteilig, da sie Zeit zum Verschieben der Daten erfordern. Dies verzögert entweder die Bedienung der Unterbrechung oder die Fortsetzung der ursprünglichen Aufgabe.
  • In 4 ist schematisch eine bevorzugte Alternative veranschaulicht. Während des Schreibens der resultierenden Daten an ihre Stelle im Speicher wird der momentane Abtastwert in einen kleineren Speicherbereich geschrieben. Beispielsweise werden Eingabedaten vom Ringpuffer 421 in den Historienpuffer 423 geschrieben, werden Eingabedaten vom Ringpuffer 431 in den Historienpuffer 433 geschrieben und werden Eingabedaten vom Ringpuffer 441 in den Historienpuffer 443 geschrieben. Jeder der Historienpuffer 423, 433 und 443 besitzt gerade die Größe, die gemäß der Breite des entsprechenden Filterfensters wie etwa des Filterfensters 410 zum Speichern der Historie benötigt wird. Beim Abschluss der Verarbeitung eines Datenblocks wird die jüngste Historie in diesem beschränkten Bereich gespeichert. Falls der Coprozessor unterbrochen werden muss, können die Daten in den Ringpuffern 421, 431 und 441 gelöscht werden, ohne die in den Historienpuffern 423, 433 und 443 gespeicherten Historiendaten zu überspielen. Diese Technik verzichtet auf die Notwendigkeit, die Daten vor Beginn der Unterbrechungsaufgabe neu zu laden oder anderswo zu speichern. In vielen Filteraufgaben ist genug Schreibspeicherbandbreite verfügbar, um ein Schreiben in die Historienpuffer zu erreichen, ohne dass Zusatzzyklen erforderlich sind. Ein weiterer Vorteil dieser Technik ist, dass für die Ringpuffer 421, 431 und 441 weniger Speicher als zuvor zugeordnet werden muss. In der früheren Technik mussten die Ringpuffer groß genug sein, um einen gesamten Datenblock und eine zusätzliche Menge, die gleich den geforderten Historiendaten ist, aufzunehmen. Die in 4 veranschaulichte Technik ermöglicht, die Größe der Ringpuffer 421, 431 und 441 zu verringern, so dass sie gerade zum Speichern eines Datenblocks ausreicht.
  • Viele bei der Audio- und Videosignalverarbeitung nützliche Algorithmen umfassen das Anpassen von Koeffizienten. Das heißt, es gibt einen Rückkopplungs pfad, der die während der Zeit ausgeführte Funktion ändert. Ein Beispiel solcher Algorithmen ist ein Modem, das eine Zeit braucht, um sich an die besondere verwendete Leitung und an den Betrieb des Modems am fernen Ende anzupassen. Anfangs scheint es, dass sich die Ausführung solcher adaptiver Funktionen in der Blockbetriebsart nachteilig auf die Konvergenz dieser adaptiven Funktionen auswirkt. Eine Überprüfung der betroffenen Mathematik zeigt bei vielen solchen Funktionen das Gegenteil. Die Menge der Anpassung, die zu einer besonderen Zeit ausgeführt werden kann, hängt allgemein von der zur Berechnung der Anpassung verfügbaren Datenmenge ab. Diese Menge der verfügbaren Daten hängt nicht davon ab, ob die Daten Abtastwert-weise oder in Abtastwertblöcken verarbeitet werden. In der Praxis ist die Anpassungsrate etwa die gleiche. Die Anpassung auf Abtastwert-Grundlage führt in vielen kleinen Schritten zur Konvergenz gegen die vollständig angepassten Koeffizienten. Die Anpassung auf der Grundlage von Datenblöcken führt in weniger und größeren Schritten zur Konvergenz. Dies ist so, da die größere verfügbare Datenmenge im Fall der Blockverarbeitung einen gößeren Fehlerterm für die Korrektur ansteuert. Allerdings ist der Durchschnittskonvergenzanstieg für die beiden Fälle derselbe. In Fällen, in denen wie etwa in dem vorangehenden Modembeispiel die meiste Anpassung bei der Initialisierung stattfindet, während die meiste Verarbeitung unter stationären Bedingungen stattfindet, gibt es wenig praktische Differenz. In Fällen, in denen das adaptive Filter einem bewegten Ziel folgen muss, ist nicht klar, ob die Anpassung auf Abtastwert-weiser Grundlage besser als die Anpassung auf Blockgrundlage ist. Falls sich der befolgte Prozess z. B. mit einer größeren Häufigkeit als das Inverse der Zeit der Blockgröße ändert, kann die Anpassung auf Blockgrundlage eine nutzlose Jagd in kleinen Schritten im Vergleich zur Abtastwert-weisen Anpassung verhindern. Somit besitzt die adaptive Filterung auf Blockgrundlage keinen allgemeinen Nachteil gegenüber der adaptiven Filterung auf Abtastwertgrundlage.
  • Vorzugsweise enthält der Befehlssatz des rekonfigurierbaren Hardware-Coprozessors 140 mehrere Nicht-Rechenanweisungen für Steuerfunktionen. Diese Steuerfunktionen sind nützlich bei der Zusammenarbeit zwischen dem digitalen Signalprozessorkern 110 und dem rekonfigurierbaren Hardware-Coprozessor 140.
  • Der erste dieser Nicht-Rechenbefehle ist ein Empfangsdatensynchronisationsbefehl. Dieser Befehl wird typisch in Verbindung mit Datenübertragungen verwendet, die durch die Direktspeicherzugriffsschaltung 120 behandelt werden. Der digitale Signalprozessorkern 110 steuert den Prozess, indem er die Eingabedatenübertragung über die Direktspeicherzugriffsschaltung 120 aufbaut. Der digitale Signalprozessorkern 110 sendet zwei Befehle an den rekonfigurierbaren Hardware-Coprozessor 140. Der erste Befehl ist der Empfangsdatensynchronisationsbefehl. Der zweite Befehl ist der gewünschte Rechenbefehl.
  • Der rekonfigurierbare Hardware-Coprozessor 140 bearbeitet die im Befehlsspeicher 141 gespeicherten Befehle auf einer Zuerst-Eingeben/Zuerst-Ausgeben-Grundlage. Beim Erreichen des Empfangsdatensynchronisationsbefehls hält der rekonfigurierbare Hardware-Coprozessor an. Der rekonfigurierbare Hardware-Coprozessor bleibt im Leerlauf, bis er von der Direktspeicherzugriffsschaltung 120 ein Steuersignal empfängt, das den Abschluss der Eingabedatenübertragung angibt. Es wird angemerkt, dass bei einem solchen Abschluss dieser Eingabedatenübertragung die Daten für den nächsten Block im Datenspeicher 145 oder im Einheitsspeicher 149 gespeichert werden. Die Direktspeicherzugriffsschaltung 120 kann in der Lage sein, mehrere in eine Warteschlange eingereihte Datenübertragungen zu behandeln. Dies ist im Gebiet als mehrere DMA-Kanäle bekannt. In diesem Fall muss der Empfangsdatensynchronisationsbefehl den entsprechenden DMA-Kanal notieren, der dem digitalen Signalprozessorkern 110 vor der Übertragung des Empfangsdatensynchronisationsbefehls bekannt ist. Die Direktspeicherzugriffsschaltung 120 sendet die Kanalnummer jeder abgeschlossenen Datenübertragung. Dies ermöglicht, dass der rekonfigurierbare Hardware-Coprozessor 140 den abgeschlossenen Direktspeicherzugriff an den entsprechenden Empfangsdatensynchronisationsbefehl anpasst. Der rekonfigurierbare Hardware-Coprozessor fährt nur dann mit dem nächsten Befehl fort, wenn ein Signal für den abgeschlossenen Direktspeicherzugriff denselben DMA-Kanal angibt, wie er in dem Empfangsdatensynchronisationsbefehl spezifiziert ist.
  • Nach diesem Abschlusssignal schreitet der rekonfigurierbare Hardware-Coprozessor 140 zum nächsten Befehl im Befehlsspeicher 141 fort. In diesem Fall ist der nächste Befehl ein Rechenbefehl, der die gerade geladenen Daten verwendet. Da dieser Rechenbefehl erst starten kann, wenn der vorausgehende Empfangsdatensynchronisationsbefehl abgeschlossen ist, stellt dies sicher, dass die richtigen Daten geladen worden sind.
  • Diese Kombination des Empfangsdatensynchronisationsbefehls und des Rechenbefehls verringert die Steuerbelastung des digitalen Signalprozessorkerns 110. Der digitale Signalprozessorkern 110 braucht lediglich die Direktspeicherzugriffsschaltung 120 einzustellen, so dass sie die Eingabedatenübertragung vornimmt, und das Befehlspaar an den rekonfigurierbaren Hardware-Coprozessor 140 sendet. Dies stellt sicher, dass die Eingabedatenübertragung vor Beginn der Rechenoperation abgeschlossen ist. Dies verringert stark die Menge des Software-Organisationsaufwands, den der digitale Signalprozessorkern 110 benötigt, um die Funktion des rekonfigurierbaren Hardware-Coprozessors 140 zu steuern. Ansonsten muss der digitale Signalprozessorkern möglicherweise eine Unterbrechung von der Direktspeicherzugriffsschaltung 120 empfangen, die den Abschluss der Eingabedatenladeoperation signalisiert. Es muss eine Unterbrechungsdienstroutine geschrieben werden, die die Unterbrechung bedient. Außerdem erfordert eine solche Unterbrechung ein Kontextumschalten, um den Coprozessorbefehl an den Befehlsspeicher zu senden, und ein weiteres Kontextumschalten, um von der Unterbrechung zurückzukehren. Folglich setzt der Empfangsdatensynchronisationsbefehl eine beträchtliche Kapazität in dem digitalen Signalprozessorkern zur produktiveren Verwendung frei.
  • Ein weiterer Nicht-Rechenbefehl ist ein Sendedatensynchronisationsbefehl. Der Sendedatensynchronisationsbefehl ist nahezu die Umkehrung des Empfangsdatensynchronisationsbefehls. Beim Erreichen des Sendedatensynchronisationsbefehls löst der rekonfigurierbare Hardware-Coprozessor 140 eine Direktspeicherzugriffsoperation aus. Diese Direktspeicherzugriffsoperation liest aus dem Datenspeicher 145 oder aus dem Einheitsspeicher 149 Daten zur Speicherung an einem anderen Systemort. Diese Direktspeicherzugriffsoperation kann durch den digitalen Signalprozessorkern 110 voreingestellt sein und wird lediglich beim Empfang eines Signals vom rekonfigurierbaren Hardware-Coprozessor 140 beim Feststellen des Sendedatensynchronisationsbefehls begonnen. Falls die Direktspeicherzugriffsschaltung 120 mehrere DMA-Kanäle unterstützt, muss der Sendedatensynchronisationsbefehl den ausgelösten DMA-Kanal spezifizieren. Alternativ kann der Sendedatensynchronisationsbefehl die Steuerparameter für die Direktspeicherzugriffsschaltung 120, die den DMA-Kanal enthält, spezifizieren, falls mehr als ein Kanal unterstützt wird. Beim Feststellen eines solchen Sendedatensynchronisationsbefehls kommuniziert der rekonfigurierbare Hardware-Coprozessor direkt mit der Direktspeicherzugriffsschaltung 120, um eine geeignete Direktspeicherzugriffsoperation einzurichten und zu beginnen.
  • Ein weiterer möglicher Nicht-Rechenbefehl ist ein Synchronisationsabschlussbefehl. Beim Feststellen eines Synchronisationsabschlussbefehls sendet der rekonfigurierbare Hardware-Coprozessor 140 eine Unterbrechung an den digitalen Signalprozessorkern 110. Beim Empfang einer solchen Unterbrechung wird sichergestellt, dass der digitale Signalprozessorkern 110 alle früheren Befehle, die an den rekonfigurierbaren Hardware-Coprozessor 140 gesendet worden sind, abgeschlossen hat. Je nach Anwendung kann es besser sein, über Unterbrechungen als über das Senden und Empfangen von Datensynchronisationsbefehlen zu steuern. Außerdem kann es besser sein, mehrere Operationen für den rekonfigurierbaren Hardware-Coprozessor 140 unter Verwendung von Sende- und Empfangsdatensynchronisationsbefehlen in eine Warteschlange einzureihen und daraufhin den digitalen Signalprozessorkern 110 am Ende der Warteschlange zu unterbrechen. Dies kann nützlich sein für höhere Steuerfunktionen durch den digitalen Signalprozessorkern 110, die auf die Warteschlangen-Operationen durch den rekonfigurierbaren Hardware-Coprozessor folgen.
  • 5 veranschaulicht eine weitere mögliche Anordnung der Schaltung 100. Die in 5 veranschaulichte Schaltung 100 enthält zwei rekonfigurierbare Hardware-Coprozessoren. Der digitale Signalprozessorkern 110 arbeitet mit ei nem ersten rekonfigurierbaren Hardware-Coprozessor 140 und mit einem zweiten rekonfigurierbaren Hardware-Coprozessor 180. Ein privater Bus 185 koppelt den ersten rekonfigurierbaren Hardware-Coprozessor 140 und den zweiten rekonfigurierbaren Hardware-Coprozessor 180. Diese Coprozessoren besitzen private Speicher, die den Speicherraum des digitalen Signalprozessorkerns 110 gemeinsam nutzen. Die Daten können durch einen Coprozessor, der in den Adressbereich schreibt, der vom privaten Speicher des anderen Coprozessors eingeschlossen wird, über den privaten Bus 185 übertragen werden. Alternativ kann jeder Coprozessor einen Ausgangsport haben, der zu einem Eingangsport des anderen Coprozessors gerichtet ist, wobei die Verbindungen zwischen den Coprozessoren im privaten Bus 185 eingeschlossen sind. Diese Konstruktion kann besonders nützlich sein für Produkte, in denen die Daten von einer durch einen Coprozessor behandelten Operation einer Art zu einer durch den zweiten Coprozessor behandelten Operation einer anderen Art fließen. Dieser private Bus befreit den digitalen Signalprozessorkern 110 davon, die Datenweitergabe entweder direkt oder über die Direktspeicherzugriffsschaltung 120 behandeln zu müssen.
  • Die 6 bis 9 veranschaulichen die Konstruktion eines beispielhaften rekonfigurierbaren Hardware-Coprozessors. Dieser besondere Coprozessor wird ein Mehrfachmultiplikations-Akkumulator genannt. Die Multiplikations-Akkumulationsoperation, bei der die Summe mehrerer Produkte gebildet wird, wird in der Signalverarbeitung umfassend verwendet. Um diese Funktionen sind viele Filteralgorithmen gebaut.
  • 6 veranschaulicht die allgemeine Gesamtarchitektur des Mehrfachmultiplikations-Akkumulators 140. In den Datenspeicher 145 und in den Koeffizientenspeicher 147 können 128-Bit-Wörter geschrieben werden. Diese Schreiboperation wird durch den digitalen Signalprozessorkern 110 oder durch die Direktspeicherzugriffsschaltung 120 gesteuert. Der Adressgenerator 150 erzeugt die Adressen für das Zurückrufen der von dem Coprozessor verwendeten Daten und Koeffizienten. Diese Leseoperation bearbeitet Datenwörter mit 128 Bits aus jedem Speicher.
  • Diese zurückgerufenen Datenwörter werden der Eingabeformatierungseinrichtung 160 zugeführt. Die Eingabeformatierungseinrichtung 160 führt allgemein verschiedene Schiebe- und Ausrichtoperationen aus, um die 128-Bit-Eingabedatenwörter in der für die gewünschte Berechnung erforderlichen Reihenfolge anzuordnen. Die Eingabeformatierungseinrichtung gibt die 128-Bit (8-mal-l6-Bit) Data X, die 128-Bit (8-mal-l6-Bit) Data Y und die 64-Bit (2-mal-32-Bit) Data Z aus.
  • Diese drei Datenströme werden dem Datenpfad 170 zugeführt. Der Datenpfad 170 ist der Betriebsabschnitt des Coprozessors. Wie unten weiter beschrieben wird, enthält der Datenpfad 170 mehrere Hardware-Multiplizierer und -Addierer die auf verschiedene Weise verbunden werden können, um eine Vielzahl von Multiplikations-Akkumulations-Operationen auszuführen. Der Datenpfad 170 gibt zwei Addiererdatenströme aus. Jeder von diesen umfasst 4 32-Bit-Datenwörter.
  • Diese zwei Datenströme liefern die Eingaben in die Ausgabeformatierungseinrichtung 180. Die Ausgabeformatierungseinrichtung 180 ordnet die beiden Datenströme in zwei 128-Bit-Datenwörter um, um sie in die beiden Speicher zurückzuschreiben. Die Adressen für diese Schreiboperationen werden durch den Adressgenerator 150 berechnet. Diese Umordnung kann für die Ausrichtung an den Speicherwortgrenzen sorgen.
  • Die Operationen des Coprozessors 140 stehen unter der Steuerung der Steuereinheit 190. Die Steuereinheit 190 hat die Befehle aus dem Befehlsspeicher 141 zurückgerufen und liefert die entsprechende Steuerung in dem Coprozessor 140.
  • In 7 ist die Konstruktion der Eingabeformatierungseinrichtung 160 veranschaulicht. Jeder der zwei Datenströme zu 128 Bits wird einem Eingang der Multiplexer 205 und 207 zugeführ. Jeder Multiplexer wählt unabhängig eine Eingabe zur Speicherung in seinem entsprechenden Register 215 und 217 aus. Der Multiplexer 205 kann auswählen, ebenfalls die Inhalte des Registers 215 und einen der beiden Datenströme wiederzuverwerten. Der Multiplexer 207 kann lediglich einen der Eingabedatenströme auswählen. Die Multiplexer 201 und 203 können die In halte des Registers 215 auswählen oder können das Wiederverwerten der Inhalte ihrer jeweiligen Register 211 und 213 auswählen. Der Multiplexer 129 wählt die Inhalte eines der beiden Register 211 oder 213 aus, um sie den oberen Bits der Schiebeeinrichtung 221 zuzuführen. Die unteren Bits werden vom Register 215 zugeführt. Die Schiebeeinrichtung 221 verschiebt lediglich 128 Bits ihrer 256 Eingabebits und wählt sie aus. Diese 128 Bits werden der Duplizierungs/Umlagerungs-Einheit 223 zugeführt. Die Duplizierungs/Umlagerungs-Einheit 223 kann einen Abschnitt ihrer Eingabe zu vollen 128 Bits duplizieren oder kann die Datenreihenfolge umordnen. Die auf diese Weise sortierten Daten werden vorübergehend im Register 225 gespeichert. Dies bildet die Eingabe der Data X in den Datenpfad 170. Die Ausgabe des Multiplexers 207 wird direkt dem Multiplexer 233 zugeführt sowie über das Register 217 geliefert. Der Multiplexer 233 wählt 192 Bits aus den ihm gelieferten Bits aus. Die oberen 128 Bits bilden die in den Datenpfad 170 eingegebenen Data Y. Diese Bits können über den Multiplexer 235 in Umlauf gebracht werden. Die unteren 64 Bits bilden die in den Datenpfad 170 eingegebenen Data Z.
  • 8 veranschaulicht in Form eines Blockschaltbilds die Konstruktion des Datenpfads 170. An die Doppelmultiplikations-Addierer 310, 320, 330 und 340 werden verschiedene Segmente der von der Eingabeformatierungseinrichtung gelieferten Eingaben Data X und Data Y geliefert. Wie gezeigt ist, werden das erste und das zweite 16-Bit-Datenwort Data X[0:1] und Data Y[0:1] mit dem Doppelmultiplikations-Addierer 310 gekoppelt, werden das dritte und das vierte 16-Bit-Datenwort Data X[2:3] und Data Y[2:3] mit dem Doppelmultiplikations-Addierer 320 gekoppelt, werden das fünfte und das sechste 16-Bit-Datenwort Data X[4:5] und Data Y[4:5] mit dem Doppelmultiplikations-Addierer 330 gekoppelt und werden das siebente und das achte 16-Bit-Datenwörter Data X[6:7] und Data Y[6:7] mit dem Doppelmultiplikations-Addierer 340 gekoppelt. Jede dieser Einheiten ist völlig gleich, wobei lediglich der Doppelmultiplikations-Addierer 310 ausführlich beschrieben wird. Die niedrigstwertigen 16 Bits der Data X und der Data Y liefern die Eingaben in den Multiplizierer 311. Der Multiplizierer 311 empfängt das Paar der 16-Bit-Eingaben und erzeugt ein 32-Bit-Produkt. Die ses Produkt wird in einem Pipeline-Ausgaberegisterpaar gespeichert. Die 32-Bit-Ausgabe wird sowohl an die Vorzeichenerweiterungseinheit 313 als auch an die 8-Bit-Linksschiebeeinrichtung 314 geliefert. Die Vorzeichenerweiterungseinheit 313 wiederholt das Vorzeichenbit des Produkts, d. h. das höchstwertige Bit, auf 40 Bits. Die 8-Bit-Linksschiebeeinrichtung 314 verschiebt das 32-Bit-Produkt nach links und füllt die leergewordenen niedrigstwertigen Bits mit Nullen auf. Eine dieser zwei 40-Bit-Größen wird im Multiplexer 316 ausgewählt, um sie an einen ersten Eingang des 40-Bit-Addierers 319 anzulegen. Auf ähnliche Weise werden an die jeweiligen Eingänge des Multiplizierers 312 die zweithöchstwertigen 16 Bits der Data X und der Data Y geliefert. Der Multiplizierer 312 empfängt die zwei 16-Bit-Eingaben und erzeugt ein 32-Bit-Produkt. Das Produkt wird in einem Pipeline-Registerpaar gespeichert. Die 8-Bit-Rechtsschiebeeinrichtung 315 verschiebt das Produkt um 8 Bits nach rechts und führt die leergewordenen höchstwertigen Bits mit Nullen auf. Der Multiplexer 317 wählt unter drei Größen aus. Die erste Größe ist eine Verkettung der 16 Bits der Data X und der 16 Bits der Data Y an der Eingabe. Diese Eingabe ermöglicht, dass der Multiplizierer 312 umgangen wird. Falls die (wie durch die Vorzeichenerweiterungseinrichtung 318 vorzeichenerweiterten) 32 Bits ausgewählt werden, werden sie zu dem durch den Multiplizierer 311 erzeugten Produkt addiert. Die zweite Größe ist das durch den Multiplizierer 312 gelieferte Produkt. Die dritte Größe ist die verschobene Ausgabe der 8-Bit-Rechtsschiebeeinrichtung 315. Die ausgewählte Größe vom Multiplexer 317 wird durch die Vorzeichenerweiterungseinheit 318 auf 40 Bits vorzeichenerweitert. Die vorzeichenerweiterte 40-Bit-Größe ist die zweite Eingabe in den 40-Bit-Addierer 319. Obgleich die 16-Bit-Eingabefaktoren lediglich 32 Bits erzeugen würden, werden dem Addierer 319 40 Bits zugeführt, um einen dynamischen Bereich für mehrere Multiplikations-Akkumulationen zu schaffen.
  • Die Ausgaben der Addierer 319 in jeder der Doppelmultiplizierer-Addierereinheiten 310, 320, 330 und 340 werden als Ausgabe adder_st1_outp der ersten Addiererstufe geliefert. Lediglich die 32 höchstwertigen Addiererausgabebits werden mit der Ausgabe verbunden. Dies liefert eine 4-mal-32-Bit- oder 128-Bit-Ausgabe.
  • Eine zweite Stufe von 40-Bit-Addierern enthält die Addierer 353 und 355. Die Addierer 353 addieren die Ausgaben der Doppelmultiplikations-Addierereinheiten 310 und 320. Der Addierer 355 addiert die Ausgaben der Doppelmultiplizierer-Addierereinheiten 330 und 340. In der zweiten Addiererstufe treten zwei weitere Datenpfade bei. Die niedrigstwertigen 32 Bits der Eingabe Data Z werden vorübergehend im Pipeline-Register 351 gespeichert. Diese 32-Bit-Größe wird in der Vorzeichenerweiterungseinheit 352 auf 40 Bits vorzeichenerweitert. Auf ähnliche Weise werden die höchstwertigen Bits der Eingabe Data Z vorübergehend im Pipeline-Register 357 gespeichert. Diese Größe wird durch die Vorzeichenerweiterungseinheit 358 auf 40 Bits vorzeichenerweitert.
  • Die dritte Addiererstufe enthält die Addierer 361, 363, 367 und 368. Der Addierer 361 ist 40 Bits breit. Er addiert die Ausgabe des Addierers 353 und die vorzeichenerweiterten niedrigstwertigen Bits von Data Z. Die 32 höchstwertigen Bits dieser Summe werden als Teil der Ausgabe adder_st3_outp der dritten Stufe geliefert. Ähnlich ist der Addierer 363 40 Bits breit und addiert die Ausgabe des Addierers 355 und die vorzeichenerweiterten höchstwertigen Bits von Data Z. Die 32 höchstwertigen Bits dieser Summe werden als Teil der Ausgabe adder_st3_outp der dritten Stufe geliefert. Die Verbindungen zu den Addierern 367 und 368 sind wesentlich komplizierter. Wie durch den Multiplexer 364 ausgewählt worden ist, ist die erste Eingabe in den Addierer 367 entweder die Ausgabe des Addierers 353 der zweite Stufe oder eine in Umlauf gebrachte Ausgabe. Der Multiplexer 371 wählt aus den 8 Pipeline-Registern eine Größe aus, um sie in Umlauf zu bringen. Die zweite Eingabe in den Addierer 367 wird durch den Multiplexer 365 ausgewählt. Dies ist entweder die Eingabe der niedrigstwertigen Data Z, wie sie durch die Vorzeichenerweiterungseinheit 353 vorzeichenerweitert sind, die direkte Ausgabe des Addierers 368, die Ausgabe des Addierers 355 oder eine feste Rundungsgröße rnd_add. Die Addition der festen Rundungsgröße rnd_add veranlasst, dass der Addierer die Größe an dem anderen Eingang rundet. Die Ausgabe des Addierers 367 liefert die Eingabe in die veränderliche Rechtsschiebeeinrichtung 375. Die veränderliche Rechtsschiebeeinrichtung 375 verschiebt die Summe um einen ausgewählten Betrag von 0 bis 15 Bits nach rechts.
  • Die 32 höchstwertigen Bits dieser Ausgabe bilden einen Teil der Ausgabe adder_st3_outp der dritten Stufe. Die erste Eingabe in den Addierer 368 ist die Ausgabe des Addierers 355. Die zweite Eingabe in den Addierer 368 wird durch den Multiplexer 366 ausgewählt. Der Multiplexer 366 wählt entweder die Ausgabe des Addierers 353, die Eingabe der höchstwertigen Data Z, wie sie durch die Vorzeichenerweiterungseinheit 358 vorzeichenerweitert worden sind, die Umlaufeingabe oder die feste Rundungsgröße rnd_add aus. Der Multiplexer 373 wählt aus den 8 Pipeline-Registern am Ausgang des Addierers 368 die Umlaufgröße aus. Die Ausgabe des Addierers 368 liefert die Eingabe in die veränderliche Rechtsschiebeeinrichtung 377. Die veränderliche Rechtsschiebeeinrichtung 377 verschiebt die Summe um einen ausgewählten Betrag von 0 bis 15 Bits nach rechts. Die 32 höchstwertigen Bits ihrer Ausgabe bilden einen weiteren Teil der Ausgabe adder_st3_outp der dritten Stufe.
  • 9 veranschaulicht die Konstruktion der in 6 veranschaulichten Ausgabeformatierungseinrichtung.
  • Die 10 bis 13 veranschaulichen verschiedene Arten, in der der Mehrfachmultiplikations-Akkumulations-Coprozessor 160 konfiguriert sein kann. Der Datenfluss in jedem dieser Beispiele kann durch richtige Auswahl der Multiplexer im Datenpfad 170 erreicht werden. Die folgende Beschreibung notiert die entsprechenden Multiplexerauswahlen, wenn sie relevant sind, um den gewünschten Datenfluss zu erreichen.
  • 10 veranschaulicht den Datenfluss in einem reellen Filter mit endlichem Impuls (FIR). An die jeweiligen Multiplizierer 311, 312, 321, 322, 331, 3332, 341 und 342 werden die Daten D0 bis D7 und die Koeffizienten C0 bis C7 geliefert. In diesem Fall wählen jeweils Multiplexer, die dem Multiplexer 317 in der Doppelmultiplikations-Additionseinheit 310 entsprechen, das Produkt der jeweiligen Multiplizierer 312, 322, 332 und 342 aus, wobei Paare der Produkte in den Addierern 319, 329, 339 und 349 summiert werden. Paare dieser Summen werden weiter in den Addierern 353 und 355 summiert. Die durch die Addierer 353 und 355 gebildeten Summen werden im Addierer 368 addiert. In diesem Fall wählt der Multiplexer 366 die durch den Addierer 353 erzeugte Summe für den zweiten Eingang in den Addierer 368 aus. Der Addierer 367 führt die Akkumulationsoperation aus. Der Multiplexer 364 wählt die Ausgabe des Multiplexers 371, der ein Pipeline-Register für den Umlauf als die erste Eingabe auswählt, als die erste Eingabe in den Addierer 363 aus. Der Multiplexer 365 wählt die Ausgabe des Addierers 368 und die zweite Eingabe in den Addierer 363 aus. Der Addierer 367 erzeugt die Filterausgabe. Es wird angemerkt, dass dieser Datenfluss die Summe der 8 Produkte erzeugt, die mit den früher summierten Produkten gebildet werden. Diese Operation ist allgemein als Multiplikations-Akkumulation bekannt und wird bei Filterfunktionen umfassend verwendet. Die Konfiguration des Datenpfads 170, wie sie in 7 veranschaulicht ist, ermöglicht die Berechnung der akkumulierten Summe von 8 Produkten. Dies hat den Durchsatz in diesem Datenfluss gegenüber der typischen Einzelprodukt-Akkumulation, die von dem digitalen Signalprozessorkern 110 geliefert wird, stark erhöht.
  • 11 veranschaulicht den Datenfluss eines komplexen FIR-Filters. Dieser Datenfluss ist ähnlich dem des in 7 veranschaulichten reellen FIR-Filters. Der Datenfluss aus 8 bearbeitet gleichzeitig den Real- und den Imaginärteil der Berechnung. Die Daten und Koeffizienten werden den jeweiligen Multiplizierern 311, 312, 321, 322, 331, 3332, 341 und 342 zugeführt. Die Multiplexer, die dem Multiplexer 317 in der Doppelmultiplikations-Additionseinheit 310 entsprechen, wählen jeweils das Produkt der jeweiligen Multiplizierer 312, 322, 332 und 342 aus, wobei Paare der Produkte in den Addierern 319, 329, 339 und 349 summiert wird. Paare dieser Summen werden in den Addieren 353 und 355 weiter summiert. Der reelle und der komplexe Teil werden durch die Addierer 367 und 368 getrennt behandelt. Der Multiplexer 365 wählt die Summe des Addierers 353 für die zweite Eingabe in den Addierer 367 aus. Der Multiplexer 364 wählt die Ausgabe des Multiplexers 371, der ein Pipeline-Register für den Umlauf auswählt, als die erste Eingabe in den Addierer 363 aus. Der Addierer 368 empfängt die Summe des Addierers 355 als seine erste Eingabe. Der Multiplexer 366 wählt die Umlaufausgabe des Multiplexers 373 für die zweite Eingabe in den Addierer 368 aus. Somit erzeugt das Paar der Addierer 367 und 368 den Real- und den Imaginärteil der Multiplikations-Akkumulationsoperation.
  • 12 veranschaulicht den Datenfluss in einer Koeffizientenaktualisierungsoperation. Die Fehlerterme E0 bis E3 werden in den Multiplizierern 311, 321, 331 und 341 mit den entsprechenden Gewichtungstermen W0 bis W3 multipliziert. Die zu aktualisierenden momentanen Koeffizienten C0 bis C3 werden so, wie sie durch die Multiplexer 317, 327, 337 und 347 ausgewählt werden, direkt in die Addierer 319, 329, 339 und 349 eingegeben. Die jeweiligen Produkte werden zu den momentanen Werten in den Addierern 319, 329, 339 und 349 addiert. In diesem Fall wird die Ausgabe durch die Addierer 319, 329, 339 und 349 über die Ausgabe adder_st1_outp der Addiererstufe 1 erzeugt.
  • 13 veranschaulicht den Datenfluss in einer schnellen Fourier-Transformationsoperation (FFT-Operation). Die FFT-Operation beginnt mit einer 16-Bit-mal-32-Bit-Multiplikationsoperation. Diese wird wie folgt erreicht. Jeder Doppelmultiplikations-Addierer 310, 320, 330 und 340 empfängt an einem Eingang jedes der gepaarten Multiplizierer 311 und 312, 321 und 322, 331 und 332 und 341 und 341 eine jeweilige 16-Bit-Größe A0 bis A3. Die Multiplizierer 311, 321, 331 und 341 empfangen die 16 höchstwertigen Bits der 32-Bit-Größe B0H bis B3H. Die Multiplizierer 312, 322, 332 und 342 empfangen die 16 niedrigstwertigen Bits der 32-Bit-Größe B0L bis B3L. Die Schiebeeinrichtungen 314, 315, 324, 325, 334, 335, 344 und 345 werden verwendet, um die Produkte auszurichten. Die Multiplexer 316, 326, 336 und 346 wählen die linksverschobene Größe von den jeweiligen 8-Bit-Linksschiebeeinrichtungen 314, 324, 334 und 344 für die erste Eingabe in die jeweiligen Addierer 319, 329, 339 und 349 aus. Die Multiplexer 317, 327, 337 und 347 wählen die rechtsverschobene Größe von den jeweiligen 8-Bit-Rechtsschiebeeinrichtungen 315, 325, 335 und 345 als die zweiten Eingaben in die jeweiligen Addierer 319, 329, 339 und 349 aus. Diese zwei entgegengesetzt gerichteten 8-Bit-Verschiebungen liefern eine effektive 16-Bit-Verschiebung zum Ausrichten der Teilprodukte für eine 16-Bit-mal-32-Bit-Multiplikation. In den Addierern 353 und 355 werden Paare dieser Summen weiter summiert. Der Ad dierer 361 addiert die Eingabe Data Z0 mit der Ausgabe vom Addierer 353. Der Multiplexer 364 wählt die Summe des Addierers 353 als die erste Eingabe in den Addierer 367 aus. Der Multiplexer 365 wählt diese Eingabe Data Z0 als die zweite Eingabe in den Addierer 367 aus. Der Addierer 368 empfängt die Summe des Addierers 355 als seine erste Eingabe. Der Multiplexer 366 wählt die Eingabe Data Z1 als die zweite Eingabe in den Addierer 366 aus. Der Addierer 363 addiert die Summe des Addierers 355 und die Eingabe Data Z1. Die Ausgabe der FFT-Operation wird durch die Summenausgaben der Addierer 361, 367, 368 und 363 geliefert.
  • Die unten stehende Liste ist eine Teilliste einiger der Befehle, die durch den Datenpfad 170 der in den 3 bis 6 veranschaulichten Mehrfachmultiplikations-Akkumulationseinheit 140 ausgeführt werden können.
    vector_add_16b(len, pdata, pcoeff, pout)
    vector_add_32b(len, pdata, pcoeff, pout)
    vector_mpy_16b(len, pdata, pcoeff, pout)
    vector_mpy_1632b(len, pdata, pcoeff pout)
    vector_mpy_32b(len, pdata, pcoeff, pout)
    scalar_vector_add-16b(len, pdata, pcoeff, pout)
    scalar_vector_add_32b(len, pdata, pcoeff, pout)
    scalar_vector_mpy_16b(len, pdata, pcoeff pout)
    scalar_vector_mpy_1632b(len, pdata, pcoeff pout)
    scalar_vector_mpy_32b(len, pdata, pcoeff pout)
  • Bei diesen Operationen gibt der Operationsname die Datengröße ein. Das Parameterfeld "len" gibt die Länge der Funktion an. Das Parameterfeld "pdata" ist ein Zeiger auf die Anfangsspeicheradresse, die die Eingabedaten enthält. Das Parameterfeld "pcoeff" ist ein Zeiger auf die Anfangsspeicheradresse, die die Koeffizienten für das Filter enthält. Das Parameterfeld "pout" ist ein Zeiger auf die Anfangsspeicheradresse zum Empfangen der Ausgabe. Wie zuvor beschrieben wurde, zeigen diese Zeiger vorzugsweise auf die jeweiligen Plätze im Datenspeicher 145 und im Koeffizientenspeicher 147 oder im Einheitsspeicher 149.
    FFT_real(fft_size, pdata, pcoeff, pout)
    FFT_complex(fft_size, pdata, pcoeff, pout)
  • Wie zuvor in Verbindung mit 10 beschrieben wurde, enthalten die schnellen Fourier-Transformationsoperationen vorzugsweise alle 32-Bit-Daten und 16-Bit-Koeffizienten. Das Parameterfeld fft_size definiert die Größe der Funktion. Die weiteren aufgeführten Parameterfelder sind wie oben beschrieben.
    FIR_real(us, ds, len, blocksize, pdata, pcoeff, pout)
    FIR_complex_real(us, ds, len, blocksize, pdata, pcoeff, pout)
    FIR_complex_real_sum(us, ds, len, blocksize, pdata, pcoeff, pout)
    FIR_complex(us, ds, len, blocksize, pdata, pcoeff, pout)
  • Die Operationen der Filter mit endlicher Impulsantwort unterscheiden sich in Bezug auf den Typ der Daten und Koeffizienten. Die Operation FIR_real verwendet reelle Daten und reelle Koeffizienten. Die Operation FIR_complex_real verwendet komplexe Daten und reelle Koeffizienten. Die Operation FIR_complex_real_sum summiert die komplexen und die reellen Teile unter Verwendung komplexer Daten und reeller Koeffizienten getrennt. Die Operation FIR_complex verwendet sowohl komplexe Daten als auch komplexe Koeffizienten. Das Parameterfeld us gibt das Überabtastungsverhältnis an. Das Parameterfeld ds gibt das Unterabtastungsverhältnis an. Das Parameterfeld blocksize gibt die Größe der verwendeten Operationsblöcke an. Die weiteren Parameterfelder sind wie zuvor beschrieben.
  • Die Parameter aller dieser Befehle könnten entweder Sofortwerte oder für die Daten, Koeffizienten und Ausgabeplätze 16-Bit-Adresszeiger auf den Coprozessorspeicher sein. Diese Auswahl bedeutet, dass die Befehle für das Filter mit endlichem Impuls, die am längsten sind, etwa fünf 16-Bit-Befehlswörter erfordern. Dies ist eine unbedeutende Menge an Busverkehr. Alternativ könnten die Para meterfelder indirekt sein, d. h. für jeden Parameter ein Register aus einer beschränkten Menge von Registern identifizieren. Für jeden Parameter könnte es einen Satz von 8 Registern geben, so dass in dem Befehlswort lediglich jeweils 3 Bits erforderlich sind. Da lediglich eine beschränkte Anzahl besonderer Filtereinstellungen erforderlich sind, ist dies möglich.

Claims (9)

  1. Datenverarbeitungssystem (100), das auf einer einzigen integrierten Schaltung angeordnet ist, mit: einem Datenbus (101); einem Adressbus (103); einem digitalen Signalprozessorkern (110), der an den Datenbus und an den Adressbus angeschlossen und so betreibbar ist, dass er über den Datenbus auf einen Speicher an einer Adresse innerhalb eines Adressraums von an den Adressbus gelieferten Adressen zugreift und Coprozessorbefehle erzeugt; einem Coprozessor (140), der an den Datenbus (100), den Adressbus (130) und den digitalen Signalverarbeitungskern (110) angeschlossen ist; dadurch gekennzeichnet, dass: der Coprozessor (140) in dem Adressraum des digitalen Signalprozessorkerns einen lokalen Speicher (145) besitzt und in Reaktion auf Befehle, die von dem digitalen Signalprozessorkern erzeugt werden, vorgegebene Datenverarbeitungsoperationen an Daten, die in dem lokalen Speicher (145) gespeichert sind, ausführt und Ergebnisse parallel zu dem digitalen Signalprozessorkern (110) in dem lokalen Speicher (145) speichert; und ferner mit einer Direktspeicherzugriffsschaltung (120) unter der Steuerung des digitalen Signalprozessorkerns (110), die Daten zwischen im Voraus definierten Adressen im Speicher in dem Adressraum selbstständig übertragen kann, einschließlich der Übertragung von Daten zu und von dem lokalen Speicher (145) des Coprozessors (140).
  2. Datenverarbeitungssystem (100) nach Anspruch 1, bei dem: der Coprozessor (145) in Reaktion auf einen Sendedatensynchronisationsbefehl der Direktspeicherzugriffsschaltung (120) meldet, eine vorgegebene Speicherübertragung von Daten aus dem lokalen Speicher (145) auszulösen.
  3. Datenverarbeitungssystem (100) nach Anspruch 1 oder Anspruch 2, bei dem: der Coprozessor (145) in Reaktion auf einen Unterbrechungsbefehl ein Unterbrechungssignal an den digitalen Signalprozessorkern (110) sendet.
  4. Datenverarbeitungssystem (100) nach einem vorhergehenden Anspruch, bei dem: jeder Befehl eine Angabe über einen Dateneingabeplatz in dem lokalen Speicher (145) enthält; und der Coprozessor (140) in Reaktion auf diese Befehle Daten aus dem lokalen Speicher (145) zurückruft und dabei bei dem angegebenen Dateneingabeplatz beginnt.
  5. Datenverarbeitungssystem (100) nach einem vorhergehenden Anspruch, bei dem: jeder Befehl eine Angabe über einen Datenausgabeplatz in dem lokalen Speicher (145) enthält; und der Coprozessor (140) in Reaktion auf diese Befehle resultierende Daten von einer Datenverarbeitungsoperation, die dem Befehl entspricht, in dem lokalen Speicher (145) speichert und dabei bei dem angegebenen Dateneingabeplatz beginnt.
  6. Verfahren zur Datenverarbeitung unter Verwendung eines Datenbusses (101), eines Adressbusses (103), eines digitalen Signalprozessorkerns (110) und einer Direktspeicherzugriffseinheit (120), die Daten zwischen im Voraus definierten Adressen im Speicher innerhalb des Adressraums unter der Steuerung des digitalen Signalprozessorkerns (110) selbstständig übertragen kann, mit den folgenden Schritten: Anordnen eines lokalen Speichers (145) in dem Coprozessor (140), der Adressen in einem Speicherabbild eines digitalen Signalprozessorkerns (110) besitzt, auf die durch die Direktspeicherzugriffseinheit (120) zugegriffen werden kann, Übertragen von Daten in einen ersten Abschnitt des lokalen Speichers (145), Senden eines Befehls von dem digitalen Signalprozessorkern (110) an den Coprozessor (140), um den Coprozessor (140) dazu zu veranlassen, eine entsprechende Datenverarbeitungsoperation parallel zu dem digitalen Signalprozessorkern (11) auszuführen, und Speichern von Ergebnissen in einem zweiten Abschnitt des lokalen Speichers (145) und Übertragen der Ergebnisse aus dem lokalen Speicher (145); wobei das Format das Befehls jener eines Unterroutinenaufrufs ist, so dass der Befehl von einem Programmierer einfach in einen Unterroutinenaufruf, der von einem digitalen Signalprozessorkern ausgeführt wird, umgesetzt werden kann, falls ein digitaler Signalprozessorkern mit ausreichender Rechenkapazität für die Erfüllung der Verarbeitungsanforderungen verfügbar wird, um die Datenverarbeitungsoperation auszuführen, wobei Daten dann von der Unterroutine an Adressen übertragen werden, die dem ersten Abschnitt des lokalen Speichers (145) entsprechen, und wobei durch die Unterroutine Ergebnisse an Adressen gespeichert werden, die dem zweiten Abschnitt des lokalen Speichers (145) entsprechen.
  7. Verfahren nach Anspruch 6, bei dem: der Schritt des Übertragens von Daten an den lokalen Speicher das Speichern von Daten an einem nächsten Platz in einem zirkulär organisierten Speicherbereich, der als ein Eingangspuffer dient, umfasst.
  8. Verfahren nach Anspruch 6 oder nach Anspruch 7, bei dem: der Schritt des Speicherns von Ergebnissen in dem lokalen Speicher das Speichern von Daten an einem nächsten Platz in einem zirkulär organisierten Speicherbereich, der als ein Ausgangspuffer dient, umfasst.
  9. Verfahren nach Anspruch 8, das ferner umfasst: Speichern von Eingangsdaten in einem zirkulär organisierten Historienpuffer, der eine Größe besitzt, die einer Zeitdauer der entsprechenden Datenverarbeitungsoperation entspricht, im Wesentlichen konkurrent zu dem Schritt des Speicherns von Ergebnissen in dem lokalen Speicher.
DE69919059T 1998-02-04 1999-02-03 Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren Expired - Lifetime DE69919059T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7366898P 1998-02-04 1998-02-04
US73668P 1998-02-04

Publications (2)

Publication Number Publication Date
DE69919059D1 DE69919059D1 (de) 2004-09-09
DE69919059T2 true DE69919059T2 (de) 2005-01-27

Family

ID=22115061

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69919059T Expired - Lifetime DE69919059T2 (de) 1998-02-04 1999-02-03 Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren

Country Status (5)

Country Link
US (1) US6256724B1 (de)
EP (1) EP0945788B1 (de)
JP (1) JPH11272631A (de)
KR (1) KR100572945B1 (de)
DE (1) DE69919059T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009037158A1 (de) * 2009-08-04 2011-02-17 Lenze Automation Gmbh Datenverarbeitungseinheit und Steuervorrichtung zur Steuerung eines elektrischen Antriebs

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
WO2000077652A2 (de) 1999-06-10 2000-12-21 Pact Informationstechnologie Gmbh Sequenz-partitionierung auf zellstrukturen
US6789183B1 (en) * 1999-09-28 2004-09-07 Texas Instruments Incorporated Apparatus and method for activation of a digital signal processor in an idle mode for interprocessor transfer of signal groups in a digital signal processing unit
US6606700B1 (en) * 2000-02-26 2003-08-12 Qualcomm, Incorporated DSP with dual-mac processor and dual-mac coprocessor
AU2001266571A1 (en) * 2000-05-11 2001-11-20 Hanna, Michael Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US7075565B1 (en) * 2000-06-14 2006-07-11 Landrex Technologies Co., Ltd. Optical inspection system
US7595659B2 (en) 2000-10-09 2009-09-29 Pact Xpp Technologies Ag Logic cell array and bus system
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7152151B2 (en) * 2002-07-18 2006-12-19 Ge Fanuc Embedded Systems, Inc. Signal processing resource for selective series processing of data in transit on communications paths in multi-processor arrangements
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
DE10139610A1 (de) 2001-08-11 2003-03-06 Daimler Chrysler Ag Universelle Rechnerarchitektur
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US20030041300A1 (en) * 2001-08-23 2003-02-27 Koninklijke Philips Electronics N.V. Universal device for processing Reed-Solomon forward error-correction encoded messages
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
DE10392560D2 (de) 2002-01-19 2005-05-12 Pact Xpp Technologies Ag Reconfigurierbarer Prozessor
WO2003071432A2 (de) 2002-02-18 2003-08-28 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
GB0215033D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US7802108B1 (en) * 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
JP2006518058A (ja) * 2002-10-31 2006-08-03 ロッキード マーティン コーポレーション 改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法
US7373432B2 (en) 2002-10-31 2008-05-13 Lockheed Martin Programmable circuit and related computing machine and method
US8667252B2 (en) * 2002-11-21 2014-03-04 Stmicroelectronics, Inc. Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
JP2004355049A (ja) * 2003-05-26 2004-12-16 Sony Corp プロセッサシステム
US8892821B2 (en) * 2003-12-10 2014-11-18 International Business Machines Corporation Method and system for thread-based memory speculation in a memory subsystem of a data processing system
US7130967B2 (en) * 2003-12-10 2006-10-31 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
JP2005202767A (ja) * 2004-01-16 2005-07-28 Toshiba Corp プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路
US20060101250A1 (en) 2004-10-01 2006-05-11 Lockheed Martin Corporation Configurable computing machine and related systems and methods
US7920584B2 (en) 2005-05-04 2011-04-05 Arm Limited Data processing system
US7630388B2 (en) 2005-05-04 2009-12-08 Arm Limited Software defined FIFO memory for storing a set of data from a stream of source data
WO2006117504A1 (en) 2005-05-04 2006-11-09 Arm Limited Use of a data engine within a data processing apparatus
US7281118B2 (en) * 2005-08-05 2007-10-09 International Business Machines Corporation Sending thread message generated using DCR command pointed message control block storing message and response memory address in multiprocessor
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
JP4493626B2 (ja) * 2006-05-25 2010-06-30 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
KR20090031783A (ko) * 2006-07-14 2009-03-27 인터디지탈 테크날러지 코포레이션 심볼 레이트 하드웨어 가속기
JP4967555B2 (ja) * 2006-09-13 2012-07-04 富士通株式会社 マルチプロセッサシステム
US7949801B2 (en) * 2007-01-31 2011-05-24 Pitney Bowes Inc. Main processor initiating command timing signal via DMA to coprocessor in order to synchronize execution of instructions
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8156307B2 (en) 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
KR101867336B1 (ko) * 2011-07-11 2018-06-15 삼성전자주식회사 다중 프로세서를 지원하는 인터럽트 발생을 위한 장치 및 방법
JP6115564B2 (ja) * 2012-03-13 2017-04-19 日本電気株式会社 データ処理システム、半導体集積回路およびその制御方法
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
DE102013212842A1 (de) * 2013-07-02 2015-01-08 Robert Bosch Gmbh Verfahren zum Betreiben eines Steuergeräts sowie Steuergerät mit einer Modellberechnungseinheit
US9785444B2 (en) 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
JP5949977B1 (ja) * 2015-02-19 2016-07-13 日本電気株式会社 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア
CN105824706B (zh) * 2015-12-31 2020-11-06 华为技术有限公司 一种配置加速器的方法和装置
CN108446096B (zh) * 2018-03-21 2021-01-29 杭州中天微系统有限公司 数据计算系统
US11573921B1 (en) 2021-08-02 2023-02-07 Nvidia Corporation Built-in self-test for a programmable vision accelerator of a system on a chip
US12099439B2 (en) 2021-08-02 2024-09-24 Nvidia Corporation Performing load and store operations of 2D arrays in a single cycle in a system on a chip
US11593001B1 (en) 2021-08-02 2023-02-28 Nvidia Corporation Using per memory bank load caches for reducing power use in a system on a chip
US12118353B2 (en) 2021-08-02 2024-10-15 Nvidia Corporation Performing load and permute with a single instruction in a system on a chip
US11573795B1 (en) 2021-08-02 2023-02-07 Nvidia Corporation Using a vector processor to configure a direct memory access system for feature tracking operations in a system on a chip
US11636063B2 (en) 2021-08-02 2023-04-25 Nvidia Corporation Hardware accelerated anomaly detection using a min/max collector in a system on a chip
US11593290B1 (en) 2021-08-02 2023-02-28 Nvidia Corporation Using a hardware sequencer in a direct memory access system of a system on a chip
US11954496B2 (en) 2021-08-02 2024-04-09 Nvidia Corporation Reduced memory write requirements in a system on a chip using automatic store predication
US11836527B2 (en) 2021-08-02 2023-12-05 Nvidia Corporation Accelerating table lookups using a decoupled lookup table accelerator in a system on a chip
US11704067B2 (en) 2021-08-02 2023-07-18 Nvidia Corporation Performing multiple point table lookups in a single cycle in a system on chip

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01226066A (ja) * 1988-03-04 1989-09-08 Hitachi Ltd ディジタル信号処理プロセッサ
US5420989A (en) * 1991-06-12 1995-05-30 Cyrix Corporation Coprocessor interface supporting I/O or memory mapped communications
KR940011504B1 (ko) * 1991-12-07 1994-12-19 삼성전자주식회사 2채널 음장재생 장치 및 방법
KR940011049B1 (ko) * 1992-04-17 1994-11-22 주식회사 금성사 마스터/슬레이브 메모리 공유장치와 공유 제어방법
TW243568B (en) * 1993-11-16 1995-03-21 At & T Corp Digital signal processor with an embedded viterbi co-processor
US5784532A (en) * 1994-02-16 1998-07-21 Qualcomm Incorporated Application specific integrated circuit (ASIC) for performing rapid speech compression in a mobile telephone system
KR100362061B1 (ko) * 1996-04-25 2003-03-03 삼성탈레스 주식회사 로칼 버스 제어 장치
US5706013A (en) * 1996-08-09 1998-01-06 The United States Of America As Represented By The Secretary Of The Air Force Nonhomogeneity detection method and apparatus for improved adaptive signal processing
US5805536A (en) * 1996-11-07 1998-09-08 Eastman Kodak Company Method for bandwidth reduction in writeable optical data storage apparatus

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009037158A1 (de) * 2009-08-04 2011-02-17 Lenze Automation Gmbh Datenverarbeitungseinheit und Steuervorrichtung zur Steuerung eines elektrischen Antriebs
DE102009037158B4 (de) * 2009-08-04 2016-01-21 Lenze Automation Gmbh Steuervorrichtung zur Steuerung eines elektrischen Antriebs

Also Published As

Publication number Publication date
KR100572945B1 (ko) 2006-04-24
DE69919059D1 (de) 2004-09-09
EP0945788B1 (de) 2004-08-04
KR19990072400A (ko) 1999-09-27
EP0945788A3 (de) 2002-06-26
US6256724B1 (en) 2001-07-03
JPH11272631A (ja) 1999-10-08
EP0945788A2 (de) 1999-09-29

Similar Documents

Publication Publication Date Title
DE69919059T2 (de) Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren
DE69709078T2 (de) Verwaltungssystem zur datenverarbeitung
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE3210816C2 (de)
EP1146432B1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE69030128T2 (de) Signalprozessor
DE3786594T3 (de) Speicherverwaltungseinheit für Digitalsignalprozessor.
DE69824193T2 (de) Datenverarbeitungseinheit mit der fähigkeit von digitaler signalverarbeitung
DE69231500T2 (de) Ein-Chip-Mikrorechner
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE60215835T2 (de) Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit
DE69814268T2 (de) Verfahren zur Anbindung eines Prozessors an einen Koprozessor
DE69926458T2 (de) Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE69130881T2 (de) Massiv paralleler Rechner mit auf Schlangen basiertem Nachrichtenablieferungssystem
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE3424962C2 (de)
DE96928129T1 (de) Universeller programmierbarer mediaprozessor
DE69718485T2 (de) Registeraddressierung in einer datenverarbeitungsvorrichtung
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE19858650A1 (de) Gerät und Verfahren zum Reduzieren des Energieverbrauchs in einem selbstgetakteten System
DE19527031A1 (de) Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen
DE3303488A1 (de) Digitales signalverarbeitungssystem
DE112011104770B4 (de) Apparat und Verfahren zum gemeinsamen Vektoreinheit Benutzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition