DE102018006797A1 - Kohärente Speichereinrichtungen über PCIe - Google Patents

Kohärente Speichereinrichtungen über PCIe Download PDF

Info

Publication number
DE102018006797A1
DE102018006797A1 DE102018006797.2A DE102018006797A DE102018006797A1 DE 102018006797 A1 DE102018006797 A1 DE 102018006797A1 DE 102018006797 A DE102018006797 A DE 102018006797A DE 102018006797 A1 DE102018006797 A1 DE 102018006797A1
Authority
DE
Germany
Prior art keywords
memory
accelerator
pcie
host
bias
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
DE102018006797.2A
Other languages
English (en)
Inventor
Ramacharan Sundararaman
Ishwar AGARWAL
Stephen R. Van Doren
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 DE102018006797A1 publication Critical patent/DE102018006797A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3852Converter between protocols
    • 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)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

In einem Beispiel offenbar ist eine „Peripheral Component Interconnect Express“ (PCIe)-Steuerung zum Bereitstellen kohärente Speicherabbildung zwischen einem Beschleunigerspeicher und einem Host-Speicheradressraum, umfassend: einen PCIe-Steuerungs-Hub umfassend Erweiterungen zum Bereitstellen einer kohärenten Beschleunigerverbindung (CAI) zum Bereitstellen von Bias-basierter Kohärenzverfolgung zwischen dem Beschleunigerspeicher und dem Host-Adressspeicherraum; wobei die Erweiterungen umfassen: eine Abbildungs-Engine zum Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und „On-Chip System Fabric“ (OSF)-Anweisungen für die CAI; und eine Tunneling-Engine zum Bereitstellen von „Scalable Memory Interconnect“ (SMI)-Tunneln von Host-Speicheroperationen zum Beschleunigerspeicher über die CAI.

