DE102018004327A1 - Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher - Google Patents

Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher Download PDF

Info

Publication number
DE102018004327A1
DE102018004327A1 DE102018004327.5A DE102018004327A DE102018004327A1 DE 102018004327 A1 DE102018004327 A1 DE 102018004327A1 DE 102018004327 A DE102018004327 A DE 102018004327A DE 102018004327 A1 DE102018004327 A1 DE 102018004327A1
Authority
DE
Germany
Prior art keywords
memory
fpga
processor
mass storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018004327.5A
Other languages
English (en)
Inventor
Rameshkumar Illikkal
Ananth Sankaranarayanan
David Zimmerman
Pratik Marolia
Suchit SUBHASCHANDRA
Dave Minturn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018004327A1 publication Critical patent/DE102018004327A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

Aspekte der Ausführungsformen beziehen sich auf Systeme, Vorrichtungen und Verfahren zum Zugreifen auf als Arbeitsspeicher genutzten Massenspeicher. Ausführungsformen beinhalten einen Mikroprozessor, der einen Mikroprozessor-System-Agent und ein Field Programmable Gate Array(FPGA) beinhaltet. Das FPGA beinhaltet einen FPGA-System-Agent, um vom Mikroprozessor-System-Agent über eine Kommunikationsverbindung empfangene Arbeitsspeicherzugriffsanfragen zu verarbeiten; eine Arbeitsspeichersteuerung, die auf kommunizierende Weise mit dem System Agent gekoppelt ist; und eine serielle Hochgeschwindigkeitsschnittstelle, um den System Agent mit einem Massenspeichersystem zu verbinden. Ausführungsformen können auch eine Massenspeichervorrichtung beinhalten, die durch das High-Speed Serial Interface mit dem FPGA verbunden ist.

Description

  • GEBIET
  • Diese Offenbarung betrifft Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher.
  • ALLGEMEINER STAND DER TECHNIK
  • Auf Massenspeichervorrichtungen wird oft als Vorrichtungen an einer Hardwareschnittstelle mit langer Latenz durch ineffiziente Softwareschichten zugegriffen. Mit der Einführung von Massenspeichervorrichtungen mit niedriger Latenz werden die Zugriffslatenzen für diese Vorrichtungen sehr niedrig und nähern sich DDR-Arbeitsspeicherzugriffslatenzen an.
  • Figurenliste
    • 1 stellt eine Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Mehrkernprozessor beinhaltet, dar.
    • 2 ist ein schematisches Diagramm einer beispielhaften Multi-Chip-Plattform, die ein Field Programmable Gate Array und einen System Agent gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet.
    • 3 ist ein schematisches Diagramm einer weiteren beispielhaften Multi-Chip-Plattform, die ein Field Programmable Gate Array und einen System Agent gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet.
    • 4 ist ein schematisches Diagramm einer beispielhaften Multi-Chip-Plattform, die ein Field Programmable Gate Array und einen System Agent beinhaltet, das Inline-Beschleunigerschaltungen gemäß Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 5A ist ein schematisches Diagramm einer beispielhaften Multi-Chip-Plattform, die ein Field Programmable Gate Array und einen System Agent zum Verbinden mit einem mittels Fabric verbundenen als Arbeitsspeicher genutzten Massenspeicher gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet.
    • 5B ist ein schematisches Diagramm eines beispielhaften mittels Fabric verbundenen als Arbeitsspeicher genutzten Massenspeichers gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6A ist ein Prozessflussdiagramm zum Verarbeiten einer Arbeitsspeicherzugriffsanfrage gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6B ist ein Prozessflussdiagramm für eine asynchrone Arbeitsspeicherzugriffsausführung gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 6C ist ein Prozessflussdiagramm zum Durchführen einer Inline-Datenverarbeitung gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 7 ist ein schematisches Diagramm einer Ausführungsform einer Fabric, die aus Punkt-zu-Punkt-Verbindungen zusammengesetzt ist, die einen Satz Komponenten gemäß Ausführungsformen der vorliegenden Offenbarung miteinander verbinden.
    • 8 ist ein schematisches Diagramm einer Ausführungsform eines geschichteten Protokollstapels gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 9 ist ein schematisches Diagramm einer Ausführungsform eines PCIe-Transaktionsdeskriptors gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 10 ist ein schematisches Diagramm einer Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Fabric gemäß Ausführungsformen der vorliegenden Offenbarung.
    • 11 ist ein schematisches Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor gebildet ist, der Ausführungseinheiten beinhaltet, um einen Befehl auszuführen, wobei eine oder mehrere der Verbindungen ein oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Offenbarung implementieren.
    • 12 ist ein schematisches Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche konkrete Details dargelegt, wie etwa Beispiele konkreter Arten von Prozessoren und von Systemkonfigurationen, konkrete Hardwarestrukturen, konkrete Architektur- und Mikroarchitekturdetails, konkrete Registerkonfigurationen, konkrete Befehlsarten, konkrete Systemkomponenten, konkrete Maße/Höhen, konkrete Prozessor-Pipeline-Stufen und Operationen etc., um ein umfassendes Verständnis der vorliegenden Offenbarung zu bieten. Für einen Fachmann wird jedoch ersichtlich sein, dass diese konkreten Details nicht umgesetzt werden müssen, um die vorliegende Offenbarung zu praktizieren. In anderen Fällen wurden allgemein bekannte Komponenten oder Verfahren, wie etwa konkrete und alternative Prozessorarchitekturen, konkrete(r) Logikschaltungen/Code für beschriebene Algorithmen, konkreter Firmwarecode, konkrete Verbindungsoperationen, konkrete Logikkonfigurationen, konkrete Herstellungstechniken und -materialien, konkrete Compiler-Implementierungen, der konkrete Ausdruck von Algorithmen in Code, konkrete Abschaltungs- und Gating-Techniken/-logik und andere konkrete Betriebsdetails von Computersystemen, nicht detailliert beschrieben, um ein unnötiges Verschleiern der vorliegenden Offenbarung zu vermeiden.
  • Die folgenden Ausführungsformen können zwar unter Bezugnahme auf Energieeinsparung und Energieeffizienz in konkreten integrierten Schaltungen, wie etwa in Rechenplattformen oder Mikroprozessoren, beschrieben sein, andere Ausführungsformen sind aber auch auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren hierin beschriebener Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch von einer besseren Energieeffizienz und Energieeinsparung profitieren können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ beschränkt. Sie können auch in anderen Vorrichtungen verwendet werden, wie etwa in Handheld-Vorrichtungen, Tablets, anderen dünnen Notebooks, System-on-a-Chip(SoC)-Vorrichtungen und eingebetteten Anwendungen. Einige Beispiele für Handheld-Vorrichtungen beinhalten Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten(PDAs) und Handheld-PCs. Eingebettete Anwendungen beinhalten typischerweise eine Mikrosteuerung, einen digitalen Signalprozessor(DSP), ein System-on-a-Chip, Netzwerkcomputer(NetPC), Set-Top-Boxen, Netzwerkknoten, Wide-Area-Network(WAN)-Schalter oder jedes beliebige andere System, das die nachfolgend gelehrten Funktionen und Operationen durchführen kann. Außerdem sind die hierin beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen für Energieeinsparung und -effizienz beziehen. Wie in der nachfolgenden Beschreibung leicht ersichtlich wird, sind die hierin beschriebenen Ausführungsformen von Verfahren, Einrichtungen und Systemen(sei es mit Bezug auf Hardware, Firmware, Software oder eine Kombination daraus) essenziell für eine Zukunft mit „grüner Technologie“ im Einklang mit Leistungsüberlegungen.
  • Mit sich weiterentwickelnden Rechensystemen werden die Komponenten darin komplexer. Infolgedessen nimmt auch die Komplexität der Verbindungsarchitektur, um die Komponenten zu koppeln und die Kommunikation zwischen diesen zu ermöglichen, zu, um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Betrieb der Komponenten erfüllt werden. Ferner fordern unterschiedliche Marktsegmente unterschiedliche Aspekte von Verbindungsarchitekturen, um den Bedürfnissen des Marktes zu entsprechen. Beispielsweise erfordern Server eine höhere Leistung, während das mobile Ökosystem manchmal in der Lage ist, für Energieersparnisse Gesamtleistung zu opfern. Es ist jedoch ein herausragender Zweck der meisten Fabrics, die höchstmögliche Leistung bei maximaler Energieersparnis bereitzustellen. Nachfolgend wird eine Anzahl an Verbindungen besprochen, die potenziell von Aspekten der hierin beschriebenen Offenbarung profitieren würden.
  • Bezug nehmend auf 1 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Mehrkernprozessor beinhaltet, abgebildet. Der Prozessor 100 beinhaltet jede(n) beliebige(n) Prozessor oder Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor(DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Koprozessor, ein System-on-a-Chip(SOC) oder eine andere Vorrichtung, um Code auszuführen. Der Prozessor 100 beinhaltet in einer Ausführungsform mindestens zwei Kerne - Kern 101 und 102 -, die asymmetrische Kerne oder symmetrische Kerne(die dargestellte Ausführungsform) beinhalten können. Der Prozessor 100 kann jedoch eine beliebige Anzahl an Verarbeitungselementen beinhalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele für Hardware-Verarbeitungselemente beinhalten: 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 beliebige andere Element, das fähig ist, einen Zustand für einen Prozessor zu halten, wie etwa einen Ausführungszustand oder einen Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf jede beliebige Hardware, die fähig ist, unabhängig Code, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder anderem Code, zugeordnet zu werden. Ein physischer Prozessor(oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl an anderen Verarbeitungselementen, wie etwa Kernen oder Hardware-Threads, beinhaltet.
  • Ein Kern bezieht sich oft auf Logik, die sich auf einer integrierten Schaltung befindet, die fähig ist, einen unabhängigen Architekturzustand beizubehalten, wobei jeder unabhängig beibehaltene Architekturzustand mindestens einigen dedizierten Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die fähig ist, einen unabhängigen Architekturzustand beizubehalten, wobei die unabhängig beibehaltenen Architekturzustände sich den Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, überlappen sich die Grenzen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen geteilt werden und andere einem Architekturzustand dediziert sind. Dennoch werden ein Kern und ein Hardware-Thread von einem Betriebssystem oft als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, individuell Operationen auf jedem logischen Prozessor zu planen.
  • Der physische Prozessor 100, wie in 1 dargestellt, beinhaltet zwei Kerne - Kern 101 und 102. Hier werden der Kern 101 und 102 als symmetrische Kerne angesehen, d. h. als Kerne mit den/der gleichen Konfigurationen, Funktionseinheiten und/oder Logik. In einer weiteren Ausführungsform beinhaltet der Kern 101 einen Out-of-order-Prozessorkern, während der Kern 102 einen In-order-Prozessorkern beinhaltet. Die Kerne 101 und 102 können jedoch individuell aus jeder beliebigen Art von Kern ausgewählt werden, wie etwa einem nativen Kern, einem von Software verwalteten Kern, einem Kern, der dazu ausgeführt ist, eine native Befehlssatzarchitektur(ISA - Instruction Set Architecture) auszuführen, einem Kern, der dazu ausgeführt ist, eine übersetzte Befehlssatzarchitektur(ISA) auszuführen, einem mittels Co-Design entworfenen Kern oder einem anderen bekannten Kern. In einer heterogenen Kernumgebung(d. h. asymmetrische Kerne) kann eine Form der Übersetzung, wie etwa eine binäre Übersetzung, genutzt werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Um die Besprechung fortzuführen, sind die in Kern 101 dargestellten Funktionseinheiten nachfolgend detaillierter beschrieben, da die Einheiten in Kern 102 in der abgebildeten Ausführungsform auf eine ähnliche Weise arbeiten.
  • Wie abgebildet, beinhaltet der Kern 101 zwei Hardware-Threads 101a und 101b, die auch als Hardware-Thread-Slots 101a und 101b bezeichnet werden können. Daher sehen Software-Instanzen, wie etwa ein Betriebssystem, in einer Ausführungsform den Prozessor 100 potenziell als vier separate Prozessoren an, d. h. vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Software-Threads gleichzeitig auszuführen. Wie vorstehend erwähnt, ist ein erster Thread Architekturzustandsregistern 101a zugeordnet, ein zweiter Thread ist Architekturzustandsregistern 101b zugeordnet, ein dritter Thread kann Architekturzustandsregistern 102a zugeordnet sein und ein vierter Thread kann Architekturzustandsregistern 102b zugeordnet sein. Hier kann jedes der Architekturzustandsregister(101a, 101b, 102a und 102b) wie vorstehend beschrieben als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet werden. Wie dargestellt, sind die Architekturzustandsregister 101a in den Architekturzustandsregistern 101b repliziert, sodass individuelle Architekturzustände/-kontexte fähig sind, für den logischen Prozessor 101a und den logischen Prozessor 101b gespeichert zu werden. Im Kern 101 können andere kleinere Ressourcen, wie etwa Befehlszeiger und Umbenennungslogik im Zuweiser- und Umbenennerblock 130, auch für die Threads 101a und 101b repliziert sein. Einige Ressourcen, wie etwa Neuordnungspuffer in der Neuordnungs-/Rückzugseinheit 135, ILTB 120, Lade-/Speicherpuffer und Warteschlangen können durch Partitionieren geteilt werden. Andere Ressourcen, wie etwa interne Universalregister,(ein) Seitentabellenbasisregister, Datencache und Daten-TLB auf niedriger Ebene 115,(eine) Ausführungseinheit(en) 140 und Abschnitte der Out-of-order-Einheit 135 werden potenziell vollständig geteilt.
  • Der Prozessor 100 beinhaltet oft weitere Ressourcen, die vollständig geteilt, durch Partitionieren geteilt oder(von) Verarbeitungselementen dediziert werden können. In 1 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es sei darauf hingewiesen, dass ein Prozessor beliebige dieser Funktionseinheiten beinhalten oder aussparen kann sowie beliebige andere bekannte Funktionseinheiten, Logik oder Firmware, die nicht abgebildet sind/ist, beinhalten kann. Wie dargestellt, beinhaltet der Kern 101 einen vereinfachten, repräsentativen Out-of-Order(OOO)-Prozessorkern. In unterschiedlichen Ausführungsformen kann aber ein In-order-Prozessor genutzt werden. Der OOO-Kern beinhaltet einen Sprungzielpuffer 120, um auszuführende/zu unternehmende Sprünge vorherzusagen, und einen Befehlsübersetzungspuffer(I-TLB) 120, um Adressübersetzungseinträge für Befehle zu speichern.
  • Der Kern 101 beinhaltet ferner das Decodierungsmodul 125, das mit der Ladeeinheit 120 gekoppelt ist, um geladene Elemente zu decodieren. Ladelogik beinhaltet in einer Ausführungsform individuelle Sequencer, die Thread-Slots 101a bzw. 101b zugeordnet sind. Üblicherweise ist der Kern 101 einer ersten ISA zugeordnet, die auf dem Prozessor 100 ausführbare Befehle definiert/spezifiziert. Oft beinhalten Maschinencodebefehle, die Teil der ersten ISA sind, einen Abschnitt des Befehls(bezeichnet als Opcode), der auf einen Befehl oder eine Operation, der/die auszuführen ist, hinweist oder diese(n) spezifiziert. Die Decodierungslogik 125 beinhaltet Schalttechnik, die diese Befehle anhand ihrer Opcodes erkennt und die decodierten Befehle wie von der ersten ISA definiert in der Pipeline zur Verarbeitung weiterleitet. Beispielsweise beinhalten, wie nachfolgend ausführlicher besprochen, die Decodierer 125 in einer Ausführungsform Logik, die dafür konzipiert oder ausgelegt ist, konkrete Befehle zu erkennen, wie etwa Transaktionsbefehle. Infolge der Erkennung durch die Decodierer 125 unternimmt die Architektur oder der Kern 101 konkrete vorab definierte Handlungen, um dem jeweiligen Befehl zugeordnete Aufgaben auszuführen. Es ist wichtig zu beachten, dass beliebige der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; von diesen können einige neue oder alte Befehle sein. Man beachte, dass die Decodierer 126 in einer Ausführungsform die gleiche ISA(oder eine Teilmenge davon) erkennen. Alternativ erkennen in einer heterogenen Kernumgebung die Decodierer 126 eine zweite ISA(entweder eine Teilmenge der ersten ISA oder eine andere ISA).
  • In einem Beispiel beinhaltet der Zuweiser- und Umbenennerblock 130 einen Zuweiser, um Ressourcen zu reservieren, wie etwa Registerspeicher, um Befehlsverarbeitungsergebnisse zu speichern. Jedoch sind die Threads 101a und 101b potenziell zu einer Out-of-order-Ausführung fähig, wobei der Zuweiser- und Umbenennerblock 130 auch weitere Ressourcen reserviert, wie etwa Neuordnungspuffer, um Befehlsergebnisse zu verfolgen. Die Einheit 130 kann auch einen Registerumbenenner beinhalten, um Programm-/Befehlsreferenzregister in andere Register innerhalb des Prozessors 100 umzubenennen. Die Neuordnungs-/Rückzugseinheit 135 beinhaltet Komponenten, wie etwa die vorstehend genannten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um eine Out-of-order-Ausführung und einen späteren In-order-Rückzug von in veränderter Reihenfolge ausgeführten Befehlen zu unterstützen.
  • Der Planer- und Ausführungseinheitenblock 140 beinhaltet in einer Ausführungsform eine Planereinheit, um Befehle/Operationen auf Ausführungseinheiten zu planen. Beispielsweise wird ein Gleitkommabefehl an einem Anschluss einer Ausführungseinheit geplant, der eine verfügbare Gleitkommaausführungseinheit aufweist. Den Ausführungseinheiten zugeordnete Registerspeicher sind auch enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten beinhalten eine Gleitkommaausführungseinheit, eine ganzzahlige Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und weitere bekannte Ausführungseinheiten.
  • Der Datencache und Datenübersetzungspuffer(D-TLB) auf niedriger Ebene 150 sind mit der/den Ausführungseinheit(en) 140 gekoppelt. Der Datencache dient dazu, kürzlich verwendete/bearbeitete Elemente zu speichern, wie etwa Datenoperanden, die potenziell in Arbeitsspeicherkohärenzzuständen gehalten werden. Der D-TLB dient dazu, kürzlich vorgenommene Adressübersetzungen von virtuell/linear zu physisch zu speichern. Als ein konkretes Beispiel kann ein Prozessor eine Seitentabellenstruktur beinhalten, um physischen Arbeitsspeicher in eine Vielzahl von virtuellen Seiten aufzubrechen.
  • Hier teilen sich die Kerne 101 und 102 den Zugriff auf Cache auf einer höheren Ebene oder weiter weg, wie etwa auf Cache der zweiten Ebene, der der On-Chip-Schnittstelle 110 zugeordnet ist. Es sei darauf hingewiesen, dass höhere Ebene oder weiter weg sich darauf bezieht, dass Cacheebenen sich erhöhen oder weiter weg von der/den Ausführungseinheit(en) liegen. In einer Ausführungsform ist ein Cache auf einer höheren Ebene ein Datencache der letzten Ebene - der letzte Cache in der Arbeitsspeicherhierarchie auf dem Prozessor 100 - wie etwa ein Datencache der zweiten oder dritten Ebene. Jedoch ist Cache auf einer höheren Ebene nicht so beschränkt, da er einem Befehlscache zugeordnet sein kann oder einen solchen beinhalten kann. Stattdessen kann ein Trace-Cache - eine Art von Befehlscache - nach dem Decodierer 125 gekoppelt sein, um kürzlich decodierte Traces zu speichern. Hier bezieht sich ein Befehl potenziell auf einen Makrobefehl(d. h. einen allgemeinen Befehl, der von den Decodierern erkannt wird), der sich in eine Anzahl an Mikrobefehlen(Mikrooperationen) decodieren kann.
  • In der abgebildeten Konfiguration beinhaltet der Prozessor 100 auch ein On-Chip-Schnittstellenmodul 110. Historisch war eine Arbeitsspeichersteuerung, die nachfolgend detaillierter beschrieben ist, in einem Rechensystem außerhalb des Prozessors 100 enthalten. In diesem Szenario soll die On-Chip-Schnittstelle 110 mit Vorrichtungen außerhalb des Prozessors 100 kommunizieren, wie etwa Systemarbeitsspeicher 175, einem Chipsatz(der oft einen Arbeitsspeichersteuerhub, um sich mit dem Arbeitsspeicher 175 zu verbinden, und einen I/O-Steuerhub, um sich mit Peripherievorrichtungen zu verbinden, beinhaltet), einem Arbeitsspeichersteuerhub, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann ein Bus 105 jede beliebige bekannte Verbindung beinhalten, wie etwa einen Multi-Drop-Bus, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten(z. B. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen GTL-Bus.
  • Der Arbeitsspeicher 175 kann dem Prozessor 100 dediziert oder mit anderen Vorrichtungen in einem System geteilt sein. Übliche Beispiele für Arten von Arbeitsspeicher 175 beinhalten DRAM, SRAM, nichtflüchtigen Speicher(NV-Speicher) und andere bekannte Speichervorrichtungen. Es sei darauf hingewiesen, dass die Vorrichtung 180 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, der/die mit einem Arbeitsspeichersteuerhub gekoppelt ist, Datenspeicher, der mit einem I/O-Steuerhub gekoppelt ist, einen drahtlosen Transceiver, eine Flash-Vorrichtung, eine Audiosteuerung, eine Netzwerksteuerung oder eine andere bekannte Vorrichtung beinhalten kann.
  • Seit Kurzem jedoch, da mehr Logik und Vorrichtungen in einen einzelnen Die integriert werden, wie etwa SOC, kann jede dieser Vorrichtungen in den Prozessor 100 eingebunden sein. Beispielsweise ist in einer Ausführungsform ein Arbeitsspeichersteuerhub im gleichen Paket und/oder Die wie der Prozessor 100. Hier beinhaltet ein Abschnitt des Kerns(ein Abschnitt auf dem Kern) 110 eine oder mehrere Steuerung(en) zum Bilden einer Schnittstelle mit anderen Vorrichtungen, wie etwa dem Arbeitsspeicher 175 oder einer Grafikvorrichtung 180. Die Konfiguration, die eine Verbindung und Steuerungen zum Bilden einer Schnittstelle mit derartigen Vorrichtungen beinhaltet, wird oft als On-core(oder Uncore-Konfiguration) bezeichnet. Zum Beispiel beinhaltet die On-Chip-Schnittstelle 110 eine Ringverbindung für auf dem Chip stattfindende Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung 105 für abseits des Chips stattfindende Kommunikation. Dennoch können in der SOC-Umgebung noch mehr Vorrichtungen, wie etwa die Netzwerkschnittstelle, Koprozessoren, Arbeitsspeicher 175, der Grafikprozessor 180 und beliebige andere bekannte Computervorrichtungen/-schnittstellen, in einem einzelnen Die oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 100 fähig, einen Compiler-, Optimierungs- und/oder Übersetzungscode 177 auszuführen, um Anwendungscode 176 zu kompilieren, übersetzen und/oder optimieren, um die hierin beschriebene(n) Einrichtung und Verfahren zu unterstützen oder mit dieser/diesen eine Schnittstelle zu bilden. Ein Compiler beinhaltet oft ein Programm oder einen Satz Programme, um Quelltext/-code in Zieltext/-code zu übersetzen. Üblicherweise erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und findet statt, um Programmiersprachencode einer hohen Ebene in Maschinen-/Assemblersprachencode einer niedrigen Ebene umzuwandeln. Dennoch können Single-pass-Compiler noch für eine einfache Kompilierung genutzt werden. Ein Compiler kann beliebige bekannte Kompilierungstechniken nutzen und beliebige bekannte Compileroperationen durchführen, wie etwa Lexikanalyse, Vorverarbeitung, Parsen, Semantikanalyse, Codeerzeugung, Codeumwandlung und Codeoptimierung.
  • Größere Compiler beinhalten oft mehrere Phasen, aber am häufigsten sind diese Phasen in zwei allgemeinen Phasen enthalten:(1) einem Frontend, d. h. hier können im Allgemeinen Syntaxverarbeitung, Semantikverarbeitung und etwas Umwandlung/Optimierung stattfinden, und(2) Backend, d. h. hier finden im Allgemeinen Analyse, Umwandlungen, Optimierungen und Codeerzeugung statt. Einige Compiler beziehen sich auf eine Mitte, was das Verschwimmen der Abgrenzung zwischen einem Frontend und einem Backend eines Compilers veranschaulicht. Folglich kann ein Bezug auf eine Einfügung, Zuordnung, Erzeugung oder eine andere Operation eines Compilers in einer/einem beliebigen der vorstehend genannten Phasen oder Durchläufe eines Compilers stattfinden. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Aufrufe, Funktionen etc. in einer oder mehreren Kompilierungsphasen ein, wie etwa das Einfügen von Aufrufen/Operationen in einer Frontendphase der Kompilierung und dann eine Umwandlung der Aufrufe/Operationen in Code einer niedrigeren Ebene während einer Umwandlungsphase. Es sei darauf hingewiesen, dass während einer dynamischen Kompilierung Compilercode oder dynamischer Optimierungscode derartige Operationen/Aufrufe einfügen kann sowie den Code für eine Ausführung während der Laufzeit optimieren kann. Als ein konkretes veranschaulichendes Beispiel kann Binärcode(bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination daraus beinhalten.
  • Die folgende detaillierte Beschreibung nimmt Bezug auf die beigefügten Zeichnungen. Die gleichen Bezugszeichen können in unterschiedlichen Zeichnungen verwendet werden, um gleiche oder ähnliche Elemente zu identifizieren. In der folgenden Beschreibung sind zum Zwecke der Erläuterung und nicht der Beschränkung konkrete Details dargelegt, wie etwa bestimmte Strukturen, Architekturen, Schnittstellen, Techniken etc., um ein umfassendes Verständnis der verschiedenen Aspekte verschiedener Ausführungsformen zu ermöglichen. Für einen Fachmann, dem die vorliegende Offenbarung zur Verfügung steht, wird jedoch ersichtlich sein, dass die verschiedenen Aspekte der verschiedenen Ausführungsformen in anderen Beispielen umgesetzt werden können, die von diesen konkreten Details abweichen. In bestimmten Fällen werden Beschreibungen allgemein bekannter Vorrichtungen, Schaltungen und Verfahren weggelassen, um die Beschreibung der verschiedenen Ausführungsformen nicht durch unnötige Details zu verschleiern.
  • Aktueller Software- und Hardwareschnnittstellenoverhead verhindert die effektive Nutzung verbesserter Massenspeichervorrichtungsfähigkeiten wie etwa als Arbeitsspeicher genutzten Massenspeichers. Diese Offenbarung bezieht sich auf das Freigeben von Massenspeichervorrichtungen als kohärenten Arbeitsspeicher, der unter Verwendung von Hardwarefähigkeiten direkt vom Kern zugänglich ist. Die Offenbarung beinhaltet das Verwenden eines in einen Prozessor integrierten Field Programmable Gate Arrays(FPGA), um die programmierbare Logik in FPGA einzusetzen, um einen System Agent im Kohärenzbereich zu schaffen, um die Arbeitsspeichersemantik über PCIe auf die Massenspeichervorrichtung auszudehnen.
  • Heute ist der Massenspeicher eine Vorrichtung mit langer Latenz, die unter Verwendung eines Vorrichtungsmodells vom Kern programmiert und auf die ebenso zugegriffen wird. Dies bedeutet I/O-Schnittstellen mit langer Latenz(Doorbell, Interrupt) und einen Softwarestack mit vielen Schichten von Massenspeicher. Diese Offenbarung gibt den Massenspeicher(insbesondere die NVM-Technologien mit niedriger Latenz und mit niedriger Vorrichtungszugriffslatenz) als kohärenten Arbeitsspeicher frei. Dies ermöglicht das Freigeben einer enormen Größe an Arbeitsspeicher für das System, wovon viele Anwendungen wie In-Memory-Datenbanken profitieren, und stellt einen Massenspeicher mit niedriger Latenz für viele Big-Data-Anwendungen bereit.
  • 2 ist ein schematisches Diagramm 200 einer beispielhaften Multi-Chip-Plattform(MCP) 202, die ein Field Programmable Gate Array(FPGA) 204 und einen System Agent 206 gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet. Die MCP 202 beinhaltet einen Prozessor 212. Der Prozessor 212 kann ein Hardwareprozessor sein, wie etwa ein Mikroprozessor. Der Prozessor 212 beinhaltet einen System Agent 214, der dazu ausgelegt ist, Arbeitsspeicherzugriffsbefehle von z. B. einer Anwendung 228 auszuführen. Die Anwendung 228 kann Massenspeicherzugriffsanfragen 232 und Arbeitsspeicherzugriffsanfragen 230 stellen, von denen jede vom Prozessor 212(oder genauer vom System Agent 214) verarbeitet werden kann. Ein System Agent kann durch eine PCIe-Schnittstelle 224 oder durch andere Schnittstellen, wie etwa eine Verbindung, die konform zu Serial Advanced Technology Attachment(SATA) ist, auf den Massenspeicher 226 zugreifen. Die Arbeitsspeicherzugriffe werden durch den System Agent 214 zur DDR-Schnittstelle 234, durch den System Agent 214 und die Arbeitsspeichersteuerung 207 oder andere Home Agents im Kohärenzbereich geroutet.
  • Die MCP 202 beinhaltet auch ein FPGA 204. Das FPGA 204 beinhaltet einen System Agent 206, der in Hardware implementiert ist, wie etwa durch Digital Design. Der System Agent 206 ist dazu ausgelegt, Arbeitsspeicherzugriffsbefehle auszuführen. Der System Agent 206 kann die physischen Adressen für seine Kanäle erkennen, um Arbeitsspeicherzugriffsanfragen durch eine QPI- oder UPI-konforme Verbindung 216 auszuführen. Der System Agent 206 übersetzt die physische Adresse in eine Kanaladresse und leitet sie an eine Arbeitsspeichersteuerung 207 weiter. Ein System Agent ist zuständig für das Mappen von Arbeitsspeicher in Prozessorsystemadressraum. Ein System Agent 206 kann auch für das Verwalten der Kohärenz zwischen Caches im System zuständig sein. Jede Arbeitsspeichersteuerung 207 weist eine Tabelle auf, um herauszufinden, was mit jeder Reihe von Kanaladressen, mit der sie umgeht, zu tun ist. Der System Agent 206 kann dem System Agent 214 einen Adressraum anbieten. Der System Agent 214 kann Arbeitsspeicherzugriffsanfragen an die angebotenen Adressräume an System Agent 206 leiten.
  • Aspekte dieser Offenbarung betreffen den in das FPGA 204 eingebauten System Agent 206. Der System Agent 206 ist dazu ausgelegt, konform mit dem Kohärenzbereich von QuickPath Interconnect(QPI) oder UltraPath Interconnect(UPI) des Prozessors zu sein und im Auftrag der durch das HSSI(High-Speed Serial Interface) 208 verbundenen Massenspeichervorrichtung 210 an den Arbeitsspeichertransaktionen teilzunehmen. Der System Agent 206 gibt den als Arbeitsspeicher genutzten Massenspeicher 210, mit dem er durch das HSSI 208 verbunden ist, frei und verwaltet ihn. Der System Agent 206 nimmt an den Arbeitsspeichertransaktionen durch die QPI-/UPI-Protokolle 216 teil und antwortet auf die den Arbeitsspeicher dahinter betreffenden Nachrichten.
  • Der System Agent 206 verwaltet auch die Verzeichnisstruktur, die entweder in dem ihm gehörenden Arbeitsspeicher oder in dem mit dem Prozessor verbundenen DRAM gespeichert ist, und cachet sie optional im FPGA-Block-RAM 234.
  • Der System Agent 206 ist dazu ausgelegt, als ein Hardwaredesign zu arbeiten, das einen als Arbeitsspeicher genutzten Massenspeicher durch ein hardwarebasiertes Kohärenzprotokoll mit einem Prozessor koppelt.
  • Wenn eine Arbeitsspeicheranfrage beim System Agent 214 eintrifft, kann der System Agent 214 den System Agent 206 als eine für das Verarbeiten der Arbeitsspeicherzugriffsanfrage zuständige Instanz identifizieren. Beispielsweise kann der System Agent 214 den System Agent 206, der Teil des FPGA 204 ist, zum Verarbeiten der Arbeitsspeicherzugriffsanfrage identifizieren. Der System Agent 206 kann die Arbeitsspeicherzugriffsanfrage durch Zugreifen auf die entsprechende Adresse aus dem/den als Arbeitsspeicher genutzten Massenspeicherelemente(n) 210 durch das HSSI 208 verarbeiten.
  • Obgleich sie als eine MCP gezeigt ist, kann auch eine Ein-Chip-Plattform verwendet werden, wie etwa eine anwendungsspezifische integrierte Schaltung. Ausführungsformen können über eine FPGA-Implementierung hinaus ausgedehnt werden, um jeden beliebigen Beschleuniger zu beinhalten, der sich mit einem Prozessor und Massenspeicher verbinden kann, und kann einen Hardware-System-Agent beinhalten. Weitere Beispiele derartiger Beschleuniger können Spezialbeschleunigerchips oder Universalrechenvorgänge auf Grafikverarbeitungseinheiten(GPGPUs - General Purpose Computation on Graphics Processing Units) beinhalten.
  • 3 ist ein schematisches Diagramm 300 einer weiteren beispielhaften Multi-Chip-Plattform 302, die ein Field Programmable Gate Array 304 und einen System Agent 306 gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet. In einigen Ausführungsformen unterstützt das FPGA 304 ein direktes Mapping 314 von Arbeitsspeicher-RD/WR-Transaktionen 328 durch den System Agent 306 in die Arbeitsspeichersteuerung 316, was eine zusätzliche Flusssteuerung bereitstellt. Das FPGA 304 beinhaltet auch eine oder mehrere Beschleunigerschaltungen 308 zum Durchführen einer Inline-Verarbeitung von Daten(entweder Lesen oder Schreiben von Daten).
  • Das FPGA 304 kann einen Line-Cache 312 mit 4 KB beinhalten. Der Line-Cache 312 mit 4 KB kann Datenblöcke aus dem Massenspeicher 210 cachen. In einigen Ausführungsformen können Arbeitsspeicherlese- und -schreibvorgänge durch Verwenden asynchroner Lese-/Schreibbefehle eine lange Latenz erklären. Der System Agent 214 kann dem Prozessor System Agent 214 eine Lesebestätigung senden. Die Lesebestätigung kann während der Latenz der Leseausführung gesendet werden, was es dem Prozessor 212 ermöglicht, weiter zu den nächsten Verarbeitungsschritten zu gehen. Der System Agent 306 kann den aus dem Massenspeicher 210 aufgerufenen Datenblock in den Line-Cache 312 cachen. Ebenso kann der System Agent 306 eine Schreibbestätigung bereitstellen und die Schreibdaten im Line-Cache 312 cachen und dann Schreibdaten in der als Arbeitsspeicher genutzten Massenspeichervorrichtung 210 in Arbeitsspeicher cachen.
  • Der System Agent 306 kann auch Daten cachen, die vom Massenspeicher 210 in größeren Blockgrößen zugeführt werden(in 4-KB-Blöcken im Line-Cache 312 mit 4 KB anstelle der 64-B-Anfrage auf der Cache-Line).
  • Ein Verzeichniscache 310 kann zusätzliche Leistung bereitstellen, indem er einen Abschnitt oder eine Teilmenge des Arbeitsspeicherverzeichnisses hält. Der Verzeichniscache 310 kann Teil des FPGA 304 sein, das einen Abschnitt des Arbeitsspeicherverzeichnisses cachet - den Arbeitsspeicher, der von den potenziell mehreren Terabytes(oder mehr) an verfügbarem Massenspeicher dargestellt wird.
  • In Ausführungsformen kann das FPGA 304 einen PCIe-Root-Complex nachbilden. Durch Nachbilden des PCIe-Root-Complexes und der PCIe-Schnittstelle kann der System Agent 306 den Arbeitsspeicher direkt im als Arbeitsspeicher genutzten Massenspeicher 210 freigeben.
  • In einigen Implementierungen ein bestehender PCIe-IP im FPGA 304, eine Verbindung mit den bestehenden PCIe-basierten Massenspeicherlösungen herzustellen. Um kohärenten Arbeitsspeicher auf die Vorrichtungsseite auszudehnen, werden die QPI-Nachrichten durch das PCIe-Protokoll kanalisiert. Statt mit Non-Volatile-Memory-Express(NVMe)-Protokollen 326 über PCIe umzugehen, muss die Steuerung mit RD/WR-Transaktionen über PCIe umgehen.
  • 4 ist ein schematisches Diagramm 400 einer beispielhaften Multi-Chip-Plattform 402, die ein Field Programmable Gate Array 404 und einen System Agent 406 beinhaltet, und Inline-Beschleunigerschaltungen gemäß Ausführungsformen der vorliegenden Offenbarung darstellt. Ausführungsformen beinhalten Inline-Beschleuniger 414a und 414b, die in das FPGA 404 eingebaut sind, um arbeitsspeicherseitige Streaming-Beschleunigungen(z. B. Verschlüsselung/Entschlüsselung, Komprimierung/Dekomprimierung, Structured-Query-Language(SQL)-Beschleunigung, Extraktion-Transformation-Laden(ETL)-Funktionen etc.) durchzuführen. Die Beschleuniger 414a und 414b könnten einen optionalen Cache 412 und eine in die FPGA-Logik eingebaute Cachesteuerung 410 verwenden, um die Leistung zu verbessern.
  • 4 stellt auch dar, wie bestimmte Arbeitsspeichersteuerkomponenten zum FPGA 404 bewegt werden können, um Massenspeicher als Arbeitsspeicher 210 freizugeben. Das FPGA 404 kann eine Arbeitsspeichersteuerung 416 beinhalten, die einen Cachearbeitsspeicher 418 mit 4 KB beinhaltet. Das FPGA 404 kann auch den NVMe-Treiber 420 als ein Hardwareschaltungsdesign, das NVMe-Treiberfunktionalität nachbildet, beinhalten.
  • Ähnlich den vorstehend gezeigten Ausführungsformen kann der Prozessor 212 einen System Agent 214 beinhalten, der über eine QPI-konforme Verbindung, wie etwa eine UPI-Verbindung 218, eine Schnittstelle mit dem FPGA 404 bilden kann. Das FPGA 404 ist eine UPI-Schnittstelle 408 beinhaltend gezeigt, die QPI-konforme(oder UPIspezifische) Protokolle zwischen dem System Agent 406 oder dem Caching Agent 410 und dem System Agent 214 erleichtern kann. Es versteht sich, dass das allgemein hierin beschriebene FPGA eine Protokollschnittstelle, wie etwa eine UPI-Schnittstelle 408, zum Erleichtern der Kommunikation zwischen dem System Agent 214 und FPGA-Komponenten, wie etwa dem System Agent 406, beinhalten würde.
  • 5A ist ein schematisches Diagramm 500 einer beispielhaften Multi-Chip-Plattform 502, die ein Field Programmable Gate Array 504 und einen System Agent 506 zum Verbinden mit einem mittels Fabric verbundenen als Arbeitsspeicher genutzten Massenspeichers gemäß Ausführungsformen der vorliegenden Offenbarung beinhaltet. 5B ist ein schematisches Diagramm 550 eines beispielhaften mittels Fabric verbundenen als Arbeitsspeicher genutzten Massenspeicher gemäß Ausführungsformen der vorliegenden Offenbarung. In Ausführungsformen dieser Offenbarung kann ein mittels Fabric angebundener Massenspeicher(oder traditioneller DRAM-Arbeitsspeicher) als Arbeitsspeicher freigegeben werden. In diesem Szenario ist das HSSI 208 mit der externen Fabric verbunden, die die Arbeitsspeichertransaktionen über die Fabricprotokolle antreibt. Die Ausdehnung des Arbeitsspeichers könnte verwendet werden, um disaggregierten als Arbeitsspeicher genutzten Massenspeicher 516 oder disaggregierten Arbeitsspeicher 518 über eine Fabric freizugeben.
  • Das FPGA 504 kann eine Fabricschnittstelle 514 beinhalten, die Hardwareschritte bereitstellen kann, die eine Fabricschnittstelle nachbilden. Das FPGA 504 kann auch einen NVMe-Treiber 512 beinhalten, um über das HSSI 208 hinweg den Arbeitsspeicherzugriff bereitzustellen. In Ausführungsformen kann der NVMe-Treiber 512 oder die Fabric 514 Schalttechnik beinhalten, die die PCIe-Schnittstelle nachbildet, was es dem NVMe-Treiber 512 ermöglicht, Arbeitsspeicher-RD/WR über das HSSI 208 hinweg durchzuführen. Das FPGA 504 kann auch einen Cache 510 und eine Arbeitsspeichersteuerung 508 beinhalten, die mit dem System Agent 506 gekoppelt ist.
  • 5B stellt beispielhaften disaggregierten Massenspeicher als Arbeitsspeicher 516 und disaggregierten Arbeitsspeicher 518 dar. Der disaggregierte als Arbeitsspeicher genutzte Massenspeicher 516 kann eine Vielzahl von vernetzten Massenspeichervorrichtungen 520 beinhalten. Der disaggregierte Arbeitsspeicher 518 kann eine Vielzahl von vernetzten Arbeitsspeicherelementen 522 beinhalten.
  • Obgleich die hier gezeigte Fabric eine 2D-Mesh-Topologie aufweist, kann sie auf Grundlage der Skalierungserfordernisse durch beliebige Topologien ersetzt werden. Außerdem kann das HSSI 208 ausgedehnt werden, um größere Bandbreiten zu unterstützen, insbesondere falls DRAMs 522 an die Fabric angebunden sind. Die als in einem FPGA implementiert gezeigten Komponenten können aus Energie-/Leistungsgründen schließlich als gehärtete Logik in den Prozessor integriert sein.
  • Für Leistungs- und potenzielle Funktionsprobleme mit Arbeitsspeicherlesevorgängen mit langer Latenz kann asynchrone Unterstützung verwendet werden. Das heißt, dass der System Agent den Befehl mit einer Nichtdatenantwort an den Prozessor erteilen und vervollständigen kann, anstelle dass ein asynchroner Lesevorgang eine Datenantwort liefert. Die Daten werden dann durch MWAIT auf Benutzerebene, ausgelöst durch die Ankunft der Daten beim Line-Cache mit 4 KB im FPGA, empfangen.
  • 6A ist ein Prozessflussdiagramm 600 zum Verarbeiten einer Arbeitsspeicherzugriffsanfrage gemäß Ausführungsformen der vorliegenden Offenbarung. Der Prozess kann von einem Field Programmable Gate Array(FPGA) oder einer oder mehreren Komponenten des FPGA durchgeführt werden, wie etwa einer Hardwareimplementierung eines System Agent. Der System Agent kann beispielsweise eine Arbeitsspeicherzugriffsanfrage von einem anderen System Agent eines Prozessors empfangen, der durch eine QuickPath-Interconnect(QPI)-konforme Verbindung, wie etwa eine UltraPath-Interconnect(UPI)-konforme Verbindung, mit dem FPGA gekoppelt ist(602). Der System Agent kann einen Arbeitsspeicherort in einem verbundenen als Arbeitsspeicher genutzten Massenspeicher über ein High-Speed Serial Interface(HSSI) identifizieren(604) und die Arbeitsspeicherzugriffsanfrage ausführen(606).
  • 6B ist ein Prozessflussdiagramm 610 für eine asynchrone Arbeitsspeicherzugriffsausführung gemäß Ausführungsformen der vorliegenden Offenbarung. Der Prozess kann von einem Field Programmable Gate Array(FPGA) oder einer oder mehreren Komponenten des FPGA durchgeführt werden, wie etwa einer Hardwareimplementierung eines System Agent. Der System Agent kann beispielsweise eine Arbeitsspeicherzugriffsanfrage von einem anderen System Agent eines Prozessors empfangen, der durch eine QuickPath-Interconnect(QPI)-konforme Verbindung, wie etwa eine UltraPath-Interconnect(UPI)-konforme Verbindung, mit dem FPGA gekoppelt ist(612). Der System Agent kann einen Arbeitsspeicherort in einem verbundenen als Arbeitsspeicher genutzten Massenspeicher über ein High-Speed Serial Interface(HSSI) identifizieren(614), um die Arbeitsspeicherzugriffsanfrage auszuführen(616).
  • Der System Agent kann dem anfragenenden System Agent dann eine Bestätigung der Ausführung der Arbeitsspeicherzugriffsanfrage bereitstellen(618). In Ausführungsformen kann die Bestätigung eine Lesebestätigung beinhalten. Der System Agent kann die Lesedaten in einem Line-Cache im FPGA cachen(620) und die Lesedaten zu einem späteren Zeitpunkt vom FPGA-Line-Cache aus übermitteln(622).
  • In Ausführungsformen kann der System Agent eine Schreibbestätigung bereitstellen und kann die Schreibdaten in einem Line-Cache im FPGA cachen und die Schreibdaten zu einem späteren Zeitpunkt in einem Cache speichern.
  • 6C ist ein Prozessflussdiagramm 630 zum Durchführen einer Inline-Datenverarbeitung gemäß Ausführungsformen der vorliegenden Offenbarung. Der Prozess kann von einem Field Programmable Gate Array(FPGA) oder einer oder mehreren Komponenten des FPGA durchgeführt werden, wie etwa einer Hardwareimplementierung eines System Agent. Der System Agent kann beispielsweise eine Arbeitsspeicherzugriffsanfrage von einem anderen System Agent eines Prozessors empfangen, der durch eine QuickPath-Interconnect(QPI)-konforme Verbindung, wie etwa eine UltraPath-Interconnect(UPI)-konforme Verbindung, mit dem FPGA gekoppelt ist(632). Der System Agent kann einen Arbeitsspeicherort in einem verbundenen als Arbeitsspeicher genutzten Massenspeicher identifizieren(634). Der System Agent kann Daten(entweder Lese- oder Schreibdaten) an eine oder mehrere Beschleunigerschaltungen, die Teil des FPGA sind, leiten(636). Die eine oder mehreren Beschleunigerschaltungen können die Daten verarbeiten(638). Der System Agent kann die Daten dann entweder dem Prozessor bereitstellen(für einen Lesebefehl) oder kann die verarbeiteten Daten im Arbeitsspeicher speichern(für Schreibbefehle)(640).
  • Aspekte der vorliegenden Offenbarung geben Großraum-(Massenspeicher-)Vorrichtungen mit niedriger Latenz als Arbeitsspeicher über eine nicht-DDR-Schnittstelle frei, wobei der Vorteil davon den Zugriff auf Arbeitsspeicher mit hoher Kapazität und mit herkömmlicher Arbeitsspeicher-RD/WR-Semantik, ohne Hochleistungs-DDR-Schnittstellen zu opfern, beinhaltet. Dies weist das Potenzial auf, die Anwendungsleistung zu verbessern, wenn enorme Rechenvorgänge in Arbeitsspeicher stattfinden.
  • Eine Verbindungsfabricarchitektur beinhaltet die Peripheral-Component-Interconnect(PCI)-Express(PCIe)-Architektur. Ein Hauptziel von PCIe ist es, es Komponenten und Vorrichtungen von verschiedenen Anbietern zu erlauben, in einer offenen Architektur miteinander zu arbeiten, die mehrere Marktsegmente umschließt; Clients(Desktop und mobil), Server(Standard und Enterprise) und eingebettete und Kommunikationsvorrichtungen. PCI Express ist eine Hochleistungsuniversal-I/O-Verbindung, die für eine große Bandbreite an zukünftigen Rechner- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie etwa das Nutzungsmodell, die Load/Store-Architektur und Softwareschnittstellen, wurden über Überarbeitungen hinweg erhalten, wohingegen frühere Parallelbusimplementierungen durch eine stark skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die aktuelleren Versionen von PCI Express nutzen Fortschritte bei Punkt-zu-Punkt-Verbindungen, schalterbasierter Technologie und paketierten Protokollen zu ihrem Vorteil, um neue Leistungsniveaus und Merkmale zu schaffen. Power Management, Quality of Service(QoS; Dienstgüte), Hot-Plug/Hot-Swap Support, Data Integrity und Error Handling sind einige der von PCI Express unterstützten fortschrittlichen Merkmale.
  • Bezug nehmend auf 7 ist eine Ausführungsform einer Fabric dargestellt, die aus Punkt-zu-Punkt-Verbindungen, die einen Satz Komponenten miteinander verbinden, zusammengesetzt ist. Das System 700 beinhaltet einen Prozessor 705 und Systemarbeitsspeicher 710, der mit einem Steuerhub 715 gekoppelt ist. Der Prozessor 705 beinhaltet ein beliebiges Verarbeitungselement, wie etwa einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Koprozessor oder einen anderen Prozessor. Der Prozessor 705 ist durch den Front Side Bus(FSB) 706 mit dem Steuerhub 715 gekoppelt. In einer Ausführungsform ist der FSB 706 wie nachfolgend beschrieben eine serielle Punkt-zu-Punkt-Verbindung. In einer weiteren Ausführungsform beinhaltet die Verbindung 706 eine serielle differentielle Verbindungsarchitektur, die mit unterschiedlichen Verbindungsstandards konform ist.
  • Der Systemarbeitsspeicher 710 beinhaltet eine beliebige Arbeitsspeichervorrichtung, wie etwa Direktzugriffsspeicher(RAM), nichtflüchtigen Speicher(NVM) oder anderen für Vorrichtungen im System 700 zugänglichen Arbeitsspeicher. Der Systemarbeitsspeicher 710 ist durch die Arbeitsspeicherschnittstelle 716 mit dem Steuerhub 715 gekoppelt. Beispiele einer Arbeitsspeicherschnittstelle beinhalten eine Double-Data-Rate(DDR)-Arbeitsspeicherschnittstelle, eine Dual-Channel-DDR-Arbeitsspeicherschnittstelle und eine dynamische RAM(DRAM)-Arbeitsspeicherschnittstelle.
  • In einer Ausführungsform ist der Steuerhub 715 ein Root-Hub, ein Root Complex oder eine Root-Steuerung in einer Peripheral-Component-Interconnect-Express(PCIe- oder PCIE)-Verbindungshierarchie. Beispiele für den Steuerhub 715 beinhalten einen Chipsatz, einen Arbeitsspeichersteuerhub(MCH - Memory Controller Hub), eine Northbridge, einen Verbindungssteuerhub(ICH - Interconnect Controller Hub), eine Southbridge und eine(n) Root-Steuerung/-Hub. Oft bezieht sich der Begriff Chipsatz auf zwei physisch separate Steuerhubs, d. h. einen Arbeitsspeichersteuerhub(MCH), der mit einem Verbindungssteuerhub(ICH) gekoppelt ist. Es sei darauf hingewiesen, dass aktuelle Systeme oft den MCH als in den Prozessor 705 integriert beinhalten, während die Steuerung 715 auf eine ähnliche Weise wie nachfolgend beschrieben mit I/O-Vorrichtungen kommunizieren soll. In einigen Ausführungsformen wird Peer-to-Peer-Routing optional durch den Root Complex 715 unterstützt.
  • Hier ist der Steuerhub 715 durch eine serielle Verbindung 719 mit dem Schalter/der Brücke 720 gekoppelt. Die Eingabe-/Ausgabemodule 717 und 721, die auch als Schnittstellen/Anschlüsse 717 und 721 bezeichnet werden können, beinhalten/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Steuerhub 715 und dem Schalter 720 bereitzustellen. In einer Ausführungsform sind mehrere Vorrichtungen fähig, mit dem Schalter 720 gekoppelt zu werden.
  • Der Schalter/die Brücke 720 routet Pakete/Nachrichten von der Vorrichtung 725 stromaufwärts, d. h. eine Hierarchie nach oben in Richtung eines Root Complex, zum Steuerhub 715, und stromabwärts, d. h. eine Hierarchie nach unten weg von einer Root-Steuerung, vom Prozessor 705 oder Systemarbeitsspeicher 710 zur Vorrichtung 725. Der Schalter 720 wird in einer Ausführungsform als eine logische Baugruppe aus mehreren virtuellen PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 725 beinhaltet eine beliebige interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie etwa eine I/O-Vorrichtung, eine Netzwerkschnittstellensteuerung(NIC - Network Interface Controller), eine Erweiterungskarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Massenspeichervorrichtung, eine CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Massenspeichervorrichtung, eine Firewire-Vorrichtung, eine Universal-Serial-Bus(USB)-Vorrichtung, einen Scanner und andere Eingabe-/Ausgabevorrichtungen. Im PCIe-Jargon wird eine derartige Vorrichtung oft als ein Endpunkt bezeichnet. Auch wenn dies nicht speziell gezeigt ist, kann die Vorrichtung 725 eine PCIe-zu-PCI/PCI-X-Brücke beinhalten, um Legacy-Vorrichtungen oder PCI-Vorrichtungen einer anderen Version zu unterstützen. Endpunktvorrichtungen werden bei PCIe oft als Legacy-, PCIe- oder Root-Complex-integrierte Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 730 ist durch die serielle Verbindung 732 auch mit dem Steuerhub 715 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 730 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Schalter 720, und entsprechend die I/O-Vorrichtung 725, wird dann mit dem ICH gekoppelt. Die I/O-Module 731 und 718 sollen auch einen geschichteten Protokollstapel implementieren, um für eine Kommunikation zwischen dem Grafikbeschleuniger 730 und dem Steuerhub 715 zu sorgen. Ähnlich der obigen MCH-Besprechung kann eine Grafiksteuerung oder der Grafikbeschleuniger 730 selbst in den Prozessor 705 integriert sein.
  • Bezug nehmend auf 8 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 800 beinhaltet eine beliebige Form eines geschichteten Kommunikationsstapels, wie etwa einen QuickPath-Interconnect(QPI)-Stapel, einen PCIe-Stapel, einen Hochleistungsrechenverbindungsstapel der nächsten Generation oder einen anderen geschichteten Stapel. Zwar erfolgt die unmittelbar nachfolgende Besprechung mit Bezug auf die 7-10 im Hinblick auf einen PCIe-Stapel, die gleichen Konzepte können aber auch auf andere Verbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 800 ein PCIe-Protokollstapel, der eine Transaktionsschicht 805, eine Sicherungsschicht 810 und eine physische Schicht 820 beinhaltet. Eine Schnittstelle, wie etwa die Schnittstellen 717, 718, 721, 722, 726 und 731 in 7, können als Kommunikationsprotokollstapel 800 dargestellt werden. Die Darstellung als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle, das/die einen Protokollstapel implementiert/beinhaltet, bezeichnet werden.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten zu übermitteln. Pakete werden in der Transaktionsschicht 805 und der Datensicherungsschicht(Data Link Layer) 810 gebildet, um die Informationen von der übertragenden Komponente zur empfangenden Komponente zu führen. Während die übertragenen Pakete die anderen Schichten passieren, werden sie mit zusätzlichen Informationen ausgedehnt, die erforderlich sind, um in diesen Schichten mit Paketen umzugehen. Auf der empfangenden Seite findet der umgekehrte Prozess statt und Pakete werden von ihrer Darstellung der physischen Schicht 820 in die Darstellung der Datensicherungsschicht 810 und schließlich(bei Transaktionsschichtpaketen) in die Form, die von der Transaktionsschicht 805 der empfangenden Vorrichtung verarbeitet werden kann, umgewandelt.
  • Transaktionsschicht
  • In einer Ausführungsform soll die Transaktionsschicht 805 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Verbindungsarchitektur, wie etwa der Datensicherungsschicht 810 und der physischen Schicht 820, bereitstellen. In dieser Hinsicht liegt eine Hauptzuständigkeit der Transaktionsschicht 805 im Assemblieren und Disassemblieren von Paketen(d. h. Transaktionsschichtpaketen oder TLPs - Transaction Layer Packets). Die Übersetzungsschicht 805 verwaltet typischerweise die kreditbasierte Flusssteuerung für TLPs. PCIe implementiert Split-Transaktionen, d. h. Transaktionen, bei denen Anfrage und Antwort zeitlich getrennt sind, was es einer Verbindung ermöglicht, anderen Traffic zu führen, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Darüber hinaus nutzt PCIe eine kreditbasierte Flusssteuerung. Bei diesem Schema bietet eine Vorrichtung eine anfängliche Kredithöhe für jeden der Empfangspuffer in der Transaktionsschicht 805 an. Eine externe Vorrichtung am anderen Ende der Verbindung, wie etwa ein Steuerhub 715 in 7, zählt die Höhe des von jedem TLP verbrauchten Kredits. Eine Transaktion kann übertragen werden, falls die Transaktion ein Kreditlimit nicht überschreitet. Bei Empfangen einer Antwort wird eine Kredithöhe zurückgewährt. Ein Vorteil eines Kreditschemas ist, dass die Latenz der Kreditrückgabe nicht die Leistung beeinflusst, vorausgesetzt, das Kreditlimit wird nicht erreicht.
  • In einer Ausführungsform beinhalten vier Transaktionsadressräume einen Konfigurationsadressraum, einen Arbeitsspeicheradressraum, einen Eingabe-/Ausgabeadressraum und einen Nachrichtenadressraum. Arbeitsspeicherraumtransaktionen beinhalten eine oder mehrere von Leseanfragen und Schreibanfragen, um Daten an einen/von einem in Arbeitsspeicher gemappten Ort zu übertragen. In einer Ausführungsform sind Arbeitsspeicherraumtransaktionen fähig, zwei unterschiedliche Adressformate zu verwenden, z. B. ein kurzes Adressformat, wie etwa eine 32-Bit-Adresse, oder ein langes Adressformat, wie etwa eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen in den Konfigurationsraum beinhalten Leseanfragen und Schreibanfragen. Nachrichtenraumtransaktionen(oder einfach Nachrichten) sind definiert, um eine In-Band-Kommunikation zwischen PCIe Agents zu unterstützen.
  • Daher assembliert in einer Ausführungsform die Transaktionsschicht 805 einen Paketkopf/Nutzdaten 806. Das Format für aktuelle Paketköpfe/Nutzdaten findet sich in der PCIe-Spezifikation auf der PCIe-Spezifikationsinternetseite.
  • Kurz Bezug nehmend auf 9 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 900 ein Mechanismus zum Führen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 900 die Identifikation von Transaktionen in einem System. Weitere potenzielle Verwendungen beinhalten das Verfolgen von Modifikationen beim Sortieren von Standardtransaktionen und die Zuordnung von Transaktionen zu Kanälen.
  • Der Transaktionsdeskriptor 900 beinhaltet ein Feld 902 für einen globalen Identifikator, ein Attributefeld 904 und ein Kanalidentifikatorfeld 906. In dem dargestellten Beispiel ist das Feld 902 für einen globalen Identifikator als ein Feld 908 für einen lokalen Transaktionsidentifikator und ein Quellenidentifikatorfeld 910 umfassend abgebildet. In einer Ausführungsform ist der globale Transaktionsidentifikator 902 einzigartig für alle ausstehenden Anfragen.
  • Gemäß einer Implementierung ist das Feld 908 für einen lokalen Transaktionsidentifikator ein Feld, das von einem anfragenden Agent generiert wird, und es ist einzigartig für alle ausstehenden Anfragen, die einen Abschluss für diesen anfragenden Agent erfordern. Ferner identifiziert in diesem Beispiel der Quellenidentifikator 910 den Anfrage-Agent in einer PCIe-Hierarchie eindeutig. Entsprechend stellt das Feld 908 für einen lokalen Transaktionsidentifikator zusammen mit der Quellen-ID 910 eine globale Identifikation einer Transaktion in einem Hierarchiebereich bereit.
  • Das Attributefeld 904 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributefeld 904 potenziell verwendet, um zusätzliche Informationen bereitzustellen, die eine Modifikation des Standardumgangs mit Transaktionen ermöglicht. In einer Ausführungsform beinhaltet das Attributefeld 904 ein Prioritätsfeld 912, ein reserviertes Feld 914, ein Sortierfeld 916 und ein No-Snoop-Feld 918. Hier kann das Prioritätssubfeld 912 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 914 ist für eine zukünftige oder vom Anbieter definierte Nutzung reserviert. Mögliche Nutzungsmodelle unter Verwendung von Prioritäts- oder Sicherheitsattributen können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Sortierattributfeld 916 verwendet, um optionale Informationen zu liefern, die die Art der Sortierung vermitteln, die Standardsortierregeln modifizieren kann. Gemäß einer beispielhaften Implementierung gibt ein Befehlsattribut von „0“ an, dass Standardsortierregeln anzuwenden sind, wobei ein Sortierattribut von „1“ eine gelockerte Sortierung(relaxed ordering) angibt, wobei Schreibvorgänge in die gleiche Richtung gerichtete Schreibvorgänge überholen können und Leseabschlüsse in die gleiche Richtung gerichtete Schreibvorgänge überholen können. Das Snoop-Attributfeld 918 wird genutzt, um zu ermitteln, ob Transaktionen geprüft(snooped) werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 906 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Sicherungsschicht
  • Nunmehr erneut Bezug nehmend auf 8 fungiert die Sicherungsschicht 810, auch als Datensicherungsschicht 810 bezeichnet, als eine Zwischenstufe zwischen der Transaktionsschicht 805 und der physischen Schicht 820. In einer Ausführungsform stellt eine Zuständigkeit der Datensicherungsschicht 810 einen zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen(TLPs) zwischen zwei Komponenten bereit ein Link. Eine Seite der Datensicherungsschicht 810 nimmt von der Transaktionsschicht 805 assemblierte TLPs an, wendet den Paketsequenzidentifikator 811, d. h. eine Identifikationsnummer oder Paketnummer, an, berechnet einen Fehlerdetektionscode, d. h. CRC 812, und wendet diesen an und legt die modifizierten TLPs der physischen Schicht 820 zur Übertragung über eine physische zu einer externen Vorrichtung vor.
  • Physische Schicht
  • In einer Ausführungsform beinhaltet die physische Schicht 820 einen logischen Subblock 821 und einen elektrischen Subblock 822, um ein Paket physisch an eine externe Vorrichtung zu übertragen. Hier ist der logische Subblock 821 für die „digitalen“ Funktionen der physischen Schicht 821 zuständig. In dieser Hinsicht beinhaltet der logische Subblock einen Übertragungsabschnitt, um abgehende Informationen für eine Übertragung durch den physischen Subblock 822 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie zur Sicherungsschicht 810 weitergeleitet werden.
  • Der physische Block 822 beinhaltet einen Sender und einen Empfänger. Dem Sender werden vom logischen Subblock 821 Symbole zugeführt, die der Sender serialisiert und weiter zu einer externen Vorrichtung überträgt. Dem Empfänger werden serialisierte Symbole von einer externen Vorrichtung zugeführt und der Empfänger wandelt die empfangenen Signale in einem Bitstrom um. Der Bitstrom wird deserialisiert und dem logischen Subblock 821 zugeführt. In einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Symbole mit zehn Bit übertragen/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Frames 823 zu rahmen. Darüber hinaus stellt in einem Beispiel der Empfänger auch einen Symboltakt bereit, der aus dem eingehenden seriellen Strom gewonnen wird.
  • Obwohl die Transaktionsschicht 805, die Sicherungsschicht 810 und die physische Schicht 820 mit Bezug auf eine konkrete Ausführungsform eines PCIe-Protokollstapels besprochen werden, ist wie vorstehend angegeben, ein geschichteter Protokollstapel nicht derart beschränkt. Es kann nämlich jedes beliebige geschichtete Protokoll enthalten/implementiert sein. Zum Beispiel beinhaltet ein Anschluss/eine Schnittstelle, der/die als ein geschichtetes Protokoll dargestellt ist:(1) eine erste Schicht, um Pakte zu assemblieren, d. h. eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, d. h. eine Sicherungsschicht; und eine dritte Schicht, um die Pakete zu übertragen, d. h. eine physische Schicht. Als ein konkretes Beispiel wird ein geschichtetes Common-Standard-Interface(CSI)-Protokoll genutzt.
  • Als Nächstes Bezug nehmend auf 10 ist eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Fabric dargestellt. Obgleich eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht derart beschränkt, da sie jeden beliebigen Übertragungspfad zum Übertragen serieller Daten beinhaltet. In der gezeigten Ausführungsform beinhaltet eine einfache PCIe-Verbindung zwei differentiell angetriebene Niederspannungssignalpaare: ein Übertragungspaar 1006/1011 und ein Empfangspaar 1012/1007. Entsprechend beinhaltet die Vorrichtung 1005 Übertragungslogik 1006, um Daten an die Vorrichtung 1010 zu übertragen, und Empfangslogik 1007, um Daten von der Vorrichtung 1010 zu empfangen. Mit anderen Worten sind in einer PCIe-Verbindung zwei Übertragepfade, d. h. die Pfade 1016 und 1017, und zwei Empfangspfade, d. h. die Pfade 1018 und 1019, enthalten.
  • Ein Übertragungspfad bezieht sich auf jeden beliebigen Pfad zum Übertragen von Daten, wie etwa eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarotkommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verknüpfung zwischen zwei Vorrichtungen, wie etwa der Vorrichtung 1005 und der Vorrichtung 1010, wird als eine Verbindung bezeichnet, wie etwa als Verbindung 415. Eine Verbindung kann eine Lane unterstützen - wobei jede Lane einen Satz differentieller Signalpaare darstellt(ein Paar für die Übertragung, ein Paar für den Empfang). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere Lanes aggregieren, die durch xN bezeichnet sind, wobei N eine beliebige unterstützte Verbindungsbreite ist, wie etwa 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differentielles Paar bezieht sich auf zwei Übertragungspfade, wie etwa die Leitungen 416 und 417, um differentielle Signale zu übertragen. Wenn zum Beispiel die Leitung 416 von einem Niederspannungsniveau zu einem Hochspannungsniveau wechselt, d. h. eine steigende Flanke, geht die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel, d. h. eine fallende Flanke. Differentielle Signale weisen potenziell bessere elektrische Eigenschaften auf, wie etwa eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschwingen/-unterschwingen, Ringing etc. Dies ermöglicht ein besseres Zeitfenster, was schnellere Übertragungsfrequenzen zulässt.
  • Bezug nehmend auf 11 ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor gebildet ist, der Ausführungseinheiten beinhaltet, um einen Befehl auszuführen, wobei eine oder mehrere der Verbindungen ein oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Offenbarung implementieren, dargestellt. Das System 1100 beinhaltet eine Komponente, wie etwa einen Prozessor 1102, um Ausführungseinheiten einzusetzen, die Logik beinhalten, um gemäß der vorliegenden Offenbarung Algorithmen für Prozessdaten durchzuführen, wie etwa wie in der hierin beschriebenen Ausführungsform. Das System 1100 ist repräsentativ für Verarbeitungssysteme, die auf den Mikroprozessoren PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ und/oder StrongARM™ beruhen, die von Intel Corporation in Santa Clara, Kalifornien, USA, erhältlich sind, obgleich auch andere Systeme(einschließlich PCs, die andere Mikroprozessoren aufweisen, Engineering-Workstations, Set-Top Boxen und Ähnliches) verwendet werden können. In einer Ausführungsform führt das Mustersystem 1100 eine Version des WINDOWS™-Betriebssystems aus, das von Microsoft Corporation in Redmond, Washington, USA, erhältlich ist, obgleich auch andere Betriebssysteme(beispielsweise UNIX und Linux), eingebettete Software und/oder graphische Benutzerschnittstellen verwendet werden können. Somit sind Ausführungsformen der vorliegenden Offenbarung nicht auf eine konkrete Kombination von Hardwareschalttechnik und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Offenbarung können in anderen Vorrichtungen verwendet werden, wie etwa in Handheld-Vorrichtungen und eingebetteten Anwendungen. Einige Beispiele für Handheld-Vorrichtungen beinhalten Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten(PDAs) und Handheld-PCs. Eingebettete Anwendungen können eine Mikrosteuerung, einen digitalen Signalprozessor(DSP), ein System-on-a-Chip, Netzwerkcomputer(NetPC), Set-Top-Boxen, Netzwerkknoten, Wide-Area-Network(WAN)-Schalter oder jedes beliebige andere System, das einen oder mehrere Befehle gemäß mindestens einer Ausführungsform durchführen kann, beinhalten.
  • In dieser dargestellten Ausführungsform beinhaltet der Prozessor 1102 eine oder mehrere Ausführungseinheiten 1108, um einen Algorithmus zu implementieren, der mindestens einen Befehl durchführen soll. Eine Ausführungsform kann im Zusammenhang mit einem Desktop- oder Serversystem mit einem einzelnen Prozessor beschrieben sein, alternative Ausführungsformen können aber in einem Multiprozessorsystem enthalten sein. Das System 1100 ist ein Beispiel einer „Hub“-Systemarchitektur. Das Computersystem 1100 beinhaltet einen Prozessor 1102, um Datensignale zu verarbeiten. Der Prozessor 1102 beinhaltet als ein veranschaulichendes Beispiel einen Complex-Instruction-Set-Computer(CISC)-Mikroprozessor, einen Reduced-Instruction-Set-Computer(RISC)-Mikroprozessor, einen Very-Long-Instruction-Word(VLIW)-Mikroprozessor, einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa beispielsweise einen digitalen Signalprozessor. Der Prozessor 1102 mit einem Prozessorbus 1110 gekoppelt, der Datensignale zwischen dem Prozessor 1102 und anderen Komponenten im System 1100 überträgt. Die Elemente von System 1100(z.B. Grafikbeschleuniger 1112, Arbeitsspeichersteuerhub 1116, Arbeitsspeicher 1120, I/O-Steuerhub 1124, drahtlose Transceiver 1126, Flash-BIOS 1128, Netzwerksteuerung 1134, Audiosteuerung 1136, der serielle Erweiterungsanschluss 1138, I/O-Steuerung 1140 etc.) führen ihre herkömmlichen Funktionen aus, die einem Fachmann im Fachgebiet allgemein bekannt sind.
  • In einer Ausführungsform beinhaltet der Prozessor 1102 einen internen Ebene-1(L1)-Cache-Arbeitsspeicher 1104. Abhängig von der Architektur kann der Prozessor 1102 einen einzelnen internen Cache oder mehrere Ebenen interner Caches aufweisen. Weitere Ausführungsformen beinhalten eine Kombination aus sowohl internem als auch externem Cache, abhängig von der jeweiligen Implementierung und den Erfordernissen. Der Registerspeicher 1106 dient dazu, unterschiedliche Arten von Daten in verschiedenen Registern zu speichern, einschließlich Ganzzahlregistern, Gleitkommaregistern, Vektorregistern, Banked-Registern, Schattenregistern, Checkpointregistern, Statusregistern und Befehlszeigerregistern.
  • Die Ausführungseinheit 1108, die Logik beinhaltet, um Ganzzahl- und Gleitkommaoperationen durchzuführen, sitzt auch im Prozessor 1102. Der Prozessor 1102 beinhaltet in einer Ausführungsform einen Mikrocode(Ucode)-ROM, um Mikrocode zu speichern, der, wenn er ausgeführt wird, dazu dient, Algorithmen für bestimmte Makrobefehle durchzuführen oder mit komplexen Szenarien umzugehen. Hier ist Mikrocode potenziell updatebar, um mit Logikbugs/-fixes für den Prozessor 1102 umzugehen. Für eine Ausführungsform beinhaltet die Ausführungseinheit 1108 Logik, um mit einem gepackten Befehlssatz 1109 umzugehen. Durch Einfügen des gepackten Befehlssatzes 1109 in den Befehlssatz eines Universalprozessors 1102, zusammen mit zugehöriger Schalttechnik, um die Befehle auszuführen, können die von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung gepackter Daten in einem Universalprozessor 1102 durchgeführt werden. Somit werden viele Multimediaanwendungen beschleunigt und effizienter ausgeführt, indem die volle Breite eines Datenbuses eines Prozessors zum Durchführen von Operationen an gepackten Daten verwendet wird. Dies beseitigt potenziell die Notwendigkeit, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen durchzuführen, ein Datenelement nach dem anderen.
  • Alternative Ausführungsformen einer Ausführungseinheit 1108 können auch in Mikrosteuerungen, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. Das System 1100 beinhaltet einen Arbeitsspeicher 1120. Der Arbeitsspeicher 1120 beinhaltet eine dynamische Direktzugriffsspeicher(DRAM)-Vorrichtung, eine statische Direktzugriffspeicher(SRAM)-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Arbeitsspeichervorrichtung. Der Arbeitsspeicher 1120 speichert Befehle und/oder Daten, die durch Datensignale dargestellt werden, die vom Prozessor 1102 auszuführen sind.
  • Es sei darauf hingewiesen, dass die vorstehend genannten Merkmale oder Aspekte der Offenbarung bei einer oder mehreren in 11 dargestellten Verbindungen genutzt werden können. Beispielsweise implementiert ein On-Die-Interconnect(ODI), die nicht gezeigt ist, zum Koppeln interner Einheiten des Prozessors 1102 einen oder mehrere Aspekte der vorstehend beschriebenen Offenbarung. Oder die Offenbarung ist einem Prozessorbus 1110(z. B. Intel QuickPath Interconnect(QPI) oder einer anderen bekannten Hochleistungsrechenverbindung), einem Arbeitsspeicherpfad 1118 mit großer Bandbreite zum Arbeitsspeicher 1120, einer Punkt-zu-Punkt-Verbindung zum Grafikbeschleuniger 1112(z. B. einer Peripheral-Component-Interconnect-express(PCIe)-konformen Fabric), einer Steuerhubverbindung 1122, einer I/O- oder anderen Verbindung(z. B. USB, PCI, PCIe) zum Koppeln der anderen dargestellten Komponenten zugeordnet. Einige Beispiele derartiger Komponenten beinhalten die Audiosteuerung 1136, den Firmwarehub(Flash-BIOS) 1128, den drahtlosen Transceiver 1126, den Datenspeicher 1124, die Legacy-I/O-Steuerung 1110, die die Benutzereingabe- und Tastaturschnittstelle 1142 enthält, einen seriellen Erweiterungsanschluss 1138, wie etwa einen Universal Serial Bus(USB) und eine Netzwerksteuerung 1134. Die Datenspeichervorrichtung 1124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Laufwerk, eine Flash-Speichervorrichtung oder eine andere Massendatenspeichervorrichtung umfassen.
  • Nunmehr Bezug nehmend auf 12 ist ein Blockdiagramm eines zweiten Systems 1200 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Wie in 12 gezeigt, ist das Multiprozessorsystem 1200 ein Punkt-zu-Punkt-Verbindungssystem und beinhaltet einen ersten Prozessor 1270 und einen zweiten Prozessor 1280, die über eine Punkt-zu-Punkt-Verbindung 1250 gekoppelt sind. Jeder der Prozessoren 1270 und 1280 kann eine Version eines Prozessors sein. In einer Ausführungsform sind 1252 und 1254 Teil einer seriellen, kohärenten Punkt-zu-Punkt-Verbindungsfabric, wie etwa Intels QuickPath-Interconnect(QPI)-Architektur. Folglich kann die Offenbarung in der QPI-Architektur implementiert sein.
  • Auch wenn sie nur mit zwei Prozessoren 1270, 1280 gezeigt ist, versteht es sich, dass der Umfang der vorliegenden Offenbarung nicht derart beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem bestimmten Prozessor vorhanden sein.
  • Die Prozessoren 1270 und 1280 sind als jeweils eine integrierte Arbeitsspeichersteuereinheit 1272 bzw. 1282 beinhaltend gezeigt. Der Prozessor 1270 beinhaltet als Teil seiner Bussteuereinheiten auch Punkt-zu-Punkt(P-P)-Schnittstellen 1276 und 1278; ebenso beinhaltet der zweite Prozessor 1280 P-P-Schnittstellen 1286 und 1288. Die Prozessoren 1270, 1280 können über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1250 unter Verwendung von P-P-Schnittstellenschaltungen 1278, 1288 Informationen austauschen. Wie in 12 gezeigt, koppeln die IMCs 1272 und 1282 die Prozessoren mit einem jeweiligen Arbeitsspeicher, nämlich einem Arbeitsspeicher 1232 und einem Arbeitsspeicher 1234, die Abschnitte von Hauptarbeitsspeicher sein können, die lokal an die jeweiligen Prozessoren angebunden sind.
  • Die Prozessoren 1270, 1280 tauschen über einzelne P-P-Schnittstellen 1252, 1254 unter Verwendung von P-P-Schnittstellenschaltungen 1276, 1294, 1286, 1298 jeweils Informationen mit einem Chipsatz 1290 aus. Der Chipsatz 1290 tauscht auch über eine Schnittstellenschaltung 1292 entlang einer Hochleistungsgrafikverbindung 1239 Informationen mit einer Hochleistungsgrafikschaltung 1238 aus.
  • Ein geteilter Cache(nicht gezeigt) kann in beiden Prozessoren oder außerhalb beider Prozessoren enthalten sein; und dennoch mit den Prozessoren über eine P-P-Verbindung verbunden sein, sodass die lokalen Cacheinformationen eines oder beider Prozessoren im geteilten Cache gespeichert werden können, falls ein Prozessor in einen Modus mit niedriger Energie gesetzt wird.
  • Der Chipsatz 1290 kann über eine Schnittstelle 1296 mit einem ersten Bus 1216 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1216 ein Peripheral-Component-Interconnect(PCI)-Bus oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obgleich der Umfang der vorliegenden Offenbarung nicht derart beschränkt ist.
  • Wie in 12 gezeigt, sind verschiedene I/O-Vorrichtungen 1214 mit dem ersten Bus 1216 gekoppelt, zusammen mit einer Busbrücke 1218, die den ersten Bus 1216 mit einem zweiten Bus 1220 koppelt. In einer Ausführungsform beinhaltet der zweite Bus 1220 einen Low-Pin-Count(LPC)-Bus. Verschiedene Vorrichtungen sind mit dem zweiten Bus 1220 gekoppelt, in einer Ausführungsform beispielsweise einschließlich einer Tastatur und/oder Maus 1222, Kommunikationsvorrichtungen 1227 und einer Massenspeichereinheit 1228, wie etwa eines Plattenlaufwerks oder einer anderen Massendatenspeichervorrichtung, die oft Befehle/Code und Daten 1230 beinhaltet. Ferner ist ein Audio-I/O 1224 mit dem zweiten Bus 1220 gekoppelt gezeigt. Es sei darauf hingewiesen, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Verbindungsarchitekturen variieren können. Beispielsweise kann ein System statt der Punkt-zu-Punkt-Architektur aus 12 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Beispiel 1 ist eine Prozessoreinrichtung, die einen Mikroprozessor, der einen Mikroprozessor-System-Agent umfasst, und ein Field Programmable Gate Array(FPGA) beinhaltet. Das FPGA beinhaltet einen FPGA-System-Agent, um vom Mikroprozessor-System-Agent über eine Kommunikationsverbindung empfangene Arbeitsspeicherzugriffsanfragen zu verarbeiten; eine Arbeitsspeichersteuerung, die auf kommunizierende Weise mit dem System Agent gekoppelt ist; und eine serielle Hochgeschwindigkeitsschnittstelle, um den System Agent mit einem Massenspeichersystem zu verbinden.
  • Beispiel 2 kann den Gegenstand aus Beispiel 1 beinhalten, wobei die Kommunikationsverbindung konform mit einem QuickPath-Interconnect-Protokoll ist.
  • Beispiel 3 kann den Gegenstand aus Beispiel 1 beinhalten, wobei das FPGA ferner Hardwarelogik umfasst, um einen Peripheral-Component-Interconnect-Express(PCIe)-konformen Root Complex nachzubilden, wobei die Hardwarelogik ein PCIe-Protokoll durch eine oder mehrere Hardwareoperationen nachbildet und wobei der System Agent dazu ausgelegt ist, Arbeitsspeicherzugriffsanfragen über das High-Speed Serial Interface unter Verwendung eines PCIe-konformen Protokolls zu verarbeiten.
  • Beispiel 4 kann den Gegenstand aus einem der Beispiele 1-3 beinhalten, wobei das FPGA eine oder mehrere Beschleunigerschaltungen umfasst, um das Verarbeiten von zwischen dem Mikroprozessor und dem Massenspeichersystem übertragenen Daten durchzuführen.
  • Beispiel 5 kann den Gegenstand aus Beispiel 4 beinhalten, wobei die eine oder mehreren Beschleunigerschaltungen dazu ausgelegt sind, eines oder mehrere von Komprimierung und/oder Dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Structured-Query-Language(SQL)-Beschleunigung oder Extraktion-Transformation-Laden(ETL)-Operationen durchzuführen.
  • Beispiel 6 kann den Gegenstand aus Beispiel 4 beinhalten, wobei das FPGA ferner einen Caching Agent und einen Arbeitsspeichercache umfasst, um Daten für die eine oder mehreren Beschleunigerschaltungen zu cachen.
  • Beispiel 7 kann den Gegenstand aus einem der Beispiele 1-6 beinhalten, wobei das FPGA einen Verzeichniscache umfasst, um eine Teilmenge eines Massenspeicherverzeichnisses im FPGA zu speichern.
  • Beispiel 8 kann den Gegenstand aus einem der Beispiele 1-7 beinhalten, wobei das FPGA eine Cache-Line umfasst, um im Massenspeicher gespeicherte Daten zu cachen.
  • Beispiel 9 kann den Gegenstand aus einem der Beispiele 1-8 beinhalten, wobei das FPGA eine Fabricschnittstelle umfasst, wobei die Fabricschnittstelle eine Schnittstelle zu einem disaggregierten Massenspeichersystem bilden soll, das von einer Netzwerkfabric unterstützt wird.
  • Beispiel 10 kann den Gegenstand aus einem der Beispiele 1-9 beinhalten, wobei das FPGA eine Non-Volatile-Memory-Express(NVMe)-Arbeitsspeichersteuerung umfasst, die über ein High-Speed Serial Interface(HSSI) eine Schnittstelle mit einer NVMe-Steuerung auf einer verbundenen Massenspeichervorrichtung bilden soll.
  • Beispiel 11 ist ein Verfahren, das von einem Hardwareelement eines Prozessors durchgeführt wird, wobei das Verfahren das Empfangen eines Arbeitsspeicherbefehls von einem Hardwareprozessor an einem System Agent, der in einem Field Programmable Gate Array(FPGA) implementiert ist; das Identifizieren eines vom System Agent verwalteten Arbeitsspeicherorts, wobei der Arbeitsspeicherort Teil einer auf kommunizierende Weise mit dem FPGA gekoppelten Massenspeichervorrichtung ist; das Ausführen des Arbeitsspeicherbefehls; und das Bereitstellen einer Bestätigung der Arbeitsspeicherbefehlausführung für den Hardwareprozessor umfasst.
  • Beispiel 12 kann den Gegenstand aus Beispiel 11 beinhalten und kann auch das Abrufen im Arbeitsspeicher gespeicherter Daten über ein High-Speed Serial Interface beinhalten.
  • Beispiel 13 kann den Gegenstand aus Beispiel 12 beinhalten und kann auch das Übertragen vom FPGA von Daten vom Arbeitsspeicher zum Hardwareprozessor über eine Kommunikationsverbindung beinhalten.
  • Beispiel 14 kann den Gegenstand aus Beispiel 11 beinhalten, wobei die Bestätigung der Arbeitsspeicherbefehlausführung eine asynchrone Bestätigungsreaktion umfasst.
  • Beispiel 15 kann den Gegenstand aus Beispiel 14 beinhalten und kann auch das Abrufen von Daten vom als Arbeitsspeicher genutzten Massenspeicher; das Übertragen einer Lesereaktion zum Hardwareprozessor; das Cachen der Daten in einen Cachearbeitsspeicher; und, nach dem Übertragen der Lesereaktion zum Hardwareprozessor, das Übertragen der Daten vom Cachearbeitsspeicher zum Hardwareprozessor beinhalten.
  • Beispiel 16 kann den Gegenstand aus Beispiel 11 beinhalten und kann auch das Cachen von vom Arbeitsspeicherort abgerufenen Daten in einem Cache im FPGA beinhalten.
  • Beispiel 17 kann den Gegenstand aus Beispiel 11 beinhalten und kann auch das Anbieten eines Arbeitsspeicheradressraums, der vom im FPGA implementierten System Agent verwaltet wird, gegenüber einem System Agent des Hardwareprozessors beinhalten.
  • Beispiel 18 kann den Gegenstand aus Beispiel 11 beinhalten und kann auch das Durchführen einer Datenverarbeitung von zum FPGA eingehenden Daten und/oder vom FPGA ausgehenden Daten durch eine oder mehrere Beschleunigerschaltungen beinhalten.
  • Beispiel 19 kann den Gegenstand aus Beispiel 18 beinhalten, wobei die Datenverarbeitung das Durchführen eines oder mehrerer von Komprimierung und/oder Dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Structured-Query-Language(SQL)-Beschleunigung oder Extraktion-Transformation-Laden(ETL)-Operationen umfasst.
  • Beispiel 20 kann den Gegenstand aus Beispiel 11 beinhalten und kann auch das Empfangen einer Arbeitsspeicherzugriffsanfrage am FPGA-System-Agent von einem dem Hardwareprozessor zugeordneten System Agent; das Ermitteln eines Arbeitsspeicherorts für ein disaggregiertes Arbeitsspeicherelement einer Fabric von Arbeitsspeicherelementen; und das Verarbeiten der Arbeitsspeicherzugriffsanfrage auf Grundlage des ermittelten Arbeitsspeicherorts beinhalten.
  • Beispiel 21 ist ein System, das einen Mikroprozessor, der einen Mikroprozessor-System-Agent umfasst, und ein Beschleunigersystem beinhaltet. Das Beschleunigersystem beinhaltet einen System Agent, um vom Mikroprozessor-System-Agent über eine Kommunikationsverbindung empfangene Arbeitsspeicherzugriffsanfragen zu verarbeiten. Das Beschleunigersystem beinhaltet auch eine Arbeitsspeichersteuerung, die auf kommunizierende Weise mit dem System Agent gekoppelt ist. Das Beschleunigersystem beinhaltet auch ein High-Speed Serial Interface, um den System Agent mit einem Massenspeichersystem zu verbinden. Das System beinhaltet auch eine Massenspeichervorrichtung, die durch das High-Speed Serial Interface mit dem Beschleunigersystem verbunden ist.
  • Beispiel 22 kann den Gegenstand aus Beispiel 21 beinhalten, wobei die Massenspeichervorrichtung ein nichtflüchtiges Solid-State-Laufwerk(SSD)-Speicherelement umfasst.
  • Beispiel 23 kann den Gegenstand aus Beispiel 21 beinhalten, wobei das Beschleunigersystem eine Fabricverbindung umfasst; und wobei die Massenspeichervorrichtung disaggregierten als Arbeitsspeicher genutzten Massenspeicher umfasst, wobei der disaggregierte als Arbeitsspeicher genutzte Massenspeicher eine Vielzahl von nichtflüchtigen Solid-State-Laufwerkarbeitsspeicherelementen, die von einer Netzwerkfabric verwaltet wird, wobei die Fabric durch die Fabricverbindung mit dem Beschleunigersystem gekoppelt ist.
  • Beispiel 24 kann den Gegenstand aus Beispiel 21 beinhalten, wobei das Beschleunigersystem eine oder mehrere Beschleunigerschaltungen umfasst, um das Verarbeiten von zwischen dem Mikroprozessor und dem Massenspeichersystem übertragenen Daten durchzuführen.
  • Beispiel 25 kann den Gegenstand aus Beispiel 24 beinhalten, wobei die eine oder mehreren Beschleunigerschaltungen dazu ausgelegt sind, eines oder mehrere von Komprimierung und/oder Dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Structured-Query-Language(SQL)-Beschleunigung oder Extraktion-Transformation-Laden(ETL)-Operationen durchzuführen.
  • Die vorstehende Beschreibung einer oder mehrerer Implementierungen stellt eine Veranschaulichung und Beschreibung bereit, es ist aber nicht beabsichtigt, dass sie erschöpfend ist oder den Umfang von Ausführungsformen auf die präzise offenbarte Form beschränkt. Angesichts der obigen Lehren sind Modifikationen und Variationen möglich oder können aus der Umsetzung verschiedener Ausführungsformen abgeleitet werden.

Claims (25)

  1. Prozessoreinrichtung, umfassend: einen Mikroprozessor, der einen Mikroprozessor-Home-Agent umfasst; und ein Field Programmable Gate Array(FPGA), wobei das FPGA Folgendes umfasst: einen FPGA-Home-Agent, um vom Mikroprozessor-Home-Agent über eine Kommunikationsverbindung empfangene Arbeitsspeicherzugriffsanfragen zu verarbeiten; eine Arbeitsspeichersteuerung, die auf kommunizierende Weise mit dem Home Agent gekoppelt ist; ein High-Speed Serial Interface, um den Home Agent mit einem Massenspeichersystem zu verbinden.
  2. Prozessoreinrichtung nach Anspruch 1, wobei die Kommunikationsverbindung konform mit einem QuickPath-Interconnect-Protokoll ist.
  3. Prozessoreinrichtung nach Anspruch 1, wobei das FPGA ferner Hardwarelogik umfasst, um einen Peripheral-Component-Interconnect-Express(PCIe)-konformen Root Complex nachzubilden, wobei die Hardwarelogik ein PCIe-Protokoll durch eine oder mehrere Hardwareoperationen nachbildet und wobei der Home Agent dazu ausgelegt ist, Arbeitsspeicherzugriffsanfragen über das High-Speed Serial Interface unter Verwendung eines PCIe-konformen Protokolls zu verarbeiten.
  4. Prozessoreinrichtung nach Anspruch 1, wobei das FPGA eine oder mehrere Beschleunigerschaltungen umfasst, um das Verarbeiten von zwischen dem Mikroprozessor und dem Massenspeichersystem übertragenen Daten durchzuführen.
  5. Prozessoreinrichtung nach Anspruch 4, wobei die eine oder mehreren Beschleunigerschaltungen dazu ausgelegt sind, eines oder mehrere von Komprimierung und/oder Dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Structured-Query-Language(SQL)-Beschleunigung oder Extraktion-Transformation-Laden(ETL)-Operationen durchzuführen.
  6. Prozessoreinrichtung nach Anspruch 4, wobei das FPGA ferner einen Caching Agent und einen Arbeitsspeichercache umfasst, um Daten für die eine oder mehreren Beschleunigerschaltungen zu cachen.
  7. Prozessoreinrichtung nach Anspruch 1, wobei das FPGA einen Verzeichniscache umfasst, um eine Teilmenge eines Massenspeicherverzeichnisses im FPGA zu speichern.
  8. Prozessoreinrichtung nach Anspruch 1, wobei das FPGA eine Cache-Line umfasst, um im Massenspeicher gespeicherte Daten zu cachen.
  9. Prozessoreinrichtung nach Anspruch 1, wobei das FPGA eine Fabricschnittstelle umfasst, wobei die Fabricschnittstelle eine Schnittstelle zu einem disaggregierten Massenspeichersystem bilden soll, das von einer Netzwerkfabric unterstützt wird.
  10. Prozessoreinrichtung nach Anspruch 1, wobei das FPGA eine Non-Volatile-Memory-Express(NVMe)-Arbeitsspeichersteuerung umfasst, die über ein High-Speed Serial Interface(HSSI) eine Schnittstelle mit einer NVMe-Steuerung auf einer verbundenen Massenspeichervorrichtung bilden soll.
  11. Verfahren, das von einem Hardwareelement eines Prozessors durchgeführt wird, wobei das Verfahren Folgendes umfasst: Empfangen eines Arbeitsspeicherbefehls von einem Hardwareprozessor an einem Home Agent, der in einem Field Programmable Gate Array(FPGA) implementiert ist; Identifizieren eines vom Home Agent verwalteten Arbeitsspeicherorts, wobei der Arbeitsspeicherort Teil einer auf kommunizierende Weise mit dem FPGA gekoppelten Massenspeichervorrichtung ist; Ausführen des Arbeitsspeicherbefehls; und Bereitstellen einer Bestätigung der Arbeitsspeicherbefehlausführung für den Hardwareprozessor.
  12. Verfahren nach Anspruch 11, ferner umfassend das Abrufen im Arbeitsspeicher gespeicherter Daten über ein High-Speed Serial Interface.
  13. Verfahren nach Anspruch 12, ferner umfassend das Übertragen vom FPGA von Daten vom Arbeitsspeicher zum Hardwareprozessor über eine Kommunikationsverbindung.
  14. Verfahren nach Anspruch 11, wobei die Bestätigung der Arbeitsspeicherbefehlausführung eine asynchrone Bestätigungsreaktion umfasst.
  15. Verfahren nach Anspruch 14, ferner umfassend: Abrufen von Daten vom als Arbeitsspeicher genutzten Massenspeicher; Übertragen einer Lesereaktion zum Hardwareprozessor; Cachen der Daten in einen Cachearbeitsspeicher; und, nach dem Übertragen der Lesereaktion zum Hardwareprozessor, Übertragen der Daten vom Cachearbeitsspeicher zum Hardwareprozessor.
  16. Verfahren nach Anspruch 11, ferner umfassend das Cachen von vom Arbeitsspeicherort abgerufenen Daten in einem Cache im FPGA.
  17. Verfahren nach Anspruch 11, ferner umfassend das Anbieten eines Arbeitsspeicheradressraums, der vom im FPGA implementierten Home Agent verwaltet wird, gegenüber einem Home Agent des Hardwareprozessors.
  18. Verfahren nach Anspruch 11, ferner umfassend das Durchführen einer Datenverarbeitung von zum FPGA eingehenden Daten und/oder vom FPGA ausgehenden Daten durch eine oder mehrere Beschleunigerschaltungen.
  19. Verfahren nach Anspruch 18, wobei die Datenverarbeitung das Durchführen eines oder mehrerer von Komprimierung und/oder Dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Structured-Query-Language(SQL)-Beschleunigung oder Extraktion-Transformation-Laden(ETL)-Operationen umfasst.
  20. Verfahren nach Anspruch 11, ferner umfassend: Empfangen einer Arbeitsspeicherzugriffsanfrage am FPGA-Home-Agent von einem dem Hardwareprozessor zugeordneten Home Agent; Ermitteln eines Arbeitsspeicherorts für ein disaggregiertes Arbeitsspeicherelement einer Fabric von Arbeitsspeicherelementen; und Verarbeiten der Arbeitsspeicherzugriffsanfrage auf Grundlage des ermittelten Arbeitsspeicherorts.
  21. System, umfassend: einen Mikroprozessor, der einen Mikroprozessor-Home-Agent umfasst; ein Field Programmable Gate Array(FPGA), wobei das FPGA Folgendes umfasst: einen FPGA-Home-Agent, um vom Mikroprozessor-Home-Agent über eine Kommunikationsverbindung empfangene Arbeitsspeicherzugriffsanfragen zu verarbeiten; eine Arbeitsspeichersteuerung, die auf kommunizierende Weise mit dem Home Agent gekoppelt ist; und ein High-Speed Serial Interface, um den Home Agent mit einem Massenspeichersystem zu verbinden; und eine Massenspeichervorrichtung, die durch das High-Speed Serial Interface mit dem FPGA verbunden ist.
  22. System nach Anspruch 21, wobei die Massenspeichervorrichtung ein nichtflüchtiges Solid-State-Laufwerk(SSD)-Speicherelement umfasst.
  23. System nach Anspruch 21, wobei das FPGA eine Fabricverbindung umfasst; und wobei die Massenspeichervorrichtung disaggregierten als Arbeitsspeicher genutzten Massenspeicher umfasst, wobei der disaggregierte als Arbeitsspeicher genutzte Massenspeicher eine Vielzahl von nichtflüchtigen Solid-State-Laufwerkarbeitsspeicherelementen, die von einer Netzwerkfabric verwaltet wird, wobei die Fabric durch die Fabricverbindung mit dem FPGA gekoppelt ist.
  24. System nach Anspruch 21, wobei das FPGA eine oder mehrere Beschleunigerschaltungen umfasst, um das Verarbeiten von zwischen dem Mikroprozessor und dem Massenspeichersystem übertragenen Daten durchzuführen.
  25. System nach Anspruch 24, wobei die eine oder mehreren Beschleunigerschaltungen dazu ausgelegt sind, eines oder mehrere von Komprimierung und/oder Dekomprimierung, Verschlüsselung und/oder Entschlüsselung, Structured-Query-Language(SQL)-Beschleunigung oder Extraktion-Transformation-Laden(ETL)-Operationen durchzuführen.
DE102018004327.5A 2017-06-30 2018-05-30 Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher Pending DE102018004327A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/640,448 US11238203B2 (en) 2017-06-30 2017-06-30 Systems and methods for accessing storage-as-memory
US15/640,448 2017-06-30

Publications (1)

Publication Number Publication Date
DE102018004327A1 true DE102018004327A1 (de) 2019-01-03

Family

ID=64661730

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018004327.5A Pending DE102018004327A1 (de) 2017-06-30 2018-05-30 Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher

Country Status (3)

Country Link
US (1) US11238203B2 (de)
CN (1) CN109213706A (de)
DE (1) DE102018004327A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
CN110710139A (zh) 2017-03-29 2020-01-17 芬基波尔有限责任公司 具有光置换器的无阻塞全网状数据中心网络
WO2018183553A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
WO2018191257A1 (en) 2017-04-10 2018-10-18 Fungible, Inc. Relay consistent memory management in a multiple processor system
CN110892380B (zh) 2017-07-10 2023-08-11 芬基波尔有限责任公司 用于流处理的数据处理单元
US10659254B2 (en) * 2017-07-10 2020-05-19 Fungible, Inc. Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric
WO2019068013A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. FABRIC CONTROL PROTOCOL FOR DATA CENTER NETWORKS WITH PACKAGING OF PACKETS ON MULTIPLE ALTERNATIVE DATA PATHWAYS
US10965586B2 (en) 2017-09-29 2021-03-30 Fungible, Inc. Resilient network communication using selective multipath packet flow spraying
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
US11048644B1 (en) * 2017-12-11 2021-06-29 Amazon Technologies, Inc. Memory mapping in an access device for non-volatile memory
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US20190243796A1 (en) * 2018-02-06 2019-08-08 Samsung Electronics Co., Ltd. Data storage module and modular storage system including one or more data storage modules
US10635609B2 (en) * 2018-03-02 2020-04-28 Samsung Electronics Co., Ltd. Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US10489341B1 (en) * 2018-06-25 2019-11-26 Quanta Computer Inc. Flexible interconnect port connection
US11238005B2 (en) 2018-07-20 2022-02-01 Samsung Electronics Co., Ltd. SFF-TA-100X based multi-mode protocols solid state devices
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
CN109947694A (zh) * 2019-04-04 2019-06-28 上海威固信息技术股份有限公司 一种可重构计算存储融合闪存控制***
WO2022067564A1 (zh) * 2020-09-29 2022-04-07 华为技术有限公司 一种响应用户访问请求的方法、装置和存储设备
CN113064912B (zh) * 2021-03-24 2023-07-21 西安热工研究院有限公司 一种dcs后台快速查询历史告警信息的方法
CN113868179B (zh) * 2021-09-10 2024-04-02 中国航空工业集团公司西安航空计算技术研究所 一种LPC_DPRam的通信装置及数据转换方法
US11880568B2 (en) 2021-11-17 2024-01-23 Seagate Technology Llc On demand configuration of FPGA interfaces
US11567936B1 (en) * 2022-09-19 2023-01-31 Keebo Inc. Platform agnostic query acceleration

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9658977B2 (en) * 2013-03-15 2017-05-23 Micron Technology, Inc. High speed, parallel configuration of multiple field programmable gate arrays
US10068183B1 (en) * 2017-02-23 2018-09-04 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on a quantum processing platform
US10402326B1 (en) * 2016-04-26 2019-09-03 Apple Inc. Accessing memories in coherent and non-coherent domains in a computing system
NO343359B1 (en) * 2017-05-02 2019-02-11 Numascale As Interconnect switch in multiprocessor systems

Also Published As

Publication number Publication date
US20190005176A1 (en) 2019-01-03
US11238203B2 (en) 2022-02-01
CN109213706A (zh) 2019-01-15

Similar Documents

Publication Publication Date Title
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
US11657015B2 (en) Multiple uplink port devices
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
TWI570565B (zh) 池式記憶體位址轉譯之技術
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE102018006756A1 (de) Beschleuniger-Fabric
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112017006557T5 (de) Bimodale phy für geringe latenz in hochgeschwindigkeitsverbindungswegen
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE102018005753A1 (de) Serdes link training
DE112017001148T5 (de) Abflachende portalbrücke .
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung

Legal Events

Date Code Title Description
R012 Request for examination validly filed