DE112013007842B3 - SYSTEM, DEVICE AND METHOD FOR GENERATION AND TRANSMISSION FLITS OF DIFFERENT PROTOCOLS IN DIFFERENT MODES - Google Patents

SYSTEM, DEVICE AND METHOD FOR GENERATION AND TRANSMISSION FLITS OF DIFFERENT PROTOCOLS IN DIFFERENT MODES Download PDF

Info

Publication number
DE112013007842B3
DE112013007842B3 DE112013007842.2T DE112013007842T DE112013007842B3 DE 112013007842 B3 DE112013007842 B3 DE 112013007842B3 DE 112013007842 T DE112013007842 T DE 112013007842T DE 112013007842 B3 DE112013007842 B3 DE 112013007842B3
Authority
DE
Germany
Prior art keywords
pcie
protocol
data
memory
logic
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.)
Active
Application number
DE112013007842.2T
Other languages
German (de)
Inventor
Robert G. Blankenship
Kenneth C. Creta
Balint Fleischer
Michelle C. Jen
Mohan J. Kumar
Brian S. Morris
Debendra Das Sharma
Suresh S. Chittor
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
Application granted granted Critical
Publication of DE112013007842B3 publication Critical patent/DE112013007842B3/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Vorrichtung, umfassend:eine Platine, die eine Peripheral Component Interconnect Express-Elektrik, PCIe-Elektrik, umfasst,wobei die PCIe-Elektrik eine PCIe physische Schicht implementieren soll;eine erste Protokollstapellogik, um wenigstens einen Teil eines PCIe-Stapels zu implementieren,wobei die erste Protokollstapellogik dazu dient, Peripheral Component Interconnect Express-basierte Pakete, PCIe-basierte Pakete, zu erzeugen und zu bewirken, dass die PCIe-basierten Pakete über die PCIe physische Schicht gesendet werden; undeine zweite Protokollstapellogik, um wenigstens einen Teil eines anderen Protokollstapels zu implementieren,wobei der andere Protokollstapel ein Speicherprotokoll umfasst, und die zweite Protokollstapellogik dazu dient, Flits eines unterschiedlichen Protokolls zu erzeugen und zu bewirken, dass die Flits über die PCIe physische Schicht gesendet werden.An apparatus comprising:a circuit board comprising Peripheral Component Interconnect Express, PCIe, electrical,wherein the PCIe electrical is to implement a PCIe physical layer;first protocol stack logic to implement at least a portion of a PCIe stack,wherein the first protocol stack logic is to generate Peripheral Component Interconnect Express based packets, PCIe based packets and cause the PCIe based packets to be sent over the PCIe physical layer; andsecond protocol stack logic to implement at least a portion of another protocol stack,wherein the other protocol stack comprises a storage protocol, and the second protocol stack logic is to generate flits of a different protocol and cause the flits to be sent over the PCIe physical layer.

Description

GEBIET UND AUFGABENSTELLUNGAREA AND TASK

Diese Offenbarung betrifft ein System, eine Vorrichtung und ein Verfahren zum Erzeugen und Senden von Flits verschiedener Protokolle in unterschiedlichen Modi.
Die der vorliegenden Erfindung zugrunde liegende Aufgabe besteht darin, einen Datenstrom aus Sequenzen, die entweder einem PCIe-Protokoll oder einem Speicherprotokoll zugeordnet sind, zu bilden. Diese Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche 1, 10 und 15 gelöst. Die abhängigen Patentansprüche beschreiben bevorzugte Ausführungsformen.
Die Druckschrift US 2013/0 163 605 A1 offenbart ein aus mehreren Switches bestehendes Netzwerk, das die Übertragung zu mehreren unterschiedlichen Protokollen gehörigen Daten über nur eine einzelne, nicht-protokollspezifische Verbindung ermöglicht.
This disclosure relates to a system, apparatus and method for generating and sending flits of different protocols in different modes.
The object on which the present invention is based is to form a data stream from sequences which are assigned either to a PCIe protocol or to a memory protocol. This object is solved by the subject matter of independent claims 1, 10 and 15. The dependent claims describe preferred embodiments.
The pamphlet US 2013/0 163 605 A1 discloses a multi-switched network that allows data associated with multiple different protocols to be transmitted over a single, non-protocol specific connection.

HINTERGRUNDBACKGROUND

Fortschritte in der Halbleiterbearbeitung und im logischen Design haben eine Erhöhung der Menge an Logik ermöglicht, die auf integrierten Schaltungsvorrichtungen vorhanden sein kann. Als unmittelbare Folge haben sich Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen zu einem System mehrfacher Kerne, mehrfacher Hardware-Threads, und mehrfacher logischer Prozessoren entwickelt, die auf einzelnen integrierten Schaltungen vorhanden sind, wie auch anderen Schnittflächen, die in solchen Prozessoren integriert sind. Ein Prozessor oder eine integrierte Schaltung weist typischerweise ein einzelnes physisches Prozessor-Die auf, wobei das Prozessor-Die eine beliebige Anzahl von Kernen, Hardware-Threads, logischen Prozessoren, Schnittstellen, Speicher, Controller-Hubs, usw. enthalten kann.Advances in semiconductor processing and logic design have enabled an increase in the amount of logic that can reside on integrated circuit devices. As a direct result, computer system configurations have evolved from a single or multiple integrated circuits to a system of multiple cores, multiple hardware threads, and multiple logical processors residing on single integrated circuits, as well as other interfaces built into such processors. A processor or integrated circuit typically has a single physical processor die, where the processor die may contain any number of cores, hardware threads, logical processors, interfaces, memory, controller hubs, and so on.

Infolge der besseren Möglichkeit mehr Verarbeitungsleistung in kleinere Packages einzufügen, haben kleinere Rechnervorrichtungen an Beliebtheit gewonnen. Smartphones, Tablets, ultradünne Notebooks und andere Benutzergeräte haben exponentiell zugenommen. Diese kleineren Vorrichtungen basieren jedoch auf Servern sowohl zur Datenspeicherung wie auch zur komplexen Verarbeitung, was den Formfaktor überschreitet. Folglich hat auch der Bedarf am Hochleistungsrechnermarkt (d.h., Server-Raum) zugenommen. Zum Beispiel ist in modernen Servern typischerweise zur Erhöhung der Rechenleistung nicht nur ein einzelner Prozessor mit mehrfachen Kernen vorhanden, sondern es gibt auch mehrfache physische Prozessoren (auch als mehrfache Buchsen bezeichnet). Mit steigender Verarbeitungsleistung im Zusammenhang mit der Anzahl von Vorrichtungen in einem Rechnersystem wird jedoch die Kommunikation zwischen Buchsen und anderen Vorrichtungen kritischer.Smaller computing devices have become more popular due to the greater ability to fit more processing power into smaller packages. Smartphones, tablets, ultra-thin notebooks and other user devices have grown exponentially. However, these smaller devices rely on servers for both data storage and complex processing, exceeding the form factor. Consequently, the demand for the high performance computing market (i.e., server space) has also increased. For example, in modern servers, not only is there typically a single processor with multiple cores to increase computing power, but there are also multiple physical processors (also referred to as multiple sockets). However, as processing power increases with the number of devices in a computing system, communication between sockets and other devices becomes more critical.

Tatsächlich haben sich Zwischenverbindungen von eher traditionellen Multi-Drop-Bussen, die vorwiegend elektrische Kommunikationen bewältigten, zu vollständig ausgearbeiteten Zwischenverbindungsarchitekturen entwickelt, die eine schnelle Kommunikation erleichtern. Da der Verbrauch zukünftiger Prozessoren bei noch höheren Raten liegen wird, besteht leider ein entsprechender Bedarf bei den Fähigkeiten bestehender Zwischenverbindungsarchitekturen.In fact, interconnects have evolved from more traditional multi-drop buses that primarily handled electrical communications to fully-fledged interconnect architectures that facilitate high-speed communications. Unfortunately, as the consumption of future processors will be at even higher rates, there is a corresponding need in the capabilities of existing interconnect architectures.

Figurenlistecharacter list

  • 1 veranschaulicht eine Ausführungsform eines Rechnersystems, das eine Zwischenverbindungsarchitektur enthält. 1 Figure 1 illustrates one embodiment of a computing system that includes an interconnect architecture.
  • 2 veranschaulicht eine Ausführungsform einer Zwischenverbindungsarchitektur, die einen schichtenförmigen Stapel enthält. 2 Figure 1 illustrates one embodiment of an interconnect architecture that includes a layered stack.
  • 3 veranschaulicht eine Ausführungsform einer Anfrage oder eines Pakets, die bzw. das in einer Zwischenverbindungsarchitektur zu generieren ist. 3 Figure 12 illustrates one embodiment of a request or packet to be generated in an interconnect architecture.
  • 4 veranschaulicht eine Ausführungsform eines Sender- und Empfängerpaares für eine Zwischenverbindungsarchitektur. 4 Figure 11 illustrates one embodiment of a transmitter and receiver pair for an interconnect architecture.
  • 5A veranschaulicht ein vereinfachtes Blockdiagramm einer Ausführungsform eines beispielhaften Knotens. 5A Figure 12 illustrates a simplified block diagram of one embodiment of an example node.
  • 5B veranschaulicht ein vereinfachtes Blockdiagramm einer Ausführungsform eines beispielhaften Systems, das mehrere Knoten enthält. 5B Figure 12 illustrates a simplified block diagram of one embodiment of an example system that includes multiple nodes.
  • 6 ist eine Darstellung von Daten, die gemäß einer beispielhaften, gemeinsam benutzten Speicherverbindung übertragen werden. 6 12 is an illustration of data being transferred according to an example shared memory connection.
  • 7A ist eine Darstellung von Daten, die gemäß einer anderen beispielhaften, gemeinsam benutzten Speicherverbindung übertragen werden. 7A 12 is an illustration of data being transferred according to another example shared memory connection.
  • 7B ist eine Darstellung eines beispielhaften Beginns eines Daten-Framing-Tokens. 7B Figure 12 is an illustration of an example beginning of a data framing token.
  • 8 ist eine Darstellung von Daten, die gemäß einer anderen beispielhaften, gemeinsam benutzten Speicherverbindung übertragen werden. 8th 12 is an illustration of data being transferred according to another example shared memory connection.
  • 9A-9D sind Ablaufdiagramme, die beispielhafte Techniken zur Speicherzugangsnachrichtenübermittlung zeigen. 9A-9D 12 are flow charts showing example techniques for memory access messaging.
  • 10 veranschaulicht eine Ausführungsform eines Blockdiagramms für ein Rechnersystem, das einen Mehrfachkern-Prozessor enthält. 10 FIG. 11 illustrates one embodiment of a block diagram for a computing system that includes a multi-core processor.
  • 11 veranschaulicht eine andere Ausführungsform eines Blockdiagramms für ein Rechnersystem, das einen Mehrfachkern-Prozessor enthält. 11 Figure 11 illustrates another embodiment of a block diagram for a computing system that includes a multi-core processor.
  • 12 veranschaulicht eine Ausführungsform eines Blockdiagramms für einen Prozessor. 12 Figure 1 illustrates one embodiment of a block diagram for a processor.
  • 13 veranschaulicht eine andere Ausführungsform eines Blockdiagramms für ein Rechnersystem, das einen Prozessor enthält. 13 12 illustrates another embodiment of a block diagram for a computer system that includes a processor.
  • 14 veranschaulicht eine Ausführungsform eines Blocks für ein Rechnersystem, das mehrfache Prozessoren enthält. 14 Figure 1 illustrates one embodiment of a block for a computing system that includes multiple processors.
  • 15 veranschaulicht ein beispielhaftes System, das als System-on-Chip (SoC) implementiert ist. 15 illustrates an example system implemented as a system-on-chip (SoC).

Gleiche Bezugszahlen und -zeichen in den verschiedenen Zeichnungen geben gleiche Elemente an.Like reference numerals and symbols in the different drawings indicate like elements.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

In der folgenden Beschreibung sind für ein umfassendes Verständnis der vorliegenden Erfindung zahlreiche spezielle Einzelheiten angegeben, wie beispielsweise spezielle Arten von Prozessoren und Systemkonfigurationen, spezielle Hardware-Strukturen, spezielle architektonische und mikroarchitektonische Einzelheiten, spezielle Registerkonfigurationen, spezielle Befehlsarten, spezielle Systemkomponenten, spezielle Maße/Höhen, spezielle Prozessor-Pipeline-Stufen und spezieller Betrieb usw. Für den Fachmann auf dem Gebiet ist jedoch klar, dass diese speziellen Einzelheiten in der Ausführung der vorliegenden Erfindung nicht verwendet werden müssen. In anderen Beispielen sind allgemein bekannte Komponenten oder Verfahren, wie spezielle und alternative Prozessorarchitekturen, spezielle Logikschaltungen/ein spezieller Code für beschriebene Algorithmen, ein spezieller Firmware-Code, ein spezieller Zwischenverbindungsbetrieb, spezielle Logikkonfigurationen, spezielle Herstellungstechniken und -materialien, spezielle Compiler-Implementierungen, ein spezieller Ausdruck von Algorithmen in einem Code, spezielle Abschalt- und Steuerungstechniken/Logik und andere spezielle betriebliche Einzelheiten eines Computersystems nicht ausführlich beschrieben, um die vorliegende Erfindung nicht unnötig zu verschleiern.In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention, such as specific types of processors and system configurations, specific hardware structures, specific architectural and microarchitectural details, specific register configurations, specific instruction types, specific system components, specific dimensions/heights , specific processor pipeline stages and operation, etc. However, it will be apparent to those skilled in the art that these specific details need not be used in the practice of the present invention. In other examples, well-known components or methods, such as specific and alternative processor architectures, specific logic circuits/code for described algorithms, specific firmware code, specific interconnect operations, specific logic configurations, specific manufacturing techniques and materials, specific compiler implementations, specific expression of algorithms in code, specific shutdown and control techniques/logic, and other specific operational details of a computer system have not been described in detail in order not to unnecessarily obscure the present invention.

Obwohl die folgenden Ausführungsformen in Bezug auf Energieeinsparung und Energieeffizienz in speziellen integrierten Schaltungen, wie Rechnerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen bei anderen Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können bei anderen Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch von einer besseren Energieeffizienz und Energieeinsparung profitieren können. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ begrenzt. Und können auch in anderen Vorrichtungen, wie in der Hand gehaltenen Vorrichtungen, Tablets, anderen dünnen Notebooks, System-on-Chip- (SOC) Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für in der Hand gehaltene Vorrichtungen enthalten Mobiltelefone, Internet-Protokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und in der Hand gehaltene PCs. Eingebettete Anwendungen enthalten typischerweise eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), ein System auf einem Chip, Netzwerkcomputer (NetPC), Set-Top-Boxes, Netzwerk-Hubs, Weitverkehrsnetz- (WAN) Schalter oder jedes andere System, das die in der Folge gelehrten Funktionen und Operationen ausführen kann. Ferner sind die hier beschriebenen Apparate, Verfahren und Systeme nicht auf physische Rechnervorrichtungen begrenzt, sondern können sich auch auf Software-Optimierungen zur Energieeinsparung und -effizienz beziehen. Wie in der folgenden Beschreibung sofort offensichtlich wird, sind die Ausführungsformen von Verfahren, Apparaten und Systemen (egal ob unter Bezugnahme auf Hardware, Firmware, Software oder eine Kombination davon) für eine Zukunft ‘grüner Technologie', ausgewogen mit Leistungsüberlegungen, wesentlich.Although the following embodiments may be described in terms of power conservation and energy efficiency in specific integrated circuits, such as computing platforms or microprocessors, other embodiments are applicable to other types of integrated circuits and logic devices. Similar techniques and teachings of embodiments described herein may be applied to other types of circuits or semiconductor devices that may also benefit from better power efficiency and power conservation. For example, the disclosed embodiments are not limited to desktop computer systems or Ultrabooks™. And can also be used in other devices such as handheld devices, tablets, other thin notebooks, system-on-chip (SOC) devices, and embedded applications. Some examples of handheld devices include cellular phones, Internet protocol devices, digital cameras, personal digital assistants (PDAs), and handheld PCs. Embedded applications typically contain a microcontroller, digital signal processor (DSP), system on a chip, network computer (NetPC), set-top boxes, network hubs, wide area network (WAN) switches, or any other system that requires the following functions and operations taught. Furthermore, the apparatus, methods, and systems described herein are not limited to physical computing devices, but may also relate to software optimizations for energy conservation and efficiency. As will be immediately apparent in the following description, the embodiments of methods, apparatus and systems (whether in terms of hardware, firmware, software or a combination thereof) are essential to a 'green technology' future balanced with performance considerations.

Mit der Weiterentwicklung von Rechnersystemen werden die darin enthaltenen Komponenten komplexer. Infolgedessen nimmt auch die Komplexität der Zwischenverbindungsarchitektur zur Kopplung und Kommunikation zwischen den Komponenten zu um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt sind. Ferner verlangen unterschiedliche Marktsegmente unterschiedliche Aspekte von Zwischenverbindungsarchitekturen zur Erfüllung der Marktbedürfnisse. Zum Beispiel erfordern Server eine höhere Leistung, während das mobile Ökosystem manchmal aus Gründen der Leistungseinsparung bei der Gesamtleistung Abstriche hinnehmen kann. Dennoch ist es eine singuläre Aufgabe der meisten Matrizen, eine höchstmögliche Leistung mit einer maximalen Leistungseinsparung zu bieten. In der Folge werden zahlreiche Zwischenverbindungen besprochen, die möglicherweise von Aspekten der hier beschriebenen Erfindung profitieren würden.With the further development of computer systems, the components they contain are becoming more complex. As a result, the complexity of the interconnect architecture for coupling and communication between the components to ensure that bandwidth requirements are met for optimal component operation also increases. Furthermore, different market segments require different aspects of interconnect architectures to meet market needs. For example, servers require higher performance, while the mobile ecosystem can sometimes trade off overall performance for the sake of power savings. Nevertheless, it is a singular task of most matrices to offer the highest possible performance with a maximum power saving. Various intermediates are discussed below that would potentially benefit from aspects of the invention described herein.

Eine Zwischenverbindungsmatrixarchitektur enthält die Peripheral Component Interconnect (PCI) Express (PCIe) Architektur. Ein primäres Ziel von PCIe besteht darin, einen Betrieb zwischen Komponenten und Vorrichtungen von verschiedenen Verkäufern in einer offenen Architektur zu ermöglichen, wobei mehrfache Marktsegmente überspannt werden; Clients (Desktops und mobile), Server (Standard und firmeneigene) und eingebettete und Kommunikationsvorrichtungen. PCI Express ist eine Hochleistungs-, Allzweck-, I/O-Zwischenverbindung, die für eine breite Palette zukünftiger Rechner- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie sein Gebrauchsmodell, seine Last-Speicherarchitektur und seine Software-Schnittstellen, wurden durch seine Überarbeitungen beibehalten, während vorherige parallele Bus-Implementierungen durch eine hoch skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die jüngeren Versionen von PCI Express nutzen den Vorteil von Fortschritten in Punkt-zu-Punkt-Zwischenverbindungen, schalterbasierter Technologie und paketiertem Protokoll, um neue Leistungsebenen und Merkmale bereitstellen. Leistungsmanagement, Dienstgüte (Quality Of Service, QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlermanagement zählen zu den weiterentwickelten Merkmalen, die von PCI Express unterstützt werden.An interconnect matrix architecture includes the Peripheral Component Interconnect (PCI) Express (PCIe) architecture. A primary goal of PCIe is to allow operation between components and devices from different vendors in an open architecture, spanning multiple market segments; Clients (desktops and mobile), servers (standard and proprietary) and embedded and communication devices. PCI Express is a high-performance, general-purpose, I/O interconnect defined for a wide range of future computing and communications platforms. Some PCI attributes, such as its utility model, load-memory architecture, and software interfaces, were retained through its revisions, while previous parallel bus implementations were replaced with a highly scalable, fully serial interface. Recent versions of PCI Express take advantage of advances in point-to-point interconnects, switch-based technology, and packetized protocol to provide new levels of performance and features. Performance management, quality of service (QoS), hot-plug/hot-swap support, data integrity and fault management are among the advanced features supported by PCI Express.

Unter Bezugnahme auf 1 ist eine Ausführungsform einer Matrix dargestellt, die aus Punkt-zu-Punkt-Verbindungen besteht, die einen Satz von Komponenten verbinden. System 100 enthält einen Prozessor 105 und einen Systemspeicher 110, der an ein Controller-Hub 115 gekoppelt ist. Der Prozessor 105 enthält jedes Verarbeitungselement, wie einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder anderen Prozessor. Der Prozessor 105 ist an den Controller-Hub 115 durch einen Front-Side Bus (FSB) 106. In einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Zwischenverbindung, wie unten beschrieben. In einer anderen Ausführungsform enthält die Verbindung 106 eine serielle, differentielle Zwischenverbindungsarchitektur, die mit verschiedenen Zwischenverbindungsstandards übereinstimmt.With reference to 1 Figure 1 shows an embodiment of a matrix composed of point-to-point links connecting a set of components. System 100 includes a processor 105 and system memory 110 coupled to a controller hub 115 . Processor 105 includes any processing element such as a microprocessor, host processor, embedded processor, co-processor, or other processor. The processor 105 interfaces to the controller hub 115 through a front-side bus (FSB) 106. In one embodiment, the FSB 106 is a point-to-point serial interconnect, as described below. In another embodiment, link 106 includes a serial, differential interconnect architecture that conforms to various interconnect standards.

Der Systemspeicher 110 enthält jede Speichervorrichtung, wie Direktzugriffsspeicher (RAM), nicht flüchtigen (NV) Speicher oder einen anderen Speicher, der für Vorrichtungen im System 100 zugänglich ist. Der Systemspeicher 110 ist durch eine Speicherschnittstelle 116 an den Controller-Hub 115 gekoppelt. Beispiele einer Speicherschnittstelle enthalten eine Doppeldatenrate- (DDR) Speicherschnittstelle, eine Dualkanal-DDR-Speicherschnittstelle und eine dynamische RAM (DRAM) Speicherschnittstelle.System memory 110 includes any storage device, such as random access memory (RAM), non-volatile (NV) memory, or other memory accessible to devices in system 100 . The system memory 110 is coupled to the controller hub 115 through a memory interface 116 . Examples of a memory interface include a double data rate (DDR) memory interface, a dual channel DDR memory interface, and a dynamic RAM (DRAM) memory interface.

In einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, Root-Komplex oder ein Root-Controller in einer Peripheral Component Interconnect Express (PCIe oder PCIE) Zwischenverbindungshierarchie. Beispiele für den Controller-Hub 115 enthalten einen Chipsatz, einen Memory Controller-Hub (MCH), eine Northbridge, einen Interconnect Controller-Hub (ICH), eine Southbridge und einen Root Controller/Hub. Oftmals bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Controller-Hubs, d.h., einen Memory Controller-Hub (MCH), der an einen Interconnect Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass derzeitige Systeme häufig den MCH mit dem Prozessor 105 integriert enthalten, während der Controller 115 mit I/O Vorrichtungen auf gleiche Weise, wie unten beschrieben, kommunizieren kann. In einigen Ausführungsformen wird optional ein Peer-zu-Peer Routing durch den Root Komplex 115 unterstützt.In one embodiment, controller hub 115 is a root hub, root complex, or root controller in a Peripheral Component Interconnect Express (PCIe or PCIE) interconnect hierarchy. Examples of the controller hub 115 include a chipset, a memory controller hub (MCH), a northbridge, an interconnect controller hub (ICH), a southbridge, and a root controller/hub. Often the term chipset refers to two physically separate controller hubs, i.e., a memory controller hub (MCH) coupled to an interconnect controller hub (ICH). Note that current systems often include the MCH integrated with the processor 105, while the controller 115 can communicate with I/O devices in the same manner as described below. In some embodiments, peer-to-peer routing through root complex 115 is optionally supported.

Hier ist der Controller-Hub 115 durch eine serielle Verbindung 119 an einen Schalter/eine Brücke 120 gekoppelt. Eingangs-/Ausgangsmodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, enthalten/implementieren einen schichtenförmigen Protokollstapel zum Vorsehen einer Kommunikation zwischen dem Controller-Hub 115 und dem Schalter 120. In einer Ausführungsform können mehrfache Vorrichtungen an den Schalter 120 gekoppelt werden.Here the controller hub 115 is coupled to a switch/bridge 120 by a serial link 119 . Input/output modules 117 and 121, which may also be referred to as interfaces/ports 117 and 121, contain/implement a layered protocol stack for providing communication between controller hub 115 and switch 120. In one embodiment, multiple devices can connect to the switch 120 are coupled.

Der Schalter/die Brücke 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d.h., eine Hierarchie nach oben hin zu einem Root-Komplex, zum Controller-Hub 115 und stromabwärts, d.h., eine Hierarchie nach unten, weg vom Root-Komplex, vom Prozessor 105 oder Systemspeicher 110 zur Vorrichtung 125. Der Schalter 120 wird in einer Ausführungsform als eine logische Zusammenstellung mehrfacher virtueller PCI-zu-PCI Überbrückungsvorrichtungen bezeichnet. Die Vorrichtung 125 enthält jede interne oder externe Vorrichtung oder Komponente, die an ein elektrisches System gekoppelt werden soll, wie eine I/O-Vorrichtung, eine Network Interface Controller (NIC), eine Erweiterungskarte, einen Audioprozessor, einen Netzwerkprozessor, ein Festplattenlaufwerk, eine Speichervorrichtung, einen CD/DVD ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine Universal Serial Bus (USB) Vorrichtung, einen Scanner und andere Eingangs-/Ausgangsvorrichtungen. Häufig wird im PCIe-Jargon eine solche Vorrichtung als Endpunkt bezeichnet. Obwohl nicht im Speziellen dargestellt, kann die Vorrichtung 125 eine Brücke von PCIe zu PCI/PCI-X enthalten, um althergebrachte oder eine andere Version von PCI Vorrichtungen zu unterstützen. Endpunktvorrichtungen in PCIe sind häufig als althergebrachte, PCIe, oder Root-Komplex integrierte Endpunkte klassifiziert.The switch/bridge 120 routes packets/messages from the device 125 upstream, ie up one hierarchy towards a root complex, to the controller hub 115 and downstream, ie down one hierarchy away from the root complex, from processor 105 or system memory 110 to device 125. Switch 120 is referred to in one embodiment as a logical assembly of multiple virtual PCI-to-PCI bridging devices. The device 125 includes any internal or external device or component that is to be coupled to an electrical system, such as an I / O device, a network interface controller (NIC), an expansion card, an audio processor, a network processor, a hard disk drive, a Storage device, CD/DVD ROM, monitor, printer, mouse, keyboard, router, portable storage device, Firewire device, Universal Serial Bus (USB) device, scanner and other input/output devices. Such a device is often referred to as an endpoint in PCIe jargon. Although not specifically shown, device 125 may include a PCIe to PCI/PCI-X bridge to support legacy or other version PCI devices. endpoint devices in PCIe are often classified as legacy, PCIe, or root complex integrated endpoints.

Es ist auch ein Grafikbeschleuniger 130 durch die serielle Verbindung 132 an den Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 130 an einen MCH gekoppelt, der an einen ICH gekoppelt ist. Der Schalter 120, und somit die I/O-Vorrichtung 125, wird dann an den ICH gekoppelt. I/O-Module 131 und 118 sollen auch einen schichtenförmigen Protokollstapel für eine Kommunikation zwischen Grafikbeschleuniger 130 und Controller-Hub 115 implementieren. Ähnlich wie bei der vorangehenden Besprechung des MCH können eine Grafiksteuerung oder der Grafikbeschleuniger 130 selbst im Prozessor 105 integriert sein.A graphics accelerator 130 is also coupled to controller hub 115 through serial link 132 . In one embodiment, graphics accelerator 130 is coupled to an MCH that is coupled to an ICH. The switch 120, and thus the I/O device 125, is then coupled to the ICH. I/O modules 131 and 118 are also intended to implement a layered protocol stack for graphics accelerator 130 and controller hub 115 communication. Similar to the previous discussion of the MCH, a graphics controller or graphics accelerator 130 may be integrated into the processor 105 itself.

In Hinblick nun auf 2 ist eine Ausführungsform eines schichtenförmigen Protokollstapels dargestellt. Der schichtenförmige Protokollstapel 200 enthält jede Form eines schichtenförmigen Kommunikationsstapels, wie einen Quick Path Interconnect (QPI) Stapel, einen PCie-Stapel, einen Hochleistungsrechner- Zwischenverbindungsstapel der nächsten Generation oder einen anderen schichtenförmigen Stapel. Obwohl sich die unmittelbare folgende Besprechung unter Bezugnahme auf 1-4 auf einen PCIe-Stapel bezieht, können dieselben Konzepte bei anderen Zwischenverbindungsstapeln angewendet werden. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der eine Transaktionsschicht 205, eine Verbindungsschicht 210 und eine physische Schicht 220 enthält. Eine Schnittstelle, wie Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, das bzw. die einen Protokollstapel implementiert/enthält.With regard now to 2 An embodiment of a layered protocol stack is shown. Layered protocol stack 200 includes any form of layered communications stack, such as a Quick Path Interconnect (QPI) stack, a PCIe stack, a next generation high performance computing interconnect stack, or other layered stack. Although the discussion immediately following may refer to 1-4 refers to a PCIe stack, the same concepts can be applied to other interconnect stacks. In one embodiment, protocol stack 200 is a PCIe protocol stack that includes transaction layer 205 , link layer 210 , and physical layer 220 . An interface, such as interfaces 117, 118, 121, 122, 126, and 131 in 1 , can be represented as a communication protocol stack 200 . The communications protocol stack representation may also be referred to as a module or interface that implements/contains a protocol stack.

PCI Express verwendet Pakete zur Kommunikation von Informationen zwischen Komponenten. In der Transaktionsschicht 205 und Datenverbindungsschicht 210 werden Pakete gebildet, um die Informationen von der sendenden Komponente zur empfangenden Komponente zu befördern. Während die gesendeten Pakete durch die anderen Schichten gehen, werden sie mit zusätzlichen Informationen erweitert, die zum Handhaben von Pakete in diesen Schichten erforderlich sind. An der Empfangsseite läuft der umgekehrte Prozess und die Pakete werden aus ihrer Darstellung in der physischen Schicht 220 in die Darstellung der Datenverbindungsschicht 210 und letztendlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann.PCI Express uses packets to communicate information between components. In the transaction layer 205 and data link layer 210, packets are formed to carry the information from the sending component to the receiving component. As the packets sent pass through the other layers, they are augmented with additional information needed to handle packets in those layers. At the receiving end, the reverse process occurs and the packets are converted from their physical layer 220 representation to the data link layer 210 representation and ultimately (for transaction layer packets) to the form that can be processed by the transaction layer 205 of the receiving device.

Transaktionsschichttransaction layer

In einer Ausführungsform dient die Transaktionsschicht 205 zum Vorsehen einer Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur, wie der Datenverbindungsschicht 210 und der physischen Schicht 220. In dieser Hinsicht ist eine primäre Zuständigkeit der Transaktionsschicht 205 die Zusammenstellung und Zerlegung von Paketen (d.h., Transaktionsschichtpaketen oder TLPs). Die Translationsschicht 205 verwaltet typischerweise die Credit-Based Flow Control für TLPs. PCIe implementiert geteilte Transaktionen, d.h., Transaktionen, bei welchen Anfrage und Antwort zeitlich getrennt sind, wodurch eine Verbindung anderen Verkehr befördern kann, während die Zielvorrichtung Daten für die Antwort sammelt.In one embodiment, the transaction layer 205 serves to provide an interface between a processing core of a device and the interconnect architecture, such as the data link layer 210 and the physical layer 220. In this regard, a primary responsibility of the transaction layer 205 is the assembly and disassembly of packets (i.e., transaction layer packets or TLP's). The translation layer 205 typically manages the credit-based flow control for TLPs. PCIe implements split transactions, i.e., transactions in which request and response are separated in time, allowing one connection to carry other traffic while the target device collects data for the response.

Zusätzlich verwendet die PCIe die Credit-Based Flow Control. In diesem Schema kündigt eine Vorrichtung eine anfängliche Menge an Credits für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Eine externe Vorrichtung am gegenüberliegenden Ende der Verbindung, wie der Controller-Hub 115 in 1, zählt die Anzahl von Credits, die von jedem TLP verbraucht wird. Eine Transaktion kann gesendet werden, wenn die Transaktion einen Credit-Grenzwert nicht übersteigt. Bei Empfang einer Antwort wird die Credit-Menge wiederhergestellt. Ein Vorteil eines Credit-Schemas ist, dass die Latenz der Credit-Rückgabe die Leistung nicht beeinflusst, vorausgesetzt, der Credit-Grenzwert wird nicht erreicht.In addition, the PCIe uses the Credit-Based Flow Control. In this scheme, a device advertises an initial amount of credits to each of the receive buffers in the transaction layer 205. An external device at the opposite end of the connection, such as the controller hub 115 in 1 , counts the number of credits consumed by each TLP. A transaction can be sent if the transaction does not exceed a credit limit. Upon receipt of a response, the credit amount is restored. An advantage of a credit scheme is that the latency of credit return does not affect performance provided the credit limit is not reached.

In einer Ausführungsform enthalten vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Speicheradressenraum, einen Eingangs-/Ausgangsadressenraum und einen Nachrichtadressenraum. Speicherraumtransaktionen enthalten eine oder mehrere Leseanfragen und Schreibanfragen zum Übertragen von Daten zu/von einer speicherabgebildeten Stelle. In einer Ausführungsform sind Speicherraumtransaktionen imstande, zwei verschiedene Adressenformate zu verwenden, z.B. ein kurzes Adressenformat, wie eine 32-Bit-Adresse, oder ein langes Adressenformat, wie eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden für einen Zugriff auf den Konfigurationsraum der PCIe-Vorrichtungen verwendet. Transaktionen zum Konfigurationsraum enthalten Leseanfragen und Schreibanfragen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind zum Unterstützen einer Kommunikation innerhalb des Bandes zwischen PCIe-Agenten definiert.In one embodiment, four transaction address spaces include a configuration address space, a memory address space, an input/output address space, and a message address space. Memory space transactions include one or more read requests and write requests to transfer data to/from a memory mapped location. In one embodiment, memory space transactions are capable of using two different address formats, e.g., a short address format, such as a 32-bit address, or a long address format, such as a 64-bit address. Configuration space transactions are used to access the configuration space of PCIe devices. Transactions to the configuration space include read requests and write requests. Message space transactions (or simply messages) are defined to support in-band communication between PCIe agents.

Daher stellt in einer Ausführungsform die Transaktionsschicht 205 die Paketkopfzeile/Nutzlast 206 zusammen. Das Format für aktuelle Paketkopfzeilen/Nutzlasten findet sich in der PCIe-Spezifikation auf der PCIe-Spezifikationen-Website.Therefore, in one embodiment, transaction layer 205 assembles packet header/payload 206 . The format for the current packet header rows/payloads can be found in the PCIe specification at the PCIe specifications website.

Unter Bezugnahme auf 3 ist kurz eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zur Beförderung von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifizierung von Transaktionen in einem System. Andere mögliche Anwendungen enthalten eine Verfolgung von Modifizierungen einer vorgegebenen Transaktionsreihung und eine Zuordnung einer Transaktion mit Kanälen.With reference to 3 1 briefly illustrates one embodiment of a PCIe transaction descriptor. In one embodiment, transaction descriptor 300 is a mechanism for conveying transaction information. In this regard, transaction descriptor 300 assists in identifying transactions in a system. Other possible applications include tracking modifications to a given order of transactions and associating a transaction with channels.

Der Transaktionsdeskriptor 300 enthält ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306. In dem dargestellten Beispiel ist das globale Kennungsfeld 302 mit einem lokalen Transaktionskennungsfeld 308 und Quellenkennungsfeld 310 dargestellt. In einer Ausführungsform ist die globale Transaktionskennung 302 für alle ausstehenden Anfragen einzigartig.The transaction descriptor 300 includes a global identifier field 302, an attribute field 304, and a channel identifier field 306. In the example shown, the global identifier field 302 is shown with a local transaction identifier field 308 and source identifier field 310. FIG. In one embodiment, the global transaction identifier 302 is unique for all outstanding requests.

Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein Feld, das von einem anfragenden Agenten generiert wird, und ist für alle ausstehenden Anfragen einzigartig, die für diesen anfragenden Agenten vollendet werden müssen. Ferner identifiziert in diesem Beispiel die Quellenkennung 310 den anfragenden Agenten einzigartig innerhalb einer PCIe-Hierarchie. Daher sieht das lokale Transaktionskennungs- 308 Feld gemeinsam mit der Quellen-ID 310 eine globale Identifizierung einer Transaktion innerhalb einer Hierarchiedomäne vor.According to one implementation, the local transaction identifier field 308 is a field generated by a requesting agent and is unique to all outstanding requests that need to be completed for that requesting agent. Also in this example, the source identifier 310 uniquely identifies the requesting agent within a PCIe hierarchy. Therefore, the local transaction identifier 308 field, together with the source ID 310, provides a global identification of a transaction within a hierarchy domain.

Das Attributfeld 304 spezifiziert Eigenschaften und Verhältnisse der Transaktion. In dieser Hinsicht wird das Attributfeld 304 möglicherweise zum Vorsehen zusätzlicher Informationen verwendet, die eine Modifizierung der vorgegebenen Handhabung von Transaktionen ermöglichen. In einer Ausführungsform enthält das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Reihungsfeld 316, und ein No-Snoop-Feld 318. Hier kann ein Prioritätsteilfeld 312 von einem Initiator modifiziert werden, um der Transaktion eine Priorität zu verleihen. Das reservierte Attributfeld 314 bleibt für die Zukunft oder für eine vom Verkäufer definierte Nutzung reserviert. Mögliche Gebrauchsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können mit Hilfe des reservierten Attributfeldes implementiert werden.Attribute field 304 specifies characteristics and relationships of the transaction. In this regard, attribute field 304 may be used to provide additional information that allows modification of the default handling of transactions. In one embodiment, attribute field 304 includes a priority field 312, a reserved field 314, an enqueue field 316, and a no-snoop field 318. Here, a priority subfield 312 may be modified by an initiator to prioritize the transaction. The reserved attribute field 314 remains reserved for future or seller-defined use. Possible usage models using priority or security attributes can be implemented using the reserved attribute field.

In diesem Beispiel wird ein Reihungsattributfeld 316 zum Zuleiten optionaler Informationen verwenden, die die Art der Reihung angeben, die vorgegebene Reihungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung gibt ein Reihungsattribut von „0“ an, dass vorgegebene Reihungsregeln gelten, wobei ein Reihungsattribut von „1“ eine entspannte Reihung angibt, wobei Schreibvorgänge Schreibvorgänge in derselben Richtung durchlaufen können und Lesevervollständigungen Schreibvorgänge in derselben Richtung durchlaufen können. Das Snoop-Attributfeld 318 wird zur Bestimmung verwendet, ob Transaktionen ausspioniert („snooped“) werden. Wie dargestellt, identifiziert das Kanal-ID-Feld 306 einen Kanal, dem eine Transaktion zugeordnet ist.In this example, a ranking attribute field 316 is used to pass optional information specifying the type of ranking that may modify default ranking rules. According to an example implementation, a sequencing attribute of "0" indicates that predetermined sequencing rules apply, with a sequencing attribute of "1" indicating relaxed sequencing, where writes can traverse writes in the same direction and read completions can traverse writes in the same direction. The snoop attribute field 318 is used to determine whether transactions are snooped. As illustrated, the channel ID field 306 identifies a channel with which a transaction is associated.

Verbindungsschichtconnection layer

Die Verbindungsschicht 210, auch als Datenverbindungsschicht 210 bezeichnet, dient als Zwischenstufe zwischen der Transaktionsschicht 205 und der physischen Schicht 220. In einer Ausführungsform ist eine Zuständigkeit der Datenverbindungsschicht 210 ein Vorsehen eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindung. Eine Seite der Datenverbindungsschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 zusammengestellt wurden, verleiht eine Paketsequenzkennung 211, d.h., eine Identifizierungsnummer oder Paketnummer, berechnet einen Fehlererfassungscode, d.h. CRC 212, und wendet ihn an, und unterbreitet die modifizierten TLPs der physischen Schicht 220 zur Übertragung über eine physische zu einer externen Vorrichtung.Link layer 210, also referred to as data link layer 210, serves as an intermediary between transaction layer 205 and physical layer 220. In one embodiment, a responsibility of data link layer 210 is to provide a reliable mechanism for exchanging transaction layer packets (TLPs) between two components of a link. One side of the data link layer 210 accepts TLPs assembled by the transaction layer 205, gives a packet sequence identifier 211, i.e., an identification number or packet number, calculates and applies an error detection code, i.e. CRC 212, and submits the modified TLPs to the physical layer 220 for transmission via a physical to an external device.

Physische Schichtphysical layer

In einer Ausführungsform enthält die physische Schicht 220 einen logischen Teilblock 221 und einen elektrischen Teilblock 222 zum physischen Senden eines Pakets zu einer externen Vorrichtung. Hier ist der logische Teilblock 221 für die „digitalen“ Funktionen der physischen Schicht 221 zuständig. In dieser Hinsicht enthält der logische Teilblock einen Sendeabschnitt zur Vorbereitung ausgehender Informationen, die vom physischen Teilblock 222 gesendet werden, und einen Empfangsabschnitt zum Identifizieren und Vorbereiten empfangener Informationen, bevor diese zur Verbindungsschicht 210 geleitet werden.In one embodiment, the physical layer 220 includes a logical sub-block 221 and an electrical sub-block 222 for physically sending a packet to an external device. Here the logical sub-block 221 is responsible for the “digital” functions of the physical layer 221. In this regard, the logical sub-block includes a transmit portion for preparing outbound information to be transmitted by physical sub-block 222 and a receive portion for identifying and preparing received information before passing it to link layer 210 .

Der physische Block 222 enthält einen Sender und einen Empfänger. Dem Sender werden vom logischen Teilblock 221 Symbole zugleitet, die der Sender serialisiert und zu einer externen Vorrichtung sendet. Dem Empfänger werden die serialisierten Symbole von einer externen Vorrichtung zugeleitet, und er wandelt die empfangenen Signale in einen Bit-Strom um. Der Bit-Strom wird entserialisiert und zum logischen Teilblock 221 geleitet. In einer Ausführungsform wird ein 8b/10b Sendungscode verwendet, wobei zehn-Bit Symbole gesendet/empfangen werden. Hier werden Spezialsymbole verwendet, um ein Paket mit Frames 223 zu versehen. Zusätzlich sieht in einem Beispiel der Empfänger auch einen Symboltakt vor, der aus dem eingehenden seriellen Strom gewonnen wird.The physical block 222 contains a transmitter and a receiver. The sender is supplied symbols from logic sub-block 221, which the sender serializes and sends to an external device. The receiver receives the serialized symbols from an external device and converts the received signals into a bit stream. The bit stream is deserialized and passed to logic sub-block 221. In one embodiment, an 8b/10b broadcast code is used, with ten-bit symbols being transmitted/received. Special symbols are used here to add frames 223 to a packet. Additionally, in one example, the receiver also provides a symbol clock obtained from the incoming serial stream.

Wie oben angegeben, obwohl die Transaktionsschicht 205, die Verbindungsschicht 210 und die physische Schicht 220 in Bezug auf eine spezielle Ausführungsform eines PCIe-Protokollstapels besprochen werden, ist ein schichtenförmiger Protokollstapel nicht derart begrenzt. Tatsächlich kann jedes schichtenförmige Protokoll enthalten/implementiert sein. Als ein Beispiel enthält ein Port/eine Schnittstelle, dargestellt als ein schichtenförmiges Protokoll: (1) eine erste Schicht zum Zusammenstellen von Paketen, d.h., eine Transaktionsschicht; eine zweite Schicht zur Reihung von Paketen, d.h., eine Verbindungsschicht; und eine dritte Schicht zum Senden der Pakete, d.h., eine physische Schicht. Als ein spezielles Beispiel wird ein schichtenförmiges Protokoll einer allgemeinen Standardschnittstelle (Common Standard Interface, CSI) verwendet.As noted above, although transaction layer 205, link layer 210, and physical layer 220 are discussed in terms of a specific embodiment of a PCIe protocol stack, a layered protocol stack is not so limited. In fact, any layered protocol can be included/implemented. As an example, a port/interface represented as a layered protocol includes: (1) a first layer for assembling packets, i.e., a transaction layer; a second layer for queuing packets, i.e., a link layer; and a third layer for sending the packets, i.e. a physical layer. As a specific example, a layered Common Standard Interface (CSI) protocol is used.

Unter Bezugnahme im Anschluss auf 4 ist eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Matrix dargestellt. Obwohl eine Ausführungsform einer seriellen Punkt-zu-Punkt- PCIe-Verbindung dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht derart begrenzt, da sie jeden Sendepfad zum Senden serieller Daten enthält. In der dargestellten Ausführungsform enthält eine grundlegende PCIe-Verbindung zwei unterschiedliche angesteuerte Niederspannungssignalpaare: ein Sendungspaar 406/411 und ein Empfangspaar 412/407. Daher enthält die Vorrichtung 405 eine Sendelogik 406 zum Senden von Daten zur Vorrichtung 410 und eine Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410. Mit anderen Worten, in einer PCIe-Verbindung sind zwei Sendepfade, d.h., Pfade 416 und 417, und zwei Empfangspfade, d.h., Pfade 418 und 419, enthalten.With reference to below 4 Figure 1 shows one embodiment of a serial point-to-point PCIe matrix. Although one embodiment of a PCIe point-to-point serial link is illustrated, a point-to-point serial link is not so limited as it includes any transmit path for sending serial data. In the illustrated embodiment, a basic PCIe link includes two distinct low voltage driven signal pairs: a transmit pair 406/411 and a receive pair 412/407. Therefore, device 405 includes transmit logic 406 for transmitting data to device 410 and receive logic 407 for receiving data from device 410. In other words, in a PCIe connection there are two transmit paths, ie, paths 416 and 417, and two Receive paths, ie, paths 418 and 419 included.

Ein Sendepfad bezieht sich auf jeden Pfad zum Senden von Daten, wie eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Anbindung zwischen zwei Vorrichtungen, wie Vorrichtung 405 und Vorrichtung 410, wird als Verbindung bezeichnet, wie Verbindung 415. Eine Verbindung kann eine Spur unterstützen - wobei jede Spur einen Satz unterschiedlicher Signalpaare darstellt (ein Paar zum Senden, ein Paar zum Empfangen). Zur Skalierung der Bandbreite kann eine Verbindung mehrfache Spuren zusammenfassen, die mit xN bezeichnet sind, wobei N jede unterstützte Verbindungsbreite, wie 1, 2, 4, 8, 12, 16, 32, 64 oder breiter, ist.A transmission path refers to any path for sending data, such as a transmission line, copper line, optical line, wireless communication channel, infrared communication link, or other communication path. A link between two devices, such as device 405 and device 410, is referred to as a link, such as link 415. A link may support one lane - each lane representing a set of distinct signal pairs (one pair to transmit, one pair to receive). To scale bandwidth, a link may aggregate multiple lanes, denoted by xN, where N is any supported link width, such as 1, 2, 4, 8, 12, 16, 32, 64, or wider.

Ein unterschiedliches Paar bezieht sich auf zwei Sendepfade, wie Leitungen 416 und 417, zum Senden unterschiedlicher Signale. Als ein Beispiel, wenn die Leitung 416 von einem Niederspannungspegel zu einem Hochspannungspegel wechselt, d.h., eine ansteigende Flanke, steuert die Leitung 417 von einem hohen Logikpegel zu einem niederen Logikpegel, d.h., eine abfallende Flanke. Unterschiedliche Signale zeigen möglicherweise bessere elektrische Eigenschaften, wie eine bessere Signalintegrität, d.h., Kreuzkopplung, Spannungsüberschreitung/-unterschreitung, Ringing, usw. Dies erlaubt ein besseres Zeitsteuerungsfenster, das schnellere Sendefrequenzen ermöglicht.A different pair refers to two transmission paths, such as lines 416 and 417, for transmitting different signals. As an example, when line 416 transitions from a low voltage level to a high voltage level, i.e., a rising edge, line 417 transitions from a high logic level to a low logic level, i.e., a falling edge. Different signals may exhibit better electrical properties, such as better signal integrity, i.e., cross-coupling, voltage overshoot/undershoot, ringing, etc. This allows for a better timing window that enables faster transmit frequencies.

Physische Schichten bestehender Zwischenverbindungs- und Kommunikationsarchitekturen, einschließlich PCIe, können aufgebaut werden, um gemeinsam benutzte Speicher- und I/O-Dienste in einem System vorzusehen. Üblicherweise können cachebare Speicher nicht zwischen unabhängigen Systemen unter Verwendung herkömmlicher Last-/Speicher- (LD/ST) Speichersemantik geteilt werden. Ein unabhängiges System oder ein „Knoten“, kann in dem Sinn unabhängig sein, dass es bzw. er als eine einzige logische Einheit funktioniert, von einem einzigen Betriebssystem (und/oder einem einzigen BIOS oder Virtual Machine Monitor (VMM)) gesteuert wird und/oder eine unabhängige Fehlerdomäne hat. Ein einzelner Knoten kann eine oder mehrere Prozessorvorrichtung(en) enthalten, kann auf einer einzigen Platine oder mehreren Platinen implementiert sein und einen lokalen Speicher, einschließlich eines cachebaren Speichers, enthalten, auf den mit Hilfe von LD/ST-Semantik durch die Vorrichtungen auf demselben Knoten zugegriffen werden kann. In einem Knoten kann ein gemeinsam benutzter Speicher einen Speicherblock oder mehrere Speicherblöcke enthalten, wie einen Direktzugriffsspeicher (RAM), auf den mehrere verschiedene Prozessoren (z.B. zentrale Verarbeitungseinheiten (CPUs)) in einem Knoten zugreifen können. Ein gemeinsam benutzter Speicher kann auch den lokalen Speicher der Prozessoren oder anderer Vorrichtungen im Knoten enthalten. Die mehrfachen Vorrichtungen in einem Knoten mit einem gemeinsam benutzten Speicher können sich eine einzelne Ansicht von Daten im gemeinsam benutzten Speicher teilen. Die I/O-Kommunikation, die den gemeinsam benutzten Speicher beinhaltet, kann eine sehr geringe Latenz aufweisen und einen raschen Zugang zum Speicher durch die mehrfachen Prozessoren ermöglichen.Physical layers of existing interconnect and communications architectures, including PCIe, can be built to provide shared storage and I/O services in a system. Typically, cacheable memory cannot be shared between independent systems using conventional load/store (LD/ST) memory semantics. An independent system, or "node," can be independent in the sense that it functions as a single logical entity, is controlled by a single operating system (and/or a single BIOS or Virtual Machine Monitor (VMM)) and /or has an independent fault domain. A single node may contain one or more processor devices, may be implemented on a single board or multiple boards, and may contain local memory, including cacheable memory, accessed using LD/ST semantics by the devices on it node can be accessed. In a node, shared memory may include one or more blocks of memory, such as random access memory (RAM) that can be accessed by multiple different processors (e.g., central processing units (CPUs)) in a node. A shared memory can also include the local memory of the processors or other devices in the node. The multiple devices in a shared memory node can share a single view of data in the shared memory. The I/O communication involving the shared memory can have very low latency and allow rapid access to the memory by the multiple processors.

Üblicherweise hat eine gemeinsame Speicherbenutzung zwischen verschiedenen Knoten nach einem Last-/Speicherparadigma keine gemeinsame Speicherbenutzung ermöglicht. Zum Beispiel wurde in einigen Systemen eine gemeinsame Speicherbenutzung zwischen verschiedenen Knoten durch verteilte Speicherarchitekturen erleichtert. In herkömmlichen Lösungen bearbeiten Rechenaufgaben lokale Daten und wenn Daten eines anderen Knotens erwünscht sind, kommuniziert die Rechenaufgabe (die z.B. von einem anderen CPU-Knoten ausgeführt wird) mit dem anderen Knoten zum Beispiel über einen Kommunikationskanal, der einen Kommunikationsprotokollstapel, wie Ethernet, InfiniBand oder ein anderes schichtenförmiges Protokoll verwendet. In herkömmlichen Mehrfachknotensystemen muss den Prozessoren verschiedener Knoten nicht bewusst sein, wo die Daten liegen. Eine gemeinsame Datenbenutzung unter Verwendung herkömmlicher Methoden, wie über einen Protokollstapel, kann eine signifikant höhere Latenz als eine gemeinsame Speicherbenutzung in einem Knoten haben, der ein Last-/Speicherparadigma verwendet. Anstatt eines direkten Adressierens und Bearbeitens von Daten in einem gemeinsam benutzten Speicher kann ein Knoten, neben anderen Beispielen, Daten von einem anderen mit Hilfe eines bestehenden Protokoll-Handshakes wie Ethernet (oder Infiniband) anfragen und der Quellenknoten kann die Daten bereitstellen, so dass die Daten durch den anfragenden Knoten gespeichert und bearbeitet werden können.Traditionally, memory sharing between different nodes has not enabled memory sharing according to a load/memory paradigm. For example, in some systems, memory sharing between different nodes has been facilitated by distributed memory architectures. In In conventional solutions, computing tasks operate on local data and when data from another node is desired, the computing task (e.g. being executed by another CPU node) communicates with the other node via, for example, a communication channel using a communication protocol stack such as Ethernet, InfiniBand or a different layered protocol used. In conventional multi-node systems, the processors of different nodes do not need to be aware of where the data resides. Data sharing using traditional methods, such as via a protocol stack, may have significantly higher latency than memory sharing in a node using a load/store paradigm. Instead of directly addressing and manipulating data in shared memory, one node can, among other examples, request data from another using an existing protocol handshake such as Ethernet (or Infiniband) and the source node can provide the data so that the Data can be stored and edited by the requesting node.

In einigen Implementierungen, kann eine gemeinsam benutzte Speicherarchitektur vorgesehen sein, die eine gemeinsame Speicherbenutzung zwischen unabhängigen Knoten für einen ausschließlichen oder gemeinsamen Zugang unter Verwendung einer Last-/Speicher- (LD/ST) Speichersemantik ermöglicht. In einem Beispiel können die Speichersemantik (und, falls zutreffend, Verzeichnisinformationen) und I/O-Semantik (für Protokolle wie PCIe) entweder auf einen gemeinsamen Satz von Pins oder einen separaten Satz von Pins exportiert werden. In einem solchen System kann jeder von mehreren Knoten in einem System die verbesserte, gemeinsam benutzte Speicherarchitektur, um seine eigene unabhängige Fehlerdomäne (und lokalen Speicher) beizubehalten, während ein gemeinsam benutzter Speicherpool für einen Zugang durch den Knoten und eine Nachrichtübermittlung niedriger Latenz, die zwischen Knoten läuft, unter Verwendung eines Speichers nach der LD/ST-Semantik möglich ist. In einigen Implementierungen kann ein solcher, gemeinsam benutzter Speicherpool dynamisch (oder statisch) zwischen verschiedenen Knoten zugeordnet werden. Daher können die verschiedenen Knoten eines Systems als sich dynamisch ändernde Gruppen von Knoten konfiguriert werden, die bei Bedarf gemeinsam und flexibel verschiedene Aufgaben bearbeiten, welche zum Beispiel die gemeinsam benutzte Speicherinfrastruktur verwenden.In some implementations, a shared memory architecture may be provided that enables memory sharing between independent nodes for exclusive or shared access using load/store (LD/ST) memory semantics. In one example, memory semantics (and directory information, if applicable) and I/O semantics (for protocols like PCIe) can be exported to either a common set of pins or a separate set of pins. In such a system, each of multiple nodes in a system can use the enhanced shared memory architecture to maintain its own independent fault domain (and local memory) while using a shared memory pool for node-by-node access and low-latency messaging between Node runs using memory that allows LD/ST semantics. In some implementations, such a shared memory pool can be allocated dynamically (or statically) between different nodes. Therefore, the various nodes of a system can be configured as dynamically changing groups of nodes that work together and flexibly on different tasks as needed, using, for example, the shared storage infrastructure.

In Hinblick nun auf 5A ist ein vereinfachtes Blockdiagramm 500a dargestellt, das ein beispielhaftes System zeigt, das einen gemeinsam benutzten Speicher 505 enthält, auf den mit Hilfe von Last-/Speichertechniken von jedem der mehreren unabhängigen Knoten 510a-510n zugegriffen werden kann. Zum Beispiel kann eine gemeinsam benutzte Speichersteuerung 515 vorgesehen sein, die Last-/Speicherzugangsanfragen der verschiedenen Knoten 510a-510n auf dem System annehmen kann. Der gemeinsam benutzte Speicher 505 kann durch Verwendung eines synchronen dynamischen Direktzugriffsspeichers (SDRAM), dualer In-line-Speichermodule (DIMM) und eines anderen nicht flüchtigen Speichers (oder flüchtigen Speichers) implementiert sein.With regard now to 5A Illustrated is a simplified block diagram 500a showing an example system that includes a shared memory 505 that can be accessed using load/store techniques from each of multiple independent nodes 510a-510n. For example, a shared memory controller 515 can be provided that can accept load/memory access requests from the various nodes 510a-510n on the system. The shared memory 505 may be implemented using synchronous dynamic random access memory (SDRAM), dual in-line memory modules (DIMM), and other non-volatile (or volatile) memory.

Jeder Knoten kann selbst eine oder mehrere CPU-Buchse(n) haben und kann auch einen lokalen Speicher enthalten, der von einem LD/ST-Zugang durch andere Knoten im System isoliert bleibt. Der Knoten kann mit anderen Vorrichtungen auf dem System (z.B. der gemeinsam benutzten Speichersteuerung 515, der Netzwerksteuerung 520, einem anderen Knoten, usw.) unter Verwendung eines Protokolls oder mehrerer Protokolle, einschließlich PCIe, QPI, Ethernet, neben anderen Beispielen, kommunizieren. In einigen Implementierungen kann ein gemeinsam benutztes Speicherverbindungs- (SML) Protokoll vorgesehen sein, durch das eine LD/ST-Speichersemantik niedriger Latenz unterstützt werden kann. Zum Beispiel kann SML in der Kommunikation von Lese- und Schreibvorgängen eines gemeinsam benutzten Speichers 505 (durch die gemeinsam benutzte Speichersteuerung 515) von den verschiedenen Knoten 510a-510n eines Systems verwendet werden.Each node may have its own CPU socket(s) and may also contain local memory that remains isolated from LD/ST access by other nodes in the system. The node may communicate with other devices on the system (e.g. shared memory controller 515, network controller 520, another node, etc.) using one or more protocols including PCIe, QPI, Ethernet, among other examples. In some implementations, a shared memory link (SML) protocol may be provided through which low latency LD/ST memory semantics may be supported. For example, SML can be used in the communication of reads and writes of a shared memory 505 (through the shared memory controller 515) from the various nodes 510a-510n of a system.

In einem Beispiel kann die SML auf einem Speicherzugangsprotokoll, wie Scalable Memory Interconnect (SMI) der 3. Generation (SM13), basieren. Alternativ können andere Speicherzugangsprotokolle verwendet werden, wie transaktionale Speicherzugangsprotokolle, wie, neben anderen Beispielen, ein vollständig gepuffertes DIMM (FB-DIMM), DDR transaktional (DDR-T). In anderen Fällen kann die SML auf einer nativen PCIe-Speicherlese-/-schreibsemantik mit zusätzliche Verzeichniserweiterungen basieren. Eine auf einem Speicherprotokoll basierte Implementierung der SML kann Vorteile in der Bandbreiteneffizienz bieten, da sie auf Cachezeilen-Speicherzugänge zugeschnitten ist. Während Hochleistungskommunikationsprotokolle zwischen Vorrichtungen bestehen, wie PCIe, können obere Schichten (z.B. Transaktions- und Verbindungsschichten) solcher Protokolle eine Latenz einführen, die die Anwendung des vollständigen Protokolls zur Verwendung in LD/ST-Speichertransaktionen verschlechtert, einschließlich Transaktionen, die einen gemeinsam benutzten Speicher 505 beinhalten. Ein Speicherprotokoll, wie SMI3, kann einen möglichen zusätzlichen Vorteil bedeuten, indem Zugänge mit niedriger Latenz geboten werden, da es den Großteil eines anderen Protokollstapels, wie PCIe, umgehen kann. Daher können SML-Implementierungen SMI3 oder ein anderes Speicherprotokoll nutzen, das auf einer logischen und physischen PHY eines anderen Protokolls, wie SMI3 on PCIe, läuft.In one example, the SML may be based on a memory access protocol such as 3rd Generation (SM13) Scalable Memory Interconnect (SMI). Alternatively, other memory access protocols may be used, such as transactional memory access protocols such as fully buffered DIMM (FB-DIMM), DDR transactional (DDR-T), among other examples. In other cases, the SML may be based on native PCIe memory read/write semantics with additional directory extensions. A memory protocol based implementation of the SML can provide bandwidth efficiency benefits as it is tailored for cache line memory accesses. While high-performance communication protocols exist between devices, such as PCIe, upper layers (e.g., transaction and link layers) of such protocols can introduce latency that degrades the application of the full protocol for use in LD/ST memory transactions, including transactions involving shared memory 505 include. A storage protocol, such as SMI3, can provide a potential additional benefit by providing low-latency approaches be offered as it can bypass most of another protocol stack, such as PCIe. Therefore, SML implementations can leverage SMI3 or another storage protocol running on a different protocol logical and physical PHY, such as SMI3 on PCIe.

Wie festgehalten wurde, kann in einigen Implementierungen eine gemeinsam benutzte Speichersteuerung (SMC) 515 vorgesehen sein, die eine Logik zur Bearbeitung von Last-/Speicheranfragen von Knoten 510a-51 0n im System enthält. Last-/Speicheranfragen können von der SMC 515 über Verbindungen empfangen werden, die die SML verwenden und die Knoten 510a-510n mit der SMC 515 verbinden. In einigen Implementierungen kann die SMC 515 als eine Vorrichtung implementiert sein, wie eine anwendungsspezifische integrierte Schaltung (ASIC), einschließlich einer Logik zum Bedienen der Zugangsanfragen der Knoten 510a-510n für gemeinsam benutzte Speicherressourcen. In anderen Fällen kann die SMC 515 (wie auch der gemeinsam benutzte Speicher 505) auf einer Vorrichtung, einem Chip oder einer Platine, getrennt von einem oder mehreren (oder sogar allen) der Knoten 510a-510n liegen. Die SMC 515 kann ferner eine Logik zum Koordinieren verschiedener Transaktionen der Knoten enthalten, die den gemeinsam benutzten Speicher 505 beinhalten. Zusätzlich kann die SMC einen Verzeichnisverfolgungszugang zu verschiedenen Datenressourcen führen, wie jede Cachezeile, die im gemeinsam benutzten Speicher 505 enthalten sind. Zum Beispiel kann eine Datenressource, unter anderen möglichen Beispielen, in einem gemeinsam benutzten Zugangszustand (z.B. imstande, dass mehrere Verarbeitungs- und/oder I/O-Vorrichtungen in einem Knoten gleichzeitig zugreifen (z.B. geladen oder gelesen)), einem ausschließlichen Zugangszustand (z.B. ausschließlich, wenn nicht temporär von einer einzigen Verarbeitungs- und/oder I/O-Vorrichtung in einem Knoten (z.B. für einen Speicher- oder Schreibvorgang) reserviert), einem Nicht-Cache-Zustand sein. Während ferner jeder Knoten einen direkten Zugang zu einem oder mehreren Abschnitt(en) eines gemeinsam benutzten Speichers 505 haben kann, können verschiedene Adressierungsschemata und -werte von den verschiedenen Knoten (z.B. 510a-510n) verwendet werden, was dazu führt, dass im selben gemeinsam benutzten Speicher von einem ersten Knoten gemäß einem ersten Adressenwert und einem zweiten Knoten, der auf dieselben Daten durch einen zweiten Adressenwert verweist, auf Daten (z.B. in einem Befehl) verwiesen wird. Die SMC 515 kann eine Logik enthalten, die Datenstrukturen beinhaltet, die Adressen der Knoten auf gemeinsam benutzte Speicherressourcen abbildet, so dass die SMC 515 die verschiedenen Zugangsanfragen der verschiedenen Knoten interpretieren kann.As noted, in some implementations a shared memory controller (SMC) 515 may be provided that includes logic to handle load/memory requests from nodes 510a-510n in the system. Load/store requests may be received by the SMC 515 over links using the SML and connecting nodes 510a-510n to the SMC 515. In some implementations, SMC 515 may be implemented as a device, such as an application specific integrated circuit (ASIC), including logic for servicing nodes 510a-510n's access requests for shared memory resources. In other cases, SMC 515 (as well as shared memory 505) may reside on a device, chip, or board separate from one or more (or even all) of nodes 510a-510n. The SMC 515 may also include logic for coordinating various transactions of the nodes that include the shared memory 505 . In addition, the SMC can maintain directory tracking access to various data resources, such as each cache line, contained in shared memory 505. For example, a data resource may, among other possible examples, be in a shared access state (e.g., capable of being accessed (e.g., loaded or read) by multiple processing and/or I/O devices in a node concurrently), an access-only state (e.g., exclusively, unless temporarily reserved (e.g., for a store or write) by a single processing and/or I/O device in a node, can be a non-cache state. Furthermore, while each node may have direct access to one or more sections of shared memory 505, different addressing schemes and values may be used by the different nodes (e.g. 510a-510n), resulting in the same being shared used memory is referenced (e.g. in an instruction) by a first node according to a first address value and a second node referencing the same data by a second address value. The SMC 515 may contain logic that includes data structures that map addresses of the nodes to shared memory resources so that the SMC 515 can interpret the different access requests of the different nodes.

Zusätzlich kann in einigen Fällen ein gewisser Teil des gemeinsam benutzten Speichers (z.B. gewisse Trennungen, Speicherblöcke, Aufzeichnungen, Dateien, usw.) gewissen Genehmigungen, Regeln und Zuordnungen unterliegen, so dass nur ein Teil der Knoten 510a-510n (z.B. durch die SMC 515) auf entsprechende Daten zugreifen kann. Tatsächlich kann jede gemeinsam benutzte Speicherressource einem entsprechenden (und in einigen Fällen anderen) Teilsatz der Knoten 510a-510n des Systems zugeordnet werden. Diese Zuordnungen können dynamisch sein und die SMC 515 kann solche Regeln und Genehmigungen (z.B. auf Anfrage, dynamisch, usw.) modifizieren, um neue oder geänderte Regeln, Genehmigungen, Knotenzuordnungen und Eigentumsrecht anzupassen, die für einen bestimmten Teil des gemeinsam benutzten Speichers 505 gelten.Additionally, in some cases, some portion of the shared memory (e.g., certain separations, memory blocks, records, files, etc.) may be subject to certain permissions, rules, and allocations such that only a portion of nodes 510a-510n (e.g., by the SMC 515 ) can access corresponding data. In fact, each shared memory resource may be associated with a corresponding (and in some cases different) subset of the system's nodes 510a-510n. These allocations may be dynamic, and SMC 515 may modify such rules and permissions (e.g., on demand, dynamically, etc.) to accommodate new or changed rules, permissions, node allocations, and ownership applicable to a particular portion of shared memory 505 .

Eine beispielhafte SMC 515 kann ferner verschiedene Transaktionen verfolgen, die Knoten (z.B. 510a-510n) im System beinhalten, die auf eine oder mehrere gemeinsam benutzte Speicherressourcen zugreifen. Zum Beispiel kann die SMC 515 Informationen für jede Transaktion eines gemeinsam benutzten Speichers 505 verfolgen, einschließlich einer Identifizierung des (der) Knoten(s), der (die) an der Transaktion beteiligt ist (sind), des Fortlaufs der Transaktion (z.B. ob sie vollendet ist), neben anderen Transaktionsinformationen. Dies kann ermöglichen, dass einige der transaktionsorientierten Aspekte herkömmlicher verteilter Speicherarchitekturen bei der hier beschriebenen, verbesserten, gemeinsam benutzten Mehrfachknoten-Speicherarchitektur angewendet werden. Zusätzlich kann eine Transaktionsverfolgung (z.B. von der SMC) verwendet werden, eine Aufrechterhaltung oder Durchsetzung der separaten und unabhängigen Fehlerdomänen jedes entsprechenden Knoten zu unterstützen. Zum Beispiel kann die SMC die entsprechende Knoten-ID für jede laufende Transaktion in ihren internen Datenstrukturen, einschließlich im Speicher, verwalten und diese Informationen verwenden, um Zugangsrechte durchzusetzen und einzelne Fehlerdomänen für jeden Knoten zu verwalten. Wenn einer der Knoten abgeschaltet wird (z.B. aufgrund eines kritischen Fehlers, einer ausgelösten Wiederherstellungssequenz oder eines anderen Fehlers oder Ereignisses), werden daher nur dieser Knoten und seine Transaktionen, die den gemeinsam benutzten Speicher 505 beinhalten, unterbrochen (z.B. von der SMC fallengelassen) - Transaktionen der übrigen Knoten, die den gemeinsam benutzten Speicher 505 beinhalten, laufen unabhängig von dem Fehler in dem anderen Knoten weiter.An example SMC 515 may also track various transactions involving nodes (e.g., 510a-510n) in the system that access one or more shared memory resources. For example, the SMC 515 may track information for each shared memory 505 transaction, including an identification of the node(s) involved in the transaction, the progression of the transaction (e.g., whether it completed), along with other transaction information. This may allow some of the transaction-oriented aspects of traditional distributed memory architectures to be applied to the enhanced multi-node shared memory architecture described herein. Additionally, transaction tracking (e.g., from the SMC) may be used to help maintain or enforce each respective node's separate and independent fault domains. For example, the SMC can maintain the appropriate node ID for each ongoing transaction in its internal data structures, including in memory, and use this information to enforce access rights and manage individual fault domains for each node. Therefore, if one of the nodes goes down (e.g. due to a critical error, a triggered recovery sequence or some other error or event), only that node and its transactions involving the shared memory 505 will be interrupted (e.g. dropped by the SMC) - Transactions of the remaining nodes that hold the shared memory 505 continue regardless of the failure in the other node.

Ein System kann mehrfache Knoten enthalten. Zusätzlich können einige beispielhafte Systeme mehrfache SMCs enthalten. In einigen Fällen kann ein Knoten imstande sein, auf einen gemeinsam benutzten Speicher jenseits einer fernen SMC zuzugreifen, mit welcher er nicht direkt verbunden ist (d.h., die lokale SMC des Knotens ist mit der fernen SMC durch einen oder mehrere SML-Verbindungs-Hops verbunden). Die ferne SMC kann sich in derselben Platine befinden oder könnte sich in einer anderen Platine befinden. In einigen Fällen können einige der Knoten abseits des Systems sein (z.B. abseits der Platine oder abseits des Chips), aber dennoch auf einen gemeinsam benutzten Speicher 505 zugreifen. Zum Beispiel, können ein oder mehrere Knoten abseits des Systems unter Verwendung einer SML-konformen Verbindung, neben anderen Beispielen, direkt an die SMC angeschlossen sein. Zusätzlich können andere Systeme, die ihre eigene SMC und einen gemeinsam benutzten Speicher enthalten, auch mit der SMC 510 verbunden sein, um eine gemeinsame Benutzung des Speichers 505 auf Knoten zu erweitern, die zum Beispiel auf einer anderen Platine enthalten sind, die eine Schnittstelle mit der anderen SMC hat, die mit der SMC über eine SML-Verbindung verbunden ist. Ferner können Netzwerkverbindungen durchgetunnelt sein, um den Zugang auf die anderen Knoten abseits der Platine oder abseits des Chips zu erweitern. Zum Beispiel kann die SML über eine Ethernet-Verbindung (die z.B. durch die Netzwerksteuerung 520 bereitgestellt ist) tunneln, die das beispielhafte System von 5A kommunikativ mit einem anderen System koppelt, das auch einen oder mehrere andere Knoten enthält, und diesen Knoten ebenso einen Zugang zur SMC 515 und dadurch zum gemeinsam benutzten Speicher 505, neben anderen Beispielen, ermöglichen.A system can contain multiple nodes. Additionally, some example systems may include multiple SMCs. In some cases, a node may be able to share one to access used memory beyond a remote SMC to which it is not directly connected (ie, the node's local SMC is connected to the remote SMC by one or more SML connection hops). The remote SMC can be on the same board or could be on a different board. In some cases, some of the nodes may be off-system (eg, off-board or off-chip) but still access shared memory 505 . For example, one or more off-system nodes may be directly connected to the SMC using an SML-compliant connection, among other examples. Additionally, other systems containing their own SMC and shared memory may also be connected to the SMC 510 to extend memory 505 sharing to nodes contained, for example, on another board that interfaces with of the other SMC that is connected to the SMC via an SML connection. Furthermore, network connections may be tunneled through to extend access to the other nodes off-board or off-chip. For example, the SML may tunnel over an Ethernet connection (e.g., provided by the network controller 520) that the example system of FIG 5A communicatively coupled to another system that also includes one or more other nodes, and also allow those nodes access to the SMC 515 and thereby to the shared memory 505, among other examples.

Als weiteres Beispiel, wie in dem vereinfachten Blockdiagramm 500b von 5B dargestellt, kann eine verbesserte, gemeinsam benutzte Speicherarchitektur, die einen gemeinsamen Zugang durch mehrfache unabhängige Knoten gemäß einer LD/ST-Speichersemantik ermöglicht, flexibel ein Vorsehen einer Reihe verschiedener Mehrfachknotensystemdesigns ermöglichen. Es können verschiedene Kombinationen der mehrfachen Knoten zugeordnet werden, um Teile eines gemeinsam benutzten Speicherblocks oder mehrerer gemeinsam benutzten Speicherblöcke gemeinsam zu benutzen, die in einem beispielhaften System vorgesehen sind. Zum Beispiel kann ein anderes beispielhaftes System, das in dem Beispiel von 5B dargestellt ist, mehrfache Vorrichtungen 550a-550d enthalten, die zum Beispiel als separate Dies, Platinen, Chips, usw. implementiert sind, wobei jede Vorrichtung einen oder mehrere unabhängige CPU-Knoten (z.B. 510a-510h) enthält. Jeder Knoten kann seinen eigenen lokalen Speicher enthalten. Eine oder mehrere der mehrfachen Vorrichtungen 550a-550d können ferner einen gemeinsam benutzten Speicher enthalten, auf den zwei oder mehr der Knoten 5 10a-5 10h des Systems zugreifen können.As another example, as shown in simplified block diagram 500b of FIG 5B 1, an improved shared memory architecture that allows shared access by multiple independent nodes according to LD/ST memory semantics can flexibly allow for a variety of different multi-node system designs. Various combinations of the multiple nodes may be allocated to share portions of a shared memory block or blocks provided in an example system. For example, another example system shown in the example of FIG 5B illustrated, contain multiple devices 550a-550d, implemented, for example, as separate dies, boards, chips, etc., with each device containing one or more independent CPU nodes (eg, 510a-510h). Each node can contain its own local storage. One or more of the multiple devices 550a-550d may further include shared memory accessible by two or more of the nodes 5 10a-5 10h of the system.

Das in 5B dargestellte System ist ein Beispiel, das zur Veranschaulichung eines Teils der Variabilität vorgesehen ist, die durch eine verbesserte, gemeinsam benutzte Speicherarchitektur erreicht werden kann, wie hier dargestellt und beschrieben. Zum Beispiel kann jede von einer Vorrichtung A 550a und Vorrichtung C 550c ein entsprechendes gemeinsam benutztes Speicherelement (z.B. 505a, 505b) enthalten. Daher kann in einigen Implementierungen jedes gemeinsam benutzte Speicherelement auf einer eigenen Vorrichtung ferner eine entsprechende gemeinsam benutzte Speichersteuerung (SMC) 515a, 515b enthalten. Verschiedene Kombinationen von Knoten 510a-510h können kommunikativ an jede SMC (z.B. 515a, 515b) gekoppelt sein, wodurch die Knoten Zugang zu dem entsprechenden gemeinsam benutzten Speicher (z.B. 505a, 505b) erlangen. Als ein Beispiel kann die SMC 515a von Vorrichtung A 550a mit den Knoten 510a, 510b auf Vorrichtung A unter Verwendung einer direkten Datenverbindung, die SML unterstützt, verbunden sein. Zusätzlich können andere Knoten 510c auf einer anderen Vorrichtung (z.B. Vorrichtung C 550c) auch durch eine direkte, hartverdrahtete Verbindung (die SML unterstützt) vom Knoten 510c (und/oder seiner Vorrichtung 550c) zur SMC 515a Zugang zum gemeinsam benutzten Speicher 505a haben. Indirekte, auf dem Netzwerk basierende und andere derartige Verbindungen können auch verwendet werden, um Knoten (z.B. 510f-510h) einer fernen Vorrichtung oder abseits der Platine (z.B. Vorrichtung D 550d) die Verwendung eines herkömmlichen Protokollstapels zu ermöglichen, um eine Schnittstelle mit der SMC 515a zu haben, um ebenso auf den gemeinsam benutzten Speicher 505a Zugang zu haben. Zum Beispiel kann ein SML-Tunnel 555 über eine Ethernet-, InfiniBand- oder andere Verbindung errichtet werden, die Vorrichtung A und Vorrichtung D koppelt. Während der Errichtung und Aufrechterhaltung kann der Tunnel einen gewissen zusätzlichen Mehraufwand und eine Latenz im Vergleich zur SML einführen, die auf anderen, weniger durch Software verwalteten physischen Verbindungen läuft, wobei der SML-Tunnel 555, wenn er errichtet ist, wie andere SML-Kanäle arbeiten und dem Knoten 510f-5 10h ermöglichen kann, eine Schnittstelle mit der SMC 515a über SML zu haben und auf den gemeinsam benutzten Speicher 505a zuzugreifen, wie dies jeder andere Knoten kann, der mit der SMC über eine SML-Verbindung kommuniziert. Zum Beispiel können Zuverlässigkeit und Reihung der Pakete in den SML-Kanälen entweder durch die netzwerkenden Komponenten im System durchgesetzt werden oder können Ende zu Ende zwischen den SMCs durchgesetzt werden.This in 5B The system illustrated is an example intended to illustrate some of the variability that can be achieved through an improved shared memory architecture as illustrated and described herein. For example, each of device A 550a and device C 550c may include a corresponding shared memory element (eg, 505a, 505b). Therefore, in some implementations, each shared memory element on a distinct device may further include a corresponding shared memory controller (SMC) 515a, 515b. Various combinations of nodes 510a-510h may be communicatively coupled to each SMC (eg, 515a, 515b), allowing the nodes to access the corresponding shared memory (eg, 505a, 505b). As an example, the SMC 515a of device A 550a may be connected to the nodes 510a, 510b on device A using a direct data link that supports SML. Additionally, other nodes 510c on another device (e.g., Device C 550c) may also have access to shared memory 505a through a direct, hardwired connection (that supports SML) from node 510c (and/or its device 550c) to SMC 515a. Indirect, network-based, and other such connections may also be used to allow nodes (e.g., 510f-510h) of a remote device or off-board (e.g., Device D 550d) to use a conventional protocol stack to interface with the SMC 515a to access shared memory 505a as well. For example, an SML tunnel 555 may be established over an Ethernet, InfiniBand, or other connection that couples device A and device D. During establishment and maintenance, the tunnel may introduce some additional overhead and latency compared to SML running on other, less software-managed, physical connections, with SML tunnel 555, when established, like other SML channels and allow node 510f-5 10h to interface with SMC 515a over SML and access shared memory 505a as any other node that communicates with SMC over an SML connection can. For example, reliability and ordering of the packets in the SML channels can either be enforced by the networking components in the system or can be enforced end-to-end between the SMCs.

In einem weiteren anderen Beispiel können Knoten (z.B. 515d, 515e) auf einer Vorrichtung, die sich von jener unterscheidet, die einen bestimmten Teil des gemeinsam benutzten Speichers (z.B. 505a) beherbergt, indirekt mit der entsprechenden SMC (z.B. SMC 515a) durch eine direkte Verbindung mit einer anderen SMC (z.B. 515b) verbunden sein, die selbst (z.B. unter Verwendung einer SML Verbindung) an die entsprechende SMC (z.B. 515a) gekoppelt ist. Ein Verbinden von zwei oder mehr SMCs (z.B. 515a, 515b) kann effektiv die Menge an verfügbarem gemeinsam benutzten Speicher erhöhen, die den Knoten 510a-510h auf dem System zur Verfügung steht. Zum Beispiel kann aufgrund einer Verbindung zwischen SMCs 515a, 515b im Beispiel von 5B in einigen Implementierungen jeder der Knoten (z.B. 5 10a-5 10c, 510f-510h), der auf einen gemeinsam benutzten Speicher 505a durch die SMC 515a zugreifen kann, auch möglicherweise auf einen gemeinsam benutzbaren Speicher 505b aufgrund der Verbindung zwischen der SMC 515a und der SMC 515b zugreifen. Ebenso kann in einigen Implementierungen jeder der Knoten, die direkt auf die SMC 515b zugreifen kann, auch auf einen gemeinsam benutzbaren Speicher 505a aufgrund der Verbindung zwischen den SMCs 515a, 515b zugreifen, neben anderen möglichen Beispielen.In yet another example, nodes (e.g., 515d, 515e) may reside on a device other than the one that has a particular portion of shared memory (e.g., 505a) may be indirectly connected to the corresponding SMC (e.g. SMC 515a) through a direct connection to another SMC (e.g. 515b) which is itself coupled (e.g. using an SML connection) to the corresponding SMC (e.g. 515a). Linking two or more SMCs (eg, 515a, 515b) can effectively increase the amount of available shared memory available to nodes 510a-510h on the system. For example, due to a connection between SMCs 515a, 515b in the example of 5B in some implementations, each of the nodes (e.g., 510a-510c, 510f-510h) that can access a shared memory 505a through the SMC 515a may also access a shared memory 505b due to the connection between the SMC 515a and the Access SMC 515b. Likewise, in some implementations, each of the nodes that can directly access the SMC 515b can also access a shared memory 505a due to the connection between the SMCs 515a, 515b, among other possible examples.

Wie oben festgehalten wurde, kann eine verbesserte, gemeinsam benutzte Speicherarchitektur ein Verbindungsprotokoll niedriger Latenz (d.h., SML) auf der Basis eines Speicherzugangsprotokolls, wie SMI3, enthalten und vorgesehen sein, um Last-/Speicheranfragen zu erleichtern, die den gemeinsam benutzten Speicher beinhalten. Während das traditionelle SMI3 und andere Speicherzugangsprotokolle zur Verwendung in einer gemeinsamen Speicherbenutzung innerhalb eines einzigen Knotens konfiguriert sein können, kann die SML die Speicherzugangssemantik auf mehrfache Knoten erweitern, um eine gemeinsame Speicherbenutzung zwischen den mehrfachen Knoten zu ermöglichen. Ferner kann die SML möglicherweise auf jeder physischen Kommunikationsverbindung verwendet werden. Die SML kann ein Speicherzugangsprotokoll verwenden, das eine LD/ST-Speichersemantik unterstützt, die auf eine physische Schicht (und entsprechende physische Schichtlogik) aufgelegt ist, die dazu angepasst ist, verschiedene Vorrichtungen (und Knoten) miteinander zu verbinden. Zusätzlich kann eine physische Schichtlogik der SML neben anderen Merkmalen keine Paketverlust- und Fehlerwiederholungsfunktionalität vorsehen.As noted above, an improved shared memory architecture may include and provide a low latency connection protocol (i.e., SML) based memory access protocol such as SMI3 to facilitate load/memory requests involving the shared memory. While the traditional SMI3 and other memory access protocols can be configured for use in memory sharing within a single node, the SML can extend the memory access semantics to multiple nodes to enable memory sharing between the multiple nodes. Furthermore, the SML can potentially be used on any physical communication link. The SML may use a memory access protocol that supports LD/ST memory semantics overlaid on a physical layer (and corresponding physical layer logic) adapted to interconnect different devices (and nodes). Additionally, SML physical layer logic may not provide packet loss and error retry functionality, among other features.

In einigen Implementierungen kann die SML durch Auflegen des SMI3 auf ein PCIe PHY implementiert sein. Eine SML-Verbindungsschicht kann (z.B. anstelle einer traditionellen PCIe-Verbindungsschicht) vorgesehen sein, um auf eine Strömungssteuerung und andere Merkmale zu verzichten und einen Speicherzugang niedriger Latenz zu erleichtern, wie für traditionelle CPU-Speicherzugangsarchitekturen charakteristisch wäre. In einem Beispiel kann die SML-Verbindungsschichtlogik zwischen gemeinsam benutzten Speichertransaktionen und anderen Transaktionen multiplexen. Zum Beispiel kann die SML-Verbindungsschichtlogik zwischen SMI3- und PCIe-Transaktionen multiplexen. Zum Beispiel kann das SMI3 (oder ein anderes Speicherprotokoll) auf einer PCIe (oder anderen Zwischenverbindungsprotokoll) liegen, so dass die Verbindung dynamisch zwischen SMI3- und PCIe-Transaktionen wechseln kann. Dies ermöglicht, dass in einigen Fällen traditioneller PCIe-Verkehr gleichzeitig auf derselben Verbindung wie SML-Verkehr vorhanden ist.In some implementations, the SML can be implemented by overlaying the SMI3 on a PCIe PHY. An SML link layer may be provided (e.g., in place of a traditional PCIe link layer) to eliminate flow control and other features and facilitate low-latency memory access that would be characteristic of traditional CPU memory access architectures. In one example, the SML link layer logic may multiplex between shared memory transactions and other transactions. For example, the SML link layer logic can multiplex between SMI3 and PCIe transactions. For example, the SMI3 (or other storage protocol) may reside on a PCIe (or other interconnect protocol) so that the link can dynamically switch between SMI3 and PCIe transactions. This allows traditional PCIe traffic to coexist on the same link as SML traffic in some cases.

In Hinblick nun auf 6 ist eine Darstellung 600 gezeigt, die eine erste Implementierung von SML veranschaulicht. Zum Beispiel kann die SML durch Auflegen eines SMI3 auf eine PCIe PHY implementiert sein. Die physische Schicht kann eine Standard-PCIe 128b/130b verwenden, die für alle Aktivitäten der physischen Schicht codiert, einschließlich Verbindungstraining- wie auch PCIe-Datenblöcke. Die SML kann einen Verkehr auf den Spuren (z.B. Lane0 - Lane7) der zu multiplexenden Verbindung zwischen PCIe-Paketen und SMI3-Flits vorsehen. Zum Beispiel kann in der in 6 dargestellten Implementierung die Sync-Kopfzeile der PCIe 128b/130b Codierung modifiziert sein und zur Anzeige verwendet werden, dass SMI3-Flits und nicht PCIe-Pakete auf den Spuren der Verbindung gesendet werden. In der traditionellen PCIe 128b/130b Codierung können gültige Sync-Kopfzeilen (z.B. 610) das Senden entweder eines 10b Musters auf allen Spuren der Verbindung (zur Anzeige, dass die Art von Nutzlast des Blocks der PCIe-Datenblock sein soll) oder eines 01b Musters auf allen Spuren der Verbindung (zur Anzeige, dass die Art von Nutzlast des Blocks der PCIe gereihte Blocksatz sein soll) enthalten. In einem Beispiel einer SML kann eine alternative Sync-Kopfzeile zur Unterscheidung eines SMI3-Flit Verkehrs von PCIe-Datenblöcken und gereihten Sätzen definiert sein. In einem Beispiel, das in 6 dargestellt ist, kann die PCIe 128b/130b Sync-Kopfzeile (z.B. 605a, 605b) mit abwechselnden 01b, 10b Mustern auf ungeraden/geraden Spuren codiert sein um anzugeben, dass SMI3-Flits gesendet werden sollen. In einer anderen alternativen Implementierung, kann die 128b/130b Sync-Kopfzeile, die für SMI3-Verkehr codiert, durch abwechselnde 10b, 01b Muster auf ungeraden/geraden Spuren, neben anderen beispielhaften Codierungen, definiert sein. In einigen Fällen können SMI3-Flits unmittelbar nach der SMI3 Sync-Kopfzeile auf einer pro-Byte-Basis gesendet werden, wobei der Übergang zwischen PCIe- und SMI3-Protokollen an der Blockgrenze erfolgt.With regard now to 6 A diagram 600 is shown that illustrates a first implementation of SML. For example, the SML can be implemented by overlaying an SMI3 on a PCIe PHY. The physical layer can use a standard PCIe 128b/130b that encodes all physical layer activities, including link training as well as PCIe data blocks. The SML can provide traffic on the lanes (eg Lane0 - Lane7) of the connection to be multiplexed between PCIe packets and SMI3 flits. For example, in the in 6 implementation shown, the sync header of the PCIe 128b/130b encoding will be modified and used to indicate that SMI3 flits and not PCIe packets are sent on the lanes of the link. In traditional PCIe 128b/130b encoding, valid sync headers (e.g. 610) can be sending either a 10b pattern on all lanes of the link (indicating that the payload type of the block should be the PCIe data block) or a 01b pattern on all lanes of the connection (to indicate that the type of payload of the block should be the PCIe queued block set). In an example of an SML, an alternate sync header may be defined to distinguish SMI3 flit traffic from PCIe frames and queued records. In an example found in 6 As shown, the PCIe 128b/130b sync header (eg, 605a, 605b) may be encoded with alternating 01b, 10b patterns on odd/even tracks to indicate that SMI3 flits should be sent. In another alternative implementation, the 128b/130b sync header encoding SMI3 traffic may be defined by alternating 10b, 01b patterns on odd/even tracks, among other exemplary encodings. In some cases, SMI3 flits can be sent immediately after the SMI3 Sync header on a per byte basis, with the transition between PCIe and SMI3 protocols occurring at the block boundary.

In einigen Implementierungen, wie jenen, die in dem Beispiel von 6 gezeigt sind, kann der Übergang zwischen den Protokollen so definiert sein, dass er an der Blockgrenze erfolgt, unabhängig davon, ob er einer SMI3-Flit- oder PCIe-Paketgrenze entspricht. Zum Beispiel kann ein Block so definiert sein, dass er eine vordefinierte Datenmenge (z.B. 16 Symbole, 128 Bytes, usw.) enthält. Wenn in solchen Implementierungen die Blockgrenze nicht einer SMI3-Flit- oder PCIe-Paketgrenze entspricht, kann die Sendung eines gesamten SMI3-Flits unterbrochen werden. Ein unterbrochenes SMI3-Flit kann im nächsten SMI3-Block wiederaufgenommen werden, was durch das Senden einer anderen Sync-Kopfzeile angezeigt wird, die für SMI3 codiert ist.In some implementations, like those shown in the example of 6 , the transition between protocols can be defined to occur at the block boundary, whether it is an SMI3 flit or PCIe packet boundary is equivalent to. For example, a block can be defined to contain a predefined amount of data (eg, 16 symbols, 128 bytes, etc.). In such implementations, if the block boundary does not conform to an SMI3 flit or PCIe packet boundary, transmission of an entire SMI3 flit may be interrupted. An interrupted SMI3 flit can be resumed in the next SMI3 block, indicated by sending another Sync Header encoded for SMI3.

In Hinblick nun auf 7A ist eine Darstellung 700 gezeigt, die eine andere beispielhafte Implementierung einer SML veranschaulicht. In dem Beispiel von 7A können anstelle einer Verwendung einer spezialisierten Sync-Kopfzeile, die Signalübergänge zwischen Speicherzugangs- und Zwischenverbindungsprotokollverkehr codiert, physische Schicht-Framing-Token verwendet werden. Ein Framing-Token (oder „Token“) kann eine Dateneinkapselung auf der physischen Schicht sein, die die Anzahl von Symbolen spezifiziert oder impliziert, die in einem Datenstrom enthalten sein soll, der mit dem Token verknüpft ist. Folglich kann der Framing-Token angeben, dass ein Strom beginnt, wie auch implizieren, wo er enden wird, und kann daher auch zum Angeben der Stelle des nächsten Framing-Tokens verwendet werden. Ein Framing-Token eines Datenstroms kann sich im ersten Symbol (Symbol 0) der ersten Spur (z.B. Spur 0) des ersten Datenblocks des Datenstroms befinden. In dem Beispiel von PCIs können fünf Framing-Token definiert sein, die den TLP-Verkehrsstart- (STP) Token, Datenstromende- (EDS) Token, Schlechtes-Ende- (EDB) Token, DLLP-Start- (SDP) Token und logischen Leerlauf- (IDL) Token enthalten.With regard now to 7A A diagram 700 is shown that illustrates another example implementation of an SML. In the example of 7A Physical layer framing tokens can be used instead of using a specialized sync header that encodes signal transitions between memory access and interconnect protocol traffic. A framing token (or "token") may be a physical layer data encapsulation that specifies or implies the number of symbols to be contained in a data stream associated with the token. Thus, the framing token can indicate that a stream begins as well as imply where it will end, and therefore can also be used to indicate the location of the next framing token. A framing token of a data stream can be located in the first symbol (symbol 0) of the first track (eg track 0) of the first data block of the data stream. In the example of PCIs, five framing tokens may be defined, which are the TLP Start of Traffic (STP) token, End of Data Stream (EDS) token, Bad End (EDB) token, DLLP Start (SDP) token, and Logical Idle (IDL) tokens included.

In dem Beispiel von 7A kann die SML durch Auflegen eines SMI3- oder anderen Datenzugangsprotokolls auf eine PCIe implementiert sein und der Standard-PCIe STP-Token kann so modifiziert sein, dass er einen neuen STP-Token definiert, der angibt, dass SMI3 (anstelle von TLP-Verkehr) auf den Spuren der Verbindung beginnen wird. In einigen Beispielen können Werte von Reserve-Bits des Standard-PCIe STP-Tokens modifiziert werden, um den SMI3 STP-Token in SML zu definieren. Wie ferner in 7B dargestellt ist, kann ein STP-Token 705 mehrere Felder enthalten, einschließlich eines 710 Feldes, das die Länge der SMI3-Nutzlast (im Sinne der Anzahl von Flits) angibt, die folgen wird. In einigen Implementierungen können eine oder mehrere Standardnutzlastlängen für TLP-Daten definiert sein. SMI3-Daten können in einigen Implementierungen so definiert sein, dass sie eine festgesetzte Anzahl von Flits enthalten, oder in anderen Fällen eine variable Anzahl von Flits enthalten, wobei in diesem Fall das Längenfeld für die Anzahl von SMI3-Flits ein Feld wird, das vernachlässigt werden kann. Ferner kann das Längenfeld für ein SMI3 STP als eine Länge definiert sein, die sich von jener der definierten TLP-Nutzlastlängen unterscheidet. Daher kann ein SMI3 STP, als ein Beispiel, auf der Basis eines Nicht-TLP-Längenwerts angegeben sein, der im STP-Längenfeld vorhanden ist. Zum Beispiel können in einer Implementierung die oberen 3-Bits des 11-Bit STP-Längenfeldes auf 111b gesetzt sein, um das SMI3 Paket anzugeben (z.B. basierend auf der Annahme, dass kein spezifikationskonformes PCIe TLP lang genug sein kann, um eine Länge aufzuweisen, wo die oberen 3 Bits des Längenfelds jeweils zu „1“ führen würden). Andere Implementierungen können andere Felder des STP-Tokens verändern oder codieren, um einen PCIe STP-Token, der eine traditionelle PCIe TLP-Datennutzlast identifiziert, von einem SMI3 STP-Token zu unterscheiden, der angibt, dass SMI3-Daten in TLP-Daten eingekapselt sind.In the example of 7A the SML can be implemented by overlaying an SMI3 or other data access protocol on a PCIe and the standard PCIe STP token can be modified to define a new STP token indicating that SMI3 (instead of TLP traffic) on the trail of the compound will begin. In some examples, spare bit values of the standard PCIe STP token may be modified to define the SMI3 STP token in SML. As also in 7B As illustrated, an STP token 705 may contain multiple fields, including a 710 field specifying the length of the SMI3 payload (in terms of the number of flits) that will follow. In some implementations, one or more default payload lengths may be defined for TLP data. SMI3 data may be defined to contain a fixed number of flits in some implementations, or contain a variable number of flits in other cases, in which case the length field for the number of SMI3 flits becomes a field that is neglected can be. Furthermore, the length field for an SMI3 STP can be defined as a length different from that of the defined TLP payload lengths. Therefore, as an example, an SMI3 STP may be specified based on a non-TLP length value present in the STP length field. For example, in one implementation, the upper 3-bits of the 11-bit STP length field may be set to 111b to indicate the SMI3 packet (e.g., based on the assumption that no spec-compliant PCIe TLP can be long enough to have a length where the upper 3 bits of the length field would each result in "1"). Other implementations may alter or encode other fields of the STP token to distinguish a PCIe STP token that identifies a traditional PCIe TLP data payload from an SMI3 STP token that indicates SMI3 data encapsulated in TLP data are.

Unter erneuter Bezugnahme auf das Beispiel von 7A können, Sync-Kopfzeilendaten der Codierung folgen, die für eine traditionelle PCIe 128b/130b Codierung spezifiziert ist. Zum Beispiel werden bei 715a-c Sync-Kopfzeilen mit einem Wert 10b empfangen, die anzeigen, dass Datenblöcke bevorstehen. Wenn ein PCIe STP (z.B. 720) empfangen wird, wird eine PCIe-TLP-Nutzlast erwartet, und der Datenstrom wird entsprechend verarbeitet. In Übereinstimmung mit der Nutzlastlänge, die im PCIe STP 720 identifiziert ist, kann die PCIe-TLP-Nutzlast die volle zugewiesene Nutzlastlänge nutzen. Ein anderer STP-Token kann im Wesentlichen zur selben Zeit innerhalb eines Datenblocks empfangen werden, der dem Ende der TLP-Nutzlast folgt. Zum Beispiel kann bei 725 ein SMI3 STP empfangen werden, das einen Übergang von PCIe-TLP-Daten zu SMI3-Flit Daten signalisiert. Das SMI3 STP kann zum Beispiel gesendet werden, sobald ein Ende der PCIe-Paketdaten identifiziert ist.Referring again to the example of 7A sync header data follows the encoding specified for traditional PCIe 128b/130b encoding. For example, at 715a-c, sync headers are received with a value of 10b indicating that data blocks are forthcoming. When a PCIe STP (e.g. 720) is received, a PCIe TLP payload is expected and the data stream is processed accordingly. In accordance with the payload length identified in the PCIe STP 720, the PCIe TLP payload can use the full allocated payload length. Another STP token may be received at substantially the same time within a data block following the end of the TLP payload. For example, at 725, an SMI3 STP may be received signaling a transition from PCIe TLP data to SMI3 flit data. For example, the SMI3 STP can be sent once an end of the PCIe packet data is identified.

In Fortsetzung mit dem Beispiel von 7A kann, wie bei den PCIe-TLP-Daten, das SMI3 STP 725 eine Länge der SMI3-Flit-Nutzlast definieren, die folgen soll. Zum Beispiel kann die Nutzlastlänge der SMI3-Daten der Anzahl von SMI3-Flits im Sinne von DW entsprechen, die folgen sollen. Ein Fenster (das z.B. bei Symbol 15 von Spur 3 endet), das der Nutzlastlänge entspricht, kann dadurch auf den Spuren definiert sein, in welchen nur SMI3-Daten während des Fensters gesendet werden sollen. Wenn sich das Fenster schließt, können andere Daten gesendet werden, wie ein anderes PCIe STP, das wiederbeginnt, TLP-Daten oder andere Daten, wie einen gereihten Datensatz, zu senden. Wie zum Beispiel in dem Beispiel von 7A dargestellt, wird ein EDS-Token nach dem Ende des SMI3-Datenfensters gesendet, das durch den SMI3 STP-Token 725 definiert ist. Der EDS-Token kann das Ende des Datenstroms signalisieren und implizieren, dass ein gereihter Blocksatz folgen wird, wie im Falle des Beispiels von 7A. Eine Sync-Kopfzeile 740, die 01b codiert ist, wird gesendet um anzugeben, dass ein gereihter Blocksatz gesendet werden soll. In diesem Fall wird ein gereihter PCIe-SKP-Satz gesendet. Solche gereihten Sätze können periodisch oder in eingestellten Intervallen oder Fenstern gesendet werden, so dass verschiedene Aufgaben auf PHY-Ebene und eine Koordination durchgeführt werden können, einschließlich eines Initialisierens einer Bit-Ausreichung, eines Initialisierens einer Symbolausrichtung, eines Austausches von PHY-Parametern, eines Kompensierens verschiedener Bit-Raten für zwei kommunizierende Ports, neben anderen Beispielen. In einigen Fällen kann ein angeordneter gereihter Satz gesendet werden, um ein definiertes Fenster oder einen Datenblock, der für SMI3-Flit-Daten spezifiziert ist, durch einen entsprechenden SMI3 STP-Token zu unterbrechen.Continuing with the example of 7A As with the PCIe TLP data, the SMI3 STP 725 can define a length of the SMI3 flit payload to follow. For example, the payload length of the SMI3 data may correspond to the number of SMI3 flits in terms of DW to follow. A window (e.g. ending at symbol 15 of track 3) corresponding to the payload length can thereby be defined on the tracks in which only SMI3 data is to be sent during the window. When the window closes, other data may be sent, such as another PCIe STP that starts sending TLP data again, or other data, such as a queued record. As for example in the example of 7A As shown, an EDS token is sent after the end of the SMI3 data window defined by the SMI3 STP token 725 . The EDS token can signal the end of the data stream and imply that a lined block set will follow, as in the case of the example from 7A . A sync header 740 encoded 01b is sent to indicate that a queued block set is to be sent. In this case, a queued PCIe SKP record is sent. Such queued sets can be sent periodically or at set intervals or windows so that various PHY level tasks and coordination can be performed, including initializing bit sufficiency, initializing symbol alignment, exchanging PHY parameters, one Compensating for different bit rates for two communicating ports, among other examples. In some cases, an ordered queued sentence may be sent to break a defined window or data block specified for SMI3 flit data by a corresponding SMI3 STP token.

Obwohl im Beispiel von 7A nicht ausdrücklich dargestellt, kann ein STP-Token auch für einen Übergang von SMI3-Flit Daten auf der Verbindung zu PCIe-TLP-Daten verwendet werden. Zum Beispiel kann nach dem Ende eines definierten SMI3 Fensters ein PCIe STP-Token (z.B. ähnlich dem Token 720) gesendet werden um anzuzeigen, dass das nächste Fenster zum Senden einer spezifizierten Menge an PCIe-TLP-Daten dient.Although in the example of 7A not explicitly shown, an STP token can also be used for a transition from SMI3 flit data on the link to PCIe TLP data. For example, after the end of a defined SMI3 window, a PCIe STP token (eg, similar to token 720) may be sent to indicate that the next window is for sending a specified amount of PCIe TLP data.

Speicherzugangs-Flits (z.B. SMI3-Flits) können in einigen Ausführungsformen in der Größe variieren, wodurch es schwierig wird vorherzusagen, wie viele Daten im entsprechenden STP-Token (z.B. SMI3 STP-Token) für die Speicherzugangsnutzlast zu reservieren sind. Als ein Beispiel, wie in 7 dargestellt, kann das SMI3 STP 725 ein Längenfeld haben, das anzeigt, dass erwartet wird, dass 244 Bytes SMI3-Daten dem SMI3 STP 725 folgen. In diesem Beispiel jedoch sind nur zehn Flits (z.B. SMI3-Flits 0-9) zur Sendung während des Fensters bereit und diese zehn SMI3-Flits verwenden nur 240 der 244 Bytes. Daher verbleiben vier (4) Bytes leere Bandbreite und diese werden mit IDL-Token gefüllt. Dies kann insbesondere suboptimal sein, wenn PCIe-TLP-Daten in einer Warteschlange sind und auf ein Schließen des SMI3-Fensters warten. In anderen Fällen kann das für die Sendung von SMI3-Flits vorgesehene Fenster unzureichend sein, um die Menge an SMI3-Daten zu senden, die für die Spur bereit ist. Es können Entscheidungstechniken zur Bestimmung verwendet werden, wie zwischen SMI3- und PCIe-TLP-Daten entschieden wird, die gleichzeitig auf der Verbindung vorhanden sind. Ferner kann in einigen Implementierungen die Länge der SMI3-Fenster dynamisch modifiziert werden, um eine effizientere Verwendung der Verbindung zu unterstützen. Zum Beispiel kann eine Entscheidungs- oder andere Logik überwachen, wie gut die definierten SMI3-Fenster zur Bestimmung genutzt werden, ob die definierte Fensterlänge besser angesichts der für die Spur erwarteten Menge an SMI3 (und konkurrierenden PCIe-TLP-Verkehr) optimiert werden kann. Daher können in solchen Implementierungen die Längenfeldwerte von SMI3 STP-Token abhängig von der Menge an Verbindungsbandbreite, der SMI3-Flit Daten zugewiesen werden sollten (z.B. relativ zu anderen PCIe-Daten, einschließlich TLP-, DLLP-Daten und eines gereihten Datensatzes), neben anderen Beispielen, dynamisch (z.B. zwischen verschiedenen Werte) eingestellt werden.Memory access flits (eg, SMI3 flits) may vary in size in some embodiments, making it difficult to predict how much data in the corresponding STP token (eg, SMI3 STP token) to reserve for the memory access payload. As an example, as in 7 shown, the SMI3 STP 725 may have a length field indicating that 244 bytes of SMI3 data are expected to follow the SMI3 STP 725. In this example, however, only ten flits (eg, SMI3 flits 0-9) are ready to be sent during the window, and these ten SMI3 flits use only 240 of the 244 bytes. Therefore, four (4) bytes of empty bandwidth are left and these are filled with IDL tokens. This can be suboptimal especially when PCIe TLP data is queued waiting for the SMI3 window to close. In other cases, the window allotted for sending SMI3 flits may be insufficient to send the amount of SMI3 data that is ready for the trace. Arbitration techniques can be used to determine how to arbitrate between SMI3 and PCIe TLP data coexisting on the link. Furthermore, in some implementations, the length of the SMI3 windows can be dynamically modified to support more efficient use of the connection. For example, decision or other logic may monitor how well the defined SMI3 windows are being used to determine whether the defined window length can be better optimized given the amount of SMI3 (and competing PCIe TLP traffic) expected for the lane. Therefore, in such implementations, the length field values of SMI3 STP tokens may vary depending on the amount of link bandwidth that SMI3 flit data should be allocated to (e.g., relative to other PCIe data including TLP, DLLP data, and a queued record). other examples, can be adjusted dynamically (e.g. between different values).

In Hinblick nun auf 8 ist eine Darstellung 800 einer anderen beispielhaften Implementierung einer SML dargestellt. In dieser alternativen Ausführungsform kann die SML verschachtelte SMI3- und PCIe-Protokolle durch einen modifizierten PCIe-Framing-Token vorsehen. Wie oben festgehalten wurde, kann ein EDS-Token in der PCIe zum Anzeigen eines Endes eines Datenstroms und zum Anzeigen, dass der nächste Block ein gereihter Blocksatz sein wird, verwendet werden. In dem Beispiel von 8 kann die SML einen SMI3 EDS-Token (z.B. 805) definieren, der das Ende eines TLP-Datenstroms und den Übergang zu SMI3-Flit-Sendungen anzeigt. Ein SMI3 EDS (z.B. 805) kann durch Codieren eines Teils der reservierten Bits des traditionellen EDS-Tokens definiert werden, um anzuzeigen, dass SMI3-Daten folgen werden und nicht gereihte PCIe-Sätze oder andere Daten, die einem PCIe EDS folgen. Anders als beim traditionellen EDS-Token kann der SMI3 EDS im Wesentlichen überall in einem PCIe-Datenblock gesendet werden. Dies kann eine zusätzliche Flexibilität beim Senden von SMI3-Daten und Aufnehmen entsprechender gemeinsam benutzter Speichertransaktionen geringer Latenz ermöglichen. Zum Beispiel kann ein Übergang von PCIe zu SMI3 mit einem einzelnen Doppelwort (DW) an Mehraufwand erfolgen. Ferner kann, wie bei traditionellen EDS-Token, ein beispielhaftes SMI3 EDS keine Länge spezifizieren, die mit den SMI3-Daten verknüpft ist, die dem Token folgen sollen. Nach einem SMI3 EDS können PCIe-TLP-Daten enden und SMI3-Flits auf der Verbindung fortfahren. Der SMI3-Verkehr kann fortfahren, bis die SMI3-Logik die Steuerung zur PCIe-Logik zurückstellt. In einigen Implementierungen bewirkt ein Senden eines SMI3 EDS, dass die Steuerung von der PCIe-Logik zur SMI3-Logik geht, die zum Beispiel auf Vorrichtungen vorgesehen ist, die mit der Verbindung verbunden sind.With regard now to 8th An illustration 800 of another example implementation of an SML is presented. In this alternate embodiment, the SML may provide for interleaved SMI3 and PCIe protocols through a modified PCIe framing token. As noted above, an EDS token in PCIe can be used to indicate an end of a data stream and to indicate that the next block will be a queued block set. In the example of 8th the SML can define an SMI3 EDS token (eg 805) that indicates the end of a TLP data stream and the transition to SMI3 flit transmissions. An SMI3 EDS (e.g. 805) can be defined by encoding part of the reserved bits of the traditional EDS token to indicate that SMI3 data will follow and not unqueued PCIe sets or other data following a PCIe EDS. Unlike the traditional EDS token, the SMI3 EDS can be sent essentially anywhere in a PCIe data block. This may allow additional flexibility in sending SMI3 data and ingesting corresponding low latency shared memory transactions. For example, a transition from PCIe to SMI3 can be done with a single double word (DW) of overhead. Furthermore, as with traditional EDS tokens, an example SMI3 EDS may not specify a length associated with the SMI3 data to follow the token. After an SMI3 EDS, PCIe TLP data can end and SMI3 flits can continue on the link. SMI3 traffic can continue until the SMI3 logic returns control to the PCIe logic. In some implementations, sending an SMI3 EDS causes control to pass from PCIe logic to SMI3 logic provided on devices attached to the link, for example.

In einem Beispiel kann SMI3 (oder ein anderes Protokoll) seine eigene Verbindungssteuerungssignalisierung zur Verwendung in der Durchführung einer Verbindungsschichtsteuerung definieren. Zum Beispiel kann in einer Implementierung die SML eine spezialisierte Version eines SMI3-Verbindungsschichtsteuerungs- (LLCTRL) Flits (z.B. 810) definieren, der einen Übergang vom SMI3- zurück zum PCIe-Protokoll anzeigt. Wie beim SMI3 EDS kann der definierte LLCTRL-Flit (z.B. 810) bewirken, dass die Steuerung von der SMI3-Logik zur PCIe-Logik zurückgeht. In einigen Fällen, wie im Beispiel von 8 gezeigt, kann der LLCTRL-Flit (z.B. 810) mit einer vordefinierten Anzahl von LLCTRL-Leerlauf-(LLCTRL-IDLE) Flits (z.B. 815) ausgestattet werden, bevor der Übergang zur PCIe vollendet wird. Zum Beispiel kann die Anzahl von LLCTRL-IDLE Flits 815, die zum Ausstatten des SMI3 LLCTRL-Flits 810 gesendet wird, von der Latenz zum Decodieren des definierten SMI3 LLCTRL-Flits 810, das den Übergang signalisiert, abhängen. Nach Vollendung des Übergangs zurück zur PCIe kann ein STP-Paket gesendet werden und TLP-Paketdaten können wieder auf der Verbindung unter der Steuerung der PCIe beginnen.In one example, SMI3 (or another protocol) may define its own link control signaling for use in performing link layer control. For example, in one implementation, the SML may define a specialized version of an SMI3 link layer control (LLCTRL) flit (eg, 810) that indicates a transition from SMI3 back to PCIe protocol. As with the SMI3 EDS the defined LLCTRL flit (eg, 810) causes control to flow back from the SMI3 logic to the PCIe logic. In some cases, as in the example of 8th As shown, the LLCTRL flit (eg, 810) may be provisioned with a predefined number of LLCTRL idle (LLCTRL-IDLE) flits (eg, 815) before the transition to PCIe is completed. For example, the number of LLCTRL-IDLE flits 815 sent to equip the SMI3 LLCTRL flit 810 may depend on the latency to decode the defined SMI3 LLCTRL flit 810 signaling the transition. After completing the transition back to PCIe, an STP packet can be sent and TLP packet data can begin again on the link under PCIe control.

Es sollte klar sein, dass die hier beschriebenen Implementierungen als Beispiele vorgesehen sind, um gewisse Prinzipien und Merkmale zu zeigen, die in der Patentschrift offenbart sind. Es sollte klar sein, dass alternative Konfigurationen, Protokolle, und Architekturen (neben jenen, die spezifisch in den Beispielen besprochen sind) solche Prinzipien und Merkmale verwenden und anwenden können. Als ein Beispiel für eine Alternative kann ein PCIe-Speicherlese-/-schreibvorgang (z.B. anstelle eines SMI3-Protokolls) verwendet werden, der mit Verzeichnungsinformationen verstärkt ist. Die Verzeichnisinformationen können durch Reserve-Bits des PCIe-Pakets implementiert werden. In einem anderen Beispiel kann der CPU-Knoten eine Cache-Steuerung (z.B. als eine Alternative zu einer gemeinsam benutzten Speichersteuerung) zum Senden von Speicherlese-/-schreibtransaktionen auf einer PCIe-Verbindung verwenden, zum Beispiel auf der Basis einer fernen Adressenbereichsprüfung, unter anderen möglichen Beispielen und Alternativen.It should be understood that the implementations described herein are provided as examples to demonstrate certain principles and features that are disclosed in the specification. It should be understood that alternative configurations, protocols, and architectures (besides those specifically discussed in the examples) may use and apply such principles and features. As an example of an alternative, a PCIe memory read/write (e.g. instead of an SMI3 protocol) augmented with distortion information can be used. The directory information can be implemented by spare bits of the PCIe packet. In another example, the CPU node may use a cache controller (e.g., as an alternative to a shared memory controller) to send memory read/write transactions on a PCIe link, e.g. based on a remote address range check, among others possible examples and alternatives.

In Hinblick nun auf 9A-9D sind Ablaufdiagramme 900a-d dargestellt, die beispielhafte Techniken zur Kommunikation unter Verwendung eines MCPL zeigen. Zum Beispiel kann in 9A eine Last-/Speicher-Speicherzugangsnachricht von einem ersten Knoten empfangen werden 905, wobei die Nachricht bestimmte Daten eines gemeinsam benutzten Speichers anfragt. Ein Zugang zu den bestimmten Daten kann für den ersten Knoten vorgesehen werden 910. Eine zweite Last-/Speicher-Speicherzugangsnachricht kann von einem zweiten unabhängigen Knoten empfangen werden 915. Die zweite Nachricht kann eine Anfrage für einen Zugang zu denselben bestimmten Daten des gemeinsam benutzten Speichers sein und ein Zugang zu den bestimmten Daten kann für den zweiten Knoten vorgesehen werden 920. Daten im gemeinsam benutzten Speicher können somit von mehrfachen verschiedenen unabhängigen Knoten gemeinsam benutzt werden und für diese zugänglich sein.With regard now to 9A-9D Flowcharts 900a-d are shown showing example techniques for communicating using an MCPL. For example, in 9A a load/store memory access message is received 905 from a first node, the message requesting particular shared memory data. Access to the particular data may be provided 910 for the first node. A second load/memory access message may be received from a second independent node 915. The second message may be a request for access to the same particular shared memory data and access to the particular data may be provided 920 for the second node. Data in shared memory may thus be shared and accessible by multiple different independent nodes.

In dem Beispiel von 9B kann eine erste Sync-Kopfzeile (wie eine PCIe-Sync-Kopfzeile) mit einer ersten Codierung empfangen werden 925. Die Codierung kann einen Übergang von einem Zwischenverbindungsprotokoll zu einem Speicherzugangsprotokoll anzeigen und der Übergang kann aus der ersten Sync-Kopfzeile identifiziert werden 930. Daten des Speicherzugangsprotokolls können nach der ersten Sync-Kopfzeile empfangen werden und die Daten können verarbeitet werden 935 (z.B. in Übereinstimmung mit dem Speicherzugangsprotokoll). In einigen Beispielen können die Speicherzugangsprotokolldaten Transaktionen enthalten, die einen gemeinsam benutzten Speicher beinhalten, der von mehreren mehrfacher unabhängigen Knoten gemeinsam benutzt wird. Eine zweite Sync-Kopfzeile kann empfangen werden 940, die eine zweite, andere Codierung enthält, die einen Übergang vom Zwischenverbindungsprotokoll anzeigt. Der Übergang vom Speicherzugangsprotokoll zurück zum Zwischenverbindungsprotokoll kann aus der zweiten Sync-Kopfzeile identifiziert werden 945.In the example of 9B a first sync header (such as a PCIe sync header) with a first encoding may be received 925. The encoding may indicate a transition from an interconnect protocol to a memory access protocol and the transition may be identified from the first sync header 930. Data of the memory access protocol may be received after the first sync header and the data may be processed 935 (eg, in accordance with the memory access protocol). In some examples, the memory access log data may include transactions involving shared memory shared by multiple independent nodes. A second sync header may be received 940 containing a second, different encoding indicating a transition from the interconnect protocol. The transition from memory access protocol back to interconnect protocol can be identified from the second sync header 945.

In Hinblick nun auf 9C kann in einigen Fällen ein erster Datenstart-Token (z.B. ein PCIe STP-Token) empfangen werden 950, der einen oder mehrere Werte enthält, die zum Identifizieren eines Übergangs von einem Zwischenverbindungsprotokoll zu einem Speicherzugangsprotokoll codiert sind. Daten des Speicherzugangsprotokolls können nach dem ersten Datenstart-Token eintreffen und können identifiziert werden 955. Die Daten des Speicherzugangsprotokolls können verarbeitet werden 960. Ein Längenfeld kann im ersten Datenstart-Token enthalten sein, das anzeigt, wann Daten zu Zwischenverbindungsprotokolldaten zurückgehen. Tatsächlich kann in einigen Implementierungen das Längenfeld eines Datenstart-Tokens codiert sein, um eine Länge anzuzeigen, die den Daten des Speicherzugangsprotokolls entspricht. Ferner kann ein zweiter, anderer Datenstart-Framing-Token definiert sein, der so zu interpretieren ist, dass er einem Eintreffen von Daten des Zwischenverbindungsprotokolls entspricht. Jeder von dem ersten und zweiten Datenstart-Framing-Token kann nach dem Zwischenverbindungsprotokoll (z.B. PCIe), neben anderen Beispielen, definiert sein.With regard now to 9C In some cases, a first data start token (eg, a PCIe STP token) may be received 950 that includes one or more values encoded to identify a transition from an interconnect protocol to a memory access protocol. Memory access protocol data may arrive after the first data start token and may be identified 955. The memory access protocol data may be processed 960. A length field may be included in the first data start token that indicates when data returns to interconnect protocol data. Indeed, in some implementations, the length field of a data start token may be encoded to indicate a length corresponding to memory access protocol data. A second, different data start framing token may also be defined to be interpreted as corresponding to an arrival of interconnect protocol data. Each of the first and second data start framing tokens may be defined according to the interconnect protocol (eg, PCIe), among other examples.

In dem Beispiel von 9D kann ein Stromende-Token (z.B. ein spezialisierter PCIe EDS-Token) empfangen werden 965, der zum Anzeigen eines Übergangs zu Speicherzugangsprotokolldaten codiert ist. Der empfangene Stromende-Token kann einen Übergang 970 von der Verbindungsschichtlogik zur Verarbeitung von Zwischenverbindungsprotokolldaten zur Verbindungsschichtlogik zur Verarbeitung von Speicherzugangsprotokolldaten veranlassen. Daten des Speicherzugangsprotokolls können empfangen werden 975 und unter Verwendung der Verbindungsschichtlogik des Speicherzugangsprotokolls verarbeitet werden. Verbindungsschichtsteuerungsdaten des Speicherzugangsprotokolls können empfangen werden 980 (z.B. am Ende der Daten des Speicherzugangsprotokolls), um einen Übergang zu Daten des Zwischenverbindungsprotokolls anzuzeigen. Ein Empfang 980 der Verbindungsschichtsteuerungsdaten kann einen Übergang 985 von der Verbindungsschichtlogik des Speicherzugangsprotokolls zur Verbindungsschichtlogik des Zwischenverbindungsprotokolls veranlassen. Daten des Zwischenverbindungsprotokolls können nach den Verbindungsschichtsteuerungsdaten empfangen werden und können von der Verbindungsschichtlogik des Zwischenverbindungsprotokolls nach dem Übergang 985, neben anderen Beispielen, verarbeitet werden.In the example of 9D an end-of-stream token (eg, a specialized PCIe EDS token) may be received 965 encoded to indicate a transition to memory access protocol data. The received end-of-stream token may cause a transition 970 from link-layer logic for processing interconnect protocol data to link-layer logic for processing memory access protocol data. Memory access protocol data may be received 975 and stored using the memory's link layer logic be processed. Memory access protocol link layer control data may be received 980 (eg, at the end of the memory access protocol data) to indicate a transition to interconnect protocol data. Reception 980 of the link layer control data may cause a transition 985 from the link layer logic of the memory access protocol to the link layer logic of the interconnect protocol. Interconnect protocol data may be received after the link layer control data and may be processed by the interconnect protocol link layer logic after transition 985, among other examples.

Es sollte festgehalten werden, dass, obwohl ein Großteil der Prinzipien und Beispiele im Zusammenhang mit PCIe und insbesondere Überarbeitungen der PCIe-Spezifikation beschrieben sind, die hier beschriebenen Prinzipien, Lösungen und Merkmale gleichermaßen bei anderen Protokollen und Systemen anwendbar sein können. Zum Beispiel können analoge Spurfehler in anderen Verbindungen, die andere Protokolle verwenden, auf der Basis analoger Symbole, Datenströme und Token, wie auch Regeln, die für die Verwendung, Anordnung und Formatierung solcher Strukturen innerhalb von Daten spezifiziert sind, die über dies anderen Verbindungen gesendet werden, erfasst werden. Ferner können alternative Mechanismen und Strukturen (z.B. neben einem PCIe LES Register oder SKP OS) zum Vorsehen einer Spurfehlererfassung und Meldefunktionalität in einem System verwendet werden. Ferner können Kombinationen der obengenannten Lösungen in Systemen angewendet werden, einschließlich, neben anderen Beispielen, Kombinationen logischer und physischer Verstärkungen an einer Verbindung und ihrer entsprechenden Logik wie hier beschrieben.It should be noted that although much of the principles and examples are described in the context of PCIe and particularly revisions to the PCIe specification, the principles, solutions and features described herein may be equally applicable to other protocols and systems. For example, analog tracking errors in other links using other protocols may be based on analog symbols, data streams, and tokens, as well as rules specified for the use, arrangement, and formatting of such structures within data sent over those other links become, be recorded. Furthermore, alternative mechanisms and structures (e.g., in addition to a PCIe LES register or SKP OS) for providing track error detection and reporting functionality in a system may be used. Furthermore, combinations of the above solutions may be applied in systems including, among other examples, combinations of logical and physical reinforcements on a link and its corresponding logic as described herein.

Es ist zu beachten, dass die oben beschriebenen Apparate, Verfahren und Systeme in jeder elektronischen Vorrichtung oder jedem System, wie oben erwähnt, implementiert sein können. Als spezielle Veranschaulichung sehen die folgenden Figuren beispielhafte Systeme zur Nutzung der Erfindung, wie hier beschrieben, vor. Da die folgenden Systeme ausführlicher beschrieben sind, ist eine Anzahl von verschiedenen Zwischenverbindungen offenbart, beschrieben und aus der vorangehenden Besprechung wieder erwähnt. Und es ist sofort offensichtlich, dass die oben beschriebenen Weiterentwicklungen bei jeder dieser Zwischenverbindungen, Matrizen oder Architekturen angewendet werden können.It should be noted that the apparatus, methods and systems described above may be implemented in any electronic device or system as mentioned above. As a specific illustration, the following figures provide example systems for utilizing the invention as described herein. As the following systems are described in more detail, a number of different interconnects are disclosed, described, and recalled from the previous discussion. And it is immediately apparent that the advancements described above can be applied to any of these interconnects, matrices or architectures.

Unter Bezugnahme auf 10 ist eine Ausführungsform eines Blockdiagramms für ein Rechnersystem, das einen Mehrfachkern-Prozessor enthält, dargestellt. Der Prozessor 1000 enthält einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen in der Hand gehaltenen Prozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung zur Ausführung eines Codes. Der Prozessor 1000 enthält in einer Ausführungsform zumindest zwei Kerne - Kern 1001 und 1002, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) enthalten können. Der Prozessor 1000 kann jedoch eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.With reference to 10 Illustrated is one embodiment of a block diagram for a computing system including a multi-core processor. Processor 1000 includes any processor or processing device such as a microprocessor, an embedded processor, a digital signal processor (DSP), a network processor, a handheld processor, an application processor, a co-processor, a system on a chip ( SOC) or other device for executing code. Processor 1000, in one embodiment, includes at least two cores - cores 1001 and 1002, which may include asymmetric cores or symmetric cores (the illustrated embodiment). However, processor 1000 may include any number of processing elements, which may be symmetric or asymmetric.

In einer Ausführungsform bezieht sich ein Verarbeitungselement auf eine Hardware oder Logik zur Unterstützung eines Software-Thread. Beispiele von Hardware-Verarbeitungselementen enthalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder jedes andere Element, das imstande ist, einen Zustand für einen Prozessor zu halten, wie einen Ausführungszustand oder architektonischen Zustand. Mit anderen Worten, ein Verarbeitungselement bezieht sich in einer Ausführungsform auf jede Hardware, die imstande ist, unabhängig mit einem Code, wie einem Software-Thread, Betriebssystem, einer Anwendung oder einem anderen Code verknüpft zu werden. Ein physischer Prozessor (oder eine Prozessorbuchse) bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl anderer Verarbeitungselemente, wie Kerne oder Hardware-Threads, enthält.In one embodiment, a processing element refers to hardware or logic to support a software thread. Examples of hardware processing elements include: a thread unit, a thread slot, a thread, a process unit, a context, a context unit, a logical processor, a hardware thread, a core, and/or any other element capable to hold state for a processor, such as execution state or architectural state. In other words, a processing element, in one embodiment, refers to any hardware capable of being independently interfaced with code, such as a software thread, operating system, application, or other code. A physical processor (or processor socket) typically refers to an integrated circuit that may contain any number of other processing elements, such as cores or hardware threads.

Ein Kern bezieht sich häufig auf eine Logik, die sich auf einer integrierten Schaltung befindet, die imstande ist einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene architektonische Zustand mit zumindest einigen zweckbestimmten Ausführungsressourcen verknüpft ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf jede Logik, die sich auf einer integrierten Schaltung befindet, die imstande ist einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen architektonischen Zustände gemeinsam einen Zugang zu Ausführungsressourcen benutzen. Wie erkennbar ist, wenn gewisse Ressourcen gemeinsam benutzt werden und andere einem architektonischen Zustand gewidmet sind, überlappt die Linie zwischen der Nomenklatur eines Hardware-Thread und Kerns. Dennoch werden häufig ein Kern und ein Hardware-Thread von einem Betriebssystem als einzelne logische Prozessoren angesehen, wo das Betriebssystem imstande ist, einen Betrieb auf jedem logischen Prozessor individuell zu planen.A core often refers to logic residing on an integrated circuit capable of maintaining an independent architectural state, with each independently maintained architectural state being associated with at least some dedicated execution resources. In contrast to cores, a hardware thread typically refers to any logic residing on an integrated circuit capable of maintaining an independent architectural state, where the independently maintained architectural states share access to execution resources. As can be seen, when certain resources are shared and others are dedicated to an architectural state, the line between hardware thread and core nomenclature overlaps. However, a core and a hardware thread are often used by an operating system as separate logi logical processors where the operating system is able to schedule operation on each logical processor individually.

Der physische Prozessor 1000, wie in 10 dargestellt, enthält zwei Kerne - Kern 1001 und 1002. Hier werden Kern 1001 und 1002 als symmetrische Kerne angesehen, d.h., Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform enthält der Kern 1001 einen Out-of-Order-Prozessorkern, während der Kern 1002 einen In-Order-Prozessorkern enthält. Die Kerne 1001 und 1002 können jedoch einzeln aus jeder Art von Kern gewählt werden, wie einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der dazu angepasst ist, eine native Befehlssatzarchitektur (Instruction Set Architecture, ISA) auszuführen, einem Kern, der dazu ausgebildet ist, eine übersetzte Befehlssatzarchitektur (ISA) auszuführen, einem co-gestalteten Kern oder einem anderen bekannten Kern. In einer heterogenen Kernumgebung (d.h., asymmetrische Kerne) kann eine gewisse Form von Übersetzung, wie eine binäre Übersetzung, zum Planen oder Ausführen eines Codes auf einem Kern oder beiden Kernen verwendet werden. Für eine nähere Besprechung sind die in Kern 1001 dargestellten Funktionseinheiten in der Folge ausführlich beschrieben, da die Einheiten im Kern 1002 auf ähnliche Weise in der dargestellten Ausführungsform arbeiten.The physical processor 1000, as in 10 1, contains two cores - core 1001 and 1002. Here, core 1001 and 1002 are considered symmetric cores, ie, cores with the same configurations, functional units, and/or logic. In another embodiment, core 1001 includes an out-of-order processor core, while core 1002 includes an in-order processor core. However, the cores 1001 and 1002 can be individually selected from any type of core, such as a native core, a software managed core, a core adapted to execute a native instruction set architecture (ISA), a core adapted to do so configured to execute a translated instruction set architecture (ISA), a co-designed kernel, or another known kernel. In a heterogeneous core environment (ie, asymmetric cores), some form of translation, such as binary translation, may be used to schedule or execute code on one or both cores. For further discussion, the functional units represented in core 1001 are described in detail below, since the units in core 1002 operate in a similar manner in the illustrated embodiment.

Wie dargestellt, enthält der Kern 1001 zwei Hardware-Threads 1001a und 1001b, die auch als Hardware-Thread-Slots 1001a und 1001b bezeichnet werden können. Daher sehen Software-Einheiten, wie ein Betriebssystem, in einer Ausführungsform möglicherweise den Prozessor 1000 als vier separate Prozessoren, d.h., vier logische Prozessoren oder Verarbeitungselemente, die imstande sind, gleichzeitig vier Software-Threads auszuführen. Wie oben angedeutet, ist ein erster Thread mit Architekturzustandsregistern 1001a verknüpft, ein zweiter Thread ist mit Architekturzustandsregistern 1001b verknüpft, ein dritter Thread kann mit Architekturzustandsregistern 1002a verknüpft sein und ein vierter Thread kann mit Architekturzustandsregistern 1002b verknüpft sein. Hier kann jedes der Architekturzustandsregister (1001a, 1001b, 1002a, und 1002b) als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet werden, wie oben beschrieben. Wie dargestellt, sind die Architekturzustandsregister 1001 a in Architekturzustandsregistern 1001b repliziert, so dass einzelne Architekturzustände/Kontexte für den logischen Prozessor 1001a und logischen Prozessor 1001b gespeichert werden können. Im Kern 1001 können auch kleinere Ressourcen, wie Befehlspointer und Renaming-Logik im Allocator- und Renamer-Block 1030 ebene für die Threads 1001a und 1001b repliziert sein. Einige Ressourcen, wie Rückordnungspuffer in der Rückordnungs-/Retirement-Einheit 1035, ILTB 1020, Last-/Speicher- Puffer und Warteschlangen können durch Trennung gemeinsam benutzt werden. Andere Ressourcen, wie interne Allzweckregister, Seiten-Tabelle-Basisregister, Daten-Cache auf niedriger Ebene und Daten-TLB 1015, Ausführungseinheit(en) 1040 und Teile einer Out-of-Order-Einheit 1035 werden möglicherweise zur Gänze gemeinsam benutzt.As illustrated, core 1001 includes two hardware threads 1001a and 1001b, which may also be referred to as hardware thread slots 1001a and 1001b. Therefore, in one embodiment, software entities, such as an operating system, may view processor 1000 as four separate processors, i.e., four logical processors or processing elements capable of executing four software threads concurrently. As indicated above, a first thread is associated with architecture state registers 1001a, a second thread is associated with architecture state registers 1001b, a third thread may be associated with architecture state registers 1002a, and a fourth thread may be associated with architecture state registers 1002b. Here, each of the architecture state registers (1001a, 1001b, 1002a, and 1002b) may be referred to as processing elements, thread slots, or thread units, as described above. As shown, architecture state registers 1001a are replicated in architecture state registers 1001b so that individual architecture states/contexts can be stored for logical processor 1001a and logical processor 1001b. Smaller resources such as instruction pointers and renaming logic in the allocator and renamer block 1030 level for the threads 1001a and 1001b can also be replicated in the core 1001. Some resources such as retirement buffers in retirement/retirement unit 1035, ILTB 1020, load/store buffers, and queues can be shared through separation. Other resources such as internal general purpose registers, page table base registers, low level data cache and data TLB 1015, execution unit(s) 1040, and portions of an out-of-order unit 1035 may be shared entirely.

Der Prozessor 1000 enthält häufig andere Ressourcen, die zur Gänze gemeinsam benutzt werden können, durch Trennung gemeinsam benutzt werden können oder durch/für Verarbeitungselemente zweckbestimmt sind. In 10 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten enthalten oder auf diese verzichten kann, wie auch sämtliche andere bekannte Funktionseinheiten, Logik oder Firmware, nicht dargestellt, enthalten kann. Wie dargestellt, enthält der Kern 1001 einen vereinfachten, repräsentativen Out-of-Order-Prozessorkern (OOO). Es kann aber auch in verschiedenen Ausführungsformen ein In-Order-Prozessor verwendet werden. Der OOO-Kern enthält einen Abzweigungszielpuffer 1020 zur Vorhersage von Abzweigungen, die ausgeführt/genommen werden sollen, und einen Befehlsübersetzungspuffer (I-TLB) 1020 zum Speichern von Adressenübersetzungseinträgen für Befehle.Processor 1000 often includes other resources that may be shared entirely, shared through separation, or dedicated by/to processing elements. In 10 1 is an embodiment of a purely exemplary processor with illustrative logical units/resources of a processor. It should be noted that a processor may or may not include any of these functional units, as well as any other known functional units, logic, or firmware, not shown. As shown, core 1001 includes a simplified representative out-of-order (OOO) processor core. However, an in-order processor can also be used in various embodiments. The OOO core includes a branch target buffer 1020 for predicting branches to be taken/taken and an instruction translation buffer (I-TLB) 1020 for storing address translation entries for instructions.

Der Kern 1001 enthält ferner ein Decodiermodul 1025, das an eine Abrufeinheit 1020 zum Decodieren abgerufener Elemente gekoppelt ist. Eine Abruflogik enthält in einer Ausführungsform einzelne Sequenzierer, die mit dem Thread-Slot 1001a bzw. 1001b verknüpft sind. Üblicherweise ist der Kern 1001 mit einer ersten ISA verknüpft, die Befehle definiert/spezifiziert, die auf dem Prozessor 1000 ausführbar sind. Andere Maschinencode-Befehle, die Teil der ersten ISA sind, enthalten einen Teil des Befehls (als Opcode bezeichnet), der einen auszuführenden Befehl oder eine auszuführende Operation angibt/spezifiziert. Die Decodierlogik 1025 enthält einen Schaltkreis, der diese Befehle aus ihren Opcodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung weiterleitet, wie von der ersten ISA definiert. Wie zum Beispiel in der Folge ausführlicher besprochen ist, enthalten die Decodierer 1025 in einer Ausführungsform eine Logik, die zum Erkennen spezieller Befehle gestaltet oder angepasst ist, wie eines Transaktionsbefehls. Infolge des Erkennens seitens der Decodierer 1025 ergreift die Architektur oder der Kern 1001 spezielle, vordefinierte Maßnahmen zur Durchführung von Aufgaben, die mit dem passenden Befehl verknüpft sind. Es muss festgehalten werden, dass sämtliche hier beschriebene Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf einen einfachen oder mehrfachen Befehl durchgeführt werden können; von welchen einige neue oder alte Befehle sein können. Es ist zu beachten, dass in einer Ausführungsform die Decodierer 1026 dieselbe ISA (oder einen Teilsatz davon) erkennen. Alternativ erkennen die Decodierer 1026 in einer heterogenen Kernumgebung eine zweite ISA (entweder einen Teilsatz der ersten ISA oder eine andere ISA).The core 1001 further includes a decode module 1025 coupled to a fetch unit 1020 for decoding fetched items. In one embodiment, fetch logic includes individual sequencers associated with thread slots 1001a and 1001b, respectively. Typically, core 1001 is associated with a first ISA that defines/specifies instructions executable on processor 1000 . Other machine code instructions that are part of the first ISA contain a portion of the instruction (referred to as an opcode) that indicates/specifies an instruction or operation to be performed. The decode logic 1025 includes circuitry that recognizes these instructions from their opcodes and passes the decoded instructions down the pipeline for processing as defined by the first ISA. For example, as discussed in more detail below, in one embodiment, decoders 1025 include logic designed or adapted to recognize specific instructions, such as a transaction instruction. Upon detection by decoders 1025, architecture or core 1001 takes specific, predefined actions to perform tasks associated with the appropriate instruction. It must be noted that all tasks, blocks, operations and methods can be performed in response to a single or multiple command; some of which may be new or old commands. Note that in one embodiment, decoders 1026 recognize the same ISA (or a subset thereof). Alternatively, in a heterogeneous core environment, the decoders 1026 recognize a second ISA (either a subset of the first ISA or a different ISA).

In einem Beispiel enthält der Allocator- und Renamer-Block 1030 einen Allocator zum Reservieren von Ressourcen, wie Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 1001a und 1001b sind jedoch möglicherweise zur einer Out-of-Order-Ausführung imstande, wo der Allocator- und Renamer-Block 1030 auch andere Ressourcen reserviert, wie Rückordnungspuffer zum Verfolgen von Befehlsergebnissen. Die Einheit 1030 kann auch einen Register-Renamer zum Umbenennen von Programm-/Befehlsreferenzregistern in andere Register im Prozessor 1000 enthalten. Die Rückordnungs-/Retirement-Einheit 1035 enthält Komponenten, wie die obengenannten Rückordnungspuffer, Lastpuffer und Speicherpuffer, zur Unterstützung einer Out-of-Order-Ausführung und einer späteren In-Order-Verzögerung von Befehlen, die in einer anderen Reihenfolge ausgeführt werden.In one example, allocator and renamer block 1030 includes an allocator for reserving resources, such as register files for storing instruction processing results. However, threads 1001a and 1001b may be capable of out-of-order execution where allocator and renamer block 1030 also reserves other resources, such as retirement buffers for tracking instruction results. Unit 1030 may also include a register renamer for renaming program/instruction reference registers to other registers in processor 1000. Retirement/retirement unit 1035 includes components such as the aforementioned retirement buffers, load buffers, and store buffers to support out-of-order execution and later in-order deferral of instructions that are executed out of order.

Der Planer- und Ausführungseinheit(en)-Block 1040 enthält in einer Ausführungsform eine Planungseinheit zum Planen von Befehlen/Operationen auf Ausführungseinheiten. Zum Beispiel wird ein Fließkommabefehl an einem Port einer Ausführungseinheit geplant, die eine verfügbare Fließpunktausführungseinheit hat. Registerdateien, die mit den Ausführungseinheiten verknüpft sind, sind ebenso zum Speichern von Informationen von Befehlsverarbeitungsergebnissen enthalten. Beispielhafte Ausführungseinheitenenthalten eine Fließkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Lastausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.The scheduler and execution unit(s) block 1040 includes, in one embodiment, a scheduler for scheduling instructions/operations onto execution units. For example, a floating point instruction is scheduled on a port of an execution unit that has an available floating point execution unit. Register files associated with the execution units are also included for storing information of instruction processing results. Exemplary execution units include a floating point execution unit, an integer execution unit, a branch execution unit, a load execution unit, a store execution unit, and other known execution units.

Ein Daten-Cache auf niederer Ebene und ein Datenübersetzungspuffer (D-TLB) 1050 sind an (eine) Ausführungseinheit(en) 1040 gekoppelt. Der Daten-Cache dient zum Speichern kürzlich verwendeter/bearbeiteter Elemente, wie Datenoperanden, die möglicherweise in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern kürzlich durchgeführter virtueller/linearer zu physischen Adressenübersetzungen. Als ein spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um einen physischen Speicher in mehrere virtuelle Seiten aufzubrechen.A low level data cache and a data translation buffer (D-TLB) 1050 are coupled to execution unit(s) 1040 . The data cache is used to store recently used/edited items, such as data operands, that may be held in memory coherency states. The D-TLB is used to store recent virtual/linear to physical address translations. As a specific example, a processor may include a page table structure to break up physical memory into multiple virtual pages.

Hier benutzen die Kerne 1001 und 1002 gemeinsam einen Zugang zu einem Cache höherer Ebene oder einem weiter außenliegenden Cache, wie einen Cache zweiter Ebene, der mit einer On-chip-Schnittstelle 1010 verknüpft ist. Es ist zu beachten, dass „höhere Ebene“ oder „weiter außenliegend“ sich auf Cache-Ebenen bezieht, die steigen oder weiter weg von der (den) Ausführungseinheit(en) kommen. In einer Ausführungsform ist ein Cache höherer Ebene ein Daten-Cache letzter Ebene - der letzte Cache in der Speicherhierarchie auf dem Prozessor 1000 - wie ein Daten-Cache zweiter oder dritter Ebene. Ein Cache höherer Ebene ist jedoch nicht darauf beschränkt, da er mit einem Befehls-Cache verknüpft sein oder diesen enthalten kann. Ein Trace-Cache - eine Art von Befehls-Cache - kann stattdessen nach dem Decodierer 1025 gekoppelt sein, um kürzlich decodierte Verfolgungen zu speichern. Hier bezieht sich ein Befehl möglicherweise auf einen Makrobefehl (d.h., einen allgemeinen Befehl, der von den Decodierern erkannt wird), der in einer Anzahl von Mikrobefehlen (Mikrooperationen) decodiert werden kann.Here the cores 1001 and 1002 share access to a higher level cache or a more external cache such as a second level cache associated with an on-chip interface 1010 . Note that "higher level" or "further out" refers to cache levels that are rising or further away from the execution unit(s). In one embodiment, a higher level cache is a last level data cache - the last cache in the memory hierarchy on processor 1000 - such as a second or third level data cache. However, a higher level cache is not so limited as it may be associated with or contain an instruction cache. A trace cache - a type of instruction cache - may instead be coupled after decoder 1025 to store recently decoded traces. Here, an instruction may refer to a macroinstruction (i.e., a generic instruction recognized by the decoders) that can be decoded into a number of microinstructions (microoperations).

In der dargestellten Konfiguration enthält der Prozessor 1000 auch ein On-Chip-Schnittstellenmodul 1010. Früher war eine Speichersteuerung, die in der Folge ausführlicher beschrieben ist, in einem Rechnersystem extern zum Prozessor 1000 enthalten. In diesem Szenario soll eine On-Chip-Schnittstelle 1010 mit Vorrichtungen extern zum Prozessor 1000 kommunizieren, wie dem Systemspeicher 1075, einem Chipsatz (der häufig einen Memory Controller-Hub zur Verbindung mit einem Speicher 1075 und einen I/O Controller-Hub zur Verbindung mit peripheren Vorrichtungen enthält), einem Memory Controller-Hub, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 1005 jede bekannte Zwischenverbindung, wie einen Multi-Drop-Bus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z.B. Cache-kohärenten) Bus, eine schichtenförmige Protokollarchitektur, einen Differential-Bus und einen GTL-Bus enthalten.In the illustrated configuration, processor 1000 also includes an on-chip interface module 1010. Historically, a memory controller, described in more detail below, was included external to processor 1000 in a computing system. In this scenario, an on-chip interface 1010 is intended to communicate with devices external to the processor 1000, such as the system memory 1075, a chipset (which often includes a memory controller hub for connecting to a memory 1075, and an I/O controller hub for connecting with peripheral devices), a memory controller hub, a northbridge, or other integrated circuit. And in this scenario, bus 1005 can be any known interconnect, such as a multi-drop bus, a point-to-point interconnect, a serial interconnect, a parallel bus, a coherent (e.g., cache-coherent) bus, a layered protocol architecture , a differential bus and a GTL bus.

Der Speicher 1075 kann dem Prozessor 1000 gewidmet sein oder von anderen Vorrichtungen in einem System gemeinsam benutzt werden. Allgemeine Beispiele für Arten von Speicher 1075 enthalten DRAM, SRAM, nicht flüchtigen Speicher (NV Speicher) und andere bekannte Speichervorrichtungen. Es ist zu beachten, dass die Vorrichtung 1080 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, die an einen Memory Controller-Hub gekoppelt ist, einen Datenspeicher, der an einen I/O Controller-Hub gekoppelt ist, einen drahtlosen Sender/Empfänger, eine Flash-Vorrichtung, eine Audio-Steuerung, eine Netzwerksteuerung oder eine andere bekannte Vorrichtung enthalten kann.Memory 1075 may be dedicated to processor 1000 or shared by other devices in a system. Common examples of types of memory 1075 include DRAM, SRAM, non-volatile memory (NV memory), and other known memory devices. Note that device 1080 may include a graphics accelerator, a processor or card coupled to a memory controller hub, a memory coupled to an I/O controller hub, a wireless transceiver, a Flash device, audio controller, network controller, or other known device.

Da jedoch kürzlich immer mehr Logik und Vorrichtungen auf einem einzigen Die, wie SOC, integriert werden, kann jede dieser Vorrichtungen auf dem Prozessor 1000 enthalten sein. Zum Beispiel ist in einer Ausführungsform ein Memory Controller-Hub auf demselben Package und/oder Die wie der Prozessor 1000. Hier enthält ein Teil des Kerns (ein Teil auf dem Kern) 1010 eine oder mehrere Steuerung(en) zur Schnittstellenbildung mit anderen Vorrichtungen wie dem Speicher 1075 oder einer Grafikvorrichtung 1080. Die Konfiguration, die eine Zwischenverbindung und Steuerungen zur Schnittstellenbildung mit solchen Vorrichtungen enthält, wird häufig als „auf dem Kern“ (oder UnCore-Konfiguration) bezeichnet. Als ein Beispiel enthält eine On-Chip-Schnittstelle 1010 eine Ringzwischenverbindung für eine On-Chip-Kommunikation und eine Hochgeschwindigkeits-, serielle, Punkt-zu-Punkt-Verbindung 1005 für eine Off-Chip-Kommunikation. Dennoch können in der SOC-Umgebung noch mehr Vorrichtungen, wie die Netzwerkschnittstelle, die Co-Prozessoren, der Speicher 1075, der Grafikprozessor 1080 und sämtliche anderen bekannten Computervorrichtungen/Schnittstellen auf einem einzelnen Die oder einer einzelnen integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Stromverbrauch vorzusehen.However, as more and more logic and devices are recently integrated onto a single die, such as SOC, any of these devices may be included on processor 1000. For example, in one embodiment, a memory controller hub is on the same package and/or die as processor 1000. Here, part of core (part on core) 1010 contains one or more controllers for interfacing with other devices such as memory 1075 or a graphics device 1080. The configuration that includes interconnect and controls for interfacing with such devices is often referred to as an "on-core" (or UnCore) configuration. As an example, an on-chip interface 1010 includes a ring interconnect for on-chip communication and a high-speed, serial, point-to-point link 1005 for off-chip communication. However, in the SOC environment, even more devices such as the network interface, co-processors, memory 1075, graphics processor 1080 and any other known computing devices/interfaces can be integrated on a single die or integrated circuit to a small form factor with high functionality and low power consumption.

In einer Ausführungsform ist der Prozessor 1000 imstande, einen Compiler, eine Optimierung und/oder einen Übersetzercode 1077 auszuführen, um einen Anwendungscode 1076 zu kompilieren, zu übersetzen und/oder zu optimieren, um den hier beschriebenen Apparat und das hier beschriebene Verfahren oder die Schnittstelle mit diesem zu unterstützen. Ein Compiler enthält häufig ein Programm oder einen Satz von Programmen zum Übersetzen von Quelltext/-code in einen Zieltext/-code. Üblicherweise erfolgt ein Kompilieren eines Programm-/Anwendungscodes mit einem Compiler in mehrfachen Phasen und läuft zur Umwandlung eines Programmiersprachencodes hoher Ebene in einen Maschinen- Assembly-Sprachcode niederer Ebene. Einzeldurchgang-Compiler können jedoch noch immer für ein einfaches Kompilieren verwendet werden. Ein Compiler kann sämtliche bekannte Kompiliertechiken verwenden und sämtliche bekannte Compiler-Operationen ausführen, wie lexikalische Analyse, Vorverarbeitung, Syntaxanalyse, semantische Analyse, Codegenerierung, Codeumformung und Codeoptimierung.In one embodiment, processor 1000 is capable of executing compiler, optimizer, and/or translator code 1077 to compile, translate, and/or optimize application code 1076 to implement the apparatus, method, or interface described herein to support with this. A compiler often contains a program or a set of programs for translating source text/code into target text/code. Typically, compiling program/application code with a compiler occurs in multiple phases and proceeds to convert high-level programming language code to low-level machine assembly language code. However, single-pass compilers can still be used for simple compiling. A compiler can use any known compilation technique and perform any known compiler operation, such as lexical analysis, preprocessing, parsing, semantic analysis, code generation, code transformation, and code optimization.

Größere Compiler enthalten häufig mehrfache Phasen, aber besonders häufig sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Front-End, d.h., wo im Allgemeinen eine syntaktische Verarbeitung, semantische Verarbeitung und eine gewisse Umwandlung/Optimierung stattfinden kann, und (2) einem Back-End, d.h., wo im Allgemeinen eine Analyse, Umformungen, Optimierungen und Codegenerierung stattfinden. Einige Compiler beziehen sich auf eine Mitte, die das Verschwimmen einer Abgrenzung zwischen einem Front-End und Back-End eines Compilers veranschaulicht. Infolgedessen kann eine Bezugnahme auf ein Einsetzen, Verknüpfen, Generieren oder einen anderen Betrieb eines Compilers in jeder der obengenannten Phasen oder jedem der Durchläufen stattfinden, wie auch in sämtlichen anderen bekannten Phasen oder Durchläufen eines Compilers. Als ein veranschaulichendes Beispiel setzt ein Compiler möglicherweise Operationen, Anrufe, Funktionen usw. in einer oder mehreren Phasen des Kompilierens ein, wie ein Einsetzen von Anrufen/Operationen in einer Front-EndPhase des Kompilierens und ein anschließendes Umformen der Anrufe/Operationen in einen Code tieferer Ebene während einer Umformungsphase. Es ist zu beachten, dass während des dynamischen Kompilierens der Compilercode oder dynamische Optimierungscode solche Operationen/Anrufe einsetzen kann, wie auch den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezielles veranschaulichendes Beispiel kann der binäre Code (bereits kompilierte Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den binären Code oder eine Kombination davon enthalten.Larger compilers often contain multiple phases, but most often these phases are contained in two general phases: (1) a front-end, i.e. where syntactic processing, semantic processing and some conversion/optimization can generally take place, and (2 ) a back-end, i.e. where analysis, transformations, optimizations and code generation generally take place. Some compilers refer to a middle, which illustrates the blurring of a boundary between a compiler's front end and back end. As a result, reference to deploying, linking, generating, or other operation of a compiler may occur in any of the above phases or passes, as well as any other known phases or passes of a compiler. As an illustrative example, a compiler may insert operations, calls, functions, etc. in one or more phases of compilation, such as inserting calls/operations in a front-end phase of compilation and then recasting the calls/operations into code lower down plane during a reshaping phase. It should be noted that during dynamic compiling the compiler code or dynamic optimization code may employ such operations/calls as well as optimize the code for execution at runtime. As a specific illustrative example, the binary code (code already compiled) can be dynamically optimized at runtime. Here, the program code may include the dynamic optimization code, the binary code, or a combination thereof.

Ähnlich einem Compiler übersetzt ein Übersetzer, wie ein binärer Übersetzer, den Code entweder statisch oder dynamisch, um den Code zu optimieren und/oder zu übersetzen. Daher kann sich ein Verweis auf eine Ausführung eines Codes, eines Anwendungscodes, eines Programmcodes oder einer anderen Software-Umgebung auf folgendes beziehen: (1) Ausführung eines oder mehrerer Compilerprogramme, Optimierungscode-Optimierer oder Übersetzer, entweder dynamisch oder statisch, um den Programcode zu kompilieren, um die Software-Strukturen aufrechtzuerhalten, um andere Operationen auszuführen, um den Code zu optimieren oder den Code zu übersetzen; (2) Ausführung eines Hauptprogrammcodes, der Operationen/Anrufe enthält, wie eines Anwendungscodes der optimiert/kompiliert wurde; (3) Ausführung eines anderen Programmcodes, wie Bibliotheken, der mit dem Hauptprogrammcode verknüpft ist, um Software-Strukturen aufrechtzuerhalten, andere software-bezogene Operationen auszuführen oder den Code zu optimieren; oder (4) eine Kombination davon.Similar to a compiler, a translator, like a binary translator, translates the code either statically or dynamically to optimize and/or translate the code. Therefore, a reference to execution of code, application code, program code, or other software environment may refer to: (1) execution of one or more compiler programs, optimization code optimizers, or translators, either dynamically or statically, to translate the program code compile, to maintain the software structures, to perform other operations, to optimize the code or to translate the code; (2) execution of main program code containing operations/calls, such as application code that has been optimized/compiled; (3) executing other program code, such as libraries, linked to the main program code to maintain software structures, perform other software-related operations, or optimize the code; or (4) a combination thereof.

Unter Bezugnahme nun auf 11 ist ein Blockdiagramm einer Ausführungsform eines Mehrfachkern-Prozessors dargestellt. Wie in der Ausführungsform von 11 gezeigt, enthält der Prozessor 1100 mehrfache Domäne. Im Speziellen enthält eine Kerndomäne 1130 mehrere Kerne 1130A-1130N, eine Grafikdomäne 1160 enthält eine oder mehrere Grafikmaschinen mit einer Medienmaschine 1165, und eine Systemagentendomäne 1110.Referring now to 11 Illustrated is a block diagram of one embodiment of a multi-core processor. As in the embodiment of 11 As shown, processor 1100 includes multiple domains. Specifically, a core domain 1130 includes multiple cores 1130A-1130N, a graphics domain 1160 includes one or more graphics engines with a media engine 1165, and a system agent domain 1110.

In verschiedenen Ausführungsformen behandelt die Systemagentendomäne 1110 Leistungssteuerungsereignisse und Leistungsmanagement, so dass einzelne Einheiten von Domänen 1130 und 1160 (z.B. Kerne und/oder Grafikmaschinen) unabhängig steuerbar sind, um angesichts der Aktivität (oder Inaktivität), die in einer bestimmten Einheit auftritt dynamisch in einem passenden Leistungsmodus/auf einer passenden Leistungsebene zu arbeiten (z.B. im Aktiv-, Turbo-, Schlaf-, Winterschlaf-, Tiefschlaf- oder einem anderen Advanced Configuration Power Interface-artigen Zustand). Jede der Domäne 1130 und 1160 kann bei einer anderen Spannung und/oder Leistung arbeiten und ferner arbeiten die einzelnen Einheiten innerhalb der Domäne möglicherweise jeweils bei einer unabhängigen Frequenz und Spannung. Es ist zu beachten, dass, während nur drei Domänen dargestellt sind, ein Verständnis des Umfangs der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und zusätzliche Domäne in anderen Ausführungsformen vorhanden sein können.In various embodiments, system agent domain 1110 handles power control events and power management such that individual entities of domains 1130 and 1160 (e.g., cores and/or graphics engines) are independently controllable to dynamically perform in a given activity (or inactivity) occurring in a particular entity to operate in the appropriate power mode/level (e.g., active, turbo, sleep, hibernate, deep sleep, or other Advanced Configuration Power Interface-like state). Each of the domains 1130 and 1160 may operate at a different voltage and/or power, and further, the individual units within the domain may each operate at an independent frequency and voltage. It should be noted that while only three domains are illustrated, an understanding of the scope of the present invention is not limited in this regard and additional domains may be present in other embodiments.

Wie dargestellt, enthält jeder Kern 1130 ferner Caches tiefer Ebene zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen. Hier sind die verschiedenen Kerne aneinander und an einen gemeinsam benutzten Cache-Speicher gekoppelt, der aus mehreren Einheiten oder Slices eines Cache letzter Ebene (LLC) 1140A-1140N gebildet ist; diese LLCs enthalten häufig eine Speicher- und Cache-Steuerungsfunktionalität und werden von den Kernen, wie auch möglicherweise von der Grafikmaschine gemeinsam benutzt.As illustrated, each core 1130 also includes low-level caches in addition to various execution units and additional processing elements. Here, the various cores are coupled to each other and to a shared cache memory made up of multiple units or slices of last level cache (LLC) 1140A-1140N; these LLCs often contain memory and cache control functionality and are shared between the cores as well as possibly the graphics engine.

Wie erkennbar ist, koppelt eine Ringzwischenverbindung 1150 die Kerne aneinander und sieht eine Zwischenverbindung zwischen der Kerndomäne 1130, der Grafikdomäne 1160 und dem Systemagentenschaltkreis 1110 über mehrere Ringstopps 1152A-1152N vor, jeden an einer Kopplung zwischen einem Kern und LLC-Slice. Wie in 11 erkennbar ist, wird die Zwischenverbindung 1150 zum Befördern verschiedener Informationen verwendet, einschließlich Adressinformationen, Dateninformationen, Bestätigungsinformationen und Snoop-/ungültigen Informationen. Obwohl eine Ringzwischenverbindung dargestellt ist, kann jede bekannte On-Die-Zwischenverbindung oder Matrix verwendet werden. Als ein veranschaulichendes Beispiel können einige der oben besprochenen Matrizen (z.B. eine andere On-Die-Zwischenverbindung, eine On-Chip-Systemmatrix (OSF), eine Advanced Mirocontroller Bus Architecture- (AMBA) Zwischenverbindung, eine multidimensionale Netzmatrix oder eine andere Zwischenverbindungsarchitektur) auf gleiche Weise verwendet werden.As can be seen, a ring interconnect 1150 couples the cores together and provides an interconnection between the core domain 1130, the graphics domain 1160 and the system agent circuitry 1110 via multiple ring stops 1152A-1152N, each at a coupling between a core and LLC slice. As in 11 As can be seen, interconnect 1150 is used to convey various information, including address information, data information, acknowledgment information, and snoop/invalid information. Although a ring interconnect is shown, any known on-die interconnect or matrix may be used. As an illustrative example, some of the matrices discussed above (e.g., another on-die interconnect, an on-chip system matrix (OSF), an advanced microcontroller bus architecture (AMBA) interconnect, a multi-dimensional network matrix, or other interconnect architecture) on be used in the same way.

Wie ferner dargestellt ist, enthält die Systemagentendomäne 1110 eine Anzeigemaschine 1112, die eine Steuerung von einer und eine Schnittstelle für eine zugehörige(n) Anzeige bereitstellen soll. Die Systemagentendomäne 1110 kann andere Einheiten enthalten, wie: eine integrierte Speichersteuerung 1120, die eine Schnittstelle für eine Systemspeicher- (z.B. einen DRAM, implementiert mit mehrfachen DIMMs) Kohärenzlogik 1122 zur Durchführung von Speicherkohärenzoperationen vorsieht. Mehrere Schnittstellen können vorhanden sein, um eine Zwischenverbindung zwischen dem Prozessor und einem anderen Schaltkreis zu ermöglichen. Zum Beispiel ist in einer Ausführungsform zumindest eine direkte Medienschnittstelle- (DMI) 1116 Schnittstelle vorgesehen, wie auch eine oder mehrere PCIe™ Schnittstellen 1114. Die Anzeigemaschine und diese Schnittstellen sind typischerweise über eine PCIe™ Brücke 1118 an einen Speicher gekoppelt. Ferner können zum Vorsehen von Kommunikationen zwischen anderen Agenten, wie zusätzlichen Prozessoren oder einem anderen Schaltkreis, eine oder mehrere andere Schnittstelle(n) vorgesehen sein.As further illustrated, system agent domain 1110 includes a display engine 1112 intended to provide control of and interface to an associated display. The system agent domain 1110 may include other entities such as: an integrated memory controller 1120 that provides an interface to system memory (e.g., a DRAM implemented with multiple DIMMs) coherency logic 1122 for performing memory coherency operations. Multiple interfaces may be present to allow interconnection between the processor and other circuitry. For example, in one embodiment, at least one direct media interface (DMI) 1116 interface is provided, as are one or more PCIe™ interfaces 1114. The display engine and these interfaces are typically coupled to memory via a PCIe™ bridge 1118. Further, one or more other interfaces may be provided to provide communications between other agents, such as additional processors or other circuitry.

Unter Bezugnahme nun auf 12 ist ein Blockdiagramm eines repräsentativen Kerns dargestellt; im Speziellen logische Blöcke eines Back-End eines Kerns, wie des Kerns 1130 von 11. Im Allgemeinen enthält die in 12 dargestellte Struktur einen Out-of-Order-Prozessor, der eine Front-End-Einheit 1270 hat, die zum Abrufen eintretender Befehle, Durchführen verschiedener Verarbeitungen (z.B. Caching, Decodieren, Abzweigungsvorhersage, usw.) und Weiterleiten von Befehlen/Operationen zu einer Out-of-Order-Maschine (OOO) 1280 verwendet wird. Die OOO-Maschine 1280 führt eine Weiterverarbeitung an decodierten Befehlen durch.Referring now to 12 a block diagram of a representative core is shown; specifically, logical blocks of a back-end of a core, such as core 1130 of FIG 11 . In general, the in 12 structure illustrated an out-of-order processor having a front-end unit 1270 configured to fetch incoming instructions, perform various processing (eg, caching, decoding, branch prediction, etc.), and forward instructions/operations to an out -of-order machine (OOO) 1280 is used. The OOO engine 1280 performs further processing on decoded instructions.

Im Speziellen in der Ausführungsform von 12 enthält eine Out-of-Order-Maschine 1280 eine Zuordnungseinheit 1282 für den Empfang decodierter Befehle, die die Form eines Mikrobefehls oder mehrerer Mikrobefehle oder uops aufweisen kann, von der Front-End-Einheit 1270 und zu deren Zuordnung zu geeigneten Ressourcen wie Register und so weiter. Anschließend werden die Befehle für eine Reservierungsstation 1284 vorgesehen, die Ressourcen reserviert und sie zur Ausführung auf einer oder mehreren Ausführungseinheit(en) 1286A-1286N plant. Verschiedene Arten von Ausführungseinheiten können vorhanden sein, einschließlich zum Beispiel arithmetischer Logikeinheiten (ALUs), Last- und Speichereinheiten, Vektorverarbeitungseinheiten (VPUs), Fließkommaausführungseinheiten, unter anderen. Ergebnisse von diesen verschiedenen Ausführungseinheiten werden einem Rückordnungspuffer (ROB) 1288 bereitgestellt, der ungereihte Ergebnisse nimmt und sie in die korrekte Programmreihenfolge bringt.Specifically in the embodiment of 12 For example, an out-of-order engine 1280 includes a mapper 1282 for receiving decoded instructions, which may be in the form of one or more microinstructions or uops, from the front-end unit 1270 and mapping them to appropriate resources such as registers and so on. The instructions are then provided to a reservation station 1284, which reserves resources and schedules them for execution on one or more execution units 1286A-1286N. Various types of execution units may be present including, for example, arithmetic logic units (ALUs), load and store units, vector processing units (VPUs), floating point execution units, among others. Results from these different execution units are provided to a reorder buffer (ROB) 1288 that takes unordered results and puts them in the correct program order.

Unter weiterer Bezugnahme auf 12 ist zu beachten, dass sowohl die Front-End-Einheit 1270 wie auch die Out-of-Order-Maschine 1280 an verschiedene Ebenen einer Speicherhierarchie gekoppelt sind. Im Speziellen ist ein Befehlsebenen-Cache 1272 dargestellt, der seinerseits an einen Mittelebenen-Cache 1276 gekoppelt ist, der seinerseits an einen Cache letzter Ebene 1295 gekoppelt ist. In einer Ausführungsform ist der Cache letzter Ebene 1295 in einer On-Chip-Einheit 1290 (manchmal als UnCore bezeichnet) implementiert. Als ein Beispiel ist die Einheit 1290 dem Systemagenten 1110 von 11 ähnlich. Wie oben besprochen, kommuniziert der UnCore 1290 mit dem Systemspeicher 1299, der in der dargestellten Ausführungsform durch einen ED RAM implementiert ist. Es ist auch zu beachten, dass die verschiedenen Ausführungseinheiten 1286 in einer Out-of-Order-Maschine 1280 mit einem Cache der ersten Ebene 1274 in Kommunikation stehen, der auch mit dem Mittelebenen-Cache 1276 in Kommunikation steht. Es ist auch zu beachten, dass zusätzliche Kerne 1230N-2 - 1230N an den LLC 1295 gekoppelt sein können. Obwohl in der Ausführungsform von 12 bei dieser hohen Ebene dargestellt, ist klar, dass verschiedene Änderungen und zusätzliche Komponenten vorhanden sein können.With further reference to 12 note that both the front-end unit 1270 and the out-of-order engine 1280 are coupled to different levels of a memory hierarchy. Specifically, an instruction level cache 1272 coupled to a mid-level cache 1276 coupled to a last-level cache 1295 is shown. In one embodiment, the last level cache 1295 is implemented in an on-chip unit 1290 (sometimes referred to as an UnCore). As an example, entity 1290 is associated with system agent 1110 of 11 similar. As discussed above, the UnCore 1290 communicates with the system memory 1299, which in the illustrated embodiment is implemented by ED RAM. It is also noted that the various execution units 1286 in an out-of-order engine 1280 are in communication with a first-level cache 1274 that is also in communication with the mid-level cache 1276 . It should also be noted that additional cores 1230N-2 - 1230N may be coupled to LLC 1295. Although in the embodiment of 12 Illustrated at this high level, it is understood that various changes and additional components may be present.

In Hinblick nun auf 13 ist ein Blockdiagramm eines beispielhaften Computersystems gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zur Ausführung eines Befehls enthält, wo eine oder mehrere der Zwischenverbindungen ein oder mehrere Merkmal(e) implementieren. Das System 1300 enthält eine Komponente, wie einen Prozessor 1302, zur Verwendung der Ausführungseinheiten, einschließlich einer Logik zur Durchführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Erfindung, wie in der hier beschriebenen Ausführungsform. Das System 1300 ist für Verarbeitungssysteme repräsentativ, die auf PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™ Mikroprozessoren basieren, obwohl andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering-Workstations, Set-Top-Boxes und dergleichen) ebenso verwendet werden können. In einer Ausführungsform führt ein Sample-System 1300 eine Version des WINDOWS™ Betriebssystems durch, die von der Mikrosoft Corporation of Redmond, Washington, erhältlich ist, obwohl andere Betriebssysteme (UNIX und Linux zum Beispiel), eingebettete Software und/oder grafische Anwenderschnittstellen ebenso verwendet werden können. Somit sind Ausführungsformen der vorliegenden Erfindung nicht auf eine spezielle Kombination von Hardware-Schaltkreis und Software begrenzt.With regard now to 13 Illustrated is a block diagram of an exemplary computer system formed with a processor including execution units for executing an instruction where one or more of the interconnects implement one or more features, in accordance with an embodiment of the present invention. The system 1300 includes a component, such as a processor 1302, for use of execution units including logic to perform algorithms for processing data in accordance with the present invention, as in the embodiment described herein. The System 1300 is representative of processing systems based on PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ and/or StrongARM™ microprocessors, although other systems (including personal computers with other microprocessors, engineering workstations, set-top -Boxes and the like) can also be used. In one embodiment, a sample system 1300 runs a version of the WINDOWS™ operating system available from Microsoft Corporation of Redmond, Washington, although other operating systems (UNIX and Linux, for example), embedded software, and/or graphical user interfaces also use it can become. Thus, embodiments of the present invention are not limited to any particular combination of hardware circuitry and software.

Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen, wie in in der Hand gehaltenen Vorrichtungen und eingebetteten Anwendungen, verwendet werden. Einige Beispiele für in der Hand gehaltene Vorrichtungen enthalten Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und in der Hand gehaltene PCs. Eingebettete Anwendungen können eine Mikrosteuerung, einen Digitalsignalprozessor (DSP), ein System auf einem Chip, einen Netzwerkcomputer (NetPC), Set-Top-Boxes, Netzwerk-Hubs, Weitverkehrsnetz- (WAN) Schalter oder jedes andere System enthalten, der einen oder mehrere Befehl(e) gemäß zumindest einer Ausführungsform ausführen kann.Embodiments are not limited to computer systems. Alternative embodiments of the present invention may be used in other devices, such as handheld devices and embedded applications. Some examples of handheld devices include cellular phones, internet protocol devices, digital cameras, personal digital assistants (PDAs), and handheld PCs. Embedded applications may contain a microcontroller, digital signal processor (DSP), system on a chip, network computer (NetPC), set-top boxes, network hubs, wide area network (WAN) switches, or any other system that requires one or more command(s) according to at least one embodiment.

In dieser dargestellten Ausführungsform enthält der Prozessor 1302 eine oder mehrere Ausführungseinheit(en) 1308 zum Implementieren eines Algorithmus, der zumindest einen Befehl ausführen soll. Eine Ausführungsform kann im Kontext eines einzigen Prozessor-Desktop- oder Serversystems beschrieben sein, aber alternative Ausführungsformen können in einem Multiprozessorsystem enthalten sein. Das System 1300 ist ein Beispiel für eine ‚Hub‘-Systemarchitektur. Das Computersystem 1300 enthält einen Prozessor 1302 zum Verarbeiten von Datensignalen. Der Prozessor 1302 enthält, als ein veranschaulichendes Beispiel, einen Mikroprozessor eines Rechners mit komplexem Befehlssatz (Complex Instruction Set Computer, CISC), einen Mikroprozessor eines Rechners mit reduziertem Befehlssatz (Reduced Instruction Set Computer, RISC), einen Mikroprozessor eines sehr langen Befehlsworts (Very Long Instruction Word, VLIW), einen Prozessor, der eine Kombination von Befehlssätzen, implementiert oder jede andere Prozessorvorrichtung, wie zum Beispiel einen Digitalsignalprozessor. Der Prozessor 1302 ist an einen Prozessorbus 1310 gekoppelt, der Datensignale zwischen dem Prozessor 1302 und anderen Komponenten im System 1300 sendet. Die Elemente des Systems 1300 (z.B. Grafikbeschleuniger 1312, Memory Controller-Hub 1316, Speicher 1320, I/O Controller-Hub 1324, drahtloser Sender/Empfänger 1326, Flash BIOS 1328, Netzwerksteuerung 1334, Audiosteuerung 1336, serieller Erweiterungsport 1338, I/O Steuerung 1340, usw.) führen ihre herkömmlichen Funktionen aus, die jenen, die mit dieser Technik vertraut sind, allgemein bekannt sind.In this illustrated embodiment, the processor 1302 includes one or more execution units 1308 for implementing an algorithm to execute at least one instruction. An embodiment may be described in the context of a single processor desktop or server system, but alternative embodiments may be included in a multiprocessor system. The 1300 system is an example of a 'hub' system architecture. The computer system 1300 includes a processor 1302 for processing data signals. Processor 1302 includes, as an illustrative example, a complex instruction set computer (CISC) microprocessor, a reduced instruction set computer (RISC) microprocessor, a very long instruction word (Very Long Instruction Word, VLIW), a processor implementing a combination of instruction sets, or any other processing device such as a digital signal processor. The processor 1302 is coupled to a processor bus 1310 that sends data signals between the processor 1302 and other components in the system 1300. The elements of system 1300 (e.g., graphics accelerator 1312, memory controller hub 1316, memory 1320, I/O controller hub 1324, wireless transceiver 1326, flash BIOS 1328, network controller 1334, audio controller 1336, serial expansion port 1338, I/O Controller 1340, etc.) perform their conventional functions well known to those skilled in the art.

In einer Ausführungsform enthält der Prozessor 1302 einen internen Cache-Speicher 1304 der Ebene 1 (L1). Abhängig von der Architektur kann der Prozessor 1302 einen einzelnen internen Cache oder mehrfache Ebenen interner Caches enthalten. Andere Ausführungsformen enthalten eine Kombination aus sowohl internen wie auch externen Caches, abhängig von der besonderen Implementierung und den Bedürfnissen. Die Registerdatei 1306 dient zum Speichern verschiedener Arten von Daten in verschiedenen Registern einschließlich Ganzzahlregister, Fließkommaregister, Vektorregister, Banked-Register, Schattenregister, Prüfpunktregister, Statusregister, und Befehlspointerregister.In one embodiment, the processor 1302 includes an internal level 1 (L1) cache memory 1304 . Depending on the architecture, processor 1302 may have a single internal cache or contain multiple levels of internal caches. Other embodiments include a combination of both internal and external caches, depending on the particular implementation and needs. Register file 1306 is used to store various types of data in various registers including integer registers, floating point registers, vector registers, banked registers, shadow registers, checkpoint registers, status registers, and instruction pointer registers.

Die Ausführungseinheit 1308, die eine Logik zur Durchführung von Ganzzahl- und Fließkommaoperationen enthält, befindet sich auch im Prozessor 1302. Der Prozessor 1302 enthält in einer Ausführungsform einen Mikrocode (ucode) ROM zum Speichern eines Mikrocodes, der, wenn er ausgeführt wird, Algorithmen für gewisse Makrobefehle durchführt, oder zum Bewältigen komplexer Szenarien. Hier ist der Mikrocode möglicherweise aktualisierbar, um Logik-Bugs/Fixes für den Prozessor 1302 zu handhaben. Für eine Ausführungsform enthält die Ausführungseinheit 1308 eine Logik zur Behandlung eines gepackten Befehlssatzes 1309. Durch Aufnahme des gepackten Befehlssatzes 1309 in den Befehlssatz eines Allzweckprozessors 1302, gemeinsam mit dem zugehörigen Schaltkreis zur Ausführung der Befehle, können die Operationen, die von vielen Multimedienanwendungen verwendet werden, unter Verwendung gepackter Daten in einem Allzweckprozessor 1302 ausgeführt werden. Somit werden viele Multimedienanwendungen beschleunigt und effizienter unter Verwendung der vollen Breite eines Prozessordatenbusses zur Durchführung von Operationen an gepackten Daten ausgeführt. Dies behebt möglicherweise die Notwendigkeit, kleinere Einheiten von Daten über den Prozessordatenbus zu transferieren, um eine oder mehrere Operation(en), jeweils mit einem Datenelement, auszuführen.Execution unit 1308, which includes logic for performing integer and floating point operations, also resides in processor 1302. Processor 1302, in one embodiment, includes microcode (ucode) ROM for storing microcode that, when executed, executes algorithms for performs certain macro commands, or to handle complex scenarios. Here the microcode may be updatable to handle logic bugs/fixes for the 1302 processor. For one embodiment, the execution unit 1308 includes logic for handling a packed instruction set 1309. By including the packed instruction set 1309 in the instruction set of a general purpose processor 1302, along with the associated circuitry for executing the instructions, the operations used by many multimedia applications can be executed in a general purpose processor 1302 using packed data. Thus, many multimedia applications are accelerated and run more efficiently using the full width of a processor data bus to perform operations on packed data. This potentially eliminates the need to transfer smaller units of data across the processor data bus to perform one or more operations, each on a data item.

Es können auch andere Ausführungsformen einer Ausführungseinheit 1308 in Mikrosteuerungen, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logik Schaltungen verwendet werden. Das System 1300 enthält einen Speicher 1320. Der Speicher 1320 enthält eine dynamische Direktzugriffsspeicher- (DRAM) Vorrichtung, eine statische Direktzugriffsspeicher- (SRAM) Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung. Der Speicher 1320 speichert Befehle und/oder Daten, die durch Datensignale repräsentiert werden, die vom Prozessor 1302 auszuführen sind.Other embodiments of an execution unit 1308 may also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. The system 1300 includes a memory 1320. The memory 1320 includes a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, a flash memory device, or other storage device. Memory 1320 stores instructions and/or data represented by data signals to be executed by processor 1302.

Es ist zu beachten, dass jedes der obengenannten Merkmale oder jeder der obengenannten Aspekte der Erfindung auf einer oder mehreren Zwischenverbindung(en) benutzt werden kann, die in 13 dargestellt sind. Zum Beispiel implementiert eine On-Die-Zwischenverbindung (ODI), die nicht dargestellt ist, zum Koppeln interner Einheiten des Prozessors 1302, einen oder mehrere der oben beschriebenen Aspekte der Erfindung. Oder die Erfindung ist mit einem Prozessorbus 1310 (z.B. einer anderen bekannten, Hochleistungsrechnerzwischenverbindung), einem Speicherpfad hoher Bandbreite 1318 zum Speicher 1320, einer Punkt-zu-Punkt-Verbindung zum Grafikbeschleuniger 1312 (z.B. einer Peripheral Component Interconnect Express (PCIe) konformen Matrix), einer Controller-Hub-Zwischenverbindung 1322, einem I/O oder einer anderen Zwischenverbindung (z.B. USB, PCI, PCIe) zum Koppeln der anderen dargestellten Komponenten verbunden. Einige Beispiele für solche Komponenten enthalten die Audiosteuerung 1336, den Firmware-Hub (Flash BIOS) 1328, den drahtlosen Sender/Empfänger 1326, den Datenspeicher 1324, die althergebrachte I/O Steuerung 1310, die Benutzereingabe- und Tastaturschnittstellen 1342 enthält, einen seriellen Erweiterungsport 1338 wie ein serielles Bussystem (Universal Serial Bus, USB) und eine Netzwerksteuerung 1334. Die Datenspeichervorrichtung 1324 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung enthalten.It should be noted that any of the above features or aspects of the invention may be used on one or more interconnect(s) described in 13 are shown. For example, an on-die interconnect (ODI), not shown, for coupling internal units of processor 1302 implements one or more of the aspects of the invention described above. Or, the invention is implemented with a processor bus 1310 (e.g., other known high-performance computing interconnect), a high-bandwidth memory path 1318 to memory 1320, a point-to-point connection to the graphics accelerator 1312 (e.g., a Peripheral Component Interconnect Express (PCIe) compliant matrix) , a controller-hub interconnect 1322, an I/O, or other interconnect (eg, USB, PCI, PCIe) for coupling the other components shown. Some examples of such components include audio control 1336, firmware hub (Flash BIOS) 1328, wireless transceiver 1326, data storage 1324, legacy I/O control 1310 containing user input and keyboard interfaces 1342, a serial expansion port 1338 such as a Universal Serial Bus (USB) serial bus system and network controller 1334. Data storage device 1324 may include a hard disk drive, floppy disk drive, CD-ROM device, flash memory device, or other mass storage device.

Unter Bezugnahme nun auf 14, ist ein Blockdiagramm eines zweiten Systems 1400 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 14 dargestellt, ist ein Multiprozessorsystem 1400 ein Punkt-zu-Punkt-Zwischenverbindungssystem und enthält einen ersten Prozessor 1470 und einen zweiten Prozessor 1480, die über eine Punkt-zu-Punkt-Zwischenverbindung 1450 gekoppelt sind. Jeder der Prozessoren 1470 und 1480 kann eine Version eines Prozessors sein. In einer Ausführungsform sind 1452 und 1454 Teil einer seriellen, kohärenten Punkt-zu-Punkt-Zwischenverbindungsmatrix, wie einer Hochleistungsarchitektur. Infolgedessen kann die Erfindung innerhalb der QPI-Architektur implementiert werden.Referring now to 14 1, a block diagram of a second system 1400 is shown in accordance with an embodiment of the present invention. As in 14 As illustrated, a multiprocessor system 1400 is a point-to-point interconnect system and includes a first processor 1470 and a second processor 1480 coupled via a point-to-point interconnect 1450 . Each of processors 1470 and 1480 may be a version of a processor. In one embodiment, 1452 and 1454 are part of a serial, point-to-point, coherent interconnect matrix, such as a high performance architecture. As a result, the invention can be implemented within the QPI architecture.

Während nur zwei Prozessoren 1470, 1480 dargestellt sind, ist klar, dass der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist. In anderen Ausführungsformen kann/können ein oder mehrere zusätzliche(r) Prozessor(en) in einem bestimmten Prozessor vorhanden sein.While only two processors 1470, 1480 are shown, it is understood that the scope of the present invention is not so limited. In other embodiments, one or more additional processor(s) may be present in a given processor.

Die Prozessoren 1470 und 1480 sind mit integrierten Speichersteuerungseinheiten 1472 bzw. 1482 dargestellt. Der Prozessor 1470 enthält auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt- (P-P) Schnittstellen 1476 und 1478; ebenso enthält der zweite Prozessor 1480 P-P-Schnittstellen 1486 und 1488. Die Prozessoren 1470, 1480 können Informationen über eine Punkt-zu-Punkt- (P-P) Schnittstelle 1450 unter Verwendung von P-P-Schnittstellenschaltungen 1478, 1488 austauschen. Wie in 14 dargestellt, koppeln IMCs 1472 und 1482 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 1432 und einen Speicher 1434, die Teile des Hauptspeichers sein können, die lokal an den entsprechenden Prozessoren befestigt sind.Processors 1470 and 1480 are shown with integrated memory controllers 1472 and 1482, respectively. Processor 1470 also includes, as part of its bus control units, point-to-point (PP) interfaces 1476 and 1478; likewise, the second processor 1480 includes PP interfaces 1486 and 1488. The processors 1470, 1480 can transmit information over a point-to-point (PP) interface 1450 using PP Replace interface circuits 1478, 1488. As in 14 As illustrated, IMCs 1472 and 1482 couple the processors to respective memories, namely memory 1432 and memory 1434, which may be portions of main memory locally attached to the respective processors.

Die Prozessoren 1470, 1480 tauschen jeweils Informationen mit einem Chipsatz 1490 über einzelne P-P Schnittstellen 1452, 1454 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1476, 1494, 1486, 1498 aus. Der Chipsatz 1490 tauscht auch Informationen mit einer Hochleistungsgrafikschaltung 1438 über eine Schnittstellenschaltung 1492 entlang einer Hochleistungsgrafikzwischenverbindung 1439 aus.The processors 1470, 1480 each exchange information with a chipset 1490 via individual P-P interfaces 1452, 1454 using point-to-point interface circuits 1476, 1494, 1486, 1498. The chipset 1490 also exchanges information with a high performance graphics circuit 1438 via an interface circuit 1492 along a high performance graphics interconnect 1439 .

Ein gemeinsam benutzter Cache (nicht dargestellt) kann entweder im Prozessor oder außerhalb beider Prozessoren enthalten sein; aber dennoch mit den Prozessoren über eine P-P-Zwischenverbindung verbunden sein, so dass lokale Cache-Informationen entweder eines Prozessors oder beider Prozessoren im gemeinsam benutzten Cache gespeichert werden können, wenn ein Prozessor in eine leistungsarme Betriebsart gesetzt wird.A shared cache (not shown) can be either internal to the processor or external to both processors; but still be connected to the processors via a P-P interconnect so that local cache information of either or both processors can be stored in the shared cache when a processor is placed in a low-power mode.

Der Chipsatz 1490 kann über eine Schnittstelle 1496 an einen ersten Bus 1416 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1416 ein Peripheral Component Interconnect- (PCI) Bus oder ein Bus wie ein PCI Expressbus oder ein anderer I/O-Zwischenverbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist.The chipset 1490 may be coupled to a first bus 1416 via an interface 1496 . In one embodiment, the first bus 1416 may be a Peripheral Component Interconnect (PCI) bus or a bus such as a PCI Express bus or other third generation I/O interconnect bus, although the scope of the present invention is not so limited.

Wie in 14 dargestellt, sind verschiedene I/O-Vorrichtungen 1414 an den ersten Bus 1416, gemeinsam mit einer Bus-Brücke 1418 gekoppelt, die den ersten Bus 1416 an einen zweiten Bus 1420 koppelt. In einer Ausführungsform enthält der zweite Bus 1420 einen Low Pin Count (LPC) Bus. Verschiedene Vorrichtungen sind in einer Ausführungsform an den zweiten Bus 1420 gekoppelt, einschließlich zum Beispiel einer Tastatur und/oder Maus 1422, Kommunikationsvorrichtungen 1427 und einer Speichereinheit 1428 wie ein Festplattenlaufwerks oder eine andere Massenspeichervorrichtung, die häufig Befehle/Code und Daten 1430 enthält. Ferner ist ein Audio-I/O 1424 an den zweiten Bus 1420 gekoppelt dargestellt. Es ist zu beachten, dass andere Architekturen möglich sind, wo die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 14 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.As in 14 As shown, various I/O devices 1414 are coupled to the first bus 1416, along with a bus bridge 1418 that couples the first bus 1416 to a second bus 1420. In one embodiment, the second bus 1420 includes a Low Pin Count (LPC) bus. Various devices are coupled to the second bus 1420 in one embodiment, including, for example, a keyboard and/or mouse 1422, communication devices 1427, and a storage unit 1428 such as a hard drive or other mass storage device, which often contains instructions/code and data 1430. An audio I/O 1424 is also shown coupled to the second bus 1420 . Note that other architectures are possible where the components included and interconnect architectures vary. For example, instead of using the point-to-point architecture of 14 implement a multi-drop bus or other such architecture.

Unter Bezugnahme nun auf 15 ist eine Ausführungsform eines System-on-Chip- (SOC) Designs gemäß der Erfindung dargestellt. Als ein spezielles veranschaulichendes Beispiel ist das SOC 1500 in Benutzergeräten (UE) enthalten. In einer Ausführungsform bezieht sich UE auf jede Vorrichtung, die von einem Endbenutzer zum Kommunizieren verwendet wird, wie ein in der Hand gehaltenes Telefon, ein Smartphone, ein Tablet, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder jede andere ähnliche Kommunikationsvorrichtung. Häufig ist ein UE mit einer Basisstation oder einem Knoten verbunden, der möglicherweise in seiner Art einer Mobilstation (MS) in einem GSM-Netzwerk entspricht.Referring now to 15 1 is shown an embodiment of a system-on-chip (SOC) design according to the invention. As a specific illustrative example, SOC 1500 is included in User Equipment (UE). In one embodiment, UE refers to any device used by an end user to communicate, such as a handheld phone, smartphone, tablet, ultra-thin notebook, notebook with broadband adapter, or any other similar communication device. Often a UE is connected to a base station or node, which may be similar in nature to a mobile station (MS) in a GSM network.

Hier enthält das SOC 1500 2 Kerne - 1506 und 1507. Ähnlich wie in der vorangehenden Besprechung können die Kerne 1506 und 1507 einer Befehlssatzarchitektur, wie einem auf einem Intel® Architecture Core™-basierenden Prozessor, einem Advanced Mikro Devices, Inc. (AMD) Prozessor, einem auf MIPS-basierenden Prozessor, einem auf ARMbasierenden Prozessordesign oder einem Kunden davon, wie auch deren Lizenznehmern oder Adoptierenden entsprechen. Die Kerne 1506 und 1507 sind an eine Cache-Steuerung 1508 gekoppelt, die mit der Bus Schnittstelleeinheit 1509 und einem L2 Cache 1511 verknüpft ist, um mit anderen Teilen des Systems 1500 zu kommunizieren. Die Zwischenverbindung 1510 enthält eine On-Chip-Zwischenverbindung, wie eine IOSF, AMBA oder andere Zwischenverbindung, wie oben besprochen, die möglicherweise einen oder mehrere der hier beschriebenen Aspekte implementiert.Here, the SOC 1500 contains 2 cores - 1506 and 1507. Similar to the previous discussion, the cores 1506 and 1507 can be an instruction set architecture such as an Intel® Architecture Core™-based processor, an Advanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, an ARM-based processor design, or a customer thereof, as well as their licensees or adopters. The cores 1506 and 1507 are coupled to a cache controller 1508 which interfaces with the bus interface unit 1509 and an L2 cache 1511 to communicate with other parts of the system 1500. Interconnect 1510 includes an on-chip interconnect, such as an IOSF, AMBA, or other interconnect as discussed above, that may implement one or more aspects described herein.

Die Schnittstelle 1510 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie einem Subscriber Identity Module (SIM) 1530 für eine Schnittstelle mit einer SIM-Karte, einem Boot-ROM 1535, um einen Boot-Code für eine Ausführung durch die Kerne 1506 und 1507 zu halten, um das SOC 1500 zu initialisieren und zu booten, einer SDRAM Steuerung 1540 für eine Schnittstelle mit dem externen Speicher (z.B. DRAM 1560), einer Flash-Steuerung 1545 für eine Schnittstelle mit dem nicht flüchtigen Speicher (z.B. Flash 1565), einer peripheren Steuerung 1550 (z.B. seriellen peripheren Schnittstelle) für eine Schnittstelle mit peripheren Geräten, Video-Codecs 1520 und einer Video Schnittstelle 1525 zum Anzeigen und Empfangen eines Eingangs (z.B. durch Berührung ausgelösten Eingangs), einer GPU 1515 zur Durchführung grafikbezogener Berechnungen, usw. Jede dieser Schnittstellen kann Aspekte der hier beschriebenen Erfindung enthalten.The interface 1510 provides communication channels to the other components, such as a Subscriber Identity Module (SIM) 1530 to interface with a SIM card, a boot ROM 1535 to boot code for execution by the cores 1506 and 1507 hold to initialize and boot the SOC 1500, an SDRAM controller 1540 for interfacing with the external memory (e.g. DRAM 1560), a flash controller 1545 for interfacing with the non-volatile memory (e.g. flash 1565), a peripheral Controller 1550 (e.g., serial peripheral port) for interfacing with peripheral devices, video codecs 1520, and a video interface 1525 for displaying and receiving input (e.g., touch-triggered input), a GPU 1515 for performing graphics-related computations, etc. Any of these Interfaces may include aspects of the invention described herein.

Zusätzlich veranschaulicht das System periphere Geräte zur Kommunikation, wie ein Bluetooth Modul 1570, 3G-Modem 1575, GPS 1585 und WiFi 1585. Es ist zu beachten, dass ein UE, wie oben angegeben, einen Funk zur Kommunikation enthält. Infolgedessen sind nicht alle diese peripheren Kommunikationsmodule erforderlich. In einem UE soll jedoch eine gewisse Form von Funkt zur externen Kommunikation enthalten sein.In addition, the system illustrates peripheral devices for communication, such as a Bluetooth module 1570, 3G modem 1575, GPS 1585, and WiFi 1585. It should be noted that a UE contains a radio for communication as stated above. As a result, not all of these peripheral communication modules are required. However, some form of functionality for external communication should be included in a UE.

Während die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind zahlreiche Modifizierungen und Variationen daraus für einen Fachmann auf dem Gebiet offensichtlich. Es ist beabsichtigt, dass die beiliegenden Ansprüche alle derartigen Modifizierungen und Variationen abdecken, die in das wahre Wesen und den Umfang dieser vorliegenden Erfindung fallen.While the present invention has been described with respect to a limited number of embodiments, numerous modifications and variations therefrom will be apparent to those skilled in the art. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.

Ein Design kann verschiedene Stufen durchlaufen, von der Erstellung bis zur Simulierung bis zur Herstellung. Daten, die ein Design präsentieren, können das Design auf zahlreiche Weisen darstellen. Zunächst kann die Hardware, wie in Simulationen sinnvoll ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Zusätzlich kann ein Modell der Schaltungsebenen mit Logik und/oder Transistorgates in einigen Stufen des Designprozesses erzeugt werden. Ferner erreichen die meisten Designs, in einer gewissen Stufe, eine Datenebene, die die physische Anordnung verschiedener Vorrichtungen im Hardware-Modell darstellt. In dem Fall, wo herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken präsentieren, die zur Herstellung der integrierten Schaltung verwendet werden. In jeder Darstellung des Designs können die Daten in jeder Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie eine Platte, kann ein maschinenlesbares Medium zum Speichern von Informationen sein, die über eine optische oder elektrische Welle gesendet werden, die moduliert oder auf andere Weise generiert ist, um solche Informationen zu senden. Wenn eine elektrische Trägerwelle, die den Code anzeigt oder trägt, gesendet wird, wird eine neue Kopie in dem Ausmaß, in dem ein Kopieren, Puffern oder erneutes Senden des elektrischen Signals durchgeführt wird, erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren, maschinenlesbaren Medium, zumindest vorübergehend, einen Artikel, wie Informationen, die in eine Trägerwelle codiert sind, speichern, was Techniken von Ausführungsformen der vorliegenden Erfindung verkörpert.A design can go through different stages, from creation to simulation to manufacture. Data presenting a theme can represent the theme in a number of ways. First, as is useful in simulations, the hardware can be represented using a hardware description language or another functional description language. Additionally, a circuit level model with logic and/or transistor gates may be generated at some stages of the design process. Furthermore, most designs, at some stage, arrive at a data plane that represents the physical arrangement of various devices in the hardware model. In the case where conventional semiconductor manufacturing techniques are used, the data representing the hardware model may be the data representing the presence or absence of various features on various mask layers for masks used to manufacture the integrated circuit. In any representation of the design, the data may be stored in any form of machine-readable medium. A memory, or magnetic or optical storage, such as a disk, may be a machine-readable medium for storing information transmitted via an optical or electrical wave that is modulated or otherwise generated to transmit such information. When an electrical carrier wave indicative or carrying the code is transmitted, a new copy is made to the extent that copying, buffering, or retransmission of the electrical signal is performed. Thus, a communications provider or a network provider may store on a tangible, machine-readable medium, at least temporarily, an item such as information encoded into a carrier wave embodying techniques of embodiments of the present invention.

Ein Modul, wie hier verwendet, bezieht sich auf jede Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware, wie eine Mikrosteuerung, die mit einem nicht flüchtigen Medium verknüpft ist, um einen Code zu speichern, der dazu ausgebildet ist, von der Mikrosteuerung ausgeführt zu werden. Daher bezieht sich ein Verweis auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch konfiguriert ist, um den Code zu erkennen und/oder auszuführen, der auf einem nicht flüchtigen Medium gehalten wird. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das nicht flüchtige Medium, das den Code enthält, der spezifisch dazu ausgebildet ist, von der Mikrosteuerung ausgeführt zu werden, um vorgegebene Operationen durchzuführen. Und, wie daraus abgeleitet werden kann, kann sich in einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination aus der Mikrosteuerung und dem nicht flüchtigen Medium beziehen. Häufig variieren allgemein Modulgrenzen, die als getrennt dargestellt sind, und überlappen möglicherweise. Zum Beispiel können ein erstes und ein zweites Modul gemeinsam Hardware, Software, Firmware oder eine Kombination davon benutzen, während sie möglicherweise eine gewisse unabhängige Hardware, Software oder Firmware behalten. In einer Ausführungsform, enthält die Verwendung des Begriffs „Logik“ Hardware, wie Transistoren, Register oder andere Hardware, wie programmierbare Logikvorrichtungen.A module, as used herein, refers to any combination of hardware, software, and/or firmware. As an example, a module includes hardware, such as a microcontroller, associated with a non-transitory medium to store code configured to be executed by the microcontroller. Therefore, in one embodiment, a reference to a module refers to hardware that is specifically configured to recognize and/or execute code held on a non-transitory medium. Furthermore, in another embodiment, use of a module refers to the non-transitory medium containing code specifically configured to be executed by the microcontroller to perform predetermined operations. And, as can be inferred, in another embodiment, the term module (in this example) can refer to the combination of the microcontroller and the non-transitory medium. Often, module boundaries shown as separate generally vary and may overlap. For example, a first and second module may share hardware, software, firmware, or a combination thereof while possibly retaining some independent hardware, software, or firmware. In one embodiment, use of the term "logic" includes hardware such as transistors, registers, or other hardware such as programmable logic devices.

Die Verwendung der Phrase ‘konfiguriert zum' bezieht sich in einer Ausführungsform auf die Anordnung, Zusammenstellung, Herstellung, Anbietung zum Verkauf, den Import und/oder den Entwurf eines Apparats, einer Hardware, einer Logik oder eines Elements, um eine angegebenen oder bestimmte Aufgabe auszuführen. In diesem Beispiel ist ein Apparat oder ein Element davon, der bzw. das nicht in Betrieb ist, weiterhin ‚konfiguriert‘, eine bestimmte Aufgabe auszuführen, wenn es zur Durchführung der bestimmten Aufgabe gestaltet, gekoppelt und/oder verbunden ist. Als ein rein veranschaulichendes Beispiel kann ein Logik-Gate eine 0 oder eine 1 während des Betriebs bereitstellen. Aber ein Logik-Gate, das zum Bereitstellen eines Freigabesignals für einen Takt ‚konfiguriert‘ ist, enthält nicht jedes mögliche Logik-Gate, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logik-Gate eines, das auf gewisse Weise gekoppelt ist, so dass während des Betriebs die Ausgabe der 1 oder 0 zur Freigabe des Takts dient. Es ist erneut zu beachten, dass die Verwendung des Begriffs ‘konfiguriert zum' keinen Betrieb erfordert, sondern der Schwerpunkt vielmehr auf dem latenten Zustand eines Apparats, einer Hardware und/oder eines Elements liegt, wobei der Apparat, die Hardware und/oder das Element im latenten Zustand gestaltet ist, eine besondere Aufgabe auszuführen, wenn der Apparat, die Hardware, und/oder das Element arbeitet.Use of the phrase 'configured for', in one embodiment, refers to the arrangement, assembly, manufacture, offering for sale, import, and/or design of an apparatus, hardware, logic, or element to perform a specified or specific task to execute. In this example, an apparatus or element thereof that is not in operation is still 'configured' to perform a particular task if it is designed, coupled, and/or connected to perform the particular task. As a purely illustrative example, a logic gate may provide a 0 or a 1 during operation. But a logic gate that is 'configured' to provide an enable signal for a clock does not contain every possible logic gate that can provide a 1 or 0. Instead, the logic gate is one that is coupled in some way such that during operation the output of the 1 or 0 serves to enable the clock. Again, note that the use of the term 'configured for' does not imply operation, but rather focuses on the latent state of an apparatus, hardware and/or item, where the apparatus, hardware and/or item in the latent state is designed to perform a particular task when the apparatus, hardware, and/or element is operating.

Ferner bezieht sich die Verwendung der Phrasen ‚zum‘, ‚imstande zu‘ und/oder ‚betriebsbereit zu‘ in einer Ausführungsform auf einen gewissen Apparat, eine Logik, eine Hardware, und/oder ein Element, der/die/das so gestaltet ist, dass die Verwendung des Apparats, der Logik, der Hardware und/oder des Elements in einer spezifizierten Weise möglich ist. Es wird wie oben festgehalten, dass die Verwendung von ‚imstande zu‘ oder ‚betriebsbereit zu‘ sich in einer Ausführungsform auf den latenten Zustand eines Apparats, einer Logik, einer Hardware und/oder eines Elements bezieht, in dem der Apparat, die Logik, die Hardware und/oder das Element nicht in Betrieb sind, sondern derart gestaltet sind, dass sie die Verwendung eines Apparats in einer spezifizierten Weise ermöglichen.Further, in one embodiment, use of the phrases 'to', 'capable of', and/or 'operable to' refers to some apparatus, logic, hardware, and/or element so configured that the use of the apparatus, logic, hardware and/or element is possible in a specified manner. It is noted as above that the use of 'capable of' or 'operable to' in one embodiment refers to the latent state of an apparatus, logic, hardware and/or element in which the apparatus, logic, the hardware and/or element is not operational but is designed to enable use of an apparatus in a specified manner.

Ein Wert, wie hier verwendet, enthält jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, die einfach binäre Logikzustände darstellen. Zum Beispiel bezieht sich eine 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen niederen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie ein Transistor oder eine Flash-Zelle, imstande sein, einen einzelnen logischen Wert oder mehrfache logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein binärer Wert 1010 und ein Hexadezimalbuchstabe A dargestellt werden. Daher enthält ein Wert jede Darstellung von Informationen, die imstande ist, in einem Computersystem gehalten zu werden.A value, as used herein, includes any known representation of a number, state, logical state, or binary logical state. Often the use of logic levels, logic values, or logical values is also referred to as 1s and 0s, which simply represent binary logic states. For example, a 1 refers to a high logic level and a 0 refers to a low logic level. In one embodiment, a memory cell, such as a transistor or flash cell, may be capable of holding a single logical value or multiple logical values. However, other representations of values in computer systems have been used. For example, the decimal number ten can also be represented as a binary value 1010 and a hexadecimal letter A. Therefore, a value includes any representation of information capable of being held in a computer system.

Ferner können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie eine logische Eins, einen vorgegebenen oder anfänglichen Zustand darstellen, während ein zweiter Wert, wie eine logische Null, einen nicht vorgegebenen Zustand darstellen kann. Zusätzlich beziehen sich die Begriffe Zurücksetzen und Setzen in einer Ausführungsform auf einen vorgegebenen bzw. aktualisierten Wert oder Zustand. Zum Beispiel enthält ein vorgegebener Wert möglicherweise einen hohen logischen Wert, d.h., Rücksetzen, während ein aktualisierter Wert möglicherweise einen niederen logischen Wert enthält, d.h., Setzen. Es ist zu beachten, dass jede Kombination von Werten zur Darstellung jeder Anzahl von Zuständen verwendet werden kann.Furthermore, states can be represented by values or parts of values. As an example, a first value, such as a logical one, may represent a default or initial state, while a second value, such as a logical zero, may represent a non-default state. Additionally, in one embodiment, the terms reset and set refer to a default and updated value or state, respectively. For example, a default value may contain a high logical value, i.e., reset, while an updated value may contain a low logical value, i.e., set. Note that any combination of values can be used to represent any number of states.

Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben angeführt sind, können durch Befehle oder einen Code implementiert sein, die bzw. der auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind bzw. ist, die von einem Verarbeitungselement ausführbar sind. Ein nicht flüchtiges maschinenzugängliches/-lesbares Medium enthält jeden Mechanismus, der Informationen in einer Form vorsieht (d.h., speichert und/oder sendet), die von einer Maschine, wie einem Computer oder einem elektronischen System lesbar ist. Zum Beispiel enthält ein nicht flüchtiges maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM), wie einen statischen RAM (SRAM) oder dynamischen RAM (DRAM); einen ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die von flüchtigen (verbreiteten) Signalen empfangen werden (z.B. Trägerwellen, Infrarotsignale, Digitalsignale); usw., die von den nicht flüchtigen Medien unterschieden werden, die Informationen daraus empfangen können.The method, hardware, software, firmware, or code embodiments noted above may be implemented by instructions or code stored on any machine-accessible, machine-readable, computer-accessible, or computer-readable medium, which may be transmitted by a computer Processing element are executable. A non-transitory machine-accessible/readable medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine, such as a computer or electronic system. For example, a non-transitory machine-accessible medium includes random access memory (RAM), such as static RAM (SRAM) or dynamic RAM (DRAM); a ROM; a magnetic or optical storage medium; flash memory devices; electrical storage devices; optical storage devices; acoustic storage devices; another form of storage devices for holding information received from transient (propagated) signals (e.g., carrier waves, infrared signals, digital signals); etc., which are distinguished from the non-volatile media capable of receiving information therefrom.

