DE102020131677A1 - Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen - Google Patents

Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen Download PDF

Info

Publication number
DE102020131677A1
DE102020131677A1 DE102020131677.1A DE102020131677A DE102020131677A1 DE 102020131677 A1 DE102020131677 A1 DE 102020131677A1 DE 102020131677 A DE102020131677 A DE 102020131677A DE 102020131677 A1 DE102020131677 A1 DE 102020131677A1
Authority
DE
Germany
Prior art keywords
data
programmable logic
accelerator
memory
logic device
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
DE102020131677.1A
Other languages
English (en)
Inventor
Nij Dorairaj
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 DE102020131677A1 publication Critical patent/DE102020131677A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/331Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/763ASIC

Landscapes

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

Abstract

Systeme oder Verfahren der vorliegenden Offenbarung können ein Datenverarbeitungssystem bereitstellen, das einen Prozessor und einen oder mehrere implementierte Entwürfe in einer oder mehreren konfigurierbaren Schaltungen eines programmierbaren Logikfabrics umfasst. Das Datenverarbeitungssystem umfasst außerdem einen mit dem programmierbaren Logikfabric gekoppelten Speicher. Das Datenverarbeitungssystem umfasst ferner einen Beschleuniger, der sich Inline zwischen der einen oder den mehreren konfigurierbaren Schaltungen und dem Speicher befindet. Der Beschleuniger ist unter Verwendung einer Programmiersprache auf niedriger Ebene definiert. Der Prozessor ist mit dem Beschleuniger gekoppelt und ausgelegt zum Ermöglichen von Modifikationen der Definition des Beschleunigers durch Umsetzen einer Programmiersprache auf hoher Ebene in die Programmiersprache auf niedriger Ebene, um die Arbeitsweise des Beschleunigers zu ändern.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft allgemein integrierte Schaltungen, wie etwa Prozessoren und/oder programmierbare Logikvorrichtung(en) (z.B. FPGA (Field-Programmable Gate Arrays)). Insbesondere betrifft die vorliegenden Offenbarung elektronische Vorrichtungen, die integrierte Prozessoren und FPGA enthalten.
  • Dieser Abschnitt soll den Leser in verschiedene Aspekte der Technik einführen, die verschiedene Aspekte der vorliegenden Offenbarung betreffen können, die nachfolgend beschrieben und/oder beansprucht werden. Es wird angenommen, dass diese Besprechung dabei hilfreich ist, dem Leser Hintergrundinformationen bereitzustellen, um ein besseres Verständnis der verschiedenen Aspekte der vorliegenden Offenbarung zu erleichtern. Dementsprechend versteht sich, dass diese Aussagen in diesem Hinblick aufzufassen sind und nicht als Zulassungen eines Stands der Technik.
  • Moderne Elektronik wie Computer, tragbare Vorrichtungen, Netzwerkrouter, Datenzentralen, mit dem Internet verbundene Geräte und mehr enthalten meist mindestens eine integrierte Schaltungsvorrichtung. Integrierte Schaltungsvorrichtungen können vielfältige Formen annehmen, darunter Prozessoren (z. B. Zentralverarbeitungseinheiten (CPUs)), Speichervorrichtungen und programmierbare Vorrichtungen (z. B. FPGA), um nur einige wenige Beispiele zu nennen. Die programmierbaren Vorrichtungen können insbesondere ein programmierbares Fabric von Logik umfassen, das nach der Herstellung programmiert (z. B. konfiguriert) und umprogrammiert (z. B. umkonfiguriert) werden kann, um auf der Basis eines Schaltungsentwurfs vielfältige Funktionalität bereitzustellen.
  • Programmierbare Logikvorrichtungen sind eine Klasse von integrierten Schaltungen, die dafür programmiert werden können, vielfältige Operationen auszuführen. Eine programmierbare Logikvorrichtung kann programmierte programmierbare Logikelemente umfassen, die dafür programmiert werden können, angepasste Operationen auszuführen oder einen Schaltungsentwurf zu implementieren. Zum Programmieren von angepassten Operationen und/oder eines Schaltungsentwurfs in eine programmierbare Logikvorrichtung kann der Schaltungsentwurf zu einem Bitstrom kompiliert und in Konfigurationsspeicher der programmierbaren Logikvorrichtung programmiert werden. Die unter Verwendung des Bitstroms programmierten Werte definieren die Funktionsweise programmierbarer Logikelemente der programmierbaren Logikvorrichtung. Bestimmte in eine programmierbare Logikvorrichtung programmierte Funktionen können synchron sein.
  • Bei einigen Ausführungsformen können programmierbare Logikvorrichtungen und Prozessoren in eine einzige Kapselung oder Vorrichtung integriert werden, wobei einige Operationen kooperativ durch eine programmierbare Logikvorrichtung und einen Prozessor ausgeführt werden können. Zum Beispiel kann die Kapselung ein SoC (System-on-Chip) umfassen, das den Prozessor und die programmierbare Logikvorrichtung umfasst. Programmierung der programmierbaren Logikvorrichtung benutzt jedoch Programmiersprachen auf niedriger Ebene, die auf der programmierbaren Logikvorrichtung zu implementierende Anweisungen umfassen.
  • Figurenliste
  • Verschiedene Aspekte der vorliegenden Offenbarung können bei Durchsicht der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen besser verständlich werden. Es zeigen:
    • 1 ein Datenverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 2 eine programmierbare Logikvorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 3 ein Datenverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 4 ein Funktionsblockschaltbild eines beschleunigten Datenverarbeitungssystems gemäß einer Ausführungsform der vorliegenden Offenbarung;
    • 5 ein Prozessflussdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Offenbarung; und
    • 6 ein Datenverarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG SPEZIFISCHER AUSFÜHRUNGSFORMEN
  • Unten werden eine oder mehrere spezielle Ausführungsformen beschrieben. In dem Bestreben, diese Ausführungsformen prägnant zu beschreiben, werden in der Patentbeschreibung nicht alle Merkmale der jeweiligen konkreten Implementierung beschrieben. Es versteht sich, dass bei der Entwicklung einer solchen konkreten Implementierung, wie bei jedem Projekt in der Konstruktion und Entwicklung, zahlreiche implementationsspezifische Entscheidungen getroffen werden müssen, um die speziellen Vorgaben der Entwickler umzusetzen, etwa um system- und geschäftsrelevanten Einschränkungen, die von Implementierung zu Implementierung anders sein können, gerecht zu werden. Ferner versteht es sich, dass ein solches Entwicklungsvorhaben komplex und zeitaufwendig sein mag, jedoch vom Durchschnittsfachmann unter Zuhilfenahme dieser Offenbarung in den Phasen des Entwurfs, der Vorfertigung und der Fertigung routinemäßig ausgeführt werden könnte.
  • Wenn Elemente verschiedener Ausführungsformen der vorliegenden Offenbarung eingeführt werden, sollen die Artikel „ein“, „eine“ und „der/die/das“ bedeuten, dass es eines oder mehrere der Elemente gibt. Die Ausdrücke „umfassend“, „enthaltend“ und „aufweisend“ sollen inklusiv sein und bedeuten, dass es außer den aufgeführten Elementen zusätzliche Elemente geben kann. Zusätzlich versteht sich, dass Erwähnungen von „einer Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Offenbarung nicht so aufgefasst werden sollen, dass sie die Existenz zusätzlicher Ausführungsformen ausschließen, die die angeführten Merkmale auch enthalten. Ferner soll der Ausdruck A „auf der Basis von“ B bedeuten, dass A mindestens teilweise auf B basiert. Außerdem soll, sofern es nicht ausdrücklich anders erwähnt wird, der Ausdruck „oder“ einschließend sein (z.B. logisches OR) und nicht ausschließend (z.B. logisches XOR). Anders ausgedrückt, soll der Ausdruck A „oder“ B A, B oder sowohl A als auch B bedeuten.
  • Durch die hochflexible Beschaffenheit programmierbarer Logikvorrichtungen sind sie ausgezeichnet für die Beschleunigung vieler Datenverarbeitungsaufgaben geeignet. Somit werden programmierbare Logikvorrichtungen zunehmend als Beschleuniger für Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung und viele andere hochspezialisierte Aufgaben verwendet, insbesondere diejenigen, die in auf einem Prozessor laufender Software zu langsam oder ineffizient wären. Die Zunahme der Größe und Komplexität von Systemen, die programmierbare Logikvorrichtungen verwenden können, kann zu erhöhter Komplexität in Entwurfssoftware und erhöhter Notwendigkeit von Entwurfsflexibilität der programmierbaren Logikelemente in der programmierbaren Logikvorrichtung führen.
  • Um Schaltungsentwürfe in einem programmierbaren Logikfabric zu implementieren, können verschiedene Sektoren, Teile oder Regionen einer programmierbaren Logikvorrichtung verschiedene Operationen an Daten ausführen, die zwischen den Regionen ausgetauscht werden können. Um Daten zu verarbeiten und auszutauschen, kann es nützlich sein, über Synchronisation beim Timing der in den mehreren Sektoren (z.B. Regionen) stattfindenden Operationen zu verfügen.
  • Als Einführung zeigt 1 eine Blockdarstellung eines Systems 10, das Operationen mindestens teilweise auf der Basis eines in die programmierbare Logikvorrichtung 12 programmierten Entwurfs ausführt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Die programmierbare Logikvorrichtung 12 kann umkonfigurierbar sein (z.B. ein FPGA (Field Programmable Gate Array)). Ein Benutzer kann einen auf die programmierbare Logikvorrichtung 12 zu programmierenden Schaltungsentwurf unter Verwendung einer Entwurfsbeschreibung 14 implementieren. Die programmierbare Logikvorrichtung 12 kann ein oder mehrere Fabrics oder einen oder mehrere Kerne umfassen, die zum Implementieren des Schaltungsentwurfs bzw. der Schaltungsentwürfe verwendet werden. Die programmierbare Logikvorrichtung 12 kann auch andere mit dem Fabric bzw. den Fabrics verbundene Subsysteme zum Herstellen einer Verbindung mit anderen Verarbeitungsvorrichtungen umfassen. Die Subsysteme können (einen) im Voraus zugeteilte(n), nicht konfigurierbare(n) Abschnitt(e) einer programmierbaren Logikvorrichtung 12 umfassen, der/die intern mit Chipeingangs-/- ausgangsanschlüssen, den anderen Subsystemen und/oder dem die programmierbaren Logikregionen 32 umfassenden programmierbaren Fabric verbunden werden kann.
  • Die Entwurfsbeschreibung 14 kann unter Verwendung von Entwurfssoftware, die durch einen oder mehrere Prozessoren 16 eines Datenverarbeitungssystems 18 ausgeführt wird, entworfen oder modifiziert werden. Das Datenverarbeitungssystem 18 kann eine beliebige geeignete Vorrichtung mit der Fähigkeit zum Ausführen der Entwurfsbeschreibung 14 umfassen, wie etwa einen Desktop-Computer, einen Laptop, eine mobile elektronische Vorrichtung, einen Server und dergleichen. Das Datenverarbeitungssystem 18 kann auf die programmierbare Logikvorrichtung 12 zugreifen, diese konfigurieren und/oder mit ihr kommunizieren. Der Prozessor bzw. die Prozessoren 16 können mehrere Mikroprozessoren, eine oder mehrere integrierte Schaltungen (z.B. anwendungsspezifische integrierte Schaltungen, Field Programmable Gate Arrays, Reduced-Instruction-Set-Prozessoren und dergleichen) oder eine gewisse Kombination davon enthalten.
  • Eine oder mehrere Speichervorrichtungen 20 können die Entwurfsbeschreibung 14 speichern. Außerdem kann die Speichervorrichtung bzw. können die Speichervorrichtungen 20 Informationen in Bezug auf die programmierbare Logikvorrichtung 12 speichern, wie etwa Steuersoftware, Konfigurationssoftware, Nachschlagetabellen, Konfigurationsdaten usw. Bei einigen Ausführungsformen können sich der Prozessor bzw. die Prozessoren 16 und/oder die Speichervorrichtung(en) 20 außerhalb des Datenverarbeitungssystems 18 befinden. Ungeachtet des Orts der Speichervorrichtung(en) 20 kann die Speichervorrichtung bzw. können die Speichervorrichtungen 20 jeweils ein greifbares, nichttransitorisches und maschinenlesbares Medium umfassen, wie etwa einen flüchtigen Speicher (z.B. einen RAM (Direktzugriffsspeicher)) und/oder einen nichtflüchtigen Speicher (z.B. einen ROM (Festwertspeicher)). Die Speichervorrichtung(en) 20 können vielfältige Informationen speichern und für verschiedene Zwecke verwendet werden. Zum Beispiel kann die Speichervorrichtung bzw. können die Speichervorrichtungen 20 maschinenlesbare und/oder prozessorausführbare Anweisungen (z.B. Firmware oder Software) für den Prozessor bzw. die Prozessoren 16 zur Ausführung speichern, wie etwa Anweisungen zum Bestimmen einer Geschwindigkeit der programmierbaren Logikvorrichtung 12 oder einer Region der programmierbaren Logikvorrichtung 12, Bestimmen einer Kritizität eines Pfads eines in die programmierbare Logikvorrichtung 12 oder eine Region der programmierbaren Logikvorrichtung 12 programmierten Entwurfs, Programmieren des Entwurfs in die programmierbare Logikvorrichtung 12 oder eine Region der programmierbaren Logikvorrichtung 12 und dergleichen. Die Speichervorrichtung(en) 20 können eine oder mehrere Speicherungsvorrichtungen (z.B. nichtflüchtige Speicherungsvorrichtungen) umfassen, die ROM (Festwertspeicher), Flash-Speicher, eine Festplatte oder ein beliebiges anderes geeignetes optisches, magnetisches oder Halbleiterspeicherungsmedium umfassen können, oder eine beliebige Kombination davon.
  • Die Entwurfsbeschreibung 14 wird von einem Compiler 22 zur Erzeugung eines Schaltungsentwurfs auf niedriger Ebene in einem Programm 24 (Bitstrom) verwendet, das manchmal als Programm-Objektdatei bekannt ist, das die programmierbare Logikvorrichtung 12 programmiert. Das heißt, der Compiler 22 kann maschinenlesbare Anweisungen bereitstellen, die den Schaltungsentwurf für die programmierbare Logikvorrichtung 12 repräsentieren. Zum Beispiel kann die programmierbare Logikvorrichtung 12 ein oder mehrere Programme 24 empfangen, die die Hardwareimplementierungen beschreiben, die in der programmierbaren Logikvorrichtung 12 gespeichert werden sollen. Die Programme 24 können als ein Konfigurationsprogramm 26 in die programmierbare Logikvorrichtung 12 programmiert werden. Das Konfigurationsprogramm 26 kann als „Konfigurationsdaten“ repräsentiert sein, die zu verschiedenen Regionen der programmierbaren Logikvorrichtung geroutet werden, selbst wenn eine oder mehrere dieser Regionen heruntergefahren sind.
  • 2 ist eine Darstellung eines Systems 30, die Regionen 32 der programmierbaren Logikvorrichtung 12 von 1 zeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie dargestellt ist die programmierbare Logikvorrichtung 12 eine programmierbare Schaltung wie etwa eine Field-Programmable-Gate-Array-Vorrichtung. Bei alternativen Ausführungsformen kann die programmierbare Logikvorrichtung 12 eine anwendungsspezifische integrierte Schaltung, ein anwendungsspezifisches Standardbauteil, ein System-on-Chip und dergleichen sein. Das System 30 kann in jeder geeigneten Anwendung verwendet werden, wie etwa einer Datenzentrale, einer Netzwerkvorrichtung, einem Server, einem Router, einem Switch, einem Gateway, einer Firewall, einer Brücke, einem Hub, einer Datenbank, einer Workstation, einem Desktop-Computer, einem Laptop-Computer, einer mobilen Vorrichtung, einem drahtlosen Zugangspunkt, einer drahtlosen Zugangsvorrichtung und dergleichen.
  • Die Verbindungsressourcen 34 können zum Routen von Signalen, wie etwa Takt- oder Datensignalen, durch die programmierbare Logikvorrichtung 12 verwendet werden. Die programmierbare Logikvorrichtung 12 von 2 kann bei einer Ausführungsform ein sektorisiertes FPGA des Typs umfassen, der in der US-Anmeldung Nr. 2016/0049941 , „Programmable Circuit Having Multiple Sectors“, beschrieben wird, die hiermit durch Bezugnahme für alle Zwecke vollständig aufgenommen wird. Dementsprechend können programmierbare Logikressourcen oder Blöcke der programmierbaren Logikvorrichtung 12 durch eine Anzahl diskreter programmierbarer Logiksektoren oder Regionen 32 verteilt werden. Jede programmierbare Logikregion 32 kann eine Anzahl von programmierbaren Logikelementen 36 mit Operationen umfassen, die in der Entwurfsbeschreibung bzw. den Entwurfsbeschreibungen 14 definiert sind, die in dem Konfigurationsspeicher 38 (z. B. Konfigurations-Direktzugriffsspeicher) gespeichert sind. Die programmierbaren Logikelemente 36 können kombinatorische oder sequenzielle Logikschaltkreise umfassen. Zum Beispiel können die programmierbaren Logikelemente 36 Nachschlagetabellen, Register, Multiplexer, Routing-Leitungen und so weiter umfassen. Ein Benutzer kann die programmierbaren Logikelemente 36 dafür programmieren, vielfältige gewünschte Funktionen auszuführen. Betrieb der Schaltkreise der programmierbaren Logikvorrichtung 12 bewirkt Stromentnahme aus dem Stromverteilungsnetzwerk 42. Die programmierbare Logikvorrichtung 12 kann Sendeempfängerschaltkreise 44 (z. B. schnelle serielle Schnittstellenschaltkreise) zum Ansteuern von Signalen außerhalb der programmierbaren Logikvorrichtung 12 und zum Empfangen von Signalen von anderen Vorrichtungen umfassen.
  • Es kann eine beliebige geeignete Anzahl programmierbarer Logikregionen 32 auf der programmierbaren Logikvorrichtung 12 geben. Tatsächlich versteht sich, dass, obwohl 29 programmierbare Logikregionen 32 in 2 gezeigt sind, bei einer tatsächlichen Implementierung mehr oder weniger erscheinen können (z. B. in einigen Fällen in der Größenordnung von 50 bis 100 Regionen oder mehr). Jede programmierbare Logikregion 32 kann eine regionale oder Sektorsteuereinheit oder -schaltung bzw. RCU 46 umfassen, die den Betrieb des programmierbaren Logiksektors 32 steuert. Jede regionale Steuerschaltung 46 kann sich mit einer Vorrichtungssteuereinheit oder -schaltung bzw. DCU 48 in Kommunikation befinden. Jede RCU 46 kann Befehle und Daten von der DCU 48 annehmen und kann auf der Basis von Steuersignalen von der DCU 48 Daten aus seinem Konfigurationsspeicher 38 lesen und Daten darin schreiben. Zusätzlich zu diesen Operationen kann die RCU 46 mit zahlreichen zusätzlichen Fähigkeiten ergänzt werden. Solche Fähigkeiten wären zum Beispiel lokales Sequenzieren von Lese- und Schreibvorgängen zur Implementierung von Fehlerdetektion und -korrektur an dem Konfigurationsspeicher 38 und Sequenzierung von Teststeuersignalen zur Bewirkung verschiedener Testbetriebsarten.
  • Die RCU 46 und DCU 48 können als Logikschaltungen, wie etwa Automaten und/oder Prozessoren, implementiert werden. Zum Beispiel kann jede Operation der RCU 46 oder der DCU 48 als eine getrennte Routine in einem ein Steuerprogramm enthaltenden Speicher implementiert werden. Dieser Steuerprogrammspeicher kann in einem ROM (Festwertspeicher) fixiert oder in einem beschreibbaren Speicher, wie etwa RAM (Direktzugriffsspeicher) gespeichert sein. Der ROM kann eine Größe aufweisen, die größer ist als die, die zum Speichern von nur einer Kopie jeder Routine verwendet würde. Dadurch kann jede Routine abhängig von „Betriebsarten“, in die die lokale Steuerung versetzt werden kann, mehrere Varianten aufweisen. Wenn der Steuerprogrammspeicher als RAM (Direktzugriffsspeicher) implementiert wird, kann der RAM mit neuen Routinen beschrieben werden, um neue Operationen und Funktionalität in den programmierbaren Logikregionen 32 zu implementieren. Dies kann benutzbare Erweiterbarkeit auf effiziente und leicht verständliche Weise bereitstellen. Dies kann nützlich sein, weil neue Befehle große Mengen an lokaler Aktivität innerhalb der Region auf Kosten nur einer kleinen Menge an Kommunikation zwischen der DCU 48 und den RCU 46 mit sich bringen könnten.
  • Jede regionale Steuerschaltung 46 kann somit mit der DCU 48 kommunizieren, die die Operationen der regionalen Steuerschaltungen 46 koordinieren und von außerhalb der programmierbaren Logikvorrichtung 12 aus eingeleitete Befehle übermitteln kann. Um diese Kommunikation zu unterstützen, können die Verbindungsressourcen 34 als Netzwerk zwischen der DCU 48 und jeder regionalen Steuerschaltung 46 wirken. Die Verbindungsressourcen 34 können vielfältige Signale zwischen der DCU 48 und jeder regionalen Steuerschaltung 46 unterstützen. In einem Beispiel können diese Signale als Kommunikationspakete gesendet werden.
  • Die programmierbare Logikvorrichtung 12 kann elektrisch programmiert werden. Mit elektrischen Programmieranordnungen können die programmierbaren Elemente 36 ein oder mehrere Logikelemente (Leitungen, Gatter, Register usw.) umfassen. Zum Beispiel werden während der Programmierung Konfigurationsdaten unter Verwendung von Anschlüssen und/oder Eingangs-/Ausgangsschaltkreisen (z.B. der Sendeempfängerschaltkreise 44) der programmierbaren Logikvorrichtung 12 in den Konfigurationsspeicher 38 geladen. In einem Beispiel kann der Konfigurationsspeicher 38 als Konfigurations-Direktzugriffsspeicherzellen implementiert werden. Die Verwendung des Konfigurationsspeichers 38 auf der Basis von RAM-Technologie wird hier lediglich als ein Beispiel beschrieben. Außerdem kann der Konfigurationsspeicher 38 (z. B. als RAM-Zellen) über die verschiedenen programmierbaren Logikregionen 32 der programmierbaren Logikvorrichtung 12 verteilt werden. Der Konfigurationsspeicher 38 kann ein entsprechendes Steuerausgangssignal bereitstellen, das den Zustand eines zugeordneten programmierbaren Logikelements 36 oder einer programmierbaren Komponente der Verbindungsressourcen 34 steuert. Die Ausgangssignale des Konfigurationsspeichers 38 können an die Gates von MOS(Metalloxidhalbleiter)-Transistoren angelegt werden, um die Zustände der programmierbaren Logikelemente 36 oder programmierbaren Komponenten der Verbindungsressourcen 34 zu steuern.
  • In 3 kann ein System 50 zwei programmierbare Logikvorrichtungen 12 umfassen, die dafür ausgelegt sind, in Koordination und Verbindung mit zwei Prozessoren 52 zu arbeiten. Zusätzlich oder als Alternative kann das System 50 eine beliebige Anzahl von programmierbaren Logikvorrichtung 12 oder Prozessoren 52 umfassen. Ungeachtet der Anzahlen der programmierbaren Logikvorrichtungen 12 oder Prozessoren 52 kann das System 50 Inline-Datenrouting und parallele Datenverarbeitung von programmierbaren Logikvorrichtungen 12 und eine sequenzielle Verarbeitungsfähigkeit der Prozessoren 52 benutzen, um flexible Datenverarbeitung unter Verwendung des Systems 50 zu ermöglichen. Die Prozessoren 52 können ein beliebiger geeigneter Prozessorchip mit geeigneten Verarbeitungsmitteln für spezifische Entwurfsbedürfnisse sein, wie etwa XEON®-Prozessoren von INTEL. Die programmierbare Logikvorrichtung 12 kann eine FPGA-Vorrichtung mit einem programmierbaren Logikfabric für die durch einen Entwickler spezifizierten spezifischen Entwurfsaufgaben umfassen. Zum Beispiel kann die FPGA-Vorrichtung ein Stratix-FPGA von Intel umfassen. Ferner kann der Prozessor 52 verschiedene Funktionen, darunter, aber ohne Beschränkung darauf, Konfigurieren der programmierbaren Logikvorrichtung 12 mittels ähnlicher Operationen über dem Datenverarbeitungssystem 10, ausführen. Das System 50 kann koordinierte Datenverarbeitung durch Verwendung eines oder mehrerer Beschleuniger in der programmierbaren Logikvorrichtung 12 durchführen.
  • Daten können in einem Netzwerk, einem Sensor oder anderen möglichen Datenquellen beschafft werden und die Daten können mittels beliebiger geeigneter Mittel des Datentransports, wie etwa eines Ethernetkabels 53, in das System 50 fließen. Das Ethernetkabel 53 kann mit einem Empfängersubsystem 54 der programmierbaren Logikvorrichtung 12 verbunden werden, und die Daten können im Empfängersubsystem 54 empfangen werden. Das Empfängersubsystem 54 kann bei einigen Ausführungsformen auf eine oder mehrere regionale Steuerschaltkreise 46 der programmierbaren Logikvorrichtung 12 programmiert werden. Zusätzlich oder als Alternative kann das Empfängersubsystem 54 ein im Voraus zugeteiltes Subsystem der programmierbaren Logikvorrichtung 12 sein. Das Empfängersubsystem 54 kann die Daten empfangen und die empfangenen Daten für Verarbeitung unter Verwendung anderer Subsysteme der programmierbaren Logikvorrichtung 12 vorbereiten. Zusätzlich oder als Alternative kann das Empfängersubsystem die Daten zur Verwendung durch ein Partial-Umkonfigurationsprofil der programmierbaren Logikregion(en) 32 vorbereiten. Partial-Umkonfigurationsprofile können als ein Bitstromprogramm definiert werden, mit dem eine oder mehrere programmierbare Logikregionen 32 konfiguriert werden, die zur Laufzeit konfiguriert werden können, ohne Konfigurationen anderer Regionen der programmierbaren Logikvorrichtung 12 zu ändern.
  • Die empfangenen Daten können in der programmierbaren Logikvorrichtung 12 verarbeitet und/oder zur Verarbeitung zum Prozessor 52 weitergeleitet werden. Zwischen dem Prozessor 52 und der programmierbaren Logikvorrichtung 12 können Daten durch verschiedene Verbindungsverfahren oder -schaltkreise gesendet und empfangen werden, beispielsweise kann ein PCIe(Peripheral Component Interconnect Express)-Bus 55 in dem System 50 verwendet werden. Der PCIe-Bus 55 kann auch als die physische Schnittstelle zwischen der programmierbaren Logikvorrichtung 12 und einer nichtflüchtigen Speicherplatine 58, die einen oder mehrere nichtflüchtige Speicherblöcke umfasst, verwendet werden. Die verarbeiteten Daten können dann als Eingabe für andere Verarbeitungsaufgaben verwendet, mittels des Ethernetkabels 53 zu einem externen Peripheriegerät gesendet oder auf den Speicherblöcken abgespeichert werden.
  • Die nichtflüchtige Speicherplatine 58 kann ein Flash-Speicher sein, der aus einem oder mehreren Speicherblöcken besteht. Die nichtflüchtige Speicherplatine 58 kann unter anderem Bitstromprogramm(e) enthalten, geladen auf den Speicher der Speicherplatine 58 durch das Datenverarbeitungssystem 18, und kann das bzw. die Bitstromprogramm(e) zum Programmieren der programmierbaren Logikvorrichtung 12 bei jedem Systemherauffahren oder -rücksetzen verwenden. Das bzw. die Bitstromprogramm(e) können Anweisungen für Datenverarbeitung, Datenrouting durch die programmierbare Logikvorrichtung 12 und/oder Phasenregelkreis-Taktgeschwindigkeit, die der programmierbaren Logikvorrichtung 12 als Ganzes oder verschiedenen Segmenten der programmierbaren Logikvorrichtung 12 zugeordnet ist, enthalten.
  • Die programmierbare Logikvorrichtung 12 kann ein Subsystem 60 zur Kommunikation mit verschiedenen Peripheriegeräten benutzen. Das Subsystem 60 kann Datenempfang und -senden durch Codieren und Decodieren der Daten mittels Verschlüsselung der Daten gemäß dem gebrauchten Protokoll zugeordneten Regeln auf den PCIe-Bus 55 durchführen. Das Datenempfangs- und -sendesubsystem 60 kann ein Subsystem der programmierbaren Logikvorrichtung 12 oder ein Partial-Umkonfigurationsprofil sein, das auf programmierbare Logikregion(en) 32 programmiert wird. Der PCIe-Bus 55 kann eine physische Strecke zwischen den in 3 gezeigten Peripheriegeräten sein, zusätzlich zu oder als Alternative zu dem PCIe-Bus 55 kann jedoch ein anderer geeigneter Datenbus verwendet werden.
  • Der Prozessor 52 kann einen Speicher 57 und einen Cache-Speicher zur Datenverarbeitung benutzen. Der Cache-Speicher kann im Chip des Prozessors 52 eingebettet oder kann eingebetteter Cache-Speicher in einem kommunikativ mit dem Prozessor 52 verbundenen getrennten Chip sein. Der LLC(Last Level Cache)-Speicher 56 kann dem Prozessor 52 im System 50 zugeordnet sein. Der Speicher 57 kann dem Prozessor 52 Verfügbarkeit flüchtiger Speicher-Speicherung für Verarbeitungsaufgaben bereitstellen. Der Speicher 57 kann in dem Endentwurf auf der Basis von Funktionalität, Anforderungen und Entwurf des Systems 50 existent sein oder auch nicht. Der Speicher 57 kann verschiedene Speicherformen und -technologien aufweisen, wie etwa, aber ohne Beschränkung darauf, DDR (synchroner dynamischer Direktzugriffsspeicher mit Doppeldatenrate).
  • Die programmierbare Logikvorrichtung 12 kann Verarbeitung von Daten durch Benutzung der RCU 46 oder DCU 48 durchführen, die auf den programmierbaren Logikregionen 32 implementiert sind und mittels der programmierbaren Logikelemente 36 ausgeführt werden. Eine oder mehrere programmierbare Logikregionen 32 der programmierbaren Logikvorrichtung 12 können dafür programmiert werden, Lese- und/oder Schreibanweisungen an einem oder mehreren RAM (Direktzugriffsspeichern) 59 auszuführen. Auf den RAM 59 kann über die programmierbare Logikvorrichtung 12 mittels Benutzung eines Speichersubsystems 61 und mittels Eingangs- und/oder Ausgangsanschlüssen der programmierbaren Logikvorrichtung 12 zugegriffen werden. Das Speichersubsystem 61 kann ein Subsystem der programmierbaren Logikvorrichtung 12 oder ein in der programmierbaren Logikregion der programmierbaren Logikvorrichtung 12 konfiguriertes Partial-Umkonfigurationsprofil umfassen. Außerdem kann bei einigen Ausführungsformen der programmierbaren Logikvorrichtung 12 eine HBM (Hochbandbreiten-Speicherschnittstelle) 62 benutzt werden, die beispielsweise eine gestapelte 3-D-DRAM-Verwendung oder Hochleistungsdatenverarbeitung benutzen kann. Die Verwendung einer HBM 62 kann lediglich ein Beispiel und für einen Entwickler unter anderem auf der Basis der für Datenverarbeitungsaufgaben erforderlichen Speicherzugriffsbandbreite optional sein.
  • Die programmierbare Logikvorrichtung 12 kann Echtzeit- und parallele Datenverarbeitung durchführen, indem zur beschleunigten Verarbeitung von Daten mehrere regionale Steuereinheiten 46 auf die programmierbaren Logikregionen 32 programmiert werden. Datenverarbeitungsbeschleuniger oder Beschleuniger können in der programmierbaren Logikvorrichtung 12 (oder an einem anderen Ort) implementiert werden, um eine Schnittstelle zwischen der programmierbaren Logikvorrichtung 12 und den jeweiligen Speicherblöcken bereitzustellen. Das heißt, Beschleuniger können nach dem Lesen der Daten aus dem Speicher oder vor dem Abspeichern der empfangenen Daten im Speicher einen gewissen Grad an Datenverarbeitung durchführen. Diese wiederholbare Datenmanipulation kann auf die programmierbare Logikvorrichtung 12 (oder einen anderen Ort) geladen werden, um Verarbeitungsoperationen von den Prozessoren 52 abzuladen, um die Speicherung/den Abruf von Daten und/oder andere Operationen der Prozessoren 52 zu beschleunigen. Ein Beschleuniger kann dafür definiert werden, Datenverarbeitungsaufgaben auszuführen, wie etwa, aber ohne Beschränkung darauf, Datenverschlüsselung, Datenentschlüsselung, Datenkomprimierung und Datendekomprimierung. Die Beschleuniger können auf der programmierbaren Logikvorrichtung 12 mittels Laden von Programmen 24 aus Speichervorrichtung(en) 20 definiert werden. Die Speichervorrichtung(en) 20 können die Speicherplatine 58 oder den RAM 59 umfassen. Ferner können die Programme 24 Anweisungen für Implementierung eines Beschleunigers oder Partial-Modifikation der Definition eines implementierten Beschleunigers umfassen.
  • Der Prozessor 52 kann sequenzielle Verarbeitung von Daten durchführen, was den LLC 56 benutzen kann. Die programmierbare Logikvorrichtung 12 kann einen Cache-Speicher verwenden oder auch nicht. Kohärenz in Systemspeicher ermöglicht es einem System, ordnungsgemäß zu funktionieren. Das proprietäre kohärente Verbindungsprotokoll UPI (Ultra Path Interconnect) von Intel 64 kann das kohärente Interconnect sein, das für Kohärenz zwischen den Prozessoren 52 und programmierbaren Logikvorrichtungen 12 im System 50 verwendet wird. Das UPI-Protokoll 64 kann verschiedene Schaltkreise verwenden, um kohärente Schnittstellen zwischen Verarbeitungskomponenten der Schaltung zu erzeugen, wie etwa den PCIe-Bus 55. Das UPI-Protokoll 64 kann aus einer Menge von Regeln zum Austausch von Paketen von Daten zwischen Schaltungskomponenten oder Vorrichtungen bestehen. Die Verwendung von UPI kann beispielsweise sein, und ein beliebiges anderes geeignetes kohärentes Interconnect kann in dem System 50 verwendet werden, um die Kohärenz zwischen durch die Prozessoren 52 verwendeten Speichern und programmierbaren Logikvorrichtungen 12 zu erzwingen.
  • Das UPI-Protokoll 64 kann ein latenzarmes kohärentes Punkt-zu-Punkt-Interconnect sein, das skalierbare Mehrprozessorsysteme ermöglicht, und kann wie hier besprochen, verwendet werden, um Prozessoren und programmierbare Logikvorrichtungen mit erweiterter Kohärenz in einem einzigen System zu integrieren. Das UPI-Protokoll 64 kann ein kohärentes Interconnect mittels Benutzung von Kohärenzelementen eines Protokolls wie CA (Caching Agents) und HA (Home Agents) aufrechterhalten. In Mehrfachverarbeitungssystemen mit mehreren Prozessoren, die lokale zwischengespeicherte Kopien von geteilten Speicherorten unterhalten, können die Caching- und Home-Agenten lokale Modifikationen des geteilten Speichers auf anderen Speichern wiederspiegeln, um über das System hinweg kohärente Daten aufrechtzuerhalten. Die CA können Lese- und Schreibanforderungen für den kohärenten Speicher, wie etwa den LLC 56 in dem jeweiligen Prozessor 52, erzeugen. Die CA können auch auf UPI-Agenten anderer Prozessoren reagieren, die kohärente Daten zwischen den Zwischenspeicherungs-Speichern beschaffen. Die jeweiligen HA können Speicherinteraktionen von der Perspektive jedes jeweiligen Prozessors aus gesehen verwalten. Ein HA kann in Koordination mit einem dem kommunikativen Speicher zugeordneten Speichersubsystem 61 und einem jeweiligen Speichercontroller physische Speicheradressen in Kanaladressen übersetzen (oder umgekehrt). Der Caching-Agent und ein Home-Agent in mindestens einem der Prozessoren 52 können als ein Caching- und Home-Agent integriert werden. Der Caching- und Home-Agent kann in den Prozessoren 52 und/oder den programmierbaren Logikvorrichtungen 12 snoopen, um Kohärenz in dem System 50 zu ermöglichen. Das System 50 kann Cache-Kohärenz sowohl über verteilten Speicher als auch integrierte Speichercontroller hinweg implementieren.
  • UPI kann Modifikation einer oder mehrerer Konfigurationen eines oder mehrerer Beschleuniger ermöglichen. Die Beschleuniger können in der programmierbaren Logikvorrichtung 12, wie etwa in den programmierbaren Logikregionen 32, implementiert werden. Die Beschleuniger können verwendet werden, um wiederholbare Aufgaben, die ansonsten durch den Prozessor 52 ausgeführt werden können, abzuladen, um eine Last auf den Prozessoren 52 zu verringern, wodurch Verarbeitungs- und/oder Energieeffizienz im System 50 potenziell vergrößert wird.
  • Unter Verwendung der Home- und Caching-Agenten der Prozessoren 52 kann sich das System 50 in die programmierbaren Logikvorrichtungen 12 erstrecken. Die Home- und Caching-Agenten können verwendet werden, um Ausführung dynamischer Modifikationen der Beschleuniger während der Laufzeit des Systems 50 zu ermöglichen. Anders ausgedrückt, können die UPI-Protokollagenten den Zugriff des UPI-Protokolls 64 auf die programmierbaren Logikregionen 32 und folglich die Beschleuniger und Speicherblöcke und/oder Controller (z. B. Speichersubsystem 61), die den jeweiligen programmierbaren Logikvorrichtungen 12 zugeordnet sind, erweitern. Das erweiterte UPI-Protokoll 64 gibt Zugriff auf solche Bestandteile der programmierbaren Logikvorrichtung 12, um es den Prozessoren 52 zu ermöglichen, Verarbeitung und Manipulation von den programmierbaren Logikvorrichtungen 12, wie etwa dem RAM 59, zugeordneten Daten kohärent in Inline mit dem Rest UPI-verbundener Speicher des Systems 50 durchzuführen. Das erweiterte UPI-Protokoll 64 kann einen UPI-Stapel 66 in den programmierbaren Logikvorrichtungen 12 benutzen. Jeder UPI-Stapel 66 kann für zuverlässiges Datensenden und -empfangen und Datenflusssteuerung über das UPI-Protokoll 64 in die jeweilige programmierbare Logikvorrichtung 12 verantwortlich sein.
  • 4 zeigt eine Funktions-Blockdarstellung der Kommunikationsanordnung 63 zwischen einem jeweiligen Prozessor 52 und einer jeweiligen programmierbaren Logikvorrichtung 12. Die Kommunikationsanordnung 63 umfasst Inline-Verarbeitung von Daten durch die programmierbare Logikvorrichtung 12 in Kommunikation zwischen den Prozessoren 52 und den programmierbaren Logikvorrichtungen 12 des Systems 50.
  • Die Kommunikationsanordnung 63 kann den UPI-Stapel 66 und/oder eine FIU (FPGA-Schnittstelleneinheit) 72 verwenden, um erweiterte Kohärenz über das System 50 hinweg zu ermöglichen.
  • Der UPI-Stapel 66 kann eine UPI-Sicherungsschicht 68 und eine UPI-Bitübertragungsschicht 70 enthalten. Die UPI-Sicherungsschicht 68 kann zuverlässigen Datentransfer zwischen zwei UPI-Protokoll- oder Routingentitäten ermöglichen. Die UPI-Sicherungsschicht 68 kann auch Fluss zwischen der programmierbaren Logikvorrichtung 12 und dem Prozessor 52 steuern. Neben anderen Verantwortlichkeiten kann die UPI-Sicherungsschicht 68 zum Verhindern von Protokoll-Blockierungen verwendet werden. Die UPI-Bitübertragungsschicht 70 verdrahtet Trägersignale und/oder Schaltkreise/Logik zur Unterstützung von Hilfsmerkmalen, die beim Senden und Empfangen von Daten über das UPI-Protokoll 64 verwendet werden. Bei einigen Ausführungsformen kann die UPI-Bitübertragungsschicht 70 die Form des PCIe-Busses 55 als Basisschicht für Funktionen der UPI-Sicherungsschicht 68 annehmen. Die UPI-Bitübertragungsschicht 70 und die UPI-Sicherungsschicht 68 können die Basis für UPI-Agenten zum Snoopen durch das System 50 bereitstellen, um eine kohärente Verbindung mit dem Prozessor 52 bereitzustellen.
  • Die FIU 72 kann unter anderem eine FIU-Subeinheit 74 umfassen, die Datenübertragung zwischen der programmierbaren Logikvorrichtung 12 und dem Prozessor 52 unter Verwendung eines Protokolls auf FIU-Basis ermöglichen kann. Dementsprechend kann eine FIU-Schnittstelle 76 als Schnittstelle oder Brücke zwischen der FIU-Subeinheit 74 und dem Prozessor 52 zur Datenübertragung verwendet werden.
  • Wie dargestellt, kann die programmierbare Logikvorrichtung 12 unter Verwendung der FIU 72 und/oder des UPI-Stapels 66 mit einem RTL(Registertransferniveau)-Block 84 verbunden werden. Bei einigen Ausführungsformen kann der RTL-84 unter Verwendung einer Konfiguration realisiert werden, die von den Programmen 24 aus in die programmierbare(n) Logikregion(en) 32 der programmierbaren Logikvorrichtung 12 geladen wird. Der RTL-Block 84 kann zum Senden und/oder Empfangen von Daten zu externen Einheiten, wie etwa dem Prozessor 52 oder dem Speichersubsystem 61, verwendet werden.
  • Außerdem kann der Prozessor 52 in das System 50 als ein SoC (System-on-a-Chip) integriert werden. Bei solchen Ausführungsformen kann der Prozessor 52 als ein HPS (Hard Processor System) 86 integriert sein. Wie nachfolgend besprochen, kann mit dem HPS 86 gesteuert werden, wie der RTL-Block 84 dafür ausgelegt ist, die durch den RTL-Block 84 durchgeführte Inline-Datenmodifikation zu steuern. Zum Beispiel kann die Konfiguration des RTL-Blocks 84 eingerichtet werden, um verschiedene Parameter für Aufgaben (z. B. Verschlüsselung/Entschlüsselung, Komprimierung/Dekomprimierung usw.) durchzuführen, um den Betrieb des Systems 50 zu beschleunigen.
  • Wie dargestellt, kann das Speichersubsystem 61 einen Speichercontroller 80, wie etwa einen DDR(Doppeldatenrate)-Speichercontroller umfassen. Der Speichercontroller 80 kann jedoch eine beliebige geeignete Speicherart umfassen. Der Speichercontroller 80 kann der programmierbaren Logikvorrichtung 12 (über den RTL-Block 84) ermöglichen, Daten zu einem entsprechenden Speicher (z.B. dem RAM 59) zu senden oder zu empfangen.
  • Wie bereits erwähnt, kann das UPI-Protokoll 64 den UPI-Protokollagenten ermöglichen, auf das Speichersubsystem 61 und den Speichercontroller 80 zuzugreifen. Tatsächlich kann das UPI-Protokoll 64 Zugriff auf die Konfiguration des RTL-Blocks 84 ermöglichen. Ferner kann der Speichercontroller 80 Snooping-Fähigkeiten für die Protokollagenten bereitstellen, indem eine Verbindung zwischen physischen Speicheradressen und den Protokollagenten hergestellt wird. Die erwähnten Techniken können kohärenten Zugriff auf mit der programmierbaren Logikvorrichtung 12 gekoppelte Speicherblöcke ermöglichen. Das heißt, mit der programmierbaren Logikvorrichtung 12 gekoppelte Speicherblöcke können durch den kohärent verbundenen Prozessor bzw. die kohärent verbundenen Prozessoren 52 zugänglich und modifizierbar sein. Solcher Speicher (z. B. RAM 59), der mit der programmierbaren Logikvorrichtung 12 gekoppelt ist, kann somit allen Prozessoren 52 als kohärenter Systemspeicher zur Verfügung gestellt werden.
  • Bei einigen Ausführungsformen kann das HPS 86 der programmierbaren Logikvorrichtung 12 Anweisungen 88 zum Modifizieren des RTL-Blocks 84 zuführen. Das HPS 86 kann die Anweisungen 88 zum Ändern der Konfiguration des Beschleunigers zwischen mehreren Beschleunigereinstellungen benutzen, indem die Programmierung geändert wird und/oder durch Laden alternativer Programmierung des Beschleunigers in die programmierbare(n) Logikregion(en) 32.
  • Das HPS 86 kann Modifikationsanweisungen 88 zum Benutzen oder Modifizieren eines in einem RTL-Block 84 implementierten Beschleunigers empfangen. Der Benutzer kann die Anweisungen 88 mittels einer API (Anwendungsprogrammschnittstelle) dem Prozessor oder HPS 86 zuführen. Die API kann dem Benutzer eine Schnittstelle bereitstellen. Die API kann Anweisungen unter Verwendung einer Programmiersprache auf hoher Ebene, wie etwa der Programmiersprache C und anderen Programmiersprachen auf hoher Ebene, empfangen. Das HPS 86 kann nützlich sein zum Übersetzen der vom Benutzer bereitgestellten Anweisungen in eine Programmiersprache auf niedriger Ebene, wie etwa eine Hardware-Beschreibungssprache (Hardware Description Language), die durch die Logik-Programmiersprache 12 zur Implementierung von Änderungen an dem RTL-Block 84 verwendet werden kann. Zum Beispiel kann das HPS 86 einen Compiler implementieren, um solche Übersetzungen durchzuführen. Unter Verwendung des UPI-Protokolls 64 und der dynamischen Programmierung unter Verwendung des HPS 86 kann das System 50 somit dynamische Programmierung der programmierbaren Logikvorrichtung 12 während der Systemlaufzeit gewährleisten, wodurch die Flexibilität des Systems vergrößert werden kann.
  • Der oben beschriebene erweiterte UPI-Protokoll-Zugriff kann die programmierbare Logikvorrichtung 12 und die jeweiligen Blockbestandteile einem Benutzer exponieren. Das heißt, ein Benutzer kann die programmierbare Logikvorrichtung 12 partial modifizieren oder umkonfigurieren, indem unter Verwendung einer Programmiersprache auf hoher Ebene dem HPS 86 Anweisungen zugeführt werden. Der erwähnte Ansatz kann Partial-Umkonfiguration oder -Modifikation der programmierbaren Logikvorrichtung 12 durch das System 18 dynamisch während der Systemlaufzeit ermöglichen. Die Benutzeranweisungen 88 können unter anderem die Verarbeitungstechnik modifizieren, die in dem RTL-Block 84 verwendet wird, um die Daten zu speichern, mit den Daten umzugehen oder die Daten zu dem Speichersubsystem 61 zu senden. Der erweiterte UPI-Protokoll-Zugriff kann auch die Entwurfsflexibilität des Systems 50 vergrößern, indem Partial-Modifikation oder -Umkonfiguration der programmierbaren Logikregion(en) 32 mittels der Anweisungen 88 durch die API 90 erlaubt werden.
  • Bei bestimmten Ausführungsformen können die Benutzeranweisungen 88 darauf ausgerichtet werden, es dem RTL-Block 84 zu ermöglichen, eine Aufgabe als ein Beschleuniger auszuführen. Die Anweisungen können durch das HPS 86 lesbare computerlesbare Anweisungen sein. Die Benutzeranweisungen 88 können darauf ausgerichtet werden, den RTL-Block 84 dafür auszulegen, Daten unter Verwendung einer bestimmten Technik zu verschlüsseln. Datenverschlüsselung kann mittels Beschleunigern durchgeführt werden, und es kann mehr als ein Beschleuniger für verschiedene Ebenen von Datenverschlüsselung verfügbar sein. Die verschiedenen Konfigurationen zur Datenverschlüsselung können in dem Speicher in Form von Bitstromdaten residieren, die durch Benutzeranweisungen zur Implementierung im RTL-Block 84 zu wählen sind. Die verschiedenen Verschlüsselungs-Beschleuniger können auch auf dem RTL-Block 84 vorimplementiert werden, und die Benutzeranweisungen können den Teil der programmierbaren Logikregion(en) 32 für die gewählte Ebene der Datenverschlüsselung modifizieren. Die Datenverschlüsselungskonfiguration(en) können verschiedene Ebenen des Stromverbrauchs für Verschlüsselung, verlustlose Verschlüsselung oder verlustbehaftete Verschlüsselung von Daten oder andere Klassifikationen von Verschlüsselungstechniken umfassen.
  • Zusätzlich oder als Alternative können die Benutzeranweisungen 88 auf einen Beschleuniger zum Durchführen einer Entschlüsselung von Daten ausgerichtet werden. Datenentschlüsselung kann unter Verwendung des RTL-Blocks 84 durchgeführt werden. Es kann mehr als eine Beschleunigerkonfiguration für verschiedene Ebenen der Datenentschlüsselung verfügbar sein. Die verschiedenen Beschleuniger zur Datenentschlüsselung können in dem Speicher in Form von Bitstromdaten residieren, die mittels Benutzeranweisungen zur Implementierung in dem RTL-Block 84 zu wählen sind. Die verschiedenen Entschlüsselungs-Beschleuniger können auch in dem RTL-Block 84 vorimplementiert werden oder können zur Laufzeit umkonfiguriert werden. Die Datenverschlüsselungskonfiguration(en) können verschiedene Ebenen des Stromverbrauchs für Entschlüsselung, verlustlose Entschlüsselung oder verlustbehaftete Entschlüsselung von Daten oder andere Klassifikationen von Entschlüsselungstechniken umfassen. Zusätzlich oder als Alternative zu Verschlüsselung und Entschlüsselung können die RTL-Blöcke 84 für verschiedene Ebenen von Komprimierung/Dekomprimierung ausgelegt werden. Zum Beispiel kann, wenn eine Arbeitslast gering ist, eine erste Ebene von Komprimierung/Dekomprimierung verwendet werden, aber eine zweite Ebene von Komprimierung/Dekomprimierung, wenn eine Arbeitslast hoch ist. Es können auch andere Konfigurationen für die RTL-Blöcke 84 außer verschiedene Ebenen der Verschlüsselung/Entschlüsselung oder Komprimierung/Dekomprimierung verwendet werden.
  • 5 kann einen durch den Prozessor 52 implementierten Prozess 92 beschreiben. Der Prozessor 52 des Systems 50 kann das UPI-Protokoll 64 benutzen, um auf die Konfigurationen der programmierbaren Logikvorrichtung 12 für den RTL-Block 84 zuzugreifen oder Modifikationen daran vorzunehmen. Die Modifikationen können Treffen einer Entscheidung, eine bestimmte Konfiguration für den RTL-Block 84 zu benutzen, auf der Basis der Arbeitslast für das System 50 umfassen. Der Prozessor 52 kann mit dem Bestimmen der Arbeitslast für das System 50, den Prozessor 52 und/oder die programmierbare Logikvorrichtung 12 (Block 94) beginnen. Die Arbeitslast kann unter anderem durch Bestimmung der Menge an zu verarbeitenden Daten, Anzahl der in der programmierbaren Logikvorrichtung 12 in Gebrauch befindlichen Flipflops, Menge an erzeugter Wärme, Latenz der Verarbeitung oder beliebige andere geeignete Parameter zur Messung einer Arbeitslast für das System 50, den Prozessor 52 und/oder die programmierbare Logikvorrichtung 12 definiert werden.
  • Der Prozessor 52 kann die bestimmte Arbeitslast mit einer oder mehreren zuvor definierten Schwellen vergleichen (Block 96). Wenn die Arbeitslast unter einer Schwelle liegt, wird eine erste Konfiguration in den RTL-Block 84 geladen (Block 98). Wenn die Arbeitslast nicht unter einer Schwelle liegt, wird eine zweite Konfiguration in den RTL-Block 84 geladen (Block 100). Die erste Konfiguration kann eine erste Ebene von Verschlüsselung/Entschlüsselung oder Komprimierung/Dekomprimierung sein. Die zweite Konfiguration kann eine zweite Ebene der Verschlüsselung/Entschlüsselung oder Komprimierung/Dekomprimierung sein, die weniger Verarbeitungsressourcen als die erste Konfiguration verbraucht. Obwohl die dargestellte Ausführungsform des Prozesses 92 eine einzige Schwelle umfasst, können andere Ausführungsformen mehrere Schwellen zum Vergleich mit der bestimmten Arbeitslast mit mehr als zwei Konfigurationen verwenden. Zum Beispiel kann es eine Konfiguration mehr als Schwellen geben.
  • Die programmierbare Logikvorrichtung 12 kann ein Datenverarbeitungssystem (z. B. System 50) sein oder kann eine Komponente eines Datenverarbeitungssystems sein. Zum Beispiel kann die programmierbare Logikvorrichtung 12 eine Komponente eines Datenverarbeitungssystems 102, das in 6 gezeigt ist, sein. Das Datenverarbeitungssystem 102 umfasst einen Prozessor 104 (z. B. Prozessor 52), Speicher- und/oder Speicherungsschaltkreise 106 (z. B. RAM 59) und eine Netzwerkschnittstelle 108 und kann machbare Ausführungsformen präsentieren, die dem System 50 zugeordnet sein können. Das Datenverarbeitungssystem 102 kann mehr oder weniger Komponenten umfassen (z. B. elektronische Anzeige, Benutzeroberflächenstrukturen, ASICs (anwendungsspezifische integrierte Schaltungen)). Der Prozessor 104 kann einen beliebigen geeigneten Prozessor umfassen, wie etwa einen INTEL®-XEON®-Prozessor oder einen Prozessor mit reduzierten Anweisungen (z. B. einen RISC (Reduced Instruction Set Computer), einen ARM(Advanced Risk Machine)-Prozessor), der eine Datenverarbeitungsanforderung für das Datenverarbeitungssystem 102 verwalten kann (z. B. zum Durchführen von Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbanksucheinstufung, Bioinformatik, Netzwerksicherheits-Musteridentifikation, räumliche Navigation oder dergleichen). Die Speicher- und/oder Speicherungsschaltkreise 106 können RAM (Direktzugriffsspeicher), ROM (Festwertspeicher), eine oder mehrere Festplatten, Flash-Speicher oder dergleichen umfassen. Die Speicher- und/oder Speicherungsschaltkreise 106 können als bezüglich der programmierbaren Logikvorrichtung 12 externer Speicher betrachtet werden und können durch das Datenverarbeitungssystem 102 zu verarbeitende Daten halten. In einigen Fällen können die Speicher- und/oder Speicherungsschaltkreise 106 auch Konfigurationsprogramme (z. B. Bitstrom) zum Programmierung der programmierbaren Logikvorrichtung 12 speichern. Die Netzwerkschnittstelle 108 kann es dem Datenverarbeitungssystem 102 ermöglichen, mit anderen elektronischen Vorrichtungen zu kommunizieren. Das Datenverarbeitungssystem 102 kann mehrere verschiedene Kapselungen umfassen oder kann in einer einzigen Kapselung auf einem einzigen Kapselungssubstrat enthalten sein.
  • In einem Beispiel kann das Datenverarbeitungssystem 102 Teil einer Datenzentrale sein, die vielfältige verschiedene Anforderungen verarbeitet. Zum Beispiel kann das Datenverarbeitungssystem 102 über die Netzwerkschnittstelle 108 eine Datenverarbeitungsanforderung empfangen, um Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbanksucheinstufung, Bioinformatik, Netzwerksicherheits-Musteridentifikation, räumliche Navigation oder eine gewisse andere spezialisierte Aufgabe auszuführen. Der Prozessor 104 kann bewirken, dass das programmierbare Logikfabric der programmierbaren Logikvorrichtung 12 mit einem bestimmten die angeforderte Aufgabe betreffenden Beschleuniger programmiert wird. Zum Beispiel kann der Prozessor 104 anweisen, dass auf den Speicher-/Speicherungsschaltkreisen 106 gespeicherte oder in sektorausgerichtetem Speicher der programmierbaren Logikvorrichtung 12 zwischengespeicherte Konfigurationsdaten (Bitstrom) in das programmierbare Logikfabric der programmierbaren Logikvorrichtung 12 programmiert werden. Die Konfigurationsdaten (Bitstrom) können einen Schaltungsentwurf für eine bestimmte für die angeforderte Aufgabe relevante Beschleunigerfunktion repräsentieren. Aufgrund der hohen Dichte des programmierbaren Logikfabrics, der Nähe der wesentlichen Menge an sektorausgerichtetem Speicher zu dem programmierbaren Logikfabric oder anderer Merkmale der programmierbaren Logikvorrichtung 12, die hier beschrieben werden, kann die programmierbare Logikvorrichtung 12 dem Datenverarbeitungssystem 102 beim Ausführen der angeforderten Aufgabe rasch helfen. Tatsächlich kann in mindestens einem Beispiel ein Beschleuniger bei einer Spracherkennungsaufgabe von weniger als einigen wenigen Millisekunden (z. B. in der Größenordnung von Mikrosekunden) helfen, indem rasch auf große Mengen von Daten im Beschleuniger unter Verwendung von sektorausgerichtetem Speicher zugegriffen wird und diese verarbeitet werden.
  • Obgleich die in der vorliegenden Offenbarung dargelegten Ausführungsformen auf verschiedene Arten abwandelbar und alternativ ausführbar sind, wurden in den Zeichnungen konkrete Ausführungsformen rein beispielhaft gezeigt und hierin ausführlich beschrieben. Es versteht sich jedoch, dass die Offenbarung nicht auf die konkreten Ausführungsformen, die offenbart werden, begrenzt sein soll. Die Offenbarung soll sämtliche Abwandlungen, Äquivalente und Alternativen abdecken, die mit dem Gedanken der Offenbarung vereinbar sind und in ihren Schutzbereich fallen, wie von den folgenden beigefügten Ansprüchen definiert.
  • Die hierin dargelegten und beanspruchten Techniken beziehen sich und sind anwendbar auf physische Objekte sowie konkrete Beispiele aus der Praxis, die nachweislich den gegenwärtigen Stand der Technik verbessern, und sind deshalb nicht abstrakt, unkörperhaft oder rein theoretisch. Werden ferner in den am Ende dieser Patentschrift angehängten Ansprüchen ein oder mehrere Elemente als „Mittel zum [z. B. Durchführen einer Funktion] ...“ („means for [perform] ing [a function] ...‟) oder „Schritt zum [z. B. Durchführen einer Funktion] ...“ („step for [perform]ing [a function] ...‟) bezeichnet, sind diese Elemente nach § 112(f) Bd. 35 U.S.C. auszulegen. Werden in den Ansprüchen Elemente hingegen anders bezeichnet, sind diese Elemente nicht nach § 112(f) Bd. 35 U.S.C. auszulegen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2016/0049941 [0016]

Claims (26)

  1. Datenverarbeitungssystem, umfassend: einen Prozessor; einen oder mehrere implementierte Entwürfe in einer oder mehreren konfigurierbaren Schaltungen eines programmierbaren Logikfabrics; mit dem programmierbaren Logikfabric gekoppelten Speicher; und einen Beschleuniger, der sich Inline zwischen der einen oder den mehreren konfigurierbaren Schaltungen und dem Speicher befindet, wobei der Beschleuniger unter Verwendung einer Programmiersprache auf niedriger Ebene definiert ist und wobei der Prozessor mit dem Beschleuniger gekoppelt ist und ausgelegt ist zum Ermöglichen von Modifikationen der Definition des Beschleunigers durch Umsetzen einer Programmiersprache auf hoher Ebene in die Programmiersprache auf niedriger Ebene, um die Arbeitsweise des Beschleunigers zu ändern.
  2. Datenverarbeitungssystem nach Anspruch 1, wobei der Beschleuniger dynamisch durch den Prozessor während einer Laufzeit des Datenverarbeitungssystems modifizierbar ist.
  3. Datenverarbeitungssystem nach Anspruch 1, wobei die vom Prozessor verwendete Programmiersprache auf hoher Ebene eine Programmiersprache C ist.
  4. Datenverarbeitungssystem nach Anspruch 1, wobei die zum Definieren des Beschleunigers verwendete Programmiersprache auf niedriger Ebene eine HDL (Hardware Description Language) ist.
  5. Datenverarbeitungssystem nach Anspruch 1, wobei das programmierbare Logikfabric unter Verwendung einer Registertransferebenen-Beschreibung des Beschleunigers programmiert wird.
  6. Datenverarbeitungssystem nach einem der Ansprüche 1-5, wobei der Prozessor die Programmiersprache auf hoher Ebene unter Verwendung eines Compilers in die Programmiersprache auf niedriger Ebene umsetzt.
  7. Datenverarbeitungssystem nach einem der Ansprüche 1-5, wobei die Definition des Beschleunigers modifizierbar ist, um Verschlüsselung von Daten oder Entschlüsselung von Daten, auswählbar durch den Prozessor, durchzuführen.
  8. Datenverarbeitungssystem nach Anspruch 7, wobei der Beschleuniger mehr als eine zur Verschlüsselung von Daten definierte auswählbare Operationsanweisung aufweist.
  9. Datenverarbeitungssystem nach Anspruch 7, wobei der Beschleuniger mehr als eine zur Entschlüsselung von Daten definierte auswählbare Operationsanweisung aufweist.
  10. Datenverarbeitungssystem nach einem der Ansprüche 1-5, wobei die Definition des Beschleunigers modifizierbar ist, um Komprimierung von Daten oder Dekomprimierung von Daten, auswählbar durch den Prozessor, durchzuführen.
  11. Datenverarbeitungssystem nach Anspruch 10, wobei der Beschleuniger mehr als eine zur Komprimierung von Daten definierte auswählbare Operationsanweisung aufweist.
  12. Datenverarbeitungssystem nach Anspruch 10, wobei der Beschleuniger mehr als eine zur Dekomprimierung von Daten definierte auswählbare Operationsanweisung aufweist.
  13. Datenverarbeitungssystem, umfassend: einen Prozessor; mit einer programmierbaren Logikvorrichtung gekoppelten Speicher; und die programmierbare Logikvorrichtung, wobei die programmierbare Logikvorrichtung ausgelegt ist zum Implementieren eines Beschleunigers zum Modifizieren von Daten, die im Speicher gespeichert werden, wobei der Beschleuniger unter Verwendung einer Hardwarebeschreibungssprache definiert wird und wobei der Prozessor ausgelegt ist zur Kopplung mit dem Beschleuniger, um den Speicher dem Prozessor zur Verfügung zu stellen, um Modifikation der Definition des Beschleunigers zu ermöglichen, durch Umsetzen einer Programmiersprache auf hoher Ebene in die Hardwarebeschreibungssprache, um die Arbeitsweise des Beschleunigers während der Laufzeit des Datenverarbeitungssystems zu ändern.
  14. Datenverarbeitungssystem nach Anspruch 13, wobei die Programmiersprache auf hoher Ebene durch den Prozessor mittels einer Anwendungsprogrammierschnittstelle empfangen wird.
  15. Datenverarbeitungssystem nach Anspruch 13 oder 14, wobei die Definition des Beschleunigers im Speicher gespeichert ist und der Prozessor ausgelegt ist zum Modifizieren der Definition des Beschleunigers durch Zugreifen auf den Speicher.
  16. Datenverarbeitungssystem nach Anspruch 13 oder 14, wobei der Prozessor ausgelegt ist zum Anwenden einer Partial-Umkonfiguration an dem Beschleuniger während der Laufzeit unter Verwendung eines kohärenten Verbindungsprotokolls.
  17. Prozessorimplementiertes Verfahren, umfassend: Bestimmen, durch den Prozessor, einer Arbeitslast für eine Datenverarbeitungsvorrichtung, die den Prozessor und eine programmierbare Logikvorrichtung umfasst; Bestimmen durch den Prozessor, ob die Arbeitslast eine Arbeitslastschwelle überschreitet; wenn die Arbeitslast die Arbeitslastschwelle überschreitet, bewirken, dass die programmierbare Logikvorrichtung eine erste Konfiguration für einen Beschleuniger lädt, wobei die erste Konfiguration dafür ausgelegt ist, Daten, die von der programmierbaren Logikvorrichtung in Speicher transportiert werden, vor der Ankunft am Speicher auf eine erste Weise zu modifizieren; und wenn die Arbeitslast die Arbeitslastschwelle nicht überschreitet, Bewirken, dass die programmierbare Logikvorrichtung eine zweite Konfiguration für den Beschleuniger lädt, wobei die zweite Konfiguration dafür ausgelegt ist, Daten, die von der programmierbaren Logikvorrichtung in Speicher transportiert werden, vor der Ankunft am Speicher auf eine zweite Weise zu modifizieren.
  18. Verfahren nach Anspruch 17, wobei Modifizieren der Daten auf die erste Weise intensivere Datenverarbeitung als Modifizieren der Daten auf die zweite Weise erfordert.
  19. Verfahren nach Anspruch 17 oder 18, wobei Modifizieren der Daten auf die erste Weise Komprimieren der Daten unter Verwendung eines ersten Komprimierungstyps umfasst, und Modifizieren der Daten auf die zweite Weise Komprimieren der Daten unter Verwendung eines zweiten Kombinierungstyps umfasst.
  20. Verfahren nach Anspruch 19, wobei der erste Komprimierungstyp einen gewissen Grad eines verlustbehafteten Datenkomprimierungstyps umfasst und der zweite Komprimierungstyp einen Typ mit einem geringeren Grad an Datenverlust als der erste Komprimierungstyp umfasst.
  21. Verfahren nach Anspruch 17 oder 18, wobei Modifizieren der Daten auf die erste Weise Verschlüsselung der Daten unter Verwendung eines ersten Datenverschlüsselungstyps umfasst und Modifizieren der Daten auf die zweite Weise Verschlüsseln der Daten unter Verwendung eines zweiten Datenverschlüsselungstyps umfasst.
  22. Verfahren nach Anspruch 21, wobei der erste Datenverschlüsselungstyp einen weniger verarbeitungsintensiven Datenverschlüsselungstyp als der zweite Datenverschlüsselungstyp umfasst.
  23. System, umfassend: Mittel zum Bestimmen einer Arbeitslast für eine Datenverarbeitungsvorrichtung, die den Prozessor und eine programmierbare Logikvorrichtung umfasst; Mittel zum Bestimmen, ob die Arbeitslast eine Arbeitslastschwelle überschreitet; Mittel zum Bewirken, wenn die Arbeitslast die Arbeitslastschwelle überschreitet, dass die programmierbare Logikvorrichtung eine erste Konfiguration für einen Beschleuniger lädt, wobei die erste Konfiguration dafür ausgelegt ist, Daten, die von der programmierbaren Logikvorrichtung in Speicher transportiert werden, vor der Ankunft am Speicher auf eine erste Weise zu modifizieren; und Mittel zum Bewirken, wenn die Arbeitslast die Arbeitslastschwelle nicht überschreitet, dass die programmierbare Logikvorrichtung eine zweite Konfiguration für den Beschleuniger lädt, wobei die zweite Konfiguration dafür ausgelegt ist, Daten, die von der programmierbaren Logikvorrichtung in Speicher transportiert werden, vor der Ankunft am Speicher auf eine zweite Weise zu modifizieren.
  24. System nach Anspruch 23, wobei Modifizieren der Daten auf die erste Weise Verschlüsselung der Daten unter Verwendung eines ersten Datenverschlüsselungstyps umfasst, und Modifizieren der Daten auf die zweite Weise Verschlüsseln der Daten unter Verwendung eines zweiten Datenverschlüsselungstyps umfasst.
  25. Herstellungsartikel, der ein greifbares, nichttransitorisches maschinenlesbares Medium umfasst, das Anweisungen umfasst, um einen Prozessor zu Folgendem zu veranlassen: Bestimmen einer Arbeitslast für eine Datenverarbeitungsvorrichtung, die den Prozessor und eine programmierbare Logikvorrichtung umfasst; Bestimmen, ob die Arbeitslast eine Arbeitslastschwelle überschreitet; Bewirken, wenn die Arbeitslast die Arbeitslastschwelle überschreitet, dass die programmierbare Logikvorrichtung eine erste Konfiguration für einen Beschleuniger lädt, wobei die erste Konfiguration dafür ausgelegt ist, Daten, die von der programmierbaren Logikvorrichtung in Speicher transportiert werden, vor der Ankunft am Speicher auf eine erste Weise zu modifizieren; und Bewirken, wenn die Arbeitslast die Arbeitslastschwelle nicht überschreitet, dass die programmierbare Logikvorrichtung eine zweite Konfiguration für den Beschleuniger lädt, wobei die zweite Konfiguration dafür ausgelegt ist, Daten, die von der programmierbaren Logikvorrichtung in Speicher transportiert werden, vor der Ankunft am Speicher auf eine zweite Weise zu modifizieren.
  26. Herstellungsartikel nach Anspruch 25, wobei Modifizieren der Daten auf die erste Weise mehr Datenverarbeitungsressourcen als Modifizieren der Daten auf die zweite Weise konsumiert.
DE102020131677.1A 2019-12-23 2020-11-30 Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen Pending DE102020131677A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/726,128 2019-12-23
US16/726,128 US20200133649A1 (en) 2019-12-23 2019-12-23 Processor controlled programmable logic device modification

Publications (1)

Publication Number Publication Date
DE102020131677A1 true DE102020131677A1 (de) 2021-06-24

Family

ID=70328680

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020131677.1A Pending DE102020131677A1 (de) 2019-12-23 2020-11-30 Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen

Country Status (3)

Country Link
US (1) US20200133649A1 (de)
CN (1) CN113094326A (de)
DE (1) DE102020131677A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10782759B1 (en) 2019-04-23 2020-09-22 Arbor Company, Lllp Systems and methods for integrating batteries with stacked integrated circuit die elements
EP4173041A4 (de) * 2020-06-29 2024-02-07 Arbor Company LLLP Mobile iot-randvorrichtung mit 3d-chip-stapelung eines rekonfigurierbaren prozessormoduls mit 5g-prozessorunabhängigem modem
CN117312185B (zh) * 2023-10-17 2024-04-09 苏州异格技术有限公司 一种fpga内存储融合方法、装置及fpga内存系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US10523585B2 (en) * 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US9588921B2 (en) * 2015-02-17 2017-03-07 Amazon Technologies, Inc. System on a chip comprising an I/O steering engine
US9715475B2 (en) * 2015-07-21 2017-07-25 BigStream Solutions, Inc. Systems and methods for in-line stream processing of distributed dataflow based computations
US10248565B2 (en) * 2016-09-19 2019-04-02 Qualcomm Incorporated Hybrid input/output coherent write
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US11204747B1 (en) * 2017-10-17 2021-12-21 Xilinx, Inc. Re-targetable interface for data exchange between heterogeneous systems and accelerator abstraction into software instructions

