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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 37
- 230000005540 biological transmission Effects 0.000 title description 11
- 238000003860 storage Methods 0.000 claims abstract description 28
- 230000002093 peripheral effect Effects 0.000 claims abstract description 15
- 230000015654 memory Effects 0.000 claims description 356
- 238000004891 communication Methods 0.000 claims description 36
- 230000007704 transition Effects 0.000 description 51
- 238000009432 framing Methods 0.000 description 47
- 238000012545 processing Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000014616 translation Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 210000000329 smooth muscle myocyte Anatomy 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000012163 sequencing technique Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013146 percutaneous coronary intervention Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- RXSSENVGBNPHJJ-LBPRGKRZSA-N (2s)-2-(morpholine-4-carbonyloxy)-3-phenylpropanoic acid Chemical compound C([C@@H](C(=O)O)OC(=O)N1CCOCC1)C1=CC=CC=C1 RXSSENVGBNPHJJ-LBPRGKRZSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000006880 cross-coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000000543 intermediate Substances 0.000 description 1
- 238000004460 liquid liquid chromatography Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image 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
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
The pamphlet
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. 12 is an illustration of data being transferred according to another example shared memory connection.7A -
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. 12 is an illustration of data being transferred according to another example shared memory connection.8th -
9A-9D sind Ablaufdiagramme, die beispielhafte Techniken zur Speicherzugangsnachrichtenübermittlung zeigen.9A- 12 are flow charts showing example techniques for memory access messaging.9D -
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
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.
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,
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
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/
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
In Hinblick nun auf
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
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
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
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,
Unter Bezugnahme auf
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
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
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.
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
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.
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
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
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
Unter Bezugnahme im Anschluss auf
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
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
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
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
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
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
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
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
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
Als weiteres Beispiel, wie in dem vereinfachten Blockdiagramm 500b von
Das in
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
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
In einigen Implementierungen, wie jenen, die in dem Beispiel von
In Hinblick nun auf
In dem Beispiel von
Unter erneuter Bezugnahme auf das Beispiel von
In Fortsetzung mit dem Beispiel von
Obwohl im Beispiel von
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
In Hinblick nun auf
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
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
In dem Beispiel von
In Hinblick nun auf
In dem Beispiel von
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
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
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,
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
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
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
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
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,
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
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
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,
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
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,
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
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,
Unter Bezugnahme nun auf
Im Speziellen in der Ausführungsform von
Unter weiterer Bezugnahme auf
In Hinblick nun auf
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
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
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
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
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
Unter Bezugnahme nun auf
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
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
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
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
Wie in
Unter Bezugnahme nun auf
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
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
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
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
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)
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)
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 |
-
2013
- 2013-12-26 DE DE112013007842.2T patent/DE112013007842B3/en active Active
Patent Citations (1)
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 |