DE102019101114A1 - System, Vorrichtung und Verfahren zum Bereitstellen einer Fabric für einen Beschleuniger - Google Patents

System, Vorrichtung und Verfahren zum Bereitstellen einer Fabric für einen Beschleuniger Download PDF

Info

Publication number
DE102019101114A1
DE102019101114A1 DE102019101114.0A DE102019101114A DE102019101114A1 DE 102019101114 A1 DE102019101114 A1 DE 102019101114A1 DE 102019101114 A DE102019101114 A DE 102019101114A DE 102019101114 A1 DE102019101114 A1 DE 102019101114A1
Authority
DE
Germany
Prior art keywords
request
accelerator
memory
coupled
router
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
DE102019101114.0A
Other languages
English (en)
Inventor
Lakshminarayana Pappu
Robert D. Adler
Amit Kumar SRIVASTAVA
Aravindh Anantaraman
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 DE102019101114A1 publication Critical patent/DE102019101114A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

Bei einer Ausführungsform schließt eine Vorrichtung Folgendes ein: einen Beschleuniger zum Ausführen von Anweisungen; einen mit dem Beschleuniger gekoppelten Beschleunigeranforderungsdecoder zum Durchführen einer erststufigen Dekodierung von Anforderungen vom Beschleuniger und Steuern der Anforderungen basierend auf der erststufigen Dekodierung, wobei der Beschleunigeranforderungsdecoder eine Speicherkarte zum Identifizieren eines ersten Adressbereichs, der einem lokalen Speicher zugeordnet ist, und eines zweiten Adressbereichs, der einem Systemspeicher zugeordnet ist, einschließt; und einen mit dem Beschleunigeranforderungsdecoder gekoppelten inkohärenten Anforderungsrouter zum Empfangen inkohärenter Anforderungen vom Beschleunigeranforderungsdecoder und Durchführen einer zweitstufigen Dekodierung der inkohärenten Anforderungen, wobei der inkohärente Anforderungsrouter zum Routen erster inkohärenter Anforderungen zu einem Seitenbandrouter des ersten Die und zum Leiten zweiter inkohärenter Anforderungen an einen Rechen-Die ausgebildet ist. Andere Ausführungsformen sind beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen beziehen sich auf eine Verbindungsschaltungsanordnung und insbesondere auf eine Fabric zum Koppeln an einen Beschleuniger.
  • Hintergrund
  • Die Rechenleistung von Universalprozessoren steigt weiterhin an. Bei vielen Computersystemen kann erhöhter Befehlsdurchsatz für spezialisierte Operationen optimiert werden, indem von solchen Universalprozessoren getrennte Beschleuniger bereitgestellt werden. Oftmals können diese Beschleuniger auf von den Universalprozessoren getrennten Leiterplatten angepasst werden. Während spezialisierter Betrieb innerhalb dieser Beschleuniger den Universalprozessor hinsichtlich Bandbreitenanforderungen entlastet, kann Verbinden von Speicher und anderen Ressourcen mit diesen Beschleunigern komplex sein.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist eine Übersichtsansicht eines Verfahrens zum Kommunizieren einer Konfigurationsanforderung gemäß einer Ausführungsform.
    • 3 ist eine Übersichtsansicht eines Verfahrens für ein Anforderungs-/Antwortprotokoll zwischen einem Beschleuniger-Die und einer Datenquelle gemäß einer Ausführungsform.
    • 4 ist eine Übersichtsansicht eines Verfahrens zum Handhaben von von einer Beschleunigersteuereinheit an einen Systemspeicher ausgegebenen Anforderungen gemäß einer Ausführungsform.
    • 5 ist eine Übersichtsansicht eines Verfahrens zum Handhaben einer Speicheranforderung von einem Rechen-Die an einen lokalen Speicher eines Beschleuniger-Die gemäß einer Ausführungsform.
    • 6 ist eine Übersichtsansicht eines Verfahrens zum Handhaben lokaler Speicheranforderungen gemäß einer Ausführungsform.
    • 7 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 8 ist ein Blockdiagramm eines Beispielsystems, mit dem Ausführungsformen verwendet werden können.
    • 9 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 10 ist ein Blockdiagramm eines Systems gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • Bei verschiedenen Ausführungsformen wird eine modulare System-Fabric für einen Beschleuniger bereitgestellt. Diese modulare System-Fabric kann zum Verbinden verschiedener Komponenten einer integrierten Schaltung wie z. B. einer Beschleunigervorrichtung verwendet werden. Eine derartige integrierte Schaltung kann mehrere Beschleuniger und andere Schaltungsanordnung einschließen und kann mit Systemressourcen wie z. B. Speicherressourcen gekoppelt sein. Bei besonderen Ausführungsformen kann diese integrierte Schaltung auf wenigstens einem Halbleiter-Die implementiert sein, der hierin als ein Beschleuniger-Die bezeichnet wird. Die integrierte Schaltung kann an einer Industriestandard-Computererweiterungskarte eingerichtet sein, z. B. kann sie über einen Anschluss, z. B. einen sogenannten M.2- oder Next Generation Form Factor (NGFF)-Anschluss, mit einer Hauptplatine oder einer anderen Systemleiterplatte gekoppelt sein.
  • Genauer, eine wie hierin vorgesehene System-Fabric kann mit schnelleren Entwicklungszeiten und niedrigeren Kosten als eine typische System-Fabric entworfen werden. Durch Vermeiden von ringbasierter Topologie und Dekodierbetrieb in der Nähe der Beschleuniger selbst kann diese Fabric auch mit reduziertem Stromverbrauch betrieben werden. Zusätzlich können Speicher-Routing-Ressourcen konfiguriert werden, um ebenfalls weniger Strom zu verbrauchen, da weniger strenge Routing-Operationen über die hierin durchgeführte Dekodierung durchgeführt werden. Darüber hinaus kann die System-Fabric dazu konfiguriert werden, lokale Speicheranforderungen, die mit hohen Bandbreiten lokal gehandhabt werden können, effizient zu identifizieren. An einen Universalprozessor gerichtete Anforderungen (nämlich inkohärente Anforderungen) können hingegen leistungsintensivere Abschnitte des Fabric durchlaufen. Da jedoch eine relativ begrenzte Anzahl von Transaktionen auf diese Weise abläuft, können solche Teile in Größe und Umfang begrenzt werden, wodurch Komplexität und Stromverbrauch reduziert werden. Anders ausgedrückt, ist die Fabric so gestaltet, dass sie Fabric-Verbindungen mit hoher Bandbreite zur Unterstützung lokaler Speichertransaktionen realisiert, während sie gleichzeitig reduzierte Schaltungsanordnungsmengen für relativ niedrigere Bandbreite bei der Handhabung von Remote-Transaktionen bereitstellt. Da davon ausgegangen wird, dass mehr Transaktionen lokal und nicht aus der Ferne handzuhaben sind, bedeutet dies, dass direktere Routen zum Handhaben der Transaktionen mit hoher Bandbreite bereitgestellt werden, und eine begrenzte Schaltungsanordnungsmenge für Transaktionen bereitgestellt wird, die einen Weg zu einem Universalprozessor zu durchlaufen haben.
  • Nun Bezug nehmend auf 1, ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt, kann es sich bei System 100 um eine beliebige Art von Rechenvorrichtung handeln, die viele verschiedene Formen annehmen kann, angefangen bei tragbaren Computervorrichtungen mit kleinem Formfaktor bis hin zu größeren Computervorrichtungen wie Serverrechnern. In jedem Fall, wie in 1 veranschaulicht, schließt System 100 einen Rechen-Die 110 ein. Als ein Beispiel kann es sich bei Rechen-Die 110 um einen Mehrkernprozessor oder ein anderes Ein-Chip-System (System on Chip, SoC) handeln, das in einer gegebenen Halbleiterverpackung implementiert ist, wie z. B. eine eigenständige integrierte Schaltung (Integrated Circuit, IC). Rechen-Die 110 wiederum ist mit einem Beschleuniger-Die 120 gekoppelt. Bei Ausführungsformen hierin kann Beschleuniger-Die 120 innerhalb einer anderen Halbleiterverpackung, wie z. B. einer integrierten Beschleunigerschaltung, vorhanden sein. Bei besonderen Ausführungsformen hierin kann der Beschleuniger-Die 120 selbst innerhalb einer integrierten Beschleunigerschaltung vorhanden sein, die auf einer separaten Leiterplatte eingerichtet ist, z. B. einer Peripheral Component Interconnect Express (PCIe)-Karte. Diese Karte wiederum ist mit einem NGFF-Anschluss einer Systemleiterplatte, wie z. B. einer den Rechen-Die 110 beherbergenden Hauptplatine, gekoppelt.
  • Wie veranschaulicht, ist ein Systemspeicher 115 mit Rechen-Die 110 gekoppelt. Derartiger Systemspeicher kann als dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM), z. B. als ein oder mehrere doppelreihige Speichermodule (Dual Inline Memory Modules, DIMMs), implementiert werden. Während Speicherverkehr zwischen Rechen-Die 110 und Systemspeicher 115 kohärent sein kann (indem Cache-Kohärenz in Bezug auf interne Caches des Rechen-Die 110 aufrechterhalten wird), wird darauf hingewiesen, dass Systemspeicher 115 selbst (und Rechen-Die 110) in Bezug auf Beschleuniger-Die 120 und Beschleuniger-Die 120 zugeordneten Speicher inkohärent bleibt.
  • Bei der Ausführungsform von 1 schließt Beschleuniger-Die 120 einen stromaufwärtigen Switch-Port 122 ein, der über einen oder mehrere Busse (z. B. Bus N) mit Rechen-Die 110 gekoppelt sein kann. Bei einer Ausführungsform kann stromaufwärtiger Switch-Port 122 als ein PCIe-Gerät mit x16 Verbindungen implementiert sein. Stromaufwärtiger Switch-Port 122 wiederum ist mit einer primären skalierbaren Fabric (Primary Scalable Fabric, PSF) 125 über einen weiteren Bus (Bus N+1) gekoppelt. PSF 125 wiederum arbeitet als eine On-Chip-Fabric zum Dekodieren und entsprechenden Routen von Transaktionen. Bei einer Ausführungsform kann PSF 125 als eine integrierte skalierbare On-Chip-Fabric (Integrated On-chip Scalable Fabric, IOSF) implementiert sein, die nach einer gegebenen Spezifikation eines Halbleiterherstellers gestaltet sein kann, um ein standardisiertes On-Die-Verbindungsprotokoll zum Anbringen von Komponenten, wie z. B. Blöcken geistigen Eigentums (Intellectual Property, IP), innerhalb eines Chips bereitzustellen. Basierend auf z. B. Adressinformationen, die mit eingehenden Transaktionen von Rechen-Die 110 verbunden sind, können diese Transaktionen einem von mehreren virtuellen Switch-Ports 1260,1 bereitgestellt werden. Wie veranschaulicht, ist virtueller Switch-Port 1260 mit PSF 125 über einen weiteren Bus (Bus N+2) gekoppelt, während Switch-Port 1261 wiederum mit PSF 125 über einen weiteren Bus (Bus N+3) gekoppelt ist.
  • Virtueller Switch-Port 1260 ist stromabwärts mit einer Beschleunigersteuereinheit 128 gekoppelt. Beschleunigersteuereinheit 128 kann als Verbindungslogik implementiert werden, die Schnittstellenschaltungsanordnung für Kommunikation zwischen Rechen-Die 110 und Beschleuniger-Die 120 implementiert. Genauer, Beschleunigersteuereinheit 128 kann zu Zwecken des Bereitstellens von Konfigurationen und anderen Verkehrsinformationen niedriger Bandbreite zwischen Rechen-Die 110 und Beschleuniger-Die 120 verwendet werden. Zu diesem Zweck ist Beschleunigersteuereinheit 128 mit einem Beschleuniger 140 über einen Seitenbandrouter 145 gekoppelt. Wie weiter gezeigt, kann Beschleunigersteuereinheit 128, z. B. über eine gegebene On-Chip-Verbindung (z. B. eine IOSF-Verbindung), mit einem Display-Controller 130 gekoppelt sein (der wiederum mit einem Display (aus Gründen der Übersichtlichkeit in 1 nicht gezeigt) gekoppelt sein kann). Beschleunigersteuereinheit 128 ist weiter mit einem isochronen Verkehrsmanager 132, der auch mit Display-Controller 130 in Kommunikation sein kann, gekoppelt. Isochroner Verkehrsmanager 132 kann für relativ schnellen Hauptbandverkehr (z. B. Datenübertragungen) verwendet werden. Genauer, wie gezeigt ist isochroner Verkehrsmanager 132 über verschiedene virtuelle Kanäle mit Beschleunigersteuereinheit 128 und Display-Controller 130 gekoppelt, sodass differenzierender Verkehr über diese verschiedenen virtuellen Kanäle (mit möglicherweise unterschiedlichen Prioritäten) zu gegebenen Zielen und/oder von gegebenen Quellen geleitet werden kann. Wie weiter veranschaulicht, ist isochroner Verkehrsmanager 132 mit einem Speicherrouter 1354 gekoppelt.
  • Wie weiter in 1 veranschaulicht, ist virtueller Switch-Port 1261 mit einem Ein-/Ausgangs-Port (Input/Output (I/O)-Port) 129 gekoppelt, der wiederum mit einem inkohärenten Anforderungsrouter 136 gekoppelt ist. Es wird darauf hingewiesen, dass I/O-Port 129 dazu konfiguriert werden kann, inkohärente Beschleunigeranforderungen in ein primäres Protokoll für Kommunikation über PSF 125 umzuwandeln, um Routen der Anforderungen zwischen den Die von Beschleuniger-Die 120 zu Rechen-Die 110 zu ermöglichen. Bei Ausführungsformen hierin kann inkohärenter Anforderungsrouter 136 dazu konfiguriert werden, stromaufwärtige Anforderungen zu einem inkohärenten Ziel zu routen, nämlich Systemspeicher 115. Inkohärenter Anforderungsrouter 136 kann eine Adresskarte einschließen. Genauer, diese Adresskarte kann über das BIOS (Basic Input/Output System) oder andere Systemsoftware oder Firmware programmiert werden. Bei einer Ausführungsform kann diese Adresskarte Informationen einschließen, die angeben, wohin Transaktionen zu routen sind. Genauer, inkohärenter Anforderungsrouter 136 schließt Abbildungsinformationen ein, um anzugeben: (i) Transaktionen (im Wesentlichen langsamer Verkehr), die zu einem Seitenbandrouter zu leiten sind, um lokale Blöcke zu konfigurieren (zu diesem Zweck weist jeder zu konfigurierende On-Chip-Agent seine in die Adresskarte programmierte Raumkarte auf); und (ii) Transaktionen, die inkohärent sind und die stromaufwärts zu Systemspeicher 115 zu routen sind, der wie hierin beschrieben in Bezug auf Beschleuniger-Die 120 inkohärent gehalten wird.
  • Mit dieser Adresskarte kann inkohärenter Anforderungsrouter 136 eingehende inkohärente Anforderungen dekodieren und derartige Anforderungen basierend auf einem Adressbereich, innerhalb dessen die Anforderungen fallen, kategorisieren. So routet inkohärenter Anforderungsrouter 136 Transaktionen entweder zu PSF 125 für stromaufwärtige Kommunikation oder zu Seitenbandrouter 135. Allgemein, inkohärente Anforderungen, die Speichertransaktionen für Systemspeicher entsprechen, können zu PSF 125 weitergeleitet werden. Lese-/Schreibkonfigurationstransaktionen hingegen, die an Komponenten innerhalb von Beschleuniger-Die 120 gerichtet sind, können über Seitenbandrouter 135 zu derartigen Komponenten gesendet werden.
  • Seitenbandrouter 135 wiederum kann mit verschiedenen Agenten innerhalb von Beschleuniger-Die 120 gekoppelt sein (Verbindungen aus Gründen der Übersichtlichkeit in 1 nicht gezeigt). Beispielsweise kann Seitenbandrouter 135 mit unterschiedlichen Agenten gekoppelt sein, wie z. B. einem Leistungsverwaltungsagenten und einem oder mehreren Konfigurationsagenten, um verschiedene Komponenten von Beschleuniger-Die 120 zu konfigurieren, wie z. B. Speichercontroller und so weiter. So kann inkohärenter Anforderungsrouter 136 konfigurationsbezogene und seitenbandinformationsbezogene Transaktionen über Seitenbandrouter 135 routen.
  • Immer noch Bezug nehmend auf 1, ist inkohärenter Anforderungsrouter 136 auch mit einem Beschleunigeranforderungsabbilder 138 gekoppelt. Bei Ausführungsformen hierin kann Beschleunigeranforderungsabbilder 138 zum Verwalten von zu inkohärentem Anforderungsrouter 136 geleiteten Anforderungen konfiguriert sein. Da es mehrere an dieselbe Adresse gerichtete Anforderungen geben kann, können derartige Anforderungen innerhalb des Beschleunigeranforderungsabbilders 138 durch Speicherung in einem gegebenen Puffer, wie z. B. einem First-In-First-Out-Puffer (FIFO-Puffer), verwaltet werden. Es wird darauf hingewiesen, dass bei einem derartigen Schema Leseanforderungen Schreibanforderungen umgehen können.
  • Beschleunigeranforderungsabbilder 138 wiederum ist mit einem Beschleunigeranforderungsdecoder 142 gekoppelt, der weiter mit einem Beschleuniger 140 gekoppelt ist. Beschleunigeranforderungsdecoder 142 kann zum Implementieren einer ersten Stufe von Transaktionsdekodierung für stromaufwärtige Transaktionen von Beschleuniger 140 konfiguriert sein. Genauer, Beschleunigeranforderungsdecoder 142 kann basierend auf einer eingehenden Systemadresse dazu konfiguriert sein, Anforderungen zu einem lokalen Speicher 150 oder z. B. zu Systemspeicher 115, der mit Rechen-Die 110 gekoppelt ist, zu leiten. So wird mit dieser Mehrstufendekodierkonfiguration diese erste Stufe der Dekodierung näher beim Beschleuniger 140 durchgeführt, wodurch die Notwendigkeit von Verbindungsstrukturen mit höherem Stromverbrauch wie z. B. eine Ring-Topologie vermieden wird. Durch Vermeiden einer typischen Ringstruktur werden Wartungs- und Validierungskosten reduziert, während sichergestellt wird, dass der Beschleuniger-Die 120 innerhalb eines zulässigen Leistungsbereichs bleibt. Darüber hinaus durchläuft durch diese Konfiguration, bei der Beschleunigeranforderungsdecoder 142 lokale Anforderungen mit hoher Bandbreite zu einem Konverter 144 leitet und stromaufwärtige Anforderungen hingegen über Beschleunigeranforderungsabbilder 138 leitet, eine begrenzte Anzahl von Anforderungen Abbilder 138. So kann Beschleunigeranforderungsabbilder 138 mit einer begrenzten Anzahl von endlichen Automaten (Finite State Machines, FSMs) konfiguriert werden, wodurch Komplexität und Stromverbrauch reduziert werden. Und es wird darauf hingewiesen, dass bei dieser Anordnung mehrstufiger Transaktionsdekodierung inkohärenter Anforderungsrouter 136 dazu konfiguriert werden kann, eine zweite Stufe von Transaktionsdekodierung für stromaufwärtige Transaktionen zu implementieren, um festzustellen, ob solche Transaktionen für interne Die-Ziele oder Rechen-Die 110 bestimmt sind.
  • Bei Ausführungsformen kann Beschleuniger 140 dazu konfiguriert sein, mit Rechen-Die 110 zusammenzuarbeiten, um bestimmte Funktionen zu beschleunigen. Zu diesem Zweck kann Rechen-Die 110 bestimmte Aufgaben an Beschleuniger 140 abgeben, um seine Bandbreite für andere Arbeitsbelastungen verfügbar zu machen. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist, können solche spezialisierten Aufgaben oder Funktionen Folgendes einschließen: 3D-Grafik-Rendering und -Spiele; Kommunizieren von Videoströmen mit bestimmter Auflösung von einem Server zu einem Client-Gerät; und Gesichtserkennungsanwendungen für maschinelles Lernen und so weiter.
  • Für Transaktionen mit hoher Bandbreite mit lokalem Speicher 150 kann Beschleunigeranforderungsdecoder 142 unter Verwendung einer internen Abbildungsstruktur einen gegebenen von mehreren Kanälen identifizieren, auf dem solche lokalen Transaktionen an lokalen Speicher 150 geleitet werden können. Bei Ausführungsformen kann Beschleunigeranforderungsdecoder 142 Core-to-Uncore (C2U)-Anforderungen, C2U-Antworten und C2U-Daten vom Beschleuniger 140 empfangen. Für C2U-Anforderungen kann Beschleunigeranforderungsdecoder 142 einen Opcode der Anforderung verwenden, um zu dekodieren, ob die Transaktion zum lokalen Speicher 150 oder zum Rechen-Die 110 zu leiten ist. Wenn eine Transaktion zum Rechen-Die 110 geleitet wird, kann die Anforderung über inkohärenten Anforderungsrouter 136 (und dazwischenliegenden Beschleunigeranforderungsabbilder 138) und über I/O-Port 129 in einer stromaufwärtigen Richtung zu Rechen-Die 110 laufen. Für lokale Speicheranforderungen schließt Beschleunigeranforderungsdecoder 142 hingegen eine Hash-Engine ein, um Speicher-Hash-Funktionen basierend auf einer Adresse einer gegebenen lokalen Speichertransaktion zum Routen der Transaktionen über einen geeigneten Speicherrouter (nämlich einen oder mehrere Router 1450 - 1453 ) durchzuführen. Es wird darauf hingewiesen, dass bei der gerichteten Kommunikation von lokalen Speicheranforderungen, die über die interne Speicherabbildung innerhalb des Beschleunigeranforderungsdecoders 142 realisiert wird, Speicherrouter 145 als Light Weight Switches mit reduziertem Stromverbrauch und verminderter Komplexität implementiert werden können. Bei einer Ausführungsform können Speicherrouter 145 bestimmte Eigenschaften aufweisen, einschließlich: (i) Dekodieren eines begrenzten CPU-Adressbereichs, der ausschließlich den Speichertransaktionen gewidmet ist; (ii) Routen der Transaktionen zu speziellen (vorbestimmten) Speichercontrollern; und (iii) Handhaben von meist in einer Richtung erwartetem Verkehr. Im Gegensatz dazu involviert ein komplexer Satz von herkömmlich verwendeten Routern typischerweise eine Netzart von Netzwerkabbildung mit „n“ Quellknoten auf „m“ Zielknoten und damit verbundene Konfigurationen, was bei Implementierung Komplexität und Stromverbrauch unerwünscht erhöhen kann. Weiterhin kann Beschleunigeranforderungsdecoder 142 eingehende Antworten (z. B. von lokalem Speicher 150) empfangen, die in Form von Uncore-to-Core (U2C)-Antworten vorliegen können, und sie entsprechend leiten (z. B. zu einem gegebenen von mehreren Beschleunigern, im Falle eines Mehrfachbeschleuniger-Die). Beschleunigeranforderungsdecoder 142 kann dazu konfiguriert werden, an Speicher gerichtete Anforderungen zu verfolgen, z. B. über einen Satz von Anforderungsverfolgern.
  • Es wird darauf hingewiesen, dass, während ein einzelner Beschleuniger der Einfachheit halber gezeigt ist, bei besonderen Ausführungsformen mehrere Beschleuniger auf einem gegebenen Beschleuniger-Die vorhanden sein können. In verschiedenen Fällen kann Beschleuniger 140 als eine Grafik-Engine, Medien-Engine, Maschinenlern-Engine oder andere spezielle Verarbeitungsschaltungsanordnung implementiert werden. Beispielsweise kann in Fällen, in denen Beschleuniger140 ein Grafikbeschleuniger ist, Beschleuniger-Die 120 auf einer diskreten Grafikkarte implementiert werden. Wenn Beschleuniger 140 als ein Medienbeschleuniger implementiert ist, kann eine derartige Implementierung über Video-Kodier-/Dekodier-Engines erfolgen, wie z. B. für Serverinstanziierungen, z. B. bei Social Media-Unternehmen. In Fällen, in denen Beschleuniger 140 eine Maschinenlern-Engine ist, können diese Maschinen für künstliche Intelligenz/Inferenz bei Deep-Learning-Anwendungen verwendet werden, und sie können in Erweiterungskarten für Server von Dienstanbietern oder anderen implementiert werden.
  • Es wird darauf hingewiesen, dass lokaler Speicher 150 bei Ausführungsformen hierin als On-Die-Speicher implementiert werden kann. In anderen Fällen kann der lokale Speicher als alleinstehende Speichervorrichtungen implementiert werden, wie z. B. Doppeldatenraten- (DDR-) oder Niedrigenergie-DDR-Speicher, der mit Beschleuniger-Die 120 gekoppelt ist (und der auf einer gegebenen Karte mit Beschleuniger-Die 120 eingerichtet werden kann).
  • Wie weiter in 1 veranschaulicht, kann Beschleunigeranforderungsdecoder 142 über mehrere Kanäle mit einem Konverter 144 gekoppelt sein. Konverter 144 kann bei Ausführungsformen hierin dazu konfiguriert sein, sogenannte vom Beschleunigeranforderungsdecoder 142 empfangene Intra-Die-Interconnect-Transaktionen (IDI-Transaktionen) in ein Format für Kommunikation mit einem gegebenen von mehreren Speicherroutern (nämlich Speicherroutern 1450 - 1453 ) umzuwandeln. Es wird darauf hingewiesen, dass Speicherrouter 145 dazu konfiguriert werden können, Eingänge von mehreren Quellen zu empfangen und diese entweder zu einem entsprechenden Speichercontroller 146 oder zu einem benachbarten Speicherrouter 145 zu routen. In dieser Hinsicht können solche Speicherrouter Adresskarten zum Identifizieren von Speicherbereichen, für die der gegebene Router zuständig ist, einschließen.
  • Speicherrouter 145 können dazu konfiguriert werden, Prioritätsanforderungen, z. B. virtuelle Kanalanforderungen, zu erfüllen, und eine oder mehrere Arbitrierungstechniken zu verwenden, um die Priorität eingehender Anforderungen zu bestimmen. Jeder Speicherrouter 1450 - 1453 wiederum kann über eine entsprechende Speicherverbindung hoher Bandbreite (z. B. 32 Byte (B) mit 2 Gigahertz (GHz)) mit einem entsprechenden Speichercontroller 1460 - 1463 gekoppelt werden. Jeder Speichercontroller 146 wiederum kann über eine entsprechende Verbindung mit Speicher 150 gekoppelt werden. Genauer, derartige Verbindungen können über einen I/O-Abschnitt 152 von Speicher 150 gekoppelt werden, um auf bestimmte Kanäle innerhalb von lokalem Speicher 150 gerichtet zu werden. Während auf dieser hohen Ebene bei der Ausführungsform von 1 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Nun Bezug nehmend auf 2, ist eine Übersichtsansicht eines Verfahrens zum Kommunizieren einer Konfigurationsanforderung gemäß einer Ausführungsform gezeigt. Genauer, wie in 2 gezeigt, ist ein Transaktionsfluss 200 zum Konfigurieren einer Beschleunigerkomponente gemäß einer Ausführungsform veranschaulicht. Wie veranschaulicht, wird ein Transaktionsfluss 200 über eine durch einen Kern 210 ausgegebene Konfigurationsanforderung (configuration request, cfg) initiiert. Es wird darauf hingewiesen, dass Kern 210 ein Universalverarbeitungskern eines Multikernprozessors oder eines anderen SoC sein kann, der in einem Rechen-Die getrennt von einem Beschleuniger-Die implementiert sein kann. Und es ist zu verstehen, dass Kern 210 Software ausführen kann, wie z. B. BIOS, ein Betriebssystem (Operating System, OS) oder andere Systemsoftware, die die Ausführung eines Konfigurationsvorgangs, in diesem Fall für eine Beschleunigerkomponente, initiiert. Ein Beispiel für eine Konfigurationsanforderung kann sich beim Hochfahren ergeben, die Beschleunigertreiber (z. B. Grafiktreiber) werden in einen Systemspeicher geladen, der mit einem Hauptanwendungsprozessor (z. B. einer CPU oder einem anderen SoC) gekoppelt ist. Die CPU ruft diese Treiber auf und diese Treiber konfigurieren verschiedene Aspekte auf dem Beschleuniger-Die. Als Beispiel weist der PCIe-Treiber während der PCIe-Geräteaufzählung jedem der PCIe-Geräte auf der Beschleunigerkarte Bus-, Geräte- und Funktionsnummern zu. Nach dieser Konfiguration kennt jedes Gerät seine eindeutige Identifikationsnummer, sodass es an seine Adresse gerichtete Transaktionen beanspruchen kann. Als ein weiteres Beispiel kann ein Anzeigetreiber im Systemspeicher Anzeigekomponenten konfigurieren und diese aktivieren, wenn das System Daten auf einer Anzeige darzustellen hat.
  • Immer noch Bezug nehmend auf 2, wird diese Konfigurationsanforderung im Beschleuniger-Die an einem Wurzelkomplex 220 eines stromaufwärtigen Ports (Upstream Port (USP) Root Complex) empfangen. Bei einer Ausführungsform kann dieser Wurzelkomplex als ein PCIe-Gerät wie z. B. als ein PCIe-Switch-Port implementiert sein. Wurzelkomplex 220 wiederum leitet diese Konfigurationsanforderung stromabwärts an eine primäre skalierbare Fabric 230 des Beschleuniger-Die. Die Fabric kann eine Fabric-Dekodierung dieser Konfigurationstransaktion durchführen. Bei einer Ausführungsform kann eine derartige Dekodierung auf Busgerätefunktionsinformationen (Bus Device Function (BDF)-Informationen) der Konfigurationstransaktion zum Identifizieren eines Ziels der Konfigurationsanforderung beruhen. Zu Zwecken der Erörterung wird davon ausgegangen, dass diese Dekodierung angibt, dass die Konfigurationstransaktion an einen bestimmten Beschleuniger des Beschleuniger-Die (der einen oder mehrere solcher Beschleuniger einschließen kann) zu richten ist. So kann PSF 230 die Konfigurationsanforderung an eine Beschleunigersteuereinheit 250 (die mit der PSF über einen virtuellen Switch-Port gekoppelt sein kann) unter Umgehung eines I/O-Ports 240 weiterleiten. Bei Ausführungsformen kann eine derartige Beschleunigersteuereinheit innerhalb des Beschleunigers selbst implementiert oder kann mit dem Beschleuniger gekoppelt sein. In jedem Fall können beim Empfangen der Konfigurationsanforderung in der Beschleunigersteuereinheit 250 verschiedene Konfigurationsvorgänge entsprechend der Konfigurationstransaktion erfolgen, um den Beschleuniger für die angeforderte Anordnung entsprechend zu konfigurieren. Während auf dieser hohen Ebene bei der Ausführungsform von 2 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Nun Bezug nehmend auf 3, ist eine Übersichtsansicht eines Verfahrens für ein Anforderungs-/Antwortprotokoll zwischen einem Beschleuniger-Die und einer Datenquelle, wie z. B. einem Systemspeicher, gezeigt. Genauer, 3 veranschaulicht einen Transaktionsfluss 300 für Durchführen einer Speicheroperation, die von einem Beschleuniger 310 an einen Systemspeicher 350 (welcher ein Systemspeicher einer Rechenvorrichtung sein kann, die wiederum mit einem Rechen-Die gekoppelt ist) ausgegeben wird. Somit kann Systemspeicher 350 in Bezug auf Beschleuniger 310 eines Beschleuniger-Die inkohärent gehalten werden. Wie veranschaulicht, beginnt der Transaktionsfluss 300 über Ausgabe durch Beschleuniger 310 einer Speicherlese- oder -schreiboperation (Memory Read/write, MemRd/write), die vom Beschleuniger 310 ausgegeben und als Systemspeicheranforderung an einen I/O-Port 320 geleitet wird. Es wird darauf hingewiesen, dass, obwohl als eine direkte Kommunikation zwischen Beschleunigern 310 und I/O-Port 320 gezeigt, eine derartige Anforderung dazwischenliegende Strukturen, wie z. B. einen Anforderungsdecoder, -abbilder und/oder -router durchlaufen kann. In jedem Fall kann I/O-Port 310 die Anforderung implizit dekodieren und an eine PSF 330 leiten (mit der der I/O-Port 320 in einigen Fällen über einen dazwischenliegenden virtuellen Switch-Port gekoppelt sein kann). PSF 330 wiederum kann die Anforderung als eine stromaufwärtige Speicheranforderung identifizieren und sie an einen Wurzelkomplex 340 weiterleiten, der als stromaufwärtiger Switch-Port konfiguriert sein kann, der die Anforderung an einen Rechen-Die leitet. Der Rechen-Die wiederum kann die Anforderung verarbeiten, um zu bestimmen, dass es sich um eine an eine bestimmte Stelle im Systemspeicher gerichtete Speicheranforderung handelt. Dementsprechend können verschiedene Ressourcen des Rechen-Die, wie z. B. ein integrierter Speichercontroller, die Anforderung an Systemspeicher leiten, um die Lese- oder Schreiboperation durchzuführen.
  • Angenommen, die Speicheranforderung ist eine Leseanforderung. Somit kann Systemspeicher 350 die angeforderten Daten erhalten und sie dem Anforderer, nämlich dem Beschleuniger 310, wieder stromabwärts zur Verfügung stellen. Wie in 3 weiter veranschaulicht, kann diese Antwort also stromabwärts durch Wurzelkomplex 340 und an PSF 330 geleitet werden, die wiederum eine Fabric-Dekodierung durchführen kann, um das Ziel zu bestimmen. Als solches leitet PSF 330 die Antwort zu I/O-Port 320, der sie wiederum zurück zu Beschleuniger 310 routet. Bei Ausführungsformen ist zu beachten, dass dazwischenliegende Routing-/Abbildungs-/Dekodierstrukturen innerhalb des Beschleuniger-Die verschiedene Dekodierstufen durchführen können, einschließlich Tag-Analyse, um zu bestimmen, ob diese gelesenen Daten an Beschleuniger 310 selbst oder an einen anderen Ort, wie z. B. eine Beschleunigersteuereinheit (die Bestandteil des Beschleunigers ist oder die mit diesem gekoppelt ist), zu leiten sind. Während auf dieser hohen Ebene bei der Ausführungsform von 3 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Nun Bezug nehmend auf 4, ist eine Übersichtsansicht eines Verfahrens zum Handhaben von von einer Beschleunigersteuereinheit an einen Systemspeicher ausgegebenen Anforderungen gezeigt. Genauer, Transaktionsfluss 400 von 4 kann ähnlich dem Transaktionsfluss 300 von 3 fortfahren. Es wird jedoch darauf hingewiesen, dass die Anforderung hier nicht vom Beschleuniger selbst, sondern von einer Beschleunigersteuereinheit 410 ausgegeben wird. Weiterhin ist zu beachten, dass die Anforderung direkt durch I/O-Port 420 läuft und stromaufwärts direkt zu PSF 430 geleitet wird. Wie bei Transaktionsfluss 300 wird die Transaktion von PSF 430, die eine implizite Dekodierung durchführt, stromaufwärts über stromaufwärtigen Switch-Port 440 an Systemspeicher 450 weitergeleitet. Die entsprechende Antwort vom Systemspeicher 450 fließt wiederum stromabwärts zurück durch Switch-Port 440 und über PSF 430, die eine Fabric-Dekodierung der Antwort durchführt, um sie direkt zur Beschleunigersteuereinheit 410 zu senden.
  • Nun Bezug nehmend auf 5, ist eine Übersichtsansicht eines Verfahrens zum Handhaben einer Speicheranforderung von einem Rechen-Die an einen lokalen Speicher eines Beschleuniger-Die gemäß einer Ausführungsform gezeigt. Genauer, wie in 5 veranschaulicht, beschreibt der Transaktionsfluss 500 ein Verfahren zum Handhaben einer Speicheranforderung, die von einem Kern 510 eines Rechen-Die ausgegeben und an einen lokalen Speicher eines Beschleuniger-Die geleitet wird. Wie veranschaulicht, beginnt Transaktionsfluss 500 über einen Kern 510, der eine Speicheranforderung stromabwärts an einen Beschleuniger-Die ausgibt. Genauer, diese Anforderung wird über einen stromaufwärtigen Switch-Port-Wurzelkomplex 520 empfangen. Wurzelkomplex 520 leitet diese stromabwärtige Anforderung zu einer PSF 530, die eine Fabric-Dekodierung durchführt. Bei dieser Fabric-Dekodierung, die diese stromabwärtige Anforderung identifiziert, ist zu beachten, dass die Anforderung direkt zu einer Beschleunigersteuereinheit 550 (unter Umgehung von I/O-Port 540) gesendet wird. Beschleunigersteuereinheit 550 wiederum kann die Speicheranforderung ausgeben, die über eine On-Chip-Verbindung als eine Anforderung mit einer gegebenen Priorität gemäß einem bestimmten virtuellen Kanal (z. B. virtueller Kanal 0) empfangen wird. Wie veranschaulicht, leitet Beschleunigersteuereinheit 550 diese Speicheranforderung weiter, z. B. über den gegebenen virtuellen Kanal an lokalen Speicher 560, der wiederum die Speicheranforderung durchführt (z. B. eine Lese- oder Schreiboperation).
  • Wie veranschaulicht, gibt lokaler Speicher 560 so eine Speicherantwort über denselben virtuellen Kanal aus und leitet sie an Beschleunigersteuereinheit 550. In einigen Fällen kann Beschleunigersteuereinheit 550 diese Antwort optional modifizieren. Beispielsweise können in einer Virtualisierungsumgebung die im lokalen Speicher gespeicherten Daten modifiziert werden, bevor sie zum System (zu den Kernen) gesendet werden. Wenn das System zum Beispiel zehn Geräte verwaltet, kann jedes Gerät dieselbe lokale Adresse „0xab“ haben, die für verschiedene Agenten unterschiedliche Dinge bedeutet. Soweit das System betroffen ist, gibt es jedoch eindeutige Adressen. Daher wandeln diese Beschleunigereinheiten virtuelle Adresse in physikalische Adresse um und umgekehrt. Beschleunigersteuereinheit 550 gibt dann eine Antwort als ein stromaufwärtiger Abschluss an PSF 530 aus, die eine implizite Dekodierung durchführt, um den Abschluss stromaufwärts über Wurzelkomplex 520 als eine Antwort zu Kern 510 zu leiten. Während auf dieser hohen Ebene bei der Ausführungsform von 5 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Nun Bezug nehmend auf 6, ist eine Übersichtsansicht eines Verfahrens zum Handhaben lokaler Speicheranforderungen gezeigt. Genauer, Transaktionsfluss 600 von 6 kann zum Kommunizieren lokaler Speicheranforderungen von einem Beschleuniger 610 an einen lokalen Speicher 670 verwendet werden. Wie ersichtlich, wird diese Beschleunigerspeicheranforderung Beschleunigeranforderungsdecoder 620 bereitgestellt, der basierend auf seiner lokalen Karte bestimmen kann, dass die Anforderung zu lokalem Speicher geleitet wird. Somit leitet Beschleunigeranforderungsdecoder 620 die Anforderung, z. B. über einen Konverter (aus Gründen der Übersichtlichkeit in 6 nicht gezeigt), an einen bestimmten von mehreren Speicherroutern 630 gemäß der Adresse der Speicheranforderung weiter. Router 630 wiederum kann die Anforderung an den nächstgelegenen (z. B. direkt gekoppelten) Speichercontroller 640 weiterleiten. Wenn diese Speicheranforderung aus irgendeinem Grund nicht für einen Teil des Speichers bestimmt ist, der diesem bestimmten Speichercontroller gehört, kann es zu zusätzlichem Routen von einem Speichercontroller zu einem anderen (wie aus Sicht von erstem Speichercontroller 640 zu zweitem Speichercontroller 650 und möglicherweise zu drittem Speichercontroller 660) kommen. Anderenfalls wird die Speicheranforderung direkt von Speichercontroller 640 zu lokalem Speicher 670 geroutet, um die Speicheranforderung (z. B. eine Leseanforderung) zu erfüllen. Somit können die Speicherdaten über den entsprechenden Speichercontroller und -router und über Beschleunigeranforderungsdecoder 620 an Beschleuniger 610 zum Verbrauch zurückgemeldet werden. Während auf dieser hohen Ebene bei der Ausführungsform von 6 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Nun Bezug nehmend auf 7, ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Genauer, beim Verfahren 700 handelt es sich um ein Verfahren zum Durchführen einer mehrstufigen Dekodierung einer Transaktion in einer System-Fabric eines Beschleuniger-Die, wie hierin beschrieben. Als solches kann Verfahren 700 durch Hardware-Schaltungsanordnung, Firmware, Software und/oder Kombinationen davon durchgeführt werden. Wie in 7 veranschaulicht, beginnt Verfahren 700 durch Empfangen einer Anforderung in einem Beschleunigeranforderungsdecoder (Block 710). Dieser Beschleunigeranforderungsdecoder kann eng mit dem Beschleuniger gekoppelt sein, um die Anforderung zu empfangen. Anschließend wird bei Block 720 eine erststufige Dekodierung auf dieser Anforderung im Beschleunigeranforderungsdecoder durchgeführt. Genauer, eine Adresse der Anforderung kann zum Zugreifen auf die Speicherkarte des Beschleunigeranforderungsdecoders verwendet werden, um ein beabsichtigtes Ziel der Anforderung zu identifizieren.
  • Immer noch Bezug nehmend auf 7, wird basierend auf dieser ersten Dekodierungsstufe bei Raute 730 bestimmt, ob die Anforderung an lokalen Speicher gerichtet ist, nämlich einen lokalen Speicher (einen kohärenten Speicher), der dem Beschleuniger-Die zugeordnet ist. Wenn dies der Fall ist, geht die Steuerung zu Block 740 über, wo der Beschleunigeranforderungsdecoder die Anforderung auf einen bestimmten Speicherrouter abbilden kann. Genauer, basierend auf einer Speicherkarte, kann der Beschleunigeranforderungsdecoder einen von mehreren Speicherroutern identifizieren, an den die Anforderung gesendet werden kann. Somit geht die Steuerung zu Block 745 über, wo die Anforderung an diesen ausgewählten Speicherrouter gesendet wird. Es wird darauf hingewiesen, dass der Beschleunigeranforderungsdecoder diese Anforderung auf einem bestimmten Kanal senden kann, der z. B. über einen Konverter mit dem ausgewählten Speicherrouter gekoppelt ist. Anschließend wird bestimmt, ob der Speicherrouter, der die Anforderung empfängt, der richtige Speicherrouter zum Handhaben der Anforderung ist (Raute 750). Bei einer Ausführungsform kann jeder Speicherrouter Adressbereichsregister zum Identifizieren eines Adressbereichs, dem der Speicherrouter zugeordnet ist, einschließen. Wenn festgestellt wird, dass es sich um den richtigen Speicherrouter handelt, geht die Steuerung zu Block 760 über, wo die Anforderung zu lokalem Speicher gesendet wird. Genauer, kann der Speicherrouter die Anforderung an einen entsprechenden Speichercontroller weiterleiten, der wiederum die Anforderung an Speicher ausgeben kann, Verfolgungsressourcen des Speichercontrollers zum Handhaben der Speicherrückgabe zuweisen kann und so weiter.
  • Wenn hingegen festgestellt wird, dass der Speicherrouter nicht der richtige Router ist, geht die Steuerung zu Block 755 über, wo der Speicherrouter die Anforderung an einen benachbarten Speicherrouter weiterleiten kann, sodass die Bestimmung bei Raute 750 erneut für diesen benachbarten Speicherrouter durchgeführt werden kann. Somit kann eine Schleife der Operationen bei Raute 750 und Block 755 iterativ auftreten, bis der richtige Speicherrouter gefunden ist.
  • Immer noch Bezug nehmend auf 7, wenn bei Raute 730 festgestellt wird, dass die empfangene Anforderung keine lokale Speicheranforderung ist, leitet der Beschleunigeranforderungsdecoder die Anforderung an einen inkohärenten Anforderungsrouter (Block 770). Es wird darauf hingewiesen, dass die Anforderung dazwischenliegende Strukturen, wie z. B. einen Beschleunigeranforderungsabbilder, durchlaufen kann, bevor sie dem inkohärenten Anforderungsrouter übergeben wird.
  • In jedem Fall geht die Steuerung von Block 770 zu Raute 775 über, um festzustellen, ob die Anforderung eine Systemspeicheranforderung ist, nämlich eine Anforderung, die an einen inkohärenten Systemspeicher gerichtet ist, der mit einem Rechen-Die gekoppelt ist, der wiederum mit dem Beschleuniger-Die gekoppelt ist. Wenn dies der Fall ist, geht die Steuerung zu Block 780 über, wo die Anforderung stromaufwärts zum Rechen-Die geleitet wird, wo sie verarbeitet werden kann, um die Anforderung zum Handhaben in den Systemspeicher zu leiten.
  • Wenn hingegen festgestellt wird, dass es sich bei der Anforderung um eine lokale Transaktion (z. B. eine Konfigurations- oder Seitenbandtransaktion) handelt und nicht für Systemspeicher bestimmt ist, geht die Steuerung von Raute 775 zu Block 785 über. Dort kann der inkohärente Anforderungsrouter die Anforderung an einen Seitenbandrouter leiten. Es wird darauf hingewiesen, dass ein derartiger Seitenbandrouter mit verschiedenen Agenten des Beschleuniger-Die gekoppelt sein und dazu verwendet werden kann, eine Vielzahl von Seitenbandtransaktionen, wie z. B. Konfigurationstransaktionen, Überwachungstransaktionen und so weiter, zu steuern. Somit kann der Seitenbandrouter bei Block 790 die Anforderung zu einem On-Chip-Ziel routen, z. B. zu einer gegebenen Komponente, an die die Anforderung gerichtet ist. Es wird darauf hingewiesen, dass in einigen Fällen diese Seitenbandanforderung mehrere Seitenbandrouter durchlaufen kann, bevor sie an eine Zielkomponente gesendet wird. Während auf dieser hohen Ebene bei der Ausführungsform von 7 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Ausführungsformen, wie hierin beschrieben, können in einer Vielzahl von Systemtypen implementiert werden, angefangen bei kleinen tragbaren Geräten bis hin zu größeren, komplexeren Rechengeräten. Nun Bezug nehmend auf 8, ist ein Blockdiagramm eines Beispielsystems, mit dem Ausführungsformen verwendet werden können, gezeigt. In der Veranschaulichung von 8 kann System 800 ein mobiles System sein, wie z. B. ein Tablet-Computer, 2:1-Tablet, Phablet, fahrzeuginternes System oder ein anderes System. Wie veranschaulicht, ist ein SoC 810 vorhanden, das zum Arbeiten als ein Anwendungsprozessor für das Gerät konfiguriert werden kann. SoC 810 kann mehrere Die einschließlich eines Rechen-Die und eines Beschleuniger-Die mit einer System-Fabric, wie hierin beschrieben, einschließen.
  • Eine Vielzahl von Geräten kann mit SoC 810 gekoppelt werden. In der gezeigten Veranschaulichung schließt ein Speichersubsystem einen Flash-Speicher 840 und ein DRAM 845 mit SoC 810 gekoppelt ein. Zusätzlich ist ein Touchpanel 820 mit dem SoC 810 gekoppelt, um Anzeigefähigkeit und Benutzereingabe über Berührung bereitzustellen, einschließlich Bereitstellung einer virtuellen Tastatur auf einem Display des Touchpanels 820. Um eine kabelgebundene Netzwerkverbindung bereitzustellen, ist SoC 810 mit einer Ethernet-Schnittstelle 830 gekoppelt. Ein peripherer Hub 825 ist mit SoC 810 gekoppelt, um eine Schnittstelle zu verschiedenen peripheren Geräten zu ermöglichen, wie sie z. B. über einen beliebigen von verschiedenen Ports oder anderen Verbinden mit System 800 gekoppelt werden können.
  • Zusätzlich zu interner Leistungsverwaltungsschaltungsanordnung und Funktionalität innerhalb von SoC 810 ist ein PMIC 880 mit SoC 810 gekoppelt, um plattformbasierte Leistungsverwaltung bereitzustellen, z. B. basierend darauf, ob das System mit einer Batterie 890 oder mit Wechselstrom über einen AC-Adapter 895 betrieben wird. Zusätzlich zu dieser stromquellenbasierten Leistungsverwaltung kann PMIC 880 weitere, auf Umgebungs- und Nutzungsbedingungen basierende Plattformleistungsverwaltungsaktivitäten durchführen. Darüber hinaus, kann PMIC 880 Steuerungs- und Statusinformationen an SoC 810 kommunizieren, um verschiedene Leistungsverwaltungsaktionen innerhalb von SoC 810 zu veranlassen.
  • Immer noch Bezug nehmend auf 8, ist zum Ermöglichen von Drahtlosfähigkeiten eine WLAN-Einheit 850 mit SoC 810 und auch mit einer Antenne 855 gekoppelt. Bei verschiedenen Implementierungen kann WLAN-Einheit 850 Kommunikation gemäß einem oder mehreren drahtlosen Protokollen ermöglichen. Wie weiter veranschaulicht, können mehrere Sensoren 860 mit SoC 810 gekoppelt sein. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungssensoren und andere Sensoren beinhalten, einschließlich Benutzergestensensoren. Schließlich ist ein Audio-Codec 865 mit SoC 810 gekoppelt, um eine Schnittstelle zu einer Audio-Ausgabevorrichtung 870 bereitzustellen. Während mit dieser bestimmten Implementierung in 8 gezeigt, ist natürlich zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Nun Bezug nehmend auf 9, ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 9 gezeigt, ist Multiprozessorsystem 900 ein Punkt-zu-Punkt-Verbindungssystem und schließt einen ersten Prozessor 970 und einen zweiten Prozessor 980, die über eine Punkt-zu-Punkt-Verbindung 950 gekoppelt sind, ein. Wie in 9 gezeigt, kann jeder der Prozessoren 970 und 980 ein Multicore-Prozessor sein, einschließlich erster und zweiter Prozessorkerne (d. h. Prozessorkerne 974a und 974b sowie Prozessorkerne 984a und 984b), obwohl viel mehr Kerne in den Prozessoren vorhanden sein können.
  • Immer noch Bezug nehmend auf 9, schließt der erste Prozessor 970 weiter einen Speichercontroller-Hub (Memory Controller Hub, MCH) 972 sowie Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 976 und 978 ein. Ähnlich schließt der zweite Prozessor 980 einen MCH 982 sowie P-P-Schnittstellen 986 und 988 ein. Wie in 9 gezeigt, koppeln MCHs 972 und 982 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 932 und einem Speicher 934, die Teile des lokal an die jeweiligen Prozessoren angeschlossenen Systemspeichers (z. B. DRAM) sein können. Erster Prozessor 970 und zweiter Prozessor 980 können mit einem Chipsatz 990 jeweils über P-P-Verbindungen 962 und 964 gekoppelt sein. Wie in 9 gezeigt, schließt Chipsatz 990 P-P-Schnittstellen 994 und 998 ein.
  • Ferner schließt Chipsatz 990 eine Schnittstelle 992 zum Koppeln von Chipsatz 990 mit einer Hochleistungsgrafikmaschine 938 über eine P-P-Verbindung 939 ein. Chipsatz 990 wiederum kann mit einem ersten Bus 916 über eine Schnittstelle 996 gekoppelt sein. Wie in 9 gezeigt, können verschiedene Ein-/Ausgabegeräte (Input/Output (I/O)-Geräte) 914 mit erstem Bus 916 gekoppelt sein, zusammen mit einer Busbrücke 918, die ersten Bus 916 mit einem zweiten Bus 920 koppelt. Erster Bus 916 kann auch mit einem Beschleuniger 912 gekoppelt sein, an den ein lokaler Speicher 915 gekoppelt ist. Beschleuniger 912 kann eine System-Fabric zum Durchführen einer mehrstufigen Dekodierung, wie hierin beschrieben, einschließen. Verschiedene Vorrichtungen können mit dem zweiten Bus 920 gekoppelt werden, einschließlich beispielsweise einer Tastatur/Maus 922, Kommunikationsvorrichtungen 926 und einer Datenspeichereinheit 928, wie z. B. ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, das/die Code 930 einschließen kann, bei einer Ausführungsform. Weiter kann ein Audio-I/O 924 mit zweitem Bus 920 gekoppelt werden. Ausführungsformen können in andere Arten von Systemen integriert werden, einschließlich mobiler Vorrichtungen wie z. B. ein Smartphone, Tablet-Computer, Netbook, Ultrabook™ oder so weiter.
  • Nun Bezug nehmend auf 10, ist ein Blockdiagramm eines Systems gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausführungsform von 10 ist System 1000 ein Computersystem für autonomes Fahren. Somit kann System 1000 innerhalb eines Fahrzeugs implementiert werden, das ein gewisses Maß an autonomem Fahren ermöglicht. Es ist zu verstehen, dass mit verschiedenen Stufen autonomer Fahrsteuerung verschiedene Stufen von Arbeitslasten innerhalb von System 1000 ausgeführt werden können, um einige oder alle Fahraufgaben autonom durchzuführen.
  • Wie veranschaulicht, schließt System 1000 einen Prozessor 1010 ein, bei dem es sich um einen Universal-Multicore-Prozessor oder um ein anderes SoC handeln kann. Prozessor 1010 kann mehrere Die einschließlich eines Rechen-Die und eines Beschleuniger-Die mit einer System-Fabric, wie hierin beschrieben, einschließen. Bei verschiedenen Implementierungen können mehrere derartige Prozessoren implementiert werden, um aus autonomem Fahren entstehende Arbeitslasten flexibel auf diese Prozessoren zu verteilen. Prozessor 1010 empfängt Leistung, die von einer integrierten Leistungsverwaltungsschaltung (Power Management Integrated Circuit, PMIC) 1040 gesteuert wird.
  • System 1000 kann weiter ein oder mehrere feldprogrammierbare Gate-Arrays (FPGAs) 1015 oder andere programmierbare Beschleuniger einschließen, an die bestimmte aus autonomem Fahren entstehende Arbeitslasten abgegeben werden können. Prozessor 1010 ist weiter mit einem nichtflüchtigen Speicher 1025 gekoppelt, der bei einer Ausführungsform als ein Flash-Speicher implementiert sein kann. Um Kommunikation mit anderen Komponenten innerhalb eines Fahrzeugs bereitzustellen, ist Prozessor 1010 weiter mit einer Switch-Fabric 1020 gekoppelt, die bei einer Ausführungsform als eine Ethernet-Switch-Fabric implementiert sein kann, die wiederum mit anderen Komponenten innerhalb eines Fahrzeugs gekoppelt werden kann, einschließlich Anzeigekomponenten, Fahrzeug-Infotainmentsystemen und so weiter. Darüber hinaus ist der Prozessor 1010 (und die Switch-Fabric 1020) auch mit einem Mikrocontroller 1050 gekoppelt.
  • Um Interaktion mit anderen Systemen, einschließlich anderen Fahrzeugen, Straßensystemen, drahtlosen Aktualisierungsquellen, Infotainment-Inhaltsquellen, Sensordatenkommunikation und so weiter zu ermöglichen, können Prozessor 1010 und MCU 1050 außerdem mit einer oder mehreren integrierten Hochfrequenzschaltungen (Radio Frequency Integrated Circuits, RFICs) 1060 gekoppelt sein. Bei Ausführungsformen kann RFIC 1060 dazu konfiguriert werden, 5G-basierte Spezifikationen für Kommunikation von Fahrzeugdaten und anderen Daten über eine Vielzahl von drahtlosen Netzwerken zu unterstützen. Zu diesem Zweck kann RFIC 1060 mit einer oder mehreren Antennen 10700-1070n eines Fahrzeugs gekoppelt werden.
  • Wie in 10 weiter veranschaulicht, kann System 1000 eine Vielzahl von Sensoren 10300- 1030n einschließen, die Sensorinformationen über einen Sensor-Hub 1035 an Prozessor 1010 liefern. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht bei Ausführungsformen nicht eingeschränkt ist, können derartige Sensoren unter anderen Sensorarten Lidar, Ultraschall, Radar und optische Sensoren einschließen. Während das Fahrzeug in Betrieb ist, können derartige Sensoren große Mengen an Sensordaten erhalten. Sensor-Hub 1035 kann dazu konfiguriert werden, mindestens einen Teil dieser Daten zu fusionieren, um Informationen über die Umgebung des Fahrzeugs zur Verfügung durch Prozessor 1010 bereitzustellen. Prozessor 1010 und/oder FPGA 1015 wiederum können diese fusionierten Sensorinformationen in Verbindung mit Durchführen autonomer Fahr-Arbeitslasten verwenden. Während auf dieser hohen Ebene bei der Ausführungsform von 10 gezeigt, ist zu verstehen, dass viele Variationen und Alternativen möglich sind.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • In einem Beispiel schließt eine Vorrichtung Folgendes ein: einen Beschleuniger, der auf einem ersten Die ausgebildet ist, um Anweisungen auszuführen; einen Beschleunigeranforderungsdecoder, der mit dem Beschleuniger gekoppelt ist, um eine erststufige Dekodierung von Anforderungen vom Beschleuniger durchzuführen und die Anforderungen basierend auf der erststufigen Dekodierung zu steuern, wobei der Beschleunigeranforderungsdecoder eine Speicherkarte einschließt, um einen ersten Adressbereich zu identifizieren, der einem lokalen Speicher zugeordnet ist, und einen zweiten Adressbereich, der einem Systemspeicher zugeordnet ist; einen Beschleunigeranforderungsabbilder, der mit dem Beschleunigeranforderungsdecoder gekoppelt ist, um inkohärente Anforderungen zu verfolgen; und einen inkohärenten Anforderungsrouter, der mit dem Beschleunigeranforderungsabbilder gekoppelt ist, um die inkohärenten Anforderungen vom Beschleunigeranforderungsabbilder zu empfangen und eine zweitstufige Dekodierung der inkohärenten Anforderungen durchzuführen, wobei der inkohärente Anforderungsrouter erste inkohärente Anforderungen zu einem Seitenbandrouter des ersten Die routet und zweite inkohärente Anforderungen an einen Rechen-Die leitet, um mit dem ersten Die zu koppeln.
  • In einem Beispiel umfasst die Vorrichtung weiter einen Konverter mit einer Vielzahl von Eingangskanälen, um lokale Speicheranforderungen vom Beschleunigeranforderungsdecoder zu empfangen und die lokalen Speicheranforderungen in ein Speicherformat für Kommunikation mit dem lokalen Speicher zu konvertieren.
  • In einem Beispiel umfasst die Vorrichtung weiter: eine Vielzahl von Speicherroutern, die mit dem Konverter gekoppelt sind; und eine Vielzahl von Speichercontrollern, die jeweils mit einem der Vielzahl von Speicherroutern gekoppelt sind.
  • In einem Beispiel ist der Beschleunigeranforderungsdecoder zum Ausführen einer Speicher-Hash-Funktion auf einer Adresse einer Anforderung zum Identifizieren eines Zielspeicherrouters der Vielzahl von Speicherroutern zum Empfangen der Anforderung ausgebildet.
  • In einem Beispiel ist ein erster Speicherrouter der Vielzahl von Speicherroutern vorgesehen zum: Routen einer ersten lokalen Speicheranforderung zu einem ersten Speichercontroller, der mit dem ersten Speicherrouter gekoppelt ist, wobei der erste Speicherrouter einem Adressbereich zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist; und Routen einer zweiten Speicheranforderung zu einem zweiten Speicherrouter, der mit dem ersten Speicherrouter gekoppelt ist, wenn die zweite Speicheranforderung nicht dem Adressbereich zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist.
  • In einem Beispiel umfasst die Vorrichtung eine mit einer Systemleiterplatte zu koppelnde Beschleunigervorrichtung, wobei die Beschleunigervorrichtung eine erste integrierte Schaltung mit dem ersten Die und eine oder mehrere integrierte Speicherschaltungen mit dem lokalen Speicher umfasst.
  • In einem Beispiel umfasst die Vorrichtung weiter einen oder mehrere mit dem Beschleuniger gekoppelte Kerne, wobei der eine oder die mehreren Kerne zum Abgeben wenigstens einer spezialisierten Funktion an den Beschleuniger ausgebildet sind.
  • In einem weiteren Beispiel umfasst ein Verfahren: Empfangen einer Anforderung von einem Beschleuniger in einem mit dem Beschleuniger gekoppelten Beschleunigeranforderungsdecoder; Durchführen einer erststufigen Dekodierung der Anforderung im Beschleunigeranforderungsdecoder; basierend auf der erststufigen Dekodierung Leiten der Anforderung an einen mit dem Beschleuniger verbundenen lokalen Speicher, wenn die Anforderung eine kohärente Anforderung ist; und basierend auf der erststufigen Dekodierung Leiten der Anforderung an einen inkohärenten Anforderungsrouter, wenn die Anforderung eine inkohärente Anforderung ist.
  • In einem Beispiel umfasst das Verfahren weiter Durchführen einer zweitstufigen Dekodierung der Anforderung im inkohärenten Anforderungsrouter.
  • In einem Beispiel umfasst das Verfahren weiter: basierend auf der zweitstufigen Dekodierung Leiten der Anforderung stromaufwärts zu einem Rechen-Die, wenn die Anforderung auf einen Systemspeicher abzielt; und basierend auf der zweitstufigen Dekodierung Leiten der Anforderung zu einem Seitenbandrouter, wenn die Anforderung eine von einer Konfigurationsanforderung oder einer Seitenbandanforderung ist.
  • In einem Beispiel umfasst das Verfahren weiter, wenn die Anforderung die Konfigurationsanforderung oder die Seitenbandanforderung ist, Routen der Anforderung vom Seitenbandrouter zu einem On-Chip-Ziel-Agenten.
  • In einem Beispiel umfasst das Verfahren weiter, wenn die Anforderung die kohärente Anforderung ist, Abbilden der Anforderung auf einen ausgewählten Speicherrouter einer Vielzahl von Speicherroutern basierend auf der erststufigen Dekodierung.
  • In einem Beispiel umfasst das Verfahren weiter Weiterleiten der Anforderung vom ausgewählten Speicherrouter an einen benachbarten Speicherrouter, wenn die Anforderung nicht einem dem ausgewählten Speicherrouter zugeordneten Adressbereich zugeordnet ist.
  • In einem Beispiel umfasst das Verfahren weiter Senden der Anforderung an den lokalen Speicher über einen ersten Speichercontroller, der mit dem ausgewählten Speicherrouter gekoppelt ist.
  • In einem weiteren Beispiel ist ein computerlesbares Medium einschließlich Anweisungen zum Durchführen des Verfahrens eines beliebigen der obigen Beispiele ausgebildet.
  • In einem weiteren Beispiel ist ein computerlesbares Medium einschließlich Daten von wenigstens einer Maschine zum Herstellen wenigstens einer integrierten Schaltung zu verwenden, um das Verfahren eines beliebigen der obigen Beispiele durchzuführen.
  • In einem anderen Beispiel umfasst eine Vorrichtung Mittel zum Durchführen des Verfahrens eines beliebigen der obigen Beispiele.
  • In einem weiteren Beispiel umfasst ein System: einen Rechen-Die mit einem oder mehreren Kernen; einen mit dem Rechen-Die gekoppelten Systemspeicher, wobei der Systemspeicher mit dem Rechen-Die kohärent zu halten ist; einen mit dem Rechen-Die gekoppelten Beschleuniger-Die, wobei der Beschleuniger-Die wenigstens einen Beschleuniger, einen mit dem wenigstens einen Beschleuniger gekoppelten Beschleunigeranforderungsdecoder zum Durchführen einer erststufigen Dekodierung von Anforderungen vom wenigstens einen Beschleuniger und Steuern der Anforderungen basierend auf der erststufigen Dekodierung, wobei der Beschleunigeranforderungsdecoder eine Speicherkarte zum Identifizieren eines ersten Adressbereichs, der einem lokalen Speicher zugeordnet ist, und eines zweiten Adressbereichs, der dem Systemspeicher zugeordnet ist, einschließt, und einen inkohärenten Anforderungsrouter, der mit dem Beschleunigeranforderungsdecoder gekoppelt ist, um inkohärente Anforderungen vom Beschleunigeranforderungsdecoder zu empfangen und eine zweitstufige Dekodierung der inkohärenten Anforderungen durchzuführen, einschließt; und einen mit dem Beschleuniger-Die gekoppelten lokalen Speicher, wobei der lokale Speicher mit dem Beschleuniger-Die kohärent und mit dem Rechen-Die und dem Systemspeicher inkohärent zu halten ist.
  • In einem Beispiel ist der inkohärente Anforderungsrouter zum Routen erster inkohärenter Anforderungen zu einem Seitenbandrouter des Beschleuniger-Die und zum Leiten zweiter inkohärenter Anforderungen an den Rechen-Die ausgebildet.
  • In einem Beispiel umfasst das System weiter: eine Vielzahl von Speicherroutern, die mit dem Beschleunigeranforderungsdecoder gekoppelt sind; und eine Vielzahl von Speichercontrollern, die jeweils mit einem der Vielzahl von Speicherroutern gekoppelt sind.
  • In einem Beispiel ist der Beschleunigeranforderungsdecoder zum Ausführen einer Speicher-Hash-Funktion auf einer Adresse einer Anforderung zum Identifizieren eines Zielspeicherrouters der Vielzahl von Speicherroutern zum Empfangen der Anforderung ausgebildet.
  • In einem Beispiel ist ein erster Speicherrouter der Vielzahl von Speicherroutern vorgesehen zum: Routen einer ersten lokalen Speicheranforderung zu einem ersten Speichercontroller, der mit dem ersten Speicherrouter gekoppelt ist, wobei der erste Speicherrouter einem Adressbereich des lokalen Speichers zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist; und Routen einer zweiten Speicheranforderung zu einem zweiten Speicherrouter, der mit dem ersten Speicherrouter gekoppelt ist, wenn die zweite Speicheranforderung nicht dem Adressbereich des lokalen Speichers zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist.
  • In einem Beispiel umfasst das System weiter eine Beschleunigerkarte, die den Beschleuniger-Die und den lokalen Speicher einschließt, wobei die Beschleunigerkarte über einen physikalischen Verbinder mit dem Rechen-Die gekoppelt ist.
  • Es ist zu verstehen, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
  • Es wird darauf hingewiesen, dass die Begriffe „Schaltung“ und „Schaltungsanordnung“ hierin austauschbar verwendet werden. Wie hierin verwendet, werden diese Begriffe und der Begriff „Logik“ verwendet, um sich allein oder in beliebiger Kombination auf analoge Schaltungen, digitale Schaltungen, fest verdrahtete Schaltungen, programmierbare Schaltungen, Prozessorschaltungen, Mikrocontrollerschaltungen, Hardware-Logikschaltungen, Zustandsmaschinenschaltungen und/oder jede andere Art von physikalischer Hardwarekomponente zu beziehen. Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann bei einer Ausführungsform eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen hierin beschriebenen Verfahren und Techniken durchzuführen. Natürlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt, und stattdessen können andere Ausführungsformen auf andere Arten von Vorrichtungen zur Verarbeitung von Anweisungen gerichtet sein oder auf ein oder mehrere maschinenlesbare Medien einschließlich Anweisungen, die als Reaktion auf Ausführung auf einer Rechenvorrichtung die Vorrichtung dazu veranlassen, eine oder mehrere der hierin beschriebenen Verfahren und Techniken auszuführen.
  • Ausführungsformen können in Code implementiert sein und sie können auf einem nichttransitorischen Speichermedium, auf dem Anweisungen gespeichert sind, die zum Programmieren eines Systems zum Durchführen der Anweisungen verwendet werden können, gespeichert sein. Ausführungsformen können auch in Daten implementiert und auf einem nichttransitorischen Speichermedium gespeichert sein, was, wenn es von wenigstens einer Maschine verwendet wird, bewirkt, dass die wenigstens eine Maschine wenigstens eine integrierte Schaltung zum Durchführen einer oder mehrerer Operationen herstellt. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert sein, einschließlich Informationen, die bei Verarbeitung in ein SoC oder einen anderen Prozessor das SoC oder den anderen Prozessor zum Durchführen einer oder mehrerer Operationen konfigurieren. Das Speichermedium kann jede Art von Platte einschließen, ohne darauf beschränkt zu sein, einschließlich Disketten, optische Platten, Solid-State-Drives (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs), magnetooptische Platten, Halbleitervorrichtungen wie z. B. Nur-Lese-Speicher (Read-Only Memories, ROMs), Direktzugriffsspeicher (Random Access Memories, RAMs) wie z. B. dynamische Direktzugriffsspeicher (Dynamic Random Access Memories, DRAMs), statische Direktzugriffsspeicher (Static Random Access Memories, SRAMs), löschbare programmierbare Nur-Lese-Speicher (Erasable Programmable Read-Only Memories, EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memories, EEPROMs), magnetische oder optische Karten oder jede andere Art von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
  • Die vorliegende Erfindung wurde hinsichtlich einer beschränkten Zahl von Ausführungsformen beschrieben, der Fachkundige wird aber zahlreiche Modifikationen und Variationen davon erkennen. Die angefügten Ansprüche sollen alle derartigen Modifikationen und Variationen, die zur wahren Wesensart und dem echten Umfang dieser vorliegenden Erfindung gehören, abdecken.

Claims (24)

  1. Vorrichtung, umfassend: einen auf einem ersten Die ausgebildeten Beschleuniger zum Ausführen von Anweisungen; einen mit dem Beschleuniger gekoppelten Beschleunigeranforderungsdecoder zum Durchführen einer erststufigen Dekodierung von Anforderungen vom Beschleuniger und Steuern der Anforderungen basierend auf der erststufigen Dekodierung, wobei der Beschleunigeranforderungsdecoder eine Speicherkarte zum Identifizieren eines ersten Adressbereichs, der einem lokalen Speicher zugeordnet ist, und eines zweiten Adressbereich, der einem Systemspeicher zugeordnet ist, einschließt; einen mit dem Beschleunigeranforderungsdecoder gekoppelten Beschleunigeranforderungsabbilder zum Verfolgen inkohärenter Anforderungen; und einen mit dem Beschleunigeranforderungsabbilder gekoppelten inkohärenten Anforderungsrouter zum Empfangen der inkohärenten Anforderungen vom Beschleunigeranforderungsabbilder und Durchführen einer zweitstufigen Dekodierung der inkohärenten Anforderungen, wobei der inkohärente Anforderungsrouter zum Routen erster inkohärenter Anforderungen zu einem Seitenbandrouter des ersten Die und zum Leiten zweiter inkohärenter Anforderungen an einen Rechen-Die ausgebildet ist, um mit dem ersten Die zu koppeln.
  2. Vorrichtung nach Anspruch 1, weiter umfassend einen Konverter mit einer Vielzahl von Eingangskanälen zum Empfangen lokaler Speicheranforderungen vom Beschleunigeranforderungsdecoder und Umwandeln der lokalen Speicheranforderungen in ein Speicherformat für Kommunikation mit dem lokalen Speicher.
  3. Vorrichtung nach Anspruch 2, weiter umfassend: eine Vielzahl von mit dem Konverter gekoppelten Speicherroutern; und eine Vielzahl von Speichercontrollern, die jeweils mit einem der Vielzahl von Speicherroutern gekoppelt sind.
  4. Vorrichtung nach Anspruch 3, wobei der Beschleunigeranforderungsdecoder zum Ausführen einer Speicher-Hash-Funktion auf einer Adresse einer Anforderung, um einen Zielspeicherrouter der Vielzahl von Speicherroutern zum Empfangen der Anforderung zu identifizieren, ausgebildet ist.
  5. Vorrichtung nach Anspruch 3, wobei ein erster Speicherrouter der Vielzahl von Speicherroutern ausgebildet ist zum: Routen einer ersten lokalen Speicheranforderung zu einem ersten, mit dem ersten Speicherrouter gekoppelten Speichercontroller, wobei der erste Speicherrouter einem Adressbereich zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist; und Routen einer zweiten Speicheranforderung zu einem zweiten, mit dem ersten Speicherrouter gekoppelten Speicherrouter, wenn die zweite Speicheranforderung nicht dem Adressbereich zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist.
  6. Vorrichtung nach einem beliebigen der Ansprüche 1-5, wobei die Vorrichtung eine mit einer Systemleiterplatte zu koppelnde Beschleunigervorrichtung umfasst, wobei die Beschleunigervorrichtung eine erste integrierte Schaltung mit dem ersten Die und eine oder mehrere integrierte Speicherschaltungen mit dem lokalen Speicher umfasst.
  7. Vorrichtung nach einem beliebigen der Ansprüche 1-5, weiter umfassend einen oder mehrere mit dem Beschleuniger gekoppelte Kerne, wobei der eine oder die mehreren Kerne zum Abgeben wenigstens einer spezialisierten Funktion an den Beschleuniger ausgebildet sind.
  8. Maschinenlesbares Medium mit darauf gespeicherten Anweisungen, die bei Ausführung durch eine Maschine die Maschine zum Durchführen eines Verfahrens veranlassen, umfassend: Empfangen einer Anforderung von einem Beschleuniger in einem mit dem Beschleuniger gekoppelten Beschleunigeranforderungsdecoder; Durchführen einer erststufigen Dekodierung der Anforderung im Beschleunigeranforderungsdecoder; basierend auf der erststufigen Dekodierung Leiten der Anforderung an einen dem Beschleuniger zugeordneten lokalen Speicher, wenn die Anforderung eine kohärente Anforderung ist; und basierend auf der erststufigen Dekodierung Leiten der Anforderung an einen inkohärenten Anforderungsrouter, wenn die Anforderung eine inkohärente Anforderung ist.
  9. Maschinenlesbares Medium nach Anspruch 8, wobei das Verfahren weiter Durchführen einer zweitstufigen Dekodierung der Anforderung im inkohärenten Anforderungsrouter umfasst.
  10. Maschinenlesbares Medium nach Anspruch 9, wobei das Verfahren weiter umfasst: basierend auf der zweitstufigen Dekodierung Leiten der Anforderung stromaufwärts an einen Rechen-Die, wenn die Anforderung auf einen Systemspeicher abzielt; und basierend auf der zweitstufigen Dekodierung Leiten der Anforderung an einen Seitenbandrouter, wenn die Anforderung eine von einer Konfigurationsanforderung oder einer Seitenbandanforderung ist.
  11. Maschinenlesbares Medium nach Anspruch 10, wobei das Verfahren weiter, wenn die Anforderung die Konfigurationsanforderung oder die Seitenbandanforderung ist, Routen der Anforderung vom Seitenbandrouter zu einem On-Chip-Ziel-Agenten umfasst.
  12. Maschinenlesbares Medium nach Anspruch 8, wobei das Verfahren weiter, wenn die Anforderung die kohärente Anforderung ist, Abbilden der Anforderung auf einen ausgewählten Speicherrouter einer Vielzahl von Speicherroutern basierend auf der erststufigen Dekodierung umfasst.
  13. Maschinenlesbares Medium nach Anspruch 12, wobei das Verfahren weiter Weiterleiten der Anforderung vom ausgewählten Speicherrouter an einen benachbarten Speicherrouter, wenn die Anforderung nicht einem dem ausgewählten Speicherrouter zugeordneten Adressbereich zugeordnet ist, umfasst.
  14. Maschinenlesbares Medium nach Anspruch 12, wobei das Verfahren weiter Senden der Anforderung an den lokalen Speicher über einen ersten, mit dem ausgewählten Speicherrouter gekoppelten Speichercontroller umfasst.
  15. System, umfassend: einen Rechen-Die mit einem oder mehreren Kernen; einen mit dem Rechen-Die gekoppelten Systemspeicher, wobei der Systemspeicher mit dem Rechen-Die kohärent zu halten ist, einen mit dem Rechen-Die gekoppelten Beschleuniger-Die, wobei der Beschleuniger-Die wenigstens einen Beschleuniger, einen mit dem wenigstens einen Beschleuniger gekoppelten Beschleunigeranforderungsdecoder zum Durchführen einer erststufigen Dekodierung von Anforderungen vom wenigstens einen Beschleuniger und Steuern der Anforderungen basierend auf der erststufigen Dekodierung, wobei der Beschleunigeranforderungsdecoder eine Speicherkarte zum Identifizieren eines ersten Adressbereichs, der einem lokalen Speicher zugeordnet ist, und eines zweiten Adressbereichs, der dem Systemspeicher zugeordnet ist, einschließt, und einen mit dem Beschleunigeranforderungsdecoder gekoppelten inkohärenten Anforderungsrouter zum Empfangen inkohärenter Anforderungen vom Beschleunigeranforderungsdecoder und Durchführen einer zweitstufigen Dekodierung der inkohärenten Anforderungen, einschließt; und einen mit dem Beschleuniger-Die gekoppelten lokalen Speicher, wobei der lokale Speicher mit dem Beschleuniger-Die kohärent und mit dem Rechen-Die und dem Systemspeicher inkohärent zu halten ist.
  16. System nach Anspruch 15, wobei der inkohärente Anforderungsrouter zum Routen erster inkohärenter Anforderungen zu einem Seitenbandrouter des Beschleuniger-Die und zum Leiten zweiter inkohärenter Anforderungen an den Rechen-Die ausgebildet ist.
  17. System nach Anspruch 15, weiter umfassend: eine Vielzahl von mit dem Beschleunigeranforderungsdecoder gekoppelten Speicherroutern; und eine Vielzahl von Speichercontrollern, die jeweils mit einem der Vielzahl von Speicherroutern gekoppelt sind.
  18. System nach Anspruch 17, wobei der Beschleunigeranforderungsdecoder zum Ausführen einer Speicher-Hash-Funktion auf einer Adresse einer Anforderung zum Identifizieren eines Zielspeicherrouters der Vielzahl von Speicherroutern zum Empfangen der Anforderung ausgebildet ist.
  19. System nach Anspruch 17, wobei ein erster Speicherrouter der Vielzahl von Speicherroutern ausgebildet ist zum: Routen einer ersten lokalen Speicheranforderung zu einem ersten, mit dem ersten Speicherrouter gekoppelten Speichercontroller, wobei der erste Speicherrouter einem Adressbereich des lokalen Speichers zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist; und Routen einer zweiten Speicheranforderung zu einem zweiten, mit dem ersten Speicherrouter gekoppelten Speicherrouter, wenn die zweite Speicheranforderung nicht dem Adressbereich des lokalen Speichers zugeordnet ist, mit dem der erste Speichercontroller gekoppelt ist.
  20. System nach einem beliebigen der Ansprüche 15-19, weiter umfassend eine Beschleunigerkarte, die den Beschleuniger-Die und den lokalen Speicher einschließt, wobei die Beschleunigerkarte über einen physikalischen Verbinder mit dem Rechen-Die gekoppelt ist.
  21. Vorrichtung, umfassend: auf einem ersten Die ausgebildete Beschleunigermittel zum Ausführen von Anweisungen; mit den Beschleunigermitteln gekoppelte Beschleunigeranforderungsdecodermittel zum Durchführen einer erststufigen Dekodierung von Anforderungen von den Beschleunigermitteln und Steuern der Anforderungen basierend auf der erststufigen Dekodierung, wobei die Beschleunigeranforderungsdecodermittel eine Speicherkarte zum Identifizieren eines ersten Adressbereichs, der einem lokalen Speicher zugeordnet ist, und eines zweiten Adressbereichs, der einem Systemspeicher zugeordnet ist, einschließen; mit den Beschleunigeranforderungsdecodermitteln gekoppelte Beschleunigeranforderungsabbildungsmittel zum Verfolgen inkohärenter Anforderungen; und mit den Beschleunigeranforderungsabbildungsmitteln gekoppelte inkohärente Anforderungsroutermittel zum Empfangen der inkohärenten Anforderungen von den Beschleunigeranforderungsabbildungsmitteln und Durchführen einer zweitstufigen Dekodierung der inkohärenten Anforderungen, wobei die inkohärenten Anforderungsroutermittel zum Routen erster inkohärenter Anforderungen zu einem Seitenbandrouter des ersten Die und zum Leiten zweiter inkohärenter Anforderungen an einen Rechen-Die ausgebildet sind, um mit dem ersten Die zu koppeln.
  22. Vorrichtung nach Anspruch 21, weiter umfassend Konvertermittel einschließlich einer Vielzahl von Eingangskanälen zum Empfangen lokaler Speicheranforderungen von den Beschleunigeranforderungsdecodermitteln und Umwandeln der lokalen Speicheranforderungen in ein Speicherformat für Kommunikation mit dem lokalen Speicher.
  23. Vorrichtung nach Anspruch 22, weiter umfassend: eine Vielzahl von mit den Konvertermitteln gekoppelten Speicherroutern; und eine Vielzahl von Speichercontrollern, die jeweils mit einem der Vielzahl von Speicherroutern gekoppelt sind.
  24. Vorrichtung nach Anspruch 23, wobei die Beschleunigeranforderungsdecodermittel zum Ausführen einer Speicher-Hash-Funktion auf einer Adresse einer Anforderung zum Identifizieren eines Zielspeicherrouters der Vielzahl von Speicherroutern zum Empfangen der Anforderung ausgebildet sind.
