-
HINTERGRUND
-
Bereich
-
Ausführungsformen beziehen sich auf Prozessoren und andere Befehlsverarbeitungsvorrichtungen. Insbesondere beziehen sich Ausführungsformen auf Verfahren, Vorrichtungen, Systeme oder Befehle, welche einen internen Zustand von Prozessoren und anderen Befehlsverarbeitungsvorrichtungen aktualisieren.
-
Hintergrundinformationen
-
Bestimmte Prozessoren verwenden eine Ausführung in einer Pipeline, um Ausführungsphasen zu überlappen, wodurch es mehreren Befehlen erlaubt wird, sich zur selben Zeit in unterschiedlichen Phasen der Ausführung zu befinden, was beim Verbessern der Leistungsfähigkeit helfen kann. Die Menge an erreichter Parallelität tendiert dazu, mit der Tiefe der Pipeline größer zu werden. Im Laufe der Zeit haben bestimmte Prozessoren ein tieferes Pipelining eingebaut, beim Versuch, die Leistungsfähigkeit zu verbessern. Pipelining tendiert dazu, effektiver zu sein, wenn der Befehlsstrom bekann ist, so dass die Pipeline voll gehalten werden kann und die Ausführung eines nachfolgenden Befehls nicht auf die Ergebnisse derjenigen in der Pipeline warten muss.
-
Um die Pipeline noch voller zu halten, haben Prozessoren mit einer Pipeline dynamische Vorhersage (z. B. Sprungvorhersage) und spekulative Ausführung verwendet. Die dynamische Vorhersage kann verwendet werden, um den Fluss von Befehlen in dem Befehlsstrom vorherzusagen und Befehle des vorhergesagten Pfads in die Pipeline einzuspeisen. Sprungvorhersage kann ein Vorhersagen der Richtung eines Sprungs beinhalten, zum Beispiel die Richtung eines bedingten Sprungbefehls, bevor die richtige Richtung des Sprungs definitiv bekannt ist. Der Prozessor kann zum Beispiel eine fundierte Vermutung darüber anstellen, welche Richtung der bedingte Sprungbefehl höchstwahrscheinlich nehmen wird, basierend auf der vergangenen Historie. Der Prozessor kann dann damit beginnen, Befehle spekulativ auszuführen, basierend auf der Annahme, dass die vorhergesagte Sprungrichtung richtig ist, jedoch bevor der Prozessor weiß, ob die vorhergesagte Sprungrichtung tatsächlich richtig ist oder nicht.
-
Es wird sich später herausstellen, ob die dynamische Vorhersage (z. B. die vorhergesagte Sprungrichtung) richtig oder falsch ist. Wenn sich später herausstellt, dass die vorhergesagte Sprungrichtung richtig ist, können die Ergebnisse der spekulativen Ausführung verwendet werden. In diesem Fall bietet die spekulative Ausführung einen Mehrwert beim stärkeren Verwenden von Pipeline-Stufen, die ansonsten untätig oder zumindest unausgenutzt wären, beim Warten darauf, dass die richtige Richtung der Sprungrichtung bekannt wird. Wenn sich alternativ herausstellt, dass die vorhergesagte Sprungrichtung falsch ist oder die Sprungrichtung fehlvorhergesagt wurde, sollte die spekulative Ausführung nach dem bedingten Sprungbefehl typischerweise verworfen werden und die Ausführung sollte typischerweise durch Überspringen oder Zurückspringen in den Kontrollfluss zu dem bedingten Sprung zurückgespult werden, der fehlvorhergesagt wurde. Die Ausführung kann dann wieder aufgenommen werden, nun nicht spekulativ mit der nun definitiv bekannten richtigen Sprungrichtung.
-
KURZBESCHREIBUNG MEHRERER ANSICHTEN DER ZEICHNUNGEN
-
Die Erfindung wird am Besten durch Bezugnahme auf die folgende Beschreibung und die begleitenden Zeichnungen verstanden, die zum Darstellen von Ausführungsformen der Erfindung verwendet werden. In den Zeichnungen:
-
1 ist ein Blockdiagramm einer Ausführungsform eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls, der auf einem maschinenlesbaren Speichermedium gespeichert ist.
-
2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung mit einer Befehlsausführung-Scheduler-Warteschlange zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
-
3 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens, das einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ausgibt.
-
4 ist ein Blockdiagramm einer Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung mit einer Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
-
5 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung mit einer bestimmten beispielhaften Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
-
6 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform einer Reservierungsstation mit einer bestimmten beispielhaften Ausführungsform einer bei-Übergabe-Zustandsaktualisierungslogik zum Ausgeben eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls.
-
7 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines geeigneten Computersystems mit einer Ausführungsform eines hier offenbarten Prozessors.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden Beschreibung werden zahlreiche spezifische Details, wie zum Beispiel bestimmte Prozessorkomponenten und Konfigurationen, eine bestimmte Scheduling-Logik und Ähnliches dargelegt. Jedoch sollte verständlich sein, dass Ausführungsformen der Erfindung auch ohne diese spezifischen Details ausgeführt sein könen. In anderen Fällen werden wohlbekannte Schaltungen, Strukturen und Techniken nicht detailliert gezeigt, um das Verständnis dieser Beschreibung nicht zu verschleiern.
-
Eine der Herausforderungen von spekulativer Ausführung innerhalb eines Prozessors bezieht sich auf Aktualisieren oder Ändern des internen Zustands des Prozessors. Prozessoren haben allgemein eine große Menge von internen Zuständen, die nicht spekulativ geändert werden sollten. Einige Prozessoren haben hunderte oder tausende von Bits für den internen Zustand. Der interne Zustand kann System-Flags, Bits in Kontrollregistern und Ähnliches aufweisen. Während des Betriebs des Prozessors, während der Prozessor Code ausführt, kann dieser interne Zustand modifiziert werden, beispielsweise von Mikrocode des Prozessors und/oder von Software/BIOS durch Schnittstellen, die von Mikrocode bereitgestellt sind. Jedoch sollte typischerweise ein großer Teil oder das Meiste dieses internen Zustands nicht spekulativ modifiziert werden, beispielsweise während einer spekulativen Ausführung. Bei einigen Prozessoren kann der am öftesten modifizierte Prozessorzustand umbenannt werden (z. B. im Fall eines Out-of-Order-Prozessors, indem er einem Umordnungspuffer zugewiesen und umbenannt wird), was dabei hilft, gegen spekulative Änderungen dieses Zustands zu schützen. Jedoch werden aufgrund der großen Menge von Prozessorzuständen in einigen Prozessoren nicht alle diese Prozessorzustände umbenannt und der entsprechende Schutz des Prozessorzustands durch Umbenennen wird nicht erreicht.
-
Ausführungsformen der Erfindung beziehen sich auf einen Zustandsaktualisierungsbefehl, der betriebsbereit eingerichtet ist, einen Prozessor dazu zu veranlassen oder zu steuern, einen internen Zustand (z. B. einen nicht umbenannten Prozessorzustand) des Prozessors nicht spekulativ in einem Prozessor mit einer Pipeline, der eine spekulative Ausführung verwendet, zu aktualisieren. In verschiedenen Ausführungsformen kann der Zustandsaktualisierungsbefehl den Prozessor dazu veranlassen oder steuern, den internen Zustand bei Übergabe (commit, z. B. beim Ausscheiden oder direkt nach dem Ausscheiden, beim Abschluss oder direkt nach dem Abschluss, nach einer Auflösung einer dynamischen Vorhersage, nach einem Empfang eines Sprungauflösungssignals usw.) zu aktualisieren. Das Ausführen des Zustandsaktualisierungsbefehls bei der Übergabe hilft beim Bereitstellen, dass der interne Zustand nicht aktualisiert wird, bis bekannt ist, dass die Aktualisierung nicht spekulativ ist. Einige Ausführungsformen sind auf Out-of-Order-Prozessoren (Prozessoren, welche eine Ausführung außer der Programmreihenfolge unterstützen) anwendbar, während andere Ausführungsformen bei In-Order-Prozessoren (Prozessoren, welche in Programmreihenfolge ausführen) anwendbar sind. Weitere Ausführungsformen betreffen Verfahren, welche in Reaktion auf den Zustandsaktualisierungsbefehl durchgeführt werden. Noch weitere Ausführungsformen betreffen eine Vorrichtung zum Verarbeiten des Zustandsaktualisierungsbefehls.
-
1 ist ein Blockdiagramm einer Ausführungsform eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls 102, der auf einem maschinenlesbaren Speichermedium 100 gespeichert ist. In verschiedenen Ausführungsformen kann das maschinenlesbare Speichermedium ein Speicher, z. B. ein Festwertspeicher (Read Only Memory, ROM), ein Befehlsspeicher, ein Befehls-Cache, eine Befehlswarteschlange, ein Befehlspuffer, eine Platte (z. B. eine magnetische oder optische Platte) sein, um nur einige als Beispiel zu nennen.
-
Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann einer Maschine, wie zum Beispiel einem Prozessor oder einer anderen Befehlsausführungsvorrichtung, bereitgestellt sein, auf ihn kann zugegriffen werden oder er kann anderweitig durch die Maschine verarbeitet werden. Die Maschine kann erkennen, dass der Zustandsaktualisierungsbefehl ein Ausführen-bei-Übergabe-Typ eines Zustandsaktualisierungsbefehls ist. Beispielsweise kann die Maschine erkennen, dass ein oder mehrere Bits des Zustandsaktualisierungsbefehls angeben, dass es sich um einen Ausführen-bei-Übergabe-Typ eines Befehls handelt. Es gibt verschiedene unterschiedliche Wege, um dies zu tun. Beispiele von geeigneten Wegen, wie dies gemacht werden kann, weisen auf, sind jedoch nicht beschränkt auf Bereitstellen eines separaten Opcodes für den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl, Bereitstellen eines Tags aus einem oder mehreren Bits des Opcodes zum Markieren, dass ein Zustandsaktualisierungsbefehl, der durch den Opcode identifiziert wird, einer aus einer Ausführen-bei-Übergabe-Vielfalt ist, und Bereitstellen eines Tags aus einem oder mehreren Bits in einem anderen Feld des Befehls (z. B. ein Feld, das sonst nicht für diesen Befehl verwendet wird) zum Markieren, dass der Befehl ein Ausführen-bei-Übergabe-Befehl ist, um nur einige als Beispiel zu nennen.
-
Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann, wenn oder falls er von der Maschine verarbeitet wird, die Maschine dazu veranlassen oder dazu (ihren, mit dem Einplanen/Ausgeben und Ausführen des Zustandsaktualisierungsbefehls zu warten, bis der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist, oder sonst wenn die Ausführung des Zustandsaktualisierungsbefehls nicht spekulativ ist. Die Maschine kann dann den Zustandsaktualisierungsbefehl einplanen/ausgeben, ausführen und übergeben. Wenn der Zustandsaktualisierungsbefehl ausführt oder in einigen Fällen übergeben wird, kann der interne Zustand der Maschine aktualisiert werden. Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ist betriebsbereit eingerichtet, den Prozessor oder eine andere Befehlsverarbeitungsvorrichtung derart zu steuern, dass die Ausführung des Zustandsaktualisierungsbefehls auf einer bestimmten Pipeline-Stufe, nämlich bei der Übergabe stattfindet.
-
In einer bestimmten beispielhaften Ausführungsform kann der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein Ausführen-bei-Übergabe-Steuerregister-Schreibbefehl sein, der betriebsbereit eingerichtet ist, ein Steuerregister, das ein Beispiel eines Typs eines internen Zustands repräsentiert, zu beschreiben oder zu modifizieren. Die Inhalte des Steuerregisters können System-Flags, Paging-Tabellenstellen für Adressübersetzung, Segmentierungsdaten, Speicherbereichstypen, Prozessormodi (z. B. Schutz oder Caching) oder Ähnliche repräsentieren. Hinsichtlich eines Aspekts darf das Steuerregister nicht derart konfiguriert sein, dass es durch Registerumbenennung umbenannt wird, was das Steuerregister oder den internen Zustand noch anfälliger für oder weniger geschützt vor Modifikationen während der spekulativen Ausführung machen kann.
-
In einer oder mehreren Ausführungsformen ist der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein Mikrobefehl. Andere Ausführungsformen sind nicht auf Mikrocode-gesteuerte Prozessoren beschränkt.
-
Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann vorteilhaft dabei helfen, spekulative Aktualisierungen des internen Zustands zu vermeiden. Da der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl die Maschine dazu veranlasst, damit zu warten, den Zustandsaktualisierungsbefehl einzuplanen, auszugeben und auszuführen, bis der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist, wird der Zustandsaktualisierungsbefehl keine Aktualisierung des internen Zustands der Maschine verursachen, bis nach der Ausführung des Befehls bekannt ist, dass er nicht spekulativ ist. Darüber hinaus ist das Einrichten des Zustandsaktualisierungsbefehls selbst als ein Ausführen-bei-Übergabe-Befehl ein direkter und effizienter Weg zum Verhindern von spekulativen Aktualisierungen des internen Zustands. Grundsätzlich ist es der Zustandsaktualisierungsbefehl, der nicht spekulativ vorkommen sollte, um eine spekulative Modifikation des internen Zustands zu verhindern, und nicht die bedingten Mikrosprung-Befehle oder andere Typen von Befehlen.
-
2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung 204 mit einer Befehlsausführung-Scheduler-Logik 212 zum Einplanen eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls 202. Der Prozessor oder die Befehlsverarbeitungsvorrichtung kann eine von verschiedenen Typen sein, wie zum Beispiel verschiedene Complex Instruction Set Computing(CISC)-Typen, verschiedene Reduced Instruction Set Computing(RISC)-Typen, verschiedene Very Long Instruction Word(VLIW)-Typen und verschiedene Hybride davon, um lediglich einige als Beispiel zu nennen. Der Prozessor oder die andere Befehlsverarbeitungsvorrichtung kann Befehle entweder in Programmreihenfolge (In-Order) oder in einer anderen Reihenfolge als der Programmreihenfolge (Out-of-Order) ausführen.
-
In einer oder mehreren Ausführungsformen kann der Prozessor ein Allzweckprozessor sein, wie zum Beispiel einer der Allzweckprozessoren, die von der Intel Corporation aus Santa Clara, Kalifornien, hergestellt werden, obwohl dies nicht notwendig ist. Ein paar repräsentative Beispiele von geeigneten Allzweckprozessoren, die von der Intel Corporation verfügbar sind, weisen auf, sind jedoch nicht beschränkt auf Intel® Atom-Prozessoren, Intel® CoreTM-Prozessoren, Intel® CoreTM2-Prozessoren, Intel® Pentium®-Prozessoren und Intel® Celeron®-Prozessoren.
-
Alternativ kann der Prozessor ein Spezialprozessor sein. Repräsentative Beispiele von geeigneten Spezialprozessoren weisen auf, sind jedoch nicht beschränkt auf Netzwerkprozessoren, Kommunikationsprozessoren, Kryptographieprozessoren, Grafikprozessoren, Co-Prozessoren, eingebettete Prozessoren und digitale Signalprozessoren (DSPs), um nur wenige als Beispiel zu nennen. Diese Prozessoren können ebenfalls auf CISC, RISC, VLIW, Hybriden davon oder andere Typen von Prozessoren basieren. In noch weiteren Ausführungsformen kann der Prozessor oder die Befehlsverarbeitungsvorrichtung einen Controller (z. B. ein Mikrocontroller) oder einen anderen Typ einer logischen Schaltung repräsentieren, die in der Lage ist, Mikrocode oder Mikrobefehle zu verarbeiten.
-
Wieder Bezug nehmend auf 2 ist die Befehlsausführung-Scheduler-Logik 212 dazu betriebsbereit eingerichtet, Befehle zur Ausführung einzuplanen oder auszugeben. Die Befehlsausführung-Scheduler-Logik 212 kann während der Verwendung den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 202 empfangen. Wie erwähnt worden ist, kann der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einen Tag oder eine andere Angabe aufweisen, dass der Befehl ein Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ist. Hinsichtlich eines Aspekts kann dieses Tag oder diese andere Angabe am vorderen Ende bereitgestellt sein (z. B. durch eine Befehlsabruf/Sequencer-Logik). Die Befehlsabruf/Sequencer-Logik kann eine Logik aufweisen, um zu spezifizieren, dass ein bestimmter einzelner Befehl in dem Prozessor, der eine spekulative Ausführung verwendet, nicht spekulativ ausgeführt werden soll. In den hier offenbarten Ausführungsformen ist die Spezifikation (z. B. durch einen Tag oder ein oder mehrere Bits eines Felds des Befehls) in einem Zustandsaktualisierungsbefehl aufgenommen.
-
Der Befehlsausführung-Scheduler weist eine optionale Befehlswarteschlage 208 auf. Die optionale Befehlswarteschlange kann verwendet werden, um Befehle 210 zu speichern, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 202 aufweisen. In einer oder mehreren Ausführungsformen kann die optionale Befehlswarteschlange ebenfalls Operanden oder andere Daten oder Parameter speichern, die den Befehlen zugeordnet sind. Die Befehl-Scheduler-Logik ist betriebsbereit eingerichtet, die Befehle in der Befehlswarteschlange zur Ausführung einzuplanen/auszugeben. In einer Ausführungsform kann die Befehl-Scheduler-Logik die Befehle in Programmreihenfolge einplanen oder in einer anderen Ausführungsform kann die Befehl-Scheduler-Logik die Befehle außerhalb der Programmreihenfolge einplanen.
-
Die Befehl-Scheduler-Logik weist eine bei-Übergabe-Zustandsaktualisierungslogik 214 auf. Die bei-Übergabe-Zustandsaktualisierungslogik ist eingerichtet, damit zu warten, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen/auszugeben, bis der Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist. Die älteren Befehle, die älter als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl sind, können ausführen und übergeben werden, bevor es dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl erlaubt ist, eingeplant/ausgegeben und ausgeführt zu werden. In einer oder mehreren Ausführungsformen kann die Befehlsausführung-Scheduler-Logik eine Angabe des nächsten Befehls zur Übergabe und/oder eine Angabe, dass die Ausführung nicht spekulativ ist, von einer anderen Komponente empfangen, wie zum Beispiel einem Umordnungspuffer, einer Übergabelogik oder Sprungauflösungslogik (z. B. ein Sprungauflösungssignal). Wenn der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe und/oder nicht spekulativ ist, kann die Befehlsausführung-Scheduler-Logik den Zustandsaktualisierungsbefehl zur Ausführung einplanen/ausgeben 216.
-
Die Ausführungslogik 220 ist an die Befehlsausführung-Scheduler-Logik gekoppelt. Die Ausfürungslogik kann den ausgegebenen Zustandsaktualisierungsbefehl empfangen. Die Ausführungslogik kann Logik aufweisen, wie zum Beispiel Hardware (z. B. Schaltkreise), Software, Firmware oder einige Kombinationen davon, um den Zustandsaktualisierungsbefehl auszuführen. In einer oder mehreren Ausführungsformen weist die Ausführungslogik mindestens einige Schaltkreise auf, um den Zustandsaktualisierungsbefehl auszuführen. Der Schaltkreis kann beispielsweise einen bestimmten/spezialisierten Schaltkreis aufweisen, der auf den Zustandsaktualisierungsbefehl oder Mikrobefehl reagiert.
-
In einer oder mehreren Ausführungsformen kann ein Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl vor einem Einplanen/Ausgabe und einer Ausführung in einem Out-of-Order-Abschnitt eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung zurückgehalten werden. In einer oder mehreren Ausführungsformen kann eine Befehlsausführung-Scheduler-Logik in einem Out-of-Order-Abschnitt eines Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung aufgenommen sein.
-
3 ist ein Blockflussdiagramm einer Ausführungsform eines Verfahrens 370 zum Einplanen eines Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls. Das Verfahren weist ein Empfangen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls in Block 371 auf. Das Verfahren weist ein Warten darauf, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zur Ausführung einzuplanen, bis der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist, in Block 372 auf. Das Verfahren weist ein Einplanen des Ausfüren-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung, wenn er der nächste Befehl zur Übergabe ist, in Block 373 auf.
-
4 ist ein Blockdiagramm einer Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung 404 mit einer Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange 406. Der Prozessor oder die andere Befehlsverarbeitungsvorrichtung kann eines beliebigen Typs sein, wie zum Beispiel verschiedene Complex Instruction Set Computing(CISC)-Typen, verschiedene Recuced Instruction Set Computing(RISC)-Typen, verschiedene Very Long Instruction Word(VLIW)-Typen und verschiedene Hybride davon, um nur einige als Beispiel zu nennen.
-
In einer oder mehreren Ausführungsformen kann der Prozessor ein Allzweckprozessor sein, wie zum Beispiel einer der Allzweckprozessoren, die von der Intel Corporation aus Santa Clara, Kalifornien, hergestellt werden, obwohl dies nicht erforderlich ist. Ein paar repräsentative Beispiele von geeigneten Allzweckprozessoren, die von der Intel Corporation verfügbar sind, weisen auf, sind jedoch nicht beschränkt auf Intel® Atom-Prozessoren, Intel® CoreTM-Prozessoren, Intel® CoreTM2-Prozessoren, Intel® Pentium®-Prozessoren und Intel® Celeron®-Prozessoren.
-
Der Prozessor kann alternativ ein Spezialprozessor sein. Repräsentative Beispiele von geeigneten Spezialprozessoren weisen auf, sind jedoch nicht beschränkt auf Netzwerkprozessoren, Kommunikationsprozessoren, Kryptographieprozessoren, Grafikprozessoren, Co-Prozessoren, eingebettete Prozessoren und digitale Signalprozessoren (DSPs), um nur ein paar als Beispiel zu nennen. Diese Prozessoren können ebenfalls auf CICS, RISC, VLIW, Hybriden davon oder anderen Typen von Prozessoren basieren. In noch weiteren Ausführungsformen kann der Prozessor oder die weitere Befehlsverarbeitungsvorrichtung einen Controller (z. B. einen Mikrocontroller) oder einen anderen Typ einer Logikschaltung repräsentieren, die in der Lage ist, Mikrocode oder Mikrobefehle zu verarbeiten.
-
Der Prozessor ist ein Out-of-Order-Prozessor, der eingerichtet ist, Befehle außerhalb der Programmreihenfolge auszuführen. In einigen Fällen kann ein nachfolgender Befehl von der Ausführung eines vorhergehenden Befehls abhängen. Die Fähigkeit, Befehle außerhalb der Programmreihenfolge auszuführen, erlaubt es dem Prozessor, Abschnitte der Pipeline mit Befehlen zu füllen, die nicht von der Ausführung eines vorhergehenden Befehls in der Pipeline abhängen, wobei die, die von der Ausführung eines vorhergehenden Befehls abhängen, darauf warten, dass der Befehl, von dem sie abhängen, endet. Dies kann dabei helfen, die Leistungsfähigkeit des Prozessors zu verbessern. Der Prozessor kann jedoch den architektonischen Zustand des Prozessors für Software oder einen Benutzer in der ursprünglichen Programmreihenfolge präsentieren. Um dies zu erreichen, weist der Out-of-Order-Prozessor Logik (z. B. einen Umordnungspuffer) auf, um zu erlauben, dass ein Zustand aus der Ausführung eines jüngeren Befehls, der vor einem älteren Befehl ausgeführt worden ist, erhalten bleibt, bis die Ausführung aus dem älteren Befehl verfügbar wird. Wenn die Ausführung des älteren Befehls verfügbar wird, kann eine Ausscheidelogik oder Übergabelogik betriebsbereit eingerichtet sein, die Aktualisierung des architektonischen Zustands des Prozessors (z. B. aus dem Umordnungspuffer) zu steuern, durch Aktualisieren des Zustands in der ursprünglichen Befehlsreihenfolge. Das Abbilden eines sichtbaren Zustands auf Einträge des Umordnungspuffers kann durch Umbenennen erreicht werden.
-
Wieder Bezug nehmend auf 4 weist der Out-of-Order-Prozessor oder die andere Befehlsverarbeitungsvorrichtung einen In-Order-Frontend-Teil oder -Abschnitt 424 auf, der Befehle in Programmreihenfolge verarbeiten kann. Ohne Beschränkung kann das Frontend eine oder mehrere Komponenten aufweisen, wie zum Beispiel eine Befehlsabruf/Sequenzlogik (z. B. eine Befehlsabruf/Sequenzlogik oder -schaltung, nicht gezeigt), eine Befehlsdecodierlogik (z. B. einen Decodierer oder eine Decodierschaltung, nicht gezeigt) und Befehlsverteillogik (z. B. eine Befehlsverteillogik oder -schaltung, nicht gezeigt), obwohl der Umfang der Erfindung nicht auf irgendeine bekannte Komponente des Frontends beschränkt ist. In einer oder mehreren Ausführungsformen kann Logik in dem Frontend-Teil oder -Abschnitt (z. B. die Abruf/Scheduler-Logik) mit einem Tag oder anderweitig spezifizieren, dass ein Zustandsaktualisierungsbefehl einer aus einer Ausführen-bei-Übergabe-Vielfalt ist.
-
Der Out-of-Order-Prozessor oder Vorrichtung weist ebenfalls ein Out-of-Order-Backend-Teil oder -Abschnitt 426 auf, das an den Frontend-Teil oder -Abschnitt gekoppelt ist, um Befehle zu empfangen, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 402 aufweisen. Das Out-of-Order-Backend kann die Befehle umordnen und die Befehle außer Programmreihenfolge verarbeiten.
-
Wie es gezeigt worden ist, kann das Out-of-Order-Backend eine Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange 406 aufweisen. Auf die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange kann ebenfalls als eine dynamische Befehlsausführung-Scheduler-Warteschlange Bezug genommen werden. Das Out-of-Order-Backend kann ebenfalls eine Befehlsumordnungslogik (z. B. einen Umordnungspuffer, nicht gezeigt) und eine Befehlsausführungslogik (z. B. eine Ausführungslogik, nicht gezeigt) aufweisen. Die Befehlsausführungslogik kann die Befehle außer Programmreihenfolge ausführen und Ausführungsergebnisse 430 bereitstellen.
-
Die dargestellte Ausführungsform der Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist eine Befehlswarteschlange 408, eine Out-of-Order-Befehl-Scheduler-Logik 428 und eine bei-Übergabe-Zustandsaktualisierungslogik 414 auf. Die Befehlswarteschlange kann aufgebaut sein, wie vorher beschrieben worden ist. Die bei-Übergabe-Zustandsaktualisierungslogik kann gemäß einer oder mehreren Ausführungsformen die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange dazu veranlassen, mit dem Einplanen des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls zur Ausführung zu warten, bis der Zustandsaktualisierungsbefehl ein nächster Befehl zur Übergabe ist.
-
Die Out-of-Order-Befehl-Scheduler-Logik kann die Befehle in der Befehlswarteschlange außerhalb der Programmreihenfolge einplanen. Gemäß einem Aspekt kann die Out-of-Order-Befehl-Scheduler-Logik eine Logik aufweisen, um eine Anzahl von Faktoren vor einem Einplanen eines Befehls zur Ausführung sicherzustellen, zu überprüfen oder zu evaluieren. Repräsentative Beispiele solcher Faktoren weisen potentiell auf, ob die Eingabe (z. B. ein Quelloperand) eines Befehls von einem Ausführungsergebnis eines bis jetzt noch nicht ausgeführten Befehls abhängt oder nicht, ob die Eingabe des Befehls aus einem Speicher geladen werden muss oder nicht und ob der Befehl darauf warten muss, dass eine beschäftigte Ausführungslogik oder eine andere Ressource verfügbar wird, oder nicht.
-
Da die Befehlsausführung-Scheduler-Warteschlange 406 eine Out-of-Order-Befehlsausführung-Scheduler-Warteschlange ist, ist sie vorteilhaft in einem Out-of-Order-Teil oder -Abschnitt 426 des Prozessors angeordnet und weist die Out-of-Order-Befehl-Scheduler-Logik auf, wobei die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange eingerichtet ist, einen oder mehrere jüngere Befehle 410 zur Ausführung einzuplanen/auszugeben, vor einem Einplanen/Ausgeben des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls 402 zur Ausführung, der vom Einplanen/Ausgeben und Ausführung zurückgehalten wird, bis er der nächste Befehl zur Übergabe ist. Der Klarheit halber sind die jüngeren Befehle 410 jünger als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 402, was heißt, dass sie chronologisch nach dem Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl in der ursprünglichen Programmreihenfolge auftreten (z. B. würden die jüngeren Befehle abgerufen und decodiert werden nach dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl in dem In-Order-Frontend).
-
Wenn den jüngeren Befehlen erlaubt wird, um den zurückgehaltenen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl herum auszugeben und auszuführen, kann dies vorteilhaft dabei helfen, eine Blase in der Ausführung zu vermeiden, die ansonsten dazu tendieren würde, die Leistungsfähigkeit zu verringern. Falls stattdessen der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl von der Ausführung in dem In-Order-Frontend-Teil oder -Abschnitt des Prozessors zurückgehalten worden wäre, würden alle Mikrobefehle, die jünger als der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl sind, typischerweise ebenfalls vom Ausgeben und Ausführen hinter dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl zurückgehalten werden. Die jüngeren Mikrobefehle können nicht um den zurückgehaltenen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl herum gelangen. Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl und alle jüngeren Befehle können zurückgehalten werden, während alle Befehle, die älter als der Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl sind, durch die Pipeline durchlaufen und potentiell auf Latenzen (z. B. aufgrund von Lade-Misses usw.) stoßen, bevor es dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl und jedem jüngeren Befehl erlaubt ist, auszugeben und auszuführen. Dies kann eine Blase in der Ausführung verursachen, die dazu tendieren kann, die Leistungsfähigkeit zu reduzieren.
-
Wieder Bezug nehmend auf 4 weist der Out-of-Order-Prozessor oder Vorrichtung ebenfalls eine In-Order-Übergabelogik 432 auf, die an den Out-of-Order-Backend-Teil oder -Abschnitt 426 gekoppelt ist, um die Ausführungsergebnisse 430 zu empfangen. Die In-Order-Übergabelogik kann die Ausführungsergebnisse umordnen, so dass sie in Programmreihenfolge sind und dann die Ausführungsergebnisse in Programmreihenfolge übergeben. Gemäß einem Aspekt darf die Übergabelogik keine Befehle übergeben, bis alle älteren Befehle davor in ursprünglicher Programmreihenfolge übergeben worden sind. Die Übergabe der Befehle kann ein Schreiben 433 der Ausführungsergebnisse, die den Befehlen in Programmreihenfolge zugeordnet sind, in die Registerdatei oder einen anderen für Programmierer sichtbaren architektonischen Zustand 434 des Prozessors aufweisen. Wenn Befehlsergebnisse in den Prozessor geschrieben werden, sagt man, dass dieser Befehl übergeben worden ist. In dem Fall der vorher diskutierten Zustandsaktualisierungsbefehle kann der architektonische Zustand den vorher diskutierten internen Zustand aufweisen (z. B. Flags, Steuerregister usw.). Gemäß einem Aspekt kann der interne Zustand aktualisiert werden, wenn der Zustandsaktualisierungsbefehl ausführt, bevor er tatsächlich übergeben wird. Dies kann beispielsweise der Fall bei einem nicht umbenannten internen Zustand sein. Der Prozessor kann einen umbenannten Prozessorzustand bei der Übergabe aktualisieren, kann jedoch einen nicht umbenannten Prozessorzustand bei der Ausführung aktualisieren.
-
5 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform eines Out-of-Order-Prozessors oder einer anderen Befehlsverarbeitungsvorrichtung 504 mit einer bestimmten beispielhaften Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange 506, um einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 502 auszugeben. Der Prozessor oder die andere Befehlsverarbeitungsvorrichtung kann ein beliebiger der verschiedenen vorher erwähnten Typen sein (z. B. CISC, RISC, Allzweck, Spezial usw.).
-
Der Prozessor oder die andere Vorrichtung weist einen Ausgabeumordnungspuffer 540 auf. In einer oder mehreren Ausführungsformen kann der Ausgabeumordnungspuffer ein Puffer sein, der zwischen einem In-Order-Frontend und einer Ausführungslogik gekoppelt ist. Befehle können in den Ausgabeumordnungspuffer in Programmreihenfolge eintreten und der Ausgabeumordnungspuffer kann die Befehle sowie Informationen, die den Befehlen zugeordnet sind, wie zum Beispiel den Befehlsstatus, Operanden und den ursprünglichen Platz oder die Stelle in der Programmreihenfolge oder Sequenz der Befehle speichern oder puffern. Die Befehle können in dem Ausgabeumordnungspuffer warten, bis Daten, die zum Ausführen der Befehle (z. B. Eingabeoperanden) notwendig sind, verfügbar sind und Ressourcen, die zum Ausführen des Befehls benötigt werden, verfügbar sind.
-
Der Prozessor oder die andere Vorrichtung weisen ebenfalls die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange auf, die eingerichtet ist, einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 502 auszuführen. Wie es gezeigt worden ist, kann in einer oder mehreren Ausführungsformen der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl optional von einer Zuweisungslogik 542 des Prozessors empfangen werden, die an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange gekoppelt sein kann.
-
Die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist eine Befehlswarteschlange 508 auf, die, wie es vorher beschrieben worden ist, verwendet werden kann, um Befehle zu speichern, die den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl aufweisen. Die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist ebenfalls eine Out-of-Order-Befehl-Scheduler-Logik 512 auf, die, wie es vorher beschrieben worden ist, die Befehle zur Ausführung potentiell außer der Programmreihenfolge einplanen kann. Die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange weist ebenfalls eine bei-Übergabe-Zustandsaktualisierungslogik 514 auf, die, wie es vorher beschrieben worden ist, in einer oder mehreren Ausführungsformen mit dem Einplanen des Zustandsaktualisierungsbefehls zur Ausführung warten kann, bis der Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist. Wie es gezeigt worden ist, kann die Out-of-Order-Befehl-Scheduler-Logik eine Angabe eines nächsten Befehls zur Übergabe empfangen 544.
-
Der Prozessor oder die andere Vorrichtung weist ebenfalls eine Out-of-Order-Ausführungslogik 520 auf, die an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange gekoppelt ist. Die Ausführungslogik kann die ausgegebenen oder eingeplanten Befehle von der Befehlsausführung-Scheduler-Warteschlange empfangen, die den Ausführenbei-Übergabe-Zustandsaktualisierungsbefehl aufweisen, wenn es angegeben ist, dass er der nächste Befehl ist, der übergeben werden soll. Die Out-of-Order-Ausführungslogik kann Logik aufweisen, in einer Ausführungsform mindestens einige Schaltkreise, um die Befehle in diesem Fall außer der Programmreihenfolge auszuführen.
-
Der Prozessor oder die andere Vorrichtung weist ebenfalls eine In-Order-Übergabelogik 532 auf, die an die Out-of-Order-Ausführungslogik gekoppelt ist, um Ausführungsergebnisse zu empfangen. Wie es gezeigt worden ist, kann die Übergabelogik in einer oder mehreren Ausführungsformen einen Abschlussumordnungspuffer 546 aufweisen. Der Abschlussumordnungspuffer 546 und der Ausgabeumordnungspuffer 540 können entweder dieselben Puffer oder unterschiedliche Puffer sein. In einer oder mehreren Ausführungsformen kann der Ausgabeumordnungspuffer und der Abschlussumordnungspuffer ein gewöhnlicher oder ein im Wesentlichen gewöhnlicher Umordnungspuffer (re-order buffer, ROB) sein, wie er in bestimmten Out-of-Order-Prozessoren verwendet wird, oder diesen umfassen. In einer weiteren Ausführungsform kann der Umordnungspuffer durch eine Abschlusswarteschlange ersetzt sein.
-
Der Abschlussumordnungspuffer kann die Befehle und die Ausführungsergebnisse puffern, bis sie dazu bereit sind, in Programmreihenfolge übergeben zu werden. Der Umordnungspuffer kann die Befehle nachverfolgen, die ausgeführt worden sind, und kann beim Ausscheiden oder Übergeben der ausgeführten Befehle in Programmreihenfolge assistieren. Der Abschlussumordnungspuffer kann Logik aufweisen, um die Befehle und ihre zugeordneten Ergebnisdaten, die aus dem Out-of-Order-Abschnitt des Prozessors kommen, in dieselbe Reihenfolge zu bringen, die die Befehle in dem In-Order-Frontend-Abschnitt des Prozessors hatten. Wenn der Befehl übergeben wird, kann er die Ergebnisdaten aus dem Umordnungspuffer lesen und die Ergebnisdaten in den architektonischen Zustand des Prozessors schreiben. In dem Fall der vorher diskutierten Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle kann der architektonische Zustand den vorher diskutierten internen Zustand (z. B. Flags, Steuerregister usw.) aufweisen. Gemäß einem Aspekt kann der interne Zustand aktualisiert werden, wenn der Zustandsaktualisierungsbefehl ausgeführt wird, bevor er tatsächlich übergeben wird. Dies kann zum Beispiel bei nicht umbenannten internen Zuständen der Fall sein. Der Prozessor kann einen umbenannten Prozessorzustand bei der Übergabe aktualisieren, jedoch einen nicht umbenannten Prozessorzustand bei der Ausführung aktualisieren.
-
Wie es gezeigt worden ist, kann in einer oder mehreren Ausführungsformen der Abschlussumordnungspuffer, der bereits Befehle nachverfolgt, die ausgeschieden worden sind, einen Ausscheidezeiger oder eine andere Angabe des nächsten Befehls zum Ausscheiden 544 für die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange bereitstellen. Der nächste Befehl zum Ausscheiden ist ein Beispiel einer Angabe eines nächsten Befehls zur Übergabe. Weitere Beispiele von Angaben, dass ein Befehl zur Übergabe bereit ist, können ein Abschlusssignal aufweisen oder auf einer dynamischen Vorhersageauflösung (z. B. ein Sprungauflösungssignal) basieren, um ein paar zusätzliche Beispiele zu nennen. Es sollte ebenfalls klargestellt werden, dass das Konzept des Ausscheidens, obwohl es hier für einen Out-of-Order-Prozessor gezeigt ist, nicht auf Out-of-Order-Prozessoren beschränkt ist. Wenn der Ausführen-bei-Übergabe-Befehl der nächste Befehl zur Übergabe ist, kann der Abschlussumordnungspuffer eine Angabe an die Out-of-Order-Befehlsausführung-Scheduler-Warteschlange liefern, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist. Der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl kann dann ausgegeben, ausgeführt, übergeben werden und einen internen Zustand 536 aktualisieren.
-
Wenn ein Out-of-Order-Prozessor Befehle spekulativ ausführt, können die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse in dem/den Umordnungspuffer(n) zusammen mit nicht spekulativ ausgeführten Befehlen gespeichert sein. Jedoch kann/können der/die Umordnungspuffer die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse nachverfolgen und die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse an der Übergabe hindern, bis bestätigt worden ist, dass die spekulative Ausführung bestätigt ist/die benötigte Ausführung ist (z. B. wird bestätigt, dass die Richtung eines bedingten Sprungbefehls richtig vorhergesagt worden ist). Die nun bestätigten/benötigten Befehle und ihre Ausführungsergebnisse können dann übergeben und in den architektonischen Zustand geschrieben werden. Alternativ, wenn vorgefunden worden ist, dass die spekulative Ausführung fehlerhaft ist und nicht benötigt wird (z. B. wurde die Richtung eines bedingten Sprungbefehls fehlvorhergesagt), dann dürfen die spekulativ ausgeführten Befehle und ihre Ausführungsergebnisse nicht übergeben werden und dürfen nicht in den architektonischen Zustand geschrieben werden (z. B. können sie aus dem/den Umordnungspuffer(n) gelöscht werden). Vorteilhafterweise können in dieser Ausführungsform durch Zurückhalten der Aktualisierung oder Änderung des internen Zustands des Prozessors bis der Umordnungspuffer angibt, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der nächste Befehl zur Übergabe ist (was ein Bestimmen aufweist, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl nicht spekulativ ist), spekulative Aktualisierungen des internen Zustands verhindert oder zumindest reduziert werden.
-
6 ist ein Blockdiagramm einer bestimmten beispielhaften Ausführungsform einer Reservierungsstation 606 mit einer bestimmten beispielhaften Ausführungsform einer bei-Übergabe-Zustandsaktualisierungslogik 614, um einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl 602 auszugeben. Die Reservierungsstation repräsentiert eine beispielhafte Ausführungsform einer Out-of-Order-Befehlsausführung-Scheduler-Warteschlange oder einer Befehlseinplanungslogik. Neben den Merkmalen, die nachfolgend beschrieben werden, oder die die bei-Übergabe-Zustandsaktualisierungslogik betreffen, oder die Interaktionen der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehle mit der Reservierungsstation, kann die Reservierungsstation weitere gewöhnliche oder im Wesentlichen gewöhnliche Merkmale aufweisen. Die Reservierungsstation kann entweder zentral zu oder von der Ausführungslogik eines Prozessors gemeinsam genutzt sein oder unterschiedliche Reservierungsstationen können für unterschiedliche Sätze einer Ausführungslogik bereitgestellt sein.
-
Die Reservierungsstation weist eine Vielzahl von Einträgen 650-0 bis 650-n auf, wobei die Zahl n eine ganze Zahl größer als 2 ist, beispielsweise von ungefähr 10 bis ungefähr 100. Jeder Eintrag kann eine Warteschlange 608-0 bis 608-n haben, um Befehle einzureihen und in einigen Fällen verschiedene Daten der Reservierungsstation, die den Befehlen zugeordnet sind (z. B. Operanden, die den Befehlen zugeordnet sind). In einer oder mehreren Ausführungsformen kann die Reservierungsstation betriebsbereit sein, einen Ergebnisbus, auf dem Daten in Register geschrieben werden, zu snoopen oder zu überwachen und die Reservierungsstation kann betriebsbereit sein, die Daten von dem Ergebnisbus in den Warteschlangen zu speichern. Dies kann dabei helfen, die Notwendigkeit von aufeinander folgenden Zugriffen auf die Daten in den Registern zu vermeiden.
-
Die Reservierungsstation hat ebenfalls eine Vielzahl von Zeigerspeicherstellen 652-0 bis 652-n für physikalische Ziele (pdst). Diese Stellen sind betriebsbereit eingerichtet, Zeiger auf physikalische Ziele oder Einträge in einem Umordnungspuffer zu speichern, wo sich die Daten für den entsprechenden Befehl befinden. Jeder Befehl und jeder Eintrag kann einen Zeiger auf ein physikalisches Ziel (pdst) haben. Jeder dieser Zeiger auf physikalische Ziele (pdst) kann eine Angabe eines Befehls repräsentieren, der in einem entsprechenden Eintrag in der Reservierungsstation gespeichert ist.
-
Die Reservierungsstation hat ebenfalls die bei-Übergabe-Zustandsaktualisierungslogik 614. Die bei-Übergabe-Zustandsaktualisierungslogik ist betriebsbereit eingerichtet, das Einplanen des Zustandsaktualisierungsbefehls zu blockieren, der mit einem Tag versehen ist, das angibt, dass er nicht spekulativ und/oder bei Übergabe auszuführen ist, bis der Zustandsaktualisierungsbefehl der nächste zum Ausscheiden oder zur anderweitigen Übergabe ist.
-
Die bei-Übergabe-Zustandsaktualisierungslogik weist eine Logik auf, um eine Angabe, dass der Zustandsaktualisierungsbefehl nicht spekulativ und/oder bei Übergabe ausführen sollte, dem bei-Übergabe-Zustandsaktualisierungsbefehl zuzuordnen, und mit der Altersreihenfolge des bei-Übergabe-Zustandsaktualisierungsbefehls innerhalb der Befehlssequenz. In der dargestellten Ausführungsform weist beispielsweise die bei-Übergabe-Zustandsaktualisierungslogik eine Vielzahl von Sätzen von einem oder mehreren bei-Übergabe-Bits 654-0 bis 654-n auf. Jeder der Sätze des einen oder der mehreren bei-Übergabe-Bits entspricht einem anderen Eintrag in der Reservierungsstation. Die bei-Übergabe-Zustandsaktualisierungslogik weist ebenfalls eine Bitwertabgleichlogik 656 auf, die an jeden der Sätze der bei-Übergabe-Bits gekoppelt ist. Die Bitwertabgleichlogik ist betriebsbereit eingerichtet, in Reaktion auf einen bei-Übergabe-Zustandsaktualisierungsbefehl 602 einen Wert eines Satzes des einen oder der mehreren bei-Übergabe-Bits in einem Eintrag in der Reservierungsstation, der dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl (z. B. in einem Eintrag, wo der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl eingereiht werden soll) entspricht, auf einen gegebenen Wert abzugleichen.
-
Ein bei-Übergabe-Bit kann beispielsweise entweder auf den Wert von Eins (gemäß einer Konvention) gesetzt sein oder auf einen Wert von Null (gemäß einer anderen Konvention) gelöscht werden in Reaktion auf den bei-Übergabe-Zustandsaktualisierungsbefehl. In einer oder mehreren Ausführungsformen kann die bei-Übergabe-Zustandsaktualisierungslogik einen Decodierer aufweisen, um einen Op-Code des bei-Übergabe-Zustandsaktualisierungsbefehls zu decodieren, um zu bestimmen, dass der Befehl eine bei-Übergabe-Variante eines Befehls ist, und dann die Bits entsprechend anzupassen. Der Decodierer kann unter Verwendung von verschiedenen unterschiedlichen Typen von Mechanismen implementiert sein. Beispiele von geeigneten Typen von Mechanismen weisen auf, sind jedoch nicht beschränkt auf Microcode-Festwertspeicher (Read Only Memories, ROMs), Look-up-Tabellen, Hardware-Implementierungen, programmierbare logische Arrays (Programmable Logic Arrays, PLAs) und Ähnliche. Der Decodierer kann in Hardware (z. B. als Schaltkreis), Firmware, Software oder eine Kombination davon implementiert sein. Es ist nicht notwendig, dass die Ausführen-bei-Übergabe-Angabe durch den Op-Code bereitgestellt ist, sie kann vielmehr durch ein anderes Feld bereitgestellt sein.
-
Die bei-Übergabe-Zustandsaktualisierungslogik weist ebenfalls eine Bestimmungslogik 658 auf. Gemäß einem Aspekt kann die Bestimmungslogik eine Vielzahl von Sätzen einer Bestimmungslogik 658-0 bis 658-n aufweisen, von denen jeder einem anderen Eintrag in der Befehlswarteschlange entspricht. Jeder der Sätze der Bestimmungslogik ist an eine andere entsprechende aus den Zeigerspeicherstellen für physikalische Ziele (pdst) gekoppelt, um einen anderen Zeiger für physikalische Ziele (pdst) zu empfangen. Jeder der Sätze der Bestimmungslogik ist ebenfalls an einen Umordnungspuffer gekoppelt, um beispielsweise einen Ausscheidezeiger 644 zu empfangen (z. B. einen nächsten auszuscheidenden Schwanzzeiger), der eine Ausführungsform einer Angabe eines nächsten Befehls zum Ausscheiden oder zur anderweitigen Übergabe darstellt. Jeder der Sätze der Bestimmungslogik ist ebenfalls an einen anderen entsprechenden der Sätze des einen oder der mehreren bei-Übergabe-Bits gekoppelt, um einen anderen entsprechenden der Sätze der bei-Übergabe-Bits zu empfangen.
-
Die Bestimmungslogik weist eine Altersreihenfolge-Vergleichslogik auf, die eine Logik aufweist, um einen Altersreihenfolgenvergleich (z. B. der Vergleich zwischen dem Ausscheidezeiger 644 mit dem pdst 652) mit der Angabe über die bei-Übergabe-Bits 654 zu qualifizieren, dass der Zustandsaktualisierungsbefehl nicht spekulativ und/oder bei Übergabe ausführen soll. Die Bestimmungslogik ist betriebsbereit dazu eingerichtet, wenn der Satz des einen oder der mehreren bei-Übergabe-Bits am Einstieg der Befehlswarteschlange, die dem bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, den gegebenen Wert hat (d. h. den Wert, den er für einen Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl haben würde), zu bestimmen, ob einer Angabe eines nächsten Befehls zur Übergabe (z. B. der Ausscheidezeiger) mit einer Angabe des bei-Übergabe-Zustandsaktualisierungsbefehls am Einstieg der Befehlswarteschlange, die dem bei-Übergabe-Zustandsaktualisierungsbefehl entspricht (z. B. der Zeiger auf das physikalische Ziel (pdst) am Einstieg, wo der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl eingereiht ist, übereinstimmt oder nicht. Ein Satz einer Bestimmungslogik am Einstieg der Reservierungsstation, wo der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl gespeichert ist oder gespeichert werden soll, kann beispielsweise den einen oder die mehreren bei-Übergabe-Bits für denselben Eintrag, den Zeiger auf das physikalische Ziel (pdst) für denselben Eintrag und den Übergabezeiger empfangen und kann den Zeiger auf das physikalische Ziel (pdst) mit dem Ausscheidezeiger vergleichen.
-
Die Reservierungs- oder Einplanungslogik kann eine Logik aufweisen, um den bei-Übergabe-Zustandsaktualisierungsbefehl zu blockieren, zur Ausführung eingeplant zu werden, bis der Mikrobefehl der nächste zur Übergabe (z. B. Ausscheiden) ist. Wenn der Zeiger auf das physikalische Ziel (pdst) nicht mit dem Ausscheidezeiger übereinstimmt oder gleich ist, kann darauf zurückgeschlossen werden, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl nicht der nächste Befehl zum Ausscheiden oder zur anderweitigen Übergabe ist und die Bestimmungslogik kann fortfahren, damit zu warten, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einzuplanen oder auszugeben. Die Bestimmungslogik kann beispielsweise ein Blockierungssignal an eine Out-of-Order-Einplanungslogik 612 liefern. Dies bedeutet, dass der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl noch nicht für eine Übergabe bereit ist. Die älteren Befehle vor dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl müssen ausgeschieden oder anderweitig übergeben werden, bevor es dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl erlaubt wird, übergeben zu werden. Die älteren Befehle werden ausgeschieden, bis zu dem Zeitpunkt, an dem der Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl der älteste Befehl in der Reservierungsstation ist und zum Ausscheiden oder zur anderweitigen Übergabe bereit ist. An einem Punkt, wenn oder falls der Zeiger auf das physikalische Ziel (pdst) mit dem Ausscheidezeiger übereinstimmt oder gleich ist, kann aus dem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl rückgeschlossen oder bestimmt werden, dass er der nächste Befehl zur Übergabe ist, und die Bestimmungslogik kann bestimmen, dass es möglich ist, den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einzuplanen oder auszugeben. Die Bestimmungslogik kann beispielsweise ein Entblockierungssignal oder ein Signal, das kein Blockierungssignal ist, an die Out-of-Order-Einplanungslogik liefern.
-
In einer oder mehreren Ausführungsformen kann jeder der Sätze der Bestimmungslogik eine Logik eines gleich-wie-Typs aufweisen, obwohl dies nicht notwendig ist. Die gleich-wie-Logik kann beispielsweise mit einer Logik eines exklusives-ODER-Typs implementiert sein. Alternativ können andere Typen von Bestimmungs- oder Vergleichslogik, die dazu geeignet sind, zu bestimmen, ob der Ausscheidezeiger mit dem Zeiger auf das physikalische Ziel (pdst) übereinstimmt oder gleich ist oder nicht, stattdessen verwendet werden.
-
Die Out-of-Order-Einplanungslogik kann das Blockierungs- oder Entblockierungssignal von der Bestimmungslogik empfangen. Wenn das eine oder die mehreren bei-Übergabe-Bits für einen Eintrag, der einem Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl entspricht, den gegebenen Wert haben, würden sie für den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl abgeglichen werden, die Out-of-Order-Einplanungslogik muss nicht den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einplanen, wenn ein Blockierungssignal zugesichert ist, kann jedoch möglicherweise den Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehl einplanen, wenn ein Entblockierungssignal zugesichert ist, in Abhängigkeit von weiteren Faktoren, die gewöhnlicherweise bei der Out-of-Order-Befehlseinplanung berücksichtigt werden (z. B. Ressourcen- und/oder Datenverfügbarkeit). In einer oder mehreren Ausführungsformen kann die Out-of-Order-Einplanungslogik eine Blockierungslogik, eine Bereitschaftslogik und eine Sammellogik aufweisen, die neben dem Merkmal, dass sie die Blockierungs/Entblockierungssignale oder Aspekte aufgrund des Ausführen-bei-Übergabe-Zustandsaktualisierungsbefehls berücksichtigen müssen, gewöhnlich oder im Wesentlichen gewöhnlich sein können.
-
Dies ist lediglich eine darstellende beispielhafte Ausführungsform. Weitere Ausführungsformen werden betrachtet, die eine Logik aufweisen, um die Ausführung des Zustandsaktualisierungsbefehls anders zu blockieren, die unterschiedliche Signale daneben beim Ausscheiden (z. B. ein Sprungauflösungssignal oder ein anderes bei-Übergabe-Signal) usw. verwenden.
-
Noch weitere Ausführungsformen betreffen ein System (z. B. ein Computersystem oder eine weitere elektronische Vorrichtung), die einen oder mehrere Prozessoren, wie es hier offenbart ist, aufweisen und/oder ein Verfahren, wie es hier offenbart ist, durchführen. 12 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines geeigneten Computersystems oder elektronischen Vorrichtung 1286.
-
Das Computersystem weist einen Prozessor 1200 auf. In einer oder mehreren Ausführungsformen kann der Prozessor eine Mikrocode-Aliased-Parameter-Weiterreichungslogik und/oder eine Mikrocode-Aliased-Parameter-Speicher-und-Wiederherstellungslogik aufweisen, wie es hier an anderer Stelle offenbart ist.
-
Der Prozessor kann einen oder mehrere Kerne haben. Im Fall eines Mehrfachkernprozessors können die mehreren Kerne auf einem Chip oder Die einer einzelnen integrierten Schaltung (IC) monolithisch integriert sein. Gemäß einem Aspekt kann jeder Kern mindestens eine Ausführungseinheit und mindestens einen Cache aufweisen. Der Prozessor kann ebenfalls einen oder mehrere gemeinsam genutzte Caches aufweisen.
-
In einer bestimmten Ausführungsform kann der Prozessor einen integrierten Grafikcontroller, einen integrierten Videocontroller und einen integrierten Speichercontroller aufweisen, die jeweils auf einem einzelnen Die des Allzweckmikroprozessors monolithisch integriert sind, obwohl dies nicht erforderlich ist. Alternativ können einige oder alle der Komponenten außerhalb des Prozessors angeordnet sein. Der integrierte Speichercontroller kann beispielsweise aus dem Prozessor ausgelassen sein und der Chipsatz kann ein Speichercontroller-Hub (MCH) aufweisen.
-
Der Prozessor ist an einen Chipsatz 1288 über einen Bus (z. B. ein Front Side Bus) oder eine andere Zusammenschaltung 1287 gekoppelt. Die Zusammenschaltung kann verwendet werden, um Datensignale zwischen den Prozessor und weiteren Komponenten des Systems über den Chipsatz zu übermitteln.
-
Ein Speicher 1289 ist an den Chipsatz gekoppelt. In verschiedenen Ausführungsformen kann der Speicher einen Direktzugriffsspeicher (Random Access Memory, RAM) aufweisen. Ein dynamischer RAM (DRAM) ist ein Beispiel eines Typs eines RAM, der in einigen, jedoch nicht allen Computersystemen verwendet wird.
-
Eine Komponentenzusammenschaltung 1290 ist ebenfalls an den Chipsatz gekoppelt. In einer oder mehreren Ausführungsformen kann die Komponentenzusammenschaltung eine oder mehrere Peripheral Component Interconnect Express(PCIe)-Schnittstellen aufweisen. Die Komponentenzusammenschaltung kann es anderen Komponenten ermöglichen, an den Rest des Systems durch den Chipsatz gekoppelt zu sein. Ein Beispiel solcher Komponenten ist ein Grafikchip oder eine andere Grafikvorrichtung, obwohl dies optional und nicht erforderlich ist.
-
Ein Daten-Storage-Speicher 1291 ist an den Chipsatz gekoppelt. In verschiedenen Ausführungsformen kann der Daten-Storage-Speicher ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speicher-Vorrichtung, einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder Ähnliches oder eine Kombination davon aufweisen.
-
Ein Netzwerkcontroller 1293 ist ebenfalls an den Chipsatz gekoppelt. Der Netzwerkcontroller kann es dem System erlauben, an ein Netzwerk gekoppelt zu sein.
-
Ein serieller Erweiterungsport 1292 ist ebenfalls an den Chipsatz gekoppelt. In einer oder mehreren Ausführungsformen kann der serielle Erweiterungsport einen oder mehrere Universal Serial Bus(USB)-Ports aufweisen. Der serielle Erweiterungsport kann verschiedenen anderen Typen von Eingabe/Ausgabe-Vorrichtung erlauben, an den Rest des Systems durch den Chipsatz gekoppelt zu sein.
-
Ein paar veranschaulichende Beispiele von anderen Komponenten, die optional an den Chipsatz gekoppelt sein können, weisen auf, sind jedoch nicht beschränkt auf einen Audio-Controller, einen drahtlosen Transceiver und eine Benutzereingabevorrichtung (z. B. eine Tastatur, Maus).
-
In einer oder mehreren Ausführungsformen kann das Computersystem eine Version des WINDOWSTM-Betriebssystems ausführen, das von der Microsoft Corporation aus Redmond, Washington verfügbar ist. Alternativ können andere Betriebssysteme, wie zum Beispiel UNIX, Linux oder eingebettete Systeme verwendet werden.
-
Dies ist lediglich ein bestimmtes Beispiel eines geeigneten Computersystems. Andere System-Designs und Konfigurationen, die im Stand der Technik für Laptops, Desktops, handgehaltene PCs, Personal Digital Assistants, Ingenieurs-Workstations, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Switches, Videospielvorrichtungen, Set-Top-Boxen und verschiedene andere elektronische Vorrichtungen mit Prozessoren bekannt sind, sind ebenfalls geeignet. In einigen Fällen können die Systeme mehrere Prozessoren haben.
-
In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt” und „verbunden” zusammen mit ihren Ableitungen verwendet werden. Es sollte verständlich sein, dass diese Begriffe nicht dazu bestimmt sind, Synonyme füreinander zu sein. Vielmehr kann in bestimmten Ausführungsformen „verbunden” verwendet werden, um anzugeben, dass zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt” ebenfalls bedeuten, dass zwei oder mehr Elemente nicht in einem direkten Kontakt miteinander stehen, jedoch nach wie vor miteinander kooperieren oder interagieren. Eine Befehlsausführung-Scheduler-Warteschlange kann zum Beispiel an eine Ausführungslogik durch eine oder mehrere Zwischenkomponenten gekoppelt sein.
-
In der obigen Beschreibung wurden für erklärende Zwecke zahlreiche spezifische Details dargelegt, um ein tiefgehendes Verständnis der Ausführungsformen der Erfindung bereitzustellen. Einem Fachmann wird jedoch klar, dass eine oder mehrere andere Ausführungsformen ohne einige dieser spezifischen Details umgesetzt werden können. Die bestimmten beschriebenen Ausführungsformen werden nicht bereitgestellt, um die Erfindung zu beschränken, sondern um Ausführungsformen der Erfindung darzustellen. Der Umfang der Erfindung sollte nicht durch die spezifischen Beispiele, die oben bereitgestellt werden, bestimmt werden, sondern nur durch die nachfolgenden Ansprüche. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen, Vorrichtungen und Operationen in einer Blockdiagrammform oder ohne Details gezeigt, um ein Verschleiern des Verständnisses der Beschreibung zu vermeiden. Wo es angebracht erschien, wurden Bezugszeichen oder Endabschnitte von Bezugszeigen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben, die optional ähnliche Eigenschaften haben können.
-
Verschiedene Operationen und Verfahren wurden beschrieben. Einige der Verfahren wurden in einer grundlegenden Form in den Flussdiagrammen beschrieben, jedoch können zu den Verfahren Operationen optional hinzugefügt und/oder entfernt werden. Zusätzlich, während die Flussdiagramme eine bestimmte Reihenfolge der Operationen gemäß den beispielhaften Ausführungsformen zeigen, sollte verständlich sein, dass diese bestimmte Reihenfolge beispielhaft ist. Alternative Ausführungsformen können die Operationen optional in einer unterschiedlichen Reihenfolge durchführen, bestimmte Operationen kombinieren, bestimmte Operationen überlappen usw. Viele Modifikationen und Anpassungen können an den Verfahren durchgeführt werden und sind vorgesehen.
-
Bestimmte Operationen können von Hardware-Komponenten durchgeführt werden oder können als maschinenausführbare oder schaltungsausführbare Befehle verkörpert sein, die verwendet werden können, um eine Schaltung oder eine Hardware, die mit den Befehlen programmiert ist, dazu zu veranlassen die Operationen durchzuführen, oder zumindest dazu führen. Die Schaltung kann einen Allzweck- oder einen Spezialprozessor oder eine logische Schaltung aufweisen, um lediglich einige Beispiele zu nennen. Die Operationen können ebenfalls optional von einer Kombination aus Hardware und Software durchgeführt werden. Eine Ausführungslogik und/oder ein Prozessor können einen spezifischen oder bestimmten Schaltkreis oder eine andere Logik aufweisen, die auf Befehle oder Mikrobefehle oder ein oder mehrere Steuersignale, die aus einem Maschinenbefehl abgeleitet sind, reagiert, um bestimmte Operationen durchzuführen.
-
Eine oder mehrere Ausführungsformen weisen einen Herstellungsartikel (z. B. ein Computerprogrammprodukt) auf, das ein maschinenzugreifbares und/oder maschinenlesbares Medium oder Datenträger aufweist. Das Medium kann einen Mechanismus aufweisen, der Informationen in einer Form bereitstellt, beispielsweise speichert oder sendet, die von der Maschine zugreifbar und/oder lesbar ist. Das maschinenzugreifbare und/oder maschinenlesbare Medium kann einen oder mehrere oder eine Sequenz von Befehlen und/oder Datenstrukturen bereitstellen oder darauf gespeichert haben, die, wenn sie von einer Maschine ausgeführt werden, die Maschine dazu veranlassen oder dazu führen, eine oder mehrere oder einen Abschnitt der Operationen oder Verfahren oder der in den hier offenbarten Figuren gezeigten Techniken durchführen, und/oder die Maschine zum Durchführen veranlassen.
-
In einer Ausführungsform kann das maschinenlesbare Medium ein greifbares nicht vergängliches maschinenlesbares Speichermedium sein. Beispielsweise kann das greifbare nicht vergängliche maschinenlesbare Speichermedium eine Floppy-Diskette, ein optisches Speichermedium, eine optische Platte, eine CD-ROM, eine magnetische Platte, eine magneto-optische Platte, einen Nur-Lese-Speicher (Read Only Memory, ROM), einen programmierbaren ROM (PROM), einen lesbaren und programmierbaren ROM (EPROM), einen elektrisch löschbaren und programmierbaren ROM (EEPROM), einen Wahlzugriffsspeicher (Random Access Memory, RAM), einen statischen RAM (SRAM), einen dynamischen RAM (DRAM), einen Flash-Speicher, einen Phasenwechselspeicher oder Kombinationen davon aufweisen. Das greifbare Medium kann ein oder mehrere feste oder greifbare physikalische Materialien aufweisen, wie zum Beispiel ein Halbleitermaterial, ein Phasenwechselmaterial, ein magnetisches Material usw.
-
In einer weiteren Ausführungsform kann das maschinenlesbare Medium ein nicht greifbares vergängliches maschinenlesbares Kommunikationsmedium aufweisen. Das vergängliche maschinenlesbare Kommunikationsmedium kann zum Beispiel ein elektrisches, optisches, akustisches oder eine andere Form eines verbreiteten Signals aufweisen, wie zum Beispiel Trägerwellen, Infrarotsignale, digitale Signale usw.
-
Beispiele von geeigneten Maschinen weisen auf, sind jedoch nicht beschränkt auf Computersysteme, Desktops, Laptops, Notebooks, Netbooks, Nettops, mobile Internetvorrichtungen (MIDs), Netzwerkvorrichtungen, Router, Switches, Mobiltelefone, Medienabspieler und andere elektronische Vorrichtungen mit einem oder mehreren Prozessoren oder anderen Befehlsausführungsvorrichtungen. Solche elektronischen Vorrichtungen weisen typischerweise einen oder mehrere Prozessoren auf, die mit einer oder mehreren anderen Komponenten gekoppelt sind, wie zum Beispiel eine oder mehrere Storage-Speichervorrichtungen (nicht vergängliches maschinenlesbares Speichermedium), Eingabe/Ausgabe-Benutzervorrichtungen (z. B. eine Tastatur, ein berührungsempfindlicher Bildschirm und/oder eine Anzeige) und/oder Netzwerkverbindungen. Das Koppeln der Prozessoren und anderer Komponenten wird typischerweise durch einen oder mehrere Busse und Bridges erfolgen (die ebenfalls als Bus-Controller bezeichnet werden). Die Storage-Speichervorrichtung einer gegebenen elektronischen Vorrichtung kann somit Code und/oder Daten zur Ausführung auf dem einen oder den mehreren Prozessoren dieser elektronischen Vorrichtung speichern. Alternativ kann ein oder mehrere Teile einer Ausführungsform der Erfindung unter Verwendung unterschiedlicher Kombinationen von Software, Firmware und/oder Hardware implementiert sein.
-
Es sollte ebenfalls gewürdigt werden, dass Bezüge in dieser Spezifikation auf „(genau) eine Ausführungsform”, „eine Ausführungsform” oder „eine oder mehrere Ausführungsformen” beispielsweise bedeuten, dass ein bestimmtes Merkmal bei der Ausübung von Ausführungsformen der Erfindung aufgenommen sein kann. In einer ähnlichen Art und Weise sollte jedoch gewürdigt werden, dass in der Beschreibung verschiedene Merkmale manchmal zusammen in einer einzelnen Ausführungsform, Figur oder der Beschreibung davon für die Zwecke der Glättung der Offenbarung und der Hilfe beim Verständnis von verschiedenen erfindungsgemäßen Aspekten gruppiert sind. Dieses Verfahren der Offenbarung ist jedoch nicht derart auszulegen, dass eine Erfindung derart reflektiert wird, dass die Erfindung mehr Merkmale erfordert, als ausdrücklich in jedem Anspruch angegeben ist. Vielmehr können, wie es durch die folgenden Ansprüche reflektiert wird, erfindungsgemäße Aspekte in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform liegen. Somit werden die der detaillierten Beschreibung folgenden Ansprüche hiermit ausdrücklich in diese detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich selbst als eine separate Ausführungsform der Erfindung steht.