DE102020134763A1 - Closed chassis debugging through tunneling - Google Patents

Closed chassis debugging through tunneling Download PDF

Info

Publication number
DE102020134763A1
DE102020134763A1 DE102020134763.4A DE102020134763A DE102020134763A1 DE 102020134763 A1 DE102020134763 A1 DE 102020134763A1 DE 102020134763 A DE102020134763 A DE 102020134763A DE 102020134763 A1 DE102020134763 A1 DE 102020134763A1
Authority
DE
Germany
Prior art keywords
interface
serial
hti
tracking data
trace
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
DE102020134763.4A
Other languages
English (en)
Inventor
Gilad Shayevitz
Tsvika Kurts
Vladislav Kopzon
Reuven Rozic
Yaniv Hayat
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 DE102020134763A1 publication Critical patent/DE102020134763A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • 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/0042Universal serial bus [USB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein System kann eine Hostmaschine beinhalten, die mit einer zu testenden Vorrichtung (Device Under Test, DUT) über eine serielle Verbindungsstrecke verbunden ist. Die Hostmaschine kann eine serielle Schnittstelle, wie etwa eine Thunderbolt-Schnittstelle, und einen Speicher aufweisen. Die DUT kann eine Verfolgungsdatenquelle, eine Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI) zum Empfangen von Verfolgungsdaten von der Verfolgungsdatenquelle, eine serielle Schnittstelle (wie etwa eine Thunderbolt-Schnittstelle) und eine PIPE-Schnittstelle, welche die HTI mit der seriellen Schnittstelle verbindet, aufweisen. Die HTI soll die Verfolgungsdaten über die PIPE-Schnittstelle an die serielle Schnittstelle senden. Die serielle Schnittstelle soll die Verfolgungsdaten in ein konformes Paketformat packen und die Verfolgungsdaten als Paket über die serielle Verbindungsstrecke an die Hostmaschine senden. Die Hostmaschine kann die Verfolgungsdaten an der hostseitigen seriellen Schnittstelle empfangen, die Verfolgungsdaten im Speicher speichern und die Verfolgungsdaten zum Debuggen der DUT verarbeiten.

Description

  • STAND DER TECHNIK
  • Serielle Zwischenverbindungen (Interconnects) bieten Möglichkeiten zum Transportieren von Bitströmen von einer Komponente zu einer anderen. Bei modernen Rechenvorrichtungen werden serielle Hochgeschwindigkeits-Zwischenverbindungen oft verwendet, um verschiedene Komponenten kommunikativ miteinander zu koppeln. Beispielsweise kann eine Rechenvorrichtung über eine oder mehrere Hochgeschwindigkeits-Zwischenverbindungen mit einer Anzahl von Peripherievorrichtungen gekoppelt sein (z. B. Anzeige, Ethernet-Knoten, zusätzliche Datenspeichervorrichtung oder dergleichen). Beispiele für solche Zwischenverbindungen sind PCIe (Peripheral Component Interconnect Express), USB (Universal Serial Bus), DP (DisplayPort), TBT (Thunderbolt), HTI (High-speed Trace Interface) etc.
  • HTI ermöglicht das Streamen von Verfolgungsdaten über die physikalische Schicht von Standardschnittstellen wie etwa PCIe, DP, HDMI oder USB.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform eines Blockschaltbilds für ein Rechensystem mit einem Mehrkernprozessor gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 2 ist eine schematische Darstellung einer beispielhaften Topologie, die eine Hostmaschine beinhaltet, welche über eine Hochgeschwindigkeits-Zwischenverbindung gemäß Ausführungsformen der vorliegenden Offenbarung mit einem zu testenden System verbunden ist.
    • 3 ist eine schematische Darstellung einer beispielhaften PIPE-Schnittstelle zwischen einer HTI (High-speed Trace Interface)-Vorrichtung und einer TBT (Thunderbolt)-Vorrichtung in einem zu testenden System gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 4 ist ein Schwimmbahndiagramm, das einen beispielhaften Prozessfluss zwischen einem zu testenden System und einer Hostmaschine gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 5 veranschaulicht eine Ausführungsform eines Rechensystems mit einer Zwischenverbindungsarchitektur gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6 veranschaulicht eine Ausführungsform einer Zwischenverbindungsarchitektur mit einem geschichteten Stapel gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 7 veranschaulicht eine Ausführungsform einer Anforderung oder eines Pakets, die/das in einer Zwischenverbindungsarchitektur gemäß Ausführungsformen der vorliegenden Offenbarung generiert oder empfangen werden soll.
    • 8 veranschaulicht eine Ausführungsform eines Sender- und Empfängerpaares für eine Zwischenverbindungsarchitektur gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 9 veranschaulicht eine Ausführungsform eines Blockschaltbilds für ein Rechensystem mit einem Prozessor gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 10 veranschaulicht eine Ausführungsform eines Blocks für ein Rechensystem mit mehreren Prozessorsockeln gemäß Ausführungsformen der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der nachfolgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, wie etwa Beispiele für spezifische Arten von Prozessoren und Systemkonfigurationen, spezifische Hardware-Strukturen, spezifische architektonische und mikroarchitektonische Einzelheiten, spezifische Registerkonfigurationen, spezifische Anweisungstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Prozessorpipelinestufen und Operationen etc., um ein gründliches Verständnis der vorliegenden Offenbarung zu vermitteln. Es wird jedoch für Fachleute auf diesem Gebiet ersichtlich sein, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die vorliegende Offenbarung in die Praxis umzusetzen. In anderen Fällen sind bekannte Komponenten oder Verfahren, beispielsweise spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/spezifischer Code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifische Verbindungsoperationen, spezifische Logikkonfigurationen, spezifische Fertigungstechniken und -materialien, spezifische Compiler-Implementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Herunterfahr- und Gattertechniken/-logiken und andere spezifische Betriebseinzelheiten eines Rechensystems, hier nicht ausführlich beschrieben worden, um zu vermeiden, dass die vorliegende Offenbarung unnötig unübersichtlich wird.
  • Auch wenn die nachstehenden Ausführungsformen gegebenenfalls unter Bezugnahme auf die Aspekte Energieeinsparung und Energieeffizienz in spezifischen integrierten Schaltungen beschrieben werden, beispielsweise in Rechenplattformen oder Mikroprozessoren, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken bzw. Verfahren sowie Lehren von hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die ebenfalls von einer besseren Energieeffizienz sowie Energieeinsparungen profitieren können. So sind die offenbarten Ausführungsformen beispielsweise nicht auf Desktop-Rechensysteme oder Ultrabooks™ beschränkt. Und sie können auch in anderen Vorrichtungen verwendet werden, beispielsweise in tragbaren Vorrichtungen, Tablets oder dünnen Notebooks, Ein-Chip-Systemen (Systems-on-Chip, SoCs) und eingebetteten Anwendungen. Einige Beispiele für tragbare Vorrichtungen umfassen Mobiltelefone, Internet-Protokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen beinhalten typischerweise eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), ein Ein-Chip-System, Netzcomputer (NetPCs), Set-Top-Boxen, Netzknoten, Switches für Weitverkehrsnetze (Wide Area Networks, WANs) oder ein beliebiges anderes System, das die nachstehend vorgestellten Funktionen und Operationen durchführen kann. Darüber hinaus sind die hier beschriebenen Verfahren und Systeme der Einrichtung nicht auf physische Rechenvorrichtungen beschränkt, sondern können auch Softwareoptimierungen für Energieeinsparungen und Energieeffizienz betreffen. Wie in der nachstehenden Beschreibung leicht ersichtlich wird, sind die hier beschriebenen Ausführungsformen von Verfahren, Einrichtungen und Systemen (ganz gleich, ob unter Bezugnahme auf Hardware, Firmware, Software oder Kombinationen davon) entscheidend für eine Zukunft „umweltfreundlicher Technologien“ unter gleichzeitiger Abwägung von Leistungsgesichtspunkten.
  • Mit zunehmender Weiterentwicklung von Rechensystemen werden die darin enthaltenen Komponenten immer komplexer. Infolgedessen erhöht sich auch die Komplexität der Zwischenverbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten, um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb eingehalten werden. Des Weiteren erfordern unterschiedliche Marktsegmente unterschiedliche Aspekte von Zwischenverbindungsarchitekturen, um den jeweiligen Marktanforderungen Rechnung zu tragen. Beispielsweise erfordern Server eine höhere Leistung, während das mobile Ökosystem manchmal in der Lage ist, Einbußen bei der Gesamtleistung zugunsten von Energieeinsparungen hinzunehmen. Dennoch besteht ein singulärer Zweck der meisten Fabrics darin, eine höchstmögliche Leistung bei maximaler Energieeinsparung bereitzustellen. Nachstehend werden mehrere Zwischenverbindungen (Interconnects) erörtert, die von Aspekten der hier beschriebenen Offenbarung profitieren könnten.
  • Es wird nun Bezug genommen auf 1, in der eine Ausführungsform eines Blockschaltbilds für ein Rechensystem mit einem Mehrkernprozessor dargestellt ist. Der Prozessor 100 weist einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung auf, beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein Ein-Chip-System (SoC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 100 weist, in einer Ausführungsform, wenigstens zwei Kerne auf - die Kerne 101 und 102, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) beinhalten können. Allerdings kann der Prozessor 100 eine beliebige Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zur Unterstützung eines Programmfadens (Software-Thread). Beispiele für Hardware-Verarbeitungselemente 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, beispielsweise einen Ausführungszustand oder einen Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement, in einer Ausführungsform, auf beliebige Hardware, die in der Lage ist, unabhängig mit Code verknüpft zu sein, beispielsweise einem Software-Thread, einem Betriebssystem, einer Anwendung oder anderem Code. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, welche potenziell eine beliebige Anzahl von anderen Verarbeitungselementen aufweist, beispielsweise Kerne oder Hardware-Threads.
  • Ein Kern bezieht sich oft auf Logik, die sich auf einer integrierten Schaltung befindet, welche in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit wenigstens einigen dedizierten Ausführungsressourcen verknüpft ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, welche in der Lage ist, einen unabhängigen Architekturzustand beizubehalten, wobei sich die unabhängig beibehaltenen Architekturzustände einen Zugriff auf Ausführungsressourcen teilen. Wenn bestimmte Ressourcen gemeinsam genutzt werden und andere für einen Architekturzustand dediziert sind, überlappen die Linien zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wie zu sehen ist. Oft werden jedoch ein Kern und ein Hardware-Thread von einem Betriebssystem als einzelne logische Prozessoren gesehen, wobei das Betriebssystem Operationen für jeden logischen Prozessor einzeln planen kann.
  • Der physische Prozessor 100 weist, wie in 1 dargestellt, zwei Kerne auf, nämlich die Kerne 101 und 102. Hier werden Kern 101 und 102 als symmetrische Kerne betrachtet, d. h. als Kerne mit denselben Konfigurationen, denselben Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform weist der Kern 101 einen nicht reihenfolgegetreuen (Out-of-Order, OOO) Prozessorkern auf, während der Kern 102 einen reihenfolgegetreuen (In-Order) Prozessorkern aufweist. Allerdings können die Kerne 101 und 102 aus jeder beliebigen Art von Kern einzeln ausgewählt werden, beispielsweise einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der für das Ausführen einer nativen Anweisungssatzarchitektur (Instruction Set Architecture, ISA) ausgelegt ist, einem Kern, der für das Ausführen einer übersetzten ISA ausgelegt ist, einem gemeinsam entwickelten Kern oder einem anderen bekannten Kern. In einer Umgebung mit heterogenen Kernen (d. h. asymmetrischen Kernen) kann eine Form von Übersetzung, wie etwa eine binäre Übersetzung, genutzt werden, um Code (zeitlich) zu planen oder auf einem oder beiden Kernen auszuführen. Um die Diskussion noch weiter voranzubringen, werden die im Kern 101 dargestellten Funktionseinheiten nachstehend ausführlicher beschrieben, da die Einheiten im Kern 102 in der dargestellten Ausführungsform ähnlich arbeiten.
  • Wie dargestellt, weist der Kern 101 zwei Hardware-Threads 101a und 101b auf, die auch als Hardware-Thread-Schlitze 101a und 101b bezeichnet werden können. Daher sehen Software-Entitäten wie etwa ein Betriebssystem, in einer Ausführungsform, den Prozessor 100 potenziell als vier getrennte Prozessoren, d. h. als vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie vorstehend angedeutet, ist ein erster Thread mit den Architekturzustandsregistern 101a verknüpft, ein zweiter Thread ist mit den Architekturzustandsregistern 101b verknüpft, ein dritter Thread kann mit den Architekturzustandsregistern 102a verknüpft sein und ein vierter Thread kann mit den Architekturzustandsregistern 102b verknüpft sein. Hier kann jedes der Architekturzustandsregister (101a, 101b, 102a und 102b) wie vorstehend beschrieben als Verarbeitungselemente, Thread-Schlitze oder Thread-Einheiten bezeichnet werden. Wie dargestellt, sind die Architekturzustandsregister 101a in den Architekturzustandsregistern 101b repliziert, sodass einzelne 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 etwa Anweisungszeiger und Umbenennungslogik im Zuweisungs- und Umbenennungsblock 130 auch für die Threads 101a und 101b repliziert sein. Einige Ressourcen, wie etwa Neuordnungspuffer in einer Neuordnungs-/Rückordnungseinheit 135, ILTB 120, Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen wie etwa interne Universalregister, Seitentabellen-Basisregister, Low-Level-Datencache und Daten-TLB 115, Ausführungseinheit(en) 140 und Teile der Out-of-Order-Einheit 135 werden potenziell gemeinsam genutzt.
  • Der Prozessor 100 weist oft andere Ressourcen auf, die vollständig gemeinsam genutzt, durch Partitionierung gemeinsam genutzt oder von/für Verarbeitungselemente(n) dediziert sein können. In 1 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es sei darauf hingewiesen, dass ein Prozessor jedwede dieser Funktionseinheiten aufweisen oder nicht aufweisen kann, ebenso wie jede andere nicht gezeigte bekannte Funktionseinheit, Logik oder Firmware. Wie dargestellt, weist der Kern 101 einen vereinfachten, repräsentativen Out-of-Order (OOO)-Prozessorkern auf. Jedoch kann in verschiedenen Ausführungsformen ein In-Order-Prozessor genutzt werden. Der OOO-Kern weist einen Sprungzielpuffer 120 zum Vorhersagen von Sprüngen auf, die ausgeführt/genommen werden sollen, und einen Übersetzungspuffer für Anweisungen (Instruction Translation Lookaside Buffer, I-TLB) 120 zum Speichern von Adressumsetzungseinträgen für Anweisungen.
  • Der Kern 101 weist ferner ein Decodiermodul 125 auf, das mit einer Abrufeinheit 120 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik weist, in einer Ausführungsform, einzelne Sequenzierer auf, die mit den Thread-Schlitzen 101a bzw. 101b gekoppelt sind. Üblicherweise ist der Kern 101 mit einer ersten ISA gekoppelt, die auf dem Prozessor 100 ausführbare Anweisungen definiert/spezifiziert. Oft weisen Maschinencode-Anweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung auf (Opcode genannt), der eine auszuführende Anweisung oder eine durchzuführende Operation referenziert/spezifiziert. Die Decodierlogik 125 weist Schaltungen auf, die diese Anweisungen anhand ihrer Opcodes erkennen und die decodierten Anweisungen in der Pipeline zur Verarbeitung wie durch die erste ISA definiert weiterleiten. Beispielsweise weisen, wie nachstehend ausführlicher erörtert, Decodierer 125 in einer Ausführungsform Logik auf, die dafür ausgelegt oder angepasst ist, spezifische Anweisungen wie etwa Transaktionsanweisungen zu erkennen. Infolge der Erkennung durch die Decodierer 125 treffen die Architektur oder der Kern 101 spezifische, vordefinierte Maßnahmen, um mit der entsprechenden Anweisung verknüpfte Aufgaben durchzuführen. Es sei dringend darauf hingewiesen, dass jede(r) der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren in Reaktion auf eine einzelne oder mehrere Anweisungen ausgeführt werden kann; einige davon können neue oder alte Anweisungen sein. Es sei darauf hingewiesen, das Decodierer 126, in einer Ausführungsform, dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen Decodierer 126, in einer Umgebung mit heterogenen Kernen, eine zweite ISA (entweder einer Teilmenge der ersten ISA oder eine separate ISA).
  • In einem Beispiel weist der Zuweisungs- und Umbenennungsblock 130 einen Zuweiser auf, um Ressourcen wie etwa Registerdateien zum Speichern von Anweisungsverarbeitungsergebnissen zu reservieren. Allerdings sind die Threads 101a und 101b potenziell in der Lage, eine Out-of-Order-Ausführung zu unterstützen, bei der der Zuweisungs- und Umbenennungsblock 130 außerdem andere Ressourcen wie etwa Neuordnungspuffer zum Verfolgen von Anweisungsergebnissen reserviert. Die Einheit 130 kann außerdem einen Registerumbenenner aufweisen, um Programm-/Anweisungsreferenzregister in andere Register im Prozessor 100 umzubenennen. Die Neuordnungs-/Rückordnungseinheit 135 weist Komponenten auf, beispielsweise die vorstehend erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um eine Out-of-Order-Ausführung und eine spätere In-Order-Rückordnung von nicht reihenfolgegetreu (out-of-order) ausgeführten Anweisungen zu unterstützen.
  • Der Planer- und Ausführungseinheit-Block 140 weist, in einer Ausführungsform, eine Planereinheit auf, um Anweisungen/Operationen auf Ausführungseinheiten zu planen. Beispielsweise ist eine Gleitkomma-Anweisung an einem Port einer Ausführungseinheit geplant, der über eine Gleitkomma-Ausführungseinheit verfügt. Registerdateien, die mit den Ausführungseinheiten verknüpft sind, sind ebenfalls enthalten, um Informationen zu Anweisungsverarbeitungsergebnissen zu speichern. Beispielhafte Ausführungseinheiten weisen eine Gleitkomma-Ausführungseinheit, eine Ganzzahlen-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten auf.
  • Ein untergeordneter Datencache und ein Datenübersetzungspuffer (Data Translation Lookaside Buffer, D-TLB) 150 sind an die Ausführungseinheit(en) 140 gekoppelt. Der Datencache soll kürzlich verwendete/bearbeitete Elemente speichern, wie etwa Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden. Der D-TLB soll kürzlich erfolgte Übersetzungen von virtuellen/linearen zu physikalischen Adressen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um physikalischen Speicher in mehrere virtuelle Seiten zu unterteilen.
  • Hier teilen sich die Kerne 101 und 102 den Zugriff auf übergeordneten oder weiter außerhalb angeordneten Cache, wie etwa einen Cache der zweiten Ebene, der mit einer (auf dem Chip angeordneten) On-Chip-Schnittstelle 110 verknüpft ist. Es sei darauf hingewiesen, dass sich „übergeordnet“ oder „weiter außerhalb angeordnet“ auf Cache-Level bezieht, die höher liegen oder sich von der/den Ausführungseinheiten(en) entfernen. In einer Ausführungsform ist ein übergeordneter Cache ein Last-Level-Datencache - der letzte Cache in der Speicherhierarchie auf dem Prozessor 100 - wie etwa ein Second-Level- oder Third-Level-Datencache. Allerdings ist ein übergeordneter Cache nicht hierauf beschränkt, da er mit einem Anweisungscache verknüpft sein kann oder einen solchen aufweisen kann. Ein Verfolgungscache - eine Art von Anweisungscache - kann stattdessen nach dem Decodierer 125 gekoppelt sein, um jüngst decodierte Ablaufverfolgungen (Traces) zu speichern. Hier bezieht sich eine Anweisung potenziell auf eine Makroanweisung (d. h. eine von den Decodierern erkannte allgemeine Anweisung), die in eine Anzahl von Mikroanweisungen (Mikrooperationen) decodiert werden kann.
  • In der dargestellten Konfiguration weist der Prozessor 100 auch ein On-Chip-Schnittstellenmodul 110 auf. Historisch ist eine Speichersteuerung, die nachstehend ausführlicher beschrieben wird, in ein Rechensystem integriert worden und liegt außerhalb des Prozessors 100 vor. In diesem Szenario soll die On-Chip-Schnittstelle 11 mit Vorrichtungen kommunizieren, die außerhalb des Prozessors 100 vorliegen, wie etwa Systemspeicher 175, ein Chipsatz (der oft eine Speichersteuerungsknoten zur Anbindung an den Speicher 175 und eine E/A-Steuerung zur Anbindung an Peripherievorrichtungen beinhaltet), ein Speichersteuerungsknoten, eine Northbridge oder eine anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 105 eine beliebige bekannte Zwischenverbindung beinhalten, wie etwa einen Multi-Drop-Bus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (d. h. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus und einen GTL-Bus.
  • Der Speicher 175 kann dem Prozessor 100 vorbehalten sein oder mit anderen Vorrichtungen in einem System geteilt werden. Gängige Beispiele für Arten von Speicher 175 beinhalten DRAM, SRAM, nichtflüchtigen (non-volatile, NV) Speicher und andere bekannte Datenspeichervorrichtungen. Es sei darauf hingewiesen, dass die Vorrichtung 180 eine(n) Grafikbeschleuniger, -prozessor oder eine -karte beinhalten kann, der/die mit einem Speichersteuerungsknoten gekoppelt ist, einen Datenspeicher, der mit einem E/A-Steuerungsknoten gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Vorrichtung, eine Audiosteuerung, eine Netzsteuerung oder eine andere bekannte Vorrichtung.
  • Seit kurzem kann sich jedoch, da mehr Logik und Vorrichtungen auf einem einzelnen Halbleiterplättchen wie etwa einem SOC integriert werden, jede dieser Vorrichtungen auf dem Prozessor 100 befinden. Beispielsweise befindet sich, in einer Ausführungsform, ein Speichersteuerungsknoten auf demselben Paket und/oder Halbleiterplättchen wie der Prozessor 100. Hier beinhaltet ein Abschnitt des Kerns (ein On-Core-Abschnitt, Abschnitt auf dem Kern) 110 eine oder mehrere Steuerungen zum Herstellen einer Schnittstellenverbindung mit anderen Vorrichtungen wie etwa dem Speicher 175 oder einer Grafikvorrichtung 180. Die Konfiguration inklusive Zwischenverbindung und Steuerungen zum Herstellen einer Schnittstellenverbindung mit solchen Vorrichtungen wird oft als eine On-Core-Konfiguration (oder Un-Core-Konfiguration) bezeichnet. Beispielsweise beinhaltet die On-Chip-Schnittstelle 110 eine Ringzwischenverbindung für die chipinterne Kommunikation und eine serielle Punkt-zu-Punkt-Hochgeschwindigkeitsverbindungsstrecke 105 für die chipexterne Kommunikation. Dennoch können in der SOC-Umgebung noch mehr Vorrichtungen wie etwa eine Netzschnittstelle, Coprozessoren, Speicher 175, ein Grafikprozessor 180 und beliebige andere bekannte Computervorrichtungen/-schnittstellen auf einem einzelnen Halbleiterplättchen oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor bei hoher Funktionalität und geringem Energieverbrauch zu erzielen.
  • In einer Ausführungsform ist der Prozessor 100 in der Lage, einen Compiler, eine Optimierung und/oder Übersetzercode 177 auszuführen, um Code 176 zu kompilieren, zu übersetzen und/oder zu optimieren, um die Einrichtung und hier beschriebene Verfahren zu unterstützen oder Schnittstellenverbindungen zwischen diesen herzustellen. Ein Compiler beinhaltet oft ein Programm oder einen Satz von Programmen zum Übersetzen von Quelltext/- code in Zieltext/-code. Üblicherweise erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchläufen, um Programmiersprache-Code höherer Ebene in Maschinen- oder Assemblersprache-Code niedrigerer Ebene umzuwandeln. Dennoch können Compiler mit einem Durchlauf für eine einfache Kompilierung genutzt werden. Ein Compiler kann beliebige bekannte Kompilierungstechniken nutzen und beliebige bekannte Kompilieroperationen durchführen, wie etwa lexikalische Analyse, Vorverarbeitung, Syntaxanalyse, semantische Analyse, Codegenerierung, Codetransformation und Codeoptimierung.
  • Größere Compiler beinhalten oft mehrere Phasen, aber meistens sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Frontend, d. h., wo im Allgemeinen die syntaktische Verarbeitung, die semantische Verarbeitung und einige Transformationen/Optimierungen erfolgen können, und (2) einem Backend, d. h. wo im Allgemeinen die Analyse, Transformationen, Optimierungen und die Codegenerierung erfolgen können. Einige Compiler beziehen sich auf eine Mitte, welche die Unschärfe der Abgrenzung zwischen einem Frontend und Backend eines Compilers veranschaulicht. Infolgedessen kann ein Verweis auf Einfügung, Verknüpfung, Generierung oder andere Operationen eines Compilers in jeder/jedem der vorgenannten Phasen oder Durchläufe erfolgen, ebenso wie irgendwelchen anderen bekannten Phasen oder Durchläufen eines Compilers. Als veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Aufrufe, Funktionen etc. in eine oder mehrere Kompilierungsphasen ein, wie etwa eine Einfügung von Aufrufen/Operationen in eine Frontend-Phase der Kompilierung und dann eine Transformation der Aufrufe/Operationen in Code niedrigerer Ebene während einer Transformationsphase. Es sei darauf hingewiesen, dass während einer dynamischen Kompilierung Compiler-Code oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen kann und außerdem den Code für eine Ausführung zur Laufzeit optimieren kann. Als spezifisches veranschaulichendes Beispiel kann Binärcode (bereits kompilierter Code) zur Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon beinhalten.
  • Ähnlich wie ein Compiler übersetzt ein Übersetzer, wie etwa ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Daher kann sich ein Verweis zur Ausführung von Code, Anwendungscode, Programmcode oder eine sonstige Softwareumgebung auf Folgendes beziehen: (1) Ausführung eines oder mehrerer Kompilierprogramme, Optimierungscode-Optimierer oder Übersetzer, dynamisch oder statisch, um Programmcode zu kompilieren, um Softwarestrukturen beizubehalten, um andere Operationen durchzuführen, um Code zu optimieren oder um Code zu übersetzen; (2) Ausführung von Hauptprogrammcode mit Operationen/Aufrufen, wie etwa Anwendungscode, der optimiert/kompiliert worden ist; (3) Ausführung von anderem Programmcode, wie etwa Bibliotheken, die mit dem Hauptprogrammcode verknüpft sind, um Softwarestrukturen beizubehalten, um andere softwarebezogene Operationen durchzuführen oder um Code zu optimieren; oder (4) eine Kombination davon.
  • Diese Offenbarung beschreibt das „Closed Chassis“-Debugging eines zu testenden Systems (System under Test, SUT) unter Verwendung von HTI-Tunnelung durch eine TBT-Schnittstelle. Das „Closed Chassis“-Debugging erlaubt es Technikern, ein Debugging auf Maschinen ohne invasive Techniken, wie etwa das Abnehmen des Maschinengehäuses, durchzuführen. Stattdessen kann eine serielle Schnittstelle, wie etwa eine USB- oder DPkonforme Schnittstelle, verwendet werden, um Verfolgungsdaten aus dem SUT zu gewinnen, ohne das Gehäuse zu öffnen, und Komponenten zu Debugging- oder Profilierungszwecken direkt nach Verfolgungsinformationen zu durchsuchen. Indem Verfolgungsdaten durch die TBT-Schnittstelle getunnelt werden, kann eine Hostmaschine über eine serielle Zwischenverbindung, wie etwa solchen, die von USB4 oder höher unterstützt werden, mit einem SUT verbunden werden, ohne das hierfür eine zwischengeschaltete Hardware wie etwa eine Verfolgungsbox erforderlich wäre. Darüber hinaus kann eine Hostmaschine mit einem beliebigen SUT verbunden werden, das eine konforme serielle Schnittstelle aufweist, unabhängig von den Konfigurationen der Plattform (z. B. Retimer, Redriver etc.). Darüber hinaus ermöglicht es die Verwendung von TBT zum Streamen der Verfolgungsdaten, dass der Stream, wenigstens teilweise, fortgesetzt wird, wenn die CPU an Leistung verliert oder in einem Niedrigenergiezustand eintritt.
  • HTBT kann USB4-Bausteine für das Übertragen von Debugging-Informationen über eine serielle Verbindungsstrecke verwenden. Die HTBT-Funktionalität wie hier beschrieben kann eine Nachverfolgung über einen USB4-Port unterstützen, der USB4 unter Verwendung einer integrierten Typ-C-Implementierung innerhalb der CPU implementiert. Darüber hinaus eröffnet HTBT Möglichkeiten für zukünftige Erweiterungen, die andere USB4-Topologien abdecken.
  • 2 ist eine schematische Darstellung einer beispielhaften Topologie 200, die eine Hostmaschine 212 beinhaltet, welche gemäß Ausführungsformen der vorliegenden Offenbarung über eine Zwischenverbindung 230 mit einem zu testenden System (System under Test, SUT) 202 verbunden ist. Die beispielhafte Topologie 200 erleichtert eine HTI (Debugging-Port)-Tunnelung durch Thunderbolt (HTBT). HTBT verwendet ein Merkmal der Thunderbolt Host-zu-Host-Tunnelung. Die Host-zu-Host-Tunnelung ermöglicht eine Verbindung von zwei Thunderbolt-Vorrichtungen und den Datentransfer von einer Vorrichtung zur anderen. Die Hostmaschine 212 und das SUT 202 von 2 weisen solche Thunderbolt-Vorrichtungen auf.
  • HTBT leitet Debugging-Daten oder Verfolgungsdaten für den Prozessorkern unter Verwendung der Host-zu-Host-Tunnelung von einem SUT 202 an eine Hostmaschine 212. Anstatt Daten von einem DRAM eines Prozessors an eine Verfolgungsbox zu senden, werden die Verfolgungsdaten von HTI 206 über eine physische Schnittstelle für PCI Express (Physical Interface for PCI Express, PIPE) 205 gesendet, die HTI 206 mit einer Thunderbolt-Vorrichtung 204 verbindet. Die Daten werden unter Verwendung einer Thunderbolt- (oder einer sonstigen USB4-konformen) Verbindungsstrecke 230 in die Hostmaschine 212 übertragen und im zugehörigen Speicher in 218 (z. B. DRAM) zur Verarbeitung gespeichert.
  • Das zu testende System (System under Test, SUT) 202 kann eine Rechenvorrichtung, wie etwa ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, eine Mobilvorrichtung oder eine andere Art von Rechenvorrichtung sein. In einigen Ausführungsformen kann das SUT 202 als Zielsystem (Target System, TS) 202 bezeichnet werden. Das SUT 202 weist einen Prozessorkern 208 auf. Der Prozessorkern 208 kann einen oder mehrere Hardwareprozessoren beinhalten. Der Prozessorkern 208 kann auch als CPU oder einfach als Prozessor bezeichnet werden. Der Prozessorkern 208 kann als Verfolgungsdatenquelle betrachtet werden, bei der es sich um eine Quelle für Verfolgungsdaten handelt, die zur Analyse durch die Hostmaschine 212 über die Verbindungsstrecke 230 gesendet werden.
  • Das SUT 202 weist auch HTI (High-speed Trace Interface)-Logik 206 auf. Die HTI-Logik 206 kann in Hardware, Software oder einer Kombination aus Hardware und Software implementiert sein. Die HTI-Logik 206 kann eine Exportschnittstelle für Debugging-Informationen bereitstellen, um Debugging-Informationen wie etwa Verfolgungsdaten zu extrahieren. Die Debugging-Informationen, welche die HTI-Logik 206 extrahieren kann, beinhaltet, ohne jedoch hierauf beschränkt zu sein, Informationen, die sich auf die CPU und andere Operationen beziehen. Die folgende Liste liefert einige Beispiele:
    • Power: Pcode-Leistungsbefehle, VR (Voltage Regulator, Spannungsregler-Antworten, thermische Informationen, Paket- und Kern-C-Zustand-Residenz und mehr;
    • Ring: All Ring-Transaktion, Core-und-Thread-ID, GT (Grafik)-Transaktion auf dem Ring. Cache-Attribute. SE (Secure Enclave, Sichere Enklave)-Bereich-Transaktionen;
    • DDR: Speicherlese-/-schreibvorgänge auf Signalebene, was Logic Analyzer (Logikanalysator), wie etwa Zeilenadresse (Row Address, RAS), Spaltenadresse (Column Address, CAS) und Befehl (Command, CMD) ersetzen kann;
    • OPI: On die Package Interconnect. Dies ist der Bus, der DMI ersetzt;
    • AET: Die Architektur-Ablaufverfolgung (Architecture Event Trace, AET) stellt ein Architektur-Ereignisprofil bereit. Wie etwa WRMSR, RDMSR, CPD (Core Power)-Ereignisse, Interrupts; und
    • Prozessorverfolgung (Processor Tracing, PT): Das Verfolgen tatsächlich genommener Verzweigungen und die Programmausführung, was für eine Softwareanalyse und das Debugging verwendet werden kann.
  • Im Allgemeinen kann die HTI-Logik 206 eine HTI-Verbindungsschicht und eine HTI-PHY beinhalten. Die HTI-Verbindungsschicht kann Schaltungen zum Umwandeln einer parallelen Datenquelle (z. B. Verfolgungsdaten vom Prozessorkern 208) in Symbole beinhalten, die sich für die Eingabe an den PHY-Schicht-Serialisierer eignen. Die Verbindungsschicht verteilt die Daten unter einer implementierungsspezifischen Anzahl von Spuren und stellt ein Verbindungsformat bereit, das ausreicht, um die Spuren an der Empfangsseite in der Hostmaschine 212 wieder zusammenzuführen.
  • Die HTI-PHY-Schicht beinhaltet elektrische und taktbezogene Eigenschaften. Die HTI-PHY beinhaltet Toleranzen des PHY-Senders, die unterstützten Taktkonfigurationen und Interoperabilität. Die Funktionen der HTI-PHY beinhalten unter anderem Serialisierung, Leistungssequenzierung und Taktung.
  • Das SUT 202 kann auch eine TBT (Thunderbolt)-Schnittstelle 204 aufweisen. Bei der TBT-Schnittstelle kann es sich um eine Hardwarevorrichtung handeln, die einen nach außen gerichteten Port beinhaltet, wie etwa einen USB-Typ-C-Port. In Ausführungsformen kann die TBT-Schnittstelle 204 implementierungsspezifisch sein; auch andere Arten von USB4-konformen seriellen Zwischenverbindungen können verwendet werden. In dieser beispielhaften Ausführungsform wird die TBT-Schnittstelle 204 beschrieben. Beispielsweise kann in diesem Beispiel TBT 3 verwendet werden; hier wird ein USB (Universal Serial Bus)-Typ-C-Verbinder verwendet. TBT 3 kann bis zu 40 GT/s unterstützen. TBT 3 kann PCIe-Protokolle, DisplayPort-Protokolle und/oder USB-Protokolle für die Erstellung und Übertragung von Paketen über eine Verbindungsstrecke verwenden.
  • Eine PIPE-Schnittstelle 205 verbindet die HTI-Logik 206 mit der TBT-Schnittstelle 204. Die PIPE-Schnittstelle 205 ist eine dedizierte Schnittstelle für die Extraktion von Debugging-Informationen. Die PIPE-Schnittstelle 205 kann verwendet werden, um Debugging-Informationen von der HTI-Logik 206 in Thunderbolt-Schnittstellenhardware 204 zu senden. Ein Thunderbolt-IP wird, bei Ausführung im HTBT-Modus, diese Daten durch die zugehörige Seitenport-Komponente (Null-Port genannt) leiten, so als würden sie vom DRAM kommen, und wird sie durch den Typ-C-Port tunneln.
  • 3 ist eine schematische Darstellung 300 einer beispielhaften PIPE-Schnittstelle 205 zwischen einer TBT (Thunderbolt)-Schnittstelle 204 und einer HTI (High-speed Trace Interface)-Vorrichtung 206 in einem zu testenden System gemäß einer Ausführungsformen der vorliegenden Offenbarung. Die PIPE-Schnittstelle 205 ist spezielle für das Exportieren von Verfolgungs- und anderen Debugging-Informationen vorgesehen. Die PIPE-Schnittstelle 205 wird verwendet, um die Verfolgungs- und andere Debugging-Informationen von der HTI-Logik 206 in die Thunderbolt-Hardware 204 zu senden. Thunderbolt-Internetprotokolle werden, bei Ausführung im HTBT-Modus, die Verfolgungs- und andere Debugging-Daten durch die zugehörige Seitenport-Komponente (z. B. einen Null-Port) leiten, so als würden sie vom DRAM kommen, und werden die Daten durch den Typ-C-Port tunneln.
  • Die PIPE-Schnittstelle 205 kann einen Datenbus 302 beinhalten. Der Datenbus 302 kann von der HTI-Logik 206 verwendet werden, um die Spur und andere Debugging-Informationen an die TBT-Hardware 204 zu senden. Die PIPE-Schnittstelle 205 kann auch eine Signalleitung für einen Takt 304 beinhalten. Der Takt 304 kann von der HTI-Logik 206 verwendet werden, um die Schnittstelle anzusteuern, einschließlich der Daten. Der Takt 304 kann die HTBT-Logik in Thunderbolt ansteuern. Die PIPE-Schnittstelle 205 kann auch eine Signalleitung für ein Rücksetzen (Reset) 306 beinhalten. Das Reset 308 kann eine Rücksetzangabe für Thunderbolt bereitstellen, um die gesamte HTBT-Logik zurückzusetzen.
  • Die PIPE-Schnittstelle 205 kann auch eine Signalleitung für einen gültigen Indikator 310 beinhalten. Der Gültig-Indikator 310 zeigt an, dass die Daten, die in einem Zyklus angesteuert werden, gültig sind. Der Gültig-Indikator kann von der TBT-Hardware verwendet werden 204, um den Datenbus 302 abzutasten.
  • Die PIPE-Schnittstelle 205 kann eine Signalleitung für ein Trace_active-Signal 310 beinhalten. Das Trace _active-Signal 310 kann von der HTI-Logik 206 verwendet werden, um der TBT-Hardware 204 anzuzeigen, dass die HTI-Logik 206 über Trace-Informationen verfügt. Die TBT-Hardware 204 kann die Verbindung mit der Hostmaschine 212 in Reaktion auf das Empfangen des Trace active-Signals 310 initiieren.
  • Die PIPE-Schnittstelle 205 kann auch eine Signalleitung für ein Link ready-Signal 312 beinhalten. Das Link ready-Signal 312 wird von der TBT-Hardware 204, um der HTI-Logik 206 anzuzeigen, dass die Verbindung zu der Hostmaschine 212 bereit ist. Das Link ready-Signal 312 kann von der TBT-Hardware 204 als Reaktion auf das Trace active-Signal 310 gesendet werden. Sobald die Verbindung zu der Hostmaschine 212 bereit ist, können Daten gesendet werden und zur Hostmaschine 212 getunnelt werden. Die PIPE-Schnittstelle 205 kann auch ein PIPE_Credit_return-Signal 314 beinhalten. In einigen Ausführungsformen können die HTI-Logik 206 und die TBT-Hardware 204 einen Guthabenkontrollmechanismus verwenden. Die HTI-Logik 206 wird neue Trace- und andere Debugging-Daten nur ansteuern, wenn die HTI-Logik 206 über Guthaben verfügt. Die TBT-Hardware 204 kann eine Freigabe eines Guthabens unter Verwendung des PIPE_Credit_return-Signals 314 anzeigen.
  • Es wird nun erneut Bezug genommen auf 2; die TBT-Hardware 204 kann die Verfolgungs- und andere Debugging-Informationen für die Übertragung über eine serielle Verbindungsstrecke vorbereiten, etwa eine TBT-konforme Verbindungsstrecke oder eine USB4-konforme Verbindungsstrecke. Die TBT-Hardware 204 kann die Verfolgungs- und Debugging-Informationen serialisieren und packen und die Daten unter Verwendung einer Seitenport-Komponente, z. B. über einen Typ-C-Verbinder, an eine Hostmaschine 212 senden.
  • Die Hostmaschine 212 kann als Debugging-Host oder als Debugging- und Testsystem (DTS) fungieren. Um HTBT-Funktionalität zu bieten, kann die Hostmaschine 212 als Empfänger-Host in einer TBT Host-zu-Host-Topologie fungieren. Die Hostmaschine 212 kann eine Rechenvorrichtung, wie etwa ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer oder eine andere Art von Rechenvorrichtung sein. Die Hostmaschine 212 kann Verfolgungsdaten und/oder andere Debugging-Informationen über die Verbindungsstrecke 230 in eine hostseitige TBT-Schnittstelle 214 empfangen.
  • Die hostseitige TBT-Schnittstelle 214 kann einen Port wie etwa einen Typ-C-Port zum Empfangen von Informationen über eine serielle Verbindung aufweisen. Die hostseitige TBT-Schnittstelle 214 kann die eingehenden Pakete zur Speicherung im Speicher 218 vorbereiten. Die hostseitige TBT-Schnittstelle 214 kann die Verfolgungsdaten und/oder andere Debugging-Informationen vom SUT 202 empfangen. Die hostseitige TBT-Schnittstelle 214 kann die Verfolgungsdaten und/oder andere Debugging-Informationen im Speicher 218 speichern. Bei dem Speicher 218 kann es sich um einen Direktzugriffsspeicher, wie etwa ein DRAM, oder eine andere Art von Speicher handeln.
  • Die Hostmaschine 212 kann einen HTI-Treiber 216 aufweisen. Der HTI-Treiber 216 kann die Verbindungsstrecke 230 konfigurieren und kann das SUT 202 für einen Betrieb gemäß den hier beschriebenen Verfolgungstunnel-Mechanismen konfigurieren. Der HTI-Treiber 216 kann eine Erweiterung eines Treibers sein, der für das Host-zu-Host-Merkmal verwendet wird. Das SUT 202 kann einen Seitenband-Fabric 210 beinhalten. Der Seitenband-Fabric 210 kann durch einen Seitenbandkanal 240 mit dem HTI-Treiber 216 verbunden sein. Bei dem Seitenband-Fabric 240 kann es sich um eine JTAG-Verbindung oder eine andere Art von Verbindungsstrecke handeln. In einigen Ausführungsformen kann der HTI-Treiber 216 den Seitenband-Fabric 210 verwenden, um das SUT 202 für eine HTBT-Funktionalität zu konfigurieren.
  • Sobald die Verfolgungsdaten und/oder andere Informationen im Speicher 218 gespeichert sind, können die Verfolgungsdaten und/oder andere Debugging-Informationen durch ein Debugging-Tool 220 verarbeitet werden. Bei dem Debugging-Tool 220 kann es sich um eine beliebige Art von Debugging- und Analyse-Tool handeln, wie etwa solche, die verwendet werden, um Debugging-Daten zu analysieren und diagnostizieren.
  • 4 ist ein Schwimmbahndiagramm 400, das einen beispielhaften Prozessfluss zwischen einem zu testenden System (System under Test, SUT) 202 und einer Hostmaschine 212 gemäß Ausführungsformen der vorliegenden Offenbarung veranschaulicht. (0): Zu Beginn kann die Hostmaschine 212 über eine serielle Verbindungsstrecke 230 mit einem SUT 202 verbunden sein. Die Hostmaschine 212 kann einen HTI-Treiber 216 beinhalten, der verschiedene Komponenten des SUT 202 für eine HTI-Tunnelung durch Thunderbolt (HTBT)-Funktionalität konfigurieren kann. Beispielsweise kann der HTI-Treiber 216 die HTI-Logik 206 und die TBT-Schnittstelle 204 für den HTBT-Betrieb konfigurieren.
  • (1): Die HTI-Logik 206 kann Verfolgungsdaten und/oder andere Debugging-Informationen von einer Verfolgungsdatenquelle 208 empfangen. Bei der Verfolgungsdatenquelle 208 kann es sich um eine CPU, einen Prozessorkern, ein Betriebssystem oder eine andere Quelle von Verfolgungsdaten handeln.
  • (2): Die HTI 206 kann die Verfolgungsdaten unter Verwendung der HTBT-PIPE-Schnittstelle 205 gemäß der in der vorstehenden 3 beschriebenen Signalisierung an die TBT-Schnittstelle 204 senden.
  • (3): Die TBT-Schnittstelle 204 kann die Verfolgungsdaten in einem Format, das mit TBT und/oder USB4 oder anderen seriellen Verbindungsprotokollen konform ist, serialisieren und packen. (4): Die TBT-Schnittstelle 204 kann dann die Verfolgungsdaten über eine serielle Verbindungsstrecke 230, wie etwa eine mit TBT oder USB4 konforme Verbindungsstrecke, senden.
  • (5): Die TBT-Schnittstelle 214 am Host kann die Verfolgungsdaten empfangen und die Verfolgungsdaten entpacken. (6): Die TBT-Schnittstelle 214 kann dann die Verfolgungsdaten im Speicher 218 speichern. (7): Die Debugging-Software 220 an der Hostmaschine 212 kann dann die im Speicher 218 gespeicherten Verfolgungsdaten verbrauchen, verarbeiten, analysieren etc.
  • Bezugnehmend auf 5 wird eine Ausführungsform eines Fabrics veranschaulicht, der aus Punkt-zu-Punkt-Verbindungsstrecken besteht, die einen Satz von Komponenten verbindet. Das System 500 beinhaltet einen Prozessor 505 und Systemspeicher 510, die mit dem Steuerungsknoten 515 gekoppelt sind. Der Prozessor 505 weist ein beliebiges Verarbeitungselement auf, wie etwa einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 505 ist mit dem Steuerungsknoten 515 über einen Frontside-Bus (FSB) 506 gekoppelt. In einer Ausführungsform ist der FSB 506 eine serielle Punkt-zu-Punkt-Zwischenverbindung wie nachstehend beschrieben. In einer anderen Ausführungsform beinhaltet die Verbindungsstrecke 506 eine serielle, differenzielle Zwischenverbindungsarchitektur, die mit verschiedenen Zwischenverbindungsstandards konform ist.
  • Der Systemspeicher 510 beinhaltet eine Speichervorrichtung, wie etwa Direktzugriffsspeicher (Random Access Memory, RAM), nichtflüchtigen (Non-Volatile, NV) Speicher oder einen anderen Speicher, auf den von Vorrichtungen im System 500 zugegriffen werden kann. Der Systemspeicher 510 ist mit dem Steuerungsknoten 515 über eine Speicherschnittstelle 516 gekoppelt. Beispiele für eine Speicherschnittstelle beinhalten eine Speicherschnittstelle mit doppelter Datenrate (Double-Data Rate, DDR), eine DDR-Speicherschnittstelle mit zwei Kanälen (Dual Channel DDR) und eine (DRAM) Speicherschnittstelle mit dynamischem RAM (DRAM).
  • In einer Ausführungsform ist der Steuerungsknoten 515 ein Stammknoten, ein Stammkomplex oder eine Stammsteuerung in einer PCIe- oder PCIE-Zwischenverbindungshierarchie (Peripheral Component Interconnect Express). Beispiele für einen Steuerungsknoten 515 beinhalten einen Chipsatz, einen Speichersteuerungsknoten (Memory Controller Hub, MCH), eine Northbridge, einen Zwischenverbindungssteuerungsknoten (Interconnect Controller Hub, ICH), eine Southbridge und eine/einen Stammportsteuerung/-knoten. Oft bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Steuerungsknoten, d. h. einen Speichersteuerungsknoten (Memory Controller Hub, MCH), der mit einem Zwischenverbindungssteuerungsknoten (Interconnect Controller Hub, ICH) gekoppelt ist. Es sei darauf hingewiesen, dass bei aktuellen Systemen der MCH oft in den Prozessor 505 integriert ist, während die Steuerung 515, in einer ähnlichen Weise wie nachstehend beschrieben, mit E/A-Vorrichtungen kommunizieren soll. In einigen Ausführungsformen wird das Peer-zu-Peer-Routing optional über den Stammkomplex 515 unterstützt.
  • Hier ist der Steuerungsknoten 515 mit dem Switch/der Brücke 520 über eine serielle Verbindungsstrecke 519 gekoppelt. Die Eingabe-/Ausgabemodule 517 und 521, die auch als Schnittstellen/Ports 517 und 521 bezeichnet sein können, beinhalten/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Steuerungsknoten 515 und dem Switch 520 bereitzustellen. In einer Ausführungsform sind mehrere Vorrichtungen in der Lage, mit dem Switch 520 gekoppelt zu werden.
  • Der Switch/die Brücke 520 leitet Pakete/Nachrichten von der Vorrichtung 525 stromaufwärts, d. h. eine Hierarchie nach oben in Richtung eines Stammkomplexes, an den Steuerungsknoten 515 und stromabwärts, d. h. eine Hierarchie nach unten, weg von einer Stammportsteuerung, vom Prozessor 505 oder Systemspeicher 510 an die Vorrichtung 525. Der Switch 520 wird in einer Ausführungsform als eine logische Baugruppe von mehreren virtuellen PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 525 beinhaltet eine beliebige interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System gekoppelt werden soll, wie etwa einer E/A-Vorrichtung, einer Netzschnittstellensteuerung (Network Interface Controller, NIC), einer Add-in-Karte, einem Audioprozessor, einem Netzprozessor, einem Festplattenlaufwerk, einer Datenspeichervorrichtung, einem CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Datenspeichervorrichtung, einer Firewire-Vorrichtung, einer USB (Universal Serial Bus)-Vorrichtung, einem Scanner und anderen Eingabe-/Ausgabevorrichtungen. Oft wird im PCIe-Jargon eine solche Vorrichtung als Endpunkt bezeichnet. Auch wenn nicht ausdrücklich gezeigt, kann eine Vorrichtung 525 eine PCIe-zu-PCI/PCI-X-Brücke beinhalten, um PCI-Altvorrichtungen oder PCI-Vorrichtungen einer anderen Version zu unterstützen. Endpunktvorrichtungen werden in PCIe oft als Altvorrichtung, PCIe, oder als in den Stammkomplex integrierte Endpunkte klassifiziert.
  • der Grafikbeschleuniger 530 ist auch mit dem Steuerungsknoten 515 über eine serielle Verbindungsstrecke 532 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 530 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Ein Switch 520, und entsprechend eine E/A-Vorrichtung 525, wird dann mit dem ICH gekoppelt. Die E/A-Module 531 und 518 sollen auch einen geschichteten Protokollstapel für die Kommunikation zwischen dem Grafikbeschleuniger 530 und dem Steuerungsknoten 515 implementieren. Ähnlich wie bei der vorstehenden MCH-Erörterung können eine Grafiksteuerung oder der Grafikbeschleuniger 530 in den Prozessor 505 integriert sein.
  • Bezugnehmend auf 6 wird eine Ausführungsform eines geschichteten Protokollstapels veranschaulicht. Der geschichtete Protokollstapel 600 beinhaltet eine beliebige Form eines geschichteten Kommunikationsstapels, wie etwa einen QPI (Quick Path Interconnect)-Stapel, einen PCIe-Stapel, einen Zwischenverbindungsstapel der nächsten Generation für die Hochleistungsverarbeitung oder einen anderen geschichteten Stapel. Auch wenn sich die unmittelbar nachstehende Erörterung unter Bezugnahme auf 5-8 auf einen PCIe-Stapel bezieht, können dieselben Konzepte auf andere Zwischenverbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 600 ein PCIe-Protokollstapel mit einer Transaktionsschicht 605, einer Verbindungsschicht 610 und einer physikalischen Schicht 620. Eine Schnittstelle, wie etwa die Schnittstellen 517, 518, 521, 522, 526 und 531 in 5, können als Kommunikationsprotokollstapel 600 dargestellt sein. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet sein, das/die einen Protokollstapel implementiert/beinhaltet.
  • PCI Express verwendet Pakete zum Übertragen von Informationen zwischen Komponenten. Pakete werden in der Transaktionsschicht (Transaction Layer) 605 und der Datenverbindungsschicht (Data Link Layer) 610 gebildet, um die Informationen von der sendende Komponente an die empfangende Komponente zu transportieren. Während die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die für das Handhaben von Paketen in diesen Schichten erforderlich sind. Auf der Empfangsseite erfolgt der umgekehrte Prozess und Pakete werden von ihrer Darstellung auf der physikalischen Schicht (Physical Layer) 620 in die Darstellung der Datenverbindungsschicht 610 umgewandelt und letztendlich (bei Transaktionsschicht-Paketen) in die Form, die von der Transaktionsschicht 705 des Empfangsgeräts verarbeitet werden kann.
  • Transaktionsschicht (Transaction Layer)
  • In einer Ausführungsform soll die Transaktionsschicht 605 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur, wie etwa der Datenverbindungsschicht 610 und der physikalischen Schicht 620, bereitstellen. In dieser Hinsicht besteht eine primäre Zuständigkeit der Transaktionsschicht 605 im Zusammensetzen und Zerlegen von Paketen (d. h. Transaktionsschicht-Paketen oder TLPs). Die Transaktionsschicht 605 verwaltet typischerweise eine guthabenbasierte Flusssteuerung für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen mit zeitlich getrennter Anforderung und Antwort, was es einer Verbindungsstrecke erlaubt, anderen Verkehr zu transportieren, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Zusätzlich nutzt PCIe eine guthabenbasierte Flusssteuerung. Bei diesem Schema kündigt eine Vorrichtung eine anfängliche Guthabenmenge für jeden der Empfangspuffer in der Transaktionsschicht 605 an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindungsstrecke, wie etwa der Steuerungsknoten 515 in 5, zählt das Guthaben, das von jedem TLP verbraucht wird. Eine Transaktion kann übertragen werden, falls die Transaktion einen Guthabengrenzwert nicht überschreitet. Bei Empfang einer Antwort wird eine Guthabenmenge wiederhergestellt. Ein Vorteil eines Guthabenschemas besteht darin, dass die Latenz von Guthabenrückgaben keinen Einfluss auf die Leistung hat, vorausgesetzt, der Guthabengrenzwert wird nicht erreicht.
  • In einer Ausführungsform beinhalten vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabeadressraum und einen Nachrichtenadressraum. Speicherraum-Transaktionen beinhalten eine oder mehrere Leseanforderungen und Schreibanforderungen zum Übertragen von Daten an/von einen/einem speicherabgebildeten Ort. In einer Ausführungsform sind Speicherraum-Transaktionen in der Lage, zwei unterschiedliche Adressformate zu verwenden, z. B. ein Kurzadressenformat, wie etwa eine 32-Bit-Adresse, oder ein Langadressenformat, wie etwa eine 64-Bit-Adresse. Konfigurationsraum-Transaktionen werden verwendet, um auf Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen für den Konfigurationsraum beinhalten Leseanforderungen und Schreibanforderungen. Nachrichtenraum-Transaktionen (oder einfach Nachrichten) sind dahingehend definiert, dass sie eine Inband-Kommunikation zwischen PCIe-Agenten unterstützen.
  • Daher setzt, in einer Ausführungsform, die Transaktionsschicht 605 Paket-Header/Nutzlast 606 zusammen. Das Format für aktuelle Paket-Header/Nutzlasten ist in der PCIe-Spezifikation auf der Website mit den PCIe-Spezifikationen zu finden.
  • Kurz bezugnehmend auf 7 wird eine Ausführungsform eines PCIe-Transaktionsdesktriptors veranschaulicht. In einer Ausführungsform ist ein Transaktionsdesktriptor 700 ein Mechanismus zum Transportieren von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdesktriptor 700 die Identifikation von Transaktionen in einem System. Andere potenzielle Verwendungen beinhalten Verfolgungsmodifikationen einer Standard-Transaktionsreihenfolge und eine Verknüpfung von Transaktionen mit Kanälen.
  • Der Transaktionsdesktriptor 700 beinhaltet ein globales Kennungsfeld 702, ein Attributfeld 904 und ein Kanalkennungsfeld 706. In dem veranschaulichten Beispiel wird ein globales Kennungsfeld 702 dargestellt, das ein lokales Transaktionskennungsfeld 708 und ein Quellenkennungsfeld 710 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 702 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 708 ein Feld, das von einem anfordernden Agenten generiert wird, und ist eindeutig für alle ausstehenden Anforderungen, bei denen ein Abschluss für diesen anfordernden Agenten erforderlich ist. Des Weiteren identifiziert in diesem Beispiel das Quellenkennungsfeld 710 den Anforderungsagenten innerhalb einer PCIe-Hierarchie eindeutig. Dementsprechend stellt, zusammen mit der Quellen-ID 710, das lokale Transaktionskennungsfeld 708 eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 704 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 704 potenziell verwendet, um zusätzliche Informationen bereitzustellen, die eine Modifikation der standardmäßigen Handhabung von Transaktionen ermöglichen. In einer Ausführungsform beinhaltet das Attributfeld 704 ein Prioritätsfeld 712, ein reserviertes Feld 714, ein Ordnungsfeld 716 und ein No-Snoop-Feld 718. Hier kann das Prioritätsunterfeld 712 von einem Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 714 ist für die Zukunft oder eine vom Anbieter definierte Verwendung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfeldes implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 716 verwendet, um optionale Informationen zu liefern, welche die Art der Ordnung übermitteln, die Standard-Ordnungsregeln modifizieren können. Gemäß einer beispielhaften Implementierung bezeichnet ein Ordnungsattribut „0“, dass Standard-Ordnungsregeln anzuwenden sind, wobei ein Ordnungsattribut ,,1" eine gelockerte Ordnung bezeichnet, wobei Schreibvorgänge andere Schreibvorgänge in derselben Richtung weitergeben können, und Lesevorgangsabschlüsse Schreibvorgänge in derselben Richtung weitergeben können. Das Snoop-Attributfeld 718 wird genutzt, um zu bestimmen, of Transaktionen überwacht (snooped) werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 706 einen Kanal, mit dem eine Transaktion verknüpft ist.
  • Verbindungsschicht (Link Layer)
  • Die Verbindungsschicht 610, auch als Datenverbindungsschicht 610 bezeichnet, wirkt als Zwischenstufe zwischen der Transaktionsschicht 605 und der physikalischen Schicht 620. In einer Ausführungsform besteht eine Zuständigkeit der Datenverbindungsschicht 610 darin, einen zuverlässigen Mechanismus für das Austauschen von Transaktionsschichtpaketen (Transaction Layer Packets, TLPs) zwischen zwei Komponenten einer Verbindungsstrecke bereitzustellen. Eine Seite der Datenverbindungsschicht 610 akzeptiert von der Transaktionsschicht 605 zusammengesetzte TLPs, wendet die Paketsequenzkennung 611 an, d. h. eine Identifikationsnummer oder Paketnummer, berechnet einen Fehlerdetektionscode und wendet diesen an, d. h. CRC 612, und übergibt die modifizierten TLPs an die physikalische Schicht 620 zur Übertragung über eine physische Verbindung an eine externe Vorrichtung.
  • Physikalische Schicht (Physical Layer, PHY)
  • In einer Ausführungsform beinhaltet die physikalische Schicht 620 einen logischen Unterblock 621 und einen elektrischen Unterblock 622, um ein Paket physisch an eine externe Vorrichtung zu übertragen. Hier ist ein logischer Unterblock 621 für die „digitalen“ Funktionen der physikalischen Schicht 621 zuständig. In dieser Hinsicht beinhaltet der logische Unterblock einen Sendeabschnitt auf, um ausgehende Informationen zur Übertragung durch den physischen Unterblock 622 vorzubereiten, und einen Empfangsabschnitt, empfangene Informationen zu identifizieren und vorzubereiten, bevor sie an die Verbindungsschicht 610 weitergegeben werden.
  • Der physische Block 622 beinhaltet einen Sender und einen Empfänger. Der Sender wird von dem logischen Unterblock 621 mit Symbolen beliefert, die der Sender serialisiert und auf eine externe Vorrichtung überträgt. Der Empfänger wird von einer externen Vorrichtung mit serialisierten Symbolen beliefert und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird entserialisiert und an den logischen Unterblock 621 geliefert. In einer Ausführungsform wird ein 8b/10b-Übertragungcode eingesetzt, wobei 10-Bit-Symbole übertragen/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket in Rahmen 623 einzufassen. Darüber hinaus stellt, in einem Beispiel, der Empfänger auch einen Symboltakt bereit, der aus dem eingehenden seriellen Strom wiedergewonnen wird.
  • Wie vorstehend ausgeführt, ist, auch wenn die Transaktionsschicht 605, die Verbindungsschicht 610 und die physikalische Schicht 620 unter Bezugnahme auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden, ein geschichteter Protokollstapel nicht hierauf beschränkt. Tatsächlich kann ein beliebiges geschichtetes Protokoll einbezogen/implementiert werden. Beispielsweise beinhaltet ein Port/eine Schnittstelle, der/die als geschichtetes Protokoll dargestellt ist: (1) eine erste Schicht zum Zusammensetzen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Verbindungsschicht; und eine dritte Schicht zum Übertragen der Pakete, d. h. eine physikalische Schicht. Als spezifisches Beispiel wird eine CSI (Common Standard Interface)-geschichtetes Protokoll genutzt.
  • Bezugnehmend als Nächstes auf 8 wird eine Ausführungsform eines seriellen Punkt-zu-Punkt-PCIe-Fabrics veranschaulicht. Auch wenn eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Verbindungsstrecke veranschaulicht wird, ist eine serielle Punkt-zu-Punkt-Verbindungsstrecke nicht hierauf beschränkt, da sie einen beliebigen Sendepfad zum Übertragen serieller Daten beinhaltet. In der gezeigten Ausführungsform beinhaltet eine PCIe-Basisverbindung zwei differenziell angesteuerte Niederspannungs-Signalpaare auf: ein Sendepaar 806/811 und ein Empfangspaar 812/807. Dementsprechend beinhaltet die Vorrichtung 805 Übertragungslogik 806, um Daten an die Vorrichtung 810 zu senden, und Empfangslogik 807, um Daten von der Vorrichtung 810 zu empfangen. Mit anderen Worten sind zwei Sendepfade, d. h. die Pfade 816 und 817, und zwei Empfangspfade, d. h. die Pfade 818 und 819, in einer PCIe-Verbindungsstrecke enthalten.
  • Ein Sendepfad bezieht sich auf einen beliebigen Pfad zum Übertragen von Daten, wie etwa eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie etwa Vorrichtung 805 und Vorrichtung 810, wird als Verbindungsstrecke bezeichnet, wie etwa Verbindungsstrecke 815. Eine Verbindungsstrecke kann eine Spur (Lane) unterstützen - wobei jede Spur einen Satz von differenziellen Signalpaaren darstellt (ein Paar für die Übertragung, ein Paar für den Empfang). Zum Skalieren der Bandbreite kann eine Verbindungsstrecke mehrere durch xN bezeichnete Spuren aggregieren, wobei N eine beliebige unterstützte Verbindungsstreckenbreite ist, etwa 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differenzielles Paar bezieht sich auf zwei Sendepfade, wie etwa die Leitungen 816 und 817, um differenzielle Signale zu übertragen. Wenn beispielsweise die Leitung 816 von einem niedrigen Spannungspegel auf einen hohen Spannungspegel umschaltet, d. h. eine ansteigende Flanke, steuert die Leitung 817 von einem hohen Logikpegel (High) zu einem niedrigen Logikpegel (Low), d. h. einer abfallenden Flanke. Differenzielle Signale zeigen potenziell bessere elektrische Eigenschaften, wie etwa eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschreitung/-unterschreitung, Ringing, etc. Dies sorgt für ein besseres Zeitfenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • Es sei darauf hingewiesen, dass die vorstehend beschriebene(n) Einrichtung, Verfahren und Systeme in einer beliebigen elektronischen Vorrichtung oder einem System wie vorstehend erwähnt implementiert sein können. Als spezifische Veranschaulichungen stellen die nachstehenden Figuren beispielhafte Systeme zur Nutzung der Offenbarung wie hier beschrieben dar. Da die nachstehenden Systeme ausführlicher beschrieben werden, werden einige unterschiedliche Zwischenverbindungen aus der obigen Erörterung offenbart, beschrieben und erneut aufgegriffen. Und wie leicht erkennbar ist, können die vorstehend beschriebenen Fortschritte auf jede dieser Zwischenverbindungen, Fabrics oder Architekturen angewendet werden.
  • Es wird nun Bezug genommen auf 9; gezeigt wird ein Blockschaltbild eines beispielhaften Rechensystems, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen einer Anweisung beinhaltet, bei dem eine oder mehrere der Zwischenverbindungen ein oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Offenbarung implementieren. Das System 900 beinhaltet eine Komponente, wie etwa einen Prozessor 902, für den Einsatz der Ausführungseinheiten, einschließlich einer Logik, um Algorithmen zum Verarbeiten von Daten gemäß der vorliegenden Offenbarung durchzuführen, wie etwa in der hier beschriebenen Ausführungsform. Das System 900 ist repräsentativ für Verarbeitungssysteme basierend auf den Mikroprozessoren PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™ von der Intel Corporation aus Santa Clara, Kalifornien, wenngleich auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering-Workstations, Set-top-Boxen und dergleichen) verwendet werden können. In einer Ausführungsform wird auf einem Mustersystem 1000 eine Version des Betriebssystems WINDOWS™ der Microsoft Corporation aus Redmond, Washington, ausgeführt, wenngleich auch andere Betriebssysteme (beispielsweise UNIX und Linux), eingebettete Software und/oder grafische Benutzerschnittstellen verwendet werden können. Somit sind die Ausführungsformen der vorliegenden Offenbarung nicht auf eine spezifische Kombination von Hardware-Schaltungen und Software beschränkt.
  • Ausführungsformen sind nicht auf Rechensysteme beschränkt. Alternative Ausführungsformen der vorliegenden Offenbarung können in anderen Vorrichtungen wie Handheld-Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen umfassen Mobiltelefone, Internet-Protokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen können eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), ein Ein-Chip-System, Netzcomputer (NetPC), Set-top-Boxen, Netzknoten, Weitverkehrs (Wide Area Network, WAN)-Switches oder ein beliebiges anderes System beinhalten, das eine oder mehrere Anweisungen gemäß wenigstens einer Ausführungsform durchführen kann.
  • In dieser veranschaulichten Ausführungsform weist der Prozessor 902 eine oder mehrere Ausführungseinheiten 1008 auf, um einen Algorithmus zu implementieren, der wenigstens eine Anweisung durchführen soll. Eine Ausführungsform kann im Kontext eines Desktop- oder Serversystems mit nur einem Prozessor beschrieben sein, aber alternative Ausführungsformen können in einem Mehrprozessorsystem enthalten sein. Das System 900 ist ein Beispiel für eine „Knoten“-Systemarchitektur. Das Rechensystem 900 weist einen Prozessor 902 zum Verarbeiten von Datensignalen auf. Der Prozessor 902 beinhaltet, als veranschaulichendes Beispiel, einen Mikroprozessor für die Verarbeitung komplexer Anweisungssätze (Complex Instruction Set Computing, CISC), einen Mikroprozessor für die Verarbeitung reduzierter Anweisungssätze (Reduced Instruction Set Computing, RISC), einen Mikroprozessor für sehr lange Anweisungswörter (Very Long Instruction Word, VLIW), einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie beispielsweise einen Digitalsignalprozessor. Der Prozessor 902 ist mit einem Prozessorbus 910 gekoppelt, der Datensignale zwischen dem Prozessor 902 und anderen Komponenten im System 900 überträgt. Die Elemente des Systems 900 (z. B. Grafikbeschleuniger 912, Speichersteuerungsknoten 916, Speicher 920, E/A-Steuerungsknoten 924, drahtloser Sendeempfänger 926, Flash-BIOS 1028, Netzsteuerung 934, Audiosteuerung 936, serieller Erweiterungsport 938, E/A-Steuerung 940 etc.) übernehmen ihre herkömmlichen Funktionen, die Fachleuten auf dem Gebiet hinlänglich bekannt sind.
  • In einer Ausführungsform weist der Prozessor 902 einen internen Level-1 (L1)-Cache-Speicher 904 auf. Je nach Architektur kann der Prozessor 902 einen einzelnen internen Cache oder mehrere Ebenen (Levels) von internen Caches aufweisen. Andere Ausführungsformen beinhalten, in Abhängigkeit von der jeweiligen bestimmten Implementierung und den jeweiligen Bedürfnissen, eine Kombination aus internen und externen Caches. Die Registerdatei 906 soll unterschiedliche Arten von Daten in verschiedenen Registern speichern, was Ganzzahlregister, Gleitkommaregister, Vektorregister, Banked-Register, Schattenregister, Prüfpunktregister, Statusregister und Anweisungszeiger-Register einschließt.
  • Die Ausführungseinheit 908 mit Logik zum Durchführen von Ganzzahl- und Gleitkommaoperationen befindet sich ebenfalls im Prozessor 902. Der Prozessor 902 beinhaltet, in einer Ausführungsform, einen Mikrocode (ucode)-ROM zum Speichern von Mikrocode, der, wenn er ausgeführt wird, Algorithmen für bestimme Makroanweisungen durchführen soll oder komplexe Szenarien handhaben soll. Hier ist der Mikrocode potenziell aktualisierbar, um Logikfehler/Fehlerbehebungen für den Prozessor 902 zu handhaben. Für eine Ausführungsform beinhaltet die Ausführungseinheit 908 Logik zum Handhaben eines gepackten Anweisungssatzes 909. Durch Einschließen des gepackten Anweisungssatzes 909 in den Anweisungssatz eines Universalprozessors 902, zusammen mit den zugehörigen Schaltungen zum Ausführen der Anweisungen, können die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung von gepackten Daten in einem Universalprozessor 902 durchgeführt werden. Somit werden viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt, indem die volle Breite des Datenbusses eines Prozessors für das Durchführen von Operationen an gepackten Daten verwendet wird. Dies beseitigt potenziell die Notwendigkeit, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen durchzuführen, immer nur ein Datenelement gleichzeitig.
  • Alternative Ausführungsformen einer Ausführungseinheit 908 können auch in Mikrosteuerungen, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. Das System 900 beinhaltet einen Speicher 920. Der Speicher 1020 beinhaltet eine dynamische Direktzugriff-Speichervorrichtung (Dynamic Random Access Memory, DRAM), eine statische Direktzugriff-Speichervorrichtung (Static Random Access Memory, SRAM), eine Flash-Speichervorrichtung oder irgendeine andere Speichervorrichtung. Der Speicher 920 speichert Anweisungen und/oder Daten, die durch Datensignale dargestellt werden, welche von dem Prozessor 902 ausgeführt werden sollen.
  • Es sei darauf hingewiesen, dass beliebige der vorstehend erwähnten Merkmale oder Aspekte der Offenbarung an einer oder mehreren der in 9 veranschaulichten Zwischenverbindungen genutzt werden können. Beispielsweise implementiert eine nicht gezeigte Zwischenverbindung auf dem Halbleiterplättchen (On-Die Interconnect, ODI) zum Koppeln von internen Einheiten des Prozessors 902 einen oder mehrere Aspekte der vorstehend beschriebenen Offenbarung. Oder die Offenbarung ist mit einem Prozessorbus 910 (z. B. einem Intel Quick Path Interconnect (QPI) oder einer anderen bekannten Zwischenverbindung für die Hochleistungsverarbeitung), einem Speicherpfad mit großer Bandbreite 918 zum Speicher 920, einer Punkt-zu-Punkt-Verbindungsstrecke zum Grafikbeschleuniger 912 (z. B. einem PCIe (Peripheral Component Interconnect express)-konformen Fabric), einer Steuerungsknoten-Zwischenverbindung 922, einer E/A- oder anderen Zwischenverbindung (z. B. USB, PCI, PCIe, TBT3) zum Koppeln der anderen veranschaulichten Komponenten verknüpft. Einige Beispiele von solchen Komponenten beinhalten die Audiosteuerung 936, einen Firmware-Knoten (Flash-BIOS) 928, einen drahtlosen Sendeempfänger 926, einen Datenspeicher 924, eine E/A-Altsteuerung 910, die Benutzereingabe-und Tastaturschnittstellen 942 enthält, einen seriellen Erweiterungsport 938 wie etwa einen seriellen Universalbus (Universal Serial Bus, USB) und eine Netzsteuerung 934. Die Datenspeichervorrichtung 924 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Laufwerk, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In einigen Ausführungsformen kann ein Eingabe/Ausgabe (E/A)-Port, wie etwa ein USB-C-Port in der Lage sein, nicht nur die USB-Kommunikation abwickeln (z. B. USB 3- und/oder USB-C-Kommunikation), sondern auch eine oder mehrere andere Arten der Kommunikation, z. B. PCIe (Peripheral Component Interconnect Express)-Kommunikation, TBT (Thunderbolt)-Kommunikation, DP (Display Port)-Kommunikation, HTI (High-Speed Trace Interface)-Kommunikation und/oder dergleichen. In einigen Ausführungsformen kann eine einzelne und konfigurierbare physikalische Schicht mit dem Port gekoppelt sein, wobei die physikalische Schicht gemäß der Art der Kommunikation, die über den Port abgewickelt werden soll, ausgelegt sein kann. Des Weiteren kann ein Adapter (der z. B. als Multiplexer fungieren kann) den Port mit einer oder mehreren Steuerungen koppeln kann, z. B. basierend auf der Art der Kommunikation, die über den Port abgewickelt werden soll. Somit kann der USB-C-Port eine einzelne physikalische Schicht und einen einzelnen Adapter verwenden, was kostengünstig sein kann und weniger Platz verbraucht. Andere technische Effekte werden aus den verschiedenen Ausführungsformen und Figuren ersichtlich.
  • Es wird nun Bezug genommen auf 10; gezeigt wird ein Blockschaltbild eines zweiten Systems 1000 gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie in 10 gezeigt, ist das Mehrprozessorsystem 1000 ein Punkt-zu-Punkt-Verbindungssystem und beinhaltet einen ersten Prozessor 1070 und einen zweiten Prozessor 1080, die über eine Punkt-zu-Punkt-Zwischenverbindung 1050 gekoppelt sind. Jeder der Prozessoren 1070 und 1080 kann eine Version eines Prozessors sein. In einer Ausführungsform sind 1052 und 1054 Teil eines seriellen kohärenten Punkt-zu-Punkt-Verbindungsfabric, wie etwa Intels QPI (Quick Path Interconnect)-Architektur. Infolgedessen kann die Offenbarung in der QPI-Architektur implementiert sein.
  • Auch wenn hier nur zwei Prozessoren 1070, 1080 gezeigt werden, versteht es sich, dass der Schutzbereich der vorliegenden Offenbarung nicht hierauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 1070 und 1080 werden mit integrierten Speichersteuerungseinheiten (Integrated Memory Controllers, IMCs) 1072 bzw. 1082 gezeigt. Der Prozessor 1070 weist außerdem als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt (P-P)-Schnittstellen 1076 und 1078 auf; in ähnlicher Weise weist der zweite Prozessor 1080 P-P-Schnittstellen 1086 und 1088 auf. Die Prozessoren 1070, 1080 können Informationen über eine Punkt-zu-Punkt (P-P)-Schnittstelle 1050 unter Verwendung von P-P-Schnittstellenschaltungen 1078, 1088 austauschen. Wie in 10 gezeigt, koppeln die IMCs 1072 und 1082 die Prozessoren an die jeweiligen Speicher, nämlich einen Speicher 1032 und einen Speicher 1034, die Teile des lokal mit den jeweiligen Prozessoren verbundenen Hauptspeichers sein können.
  • Die Prozessoren 1070, 1080 können jeder über individuelle P-P-Schnittstellen 1052, 1054 Informationen mit einem Chipsatz 1090 austauschen, wobei Punkt-zu-Punkt-Schnittstellenschaltungen 1076, 1094, 1086, 1098 verwendet werden. Der Chipsatz 1090 tauscht außerdem Informationen mit einer Hochleistungs-Grafikschaltung 1038 über eine Schnittstellenschaltung 1092 entlang einer Hochleistungs-Grafikverbindung 1039 aus.
  • Ein gemeinsam genutzter (nicht gezeigter) Cache kann in jedem Prozessor enthalten sein oder außerhalb beider Prozessoren liegen, aber mit den Prozessoren über eine P-P-Verbindung verbunden sein, sodass lokale Cache-Informationen jedes oder beider Prozessoren im gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einen Niedrigenergiemodus versetzt wird.
  • Der Chipsatz 1090 kann über eine Schnittstelle 1096 mit einem ersten Bus 1016 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1016 ein PCI (Peripheral Component Interconnect)-Bus oder ein Bus wie beispielsweise ein PCI Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation sein, wenngleich der Schutzbereich der vorliegenden Offenbarung nicht hierauf beschränkt ist.
  • Wie in 10 gezeigt, sind verschiedene E/A-Vorrichtungen 1014 mit einem ersten Bus 1016 gekoppelt, zusammen mit einer Busbrücke 1018, die den ersten Bus 1016 mit einem zweiten Bus 1020 koppelt. In einer Ausführungsform beinhaltet der zweite Bus 1020 einen Bus mit geringer Stiftzahl (Low Pin Count, LPC). Verschiedene Vorrichtungen sind mit einem zweiten Bus 1020 gekoppelt, in einer Ausführungsform beispielsweise eine Tastatur und/oder eine Maus 1022, Kommunikationsvorrichtungen 1027 und eine Datenspeichereinheit 1028 wie beispielsweise ein Plattenlaufwerk oder eine Massenspeichervorrichtung, die oft Anweisungen/Code und Daten 1030 beinhaltet. Ferner wird ein Audio-E/A 1024 gezeigt, der mit dem zweiten Bus 1020 gekoppelt ist. Es sei darauf hingewiesen, dass andere Architekturen möglich sind, bei denen die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren können. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur von 10 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Unter Verwendung der verschiedenen Inertial- und Umgebungssensoren, die in einer Plattform vorhanden sind, können viele verschiedene Anwendungsfälle realisiert werden. Diese Anwendungsfälle ermöglichen fortgeschrittene Rechenoperationen, einschließlich einer wahrnehmungsbezogenen Verarbeitung, und erlauben außerdem Verbesserungen hinsichtlich Energieverwaltung/Batterielebensdauer, Sicherheit und Ansprechempfindlichkeit des Systems.
  • Beispielsweise werden hinsichtlich der Aspekte Energieverwaltung/Batterielebensdauer, zumindest teilweise basierend auf Informationen von einem Umgebungslichtsensor, die Umgebungslichtbedingungen an einem Standort der Plattform bestimmt, und die Intensität der Anzeige wird entsprechend gesteuert. Somit wird der Stromverbrauch beim Betrieb der Anzeige bei gewissen Lichtbedingungen reduziert.
  • Was Sicherheitsoperationen angeht, kann, basierend auf Kontextinformationen, die von den Sensoren erhalten werden, wie etwa Standortinformationen, bestimmt werden, ob es einem Benutzer erlaubt ist, auf bestimmte geschützte Dokumente zuzugreifen. Beispielsweise kann es einem Benutzer gestattet sein, an einem Arbeitsplatz oder einem Heimstandort auf solche Dokumente zuzugreifen. Allerdings wird der Benutzer am Zugriff auf solche Dokumente gehindert, wenn sich die Plattform an einem öffentlichen Ort befindet. Diese Bestimmung basiert, in einer Ausführungsform, auf Standortsinformationen, die z. B. über einen GPS-Sensor oder per Kameraerkennung von Orientierungspunkten bestimmt werden. Andere Sicherheitsoperationen können eine Vorsorge zum Paaren von Vorrichtungen in kurzer Entfernung zueinander beinhalten, z. B. eine portable Plattform wie hier beschrieben und ein Desktop-Computer, ein Mobiltelefon und so weiter eines Benutzers. Bestimmte Teilungsvorgänge werden in einigen Implementierungen über eine Nahfeldkommunikation realisiert, wenn diese Vorrichtungen so gepaart sind. Allerdings können, wenn die Vorrichtungen eine bestimmte Entfernung überschreiten, solche Teilungsvorgänge deaktiviert werden. Des Weiteren kann, wenn eine Plattform wie hier beschrieben und ein Smartphone gepaart werden, ein Alarm konfiguriert sein, der ausgelöst werden soll, sobald sich die Vorrichtungen weiter als einen vorbestimmten Abstand voneinander wegbewegen, wenn sich diese an einem öffentlichen Ort befinden. Im Gegensatz dazu können, wenn sich die gepaarten Vorrichtungen an einem sicheren Ort befinden, z. B. einem Arbeitsplatz oder am Heimstandort, die Vorrichtung diesen vorbestimmten Grenzwert überschreiten, ohne einen solchen Alarm auszulösen.
  • Die Ansprechempfindlichkeit kann auch durch Verwenden der Sensorinformationen verbessert werden. Beispielsweise können sogar dann, wenn sich eine Plattform in einem Niedrigenergiezustand befindet, die Sensoren nach wie vor aktiviert werden, um mit einer relativ niedrigen Frequenz betrieben zu werden. Dementsprechend werden etwaige Standortänderungen der Plattform bestimmt, z. B. wie durch Trägheitssensoren, einen GPS-Sensor und so weiter bestimmt. Falls keine derartigen Änderungen registriert worden sind, erfolgt eine schnellere Verbindung zu einem vorherigen drahtlosen Knoten wie etwa einem Wi-Fi™ Zugangspunkt oder einem ähnlichen drahtlosen Ermöglicher, da es in diesem Fall nicht notwendig ist, nach verfügbaren drahtlosen Netzressourcen zu suchen. Somit wird beim Aufwachen aus einem Niedrigenergiezustand ein höheres Maß an Ansprechempfindlichkeit erzielt.
  • Es versteht sich, dass viele andere Anwendungsfälle unter Verwendung von Sensorinformationen aktiviert werden können, die über die integrierten Sensoren innerhalb einer Plattform wie hier beschrieben erhalten werden, und dass die vorstehenden Beispiele nur zum Zwecke der Veranschaulichung dienen. Durch Verwenden eines Systems wie hier beschrieben kann ein wahrnehmungsbezogenes Rechensystem das Hinzufügen alternativer Eingabemodalitäten einschließlich Gestenerkennung vorsehen und es dem System ermöglichen, Benutzeroperationen und -absichten zu erkennen.
  • In einigen Ausführungsformen können ein oder mehrere Infrarot- oder andere Wärmeerkennungselemente oder ein beliebiges anderes Element zum Erkennen des Vorliegens von Benutzerbewegungen vorhanden sein. Solche Erkennungselemente können mehrere unterschiedliche Elemente aufweisen, die zusammenarbeiten, in Folge arbeiten oder beides. Beispielsweise beinhalten Erkennungselemente Elemente, die eine anfängliche Erkennung bereitstellen, wie etwa Licht- oder Tonprojektion, gefolgt von der Erkennung einer Gestendetektion, beispielsweise durch einen Ultraschall-Laufzeitkamera oder eine Kamera mit gemustertem Licht.
  • Außerdem beinhaltet das System in einigen Ausführungsformen einen Lichtgenerator zum Erzeugen einer beleuchteten Linie. In einigen Ausführungsformen stellt diese Linie einen visuellen Referenzpunkt hinsichtlich einer virtuellen Grenze bereit, nämlich einen imaginären oder virtuellen Ort im Raum, wobei die Handlung des Benutzers, um die virtuelle Grenze oder Ebene zu überschreiben oder durchbrechen, als Absicht interpretiert wird, mit dem Rechensystem zu interagieren. In einigen Ausführungsformen kann die beleuchtete Linie ihre Farbe wechseln, wenn das Rechensystem in unterschiedliche Zustände im Hinblick auf den Benutzer übergeht. Die beleuchtete Linie kann verwendet werden, um einen visuellen Referenzpunkt für den Benutzer einer virtuellen Grenze im Raum bereitzustellen und kann vom System verwendet werden, um Übergänge im Zustand des Computers im Hinblick auf den Benutzer zu bestimmen, was das Bestimmen, wann der Benutzer mit dem Computer interagieren will, einschließt.
  • In einigen Ausführungsformen erkennt der Computer eine Benutzerposition und wird betrieben, um die Bewegung einer Hand des Benutzers durch die virtuelle Grenze als Geste zu interpretieren, welche die Absicht des Benutzers angibt, mit dem Computer zu interagieren. In einigen Ausführungsformen kann sich, wenn der Benutzer durch die virtuelle Linie oder Ebene hindurchgeht, das vom Lichtgenerator erzeugte Licht ändern, wodurch eine visuelle Rückmeldung für den Benutzer gegeben wird, dass der Benutzer in einen Bereich für das Bereitstellen von Gesten eingetreten ist, um eine Eingabe für den Computer zu liefern.
  • Anzeigeschirme können visuelle Angaben von Übergängen eines Zustands des Rechensystems im Hinblick auf einen Benutzer bereitstellen. In einigen Ausführungsformen wird ein erster Schirm in einem ersten Zustand bereitgestellt, in dem die Anwesenheit eines Benutzers durch das System erkannt wird, wie etwa durch Verwenden eines oder mehrerer der Erkennungselemente.
  • In einigen Implementierungen agiert das System, um eine Benutzeridentität zu erkennen, wie etwa durch Gesichtserkennung. Hier kann ein Übergang zu einem zweiten Schirm in einem zweiten Zustand bereitgestellt werden, in dem das Rechensystem die Benutzeridentität erkannt hat, wobei dieser zweite Schirm eine visuelle Rückmeldung an den Benutzer liefert, dass der Benutzer in einen neuen Zustand übergegangen ist. Der Übergang zu einem dritten Schirm kann in einem dritten Zustand erfolgen, in dem der Benutzer die Erkennung des Benutzers bestätigt hat.
  • In einigen Ausführungsformen kann das Rechensystem einen Übergangsmechanismus verwenden, um den Ort einer virtuellen Grenze für einen Benutzer zu bestimmen, wobei der Ort der virtuellen Grenze je nach Benutzer und Kontext variieren kann. Das Rechensystem kann ein Licht erzeugen, wie etwa eine beleuchtete Linie, um die virtuelle Grenze für die Interaktion mit dem System anzugeben. In einigen Ausführungsformen kann sich das Rechensystem in einem Wartezustand befinden, und das Licht kann in einer ersten Farbe erzeugt werden. Das Rechensystem kann detektieren, ob der Benutzer hinter die virtuelle Grenze gelangt ist, wie etwa durch Erkennen der Anwesenheit und Bewegung des Benutzers unter Verwendung von Erkennungselementen.
  • In einigen Ausführungsformen kann, falls erkannt wird, dass der Benutzer die virtuelle Grenze überschritten hat (wie etwa dadurch, dass die Hände des Benutzers näher am Rechensystem als an der virtuellen Begrenzungslinie sind), das Rechensystem in einen Zustand zum Empfangen von Gesteneingaben von dem Benutzer übergehen, wobei ein Mechanismus zum Anzeigen des Übergangs beinhalten kann, dass das Licht, welches die virtuelle Grenze angibt, zu einer zweiten Farbe wechselt.
  • In einigen Ausführungsformen kann das Rechensystem dann bestimmen, ob eine Gestenbewegung detektiert wird. Falls eine Gestenbewegung detektiert wird, kann das Rechensystem mit einem Gestenerkennungsprozess fortfahren, der die Verwendung von Daten aus einer Gestendatenbibliothek beinhalten kann, die sich im Speicher in der Rechenvorrichtung befinden kann oder auf die anderweitig durch die Rechenvorrichtung zugegriffen werden kann.
  • Falls eine Geste des Benutzers erkannt wird, kann das Rechensystem in Reaktion auf die Eingabe eine Funktion durchführen und zum Empfangen zusätzlicher Gesten zurückkehren, falls sich der Benutzer innerhalb der virtuellen Grenze befindet. In einigen Ausführungsformen kann, falls die Geste nicht erkannt wird, das Computersystem in einen Fehlerzustand übergehen, bei dem ein Mechanismus zum Anzeigen des Fehlerzustands einschließen kann, dass das die virtuelle Grenze anzeigende Licht zu einer dritten Farbe wechselt, wobei das System zum Empfangen zusätzlicher Gesten zurückkehrt, falls sich der Benutzer innerhalb der virtuellen Grenze zum Interagieren mit dem Rechensystem befindet.
  • Wie vorstehend erwähnt, kann das System in anderen Ausführungsformen als ein konvertierbares Tablet-System ausgelegt sein, das kann in wenigstens zwei unterschiedlichen Modi verwendet werden, einem Tablet-Modus und einem Notebook-Modus. Das konvertierbare System kann zwei Felder aufweisen, nämlich ein Anzeigefeld und ein Basisfeld, sodass die zwei Felder im Tablet-Modus in einem Stapel übereinander angeordnet sind. Im Tablet-Modus weist das Anzeigefeld nach außen und kann eine Berührungsschirm-Funktionalität bereitstellen, wie sie in herkömmlichen Tablets zu finden ist. Im Notebook-Modus können die zwei Felder in einer offenen Muschelkonfiguration angeordnet sein.
  • In verschiedenen Ausführungsformen kann der Beschleunigungsmesser ein 3-Achsen-Beschleunigungsmesser mit Datenraten von wenigstens 50 Hz sein. Ein Gyroskop kann ebenfalls enthalten sein, wobei es sich hierbei um ein 3-Achsen-Gyroskop handeln kann. Darüber hinaus kann ein E-Kompass/Magnetometer vorhanden sein. Auch können ein oder mehrere Näherungssensoren bereitgestellt sein (z. B. für Deckel offen, zum Erkennen, wann sich eine Person in der Nähe des System befindet (oder nicht) und zum Anpassen der Leistung/Leistungsfähigkeit, um die Batterielebensdauer zu verlängern). Für die Sensorfusionsfähigkeit einiger OS kann die Einbeziehung des Beschleunigungsmessers, des Gyroskops und des Kompasses erweiterte bzw. verbesserte Merkmale bereitstellen. Darüber hinaus kann, über einen Sensorknoten mit Echtzeituhr (Real-Time Clock, RTC), ein Aufweckenanhand-von-Sensoren-Mechanismus realisiert werden, um Sensoreingaben zu empfangen, wenn sich ein Rest des Systems in einem Niedrigenergiezustand befindet.
  • In einigen Ausführungsformen kann ein interner Deckel/Anzeige-offen-Schalter oder -Sensor zum Anzeigen, ob der Deckel geschlossen/offen ist, vorhanden sein und kann verwendet werden, um das System in einen Connected Standby-Zustand zu versetzen, oder zum automatischen Aufwecken aus dem Connected Standby-Zustand. Andere Systemsensoren können ACPI-Sensoren zur Überwachung des internen Prozessors, des Speicher und der Hauttemperatur beinhalten, um Änderungen an Prozessor- und Systembetriebszuständen basierend auf erkannten Parametern zu ermöglichen.
  • In einer Ausführungsform kann das OS ein Microsoft® Windows® 8 OS sein, das Connected Standby (hier auch als Win8 CS bezeichnet) implementiert. Windows 8 Connected Standby oder ein anderes OS mit einem ähnlichen Zustand kann, über eine Plattform wie hier beschrieben, eine sehr geringe Ultra-Leerlauf-Leistung bereitstellen, um es Anwendungen zu ermöglichen, bei sehr niedrigem Energieverbrauch, z. B. mit einem cloudbasierten Standort, verbunden zu bleiben. Die Plattform kann 3 Energiezustände unterstützen, nämlich Bildschirm an (normal); Connected Standby (als ein Standard-„Aus“-Zustand); und Heruntergefahren (null Watt Energieverbrauch). Somit ist die Plattform im Connected Standby-Zustand (bei minimalen Energiepegeln) selbst dann logisch eingeschaltet, wenn der Bildschirm ausgeschaltet ist. In einer solchen Plattform kann die Energieverwaltung transparent für Anwendungen gemacht werden und eine konstante Anbindung aufrechterhalten, teilweise aufgrund von Verlagerungstechnologien, um zu ermöglichen, dass die Komponente mit dem geringsten Energieverbrauch eine Operation durchführt.
  • In einem Beispiel kann eine physikalische Schicht bei PCIe genutzt werden, um mehrere unterschiedliche Protokolle zu unterstützen. Dementsprechend kann ein bestimmter Trainingszustand in einem PCIe-LTSSM für die Aushandlung von Protokollen zwischen Vorrichtungen auf einer Verbindungsstrecke genutzt werden. Wie vorstehend angemerkt, kann die Protokollbestimmung erfolgen, noch bevor die Verbindungsstrecke in einen aktiven Zustand (z. B. L0) mit der niedrigsten unterstützen Datenrate (z. B. die PCIe-Gen 1-Datenrate) übergeht. In einem Beispiel kann der PCIe-Konfigurationszustand verwendet werden. Tatsächlich kann der PCIe-LTSSM verwendet werden, um das Protokoll unter Verwendung modifizierter PCIe-Trainingssätze (z. B. TS1 und TS2) nach der Aushandlung der Verbindungsstreckenbreite und (wenigstens teilweise) parallel zu der während des Konfigurationszustands durchgeführten Spurnummerierung auszuhandeln.
  • Auch wenn diese Offenbarung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute auf diesem Gebiet der Technik zahlreiche Modifikationen und Variationen erkennen. Es ist beabsichtigt, dass die beigefügten Patentansprüche alle solche Modifikationen und Variationen abdecken sollen, die dem wahren Geist und Schutzbereich der vorliegenden Offenbarung entsprechen.
  • Ein Entwurf kann verschiedene Phasen durchlaufen, von der Erstellung über die Simulation bis hin zur Fertigung. Daten, die einen Entwurf darstellen, können den Entwurf auf mehrere Weisen darstellen. Erstens, was in Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionellen Beschreibungssprache dargestellt werden. Darüber hinaus kann ein Schaltungsebene-Modell mit Logik und/oder Transistorgattern in einigen Phasen des Entwurfsprozesses produziert werden. Des Weiteren erreichen die meisten Entwürfe, in einem gewissen Stadium, eine Ebene, in der Daten die physikalische Anordnung von verschiedenen Vorrichtungen in dem Hardwaremodell darstellen. In dem Fall, dass herkömmliche Halbleiterfertigungsverfahren verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die bei Masken, die verwendet werden, um die integrierte Schaltung zu produzieren, das Vorhandensein oder Fehlen verschiedener Merkmale in unterschiedlichen Maskenschichten spezifizieren. In jeder Darstellung des Entwurfs können die Daten in beliebiger Form auf einem maschinenlesbaren Medium gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Datenspeicher wie etwa eine Platte können das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen, welche moduliert oder sonstwie generiert werden, um derartige Informationen zu übertragen, übertragen werden. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf angibt oder transportiert, übertragen wird, insofern als dass ein Kopieren, Puffern oder Neuübertragen des elektrischen Signals durchgeführt wird, wird eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem physischen, maschinenlesbaren Medium, wenigstens temporär, ein Erzeugnis, beispielsweise in eine Trägerwelle kodierte Informationen, unter Einbeziehung von Ausführungsformen der vorliegenden Offenbarung speichern.
  • Ein Modul wie hier verwendet bezieht sich auf eine beliebige Kombination aus Hardware, Software und/oder Firmware. Als Beispiel umfasst ein Modul Hardware, beispielsweise eine Mikrosteuerung, die mit einem nicht-transitorischen Medium verknüpft ist, um Code zu speichern, der dafür ausgelegt ist, von einer Mikrosteuerung ausgeführt zu werden. Daher bezieht sich ein Verweis auf ein Modul, in einer Ausführungsform, auf die Hardware, die speziell dafür ausgelegt ist, den auf einem nicht-transitorischen Medium zu speichernden Code zu erkennen und/oder auszuführen. Des Weiteren bezieht sich, in einer anderen Ausführungsform, die Verwendung eines Moduls auf ein nicht-transitorisches Medium mit dem Code, der speziell dafür ausgelegt ist, von der Mikrosteuerung ausgeführt zu werden, um vorgegebene Operationen durchzuführen. Und wie abgeleitet werden kann, kann sich der Begriff Modul (in diesem Beispiel) in noch einer anderen Ausführungsform auf die Kombination der Mikrosteuerung und des nicht-transitorischen Mediums beziehen. Modulgrenzen, die getrennt dargestellt sind, variieren häufig und sind potenziell überlappend. So können beispielsweise ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam nutzen, während sie potenziell einige unabhängige Hardware, Software oder Firmware beibehalten. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware, beispielsweise Transistoren, Register oder andere Hardware wie etwa programmierbare Logikbauelemente.
  • Die Verwendung der Formulierung „zum“ oder „dafür ausgelegt, dass“ bezieht sich, in einer Ausführungsform, auf das Anordnen, Zusammensetzen, Fertigen, Zum-Verkauf-Anbieten, Importieren und/oder Entwerfen einer Einrichtung, Hardware, Logik oder eines Elements zum Durchführen einer vorgesehenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Einrichtung oder ein Element davon, die/das nicht in Betrieb ist, dennoch „dafür ausgelegt“, eine vorgesehene Aufgabe durchzuführen, falls sie/es dafür konzipiert, gekoppelt und/oder verbunden ist, um die vorgesehene Aufgabe durchzuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 liefern. Aber ein Logikgatter, dass „dafür ausgelegt ist“, ein Aktivierungssignal für einen Takt bereitzustellen, schließt nicht jedes potenzielle Logikgatter ein, das eine 1 oder eine 0 liefern kann. Vielmehr ist das Logikgatter ein Gatter, das in irgendeiner Weise gekoppelt ist, sodass während des Betriebs die Ausgabe 1 oder 0 den Takt aktivieren soll. Erneut ist zu beachten, dass die Verwendung des Begriffs „dafür ausgelegt, dass“ keinen Betrieb erfordert, sondern vielmehr auf den latenten Status einer Einrichtung, einer Hardware und/oder eines Elements ausgerichtet ist, wobei in dem latenten Status die Einrichtung, die Hardware und/oder das Element dafür ausgelegt sind, eine bestimmte Aufgabe durchzuführen, wenn die Vorrichtung, die Hardware und/oder das Element betrieben werden.
  • Des Weiteren bezieht sich die Verwendung der Formulierungen „in der Lage sein, etwas zu tun“ und/oder „betreibbar sein, um“, in einer Ausführungsform, auf einige Einrichtungen, Logiken, Hardware und/oder Elemente, die so ausgelegt ist, dass sie die Verwendung der Einrichtung, Logik, Hardware und/oder des Elements in einer spezifizierten Weise ermöglichen. Wie beim Vorstehenden ist zu beachten, dass sich die Verwendung von „um zu“, „in der Lage sein, etwas zu tun“ oder „betreibbar sein, um“, in einer Ausführungsform, auf den latenten Status einer Einrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Einrichtung, Logik, Hardware und/oder das Element nicht in Betrieb sind, aber so ausgelegt sind, dass sie die Verwendung der Vorrichtung in einer spezifizierten Weise ermöglichen.
  • Ein Wert, wie hier verwendet, beinhaltet jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Oft wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als Einsen (1) und Nullen (0) bezeichnet, was einfach binäre logische Zustände darstellt. Beispielsweise steht 1 für einen hohen Logikpegel, und 0 steht für einen niedrigen Logikpegel. In einer Ausführungsform kann eine Datenspeicherzelle, beispielsweise eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu speichern. Allerdings sind auch andere Darstellungen von Werten in Rechensystemen verwendet worden. Beispielsweise kann die Dezimalzahl Zehn auch als Binärwert 1010 und als Hexadezimalbuchstabe A dargestellt sein. Daher beinhaltet ein Wert jede Darstellung von Informationen, die in der Lage ist, in einem Rechensystem gespeichert zu werden.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt sein. Als ein Beispiel kann ein erster Wert, beispielsweise eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, beispielsweise eine logische Null, einen Nicht-Standard-Zustand darstellen kann. Darüber hinaus beziehen sich die Begriffe „Zurücksetzen“ und „Setzen“, in einer Ausführungsform, auf einen standardmäßigen bzw. einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Standardwert potenziell einen hohen logischen Wert, d. h. zurückgesetzt, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert, d. h. gesetzt, beinhaltet. Es sei darauf hingewiesen, dass jede Kombination von Werten genutzt werden kann, um jede beliebige Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code wie vorstehend dargelegt können über Anweisungen oder Code implementiert sein, die auf einem für Maschinen zugänglichen, maschinenlesbaren, für Computer zugänglichen oder computerlesbaren Medium gespeichert und von einem Verarbeitungselement ausgeführt werden können. Ein nicht-transitorisches für Maschinen zugängliches/maschinenlesbares Medium weist einen Mechanismus auf, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die von einer Maschine, beispielsweise einem Computer oder einem elektronischen System, gelesen werden können. Beispielsweise umfasst ein nicht-transitorisches maschinenlesbares Medium Direktzugriffsspeicher (Random Access Memory, RAM), beispielsweise einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; andere Formen von Speichervorrichtungen für das Speichern von Informationen, die von transitorischen (sich ausbreitenden) Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale) empfangen werden; etc., die von den nicht-transitorischen Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Anweisungen, die verwendet werden, um Logik zu programmieren, um Ausführungsformen der Offenbarung durchzuführen, können in einem Speicher im System gespeichert sein, beispielsweise DRAM, Cache, Flash-Speicher oder einem anderen Datenspeicher. Des Weiteren können die Anweisungen über ein Netz oder durch andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form umfassen, die von einer Maschine (z. B. einem Computer) gelesen werden kann, ohne jedoch beschränkt zu sein auf Floppydisketten, optische Datenträger, CDs (Compact Disks), Compact-Disk-Festwertspeicher (Compact Disc Read-Only Memory, CD-ROMs) und magnetooptische Platten, Festwertspeicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random Access Memory, RAM), löschbaren programmierbaren Festwertspeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen physischen, maschinenlesbaren Datenspeicher, wie er bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder sonstige Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale etc.) verwendet wird. Entsprechend umfasst das computerlesbare Medium jede Art von physischen maschinenlesbaren Medien, die dafür geeignet sind, elektronische Anweisungen oder Informationen in einer Form zu speichern oder zu übertragen, die von einer Maschine (z. B. einem Computer) gelesen werden kann.
  • Der Hinweis in der Patentschrift auf „eine einzige Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein(e) besondere(s) Merkmal, Struktur oder Eigenschaft, das/die im Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform der vorliegenden Offenbarung vorkommt. Der Ausdruck „bei einer Ausführungsform“ oder „in einer Ausführungsform“ an diversen Stellen in der Beschreibung bezieht sich somit nicht notwendigerweise immer auf dieselbe Ausführungsform. Ferner können die Merkmale, Strukturen, Funktionen oder Kennzeichen auf jede geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen hieran vorgenommen werden können, ohne vom breiteren Grundgedanken und Schutzbereich der Offenbarung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt sind. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht in einem einschränkenden Sinne zu betrachten. Des Weiteren betreffen die vorstehende Verwendung einer Ausführungsform und andere beispielhafte Formulierungen nicht notwendigerweise dieselbe Ausführungsform oder dasselbe Beispiel, können sich jedoch auf andere und verschiedene Ausführungsformen beziehen sowie potenziell auf dieselbe Ausführungsform.
  • Verschiedene Aspekte und Kombinationen der Ausführungsformen werden vorstehend beschrieben, einige davon werden durch die folgenden Beispiele dargestellt:
  • Beispiel 1 ist eine Einrichtung, die eine Rechenvorrichtung umfasst, wobei die Rechenvorrichtung eine Quelle von Verfolgungsdaten umfasst, wobei die Verfolgungsdaten Informationen zu der Rechenvorrichtung umfassen, die verwendet werden sollen, um mit der Rechenvorrichtung verknüpfte Fehler zu debuggen; eine Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI) zum Empfangen der Verfolgungsdaten von der Rechenvorrichtung; eine serielle Schnittstelle mit einem Port, wobei die serielle Schnittstelle durch eine physische Schnittstelle mit der HTI verbunden ist; wobei die HTI die Verfolgungsdaten über die physische Schnittstelle an die serielle Schnittstelle senden soll. Die serielle Schnittstelle soll die Verfolgungsdaten serialisieren, die Verfolgungsdaten in ein Paketformat packen, das mit der seriellen Schnittstelle konform ist, und die Verfolgungsdaten mittels des Ports als Paket über eine serielle Verbindungsstrecke senden.
  • Beispiel 2 kann den Erfindungsgegenstand aus Beispiel 1 beinhalten, wobei die serielle Schnittstelle eine von einer Thunderbolt-3-konformen seriellen Schnittstelle oder einer USB (Universal Serial Bus)-4-Schnittstelle umfasst.
  • Beispiel 3 kann den Erfindungsgegenstand aus einem der Beispiele 1-2 beinhalten, wobei der Port einen Typ-C-Port umfasst.
  • Beispiel 4 kann den Erfindungsgegenstand aus einem der Beispiele 1-3 beinhalten, wobei die physische Schnittstelle eine PIPE (Physical Interface for Peripheral Component Interconnect Express)-Schnittstelle umfasst.
  • Beispiel 5 kann den Erfindungsgegenstand aus Beispiel 4 beinhalten, wobei die PIPE-Schnittstelle einen 64-Bit-Bus umfasst und wobei die HTI die Verfolgungsdaten mittels der PIPE-Schnittstelle über den 64-Bit-Bus an die serielle Schnittstelle sendet.
  • Beispiel 6 kann den Erfindungsgegenstand aus Beispiel 4 beinhalten, wobei die HTI ein Trace active-Signal an die serielle Schnittstelle übertragen soll und das Trace active-Signal angeben soll, dass Verfolgungsdaten auf der HTI zur Übertragung über die serielle Verbindungsstrecke verfügbar sind.
  • Beispiel 7 kann den Erfindungsgegenstand aus Beispiel 6 beinhalten, wobei die serielle Schnittstelle die serielle Verbindungsstrecke basierend darauf, dass das Trace active-Signal empfangen worden ist, konfigurieren soll; und ein Link ready-Signal an die HTI über die PIPE-Schnittstelle senden soll, sobald die serielle Verbindungsstrecke konfiguriert ist.
  • Beispiel 8 kann den Erfindungsgegenstand aus Beispiel 4 beinhalten, wobei die serielle Schnittstelle ein Credit return-Signal an die HTI senden soll, um eine Guthabenfreigabe über die PIPE-Schnittstelle anzugeben; und wobei die HTI Verfolgungsdaten über die PIPE-Schnittstelle an die serielle Schnittstelle senden soll, wenn die HTI über wenigstens ein Guthaben verfügt.
  • Beispiel 9 ist ein System, umfassend eine Hostmaschine, die eine hostseitige serielle Schnittstelle und einen Speicher zum Speichern von Informationen umfasst. Das System beinhaltet auch eine zu testende Vorrichtung (Device Under Test, DUT), die durch eine serielle Verbindungsstrecke mit der Hostmaschine verbunden ist. Die DUT umfasst eine Rechenvorrichtung, wobei die Rechenvorrichtung eine Quelle von Verfolgungsdaten umfasst, wobei die Verfolgungsdaten Informationen zu der Rechenvorrichtung umfassen, die verwendet werden sollen, um mit der Rechenvorrichtung verknüpfte Fehler zu debuggen; eine Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI) zum Empfangen der Verfolgungsdaten von der Rechenvorrichtung; eine serielle Schnittstelle mit einem Port; eine physische Schnittstelle, welche die serielle Schnittstelle mit der HTI verbindet. Die HTI soll die Verfolgungsdaten über die physische Schnittstelle an die serielle Schnittstelle senden. Die serielle Schnittstelle soll die Verfolgungsdaten in ein Paketformat packen, das mit der seriellen Schnittstelle konform ist, und die Verfolgungsdaten als Paket über eine serielle Verbindungsstrecke an die Hostmaschine senden. Die Hostmaschine soll die Verfolgungsdaten als Paket über die serielle Verbindungsstrecke an der hostseitigen seriellen Schnittstelle empfangen; und die Verfolgungsdaten im Speicher speichern.
  • Beispiel 10 kann den Erfindungsgegenstand aus Beispiel 9 beinhalten, wobei die Hostmaschine Debugging-Logik umfasst, um Debugging-Operationen für die DUT unter Verwendung der im Speicher gespeicherten Verfolgungsdaten durchzuführen.
  • Beispiel 11 kann den Erfindungsgegenstand aus einem der Beispiele 9-10 beinhalten, wobei die Hostmaschine einen HTI-Treiber umfasst, wobei der HTI-Treiber die HTI an der DUT dafür konfigurieren soll, die Verfolgungsdaten durch die serielle Schnittstelle zu tunneln.
  • Beispiel 12 kann den Erfindungsgegenstand aus einem der Beispiele 9-11 beinhalten, wobei die serielle Schnittstelle eine von einer Thunderbolt-3-konformen seriellen Schnittstelle oder einer USB (Universal Serial Bus)-4-Schnittstelle umfasst.
  • Beispiel 13 kann den Erfindungsgegenstand aus einem der Beispiele 9-12 beinhalten, wobei der Port einen Typ-C-Port umfasst.
  • Beispiel 14 kann den Erfindungsgegenstand aus einem der Beispiele 9-13 beinhalten, wobei die physische Schnittstelle eine PIPE (Physical Interface for Peripheral Component Interconnect Express)-Schnittstelle umfasst.
  • Beispiel 15 kann den Erfindungsgegenstand aus Beispiel 14 beinhalten, wobei die PIPE-Schnittstelle einen 64-Bit-Bus umfasst und wobei die HTI die Verfolgungsdaten mittels der PIPE-Schnittstelle über den 64-Bit-Bus an die serielle Schnittstelle sendet.
  • Beispiel 16 kann den Erfindungsgegenstand aus Beispiel 14 beinhalten, wobei die HTI ein Trace active-Signal an die serielle Schnittstelle übertragen soll und das Trace active-Signal angeben soll, dass Verfolgungsdaten auf der HTI zur Übertragung über die serielle Verbindungsstrecke verfügbar sind.
  • Beispiel 17 kann den Erfindungsgegenstand aus Beispiel 16 beinhalten, wobei die serielle Schnittstelle die serielle Verbindungsstrecke basierend darauf, dass das Trace active-Signal empfangen worden ist, konfigurieren soll; und ein Link ready-Signal an die HTI über die PIPE-Schnittstelle senden soll, nachdem die serielle Verbindungsstrecke konfiguriert worden ist.
  • Beispiel 18 kann den Erfindungsgegenstand aus Beispiel 14 beinhalten, wobei die serielle Schnittstelle ein Credit return-Signal an die HTI senden soll, um eine Guthabenfreigabe über die PIPE-Schnittstelle anzugeben; und wobei die HTI Verfolgungsdaten über die PIPE-Schnittstelle an die serielle Schnittstelle senden soll, wenn die HTI über wenigstens ein Guthaben verfügt.
  • Beispiel 19 ist ein Verfahren, umfassend das Empfangen, an einer seriellen Schnittstelle, von einer Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI), von Verfolgungsdaten, die mit einer Rechenvorrichtung verknüpft sind, über eine PIPE (Physical Interface for Peripheral Component Interconnect Express)-Schnittstelle; Erstellen eines Pakets, das mit der seriellen Schnittstelle konform ist, wobei das Paket die Verfolgungsdaten beinhalten soll; und Senden des Pakets mit den Verfolgungsdaten über eine serielle Verbindungsstrecke.
  • Beispiel 20 kann den Erfindungsgegenstand aus Beispiel 19 beinhalten, ferner umfassend das Empfangen, an der seriellen Schnittstelle, eines Trace _active-Signals von der HTI, wobei das Trace active-Signal angibt, dass Verfolgungsdaten verfügbar sind, die über die serielle Verbindungsstrecke gesendet werden sollen; das Konfigurieren der seriellen Verbindungsstrecke, um die Verfolgungsdaten in Reaktion auf das Empfangen des Trace _active-Signals von der HTI zu senden; und das Senden eines Link ready-Signals, sobald die serielle Verbindungsstrecke konfiguriert ist.
  • Beispiel 21 ist eine Einrichtung, umfassend eine Verfolgungsdatenquelle, eine Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI), eine Thunderbolt-Schnittstelle oder eine USB4-Schnittstelle und eine PIPE-Schnittstelle, welche die HTI und die Thunderbolt- oder USB4-Schnittstelle verbindet. Die HTI kann Verfolgungsdaten über die PIPE-Schnittstelle an die Thunderbolt- oder USB4-Schnittstelle senden, um diese über eine serielle Verbindungsstrecke, wie etwa eine TBT-Verbindungsstrecke oder eine USB4-Verbindungsstrecke, an die Hostmaschine zu übertragen. Die PIPE-Schnittstelle kann ein Mittel zum Tunneln von Verfolgungsdaten durch TBT oder USB4 bereitstellen. Die PIPE-Schnittstelle kann verschiedene Signalisierungsspuren beinhalten, um die TBT-Schnittstelle oder die USB4-Schnittstelle zu veranlassen, ein protokollkonformes Paket zu konstruieren, welches die Verfolgungsdaten beinhaltet. Die Verfolgungsdaten sollen an der Hostmaschine für das Debugging der Einrichtung verwendet werden.

Claims (20)

  1. Einrichtung, umfassend: eine Rechenvorrichtung, wobei die Rechenvorrichtung eine Quelle von Verfolgungsdaten umfasst, wobei die Verfolgungsdaten Informationen zu der Rechenvorrichtung umfassen, die verwendet werden sollen, um mit der Rechenvorrichtung verknüpfte Fehler zu debuggen; eine Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI) zum Empfangen der Verfolgungsdaten von der Rechenvorrichtung; eine serielle Schnittstelle, umfassend einen Port, wobei die serielle Schnittstelle durch eine physische Schnittstelle mit der HTI verbunden ist; wobei die HTI die Verfolgungsdaten über die physische Schnittstelle an die serielle Schnittstelle senden soll; und die serielle Schnittstelle: die Verfolgungsdaten serialisieren, die Verfolgungsdaten in ein Paketformat, das mit der seriellen Schnittstelle konform ist, packen und die Verfolgungsdaten, mittels des Ports, als Paket über eine serielle Verbindungsstrecke senden soll.
  2. Einrichtung nach Anspruch 1, wobei die serielle Schnittstelle eine von einer Thunderbolt-3-konformen seriellen Schnittstelle oder einer USB (Universal Serial Bus)-4-Schnittstelle umfasst.
  3. Einrichtung nach einem der Ansprüche 1 oder 2, wobei der Port einen Typ-C-Port umfasst.
  4. Einrichtung nach einem der Ansprüche 1-3, wobei die physische Schnittstelle eine PIPE (Physical Interface for Peripheral Component Interconnect Express)-Schnittstelle umfasst.
  5. Einrichtung nach Anspruch 4, wobei die PIPE-Schnittstelle einen 64-Bit-Bus umfasst und wobei die HTI die Verfolgungsdaten mittels der PIPE-Schnittstelle über den 64-Bit-Bus an die serielle Schnittstelle sendet.
  6. Einrichtung nach Anspruch 4, wobei die HTI ein Trace_active-Signal an die serielle Schnittstelle übertragen soll und das Trace active-Signal angeben soll, dass Verfolgungsdaten auf der HTI zur Übertragung über die serielle Verbindungsstrecke verfügbar sind.
  7. Einrichtung nach Anspruch 6, wobei die serielle Schnittstelle: die serielle Verbindungsstrecke basierend darauf, dass das Trace active-Signal empfangen worden ist, konfigurieren soll; und ein Link _ready-Signal an die HTI über die PIPE-Schnittstelle senden soll, sobald die serielle Verbindungsstrecke konfiguriert ist.
  8. Einrichtung nach Anspruch 4, wobei die serielle Schnittstelle ein Credit return-Signal an die HTI senden soll, um eine Guthabenfreigabe über die PIPE-Schnittstelle anzugeben; und wobei die HTI Verfolgungsdaten über die PIPE-Schnittstelle an die serielle Schnittstelle senden soll, wenn die HTI über wenigstens ein Guthaben verfügt.
  9. System, umfassend: eine Hostmaschine, umfassend: eine hostseitige serielle Schnittstelle und einen Speicher zum Speichern von Informationen; und eine zu testende Vorrichtung (Device Under Test, DUT), die durch eine serielle Verbindungsstrecke mit der Hostmaschine verbunden ist, wobei die DUT umfasst: eine Rechenvorrichtung, wobei die Rechenvorrichtung eine Quelle von Verfolgungsdaten umfasst, wobei die Verfolgungsdaten Informationen zu der Rechenvorrichtung umfassen, die verwendet werden sollen, um mit der Rechenvorrichtung verknüpfte Fehler zu debuggen, eine Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI) zum Empfangen der Verfolgungsdaten von der Rechenvorrichtung, eine serielle Schnittstelle, umfassend einen Port; eine physische Schnittstelle, welche die serielle Schnittstelle mit der HTI verbindet, wobei: die HTI die Verfolgungsdaten über die physische Schnittstelle an die serielle Schnittstelle senden soll; und die serielle Schnittstelle: die Verfolgungsdaten in ein Paketformat packen soll, das mit der seriellen Schnittstelle konform ist, und die Verfolgungsdaten als Paket über die serielle Verbindungsstrecke an die Hostmaschine senden soll; die Hostmaschine: die Verfolgungsdaten als Paket über die serielle Verbindungsstrecke an der hostseitigen seriellen Schnittstelle empfangen soll; und die Verfolgungsdaten im Speicher speichern soll.
  10. System nach Anspruch 9, wobei die Hostmaschine Debugging-Logik umfasst, um Debugging-Operationen für die DUT unter Verwendung der im Speicher gespeicherten Verfolgungsdaten durchzuführen.
  11. System nach einem der Ansprüche 9 oder 10, wobei die Hostmaschine einen HTI-Treiber umfasst, wobei der HTI-Treiber die HTI an der DUT dafür konfigurieren soll, die Verfolgungsdaten durch die serielle Schnittstelle zu tunneln.
  12. System nach einem der Ansprüche 9-11, wobei die serielle Schnittstelle eine von einer Thunderbolt-3-konformen seriellen Schnittstelle oder einer USB (Universal Serial Bus)-4-Schnittstelle umfasst.
  13. System nach einem der Ansprüche 9-12, wobei der Port einen Typ-C-Port umfasst.
  14. System nach einem der Ansprüche 9-13, wobei die physische Schnittstelle eine PIPE (Physical Interface for Peripheral Component Interconnect Express)-Schnittstelle umfasst.
  15. System nach Anspruch 14, wobei die PIPE-Schnittstelle einen 64-Bit-Bus umfasst und wobei die HTI die Verfolgungsdaten mittels der PIPE-Schnittstelle über den 64-Bit-Bus an die serielle Schnittstelle sendet.
  16. System nach Anspruch 14, wobei die HTI ein Trace_active-Signal an die serielle Schnittstelle übertragen soll und das Trace active-Signal angeben soll, dass Verfolgungsdaten auf der HTI zur Übertragung über die serielle Verbindungsstrecke verfügbar sind.
  17. System nach Anspruch 16, wobei die serielle Schnittstelle: die serielle Verbindungsstrecke basierend darauf, dass das Trace active-Signal empfangen worden ist, konfigurieren soll; und ein Link _ready-Signal an die HTI über die PIPE-Schnittstelle senden soll, sobald die serielle Verbindungsstrecke konfiguriert ist.
  18. System nach Anspruch 14, wobei die serielle Schnittstelle ein Credit return-Signal an die HTI senden soll, um eine Guthabenfreigabe über die PIPE-Schnittstelle anzugeben; und wobei die HTI Verfolgungsdaten über die PIPE-Schnittstelle an die serielle Schnittstelle senden soll, wenn die HTI über wenigstens ein Guthaben verfügt.
  19. Verfahren, umfassend: Empfangen, an einer seriellen Schnittstelle, von einer Hochgeschwindigkeits-Verfolgungsschnittstelle (High-speed Trace Interface, HTI), von Verfolgungsdaten, die mit einer Rechenvorrichtung verknüpft sind, über eine PIPE (Physical Interface for Peripheral Component Interconnect Express)-Schnittstelle; Erstellen eines Pakets, das mit der seriellen Schnittstelle konform ist, wobei das Paket die Verfolgungsdaten beinhalten soll; und Senden des Pakets mit den Verfolgungsdaten über eine serielle Verbindungsstrecke.
  20. Verfahren nach Anspruch 19, ferner umfassend: Empfangen, an der seriellen Schnittstelle, eines Trace active-Signals von der HTI, wobei das Trace_active-Signal angibt, dass Verfolgungsdaten verfügbar sind, die über die serielle Verbindungsstrecke gesendet werden sollen; Konfigurieren der seriellen Verbindungsstrecke, um die Verfolgungsdaten in Reaktion auf das Empfangen des Trace _active-Signals von der HTI zu senden; und Senden eines Link ready-Signals, sobald die serielle Verbindungsstrecke konfiguriert ist.
DE102020134763.4A 2020-06-25 2020-12-22 Closed chassis debugging through tunneling Pending DE102020134763A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/912,545 US20200327041A1 (en) 2020-06-25 2020-06-25 Closed chassis debugging through tunneling
US16/912,545 2020-06-25

Publications (1)

Publication Number Publication Date
DE102020134763A1 true DE102020134763A1 (de) 2021-12-30

Family

ID=72749225

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020134763.4A Pending DE102020134763A1 (de) 2020-06-25 2020-12-22 Closed chassis debugging through tunneling

Country Status (3)

Country Link
US (1) US20200327041A1 (de)
CN (1) CN113849442A (de)
DE (1) DE102020134763A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403449B1 (en) * 2021-04-30 2022-08-02 Cadence Design Systems, Inc. Systems and methods for configurable switches for verification IP

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037911B2 (en) * 2010-12-09 2015-05-19 Advanced Micro Devices, Inc. Debug state machines and methods of their operation
KR20130033230A (ko) * 2011-09-26 2013-04-03 삼성전자주식회사 하이브리드 메모리 장치, 이를 포함하는 시스템, 및 하이브리드 메모리장치의 데이터 기입 및 독출 방법
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US20190034259A1 (en) * 2017-07-25 2019-01-31 Kyocera Document Solutions Inc. Systems and Methods for Implementing a Thread Trace Log
US10311000B2 (en) * 2017-09-29 2019-06-04 Intel Corporation Integrated universal serial bus (USB) type-C switching
US10733077B2 (en) * 2017-12-28 2020-08-04 Intel Corporation Techniques for monitoring errors and system performance using debug trace information

Also Published As

Publication number Publication date
US20200327041A1 (en) 2020-10-15
CN113849442A (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
US11657015B2 (en) Multiple uplink port devices
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
KR101815173B1 (ko) 코히어런스 프로토콜 테이블
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112016004332T5 (de) Verfahren, vorrichtungen und systeme zum taktversatzausgleich von datenverbindungaufteilungen
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE112014006183T5 (de) Vorrichtung, Verfahren und System für einen Schnellkonfigurationsmechanismus
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition
DE102019132213A1 (de) Adressenübersetzung für skalierbare verlinkte Vorrichtungen
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE102020130536A1 (de) Adaptiver Eintritt in und adaptives Verlassen von Niedrigenergiezuständen
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung