DE69709078T2 - Verwaltungssystem zur datenverarbeitung - Google Patents

Verwaltungssystem zur datenverarbeitung

Info

Publication number
DE69709078T2
DE69709078T2 DE69709078T DE69709078T DE69709078T2 DE 69709078 T2 DE69709078 T2 DE 69709078T2 DE 69709078 T DE69709078 T DE 69709078T DE 69709078 T DE69709078 T DE 69709078T DE 69709078 T2 DE69709078 T2 DE 69709078T2
Authority
DE
Germany
Prior art keywords
data processing
data
management system
operations
input
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
DE69709078T
Other languages
English (en)
Other versions
DE69709078D1 (de
Inventor
Paul Rowland
Robert Whittaker
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE69709078D1 publication Critical patent/DE69709078D1/de
Application granted granted Critical
Publication of DE69709078T2 publication Critical patent/DE69709078T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung betrifft ein Datenverarbeitungsmanagementsystem des Typs, der mit Echtzeit- Multimediaeingaben und -verarbeitung verwendet werden kann.
  • HTNTERGRUND DER ERFINDUNG
  • Die Benutzerschnittstelle mit Computern wurde kontinuierlich weiterentwickelt, von Fernschreibtastaturen zu Tastatur- und Zeichenendgeräten bis hin zur (grafischen Benutzeroberfläche) GUI, die zur Zeit für die Mehrzahl von Computerbenutzern die Standardschnittstelle ist. Fortgesetzt wird diese Entwicklung mit Sound und 3D-Grafik, die immer alltäglicher werden, und dem Aufkommen von 3D-Sound und virtueller Realität. Ihnen gemeinsam ist eine größere Komplexität der Mensch-Computer-Schnittstelle, die durch eine damit einhergehende Zunahme der dem Benutzer präsentierten Datentypen erreicht wird. PC-(Personal Computer)-Anwendungen nutzen diese Verschiebung aus und verlassen sich in zunehmendem Maße auf die Verfügbarkeit von Sound und 3D-Grafik zum Erreichen ihres vollen Potentials.
  • Das hat dazu geführt, dass Chip- und Platinenhersteller Produkte mit kombinierter Funktionalität zum Bearbeiten von mehr als einem Datentyp anbieten, z. B. 2-D-Grafik und Sound oder 2-D- und MPEG-(Motion Picture Experts Gtoup)-Wiedergabe. Es ist wichtig, zu beachten, dass diese Produkte bisher für jeden Datentyp separate Funktionseinheiten benutzen.
  • In jüngerer Zeit sind programmierbare SIMD-Architekturen (SIMD - Single Instruction Multiple Data: Datenverarbeitung mit singulärem Befehls- und parallelem Datenstrang) (z. B. Chromatics MPACT) aufgekommen. Diese Architekturen verwenden identische Verarbeitungselemente, die den gleichen Befehl zum parallelen Durchführen der gleichen Verarbeitung an einer Anzahl von Datenblöcken ausführen. Dieser Ansatz funktioniert gut mit Daten, die leicht partitioniert werden können, um die Durchführung einer gemeinsamen Funktion zuzulassen, z. B. Blockverarbeitung bei Datenkomprimierung wie MPEG, aber nicht flexibel genug sind, um einen kompletten allgemeinen Algorithmus auszuführen, was oftmals konditionelle Flussregelung innerhalb der Datenverarbeitung erfordert.
  • DSP-Anbieter (DSP: Digitaler Signalprozessor) haben auch versucht, diesen Markt mit MIMD-Geräten (MIMD: Multiple Instruction Multiple Data - parallele Verarbeitung, bei der mehrere Prozessoren gleichzeitig Befehle ausführen und auf Daten operieren) (z. B. TI320C80 von Texas Instruments) anzusprechen, die die erforderliche Flexibilität zum Verarbeiten der verschiedenen Datentypen bieten. Da die Architektur Universal-DSP-Kerne nachbildet, die einen weit größeren Grad an Flexibilität beibehalten, als für die Anwendung erforderlich ist, ist der resultierende Chip ein kostspieliger Baustein, der für allgemeine PC- und Verbraucherzwecke zu teuer ist.
  • CPU-(Zentraleinheit)-Anbieter, die mit schnellen RISC-CPU für Universalprogramme und die Multimediaverarbeitung werben, können (und wollen) ihre Architektur nicht gefährden, um mehr als nur einige multimediaspezifischen Befehle zu unterstützen, und erreichen daher nicht die erforderlichen Leistungspegel zu angemessenen Kosten. Da die CPU typischenfalls auch für den Betrieb eines Nicht-Echtzeit-Betriebssystems verwendet wird, kann sie auch keine Verarbeitung mit geringer Latenz erbringen.
  • Dedizierte Multimedia-CPU (z. B. Trimedia von Philips), die mehrere Verarbeitungseinheiten steuernde VLIW-(Very Long Instruction Words)-Befehle verwenden, können ihre Verarbeitungsleistung nicht effizient ausschöpfen, weil jeder Befehl für ein einziges Task (und einen einzigen Datentyp) dediziert ist, und sind daher nicht in der Lage, alle verfügbaren Verarbeitungseinheiten optimal zu nutzen. Beispielsweise kann ein für eine 3D-Grafik-Operation dedizierter VLIW-Befehl für MPEG-Bewegungserkennung (Motion Estimation) bestimmte Hardware nicht vorteilhaft nutzen. Die Anzahl von Verarbeitungseinheiten und somit die Skalierbarkeit wird durch die VLIW-Wortlänge ebenfalls begrenzt.
  • US 5.487.153-A legt ein SIMD-System offen. Da jede Verarbeitungseinheit den gleichen Prozess durchführen soll, ist das System davon abhängig, dass Dateneingabe für jede Verarbeitungseinheit verfügbar ist, um die Verarbeitung durchzuführen. Wenn keine Daten zur Verfügung stehen, hört die Ausführung auf.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Bevorzugte Ausgestaltungen der vorliegenden Erfindung beziehen sich auf den Bedarf für eine Vorrichtung, die alle Multimediadatentypen auf eine Weise verarbeitet, die Systemkosten minimiert und künftige Entwicklungen in Multimedia- und den verwandten Industrienormen berücksichtigt. Sie sehen eine Architektur vor, die hinsichtlich Verarbeitungsleistung, Echtzeit-Ein-/Ausgabe-Unterstützung und bezüglich der Anzahl gleichzeitig durchführbarer Aktivitäten skalierbar ist.
  • Alle Multimediadatentypen können als Datenströme betrachtet werden, die sich für einen Vektorverarbeitungsansatz anbieten. Einige dieser Ströme sind in Echtzeit (z. B. von einem Audio- oder Videoeingang) und benötigen als solche entweder dedizierte Pufferung oder Verarbeitung mit geringer Latenz zum Vermeiden von Datenverlust. Jeder Datenstrom erfordert auch eine Hardware- Ressource, so dass er verarbeitet werden kann.
  • Eine bevorzugte Ausgestaltung der Erfindung hat einen Echtzeit-Verarbeitungskern geringer Latenz, der nur für Daten- Ein-/-Ausgabe und Task-Scheduling zuständig ist. Das vermeidet die Notwendigkeit unnötiger und kostspieliger Pufferung. Außerdem beinhaltet sie ein Verfähren der dynamischen Ressourcenprüfung, um sicherzustellen, dass nur Tasks laufen, für die die erforderlichen Ressourcen verfügbar sind.
  • Das Gleichgewicht zwischen Hostverarbeitungsleistung, Speicherkosten und Siliziumkosten ändert sich auch ständig. Das bedeutet, dass die optimale Arbeitsteilung zwischen einem Hostprozessor und einem Multimedia-Coprozessor sich mit der Zeit ebenfalls ändert. Diese Vorrichtung ist programmierbar, damit die Arbeitsteilung nach Bedarf geändert werden kann.
  • Die Skalierbarkeit paralleler Verarbeitungsvorrichtungen ist ein Problem für Hardware-Design und unterstützende Software. Wenn mehr Verarbeitungseinheiten zu einer Vorrichtung hinzugefügt werden, wird die Taskaufteilung zwischen den Verarbeitungseinheiten schwieriger, was entweder zu abnehmenden Umsatz oder zu einem exponentiellen Wachstum der Anzahl von Verbindungen zwischen Funktionseinheiten führt. Derartige Änderungen resultieren meist auch in Änderungen am Programmierungsmodell für die Vorrichtung, die grundlegende Änderungen an der unterstützenden Software erfordern.
  • Bevorzugte Ausgestaltungen der Erfindung behandeln diese Probleme mit einer einheitlichen skalierbaren Architektur, bei der alle Elemente skaliert werden können, ohne eine explosionsartige Zunahme der Verbindungen zwischen Funktionseinheiten zu schaffen und ohne das für die Softwareverbindung mit der Vorrichtung präsentierte Programmierungsmodell zu ändern.
  • Fig. 1 zeigt die Grundarchitektur der Vorrichtung.
  • Die Vorrichtung wurde als eine umkonfigurierbare Maschine konzipiert, passend für alle derzeiten und zukünftigen, zum Verarbeiten von Multimediadaten erforderlichen Algorithmen. Die von ihr geleistete Arbeit ist in zwei Kategorien aufgeteilt. Ein Multimediasteuerungskern (Media Control Core) führt sowohl Echtzeit-Scheduling als auch Ein-/Ausgabeverarbeitung durch, während die rechnungsintensive Datenverarbeitung von einer oder mehr zusätzlichen Datenverarbeitungseinheiten durchgeführt wird.
  • Diese Arbeitsteilung ist eine der grundlegenden Charakteristiken der Architektur.
  • Die Datenverarbeitung besteht aus einer Anzahl von Schritten:
  • Parameterabruf und Parametrierung
  • Datenabruf und -verarbeitung
  • Datenspeicherung
  • Um einen hohen Datenverarbeitungsdurchsatz effizient zu erzielen, muss ein Prozessor die obigen Vorgänge an einem angemessen großen Datensatz durchführen. Wenn der Datensatz zu klein ist, verwendet der Prozessor einen zu großen Anteil seiner Leistung auf kontextbezogenes Multitasking zwischen Tasks und der resultierenden Notwendigkeit, den Zustand eines Threads zu sichern und umzuspeichern.
  • Da der Multimediasteuerungskern nur für Anfragen zum Transferieren von Daten zwischen E/A-Ports und Speicher (damit die Datenverarbeitung durchgeführt werden kann) erforderlich ist, kann er zwischen jedem Taktzyklus kontextbezogenen zwischen Tasks umschalten, das beseitigt dann die Notwendigkeit großer Datenpuffer zum Unterstützen von Echtzeit-Ein-/Ausgabe. Datenverarbeitungseinheiten können Daten effizient verarbeiten, indem sie einen wesentlichen Teil eines Algorithmus an Daten ohne Unterbrechung durchführen.
  • Diese Verarbeitungselemente werden von einem skalierbaren Cache mit mehreren Datenbanken unterstützt, der durch Cache- Speichern von Datensätzen, die für die aktiven ausgeführten Algorithmen benötigt werden, effizienten Datentransfer und effiziente Datenverarbeitung unterstützt.
  • Die Erfindung wird in den anhängigen Ansprüchen, auf die jetzt Bezug zu nehmen ist, in ihren verschiedenen Aspekten ausführlicher definiert.
  • Im Folgenden wird eine bevorzugte Ausgestaltung der Erfindung unter Bezugnahme auf die Figuren beispielhaft im Detail beschrieben. Dabei zeigt:
  • Fig. 1 ein Blockdiagramm einer Ausgestaltung der Erfindung;
  • Fig. 2 ein Blockdiagramm des Multimediasteuerungskerns von Fig. 1;
  • Fig. 3 ein Blockdiagramm einer zweiten Ausgestaltung der Erfindung;
  • Fig. 4 ein Blockdiagramm der Steuerwerkbefehls-Pipeline des Multimediasteuerungskerns;
  • Fig. 5 ein Blockdiagramm der Innenarchitektur einer der Datenbanken in Fig. 4;
  • Fig. 6 eine Darstellung in Blockform, wie die Ressourcenprüfung und somit die Prozessauswahl vom Multimediasteuerungskern durchgeführt wird, und
  • Fig. 7 ein Blockdiagramm, das zeigt, wie der Zugang zum Banken-Cache-Speicher in Fig. 1 erfolgt.
  • Die Grundarchitektur der Ausgestaltung der Erfindung wird in Fig. 1 gezeigt. Den Mittelpunkt des Systems bildet ein Multimediasteuerungskern (MCC - Media Control Core) 2. Dieser ist ein fein strukturierter Multithreading-Prozessor. Dieser hat eine Mehrzahl von Eingaben und Ausgaben, die an Echtzeit- Dateneingabe- und -ausgabegeräte 4 gekoppelt werden können. Dabei kann es sich z. B. um Videoquellen, Audioquellen, Videoausgänge, Audioausgänge, Datenquellen, Speichergeräte usw. handeln. In einem einfachen Beispiel würden nur eine Eingabe und eine Ausgabe vorgesehen.
  • An den Multimediasteuerungskern 2 ist auch eine Mehrzahl von Datenverarbeitungseinheiten 6 gekoppelt. Diese weisen jeweils einen Datenverarbeitungskern 8 auf, der die Verarbeitung von Daten über die Daten-Pipeline 10 steuert. Der Kern 8 decodiert und ordnet Mikrobefehle sequentiell für die Pipeline 10.
  • Ebenfalls mit dem Multimediasteuerungskern 2 gekoppelt ist ein Cache-Speicher mit mehreren Banken, aus dem von Multimediasteuerungskern 2 und Datenverarbeitungseinheiten 6 Daten abgerufen werden können und in die vom Multimediasteuerungskern 2, von den Datenverarbeitungseinheiten 6 Daten geschrieben werden können.
  • Der Multimediasteuerungskern ist eine fein strukturierte Multithreading-Verarbeitungseinheit, die Daten von Eingaben zu Datenverarbeitungskernen oder zum Speicher leitet und Daten an Ausgaben liefert. Er ist so angeordnet, dass er bei jedem Taktzyklus kontextbezogen zwischen Tasks umschalten kann. Das wird dadurch erzielt, dass bei jedem Taktzyklus geprüft wird, für welche der möglichen Operationen, die er durchführen könnte, alle Ressourcen verfügbar sind, um jene Tasks durchzuführen, und welcher von diesen die höchste Priorität hat. Wenn ausreichend Verarbeitungsleistung bereitgestellt wäre, könnte er zum Beginnen des Ablaufs von mehr als einer Operation bei jedem Taktzyklus angeordnet werden.
  • Diese Ressourcenprüfung gewährleistet, dass alles vorliegt, was zum Durchführen eines bestimmten Task erforderlich ist. Dazu gehören externe Ressourcen, wie z. B. ob Daten an einem Eingabeport (z. B. Videodaten) verfügbar sind oder ob ein Datenspeichergerät oder eine Ausgabe verfügbar ist. Außerdem gehören dazu interne Ressourcen, wie Datenbanken für Zwischenspeicherung, verfügbare Verarbeitungskerne, die zur Zeit nicht an anderen Daten arbeiten, oder zuvor verarbeitete Daten, die für eine bestimmte neue Verarbeitungsoperation benötigt werden. Der Multimediasteuerungskern hat die Aufgabe, Daten von einer Eingabe zu einer geeigneten Datenverarbeitungseinheit 6 zu lenken, damit die Verarbeitung stattfinden kann, und leitet Daten bei Bedarf zu einer Ausgabe, wobei er erforderlichenfalls den Cache nutzt. Wenn die Ausführung eines Befehlssatzes an einer Verarbeitungseinheit begonnen hat, kann der MCC die verschiedenen Threads, die er ausführen kann, und die dafür verfügbaren Ressourcen erneut betrachten, während das Programm auf der Datenverarbeitungseinheit weiterhin ausgeführt wird.
  • Die Ressourcen- und Prioritätsprüfung des Multimediasteuerungskerns bedeutet, dass Tasks, die als Echtzeitdaten dienen, wie z. B. Videoeingabe, ohne die großen Speicherpuffer durchgeführt werden können, die bei aktuellen Echtzeiteingaben gewöhnlich benötigt werden. Bei Operationen wie z. B. Videoeingabe prüft der Multimediasteuerungskern nach, ob Daten am Ein-/Ausgabeport verfügbar sind, und, wenn dies der Fall ist, empfängt er diese Daten und sendet sie entweder zu einem Teil des Mehrbanken-Caches oder zu Datenspeicherregistern in Vorbereitung auf die Verarbeitung durch eine der Datenverarbeitungseinheiten 6.
  • Die Datenverarbeitungseinheiten 6 sind alle unter der Kontrolle und dem Scheduling des Multimediasteuerungskerns 2. In dem in Fig. 1 gezeigten Beispiel bestehen die Einheiten aus einer Verarbeitungs-Pipeline (Daten-Pipeline 10), die sich aus einer Anzahl von Verarbeitungsgliedern zusammensetzt, wie Multiplikatoren, Addierer, Verschieber usw. unter der Kontrolle eines assoziierten Datenverarbeitungskerns 8, der eine Befehlsfolge zum Durchführen eines Datenverarbeitungsalgorithmus ausführt. Jeder dieser Datenverarbeitungskerne hat seine eigenen Mikrobefehls-ROM- und/oder -RAM-Speicherbefehlsfolgen zum Durchführen bestimmter Datenprozesse. Der Multimediasteuerungskern ruft die Datenverarbeitungseinheit 6 zum Durchführen ihrer bestimmten Ablauffolge auf, z. B. indem er ein Adressen-Offset in ihren Mikrobefehls-ROM überträgt und sie anweist, mit der Ausführung zu beginnen. Sie führt dann einen bestimmten Prozess an Daten aus Mehrbanken-Cache oder an Daten, die von einer der Eingaben zum Multimediasteuerungskern an ihm weitergeleitet wurden, durch, bis er beendet ist, dann sendet sie ein Signal an den Multimediasteuerungskern, dass ihre Verarbeitung abgeschlossen ist.
  • Der Mehrbanken-Cache 12 von Fig. 1 wird für Speicherzugriffe verwendet, und diese werden alle durch diese Bank hindurch Cache-gespeichert. Der Cache ist in eine Mehrzahl von Banken 14 unterteilt, die jeweils programmiert werden können, so dass sie mit den Anforderungen eines der durchgeführten Datenverarbeitungstasks übereinstimmen. Beispielsweise könnte eine Cache-Bank für das Caching von Struktur-Maps aus dem Hauptspeicher zur Verwendung bei 3D- Grafik-Rendering dediziert sein. Die Verwendung dieser Programmierbarkeit der Cache-Banken erlaubt die bestmögliche Verwendung eines Chipspeichers und ermöglicht die Durchführung von dynamischer Cache-Allozierung, wodurch die jeweils beste Leistung unter den betreffenden Bedingungen erzielt wird.
  • Darüber hinaus lässt es die Verwendung von mehreren Cache- Banken zu, dass der Cache nichtblockierend ist. Das heißt, wenn eine der Cache-Banken eine Anforderung behandelt, die sie gegenwärtig nicht erfüllen kann, wie z. B. einen Lesebefehl, wenn diese Daten gegenwärtig nicht verfügbar sind, dann kann ein anderer Verarbeitungs-Thread, der eine separate Cache-Bank benutzt, ausgeführt werden.
  • Die gesamte Vorrichtung, wie in Fig. 1 gezeigt, ist skalierbar und kann auf einem einzigen Siliziumplättchen als eine integrierte Schaltung konstruiert werden. Der Multimediasteuerungskern 1 ist auf eine Weise skalierbar, die unter Bezugnahme auf Fig. 2 im Folgenden beschrieben wird. Wenn der Multimediasteuerungskern vergrößert wird, kann er weitere Datenverarbeitungseinheiten 6 unterstützen, während er das gleiche Programmiermodell für die Multimediasteuerung verwendet. Es können auch mehr Cache-Banken zur Unterstützung der weiteren Datenverarbeitungseinheiten hinzugefügt werden, wodurch die Effektivität des Datendurchsatzes zum Multimediasteuerungskern und den Datenverarbeitungseinheiten erhöht wird. Weil das Programmiermodell der Vorrichtung nicht verändert wird, kann dadurch ein hoher Grad an Abwärtskompatibilität erreicht werden.
  • Der Multimediasteuerungskern wird in Fig. 2 detaillierter gezeigt. Er setzt sich zusammen aus einem Steuerwerk 16, einem Satz von Lese-/Schreibeinheiten 18, einem Satz von Programmzählerbanken 20, einem Satz von Adressenbanken 22, einem Satz von Datenbanken 24 und einem Satz von Ein-/Ausgabe- Banken 26. Diese Banken sind von einem Multimediasteuerungskern-Statusbus 28, einem Multimediasteuerungskern-Steuerbus 29 und einer Multimediasteuerungskern-Datenverbindung 30 miteinander gekoppelt. Die Multimediasteuerungskern-Datenverbindung dient zum Senden von Daten zwischen den diversen verschiedenen Banken und der Statusbus stellt Daten wie den Ein-/Ausgabeportstatus und den Status von Datenverarbeitungseinheiten, zu denen der Multimediassteuerungskern Befehle und Daten senden kann, bereit.
  • Außerdem ist ein Speicherblock 32, der Mikrocode-Befehle in ROM und RAM speichert, mit dem Steuerwerk 16 der oben aufgeführten Einheiten 18 bis 26 gekoppelt.
  • Alle Kernkomponenten, 18 bis 26, mit Ausnahme des Steuerwerks haben das gleiche grundlegende Schnittstellenmodell, welches das Lesen von Daten aus ihnen, das Schreiben in sie hinein und das Durchführen von Operationen zwischen in ihnen gespeicherten Daten erlaubt. Jede Bank besteht aus einer fest gekoppelten Lokalspeicher- Registerdatei mit einer Verarbeitungseinheit oder einer arithmetisch-logischen Einheit (ALU).
  • Das Steuerwerk (16) dient zum Steuern der Ausführung des Multimediasteuerungskerns. Bei jedem Taktzyklus prüft es die Verfügbarkeit aller Ressourcen (z. B. Ein-/Ausgabeportstatus, Status der Datenverarbeitungseinheiten usw.) unter Verwendung von vom Multimediasteuerungs-Statusbus 28 bereitgestellten Statusinformationen im Vergleich mit den zum Ausführen jedes Programms unter seiner Kontrolle benötigten Ressourcen. Dann startet es die Ausführung des Befehls für den Programm-Thread der höchsten Priorität, dessen Ressourcen alle verfügbar sind.
  • Die Programmzählerbank dient zum Speichern von Programmzählern für jeden Verarbeitungs-Thread, der vom Multimediasteuerungskern unterstützt wird. Sie besteht aus einem Register für jeden der Verarbeitungs-Threads, welche der Multimediasteuerungskern unterstützen kann, und eine ALU, die alle Operationen auf den Programmzählern für Programmprogression, Schleifendurchlauf, Verzweigungen usw. durchführt. Die Datenbanken 24 werden für allgemeine Operationen an Daten zum Steuern des Programmablaufs innerhalb des Multimediasteuerungskerns verwendet. Sie sind eine allgemeine Ressource, die von jedwedem Verarbeitungs-Thread, der im MCC ausgeführt wird, nach Bedarf verwendet werden kann.
  • Die Adressenbanken 22 dienen zum Speichern und Manipulieren von Adressen für Befehle und für Daten und sind ebenfalls eine allgemeine MCC-Ressource, ähnlich wie die Datenbanken 24.
  • Die Ein-/Ausgabebanken 26 bilden eine Schnittstelle zwischen dem Multimediasteuerungskern und den Echtzeitdatenströmen für Ein-/Ausgabe, die vom MCC unterstützt werden. Ihr Status zeigt die Verfügbarkeit von Daten an einem Port, z. B. Videoeingang, an oder die Fähigkeit eines Ports zum Bewältigen der auszugebenden Daten. Sie können wahlweise auch die Fähigkeit haben, Daten beim Hinein- oder Herausübertragen umzuwandeln, z. B. Bitstopfen eines Datenstroms.
  • Die Lese-/Schreibbanken 18 bilden eine Schnittstelle zwischen Multimediasteuerungskern und Speicher (über den Mehrbanken-Cache). Da zu jedem beliebigen Zeitpunkt mehr als ein Verarbeitungs-Thread ausgeführt werden kann, ist mehr als eine Lese-/Schreibeinheit erforderlich, um das Blockieren von Speicheranfragen zu vermeiden.
  • Der Multimediasteuerungskern ist bezüglich aller wichtigen Aspekte skalierbar. Da er aus Banken aufgebaut ist, die Speicher (Registerdateien) und Verarbeitung (ALU) lokalisieren, können zusätzliche Banken hinzugefügt werden, ohne irgendwelche nicht zu bewältigende Leit- und Verbindungsprobleme aufzuwerfen. Die Anzahl der Verarbeitungs- Threads, die unterstützt werden könnten, kann durch Hinzufügen von Registern zur Programmzählerbank und entsprechendes Modifizieren des Steuerwerks erhöht werden. Die Anzahl von Ein-/Ausgabeströmen, die vom MCC unterstützt werden können, kann durch Hinzufügen weiterer Ein-/Ausgabebanken erhöht werden.
  • Der Datendurchsatz kann durch Hinzufügen weiterer Lese- /Schreibeinheiten 18 vergrößert werden, und die MCC- Verarbeitungsleistung insgesamt kann durch Hinzufügen weiterer Daten- und Adressenbanken 24, 22 gesteigert werden.
  • In Fig. 3 wird ein Blockdiagramm einer spezifischen Implementierung des Datenverarbeitungsmanagementsystems gezeigt. Der MCC dient in diesem als eine Mehrzahl von Echtzeit-Datenein-/-ausgabeports und steuert Datenverarbeitungseinheiten zum Verarbeiten von von ihnen erhaltenen und an sie ausgegebenen Daten.
  • In der Figur wird ein Videoeingang 34 und ein Audioeingang 36 gezeigt, die über assoziierte Präprozessoren 38 und 40 mit dem Multimediasteuerungskern gekoppelt sind. Ein entsprechender Videoausgang 42 und Audioausgang 44 sind über Postprozessoren 46 beziehungsweise 48 mit dem Multimediasteuerungskern 2 gekoppelt. Die Video- und Audioein- und -ausgänge können digitale Ein- und Ausgänge sein.
  • Wie in Fig. 1 ist der Multimediasteuerungskern 2 mit einem mehrere Banken umfassenden Cache 12 gekoppelt, der in diesem Fall die Haupt-Cache-Bank genannt wird. Eine Datenverarbeitungseinheit 6, die einen sekundären Kern 8 und eine Daten-(Media-)Pipeline 10 aufweist, sind direkt mit dem Multimediasteuerungskern gekoppelt und werden zum Verarbeiten von ihnen zugeführten Daten verwendet.
  • Mit dem Multimediakern 2 ist auch eine Verarbeitungseinheit 50 verbunden, die einen Digital-Analog- Wandler-Speisungskern (DAC-Speisungskern) 52 und eine DAC- Speisungspipeline 54 aufweist, welche Daten an einen Digital- Analog-Wandler 56 liefert. Zweck dessen ist die Erzeugung einer Grafikausgabe. Zu diesem Zweck ruft die Verarbeitungseinheit 50 Daten über die Frame-Pufferschnittstelle 58 ab, und Systembus 60 für den Hostcomputer-Video-Adapter (VGA - Video Graphics Adapter) wird nur für Kompatibilität beibehalten. Somit werden Echtzeitdaten an den Video- und Audioeingängen eingespeist und können an den Video- und Audioausgängen ausgesendet werden, während die Grafikausgabe vom DAC 56 gesendet werden kann.
  • Daten für die Grafikausgabe können durch Verarbeiten von Nicht-Echtzeitdaten von einer Quelle wie einem Grafik-Frame- Speicher erzeugt werden, zu dem eine Verbindung über die Frame-Pufferschnittstelle 58, 3D-Daten oder Echtzeit-Video in Fig. 3 gezeigt wird.
  • Der sekundäre Kern 8 und die Mediapipeline 10 ist ein Beispiel einer Datenverarbeitungseinheit, die Audio, 3D, 2D, Videoskalierung, Video-Decodierung usw. verarbeiten kann. Diese könnte aus jedem Typ von allgemeinem Prozessor gebildet werden.
  • Der DAC-Speisungskern und die DAC-Speisungspipeline ist für die Verarbeitung von Daten aus einer Anzahl von Frame- Puffern zur Erzeugen von RGB-Daten für einen DAC dediziert. Er kann pixelweise zwischen Quellenpuffern umschalten, wodurch aus einer Anzahl von Videoformaten wie YUV entnommene Daten konvertiert und Quellendaten aus mehreren Frame-Puffern durch Mischen oder Farb- oder Chroma-Einblendung kombiniert werden.
  • Jeder Kern hat einen assoziierten Mikrocodespeicher, der von ROM und RAM gebildet wird, die zum Zweck der Deutlichkeit hier nicht abgebildet sind, aber vom Prozessor auszuführende Befehle speichert. Die Cache-Banken 12 haben Schnittstellen mit dem Multimediasteuerungskern und den Datenverarbeitungseinheiten 6 und 50. Außerdem sind sie über eine Adressenumsetzungseinheit 64 mit dem Systembus verbunden. Außerdem sind sie mit der Frame-Pufferschnittstelle 58 verbunden zum Schreiben von Daten in einen oder mehr Frame- Puffer und zum Lesen von Daten aus einem oder mehr Frame- Puffern.
  • Eine Datenbank 24 ist in Fig. 5 abgebildet. Sie umfasst eine Registerdatei 72, eine ALU 74 und eine multiplexierte Eingabe 76. Der Betrieb der Datenbank wird von einer Anzahl von Bits in einem Mikrobefehl kontrolliert, die mit WE, W, R1 und R2 gekennzeichnet sind und die in die Registerdatei eingegeben werden. Das Ergebnis des Mikrobefehls, der von der ALU ausgeführt wird, wird als Statusbits H S Z verfügbar gemacht, die zum Steuerwerk des Multimediasteuerungskerns geleitet werden, um Verzweigungen und bedingte Befehle zu implementieren.
  • Die Registerdatei ist konstruiert, damit bei jedem Taktzyklus zwei Operanden von der Eingabe abgerufen werden können und ein Operand zur Ausgabe geschrieben werden kann. Der Dateneingabeport 78 und der Datenausgabeport 80 erlauben die Kommunikation mit anderen Daten über den Multimediasteuerungskern-Datenbus 30, mit dem sie verbunden sind. Der Datenfluss in Fig. 5 verläuft somit vertikal nach unten durch das Diagramm, während der Fluss der Steuerinformationen von links nach rechts ist, wobei er aus Steuerbits vom Steuerwerk und an das Steuerwerk zurückgesendeten Statusbits, die den Status der Datenbank reflektieren, gebildet ist.
  • Eine Mehrzahl dieser Datenbanken werden verwendet, und jede hat die gleiche Form, d. h. jede hat ihre eigene Registerdatei, die fest an eine ALU gekoppelt ist, wie in Fig. 5 gezeigt. Diese Anordnung unter Verwendung einer Mehrzahl von fest gekoppelten Registern und ALUs, vorzugsweise in einer Eins-zu-Eins-Beziehung, unterscheidet sich von Ausgestaltungen von Mehrfach-ALUs vom Stand der Technik, bei denen komplexes Multiplexieren zwischen Registerbanken und Mehrfach-ALUs erforderlich ist.
  • Allgemein führen diese Datenbanken Mehrzweckoperationen an Daten durch, wodurch sie den Programmablauf innerhalb des MCC steuern, und können von jedwedem Verarbeitungs-Thread, der im MCC ausgeführt wird, verwendet werden.
  • Die Adressenbanken 22, die Programmzählerbanken 20 und die E/A-Banken 26 und die Lese-/Schreibeinheiten 18 sind sich in Aufbau und Betrieb alle ähnlich, sind aber in separaten Einheiten angeordnet, damit ihre Implementierung optimiert werden kann, wodurch die Art und Weise reflektiert wird, auf welche sie benutzt werden.
  • Die Adressenbanken speichern und manipulieren Adressen für Datenzugriffe in den Speicher (nicht abgebildet). Sie sind insofern etwas einfacher als die Datenbanken, als sie vorzeichenlose Akkumulatoren verwenden und keine Bedingungscodes zum Zurücksenden über den Statusbus an das Steuerwerk T6 erzeugen.
  • Die Programmzählerbank dient zum Speichern des Programmzählers für jeden Verarbeitungs-Thread, der vom Multimediasteuerungskern unterstützt wird. Die Anzahl der Register in der Bank der in Fig. 5 gezeigten Art entspricht somit der Anzahl von Verarbeitungs-Threads, welche der MCC unterstützen kann. Wie bei den Adressenbanken wird die ALU zum Programmieren von Zähleroperationen verwendet und ist vorzeichenlos. Sie erzeugt keine Bedingungscodes zum Zurücksenden an das Steuerwerk 2.
  • Die E/A-Banken dienen als Schnittstelle zu E/A-Ports und enthalten weder Register noch ALUs. Sie haben eine Schnittstelle zu vom MCC unterstützten Echtzeitdatenströmen. Ein Statussignal zeigt die Verfügbarkeit von Daten an einem Port an oder die Fähigkeit eines Ports, Daten zu nehmen. Sie können wahlweise die Fähigkeit aufweisen, die Daten bei der Übertragung umzuwandlen.
  • Die Lese-/Schreibeinheiten haben eine Schnittstelle zur Cache-Bank 12. Sie haben weder Register noch ALUs. Eine Leseeinheit akzeptiert eine Adresse und setzt, wenn die Daten zurückgesendet werden, ein Daten-gültig-Statusbit. Eine Schreibeinheit akzeptiert Adressen und Daten. Mehrere Lese- und Schreibeinheiten werden verwendet, um sicherzustellen, dass, wenn ein Cachezugang blockiert, dann ein anderer Thread durch eine andere Lese-/Schreibeinheit weiter ausgeführt werden kann.
  • Ein Befehlspuffer mit dem Steuerwerk (nicht abgebildet) für jeden Datenverarbeitungsthread speichert den nächsten Mikrobefehl und die nächsten Befehlsoperanden dieses Threads. Der Befehl und die Operanden beinhalten Bits, welche die Ressourcen beschreiben, die zum Ausführen dieses Befehls erforderlich sind. Dieser Ressourcenbedarf wird zusammen mit Statusbits, die den aktuellen Status des Multimediasteuerungskerns 2, der externen E/A-Ports 20 und der Datenverarbeitungseinheiten 6, 50 beschreiben, in die Ressourcenprüfungslogik des Steuerwerks eingespeist. Einfache Kombinationslogik, wie z. B. ein Array von logischen Gattern, bestimmt, ob ein Befehl ausgeführt werden kann oder nicht, und ein Festprioritätsselektor im Steuerwerk 16 leitet dann den ausführbaren Thread mit der höchsten Priorität in die Datenwegsteuerungspipeline (in Fig. 4 gezeigt) ein, um die Ausführung dieses Programmthreads zu starten. Das Task des Threads könnte "Videodaten überprüfen", "gespeicherte Audiodaten verarbeiten" usw. sein.
  • Normalerweise fordert ein Befehl an, dass der nächste Befehl seines Threads aus dem Speicher gelesen wird, wenn er ausgeführt wird. Der Befehl wird aus dem Speicher gelesen (Programmzähler zeigt auf ihn), der einen Befehls- Operationscode und Operanden enthält. Das Operationscodefeld des Befehls wird benutzt, um in den Mikrobefehls-ROM zu indizieren, um den nächsten Befehl abzurufen, und der resultierende Mikrobefehl wird zusammen mit den Befehlsoperandenfeldern in den Befehlspuffer des Threads eingespeichert.
  • Ressourcenprüfung und Priorität werden in Fig. 6 ausführlicher dargestellt. Für die drei illustrierten Threads werden globale Statusinformationen aus den notwendigen Datenbanken, den notwendigen Adressenbanken, Leitsteuerdaten vom Steuerwerk 16 und Ausführungsabhängigkeitsdaten von anderen Prozessen empfangen, von denen ein bestimmter Thread abhängt. Alle diese Informationen werden an einen Ressourcenprüfer 80 gesendet, der sie mit Daten aus E/-Ports, dem Status der verschiedenen Pipelinedatenbanken und dem Status der verschiedenen Datenverarbeitungseinheiten kombiniert. Das geschieht für jeden möglichen Thread. Wenn dieser Datenverarbeitungsthread ausgeführt werden kann, dann wird an einem Prioritätsselektor 82 eine Ausgabe erzeugt. Dieser hat Informationen über die Priorität jedes der unterstützten Datenverarbeitungs-Threads und kann als Folge dessen den Thread mit der höchsten Priorität für die Ausführung auswählen. Beispielsweise würde einer Echtzeitdateneingabe, wie z. B. einem Video, eine hohe Priorität verliehen, und diese würde einer Hintergrund- Verarbeitungsoperation gegenüber Vorrang erhalten.
  • Da der nächste Befehl für einen Thread bereits in einem Befehlspuffer bereitgestellt ist, ist dieser Befehl immer für die Ressourcenprüfung und die Prioritätsauswahl verfügbar. Somit geht durch das Prüfen des Status jedes Taktzyklus keine Ausführungszeit verloren.
  • Die in Fig. 4 gezeigte Datenwegsteuerungspipeline funktioniert, indem Felder eines Mikrobefehlswortes auf verschiedenen Tiefen in eine Pipeline gegeben werden dürfen. Das erlaubt es einem Mikrobefehl, den Datenfluss durch die Pipeline über eine Anzahl von Takten hinweg zu steuern und somit die Pipeline-Datenverarbeitung zu steuern.
  • Die Schaltungsanordnung von Fig. 4 umfasst einen 1-zu-4- Decoder 90, der an seinem Enable-Eingang den Ausgang eines AND-Gatters 92 erhält. Die Eingänge hierzu sind ein Steuerbit vom Mikrocodebefehl und ein Bedingungscode, der für die bedingte Ausführung von Befehlen verwendet wird. Ein Paar Zeitsteuerungsbits vom Mikrocodebefehl sind die Ausgangsauswahleingänge zum Decoder 90. Die vier Ausgänge des Decoders 90 bilden Eingänge über ODER-Gatter 94 zu vier Verzögerungsgliedern 96, die als ein Schieberegister angeordnet sind. Die Ausgänge vom Decoder 90 sind in Gattern 94 mit den Ausgängen vom vorhergehenden Flipflop 96 im Register (Ausgang vom ersten Fliflop 96) ODER-verknüpft. Bits werden von einem Taktgeber 98 entlang dem Register getaktet, bis sie als ein Ausgangssteuerbit auftauchen, das die Ausführung des Mikrocodebefehls beginnt.
  • So wird ein Steuerbit in die richtige Position in seiner Scheduling-Pipeline eingefügt, so dass es zum erforderlichen Taktzyklus an der Zielbank ankommt. Begrifflich besteht eine solche Befehlsbit-Pipeline für alle Mikrocode-Steuerbits, um aber den Umfang der zum Implementieren der Steuerpipeline benötigten Logik zu begrenzen, gibt es Begrenzungen an den Taktzyklen, auf die einige Felder des Mikrocodes platziert werden können.
  • Die bedingte Ausführung wird durch Spezifizieren einer bedingten Operation und Erzeugen des Zustandsbits erreicht. Es werden zwei Arten von bedingter Operation unterstützt. Die erste ist, den Schreib-Enable-Impuls zu einer Bank mit dem Bedingungscode von der gleichen oder einer anderen Bank zu qualifizieren. Die zweite ist, zu spezifizieren, dass ein Mikrobefehlswort erneut ausgeführt würde (anstatt der nächsten Befehl aus dem Programmzähler), wenn ein bestimmter Bedingungscode echt ist. Um die Anzahl von Möglichkeiten für Bedingungscodes zu begrenzen, können in diesen bedingten Operationen nur Datenbank-Bedingungscodes verwendet werden.
  • Beispielhaftes Mikrobefehlsformat
  • Folgendes gibt ein Beispiel eines Mikrobefehlsformats für diese Architektur und erläutert, wie es zum Erzielen von Multithreading auf einer zyklusweisen Basis verwendet wird.
  • In Fig. 6 wird eine Anzahl von Thread-Mikrobefehlen gezeigt. Jeder enthält Folgendes:
  • Steuerfelder für jede Bank, z. B. Registerauswahlbits und ALU-Steuerbits;
  • Befehlszeitsteuerungsbits für jede Bank - diese werden unten erklärt;
  • Leitsteuerbits, die das Leiten von Daten zwischen Banken steuern;
  • Kernsteuerbits, wie z. B. ob der Befehl bedingt wiederholt werden sollte und ob er Sofortdatenoperanden enthält.
  • Zur Durchführung dürfen Befehle über eine Anzahl von Taktzyklen ausgeführt werden. Der Zeitpunkt, an dem Teile des Befehls ausgeführt werden, wird von Verzögerungsbits innerhalb des Banksteuerfeldes gesetzt, welche die Position bestimmen, in der die Steuerbits in der Steuerwerk-Befehlspipeline platziert werden (Fig. 6).
  • Weil die Steuerbits in der Befehlspipeline platziert wurden, die den zukünftigen Zustand des Multimediasteuerungskerns repräsentiert, kann die Steuerwerklogik sicherstellen, dass die Befehlsverzögerung bei der Ressourcenprüfung berücksichtigt wird und dass ein Befehl an keinem der Taktzyklen, in denen er ausgeführt wird, Konflikte verursacht.
  • Ausführungsabhängigkeiten
  • Um die Komplexität des Hardware-Designs niedrig zu halten, dürfen Befehle über eine Anzahl von Taktzyklen hinweg ausgeführt werden. Die Zeit, zu der Teile des Befehls ausgeführt werden, wird von Verzögerungsbits innerhalb des Banksteuerfeldes bestimmt.
  • Um sicherzustellen, dass diese Befehlsverzögerung für jeden Takt berücksichtigt wird, wenn die Ressourcenprüfung durchgeführt wird, und dass die Operation beim korrekten Zyklus erfolgt, wird der den Verzögerungsbits entsprechende Operationscode in einen Satz von Latches eingespeist, die bei jedem Zyklus getaktet werden. Die Ausgänge dieser Latches repräsentieren den zukünftigen Zustand der Datenpipeline und werden in die Ressourcenprüfungslogik eingespeist, um sicherzustellen, dass ein Befehl an keinem der Taktzyklen, in denen er ausgeführt wird, Konflikte verursacht.
  • Banken-Cache
  • Der Mehrbanken-Cache besteht aus einer Anzahl von Cache- Banken und hat Schnittstellen zu Verarbeitungseinheiten und Speicher, wie in Fig. 7 gezeigt. Um ein beliebig skalierbares Gerät zu unterstützen, wird eine Mehrzahl von Cache-Banken benutzt. Die Verwendung jeder Bank wird von einem Cache- Zuordner 86 gesteuert, der mit einem Cache-Benutzer wie einer Leseeinheit oder einer Schreibeinheit assoziiert ist. Diese können programmierbar gesteuert werden, um die Cache-Banken in verschiedenen Konfigurationen zu verwenden. Beispielsweise kann eine Bank für Kommandodaten, eine weitere für 3D-Textur- Maps und eine dritte für 2D-Parameter verwendet werden. Die Fähigkeit zum Konfigurieren der Cache-Banken ist für das Erreichen einer guten Speicherleistung wichtig.
  • Jeder Port, wie eine Leseeinheit 88 oder eine Schreibeinheit 90, die Zugang zum Cache benötigt, ist mit einem Zuordnermodul 86 verbunden. Diese Module untersuchen die Speicheranfrage, die vom Port gemacht wird, und leiten die Anfrage an die zutreffende Cache-Bank. Die vom Port gesendete Adresse wird mit einem Basisbereichsregisterpaar im Schreibzuordner verglichen, um zu bestimmen, ob die Adresse in einen bestimmten Bereich fällt oder nicht. Bei einer Übereinstimmung wird die Abfrage dann zur Cache-Bank weitergeleitet. Gibt es keine Übereinstimmung, wird eine Vorgabe-Cache-Bank benutzt. Das umfasst einfach das Durchleiten der Anfrage zum Speichersubsystem.
  • Es kann mehr als ein Satz Basis- und Bereichsregister verwendet werden, je nach den Speichererfordernissen des am Port angeschlossenen Moduls.
  • Nicht alle bereitgestellten Cache-Banken müssen von jedem bestimmten Zuteiler aus zugänglich sein. Einige Ports benötigen mehr Flexibilität als andere. Diese Tatsache ermöglicht die leichte Skalierung (Vergrößerung) der Anzahl von Cache-Banken, während die Zunahme von zwischen Zuteilern und Cache-Banken erforderlichen Verbindungen eingeschränkt wird. Ein Satz Cache-Speicher könnte also zum Abwickeln von Videoeingabeanfragen und Audioeingaben und -ausgaben alloziert werden, während andere hauptsächlich für Datenabrufe aus dem Hauptspeicher alloziert werden könnten.
  • Jede Cache-Bank ist über einen Zuteiler 94 mit Lese- und Schreibzuordnern verbunden. Dieser erhält Anfragen für Zugang von allen Zuordnern und kann dann bestimmen, welcher Zuordner zu dieser bestimmten Cache-Bank Zugang erhalten soll. Erreicht wird das dadurch, dass jedem Port eine Priorität zugeteilt und veranlasst wird, dass der Zuteiler einfach die ausstehende Anfrage der höchsten Priorität verarbeitet.
  • Das System kann auf andere Arten von Eingaben wie MPEG und Videokonferenzen erweitert werden.

Claims (27)

1. Datenverarbeitungsmanagementsystem zum Ausführen unabhängiger Anweisungs-Threads, das Folgendes umfasst:
eine Mehrzahl von Dateneingaben (4),
eine Mehrzahl von Datenausgaben (4),
eine Mehrzahl von Datenverarbeitungs-(8)-einrichtungen, die jeweils Datenverarbeitungsvorgänge durchführen können, welche wenigstens einen der Anweisungs-Threads bilden,
einen Datenspeicher (12) und
eine Steuereinrichtung (2),
wobei die Steuereinrichtung (2) Folgendes beinhaltet:
Mittel zum Leiten von Daten zwischen einer ausgewählten Dateneingabe, einer ausgewählten Datenausgabe, einer ausgewählten Datenverarbeitungseinrichtung und dem Datenspeicher in einem oder mehr auswählbaren Leitvorgängen,
Mittel zum Veranlassen, dass die ausgewählte Datenverarbeitungseinrichtung, gestützt auf einen ausgewählten Anweisungs-Thread, einen von einer Anzahl vorbestimmter Datenverarbeitungsvorgänge beginnt,
Mittel zum wiederholten Bestimmen, welche Leitvorgänge und welche Datenverarbeitungsvorgänge durchgeführt werden können,
Mittel zum Beginnen der Ausführung von wenigstens einem der so bestimmten Leit- oder Datenverarbeitungsvorgänge, die durchgeführt werden können.
2. Datenverarbeitungsmanagementsystem nach Anspruch 1 mit Mitteln, um jedem Leit- und Datenverarbeitungsvorgang, der durchgeführt werden kann, eine Priorität zuzuordnen, und einer Einrichtung zum Bestimmen, welchem der Leitvorgänge und Datenverarbeitungsvorgänge, die durchgeführt werden können, die höchste Priorität zugeordnet wurde, wobei das Mittel zum Beginnen der Ausführung zum Beginnen mit dem Ausführen des Vorgangs mit der höchsten zugeordneten Priorität geregelt ist.
3. Datenverarbeitungsmanagementsystem nach Anspruch 1 oder 2, bei dem die wenigstens eine Dateneingabe eine Echtzeiteingabe ist und dem Vorgang des Empfangens von Daten an dieser Eingabe die höchste Priorität zugeordnet wurde.
4. Datenverarbeitungsmanagementsystem nach Anspruch 3, bei dem die Echtzeitdateneingabe eine Videodateneingabe ist.
5. Ein Datenverarbeitungsmanagementsystem nach Anspruch 3, bei dem die Echtzeitdateneingabe eine Audioeingabe ist.
6. Datenverarbeitungsmanagementsystem nach einem der Ansprüche 2 bis 5, bei dem die Einrichtung zum wiederholten Bestimmen, welche Leitvorgänge und welche Datenverarbeitungsvorgänge durchgeführt werden können, diese Bestimmung mit jedem Taktzyklus trifft.
7. Datenverarbeitungsmanagementsystem nach einem der Ansprüche 2 bis 6, bei dem die Einrichtung zum Bestimmen, welchem der so bestimmten Vorgänge die höchste Priorität zugeordnet wurde, diese Bestimmung mit jedem Taktzyklus einer mit der Steuereinrichtung assoziierten Takteinrichtung durchführt.
8. Datenverarbeitungsmanagementsystem nach Anspruch 6 oder Anspruch 7, bei dem der Beginn des so bestimmten Vorgangs mit der höchsten zugeordneten Priorität an einem nachfolgenden Taktzyklus stattfindet.
9. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Mittel zum Bestimmen, welche Leit- und Datenverarbeitungsvorgänge durchgeführt werden können, diese Bestimmung anhand von über einen Statusbus erhaltenen und durch interne und/oder externe Ressourcen erzeugten Ressourcenstatusbits treffen.
10. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Datenverarbeitungseinrichtung einen Speicher mikrocodierter Anweisungen hat, die sich auf einen von der Verarbeitungseinrichtung durchzuführenden Verarbeitungsvorgang beziehen.
11. Datenverarbeitungsmanagementsystem nach Anspruch 10, bei dem die Steuereinrichtung die Ausführung des Verarbeitungsvorgangs durch Bereitstellen eines Adressenoffsets in den Mikrocodeanweisungsspeicher der Datenverarbeitungseinrichtung beginnt.
12. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem der Datenspeicher einen Cache-Speicher aufweist.
13. Datenverarbeitungsmanagementsystem nach Anspruch 12, bei dem der Cache-Speicher eine Mehrzahl von Cache-Speicherbanken umfasst.
14. Datenverarbeitungsmanagementsystem nach Anspruch 1, bei dem jeder Teil des Systems, der Zugriff auf den Cache-Speicher hat, mit einer Cache-Speicher-Allozierungseinrichtung assoziiert ist, die programmierbar ist, um Zugriff auf verschiedene Cache-Speicherbanken zuzulassen.
15. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Steuereinrichtung einen Satz Datenbanken aufweist, und zum Durchführen von Vorgängen an Daten innerhalb der Steuereinrichtung.
16. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Steuereinrichtung einen Satz Adressenbanken aufweist, eine für jeden der vom System durchzuführenden Datenverarbeitungsvorgänge.
17. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Steuereinrichtung eine Programmzählerbank zum Speichern der aktuellen Programmadresse für jeden Datenverarbeitungsvorgang jedes Anweisungs-Threads aufweist.
18. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Steuereinrichtung einen Satz Eingabe-/Ausgabebanken zum Verbinden mit der Mehrzahl von Eingabe-/Ausgabeeinrichtungen aufweist.
19. Datenverarbeitungsmanagementsystem nach einem der vorangehenden Ansprüche, bei dem die Steuereinrichtungen Lese- /Schreibeinheiten zum Verbinden mit dem Speicher aufweisen.
20. Datenverarbeitungsmanagementsystem nach Anspruch 13, bei dem jede Datenbank eine arithmetisch-logische Einheit (ALU) und eine nur mit dieser ALU assoziierte Registerdatei aufweist.
21. Datenverarbeitungsmanagementsystem nach einem der Ansprüche 15 bis 20, bei dem die Datenbanken, die Adressenbanken, die Programmzählerbanken, die Eingabe- /Ausgabebanken und die Lese-/Schreibbanken alle mit einem gemeinsamen Statusbus, einer gemeinsamen Datenverbindung und einem gemeinsamen Steuerbus verbunden sind.
22. Verfahren zum Ausführen unabhängiger Anweisungs-Threads, bei dem zu verarbeitende Daten an jedem Anweisungs-Thread von einer von einer Mehrzahl von Dateneingaben bereitgestellt werden und Daten, die als Folge der Verarbeitung des Anweisungs-Threads produziert werden, zu einer Mehrzahl von Datenausgaben übertragen werden, wobei das Verfahren die folgenden Schritte aufweist:
Leiten von Daten zwischen einer ausgewählten Dateneingabe, einer ausgewählten Datenausgabe, einer ausgewählten Datenverarbeitungseinrichtung und einem Datenspeicher in einem oder mehr auswählbaren Leitvorgängen,
Veranlassen, dass eine Mehrzahl von Datenverarbeitungseinrichtungen, gestützt auf einen ausgewählten Anweisungs-Thread, einen von einer Anzahl von vorbestimmten Datenverarbeitungsvorgängen beginnt,
wiederholtes Bestimmen, welche Leitvorgänge und welche Datenverarbeitungsvorgänge gebildet werden können, und
Beginnen der Ausführung von wenigstens einem der so bestimmten Leit- oder Datenverarbeitungsvorgänge, die durchgeführt werden können.
23. Verfahren nach Anspruch 22, das den Schritt des Zuordnens einer Priorität zu jedem Leit- and Datenverarbeitungsvorgang, der durchgeführt werden kann, und des Bestimmens, welchem der Leitvorgänge und der Datenverarbeitungsvorgänge, die durchgeführt werden können, die höchste Priorität zugeordnet wurde, aufweist und bei dem der Schritt des Beginnens der Ausführung zum Beginnen der Ausführung des Vorgangs mit der höchsten zugeordneten Priorität geregelt ist.
24. Verfahren nach Anspruch 22 oder 23, bei dem der Schritt des Bestimmens, welche Leitvorgänge und welche Datenverarbeitungsvorgänge durchgeführt werden können, diese Bestimmung mit jedem Taktzyklus trifft.
25. Verfahren nach Anspruch 23 oder Anspruch 24, bei dem der Schritt des Bestimmens, welchem Datenverarbeitungsvorgang oder Leitvorgang die höchste Priorität zugeordnet wurde, diese Bestimmung an einem nachfolgenden Taktzyklus trifft.
26. Verfahren nach Anspruch 24 oder Anspruch 25, bei dem der Schritt des Beginnens des Vorgangs mit der höchsten zugeordneten Priorität an einem nachfolgenden Taktzyklus stattfindet.
27. Verfahren nach einem der Ansprüche 22 bis 26, bei dem der Schritt des Bestimmens, welche Leitvorgänge und Datenverarbeitungsvorgänge durchgeführt werden können, anhand von über einen Statusbus erhaltenen und durch interne und/oder externe Ressourcen erzeugten Ressourcenstatusbits erfolgt.
DE69709078T 1996-04-04 1997-04-04 Verwaltungssystem zur datenverarbeitung Expired - Lifetime DE69709078T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9607153A GB2311882B (en) 1996-04-04 1996-04-04 A data processing management system
PCT/GB1997/000972 WO1997038372A1 (en) 1996-04-04 1997-04-04 A data processing management system

Publications (2)

Publication Number Publication Date
DE69709078D1 DE69709078D1 (de) 2002-01-24
DE69709078T2 true DE69709078T2 (de) 2002-10-31

Family

ID=10791630

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69709078T Expired - Lifetime DE69709078T2 (de) 1996-04-04 1997-04-04 Verwaltungssystem zur datenverarbeitung

Country Status (7)

Country Link
US (1) US5968167A (de)
EP (1) EP0891588B1 (de)
JP (1) JP3559046B2 (de)
DE (1) DE69709078T2 (de)
ES (1) ES2171919T3 (de)
GB (1) GB2311882B (de)
WO (1) WO1997038372A1 (de)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US9196017B2 (en) 2013-11-15 2015-11-24 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing noise from an image
US9270872B2 (en) 2013-11-26 2016-02-23 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing shading effect from image
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US9842271B2 (en) 2013-05-23 2017-12-12 Linear Algebra Technologies Limited Corner detection
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
DE19817024A1 (de) * 1998-04-17 1999-10-21 Alcatel Sa Integrierte Schaltung
FI107365B (fi) * 1998-04-27 2001-07-13 Nokia Mobile Phones Ltd Menetelmä ja järjestelmä muuttuvan datankäsittelyn ilmaisemiseksi tiedonsiirtoyhteydessä
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6505228B1 (en) 1998-07-22 2003-01-07 Cisco Technology, Inc. Dynamic determination of execution sequence
US6041400A (en) * 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6300962B1 (en) * 1998-12-23 2001-10-09 Scientific-Atlanta, Inc. Method and apparatus for providing reliable graphic memory operations in a set-top box environment
US6209078B1 (en) * 1999-03-25 2001-03-27 Lsi Logic Corporation Accelerated multimedia processor
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
WO2000079395A1 (en) * 1999-06-21 2000-12-28 Bops Incorporated Methods and apparatus for establishing port priority functions in a vliw processor
US6542921B1 (en) * 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6606704B1 (en) 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6678277B1 (en) * 1999-11-09 2004-01-13 3Com Corporation Efficient means to provide back pressure without head of line blocking in a virtual output queued forwarding system
US6898617B2 (en) * 1999-11-18 2005-05-24 International Business Machines Corporation Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools
US7518993B1 (en) * 1999-11-19 2009-04-14 The United States Of America As Represented By The Secretary Of The Navy Prioritizing resource utilization in multi-thread computing system
US7793076B1 (en) * 1999-12-17 2010-09-07 Intel Corporation Digital signals processor having a plurality of independent dedicated processors
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US7093109B1 (en) 2000-04-04 2006-08-15 International Business Machines Corporation Network processor which makes thread execution control decisions based on latency event lengths
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US20060036756A1 (en) * 2000-04-28 2006-02-16 Thomas Driemeyer Scalable, multi-user server and method for rendering images from interactively customizable scene information
GB2367913A (en) * 2000-09-16 2002-04-17 Motorola Inc Processor resource scheduler
AU2001296604A1 (en) * 2000-10-04 2002-04-15 Pyxsys Corporation Simd system and method
US6684262B1 (en) 2000-10-25 2004-01-27 International Business Machines Corporation Method and system for controlling peripheral device interface behavior using thread registration
US7225320B2 (en) * 2000-12-28 2007-05-29 Koninklijke Philips Electronics N.V. Control architecture for a high-throughput multi-processor channel decoding system
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US7320065B2 (en) 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US7548586B1 (en) 2002-02-04 2009-06-16 Mimar Tibet Audio and video processing apparatus
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
ITTO20020570A1 (it) * 2002-07-01 2004-01-02 St Microelectronics Srl Procedimento e dispositivo per elaborare segnali video per la visualizzazione su un display e relativo prodotto informatico.
DE60320429D1 (de) * 2002-09-13 2008-05-29 Metcon Medicin Ab Zusammensetzung und verfahren zur verwendung bei darmreinigungsverfahren
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US20040225840A1 (en) * 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
US20050050310A1 (en) 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7003640B2 (en) * 2003-07-28 2006-02-21 Hewlett-Packard Development Company, L.P. Power-aware adaptation in an information server
US8463996B2 (en) * 2003-08-19 2013-06-11 Oracle America, Inc. Multi-core multi-thread processor crossbar architecture
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US7472390B2 (en) * 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
AU2003295276A1 (en) * 2003-12-24 2005-07-14 Telefonaktiebolaget Lm Ericsson (Publ) System with centralized resource manager
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US9047094B2 (en) 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
US8484441B2 (en) * 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
GB2415060B (en) * 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US20050268019A1 (en) * 2004-06-01 2005-12-01 Che-Hui Chang Chien [interface and system for transmitting real-time data ]
EP1605354A1 (de) * 2004-06-10 2005-12-14 Deutsche Thomson-Brandt Gmbh Methode und Apparat zum Verbessern der Synchronisierung einer Verarbeitungseinheit für Multimedia-streams in einer multi-threaded Umgebung
GB0415851D0 (en) 2004-07-15 2004-08-18 Imagination Tech Ltd Microprocessor output ports and control of instructions provided therefrom
US7552316B2 (en) * 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US7418576B1 (en) * 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7644221B1 (en) 2005-04-11 2010-01-05 Sun Microsystems, Inc. System interface unit
GB0519597D0 (en) * 2005-09-26 2005-11-02 Imagination Tech Ltd Scalable multi-threaded media processing architecture
US20070101332A1 (en) * 2005-10-28 2007-05-03 International Business Machines Corporation Method and apparatus for resource-based thread allocation in a multiprocessor computer system
US7656409B2 (en) * 2005-12-23 2010-02-02 Intel Corporation Graphics processing on a processor core
GB2435116B (en) 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
JP4878487B2 (ja) * 2006-03-30 2012-02-15 キヤノン株式会社 情報配信装置、情報配信システム、情報処理方法、およびプログラム
GB0613289D0 (en) * 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
JP5223220B2 (ja) * 2007-03-30 2013-06-26 日本電気株式会社 ベクトル処理装置及びベクトル処理システム
US8219788B1 (en) * 2007-07-23 2012-07-10 Oracle America, Inc. Virtual core management
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
GB2457265B (en) 2008-02-07 2010-06-09 Imagination Tech Ltd Prioritising of instruction fetching in microprocessor systems
GB2458487B (en) * 2008-03-19 2011-01-19 Imagination Tech Ltd Pipeline processors
US8520571B2 (en) 2008-03-26 2013-08-27 Qualcomm Incorporated Reconfigurable wireless modem sub-circuits to implement multiple air interface standards
US8458380B2 (en) * 2008-03-26 2013-06-04 Qualcomm Incorporated Off-line task list architecture utilizing tightly coupled memory system
US8787433B2 (en) * 2008-03-28 2014-07-22 Qualcomm Incorporated Wall clock timer and system for generic modem
ES2341414B1 (es) * 2008-06-10 2011-05-23 Francisco Vega Quevedo Medios y procedimiento de control de explotaciones agricolas agrupadas.
US9026424B1 (en) * 2008-10-27 2015-05-05 Juniper Networks, Inc. Emulation of multiple instruction sets
GB2466984B (en) 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
JP4878054B2 (ja) * 2009-03-03 2012-02-15 日本電信電話株式会社 映像解析装置,映像解析方法および映像解析プログラム
GB2469822B (en) 2009-04-28 2011-04-20 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US9830164B2 (en) * 2013-01-29 2017-11-28 Advanced Micro Devices, Inc. Hardware and software solutions to divergent branches in a parallel pipeline
US9639371B2 (en) * 2013-01-29 2017-05-02 Advanced Micro Devices, Inc. Solution to divergent branches in a SIMD core using hardware pointers
US10445240B2 (en) * 2014-08-01 2019-10-15 Analog Devices Global Unlimited Company Bus-based cache architecture
US10122642B2 (en) 2016-09-29 2018-11-06 Intel IP Corporation Managing a data stream in a multicore system
US10614406B2 (en) 2018-06-18 2020-04-07 Bank Of America Corporation Core process framework for integrating disparate applications
US10691490B2 (en) 2018-07-06 2020-06-23 Apple Inc. System for scheduling threads for execution

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2457521B1 (fr) * 1979-05-23 1985-12-27 Thomson Csf Systeme multiprocesseur de traitement de signal
US4985831A (en) * 1988-10-31 1991-01-15 Evans & Sutherland Computer Corp. Multiprocessor task scheduling system
CA2016348C (en) * 1989-05-10 2002-02-05 Kenichi Asano Multiprocessor type time varying image encoding system and image processor
US5487153A (en) * 1991-08-30 1996-01-23 Adaptive Solutions, Inc. Neural network sequencer and interface apparatus
JPH05173989A (ja) * 1991-12-24 1993-07-13 Kawasaki Steel Corp 計算機及びマルチプロセッサ計算装置
ATE188559T1 (de) * 1992-12-23 2000-01-15 Centre Electron Horloger Multi-tasking-steuerungsgerät mit geringem energieverbrauch
US5511002A (en) * 1993-09-13 1996-04-23 Taligent, Inc. Multimedia player component object system
JP3501485B2 (ja) * 1993-12-24 2004-03-02 キヤノン株式会社 マルチメディア機器の管理システムおよび管理方法
US5689674A (en) * 1995-10-31 1997-11-18 Intel Corporation Method and apparatus for binding instructions to dispatch ports of a reservation station
US5748921A (en) * 1995-12-11 1998-05-05 Advanced Micro Devices, Inc. Computer system including a plurality of multimedia devices each having a high-speed memory data channel for accessing system memory
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842271B2 (en) 2013-05-23 2017-12-12 Linear Algebra Technologies Limited Corner detection
US11605212B2 (en) 2013-05-23 2023-03-14 Movidius Limited Corner detection
US11062165B2 (en) 2013-05-23 2021-07-13 Movidius Limited Corner detection
US10521238B2 (en) 2013-08-08 2019-12-31 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US11567780B2 (en) 2013-08-08 2023-01-31 Movidius Limited Apparatus, systems, and methods for providing computational imaging pipeline
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US9934043B2 (en) 2013-08-08 2018-04-03 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing computational imaging pipeline
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US10360040B2 (en) 2013-08-08 2019-07-23 Movidius, LTD. Apparatus, systems, and methods for providing computational imaging pipeline
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US10572252B2 (en) 2013-08-08 2020-02-25 Movidius Limited Variable-length instruction buffer management
US11579872B2 (en) 2013-08-08 2023-02-14 Movidius Limited Variable-length instruction buffer management
US11042382B2 (en) 2013-08-08 2021-06-22 Movidius Limited Apparatus, systems, and methods for providing computational imaging pipeline
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US11188343B2 (en) 2013-08-08 2021-11-30 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9196017B2 (en) 2013-11-15 2015-11-24 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing noise from an image
US9270872B2 (en) 2013-11-26 2016-02-23 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing shading effect from image
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
US11682106B2 (en) 2017-12-29 2023-06-20 Intel Corporation Foveated image rendering for head-mounted display devices

Also Published As

Publication number Publication date
GB9607153D0 (en) 1996-06-12
GB2311882A (en) 1997-10-08
ES2171919T3 (es) 2002-09-16
JP3559046B2 (ja) 2004-08-25
DE69709078D1 (de) 2002-01-24
JP2000509528A (ja) 2000-07-25
US5968167A (en) 1999-10-19
WO1997038372A1 (en) 1997-10-16
EP0891588B1 (de) 2001-12-12
EP0891588A1 (de) 1999-01-20
GB2311882B (en) 2000-08-09

Similar Documents

Publication Publication Date Title
DE69709078T2 (de) Verwaltungssystem zur datenverarbeitung
DE69625256T2 (de) Mikrorechner
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
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE68928980T2 (de) Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
DE69033568T2 (de) Preisgünstiger Hochleistungsmikroprozessor
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
DE3248215C2 (de)
US6175892B1 (en) Registers and methods for accessing registers for use in a single instruction multiple data system
DE102018006791A1 (de) Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator
DE69131956T2 (de) Verarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher
DE3783072T2 (de) Zusatzprozessorarchitektur.
DE102018126650A1 (de) Einrichtung, verfahren und systeme für datenspeicherkonsistenz in einem konfigurierbaren räumlichen beschleuniger
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE69906809T2 (de) Anordnung und verfahren zur optimierung von chip- integration und -geschwindigkeitsleistung durch registerspeicherverteilung
DE19722365A1 (de) Rekonfigurierbares Rechenbauelement
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
EP0875031A1 (de) Prozessor zur bildverarbeitung
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition