DE112004002505T5 - Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor - Google Patents

Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor Download PDF

Info

Publication number
DE112004002505T5
DE112004002505T5 DE112004002505T DE112004002505T DE112004002505T5 DE 112004002505 T5 DE112004002505 T5 DE 112004002505T5 DE 112004002505 T DE112004002505 T DE 112004002505T DE 112004002505 T DE112004002505 T DE 112004002505T DE 112004002505 T5 DE112004002505 T5 DE 112004002505T5
Authority
DE
Germany
Prior art keywords
thread
logical
threads
state
physical
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.)
Withdrawn
Application number
DE112004002505T
Other languages
English (en)
Inventor
Per Hillsboro Hammarlund
Stephan Portland Jourdan
Pierre Michaud
Alexandre Hillsbor Farcy
Morris Hillsboro Marden
Robert Hillsboro Hinton
Douglas Beaverton Carmean
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112004002505T5 publication Critical patent/DE112004002505T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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

Verfahren zum Managen von Threads, umfassend:
Unterstützen einer Mehrzahl von logischen Threads mit einer Mehrzahl von gleichzeitigen physischen Threads.

Description

  • Erfindungsgebiet
  • Die Ausführungsformen der vorliegenden Erfindung beziehen sich allgemein auf Computer. Insbesondere beziehen sich die Ausführungsformen auf die Verbesserung von Computerarchitekturen mit gleichzeitigen Ausführungs-Threads.
  • Diskussion
  • Mit der zunehmenden Nachfrage nach einer verbesserten Funktionalität in modernen Computern sehen sich Konstrukteure und Hersteller von Prozessoren vor eine Vielzahl von Problemen gestellt. Zum Beispiel hat der ständige Anstieg im Einsatz des Internets und von Multimedienanwendungen dazu geführt, dass mehrere Prozesse oder Ausführungs-Threads gleichzeitig Zugriff auf die Prozessor- und Speicherressourcen verlangen. Obwohl Fortschritte wie Hyper-Threading, wobei einem einzelnen Prozessor ermöglicht wird, gleichzeitig viele Threads zu benutzen, den Prozessordurchsatz erhöht haben, gibt es weiterhin reichlich Verbesserungsmöglichkeiten. Insbesondere besteht der konventionelle Ansatz darin, die logische Komponente des Threads an die physische Komponente des Threads zu koppeln. Leider kann das Koppeln der logischen Komponente des Threads an die physische Komponente des Threads zu Problemen führen, sowohl was den Durchsatz als auch die Spekulation betrifft. Zum Beispiel bestünde ein Ansatz zur Erhöhung des Durchsatzes darin, die Anzahl der gleichzeitigen Threads zu erhöhen. Physische Ressourcen in einem Prozessor sind jedoch durch eine Reihe von Kostenfaktoren begrenzt, die sich sowohl auf die Konstruktion als auch die Herstellung beziehen. Daraus ergibt sich, daß das Ausmaß, in dem der Prozessordurchsatz durch Erhöhung der Anzahl von Threads erhöht werden kann, durch praktische Schwierigkeiten begrenzt ist. Es ist daher ein Multi-Threading-Ansatz erforderlich, mit dem die effektive Anzahl gleichzeitiger Threads erhöht werden kann, ohne die tatsächliche Anzahl von Threads erhöhen zu müssen.
  • Des weiteren kann Spekulation, die es der logischen Komponente ermöglichen würde, auf mehr als einer der physischen Thread-Komponenten auszuführen, nicht mit der konventionellen Technik des Koppelns der logischen Komponente jedes Threads an die physische Komponente des Threads erzielt werden. Daraus ergibt sich, daß das Ausmaß, bis zu dem die Prozessorleistung verbessert werden kann, ebenfalls begrenzt ist. Ein Multi-Threading-Ansatz ist daher notwendig, der spekulative Ausführung ermöglicht.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die verschiedenen Vorteile der erfindungsgemäßen Ausführungsformen wird ein Fachmann beim Lesen der folgenden Spezifikation und der beigefügten Ansprüche unter Bezugnahme auf die folgenden Zeichnungen erkennen, in denen:
  • 1 ein Diagramm einer beispielhaften Zustandsmaschine gemäß einer erfindungsgemäßen Ausführungsform ist;
  • 2 ein Ablaufdiagramm eines beispielhaften Prozesses ist, mit dem ein logischer Thread gemäß einer erfindungsgemäßen Ausführungsform im aktiven Zustand gehalten werden kann;
  • 3 ein Ablaufdiagramm eines beispielhaften Prozesses ist, mit dem ein logischer Thread gemäß einer erfindungsgemäßen Ausführungsform im Drain-Zustand gehalten werden kann;
  • 4 ein Ablaufdiagramm eines beispielhaften Prozesses ist, mit dem ein logischer Thread gemäß einer erfindungsgemäßen Ausführungsform im Stillstandszustand gehalten werden kann;
  • 5 ein Ablaufdiagramm eines beispielhaften Prozesses ist, mit dem ein logischer Thread gemäß einer erfindungsgemäßen Ausführungsform im Wartezustand gehalten werden kann;
  • 6 ein Diagramm einer Thread-Management-Tabelle gemäß einer erfindungsgemäßen Ausführungsform ist;
  • 7 ein Diagramm einer beispielhaften Durchsatz-Betriebsweise gemäß einer erfindungsgemäßen Ausführungsform ist;
  • 8 ein Diagramm einer beispielhaften spekulativen Betriebsweise gemäß einer erfindungsgemäßen Ausführungsform ist; und
  • 9 ein Diagramm einer beispielhaften Computersystems gemäß einer erfindungsgemäßen Ausführungsform ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Systeme und Verfahren zum Managen von Threads eignen sich zur Unterstützung einer Mehrzahl logischer Threads mit einer Mehrzahl gleicherzeitiger physischer Threads, um eine größere Effizienz zu erzielen, ohne die mit herkömmlichen Ansätzen verbundenen Herstellungs- und Design-Nachteile in Kauf nehmen zu müssen. In 1 ist ein Diagramm 10 veranschaulicht, welches eine Technik darstellt, wie jeder von mehreren logischen Threads in einem Wartezustand 12, einem aktiven Zustand 14, einem Drain-Zustand 16 und einem Stillstandszustand 18 gehalten werden kann. Jeder logische Thread bleibt so lange in einem aktiven Zustand 14, bis ein oder mehrere Triggerereignisse vorliegen, die sich auf mehrere Probleme, wie Latenz, Fairness, Priorität usw. beziehen können. Wenn ein Triggerereignis vorliegt, tritt der logische Thread in den Drain-Zustand 16 ein, in dem der Prozessor nach einem unterbrechbaren Punkt im logischen Thread sucht. Ein unterbrechbarer Punkt wird als Punkt definiert, für den der Zustand des logischen Threads gesichert werden kann. Der unterbrechbare Punkt richtet sich auch nach dem Typ des angetroffenen Triggerereignisses. Nachdem ein unterbrechbarer Punkt angetroffen wurde, wird der logische Thread so lange in einen Stillstandszustand 18 versetzt, bis entweder keins der Triggerereignisse vorliegt oder ein anderes Ereignis mit höherer Priorität als das ursprüngliche Triggerereignis gemeldet wird. Wenn einer dieser Fälle vorkommt, wird der logische Thread in den Wartezustand 12 umgeschaltet. Wenn zum Beispiel das Triggerereignis ein „Cache Miss" ist, bleibt der logische Thread so lange im Stillstandszustand 18, bis der Speicher das „Cache Miss" bearbeitet hat. Der logische Thread verbleibt so lange im Wartezustand, bis ein verfügbarer physischer Thread angetroffen wird und der logische Thread in den aktiven Zustand 14 umgeschaltet werden kann. Während folglich logische Threads aus dem aktiven Zustand 14 entfernt werden, können andere logische Threads nahtlos in den aktiven Zustand 14 umgeschaltet werden. Dies führt zu einem einzigartigen Entkopplungseffekt zwischen den logischen Threads und den gleichzeitigen physischen Threads.
  • Mit Bezug auf 2 ist ein Ansatz zum Halten eines logischen Threads im aktiven Zustand in größerem Detail dargestellt. Beginnend mit Verarbeitungsblock 20 werden die mit einem logischen Thread verbundenen Makroanweisungen auf einem NIP (Hext Instruction Pointer) eines physischen Threads abgebildet. Ein logischer Thread kann als Folge von Makroanweisungen, die zu Mikro-Operationen (oder uops) dekodiert werden, betrachtet werden. Zum Beispiel kann eine „Call" Makroanweisung zu „Store", „Test" und „Jump" uops dekodiert werden. Jeder gleichzeitige physische Thread weist einen entsprechenden NIP auf, der effektiv die Adresse der zu verarbeitenden Makroanweisung darstellt. Während demzufolge Makroanweisungen eines gegebenen logischen Threads auf dem NIP abgebildet werden, können sie geholt, zu uops dekodiert und in den Rest der Prozessor-Pipeline eingespeist werden.
  • Diese Techniken gelten sowohl für RISC-Architekturen (RISC = Reduced Instruction Set Computer) als auch für CISC-Architekturen (CISC = Complex Instruction Set Computer). Die Umwandlung von Makroanweisungen in Mikrooperationsfolgen ist nicht unbedingt erforderlich.
  • In Block 22 wird der Prozessor auf eine oder mehrere Triggerereignisse überwacht. Triggerereignisse sind zum Beispiel Speicherlatenz-Ereignisse, „Schlaf-Anforderungen" und Thread-Prioritätsereignisse, sie sind aber nicht auf diese Ereignisse beschränkt. Zum Beispiel kann ein Speicherlatenz-Ereignis ein Cache Miss sein, bei dem Daten mit einer relativ langen Latenz aus dem Speicher zu lesen sind. In diesem Fall wird das Triggerereignis von der Ausführungs-Pipeline an die Thread-Management-Logik gesendet. Ein weiteres Beispiel für ein Speicherlatenz-Ereignis ist ein Cache Miss, bei dem Daten oder Anweisungen aus Speichern geholt werden müssen, die weiter unten in der Speicherhierarchie liegen (eine längere Latenz haben). Die Vorhersage von Cache Misses kann mit jeder verfügbaren Technik erfolgen. Zum Beispiel könnte ein Algorithmus den im Cache fehlenden Lade-Mikooperationen eine höhere Wahrscheinlichkeit zuweisen, wenn zur Dekodierungszeit die Lade-Mikrooperation jünger als eine nicht aufgelöste Abzweigung ist. Die jeweilige Vorhersagetechnik steht nicht im Mittelpunkt der vorliegenden Diskussion, und das obige Beispiel ist nur eine Möglichkeit, ein Triggerereignis zu erzeugen. Ein Triggerereignis kann auch die Tatsache sein, daß das Vertrauen in die Vorhersage einer bedingten Abzweigung schwach ist – in einer Situation, in der verfügbare Threads im Wartezustand sind, bringt es vielleicht mehr, diese logischen Threads auszuführen als den aktuellen logischen Thread im spekulativen Modus auszuführen. Das Vertrauen in die Stärke der Vorhersage kann auch von der Priorität des aktuellen logischen Threads abhängig sein.
  • Ein weiterer Triggereignistyp ist eine Schlafanforderung, zum Beispiel, wenn eine HALT- oder MONITOR/MWAIT Anweisung ausgeführt wird, die die Thread-Management-Architektur anweisen könnte, die Verarbeitung eines logischen Threads zu unterbrechen, bis eine Speicherung auf eine bestimmte Adresse angetroffen wird, oder bis ein „Wiederbelebungs"-Signal empfangen wird (zum Beispiel ein externes Interrupt). Ein Triggerereignis kann auch ein Interrupt-Befehl von einem anderen logischen Thread sein, der eine höhere Priorität als der aktive logische Thread hat. Ein Beispiel für einen solchen logischen Thread mit hoher Priorität könnte ein Bildschirmaktualisierungs-Thread sein, der ein unerwünschtes „Flickern" des Bildschirms bewirkt, wenn der Zugriff auf einen physischen Thread fehlschlägt. Des weiteren könnte ein Thread-Prioritätsereignis gemäß einer Fairness-Regel eintreten, die den ungewichteten oder gewichteten Zugriff auf gleichzeitige physische Threads durch die logischen Threads gestattet.
  • Auf jeden Fall, wenn bei Block 24 bestimmt wird, daß ein oder mehrere Triggerereignisse vorliegen, kann das Abbilden bei Block 26 angehalten und der logische Thread bei Block 28 auf den Drain-Zustand umgeschaltet werden. Bei Block 30 wird der logische Thread im aktiven Zustand gehalten, bis ein oder mehrere Triggerereignisse vorliegen.
  • Mit Bezug auf 3 ist ein Ansatz zum Halten eines logischen Threads im Drain-Zustand in größerem Detail dargestellt. Bei Block 32 wird der logische Thread auf einen unterbrechbaren Punkt überwacht. Wie bereits besprochen, werden während der Verarbeitung eines logischen Threads typisch Makroanweisungen in eine oder mehrere uops dekodiert. Die uops können, wie angemessen, als entweder den Anfang einer Makroanweisung (BOM) oder das Ende einer Makroanweisung (EOM) bezeichnend markiert werden. In diesem Fall könnte der unterbrechbare Punkt mit einer uop zusammenfallen, die mit EOM markiert ist. Ein solcher Ansatz würde bestimmten Schwierigkeiten vorbeugen, die mit gegenseitiger Abhängigkeit verbunden sind, und würde die Effizienz weiter verbessern. Der unterbrechbare Punkt könnte auch lediglich dem Entfernen der letzten uop aus dem betreffenden logischen Thread entsprechen. Wenn bei Block 34 bestimmt wird, dass ein unterbrechbarer Punkt angetroffen wurde, wird bei Block 36 der logische Thread in den Stillstandszustand umgeschaltet. Bei Block 38 wird der logische Thread im Drain-Zustand gehalten, bis ein unterbrechbarer Punkt angetroffen wird.
  • Mit Bezug auf 4 ist ein Ansatz zum Halten eines logischen Threads im Stillstandszustand in größerem Detail dargestellt. Im Einzelnen wird bei Block 40 der Prozessor auf ein oder mehrere Triggervereignisse überwacht. Wie bereits erklärt, können Triggerereignisse zum Beispiel Speicherlatenz-Ereignisse, „Schlaf-Anforderungen" und Thread-Prioritätsereignisse usw. sein, sie sind aber nicht auf diese Ereignisse beschränkt. Wenn bei Block 42 bestimmt wird, dass keins der Triggerereignisse vorliegt, wird bei Block 44 der logische Thread in den Wartezustand umgeschaltet. Bei Block 46 wird der logische Thread im Stillstandszustand gehalten, bis keins der Triggerereignisse vorliegt. Zum Beispiel wird der logische Thread im Stillstandszustand gehalten, bis ein "Cache Miss" Triggerereignis bearbeitet wurde und die Daten anwesend sind. Es wird darauf hingewiesen, daß das Triggerereignis, welches bewirkt, daß der logische Thread in den Drain-Zustand umgeschaltet wird, das gleiche oder ein anderes Ereignis sein kann als das, mit dem der logische Thread aus dem Stillstandszustand herausversetzt wird.
  • Es wird darauf hingewiesen, daß das Triggerereignis, welches bewirkt, daß der logische Thread in den Drain-Zustand umgeschaltet wird, das gleiche oder ein anderes Ereignis sein kann als das, mit dem der logische Thread aus dem Stillstandszustand herausversetzt wird. Zum Beispiel kann der logische Thread durch Ausführen einer HALT-Anweisung in den Stillstandszustand versetzt werden und kann so lange im Stillstandszustand verharren, bis ein externes Interrupt empfangen wird. Der logische Thread kann auch durch Ausführen einer Lade-Anweisung, die das Cache verfehlt, in den Stillstandszustand versetzt werden und durch den Empfang eines externen Interrupts aus dem Stillstandszustand herausgezwungen werden, weil das Bearbeiten eines externen Interrupts oft wichtiger ist, als darauf zu warten, bis ein spekulatives Cache Miss abgewickelt ist.
  • Mit Bezug auf 5 ist ein Ansatz zum Halten eines logischen Threads im Wartezustand in größerem Detail dargestellt. Im Einzelnen wird bei Block 48 die Mehrzahl der gleichzeitigen physischen Threads auf einen verfügbaren physischen Thread überwacht. Wenn bei Block 50 bestimmt wird, daß der verfügbare physische Thread angetroffen wurde, wird bei Block 52 der logische Thread in den aktiven Zustand umgeschaltet. Bei Block 54 wird der logische Thread im Wartezustand gehalten, bis der verfügbare physische Thread angetroffen wird. Folglich sind alle logischen Threads, die sich im Wartezustand befinden, bereit, auf einem physischen Thread ausgeführt zu werden. Wenn ein physischer Thread verfügbar wird, wird ein logischer Thread ausgewählt und in den aktiven Zustand versetzt. Ein physischer Thread kann gemäß den oben genannten Beispielen verfügbar werden. Die Auswahl eines logischen Threads kann auf der Priorität zwischen den logischen Threads und/oder auf Fairness-Erfordernissen basieren, ist aber nicht darauf begrenzt.
  • Mit Bezug auf 6 ist eine Thread-Management-Tabelle 56 dargestellt. Die Thread-Management-Tabelle 56 speichert logische Thread-Informationen, die einen Zustand und ein oder mehrere Triggerereignisse für jeden der Mehrzahl von logischen Threads identifizieren können. Zum Beispiel befindet sich der dargestellte T0 im aktiven Zustand und kann durch eine spezifische Speicheranforderung oder eine externe Speicherung auf die Überwachungsadresse AF09 getriggert werden. Thread T1 andererseits befindet sich im Stillstandszustand und wird durch die externe Speicherung auf die Überwachungsadresse AF09 und einen „MWAIT" Befehl getriggert. Weitere Information, wie der bei Aktivierung zu benutzende IP und das zur Unterstützung der logischen Threads benötigte Hardware-Ressourcen-Profil, kann ebenfalls in der Thread-Management-Tabelle 56 gespeichert werden. In diesem Zusammenhang wird darauf hingewiesen, daß die Ressourcen nicht gleichmäßig auf all die logischen Threads verteilt werden müssen. Ressourcen sind unter anderem die temporären Register im Prozessor, die zur Unterstützung schneller spekulativer Ausführung dienen, wobei mehr Ressourcen typische schnellere Ausführung bedeuten. Tatsächlich kann jede Ressource im System in das Hardware-Ressourcen-Profil aufgenommen und in dieser Weise gesteuert werden. Zum Beispiel könnten sehr anspruchsvollen logischen Threads mehr Ressourcen als weniger anspruchsvollen Threads zugewiesen werden. Ressourcenzuweisung kann auch den Einsatz von Priorität, Leistungsrückmeldung oder Fairness-Einsatz beinhalten, ist jedoch nicht darauf begrenzt. Es wird ferner darauf hingewiesen, daß die Komponenten der Thread-Management-Tabelle 56 entsprechend den praktischen Implementierungsbelangen in verschiedenen Teilen des Prozessors verteilt werden können und nicht zentral angeordnet sein müssen.
  • In 7 ist ein Beispiel dargestellt, in dem die Mehrzahl der logischen Threads 58 größer als die Mehrzahl der gleichzeitigen physischen Threads 60 ist. In einem solchen Fall wird die Thread-Management-Architektur im „Durchsatzmodus" betrieben, weil die gleichzeitigen physischen Threads 60 durch kontinuierliche Aktivierung der verarbeitungsbereiten logischen Threads so beschäftigt wie möglich gehalten werden können. In 8 andererseits ist die Anzahl der logischen Threads 62 kleiner als die Mehrzahl der gleichzeitigen physischen Threads 64, wodurch ein spekulativer Betriebsmodus erzielt wird. Spekulation wird dadurch erzielt, daß zusätzliche gleichzeitige physische Threads dem gleichen logischen Thread zugewiesen werden, wenn Programmaufruf e oder andere indirekte Programmstrukturen angetroffen werden. Im Falle eines Programmaufrufs läßt sich zum Beispiel erkennen, daß ein ordnungsgemäß geschriebenes Programm mit einer " Call"-Anweisung im Endeffekt zum „Call"-Punkt zurückkehrt. Dementsprechend kann es wünschenwert sein, den zusätzlichen gleichzeitigen physischen Thread am erwarteten Rückkehrpunkt zu starten und die spekulative Rückkehr gegenüber der tatsächlichen Rückkehr zu prüfen, wenn die tatsächliche Rückkehr eintritt. Wenn die Prüfung erfolgreich ist, sind die uops, die anhand des zusätzlichen gleichzeitigen physischen Threads verarbeitet wurden, gültig. Es wird außerdem darauf hingewiesen, daß eine Thread-Management-Architektur ohne weiteres für Hybrid-Betrieb konfiguriert werden kann, wobei die oben beschriebenen Durchsatz- und Spekulationsmoden gleichzeitig betrieben werden.
  • Mit Bezug auf 9 ist ein Computersystem 66 dargestellt. Computersystem 66 weist einen Systemspeicher 68 zum Speichern von Makroanweisungen auf. Der Systemspeicher kann einen Direktzugriffsspeicher (RAM), einen Nurlesespeicher (ROM), einen Flash-Speicher usw. enthalten. Ein Systembus 70 ist an den Systemspeicher und einen Prozessor 72 gekoppelt, um Makroanweisungen abzurufen. Der Prozessor 72 weist eine Thread-Management-Architektur 74 mit einer Zustandsmaschine 76 und einem Hardware-Sequenzer 78 auf. Die Zustandsmaschine 76 kann auf ähnliche Weise wie die im Diagramm 10 (1) dargestellte Zustandsmaschine arbeiten. Die Zustandsmaschine 76 unterstützt eine Mehrzahl von den Makroanweisungen entsprechenden logischen Threads mit einer Mehrzahl gleichzeitiger physischer Threads, indem sie jeden der Mehrzahl von logischen Threads im Wartezustand, im aktiven Zustand, im Drain-Zustand oder im Stillstandszustand hält. Der Hardware-Sequenzer 78 überwacht die Mehrzahl der gleichzeitigen physischen Threads auf einen verfügbaren physischen Thread, der den logischen Threads entspricht. Die Zustandsmaschine 76 hält die logischen Threads im Wartezustand, bis ein verfügbarer physischer Thread angetroffen wird. Es wird darauf hingewiesen, daß, obwohl im dargestellten Beispiel die der Mehrzahl von logischen Threads entsprechenden Makroanweisungen im Systemspeicher gespeichert werden, Anweisungen und ihre entsprechenden uops auch aus einem „Chip"-Speicher wie einem Verfolgungs-Cache, einem Anweisungs-Cache usw. abgerufen werden können.
  • Es wird ferner darauf hingewiesen, daß die genaue Anzahl von Zuständen, in denen ein logischer Thread existieren kann, je nach Umständen variieren kann. Zum Beispiel kann, um eine tatsächliche Implementierung zu ermöglichen, der Drain-Zustand in viele Zustände aufgeteilt werden, wobei jeder Subzustand ein Teil der Drain-Operation darstellt.
  • Anhand der obigen Beschreibung wird der Fachmann erkennen, daß die allgemeine Lehre der vorliegenden Erfindung in einer Vielfalt von Formen implementiert werden kann. Folglich sollte, obwohl die Erfindung mit Bezug auf bestimmte Beispiele beschrieben wurde, der Geltungsbereich der Erfindung nicht auf diese beschränkt werden, da dem Fachmann nach Studierung der Zeichnungen, der Spezifikation und der nachfolgenden Ansprüche andere Modifikationen einfallen werden.
  • ZUSAMMENFASSUNG
  • Systeme und Verfahren zum Managen von Threads dienen zur Unterstützung einer Mehrzahl von logischen Threads mit einer Mehrzahl von gleichzeitigen physischen Threads, in denen die Anzahl der logischen Threads größer oder kleiner als die Anzahl der physischen Threads sein kann. In einem Ansatz wird jeder der Mehrzahl von logischen Threads in einem Wartezustand, einem aktiven Zustand, einem Drain-Zustand und einem Stillstandszustand gehalten. Eine Zustandsmaschine und ein Hardware-Sequenzer können dazu verwendet werden, den Zustand der logischen Threads auf der Grundlage von Triggerereignissen und abhängig davon umzuschalten, ob in den logischen Threads ein unterbrechbarer Punkt angetroffen wurde. Die logischen Threads laufen auf den physischen Threads, um beispielsweise Prioritäts-, Leistungs- oder Fairnessziele zu erfüllen. Es ist auch möglich, die Ressourcen anzugeben, die für jeden logischen Thread zur Verfügung stehen, um diese und andere Ziele zu erfüllen. In einem Beispiel kann ein einzelner logischer Thread spekulativ mehr als einen physischen Thread benutzen, abhängig von der Auswahl des physischen Threads, der engagiert werden soll.

Claims (36)

  1. Verfahren zum Managen von Threads, umfassend: Unterstützen einer Mehrzahl von logischen Threads mit einer Mehrzahl von gleichzeitigen physischen Threads.
  2. Verfahren nach Anspruch 1, ferner umfassend das Halten jeder der Mehrzahl von logischen Threads in einem Wartezustand, einem aktiven Zustand, einem Drain-Zustand und einem Stillstandszustand.
  3. Verfahren nach Anspruch 2, wobei ein erster logischer Thread im aktiven Zustand gehalten wird, ferner umfassend: Abbilden von mit dem ersten logischen Thread verknüpften Makroanweisungen auf einem NIP (Nächster Anweisungszeiger) eines physischen Threads; und Überwachen eines Prozessors auf ein Triggerereignis; Halten des ersten logischen Threads im aktiven Zustand, bis das Triggerereignis vorliegt.
  4. Verfahren nach Anspruch 3, ferner umfassend: Anhalten des Abbildens, wenn das Triggerereignis vorliegt; und Umschalten des ersten logischen Threads in den Drain-Zustand.
  5. Verfahren nach Anspruch 3, wobei das Triggerereignis mindestens ein Speicherlatenzereignis, eine Schlafanforderung oder ein Thread-Prioritätsereignis umfaßt.
  6. Verfahren nach Anspruch 2, wobei ein erster logischer Thread im Drain-Zustand gehalten wird, ferner umfassend: Überwachen des ersten logischen Threads auf einen unterbrechbaren Punkt; und Halten des ersten logischen Threads im Drain-Zustand, bis der unterbrechbare Punkt angetroffen wird.
  7. Verfahren nach Anspruch 6, ferner umfassend das Umschalten des ersten logischen Threads in den Stillstandszustand, wenn der unterbrechbare Punkt angetroffen wird.
  8. Verfahren nach Anspruch 6, wobei der unterbrechbare Punkt entweder einem Ende einer Makroanweisung im ersten logischen Thread oder einem Zurückziehen einer mit dem ersten logischen Thread verknüpften letzten Mikrooperation entspricht.
  9. Verfahren nach Anspruch 2, wobei ein erster logischer Thread im Stillstandszustand gehalten wird, ferner umfassend: Überwachen eines Prozessors auf ein Triggerereignis; und Halten des ersten logischen Threads im Stillstandszustand, bis das Triggerereignis nicht vorliegt.
  10. Verfahren nach Anspruch 9, ferner umfassend Umschalten des ersten logischen Threads in den Wartezustand, wenn das Triggerereignis nicht vorliegt.
  11. Verfahren nach Anspruch 9, ferner Umschalten des ersten logischen Threads in den Wartezustand, wenn ein anderes Ereignis mit höherer Priorität als das Triggerereignis gemeldet wird.
  12. Verfahren nach Anspruch 9, wobei das Triggerereignis mindestens ein Speicherlatenzereignis, eine Schlafanforderung oder ein Thread-Prioritätsereignis enthält.
  13. Verfahren nach Anspruch 2, wobei ein erster logischer Thread im Wartezustand gehalten wird, ferner umfassend: Überwachen der Mehrzahl von gleichzeitigen physischen Threads auf einen verfügbaren physischen Thread; und Halten des ersten logischen Threads im Wartezustand, bis der verfügbare physische Thread angetroffen wird.
  14. Verfahren nach Anspruch 13, ferner umfassend Umschalten des ersten logischen Threads in den aktiven Zustand, wenn der verfügbare physische Thread angetroffen wird.
  15. Verfahren nach Anspruch 1, ferner umfassend Speichern der Thread-Information in einer Thread-Management-Tabelle, wobei die Thread-Information einen Zustand, ein oder mehrere Triggerereignisse und einen linearen Anweisungszeiger für jeden der Mehrzahl von logischen Threads umfaßt.
  16. Verfahren nach Anspruch 15, wobei die Thread-Information ferner ein Ressourcenerfordernisprofil für jeden der Mehrzahl von logischen Threads umfaßt.
  17. Verfahren nach Anspruch 1, wobei eine Mehrzahl von logischen Threads größer als die Mehrzahl der gleichzeitigen physischen Threads ist.
  18. Verfahren nach Anspruch 1, wobei eine Mehrzahl von logischen Threads kleiner als die Mehrzahl der gleichzeitigen physischen Threads ist.
  19. Verfahren zur Unterstützung einer Mehrzahl von logischen Threads mit einer Mehrzahl von gleichzeitigen physischen Threads, umfassend: Abbilden von mit einem ersten logischen Thread verknüpften Makroanweisungen auf einen NIP (nächster Anweisungszeiger) eines gleichzeitigen physischen Threads; Überwachen eines Prozessors auf ein Triggerereignis zu einer ersten Zeit; Halten des ersten logischen Threads in einem aktiven Zustand, bis das Triggerereignis vorliegt; Anhalten des Abbildens und Umschalten des ersten logischen Threads in einen Drain-Zustand, wenn das Triggerereignis vorliegt; Überwachen des ersten logischen Threads auf einen unterbrechbaren Punkt; Halten des ersten logischen Threads im Drain-Zustand, bis der unterbrechbare Punkt angetroffen wird; Schalten des ersten logischen Threads in einen Stillstandszustand, wenn der unterbrechbare Punkt angetroffen wird; Überwachen eines Prozessors auf ein Triggerereignis zu einer zweiten Zeit; Halten des ersten logischen Threads im Stillstandszustand, bis das Triggerereignis nicht vorliegt; Schalten des ersten logischen Threads in einen Wartezustand, wenn das Triggerereignis nicht vorliegt; Überwachen der Mehrzahl von gleichzeitigen physischen Threads auf einen verfügbaren physischen Thread; Halten des ersten logischen Threads im Wartezustand, bis der verfügbare physische Thread angetroffen wird; und Umschalten des ersten logischen Threads in den Wartezustand, wenn der verfügbare physische Thread angetroffen wird.
  20. Verfahren nach Anspruch 19, wobei das Triggerereignis mindestens ein Speicherlatenzereignis, eine Schlafanforderung oder ein Thread-Prioritätsereignis umfaßt.
  21. Verfahren nach Anspruch 19, wobei der unterbrechbare Punkt entweder einem Ende einer Makroanweisung im ersten logischen Thread oder einem Zurückziehen einer mit dem ersten logischen Thread verknüpften letzten Mikrooperation entspricht.
  22. Verfahren nach Anspruch 19, ferner umfassend Speichern der Thread-Information in einer Thread-Management-Tabelle, wobei die Thread-Information einen Zustand, ein oder mehrere Triggerereignisse und einen linearen Anweisungszeiger für jeden der Mehrzahl von logischen Threads identifiziert.
  23. Thread-Management-Architektur, umfassend: eine Zustandsmaschine zur Unterstützung einer Mehrzahl von logischen Threads mit einer Mehrzahl von gleichzeitigen physischen Threads durch Halten jeder der Mehrzahl von logischen Threads in einem Wartezustand, einem aktiven Zustand, einem Drain-Zustand und einem Stillstandszustand.
  24. Thread-Management-Architektur nach Anspruch 23, wobei die Zustandsmaschine zum Abbilden von mit einem ersten logischen Thread verknüpften Makroanweisungen auf einem nächsten Anweisungszeiger des physischen Threads, zur Überwachung eines Prozessors auf ein Triggerereignis und zum Halten des ersten logischen Threads in einem aktiven Zustand dient, bis das Triggerereignis vorliegt.
  25. Thread-Management-Architektur nach Anspruch 23, wobei die Zustandsmaschine zur Üpberwachung eines ersten logischen Threads auf einen unterbrechbaren Punkt und zum Halten des ersten logischen Threads im Drain-Zustand dient, bis der unterbrechbare Punkt angetroffen wird.
  26. Thread-Management-Architektur nach Anspruch 23, wobei die Zustandsmaschine zur Überwachung eines Prozessors auf ein Triggerereignis und zum Halten eines ersten logischen Threads im Stillstandszustand dient, bis das Triggerereignis nicht vorliegt.
  27. Thread-Management-Architektur nach Anspruch 23, ferner umfassend einen Hardware-Sequenzer, der zur Überwachung der Mehrzahl von gleichzeitigen physischen Threads auf einen verfügbaren physischen Thread dient, wobei die Zustandsmaschine zum Halten des ersten logischen Threads im Wartezustand dient, bis der verfügbare physische Thread angetroffen wird.
  28. Computersystem, umfassend: einen Direktzugriffsspeicher zum Speichern von Makroanweisungen; einen Systembus, der an den Speicher gekoppelt ist; und einen Prozessor, der an den Systembus gekoppelt ist, um die Makroanweisungen abzurufen, wobei der Prozessor eine Thread-Management-Architektur mit einer Zustandsmaschine aufweist, die zur Unterstützung einer Mehrzahl der den Makroanweisungen entsprechenden logischen Threads mit einer Mehrzahl von gleichzeitigen physischen Threads dient, indem jeder der Mehrzahl von logischen Threads in einem Wartezustand, einem aktiven Zustand, einem Drain-Zustand und einem Stillstandszustand gehalten wird.
  29. Computersystem nach Anspruch 28, wobei die Zustandsmaschine zum Abbilden von mit einem ersten logischen Thread verknüpften Makroanweisungen auf einem nächsten Anweisungszeiger eines physischen Threads, zum Überwachen des Prozessors auf ein Triggerereignis und zum Halten des ersten logischen Threads im aktiven Zustand dient, bis das Triggerereignis vorliegt.
  30. Computersystem nach Anspruch 28, wobei die Zustandsmaschine zur Überwachung eines ersten logischen Threads auf einen unterbrechbaren Punkt und zum Halten des ersten logischen Threads im Drain-Zustand dient, bis der unterbrechbare Punkt angetroffen wird.
  31. Computersystem nach Anspruch 28, wobei die Zustandsmaschine zur Überwachung des Prozessors auf ein Triggerereignis und zum Halten des ersten logischen Threads im Stillstandszustand dient, bis das Triggerereignis nicht vorliegt.
  32. Computersystem nach Anspruch 28, wobei die Thread-Management-Architektur ferner einen Hardware-Sequenzer enthält, der zur Überwachung der Mehrzahl von gleichzeitigen physischen Threads auf einen verfügbaren physischen Thread dient, der einem ersten logischen Thread entspricht, wobei die Zustandsmaschine zum Halten des ersten logischen Threads im Wartezustand dient, bis der verfügbare physische Thread angetroffen wird.
  33. Computersystem nach Anspruch 28, ferner umfassend eine Thread-Management-Tabelle zum Speichern von Thread-Information, die zur Identifizierung eines Zustands, eines oder mehrerer Triggerereignisse und eines linearen Anweisungszeigers für jeden der Mehrzahl von logischen Threads dient.
  34. Computersystem nach Anspruch 28, wobei die Thread-Information ferner zur Identifizierung eines Ressourcenerfordernisprofils für jeden der Mehrzahl von logischen Threads dient.
  35. Computersystem nach Anspruch 28, wobei die Mehrzahl der logischen Threads größer als die Mehrzahl der gleichzeitigen physischen Threads sein soll.
  36. Computersystem nach Anspruch 28, wobei die Mehrzahl der logischen Threads kleiner als die Mehrzahl der gleichzeitigen physischen Threads sein soll.