Befehle, die zum Programmieren einer Logik verwendet werden, um Ausführungsformen der Erfindung auszuführen können in einem Speicher im System gespeichert sein, wie in einem DRAM, Cache, Flash-Speicher oder einem anderen Speicher. Ferner können die Befehle über ein Netzwerk oder durch andere computerlesbare Medien verbreitet werden. Somit kann ein maschinenlesbares Medium jeden Mechanismus zum Speichern oder Senden von Informationen in einer Form, die von einer Maschine (z.B. einem Computer) lesbar ist, enthalten, wie, ohne aber darauf beschränkt zu sein, Disketten, optische Platten, Compact Disc Nur-Lese-Speicher (CD-ROMs) und magneto-optische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM), einen elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM), Magnet- oder optische Karten, einen Flash-Speicher oder einen greifbaren, maschinenlesbaren Speicher, der zum Senden von Informationen über das Internet in einer elektrischen, optischen, akustischen oder anderen Form von verbreiteten Signalen verwendet wird (z.B. Trägerwellen, Infrarotsignale, digitale Signale, usw.). Daher enthält das computerlesbare Medium jede Art von greifbarem, maschinenlesbaren Medium, das zum Speichern oder Senden elektronischer Befehle oder Informationen in einer Form geeignet ist, die von einer Maschine (z.B. einem Computer) gelesen werden kann.Instructions used to program logic to perform embodiments of the invention may be stored in memory in the system, such as DRAM, cache, flash memory, or other memory. Furthermore, the instructions may be propagated over a network or through other computer-readable media. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), such as, but not limited to, floppy disks, optical disks, read-only compact disks - Memories (CD-ROMs) and magneto-optical disks, read only memories (ROMs), random access memories (RAM), an erasable programmable read only memory (EPROM), an electrically erasable programmable read only memory (EEPROM), magnetic or optical cards, flash memory, or tangible machine-readable memory used to transmit information over the Internet in an electrical, optical, acoustic, or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.). Therefore, the computer-readable medium includes any type of tangible, machine-readable medium suitable for storing or transmitting electronic instructions or information in a form that can be read by a machine (e.g., a computer).

Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Patentschrift. Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren vorsehen, um eine gemeinsam benutzte Speichersteuerung bereitzustellen, um Last- und Speicheroperationen von mehreren unabhängigen Knoten zu bedienen, um einen Zugang zu einer gemeinsam benutzten Speicherressource bereitzustellen, wobei jedem der mehreren unabhängigen Knoten ein Zugang zu einem entsprechenden Teil der gemeinsam benutzten Speicherressource zu gewähren ist.The following examples relate to embodiments according to this specification. One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware- and/or software-based logic, and a Provide methods for providing shared memory control to service load and store operations from multiple independent nodes to provide access to a shared memory resource, wherein each of the multiple independent nodes is granted access to a corresponding portion of the shared memory resource is.

In zumindest einem Beispiel werden die Last- und Speicheroperationen unter Verwendung eines gemeinsam benutzten Speicherverbindungsprotokolls kommuniziert.In at least one example, the load and store operations are communicated using a shared memory connection protocol.

In zumindest einem Beispiel enthält das gemeinsam benutzte Speicherverbindungsprotokoll ein Speicherzugangsprotokoll, das eine physische Schichtlogik eines anderen Zwischenverbindungsprotokolls verwendet.In at least one example, the shared memory interconnect protocol includes a memory access protocol that uses physical layer logic of another interconnect protocol.

In zumindest einem Beispiel stellt das gemeinsam benutzte Speicherverbindungsprotokoll ein Multiplexen zwischen einer Sendung von Daten der Speicherzugangsprotokolldaten und einer Sendung von Daten des Zwischenverbindungsprotokolls bereit.In at least one example, the shared memory connection protocol provides multiplexing between transmission of memory access protocol data and transmission of interconnect protocol data.

In zumindest einem Beispiel weisen die Daten des Zwischenverbindungsprotokolls zumindest eines von Verbindungsschichtdaten und Transaktionsschichtdaten auf.In at least one example, the interconnect protocol data comprises at least one of link layer data and transaction layer data.

In zumindest einem Beispiel weist das Speicherzugangsprotokoll SMI3 auf und das Zwischenverbindungsprotokoll weist Peripheral Component Interconnect (PCI) Express (PCIe) auf.In at least one example, the memory access protocol includes SMI3 and the interconnect protocol includes Peripheral Component Interconnect (PCI) Express (PCIe).

In zumindest einem Beispiel werden Übergänge zwischen Zwischenverbindungsprotokolldaten und Speicherzugangsprotokolldaten durch eine Sync-Kopfzeile identifiziert, die zum Identifizieren der Übergänge codiert ist.In at least one example, transitions between interconnect protocol data and memory access protocol data are identified by a sync header encoded to identify the transitions.

In zumindest einem Beispiel werden Übergänge zwischen Zwischenverbindungsprotokolldaten und Speicherzugangsprotokolldaten durch einen Datenstart-Framing-Token identifiziert, der zum Identifizieren der Übergänge codiert ist.In at least one example, transitions between interconnect protocol data and memory access protocol data are identified by a data start framing token encoded to identify the transitions.

In zumindest einem Beispiel werden Übergänge von Zwischenverbindungsprotokolldaten zu Speicherzugangsprotokolldaten durch einen Datenstromende-Framing-Token des Zwischenverbindungsprotokolls identifiziert, der zum Identifizieren der Übergänge codiert ist, und Übergänge von Speicherzugangsprotokolldaten zu Zwischenverbindungsprotokolldaten werden durch Verbindungsschichtsteuerungs-Flits des Speicherzugangsprotokolls identifiziert.In at least one example, transitions from interconnect protocol data to memory access protocol data are identified by an interconnect protocol end-of-stream framing token encoded to identify the transitions, and transitions from memory access protocol data to interconnect protocol data are identified by link layer control flits of the memory access protocol.

In zumindest einem Beispiel ist das gemeinsam benutzte Speicherverbindungsprotokoll über einen Netzwerkprotokollstapel getunnelt.In at least one example, the shared memory connection protocol is tunneled over a network protocol stack.

In zumindest einem Beispiel weist der Netzwerkprotokollstapel Ethernet auf.In at least one example, the network protocol stack includes Ethernet.

In zumindest einem Beispiel befindet sich ein erster der mehreren CPU-Knoten auf einer ersten Platine und ein zweiter der mehreren CPU-Knoten befindet sich auf einer zweiten Platine, die von der ersten Platine getrennt ist.In at least one example, a first of the plurality of CPU nodes is on a first board and a second of the plurality of CPU nodes is on a second board that is separate from the first board.

In zumindest einem Beispiel befinden sich zumindest zwei der mehreren CPU-Knoten auf derselben Vorrichtung.In at least one example, at least two of the multiple CPU nodes reside on the same device.

In zumindest einem Beispiel dient die gemeinsam benutzte Speichersteuerung ferner zum Verfolgen von Speichertransaktionen, welche die Last- und Speicheroperationen beinhalten.In at least one example, the shared memory controller is further used to track memory transactions that include the load and store operations.

In zumindest einem Beispiel dient die gemeinsam benutzte Speichersteuerung ferner zum Feststellen, dass ein bestimmter der mehreren CPU-Knoten versagt, Identifizieren eines Teils der Speichertransaktionen des bestimmten CPU-Knotens, und Fallenlassen des Teils der Speichertransaktionen des bestimmten CPU-Knotens, während alle anderen Speichertransaktionen aufrechterhalten bleiben.In at least one example, the shared memory controller is further used to determine that a particular one of the plurality of CPU nodes is failing, identify a portion of the particular CPU node's memory transactions, and drop the portion of the particular CPU node's memory transactions while all other memory transactions are occurring be maintained.

In zumindest einem Beispiel dient die gemeinsam benutzte Speichersteuerung ferner zum Verwalten von Genehmigungen für einen Zugang der mehreren CPU-Knoten zu Daten in der gemeinsam benutzten Speicherressource.In at least one example, the shared memory controller is further to manage permissions for access of the multiple CPU nodes to data on the shared memory resource.

In zumindest einem Beispiel ist zumindest ein bestimmter der mehreren CPU-Knoten von einem Zugang zu zumindest einem ersten Teil des gemeinsam benutzten Speichers blockiert und einem zweiten der mehreren CPU-Knoten ist ein Zugang zum ersten Teil möglich.In at least one example, at least a particular one of the plurality of CPU nodes is blocked from accessing at least a first portion of the shared memory and a second of the plurality of CPU nodes is allowed access to the first portion.

In zumindest einem Beispiel dient die gemeinsam benutzte Speichersteuerung ferner zum Verwalten von Verzeichnisinformationen für Daten in der gemeinsam benutzten Speicherressource.In at least one example, the shared memory controller is further operable to manage directory information for data on the shared memory resource.

In zumindest einem Beispiel stellt die Verzeichnisinformationen für jede von mehreren Datenressourcen, die in der gemeinsam benutzten Speicherressource gespeichert sind, fest, ob ein Zugang zur entsprechenden Datenressource ausschließlich für einen der mehreren CPU-Knoten ist oder von zwei oder mehr der mehreren CPU-Knoten gemeinsam benutzt wird.In at least one example, the directory information determines, for each of multiple data resources stored in the shared storage resource, whether access to the corresponding data resource is exclusive to one of the multiple CPU nodes or shared by two or more of the multiple CPU nodes is used.

In zumindest einem Beispiel dient die gemeinsam benutzte Speichersteuerung ferner zum Verhandeln einer Zugangsänderung für eine bestimmte der mehreren Datenressourcen, wobei die Änderung zumindest eine von einer Zugangsänderung von gemeinsam benutzt zu ausschließlich oder einer Zugangsänderung von ausschließlich zu gemeinsam benutzt aufweist.In at least one example, the shared memory controller is further operable to negotiate an access change for a particular one of the plurality of data resources, the change comprising at least one of an access change from shared to exclusive or an access change from exclusive to shared.

In zumindest einem Beispiel ist die gemeinsam benutzte Speichersteuerung an zumindest eine andere gemeinsam benutzte Speichersteuerung gekoppelt, die zumindest eine andere gemeinsam benutzte Speicherressource verwaltet, und die gemeinsam benutzte Speichersteuerung dient ferner zum Kommunizieren von Last-/Speicher- Operationen zur anderen gemeinsam benutzten Speichersteuerung, um den mehreren CPU-Knoten einen Zugang zu dem anderen gemeinsam benutzten Speicher zu ermöglichen.In at least one example, the shared memory controller is coupled to at least one other shared memory controller that manages at least one other shared memory resource, and the shared memory controller is further operable to communicate load/store operations to the other shared memory controller to allow the multiple CPU nodes to access the other shared memory.

In zumindest einem Beispiel dient die gemeinsam benutzte Speichersteuerung ferner zum Abbilden von Adressinformationen in den Last- und Speicheroperationen auf entsprechende Datenressourcen, die in der gemeinsam benutzten Speicherressource gespeichert sind.In at least one example, the shared memory controller is further operable to map address information in the load and store operations to corresponding data resources stored in the shared memory resource.

Eine oder mehrere Ausführungsformen können einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, eine auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Senden einer Speicherzugangsanfrage zu einer gemeinsam benutzten Speichersteuerung vorsehen, wobei die Speicherzugangsanfrage eine Last-/Speicheroperation aufweist und zum Identifizieren einer Adresse einer Datenressource dient, die in einer gemeinsam benutzten Speicherressource enthalten sein soll, die der gemeinsam benutzten Speichersteuerung entspricht, und jedem der mehreren unabhängigen Knoten wird ein Zugang zu einem entsprechenden Teil der gemeinsam benutzten Speicherressource gewährt.One or more embodiments may provide an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software based logic and method for sending a memory access request to a shared memory controller, the memory access request including a load/ comprises a memory operation and is for identifying an address of a data resource to be included in a shared memory resource corresponding to the shared memory controller and granting each of the plurality of independent nodes access to a corresponding portion of the shared memory resource.

In zumindest einem Beispiel weist die Speicherzugangsanfrage eine Lastanfrage auf und die I/O-Logik dient ferner zum Empfangen von Daten entsprechend der Datenressource als Antwort auf die Lastanfrage.In at least one example, the memory access request comprises a load request, and the I/O logic is further operable to receive data corresponding to the data resource in response to the load request.

In zumindest einem Beispiel weist die Speicherzugangsanfrage eine Speicheranfrage auf.In at least one example, the memory access request comprises a memory request.

In zumindest einem Beispiel wird Speicherzugangsanfrage unter Verwendung eines gemeinsam benutzten Speicherverbindungsprotokolls gesendet und das gemeinsam benutzte Speicherverbindungsprotokoll enthält ein Speicherzugangsprotokoll, das eine physische Schichtlogik eines anderen Zwischenverbindungsprotokolls benutzt.In at least one example, a memory access request is sent using a shared memory connection protocol, and the shared memory connection protocol includes a memory access protocol that uses physical layer logic of another interconnect protocol.

In zumindest einem Beispiel sieht das gemeinsam benutzte Speicherverbindungsprotokoll ein Multiplexen zwischen einer Sendung von Daten der Speicherzugangsprotokolldaten und einer Sendung von Daten des Zwischenverbindungsprotokolls vor.In at least one example, the shared memory connection protocol provides for multiplexing between transmission of memory access protocol data and transmission of interconnect protocol data.

In zumindest einem Beispiel werden Übergänge zwischen Zwischenverbindungsprotokolldaten und Speicherzugangsprotokolldaten durch zumindest eines der folgenden identifiziert: (a) eine Sync-Kopfzeile, die zum Identifizieren der Übergänge codiert ist; (b) einen Datenstart-Framing-Token, der zum Identifizieren der Übergänge codiert ist; und (c) einen Datenstromende-Framing-Token, der zum Identifizieren der Übergänge codiert ist.In at least one example, transitions between interconnect protocol data and memory access protocol data are identified by at least one of the following: (a) a sync header encoded to identify the transitions; (b) a data start framing token encoded to identify the transitions; and (c) an end-of-stream framing token encoded to identify the transitions.

In zumindest einem Beispiel weist das Speicherzugangsprotokoll ein SMI3 auf und das Zwischenverbindungsprotokoll weist ein auf PCIe basierendes Protokoll auf.In at least one example, the memory access protocol comprises an SMI3 and the interconnect protocol comprises a PCIe based protocol.

In zumindest einem Beispiel weist ein bestimmter der mehreren Knoten mehrfache CPU-Buchsen und einen lokalen Speicher auf. In zumindest einem Beispiel befindet sich die gemeinsam benutzte Speicherressource auf einer Vorrichtung getrennt vom bestimmten Knoten.In at least one example, a particular one of the multiple nodes has multiple CPU sockets and local memory. In at least one example, the shared memory resource resides on a device separate from the particular node.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, Auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Empfangen einer ersten Last-/Speicher- Nachricht von einem ersten unabhängigen CPU-Knoten, der bestimmte Daten in einem gemeinsam benutzten Speicher identifiziert, Vorsehen eines Zugangs zu den bestimmten Daten für den ersten CPU-Knoten als Antwort auf die erste Last-/Speicher-Nachricht, Empfangen einer zweiten Last-/Speicher-Nachricht von einem zweiten unabhängigen CPU-Knoten, der bestimmte Daten in einem gemeinsam benutzten Speicher identifiziert, und Vorsehen eines Zugangs zu den bestimmten Daten für den zweiten CPU-Speicher als Antwort auf die zweite Last-/Speicher-Nachricht vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware- and/or software-based logic, and method for receiving a first load/store message from a first independent CPU node identifying particular data in shared memory, providing access to the particular data for the first CPU node in response to the first load/store message, receiving a second load/store message from a second independent CPU node identifying particular data in a shared memory, and providing access to the particular data for the second CPU memory in response to the second load/store message.

In zumindest einem Beispiel werden jede der ersten und zweiten ersten Last-/Speicher-Nachrichten über eine Datenverbindung unter Verwendung eines gemeinsam benutzten Speicherverbindungsprotokolls empfangen.In at least one example, each of the first and second first load/store messages are received over a data connection using a shared memory connection protocol.

Zumindest einige Ausführungsformen können ein Identifizieren, dass der erste CPU-Knoten Zugang zu den bestimmten Daten hat, und Identifizieren, dass der zweite CPU-Knoten Zugang zu den bestimmten Daten hat, vorsehen.At least some embodiments may provide for identifying that the first CPU node has access to the particular data and identifying that the second CPU node has access to the particular data.

Zumindest einige Ausführungsformen können ein Verfolgen von Transaktionen, die den gemeinsam benutzten Speicher beinhalten, für den ersten wie auch zweiten CPU-Knoten vorsehen.At least some embodiments may provide tracking of transactions involving the shared memory for both the first and second CPU nodes.

Zumindest einige Ausführungsformen können ein Identifizieren von Verzeichnisinformationen der bestimmten Daten vorsehen, wobei die Verzeichnisinformationen identifizieren, ob die es bestimmten Daten in einem gemeinsam benutzten, ungecachten oder ausschließlichen Zustand sind.At least some embodiments may provide for identifying directory information of the particular data, the directory information identifying whether the particular data is in a shared, uncached, or exclusive state.

In zumindest einem Beispiel identifiziert die erste Last-/Speicher-Nachricht die bestimmten Daten durch eine erste Adresse und die zweite erste Last-/Speicher-Nachricht identifiziert die bestimmten Daten durch eine zweite, andere Adresse.In at least one example, the first load/store message identifies the particular data by a first address and the second first load/store message identifies the particular data by a second, different address.

Zumindest einige Ausführungsformen können ein Abbilden der ersten Adresse auf die bestimmten Daten und Abbilden der zweiten Adresse auf die bestimmten Daten vorsehen.At least some embodiments may provide for mapping the first address to the particular data and mapping the second address to the particular data.

Zumindest einige Ausführungsformen können ein System vorsehen, das einen ersten Knoten aufweist, der eine oder mehrere Prozessorvorrichtung(en) aufweist, einen zweiten Knoten, unabhängig vom ersten Knoten und der eine oder mehrere Prozessorvorrichtung(en) aufweist, und einen gemeinsam benutzten Speicher, der für jeden von dem ersten und zweiten Knoten durch ein Last-/Speicher-Speicherzugangsprotokoll zugänglich ist.At least some embodiments may provide a system that includes a first node that includes one or more processor devices, a second node that is independent of the first node and that includes one or more processor devices, and a shared memory that is accessible to each of the first and second nodes through a load/store memory access protocol.

In zumindest einem Beispiel hat der erste Knoten eine Fehlerdomäne unabhängig vom zweiten Knoten.In at least one example, the first node has a fault domain independent of the second node.

In zumindest einem Beispiel wird der erste Knoten von einem ersten Betriebssystem gesteuert und der zweite Knoten wird von einem zweiten Betriebssystem gesteuert.In at least one example, the first node is controlled by a first operating system and the second node is controlled by a second operating system.

In zumindest einem Beispiel ist das Last-/Speicher-Speicherzugangsprotokoll in einem gemeinsam benutzten Speicherverbindungsprotokoll enthalten und das gemeinsam benutzte Speicherverbindungsprotokoll wechselt zwischen dem Speicherzugangsprotokoll und einem anderen Zwischenverbindungsprotokoll.In at least one example, the load/store memory access protocol is contained within a shared memory connection protocol and the shared memory connection protocol alternates between the memory access protocol and another interconnect protocol.

In zumindest einem Beispiel kann eine gemeinsam benutzte Speichersteuerung Last- und Speicheroperationen vom ersten und zweiten Knoten bedienen und einen Zugang zum gemeinsam benutzten Speicher vorsehen.In at least one example, a shared memory controller may service load and memory operations from the first and second nodes and provide access to the shared memory.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Senden einer ersten Sync-Kopfzeile auf Spuren einer Datenverbindung vorsehen, wobei die erste Sync-Kopfzeile zum Identifizieren eines Übergangs von Daten eines Zwischenverbindungsprotokolls zu Daten eines Speicherzugangsprotokolls und Senden einer zweite Sync-Kopfzeile auf den Spuren der Datenverbindung codiert ist, wobei die zweite Sync-Kopfzeile zum Identifizieren eines Übergangs von Daten des Speicherzugangsprotokolls zu Daten des Zwischenverbindungsprotokolls codiert ist.One or more embodiment(s) may provide an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for sending a first sync header on lanes of a data link, the first sync header being encoded to identify a transition from interconnect protocol data to memory access protocol data and sending a second sync header on the lanes of the data link, the second sync header being encoded to identify a transition from memory access protocol data to data of the Interconnect protocol is encoded.

In zumindest einem Beispiel identifiziert jede Sync-Kopfzeile eine Art eines Datenblocks, welcher der Sync-Kopfzeile folgt.In at least one example, each sync header identifies a type of data block that follows the sync header.

In zumindest einem Beispiel ist jeder Datenblock eine vordefinierte Länge.In at least one example, each data block is a predefined length.

In zumindest einem Beispiel weist das Speicherzugangsprotokoll ein Protokoll auf, das auf SMI3 basiert.In at least one example, the memory access protocol comprises a protocol based on SMI3.

In zumindest einem Beispiel weist das Zwischenverbindungsprotokoll ein Protokoll auf, das auf einem auf PCIe basierenden Protokoll basiert.In at least one example, the interconnect protocol includes a protocol based on a PCIe-based protocol.

In zumindest einem Beispiel ist jede Sync-Kopfzeile nach einer 128b/130b Codierung codiert.In at least one example, each sync header is encoded using a 128b/130b encoding.

In zumindest einem Beispiel zeigt die zweite Sync-Kopfzeile einen Datenblock des Zwischenverbindungsprotokolls an und eine dritte Sync-Kopfzeile wird auf den Spuren der Datenverbindung gesendet, um einen gereihten Blocksatz des Zwischenverbindungsprotokolls anzuzeigen.In at least one example, the second sync header indicates an interconnect protocol data block and a third sync header is sent on the data link lanes to indicate a queued block set of the interconnect protocol.

In zumindest einem Beispiel ist die erste Sync-Kopfzeile mit abwechselnden Werten auf den Spuren codiert und die zweite Sync-Kopfzeile ist mit demselben Wert auf allen der Spuren codiert.In at least one example, the first sync header is encoded with alternating values on the tracks and the second sync header is encoded with the same value on all of the tracks.

In zumindest einem Beispiel weisen die Daten des Speicherzugangsprotokolls Verbindungsschichtdaten auf und die Daten des Zwischenverbindungsprotokolls weisen eines von Transaktionsschicht- und Datenverbindungsschichtpaketen auf.In at least one example, the storage access protocol data comprises link layer data and the interconnect protocol data comprises one of transaction layer and data link layer packets.

In zumindest einem Beispiel sind die Sync-Kopfzeilen gemäß dem Zwischenverbindungsprotokoll definiert.In at least one example, the sync headers are defined according to the interconnect protocol.

In zumindest einem Beispiel unterstützt das Speicherzugangsprotokoll eine Last-/Speicher-Speicherzugangsnachrichtenübermittlung.In at least one example, the memory access protocol supports load/store memory access messaging.

In zumindest einem Beispiel weisen die Speicherzugangsprotokolldaten eine Speicherzugangsnachrichtenübermittlung für einen Zugang zu einer gemeinsam benutzten Speicherressource auf, wobei jedem der mehreren unabhängigen Knoten Zugang zu einem entsprechenden Teil der gemeinsam benutzten Speicherressource gewährt wird.In at least one example, the memory access log data includes memory access messaging for access to a shared memory resource, each of the plurality of independent nodes being granted access to a corresponding portion of the shared memory resource.

In zumindest einem Beispiel hat jeder der mehreren unabhängigen Knoten eine unabhängige Fehlerdomäne.In at least one example, each of the multiple independent nodes has an independent fault domain.

In zumindest einem Beispiel weist die Datenverbindung zumindest vier Spuren auf.In at least one example, the data link has at least four lanes.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Empfangen einer ersten Sync-Kopfzeile auf Spuren einer Datenverbindung, wobei die erste Sync-Kopfzeile mit einer ersten Codierung codiert ist, Identifizieren, aus der ersten Codierung der ersten Sync-Kopfzeile, eines Übergangs von Daten eines Zwischenverbindungsprotokolls zu Daten eines Speicherzugangsprotokolls, Empfangen einer zweiten Sync-Kopfzeile auf den Spuren der Datenverbindung, wobei die zweite Sync-Kopfzeile mit einer zweiten Codierung codiert ist, und Identifizieren, aus der zweiten Codierung der zweiten Sync-Kopfzeile, eines Übergangs von Daten des Speicherzugangsprotokolls zu Daten des Zwischenverbindungsprotokolls vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for receiving a first sync header on lanes of a data link, wherein the first sync header is encoded with a first encoding, identifying, from the first encoding of the first sync header, a transition from data of an interconnection protocol to data of a memory access protocol, receiving a second sync header on the lanes of the data connection, the second sync header is encoded with a second encoding; and identifying, from the second encoding of the second sync header, a transition from memory access protocol data to interconnect protocol data.

In zumindest einem Beispiel identifiziert jede Sync-Kopfzeile eine Art eines Datenblocks, welcher der Sync-Kopfzeile folgt.In at least one example, each sync header identifies a type of data block that follows the sync header.

In zumindest einem Beispiel weist die Zwischenverbindungsprotokoll ein auf PCIe basierendes Protokoll auf.In at least one example, the interconnect protocol comprises a PCIe based protocol.

In zumindest einem Beispiel basiert das Speicherzugangsprotokoll auf SMI3.In at least one example, the memory access protocol is based on SMI3.

In zumindest einem Beispiel ist die Sync-Kopfzeile gemäß einer 128b/130b Codierung codiert.In at least one example, the sync header is encoded according to 128b/130b encoding.

In zumindest einem Beispiel weist die erste Codierung Werte von 01b und 10b auf, die auf den Spuren der Datenverbindung abwechseln.In at least one example, the first encoding has values of 01b and 10b alternating on the lanes of the data link.

In zumindest einem Beispiel weisen die Daten des Speicherzugangsprotokolls Last-/Speicher-Speicherzugangsnachrichten auf.In at least one example, the memory access protocol data comprises load/store memory access messages.

In zumindest einem Beispiel weisen die Speicherzugangsnachrichten Nachrichten für einen Zugang zu einer gemeinsam benutzten Speicherressource auf und jedem der mehreren unabhängigen Knoten in einem System wird Zugang zu einem entsprechenden Teil der gemeinsam benutzten Speicherressource gewährt.In at least one example, the memory access messages include messages for access to a shared memory resource and each of the multiple independent nodes in a system is granted access to a corresponding portion of the shared memory resource.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum empfangen einer ersten Sync-Kopfzeile auf Spuren einer Datenverbindung, wobei die erste Sync-Kopfzeile mit einer ersten Codierung codiert ist, Identifizieren aus der ersten Codierung der ersten Sync-Kopfzeile eines Übergangs von Daten eines Zwischenverbindungsprotokolls zu Daten eines Speicherzugangsprotokolls, Verarbeiten der Daten des Speicherzugangsprotokolls, Empfangen einer zweiten Sync-Kopfzeile auf den Spuren der Datenverbindung, wobei die zweite Sync-Kopfzeile mit einer zweiten Codierung codiert ist, und Identifizieren, aus der zweiten Codierung der zweiten Sync-Kopfzeile, eines Übergangs von Daten des Speicherzugangsprotokolls zu Daten des Zwischenverbindungsprotokolls vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for receiving a first sync header on tracks of a data link, wherein the first sync header is encoded with a first encoding, identifying from the first encoding of the first sync header a transition from interconnect protocol data to memory access protocol data, processing the memory access protocol data, receiving a second sync header on the lanes of the data link wherein the second sync header is encoded with a second encoding, and identifying, from the second encoding of the second sync header, a transition from memory access protocol data to interconnect protocol data.

In zumindest einem Beispiel weist das Zwischenverbindungsprotokoll ein auf PCIe basierendes Protokoll auf und das Speicherzugangsprotokoll basiert auf SMI3.In at least one example, the interconnect protocol comprises a PCIe based protocol and the memory access protocol is based on SMI3.

In zumindest einem Beispiel sind die Sync-Kopfzeilen gemäß PCIe.In at least one example, the sync headers are PCIe.

In zumindest einem Beispiel werden die Daten des Speicherzugangsprotokolls verarbeitet, um eine Speicherzugangsanfrage zu bedienen, die in den Daten des Speicherzugangsprotokolls enthalten ist.In at least one example, the memory access log data is processed to service a memory access request contained in the memory access log data.

In zumindest einem Beispiel ist die Speicherzugangsanfrage eine Anfrage einer gemeinsam benutzten Speicherressource, die von mehreren unabhängigen CPU-Knoten gemeinsam benutzt wird.In at least one example, the memory access request is a request for a shared memory resource shared by multiple independent CPU nodes.

In zumindest einem Beispiel weist die Speicherzugangsanfrage eine Last-/Speicher-Nachricht auf.In at least one example, the memory access request comprises a load/store message.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Senden eines ersten Datenstart-Framing-Tokens auf Spuren einer Datenverbindung, wobei der erste Datenstart-Framing-Token zum Identifizieren eines Übergangs von Daten eines Zwischenverbindungsprotokolls zu Daten eines Speicherzugangsprotokolls codiert ist, und Senden eines zweiten Datenstart-Framing-Tokens auf den Spuren der Datenverbindung, wobei der zweite Datenstart-Framing-Token zum Identifizieren eines Übergangs von Daten des Speicherzugangsprotokolls zu Daten des Zwischenverbindungsprotokolls codiert ist, vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for sending a first data start framing token on lanes of a data link wherein the first data start framing token is encoded to identify a transition from interconnect protocol data to memory access protocol data, and transmitting a second data start framing token on the lanes of the data link, wherein the second data start framing token is encoded to identify a Transition of data from memory to encoded to data of the interconnect protocol.

In zumindest einem Beispiel weist der erste Datenstart-Framing-Token einen modifizierten PCIe STP Framing-Token auf und der zweite Datenstart-Framing-Token weist einen PCIe STP Framing-Token auf.In at least one example, the first data start framing token comprises a modified PCIe STP framing token and the second data start framing token comprises a PCIe STP framing token.

In zumindest einem Beispiel enthält jeder Datenstart-Framing-Token ein Längenfeld.In at least one example, each data start framing token includes a length field.

In zumindest einem Beispiel wird der Übergang von Daten des Zwischenverbindungsprotokolls zu Daten des Speicherzugangsprotokolls im ersten Datenstart-Framing-Token durch einen Wert im Längenfeld des ersten Datenstart-Framing-Tokens angezeigt.In at least one example, the transition from interconnect protocol data to memory access protocol data in the first data start framing token is indicated by a value in the length field of the first data start framing token.

In zumindest einem Beispiel sind die Daten des Speicherzugangsprotokolls in einem Fenster zu senden, das durch das Längenfeld des ersten Datenstart-Framing-Tokens definiert ist.In at least one example, the memory access protocol data is to be sent in a window defined by the length field of the first data start framing token.

In zumindest einem Beispiel basiert das Speicherzugangsprotokoll auf SMI3.In at least one example, the memory access protocol is based on SMI3.

In zumindest einem Beispiel weist das Zwischenverbindungsprotokoll ein auf PCIe basierendes Protokoll auf.In at least one example, the interconnect protocol comprises a PCIe based protocol.

In zumindest einem Beispiel weisen die Daten des Speicherzugangsprotokolls Verbindungsschichtdaten auf und die Daten des Zwischenverbindungsprotokolls weisen eines von Transaktionsschicht- und Datenverbindungsschichtpaketen auf.In at least one example, the storage access protocol data comprises link layer data and the interconnect protocol data comprises one of transaction layer and data link layer packets.

In zumindest einem Beispiel dient die physische Schichtlogik ferner zum Senden der Daten des Speicherzugangsprotokolls und die Daten des Speicherzugangsprotokolls weisen Last-/Speicher-Speicherzugangsnachrichten auf.In at least one example, the physical layer logic is further to send the memory access protocol data and the memory access protocol data comprises load/store memory access messages.

In zumindest einem Beispiel weisen die Speicherzugangsprotokolldaten Speicherzugangsnachrichten für einen Zugang zu einer gemeinsam benutzten Speicherressource auf, und jedem der mehreren unabhängigen Knoten wird Zugang zu einem entsprechenden Teil der gemeinsam benutzten Speicherressource gewährt.In at least one example, the memory access log data includes memory access messages for access to a shared memory resource, and each of the plurality of independent nodes is granted access to a corresponding portion of the shared memory resource.

In zumindest einem Beispiel hat jeder der mehreren unabhängigen Knoten eine unabhängige Fehlerdomäne.In at least one example, each of the multiple independent nodes has an independent fault domain.

In zumindest einem Beispiel weist die Datenverbindung eine oder mehrere Spuren auf.In at least one example, the data connection includes one or more lanes.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Empfangen eines ersten Datenstart-Framing-Tokens auf Spuren einer Datenverbindung, Identifizieren, aus dem ersten Datenstart-Framing-Token, eines Eintreffens von Daten eines Speicherzugangsprotokolls, Empfangen eines zweiten Datenstart-Framing-Tokens auf Spuren der Datenverbindung, wobei sich der zweite Datenstart-Framing-Token vom ersten Datenstart-Framing-Token unterschiedet, und Identifizieren, aus dem zweiten Datenstart-Framing-Token, eines Eintreffens von Daten eines Zwischenverbindungsprotokolls vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for receiving a first data start framing token on lanes of a data link , identifying, from the first data start framing token, an arrival of data of a memory access protocol, receiving a second data start framing token on traces of the data connection, the second data start framing token differing from the first data start framing token, and identifying, from the second data start framing token, an arrival of data of an interconnect protocol.

In zumindest einem Beispiel weist der erste Datenstart-Framing-Token einen modifizierten PCIe STP Framing-Token auf und der zweite Datenstart-Framing-Token weist einen PCIe STP Framing-Token auf.In at least one example, the first data start framing token comprises a modified PCIe STP framing token and the second data start framing token comprises a PCIe STP framing token.

In zumindest einem Beispiel enthält jeder Datenstart-Framing-Token ein Längenfeld.In at least one example, each data start framing token includes a length field.

In zumindest einem Beispiel wird der Übergang von Daten des Zwischenverbindungsprotokolls zu Daten des Speicherzugangsprotokolls im ersten Datenstart-Framing-Token durch einen Wert im Längenfeld des ersten Datenstart-Framing-Tokens angezeigt.In at least one example, the transition from interconnect protocol data to memory access protocol data in the first data start framing token is indicated by a value in the length field of the first data start framing token.

In zumindest einem Beispiel basiert das Speicherzugangsprotokoll auf SMI3 und das Zwischenverbindungsprotokoll weist ein auf PCIe basierendes Protokoll auf.In at least one example, the memory access protocol is SMI3 based and the interconnect protocol is a PCIe based protocol.

In zumindest einem Beispiel werden die Daten des Speicherzugangsprotokolls empfangen undIn at least one example, the memory access protocol data is received and

werden die Daten des Zwischenverbindungsprotokolls empfangen.the data of the interconnect protocol is received.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Senden eines ersten Datenstromende-Framing-Tokens auf Spuren einer Datenverbindung, wobei der erste Datenstromende-Framing-Token zum Identifizieren eines Übergangs von einem Zwischenverbindungsprotokoll zu einem Speicherzugangsprotokoll codiert ist, Senden von Speicherzugangsprotokolldaten nach dem Übergang zum Speicherzugangsprotokoll, und Senden von Verbindungsschichtsteuerungsdaten des Speicherzugangsprotokolls, um einen Übergang vom Speicherzugangsprotokoll zum Zwischenverbindungsprotokoll zu identifizieren, vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for transmitting a first end-of-stream framing token on lanes of a data link wherein the first end-of-stream framing token is encoded to identify a transition from an interconnect protocol to a memory access protocol, sending memory access protocol data after the transition to the memory access protocol, and sending link layer control data of the memory access protocol to identify a transition from the memory access protocol to the interconnect protocol.

In zumindest einem Beispiel sind die Speicherzugangsprotokolldaten auf der Datenverbindung zu senden, bis die Verbindungsschichtsteuerungsdaten gesendet werden.In at least one example, the memory access protocol data is to be sent on the data link until the link layer control data is sent.

In zumindest einem Beispiel veranlasst der Übergang zum Speicherzugangsprotokoll einen Übergang von der Zwischenverbindungsprotokolllogik, die Daten auf der Datenverbindung behandelt, zur Speicherzugangsprotokolllogik, die Daten auf der Datenverbindung behandelt.In at least one example, the transition to memory access protocol causes a transition from interconnect protocol logic handling data on the data link to memory access protocol logic handling data on the data link.

In zumindest einem Beispiel weist das Speicherzugangsprotokoll ein Protokoll auf, das auf SMI3 basiert.In at least one example, the memory access protocol comprises a protocol based on SMI3.

In zumindest einem Beispiel weist das Zwischenverbindungsprotokoll ein auf PCIe basierendes Protokoll auf.In at least one example, the interconnect protocol comprises a PCIe based protocol.

In zumindest einem Beispiel weist der erste Datenstromende-Framing-Token einen modifizierten PCIe EDS Framing-Token auf.In at least one example, the first end-of-stream framing token comprises a modified PCIe EDS framing token.

In zumindest einem Beispiel wird ein PCIe EDS zum Anzeigen eines Endes eines Satzes von PCIe-Transaktionsschichtpaketen und eines Eintreffens eines PCIe gereihten Blocksatzes gesendet.In at least one example, a PCIe EDS is sent to indicate an end of a set of PCIe transaction layer packets and an arrival of a PCIe queued block set.

In zumindest einem Beispiel weisen die Daten des Speicherzugangsprotokolls Verbindungsschichtdaten auf und die Daten des Zwischenverbindungsprotokolls weisen eines von Transaktionsschicht- und Datenverbindungsschichtpaketen auf.In at least one example, the storage access protocol data comprises link layer data and the interconnect protocol data comprises one of transaction layer and data link layer packets.

In zumindest einem Beispiel werden die Daten des Speicherzugangsprotokolls gesendet und weisen Last-/Speicher-Speicherzugangsnachrichten auf.In at least one example, the memory access protocol data is broadcast and includes load/store memory access messages.

In zumindest einem Beispiel weist das Speicherzugangsprotokolldaten Speicherzugangsnachrichten für einen Zugang zu einer gemeinsam benutzten Speicherressource auf, und jedem der mehreren unabhängigen Knoten wird Zugang zu einem entsprechenden Teil der gemeinsam benutzten Speicherressource gewährt.In at least one example, the memory access log data includes memory access messages for access to a shared memory resource, and each of the plurality of independent nodes is granted access to a corresponding portion of the shared memory resource.

In zumindest einem Beispiel hat jeder der mehreren unabhängigen Knoten eine unabhängige Fehlerdomäne.In at least one example, each of the multiple independent nodes has an independent fault domain.

Eine oder mehrere Ausführungsform(en) kann (können) einen Apparat, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium, auf Hardware- und/oder Software basierende Logik und ein Verfahren zum Empfangen eines ersten Datenstromende-Framing-Tokens auf Spuren einer Datenverbindung, die zum Identifizieren eines Übergangs von einem Zwischenverbindungsprotokoll zu einem Speicherzugangsprotokoll codiert ist, Übergehen zu einer Verwendung einer Verbindungsschichtlogik des Speicherzugangsprotokolls auf der Basis des ersten Datenstromende-Framing-Tokens, Empfangen von Speicherzugangsprotokollverbindungsschichtdaten, Empfangen von Verbindungsschichtsteuerungsdaten des Speicherzugangsprotokolls zum Identifizieren eines Übergang vom Speicherzugangsprotokoll zum Zwischenverbindungsprotokoll, und Übergehen zu einer Verwendung einer Verbindungsschichtlogik des Zwischenverbindungsprotokolls auf der Basis der Verbindungsschichtsteuerungsdaten, vorsehen.One or more embodiment(s) may include an apparatus, system, machine-readable memory, machine-readable medium, hardware and/or software-based logic, and method for receiving a first end-of-stream framing token on lanes of a data link coded to identify a transition from an interconnect protocol to a memory access protocol, transitioning to using memory access protocol link layer logic based on the first end-of-stream framing token, receiving memory access protocol link layer data, receiving memory access protocol link layer control data to identify a transition from memory access protocol to interconnect protocol, and transitioning to using link layer logic of the interconnect protocol based on the link layer control data.

In zumindest einem Beispiel basiert das Speicherzugangsprotokoll auf SMI3.In at least one example, the memory access protocol is based on SMI3.

In zumindest einem Beispiel weist das Zwischenverbindungsprotokoll ein auf PCIe basierendes Protokoll auf.In at least one example, the interconnect protocol comprises a PCIe based protocol.

In zumindest einem Beispiel weist der erste Datenstromende-Framing-Token einen modifizierten PCIe EDS Framing-Token auf.In at least one example, the first end-of-stream framing token comprises a modified PCIe EDS framing token.

In zumindest einem Beispiel weisen die Daten des Speicherzugangsprotokolls Verbindungsschichtdaten auf und die Daten des Zwischenverbindungsprotokolls weisen eines von Transaktionsschicht- und Datenverbindungsschichtpaketen auf.In at least one example, the storage access protocol data comprises link layer data and the interconnect protocol data comprises one of transaction layer and data link layer packets.

In zumindest einem Beispiel weisen die Daten des Speicherzugangsprotokolls Last-/Speicher-Speicherzugangsnachrichten auf.In at least one example, the memory access protocol data comprises load/store memory access messages.

Claims (22)

Vorrichtung, umfassend: eine Platine, die eine Peripheral Component Interconnect Express-Elektrik, PCIe-Elektrik, umfasst, wobei die PCIe-Elektrik eine PCIe physische Schicht implementieren soll; eine erste Protokollstapellogik, um wenigstens einen Teil eines PCIe-Stapels zu implementieren, wobei die erste Protokollstapellogik dazu dient, Peripheral Component Interconnect Express-basierte Pakete, PCIe-basierte Pakete, zu erzeugen und zu bewirken, dass die PCIe-basierten Pakete über die PCIe physische Schicht gesendet werden; und eine zweite Protokollstapellogik, um wenigstens einen Teil eines anderen Protokollstapels zu implementieren, wobei der andere Protokollstapel ein Speicherprotokoll umfasst, und die zweite Protokollstapellogik dazu dient, Flits eines unterschiedlichen Protokolls zu erzeugen und zu bewirken, dass die Flits über die PCIe physische Schicht gesendet werden.Device comprising: a circuit board containing Peripheral Component Interconnect Express electrical, PCIe electrical, wherein the PCIe electrical is to implement a PCIe physical layer; a first protocol stack logic to implement at least part of a PCIe stack, wherein the first protocol stack logic is to generate Peripheral Component Interconnect Express based packets, PCIe based packets and cause the PCIe based packets to be sent over the PCIe physical layer; and a second protocol stack logic to implement at least part of another protocol stack, wherein the other protocol stack comprises a storage protocol, and the second protocol stack logic is to generate flits of a different protocol and cause the flits to be sent over the PCIe physical layer. Vorrichtung nach Anspruch 1, wobei das unterschiedliche Protokoll ein Nicht-PCIe-Protokoll umfasst.device after claim 1 , wherein the different protocol comprises a non-PCIe protocol. Vorrichtung nach Anspruch 1 oder 2, ferner umfassend einen oder mehrere Kerne, um Daten zu erzeugen, die in die Flits aufzunehmen sind.device after claim 1 or 2 , further comprising one or more cores to generate data to be included in the flits. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei die zweite Protokollstapellogik zwei oder mehrere von einer Transaktionsschicht, einer Protokollschicht und einer Verbindungsschicht implementiert.Device according to one of Claims 1 until 3 , wherein the second protocol stack logic implements two or more of a transaction layer, a protocol layer, and a link layer. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei das unterschiedliche Protokoll ein Speicherzugriffsprotokoll umfasst.Device according to one of Claims 1 until 4 , wherein the different protocol comprises a memory access protocol. Vorrichtung nach einem der Ansprüche 1 bis 5, wobei das unterschiedliche Protokoll ein Cache-kohärentes Protokoll umfasst.Device according to one of Claims 1 until 5 , wherein the different protocol comprises a cache-coherent protocol. Vorrichtung nach einem der Ansprüche 1 bis 6, wobei das unterschiedliche Protokoll eine niedrigere Latenz als PCIe realisiert.Device according to one of Claims 1 until 6 , the different protocol realizing lower latency than PCIe. Vorrichtung nach einem der Ansprüche 1 bis 7, ferner umfassend einen Controller, um die PCIe-basierten Pakete und die Flits des anderen Protokolls zu multiplexen.Device according to one of Claims 1 until 7 , further comprising a controller to multiplex the PCIe-based packets and the different protocol flits. Vorrichtung nach einem der Ansprüche 1 bis 8, ferner umfassend eine Verbindung, zum Verbinden mit einer anderen Vorrichtung, wobei die Verbindung durch eine PCIe-Elektrik implementiert ist.Device according to one of Claims 1 until 8th , further comprising a connection for connecting to another device, the connection being implemented by PCIe electronics. Verfahren, umfassend: Erzeugen von PCIe-basierten Paketen in einem ersten Modus; Senden der PCIe-basierten Paketen über die PCIe-Elektrik einer Platine während des ersten Modus, wobei die PCIe-Elektrik eine PCIe physische Schicht einer Verbindung implementiert; Erzeugen von Flits eines unterschiedlichen anderen Protokolls in einem zweiten Modus, wobei das andere Protokoll ein Speicherverbindungsprotokoll umfasst; und Senden der Flits über die PCIe-Elektrik der Platine während des zweiten Modus.Method comprising: generating PCIe-based packets in a first mode; Sending the PCIe-based packets over a board's PCIe electronics during the first mode, wherein the PCIe electrical implements a PCIe physical layer of an interconnect; generating flits of a different different protocol in a second mode, wherein the other protocol comprises a storage connection protocol; and sending the flits over the PCIe electronics of the board during the second mode. Verfahren nach Anspruch 10, ferner umfassend das Multiplexen des Sendens der Pakete und des Sendens der Flits.procedure after claim 10 , further comprising multiplexing the sending of the packets and the sending of the flits. Verfahren nach Anspruch 10 oder 11, wobei in den Flits gesendete Daten eine niedrigere Latenz aufweisen als in den Paketen gesendete Daten.procedure after claim 10 or 11 , where data sent in the flits has lower latency than data sent in the packets. Verfahren nach einem der Ansprüche 10 bis 12, wobei die Pakete und Flits von einem ersten Gerät auf der Platine zu einem zweiten Gerät auf der Platine gesendet werden.Procedure according to one of Claims 10 until 12 , where the packets and flits are sent from a first device on the board to a second device on the board. Verfahren nach einem der Ansprüche 10 bis 13, wobei das Speicherverbindungsprotokoll ein Cache-kohärentes Protokoll umfasst.Procedure according to one of Claims 10 until 13 , wherein the memory connection protocol comprises a cache-coherent protocol. System, umfassend: eine Zwischenverbindung, die PCIe-Elektrik umfasst, wobei die PCIe-Elektrik eine PCIe physische Schicht implementieren soll; ein erstes Gerät; ein zweites Gerät, das über die Zwischenverbindung mit dem ersten Gerät gekoppelt ist, wobei das zweite Gerät umfasst: eine erste Protokollstapellogik, um wenigstens einen Teil eines PCIe-Stapels zu implementieren, wobei die erste Protokollstapellogik dazu dient, PCIe-basierte Pakete zu erzeugen und zu bewirken, dass die PCIe-basierten Pakete über die PCIe physische Schicht gesendet werden; und eine zweite Protokollstapellogik, um wenigstens einen Teil eines anderen Protokollstapels zu implementieren, wobei der andere Protokollstapel ein Speicherprotokoll umfasst, und die zweite Protokollstapellogik dazu dient, Flits eines unterschiedlichen Protokolls zu erzeugen und zu bewirken, dass die Flits über die PCIe physische Schicht gesendet werden.System comprising: an interconnect that includes PCIe electrical equipment, wherein the PCIe electrical is to implement a PCIe physical layer; a first device; a second device coupled to the first device via the interconnect, wherein the second device comprises: a first protocol stack logic to implement at least part of a PCIe stack, wherein the first protocol stack logic is to generate PCIe-based packets and cause the PCIe-based packets to be sent over the PCIe physical layer; and a second protocol stack logic to implement at least part of another protocol stack, wherein the other protocol stack comprises a storage protocol, and the second protocol stack logic is to generate flits of a different protocol and cause the flits to be sent over the PCIe physical layer. System nach Anspruch 15, wobei sich das erste Gerät und das zweite Gerät auf demselben Package befinden.system after claim 15 , where the first device and the second device are on the same package. System nach Anspruch 15 oder 16, wobei sich das erste Gerät und das zweite Gerät auf einer selben Platine befinden.system after claim 15 or 16 , where the first device and the second device are on the same circuit board. System nach einem der Ansprüche 15 bis 17, wobei das unterschiedliche Protokoll ein Nicht-PCIe-Protokoll umfasst.system according to one of the Claims 15 until 17 , wherein the different protocol comprises a non-PCIe protocol. System nach einem der Ansprüche 15 bis 18, wobei das erste Gerät einen Prozessorkern umfasst.system according to one of the Claims 15 until 18 , wherein the first device comprises a processor core. System nach einem der Ansprüche 15 bis 19, wobei die zweite Protokollstapellogik zwei oder mehrere von einer Transaktionsschicht, einer Protokollschicht und einer Verbindungsschicht implementiert.system according to one of the Claims 15 until 19 , wherein the second protocol stack logic implements two or more of a transaction layer, a protocol layer, and a link layer. System nach einem der Ansprüche 15 bis 20, wobei das unterschiedliche Protokoll ein Speicherzugriffsprotokoll umfasst.system according to one of the Claims 15 until 20 , wherein the different protocol comprises a memory access protocol. System nach einem der Ansprüche 15 bis 21, wobei das unterschiedliche Protokoll eine Datenkommunikation mit einer niedrigeren Latenz als das PCIe-basierte Protokoll ermöglicht.system according to one of the Claims 15 until 21 , where the different protocol is a Enables data communication with a lower latency than the PCIe-based protocol.
DE112013007842.2T 2013-12-26 2013-12-26 SYSTEM, DEVICE AND METHOD FOR GENERATION AND TRANSMISSION FLITS OF DIFFERENT PROTOCOLS IN DIFFERENT MODES Active DE112013007842B3 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE112013007842 2013-12-26

Publications (1)

Publication Number Publication Date
DE112013007842B3 true DE112013007842B3 (en) 2023-04-06

Family

ID=85573758

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013007842.2T Active DE112013007842B3 (en) 2013-12-26 2013-12-26 SYSTEM, DEVICE AND METHOD FOR GENERATION AND TRANSMISSION FLITS OF DIFFERENT PROTOCOLS IN DIFFERENT MODES

Country Status (1)

Country Link
DE (1) DE112013007842B3 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130163605A1 (en) 2011-12-27 2013-06-27 Prashant R. Chandra Multi-protocol i/o interconnect including a switching fabric

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130163605A1 (en) 2011-12-27 2013-06-27 Prashant R. Chandra Multi-protocol i/o interconnect including a switching fabric

Similar Documents

Publication Publication Date Title
DE112013007724B4 (en) SYSTEM, APPARATUS AND METHOD FOR SHARING MEMORY AND I/O SERVICES BETWEEN NODES
DE112013007732B4 (en) System and device for determining and reporting a fault on a web
DE112013007734B4 (en) DEVICES, METHODS AND SYSTEMS FOR IDENTIFYING A PROTOCOL THAT USES A PHYSICAL CONNECTION
DE112017006557T5 (en) BIMODAL PHY FOR LOW LATENCY IN HIGH-SPEED CONNECTION PATHS
DE112013004094B4 (en) High performance interconnect physical layer
DE112013007726T5 (en) Improvements to an interconnect retimer
DE112017001430T5 (en) IN-BAND RETIMER REGISTER IN TOUCH
DE102020120102A1 (en) Global permanent memory flush
DE112018002466T5 (en) DEVIATING EQUALIZATION AT LOWER DATA RATES
DE112018002469T5 (en) Alternative protocol negotiation in a high performance coupling structure
DE112017005002T5 (en) CONNECTING PHYSICAL LAYER INTERFACE ADAPTER
DE102020116195A1 (en) PERFORMANCE MANAGEMENT FOR NEW DRIVER DEVICES
DE102020128760A1 (en) CONDITIONS WITH PARTIAL JOINT WIDTH FOR MULTIWAY CONNECTIONS
DE102020125353A1 (en) TRANSACTION LAYER PACKAGE FORMAT
DE112017006523T5 (en) RETIMER WITH SHORT LATEN TIME
DE112017003301T5 (en) Inter processor power state change
JP2017504089A5 (en)
DE102018005753A1 (en) SERDES LINK TRAINING
DE112018001138T5 (en) HIGH POWER CONNECTION
DE112018001088T5 (en) APPLYING FRAMING RULES FOR A HIGH-SPEED DATA CONNECTION
DE112017004963T5 (en) TENSION-MODULATED CONTROL LANE
DE112016006065T5 (en) SPECULATIVE NUMBERING OF ADDRESS SPACES FOR BUS SETUP FUNCTIONS
DE112014006490T5 (en) Method, apparatus and system for controlling power of unused hardware of a link interface
DE102020130536A1 (en) Adaptive entry and exit from low energy states
DE102020101958A1 (en) DYNAMIC LANE ACCESS SWITCHING BETWEEN PCIE ROOTS

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R129 Divisional application from

Ref document number: 112013007724

Country of ref document: DE

R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final