DE19735981B4 - Mehrprozessorbetrieb in einem Multimedia-Signalprozessor - Google Patents

Mehrprozessorbetrieb in einem Multimedia-Signalprozessor Download PDF

Info

Publication number
DE19735981B4
DE19735981B4 DE19735981A DE19735981A DE19735981B4 DE 19735981 B4 DE19735981 B4 DE 19735981B4 DE 19735981 A DE19735981 A DE 19735981A DE 19735981 A DE19735981 A DE 19735981A DE 19735981 B4 DE19735981 B4 DE 19735981B4
Authority
DE
Germany
Prior art keywords
processor
cache
bus
vector
coupled
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
DE19735981A
Other languages
English (en)
Other versions
DE19735981A1 (de
Inventor
Le Trong Monte Serena Nguyen
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE19735981A1 publication Critical patent/DE19735981A1/de
Application granted granted Critical
Publication of DE19735981B4 publication Critical patent/DE19735981B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Abstract

Integrierter Digitalsignalprozessor, aufweisend:
einen Universal-Prozessor (210);
einen Vektorprozessor (220), der parallel zum Universal-Prozessor betreibbar ist,
ein Cache-Untersystem (230), das mit dem Universal-Prozessor (210) und dem Vektorprozessor (220) gekoppelt ist, wobei das Cache-Untersystem (230) einen Speichercache (260, 290) aufweist;
einen ersten Bus (250), der mit dem Cache-Untersystem (230) gekoppelt ist; und
einen zweiten Bus (240), der mit dem Cache-Untersystem (230) gekoppelt ist;
dadurch gekennzeichnet, dass
der erste Bus (250) eine höhere Bus-Bandbreite als der zweite Bus (240) aufweist;
das Cache-Untersystem (230) sowohl den Universal-Prozessor (210) als auch den Vektorprozessor (220) mit dem ersten und zweiten Bus (250, 240) koppelt;
erste Einrichtungen (252-258) mit höherer Verarbeitungsgeschwindigkeit an den ersten Bus (250) gekoppelt sind; und
zweite Einrichtungen (242-248) mit niedrigerer Verarbeitungsgeschwindigkeit an den zweiten Bus (240) gekoppelt sind.

Description

  • Die Erfindung bezieht sich auf Digitalsignal-Prozessoren und insbesondere auf asymmetrische Parallel-Dualteilprozessingsysteme, die einen Universal-Prozessor und einen Vektorprozessor zum Handhaben von Vektordaten umfassen.
  • Eine Verschiedenheit von Digitalsignal-Prozessoren (DSPs) wird bei Multimediaanwendungen verwendet, beispielsweise dem Codieren und Decodieren von Bild-, Ton- und Kommunikationsdaten. Ein Typ eines Digitalsignalprozessors (DSP) weist eine fest zugeordnete Hardware zum Ansprechen eines bestimmten Problems auf, beispielsweise einer MPEG-Bild- bzw. MPEG-Video-Decodierung oder -Codiereung. DSPs mit fest zugeordneter Hardware bieten mit Blick auf die Kosten im allgemeinen eine hohe Leistungsfähigkeit, sind aber nur für bestimmte Probleme verwendbar und nicht in der Lage, an andere Probleme angepaßt zu werden oder hinsichtlich Standards geändert zu werden.
  • Programmierbare DSPs führen Programme aus, die Multimediaprobleme lösen, und bieten eine größere Flexibilität als DSPs mit fest zugeordneter Hardware, da das Ändern der Software für einen programmierbaren DSP das gelöste Problem ändern kann. Ein Nachteil programmierbarer DSPs ist deren geringe Leistungsfähigkeit mit Blick auf die Kosten. Ein programmierbarer DSP weist typischerweise einen Aufbau ähnlich dem eines Universal-Prozessors auf und hat eine relativ geringe Verarbeitungs- bzw. Prozessingleistung. Die geringe Verarbeitungsleistung folgt im allgemeinen aus einem Versuch, die Kosten zu minimieren. Daher ist ein solcher DSP nicht vollständig zufriedenstellend, da ein DSP mit geringer Leistung die Möglichkeit des DSP hindert, komplexere Multimediaprobleme anzusprechen, wie beispielsweise eine Echtzeit-Bildcodierung und -decodierung.
  • Da ein Ziel für programmierbare DSPs darin besteht, eine hohe Verarbeitungsleistung zum Ansprechen bzw. Adressieren von Multimediaproblemen bei minimalen Kosten bereitzustellen, könnte man in einen solchen DSP eine Parallelverarbeitung aufnehmen, was ein bekannter Weg zum Erhöhen der Verarbeitungsleistung ist. Eine Architektur für eine Parallelverarbeitung hat ein "very long instruction word"-(VLIW)-DSP bzw. DSP für sehr lange Befehlsworte, der durch eine große Anzahl von Funktionseinheiten gekennzeichnet ist, von denen die meisten verschiedene aber relativ einfache Aufgaben ausführen. Eine einzelne Anweisung bzw. ein einzelner Befehl für einen VLIW-DSP kann 128 Byte lang oder länger sein und weist getrennte Teile auf. Jedes Teil kann durch getrennte Funktionseinheiten parallel ausgeführt werden. VLIW-DSP weisen eine sehr hohe Berechnungs- bzw. Verarbeitungsleistung auf, da eine große Anzahl von Funktionseinheiten parallel betrieben werden kann. VLIW-DSP sind auch relativ kostengünstig, da jede Funktionseinheit relativ klein und einfach aufgebaut ist. Ein Problem hinsichtlich VLIW-DSPs ist jedoch die schlechte Leistungsfähigkeit beim Handhaben der Eingabe-/ Ausgabesteuerung, der Kommunikation mit einem Haupt- bzw. Hostcomputer und anderer Funktionen, die sich nicht selber die Fähigkeit zu einer parallelen Ausführung in den Funktionseinheiten des VLIW-DSP verleihen. Zudem unterscheiden sich Programme für VLIW von konventionellen Computerprogrammen und können schwierig zu entwickeln sein, da es an Programmierwerkzeugen und Programmierern mangelt, die mit VLIW-Softwarearchitekturen vertraut sind.
  • Im Artikel "An Architectural Overview of the Programmable Multimedia Processor, TM-1" von Rathnam et al., IEEE Proceedings of COMCON 1996, S. 319-326, wird ein integrierter Digitalsignalprozessor mit einem Universalprozessor und einem Bildverarbeitungs-Coprozessor vorgeschlagen. Der Multimediaprozessor ist zur gleichzeitigen Verarbeitung von Video-, Audio-, Grafik- und Kommunikationsdaten ausgelegt.
  • EP 0 543 652 B1 offenbart eine Speicherzugriffseinrichtung mit einer CPU und einem Arithmetikprozessor, der aus einem Vektorprozessor gebildet sein kann. Ein interner P Bus ist über einen sekundären Cachespeicher an einen externen M Bus angeschlossen. Weiterhin ist der sekundäre Cachespeicher direkt an den Cachespeicher oder an Speicherzugriffseinrichtungen der Prozessoren angeschlossen. Der Vektorprozessor umfasst Vektorregister und Skalarregister sowie eine Pipline-Steuereinheit.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, die Ineffizienz bei Digitalsignalprozessoren und insbesondere asymmetrischen Parallel-Dual-Teilprozess-Systemen zu verringern.
  • Diese Aufgabe wird durch einen Prozessor mit den Merkmalen gemäß Anspruch 1 gelöst.
  • Vorteilhafte Ausgestaltungen sind Gegenstand von Unteransprüchen.
  • Der Digitalsignalprozessor kombiniert insbesondere einen Universal-Prozessor mit einem Vektorprozessor, der parallel zu dem Universal-Prozessor betrieben werden kann. Der integrierte Digitalsignal-Prozessor ist in der Lage, eine hohe Leistungsfähigkeit bei niedrigen Kosten zu erzielen, da die beiden Prozessoren nur Aufgaben ausführen, die für jeden Prozessor ideal liegen. Z. B. läßt der Universal-Prozessor ein Echtzeit-Betriebssystem laufen und führt eine Gesamtsystemhandhabung durch, während der Vektorprozessor zum Durchführen von Parallelberechnungen unter Verwendung von Datenstrukturen verwendet wird, die als "Vektoren" bezeichnet werden. Ein Vektor ist eine Sammlung von Datenelementen, die typischerweise vom gleichen Typ sind.
  • Bei einem Ausführungsbeispiel umfaßt der Digitalsignalprozessor auch ein Cache-Subsystem bzw. Cache-Untersystem, einen ersten Bus und einen zweiten Bus. Der erste Bus wird für Hochgeschwindigkeitseinrichtungen, beispielsweise eine lokale Busschnittstelle, eine DMA-Steuereinrichtung, eine Einheitensteuereinrichtung und eine Speichersteuereinrichtung verwendet. Der zweite Bus wird für Einrichtungen mit einer geringen Geschwindigkeit verwendet, beispielsweise einen Systemzeitgeber, eine UART (Anpassungschaltung zur Umsetzung von paralleler zu serieller Datenübertragung), einen Bitstrom-Prozessor und eine Interrupt- bzw. Unterbrechungs-Steuereinheit.
  • Das Cache-Subsystem kombiniert Cachefunktionen mit Vermittlungs- oder Datenführungsfunktionen. Die Vermittlungsfunktionen ermöglichen mehrere Kommunikationswege zwischen den Prozessoren und Bussen, um gleichzeitig betrieben werden zu können. Ferner ermöglicht das Cacheteil des Cache-Subsystems ein gleichzeitiges Lesen und Schreiben im Cachespeicher.
  • Die Erfindung wird nachstehend beispielsweise anhand der Zeichnung näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm einer Multimediakarte gemäß einem Ausführungsbeispiel;
  • 2 ein Blockdiagramm eines Mulitmedia-Signalprozessors gemäß einem Ausführungsbeispiel;
  • 3 Beziehungen zwischen Prozessoren und Software oder Firmware in einem System, das einen Multimediaprozessor gemäß einem Ausführungsbeispiel umfaßt;
  • 4 ein Blockdiagramm eines Cache-Untersystems gemäß einem Ausführungsbeispiel;
  • 5 ein Speicherabbild bzw. einen Adressenumsetzer gemäß einem Ausführungsbeispiel;
  • 6 ein Blockdiagramm einer Datenpipeline bzw. Datenleitung, die bei einem Cache-Untersystem gemäß einem Ausführungsbeipiel verwendet wird;
  • 7 ein Blockdiagramm einer zweiten Datenpipeline, die bei einem Cache-Untersystem gemäß einem Ausführungsbeispiel verwendet wird; und
  • 8 ein Blockdiagramm einer Adresspipeline, die bei einem Cache-Untersystem gemäß einem Ausführungsbeispiel verwendet wird.
  • Das Verwenden der gleichen Bezugssymbole in verschiedenen Figuren zeigt ähnliche oder identische Merkmale.
  • Gemäß einem Aspekt der Erfindung umfaßt ein Multimediaprozessor einen Universal-Prozessor bzw. einen Prozessor für einen allgemeinen Zweck und einen Vektorprozessor, der entsprechend zum Trennen von Programm-Teilprozessen bzw. einem gereihten Programmcode parallel betrieben wird. Der Universal-Prozessor führt wie die meisten konventionellen Prozessoren für allgemeine Anwendungen Anweisungen bzw. Befehle aus, die typischerweise skalare Daten manipulieren bzw. handhaben. Solche Prozessoren sind zum Ausführen von Eingabe-/Ausgabe-(I/O)- und Steuerfunktionen geeignet. Bei einigen Ausführungsbeispielen weist der Universal-Prozessor eine begrenzte Vektorverarbeitungsfähigkeit von Datenelementen mit einer Größe von mehreren Byte auf, die in ein Datenwort gepackt sind. Falls der Universal-Prozessor z. B. ein 32-Bit-Prozessor ist, kann der Universal-Prozessor gemäß einiger Ausführungsbeispiele vier Ein-Byte-Datenelemente simultan verarbeiten. Jedoch macht eine Multimediaberechnung bzw. Multimediaverarbeitung, wie beispielsweise eine Ton- und Bild-Datenkompression und -dekompression viele wiederholte Berechnungen hinsichtlich Bildpunktanordnungen und Ketten aus Tondaten erforderlich. Um Realzeit- bzw. Echtzeit-Multimediaoperationen auszuführen, muß ein Universal-Prozessor der skalare Daten (z. B. einen Bildpunktwert oder eine Tonamplitude pro Operand) oder nur kleine Vektoren handhabt, mit einer hohen Taktfrequenz betrieben werden. Im Gegensatz dazu führt der Vektorprozessor Anweisungen aus, wo jeder Operand ein Vektor ist, der mehrere Datenelemente enthält (z. B. mehrere Bildpunktwerte oder Tonamplituden). Daher kann der Vektroprozessor Echtzeit-Multimediaoperationen mit einem Bruchteil der Taktfrequenz durchführen, die für einen Universal-Prozessor erforderlich ist, um die gleiche Funktion auszuführen.
  • So bietet durch das Ermöglichen einer effizienten Teilung der Aufgaben, die für eine Multimediaanwendung erforderlich sind, die Kombination aus einem programmierbaren Universal-Prozessor und einem Vektorprozessor mit Blick auf die Kosten eine hohe Leistungsfähigkeit. Bei einem Ausführungsbeispiel führt der Universal-Prozessoren ein Echtzeit-Betriebssytem aus, das für eine Medien-Leiterplatte ("Karte") entwickelt wurde, das mit einem Host- bzw. Haupt-Computersystem kommuniziert. Das Echtzeit-Betriebssytem kommuniziert mit einem primären Prozessor des Computersystems, stellt I/O- bzw. EIN-/AUSGABE-Einrichtungen ein oder koppelt sie mit der Karte und wählt Aufgaben, die der Vektorprozessor ausführt. Bei diesem Ausführungsbeispiel ist der Vektorprozessor entworfen worden, die berechnungsmäßig intensiven Aufgaben durchzuführen, die eine Handhabung großer Datenblöcke erforderlich machen, während der Universal-Prozessor als der Haupt- bzw. Master-Prozessor für den Vektorprozessor dient. Programmteilprozesse bzw. gereihte Codeabschnitte eines Programms werden für jeden Prozessor unter Verwendung eines konventionellen Befehlssatzes bzw. Anweisungssatzes geschrieben, was den Multimediaprozessor "programmiererfreundlich" macht. Die Programmierbarkeit ermöglicht, daß der Multimedia-Prozessor eine Vielzahl verschiedener Multimediaaufgaben ausführen kann. Der Multimedia-Prozessor kann z. B. an ein neues Protokoll einfach dadurch angepaßt werden, daß entweder seine Anwendungsprogramme oder seine Firmware geändert werden. Bei einem Ausführungsbeispiel ist der Anweisungs- bzw. Befehlssatz ähnlich dem eines konventionelle RISC-Anweisungssatzes (RISC steht für "reduced instruction set computer" bzw. Computer mit reduziertem Anweisungssatz).
  • Gemäß einem anderen Aspekt teilen der Universal-Prozessor und der Vektorprozessor eine Vielzahl an verschiedenen auf dem Chip befindlichen und vom Chip getrennten Resourcen bzw. Quellen, die durch einen einzelnen Adressraum zugreifbar sind. Ein Cache-Untersystem bzw. -Subsystem, das getrennte Daten- und Anweisungs-Caches für jeden Prozessor implementiert, bietet auch eine Verbindung vom Schaltplattentyp bzw. Schaltkartentyp zwischen einem lokalen Speicher und Resourcen, wie beispielsweise einem Bitstrom-Prozessor, einer universellen, asynchronen Empfänger-Sendereinheit ("UART"), einem Direktzugriffsspeicher- (DMA)-Kontroller bzw. einer Direktzugriffsspeicher-Steuereinrichtung, einer Schnittstelle für einen lokalen Bus bzw. einer lokalen Busschnittstelle und eine Codierer-Decodierer-("CODEC")-Schnittstelle, die speicherabgebildete Einrichtungen darstellen. Das Cache-Untersystem kann ein Transaktions-orientiertes Protokoll verwenden, das eine Zentrale bzw. Schaltplatte für einen Datenzugriff auf die einzelnen Prozessoren und speicherabgebildeten Resourcen implementiert bzw. umsetzt.
  • 1 stellt eine Multimediakarte 100 gemäß einem Ausführungsbeispiel dar. Die Multimediakarte 100 umfaßt eine Leiterplatte, einen Multimedia-Prozessor 110 und eine Verbindungseinrichtung, die an einem lokalen Bus 105 eines Host-Computersystems befestigt ist. Bei einem beispielhaften Ausführungsbeispiel ist der lokale Bus 105 ein PCI-Bus; jedoch kann der lokale Bus 105 bei anderen Ausführungsbeispielen ein Marken-Bus oder ein Bus sein, der an irgendein gewünschtes Protokoll angepaßt ist, wie beispielsweise die ISA- oder VESA-Busprotokolle.
  • Der Multimedia-Prozessor 110 verwendet einen lokalen Speicher 120, der auch auf der Multimediakarte 100 angeordnet ist, zum Speichern von Daten- und Programmanweisungen. Der lokale Speicher 120 kann auch als ein Frame- bzw. Vollbildpuffer für Bild- bzw. Videocodierungsanwendungen und Bild-Decodierungsanwendungen dienen. Beim beispielhaften Ausführungsbeispiel kann der lokale Speicher 120 durch einen synchronen, dynamischen 512K × 32-Bit-Direktzugriffsspeicher (DRAM) realisiert bzw. implementiert werden. Teile des lokalen Speicherraums können auch durch einen statischen Einchip-Direktzugriffsspeicher ("SRAM") und einen Nurlesespeicher ("ROM") im Multimedia-Prozessor 110 implementiert werden. Tatsächlich braucht der lokale Speicher 120 nicht implementiert zu werden, falls ein Einchip-Speicher vorgesehen wird, um die Daten und Anweisungen der Multimediakarte 100 in ausreichendem Maße zu halten.
  • Zusätzlich zum Multimedia-Prozessor 110 und zum lokalen Speicher 120 umfaßt die Multimediakarte 100 einen Bild-analog-zu-digital-Wandler (ADC) 132, einen Bild-digital-zu-analog-Wandler (DAC) 134, einen Ton-ADC 142, einen Ton-DAC 144, einen Kommunikations-ADC 146 und einen Kommunications-DAC 148. Jeder der Wandler 132, 134, 142, 144, 146 und 148 kann durch eine oder mehrere getrennte integrierte Schaltungen implementiert werden. Alternativ können zwei oder mehr der Wandler 132, 134, 142, 144, 146 und 148 integriert auf einer einzelnen integrierten Schaltung vorgesehen werden. Z. B. kann eine einzelne integrierte Schaltung 140, beispielsweise die AD1843, die bei Analog Devices, Inc. verfügbar ist, die Funktionen der Wandler 142, 144, 146 und 148 implementieren.
  • Der Bild- bzw. Video-ADC 132, der beispielsweise durch eine integrierte KS0122-Schaltung implementiert werden kann, die von Samsung Semiconductor, Inc. erhältlich ist, stellt eine Verbindung zu einer Videokamera oder einer anderen Quelle eines Bildsignals dar und digitalisiert das Video- oder Bildsignal in eine Reihe von Bildpunktwerten. Die Multimediakarte 100 komprimiert oder codiert die Bildpunktwerte gemäß einem Bildcodierungsstandard, beispielsweise MPEG, JPEG oder H.324, der in der Firmware implementiert ist, die durch den Multimedia-Prozessor 110 ausgeführt wird. Die codierten Bilddaten können dann über einen lokalen Bus 105 zum Host-Computer übertragen werden, und zwar zu einer Einrichtung, beispielsweise einer Ethernetkarte, die mit einem lokalen Bus 105 gekoppelt ist, oder für eine Übertragung auf einer Telefonleitung, die mit einem Kommunikations-DAC 148 gekoppelt ist, weiter codiert werden.
  • Der Bild-DAC 134 wandelt eine Reihe von digitalen Abtastwerten vom Multimedia-Prozessor 110 in ein analoges Bildsignal bzw. Videosignal für einen Bildmonitor oder ein Fernsehgerät um. Der Bild-DAC 134 kann z. B. durch eine integrierte KS0119-Schaltung, die bei Samsung Semiconductor, Inc. erhältlich ist, gemäß einem NTSC- oder PAL-Bildstandard implementiert werden. Der Multimedia-Prozessor 110 kann die Reihe digitaler Abtastwerte für den Bild-DAC 134 aufgrund von Daten erzeugen, die von dem Host-Computer, einer anderen Einrichtung, die mit dem lokalen Bus 105 gekoppelt ist, einer Videokamera, die mit dem Bild-ADC 132 gekoppelt ist oder einer Telefonleitung empfangen werden, die mit dem Kommunikations-ADC 146 gekoppelt ist.
  • Eine optionale Komponente der Multimediakarte 100 ist eine Grafik-Steuereinrichtung 150, die den lokalen Speicher 120 mit dem Multimedia-Prozessor 110 teilt und ein Bildsignal für einen Videomonitor für das Hostsystem bietet. Die Grafiksteuereinrichtung 150 kann z. B. durch eine Super-VGA-Grafiksteuereinrichtung implementiert werden, die von verschiedenen Händlern und Herstellern, beispielsweise Cirrus Logic, S3 oder Trident Microsystems erhältlich ist. Der Multimedia-Prozessor 110 erzeugt Bildpunktabbildungen in einem lokalen Speicher 120 und speichert sie dort, wovon die Grafik-Steuereinrichtung 150 ein Bildsignal für den Videomonitor erzeugt.
  • Der Ton- bzw. Audio-ADC 142 und der Audio- bzw. Ton-DAC 144 sind zum Eingeben und Ausgeben analoger Tonsignale. Gemäß einem Aspekt emuliert die Multimediakarte 100 die Funktionen einer Ton- bzw. Soundkarte, beispielsweise der populären "SoundBlaster", und implementiert Tonsynthesefunktionen, wie beispielsweise eine Wavetable- bzw. Wellentabellensynthese und eine FM-Synthese. Für Tonkartenemulationen bzw. Soundkartenemulationen stellt ein Anwendungsprogramm, das durch den Hostcomputer ausgeführt wird, Daten bereit, die einen Ton darstellen, und der Multimedia-Prozessor 110 erzeugt Tonamplituden entsprechend dieser Daten. Der Ton-DAC 144 wandelt die Tonamplituden für einen Lautsprecher oder Verstärker in ein analoges Tonsignal um. Der Multimedia-Prozessor 110 handhabt in ähnlicher Weise eingegebene Tonsignale vom Ton-ADC 142.
  • Der Kommunikations-ADC 146 tastet ein analoges Signal von einer Telefonleitung ab und bietet digitalisierte Abtastwerte für den Multimedia-Prozessor 110. Wie der Multimedia-Prozessor 110 die digitalisierten Abtastwerte verarbeitet, hängt von der Funktion ab, die in der Firmware implementiert ist. Z. B. kann der Multimedia-Prozessor 110 Modemfunktionen durch Ausführungsprogramme in Firmware implementieren, die eine V.34-Demodulation der Abtastwerte und eine V.42 bis Fehlerkorrektur und -dekomprimierung durchführen. Der Multimedia-Prozessor 110 kann auch Daten kompremieren, die vom Hostcomputer empfangen werden und digitale Abtastwerte zum Darstellen eines korrekt modulierten analogen Signals zum Übertragen durch den Kommunikations-DAC 148 erzeugen. Ähnlich kann der Multimedia-Prozessor 110 eine Antwortmaschine, Fax oder Bildtelefon-Funktionen unter Verwendung der gleichen Hardware (ADC 146 und DAC 148) als der Schnittstelle zu den Telefonleitungen implementieren, falls eine geeignete Firmware oder Software verfügbar ist.
  • 2 stellt ein Blockdiagramm eines Ausführungsbeispiels des Multimedia-Prozessors 110 dar. Der Multimedia-Prozessor 110 umfaßt einen Verarbeitungskern bzw. Prozessingkern 200, der einen Universal-Prozessor 210 und einen Vektorprozessor 220 enthält. Wie er hier verwendet wird, bezieht sich der Ausdruck Vektorprozessor auf einen Prozessor, der Anweisungen mit Vektoroperanden ausführt, d. h. Operanden, die jeweils mehrere Datenelemente des gleichen Typs enthalten. Jeder, der Universal-Prozessor 210 und der Vektorprozessor 220 führt einen getrennten Programmteilcode aus und kann ein Skalarrechner bzw. Skalarprozessor oder ein Superskalarprozessor sein.
  • Bei dem beispielhaften Ausführungsbeispiel ist der Universal-Prozessor 210 ein 32-Bit-RISC-Prozessor, der mit 40 MHz betrieben wird und dem Standard-ARM7-Anweisungssatz angepaßt ist. Die Architektur für einen ARM7-RISC-Prozessor und den ARM7-Anweisungssatz ist in dem ARM7DM-Datenblatt beschrieben, das von Advanced RISC Machines Ltd. erhältlich ist. Der Universal-Prozessor 210 implementiert auch eine Erweiterung des ARM7-Anweisungssatzes, die Anweisungen bzw. Befehle für eine Schnittstelle mit dem Vektorprozessor 220 umfaßt. Die gemeinsam anhängige Patentanmeldung mit dem Titel "System and Method for Handling Software Interrupts with Argument Passing", die durch Bezugnahme aufgenommen wird, beschreibt die Erweiterung des ARM7-Anweisungssatzes für das beispielhafte Ausführungsbeispiel der Erfindung. Der Universal-Prozessor 210 ist über einen Steuerbus 212 mit dem Vektorprozessor 220 verbunden, um die Erweiterung des ARM7-Anweisungssatzes auszuführen. Ferner wird eine Unterbrechungsleitung bzw. Interruptleitung 222 durch den Vektorprozessor 220 verwendet, um eine Unterbrechung bzw. einen Interrupt am Universal-Prozessor 210 abzufragen.
  • Der Vektorprozessor 220 weist eine SIMD-(Einzelanweisungmehrfache Daten)-Architektur auf und handhabt sowohl skalare als auch vektorielle Größen. Beim beispielhaften Ausführungsbeispiel besteht der Vektorprozessor 220 aus einer RISC-Zentralverarbeitungseinheit bzw. RISC-Zentraleinheit im Pipelinebetrieb, die mit 80 MHz betrieben wird und eine 288-Bit-Vektoraufzeichnungsdatei bzw. -Vektorregisterdatei aufweist. Jedes Vektorregister in der Vektorregisterdatei kann bis zu 32 Datenelemente enthalten. Tabelle 1 stellt die Datentypen dar, die für Datenelemente innerhalb eines Vektors gestützt werden.
  • Tabelle 1
    Figure 00130001
  • Figure 00140001
  • Daher kann ein Vektorregister zweiunddreißig 8-Bit- oder 9-Bit-Ganzzahl-Datenelemente, sechzehn 16-Bit-Ganzzahl-Datenelemente oder acht 32-Bit-Ganzzahl- oder Gleitpunktelemente halten. Zudem kann das beispielhafte Ausführungsbeispiel auch mit einem 576-Bit-Vektor-Operanden arbeiten, der zwei Vektorregister aufspannt.
  • Der Anweisungssatz für den Vektorprozessor 220 umfaßt Anweisungen zum Handhaben von Vektoren und zum Manipulieren von Skalaren. Die Patentanmeldung mit dem Titel "Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor" beschreibt den Anweisungssatz für das beispielhafte Ausführungsbeispiel und einen Aufbau bzw. eine Architektur zum Implementieren des Anweisungssatzes.
  • Das Cache-Untersystem 230 enthält einen SRAM-Block 260, der graphisch als zwei Blöcke dargestellt ist, ein ROM 270 und eine Cache-Steuereinrichtung 280. Das Cache-Untersystem 230 kann den SRAM-Block 260 in (i) einen Anweisungs-Cache 262 und einen Daten-Cache 264 für den Universal-Prozessor 210 und (ii) einen Anweisungs-Cache 292 und einen Daten-Cache 294 für den Vektorprozessor 220 konfigurieren. Ein Ein-Chip-ROM 270, der Daten und Anweisungen für den allgemeinen Prozessor 210 und den Vektorprozessor 220 enthält, kann auch als ein Cache konfiguriert werden. Beim beispielhaften Ausführungsbeispiel enthält das ROM 270: Rücksetz- bzw. Reset- und Initialisierungs- bzw. Einleitungs-Prozeduren; Selbstüberprüfungs-Diagnoseprozeduren; Handhabungsmittel für einen Interrupt und eine Ausnahme; und Unterprogramme für eine Soundblaster-Emulierung; Subroutinen bzw. Unterprogramme für eine V.34-Modem-Signalverarbeitung; allgemeine Telefonierfunktionen; 2-dimensionale und 3-dimensionale Graphik-Unterprogrammbibliotheken; und Unterprogramm-Bibliotheken für Ton- und Bild- bzw. Video-Standards, wie beispielsweise MPEG-1, MPEG-2, H.261, H.263, G.728 und G.723.
  • 3 verdeutlicht die Beziehungen zwischen Hardware und Software oder Firmware bei einer Anwendung der Multimediakarte 100 in einem Host-Computersystem 300. Das Host-Computersystem 300 weist einen primären Prozessor 310 auf, der Programme ausführt, die in einem Hauptspeicher 320 abgespeichert sind. Bei dem beispielhaften Ausführungsbeispiel ist das Host-Computersystem 300 ein IBM-kompatibler Personalcomputer, der einen Microprozessor vom Typ x86 einschließt, und die Programme, die durch das Host-Computersystem 300 ausgeführt werden, umfassen ein Anwendungsprogramm 330, das unter einem Betriebssystem, wie beispielsweise WindowsTM 95 oder NT läuft. Das Anwendungsprogramm 330 kann mit der Multimediakarte 100 über Einheiten- bzw. Einrichtungstreiber 342 kommunizieren. Die Einrichtungstreiber 342 sind dem Einrichtungstreiber API des Betriebssystems angepaßt.
  • Die Einrichtungstreiber werden typischerweise mit jeder Multimediakarte 100 bereitgestellt, da verschiedene Ausführungsbeispiele von Multimediakarten 100 verschiedene Hardwareimplementierungen aufweisen können, wie beispielsweise sich unterscheidende Registerabbildungen und Interruptlevels bzw.
  • Unterbrechungsprioritäten. Die Einrichtungstreiber müssen die Steuersignale, die beim bestimmten Ausführungsbeispiel der Multimediakarte 100 benötigt werden, geeignet in die Steuersignale transformieren bzw. umwandeln, wie dies durch den Einrichtungstreiber API des Betriebssystems bestimmt wird. Typischerweise wird das Betriebssystem einen für jede Einrichtung verschiedenen Einrichtungstreiber, wie beispielsweise einem Modemtreiber, einem Graphikreiber und einen Tontreiber erwarten. So sind typischerweise drei getrennte Einrichtungstreiber für das Betriebssystem erforderlich, falls ein Ausführungsbeispiel der Multimediakarte 100 die Funktionalität einer Tonkarte bzw. Audiokarte, eines Modems und einer Graphikkarte kombiniert.
  • Der Universal-Prozessor 210 im Multimedia-Prozessor 110 führt ein Echtzeit-Betriebssystem 360 aus, das Kommunikationen bzw. Nachrichtenübermittlungen mit Einrichtungstreibern 342 steuert. Der Universal-Prozessoren 21 führt auch allgemeine Aufgaben 370 aus. Der Vektorprozessor 220 führt Vektoraufgaben 380 aus.
  • Das Cache-Untersystem 230 (2) koppelt auch allgemeine Prozessoren 210 und einen Vektorprozessor 220 mit zwei Systembussen: IOBUS 240 und FBUS 250. IOBUS 240 wird typischerweise mit einer geringeren Frequenz als der FBUS 250 betrieben. Einrichtungen mit einer geringeren Geschwindigkeit werden an den IOBUS 240 gekoppelt, während Einrichtungen mit einer höheren Geschwindigkeit mit dem FBUS 250 gekoppelt werden. Durch Trennen der Einrichtungen mit geringerer Geschwindigkeit von den Einrichtungen mit höherer Geschwindigkeit, werden die Einrichtungen mit geringer Geschwindigkeit gehindert, übermäßig auf die Leistungsfähigkeit der Einrichtungen mit höherer Geschwindigkeit einzuwirken.
  • Das Cache-Untersystem 230 dient auch als eine Schalttafel bzw. eine Schaltplatte für eine Kommunikation zwischen dem IOBUS 240, dem FBUS 250, dem allgemeinen Prozessor 210 und dem Vektorprozessor 220. Bei den meisten Ausführungsbeispielen vom Cache-Intersystem 230 sind mehrere gleichzeitige Zugriffe zwischen den Bussen und Prozessoren möglich. Z. B. ist der Vektorprozessor 220 in der Lage, mit dem FBUS 250 zur gleichen Zeit zu kommunizieren, zu der der Universal-Prozessor 210 mit dem IOBUS 240 kommuniziert. Bei einem Ausführungsbeispiel der Erfindung wird die Kombination der Schaltplatte und der Cachefunktion durch das Verwenden von direkten Abbildungstechniken für FBUS 250 und IOBUS 240 erzielt. Insbesondere kann auf die Einrichtungen am FBUS 250 und am IOBUS 240 durch den Universal-Prozessor 210 und den Vektorprozessor 220 mittels Standard-Speicherlesevorgängen und Standard-Speicherschreibvorgängen bei geeigneten Adressen zugegriffen werden.
  • 5 stellt die Speicherabbildung von einem Ausführungsbeispiel dar. Ein Speicherblock 510, d. h. der Adressraum von der Byteadresse Null zur Adress 4M – 1 wird durch das ROM 270 belegt. (Die Einheiten M und G, die in dieser Beschreibung als Einheiten für Speicheradressen verwendet werden, stehen für die Zahlen 1.048.576 (d. h. 1024·1024) und 1.073.741.824 (d. h. 1024·1024·1024)). Ein Speicherblock 520, d. h. der Adressraum von einer Byte-Adress 4M bis 8M – 1 wird durch einen SRAM-Block 260 belegt. Ein Speicherblock 530, d. h. der Adressraum von einer Byte-Adresse 8M zu einer Adresse 72M-1 wird durch einen lokalen Speicher 120 belegt. Die Einrichtungen am FBUS 250 werden auf einen Speicherblock 540 abgebildet, der nach einer Byte-Adresse 72M beginnt und sich zu einer Byte-Adresse 77M erstreckt. Ein Speicherblock 550 wird für eine zukünftige Erweiterung reserviert. Die Einrichtungen am IOBUS 240 werden auf einen Speicherblock 560 abgebildet, der nach einer Byte-Adresse 125M beginnt und sich zu einer Byte-Adresse 128 M-1 erstreckt. Ein Speicherblock 570 wird auch für eine zukünftige Erweiterung reserviert. Ein Speicherblock 580, d. h. der Adressraum von einer Byte-Adresse 2G bis zu einer Adresse 4G-1 wird durch andere Host-Computereinrichtungen belegt und ein Zugriff erfolgt typischerweise über eine lokale Busschnittstelle bzw. Schnittstelle 255 für den lokalen Bus.
  • Der FBUS 250 (2) steht mit einer Speichersteuereinrichtung 258, einer DMA-Steuereinrichtung 257, einer Schnittstelle 255 für einen lokalen Bus und einer Einrichtungsschnittstelle 252 in Verbindung, die entsprechend Schnittstellen für einen lokalen Speicher 120, einen lokalen Bus 105 und Wandler 132, 134, 142, 144, 146, 148 und 150 bereitstellt, wie dies in 1 dargestellt ist.
  • Die Speichersteuereinrichtung 258 steuert Lesevorgänge und Schreibvorgänge am lokalen Speicher 120. Beim beispielhaften Ausführungsbeispiel steuert die Speichersteuereinrichtung 258 eine Bank synchroner DRAMs (zwei 1Mx16-SDRAM-Chips), die konfiguriert sind, 24 bis 26 Adressbit und 32 Datenbit zu verwenden und die Merkmale aufweisen: (i) ein "CAS-vor-RAS"-Auffrischungsprotokoll, das mit einer programmierbaren Auffrischrate durchgeführt werden kann, (ii) teilweise Schreibvorgänge, die Lese-Modifiziere-Schreib-Operationen einleiten und (iii) eine interne Bankverschachtelung bzw. ein internes Bank-Interleaving. Die Speichersteuereinrichtung 258 bietet auch eine 1:1-Frequenzanpassung zwischen Speicher 120 und FBUS 250, eine manuelle "Vorladung beider Bänke" und Adress- und Daten-Warteschlangenvorgänge zum besseren Nützen des FBUS 250. Bekannt ist, daß synchrone DRAMs bei solchen Frequenzen (80 MHz) effektiv betrieben werden und Standard-Fastpage- bzw. Standard-Schnellseiten-DRAMs und erweiterte Datenausgabe-(EDO)-DRAMs auch verwendet werden können. DRAM-Steuereinrichtungen mit Fähigkeiten ähnlich zu einer Speichersteuereinrichtung 258 beim beispielhaften Ausführungsbeispiel sind in der Technik bekannt.
  • Die DRAM-Steuereinrichtung 257 steuert Direkt-Speicherzugriffe zwischen dem Hauptspeicher des Hostcomputers und dem lokalen Speicher eines Multimedia-Prozessors 200. Solche DMA-Steuereinrichtungen sind in der Technik bekannt. Bei einigen Ausführungsbeispielen ist eine Einrichtung für eine Speicherdatenbewegung eingeschlossen. Die Einrichtung zur Speicherdatenbewegung führt einen DMA (direkten Speicherzugriff) von einem Block des Speichers zu einem anderen Block des Speichers.
  • Die Schnittstelle 255 für den lokalen Bus implementiert das erforderliche Protokoll für Kommunikationen zwischen dem Hostcomputer über den lokalen Bus 105. Beim beispielhaften Ausführungsbeispiel bietet die Schnittstelle 255 für den lokalen Bus eine Schnittstelle zu einem 33-MHz-32-Bit-PCI-Bus. Solche Schnittstellen sind in der Technik bekannt.
  • Die Einrichtungsschnittstelle 252 bietet eine Hardwareschnittstelle für Einrichtungen wie beispielsweise Wandler 132, 134, 142, 144, 146, 148 und 150, die typischerweise auf einer Leiterplatte mit dem Multimedia-Prozessor 110 vorliegen. Die Einrichtungsschnittstelle 252 kann für die bestimmte Anwendung des Multimedia-Prozessors 110 anwendungsspezifisch angepaßt werden. Insbesondere könnte die Einrichtungsschnittstelle 252 nur eine Schnittstelle für bestimmte Einrichtungen oder ICs bieten. Typische Einheiten innerhalb der Einrichtungsschnittstelle 252 bieten eine Schnittstelle für eine Verbindung zu Standard-ADCs, DACs oder CODECs. Entwürfe bzw. Aufbauformen für ADC-, DAC- und CODEC-Schnittstellen sind in der Technik bekannt und werden hier nicht weiter beschrieben. Andere Schnittstellen, die verwendet werden könnten, können eine ISDN-Schnittstelle für ein digitales Telefon und Schnittstellen für Busse, beispielsweise für einen Microchannel-Bus umfassen, sind darauf aber nicht beschränkt. Bei einem Ausführungsbeispiel des Multimedia-Prozessors 110 ist die Einrichtungsschnittstelle 252 ein ASIC, der programmiert werden kann, um eine gewünschte Funktionalität auszuführen bzw. zu bieten.
  • Der IOBUS 240 wird mit einer Frequenz (40 MHz) betrieben, die geringer als die Betriebsfrequenz (80 MHz) des Busses 250 ist. Mit dem IOBUS 240 sind ein Systemtaktgeber 242, ein UART (universelle asynchrone Empfänger-Sendereinheit) 243, ein Bitstrom-Prozessor 248 und eine Interrupt-Steuereinrichtung 245 gekoppelt. Der Systemtaktgeber 242 unterbricht den Prozessor 210 bei nominellen bzw. planmäßigen Zeitintervallen, die durch Schreiben in Register ausgewählt werden, die dem Systemzeitgeber 242 zugeordnet sind. Beim beispielhaften Ausführungsbeispiel ist der Systemzeitgeber 242 ein Standard-Intel-8254-kompatibler Intervallzeitgeber mit drei unabhängigen 16-Bit-Zählern und sechs programmierbaren Zählerbetriebsarten.
  • UART 243 ist eine serielle Schnittstelle, die zu der bekannten bzw. allgemein verwendeten integrierten 16450-UART-Schaltung kompatibel ist und dient für eine Anwendung bei Modem- oder Faxanwendungen, die einen seriellen Standard-Kommunikations-("COM")-Anschluß eines Personalcomputers erforderlich machen.
  • Der Bitstromprozessor 245 ist ein fester Hardwareprozessor, der bestimmte Funktionen an einem Eingabe- oder Ausgabe-Bitstrom ausführt. Beim beispielhaften Ausführungsbeispiel führt der Bitstrom-Prozessor 245 anfängliche oder abschließende Stufen einer MPEG-Codierung oder -Decodierung durch. Insbesondere führt der Bitstrom-Prozessor 245 eine Codierung und Decodierung mit variabler Länge durch (Huffman) und ein Packen bzw. Entpacken von Bilddaten in einem "zick-zack"-Format. Der Bitstrom-Prozessor 245 wird parallel zum Universal-Prozessor 210 und dem Vektorprozessor 220 betrieben und davon gesteuert. Die Prozessoren 210 und 220 konfigurieren den Bitstrom-Prozessor 245 über Steuerregister. Die ebenfalls anhängige Patentanmeldung mit dem Titel "Verfahren und Vorrichtung zum Verarbeiten von Videodaten" beschreibt ein beispielhaftes Ausführungsbeispiel eines Bitstrom-Prozessors 245.
  • Die Interrupt-Steuereinrichtung 248 bzw. Unterbrechungssteuereinrichtung steuert Unterbrechungen bzw. Interrupts des Universal-Prozessors 210 und unterstützt viele Interruptprioritäten. Ein Maskenregister wird bereitgestellt, um zu ermöglichen, daß jede Interruptpriorität individuell maskiert wird. Beim beispielhaften Ausführungsbeispiel ist die Interrupt-Steuereinrichtung 245 programmierbar und implementiert das Standard-Intel-8259-Interruptsystem, das bei x86-Personalcomputern üblich ist. Ein Interrupt mit höchster Priorität (Stufe 0) wird dem Systemzeitgeber 242 zugewiesen. Prioritätsstufen 1, 2, 3 und 7 werden entsprechend einem virtuellen Vollbild- bzw. Frame-Puffer, einer DMA-Steuereinrichtung 257 und einer Einrichtungsschnittstelle 252, einem Bitstrom-Prozessor 245, einer Schnittstelle 255 für den lokalen Bus und dem UART 243 zugewiesen. Interrupt-Prioritätsstufen 4, 5 und 6 sind bei dem beispielhaften Ausführungsbeispiel nicht zugewiesen. Der virtuelle Frame-Puffer, der bei einigen Ausführungsbeispielen eingeschlossen ist, emuliert bei der Prioritätsstufe 1 einen Standard-VGA-Frame-Puffer bzw. -Vollbildpuffer.
  • 4 stellt ein Blockdiagramm des Cache-Untersystems 230 dar. Ein SRAM-Block 260 ist in vier Speicherbänke aufgeteilt, um einen Anweisungscache 262 und einen Datencache 264 für eine Anwendung mit dem allgemeinen Prozessor 210 wie auch einen Anweisungscache 292 und einen Datencache 294 für eine Anwendung mit dem Vektorprozessor 220 auszubilden. Der SRAM-Block 260 enthält auch einen Identifizierungszeichen- bzw. Kennzeichenabschnitt 406, der für jede der Speicherbänke unter-unterteilt ist. Der SRAM-Block 260 ist eine Speicherschaltung mit zwei Anschlüssen, mit einem Leseanschluß 440 und einem Schreibanschluß 430, so daß ein gleichzeitiges Lesen und Schreiben des SRAM-Blocks 260 unterstützt wird. Das Cache-Untersystem 230 enthält auch ein ROM-Cache 270 mit einem Kennzeichen-Feld 472. Wie vorstehend erläutert, enthält der ROM-Cachespeicher 270 häufig verwendete Anweisungen und Daten für den allgemeinen Prozessor 210 und den Vektorprozessor 220. Obwohl das Kennzeichen-Feld 472 nicht modifiziert werden kann, können einzelne Adressen als ungültig markiert werden, so daß diese Daten oder Anweisungen aus dem Speicher gebracht werden können, um anstelle der Daten oder Anweisungen im ROM 270 verwendet zu werden.
  • Eine Datenpipeline 410 führt die Daten-Schalttafel-Funktion des Cache-Untersystems 230 aus. Die Datenpipline 410 kann mehrere simultane bzw. gleichzeitige Datenkommunikationswege zwischen dem IOBUS 240, dem FBUS 250, dem Universal-Prozessor 210, dem Vektorprozessor 220 und dem SRAM-Block 260 erzeugen. Ähnlich führt die Adresspipeline 420 Schalttafelfunktionen für Adressen aus. Beim Ausführungsbeispiel der 4 verwenden IOBUS 240 und FBUS 250 einen Zeitmultiplexbetrieb für Adress- und Datensignale. Die Cachesteuerung 280 stellt die Steuerleitungen zur Datenpipeline 410 und zur Adresspipeline 420 bereit, um die Kommunikationskanäle geeignet zu konfigurieren.
  • Bei irgendeinem Ausführungsbeispiel des Cache-Untersystems 230 wird ein Protokoll, das auf einem Vorgang bzw. einer Transaktion beruht, verwendet, um alle Lese- und Schreibvorgänge zu unterstützen. Irgendeine Einheit, die mit dem Cache-Untersystem 230 gekoppelt ist, wie der allgemeine Prozessor 210, der Vektorprozessor 220 oder die verschiedenen Einrichtungen an IOBUS 240 und FBUS 250 kann eine Aufforderung an das Cache-Untersystem 230 setzen. Eine solche Aufforderung wird durch einen Einrichtungs-Identifizierungscode ("Einrichtungs-ID") und eine Adresse der aufgeforderten bzw. abgefragten Speicherstelle ausgebildet. Jede Einheit weist eine getrennte Einrichtungs-ID auf, und das Cache-Untersystem 230 kann die Aufforderungen bzw. Anfragen auf der Einrichtungs-ID der Einheit, die die Abfrage durchführt, beruhend hinsichtlich der Priorität einteilen. Wenn die Daten bei der abgefragten Adresse verfügbar werden, antwortet das Cache-Untersystem mit der Einrichtungs-ID, einem Transaktions- bzw. Vorgangs-Identifizierungscode ("Transaktions-ID"), der Adresse und den abgefragten Daten. Falls die angeforderte bzw. abgefragte Adresse nicht im SRAM-Block 260 oder ROM 270 enthalten ist, ist das Cache-Untersystem 230 nicht über mehrere Taktzyklen in der Lage, auf die bestimmte Aufforderung zu antworten, während die Daten bei der Speicheradresse zurückbekommen werden. Während die Daten einer ersten Aufforderung zurückbekommen werden, ist das Cache-Untersystem 230 jedoch in der Lage, eine zweite Aufforderung von einer dazu verschiedenen Einheit mit einer verschiedenen Einrichtungs-ID zu verarbeiten. Auf diese Art und Weise blockiert eine anhängige Aufforderung nachfolgende Aufforderungen von anderen Einheiten nicht. Ferner kann das Cache-Untersystem 230 eine Leseaufforderung und eine Schreibaufforderung gleichzeitig in einem einzelnen Zyklus handhaben.
  • Wie vorstehend erläutert ist der SRAM-Block 260 in vier Speicherbänke aufgeteilt. Der SRAM-Block 260 weist zwei Eingänge bzw. Anschlüsse auf, d. h. er weist einen Leseanschluß 440 und einen Schreibanschluß 430 auf, so daß der SRAM-Block 260 bei irgendeinem Zyklus eine Leseaufforderung und eine Schreibaufforderung annehmen kann. Der Kennzeichen-Abschnitt 406 des SRAM-Blocks 260 muß zwei Leseanschlüsse aufweisen, um die gleichzeitigen Lese- und Schreibaufforderungen zu unterstützen. Daher können die Adresse, die beim Leseanschluß 440 verwendet wird, wie auch die Adresse, die beim Schreibanschluß 430 verwendet wird, mit internen Cache-Kennzeichen für Treffer- oder Fehlbedingungen gleichzeitig verglichen werden. Der Kennzeichen-Abschnitt 406 enthält auch einen getrennten Schreibanschluß, so daß die geeigneten Kennzeichenfelder auch geändert werden können, während die Schreibaufforderung am Schreibanschluß 430 durchgeführt wird.
  • Abhängig von den Beschränkungen des Gesamtsystems kann das Cache-Untersystem 230 mit entweder Schreib-Zurück- oder Schreib-Durch-Cacheprinzipien bzw. -grundsätzen verwendet werden. Ferner kann die Cache-Zeilengröße bei einigen Ausführungsbeispielen zum weiteren Erhöhen der Geschwindigkeit zweimal so groß wie die Datenbreite gemacht werden. Bei diesen Ausführungsbeispielen müssen für "Systemverwaltungs"-Zwecke jeder Cachezeile zwei Gültigten Bits und zwei Speichermarken bzw. Dirtybits zugewiesen werden, da jede Cachezeile zwei Vektoren enthält. Der SRAM-Block 260 sollte also global alle Gültigkeits-Bits löschen, falls ein globales Löschsignal empfangen wird.
  • Bei anderen Ausführungsbeispielen werden individuelle bzw. einzelne Löschsignale für jede Bank im SRAM-Block 260 unterstützt.
  • 6 ist ein Blockdiagramm eines Ausführungsbeispiels einer Datenpipeline 410. Da das Cache-Untersystem 230 sowohl ein Cachesystem als auch eine Schalttafel für den IOBUS 240, den FBUS 250, den Universal-Prozessor 210 und den Vektorprozessor 220 ist, sollten die Busse und der Prozessor in der Lage sein, entweder durch den Cache oder direkt zu kommunizieren, falls der Cachespeicher durch eine andere Einrichtung verwendet wird. Die Prozessoren sind im allgemeinen schneller als die Einrichtungen an den Bussen; daher werden die Prozessoren im allgemeinen den Cache bei Schreibvorgängen verwenden und dem Cache-Rückschreibsystem ermöglichen, die Daten auf die geeignete Buseinrichtung zu setzen. Ähnlich fordern die Prozessoren allgemeine Aufforderungsinformationen eher vom Cache als direkt von den Einrichtungen. Falls der Cachespeicher die aufgeforderten Daten nicht enthält, verlassen sich die Prozessoren typischerweise auf das Cache-Untersystem, um die angeforderten Daten in den Cachespeicher auszulesen und die Daten für die Prozessoren zu erzeugen. Wenn der Cachespeicher jedoch besetzt ist bzw. tätig ist, können die Prozessoren direkt auf die Busse zugreifen.
  • Daten werden vom Universal-Prozessor 210 über einen IO MUX 630 zum IOBUS 240 übertragen. Daten vom IOBUS 240 zum Universal-Prozessor 210 laufen durch einen GP Lese MUX 620. Von entweder dem SRAM-Block 260 oder vom ROM 207 werden Daten zum Universal-Prozessor 210 über einen Cache-Lese-MUX 650 und einen GP-Lese-MUX 620 übertragen. Vom Universal-Prozessor 210 werden Daten zum SRAM-Block 260 über einen Cache-Schreib-MUX 610 übertragen. Der Cache-Lese-MUX 650, der Cache-Schreib-MUX 610, der IO-MUX 630 und der GP-Lese-MUX 620 können konventionelle Multiplexer sein und können interne Latche bzw. Zwischenspeicher oder Register enthalten, sofern dieses für Zeitbschränkungen erforderlich ist. Die Ausfall- Steuerleitungen (nicht dargestellt) der Multiplexer werden durch die Cache-Steuereinrichtung 280 (4) vorgeschrieben. Vom Universal-Prozessor 210 werden Daten zum FBUS 250 über den Cache-Schreib-MUX 610 und den FBUS-MUX 640 übertragen. Vom FBUS 250 werden Daten zum Universal-Prozessor 210 kanalisiert über einen Puffer 660, einen Cache-Lese-MUX 650 und den GP-Lese-MUX 620 geführt. Um diese Funktionen auszuführen, kann der Puffer 660 ein konventioneller Puffer, ein Latch oder ein Register sein.
  • Der Universal-Prozessor 210 kann den Vektorprozessor 220 über Steuerleitungen 212 (2) steuern. Eine direkte Datenübertragung zwischen dem Universal-Prozessor 210 und dem Vektorprozessor 220 ist im allgemeinen nicht erforderlich, kann aber über den SRAM-Block 260 oder irgendeine andere der Einrichtungen ermöglicht werden, da die beiden Prozessoren sich eine gemeinsame Speicherabbildung teilen.
  • Daten vom ROM 270 und SRAM-Block 260 wandern zum IOBUS 240 über den Cache-Lese-MUX 650 und den IO-MUX 630. Daten vom IOBUS 240 zum SRAM-Block 260 werden über den Cache-Schreib-MUX 610 geführt. Daten vom IOBUS 240 zum FBUS 250 werden durch den Cache-Schreib-MUX 610 und den FBUS-MUX 640 geführt. Daten vom FBUS 250 für den IOBUS 240 werden durch den Zwischenspeicher bzw. Puffer 660, den Cache-Lese-MUX 650 und den IO-MUX 630 geführt. Daten für den IOBUS 240 vom Vektorprozessor 220 werden durch den Cache-Schreib-MUX 610 und den IO-MUX 630 geführt. Daten vom IOBUS 240 zum Vektorprozessor 220 laufen durch den Cache-Lese-MUX 650. Bei einigen Ausführungsbeispielen ist die direkte Pipeline bzw. Richtungspipeline für Daten vom Vektorprozessor 220 zum IOBUS 240 zum Vereinfachen des Aufbaus der Datenpipeline 410 weggelassen. Da die Bandbreite des Vektorprozessors 220 viel größer als die Bandbreite des IOBUS 240 ist, wird ein direkter Kommunikationsweg vom Vektorprozessor 220 zum IOBUS 240 hinsichtlich der Verarbeitungszeit des Vektorprozessors 220 sehr ineffektiv.
  • Daten vom SRAM-Block 260 und ROM 270 für den FBUS 250 laufen durch den Cache-Lese-MUX 650 und den FBUS-MUX 640. Daten vom FBUS 250 zum SRAM-Block 260 laufen durch den Puffer 660 und den Cache-Schreib-MUX 610. Daten vom FBUS 250 können den Vektorprozessor 220 über den Puffer 660 und den Cache-Lese-MUX 650 direkt erreichen. Daten für den FBUS 250 können vom Vektorprozessor 220 auch direkt über den Cache-Schreib-MUX 610 und den FBUS-MUX 640 kommen.
  • Daten vom Vektorprozessor 220 wandern zum SRAM-Block 260 über den Cache-Schreib-MUX 610. Daten vom SRAM-Block 260 und vom ROM 270 werden durch den Cache-Lese-MUX 650 zum Vektorprozessor 220 geführt.
  • 7 ist ein detailliertes Blockdiagramm eines zweiten Ausführungsbeispiels der Datenpipeline 410. Da die Funktionalität des Ausführungsbeispiels der 7 ähnlich der Funktionalität des Ausführungsbeispiels der 6 ist, werden nur die Unterschiede zwischen den Ausführungsbeispielen in Einzelheiten erörtert. Die allgemeine Organisation der Elemente bei jedem Ausführungsbeispiel wird jedoch auch beschrieben. In 7 ist der Cache-Lese-MUX 650 gegen den Cache-Lese-MUX 750 und einen MUX-Latch 751 bzw. MUX-Zwischenspeicher ausgetauscht. Der Puffer 660 ist gegen einen Lese-Latch 760 ausgetauscht. Der FBUS-MUX 640 ist durch einen FBUS-MUX 740, ein Rückschreib-(WB)-Datenlatch 741, einen Speicherschreib-Latch 742 und einen Speicherschreib-Latch 743 ersetzt. Die Latche bzw. Zwischenspeicher beim Ausführungsbeispiel der 7 werden zur Pipelineverarbeitung der Datenpipeline verwendet. Der Cache-Schreib-MUX 610 wird gegen einen Cache-Schreib-MUX 710, einen Schreib-Daten-Latch 712, eine Einrichtung zum Ausrichten 713 und einen IO- bzw. EIN/AUS-Schreib-Latch 711 ausgetauscht. Der IO-MUX 630 wird durch einen IO- bzw. EIN/AUS-Lese-Latch 731 und einen IO- bzw. EIN/AUS-Lese-Latch 732 ausgetauscht. Der GP-Lese-MUX 620 wird durch einen IO- bzw. EIN/AUS-Schreib-Latch 721 und einen Microcache 722 ersetzt.
  • Der Microcache 722 koppelt den Hauptcache, den SRAM-Block 270 und das ROM 260 mit dem Universal-Prozessor 210. Der Microcache 722 ist in einen Micro-Anweisungscache und einen Micro-Daten-Cache aufgeteilt, von denen jeder ein Kennzeichen-Teil 822 (8), Etikett- bzw. Kennzeichen-Vergleicher und Gültigkeits Bits umfasst. Der Microcache 722 arbeitet als ein Vorabrufpuffer. Die Adresse einer Aufforderung vom Universal-Prozessor 210 wird zuerst mit dem Kennzeichen-Teil 822 des Microcaches 722 verglichen. Falls beim Microcache ein Fehlzustand auftritt (d. h., keine Übereinstimmung innerhalb des Microcache-Kennzeichens 822 vorliegt), wird die Adresse der Aufforderung mit der Adresse und einer anderen Steuerinformation zum Hauptcache gesendet. Um den Microcache 722 zu vereinfachen, müssen Übereinstimmungen eines Kennzeichens bei Datenschreibvorgängen vom Universal-Prozessor im Microcache 722 die Microcacheadresse ungültig machen, so daß die geschriebenen Daten zum Hauptcache gesendet werden müssen. Auf diese Art und Weise kann ein Cachezusammenhang ohne komplexe Rückschreib- oder Schreibvorgänge durch Aufbauformen am Microcache 722 beibehalten werden.
  • 8 stellt ein Blockdiagramm eines Ausführungsbeispiels der Adresspipeline 420 dar. Die FBUS-Schnittstelle 850 besteht aus einer Adressenwarteschlange für vier Einträgen und einem Rückschreiblatch. Die FBUS-Schnittstelle 850 kann gleichzeitig ein anhängiges Lesen vom Anweisungscache 662, ein anhängiges Lesen vom Anweisungscache 292, eine Schreibaufforderung vom Datencache 294 und eine Rückschreibaufforderung vom Datencache 294 unterstützen. Die Adressen für Schreibaufforderungen werden zum Schreib-Adress-MUX 810 gesendet, während die Adressen für Leseaufforderungen zum Lese-Adress-MUX 820 gesendet werden. Die Cachesteuereinrichtung 280 (2) führt eine Arbitration bzw. Entscheidung zwischen Aufforderungen vom Universal-Prozessor 210, vom Vektorprozessor 220, vom IOBUS 240 und vom FBUS 250 aufgrund der Einrichtungs-ID der Aufforderung durch. Die Cachesteuerung 280 konfiguriert dann die verschiedenen Multiplexer der Datenpipeline 410 und der Datenpipeline 420, um die Aufforderungen handzuhaben. Ein Arbitrationsschema bzw. Entscheidungsschema kann aufgrund einer Bestimmung oder Abschätzung der Wichtigkeit jeder Einrichtung entschieden werden. Typischerweise wird dem Universal-Prozessor 210 die höchste Priorität gegeben. Wie vorstehend erläutert, ist das Cache-Untersystem 230 in der Lage, Lese- und Schreibvorgänge gleichzeitig durchzuführen. Daher sind getrennte Vergleicher für Lese- und Schreibaufforderungen erforderlich. Der Vergleicher 811 wird zum Vergleichen der Schreibadresse vom Schreib-Adress-MUX 810 mit den Adressen verwendet, die über einen Schreib-Kennzeichen-Anschluß 406-1 empfangen werden, um zu bestimmen, ob sich die Schreibadresse der momentanen Aufforderung im Cache befindet. Falls sich die Adresse im Cache befindet, wird der Cachespeicher beim Zusammenpassen bzw. Abstimmen der Cachespeicherstelle mit den neuen Daten aktualisiert. Falls sich die Adresse nicht im Cache befindet, werden die Adresse und die Daten bei einer nicht verwendeten Cachestelle oder der Stelle in den Cachespeicher geschrieben, auf die unlängst zuletzt zugegriffen wurde. Schließlich werden die Daten zu der geeigneten, direkt abgebildeten Einrichtung unter Verwendung eines Rückschreibens oder Schreibens durch Cachetechniken gesendet.
  • Der Vergleicher 821 wird zum Vergleichen der Leseadresse der Leseaufforderungen vom Lese-Adress-MUX 820 und der Adressen verwendet, die durch den Lese-Kennzeichen-Anschluß 406-2 empfangen werden. Falls ein Kennzeichen auf die Leseadressen abgestimmt ist bzw. mit denen übereinstimmt, werden die Daten, die zu dem Kennzeichen gehören, unter Verwendung der Datenpipeline 410 zur auffordernden Einrichtung gesendet. Wie vorstehend erläutert, werden die Daten mit einer Einrichtungs-ID, einer Transaktions-ID und der angeforderten Adresse zurückgegeben, falls das Transaktionsprotokoll verwendet wird. Falls keine Kennzeichen mit der Leseadresse übereinstimmen, muß das Cache-Untersystem 230 die angeforderten Daten von der geeigneten Direktspeicherabbildungseinrichtung bzw. im Direktspeicher-abgebildeten Einrichtung wiedergewinnen bzw. auslesen. Wenn die angeforderten Daten ausgelesen werden, werden die angeforderten Daten, die Einrichtungs-ID, die Transaktions-ID und die Adresse zur anfordernden Einrichtung gesendet. Während die Daten für eine erste Anforderung abgerufen werden, ist das Cache-Untersystem 230 in der Lage, einer zweiten Leseaufforderung zu dienen, so daß eine zweite Einrichtung, die den Cache benötigt, nicht durch die erste Einrichtung blockiert wird.
  • Bei den verschiedenen Ausführungsbeispielen des Aufbaus können auch andere Implementierungen von Datenpipelines, Schalttafeln, Adresspipelines, Cache-Untersystemen, Multiplexern, Zwischenspeichern, Bussen, Prozessoren etc. Anwendung finden und alternative Merkmale können zum Erzeugen eines Digitalsignalprozessors verwendet werden.

Claims (9)

  1. Integrierter Digitalsignalprozessor, aufweisend: einen Universal-Prozessor (210); einen Vektorprozessor (220), der parallel zum Universal-Prozessor betreibbar ist, ein Cache-Untersystem (230), das mit dem Universal-Prozessor (210) und dem Vektorprozessor (220) gekoppelt ist, wobei das Cache-Untersystem (230) einen Speichercache (260, 290) aufweist; einen ersten Bus (250), der mit dem Cache-Untersystem (230) gekoppelt ist; und einen zweiten Bus (240), der mit dem Cache-Untersystem (230) gekoppelt ist; dadurch gekennzeichnet, dass der erste Bus (250) eine höhere Bus-Bandbreite als der zweite Bus (240) aufweist; das Cache-Untersystem (230) sowohl den Universal-Prozessor (210) als auch den Vektorprozessor (220) mit dem ersten und zweiten Bus (250, 240) koppelt; erste Einrichtungen (252-258) mit höherer Verarbeitungsgeschwindigkeit an den ersten Bus (250) gekoppelt sind; und zweite Einrichtungen (242-248) mit niedrigerer Verarbeitungsgeschwindigkeit an den zweiten Bus (240) gekoppelt sind.
  2. Integrierter Digitalsignalprozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Universal-Prozessor (210) aufweist: einen Satz Skalarregister; eine Anweisungs-Decodiereinheit und einen Verarbeitungskern der eine Vielzahl skalarer Werte entsprechend Anweisungen manipuliert, die mittels der Anweisungs-Decodiereinheit decodiert werden.
  3. Integrierter Digitalsignalprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Vektorprozessor (220) aufweist: einen Satz Vektorregister; eine zweite Anweisungs-Decodiereinheit und einen zweiten Verarbeitungskern, der eine Vielzahl von Vektorwerten entsprechend Anweisungen manipuliert, die durch die zweite Anweisungs-Decodiereinheit decodiert werden.
  4. Integrierter Digitalsignalprozessor nach Anspruch 1, dadurch gekennzeichnet, dass das Cache-Untersystem (230) aufweist: einen Cache-Leseanschluss (650, 210, 260); und einen Cache-Schreibanschluss (610, 260); wobei das Cache-Untersystem gleichzeitige Zugriffe auf den Cache-Leseanschluss und den Cache-Schreibanschluss unterstützt.
  5. Integrierter Digitalsignalprozessor nach Anspruch 1 oder 4, dadurch gekennzeichnet, dass das Cache-Untersystem (230) ferner aufweist: eine Datenpipeline (410), die mit dem Universal-Prozessor (210) und dem Vektorprozessor (220) gekoppelt ist; und eine Adresspipeline (420), die mit dem Universal-Prozessor (210) und dem Vektorprozessor (220) gekoppelt ist; wobei der Speichercache (260, 290) aufweist: einen SRAM-Cache (260), der mit der Datenpipeline (410) und der Adresspipeline (420) gekoppelt ist; und einen ROM-Cache (260), der mit der Datenpipeline (410) und der Adresspipeline (420) gekoppelt ist.
  6. Integrierter Digitalsignalprozessor nach Anspruch 1, ferner gekennzeichnet durch: einen Bitstrom-Prozessor, der mit dem zweiten Bus (240) gekoppelt ist; und eine Schnittstelle (255) für einen lokalen Bus (105), die mit dem ersten Bus (250) gekoppelt ist.
  7. Integrierter Digitalsignalprozessor nach Anspruch 6, dadurch gekennzeichnet, dass das Cache-Untersystem (230) zum Bereitstellen einer Vielzahl von Kommunikationsbahnen zwischen dem Vektorprozessor (220), dem Universal-Prozessor (210), dem ersten Bus (250) und dem zweiten Bus (240) konfigurierbar ist.
  8. Integrierter Digitalsignalprozessor nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass auf das Cache-Untersystem (230) über eine erste Cacheaufforderung zugreifbar ist.
  9. Integrierter Digitalsignalprozessor nach Anspruch 8, dadurch gekennzeichnet, dass das Cache-Untersystem (230) zum Annehmen einer zweiten Cache-Aufforderung vor dem Abschließen der ersten Cache-Aufforderung in der Lage ist, falls zum Abschließen der ersten Cache-Aufforderung eine Vielzahl von Zyklen erforderlich ist.
DE19735981A 1996-08-19 1997-08-19 Mehrprozessorbetrieb in einem Multimedia-Signalprozessor Expired - Lifetime DE19735981B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US69710296A 1996-08-19 1996-08-19
US08/697,102 1996-08-19

Publications (2)

Publication Number Publication Date
DE19735981A1 DE19735981A1 (de) 1998-03-26
DE19735981B4 true DE19735981B4 (de) 2007-02-22

Family

ID=24799807

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19735981A Expired - Lifetime DE19735981B4 (de) 1996-08-19 1997-08-19 Mehrprozessorbetrieb in einem Multimedia-Signalprozessor

Country Status (7)

Country Link
US (1) US6425054B1 (de)
JP (1) JP3954163B2 (de)
KR (1) KR100280285B1 (de)
CN (1) CN1129078C (de)
DE (1) DE19735981B4 (de)
FR (1) FR2752466B1 (de)
TW (1) TW346573B (de)

Families Citing this family (71)

* 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
US6804726B1 (en) 1996-05-22 2004-10-12 Geovector Corporation Method and apparatus for controlling electrical devices in response to sensed conditions
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
US5933855A (en) 1997-03-21 1999-08-03 Rubinstein; Richard Shared, reconfigurable memory architectures for digital signal processing
US6895452B1 (en) 1997-06-04 2005-05-17 Marger Johnson & Mccollom, P.C. Tightly coupled and scalable memory and execution unit architecture
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
WO1999060480A1 (en) * 1998-05-15 1999-11-25 Richard Rubinstein Shared, reconfigurable cache memory execution subsystem
US7558472B2 (en) 2000-08-22 2009-07-07 Tivo Inc. Multimedia signal processing system
US6233389B1 (en) 1998-07-30 2001-05-15 Tivo, Inc. Multimedia time warping system
EP1365385B1 (de) 1998-11-09 2012-06-13 Broadcom Corporation Graphisches Anzeigesystem mit Graphikschichtverarbeitung, Alphamischung und Zusammenstellung mit Videodaten
DE50014621D1 (de) 1999-05-06 2007-10-18 Siemens Ag Kommunikationseinrichtung mit Mitteln zur Echtzeitverarbeitung von zu übertragenden Nutzdaten
EP1228440B1 (de) 1999-06-10 2017-04-05 PACT XPP Technologies AG Sequenz-partitionierung auf zellstrukturen
US6668299B1 (en) 1999-09-08 2003-12-23 Mellanox Technologies Ltd. Software interface between a parallel bus and a packet network
US6580767B1 (en) * 1999-10-22 2003-06-17 Motorola, Inc. Cache and caching method for conventional decoders
US6624819B1 (en) * 2000-05-01 2003-09-23 Broadcom Corporation Method and system for providing a flexible and efficient processor for use in a graphics processing system
ATE476700T1 (de) 2000-06-13 2010-08-15 Richter Thomas Pipeline ct-protokolle und -kommunikation
DE10029675A1 (de) * 2000-06-23 2002-01-31 Dialog 4 System Engineering Gm Elektronisches Audiogerät
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7003450B2 (en) * 2000-10-20 2006-02-21 Pts Corporation Methods and apparatus for efficient vocoder implementations
KR100771728B1 (ko) * 2000-12-09 2007-10-30 엘지엔시스(주) 자동은행거래단말기에서의 상호 스레드 통신방법
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
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20030088407A1 (en) * 2001-04-02 2003-05-08 Yi Hu Codec
JP2004533691A (ja) 2001-06-20 2004-11-04 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データを処理するための方法
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
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
WO2003060747A2 (de) 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
DE10254255A1 (de) * 2002-11-20 2004-06-17 Werner Wirsum Verfahren zur Leistungsbesserung von Audioanwendungen auf Computern unter Einbeziehung sog. Grafikkarten in die Datenberechnung
JP4542308B2 (ja) * 2002-12-16 2010-09-15 株式会社ソニー・コンピュータエンタテインメント 信号処理用デバイス及び情報処理機器
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
KR100463205B1 (ko) * 2003-02-13 2004-12-23 삼성전자주식회사 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
JP2007503787A (ja) 2003-05-19 2007-02-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メモリ帯域幅要求が低いビデオ処理装置
JP2005057738A (ja) * 2003-07-18 2005-03-03 Canon Inc 信号処理装置、信号処理方法及びプログラム
JP4699685B2 (ja) * 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
US7627039B2 (en) * 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding
US6993598B2 (en) * 2003-10-09 2006-01-31 International Business Machines Corporation Method and apparatus for efficient sharing of DMA resource
KR100826757B1 (ko) * 2003-11-18 2008-04-30 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법
US7136943B2 (en) * 2004-03-18 2006-11-14 International Business Machines Corporation Method and apparatus for managing context switches using a context switch history table
EP1728171A2 (de) * 2004-03-26 2006-12-06 Atmel Corporation Chip-doppelprozessor-gleitkomma-digitalsignalprozessorsystem für komplexe domänen
ITMI20040600A1 (it) * 2004-03-26 2004-06-26 Atmel Corp Sistema dsp su chip a doppio processore a virgola mobile nel dominio complesso
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US7693257B2 (en) 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization
KR100882949B1 (ko) 2006-08-17 2009-02-10 한국전자통신연구원 화소 유사성에 따라 적응적인 이산 코사인 변환 계수스캐닝을 이용한 부호화/복호화 장치 및 그 방법
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US20100191913A1 (en) * 2009-01-26 2010-07-29 Agere Systems Inc. Reconfiguration of embedded memory having a multi-level cache
CN101567732B (zh) * 2009-06-05 2012-07-04 北京派瑞根科技开发有限公司 实现模拟多媒体广播内容过滤的方法
EP2333673B1 (de) * 2009-12-07 2014-04-16 STMicroelectronics (Research & Development) Limited Signalabtastung und Übertragung
EP2330514B1 (de) 2009-12-07 2018-12-05 STMicroelectronics (Research & Development) Limited Verpackung von integrierten Schaltungen
EP2339475A1 (de) * 2009-12-07 2011-06-29 STMicroelectronics (Research & Development) Limited Inter-Chip Kommunikationsschnittstelle für ein Multi-Chip-Gehäuse
EP2333830B1 (de) 2009-12-07 2014-09-03 STMicroelectronics (Research & Development) Limited Verpackung bestehend aus einem ersten und einem Siliziumwürfel zusammengekoppelt durch eine Multiplex-Bus
EP2339795B1 (de) * 2009-12-07 2013-08-14 STMicroelectronics (Research & Development) Limited Inter-Chip Kommunikationsschnittstelle für ein Multi-Chip-Gehäuse
US8959501B2 (en) * 2010-12-14 2015-02-17 Microsoft Corporation Type and length abstraction for data types
US8521937B2 (en) * 2011-02-16 2013-08-27 Stmicroelectronics (Grenoble 2) Sas Method and apparatus for interfacing multiple dies with mapping to modify source identity
US8836709B2 (en) 2011-08-18 2014-09-16 International Business Machines Corporation Vector register file caching of context data structure for maintaining state data in a multithreaded image processing pipeline
CN102968379B (zh) * 2012-10-24 2015-05-06 无锡江南计算技术研究所 一种寄存器分配方法、系统及处理器
US20170199816A1 (en) * 2014-06-19 2017-07-13 Nec Corporation Information processing device, data storage method, and recording medium
US9818337B2 (en) * 2014-07-24 2017-11-14 Sct Technology, Ltd. LED display control circuit with PWM circuit for driving a plurality of LED channels
KR102446677B1 (ko) * 2015-11-26 2022-09-23 삼성전자주식회사 스토리지 컨트롤러의 동작 방법 및 상기 스토리지 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3210816A1 (de) * 1981-03-25 1982-10-14 Hitachi, Ltd., Tokyo Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
DE4103093A1 (de) * 1990-02-01 1991-08-08 Hitachi Ltd Computersystem und steuerverfahren fuer dieses computersystem
EP0543652B1 (de) * 1991-11-19 1998-10-28 Fujitsu Limited Speicherzugriffseinrichtung

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4349871A (en) * 1980-01-28 1982-09-14 Digital Equipment Corporation Duplicate tag store for cached multiprocessor system
US4300763A (en) * 1980-02-21 1981-11-17 Barr Samuel J Psychological game device
US4394540A (en) 1981-05-18 1983-07-19 Timex Corporation Remote meter reader and method for reading meters over non-dedicated telephone lines
JPS6467680A (en) 1987-09-09 1989-03-14 Hitachi Ltd Vector processor
JP2570845B2 (ja) * 1988-05-27 1997-01-16 セイコーエプソン株式会社 情報処理装置
US5040109A (en) 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
US6070003A (en) 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5263144A (en) 1990-06-29 1993-11-16 Digital Equipment Corporation Method and apparatus for sharing data between processors in a computer system
US5666510A (en) 1991-05-08 1997-09-09 Hitachi, Ltd. Data processing device having an expandable address space
US5530881A (en) * 1991-06-06 1996-06-25 Hitachi, Ltd. Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs
US5930522A (en) * 1992-02-14 1999-07-27 Theseus Research, Inc. Invocation architecture for generally concurrent process resolution
US5669010A (en) 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5423051A (en) * 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5502683A (en) 1993-04-20 1996-03-26 International Business Machines Corporation Dual ported memory with word line access control
US5546586A (en) 1993-05-06 1996-08-13 Apple Computer, Inc. Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US5615343A (en) 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
US5644756A (en) 1995-04-07 1997-07-01 Motorola, Inc. Integrated circuit data processor with selectable routing of data accesses
US5822606A (en) 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5949439A (en) 1996-08-15 1999-09-07 Chromatic Research, Inc. Computing apparatus and operating method using software queues to improve graphics performance

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3210816A1 (de) * 1981-03-25 1982-10-14 Hitachi, Ltd., Tokyo Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
DE4103093A1 (de) * 1990-02-01 1991-08-08 Hitachi Ltd Computersystem und steuerverfahren fuer dieses computersystem
EP0543652B1 (de) * 1991-11-19 1998-10-28 Fujitsu Limited Speicherzugriffseinrichtung

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RATHNAM, SELLIAH, SLAVENBURG, GERT: An Architec- tural Overview of the Programmable Multimedia Processor, TM-1. In: Proceedings of COMPCOM, 1996, S. 319-326
RATHNAM, SELLIAH, SLAVENBURG, GERT: An Architec- tural Overview of the Programmable Multimedia Processor, TM-1. In: Proceedings of COMPCOM, 1996,S. 319-326 *

Also Published As

Publication number Publication date
DE19735981A1 (de) 1998-03-26
FR2752466B1 (fr) 2005-01-07
KR19980018069A (ko) 1998-06-05
FR2752466A1 (fr) 1998-02-20
CN1129078C (zh) 2003-11-26
KR100280285B1 (ko) 2001-02-01
CN1175037A (zh) 1998-03-04
TW346573B (en) 1998-12-01
US6425054B1 (en) 2002-07-23
JP3954163B2 (ja) 2007-08-08
JPH1091596A (ja) 1998-04-10

Similar Documents

Publication Publication Date Title
DE19735981B4 (de) Mehrprozessorbetrieb in einem Multimedia-Signalprozessor
US5860158A (en) Cache control unit with a cache request transaction-oriented protocol
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
US6567426B1 (en) Preemptive timer multiplexed shared memory access
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE4040963C2 (de) Datenverarbeitungssystem
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
CA2211083C (en) Address transformation in a cluster computer system
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE69724884T2 (de) Gerät und Verfahren zur positiven und subtraktiven Adressdekodierung auf einem Bus
DE112010002773T5 (de) Entpacken von gepackten daten auf mehreren spuren
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE60302809T2 (de) Vorrichtung und Verfahren zur selektiven Steuerung der Speicherattribute
DE102018005170A1 (de) Anweisungen für vektoroperationen mit konstanten werten
DE69927171T2 (de) Verfahren zum einschreiben von daten in dateienspeichereinheiten
DE3932695A1 (de) Datenverarbeitungssystem vom mehrfach virtuellen adressraum-typ
DE102018131484A1 (de) Einrichtung und verfahren zum vektormultiplizieren und zur subtraktion von vorzeichenbehafteten doppelwörtern
DE19735349B4 (de) Vektorprozessor und Verfahren zu dessen Betrieb
Undy et al. A low-cost graphics and multimedia workstation chip set
DE102016006560A1 (de) Systeme, Verfahren und Vorrichtungen zur Leistungsverbesserung von statusabhängigen Berechnungen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8364 No opposition during term of opposition
R071 Expiry of right