DE112006000807T5 - Verwaltung von Sequenzer-Adressen - Google Patents

Verwaltung von Sequenzer-Adressen Download PDF

Info

Publication number
DE112006000807T5
DE112006000807T5 DE112006000807T DE112006000807T DE112006000807T5 DE 112006000807 T5 DE112006000807 T5 DE 112006000807T5 DE 112006000807 T DE112006000807 T DE 112006000807T DE 112006000807 T DE112006000807 T DE 112006000807T DE 112006000807 T5 DE112006000807 T5 DE 112006000807T5
Authority
DE
Germany
Prior art keywords
sequencer
logical
mapping
sequencers
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112006000807T
Other languages
English (en)
Other versions
DE112006000807B4 (de
Inventor
Hong Santa Clara Wang
Gautham Hillsboro Chinya
Richard Santa Clara Hankins
Ryan Palo Alto Rakvic
John San Jose Shen
Shiv Portland Kaushik
Bryant Scottsdale Bigbee
Per Hillsboro Hammarlund
Xiang Beaverton Zou
Jason Austin Brandt
Prashant Folsom Sethi
John Portland Reid
David Champaign Poulsen
Scott Hillsboro Rodgers
Douglas Beaverton Carmean
Baiju Portland Patel
Sanjiv Champaign Shah
James Portland Held
James Phoenix Abel
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 DE112006000807T5 publication Critical patent/DE112006000807T5/de
Application granted granted Critical
Publication of DE112006000807B4 publication Critical patent/DE112006000807B4/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Programmable Controllers (AREA)

Abstract

Ein Verfahren mit:
Empfangen einer logischen Sequenzeradresse, die in einem Anwenderbefehl angegeben ist;
Zuordnen der logischen Sequenzeradresse zu einem aus einer Mehrzahl von Sequenzerrahmen;
Empfangen der logischen Sequenzeradresse gemeinsam mit einem zweiten Anwenderbefehl; und
Schaffen eines Identifizierers zum Angeben des zugehörigen gegenständlichen Sequenzerrahmens.

Description

  • Hintergrund
  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft allgemein Informationsverarbeitungssysteme und, insbesondere, die Übersetzung und Verwaltung von logischen Sequenzer-Adressen in einem Multi-Sequenzer-System.
  • Stand der Technik
  • Um die Leistungsfähigkeit von Informationsverarbeitungssystemen, etwa solchen, die Mikroprozessoren aufweisen, wurden sowohl Hardware- als auch Softwaretechniken verwendet. Auf der Hardwareseite wurden Ansätze der Ausgestaltung des Mikroprozessors einschließlich höherer Taktgeschwindigkeit, Pipelining, Sprungvorhersage, superskalare Ausführung, Out-of-Order (OOO) Ausführung und Caches gemacht. Viele derartige Ansätze haben zu einer vergrößerten Anzahl der Transistoren geführt und haben bei einigen Beispielen dazu geführt, dass die Anzahl der Transistoren stärker zugenommen hat als die verbesserte Leistungsfähigkeit.
  • Statt einer verbesserten Leistungsfähigkeit, die lediglich durch zusätzliche Transistoren erreicht werden, betreffen andere Verbesserungen der Leistungsfähigkeit Softwaretechniken. Ein Softwareansatz, der vollendet worden ist, um die Leistungsfähigkeit eines Prozessors zu verbessern, ist als "Multi-Threadening" bekannt. Bei dem Software-Multithreading kann ein Befehlsstrom in mehrere Befehlsströme aufgeteilt werden, die gleichzeitig ausgeführt werden. Weiter können mehrere unabhängige Softwareströme gleichzeitig ausgeführt werden. Bei einem Ansatz, der als Zeitschlitz-Multithreading oder Zeitmultiplex ("TMUX")-Multithreading bekannt ist, schaltet ein einzelner Prozessor nach einer bestimmten Zeitdauer zwischen Fäden um. Bei einem weiteren Ansatz schaltet ein einzelner bei dem Auftreten eines Trägerereignisses Prozessor zwischen Fäden um, etwa wenn ein Chache mit langer Latenz fehlt. Bei diesem Ansatz, der als ein Switch-on-Event-Multithreading ("SoEMT") bekannt ist, ist zu einem gegebenen Zeitpunkt höchstens ein Faden aktiv.
  • Zunehmend wird das Multithreading durch eine Hardware unterstützt. Bei einem Ansatz können beispielsweise Prozessoren in einem Mehrprozessorsystem, etwa einem Chip-Multiprozessor ("CMP")-System, jeder auf einen der mehreren Softwarefäden gleichzeitig einwirken. Bei einem anderen Ansatz, der als simultanes Multithreading ("SMT") bezeichnet wird, ist ein einzelner physikalischer Prozessor so ausgebildet, dass er wie mehrere logische Prozessoren erscheint, um Systeme und Anwenderprogramme zu betreiben. Für SMT können mehrere Softwarefäden aktiv sein und gleichzeitig auf einen einzigen Prozessor ohne Schalten arbeiten, d. h. jeder logische Prozessor beinhaltet einen vollständigen Satz des Architekturzustands, viele andere Ressource n des physikalischen Prozessors, wie Pufferspeicher, Ausführungseinheiten, Branchprediktoren, die Steuerlogik und Busse werden geteilt. Für SMT wirken die Befehle von mehreren Softwarefäden gleichzeitig auf jeden logischen Prozessor.
  • Für ein System, das die gleichzeitige Ausführung von Softwarefäden unterstützt, etwa SMT und/oder CMP-Systeme, kann eine Betriebssystemanwendung den Ablauf und die Ausführung von Softwarefäden auf FadenausführungsRessource n steuern. Für ein System, das es einem Verwender stattdessen erlaubt, Softwarefäden explizit über Befehle der Verwenderebene zu steuern, können solche Befehle den Namen oder die Adresse einer FadenausführungsRessource angeben.
  • Kurze Erläuterung der Zeichnungen
  • Ausführungsbeispiele der vorliegenden Erfindung ergeben sich aus der nachfolgenden Zeichnung, in der nacheinander entsprechende Elemente mit einander entsprechenden Ziffern angegeben sind. Diese Zeichnungen sind nicht einschränkend zu verstehen, sie sollen statt dessen ausgewählte Ausführungsbeispiele einer Vorrichtung, eines Systems und eines Verfahrens zum Verwalten und Übersetzen des Mappens von logischen Sequenzer-Adressen in einem Multi-Sequenzer-System auf gegenständlichen Sequenzern illustrieren.
  • 1 ist ein Blockdiagramm, das verschiedene Ausführungsbeispiele von Multi-Sequenzer-Systemen darstellt.
  • 2 ist ein Blockdiagramm, das eine graphische Repräsentation eines im wesentlichen parallelen Programmierungsansatzes für ein Multi-Sequenzer-System darstellt.
  • 3 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel eines Multi-Sequenzer-Systems mit einem einzigartigen Identifizierer für jeden Sequenzer ist.
  • 4 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel eines Multi-Sequenzer-Systems ist, das einen Mapping-Manager zum Verwalten des Mappens von logischen Sequenzer-Adressen auf gegenständliche Sequenzer-Adressen aufweist.
  • 5 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel eines Multi-Sequenzer-Systems ist, das einen Mapping-Manager zum Verwalten des Mappens von virtualisierten logischen Sequenzer-Adressen auf gegenständliche Sequenzer-Adressen aufweist.
  • 6 ist ein Blockdiagramm, das eine weitere Einzelheit für wenigstens ein Ausführungsbeispiel einer Mapping-Struktur illustriert.
  • 7 ist ein Datenflußdiagramm, das wenigstens ein Ausführungsbeispiel eines beispielhaften Szenarios zum Mappen von aktuellen SequenzerFrames in virtualisierte, logische Sequenzer-Adressen illustriert.
  • 8 ist ein Flussdiagramm, das Inhalte einer beispielhaften Mapping-Struktur für das beispielhafte Szenario, das in 7 gezeigt ist, illustriert.
  • 9 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel einer Rationierungslogik für einen Mapping-Manager illustriert.
  • 10 ist ein Datenverarbeitungsdiagramm, das wenigstens ein Ausführungsbeispiel eines Verfahrens zum Übersetzen einer virtuellen Sequenzer-Adresse in einen tatsächlichen Sequenzer-Identifizierer wiedergibt.
  • 11 ist ein Blockdiagramm, das beispielhafte Eintritte für wenigstens ein Ausführungsbeispiel einer Übersetzungsbeschleunigungsstruktur illustriert.
  • 12 ist ein Flussdiagramm, das die Steuerung und den Datensprung für wenigstens ein Ausführungsbeispiel eines Verfahrens zur Sequenz-Rationierung illustriert.
  • 13 ist ein Flussdiagramm, das die Steuerung und den Datensprung für wenigstens ein Ausführungsbeispiel eines Verfahrens zum Handhaben eines Seitentabellenfehlers für logische Sequenzer-Adressen illustriert.
  • 14 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel eines Multi-Sequenzer-Multithreading-Systems, das asymmetrische Sequenzer aufweist, illustriert.
  • 15 ist ein Blockdiagramm, das eine weitere Einzelheit für wenigstens ein Ausführungsbeispiel eines Systems, das die offenbarten Techniken ausführen kann, illustriert.
  • 16 ist ein Blockdiagramm eines weiteren Ausführungsbeispiels eines Multi-Sequenzer-Systems, das eine sequenzerbewußte Operationen auf der Verwenderebene unterstützt.
  • Eingehende Beschreibung
  • Die nachfolgende Diskussion beschreibt ausgewählte Ausführungsbeispiele von Verfahren, Systemen und Mechanismen zum Verwalten des Mappen von logischen Sequenzer-Adressen für ein Multi-Sequenzer-System, das eine Sequenzer-Arithmetik auf der Verwenderebene unterstützt. Die Ausführungsbeispiele des Mechanismus und des Verfahrens, die hier beschrieben sind„ können mit Singlecore- oder Multicore-Multithreading-Systemen verwendet werden.
  • In der nachfolgenden Beschreibung sind verschiedene bestimmte Einzelheiten, wie Sequenzer-Allokationsansätze, Multithreading-Umgebungen, Systemkonfigurationen, Anzahl und Topologie von Sequenzern in einem Multi-Sequenzer-System, Mikroarchitekturstrukturen und eine Befehlsnomenklatur und -Parameter verwendet, um ein besseres Verständnis der Ausführungsbeispiele der vorliegenden Erfindung zu ermöglichen. Es versteht sich jedoch für den Fachmann, dass die Erfindung ohne derartige spezifische Einzelheiten verwirklicht werden kann. Zusätzlich weiter sind bestimmte, bekannte Strukturen, Schaltkreise und dergleichen in ihren Einzelheiten nicht gezeigt, um die vorliegende Erfindung nicht unnötig unklar zu machen.
  • Der Begriff Faden-Einheit, der hier mit dem Begriff "Sequenzer" austauschbar verwendet wird, ist eine distinkte FadenausführungsRessource, und kann jede gegenständliche oder logische Einheit sein, die dazu in der Lage ist, einen Faden auszuführen. Sie kann eine auf den nächsten Befehl weisende Logik haben zum Bestimmen des nächsten für einen gegebenen Faden auszuführenden Befehl haben. Ein Sequenzer kann eine logische Faden-Einheit oder eine gegenständliche Faden-Einheit sein. Eine solche Unterscheidung zwischen logischen und gegenständlichen Faden-Einheiten wird unmittelbar anschließend in Verbindung mit 1 diskutiert.
  • 1 ist ein Blockdiagramm, das ausgewählte Eigenschaften der Ausführungsbeispiele 110, 115, 150, 170 eines Multi-Sequenzer-Systems illustriert, das eine Steuerung von Fäden auf Verwenderebene unterstützt. 1 zeigt ausgewählte Eigenschaften eines SMT Multi-Sequenzer-Multi-Fadening-Systems 110, wobei jeder Sequenzer ein logischer Prozessor ist, der einen Faden gleichzeitig mit der Ausführung von anderen Fäden auf anderen logischen Prozessoren ausführen kann. 1 zeigt weiter wenigstens ein Ausführungsbeispiel eines Multi-Sequenzer-Systems 115, das mehrere logische Sequenzer über einen Switch-an-Event (SoeMT) Mechanismus unterstützt, etwa einen Zeitmultiplexing-Typ eines Schaltmechanismus unterstützt, so dass jeder der logischen Prozessoren auf seinen Faden läuft, wobei nur ein Faden zu einem Zeitpunkt auf einem solchen System 115 ausgeführt wird.
  • 1 zeigt weiter ausgewählte Merkmale eines Mutiple-Core-Multi-Threading-Systems 150, 170. Die gegenständlichen Kerne für ein Multi-Core-Multi-Threading-System können entweder Einzel-Sequenzer-Kerne (siehe beispielsweise das System 150) oder Muli-Sequenzer-Kerne (siehe beispielsweise das System 170) sein. Derartige Multi-Core-Multi-Threading-Ausführungsbeispiele werden später diskutiert, während die Einzel-Kern-Multi-Sequenzer-Systeme 110, 115 sofort nachfolgend diskutiert werden.
  • In dem SMT-System 110 ist ein einzelner, gegenständlicher Prozessor 104 ausgebildet, um als mehrfache Faden-Kontexte aufzutreten, hier als TC1 bis TCn (nicht gezeigt) bezeichnet. Jeder der n-Faden-Kontexte wirkt als Sequenzer. Wenn wenigstens einer dieser Faden-Kontexte (beispielsweise m aus der Anzahl n) für das Betriebssystem und/oder Verwenderprogramme sichtbar gemacht werden, werden diese Faden-Kontexte manchmal als logische Prozessoren (nicht gezeigt) bezeichnet und werden hier als LP1 bis LPm bezeichnet. Jeder Faden-Kontext TC1 bis TCn beinhaltet einen Satz von Architekturzuständen AS1-ASn. Diese Architekturzustände weisen bei wenigstens einem Ausführungsbeispiel Datenregister, Segmentregister, Debug-Register, und die meisten der für das Modell spezifischen Register, auf. Die Faden-Kontexte TC1-TCn teilen sich die meisten anderen Ressource n des gegenständlichen Prozessors 104, etwa die Pufferspeicher, Ausführungseinheiten, Branch-Prediktoren, die Steuerlogik und die Busse.
  • Obwohl solche Merkmale geteilt werden können, kann jeder Faden-Kontext in dem Multi-Treading-System 110 unabhängig die nachfolgende Befehlsadresse erzeugen (und, beispielsweise, einen Abruf von einem Befehlsspeicher, einem Ausführungsbefehlsspeicher oder einem Ablaufspeicher ausführen). Der Prozessor 104 weist so logisch unabhängige, auf den nächsten Befehl weisende, Zeiger und Abrufspeicher 120 zum Abrufen von Befehlen für jeden Faden-Kontext auf, obwohl die mehren logischen Sequenzer in einer einzigen gegenständlichen Abruf/Dekodier-Einheit 122 implementiert sein können. Bei einem SMT Ausführungsbeispiel umfasst der Begriff "Sequenzer" wenigstens den Zeiger für den nächsten Befehl und die Abruflogik 120 für einen Faden-Kontext, gemeinsam mit wenigsten einigen der zugehörigen Architekturzustände, AS, für den Faden-Kontext. Es sollte beachtet werden, dass die Sequenzer eines SMT Systems 110 nicht symmetrisch sein müssen. Beispielsweise können zwei SMT-Sequencher desselben gegenständlichen Prozessors in der Menge der Information über den Architekturzustand, den sie jeweils aufweisen, unterschiedlich sein wird.
  • Bei wenigstens einem Ausführungsbeispiel ist das Multi-Sequenzer-System 110 ein Single-Core-Prozessor 104, der ein gleichzeitiges Multi-Threading unterstützt. Bei einem solchen Ausführungsbeispiel ist jeder Sequenzer ein logischer Prozessor mit einem eigenen Befehl für den auf den nächsten Befehl weisenden Zeiger und eine Zugriffslogik und seiner eigen Information über den Zustand der Architektur, obwohl derselbe physikalische Prozessorkern 104 alle Faden-Befehle ausführt. Bei einem solchen Ausführungsbeispiel beinhaltet der logische Prozessor seine eigene Version des Architekturzustands, obwohl AusführungsRessource n des alleinigen Prozessorkerns 104 unter gleichzeitig arbeitenden Fäden geteilt werden können.
  • 1 zeigt ein alternatives Ausführungsbeispiel eines Multi-Sequenzer-Systems 115, das dazu in der Lage ist, einen Multi-Faden-Code auszuführen. Das Ausführungsbeispiel 115 ist als ein Switch-on-Event-Multi-Fadening ("SOEMT")-Ausführungsbeispiel bezeichnet. Bei dem Ausführungsbeispiel 115 ist jeder Sequenzer ähnlich den Sequenzern bei dem vorangehenden Ausführungsbeispiel 110, in dem jeder Sequenzer ein logischer Prozessor ist mit einer Information über den Architekturzustand und seinem eigenen, auf den nächsten Befehl weisenden Zeiger. Das System 115 unterscheidet sich jedoch von dem oben diskutierten System 110 darin, dass die Sequenzer sich jeweils mit den anderen Sequenzern dieselbe gegenständliche Zugriffslogik 120 in einer einzigen Zugriffs-/Dekodier-Einheit 122 in den gegenständlichen Prozessorkern 104 teilen. Die Zugriffslogik 120 kann umgeschaltet werden zum Zugriff für verschiedene Sequenzer des Systems 115, basierend auf einer Mehrzahl von Switch-on-Event-Strategien. Die Switch-on-Event-Trigger können einen Abschnitt einer bestimmten Zeitmenge oder verschiedenen Zyklen sein, etwa als Zeitmultiplexen (TMUX). Bei anderen Ausführungsbeispielen können die SOEMT-Trigger andere Ereignisse sein, etwa Speicherfehlereignisse, Seitenfehler, Langlatenzbefehle, usw..
  • 1 zeigt wenigstens zwei Ausführungsbeispiele von Mehrkern-Multi-Threading-Systemen 150, 170. Bei wenigstens einigen Ausführungsbeispielen des Mehrkernsystems 150, 170, das in 1 gezeigt ist, kann das System einen Prozessor 104 als Bildungsblock verwenden. Jeder der Sequenzer kann ein Prozessorkern 104 mit den mehreren Kernen 1041 -104n , 1041 -104m , der in einem einzigen Chip-Package 160 beziehungsweise 180 aufgenommen ist, sein. Bei dem System 150, das in 1 gezeigt ist, kann jeder Kern 104, (i=0 bis n) ein Single-Thread-Sequenzer sein. Bei dem System 170, das in 1 gezeigt ist, kann jeder Kern 104j (j= 1 bis m) ein Multi-Sequenzer-Prozessorkern sein.
  • Die Chippackages 160, 180 werden in 1 mit unterbrochenen Linien dargestellt, um anzugeben, dass die dargestellten Einchip-Ausführungsbeispiele der Multikernsysteme 150, 170, nur illustrativ sind. Bei anderen Ausführungsbeispielen können die Prozessorkerne eines Multi-Core-Systems auf separaten Chips angeordnet sein oder können als ein SOEMT Multi-Sequenzer-System organisiert sein.
  • Ein erstes Mehrkern-Multi-Threading-System 150, das in 1 dargestellt ist, kann zwei oder mehrere gesonderte, gegenständliche Prozessoren 1041 -104n aufweisen, das dazu in der Lage ist, einen unterschiedlichen Fäden auszuführen, so dass die Ausführung von wenigstens Teilen unterschiedlicher Fäden gleichzeitig stattfinden kann. Jeder Prozessor 1041 bis 104„ weist eine gegenständlich unterschiedliche Abrufeinheit 122 auf, um Abrufbefehlsinformation für seinen jeweiligen Faden abzurufen. Bei einem Ausführungsbeispiel, bei dem jeder Prozessor 1041 -104n einen einzelnen Faden ausführt, implementiert die Zugriffs-/Decodier-Einheit 122 eine einzige Logik 120 für den Zeiger für den nächsten Befehl und den Zugriff.
  • 1 zeigt weiter ein Multi-Core-Multi-Fadening-System 170, das mehrere SMT Systeme 110 aufweist. Bei einem solchen Ausführungsbeispiel 170 unterstützt jeder Prozessor 1041 -104m mehrere Faden-Kontexte. Beispielsweise ist jeder Prozessor 1041 -104m ein SMT Prozessor, der k Sequenzer unterstützt, so dass das System 170 effektiv m*k Sequenzer implementiert. Weiter implementiert die Zugriffs-/Dekodier-Einheit 122 für das System 170 unterschiedliche Logiken für den Zeiger auf den nächsten Befehl und dem Zugriff für jeden unterstützten Faden-Kontext.
  • Zur Vereinfachung der Darstellung fokussiert sich die nachfolgende Diskussion auf Ausführungsbeispiele des Multi-Core-Systems 150. Der Fokus sollte jedoch nicht als einschränkend verstanden werden, der unten beschriebene Mechanismus kann entweder in einem Mehrkern oder in einem Einkern-Mulit-Sequenzer-System ausgeführt werden. Auch können Einkern- oder Mehrkern-Systeme mit Ein-Sequenzer-Kernen oder Mehr-Sequenzer-Kernen implementiert sein. Für jeden Mehr-Sequenzer-Kern können ein oder mehrere Multi-Threading-Techniken verwendet werden, einschließlich SMT und/oder SoeMT. Es versteht sich, dass die Systeme 110, 115, 150, 170, die in 1 gezeigt sind, zusätzliche Merkmale aufweisen können, etwa ein Speichersystem, Ausführungseinheiten und dergleichen, diese sind in 1 nicht gezeigt.
  • Jeder Sequenzer 104, bei dem Systembeispiele 110, 115, 150, 170, die in 1 gezeigt sind, kann ein einzigartiger Identifizierer zugeordnet sein (unten in Verbindung mit 3 gezeigt). Verschiedene Ausführungsbeispiele des Systems 110, 150 können eine unterschiedliche Anzahl N von Gesamtsequenzem anzeigen.
  • Ausführungsbeispiele des Systems 110, 115, 150, 170, die in 1 gezeigt sind, können jeweils ein Signalisieren unter den Sequenzern aufweisen. Der Begriff "Sequenzerarithmetik" wird hier zur Bezeichnung eines Zwischensequenzersignalisieren zum Service zwischen zwei Sequenzern verwendet. Eine Architekturunterstützung für die Sequenzerarithmetik kann Erstreckungen zu einem Befehlssatzarchitektur beinhalten, so dass einer oder mehrere Befehle vorgesehen sind, um eine direkte Verwendermanipulation der Steuer- und Zustandsübertragungen zwischen Sequenzern zu erlauben. Ein Befehl auf der Verwenderebene wird als "sequenzerbewusst" bezeichnet, wenn es ein Sequenzerarithmetikbefehl oder jede andere Art eines Befehls ist, der eine logische Sequenzer-Adresse als ein Parameter beinhaltet, der als ein Befehlsoperant und/oder implizit bei einer Befehlsausführung bezogen kodiert werden kann. Solche Befehle können Sequenzer-Arithmetikbefehle beinhalten, die entweder zum Signalisieren eines anderen Sequenzers (hier als ein "SXFR", oder geteilter Transfer bezeichnet) oder zum Schaffen eines Aufstellen eines Klientensequenzers zum Beobachten eines solchen Signals (hier als ein Shred-Monitor "SEMONITOR" Befehl bezeichnet).
  • Sequenzerbewusste Befehle können auch andere Befehle beinhalten, die eine logische Sequenzer-Adresse als ein Parameter aufweisen, etwa als ein sequenzerbewusster Statussicherungs- und Umspeicherbefehl. Bei der Ausführung eines solchen Statussicherungsbefehls kann ein erster Sequenzer einen Schnappschuss des Architekturzustands eines zweiten Sequenzers erzeugen. Der sequenzerbewusste Umspeicherbefehl kann angeben, dass die sicheren Architekturzustände in einen bestimmten Sequenzer geladen werden.
  • Jeder sequenzerbewusste Befehl kann weiter optional mehrere als eine logische Sequenzer-Adresse als Parameter beinhalten. Beispielsweise kann ein sequenzerbewusster Befehl als ein Parameter ein Aggregat von mehreren logischen Sequenzer-Adressen beinhalten. Ein solcher Ansatz kann verwendet werden für ein Multicasten oder Aussenden von Zwischensequenzersignalen von einem Sequenzer zu mehreren anderen Sequenzern. Um die nachfolgende Diskussion zu vereinfachen, beziehen sich die nachfolgenden Beispiele, wenn nicht anders angegeben, auf den Fall des Uni-Castings: ein erster Sequenzer führt einen sequenzerbewussten Befehl aus, der eine einzige andere logische Sequenzer-Adresse angibt. Ein solcher Ansatz wird zur Vereinfachung der Beschreibung angegeben und ist lediglich illustrativ, er sollte jedoch nicht begrenzend wirken. Der Fachmann wird verstehen, dass Ausführungsbeispiele des hier beschriebenen Mechanismus für das Aussenden und das Multicasten auch von sequenzerbewussten Befehlen angewendet werden können.
  • Zur Vereinfachung der Beschreibung kann SXFR in der folgenden Diskussion als Gedächtnisstütze des Befehls für einen illustrativen Zwischensequenzersignalbefehl verwendet werden. Entsprechend werden zum Zwecke der Beschreibung und/oder Begrenzung SSAVE, und SRSTOR als Befehlsgedächtnisstützen verwendet für die sequenzerbewusste Sicherungs- und Speicherungsbefehle für die Architekturstruktur. Der Fachmann wird verstehen, dass viele andere Varianten und Gedächtnisstützen der Signalbefehle als auch als Speicher und Speicherbefehle für den Kontext und andere sequenzerbewusste Befehle verwendet werden können, ohne den Schutzbereich der beiliegenden Ansprüche zu verlassen.
  • Bei Ausführungsbeispielen der Verfahren, Mechanismen und Systeme, wie sie hier beschrieben worden sind, ist ein für den Verwender sichtbares Merkmal der Architektur der Sequenzer-Arithmetik-Operationen wenigstens ein kanonischer Satz von Befehlen, die es dem Verwender erlauben, ein Signal zum Bedienen unter den Sequenzern zu verursachen. Ein solches Signalisieren kann durch einen Befehl ausgelöst werden, der als einen Parameter einen Namen oder logische Adresse des Sequenzers 104, auf den die nachfolgende Steuerübertragung aufgeführt wird, aufweist. Der Sequenzer, der ein Signal für den Faden-Kontroll-Transfer erzeugt, wird als ein Sourcesequenzer bezeichnet, und der Empfänger des erzeugten Signals wird hier als Destinationssequenzer bezeichnet.
  • Es wird jetzt kurz auf 2 Bezug genommen zu einer Diskussion des Basiskonzepts, das bei wenigstens einem Ausführungsbeispiel des hier beschriebenen Systems vorhanden ist. 2 ist ein Blockdiagramm, das eine graphische Darstellung eines parallelen Programmierungsansatzes eines Multi-Sequenzer-Multi-Threading-Systems illustriert.
  • Ein Multiprozessing-Paradigma eines geteilten Speichers kann bei einem Ansatz, der als paralleles programmieren bezeichnet wird, verwendet werden. Bei diesem Ansatz kann ein Anwendungsprogrammierer ein Softwareprogramm aufspalten, manchmal bezeichnet als eine "Anwendung" oder ein "Prozess" in mehrerer Aufgaben, die gleichzeitig ablaufen, um die Parallelität für ein Softwareprogramm auszudrücken. Alle Fäden desselben Softwareprogramms ("Prozess") teilen eine gemeinsame logische Sicht des Speicheradressraums.
  • 2 zeigt Prozesse 200, 220, die für ein arbeitendes System 240 sichtbar ist. Diese Prozesse 200, 220 können unterschiedliche Softwareanwendungsprogramme sein, beispielsweise ein `Textverarbeitungsprogramm oder ein E-Mail-Verwaltungsprogramm. Gewöhnlich arbeitet jeder Prozess in einem unterschiedlichen Adressraum.
  • Das Betriebssystem ("OS") 240 ist gewöhnlich zum Verwalten der von dem Verwender erzeugten Aufgaben für einen Prozess verantwortlich, etwa dem Prozess 220, der in 2 dargestellt ist. Entsprechend kann das Betriebssystem 240 einen unterschiedlichen Faden 225, 226 für jede der von dem Verwender definierten Aufgaben, der dem Prozess 220 zugehörig ist, erzeugen, und kann die Fäden 225, 226 auf die Thread-AusfürungsRessource n mappieren.
  • Entsprechend zeigt 2 Verwender-Faden 225, 226, die zugehörig sind zu und sich denselben virtuellen Speicheradressraum mit dem Prozess 220 teilen. Die Fäden 225, 226 für den Prozess 220 sind in 2 gezeigt und repräsentieren so unterschiedliche Verwender definierte Aufgaben. Solche Fäden werden hier manchmal als "OS Threads" bezeichnet, um anzugeben, dass sie erzeugt, verwaltet und geplant werden von dem OS 240. Alternativ können solche Fäden auch austauschbar sein mit dem Begriff "Verwender-Threads" oder "Verwender-Aufgaben", um die Idee eines OS verwalteten Faden repräsentierende Verwenderaufgabe zu bezeichnen.
  • Die Verwender-Fäden 225, 226 können durch das OS 240 erzeugt, verwaltet und geplant werden. Bezüglich der Planung der Verwender-Fäden 225, 226 kann die OS 240 einen Planer aufweisen, der die Fäden 225, 226 zur Ausführung plant, und jeden Faden 225, 226 zu einem oder mehreren logischen Sequenzer-Adressen mappt Entsprechend zeigt 2 ein übliches Threading-Schema, wobei das Betriebssystem 240 verantwortlich ist zum Mappen jeden Verwender-Fäden 225, 226 zu einer einzelnen logischen Sequenzer-Adresse. Üblicherweise entspricht die logische Sequenzer-Adresse einem einzelnen Sequenzer, der, beispielsweise, einen besonderen Zeiger für den nächsten Befehl haben kann.
  • 2 zeigt jedoch einen noch jüngeren Ansatz des Multi-Threadings. 2 zeigt, dass ein einzelner OS-Thread, etwa der Faden 225, der in 2 gezeigt ist, zugehörig sein kann, mehreren Fäden der Verwenderebene, 280, 282, die nicht von dem Betriebssystem 240 erzeugt, geplant oder anders verwaltet worden sein müssen. Solche Fäden können als "Shreds" bezeichnet werden, um sie von OS Fäden zu unterscheiden.
  • Die Shreds 280, 282 brauchen nicht für den Planer des OS 240 sichtbar zu sein, und das OS 240 bestimmt üblicherweise nicht, wann und wie der zugehörige OS Faden (wie der OS Faden 225, der den Shreds 280 und 282 zugehörig ist) plant, wie ein Shred auf einer zugehörigen logischen Sequenzer-Adresse läuft. Der OS Faden 225 ist selbstgewöhnlich verantwortlich über zu planen, wann und wie einer seiner Shreds 280, 282 läuft. Obwohl zwei derartige Shreds 280, 282 in 2 gezeigt sind, kann jede beliebige Anzahl derartiger Shreds einem einzelnen OS Faden zugehörig sein.
  • Bei wenigstens einem Ausführungsbeispiel kann einer oder können mehrere sequenzerbewusste Befehle von einem Programmierer in Shreds kodiert werden, die einem OS Faden zugehörig sind. Solche Befehle können, wenn sie während des Betriebs des OS Fäden ausgeführt werden, ohne Intervention der OS 240 Planungslogik eine Erzeugung, eine Steuerungsübergabe, eine Sequenzer-Arithmetik, einen Kontextspeicher, einen Kontext umspeichern oder andere Vorgänge für Shreds verursachen.
  • 3 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel eines Multi-Threading-Systems 300 verdeutlicht, das eine Mehrzahl von Thread- AusführungsRessource hn 320, 322, 324, 326, hier als "Sequenzer" bezeichnet, einschließt. Die Sequenzer 320, 322, 324, 326 können von jeder Art einer Thread-AusführungsRessource sein, einschließlich eines einzelnen Sequenzerkerns, eines SMT-logischen Prozessors (hier, beispielsweise die Diskussion von TC1 bis TCn in Verbindung mit 1) oder eines SOEMT-Kerns (siehe beispielsweise 115 von 1), um einige wenige zu nennen. Alle diese Beispiele repräsentieren Hardwaremerkmale, die die Ausführung eines oder mehrerer Fäden unterstützen. Jede solcher Thread-AusführungsRessource einschließlich eines SMT-logischen Prozessor, wird hier als "gegenständlicher Sequenzer" bezeichnet.
  • 3 zeigt vier gegenständliche Sequenzer 320, 322, 324, 326. Jeder der Sequenzer 320, 322, 324, 326 ist mit einem einzigartigen Sequenzer-Identifizierer (SEQ0, SEQ1, SEQ2, SEQ3) versehen. Der Fachmann wird erkennen, dass die vier gegenständlichen Sequenzer in 3 lediglich beispielhaft dargestellt sind, dies sollte nicht als Begrenzung angesehen werden. Ein System, das die hier beschriebenen Techniken verwendet, kann eine beliebige Anzahl von gegenständlichen Sequenzern aufweisen, die dazu in der Lage sind, gleichzeitig viele Befehle auszuführen.
  • 3 zeigt weiter, dass einer oder mehrere Befehle 345 von einem Verwenderprogramm 340 für sequenzerbewusste Operationen auf der Verwenderebene sorgen. Die sequenzerbewussten Befehle 345 weisen logische Sequenzer-Adressen, wie L_Seg0, L_Seq1, L_Seq2 und L_Seq3 auf, um Sequenzer zu identifizieren. Für die restliche folgende Diskussion können die Begriffe "logische Sequenzer-Adresse" und "virtuelle Sequenzer-Adresse" austauschbar verwendet werden.
  • Bei wenigstens einem Ausführungsbeispiel wird angenommen, dass die Befehle 345 des Verwenderprogramms 340 durch einen OS-verwalteten Faden ausgebildet werden. Das Programm 340 kann daher hier auch als ein Thread (Faden) bezeichnet werden. Ansprechend auf solche Befehle 345 (das heißt dann, wenn die Befehle 345 ausgeführt werden) kann der Mapping-Manager 302 ein Nachschlagen ausführen, um zu bestimmen, welcher gegenständliche Sequenzer 320-326 von der logischen Sequenzer-Adresse, die in dem Befehl 345 angegeben worden ist, angegeben wird. Bei wenigstens einem Ausführungsbeispiels des Mapping-Managers 302 kann das Nachschlagen implementiert sein in oder unterstützt werden durch eine Hardware oder Firmware oder durch Eindringen in ein Softwaresteuerungsprogramm mit einem geeigneten Vorrang.
  • 3 zeigt ein Ausführungsbeispiel des Systems 300, das eine etwas einfache Virtualisierung der logischen Sequenzer-Adressen bietet. Das heißt, eine Anzahl von logischen Sequenzer-Adressen, die dem Anwenderprogrammierer verfügbar ist, ist statistisch an eine begrenzte Anzahl von gegenständlichen Sequenzern 320-326 gebunden. 3 zeigt so ein 1:1 Mappen zwischen gegenständlichen Sequenzern und logeischen Sequenzer-Adressen, was bei einem Anwenderprogramm verwendet werden kann.
  • Ein Mapping-Manager 302 kann so das Mappen zwischen gegenständlichen Sequenzern 320-326 und logischen Sequenzer-Adressen, die durch einen oder mehrere Fäden 340 verwendet werden, verwalten. Bei wenigstens einem Ausführungsbeispiel ist der Mapping-Manager 302 ein Betriebssystemprogramm oder eine andere Softwareanwendung. Bei einem solchen Ausführungsbeispiel kann der Mapping-Manager 320 das Mappen auf einer bevorzugten Ebene des Betriebs ausführen. Beispielsweise kann die Verwaltung des Mappens zwischen tatsächlichen Sequenzern und logischen Sequenzer-Adressen gehandhabt werden als eine priviligierte Operation durch einen OS Kernel oder einen Treiber.
  • Alternative Ausführungsbeispiele des Mapping-Managers 320 können das Mappen auf einer Mehrzahl von Abstraktionsebenen verwalten. Beispielsweise kann der Mapping-Manager 302 eine architekturale Nachschlagtabelle sein, die durch ein Umbezeichnen auf Mikroarchitekturebene durch eine Hardware und/oder eine Firmware unterstützt wird. Bei wenigstens einem anderen Ausführungsbeispiel kann der Mapping-Manager ein Softwaremechanismus eines Virtualisierungsmanagements sein, in einer virtuellen Maschine oder einem Hypervisor. Oder, bei wenigstens einem anderen Ausführungsbeispiel, kann der Mappierungsmanager 302 ein nicht privilegierter Softwarecode sein, auf der Verwenderebene, die die Mappierungsmanagerfunktion als Teil eines Verwender-Fäden (beispielsweise 225) oder Prozesses (beispielsweise 220) sein.
  • Es wird jetzt auf 16 Bezug genommen, das ein Blockdiagramm ist, das bestimmte architekturale Merkmale eines anderen Ausführungsbeispiels für ein Multi-Sequenzer-System 1600 ist, das sequenzerbewusste Operationen auf der Verwenderebene unterstützt. 16 zeigt, dass das System 1600, Sequenzer 1620, 1640 aufweist. Die Anzahl und die Art der in 16 gezeigten Sequenzern sollten nicht als begrenzend verstanden werden. Obwohl nur zwei Arten von Sequenzern 1620, 1640 dargestellt sind, kann ein alternatives Ausführungsbeispiel des Systems 1600 zusätzliche Typen von Sequenzern aufweisen. Zusätzlich sollte die Anzahl jeden Typs 1620, 1640 von Sequenzern, die in 16 dargestellt sind, nicht als Begrenzung für die obere und die untere Grenze der Anzahl jedes Sequenzer-Typs bei alternativen Ausführungsbeispielen des Systems 1600 verstanden werden. Sowohl kleinere als auch größere Anzahlen jedes Sequenzer-Typs 1620, 1640 kann verwendet werden.
  • 16 zeigt, dass das System (1+s)*t Sequenzer aufweist. Während 16 eine t bis (s*t) Bindungsbeziehung zwischen dem ersten Sequenzer-Typ t 1620 darstellt, insgesamt einen zweiten Sequenzer-Typ SONEToAS 1640, wobei t = 4, s = 3, soll eine solche Darstellung nicht als begrenzend verstanden werden. Bei alternativen Ausführungsbeispielen kann t und s jede unterschiedliche Anzahl sein, wobei t > 0 und s > 0.
  • Der erste Sequenzer-Typ 1620, der in 16 mit "T" markiert ist und hier als ein "T-Sequenzer" bezeichnet wird, kann direkt durch ein OS verwaltet werden, bei dem es sich um einen Planer, wie ein OS-Faden auf dem T-Sequenzer laufen soll, sein kann. Der zweite Sequenzer-Typ 1640, der in 16 als "S" markiert ist, wird hier als "S-Sequenzer" bezeichnet, er wird nicht direkt von dem OS verwaltet. Stattdessen kann der S-Sequenzer 1640 direkt von einem Verwendercode in einem Faden verwaltet werden – es kann direkt durch den Faden verwaltet werden, um Shreds laufen zu lassen, die mit dem Faden zugehörig sind.
  • Bezüglich der Architektur kann jeder OS-verwaltete Faden einem einzelnen Multi-Sequenzer-Ensemble 1650 entsprechen (hier bezeichnet als ein "Meta-Prozessor"). Jeder Meta-Prozessor 1650 kann einen logischen T-Sequenzer 1620 und SONEToAS logische S-Sequenzer aufweisen. 16 zeigt t Meta-Prozessoren, wobei t = 4 ist. Jeder der dargestellten Meta-Prozessoren weist SONEToAS S-Sequenzer auf, wobei s = 3 ist. Entsprechend weist jeder der Meta-Prozessoren 1650 insgesamt + 1 Sequenzer auf, (d. h. SONEToAS S-Sequenzer zuzüglich eines T-Sequenzer). Das OS kann verantwortlich sein für das Verwalten eines Fadens, dann für das Planen eines Faden zu einem Meta-Prozessor 1650 und der Faden kann weiter seine mehreren Shreds gemeinsam auf den (t+s) Sequenzern in dem Meta-Prozessor planen und ablaufen lassen. 16 soll die Anzahl der Meta-Prozessoren 1650 für ein System nicht einschränken, noch soll es die Anzahl der S-Sequenzer 1640, die jedem der Meta-Prozessoren 1650 zugehörig sind, einschränken. Bestimmte Werte für t und s sind mit 16 lediglich beispielhaft dargestellt.
  • Für ein Multi-Sequenzer-System, das eine Unterstützung für sequenzerbewusste Operationen auf Verwenderebene unterstützt, etwa die Ausführungsbeispiele 300, 1600, die in den 3 und 16 gezeigt sind, ist ein Sequenzer gesondert von einer architekturale Ressource wirksam. Entsprechende Registerressourcen, Speicherressourcen und andere gemeinsame architekturelle Ressourcen. Die Sequenzer-Ressourcen können einen unterschiedlichen architekturalen Bezeichnungsraum haben und können einem Virtualisierungsmanagement unterworfen sein.
  • Architektural kann eine Sequenzer-Ressource – ohne Einschränkung – wenigstens drei Komponenten aufweisen. Einen Bezugsnamen, einen Sequenzer-Status-Kontext und einen Fähigkeitsdeskriptor. Der Fähigkeitsdeskriptor kann eine Zusatzinformation über den Sequenzer aufweisen, etwa Planungsbegrenzungen und Anforderungen, als auch andere relevante Eigenschaften, wie die, ob es sich um einen T-Sequenzer oder einen S-Sequenzer handelt. Architektural unterscheiden sich für jeweils zwei Sequenzer in einem Mikro-Prozessor 1600 von (1+s) Sequenzern, die jeweilige Sequenzer-Ressourcen in dem Bezugsnamen und können auch bezüglich der Kontextzusammensetzung und/oder der Fähigkeitsdeskriptor Information sich unterscheiden. Beispielsweise ist es möglich, dass ein Satz eines Sequenzers von architekturalen Zuständen sich von dem anderen Sequenzer unterscheidet.
  • Für einen gegebenen Meta-Prozessor 1650 können die oben erwähnten sequenzerbewussten Befehlen, etwa SXFR, SSAVE und SRTOR für alle der (1+s) logischen Sequenzer definiert sein.
  • Das heißt, der Befehl kann ein oder mehrere der logischen Sequenzadressen haben, die als Operanden kodiert sind, oder anders bezug nehmen auf einen oder mehrere der logischen Sequenzadressen während der Befehlsausführung.
  • Architektural ist die scheinbare statische Bindung des einen T-Sequenzer 1620 und der s S-Sequenzer 1640 in einem Metaprozessor 1650 lediglich logisch (oder manchmal äquivalent bezeichnet als „virtuell"). D. h., die logischen Sequenzeradressen in einem gegebenen Metaprozessor können statisch bestimmt sein und können, beispielsweise, von 0 bis s reichen. Zum Zwecke der Diskussion eines alternativen Ausrührungsbeispiels wird erwähnt, dass 16 ein System 1600 mit Ausführungsressourcen 1680 zeigt, die K gegenständliche Sequenzer Seq 0 – Seq k aufweisen. Die Sequenzer der Auführungsressourcen 1680 können jeweils mit einer zugehörigen Speicherhierarchie 1692 gekoppelt sein. Obwohl in 16 besonders gezeigt, versteht der Fachmann, dass eine Speicherhierarchie 1692 für einen Sequenzer Seq 0 – Seq k einen Chipspeicher aufweisen kann oder statt dessen nicht auf einem Chip angeordnete Speicher. 16 zeigt, dass jeder der Sequenzer Seq 0 – Seq k einen Zugang zu einem zweiten Speicher haben kann, der von allen Sequenzern geteilt wird.
  • Wenn K > 0 und, üblicher, wenn K > t, kann das Mappen zwischen (1+ s)* t logischen Sequenzern zu K gegenständlichen Sequenzern während des Ablaufes dynamisch geändert werden. Infolgedessen kann ein solchen Ausführungsbeispielen die genaue Gruppierung der gegenständlichen Sequenzern entsprechend einem oder mehreren logischen T-Sequenzern 1620 und zu einem oder mehreren S-Sequenzern 1640 zugehörig für einen oder mehrere Metaprozessoren 1650 dynamisch während des Ablaufs geändert werden.
  • Das dynamische Mappen von logischen Sequenzadressen zu gegenständlichen Sequenzern kann als „Virtualisierung" bezeichnet werden. Die Virtualisierung von logischen Sequenzadressen ist eine Technik, die es erlaubt, Fäden, die mehrere Sequenzer für eine Ausführung benötigen, mittels einer dynamischen physikalischen Sequenzeranordnung auszuführen. Die Virtualisierung von logischen Sequenzadressen bezieht sich auf die Abstraktion von gesonderten logischen Sequenzadressen – gesehen von dem Faden von gegenständlichen Sequenzeridentifizierer- von physikalischen Sequenzern – gesehen von der gegenständlichen Multi-Sequenzer-Prozessorimplementation. Aufgrund dieser Trennung muss der Anwendungsprogrammierer lediglich die logischen Sequenzadressen kennen.
  • Wie bei dem oben in Verbindung mit 3 diskutierten Ausführungsbeispiel 300 können die sequenzerbewussten Befehle für das System 1600 eine logische Sequenzadresse für den Destinationssequenzer angeben. Bei wenigstens einem Ausführungsbeispiel des Systems 1600 ist die logische Sequenzadresse jedoch dynamisch zu einem physikalischen Sequenzer mappiert, nicht also statisch mappiert. Die dynamische Mappierung von logischen Sequenzadressen in gegenständliche Sequenzer kann verwaltet werden durch einen Mappingmanager 1670. Bei wenigstens einem Ausführungsbeispiel kann der Mappingmanager 302 den Grundzügen folgen, die oben in Verbindung mit 3 für den Mappingmanager 302 diskutiert worden sind. Während der Ausführung kann das Mappen für eine logische Sequenzadresse sich von einem gegenständlichen Sequenzer zu einem anderen ändern, muss dies aber nicht.
  • Der Mappingmanager kann verschiedene Aspekte der Sequenzerressourcen eines Systems 600 zusätzlich zu dem dynamischen Mappen von logischen Sequenzadressen in gegenständliche Sequenzer verwalten. Ein Mappingmanager 1670 kann zusätzlich die Bindung zwischen einem T-Sequenzer 1640 und einem oder mehreren S-Sequenzern 1640 in einem Meta-Prozessor 1650 verwalten. Zusätzlich kann ein Mappingmanager den Sequenzerzustandskontext und den Sequenzerfähigkeitsdeskriptor verwalten.
  • Bei einem Mulitsequenzersystem, das sequenzerbewusste Befehle verwaltet, kann die Größe des logischen Sequenzadressraums (d.h. die Gesamtanzahl von gesonderten logischen Sequenzadressen, die in den sequenzerbewussten Befehlen verwendet werden kann) architektural definiert sein unabhängig von der Anzahl von gegenständlichen Sequenzern, die bei einem gegebenen System vorhanden sind. Beispielsweise kann ein 32-Bit Wert zum Repräsentieren einer logischen Sequenzadresse verwendet werden unabhängig davon, ob die tatsächliche Anzahl für Sequenzer, für das Mehrsequenzersystem mit einer geringen Anzahl von Bits repräsentiert sein könnte. Bei einem solchen beispielhaften Ausführungsbeispiel können k Bits, wobei k = 32, verwendet werden, um bis zu 2k = 232 logische Sequenzadressen zu repräsentieren, unabhängig davon, wie viele gegenständliche Sequenzer das System aufweist.
  • Bei dem Beschreiben einer Mehrsequenzerarchitektur, etwa der von 1600, die in 16 offenbart ist, kann es bequem sein, die Bezeichnung „k-Bit Sequenzeradressierbarkeit" zu verwenden, um die Geamtanzahl von 2k logischen Sequenzadressen zu bezeichnen, auf die ein Faden (beispielsweise 225 oder 226 in 2) bezug nehmen kann auf eine Metaprozessor (beispielsweise 1650 von 16), der einen T-Sequenzer und (2k-1) S-Sequenzer hat. Umgekehrt kann ein Metaprozessor 1650 bestehend aus (1+s)-Sequenzern 1620, 1640 als einen log (1+s)-bit adressierbaren Sequenzerraum aufweisend bezeichnet werden. Entsprechend zeigt 16 ein Multisequenzerersystem 1600, wobei jeder Metaprozessor 1650 einen 2-bitadressierbaren logischen Sequenzadressraum hat.
  • Die 5 und 5 zeigen wenigstens zwei alternative Ausführungsbeispiele 400, 500 von Multithreading-Multisequenzersystemen, die für ein dynamisches Mappen der gegenständlichen Sequenzer auf logische Sequenzeradressen sorgen, die in sequenzerbewussten Befehlen auf der Verwenderebene verwendet werden. Entsprechende Elemente in den 4 und 5 zeigen entsprechende Bezugszeichen.
  • Für ein System 400, 500, das ein dynamisches Mappen von logischen-zu-gegenständlichen Sequenzern unterstützt, muss der Anwendungsprogrammierer nicht notwendigerweise wissen, wann und welcher gegenständliche Sequenzer verfügbar ist, um ihre Anwendung während der Ausführung durchzuführen. Sie können einfach eine logische Sequenzadresse in ihrem Anwenderprogramm verwenden. Wie oben beschrieben, kann es erwünscht sein, eine Programmansicht des Multisequenzersystems 400, 500 zu erlauben, um eine Anzahl (M) von logischen Sequenzadressen („Virt. 0” – „Virt. M") einzuschließen, die tatsächlich die Anzahl (N) von gegenständlichen Sequenzern 420-426 des Systems 400, 500 übersteigt. Bei solchen Ausführungsbeispielen kann der Mappingmanager 402, 502 zum Mappen von M logischen Sequenzadressen auf N gegenständliche Sequenzadressidentifizierer verantwortlich sein, wobei M > N. Bei anderen Ausführungsbeispielen ist M = N, oder M < N, und der Mappingmanager 402, 502 kann eine ähnliches oder möglicherweise einfaches Mappen durchführen, wie es oben bezüglich der Ausführungsbeispiele, die in 3 gezeigt ist, beschrieben ist.
  • Ein dynamisches Mappen der logischen Sequenzadressen in gegenständliche Sequenzer wird behandelt als „hinter der Bühne" des Mappingmanagers 402, 502 in einer Art und Weise, die für das Anwenderprogramm transparent ist. Wie in Verbindung mit den 4 und 5 gezeigt, sind „gegenständliche Sequenzer" die tatsächlichen Sequenzer (siehe beispielsweise 420-426), die in einem gegebenen gegenständlichen Mulitsequenzerhardwaresystem implementiert sind.
  • Die 4 und 5 zeigen, dass das System 400, 500 ein Speichermedium 406 aufweisen kann, das mit Ausführungsressourcen 490 gekoppelt sind. Das Speichermedium 460 kann ein Speichersubsystem in verschiedenen Hierarchieebenen sein, die verschiedene Arten von Cachespeicher, Mikrocode oder Firmwarespeicher wie ein nur Lesespeicher („ROM"), ein Systemspeicher wie einen dynamischen Speicher mit wahlfreiem Zugriff oder dergleichen, einen nicht-flüchtigen Speicher wie einen Flash-Speicher (d. h. einen memory stick usw.) eine magnetischen oder eine optischen Scheibe aufweisen kann. Das Speichermedium 400 kann, wie gezeigt, ein Applikationsprogramm 440 und einen Mappingmanager 402, 502 speichern.
  • Ein Mappingmanager 402, 502 kann primär auf Sequenzervirtualisierungsmanagementanforderungen ansprechen. Wie oben erläutert, muss der Mappingmanager 402, 502 nicht notwendigerweise ein Softwareprogramm sein, das in dem Speichermedium 460 gespeichert ist, wie dies in den Ausführungsbeispielen der 4 und 5 dargestellt ist. Bei anderen Ausführungsbeispielen kann der Mappingmanager 402, 502 bei jeder aus einer Vielzahl von Ebenen von Hardware- und Softwareabstraktionen vorhanden sein. Solche Abstraktionen können von der mikroarchitekturalen Ebene, der virtuellen Maschine oder dem Hypervisorarchitekturebene bis zu dem OS Kernel oder der Treiberebene und der nicht-privilegierten Anwendercodeebene reichen.
  • Ein Mappingmanager 402, 502 kann so verschiedenen Virtualisierungsanforderungen entsprechen. Der Mappingmanager 402, 502 kann einen Mappingmechanismus als auch einen Planungsmechanismus aufweisen. Der Mappingmechanismus kann eine Rationierungslogik 485 und eine Übersetzungslogik 486 aufweisen. Der Planungsmechanismus kann eine Rationierungslogik 485 und eine Übersetzungslogik 486 aufweisen. Der Planungsmechanismus kann eine Planungslogik 487 aufweisen.
  • Die Übersetzungslogik 486 kann den Versuch machen, eine Adressübersetzung für jeden sequenzerbewussten Befehl schaffen, der auf eine logische Sequenzadresse bezug nimmt. Für ein System 400, 500, das ein dynamisches Mappen aller Sequenzadressen in gegenständliche Sequenzer schafft, kann die Übersetzung von logischen Sequenzadressen (verwendet von einem Anwenderprogramm 440) in gegenständliche Sequenzeridentifizierer durch die Übersetzungslogik 486 für jeden Bezug eines sequenzerbewussten Befehl in eine logische Sequenzadresse ausführen.
  • 5 zeigt ein alternatives Ausführungsbeispiel eines Mappingmanager 402, 502, das eine Mappingstruktur 580 versenden kann, um eine Mappinginformation zu enthalten und zum Ausführen einer Übersetzung der logischen Sequenzadressen in gegenständliche Sequenzeridentifizierer. Die Mappingstruktur 580 kann bei wenigstens einem Ausführungsbeispiel in dem Speichermedium 460 sein. Allgemein wird für jeden Befehl, der als Operanden eine logische Sequenzadresse aufweist oder ansonsten auf die logische Sequenzadresse Bezug nimmt, die logische Speicheradresse von dem Mappingmanager 520 über ein Nachschlagen in der Mappingstruktur 580 übersetzt. Bei wenigstens einem Ausführungsbeispiel kann ein solches Nachschlagen zur Übersetzung unter Verwendung einer Unterstützung auf der Systemebene des Betriebssystems ausgeführt werden. Bei wenigstens einem alternativen Ausführungsbeispiel kann die Übersetzungstabelle durch eine anwendungspezifische Virtualisierung auf der Threadebene ausgeführt werden. Bei einem weiteren Ausführungsbeispiel kann die Übersetzungstabelle ausgeführt werden durch einen virtuellen Maschinenmonitor oder einen Hypervisor.
  • 5 zeigt weiter, dass ein optionaler Mechanismus von der Übersetzungslogik 486 verwendet werden kann, um die Übersetzung einer logischen Sequenzadresse in einen gegenständlichen Sequenzidenifizierer zu beschleunigen. 5 zeigt, dass die Ausführungsressourcen 490 des Systems weiter eine optionale Übersetzungsbeschleunigungsstruktur 518 aufweisen kann, um eine solche Beschleunigung zu unterstützen. Bei wenigstens einem Ausführungsbeispiel kann die Übersetzungsbeschleunigungsstruktur 518 als Speicher oder einen Puffer zum Halten eines Untersatzes von Einträgen der Mappingstruktur 580 arbeiten. Die Verwendung von gebrochenen Linien für die Übersetzungsbeschleunigungsstruktur 518, soll die optionale Natur einer solchen Struktur 518 angeben.
  • Wenn die Übersetzungslogik 486 nicht dazu in der Lage ist, den gegenständlichen Sequenzer zu lokalisieren nach dem Ausführen des Nachschlagens odr nicht dazu in der Lage ist, die Mappininformation für die logische Sequenzadresse zu lokalisieren, kann ein Fehler ausgelöst werden. Der Fehler wird so zugezogen bei einer logischen Sequenzeradressenübersetzungsfehlen (hier bezeichnet als „LSAT-Fehlen"). Das LSAT fehlen kann eine Steuerübertragung an einen Anwender auslösen, etwa die Rationierungslogik 485, um einen gegenständlichen Sequenzer als logische Sequenzadresse, die den Fehler verursacht hat, anzugeben.
  • Bezüglich dieser Fehler können die sequenzerbewussten Befehle, etwa SXFR, SSAVE, SRTOR, usw. als architektural mit einer Fehlersemantik definiert werden, so dass ein Fehlerzustand erzeugt wird, wenn die Übersetzungslogik 486 unfähig ist, einen physikalischen Sequenzer nach dem Nachschlagen zu lokalisieren oder unfähig ist, eine Mappierungsinformation für die logische Sequenzadresse zu lokalisieren. In Antwort auf diesen Fehler kann die Steuerung auf einen Fehleranwender übertragen werden, etwa die Rationierungslogik 485. Mit anderen Worten, kann ein LSAT-Fehlerzustand erhoben werden, wenn die Übersetzungslogik 486 und/oder die Mappierungsstruktur 480 bei einem Nachschlagen der logischen-zu-gegenständlichen Sequenzerübersetzung versagt.
  • Bei verschiedenen Ausführungsbeispielen des Mappierungsmanagers 402, 502 kann die LSAT-Fehlstörung auf unterschiedliche Weisen behandelt werden. Bei wenigstens einem Ausführungsbeispiel, bei dem der Mappierungsmanagers 402, 502 direkt in Hardware implementiert ist, kann der Mappierungsmanagers 402, 502 als eine Hardwarestatusmaschine implementiert sein, die den Fehlerzustand behandelt.
  • Bei einem anderen Ausführungsbeispiel kann der Fehler, der durch ein LSAT-Fehlen ausgelöst worden ist, ein mikroarchitekturaler Fehlerzustand sein, der von einem Mikrocodefluss auf der mikroarchitekturalen Ebene behandelt wird. Der Mikrocodefluss kann eine Abfolge von Mikrobefehlen sein, die in einem Mikrocodespeicher, etwa einem ROM-Abschnitt des Speichermediums 460 gespeichert ist. Bei wenigstens einem Ausführungsbeispiel kann der LSAT Fehldefektzustand einen Mikrocodesteuerübertrag zum Springen auf einen bestimmten Mikrocodefluss verursachen, der die Rationierungslogik 486 des Mappierungsmanagers 402, 502 implementiert.
  • Bei einem weiteren Ausführungsbeispiel kann der Fehlerzustand, der durch ein LSAT-Fehlen ausgelöst wird, für die architekturale Vorrangebene für eine virtuelle Maschine definiert sein. Der Fehlerzustand triggert eine Steuerungsübergabe auf einen virtuellen Maschinemonitor oder Hypervisor. Bei einem solchen Ausführungsbeispiel kann ein LSAT Fehlerdefektbedingung einer Gastsoftware wie einem Gastbetriebssystem einen Steuerungsübergang (etwa einem „VMEXIT")auf einen virtuellen Hostmaschinenmonitor oder Hypervisor auslösen. Der virtuelle Maschinenmonitor oder Hypervisor kann einen Mappierungsmanagers 402, 502 implementieren, der dem Fehler begegnet.
  • Bei noch einem weiteren Ausführungsbeispiel ist der LSAT-Fehler auf der Vorrangebene für Betriebssysteme definiert, etwa einem Ring-0-Privilegebene in einer IA32 Architektur, analog zu einem Speicherseitenfehler. Bei wenigstens einem Ausführungsbeispiel kann das LSAT-Fehlen so einen Systemebenenfehler auslösen. Ein derartiges Ausführungsbeispiel ist in den 4 und 5 gezeigt. Bei einem solchen Ausführungsbeispiel kann der Sequenzeradressübersetzungsfehler zur Steuerungsübertragung auf den Mappierungsmanagers 402, 502 führen, zu Softwareanwendern auf der Systemebene oder der OS Kernel oder auf den Gerätetreiber. Die Systemvorrangebene kann manchmal auch austauschbar als Supervisorvorrangeben in manchen Architekturen bezeichnet werden. Derartige Systemebenen LSAT Fehldefekte können beispielsweise einem Speicherseitenfehler verwandt sein, der bei einem Seitenfehler für einen Ladebefehl ausgelöst wird. In Antwort auf den Systemebenen LSAT-Fehlerzustand kann der Mappierungsmanagers 402, 502, der ein Betriebssystem oder ein Gerätetreiberanwender sein kann, aufgerufen werden um dem Fehler zu begegnen.
  • Bei einem weiteren Ausführungsbeispiel kann der LSAT-Fehlerzustand auf der architekturalen Vorrangebene definiert sein, die der Verwenderebene oder einer Nicht-Supervisorebenencode, (etwa einer Ring-3-Vorrangebene in der IA32 Architektur) zugehörig sein. Beispielsweise kann der Fehlerzustand als ein fehlerartiger Typ auf der Verwenderebene vom „Ertragsereignis" definiert sein. das, wenn es auftritt, eine Übertragung der Steuerung auf den Anwendercode auf Verwenderebene, der die Rationierungslogik 486 des Mappierungsmanagers 402, 502 implementiert. Bei einem solchen Ausführungsbeispiel kann der LSAT-Fehldefektzustand von demselben Verwenderprogramm bedient werden, einschließlich der den Fehler induzierenden sequenzerbewussten Befehl.
  • Für eines oder mehrere der oben diskutierten Ausführungsbeispiele kann der Fehler, der bei einem Fehlen der Übersetzung der logischen Sequenzeradresse (hier als ein „LSAT- Fehlen") während der Ausführung eines sequenzerbewussten Befehls entweder in einer synchronen oder einer asynchronen Weise behandelt werden. Bei dem asynchronen Ansatz kann der Sequenzer einen Fehlerzustand auslösen, wie oben beschrieben, und kann derart bedient werden, dass der Fehler als ein asynchrones Ereignis wirkt, das eine Übertragung der Steuerung auf den Mappierungsmanager 402, 502 oder, insbesondere bei wenigstens einem Ausführungsbeispiel, auf dem Behandlercode auslöst, der die Rationierungslogik 485 beinhaltet. Die Fehlerbehandlung wird ereignisgesteuert, (etwa auch bei einem LSAT-Fehlen) und der entsprechende Steuerungsübergang auf den Fehlerbehandler ist seiner Natur nach asynchron.
  • Bei wenigstens einem alternativen Ausführungsbeispiel kann die Architektur jedoch eine nicht-versagende Variante des sequenzerbewussten Befehls definieren. Das LSAT-Fehlen, nicht aber das Verursachen eines Fehlers, der einen asynchronen Steuerungsübergang auf einen Anwender verursacht, kann für eine spätere synchrone Behandlung aufgezeichnet werden. Das Fehlen kann, beispielsweise, durch Setzen eines „Vergiftungsbit" oder eines anderen Fehlindikators aufgezeichnet werden. In einem solchen Fall kann der Fehlindikator später während der Ausführung durch die Software geprüft werden. Wenn der Fehlindikator als gesetzt erkannt wird, kann er zu diesem Zeitpunkt behandelt werden. Auf diese Weise kann der Fehlerzustand wie er in dem Fehlindikator angegeben ist, synchron behandelt werden.
  • Bei einem solchen Ausführungsbeispiel erzeugt dann, wenn bei der Ausführung eines nichtversagenden sequenzerbewussten Befehls ein LSAT-Fehlen auftritt, der Befehl nicht einen architekturalen Fehler. Stattdessen kann der Fehler für eine spätere Verarbeitung aufgezeichnet werden und der Befehl schließt die Ausführung ab. Bei einem solchen Ausführungsbeispiel kann der Fehler als ein Teil des architekturalen Zustands auf eine Weise, die ähnlich der des Setzen eines Zustandsbits ist, aufgezeichnet werden. Der eine oder die mehreren Bits des architekturalen Zustands, der gesetzt ist auf einer Aufzeichnung auf ein LSAT-Übertragungsfehlen kann bezeichnet werden als ein „vergifteter" Zustand. Bei wenigstens einem Ausführungsbeispiel könnte der architekturale Zustand, der den „vergifteten" Zustand angibt, mehr als ein Bit sein. Bei wenigstens einigen derartigen Ausführungsbeispielen kann eine zusätzliche Information in einem Mehrbitzustand kodiert sein, zusätzlich dazu, ob ein LSAT-Fehlen aufgefunden worden ist, so als besondere Diagnoseinformation oder Hinweise, die eine mögliche Ursache des LSAT-Fehlerzustands angeben und/oder einige Information über den Sequenzerbefehl, der den Fehlerzustand verursacht hat.
  • Bei nicht unterbrechenden Ausführungsbeispielen kann die Software den vergifteten Zustand nach Abschluss der Beendigung für den nicht unterbrechenden sequenzerbewussten Befehl untersuchen. Wenn ein Übersetzungsfehlen aufgezeichnet worden ist, kann die Software einen synchrone Steuerungsübergang auf einen Anwender ausführen, der sodann den Übertragungsfehldefekt behandelt. Bei wenigstens einem Ausführungsbeispiel ist das Verhalten der nicht unterbrechenden Variante des sequenzerbewussten Befehls etwa analog zu dem Verwendungsmodell des LD:S und des CHK.S in der Architektur des Itanium® und des Itanium® 2 Mikroprozessors, wie sie von der Intel Corporation verfügbar sind, wobei der LD.S Befehl den Speicherseitenfehler untersuchen kann, nicht jedoch einen Seitenfehler verursachen kann auch bei dem Auffinden eines Fehlers bei der virtuellen Speicherübersetzung. Stattdessen vervollständigt das LD.S die Befehlsausführung, setzt jedoch ein Vergiftungsbit (als NAT Bit bezeichnet). Das Vergiftungsbit kann von dem CHK.S Befehl später bei der Anwendersoftware untersucht werden, was eine Steuerübergabe auf einen Behandler auf der Verwenderebene verursachen kann.
  • Zusammenfassend kann bei vielen unterschiedlichen Ausführungsbeispielen dann, wenn die Übersetzungslogik 486 nicht dazu in der Lage ist, eine gegenständlichen Sequenzer zu lokalisieren oder eine Mappinginformation für eine logische Sequenzeradresse, die in einem sequenzerbewussten Befehl (hier als „LSAT-Fehlen") angegeben worden ist, zu lokalisieren, das Fehlerverhalten entweder ein asynchrones architekturelles Ereignis sein, das die Steuerungsübergabe an einen Fehlerbehandler überträgt oder kann statt dessen ein Aufzeichnen eines vergifteten Zustands anzeigen, das durch eine Software synchron geprüft wird. Solche Fehlerverhalten können für unterschiedliche Vorrangsebenen in unterschiedlichen Ausführungsbeispielen definiert werden (wie, beispielsweise, einem Monitor einer virtuellen Maschine und der Hypervisorebene, der Systemvorrangsebene und der Verwenderebene).
  • Sowohl für die Ausführungsbeispiele 400 und 500 in den 4 und 5 kann der Mappierungsmanager 402, 502 auch zusätzlich zur Übersetzung, eine Mappingverwaltung ausführen. Bei wenigstens einem Ausführungsbeispiel kann wenigstens ein Teil der Mappingverwaltung durch die Rationierungslogik 485 ausgeführt werden. Die Rationierungslogik 485 kann, beispielsweise, aufgerufen werden, wenn ein LSAT-Fehlen erkannt wird. Die Rationierungslogik 485 kann einen gegenständlichen Sequenzer in eine logische Sequenzeradresse mappen, die in einem sequenzerbewussten Befehl spezifiziert wird. Ein logischer Sequenzer, der in einen gegenständlichen Sequenzer mappiert ist, wird hier als ein „aktiver logischer Sequenzer" bezeichnet, der entsprechende gegenständliche Sequenzer kann wiederum als „schmutziger gegenständlicher Sequenzer" bezeichnet werden. Ein gegenständlicher Sequenzer, der nicht als ein logischer Sequenzer mappiert ist, kann als ein „verfügbar" oder „leerlaufend" oder „frei" bezeichnet werden.
  • Bei wenigstens einem Ausführungsbeispiel kann die Rationierungslogik den Kontext eines aktiven logischen Sequenzers von dem entsprechenden schmutzigen gegenständlichen Sequenzer in einen Sicherungsspeicher räumen (unten in Verbindung mit 7 näher beschrieben) und sodann den sich ergebenen verfügbaren Sequenzer an den logischen Sequenzer geben, dessen Zugang gerade das Fehlen der LSAT verursacht hat. Derartige Kontextwechselvorgänge können durch die Rationierungslogik 485 beispielsweise dann ausgeführt werden, wenn keine zusätzlichen gegenständlichen Sequenzer leer laufen und für das Mappen verfügbar sind.
  • Das heißt, die Ausführungsressourcen 490 weisen eine finite Zahl N von gegenständlichen Sequenzern 420-426 auf, auf denen der Mappierungsmanager 402, 502 mappen kann und M logische Sequenzer zur Ausführung planen kann. Jeder aktive Shred (wie, beispielsweise, Shred 280 und/oder Shred 282 in 2), der durch einen aktiven Verwenderfaden geplant ist (wie, beispielsweise, 225 in 2) auf einem logischen Sequenzer benötigt einen gegenständlichen Sequenzer, auf dem er läuft. Entsprechend kann der Mappierungsmanager 402, 502 die Verteilung und das Mappen von gegenständlichen Sequenzern auf die logischen Sequenzer verwalten, um den Fortgang bei dem Ausführen der shreds auszuführen, die diesen logischen Sequenzern zugewiesen sind.
  • Bei dem Durchführen des Mappens und der Verteilungsfunktion, die oben beschrieben sind, können die Rationierungslogik 485 des Mappierungsmanagers 402, 502 gegenständliche Sequenzer (420-426), die zu logischen Sequenzadressen zu mappieren sind, zuweisen. Die Rationierungslogik 485 veranlasst die Unterteilungssequenzer mehrere Shreds von demselben Faden als auch mehrere Fäden von mehreren Prozessen aufzunehmen und 2) die Sequenzer effektiv zu verteilen, um so viele häufig bezogene Arbeitssätze von logischen Sequenzern in physikalischen Sequenzern wie möglich zu mappieren. Die Rationierungslogik 485 kann einen beliebigen von mehreren Ansätzen zum Verwalten von virtuellen-zu-gegenständlichen Sequenzermappern verwenden. Solche Ansätze können eine Basis und Grenzen, eine Segmentation, ein Paging oder dergleichen aufweisen. Diese Liste ist nicht erschöpfend, sie ist lediglich eine beispielhafte Auflistung.
  • Basis und Grenzen
  • Der Mappierungsmanager 402, der in 4 gezeigt ist, kann einen Basis- und Grenzenansatz unterstützen, um ein Mappen von virtuellen zu gegenständlichen Sequenzern zu verwalten. Bei einem derartigen Ausführungsbeispiel wendet der Mappierungsmanager 402 einen statischen Partionierungsansatz an, der einen statischen Teil des gegenständlichen Sequenzers für jeden Faden (oder, äquivalent, für jeden Metaprozessor) bestimmt. Der Mappierungsmanager 402 kann eine Hardwaremappingsstruktur 415 verwenden, um das Mappen auszuführen.
  • Bei wenigstens einem Ausführungsbeispiel weist die Mappingstruktur 415 wenigstens zwei Register auf: ein Basisregister 416 und ein Grenzenregister 417. Das Basisregister 416 kann einen Basissequenzeridentifikationswert für einen Faden aufweisen. Das Grenzregister 417 kann einen maximalen Sequenzeridentifikationswert für den Faden halten. Der Grenzregisterwert repräsentiert die höchste gültige virtuelle Sequenzeradresse, die der Faden erreichen kann. Gemeinsam definieren das Basisregister 416 und das Grenzregister 417 einen Bereich von gegenständlichen Sequenzern für den thread. Die Werte für das Basisregister 416 und das Grenzenregister 417 kann von dem Mappierungsmanager 402, 502 geladen werden wenn ein Faden geladen wird oder eingebracht wird.
  • Unter dem Basis- und Grenzansatz kann ein Faden nur auf die gegenständlichen Sequenzer zugreifen, die in dem Bereich der gegenständlichen Sequenzeridentifizierungen liegt, die von den Werten seines Basisregisters 416 und Grenzregisters 417 angegeben sind.
  • Die Bereichsprüfung kann bei jeder Bezugnahme auf eine logische Sequenzeradresse in dem Faden ausgeführt werden. Für jede Fadenreferenz auf einer logischen Sequenzeradresse hat der Faden die Illusion, dass er zu dem logischen Adressbereich von 0 bis zu dem Wert in dem Grenzenregister 417 Zugang hat. Der Faden hat gegenständlich jedoch Zugang zu gegenständlichen Sequenzern in dem Bereich von einer unteren Grenze, die durch den Wert in dem Basisregister 416 angegeben wird bis zu einer oberen Grenze, die berechnet wird als die Summe des Wertes in dem Basisregister 416 zuzüglich eines Wertes in dem Grenzenregister 417. Die Sequenzeradresse wird verglichen mit dem oberen Grenzwert in dem Grenzenregister 417. Wenn die Adresse nicht innerhalb der Grenze ist, kann ein Übersetzungsfehler für den Mappierungsmanager 402 erzeugt werden.
  • Segmentation
  • Ein alternativer dynamischer Adressmanagementansatz für eine logischen Sequenzer, der durch den Mappierungsmanager 402 unterstützt werden kann, kann den Basis- und Grenzansatz mit einem Segmentationsansatz beinhalten. Bei einem solchen Ausführungsbeispiel können die Ausführungsressourcen 490 einen Satz von Basis- und Grenzregistern 416, 417 für jedes „Segment" aufweisen. Entsprechend kann die Mappierungsstruktur 415 für x Segmente x Basisregister 416 und x zugehörige Grenzregister 417 einschließen, wobei jedes Registerpaar 416, 417 einem „Segment" zugehörig ist.
  • Ein „Segment" ist ein logischer Aggregationsblock von logischen Sequenzeradressen. Jeder Aggregationsblock von logischen Sequenzeradressen wird ein Segment genannt und kann eigene zugehörige Basis- und Grenzregistern 416, 417 haben. Bei einigen Ausführungsbeispielen wird das Basisregister 416 als Segmentbasisregister bezeichnet und das Grenzregister 417 wird als Segmentgrenzregister bezeichnet. Bei wenigstens einigen Ausführungsbeispielen wird die Segmentation zum Trennen der gegenständlichen Sequenzer in gesonderte Gruppen verwendet, die jede bestimmte Fähigkeitseigenschaften hat, wie, beispielsweise, Leistungseigenschaften, (beispielsweise Sequenzer in einem Segment, die schneller oder langsamer sind als ein anderes Segment) oder Sequenzertyp (d. h. Sequenzer in einem Segment können als T-Sequenzer mappiert sein, während diejenigen aus einem anderen Segment als S-Sequenzer mappiert sind).
  • Paging basiertes Adressmanagement der logischen Sequenzer.
  • 5 zeigt ein Ausführungsbeispiel eines Mappingmanagers 520, der einen pagingbasierten Ansatz zum Verwalten des dynamischen Mappens von logischen Sequenzeradressen verwendet.
  • 5 zeigt, dass die gegenständlichen Sequenzer 420-426 als kleine, gleichgroße Partitionen, die als „frames" 510 bezeichnet werden, organisiert sein können. Obwohl in 5 lediglich zwei Frames 510 gezeigt sind, ist diese Darstellung nicht einschränkend zu verstehen. Der Mappierungsmanager 502 kann ein Virtuell-zu-Gegenständlich-Mappen für jede Anzahl von Frames verwalten. Zusätzlich können die Frames jede beliebige Anzahl von Sequenzern aufweisen.
  • Der Mappierungsmanager 502 kann einen auf einem Paging basierenden Ansatz erzwingen, bei dem der Adressraum des logischen Sequenzers für dynamisch mappierte Adressen eines logischen Sequenzers aufgeteilt werden kann in eine Anzahl von gleich großen Partitionen, die als „Seiten" bezeichnet werden. Die Anzahl der logischen Sequenzer auf einer Seite ist dieselbe wie eines Rames. Entsprechend ist der Adressraum des logischen Sequenzers effektiv eine Sammlung von logischen Sequenzerseiten einer gegebenen Framegröße.
  • Eine kleine Seite kann möglicherweise die Größe einer Seitentabelle erhöhen, während eine große Seite möglicherweise zu einer relativ hohen internen Fragmentation führen kann. Die Rationierungslogik 486 kann gegenständliche Sequenzer zuordnen und logische Sequenzer auf Seitenebenen von Granularität mappen. Bei dem in 5 dargestellten Ausführungsbeispiel hat jeder Rahmen zwei gegenständliche Sequenzer.
  • Eine architekturale Unterstützung für einen Seitenbasierten Adressraum des logischen Sequenzers kann ein Register 525 oder eine andere Struktur zum Speichern eines Zeigers auf die Seitentabelle aufweisen. Bei wenigstens einem Ausführungsbeispiel ist berücksichtigt, dass die Seitentabelle in einer Mappierungsstruktur 580 in einem Speichermedium 460, wie beispielsweise, einem Speicher beinhaltet ist. Es wird weiter angenommen, dass bei wenigstens einem Ausführungsbeispiel der Wert in dem Zeigerregister 525 geladen wird, um die Basisspeicheradresse oder den Ort der Seitentabelle anzugeben. Die architekturale Unterstützung für den seitenbasierten Adressraum des logischen Sequenzers, kann weiter ein Register 526 oder eine andere Struktur aufweisen, um einen Wert für die Größe der Seitentabelle zu halten.
  • Der Pagingmechanismus kann verwendet werden, um die gegenständliche Sequenzer 420-426 in Partitionen mit fester Größe von entweder gleicher oder ungleicher Größe als eine Basiseinheit von Sequenzerallokation verwendet werden. Für gleich große feste Partitionen von Sequenzern kann jede Partition einem Faden zugeordnet werden. Ein solcher Ansatz kann zu einer internen Fragmentation führen, da nicht alle Fäden notwendigerweise auf dieselbe Anzahl von Sequenzern zugreifen. Ein Nutzen eines solchen Ansatzes ist jedoch, dass der Platzierungsalgorithmus, der durch die Rationierungslogik 485 des Mappingmanagers 402, 502 verwendet wird, flexibler sein kann, da alle Partitionen von gleicher Größe sind, so dass es gleichgültig ist, welche bestimmte Partition einem Faden tatsächlich zugeordnet wird.
  • Die Verwendung von gleich großen Partitionen für den Paginmechanismus erlaubt die Verwendung einer einzelnen Bitmap zum Mappen eines kleine Arbeitssatzes von logischen Sequenzern von einem großen und knappen Satz von logischen Sequenzeradressen auf einen kleinen Satz von gegenständlichen Sequenzern. Dieser Nutzen wird in einem Segmentationsansatz nicht verwirklicht, wo ein Segment einen Satz von kontinuierlich bezeichneten gegenständlichen Sequenzern repräsentiert. Bei einem Segmentationsansatz kann der Mappierungsmanager 402, 502 nicht nur eine geringe gesonderte Anzahl von logischen Sequenzeradressen auf die gegenständlichen Sequenzer mappen.
  • Alternativ können Seiten eines festen Satzes von unterschiedlichen Größen durch die Mappierungsmanager 402, 502 verteilt werden. Bei einem solchen Ansatz kann einem Faden die kleinste verfügbare Partition, die für den Faden groß genug ist, zugeordnet werden. Da die Rationierungslogik 485 kleinere Partitionen solchen Fäden, die kleinere Sequenzerblöcke erfordern, zuordnen kann, kann die interne Fragmention kleiner sein als bei einem Ansatz mit gleich großen festen Partitionen. Das heißt, es ist möglich, jedem Faden zu der kleinsten verfügbaren Partition innerhalb der der Faden passen wird, zuzuordnen. Dieser Ansatz kann möglicherweise zu einer externen Fragmentation führen. Das heißt, die externe Fragmentation kann auftreten wenn, obwohl die Summe von verfügbaren gegenständlichen Sequenzern 420-426 genug ist für die Erfordernisse eines physikalischen Sequenzers eines Fadens, keine einzelne Partition des gegenständlichen Sequenzers die groß genug ist für den Faden, verfügbar ist. Die Rationierungslogik 485 hat daher eine geringere Flexibilität in dem Platzierungsalgorithmus für feste Partitionen mit variabler Länge, als mit gleich großen Partitionen.
  • Alternativ kann der Mappingmanager 402, 502 einen Partitionierungsansatz unterstützen, in der Sequenzerpartitionen von unterschiedlicher Größe sein kann und dynamisch erzeugt werden können. Bei einem solchen Ansatz kann die Rationierungslogik 485 genau die geeignete Anzahl von Sequenzern für jeden Faden zuordnen. Für ein System, bei dem mehr als ein Sequenzer für einen Faden verwendet werden kann, kann die dynamische Sequenzerallokation und die Deallokation zu einer externen Fragmentierung führen. Um eine solche externe Fragmentierung zu vermeiden, kann der Mappierungsmanager 402-502 für ein System, das einen dynamischen Sequenzerpartionierungsansatz verwendet, eine Verdichtung implementieren. Eine solche Verdichtung hat einen relativ zugehörigen Overhead, in dem es eine Relokation (siehe, beispielsweise, die Relokationslogik 910 von 9) von allen Kontexten des Status der Sequenzer für einen oder mehrere Fäden einschließt, so dass diese anderen zugehörigen Sequenzern „benachbart" sein können, und so dass die freien gegenständlichen Sequenzer in einem kontinuierlichen Block verbleiben. Bei wenigstens einigen Ausführungsbeispielen ist die Relokationslogik 910 aufgerufen zum Relozieren und Remappen des Sequenzers, um bestimmten Fähigkeitsanforderungen zu entsprechen, die gemeinsam sind mit dem Mappen zu logischen zu gegenständlichen Sequenzern. Beispielsweise kann bei einem Ausführungsbeispiel ein logischer Sequenzer zugehörig sein einem Fähigkeitsdeskriptor, der ein Remappen immer dann erfordert, wenn der darunter liegende gegenständliche Sequenzer einen bestimmten thermischen Schwellenwert übersteigt. Bei wenigstens einem Ausführungsbeispiel wird der Relokationsvorgang, der von 910 ausgeführt wird, manchmal als ein „Sequenzerhoppen" bezeichnet.
  • Die Rationierungslogik 485 eines Mappierungsmanagers 402, 502 für ein System, das ein dynmaisches Sequenzermappen verwendet, kann beliebige aus verschiedenen Mappingtechniken verwenden. Diese Mappingtechniken können für jede Einheit der Allokation verwendet werden, so als individuelle gegenständliche Sequenzer, Segment, Seiten, usw. Eine besondere Auflistung derartiger Ansätze erfolgt unten. Dem Fachmann ergibt sich jedoch, dass eine Rationierungslogik 485 zusätzlich die Vorteile der Fähigkeit des Sequenzers bei dem Ausführen von dem Mappen von logischen zu gegenständlichen Sequenzern nutzen kann. Eine weitere Diskussion dieser zur Fähigkeit beitragenden Mappingbetrachtungen ergibt sich in Verbindung mit 13.
  • Im Allgemeinen kann ein Mappierungsalgorithmus, der von der Rationierungslogik 485 für ein System verwendet wird, das einer dynamischen Sequenzeralloaktion folgt und dem Mappierungsansatz, das Folgende einschließen, obwohl eine solche Liste nicht abschließend ist:
    • a. Best-Fit Algorithmus. Der Mappierungsmanager 402, 502 tastet alle freien Partitionen von physikalischen Sequenzern ab und wählt die Partition des physikalischen Sequenzers, der in der Größe derjenigen am nächsten ist, die für den angeforderten Faden benötigt wird. Ein solcher Algorithmus kann zu einer relativ guten Anpassung führen und daher einer effizienten Nutzung der tatsächlichen Sequenzer – die kleinste verfügbare Partition ist groß genug, um einem Faden zugeordnet zu werden.
    • b. First-Fit Algorithmus. Der Mappierungsmanager 402, 502 wählt die erste verfügbare Partition des Sequenzers aus, die groß genug ist.
    • c. Next-Fit Algorithmus. Mappierungsmanager 402, 502 tastet die Partitionen von Sequenzern ausgehend von dem Ort der unmittelbar von ...Allokation ab und wählt die nächste verfügbare Partition, die groß genug ist.
  • Unabhängig davon, wie die Sequenzer partitioniert sind, kann das Mappen 402, 502 die Rationierungslogik 485 aufweisen, die das dynamische Mappen eines gegenständlichen Sequenzers verwaltet oder die Partition von gegenständlichen Sequenzern, zu einem Faden jedes Mal, wenn ein Bezug auf eine logische Sequenzadresse in einem ersten Programm in einem LSAT-Fehlen auftritt. Nachfolgende Bezugnahmen auf die logische Sequenzeradresse von dem Programm können durch die Übersetzungslogik 486 vernetzt werden, ohne dass ein LSAT-Fehlen auftritt.
  • Während einige der oben diskutierten Partitionierungsschemata oberflächlich ähnlich bekannten Speichermanagementtechniken zu sein scheinen, beinhaltet die Anwendung derartiger Techniken auf Sequenzer einzigartige Anforderungen. Im Gegensatz zu Register- und Speichervirtualisationsschemata schließen Sequenzer nicht einfach den spatialen Kontext der Datenspeicherung ein. Statt dessen ist ein Sequenzer eine Ausführungsressource, die weit mehr Eigenschaften beinhalten und daher komplexere Betrachtungen.
  • Zur weiteren Darstellung wenigstens einiger der einzigartigen Merkmale von gegenständlichen Sequenzern als eine dynamisch mappierte Ressource, bezieht sich die nachfolgende Diskussion auf einen gegenständlichen Sequenzer als eine Basiseinheit einer Sequenzerallokation. Der Fachmann erkennt jedoch, dass die nachfolgende Diskussion auch für andere Allokationseinheiten zutrifft, einschließlich Segmenten und/oder Rahmen von gegenständlichen Sequenzern.
  • Ein Faden kann mehrere sequenzerbewusste Befehle beinhalten. Wir verwenden den Wert Y zum Darstellen in einer Anzahl von einzigartigen logischen Sequenzeraderessen, die in diesen Befehlen in einen Faden bezogen sind. Die Mappierungsmanager 402, 502 können einen gegenständlichen Sequenzer auf jeden von Y logischen Sequenzeradressen des Fäden mappen. Für einen Faden, der eine Gesamtzahl von Y von einzigartigen logischen Sequenzeradressen beinhaltet, kann der Faden einen Fortschritt bedeuten, solange wenigstens ein gegenständlicher Sequenzer dem Faden zugeordnet ist. Der Mappingmanager 402, 502 kann dies erreichen durch Multiplexen von mehreren (Y) logischen Sequenzerkontexten auf dem einzigen physikalischen Sequenzer. Mit anderen Worten, kann während die Menge eines Fäden von dem OS angegeben ist, der Mappierungsmanager 402, 502 alternativ jeden der Y mehrfachsequenzerkontextes Fäden zu Z gegenständlichen Sequenzern zuordnen, wobei Z genau 1 sein kann. Dieses Mulitplexen kann für jede Anzahl von Y logischen Sequenzadressen und Z gegenständlichen Sequenzern durchgeführt werden, wobei Y > Z.
  • Bei wenigstens einem Ausführungsbeispiel kann zum Handhaben der Y > Z Multiplexsitutation kann ein Multisequenzer-Multithreadingsystem 500 eine Kontextschlange die einen logischen Sequenzer („LSCQ") 527 aufweisen. Bei wenigstens einem Ausführungsbeispiel kann die LSCQ 527 eine Datenstruktur sein. Bei dem in 5 dargestellten Ausführungsbeispiel wird LSCQ 527 in dem Speichermedium 460 gespeichert, bei dem es sich um ein Speichersystem handeln kann, und kann ein Teil des Sicherungsspeichers 575 sein. Bei wenigstens einem Ausführungsbeispiel weist die LSCQ 527 wenigstens Y-Z Eingänge auf und kann bis Y Eingänge aufweisen. Jeder Eingang ist dazu in der Lage, die Kontextinformation für einen logischen Sequenzer zu halten, aber auch andere Information wie eine Fähigkeitsattributsinformation, wie Sequenzerhoppinanforderungen und Sequenzerplanungsanforderungen.
  • Wenn ein Faden mit Y logischen Sequenzeradressen mulitplext wird, um auf Z gegenständlichen Sequenzern zu laufen, führt der Mappierungsmanager 402, 502 ein Umschalten des Sequenzerkontext zu jedem Zeitpunkt, wenn ein logischer Sequenzer ausgeschaltet wird, aus, und ein neuer logischer Sequenzer wird zu einem gegenständlichen Sequenzer eingeschaltet. Während dieses Kontextschaltens wird der gegenwärtige Kontext eines schmutzigen gegenständlichen Sequenzers, der einem aktiven logischen Sequenzer aus Y logischen Sequenzern zugehörig ist, in dem entsprechenden Eingang des LSCQ 527 gesichert. Sodann wird der Kontext des neuen logischen Sequenzers kopiert oder in den gegenständlichen Sequenzer „eingeschaltet".
  • Der Mappierungsmanager 402, 502 karin so einen Kontextsicherungsvorgang für den gegenwärtigen logischen Sequenzer (dem einen, der ausgeschaltet ist) und einen Kontextwiedergewinnungsvorgang für den neuen logischen Sequenzer (demjenigen, der eingeschaltet wird) während eines Y > Z Multiplexen von logischen Sequenzadressen in gegenständliche Sequenzer ausführen. Es wird angenommen, dass der Mappierungsmanager 402, 502 die mulitplexen Y logischen Sequenzerkontexte in bzw. aus dem LSCQ 527 sichern bzw. rückgewinnen wird.
  • Wenn ein Fadenwechsel auf der OS-Ebene für einen ersten Faden ausgeführt wird, kann das OS einen SSAVE Vorgang ausführen, um die Kontexte der Z gegenständlichen Prozessoren für den Faden zu sichern, als auch jede Kontextinformation, die zu dem LSCQ 527 für Y-Z nichtaktive logische Sequenzadressen, die dem Faden zugehörig sind, gesichert worden ist, in dem OS-Kernel Sicherungsbereich als dem Gesamtfadenkontext. Bei einem späteren Fadenwechsel kann der SRSTOR Vorgang durch den OS Kernel zum Wiedergewinnen des Fadenkontextes einschließlich aller Y logischen Sequenzerkontexte ausgeführt werden. Solche Vorgänge, die von dem OS kernel durchgeführt werden, werden hier als virtualisierte SSAVE und SRSTOR Vorgänge bezeichnet. Derartige SSAVE und SRSTOR Vorgänge können durch das OS durchgeführt werden. Bei wenigstens einigen Ausführungsbeispielen kann der virtualisierte SSAVE und der SRSTOR Mechanismus auf verschiedenen Vorrangsebenen einschließlich dem virtuellen Maschinenmotor und den Mikrocodeschichten implementiert werden, wie oben beschrieben.
  • Während eines SRSTOR Vorgangs kann das OS bis zu Z der Y logischen Sequenzerkontexte aus dem Fadenkontextsicherungsbereich des OS Kernels in die Z-gegenständlichen Sequenzer, die jetzt für den Faden verfügbar sind, rückgewinnen (Z kann eine unterschiedliche Zahl sein als sie es war, als der Faden zuvor aktiv war, Z ist mindestens 1). Der Rest der Y virtuellen Sequenzer des Fäden wird in Y-Z Eingange des LSCQ 527 des Fäden gespeichert. Bei wenigstens einem Ausführungsbeispiel gewinnt der STSTOR Vorgang alle Y logischen Sequenzerkontexte aus dem den Fadenkontext speichernden Bereich des Kernels in einen Y-Eingang LSCQ 527 während des SRSTOR-Vorgangs, statt Z-logische Sequenzerkontexte direkt in die entsprechenden Z-gegenständlichen Sequenzer zu speichern. Bei einem solchen Ausführungsbeispiel können die Y-logischen Sequenzerkontexte gemappt und geplant werden für Z-gegenständliche Sequenzer unter Verwendung von verschiedenen Strategien. Solche Strategien können eine Anforderungsverteilung einschließen. Bei einer Anforderungsverteilung wird, wenn auf einen logischen Sequenzer Bezug genommen wird, aus den LSCQ 527 ausgewählt und der Mappierungsmanager 402, 502 versucht, einen leer laufenden gegenständlichen Sequenzer aus dem Z-gegenständlichen Sequenzern auf den logischen Sequenzer zu mappen. Wenn kein leer laufender gegenständlicher Sequenzer vorhanden ist, kann der Mappingmanager 402, 205, einen schmutzigen gegenständlichen Sequenzer auswählen, ein Sequenzerkontext des „swap" ausführen, um den Kontext in einen geeigneten Eingang für den entsprechenden logischen Prozessor in dem LSCQ 527 zu sichern und den neuen logischen Sequenzer einplanen zum Mappen des gegenständlichen Sequenzers, der gerade geräumt worden ist.
  • Alternativ kann während des Multiplexens der Mappingmanager 402, 502 während der Quanten für den Faden die Y-logischen Sequenzer für eine Ausführung auf dem Z- gegenständlichen Sequenzern vorsehen. Der Mappingmanager 402, 502 kann einen Planungsansatz verwenden, etwa einen einfachen zeitbasierten Rundlaufansatz unter Verwendung von Unterquanten. Jedes Unterquantum kann eine Fraktion oder ein Teil der OS Quanten für das Vorbereiten sein. Alternativ kann der Mappingmanager 402, 502 unterschiedliche Vorbereitungsansätze verwenden, etwa einen ereignisgesteuerten Ansatz. für den ereignisgesteuerten Ansatz kann ein logischer Sequenzer aus einem physikalischen Sequenzer bei dem Auftreten eines Cachefehlens oder einem anderen relativ Ereignis mit relativ langer Latenz ausgeschaltet werden. Bei dem ereignisgesteuerten Ansatz kann ein logischer Sequenzer auch von einem gegenständlichen Sequenzer ausgeschaltet werden bei dem Auftreten eines Ereignisses, das aufgetreten ist aufgrund des Prüfens einer eingeschränkten Kapazität, etwa einem schmutzigen gegenständlichen Sequenzer, der einen thermische Schwelle übersteigt, das es erfordert, den gemappten logischen Sequenzer in das LSCQ 527 zu räumen zum neuen Planen (was ein Wechseln des Sequenzers einschließen kann).
  • Bei wenigstens einem Ausführungsbeispiel kann die LSCQ 527 Verwaltung, die von dem Mappingmanager 402, 502 durchgeführt wird, ein Teil des Betriebssystems sein. Bei einem solchen Ausführungsbeispiel kann das OS zum Verwalten des LSCQ 527 und zum Planen der Y logischen Sequenzerkontexte auf die Z-gegenständlichen Sequenzer verantwortlich sein.
  • 6 zeigt eine weitere Einzelheit einer Mappingstruktur 580, die von dem Mappingmanager 402, 502 beibehalten werden kann (5). 6 wird hier unter Bezugnahme auf 5 diskutiert. Die Mappingstruktur 580 kann von der Übersetzungslogik 486 (5) zum Ausführen der Sequenzeradressen von einem logischen zu einem gegenständlichen Sequenzer befragt werden. Einträge in die Mappingstruktur kann durch die Rationierungslogik 485 (5) verwaltet werden, wenn ein gegenständlicher Sequenzer zugeordnet oder freigegeben wird, einschließlich einer neuen Anordnung für eine logische Sequenzeradresse.
  • Die Mappingstruktur 580 kann eine Mappingtabelle 610 für jeden Faden aufweisen. Beispielsweise zeigt 6 Mappingstrukturen 610a, 610b, 610c und 610d, der Fäden A, B, C und D zugehörig sind. Obwohl in 6 lediglich vier spezifische Fäden gezeigt sind, ist das Beispiel von 6 nicht als einschränkend anzusehen. 6 zeigt, dass jede beliebige Anzahl x von Fäden von dem Mappingmanager aufgenommen werden kann, der einen seitenbasierenden Mappingansatz für die logische Sequenzeradresse unterstützt (etwa der Mappingmanager 502, der in 5 gezeigt ist).
  • Bei wenigstens einem Ausführungsbeispiel kann die Mappingstruktur 580 eine Frameliste 620 für freie Sequenzer aufweisen, über die der Mappingmanger 502 die Spur derjenigen gegenständlichen Frames beibehält, die gegenwärtig nicht zugeordnet und die daher zur Verteilung verfügbar sind, wenn in einem sequenzbewussten Befehl auf eine neue logische Sequenzeradresse bezug genommen wird.
  • Bei dem in 6 gezeigten Beispiel, das lediglich illustrativen Zwecken dient und nicht als Einschränkung anzusehen ist, ist jede Mappingtabelle 610 eine Sequenzerseitentabelle, die einen Eingang für jede Seite des entsprechenden Fäden einschließt. Entsprechend weist das Beispiel von 6 drei Seiten für den Faden A und den Faden B auf, und weist vier Seiten für den Faden C und den Faden D auf. Die Sequenzerseitentabelle 610 kann einfach als „Seitentabelle" in der folgenden Diskussion bezeichnet werden.
  • 6 zeigt, dass jeder Eingang 630 einer Fadenseitentabelle 610 ein Sequenzerseitenframeadressfeld 632 aufweisen kann. Der Mappingmanager 502 kann einen Wert in das Seitenframeadressfeld 632 platzieren, wenn ein physikalischer Sequenzer der Seite entsprechend dem Eintrag 632 zugeordnet ist. (Bei wenigstens einem Ausführungsbeispiel kann der Wert in das Adressfeld 632 durch die Rationierungslogik 485 für eine anfängliche Zuordnung oder durch eine Neuanordnungslogik (siehe 910, 9) für eine Neuanordnung platziert sein). Der Wert des Seitenframeadressfeldes 632 gibt eine Seitenframeadresse für den Seitenframe an, zu dem mappierte Sequenzer gehört. Für einen gegenwärtig aktiven Faden kann der Wert des Seitenframeadressfeldes 632 die Basisadresse des gegenständlichen Sequenzerframes angeben, zu dem die entsprechende Seite des Fäden zugeordnet ist. Für einen Faden, der seine Ausführung nicht beendet hat, jedoch ausgewechselt worden ist, um Raum für einen anderen Faden zu machen, gibt der Wert des Sequenzerseitenframeadressfeldes 632 die Zeigeradresse für die nicht gemappte Sequenzerseitenkontextinformation des Fadend, die in dem Sicherungsspeicher 575 gespeichert worden ist, (siehe, beispielsweise, den Sicherungsspeicher 575 in 5), an.
  • 6 zeigt, dass der Eintrag 630 auch ein Vorhanden/Nichtvorhanden-Feld 634 aufweisen kann. Der Wert des Vorhanden/Nichtvorhanden-Feldes 634 kann angeben, ob die Kontextinformation für die Fadenseite in dem gegenständlichen Sequenzerframe vorhanden ist oder ob es in dem Sicherungsspeicher 575 vorhanden ist. Der Wert des Vorhanden/Nichtvorhanden-Feldes 634 kann daher von dem Mappingmanager 502 verwendet werden um zu bestimmen, ob die Inhalte des Sequenzerseitenframeadressfeldes 632 die Basisadresse des gegenständlichen Sequenzerrahmens ist oder ob es einen Ort einer logischen Sequenzerseite mit dem Sicherungsspeicher 575 angibt. Der Wert des Bits, das das Vorhandensein angibt, kann zum Auslösen eines Seitenfehlers bei einigen Ausführungsbeispielen untersucht werden.
  • 6 gibt an, dass jeder Eintrag 630 auch weitere Felder einschließen kann. Bei einigen Ausführungsbeispielen können einige oder mehrere dieser zusätzlichen Felder die Skriptoren für Fähigkeitsattribute halten, um Eigenschaften anzugeben oder Einschränkungen anzugeben, die dem virtuellen Sequenzerframe zugehörig sind, repräsentiert durch den Eintrag 630. Beispielsweise kann der Eintrag 630 ein Schutzfeld 636 angeben, das durch eine Schutzlogik verwendet werden kann und eine optionale Teilungslogik (siehe 912, 914 von 9) des Mappingmanagers 502.
  • Natürlich können verschiedene Ausführungsbeispiele zusätzliche oder unterschiedliche Felder als diejenigen, die in 6 dargestellt sind, aufweisen. Beispielsweise kann der Eintrag 630 ein Vorbereitungsfeld 638 aufweisen. Das Vorbereitungsfeld 638 kann eine Planungsinformation für den zugehörigen logischen Sequenzerframe halten. Die Vorbereitungsinformation kann, beispielsweise, eine oder mehrere auf dem Alter basierende Hinweise beinhalten, um anzugeben, wenn oder wie häufig der Frequenzerframe zum Mappen oder Neumappieren einschließlich der Neuanordnung wie etwa ein Sequenzerhoppen anzugeben. Zusätzlich oder stattdessen kann die Vorbereitunsgsinformation 638 eine Fähigkeitsinformation beinhalten, die eine oder mehrere Eigenschaften angibt, die für den gegenständlichen Prozessor auf dem der logische Sequenzframe vorgesehen ist, angibt. Beispielsweise kann die auf der Leistungsfähigkeit basierende Vorbereitungsinformation eine gewünschte minimale Eigenschaft oder ein maximales Maß für die Energie pro Befehl für einen gegenständlichen Zielsequenzerframe beinhalten.
  • Eine kurze Bezugnahme auf 10 zeigt, dass bei wenigstens einem Ausführungsbeispiel des Verfahrens 1000 zum Übersetzen einer logischen Sequenzeradresse 1030 in einen gegenständlichen Sequenzidentifizierer 1040. Bei wenigstens einem Ausführungsbeispiel kann das Verfahren 1000 durch eine Übersetzungslogik des Mappingmanagers durchgeführt werden (siehe, beispielsweise, die Übersetzungslogik 486 des Mappingmanagers 502, wie in 5 gezeigt).
  • 10 ist ein Flussdiagramm, das den Daten- und Steuerungsfluss bei wenigstens einem Ausführungsbeispiels eines allgemeinen Verfahrens 1000 zum Verwenden einer Mappingstruktur (siehe, beispielsweise, 580 von 5) zum Ausführen einer logischen Sequenzeradressübersetzung wiedergibt. Insbesondere zeigt 10 die Verwendung einer oder mehrerer Seitentabellen 1010 als Mappingstruktur 580 (5).
  • Das Verfahren kann zum Ausführen einer logischen Frequenzadressübersetzung für ein Multitthreadingsystem, das mehrere Sequenzer aufweist (siehe beispielsweise 420-426 von 5) verwendet werden. Das Verfahren 1000 kann durch einen Mappingmanager 1020 entsprechend den Grundzügen des Mappingmanagers 502, der in 5 gezeigt ist, ausgeführt werden. Bei wenigstens einem Ausführungsbeispiel kann das Verfahren 1000 durch die Übersetzungslogik eines Mappingmanagers (siehe beispielsweise 485 des Mappingmanagers 502 in 5) ausgeführt werden. Bei wenigstens einem Ausführungsbeispiel kann der Mappingmanager 1020 ein Programm eines Betriebssystems sein, so dass das Verfahren 1000 von dem Betriebssystem ausgeführt wird. Bei wenigstens einem weiteren Ausführungsbeispiel kann das Verfahren 1000 durch einen Mappingmanager 1020 ausgeführt werden, der eine Routine auf der Verwenderebene ist, das geschrieben worden ist von, beispielsweise, einem Anwendungsprogrammierer. Bei wenigstens einem weiteren Ausführungsbeispiel kann das Verfahren 1000 durch einen Mappingmanager 1020 ausgeführt werden, der ein Monitor einer virtuellen Maschine ist oder einem Hypervisor. Bei wenigstens einem Ausführungsbeispiel kann das von dem Mappingmanager 1020 ausgeführte Verfahren 1000 durch die Verwendung einer Übersetzungsbeschleunigungsstruktur beschleunigt werden (siehe beispielsweise 518, dargesetllt in 5).
  • Es sollte beachtet werden, dass die gegenständlichen Sequenzer 420-426, auf die oben in Verbindung mit 5 bezug genommen worden ist, nicht symmetrisch sein müssen, ihre Anzahl sollte nicht als einschränkend verstanden werden. Bezüglich der Symmetrie können einer oder mehrere der physikalischen Sequenzer von einem oder mehreren der anderen physikalischen Sequenzer im Hinblick auf jede Eigenschaft oder Rangordnung unterschiedlich sein. Bei wenigstens einigen Ausführungsbeispielen können die Eigenschaft des gegenständlichen Sequenzer oder die Rangordnung Dimensionen, Wort und/oder Datenweggröße, Topologie, Speicherart und/oder -größe, Leistungsverbrauch, Anzahl der funktionellen Einheiten, Kommunikationsarchitekturen (muliti-drop gegenüber Punkt-zu-Punkt-Verbindung) Operationsfrequenz, Größe, Befehle pro Zyklus, Energieverbrauch pro Befehl, thermische Eigenschaft, Fähigkeit bezüglich des Setzens von Befehlssatzunterstützung, OS-Sichtbarkeit), oder jedes andere Maß in Bezug auf Funktionalität, Eigenschaft, Grundfläche, Leistung, thermische Maße oder dgl. einschließen. Diese Eigenschaften sind lediglich illustrativ und sollten nicht als einschränkend verstanden werden. Sie sind als Beispiele aufgelistet um zu illustrieren, dass zwei physikalische Sequenzer in einem asymmetrischen Multi-Sequenzer-System sich unterscheiden können gegenüber einem oder einer Kombination der obigen Eigenschaften oder Maße. Bei wenigstens einigen Ausführungsbeispielen können einige dieser Eigenschaften ausgedrückt werden als Teil des Fähigkeitsdeskriptors für die logischen Sequenzer und geprüft werden bei dem Mappen vom logischen Sequenzer zum gegenständlichen Sequenzer.
  • Bezüglich der Anzahl von Sequenzern kann das Übersetzungsverfahren 1000 für jede Anzahl von Sequenzern verwendet werden. Beispielsweise kann das Übersetzungsverfahren 1000 für ein Multi-Sequenzer-System implementiert sein, das vier, acht, sechzehn, zweiunddreißig, vierundsechzig, einhundertachtundzwanzig und mehr Sequenzer aufweist.
  • 10 zeigt, dass der Mappierungsmanager 1020 über eine logische Sequenzadresse 1030, die eine logische Seitenzahl 1032 und einen Versatz 1034 aufweist, zum Aufführen der Übersetzung 1050 aufnehmen kann,. Die logische Sequenzeradresse 1030 kann so effektiv die Verwendung einer logischen Sequenzadresse durch einen Faden zu einer logischen Seitenanzahl und einem Versatz innerhalb der Seite mappen. 10 zeigt, dass die logische Sequenzadresse 1030, in einem sequenzerbewussten Befehl in einem Faden, etwa dem Faden N, angegeben sein kann.
  • 10 zeigt allgemein, dass der Mappingmanager 1020 die geeignete Fadensequenzerseitentabelle 1010 verwenden kann, die dem Faden N zugehörig ist, um die logische Sequenzadresse 1030 in einen physikalischen Sequenzidentifizierer 1040 zu übersetzen. Insbesondere zeigt 10, dass bei 1052 der Mappingmanager 1020 die Seitenzahl 1032 („001") der logischen Sequenzadresse 1030 als ein Index in die Seitentabelle 1010 verwendet. Der Wert („111") an dem indizierten Eintrag der Seitentabelle 110 ist bei 1054 angeordnet in einem bestimmten Seitenframeabschnitt 1042 des übersetzten gegenständlichen Sequenzeridenifizierers 1040.
  • 10 zeigt weiter, dass der Mappingmanager 1020 bei 1056 den Versatz 1034 („101") der logischen Sequenzadresse 1030 direkt in einen bestimmten Versatzabschnitt 1044 des übersetzten gegenständlichen Sequenzidentifizierers 1040 kopieren kann.
  • Insgesamt zeigt 10 so ein Verfahren 1000 zum Übersetzen einer logischen Sequenzadresse in einen gegenständlichen Sequenzidentifizierer, das das Folgende aufweisen kann: Empfang bei 1050 einer logischen Sequenzadresse 1030; Verwenden bei 1052 einen Abschnitt 1032, der logischen Sequenzadresse 1030 als einen Index in eine Seitentabelle 1010 zum Bestimmen einer Seitenzahl („111"); Platzieren bei 1054 der Seitenzahl in einen bestimmten Abschnitt 1043 eines übersetzten Sequenzeridentifizierers 1040 und Kopieren bei 1056 eines weiteren Abschnitts 1034 der logischen Sequenzadresse 1030 in einer Versatzabschnitt 1044 des übersetzten Sequenzeridentifizierers 1040.
  • Die in den 6 und 10 gezeigten Beispiele sollten nicht dahingehend verstanden werden, dass das Übersetzungsverfahren für die virtuelle Sequenzadresse 1000 auf einen Ansatz beschränkt ist, der auf eine einzige Ebene der Seitentabellen beschränkt ist. Beispielsweise zeigt 6, dass der Seitentabelleneintrag 630 zusätzliche Bits 640 aufweisen kann. Bei wenigstens einem Ausführungsbeispiel können ein oder mehrere zusätzliche Bits 640 verwendet warden, um bei wenigstens einem alternativen Ausführungsbeispiel zusätzliche Seitentabellenebenen anzugeben. Entsprechend kann der Mappingmanager 1020 einen Ansatz erzwingen, der mehrere Ebenen der Seitentabellen einschließt.
  • Optionale Hardwarebeschleunigung für die Übersetzung
  • Es wird jetzt zu 5 zurückgekehrt. Es ist erkennbar, dass wenigstens ein Ausführungsbeispiel des Multi-Sequenzer-Multithreadingsystems 500 das die Übersetzung der dynamisch mappierten logischen Sequenzadressen unterstützt, eine optionale Übersetzungsbeschleunigungsstruktur 518 aufweisen kann.
  • Bei wenigstens einem Ausführungsbeispiel kann die Struktur 518 ein Lookaside-Puffer zur Sequenzadressübersetzung („STLB") der Cacheeinträge der Seitentabellen oder andere Arten der Mappingstruktur 580 sein. Ein Aufnehmen der Einträge in den Cachespeicher in eine Hardwarestuktur 518 der Ausführungsressourcen 490 kann die Geschwindigkeit der Übersetzung vergrößern. Ein Grund für die Beschleunigung besteht darin, dass die Sequenzer 420-426 auf die Struktur 518 zugreifen, ohne die Zeit zu benötigen, auf die Mappingstruktur 580 zurückzugreifen, die auf dem Speichermedium 460 angeordnet ist. Beispielsweise wird für das Übersetzungsbeispiel von 10 angenommen, dass die STLB 518 von 5 die Inhalte des Eintrags 001 der Seitentabelle 1010 aufweist. In einem solchen Fall kann das Nachschlagen und die Übersetzung von der STLB-Logik im Inneren der Ausführungsressourcen 490 (5) durchgeführt werden, ohne Zugriff zu der Seitentabelle 1010 des Fadens N, die in dem Speichermedium 460 angeordnet sein kann.
  • 11 ist ein Blockdiagramm, das wenigstens ein Ausführungsbeispiel eines Formats für eine Übersetzungsbeschleunigungsstruktur 1100 zeigt. Die Einträge einer Beschleunigungsstruktur, etwa 518 von 5, kann dem Format der Beschleunigungsstruktur 1100 folgen, die in 11 gezeigt ist. Die Felder 1102-1110, die für Einträge des Ausführungsbeispiels der STLB, die in 11 gezeigt ist, dargestellt sind, sind lediglich für illustrative Zwecke wiedergegeben. Zusätzliche oder unterschiedliche Information kann bei anderen Ausführungsbeispielen in der Hardwarebeschleunigungsstruktur 1100 gespeichert sein.
  • Bei dem in 11 gezeigten Ausführungsbeispiel weisen die Einträge für die Struktur 1100 die folgenden Felder auf: ein Gültigkeitsfeld 1102, einen logischen Seitenidentifizierer (siehe beispielsweise 1032 von 10) 1104 und ein gegenständliches Seitenframefeld 1110 (siehe beispielsweise 1042 von 10).
  • Bei wenigstens einem Ausführungsbeispiel kann die Basisadresse der fadenspezifischen Sequenzerseitentabelle (siehe beispielsweise 1010 von 10) in ein Register 1120 geladen sein, wenn eine Kontextänderung zu einem neuen Faden auftritt. Das Register 1120 kann ein Steuerregister sein. Zu jedem Zeitpunkt, zu dem eine Änderung des Fadenkontextes auftritt (wie angegeben durch die Modifikation des Steuerregisters 1120), können die Inhalte der Hardwarebeschleunigungsstruktur 1100 gelöscht werden.
  • Es wird kurz auf die beiden 5 und 11 Bezug genommen. Es versteht sich, dass bei wenigstens einem Ausführungsbeispiel jeder Sequenzer 420-426 gleichzeitig einen unterschiedlichen Faden ausführen kann. Entsprechend können wenigstens bei einem Ausführungsbeispiel ein STLB 1100 und ein Steuerregister 1120 für jeden Sequenzer 420-426 bestimmt sein. Entsprechend kann die Hardwarebeschleunigungsstruktur, die in 5 dargestellt ist, eine Mehrzahl von STLBs 1110 und Steuerregister 1120 aufweisen, und zwar einer für jeden der Sequenzer 420-426.
  • Es wird weiterhin auf 5 gemeinsam mit 9 Bezug genommen. Es wird dargestellt, dass zum Verwalten der Verteilung und des Mappens von gegenständlichen Sequenzern zu aktiven Fäden der Mappingmanager 520 einer Rationierungslogik 485 ausweisen kann. (Entsprechende Elemente in den 5 und 9 tragen entsprechende Bezugszeichen). Die Rationierungslogik 485 kann eine Logik zum Verteilen der gegenständlichen Sequenzer 420-426 und den aktiven Fäden aufweisen.
  • Zusätzlich zu der Logik, die die Anfangszuordnung einer logischen Sequenzadresse zu einem gegenständlichen Sequenzer ausführt, zeigt 9 dass die Rationierungslogik 485 weiter eine Logik beinhalten zum Ausführen der folgenden Sequenzermanagement funktionen kann: Relokation, Protektion und Teilen. Jede dieser Aufgaben wird in ihren Einzelheiten in den nachfolgenden Absätzen erläutert.
  • Bezüglich der Relokationslogik 910 kann es der Fall sein, dass ein Mappen zwischen einer logischen Sequenzadresse und einem gegenständlichen Sequenzer nicht geändert werden muss, bevor der Faden, der ursprünglich auf die logische Sequenzadresse bezogen ist, die Ausführung abgeschlossen hat. Wenn der Mappingmanager 502 bestimmt, dass ein zweiter virtueller Sequenzerkontext in einen gegenständlichen Sequenzer gewechselt werden sollte, wird der Status des gegenwärtig mappierten logischen Sequenzers aus in einen Sicherungsspeicher 575 gewechselt. Ein solches Auswechseln kann durch die Relokationslogik 910 ausgeführt werden. Es kann, beispielsweise, während der Verdichtung ausgeführt werden.
  • Bei solchen Situationen führt die Relokationslogik 910 eine Logik zum Verwalten des Kontextes und der Mappinginformation aus, so dass der dem logischen Sequenzer zugehörige Status zurück in den gegenwärtigen gegenständlichen Sequenzer oder zu einem späteren Zeitpunkt in einen anderen gegenständlichen Sequenzer ausgewechselt werden kann. Die Relokationslogik 910 weist so eine Logik zum Verwalten der Kontextinformation, die jedem Sequenzermappen von logisch zu physikalisch zugehörig ist, wie in der Mappingstruktur (siehe 580, 5) berücksichtigt, auf. Zusätzlich weist die Rationierungslogik 485 eine Logik zum Modifizieren des Mappens auf. Bei wenigstens einem Ausführungsbeispiel kann eine solche Funktionalität auch durch die Relokationslogik 910 vorgesehen sein. Bei wenigstens einem Ausführungsbeispiel, bei dem der Mappingmanager 502 einen gegenständlichen Sequenzerallokationsalgorithmus ausführt, der eine externe Fragmentation einschließt (etwa den die obigen Best-fit Algorithmus), kann die Relokationslogik 910 eine Logik einschließen zum 1) Neuanordnen der gegenständlichen Sequenzer, die zu demselben Faden gehören als ein zusammenhängender Block und 2) entsprechendes Modifizieren der Mappinginformation.
  • 9 zeigt, dass die Rationierungslogik 485 eine Schutzlogik 915 aufweisen kann. Bei einem Ausführungsbeispiel verhindert die Schutzlogik 912 einen unerwünschten Zugriff auf einen gegenständlichen Sequenzer. Bei wenigstens einem Ausführungsbeispiel wird dies erreicht durch Schützen eines Applikationsfäden vor einem Verweisen einer logischen Sequenzadresse, die gegenwärtig einem anderen Faden zugehörig ist. Die Schutzlogik 912 kann eine Kontextinformation für die logische Sequenzadresse verwenden, die einem gegenständlichen Sequenzer zugehörig ist, um festzustellen, wenn von einem Befehl, der demselben Threadkontext zugehörig ist ein Zugriffsversuch erfolgt. Wenn nicht, verhindert die Schutzlogik 912 den Zugang. Die Schutzlogik 912 prüft so und erzwingt während der Ausführung einen Schutz gegen einen unerwünschten Zugriff von einem Sequenzer oder einem Sequenzerframe durch einen anderen Sequenzer oder einen anderen Sequenzerframe.
  • Schließlich zeigt 9, dass die Rationierungslogik 485 eine Beteiligungslogik 914 aufweisen kann. Eine solche Beteiligungslogik 914 ist optional, wie durch die gebrochenen Linien in 5 angegeben. Die Beteiligungslogik 914 kann es zwei oder mehreren Fäden erlauben, denselben gegenständlichen Sequenzer zu teilen. Bei Ausführungsbeispielen, die es den Fäden erlauben, auf einen gemeinsamen Satz von einen oder mehreren tatsächlichen Sequenzern zuzugreifen, erzwingt die Beteiligungslogik 912 spezifische Parameter und beschränkt die Steuerung auf die Art des Teilens, die erlaubt ist.
  • Entsprechend kann, wenn ein anderer Faden versucht auf die logische Sequenzadresse zuzugreifen, während ein erster Faden aktiv ist, die Schutzlogik 912, einen solchen Zugriff verhindern. Alternativ kann, wenn das Teilen derart erlaubt ist, dass mehrere aktive Fäden gleichzeitig auf den gegenständlichen Sequenzer zugreifen können, die optionale Beteiligungslogik 914 Teilparameter und Beschränkungen erzwingen.
  • Es wird jetzt für die weitere Diskussion auf 12 bezug genommen, in der wenigstens ein Ausführungsbeispiel der Sequenzerzuweisung, die von der Rationierungslogik 485 durchgeführt wird, gezeigt ist. Eine solche Zuweisung kann das Folgende aufweisen: Anfängliche Zuweisung von gegenständlichen Sequenzen, Neumappen der gegenständlichen Sequenzer und Erhalten/Auffrischen von Mappiningformation.
  • 12 ist ein Flussdiagramm, das die Steuerung und den Datenfluss bei wenigstens einem Ausführungsbeispiel des Verfahrens 1200 zur Sequenzerrationierung zeigt. Bei wenigstens einem Ausführungsbeispiel kann das Verfahren 1200, das durch einen Mappingmanager durchgeführt wird (siehe, beispielsweise, 580 von 5). Insbesondere kann bei wenigstens einem Ausführungsbeispiel das Verfahren 1200 durch eine Rationierungslogik (siehe beispielsweise 485 von 5) ausgeführt werden.
  • 12 zeigt, dass das Verfahren bei dem Block 1202 beginnt und zu dem Block 1204 fortschreitet. Bei dem Block 1204 empfängt das Verfahren die logische Adresse des Destinationssequenzers, die als ein Parameter in einem sequenzerbewussten Befehl, das an dem Quellensequenzer 104a ausführt, vorgesehen ist.
  • Die Verarbeitung schreitet sodann zu dem Block 12106 vor, wo ein Nachschlagen in einer Mappingstruktur 1250 ausgeführt wird. Die Mappingstruktur 1250 kann eine Mappinstruktur sein, etwa eine Struktur 580, wie sie in 5 gezeigt ist, die in einem Speichermedium gespeichert ist (wie, beispielsweise, 460 von 5). Die Mappingstruktur 1250 weist einen gültigen Eintrag für die logische Sequenzadresse auf, derart, dass ein schon zugewiesener gegenständlicher Sequnenzidentifizierer gewonnen werden kann, es wird dann gesagt, dass das Nachschlagen 1206 einen Treffer aufweist. Ansonsten hat dies zu einem „Fehlversuch" geführt.
  • Bei wenigstens einem anderen Ausführungsbeispiel kann das Nachschlagen, das in dem Block 1206 ausgeführt worden ist, anfänglich in einer Beschleunigungsstruktur ausgeführt werden, etwa der Struktur 518, die in 5 gezeigt ist. Wenn ein Treffer vorliegt, schreitet die Verarbeitung unmittelbar zu dem Block 1212 fort. Wenn ein Treffer nicht vorliegt, kann das Verfahren sodann in dem Block 1206 ein Nachschlagen in einer Mappingstruktur ausführen, die in dem Speichermedium gespeichert ist, wie oben beschrieben.
  • In dem Block 1208 wird bestimmt, ob ein Fehlversuch vorliegt. Zuzüglich zu der Bestimmung eines Fehlens in der Mappingstruktur (und/oder einer Beschleunigungsstruktur) wie dies oben ist in bezug auf Block 1206 beschrieben worden, kann die Verarbeitung in dem Block 1208 bestimmen, dass ein „Fehlen" sich ergeben hat, auch wenn ein Seitentabelleneintrag oder ein Beschleunigungsstruktureintrag für die angegebene logische Sequenzadresse vorliegt. Das heißt, wenn die Inhalte des Vorhanden/Fehlen-Feldes 634 des Seitentabelleneintrags angibt, dass die Kontextinformation für die bestimmte logische Sequenzadresse an den Sicherungsspeicher (siehe Block 512 und Sicherungsspeicher 550 von 13) übergeben worden ist, wird ein „Fehlen" in dem Block 1208 bestimmt.
  • 12 zeigt, dass infolge der Entscheidungsbox 1208 die Verarbeitung fortschreitet zu dem Block 1210 bei einem Fehlen und zu Block 1209 für einen Treffer. Bei einem Treffer wird eine Unterstützung des sequenzerbewussten Befehls in dem Block 1212 ausgeführt. Bei wenigstens einem Ausführungsbeispiel weist die Unterstützung, die in dem Block 1212 ausgeführt wird, das Senden eines Signals für einen arithmetischen Befehl des Sequenzers an den Destinationssequenzer 104n auf, der von dem gegenständlichen Sequenzeridentifizierer identifiziert worden ist, der während des Nachschlagens in dem Block 1206 gewonnen worden ist. Infolge eines derartigen Signals kann die gewünschte Signalisierung zu dem Destinationssequenzer 104n erreicht werden, wie in dem arthmetischen Befehl des Sequenzer angegeben. Von dem Block 1212 endet die Verarbeitung in dem Block 1214.
  • 12 zeigt, dass die Verarbeitung zu dem Block 1210 fortschreitet, wenn ein Fehlen in dem Block 1208 bestimmt ist. In dem Block 1212 kann ein Fehldefektbehandler aufgerufen werden. Die Verarbeitung endet sodann in Block 1214.
  • 13 ist ein Flussdiagramm, das den Steuerfluss und den Datenfluss bei wenigstens einem Ausführungsbeispiel des Verfahrens zur Fehlerbehandlung zeigt, die in Folge der Verarbeitung des Blocks 1210 (siehe 12) aufgerufen werden kann. Der Fachmann versteht, dass anders als ein direktes Aufrufen eines Fehlerbehandlers in dem Block 1210 ein Sequenzseitenfehler in dem Block 1210 ausgelöst werden kann. Bei einem solchen Ausführungsbeispiel kann ein Fehlerbehandler in Folge des Fehlers, der in dem Block 1210 ausgelöst worden ist aufgerufen werden; der Fehlerbehandler kann wiederum das Verfahren 1300, das in 13 gezeigt ist, auslösen.
  • 13 zeigt, dass das Verfahren 1300, das von der Rationierungslogik 485 ausgeführt werden kann, allgemein zum Zuordnen eines gegenständlichen Sequenzers zu einer logischen Sequenzadresse, die in dem Block 1204 von 12 empfangen worden ist, dient. Vor dem weiteren Diskutieren der 13 sollte beachtet werden, dass bei wenigstens einem alternativen Ausführungsbeispiel das Verfahren 1300 von 13 auch für andere Situationen als ein „Fehlen" aufgerufen werden kann, wie es in dem Block 1208 von 12 erkannt worden ist. Bei wenigstens einem Ausführungsbeispiel kann das Verfahren 1300 aufgerufen werden, so dass die Rationierungslogik 485 fähigkeitsattributbasiertes Monitoring, eine Erzwingung und eine Optimierung für die physikalische Sequenzerallokation ausführen kann. Ein solches Monitoring basierend auf Fähigkeiten, kann eine Verletzungsbedingung erkennen und infolgedessen zu einem „Fehlen"-Zustand führen.
  • Als eine gesonderte architekturale Ressource unterscheidet sich ein adressierbarer logischer Sequenzer 420-426 von einem adressierbaren logischen Speicherort sowohl in den räumlichen als auch in den zeitlichen Eigenschaften. Räumlich weist eine logische Sequenzadresse, wie sie durch ein Applikationsprogramm verwendet wird, eine Kontextzustandsinformation für die Registerzustände für eine gegebene Befehlssatzarchitektur für einen Einzelsequenzer auf. (Siehe, beispielsweise, die architekturalen Zustände AS, die in 1 gezeigt sind). Temporal entspricht eine logische Sequenzadresse einem bestimmten Rechenstrom des Steuerstroms, der unterschiedliche Ausmaße der Pünktlichkeitsanforderungen (beispielsweise scheduling) hat.
  • Entsprechend betrifft das Mappen von logischen Sequenzadressen in gegenständliche Sequenzadressen nicht nur die Allokation eines gegenständlichen Sequenzers, auf dem ein logischer Sequenzerkontext mappiert werden kann, sondern betrifft auch die Allokation von Zeitmengen zum Laufen des logischen Sequenzers auf einer Weise zum Sicherstellen weiteren Fortschritts des Programms unter Verwendung des logischen Sequenzers zum Ablaufen von shreds. Beispielsweise kann bei einem Ausführungsbeispiel die temporale Anforderung, wie einem Planungshinweis in Feld 638, in einem logischen Sequenzerdiskriptor 630 repräsentiert sein und kann eine zeitbasierende periodische Aktivierung des Verfahrens 1300 zum Neumappen der entsprechenden logischen Sequenzadressen von einem Satz von physikalischen Sequenzen zu einem anderen Satz verursachen. Bei wenigstens einem Ausführungsbeispiel kann das Neumappen M logischer Sequenzerkontexten auf N gegenständlichen Sequenzern eine Rundlaufplanungsstrategie implementieren, die periodisch und seriell M logische Sequenzadressenkontexte durch N gegenständliche Sequenzer rotieren kann. Bei einem Ausführungsbeispiel ist eine Planungsmenge, während der ein logischer Sequenzer auf einem gegenständlichen Sequenzer läuft, bevor er ausgetauscht wird, eine Untermenge der OS Menge, der ein Faden durch ein OS zugewiesen ist. Die Strategie kann einen gesamten Fortschritt aller logischer Sequenzer in einem Faden sicherstellen.
  • 13 zeigt, dass Statusinformation für logische Sequenzer einem Übergeben 1308 (sichern) in und Füllen 1310 (wiedergewinnen) in bzw. aus einem Sicherungsspeicher 1275. ist. Der Sicherungsspeicher 1275 kann jede Speicherstruktur haben, einschließlich einem Memory.
  • Bei wenigstens einem Ausführungsbeispiel kann die logische Sequenz die Statusinformation, die Gegenstand des Übergebens 1308 und des Füllens 1310 ist, Kontextinformation beinhalten. Solche Kontextinformation kann, beispielsweise, alle Registerzustände für architekturaldefinierte Register auf dem Sequenzer beinhalten. Bei wenigstens einem Ausführungsbeispiel kann die Zustandssequenzinformation weiter optional temporale Information aufweisen, die sich auf das Scheduling beziehen, wie einer minimal erforderlichen Menge und/oder der gewünschten Sequenz zum Rescheduling.
  • Zusätzlich zu dieser Information kann eine Rationierungslogik (siehe beispielsweise 485 von 5) des Mappingmanagers (siehe beispielsweise 502 von 5) weiter einen Zugriff haben auf bestimmte gegenständliche Sequenzinformation bezogen auf solche Sequenzerfähigkeitsattribute und Eigenschaften wie Temperatur, Funktionalität, Leistungsfähigkeit, Leistungsaufnahme, Zusammensetzung der funktionalen Einheiten und Sequenzerausführungszustand, um einige wenige zu nennen.
  • Das Verfahren 1300 von 13 kann daher aufgerufen warden, um es dem Mappingmanager zu erlauben, solche auf Fähigkeitsattributen basierende logische und/oder gegenständliche Sequenzzustandsinformation bei dem Zuordnen oder Remappen gegenständlicher Sequenzer zu berücksichtigen. Beispielsweise kann das Verfahren 1300 ausgelöst werden, wenn eine Ausführung des gegenständlichen Sequenzerzustands angibt, dass es abgewürgt ist und keinen weiteren Fortschritt macht. Ein derartiger Ausführungszustand kann beispielsweise auftreten, wenn der Sequenzer ein Ereignis mit langer Latenz festgestellt hat, etwa das Fehlen eines Cache oder auf eine Verriegelung an einem Synchronisationsobjekt wartet.
  • Durch dasselbe Merkmal können die Attribute des gegenständlichen Sequenzers dann, wenn das Verfahren 1300 aufgrund eines Fehlens in der Seitentabelle 1250 aufgerufen wird, berücksichtigt werden, um die Auswahl des physikalischen Sequenzers für die Zuordnung oder Neuzuordnung zu informieren, zu vergrößern oder zu optimieren. Bei einem Beispiel für verschiede Typen von physikalischen Sequenzerattributen, die durch die Rationierungslogik 485 während der Ausführung des Verfahrens 1300, das in 13 gezeigt ist, berücksichtigt werden können, wenden wir uns kurz 14 zu.
  • 14 zeigt, dass ein Multi-Sequenzer-Multithreadingsystem 1400 allgemein einen Mappingmanager 1420 und wenigstens zwei gesonderte Typen von gegenständlichen Sequenzern 1410, 1412 aufweisen kann (bei wenigstens einem Ausführungsbeispiel weist ein Multisequenzer-Multithreadingsystem natürlich nur einen einzigen Typ eines Sequenzers auf). Gepunkte Linien und Ellipsen werden in 3 verwendet, um anzugeben, dass die zusätzlichen Sequenzer jedes Typs 1410, 1412 optional sind.
  • Das System 1400 kann einen oder mehrere jeden Typs von Sequenzern aufweisen. Entsprechend kann jeder Sequenzertyp 1410, 1412 mit einem bestimmten Satz von Fähigkeitsattributen versehen sein. Da die Sequenzertypen gesondert sind, sagen wir, dass sie „asymmetrisch" sind – die Attribute können sich unter den Sequenzertypen unterscheiden. Bei wenigstens einem Ausführungsbeispiel können die Sequenzer 1410, 1412 sich bezüglich des Leistungsverbrauchs unterscheiden. Bei wenigstens einem weiteren Ausführungsbeispiel können die Sequenzer 1410, 1412 sich bezüglich einer Funktionalität unterscheiden. Beispielsweise kann ein erster Sequenzer 1410 alle Funktionalitäten implementieren, die für einen T-Sequenzer erforderlich sind, dessen OS beide Systeme des Ebenenvorrangcodes und des Verwenderebenenvorrangcodes ablaufen kann, während ein zweiter Sequenzer 1412 nur Funktionalitäten implementieren kann, die von einem OS-Sequenzer angefordert werden, der nur auf einem Verwenderebenen-Vorrangcode läuft und nicht auf einem Systemeben-Vorrangcode laufen muss. Bei einem weiteren Beispiel kann ein erster Sequenzertyp 1410 einen vollständigen Satz von Funktionsfähigkeiten für einen gegebenen Befehlssatz implementieren. Der zweite Sequenzertyp 1412 kann missbilligte Funktionalitäten aufweisen, etwa nur einen Untersatz von Fähigkeiten für den Befehlssatz implementieren. Beispielsweise kann ein [abgelehnter] Sequenzer dazu in der Lage sein, ganzzahlige und Gleitkommabefehle auszuführen, kann aber nicht einen einzigen Befehl mit mehrfachen Daten („SIMD") von Befehlsinstruktionen ausführen, etwa Streaming SIMD Extensions 3 („SSE3"). Andererseits kann ein anderer Sequenzer dazu in der Lage sein, alle die Befehle auszuführen, die der erste Sequenzer ausführen kann, und kann weiter SSE3-Befehle ausführen.
  • Anders als oder zusätzlich zu funktionellen Kriterien können sich asymmetrische Sequenzertypen 1410, 1412 bezüglich des Leistungsverbrauchs und/oder den Temperaturattributen unterscheiden. Beispielsweise kann der zweite Sequenzertyp 1412 weniger Leistung benötigen oder kann Berechnungen langsamer als der erste Sequenzertyp 1410 ausführen. Auch kann der Mappingmanager 1420 die Temperatur bei dem Ausführen der Sequenzerrationierung berücksichtigen. Beispielsweise kann, wenn ein bestimmter Sequenzer eine Hochtemperaturschwelle annimmt, das Verfahren 1300 von 13 aufgerufen werden um, die virtuelle Sequenzadresse auf einen unterschiedlichen tatsächlichen Sequenzer zu mappen, der kühler ist. Diese Fähigkeitsattribute (Leistungsanforderung, Geschwindigkeit, Funktionalitätsfähigkeit, Temperatur, Ausführungszustand, usw.) kann auf dem Softwaremappingmanager 502 verfügbar sein und kann zum Informieren des Mappingvorgangs (manchmal bezeichnet als „Sequenzerrationierung") verwendet werden, wie dies weiter unten in weiteren Einzelheiten beschrieben werden wird.
  • Es wird jetzt zu 13 zurückgekehrt und das Verfahren 1300 diskutiert. 13 zeigt, dass das Verfahren bei dem Block 1302 beginnt und zu dem Block 1304 fortschreitet. In dem Block 1304 wird ein Sequenzer oder ein Sequenzerframe, der der logischen Sequenzadresse zugeordnet ist, die in dem Block 1204 von 12 gewonnen worden ist, identifiziert. Wiederum wird der Begriff „Sequenzer" in der Bedeutung verstanden, dass entweder ein individueller Sequenzer oder eine Mehrzahl von Sequenzern in einem frame bedeutet. Die Begriffe „Sequenzer" und „Sequenzerrahmen" können so austauschbar in der nachfolgenden Diskussion verwendet werden.
  • Bei verschiedenen Ausführungsbeispielen können verschiedene Ansätze zum Bestimmen eines potentiellen Sequenzers in dem Block 1304 verwendet werden. Im Allgemeinen kann die Bestimmung 1304 einen traditionellen Selektionsansatz verwenden, der sodann über die Sequenzerattributinformation informiert wird.
  • Bei wenigsten einem Ausführungsbeispiel wird der freie Sequenzer in dem Block 1304 ausgewählt, wenn gegenwärtig ein oder mehrere freie Sequenzer vorhanden sind (siehe beispielsweise die freie Liste 620, die in 6 und 8 angegeben ist). Wenn ein Sequenzer frei ist, wird er ausgewählt. Bei wenigstens einem Ausführungsbeispiel wird die Attributanalyse, die unten beschrieben wird, verwendet, um zu bestimmen, welcher der freien Sequenzer in dem Block 1304 ausgewählt werden sollte.
  • Wenn keine Sequenzer frei sind, wird ein gegenwärtig aktiver (manchmal als „Opfer" bezeichneter) Sequenzer in dem Block 1304 ausgewählt. Jeder bekannter Ersetzungsalgorithmus, aka victim selection algorithm, kann in dem Block 1304 verwendet werden, um eine aktiven (oder „schmutzigen") Sequenzer als ein „Opfer" auszuwählen. Ein solcher Algorithmus kann, ohne darauf beschränkt zu sein, ein Not-Recently-Used, First-in-First-Out, Least-Recently-Used, Not-Frequently-Used, Aging, Working Set, Clock, and Working Set Clock („WSClock") einschließen. Jeder solcher Ansatz kann verwendet werden, um in dem Block 1304 den Sequenzer, der in den Sicherungsspeicher 1275 auszuräumen ist, um Raum für einen eingehenden Sequenzer zu schaffen (der eingehende Sequenzer ist der logische Sequenzer, der in dem Block 1210 des Verfahrens 1300 den Aufruf verursacht hat).
  • Unabhängig davon, ob der Sequenzer aus der freien Liste gewählt ist oder ein Opfersequenzer entsprechend ein Ersetzungsalgorithmus ausgewählt worden ist, wird die Opferauswahl optional in dem Block 1304 von einer Fähigkeitsattributanalyse informiert.
  • Die Fähigkeitsattributanalyse kann in dem Block 1304 ausgeführt werden, um zu bestimmen, ob die gegenwärtigen Attribute eines gegenständlichen Sequenzers sich als mehr oder weniger wahrscheinlicher Kandidat zur Zuordnung oder Neuzuordnung erweist. Beispielsweise kann die Fähigkeitsattributanalyse verwendet werden zum Auswählen von Einträgen in die freie Liste, um einen auszuwählen, der dazu in der Lage ist, einen spezifischen Satz von Funktionen auszuführen oder aber eine geringere Leistungsaufnahme oder Temperatur als andere hat, usw. Alternativ kann die Fähigkeitsattributanalyse zum Auswählen aus den gegenständlichen Sequenzern, die durch einen Ersetzungsalgorithmus berücksichtigt worden sind, verwendet werden, um einen gegenständlichen Sequenzer auszuwählen, der ein wahrscheinlicher Kandidat zum Auswechseln ist. Beispielsweise kann die Fähigkeitsattributanalyse angeben, dass ein gegenständlicher Sequenzer ein guter Kandidat ist, wenn er gegenwärtig keinen Fortschritt macht (d. h. aufgrund eines lang andauernden Cachefehlers steht oder aber wartet im Hinblick auf ein Ringen um eine Verriegelung eines Synchronisationsobjekts).
  • Von dem Block 1304 schreitet die Verarbeitung zu dem Block 1306 fort. In dem Block 1306 wird bestimmt, ob der Zustand des ausgewählten Opfers in den Sicherungsspeicher 1275 übergeben werden sollte. Die Bestimmung in dem Block 1306 bewertet als „falsch", wenn das Opfer aus der freien Liste ausgewählt worden ist. In einem solchen Fall schreitet die Verarbeitung zu dem Block 1312 fort.
  • Wenn jedoch der Opfersequenzer gegenwärtig aktiv ist, schreitet die Verarbeitung von dem Block 1306 zu dem Block 1308 fort. In dem Block 1308 werden die Kontextzustände für den Sequenzer in den Sicherungsspeicher 1275 übergeben. Bei einem Ausführungsbeispiel, das Sequenzerframes benutzt, werden die Kontextzustände für alle Sequenzer in dem Opfersequenzerframe in den Sicherungsspeicher 1275 übergeben. Die Verarbeitung schreitet sodann in Block 1310 fort.
  • In dem Block 1310 wird der Kontextzustand für die Sequenzer (oder, alternativ, für alle Sequenzer in den fehlerhaften Sequenzerrahmen) aus dem Sicherungsspeicher 1275 zurückgewonnen. Die Kontextinformation wird in dem gegenwärtigen Sequenzer vorgesehen, der in dem Block 1304 ausgewählt worden ist. Auf diese Weise wird der Kontextzustand für den Opfersequenzer bei 1310 in den Sicherungsspeicher 1275 übergeben und der Kontextzustand für die neue logische Sequenzadresse wird von dem Sicherungsspeicher 1275 in den gegenständlichen Opfersequenzer eingegeben.
  • Von dem Block 1310 schreitet die Verarbeitung zu dem Block 1312. Der Block 1312 kann auch direkt von dem Block 1304 erreicht werden, wenn der ausgewählte gegenständliche Sequenzer gegenwärtig nicht aktiv ist. In dem Block 1312 werden eine oder mehrere Übersetzungsstrukturen ausgefrischt, um die Zuordnung der neuen logischen Sequenzeradresse für den ausgewählten gegenständlichen Sequenzer zu reflektieren. Wenigstens bei einem Ausführungsbeispiel wird die Mappingstruktur 1250 in dem Block 1312 aufgefrischt.
  • Bei einem Ausführungsbeispiel, das die Mappingstruktur 1250 als eine oder mehrere Sequenzerseitentabellen implementiert, wird die Sequenzerseitentabelle für den Faden, der den Sequenzerseitenfehler verursacht hat, ausgefrischt, um das neue Sequenzermapping für die logische Sequenzadresse zu der gegenständlichen Sequenzadresse wiederzugeben. Bei einem solchen Ausführungsbeispiel wird das vorliegende Feld (siehe 634, 6), das für jeden Seitentabelleneintrag in dem Block 1312 modifiziert ist, gesetzt, um anzugeben, dass die Kontextinformation für die Seite nicht aus dem Sicherungsspeicher 1275 gewonnen werden muss.
  • Zusätzlich wird das gegebene Feld für den Seitentabelleneintrag für den Sequenzer, der in den Sicherungsspeicher 1275 in dem Block 1308 übergeben worden ist, modifiziert, um anzugeben, dass die Kontextinformation in dem Sicherungsspeicher, nicht also in dem gegenständlichen Sequenzer gespeichert ist.
  • Schließlich kann für Ausführungsbeispiele, die eine optionale Hardwareübersetzungsbeschleunigungsstruktur 1318 verwenden, wie ein STLB 100, das in 11 dargestellt ist, das Folgende in dem Block 1312 ausgeführt werden: eine Übersetzungsbeschleunigungsstruktur 1218 wird aufgrund eines Fadenkontextumschaltens geleert. Die Verarbeitung endet sodann in dem Block 1314.
  • Die 7 und 8 zeigen weiter ein spezifisches Beispiel, um weiter einige der Verarbeitungen des Verfahrens 1300, wie es allgemein oben in Verbindung mit den 12 und 13 gezeigt worden ist, darzustellen. 7 zeigt ein beispielhaftes Sequenzerrationierungsszenario, das durch die Rationierungslogik 485 für den Musterfaden ausgeführt wird, Fäden A-D, dargestellt in 6. 7. zeigt eine Reihe von Aktionen, AA – AF, die während des Mustersequenzrationierungsszenarios ausgeführt wird. Solche Aktionen reflektieren ein bestimmtes Beispiel des allgemeinen Verfahrens 1200, 1300 zur Zuordnung physikalischer Sequenzen, wie sie in den 12 und 13 dargestellt sind. Entsprechend werden die 7 und 8 unten unter Bezugnahme auch auf die 12 und 13 diskutiert.
  • 7 zeigt ein beispielhaftes Ausführungsbeispiel, das zwölf verfügbare gegenständliche Sequenzerframes aufweist. Die Aktion AA von 7 zeigt einen Ausgangszustand, in der bisher keine der physikalischen Frames zu einer logischen Sequenzadresse mappiert worden sind.
  • Aktion AB von 7 zeigt die Zuordnung von drei Sequenzerframes, Frames 0-2, für die drei Seiten eines Fadens A. Insbesondere zeigt 7, dass bei der Aktion AB, die Seite 0 des Fadens A (bezeichnet als „A0") zu dem Rahmen 0 mappiert ist. Diese Ausgangsmappierung der Seite 0 des Fadens A kann ausgeführt werden in Antwort auf das erste Auftreten des Empfangens einer logischen Sequenzadresse, die die Seite 1 für den Faden A einschließt. (Siehe Seitennummer 1032 der logischen Sequenzadresse 1030 in 10).
  • Eine derartige logische Sequenzadresse kann durch die Rationierungslogik in dem Block 1204 von 12 empfangen werden. Da die Seite bisher nicht zu einem physikalischen Sequenzer mappiert worden ist, führt das Nachschlagen in der Tabelle im Block 1206 von 12 zu einem Fehler und die Verarbeitung schreitet so zu dem Block 1210 fort und nachfolgend zu dem Block 1304 von 13. Bei 13 wird ein gegenständlicher Sequenzerrahmen für die Seite ausgewählt. Wie in 7 dargestellt, wird der Sequenzerframe 0 in dem Block 1304 für das in 7 dargestellte Beispiel ausgewählt.
  • Entsprechend zeigt die Aktion AB von 7, dass das ursprüngliche Mapping für die Seiten 1 und 2 des Fadens A in einer ähnlichen Weise ausgeführt werden kann.
  • 7 zeigt weiter, dass das ursprüngliche Mapping der Seiten für den Faden B in einer ähnlichen Weise bei der Aktion AC von 7 zugewiesen werden kann. D. h. 7 zeigt, dass die Seiten 0, 1 und 2 des Fadens B zu Sequenzern 3, 4 und 5 in der Aktion C von 7 mappiert werden können.
  • 7 zeigt weiter, dass das ursprüngliche Mapping der Seiten für den Faden C in einer ähnlichen Weise in der Aktion AD von 7 zugewiesen werden kann. D. h. 7 zeigt, dass die Seiten 0, 1, 2 und 3 des Fadens C zu den Sequenzern 6, 7, 8 und 9 in der Aktion AD von 7 zugeordnet werden kann.
  • 7 zeigt, dass das Austauschverarbeiten durch die Rationierungslogik in der Aktion AE ausgeführt werden kann. Eine solche Verarbeitung kann in Antwort auf das Empfangen einer logischen Sequenzadresse, die eine Seite beinhaltet, die bisher nicht mappiert ist, durchgeführt werden. Entsprechend kann, wie oben diskutiert worden ist, die logische Sequenzadresse in dem Block 1204 empfangen werden. Blöcke 1206 und 1210 können sodann ausgeführt werden. Die Bezugnahme auf 13 zeigt wiederum, dass ein Sequenzer für die Seite in dem Block 1304 ausgewählt wird. Für das in 7 gezeigte Ausführungsbeispiel verbleiben lediglich zwei Sequenzer zu dem Zeitpunkt, zu dem eine erste Referenz zu dem Faden D in dem Block 1204 empfangen wird.
  • Der Faden D weist jedoch vier logische Sequenzadressen auf und wir nehmen an, dass die Schedulinganforderungen in den Fähigkeitsattributen des Fadens D daher mindestens vier gegenständliche Sequenzer benötigen. Bei wenigstens einem Ausführungsbeispiel wird die minimale Anzahl der gegenständlichen Sequenzer, die für einen Faden erforderlich sind, durch die Rationierungslogik in dem Block 1304 bestimmt. Bei wenigstens einem Ausführungsbeispiel kann die Anzahl der von einem Faden erforderten logischen Sequenzer über einen Fähigkeitsberichtsbefehl architektural vorgesehen sein. Eine solche Ziffer kann, beispielsweise, durch Ausführen eines Fähigkeitsberichtsbefehls, etwa einem CPUID Befehl, der die Anzahl der logischen Sequenzadressen berichtet, auf die ein einzelner Faden zugreifen kann, bestimmt werden.
  • Entsprechend ist in dem Block 1304 ein aktiver „Opfer"-Sequenzer zum Austausch ausgewählt. Wie oben beschrieben, können Sequenzerattribute berücksichtigt werden um zu bestimmen, welcher oder welche Sequenzer auszutauschen sind. Beispielsweise kann die Rationierungslogik in dem Block 1304 bestimmen, dass der Faden B aufgrund eines lang andauernden Cachefehlens abgewürgt ist und keinen Fortschritt macht, und dass seine Sequenzerframes daher zum Austausch ausgewählt werden sollten, um Raum für den Faden D zu machen.
  • 7 zeigt, dass der Kontextzustand für die physikalischen Sequenzerrahmen 3, 4 und 5 ausgetauscht in den Sicherungsspeicher in der Aktion AE sind. Entsprechend zeigt 13, dass eine Fadenkontextsicherung in den Sicherungsspeicher in dem Block 1308 stattfindet. Wenn der Faden D selbst zuvor aktiv war, jedoch vor der Beendigung des Fadens in den Sicherungsspeicher 1275 übergeben worden ist, wird dieser Kontext aus dem Sicherungsspeicher 1275 in den entleerten gegenständlichen Sequenzer zurückgespeichert.
  • Bei dem in 7 gezeigten Beispiel zeigt die Aktion AF jedoch ein anfängliches Mappen für die Seiten des Fadens D an. Entsprechend muss der Kontextzustand für den Faden D nicht aus dem Rückspeicher 1275 rückgespeichert werden, sondern wird stattdessen mit den Anfangswerten initialisiert.
  • Entsprechend wird der Block 1310, der in 13 mit gepunkteten Linien dargestellt, um anzugeben, dass er nicht notwendigerweise in allen Fällen ausgeführt wird.
  • Aktion AF von 7 gibt an, dass die Seiten 0, 1, 2 und 3 für den Faden D zu den physikalischen Sequenzern 3, 4, 5 bzw. 10 mappiert ist.
  • 8 zeigt die Inhalte der Sequenzerseitentabellen 610a-610d nach der Aktion AF des beispielhaften Szenarios, das in 7 dargestellt ist. 8 zeigt, dass die Seitentabelle 610a für den Faden A das Mappen der Seiten 0, 1 und 2 für den Faden A zu den physikalischen SeitenFrames 0, 1 bzw. 2. Der Wert (P") des „Vorhanden/Nichtvorhanden"-Feldes (siehe 634, 6) für jeden Eintrag der Seitentabelle 610a gibt an, dass die Kontextinformation für die Seiten auf den physikalischen Sequenzerframes geladen sind, nicht in dem Sicherungsspeicher.
  • Entsprechend zeigt 8, dass die Seitentabelle 610c für den Faden C das Mappen der Seiten 0, 1, 2 und 3 des Fadens C zu den gegenständlichen Seitenframes 6, 7, 8 bzw. 9 angibt. Die Seitentabelle 610d für den Faden D gibt das Mappen der Seiten 0, 1, 2, 3 des Faden D zu gegenständlichen Sequenzern 3, 4, 5 bzw. 10 an. Die Werte des Vorhanden/Nichtvorhanden-Feldes (siehe 634, 6) für jeden Eintrag der Tabellen 610c und 610d geben wiederum an, dass die Adressen für die Einträge gegenständliche Sequenzerframes angeben, die den gegenwärtigen Kontext halten.
  • 8 zeigt weiter, dass die Seitentabelle 610b für den Faden B einen vorhandenen Wert „A" in dem Vorhanden/Nichtvorhanden-Feld 634 für jeden Eintrag auf der Seitentabelle 610b angibt. Entsprechend kann der Kontext für die Seiten für den Faden B an der angegebenen Adresse (xxx, yyy bzw. zzz) des Sicherungsspeichers 1275 gefunden werden.
  • Bei wenigstens einem Ausführungsbeispiel wird das Auffrischen der Fadenseitentabellen 610a-610b einschließlich des Vorhanden/Nichtvorhanden-Feldes durch die Rationierungslogik im Block 1312 von 13 durchgeführt.
  • Schließlich zeigt 8, dass die Liste 620 der freien Rahmen angibt, dass der gegenständliche Sequenzerrahmen 11 unverteilt bleibt.
  • 15 zeigt wenigstens ein Ausführungsbeispiel eines Rechensystems 1500, das dazu in der Lage ist, die offenbarten Techniken auszuführen. Das Rechensystem 1500 schließt wenigstens einen Prozessorkern 1504 und ein Memorysystem 1540 ein. Das Memorysystem 1540 kann größere, relativ langsame Memoryspeicher 1502 als auch ein oder mehrere relativ schnelle Cache wie einen Befehlscache 1544 und/oder einen Datencache 1542 aufweisen. Der Memoryspeicher 1502 kann Befehle 1510 und Daten 1512 zum Steuern des Betriebs des Prozessors 1504 speichern. Bei wenigstens einem Ausführungsbeispiel kann der Memoryspeicher 1502 auch eine Mappingstruktur 1580 aufweisen.
  • Das Memorysystem 1540 dient als generalisierte Repräsentation von Speichern und kann eine Vielzahl von Formen von Speichern aufweisen, etwa eine Harddrive, eine CD-ROM, einen Speicher mit wahlfreien Zugriff (RAM), einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM), einen statischen Speicher mit wahlfreiem Zugriff (SRAM), ein Flash Memory und die zugehörige Schaltung. Speichersysteme 1540 können Befehle 1510 und/oder Daten 1512 speichern, die durch Datensignale repräsentiert sind, die durch den Prozessor 1540 ausgeführt werden können. Die Befehle 1510 und/oder die Daten 1512 können einen Code und/oder Daten zum Ausführen einer oder aller der hier diskutierten Techniken aufweisen.
  • Der Prozessor 1504 kann ein vorderes Ende 1520 aufweisen, das eine Befehlsinformation an einen Ausführungskern 1530 liefert. Eine aufgerufene Befehlsinformation kann in einem Cache 1525 gepuffert werden, um die weitere Ausführung durch den Ausführungskern 1530 abzuwarten. Das vordere Ende 1520 kann die Befehlsinformation an den Ausführungskern 1530 in der Programmabfolge liefern.
  • Bei wenigstens einem Ausführungsbeispiel weist das vordere Ende 1520 eine Abruf-/Dekodiereinheit 322 auf, die den als nächstes auszuführenden Befehl bestimmt. Bei wenigstens einem Ausführungsbeispiel des Systems 1500 kann die Abruf-/Dekodiereinheit 122 einen Zeiger für den nächsten Befehl und eine Abruflogik 120 aufweisen. Bei einem Ausführungsbeispiel, bei dem jeder Prozessor 1504 mehrere Fadenkontexte unterstützt, implementiert die Abruf-/Dekodiereinheit 122 gesonderte Zeiger für den nächsten Befehl und Abruflogiken 120 für jeden unterstützten Fadenkontext. Die optionale Natur des zusätzlichen Zeigers für den nächsten Befehl und der Abruflogik 120 in einem Mulitprozessorsystem ist die gepunkteten Linien in 15 angedeutet.
  • Ausführungsbeispiele der hier beschriebenen Verfahren können in Hardware, einer Hardware Emulationssoftware oder anderer Software, Firmenware oder einer Kombination aus derartigen Implementationsansätzen implementiert sein. Ausführungsbeispiele der Erfindung können für ein programmierbares System mit wenigstens einem Prozessor, einem Datenspeichersystem (einschließlich flüchtiger und nichtflüchtiger Speicher und/oder Speicherelementen) wenigstens einer Eingabeeinrichtung oder wenigstens einer Ausgabeeinrichtung implementiert sein. Für den Zweck dieser Anmeldung weist ein Prozessorsystem jede Art eines Systems auf, das einen Prozessor hat, beispielsweise einen digitalen Signalprozessor (DSP), einem Mikrokontroller, einem anwendungsspezifischen integrierten Schaltkreis (ASIC), oder einen Mikroprozessor.
  • Ein Programm kann in einem Speichermedium oder einem Gerät (beispielsweise einer Hard Disk Drive, einem Floppy Disk Drive, einem Nur-Lese-Speicher (ROM), einem CD-ROM, einem Flash Memory Gerät, eine DVD oder einem anderen Speichergerät), das von einem allgemeinen oder einem besonderen programmierbaren Verarbeitungssystem lesbar ist. Die Befehle, die von einem Prozessor in einem Prozessorsystem zugänglich sind, sorgen für die Konfiguration und den Betrieb des Prozesssystems, wenn das Speichermedium und/oder das Gerät durch das Verarbeitungssystem gelesen wird zum Ausführen der hier beschriebenen Prozeduren. Ausführungsbeispiele der Erfindung können auch als ein maschinenlesbares Speichermedium implementiert sein, konfiguriert für die Verwendung mit einem Verarbeitungssystem, wobei das Speichermedium so konfiguriert ist, dass es das Verarbeitungssystem dazu veranlasst, in einer besonderen vorgegebenen Weise zu arbeiten, um die hier beschriebenen Funktionen auszuführen.
  • Das beispielhafte System 1500 ist repräsentativ für Verarbeitungssysteme basierend auf dem Pentium®, Pentium® Pro, Pentium® II, Pentium® III, Pentium® 4 und Itanium® und Itanium® 2 Mikroprozessoren , verfügbar von der Intel Corporation, obwohl andere Systeme (einschließlich Personalcomputer (PCs) mit anderen Mikroprozessoren, Workstations, Personal Digital Assistants und anderen mobilen Einheiten, Set-Top Boxes und dergleichen) auch verwendet werden können. Bei einem Ausführungsbeispiel können beispielhafte Systeme eine Version des WindowsTM Betriebssystem, das von der Microsoft Corporation erhältlich ist, obwohl andere Betriebssysteme und graphische Verwenderschnittstellen auch verwendet werden können.
  • Obwohl besondere Ausführungsbeispiele der vorliegenden Erfindung gezeigt und beschrieben worden sind, ergibt es sich für den Fachmann, dass Änderungen und Abwandlungen ausgeführt werden können, ohne sich von dem Schutzbereich der beiliegenden Ansprüche zu lösen. Beispielsweise kann die Mappingstruktur 580, die in 5 dargestellt ist, in einer Art und Weise organisiert werden, die anders ist als die oben diskutierte. Beispielsweise kann die Mappingstruktur 580 organisiert sein als eine invertierte Sequenzerseitentabelle, die eine Hash-Tabelle ist, die eine Anzahl von Tabelleneinträgen hat, die gleich ist der Anzahl der gegenständlichen Sequenzerframes. Weiter kann jeder Tabelleneintrag der Mappingstruktur 580 einer verlinkten Liste von Mappierungen einer virtuellen Seite auf einen Seitenrahmen.
  • Beispielsweise kann der Mappingmanager (siehe 502, 5) beispielsweise ein hybrides Mappingschema unterstützen, das sowohl eine Segmentation als auch ein Paging kombiniert. Der Mappingmanager kann für diesen Ansatz eine unterschiedliche Seitentabelle für jedes Segment in einem Prozess verwenden, so dass die Anzahl der Seiten für verschiedene Segmente variieren kann.
  • Bei einem alternativen Ausführungsbeispiel kann der Mappingmanager nicht nur die Sequenzerattributinformation bei dem Ausführen der Sequenzerrationierung berücksichtigen, sondern kann auch Auszeitaktionen berücksichtigen, die von dem gegenständlichen Sequenzer selbst ausgeführt werden. D. h. der Sequenzer kann programmiert sein, um einen Ereignishandhaber aufzurufen bei dem Auftreten des Zeitaus-Ereignisses. Das Zeitaus-Ereignis kann, beispielsweise, jedes Ereignis sein, das angibt dass der Sequenzer keinen Fortschritt macht (lang andauerndes Fehlen des Caches auf der letzten Ebene, Warten auf eine Sperre des Synchronisationsobjektes, usw.). Wenn ein Sequenzer eine Auszeit nimmt, kann der Ereignishandhaber für das Zeitaus-Ereignis eine Arbeit ausführen um den gegenwärtigen Befehlsstrom in eine „Warteschlange" aufzunehmen und den gegenständlichen Sequenzer zurück auf die freie Liste setzen oder, bei einem alternativen Ausführungsbeispiel, das ein LSCQ wie oben beschrieben unterstützt, kann die Auszeit den gegenwärtigen aktiven logischen Sequenzer veranlassen, in das LSCQ zu übergeben und der Mappingmanager 502 kann wiederum einen Ersatz des logischen Sequenzerkontext von dem LSCQ finden. Dies kann ausgeführt werden durch eine Schedulinglogik (siehe beispielsweise 487 nach den 4 und 5). Die Schedulinglogik 487 kann in Ersatz des logischen Kontext planen, auf dem freigegebenen physikalischen Sequenzer zu laufen.
  • Der Ereignishandhaber kann stattdessen oder zusätzlich dazu eine Sequenzerpräfung auf dem nachfolgenden virtuellen Sequenzer oder der Sequenzerseite ausführen. In effektiver Weise sendet eine solche Nachfrage nach der Aktionsfähigkeit einen Altersmechanismus (ähnlich einem Takt oder einem WSClock), um sicher zu stellen, dass alle virtuellen Sequenzer für einen Faden in einer vorhersagbaren Zeitdauer aufgerufen werden.
  • Entsprechend wird der Fachmann erkennen, dass Änderungen und Abwandlungen ausgeführt werden können, ohne sich von der Erfindung nach seinen breiteren Aspekten zu lösen. Die beiliegenden Ansprüche umfassen mit ihrem Schutzbereich alle derartigen Änderungen und Abwandlungen, die in den wahren Schutzbereich der vorliegenden Erfindung fallen.
  • Zusammenfassung
  • Offenbart werden Ausführungsbeispiele eines Systems, Verfahren und Mechanismen zur Verwaltung und zur Übersetzung eines Mappens zwischen den Adressen eines logischen Sequenzers und gegenständlichen oder logischen Sequenzern in einem Mehrsequenzer-Multifaden-System. Ein Mappingmanager kann die Zuweisung verwalten und das Mappen der Adressen des logischen Sequenzers oder der Seiten zu den tatsächlichen Sequenzern oder Frames des Systems. Die Rationierungslogik, die dem Mappingmanager zugehörig ist, kann Sequenzerattribute berücksichtigen, wenn ein derartiges Mappen durchgeführt wird. Die Relokationslogik, die dem Mappingmanager zugehörig ist, kann ein Ausgeben und Aufnehmen von Kontextinformation zu/von einem Sicherungsspeicher verwalten, wenn die aktuellen Sequenzer neu gemappt werden. Die Sequenzer können einzeln oder können als Teil von partionierten Blöcken zugeordnet werden. Der Mappingmanager kann weiter eine Übersetzungslogik aufweisen, die an den Identifizierer für den gemappten Sequenzer schafft, jedes Mal wenn eine Adresse eines logischen Sequenzers in einem Verwenderprogramm verwendet wird. Weitere Ausführungsbeispiele werden auch beschrieben und beansprucht.

Claims (21)

  1. Ein Verfahren mit: Empfangen einer logischen Sequenzeradresse, die in einem Anwenderbefehl angegeben ist; Zuordnen der logischen Sequenzeradresse zu einem aus einer Mehrzahl von Sequenzerrahmen; Empfangen der logischen Sequenzeradresse gemeinsam mit einem zweiten Anwenderbefehl; und Schaffen eines Identifizierers zum Angeben des zugehörigen gegenständlichen Sequenzerrahmens.
  2. Das Verfahren nach Anspruch 1, weiter mit: Aufzeichnen eines Mappings der logischen Sequenzeradresse und des Identifizierers des zugeordneten physikalischen Sequenzerrahmens in einer Mappingstruktur.
  3. Das Verfahren nach Anspruch 2, wobei: das Vorsehen weiter das Konsultieren der Mappingstruktur um Bestimmen des zugeordneten gegenständlichen Sequenzerframes aufweist.
  4. Das Verfahren nach Anspruch 2, wobei: die Mappingstruktur in einem Memoryspeicher angeordnet ist.
  5. Das Verfahren nach Anspruch 4, weiter mit: Puffer wenigstens eines Teiles der Mappingstruktur in einem Hardwarepuffer.
  6. Das Verfahren nach Anspruch 5, wobei: das Vorsehen weiter das Konsultieren des Hardwarepuffers zum Bestimmen des zugeordneten gegenständlichen Sequenzerframes aufweist.
  7. Das Verfahren nach Anspruch 1, wobei: der physikalische Sequenzerframe einen einzigen gegenständlichen Sequenzer aufweist.
  8. Das Verfahren nach Anspruch 1, wobei: das Zuordnen weiter das Bestimmen, ob wenigstens einer aus einer Vielzahl der gegenständlichen Sequenzerrahmen gegenwärtig nicht zugeordnet ist, aufweist.
  9. Das Verfahren nach Anspruch 1, wobei: das Zuordnen weiter das Auswählen eines Betroffenen aus einer Vielzahl von aktiven Sequenzern aufweist.
  10. Das Verfahren nach Anspruch 1, wobei: das Zuordnen weiter das Zuordnen eines oder mehrerer Attribute aus der Mehrzahl der gegenständlichen Sequenzerrahmen aufweist.
  11. Ein Mappierungsmanager für ein Multi-Sequenzer-Mulitfadensystem, mit: einer Rationierungslogik zum Zuordnen einer logischen Sequenzeradresse zu einem gegenständlichen Sequenzer; und einer Übersetzungslogik zum Aufnehmen der logischen Sequenzeradresse und zum Schaffen eines Identifizierers, der einem zugeordneten physikalischen Sequenzer zugehörig ist.
  12. Der Mappingmanager nach Anspruch 11, wobei: die Rationierungslogik weiter eine Beteiligungslogik aufweist, um es dem ersten Sequenzer zu erlauben, unter bestimmten vorgegebenen Bedingungen auf den zweiten Sequenzer zuzugreifen.
  13. Der Mappingmanager nach Anspruch 11, weiter mit: einer Relokationslogik zum Übergeben der Kontextinformation für einen Sequenzer auf einen Sicherungsspeicher.
  14. Der Mappingmanager nach Anspruch 11, weiter mit: einer Schutzlogik zum Hindern eines ersten Sequenzers, ohne Erlaubnis auf einen zweiten Sequenzer zuzugreifen.
  15. Der Mappingmanager nach Anspruch 11, wobei die Übersetzungslogik weiter dazu dient, die logische Sequenzeradresse in Antwort auf eine Referenz in einem Verwenderbefehl zu empfangen.
  16. Der Mappingmanager nach Anspruch 11, weiter mit: eine Schedulinglogik zum Schedulen eines Satzes von logischen Sequenzern zum Ausführen auf einem kleineren Satz von gegenständlichen Sequenzern.
  17. Ein Mulitsequenzer-Multifadensystem, mit: einem Memorysystem zum Speichern eines Verwenderprogramms; einer Mehrzahl von gegenständlichen Sequenzern, die zur gleichzeitigen Fadenausführung fähig sind; und einem Mappingmanager zum Mappen einer Adresse für einen logischen Sequenzer auf einen gegenständlichen Sequenzerrahmen.
  18. Das System nach Anspruch 17, wobei: der aktuelle Sequenzerrahmen nur einen Sequenzer aufweist.
  19. Das System nach Anspruch 17, wobei: der Mappingmanager weiter zum Schaffen eines Identifizierers dient, der dem gegenständlichen Sequenzerrahmen zugehörig ist, in Antwort auf das Empfangen der Adresse des logischen Sequenzers.
  20. Das System nach Anspruch 17, weiter mit: einem Sicherungsspeicher zum Speichern der Kontextinformation, die dem logischen Sequenzer zugehörig ist.
  21. Das System nach Anspruch 17, weiter mit: einer Kontextschlange des logischen Sequenzers zum Speichern von Kontextinformation für den logischen Sequenzer.
DE112006000807.2T 2005-04-05 2006-04-05 Verwaltung von Sequenzer-Adressen Expired - Fee Related DE112006000807B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/100,032 2005-04-05
US11/100,032 US7743233B2 (en) 2005-04-05 2005-04-05 Sequencer address management
PCT/US2006/013263 WO2006108169A2 (en) 2005-04-05 2006-04-05 Sequencer address management

Publications (2)

Publication Number Publication Date
DE112006000807T5 true DE112006000807T5 (de) 2008-01-31
DE112006000807B4 DE112006000807B4 (de) 2014-01-30

Family

ID=36649509

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006000807.2T Expired - Fee Related DE112006000807B4 (de) 2005-04-05 2006-04-05 Verwaltung von Sequenzer-Adressen

Country Status (6)

Country Link
US (1) US7743233B2 (de)
JP (1) JP5058970B2 (de)
KR (2) KR101136610B1 (de)
CN (1) CN101189575B (de)
DE (1) DE112006000807B4 (de)
WO (1) WO2006108169A2 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US8079035B2 (en) * 2005-12-27 2011-12-13 Intel Corporation Data structure and management techniques for local user-level thread data
US20070204266A1 (en) * 2006-02-28 2007-08-30 International Business Machines Corporation Systems and methods for dynamically managing virtual machines
JP2008152594A (ja) * 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8959516B2 (en) 2007-07-30 2015-02-17 International Business Machines Corporation Methods and systems for coordinated financial transactions in distributed and parallel environments
US7904696B2 (en) 2007-09-14 2011-03-08 Intel Corporation Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
JP5533206B2 (ja) * 2010-04-30 2014-06-25 富士通株式会社 検証支援プログラム、検証支援装置、および検証支援方法
US8639993B2 (en) 2010-11-11 2014-01-28 Microsoft Corporation Encoding data to enable it to be stored in a storage block that includes at least one storage failure
US9081660B2 (en) 2011-08-09 2015-07-14 Sandisk Technologies Inc. Method and system for efficiently swapping pieces into and out of DRAM
CN103136047B (zh) * 2011-11-30 2016-08-17 大唐联诚信息系统技术有限公司 一种多线程管理方法及架构
US8863141B2 (en) 2011-12-14 2014-10-14 International Business Machines Corporation Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history
US8694995B2 (en) 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9130979B2 (en) * 2012-12-11 2015-09-08 Microsoft Technology Licensing, Llc Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US10193956B2 (en) 2013-11-13 2019-01-29 Five3 Genomics, Llc Grouping and transferring omic sequence data for sequence analysis
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US9817664B2 (en) 2015-02-19 2017-11-14 Apple Inc. Register caching techniques for thread switches
CN106598545B (zh) * 2015-10-08 2020-04-14 上海兆芯集成电路有限公司 沟通共享资源的处理器与方法及非瞬时计算机可使用媒体
US10223295B2 (en) * 2016-03-10 2019-03-05 Microsoft Technology Licensing, Llc Protected pointers
US10453427B2 (en) 2017-04-01 2019-10-22 Intel Corporation Register spill/fill using shared local memory space
GB201717303D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
US10606641B2 (en) 2017-10-20 2020-03-31 Graphcore Limited Scheduling tasks in a multi-threaded processor
WO2019157743A1 (zh) * 2018-02-14 2019-08-22 华为技术有限公司 线程处理方法和图形处理器
KR20200085966A (ko) * 2019-01-07 2020-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN115190102B (zh) * 2022-07-22 2024-04-16 北京象帝先计算技术有限公司 信息广播方法、装置、电子单元、soc及电子设备

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320453A (en) * 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5559977A (en) * 1992-08-04 1996-09-24 Intel Corporation Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage
US5359570A (en) * 1992-11-13 1994-10-25 Silicon Storage Technology, Inc. Solid state peripheral storage device
DE69425310T2 (de) * 1993-10-18 2001-06-13 Via Cyrix Inc Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor
US5701450A (en) * 1994-02-25 1997-12-23 Seagate Technology, Inc. System including ATA sequencer microprocessor which executes sequencer instructions to handle plurality of real-time events allowing to perform all operations without local microprocessor intervention
JP3231571B2 (ja) * 1994-12-20 2001-11-26 日本電気株式会社 順序付きマルチスレッド実行方法とその実行装置
US5812741A (en) * 1996-02-14 1998-09-22 Jack Kennedy Metal Products And Buildings, Inc. Serial sequencers connected in parallel
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
AU6586898A (en) * 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
CN1206145A (zh) * 1997-06-30 1999-01-27 索尼公司 带有流水线处理电路的信号处理器及其方法
US6243735B1 (en) 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US6263404B1 (en) * 1997-11-21 2001-07-17 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6374314B1 (en) * 1998-09-28 2002-04-16 Raytheon Company Method for managing storage of data by storing buffer pointers of data comprising a sequence of frames in a memory location different from a memory location for pointers of data not comprising a sequence of frames
US6349363B2 (en) * 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6578133B1 (en) * 2000-02-24 2003-06-10 Stanley M. Hyduke MIMD array of single bit processors for processing logic equations in strict sequential order
US6931641B1 (en) 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
FR2809508B1 (fr) * 2000-05-23 2002-08-30 Thomson Csf Systeme et methode de gestion d'une architecture multi-ressources
US6665755B2 (en) * 2000-12-22 2003-12-16 Nortel Networks Limited External memory engine selectable pipeline architecture
US6810472B2 (en) * 2002-06-24 2004-10-26 Intel Corporation Page handling efficiency in a multithreaded processor
US7562362B1 (en) * 2003-06-18 2009-07-14 Apple Inc. User control of task priority
JP2005044363A (ja) * 2003-07-22 2005-02-17 Samsung Electronics Co Ltd 複数のスレッドを同時に処理する装置及び方法
KR100591755B1 (ko) * 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
EP1660993B1 (de) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrierter mechanismus zum suspendieren und endzuteilen rechnerischer threads der ausführung in einem prozessor
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management

Also Published As

Publication number Publication date
KR20090081436A (ko) 2009-07-28
DE112006000807B4 (de) 2014-01-30
KR101136610B1 (ko) 2012-04-23
KR100996753B1 (ko) 2010-11-25
WO2006108169A2 (en) 2006-10-12
US7743233B2 (en) 2010-06-22
US20060224858A1 (en) 2006-10-05
CN101189575A (zh) 2008-05-28
JP2008536224A (ja) 2008-09-04
KR20070121812A (ko) 2007-12-27
JP5058970B2 (ja) 2012-10-24
CN101189575B (zh) 2010-05-19
WO2006108169A3 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
DE112006000807B4 (de) Verwaltung von Sequenzer-Adressen
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
US8601201B2 (en) Managing memory across a network of cloned virtual machines
DE112011104596T5 (de) Systeme, Vorrichtungen und Verfahren für ein Hardware- und Softwaresystem zum automatischen Zerlegen eines Programms in mehrere parallele Threads
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE112010005821T5 (de) Kontextwechsel
DE102013200503A1 (de) Virtualisierungs-Support zum Speichern und Wiederherstellen von Zuständen einer Sprungvorhersage-Logik
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
DE102012216567A1 (de) Verwalten eines register-cachespeichers auf grundlage eines architekturdefinierten computeranweisungssatzes
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
CN103547993A (zh) 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
DE112010003554T5 (de) Symmetrische Direktmigration von Virtuellen Maschinen
CN103635875A (zh) 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
DE112010003397T5 (de) Cachespeicher-Partitionierung in virtualisierten Umgebungen
US20140032854A1 (en) Coherence Management Using a Coherent Domain Table
US8006055B2 (en) Fine granularity hierarchiacal memory protection
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
JPH03113563A (ja) マルチプロセッサスケジューリング方法
DE102020122714A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren
DE112012000965T5 (de) Thread-Übergangs-Verwaltung
DE102012222391B4 (de) Mehrkanal-Zeitscheibengruppen
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
DE102020123164A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren
DE102020101940A1 (de) Techniken zur konfiguration eines prozessors zur funktion als mehrere separate prozessoren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R020 Patent grant now final

Effective date: 20141031

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