DE102005009083B4 - Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen - Google Patents

Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen Download PDF

Info

Publication number
DE102005009083B4
DE102005009083B4 DE102005009083A DE102005009083A DE102005009083B4 DE 102005009083 B4 DE102005009083 B4 DE 102005009083B4 DE 102005009083 A DE102005009083 A DE 102005009083A DE 102005009083 A DE102005009083 A DE 102005009083A DE 102005009083 B4 DE102005009083 B4 DE 102005009083B4
Authority
DE
Germany
Prior art keywords
memory
load
valid
signal level
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102005009083A
Other languages
English (en)
Other versions
DE102005009083A1 (de
Inventor
Lorenzo Di Gregorio
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 DE102005009083A priority Critical patent/DE102005009083B4/de
Priority to US11/364,834 priority patent/US20060230258A1/en
Publication of DE102005009083A1 publication Critical patent/DE102005009083A1/de
Application granted granted Critical
Publication of DE102005009083B4 publication Critical patent/DE102005009083B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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, 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

Abstract

Multithread-Prozessor (1) mit einer Prozessor-Pipeline (4), die aufweist:
– eine Synchronisationseinheit (6) als eine Prozessor-Pipelinestufe, welche bei einem Empfangen eines Ladezyklusanzeigeflags (load_i) mit einem positiven logischen Signalpegel, welches bei Vorliegen eines Ladebefehls (LB) auf den positiven logischen Signalpegel gesetzt wird und angibt, dass ein Ladezyklus auf ein Speichersystem (2) durchgeführt wird, von einer Speicherlesezugriffseinheit (5) als eine weitere der Synchronisationseinheit (6) vorgeschalteten Prozesser-Pipelinestufe eine Kontextkennung (ctx_i) und eine Zielregisterkennung (reg_i) und bei einem Empfangen eines Gültigkeitssignals (valid_i) mit einem positiven logischen Signalpegel von einer Speichersystem (2) einen entsprechenden Speicherwert (data_i) lädt, die Kontextkennung (ctx_i), die Zielregisterkennung (reg_i) und den Speicherwert (data_i) zwischenspeichert und synchronisiert an eine nachgeordnete Pipelinestufe (9) weiterleitet,
und welche eine Logikschaltung (14) aufweist, die bei Empfangen des Ladezyklusanzeigeflags (load_i) mit einem positiven logischen Signalpegel und des Gültigkeitssignals (valid_i) mit einem negativen logischen Signalpegel ein Kontext-Umschaltsignal (css) generiert, wobei ein positiver logischer Signalpegel des Gültigkeitssignals (valid_i)...

Description

  • Die Erfindung betrifft einen Multithread-Prozessor mit einer Synchronisationseinheit zur Synchronisation eines Befehlsflusses mit einem zugehörigen Datenfluss und zur Generierung eines speicher-getriggerten Kontext-Umschaltsignals und ein Verfahren zum Betreiben eines solchen.
  • Eingebettete Prozessoren und deren Architekturen werden an ihrem Leistungsverbrauch, ihrem Durchsatz, ihrer Auslastung (Utilization), ihren Kosten und ihrer Realzeitfähigkeit gemessen. Um insbesondere den Durchsatz und die Auslastung zu erhöhen, kommt das Prinzip des Multithreading zum Einsatz. Die Grundidee des Multithreading basiert darauf, dass ein Prozessor mehrere Threads bearbeitet. Dabei wird insbesondere ausgenützt, dass bei einer Latenzzeit des einen Threads, Programmbefehle des anderen Threads bearbeitet werden können. Dabei bezeichnet ein Thread einen Kontrollpfad eines Codes bzw. Quellcodes bzw. Programms, wobei innerhalb eines Threads Datenabhängigkeiten bestehen und zwischen verschiedenen Threads schwache oder keine Datenabhängigkeiten bestehen (wie in Kapitel 3 in T. Beierlein, O. Hagenbruch: "Taschenbuch Mikroprozessortechnik", 2. Auflage, Fachbuchverlag Leipzig im Karl-Hanser-Verlag München – Wien, ISBN 3-446-21686-3 beschrieben). Ein Kontext eines Threads ist der Ausführungszustand der Programmbefehlsfolge des Threads. Demnach ist der Kontext eines Threads definiert als ein temporärer Prozessorzustand während der Bearbeitung des Threads durch diesen Prozessor. Der Kontext wird von der Hardware des Prozessors, herkömmlicherweise dem Programmzählregister bzw. Programmcounter, dem Registerfile bzw. Kontextspeicher und dem dazugehörigen Statusregister gehalten.
  • Beispielsweise ist in Ungerer, Theo et al. (2003) "Survey of Processors With Explicit Multithreading" in ACM Computing Surveys, Volume 35, March 2003, eine umfangreiche Auflistung der bekannten Multithread-Prozessoren und deren Architekturen beschrieben.
  • Um die Decodierung der Programmbefehle und das Adressieren und Lesen der Speicherstellen bereitzustellen, wird in einer herkömmlichen Pipeline eines Multithread-Prozessors die Speicherlesezugriffseinheit bzw. Ladeeinheit (load unit), welche Daten bzw. Speicherwerte aus der Speicherstelle für einen entsprechenden Programmbefehl lädt, erst spät in der Pipeline vorgesehen. In einer Multithread-Architektur führt dies zwangsläufig zur Implementierung von der Speicherlesezugriffseinheit nachgeordneten Befehlszwischenspeichern. Die nachgeordneten Befehlszwischenspeicher sind nötig, um ein speicher-getriggertes Kontext-Umschalten zu ermöglichen, falls beispielsweise eine Leseanforderung (read request) an die Speicherstelle nicht in einer vorgegebenen Zeit beantwortet wird bzw. beantwortet werden kann. Eine solche Implementierung von Befehlszwischenspeichern (replay buffers) wird beispielsweise in K. W. Rudd "VLIW Processors: Efficiently Exploiting Instruction Level Parallelism", PhD Thesis, Stanford University, December 1999 beschrieben.
  • Nachteiligerweise sind die Befehlszwischenspeicher, die gemäß den bekannten Implementierungen nach der Speicherlesezugriffseinheit in der Pipeline angeordnet sind, so groß zu implementieren, dass sie für jeden durch den Multithread-Prozessor zu bearbeitenden Thread sämtliche Programmbefehle, die sich jeweils in der Pipeline oberhalb der Befehlszwischenspeicher befinden können, zwischenspeichern können, so dass ein Thread-Umschalten ohne Taktzyklusverlust gewährleistet wird. Bearbeitet beispielsweise ein Multithread-Prozessor drei Threads und weist die Pipeline drei Pipelinestufen oberhalb der Speicherlesezugriffseinheit auf, so sind drei Befehlszwischenspeicher mit jeweils wenigstens vier Speicher stellen zu implementieren. Das bedeutet, dass relativ große Befehlszwischenspeicher vorzusehen sind, welche einen hohen Platzaufwand benötigen und deren Implementierung mit hohen Kosten verbunden ist.
  • Die Druckschrift US 6,507,862 B1 beschreibt ein Umschaltverfahren in einem Multithread-Prozessor. Der beschriebene Multithread-Prozessor weist eine einzelne Pipeline auf, die eine Vielzahl von Threads bearbeitet. Dabei wird ein aktiver Thread, der nicht blockiert ist, ausgewählt. Dieser aktive Thread stellt den funktionalen Blöcken, die mit der Pipeline verbunden sind, Daten bereit. Wenn der aktive Thread blockiert wird, schaltet die Pipeline sofort auf einen nicht-blockierten Thread um, falls ein solcher Thread vorhanden ist, und beginnt die Ausführung des nicht-blockierten Threads. Als Antwort auf eine Blockierung aufgrund eines misslungenen Speicherzugriffs, friert der Prozessor den gesamten Pipeline-Status des ausführenden Threads in der geteilten Prozessor-Pipeline ein.
  • Die Druckschrift US 6,295,600 B1 zeigt ein Verfahren und eine Vorrichtung zum Umschalten zwischen Threads eines Programms als Antwort auf ein Ereignis, das eine lange Latenzzeit bedingt.
  • Es ist daher Aufgabe der Erfindung, ein speicher-getriggertes Kontext-Umschalten für einen Multithread-Prozessors unter Einsatz möglichst kleiner Befehlszwischenspeicher bereitzustellen.
  • Erfindungsgemäß wird die gestellte Aufgabe durch einen Multithread-Prozessor mit den Merkmalen des Patentanspruchs 1 sowie durch ein Verfahren zum Betreiben eines Multithread-Prozessors mit den Merkmalen des Patentanspruchs 17 gelöst.
  • Demgemäß wird erfindungsgemäß ein Multithread-Prozessor mit einer Prozessor-Pipeline (4) vorgeschlagen, die aufweist:
    • – eine Synchronisationseinheit als eine Prozessor-Pipelinestufe, welche bei einem Empfangen eines Ladezyklusanzeigeflags mit einem positiven logischen Signalpegel, welches bei Vorliegen eines Ladebefehls auf den positiven logischen Signalpegel gesetzt wird und angibt, dass ein Ladezyklus auf ein Speichersystem durchgeführt wird, von einer Speicherlesezugriffseinheit als eine weitere der Synchronisationseinheit vorgeschalteten Prozesser-Pipelinestufe eine Kontextkennung und eine Zielregisterkennung und bei einem Empfangen eines Gültigkeitssignals mit einem positiven logischen Signalpegel von einer Speichersystem einen entsprechenden Speicherwert lädt, die Kontextkennung, die Zielregisterkennung und den Speicherwert zwischenspeichert und synchronisiert an eine nachgeordnete Pipelinestufe weiterleitet, und welche eine Logikschaltung aufweist, die bei Empfangen des Ladezyklusanzeigeflags mit einem positiven logischen Signalpegel und des Gültigkeitssignals mit einem negativen logischen Signalpegel ein Kontext-Umschaltsignal generiert, wobei ein positiver logischer Signalpegel des Gültigkeitssignals angibt, dass der Speicherwert gültig ist.
  • Vorteilhafterweise wird durch die erfindungsgemäße Generierung des Kontext-Umschaltsignals eine kostengünstige und sehr einfache Möglichkeit einer Implementierung einer speicher-getriggerten Kontext-Umschaltung bereitgestellt.
  • Ein weiterer Vorteil der vorliegenden Erfindung ist, dass durch das Akzeptieren einer potenziellen Latenzzeit aufgrund des Wartens auf die durch einen Ladebefehl angeforderten Speicherwerte und damit einhergehenden Generierung des erfindungsgemäßen Kontext-Umschaltsignals ermöglicht wird, die Befehlszwischenspeicher deutlich oberhalb der Speicherlesezugriffseinheit in der Pipeline des Multithread-Prozessors anzuordnen. In herkömmlichen Implementierungen von Multithread-Prozessoren ist oberhalb der Speicherlesezugriffs einheit bzw. Ladeeinheit eine konfliktfreie Zone von mehreren Pipelinestufen ausgebildet, die aufgrund anderer Rahmenbedingungen, wie beispielsweise der Behandlung von Interrupts oder der Vereinfachung der Prozessoransteuerung, bedingt ist. Das bedeutet, dass die aufgrund der genannten anderen Rahmenbedingungen inhärent vorhandene konfliktfreie Zone von Pipelinestufen oberhalb der Speicherlesezugriffseinheit erfindungsgemäß genutzt wird, um die Befehlszwischenspeicher oberhalb dieser konfliktfreien Zone anzuordnen und mittels des erfindungsgemäß generierten Kontext-Umschaltsignals zu steuern. Somit werden gegenüber den bekannten Implementierung erfindungsgemäß nur sehr kleine Replay-Buffer bzw. Befehlszwischenspeicher benötigt. Somit wird Platz auf der Platine des Multithread-Prozessors eingespart. Des Weiteren vereinfacht sich die Ansteuerung der Befehlszwischenspeicher und somit werden weitere Kosten eingespart.
  • Ein weiterer besonderer Vorteil des erfindungsgemäßen Multithread-Prozessors und des erfindungsgemäßen Verfahrens ist, dass mittels der erfindungsgemäßen Synchronisationseinheit der Datenfluss, die Speicherwerte, und der Befehlsfluss, Kontextkennung und Zielregisterkennung, synchronisiert werden.
  • Vorteilhafte Ausgestaltungen und Weiterbildungen ergeben sich auch den Unteransprüchen sowie aus der Beschreibung unter Bezugnahme auf die Zeichnungen.
  • Gemäß einer bevorzugten Ausgestaltung der Erfindung weist der Multithread-Prozessor weiter auf:
    • – ein Speichersystem, welches eine Vielzahl von Speicherstellen aufweist, wobei eine Speicherstelle durch eine Speicheradresse adressierbar ist und einen veränderbaren Speicherwert speichert und welche als Antwort auf eine an das Speichersystem übertragene Anforderung und Speicheradresse den entsprechenden Speicherwert bereitstellt und das zugehörige Gültigkeitssignal mit einem positiven logischen Signalpegel an die Synchronisationseinheit überträgt;
    • – einer Prozessorpipeline zur Verarbeitung von Programmbefehlen verschiedener Threads, wobei die Prozessorpipeline wenigstens aufweist: – eine Speicherlesezugriffseinheit, welche bei einem Ladebefehl das Ladezyklusanzeigeflag mit einem positiven logischen Signalpegel zur Anzeige eines Ladezyklus auf das Speichersystem an die Synchronisationseinheit überträgt und die Kontextkennung zur Angabe des entsprechenden Kontextes des Ladebefehls und die Zielregisterkennung zur Angabe der Zielspeicherstelle des Speichersystems des Ladebefehls bereitstellt; und – die Synchronisationseinheit.
  • Gemäß einer weiteren bevorzugten Ausgestaltung weist die Synchronisationseinheit einen ersten FIFO-Speicher auf, in welchem jeweils die Kontextkennung und die zugehörige Zielregisterkennung zusammen zwischengespeichert werden. Vorteilhafterweise wird durch das gemeinsame Zwischenspeichern der Kontextkennung und der Zielregisterkennung in einem gemeinsamen FIFO-Speicher sichergestellt, dass diese Daten in einer Reihe geordnet für eine Synchronisation mit den Speicherwerten vorliegen.
  • Gemäß einer weiteren bevorzugten Ausgestaltung weist die Synchronisationseinheit einen zweiten FIFO-Speicher auf, in welchem jeweils der Speicherwert zwischengespeichert wird. Vorteilhafterweise wird durch das Vorsehen des zweiten FIFO-Speichers sichergestellt, dass auch die geladenen Speicherwerte geordnet für die Synchronisation bereitgestellt werden. Ein besonderer Vorteil der erfindungsgemäßen Anordnung ist, dass durch die Bereitstellung des ersten FIFO-Speichers und des zweiten FIFO-Speichers sichergestellt ist, dass die Kontextkennung und die zugehörige Zielregisterkennung mit dem zugehörigen Speicherwert innerhalb des Synchronisationseinheit synchronisiert vorliegen.
  • Gemäß einer bevorzugten Weiterbildung der Erfindung sind der erste FIFO-Speicher und der zweite FIFO-Speicher jeweils als ein flankengesteuertes Flip-Flop ausgebildet.
  • Gemäß einer weiteren bevorzugten Ausgestaltung setzen der erste FIFO-Speicher und der zweite FIFO-Speicher jeweils ein Leeranzeigeflag ausgangsseitig auf einen positiven logischen Signalpegel, falls der entsprechende FIFO-Speicher leer ist.
  • Gemäß einer weiteren bevorzugten Ausgestaltung weist die Synchronisationseinheit einen ersten Multiplexer und einen zweiten Multiplexer auf, welche mittels der Logikschaltung steuerbar sind und die FIFO-Speicher kurzschließen, falls die beiden Leeranzeigeflags, das anliegende Ladezyklusanzeigeflag und das anliegende Gültigkeitssignal jeweils auf einen positiven logischen Signalpegel gesetzt sind. Somit ist erfindungsgemäß sichergestellt, dass bei einem Ladezyklus, wenn gültige Daten von dem Speichersystem ladbar sind und die beiden FIFO-Speicher leer sind, die Kontextkennung, die Zielregisterkennung und der zugehörige Speicherwert sofort, synchron und ohne Verzögerung an eine nachgeordnete Pipelinestufe weitergeleitet werden können.
  • Gemäß einer weiteren bevorzugten Weiterbildung steuert die Logikschaltung den ersten Multiplexer und den zweiten Multiplexer mittels eines einzigen Steuersignals. Somit wird erfindungsgemäß die Synchronisation des Daten- und Befehlsflusses sichergestellt.
  • Gemäß einer weiteren bevorzugten Weiterbildung leitet die Synchronisationseinheit einen Programmbefehl, welcher nicht einen Speicherwert einer Speicherstelle benötigt, dessen zugehörige Zielregisterkennung in dem ersten FIFO-Speicher zwischengespeichert ist, ohne Verzögerung an die nachgeordnete Pipelinestufe. Somit wird vorteilhafterweise sichergestellt, dass Programmbefehle, die keine Synchronisation mit angefor derten Speicherwerten benötigen, durch die Synchronisationseinheit nicht aufgehalten werden.
  • Gemäß einer weiteren bevorzugten Weiterbildung leitet die Synchronisationseinheit einen Programmbefehl, welcher in eine Speicherstelle schreibt, dessen zugehörige Zielregisterkennung in dem ersten FIFO-Speicher zwischengespeichert ist, ohne Verzögerung weiter und ignoriert den nachfolgenden, von der entsprechenden Speicherstelle übertragenen, zugehörigen Speicherwert. Vorteilhafterweise wird somit sichergestellt, dass Programmbefehle, die in eine Speicherstelle schreiben, deren Zielregisterkennung in dem ersten FIFO gespeichert ist, sofort weitergeleitet werden, und die später erhaltenen, zugehörigen Speicherwerte nicht mehr bearbeitet werden müssen, da der besagte Schreibbefehl selbst in die entsprechende Speicherstelle schreibt.
  • Gemäß einer weiteren bevorzugten Ausgestaltung ist die der Synchronisationseinheit nachgeordnete Pipelinestufe als eine Zurückschreibeeinheit ausgebildet, welche von der Synchronisationseinheit als Ausgangsspeicherwerte e bereitgestellte Speicherwerte unter einer mittels der zugehörigen Zielregisterkennung gebildeten Ausgangspeicheradresse in die entsprechende Speicherstelle schreibt.
  • Gemäß einer weiteren bevorzugten Ausgestaltung weist der Multithread-Prozessor für einen jeden zu bearbeitenden Thread einen Kontextzwischenspeicher auf, in welchen jeweils Programmbefehle eines bestimmten Threads zwischenspeicherbar sind, welche wenigstens eine Pipelinestufe vor der Speicherlesezugriffseinheit angeordnet sind und welche jeweils mittels des Kontext-Umschaltsignals steuerbar sind.
  • Gemäß einer weiteren bevorzugten Ausgestaltung ist die Prozessorpipeline des Multithread-Prozessors wenigstens durch eine Befehlsdecodiereinheit zur Decodierung eines Programmbefehls, einer Befehlsausführungseinheit zur Ausführung des de codierten Programmbefehls, der Speicherlesezugriffseinheit, der Synchronisationseinheit und der Zurückschreibeeinheit ausgebildet.
  • Gemäß einer weiteren bevorzugten Weiterbildung bearbeitet der Multithread-Prozessor einen Programmbefehl in einer vorbestimmten Anzahl von Taktzyklen, falls dieser kein Datenzugriffsbefehl oder Ladebefehl ist.
  • Gemäß einer weiteren bevorzugten Weiterbildung besteht die Prozessorpipeline des Multithread-Prozessors aus einem Teil eines DSP-Prozessors, eines Protokoll-Prozessors oder eines Universal-Prozessors.
  • Gemäß einer weiteren bevorzugten Weiterbildung ist die Befehlsausführungseinheit eine arithmetisch-logische Einheit oder eine Adressengeneratoreinheit.
  • Die Erfindung wird nachfolgend anhand der in den schematischen Figuren der Zeichnung angegebenen Ausführungsbeispielen näher erläutert. Es zeigen:
  • 1 ein schematisches Blockschaltbild eines ersten bevorzugten Ausführungsbeispiels des erfindungsgemäßen Multithread-Prozessors;
  • 2 ein schematisches Blockdiagramm eines zweiten bevorzugten Ausführungsbeispiels des erfindungsgemäßen Multithread-Prozessors;
  • 3 ein schematisches Blockdiagramm eines besonders bevorzugten Ausführungsbeispiels der Synchronisationseinheit des Multithread-Prozessors gemäß der vorliegenden Erfindung; und
  • 4 ein schematisches Ablaufdiagramm eines bevorzugten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Betreiben eines Multithread-Prozessors.
  • In allen Figuren sind gleiche bzw. funktionsgleiche Elemente und Signale – sofern nichts anderes angegeben ist – mit denselben Bezugszeichen versehen worden.
  • 1 zeigt ein schematisches Blockschaltbild eines ersten bevorzugten Ausführungsbeispiels des erfindungsgemäßen Multithread-Prozessors 1. Der erfindungsgemäße Multithread-Prozessor 1 weist ein Speichersystem 2 auf, welches aus einer Vielzahl von Speicherstellen 3136 besteht. Eine Speicherstelle 3136 ist durch eine Speicheradresse adr adressierbar und speichert Speicherwerte data_i. Als Antwort auf eine an das Speichersystem 2 übertragene Anforderung req und Speicheradresse adr stellt das Speichersystem 2 den entsprechenden Speicherwert data_i der entsprechenden Speicherstelle 3136 bereit. Weiter stellt das Speichersystem 2 ein zugehöriges Gültigkeitssignal valid_i zur Angabe der Gültigkeit des bereitgestellten Speicherwertes data_i der Synchronisationseinheit 6 bereit bzw. überträgt dieses an die Synchronisationseinheit 6. Das Gültigkeitssignal valid_i ist vorzugsweise dann gültig, wenn es einen positiven logischen Signalpegel aufweist.
  • Der Multithread-Prozessor 1 weist weiter eine Prozessorpipeline 4 zur Verarbeitung von Programmbefehlen PB, LB verschiedener Threads auf. Ein Ladebefehl LB bzw. Datenzugriffsbefehle ist ein spezieller Programmbefehl PB, der auf das Speichersystem 2 zugreift. Dabei beinhaltet die Prozessorpipeline 4 vorzugsweise eine Speicherlesezugriffseinheit 5. Die Speicherlesezugriffseinheit 5 setzt bei Vorliegen eines Ladebefehls LB ein Ladezyklusanzeigeflag load_i auf einen positiven logischen Signalpegel und überträgt das Ladezyklusanzeigeflag load_i an die Synchronisationseinheit 6. Das Ladezyklusanzeigeflag load_i gibt an, dass ein Ladezyklus auf das Speicher system 2 vorgenommen wird. Weiter stellt die Speicherlesezugriffseinheit 5 eine Kontextkennung ctx_i bereit, welche angibt, zu welchem Kontext bzw. Thread der entsprechende Ladebefehl LB zugehörig ist. Außerdem stellt die Speicherlesezugriffseinheit 5 eine Zielregisterkennung reg_i bereit, welche das Zielregister 3136 des Speichersystems 2, auf welches der entsprechende Ladebefehl LB zugreift, kennzeichnet. Vorzugsweise ist die Synchronisationseinrichtung Teil der Prozessorpipeline 4.
  • Die Synchronisationseinheit 6 empfängt das Ladezyklusanzeigeflag load_i von der Speicherlesezugriffseinheit 5. Weist das empfangene Ladezyklusanzeigeflag load_i einen positiven logischen Signalpegel auf, so lädt die Synchronisationseinheit 6 die zugehörige Kontextkennung ctx_i und die zugehörige Zielregisterkennung reg_i von der Speicherlesezugriffseinheit 5.
  • Des Weiteren empfängt die Synchronisationseinheit 6 das Gültigkeitssignal valid_i von dem Speichersystem 2. Weist das Gültigkeitssignal valid_i, welches von der Synchronisationseinheit 6 empfangen wurde, einen positiven logischen Signalpegel auf, so lädt die Synchronisationseinheit 6 den zugehörigen Speicherwert data_i der entsprechenden Speicherstelle 3136.
  • Die Synchronisationseinheit 6 synchronisiert die geladene Kontextkennung ctx_i und die geladene Zielregisterkennung reg_i mit dem geladenen, zugehörigen Speicherwert data_i und speichert diese zwischen. Nachfolgend werden die synchronisiert zwischengespeicherten Kennungen ctx_i, reg_i und der Speicherwert an eine nachgeordnete Pipelinestufe (nicht gezeigt) weitergeleitet.
  • Des Weiteren weist die Synchronisationseinheit 6 eine Logikschaltung 14 (vgl. 3) auf, die bei Empfangen des Ladezyklusanzeigeflags load_i mit einem positiven logischen Signalpegel und des Gültigkeitssignals valid_i mit einem negati ven logischen Signalpegel das Kontext-Umschaltsignal css generiert.
  • 2 zeigt ein schematisches Blockdiagramm eines zweiten bevorzugten Ausführungsbeispiels des erfindungsgemäßen Multithread-Prozessors 1.
  • Der Multithread-Prozessor 1 weist ein Speichersystem 2 auf, welches eine Vielzahl von Speicherstellen 3136 beinhaltet. Eine Speicherstelle 3136 ist mittels einer Speicheradresse adr adressierbar und speichert einen veränderbaren Speicherwert data_i, data_o. Als Antwort auf eine an das Speichersystem 2 übertragene Anforderung req und Speicheradresse adr, welche beide in Folge eines Ladebefehls LB von der Speicherlesezugriffseinheit 5 bereitgestellt werden, stellt das Speichersystem 2 den entsprechenden Speicherwert data_i der entsprechenden Speicherstelle 3136 bereit. Weiter stellt das Speichersystem 2 ein zugehöriges Gültigkeitssignal valid_i bereit, welches einen positiven logischen Signalpegel zur Angabe der Gültigkeit des zugehörigen Speicherwertes data_i aufweist, und überträgt dieses an die Synchronisationseinheit 6.
  • Weiter weist der erfindungsgemäße Multithread-Prozessor 1 eine Prozessorpipeline 4 zur Verarbeitung von Programmbefehlen PB, LB verschiedener Threads auf.
  • Die Prozessorpipeline 4 weist vorzugsweise unter anderem eine Speicherlesezugriffseinheit 5 auf. Die Speicherlesezugriffseinheit 5 setzt bei Vorliegen eines Ladebefehls LB das Ladezyklusanzeigeflag load_i auf einen positiven logischen Signalpegel und überträgt dieses an die Synchronisationseinheit 6. Das Ladezyklusanzeigeflag load_i gibt an, dass ein Ladezyklus auf das Speichersystem 2 vorgenommen wird. Weiter stellt die Speicherlesezugriffseinheit 5 die Kontextkennung ctx_i zur Angabe des entsprechenden Kontext des Ladebefehls LB und die Zielregisterkennung reg_i zur Angabe des Zielre gisters 3136 des Speichersystems 2 des Ladebefehls LB bereit. Vorzugsweise ist die Synchronisationseinheit 6 Teil der Prozessorpipeline 4.
  • Vorzugsweise ist die der Synchronisationseinheit 6 nachgeordnete Pipelinestufe 9 als eine Zurückschreibeeinheit ausgebildet, welche von der Synchronisationseinheit 6 als Ausgangsspeicherwert data_o bereitgestellte Speicherwerte data_i unter einer mittels der zugehörigen Zielregisterkennung reg_i gebildeten Ausgangsspeicheradresse adr_o in das entsprechende Register 3136 schreibt.
  • Vorzugsweise weist der Multithread-Prozessor 1 weiter für einen jeden zu bearbeitenden Thread einen Kontextzwischenspeicher 151, 152 auf, in welchen jeweils Programmbefehle PB, LB eines bestimmten Threads zwischenspeicherbar sind, welche wenigstens eine Pipelinestufe vor der Speicherlesezugriffseinheit 5 angeordnet sind und welche jeweils mittels des Kontextumschaltsignals css steuerbar sind. Beispielsweise sind die Kontextzwischenspeicher 151, 152 zwischen einer Befehlsdecodiereinheit 7 und einer Befehlsausführungseinheit 8 angeordnet.
  • Vorzugsweise ist die Prozessorpipeline 4 des Multithread-Prozessors 1 durch die Befehlsdecodiereinheit 7 zur Decodierung eines Programmbefehls PB, LB, einer Befehlsausführungseinheit 8 zur Ausführung des Decodierprogrammbefehls PB, LB, der Speicherlesezugriffseinheit 5, der Synchronisationseinheit 6 und der Zurückschreibeeinheit 9 ausgebildet.
  • Vorzugsweise bearbeitet der Multithread-Prozessor 1 einen Programmbefehl PB in einer vorbestimmten Anzahl von Taktzyklen, falls dieser kein Datenzugriffsbefehl oder Ladebefehl LB ist.
  • Beispielsweise besteht die Prozessorpipeline 4 des Multithread-Prozessors 1 aus einem Teil eines DSP-Prozessors, eines Protokoll-Prozessors oder eines Universal-Prozessors. Die Befehlsausführungseinheit 8 kann beispielsweise eine artithmetisch-logische Einheit (ALU) oder eine Adressengeneratoreneinheit (AGU) sein.
  • 3 zeigt ein schematisches Blockdiagramm eines besonders bevorzugten Ausführungsbeispiels der Synchronisationseinheit 6 des Multithread-Prozessors 1 gemäß der vorliegenden Erfindung. Vorzugsweise weist die Synchronisationseinheit 6 einen ersten FIFO-Speicher 10, einen zweiten FIFO-Speicher 11, einen ersten Multiplexer 12, einen zweiten Multiplexer 13 und eine Logikschaltung 14 auf. Bei Vorliegen eines Ladezyklusanzeigeflags load_i mit einem positiven logischen Signalpegel lädt die Logikschaltung 14 die Kontextkennung ctx_i und die zugehörige Zielregisterkennung reg_i von der Speicherlesezugriffseinheit 5 (nicht gezeigt) mittels eines ersten Push-Signals push_10 und speichert die geladenen Kennungen ctx_i, reg_i in dem ersten FIFO-Speicher 10 zwischen.
  • Bei Vorliegen eines Gültigkeitssignals valid_i mit einem positiven logischen Signalpegel lädt die Logikschaltung 14 den entsprechenden Speicherwert data_i von der entsprechenden Speicherstelle 3136 des Speichersystems 2 (nicht gezeigt) mittels eines zweiten Push-Signals push_11 und speichert den geladenen Speicherwert data_i in dem zweiten FIFO-Speicher 11 zwischen.
  • Vorzugsweise sind der erste FIFO-Speicher 10 und der zweite FIFO-Speicher 11 jeweils als ein flankengesteuertes Flip-Flop ausgebildet. Vorzugsweise setzen der erste FIFO-Speicher 10 und der zweite FIFO-Speicher 11 jeweils ein Leeranzeigeflag empty_10, empty_11 ausgangsseitig auf einen positiven logischen Signalpegel und übertragen jeweils dieses Leeranzeigeflag empty_10, empty_11 an die Logikschaltung 14, falls der entsprechende FIFO-Speicher 10, 11 leer ist. Die Logikschaltung 14 schiebt die jeweils zuerst abgespeicherten Daten mit tels eines ersten bzw. zweiten Pop-Signals pop_10, pop_11 aus dem ersten bzw. zweiten FIFO-Speicher 10, 11.
  • Vorzugsweise weist die Synchronisationseinheit 6 einen ersten Multiplexer 12 und einen zweiten Multiplexer 13 auf. Der erste Multiplexer 12 schließt beispielsweise den ersten FIFO-Speicher 10 kurz und der zweite Multiplexer 13 schließt beispielsweise den zweiten FIFO-Speicher 11 kurz. Die beiden FIFO-Speicher 10, 11 werden durch die beiden Multiplexer 12, 13 kurzgeschlossen, falls die beiden Leeranzeigeflags empty_10, empty_11, das anliegende Ladezyklusanzeigeflag load_i und das anliegende Gültigkeitssignal valid_i jeweils auf einem positiven logischen Signalpegel gesetzt sind. Dabei steuert die Logikschaltung 14 vorzugsweise den ersten Multiplexer 12 und den zweiten Multiplexer 13 mittels eines einzigen Steuersignals S.
  • Vorzugsweise leitet die Synchronisationseinheit 6 einen Programmbefehl PB, LB, welcher nicht einen Speicherwert data_i einer Speicherstelle 3136 benötigt, dessen zugehörige Zielregisterkennung reg_i in dem ersten FIFO-Speicher 10 zwischengespeichert ist, ohne Verzögerung an die nachgeordnete Pipelinestufe 9 bzw. Zurückschreibeeinheit 9.
  • Vorzugsweise leitet die Synchronisationseinheit 6 einen Programmbefehl PB, LB, welcher in eine Speicherstelle 3136 schreibt, dessen zugehörige Zielregisterkennung reg_i in dem ersten FIFO-Speicher 10 gespeichert ist, ohne Verzögerung weiter und ignoriert den nachfolgenden, von der entsprechenden Speicherstelle 3136 übertragenen zugehörigen Speicherwert data_i.
  • 4 zeigt ein schematisches Ablaufdiagramm eines bevorzugten Ausführungsbeispiels des erfindungsgemäßen Verfahrens zum Betreiben eines Multithread-Prozessors 1 mit einer Synchronisation eines Befehlsflusses mit einem zugehörigen Datenfluss und mit einer Generierung eines speicher- getriggerten Kontext-Umschaltsignals css. Dabei weist das erfindungsgemäße Verfahren folgende Verfahrensschritte auf:
  • Verfahrensschritt a):
  • Empfangen eines Ladezyklusanzeigeflags load_i von einer Speicherlesezugriffseinheit 5.
  • Verfahrensschritt b):
  • Laden einer zu dem Ladezyklusanzeigeflag load_i zugehörigen Kontextkennung ctx_i und einer zugehörigen Zielregisterkennung reg_i im Falle eines positiven logischen Signalpegels des empfangenen Ladezyklusanzeigeflags load_i.
  • Verfahrensschritt c):
  • Empfangen eines Gültigkeitssignals valid_i von einem Speichersystem 2.
  • Verfahrensschritt d):
  • Laden eines zu dem empfangenen Gültigkeitssignal valid_i zugehörigen Speicherwertes data_i von dem Speichersystem 2 im Falle eines positiven logischen Signalpegels des empfangenen Gültigkeitssignals valid_i.
  • Verfahrensschritt e):
  • Synchronisiertes Zwischenspeichern der geladenen Kontextkennung ctx_i und der geladenen Zielregisterkennung reg_i mit dem zugehörigen geladenen Speicherwert data_i und Weiterleiten der synchronisierten Daten ctx_i, reg_i, data_i.
  • Verfahrensschritt f):
  • Generieren eines Kontext-Umschaltsignals css, falls das empfangene Ladezyklusanzeigeflag load_i einen positiven logischen Signalpegel und das empfangene Gültigkeitssignal valid_i einen negativen logischen Signalpegel aufweisen.
  • Obwohl die vorliegende Erfindung vorstehend anhand bevorzugter Ausführungsbeispiele beschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Art und Weise modifizierbar. Beispielsweise ist die Logik der Anzeigeflags einfach umkehrbar.
  • 1
    Multithread-Prozessor
    2
    Speichersystem
    31–36
    Speicherstelle
    4
    Prozessorpipeline
    5
    Speicherlesezugriffseinheit
    6
    Synchronisationseinheit
    7
    Befehlsdecodiereinheit
    8
    Befehlsausführungseinheit
    9
    Zurückschreibeeinheit
    10
    erster FIFO-Speicher
    11
    zweiter FIFO-Speicher
    12
    erster Multiplexer
    13
    zweiter Multiplexer
    14
    Logikschaltung
    151
    erster Befehlszwischenspeicher.
    152
    zweiter Befehlszwischenspeicher
    req
    Anforderung
    adr
    Speicheradresse
    data_i
    Speicherwert
    load_i
    Ladezyklusanzeigeflag
    ctx_i
    Kontextkennung
    reg_i
    Zielregisterkennung
    data_o
    Ausgangsspeicherwert
    valid_i
    Gültigkeitssignal
    ctx_o
    Ausgangskontextkennung
    reg_o
    Ausgangszielregisterkennung
    adr_o
    Ausgangsspeicheradresse
    PB
    Programmbefehl
    LB
    Ladebefehl
    css
    Kontext-Umschaltsignal
    empty_10
    Leeranzeigeflag für den ersten FIFO-Speicher
    empty_11
    Leeranzeigeflag für den zweiten FIFO-Speicher
    push_10
    erstes Push-Signal
    push_11
    zweites Push-Signal
    pop_10
    erstes Pop-Signal
    pop_11
    zweites Pop-Signal

