DE102019122363A1 - Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte) - Google Patents

Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte) Download PDF

Info

Publication number
DE102019122363A1
DE102019122363A1 DE102019122363.6A DE102019122363A DE102019122363A1 DE 102019122363 A1 DE102019122363 A1 DE 102019122363A1 DE 102019122363 A DE102019122363 A DE 102019122363A DE 102019122363 A1 DE102019122363 A1 DE 102019122363A1
Authority
DE
Germany
Prior art keywords
card
memory
dimm
interface
requests
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
DE102019122363.6A
Other languages
English (en)
Inventor
Sharath Raghava
Dheeraj Subbareddy
Kavitha Prasad
Ankireddy Nalamalpu
Harsha Gupta
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 DE102019122363A1 publication Critical patent/DE102019122363A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • 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
    • 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)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)

Abstract

Eine Zentralverarbeitungseinheit (CPU) kann direkt an eine doppelreihige Beschleuniger-Arbeitsspeichermodul(DIMM)-Karte gekoppelt sein, die in einen DIMM-Schlitz eingesteckt ist. Die CPU kann eine Master-Arbeitsspeichersteuerung enthalten, die über eine Schnittstelle mit niedriger Latenz und doppelter Datenrate (DDR) Anforderungen sendet oder Aufgaben zur Beschleuniger-DIMM-Karte auslagert. Die Beschleuniger-DIMM-Karte kann eine Slave-Arbeitsspeichersteuerung zum Übersetzen der empfangenen Anforderungen, einen Decodierer zum Decodieren der übersetzten Anforderungen, Steuerverschaltung zum Arrangieren des Datenflusses innerhalb der DIMM-Karte, Hardware-Beschleunigungsressourcen, die dynamisch programmiert werden können, um eine breite Vielfalt an benutzerdefinierten Funktionen zu unterstützen, und Eingabe-Ausgabe-Komponenten zum Ankoppeln an verschiedene Arten von nichtflüchtigem und/oder flüchtigem Arbeitsspeicher und zum Anbinden an andere Arten von Speicher- und Verarbeitungsvorrichtungen enthalten.

Description

  • Diese Anmeldung beansprucht den Vorteil der vorläufigen Patentanmeldung Nr. 62/719,911, angemeldet am 20. August 2018, die hierdurch hierin unter Bezugnahme in ihrer Gesamtheit aufgenommen ist.
  • Stand der Technik
  • Dies betrifft integrierte Schaltkreise und genauer programmierbare integrierte Schaltkreise in einer Hardware-Beschleunigungsplattform.
  • Programmierbare integrierte Schaltkreise sind ein Typ von integriertem Schaltkreis, der von einem Benutzer programmiert werden kann, um eine gewünschte benutzerdefinierte Logikfunktion zu implementieren. In einem typischen Szenario verwendet ein Logikdesigner computerunterstützte Designwerkzeuge, um einen benutzerdefinierten Logikschaltkreis zu konstruieren. Wenn der Designprozess abgeschlossen ist, erzeugen die computerunterstützten Designwerkzeuge Konfigurationsdaten. Die Konfigurationsdaten werden in Arbeitsspeicherelemente auf einem programmierbaren integrierten Schaltkreis geladen, um die Vorrichtung zu konfigurieren, um die Funktionen des benutzerdefinierten Logikschaltkreises durchzuführen. Programmierbare Vorrichtungen können zur gemeinsamen Verarbeitung in Massendatenanwendungen, schnellen Datenanwendungen oder Hochleistungsrechenanwendungen (HPC-Anwendungen) verwendet werden. Programmierbare Vorrichtungen können zum Beispiel in Anwendungsbeschleunigungsaufgaben in einem Rechenzentrum verwendet werden und können während einer Rechenzentrumoperation neu programmiert werden, um unterschiedliche Aufgaben durchzuführen. Durch das Auslagern von rechenintensiven Aufgaben von einem Hostprozessor auf hochparallele Beschleunigungsressourcen auf einer programmierbaren Vorrichtung (manchmal als Coprozessor oder Beschleunigungsprozessor bezeichnet) wird der Hostprozessor freigegeben, um andere kritische Verarbeitungsaufgaben durchzuführen. Die Verwendung von programmierbaren Vorrichtungen als Hardwarebeschleuniger kann deshalb bei der Lieferung von verbesserten Geschwindigkeiten, verbesserter Latenz, Leistungseffizienz und Flexibilität für durchgehendes Cloudrechnen, Vernetzen, Speichern, künstliche Intelligenz, autonomes Fahren, virtuelle Realität, erweiterte Realität, Gaming und andere datenzentrierte Anwendungen helfen.
  • In diesem Zusammenhang ergeben sich die hierin beschriebenen Ausführungsformen.
  • Figurenliste
    • 1 ist ein Diagramm eines veranschaulichenden Systems mit einem Hostprozessor, der an einen programmierbaren Beschleunigungs-Coprozessor gekoppelt ist, nach einer Ausführungsform.
    • 2 ist ein Diagramm eines veranschaulichenden programmierbaren integrierten Schaltkreises nach einer Ausführungsform.
    • 3 ist ein Diagramm eines Systems, in dem der Hostprozessor über einen Pfad mit hoher Latenz an den programmierbaren Beschleunigungs-Coprozessor gekoppelt ist.
    • 4 ist ein Diagramm eines veranschaulichenden Systems, in dem der Hostprozessor an eine programmierbare doppelreihige Beschleunigungs-Arbeitsspeichermodul-Karte (Beschleunigungs-DIMM-Karte) gekoppelt ist, nach einer Ausführungsform.
    • 5 ist ein Diagramm einer veranschaulichenden programmierbaren Beschleuniger-DIMM-Karte nach einer Ausführungsform.
    • 6 ist ein Ablaufdiagramm von veranschaulichenden Schritten zum Betreiben der in 4 und 5 gezeigten programmierbaren Beschleuniger-DIMM-Karte nach einer Ausführungsform.
    • 7 ist ein Diagramm, das die Rechenzeit verschiedener Aufgaben zeigt, die vom System von 4 durchgeführt werden können, nach einer Ausführungsform.
  • Ausführliche Beschreibung
  • Die vorliegenden Ausführungsformen betreffen ein System, in dem ein Hostprozessor (z. B. eine Zentralverarbeitungseinheit oder CPU) an eine programmierbare Beschleunigungsvorrichtung gekoppelt ist, die auf einer doppelreihigen Arbeitsspeichermodul(DIMM)-Karte gebildet ist. Die DIMM-Karte kann auch verschiedene Arten von Arbeitsspeichervorrichtungen enthalten, die nicht auf dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) beschränkt sind und an die programmierbare Beschleunigungsvorrichtung gekoppelt sind und auf die von dieser zugegriffen wird.
  • Der Hostprozessor weist eine Master-Arbeitsspeichersteuerung auf, die mit der DIMM-Karte über einen niedrigen Latenzpfad kommuniziert. Da der Kommunikationspfad zwischen dem Hostprozessor und der DIMM-Karte latenzempfindlich ist, kann die DIMM-Karte eine Slave-Arbeitsspeichersteuerung aufweisen, die über eine Schnittstelle an die Master-Arbeitsspeichersteuerung auf der CPU unter Verwendung eines Protokolls mit doppelter Datenrate (DDR), wie des transaktionalen DDR(DDR-T)-Protokolls oder eines beliebigen nichtflüchtigen Arbeitsspeicherprotokolls, ankoppelt. In diesem Beispiel werden Rechenoperationen, die am Arbeitsspeicher in der DIMM-Karte durchgeführt werden müssen, codiert und an die programmierbare Beschleunigungsvorrichtung als DDR-T-Transaktionen gesandt. Da auf den Arbeitsspeicher auf der DIMM-Karte unter Verwendung der programmierbaren Beschleunigungsvorrichtung zugegriffen wird, kann eine beliebige Arbeitsspeicherschnittstelle unter Verwendung programmierbarer Eingabe-Ausgabe(EA)-Komponenten auf der programmierbaren Vorrichtung implementiert werden, während die Schnittstelle der CPU als DDR-T beibehalten wird.
  • Das Auslagern von rechnerisch intensiven Funktionen auf die Beschleuniger-DIMM-Karte ist oft aufgrund der hoch parallelen Natur der programmierbaren Vorrichtung effizienter als ein natives Durchführen dieser Funktionen auf der Host-CPU. Die algorithmische Logik in der programmierbaren Beschleunigungsvorrichtung kann auf eine bestimmte Anwendung oder Datenzugriffsmuster maßgeschneidert werden, die von der aktuellen Arbeitslast verwendet werden. Beispielsweise werden Minimal-/Maximal- oder andere statistische Operationen an großen Mengen von sequenziellen Daten üblicherweise am besten unter Verwendung der programmierbaren Beschleunigervorrichtung durchgeführt, ohne den Arbeitsspeicher-Zwischenspeicher auf der Host-CPU selbst zu belasten.
  • Es ist für Fachleute ersichtlich, dass die vorliegenden Ausführungsbeispiele ohne einige oder alle dieser spezifischen Details ausgeführt werden können. In anderen Fällen wurden wohlbekannte Vorgänge nicht im Detail beschrieben, um die vorliegenden Ausführungsformen nicht unnötig zu verschleiern.
  • 1 ist ein Diagramm eines veranschaulichenden Systems mit einem Hostprozessor, der an einen programmierbaren Beschleunigungs-Coprozessor gekoppelt ist. Wie in 1 gezeigt enthält das System 10 einen Hostprozessor wie Hostprozessor 12, Arbeitsspeicher wie Hauptarbeitsspeicher 14, der mit dem Hostprozessor 12 verbunden ist, und einen Coprozessor wie Coprozessor 100, auf den eine oder mehrere rechenintensive Aufgaben vom Hostprozessor 12 ausgelagert werden können.
  • Der Hostprozessor 12 kann zum Beispiel eine Zentralverarbeitungseinheit (CPU), ein Mikroprozessor, ein Mikrocontroller oder eine Grafikverarbeitungseinheit (GPU) sein, der bzw. die als eine anwendungsspezifische integrierte SchaltkreisVorrichtung (ASIC-Vorrichtung) oder eine anwendungsspezifische Standardprodukt-Vorrichtung (ASSP-Vorrichtung) implementiert ist. Der Hostprozessor 12 (manchmal als eine Host-CPU oder einfach CPU bezeichnet) kann einen oder mehrere Verarbeitungskerne 20 zum Verarbeiten von Anweisungen eines Computerprogramms enthalten. Jeder Prozessorkern 20 kann eine Steuereinheit 22, Register 24, eine arithmetisch-logische Einheit (ALU) 26 und einen zugehörigen Arbeitsspeicher-Zwischenspeicher 28 enthalten.
  • Die Steuereinheit 22 kann für ein Arrangieren der Gesamtoperation des Kerns 20 verantwortlich sein und kann Schaltkreise zum Abrufen von Anweisungen, die in einem Programmarbeitsspeicher gespeichert sind, zum Decodieren der abgerufenen Anweisungen und nachfolgenden Aussenden der decodierten Anweisungen zur Ausführung enthalten. Bei Bedarf kann die arithmetisch-logische Einheit 26 verwendet werden, um arithmetische und logische/boolesche Operationen an den Daten durchzuführen, wie sie in den Anweisungen angegeben sind. Die Ergebnisse der ausgeführten Operationen können zurück in den Arbeitsspeicher gespeichert werden. Die Register 24 können einen temporären Hochgeschwindigkeitsspeicher für Sonderzwecke für Kern 20 bereitstellen. Die Register 24 können Anweisungsregister zum Speichern der aktuell ausgeführten Anweisung, Datenregister zum Speichern von Daten, die darauf warten, verarbeitet zu werden, oder von Daten, die aus dem aktuellen Prozess resultieren, Adressregister, Statusregister, Programmzustandsregister usw. enthalten.
  • Arbeitsspeicher-Zwischenspeicher 28 ist ein kleinerer und schnellerer Arbeitsspeicher, der Kopien von Daten aus kürzlich oder häufig verwendeten Hauptarbeitsspeicherpositionen speichert, sodass nachfolgende Anforderungen vom Prozessor schneller bedient werden können als ein Abrufen der Daten aus dem Hauptarbeitsspeicher (d. h., einem relativ zeitraubenden Prozess). Im Beispiel von 1 kann die CPU 12 auch einen Zwischenspeicher 30 enthalten, der in der Gesamthierarchie unter dem Zwischenspeicher 28 sitzt und optional von zwei oder mehr CPU-Kernen 20 gemeinsam genutzt werden kann.
  • Der Hauptarbeitsspeicher 14 bezeichnet physischen Arbeitsspeicher, auf den die CPU 12 direkt zugreifen kann. Der Hauptarbeitsspeicher 14 ist herkömmlicherweise unter Verwendung flüchtiger Arbeitsspeicherkomponenten, wie dynamischem Arbeitsspeicher mit wahlfreiem Zugriff (DRAM) implementiert. Der Hauptarbeitsspeicher (auch manchmal als primärer Speicher bezeichnet) wird von externen Massenspeichervorrichtungen wie Plattenlaufwerken, optischen Laufwerken und Bandlaufwerken unterschieden. Die CPU 12 kann nur Daten manipulieren, die im Hauptarbeitsspeicher 14 gespeichert sind. Deshalb muss jedes Programm, das ausgeführt wird, oder jede Datei, auf die zugegriffen wird, aus der externen Massenspeichervorrichtung in den Hauptarbeitsspeicher 14 kopiert werden. Die Speichermenge im Hauptarbeitsspeicher 14 bestimmt, wie viele Programme zu einem beliebigen Zeitpunkt ausgeführt werden können, und die Datenmenge, die dem Programm leicht zur Verfügung gestellt werden kann.
  • Der Coprozessor 100 kann eine programmierbare integrierte Schaltkreisvorrichtung oder eine programmierbare Logikvorrichtung sein. Beispiele programmierbarer Logikvorrichtungen enthalten programmierbare Anordnungslogik (PALs), programmierbare Logikanordnungen (PLAs), feldprogrammierbare Logikanordnungen (FPLAs), elektrisch programmierbare Logikvorrichtungen (EPLDs), elektrisch löschbare programmierbare Logikvorrichtungen (EEPLDs), Logikzellenanordnungen (LCAs), komplexe programmierbare Logikvorrichtungen (CPLDs) und feldprogrammierbare Gatearrays (FPGAs), um nur einige zu nennen. Hierin werden Konfigurationen als ein Beispiel beschrieben, in denen der Coprozessor 100 als ein FPGA implementiert ist.
  • 2 zeigt, wie die Vorrichtung 100 (z. B. ein feldprogrammierbarer integrierter Gatearray-Schaltkreischip) eine zweidimensionale Anordnung von funktionalen Blöcken enthalten kann, die Logikanordnungsblöcke (LABs) 110 und andere funktionale Blöcke, wie Arbeitsspeicherblöcke mit wahlfreiem Zugriff (RAM-Blöcke) 130 und digitale Signalverarbeitungsblöcke (DSP-Blöcke) 120, enthalten. Funktionale Blöcke wie die LABs 110 können kleinere programmierbare Bereiche (z. B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) enthalten, die Eingangssignale empfangen und benutzerdefinierte Funktionen an den Eingangssignalen durchführen, um Ausgangssignale zu erzeugen. Die LABs 110 können auch in größere programmierbare Bereiche gruppiert werden, die manchmal als Logiksektoren bezeichnet werden, die individuell von entsprechenden Logiksektorverwaltungen verwaltet und konfiguriert werden. Die Gruppierung der programmierbaren Logikressourcen auf der Vorrichtung 100 in Logiksektoren, Logikanordnungsblöcke, Logikelemente oder adaptive Logikmodule ist nur illustrativ. Im Allgemeinen kann die Vorrichtung 100 funktionale Logikblöcke einer beliebigen geeigneten Größe und eines beliebigen geeigneten Typs enthalten, die in Übereinstimmung mit einer beliebigen geeigneten Logikressourcenhierarchie organisiert sein können.
  • Die programmierbare Logikvorrichtung 100 kann programmierbare Arbeitsspeicherelemente enthalten. In die Arbeitsspeicherelemente können unter Verwendung von Eingabe-Ausgabe-Elementen (EAEs) 102 Konfigurationsdaten (auch Programmierdaten oder Konfigurationsbitstrom genannt) geladen werden. Nach dem Laden stellen die Arbeitsspeicherelemente jeweils ein entsprechendes statisches Steuersignal bereit, das den Betrieb eines assoziierten funktionalen Blocks (z. B. der LABs 110, des DSP 120, des RAM 130 oder der Eingabe-Ausgabe-Elemente 102) steuert.
  • In einem typischen Szenario werden die Ausgaben der geladenen Arbeitsspeicherelemente an die Gatter von Metall-Oxid-Halbleitertransistoren in einem funktionalen Block angelegt, um bestimmte Transistoren ein- oder auszuschalten und dadurch die Logik im funktionalen Block einschließlich der Leitungspfade zu konfigurieren. Programmierbare Logikschaltkreiselemente, die auf diese Weise gesteuert werden können, enthalten Teile von Multiplexern (z. B. Multiplexer, die zum Bilden von Leitungspfaden in Zwischenverbindungsschaltkreisen verwendet werden), Nachschlagetabellen, Logikanordnungen, AND-, OR-, NAND- und NOR-Logikgatter, Durchgangsgatter usw.
  • Die Arbeitsspeicherelemente können beliebige geeignete flüchtige und/oder nichtflüchtige Arbeitsspeicherstrukturen wie Direktzugriffsarbeitsspeicher(RAM)-Zellen, Sicherungen, Antisicherungen, programmierbare Direktzugriffsarbeitsspeicher-Zellen, maskenprogrammierte und laserprogrammierte Strukturen, Kombinationen dieser Strukturen usw. verwenden. Da Konfigurationsdaten während der Programmierung in die Arbeitsspeicherelemente geladen werden, werden die Arbeitsspeicherelemente manchmal als Konfigurationsarbeitsspeicher, Konfigurations-Direktzugriffsarbeitsspeicher (CRAM) oder programmierbare Arbeitsspeicherelemente bezeichnet. Die programmierbare Logikvorrichtung (PLD) 100 kann ausgelegt sein, ein benutzerdefiniertes Schaltkreisdesign zu implementieren. Der Konfigurations-RAM kann zum Beispiel so programmiert sein, dass die LABs 110, der DSP 120 und der RAM 130, programmierbare Zwischenverbindungsverschaltung (z. B. vertikale Kanäle 140 und horizontale Kanäle 150) und die Eingabe-Ausgabe-Elemente 102 die Implementierung des Schaltkreisdesigns bilden.
  • Darüber hinaus kann die programmierbare Logikvorrichtung Eingabe-Ausgabe-Elemente (EAEs) 102 zum Steuern von Signalen von der Vorrichtung 100 weg und zum Empfangen von Signalen von anderen Vorrichtungen aufweisen. Die Eingabe-Ausgabe-Elemente 102 können parallele Eingabe-Ausgabe-Verschaltung, serielle Daten-Sende-Empfänger-Verschaltung, differenzielle Empfänger- und Sender-Verschaltung oder eine andere Verschaltung enthalten, die verwendet wird, um einen integrierten Schaltkreis mit einem anderen integrierten Schaltkreis zu verbinden.
  • Die Vorrichtung 100 kann auch eine programmierbare Zwischenverbindungsverschaltung in Form von vertikalen Leitkanälen 140 (d. h. Zwischenverbindungen, die entlang einer vertikalen Achse der PLD 100 gebildet sind) und horizontalen Leitkanälen 150 (d. h. Zwischenverbindungen, die entlang einer horizontalen Achse der PLD 100 gebildet sind) enthalten, wobei jeder Leitkanal mindestens eine Spur enthält, um mindestens eine Leitung zu leiten. Falls gewünscht kann die Zwischenverbindungsverschaltung Pipelineelemente enthalten und auf die in diesen Pipelineelementen gespeicherten Inhalte kann während des Betriebs zugegriffen werden. Ein Programmierschaltkreis kann zum Beispiel Lese- und Schreibzugriff auf ein Pipelineelement bieten.
  • Es ist anzumerken, dass andere Leittopologien abgesehen von der in 1 gezeigten Topologie der Zwischenverbindungsverschaltung im Geltungsbereich der vorliegenden Erfindung enthalten sein sollen. Beispielsweise kann die Leittopologie Leitungen enthalten, die diagonal verlaufen oder die horizontal und vertikal entlang unterschiedlicher Teile ihrer Erstreckung verlaufen sowie Leitungen, die im Fall von dreidimensionalen integrierten Schaltkreisen auf die Vorrichtungsebene senkrecht stehen, und der Treiber einer Leitung kann sich an einem anderen Punkt befinden als an einem Ende einer Leitung. Die Leittopologie kann globale Leitungen enthalten, die im Wesentlichen die gesamte PLD 100 umspannen, teilweise globale Leitungen, wie Leitungen, die einen Teil der PLD 100 umspannen, gestaffelte Leitungen einer bestimmten Länge, kleinere lokale Leitungen oder eine beliebige andere geeignete Zwischenverbindungsressourcenanordnung.
  • Im Allgemeinen kann die Kombination der programmierbaren Logik (z. B. der LABs 110 und anderer konfigurierbarer Logikkomponenten) und der programmierbaren Leitverschaltung (z. B. der vertikalen Leitkanäle 140 und der nhorizontale Leitkanäle 150) auf der Vorrichtung 100 als „Softlogik“ bezeichnet werden. Softlogik, wie Softlogik 190 auf der programmierbaren Vorrichtung 100 kann ausgelegt sein, einen oder mehrere Hardware(HW)-Beschleuniger wie HW-Beschleunigungseinheiten 192 zu implementieren, um dabei zu helfen, die Leistung des Hostprozessors 12 zu beschleunigen. Als solcher konfiguriert, wird der Coprozessor 100 manchmal als ein Hardware-Beschleuniger bezeichnet. Als Beispiele können die HW-Beschleunigungseinheiten 192 auf dem Coprozessor 100 verwendet werden, um eine Vielfalt von Funktionen zu beschleunigen, die unter anderem enthalten können: Verschlüsselung/Entschlüsselung, Komprimierung/Dekomprimierung, schnelle Fourier-Transformationen, Videocodierung/-decodierung, faltende neuronale Netze (CNN), Firewalls, Domänennamensdienste (DNS), Lastenausgleich, zwischenspeichernde Netzwerkadressenübersetzung (NAT) und andere geeignete Netzwerkpaketverarbeitungsanwendungen, um nur einige zu nennen.
  • 3 ist ein Diagramm eines Systems 10, das Hardwarebeschleunigungsressourcen einsetzt. Wie in 3 gezeigt, ist die Host-CPU 12 über einen Pfad 301 an eine doppelreihige Hauptarbeitsspeichermodul(DIMM)-Komponente 14 gekoppelt. Insbesondere kann die CPU 12 eine Arbeitsspeichersteuerung 302 zum Ankoppeln an ein Hauptarbeitsspeicher-DIMM 14 unter Verwendung von Schnittstellen mit doppelter Datenrate (DDR) wie DDR-Typ-3 (DDR3) oder DDR-Typ-4 (DDR4) enthalten. Die Host-CPU 12 ist auch an eine externe Massenspeichervorrichtung wie Massenspeichervorrichtung 306 gekoppelt. Die CPU 12 kann (zum Beispiel) eine Ethernet-Steuerung 304 zum Ankoppeln an den Massenspeicher 306 enthalten. Im Allgemeinen könnte die Steuerung 304 auch die Universal-Serial-Bus(USB)-Schnittstelle, Serial-AT-Attachment(SATA)-Schnittstelle oder andere Alt-Computerbusschnittstellenstandards unterstützen.
  • Die CPU 12 kann ferner über einen Pfad 309 an die Beschleunigungs-FPGA-Vorrichtung 100 gekoppelt sein. Die FPGA-Vorrichtung 100 kann ausgelegt sein, Beschleunigungs-Hardwareressourcen für die Host-CPU 12 bereitzustellen. Die CPU 12 kann (zum Beispiel) eine Peripheral-Component-Interconnect-Express(PCIe)-Steuerung 308 oder eine kohärente Punkt-zu-Punkt-Zwischenverbindungssteuerung wie die von INTEL Corporation entwickelte UltraPath-Interconnect(UPI)-Steuerung 308 enthalten. Das FPGA 100 kann auch eine entsprechende Steuerung 310 (z. B. eine PCIe-Steuerung, eine UPI-Steuerung usw.) zum Ankoppeln an die Steuerung 308 enthalten.
  • Das FPGA 100 kann ferner externe Eingabe-Ausgabe(EA)-Blöcke wie externe EA-Blöcke 312 enthalten. Die externen EA-Blöcke 312 können breite parallele Schnittstellen wie externe Arbeitsspeicherschnittstellen (EMIF) oder generischere Schnittstellen wie GPIO- (Eingabe-Ausgabe für Universalzwecke) oder LVDS-Schnittstellen (differenzielle Niederspannungs-Signalgebung) unterstützen. Externe Arbeitsspeicherschnittstellen, die von den Blöcken 312 unterstützt werden, können Schnittstellen mit doppelter Datenrate (DDR) wie DDR-Typ-3 (DDR3), Niedrigenergie-DDR3 (LPDDR3), DDR-Typ-4 (DDR4), Niedrigenergie-DDR4 (LPDDR4), DDR-Typ-5 (DDR5), Grafik-DDRx, Schnittstellen mit vierfacher Datenrate (QDR), eine Open-NAND-Flash-Schnittstelle (ONFI) oder andere geeignete Schnittstellen zum Kommunizieren mit dem Arbeitsspeicher 314 enthalten, auf die das FPGA 100 zugreifen kann. Die Blöcke 312 können deshalb Arbeitsspeichersteuerungen zum Unterstützen einer breiten Vielfalt von externen Arbeitsspeicherprotokollen enthalten.
  • Eine Berechnung in herkömmlichen von-Neumann-Computerarchitekturen involviert üblicherweise ein Bewegen von Daten und Programmcode aus dem Arbeitsspeicher in die CPU-Register (z. B. die Register 24 in 1) und nachfolgendes Speichern der Ergebnisse zurück in den Arbeitsspeicher. Man betrachte im Beispiel von 3 ein Szenario, in dem die CPU 12 auf verschlüsselte Daten auf der Massenspeichervorrichtung 306 zugreifen muss. In dieser Situation würde die CPU 12 die verschlüsselten Daten von der gewünschten Position im Massenspeicher 306 abrufen und die abgerufenen Daten zur Entschlüsselung zum Beschleuniger-FPGA 100 leiten müssen. Die entschlüsselten Daten werden dann im Arbeitsspeicher 314 gespeichert (siehe einen Datenfluss, wie er durch den gepunkteten Pfad 350 angezeigt wird). Damit die CPU 12 auf diese Daten zugreift, müssen die entschlüsselten Daten danach durch die CPU 12 geleitet werden und im Hauptarbeitsspeicher-DIMM 14 gespeichert werden (siehe einen Datenfluss, wie er durch den gepunkteten Pfad 352 angezeigt wird). An diesem Punkt kann die CPU 12 schließlich über die DDR-Zwischenverbindung 301 auf die entschlüsselten Daten zugreifen.
  • Die Energie und Kosten zum Leiten von Daten zum und vom Arbeitsspeicher auf diese Weise könnten berechtigt sein, falls die Rechenzeit, die nativ auf der CPU 12 durchgeführt wird, relativ groß ist. Viele aufkommenden Anwendungen wie Datenanalyse, maschinelles Lernen, arbeitsspeicherinterne Datenbanken und unstrukturierte Datenbanken involvieren jedoch nur relativ kleine Rechenoperationen und erfüllen diesen Energieausgleich deshalb nicht.
  • Wie im Beispiel von 3 gezeigt, könnte ein Datentransfer über die PCIe/UPI-Schnittstelle 309 Hunderte von Millisekunden dauern, wohingegen ein Datentransfer über die DDR-Schnittstelle 301 nur Hunderte von Nanosekunden dauern könnte. Da die Transfergeschwindigkeit der Schnittstelle 301 so viel schneller als die der Schnittstelle 309 ist, wird der Pfad 301 hierin manchmal als ein Pfad mit „niedriger Latenz“ bezeichnet, wohingegen der Pfad 309 hierin manchmal als ein Pfad mit „hoher Latenz“ bezeichnet wird. Falls der Pfad mit hoher Latenz 309 zum Beispiel 500 ms benötigt und der Pfad mit niedriger Latenz 300 ns benötigt, würde der Pfad mit hoher Latenz 309 1667 Mal langsamer (z. B. 500 m/300 n = 5000) als der Pfad mit niedriger Latenz 301 sein, rein veranschaulichend. Im Allgemeinen kann die Latenz über den Pfad mit hoher Latenz 309 mindestens 10 Mal, mindestens 20 Mal, 20-100 Mal, 100-1000 Mal, 1000-5000 Mal oder mehr als 5000 Mal größer als die Latenz über den Pfad mit niedriger Latenz 301 sein.
  • Nach einer Ausführungsform wird ein verbessertes System bereitgestellt, in dem die Beschleunigungsverschaltung als Teil der DIMM-Karte gebildet ist, um vom Pfad mit niedriger Latenz zu profitieren, der die Host-CPU mit der DIMM-Karte verbindet. Das Erweitern der herkömmlichen von-Neumann-Architektur, um zusätzlich zu einem einfachen Abrufen von Daten kleine Berechnungen im Hauptarbeitsspeicherpfad zu ermöglichen, führt zu wesentlichen Verbesserungen in Bezug auf die verbrauchte Energie pro Recheneinheit.
  • 4 ist ein Diagramm eines veranschaulichenden Systems, in dem die Host-CPU 12 an eine programmierbare Beschleuniger-DIMM-Karte 410 gekoppelt ist. Die CPU 12 kann weiterhin über eine PCIe/UPI-Anbindung 309 an den Beschleunigungs-Coprozessor 100 gekoppelt sein, aber zusätzliche programmierbare Beschleunigungsressourcen, wie ein FPGA-Chip, können innerhalb des Arbeitsspeicher-DIMM 410 integriert sein. Die CPU 12 kann innerhalb eines CPU-Steckplatzes auf der Leiterplatine 400 (z. B. einer gedruckten Leiterplatine oder einer Hauptplatine) installiert sein. Das Beschleuniger-FPGA 100 kann innerhalb eines PCIe-Schlitzes oder eines anderen CPU-Steckplatzes auf der Leiterplatine 400 installiert sein. Das Beschleuniger-DIMM 410 kann innerhalb eines herkömmlichen Arbeitsspeicher-DIMM-Schlitzes 402 auf der Leiterplatine 400 installiert sein. Wie durch ihre Bezeichnung angedeutet, kann die Beschleuniger-DIMM-Karte 410 den herkömmlichen DIMM-Formfaktor aufweisen. Auf diese Weise konfiguriert, muss das Hauptplatinendesign nicht geändert werden.
  • Die Host-CPU 12 verwendet die chipinterne Arbeitsspeichersteuerung 302 (die manchmal als die „Master“-Arbeitsspeichersteuerung bezeichnet wird), um mit der Beschleuniger-DIMM-Karte 410 unter Verwendung eines transaktionsbasierten Protokolls, wie dem Transaktions-DDR(DDR-T)-Protokoll als Beispiel, zu kommunizieren. Im Gegensatz zu typischen DDRx-Protokollen, die erwarten, dass Ergebnisse innerhalb eines endlichen Zeitraums im Gleichschritt an die CPU zurückgegeben werden, kann das DDR-T-Protokoll als Teil einer programmierbaren Beschleunigervorrichtung einfacher zu implementieren sein und verlangt weniger strenge Rückgaberichtlinien, wenn Transaktionen auf etwas unbefristetere Art verarbeitet werden können. Dieses Beispiel, in dem die programmierbare Beschleunigervorrichtung unter Verwendung des DDR-T-Protokolls mit der CPU kommuniziert, ist nur veranschaulichend. Im Allgemeinen kann die CPU unter Verwendung eines beliebigen nichtflüchtigen Arbeitsspeicherprotokolls (z. B. eines beliebigen NVDIMM-Protokolls) mit der programmierbaren Beschleunigervorrichtung kommunizieren. Auf hoher Ebene erteilt die Master-Arbeitsspeichersteuerung 302 Anforderungen an das Beschleuniger-DIMM 310 und wartet auf entsprechende Antworten.
  • Details der Beschleuniger-DIMM-Karte 410 sind in 5 gezeigt. Wie in 5 gezeigt kann das Beschleuniger-DIMM 410 eine andere programmierbare Vorrichtung 100' (z. B. ein FPGA) enthalten, die an mehrere Arbeitsspeichervorrichtungen 514 gekoppelt ist. Die Vorrichtung 100' kann der Art von programmierbarem integriertem Schaltkreis ähnlich sein, der in Verbindung mit 2 gezeigt und beschrieben ist. Insbesondere kann die Vorrichtung 100' auch mit einer Arbeitsspeichersteuerung 502, einem Anforderungs-Decodier/Leitschaltkreis wie dem/der AnforderungsDecodierer/-Leiteinheit 504, der Steuerverschaltung 506 und einer oder mehreren Hardware-Beschleunigungseinheiten 508 versehen sein.
  • Die Arbeitsspeichersteuerung 302 innerhalb der Vorrichtung 100' antwortet auf die von der Master-Arbeitsspeichersteuerung auf der Host-CPU empfangenen Anforderungen und wird deshalb hierin manchmal als die „Slave-Arbeitsspeichersteuerung“ bezeichnet. Die Slave-Arbeitsspeichersteuerung 502 kann ausgelegt sein, die empfangene Anforderung in Übereinstimmung mit einem vorbestimmten Kommunikationsprotokoll (z. B. dem DDR-T-Protokoll) zu interpretieren und die Anforderungen in ein Format zu übersetzen, das der Decodierer 504 verstehen kann. Beispielsweise kann die Slave-Arbeitsspeichersteuerung 502 (die manchmal als eine DDR-Slave-Steuerung bezeichnet wird) verwendet werden, um Signale in Pakete zu übersetzen. Dieses Beispiel, in dem der DDR-Slave 502 das DDR-T-Protokoll unterstützt, ist nur veranschaulichend. Im Allgemeinen kann die Slave-Arbeitsspeichersteuerung 502 ausgelegt sein, ein beliebiges transaktionsbasiertes Schnittstellenprotokoll, andere DDR-Technologien wie DDRx, LPDDRx und GDDRx, QDR-Technologien, NVDIMM-Protokolle und/oder andere Hauptarbeitsspeicher-EA-Standards zu unterstützen.
  • Der Anforderungsdecodierer 504 (der manchmal auch als eine Anforderungsleiteinheit bezeichnet wird) ist ausgelegt, Anforderungspakete von der Slave-Arbeitsspeichersteuerung 502 zu empfangen. Im Allgemeinen kann es mindestens zwei verschiedene Arten von Anforderungspaketen geben, die am Decodierer 504 empfangen werden können: (1) Leseanforderungen und (2) Schreibanforderungen.
  • Als Reaktion auf das Empfangen einer Leseanforderung decodiert der Decodierer 504 die Leseanforderung und untersucht die Adressinformationen in der decodierten Leseanforderung, um zu ermitteln, ob die Leseanforderung an die Steuerverschaltung 506, an eine ausgewählte der HW-Beschleunigungseinheiten 508 oder direkt an eine andere Komponente innerhalb des Chips 100' oder an den Arbeitsspeicher 514 (z. B. über den Umgehungspfad 516) zu leiten ist. Für Leseanforderungen, bei denen eine Antwort erforderlich ist, verfolgt der Decodierer 504 auch jede erteilte Leseanforderung nach, um sicherzustellen, dass eine entsprechende Antwort, wie gelesene Daten, zurück zur Master-Arbeitsspeichersteuerung auf der Host-CPU zurückgesendet wird.
  • Als Reaktion auf das Empfangen einer Schreibanforderung decodiert der Decodierer 504 die Schreibanforderung und untersucht die Adressinformationen in der decodierten Schreibanforderung, um zu ermitteln, ob die Leseanforderung an die Steuerverschaltung 506, an eine ausgewählte der HW-Beschleunigungseinheiten 508 oder direkt an eine andere Komponente innerhalb des Chips 100' oder an den Arbeitsspeicher 514 (z. B. über den Umgehungspfad 516) zu leiten ist. Für Schreibvorgänge leitet der Decodierer 504 die Schreibanforderung weiter und verfolgt ihren Fortschritt bis zum Abschluss (d. h., der Decodierer 504 überwacht den Schreibabschluss). Wenn der Schreibvorgang abgeschlossen ist, kann eine entsprechende Antwort zurück zur Master-Arbeitsspeichersteuerung auf der Host-CPU gesendet werden oder auch nicht.
  • Die Steuerverschaltung 506 (manchmal als Steuerinfrastruktur bezeichnet) kann ausgelegt sein, um zu arrangieren, wie Daten von den HW-Beschleunigungseinheiten 508 verarbeitet werden, um mit der programmierbaren Vorrichtung assoziierte Fehler zu überwachen, um alle erkannten Fehler zu bedienen und auch um Statusinformationen zu überwachen (als Beispiele). Insbesondere kann die Steuerinfrastruktur 506 den Fluss und die Verarbeitung von Daten sowohl beim Eintritt und Austritt der Hardware-Beschleunigungsressourcen lenken. Wie bereits in 1 erwähnt, können die Hardware-Beschleunigungseinheiten 508 programmierbare Softlogik auf dem FPGA 100' sein, von denen jede individuell konfiguriert sein kann, um eine beliebige gewünschte Benutzerfunktion zu unterstützen. Beispielhafte Funktionen, die von diesen Hardware-Beschleunigungsressourcen implementiert werden können, enthalten benutzerdefinierte Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Codierung/Decodierung, Anpassungsfunktionen, andere nicht standardmäßige Algorithmen und/oder andere geeignete Rechenfunktionen, die auf die in die FPGA-Vorrichtung 100' eingehenden Daten und/oder diese verlassenden Daten angewandt werden können.
  • Die programmierbare Vorrichtung 100' auf der Beschleuniger-DIMM-Karte 410 kann Eingabe-Ausgabe(E/A)-Komponenten 510 zum Ankoppeln an eine beliebige Art von Arbeitsspeichervorrichtungen 514 enthalten. Arten von externen Arbeitsspeicherschnittstellen, die unter Verwendung der EA-Blöcke 510 unterstützt werden könnten, können enthalten: nichtflüchtige Arbeitsspeicherschnittstellen wie die von INTEL Corporation entwickelte 3D-XPoint-Technologie und andere nichtflüchtige DIMM-Technologien; flüchtige Arbeitsspeicherschnittstellen wie Schnittstellen mit doppelter Datenrate (DDRx), Niedrigenergie-DDR(LPDDRx)-Schnittstellen, Schnittstellen mit vierfacher Datenrate (QDR), Open-NAND-Flash-Schnittstelle (ONFI) und JEDECs gestapelte DRAM-Schnittstelle für Arbeitsspeicher mit hoher Bandbreite (HBM); PCIe-basierte Arbeitsspeicherschnittstellen; Ethernet-basierte Arbeitsspeicherschnittstellen; und/oder andere geeignete Schnittstellen zum Kommunizieren mit externem Arbeitsspeicher. Falls gewünscht kann das FGPA 100' auch interne Arbeitsspeicherblöcke mit wahlfreiem Zugriff enthalten, die manchmal auch als eingebettete statische Arbeitsspeicherblöcke mit wahlfreiem Zugriff (eSRAM) oder „Massen“-RAM-Blöcke bezeichnet werden. Diese Massen-RAM-Blöcke können viel größer und dichter als die Kernarbeitsspeicherblöcke sein (z. B. die RAM-Blöcke 130 in 1).
  • 6 ist ein Ablaufdiagramm von veranschaulichenden Schritten zum Betreiben der in 4 und 5 gezeigten programmierbaren Beschleuniger-DIMM-Karte 410. Bei Schritt 600 kann die DIMM-Beschleunigerkarte 410 eine Anforderung (z. B. eine Leseanforderung oder eine Schreibanforderung) von der Master-Arbeitsspeichersteuerung 302 der CPU empfangen.
  • Bei Schritt 602 kann die Slave-Arbeitsspeichersteuerung 502 auf dem DIMM 410 verwendet werden, um die empfangene Anforderung in ein geeignetes Format zu übersetzen, das vom/von der assoziierten Anforderungsdecodierer/-Leiteinheit 504 verstanden werden kann. Die DDR-Slavesteuerung 502 kann zum Beispiel die empfangenen Signale in ein Paketformat organisieren.
  • Bei Schritt 604 kann der Anforderungsdecodierer 504 verwendet werden, um die von der Slave-Steuerung 502 empfangenen übersetzten Anforderungen zu decodieren und die decodierte Lese/Schreibanforderung über die programmierbare Eingabe-Ausgabe-Verschaltung 510 zur Steuerungsinfrastruktur 506, zu den Hardware-Beschleunigungsressourcen auf dem FPGA 100' (z. B. an eine oder oder mehrere HW-Beschleunigungseinheiten 508) oder direkt an den externen Arbeitsspeicher 514 oder eine andere periphere Komponente leiten.
  • Bei Schritt 606 (der optional gleichzeitig mit den Schritten 502 und 504 stattfinden kann) kann die Steuerverschaltung 506 verwendet werden, um zu arrangieren, wie Daten innerhalb der programmierbaren Vorrichtung 100' verarbeitet werden. Beispielsweise kann die Steuerverschaltung 506 sowohl eingehende als auch/oder ausgehende Datenflüsse lenken.
  • Falls die erteilte Anforderung eine Beschleunigung erfordert, können eine oder mehrere der Hardwarebeschleunigungseinheiten 508 verwendet werden, um eine oder mehrere benutzerdefinierte Beschleunigungsfunktionen (z. B. Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Codierung/Decodierung, Anpassungsfunktionen, andere geeignete Rechenfunktionen usw.) bei Schritt 608 durchzuführen.
  • Bei Schritt 610 können die verarbeiteten Daten dann in Hauptarbeitsspeicherkomponenten wie den Arbeitsspeichervorrichtungen 514 innerhalb des Beschleunigungs-DIMM 410 gespeichert werden. Die Arbeitsspeichervorrichtungen 514 können ein beliebiger Typ von flüchtigem Arbeitsspeicher (z. B. DDRx-Arbeitsspeicher, LPDDRx-Arbeitsspeicher, eingebetteter SRAM, JEDECs Hochbandbreiten-DRAM usw.), nichtflüchtigem Arbeitsspeicher (z. B. 3D-XPoint-Arbeitsspeicher von INTEL, Flashspeicher, Phasenwechselspeicher, resistiver Arbeitsspeicher mit wahlfreiem Zugriff usw.) und andere geeignete Arten von Arbeitsspeicher sein, die intern oder extern zum Chip 100' innerhalb des Beschleuniger-DIMM 410 enthalten sein können. Bei Schritt 612 können gelesene Daten optional zurück zur Host-CPU gesandt werden.
  • Auf diese Weise konfiguriert und betrieben, verbessert die Aufnahme von Beschleunigungsverschaltung in der DIMM-Karte/im DIMM-Schlitz die Energieeffizienz von Anwendungen, die relativ zur Arbeitsspeicherkommunikationslatenz eine niedrige Rechenzeit aufweisen. 7 ist ein Diagramm, das die Rechenzeit verschiedener Aufgaben zeigt, die vom System von 4 durchgeführt werden können. Man betrachte beispielsweise ein Szenario, in dem die Host-CPU 12 eine Aufgabe berechnen muss, die eine Dauer Tx brauchen würde, wenn sie nativ auf der Host-CPU selbst durchgeführt würde (siehe Abschnitt 702 in 7). Falls die Host-CPU 12 die Aufgabe an das Beschleuniger-FPGA 100 auslagern würde, das über die Verbindung 309 mit hoher Latenz (z. B. eine PCIe-, UPI- oder andere Alt-Schnittstelle) verbunden ist, würde die Gesamtzeit, die zum Abschluss der Aufgabe benötigt würde, gleich der Umlauf-Transportverzögerung Ty zum Durchlaufen des Pfads mit hoher Latenz 309 plus der Beschleunigungsrechenverzögerung Ta sein, die die Beschleunigungsressourcen auf dem FPGA 100 benötigen, um die ausgelagerte Aufgabe durchzuführen. Es ist anzumerken, dass, obwohl die Beschleunigungsrechner-Ta kleiner als die native CPU-Rechenverzögerung Tx sein könnte, die kombinierte Gesamtzeit von (Ta+Ty) Tx überschreiten kann, wenn Tx nicht viel größer oder gar geringer als Ty ist (siehe Abschnitt 704 in 7).
  • In derartigen Situationen könnte die Host-CPU 12 stattdessen die Aufgabe an die Beschleuniger-DIMM-Karte 410 auslagern, die über eine Verbindung mit niedriger Latenz 301 angebunden ist (z. B. eine Hauptarbeitsspeicherschnittstelle wie eine DDRx-, LPDDRx- oder DDR-T-Schnittstelle). Falls dies der Fall ist, würde die Gesamtzeit, die zum Abschluss der Aufgabe benötigt würde, gleich der Umlauf-Transportverzögerung Tz zum Durchlaufen des Pfads mit niedriger Latenz 301 plus der Beschleunigungsrechenverzögerung Ta sein, die die Beschleunigungsressourcen auf dem FPGA 100' benötigen, um die ausgelagerte Aufgabe durchzuführen. Da hier die DIMM-Karten-Tansportverzögerung Tz wesentlich geringer als die PCIe-Transportverzögerung Ty ist, kann die kombinierte Gesamtzeit von (Tz+Ty) tatsächlich geringer als die native CPU-Rechenverzögerung Tx sein (siehe Abschnitt 706 in 7). In diesem Fall würde es sinnvoll sein, dass die Host-CPU die Aufgabe an die Beschleunigungs-DIMM-Karte auslagert. Wie bereits oben in Verbindung mit 4 beschrieben, ist Tz üblicherweise mindestens einige Größenordnungen kleiner als Ty (z. B. kann Tz mindestens 10 Mal, 100 Mal, 1000 Mal, 10 Tausend Mal, 100 Tausend Mal oder gar Millionen Mal kleiner als Ty sein).
  • Darüber hinaus kann das Hinzufügen von Beschleunigungsressourcen im Hauptarbeitsspeicherpfad dem System zusätzliche Merkmale wie Inline-Komprimierung und Kryptografie-Fähigkeit bereitstellen. Die Verwendung der programmierbaren Vorrichtung 100' in der DIMM-Karte kann auch helfen, eine breitere Palette von Arbeitsspeichertechnologien zu unterstützen, die andernfalls nicht nativ und direkt von der Host-CPU unterstützt würden. Es besteht auch kein Bedarf zur Aktualisierung des Designs der Host-CPU (d. h., die auf der Host-CPU implementierte Arbeitsspeicherschnittstelle kann konstant und unabhängig von der auf der Beschleuniger-DIMM-Karte 410 implementierten Arbeitsspeichertechnologie bleiben). Der Einsatz einer Beschleunigungs-DIMM-Karte kann in vielen Anwendungen technologische Verbesserungen bringen. Ein Beispiel ist bei Arbeitsspeicherrechenanwendungen. Man betrachte beispielsweise ein Szenario, in dem die Host-CPU einen Minimalwert unter einer Million Datensätze für ein bestimmtes Feld aus 32 Bytes finden muss. Um diese Aufgabe durchzuführen, würde die Host-CPU 32 Millionen Bytes mit Daten abrufen und analysieren müssen. Mit der FPGA-Beschleunigungskarte könnte die Host-CPU eine Anweisung an die im DDR-DIMM-Steckplatz sitzende Beschleunigungskarte senden. Das FPGA in der Beschleunigungskarte könnte programmiert sein, um diese datenintensive Aufgabe durchzuführen, und würde bei Abschluss das Endergebnis zur CPU zurückgeben, was nur einige Bytes von Daten sein würde.
  • Ein weiteres Beispiel betrifft Datenbankbeschleunigungsanwendungen. Man betrachte eine Delta-Zusammenführungsanwendung für eine SAP-HANA-Datenbankarchitektur. Wenn Datensätze hinzugefügt oder gelöscht werden, muss die Datenbank eine bestimmte Änderungsliste pflegen. Die Hauptdatenbank wird nicht aktualisiert, da es eine Reihe von Abfragen gibt, die bedient werden müssen. Die Datenbank kann als zwei Kopien gespeichert werden (z. B. als eine goldene Datenbank und eine Bezugsdatenbank). Die goldene Datenbank könnte verwendet werden, um eingehende Anforderungen zu bedienen und eine Delta-Zusammenführungsänderungsliste zu pflegen. Die Bezugsdatenbank könnte mit der Delta-Zusammenführungsänderungsliste aktualisiert werden. Danach kann die goldene Datenbank geändert werden, um mit der Bezugsdatenbank übereinzustimmen. Von diesem Punkt an bedient die goldene Datenbank neue Anforderungen, während die Bezugsdatenbank mit der Änderungsliste aktualisiert wird. Derartige Vorgänge könnten zur Beschleunigungs-DIMM-Karte ausgelagert werden und vor der Host-CPU versteckt werden, um eine verbesserte Betriebstauglichkeit bereitzustellen.
  • Ein weiteres Beispiel betrifft Datenanalytikbeschleunigungsanwendungen. Man betrachte einen Cluster-Algorithmus wie den K-Means-Clusteralgorithmus. Falls die Host-CPU ermitteln muss, zu welchem Cluster in einer Vielzahl von Clustern ein bestimmter Datenpunkt gehört, könnte die FPGA-Beschleunigungs-DIMM-Karte verwendet werden, um den Clusteralgorithmus auszuführen und das resultierende Cluster zur Host-CPU zurückzugeben.
  • Ein weiteres Beispiel betrifft Speichererweiterungsanwendungen. Man betrachte ein Szenario, in dem eine Host-CPU mit nur einem DIMM-Schlitz nur X-GB an Speicher beherbergen kann. Mit einer DIMM-FPGA-Beschleunigungskarte könnten mehrere Instanzen von X-GB untergebracht werden, was die Menge des für die Host-CPU zugänglichen Arbeitsspeichers effektiv vergrößern würde (siehe z. B. 5, in der das Beschleunigungs-DIMM 410 mehrere Arbeitsspeichervorrichtungen 514 enthalten kann).
  • Ein weiteres Beispiel betrifft Hochfrequenzhandelsanwendungen. FPGA 100' auf der DIMM-Beschleunigungskarte enthält EA-Komponenten zum Anbinden an Ethernet-, PCIe- und andere Alt-EA-Anschlüsse. Im Beispiel von 4 könnte das Beschleunigungs-DIMM 410 direkt über die Verbindung 450 mit einem anderen Beschleuniger-FPGA 100 verbunden sein, um die CPU vollständig zu umgehen. Die Verbindung 450 könnte eine PCIe-Anbindung sein (als Beispiel). Eine Ethernet-Verbindung könnte verwendet werden, um Marktdaten aufzunehmen und Schwankungen an der Börse könnten analysiert und in einem mit dem FPGA 100' assoziierten Arbeitsspeicher gespeichert werden. Wenn Bedingungsauslöser erfüllt sind, könnte das Beschleuniger-DIMM die Host-CPU benachrichtigen, dass ein bestimmtes Ereignis eingetreten ist. Die direkte Arbeitsspeicherzugriffsfunktion (DMA-Funktion), wobei der Hauptarbeitsspeicher auf der DIMM-Karte 450 unabhängig von der Host-CPU zugänglich ist, kann ebenfalls unterstützt werden, was dabei helfen könnte, die erweiterten Speicherfähigkeiten des Hauptarbeitsspeichers in der Beschleunigungs-DIMM-Karte richtig zu nutzen, während die gesamte Arbeitsspeicherhierarchie umgangen wird und etwaige unerwünschte Kontamination/unterwünschtes Flattern verhindert wird.
  • Wie oben bereits beschrieben, kann die Beschleunigungs-DIMM-Karte programmiert werden, um eine breite Vielfalt von Bedarfsdiensten bereitzustellen. Beim Bau von CPUs werden bestimmte Verschlüsselungs- und Komprimierungsstandards eingesetzt, die nicht optional sind. Mit der Beschleunigungs-FPGA-DIMM-Karte kann das DIMM-interne FPGA 100' dynamisch neu programmiert oder neu konfiguriert werden, um einen beliebigen Typ von Verschlüsselung, Komprimierung, Codierung oder einen anderen nicht standardmäßigen Algorithmus zu unterstützen. In allen dieser Beispiele reduziert die Verwendung der Beschleunigungs-DIMM-Karte 410 den Energieverbrauch, verbessert die Computerleistung und erhöht die Betriebseffizienz für das gesamte System. Die Beschleuniger-FPGA-DIMM-Karte 410 kann auch PCIe-/UPI-Anschlüsse frei machen, um mehr CPUs anzubinden, was die CPU-Dichte in Rechenzentren weiter erhöhen kann.
  • Obwohl die Verfahren der Operationen in einer bestimmten Reihenfolge beschrieben wurden, sollte klar sein, dass andere Operationen zwischen den beschriebenen Operationen durchgeführt werden können, die beschriebenen Operationen angepasst werden können, sodass sie zu leicht unterschiedlichen Zeitpunkten stattfinden oder die beschriebenen Operationen können in einem System verteilt werden, was das Auftreten der Verarbeitungsoperationen zu verschiedenen Intervallen ermöglicht, die mit der Verarbeitung assoziiert sind, solange die Verarbeitung der überlagerten Operationen auf eine gewünschte Weise durchgeführt wird.
  • Beispiele:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist eine Karte, umfassend: einen programmierbaren integrierten Schaltkreis mit Softlogik, die ausgelegt ist, als Hardwarebeschleunigungsressourcen zu arbeiten, wobei die Karte einen Formfaktor eines doppelreihigen Arbeitsspeichermoduls (DIMM) aufweist, wobei der programmierbare integrierte Schaltkreis Anforderungen von einer Host-Zentralverarbeitungseinheit (CPU) empfängt und wobei mindestens einige der empfangenen Anforderungen zu den Hardwarebeschleunigungsrekursen zur Beschleunigung geleitet werden; und Arbeitsspeicher, der an den programmierbaren integrierten Schaltkreis gekoppelt ist.
  • Beispiel 2 ist die Karte von Beispiel 1, wobei der programmierbare integrierte Schaltkreis über eine Hauptarbeitsspeicherschnittstelle an die Host-CPU gekoppelt ist.
  • Beispiel 3 ist die Karte von Beispiel 2, wobei die Hauptarbeitsspeicherschnittstelle eine Schnittstelle mit doppelter Datenrate (DDR) umfasst.
  • Beispiel 4 it die Karte von Beispiel 3, wobei die Hauptarbeitsspeicherschnittstelle eine Transaktions-DDR(DDR-T)-Schnittstelle oder eine nichtflüchtige doppelreihige Arbeitsspeichermodul(NVDIMM)-Schnittstelle umfasst.
  • Beispiel 5 ist die Karte von einem der Beispiele 2-5, wobei die Host-CPU über eine Prozessorschnittstelle an einen anderen Prozessor gekoppelt ist und wobei Datentransfers über die Hauptarbeitsspeicherschnittstelle schneller als Datentransfers über die Prozessorschnittstelle sind. Beispiel 6 ist die Karte von Beispiel 5, wobei die Datentransfers über die Hauptarbeitsspeicherschnittstelle mindestens ein Tausendmal schneller als die Datentransfers über die Prozessorschnittstelle sind.
  • Beispiel 7 ist die Karte von einem der Beispiele 1-6, wobei der Arbeitsspeicher nichtflüchtigen Arbeitsspeicher und/oder flüchtigen Arbeitsspeicher umfasst.
  • Beispiel 8 ist die Karte von einem der Beispiele 1-7, wobei der programmierbare integrierte Schaltkreis ferner umfasst: eine Arbeitsspeichersteuerung, die ausgelegt ist, die von der Host-CPU empfangenen Anforderungen zu übersetzen; und einen Anforderungsdecodierer, der ausgelegt ist, die übersetzten Anforderungen zu decodieren und die decodierten Anforderungen an ein geeignetes Ziel innerhalb der Karte zu leiten.
  • Beispiel 9 ist die Karte von Beispiel 8, wobei der programmierbare integrierte Schaltkreis ferner Steuerverschaltung umfasst, die ausgelegt ist, den Fluss von Daten in den und aus dem programmierbaren integrierten Schaltkreis zu arrangieren.
  • Beispiel 10 ist die Karte von Beispiel 9, wobei der programmierbare integrierte Schaltkreis ferner Eingabe-Ausgabe-Komponenten umfasst, die ausgelegt sind, über Schnittstellen an unterschiedliche Arten von peripheren Vorrichtungen zu koppeln, die auf der Karte gebildet sind oder extern zur Karte sind.
  • Beispiel 11 ist ein Verfahren zum Betreiben einer Computerkarte, umfassend: mit der Computerkarte, Empfangen einer Anforderung von einer Host-Zentralverarbeitungseinheit (CPU), wobei die Computerkarte einen Formfaktor eines doppelreihigen Arbeitsspeichermoduls (DIMM) aufweist; Verwenden von Hardware-Beschleunigungsressourcen in der Computerkarte, um zumindest einige der empfangenen Anforderungen zu verarbeiten und um entsprechende verarbeitete Daten zu generieren; und Speichern der verarbeiteten Daten in einen Arbeitsspeicher in der Computerkarte.
  • Beispiel 12 ist das Verfahren von Beispiel 11, ferner umfassend ein Übersetzen der empfangenen Anforderungen in Pakete unter Verwendung einer Arbeitsspeichersteuerung auf der Computerkarte. Beispiel 13 ist das Verfahren von Beispiel 12, ferner umfassend: mit einem Decodierer auf der Computerkarte, Decodieren der übersetzten, von der Arbeitsspeichersteuerung empfangenen Anforderungen und Leiten der decodierten Anforderungen an eine geeignete Position in der Computerkarte.
  • Beispiel 14 ist das Verfahren von einem der Beispiele 11-13, wobei das Verwenden der Hardware-Beschleunigungsressourcen in der Computerkarte, um zumindest einige der empfangenen Anforderungen zu verarbeiten, ein Verwenden der Hardware-Beschleunigungsressourcen umfasst, um eine benutzerdefinierte Funktion durchzuführen, die aus der Gruppe ausgewählt ist, die besteht aus: Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung Codierung/Decodierung, und Übereinstimmung.
  • Beispiel 15 ist das Verfahren von einem der Beispiele 12-13, ferner umfassend: mit der Arbeitsspeichersteuerung auf der Computerkarte, Senden einer Antwort zurück zur Host-CPU.
  • Beispiel 16 ist ein System, umfassend: einen Hostprozessor, der eine Master-Arbeitsspeichersteuerung enthält; und eine doppelreihige Beschleunigungs-Arbeitsspeichermodul(DIMM)-Karte, die über eine Hauptarbeitsspeicherschnittstelle mit dem Hostprozessor verbunden ist, wobei die Beschleunigungs-DIMM-Karte eine Slave-Arbeitsspeichersteuerung zum Kommunizieren mit der Master-Arbeitsspeichersteuerung enthält, wobei der Hostprozessor betreibbar ist, eine Aufgabe zur Beschleunigungs-DIMM-Karte auszulagern, um Rechenleistung auf dem Hostprozessor freizumachen, und wobei die Beschleunigungs-DIMM-Karte Arbeitsspeicher zum Speichern von mit der ausgelagerten Aufgabe assoziierten Daten enthält.
  • Beispiel 17 ist das System von Beispiel 16, ferner umfassend einen Coprozessor, der über eine zusätzliche Schnittstelle mit einer ersten Latenz mit dem Hostprozessor verbunden ist, wobei die HauptArbeitsspeicherschnittstelle eine zweite Latenz zeigt, die zumindest zehnmal geringer als die erste Latenz ist.
  • Beispiel 18 ist das System von Beispiel 17, wobei die Beschleunigungs-DIMM-Karte direkt über einen Umgehungspfad mit dem Coprozessor verbunden ist. Beispiel 19 ist das System eines der Beispiele 16-18, wobei die Hauptarbeitsspeicherschnittstelle eine Schnittstelle auf Basis doppelter Datenrate (DDR) umfasst.
  • Beispiel 20 ist das System von Beispiel 19, wobei der Arbeitsspeicher auf der Beschleunigungs-DIMM-Karte nichtflüchtigen Arbeitsspeicher umfasst.
  • Beispielsweise können alle optionalen Merkmale der oben beschriebenen Einrichtung in Bezug das hierin beschriebene Verfahren oder den hierin beschriebenen Prozess implementiert werden. Das Vorstehende ist lediglich veranschaulichend für die Prinzipien dieser Offenbarung und verschiedene Modifikationen können von Fachleuten vorgenommen werden. Die vorstehenden Ausführungsformen können einzeln oder in beliebiger Kombination implementiert werden.

Claims (25)

  1. Karte, umfassend: einen programmierbaren integrierten Schaltkreis mit Softlogik, die ausgelegt ist, als Hardwarebeschleunigungsressourcen zu arbeiten, wobei die Karte einen Formfaktor eines doppelreihigen Arbeitsspeichermoduls (DIMM) aufweist, wobei der programmierbare integrierte Schaltkreis Anforderungen von einer Host-Zentralverarbeitungseinheit (CPU) empfängt und wobei mindestens einige der empfangenen Anforderungen zu den Hardwarebeschleunigungsressourcen zur Beschleunigung geleitet werden; und Arbeitsspeicher, der an den programmierbaren integrierten Schaltkreis gekoppelt ist.
  2. Karte nach Anspruch 1, wobei der programmierbare integrierte Schaltkreis über eine Hauptarbeitsspeicherschnittstelle an die Host-CPU gekoppelt ist.
  3. Karte nach Anspruch 2, wobei die Hauptarbeitsspeicherschnittstelle eine Schnittstelle mit doppelter Datenrate (DDR) umfasst.
  4. Karte nach Anspruch 3, wobei die Hauptarbeitsspeicherschnittstelle eine Transaktions-DDR(DDR-T)-Schnittstelle oder eine nichtflüchtige doppelreihige Arbeitsspeichermodul(NVDIMM)-Schnittstelle umfasst.
  5. Karte nach einem der Ansprüche 2-4, wobei die Host-CPU über eine Prozessorschnittstelle an einen anderen Prozessor gekoppelt ist und wobei ein Datentransfer über die Hauptarbeitsspeicherschnittstelle schneller als ein Datentransfer über die Prozessorschnittstelle ist.
  6. Karte nach Anspruch 5, wobei der Datentransfer über die Hauptarbeitsspeicherschnittstelle mindestens ein Tausendmal schneller als der Datentransfer über die Prozessorschnittstelle ist.
  7. Karte nach einem der Ansprüche 1-6, wobei der Arbeitsspeicher nichtflüchtigen Arbeitsspeicher und/oder flüchtigen Arbeitsspeicher umfasst.
  8. Karte nach einem der Ansprüche 1-7, wobei der programmierbare integrierte Schaltkreis ferner umfasst: eine Arbeitsspeichersteuerung, die ausgelegt ist, die von der Host-CPU empfangenen Anforderungen zu übersetzen; und einen Anforderungsdecodierer, der ausgelegt ist, die übersetzten Anforderungen zu decodieren und die decodierten Anforderungen an ein geeignetes Ziel innerhalb der Karte zu leiten.
  9. Karte nach Anspruch 8, wobei der programmierbare integrierte Schaltkreis ferner umfasst: Steuerverschaltung, die ausgelegt ist, den Fluss von Daten in den und aus dem programmierbaren integrierten Schaltkreis zu arrangieren.
  10. Karte nach Anspruch 9, wobei der programmierbare integrierte Schaltkreis ferner umfasst: Eingabe-Ausgabe-Komponenten, die ausgelegt sind, über Schnittstellen an unterschiedliche Arten von peripheren Vorrichtungen zu koppeln, die auf der Karte gebildet sind oder extern zur Karte sind.
  11. Verfahren zum Betreiben einer Computerkarte, umfassend: mit der Computerkarte, Empfangen einer Anforderung von einer Host-Zentralverarbeitungseinheit (CPU), wobei die Computerkarte einen Formfaktor eines doppelreihigen Arbeitsspeichermoduls (DIMM) aufweist; Verwenden von Hardware-Beschleunigungsressourcen in der Computerkarte, um zumindest einige der empfangenen Anforderungen zu verarbeiten und um entsprechende verarbeitete Daten zu generieren; und Speichern der verarbeiteten Daten in einen Arbeitsspeicher in der Computerkarte.
  12. Verfahren nach Anspruch 11, ferner umfassend: mit einer Arbeitsspeichersteuerung auf der Computerkarte, Übersetzen der empfangenen Anforderungen in Pakete.
  13. Verfahren nach Anspruch 12, ferner umfassend: mit einem Decodierer auf der Computerkarte, Decodieren der übersetzten, von der Arbeitsspeichersteuerung empfangenen Anforderungen und Leiten der decodierten Anforderungen an eine geeignete Position in der Computerkarte.
  14. Verfahren nach einem der Ansprüche 11-13, wobei das Verwenden der Hardware-Beschleunigungsressourcen in der Computerkarte, um zumindest einige der empfangenen Anforderungen zu verarbeiten, ein Verwenden der Hardware-Beschleunigungsressourcen umfasst, um eine benutzerdefinierte Funktion durchzuführen, die aus der Gruppe ausgewählt ist, die besteht aus: Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Codierung/Decodierung und Übereinstimmung.
  15. Verfahren nach einem der Ansprüche 12-14, ferner umfassend: mit der Arbeitsspeichersteuerung auf der Computerkarte, Senden einer Antwort zurück zur Host-CPU.
  16. System, umfassend: einen Hostprozessor, der eine Master-Arbeitsspeichersteuerung enthält; und eine doppelreihige Beschleunigungs-Arbeitsspeichermodul(DIMM)-Karte, die über eine Hauptarbeitsspeicherschnittstelle mit dem Hostprozessor verbunden ist, wobei die Beschleunigungs-DIMM-Karte eine Slave-Arbeitsspeichersteuerung zum Kommunizieren mit der Master-Arbeitsspeichersteuerung enthält, wobei der Hostprozessor betreibbar ist, eine Aufgabe zur Beschleunigungs-DIMM-Karte auszulagern, um Rechenleistung auf dem Hostprozessor freizumachen, und wobei die Beschleunigungs-DIMM-Karte Arbeitsspeicher zum Speichern von mit der ausgelagerten Aufgabe assoziierten Daten enthält.
  17. System nach Anspruch 16, das ferner Folgendes umfasst: einen Coprozessor, der über eine zusätzliche Schnittstelle mit einer ersten Latenz mit dem Hostprozessor verbunden ist, wobei die HauptArbeitsspeicherschnittstelle eine zweite Latenz zeigt, die zumindest zehnmal geringer als die erste Latenz ist.
  18. System nach Anspruch 17, wobei die Beschleunigungs-DIMM-Karte direkt über einen Umgehungspfad mit dem Koprozessor verbunden ist.
  19. System nach einem der Ansprüche 16-18, wobei die Hauptarbeitsspeicherschnittstelle eine Schnittstelle auf Basis doppelter Datenrate (DDR) umfasst.
  20. System nach Anspruch 19, wobei der Arbeitsspeicher auf der Beschleunigungs-DIMM-Karte nichtflüchtigen Arbeitsspeicher umfasst.
  21. Computerkarte, umfassend: Mittel zum Empfangen einer Anforderung von einer Host-Zentralverarbeitungseinheit (CPU), wobei die Computerkarte einen Formfaktor eines doppelreihigen Arbeitsspeichermoduls (DIMM) aufweist; Mittel zum Verarbeiten zumindest einiger der empfangenen Anforderungen und zum Generieren entsprechender verarbeiteter Daten; und Mittel zum Speichern der verarbeiteten Daten in einen Arbeitsspeicher in der Computerkarte.
  22. Computerkarte nach Anspruch 21, ferner umfassend: Mittel zum Übersetzen der empfangenen Anforderungen in Pakete.
  23. Computerkarte nach Anspruch 22, ferner umfassend: Mittel zum Decodieren der übersetzten Anforderungen und zum Leiten der decodierten Anforderungen an eine geeignete Position auf der Computerkarte.
  24. Computerkarte nach einem der Ansprüche 21-23, wobei das Mittel zum Verarbeiten zumindest einiger der empfangenen Anforderungen Mittel zum Durchführen einer benutzerdefinierten Funktion umfasst, die aus der Gruppe ausgewählt ist, die besteht aus: Komprimierung/Dekomprimierung, Verschlüsselung/Entschlüsselung, Codierung/Decodierung und Übereinstimmung.
  25. Computerkarte nach einem der Ansprüche 22-24, ferner umfassend: Mittel zum Senden einer Antwort zurück zur Host-CPU.
DE102019122363.6A 2018-08-20 2019-08-20 Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte) Pending DE102019122363A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862719911P 2018-08-20 2018-08-20
US62/719,911 2018-08-20
US16/211,868 US10649927B2 (en) 2018-08-20 2018-12-06 Dual in-line memory module (DIMM) programmable accelerator card
US16/211,868 2018-12-06

Publications (1)

Publication Number Publication Date
DE102019122363A1 true DE102019122363A1 (de) 2020-02-20

Family

ID=65993250

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019122363.6A Pending DE102019122363A1 (de) 2018-08-20 2019-08-20 Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)

Country Status (3)

Country Link
US (1) US10649927B2 (de)
CN (1) CN110851378A (de)
DE (1) DE102019122363A1 (de)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016081192A1 (en) 2014-11-20 2016-05-26 Rambus Inc. Memory systems and methods for improved power management
CN106951181A (zh) * 2017-02-21 2017-07-14 深圳大普微电子科技有限公司 一种数据存储系统的控制装置
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US20200387330A1 (en) * 2019-06-10 2020-12-10 Ngd Systems, Inc. Heterogeneous in-storage computation
US11526302B2 (en) * 2019-06-20 2022-12-13 AI Plus, Inc. Memory module and computing device containing the memory module
US11256314B2 (en) * 2019-08-09 2022-02-22 Dell Products L.P. System and method for power management of field-programmable gate arrays and load balancing of personality bitstreams from a baseboard management controller
US11442885B2 (en) 2019-08-09 2022-09-13 Dell Products L.P. System and method to change field-programmable gate array personality from a baseboard management controller
CN110430444B (zh) * 2019-08-12 2022-06-07 中科寒武纪科技股份有限公司 一种视频流处理方法及系统
US11055220B2 (en) 2019-08-19 2021-07-06 Truememorytechnology, LLC Hybrid memory systems with cache management
US11526441B2 (en) 2019-08-19 2022-12-13 Truememory Technology, LLC Hybrid memory systems with cache management
CN110719267A (zh) * 2019-09-25 2020-01-21 山东三未信安信息科技有限公司 一种服务器板卡及其数据处理方法
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US20210173784A1 (en) * 2019-12-06 2021-06-10 Alibaba Group Holding Limited Memory control method and system
US11232049B2 (en) * 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
US10910048B1 (en) 2020-01-16 2021-02-02 Micron Technology, Inc. Extended memory communication
US11461262B2 (en) * 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US20220051089A1 (en) * 2020-08-17 2022-02-17 Google Llc Neural Network Accelerator in DIMM Form Factor
CN112269656B (zh) * 2020-10-16 2022-12-02 山东云海国创云计算装备产业创新中心有限公司 一种基于多核处理器的应用配置方法、装置和系统
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
KR20220091794A (ko) 2020-12-24 2022-07-01 삼성전자주식회사 반도체 장치 및 이를 포함하는 전자 장치
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
KR20220098947A (ko) 2021-01-05 2022-07-12 삼성전자주식회사 반도체 장치 및 이를 포함하는 전자 장치
KR20220099347A (ko) 2021-01-06 2022-07-13 삼성전자주식회사 메모리 장치를 제어하는 가속기, 이를 포함하는 컴퓨팅 시스템 및 가속기의 동작방법
CN112887093B (zh) * 2021-03-30 2022-09-30 矩阵元技术(深圳)有限公司 用于实现密码算法的硬件加速系统和方法
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
CN115309694A (zh) * 2021-05-07 2022-11-08 脸萌有限公司 片上集成电路、数据处理装置和方法
CN113535745B (zh) * 2021-08-09 2022-01-18 威讯柏睿数据科技(北京)有限公司 一种层次化数据库操作加速系统和方法
CN115827211A (zh) * 2021-09-17 2023-03-21 华为技术有限公司 近内存计算加速器、双列直插式内存模块以及计算设备
US20230176863A1 (en) * 2021-12-03 2023-06-08 Taiwan Semiconductor Manufacturing Company, Ltd. Memory interface
US11922068B2 (en) * 2021-12-10 2024-03-05 Samsung Electronics Co., Ltd. Near memory processing (NMP) dual in-line memory module (DIMM)
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
CN117076354A (zh) * 2022-05-10 2023-11-17 华为云计算技术有限公司 一种硬件管理卡及相关产品
CN116561051B (zh) * 2023-04-10 2024-02-02 中科驭数(北京)科技有限公司 一种硬件加速卡和异构计算系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7506297B2 (en) 2004-06-15 2009-03-17 University Of North Carolina At Charlotte Methodology for scheduling, partitioning and mapping computational tasks onto scalable, high performance, hybrid FPGA networks
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US9141670B2 (en) 2007-08-27 2015-09-22 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
WO2011031899A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
EP2946296A4 (de) * 2013-01-17 2016-11-16 Xockets Ip Llc Weitergabe von prozessormodulen zur verbindung mit einem systemspeicher
US9887008B2 (en) * 2014-03-10 2018-02-06 Futurewei Technologies, Inc. DDR4-SSD dual-port DIMM device
US9870333B1 (en) 2014-09-12 2018-01-16 Keysight Technologies, Inc. Instrumentation chassis including integrated accelerator module
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
CN106970894A (zh) 2017-04-20 2017-07-21 广东浪潮大数据研究有限公司 一种基于Arria10的FPGA异构加速卡

