DE102004009610A1 - Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten - Google Patents

Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten Download PDF

Info

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
Application number
DE102004009610A
Other languages
English (en)
Other versions
DE102004009610B4 (de
Inventor
Xiaoning Nie
Jinan Lin
Lajos Gazsi
Soenke Mehrgardt
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102004009610A priority Critical patent/DE102004009610B4/de
Priority to US11/064,795 priority patent/US7263604B2/en
Priority to CNB2005100656577A priority patent/CN100451949C/zh
Publication of DE102004009610A1 publication Critical patent/DE102004009610A1/de
Application granted granted Critical
Publication of DE102004009610B4 publication Critical patent/DE102004009610B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3802Instruction prefetching
    • 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

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 Bezugszeichen 1 den heterogenen parallelen Multithread-Prozessor, welcher mit einem Befehlsspeicher 7 und einem Datenbus 8 gekoppelt ist. Des Weiteren enthält der Multithread-Prozessor 1 M verschiedene Standardprozessorrumpfeinheitstypen 2p , wobei p∊[1, ..., M] ist. Jeder Standardprozessorrumpfeinheitstyp 2p weist ein oder mehrere K parallel verschaltete Standardprozessorrumpfeinheiten 2pq auf, wobei q∊[1, ...,M] ist. Jeder Standardprozessorrumpfeinheitstyp 2p ist mit N lokalen Kontextspeichern 32pt gekoppelt. Weiter weist der Multithread-Prozessor 1 M globale Kontextspeicher 3t auf, wobei t∊[1, ..., N] ist. Jede Standardprozessorrumpfeinheit 2pq ist mit einer Prozessorkontrolleinheit 5pq gekoppelt. Weiter weist der Multithread-Prozessor 1N Befehlszwischenspeicher 6t , Nx(K· M) Multiplexer 10 und (K·M)xN Multiplexer 11 auf.
  • Die Anzahl K der Standardprozessorrumpfeinheiten 2pq eines bestimmten Standardprozessorrumpfeinheitstypen 2p ist unabhängig von der Anzahl K der Standardprozessorrumpfeinheiten 2pq eines jeden anderen Standardprozessorrumpfeinheitstypen 2p . Die Anzahl M verschiedener Standardprozessorrumpfeinheitstypen 2p ist frei konfigurierbar, die Anzahl K der Standardprozessorrumpfeinheiten 2pq eines bestimmten Standardprozessorrumpfeinheitstypen 2p ist frei konfigurierbar. So kann beispielsweise der Multithread-Prozessor 1 von dem Standardprozessorrumpfeinheitstypen 2, (p=1), ausgebildet als ein DSP-Prozessor, zwei Einheiten 211 , 212 und von dem Standardprozessorrumpfeinheitstypen 22 (p=2), ausgebildet als ein Protokoll-Prozessor, drei Einheiten 221 , 222 223 aufweisen. So sind N, M, K hardware-technisch einzurichtende maximale An zahlen für den Multithread-Prozessor 1 und t,p,q sind Variablen, um die einzelnen Einheiten innerhalb des Multithread-Prozessor 1 zu adressieren.
  • Jede Standardprozessorrumpfeinheit 2pq weist eine Befehldekodier/Operandenholeinheit 2pq', eine Befehlsausführungseinheit 2pq'' und eine Zurückschreibeeinheit 2pq''' auf, wobei die Befehldekodier/Operandenholeinheit 2pq', die Befehlsausführungseinheit 2pq'' und die Zurückschreibeeinheit 2pq''' zur Bearbeitung von Befehlen nach einem Pipelineverfahren angeordnet sind.
  • Die Befehlsholeinheit 17 weist einen (K·M)xN Multiplexer 11, N Datenleitungen 144 , N Befehlszwischenspeicher 6t , weitere N Datenleitungen 145 und einen Nx(K·M) Multiplexer 10 auf.
  • Die Prozessorkontrolleinheit 5pq steuert die gekoppelte Standardprozessorrumpfeinheit 2pq durch interne Steuersignale 12pq', 12pq'', 12pq'''. Ein erstes internes Steuersignal 12pq' für die Befehldekodier/Operandenholeinheit steuert dabei die Befehldekodier/Operandenholeinheit 12pq'. Ein zweites internes Steuersignal 12pq'' für die Befehlsausführungseinheit steuert die Befehlsausführungseinheit 2pq'' und ein drittes internes Steuersignal 12pq''' für die Zurückschreibeeinheit steuert die Zurückschreibeeinheit 2pq'''.
  • Jeder globale Kontextspeicher 3t weist ein Programmzählregister 3t', eine Registerbank 3t'' und ein Statusregister 3t''' auf. Das Programmzählregister 3t' speichert einen Programmzähler für einen Thread T. Über einen Nx(K·M) Multiplexer 10 werden die Inhalte der N Programmzählregister 3t' der N Threads T auf einen (K·M)-kanaligen Adressbus 16 gelegt.
  • Die durch die Dateninhalte der Programmzählregister 3t' referenzierten (K·M) Programmbefehle von Threads T werden über einen (K·M)-kanaligen Datenbus 13 aus dem Befehlsspeicher 7 von der Befehlholeinheit 17 ausgelesen. Die ausgelesenen Da teninhalte werden über einen (K·M)xN Multiplexer 11 zu N Befehlszwischenspeichern 6t übertragen. Es ist für jeden der N Threads T ein zugehöriger Befehlszwischenspeicher 6t vorgesehen. Über einen Nx(K·M) Multiplexer 10 werden aus den N Befehlszwischenspeichern 6t (K·M) Programmbefehle auf (K·M) Datenleitungen 141 gelegt. Die (K·M) Programmbefehle, die auf die Datenleitungen 141 gelegt sind, werden auf die (K·M) Standardprozessorrumpfeinheiten 2pq verteilt.
  • Die globalen Kontextspeicher 3t speichern Teile von Threads bzw. Threads typunspezifisch. Im Gegensatz dazu speichern die lokalen Kontextspeicher 32pt Teile von Threads typspezifisch. Der lokale Kontextspeicher 32pt weist eine lokale Registerbank 32pt'' zum Zwischenspeichern von Operanden und ein lokales Statusregister 32pt''' zum Zwischenspeichern von Statusflags auf. Die lokalen Kontextspeicher 32pt sind sowohl eingangs- als auch ausgangsseitig mit dem entsprechenden Standardprozessorrumpfeinheitstypen 2p mittels jeweils eines KxK Multiplexers 10p' gekoppelt.
  • Die Befehldekodier/Operandenholeinheit 2pq' der Standardprozessorrumpfeinheit 2pq 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 Kontextspeicher 3t gespeichert, genauer in der Registerbank 3t' des Kontextspeichers 3t . Über einen Nx(K·M) Multiplexer 10 werden die Dateninhalte der Operanden aus der Registerbank 3t' zu der Befehldekodier/Operandenholeinheit 2pq' der Standardprozessorrumpfeinheit 2pq übertragen, wobei der Nx(K·M) Multiplexer 10 von der Thread-Kontrolleinheit 4 mittels des Multiplexersteuersignals <t,q>[e] gesteuert wird. Die Multiplexer (10, 11) werden mittels der Multiplexersteuersignale <t,p,q> derart gesteuert, dass der richtige Kontextspeicher 3t an die entsprechende Pipeline der richtigen Standardprozessorrumpfeinheit 2pq ge schalten wird. Die Befehlsausführungseinheit 2pq'' der Standardprozessorrumpfeinheit 2pq führt die im Befehl des Threads Tt enthaltene arithmetisch-logische Operation mittels der aus der Registerbank 3t 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 Datenleitung 142 gelegt.
  • Dieselben Dateninhalte werden potentiell im Falle eines Speicherbefehls zusätzlich auf eine Datenleitung 143 gelegt. Die (K·M) Datenleitungen 143 sind für die Kopplung des Multithread-Prozessors 1 mit dem Datenbus 8 vorgesehen. Die Dateninhalte der (K·M) Ergebnisse der (K·M) Standardprozessorrumpfeinheiten 2pq werden über den Datenbus 8 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 Datenleitung 14, genommen, und das Ergebnis der arithmetischlogischen Operation in die Registerbank 3t' des Kontextspeichers 3t und Zusatzzeichen bwz. Flags in das Statusregister 3t'' des Kontextspeichers 3t übertragen.
  • Die Dateninhalte der N Statusregister 3t''' werden mittels eines Nx(K·M) Multiplexers 10 an die (K·M) Prozessorkontrolleinheiten 5pq übertragen. Die Prozessorkontrolleinheit 5pq generiert aus den Dateninhalten der Statusregister 3t''' interne Steuersignale, nämlich ein internes Steuersignal für die Befehldekodier/Operandenholeinheit 12pq', ein internes Steuersignal für die Befehlsausführungseinheit 12pq'' und ein internes Steuersignal für die Zurückschreibeeinheit 2pq'''.
  • Die Thread-Kontrolleinheit 4 steuert über die Multiplexersteuersignale <t,p,q>[a]-<t,p,q>[j] die Multiplexer 10 bzw. 11. Ein Multiplexersteuersignal <t,p,q> gibt an, welcher Thread Tt durch welche Standardprozessorrumpfeinheit 2pq bearbeitet wird, wobei t eine Threadkennziffer für den jeweiligen Thread T ist, p eine Typenkennziffer für den jeweiligen Standardprozessorrumpfeinheitstypen 2p ist und q eine Standardprozessorrumpfeinheitskennziffer für die jeweilige Standardprozessorrumpfeinheit 2pq 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 Schaltnetzwerk 18, einen Threadkennziffer-Zwischenspeicher 19 und einen Standardprozessorrumpfnummer-Zwischenspeicher 20 auf.
  • Der Threadkennziffer-Zwischenspeicher 19 speichert die Threadkennziffern t zwischen. Der Standardprozessorrumpfnummer-Zwischenspeicher 20 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 Ereignissteuersignale 9pq' (911', ..., 9MK') und die externen Ereignissteuersignale 9''. Die eingangsseitig empfangenen Steuersignale werden mitunter mittels des Schaltnetzwerkes 18, dem Threadkennziffer-Zwischenspeicher 19 und dem Standardprozessorrumpfnummer-Zwischenspeicher 20 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) Multiplexer 10 (nicht gezeigt) bzw. an den entsprechenden (K·M)xN Multiplexer 11 (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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit (2pq ) mit einer zugehörigen Prozessorkontrolleinheit (5pq ) gekoppelt ist.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass aus den Befehlszwischenspeichern (6t) gleichzeitig bis zu (K·M) Programmbefehle auslesbar sind.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Ereignissteuersignale (9) interne Ereignissteuersignale (9pq') und externe Ereignissteuersignale (9'') umfassen.
  17. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die internen Ereignissteuersignale (9pq') von den Standardprozessorrumpfeinheiten (2pq ) erzeugt werden.
  18. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die externen Ereignissteuersignale (9'') von externen Baugruppen erzeugt werden.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
  25. 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.
  26. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Typenkennziffer (p) und die Standardprozessorrumpfeinheitskennziffer (q) eine Standardprozessorrumpfeinheitsnummer (pq) ausbilden.
  27. 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.
  28. 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.
  29. 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.
  30. 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.
  31. 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.
  32. 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.
  33. 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.
  34. 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.
  35. 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.
DE102004009610A 2004-02-27 2004-02-27 Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten Expired - Fee Related DE102004009610B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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 &#34;store-to-load forwarding&#34;
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