DE102019101114.0A 2018-03-08 2019-01-17 System, Vorrichtung und Verfahren zum Bereitstellen einer Fabric für einen Beschleuniger Pending DE102019101114A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/915,476 US11231927B2 (en) 2018-03-08 2018-03-08 System, apparatus and method for providing a fabric for an accelerator
US15/915,476 2018-03-08

Publications (1)

Publication Number Publication Date
DE102019101114A1 true DE102019101114A1 (de) 2019-09-12

Family

ID=65229556

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019101114.0A Pending DE102019101114A1 (de) 2018-03-08 2019-01-17 System, Vorrichtung und Verfahren zum Bereitstellen einer Fabric für einen Beschleuniger

Country Status (3)

Country Link
US (1) US11231927B2 (de)
CN (1) CN110245107A (de)
DE (1) DE102019101114A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347643B2 (en) * 2018-06-29 2022-05-31 Intel Corporation Control logic and methods to map host-managed device memory to a system address space
US11914903B2 (en) * 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
US11954345B2 (en) * 2021-12-03 2024-04-09 Samsung Electronics Co., Ltd. Two-level indexing for key-value persistent storage device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8929373B2 (en) 2011-09-29 2015-01-06 Intel Corporation Sending packets with expanded headers
US9100348B2 (en) * 2011-10-03 2015-08-04 Intel Corporation Managing sideband routers in on-die system fabric
US9600431B2 (en) * 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer
US10268583B2 (en) * 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
WO2016100142A2 (en) * 2014-12-15 2016-06-23 Hyperion Core Inc. Advanced processor architecture
US9891282B2 (en) 2015-12-24 2018-02-13 Intel Corporation Chip fabric interconnect quality on silicon
EP3812900B1 (de) * 2016-12-31 2023-11-29 Intel Corporation Systeme, verfahren und vorrichtungen zum heterogenen computing

Also Published As

Publication number Publication date
CN110245107A (zh) 2019-09-17
US20190042240A1 (en) 2019-02-07
US11231927B2 (en) 2022-01-25

Similar Documents

Publication Publication Date Title
DE102018006890B4 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE102018006756A1 (de) Beschleuniger-Fabric
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE112010001469B4 (de) Flexible Integration von Endpunktlogik in unterschiedlichen Plattformen
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102019108376A1 (de) Sequenz zur Aushandlung und Aktivierung von Flexbus-Protokollen
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102018212479A1 (de) Technologien zum Verwalten einer flexiblen Host-Schnittstelle eines Netzwerkschnittstellen-Controllers
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE112017001148T5 (de) Abflachende portalbrücke .
DE102019101114A1 (de) System, Vorrichtung und Verfahren zum Bereitstellen einer Fabric für einen Beschleuniger
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112008001957T5 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112020006858T5 (de) Dynamische interrupt-bereitstellung