Also Published As

Publication number Publication date
US20190108145A1 (en) 2019-04-11
US10649927B2 (en) 2020-05-12
CN110851378A (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE102004053801B4 (de) Dynamische Rekonfiguration von PCI-Expresslinks
DE112007000443B4 (de) Vorrichtung mit einer gemeinsamen Schnittstelle fiir mehrere Prozessorkerne und Verfahren zur Steuerung der Kommunikation derselben mit einer damit gekoppelten Verbindung
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE102004009497B3 (de) Chipintegriertes Mehrprozessorsystem und Verfahren zur Kommunikation zwischen mehreren Prozessoren eines chipintegrierten Mehrprozessorsystems
DE60211730T2 (de) System und verfahren zur cachespeicherung von dram mittels eines ausgangsbuffers
DE102019110023A1 (de) System mit programmierbarer Multi-Kontext-Beschleuniger-Schaltung
DE19740695C2 (de) Datenspeicher mit Mehrebenenhierarchie
DE3934145C2 (de) Platteneinheit-Steuerungsvorrichtung und Informationsverarbeitungssystem, das dieselbe enthält
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE4132833A1 (de) Hierarchischer schaltungsintegrierter cache-speicher
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE60034998T2 (de) Verbesserungen in oder bezüglich von Mikroprozessoren
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE112021001470T5 (de) Konfigurieren von datenverarbeitungsknoten in einer dreidimensionalen netztopologie
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE112017001118T5 (de) Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums
DE102020132767A1 (de) Verwaltung der Dienstgüte (QoS) eines Speichersystems
DE112008002273T5 (de) Optimale Lösung zur Steuerung von Datenkanälen
DE102012107577A1 (de) Multiport-Speicherelement sowie Halbleitervorrichtung und System mit demselben