Claims (17)

  1. Multithread-Prozessor (1) mit einer Prozessor-Pipeline (4), die aufweist: – eine Synchronisationseinheit (6) als eine Prozessor-Pipelinestufe, welche bei einem Empfangen eines Ladezyklusanzeigeflags (load_i) mit einem positiven logischen Signalpegel, welches bei Vorliegen eines Ladebefehls (LB) auf den positiven logischen Signalpegel gesetzt wird und angibt, dass ein Ladezyklus auf ein Speichersystem (2) durchgeführt wird, von einer Speicherlesezugriffseinheit (5) als eine weitere der Synchronisationseinheit (6) vorgeschalteten Prozesser-Pipelinestufe eine Kontextkennung (ctx_i) und eine Zielregisterkennung (reg_i) und bei einem Empfangen eines Gültigkeitssignals (valid_i) mit einem positiven logischen Signalpegel von einer Speichersystem (2) einen entsprechenden Speicherwert (data_i) lädt, die Kontextkennung (ctx_i), die Zielregisterkennung (reg_i) und den Speicherwert (data_i) zwischenspeichert und synchronisiert an eine nachgeordnete Pipelinestufe (9) weiterleitet, und welche eine Logikschaltung (14) aufweist, die bei Empfangen des Ladezyklusanzeigeflags (load_i) mit einem positiven logischen Signalpegel und des Gültigkeitssignals (valid_i) mit einem negativen logischen Signalpegel ein Kontext-Umschaltsignal (css) generiert, wobei ein positiver logischer Signalpegel des Gültigkeitssignals (valid_i) angibt, dass der Speicherwert (data_i) gültig ist.
  2. Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet, dass der Multithread-Prozessor (1) weiter aufweist: – ein Speichersystem (2), welche eine Vielzahl von Speicherstellen (3136) aufweist, wobei eine Speicherstelle (3136) durch eine Speicheradresse (adr) adressierbar ist und einen veränderbaren Speicherwert (data_i, data_o) speichert und welche als Antwort auf eine an das Speichersystem (2) übertragene Anforderung (req) und Spei cheradresse (adr) den entsprechenden Speicherwert (data_i) bereitstellt und das zugehörige Gültigkeitssignal (valid_i) mit einem positiven logischen Signalpegel an die Synchronisationseinheit (6) überträgt; – einer Prozessorpipeline (4) zur Verarbeitung von Programmbefehlen (PB, LB) verschiedener Threads, wobei die Prozessorpipeline (4) wenigstens aufweist: – eine Speicherlesezugriffseinheit (5), welche bei einem Ladebefehl (LB) das Ladezyklusanzeigeflag (load_i) mit einem positiven logischen Signalpegel zur Anzeige eines Ladezyklus auf den das Speichersystem (2) an die Synchronisationseinheit (6) überträgt und die Kontextkennung (ctx_i) zur Angabe des entsprechenden Kontextes des Ladebefehls (LB) und die Zielregisterkennung (reg_i) zur Angabe der Zielspeicherstelle (3136) des Ladebefehls (LB) bereitstellt; und – die Synchronisationseinheit (6).
  3. Multithread-Prozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Synchronisationseinheit (6) einen ersten FIFO-Speicher (10) aufweist, in welchem jeweils die Kontextkennung (ctx_i) und die zugehörige Zielregisterkennung (reg_i) zusammen zwischengespeichert werden.
  4. Multithread-Prozessor nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Synchronisationseinheit (6) einen zweiten FIFO-Speicher (11) aufweist, in welchem jeweils der Speicherwert (data_i) zwischengespeichert wird.
  5. Multithread-Prozessor nach den Ansprüchen 3 und 4, dadurch gekennzeichnet, dass der erste FIFO-Speicher (10) und der zweite FIFO-Speicher (11) jeweils als ein flankengesteuertes Flip-Flop ausgebildet sind.
  6. Multithread-Prozessor nach den Ansprüchen 3 und 4, dadurch gekennzeichnet, dass der erste FIFO-Speicher (10) und der zweite FIFO-Speicher (11) jeweils ein Leeranzeigeflag (empty_10, empty_11) ausgangsseitig auf einen positiven logischen Signalpegel setzen, falls der entsprechende FIFO-Speicher (10, 11) leer ist.
  7. Multithread-Prozessor nach Anspruch 6, dadurch gekennzeichnet, dass die Synchronisationseinheit (6) einen ersten Multiplexer (12) und einen zweiten Multiplexer (13) aufweist, welche mittels der Logikschaltung (14) steuerbar sind und die FIFO-Speicher (10, 11) kurzschließen, falls die beiden Leeranzeigeflags (empty_10, empty_11), das anliegende Ladezyklusanzeigeflag (load_i) und das anliegende Gültigkeitssignal (valid_i) jeweils auf einen positiven logischen Signalpegel gesetzt sind.
  8. Multithread-Prozessor nach Anspruch 7, dadurch gekennzeichnet, dass die Logikschaltung (14) den ersten Multiplexer (12) und den zweiten Multiplexer (13) mittels eines einzigen Steuersignals (S) steuert.
  9. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Synchronisationseinheit (6) einen Programmbefehl (PB, LB), welcher nicht einen Speicherwert (data_i) einer Speicherstelle (3136) benötigt, dessen zugehörige Zielregisterkennung (reg_i) in dem ersten FIFO-Speicher (10) zwischengespeichert ist, ohne Verzögerung an die nachgeordnete Pipelinestufe (9) weiterleitet.
  10. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Synchronisationseinheit (6) einen Programmbefehl (PB, LB), welcher in eine Speicherstelle (3136) schreibt, dessen zugehörige Zielregisterkennung (reg_i) in dem ersten FIFO-Speicher (10) zwischengespeichert ist, ohne Verzögerung weiterleitet und den nachfolgenden, von der entsprechenden Speicherstelle (3136) übertragenen, zugehörigen Speicherwert (data_i) ignoriert.
  11. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die der Synchronisationseinheit (6) nachgeordnete Pipelinestufe (9) als eine Zurückschreibeeinheit ausgebildet ist, welche von der Synchronisationseinheit (6) als Ausgangsspeicherwerte (data_o) bereitgestellte Speicherwerte (data_i) unter einer mittels der zugehörigen Zielregisterkennung (reg_i) gebildeten Ausgangsspeicheradresse (adr_o) in das entsprechende Register (3136) schreibt.
  12. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass der Multithread-Prozessor (1) für einen jeden zu bearbeitenden Thread einen Kontextzwischenspeicher (151, 152) aufweist, in welchen jeweils Programmbefehle (PB, LB) eines bestimmten Threads zwischenspeicherbar sind, welche wenigstens eine Pipelinestufe vor der Speicherlesezugriffseinheit (5) angeordnet sind und welche jeweils mittels des Kontext-Umschaltsignals (css) steuerbar sind.
  13. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Prozessorpipeline (4) des Multithread-Prozessors (1) wenigstens durch eine Befehlsdecodiereinheit (7) zur Decodierung eines Programmbefehls (PB, LB), einer Befehlsausführungseinheit (8) zur Ausführung des decodierten Programmbefehls (PB, LB), der Speicherlesezugriffseinheit (5), der Synchronisationseinheit (6) und der Zurückschreibeeinheit (9) ausgebildet ist.
  14. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass der Multithread-Prozessor (1) einen Programmbefehl (PB), falls dieser kein Datenzugriffsbefehl oder Ladebefehl (LB) ist, in einer vorbestimmten Anzahl von Taktzyklen bearbeitet.
  15. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Prozessorpipeline (4) des Multithread-Prozessors (1) aus einem Teil eines DSP-Prozessors, eines Protokoll-Prozessors oder eines Universal-Prozessors besteht.
  16. Multithread-Prozessor nach einem oder mehreren der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Befehlsausführungseinheit (8) eine arithmetisch-logische Einheit (ALU) oder eine Adressengeneratoreinheit (AGU) ist.
  17. Verfahren zum Betreiben eines Multithread-Prozessors (1) nach Anspruch 1 oder einem der Ansprüche 2 bis 16 mit einer Synchronisation eines Befehlsflusses mit einem zugehörigen Datenfluss und mit einer Generierung eines speicher-getriggerten Kontext-Umschaltsignals (css), mit folgenden Verfahrensschritten: (a) Empfangen eines Ladezyklusanzeigeflags (load_i) von einer Speicherlesezugriffseinheit (5), welches bei Vorliegen eines Ladebefehls (LB) auf den positiven logischen Signalpegel gesetzt wird und angibt, dass ein Ladezyklus auf ein Speichersystem (2) durchgeführt wird, (b) Laden einer zu dem Ladezyklusanzeigeflag (load_i) zugehörigen Kontextkennung (ctx_i) und einer zugehörigen Zielregisterkennung (reg_i) im Falle eines positiven logischen Signalpegels des empfangenen Ladezyklusanzeigeflags (load_i); (c) Empfangen eines Gültigkeitssignals (valid_i) von einem Speichersystem (2); (d) Laden eines zu dem empfangenen Gültigkeitssignal (valid_i) zugehörigen Speicherwertes (data_i) von dem Speichersystem (2) im Falle eines positiven logischen Signalpegels des empfangenen Gültigkeitssignals (valid_i); (e) Zwischenspeichern der geladenen Kontextkennung (ctx_i), der geladenen Zielregisterkennung (reg_i) und des zugehörigen geladenen Speicherwertes (data_i) und synchronisiertes Weiterleiten der zwischengespeicherten Daten (ctx_i, reg_i, data_i); und (f) Generieren eines Kontext-Umschaltsignals (css), falls das empfangene Ladezyklusanzeigeflag (load_i) einen positiven logischen Signalpegel und das empfangene Gültigkeitssignal (valid_i) einen negativen logischen Signalpegel aufweisen, wobei ein positiver logischer Signalpegel des Gültigkeitssignals (valid_i) angibt, dass der Speicherwert (data_i) gültig ist.