Description

  • Gebiet der Spezifikation
  • Diese Offenbarung bezieht sich allgemein auf das Gebiet der Verbindungseinrichtungen und insbesondere, jedoch nicht ausschließlich, auf ein System und ein Verfahren für kohärente Speichereinrichtungen über Peripheral Component Interconnect Express (PCIe).
  • Stand der Technik
  • Rechensysteme weisen verschiedene Komponenten auf, um Anforderungen an Prozessorressourcen zu verwalten. Beispielsweise können Entwickler einen Hardware-Beschleuniger (oder „Beschleuniger“) vorsehen, der mit einer zentralen Verarbeitungseinheit (CPU) funktionell gekoppelt ist. Generell ist ein Beschleuniger ein autonomes Element, ausgelegt zum Durchführen von Funktionen, die durch die CPU an ihn delegiert wurden. Ein Beschleuniger kann für spezifische Funktionen ausgelegt sein und/oder programmierbar sein. Beispielsweise kann ein Beschleuniger zum Durchführen spezifischer Berechnungen, grafischer Funktionen und/oder dergleichen ausgelegt sein. Wenn ein Beschleuniger eine zugewiesene Funktion durchführt, ist die CPU frei, um Ressourcen für andere Anforderungen abzustellen. In konventionellen Systemen kann das Betriebssystem (OS) den im Rechensystem verfügbaren physischen Speicher (beispielsweise „Systemspeicher“) verwalten; das OS verwaltet jedoch keinen Speicher oder teilt ihn zu, der in Bezug auf einen Beschleuniger lokal ist. Demzufolge führen Speicherschutzmechanismen wie Cache-Kohärenz in beschleunigerbasierten Konfigurationen Ineffizienzen ein. Beispielsweise begrenzen konventionelle Cache-Kohärenzmechanismen die Fähigkeit eines Beschleunigers zum Zugriff auf seinen verbundenen lokalen Speicher bei sehr hoher Bandbreite, und/oder sie begrenzen die Einsatzoptionen für den Beschleuniger.
  • Figurenliste
  • Die vorliegende Offenbarung wird am besten verständlich aus der folgenden detaillierten Beschreibung bei Lektüre mit den beigefügten FIGUREN. Es wird hervorgehoben, dass entsprechend der gängigen Praxis auf diesem Gebiet verschiedene Funktionen nicht notwendigerweise maßstabsgetreu gezeichnet sind und dass sie nur zu Zwecken der Veranschaulichung verwendet werden. Dort, wo explizit oder implizit ein Maßstab gezeigt ist, stellt dies nur ein veranschaulichendes Beispiel bereit. Bei anderen Ausführungsformen können die Abmessungen der verschiedenen Funktionen im Interesse der klareren Erörterung willkürlich erhöht oder verringert werden.
    • 1 veranschaulicht ein Beispiel einer Betriebsumgebung, die für verschiedene Ausführungsformen gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation repräsentativ sein kann.
    • 2a veranschaulicht ein Beispiel einer Betriebsumgebung vollständiger Kohärenz gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 2b veranschaulicht ein Beispiel einer Betriebsumgebung vollständiger Kohärenz gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 2c veranschaulicht ein Beispiel einer Kohärenz-Engine ohne beeinflussende Betriebsumgebung gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 3 veranschaulicht ein Beispiel einer Betriebsumgebung, die für verschiedene Ausführungsformen gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation repräsentativ sein kann.
    • 4 veranschaulicht ein weiteres Beispiel einer Betriebsumgebung, die für verschiedene Ausführungsformen gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation repräsentativ sein kann.
    • 5a und 5b veranschaulicht weitere Beispiele von Betriebsumgebungen, die für verschiedene Ausführungsformen gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation repräsentativ sein können.
    • 6 veranschaulicht ein Beispiel eines Logikablaufs gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 7 ist ein Blockdiagramm mit der Darstellung einer Struktur gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 8 ist ein Blockdiagramm mit der Darstellung eines Verfahrens gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 9 ist ein Blockdiagramm eines Lesevorgangs eines „lntel® Accelerator Link“-Speichers (IAL.mem) unter PCIe-Betrieb gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 10 ist ein Blockdiagramm eines Schreibvorgangs eines IAL.mem unter PCIe-Betrieb gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 11 ist ein Blockdiagramm eines IAL.mem-Abschlusses mit Daten unter PCIe-Betrieb gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 12 veranschaulicht eine Ausführungsform einer Struktur, zusammengesetzt aus Punkt-zu-Punkt-Verbindungen, die eine Gruppe von Komponenten verbinden, gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 13 veranschaulicht ein Beispiel einer Ausführungsform eines geschichteten Protokollstapels gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 14 veranschaulicht eine Ausführungsform eines PCIe-Transaktionsdeskriptors gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
    • 15 veranschaulicht eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Struktur gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation.
  • Ausführungsformen der Offenbarung
  • Der Intel® Accelerator Link (IAL) der vorliegenden Spezifikation ist eine Erweiterung der Verbindungsverknüpfung des „Rosetta Link“ (R-Link) Multi-Chip-Pakets (MCP). IAL erweitert das R-Link-Protokoll, um ihm die Unterstützung von Beschleuniger und Eingabe-/Ausgabe-(IO)-Einrichtungen zu ermöglichen, die durch die Basisprotokolle R-Link oder „Peripheral Component Interconnect Express“ (PCIe) möglicherweise nicht angemessen unterstützt werden.
  • Die folgende Offenbarung stellt viele unterschiedliche Ausführungsformen oder Beispiele zur Implementierung unterschiedlicher Merkmale der vorliegenden Offenbarung bereit. Spezifische Beispiele von Komponenten und Anordnungen sind im Folgenden beschrieben, um die vorliegende Offenbarung zu vereinfachen. Selbstverständlich sind dies reine Beispiele, und sie sollen nicht einschränkend sein. Ferner kann die vorliegende Offenbarung Kennziffern und/oder Buchstaben in den verschiedenen Beispielen wiederholen. Diese Wiederholung dient dem Zweck der Vereinfachung und Klarheit und legt als solche keine Beziehung zwischen den verschiedenen erörterten Ausführungsformen und/oder Konfigurationen fest. Unterschiedliche Ausführungsformen weisen unterschiedliche Vorteile auf, und kein bestimmter Vorteil ist notwendigerweise durch eine der Ausführungsformen beansprucht.
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie etwa Beispiele spezifischer Prozessorarten und Systemkonfigurationen, spezifische Hardware-Strukturen, spezifische architekturelle und mikroarchitekturelle Details, spezifische Registerkonfigurationen, spezifische Anweisungsarten, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische(r) Prozessor-Pipelinestufen und -betrieb, usw., um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Es wird allerdings für den Fachmann ersichtlich sein, dass diese spezifischen Details nicht eingesetzt werden müssen, um die vorliegende Erfindung auszuüben.
  • In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Prozessorarchitekturen, spezifische(r) Logikschaltungen/-code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifischer Verschaltungsbetrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compilerimplementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Herunterfahr- und Gate-Techniken/-Logik und andere spezifische Betriebsdetails von Computersystemen nicht detailliert beschrieben, um unnötiges Verschleiern der vorliegenden Erfindung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieerhaltung und Energieeffizienz in spezifischen integrierten Schaltungen, wie zum Beispiel in Computerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikgeräten anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleiterbauelementen angewandt werden, die auch von besserer Energieeffizienz und Energieerhaltung profitieren können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ eingeschränkt, und sie können auch in anderen Einrichtungen wie Handhelds-Geräten, Tabletts, anderen flachen Notebooks, System-auf-einem-Chip-(SOC)-Einrichtungen und eingebetteten Anwendungen verwendet werden.
  • Einige Beispiele für Handheld-Geräte umfassen Mobiltelefone, Internetprotokolleinrichtungen, Digitalkameras, Personal Digital Assistants (PDA) und Handheld-Personal-Computer (PCs). Eingebettete Anwendungen beinhalten typischerweise eine Mikrosteuerung, einen digitalen Signalprozessor (DSP), ein System-auf-einem-Chip (SoC), Netzwerk-„Personal Computer“ (NetPCs), Set-Top-Boxen, Netzwerk-Hubs, „Wide Area Network“ (WAN)-Switches oder beliebige andere Systeme, die die weiter unten gelehrten Funktionen und Operationen ausführen können. Zudem sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Recheneinrichtungen beschränkt, sondern sie können sich auch auf Softwareoptimierungen zur Energieeinsparung und Effizienz beziehen. Wie in der folgenden Beschreibung leicht ersichtlich ist, sind die hier beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (ob mit Bezug auf Hardware, Firmware, Software oder eine Kombination daraus) für eine mit Performanzerwägungen ausgewogene Zukunft einer „grünen Technologie“ wesentlich.
  • Verschiedene Ausführungsformen können allgemein auf Techniken zum Bereitstellen von Cache-Kohärenz zwischen einer Mehrzahl von Komponenten innerhalb eines Verarbeitungssystems ausgerichtet sein. Bei einigen Ausführungsformen kann die Mehrzahl von Komponenten einen Prozessor wie eine zentrale Verarbeitungseinheit (CPU) und eine mit dem Prozessor kommunikativ gekoppelte Logikeinrichtung aufweisen. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung einen lokal angeschlossenen Speicher aufweisen. Bei einigen Ausführungsformen kann die Mehrzahl von Komponenten einen mit einem Beschleuniger kommunikativ gekoppelten Prozessor aufweisen, der einen lokal angeschlossenen Speicher aufweist (zum Beispiel Speicher der Logikeinrichtung).
  • Bei einigen Ausführungsformen kann das Verarbeitungssystem einen Kohärenz-Bias-Prozess ausführen, ausgelegt zum Bereitstellen einer Mehrzahl von Cache-Kohärenzprozessen. Bei einigen Ausführungsformen kann die Mehrzahl von Cache-Kohärenzprozessen einen Einrichtungs-Bias-Prozess und einen Host-Bias-Prozess aufweisen (zusammen „Bias-Protokollabläufe“). Bei einigen Ausführungsformen kann der Host-Bias-Prozess Anfragen an den lokal angeschlossenen Speicher der Logikeinrichtung durch eine Kohärenzkomponente des Prozessors leiten, umfassend auch Anfragen von der Logikeinrichtung. Bei einigen Ausführungsformen kann der Einrichtungs-Bias-Prozess Anfragen der Logikeinrichtung an Logikeinrichtungsspeicher direkt zum Logikeinrichtungsspeicher leiten, beispielsweise ohne Einbeziehung der Kohärenzkomponente des Prozessors. Bei verschiedenen Ausführungsformen kann der Cache-Kohärenzprozess zwischen dem Einrichtungs-Bias-Prozess und den Host-Bias-Prozessen basierend auf einem unter Verwendung von Anwendungssoftware, Hardware-Hinweisen, einer Kombination daraus und/oder dergleichen festgelegten Bias-Indikator umschalten. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Der dieser Spezifikation beschriebene IAL verwendet ein optimiertes Beschleunigerprotokoll (UHD), das eine weitere Erweiterung des R-Link MCP-Verbindungsprotokolls ist. Der IAAF kann bei einem Beispiel verwendet werden zum Bereitstellen einer Verbindungsstruktur zu einer Beschleunigereinrichtung (die Beschleunigereinrichtung kann bei einigen Beispielen ein Hochleistungsbeschleuniger sein, der beispielsweise Grafikverarbeitung, dichte Berechnung, SmartNIC-Dienste oder Ähnliches durchführt). Der Beschleuniger kann einen eigenen angeschlossenen Beschleunigerspeicher aufweisen und eine Verbindungsstruktur wie ein IAL oder eine PCIe-basierte Struktur kann bei einigen Ausführungsformen zum Anschluss des Prozessors an den Beschleuniger verwendet werden. Die Verbindungsstruktur kann eine kohärente Beschleunigerstruktur sein, wobei der Beschleunigerspeicher in diesem Fall in den Speicheradressraum der Host-Einrichtung abgebildet werden kann. Die kohärente Beschleunigerstruktur kann Kohärenz innerhalb des Beschleunigers und zwischen dem Beschleuniger und der Host-Einrichtung aufrechterhalten. Dies kann verwendet werden, um bei diesen Beschleunigertypen Speicher- und Kohärenz-Unterstützung nach dem Stand der Technik zu implementieren.
  • In vorteilhafter Weise kann kohärente Beschleunigerstruktur nach der vorliegenden Spezifikation Optimierungen bereitstellen, die die Effizienz und den Durchsatz erhöhen. Beispielsweise kann ein Beschleuniger eine gewisse Anzahl von n Speicherbänken aufweisen, wobei entsprechende n „Last Level Caches“ (LLCs) jeweils durch eine LLC-Steuerung gesteuert werden. Die Struktur kann unterschiedliche Arten von Verbindungen zum Verbinden des Beschleunigers und seiner Caches mit dem Speicher und zum Verbinden der Struktur mit der Host-Einrichtung bereitstellen.
  • Zum Zweck der Veranschaulichung werden im Verlauf dieser Spezifikation Busse oder Verbindungen, die Einrichtungen gleicher Natur verbinden, als „horizontale“ Verbindungen bezeichnet, während Verbindungen oder Busse, die unterschiedliche Einrichtungen in Upstream- und Downstream-Richtung verbinden, als „vertikale“ Verbindung bezeichnet werden können. Die Begriffe „horizontal“ und „vertikal“ werden hier allein zum leichteren Verständnis verwendet und sollen keine erforderliche physische Anordnung der Verbindungen oder Busse implizieren oder voraussetzen, dass sie auf einem Die physikalisch zueinander senkrecht sein müssen.
  • Beispielsweise kann ein Beschleuniger eine 8 Speicherbänke aufweisen, wobei entsprechende 8 LLCs, die Level-3-(L3)-Caches sein können, jeweils durch eine LLC-Steuerung gesteuert werden. Die kohärente Beschleunigerstruktur kann in eine Anzahl unabhängiger „Slices“ unterteilt sein. Jede Slice bedient eine Datenbank und ihre dazugehörige LLC und arbeitet im Wesentlichen unabhängig von den anderen Slices. Bei einem Beispiel kann jede Slice die durch den IAL bereitgestellten Bias-Operationen ausnutzen und parallele Pfade zur Speicherbank bereitstellen. Speicheroperationen, die die Host-Einrichtung einbeziehen, können durch eine Strukturkohärenz-Engine (FCE) geleitet werden, die die Kohärenz mit der Host-Einrichtung bereitstellt. Die LLC jeder individuellen Slice kann jedoch auch einen parallelen Bypass-Pfad aufweisen, der direkt in die Speicherbank schreibt, die die LLC direkt unter Übergehung der FCE mit der Speicherbank verbindet. Dies kann beispielsweise durch Bereitstellen der Bias-Logik (z. B. Host-Bias oder Beschleuniger-Bias) in der LLC-Steuerung selbst durchgeführt werden. Die LLC-Steuerung kann physisch von der FCE getrennt sein und in der vertikalen Orientierung vor der FCE angeordnet sein, sodass es einem Beschleuniger-Bias-Speichervorgang ermöglicht wird, die FCE zu übergehen und direkt in eine Speicherbank zu schreiben.
  • Ausführungsformen der vorliegenden Spezifikation können auch wesentliche Stromeinsparungen erreichen, indem ein Energiemanager bereitgestellt wird, der Teile der kohärenten Struktur abschaltet, wenn diese nicht verwendet werden. Beispielsweise kann der Beschleuniger ein Beschleuniger mit sehr großer Bandbreite sein, der viele Operationen pro Sekunde durchführen kann. Während der Beschleuniger seine beschleunigte Funktion ausführt, beansprucht er stark die Struktur und benötigt extrem viel Bandbreite, sodass berechnete Werte nach ihrer Berechnung rechtzeitig im Speicher abgelegt werden können. Nach dem Abschluss einer Berechnung ist die Host-Einrichtung jedoch möglicherweise nicht für die Verwendung der Daten bereit. In diesem Fall können Teile der Verbindung, wie z. B. vertikale Busse von der FCE zur LLC-Steuerung sowie horizontale Busse zwischen den LLC-Steuerungen und den LLCs selbst abgeschaltet werden. Diese können abgeschaltet bleiben, bis der Beschleuniger neue Daten empfängt, mit denen er arbeiten soll.
  • Die folgende Tabelle stellt mehrere Klassen von Beschleunigern dar. Man beachte, dass der Basis-R-Link nur die beiden ersten Beschleunigerklassen unterstützen kann, während die IAL alle fünf unterstützen kann.
    Beschleunigerklasse Beschreibung Beispiele
    1. Erzeuger-Verbraucher PCIe-Basiseinrichtun gen Netzwerkbeschl euniger
    Krypto
    Kompression
    2. Erzeuger-Verbraucher plus PCIe-Einrichtungen mit besonderen Erfordernissen (z. B. spezielle Bestellanforder ungen) Storm Lake Data Center Fabric
    Infiniband HBA
    3. SWunterstützter Gerätespeiche r Beschleuniger mit angeschlossene m Speicher Diskrete FPGA
    Grafik
    Verwendungen, wobei Software-„Datenplatzieru ng“ praktikabel ist
    4. Autonomer Einrichtungssp eicher Beschleuniger mit angeschlossene m Speicher Offload dichter Berechnung
    GPGPU
    Verwendungen, wobei Software-„Datenplatzieru ng“ nicht praktikabel ist
    5. Riesen-Cache Beschleuniger mit angeschlossene m Speicher Offload dichter Berechnung
    GPGPU
    Verwendungen, wobei der Daten-Footprint größer als der angeschlossene Speicher ist
  • Man beachte, dass Ausführungsformen dieser Beschleuniger einen gewissen Grad von Cache-Kohärenz erfordern können, um die Verwendungsmodelle zu unterstützen, ausgenommen Erzeuger-Verbraucher. Somit ist IAL ein kohärenter Beschleuniger-Link.
  • IAL verwendet eine Kombination von drei Protokollen, die dynamisch zu einer gemeinsamen Verknüpfung gebündelt werden, um die weiter oben offenbarten Beschleunigermodelle zu ermöglichen. Diese Protokolle umfassen:
    • • „Intel® On-chip System Fabric“ (IOSF) - Eine neu formatierte PCIe-basierte Verbindung, die ein nicht kohärentes geordnetes semantisches Protokoll bereitstellt. IOSF kann eine Auf-dem-Chip-Implementierung des gesamten PCIe-Standards oder eines Teils davon aufweisen. IOSF paketiert PCIe-Verkehr, sodass er zu einem beigeordneten Die gesendet werden kann, wie z. B. einem System-auf-einem-Chip (SoC) oder Multi-Chip-Modul (MCM). IOSF ermöglicht Geräteentdeckung, Gerätekonfiguration, Fehlermeldung, Interrupts, Datenübertragungen nach Art von Speicherdirektzugriff (DMA) und verschiedene als Teil des PCIe-Standards bereitgestellte Dienste.
    • • „In-Die-Interconnect“ (IDI) - ermöglicht eine Einrichtung die Ausgabe von kohärenten Lese- und Schreib-Anforderungen an einen Prozessor.
    • • „Scalable Memory Interconnect“ (SMI) - ermöglicht einen Prozessor den Zugriff auf an einen Beschleuniger angeschlossenen Speicher.
  • Diese drei Protokolle können in unterschiedlichen Kombinationen verwendet werden (z. B. IOSF allein, IOSF plus IDI, IOSF plus IDI plus SMI, IOSF plus SMI), um verschiedene der in der vorstehenden Tabelle beschriebenen Modelle zu unterstützen.
  • Als Basis stellt IAL eine einzelne Verknüpfung oder Busdefinition bereit, die alle fünf Beschleunigermodelle durch die Kombination der vorstehend erwähnten Protokolle abdecken kann. Man beachte, dass Erzeuger-Verbraucher-Beschleuniger im Wesentlichen PCIe-Beschleuniger sind. Sie erfordern nur das IOSF-Protokoll, das bereits eine neu formatierte Version von PCIe ist. IOSF unterstützt einige Operationen der Beschleuniger-Schnittstellen-Architektur (AiA) wie die Unterstützung der „Enqueue“ (ENQ)-Anweisung, die durch PCIe-Einrichtungen nach Industriestandard möglicherweise nicht unterstützt wird. IOSF stellt daher im Vergleich zu PCIe für diese Beschleunigerklasse einen Mehrwert bereit. „Erzeuger-Verbraucher plus“-Beschleuniger sind Beschleuniger, die nur die IDI- und IOSF-Schichten des IAL nutzen können.
  • Softwareunterstützter Gerätespeicher und autonomer Gerätespeicher können bei einigen Ausführungsformen das SMI-Protokoll am IAL erfordern, umfassend den Einschluss von speziellen Vorgangscodes (Opcodes) an SMI und spezielle Steuerungsunterstützung für mit diesen Opcodes im Prozessor assoziierte Abläufe. Diese Zusätze unterstützen das Kohärenz-Bias-Modell von IAL. Die Verwendung kann IOSF, IDI und SMI sämtlich unterstützen.
  • Die Riesen-Cache-Verwendung setzt ebenfalls IOSF, IDI und SMI ein, kann aber auch neue Kennzeichen zu den IDI- und SMI-Protokollen hinzufügen, die spezifisch für die Verwendung mit Riesen-Cache-Beschleuniger konzipiert sind (d. h., die in den weiter oben erörterten Gerätespeichermodellen nicht eingesetzt werden). Riesen-Cache kann neue spezielle Steuerung Unterstützung im Prozessor hinzufügen, die für keine der anderen Verwendungen erforderlich ist.
  • IAL bezeichnet diese drei Protokolle als IAL.IO, IAL.cache und IAL.mem. Die Kombination dieser drei Protokolle stellt den erwünschten Performanznutzen für die fünf Beschleunigermodelle bereit.
  • Zum Erzielen dieser Vorteile kann IAL für physikalische Schichten gemäß R-Link (für MCP) oder Flexbus (diskret) bereitstellen, um dynamisches Multiplexing der IO-, Cache- und Mem-Protokolle zu ermöglichen.
  • Einige Formfaktoren unterstützen die physikalischen Schichten gemäß R-Link oder Flexbus jedoch nicht nativ. Insbesondere unterstützen Gerätespeicher-Beschleuniger der Klassen 3 und 4 möglicherweise nicht R-Link oder Flexbus. Vorliegende Beispiele hierfür können Standard-PCIe verwenden, dass die Einrichtungen auf ein privates Speichermodell beschränkt, statt einen kohärenten Speicher bereitzustellen, der in den Rückschreib-Speicheradressraum der Host-Einrichtung abgebildet werden kann. Dieses Modell ist beschränkt, da der mit der Einrichtung verbundene Speicher somit nicht direkt durch Software adressierbar ist. Dies kann zu suboptimaler Datenaufstellung zwischen dem Host- und Gerätespeicher über eine bandbreitenbegrenzte PCIe-Verknüpfung führen.
  • Somit stellen Ausführungsformen der vorliegenden Spezifikation Kohärenzsemantik bereit, die der gleichen Bias-Modell-basierten, durch IAL definierten Definition folgt, die den Nutzen von Kohärenz ohne traditionell anfallenden Overhead beibehält. All dies kann über eine vorhandene physikalische PCIe-Verknüpfung bereitgestellt werden.
  • Somit lassen sich einige der Vorteile des IAL über eine physikalische Schicht realisieren, die nicht das dynamische Multiplexing zwischen den durch R-Link und Flexbus bereitgestellten IO-, Cache- und Mem-Protokollen bereitstellt. In vorteilhafter Weise senkt das Aktivieren eines IAL-Protokolls über PCIe für bestimmte Einrichtungsklassen die Eingangsbelastung für das Ökosystem von Einrichtungen, die physikalische PCIe-Verknüpfungen verwenden. Es ermöglicht die Förderung vorhandener PCIe-Infrastruktur, umfassend die Verwendung von serienmäßig hergestellten Komponenten wie Switches, Root-Ports und Endpunkten. Dies ermöglicht es auch, eine Einrichtung mit angeschlossenem Speicher leichter plattformübergreifend zu verwenden, wobei das traditionelle private Speichermodell oder das kohärente systemadressierbare Speichermodell entsprechend der Eignung für die Installation eingesetzt wird.
  • Zur Unterstützung von Einrichtungen der Klassen 3 und 4 entsprechend der vorstehenden Beschreibung (softwareunterstützter Speicher und autonomer Gerätespeicher) können die IAL-Komponenten wie folgt abgebildet werden:
  • IOSF oder IAL.io können Standard-PCIe verwenden. Dies kann für Geräteentdeckung, Auflistung, Konfiguration, Fehlermeldung, Interrupts und DMA-artige Datenübertragungen verwendet werden.
  • SMI oder IAL.mem können SMI-Tunneling über PCIe verwenden. Details zum SMI-Tunneling über PCIe sind im Folgenden beschrieben, wobei auch das in 9, 10 und 11 weiter unten beschriebene Tunneln umfasst ist.
  • IDI oder IAL.cache werden bei bestimmten Ausführungsformen dieser Spezifikation nicht unterstützt. IDI ermöglicht der Einrichtung die Ausgabe von kohärenten Lese- und Schreib-Anforderungen an einen Host-Speicher. Obwohl möglicherweise IAL.cache nicht unterstützt wird, können die hier offenbarten Verfahren verwendet werden, um Bias-basierte Kohärenz für mit Einrichtungen verbundenen Speicher zu aktivieren.
  • Zum erzielen dieses Resultat kann die Beschleunigereinrichtung eine ihrer standardmäßigen PCIe-Speicher-Basisadressregister-(BAR)-Regionen in der Größe ihres angeschlossenen Speichers verwenden. Hierzu kann die Einrichtung eine vorgesehene anbieterspezifische erweiterte Fähigkeit (DVSEC) ähnlich dem Standard-IAL verwenden, um auf die BAR-Region zu zeigen, die auf den kohärenten Adressraum abgebildet werden soll. Ferner kann die DVSEC zusätzliche Information erklären wie Speichertyp, Latenz und sonstige Attribute, die hilfreich sind, damit das Basis-Eingabe-/Ausgabe-System (BIOS) diesen Speicher auf Systemadress-Decoder in der kohärenten Region abbilden kann. Das BIOS kann anschließend die Speicherbasis programmieren und die physikalische Host-Adresse in der Einrichtung begrenzen.
  • Dies ermöglicht es dem Host, angeschlossenen Gerätespeicher unter Verwendung von standardmäßigem Speicher-Lese-(MRd)-Opcode zu lesen.
  • Für Schreibvorgänge kann jedoch „Non-Posted“-Semantik erforderlich sein, da beim Abschluss möglicherweise der Zugriff auf Metadaten benötigt wird. Zum Erhalten von NP MWr an PCIe können die folgenden reservierten Codierungen verwendet werden:
    • • Fmt[2:0] - 011b
    • • Type[4:0] - 11011b
  • Die Verwendung eines neuartigen „Non-Posted“-Speicherschreibvorgangs (NP MWr) an PCIe weist den zusätzlichen Nutzen auf, dass AiA-ENQ-Anweisungen für effiziente Arbeitsaufträge an die Einrichtung ermöglicht werden.
  • Zum Erzielen der besten Dienstqualität können Ausführungsformen der vorliegenden Spezifikation drei unterschiedliche virtuelle Kanäle (VC0, VC1 und VC2) implementieren, um unterschiedliche Verkehrstypen wie folgt zu trennen:
    • • VC0 → gesamter „Memory-Mapped Input/Output“ (MMIO)- und Konfigurations-(CFG)-Verkehr sowohl upstream als auch downstream.
    • • VC1 → IAL.mem-Schreibvorgänge (vom Host zur Einrichtung)
    • • VC2 → IAL.mem-Lesevorgänge (vom Host zur Einrichtung)
  • Man beachte, dass, da IAL.cache oder IDI nicht unterstützt werden, Ausführungen dieser Spezifikation es der Beschleunigereinrichtung möglicherweise nicht erlauben, kohärente Lese- oder Schreibvorgänge zum Host-Speicher auszugeben.
  • Ausführungsformen dieser Spezifikation können auch die Fähigkeit aufweisen, Cache-Zeilen aus dem Host zu entleeren (erforderlich für Bias-Umkehr vom Host zur Einrichtung). Dies kann unter Verwendung eines nicht zuordnenden Schreibvorgangs mit Nulllänge von der Einrichtung auf dem PCIe an einer Cache-Zeilen-Granularität erfolgen. Nicht zuordnende Semantik ist beschrieben unter Verwendung von Transaktions- und Verarbeitungshinweisen an den Transaktionsschicht-Paketen (TLPs).
    • • TH = 1, PH = 01
  • Dies ermöglicht dem Host das Ungültigmachen einer gegebenen Zeile. Die Einrichtung kann im Anschluss an die Bias-Umkehr einer Seite einen Lesevorgang ausgeben, um sicherzustellen, dass alle Zeilen entleert worden sind. Die Einrichtung kann auch einen inhaltsadressierbaren Speicher (CAM) implementieren, um sicherzustellen, dass während der Ausführung einer Flip-Umkehr keine neuen Anforderungen an die Zeile vom Host empfangen werden.
  • Ein System und Verfahren für kohärente Speichereinrichtungen über PCIe wird im Folgenden mit näherem Bezug auf die beigefügten FIGUREN beschrieben. Man beachte, dass im Verlauf aller Figuren bestimmte Kennziffern wiederholt werden können, um anzugeben, dass eine bestimmte Einrichtung oder ein Block in den FIGUREN vollständig oder im Wesentlichen konsistent ist. Dies soll jedoch keine besondere Beziehung zwischen den verschiedenen offenbarten Ausführungsformen implizieren. Bei bestimmten Beispielen kann eine Gattung von Elementen durch eine bestimmte Bezugskennziffer („Widget 10“) bezeichnet werden, während individuelle Spezies oder Beispiele der Gattung durch eine mit - getrennte Kennziffer („erstes spezifisches Widget 10-1“ und „zweites spezifisches Widget 10-2“) bezeichnet werden können.
  • 1 veranschaulicht ein Beispiel einer Betriebsumgebung 100, die für verschiedene Ausführungsformen gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation repräsentativ sein kann. Die in 1 dargestellte Betriebsumgebung 100 kann eine Vorrichtung 105, aufweisend einen Prozessor 110 wie eine zentrale Verarbeitungseinheit (CPU), aufweisen. Der Prozessor 110 kann ein Rechenelement beliebigen Typs aufweisen, wie z. B., aber ohne diesbezügliche Einschränkung, einen Mikroprozessor, eine Mikrosteuerung, einen Mikroprozessor eines Rechners mit komplexem Befehlssatz (CISC), einen Mikroprozessor mit reduziertem Befehlssatz (RISC), einen Mikroprozessor mit sehr langen Anweisungswörtern (VLIW), einen virtuellen Prozessor wie eine virtuelle zentrale Verarbeitungseinheit (VCPU) oder einen beliebigen anderen Typ eines Prozessors oder Verarbeitungsschaltkreises. Bei einigen Ausführungsformen kann der Prozessor 110 ein Prozessor oder mehrere Prozessoren der Familie von Intel®-Prozessoren sein, die von der Intel® Corporation aus Santa Clara, US-Bundesstaat Kalifornien, erhältlich sind. Obwohl in 1 nur ein Prozessor 110 dargestellt ist, kann eine Vorrichtung eine Mehrzahl von Prozessoren 110 aufweisen. Der Prozessor 110 kann ein Verarbeitungselement 112, z. B. einen Verarbeitungskern, aufweisen. Bei einigen Ausführungsformen kann der Prozessor 110 einen Mehrkern-Prozessor, umfassend eine Mehrzahl von Verarbeitungskernen, aufweisen. Bei verschiedenen Ausführungsformen kann der Prozessor 110 Prozessorspeicher 114 aufweisen, der beispielsweise einen Prozessor-Cache oder lokalen Cachespeicher aufweist, um effizienten Zugriff auf vom Prozessor 110 verarbeitete Daten zu ermöglichen. Bei einigen Ausführungsformen kann der Prozessorspeicher 114 Direktzugriffsspeicher (RAM) aufweisen; der Prozessorspeicher 114 kann jedoch unter Verwendung anderer Speichertypen wie dynamischem RAM (DRAM), synchronem DRAM (SDRAM), Kombinationen daraus und/oder dergleichen implementiert sein.
  • Entsprechend der Darstellung in 1 kann der Prozessor 110 mit einer Logikeinrichtung 120 über eine Verknüpfung 115 kommunikativ gekoppelt sein. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung 120 eine Hardwareeinrichtung aufweisen. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung 120 einen Beschleuniger aufweisen. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung 120 einen Hardware-Beschleuniger aufweisen. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung 120 einen in Hardware, Software oder einer Kombination daraus implementierten Beschleuniger aufweisen.
  • Obwohl ein Beschleuniger in dieser detaillierten Beschreibung als beispielhafte Logikeinrichtung 120 verwendet werden kann, sind Ausführungsformen nicht diesbezüglich eingeschränkt, da die Logikeinrichtung 120 beliebige Typen von Einrichtungen, Prozessoren (beispielsweise eine Grafik-Verarbeitungseinheit (GPU)), logischen Einheiten, Schaltungen, integrierten Schaltkreisen, anwendungsspezifischen integrierten Schaltkreisen (ASIC), vor Ort programmierbaren Gatter-Anordnungen (FPGA), Speichereinheiten, Recheneinheiten und/oder dergleichen aufweisen, die zum Betrieb gemäß einigen Ausführungsformen geeignet sind. Bei einer Ausführungsform, bei der die Logikeinrichtung 120 einen Beschleuniger aufweist, kann die Logikeinrichtung 120 dafür ausgelegt sein, eine oder mehrere Funktionen für den Prozessor 110 durchzuführen. Beispielsweise kann die Logikeinrichtung 120 einen Beschleuniger aufweisen, der betriebsfähig ist zum Durchführen von Grafikfunktionen (beispielsweise eine GPU oder einen Grafikbeschleuniger), Gleitkomma-Vorgängen, schnelle Fourier-Transformations-(FFT)-Operationen und/oder dergleichen. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung 120 einen Beschleuniger aufweisen, ausgelegt zum Betrieb unter Verwendung verschiedener Hardwarekomponenten, Standards, Protokolle und/oder dergleichen. Nicht einschränkende Beispiele für Typen von Beschleuniger und/oder Beschleuniger Technologie, die zur Verwendung durch die Logikeinrichtung geeignet sind, können OpenCAPI™, CCIX, GenZ, NVIDIA® NVLink™, Beschleuniger-Schnittstellenarchitektur (AiA), „Cache Coherent Agent“ (CCA), global abgebildeten und kohärenten Gerätespeicher (GCM), Intel® Beschleuniger für grafische Medien (GMA), Intel® Virtualisierungstechnologie für gelenkte Eingabe/Ausgabe (IO) (z. B. VT-d, VT-x und/oder dergleichen), geteilten virtuellen Speicher (SVM) und/oder dergleichen umfassen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Die Logikeinrichtung 120 kann ein Verarbeitungselement 122, z. B. einen Verarbeitungskern, aufweisen. Bei einigen Ausführungsformen kann die Logikeinrichtung 120 eine Mehrzahl von Verarbeitungselementen 122 aufweisen. Die Logikeinrichtung 120 kann Logik-Gerätespeicher 124 aufweisen, beispielsweise ausgelegt als lokal angeschlossener Speicher für die Logikeinrichtung 120. Bei einigen Ausführungsformen kann der Logik-Gerätespeicher 124 lokalen Speicher, Cache-Speicher und/oder dergleichen aufweisen. Bei verschiedenen Ausführungsformen kann der Logik-Gerätespeicher 124 Direktzugriffsspeicher (RAM) aufweisen; der Logik-Gerätespeicher 124 kann jedoch unter Verwendung anderer Speichertypen wie dynamischem RAM (DRAM), synchronem DRAM (SDRAM), Kombinationen daraus und/oder dergleichen implementiert sein. Bei einigen Ausführungsformen kann mindestens ein Teil des Logik-Gerätespeichers 124 für den Prozessor 110 sichtbar oder zugänglich sein. Bei einigen Ausführungsformen kann mindestens ein Teil des Logik-Gerätespeichers 124 für den Prozessor 110 als Systemspeicher sichtbar oder zugänglich sein (zum Beispiel als zugänglicher Teil des Systemspeichers 130).
  • Bei verschiedenen Ausführungsformen kann der Prozessor 110 einen Treiber 118 ausführen. Bei einigen Ausführungsformen kann der Treiber 118 betriebsfähig sein, um verschiedene funktionelle Aspekte der Logikeinrichtung 120 zu steuern und/oder die Kommunikation mit einer oder mehreren Anwendungen zu verwalten, die die Logikeinrichtung 120 und/oder durch die Logikeinrichtung 120 erzeugte Rechenergebnisse verwenden. Bei verschiedenen Ausführungsformen kann die Logikeinrichtung 120 Bias-Information 126 aufweisen und/oder darauf zugreifen. Bei einigen Ausführungsformen kann die Bias-Information 126 mit einem Kohärenz-Bias-Prozess assoziierte Information aufweisen. Beispielsweise kann die Bias-Information 126 Information aufweisen, die angibt, welcher Cache-Kohärenz-Prozess für die Logikeinrichtung 120 und/oder einen bestimmten Prozess, eine Anwendung, einen Strang, einen Speichervorgang und/oder dergleichen aktiv sein kann. Bei einigen Ausführungsformen kann die Bias-Information 126 durch den Treiber 118 gelesen, geschrieben oder sonst wie verwaltet werden.
  • Bei einigen Ausführungsformen kann die Verknüpfung 115 eine Buskomponente aufweisen, wie z. B. einen Systembus. Bei verschiedenen Ausführungsformen kann die Verknüpfung 115 eine Kommunikationsverknüpfung aufweisen, betriebsfähig zur Unterstützung mehrerer Kommunikationsprotokolle (zum Beispiel einen Multi-Protokoll-Link). Unterstützte Kommunikationsprotokolle können standardmäßige Lade-/Speicher-IO-Protokolle zur Komponentenkommunikation aufweisen, umfassend serielle Verknüpfungsprotokolle, Geräte-Caching-Protokolle, Speicherprotokolle, Speichersemantik-Protokolle, Verzeichnis-Bit-Support-Protokolle, Netzwerkprotokolle, Kohärenzprotokolle, Beschleunigerprotokolle, Datenspeicherprotokolle, Punkt-zu-Punkt-Protokolle, strukturbasierte Protokolle, paketinterne (oder Auf-dem-Chip)-Protokolle, strukturbasierte paketinterne Protokolle und/oder dergleichen. Nicht einschränkende Beispiele unterstützter Kommunikationsprotokolle können das Peripheriekomponenten-Verbindungs-(PCI)-Protokoll, „Peripheral Component Interconnect Express“ (PCIe- oder PCI-E)-Protokoll, „Universal Serial Bus“ (USB)-Protokoll, „Serial Peripheral Interface“ (SPI)-Protokoll, „Serial AT Attachment“ (SATA)-Protokoll, Intel® „QuickPath Interconnect“ (QPI)-Protokoll, Intel® „UltraPath Interconnect“ (UPI)-Protokoll, Intel® „Optimized Accelerator Protocol“ (OAP)-Protokoll, „Intel® Accelerator Link“ (IAL)-Link, „Intra-Device Interconnect“ (IDI)-Protokoll (oder IAL.cache), „Intel® On-Chip Scalable Fabric“ (IOSF)-Protokoll (oder IAL.io), „Scalable Memory Interconnect“ (SMI)-Protokoll (oder IAL.mem), „SMI 3rd Generation“ (SMI3) und/oder dergleichen umfassen. Bei einigen Ausführungsformen kann die Verknüpfung 115 ein geräteinternes Protokoll (zum Beispiel IDI) und ein Speicherverbindungsprotokoll (zum Beispiel SMI3) unterstützen. Bei verschiedenen Ausführungsformen kann die Verknüpfung 115 ein geräteinternes Protokoll (zum Beispiel IDI), ein Speicherverbindungsprotokoll (zum Beispiel SMI3) und ein strukturbasiertes Protokoll (zum Beispiel IOSF) unterstützen.
  • Bei einigen Ausführungsformen kann die Vorrichtung 105 Systemspeicher 130 aufweisen. Bei verschiedenen Ausführungsformen kann der Systemspeicher 130 Hauptspeicher für die Vorrichtung 105 aufweisen. Der Systemspeicher 130 kann Daten und Sequenzen von Anweisungen, die durch den Prozessor 110 oder durch eine beliebige andere Einrichtung oder Komponente der Vorrichtung 105 ausgeführt werden, speichern. Bei einigen Ausführungsformen kann der Systemspeicher 130 RAM aufweisen; der Systemspeicher 130 kann jedoch unter Verwendung anderer Speichertypen wie dynamischem DRAM, SDRAM, Kombinationen daraus und/oder dergleichen implementiert sein. Bei verschiedenen Ausführungsformen kann der Systemspeicher 130 eine Softwareanwendung 140 speichern (zum Beispiel „Host-Software“), die durch den Prozessor 110 ausgeführt werden kann. Bei einigen Ausführungsformen kann die Softwareanwendung 140 die Logikeinrichtung 120 verwenden oder sonst wie damit assoziiert sein. Beispielsweise kann die Softwareanwendung 140 dafür ausgelegt sein, durch die Logikeinrichtung 120 erzeugte Rechenergebnisse zu verwenden.
  • Die Vorrichtung kann Kohärenz-Logik 150 aufweisen, um Cache-Kohärenz-Prozesse bereitzustellen. Bei verschiedenen Ausführungsformen kann die Kohärenz-Logik 150 in Hardware, Software oder einer Kombination daraus implementiert sein. Bei einigen Ausführungsformen kann mindestens ein Teil der Kohärenz-Logik 150 ganz oder teilweise im Prozessor 110 angeordnet oder sonst wie damit assoziiert sein. Beispielsweise kann bei einigen Ausführungsformen Kohärenz-Logik 150 für ein Cache-Kohärenz-Element oder einen Prozess 152 innerhalb des Prozessors 110 angeordnet sein. Bei einigen Ausführungsformen kann der Prozessor 110 eine Kohärenzsteuerung 116 zum Durchführen verschiedener Cache-Kohärenz-Prozesse aufweisen, wie z. B. eines Cache-Kohärenz-Prozesses 152. Bei einigen Ausführungsformen kann der Cache-Kohärenz-Prozess 152 eine oder mehrere standardmäßige, durch den Prozessor 110 ausgeführte Cache-Kohärenz-Techniken, Funktionen, Verfahren, Prozesse, Elemente (umfassend Hardware- oder Softwareelemente), Protokolle und/oder dergleichen aufweisen. Im Allgemeinen kann der Cache-Kohärenz-Prozess 152 ein Standardprotokoll zum Verwalten der Caches eines Systems aufweisen, sodass keine Daten verloren gehen oder überschrieben werden, bevor die Daten von einem Cache zu einem Zielspeicher übertragen worden sind. Nicht einschränkende Beispiele von durch den Cache-Kohärenz-Prozess 152 ausgeführte oder unterstützte Standardprotokolle können Snooping-basierte (oder Snoopy-)-Protokolle, Protokolle zur Schreibvorgang-Ungültigmachung, Protokolle zur Schreibvorgangsaktualisierung, verzeichnisbasierte Protokolle, hardwarebasierte Protokolle (zum Beispiel ein „Modified Exclusive Shared Invalid“ (MESI)-Protokoll), private speicherbasierte Protokolle und/oder dergleichen umfassen. Bei einigen Ausführungsformen kann der Cache-Kohärenz-Prozess 152 ein oder mehrere standardmäßige Cache-KohärenzProtokolle aufweisen, um Cache-Kohärenz für eine Logikeinrichtung 120, die einen angeschlossenen Logik-Gerätespeicher 124 aufweist, beizubehalten. Bei einigen Ausführungsformen kann der Cache-Kohärenz-Prozess 150 in Hardware, Software oder einer Kombination daraus implementiert sein.
  • Bei einigen Ausführungsformen kann Kohärenz-Logik 150 Kohärenz-Bias-Prozesse wie einen Host-Bias-Prozess oder ein Element 154 und einen Geräte-Bias-Prozess oder ein Element 156 aufweisen. Im Allgemeinen können Kohärenz-Bias-Prozesse arbeiten, um Cache-Kohärenz in Bezug auf Anforderungen, Datenflüsse und/oder andere Speicheroperationen mit Bezug zum Logik-Gerätespeicher 122 aufrechtzuerhalten. Bei einigen Ausführungsformen kann mindestens ein Teil von Kohärenz-Logik wie der Host-Bias-Prozess 154, der Geräte-Bias-Prozess 156 und/oder eine Bias-Auswahlkomponente 158 außerhalb des Prozessors 110 angeordnet sein, beispielsweise in einer oder in mehreren individuellen Kohärenz-Logik-Einheiten 150. Bei einigen Ausführungsformen können der Host-Bias-Prozess 154, der Geräte-Bias-Prozess 156 und/oder die Bias-Auswahlkomponente 158 in Hardware, Software oder einer Kombination daraus implementiert sein.
  • Bei einigen Ausführungsformen kann der Host-Bias-Prozess 154 Techniken, Prozesse, Datenflüsse, Daten, Algorithmen und/oder dergleichen umfassen, die Anforderungen für den Logik-Gerätespeicher 124 durch den Cache-Kohärenz-Prozess 152 des Prozessors 110 abarbeiten, umfassend Anforderungen von der Logikeinrichtung 120. Bei verschiedenen Ausführungsformen kann der Geräte-Bias-Prozess 156 Techniken, Prozesse, Datenflüsse, Daten, Algorithmen und/oder dergleichen umfassen, die der Logikeinrichtung 120 direkten Zugriff auf den Logik-Gerätespeicher 124 ermöglichen, beispielsweise ohne Verwendung des Cache-Kohärenz-Prozesses 152. Bei einigen Ausführungsformen kann der Bias-Auswahlprozess 158 Techniken, Prozesse, Datenflüsse, Daten, Algorithmen und/oder dergleichen zum Aktivieren des Host-Bias-Prozesses 154 oder des Geräte-Bias-Prozesses 156 als aktiven Bias-Prozess für Anforderungen in Zusammenhang mit dem Logik-Gerätespeicher umfassen. Bei verschiedenen Ausführungsformen kann der aktive Bias-Prozess auf Bias-Information 126 basieren, die Daten, Datenstrukturen und/oder Prozesse umfassen kann, die durch den Bias-Auswahlprozess zum Festlegen des aktiven Bias-Prozesses und/oder zum Einstellen des aktiven Bias-Prozesses verwendet werden können.
  • 2a veranschaulicht ein Beispiel einer Betriebsumgebung 200A vollständiger Kohärenz. Die in 2a dargestellte Betriebsumgebung 200A kann eine Vorrichtung 202 umfassen, aufweisend eine CPU 210, die eine Mehrzahl von Verarbeitungskernen 212a-n umfasst. Entsprechend der Darstellung in 2a kann die CPU verschiedene Protokollagenten aufweisen, wie einen Caching-Agenten 214, einen Home-Agenten 216, einen Speicheragenten 218 und/oder dergleichen. Generell kann der Caching-Agent 214 arbeiten, um Transaktionen in kohärentem Speicher zu initiieren und Kopien in seiner eigenen Cache-Struktur einzubehalten. Der Caching-Agent 214 kann gemäß in einem mit der CPU assoziierten Cache-Kohärenz-Protokoll definierten Verhaltensweisen durch die Nachrichten definiert sein, die er weiterleiten und auf die er zugreifen kann. Der Caching-Agent 214 kann auch Kopien der kohärenten Speicherinhalte zu anderen Caching-Agenten (beispielsweise dem Beschleuniger-Caching-Agenten 224) bereitstellen. Der Home-Agent 216 kann für die Protokollseite von Speicher-Interaktionen für die CPU 210 zuständig sein, umfassend kohärente und nicht kohärente Home-Agenten-Protokolle. Beispielsweise kann der Home-Agent 216 Speicher-Lese-/Schreib-Vorgänge anweisen. Der Home-Agent 216 kann ausgelegt sein zum Bedienen kohärenter Transaktionen, umfassend Handshaking mit Caching-Agenten, soweit erforderlich. Der Raum-Agent 216 kann arbeiten, um einen Teil des kohärenten Speichers der CPU 210 zu überwachen, wobei beispielsweise die Kohärenz für einen gegebenen Adressraum aufrechterhalten wird. Der Home-Agent 216 kann zuständig sein für die Verwaltung von Konflikten, die unter den unterschiedlichen Caching-Agenten aufkommen können. Beispielsweise kann der Home-Agent 216 die geeigneten Daten und Besitzreaktionen je nach Bedarf durch einen gegebenen Transaktionsablauf bereitstellen. Der Speicheragent 218 kann arbeiten, um den Zugriff auf Speicher zu verwalten. Beispielsweise kann der Speicheragent 218 Speicheroperationen (zum Beispiel Lade-/Speicheroperationen) und Funktionen (zum Beispiel Tauschvorgänge und/oder dergleichen) für die CPU 210 ermöglichen.
  • Entsprechend der Darstellung in 2a kann die Vorrichtung 202 einen mit der CPU 210 wirkverbundenen Beschleuniger 220 aufweisen. Der Beschleuniger 220 kann eine Beschleuniger-Engine 222 aufweisen, betreibbar zum Durchführen von Funktionen (beispielsweise Berechnungen und/oder dergleichen), die von der CPU 210 ausgelagert wurden. Der Beschleuniger 220 kann einen Beschleuniger-Caching-Agenten 224 und einen Speicheragenten 228 aufweisen.
  • Der Beschleuniger 220 und die CPU 210 können entsprechend verschiedenen konventionellen Hardware- und/oder Speicherzugriffstechniken ausgelegt sein und/oder diese aufweisen. Entsprechend der Darstellung in 2a müssen beispielsweise alle Speicherzugriffe umfassend auch die durch den Beschleuniger 220 initiierten, den Pfad 230 durchlaufen. Der Pfad 230 kann eine nicht kohärente Verknüpfung wie eine PCIe-Verknüpfung aufweisen. Bei der Konfiguration von Vorrichtung 202 kann die Beschleuniger-Engine 222 fähig sein, auf den Beschleuniger-Caching-Agenten 224 und den Speicheragenten 228, aber nicht auf den Caching-Agenten 214, den Home-Agenten 216 oder den Speicheragenten 218 direkt zuzugreifen. In ähnlicher Weise wären die Kerne 212a-n nicht in der Lage, auf den Speicheragenten 228 direkt zuzugreifen. Dementsprechend wäre der Speicher hinter dem Speicheragenten 228 nicht Teil der von den Kernen 212a-n erkannten Systemadress-Map. Da die Kerne 212a-n nicht auf einen gemeinsamen Speicheragenten zugreifen können, ist Datenaustausch nur über Kopien möglich. Bei bestimmten Implementierungen kann ein Treiber verwendet werden, um das Hin- und Her-Kopieren zwischen den Speicheragenten 218 und 228 zu ermöglichen. Beispielsweise können Treiber ein Laufzeitelement aufweisen, dass eine gemeinsam genutzte Speicherabstraktion einrichtet, die alle Kopien vor dem Programmierer verbirgt. Dagegen können entsprechend der folgenden detaillierten Beschreibung einige Ausführungsformen Konfigurationen bereitstellen, in denen Anforderungen von einer Beschleuniger-Engine gezwungen werden können, eine Verknüpfung zwischen dem Beschleuniger und der CPU zu überqueren, wenn die Beschleuniger-Engine auf einen Beschleunigerspeicher zugreifen will, wie z. B. über einen Beschleunigeragenten 228.
  • 2b veranschaulicht ein Beispiel einer nicht kohärenten Betriebsumgebung 200B. Die in 2b dargestellte Betriebsumgebung 200B kann einen Beschleuniger 220 aufweisen, der einen Beschleuniger-Home-Agenten 226 aufweist. Die CPU 210 und der Beschleuniger 220 können über einen nicht kohärenten Pfad 232 wie einen UPI-Pfad oder einen CCIX-Pfad wirkverbunden sein.
  • Für den Betrieb der Vorrichtung 204 können die Beschleuniger-Engine 222 und die Kerne 212a-n auf beide Speicheragenten 228 und 218 zugreifen. Die Kerne 212a-n können auf den Speicher 218 zugreifen, ohne die Verknüpfung 232 zu überqueren, und der Beschleunigeragent 222 kann auf den Speicher 228 zugreifen, ohne die Verknüpfung 232 zu überqueren. Der Preis für diese lokalen Zugriffe von 222 auf 228 ist, dass der Home-Agent 226 so eingerichtet werden muss, dass er die Kohärenz für alle Zugriffe von den Kernen 212a-n auf den Speicher 228 nachverfolgen kann. Dieses Erfordernis führt zu Komplexität und hoher Ressourcenverwendung, wenn die Vorrichtung 204 mehrere CPU-Einrichtungen 210 aufweist, die alle über andere Instanzen der Verknüpfung 232 verbunden sind. Der Home-Agent 226 muss in der Lage sein, die Kohärenz für alle Kerne 212a-n an allen Instanzen der CPU 210 nachzuverfolgen. Dies kann in Anbetracht von Performanz, Fläche und Leistung insbesondere bei großen Konfigurationen vergleichsweise aufwendig werden. Insbesondere beeinflusst dies die Performanzeffizienz von Zugriffen zwischen Beschleuniger 222 und Speicher 228 negativ zugunsten von Zugriffen von den CPUs 210, auch wenn die Zugriffe von den CPUs 210 voraussichtlich relativ selten sind.
  • 2c gibt ein Beispiel einer Kohärenz-Engine ohne Bias-Betriebsumgebung 200C wieder. Entsprechend der Darstellung in 2 kann die Vorrichtung 206 einen mit der CPU 210 über kohärente Verknüpfungen 236 und 238 wirkverbundenen Beschleuniger 220 aufweisen. Der Beschleuniger 220 kann eine Beschleuniger-Engine 222 aufweisen, betreibbar zum Durchführen von Funktionen (beispielsweise Berechnungen und/oder dergleichen), die von der CPU 210 ausgelagert wurden. Der Beschleuniger 220 kann einen Beschleuniger-Caching-Agenten 224, einen Beschleuniger-Home-Agenten 226 und einen Speicheragenten 228 aufweisen.
  • Bei der Konfiguration der Vorrichtung 206 können der Beschleuniger 220 und die CPU 210 entsprechend verschiedenen konventionellen Hardware- und/oder Speicherzugriffstechniken wie z. B. CCIX, GCM, standardmäßigen Kohärenzprotokollen (beispielsweise symmetrischen Kohärenzprotokollen) ausgelegt sein und/oder diese aufweisen. Entsprechend der Darstellung in 2 müssen beispielsweise alle Speicherzugriffe, umfassend auch die durch den Beschleuniger 220 initiierten, den Pfad 230 durchlaufen. Auf diese Weise muss der Beschleuniger 220 die CPU 220 durchlaufen (und daher die mit der CPU assoziierten Kohärenzprotokolle), um auf den Beschleunigerspeicher zuzugreifen (beispielsweise durch den Speicheragenten 228). Dementsprechend stellt die Vorrichtung möglicherweise nicht die Fähigkeit zum Zugriff auf bestimmten Speicher bereit, wie auf an den Beschleuniger angeschlossenen Speicher, der mit dem Beschleuniger 220 assoziiert ist, als Teil des Systemspeichers (beispielsweise als Teil einer Systemadress-Map), wodurch es Host-Software ermöglicht werden kann, ob der Anden einzurichten und auf Rechenergebnisse des Beschleunigers 220 ohne den Overhead beispielsweise von IO-Direktzugriffsspeicher-(DMA)-Datenkopien zu zugreifen. Derartige Datenkopien können Treiberaufrufe, Interrupts und MMIO-Zugriff erfordern, die alle im Vergleich zu Speicherzugriffen ineffizient und komplex sind. Die Unmöglichkeit des Zugriffs auf an den Beschleuniger angebrachten Speicher ohne Cache-Kohärenz-Overhead entsprechend der Darstellung in 2c kann die Ausführungszeit einer zum Beschleuniger 220 ausgelagerten Berechnung beeinträchtigen. Bei einem Prozess, der Streaming von Speicherschreibverkehr im großen Umfang einbezieht, kann der Cache-Kohärenz-Overhead die vom Beschleuniger 220 erkannte effektive Schreibbandbreite halbieren.
  • Die Effizienz von Operanden Einrichtung, Zugriff auf Resultate und Beschleunigerberechnung spielt eine Rolle bei der Bestimmung von Wirksamkeit und Nutzen der Auslagerung von Arbeitsvorgängen vom CPU 210 zum Beschleuniger 220. Falls der Preis für die Auslagerung von Arbeitsvorgängen zu hoch ist, weist die Auslagerung möglicherweise keinen Nutzen auf, oder sie kann auf nur sehr umfangreiche Vorgänge beschränkt werden. Dementsprechend haben verschiedene Entwickler Beschleuniger eingerichtet, die versuchen, die Effizienz der Verwendung eines Beschleunigers zu erhöhen, wie z. B. dem Beschleuniger 220, mit begrenzter Effizienz im Vergleich zu Technologie, die gemäß einigen Ausführungsformen ausgelegt ist. Beispielsweise können bestimmte konventionelle GPUs ohne Abbildung des mit dem Beschleuniger verbundenen Speichers als Teil der Systemadress-Map oder ohne Verwendung bestimmter virtueller Speicherkonfigurationen (zum Beispiel SVM) zum Zugriff auf den mit dem Beschleuniger verbundenen Speicher arbeiten. Dementsprechend ist bei derartigen Systemen mit dem Beschleuniger verbundener Speicher für Host-Systemsoftware nicht sichtbar. Stattdessen wird auf mit dem Beschleuniger verbundenen Speicher nur über eine Laufzeitschicht von durch den Gerätetreiber der GPUs bereitgestellten Software zugegriffen. Ein System aus Datenkopien und Seitentabellenmanipulationen wird verwendet, um das Erscheinungsbild eines Systems mit aktiviertem virtuellen Speicher (zum Beispiel SVM) zu erzeugen. Ein derartiges System ist ineffizient, insbesondere im Vergleich zu einigen Ausführungsformen, da unter anderem das System Speicherreplikation, Memory-Pinning, Speicherkopien und komplexe Software erfordert. Derartige Anforderungen führen zu großem Overhead an Speicherseiten-Übergangspunkten, die bei gemäß einigen Ausführungsformen ausgelegten Systemen nicht erforderlich sind. Bei bestimmten anderen Systemen werden konventionelle Hardware-Kohärenz-Mechanismen für Speicheroperationen eingesetzt, die mit dem Beschleuniger verbundenen Speicher zugeordnet sind, wodurch die Fähigkeit eines Beschleunigers eingeschränkt wird, auf den mit dem Beschleuniger verbundenen Speicher bei hoher Bandbreite zuzugreifen und/oder wodurch die Einsatzoptionen für einen gegebenen Beschleuniger eingegrenzt werden (beispielsweise können über eine paketinterne oder eine paketexterne Verknüpfung verbundene Beschleuniger nicht ohne wesentlichen Bandbreitenverlust unterstützt werden).
  • Generell können konventionelle Systeme ein oder zwei Verfahren zum Zugriff auf mit Beschleuniger verbundenen Speicher verwenden: ein Verfahren mit vollständiger Kohärenz (oder vollständiger Hardware-Kohärenz) oder ein privates Speichermodell oder -verfahren. Das Verfahren vollständiger Kohärenz erfordert, dass alle Speicherzugriffe, umfassend durch einen Beschleuniger bei mit Beschleuniger verbundenem Speicher angeforderten Zugriffen, das Kohärenzprotokoll der dazugehörigen CPU durchlaufen müssen. Auf diese Weise muss der Beschleuniger einen umständlichen Weg zum Zugriff auf mit Beschleuniger verbundenen Speicher nehmen, da die Anforderung mindestens zur dazugehörigen CPU durch das CPU-Kohärenzprotokoll und anschließend zum mit Beschleuniger verbundenen Speicher übertragen werden muss. Dementsprechend trägt das Verfahren vollständiger Kohärenz Overhead, wenn ein Beschleuniger auf seinen eigenen Speicher zugreift, was die Datenbandbreite wesentlich beeinträchtigen kann, die ein Beschleuniger aus seinem eigenen verbundenen Speicher extrahieren kann. Das private Speichermodell erfordert signifikanten Aufwand von Ressourcen und Zeit, wie z. B. Speicherreplikation, Seiten-Pinning-Anforderungen, Bandbreitenkosten für Seitenkopiedaten und/oder Seitenübergangskosten (beispielsweise Übersetzungspuffer-(TLB)-Eliminierungen, Seitentabellenmanipulation und/oder dergleichen). Dementsprechend können einige Ausführungsformen einen Kohärenz-Bias-Prozess bereitstellen, ausgelegt zum Bereitstellen einer Mehrzahl von Cache-Kohärenz-Prozessen, die unter anderem bessere Speicherverwendung und verbesserte Performanz für Systeme bereitstellen, die im Vergleich zu konventionellen Systemen mit Beschleuniger verbundenen Speicher aufweisen.
  • 3 veranschaulicht ein Beispiel einer Betriebsumgebung 300, die für verschiedene Ausführungsformen repräsentativ sein kann. Die in 3 dargestellte Betriebsumgebung 300 kann eine Vorrichtung 305 aufweisen, die wirkt, um einen Kohärenz-Bias-Prozess gemäß einigen Ausführungsformen bereitzustellen. Bei einigen Ausführungsformen kann die Vorrichtung 305 eine CPU 310 aufweisen, die eine Mehrzahl von Verarbeitungskernen 312a-n und verschiedene Protokollagenten wie einen Caching-Agenten 314, einen Home-Agenten 316, einen Speicheragenten 318 und/oder dergleichen umfasst. Die CPU 310 kann unter Verwendung verschiedener Verknüpfungen 335, 340 mit dem Beschleuniger 320 kommunikativ gekoppelt sein. Der Beschleuniger 320 kann eine Engine 312 und einen Speicheragenten 318 aufweisen, und er kann Bias-Information 338 aufweisen oder darauf zugreifen.
  • Entsprechend der Darstellung in 3 die Beschleuniger-Engine 322 über einen Kohärenz-Bypass 330 mit Bias direkt mit dem Speicheragenten 328 kommunikativ gekoppelt sein. Bei verschiedenen Ausführungsformen kann der Beschleuniger 320 ausgelegt sein zum Betrieb in einem Geräte-Bias-Prozess, wobei es der Kohärenz-Bypass 330 mit Bias den Speicheranforderungen der Beschleuniger-Engine 322 ermöglicht, mithilfe des Speicheragenten 328 auf mit Beschleuniger verbundenen Speicher (nicht dargestellt) des Beschleunigers direkt zu zugreifen. Bei verschiedenen Ausführungsformen kann der Beschleuniger 320 ausgelegt sein zum Betrieb in einem Host-Bias-Prozess, in dem Speicheroperationen, die mit Speicher assoziiert sind, der mit Beschleuniger verbunden ist, über Verknüpfungen 335, 340 unter Verwendung von Cache-Kohärenz-Protokollen der CPU beispielsweise über den Caching-Agenten 314 und den Home-Agenten 316 verarbeitet werden können. Dementsprechend kann der Beschleuniger 320 der Vorrichtung 305 die Kohärenzprotokolle der CPU 310 gegebenenfalls fördern (zum Beispiel, wenn eine Nicht-Beschleuniger-Einheit mit Beschleuniger verbundenen Speicher anfordert), während dem Beschleuniger 320 direkter Zugriff auf mit Beschleuniger verbundenen Speicher über einen Kohärenz-Bypass 330 mit Bias ermöglicht wird.
  • Bei einigen Ausführungsformen kann Kohärenz-Bias (zum Beispiel unabhängig davon, ob Geräte-Bias oder Host-Bias aktiv ist) in Bias-Information 338 gespeichert werden. Bei verschiedenen Ausführungsformen kann Bias-Information 338 verschiedene Datenstrukturen aufweisen und/oder darin gespeichert sein, wie z. B. in einer Datentabelle (beispielsweise einer „Bias-Tabelle“). Bei verschiedenen Ausführungsformen kann die Bias-Information 338 einen Bias-Indikator mit einem Wert aufweisen, der den aktiven Bias angibt (beispielsweise 0=Host-Bias, 1=Geräte-Bias). Bei einigen Ausführungsformen können die Bias-Information 338 und/oder der Bias-Indikator auf verschiedenen Ebenen von Granularität vorliegen, wie z. B. Speicherregionen, Seitentabellen, Adressbereichen und/oder dergleichen. Beispielsweise kann die Bias-Information 338 angeben, dass bestimmte Speicherseiten für Geräte-Bias eingestellt sind, während andere Speicherseiten für Host-Bias eingestellt sind. Bei einigen Ausführungsformen kann die Bias-Information 338 eine Bias-Tabelle aufweisen, ausgelegt zum Betrieb als kostengünstiger, skalierbarer Snoop-Filter.
  • 4 veranschaulicht ein Beispiel einer Betriebsumgebung 400 die für verschiedene Ausführungsformen repräsentativ sein kann. Die in 4 dargestellte Betriebsumgebung 400 kann eine Vorrichtung 405 aufweisen, die wirkt, um einen Kohärenz-Bias-Prozess gemäß einigen Ausführungsformen bereitzustellen. Die Vorrichtung 405 kann einen Beschleuniger 410 aufweisen, der über eine Verknüpfung (oder Multi-Protokoll-Verknüpfung) 489 mit einem Host-Prozessor 445 kommunikativ gekoppelt ist. Der Beschleuniger 410 und der Host-Prozessor 445 können über eine Verknüpfung unter Verwendung von Verbindungsstrukturen 415 bzw. 450 kommunizieren, die den Austausch von Daten und Nachrichten dazwischen ermöglichen. Bei einigen Ausführungsformen kann die Verknüpfung 489 eine Multi-Protokoll-Verknüpfung aufweisen, die zur Unterstützung mehrerer Protokolle betreibbar ist. Beispielsweise können die Verknüpfung 489 und Verbindungsstrukturen 415 und 450 verschiedene Kommunikationsprotokolle unterstützen, umfassend ohne diesbezügliche Einschränkung serielle Verknüpfungsprotokolle, Geräte-Caching-Protokolle, Speicherprotokolle, Speichersemantik-Protokolle, Verzeichnis-Bit-Support-Protokolle, Netzwerkprotokolle, Kohärenzprotokolle, Beschleunigerprotokolle, Datenspeicherprotokolle, Punkt-zu-Punkt-Protokolle, strukturbasierte Protokolle, paketinterne (oder Auf-dem-Chip)-Protokolle, strukturbasierte paketinterne Protokolle und/oder dergleichen. Nicht einschränkende Beispiele unterstützter Kommunikationsprotokolle können PCI, PCIe, USB, SPI, SATA, QPI, UPI, OAP, IAL, IDI, IOSF, SMI, SMI3 und/oder dergleichen aufweisen. Bei einigen Ausführungsformen können die Verknüpfung 489 und Verbindungsstrukturen 415 und 450 ein geräteinternes Protokoll (zum Beispiel IDI) und ein Speicherverbindungsprotokoll (zum Beispiel SMI3) unterstützen. Bei verschiedenen Ausführungsformen können die Verknüpfung 489 und Verbindungsstrukturen 415 und 450 ein geräteinternes Protokoll (zum Beispiel IDI), ein Speicherverbindungsprotokoll (zum Beispiel SMI3) und ein strukturbasiertes Protokoll (zum Beispiel IOSF) unterstützen.
  • Bei einigen Ausführungsformen kann der Beschleuniger 410 Buslogik 435 aufweisen, die einen Geräte-TLB 437 aufweist. Bei einigen Ausführungsformen kann die Buslogik 435 PCIe-Logik sein oder diese aufweisen. Bei verschiedenen Ausführungsformen kann Buslogik 435 über die Verbindung 480 unter Verwendung eines strukturbasierten Protokolls (zum Beispiel IOSF) und/oder eines „Peripheral Component Interconnect Express“ (PCIe- oder PCI-E-)-Protokolls kommunizieren. Bei verschiedenen Ausführungsformen kann Kommunikation über die Verbindung 480 für verschiedene Funktionen verwendet werden, umfassend, ohne diesbezügliche Einschränkung, Entdeckung, Registerzugriff (beispielsweise Register des Beschleunigers 410 (nicht dargestellt)), Konfiguration, Initialisierung, Interrupts, Direktspeicherzugriff und/oder Adressübersetzungsdienste (ATS).
  • Der Beschleuniger 410 kann einen Kern 420 umfassen, der einen Host-Speicher-Cache 422 und einen Beschleuniger-Speicher-Cache 424 aufweist. Der Kern 420 kann unter Verwendung der Verbindung 481, beispielsweise über ein geräteinternes Protokoll (zum Beispiel IDE) für verschiedene Funktionen wie kohärente Anforderungen und Speicherabläufe kommunizieren. Bei verschiedenen Ausführungsformen kann der Beschleuniger 410 Kohärenzlogik 425 aufweisen, die Bias-Modus-Information 427 aufweist oder darauf zugreift. Kohärenzlogik 425 kann unter Verwendung der Verbindung 482 beispielsweise über ein Speicherverbindungsprotokoll (zum Beispiel SMI3) kommunizieren. Bei einigen Ausführungsformen kann die Kommunikation über die Verbindung 482 für Speicherabläufe verwendet werden. Der Beschleuniger 410 kann mit dem Beschleunigerspeicher 430 (zum Beispiel als mit dem Beschleuniger verbundener Speicher), der Bias-Information 432 speichern kann, wirkverbunden sein.
  • Bei verschiedenen Ausführungsformen kann der Host-Prozessor 445 mit dem Host-Speicher 440 wirkverbunden sein, und er kann Kohärenzlogik (oder Kohärenz- und Cache-Logik) 455 umfassen, die einen „Last Level Cache“ (LLC) 457 aufweist. Kohärenzlogik 455 kann unter Verwendung verschiedener Verbindungen wie der Verbindungen 484 und 485 kommunizieren. Bei einigen Ausführungsformen können die Verbindungen 484 und 485 ein Speicherverbindungsprotokoll (zum Beispiel SMI3) und/oder ein geräteinternes Protokoll (zum Beispiel IDI) aufweisen. Bei einigen Ausführungsformen kann der LLC 457 eine Kombination von mindestens einem Teil des Host-Speichers 440 und des Beschleunigerspeichers 430 aufweisen.
  • Der Host-Prozessor 445 kann Buslogik 460 aufweisen, die eine Eingabe-Ausgabe-Speicherverwaltungseinheit (IOMMU) 462 aufweist. Bei einigen Ausführungsformen kann die Buslogik 460 PCIe-Logik sein oder diese aufweisen. Bei verschiedenen Ausführungsformen kann Buslogik 460 über die Verbindungen 486 und 488 unter Verwendung eines strukturbasierten Protokolls (zum Beispiel IOSF) und/oder eines „Peripheral Component Interconnect Express“ (PCIe- oder PCI-E-)-Protokolls kommunizieren. Bei verschiedenen Ausführungsformen kann der Host-Prozessor 445 eine Mehrzahl von Kernen 465a-n aufweisen, die jeweils einen Cache 467a-n aufweisen. Bei einigen Ausführungsformen können die Kerne 465a-n Intel® Architecture (IA)-Kerne aufweisen. Jeder der Kernel 465a-n kann mit Kohärenzlogik 455 über Verbindungen 487a-n kommunizieren. Bei einigen Ausführungsformen können die Verbindungen 487a-n ein geräteinternes Protokoll unterstützen (beispielsweise IDI). Bei verschiedenen Ausführungsformen kann der Host-Prozessor eine Einrichtung 470 aufweisen, betreibbar zum Kommunizieren mit Buslogik 460 über eine Verbindung 488. Bei einigen Ausführungsformen kann die Einrichtung 470 eine I O-Einrichtung wie eine PCIe-IO-Einrichtung aufweisen.
  • Bei einigen Ausführungsformen ist die Vorrichtung 405 betreibbar zum Durchführen eines Kohärenz-Bias-Prozesses, anwendbar auf verschiedene Konfigurationen wie ein System, aufweisend einen Beschleuniger 410 und einen Host-Prozessor 445 (beispielsweise einen Rechnerverarbeitungskomplex, der einen oder mehrere Rechnerprozessor-Chips aufweist), wobei der Beschleuniger 410 mit dem Host-Prozessor 445 über eine Mehr-Protokoll-Verknüpfung 489 kommunikativ gekoppelt ist und wobei Speicher direkt an den Beschleuniger 410 und den Host-Prozessor 445 angeschlossen ist (beispielsweise Beschleunigerspeicher 430 bzw. Host-Speicher 440). Der durch die Vorrichtung 405 bereitgestellte Kohärenz-Bias-Prozess kann mehrere technologische Vorteile gegenüber konventionellen Systemen bereitstellen, wie z. B. sowohl für den Beschleuniger 410 als auch für auf den Verarbeitungskernen 465a-n ausgeführte „Host“-Software den Zugriff auf Beschleunigerspeicher 430. Der durch die Vorrichtung bereitgestellte Kohärenz-Bias-Prozess kann einen Host-Bias-Prozess und einen Geräte-Bias-Prozess (zusammen: Bias-Protokollabläufe) und eine Mehrzahl von Optionen zum Modulieren und/oder Auswählen von Bias-Protokollabläufen für spezifische Speicherzugriffe aufweisen.
  • Bei einigen Ausführungsformen können die Bias-Protokollabläufe zumindest teilweise unter Verwendung von Protokollschichten (beispielsweise „Bias-Protokollschichten“) an der Mehr-Protokoll-Verknüpfung 489 implementiert sein. Bei einigen Ausführungsformen können die Bias-Protokollschichten ein geräteinternes Protokoll (zum Beispiel IDI) und/oder ein Speicherverbindungsprotokoll (zum Beispiel SMI3) aufweisen. Bei einigen Ausführungsformen können die Bias-Protokollabläufe unter Verwendung verschiedener Information der Bias-Protokollschichten, des Hinzufügens neuer Information in die Bias-Protokollschichten und/oder des Hinzufügens von Unterstützung für Protokolle aktiviert werden. Beispielsweise können die Bias-Protokollabläufe unter Verwendung vorhandener Opcodes für ein geräteinternes Protokoll (beispielsweise IDI), des Hinzufügens von Opcodes zu einem Speicherverbindungsprotokoll-Standard (zum Beispiel SMI3) und/oder des Hinzufügens von Unterstützung für ein Speicherverbindungsprotokoll (zum Beispiel SMI3) an der Mehr-Protokoll-Verknüpfung 489 implementiert sein (beispielsweise können konventionelle Mehr-Protokoll-Verknüpfungen nur ein geräteinternes Protokoll (zum Beispiel IDI) und ein strukturbasiertes Protokoll (zum Beispiel IOSF) aufweisen).
  • Bei einigen Ausführungsformen kann die Vorrichtung 405 mit mindestens einem Betriebssystem (OS) assoziiert sein. Das OS kann dafür ausgelegt sein, den Beschleunigerspeicher 430 nicht zu verwenden oder bestimmte Teile davon nicht zu verwenden. Ein derartiges OS kann Unterstützung für „Nur-Speicher-NUMA-Module“ (zum Beispiel: keine CPU) aufweisen. Die Vorrichtung 405 kann einen Treiber ausführen (beispielsweise aufweisend den Treiber 118), um verschiedene Beschleuniger-Speicherdienste durchzuführen. Veranschaulichende und nicht einschränkende im Treiber implementierte Beschleuniger-Speicherdienste können die Treiberentdeckung aufweisen und/oder das Aufnehmen/Zuordnen von Beschleunigerspeicher 430, das Bereitstellen von Zuordnungs-APIs und Abbildungsseiten über den OS-Seiten Abbildungsdienst, das Bereitstellen von Prozessen zum Verwalten von Mehr-Prozess-Speicher-Überzeichnung und Arbeitsplanung, das Bereitstellen von APIs, um als Softwareanwendungen zu ermöglichen, den Bias-Modus von Speicherregionen des Beschleunigerspeichers 430 einzurichten und zu ändern, und/oder Freigabe-APIs, die Seiten zur freien Seitenliste des Treibers zurückgeben und/oder Seiten zu einem Standard-Bias-Modus zurückgegeben.
  • 5a veranschaulicht ein Beispiel einer Betriebsumgebung 500, die für verschiedene Ausführungsformen repräsentativ sein kann. Die in 5a dargestellte Betriebsumgebung 500 kann einen Host-Bias-Prozessablauf gemäß einigen Ausführungsformen bereitstellen. Entsprechend der Darstellung in 5a kann eine Vorrichtung 505 eine CPU 510 aufweisen, die mit einem Beschleuniger 520 über eine Verknüpfung 540 kommunikativ gekoppelt ist. Bei einigen Ausführungsformen kann die Verknüpfung 540 eine Multi-Protokoll-Verknüpfung aufweisen. Die CPU 510 kann Kohärenzsteuerungen 530 aufweisen, und sie kann mit Host-Speicher 512 kommunikativ gekoppelt sein. Bei verschiedenen Ausführungsformen können Kohärenzsteuerungen 530 betreibbar sein, um ein oder mehrere Standard-Cache-Kohärenzprotokolle bereitzustellen. Bei einigen Ausführungsformen können die Kohärenzsteuerungen 530 verschiedene Agenten wie z. B. einen Home-Agenten aufweisen und/oder damit assoziiert sein. Bei einigen Ausführungsformen kann die CPU 510 eine oder mehrere IO-Einrichtungen aufweisen und/oder damit kommunikativ gekoppelt sein. Der Beschleuniger 520 kann mit Beschleunigerspeicher 522 kommunikativ gekoppelt sein.
  • Die Host-Bias-Prozessabläufe 550 und 560 können eine Gruppe von Datenflüssen aufweisen, die alle Anforderungen zum Beschleunigerspeicher 522 durch Kohärenzsteuerungen 530 in der CPU 510 Schleusen, umfassend auch Anforderungen vom Beschleuniger 520. Auf diese Weise nimmt der Beschleuniger 522 einen umständlichen Weg zum Zugriff auf Beschleunigerspeicher 522, ermöglicht aber Zugriffe sowohl vom Beschleuniger 522 als auch von der CPU 510 (umfassend auch Anforderungen von IO-Einrichtungen über die CPU 510), die als kohärent unter Verwendung von Standard-Cache-Kohärenzprotokollen der Kohärenzsteuerungen 530 aufrechterhalten werden sollen. Bei einigen Ausführungsformen können die Host-Bias-Prozessabläufe 550 und 560 ein geräteinternes Protokoll (zum Beispiel IDI) verwenden. Bei einigen Ausführungsformen können die Host-Bias-Prozessabläufe 550 und 560 Standard-Opcodes eines geräteinternen Protokolls (beispielsweise IDI) verwenden, um beispielsweise Anforderungen über die Mehr-Protokoll-Verknüpfung 540 zu Kohärenzsteuerungen 530 auszugeben. Bei verschiedenen Ausführungsformen können die Kohärenzsteuerungen 530 verschiedene Kohärenznachrichten (beispielsweise Snoops), die sich aus Anforderungen vom Beschleuniger 520 ergeben, für den Beschleuniger 520 an alle Peer-Prozessor-Chips und internen Prozessoragenten ausgeben. Bei einigen Ausführungsformen können die verschiedenen Kohärenznachrichten Punkt-zu-Punkt-Protokoll-Kohärenznachrichten (z. B. UPI) und/oder geräteinterne Protokollnachrichten (zum Beispiel IDI) aufweisen.
  • Bei einigen Ausführungsformen können die Kohärenzsteuerungen 530 bedingt Speicherzugriffsnachrichten zu einer Beschleuniger-Speichersteuerung (nicht dargestellt) des Beschleunigers 520 über die Mehr-Protokoll-Verknüpfung 540 ausgeben. Derartige Speicherzugriffsnachrichten können gleich oder im Wesentlichen ähnlich sein wie Speicherzugriffsnachrichten, die Kohärenzsteuerungen 530 zu CPU-Speichersteuerungen (nicht dargestellt) senden können, und sie können neue Opcodes aufweisen, die die direkte Rückleitung von Daten zu einem internen Agenten des Beschleunigers 520 ermöglichen, statt die Rückleitung von Daten zu Kohärenzsteuerungen zu erzwingen, und sie anschließend wiederum über die Mehr-Protokoll-Verknüpfung 540 zum Beschleuniger 520 als Reaktion auf ein geräteinternes Protokoll (zum Beispiel IDI) zurückleiten.
  • Der Host-Bias-Prozessablauf 550 kann einen Ablauf aufweisen, der sich aus einer Anforderung oder Speicheroperation für den Beschleunigerspeicher 522 ergibt, die vom Beschleuniger kommt. Der Host-Bias-Prozesspfad 560 kann einen Ablauf aufweisen, der sich aus einer Anforderung oder Speicheroperation für den Beschleunigerspeicher 522 ergibt, die von der CPU 510 (oder von einer mit der CPU 510 assoziierten IO-Einrichtung oder Softwareanwendung) kommt. Wenn die Vorrichtung 505 in einem Host-Bias-Modus aktiv ist, können die Host-Bias-Prozessabläufe 550 und 560 zum Zugriff auf Beschleunigerspeicher 522 entsprechend der Darstellung in 5a verwendet werden. Bei verschiedenen Ausführungsformen können im Host-Bias-Modus alle Anforderungen von der CPU 510, die auf den Beschleunigerspeicher 522 abzielen, direkt zu Kohärenzsteuerungen 530 gesendet werden. Kohärenzsteuerungen 530 können standardmäßige Cache-Kohärenzprotokolle anwenden und standardmäßige Cache-Kohärenznachrichten senden. Bei einigen Ausführungsformen können die Kohärenzsteuerungen 530 Befehle des Speicherverbindungsprotokolls (zum Beispiel SMI3) über die Mehr-Protokoll-Verknüpfung 540 für derartige Anforderungen senden, wobei Abläufe des Speicherverbindungsprotokolls (zum Beispiel SMI3) Daten über die Mehr-Protokoll-Verknüpfung 540 zurückleiten.
  • 5b veranschaulicht ein Beispiel einer Betriebsumgebung 500, die für verschiedene Ausführungsformen repräsentativ sein kann. Die in 5a dargestellte Betriebsumgebung 500 kann einen Host-Bias-Prozessablauf gemäß einigen Ausführungsformen bereitstellen. Wenn die Vorrichtung 505 in einem Geräte-Bias-Modus aktiv ist, kann ein Geräte-Bias-Pfad 570 zum Zugriff auf Beschleunigerspeicher 522. entsprechend der Darstellung in 5 verwendet werden. Beispielsweise kann der Geräte-Bias-Ablauf oder -Pfad 570 dem Beschleuniger 520 den direkten Zugriff auf Beschleunigerspeicher 522 ohne Rückfrage bei den Kohärenzsteuerungen 530 ermöglichen. Insbesondere kann ein Geräte-Bias-Pfad 570 dem Beschleuniger 520 den direkten Zugriff auf Beschleunigerspeicher 522 ermöglichen, ohne eine Anforderung über die Mehr-Protokoll-Verknüpfung 540 senden zu müssen.
  • Im Geräte-Bias-Modus können Anforderungen der CPU 510 für Beschleuniger Speicher auf die gleiche oder im Wesentlichen ähnliche Weise ausgegeben werden wie für den Host-Bias-Modus gemäß einigen Ausführungsformen beschrieben, sie unterscheiden sich jedoch in dem Teil des Speicherverbindungsprotokolls (beispielsweise SMI3) des Pfades 580. Bei einigen Ausführungsformen können Anforderungen der CPU 510 im Geräte-Bias-Modus abgeschlossen werden, als seien sie als „nicht gecachte“ Anforderungen ausgegeben worden. Generell werden Daten nicht gecachter Anforderungen während des Geräte-Bias-Modus nicht in der Cache-Hierarchie der CPU gecacht. Auf diese Weise ist es dem Beschleuniger 520 beispielsweise möglich, während des Geräte-Bias-Modus auf Daten im Beschleunigerspeicher 522 ohne Rückfrage bei den Kohärenzsteuerungen 530 der CPU 510 zuzugreifen. Bei einigen Ausführungsformen können nicht gecachte Anforderungen auf dem geräteinternen Protokollbus (zum Beispiel IDI) der CPU 510 implementiert sein. Bei verschiedenen Ausführungsformen können nicht gecachte Anforderungen unter Verwendung eines global eingehaltenen, einmal verwendeten (GO-UO)-Protokolls auf dem geräteinternen Protokollbus (zum Beispiel IDI) der CPU 510 implementiert sein. Beispielsweise kann eine Reaktion auf eine nicht gecachte Anforderung ein Datenstück zur CPU 510 zurückleiten und die CPU 510 anweisen, dieses Datenstück nur einmal zu verwenden, beispielsweise, um ein Caching des Datenstücks zu verhindern und die Verwendung eines nicht gecachten Datenflusses zu unterstützen.
  • Bei einigen Ausführungsformen können die Vorrichtung 505 und/oder die CPU 510 möglicherweise GO-UO nicht unterstützen. Bei derartigen Ausführungsformen können nicht gecachte Abläufe (beispielsweise der Pfad 580) unter Verwendung von Mehr-Nachrichten-Antwortsequenzen an einem Speicherverbindungsprotokoll (zum Beispiel SMI3) der Mehr-Protokoll-Verbindung 540 und dem geräteinternen Protokollbus (zum Beispiel IDI) der CPU 510 implementiert werden. Wenn beispielsweise die CPU 510 auf eine „Geräte-Bias“-Seite des Beschleunigers 520 abzielt, kann der Beschleuniger 520 einen oder mehrere Zustände einrichten, um künftige Anforderungen an die Ziel-Speicherregion (zum Beispiel eine Cache-Zeile) vom Beschleuniger 520 zu blockieren und eine „Geräte-Bias-Treffer“-Antwort zur Geräte-Verbindungsprotokoll-Zeile (zum Beispiel SMI3) der Mehr-Protokoll-Verknüpfung 540 senden. In Reaktion auf die „Geräte-Bias-Treffer“-Nachricht kann die Kohärenzsteuerung 530 (oder Agenten davon) Daten zu einem anfordernden Prozessorkern zurückleiten, unmittelbar gefolgt von einer Nachricht zur Ungültigmachung des Snoops. Wenn der dazugehörige Prozessorkern quittiert, dass die Ungültigmachung des Snoops abgeschlossen ist, kann die Kohärenzsteuerung 530 (oder Agenten davon) eine Nachricht „Geräte-Bias-Block abgeschlossen“ zum Beschleuniger 520 auf der Speicherverbindungsprotokoll-Zeile (zum Beispiel SMI3) der Mehr-Protokoll-Verknüpfung 540 senden. In Reaktion auf den Empfang der Nachricht „Geräte-Bias-Block abgeschlossen“ kann der Beschleuniger den dazugehörigen Blockierungszustand löschen.
  • Mit Bezug auf 4 kann die Bias-Modus-Information 427 einen Bias-Indikator aufweisen, ausgelegt zum Angeben eines aktiven Bias-Modus (zum Beispiel des Geräte-Bias-Modus oder des Host-Bias-Modus). Die Auswahl des aktiven Bias-Modus kann durch die Bias-Information 432 festgelegt werden. Bei einigen Ausführungsformen kann die Bias-Information 432 eine Bias-Tabelle aufweisen. Bei verschiedenen Ausführungsformen kann die Bias-Tabelle Bias-Information 432 für bestimmte Regionen von Beschleunigerspeicher aufweisen, wie z. B. Seiten, Zeilen und/oder dergleichen. Bei einigen Ausführungsformen kann die Bias-Tabelle Bits pro Speicherseite des Beschleunigerspeichers 430 aufweisen (beispielsweise 1 oder 3 Bits). Bei einigen Ausführungsformen kann die Bias-Tabelle unter Verwendung von RAM implementiert sein, wie z. B. SRAM am Beschleuniger 410 und/oder einem entwendeten Bereich des Beschleunigerspeichers 430 mit oder ohne Caching innerhalb des Beschleunigers 410.
  • Bei einigen Ausführungsformen kann die Bias-Information 432 Bias-Tabelleneinträge in der Bias-Tabelle aufweisen. Bei verschiedenen Ausführungsformen kann auf den mit jedem Zugriff auf Beschleunigerspeicher 430 assoziierten Bias-Tabelleneintrag vor dem eigentlichen Zugriff auf Beschleunigerspeicher 430 zugegriffen werden. Bei einigen Ausführungsformen können lokale Anforderungen von Beschleuniger 410, die ihre Seite im Geräte-Bias finden, direkt zum Beschleunigerspeicher 430 weitergeleitet werden. Bei verschiedenen Ausführungsformen können lokale Anforderungen vom Beschleuniger 410, die ihre Seite im Host-Bias finden, zum Host-Prozessor 445 weitergeleitet werden, beispielsweise als geräteinterne Protokoll-Anforderung (beispielsweise IDI) an der Mehr-Protokoll-Verknüpfung 489. Bei einigen Ausführungsformen können Host-Prozessoranforderungen 445, beispielsweise unter Verwendung des Speicherverbindungsprotokolls (zum Beispiel SMI3), die ihre Seite im Geräte-Bias finden, die Anforderung unter Verwendung eines nicht gecachten Flusses abschließen (beispielsweise des Pfades 580 aus 5b). Bei einigen Ausführungsformen können Host-Prozessoranforderungen 445 beispielsweise unter Verwendung des Speicherverbindungsprotokolls (zum Beispiel SMI3), die ihre Seite im Host-Bias finden, die Anforderung als standardmäßigen Speicher-Lesevorgang von Beschleunigerspeicher abschließen (beispielsweise über den Pfad 560 aus 5a).
  • Der Bias-Modus eines Bias-Indikators der Bias-Modus-Information 427 einer Region des Beschleunigerspeichers 430 (beispielsweise einer Speicherseite) kann über ein softwarebasiertes System, ein hardwareunterstütztes System, ein hardwarebasiertes System oder eine Kombination daraus geändert werden. Bei einigen Ausführungsformen kann der Bias-Indikator über einen Programmierschnittstellen-(API)-Aufruf (zum Beispiel OpenCL) geändert werden, der wiederum den Gerätetreiber (zum Beispiel den Treiber 118) des Beschleunigers 410 aufrufen kann. Der Gerätetreiber des Beschleunigers 410 kann eine Nachricht zum Beschleuniger 410 senden (oder einen Befehlsdeskriptor Einstellen), um den Beschleuniger 410 zum Ändern des Bias-Indikators anzuweisen. Bei einigen Ausführungsformen kann eine Änderung des Bias-Indikators durch eine Cache-Entleerungsoperation im Host-Prozessor 445 begleitet werden. Bei verschiedenen Ausführungsformen kann eine Cache-Entleerungsoperation für einen Übergang vom Host-Bias-Modus zum Geräte-Bias-Modus erforderlich sein, sie ist aber für einen Übergang vom Geräte-Bias-Modus zum Host-Bias-Modus möglicherweise nicht erforderlich. Bei verschiedenen Ausführungsformen kann Software einen Bias-Modus von einer oder mehreren Speicherregionen des Beschleunigerspeichers 430 über eine zum Beschleuniger 430 gesendete Arbeitsanforderung ändern.
  • In bestimmten Fällen ist die Software möglicherweise nicht in der Lage oder nicht ohne weiteres in der Lage, festzulegen, wann ein Bias-Übergangs-API-Aufruf erfolgen soll, und Speicherregionen, die einen Bias-Übergang erfordern, zu identifizieren. In solchen Fällen kann der Beschleuniger 410 einen Bias-Übergangs-Hinweisprozess bereitstellen, wobei der Beschleuniger 410 ein Erfordernis eines Bias-Übergangs festgelegt und eine Nachricht zum Beschleunigertreiber (zum Beispiel den Treiber 118) sendet, die das Erfordernis des Bias-Übergangs angibt. Bei verschiedenen Ausführungsformen kann der Bias-Übergangs-Hinweisprozess in Abhängigkeit von einer Bias-Tabellensuche aktiviert werden, die Zugriffe des Beschleunigers 410 auf Host-Bias-Speicherregionen oder Zugriffe des Host-Prozessors 445 auf Geräte-Bias-Modus-Speicherregionen auslöst. Bei einigen Ausführungsformen kann der Bias-Übergangs-Hinweisprozess das Erfordernis eines Bias-Übergangs über einen Interrupt zum Beschleunigertreiber signalisieren. Bei verschiedenen Ausführungsformen kann die Bias-Tabelle ein Bias-Zustands-Bit zum Aktivieren der Bias-Übergangs-Zustandswerte aufweisen. Das Bias-Zustandsbit kann verwendet werden, um den Zugriff auf Speicherregionen während des Prozesses einer Bias-Änderung zu ermöglichen (beispielsweise, wenn Caches teilweise entleert werden und inkrementell Cache-Belastung durch anschließende Anforderungen unterdrückt werden muss).
  • Hier sind ein oder mehrere Logikabläufe umfasst, die für beispielhafte Methodiken in der Durchführung von neuartigen Aspekten der offenbarten Architektur repräsentativ sind. Während die hier gezeigten eine oder die mehreren Methodiken zum Zweck der einfacheren Erläuterung als eine Abfolge von Vorgängen gezeigt und beschrieben sind, erkennen und verstehen Fachleute auf diesem Gebiet, dass die Methodiken nicht durch die Reihenfolge der Vorgänge eingeschränkt sind. Einige Vorgänge können dementsprechend in einer unterschiedlichen Reihenfolge und/oder gleichzeitig mit anderen Vorgängen als den hier gezeigten und geschriebenen auftreten. Beispielsweise verstehen und erkennen Fachleute auf diesem Gebiet, dass eine Methodik alternativ dazu als eine Reihe von zusammenhängenden Zuständen oder Ereignissen wie in einem Zustandsdiagramm dargestellt werden kann. Zudem sind möglicherweise nicht alle in einer Methodik veranschaulichten Vorgänge für eine neuartige Implementierung erforderlich.
  • Ein Logikablauf kann in Hardware, Firmware, Software oder einer Kombination davon umgesetzt sein. Bei Software- und Firmware-Ausführungsformen kann ein Logikablauf durch rechnerausführbare Anweisungen implementiert sein, die auf einem nicht vorübergehenden rechnerlesbaren Medium oder maschinenlesbaren Medium wie einem optischen, magnetischen oder Halbleiter-Speicher gespeichert sind. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • 6 gibt eine Ausführungsform eines Logikablaufs 600 wieder. Der Logikablauf 600 kann für einige oder alle der durch eine oder mehrere hier beschriebene Ausführungsformen ausgeführten Operationen wie in den Vorrichtungen 105, 305, 405 und 505 repräsentativ sein. Bei einigen Ausführungsformen kann der Logikablauf 600 für einige oder alle der Vorgänge für einen Kohärenz-Bias-Prozess gemäß einigen Ausführungsformen repräsentativ sein.
  • Entsprechend der Darstellung in 6 kann der Logikablauf 600 einen Bias-Modus für Beschleuniger-Speicherseiten bei Block 602 auf den Host-Bias-Modus einstellen. Beispielsweise kann eine Host-Softwareanwendung (zum Beispiel die Softwareanwendung 140) den Bias-Modus eines Beschleuniger-Gerätespeichers 430 über einen Treiber und/oder einen API-Aufruf auf den Host-Bias-Modus einstellen. Die Host-Softwareanwendung kann einen API-Aufruf (zum Beispiel eine OpenCL-API) zum Übergang zugeordneter (oder Ziel-)-Seiten des Beschleunigerspeichers 430, der Operanden speichert, zum Host-Bias verwenden. Da die zugeordneten Seiten vom Geräte-Bias-Modus zum Host-Bias-Modus übergehen, wird keine Cache-Entleerung initiiert. Der Geräte-Bias-Modus kann in einer Bias-Tabelle der Bias-Information 432 angegeben werden.
  • Bei Block 604 kann der Logik ab auf 600 Operanden und/oder Daten in Beschleuniger-Speicherseiten verschieben. Beispielsweise kann der Beschleuniger 420 eine Funktion für die CPU, die bestimmte Operanden erfordert, durchführen. Die Host-Softwareanwendung kann Operanden von einem Peer-CPU-Kern (zum Beispiel dem Kern 465a) zu zugeordneten Seiten des Beschleunigerspeichers 430 verschieben. Der Host-Prozessor 445 kann Operandendaten in zugeordneten Seiten im Beschleunigerspeicher 430 (und in willkürlichen Positionen im Host-Speicher 440) erzeugen.
  • Der Logikablauf 600 kann bei Block 606 Beschleuniger-Speicherseiten in den Gerät-Bias-Modus verschieben. Beispielsweise kann die Host-Softwareanwendung einen API-Aufruf verwenden, um Operanden-Speicherseiten des Beschleunigerspeichers 430 in den Geräte-Bias-Modus zu versetzen. Wenn der Geräte-Bias-Übergang abgeschlossen ist, kann die Host-Softwareanwendung dem Beschleuniger 430 Arbeitsvorgänge zuteilen. Der Beschleuniger 430 kann die mit der zugeteilten Arbeit assoziierte Funktion ohne Host-bezogenen Kohärenz-Overhead ausführen.
  • Der Logikablauf 600 kann unter Verwendung von Operanden über den Beschleuniger Resultate erzeugen und die Resultate bei Block 608 in Beschleuniger-Speicherseiten speichern. Beispielsweise kann der Beschleuniger 420 unter Verwendung von Operanden zum Erzeugen von Ergebnissen eine Funktion durchführen (zum Beispiel eine Gleitkomma-Operation, eine Grafikberechnung, eine FFT-Operation und/oder dergleichen). Die Ergebnisse können im Beschleunigerspeicher 430 gespeichert werden. Zusätzlich kann die Software Anwendung einen API-Aufruf verwenden, um die Eingabe eines Arbeitsdeskriptors zum Entleeren von Operandenseiten aus dem Host-Cache zu veranlassen. Bei einigen Ausführungsformen kann eine Cache-Entleerung unter Verwendung einer Cache- (oder Cache-Zeilen-)-Entleerungsroutine (wie z. B. CLFLUSH) an einem geräteinternen Protokoll (zum Beispiel dem IDI-Protokoll) ausgeführt werden. Die durch die Funktion erzeugten Ergebnisse können in zugeordneten Seiten des Beschleunigerspeichers 430 gespeichert werden.
  • Der Logikablauf kann den Bias-Modus für Beschleuniger-Speicherseiten bei Block 610 auf den Host-Bias-Modus einstellen. Beispielsweise kann die Host-Softwareanwendung einen API-Aufruf verwenden, um Operanden-Speicherseiten des Beschleunigerspeichers 430 in den Host-Bias-Modus zu versetzen, ohne Kohärenz-Prozesse und/oder Entleerungsvorgänge zu veranlassen. Die Host-CPU 445 kann auf Ergebnisse zugreifen, sie im Cache ablegen und teilen. Bei Block 612 kann der Logikablauf 600 Ergebnisse von Beschleuniger-Speicherseiten zu Host-Software bereitstellen. Beispielsweise kann die Host-Softwareanwendung auf die Ergebnisse direkt von Beschleuniger-Speicherseiten 430 zugreifen. Bei einigen Ausführungsformen können zugeordnete Beschleuniger-Speicherseiten durch den Logikablauf freigegeben werden. Beispielsweise kann die Host-Softwareanwendung einen Treiber und/oder API-Aufruf verwenden, um die zugeordneten Speicherseiten des Beschleunigerspeichers 430 freizugeben.
  • 7 ist ein Blockdiagramm mit der Darstellung einer Struktur gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. In diesem Fall ist eine kohärente Beschleunigerstruktur 700 bereitgestellt. Die kohärente Beschleunigerstruktur 700 verbindet sich mit einem IAL-Endpunkt 728, der die kohärente Beschleunigerstruktur 700 mit einer Host-Einrichtung wie den in den vorstehenden FIGUREN offenbarten Host-Einrichtungen kommunikativ koppelt.
  • Die kohärente Beschleunigerstruktur 700 ist bereitgestellt, um den Beschleuniger 740 und seinen angeschlossenen Speicher 722 mit der Host-Einrichtung kommunikativ zu koppeln. Der Speicher 722 weist eine Mehrzahl von Speichersteuerungen 720-1 bis 720-n auf. Bei einem Beispiel können 8 Speichersteuerungen 720 8 separate Speicherbänke bedienen.
  • Die Struktursteuerung 736 weist eine Gruppe von Steuerungen und Verbindungen zum Bereitstellen der kohärenten Speicherstruktur 700 auf. Bei diesem Beispiel ist die Struktursteuerung 736 in n separate Slices unterteilt, um die n Speicherbänke des Speichers 722 zu bedienen. Jede Slice kann im Wesentlichen von jeder anderen Slice unabhängig sein. Entsprechend der Erörterung weiter oben weist die Struktursteuerung 736 sowohl „vertikale“ Verbindungen 706 als auch „horizontale“ Verbindungen 708 auf. Vertikalverbindungen sind generell so zu verstehen, dass sie einander vorgeschaltete oder nachgeschaltete Einrichtungen verbinden. Beispielsweise verbindet sich ein „Last Level Cache“ (LLC) 734 vertikal mit der LLC-Steuerung 738, und daran eine Struktur mit dem Die-internen Verbindungsblock (F2IDI), wodurch die Struktursteuerung 736 mit dem Beschleuniger 740 kommunikativ gekoppelt wird. Die F2IDI 730 stellt eine Downstream-Verknüpfung zum Strukturstopp 712 bereit und kann auch eine Bypass-Verbindung 715 bereitstellen. Die Bypass-Verbindung 715 verbindet eine LLC-Steuerung 738 direkt mit einer Struktur-Speicher-Verbindung 716, wo Signale gebündelt zu einer Speichersteuerung 720 ausgegeben werden. Auf dem nicht überbrückten Weg gelangen Anforderungen von der F2IDI 730 entlang der horizontalen Verbindung zum Host und anschließend zurück zum Strukturstopp 712, anschließend zu einer Struktur-Kohärenz-Engine 704 und nachfolgend zu F2MEM 716.
  • Horizontale Busse weisen Busse auf, die Strukturstopps 712 miteinander verbinden und die LLC-Steuerungen miteinander verbinden.
  • Bei einem Beispiel kann der IAL-Endpunkt 728 von der Host-Einrichtung ein Paket empfangen, aufweisend eine Anweisung zum Durchführen einer beschleunigten Funktion zusammen mit Nutzdaten, umfassend Snoops, an denen der Beschleuniger arbeiten soll. Der IAL-Endpunkt 728 leitet diese zu L2FAB 718, die als Host-Einrichtungsverbindung für die Struktursteuerung 736 wirkt. L2FAB 718 kann als Verknüpfungssteuerung der Struktur wirken, umfassend das Bereitstellen der IAL-Schnittstelle Steuerung (obwohl bei einigen Ausführungsformen auch zusätzliche IAL-Steuerelemente bereitgestellt sein können und generell jede Kombination von Elementen, die IAL-Schnittstellensteuerung bereitstellt, als eine „IAL-Schnittstellensteuerung“ bezeichnet werden kann). L2FAB 718 steuert Anforderungen vom Beschleuniger zum Host und umgekehrt. L2FAB 718 kann auch ein IDI-Agent werden und kann gezwungen sein, als Sortieragent zwischen den IDI-Anforderungen von Beschleunigern und Snoops vom Host zu wirken.
  • L2FAB 718 kann anschließend den Strukturstopp 712-0 betreiben, um den Speicher 722 mit den Werten zu füllen. Der Strukturstopp L2FAB 718 kann einen Lastausgleichsalgorithmus anwenden, wie zum Beispiel einen einfachen adressbasierten Hash, um Nutzdaten für bestimmte Ziel-Speicherbänke zu kennzeichnen. Wenn Speicherbänke im Speicher 722 mit den entsprechenden Daten gefüllt worden sind, betreibt der Beschleuniger 740 die Struktursteuerung 736, um Werte vom Speicher in den LLC 734 über eine LLC-Steuerung 738 zu abzurufen. Der Beschleuniger 740 führt seine beschleunigte Berechnung durch, schreibt anschließend Ausgaben zum LLC 734, wo sie anschließend in Flussrichtung weitergeleitet und zum Speicher 722 ausgegeben werden.
  • Strukturstopps 712, F2MEM-Steuerungen 716, Multiplexer 710 und F2IDIs 730 können bei einigen Beispielen sämtlich standardmäßige Busse und Verbindungen sein, die Konnektivität gemäß bereits bekannten Grundsätzen bereitstellen. Die vorstehenden Verbindungen können virtuelle und physikalische Kanäle, Verbindungen, Busse, Schaltelemente und Ablaufsteuermechanismen bereitstellen. Sie können auch einen Konfliktlösungsmechanismus mit Bezug auf Interaktionen zwischen vom Beschleuniger oder Geräteagenten ausgegebenen Anforderungen und vom Host ausgegebenen Anforderungen bereitstellen. Die Struktur kann physische Busse in der horizontalen Richtung aufweisen, mit ringähnlichen Schaltvorgängen des Servers, wenn die Busse die verschiedenen Slices überqueren. Die Struktur kann auch eine spezielle optimierte horizontale Verbindung 739 zwischen LLC-Steuerungen 738 aufweisen.
  • Anforderungen von der F2IDI 730 können die Hardware durchlaufen, um Verkehr zum Host zwischen der horizontalen Strukturverbindung und den pro Slice optimierten Pfaden zwischen der LLC-Steuerung 738 und dem Speicher 722 zu teilen und zu bündeln. Dies umfasst das Multiplexen von Verkehr und seine Lenkung entweder zu einem IDI-Block, wo er den traditionellen Weg über den Strukturstopp 712 und FC 704 überquert, oder die einleitende Verwendung von IDI, um Verkehr zum Übergehen der Verbindungen 715 zu leiten. F2IDI 730-1 kann auch Hardware aufweisen, um Eingang und Ausgang zu und von der horizontalen Struktur Verbindung zu verwalten, wie z. B. durch Bereitstellen geeigneter Signale an Strukturstopps 712.
  • Die IAL-Schnittstellensteuerung 718 kann, wenn dies zweckmäßig ist, eine PCIe-Steuerung sein. Die IAL-Schnittstellensteuerung stellt die Schnittstelle zwischen dem paketierten IAL-Bus und der Strukturverbindung bereit. Sie ist zuständig für das Einstellen und die Bereitstellung von Flusssteuerung für IAL-Nachrichten und das Steuern von IAL-Nachrichten zu den jeweiligen physikalischen und virtuellen Strukturkanälen. L2FAB 718 kann auch Arbitration zwischen mehreren Klassen von IAL-Nachrichten bereitstellen. Sie kann ferner IAL-Sortierregeln durchsetzen.
  • Mindestens drei Steuerstrukturen in der Struktursteuerung 736 stellen neuartige und vorteilhafte Merkmale der Struktursteuerung 736 der vorliegenden Spezifikation bereit. Diese umfassen LLC-Steuerungen 738, FCEs 704 und das Leistungsmanagementmodul 750.
  • In vorteilhafter Weise können die LLC-Steuerungen 738 auch Bias-Steuerfunktionen gemäß dem IAL-Bias-Protokoll bereitstellen. Somit können die LLC-Steuerungen 738 Hardware aufweisen zum Durchführen von Cache-Suchvorgängen, Hardware zum Prüfen der IAL-Basis auf eine Cache-Fehlanforderung, Hardware zum Steuern von Anforderungen auf den vorgesehenen Verbindungspfad und Logik zum Reagieren auf durch den Host-Prozessor oder durch eine FCE 704 ausgegebene Snoops.
  • Beim Steuern von Anforderungen vom Strukturstopp 712 zum Host über L2FAB 718 bestimmt die LLC-Steuerung 738, wo Verkehr über den Strukturstopp 712, über die Bypass-Verbindung 715 direkt zum F2MEM 716 oder über den horizontalen Bus 739 zu einer unterschiedlichen Speichersteuerung gelenkt werden soll.
  • Man beachte, dass die LLC-Steuerung 738 bei einigen Ausführungsformen eine von der FCE 704 physikalisch getrennte Einrichtung oder ein Block ist. Es ist möglich, einen einzelnen Blog bereitzustellen, der Funktionen sowohl der LLC-Steuerung 738 als auch der FCE 704 bereitstellt. Durchtrennen der beiden Blocks und Bereitstellen der IAL-Bias-Logik in der LLC-Steuerung 738 ist es jedoch möglich, eine Bypass-Verbindung 715 bereitzustellen und somit bestimmte Speicheroperationen zu beschleunigen. In vorteilhafter Weise kann bei einigen Ausführungsformen das Trennen der LLC-Steuerung 738 und der FCE 704 auch selektive Stromleitung in Teilen der Struktur für eine effizientere Verwendung von Ressourcen unterstützen.
  • Die FCE 704 kann Hardware aufweisen zum Einstellen, Verarbeiten (z. B. Ausgeben von Snoops zur LLC) und Nachverfolgen von SMI-Anforderungen vom Host. Dies stellt Kohärenz mit der Host-Einrichtung bereit. Die FCE 704 kann auch Hardware aufweisen zum Einstellen von Anforderungen auf dem pro Slice optimierten Pfad zu einer Speicherbank im Speicher 722. Ausführungsformen einer FCE können auch Hardware aufweisen zur Agitation und zum Multiplexen der bei den vorstehend erwähnten Anforderungsklassen auf eine CMI- Speichersubsystem-Schnittstelle, und sie können Hardware oder Logik aufweisen zum Lösen von Konflikten zwischen den beiden vorstehend erwähnten Anforderungsklassen. Weitere Ausführungsformen einer FCE können Unterstützung bereitstellen zum Sortieren von Anforderungen von einer direkten vertikalen Verbindung und von Anforderungen von der FCE 704.
  • Das Leistungsverwaltungsmodul (PMM) 750 stellt ebenfalls Vorteile für Ausführungsformen der vorliegenden Spezifikation bereit. Man betrachte beispielsweise den Fall, bei dem jede unabhängige Slice in der Struktursteuerung 736 vertikal 1 GB pro Sekunde Bandbreite unterstützt. 1 GB pro Sekunde ist nur als veranschaulichendes Beispiel bereitgestellt, und Beispiele der Struktursteuerung 736 unter reellen Bedingungen können entweder wesentlich schneller oder wesentlich langsamer als 1 GB pro Sekunde sein.
  • Der LLC 734 kann wesentlich höhere Bandbreiten aufweisen, beispielsweise das 10-Fache der Bandbreite der vertikalen Bandbreite einer Slice der Struktursteuerung 736. Somit kann der LLC 734 eine Bandbreite von 10 GB pro Sekunde aufweisen, die bidirektional sein kann, durch den LLC 734 20 GB pro Sekunde ist. Bei 8 Slices der Struktursteuerung 736, die jeweils 20 GB pro Sekunde bidirektionale unterstützen, kann der Beschleuniger 740 somit eine gesamte Bandbreite von 160 GB pro Sekunde über den horizontalen Bus 739 erkennen. Der Betrieb der LLC-Steuerungen 738 und des horizontalen Busses 739 bei voller Geschwindigkeit verbraucht somit große Strommengen.
  • Wie weiter oben erwähnt, kann die vertikale Bandbreite jedoch 1 GB pro Slice sein, und die gesamte IAL-Bandbreite kann ungefähr 10 GB pro Sekunde sein. Somit stellt der horizontale Bus 739 eine Bandbreite bereit, die ungefähr eine Größenordnung über der Bandbreite der gesamten Struktursteuerung 736 liegt. Beispielsweise kann der horizontale Bus 739 Tausende physikalischer Kabel umfassen, während vertikale Verbindungen Hunderte physikalischer Kabel aufweisen können. Die Horizontalstruktur 708 kann die gesamte Bandbreite des IAL unterstützen, d. h. 10 GB Sekunde in jeder Richtung mit insgesamt 20 GB pro Sekunde.
  • Der Beschleuniger 740 kann Berechnungen durchführen und LLCs 734 mit wesentlich höheren Geschwindigkeiten betreiben als die Host-Einrichtung in der Lage sein kann, Daten zu verbrauchen. Somit können Daten geballt in den Beschleuniger 740 gelangen, und sie können anschließend je nach Bedarf durch den Host-Prozessor verbraucht werden. Nachdem der Beschleuniger 740 seine Berechnungen abgeschlossen und die entsprechenden Werte in LLCs 734 eingetragen hat, verbraucht die Aufrechterhaltung voller Bandbreite zwischen LLC-Steuerungen 738 eine große Strommenge, die im Wesentlichen vergeudet wird, da die LLC-Steuerungen 738 nicht mehr miteinander kommunizieren müssen, während der Beschleuniger 740 inaktiv ist. Während der Beschleuniger 740 im Ruhezustand ist, können die LLC-Steuerungen 738 somit abgeschaltet werden, sodass der horizontale Bus 739 abgeschaltet wird, während benötigte vertikale Busse, wie z. B. vom Strukturstopp 712 zur FCE 704 zur F2MEM 716 zur Speichersteuerung 720 eingeschaltet bleiben und auch der horizontale Bus 708 aufrechterhalten bleibt. Da der horizontale Bus 739 mit ungefähr einer Größenordnung oder mehr über dem Rest der Struktur 700 arbeitet, kann dies ungefähr eine Größenordnung Leistung einsparen, während der Beschleuniger 740 inaktiv ist.
  • Man beachte, dass einige Ausführungsformen der kohärenten Beschleunigerstruktur 700 auch isochrone Steuerungen bereitstellen können, die verwendet werden können, um isochronen Verkehr zu Elementen bereitzustellen, die verzögerungsanfällig oder zeitsensibel sind. Falls der Beschleuniger 740 zum Beispiel ein Display-Beschleuniger ist, dann kann ein isochroner Anzeigepfad zu einem Display-Generator (DG)bereitgestellt werden, sodass ein verbundenes Display isochrone Daten empfängt.
  • Die gesamte Kombination von Agenten und Verbindungen in kohärenter Beschleunigerstruktur 700 implementiert IAL-Funktionen so, dass hohe Performanz ohne Stillstand und Leerräume ansteht. Dies erfolgt, während Energie erhalten bleibt und durch die Umgehung von Verbindungen 715 erhöhte Effizienz bereitgestellt wird.
  • 8 ist ein Ablaufdiagramm eines Verfahrens 800 gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Das Verfahren 800 veranschaulicht ein Verfahren zur Energieeinsparung, wie es durch den PMM 750 aus 7 bereitgestellt werden kann.
  • Eine Eingabe von der Host-Einrichtung 804 kann die kohärente Beschleunigerstruktur erreichen, aufweisend eine Anweisung zum Durchführen einer Berechnung und Nutzdaten für die Berechnung. Falls die horizontalen Verbindungen zwischen LLC-Steuerungen abgeschaltet sind, schaltete der PMM in Block 808 die Verbindung bis zu ihrer vollen Bandbreite ein.
  • In Block 812 berechnet der Beschleuniger Ergebnisse entsprechend der normalen Funktion. Während der Berechnung dieser Resultate kann er die kohärente Beschleunigerstruktur mit ihrer vollen verfügbaren Bandbreite betreiben, umfassend die volle Bandbreite der horizontalen Verbindungen zwischen LLC-Steuerungen.
  • Wenn die Ergebnisse vorliegen, kann die Beschleunigerstruktur in Block 816 die Ergebnisse in den lokalen Speicher 820 auslagern.
  • Im Entscheidungsblock 824 liegt der PMM fest, ob es neue verfügbare Daten vom Host gibt, mit denen gearbeitet werden kann. Falls neue Daten verfügbar sind, kehrt die Steuerung anschließend zu Block 812 zurück, und der Beschleuniger setzt die Durchführung seiner beschleunigten Funktion fort. In der Zwischenzeit kann die Host-Einrichtung Daten direkt vom lokalen Speicher 820 verbrauchen, der in kohärenter Weise auf den Host-Speicheradressraum abgebildet werden kann.
  • Zurück im Block 824 reduziert der PMM, falls keine neuen Daten vom Host verfügbar sind, anschließend in Block 828 die Leistung, sodass die LLC-Steuerungen abgeschaltet werden und somit die horizontale Verbindung hoher Bandbreite zwischen den LLC-Steuerungen deaktiviert wird. Wie vorstehend beschrieben, kann der Host, da der lokale Speicher 820 auf den Host-Adressspeicherraum abgebildet wird, mit dem Verbrauch von Daten aus dem lokalen Speicher 820 bei voller IAL-Bandbreite fortfahren, die bei einigen Ausführungsformen wesentlich niedriger ist als die volle Bandbreite zwischen den LLC-Steuerungen.
  • In Block 832 wartet die Steuerung auf eine neue, von der Host-Einrichtung eingehende Eingabe, und wenn neue Daten empfangen werden, kann die Verbindung anschließend wieder eingeschaltet werden.
  • 9-11 veranschaulichen ein Beispiel von IAL.mem-Tunneling über PCIe. Die beschriebenen Paketformate umfassend standardmäßige PCIe-Paketfelder mit Ausnahme von grau hervorgehobenen Feldern. Graue Felder sind solche, die die neuen Tunneling-Felder bereitstellen.
  • 9 ist ein Blockdiagramm eines IAL.mem-Lesevorgangs unter PCIe-Betrieb gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Neue Felder umfassen:
    • • MemOpcode (4 Bits) - Speicher-Opcode. Enthält Informationen, welche Speichertransaktion abgearbeitet werden soll. Beispielsweise Lesevorgänge, Schreibvorgänge, Nulloperationen usw.
    • • MetaField und MetaValue (2 Bits) - Metadatenfeld und Metadatenwert. Zusammen geben diese an, welches Metadaten-Feld im Speicher modifiziert werden soll und auf welchen Wert. Ein Metadaten-Feld im Speicher enthält üblicherweise mit den Ist-Daten assoziierte Information. Beispielsweise speichert QPI Verzeichniszustände in Metadaten.
    • • TC (2 Bits) - Verkehrsklasse. Verwendet zum Differenzieren von Verkehr, der unterschiedlichen Dienstgüteklassen angehört.
    • • Snp Type (3 Bits) - Snoop-Typ. Verwendet zum Aufrechterhalten von Kohärenz zwischen den Caches des Hosts und des Geräts.
    • • R (5 Bits) - Reserviert
  • 10 ist ein Blockdiagramm eines Schreibvorgangs eines IAL.mem unter PCIe-Betrieb gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Neue Felder umfassen:
    • • MemOpcode (4 Bits) - Speicher-Opcode. Enthält Informationen, welche Speichertransaktion abgearbeitet werden soll. Beispielsweise Lesevorgänge, Schreibvorgänge, Nulloperationen usw.
    • • MetaField und MetaValue (2 Bits) - Metadatenfeld und Metadatenwert. Zusammen geben diese an, welches Metadaten-Feld im Speicher modifiziert werden soll und auf welchen Wert. Ein Metadaten-Feld im Speicher enthält üblicherweise mit den Ist-Daten assoziierte Information. Beispielsweise speichert QPI Verzeichniszustände in Metadaten.
    • • TC (2 Bits) - Verkehrsklasse. Verwendet zum Differenzieren von Verkehr, der unterschiedlichen Dienstgüteklassen angehört.
    • • Snp Type (3 Bits) - Snoop-Typ. Verwendet zum Aufrechterhalten von Kohärenz zwischen den Caches des Hosts und des Geräts.
    • • R (5 Bits) - Reserviert
  • 11 ist ein Blockdiagramm eines IAL.mem-Abschlusses mit Daten unter PCIe-Betrieb gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Neue Felder umfassen:
    • • R (1 Bit) - Reserviert
    • • Opcode (3 Bits) - IAL.io-Opcode
    • • MetaField und MetaValue (2 Bits) - Metadatenfeld und Metadatenwert. Zusammen geben diese an, welches Metadaten-Feld im Speicher modifiziert werden soll und auf welchen Wert. Ein Metadaten-Feld im Speicher enthält üblicherweise mit den Ist-Daten assoziierte Information. Beispielsweise speichert QPI Verzeichniszustände in Metadaten.
    • • PCLS (4 Bits) - Vorheriger Cache-Zeilenzustand. Verwendet für kritische Kohärenzübergänge.
    • • PRE (7 Bits) - Performanz-Codierung. Verwendet durch Performanz-Überwachungsmesser im Host.
  • 12 veranschaulicht eine Ausführungsform einer Struktur, zusammengesetzt aus Punkt-zu-Punkt-Verbindungen, die eine Gruppe von Komponenten verbinden, gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Das System 1200 weist einen Prozessor 1205 und einen Systemspeicher 1210 auf, die mit einem Steuerungs-Hub 1215 gekoppelt sind. Der Prozessor 1205 weist ein beliebiges Verarbeitungselement, wie zum Beispiel einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder anderen Prozessor auf. Der Prozessor 1205 ist durch einen Front-Side-Bus (FSB) 1206 mit dem Steuerungs-Hub 1215 gekoppelt. Bei einer Ausführungsform ist ein FSB 1206 eine serielle Punkt-zu-Punkt-Verbindung, wie unten beschrieben. Bei einer anderen Ausführungsform weist der Link 1206 eine serielle, differenzielle Verbindungsarchitektur auf, die differenziellen Verbindungsstandards entspricht.
  • Der Systemspeicher 1210 weist eine beliebige Speichereinrichtung auf, wie zum Beispiel Direktzugriffsspeicher (RAM), nichtflüchtigen Speicher (NV) oder sonstigen Speicher, auf den Einrichtungen im System 1200 zugreifen können. Der Systemspeicher 1210 ist durch die Speicherschnittstelle 1216 mit einem Steuerungs-Hub 1215 gekoppelt. Beispiele einer Speicherschnittstelle weisen eine Double-Data-Rate-(DDR)-Speicherschnittstelle, eine Dual-Channel-DDR-Speicherschnittstelle und eine dynamische RAM (DRAM)-Speicherschnittstelle auf.
  • Bei einer Ausführungsform ist der Steuerungs-Hub 1215 ein Root-Hub, ein Root-Complex oder eine Root-Steuerung in einer „Peripheral Component Interconnect Express“ (PCIe oder PCIE)-Verbindungshierarchie. Beispiele des Steuerungs-Hubs 1215 weisen einen Chipsatz, einen Speichersteuerungs-Hub (MCH), eine Northbridge, einen „Interconnect Controller Hub“ (ICH), eine Southbridge und eine Root-Steuerung/Hub auf. Oft bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Steuerungs-Hubs, das heißt einen „Memory Controller Hub“ (MCH), der mit einem „Interconnect Controller Hub“ (ICH) gekoppelt ist.
  • Es ist zu beachten, dass aktuelle Systeme oft den in dem Prozessor 1205 integrierten MCH aufweisen, während die Steuerung 1215 auf ähnliche Weise wie weiter unten beschrieben mit E/A-Einrichtungen kommunizieren soll. Bei manchen Ausführungsformen wird Peer-to-Peer-Routing optional durch den Root-Complex 1215 unterstützt.
  • Hier ist der Steuerungs-Hub 1215 durch die serielle Verknüpfung 1219 mit einem Switch/einer Brücke 1220 gekoppelt. Eingabe-/Ausgabemodule 1217 und 1221, die auch als Schnittstellen/Ports 1217 und 1221 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um Kommunikation zwischen dem Steuerungs-Hub 1215 und dem Switch 1220 bereitzustellen. Bei einer Ausführungsform können mehrere Einrichtungen mit dem Switch 1220 gekoppelt sein.
  • Der Switch/die Brücke 1220 leiten Pakete/Nachrichten von Gerät 1225 upstream, das heißt eine Hierarchie aufwärts in Richtung eines Root-Complex zum Steuerungs-Hub 1215, und downstream, das heißt eine Hierarchie nach unten weg von einer Root-Steuerung, vom Prozessor 1205 oder vom Systemspeicher 1210 zur Einrichtung 1225. Der Switch 1220 wird bei einer Ausführungsform als logische Anordnung mehrerer virtueller PCI-zu-PCI-Brückengeräte bezeichnet.
  • Die Einrichtung 1225 weist eine beliebige interne oder externe Einrichtung oder Komponente auf, die mit einem elektronischen System, wie zum Beispiel einer E/A-Einrichtung, einer Netzschnittstelle (NIC), einer Erweiterungskarte, einem Audioprozessor, einem Netzwerkprozessor, einer Festplatte, einer Speichereinrichtung, einer CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Speichereinrichtung, einem Firewire-Gerät, einer „Universal Serial Bus“ (USB)-Einrichtung, einem Scanner und anderen Eingabe-/Ausgabeeinrichtungen gekoppelt werden soll. Oft werden derartige Einrichtungen im PCIe-Sprachgebrauch als ein Endpunkt bezeichnet. Obwohl nicht spezifisch gezeigt, kann die Einrichtung 1225 eine PCIe-zu-PCI/PCI-X-Brücke aufweisen, um übernommene PCI-Einrichtungen oder PCI-Einrichtungen anderer Versionen zu unterstützen. Endpunkt-Einrichtungen in PCIe werden häufig als übernommene Endpunkte, PCIe- oder integrierte Root-Complex-Endpunkte klassifiziert.
  • Der Beschleuniger 1230 ist ebenfalls über die serielle Verknüpfung 1232 mit dem Steuerungs-Hub 1215 gekoppelt. Bei einer Ausführungsform ist der Grafikbeschleuniger 1230 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 1220 und dementsprechend die E/A-Einrichtung 1225 sind dann mit dem ICH gekoppelt. Die E/A-Module 1231 und 1218 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 1230 und dem Steuerungs-Hub 1215 zu kommunizieren. Ähnlich wie bei der MCH-Erörterung weiter oben können eine Grafiksteuerung oder der Grafikbeschleuniger 1230 selbst in den Prozessor 1205 integriert sein.
  • Bei einigen Ausführungsformen kann der Beschleuniger 1230 ein Beschleuniger wie der Beschleuniger 740 aus 7 sein, der kohärenten Speicher mit dem Prozessor 1205 bereitstellt.
  • Um IAL über PCIe zu unterstützen kann der Steuerungs-Hub 1215 (oder eine andere PCIe-Steuerung) Erweiterungen des PCIe-Protokolls aufweisen, umfassend, als nicht einschränkendes Beispiel, eine Abbildungs-Engine 1240, eine Tunneling-Engine 1242, eine Host-Bias-zu-Geräte-Bias-Flip-Engine 1244 und eine QoS-Engine 1246.
  • Die Abbildungs-Engine 1240 kann ausgelegt sein zum Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und IAL.io-(IOSF)-Opcodes. IOSF stellt ein nicht kohärentes geordnetes semantischen Protokoll bereit und kann als nicht einschränkendes Beispiel Dienste bereitstellen wie Einrichtungserkennung, Einrichtungskonfiguration, Fehlermeldung, Interrupt-Bereitstellung, Interrupt-Handling und DMA-artige Datenübertragungen. Native PCIe kann entsprechende Anweisungen bereitstellen, sodass die Abbildung in einigen Fällen eine Eins-zu-Eins-Abbildung sein kann.
  • Die Tunneling-Engine 1242 stellt IAL.mem-(SMI)-Tunneling über PCIe bereit. Dieses Tunneln ermöglicht es dem Host (z. B. dem Prozessor), Beschleunigerspeicher in den Host-Speicheradressraum abzubilden und auf kohärente Weise in den bzw. aus dem Beschleunigerspeicher einzulesen und auszulesen. SMI ist eine transaktionale Speicherschnittstelle, die durch eine kohärente Engine auf dem Host verwendet werden kann, um IAL-Transaktionen über PCIe in einer kohärenten Weise zu tunneln. Beispiele modifizierter Paketstrukturen für derartiges Tunneln sind in 9-11 dargestellt. In einigen Fällen können spezielle Felder für dieses Tunneln innerhalb eines oder mehrerer DVSEC-Felder eines PCIe-Pakets zugeordnet werden.
  • Die Host-Bias-zu-Geräte-Bias-Flip-Engine 1244 stellt für die Beschleunigereinrichtung die Möglichkeit bereit, Host-Cache-Zeilen zu entleeren (erforderlich für Host-zu-Geräte-Bias-Flip). Dies kann unter Verwendung eines nicht zuordnenden Schreibvorgangs mit Nulllänge (d. h. eines Schreibvorgangs ohne gesetztes aktives Byte) von der Beschleunigereinrichtung auf dem PCIe an einer Cache-Zeilen-Granularität erfolgen. Nicht zuordnende Semantik kann beschrieben werden unter Verwendung von Transaktions- und Verarbeitungshinweisen an den Transaktionsschicht-Paketen (TLPs). Beispielsweise:
    • • TH = 1, PH = 01
  • Dies ermöglicht der Einrichtung das Ungültigmachen einer gegebenen Cache-Zeile, sodass ihr der Zugriff auf ihren eigenen Speicherraum ohne Verlust von Kohärenz ermöglicht wird. Die Einrichtung kann im Anschluss an die Bias-Umkehr einer Seite einen Lesevorgang ausgeben, um sicherzustellen, dass alle Zeilen entleert worden sind. Die Einrichtung kann auch einen CAM implementieren, um sicherzustellen, dass während der Ausführung einer Flip-Umkehr keine neuen Anforderungen an die Zeile vom Host empfangen werden.
  • Die QoS-Engine 1246 kann IAL-Verkehr in zwei oder mehr virtuelle Kanäle unterteilen, um die Verbindung zu optimieren. Beispielsweise könnte dies einen ersten virtuellen Kanal (VC0) für MMIO und Konfigurationsoperationen, einen zweiten virtuellen Kanal (VC1) für Host-zu-Gerät-Schreibvorgänge und einen dritten virtuellen Kanal (VC2) für Host-von-Gerät-Lesevorgänge umfassen.
  • 13 veranschaulicht ein Beispiel einer Ausführungsform eines geschichteten Protokollstapels gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Ein geschichteter Protokollstapel 1300 umfasst jegliche Form eines geschichteten Kommunikationsstapels, wie zum Beispiel einen „Quick Path Interconnect“ (QPI)-Stapel, einen PCIe-Stapel, einen Hochleistungs-Rechnerverbindungsstapel der nächsten Generation oder einen anderen Schichtstapel. Obwohl die Erörterung unmittelbar weitere unten unter Bezugnahme auf 12-15 in Bezug auf einen PCIe-Stapel präsentiert wird, sind die gleichen Konzepte auf andere Verbindungsstapel anwendbar. Bei einer Ausführungsform ist der Protokollstapel 1300 ein PCIe-Protokollstapel, der eine Transaktionsschicht 1305, eine Verknüpfungsschicht 1310 und eine physische Schicht 1320 aufweist.
  • Eine Schnittstelle, wie zum Beispiel die Schnittstellen 1217, 1218, 1221, 1222, 1226 und 1231 in 12, kann als Kommunikationsprotokollstapel 1300 dargestellt werden. Die Darstellung als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle bezeichnet werden, die einen Protokollstapel implementiert/aufweist.
  • PCIe verwendet Pakete, um Information zwischen Komponenten zu kommunizieren. Pakete werden in der Transaktionsschicht 1305 und der Datenverknüpfungsschicht 1310 gebildet, um die Information von der übertragenden Komponente zu der empfangenden Komponente zu tragen.
  • Wenn die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlicher Information erweitert, die notwendig ist, um Pakete auf diesen Schichten zu handhaben. Auf der empfangenden Seite tritt der umgekehrte Prozess auf, und Pakete werden von ihrer Darstellung der physischen Schicht 1320 in die Darstellung der Datenverknüpfungsschicht 1310 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 1305 der empfangenden Einrichtung verarbeitet werden kann.
  • Transaktionsschicht
  • Bei einer Ausführungsform soll die Transaktionsschicht 1305 eine Schnittstelle zwischen einem Verarbeitungskern einer Einrichtung und der Verbindungsarchitektur, wie zum Beispiel der Datenverknüpfungsschicht 1310 und der physischen Schicht 1320, bereitstellen. In diesem Hinblick sind eine Hauptzuständigkeit der Transaktionsschicht 1305 das Assemblieren und Zerlegen von Paketen (das heißt von Transaktionsschichtpaketen (TLPs)). Die Transaktionsschicht 1305 verwaltet typischerweise Credit-basierte Flusssteuerung für TLPs. Eine PCIe setzt Spalttransaktionen um, das heißt durch Zeit getrennte Transaktionen mit Anforderung und Antwort, was es einem Link erlaubt, anderen Verkehr zu tragen, während die Zieleinrichtung Daten für die Antwort sammelt.
  • Zusätzlich verwendet PCIe Credit-basierte Flusssteuerung. Bei diesem Schema kündigt ein Gerät eine anfängliche Credit-Menge für jeden der Empfangspuffer in der Transaktionsschicht 1305 an. Eine externe Einrichtung an dem entgegengesetzten Ende des Links, wie der Steuerungs-Hub 115 in 1, zählt die Anzahl von Credits, die von jedem TLP verbraucht werden. Eine Transaktion kann übertragen werden, falls die Transaktion ein Credit-Limit nicht überschreitet. Beim Empfangen einer Antwort wird ein Credit-Umfang wiederhergestellt. Ein Vorteil des Credit-Systems ist, dass sich die Latenz der Credit-Rückkehr nicht auf die Leistung auswirkt, vorausgesetzt, dass das Credit-Limit nicht erreicht wird.
  • Bei einer Ausführungsform weisen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabe-Adressraum und einen Nachrichtadressraum auf. Speicherraumtransaktionen weisen eine oder mehrere Leseanforderungen und Schreibanforderungen zum Übertragen von Daten zu/von einer im Speicher abgebildeten Position auf. Bei einer Ausführungsform sind Speicherraumtransaktionen zum Verwenden von zwei unterschiedlichen Adressformaten geeignet, zum Beispiel eines kurzen Adressformats, wie zum Beispiel einer 32-Bit-Adresse, oder eines langen Adressformats, wie zum Beispiel einer 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf Konfigurationsraum der PCIe-Einrichtungen zuzugreifen. Transaktionen zu dem Konfigurationsraum weisen Leseanforderungen und Schreibanforderungen auf. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind dazu definiert, die In-Band-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Deshalb setzt die Transaktionsschicht 1305 bei einer Ausführungsform Paketkopfzeile/Nutzlast 1306 zusammen. Das Format für aktuelle Paketkopfzeilen/Nutzdaten findet sich in der PCIe-Spezifikation auf der PCIe-Spezifikations-Website.
  • 14 veranschaulicht eine Ausführungsform eines PCIe-Transaktionsdeskriptors gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Bei einer Ausführungsform ist der Transaktionsdeskriptor 1400 ein Mechanismus zum Tragen von Transaktionsinformation. In diesem Hinblick unterstützt der Transaktionsdeskriptor 1400 die Identifikation von Transaktionen in einem System. Andere potenzielle Nutzungen weisen das Überwachen von Änderungen von Standard-Transaktionssortierung und Assoziationen von Transaktionen mit Kanälen auf.
  • Der Transaktionsdeskriptor 1400 weist ein globales Kennungsfeld 1402, ein Attributefeld 1404 und ein Kanalkennungsfeld 1406 auf. Bei dem veranschaulichten Beispiel ist ein globales Kennungsfeld 1402 abgebildet, das ein lokales Transaktionskennungsfeld 1408 und ein Quell-Kennungsfeld 1410. Bei einer Ausführungsform ist die globale Transaktionskennung 1402 für alle ausstehenden Anfragen dieselbe.
  • Gemäß einer Umsetzung ist das lokale Transaktionskennungsfeld 1408 ein Feld, das von einem anfragenden Agenten erzeugt wird, und es steht für alle ausstehenden Anfragen, die einen Abschluss für diesen anfragenden Agenten erfordern. Des Weiteren identifiziert bei diesem Beispiel die Quellkennung 1410 den anfragenden Agenten innerhalb einer PCIe-Hierarchie eindeutig. Gemeinsam mit der Quell-ID 1410 stellt das lokale Transaktionskennungsfeld 1408 folglich globale Identifizierung einer Transaktion innerhalb einer Hierarchie-Domäne bereit.
  • Das Attributfeld 1404 spezifiziert Charakteristiken und Beziehungen der Transaktion. In diesem Hinblick wird das Attributefeld 1404 potenziell verwendet, um zusätzliche Information bereitzustellen, die eine Änderung der Standardverarbeitung von Transaktionen erlaubt. Bei einer Ausführungsform weist das Attributefeld 1404 ein Prioritätsfeld 1412, ein reserviertes Feld 1414, ein Sortierfeld 1416 und ein No-Snoop-Feld 1418 auf. Hier kann das Prioritätsunterfeld 1412 durch einen Initiator geändert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 1414 ist für zukünftige oder herstellerdefinierte Verwendung reserviert. Mögliche Nutzungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • Bei diesem Beispiel wird das Sortier-Attributfeld 1416 verwendet, um optionale Information zu liefern, die den Sortiertyp vermittelt, der Standard-Sortierregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Sortierattribut „0“, dass Standard-Sortierregeln anzuwenden sind, wobei ein Sortierattribut „1“ gelockertes Sortieren bezeichnet, wobei Schreibvorgänge Schreibvorgänge in dieselbe Richtung weitergeben können und Leseabschlüsse Schreibvorgänge in dieselbe Richtung weitergeben können. Das Snoop-Attributfeld 1418 wird eingesetzt, um zu bestimmen, ob Transaktionen gesnoopt werden. Entsprechend der Darstellung identifiziert das Kanal-ID-Feld 1406 einen Kanal, mit dem eine Transaktion zusammenhängt.
  • Übertragungsschicht
  • Eine Übertragungsschicht 1310, auch als Datenübertragungsschicht 1310 bezeichnet, wirkt als Zwischenstufe zwischen der Transaktionsschicht 1305 und der physischen Schicht 1320. Bei einer Ausführungsform ist eine Zuständigkeit der Datenübertragungsschicht 1310 das Bereitstellen eines zuverlässigen Mechanismus zum Austauschen von TLPs zwischen zwei verknüpften Komponenten. Eine Seite der Datenübertragungsschicht 1310 akzeptiert TLPs, die von der Transaktionsschicht 1305 assembliert werden, wendet eine Paketsequenzkennung 1311 an, das heißt, eine Identifizierungsnummer oder Paketnummer, berechnet einen Fehlererfassungscode und wendet ihn an, das heißt CRC 1312, und legt die modifizierten TLPs der physischen Schicht 1320 für Übertragung über ein physisches zu einer externen Einrichtung vor.
  • Physische Schicht
  • Bei einer Ausführungsform weist die Bitübertragungsschicht 1320 einen logischen Unterblock 1321 und einen elektrischen Unterblock 1322 auf, um ein Paket physisch zu einer externen Einrichtung zu übertragen. Hier ist der logische Unterblock 1321 für die „digitalen“ Funktionen der physikalischen Schicht 1321 zuständig. In diesem Hinblick weist ein logischer Unterblock einen Übertragungsabschnitt auf, um ausgehende Information zur Übertragung durch den physischen Unterblock 1322 vorzubereiten, und einen Empfängerabschnitt, um empfangene Information zu identifizieren und vorzubereiten, bevor sie zur Übertragungsschicht 1310 weitergegeben wird.
  • Der physikalische Block 1322 weist einen Sender und einen Empfänger auf. Der Sender wird durch den logischen Unterblock 1321 mit Symbolen beliefert, die der Sender serialisiert und an ein externes Gerät überträgt. Der Empfänger wird mit serialisierten Symbolen von einer externen Einrichtung versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird de-serialisiert und zum logischen Unterblock 1321 geliefert. Bei einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, bei dem Zehn-Bit-Symbole übertragen/empfangen werden. Hier werden spezielle Symbole für das Framing eines Pakets mit Frames 1323 verwendet. Zusätzlich stellt der Empfänger bei einem Beispiel auch einen Symboltaktgeber bereit, der aus dem eingehenden seriellen Strom zurückgewonnen wird.
  • Wie weiter oben angegeben, ist ein geschichteter Protokollstapel nicht diesbezüglich eingeschränkt, obwohl die Transaktionsschicht 1305, die Verbindungsschicht 1310 und die physikalische Schicht 1320 mit Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden. Tatsächlich kann jedes geschichtete Protokoll umfasst/implementiert sein. Als ein Beispiel umfasst ein Port/eine Schnittstelle, der/die als ein geschichtetes Protokoll dargestellt ist: (1) eine erste Schicht, um Pakete zusammenzusetzen, das heißt, eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, das heißt eine Verbindungsschicht; und eine dritte Schicht, um Pakete zu übertragen, das heißt eine physikalische Schicht. Als ein spezifisches Beispiel wird ein geschichtetes „Common Standard Interface“ (CSI)-Protokoll verwendet.
  • 15 veranschaulicht eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Struktur gemäß einem oder mehreren Beispielen der vorliegenden Spezifikation. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verknüpfung veranschaulicht wird, ist eine serielle Punkt-zu-Punkt-Verknüpfung nicht diesbezüglich eingeschränkt, da sie jeglichen Übertragungspfad zum Übertragen serieller Daten umfasst. Bei einer Ausführungsform weist eine grundlegende PCIe-Verbindung zwei differenziell angesteuerte Niederspannungs-Signalpaare auf: ein Übertragungspaar 1506/1511 und ein Empfangspaar 1512/1507. Die Einrichtung 1505 weist folglich Übertragungslogik 1506 auf, um Daten zu einer Einrichtung 1510 zu übertragen, und Empfangslogik 1507, um Daten von der Einrichtung 1510 zu empfangen. Mit anderen Worten sind zwei Übertragungspfade, das heißt Pfade 1516 und 1517, und zwei Empfangspfade, das heißt Pfade 1518 und 1519, von einer PCIe-Verknüpfung umfasst.
  • Ein Übertragungspfad verweist auf einen beliebigen Pfad zum Übertragen von Daten, wie eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverknüpfung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Bauteilen, wie dem Bauteil 1505 und dem Bauteil 1510, wird als Link, wie z. B. der Link 1515, bezeichnet. Ein Link kann eine Bahn unterstützen, wobei jede Bahn einen Satz von Differenzialsignalpaaren (ein Paar zur Übertragung, ein Paar zum Empfang) darstellt. Zum Skalieren der Bandbreite kann ein Link mehrere Bahnen aggregieren, die als xN bezeichnet sind, wobei N eine beliebige unterstützte Link-Breite ist, wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein Differenzialpaar bezieht sich auf zwei Übertragungspfade, wie Leitungen 1516 und 1517, um differenzielle Signale zu übertragen. Zum Beispiel steuert die Leitung 1517, wenn die Leitung 1516 von einem Niederspannungspegel zu einem Hochspannungspegel übergeht, das heißt, bei einer ansteigenden Flanke, von einem hohen Logikpegel zu einem niedrigen Logikpegel, das heißt bei einer abfallenden Flanke. Differentialsignale weisen potenziell bessere elektrische Eigenschaften auf, wie zum Beispiel bessere Signalintegrität, das heißt Kreuzkopplung, Spannungs-Überschwingen/-Unterschwingen, Schallen, usw. Dies erlaubt ein besseres Zeitfenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • Die vorstehenden Angaben umreißen Merkmale von einer oder mehreren Ausführungsformen des hier offenbarten Gegenstands. Dieser Ausführungsformen werden bereitgestellt, um Fachleute mit üblichem Kenntnisstand auf diesem Gebiet (PHOSITA, vom Englischen ‚person having ordinary skill in the art‘) in die Lage zu versetzen, verschiedene Aspekte der vorliegenden Offenbarung besser zu verstehen. Bestimmte allgemeinverständliche Begriffe sowie zugrunde liegende Technologien und/oder Standards können ohne detaillierte Beschreibung angegeben sein. Es wird vorausgeschickt, dass ein PHOSITA in diesen Technologien und Standards über ausreichendes Hintergrundwissen verfügt oder darauf zugreift, um die Lehren der vorliegenden Spezifikation umzusetzen.
  • Ein PHOSITA erkennt, dass Fachleute die vorliegende Offenbarung leicht als Basis für die Konzipierung oder Abänderung anderer Prozesse, Strukturen oder Variationen zur Ausführung der gleichen Zwecke und/oder zum Erzielen der gleichen Vorteile der hier eingeführten Ausführungsformen verwenden können. Ein PHOSITA erkennt ebenfalls, dass derartige gleichwertige Konstruktionen nicht vom Grundgedanken und Umfang der vorliegenden Offenbarung abweichen und dass Fachleute verschiedene Änderungen, Substitutionen und Abänderungen daran vornehmen können, ohne vom Grundgedanken und Umfang der vorliegenden Offenbarung abzuweichen.
  • In der vorstehenden Beschreibung sind bestimmte Aspekte von einigen oder allen Ausführungsformen detaillierter beschrieben als dies zur Umsetzung der beigefügten Ansprüche unbedingt erforderlich wäre. Diese Details sind lediglich als nicht einschränkendes Beispiel bereitgestellt zum Zweck der Bereitstellung von Kontext und zur Veranschaulichung der offenbarten Ausführungsformen. Derartige Details sollen nicht als erforderlich ausgelegt werden, und sie sollen nicht als Einschränkungen in die Ansprüche „interpretiert“ werden. Der Wortlaut kann sich auf „eine Ausführungsform“ oder „Ausführungsformen“ beziehen. Diese Formulierungen und alle anderen Bezüge auf Ausführungsformen sind in weitem Umfang zu verstehen als Bezug auf eine beliebige Kombination von einer oder mehreren Ausführungsformen. Ferner lassen sich die mehreren in einer bestimmten „Ausführungsform“ offenbarten Merkmale ebenso gut über mehrere Ausführungsformen verteilen. Falls beispielsweise die Merkmale 1 und 2 in „einer Ausführungsform“ offenbart sind, kann die Ausführungsform A ein Merkmal 1 aufweisen, wobei aber das Merkmal 2 fehlt, während die Ausführungsform B das Merkmal 2 aufweisen kann, während das Merkmal 1 fehlt.
  • Diese Spezifikation kann Darstellungen im Blockdiagramm-Format bereitstellen, wobei bestimmte Merkmale in separaten Blöcken offenbart sind. Diese sind weitgehend so zu verstehen, dass offenbart wird, wie verschiedene Merkmale zusammenwirken, sie sollen aber nicht implizieren, dass die betreffenden Merkmale notwendigerweise in getrennter Hardware oder Software ausgeführt sein müssen. Wenn ferner ein einzelner Block mehr als ein Merkmal im gleichen Block offenbart, müssen die betreffenden Merkmale nicht notwendigerweise in der gleichen Hardware und/oder Software ausgeführt sein. Beispielsweise könnte ein Rechner-„Speicher“ unter bestimmten Umständen zwischen mehreren Ebenen von Cache oder lokalem Speicher, Hauptspeicher, batteriegestütztem flüchtigen Speicher und verschiedenen Formen von persistentem Speicher wie einer Festplatte, einem Speicherserver, einer optischen Disk, einem Bandlaufwerk oder dergleichen verteilt oder abgebildet sein. Bei bestimmten Ausführungsformen können einige der Komponenten ausgelassen oder konsolidiert sein. In einem allgemeinen Zusammenhang können die in den Figuren dargestellten Anordnungen in ihren Wiedergaben logischer sein, während eine physische Architektur verschiedene Permutationen, Kombinationen und/oder Hybridformen dieser Elemente aufweisen kann. Zahllose mögliche Designkonfigurationen können verwendet werden, um die hier umrissenen operativen Ziele zu erreichen. Dementsprechend weist die assoziierte Infrastruktur eine Vielzahl von Ersatzanordnungen, Konzept-Auswahlmöglichkeiten, Gerätemöglichkeiten, Hardwarekonfigurationen, Software-Implementierungen und Equipment-Optionen auf.
  • Es kann hier auf ein rechnerlesbares Medium verwiesen werden, das ein materielles und nicht vorübergehendes rechnerlesbares Medium ist. Entsprechend der Verwendung in dieser Spezifikation und in den Ansprüchen soll ein „rechnerlesbares Medium“ so verstanden werden, dass es eine oder mehrere rechnerlesbare Medien des gleichen Typs oder unterschiedlicher Typen umfasst. Ein rechnerlesbares Medium kann als nicht einschränkendes Beispiel ein optisches Laufwerk (z. B. CD/DVD/Blu-Ray), ein Festplattenlaufwerk, ein Solid-State-Laufwerk, einen Flash-Speicher oder ein anderes nichtflüchtiges Medium aufweisen. Ein rechnerlesbares Medium könnte auch ein Medium aufweisen wie einen Nur-Lese-Speicher (ROM), eine FPGA oder einen ASIC, ausgelegt zum Ausführen der gewünschten Anweisungen, gespeicherte Anweisungen zum Programmieren einer FPGA oder eines ASIC zum Ausführen der gewünschten Anweisungen, einen IP-Block für geistiges Eigentum, der in Hardware in anderen Schaltkreisen integriert sein kann, oder Anweisungen, die direkt in Hardware oder Mikrocode auf einem Prozessor codiert sein können, wie z. B. einem Mikroprozessor, einem digitalen Signalprozessor (DSP), einer Mikrosteuerung oder in einer beliebigen anderen geeigneten Komponente, Einrichtung, einem Element oder Objekt, sofern dies zweckmäßig ist und auf besonderen Erfordernissen basiert. Ein nicht vorübergehendes Speichermedium soll hier ausdrücklich beliebige nicht vorübergehende, für besondere Zwecke vorgesehene oder programmierbare Hardware umfassen, ausgelegt zum Bereitstellen der offenbarten Operationen oder zum Veranlassen eines Prozessors zum Durchführen der offenbarten Operationen.
  • Verschiedene Elemente können im Verlauf dieser Spezifikation und der Ansprüche „kommunikativ“, „elektrisch“, „mechanisch“ oder sonst wie miteinander „gekoppelt“ sein. Eine derartige Kopplung kann eine direkte Punkt-zu-Punkt-Kopplung sein, oder sie kann zwischengeschaltete Einrichtungen aufweisen. Beispielsweise können zwei Einrichtungen über eine Steuerung, die die Kommunikation ermöglicht, miteinander kommunikativ gekoppelt sein. Geräte können über zwischengeschaltete Einrichtungen wie Signalverstärker, Spannungsteiler oder Puffer miteinander elektrisch gekoppelt sein. Mechanisch gekoppelte Einrichtungen können indirekt mechanisch gekoppelt sein.
  • Beliebige hier offenbarte „Modul“ oder „Engines“ können sich auf Software, einen Softwarestapel, eine Kombination aus Hardware, Firmware und/oder Software, einen zum Ausführen der Funktion der Engine oder des Moduls ausgelegten Schaltkreis oder beliebige hier offenbarte rechnerlesbare Medien beziehen. Derartige Module oder Engines können in geeigneten Umständen auf oder in Verbindung mit einer Hardwareplattform bereitgestellt sein, die Hardware-Rechenressourcen aufweist, wie z. B. einen Prozessor, Speicher, Speichermedien, Verbindungen, Netzwerke und Netzwerkschnittstellen, Beschleuniger oder sonstige geeignete Hardware. Eine derartige Hardwareplattform kann bereitgestellt sein als einzelne monolithische Einrichtung (z. B. in einem PC-Formfaktor) oder mit einem Teil der Funktion, die verteilt wird (z. B. einem „Composite-Node“ in einem Hochleistungsdatenzentrum, wo Rechen-, Speicher-, Speichermedien- und andere Ressourcen dynamisch zugeordnet sein können und zueinander nicht lokal sein müssen).
  • Es können hier Ablaufdiagramme, Signalflussdiagramme oder andere Darstellungen offenbart sein, die Operationen zeigen, die in einer bestimmten Reihenfolge ausgeführt werden. Sofern nicht ausdrücklich anders angegeben oder in einem bestimmten Kontext erforderlich, ist die Reihenfolge nur als nicht einschränkendes Beispiel zu verstehen. Ferner können in Fällen, wo eine Operation so gezeigt ist, dass sie auf eine andere folgt, andere eingreifende Operationen ebenfalls auftreten, die damit in Zusammenhang stehen können oder nicht. Einige Operationen können auch gleichzeitig oder parallel durchgeführt werden. In Fällen, wobei einer Operation angegeben ist, dass sie „basiert auf“ einem anderen Detail oder einer Operation oder diesen „entspricht“, ist dies so zu verstehen, dass impliziert wird, dass die Operation zumindest teilweise auf dem anderen Detail oder der anderen Operation basiert oder diesen zumindest teilweise entspricht. Dies soll nicht so ausgelegt werden, dass es impliziert, dass die Operation nur oder ausschließlich auf dem Detail oder der Operation basiert oder diesen nur oder ausschließlich entspricht.
  • Die Gesamtheit oder ein Teil von beliebigen hier offenbarten Hardware-Elementen können leicht in einem System-auf-einem-Chip (SoC) bereitgestellt sein, umfassend auch ein Paket einer zentralen Verarbeitungseinheit (CPU). Ein SoC stellt einen integrierten Schaltkreis (IC) dar, der Komponenten eines Rechners oder eines anderen elektronischen Systems in einem einzelnen Chip integriert. Somit können beispielsweise Client-Einrichtungen oder Server-Einrichtungen ganz oder teilweise in einem SoC bereitgestellt sein. Das SoC kann digitale, analoge, Mischsignal- und Hochfrequenz-Funktionen enthalten, die sämtlich auf einem einzelnen Chipsubstrat bereitgestellt sein können. Andere Ausführungsformen können ein Multi-Chip-Modul (MCM) aufweisen, wobei eine Mehrzahl von Chips in einem einzelnen elektronischen Paket positioniert ist und ausgelegt ist zum engen Zusammenwirken miteinander durch das elektronische Paket.
  • In einem allgemeinen Zusammenhang kann ein beliebiger in geeigneter Weise ausgelegter Schaltkreis oder Prozessor beliebige Typen von Anweisungen ausführen, die mit den Daten zum Erzielen der hier aufgeführten Operationen assoziiert sind. Jeder hier offenbarte Prozessor könnte ein Element oder einen Gegenstand (zum Beispiel Daten) von einem Zustand oder Ding zu einem anderen Zustand oder Ding umwandeln. Weiter könnte die nach verfolgte, gesendete, empfangene oder in einem Prozessor gespeicherte Information in beliebigen Datenbanken, Registern, Tabellen, Caches, Warteschlangen, Steuerlisten oder Speicherstrukturen basierend auf besonderen Anforderungen und Implementierungen bereitgestellt sein, wobei auf alle davon in einem beliebigen geeigneten Zeitrahmen verwiesen werden kann. Beliebige der hier offenbarten Speicher- oder Speichermedien Elemente sollen so ausgelegt werden, dass sie in den weitläufigen Begriffen „Speicher“ und „Speichermedium“, sofern zutreffend, umfasst sind.
  • Rechnerprogramm-Logik, die die gesamte hier beschriebene Funktionalität oder einen Teil davon implementiert, ist in verschiedenen Formen ausgeführt, aufweisend, jedoch ohne diesbezügliche Einschränkung, eine Quellcode-Form, eine rechnerausführbare Form, Maschinenanweisungen oder Mikrocode, programmierbare Hardware und verschiedene Zwischenformen (beispielsweise durch einen SM la, Compiler, Linker oder Locator erzeugte Formen). Bei einem Beispiel umfasst Quellcode eine Reihe von Rechner Programmanweisungen, implementiert in verschiedenen Programmiersprachen, wie einen Objektcode, eine Assembler-Sprache oder eine Sprache höherer Ebene wie OpenCL, FORTRAN, C, C++, JAVA oder HTML zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardware-Beschreibungssprachen wie Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer rechnerausführbaren Form sein (z. B. über einen Interpreter), oder der Quellcode kann (z. B. über einen Übersetzer, Assembler oder Compiler) in eine rechnerausführbare Form umgewandelt werden oder in eine Zwischenform wie Byte-Code umgewandelt werden. Sofern zweckmäßig, können beliebige vorstehende Angaben verwendet werden, um geeignete diskrete oder integrierte Schaltkreise zu errichten oder zu beschreiben, seien sie sequenziell, kombinatorisch, Zustandsmaschinen oder Sonstiges.
  • Bei einer beispielhaften Ausführungsform kann eine beliebige Anzahl von elektrischen Schaltkreisen der FIGUREN auf einer Platine einer assoziierten elektronischen Einrichtung implementiert sein. Die Platine kann eine allgemeine Leiterplatte sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Einrichtung aufnimmt und ferner Anschlüsse für weitere Peripherie bereitstellt. Beliebige geeignete Prozessoren und Speicher können in geeigneter Weise basierend auf besonderen Konfigurationsanforderungen, Verarbeitungsbedürfnissen und Rechenkonzepten mit der Platine gekoppelt werden. Man beachte, dass bei den zahlreichen hier bereitgestellten Beispielen Interaktion anhand von zwei, drei, vier oder mehr elektrischen Komponenten beschrieben sein kann. Dies erfolgt jedoch lediglich zum Zweck der Klarheit und als Beispiel. Es versteht sich, dass das System in beliebiger geeigneter Weise konsolidiert oder neu ausgelegt werden kann. Neben ähnlichen Konzeptalternativen können beliebige der dargestellten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Konfigurationen kombiniert werden, die sämtlich innerhalb des weitläufigen Umfangs dieser Spezifikation liegen.
  • Zahlreiche andere Änderungen, Substitutionen, Variationen, Abänderungen und Modifikationen sind für Fachleute auf diesem Gebiet feststellbar, und es ist beabsichtigt, dass die vorliegende Offenbarung alle derartigen Änderungen, Substitutionen, Variationen, Abänderungen und Modifikationen umfasst, die in den Schutzumfang der beigefügten Ansprüche fallen. Um das United States Patent and Trademark Office (USPTO) und zusätzlich eventuelle Leser von beliebigen aufgrund dieser Anmeldung erteilten Patenten bei der Interpretation der hier beigefügten Ansprüche zu unterstützen, möchte der Antragsteller anmerken, dass der Antragsteller (a) nicht beabsichtigt, dass sich beliebige der beigefügten Ansprüche auf Absatz sechs (6) von 35 U.S.C. Section 112 (prä-AIA) oder Absatz (f) der gleichen Section (post-AIA) in der Fassung zum Datum dieser Einreichung berufen, sofern die Worte „Mittel zum“ oder „Schritt zum“ spezifisch in den bestimmten Ansprüchen verwendet werden; und (b) nicht beabsichtigt, diese Offenbarung durch beliebige Aussagen in der Spezifikation auf eine Weise einzuschränken, die ansonsten nicht in den beigefügten Ansprüchen wiedergegeben ist.
  • Beispiel-Implementierungen
  • In einem Beispiel ist eine „Peripheral Component Interconnect Express“ (PCIe)-Steuerung offenbarte zum Bereitstellen kohärente Speicherabbildung zwischen einem Beschleunigerspeicher und einem Host-Speicheradressraum, umfassend: einen PCIe-Steuerungs-Hub umfassend Erweiterungen zum Bereitstellen einer kohärenten Beschleunigerverbindung (CAI) zum Bereitstellen von Bias-basierter Kohärenzverfolgung zwischen dem Beschleunigerspeicher und dem Host-Adressspeicherraum; wobei die Erweiterungen umfassen: eine Abbildungs-Engine zum Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und „On-Chip System Fabric“ (OSF)-Anweisungen für die CAI; und eine Tunneling-Engine zum Bereitstellen von „Scalable Memory Interconnect“ (SMI)-Tunneln von Host-Speicheroperationen zum Beschleunigerspeicher über die CAI.
  • Ferner offenbart ist ein Beispiel, wobei die Opcode-Abbildung eine Eins-zu-Eins-Abbildung ist.
  • Ferner offenbart ist ein Beispiel, wobei die CAI eine mit „Intel® Accelerator Link“ (IAL) übereinstimmende Verbindung ist.
  • Ferner offenbart ist ein Beispiel, wobei die OSF-Anweisungen Anweisungen umfassen zum Durchführen einer Operation, ausgewählt aus der Gruppe bestehend aus Geräteerkennung, Gerätekonfiguration, Fehlermeldung, Interrupt-Bereitstellung, Interrupt-Handling und Datenübertragungen nach Art des direkten Speicherzugriffs (DMA).
  • Ferner offenbart ist ein Beispiel, das ferner eine Host-Bias-zu-Geräte-Bias-(HBDB)-Flip-Engine umfasst, um es dem Beschleuniger zu ermöglichen, eine Host-Cache-Zeile zu entleeren.
  • Ferner offenbart ist ein Beispiel, wobei die HBDB-Flip-Engine einen Transaktionsschichtpaket-(TLP)-Hinweis umfassend TH=1, PH=01 bereitstellen soll.
  • Ferner offenbart ist ein Beispiel, das ferner eine QoS-Engine umfasst, umfassend eine Mehrzahl von virtuellen Kanälen.
  • Ferner offenbart ist ein Beispiel, wobei die virtuellen Kanäle einen VC0 umfassen für „Memory Mapped Input/Output“ (MMIO) und Konfigurationsverkehr, einen VC1 für Host-zu-Beschleuniger-Schreibvorgänge und einen VC2 für Host-von-Beschleuniger-Lesevorgänge.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Opcodes für „Non-Posted“ Schreibvorgänge (NP Wr).
  • Ferner offenbart ist ein Beispiel, wobei der „NP Wr“-Opcode reservierte PCIe-Felder Fmt[2:0]=011b und Type[4:0]=1101b aufweist.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für Lesevorgänge unter PCIe, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für Schreibvorgänge unter PCIe, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für einen Leseabschluss mit Daten unter PCIe, umfassend einen 3-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 4-Bit-PCLS und einen 7-Bit-PRE.
  • Werner offenbart ist ein Beispiel einer Verbindung umfassend die PCIe-Steuerung.
  • Ferner offenbart ist ein Beispiel eines Systems umfassend die Verbindung.
  • Ferner offenbart ist ein Beispiel des Systems, umfassend ein System-auf-einem-Chip.
  • Ferner offenbart ist ein Beispiel des Systems, umfassend ein Multi-Chip-Modul.
  • Ferner offenbart ist ein Beispiel des Systems, wobei der Beschleuniger ein softwareunterstützter Gerätespeicher ist.
  • Ferner offenbart ist ein Beispiel des Systems, wobei der Beschleuniger ein autonomer Gerätespeicher ist.
  • Ferner offenbart ist ein Beispiel von einem oder mehreren materiellen, nicht vorübergehenden rechnerlesbaren Medien, auf denen Anweisungen gespeichert sind zum Bereitstellen einer „Peripheral Component Interconnect Express“ (PCIe)-Steuerung auf einer Host-Plattform zum Bereitstellen kohärente Speicherabbildung zwischen einem Beschleunigerspeicher und einem Host-Speicheradressraum, umfassend Anweisungen zum Bereitstellen eines PCIe-Steuerungs-Hubs umfassend Erweiterungen zum Bereitstellen einer kohärenten Beschleunigerverbindung (CAI) zum Bereitstellen von Bias-basierter Kohärenzverfolgung zwischen dem Beschleunigerspeicher und dem Host-Adressspeicherraum; wobei die Erweiterungen umfassen: eine Abbildungs-Engine zum Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und „On-Chip System Fabric“ (OSF)-Anweisungen für die CAI; und eine Tunneling-Engine zum Bereitstellen von „Scalable Memory Interconnect“ (SMI)-Tunneln von Host-Speicheroperationen zum Beschleunigerspeicher über die CAI.
  • Ferner offenbart ist ein Beispiel, wobei die Opcode-Abbildung eine Eins-zu-Eins-Abbildung ist.
  • Ferner offenbart ist ein Beispiel, wobei die CAI eine mit „Intel® Accelerator Link“ (IAL) übereinstimmende Verbindung ist.
  • Ferner offenbart ist ein Beispiel, wobei die OSF-Anweisungen Anweisungen umfassen zum Durchführen einer Operation, ausgewählt aus der Gruppe bestehend aus Geräteerkennung, Gerätekonfiguration, Fehlermeldung, Interrupt-Bereitstellung, Interrupt-Handling und Datenübertragungen nach Art des direkten Speicherzugriffs (DMA).
  • Ferner offenbart ist ein Beispiel, wobei die Anweisungen weiter eine Host-Bias-zu-Geräte-Bias-(HBDB)-Flip-Engine bereitstellen sollen, um es dem Beschleuniger zu ermöglichen, eine Host-Cache-Zeile zu entleeren.
  • Ferner offenbart ist ein Beispiel, wobei die HBDB-Flip-Engine einen Transaktionsschichtpaket-(TLP)-Hinweis umfassend TH=1, PH=01 bereitstellen soll.
  • Ferner offenbart ist ein Beispiel, das ferner eine QoS-Engine umfasst, umfassend eine Mehrzahl von virtuellen Kanälen.
  • Ferner offenbart ist ein Beispiel, wobei die virtuellen Kanäle einen VC0 umfassen für „Memory Mapped Input/Output“ (MMIO) und Konfigurationsverkehr, einen VC1 für Host-zu-Beschleuniger-Schreibvorgänge und einen VC2 für Host-von-Beschleuniger-Lesevorgänge.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Opcodes für „Non-Posted“ Schreibvorgänge (NP Wr).
  • Ferner offenbart ist ein Beispiel, wobei der „NP Wr“-Opcode reservierte PCIe-Felder Fmt[2:0]=011b und Type[4:0]=1101b aufweist.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für Lesevorgänge unter PCIe, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für Schreibvorgänge unter PCIe, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  • Ferner offenbart ist ein Beispiel, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für einen Leseabschluss mit Daten unter PCIe, umfassend einen 3-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 4-Bit-PCLS und einen 7-Bit-PRE.
  • Ferner offenbart ist ein Beispiel eines rechnerimplementierten Verfahrens zum Bereitstellen einer „Peripheral Component Interconnect Express“ (PCIe)-Steuerung auf einer Host-Plattform zum Bereitstellen kohärente Speicherabbildung zwischen einem Beschleunigerspeicher und einem Host-Speicheradressraum, umfassend: Bereitstellen von PCIe-Steuerungs-Hub-Diensten; Bereitstellen von Erweiterungen des PCIe-Steuerungs-Hubs zum Bereitstellen einer kohärenten Beschleunigerverbindung (CAI) zum Bereitstellen von Bias-basierter Kohärenzverfolgung zwischen dem Beschleunigerspeicher und dem Host-Adressspeicherraum; wobei die Bereitstellung von Erweiterungen umfasst: Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und „On-Chip System Fabric“ (OSF)-Anweisungen für die CAI; und Bereitstellen von „Scalable Memory Interconnect“ (SMI)-Tunneln von Host-Speicheroperationen zum Beschleunigerspeicher über die CAI.
  • Ferner offenbart ist ein Beispiel, wobei die Opcode-Abbildung eine Eins-zu-Eins-Abbildung ist.
  • Ferner offenbart ist ein Beispiel, wobei die CAI eine mit „Intel® Accelerator Link“ (IAL) übereinstimmende Verbindung ist.
  • Ferner offenbart ist ein Beispiel, wobei die OSF-Anweisungen Anweisungen umfassen zum Durchführen einer Operation, ausgewählt aus der Gruppe bestehend aus Geräteerkennung, Gerätekonfiguration, Fehlermeldung, Interrupt-Bereitstellung, Interrupt-Handling und Datenübertragungen nach Art des direkten Speicherzugriffs (DMA).
  • Ferner offenbart ist ein Beispiel, das ferner das Bereitstellen von Host-Bias-zu-Geräte-Bias-(HBDB)-Flip-Diensten umfasst, um es dem Beschleuniger zu ermöglichen, eine Host-Cache-Zeile zu entleeren.
  • Ferner offenbart ist ein Beispiel, wobei die Bereitstellung von HBDB-Flip-Diensten das Bereitstellen eines Transaktionsschichtpaket-(TLP)-Hinweises umfassend TH=1, PH=01 umfasst.
  • Ferner offenbart ist ein Beispiel, das ferner das Bereitstellen von QoS-Diensten umfasst, umfassend eine Mehrzahl von virtuellen Kanälen.
  • Ferner offenbart ist ein Beispiel, wobei die virtuellen Kanäle einen VC0 umfassen für „Memory Mapped Input/Output“ (MMIO) und Konfigurationsverkehr, einen VC1 für Host-zu-Beschleuniger-Schreibvorgänge und einen VC2 für Host-von-Beschleuniger-Lesevorgänge.
  • Ferner offenbart ist ein Beispiel, wobei die Bereitstellung von Erweiterungen das Bereitstellen eines Opcodes für „Non-Posted“ Schreibvorgänge (NP Wr) umfasst.
  • Ferner offenbart ist ein Beispiel, wobei der „NP Wr“-Opcode reservierte PCIe-Felder Fmt[2:0]=011b und Type[4:0]=1101b aufweist.
  • Ferner offenbart ist ein Beispiel, wobei das Bereitstellen der Erweiterungen das Bereitstellen eines Paketformats für Lesevorgänge unter PCIe umfasst, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  • Ferner offenbart ist ein Beispiel, wobei das Bereitstellen der Erweiterungen das Bereitstellen eines Paketformats für Schreibvorgänge unter PCIe umfasst, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  • Ferner offenbart ist ein Beispiel, wobei das Bereitstellen der Erweiterungen das Bereitstellen eines Paketformats für einen Leseabschluss mit Daten unter PCIe umfasst, umfassend einen 3-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 4-Bit-PCLS und einen 7-Bit-PRE.
  • Ferner offenbart ist ein Beispiel einer Vorrichtung, umfassend Mittel zum Durchführen des Verfahrens.
  • Ferner offenbart ist ein Beispiel, wobei die Mittel zum Durchführen des Verfahrens einen Prozessor und einen Speicher umfassen.
  • Ferner offenbart ist ein Beispiel, wobei der Speicher maschinenlesbare Anweisungen umfasst, die bei der Ausführung die Vorrichtung veranlassen, das Verfahren durchzuführen.
  • Ferner offenbart ist ein Beispiel, wobei die Vorrichtung ein Rechensystem ist.
  • Ferner offenbart ist ein Beispiel von mindestens einem rechnerlesbaren Medium, umfassend Anweisungen, die bei der Ausführung entsprechend der Beschreibung in den vorstehenden Beispielen ein Verfahren implementieren oder eine Vorrichtung erstellen.

Claims (26)

  1. Beansprucht wird:
  2. „Peripheral Component Interconnect Express“ (PCIe)-Steuerung zum Bereitstellen von kohärenter Speicherabbildung zwischen einem Beschleunigerspeicher und einem Host-Speicheradressraum, umfassend: einen PCIe-Steuerungs-Hub, umfassend Erweiterungen zum Bereitstellen einer kohärenten Beschleunigerverbindung (CAI) zum Bereitstellen von Bias-basierter Kohärenzverfolgung zwischen dem Beschleunigerspeicher und dem Host-Speicheradressraum; wobei die Erweiterungen umfassen: eine Abbildungs-Engine zum Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und „On-Chip-System-Fabric“ (OSF)-Anweisungen für die CAI; und eine Tunneling-Engine zum Bereitstellen von „Scalable Memory Interconnect“ (SMI)-Tunneln von Host-Speicheroperationen zum Beschleunigerspeicher über die CAI.
  3. PCIe-Steuerung nach Anspruch 1, wobei die Opcode-Abbildung eine Eins-zu-Eins-Abbildung ist.
  4. PCIe-Steuerung nach Anspruch 1, wobei die CAI eine mit „Intel® Accelerator Link“ (IAL) übereinstimmende Verbindung ist.
  5. PCIe-Steuerung nach Anspruch 1, wobei die OSF-Anweisungen Anweisungen umfassen zum Durchführen einer Operation, ausgewählt aus der Gruppe bestehend aus Geräteerkennung, Gerätekonfiguration, Fehlermeldung, Interrupt-Bereitstellung, Interrupt-Handling und Datenübertragungen nach Art des direkten Speicherzugriffs (DMA).
  6. PCIe-Steuerung nach Anspruch 1, ferner umfassend eine Host-Bias-zu-Geräte-Bias-(HBDB)-Flip-Engine, um es dem Beschleuniger zu ermöglichen, eine Host-Cache-Zeile zu entleeren.
  7. PCIe-Steuerung nach Anspruch 5, wobei die HBDB-Flip-Engine einen Transaktionsschichtpaket-(TLP)-Hinweis umfassend TH=1, PH=01 bereitstellen soll.
  8. PCIe-Steuerung nach Anspruch 1, ferner umfassend eine QoS-Engine, umfassend eine Mehrzahl von virtuellen Kanälen.
  9. PCIe-Steuerung nach Anspruch 7, wobei die virtuellen Kanäle einen VC0 für „Memory Mapped Input/Output“ (MMIO) und Konfigurationsverkehr, einen VC1 für Host-zu-Beschleuniger-Schreibvorgänge und einen VC2 für Host-von-Beschleuniger-Lesevorgänge umfassen.
  10. PCIe-Steuerung nach Anspruch 1, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Opcodes für „Non-Posted“ Schreibvorgänge (NP Wr).
  11. PCIe-Steuerung nach Anspruch 9, wobei der „NP Wr“-Opcode reservierte PCIe-Felder Fmt[2:0]=011b und Type[4:0]=1101b aufweist.
  12. PCIe-Steuerung nach einem der Ansprüche 1-10, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für Lesevorgänge unter PCIe, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  13. PCIe-Steuerung nach einem der Ansprüche 1-10, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für Schreibvorgänge unter PCIe, umfassend einen Vier-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 2-Bit-Zeitcode und einen 3-Bit-snp-Typ.
  14. PCIe-Steuerung nach einem der Ansprüche 1-10, wobei die Erweiterungen ausgelegt sind zum Bereitstellen eines Paketformats für einen Leseabschluss mit Daten unter PCIe, umfassend einen 3-Bit-Opcode, ein 2-Bit-Metafeld, einen 2-Bit-Metawert, einen 4-Bit-PCLS und einen 7-Bit-PRE.
  15. Verbindung, umfassend die PCIe-Steuerung nach einem der Ansprüche 1-13.
  16. System, umfassend die Verbindung nach Anspruch 14.
  17. System nach Anspruch 15, umfassend ein System-auf-einem-Chip.
  18. System nach Anspruch 15, umfassend ein Multi-Chip-Modul.
  19. System nach einem der Ansprüche 15-17, wobei der Beschleuniger ein softwareunterstützter Gerätespeicher ist.
  20. System nach einem der Ansprüche 15-17, wobei der Beschleuniger ein autonomer Gerätespeicher ist.
  21. Ein oder mehrere materielle, nicht vorübergehende rechnerlesbare Medien, aufweisend darauf gespeicherte Anweisungen zum Bereitstellen einer „Peripheral Component Interconnect Express“ (PCIe)-Steuerung auf einer Host-Plattform zum Bereitstellen von kohärenter Speicherabbildung zwischen einem Beschleunigerspeicher und einem Host-Speicheradressraum, umfassend Anweisungen zum: Bereitstellen eines PCIe-Steuerungs-Hubs, umfassend Erweiterungen zum Bereitstellen einer kohärenten Beschleunigerverbindung (CAI) zum Bereitstellen von Bias-basierter Kohärenzverfolgung zwischen dem Beschleunigerspeicher und dem Host-Speicheradressraum; wobei die Erweiterungen umfassen: eine Abbildungs-Engine zum Bereitstellen von Opcode-Abbildung zwischen PCIe-Anweisungen und „On-Chip-System-Fabric“ (OSF)-Anweisungen für die CAI; und eine Tunneling-Engine zum Bereitstellen von „Scalable Memory Interconnect“ (SMI)-Tunneln von Host-Speicheroperationen zum Beschleunigerspeicher über die CAI.
  22. Ein oder mehrere materielle, nicht vorübergehende Medien nach Anspruch 20, wobei die Opcode-Abbildung eine Eins-zu-Eins-Abbildung ist.
  23. Ein oder mehrere materielle, nicht vorübergehende Medien nach Anspruch 20, wobei die CAI eine mit „Intel® Accelerator Link“ (IAL) übereinstimmende Verbindung ist.
  24. Ein oder mehrere materielle, nicht vorübergehende Medien nach Anspruch 20, wobei die OSF-Anweisungen Anweisungen umfassen zum Durchführen einer Operation, ausgewählt aus der Gruppe bestehend aus Geräteerkennung, Gerätekonfiguration, Fehlermeldung, Interrupt-Bereitstellung, Interrupt-Handling und Datenübertragungen nach Art des direkten Speicherzugriffs (DMA).
  25. Ein oder mehrere materielle, nicht vorübergehende Medien nach Anspruch 20, wobei die Anweisungen ferner eine Host-Bias-zu-Geräte-Bias-(HBDB)-Flip-Engine bereitstellen sollen, um es dem Beschleuniger zu ermöglichen, eine Host-Cache-Zeile zu entleeren.
  26. Ein oder mehrere materielle, nicht vorübergehende Medien nach Anspruch 24, wobei die HBDB-Flip-Engine einen Transaktionsschichtpaket-(TLP)-Hinweis umfassend TH=1, PH=01 bereitstellen soll.
DE102018006797.2A 2017-09-29 2018-08-28 Kohärente Speichereinrichtungen über PCIe Pending DE102018006797A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/720,648 2017-09-29
US15/720,648 US11204867B2 (en) 2017-09-29 2017-09-29 PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory

Publications (1)

Publication Number Publication Date
DE102018006797A1 true DE102018006797A1 (de) 2019-04-04

Family

ID=65727896

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018006797.2A Pending DE102018006797A1 (de) 2017-09-29 2018-08-28 Kohärente Speichereinrichtungen über PCIe

Country Status (3)

Country Link
US (1) US11204867B2 (de)
CN (1) CN109582605A (de)
DE (1) DE102018006797A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114041299A (zh) * 2019-05-02 2022-02-11 株式会社Ntt都科摩 用户终端以及无线通信方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11477049B2 (en) * 2018-08-02 2022-10-18 Xilinx, Inc. Logical transport over a fixed PCIE physical transport network
US10776302B2 (en) * 2019-04-02 2020-09-15 Intel Corporation Virtualized link states of multiple protocol layer package interconnects
US10817462B1 (en) * 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11928071B2 (en) 2019-04-29 2024-03-12 Maxlinear, Inc. System communication technique over PCIe® (peripheral component interconnect express) link
US11151074B2 (en) * 2019-08-15 2021-10-19 Intel Corporation Methods and apparatus to implement multiple inference compute engines
US11567803B2 (en) 2019-11-04 2023-01-31 Rambus Inc. Inter-server memory pooling
CN111045964B (zh) * 2019-12-06 2021-07-20 上海国微思尔芯技术股份有限公司 一种基于pcie接口高速传输方法、存储介质及终端
US11188471B2 (en) 2020-04-03 2021-11-30 Alibaba Group Holding Limited Cache coherency for host-device systems
CN112269752B (zh) * 2020-10-10 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种PCIe虚拟通道的数据处理方法及相关装置
US20220244870A1 (en) * 2021-02-03 2022-08-04 Alibaba Group Holding Limited Dynamic memory coherency biasing techniques
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7469318B2 (en) * 2005-02-10 2008-12-23 International Business Machines Corporation System bus structure for large L2 cache array topology with different latency domains
JP2010146084A (ja) * 2008-12-16 2010-07-01 Toshiba Corp キャッシュメモリ制御部を備えるデータ処理装置
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8935513B2 (en) * 2012-02-08 2015-01-13 International Business Machines Corporation Processor performance improvement for instruction sequences that include barrier instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114041299A (zh) * 2019-05-02 2022-02-11 株式会社Ntt都科摩 用户终端以及无线通信方法
CN114041299B (zh) * 2019-05-02 2024-03-12 株式会社Ntt都科摩 用户终端以及无线通信方法

Also Published As

Publication number Publication date
US11204867B2 (en) 2021-12-21
CN109582605A (zh) 2019-04-05
US20190102292A1 (en) 2019-04-04

Similar Documents

Publication Publication Date Title
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102018006756A1 (de) Beschleuniger-Fabric
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE112013005044B4 (de) Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE112013007724T5 (de) Gemeinsame Benutzung von Speicher und I/O-Diensten zwischen Knoten
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE112017001148T5 (de) Abflachende portalbrücke .
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE102008048421A1 (de) Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)