DE112004002505T 2003-12-29 2004-12-20 Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor Withdrawn DE112004002505T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/745,527 2003-12-29
US10/745,527 US7797683B2 (en) 2003-12-29 2003-12-29 Decoupling the number of logical threads from the number of simultaneous physical threads in a processor
PCT/US2004/043036 WO2006057647A2 (en) 2003-12-29 2004-12-20 Decoupling the number of logical threads from the number of simultaneous physical threads in a processor

Publications (1)

Publication Number Publication Date
DE112004002505T5 true DE112004002505T5 (de) 2006-11-23

Family

ID=34886484

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112004003142T Ceased DE112004003142A5 (de) 2003-12-29 2004-12-20 Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor
DE112004002505T Withdrawn DE112004002505T5 (de) 2003-12-29 2004-12-20 Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE112004003142T Ceased DE112004003142A5 (de) 2003-12-29 2004-12-20 Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor

Country Status (6)

Country Link
US (1) US7797683B2 (de)
JP (1) JP4599365B2 (de)
KR (1) KR100856144B1 (de)
CN (2) CN102193828B (de)
DE (2) DE112004003142A5 (de)
WO (1) WO2006057647A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7793291B2 (en) * 2004-12-22 2010-09-07 International Business Machines Corporation Thermal management of a multi-processor computer system
US7454596B2 (en) * 2006-06-29 2008-11-18 Intel Corporation Method and apparatus for partitioned pipelined fetching of multiple execution threads
US9146745B2 (en) * 2006-06-29 2015-09-29 Intel Corporation Method and apparatus for partitioned pipelined execution of multiple execution threads
US7698540B2 (en) * 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8307246B2 (en) * 2008-10-29 2012-11-06 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed of various processes
US9032254B2 (en) 2008-10-29 2015-05-12 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed and energy consumption of various processes
US8487909B2 (en) * 2011-07-27 2013-07-16 Cypress Semiconductor Corporation Method and apparatus for parallel scanning and data processing for touch sense arrays
US9542236B2 (en) 2011-12-29 2017-01-10 Oracle International Corporation Efficiency sequencer for multiple concurrently-executing threads of execution
US9715411B2 (en) 2014-02-05 2017-07-25 International Business Machines Corporation Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
CN106325512A (zh) * 2016-08-24 2017-01-11 韩龙潇 一种使用状态下监测周围环境的终端

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JPH05181670A (ja) * 1992-01-06 1993-07-23 Fujitsu Ltd マイクロプログラム方式計算機
JP2991598B2 (ja) * 1993-09-09 1999-12-20 富士通株式会社 Lsi設計装置及びlsi設計方法
JP3231571B2 (ja) 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US6192514B1 (en) * 1997-02-19 2001-02-20 Unisys Corporation Multicomputer system
US5999734A (en) * 1997-10-21 1999-12-07 Ftl Systems, Inc. Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models
US7085670B2 (en) * 1998-02-17 2006-08-01 National Instruments Corporation Reconfigurable measurement system utilizing a programmable hardware element and fixed hardware resources
US6557064B1 (en) * 1999-02-19 2003-04-29 Hewlett-Packard Development Company Set up time adjust
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6708269B1 (en) * 1999-12-30 2004-03-16 Intel Corporation Method and apparatus for multi-mode fencing in a microprocessor system
US7103586B2 (en) * 2001-03-16 2006-09-05 Gravic, Inc. Collision avoidance in database replication systems
US6964049B2 (en) * 2001-07-18 2005-11-08 Smartmatic Corporation Smart internetworking operating system for low computational power microprocessors
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7487504B2 (en) * 2002-02-06 2009-02-03 International Business Machines Corporation Thread dispatch for multiprocessor computer systems
US7155708B2 (en) * 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation

Also Published As

Publication number Publication date
US7797683B2 (en) 2010-09-14
US20050193278A1 (en) 2005-09-01
WO2006057647A3 (en) 2006-07-20
JP2007517322A (ja) 2007-06-28
WO2006057647A2 (en) 2006-06-01
CN102193828A (zh) 2011-09-21
CN1926514A (zh) 2007-03-07
KR20060111626A (ko) 2006-10-27
DE112004003142A5 (de) 2013-03-21
CN102193828B (zh) 2013-06-12
KR100856144B1 (ko) 2008-09-03
JP4599365B2 (ja) 2010-12-15
CN1926514B (zh) 2011-06-08

Similar Documents

Publication Publication Date Title
DE10085363B4 (de) Verfahren und Einrichtung zum Verwalten von Ressourcen in einem Multithreaded-Prozessor
DE102013014169B4 (de) Dynamisch grössenveränderbare Zirkularpuffer
DE60032481T2 (de) Verfahren und vorrichtung zur threadumschaltung in einem multithreadprozessor
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE60226176T2 (de) Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung
DE19781850B4 (de) Mikroprozessor zum spekulativen Ausführen von Befehlen aus mehreren von einem Verzweigungsbefehl angezeigten Befehlsströmen, Verfahren und Computersystem mit Mikroprozessor
DE60029619T2 (de) Verfahren, vorrichtung, medium und programm zur aufnahme und zum verlassen von mehreren fäden in einem vielfadenprozessor
DE112005002305B4 (de) Thread-Livelock-Einheit
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE60038693T2 (de) Verfahren und vorrichtung zur ausschaltung eines taktsignals in einem vielfadenprozessor
DE112004002505T5 (de) Entkoppeln der Anzahl der logischen Threads von der Anzahl der gleichzeitigen physischen Threads in einem Prozessor
EP0635784A1 (de) Multiprozessorsystem
DE102010029209B4 (de) Verfahren zur dynamischen Verteilung von einem oder mehreren Diensten in einem Netz aus einer Vielzahl von Rechnern
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE102005029852A1 (de) Multiprozessorsystem mit mehreren Speicherpositionen zum jeweiligen Speichern von TLB-Abschussdaten für mehrere Prozessorknoten
EP0010570B1 (de) Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE112016003466T5 (de) Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine
DE60127520T2 (de) Prozessor mit Befehlscache mit niedrigem Stromverbrauch
DE202004021684U1 (de) Einrichtungen und Vorrichtungen zur Verwendung bei einem Scheduling
DE10063915B4 (de) Informationsverarbeitungsgerät, das eine Mehrzweckverarbeitung und Transaktionsverarbeitung ausführt
DE102010003512A1 (de) Geteilte zentrale Verarbeitung von Daten
DE10196152B3 (de) Programmierbare Steuervorrichtung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004002505

Country of ref document: DE

Date of ref document: 20061123

Kind code of ref document: P

R130 Divisional application to

Ref document number: 112004003142

Country of ref document: DE

Effective date: 20120820

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140701