-
Hintergrund
-
Gebiet der Erfindung
-
Diese Erfindung betrifft allgemein das Gebiet von Computerprozessoren. Insbesondere bezieht sich die Erfindung auf eine Vorrichtung und ein Verfahren zum Unterstützen universeller logischer Operationen auf einem Computerprozessor.
-
Beschreibung des verwandten Standes der Technik
-
Computerprozessoren führen Anweisungen aus, um mathematische Operationen und logische Operationen durchzuführen. Mathematische Operationen umfassen z. B. Fließkomma- und ganzzahlig Addition, Subtraktion, Multiplikation und Division mit unterschiedlichen Genauigkeitsgraden. Logische Operationen umfassen Funktionen wie AND, OR, NAND, NOR, XOR, Links-/Rechtsverschiebung, Swizzle, Selektion und Voting, um nur einige zu nennen.
-
Unter bestimmte Umständen (insbesondere, wenn drei oder mehr Operanden involviert sind, können relativ einfache logische Operationen die Ausführung in einer erheblichen Anzahl von Anweisungen erfordern. Beispielsweise erfordert eine Logik wie dest = (src1 AND dest) OR (src2 AND (NOT dest)) eine Spezifizierung, dass, falls ein bestimmtes Bit in dem Zählregister (dest) gesetzt ist, das Sourceregister 1 (src1) gewählt wird, während andernfalls das Sourceregister 2 (src2) ausgewählt wird. Das Ausführen dieser Operationen unter Verwendung herkömmlicher Techniken erfordert die Ausführung mehrerer verschiedener Anweisungen (zwei AND-Operationen, eine OR-Operation und eine NOT-Operation). Einer Auswahl anderer verhältnismäßig einfacher Funktionen muss mit mehreren Sequenzen von Anweisungen unter Verwendung herkömmlicher Techniken implementiert werden.
-
Daher waren neue Techniken von Vorteil zum Ausführen von logischen Operationen, welche die Ausführung weniger Anweisungen erfordern.
-
Kurze Beschreibung der Zeichnungen
-
Ein besseres Verständnis der vorliegenden Erfindung kann aus der folgenden Beschreibung in Verbindung mit den folgenden Zeichnungen erlangt werden, in denen Folgendes dargestellt ist:
-
1 stellt eine Ausführungsform der Erfindung dar, in welcher Indices zu einem direkten Wert aus drei Quelloperanden erzeugt werden.
-
2 stellt eine Ausführungsform des Verfahrens zum Indizieren eines direkten Wertes dar, um logische Operationen auszuführen.
-
3 stellt eine weitere Ausführungsform des Verfahrens dar, um logische Operationen auszuführen.
-
4 stellt eine Prozessorarchitektur dar, die in einer Ausführungsform der Erfindung eingesetzt wird.
-
5 stellt eine Systemarchitektur dar, die in einer Ausführungsform der Erfindung eingesetzt wird.
-
6 stellt mehrere Bearbeitungselemente gemäß einer Ausführungsform der Erfindung dar.
-
Detaillierte Beschreibung
-
In der folgenden Beschreibung werden zu Zwecken der Erklärung mehrere spezifische Details dargestellt, um ein vollständiges Verständnis der Ausführungsform der Erfindung, die nachfolgend beschrieben wird, zu geben. Es wird jedoch von dem Fachmann verstanden, dass die Ausführungsformen der Erfindung ohne einige dieser spezifischen Details ausgeführt werden können. In anderen Fällen werden gut bekannte Strukturen und Vorrichtungen in Form von Blockdiagrammen dargestellt, um von den grundlegenden Prinzipien der Ausführungsform der Erfindung nicht abzulenken.
-
Ein „direkter Wert” ist ein binärer Wert, der zu einer Anweisung gehört (z. B. explizit als Teil der Anweisung enthalten ist oder mit der Anweisung kombiniert ist). Ein gut bekannter direkter Wert, der zu dem Befehlssatz des x86 gehört, ist in einem 8-Bit direkter Wert, der mit imm8 bezeichnet wird. Der direkte Wert für eine Anweisung wird mit der Anweisung zur Kompilierungszeit erzeugt. Obgleich die Ausführungsformen der Erfindung, die nachfolgend beschrieben werden, die direkten Werte imm8 oder imm16 verwenden, sind die zugrundeliegenden Prinzipien der Erfindung nicht auf diese spezielle Art des direkten Wertes beschränkt. Tatsächlich können die zugrundeliegenden Prinzipien der Erfindung unter Verwendung jeder Art von binärem Code, der mit einer Anweisung verknüpft ist, implementiert werden.
-
In einer Ausführungsform der Erfindung werden verschiedene direkte Werte verwendet, um verschiedene logische Operationen zu identifizieren (z. B. AND, NAND, XOR, Inversion, Selektion, Vote, etc.). In dieser Ausführungsform werden bestimmte Bits aus den Quelloperanden einer Anweisung kombiniert, um einen Indexwert zu bilden, der Bitpositionen innerhalb des direkten Werts der Anweisung identifiziert. Die Bits, welche aus den identifizierten Positionen gelesen werden, werden in einem Zielregister kombiniert, um zu dem Ergebnis der logischen Operation zu gelangen. In anderer Weise ausgedrückt, wird der direkte Wert als eine Nachschlagtabelle verwendet werden, um zum Ergebnis für jede logische Operation zu gelangen.
-
1 stellt ein spezielles Beispiel dar, in welchem Bits aus drei Operanden gelesen werden, die in einem Quellregister 1 (src1) 102, in einem Quellregister 2 (src2) 101 und einem Zielregister (dest) 100 gespeichert sind, um einen Index 105 zu bilden, der eine Bitposition innerhalb eines direkten Wertes 110 identifiziert. Die binären Werte an den identifizierten Bitpositionen werden dann in das Zielregister 100 kopiert. Obgleich diese besondere Registeranordnung zum Zwecke der Beschreibung verwendet wird, sind die zugrundeliegenden Prinzipien der Erfindung nicht auf irgendwelche besondere Registersätze beschränkt. Beispielsweise kann ein drittes bestimmtes Quellregister benutzt werden (z. B. „source register 3”), anstelle ein „destination” Register zu verwenden, um einen Quelloperanden zu speichern.
-
In dem speziellen Beispiel, das in 1 gezeigt ist, werden Bits aus den ersten Bitpositionen des Zielregisters 100 und den Quellregistern 101 und 102 anfänglich gelesen, um einen Index 010 zu bilden, wie dargestellt (wie durch die durchgezogenen Pfeile angezeigt). In einer Ausführungsform wird der Index aus einer bitweisen Verknüpfug (Konkatenation) der drei Quellwerte gebildet. Der Index 010 identifiziert die Position 2 des direkten Wertes 110 (d. h. der binäre Wert 010 ist 2). Das Bit aus der Bitposition 2 wird dann aus dem direkten Wert gelesen (eine binäre 1 in dem dargestellten Beispiel) und in dem Zielregister an der ersten Bitposition gespeichert, wie gezeigt. Der gleiche Vorgang wird für jedes der Bits von jedem der Quelloperanden implementiert, bis alle Bits gelesen wurden und die indizierten Bitwerte aus dem direkten Wert in das Zielregister kopiert wurden. Beispielsweise wird, wie in 1 gezeigt, ein Indexwert von 110 erzeugt unter Verwendung von Bits aus den zweiten Bitpositionen der Ziel- und Quellregister und dieser Indexwert wird verwendet, um den direkten Wert an der Bitposition 6 zu indizierten (d. h. ein binärer Wert 110 ist 6). Das Bit von der Bitposition 6 wird dann von dem direkten Wert (eine binäre 0) gelesen und in der zweiten Bitposition des Zielregisters gespeichert.
-
Ein Verfahren gemäß einer Ausführungsform der Erfindung wird in 2 dargestellt. Bei 201 werden Werte aus den spezifizierten Bitpositionen der Operandenregister (z. B. dest, src1, src2) gelesen. Mehrere Sätze von Werten können gleichzeitig aus mehreren Indexwerten parallel gelesen werden. Bei 202 werden die Werte kombiniert, um einen Index zu dem direkten Wert zu bilden, und bei 203 wird der Index verwendet, um eine oder mehrere Bitpositionen innerhalb des direkten Wertes zu identifizieren. Wie vorhergehend erwähnt, werden in einer Ausführungsform Bits aus den entsprechenden Bitpositionen in den Quelloperanden verknüpft, um die Indices des direkten Wertes zu bilden. Bei 204 wird der Wert (werden die Werte) an der Bitposition (den Bitpositionen), welche durch die Indexwerte indiziert ist (sind), gelesen und bei 205 werden die Werte aus den indizierten Bitpositionen in das Zielregister kopiert.
-
Unter Verwendung der vorhergehend genannten Techniken können verschiedene direkte Werte spezifiziert werden, um verschiedene logische Operationen zu implementieren. Als ein Beispiel, welches aber nicht beschränkend ist, können die folgenden Arten von Operationen ausgeführt werden, unter Verwendung der folgenden direkten Werte:
- 1. Setze das Ergebnis alle auf eins. Direkter Wert = 11111111. In diesem Beispiel führen alle Bits, die aus dem direkten Wert gelesen werden, zu einer binären 1 in dem Zielregister.
- 2. Invertieren beim Kopieren. Direkter Wert = 01010101. Aktuelle NOT-Anweisungen (z. B. jene, die im aktuellen x86 Anweisungssatz implementiert sind) invertieren am Ort unter Zerstörung der ursprünglichen Daten. Im Unterschied dazu kopieren die oben beschriebenen Techniken unter Verwendung des obigen direkten Werts in ein anderes Register. Diese Anweisung kann die Form annehmen dest = NOT src1.
- 3. Emulieren einer existierenden logischen Operation. Direkter Wert = 10001000. Dieser direkte Wert führt zu einer AND-Operation der Werte in dem Quellregister 1 und im Quellregister 2, d. h. dest = src1 AND src2. Es ist zu beachten, dass, da die Bits 0–3 und die Bits 7–4 identisch sind, der Wert in dem direkten Register (dest) das Ergebnis nicht beeinflusst. Demzufolge wird in einer Ausführungsform das Zielregister nicht gelesen, um den Stromverbrauch zu senken.
-
Die folgende Tabelle (Tabelle A) stellt imm8-Werte dar, welche den bestehenden logischen Operationen des x86 entsprechen: Tabelle A
Bestehende Operation | Direkter Wert |
dest = NOT src1 | 01010101 |
dest = src1 OR src2 | 11101110 |
dest = src1 AND src2 | 10001000 |
dest = src1 ANDN src2 | 00100010 |
dest = src1 XOR src2 | 01100110 |
- 4. Kombinieren zweier existierender logischer Operationen. Direkter Wert = 01111000. Dieser direkter Wert führt zu einem AND des Quellregisters 1 und des Quellregisters 2, wobei das Ergebnis mit dem Wert in dem Zielregister einem XOR unterzogen wird. Diese Anweisung kann die Form annehmen dest = (src1 AND src2) XOR dest. Wie vorhergehend beschrieben, ist der einzige Weg, um diese Operation unter Verwendung von herkömmlichen Techniken zu implementieren, die Ausführung mehrerer unterschiedlicher Anweisungen, welche einen erheblichen Anteil von Zeit und Bearbeitungsressourcen benötigen. Im Unterschied dazu, kann die Verwendung des oben spezifizierten direkten Wertes zu einem Ergebnis in der gleichen Zeit führen, wie die anderen hierin beschriebenen Operationen.
- 5. Selektion. Direkter Wert = 10101100. Das Ziel dieser Operation ist es, das Zielregister 1 auszuwählen, falls das entsprechende Bit in dem Ziel gesetzt ist, und andernfalls das Zielregister 2 auszuwählen. Üblicherweise würde dies eine Logik erfordern wie: dest = (src1 AND dest) OR (src2 AND (NOT dest)), was eine erhebliche Anzahl von Anweisungen erfordert. Im Unterschied dazu wird die Verwendung des oben spezifizierten direkten Wertes das Ergebnis so effektiv liefern, wie die anderen Operationen mit direktem Wert, die hierin spezifiziert sind.
- 6. Voting. Direkter Wert = 11101000. Durch Verwendung dieser Operation wird von den drei Eingaben der populärste Wert ausgewählt. Beispielsweise, falls ein Bit im Zielregister 0 ist, das Bit in dem Quellregister 11 ist und das Bit in dem Quellregister 20 ist, dann ist der populärste Wert 0. Somit wird eine 0 ausgewählt und in dem Zielregister gespeichert.
-
Es ist zu verstehen, dass die vorangehenden Operationen lediglich zum Zwecke der Darstellung vorgesehen sind. Die zugrundeliegenden Prinzipien der Erfindung sind nicht auf irgendeinen besonderen Satz von Operationen beschränkt. Eine virtuelle unbeschränkte Anzahl von logischen Operationen kann unter Verwendung verschiedener direkter Werte gemäß den zugrundeliegenden Prinzipien der Erfindung implementiert werden (obgleich mit einem direkten Wert von 8 Bit nur 256 logische Operationen möglich sind).
-
Der folgende Pseudo-Code stellt eine Ausführungsform der Erfindung dar, wenn diese in einer Prozessorpipeline mit Operanden mit 64 Bit implementiert ist und ein direkter Wert von imm8 verwendet wird:
-
In dieser Implementierung wird ein Indexwert berechnet durch Verknüpfung von jedem der Bitwerte aus dem Zielregister (dest), Quellregister 1 (src1) und Quellregister 2 (src2) an den Bitpositionen i (zwischen 0 und 63). Der Effekt von den Operationen <<2 und <<1 ist, die Bits um zwei bzw. eins nach links zu schieben, wodurch die Bits angeordnet werden, um genau den Index zu bilden. Beispielsweise ist, falls der Bitwert aus dem Operanden 1 ist, das Ergebnis von dest[i]<<2 100, das Ergebnis von src2[i]<<1 ist 010 und das Ergebnis von src1[i] ist 001. Eine bitweise OR-Operation wird dann an den Ergebnissen durchgeführt (wie durch den | Operator angezeigt). Das Endergebnis ist ein Indexwert, welcher ein bestimmtes Bit innerhalb von imm8 identifiziert. Es ist zu beachten, dass die äußere for()-Schleife nur zu Zwecken einer Pseudo-Code-Darstellung dient. In einer Ausführungsform werden alle 64 Operationen parallel in separaten Kopien der Hardware durchgeführt.
-
Der folgende Pseudo-Code stellt eine andere Ausführungsform der Erfindung dar, wenn diese in einer Prozessorpipeline implementiert ist unter Verwendung von 512-Bit-Registern, von denen jedes 16 32-Bit gepackte Datenelemente speichert, und einem direkten Wert von imm8:
-
In dieser Ausführungsform wird ein Maskenregister verwendet, welches ein Bit speichert, das mit jedem der 16 32-Bit gepackten Datenelementen verknüpft ist. Der Test mask[n] != 0 zeigt an, dass, wenn ein Maskenbit, welches mit dem Datenelement verknüpft ist, Null ist, der aktuelle Wert, der in dem Zielregister (dest) gespeichert ist, für dieses Datenelement unverändert ist. Falls jedoch das Maskenbit nicht Null ist, dann wird die next-FOR-Schleife ausgeführt, was dazu führt, dass Indexwerte für die Datenelemente berechnet werden (wie oben beschrieben). Die for()-Schleifen dienen wiederum lediglich zur Darstellung. In einer Ausführungsform werden alle 512 Operationen parallel durchgeführt.
-
Obgleich die Ausführungsformen der Erfindung, die oben beschrieben wurden, mit drei Quelloperanden arbeiten, können die zugrundeliegenden Prinzipien der Erfindung auf jede Anzahl von Operanden angewandt werden. Beispielsweise stellt der folgende Pseudo-Code dar, wie vier Operanden (drei Quellen und ein Ziel) benutzt werden können, um einen Indexwert in einem 16-Bit-Direktwert (imm16) zu erzeugen:
-
Alternativ kann eine der Quellen von einem Maskenregister kommen:
-
Wie in dem obigen Code angezeigt, können in dieser Ausführungsform vier Operanden in dem Maskenregister gespeichert werden. Der Indexwert wird erzeugt durch Ausführen eines bitweisen OR auf entsprechenden Bits aus dem Maskenregister (um 3 nach links geschoben); dem Zielregister (um 2 nach links geschoben); dem Quellregister 2 (um 1 nach links geschoben) und dem Quellregister 1. Der resultierende 4-Bit-Wert wird dann benutzt als ein lookup zu dem 16-Bit-Direktwert imm16.
-
Eine beispielhafte Prozessorarchitektur
-
3 stellt einen beispielhaften Prozessorkern 300 dar, auf dem Ausführungsformen der Erfindung implementiert werden können. Der generische Prozessorkern 300 soll viele verschiedene Arten von Prozessorkernarchitekturen beschreiben, wie Complex Instruction Set (CISC), Reduced Instruction Set (RISC) und Very Long Instruction Word (VLIW). Der generische Prozessorkern 300 der Figur weist Folgendes auf: 1) eine Fetch-Einheit 303, die Anweisungen abruft (z. B. von einem Cache und/oder einem Speicher); 2) eine Dekodiereinheit 304, welche die Anweisungen dekodiert; 3) eine Schedule-Einheit 305, welche das Timing und/oder die Reihenfolge der Anweisungsausgabe zu den Ausführungseinheiten 306 bestimmt (es ist zu beachten, dass der Scheduler optional ist); 4) Ausführungseinheiten 306, welche die Anweisungen auführen (typische Anweisungsausfürungseinheiten weisen Verzweigungsausführungseinheiten auf, ganzeilige Arithmetik-Ausführungseinheiten (z. B. ALUs), Fließkomma-Arithmetik-Ausführungseinheiten (z. B. FPUs) und Speicherzugriffseinheiten); und 5) eine Stilllegungseinheit 307, welche den erfolgreichen Abschluss einer Anweisung bezeichnet. Es ist zu beachten, dass der Prozessorkern 300 Mikrocode 308 nutzen kann. Maskenregister 302 können gemäß Ausführungsformen der Erfindungen, wie oben beschrieben, verwendet werden.
-
Ein beispielhaftes Computersystem
-
Das Folgende sind beispielhafte Systeme, die zum Ausführen der Anweisung(en), die hier detailliert beschrieben wurden, geeignet sind. Andere Systeme in Bauformen und Konfigurationen, die im Stand der Technik bekannt sind für Laptops, Desktops, handgehaltene PCs, Personal Digital Assistants, Arbeits- und Workstation, Server, Netwerkgeräte, Netzwerkhubs, Schalter, eingebaute Prozessoren, Digital-Signal-Prozessoren (DSPs), Grafikgeräte, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Handys, tragbare Medien-Player, handgehaltene Geräte und verschiedene andere elektronische Geräte, sind auch geeignet. Im Allgemeinen ist eine große Auswahl von Systemen oder elektronischen Geräten, die in der Lage sind, einen Prozessor und/oder irgendeine andere Ausführungslogik, wie hier offenbart, aufzunehmen, geeignet.
-
In der 4, auf die nun Bezug genommen wird, ist ein Blockdiagramm eines Systems 400 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Das System 400 kann eine oder mehrere Bearbeitungselemente 410, 415 aufweisen, die mit einem Grafikspeichersteuerhub (GMCH) 420 gekoppelt sind. Die optionale Natur des zusätzlichen Bearbeitungselements 415 ist in 4 mit unterbrochenen Linien angezeigt.
-
Jedes Bearbeitungselement kann einen einzelnen Kern oder, alternativ, mehrere Kerne aufweisen. Die Bearbeitungselemente können optional andere Elemente neben dem Prozessorkern auf dem Halbleiterchip aufweisen, wie z. B. einen integrierter Speicherkontroller und/oder eine integrierte Eingabe-/Ausgabesteuerlogik. Außerdem können für wenigstens eine Ausführungsform der/die Kern(e) Bearbeitungselemente für Multithreads eingerichtet sein, dadurch, dass sie mehr als einen Hardwarethreadcontext pro Kern aufweisen.
-
4 stellt dar, dass der GMCH 420 mit einem Speicher 440 gekoppelt sein kann, der z. B. ein Dynamic Random Access Memory (DRAM) sein kann. Der DRAM kann in wenigstens einer Ausführungsform mit einem nicht flüchtigen Cache verknüpft sein.
-
Der GMCH 420 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 420 kann mit dem/den Prozessor(en) 410, 415, kommunizieren und die Wechselwirkung zwischen dem/den Prozessor(en) 410, 415 und dem Speicher 440 steuern. Der GMCH 420 kann außerdem als eine beschleunigte Bus-Schnittstelle zwischen dem/den Prozessor(en) 410, 415 und anderen Elementen des Systems 400 wirken. In wenigstens einer Ausführungsform kommuniziert der GMCH 420 mit dem/den Prozessor(en) 410, 415 über einen Multi-Drop-Bus, wie einem Frontside-Bus (FSB) 495.
-
Ferner ist der GMCH 420 mit einer Anzeige 440 (wie einem Flachbildschirm) gekoppelt. Der GMCH 420 kann einen integrierten Grafikbeschleuniger aufweisen. Der GMCH 420 ist ferner mit einem Eingabe-/Ausgabe-(I/O)-Steuerhub (ICH) 450 gekoppelt, der verwendet werden kann, um verschiedene Peripheriegeräte an das System 400 zu koppeln. Beispielsweise ist in der Ausführungsform der 4 ein externes Grafikgerät 46 gezeigt, welches ein separates Grafikgerät ist, das mit dem ICH 450 gekoppelt ist, zusammen mit anderen Peripheriegeräten 470.
-
Alternativ können zusätzliche oder andere Bearbeitungselemente auch in dem System 400 vorhanden sein. Zum Beispiel können eine oder mehrere zusätzliche Prozessorelemente 415 einen oder mehrere zusätzliche Prozessor(en) aufweisen, die in dem gleichen Prozessor 410 vorhanden sind, einen oder mehrere zusätzliche Prozessor(en), die heterogen oder asymmetrisch zum Prozessor 410 sind, Beschleuniger (wie z. B. Grafikbeschleuniger oder Digital Signal Processing(DSP)-Einheiten), Field Programmable Gate Arrays, oder andere Bearbeitungselemente. Zwischen den physikalischen Ressourcen 410, 415 kann hinsichtlich eines Spektrums von Metriken von Erfordernissen einschließlich im architektonischen, mikroarchitektonischen, thermischen, Stromverbrauchs-Eigenschaften und dergleichen eine Auswahl von Unterschieden bestehen. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität zwischen den Bearbeitungselementen 410, 415 manifestieren. In wenigstens einer Ausführungsform können sich die verschiedenen Bearbeitungselemente 410, 415 in der gleichen Halbleitereinheit befinden.
-
Nun Bezug nehmend auf 5 ist ein Blockdiagramm eines zweiten Systems 500 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 5 gezeigt, ist das Multiprozessorsystem 500 ein Punkt-zu-Punkt-Verbindungssystem und umfasst ein erstes Bearbeitungselement 570 und ein zweites Bearbeitungselement 580, die über eine Punkt-zu-Punkt-Verbindung 550 gekoppelt sind. Wie in 5 gezeigt, kann jedes Bearbeitungselement 570 und 580 ein Mehrkernprozessor sein einschließlich erster und zweiter Prozessorkerne (d. h. Prozessorkerne 574a und 574b und Prozessorkerne 584a und 584b).
-
Alternativ kann eines oder mehrere der Bearbeitungselemente 570, 580 ein von einem Prozessor verschiedenes Element sein, wie ein Beschleuniger oder ein Field Programmable Gate Array.
-
Obgleich nur zwei Bearbeitungselemente 570, 580 gezeigt sind, ist es zu verstehen, dass der Umfang der vorliegenden Erfindung darauf nicht beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Bearbeitungselemente in einem gegebenen Prozessor vorhanden sein.
-
Das erste Bearbeitungselement 570 kann ferner ein Speichersteuerhub (MCH) 572 und Punkt-zu-Punkt-(P-P)-Schnittstellen 576 und 578 aufweisen. Ebenso kann das zweite Bearbeitungselemente 580 ein MCH 582 und P-P-Schnittstellen 586 und 588 aufweisen. Die Prozessoren 570, 580 können Daten über eine Punkt-zu-Punkt-(PtP)-Schnittstelle 550 unter Verwendung von PtP-Schnittstellenschaltungen 578, 588 austauschen. Wie in 5 gezeigt, koppeln die MCHs 572 und 582 die Prozessoren an jeweilige Speicher, nämlich einen Speicher 542 und einen Speicher 544, die Teile eines Hauptspeichers sein können, die lokal an den jeweiligen Prozessoren angebracht sind.
-
Die Prozessoren 570, 580 können Daten mit einem Chipsatz 590 über individuelle PtP-Schnittstellen 553, 554 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 576, 594, 586, 598 austauschen. Der Chipsatz 590 kann auch Daten mit einer High-Performance-Grafik-Schaltung 548 über eine High-Performance-Grafikschnittstelle 539 austauschen. Ausführungsformen der Erfindung können sich in jedem Prozessor mit einer Anzahl von Bearbeitungskernen oder in jedem der PtP-Busagenten der 5 befinden. In einer Ausführungsform kann jeder Prozessorkern einen lokalen Cachespeicher (nicht gezeigt) aufweisen oder in anderer Weise mit diesem verbunden sein. Ferner kann gemeinsam genutzter Cache (nicht gezeigt) in einem Prozessor außerhalb der beiden Prozessoren vorhanden sein, jedoch mit den zwei Prozessoren über eine p2p-Zwischenverbindung verbunden sein, so dass die Informationen von einem oder beiden lokalen Cache der Prozessoren in einem gemeinsam genutzten Cache gespeichert werden kann, wenn ein Prozessor in einen Niedrigstromzustand versetzt wird.
-
Die erste Bearbeitungseinheit 570 und die zweite Bearbeitungseinheit 580 können mit einem Chipsatz 590 über eine P-P-Verbindung 576, 586 bzw. 584 gekoppelt sein. Wie in 5 gezeigt ist, weist der Chipsatz 590 eine PtP-Schnittstelle 594 und 598 auf.
-
Ferner weist der Chipsatz 590 nur eine Schnittstelle 592 auf, um den Chipsatz 590 mit einer High-Performance Grafikmaschine 548 zu koppeln. In einer Ausführungsform kann ein Bus 594 benutzt werden, um die Grafikmaschine 548 mit dem Chipsatz 590 zu koppeln. Alternativ kann eine Punkt-zu-Punkt-Zwischenverbindung 549 diese Komponenten koppeln.
-
Umgekehrt kann der Chipsatz 590 mit einem ersten Bus 516 über eine Schnittstelle 596 gekoppelt sein. In einer Ausführungsform kann der Bus 516 ein Peripheral Component Interconnect(PCI)-Bus sein oder ein Bus, wie ein PCI Express-Bus oder andere Arten von I/O-Verbindungsbus der dritten Generation, obgleich der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
-
Wie in 5 gezeigt, können verschiedene I/O-Geräte 524 mit dem ersten Bus 516 entlang einer Busbrücke 518 gekoppelt sein, welche den ersten Bus 516 mit einem zweiten Bus 520 koppelt. In einer Ausführungsform kann der zweite Bus 520 ein Low-Pin-Count(LPC)-Bus sein. Verschiedene Geräte können mit dem zweiten Bus gekoppelt sein, einschließlich z. B. eine Tastatur/Maus 522, Kommunikationsgeräten 526 und einer Datenspeichereinheit 528, wie ein Plattenlaufwerk oder ein anderes Massenspeichergerät, welches in einer Ausführungsform einen Code 530 aufweisen kann. Ferner kann ein Audio-I/O-Gerät 524 mit dem zweiten Bus 520 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann anstelle der Punkt-zu-Punkt-Architektur der 5 ein System einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
-
Nun Bezug nehmend auf 6 ist ein Blockdiagramm eines dritten Systems 600 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Die gleichen Elemente in den 5 und 6 tragen die gleichen Bezugszeichen und verschiedene Aspekte der 5 wurden aus der 6 weggelassen, um eine Ablenkung von anderen Aspekten in 6 zu vermeiden.
-
6 stellt dar, dass die Bearbeitungselemente 570, 580 einen integrierten Speicher und eine I/O-Steuerlogik („CL”) 572 bzw. 582 aufweisen. In wenigstens einer Ausführungsform kann die CL 572, 582 eine Speichersteuerhublogik (MCH) aufweisen, wie jene, die vorhergehend in Verbindung mit den 4 und 5 beschrieben wurde. Zusätzlich kann die CL 572, 582 auch eine I/O-Steuerlogik aufweisen. 6 stellt dar, dass nicht nur die Speicher 542, 544 mit der CL 572, 582 gekoppelt sind, sondern auch I/O-Geräte 614 mit der Steuerlogik 572, 582 gekoppelt sind. Legacy I/O-Geräte 516 sind mit dem Chipsatz 590 gekoppelt.
-
Ausführungsformen der Mechanismen, die hier offenbart werden, können in Hardware, Software, Firmware oder Kombinationen solcher Implementierungsansätze implementiert sein. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, welcher auf programmierbaren Systemen ausgeführt wird, die wenigstens einen Prozessor, ein Datenspeichersystem (einschließlich flüchtigen und nicht-flüchtigen Speicher und/oder Speicherelementen), wenigstens ein Eingabegerät und wenigstens ein Ausgabegerät umfassen, implementiert werden.
-
Ein Programmcode, wie der Code 530, der in 5 dargestellt ist, kann auf Eingabedaten angewandt werden, um die Funktionen, die hierin beschrieben wurden, auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf ein oder mehrere Ausgabegeräte in bekannter Weise angewandt werden. Zu Zwecken dieser Anwendung weist ein Bearbeitungssystem ein beliebiges System auf, das einen Prozessor besitzt, wie z. B. einen Digital Signal Processor (DSP), einen Microkontroller, einen anwendungsspezifischen integrierten Schaltkreis (ASIC) oder einen Mikroprozessor.
-
Der Programmcode kann in einer high-level procedural- oder objektorientierten Programmiersprache implementiert sein, um mit einem Bearbeitungssystem zu kommunizieren. Der Programmcode kann auch in einer Assembly- oder Maschinensprache implementiert sein, falls dies gewünscht ist. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang nicht auf eine besondere Programmiersprache beschränkt. In jedem Fall kann die Sprache eine Compilersprache oder eine Interpretersprache sein.
-
Ein oder mehrere Aspekte von wenigstens einer Ausführungsform kann durch darstellende Daten implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedene Logiken in dem Prozessor darstellt, welche, wenn sie durch die Maschine gelesen werden, die Maschine dazu veranlassen, eine Logik zu erzeugen, um die hierin beschriebenen Techniken auszuführen. Solche Darstellungen, die als „IP-Kerne” bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und an verschiedene Kunden oder Herstellereinrichtungen geliefert werden, um in die Fertigungsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor erzeugen.
-
Solche maschinenlesbaren Speichermedien können, ohne darauf beschränkt zu sein, Folgendes aufweisen: nicht-transistorische, greifbare Anordnungen von Partikeln, die hergestellt oder durch eine Maschine oder ein Gerät gebildet wurden, einschließlich Speichermedien, wie Festplatten, jede andere Art von Disketten einschließlich Floppydisks, optische Disketten, Kompaktdisketten mit Nur-Lesespeicher (CD-ROMs), wiederbeschreibbare Kompaktdisketten (CD-RWs), und magneto-optische Disketten, Halbleitergeräte wie Nur-Lesepeicher (ROMS) Random Access Memories (RAMs) wie dynamische Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), erasable programmable read-only memories (EPROMs), Flash-Speicher, electronically erasable programmable read-only memories (EEPROMs), magnetische und optische Karten oder andere Arten von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
-
Somit weisen Ausführungsformen der Erfindung nicht-transistorische, greifbare maschinenlesbare Medien auf, welche Anweisungen enthalten, zum Ausführen der Verfahrensausführungsformen der Erfindung, oder Konstruktionsdaten aufweisen, wie HDL, welche Strukturen, Schaltungen, Geräte, Prozessoren und/oder Systemmerkmale, die hier beschrieben wurden, definieren. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
-
Verschiedene Operationen der Anweisung(en), die hier offenbart wurden, können durch Hardwarekomponenten ausgeführt werden und können in maschinenausführbaren Anweisungen verkörpert sein, die verwendet werden, um zu bewirken oder wenigstens dazu zu führen, dass eine Schaltung oder andere Hardwarekomponenten, die mit den Anweisungen programmiert werden, die Operationen ausführen. Die Schaltung kann ein General-Purpose- oder ein Special-Purpose-Prozessor oder eine Logikschaltung sein, um nur einige Beispiele zu nennen.
-
Die Vorgänge können optional durch eine Kombination von Hardware und Software ausgeführt werden. Eine Ausführungslogik und/oder ein Prozessor kann eine spezifische oder spezielle Schaltung oder eine andere Logik, die auf Maschinenanweisungen anspricht oder auf ein oder mehrere Steuersignale, die von den Maschinenanweisungen erlangt werden, enthalten, um eine Anweisung, die einen resultierenden Operanden spezifiziert, zu speichern. Beispielsweise können Ausführungsformen der Anweisung(en), die hierin offenbart sind, in einem oder mehreren Systemen der 4, 5 und 6 ausgeführt werden und Ausführungsformen der Anweisung(en) können in einem Programmcode gespeichert werden, um in dem System ausgeführt zu werden. Zusätzlich können die Bearbeitungselemente dieser Figuren eine der detailliert beschriebenen Pipelines und/oder Architekturen (z. B. der In-Order- und Out-of-Order-Architekturen), die hier detailliert beschrieben wurden, verwenden. Zum Beispiel kann die Dekodiereinheit der In-Order-Architektur die Anweisung(en) dekodieren, die dekodierte Anweisung an eine Vektor- oder Scalar-Einheit weiterleiten usw.
-
In der vorhergehende Beschreibung wurden zu Zwecken der Erklärung zahlreiche spezifische Details ausgeführt, um ein vollständiges Verständnis der Erfindung zu liefern. Es wird dem Fachmann jedoch deutlich, dass die Erfindung ohne diese spezifischen Details ausgeführt werden kann. Somit sollte der Umfang und der Geist der Erfindung in dem Sinne der folgenden Ansprüche beurteilt werden.