DE102005009083A 2005-02-28 2005-02-28 Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen Expired - Fee Related DE102005009083B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102005009083A DE102005009083B4 (de) 2005-02-28 2005-02-28 Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen
US11/364,834 US20060230258A1 (en) 2005-02-28 2006-02-28 Multi-thread processor and method for operating such a processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102005009083A DE102005009083B4 (de) 2005-02-28 2005-02-28 Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen

Publications (2)

Publication Number Publication Date
DE102005009083A1 DE102005009083A1 (de) 2006-09-07
DE102005009083B4 true DE102005009083B4 (de) 2007-05-10

Family

ID=36847996

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005009083A Expired - Fee Related DE102005009083B4 (de) 2005-02-28 2005-02-28 Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen

Country Status (2)

Country Link
US (1) US20060230258A1 (de)
DE (1) DE102005009083B4 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9229847B1 (en) * 2012-04-18 2016-01-05 Open Invention Network, Llc Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems
US9830224B2 (en) * 2013-03-15 2017-11-28 Nvidia Corporation Selective fault stalling for a GPU memory pipeline in a unified virtual memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295600B1 (en) * 1996-07-01 2001-09-25 Sun Microsystems, Inc. Thread switch on blocked load or store using instruction thread field
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295600B1 (en) * 1996-07-01 2001-09-25 Sun Microsystems, Inc. Thread switch on blocked load or store using instruction thread field
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor

Also Published As

Publication number Publication date
DE102005009083A1 (de) 2006-09-07
US20060230258A1 (en) 2006-10-12

Similar Documents

Publication Publication Date Title
DE19983330B4 (de) Computerprozessor mit einem Wiederholsystem mit einem Stufungsabschnitt zum getakteten Verzögern und Verfahren zum Verarbeiten eines Befehls in einem solchen Prozessor
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE10353268B3 (de) Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE3914265C2 (de)
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE19983687B4 (de) Verarbeitung geordneter Datenanforderungen an einen Speicher
DE69831344T2 (de) Effiziente verarbeitung von gebündelten sprungbefehlen
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
DE10296989T5 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
DE102018126001A1 (de) Synchronisation in einem Multi-Kachel-Verarbeitungsarray
DE3933849A1 (de) Prozessorgesteuerte schnittstelle
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE10306051B4 (de) Verfahren zum Optimieren der Verarbeitung von Befehlen durch einen Prozessor und Prozessoren zur Durchführung der Verfahren
DE10113191B4 (de) Spekulatives Vorausräumen von Daten in einem Prozessorsystem mit einer ungeordneten Ausführung
DE19526008A1 (de) Vertikal partitionierter, primärer Befehls-Cache-Speicher
DE102004009610B4 (de) Heterogener paralleler Multithread-Prozessor (HPMT) mit geteilten Kontexten
DE10353267B3 (de) Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
DE102005009083B4 (de) Multithread-Prozessor mit einer Synchronisationseinheit und Verfahren zum Betreiben eines solchen
DE2906685C2 (de)
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor
DE10001168A1 (de) Ausgabe-Fifo-Datenübertragungssteuereinrichtung
DE19782105C2 (de) Prozessorkern und Verfahren zum Unterstützen unterschiedlicher Befehlsheranholeinheiten in einer Pipeline

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