Also Published As

Publication number Publication date
CN113094326A (zh) 2021-07-09
US20200133649A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
DE102020131677A1 (de) Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE112005002672B4 (de) Dynamische Neukonfiguration eines Cache-Speichers
DE102018214775A1 (de) Technologien zum Aufteilen der Arbeit über Beschleunigervorrichtungen hinweg
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102010044531B4 (de) Autonome Speicherarchitektur
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE102015119894A1 (de) Techniken für die zusammenarbeitende Ausführung zwischen asymmetrischen Prozessorkernen
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
DE102011086097B4 (de) Mehrkanal-Speicher mit eingebetteter Kanalauswahl
DE102020103570A1 (de) Host-definierte bandbreitenzuweisung für ssd-aufgaben
DE102020113949A1 (de) Interconnect von Fabric-Die zu Fabric-Die für modularisierte integrierte Schaltungsvorrichtungen
DE102012214007A1 (de) Auswahl eines Protokolls einer kollektiven Operation in einem Paralellrechner
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102014110423A1 (de) Techniken zum Bewegen von Daten zwischen einem Netzwerk-Eingabe/Ausgabe-Gerät und einem Speichergerät
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE102020119519A1 (de) Verfahren und einrichtungen zum ermöglichen einer "out-of-order"-pipeline-ausführung der statischen abbildung einer arbeitslast
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
DE112018004247T5 (de) Datenverarbeitungsauslagerung unter verwendung einer speicherinternen codeausführung
DE112018005507T5 (de) Mehrkriterien-energiemanagementschema für gepoolte beschleunigerarchitekturen
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE102022124530A1 (de) Speicherpoolmanagement
DE102019117226A1 (de) Schaltkreis mit adaptiven speicherassistenzfähigkeiten