DE112016004300T5 - Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse - Google Patents

Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse Download PDF

Info

Publication number
DE112016004300T5
DE112016004300T5 DE112016004300.7T DE112016004300T DE112016004300T5 DE 112016004300 T5 DE112016004300 T5 DE 112016004300T5 DE 112016004300 T DE112016004300 T DE 112016004300T DE 112016004300 T5 DE112016004300 T5 DE 112016004300T5
Authority
DE
Germany
Prior art keywords
data
traffic class
class
cache
traffic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016004300.7T
Other languages
English (en)
Inventor
Philip C. Arellano
James A. Coleman
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112016004300T5 publication Critical patent/DE112016004300T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Diese Offenbarung betrifft die Verwendung von Verkehrsklassen, um selektiv Daten in einem Cache-Arbeitsspeicher oder in einem Systemarbeitsspeicher zu speichern. Eine Cache-Steuereinheit kann die Verkehrsklasse der ankommenden Daten auf Abschnitte des Cache-Arbeitsspeichers abbilden, die für entsprechende Verkehrsklassen von Daten zugewiesen werden.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Diese Anmeldung beansprucht den Prioritätsvorteil der nicht vorläufigen US-Patentanmeldung (Gebrauchsmusteranmeldung) Nr. 14/866 862 , eingereicht am 26. September 2015 mit dem Titel „METHOD, APPARATUS, AND SYSTEM FOR ALLOCATING CACHE USING TRAFFIC CLASS‟, die hier durch Bezugnahme vollständig mit aufgenommen ist.
  • GEBIET
  • Diese Offenbarung betrifft ein Rechensystem und insbesondere (aber nicht ausschließlich) das Zuweisen eines Cache-Arbeitsspeichers unter Verwendung von PCIe-Verkehrsklassen.
  • HINTERGRUND
  • Anwendungen auf Computerbasis, einschließlich eingebetteter Echtzeitanwendungen, können Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) umfassen, die Daten mit hoher Priorität (Echtzeitdaten) sowie bestmögliche Daten mit niedriger Priorität tragen. Der Verkehr mit hoher Priorität soll häufig schnell durch die CPU verarbeitet werden, selbst mit Technologien wie „Data Direct I/O“ (DDIO), die ermöglichen, dass E/A-Transaktionen direkt den Cache anzielen, können jedoch die Transaktionen mit hoher Priorität durch den konkurrierenden bestmöglichen E/A-Verkehr aus dem Cache geschoben werden. Die Unfähigkeit zu priorisieren, welche Transaktionen den Cache anzielen, und die exmittiert werden, wenn zusätzliche E/A-Transaktionen hereinkommen, macht DDIO ineffektiv für Anwendungen, die einen Bedarf an schnellen Cache-Transaktionen haben.
  • Figurenliste
    • 1 stellt ein Blockdiagramm für eine Ausführungsform eines Rechensystems mit einem Mehrkernprozessor dar.
    • 2 stellt eine Ausführungsform eines Rechensystems mit einer Zwischenverbindungsarchitektur dar.
    • 3 stellt ein Blockdiagramm einer Ausführungsform eines Rechensystems, das eine Cache-Steuereinheit umfasst, gemäß Ausführungsformen der vorliegenden Offenbarung dar.
    • 4 stellt ein Blockdiagramm einer Ausführungsform einer Cache-Steuereinheit gemäß Ausführungsformen der vorliegenden Offenbarung dar.
    • 5 stellt ein schematisches Diagramm einer Beispielimplementierung einer Cache-Steuereinheit und eines Cache-Arbeitsspeichers gemäß Ausführungsformen der vorliegenden Offenbarung dar.
    • 6 ist ein Prozessablaufdiagramm zum selektiven Speichern von Daten direkt im Cache-Arbeitsspeicher auf der Basis der Verkehrsklasse.
    • 7 stellt eine Ausführungsform einer Zwischenverbindungsarchitektur mit einem geschichteten Stapel dar.
    • 8 stellt eine Ausführungsform einer Anforderung oder eines Pakets dar, das innerhalb einer Zwischenverbindungsarchitektur erzeugt oder empfangen werden soll.
    • 9 stellt eine Ausführungsform eines Sender- und Empfängerpaars für eine Zwischenverbindungsarchitektur dar.
    • 10 eine Ausführungsform von mehreren potentiellen Konfigurationen mit mehreren Anschlussbuchsen.
    • 11 stellt eine Ausführungsform eines geschichteten Stapels für eine Hochleistungs-Zwischenverbindungsarchitektur dar.
    • 12 stellt eine andere Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Prozessor dar.
    • 13 stellt eine Ausführungsform eines Blockdiagramms für einen Prozessor dar.
    • 14 stellt eine andere Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Prozessor dar.
    • 15 stellt eine Ausführungsform eines Blocks für ein Rechensystem mit mehreren Prozessoranschlussbuchsen dar.
    • 16 stellt eine andere Ausführungsform eines Blockdiagramms für ein Rechensystem dar.
    • 17 stellt eine andere Ausführungsform eines Blockdiagramms für ein Rechensystem dar.
    • 18 ist ein Graph, der Cache-Zugriffe mit Leistungsunterschieden während Szenarios zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Diese Offenbarung beschreibt die Verwendung von Verkehrsklassenbits, die in Transaktionen vorhanden sind, um selektiv Daten entweder im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher zu speichern. Die Offenbarung beschreibt beispielsweise die Verwendung der PCIe-Verkehrsklassenbits, die in PCIe-Transaktionen vorhanden sind. Die Verkehrsklasse bildet jene Transaktion in eine Kategorie von Daten, eine Dienstklasse (CLOS) oder eine andere Cache-Arbeitsspeicherregisterklassifikation ab. Die Cache-Registerbits am Ring werden verwendet, um die Transaktionen auf Wegemasken für die Cache-Zuweisung abzubilden. Bestimmte Aspekte dieser Offenbarung erweitern die aktuelle DDIO-Funktionalität, um eine Verkehrsklassenebenenauflösung für die Cache-Zuweisung zu haben.
  • In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt, wie z. B. Beispiele von speziellen Typen von Prozessoren und Systemkonfigurationen, speziellen Hardware-Strukturen, speziellen Architektur- und Mikroarchitekturdetails, speziellen Registerkonfigurationen, speziellen Befehlstypen, speziellen Systemkomponenten, speziellen Messungen/Höhen, speziellen Prozessorpipelinestufen und eines speziellen Prozessorbetriebs usw., um für ein gründliches Verständnis der vorliegenden Erfindung zu sorgen. Es ist jedoch für einen Fachmann auf dem Gebiet ersichtlich, dass diese speziellen Details nicht verwendet werden müssen, um die vorliegende Erfindung auszuführen. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie z. B. spezielle und alternative Prozessorarchitekturen, spezielle Logikschaltungen/ein spezieller Logikcode für beschriebene Algorithmen, ein spezieller Firmwarecode, eine spezielle Zwischenverbindungsoperation, spezielle Logikkonfigurationen, spezielle Herstellungstechniken und Herstellungsmaterialien, spezielle Kompilierer-Implementierungen, ein spezieller Ausdruck von Algorithmen im Code, spezielles Abschalt- und Torsteuertechniken/Logik und andere spezielle Betriebsdetails eines Computersystems nicht im Einzelnen beschrieben, um es zu vermeiden, die vorliegende Erfindung unnötig unklar zu machen.
  • Obwohl die folgenden Ausführungsformen mit Bezug auf die Energieeinsparung und Energieeffizienz in speziellen integrierten Schaltungen beschrieben werden können, wie z. B. in Rechenplattformen oder Mikroprozessoren, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch von der besseren Energieeffizienz und Energieeinsparung profitieren können. Die offenbarten Ausführungsformen sind beispielsweise nicht auf Desktop-Computersysteme oder Ultrabooks™ begrenzt. Und können auch in anderen Vorrichtungen verwendet werden, wie z. B. in der Hand gehaltenen Vorrichtungen, Tablets, anderen dünnen Notebooks, Vorrichtungen von Systemen auf einem Chip (SOC) und eingebetteten Anwendungen. Einige Beispiele von in der Hand gehaltenen Vorrichtungen umfassen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und in der Hand gehaltene PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System auf einem Chip, Netzcomputer (NetPC), Digitalempfänger, Netzknoten, Koppler eines weiträumigen Netzes (WAN) oder irgendein anderes System, das die nachstehend gelehrten Funktionen und Operationen durchführen kann. Die Geräte, Verfahren und Systeme, die hier beschrieben werden, sind überdies nicht auf physikalische Rechenvorrichtungen begrenzt, sondern können sich auch auf Software-Optimierungen für Energieeinsparung und Energieeffizienz beziehen. Wie in der nachstehenden Beschreibung leicht ersichtlich wird, sind die Ausführungsformen von Verfahren, Geräten und Systemen, die hier beschrieben werden (ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon), für eine Zukunft der „grünen Technologie“ unverzichtbar, die mit Leistungserwägungen im Gleichgewicht ist.
  • Wenn Rechensysteme fortschreiten, werden die Komponenten darin komplexer. Folglich nimmt die Zwischenverbindungsarchitektur, um die Komponenten zu koppeln und zwischen diesen zu kommunizieren, auch in der Komplexität zu, um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Ferner verlangen verschiedene Marktsegmente verschiedene Aspekte von Zwischenverbindungsarchitekturen, um sie an die Bedürfnisse des Markts anzupassen. Server erfordern beispielsweise eine höhere Leistung, während das mobile Ökosystem manchmal die Gesamtleistung für Leistungseinsparungen opfern kann. Dennoch ist es ein einzelner Zweck der meisten Gebilde, die höchstmögliche Leistung mit maximaler Leistungseinsparung bereitzustellen. Nachstehend wird eine Anzahl von Zwischenverbindungen erörtert, die von hier beschriebenen Aspekten der Erfindung potentiell profitieren würden.
  • Mit Bezug auf 1 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor dargestellt. Der Prozessor 100 umfasst irgendeinen Prozessor oder irgendeine Verarbeitungsvorrichtung wie z. B. einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen in der Hand gehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung, um einen Code auszuführen. Der Prozessor 100 umfasst in einer Ausführungsform mindestens zwei Kerne - Kern 101 und 102, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) umfassen können. Der Prozessor 100 kann jedoch irgendeine Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf eine Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele von Hardware-Verarbeitungselementen umfassen: eine Thread-Einheit, einen Thread-Schlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie z. B. einen Ausführungszustand oder Architekturzustand. Mit anderen Worten, ein Verarbeitungselement bezieht sich in einer Ausführungsform auf irgendeine Hardware, die in der Lage ist, unabhängig einem Code zugeordnet zu werden, wie z. B. ein Software-Thread, ein Betriebssystem, eine Anwendung oder ein anderer Code. Ein physikalischer Prozessor (oder eine Prozessoranschlussbuchse) bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell irgendeine Anzahl von anderen Verarbeitungselementen wie z. B. Kernen oder Hardware-Threads umfasst.
  • Ein Kern bezieht sich häufig auf eine Logik, die an einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand mindestens einigen zweckgebundenen Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf irgendeine Logik, die an einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei die unabhängig aufrechterhaltenen Architekturzustände sich den Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, wenn bestimmte Ressourcen geteilt werden und andere für einen Architekturzustand zweckgebunden sind, überlappt die Linie zwischen der Nomenklatur eines Hardware-Thread und dem Kern. Dennoch werden häufig ein Kern und ein Hardware-Thread durch ein Betriebssystem als individuelle Logikprozessoren betrachtet, wobei das Betriebssystem individuell Operationen an jedem logischen Prozessor planen kann.
  • Der physikalische Prozessor 100, wie in 1 dargestellt, umfasst zwei Kerne - Kern 101 und 102. Hier werden der Kern 101 und 102 als symmetrische Kerne betrachtet, d. h. Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform umfasst der Kern 101 einen Prozessorkern außer der Reihe, während der Kern 102 einen Prozessorkern in der Reihe umfasst. Die Kerne 101 und 102 können jedoch individuell aus irgendeinem Typ von Kern ausgewählt werden, wie z. B. einem nativen Kern, einem durch Software gemanagten Kern, einem Kern, der dazu ausgelegt ist, eine native „Instruction Set Architecture“ (ISA) durchzuführen, einen Kern, der dazu ausgelegt ist, eine übersetzte „Instruction Set Architecture“ (ISA) durchzuführen, einen gemeinsam entworfenen Kern oder einen anderen bekannten Kern. In einer heterogenen Kernumgebung (d. h. asymmetrische Kerne) kann eine gewisse Form von Übersetzung wie z. B. eine binäre Übersetzung verwendet werden, um den Code an einem oder beiden Kernen zu planen oder auszuführen. Um die Erörterung noch zu fördern, werden die im Kern 101 dargestellten Funktionseinheiten nachstehend genauer beschrieben, da die Einheiten im Kern 102 in der dargestellten Ausführungsform in einer ähnlichen Weise arbeiten.
  • Wie dargestellt, umfasst der Kern 101 zwei Hardware-Threads 101a und 101b, die auch als Hardware-Thread-Schlitze 101a und 101b bezeichnet werden können. Daher betrachten Software-Entitäten wie z. B. ein Betriebssystem in einer Ausführungsform den Prozessor 100 potentiell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie vorstehend angespielt, ist ein erster Thread Architekturzustandsregistern 101a zugeordnet, ein zweiter Thread ist Architekturzustandsregistern 101b zugeordnet, ein dritter Thread kann Architekturzustandsregistern 102a zugeordnet sein und ein vierter Thread kann Architekturzustandsregistern 102b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (101a, 101b, 102a und 102b) als Verarbeitungselemente, Thread-Schlitze oder Thread-Einheiten bezeichnet werden, wie vorstehend beschrieben. Wie dargestellt, sind die Architekturzustandsregister 101a in Architekturzustandsregistern 101b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 101a und den logischen Prozessor 101b gespeichert werden können. Im Kern 101 können andere kleinere Ressourcen wie z. B. Befehlszeiger und Umbenennungslogik und Zuweiser- und Umbenennerblock 130 auch für die Threads 101a und 101b repliziert sein. Einige Ressourcen, wie z. B. Umordnungspuffer in einer Umordnungs-/Rückzugseinheit 135, ILTB 120, Lade/Speicher-Puffer und Warteschlangen, können durch Partitionierung geteilt werden. Andere Ressourcen wie z. B. interne Universalregister, (ein) Seitentabellenbasisregister, Daten-Cache und Daten-TLB 115 niedriger Ebene, (eine) Ausführungseinheit(en) 140 und Abschnitte einer Einheit 135 außer der Reihe werden potentiell vollständig geteilt.
  • Der Prozessor 100 umfasst häufig andere Ressourcen, die vollständig geteilt, durch Partitionierung geteilt oder durch/für Verarbeitungselemente zweckgebunden sein können. In 1 ist eine Ausführungsform eines rein beispielhaften Prozessors mit erläuternden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor beliebige dieser Funktionseinheiten umfassen oder weglassen kann sowie beliebige andere bekannte Funktionseinheiten, Logik, Firmware, die nicht dargestellt sind, umfassen kann. Wie dargestellt, umfasst der Kern 101 einen vereinfachten repräsentativen Prozessorkern außer der Reihe (OOO). Aber ein Prozessor in der Reihe kann in anderen Ausführungsformen verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer 120, um auszuführende/genommene Verzweigungen vorherzusagen, und einen Befehlsübersetzungspuffer (I-TLB) 120, um Adressenübersetzungseinträge für Befehle zu speichern.
  • Der Kern 101 umfasst ferner ein Decodiermodul 125, das mit einer Abrufeinheit 120 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik umfasst in einer Ausführungsform individuelle Ablaufsteuerungen, die jeweils den Thread-Schlitzen 101a, 101b zugeordnet sind. Gewöhnlich ist der Kern 101 einer ersten ISA zugeordnet, die Befehle definiert/festlegt, die am Prozessor 100 ausführbar sind. Häufig umfassen Maschinencodebefehle, die ein Teil der ersten ISA sind, einen Teil des Befehls (als Operationscode bezeichnet), der einen durchzuführenden Befehl oder eine durchzuführende Operation bezeichnet/festlegt. Die Decodierlogik 125 umfasst eine Schaltungsanordnung, die diese Befehle von ihren Operationscodes erkennt und die decodierten Befehle in der Pipeline für die Verarbeitung weiterleitet, wie durch die erste ISA definiert. Wie nachstehend genauer erörtert, umfassen beispielsweise die Decodierer 125 in einer Ausführungsform eine Logik, die dazu ausgelegt oder angepasst ist, spezielle Befehle wie z. B. einen Transaktionsbefehl zu erkennen. Als Ergebnis der Erkennung durch die Decodierer 125 unternimmt die Architektur oder der Kern 101 spezielle, vordefinierte Handlungen, um Aufgaben durchzuführen, die dem geeigneten Befehl zugeordnet sind. Es ist wichtig zu beachten, dass beliebige der Aufgaben, Blöcke, Operationen und Verfahren, die hier beschrieben sind, in Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; von denen einige neue oder alte Befehle sein können. Es ist zu beachten, dass die Decodierer 126 in einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen in einer heterogenen Kernumgebung die Decodierer 126 eine zweite ISA (entweder eine Teilmenge der ersten ISA oder einer unterschiedlichen ISA).
  • In einem Beispiel umfasst der Zuweiser- und Umbenennerblock 130 einen Zuweiser, um Ressourcen zu reservieren, wie z. B. Registerdateien, um Befehlsverarbeitungsergebnisse zu speichern. Die Threads 101a und 101b sind jedoch potentiell in der Lage zu einer Ausführung außer der Reihe, wobei der Zuweiser- und Umbenennerblock 130 auch andere Ressourcen reserviert wie z. B. Umordnungspuffer, um Befehlsergebnisse zu verfolgen. Die Einheit 130 kann auch einen Registerumbenenner umfassen, um Programm/Befehls-Referenzregister in andere Register innerhalb des Prozessors 100 umzubenennen. Die Umordner-/Rückzugseinheit 135 umfasst Komponenten wie z. B. die vorstehend erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer, um die Ausführung außer der Reihe und später den Rückzug in der Reihe von Befehlen, die außer der Reihe ausgeführt werden, zu unterstützen.
  • Der Planer- und Ausführungseinheitsblock 140 umfasst in einer Ausführungsform eine Planereinheit, um Befehle/eine Operation an den Ausführungseinheiten zu planen. Ein Gleitkommabefehl wird beispielsweise an einem Port einer Ausführungseinheit geplant, die eine Gleitkommaausführungseinheit verfügbar hat. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind auch enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlenausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Daten-Cache niedrigerer Ebene und der Datenübersetzungspuffer (D-TLB) 150 sind mit der (den) Ausführungseinheit(en) 140 gekoppelt. Der Daten-Cache soll kürzlich verwendete/verarbeitete Elemente wie z. B. Datenoperanden speichern, die potentiell in Arbeitsspeicherkohärenzzuständen gehalten werden. Der D-TLB soll kürzliche Übersetzungen von virtuellen/linearen auf physikalische Adressen speichern. Als spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur umfassen, um den physikalischen Arbeitsspeicher in mehrere virtuelle Seiten aufzutrennen.
  • Hier teilen sich die Kerne 101 und 102 den Zugriff auf einen Cache höherer Ebene oder einen weiter außenliegenden Cache wie z. B. einen Cache zweiter Ebene, der der Schnittstelle 110 auf dem Chip zugeordnet ist. Es ist zu beachten, dass sich höhere Ebene oder weiter außenliegend auf Cache-Ebenen bezieht, die zunehmen oder von der (den) Ausführungseinheit(en) weiter weg gelangen. In einer Ausführungsform ist der Cache höherer Ebene ein Daten-Cache letzter Ebene - der letzte Cache in der Arbeitsspeicherhierarchie am Prozessor 100 - wie z. B. ein Daten-Cache zweiter oder dritter Ebene. Der Cache höherer Ebene ist jedoch nicht so begrenzt, da er einem Befehls-Cache zugeordnet sein oder diesen umfassen kann. Ein Spuren-Cache - ein Typ von Befehls-Cache - kann stattdessen nach dem Decodierer 125 gekoppelt sein, um kürzlich decodierte Spuren zu speichern. Hier bezieht sich ein Befehl potentiell auf einen Makrobefehl (d. h. einen allgemeinen Befehl, der durch die Decodierer erkannt wird), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
  • In der dargestellten Konfiguration umfasst der Prozessor 100 auch ein Schnittstellenmodul 110 auf dem Chip. Historisch war eine Arbeitsspeicher-Steuereinheit, die nachstehend genauer beschrieben wird, in einem Rechensystem außerhalb des Prozessors 100 enthalten. In diesem Szenario soll die Schnittstelle 11 auf dem Chip mit Vorrichtungen außerhalb des Prozessors 100 kommunizieren, wie z. B. einem Systemarbeitsspeicher 175, einem Chipsatz (häufig mit einem Arbeitsspeichersteuereinheitsnetzknoten, um mit dem Arbeitsspeicher 175 zu verbinden, und einem E/A-Steuereinheitsnetzknoten, um mit Peripheriegeräten zu verbinden), einem Arbeitsspeichersteuereinheitsnetzknoten, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 105 irgendeine bekannte Zwischenverbindung wie z. B. einen Multi-Drop-Bus, eine Punkt-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen GTL-Bus umfassen.
  • Der Arbeitsspeicher 175 kann für den Prozessor 100 zweckgebunden sein oder mit anderen Vorrichtungen in einem System geteilt werden. Übliche Beispiele von Typen von Arbeitsspeicher 175 umfassen DRAM, SRAM, einen nichtflüchtigen Arbeitsspeicher (NV-Arbeitsspeicher) und andere bekannte Speichervorrichtungen. Es ist zu beachten, dass die Vorrichtung 180 einen Graphikbeschleuniger, einen Prozessor oder eine Karte, die mit einem Arbeitsspeichersteuereinheitsnetzknoten gekoppelt ist, einen Datenspeicher, der mit einem E/A-Steuereinheitsnetzknoten gekoppelt ist, einen drahtlosen Sender/Empfänger, eine Flash-Vorrichtung, eine Audiosteuereinheit, eine Netzsteuereinheit oder eine andere bekannte Vorrichtung umfassen kann.
  • Da jedoch in letzter Zeit mehr Logik und Vorrichtungen auf einem einzelnen Chip integriert werden, wie z. B. einem SOC, kann jede dieser Vorrichtungen im Prozessor 100 integriert sein. In einer Ausführungsform befindet sich beispielsweise ein Arbeitsspeichersteuereinheitsnetzknoten im gleichen Baustein und/oder Chip mit dem Prozessor 100. Hier umfasst ein Abschnitt des Kerns (oder ein Abschnitt auf dem Kern) 110 eine oder mehrere Steuereinheiten zum Koppeln mit anderen Vorrichtungen wie z. B. dem Arbeitsspeicher 175 oder einer Graphikvorrichtung 180 über eine Schnittstelle. Die Konfiguration mit einer Zwischenverbindung und Steuereinheiten zum Koppeln mit solchen Vorrichtungen über eine Schnittstelle wird häufig als auf dem Kern (oder Un-Core-Konfiguration) bezeichnet. Als Beispiel umfasst die Schnittstelle 110 auf dem Chip eine Ringzwischenverbindung für die Kommunikation auf dem Chip und eine serielle Punkt-Punkt-Hochgeschwindigkeitsverbindung 105 für die Kommunikation außerhalb des Chips. Dennoch können in der SOC-Umgebung noch mehr Vorrichtungen, wie z. B. die Netzschnittstelle, die Coprozessoren, der Arbeitsspeicher 175, der Graphikprozessor 180 und beliebige andere bekannte Computer-Vorrichtungen/die Schnittstelle auf einem einzelnen Chip oder einer einzelnen integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Leistungsverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 100 zum Ausführen eines Kompilierer-, Optimierungs- und/oder Übersetzercodes 177 in der Lage, um den Anwendungscode 176 zu kompilieren, übersetzen und/oder optimieren, um das Gerät und die Verfahren zu unterstützen, die hier beschrieben sind, oder um damit über eine Schnittstelle zu koppeln. Ein Kompilierer umfasst häufig ein Programm oder einen Satz von Programmen, um einen Quellen-Text/Code in einen Ziel-Text/Code zu übersetzen. Gewöhnlich wird die Kompilierung des Programm/Anwendungs-Codes mit einem Kompilierer in mehreren Phasen und Durchgängen durchgeführt, um einen Programmiersprachcode hoher Ebene in einen Maschinen- oder Assemblersprachcode niedriger Ebene zu transformieren. Dennoch können Kompilierer mit einzelnem Durchgang immer noch für die einfache Kompilierung verwendet werden. Ein Kompilierer kann beliebige bekannte Kompilierungstechniken verwenden und beliebige bekannte Kompiliereroperationen durchführen, wie z. B. lexikalische Analyse, Vorverarbeitung, Syntaxanalyse, semantische Analyse, Codeerzeugung, Codetransformation und Codeoptimierung.
  • Größere Kompilierer umfassen häufig mehrere Phasen, aber diese Phasen sind am häufigsten in zwei allgemeinen Phasen enthalten: (1) einem Frontend, d. h. wo im Allgemeinen die syntaktische Verarbeitung, semantische Verarbeitung und eine gewisse Transformation/Optimierung stattfinden können, und (2) einem Backend, d. h. wo im Allgemeinen die Analyse, Transformationen, Optimierungen und Codeerzeugung stattfinden. Einige Kompilierer beziehen sich auf eine Mitte, die die Unschärfe der Abgrenzung zwischen einem Frontend und Backend eines Kompilierers darstellt. Folglich kann eine Bezugnahme auf Einfügung, Zuordnung, Erzeugung oder eine andere Operation eines Kompilierers in irgendeiner der vorstehend erwähnten Phasen oder Durchgänge sowie in beliebigen anderen bekannten Phasen oder Durchgängen eines Kompilierers stattfinden. Als erläuterndes Beispiel fügt ein Kompilierer potentiell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Kompilierung ein, wie z. B. Einfügung von Aufrufen/Operationen in einer Frontend-Phase der Kompilierung und dann Transformation der Aufrufe/Operationen in einen Code niedrigerer Ebene während einer Transformationsphase. Es ist zu beachten, dass während der dynamischen Kompilierung der Kompilierercode oder dynamische Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code für die Ausführung während der Laufzeit optimieren kann. Als spezielles erläuterndes Beispiel kann ein binärer Code (bereits kompilierter Code) dynamisch während der Laufzeit optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den binären Code oder eine Kombination davon umfassen.
  • Ähnlich zu einem Kompilierer übersetzt ein Übersetzer wie z. B. ein binärer Übersetzer den Code entweder statisch oder dynamisch, um den Code zu optimieren und/oder zu übersetzen. Daher kann sich die Bezugnahme auf die Ausführung eines Codes, eines Anwendungscodes, eines Programmcodes oder einer anderen Software-Umgebung beziehen auf: (1) entweder dynamische oder statische Ausführung eines Kompiliererprogramms (von Kompiliererprogrammen), eines Optimierungscodeoptimierers oder Übersetzers, um einen Programmcode zu kompilieren, Software-Strukturen aufrechtzuerhalten, andere Operationen durchzuführen, einen Code zu optimieren oder einen Code zu übersetzen; (2) die Ausführung eines Hauptprogrammcodes mit Operationen/Aufrufen, wie z. B. eines Anwendungscodes, der optimiert/kompiliert wurde; (3) die Ausführung eines anderen Programmcodes, wie z. B. Bibliotheken, der dem Hauptprogrammcode zugeordnet ist, um Software-Strukturen aufrechtzuerhalten, andere auf Software bezogene Operationen durchzuführen oder einen Code zu optimieren; oder (4) eine Kombination davon.
  • Eine Zwischenverbindungsgebildearchitekur umfasst die Architektur von „Peripheral Component Interconnect (PCI) Express“ (PCIe). Ein Hauptziel von PCIe besteht darin, zu ermöglichen, dass Komponenten und Vorrichtungen von verschiedenen Verkäufern in einer offenen Architektur miteinander arbeiten, die sich über mehrere Marktsegmente erstreckt; Clients (Desktops und mobil), Server (Norm und Unternehmen) und eingebettete und Kommunikationsvorrichtungen. PCI-Express ist eine Universal-E/A-Zwischenverbindung mit hoher Leistung, die für eine breite Vielfalt von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie z. B. ihr Verwendungsmodell, ihre Lade-Speicher-Architektur und Software-Schnittstellen, wurden durch ihre Änderungen aufrechterhalten, wohingegen vorherige parallele Busimplementierungen durch eine stark skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die jüngeren Versionen von PCI-Express nutzen Fortschritte in Punkt-Punkt-Zwischenverbindungen, der Technologie auf Schalterbasis und eines paketierten Protokolls, um neue Ebenen von Leistung und Merkmalen zu liefern. Leistungsmanagement, Dienstqualität (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung befinden sich unter einigen der fortschrittlichen Merkmale, die durch PCI-Express unterstützt werden.
  • Mit Bezug auf 2 ist eine Ausführungsform eines Gebildes, das aus Punkt-Punkt-Verbindungen besteht, die einen Satz von Komponenten miteinander verbinden, dargestellt. Das System 200 umfasst einen Prozessor 205 und einen Systemarbeitsspeicher 210, der mit einem Steuereinheitsnetzknoten 215 gekoppelt ist. Der Prozessor 205 umfasst irgendein Verarbeitungselement wie z. B. einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 205 ist mit dem Steuereinheitsnetzknoten 215 durch einen Vorderseitenbus (FSB) 206 gekoppelt. In einer Ausführungsform ist der FSB 206 eine serielle Punkt-Punkt-Zwischenverbindung, wie nachstehend beschrieben. In einer anderen Ausführungsform umfasst die Verbindung 206 eine serielle, differentielle Zwischenverbindungsarchitektur, die mit einer unterschiedlichen Zwischenverbindungsnorm kompatibel ist.
  • Der Systemarbeitsspeicher 210 umfasst irgendeine Arbeitsspeichervorrichtung wie z. B. einen Direktzugriffsarbeitsspeicher (RAM), einen nichtflüchtigen (NV) Arbeitsspeicher oder einen anderen Arbeitsspeicher, der für Vorrichtungen im System 200 zugänglich ist. Der Systemarbeitsspeicher 210 ist mit dem Steuereinheitsnetzknoten 215 durch die Arbeitsspeicherschnittstelle 216 gekoppelt. Beispiele einer Arbeitsspeicherschnittstelle umfassen eine Arbeitsspeicherschnittstelle mit doppelter Datenrate (DDR), eine Dualkanal-DDR-Arbeitsspeicherschnittstelle und eine Arbeitsspeicherschnittstelle eines dynamischen RAM (DRAM).
  • In einer Ausführungsform ist der Steuereinheitsnetzknoten 215 ein Stammnetzknoten, ein Stammkomplex oder eine Stammsteuereinheit in einer Zwischenverbindungshierarchie von Peripheral Component Interconnect Express (PCIe oder PCIE). Beispiele des Steuereinheitsnetzknotens 215 umfassen einen Chipsatz, einen Arbeitsspeichersteuereinheitsnetzknoten (MCH), eine Northbridge, einen Zwischenverbindungssteuereinheitsnetzknote (ICH), eine Southbridge und eine Stammsteuereinheit/einen Stammnetzknoten. Häufig bezieht sich der Begriff Chipsatz auf zwei physikalisch separate Steuereinheitsnetzknoten, d. h. einen Arbeitsspeichersteuereinheitsnetzknoten (MCH), der mit einem Zwischenverbindungssteuereinheitsnetzknoten (ICH) gekoppelt ist. Es ist zu beachten, dass aktuelle Systeme häufig den MCH mit dem Prozessor 205 integriert umfassen, während die Steuereinheit 215 mit E/A-Vorrichtungen kommunizieren soll, in einer ähnlichen Weise, wie nachstehend beschrieben. In einigen Ausführungsformen wird eine Peer-to-Peer-Leitweglenkung optional durch einen Stammkomplex 215 unterstützt.
  • Hier ist der Steuereinheitsnetzknoten 215 mit einem Koppler/einer Brücke 222 durch eine serielle Verbindung 219 gekoppelt. Eingabe/Ausgabe-Module 217 und 221, die auch als Schnittstellen/Ports 217 und 221 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Steuereinheitsnetzknoten 215 und dem Koppler 220 zu schaffen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Koppler 220 gekoppelt sein.
  • Der Koppler/die Brücke 220 leitet Pakete/Nachrichten von der Vorrichtung 225 stromaufwärts, d. h. bis zu einer Hierarchie in Richtung eines Stammkomplexes, zum Steuereinheitsnetzknoten 215 und stromabwärts, d. h. eine Hierarchie hinab weg von einer Stammsteuereinheit, vom Prozessor 205 oder Systemarbeitsspeicher 210 zur Vorrichtung 225. Der Koppler 220 wird in einer Ausführungsform als logische Anordnung von mehreren virtuellen PCI-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 225 umfasst irgendeine interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System gekoppelt werden soll, wie z. B. einer E/A-Vorrichtung, einer Netzschnittstellensteuereinheit (NIC), einer Erweiterungskarte, einem Audioprozessor, einem Netzprozessor, einem Festplattenlaufwerk, einer Speichervorrichtung, einem CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Speichervorrichtung, einer Firewire-Vorrichtung, einer Vorrichtung eines universellen seriellen Busses (USB), einem Scanner und anderen Eingabe/Ausgabe-Vorrichtungen. Häufig wird in der PCIe-Fachsprache eine solche Vorrichtung als Endpunkt bezeichnet. Obwohl nicht speziell gezeigt, kann die Vorrichtung 225 eine PCIE-zu-PCI/PCI-X-Brücke umfassen, um veraltete PCI-Vorrichtungen oder solche einer anderen Version zu unterstützen. Endpunktvorrichtungen in PCIe werden häufig als veraltete, PCIe- oder integrierte Stammkomplexendpunkte klassifiziert.
  • Der Graphikbeschleuniger 230 ist auch mit dem Steuereinheitsnetzknoten 215 durch eine serielle Verbindung 232 gekoppelt. In einer Ausführungsform ist der Graphikbeschleuniger 230 mit einem MCH gekoppelt, der mit einem ICH verbunden ist. Der Koppler 220 und folglich die E/A-Vorrichtung 225 ist dann mit dem ICH gekoppelt. E/A-Module 231 und 218 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Graphikbeschleuniger 230 und dem Steuereinheitsnetzknoten 215 zu kommunizieren. Ähnlich zur obigen MCH-Erörterung kann eine Graphiksteuereinheit oder der Graphikbeschleuniger 230 selbst in den Prozessor 205 integriert sein.
  • 3 stellt ein Blockdiagramm einer Ausführungsform eines Rechensystems, das eine Cache-Steuereinheit umfasst, gemäß Ausführungsformen der vorliegenden Offenbarung dar. Das Rechensystem 300 umfasst eine Zentraleinheitsanschlussbuchse (CPU-Anschlussbuchse) 302, eine oder mehrere CPUs 304(1), 304(2), ... 304(n), einen Cache-Arbeitsspeicher 306, eine Cache-Steuereinheit 308, einen Systemarbeitsspeicher 314, eine E/A-Zwischenverbindung 310 und eine Netzschnittstellensteuereinheit (NIC) 312. In bestimmten Implementierungen ist der Cache-Arbeitsspeicher 306 der CPU-Cache oder ein Cache letzter Ebene (LLC). Die NIC 312 ist dazu konfiguriert, mit einer Gebildezwischenverbindung über eine Schnittstelle zu koppeln und als Schnittstelle zwischen dem Rechensystem 300 und den vernetzten oder Peripherievorrichtungen (oder anderen Vorrichtungen) zu koppeln, z. B. über PCIe-Busse oder über ein Netz oder durch andere Quellen.
  • Für den DDIO-Betrieb greift eine der CPUs 304(1)-304(n) auf den Cache-Arbeitsspeicher 306 zu, um Pakete in Reaktion auf Arbeitsspeicherzugriffsanforderungen (d. h. Lese- oder Schreibanforderungen) zu erzeugen. Bei Lesezugriffen können Daten direkt aus dem Cache-Arbeitsspeicher 306 gelesen werden. Bei Schreibzugriffen können die Daten direkt zum Cache-Arbeitsspeicher 306 geliefert werden, ohne sie zuerst in den Systemarbeitsspeicher 314 zu schreiben. Das Ziel von DDIO ist eine Verringerung der Anzahl von Zugriffen auf den Systemarbeitsspeicher 314. Damit DDIO die Anzahl von Systemarbeitsspeicherzugriffsoperationen für entweder Lesen oder Schreiben verringert, insbesondere in Datentransaktionen mit hoher Priorität (z. B. Echtzeitanwendungen), sollte der Cache-Arbeitsspeicher 306 Daten mit hoher Priorität aufrechterhalten (oder anders ausgedrückt das Exmittieren von Daten mit hoher Priorität zugunsten von bestmöglichen Daten oder Daten mit niedriger Priorität sollte minimiert werden), um Cache-Verfehlungen zu vermeiden, die Systemarbeitsspeicherzugriffe erfordern.
  • Für Anwendungen mit hoher Priorität schafft DDIO eine Weise zum Erreichen von Operationen mit geringer Latenz, profitiert jedoch von minimierten Cache-Verfehlungen der Daten mit hoher Priorität. Eine Cache-Steuereinheit 308 kann Verkehrsklassen, die ein Teil von Datenpaketkopfinformationen sind, für Transaktionen verwenden, um die Cache-Zuweisung zu unterscheiden. Die Verkehrsklasseen sind beispielsweise PCIe-Verkehrsklassen. PCIe-Verkehrsklassen sind in „PCI Express Base Specification, Revision 3.0“ (10. Nov. 2010) [nachstehend PCIe-Spez.] beschrieben, die durch den Hinweis in ihrer Gesamtheit hier aufgenommen wird. Wie in der PCIe-Spez. beschrieben, ist eine Verkehrsklasse ein Ende-zu-Ende-Etikett eines Transaktionsschichtpakets und wird verwendet, um Dienstrichtlinien auf das Datenpaket an verschiedenen Punkten entlang des Datenpfades anzuwenden. Außerdem beschreibt die PCIe-Spez., dass Verkehrsklassen für die „Verkehrsklassendifferenzierung“ an einem Endpunkt oder Stammkomplex verwendet werden können. Unter den Verkehrsklassen befinden sich die bestmögliche TC0-Dienstklasse und TC1-TC7, die differenzierte Dienstklassen sind.
  • Die Cache-Steuereinheit 308 kann die Verkehrsklasse verwenden, die vom Datenpaket erhalten wird, um zu bestimmen, welchen Bereichen des Cache, falls vorhanden, Daten mit einer bestimmten Verkehrsklasse zugewiesen werden können. Die Cache-Steuereinheit kann eine Verkehrsklasse eines Datenpakets identifizieren.
  • 4 stellt ein Blockdiagramm einer Ausführungsform einer Cache-Steuereinheit 308 gemäß der vorliegenden Offenbarung dar. Die Cache-Steuereinheit 308 umfasst beispielsweise eine Cache-Zuweisungssteuereinheit 310 und ein Abbildungselement 312. Das Abbildungselement 312 umfasst eine Schaltungsanordnung, um das PCIe-Verkehrsklassenetikett zu identifizieren, das ein Teil des Datenpakets ist, um eine Verkehrsklasse des Datenpakets zu identifizieren (z. B. TC0 oder TC1-TC7). Das Abbildungselement 312 kann auf eine Registratur 320 zugreifen, um die identifizierte Verkehrsklasse des Datenpakets auf einen Registerbitwert abzubilden, der einem Bereich des Cache-Arbeitsspeichers entspricht, der diesem Registerbitwert zugeordnet ist. Die Registratur 320 kann einen Querverweis von PCIe-Verkehrsklassen auf Register des Cache-Arbeitsspeichers umfassen, die für das Speichern von Daten, die den Verkehrsklassen zugeordnet sind, verfügbar oder zugewiesen sind. Die Registratur 320 kann einen Querverweis von Verkehrsklassen auf Kategorien von Daten umfassen. Die Kategorien von Daten sind Registern von Bereichen des Cache zugeordnet oder Wegen des Cache zugeordnet.
  • Die Cache-Zuweisungssteuereinheit 310 kann dann bestimmen, ob die Daten im Cache gespeichert werden sollten oder nicht, in Abhängigkeit von der Verkehrsklasse der Daten. Wenn die Daten im Cache auf der Basis ihrer Verkehrsklasse gespeichert werden können, dann kann die Cache-Steuereinheit 310 auch bestimmen, ob die Daten in einen entsprechenden Bereich des Cache zugewiesen werden können, der der Verkehrsklasse der Daten zugeordnet ist. Die Cache-Zuweisungssteuereinheit 310 kann auch Daten mit niedriger Priorität, die im Cache gespeichert sind, exmittieren, um Raum für Daten mit einer Verkehrsklasse mit hoher Priorität zu schaffen.
  • 5 stellt ein schematisches Diagramm einer Beispielimplementierung einer Cache-Steuereinheit und eines Cache-Arbeitsspeichers gemäß Ausführungsformen der vorliegenden Offenbarung dar. 5 zeigt einen PCIe-Stammkomplex 502 in Kommunikation mit der Cache-Steuereinheit 308. Die Cache-Steuereinheit 308 umfasst die in 4 beschriebenen Merkmale, um eine Verkehrsklasse (TC) zu identifizieren und die TC auf eine Kategorie von Daten (oder in einigen Implementierungen auf eine Dienstklasse (CLOS)) abzubilden. TC1 kann beispielsweise auf eine oder mehrere Kategorien von Daten wie z. B. Kategorien 1-N abgebildet werden. TC2 kann auf eine Kategorie N+1 abgebildet werden, und so weiter. In einigen Fällen wird eine TC nicht auf irgendwelche Kategorien oder Dienstklassen abgebildet. In bestimmten Implementierungen umfasst die Registratur 320 von 4 zusätzliche Register pro Bereich des Cache. Jeder Bereich des Cache kann mehr als 1 Stück von Daten auf einmal speichern können. Im nachstehenden Beispiel wird gesagt, dass der Cache N Cache-Wege aufweist (z. B. ein „N-Way Set Associative Cache“).
  • In bestimmten Implementierungen speichern die Register eine CLOS-Wegemaske für E/A-Transaktionen. Eine Wegemaske ist ein Typ von Bitmaske, die identifiziert, in welchem Cache-Weg das Datenstück gespeichert werden kann und wie viel des Cache-Bereichs diese Daten verwenden dürfen. Tabelle 1 zeigt ein Beispiel dessen, wie die CLOS auf eine CLOS-Wegemaske für den Cache abbilden kann. Tabelle 1. Dienstklasenwegemaskenregistratur
    Dienstklasse (Bitmaske)
    Cache-Wege 1 2 3 4 5 6 7 8
    1 1 Bit 1 Bit 1 Bit 1 Bit 1 Bit 1 Bit 1 Bit 1 Bit
    2 2 Bits 2 Bits 2 Bits 2 Bits 2 Bits 2 Bits 2 Bits 2 Bits
    3 3 Bits 3 Bits 3 Bits 3 Bits 3 Bits 3 Bits 3 Bits 3 Bits
    . . . . . . . . .
    . . . . . . . . .
    . . . . . . . . .
    N N Bits N Bits N Bits N Bits N Bits N Bits N Bits N Bits
  • Tabelle 1 stellt eine Beispielbitmaske (Wegemaske) zum Abbilden der Dienstklasse (CLOS) auf jeden der verfügbaren Cache-Wege für N Cache-Wege dar. Wenn eine Verkehrsklasse T1 als Beispiel auf eine erste CLOS (z. B. CLOS 1) abgebildet wird, dann wird für einen Bereich des Cache mit 1 Cache-Weg 1 Bit des Cache für die Daten zugewiesen.
  • Auf ein Register 320 wird durch die Cache-Steuereinheit 308 zugegriffen, um die CLOS für jede Verkehrsklasse auszuwählen. Die Cache-Steuereinheit 308 bildet beispielsweise die TC auf die CLOS ab, wenn die Cache-Steuereinheit 308 mit sowohl einem PCIe-Stammkomplex 502, der die Verkehrsklasse der PCIe-Transaktionen verfolgt, als auch dem Cache-Arbeitsspeicher kommuniziert. Die Cache-Steuereinheit 308 schiebt auch Daten auf den Cache-Ring 520, was bedeutet, dass die Cache-Steuereinheit 308 die CLOS festlegen kann. Die Cache-Steuereinheit 308 kann die Verkehrsklasse jeder E/A-Transaktion prüfen und kann die CLOS für jede Transaktion auf der Basis ihrer Verkehrsklasse festlegen. Dies ermöglicht, dass der Systemagent oder Cache-Zuweisungsmanager 310 den E/A-Verkehr in seine bezeichneten Cache-Wege auf der Basis der Dienstklassenwegemaske zuweist, die auf der Basis ihrer Verkehrsklasse ausgewählt wird.
  • 6 ist ein Prozessablaufdiagramm 600 zum selektiven Speichern von Daten direkt im Cache-Arbeitsspeicher auf der Basis der Verkehrsklasse. Ein Datenpaket wird empfangen und zur Cache-Steuereinheit weitergeleitet (602). Die Cache-Steuereinheit identifiziert die Verkehrsklasse des Datenpakets (604). Die Cache-Steuereinheit kann beispielsweise die Informationen im Paketkopf analysieren, um die PCIe-Verkehrsklasse zu extrahieren, die dann verwendet werden kann, um zu identifizieren, ob die Daten im Cache gespeichert werden sollten, und wenn ja, wo sie gespeichert werden sollen und ob verfügbarer Cache für die Menge an Daten mit dieser Verkehrsklasse vorhanden ist. Ein solcher Paketkopf kann jener sein, der in der PCIe-Spez. bei § 2.2.6.6 beschrieben ist, deren Inhalte in ihrer Gesamtheit hier aufgenommen werden. In Ausführungsformen bildet die Cache-Steuereinheit die Verkehrsklasse auf eine Kategorie von Daten ab (606). Die Cache-Steuereinheit bildet beispielsweise die Verkehrsklasse auf eine Dienstklasse (CLOS) oder eine andere Kategorisierung von Cache-Zuweisung ab. Die Cache-Steuereinheit bestimmt einen Bereich des Cache, der der Kategorie von Daten zugeordnet ist (608). In einem Beispiel kann die Cache-Steuereinheit ein CLOS-Wegemaskenregister verwenden, um Cache-Wege zu identifizieren, um die Daten in den Cache zuzuweisen. In einem anderen Beispiel kann die Cache-Steuereinheit eine Bitmaske verwenden, um zu bestimmen, ob ein Cache-Weg für die Daten besteht und wie viel Cache für die Daten verfügbar ist. Die Cache-Steuereinheit kann bestimmen, ob verfügbare Cache-Wege für die Verkehrsklasse vorhanden sind (610). Wenn die Cache-Steuereinheit bestimmt, dass verfügbare Cache-Wege in den Cache vorhanden sind, dann kann die Cache-Steuereinheit die Daten im Cache speichern (612). Wenn die Cache-Steuereinheit bestimmt, dass keine verfügbaren Cache-Wege vorhanden sind, dann kann die Cache-Steuereinheit die Daten für die Speicherung im Systemarbeitsspeicher weiterleiten (614).
  • Wenn auf (610)-(614) näher eingegangen wird, kann die Cache-Steuereinheit bestimmen, ob verfügbare Cache-Wege für eine Verkehrsklasse vorhanden sind, auf der Basis der Abbildung der Verkehrsklasse auf die Kategorie von Daten oder CLOS. Die Cache-Steuereinheit kann die Bitmaske oder eine Wegemaske verwenden, um zu identifizieren, wo im Cache die Daten gespeichert werden sollten. Eine höhere oder wichtigere Verkehrsklasse kann auf eine Kategorie von Daten oder CLOS mit mehr als einem Cache-Weg und/oder Cache-Wegen abgebildet werden, die größere Mengen an Daten unterstützen. Eine niedrigere oder weniger wichtige Verkehrsklasse kann auf eine Kategorie von Daten oder CLOS mit weniger Cache-Wegen und/oder Cache-Wegen abgebildet werden, die weniger Daten unterstützen. In einigen Fällen können Daten mit einer niedrigeren oder weniger wichtigen Verkehrsklasse nicht im Cache gespeichert werden und können zum Systemarbeitsspeicher gelenkt werden.
  • Die Cache-Wege für eine spezielle Kategorie von Daten oder CLOS können belegt sein. In bestimmten Ausführungsformen können Daten im Cache exmittiert werden, um Platz für ankommende Daten zu schaffen. Daten mit niedriger Priorität können beispielsweise exmittiert werden, um im Cache für Daten mit höherer Priorität Platz zu schaffen.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Patentbeschreibung. Eine oder mehrere Ausführungsformen können ein Gerät, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, ein Verfahren und eine Logik auf Hardware- und/oder Software-Basis (z. B. in Verbindung mit einer geteilten Arbeitsspeichersteuereinheit implementiert) umfassen, um eine Verkehrsklasse eines Datenpakets zu bestimmen, das über eine Verbindung empfangen wird, die mit einer PCIe-Verbindungszwischenverbindung kompatibel ist, und selektiv das Datenpaket im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Verkehrsklasse zu speichern.
  • Eine oder mehrere Ausführungsformen können ein System umfassen, das einen Cache-Arbeitsspeicher, einen Systemarbeitsspeicher, eine Netzschnittstellensteuereinheitsschaltung, um ein Datenpaket von einer Peripherievorrichtung über ein Peripheriekomponentenschnittstellenexpress-Protokoll (PCIe-Protokoll) zu empfangen, und eine Cache-Steuereinheitsschaltung, um das Datenpaket von der Netzschnittstellensteuereinheit zu empfangen, eine Verkehrsklasse des Datenpakets zu bestimmen und selektiv das Datenpaket direkt im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets zu speichern, umfassen.
  • Eine oder mehrere Ausführungsformen umfassen ein Verfahren, das an einer Cache-Steuereinheit durchgeführt wird, wobei das Verfahren das Empfangen eines Datenpakets, das Bestimmen einer Verkehrsklasse des Datenpakets und das selektive Speichern des Datenpakets direkt im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets umfasst.
  • Eine oder mehrere Ausführungsformen umfassen ein Computerprogrammprodukt, das konkret auf einem nichttransitorischen computerlesbaren Medium verkörpert ist, wobei das Computerprogrammprodukt Befehle umfasst, die betriebsfähig sind, wenn sie ausgeführt werden, um ein Datenpaket zu empfangen, um eine Verkehrsklasse des Datenpakets zu bestimmen und um selektiv das Datenpaket direkt im Cache-Arbeitsspeicher oder im Hauptarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets zu speichern.
  • In einem Beispiel umfasst ein Gerät eine Schaltungsanordnung, um ein Datenpaket zu empfangen, eine Verkehrsklasse des Datenpakets zu bestimmen und selektiv das Datenpaket direkt im Cache-Arbeitsspeicher oder im Hauptarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets zu speichern.
  • In einem Beispiel soll die Schaltungsanordnung das Datenpaket über eine „Peripheral Component Interface Express“-Verbindung (PCIe-Verbindung) empfangen.
  • In einem Beispiel umfasst das Datenpaket einen Paketkopf, wobei der Paketkopf ein Transaktionsdeskriptorfeld umfasst, wobei das Transaktionsdeskriptorfeld die Verkehrsklasse des Datenpakets umfasst.
  • In einem Beispiel ist die Verkehrsklasse ein „Transaction Layer Packet“-Etikett (TLP-Etikett) des Datenpakets.
  • In einem Beispiel wird die Verkehrsklasse verwendet, um Datenpakete mit einer Verkehrsklasse mit hoher Priorität von Datenpaketen mit einer Verkehrsklasse mit niedriger Priorität zu unterscheiden.
  • In einem Beispiel bildet die Schaltungsanordnung die Verkehrsklasse des Datenpakets auf eine entsprechende Kategorie von Daten ab und speichert selektiv Daten des Datenpakets im Cache-Arbeitsspeicher oder im Hauptarbeitsspeicher auf der Basis der Kategorie von Daten.
  • In einem Beispiel bildet die Schaltungsanordnung die Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität ab und bildet die Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität ab und die Schaltungsanordnung speichert selektiv Daten von Datenpaketen mit einer Verkehrsklasse, die auf eine Kategorie von Daten mit hoher Priorität abgebildet wird, im Cache-Arbeitsspeicher und speichert selektiv Daten von Datenpaketen mit einer Verkehrsklasse, die auf eine Kategorie von Daten mit niedriger Priorität abgebildet wird, im Hauptarbeitsspeicher.
  • In einem Beispiel bildet die Schaltungsanordnung die Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität ab und bildet die Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität ab, und wobei die Schaltungsanordnung bestimmt, ob der Verkehr, der auf die Kategorie von Daten mit hoher Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann, und bestimmt, ob der Verkehr, der auf die Kategorie von Daten mit niedriger Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeicher zugewiesen werden kann.
  • In einem Beispiel bestimmt die Schaltungsanordnung, dass die Kategorie von Datenverkehr mit niedriger Priorität nicht in den Cache zugewiesen werden kann, und speichert die Kategorie von Datenverkehr mit niedriger Priorität im Hauptarbeitsspeicher.
  • In einem Beispiel umfasst der Cache-Arbeitsspeicher mehrere Cache-Wege, wobei jeder Cache-Weg für eine Kategorie von Daten reserviert ist, und wobei die Schaltungsanordnung die Verkehrsklasse des Datenpakets auf eine entsprechende Kategorie von Daten abbildet und selektiv das Datenpaket im Cache-Arbeitsspeicher oder im Hauptarbeitsspeicher auf der Basis der Kategorie von Daten durch einen Cache-Weg speichert, der für die Kategorie von Daten reserviert ist.
  • In einem Beispiel umfasst die Schaltungsanordnung eine Cache-Steuereinheit.
  • In einem Beispiel wird die Verkehrsklasse verwendet, um Datenpakete mit einer Verkehrsklasse mit hoher Priorität von Datenpaketen mit einer Verkehrsklasse mit niedriger Priorität zu unterscheiden.
  • In einem Beispiel bildet die Schaltungsanordnung die Verkehrsklasse der Datenpakete auf eine Dienstklasse (CLOS) ab und speichert selektiv das Datenpaket im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Dienstklasse.
  • In einem Beispiel bildet die Schaltungsanordnung die Verkehrsklasse mit hoher Priorität auf eine CLOS mit hoher Priorität ab und bildet die Verkehrsklasse mit niedriger Priorität auf eine CLOS mit niedriger Priorität ab und die Schaltungsanordnung speichert selektiv Daten von Datenpaketen mit einer Verkehrsklasse, die auf eine CLOS mit hoher Priorität abgebildet wird, im Cache-Arbeitsspeicher und speichert selektiv Daten von Datenpaketen mit einer Verkehrsklasse, die auf eine CLOS mit niedriger Priorität abgebildet wird, im Systemarbeitsspeicher.
  • In einem Beispiel bildet die Schaltungsanordnung die Verkehrsklasse mit hoher Priorität auf eine CLOS mit hoher Priorität ab und bildet die Verkehrsklasse mit niedriger Priorität auf eine CLOS mit niedriger Priorität ab, und wobei die Schaltungsanordnung bestimmt, ob der Verkehr, der auf die CLOS mit hoher Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann, und bestimmt, ob der Verkehr, der auf die CLOS mit niedriger Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann.
  • In einem Beispiel bestimmt die Schaltungsanordnung, dass der CLOS-Verkehr mit niedriger Priorität nicht in den Cache zugewiesen werden kann, und speichert den CLOS-Verkehr mit niedriger Priorität im Systemarbeitsspeicher.
  • In einem Beispiel umfasst der Cache-Arbeitsspeicher ein CLOS-Wegemaskenregister, wobei das CLOS-Wegemaskenregister Bits umfasst, die einer Verkehrsklassenabbildung entsprechen und verwendet werden, um Wege des Cache-Arbeitsspeichers zum Speichern von Datenpaketen mit einer Verkehrsklasse zu identifizieren, die auf eine entsprechende CLOS abgebildet wird, und wobei jede Dienstklasse einer Wegemaske des Arbeitsspeichers entspricht, und die Schaltungsanordnung selektiv die Datenpakete im Cache-Arbeitsspeicher auf der Basis der Wegemaske, die der CLOS entspricht, speichert.
  • In einem Beispiel umfasst ein Computerprogrammprodukt, das konkret auf einem nichttransitorischen computerlesbaren Medium verkörpert ist, Befehle, die betriebsfähig sind, wenn sie ausgeführt werden, um ein Datenpaket zu empfangen, eine Verkehrsklasse des Datenpakets zu bestimmen und selektiv das Datenpaket direkt im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets zu speichern.
  • In einem Beispiel wird das Datenpaket über eine Verbindung empfangen, die mit einer Zwischenverbindung auf der Basis von „Peripheral Component Interface Express“ (PCIe) kompatibel ist.
  • In einem Beispiel umfasst das Datenpaket einen Paketkopf, wobei der Paketkopf ein Transaktionsdeskriptorfeld umfasst, wobei das Transaktionsdeskriptorfeld die Verkehrsklasse des Datenpakets umfasst.
  • In einem Beispiel ist die Verkehrsklasse ein „Transaction Layer Packet“-Etikett (TLP-Etikett) des Datenpakets.
  • In einem Beispiel wird die Verkehrsklasse verwendet, um Datenpakete mit einer Verkehrsklasse mit hoher Priorität von Datenpaketen mit einer Verkehrsklasse mit niedriger Priorität zu unterscheiden.
  • In einem Beispiel sind die Befehle, wenn sie ausgeführt werden, dazu konfiguriert, die Verkehrsklasse des Datenpakets auf eine entsprechende Kategorie von Daten abzubilden, und selektiv das Datenpaket im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Kategorie von Daten zu speichern.
  • In einem Beispiel sind die Befehle, wenn sie ausgeführt werden, dazu konfiguriert, die Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität abzubilden und die Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität abzubilden und Datenpakete mit einer Verkehrsklasse, die auf eine Kategorie von Daten mit hoher Priorität abgebildet wird, selektiv im Cache-Arbeitsspeicher zu speichern, und Datenpakete mit einer Verkehrsklasse, die auf eine Kategorie von Daten mit niedriger Priorität abgebildet wird, selektiv im Systemarbeitsspeicher zu speichern.
  • In einem Beispiel sind die Befehle, wenn sie ausgeführt werden, dazu konfiguriert, die Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität abzubilden und die Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität abzubilden und zu bestimmen, ob der Verkehr, der auf die Kategorie von Daten mit hoher Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann, und zu bestimmen, ob der Verkehr, der auf die Kategorie von Daten mit niedriger Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann.
  • In einem Beispiel sind die Befehle, wenn die ausgeführt werden, dazu konfiguriert zu bestimmen, dass die Kategorie von Datenverkehr mit niedriger Priorität nicht in den Cache zugewiesen werden kann, und die Kategorie von Datenverkehr mit niedriger Priorität im Systemarbeitsspeicher zu speichern.
  • In einem Beispiel sind die Befehle, wenn sie ausgeführt werden, dazu konfiguriert, die Verkehrsklasse des Datenpakets auf eine entsprechende Kategorie von Daten abzubilden, einen Cache-Bereich des Cache-Arbeitsspeichers, der der Kategorie von Daten zugeordnet ist, zu identifizieren und selektiv das Datenpaket im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Kategorie von Daten durch einen Cache-Weg zu speichern, der für die Kategorie von Daten reserviert ist.
  • In einem Beispiel enthält ein nichttransientes computerlesbares Medium Programmbefehle zum Bewirken, dass ein Computer das Datenpaket von der Netzschnittstellensteuereinheit empfängt, eine Verkehrsklasse des Datenpakets bestimmt, selektiv das Datenpaket direkt im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets speichert.
  • In einem Beispiel umfasst das Gerät ein Mittel zum Durchführen eines Verfahrens, wie in den vorangehenden Absätzen beschrieben.
  • In einem Beispiel umfasst ein maschinenlesbarer Speicher maschinenlesbare Befehle, die, wenn sie ausgeführt werden, ein Verfahren implementieren oder ein Gerät verwirklichen, wie vorstehend beschrieben.
  • Wenn man sich 7 zuwendet, ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 700 umfasst irgendeine Form von geschichtetem Kommunikationsstapel, wie z. B. einen „Quick Path Interconnect“-Stapel (QPI-Stapel), einen PCIe-Stapel, einen Hochleistungsrechenzwischenverbindungsstapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl die unmittelbar nachstehende Erörterung in Bezug auf einen PCIe-Stapel stattfindet, können dieselben Konzepte auf andere Zwischenverbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 700 ein PCIe-Protokollstapel mit einer Transaktionsschicht 705, einer Verbindungsschicht 710 und einer Bitübertragungsschicht 720. Eine Schnittstelle wie z. B. Schnittstellen 117, 118, 121, 122, 126 und 131 in 1 können als Kommunikationsprotollstapel 700 dargestellt werden. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle, die einen Protokollstapel implementiert/umfasst, bezeichnet werden.
  • „PCI Express“ verwendet Pakete, um Informationen zwischen Komponenten zu übermitteln. Pakete werden in der Transaktionsschicht 705 und Datenverbindungsschicht 710 gebildet, um die Informationen von der sendenden Komponente zur empfangenden Komponente zu tragen. Wenn die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die erforderlich sind, um Pakete auf diesen Schichten zu bearbeiten. Auf der Empfangsseite findet der umgekehrte Prozess statt und Pakete werden von ihrer Darstellung der Bitübertragungsschicht 720 in die Darstellung der Datenverbindungsschicht 710 und schließlich (für Transaktionsschichtpakete) in die Form transformiert, die durch die Transaktionsschicht 720 der Empfangsvorrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • In einer Ausführungsform soll die Transaktionsschicht 705 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur bereitstellen, wie z. B. der Datenverbindungsschicht 710 und der Bitübertragungsschicht 720. In dieser Hinsicht ist eine primäre Verantwortung der Transaktionsschicht 705 die Zusammensetzung und Zerlegung von Paketen (d. h. Transaktionsschichtpaketen oder TLPs). Die Transaktionsschicht 705 managt typischerweise die Flussteuerung auf Kreditbasis für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen mit Anforderung und Antwort, die durch Zeit getrennt sind, was ermöglicht, dass eine Verbindung anderen Verkehr trägt, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Außerdem verwendet PCIe eine Flusssteuerung auf Kreditbasis. In diesem Schema kündigt eine Vorrichtung eine anfängliche Menge an Kredit für jeden der Empfangspuffer in der Transaktionsschicht 705 an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindung wie z. B. ein Steuereinheitsnetzknoten 115 in 1 zählt die Anzahl von Krediten, die durch jedes TLP verbraucht werden. Eine Transaktion kann übertragen werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Beim Empfangen einer Antwort wird eine Menge an Kredit wiederhergestellt. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz der Kreditrückgabe sich nicht auf die Leistung auswirkt, vorausgesetzt, dass die Kreditgrenze nicht angetroffen wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Arbeitsspeicheradressenraum, einen Eingabe/Ausgabe-Adressenraum und einen Nachrichtenadressenraum. Arbeitsspeicherraumtransaktionen umfassen eine oder mehrere von Leseanforderungen und Schreibanforderungen, um Daten zu/von einer Arbeitsspeicher-abgebildeten Stelle zu übertragen. In einer Ausführungsform können Arbeitsspeicherraumtransaktionen zwei verschiedene Adressenformate verwenden, z. B. ein kurzes Adressenformat, wie z. B. eine 32-Bit-Adresse, oder ein langes Adressenformat, wie z. B. eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen in den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtraumtransaktionen (oder einfach Nachrichten) sind definiert, um die Kommunikation zwischen PCIe-Agenten im Band zu unterstützen.
  • Daher fügt in einer Ausführungsform die Transaktionsschicht 705 Paketkopf/Nutzinformationen 706 zusammen. Das Format für die aktuellen Paketköpfe/Nutzinformationen ist in der PCIe-Spez. zu finden.
  • Mit schnellem Bezug auf 8 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 800 ein Mechanismus zum Tragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 800 die Identifikation von Transaktionen in einem System. Andere potentielle Verwendungen umfassen die Verfolgung von Modifikationen einer Vorgabetransaktionsordnung und Zuordnung einer Transaktion zu Kanälen.
  • Der Transaktionsdeskriptor 800 umfasst ein Feld 802 eines globalen Identifizierers, ein Attributfeld 804 und ein Kanalidentifiziererfeld 806. In dem dargestellten Beispiel ist das Feld 802 des globalen Identifizierers mit einem Feld 808 eines lokalen Transaktionsidentifizierers und einem Quellenidentifiziererfeld 810 dargestellt. In einer Ausführungsform ist der globale Transaktionsidentifizierer 802 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das Feld 808 des lokalen Transaktionsidentifizierers ein Feld, das durch einen anfordernden Agenten erzeugt wird, und es ist für alle ausstehenden Anforderungen eindeutig, die eine Vollendung für diesen anfordernden Agenten erfordern. Ferner identifiziert in diesem Beispiel der Quellenidentifizierer 810 eindeutig den anfordernden Agenten innerhalb einer PCIe-Hierarchie. Zusammen mit der Quellen-ID 810 liefert folglich das Feld 808 des lokalen Transaktionsidentifizierers eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne.
  • Das Attributfeld 804 legt Eigenschaften und Beziehungen der Transaktion fest. In dieser Hinsicht wird das Attributfeld 804 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die die Modifikation der Vorgabebearbeitung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 804 ein Prioritätsfeld 812, ein Reserviert-Feld 814, ein Ordnungsfeld 816 und ein Keine-Spionage-Feld 818. Hier kann das Prioritätsunterfeld 812 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das Reserviert-Attributfeld 814 wird für die Zukunft für die vom Verkäufer definierte Verwendung reserviert gelassen. Mögliche Verwendungsmodelle unter Verwendung von Prioritäts- oder Sicherheitsattributen können unter Verwendung des Reserviert-Attributfeldes implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 816 verwendet, um optionale Informationen bereitzustellen, die den Typ von Ordnung übermitteln, die Vorgabeordnungsregeln modifizierten kann. Gemäß einer Beispielimplementierung bezeichnet ein Ordnungsattribut von „0“, dass Vorgabeordnungsregeln gelten sollen, wobei ein Ordnungsattribut von „1“ eine gelockerte Ordnung angibt, wobei Schreibvorgänge Schreibvorgänge in derselben Richtung überholen können und Lesevollendungen Schreibvorgänge in derselben Richtung überholen können. Das Spionageattributfeld 818 wird verwendet, um zu bestimmen, ob Transaktionen ausspioniert werden. Wie gezeigt, identifiziert ein Kanal-ID-Feld 806 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 710, die auch als Datenverbindungsschicht 710 bezeichnet wird, wirkt als Zwischenstufe zwischen der Transaktionsschicht 705 und der Bitübertragungsschicht 720. In einer Ausführungsform stellt eine Verantwortung der Datenverbindungsschicht 710 einen zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindung bereit. Eine Seite der Datenverbindungsschicht 710 nimmt TLPs an, die durch die Transaktionsschicht 705 zusammengesetzt werden, wendet einen Paketsequenzidentifizierer 711, d. h. eine Identifikationsnummer oder Paketnummer, an, berechnet und wendet einen Fehlerdetektionscode, d. h. CRC 712, an und schickt die modifizierten TLPs zur Bitübertragungsschicht 720 für die Übertragung über eine physikalische zu einer externen Vorrichtung.
  • Bitübertragungsschicht
  • In einer Ausführungsform umfasst die Bitübertragungsschicht 720 einen logischen Unterblock 721 und einen elektrischen Unterblock 722, um ein Paket physikalisch zu einer externen Vorrichtung zu übertragen. Hier ist der logische Unterblock 721 für die „digitalen“ Funktionen der Bitübertragungsschicht 721 verantwortlich. In dieser Hinsicht umfasst der logische Unterblock einen Sendeabschnitt, um ausgehende Informationen für die Übertragung durch den physikalischen Unterblock 222 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie zur Verbindungsschicht 710 geleitet werden.
  • Der physikalische Block 722 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Unterblock 721 mit Symbolen beliefert, die der Sender serialisiert und zu einer externen Vorrichtung weiter sendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Vorrichtung beliefert und transformiert die empfangenen Signale in einen Bitstrom. Der Bitstrom wird deserialisiert und zum logischen Unterblock 721 geliefert. In einer Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 723 zu rahmen. Außerdem liefert der Empfänger in einem Beispiel auch einen Symboltakt, der vom ankommenden seriellen Strom zurückgewonnen wird.
  • Wie vorstehend angegeben, obwohl die Transaktionsschicht 705, die Verbindungsschicht 710 und die Bitübertragungsschicht 720 in Bezug auf eine spezielle Ausführungsform eines PCIe-Protokollstapels erörtert werden, ist ein geschichteter Protokollstapel nicht so begrenzt. Tatsächlich kann irgendein geschichtetes Protokoll enthalten sein/implementiert werden. Als Beispiel umfasst eine Port/eine Schnittstelle, die als geschichtetes Protokoll dargestellt ist: (1) eine erste Schicht, um Pakete zusammenzufügen, d. h. eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, d. h. eine Verbindungsschicht; und eine dritte Schicht, um die Pakete zu übertragen, d. h. eine Bitübertragungsschicht. Als spezielles Beispiel wird ein übliches geschichtetes Standardschnittstellenprotokoll (CSI-Protokoll) verwendet.
  • Mit Bezug als nächstes auf 9 ist eine Ausführungsform eines seriellen PCIe-Punkt-Punkt-Gebildes dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-Punkt-Verbindung dargestellt ist, ist eine serielle Punkt-Punkt-Verbindung nicht so begrenzt, da sie irgendeinen Übertragungspfad für die Übertragung von seriellen Daten umfasst. In der gezeigten Ausführungsform umfasst eine Basis-PCIe-Verbindung zwei differentiell angesteuerte Signalpaare mit niedriger Spannung: ein Sendepaar 806/911 und ein Empfangspaar 912/907. Folglich umfasst die Vorrichtung 905 eine Sendelogik 906, um Daten zur Vorrichtung 910 zu senden, und eine Empfangslogik 907, um Daten von der Vorrichtung 910 zu empfangen. Mit anderen Worten, zwei Sendepfade, d. h. Pfade 916 und 917, und zwei Empfangspfade, d. h. Pfade 918 und 919, sind in einer PCIe-Verbindung enthalten.
  • Ein Sendepfad bezieht sich auf irgendeinen Pfad zum Senden von Daten wie z. B. eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z. B. der Vorrichtung 905 und Vorrichtung 910, wird als Verbindung, wie z. B. die Verbindung 415, bezeichnet. Eine Verbindung kann eine Bahn unterstützen - wobei jede Bahn einen Satz von differentiellen Signalpaaren darstellt (ein Paar für das Senden, ein Paar für den Empfang). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere Bahnen vereinigen, die mit xN bezeichnet werden, wobei N irgendeine unterstützte Verbindungsbreite ist, wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differentielles Paar bezieht sich auf zwei Sendepfade wie z. B. Leitungen 416 und 417, um Differentialsignale zu senden. Wenn die Leitung 416 als Beispiel von einem niedrigen Spannungspegel auf einen hohen Spannungspegel umschaltet, d. h. eine steigende Flanke, steuert die Leitung 417 von einem hohen Logikpegel auf einen niedrigen Logikpegel an, d. h. eine fallende Flanke. Differentielle Signale demonstrieren potentiell bessere elektrische Eigenschaften, wie z. B. eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungs-Überschwingen/Unterschwingen, Rufen usw. Dies ermöglicht ein besseres Zeitsteuerfenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • In einer Ausführungsform wird eine neue „High Performance Interconnect“ (HPI) geschaffen. HPI ist eine Cachekohärente Zwischenverbindung auf Verbindungsbasis der nächsten Generation. Als ein Beispiel kann HPI in Hochleistungsrechenplattformen wie z. B. Arbeitsplatzrechnern oder Servern verwendet werden, wo PCIe typischerweise verwendet wird, um Beschleuniger oder E/A-Vorrichtungen zu verbinden. HPI ist jedoch nicht so begrenzt. Stattdessen kann HPI in irgendeinem der Systeme oder Plattformen, die hier beschrieben sind, verwendet werden. Ferner können die individuellen entwickelten Ideen auf andere Zwischenverbindungen wie z. B. PCIe angewendet werden. Überdies kann HPI erweitert werden, um auf demselben Markt wie eine andere Zwischenverbindung zu konkurrieren, wie z. B. PCIe. Um mehrere Vorrichtungen zu unterstützen, umfasst in einer Implementierung HPI eine „Instruction Set Architecture“-Agnostik (ISA-Agnostik) (d. h. HPI kann in mehreren verschiedenen Vorrichtungen implementiert werden). In einem anderen Szenario kann HPI auch verwendet werden, um Hochleistungs-E/A-Vorrichtungen, nicht nur Prozessoren oder Beschleuniger, zu verbinden. Eine Hochleistungs-PCIe-Vorrichtung kann beispielsweise mit HPI durch eine geeignete Übersetzungsbrücke (d. h. HPI zu PCIe) gekoppelt werden. Überdies können die HPI-Verbindungen in vielen Vorrichtungen auf HPI-Basis wie z. B. Prozessoren in verschiedenen Weisen (z. B. Sterne, Ringe, Netze usw.) verwendet werden. 10 stellt eine Ausführungsform von mehreren potentiellen Mehr-Anschlussbuchsen-Konfigurationen dar. Eine Konfiguration 1005 mit zwei Anschlussbuchsen, wie dargestellt, umfasst zwei HPI-Verbindungen; in anderen Implementierungen kann jedoch eine HPI-Verbindung verwendet werden. Für größere Topologien kann irgendeine Konfiguration verwendet werden, solange eine ID zuweisbar ist und eine gewisse Form von virtuellem Pfad besteht. Wie gezeigt, weist die 4-Anschlussbuchsen-Konfiguration 1010 eine HPI-Verbindung von jedem Prozessor zu einem anderen auf. Aber in der 8-Anschlussbuchsen-Implementierung, die in der Konfiguration 1015 gezeigt ist, ist nicht jede Anschlussbuchse direkt miteinander durch eine HPI-Verbindung verbunden. Wenn jedoch ein virtueller Pfad zwischen den Prozessoren existiert, wird die Konfiguration unterstützt. Ein Bereich von unterstützten Prozessoren umfasst 2-32 in einer nativen Domäne. Eine höhere Anzahl von Prozessoren kann durch die Verwendung von mehreren Domänen oder anderen Zwischenverbindungen zwischen Knotensteuereinheiten erreicht werden.
  • Die HPI-Architektur umfasst eine Definition einer geschichteten Protokollarchitektur, die zu PCIe insofern ähnlich ist, als sie auch eine geschichtete Protokollarchitektur umfasst. In einer Ausführungsform definiert HPI Protokollschichten (kohärente, nicht kohärente und wahlweise andere Protokolle auf Arbeitsspeicherbasis), eine Leitweglenkungsschicht, eine Verbindungsschicht und eine Bitübertragungsschicht. Wie viele andere Zwischenverbindungsarchitekturen umfasst HPI Verbesserungen in Bezug auf Leistungsmanager, Entwurf für Test und Fehlersuche (DFT), Fehlerbehandlung, Register, Sicherheit usw.
  • 11 stellt eine Ausführungsform von potentiellen Schichten in dem geschichteten HPI-Protokollstapel dar; diese Schichten sind jedoch nicht erforderlich und können in einigen Implementierungen optional sein. Jede Schicht behandelt ihr eigenes Granularitätsniveau oder ihre eigene Informationsmenge (die Protokollschicht 1105a,b Pakete 1130, die Verbindungsschicht 1110a,b Flits 1135 und die Bitübertragungsschicht 1105a,b Phits 1140). Es ist zu beachten, dass in einigen Ausführungsformen ein Paket teilweise Flits, ein einzelnes Flit oder mehrere Flits auf der Basis der Implementierung umfassen kann.
  • Als erstes Beispiel umfasst eine Breite eines Phit 1140 eine 1-zu-1-Abbildung der Verbindungsbreite auf Bits (z. B. umfasst eine 20-Bit-Verbindungsbreite ein Phit von 20 Bits usw.). Flits können eine größere Größe aufweisen, wie z. B. 184, 192 oder 200 Bits. Es ist zu beachten, dass, wenn ein Phit 1140 20 Bits breit ist und die Größe des Flits 1135 184 Bits ist, dann es eine Bruchzahl von Phits 1140 erfordert, um ein Flit 1135 zu übertragen (z. B. 9,2 Phits bei 20 Bits, um ein 184-Bit-Flit 1135 zu übertragen, oder 9,6 bei 20 Bits, um ein 192-Bit-Flit zu übertragen). Es ist zu beachten, dass die Breiten der grundlegenden Verbindung auf der Bitübertragungsschicht variieren können. Die Anzahl von Bahnen pro Richtung können beispielsweise 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. umfassen. In einer Ausführungsform ist die Verbindungsschicht 1110a,b in der Lage, mehrere Stücke von verschiedenen Transaktionen in ein einzelnes Flit einzubetten, und innerhalb des Flits können mehrere Köpfe (z. B. 1, 2, 3, 4) innerhalb des Flit eingebettet sein. Hier teilt HPI die Köpfe in entsprechende Schlitze auf, um mehrere Nachrichten im Flit zu ermöglichen, die für verschiedene Knoten bestimmt sind.
  • Die Bitübertragungsschicht 1105a,b ist in einer Ausführungsform für die schnelle Übertragung von Informationen auf dem physikalischen Medium (elektrisch oder optisch usw.) verantwortlich. Die physikalische Verbindung ist ein Punkt-zu-Punkt zwischen zwei Verbindungsschichtentitäten wie z. B. Schicht 1105a und 1105b. Die Verbindungsschicht 1110a,b abstrahiert die Bitübertragungsschicht 1105a,b von den oberen Schichten und schafft die Fähigkeit, Daten (sowie Anforderungen) zuverlässig zu übertragen und die Flusssteuerung zwischen zwei direkt verbundenen Entitäten zu managen. Sie ist auch für die Virtualisierung des physikalischen Kanals in mehrere virtuelle Kanäle und Nachrichtenklassen verantwortlich. Die Protokollschicht 1120a,b beruht auf der Verbindungsschicht 1110a,b, um Protokollnachrichten in die geeigneten Nachrichtenklassen und virtuellen Kanäle abzubilden, bevor sie zur Bitübertragungsschicht 1105a,b für die Übertragung über die physikalischen Verbindungen übergeben werden. Die Verbindungsschicht 1110a,b kann mehrere Nachrichten wie z. B. Anforderung, Spionage, Antwort, Zurückschreiben, nicht kohärente Daten usw. unterstützen.
  • In einer Ausführungsform werden, um eine zyklische Redundanzprüfung (CRC) mit zuverlässiger Übertragung zu schaffen, Fehlerprüf- und Wiedergewinnungsprozeduren durch die Verbindungsschicht 1110a,b bereitgestellt, um die Effekte von Routinebitfehlern zu isolieren, die auf der physikalischen Zwischenverbindung auftreten. Die Verbindungsschicht 1110a erzeugt die CRC am Sender und prüft an der Empfängerverbindungsschicht 1110b.
  • In einigen Implementierungen verwendet die Verbindungsschicht 1110a,b ein Kreditschema für die Flusssteuerung. Während der Initialisierung wird einem Sender eine festgelegte Anzahl von Krediten gegeben, um Pakete oder Flits zu einem Empfänger zu senden. Sobald ein Paket oder Flit zum Empfänger gesendet wird, dekrementiert der Sender seine Kreditzähler um einen Kredit, der entweder ein Paket oder ein Flit darstellt, in Abhängigkeit vom Typ von verwendetem virtuellem Netz. Sobald ein Puffer am Empfänger befreit wird, wird ein Kredit zum Sender für diesen Puffertyp zurückgegeben. Wenn die Kredite des Senders für einen gegebenen Kanal erschöpft wurden, stoppt er in einer Ausführungsform das Senden von irgendwelchen Flits in diesem Kanal. Im Wesentlichen werden Kredite zurückgegeben, nachdem der Empfänger die Informationen verbraucht und die geeigneten Puffer befreit hat.
  • In einer Ausführungsform stellt die Leitweglenkungsschicht 1115a,b eine flexible und verteilte Weise bereit, um Pakete von einer Quelle zu einem Ziel zu lenken. In einigen Plattformtypen (beispielsweise Uniprozessor- und Dualprozessor-Systemen) kann diese Schicht nicht explizit sein, sondern könnte ein Teil der Verbindungsschicht 1110a,b sein; in einem solchen Fall ist diese Schicht optional. Sie beruht auf dem virtuellen Netz und der Nachrichtenklassenabstraktion, die durch die Verbindungsschicht 1110a,b als Teil der Funktion bereitgestellt wird, um zu bestimmen, wie die Pakete zu lenken sind. Die Leitweglenkungsfunktion ist in einer Implementierung durch implementierungsspezifische Leitweglenkungstabellen definiert. Eine solche Definition ermöglicht eine Vielfalt von Verwendungsmodellen.
  • In einer Ausführungsform implementiert die Protokollschicht 1120a,b die Kommunikationsprotokolle, Ordnungsregel und Kohärenzaufrechterhaltung, E/A, Unterbrechungen und andere Kommunikation höherer Ebene. Es ist zu beachten, dass die Protokollschicht 1120a,b in einer Implementierung Nachrichten bereitstellt, um Leistungszustände für Komponenten und das System zu verhandeln. Als potentieller Zusatz kann die Bitübertragungsschicht 1105a,b auch unabhängig oder in Verbindung Leistungszustände der individuellen Verbindungen festlegen.
  • Mehrere Agenten können mit einer HPI-Architektur verbunden sein, wie z. B. ein Heimagent (ordnet Anforderungen an den Arbeitsspeicher), Caching (gibt Anforderungen an den kohärenten Arbeitsspeicher aus und antwortet auf Spionagen), Konfiguration (behandelt Konfigurationstransaktionen), Unterbrechung (verarbeitet Unterbrechungen), veraltet (behandelt veraltete Transaktionen), nicht kohärent (behandelt nicht kohärente Transaktionen) und andere. Eine speziellere Erörterung der Schichten für HPI wird nachstehend erörtert.
  • Ein Überblick über einige potentielle Merkmale von HPI umfasst: keine Verwendung von Vorzuweisung an Heimknoten; keine Ordnungsanforderungen für eine Anzahl von Nachrichtenklassen; Packen von mehreren Nachrichten in ein einzelnes Flit (Protokollkopf) (d. h. ein gepacktes Flit, das mehrere Nachrichten in definierten Schlitzen halten kann); eine breite Verbindung, die von 4, 8, 111, 20 oder mehr Bahnen skalieren kann; ein großes Fehlerprüfschema, das 8, 16, 32 oder nicht weniger als 64 Bits für den Fehlerschutz verwenden kann; und Verwendung eines eingebetteten Taktschemas.
  • HPI-Bitübertragungsschicht
  • Die Bitübertragungsschicht 1105a,b (oder PHY) von HPI liegt über der elektrischen Schicht (d. h. elektrische Leiter, die zwei Komponenten verbinden) und unter der Verbindungsschicht 1110a,b, wie in 11 dargestellt. Die Bitübertragungsschicht befindet sich an jedem Agenten und verbindet die Verbindungsschichten an zwei Agenten (A und B), die voneinander getrennt sind. Die lokalen und entfernten elektrischen Schichten sind durch physikalische Medien (z. B. Drähte, Leiter, optisch usw.) verbunden. Die Bitübertragungsschicht 1105a,b weist in einer Ausführungsform zwei Hauptphasen auf, Initialisierung und Betrieb. Während der Initialisierung ist die Verbindung für die Verbindungsschicht undurchsichtig und das Signalisieren kann eine Kombination von zeitlich gesteuerten Zuständen und Quittungsaustauschereignissen beinhalten. Während des Betriebs ist die Verbindung für die Verbindungsschicht transparent und die Signalisierung findet mit einer Geschwindigkeit statt, mit der alle Bahnen als einzige Verbindung zusammenarbeiten. Während der Betriebsphase transportiert die Bitübertragungsschicht Flits vom Agenten A zum Agenten B und vom Agenten B zum Agenten A. Die Verbindung wird auch als Link bezeichnet und abstrahiert einige physikalische Aspekte, einschließlich Medien, Breite und Geschwindigkeit von den Verbindungsschichten, während Flits und/oder Steuerung/Status der aktuellen Konfiguration (z. B. Breite) mit der Verbindungsschicht ausgetauscht werden. Die Initialisierungsphase umfasst unbedeutende Phasen, z. B. Abfrage, Konfiguration. Die Betriebsphase umfasst auch unbedeutende Phasen (Z. B. Verbindungsleistungsmanagementzustände) .
  • In einer Ausführungsform soll die Bitübertragungsschicht 1105a,b auch: eine Zuverlässigkeits/Fehlernorm erfüllen, einen Ausfall einer Bahn auf einer Verbindung tolerieren und zu einem Bruchteil von nominaler Breite gehen, einzelne Ausfälle in entgegengesetzter Richtung einer Verbindung tolerieren, heißes Hinzufügen/Entfernen unterstützen, PHY-Ports aktivieren/deaktivieren, Initialisierungsversuche einer Zeitüberschreitung unterziehen, wenn die Anzahl von Versuchen einen festgelegten Schwellenwert überschritten hat, usw.
  • In einer Ausführungsform verwendet HPI ein Rotationsbitmuster. Wenn beispielsweise eine Flitgröße nicht auf mehrere der Bahnen in einer HPI-Verbindung ausgerichtet ist, kann das Flit nicht in einem ganzzahligen Vielfachen von Übertragungen über die Bahnen gesendet werden (z. B. ist ein 192-Bit-Flit kein sauberes Vielfaches einer beispielhaften Verbindung mit 20 Bahnen. Somit können bei x20 Flits verschachtelt werden, um das Verschwenden von Bandbreite zu vermeiden (d. h. Senden eines teilweisen Flit an einem gewissen Punkt ohne Verwendung des Rests der Bahnen). Die Verschachtelung wird in einer Ausführungsform bestimmt, um die Latenz von Schlüsselfeldern und Multiplexern im Sender (Tx) und Empfänger (Rx) zu optimieren. Die bestimmte Strukturierung schafft potentiell auch einen sauberen und schnellen Übergang zu/von einer kleineren Breite (z. B. x8) und einen nahtlosen Betrieb mit der neuen Breite.
  • In einer Ausführungsform verwendet HPI einen eingebetteten Takt, wie z. B. einen eingebetteten Takt mit 20 Bits oder einen eingebetteten Takt mit einer anderen Anzahl von Bits. Andere Hochleistungsschnittstellen können einen weitergeleiteten Takt oder anderen Takt für Rücksetzen im Band verwenden. Durch Einbetten des Takts in HPI verringert es potentiell die Kontaktbelegung. Die Verwendung eines eingebetteten Takts kann jedoch in einigen Implementierungen dazu führen, dass andere Geräte und Verfahren das Rücksetzen im Band bearbeiten. Als erstes Beispiel wird ein blockierender Verbindungszustand, um die Verbindungs-Flit-Übertragung fernzuhalten und die PHY-Verwendung zu ermöglichen (nachstehend im Anhang A genauer beschrieben), nach der Initialisierung verwendet. Als zweites Beispiel können elektrische geordnete Sätze wie z. B. ein elektrisch inaktiver geordneter Satz (EIOS) während der Initialisierung verwendet werden.
  • In einer Ausführungsform ist HPI in der Lage, eine erste Bitbreitenrichtung ohne weitergeleiteten Takt und eine zweite, kleinere Bitbreitenverbindung für Leistungsmanagement zu verwenden. Als Beispiel umfasst HPI einen teilweisen Verbindungsbreitenübertragungszustand, wobei eine teilweise Breite verwendet wird (z. B. eine volle x20-Breite und eine teilweise x8-Breite); die Breiten sind jedoch rein erläuternd und können sich unterscheiden. Die PHY kann hier das Teilbreitenleistungsmanagement ohne Verbindungsschichtunterstützung oder Verbindungsschichteingriff handhaben. In einer Ausführungsform wird ein Protokoll mit blockierendem Verbindungszustand (BLS) verwendet, um in den Teilbreitenübertragungszustand (PWTS) einzutreten. Der PWTS-Austritt kann in einer oder mehreren Implementierungen das BLS-Protokoll oder Rauschsperrenbruchdetektion verwenden. Aufgrund der Abwesenheit eines weitergeleiteten Takts kann der PWTLS-Austritt eine erneute Entzerrung umfassen, die den Determinismus der Verbindung aufrechterhält.
  • In einer Ausführungsform verwendet HPI Tx-Anpassung. Als Beispiel wird ein Rückschleifenzustand und Hardware für die Tx-Anpassung verwendet. Als Beispiel ist HPI in der Lage, tatsächliche Bitfehler zu zählen; dies kann durch Injizieren von spezialisierten Mustern durchgeführt werden können. Folglich sollte HPI bessere elektrische Toleranzen bei niedrigerer Leistung erhalten können. Wenn der Rückschleifenzustand verwendet wird, kann eine Richtung als Hardware-Rückkanal verwendet werden, wobei Metriken als Teil von Trainingssequenznutzinformationen (TS-Nutzinformationen) gesendet werden.
  • In einer Ausführungsform kann HPI Latenzfixierung bereitstellen, ohne Synchronisationszählerwerte in einem TS auszutauschen. Eine andere Zwischenverbindung kann Latenzfixierung auf der Basis eines solchen Austauschs eines Synchronisationszählerwerts in jedem TS durchführen. Hier kann HPI periodisch wiederkehrende „Electrically Idle Exit Ordered Sets“ (EIEOS) als Proxy für den Synchronisationszählerwert durch Ausrichten des EIEOS auf den Synchronisationszähler verwenden. Dies spart potentiell TS-Nutzinformationsraum, entfernt Aliasing und DC-Gleichgewichtsbelange sowie es die Berechnung der hinzuzufügenden Latenz vereinfacht.
  • In einer Ausführungsform stellt HPI Software- und Zeitgebersteuerung von Verbindungszustandsmaschinenübergängen bereit. Eine andere Zwischenverbindung kann ein Semaphor (Haltebit) unterstützen, das durch die Hardware beim Eintritt in einen Initialisierungszustand gesetzt wird. Der Austritt aus dem Zustand findet statt, wenn das Haltebit durch Software gelöscht wird. HPI ermöglicht in einer Implementierung, dass die Software diesen Typ von Mechanismus für den Eintritt in einen Übertragungsverbindungszustand oder Rückschleifenmusterzustand steuert. In einer Ausführungsform ermöglicht HPI, dass der Austritt aus Quittungsaustauschzuständen auf einer durch Software programmierbaren Zeitüberschreitung nach dem Quittungsaustausch basiert, was potentiell die Test-Software leichter macht.
  • In einer Ausführungsform verwendet HPI eine „Pseudo Random Bit Sequence“-Verwürfelung (PRBS-Verwürfelung) von TS. Als Beispiel wird eine 23-Bit-PRBS verwendet (PRBS23). In einer Ausführungsform wird die PRBS durch ein selbstgesetztes Speicherelement mit ähnlicher Bitgröße wie z. B. ein Schieberegister mit linearer Rückkopplung erzeugt. Als ein Beispiel kann ein festes UI-Muster verwendet werden, um mit einer Umgehung zu einem Anpassungszustand zu verwürfeln. Aber durch Verwürfeln von TS mit PRBS23 kann eine Rx-Anpassung ohne die Umgehung durchgeführt werden. Außerdem können Versatz und andere Fehler während der Taktrückgewinnung und Abtastung verringert werden. Die HPI-Methode beruht auf der Verwendung von Fibonacci-LFSRs, die während spezieller Teile des TS selbst gesetzt werden können.
  • In einer Ausführungsform unterstützt HPI einen emulierten langsamen Modus ohne Änderung der PLL-Taktfrequenz. Einige Entwürfe können separate PLLs für langsame und schnelle Geschwindigkeit verwenden. Dennoch verwendet in einer Implementierung HPI den emulierten langsamen Modus (d. h. der PLL-Takt läuft mit schneller Geschwindigkeit; TX wiederholt Bits mehrere Male; RX überabtastet, um Flanken aufzufinden und das Bit zu identifizieren.) Dies bedeutet, dass Ports, die sich einen PLL teilen, bei langsamen und schnellen Geschwindigkeiten koexistieren können. In einem Beispiel, in dem das Vielfache ein ganzzahliges Verhältnis der schnellen Geschwindigkeit zur langsamen Geschwindigkeit ist, können verschiedene schnelle Geschwindigkeiten mit derselben langsamen Geschwindigkeit arbeiten, die während der Entdeckungsphase von heißer Befestigung verwendet werden können.
  • In einer Ausführungsform unterstützt HPI eine gemeinsame Frequenz des langsamen Modus für heiße Befestigung. Der emulierte langsame Modus, wie vorstehend beschrieben, ermöglicht, dass HPI-Ports, die sich einen PLL teilen, mit langsamen und schnellen Geschwindigkeiten koexistieren. Wenn ein Konstrukteur das Emulationsvielfache als ganzzahliges Verhältnis der schnellen Geschwindigkeit zur langsamen Geschwindigkeit festlegt, dann können verschiedene schnelle Geschwindigkeiten mit derselben langsamen Geschwindigkeit arbeiten. Somit können zwei Agenten, die mindestens eine gemeinsame Frequenz unterstützen, ungeachtet der Geschwindigkeit, mit der der Host-Port läuft, heiß befestigt sein. Die Software-Entdeckung kann dann die Zwischenverbindung im langsamen Modus verwenden, um die optimalsten Verbindungsgeschwindigkeiten zu identifizieren und einzurichten.
  • In einer Ausführungsform unterstützt HPI die erneute Initialisierung der Verbindung ohne Abschlussänderungen. Man könnte eine erneute Initialisierung an einem Rücksetzen im Band mit Taktbahnabschlüssen vorsehen, die für den Entdeckungsprozess geändert werden, der in Zuverlässigkeit, Verfügbarkeit und Brauchbarkeit (RAS) verwendet wird. In einer Ausführungsform kann die erneute Initialisierung für HPI durchgeführt werden, ohne die Abschlusswerte zu ändern, wenn HPI ein RX-Screening einer eingehenden Signalisierung umfasst, um gute Bahnen zu identifizieren.
  • In einer Ausführungsform unterstützt HPI einen robusten Eintritt in den leistungsarmen Verbindungszustand (LPLS). Als Beispiel kann HPI ein minimales Verweilen im LPLS umfassen (d. h. eine minimale Menge an Zeit, UI, Zählerwert usw., die eine Verbindung im LPLS vor einem Austritt bleibt). Alternativ kann der LPLS-Eintritt verhandelt werden und dann ein Rücksetzen im Band verwenden, um in den LPLS einzutreten. Dies kann jedoch ein tatsächliches Rücksetzen im Band maskieren, das in einigen Fällen vom zweiten Agenten stammt. HPI ermöglicht in einigen Implementierungen, dass ein erster Agent in den LPLS eintritt und ein zweiter Agent in Rücksetzen eintritt. Der erste Agent reagiert nicht für eine Zeitdauer (d. h. das minimale Verweilen), was ermöglicht, dass der zweite Agent das Rücksetzen vollendet und dann den ersten Agenten aufweckt, was einen viel effizienteren, robusteren Eintritt in den LPLS ermöglicht.
  • In einer Ausführungsform unterstützt HPI Merkmale wie z. B. Entprelldetektion, Aufwecken und kontinuierliches Screening auf Bahnausfälle. HPI kann nach einem festgelegten Signalisierungsmuster für eine verlängerte Zeitdauer suchen, um ein gültiges Aufwecken von einem LPLS zu detektieren, wobei folglich die Möglichkeiten eines störenden Aufweckens verringert werden. Dieselbe Hardware kann auch im Hintergrund für das kontinuierliche Screening auf schlechte Bahnen während des Initialisierungsprozesses verwendet werden, was für ein robusteres RAS-Merkmal sorgt.
  • In einer Ausführungsform unterstützt HPI einen deterministischen Austritt für Verriegelungsschritt- und Neustartwiederholung. In HPI können einige TS-Grenzen mit Flit-Grenzen übereinstimmen, wenn mit voller Breite gearbeitet wird. Somit kann HPI die Austrittsgrenzen identifizieren und festlegen, so dass das Verriegelungsschrittverhalten mit einer anderen Verbindung aufrechterhalten werden kann. Außerdem kann HPI Zeitgeber festlegen, die verwendet werden können, um den Verriegelungsschritt mit einem Verbindungspaar aufrechtzuerhalten. Nach der Initialisierung kann HPI auch den Betrieb mit Rücksetzungen im Band unterstützen, die deaktiviert sind, um einige Geschmäcker des Verriegelungsschrittbetriebs zu unterstützen.
  • In einer Ausführungsform unterstützt HPI die Verwendung eines TS-Kopfs anstelle von Nutzinformationen für Schlüsselinitialisierungsparameter. Alternativ können TS-Nutzinformationen verwendet werden, um Initialisierungsparameter wie ACKs und Bahnnummern auszutauschen. Und DC-Pegel für die Kommunikation der Bahnpolarität können auch verwendet werden. Dennoch kann HPI DC-ausgeglichene Codes im TS-Kopf für Schlüsselparameter verwenden. Dies verringert potentiell die Anzahl von Bytes, die für Nutzinformationen erforderlich sind, und ermöglicht potentiell, dass ein ganzes PRBS23-Muster für das Verwürfeln von TS verwendet wird, was den Bedarf am DC-Ausgleich des TS verringert.
  • In einer Ausführungsform unterstützt HPI Messungen, um die Rauschimmunität von aktiven Bahnen während des Teilbreitenübertragungsverbindungszustands-Eintritts/Austritts (PWTLS-Eintritts/Austritts) von inaktiven Bahnen zu erhöhen. In einer Ausführungsform können Null-Flits (oder andere nicht wiederholbare Flits) um den Breitenänderungspunkt verwendet werden, um die Rauschimmunität von aktiven Bahnen zu erhöhen. Außerdem kann HPI Null-Flits um den Start des PWTLS-Austritts verwenden (d. h. die Null-Flits können mit Daten-Flits unterbrochen werden). HPI kann auch eine spezialisierte Signalisierung verwenden, deren Format verändert werden kann, um Möglichkeiten von falschen Aufweckdetektionen zu verringern.
  • In einer Ausführungsform unterstützt HPI die Verwendung von spezialisierten Mustern während des PWTLS-Austritts, um eine nicht blockierende Entzerrung zu ermöglichen. Alternativ können inaktive Bahnen beim PWTLS-Austritt nicht entzerrt werden, da sie die Verzerrung mit Hilfe eines weitergeleiteten Takts aufrechterhalten können. Mit der Verwendung eines eingebetteten Takts kann HPI dennoch eine spezialisierte Signalisierung verwenden, deren Format verändert werden kann, um Möglichkeiten von falschen Aufweckdetektionen zu verringern und auch die Entzerrung ohne Blockieren des Flit-Flusses zu ermöglichen. Dies ermöglicht auch eine robustere RAS durch nahtloses Abschalten von ausfallenden Bahnen, erneute Anpassung von ihnen und Zurückbringen derselben online, ohne den Fluss von Flits zu blockieren.
  • In einer Ausführungsform unterstützt HPI den Eintritt in den leistungsarmen Verbindungszustand (LPLS) ohne Verbindungsschichtunterstützung und einen robusteren LPLS-Austritt. Alternativ kann die Verbindungsschichtverhandlung zwischen dem vorher festgelegten Master und Slave abhängen, um in den LPLS vom Übertragungsverbindungszustand (TLS) einzutreten. In HPI kann die PHY die Verhandlung unter Verwendung von Codes des blockierenden Verbindungszustandes (BLS) bearbeiten und kann beide Agenten, die Master oder Initiatoren sind, sowie den Eintritt in LPLS direkt vom PWTLS unterstützen. Der Austritt aus LPLS kann auf dem Entprellen eines Rauschsperrenbruchs unter Verwendung eines speziellen Musters, gefolgt vom Quittungsaustausch zwischen den zwei Seiten und einem durch Zeitüberschreitung induzierten Rücksetzen im Band basieren, wenn irgendeiner davon ausfällt.
  • In einer Ausführungsform unterstützt HPI das Steuern einer unproduktiven Schleife während der Initialisierung. Alternativ kann ein Ausfall der Initialisierung (z. B. Fehlen von guten Bahnen) zum erneuten Versuchen der Initialisierung zu viele Male führen, was potentiell Leistung verschwendet und schwierig zu korrigieren ist. In HPI kann das Verbindungspaar versuchen, eine festgelegte Anzahl von Malen zu initialisieren, bevor der Aufruf davon endet und in einem Rücksetzzustand abgeschaltet wird, wobei die Software Einstellungen durchführen kann, bevor die Initialisierung erneut versucht wird. Dies verbessert potentiell die RAS des Systems.
  • In einer Ausführungsform unterstützt HPI fortschrittliche IBIST-Optionen (eingebaute Zwischenverbindungsselbsttest-Optionen). In einer Ausführungsform kann ein Mustergenerator verwendet werden, der zwei nicht korrelierte PRBS23-Muster mit maximaler Länge für irgendeinen Stift ermöglicht. In einer Ausführungsform kann HPI vier solche Muster unterstützen sowie die Fähigkeit bereitstellen können, die Länge dieser Muster zu steuern (d. h. dynamisch das Testmuster, die PRBS23-Länge zu verändern).
  • In einer Ausführungsform schafft HPI eine fortschrittliche Logik, um Bahnen zu entzerren. Als Beispiel kann die TS-Grenze nach der TS-Verriegelung verwendet werden, um die Bahnen zu entzerren. Außerdem kann HPI durch Vergleichen von Bahn-PRBS-Mustern im LFSR während spezieller Punkte in den Nutzinformationen entzerren. Eine solche Entzerrung könnte in Testchips nützlich sein, denen die Fähigkeit fehlen kann, TS oder Zustandsmaschinen zu detektieren, um die Entzerrung zu managen.
  • In einer Ausführungsform findet der Austritt aus der Initialisierung zur Verbindungsübertragung an einer TS-Grenze mit Planetenausrichtung statt. Außerdem kann HPI eine verhandelte Verzögerung von diesem Punkt unterstützen. Außerdem kann die Reihenfolge des Austritts zwischen den zwei Richtungen unter Verwendung einer Master-Slave-Bestimmung gesteuert werden, die eine anstelle von zwei Planetenausrichtungssteuerungen für das Verbindungspaar ermöglicht.
  • Einige Implementierungen verwenden ein festes 128UI-Muster, um TS zu verwürfeln. Andere verwenden eine feste 4k PRBS23, um TS zu verwürfeln. HPI ermöglicht in einer Ausführungsform die Verwendung von PRBS mit irgendeiner Länge, einschließlich einer ganzen (8M-1) PRBS23-Sequenz.
  • In einigen Architekturen ist die Anpassung von fester Dauer. In einer Ausführungsform ist der Austritt von der Anpassung vielmehr mit Quittungsaustausch als zeitgesteuert. Dies bedeutet, dass Anpassungszeiten zwischen den zwei Richtungen asymmetrisch und solange wie durch eine Seite erforderlich sein können.
  • In einer Ausführungsform kann eine Zustandsmaschine Zustände umgehen, falls diese Zustandshandlungen nicht erneut durchgeführt werden müssen. Dies kann jedoch zu komplexeren Entwürfen und Validierungsausbrüchen führen. HPI verwendet keine Umgehungen - stattdessen trägt sie zu Handlungen bei, so dass kurze Zeitgeber in jedem Zustand verwendet werden können, um die Handlungen durchzuführen, und Umgehungen werden vermieden. Dies sorgt potentiell für gleichmäßigere und synchronisierte Zustandsmaschinenübergänge.
  • In einigen Architekturen wird ein weitergeleiteter Takt für Rücksetzen im Band und eine Verbindungsschicht zum Austragen von Teilbreitenübertragung und für den leistungsarmen Verbindungseintritt verwendet. HPI verwendet zu Blockverbindungszustandscodes ähnliche Funktionen. Diese Codes könnten potentiell Bitfehler aufweisen, die zu „Fehlanpassungen“ am Rx führen. HPI umfasst ein Protokoll zum Behandeln von Fehlanpassungen sowie Mittel, um asynchrones Rücksetzen, einen leistungsarmem Verbindungszustand und Teilbreitenverbindungszustandsanforderungen zu handhaben.
  • In einer Ausführungsform wird ein 128-UI-Verwürfler für Rückschleifen-TS verwendet. Dies kann jedoch zu Aliasing für TS-Verriegelung führen, wenn die Rückschleife beginnt; somit ändert eine gewisse Architektur die Nutzinformationen auf lauter 0-en währenddessen. In einer anderen Ausführungsform verwendet HPI gleichmäßige Nutzinformationen und verwendet den periodisch auftretenden unverwürfelten EIEOS für TS-Verriegelung.
  • Eine gewisse Architektur verwendet eine verwürfelte TS während der Initialisierung. In einer Ausführungsform definiert HPI Supersequenzen, die Kombinationen von verwürfelter TS mit verschiedenen Längen und unverwürfeltem EIEOS sind. Dies ermöglicht randomisiertere Übergänge während der Initialisierung und vereinfacht auch die TS-Verriegelung, Latenzfixierung und andere Handlungen.
  • HPI-Verbindungsschicht
  • Mit Rückkehr zu 11 ist eine Ausführungsform eines logischen Blocks für die Verbindungsschicht 1110a,b dargestellt. In einer Ausführungsform garantiert die Verbindungsschicht 1110a,b eine zuverlässige Datenübertragung zwischen zwei Protokoll- oder Leitweglenkungsentitäten. Sie abstrahiert die Bitübertragungsschicht 1105a,b von der Protokollschicht 1120a,b, ist für die Flusssteuerung zwischen zwei Protokollagenten (A, B) verantwortlich und schafft virtuelle Kanaldienste für die Protokollschicht (Nachrichtenklassen) und Leitweglenkungsschicht (virtuelle Netze). Die Schnittstelle zwischen der Protokollschicht 1120a,b und der Verbindungsschicht 1110a,b liegt typischerweise auf der Paketebene. In einer Ausführungsform wird die kleinste Übertragungseinheit auf der Verbindungsschicht als Flit bezeichnet, das eine festgelegte Anzahl von Bits wie z. B. 192 ist. Die Verbindungsschicht 1110a,b beruht auf der Bitübertragungsschicht 1105a,b, um die Übertragungseinheit (Phit) der Bitübertragungsschicht 1105a,b in die Übertragungseinheit (Flit) der Verbindungsschicht 1110a,b zu rahmen. Außerdem kann die Verbindungsschicht 1110a,b logisch in zwei Teile aufgeteilt werden, einen Sender und einen Empfänger. Ein Sender/Empfänger-Paar an einer Entität kann mit einem Empfänger/Sender-Paar an einer anderen Entität verbunden sein. Die Flusssteuerung wird häufig sowohl auf einer Flit- als auch Paketbasis durchgeführt. Fehlerdetektion und Fehlerkorrektur werden auch potentiell auf einer Flit-Ebenenbasis durchgeführt.
  • In einer Ausführungsform sind Flits erweiterte 192 Bits. Irgendein Bereich von Bits wie z. B. 81-256 (oder mehr) kann jedoch in verschiedenen Variationen verwendet werden. Hier wird das CRC-Feld auch erhöht (z. B. 16 Bits), um größere Nutzinformationen zu handhaben.
  • In einer Ausführungsform sind TIDs (Transaktions-IDs) 11 Bits lang. Folglich kann eine Vorzuweisung und das Ermöglichen von verteilten Heimagenten entfernt werden. Ferner ermöglicht die Verwendung von 11 Bits in einigen Implementierungen, dass die TID verwendet wird, ohne einen erweiterten TID-Modus verwenden zu müssen.
  • In einer Ausführungsform werden Kopf-Flits in 3 Schlitze unterteilt, 2 mit gleicher Größe (Schlitze 0 und 1) und einen anderen kleineren Schlitz (Schlitz 2). Ein schwebendes Feld kann für einen von Schlitz 0 oder 1 zur Verwendung verfügbar sein. Die Nachrichten, die den Schlitz 1 und 2 verwenden können, werden optimiert, was die Anzahl von Bits verringert, die erforderlich sind, um diese Operationscodes der Schlitze zu codieren. Wenn ein Kopf, der mehr Bits benötigt, als der Schlitz 0 bereitstellt, in die Verbindungsschicht eintritt, sind Schlitzalgorithmen vorhanden, um zu ermöglichen, dass er Nutzinformationsbits des Schlitzes 1 für zusätzlichen Raum übernimmt. Spezielle Steuer-Flits (z. B. LLCTRL-Flits) können den Wert von Bits aller 3 Schlitze für ihre Bedürfnisse verbrauchen. Schlitzalgorithmen können auch existieren, um zu ermöglichen, dass individuelle Schlitze verwendet werden, während andere Schlitze keine Informationen tragen, für Fälle, in denen die Verbindung teilweise belegt ist. Eine andere Zwischenverbindung kann eine einzelne Nachricht pro Flit anstelle von mehreren ermöglichen. Die Bemessung der Schlitze innerhalb des Flit und die Typen von Nachrichten, die in jedem Schlitz angeordnet werden können, schaffen potentiell die erhöhte Bandbreite von HPI selbst mit einer verringerten Flit-Rate. Für eine ausführlichere Beschreibung von Flits und des Kopfs mit mehreren Schlitzen siehe den Flit-Definitionsabschnitt von Anhang B.
  • In HPI kann eine große CRC-Grundlinie die Fehlerdetektion verbessern. Ein 16-Bit-CRC wird beispielsweise verwendet. Infolge des größeren CRC können größere Nutzinformationen auch verwendet werden. Die 16 Bits des CRC in Kombination mit einem Polynom, das bei jenen Bits verwendet wird, verbessert die Fehlerdetektion. Als Beispiel gibt es eine minimale Anzahl von Gattern, um 1) 1-4 Bitfehler detektiert, 2) Fehler von Burstlänge 16 oder weniger werden detektiert, bereitzustellen.
  • In einer Ausführungsform wird ein rollender CRC auf der Basis von zwei CRC-16-Gleichungen verwendet. Zwei 16-Bit-Polynome können verwendet werden, das Polynom von HPI CRC-16 und ein zweites Polynom. Das zweite Polynom weist die kleinste Anzahl von zu implementierenden Gattern auf, während die Eigenschaften von 1) alle 1-7 Bitfehler detektiert 2) Burst-Schutz pro Bahn in x8-Verbindungsbreiten 3) alle Fehler von Burst-Länge 16 oder weniger werden detektiert, beibehalten werden.
  • In einer Ausführungsform wird eine verringerte maximale Flit-Rate (9,6 gegenüber 4 UI) verwendet, aber ein erhöhter Durchsatz der Verbindung wird erhalten. Infolge der erhöhten Flit-Größe wird eine Einführung von mehreren Schlitzen pro Flit, optimierter Nutzung von Nutzinformationsbits (geänderte Algorithmen, um selten verwendete Felder zu entfernen oder zu verlagern), mehr Zwischenverbindungseffizienz erreicht.
  • In einer Ausführungsform umfasst ein Teil der Unterstützung für 3 Schlitze ein 192-Bit-Flit. Das schwebende Feld ermöglicht 11 zusätzliche Bits von Nutzinformationen für entweder Schlitz 0 oder Schlitz 1. Es ist zu beachten, dass, wenn ein größeres Flit verwendet wird, mehr schwebende Bits verwendet werden können. Und als Folgesatz, wenn ein kleineres Flit verwendet wird, dann werden weniger schwebende Bits bereitgestellt. Durch Ermöglichen, dass ein Feld zwischen den zwei Schlitzen schwebt, können wir die zusätzlichen Bits bereitstellen, die für bestimmte Nachrichten erforderlich sind, während es immer noch innerhalb 192 Bits bleibt und die Nutzung der Bandbreite maximiert wird. Alternativ kann die Bereitstellung eines HTID-Feldes mit 11 Bits für jeden Schlitz zusätzliche 11 Bits im Flit verwenden, die nicht so effizient genutzt werden würden.
  • Einige Zwischenverbindungen können einen „Viral“-Status in Protokollebenennachrichten und einen „Poison“-Status in Daten-Flits übertragen. In einer Ausführungsform werden HPI-Protokollebenennachrichten und der „Poison“-Status zu Steuer-Flits bewegt. Da diese Bits selten verwendet werden (nur im Fall von Fehlern), erhöht das Entfernen derselben aus den Protokollebenennachrichten potentiell die Flit-Nutzung. Das Injizieren derselben unter Verwendung von Steuer-Flits ermöglicht dennoch das Eindämmen der Fehler.
  • In einer Ausführungsform ermöglichen CRD- und ACK-Bits in einem Flit die Rückführung einer Anzahl von Krediten wie z. B. acht oder der Anzahl von Acks wie z. B. 8. Als Teil der vollständig codierten Kreditfelder werden diese Bits als Kredit[n] und Bestätigung[n] verwendet, wenn der Schlitz 2 als LLCRD codiert wird. Dies verbessert potentiell die Effizienz durch Ermöglichen, dass irgendein Flit die Anzahl von VNA-Krediten und die Anzahl von Bestätigungen unter Verwendung von insgesamt nur 2 Bits zurückgibt, aber auch Ermöglichen, dass ihre Definitionen konsistent bleiben, wenn eine vollständig codierte LLCRD-Rückführung verwendet wird.
  • In einer Ausführungsform VNA- gegenüber VN0/1-Codierung (spart Bits durch Ausrichten von Schlitzen auf dieselbe Codierung). Die Schlitze in einem Mehrschlitz-Kopf-Flit können auf nur VNA, nur VN0 oder nur VN1 ausgerichtet werden. Durch Erzwingen davon werden Bits pro Schlitz, die VN angeben, entfernt. Dies erhöht die Effizienz der Flit-Bit-Verwendung und ermöglicht potentiell eine Erweiterung von 10-Bit-TIDs auf 11-Bit-TIDs.
  • Einige Felder ermöglichen nur die Rückführung in Inkrementen von 1 (für VN0/1), 2/8/16 (für VNA) und 8 (für Bestätigung). Dies bedeutet, dass die Rückführung einer großen Anzahl von anhängigen Krediten oder Bestätigungen mehrere Rückführungsnachrichten verwenden kann. Es bedeutet auch, dass ungeradzahlige Rückführungswerte für VNA und Bestätigung festliegend als anhängige Akkumulation eines gleichmäßig dividierbaren Werts belassen werden können. HPI kann vollständig codierte Kredit- und Ack-Rückführungsfelder aufweisen, was ermöglicht, dass ein Agent alle akkumulierten Kredite oder Acks für eine Sammlung mit einer einzigen Nachricht zurückführt. Dies verbessert potentiell die Verbindungseffizienz und vereinfacht auch potentiell die Logikimplementierung (die Rückführungslogik kann vielmehr ein „klares“ Signal als einen vollen Abwärtszähler implementieren).
  • Leitweglenkungsschicht
  • In einer Ausführungsform schafft die Leitweglenkungsschicht 1115a,b ein flexibles und verteiltes Verfahren, um HPI-Transaktionen von einer Quelle zu einem Ziel zu leiten. Das Schema ist flexibel, da Leitweglenkungsalgorithmen für mehrere Topologien durch programmierbare Leitweglenkungstabellen an jedem Router festgelegt werden können (die Programmierung wird in einer Ausführungsform durch Firmware, Software oder eine Kombination davon durchgeführt). Die Leitweglenkungsfunktionalität kann verteilt sein; die Leitweglenkung kann durch eine Reihe von Leitweglenkungsschritten durchgeführt werden, wobei jeder Leitweglenkungsschritt durch einen Nachschlag einer Tabelle an entweder Quellen-, Zwischen- oder Ziel-Routern definiert ist. Der Nachschlag an einer Quelle kann verwendet werden, um ein HPI-Paket in das HPI-Gebilde zu injizieren. Der Nachschlag an einem Zwischen-Router kann verwendet werden, um ein HPI-Paket von einem Eingangs-Port zu einem Ausgangs-Port zu leiten. Der Nachschlag an einem Ziel-Port kann verwendet werden, um auf den Ziel-HPI-Protokollagenten abzuzielen. Es ist zu beachten, dass die Leitweglenkungsschicht in einigen Implementierungen dünn ist, da die Leitweglenkungstabellen und daher die Leitweglenkungsalgorithmen nicht durch die Spezifikation speziell definiert sind. Dies ermöglicht eine Vielfalt von Verwendungsmodellen, einschließlich dass flexible Plattformarchitekturtopologien durch die Systemimplementierung definiert werden. Die Leitweglenkungsschicht 1115a,b beruht auf der Verbindungsschicht 1110a,b für das Vorsehen der Verwendung von bis zu drei (oder mehr) virtuellen Netzen (VNs) - in einem Beispiel zwei blockierungsfreie VNs, VN0 und VN1 mit mehreren Nachrichtenklassen, die in jedem virtuellen Netz definiert sind. Ein geteiltes adaptives virtuelles Netz (VNA) kann in der Verbindungsschicht definiert sein, aber dieses adaptive Netz kann nicht direkt in Leitweglenkungskonzepten freiliegen, da jede Nachrichtenklasse und jedes VN zweckgebundene Ressourcen und garantierten Weiterleitungsfortschritt aufweisen kann.
  • Eine nicht erschöpfende beispielhafte Liste von Leitweglenkungsregeln umfasst: (1) (Nachrichtenklasseninvarianz): Ein ankommendes Paket, das zu einer speziellen Nachrichtenklasse gehört, kann auf einem ausgehenden HPI-Port/virtuellen Netz in derselben Nachrichtenklasse geleitet werden; (2) (Vermitteln) HPI-Plattformen können die Vermittlungstypen von „Speichern und Weiterleiten“ und „virtuellem Durchtrennen“ unterstützen. In einer anderen Ausführungsform kann HPI kein „Wurmloch“- oder „Schaltungs“-Vermitteln unterstützen. (3) (Zwischenverbindungsblockierungsfreiheit) HPI-Plattformen können nicht auf adaptiven Flüssen für blockierungsfreie Leitweglenkung beruhen. Mit Plattformen, die sowohl VN0 als auch VN1 verwenden, können die 2 VNs zusammen für blockierungsfreie Leitweglenkung verwendet werden; und (4) (VN0 für „Blatt“-Router). In HPI-Plattformen, die sowohl VN0 als auch VN1 verwenden können, ist es zulässig, VN0 für jene Komponenten zu verwenden, deren Router nicht durchleitend verwendet werden; das heißt eingehende Ports weisen HPI-Ziele auf, die an dieser Komponente enden. In einem solchen Fall können Pakete von verschiedenen VNs zu VN0 geleitet werden. Andere Regeln (beispielsweise Bewegung von Paketen zwischen VN0 und VN1) können durch einen von der Plattform abhängigen Leitweglenkungsalgorithmus gesteuert werden.
  • Leitweglenkungsschritt: Ein Leitweglenkungsschritt wird in einer Ausführungsform durch eine Leitweglenkungsfunktion (RF) und eine Auswahlfunktion (SF) bezeichnet. Die Leitweglenkungsfunktion kann als Eingaben einen HPI-Port, an dem ein Paket ankommt, und eine Ziel-Knoten-ID nehmen; sie ergibt dann als Ausgabe ein 2-Tupel - die HPI-Portnummer und das virtuelle Netz - dem die Pakete auf ihrem Weg zum Ziel folgen sollten. Es ist erlaubt, dass die Leitweglenkungsfunktion zusätzlich vom eingehenden virtuellen Netz abhängt. Ferner ist es mit einem Leitweglenkungsschritt erlaubt, mehrere Paare <Port-Nr., virtuelles Netz> zu ergeben. Die resultierenden Leitweglenkungsalgorithmen werden adaptiv genannt. In einem solchen Fall kann eine Auswahlfunktion SF ein einzelnes 2-Tupel auf der Basis von zusätzlichen Zustandsinformationen wählen, die der Router hat (beispielsweise kann mit adaptiven Leitweglenkungsalgorithmen die Wahl eines speziellen Ports eines virtuellen Netzes von lokalen Staubedingungen abhängen). Ein Leitweglenkungsschritt besteht in einer Ausführungsform aus dem Anwenden der Leitweglenkungsfunktion und dann der Auswahlfunktion, um das (die) 2-Tupel zu ergeben.
  • Router-Tabellenvereinfachungen: HPI-Plattformen können legale Teilmengen der virtuellen Netze implementieren. Solche Teilmengen vereinfachen die Größe der Leitweglenkungstabelle (verringern die Anzahl von Spalten), die der virtuellen Kanalpufferung und Kanalzuteilung am Router-Koppler zugeordnet ist. Diese Vereinfachungen können auf Kosten von Plattformflexibilität und Plattformmerkmalen erscheinen. VN0 und VN1 können blockierungsfreie Netze sein, die Blockierungsfreiheit entweder zusammen oder einzeln schaffen, in Abhängigkeit vom Verwendungsmodell, gewöhnlich mit minimalen virtuellen Kanalressourcen, die ihnen zugeordnet sind. Die flache Organisation der Leitweglenkungstabelle kann eine Größe umfassen, die der maximalen Anzahl von Knoten-IDs zugeordnet ist. Mit einer solchen Organisation kann die Leitweglenkungstabelle durch das Ziel-Knoten-ID-Feld indiziert werden und möglicherweise durch das Feld der ID des virtuellen Netzes. Die Tabellenorganisation kann auch hierarchisch gemacht werden, wobei das Ziel-Knoten-ID-Feld in mehrere Unterfelder unterteilt ist, was von der Implementierung abhängt. Mit einer Unterteilung in „lokale“ und „nicht lokale“ Teile wird beispielsweise der „nicht lokale“ Teil der Leitweglenkung vor der Leitweglenkung des „lokalen“ Teils vollendet. Der potentielle Vorteil der Verringerung der Tabellengröße an jedem Eingangs-Port erscheint auf die potentiellen Kosten, dass sie gezwungen wird, Knoten-IDs HPI-Komponenten in einer hierarchischen Weise zuzuweisen.
  • Leitweglenkungsalgorithmus: Ein Leitweglenkungsalgorithmus definiert in einer Ausführungsform den Satz von zulässigen Pfaden von einem Quellenmodul zu einem Zielmodul. Ein spezieller Pfad von der Quelle zum Ziel ist eine Teilmenge der zulässigen Pfade und wird als Reihe von Leitweglenkungsschritten erhalten, die vorstehend definiert sind, beginnend mit dem Router an der Quelle, durchlaufend durch null oder mehrere Zwischen-Router und endend mit dem Router am Ziel. Es ist zu beachten, dass, selbst wenn ein HPI-Gebilde mehrere physikalische Pfade von einer Quelle zu einem Ziel aufweisen kann, die erlaubten Pfade jene sind, die durch den Leitweglenkungsalgorithmus definiert werden.
  • HPI-Kohärenzprotokoll
  • In einer Ausführungsform ist das HPI-Kohärenzprotokoll in der Schicht 1120a,b enthalten, um Agenten-Cache-Zeilen von Daten vom Arbeitsspeicher zu unterstützen. Ein Agent, der Daten im Cache-Arbeitsspeicher ablegen will, kann das Kohärenzprotokoll verwenden, um die Zeilen von Daten zu lesen, um sie in seinen Cache zu laden. Ein Agent, der eine Zeile von Daten in seinem Cache modifizieren will, kann das Kohärenzprotokoll verwenden, um das Eigentum der Zeile zu erlangen, bevor die Daten modifiziert werden. Nach dem Modifizieren einer Zeile kann ein Agent Protokollanforderungen zum Halten derselben in seinem Cache folgen, bis er die Zeile entweder in den Arbeitsspeicher zurückschreibt oder die Zeile in eine Antwort an eine externe Anforderung einschließt. Schließlich kann ein Agent externe Anforderungen erfüllen, um eine Zeile in seinem Cache zu invalidieren. Das Protokoll stellt Kohärenz der Daten durch Vorgeben der Regeln, denen alle Cache-Agenten folgen können, sicher. Es schafft auch das Mittel, damit Agenten ohne Caches kohärent Arbeitsspeicherdaten lesen und schreiben.
  • Zwei Bedingungen können durchgesetzt werden, um Transaktionen unter Verwendung des HPI-Kohärenzprotokolls zu unterstützen. Erstens hält das Protokoll die Datenkonsistenz, als Beispiel auf einer Basis pro Adresse, unter Daten in Caches von Agenten und zwischen diesen Daten und den Daten im Arbeitsspeicher aufrecht. Informal kann sich die Datenkonsistenz auf jede gültige Zeile von Daten im Cache eines Agenten beziehen, die den aktuellsten Wert der Daten darstellt, und Daten, die in einem Kohärenzprotokollpaket übertragen werden, stellen den aktuellsten Wert der Daten zu dem Zeitpunkt dar, zu dem sie gesendet wurden. Wenn keine gültige Kopie der Daten in Caches oder in der Übertragung existiert, kann das Protokoll sicherstellen, dass sich der aktuellste Wert der Daten im Arbeitsspeicher befindet. Zweitens schafft das Protokoll gut definierte Bindungspunkte für Anforderungen. Bindungspunkte für Lesevorgänge können angeben, wenn die Daten verwendbar sind; und für Schreibvorgänge können sie angeben, wenn die geschriebenen Daten global beobachtbar sind und durch anschließende Lesevorgänge geladen werden. Das Protokoll kann diese Bindungspunkte für sowohl cachefähige als auch nicht cachefähige (UC) Anforderungen im kohärenten Arbeitsspeicherraum unterstützen.
  • Das HPI-Kohärenzprotokoll kann auch den Vorwärtsfortschritt von Kohärenzanforderungen sicherstellen, die durch einen Agenten an eine Adresse im kohärenten Arbeitsspeicherraum durchgeführt werden. Sicher können Transaktionen schließlich für den korrekten Systembetrieb erfüllt und zurückgezogen werden. Das HPI-Kohärenzprotokoll kann in einigen Ausführungsformen keine Vorstellung eines Neuversuchs zum Lösen von Ressourcenzuweisungskonflikten haben. Folglich kann das Protokoll selbst so definiert sein, dass es keine kreisförmigen Ressourcenabhängigkeiten enthält, und Implementierungen können in ihren Entwürfen achtgeben, um keine Abhängigkeiten einzuführen, die zu Blockierungen führen können. Außerdem kann das Protokoll angeben, wenn Entwürfe einen gerechten Zugriff auf Protokollressourcen schaffen können.
  • Logisch besteht das HPI-Kohärenzprotokoll in einer Ausführungsform aus drei Elementen: Kohärenzagenten (oder Cache-Agenten), Heimagenten und dem HPI-Zwischenverbindungsgebilde, das die Agenten verbindet. Kohärenzagenten und Heimagenten arbeiten zusammen, um Datenkonsistenz zu erreichen, durch Austauschen von Nachrichten über die Zwischenverbindung. Die Verbindungsschicht 1110a,b und ihre zugehörige Beschreibung schafft die Details der Zwischenverbindungsgebildes, einschließlich dessen, wie es die Anforderungen des Kohärenzprotokolls einhält, das hier erörtert wird. (Es kann angegeben werden, dass die Unterteilung in Kohärenzagenten und Heimagenten der Deutlichkeit dient. Ein Entwurf kann mehrere Agenten beider Typen innerhalb einer Anschlussbuchse enthalten oder sogar Agentenverhaltensweisen in eine einzelne Entwurfseinheit kombinieren.)
  • In einer Ausführungsform weist HPI keine Ressourcen eines Heimagenten vorher zu. Hier weist ein Empfangsagent, der eine Anforderung empfängt, eine Ressource zu, um sie zu verarbeiten. Ein Agent, der eine Anforderung sendet, weist Ressourcen für Antworten zu. In diesem Szenario kann HPI zwei allgemeinen Regeln hinsichtlich der Ressourcenzuweisung folgen. Erstens kann ein Agent, der eine Anforderung empfängt, für das Zuweisen der Ressource, um sie zu verarbeiten, verantwortlich sein. Zweitens kann ein Agent, der eine Anforderung erzeugt, für das Zuweisen von Ressourcen, um Antworten auf die Anforderungen zu verarbeiten, verantwortlich sein.
  • Die Zuweisung von Ressourcen kann sich auch auf HTID (zusammen mit RNID/RTID) in Spionageanforderungen erstrecken. Die potentielle Verringerung der Verwendung eines Heimagenten und von Weiterleitungsantworten, um Antworten an den Heimagenten (und Datenweiterleitung an den anfordernden Agenten) zu unterstützen.
  • In einer Ausführungsform werden Heimagentressourcen auch nicht vorher in Spionageanforderungen und Weiterleitungsantworten zugewiesen, um Antworten an den Heimagenten (und Datenweiterleitung an den anfordernden Agenten) zu unterstützen.
  • In einer Ausführungsform besteht keine Vorzuweisung von Heimressourcenfähigkeit, um CmpO „früh“ zu senden, bevor der Heimagent mit der Verarbeitung der Anforderung fertig ist, wenn es für den anfordernden Agenten sicher ist, seine RTID-Ressource wiederzuverwenden. Die allgemeine Handhabung von Spionagen mit ähnlichem RNID/RTID im System ist auch ein Teil des Protokolls.
  • In einer Ausführungsform wird eine Konfliktauflösung unter Verwendung eines geordneten Antwortkanals durchgeführt. Ein Kohärenzagent verwendet RspCnflt als Anforderung für einen Heimagenten, ein FwdCnfltO zu senden, das mit dem CmpO (wenn irgendeines bereits geplant ist) für die Konfliktanforderung des Kohärenzagenten geordnet wird.
  • In einer Ausführungsform unterstützt HPI die Konfliktauflösung über einen geordneten Antwortkanal. Ein Kohärenzagent verwendet Informationen von der Spionage, um bei der Verarbeitung von FwdCnfltO zu unterstützen, das keine „Typ“-Informationen und kein RTID für das Weiterleiten von Daten an den anfordernden Agenten aufweist.
  • In einer Ausführungsform blockiert ein Kohärenzagent Weiterleitungen für Rückschreibanforderungen, um Datenkonsistenz aufrechtzuerhalten. Es ermöglicht jedoch auch, dass ein Kohärenzagent eine Rückschreibanforderung verwendet, um nicht cachefähige (UC) Daten zu übergeben, bevor sie vorwärts verarbeitet werden, und ermöglicht, dass der Kohärenzagent teilweise Cache-Zeilen anstelle eines Protokolls zurückschreibt, das ein teilweises implizites Zurückschreiben für Weiterleitungen unterstützt.
  • In einer Ausführungsform wird eine Leseinvalidierungsanforderung (RdInv-Anforderung), die Exklusiv-Zustands-Daten annimmt, unterstützt. Die Semantik von nicht cachefähigen (UC) Lesevorgängen umfasst das Spülen von modifizierten Daten in den Arbeitsspeicher. Eine gewisse Architektur ermöglichte jedoch das Weiterleiten von M-Daten zu Invalidierungslesevorgängen, was den anfordernden Agenten gezwungen hat, die Zeile zu löschen, wenn er M-Daten empfangen hat. Das RdInv vereinfacht den Fluss, aber es ermöglicht nicht, dass E-Daten weitergeleitet werden.
  • In einer Ausführungsform unterstützt HPI eine InvItoMzu-IODC-Funktionalität. InvItoM fordert das exklusive Eigentum einer Cache-Zeile ohne Empfangen von Daten und mit der Absicht, ein Zurückschreiben bald danach durchzuführen, an. Ein erforderlicher Cache-Zustand kann ein M-Zustand und ein E-Zustand oder beide sein.
  • In einer Ausführungsform unterstützt HPI ein WbFlush für ein Spülen des persistenten Arbeitsspeichers. Eine Ausführungsform eines WbFlush wird nachstehend dargestellt. Es kann als Ergebnis einer persistenten Übergabe gesendet werden. Kann einen Schreibvorgang in den persistenten Arbeitsspeicher spülen.
  • In einer Ausführungsform unterstützt HPI zusätzliche Operationen wie z. B. SnpF für „Verzweigungs“-Spionagen, die durch die Leitweglenkungsschicht erzeugt werden. Einige Architekturen weisen keine explizite Unterstützung für Verzweigungsspionagen auf. Hier erzeugt ein HPI-Heimagent eine einzelne „Verzweigungs“-Spionageanforderung und in Reaktion erzeugt die Leitweglenkungsschicht Spionagen zu allen Peer-Agenten im „Verzweigungskegel“. Der Heimagent kann Spionageantworten von jedem der Agentenabschnitte erwarten.
  • In einer Ausführungsform unterstützt HPI zusätzliche Operationen wie z. B. SnpF für „Verzweigungs“-Spionagen, die durch die Leitweglenkungsschicht erzeugt werden. Einige Architekturen weisen keine explizite Unterstützung für Verzweigungsspionagen auf. Hier erzeugt ein HPI-Heimagent eine einzelne „Verzweigungs“-Spionageanforderung und in Reaktion erzeugt die Leitweglenkungsschicht Spionagen an alle Peer-Agenten im „Verzweigungskegel“. Der Heimagent kann Spionageantworten von jedem der Agentenabschnitte erwarten.
  • In einer Ausführungsform unterstützt HPI ein explizites Zurückschreiben mit Cache-Schubhinweis (WbPushMtoI). In einer Ausführungsform schreibt ein Kohärenzagent modifizierte Daten mit einem Hinweis an den Heimagenten zurück, damit er die modifizierten Daten zu einem „lokalen“ Cache schieben kann, wobei sie im M-Zustand gespeichert werden, ohne die Daten in den Arbeitsspeicher zu schreiben.
  • In einer Ausführungsform kann ein Kohärenzagent den F-Zustand aufrechterhalten, wenn geteilte Daten weitergeleitet werden. In einem Beispiel kann ein Kohärenzagent mit dem F-Zustand, der eine „Teilungs“-Spionage oder Weiterleiten nach einer solchen Spionage empfängt, den F-Zustand aufrechterhalten, während er den S-Zustand zum anfordernden Agenten sendet.
  • In einer Ausführungsform können Protokolltabellen verschachtelt sein, indem sich eine Tabelle auf eine andere Untertabelle in den Spalten des „nächsten Zustandes“ bezieht, und die verschachtelte Tabelle kann zusätzliche oder feinkörnigere Sicherungen aufweisen, um festzulegen, welche Zeilen (Verhaltensweisen) erlaubt sind.
  • In einer Ausführungsform verwenden Protokolltabellen Zeilenübergreifen, um gleich zulässige Verhaltensweisen (Zeilen) anzugeben, anstelle des Hinzufügens von „Vorbelastungs“-Bits, um unter Verhaltensweisen auszuwählen.
  • In einer Ausführungsform sind Handlungstabellen vielmehr zur Verwendung als Funktionalitätsmaschine für BFM (Validierungsumgebungswerkzeug) organisiert, als dass das BFM-Team seine eigene BFM-Maschine auf der Basis seiner Interpretation erzeugt.
  • Nicht kohärentes HPI-Protokoll
  • In einer Ausführungsform unterstützt HPI nicht kohärente Transaktionen. Als Beispiel wird eine nicht kohärente Transaktion als eine bezeichnet, die nicht am HPI-Kohärenzprotokoll teilnimmt. Nicht kohärente Transaktionen umfassen Anforderungen und ihre entsprechenden Vollendungen. Für einige spezielle Transaktionen ein Rundsendemechanismus.
  • Es ist zu beachten, dass die Geräte, Verfahren und Systeme, die vorstehend beschrieben sind, in irgendeiner elektronischen Vorrichtung oder irgendeinem elektronischen System implementiert werden können, wie vorstehend erwähnt. Als spezielle Darstellungen schaffen die nachstehenden Figuren beispielhafte Systeme für die Verwendung der Erfindung, wie hier beschrieben. Da die nachstehenden Systeme genauer beschrieben werden, wird eine Anzahl von verschiedenen Zwischenverbindungen offenbart, beschrieben und aus der obigen Erörterung erneut darauf zurückgekommen. Und wie leicht ersichtlich ist, können die vorstehend beschriebenen Fortschritte auf beliebige dieser Zwischenverbindungen, Gebilde oder Architekturen angewendet werden.
  • Mit Bezug nun auf 12 ist ein Blockdiagramm einer Ausführungsform eines Mehrkernprozessors gezeigt. Wie in der Ausführungsform von 12 gezeigt, umfasst der Prozessor 1200 mehrere Domänen. Insbesondere umfasst eine Kerndomäne 1230 mehrere Kerne 1230A-1230N, eine Graphikdomäne 1260 umfasst eine oder mehrere Graphikmaschinen mit einer Medienmaschine 1265 und eine Systemagentendomäne 1210.
  • In verschiedenen Ausführungsformen behandelt die Systemagentendomäne 1210 Leistungssteuerereignisse und Leistungsmanagement, so dass individuelle Einheiten von Domänen 1230 und 1260 (z. B. Kerne und/oder Graphikmaschinen) unabhängig steuerbar sind, um dynamisch in einem geeigneten Leistungsmodus/Leistungspegel zu arbeiten (z. B. aktiv, Turbo, Schlaf, Winterschlaf, Tiefschlaf oder anderer „Advanced Configuration Power Interface“-artiger Zustand) angesichts der Aktivität (oder Inaktivität), die in der gegebenen Einheit stattfindet. Jede der Domänen 1230 und 1260 kann mit unterschiedlicher Spannung und/oder Leistung arbeiten und ferner arbeiten die individuellen Einheiten innerhalb der Domänen jeweils potentiell mit einer unabhängigen Frequenz und Spannung. Es ist zu beachten, dass, obwohl nur mit drei Domänen gezeigt, selbstverständlich der Schutzbereich der vorliegenden Erfindung nicht in dieser Hinsicht begrenzt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können.
  • Wie gezeigt, umfasst jeder Kern 1230 ferner Caches niedriger Ebene zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen. Hier sind die verschiedenen Kerne miteinander und mit einem geteilten Cache-Arbeitsspeicher gekoppelt, der aus mehreren Einheiten oder Stücken eines Cache letzter Ebene (LLC) 1240A-1240N gebildet ist; diese LLCs umfassen häufig Speicher- und Cache-Steuereinheitsfunktionalität und werden unter den Kernen sowie potentiell auch unter der Graphikmaschine geteilt.
  • Wie zu sehen ist, koppelt eine Ringzwischenverbindung 1250 die Kerne miteinander und schafft eine Zwischenverbindung zwischen der Kerndomäne 1230, der Graphikdomäne 1260 und der Systemagentenschaltungsanordnung 1210 über mehrere Ringstopps 1252A-1252N, jeweils an einer Kopplung zwischen einem Kern und einem LLC-Stück. Wie in 12 zu sehen, wird die Zwischenverbindung 1250 verwendet, um verschiedene Informationen zu tragen, einschließlich Adresseninformationen, Dateninformationen, Bestätigungsinformationen und Spionage/Ungültig-Informationen. Obwohl eine Ringzwischenverbindung dargestellt ist, kann irgendeine bekannte Zwischenverbindung oder irgendein bekanntes Gebilde auf dem Chip verwendet werden. Als erläuterndes Beispiel können einige der vorstehend erörterten Gebilde (z. B. eine andere Zwischenverbindung auf dem Chip, ein „Intel On-Chip System Fabric“ (IOSF), eine „Advanced Microcontroller Bus Architecture“-Zwischenverbindung (AMBA-Zwischenverbindung), ein mehrdimensionales Netzgebilde oder eine andere bekannte Zwischenverbindungsarchitektur) in einer ähnlichen Weise verwendet werden.
  • Wie weiter dargestellt, umfasst die Systemagentendomäne 1210 eine Anzeigemaschine 1212, die die Steuerung und eine Schnittstelle zu einer zugehörigen Anzeige bereitstellen soll. Die Systemagentendomäne 1210 kann andere Einheiten umfassen, wie z. B.: eine integrierte Arbeitsspeichersteuereinheit 1220, die eine Schnittstelle zu einem Systemarbeitsspeicher bereitstellt (z. B. ein DRAM, der mit mehreren DIMMs implementiert wird; eine Kohärenzlogik 1222, um Arbeitsspeicherkohärenzoperationen durchzuführen. Mehrere Schnittstellen können vorhanden sein, um die Zwischenverbindung zwischen dem Prozessor und einer anderen Schaltungsanordnung zu ermöglichen. In einer Ausführungsform ist beispielsweise mindestens eine Schnittstelle einer direkten Medienschnittstelle (DMI) 1216 sowie eine oder mehrere PCIe™-Schnittstellen 1214 vorgesehen. Die Anzeigemaschine und diese Schnittstellen koppeln typischerweise mit dem Arbeitsspeicher über eine PCIe™-Brücke 1218. Noch ferner können, um für Kommunikationen zwischen anderen Agenten zu sorgen, wie z. B. zusätzlichen Prozessoren oder einer anderen Schaltungsanordnung, eine oder mehrere andere Schnittstellen (z. B. ein „Intel® Quick Path Interconnect“-Gebilde (QPI-Gebilde)) vorgesehen sein.
  • Mit Bezug nun auf 13 ist ein Blockdiagramm eines repräsentativen Kerns gezeigt; insbesondere Logikblöcke eines Backend eines Kerns wie z. B. des Kerns 1230 von 12. Im Allgemeinen umfasst die in 13 gezeigte Struktur einen Prozessor außer der Reihe, der eine Frontend-Einheit 1370 aufweist, die verwendet wird, um ankommende Befehle abzurufen, verschiedene Verarbeitung durchzuführen (z. B. Cachen, Decodieren, Verzweigungsvorhersage usw.) und Befehle/Operationen weiter zu einer Maschine 1380 außer der Reihe (OOO) weiterzuleiten. Die OOO-Maschine 1380 führt eine Weiterverarbeitung an decodierten Befehlen durch.
  • Insbesondere umfasst in der Ausführungsform von 13 die Maschine 1380 außer der Reihe eine Zuweisungseinheit 1382, um decodierte Befehle, die in Form von einem oder mehreren Mikrobefehlen oder uops vorliegen können, von der Frontend-Einheit 1370 zu empfangen und sie zu geeigneten Ressourcen wie z. B. Registern und so weiter zuzuweisen. Als nächstes werden die Befehle zu einer Reservierungsstation 1384 geliefert, die Ressourcen reserviert und sie für die Ausführung an einer von mehreren Ausführungseinheiten 1386A-1386N plant. Verschiedene Typen von Ausführungseinheiten können vorhanden sein, einschließlich unter anderem beispielsweise Rechenwerken (ALUs), Lade- und Speichereinheiten, Vektorverarbeitungseinheiten (VPUs), Gleitkommaausführungseinheiten. Ergebnisse von diesen verschiedenen Ausführungseinheiten werden zu einem Umordnungspuffer (ROB) 1388 geliefert, der ungeordnete Ergebnisse annimmt und sie in korrekter Programmreihenfolge zurückgibt.
  • Immer noch mit Bezug auf 13 ist zu beachten, dass sowohl die Frontend-Einheit 1370 als auch die Maschine 1380 außer der Reihe mit verschiedenen Ebenen einer Arbeitsspeicherhierarchie gekoppelt sind. Insbesondere ist ein Befehlsebenen-Cache 1372 gezeigt, der wiederum mit einem Mittelebenen-Cache 1376 koppelt, der wiederum mit einem Cache 1395 letzter Ebene koppelt. In einer Ausführungsform wird der Cache 1395 letzter Ebene als Einheit 1390 auf dem Chip (manchmal als Uncore bezeichnet) implementiert. Als Beispiel ist die Einheit 1390 ähnlich zum Systemagenten 1210 von 12. Wie vorstehend erörtert, kommuniziert der UnCore 1390 mit dem Systemarbeitsspeicher 1399, der in der dargestellten Ausführungsform über ED-RAM implementiert wird. Es ist auch zu beachten, dass die verschiedenen Ausführungseinheiten 1386 innerhalb der Maschine 1380 außer der Reihe mit einem Cache 1374 erster Ebene in Kommunikation stehen, der auch mit dem Mittelebenen-Cache 1376 in Kommunikation steht. Es ist auch zu beachten, dass zusätzliche Kerne 1330N-2 - 1330N mit den LLC 1395 koppeln können. Obwohl in der Ausführungsform von 13 auf dieser hohen Ebene gezeigt, können selbstverständlich verschiedene Änderungen und zusätzliche Komponenten vorhanden sein.
  • Wenn man sich 14 zuwendet, ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen eines Befehls umfasst, wobei eine oder mehrere der Zwischenverbindungen ein oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Erfindung implementieren, dargestellt. Das System 1400 umfasst eine Komponente wie z. B. einen Prozessor 1402, um Ausführungseinheiten mit einer Logik zu verwenden, um Algorithmen zum Verarbeiten von Daten gemäß der vorliegenden Erfindung durchzuführen, wie z. B. in der hier beschriebenen Ausführungsform. Das System 1400 ist repräsentativ für Verarbeitungssysteme auf der Basis der Mikroprozessoren PENTIUM III™, PENTIUMM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™, die von Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Konstruktionsarbeitsplatzrechner, Digitalempfänger und dergleichen) auch verwendet werden können. In einer Ausführungsform führt das Mustersystem 1400 eine Version des WINDOWS™-Betriebssystems aus, das von Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl andere Betriebssysteme (beispielsweise UNIX und Linux), eine eingebettete Software, und/oder graphische Benutzerschnittstellen auch verwendet werden können. Folglich sind Ausführungsformen der vorliegenden Erfindung nicht auf irgendeine spezielle Kombination von Hardware-Schaltungsanordnung und Software begrenzt.
  • Ausführungsformen sind nicht auf Computersysteme begrenzt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen wie z. B. in der Hand gehaltenen Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele von in der Hand gehaltenen Vorrichtungen umfassen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und in der Hand gehaltene PCs. Eingebettete Anwendungen können einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System auf einem Chip, Netzcomputer (NetPC), Digitalempfänger, Netzknoten, Koppler eines weiträumigen Netzes (WAN), oder irgendein anderes System umfassen, das einen oder mehrere Befehle gemäß mindestens einer Ausführungsform durchführen kann.
  • In dieser dargestellten Ausführungsform umfasst der Prozessor 1402 eine oder mehrere Ausführungseinheiten 1408, um einen Algorithmus zu implementieren, der mindestens einen Befehl durchführen soll. Eine Ausführungsform kann im Zusammenhang mit einem einzelnen Prozessor-Desktop- oder Serversystem beschrieben werden, aber alternative Ausführungsformen können in einem Multiprozessorsystem enthalten sein. Das System 1400 ist ein Beispiel der Systemarchitektur eines Netzknotens. Das Computersystem 1400 umfasst einen Prozessor 1402, um Datensignale zu verarbeiten. Der Prozessor 1402 als ein erläuterndes Beispiel umfasst einen Mikroprozessor eines Computers mit komplexem Befehlssatz (CISC), einen Rechen-Mikroprozessor mit verringertem Befehlssatz (RISC-Mikroprozessor), einen Mikroprozessor mit sehr langem Befehlswort (VLIW), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder irgendeine andere Prozessorvorrichtung, wie beispielsweise einen Digitalsignalprozessor. Der Prozessor 1402 ist mit einem Prozessorbus 1410 gekoppelt, der Datensignale zwischen dem Prozessor 1402 und anderen Komponenten im System 1400 überträgt. Die Elemente des Systems 1400 (z. B. Graphikbeschleuniger 1412, Arbeitsspeichersteuereinheitsnetzknoten 1416, Arbeitsspeicher 1420, E/A-Steuereinheitsnetzknoten 1424, drahtloser Sender/Empfänger 1426, Flash-BIOS 1428, Netzsteuereinheit 1434, Audiosteuereinheit 1436, serieller Erweiterungs-Port 1438, E/A-Steuereinheit 1440 usw.) führen ihre herkömmlichen Funktionen durch, die dem Fachmann auf dem Gebiet gut bekannt sind.
  • In einer Ausführungsform umfasst der Prozessor 1402 einen internen Cache-Arbeitsspeicher 1404 der Ebene 1 (L1). In Abhängigkeit von der Architektur kann der Prozessor 1402 einen einzelnen internen Cache oder mehrere Ebenen von internen Caches aufweisen. Andere Ausführungsformen umfassen eine Kombination von sowohl internen als auch externen Caches in Abhängigkeit von der speziellen Implementierung und den Bedürfnissen. Die Registerdatei 1406 soll verschiedene Typen von Daten in verschiedenen Registern speichern, einschließlich Ganzzahlenregistern, Gleitkommaregistern, Vektorregistern, gruppierten Registern, Schattenregistern, Prüfpunktregistern, Statusregistern und Befehlszeigerregistern.
  • Die Ausführungseinheit 1408 mit einer Logik, um Ganzzahlen- und Gleitkommaoperationen durchzuführen, befindet sich auch im Prozessor 1402. Der Prozessor 1402 umfasst in einer Ausführungsform einen Mikrocode-ROM (ucode-ROM), um den Mikrocode zu speichern, der, wenn er ausgeführt wird, Algorithmen für bestimmte Makrobefehle durchführen oder komplexe Szenarios behandeln soll. Hier ist der Mikrocode potentiell nicht aktualisierbar, um Logik-Fehler/Behebungen für den Prozessor 1402 zu handhaben. Für eine Ausführungsform umfasst die Ausführungseinheit 1408 eine Logik, um einen gepackten Befehlssatz 1409 zu handhaben. Durch Einschließen des gepackten Befehlssatzes 1409 in den Befehlssatz eines Universalprozessors 1402 zusammen mit einer zugehörigen Schaltungsanordnung, um die Befehle auszuführen, können die Operationen, die durch viele Multimediaanwendungen verwendet werden, unter Verwendung von gepackten Daten in einem Universalprozessor 1402 durchgeführt werden. Folglich werden viele Multimediaanwendungen beschleunigt und effizienter ausgeführt unter Verwendung der vollen Breite des Datenbusses des Prozessors zum Durchführen von Operationen an gepackten Daten. Dies beseitigt potentiell den Bedarf, kleinere Einheiten von Daten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen durchzuführen, ein Datenelement auf einmal.
  • Alternative Ausführungsformen einer Ausführungseinheit 1408 können auch in Mikrocontrollern, eingebetteten Prozessoren, Graphikvorrichtungen, DSPs und anderen Typen von Logikschaltungen verwendet werden. Das System 1400 umfasst einen Arbeitsspeicher 1420. Der Arbeitsspeicher 1420 umfasst eine Vorrichtung eines dynamischen Direktzugriffsarbeitsspeichers (DRAM), eine Vorrichtung eines statischen Direktzugriffsarbeitsspeichers (SRAM), eine Flash-Arbeitsspeichervorrichtung oder eine andere Arbeitsspeichervorrichtung. Der Arbeitsspeicher 1420 speichert Befehle und/oder Daten, die durch Datensignale dargestellt werden, die durch den Prozessor 1402 ausgeführt werden sollen.
  • Es ist zu beachten, dass beliebige der vorstehend erwähnten Merkmale oder Aspekte der Erfindung an einer oder mehreren Zwischenverbindungen verwendet werden können, die in 14 dargestellt sind. Eine Zwischenverbindung auf einem Chip (ODI), die nicht gezeigt ist, zum Koppeln von internen Einheiten des Prozessors 1402 implementiert beispielsweise einen oder mehrere Aspekte der Erfindung, die vorstehend beschrieben sind. Oder die Erfindung ist einem Prozessorbus 1410 (z. B. „Intel Quick Path Interconnect“ (QPI) oder einer anderen bekannten Hochleistungsrechenzwischenverbindung), einem Arbeitsspeicherpfad 1418 mit hoher Bandbreite zum Arbeitsspeicher 1420, einer Punkt-Punkt-Verbindung zum Graphikbeschleuniger 1412 (z. B. einem mit „Peripheral Component Interconnect Express“ (PCIe) kompatiblen Gebilde), einer Steuereinheitsnetzknotenzwischenverbindung 1422, einer E/A- oder anderen Zwischenverbindung (z. B. USB, PCI, PCIe) zum Koppeln der anderen dargestellten Komponenten zugeordnet. Einige Beispiele von solchen Komponenten umfassen die Audiosteuereinheit 1436, den Firmware-Netzknoten (Flash-BIOS) 1428, den drahtlosen Sender/Empfänger 1426, den Datenspeicher 1424, die veraltete E/A-Steuereinheit 1410, die Benutzereingabe- und Tastaturschnittstellen 1442 umfasst, einen seriellen Erweiterungs-Port 1438 wie z. B. einen universellen seriellen Bus (USB) und eine Netzsteuereinheit 1434. Die Datenspeichervorrichtung 1424 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Arbeitsspeichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • Mit Bezug nun auf 15 ist ein Blockdiagramm eines zweiten Systems 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist das Mehrprozessorsystem 1500 ein Punkt-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-Punkt-Zwischenverbindung 1550 gekoppelt sind. Jeder der Prozessoren 1570 und 1580 kann eine gewisse Version eines Prozessors sein. In einer Ausführungsform sind 1552 und 1554 ein Teil eines seriellen kohärenten Punkt-Punkt-Zwischenverbindungsgebildes, wie z. B. einer „Intel Quick Path Interconnect“-Architektur (QPI-Architektur). Folglich kann die Erfindung innerhalb der QPI-Architektur implementiert werden.
  • Obwohl nur mit zwei Prozessoren 1570, 1580 gezeigt, ist der Schutzbereich der vorliegenden Erfindung selbstverständlich nicht so begrenzt. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 1570 und 1580 sind mit integrierten Arbeitsspeichersteuereinheiten 1572 bzw. 1582 gezeigt. Der Prozessor 1570 umfasst auch als Teil seiner Bussteuereinheiten Punkt-Punkt-Schnittstellen (P-P-Schnittstellen) 1576 und 1578; Ebenso umfasst der zweite Prozessor 1580 P-P-Schnittstellen 1586 und 1588. Die Prozessoren 1570, 1580 können Informationen über eine Punkt-Punkt-Schnittstelle (P-P-Schnittstelle) 1550 unter Verwendung von P-P-Schnittstellenschaltungen 1578, 1588 austauschen. Wie in 15 gezeigt, koppeln IMCs 1572 und 1582 die Prozessoren mit jeweiligen Arbeitsspeichern, nämlich einem Arbeitsspeicher 1532 und einem Arbeitsspeicher 1534, die Abschnitte eines Hauptarbeitsspeichers sein können, der lokal an den jeweiligen Prozessoren befestigt ist.
  • Die Prozessoren 1570, 1580 tauschen jeweils Informationen mit einem Chipsatz 1590 über individuelle P-P-Schnittstellen 1552, 1554 unter Verwendung von Punkt-Punkt-Schnittstellenschaltungen 1576, 1594, 1586, 1598 aus. Der Chipsatz 1590 tauscht auch Informationen mit einer Hochleistungsgraphikschaltung 1538 über eine Schnittstellenschaltung 1592 entlang einer Hochleistungsgraphikzwischenverbindung 1539 aus.
  • Ein geteilter Cache (nicht gezeigt) kann entweder im Prozessor oder außerhalb beider Prozessoren enthalten sein; dennoch mit den Prozessoren über eine P-P-Zwischenverbindung verbunden sein, so dass lokale Cache-Informationen eines oder beider Prozessoren im geteilten Cache gespeichert werden können, wenn ein Prozessor in einen leistungsarmen Modus gesetzt ist.
  • Der Chipsatz 1590 kann mit einem ersten Bus 1516 über eine Schnittstelle 1596 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1516 ein „Peripheral Component Interconnect“-Bus (PCI-Bus) oder ein Bus wie z. B. ein PCI-Expressbus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation sein, obwohl der Schutzbereich der vorliegenden Erfindung nicht so begrenzt ist.
  • Wie in 15 gezeigt, sind verschiedene E/A-Vorrichtungen 1514 mit dem ersten Bus 1516 zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt, gekoppelt. In einer Ausführungsform umfasst der zweite Bus 1520 einen Bus mit niedriger Stiftzahl (LPC). Verschiedene Vorrichtungen sind mit dem zweiten Bus 1520 gekoppelt, einschließlich beispielsweise in einer Ausführungsform einer Tastatur und/oder einer Maus 1522, Kommunikationsvorrichtungen 1527 und einer Speichereinheit 1528 wie z. B. eines Plattenlaufwerks oder einer anderen Massenspeichervorrichtung, die häufig Befehle/Code und Daten 1530 umfasst. Ferner ist ein Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt gezeigt. Es ist zu beachten, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren. Anstelle der Punkt-Punkt-Architektur von 15 kann ein System beispielsweise einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Fig. 16
  • Mit Bezug nun auf 16 ist ein Blockdiagramm von Komponenten, die in einem Computersystem vorhanden sind, gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 16 gezeigt, umfasst das System 1600 irgendeine Kombination von Komponenten. Diese Komponenten können als ICs, Abschnitte davon, diskrete elektronische Vorrichtungen oder andere Module, Logik, Hardware, Software, Firmware oder Kombination davon implementiert werden, die in einem Computersystem angepasst sind, oder als Komponenten, die ansonsten in ein Gehäuse des Computersystems integriert sind. Es ist auch zu beachten, dass das Blockdiagramm von 16 eine Ansicht hoher Ebene von vielen Komponenten des Computersystems zeigen soll. Es soll jedoch selbstverständlich sein, dass einige der gezeigten Komponenten weggelassen werden können, zusätzliche Komponenten vorhanden sein können und eine andere Anordnung der gezeigten Komponenten in anderen Implementierungen vorkommen kann. Folglich kann die vorstehend beschriebene Erfindung in irgendeinem Abschnitt von einer oder mehreren der Zwischenverbindungen implementiert werden, die nachstehend dargestellt oder beschrieben werden.
  • Wie in 16 zu sehen, umfasst ein Prozessor 1610 in einer Ausführungsform einen Mikroprozessor, einen Mehrkernprozessor, einen Multithread-Prozessor, einen Prozessor mit ultraniedriger Spannung, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der dargestellten Implementierung wirkt der Prozessor 1610 als Hauptverarbeitungseinheit und zentraler Netzknoten für die Kommunikation mit vielen der verschiedenen Komponenten des Systems 1600. Als ein Beispiel wird der Prozessor 1600 als System auf einem Chip (SoC) implementiert. Als spezielles erläuterndes Beispiel umfasst der Prozessor 1610 einen Prozessor auf der Basis eines „Intel® Architekture Core™ wie z. B. einen i3, i5, i7 oder einen anderen solchen Prozessor, der von Intel Corporation, Santa Clara, CA, erhältlich ist. Selbstverständlich können jedoch andere leistungsarme Prozessoren, wie z. B. von Advanced Micro Devices, Inc. (AMD) in Sunnyvale, CA, erhältlich, eine Konstruktion auf MIPS-Basis von MIPS Technologies, Inc., in Sunnyvale, CA, eine Konstruktion auf ARM-Basis, die von ARM Holdings, Ltd. oder einem Kunden davon oder ihren Lizenznehmern oder Anwendern lizenziert wird, stattdessen in anderen Ausführungsformen vorhanden sein, wie z. B. ein A5/A6-Prozessor von Apple, ein „Qualcomm Snapdragon“-Prozessor oder ein „TI OMAP“-Prozessor. Es ist zu beachten, dass viele der Kundenversionen von solchen Prozessoren modifiziert und verändert sind; sie können jedoch einen speziellen Befehlssatz unterstützen oder erkennen, der definierte Algorithmen durchführt, wie durch den Prozessorlizenzgeber dargelegt. Hier kann die Mikroarchitekturimplementierung variieren, aber die Architekturfunktion des Prozessors ist gewöhnlich konsistent. Bestimmte Details hinsichtlich der Architektur und des Betriebs des Prozessors 1610 werden in einer Implementierung nachstehend weiter erörtert, um ein erläuterndes Beispiel bereitzustellen.
  • Der Prozessor 1610 kommuniziert in einer Ausführungsform mit einem Systemarbeitsspeicher 1615. Als erläuterndes Beispiel, das in einer Ausführungsform über mehrere Arbeitsspeichervorrichtungen implementiert werden kann, um eine gegebene Menge an Systemarbeitsspeicher bereitzustellen. Als Beispiele kann der Arbeitsspeicher gemäß einem Entwurf auf der Basis von leistungsarmer doppelter Datenrate (LPDDR) von „Joint Electron Devices Engineering Council“ (JEDEC) sein, wie z. B. die aktuelle LPDDR2-Norm gemäß JEDEC JESD 209-2E (veröffentlicht im April 2009), oder eine LPDDR-Norm der nächsten Generation, die als LPDDR3 oder LPDDR4 bezeichnet wird, der Erweiterungen für LPDDR2 bietet, um die Bandbreite zu erhöhen. In verschiedenen Implementierungen können die individuellen Arbeitsspeichervorrichtungen von verschiedenen Bausteintypen sein, wie z. B. ein Einzelchipbaustein (SDP), ein Doppelchipbaustein (DDP) oder ein Vierchipbaustein (14P). Diese Vorrichtungen sind in einigen Ausführungsformen direkt an eine Hauptplatine gelötet, um eine Lösung mit niedrigerem Profil zu schaffen, während in anderen Ausführungsformen die Vorrichtungen als ein oder mehrere Arbeitsspeichermodule konfiguriert sind, die wiederum mit der Hauptplatine durch ein gegebenes Verbindungselement koppeln. Und andere Arbeitsspeicherimplementierungen sind natürlich möglich, wie z. B. andere Typen von Arbeitsspeichermodulen, z. B. duale Inline-Arbeitsspeichermodule (DIMMs) von verschiedenen Vielfalten, einschließlich, jedoch nicht begrenzt auf MikroDIMMs, MiniDIMMs. In einer speziellen erläuternden Ausführungsform ist der Arbeitsspeicher zwischen 2 GB und 16 GB bemessen und kann als DDR3LM-Baustein oder LPDDR2- oder LPDDR3-Arbeitsspeicher konfiguriert sein, der an eine Hauptplatine über eine Kugelgittermatrix (BGA) gelötet ist.
  • Um für die dauerhafte Speicherung von Informationen wie z. B. Daten, Anwendungen, einem oder mehreren Betriebssystemen und so weiter zu sorgen, kann ein Massenspeicher 1620 auch mit dem Prozessor 1610 koppeln. In verschiedenen Ausführungsformen kann, um einen dünneren und leichteren Systementwurf zu ermöglichen sowie das Systemansprechvermögen zu verbessern, dieser Massenspeicher über ein SSD implementiert werden. In anderen Ausführungsformen kann jedoch der Massenspeicher hauptsächlich unter Verwendung eines Festplattenlaufwerks (HDD) mit einer kleineren Menge an SSD-Speicher implementiert werden, um als SSD-Cache zu wirken, um einen nichtflüchtigen Speicher von Kontextzustand und anderen solchen Informationen während Abschaltereignissen zu ermöglichen, so dass ein schnelles Hochfahren bei der erneuten Initialisierung von Systemaktivitäten stattfinden kann. Wie auch in 16 gezeigt, kann eine Flash-Vorrichtung 1622 mit dem Prozessor 1610 z. B. über eine serielle periphere Schnittstelle (SPI) gekoppelt sein. Diese Flash-Vorrichtung kann für eine nichtflüchtige Speicherung von System-Software sorgen, einschließlich einer Eingabe/Ausgabe-Basis-Software (BIOS) sowie andere Firmware des Systems.
  • In verschiedenen Ausführungsformen wird der Massenspeicher des Systems durch ein SSD allein oder als Platten-, optisches oder anderes Laufwerk mit einem SSD-Cache implementiert. In einigen Ausführungsformen wird der Massenspeicher als SSD oder HDD zusammen mit einem Rückstell-Cache-Modul (RST-Cache-Modul) implementiert. In verschiedenen Implementierungen sorgt das HDD für die Speicherung von zwischen 340 GB - 4 Terabytes (TB) und aufwärts, während der RST-Cache mit einem SSD mit einer Kapazität von 24 GB - 256 GB implementiert wird. Es ist zu beachten, dass ein solcher SSD-Cache als Option eines Einzelebenen-Cache (SLC) oder Mehrebenen-Cache (MLC) konfiguriert sein kann, um ein geeignetes Niveau an Ansprechvermögen zu schaffen. In einer Nur-SSD-Option kann das Modul in verschiedenen Stellen aufgenommen werden, wie z. B. in einem mSATA- oder NGFF-Schlitz. Als Beispiel weist ein SSD eine Kapazität im Bereich von 120 GB - 1 TB auf.
  • Verschiedene Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) können innerhalb des Systems 1600 vorhanden sein. Insbesondere in der Ausführungsform von 16 ist eine Anzeige 1624 gezeigt, die eine hochauflösende LCD- oder LED-Platte sein kann, die innerhalb eines Deckelabschnitts des Gehäuses konfiguriert ist. Diese Anzeigeplatte kann auch einen Berührungsbildschirm 1625 bereitstellen, der z. B. extern über der Anzeigeplatte angepasst ist, so dass über die Zusammenwirkung eines Benutzers mit diesem Berührungsbildschirm Benutzereingaben zum System geliefert werden können, um gewünschte Operationen zu ermöglichen, z. B. im Hinblick auf die Anzeige von Informationen, Zugreifen auf Informationen und so weiter. In einer Ausführungsform kann die Anzeige 1624 mit dem Prozessor 1610 über eine Anzeigezwischenverbindung gekoppelt sein, die als Hochleistungsgraphikzwischenverbindung implementiert werden kann. Der Berührungsbildschirm 1625 kann mit dem Prozessor 1610 über eine andere Zwischenverbindung gekoppelt sein, die in einer Ausführungsform eine I2C-Zwischenverbindung sein kann. Wie weiter in 16 gezeigt, kann zusätzlich zum Berührungsbildschirm 1625 eine Benutzereingabe durch Berührung auch über ein Berührungsfeld 1630 stattfinden, das innerhalb des Gehäuses konfiguriert sein kann und auch mit derselben I2C-Zwischenverbindung wie der Berührungsbildschirm 1625 gekoppelt sein kann.
  • Die Anzeigeplatte kann in mehreren Modi arbeiten. In einem ersten Modus kann die Anzeigeplatte in einem transparenten Zustand angeordnet sein, in dem die Anzeigeplatte für sichtbares Licht transparent ist. In verschiedenen Ausführungsformen kann die Mehrheit der Anzeigeplatte eine Anzeige sein, abgesehen von einer Einfassung um den Umfang. Wenn das System in einem Notebook-Modus betrieben wird und die Anzeigeplatte in einem transparenten Zustand betrieben wird, kann ein Benutzer Informationen betrachten, die auf der Anzeigeplatte dargestellt werden, während er auch Objekte hinter der Anzeige betrachten kann. Außerdem können Informationen, die auf der Anzeigeplatte angezeigt werden, durch einen Benutzer betrachtet werden, der hinter der Anzeige angeordnet ist. Oder der Betriebszustand der Anzeigeplatte kann ein opaker Zustand sein, in dem sichtbares Licht nicht durch die Anzeigeplatte hindurchtritt.
  • In einem Tablet-Modus wird das System zusammengeklappt geschlossen, so dass die hintere Anzeigeoberfläche der Anzeigeplatte in einer Position zu liegen kommt, so dass sie in Richtung eines Benutzers nach außen gewandt ist, wenn die untere Oberfläche der Basisplatte auf einer Oberfläche abgelegt ist oder durch den Benutzer gehalten wird. Im Tablet-Betriebsmodus führt die hintere Anzeigeoberfläche die Rolle einer Anzeige und Benutzerschnittstelle durch, da diese Oberfläche eine Berührungsbildschirmfunktionalität aufweisen kann und andere bekannte Funktionen einer herkömmlichen Berührungsbildschirmvorrichtung wie z. B. einer Tablet-Vorrichtung durchführen kann. Dazu kann die Anzeigeplatte eine Transparenzeinstellungsschicht umfassen, die zwischen einer Berührungsbildschirmschicht und einer vorderen Anzeigeoberfläche angeordnet ist. In einigen Ausführungsformen kann die Transparenzeinstellungsschicht eine elektrochrome Schicht (EC), eine LCD-Schicht oder eine Kombination von EC- und LCD-Schichten sein.
  • In verschiedenen Ausführungsformen kann die Anzeige unterschiedliche Größen aufweisen, z. B. einen Bildschirm mit 11,6" oder 13,3", und kann ein Seitenverhältnis von 16:9 und mindestens 300 Nits Helligkeit aufweisen. Die Anzeige kann auch eine volle hochauflösende (HD) Auflösung (mindestens 1920 x 1080p) aufweisen, mit einem eingebetteten Anzeige-Port (eDP) kompatibel sein und eine leistungsarme Platte mit Plattenselbstauffrischung sein.
  • Hinsichtlich Berührungsbildschirmfähigkeiten kann das System eine Mehrfachberührungs-Anzeigeplatte vorsehen, die für eine Mehrfachberührung kapazitiv ist und mindestens für 5 Finger in der Lage ist. Und in einigen Ausführungsformen kann die Anzeige für 10 Finger in der Lage sein. In einer Ausführungsform ist der Berührungsbildschirm innerhalb eines beschädigungs- und kratzbeständigen Glases und einer Beschichtung (z. B. Gorilla Glass™ oder Gorilla Glass 2™) für geringe Reibung aufgenommen, um „Fingerbrennen“ zu verringern und „Fingerüberspringen“ zu vermeiden. Um für eine verbesserte Berührungserfahrung und verbessertes Ansprechvermögen zu sorgen, weist die Berührungsplatte in einigen Implementierungen eine Mehrfachberührungsfunktionalität, wie z. B. weniger als 2 Rahmen (30 Hz) pro statischer Ansicht während Druckzoom und eine Einzelberührungsfunktionalität von weniger als 1 cm pro Rahmen (30 Hz) mit 200 ms (Verzögerung am Finger zum Zeiger) auf. Die Anzeige unterstützt in einigen Implementierungen Kanten-Kanten-Glas mit einer minimalen Bildschirmeinfassung, die auch mit der Plattenoberfläche bündig ist, und begrenzte E/A-Störung, wenn Mehrfachberührung verwendet wird.
  • Für Wahrnehmungsrechnen und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können mit dem Prozessor 1610 in verschiedenen Weisen gekoppelt sein. Bestimmte Trägheits- und Umgebungssensoren können mit dem Prozessor 1610 durch einen Sensornetzknoten 1640, z. B. über eine I2C-Zwischenverbindung, koppeln. In der in 16 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1641, einen Umgebungslichtsensor (ALS) 1642, einen Kompass 1643 und ein Gyroskop 1644 umfassen. Andere Umgebungssensoren können einen oder mehrere Wärmesensoren 1646 umfassen, die in einigen Ausführungsformen mit dem Prozessor 1610 über einen Systemmanagementbus (SMBus) koppeln.
  • Unter Verwendung der verschiedenen Trägheits- und Umgebungssensoren, die in einer Plattform vorhanden sind, können viele verschiedenen Verwendungsfälle realisiert werden. Diese Verwendungsfälle ermöglichen fortschrittliche Rechenoperationen, einschließlich Wahrnehmungsberechnung, und ermöglichen auch Verbesserungen hinsichtlich des Leistungsmanagements/der Batterielebensdauer, der Sicherheit und des Systemansprechvermögens.
  • Im Hinblick auf Leistungsmanagement/Batterielebensdauer-Probleme werden beispielsweise zumindest teilweise auf der Basis von Informationen von einem Umgebungslichtsensor die Umgebungslichtbedingungen an einem Ort der Plattform bestimmt und die Intensität der Anzeige dementsprechend gesteuert. Folglich wird die im Betrieb der Anzeige verbrauchte Leistung unter bestimmten Lichtbedingungen verringert.
  • Hinsichtlich Sicherheitsoperationen auf der Basis von Kontextinformationen, die von den Sensoren erhalten werden, wie z. B. Ortsinformationen, kann bestimmt werden, ob einem Benutzer Zugriff auf bestimme sichere Dokumente gewährt wird. Einem Benutzer kann beispielsweise erlaubt werden, auf solche Dokumente an einem Arbeitsplatz oder an einem Heimatort zuzugreifen. Es wird jedoch verhindert, dass der Benutzer auf solche Dokumente zugreift, wenn die Plattform an einem öffentlichen Ort vorhanden ist. Diese Bestimmung basiert in einer Ausführungsform auf Ortsinformationen, z. B. über einen GPS-Sensor oder Kameraerkennung von Landmarken bestimmt. Andere Sicherheitsoperationen können das Vorsehen einer Paarung von Vorrichtungen innerhalb einer nahen Reichweite zueinander umfassen, z. B. eine tragbare Plattform, wie hier beschrieben, und der Desktop-Computer eines Benutzers, ein Mobiltelefon und so weiter. Eine bestimmte Teilung wird in einigen Implementierungen über Nahfeldkommunikation verwirklicht, wenn diese Vorrichtungen so gepaart sind. Wenn die Vorrichtungen eine bestimmte Reichweite überschreiten, kann jedoch eine solche Teilung deaktiviert werden. Wenn eine Plattform, wie hier beschrieben, und ein Smartphone gepaart werden, kann ferner ein Alarm dazu ausgelegt sein, ausgelöst zu werden, wenn die Vorrichtungen sich um mehr als einen vorbestimmten Abstand voneinander bewegen, wenn sie sich an einem öffentlichen Ort befinden. Wenn diese gepaarten Vorrichtungen sich an einem sicheren Ort befinden, z. B. einem Arbeitsplatz oder Heimatort, können die Vorrichtungen dagegen diese vorbestimmte Grenze überschreiten, ohne einen solchen Alarm auszulösen.
  • Das Ansprechvermögen kann auch unter Verwendung der Sensorinformationen verbessert werden. Selbst wenn eine Plattform sich in einem leistungsarmen Zustand befindet, können die Sensoren beispielsweise immer noch aktiviert sein, um mit einer relativ niedrigen Frequenz zu laufen. Folglich werden irgendwelche Änderungen an einem Ort der Plattform, z. B. wie durch Trägheitssensoren, einen GPS-Sensor und so weiter bestimmt, bestimmt. Wenn keine solchen Änderungen registriert wurden, findet eine schnellere Verbindung mit einem vorherigen drahtlosen Netzknoten wie z. B. einem Wi-Fi™-Zugangspunkt oder einem ähnlichen drahtlosen Helfer statt, da in diesem Fall kein Bedarf besteht, auf verfügbare drahtlose Netzressourcen abzutasten. Folglich wird ein größeres Niveau an Ansprechvermögen beim Aufwachen aus einem leistungsarmen Zustand erreicht.
  • Selbstverständlich können viele andere Verwendungsfälle unter Verwendung von Sensorinformationen ermöglicht werden, die über die integrierten Sensoren innerhalb einer Plattform erhalten werden, wie hier beschrieben, und die obigen Beispiele sind nur für Erläuterungszwecke. Unter Verwendung eines Systems, wie hier beschrieben, kann ein Wahrnehmungsrechensystem das Hinzufügen von alternativen Eingabemodalitäten ermöglichen, einschließlich Gestenerkennung, und ermöglichen, dass das System Benutzeroperationen und eine Benutzerabsicht erfasst.
  • In einigen Ausführungsformen können ein oder mehrere Infrarot- oder andere Wärmeerfassungselemente oder irgendein anderes Element zum Erfassen der Anwesenheit oder Bewegung eines Benutzers vorhanden sein. Solche Erfassungselemente können mehrere verschiedene Elemente umfassen, die zusammenarbeiten, die in Sequenz arbeiten oder beides. Erfassungselemente umfassen beispielsweise Elemente, die anfängliche Erfassung bereitstellen, wie z. B. Licht- oder Tonprojektion, gefolgt von der Erfassung für Gestendetektion, beispielsweise durch eine Ultraschalllaufzeitkamera oder eine Kamera mit gemustertem Licht.
  • In einigen Ausführungsformen umfasst das System auch einen Lichtgenerator, um eine beleuchtete Linie zu erzeugen. In einigen Ausführungsformen sieht diese Linie einen visuellen Hinweis hinsichtlich einer virtuellen Grenze vor, nämlich einen imaginären oder virtuellen Ort im Raum, wobei die Handlung des Benutzers, um die virtuelle Grenze oder Ebene zu überschreiten oder durchbrechen, als Absicht interpretiert wird, das Rechensystem zu betreiben. In einigen Ausführungsformen kann die dargestellte Linie die Farben ändern, wenn das Rechensystem in verschiedene Zustände im Hinblick auf den Benutzer übergeht. Die beleuchtete Linie kann verwendet werden, um einen visuellen Hinweis für den Benutzer einer virtuellen Grenze im Raum bereitzustellen, und kann durch das System verwendet werden, um Übergänge im Zustand des Computers im Hinblick auf den Benutzer zu bestimmen, einschließlich der Bestimmung, wenn der Benutzer den Computer betreiben will.
  • In einigen Ausführungsformen erfasst der Computer die Benutzerposition und arbeitet, um die Bewegung einer Hand des Benutzers durch die virtuelle Grenze als Geste zu interpretieren, die eine Absicht des Benutzers angibt, den Computer zu betreiben. In einigen Ausführungsformen, wenn der Benutzer durch die virtuelle Linie oder Ebene hindurchgeht, kann sich das durch den Lichtgenerator erzeugte Licht ändern, wodurch eine visuelle Rückmeldung an den Benutzer bereitgestellt wird, dass der Benutzer in einen Bereich zum Liefern von Gesten eingetreten ist, um eine Eingabe in den Computer zu liefern.
  • Anzeigebildschirme können visuelle Angaben von Übergängen des Zustandes des Rechensystems im Hinblick auf einen Benutzer liefern. In einigen Ausführungsformen ist ein erster Bildschirm in einem ersten Zustand vorgesehen, in dem die Anwesenheit eines Benutzers durch das System erfasst wird, wie z. B. durch die Verwendung von einem oder mehreren der Erfassungselemente.
  • In einigen Implementierungen wirkt das System, um die Benutzeridentität zu erfassen, wie z. B. durch Gesichtserkennung. Hier kann ein Übergang auf einen zweiten Bildschirm in einem zweiten Zustand vorgesehen sein, in dem das Rechensystem die Benutzeridentität erkannt hat, wobei dieser zweite Bildschirm eine visuelle Rückmeldung an den Benutzer liefert, dass der Benutzer in einen neuen Zustand übergegangen ist. Der Übergang auf einen dritten Bildschirm kann in einem dritten Zustand auftreten, in dem der Benutzer die Erkennung des Benutzers bestätigt hat.
  • In einigen Ausführungsformen kann das Rechensystem einen Übergangsmechanismus verwenden, um einen Ort einer virtuellen Grenze für einen Benutzer zu bestimmen, wobei der Ort der virtuellen Grenze mit Benutzer und Kontext variieren kann. Das Rechensystem kann ein Licht erzeugen, wie z. B. eine beleuchtete Linie, um die virtuelle Grenze für den Betrieb des Systems anzugeben. In einigen Ausführungsformen kann das Rechensystem sich in einem Wartezustand befinden und das Licht kann in einer ersten Farbe erzeugt werden. Das Rechensystem kann detektieren, ob der Benutzer an der virtuellen Grenze vorbei gelangt ist, wie z. B. durch Erfassen der Anwesenheit und Bewegung des Benutzers unter Verwendung von Erfassungselementen.
  • In einigen Ausführungsformen, wenn detektiert wurde, dass der Benutzer die virtuelle Grenze überquert hat (wie z. B. dass die Hände des Benutzers sich näher am Rechensystem befinden als die virtuelle Grenzlinie), kann das Rechensystem in einen Zustand zum Empfangen von Gesteneingaben vom Benutzer übergehen, wobei ein Mechanismus zum Angeben des Übergangs umfassen kann, dass das Licht, das die virtuelle Grenze angibt, sich in eine zweite Farbe ändert.
  • In einigen Ausführungsformen kann das Rechensystem bestimmen, ob eine Gestenbewegung detektiert wird. Wenn die Gestenbewegung detektiert wird, kann das Rechensystem mit einem Gestenerkennungsprozess weitergehen, der die Verwendung von Daten von einer Gestendatenbibliothek umfassen kann, die sich im Arbeitsspeicher in der Rechenvorrichtung befinden kann oder auf die anderweitig durch die Rechenvorrichtung zugegriffen werden kann.
  • Wenn eine Geste des Benutzers erkannt wird, kann das Rechensystem eine Funktion in Reaktion auf die Eingabe durchführen und zurückkehren, um zusätzliche Gesten zu empfangen, wenn sich der Benutzer innerhalb der virtuellen Grenze befindet. In einigen Ausführungsformen, wenn die Geste nicht erkannt wird, kann das Rechensystem in einen Fehlerzustand übergehen, wobei ein Mechanismus, um den Fehlerzustand anzugeben, umfassen kann, dass das Licht, das die virtuelle Grenze angibt, sich in eine dritte Farbe ändert, wobei das System zurückkehrt, um zusätzliche Gesten zu empfangen, wenn sich der Benutzer innerhalb der virtuellen Grenze befindet, für den Betrieb des Rechensystems.
  • Wie vorstehend erwähnt, kann das System in anderen Ausführungsformen als umwandelbares Tablet-System konfiguriert sein, das in mindestens zwei verschiedenen Modi verwendet werden kann, einem Tablet-Modus und einem Notebook-Modus. Das umwandelbare System kann zwei Platten aufweisen, nämlich eine Anzeigeplatte und eine Basisplatte, so dass im Tablet-Modus die zwei Platten in einem Stapel aufeinander angeordnet sind. Im Tablet-Modus ist die Anzeigeplatte nach außen gewandt und kann eine Berührungsbildschirmfunktionalität bereitstellen, wie in herkömmlichen Tablets zu finden. Im Notebook-Modus können die zwei Platten in einer offenen Klappgehäusekonfiguration angeordnet sein.
  • In verschiedenen Ausführungsformen kann der Beschleunigungsmesser ein Beschleunigungsmesser mit 3 Achsen mit Datenraten von mindestens 50 Hz sein. Ein Gyroskop kann auch enthalten sein, das ein Gyroskop mit 3 Achsen sein kann. Außerdem kann ein E-Kompass/Magnetometer vorhanden sein. Ein oder mehrere Nähesensoren können auch vorgesehen sein (z. B. für Deckelöffnen, um zu erfassen, wenn sich eine Person in der Nähe des Systems befindet (oder nicht) und Leistung/Leistungsfähigkeit einzustellen, um die Batterielebensdauer zu verlängern). Für einige OS kann eine Sensorfusionsfähigkeit mit dem Beschleunigungsmesser, Gyroskop und Kompass verbesserte Merkmale schaffen. Über einen Sensornetzknoten mit einem Echtzeittakt (RTC) kann außerdem ein Sensoraufweckmechanismus verwirklicht werden, um eine Sensoreingabe zu empfangen, wenn ein Rest des Systems sich in einem leistungsarmen Zustand befindet.
  • In einigen Ausführungsformen kann ein interner Deckel-/Anzeigeöffnungsschalter oder Deckel-/Anzeigeöffnungssensor, um anzugeben, wenn der Deckel geschlossen/offen ist, verwendet werden, um das System in „Connected Standby“ zu setzen oder es automatisch aus dem „Connected Standby“-Zustand aufzuwecken. Andere Systemsensoren können ACPI-Sensoren für den internen Prozessor, Arbeitsspeicher und Schalentemperaturüberwachung umfassen, um Änderungen an den Prozessor- und Systembetriebszuständen auf der Basis der erfassten Parameter zu ermöglichen.
  • In einer Ausführungsform kann das OS ein „Microsoft® Windows® 8“-OS sein, das „Connected Standby“ implementiert (hier auch als „Win8 CS“ bezeichnet).
  • „Windows 8 Connected Standby‟ oder ein anderes OS mit einem ähnlichen Zustand kann über eine Plattform, wie hier beschrieben, eine sehr geringe Ultraleerlaufleistung bereitstellen, um zu ermöglichen, dass Anwendungen verbunden bleiben, z. B. mit einem Ort auf Cloud-Basis, mit sehr geringem Leistungsverbrauch. Die Plattform kann 3 Leistungszustände unterstützen, nämlich Bildschirm eingeschaltet (normal); „Connected Standby“ (wie z. B. Vorgabe-„Aus“-Zustand); und Abschalten (null Watt Leistungsverbrauch). Folglich ist im „Connected Standby“-Zustand die Plattform logisch eingeschaltet (mit minimalen Leistungspegeln), selbst wenn der Bildschirm ausgeschaltet ist. In einer solchen Plattform kann das Leistungsmanagement für Anwendungen transparent gemacht werden und konstante Konnektivität aufrechterhalten teilweise aufgrund der Leerlauftechnologie, um zu ermöglichen, dass die am geringsten betriebene Komponente eine Operation durchführt.
  • In 16 ist auch zu sehen, dass verschiedene Peripherievorrichtungen mit dem Prozessor 1610 über eine Zwischenverbindung mit geringer Stiftanzahl (LPC) koppeln können. In der gezeigten Ausführungsform können verschiedene Komponenten durch eine eingebettete Steuereinheit 1635 gekoppelt sein. Solche Komponenten können eine Tastatur 1636 (z. B. über eine PS2-Schnittstelle gekoppelt), ein Gebläse 1637 und einen Wärmesensor 1639 umfassen. In einigen Ausführungsformen kann ein Berührungsfeld 1630 auch mit EC 1635 über eine PS2-Schnittstelle koppeln. Außerdem kann ein Sicherheitsprozessor wie z. B. ein vertrauenswürdiges Plattformmodul (TPM) 1638 gemäß der TPM-Spezifikation der „Trusted Computing Group“ (TGC) Version 1.2, mit Datum vom 2. Okt. 2003, auch mit dem Prozessor 1610 über diese LPC-Zwischenverbindung koppeln. Selbstverständlich ist jedoch der Schutzbereich der vorliegenden Erfindung nicht in dieser Hinsicht begrenzt und eine sichere Verarbeitung und Speicherung von sicheren Informationen kann sich an einem anderen geschützten Ort wie z. B. einem statischen Direktzugriffsarbeitsspeicher (SRAM) in einen Sicherheitscoprozessor oder als verschlüsselte Daten-Blobs befinden, die nur entschlüsselt werden, wenn sie durch einen sicheren Enklavenprozessormodus (SE-Prozessormodus) geschützt sind.
  • In einer speziellen Implementierung können Peripherie-Ports ein Verbindungselement einer hochauflösenden Medienschnittstelle (HDMI) (die von verschiedenen Formfaktoren sein kann, wie z. B. volle Größe, Mini oder Mikro); einen oder mehrere USB-Ports, wie z. B. externe Ports mit voller Größe gemäß der „Universal Serial Bus Revision 3.0 Specification“ (November 2008), umfassen, wobei mindestens einer für das Aufladen von USB-Vorrichtungen (wie z. B. Smartphones) betrieben wird, wenn sich das System im „Connected Standby“-Zustand befindet und in eine Wechselstromwandsteckdose eingesteckt ist. Außerdem können ein oder mehrere Thunderbolt™-Ports vorgesehen sein. Andere Ports können einen extern zugänglichen Kartenleser wie z. B. einen SD-XC-Kartenleser mit voller Größe und/oder SIM-Kartenleser für WWAN (z. B. einen Kartenleser mit 8 Stiften) umfassen. Für Audio kann eine Buchse mit 3,5 mm mit Stereoklang- und Mikrophonfähigkeit (z. B. Kombinationsfunktionalität) mit einer Unterstützung für Buchsendetektion vorhanden sein (z. B. Nur-Kopfhörer-Unterstützung unter Verwendung von Mikrophon im Deckel oder Kopfhörer mit Mikrophon im Kabel). In einigen Ausführungsformen kann diese Buchse zwischen Stereokopfhörer- und Stereomikrophoneingang umbeauftragbar sein. Eine Leistungsbuchse kann auch für das Koppeln mit einem Wechselstrombaustein vorgesehen sein.
  • Das System 1600 kann mit externen Vorrichtungen in einer Vielfalt von Weisen kommunizieren, einschließlich drahtlos. In der in 16 gezeigten Ausführungsform sind verschiedene drahtlose Module, von denen jedes einem Funk entsprechen kann, der für ein spezielles drahtloses Kommunikationsprotokoll konfiguriert ist, vorhanden. Eine Weise für die drahtlose Kommunikation in einer kurzen Reichweite wie z. B. Nahfeld kann über eine Nahfeldkommunikationseinheit (NFC-Einheit) 1645 sein, die in einer Ausführungsform mit dem Prozessor 1610 über einen SMBus kommunizieren kann. Es ist zu beachten, dass über diese NFC-Einheit 1645 Vorrichtungen in unmittelbarer Nähe zueinander kommunizieren können. Ein Benutzer kann beispielsweise ermöglichen, dass das System 1600 mit einer anderen (z. B.) tragbaren Vorrichtung wie z. B. einem Smartphone des Benutzers kommuniziert, über Anpassen der zwei Vorrichtungen aneinander in enger Beziehung und Ermöglichen der Übertragung von Informationen wie z. B. Identifikationsinformationen, Bezahlungsinformationen, Daten wie z. B. Bilddaten und so weiter. Die drahtlose Leistungsübertragung kann auch unter Verwendung eines NFC-Systems durchgeführt werden.
  • Unter Verwendung der hier beschriebenen NFC-Einheit können Benutzer Vorrichtungen Seite an Seite anlegen und Vorrichtungen nebeneinander für Nahfeldkopplungsfunktionen anordnen (wie z. B. Nahfeldkommunikation und drahtlose Leistungsübertragung (WPT)) durch Ausnutzen der Kopplung zwischen Spulen von einer oder mehreren von solchen Vorrichtungen. Insbesondere schaffen Ausführungsformen Vorrichtungen mit strategisch geformten und angeordneten Ferritmaterialien, um für eine bessere Kopplung der Spulen zu sorgen. Jeder Spule ist eine Induktivität zugeordnet, die in Verbindung mit den Widerstands-, kapazitiven und anderen Merkmalen des Systems gewählt werden kann, um eine gemeinsame Resonanzfrequenz für das System zu ermöglichen.
  • Wie weiter in 16 zu sehen, können zusätzliche drahtlose Einheiten andere drahtlose Kurzstreckenmaschinen umfassen, einschließlich einer WLAN-Einheit 1650 und einer Bluetooth-Einheit 1652. Unter Verwendung der WLAN-Einheit 1650 können Wi-Fi™-Kommunikationen gemäß einer gegebenen 802.11-Norm des „Institute of Electrical and Electronics Engineers“ (IEEE) 802.11 verwirklicht werden, während über die Bluetooth-Einheit 1652 Kurzstreckenkommunikationen über ein Bluetooth-Protokoll stattfinden können. Diese Einheiten können mit dem Prozessor 1610 über z. B. eine USB-Verbindung oder eine Verbindung eines universellen asynchronen Empfänger/Senders (UART) kommunizieren. Oder diese Einheiten können mit dem Prozessor 1610 über eine Zwischenverbindung gemäß einem Protokoll von „Peripheral Component Interconnect Express™“ (PCIe™) koppeln, z. B. gemäß der Spezifikationsversion 3.0 „PCI Express™ Specification“ (veröffentlicht am 17. Januar 2007) oder einem anderen solchen Protokoll wie z. B. einer seriellen Daten-Eingabe/Ausgabe-Norm (SDIO-Norm). Die tatsächliche physikalische Verbindung zwischen diesen Peripherievorrichtungen, die an einer oder mehreren Erweiterungskarten konfiguriert sein können, kann jedoch durch die NGFF-Verbindungselemente stattfinden, die an eine Hauptplatine angepasst sind.
  • Außerdem können drahtlose Weitbereichskommunikationen, z. B. gemäß einem zellularen oder anderen drahtlosen Weitbereichsprotokoll, über eine WWAN-Einheit 1656 stattfinden, die wiederum mit einem Teilnehmeridentitätsmodul (SIM) 1657 koppeln kann. Um den Empfang und die Verwendung von Ortsinformationen zu ermöglichen, kann außerdem ein GPS-Modul 1655 auch vorhanden sein. Es ist zu beachten, dass in der in 16 gezeigten Ausführungsform die WWAN-Einheit 1656 und eine integrierte Erfassungsvorrichtung wie z. B. ein Kameramodul 1654 über ein gegebenes USB-Protokoll wie z. B. eine „USB 2.0“- oder 3.0-Verbindung oder ein UART- oder I2C-Protokoll kommunizieren können. Wiederum kann die tatsächliche physikalische Verbindung dieser Einheiten über die Anpassung einer NGFF-Erweiterungskarte an ein NGFF-Verbindungselement stattfinden, das auf der Hauptplatine konfiguriert ist.
  • In einer speziellen Ausführungsform kann eine drahtlose Funktionalität modular vorgesehen sein, z. B. mit einer „WiFi™ 802.11ac“-Lösung (z. B. eine Erweiterungskarte, die mit IEEE 802.11abgn abwärtskompatibel ist) mit Unterstützung für Windows 8 CS. Diese Karte kann in einem internen Schlitz (z. B. über einen NGFF-Adapter) konfiguriert sein. Ein zusätzliches Modul kann für Bluetooth-Fähigkeit (z. B. Bluetooth 4.0 mit Abwärtskompatibilität) sowie „Intel® Wireless Display“-Funktionalität sorgen. Außerdem kann eine NFC-Unterstützung über eine separate Vorrichtung oder Multifunktionsvorrichtung vorgesehen sein und kann als Beispiel in einem vorderen rechten Abschnitt des Gehäuses für einen leichten Zugang angeordnet sein. Ein noch zusätzliches Modul kann eine WWAN-Vorrichtung sein, die eine Unterstützung für 3G/4G/LTE und GPS schaffen kann. Dieses Modul kann in einem internen (z. B. NGFF) Schlitz implementiert werden. Eine integrierte Antennenunterstützung kann für WiFi™, Bluetooth, WWAN, NFC und GPS vorgesehen sein, was einen nahtlosen Übergang von WiFi™ zu WWAN-Funk, drahtlosem Gigabit (WiGig) gemäß der „Wireless Gigabit Specification“ (Juli 2010) und umgekehrt ermöglicht.
  • Wie vorstehend beschrieben, kann eine integrierte Kamera im Deckel integriert sein. Als ein Beispiel kann diese Kamera eine Kamera mit hoher Auflösung sein, z. B. mit einer Auflösung von mindestens 2.0 Megapixel (MP) und Erweiterung auf 6.0 MP und darüber.
  • Um für Audioeingaben und Audioausgaben zu sorgen, kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) 1660 implementiert werden, der mit dem Prozessor 1610 über eine hochauflösende Audioverbindnung (HDA-Verbindung) koppeln kann. Ebenso kann der DSP 1660 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1662 kommunizieren, der wiederum mit Ausgangslautsprechern 1663 koppeln kann, die innerhalb des Gehäuses implementiert werden können. Ebenso kann der Verstärker und CODEC 1662 gekoppelt sein, um Audioeingaben von einem Mikrophon 1665 zu empfangen, das in einer Ausführungsform über Doppelanordnungsmikrophone (wie z. B. eine digitale Mikrophonanordnung) implementiert werden kann, um für Audioeingaben mit hoher Qualität zu sorgen, um eine sprachaktivierte Steuerung von verschiedenen Operationen innerhalb des Systems zu ermöglichen. Es ist auch zu beachten, dass Audioausgaben vom Verstärker/CODEC 1662 zu einer Kopfhörerbuchse 1664 geliefert werden können. Obwohl mit diesen speziellen Komponenten in der Ausführungsform von 16 gezeigt, ist der Schutzbereich der vorliegenden Erfindung selbstverständlich nicht in dieser Hinsicht begrenzt.
  • In einer speziellen Ausführungsform sind der digitale Audio-Codec und Verstärker in der Lage, die Stereokopfhörerbuchse, die Stereomikrophonbuchse, eine interne Mikrophonanordnung und Stereolautsprecher anzusteuern. In verschiedenen Implementierungen kann der Codec in einen Audio-DSP integriert sein oder über einen HD-Audiopfad mit einem Peripheriesteuereinheitsnetzknoten (PCH) gekoppelt sein. In einigen Implementierungen können zusätzlich zu integrierten Stereolautsprechern ein oder mehrere Basslautsprecher vorgesehen sein und die Lautsprecherlösung kann DTS-Audio unterstützen.
  • In einigen Ausführungsformen kann der Prozessor 1610 durch einen externen Spannungsregulierer (VR) und mehrere interne Spannungsregulierer, die in den Prozessorchip integriert sind, die als vollständig integrierte Spannungsregulierer (FIVRs) bezeichnet werden, betrieben werden. Die Verwendung von mehreren FIVRs im Prozessor ermöglicht die Gruppierung von Komponenten in separate Leistungsebenen, so dass die Leistung durch den FIVR für nur jene Komponenten in der Gruppe reguliert und geliefert wird. Während des Leistungsmanagements kann eine gegebene Leistungsebene von einem FIVR ab- oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten leistungsarmen Zustand gesetzt ist, während eine andere Leistungsebene eines anderen FIVR aktiv oder vollständig betrieben bleibt.
  • In einer Ausführungsform kann eine Halteleistungsebene während einigen Tiefschlafzuständen verwendet werden, um die E/A-Stifte für mehrere E/A-Signale einzuschalten, wie z. B. die Schnittstelle zwischen dem Prozessor und einem PCH, die Schnittstelle mit dem externen VR und die Schnittstelle mit EC 1635. Diese Halteleistungsebene betreibt auch einen Spannungsregulierer auf dem Chip, der den SRAM auf der Platine oder einen anderen Cache-Arbeitsspeicher unterstützt, in dem der Prozessorkontext während des Schlafzustandes gespeichert wird. Die Halteleistungsebene wird verwendet, um die Aufwecklogik des Prozessors einzuschalten, die die verschiedenen Aufweckquellensignale überwacht und verarbeitet.
  • Während des Leistungsmanagements, während andere Leistungsebenen ab- oder ausgeschaltet sind, wenn der Prozessor in bestimmte Tiefschlafzustände eintritt, bleibt die Halteleistungsebene eingeschaltet, um die vorstehend angeführten Komponenten zu unterstützen. Dies kann jedoch zu einem unnötigen Leistungsverbrauch oder Leistungsverlust führen, wenn diese Komponenten nicht erforderlich sind. Dazu können Ausführungsformen einen verbundenen Bereitschaftsschlafzustand bereitstellen, um den Prozessorkontext unter Verwendung einer zweckgebundenen Leistungsebene aufrechtzuerhalten. In einer Ausführungsform erleichtert der verbundene Bereitschaftsschlafzustand das Prozessoraufwecken unter Verwendung von Ressourcen eines PCH, der selbst in einem Baustein mit dem Prozessor vorhanden sein kann. In einer Ausführungsform erleichtert der verbundene Bereitschaftsschlafzustand das Aufrechterhalten von Prozessorarchitekurfunktionen im PCH bis zum Prozessoraufwecken, wobei dies das Abschalten aller unnötigen Prozessorkomponenten ermöglicht, die vorher während Tiefschlafzuständen eingeschaltet gelassen wurden, einschließlich des Abschaltens aller Takte. In einer Ausführungsform enthält der PCH einen Zeitstempelzähler (TSC) und eine verbundene Bereitschaftslogik zum Steuern des Systems während des verbundenen Bereitschaftszustandes. Der integrierte Spannungsregulierer für die Halteleistungsebene kann sich ebenso am PCH befinden.
  • In einer Ausführungsform kann während des verbundenen Bereitschaftszustandes ein integrierter Spannungsregulierer als zweckgebundene Leistungsebene funktionieren, die eingeschaltet bleibt, um den zweckgebundenen Cache-Arbeitsspeicher zu unterstützen, in dem der Prozessorkontext gespeichert ist, wie z. B. kritische Zustandsvariablen, wenn der Prozessor in die Tiefschlafzustände und den verbundenen Bereitschaftszustand eintritt. Dieser kritische Zustand kann Zustandsvariablen umfassen, die den Architektur-, Mikroarchitektur-, Fehlersuchzustands- und/oder ähnlichen Zustandsvariablen zugeordnet sind, die dem Prozessor zugeordnet sind.
  • Die Aufweckquellensignale vom EC 1635 können zum PCH anstelle des Prozessors während des verbundenen Bereitschaftszustandes gesendet werden, so dass der PCH die Aufweckverarbeitung anstelle des Prozessors managen kann. Außerdem wird der TSC im PCH aufrechterhalten, um das Aufrechterhalten von Prozessorarchitekturfunktionen zu erleichtern. Obwohl mit diesen speziellen Komponenten in der Ausführungsform von 16 gezeigt, ist der Schutzbereich der vorliegenden Erfindung selbstverständlich nicht in dieser Hinsicht begrenzt.
  • Die Leistungssteuerung im Prozessor kann zu verbesserten Leistungseinsparungen führen. Leistung kann beispielsweise dynamisch zwischen Kernen zugewiesen werden, individuelle Kerne können die Frequenz/Spannung ändern und mehrere tiefe leistungsarme Zustände können vorgesehen sein, um einen sehr niedrigen Leistungsverbrauch zu ermöglichen. Außerdem kann die dynamische Steuerung der Kerne oder von unabhängigen Kernabschnitten einen verringerten Leistungsverbrauch durch Abschalten von Komponenten, wenn sie nicht verwendet werden, vorsehen.
  • Einige Implementierungen können eine spezielle Leistungsmanagement-IC (PMIC) bereitstellen, um die Plattformleistung zu steuern. Unter Verwendung dieser Lösung kann ein System eine sehr geringe (z. B. weniger als 5 %) Batterieverschlechterung über eine verlängerte Dauer (z. B. 16 Stunden) sehen, wenn es sich in einem gegebenen Bereitschaftszustand befindet, wie z. B. wenn es sich in einem „Win8 Connected Standby“-Zustand befindet. In einem Win8-Leerlaufzustand kann eine Batterielebensdauer, die z. B. 9 Stunden überschreitet, verwirklicht werden (z. B. bei 150 Nits). Hinsichtlich der Videowiedergabe kann eine lange Batterielebensdauer verwirklicht werden, z. B. kann eine vollständige HD-Videowiedergabe für ein Minimum von 6 Stunden stattfinden. Eine Plattform in einer Implementierung kann eine Energiekapazität von z. B. 35 Wattstunden (Whr) für ein Win8 CS unter Verwendung eines SSD und (z. B.) 40-44 Whr für Win8 CS unter Verwendung eines HDD mit einer RST-Cache-Konfiguration aufweisen.
  • Eine spezielle Implementierung kann eine Unterstützung für 15 W nominale thermische CPU-Entwurfsleistung (TDP) mit einer konfigurierbaren CPU-TDP von bis zu ungefähr 25 W TDP-Entwurfspunkt schaffen. Die Plattform kann minimale Lüftungsöffnungen infolge der vorstehend beschriebenen thermischen Merkmale umfassen. Außerdem ist die Plattform kissenfreundlich (insofern als keine Heißluft auf den Benutzer bläst). Verschiedene maximale Temperaturpunkte können in Abhängigkeit vom Gehäusematerial verwirklicht werden. In einer Implementierung eines Kunststoffgehäuses (mindestens mit einem Deckel- oder Basisabschnitt aus Kunststoff) kann die maximale Betriebstemperatur 52 Grad Celsius (C) sein. Und für eine Implementierung eines Metallgehäuses kann die maximale Betriebstemperatur 46 °C sein.
  • In verschiedenen Implementierungen kann ein Sicherheitsmodul wie z. B. ein TPM in einen Prozessor integriert sein oder kann eine diskrete Vorrichtung sein, wie z. B. eine „TPM 2.0“-Vorrichtung. Mit einem integrierten Sicherheitsmodul, das auch als „Platform Trust Technology“ (PTT) bezeichnet wird, kann BIOS/Firmware aktiviert werden, um bestimmte Hardware-Merkmale für bestimmte Sicherheitsmerkmale freizulegen, einschließlich sicherer Befehle, sicheren Bootens, „Intel® Anti-Theft Technology“, „Intel® Identity Protection Technology“, „Intel® Trusted Execution Technology“ (XTX) und „Intel® Manageability Engine Technology“ zusammen mit sicheren Benutzerschnittstellen wie z. B. sicherer Tastatur und Anzeige.
  • Wenn man sich als nächstes 17 zuwendet, ist eine Ausführungsform eines Entwurfs eines Systems auf einem Chip (SOC) gemäß den Erfindungen dargestellt. Als spezielles erläuterndes Beispiel ist das SOC 1700 im Benutzergerät (UE) enthalten. In einer Ausführungsform bezieht sich das UE auf irgendeine Vorrichtung, die von einem Endbenutzer verwendet werden soll, um zu kommunizieren, wie z. B. ein in der Hand gehaltenes Telefon, Smartphone, Tablet, ultradünnes Notebook, Notebook mit Breitbandadapter oder irgendeine ähnliche Kommunikationsvorrichtung. Häufig verbindet ein UE mit einer Basisstation oder einem Knoten, der potentiell dem Wesen nach einer Mobilstation (MS) in einem GSM-Netz entspricht.
  • Hier umfasst das SOC 1700 2 Kerne - 1706 und 1707. Ähnlich zur obigen Erörterung können die Kerne 1706 und 1707 einer „Instruction Set Architecture“ entsprechen, wie z. B. dem Prozessor auf der Basis des „Intel® Architecture Core™, einem Prozessor von „Advanced Micro Devices, Inc.“ (AMD), einem Prozessor auf MIPS-Basis, einem Prozessorentwurf auf ARM-Basis oder einem Kunden davon sowie ihren Lizenznehmern oder Anwendern. Die Kerne 1706 und 1707 sind mit der Cache-Steuerung 1708 gekoppelt, die der Busschnittstelleneinheit 1709 und dem L2-Cache 1710 zugeordnet ist, um mit anderen Teilen des Systems 1700 zu kommunizieren. Die Zwischenverbindung 1710 umfasst eine Zwischenverbindung auf dem Chip wie z. B. eine IOSF, AMBA oder andere vorstehend erörterte Zwischenverbindung, die potentiell einen oder mehrere Aspekte der beschriebenen Erfindung implementiert.
  • Die Schnittstelle 1710 schafft Kommunikationskanäle für die anderen Komponenten, wie z. B. ein Teilnehmeridentitätsmodul (SIM) 1730, um mit einer SIM-Karte zu koppeln, einen Boot-ROM 1735, um einen Boot-Code für die Ausführung durch die Kerne 1706 und 1707 zu halten, um das SOC 1700 zu initialisieren und zu booten, eine SDRAM-Steuereinheit 1740, um mit einem externen Arbeitsspeicher (z. B. DRAM 1760) über eine Schnittstelle zu koppeln, eine Flash-Steuereinheit 1745, um mit einem nichtflüchtigen Arbeitsspeicher (z. B. Flash 1765) über eine Schnittstelle zu koppeln, eine Peripheriesteuerung 1350 (z. B. serielle periphere Schnittstelle), um mit Peripheriegeräten über eine Schnittstelle zu koppeln, Video-Codecs 1720 und eine Videoschnittstelle 1725, um eine Eingabe anzuzeigen und zu empfangen (z. B. berührungsfähige Eingabe), eine GPU 1715, um auf Graphik bezogene Berechnungen durchzuführen, usw. Beliebige von diesen Schnittstellen können hier beschriebene Aspekte der Erfindung beinhalten.
  • Außerdem stellt das System Peripheriegeräte für die Kommunikation dar, wie z. B. ein Bluetooth-Modul 1770, ein 3G-Modem 1775, ein GPS 1785 und WiFi 1785. Es ist zu beachten, wie vorstehend angegeben, dass ein UE einen Funk für die Kommunikation umfasst. Folglich sind diese peripheren Kommunikationsmodule nicht alle erforderlich. In einem UE soll jedoch eine gewisse Form für die externe Kommunikation enthalten sein.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, erkennt der Fachmann auf dem Gebiet zahlreiche Modifikationen und Variationen davon. Es ist beabsichtigt, dass die beigefügten Ansprüche alle solchen Modifikationen und Variationen abdecken, die in den wahren Gedanken und Schutzbereich dieser vorliegenden Erfindung fallen.
  • Ein Entwurf kann verschiedene Stufen durchlaufen, von der Erzeugung bis zur Simulation bis zur Herstellung. Daten, die einen Entwurf darstellen, können den Entwurf in einer Anzahl von Weisen darstellen. Wie es bei Simulationen nützlich ist, kann die Hardware zuerst unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Schaltungsebenenmodell mit Logik- und/oder Transistor-Gates in einigen Stufen des Entwurfsprozesses erzeugt werden. Ferner erreichen die meisten Entwürfe in einer gewissen Stufe ein Niveau von Daten, die die physikalische Anordnung von verschiedenen Vorrichtungen im Hardware-Modell darstellen. In dem Fall, in dem herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die die Anwesenheit oder Abwesenheit von verschiedenen Merkmalen auf verschiedenen Maskenschichten für Masken festlegen, die verwendet werden, um die integrierte Schaltung zu erzeugen. In irgendeiner Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert werden. Ein Arbeitsspeicher oder ein magnetischer oder optischer Speicher wie z. B. eine Platte kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über eine optische oder elektrische Welle übertragen werden, die moduliert oder anderweitig erzeugt wird, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder Entwurf angibt oder trägt, übertragen wird, wird in dem Umfang, in dem Kopieren, Puffern oder Neuübertragung des elektrischen Signals durchgeführt wird, eine neue Kopie hergestellt. Folglich kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem konkreten, maschinenlesbaren Medium zumindest vorübergehend einen Gegenstand wie z. B. Informationen speichern, die in einer Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpert.
  • Ein Modul, wie hier verwendet, bezieht sich auf irgendeine Kombination von Hardware, Software und/oder Firmware. Als Beispiel umfasst ein Modul Hardware wie z. B. einen Mikrocontroller, der einem nichttransitorischen Medium zugeordnet ist, um einen Code zu speichern, der dazu ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die speziell konfiguriert ist, um den Code zu erkennen und/oder auszuführen, der auf einem nichttransitorischen Medium gehalten werden soll. In einer anderen Ausführungsform bezieht sich ferner die Verwendung eines Moduls auf das nichttransitorische Medium mit dem Code, der speziell dazu ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie gefolgert werden kann, kann in noch einer anderen Ausführungsform sich der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichttransitorischen Mediums beziehen. Modulgrenzen, die als separat dargestellt sind, variieren häufig üblicherweise und überlappen potentiell. Ein erstes und ein zweites Modul können sich beispielsweise Hardware, Software, Firmware oder eine Kombination davon teilen, während potentiell eine gewisse unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware wie z. B. Transistoren, Register oder andere Hardware, wie z. B. programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „um“ oder „dazu konfiguriert“ bezieht sich in einer Ausführungsform auf die Anordnung, Zusammensetzung, Herstellung, das Angebot zum Verkauf, den Import und/oder den Entwurf eines Geräts, einer Hardware, einer Logik oder eines Elements, um eine festgelegte oder bestimmte Aufgabe durchzuführen. In diesem Beispiel ist ein Gerät oder ein Element davon, das nicht arbeitet, dennoch „dazu konfiguriert“, eine festgelegte Aufgabe durchzuführen, wenn es dazu ausgelegt, gekoppelt und/oder verbunden ist, um die festgelegte Aufgabe durchzuführen. Als rein erläuterndes Beispiel kann ein Logikgatter eine 0 oder eine 1 während der Operation liefern. Aber ein Logikgatter, das „dazu konfiguriert“ ist, ein Freigabesignal zu einem Takt zu liefern, umfasst nicht jedes potentielle Logikgatter, das eine 1 oder 0 liefern kann. Stattdessen ist das Logikgatter eines, das in einer gewissen Weise gekoppelt ist, in der während der Operation die 1- oder 0-Ausgabe den Takt freigeben soll. Wiederum ist zu beachten, dass die Verwendung des Begriffs „dazu konfiguriert“, keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand eines Geräts, einer Hardware und/oder eines Elements bezieht, wobei im latenten Zustand das Gerät, die Hardware und/oder das Element dazu ausgelegt ist, eine spezielle Aufgabe durchzuführen, wenn das Gerät, die Hardware und/oder das Element arbeiten.
  • Ferner bezieht sich die Verwendung der Ausdrücke „in der Lage zu“ und/oder „betriebsfähig zu“ in einer Ausführungsform auf irgendein Gerät, eine Logik, eine Hardware und/oder ein Element, das in einer solchen Weise entworfen ist, dass die Verwendung des Geräts, der Logik, der Hardware und/oder des Elements in einer festgelegten Weise ermöglicht wird. Wie vorstehend ist zu beachten, dass die Verwendung zu, in der Lage zu oder betriebsfähig zu in einer Ausführungsform sich auf den latenten Zustand eines Geräts, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei das Gerät, die Logik, die Hardware und/oder das Element nicht arbeiten, aber in einer solchen Weise entworfen sind, dass die Verwendung eines Geräts in einer festgelegten Weise ermöglicht wird.
  • Ein Wert, wie hier verwendet, umfasst irgendeine bekannte Darstellung einer Zahl, eines Zustandes, eines logischen Zustandes oder eines binären logischen Zustandes. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1-en und 0-en bezeichnet, die einfach binäre Logikzustände darstellen. Eine 1 bezieht sich beispielsweise auf einen hohen Logikpegel und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle wie z. B. ein Transistor oder eine Flash-Zelle in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Andere Darstellungen von Werten in Computersystemen wurden jedoch verwendet. Die Dezimalzahl zehn kann beispielsweise auch als binärer Wert von 1010 und Hexadezimalbuchstabe A dargestellt werden. Daher umfasst ein Wert irgendeine Darstellung von Informationen, die in einem Computersystem gehalten werden können.
  • Überdies können Zustände durch Werte oder Teile von Werten dargestellt werden. Als Beispiel kann ein erster Wert wie z. B. eine logische Eins einen Vorgabe- oder Anfangszustand darstellen, während ein zweiter Wert wie z. B. eine logische Null einen Nicht-Vorgabe-Zustand darstellen kann. Außerdem beziehen sich die Begriffe Rücksetzen und Setzen in einer Ausführungsform auf einen Vorgabe- bzw. einen aktualisierten Wert oder Zustand. Ein Vorgabewert umfasst beispielsweise potentiell einen hohen logischen Wert, d. h. Rücksetzen, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, d. h. Setzen, umfasst. Es ist zu beachten, dass irgendeine Kombination von Werten verwendet werden kann, um irgendeine Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die vorstehend dargelegt sind, können über Befehle oder einen Code implementiert werden, der auf einem für eine Maschine zugänglichen, maschinenlesbaren, für einen Computer zugänglichen oder computerlesbaren Medium gespeichert ist, die durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches für eine Maschine zugängliches/maschinenlesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die für eine Maschine wie z. B. einen Computer oder ein elektronisches System lesbar ist. Ein nichttransitorisches für eine Maschine zugängliches Medium umfasst beispielsweise einen Direktzugriffsarbeitsspeicher (RAM), wie z. B. einen statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Arbeitsspeichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die von transitorischen (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von nichttransitorischen Medien unterschieden werden sollen, die Informationen davon empfangen können.
  • Befehle, die verwendet werden, um eine Logik zu programmieren, um Ausführungsformen der Erfindung durchzuführen, können innerhalb eines Arbeitsspeichers im System, wie z. B. eines DRAM, Cache, Flash-Arbeitsspeichers oder eines anderen Speichers, gespeichert werden. Ferner können die Befehle über ein Netz oder durch andere computerlesbare Medien verteilt werden. Folglich kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form umfassen, die durch eine Maschine (z. B. einen Computer) lesbar ist, ist jedoch nicht auf Disketten, optische Platten, eine Kompaktdisk, einen Festwertspeicher (CD-ROMs) und magnetooptische Platten, Festwertspeicher (ROMs), Direktzugriffsarbeitsspeicher (RAM), löschbaren programmierbaren Festwertarbeitsspeicher (EPROM), elektrisch löschbaren programmierbaren Festwertarbeitsspeicher (EEPROM), magnetische oder optische Karten, einen Flash-Arbeitsspeicher oder einen konkreten, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, begrenzt. Folglich umfasst das computerlesbare Medium irgendeinem Typ von konkretem maschinenlesbarem Medium, das zum Speichern oder Übertragen von elektronischen Befehlen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • In dieser ganzen Patentbeschreibung bedeutet eine Bezugnahme auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Folglich beziehen sich die Erscheinungen der Ausdrücke „in einer einzelnen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser ganzen Patentbeschreibung nicht notwendigerweise alle auf dieselbe Ausführungsform. Ferner können die speziellen Merkmale, Strukturen oder Eigenschaften in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorangehenden Patentbeschreibung wurde eine ausführliche Beschreibung in Bezug auf spezielle beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran durchgeführt werden können, ohne vom breiteren Gedanken und Schutzbereich der Erfindung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Patentbeschreibung und die Zeichnungen sollen folglich vielmehr in einer erläuternden als einschränkenden Hinsicht betrachtet werden. Ferner bezieht sich die vorangehende Verwendung der Ausführungsform und einer anderen beispielhaften Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie potentiell dieselbe Ausführungsform beziehen.
  • Diese Offenbarung beschreibt, wie mehrere E/A-Vorrichtungen die Cache-Zuweisung und folglich die Latenz und Brandbreite, die von den Transaktionen gesehen werden, unterscheiden können. Ein Verwendungsfall, der von einer solchen Lösung profitieren könnte, sind das „Industrial Control Applications Real-Time“-Steuernetz und die Normkommunikationsnetzsteuereinheiten. Die Transaktionen vom Echtzeitnetz müssen zur CPU so schnell wie möglich geliefert werden, ebenso muss auf Transaktionen, die über das Echtzeitnetz übertragen werden sollen, mit so wenig Latenz und Jitter wie möglich zugegriffen werden.
  • Technologien wie z. B. DDIO haben einen signifikanten Vorteil für gegen die Latenz empfindliche Transaktionen bereitgestellt; Implementierungen von DDIO stellen jedoch keine Unterscheidung zwischen E/A-Verkehr mit niedriger Priorität und E/A-Verkehr mit hoher Priorität bereit und DDIO-Transaktionen werden aus dem LLC auf der Basis eines Pseudo-Mechanismus von „zuletzt verwendet“ exmittiert, der keine Weise zur Unterscheidung zwischen den beiden aufweist. 18 ist ein Graph, der die inkrementalen Vorteile von DDIO, Cache-QoS und schließlich der hier beschriebenen Konzepte zeigt.
  • Der erste Satz von Daten auf dem Graphen zeigt die mittlere Latenz einer PCIe-Vorrichtung, die ein Lesen über TC1 in vier Szenarios ausgibt, wobei diese Szenarios sind, erstens, wenn sich das System im Leerlauf befindet, als nächstes, wenn eine andere PCIe-Vorrichtung Lesevorgänge ausgibt, als nächstes, wenn die CPU-Kerne CPU-zu-Arbeitsspeicher-Verkehr erzeugen, und schließlich, wenn sowohl die Kerne als auch die andere PCIe-Vorrichtung aktiv sind. Aus diesem Satz von Daten können wir sehen, dass die Leerlauflatenz und die gleichzeitige PCIe-Latenz sehr ähnlich sind, wenn jedoch die CPU-Kerne das Erzeugen von Verkehr starten, sehen wir eine Spitze in der Latenz und diese Spitze wird durch das Hinzufügen von PCIe-Verkehr von einer anderen Vorrichtung weiter verschlimmert.
  • Der zweite Satz von Daten auf dem Graphen zeigt dieselben vier Szenarios, aber nun mit eingeschaltetem DDIO. Es ist interessant zu beachten, dass DDIO die Leerlauflatenz signifikant verringert, da wir nun vielmehr zum LLC als zum Arbeitsspeicher gehen, aber die zwei Szenarios des schlimmsten Falls zeigen immer noch signifikante Erhöhungen der Latenz über den Leerlauf.
  • Der dritte Satz von Daten verwendet Cache-QoS, um sicherzustellen, dass keine Überlappung zwischen den LLC-Wegen, die durch die Kerne verwendet werden, und jenen, die von der E/A-Vorrichtung verwendet werden, besteht, dies bringt alles bis auf den letzten Testfall auf nahezu Leerlauflatenzen.
  • Der letzte Graph zeigt die mittlere PCIe-Leselatenz mit aktivierter Verkehrsklassen-Cache-Zuweisungssimulation. Wie im Fall mit DDIO und CAT ist die Latenz mit gleichzeitigem CPU-Verkehr nahezu Leerlauf. Mit Verkehrsklassen-Cache-Zuweisung verwendet jedoch der gleichzeitige PCIe-Verkehr eine andere Wegemaske und ist daher außerstande, die Cache-Zeilen zu exmittieren, die für das Testen verwendet werden. Dies führt zu einer nahezu Leerlauflatenz für den Fall mit gleichzeitigem PCIe-Verkehr und gleichzeitigem CPU- und PCIe-Verkehr.
  • Der endgültige Satz von Daten wurde unter Verwendung von Cache-QoS gesammelt, um die vorgeschlagene Erfindung zu simulieren. Die Transaktionen von einer Vorrichtung mit einer Verkehrsklasse von physikalischen TC1-Zieladressen wurden in Cache-Wege vorab zugewiesen, auf die nicht durch entweder DDIO oder CPUs abgezielt wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 14/866862 [0001]
  • Zitierte Nicht-Patentliteratur
    • „METHOD, APPARATUS, AND SYSTEM FOR ALLOCATING CACHE USING TRAFFIC CLASS‟ [0001]

Claims (19)

  1. Gerät, das Folgendes umfasst: ein Mittel zum Empfangen eines Datenpakets, wobei das Datenpaket Daten umfasst; ein Mittel zum Identifizieren einer Verkehrsklasse des Datenpakets; und ein Mittel zum selektiven Speichern der Daten im Cache-Arbeitsspeicher oder Systemarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets.
  2. Gerät nach Anspruch 1, wobei das Gerät ein Mittel zum Empfangen des Datenpakets über eine Verbindung umfasst, die mit einer Zwischenverbindung auf der Basis von „Peripheral Component Interface Express“ (PCIe) kompatibel ist.
  3. Gerät nach Anspruch 1, wobei das Datenpaket einen Paketkopf umfasst, wobei der Paketkopf ein Transaktionsdeskriptorfeld umfasst, wobei das Transaktionsdeskriptorfeld die Verkehrsklasse des Datenpakets umfasst, und wobei die Verkehrsklasse ein Transaktionsschichtpaketetikett (TLP-Etikett) des Datenpakets ist.
  4. Gerät nach Anspruch 1, wobei die Verkehrsklasse verwendet wird, um Datenpakete mit einer Verkehrsklasse mit hoher Priorität von Datenpaketen mit einer Verkehrsklasse mit niedriger Priorität zu unterscheiden.
  5. Gerät nach Anspruch 4, mit einem Mittel zum Abbilden der Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität und einem Mittel zum Abbilden der Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität, und einem Mittel zum Speichern von Datenpaketen mit einer Verkehrsklasse, die auf die Kategorie von Daten mit hoher Priorität abgebildet wird, im Cache-Arbeitsspeicher und einem Mittel zum selektiven Speichern von Daten von Datenpaketen mit einer Verkehrsklasse, die auf eine Kategorie von Daten mit niedriger Priorität abgebildet wird, im Systemarbeitsspeicher.
  6. Gerät nach Anspruch 1, mit einem Mittel zum Abbilden der Verkehrsklasse des Datenpakets auf eine Dienstklasse und selektiven Speichern des Datenpakets im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Dienstklasse.
  7. Gerät nach Anspruch 6, mit einem Mittel zum Abbilden der Verkehrsklasse mit hoher Priorität auf eine Dienstklasse mit hoher Priorität und Abbilden der Verkehrsklasse mit niedriger Priorität auf eine Dienstklasse mit niedriger Priorität und mit einem Mittel zum selektiven Speichern von Datenpaketen mit einer Verkehrsklasse, die auf eine Dienstklasse mit hoher Priorität abgebildet wird, im Cache-Arbeitsspeicher und selektiven Speichern von Datenpaketen mit einer Verkehrsklasse, die auf eine Dienstklasse mit niedriger Priorität abgebildet wird, im Systemarbeitsspeicher.
  8. Gerät nach Anspruch 6, mit einem Mittel zum Abbilden der Verkehrsklasse mit hoher Priorität auf eine Dienstklasse mit hoher Priorität und Abbilden der Verkehrsklasse mit niedriger Priorität auf eine Dienstklasse mit niedriger Priorität und mit einem Mittel zum Bestimmen, ob der Verkehr, der auf die Dienstklasse mit hoher Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann, und Bestimmen, ob der Verkehr, der auf die Dienstklasse mit niedriger Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann, und einem Mittel zum Bestimmen, dass der Dienstklassenverkehr mit niedriger Priorität nicht in den Cache-Arbeitsspeicher zugewiesen werden kann, und zum Speichern des Dienstklassenverkehrs mit niedriger Priorität im Systemarbeitsspeicher.
  9. Gerät nach Anspruch 1, mit einem Dienstklassenwegemaskenregister, wobei das Dienstklassenwegemaskenregister Bits umfasst, die einer Verkehrsklassenabbildung entsprechen und verwendet werden, um Wege des Cache-Arbeitsspeichers zum Speichern von Datenpaketen mit einer Verkehrsklasse, die auf eine entsprechende Dienstklasse abgebildet wird, zu identifizieren, und wobei jede Dienstklasse einer Wegemaske des Cache-Arbeitsspeichers entspricht, und das Gerät ein Mittel zum selektiven Speichern der Datenpakete im Cache-Arbeitsspeicher auf der Basis der Wegemaske, die der Dienstklasse entspricht, umfasst.
  10. Computerprogrammprodukt, das konkret auf einem nichttransitorischen computerlesbaren Medium verkörpert ist, wobei das Computerprogrammprodukt Befehle umfasst, die betriebsfähig sind, wenn sie ausgeführt werden, um: ein Datenpaket zu empfangen, eine Verkehrsklasse des Datenpakets zu bestimmen, und selektiv das Datenpaket direkt im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Verkehrsklasse des Datenpakets zu speichern.
  11. Computerprogrammprodukt nach Anspruch 10, wobei das Datenpaket über eine Verbindung empfangen wird, die mit einer Zwischenverbindung auf der Basis von „Peripheral Component Interface Express“ (PCIe) kompatibel ist.
  12. Computerprogrammprodukt nach Anspruch 10, wobei das Datenpaket einen Paketkopf umfasst, wobei der Paketkopf ein Transaktionsdeskriptorfeld umfasst, wobei das Transaktionsdeskriptorfeld die Verkehrsklasse des Datenpakets umfasst.
  13. Computerprogrammprodukt nach Anspruch 10, wobei die Verkehrsklasse ein Transaktionsschichtpaketetikett (TLP-Etikett) des Datenpakets ist.
  14. Computerprogrammprodukt nach Anspruch 10, wobei die Verkehrsklasse verwendet wird, um Datenpakete mit einer Verkehrsklasse mit hoher Priorität von Datenpaketen mit einer Verkehrsklasse mit niedriger Priorität zu unterscheiden.
  15. Computerprogrammprodukt nach Anspruch 14, wobei die Befehle, wenn sie ausgeführt werden, dazu konfiguriert sind, die Verkehrsklasse des Datenpakets auf eine entsprechende Kategorie von Daten abzubilden und das Datenpaket selektiv im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Kategorie von Daten zu speichern.
  16. Computerprogrammprodukt nach Anspruch 15, wobei die Befehle, wenn sie ausgeführt werden, dazu konfiguriert sind, die Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität abzubilden und die Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität abzubilden und selektiv Datenpakete mit einer Verkehrsklasse, die auf die Kategorie von Daten mit hoher Priorität abgebildet wird, im Cache-Arbeitsspeicher zu speichern und selektiv Datenpakete mit einer Verkehrsklasse, die auf eine Kategorie von Daten mit niedriger Priorität abgebildet wird, im Systemarbeitsspeicher zu speichern.
  17. Computerprogrammprodukt nach Anspruch 15, wobei die Befehle, wenn sie ausgeführt werden, dazu konfiguriert sind, die Verkehrsklasse mit hoher Priorität auf eine Kategorie von Daten mit hoher Priorität abzubilden und die Verkehrsklasse mit niedriger Priorität auf eine Kategorie von Daten mit niedriger Priorität abzubilden und zu bestimmen, ob der Verkehr, der auf die Kategorie von Daten mit hoher Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann, und zu bestimmen, ob der Verkehr, der auf die Kategorie von Daten mit niedriger Priorität abgebildet wird, einem Bereich des Cache-Arbeitsspeichers zugewiesen werden kann.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die Befehle, wenn sie ausgeführt werden, dazu konfiguriert sind, zu bestimmen, dass die Kategorie von Datenverkehr mit niedriger Priorität nicht in den Cache-Arbeitsspeicher zugewiesen werden kann, und die Kategorie von Datenverkehr mit niedriger Priorität im Systemarbeitsspeicher zu speichern.
  19. Computerprogrammprodukt nach Anspruch 10, wobei die Befehle, wenn sie ausgeführt werden, dazu konfiguriert sind, die Verkehrsklasse des Datenpakets auf eine entsprechende Kategorie von Daten abzubilden, einen Cache-Bereich des Cache-Arbeitsspeichers, der der Kategorie von Daten zugeordnet ist, zu identifizieren und selektiv das Datenpaket im Cache-Arbeitsspeicher oder im Systemarbeitsspeicher auf der Basis der Kategorie von Daten durch einen Cache-Weg zu speichern, der für die Kategorie von Daten reserviert ist.
DE112016004300.7T 2015-09-26 2016-08-24 Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse Pending DE112016004300T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/866,862 2015-09-26
US14/866,862 US10120809B2 (en) 2015-09-26 2015-09-26 Method, apparatus, and system for allocating cache using traffic class
PCT/US2016/048256 WO2017052909A1 (en) 2015-09-26 2016-08-24 A method, apparatus, and system for allocating cache using traffic class

Publications (1)

Publication Number Publication Date
DE112016004300T5 true DE112016004300T5 (de) 2018-06-21

Family

ID=58387273

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016004300.7T Pending DE112016004300T5 (de) 2015-09-26 2016-08-24 Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse

Country Status (4)

Country Link
US (1) US10120809B2 (de)
CN (2) CN107924380B (de)
DE (1) DE112016004300T5 (de)
WO (1) WO2017052909A1 (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108027642B (zh) * 2015-06-24 2021-11-02 英特尔公司 用于隔离输入/输出计算资源的系统和方法
US9859974B2 (en) * 2015-06-25 2018-01-02 International Business Machines Corporation Rerouting bus data signals from faulty signal carriers to existing healthy signal carriers
US10120809B2 (en) 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class
TWI588658B (zh) * 2015-10-20 2017-06-21 旺宏電子股份有限公司 I/o匯流排共用記憶體系統
US10025741B2 (en) 2016-01-13 2018-07-17 Samsung Electronics Co., Ltd. System-on-chip, mobile terminal, and method for operating the system-on-chip
US10404603B2 (en) * 2016-01-22 2019-09-03 Citrix Systems, Inc. System and method of providing increased data optimization based on traffic priority on connection
US10114790B2 (en) * 2016-05-17 2018-10-30 Microsemi Solutions (U.S.), Inc. Port mirroring for peripheral component interconnect express devices
US10762030B2 (en) * 2016-05-25 2020-09-01 Samsung Electronics Co., Ltd. Storage system, method, and apparatus for fast IO on PCIE devices
US10713202B2 (en) * 2016-05-25 2020-07-14 Samsung Electronics Co., Ltd. Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
US11042496B1 (en) * 2016-08-17 2021-06-22 Amazon Technologies, Inc. Peer-to-peer PCI topology
US10372642B2 (en) * 2016-09-29 2019-08-06 Intel Corporation System, apparatus and method for performing distributed arbitration
US10846242B1 (en) * 2016-12-29 2020-11-24 Amazon Technologies, Inc. Configurable way allocation for cache
CN109428827B (zh) * 2017-08-21 2022-05-13 深圳市中兴微电子技术有限公司 一种流量自适应的缓存分配装置及方法、onu设备
US10366027B2 (en) * 2017-11-29 2019-07-30 Advanced Micro Devices, Inc. I/O writes with cache steering
GB2570110B (en) * 2018-01-10 2020-04-15 Advanced Risc Mach Ltd Speculative cache storage region
US10917198B2 (en) * 2018-05-03 2021-02-09 Arm Limited Transfer protocol in a data processing network
US10754783B2 (en) * 2018-06-29 2020-08-25 Intel Corporation Techniques to manage cache resource allocations for a processor cache
CN111290305B (zh) * 2018-12-06 2021-05-04 航天科工惯性技术有限公司 多套惯导系统多路数字量采集与处理防冲突方法及系统
CN109947363B (zh) * 2018-12-11 2022-10-14 深圳供电局有限公司 一种分布式存储系统的数据缓存方法
KR20200087595A (ko) * 2019-01-11 2020-07-21 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2020144410A (ja) 2019-03-04 2020-09-10 キオクシア株式会社 メモリコントローラ
US10866834B2 (en) * 2019-03-29 2020-12-15 Intel Corporation Apparatus, method, and system for ensuring quality of service for multi-threading processor cores
WO2020214153A1 (en) * 2019-04-16 2020-10-22 Hewlett-Packard Development Company, L.P. Components power state control for input pens
US11088967B2 (en) * 2019-04-26 2021-08-10 Intel Corporation Shared resources for multiple communication traffics
EP3942749A4 (de) 2019-05-23 2023-06-07 Hewlett Packard Enterprise Development LP Optimiertes adaptives routing zur reduzierung der anzahl von sprüngen
CN110267312B (zh) * 2019-06-17 2023-09-19 腾讯科技(深圳)有限公司 数据传输的方法、管理服务质量流的方法、设备及介质
CN110753001A (zh) * 2019-10-25 2020-02-04 珠海格力电器股份有限公司 数据的高效传输方法及装置、存储介质
US20200136943A1 (en) * 2019-12-27 2020-04-30 Intel Corporation Storage management in a data management platform for cloud-native workloads
CN111262686A (zh) * 2020-01-17 2020-06-09 通号万全信号设备有限公司 一种rssp-i安全通信的安全校验方法
US11132321B2 (en) * 2020-02-26 2021-09-28 Quanta Computer Inc. Method and system for automatic bifurcation of PCIe in BIOS
CN111615150B (zh) * 2020-05-13 2023-09-08 深圳市广和通无线股份有限公司 基于PCIe接口的5G数据传输方法、装置、设备及存储介质
US11949595B2 (en) * 2020-06-26 2024-04-02 Intel Corporation Reflection routing as a framework for adaptive modular load balancing for multi-hierarchy network on chips
JP2022038688A (ja) 2020-08-27 2022-03-10 キオクシア株式会社 メモリシステムおよび制御方法
US11580044B2 (en) 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
US11588745B2 (en) 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11956156B2 (en) * 2020-09-10 2024-04-09 Intel Corporation Dynamic offline end-to-end packet processing based on traffic class
EP4248590A4 (de) * 2020-11-20 2024-05-01 Ericsson Telefon Ab L M Verfahren und system für effiziente ein-/ausgabeübertragung in netzwerkvorrichtungen
US11431649B1 (en) * 2021-03-26 2022-08-30 Arm Limited Interconnect resource allocation
CN113645161B (zh) * 2021-07-28 2022-12-27 苏州浪潮智能科技有限公司 一种直接媒体接口带宽分配器和服务器
US11487672B1 (en) 2021-08-20 2022-11-01 International Business Machines Corporation Multiple copy scoping bits for cache memory
US11620231B2 (en) 2021-08-20 2023-04-04 International Business Machines Corporation Lateral persistence directory states
CN113821324B (zh) * 2021-09-17 2022-08-09 海光信息技术股份有限公司 处理器的高速缓存系统、方法、设备和计算机介质
CN113839968B (zh) * 2021-11-29 2022-02-18 军事科学院系统工程研究院网络信息研究所 一种基于通道划分的安全平面隔离方法和系统
CN114915499B (zh) * 2022-07-15 2022-10-28 飞腾信息技术有限公司 数据传输方法、相关装置、系统及计算机可读存储介质
CN115102780B (zh) * 2022-07-15 2022-12-06 飞腾信息技术有限公司 数据传输方法、相关装置、系统及计算机可读存储介质
CN115359059B (zh) * 2022-10-20 2023-01-31 一道新能源科技(衢州)有限公司 太阳能电池性能测试方法及系统

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219688B1 (en) * 1993-11-30 2001-04-17 Texas Instruments Incorporated Method, apparatus and system for sum of plural absolute differences
GB2335762C (en) * 1998-03-25 2008-01-10 Advanced Risc Mach Ltd Write buffering in a data processing apparatus
US6272567B1 (en) * 1998-11-24 2001-08-07 Nexabit Networks, Inc. System for interposing a multi-port internally cached DRAM in a control path for temporarily storing multicast start of packet data until such can be passed
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
WO2002076042A1 (en) * 2001-03-19 2002-09-26 International Business Machines Corporation Cache entry selection method and apparatus
US7032072B1 (en) * 2001-12-31 2006-04-18 Packeteer, Inc. Method and apparatus for fast lookup of related classification entities in a tree-ordered classification hierarchy
US7103735B2 (en) 2003-11-26 2006-09-05 Intel Corporation Methods and apparatus to process cache allocation requests based on priority
US7246191B2 (en) * 2005-03-31 2007-07-17 Intel Corporation Method and apparatus for memory interface
US7424565B2 (en) * 2005-11-16 2008-09-09 Sun Microsystems, Inc. Method and apparatus for providing efficient output buffering and bus speed matching
US7424566B2 (en) 2005-11-16 2008-09-09 Sun Microsystems, Inc. Method, system, and apparatus for dynamic buffer space allocation
US7552288B2 (en) 2006-08-14 2009-06-23 Intel Corporation Selectively inclusive cache architecture
US8095626B2 (en) * 2006-08-31 2012-01-10 Realnetworks, Inc. System and method for configuring a client electronic device
US7555597B2 (en) 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US20080063004A1 (en) 2006-09-13 2008-03-13 International Business Machines Corporation Buffer allocation method for multi-class traffic with dynamic spare buffering
US7734859B2 (en) * 2007-04-20 2010-06-08 Nuon, Inc Virtualization of a host computer's native I/O system architecture via the internet and LANs
US8160085B2 (en) 2007-12-21 2012-04-17 Juniper Networks, Inc. System and method for dynamically allocating buffers based on priority levels
US7802057B2 (en) 2007-12-27 2010-09-21 Intel Corporation Priority aware selective cache allocation
US7913024B2 (en) 2008-12-09 2011-03-22 International Business Machines Corporation Differentiating traffic types in a multi-root PCI express environment
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
WO2012023149A2 (en) * 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd Multi-root input output virtualization aware switch
US8495435B2 (en) * 2010-09-22 2013-07-23 Intel Corporation Dynamic physical memory replacement through address swapping
US8566494B2 (en) 2011-03-31 2013-10-22 Intel Corporation Traffic class based adaptive interrupt moderation
US9122847B2 (en) 2011-11-10 2015-09-01 Christopher Bernard Johnson Mobile device peripherals management system and multi-data stream technology (MdS)
US8850610B2 (en) 2011-11-10 2014-09-30 Christopher Bernard Johnson Mobile device peripherals management system and multi-data stream technology (MdS)
US9455913B2 (en) 2013-02-15 2016-09-27 Broadcom Corporation Management of traffic buffering in internal and external memories in a passive optical network
US9223710B2 (en) 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
US9384135B2 (en) * 2013-08-05 2016-07-05 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method of caching hinted data
US10120809B2 (en) 2015-09-26 2018-11-06 Intel Corporation Method, apparatus, and system for allocating cache using traffic class

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
„METHOD, APPARATUS, AND SYSTEM FOR ALLOCATING CACHE USING TRAFFIC CLASS‟

Also Published As

Publication number Publication date
CN107924380A (zh) 2018-04-17
WO2017052909A1 (en) 2017-03-30
CN107924380B (zh) 2021-08-03
CN112433963A (zh) 2021-03-02
US20170091108A1 (en) 2017-03-30
US10120809B2 (en) 2018-11-06

Similar Documents

Publication Publication Date Title
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
US10560081B2 (en) Method, apparatus, system for centering in a high performance interconnect
KR101815180B1 (ko) 고성능 인터커넥트 코히어런스 프로토콜
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
CN107003971B (zh) 用于高性能互连中的嵌入式流通道的方法、装置、系统
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112014006183T5 (de) Vorrichtung, Verfahren und System für einen Schnellkonfigurationsmechanismus
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112016004332T5 (de) Verfahren, vorrichtungen und systeme zum taktversatzausgleich von datenverbindungaufteilungen
DE102019132213A1 (de) Adressenübersetzung für skalierbare verlinkte Vorrichtungen
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102019109858A1 (de) Breiten- und Frequenzumsetzung mit PHY-Schicht-Vorrichtungen
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112013007734T5 (de) Mehrchipgehäuseverbindung
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition
DE102018125241A1 (de) Mechanismus einer asymmetrischen Vollduplex-USB-SS-Verbindungsstrecke
DE102022119705A1 (de) Cluster-identifikatorneuabbildung für asymmetrische topologien
DE112017004891T5 (de) Multidimensionale Optimierung von elektrischen Parametern zum Trainieren eines Speichers
DE102022129397A1 (de) Beschleuniger-fabric für diskrete grafik
DE102020102841A1 (de) Vorabrufen von schreibberechtigungen in einen adressübersetzungs-cache
DE102020134763A1 (de) Closed chassis debugging through tunneling

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R130 Divisional application to

Ref document number: 112016007596

Country of ref document: DE