DE102004009610A1 - Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten - Google Patents
Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten Download PDFInfo
- Publication number
- DE102004009610A1 DE102004009610A1 DE102004009610A DE102004009610A DE102004009610A1 DE 102004009610 A1 DE102004009610 A1 DE 102004009610A1 DE 102004009610 A DE102004009610 A DE 102004009610A DE 102004009610 A DE102004009610 A DE 102004009610A DE 102004009610 A1 DE102004009610 A1 DE 102004009610A1
- Authority
- DE
- Germany
- Prior art keywords
- unit
- thread
- standard
- processor
- standard processor
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 84
- 239000000872 buffer Substances 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 9
- 238000011161 development Methods 0.000 description 33
- 230000018109 developmental process Effects 0.000 description 33
- 230000008901 benefit Effects 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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/3891—Concurrent 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
Die Erfindung betrifft einen heterogenen parallelen Multithread-Prozessor (1) mit geteilten Kontexten, welcher mehreren (M) parallel verschaltete Standardprozessorrumpfeinheitstypen (2¶p¶; pepsilon[1, ..., M]) aufweist, wobei jeweils jeder Standardprozessorrumpfeinheitstyp (2¶p¶) mindestens eine oder mehrere (K) parallel verschaltete Standardprozessorrumpfeinheiten (2¶pq¶; qepsilon[1, ..., K]) zur Befehlsausführung von Programmbefehlen verschiedener Threads (T) auweist, wobei für jeden Standardprozessorrumpfeinheitstypen (2¶p¶) N lokale Kontextspeicher (32¶pt¶) vorgesehen sind, die jeweils einen Teil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern. Weiter weist der Multithread-Prozessor (1) mehrere (N) globale Kontextspeicher (3¶t¶; tepsilon[1, ..., N]), welche jeweils einen Teil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern, und eine Thread-Kontrolleinheit (4) auf, durch die jede Standardprozessorrumpfeinheit (2¶pq¶) an jeden globalen Kontextspeicher (3¶t¶) schaltbar ist.
Description
- Die Erfindung betrifft einen heterogenen parallelen Multithread-Prozessor (HPMT) mit geteilten Kontexten, welcher mehrere (M) parallel verschaltete Standardprozessorrumpfeinheitstypen aufweist, wobei jeweils jeder Standardprozessorrumpfeinheitstyp mindestens eine oder mehrere (K) parallel verschaltete Standardprozessorrumpfeinheiten zur Befehlsausführung von Programmbefehlen verschiedener Threads aufweist, wobei für jeden Standardprozessorrumpfeinheitstypen N lokale Kontextspeicher vorgesehen sind, die jeweils einen aktuellen Prozessor-Zustand eines lokalen Threads zwischenspeichern. Der Multithread-Prozessor (HPMT) weist weiter mehrere globale Kontextspeicher, welche jeweils einen aktuellen Prozessor-Zustand eines globalen Threads zwischenspeichern, und eine Thread-Kontrolleinheit auf, durch die jede Standardprozessorrumpfeinheit an jeden globalen Kontextspeicher schaltbar ist.
- Eingebettete Prozessoren und deren Architekturen werden an ihrer Rechenleistung, ihrem Leistungsverbrauch, ihrem Durchsatz, ihren Kosten und ihrer Echtzeitfähigkeit gemessen. Um den Durchsatz und die Prozessorgeschwindigkeit zu erhöhen, kommt das Prinzip des Pipelining zum Einsatz. Die Grundidee des Pipelining basiert darauf, beliebige Instruktionen bzw. Programmbefehle in Bearbeitungsphasen gleicher zeitlicher Dauer zu unterteilen. Eine Pipeline mit verschiedenen Verarbeitungselementen ist dann möglich, wenn die Verarbeitung einer Instruktion selbst in mehrere Phasen mit disjunkten und nacheinander durchführbaren Prozessschritten einteilbar ist. Die ursprünglichen zwei Befehlsausführungsphasen des Von-Neumann-Modells, nämlich Befehlsholung und Befehlsbearbeitung, werden dabei weiter unterteilt, da sich diese Teilung in zwei Phasen für ein Pipelining als zu grob erweist. Die bei RISC-Prozessoren im Wesentlichen angewendete Pipeline- Variante beinhaltet vier Phasen der Befehlsbearbeitung, nämlich Befehl holen (Instruction-Fetch), Befehldekodieren/Operandenholen (Instruction-Decoding/Operand-Fetch), Befehlsausführung (Execution) und Zurückschreiben (Write back).
- Hinsichtlich der Befehlsbearbeitung eines Programmcodes bezeichnet ein Thread T einen Kontrollfaden des Codes bzw. des Quellcodes bzw. Programms, wobei innerhalb eines Threads T Datenabhängigkeiten bestehen und zwischen verschiedenen Threads T schwache Datenabhängigkeiten bestehen (wie in Kapitel 3 in T.Bayerlein, O. Hagenbruch: „Taschenbuch Mikroprozessortechnik", 2. Auflage Fachbuchverlag Leipzig im Karl-Hanser-Verlag München – Wien, ISBN 3-446-21686-3 beschrieben).
- Eine Eigenschaft eines Prozesses ist, dass ein Prozess stets auf einen eigenen Speicherbereich zugreift. Ein Prozess besteht aus mehreren Threads T. Demnach ist ein Thread T ein Programmteil eines Prozesses. Ein Kontext eines Threads ist der Prozessorzustand eines Prozessors, welcher diesen Thread T bzw. Programmbefehle dieses Threads bearbeitet. Demnach ist der Kontext eins Threads definiert als ein temporärer Prozessorzustand während der Bearbeitung des Threads durch diesen Prozessor. Der Kontext wird von der Hardware des Prozessors, nämlich dem Programmzählregister bzw. Programmcounter, dem Registerfile bzw. dem Kontextspeicher und dem dazugehörigen Statusregister gehalten.
- Während der Abarbeitung eines Threads durch einen Prozessor, kann ein Thread T temporär blockiert werden. Eine temporäre Blockierung eines Threads T kann verschiedenen Ursachen haben, beispielsweise durch eine Latenzzeit beim Zugriff auf einen externen Speicher bzw. auf ein internes Register.
- Eine temporäre Blockierung eines Prozessors liegt vor, wenn die Prozessorpipeline keinen weiteren Programmbefehl eines Threads T verarbeiten kann.
- Um das Problem der temporären Blockierung zu lösen, werden bekanntermaßen sogenannte Multithread-Prozessoren bereitgestellt. Ein Multithread-Prozessor ist ein Prozessor, welcher die Abarbeitung mehrerer Kontexte hardware-technisch bereitstellt, indem für die mehreren Kontexte jeweils ein Programmzählregister, eine Registerbank und ein Statusregister vorgesehen sind.
- Gemäß einer Weiterbildung eines Multithread-Prozessors, nach einer zum Anmeldetag von der Anmelderin nichtveröffentlichten Druckschrift, zeigt
1 ein Blockschaltbild eines parallelen Multithread-Prozessors mit geteilten Kontexten. Die dem parallelen Multithread-Prozessor mit geteilten Kontexten zugrunde liegende Idee besteht darin, die N Threads bzw. ihre entsprechenden N Kontextspeicher nicht wie bei bekannten Multithread-Prozessoren in Sätze zu unterteilen, wobei jeder dieser Sätze direkt mit einer zugehörigen Standardprozessorrumpfeinheit direkt verbunden bzw. verdrahtet ist, sondern die Kontextspeicher derart bereitzustellen, dass jede Standardprozessorrumpfeinheit auf jeden Kontextspeicher schaltbar ist. - Dabei werden die Programmbefehle der N Threads bzw. der N Kontextspeicher dynamisch an die M Standardprozessorrumpfeinheiten verteilt. Die N Kontextspeicher und M Standardprozessorrumpfeinheiten werden durch Multiplexer miteinander gekoppelt. Bei der Ausführung des jeweiligen Programmbefehls in jeder Pipelinestufe eines jeden jeweiligen Prozessors bzw. jeder jeweiligen Standardprozessorrumpfeinheit wird der entsprechende Kontext über einen Multiplexer ausgewählt. Jeder Programmbefehl innerhalb der Standardprozessorrumpfeinheit benötigt den entsprechenden Kontext. Für die Auswahl des entsprechenden Kontextes dienen Steuersignale <t,p>, wobei t die Threadnummer bzw. Threadkennziffer und p die Standardprozessorrumpfnummer bzw. Nummer der Standardprozessorrumpfeinheit bezeichnet.
- Der parallele Multithread-Prozessor PMT nach
1 ist mit einem Befehlspeicher BS und einem Datenbus DB gekoppelt. Des Weiteren enthält der Multithread-Prozessor PMT M Standardprozessorrumpfeinheiten SPRE, N Kontextspeicher KS, eine Threadkontrolleinheit TK, M Prozessorkontrolleinheiten PKE, N Befehlszwischenspeicher BZS, NxM Multiplexer NxM MUX und MxN Multiplexer MxN MUX. - Jede Standardprozessorrumpfeinheit SPRE weist eine Befehldecodier/Operandenholeinheit BD/OHE, eine Befehlsausführungseinheit BAE und eine Zurückschreibeeinheit ZSE auf, wobei diese Einheiten zur Bearbeitung von Programmbefehlen nach einem Pipelineverfahren angeordnet sind.
- Die Befehlsholeinheit BHE weist einen MxN Multiplexer MxN MUX, N Datenleitungen DL, N Befehlszwischenspeicher BZS, weitere N Datenleitungen DL und einen NxM Multiplexer NxM MUX auf.
- Für jede Standardprozessorrumpfeinheit SPRE ist eine zugehörige Prozessorkontrolleinheit PKE vorgesehen. Eine Prozessorkontrolleinheit PKE steuert die entsprechende Standardprozessorrumpfeinheit SPRE durch interne Steuersignale. Ein erstes internes Steuersignal intSS' für die Befehldekodier/Operandenholeinheit steuert dabei die Befehldekodier/Operandenholeinheit BD/OHE. Ein zweites internes Steuersignal intSS'' für die Befehlsausführungseinheit steuert die Befehlsausführungseinheit BAE und ein drittes internes Steuersignal intSS''' für die Zurückschreibeeinheit steuert die Zurückschreibeeinheit ZSE.
- Jeder Kontextspeicher KS weist ein Programmzählregister PZR, eine Registerbank RB und ein Statusregister SR auf. Das Programmzählregister PZR speichert einen Programmzähler für einen Thread T zwischen. Über einen NxM Multiplexer NxM MUX werden die Inhalte der N Programmzählregister PZR von N Threads T auf einen M-kanaligen Adressbus AB gelegt.
- Die durch die Dateninhalte der Programmzählregister PZR refferenzierten M Programmbefehle werden über einen M-kanaligen Datenbus DB aus dem Befehlsspeicher BS von der Befehlsholeinheit BHE ausgelesen. Die ausgelesenen Dateninhalte werden über einen MxN Multiplexer MxN MUX zu N Befehlszwischenspeicher BZS übertragen. Es ist für jeden der N Threads T ein zugehöriger Befehlszwischenspeicher BZS vorgesehen. Über einen NxM Multiplexer NxM MUX werden aus den N Befehlszwischenspeichern BZS M Programmbefehle auf M Datenleitungen DL gelegt. Die M Programmfehle auf den Datenleitungen DL werden auf die M Standardprozessorrumpfeinheiten SPRE verteilt.
- Die Befehldekodier/Operandenholeinheit BD/OHE-i der Standardprozessorrumpfeinheit SPRE-i dekodiert beispielsweise einen Programmbefehl des Threads T-j. Der dekodierte Programmbefehl des Threads T-j enthält unter anderem Adressen von Operanden, die für die nachfolgende Befehlsausführung benötigt werden. Die adressierten Dateninhalte der Operanden sind in einem zum Thread T-j dazugehörigen Kontextspeicher KS-j gespeichert, genauer in der Registerbank RB-j des dazugehörigen Kontextspeichers KS-j. Über einen NxM Multiplexer NxM MUX werden die Dateninhalte der Operanden aus der Registerbank RB-j des Kontextspeichers KS-j zu der Befehldekodier/Operandenholeinheit BD/OHE-i der Standardprozessorrumpfeinheit SPRE-i übertragen, wobei der NxM Multiplexer NxM MUX von der Thread-Kontrolleinheit TK mittels des Multiplexersteuersignals <t,p>[e] gesteuert wird. Die Multiplexer werden über die Multiplexersteuersignale <t,p> derart gesteuert, sodass der entsprechenden Kontextspeicher KS-j an die entsprechende Pipelinestufe der entsprechenden Standardprozessorrumpfeinheit SPRE-i geschaltet wird.
- Die Befehlsausführungseinheit BAE-i der Standardprozessorrumpfeinheit SPRE-i führt die im Programmbefehl des Threads T-j enthaltene arithmetische-logische Operation mit den aus der Registerbank RB-j geholten Operanden aus.
- Nachdem die arithmetisch-logische Operation mit den geholten Operanden durchgeführt wurde, wird das Ergebnis der Operation bzw. Zusatzzeichen bzw. Flags von der Zurückschreibeeinheit ZSE-i auf eine Datenleitung DL gelegt. Dieselben Dateninhalte werden potenziell im Falle eines Speicherbefehls zusätzlich auf eine weitere Datenleitung DL gelegt. Die M weiteren Datenleitungen DL sind für die Kopplung des Multithread-Prozessors PMT mit dem Datenbus DB vorgesehen. Die Dateninhalte der M Ergebnisse der M Standardprozessorrumpfeinheit SPRE werden über den Datenbus DB an externe Speicher übertragen.
- Über einem MxN Multiplexer MxN MUX wird das Ergebnis der Operation bzw. Zusatzzeichen bzw. Flags von der ersten Datenleitung DL genommen und das Ergebnis der arithmetisch-logischen Operation in die Registerbank RB-j des Kontextspeichers KS-j und Zusatzzeichen in das Statusregister SR-j des Kontextspeichers KS-j übertragen. Die Dateninhalte der N Statusregister SR werden mittels eines NxM Multiplexers NxM MUX an die M Prozessorkontrolleinheiten PKE übertragen. Die Prozessorkontrolleinheit PKE-i berechnet aus den Dateninhalten der Statusregister SR interne Steuersignale, nämlich das interne Steuersignal für die Befehldekodier/Operandenholeinheit intSS', das interne Steuersignal für die Befehlsausführungseinheit intSS'' und das interne Steuersignal für die Zurückschreibeeinheit intSS'''.
- Die Thread-Kontrolleinheit TK steuert über die Multiplexersteuersignale <t,p>[a]-t,p>[f] die NxM Multiplexer NxM MUX und die MxN Multtplexer MxN MUX. Das Multiplexersteuersignal <t,p> gibt an, welcher Thread T-j durch welche Standardprozessorrumpfeinheit SPRE-i bearbeitet wird.
- Ein NxM Multiplexer NxM MUX hat die Funktion, die Daten eines N-kanaligen Datenbusses auf einen M-kanaligen Datenbus zu legen.
- Ein MxN Multiplexer MxN MUX hat die Funktion, die Daten eines M-kanaligen Datenbusses auf einen N-kanaligen Datenbus zu legen.
- Die M internen Ereignissteuersignale ESS' beinhalten unter anderem Daten über blockierte Threads T, interne Interrupts, Wartezeiten und Exception-Ereignis-Signale, und stellen diese Daten der Thread-Kontrolleinheit TK bereit.
- Externe Ereignissteuersignale ESS'' werden an die Thread-Kontrolleinheit TK von externen Einrichtungen übertragen. Beispiele hierfür sind externe Interrupts, welche von externen Einrichtungen generiert werden.
- Eine parallele Multithread-Prozessorarchitektur weist Nachteile auf, wenn eine Aufgabe zu bearbeiten ist, die den Einsatz verschiedener Prozessoren bzw. verschiedener Prozessortypen bedarf. Eine solche Aufgabe wird heterogene Aufgabe genannt, da sie aus unterschiedlichen Threads besteht, die vorzugsweise von Prozessoren unterschiedlichen Typs (z. B. General-Purpose Processor, Protokollprozessor, usw.) bearbeitet werden sollten.
- Ein paralleler Multithread-Prozessor ist demnach ungeeignet, um als Multilayer-Network-Prozessor eingesetzt zu werden.
- Auch die Parallelschaltung von mehreren parallelen Multithread-Prozessoren würde oben genanntes Problem nicht lösen, da sich eine Zwischenprozessorkommunikation zwischen den einzelnen parallelen Multithread-Prozessoren nachteilig auf die Auslastung der einzelnen parallelen Multithread-Prozessoren und des Gesamtsystems auswirken würde. Bei parallel geschalteten parallelen Multithread-Prozessoren wäre der gesamte Kontext bzw. alle Kontextspeicher wiederum nicht für jede Standardprozessorrumpfeinheit zugreifbar, was die Blockierwahrscheinlichkeit der parallel geschalteten parallelen Multithread-Prozessoren erhöhen würde.
- Es ist daher Aufgabe der vorliegenden Erfindung, einen heterogenen parallelen Multithread-Prozessor zu schaffen, der eine minimale Blockierwahrscheinlichkeit und einen hohen Durchsatz auch bei heterogenen Aufgaben aufweist.
- Die der vorliegenden Erfindung zugrunde liegende Idee besteht im Wesentlichen darin, einen Multithread-Prozessor bereit zu stellen, der verschiedene Typen von parallel verschalteten einzelnen Prozessoren bzw. verschiedene Standardprozessorrumpfeinheitstypen aufweist, die aber alle auf denselben Kontext bzw. auf dieselben Kontextspeicher zugreifen können. Ein Multithread-Prozessor, der wenigstens zwei verschiedene Standardprozessorrumpfeinheitstypen aufweist, wird als heterogener Multithread-Prozessor bezeichnet. Bezüglich der gestellten Aufgabe bzw. des abzuarbeitenden Threads steuert der Multithread-Prozessor, welcher Prozessortyp bzw. welcher Standardprozessorrumpfeinheitstyp vorzugsweise an den gemeinsamen Kontext bzw. Kontextspeicher geschaltet wird. Gemeinsame Kontextspeicher werden auch als globale Kontextspeicher bezeichnet und zeichnen sich dadurch aus, dass alle verschiedenen Prozessortypen des heterogenen Multithread-Prozessors an diese schaltbar sind. Threads, die von jedem Standardprozessorrumpfeinheitstypen des Multithread-Prozessors abarbeitbar sind, werden als globale Threads bezeichnet. Im Gegensatz dazu werden Kontextspeicher, die nur an einem spezifischen Standardprozessorrumpfeinheitstypen des Multithread-Prozessors schaltbar sind, als lokale Kontextspeicher bezeichnet. Das Vorsehen lokaler Kontextspeicher ist sinnvoll, da spezielle Aufgaben bzw. lokale Threads nur von einem spe zifischen Standardprozessorrumpfeinheitstypen in sinnvoller Weise abarbeitbar sind.
- In der vorliegenden Erfindung wird das oben erörterte Problem insbesondere dadurch gelöst, dass ein heterogener paralleler Multithread-Prozessor mit geteilten Kontexten bereitgestellt wird mit:
- (a) mehreren (M) parallel verschalteten Standardprozessorrumpfeinheitstypen, wobei jeweils jeder Standardprozessorrumpfeinheitstyp mindestens eine oder mehrere parallel verschaltete Standardprozessorrumpfeinheiten zur Befehlsausführung von Programmbefehlen verschiedener Threads aufweist, wobei für jeden Standardprozessorrumpfeinheitstypen N lokale Kontextspeicher vorgesehen sind, die jeweils einen Teil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern;
- (b) mehreren (N) globalen Kontextspeichern, welche jeweils einen Teil eines aktuellen Prozessor-Zustand eines Threads zwischenspeichern;
- (c) und mit einer Thread-Kontrolleinheit, durch die jede Standardprozessorrumpfeinheit an jeden globalen Kontextspeicher schaltbar ist.
- Ein Vorteil der vorliegenden Erfindung ist, dass durch die Bereitstellung verschiedener Standardprozessorrumpfeinheitstypen (z. B. General-Purpose-Processor, Protokollprozessor, etc.), welche auf gemeinsame Kontextspeicher bzw. globale Kontextspeicher zugreifen, auch Aufgaben bzw. Threads abarbeitbar sind, die verschiedene Typen von Standardprozessorrumpfeinheiten vorteilhafterweise bedingen. Ein weiterer Vorteil ist, dass dadurch die Auslastung der globalen Kontextspeicher und der Ressourcen des Multithread-Prozessors erhöht wird. Außerdem wird durch das Zugreifen verschiedener Standardprozessorrumpfeinheitstypen auf einen gemeinsamen Kontext bzw. durch das Schalten an globalen Kontextspeicher die Zwischenkommunikation zwischen den einzelnen Prozessortypen minimiert. Eine minimierte Zwischenkommunikation zwischen den Prozessortypen führt ebenso zu einer besseren Auslastung der Multithread-Prozessorressourcen und zu einer höheren Performance des Multithread-Prozessors. Außerdem wird durch den Einsatz verschiedener Standardprozessorrumpfeinheitstypen die Blockierwahrscheinlichkeit des Gesamtsystems minimiert.
- In den Unteransprüchen finden sich vorteilhafterweise Weiterbildungen und Verbesserungen des heterogenen parallelen Multithread-Prozessors (HPMT) mit geteilten Kontexten.
- Gemäß einer bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit eine Befehldekodier/Operandenholeinheit zur Dekodierung eines Programmbefehls und zum Holen innerhalb des Programmbefehls adressierter Operanden auf.
- Gemäß einer weiteren bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit eine Befehlsausführungseinheit zum Ausführen des dekodierten Programmbefehls auf.
- Gemäß einer weiteren bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit eine Zurückschreibeeinheit zum Zurückschreiben von Operationsergebnissen der ausgeführten Programmbefehle auf.
- Gemäß einer weiteren bevorzugten Weiterbildung ist jede Standardprozessorrumpfeinheit mit einer zugehörigen Prozessorkontrolleinheit gekoppelt.
- Gemäß einer weiteren bevorzugten Weiterbildung weist jeder globale Kontextspeicher ein Programmzählregister zum Zwischenspeichern eines Programmzählers, eine Registerbank zum Zwischenspeichern von Operanden und ein Statusregister zum Zwischenspeichern von Statusflags auf.
- Gemäß einer weiteren bevorzugten Weiterbildung ist die Anzahl (K·M) der Standardprozessorrumpfeinheiten kleiner oder gleich der Anzahl (N) der globalen Kontextspeicher.
- Ein Vorteil dieser bevorzugten Weiterbildung ist, dass hierdurch zu jeder Zeit genügend Programmbefehle von verschiedenen Threads für die (K·M) Standardprozessorrumpfeinheiten zur Verfügung stehen. Hierdurch entstehen keine bzw. minimale Latenzzeiten.
- Gemäß einer weiteren bevorzugten Weiterbildung ist mindestens ein Befehlszwischenspeicher vorgesehen, welcher oder welche in N, adressierbar durch die Thread-Kontrolleinheit, Befehlszwischenspeicher teilbar ist bzw. sind, wobei jeder der N Befehlszwischenspeicher an jede Standardprozessorrumpfeinheit schaltbar ist.
- Ein Vorteil dieser bevorzugten Weiterbildung ist, dass durch die N Befehlszwischenspeicher zu jeder Zeit Programmbefehle der N Threads für die (K·M) Standardprozessorrumpfeinheiten zur Verfügung stehen, sodass die Blockierwahrscheinlichkeit aufgrund verringerter Wartezeiten minimiert wird.
- Gemäß einer weiteren bevorzugten Weiterbildung sind die Befehlszwischenspeicher zum Auslesen von Programmbefehlen durch die Thread-Kontrolleinheit an einen oder mehrere Befehlsspeicher schaltbar, wobei die aus dem Befehlsspeicher ausgelesenen Programmbefehle durch die Programmzähler der Programmzählregister der globalen Kontextspeicher adressiert sind.
- Gemäß einer weiteren bevorzugten Weiterbildung sind gleichzeitig bis zu (K·M) Programmbefehle aus den Befehlszwischenspeichern auslesbar.
- Gemäß einer weiteren bevorzugten Weiterbildung geben die Standardprozessorrumpfeinheiten die verarbeiteten Daten über einen Datenbus an einen Datenspeicher ab.
- Gemäß einer weiteren bevorzugten Weiterbildung bearbeitet jede Standardprozessorrumpfeinheit die ihr von der Thread- Kontrolleinheit zugeschalteten Programmbefehle sequenziell in einem Pipeline-Verfahren.
- Gemäß einer weiteren bevorzugten Weiterbildung bearbeitet jede Standardprozessorrumpfeinheit einen zugeschalteten Programmbefehl, falls dieser kein Datenzugriffsbefehl ist, innerhalb einer vorbestimmten Anzahl von Taktzyklen.
- Ein Vorteil dieser bevorzugten Weiterbildung ist, dass durch die vorbestimmte Anzahl von Taktzyklen zur Bearbeitung eines Programmbefehls die Echtzeitfähigkeit des Gesamtsystems gewährleistet ist.
- Gemäß einer weiteren bevorzugten Weiterbildung entspricht die Anzahl der vorgesehenen Befehlszwischenspeicher der Anzahl (N) der globalen Kontextspeicher, wobei jeder Befehlszwischenspeicher durch eine entsprechende Thread-Kennziffer ausgewählt wird, sodass für jeden Thread bzw. Kontextspeicher ein eigener Befehlszwischenspeicher bereitgestellt ist, wobei der Befehlszwischenspeicher vorzugsweise nach der FIFO-Organisation (First In – First Out) Programmbefehle zwischenspeichert und weiterleitet.
- Dies hat den Vorteil, dass die Programmbefehle eines jeden Threads vor den Standardprozessorrumpfeinheiten geordnet vorliegen. Dadurch wird die Schaltzeit bei einem Threadwechsel einer Standardprozessorrumpfeinheit minimiert.
- Gemäß einer weiteren bevorzugten Weiterbildung empfängt die Thread-Kontrolleinheit eingangsseitig Ereignissteuersignale, zwischenspeichert interne Zustände und erzeugt ausgangsseitig Multiplexersteuersignale.
- Ein Vorteil dieser bevorzugten Weiterbildung ist, dass durch die Adressierung der ausgelesenen Programmbefehle durch die Programmzählregister der globalen Kontextspeicher und deren Steuerung durch die Thread-Kontrolleinheit mittels der Mul tiplexersteuersignale das Füllen des Befehlszwischenspeichers durch die Thread-Kontrolleinheit taktzyklussensitiv gesteuert wird, d. h. die Steuerung erfolgt derart, dass in jedem Taktzyklus jede Pipelinestufe einer jeden Standardprozessorrumpfeinheit mit dem entsprechenden globalen Kontextspeicher angeschlossen ist. Die zentrale Steuerung durch die Thread-Kontrolleinheit ermöglicht ein optimiertes Füllen der Befehlszwischenspeicher und somit eine Minimierung von Blockierwahrscheinlichkeiten.
- Gemäß einer weiteren bevorzugten Weiterbildung umfassen die Ereignissteuersignale interne Ereignissteuersignale und externe Ereignissteuersignale.
- Gemäß einer weiteren bevorzugten Weiterbildung werden die internen Ereignissteuersignale von den Standardprozessorrumpfeinheiten erzeugt.
- Ein Vorteil dieser bevorzugten Weiterbildung ist, dass dadurch die Thread-Kontrolleinheit Daten darüber empfängt, in welchen Betriebsmodi sich die einzelnen Standardprozessorrumpfeinheiten befinden, sodass die Thread-Kontrolleinheit auf die verschiedenen Betriebsmodi der einzelnen Standardprozessorrumpfeinheiten entsprechend reagieren kann. Aus diesen Daten generiert die Thread-Kontrolleinheit die Multiplexersteuersignale, welche taktzyklussensitiv an die entsprechenden Multiplexer zur Steuerung der Multiplexer übertragen werden.
- Gemäß einer weiteren bevorzugten Weiterbildung werden die externen Ereignissteuersignale von externen Einrichtungen wie z. B. einem Interrupt oder externen Speichern erzeugt.
- Gemäß einer weiteren bevorzugten Weiterbildung ist jeder Standardprozessorrumpfeinheitstyp ein Teil eines DSP-Prozessors, eines Protokollprozessors oder eines Universalprozessors (General-Purpose-Processor).
- Gemäß einer weiteren bevorzugten Weiterbildung ist die Befehlsausführungseinheit einer Standardprozessorrumpfeinheit eine arithmetisch-logische Einheit (ALU) oder eine Adressengeneratoreinheit (AGU).
- Gemäß einer weiteren bevorzugten Weiterbildung wird eine Befehlsholeinheit durch einen (K·M)xN Multiplexer, N Datenleitungen, N Befehlszwischenspeichern, weiteren N Datenleitungen und einem Nx(K·M) Multiplexer ausgebildet.
- Gemäß einer weiteren bevorzugten Weiterbildung dekodiert die Befehldekodier/Operandenholeinheit den Programmbefehl und holt zur weiteren Bearbeitung potenziell innerhalb des Programmbefehls adressierte Operanden aus den mittels der Multiplexersteuersignale selektierten globalen Kontextspeichern oder aus dem lokalen Kontextspeicher.
- Gemäß einer weiteren bevorzugten Weiterbildung weist die Thread-Kontrolleinheit ein Schaltnetzwerk auf, welches die Thread-Kontrolleinheit in Abhängigkeit der Ereignissteuersignale ansteuert. Dabei unterstützt die Thread-Kontrolleinheit folgende Funktionalitäten:
Die Thread-Kontrolleinheit entscheidet, welche Threads abgearbeitet werden, sodass Programmbefehle dieser Threads von der Befehlsholeinheit aus dem Befehlsspeicher geholt werden. Um mehrere Programmbefehle von mehreren Threads gleichzeitig von der Befehlsholeinheit aus dem Befehlsspeicher zu holen, stellt die Thread-Kontrolleinheit die entsprechenden Threadnummern t, die entsprechenden Typenkennziffern p und die entsprechenden Standardprozessorrumpfeinheitskennziffern q bereit und generiert daraus die Multiplexersteuersignale. - Gemäß einer weiteren bevorzugten Weiterbildung weist das Schaltnetzwerk der Thread-Kontrolleinheit mindestens einen Threadkennziffer-Zwischenspeicher auf, welcher eine Warte schlange abzuarbeitender Threads speichert, wobei für einen Thread mindestens die Threadkennziffer und der entsprechende Threadzustand (Ready, Waiting) vorgesehen sind.
- Gemäß einer weiteren bevorzugten Weiterbildung weist das Schaltnetzwerk der Thread-Kontrolleinheit mindestens einen Standardprozessorrumpfnummer-Zwischenspeicher auf, welcher die Typenkennziffer und die Standardprozessorrumpfeinheitskennziffer zwischenspeichert, wobei die Thread-Kontrolleinheit mittels der Typenkennziffer und der Standardprozessorrumpfeinheitskennziffer eine entsprechende Standardprozessorrumpfeinheit zur Abarbeitung von Programmbefehlen adressiert.
- Gemäß einer weiteren bevorzugten Weiterbildung bilden die Typenkennziffer und die Standardprozessorrumpfeinheitskennziffer eine Standardprozessorrumpfeinheitsnummer aus.
- Ein Vorteil dieser bevorzugten Weiterbildung ist, dass durch die ausgebildete Standardprozessorrumpfeinheitsnummer jede Standardprozessorrumpfeinheit eines jeden Standardprozessorrumpfeinheitstypen eindeutig adressierbar ist.
- Gemäß einer weiteren bevorzugten Weiterbildung ist jeweils der Threadkennziffer-Zwischenspeicher und der Standardprozessorrumpfnummer-Zwischenspeicher als ein FIFO-Speicher (First In – First Out) ausgebildet.
- Gemäß einer weiteren bevorzugten Weiterbildung wird die Threadkennziffer, welche einen bestimmten Thread referenziert, in Abhängigkeit der Ereignissteuersignale in dem Threadkennziffer-Zwischenspeicher der Thread-Kontrolleinheit zwischengespeichert, falls der bestimmte Thread von keiner Standardprozessorrumpfeinheit bearbeitet wird.
- Gemäß einer weiteren bevorzugten Weiterbildung werden höchstens N Threadkennziffern in Abhängigkeit der Ereignissteuer signale mittels des Schaltnetzwerkes aus dem Threadkennziffer-Zwischenspeicher zur Bereitstellung von N geholten Threadkennziffer und zur Abarbeitung von Programmbefehlen der N Threads geholt.
- Gemäß einer weiteren bevorzugten Weiterbildung adressiert die Standardprozessorrumpfeinheitsnummer eine bestimmte Standardprozessorrumpfeinheit und wird in Abhängigkeit der Ereignissteuersignale in dem Standardprozessorrumpfeinheitsnummer-Zwischenspeicher zwischengespeichert, falls keine Programmbefehle eines Threads von der entsprechenden Standardprozessorrumpfeinheit bearbeitet werden.
- Gemäß einer weiteren bevorzugten Weiterbildung werden höchsten (K·M) Standardprozessorrumpfeinheitsnummern in Abhängigkeit der Ereignissteuersignale mittels des Schaltnetzwerkes aus dem Standardprozessorrumpfeinheitsnummer-Zwischenspeicher geholt, sodass Programmbefehle durch die mittels der Standardprozessorrumpfeinheitsnummer adressierten Standardprozessorrumpfeinheiten abgearbeitet werden.
- Gemäß einer weiteren bevorzugten Weiterbildung generiert die Thread-Kontrolleinheit mittels der aus dem Thread-Kennziffer-Zwischenspeicher geholten Threadkennziffer und der aus dem Standardprozessorrumpfeinheitsnummer-Zwischenspeicher geholten Standardprozessorrumpfeinheitsnummern ein Multiplexersteuersignal, sodass die Programmbefehle des mittels der geholten Threadkennziffer referenzierten Thread durch die mittels der geholten Standardprozessorrumpfeinheitsnummer referenzierten Standardprozessorrumpfeinheiten abgearbeitet werden.
- Gemäß einer weiteren bevorzugten Weiterbildung steuert das Multiplexersteuersignal zum jeweiligen entsprechenden Taktzyklus die Nx(K·M) Multiplexer und die (K·M)xN Multiplexer jeweils dann, wenn sich die Adresse des Programmbefehls bzw. der Programmbefehl des mittels der Threadkennziffer referen zierten Threads, welcher durch die mittels der Standardprozessorrumpfeinheitsnummer referenzierten Standardprozessorrumpfeinheiten abgearbeitet wird, an der entsprechenden Stelle des Multithread-Prozessors befindet.
- Gemäß einer weiteren bevorzugten Weiterbildung sind Inhalte eines globalen Kontextspeichers von jeder Standardprozessorrumpfeinheit eines jeden Standardprozessorrumpfeinheitstypen abarbeitbar und Inhalte eines lokalen Kontextspeichers sind ausschließlich von den Standardprozessorrumpfeinheiten des mit dem lokalen Kontextspeicher gekoppelten Standardprozessorrumpfeinheitstypen abarbeitbar.
- Gemäß einer weiteren bevorzugten Weiterbildung weist ein lokaler Kontextspeicher eine lokale Registerbank zum Zwischenspeichern von Operanden und ein lokales Statusregister zum Zwischenspeichern von Statusflags auf.
- Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Gleiche Bezugszeichen in den Figuren bezeichnen gleiche oder funktionsgleiche Elemente.
- Es zeigen:
-
1 ein Blockschaltbild eines parallelen Multithread-Prozessors mit geteilten Kontexten; -
2 ein Blockschaltbild eines heterogenen parallelen Multithread-Prozessors mit geteilten Kontexten nach der vorliegenden Erfindung; und -
3 ein schematisches Blockschaltbild der Thread-Kontrolleinheit des erfindungsgemäßen heterogenen parallelen Multithread-Prozessors mit geteilten Kontexten. - Obwohl die vorliegende Erfindung nachfolgend mit Bezug auf Prozessoren bzw. Mikroprozessoren bzw. deren Architekturen beschrieben wird, ist sie nicht darauf beschränkt, sondern auf vielfältige Weise einsetzbar sind.
-
2 zeigt ein Blockschaltbild eines heterogenen parallelen Multithread-Prozessors mit geteilten Kontexten nach der vorliegenden Erfindung. Dabei bezeichnet Bezugszeichen1 den heterogenen parallelen Multithread-Prozessor, welcher mit einem Befehlsspeicher7 und einem Datenbus8 gekoppelt ist. Des Weiteren enthält der Multithread-Prozessor 1 M verschiedene Standardprozessorrumpfeinheitstypen2p , wobei p∊[1, ..., M] ist. Jeder Standardprozessorrumpfeinheitstyp2p weist ein oder mehrere K parallel verschaltete Standardprozessorrumpfeinheiten2pq auf, wobei q∊[1, ...,M] ist. Jeder Standardprozessorrumpfeinheitstyp2p ist mit N lokalen Kontextspeichern32pt gekoppelt. Weiter weist der Multithread-Prozessor 1 M globale Kontextspeicher3t auf, wobei t∊[1, ..., N] ist. Jede Standardprozessorrumpfeinheit2pq ist mit einer Prozessorkontrolleinheit5pq gekoppelt. Weiter weist der Multithread-Prozessor 1N Befehlszwischenspeicher6t , Nx(K· M) Multiplexer10 und (K·M)xN Multiplexer11 auf. - Die Anzahl K der Standardprozessorrumpfeinheiten
2pq eines bestimmten Standardprozessorrumpfeinheitstypen2p ist unabhängig von der Anzahl K der Standardprozessorrumpfeinheiten2pq eines jeden anderen Standardprozessorrumpfeinheitstypen2p . Die Anzahl M verschiedener Standardprozessorrumpfeinheitstypen2p ist frei konfigurierbar, die Anzahl K der Standardprozessorrumpfeinheiten2pq eines bestimmten Standardprozessorrumpfeinheitstypen2p ist frei konfigurierbar. So kann beispielsweise der Multithread-Prozessor1 von dem Standardprozessorrumpfeinheitstypen2 , (p=1), ausgebildet als ein DSP-Prozessor, zwei Einheiten211 ,212 und von dem Standardprozessorrumpfeinheitstypen22 (p=2), ausgebildet als ein Protokoll-Prozessor, drei Einheiten221 ,222 223 aufweisen. So sind N, M, K hardware-technisch einzurichtende maximale An zahlen für den Multithread-Prozessor1 und t,p,q sind Variablen, um die einzelnen Einheiten innerhalb des Multithread-Prozessor1 zu adressieren. - Jede Standardprozessorrumpfeinheit
2pq weist eine Befehldekodier/Operandenholeinheit2pq' , eine Befehlsausführungseinheit2pq'' und eine Zurückschreibeeinheit2pq''' auf, wobei die Befehldekodier/Operandenholeinheit2pq' , die Befehlsausführungseinheit2pq'' und die Zurückschreibeeinheit2pq''' zur Bearbeitung von Befehlen nach einem Pipelineverfahren angeordnet sind. - Die Befehlsholeinheit
17 weist einen (K·M)xN Multiplexer11 , N Datenleitungen144 , N Befehlszwischenspeicher6t , weitere N Datenleitungen145 und einen Nx(K·M) Multiplexer10 auf. - Die Prozessorkontrolleinheit
5pq steuert die gekoppelte Standardprozessorrumpfeinheit2pq durch interne Steuersignale12pq' ,12pq'' ,12pq''' . Ein erstes internes Steuersignal12pq' für die Befehldekodier/Operandenholeinheit steuert dabei die Befehldekodier/Operandenholeinheit12pq' . Ein zweites internes Steuersignal12pq'' für die Befehlsausführungseinheit steuert die Befehlsausführungseinheit2pq'' und ein drittes internes Steuersignal12pq''' für die Zurückschreibeeinheit steuert die Zurückschreibeeinheit2pq''' . - Jeder globale Kontextspeicher
3t weist ein Programmzählregister3t' , eine Registerbank3t'' und ein Statusregister3t''' auf. Das Programmzählregister3t' speichert einen Programmzähler für einen Thread T. Über einen Nx(K·M) Multiplexer10 werden die Inhalte der N Programmzählregister3t' der N Threads T auf einen (K·M)-kanaligen Adressbus16 gelegt. - Die durch die Dateninhalte der Programmzählregister
3t' referenzierten (K·M) Programmbefehle von Threads T werden über einen (K·M)-kanaligen Datenbus13 aus dem Befehlsspeicher7 von der Befehlholeinheit17 ausgelesen. Die ausgelesenen Da teninhalte werden über einen (K·M)xN Multiplexer11 zu N Befehlszwischenspeichern6t übertragen. Es ist für jeden der N Threads T ein zugehöriger Befehlszwischenspeicher6t vorgesehen. Über einen Nx(K·M) Multiplexer10 werden aus den N Befehlszwischenspeichern6t (K·M) Programmbefehle auf (K·M) Datenleitungen141 gelegt. Die (K·M) Programmbefehle, die auf die Datenleitungen141 gelegt sind, werden auf die (K·M) Standardprozessorrumpfeinheiten2pq verteilt. - Die globalen Kontextspeicher
3t speichern Teile von Threads bzw. Threads typunspezifisch. Im Gegensatz dazu speichern die lokalen Kontextspeicher32pt Teile von Threads typspezifisch. Der lokale Kontextspeicher32pt weist eine lokale Registerbank32pt'' zum Zwischenspeichern von Operanden und ein lokales Statusregister32pt''' zum Zwischenspeichern von Statusflags auf. Die lokalen Kontextspeicher32pt sind sowohl eingangs- als auch ausgangsseitig mit dem entsprechenden Standardprozessorrumpfeinheitstypen2p mittels jeweils eines KxK Multiplexers10p' gekoppelt. - Die Befehldekodier/Operandenholeinheit
2pq' der Standardprozessorrumpfeinheit2pq dekodiert beispielsweise einen Befehl des Threads Tt. Der dekodierte Programmbefehl des Threads Tt enthält unter anderem Adressen von Operanden, die für die nachfolgende Befehlsausführung benötigt werden. Die adressierten Dateninhalte bzw. Operanden sind in einem für den Thread Tt bereitgestellten Kontextspeicher3t gespeichert, genauer in der Registerbank3t' des Kontextspeichers3t . Über einen Nx(K·M) Multiplexer10 werden die Dateninhalte der Operanden aus der Registerbank3t' zu der Befehldekodier/Operandenholeinheit2pq' der Standardprozessorrumpfeinheit2pq übertragen, wobei der Nx(K·M) Multiplexer10 von der Thread-Kontrolleinheit4 mittels des Multiplexersteuersignals <t,q>[e] gesteuert wird. Die Multiplexer (10 ,11 ) werden mittels der Multiplexersteuersignale <t,p,q> derart gesteuert, dass der richtige Kontextspeicher3t an die entsprechende Pipeline der richtigen Standardprozessorrumpfeinheit2pq ge schalten wird. Die Befehlsausführungseinheit2pq'' der Standardprozessorrumpfeinheit2pq führt die im Befehl des Threads Tt enthaltene arithmetisch-logische Operation mittels der aus der Registerbank3t geholten Operanden aus. - Nachdem die arithmetisch-logische Operation mit den geholten Operanden durchgeführt wurde, wird das Ergebnis der Operation bzw. Zusatzzeichen bzw. Flags von der Zurückschreibeeinheit
2pq''' auf eine Datenleitung142 gelegt. - Dieselben Dateninhalte werden potentiell im Falle eines Speicherbefehls zusätzlich auf eine Datenleitung
143 gelegt. Die (K·M) Datenleitungen143 sind für die Kopplung des Multithread-Prozessors1 mit dem Datenbus8 vorgesehen. Die Dateninhalte der (K·M) Ergebnisse der (K·M) Standardprozessorrumpfeinheiten2pq werden über den Datenbus8 an einen externen Speicher übertragen. - Über einen (K·M)xN Multiplexer
11 wird das Ergebnis der Operation des Threads Tt bzw. Zusatzzeichen bzw. Flags von der Datenleitung14 , genommen, und das Ergebnis der arithmetischlogischen Operation in die Registerbank3t' des Kontextspeichers3t und Zusatzzeichen bwz. Flags in das Statusregister3t'' des Kontextspeichers3t übertragen. - Die Dateninhalte der N Statusregister
3t''' werden mittels eines Nx(K·M) Multiplexers10 an die (K·M) Prozessorkontrolleinheiten5pq übertragen. Die Prozessorkontrolleinheit5pq generiert aus den Dateninhalten der Statusregister3t''' interne Steuersignale, nämlich ein internes Steuersignal für die Befehldekodier/Operandenholeinheit12pq' , ein internes Steuersignal für die Befehlsausführungseinheit12pq'' und ein internes Steuersignal für die Zurückschreibeeinheit2pq''' . - Die Thread-Kontrolleinheit
4 steuert über die Multiplexersteuersignale <t,p,q>[a]-<t,p,q>[j] die Multiplexer10 bzw.11 . Ein Multiplexersteuersignal <t,p,q> gibt an, welcher Thread Tt durch welche Standardprozessorrumpfeinheit2pq bearbeitet wird, wobei t eine Threadkennziffer für den jeweiligen Thread T ist, p eine Typenkennziffer für den jeweiligen Standardprozessorrumpfeinheitstypen2p ist und q eine Standardprozessorrumpfeinheitskennziffer für die jeweilige Standardprozessorrumpfeinheit2pq ist. - Der Nx(K·M) Multiplexer
10 hat die Funktion, die Daten eines N-kanaligen Datenbusses auf einen (K·M)-kanaligen Datenbus zu legen. - Der (K·M)xN Multiplexer
11 hat die Funktion, die Daten eines (K·M)-kanaligen Datenbusses auf einen N-kanaligen Datenbus zu legen. - Die (K·M) internen Ereignissteuersignale
9pq' beinhalten unter anderem Daten über blockierte Threads T, interne Interrupts, Wartezeiten und Exception-Ereignis-Signale und stellen diese Daten der Thread-Kontrolleinheit bereit. - Externe Ereignissteuersignale
9'' werden der Thread-Kontrolleinheit durch externe Einrichtungen bereitgestellt. Beispiele hierfür sind externe Interrupts, welche von externen Einrichtungen generiert werden. -
3 zeigt ein schematisches Blockschaltbild der Thread-Kontrolleinheit des erfindungsgemäßen heterogenen parallelen Multithread-Prozessors mit geteiltem Kontext. - Die Thread-Kontrolleinheit
4 weist ein Schaltnetzwerk18 , einen Threadkennziffer-Zwischenspeicher19 und einen Standardprozessorrumpfnummer-Zwischenspeicher20 auf. - Der Threadkennziffer-Zwischenspeicher
19 speichert die Threadkennziffern t zwischen. Der Standardprozessorrumpfnummer-Zwischenspeicher20 speichert die Standardprozessorrumpfeinheitsnummern pq zwischen, wobei diese jeweils aus der Ty penkennziffer p und der Standardprozessorrumpfeinheitskennziffer q generiert wird. - Eingangsseitig empfängt die Thread-Kontrolleinheit
4 die internen Ereignissteuersignale9pq' (911' , ...,9MK' ) und die externen Ereignissteuersignale9'' . Die eingangsseitig empfangenen Steuersignale werden mitunter mittels des Schaltnetzwerkes18 , dem Threadkennziffer-Zwischenspeicher19 und dem Standardprozessorrumpfnummer-Zwischenspeicher20 verarbeitet. Durch die Verarbeitung werden die Multiplexersteuersignale <t,p,q>[a]-<t,p,q>[j] generiert und zum entsprechenden Taktzyklus an den entsprechenden Nx(K·M) Multiplexer10 (nicht gezeigt) bzw. an den entsprechenden (K·M)xN Multiplexer11 (nicht gezeigt) gesendet. - Obwohl die vorliegende Erfindung vorstehend anhand bevorzugter Ausführungsbeispiele beschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Weise modifiziert.
-
- 1
- Multithread-Prozessor
- M
- Anzahl verschiedener Standardprozessorrumpfein
- heitstypen (SPRET)
- p
- Typenkennziffer; p∊[1, .., M]
- N
- Anzahl verschiedener globaler Kontextspeicher
- t
- Threadkennziffer; t∊[1, .., N]
- K
- Anzahl der Standardprozessorrumpfeinheiten (SPRE)
- des jeweiligen SPRET
- q
- Standardprozessorrumpfeinheitskennziffer;
- q∊[1, .., K]
- pq
- Standardprozessorrumpfeinheitsnummer
- T
- Thread
- 2p
- Standardprozessorrumpfeinheitstyp (SPRET);
- p∊[1, ..,M]
- 2pq
- q-te SPRE des SPRET p; p∊[1, .., M]
- 2pq'
- Befehlsdecodier/Operandenholeinheit
- 2pq''
- Befehlsausführungseinheit
- 2pq'''
- Zurückschreibeeinheit
- 3t
- t-ter globaler Kontextspeicher; t∊[1, .., N]
- 3t'
- t-tes Programmzählregister; t∊[1, .., N]
- 3t''
- t-te Registerbank; t∊[1, .., N]
- 3t'''
- t-tes Statusregister; t∊[1, .., N]
- 32pt
- lokaler Kontextspeicher für SPRE
- 32pt''
- lokale Registerbank für SPRE
- 32pt'''
- lokale Statusregister für SPRE
- 4
- Thread-Kontrolleinheit
- 5pq
- Prozessorkontrolleinheit
- 6t
- Befehlszwischenspeicher
- 7
- Befehlsspeicher
- 8
- Datenbus
- 9
- Ereignissteuersignale
- 9pq'
- internes Ereignissteuersignal
- 9''
- externe Ereignissteuersignale
- 10
- Nx(K·M) Multiplexer
- 10p'
- KxK Multiplexer
- 11
- (K·M)xN Multiplexer
- 12
- internes Steuersignal
- 12pq'
- internes Steuersignal für Befehlsdeco
- dier/Operandenholeinheit
- 12pq''
- internes Steuersignal für
- Befehlsausführungseinheit
- 12pq'''
- internes Steuersignal für Zurückschreibeeinheit
- <t,p,q>
- Multiplexersteuersignal
- 13
- (K·M)-kanaliger Datenbus
- 14
- Datenleitung
- 15
- N-kanaliger Datenbus
- 16
- (K·M)-kanaliger Adressbus
- 17
- Befehlsholeinheit
- 18
- Schaltnetzwerk
- 19
- Threadkennziffer-Zwischenspeicher
- 20
- Standardprozessorrumpfnummer-Zwischenspeicher
- PMT
- paralleler Multithread-Prozessor
- SPRE
- Standardprozessorrumpfeinheit
- SPRE'
- Befehlsdecodier/Operandenholeinheit
- SPRE''
- Befehlsausführungseinheit
- SPRE'''
- Zurückschreibeeinheit
- KS
- Kontextspeicher
- PZR
- Programmzählregister
- RB
- Registerbank
- SR
- Statusregister
- TK
- Thread-Kontrolleinheit
- PKE
- Prozessorkontrolleinheit
- BZS
- Befehlszwischenspeicher
- BS
- Befehlsspeicher
- DB
- Datenbus
- ESS
- Ereignissteuersignale
- ESS'
- internes Ereignissteuersignal
- ESS''
- externe Ereignissteuersignale
- NxM MUX
- NxM Multiplexer
- MxN Mux
- MxN Multiplexer
- intSS
- internes Steuersignal
- intSS'
- internes Steuersignal für Befehlsdeco
- dier/Operandenholeinheit
- intSS''
- internes Steuersignal für Befehlsausführungseinheit
- intSS'''
- internes Steuersignal für Zurückschreibeeinheit
- t
- Threadnummer
- p
- Standardprozessorrumpfnummer
- <t,p>
- Multiplexersteuersignal
- DB
- Datenbus
- AB
- Adressbus
- DL
- Datenleitung
- BHE
- Befehlsholeinheit
Claims (35)
- Heterogener paralleler Multithread-Prozessor mit geteilten Kontexten mit: (a) mehreren (M) parallel verschalteten Standardprozessorrumpfeinheitstypen (
2p ; p∊[1, ..., M]), wobei jeweils jeder Standardprozessorrumpfeinheitstyp (2p ) mindestens eine oder mehrere (K) parallel verschaltete Standardprozessorrumpfeinheiten (2pq ; q∊[1, ..., K]) zur Befehlsausführung von Programmbefehlen verschiedener Threads (T) aufweist, wobei für jeden Standardprozessorrumpfeinheitstypen (2p ) N lokale Kontextspeicher (32pt ) vorgesehen sind, die jeweils einen Teil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern; (b) mehreren (N) globalen Kontextspeichern (3t ; t∊[1, ..., N]), welche jeweils einen Teil eines aktuellen Prozessor-Zustand eines Threads zwischenspeichern; (c) und mit einer Thread-Kontrolleinheit (4 ), durch die jede Standardprozessorrumpfeinheit (2pq ) an jeden globalen Kontextspeicher (3t ) schaltbar ist. - Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (
2pq ) eine Befehldecodier/Operandenholeinheit (2pq' ) zur Decodierung eines Programmbefehls und zum Holen innerhalb des Programmbefehls adressierter Operanden aufweist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (
2pq ) eine Befehlsausführungseinheit (2pq'' ) zum Ausführen des decodierten Programmbefehls aufweist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (
2pq ) eine Zurückschreibeeinheit (2pq''' ) zum Zurückschreiben von Operationsergebnissen der ausgeführten Programmbefehle aufweist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (
2pq ) mit einer zugehörigen Prozessorkontrolleinheit (5pq ) gekoppelt ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jeder globale Kontextspeicher (
3t ) ein Programmzählregister (3t' ) zum Zwischenspeichern eines Programmzählers; eine Registerbank (3t'' ) zum Zwischenspeichern von Operanden und ein Statusregister (3t''' ) zum Zwischenspeichern von Statusflags aufweist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Anzahl (K·M) der Standardprozessorrumpfeinheiten (
2pq ) kleiner oder gleich der Anzahl (N) der globalen Kontextspeicher (3t ) ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass mindestens ein Befehlszwischenspeicher vorgesehen ist, welcher oder welche in N, adressierbar durch die Thread-Kontrolleinheit (
4 ), Befehlszwischenspeicher (6t ) teilbar ist bzw. sind, wobei jeder der N Befehlszwischenspeicher (6t ) an jede Standardprozessorrumpfeinheit (2pq ) schaltbar ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Befehlszwischenspeicher (
6t ) zum Auslesen von Programmbefehlen durch die Thread-Kontrolleinheit (4 ) an einen oder mehrere Befehlsspeicher (7 ) schaltbar sind, wobei die aus dem Befehlsspeicher (7 ) ausgelesenen Programmbefehle durch die Programmzähler der Programmzählregister (3t' ) der globalen Kontextspeicher (3t ) adressiert sind. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass aus den Befehlszwischenspeichern (
6t ) gleichzeitig bis zu (K·M) Programmbefehle auslesbar sind. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Standardprozessorrumpfeinheiten (
2pq ) die verarbeiteten Daten über einen Datenbus (8 ) an einen Datenspeicher abgeben. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (
2pq ) die ihr von der Thread-Kontrolleinheit (4 ) zugeschalteten Programmbefehle sequentiell in einem Pipeline-Verfahren bearbeitet. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (
2pq ) einen zugeschalteten Programmbefehl, falls dieser kein Datenzugriffsbe fehls ist, innerhalb einer vorbestimmten Anzahl von Taktzyklen bearbeitet. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Anzahl der vorgesehenen Befehlszwischenspeicher (
6t ) der Anzahl (N) der globalen Kontextspeicher (3t ) entspricht, wobei jeder Befehlszwischenspeicher (6t ) durch eine entsprechende Threadkennziffer (t) angesteuert wird. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (
4 ) eingangsseitig Ereignissteuersignale (9 ) empfängt, interne Zustände zwischenspeichert und ausgangsseitig Multiplexersteuersignale (<t,p,q>) bereitstellt. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Ereignissteuersignale (
9 ) interne Ereignissteuersignale (9pq' ) und externe Ereignissteuersignale (9'' ) umfassen. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die internen Ereignissteuersignale (
9pq' ) von den Standardprozessorrumpfeinheiten (2pq ) erzeugt werden. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die externen Ereignissteuersignale (
9'' ) von externen Baugruppen erzeugt werden. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jeder Standardprozessorrumpfeinheitstyp (
2p ) ein Teil eines DSP-Prozessors, eines Protokollprozessors oder eines Universal-Prozessors ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Befehlsausführungseinheit (
2pq'' ) der Standardprozessorrumpfeinheit (2pq ) eine Arithmetisch-Logische-Einheit (ALU) oder eine Adressengeneratoreinheit (AGU) ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass eine Befehlsholeinheit (
17 ) durch einen (K·M)xN Multiplexer (11 ), N Datenleitungen (144 ), N Befehlszwischenspeichern (6t ), weiteren N Datenleitungen (145 ) und einem Nx(K·M) Multiplexer (10 ) ausgebildet ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Befehldecodier/Operandenholeinheit (
2pq' ) den Programmbefehl decodiert und potentiell innerhalb des Programmbefehls adressierte Operanden aus den mittels der Multiplexersteuersignale (<t,p,q>) selektierten globalen Kontextspeichern (3t ) oder aus dem lokalen Kontextspeicher (32pt ) zur weiteren Bearbeitung holt. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (
4 ) ein Schaltnetzwerk (18 ) aufweist, welches die Thread-Kontrolleinheit (4 ) in Abhängigkeit der Ereignissteuersignale (9 ) ansteuert. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Schaltnetzwerk (
18 ) der Thread-Kontrolleinheit (4 ) mindestens einen Threadkennziffer-Zwischenspeicher (19 ) aufweist, welcher eine Warteschlange abzuarbeitender Threads (T) speichert, wobei für einen Thread (T) mindestens die Threadkennziffer (t) und der entsprechende Threadzustand (ready, waiting) vorgesehen sind. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Schaltnetzwerk (
18 ) der Thread-Kontrolleinheit (4 ) mindestens einen Standardprozessorrumpfnummer-Zwischenspeicher (20 ) aufweist, welcher die Typenkennziffer (p) und die Standardprozessorrumpfeinheitskennziffer (q) zwischenspeichert, wobei die Thread-Kontrolleinheit (9 ) mittels der Typenkennziffer (p) und der Standardprozessorrumpfeinheitskennziffer (q) eine entsprechende Standardprozessorrumpfeinheit (2pq ) zur Abarbeitung von Programmbefehlen adressiert. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Typenkennziffer (p) und die Standardprozessorrumpfeinheitskennziffer (q) eine Standardprozessorrumpfeinheitsnummer (pq) ausbilden.
- Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass der Threadkennziffer-Zwischenspeicher (
19 ) und der Standardprozessorrumpfnummer-Zwischenspeicher (20 ) jeweils als ein FIFO-Speicher (First In – First Out) ausgebildet ist. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Threadkennziffer (t), welche einen Thread (T) adressiert, in Abhängigkeit der Ereignissteuersignale (
9 ) in dem Threadkennziffer-Zwischenspeicher (19 ) der Thread-Kontrolleinheit (4 ) zwischengespeichert wird, falls der Thread (T) von keiner Standardprozessorrumpfeinheit (2pq ) bearbeitet wird. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass höchstens N Threadkennziffern (t) in Abhängigkeit der Ereignissteuersignale (
9 ) mittels des Schaltnetzwerkes (18 ) aus dem Threadkennziffer-Zwischenspeicher (19 ) zur Bereitstellung von N geholten Threadkennziffer (t) und zur Abarbeitung von Programmbefehlen der N Threads (T) geholt werden. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Standardprozessorrumpfeinheitsnummer (pq) eine bestimmte Standardprozessorrumpfeinheit (
2pq ) adressiert und in Abhängigkeit der Ereignissteuersignale (9 ) in dem Standardprozessorrumpfnummer-Zwischenspeicher (20 ) zwischengespeichert wird, falls keine Programmbefehle eines Threads (T) von der bestimmten Standardprozessorrumpfeinheit (2pq ) bearbeitet werden. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass höchstens (K·M) Standardprozessorrumpfeinheitsnummern (pq) in Abhängigkeit der Ereignissteuersignale (
9 ) mittels des Schaltnetzwerkes (18 ) aus dem Standardprozessorrumpfnummer-Zwischenspeicher (20 ) geholt werden, sodass Programmbefehle durch die mittels der Standardprozessorrumpfeinheitsnummer (pq) adressierten Standardprozessorrumpfeinheiten (2pq ) abgearbeitet werden. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (
4 ) mittels einer aus dem Threadkennziffer-Zwischenspeicher (19 ) geholten Threadkennziffer (t) und einer aus dem Standardprozessorrumpfnummer-Zwischenspeicher (20 ) geholten Standardprozessorrumpfeinheitsnummer (pq) ein Multiplexersteuersignal (<t,p,q>) generiert und damit die Multiplexer (10 ,11 ) steuert, sodass die Programmbefehle des mittels der geholten Threadkennziffer (t) referenzierten Threads (T) durch die mittels der geholten Standardprozessorrumpfeinheitsnummer (pq) referenzierten Standardprozessorrumpfeinheit (2pq ) abgearbeitet werden. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Multiplexersteuersignal (<t,p,q>) zum jeweiligen entsprechenden Taktzyklus die Nx(K·M) Multiplexer (
10 ) und die (K·M)xN Multiplexer (11 ) jeweils dann steuert, wenn sich die Adresse des Programmbefehls bzw. der Programmbefehl des mittels der Threadkennziffer (t) referenzierten Threads (T), welcher durch die mittels der Standardprozessorrumpfeinheitsnummer (pq) referenzierten Standardprozessorrumpfeinheit (2pq ) abgearbeitet wird, an der entsprechenden Stelle des Multithread-Prozessors (1 ) befindet. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass Inhalte eines globalen Kontextspeichers (
3t ) von jeder Standardprozessorrumpfeinheit (2pq ) eines jeden Standardprozessorrumpfeinheitstypen (2p ) abarbeitbar sind und dass Inhalte eines lokalen Kontextspeichers (32pt ) ausschließlich von den Standardprozessorrumpfeinheiten (2pq ) des mit dem lokalen Kontextspeicher (32pt ) gekoppelten Standardprozessorrumpfeinheitstypen (2p ) abarbeitbar sind. - Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass ein lokaler Kontextspeicher (
32pt ) eine lokale Registerbank (32pt'' ) zum Zwischenspeichern von Operanden und ein lokales Statusregister (32pt''' ) zum Zwischenspeichern von Statusflags aufweist.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004009610A DE102004009610B4 (de) | 2004-02-27 | 2004-02-27 | Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten |
US11/064,795 US7263604B2 (en) | 2004-02-27 | 2005-02-24 | Heterogeneous parallel multithread processor (HPMT) with local context memory sets for respective processor type groups and global context memory |
CNB2005100656577A CN100451949C (zh) | 2004-02-27 | 2005-02-28 | 带有共享内容的异构型并行多线程处理器(hpmt) |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004009610A DE102004009610B4 (de) | 2004-02-27 | 2004-02-27 | Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102004009610A1 true DE102004009610A1 (de) | 2005-09-22 |
DE102004009610B4 DE102004009610B4 (de) | 2007-08-16 |
Family
ID=34877161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102004009610A Expired - Fee Related DE102004009610B4 (de) | 2004-02-27 | 2004-02-27 | Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten |
Country Status (3)
Country | Link |
---|---|
US (1) | US7263604B2 (de) |
CN (1) | CN100451949C (de) |
DE (1) | DE102004009610B4 (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411532B2 (en) * | 2001-09-07 | 2016-08-09 | Pact Xpp Technologies Ag | Methods and systems for transferring data between a processing device and external devices |
JP4519082B2 (ja) * | 2006-02-15 | 2010-08-04 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置 |
JPWO2009150815A1 (ja) * | 2008-06-11 | 2011-11-10 | パナソニック株式会社 | マルチプロセッサシステム |
CN101710986B (zh) * | 2009-11-18 | 2012-05-23 | 中兴通讯股份有限公司 | 基于同构多核处理器的h.264并行解码方法和*** |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US8561078B2 (en) * | 2011-09-27 | 2013-10-15 | Throughputer, Inc. | Task switching and inter-task communications for multi-core processors |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
CN104753866A (zh) * | 2013-12-27 | 2015-07-01 | ***通信集团公司 | 一种数据传输方法及装置 |
EP3159805B1 (de) * | 2015-10-19 | 2020-04-15 | Nxp B.V. | Periphere steuereinheit |
CN113867798A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 集成计算装置、集成电路芯片、板卡和计算方法 |
CN115617740B (zh) * | 2022-10-20 | 2023-10-27 | 长沙方维科技有限公司 | 单发射多线程动态循环并行技术实现的处理器架构 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2234613B (en) * | 1989-08-03 | 1993-07-07 | Sun Microsystems Inc | Method and apparatus for switching context of state elements in a microprocessor |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US6115804A (en) * | 1999-02-10 | 2000-09-05 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention |
US6463511B2 (en) * | 2000-12-29 | 2002-10-08 | Intel Corporation | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US6915414B2 (en) * | 2001-07-20 | 2005-07-05 | Zilog, Inc. | Context switching pipelined microprocessor |
AU2003207526A1 (en) * | 2002-01-11 | 2003-07-30 | Sun Microsystems, Inc. | Lock-free implementation of dynamic-sized shared data structure |
US7401208B2 (en) * | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor |
DE10353268B3 (de) * | 2003-11-14 | 2005-07-28 | Infineon Technologies Ag | Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten |
-
2004
- 2004-02-27 DE DE102004009610A patent/DE102004009610B4/de not_active Expired - Fee Related
-
2005
- 2005-02-24 US US11/064,795 patent/US7263604B2/en not_active Expired - Fee Related
- 2005-02-28 CN CNB2005100656577A patent/CN100451949C/zh not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
Rakesh Kumar et al: Single-ISA Heterogeneous Mul- ti-Core Architectures: The Potential for Proces- sor Power Reduction, In Proceedings of the 36th International Symposium on Microarchitecture, 3-5 Dec. 2003, pp.81-92 * |
Ungerer T. et al.: A Survey of Processors with Ex- plicit Multithreading, ACM Computing Surveys, Vol. 35, No.1, March 2003, pp.29-63 |
Ungerer T. et al.: A Survey of Processors with Ex-plicit Multithreading, ACM Computing Surveys, Vol.35, No.1, March 2003, pp.29-63 * |
Also Published As
Publication number | Publication date |
---|---|
US20050193186A1 (en) | 2005-09-01 |
CN100451949C (zh) | 2009-01-14 |
DE102004009610B4 (de) | 2007-08-16 |
US7263604B2 (en) | 2007-08-28 |
CN1758213A (zh) | 2006-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10353268B3 (de) | Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten | |
DE69129569T2 (de) | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen | |
DE60036016T2 (de) | Schnell multithreading für eng gekoppelte multiprozessoren | |
DE69033065T2 (de) | Mehrfachbefehlsdecoder | |
DE69932066T2 (de) | Mechanismus zur "store-to-load forwarding" | |
DE69715328T2 (de) | System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen | |
DE102014011332B4 (de) | Priorisieren von anweisungen basierend auf typ | |
DE60005701T2 (de) | Threadumschaltungslogik in einem multithreadprozessor | |
DE69907955T2 (de) | Globale und locale registersegmentierung in einem vliw prozessor | |
DE60005002T2 (de) | Vertikal-threaded prozessor mit multidimensionalem speicher | |
DE60010907T2 (de) | Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter | |
DE2224537C2 (de) | Einrichtung und Verfahren zur Instruktionsauswahl in einem Fließbandprozessor | |
DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
DE69427421T2 (de) | Speichersteuereinheit mit hohem Grade der Gleichzeitigkeit und Arbeitsteilung | |
DE69916962T2 (de) | Datenverarbeitungssystem mit bedingter Ausführung von erweiterten Verbundbefehlen | |
DE60013115T2 (de) | Prozessor mit vertikal-threaded pipeline mit mehreren thread und betriebsverfahren dafür | |
DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
DE69023568T2 (de) | Cache-Speicheranordnung. | |
DE19506435C2 (de) | Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten | |
DE102015002383A1 (de) | Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline | |
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE112015005597T5 (de) | Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor | |
DE19807872A1 (de) | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. | |
DE102014003799A1 (de) | Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle | |
DE102013114351A1 (de) | System und Verfahren für Hardware-Disponierung bedingter Barrieren und ungeduldiger Barrieren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |