DE112019004301T5 - Verbesserter prozess der programmierung von feldprogrammierbaren gate-arrays unter verwendung einer partiellen rekonfiguration - Google Patents

Verbesserter prozess der programmierung von feldprogrammierbaren gate-arrays unter verwendung einer partiellen rekonfiguration Download PDF

Info

Publication number
DE112019004301T5
DE112019004301T5 DE112019004301.3T DE112019004301T DE112019004301T5 DE 112019004301 T5 DE112019004301 T5 DE 112019004301T5 DE 112019004301 T DE112019004301 T DE 112019004301T DE 112019004301 T5 DE112019004301 T5 DE 112019004301T5
Authority
DE
Germany
Prior art keywords
primitive
variants
areas
partial reconfiguration
fpga
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
DE112019004301.3T
Other languages
English (en)
Inventor
Daniel Anthony Shaddock
Max Andrew Gordon Schwenke
Danielle Marie Rawles Wuchenich
Benjamin Paul Coughlan
Timothy Tien-Yue Lam
Paul Anthony Altin
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.)
Liquid Instruments Pty Ltd
Original Assignee
Liquid Instruments Pty Ltd
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 Liquid Instruments Pty Ltd filed Critical Liquid Instruments Pty Ltd
Publication of DE112019004301T5 publication Critical patent/DE112019004301T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17756Structural details of configuration resources for partial configuration or partial reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17758Structural details of configuration resources for speeding up configuration or reconfiguration

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Programmieren von digitalen elektronischen integrierten Schaltungen (integrated circuits - ICs) oder anderen IC, die eine partielle Rekonfiguration unterstützen, wobei ein bestimmtes FPGA mit rekonfigurierbaren Partitionen und Primitiv-Varianten, die in jeder der rekonfigurierbaren Partitionen konfigurierbar sind, Folgendes umfasst: vor dem Schreiben von Konfigurationsbitströmen in das FPGA Kompilieren und Speichern von Primitiv-Bitströmen für verschiedene Primitiv-Funktionen, die auf dem bestimmten FPGA implementiert werden können; Empfangen von Eingaben in einer grafischen Benutzeroberfläche zum Verbinden von grafischen Blöcken, die die Funktionslogik eines Algorithmus darstellen, der auf dem bestimmten FPGA implementiert werden soll, wobei sich die grafischen Blöcke auf rekonfigurierbare Logik beziehen; automatisches Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die den grafischen Blöcken entsprechen; Erhalten einer Teilmenge der Primitiv-Bitströme aus dem digitalen Speicher, die der Teilmenge der Primitiv-Funktionen entspricht; Verwenden von Operationen der partiellen Rekonfiguration, Schreiben der Teilmenge der Primitiv-Bitströme in das bestimmte FPGA.

Description

  • GEBIET DER OFFENBARUNG
  • Ein technisches Gebiet der vorliegenden Offenbarung ist das Programmieren von integrierten Schaltungen (integrated circuit - IC) mit feldprogrammierbarem Gate-Array (FPGA) und anderen Arten programmierbarer ICs. Ein weiteres technisches Gebiet ist die partielle Rekonfiguration (PR) im Gebiet der FPGA-Programmierung.
  • HINTERGRUND
  • Die in diesem Abschnitt beschriebenen Ansätze sind Ansätze, die verfolgt werden könnten, aber nicht unbedingt Ansätze, die zuvor konzipiert oder verfolgt wurden. Sofern nicht anders angegeben, sollte daher nicht davon ausgegangen werden, dass ein der in diesem Abschnitt beschriebener Ansatz allein aufgrund seiner Aufnahme in diesen Abschnitt als Stand der Technik gilt.
  • Integrierte feldprogrammierbare Gate-Array-(field programmable gate array - FPGA)-Schaltungen sind Halbleitervorrichtungen mit einer Matrix aus konfigurierbaren Logikblöcken (configurable logic block - CLB), die konfiguriert werden können, um verschiedene komplexe digitale Schaltungen zu erzeugen. Die CLBs sind über programmierbare Zwischenverbindungen verbunden, die sich über den Bereich des FPGA erstrecken. FPGAs können auch Direktzugriffsspeicher, digitale Signalprozessor(digital signal processor - DSP)-Slices oder andere logische Elemente enthalten. CLBs können so konfiguriert werden, dass sie logische Operationen wie AND und XOR erzeugen, die dann in Reihe und/oder parallel mit anderen logischen Elementen auf dem FPGA gekoppelt werden, um eine bestimmte digitale Schaltung zu erzeugen.
  • FPGA-Konfigurationen werden mit einer Hardwarebeschreibungssprache (hardware description language - HDL) wie etwa Verilog oder VHDL beschrieben. In einer HDL geschriebene Programme werden unter Verwendung einer speziellen Software kompiliert, um Bitströme zu generieren, die Konfigurationsinformationen für ein bestimmtes Ziel-FPGA enthalten. VIVADO ist eine beispielhafte integrierte Designumgebung, die verwendet werden kann, um HDL-Designs zu schreiben und zu kompilieren, um Bitströme für Xilinx-FPGAs zu generieren. FPGAs haben sich als äußerst leistungsfähig für die Implementierung von Hochgeschwindigkeits-DSP- oder hochparallelen DSP-Algorithmen erwiesen. FPGAs sind beispielsweise von Xilinx, Inc., im Handel erhältlich. FPGAs haben die Erstellung rekonfigurierbarer digitaler elektronischer Produkte ermöglicht. Ein Beispiel ist Moku:Lab, entwickelt von Liquid Instruments Pty Ltd. Gegenwärtige Techniken zum Programmieren von FPGAs weisen jedoch mehrere Nachteile auf.
  • Das Programmieren von FPGAs erfordert normalerweise spezielle Kenntnisse, deren Erlernen zeitaufwändig sein kann. Kompilierungs-Tools sind häufig nur vom Hersteller oder Anbieter des FPGA erhältlich und verfügen über Schnittstellen, die nur für diese Chips verwendet werden. Benutzer müssen Zeit investieren, um diese Tools zu installieren und zu erlernen. Die Entwicklungszeiten können je nach Komplexität lang sein. Darüber hinaus kann die Zeit zum Kompilieren eines fertigen Programms, einschließlich für Designänderungen oder während der gesamten Entwicklung, je nach Komplexität in der Größenordnung von mehreren Minuten bis vielen Stunden liegen. Die heutigen Entwickler, die mit einer relativ einfachen Änderung an einem FPGA-Programm konfrontiert sind, möchten nicht Stunden warten, bis der gesamte Bitstrom neu kompiliert und bereitgestellt ist, bevor er in das FPGA geladen wird.
  • Basierend auf diesen Problemen sind verbesserte Techniken für die FPGA-Programmierung erforderlich, und es besteht ein konkreter, seit langem bestehender, aber unerfüllter Bedarf an einer Möglichkeit, die Zeit zum Kompilieren von FPGA-Programmen erheblich zu verkürzen.
  • ZUSAMMENFASSUNG
  • Die beigefügten Ansprüche können als Zusammenfassung der Erfindung dienen.
  • Figurenliste
  • In den Zeichnungen zeigt:
    • 1 ein beispielhaftes verteiltes Computersystem, das zum Implementieren eines Beispiels verwendet werden kann.
    • 2 eine beispielhafte rechnergestützte Ausführungsform gemäß einer Ausführungsform.
    • 3A eine beispielhafte Systemarchitektur für ein FPGA mit partieller Rekonfiguration.
    • 3B ein Beispiel eines komplexen DSP-Algorithmus, wie er unter Verwendung der GUI einer IDE ausgebildet sein könnte, um Funktionsblöcke auszuwählen und grafisch zu verbinden, die Signalverarbeitungsschaltungen darstellen.
    • 3C ein Beispiel für die Implementierung von 3B innerhalb der Architektur von 3A.
    • 3D eine Variante der vorstehenden Architektur, bei der PR-Module niedriger Ebene ein sekundäres Merkmal sind.
    • 4 eine andere Architekturvariante, bei der Instrumente in zwei Kategorien unterteilt sind: Mess- oder Überwachungsinstrumente und Signalerzeugungs- oder Steuerungsinstrumente.
    • 5 ist ein Blockdiagramm, das ein beispielhaftes Computersystem darstellt, mit dem eine Ausführungsform implementiert werden kann.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zum Zwecke der Erläuterung zahlreiche konkrete Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Es ist jedoch offensichtlich, dass die vorliegende Erfindung ohne diese konkreten Details angewendet werden kann. In anderen Fällen werden bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um zu vermeiden, dass die vorliegende Erfindung unnötig verschleiert wird. Es werden Ausführungsformen in Abschnitten gemäß der folgenden Gliederung beschrieben:
    1. 1. Basistechnologie
    2. 2. Allgemeiner Überblick über Ausführungsformen
    3. 3. Strukturelle und funktionelle Beispiele für Ausführungsformen
    4. 4. Implementierungsbeispiel - Hardwareübersicht
  • BASISTECHNOLOGIE
  • DSP-Algorithmen können häufig symbolisch anhand von Blockdiagrammen beschrieben werden. Mehrere im Handel erhältliche Systeme ermöglichen das Designen von Algorithmen für digitale integrierte Schaltungen (ICs) wie etwa FPGAs oder andere unter Verwendung einer grafischen Benutzeroberfläche (GUI) mit Blockdiagrammen. Simulink und LabVIEW sind kommerzielle Beispiele für Tools, die Blockdiagrammumgebungen bieten, die das Design, die Überprüfung und die Implementierung softwarebasierter digitaler Systeme für FPGAs und andere Zielplattformen erleichtern. Diese Systeme verringern einen Teil der Komplexität der Programmierung der Zielplattform, erfordern jedoch immer noch lange Kompilierungszeiten und können zu langen Entwicklungszeiten führen.
  • GNUradio ist ein Beispiel für ein Tool, das eine Umgebung bietet, in der einzelne Funktionsblöcke per Drag-und-Drop zusammengezogen und ihre Interaktionen auf einem Host-Prozessor beobachtet werden können, der an GNUradio-kompatible Hardware angeschlossen ist. Bei diesem System muss ein Designer nicht den Quellcode für die Bereitstellung auf einem externen Verarbeitungssystem generieren. GNUradio ist jedoch nicht für hardwarebasierte Anwendungen mit hoher Bandbreite geeignet.
  • Bei einer partiellen Rekonfiguration (partial reconfiguration - PR) können FPGA-programmierte Schaltungen in Bereiche unterteilt werden, die einzeln kompiliert werden, wodurch ein Bereichsbitstrom erzeugt wird. Jeder Bereichsbitstrom kann einzeln in ein vorhandenes FPGA geladen werden, so dass ein vorhandener Bereichsbitstrom effektiv gegen einen neuen ausgetauscht wird. Moderne FPGAs können Hunderte von separaten Bereichen unterstützen, von denen jeder unabhängig konfigurierbar ist.
  • Partielle Rekonfiguration (partial reconfiguration - PR) ist eine FPGA-Konfigurationstechnik, die das dynamische Ändern von Funktionsmodulen in einem aktiven Design ermöglicht, während der Rest des FPGA weiterarbeitet. PR kann verwendet werden, um Hardwaremodule zu unterschiedlichen Zeiten während der Laufzeit eines FPGA zu tauschen, wodurch große oder komplexe Designs auf ein kleineres FPGA passen. Ein Beispiel ist ein Software Defined Radio, bei dem während der Laufzeit verschiedene Modulations- und Demodulationsprotokolle getauscht werden. PR ist beispielsweise für die FPGAs der Xilinx-ZYNQ-Familie verfügbar. Mit PR werden Schaltungsdesigns in rekonfigurierbare und nicht rekonfigurierbare Logik unterteilt. Der Begriff statische Logik wird für alle logischen Elemente auf einem FPGA verwendet, die nicht rekonfigurierbar sind, während sich der Begriff rekonfigurierbare Logik auf logische Elemente bezieht, die rekonfigurierbar sind. Ein rekonfigurierbares Modul (RM) (oder „Modul“) ist die HDL-Beschreibung der Logik, die innerhalb einer rekonfigurierbaren Partition (RP) (oder „Partition“) platziert werden kann. Jede RP ist eine physische Sammlung logischer Elemente auf dem FPGA, die nur für die Verwendung innerhalb dieser Partition vorgesehen sind. Ein rekonfigurierbarer Frame (RF) repräsentiert den kleinsten rekonfigurierbaren Bereich, der als eine RP definiert werden kann. In einer RP können mehrere RF enthalten sein, die darin verkapselt sind. Partielle Bitströme sind die generierten Dateien, die Informationen zu den Konfigurationsspezifikationen und dem Konfigurationsspeicherort eines RM enthalten.
  • Sobald ein Design in statische Logik und rekonfigurierbare Logik unterteilt ist, wird die rekonfigurierbare Logik in RP-Abschnitte unterteilt, und alle RMs für jede Partition werden identifiziert. Jeder Bitstrom beinhaltet Konfigurationsdaten und Standortdaten. Daher wird für alle Module an allen RP-Standorten ein separater einzelner Bitstrom generiert. Wenn also dasselbe Funktionsmodul in zwei verschiedenen RPs benötigt wird, werden zwei Bitströme benötigt. Module und Partitionen unterliegen anderen Einschränkungen, die für diese Offenbarung nicht relevant sind, die jedoch die Implementierung bestimmter Schaltungen beeinflussen können; diese Einschränkungen sind in anderen Veröffentlichungen gut dokumentiert.
  • ALLGEMEINER ÜBERBLICK ÜBER AUSFÜHRUNGSFORMEN
  • In einer Ausführungsform wird ein Verfahren offenbart, das eine Verbesserung der Geschwindigkeit und Effizienz beim Konfigurieren einer digitalen elektronischen integrierten Schaltung (IC) bereitstellt, die eine partielle Rekonfiguration unterstützt, wobei eine bestimmte IC eine Vielzahl von rekonfigurierbaren Partitionen und eine Vielzahl von Primitiv-Varianten aufweist, die in jeder der rekonfigurierbaren Partitionen konfigurierbar sind, und die bei Ausführung mit einem oder mehreren Prozessoren bewirken, dass der eine oder die mehreren Prozessoren Folgendes ausführen: vor dem Schreiben von Konfigurationsbitströmen in die jeweilige IC Kompilieren und Speichern einer Vielzahl von Primitiv-Bitströmen für eine Vielzahl von verschiedenen Primitiv-Funktionen, die auf der bestimmten IC geschrieben und auf dieser implementiert werden können, unter Verwendung von digitalem Speicher; Empfangen von Eingaben zum Spezifizieren der Funktionslogik eines Algorithmus zum Implementieren auf der bestimmten IC unter Verwendung einer rekonfigurierbaren Logik; automatisches Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die der Funktionslogik entsprechen; Erhalten einer Teilmenge der Primitiv-Bitströme, die der Teilmenge der Primitiv-Funktionen entspricht, aus dem digitalen Speicher; Verwenden einer oder mehrerer Operationen der partiellen Rekonfiguration, Schreiben der Teilmenge der Primitiv-Bitströme in die bestimmte IC; wobei das Verfahren von einer oder mehreren Computervorrichtungen ausgeführt wird.
  • In einer anderen Ausführungsform wird ein Verfahren offenbart, das eine Verbesserung der Geschwindigkeit und Effizienz der Programmierung von digitalen elektronischen integrierten Schaltungen mit feldprogrammierbarem Gate-Array (FPGA), die eine partielle Rekonfiguration unterstützen, bereitstellt, wobei ein bestimmtes FPGA eine Vielzahl von rekonfigurierbaren Partitionen und eine Vielzahl von Primitiv-Varianten aufweist, die in jeder der rekonfigurierbaren Partitionen konfiguriert werden können, wobei das Verfahren Folgendes umfasst: vor dem Schreiben von Konfigurationsbitströmen in das bestimmte FPGA, Kompilieren und Speichern einer Vielzahl von Primitiv-Bitströmen für eine Vielzahl verschiedener Primitiv-Funktionen, die in das bestimmte FPGA geschrieben und auf diesem implementiert werden können, unter Verwendung eines digitalen Speichers; Empfangen von Eingaben zum Spezifizieren der Funktionslogik eines Algorithmus, der auf dem bestimmten FPGA implementiert werden soll, unter teilweiser Verwendung rekonfigurierbarer Logik; automatisches Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die den grafischen Blöcken entsprechen; Erhalten einer Teilmenge der Primitiv-Bitströme, die der Teilmenge der Primitiv-Funktionen entspricht, aus dem digitalen Speicher; Verwenden einer oder mehrerer Operationen der partiellen Rekonfiguration, Schreiben der Teilmenge der Primitiv-Bitströme in das bestimmte FPGA; wobei das Verfahren von einer oder mehreren Computervorrichtungen ausgeführt wird.
  • Die Ausführungsformen gehen davon aus, dass alle Blockdiagramme für FPGA-Algorithmen unter Verwendung von N diskreten Blocktypen beschrieben werden können, die in einer Matrix von M Blockbereichen verbunden sind. Während bestimmte Ausführungsformen speziell für die Verwendung mit FPGAs beschrieben werden, können die Verfahren dieser Offenbarung allgemeiner auf andere programmierbare integrierte Schaltungen angewendet werden, und die Verwendung von FPGAs ist nicht erforderlich.
  • Ein Ansatz könnte darin bestehen, Bitströme für alle möglichen Blockdiagrammverbindungen vorab zu kompilieren und dann basierend auf dem Blockdiagramm des Benutzers auszuwählen. Das Speichern und Kompilieren von N^M vollständigen Bitströmen wird durchgeführt. Wenn M und/oder N über kleine Werte hinaus ansteigen, wird die Menge an Speicher- und Kompilierungszeit für diesen Ansatz nicht mehr realisierbar. Die Speicher- und Kompilierungszeit nimmt exponentiell oder polynomiell mit zunehmendem M oder N zu. Jeder Teilbitstrom liegt in der Größenordnung von 100 kB und dauert je nach Komplexität etwa 5 Minuten zum Kompilieren. Wenn M = N = 100, sind etwa 5*100^100 Minuten Kompilierungszeit und 100^98 GB Speicher erforderlich.
  • In der Ausführungsform werden Techniken der partiellen Rekonfiguration (PR) verwendet, bei denen jede der M Bereiche als partiell rekonfigurierbar definiert ist und ein einzelner Teilbitstrom für jeden der N Blocktypen vorab für jeden M Bereich kompiliert wird. „Vorab“ bedeutet in diesem Zusammenhang, bevor ein Endbenutzercomputer zum Designen eines Algorithmus unter Verwendung eines grafischen oder nicht grafischen Tools verwendet wird; wenn der Designprozess beginnt, verfügt der Benutzer über eine vorkompilierte Bibliothek von vielen Bitströmen, die den verfügbaren N Blocktypen entsprechen, die zur Realisierung eines Algorithmus konfiguriert werden können. Folglich ist die Kompilierung und Speicherung von nur M*N Bitströmen erforderlich. Wenn M = N = 100, sind nur 50.000 Minuten Kompilierungszeit und 1 GB Speicher erforderlich. Dieser Ansatz beruht in gewissem Maße auf der Vorhersage der bestimmten Funktionen, die Benutzeralgorithmen oder -anwendungen benötigen werden, und der Vorberechnung von Bitströmen für diese Funktionen.
  • In einigen Ausführungsformen wird ein einzelner Teilbitstrom für weniger als alle N Blocktypen vorab kompiliert, und Bitströme für andere Blocktypen, die zum vollständigen Bereitstellen eines Algorithmus auf einer Zielplattform erforderlich sind, werden zum Zeitpunkt des Designs und/oder kurz vor der Bereitstellung kompiliert. In einigen Ausführungsformen wird eine Teilmenge von weniger als N Blocktypen zur Vorkompilierung ausgewählt, basierend auf der Popularität der Blocktypen, die in der Vergangenheit vom aktuellen Benutzer oder anderen Benutzern verwendet wurden, und daher enthält die Teilmenge die Blocktypen, die am wahrscheinlichsten in einem bestimmten Design ausgewählt werden. Beispielsweise kann der Kompilierungsagent 122 so programmiert sein, dass er eine Benutzerauswahl bestimmter Blocktypen in der IDE 120 erfasst und Berichte über Benutzerauswahlen an den Kompilierungsserverprozess 132 sendet, um sie allein oder in Kombination mit Daten zu speichern, die auf ähnliche Weise von anderen Instanzen des Kompilierungsagenten, die auf verschiedenen Host-Computern unabhängiger Benutzer laufen, empfangen wurden. Auf diese Weise können Crowd-Sourcing-Berichte über die tatsächliche Auswahl von Blocktypen Einfluss darauf haben, welche Blocktypen auf der Serverseite vorkompiliert werden. Oder Benutzereingabe- und/oder Konfigurationsdaten können angeben, welche Blocktypen vorkompiliert und welche Blocktypen zum Design- oder Bereitstellungszeitpunkt kompiliert werden. Dieser Ansatz kann es Benutzern ermöglichen, die Zeitersparnis- und Effizienz-Vorteile einer gespeicherten Bibliothek vorkompilierter Bitströme gegen den Rechenaufwand einer vorzeitigen Kompilierung abzuwägen. Andere Ausführungsformen, Aspekte und Merkmale werden aus der Offenbarung als Ganzes und den beigefügten Ansprüchen ersichtlich.
  • STRUKTURELLE UND FUNKTIONALE BEISPIELE FÜR AUSFÜHRUNGSFORMEN
  • 1 zeigt ein beispielhaftes verteiltes Computersystem, das zum Implementieren eines Beispiels verwendet werden könnte. In der Erörterung der Figuren bezieht sich der Begriff „Primitive“ auf die Gruppierung von Logik für einen DSP oder eine andere Anwendung von FPGA 110, die zu einem einzelnen Teilbitstrom kompiliert ist.
  • In einer Ausführungsform ist eine Client-Computervorrichtung 102 direkt oder indirekt über ein oder mehrere Netzwerke 104 kommunikativ mit einem Server 106 verbunden.
  • Die Client-Computervorrichtung 102 kann einen Desktop-Computer, einen Laptop-Computer, eine mobile Computervorrichtung, eine Workstation oder eine andere Computervorrichtung umfassen, die zur Anbindung an ein FPGA 110 fähig ist, das so programmiert wird, dass es den Algorithmus des Benutzers implementiert. In einer Ausführungsform ist die Client-Computervorrichtung 102 auch an Peripherieelektronik 112 angebunden, die in verschiedenen Ausführungsformen eine oder mehrere von Prozessorentwicklungsboards, Analog-DigitalWandler, Digital-Analog-Wandler, Netzwerkverbindungen, Leistungswandler oder andere beinhalten kann.
  • Die Client-Computervorrichtung 102 hostet oder führt eine integrierte Entwicklungsumgebung (integrated development environment - IDE) 120 aus, die ein Anwendungsprogramm ist, das angeordnet ist, um die Erstellung, Verwaltung und Kompilierung eines FPGA-Programms 114 zu unterstützen. In einigen Ausführungsformen generiert und ermöglicht die IDE 120 eine Benutzerinteraktion mit einer grafischen Benutzeroberfläche, die das Programmieren von DSP-Algorithmen durch Verbinden von grafischen Blöcken, Symbolen oder Widgets ermöglicht, die Rechenfunktionen darstellen.
  • In einer Ausführungsform wird ein Kompilierungsagent 122 unter Verwendung der Client-Computervorrichtung 102, die in die IDE 120 integriert ist, oder als separates Programm gehostet oder ausgeführt und so programmiert oder konfiguriert, dass er mit einem kompatiblen Kompilierungsserverprozess 132 auf dem Server 106 wie näher beschrieben zusammenarbeitet. In einer Ausführungsform ist der Kompilierungsagent 122 so programmiert, dass er bestimmt, welche Bitstrom-Primitive vom Server 106 erfasst werden sollen und wo sie im FPGA 110 platziert werden sollen. Unter Verwendung dieser Elemente kann die Client-Computervorrichtung 102 einen Satz kompilierter Bitströme 124 generieren oder erhalten, die in das FPGA 110 geschrieben werden, um das Programmieren des FPGA zu erreichen. In einigen Ausführungsformen sind die IDE 120 und der Kompilierungsagent 122 konfiguriert oder programmiert, um Kommunikations- oder Nachrichtenprotokolle zwischen dem Server 106 und dem Netzwerkdatenspeicher 140 auszuführen, die die Verteilung kompilierter Bitstrom-Primitive 142 enthalten oder steuern, wie in anderen Abschnitten näher beschrieben; um Software und Firmware zur Steuerung von Clientaufgaben auszuführen; und die kompilierten Bitströme 124 für Primitive, die im FPGA 110 programmiert werden sollen, zu speichern. Abhängig von der Anzahl der Primitive und/oder Speicheranforderungen kann das Speichern kompilierter Bitströme 124 vom Server 106 unter Verwendung des Speichers 140 gemeinsam oder vollständig ausgeführt werden.
  • FPGA 110 unterstützt PR. In einer Ausführungsform ist das FPGA 110 eine sehr große Einheit mit einer Vielzahl von Bereichen, die jeweils eine Anzahl von Verarbeitungselementen enthalten, die für die ressourcenintensivste Konfiguration ausreichen, die ein programmierter Algorithmus erfordern könnte. Es wird von einer großen Ressourcenanzahl, die über viele diskrete Bereiche verteilt ist, ausgegangen. Während eine Ausführungsform am besten in größeren FPGAs ausgeführt werden kann, in denen der Benutzer weniger Platzprobleme hat, ist das hier beschriebene Verfahren unabhängig von der Vorrichtungsgröße verwendbar, und ein großes FPGA oder eine andere große Plattform ist nicht notwendig.
  • Das Netzwerk 104 repräsentiert im Großen und Ganzen jede Kombination von lokalen Netzwerken, Weitverkehrsnetzwerken, Internetworks oder Internets, die terrestrische, Satelliten-, drahtgebundene oder drahtlose Verbindungen verwenden. Die Client-Computervorrichtung 102 und der Server 106 hosten Schnittstellen zum Netzwerk 104, die mit Protokollen für Transport-, Sitzungs- und Anwendungsverkehr, die über das Netzwerk 104 übertragen werden, kompatibel sind. Die spezifischen Protokolle, die über das Netzwerk 104 verwendet werden, sind nicht kritisch, vorausgesetzt, dass die Client-Computervorrichtung 102 und der Server 106 unter Verwendung digitaler elektronischer Nachrichten und asynchroner, zustandsloser oder zustandsorientierter Protokolle kommunizieren können, um Anforderungen, Antworten und Datennutzdaten auszutauschen.
  • In einer Ausführungsform umfasst der Server 106 einen beliebigen aus Desktop-Computer, Rackmount-Computer oder eine oder mehrere virtuelle Recheninstanzen in einem öffentlichen oder privaten Cloud-Rechenzentrum. Der Server 106 kann einen Prozess umfassen, der auf einem Servercomputer oder einem Cluster mit anderen Prozessen, Servern oder Anwendungen ausgeführt wird. Der Server 106 kann unter Verwendung einer Betriebssystemvirtualisierung implementiert werden, beispielsweise unter Verwendung einer DOCKER- oder KUBERNETES-Containerisierung. Der Server 106 beinhaltet oder ist programmiert zum Zugriff auf den Speicher 140, der einen cloudbasierten digitalen Datenspeicher oder einen anderen vernetzten Datenspeicher umfassen kann.
  • In einer Ausführungsform speichert der Server 106 den Quellcode 130 für FPGA-Primitiv-Funktionen, die hier in anderen Abschnitten näher beschrieben werden. Der Server 106 hostet oder führt auch einen Kompilierungsserverprozess 132 aus, der konfiguriert oder programmiert ist, um den Quellcode 130 in Bitstrom-Primitive zu kompilieren, die im Speicher 140 gespeichert sind, wie dies durch die kompilierten Bitströme 142 angezeigt wird. Bezeichnenderweise wird in Ausführungsformen der Quellcode 130 für alle Funktions-Primitive, die in rekonfigurierbaren Partitionen des FPGA 110 verwendet werden könnten, vor jeder Programmieraktivität durch die Client-Computervorrichtung 102 kompiliert und im Speicher 140 gespeichert, um auf Anforderungen nach den Bitströmen von der Client-Computervorrichtung zu warten. Der Kompilierungsserverprozess 132 kann Programme, Bibliotheken oder Funktionen verwenden, die im Voraus von einem Anbieter des FPGA 110 bezogen wurden oder auf andere Weise mit dem FPGA 110 kompatibel sind.
  • Bitströme 142 von Primitiven können eine beliebige aus einer großen Anzahl verschiedener konkreter Signalverarbeitungsfunktionen implementieren. Beispiele für Primitive, die in verschiedenen Ausführungsformen verwendet werden können, beinhalten: Signaladdierer; Signalmultiplizierer; Signalmischer; digitaler Filter; Oszillator; Integrator; trigonometrische Operationen; Schnelle Fourier-Transformation; PID-Regler; Phasenregelkreis; Integrator; Differentiator; Sinuswellengenerator; direkter digitaler Synthesizer; Filter mit unendlicher Impulsantwort der direkten Normalform 1 mit einer Sektion einer einzigen Ordnung; Gleichstromverstärkung.
  • In dem Beispiel von 1 ist der Server 106 zum Speichern kompilierter Bitströme 142 von Primitiven unter Verwendung des Speichers 140 programmiert oder konfiguriert. Abhängig von der Anzahl der Primitiven und/oder Speicheranforderungen kann diese Aufgabe gemeinsam oder vollständig durch die Client-Computervorrichtung 102 ausgeführt werden. Der Kompilierungsserverprozess 132 ist auch zum Abrufen und Übertragen kompilierter Bitströme 142 an die Client-Computervorrichtung 102 als Reaktion auf Anforderungen von der Client-Computervorrichtung 102 programmiert oder konfiguriert, wie näher beschrieben.
  • Es wurde eine Ausführungsform beschrieben, bei der bestimmte Operationen in der Client-Computervorrichtung 102 bei der Kommunikation über das Netzwerk 104 mit dem Server 106 auftreten und bei der der Speicher 140 in Verbindung mit dem Server verwaltet wird. Andere Ausführungsformen können jedoch vollständig in einem einzelnen Host-Computer oder einer virtuellen Recheninstanz implementiert sein, und es besteht keine Notwendigkeit einer Client-Server-Architektur. Darüber hinaus kann sich der Speicher 140 auf dem Host-Computer befinden oder einer virtuellen Recheninstanz zugeordnet sein, und es besteht keine Notwendigkeit, den digitalen Speicher vorkompilierter Bitströme von der Client-Computervorrichtung 102 oder einem anderen Computer, der zum Designen von Algorithmen verwendet wird, zu trennen. Beispielsweise können ein einzelner Host-Computer oder virtuelle Recheninstanzen, wie etwa die Client-Computervorrichtung 102, alle in 1 gezeigten Funktionselemente und Datenspeichervorrichtungen als integriertes System hosten. Oder die Architektur von 1 kann verwendet werden, jedoch kann ein Satz vorkompilierter Bitströme vom Server 106 an die Client-Computervorrichtung 102 als Paket oder Einheit für die lokale Speicherung auf der Client-Computervorrichtung geliefert werden. In einer Ausführungsform wird die Lieferung eines Pakets vorkompilierter Bitströme unter Verwendung eines Installationsprozesses durchgeführt, der unter Verwendung einer beliebigen Kombination aus Client-Software auf der Client-Computervorrichtung und/oder einem Browser-ausführbaren Code, der in einem Browser auf der Client-Computervorrichtung ausgeführt wird, durchgeführt wird.
  • 2 zeigt einen beispielhaften computerimplementierten Prozess gemäß einer Ausführungsform. Das Beispiel von 2 beinhaltet Funktionsschritte, die von der Client-Computervorrichtung 102 und dem Server 106 zu unterschiedlichen Zeiten ausgeführt werden. In einer Ausführungsform kompiliert ein Server oder Servercomputer in Block 202 alle möglichen Kombinationen von Primitiven für eine bestimmte Zielplattform vor. In Block 204 speichert der Prozess die kompilierten Bitstrom-Primitiven im Netzwerkspeicher. Beispielsweise kompiliert der Server 106 den Quellcode 130 von Primitiven unter Verwendung des Kompilierungsserverprozesses in kompilierte Bitströme 142 vor, die unter Verwendung des Speichers 140 gespeichert werden. Die Anzahl der im Quellcode 130 dargestellten Primitive kann in verschiedenen Ausführungsformen variieren. Beispielsweise kann ein bestimmtes FPGA in Konfigurationsdaten so definiert sein, dass es „100“-Partitionen unterstützt. Für jede der Partitionen stehen N verschiedene Varianten zur Verfügung, um vorkompilierte Bitströme zu empfangen. Die Sätze von Bitströmen für einen bestimmten Bereich sind nicht unbedingt mit denen für andere Bereiche austauschbar. Somit kann der Bereich „01“ des FPGA einen ersten Bitstrom unterstützen, der aus einem ersten bestimmten Satz von 20 verschiedenen Bitströmen ausgewählt ist, und der Bereich „64“ desselben FPGA kann einen zweiten Bitstrom unterstützen, der aus einem zweiten unterschiedlichen, bestimmten Satz von 20 anderen Bitströmen ausgewählt ist.
  • In einer Ausführungsform können Verwaltungsaktions- oder Konfigurationsdaten eine Änderung der Varianten angeben, die Partitionen des Ziel-FPGA zugeordnet sind. Wenn beispielsweise die Partition „64“ geändert wird, um einer Variante in dieser Partition, der zuvor kein Phasenregelkreis(phase-locked loop -PLL)-Block zugeordnet war, oder in einer ihrer Varianten einen Funktionsblock mit Phasenregelkreis hinzuzufügen, müssten alle Bitströme der Partition ,,64" mit Server 106 rekompiliert werden. Jeder Funktionsblock, der einer Partition zugeordnet ist, kann jedoch mehrere Sätze unabhängiger Logikbefehle enthalten, wodurch die Flexibilität erhöht wird. Beispielsweise könnte eine bestimmte Variante unter den 20 Varianten, die der Partition „64“ zugeordnet sind, die Logik sowohl für eine PLL als auch für einen Addierer definieren. In einigen Ausführungsformen können sich zwei oder mehr Sätze von Logik in einem Funktionsblock befinden, der einer Variante einer Partition zugeordnet ist. Diese Anordnung kann durch die im FPGA verfügbare Gesamtrechenleistung eingeschränkt sein. Asynchron wird in Block 206 an einer Client-Computervorrichtung ein Algorithmus oder ein Programm unter Verwendung einer grafischen Benutzeroberfläche definiert oder programmiert.
  • Beispielsweise könnte ein DSP-Algorithmus definiert werden. Das Definieren des DSP-Algorithmus kann das Empfangen von Benutzereingaben umfassen, die das Ziehen, Ablegen und Verbinden von grafischen Blöcken spezifizieren, die Operationen eines DSP-Algorithmus in einer GUI-Schnittstelle der IDE 120 symbolisch definieren.
  • In einigen Ausführungsformen kann Block 206 das Empfangen eines oder mehrerer Parameterwerte beinhalten, um die Konfiguration eines bestimmten Funktionsblocks zu ändern. Beispiele hierfür beinhalten Parameterwerte auf Registerebene oder die Angabe der Umleitung von Eingaben oder Ausgaben zu bestimmten Registern oder anderen Ausgabestellen.
  • In Block 208 wird der Algorithmus unter Verwendung der Client-Computervorrichtung 102 in entsprechende Primitive segmentiert oder gruppiert. Block 208 kann das Bestimmen beinhalten, welche verfügbaren RP und Varianten des FPGA 110 welche spezifischen vorkompilierten Primitiv-Bitströme 142 empfangen sollen, um zur Implementierung des Algorithmus auf dem FPGA zu führen.
  • Block 208 kann auch das Bestimmen von Zuordnungen von Funktionsblöcken des Algorithmus, wie in der GUI unter Verwendung von IDE 120 angegeben, zu verfügbaren Primitiven, die auf dem Server vorkompiliert wurden, beinhalten. In einigen Ausführungsformen kann der Block 208 automatisch basierend auf einer Zuordnungstabelle, einer Konfigurationsdatei oder anderen Daten ausgeführt werden, die angeben, wie ein in der GUI dargestellter Funktionsblock einem bestimmten Primitiv und/oder Bitstrom auf dem Server 106 entspricht. Alternativ kann die IDE 120 nativ oder gesteuert von dem Kompilierungsagenten 122 GUI-Widgets bereitstellen, die so programmiert sind, dass sie Eingaben akzeptieren, um einen Funktionsblock in der GUI auszuwählen und ein bestimmtes Primitiv zum Implementieren dieses Blocks anzugeben.
  • Zu diesem Zeitpunkt hat die Client-Computervorrichtung 102 Identifikatoren für alle vorkompilierten Bitströme 142 bestimmt, die zur Implementierung des Algorithmus auf dem FPGA benötigt werden und die in RPs und Varianten von RPs auf dem FPGA ausgetauscht werden können.
  • Bei Block 210 überträgt die Client-Computervorrichtung 102 eine Anforderung an den Server 106, um Bitströme für konkrete Primitive zu erhalten. Eine oder mehrere Anfragen können übertragen werden. Die eine oder mehreren Anforderungen spezifizieren zusammen alle vorkompilierten Bitströme 142, die zum Implementieren des Algorithmus auf dem FPGA benötigt werden und die in RPs und Varianten von RPs auf dem FPGA getauscht werden können.
  • In Block 212 werden auf dem Server 106 Bitstrom-Primitive, die den Bereichen und Gruppen des DSP-Algorithmus entsprechen, aus dem Speicher 140 oder einem anderen vernetzten Speicher abgerufen, und Kopien werden in einer Antwort über das Netzwerk 104 an die Client-Computervorrichtung 102 zurückgegeben. Die kompilierten Bitströme 142 können nach ihrem Empfang in Form von kompilierten Bitströmen 124 auf der Client-Computervorrichtung 102 gespeichert werden.
  • In Block 214 werden die abgerufenen Bitströme auf dem FPGA bereitgestellt. Der Kompilierungsagent 122 kann in Abstimmung mit der IDE 120 das Schreiben der empfangenen kompilierten Bitströme 124 in bestimmte FPs und Varianten des FPGA 110 bewirken. Nach Abschluss von Block 214 wurde das FPGA mit der gesamten rekonfigurierbaren Logik programmiert, die unter Verwendung der GUI von IDE 120 designt und unter Verwendung vorkompilierter Bitströme 142 von mit dem Design verbundenen Primitiven implementiert wurde. Diese Schritte erfolgen wesentlich schneller als herkömmliche Ansätze, bei denen zu diesem Zeitpunkt eine Kompilierung von Bitströmen erforderlich wäre, um einen Algorithmus auf einem IC bereitzustellen.
  • 3A zeigt eine beispielhafte Systemarchitektur für ein FPGA mit partieller Rekonfiguration. In einer Ausführungsform sind zwei Eingaben „in 1“, „in 2“ indirekt mit zwei Sätzen von drei (3) Zeilen gekoppelt, die jeweils fünf (5) nacheinander verbundene DSP-Block-PR-Bereiche aufweisen, die mit „1.1“ bis „6.5“ bezeichnet sind. Eine Vielzahl von Zwischenverbindungen 302 ermöglicht beliebige Verbindungen zwischen Zeilen. Die Zwischenverbindungen 302 können in verschiedenen Ausführungsformen auf unterschiedliche Weise implementiert werden. Beispiele hierfür sind ein großes Multiplexnetzwerk, Hochgeschwindigkeits-AXI-Datenbusse oder PR-Bereiche mit Varianten für verschiedene Verbindungen.
  • Jeder DSP-PR-Bereich 1.1 bis 6.5 ist identisch und kann als eine von N -Varianten konfiguriert werden, von denen jede unter Verwendung eines anderen Bitstrom-Primitivs aus den vorkompilierten Bitströmen 142 beschrieben ist. Die Schnittstelle für jede Variante ist dieselbe, einschließlich der Eingaben „in 1“, „in 2“ und der Ausgaben „Out 1“, „Out 2“ und einer Verbindung zum Konfigurations-AXI-Bus 304. Jede Variante enthält Logik für einen anderen Zweck sowie Ausgabemultiplexen, um auszuwählen, welche Signale an jede Ausgabe weitergeleitet werden.
  • Während bestimmte Ausführungsformen die Verwendung von bis zu 20 Varianten und etwa 20 Funktionsblöcken der Logik erwähnt haben, können andere Ausführungsformen andere Anzahlen dieser Elemente verwenden, und insbesondere gibt es keine Begrenzung für die Zahl verschiedener Arten von Logik, die zur Verwendung in einer bestimmten Variante definiert werden können. Beispiele für mögliche Funktionsblöcke, die in verschiedenen Ausführungsformen von PR-Bereichskonfigurationen verwendet werden können, beinhalten:
    • Signaladdierer; Signalmultiplizierer; Signalmischer; digitaler Filter; Oszillator; Integrator; trigonometrische Operationen; Schnelle Fourier-Transformation; PID-Regler; Phasenregelkreis; Integrator; Differentiator; Sinuswellengenerator; direkter digitaler Synthesizer; Filter mit unendlicher Impulsantwort der direkten Normalform 1 mit einer Sektion einer einzigen Ordnung; Gleichstromverstärkung; Null. Darüber hinaus können komplexe Funktionsblöcke zu Bitströmen führen, die auf zwei oder mehr Varianten eines FPGA-Bereichs aufgeteilt sind.
  • 3B zeigt ein Beispiel eines komplexen DSP-Algorithmus, wie er unter Verwendung der GUI einer IDE designt werden könnte, um Funktionsblöcke, die Signalverarbeitungsschaltungen darstellen, auszuwählen und grafisch zu verbinden. Das Beispiel von 3B umfasst ein Blockdiagramm für ein Frequenzmodulations-Steuersystem und es ist ersichtlich, dass Signalverarbeitungsfunktionen Sinuswellengeneratoren (Sine Gen), Demodulation, Steuerungen, einen Scanner und einen IIR beinhalten können. Die Blöcke 310, 312, die in gestrichenen Linien gruppiert sind, sind Beispiele für Elemente, die in einzelne Bitstrom-Primitive gruppiert werden können.
  • 3C zeigt ein Beispiel für die Implementierung von 3B innerhalb der Architektur von 3A. In 3C wurden die Funktionsblöcke von 3B spezifischen RPs oder Bereichen der Architektur von 3A zugewiesen und entsprechend in 3C gekennzeichnet, um diese Zuordnung anzuzeigen. Zum Beispiel ist der Bereich 1.1 von 3A der Sinus-Gen-Logik zugeordnet, 1.2 ist der Demodulator und so weiter. Die Auswahl von Bereichen in Bezug auf Zwischenverbindungen 302 und Busse 304 erreicht eine Implementierung der Logik von 3B in einer bestimmten Chip-Anordnung.
  • 3D veranschaulicht eine Variante der vorstehenden Architektur, bei der PR-Module niedriger Ebene ein sekundäres Merkmal sind. In diesem Beispiel stellen die Felder N.1, N.2, N.X größere PR-Bereiche dar, die als einkanalige Versionen vorhandener Instrumente konfiguriert werden können, beispielsweise von Instrumenten, die bei Moku:Lab verfügbar sind. Mit dieser Anordnung können Benutzer hochkomplexe Systeme unter Verwendung einer einzigen Hardwareeinheit erstellen. Die PR-Module niedriger Ebene 1.1, 1.2, 1.3 bis 6.3 bleiben für die weitere Benutzeranpassung an bestimmte Anwendungsfälle oder Benutzeranforderungen nützlich. Somit veranschaulicht diese Architektur die Möglichkeit, ein FPGA mit größeren PR-Bereichen, die für komplexe Funktionen vorgesehen sind, mit Modulen niedriger Ebene zu integrieren, die unter Verwendung der vorkompilierten Bitströme 142 rekonfiguriert werden können, um andere Funktionalitäten auf dem Chip auszutauschen, ohne die Verwendung der größeren PR-Bereiche und die Hauptfunktionen des Chips zu unterbrechen.
  • 4 veranschaulicht eine andere Architekturvariante, bei der Instrumente in zwei Kategorien unterteilt sind: Mess- oder Überwachungsinstrumente und Signalerzeugungs- oder Steuerungsinstrumente. Die PR-Bereiche 402, 404, 406 sind spezifisch für die Signalerzeugungs- oder Steuerungsinstrumente, und die PR-Bereiche 408 sind spezifisch für Mess- oder Überwachungsinstrumente. Mit dieser Anordnung bleibt die gleiche Funktionalität des Moku:Lab-Systems erhalten, und die Flexibilität ist größer. Darüber hinaus wären, wenn zwei (2) Varianten für die Signalerzeugungs- oder Steuerungsinstrumente zugewiesen werden, die in einem FPGA erforderlichen Ressourcen nicht wesentlich höher als die bei Verfassen dieses Textes verfügbare Moku:Lab-Vorrichtung.
  • Die Ausführungsformen bieten gegenüber früherer Praxis zahlreiche Vorteile. Ein wesentlicher Vorteil besteht darin, dass aus Benutzersicht die Kompilierungszeit vollständig entfällt. Die Client-Computervorrichtung 102 kann vorkompilierte Versionen von Bitströmen für jeden Funktionsblock erhalten, der zum Programmieren eines FPGA ohne die langen Verzögerungen bei der lokalen Kompilierung von FPGA-Blöcken erforderlich ist. Darüber hinaus sind alle zum Durchführen der Kompilierung erforderlichen Tools auf dem Servercomputer 106 vorinstalliert und werden von diesem verwaltet, und sie werden als Dienst für die Client-Computervorrichtung 102 bereitgestellt. Daher müssen Benutzer von Client-Computervorrichtungen 102 keine chipspezifischen oder anbieterspezifischen Kompilierungs-Tools installieren oder erlernen.
  • IMPLEMENTIERUNGSBEISPIEL - HARDWAREÜBERSICHT
  • Gemäß einer Ausführungsform werden die hier beschriebenen Techniken von mindestens einer Computervorrichtung implementiert. Die Techniken können ganz oder partiell unter Verwendung einer Kombination von mindestens einem Servercomputer und/oder anderen Computervorrichtungen implementiert werden, die unter Verwendung eines Netzwerks, wie beispielsweise eines Paketdatennetzwerks, gekoppelt sind. Die Computervorrichtungen können mindestens einen Allzweck-Hardwareprozessor beinhalten, der so programmiert ist, dass er die Techniken gemäß Programmbefehlen in Firmware, Arbeitsspeicher, anderem Speicher oder einer Kombination ausführt. Solche Computervorrichtungen können auch benutzerdefinierte fest verdrahtete Logik, ASICs oder FPGAs mit benutzerdefinierter Programmierung kombinieren, um die beschriebenen Techniken durchzuführen. Die Computervorrichtungen können Servercomputer, Arbeitsstationen, Personalcomputer, tragbare Computersysteme, Handheld-Vorrichtungen, mobile Computervorrichtungen, tragbare Vorrichtungen, am Körper montierte oder implantierbare Vorrichtungen, Smartphones, intelligente Geräte, Internetworking-Vorrichtungen, autonome oder halbautonome Vorrichtungen wie Roboter oder unbemannte Boden- oder Luftfahrzeuge, jede andere elektronische Vorrichtung, das fest verdrahtete und/oder Programmlogik zur Implementierung der beschriebenen Techniken enthält, eine oder mehrere virtuelle Rechenmaschinen oder -instanzen in einem Datenzentrum und/oder ein Netzwerk von Servercomputern und/oder Personalcomputern sein.
  • 5 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, mit dem eine Ausführungsform implementiert werden kann. In dem Beispiel von 5 sind ein Computersystem 500 und Befehle zum Implementieren der offenbarten Technologien in Hardware, Software oder einer Kombination von Hardware und Software schematisch dargestellt, beispielsweise als Kästchen und Kreise, auf derselben Detailebene, die üblicherweise vom Durchschnittsfachmann, an den sich diese Offenbarung richtet, für die Kommunikation über Computerarchitektur und Computersystemimplementierungen verwendet wird.
  • Das Computersystem 500 beinhaltet ein Eingabe/Ausgabe (input/output - I/O)-Teilsystem 502, das einen Bus und/oder andere Kommunikationsmechanismen zum Kommunizieren von Informationen und/oder Befehlen zwischen den Komponenten des Computersystems 500 über elektronische Signalpfade beinhalten kann. Das I/O-Teilsystem 502 kann einen I/O-Controller, einen Arbeitsspeichercontroller und mindestens einen I/O-Port beinhalten. Die elektronischen Signalpfade sind in den Zeichnungen schematisch dargestellt, beispielsweise als Linien, unidirektionale Pfeile oder bidirektionale Pfeile.
  • Mindestens ein Hardwareprozessor 504 ist zur Verarbeitung von Informationen und Befehlen mit dem I/O-Teilsystem 502 gekoppelt. Der Hardwareprozessor 504 kann beispielsweise einen Allzweck-Mikroprozessor oder -Mikrocontroller und/oder einen Mikroprozessor mit besonderer Zweckbestimmung wie ein eingebettetes System oder eine Grafikverarbeitungseinheit (graphics processing unit - GPU) oder einen digitalen Signalprozessor oder ARM-Prozessor beinhalten. Der Prozessor 504 kann eine integrierte arithmetische Logikeinheit (integrated arithmetic logic unit - ALU) umfassen oder kann mit einer separaten ALU gekoppelt sein.
  • Das Computersystem 500 beinhaltet eine oder mehrere Einheiten eines Arbeitsspeichers 506, wie etwa eines Hauptspeichers, der mit dem I/O-Teilsystem 502 zum elektronischen digitalen Speichern von Daten und Befehlen, die vom Prozessor 504 ausgeführt werden sollen, gekoppelt ist. Der Arbeitsspeicher 506 kann einen flüchtigen Arbeitsspeicher wie verschiedene Formen eines Direktzugriffsspeichers (random-access memory - RAM) oder eine andere dynamische Speichervorrichtung beinhalten. Der Arbeitsspeicher 506 kann auch zum Speichern temporärer Variablen oder anderer Zwischeninformationen während der Ausführung von Befehlen, die vom Prozessor 504 ausgeführt werden sollen, verwendet werden. Wenn solche Befehle auf einem nicht vorübergehenden computerlesbaren Speichermedium gespeichert sind, auf das der Prozessor 504 zugreifen kann, können sie das Computersystem 500 in eine Maschine mit besonderer Zweckbestimmung umwandeln, die benutzerangepasst ist, um die in den Befehlen angegebenen Operationen auszuführen.
  • Das Computersystem 500 beinhaltet ferner einen nichtflüchtigen Arbeitsspeicher wie zum Beispiel einen Nur-Lese-Speicher (read only memory - ROM) 508 oder eine andere statische Speichervorrichtung, die mit dem I/O-Teilsystem 502 zum Speichern von Informationen und Befehlen für den Prozessor 504 gekoppelt ist. Der ROM 508 kann verschiedene Formen eines programmierbaren ROM (programmable ROM - PROM) beinhalten, wie beispielsweise ein löschbares PROM (erasable PROM - EPROM) oder ein elektrisch löschbares PROM (electrically erasable PROM - EEPROM). Eine Einheit des dauerhaften Speichers 510 kann verschiedene Formen von nichtflüchtigem RAM (non-volatile RAM - NVRAM) wie FLASH-Speicher oder Festkörperspeicher, Magnetplatte oder optische Platte wie etwa CD-ROM oder DVD-ROM beinhalten und kann mit dem I/O-Teilsystem 502 zum Speichern von Informationen und Befehlen gekoppelt sein. Der Speicher 510 ist ein Beispiel eines nicht vorübergehenden computerlesbaren Mediums, das zum Speichern von Befehlen und Daten verwendet werden kann, die, wenn sie vom Prozessor 504 ausgeführt werden, bewirken, dass computerimplementierte Verfahren ausgeführt werden, um die hier enthaltenen Techniken auszuführen.
  • Die Befehle im Arbeitsspeicher 506, ROM 508 oder Speicher 510 können einen oder mehrere Sätze von Befehlen umfassen, die als Module, Verfahren, Objekte, Funktionen, Routinen oder Aufrufe organisiert sind. Die Befehle können als ein oder mehrere Computerprogramme, Betriebssystemdienste oder Anwendungsprogramme einschließlich mobiler Apps organisiert sein. Die Befehle können ein Betriebssystem und/oder eine Systemsoftware; eine oder mehrere Bibliotheken zur Unterstützung von Multimedia, Programmierung oder anderen Funktionen; Datenprotokollbefehle oder -stapel zum Implementieren von TCP/ IP, HTTP oder anderen Kommunikationsprotokollen; Befehle zur Dateiformatverarbeitung zum Parsen oder Rendern von Dateien, die mit HTML, XML, JPEG, MPEG oder PNG codiert wurden; Benutzeroberflächenbefehle zum Rendern oder Interpretieren von Befehlen für eine grafische Benutzeroberfläche (graphical user interface - GUI), eine Befehlszeilenschnittstelle oder eine Textbenutzeroberfläche; Anwendungssoftware wie etwa eine Office-Suite, Anwendungen für den Internetzugang, Design- und Fertigungsanwendungen, Grafikanwendungen, Audioanwendungen, Softwaretechnikanwendungen, Lernanwendungen, Spiele oder verschiedene Anwendungen umfassen. Die Befehle können einen Webserver, einen Webanwendungsserver oder einen Webclient implementieren. Die Befehle können als Präsentationsschicht, Anwendungsschicht und Datenspeicherschicht organisiert sein, beispielsweise als relationales Datenbanksystem unter Verwendung einer strukturierten Abfragesprache (structured query language - SQL) oder ohne SQL, eines Objektspeichers, einer Graphen-Datenbank, eines Flat-File-Systems oder eines anderen Datenspeichers.
  • Das Computersystem 500 kann über das I/O-Teilsystem 502 mit mindestens einer Ausgabevorrichtung 512 verbunden sein. In einer Ausführungsform ist die Ausgabevorrichtung 512 eine digitale Computeranzeige. Beispiele für eine Anzeige, die in verschiedenen Ausführungsformen verwendet werden kann, beinhalten eine Touchscreen-Anzeige oder eine LED(light emitting diode)-Anzeige oder eine Flüssigkristall(liquid crystal display - LCD)-Anzeige oder eine E-Paper-Anzeige. Das Computersystem 500 kann alternativ oder zusätzlich zu einer Anzeigevorrichtung andere Typen von Ausgabevorrichtungen 512 beinhalten. Beispiele für andere Ausgabevorrichtungen 512 beinhalten Drucker, Ticketdrucker, Plotter, Projektoren, Soundkarten oder Grafikkarten, Lautsprecher, Summer oder piezoelektrische Vorrichtungen oder andere akustische Vorrichtungen, Lampen oder LED- oder LCD-Indikatoren, haptische Vorrichtungen, Aktuatoren oder Servos.
  • Mindestens eine Eingabevorrichtung 514 ist mit dem I/O-Teilsystem 502 gekoppelt, um Signale, Daten, Befehlsauswahlen oder Gesten an den Prozessor 504 zu übertragen. Beispiele für Eingabevorrichtungen 514 beinhalten Touchscreens, Mikrofone, Standbild- und Videodigitalkameras, alphanumerische und andere Tasten, Tastenblocks, Tastaturen, Grafiktabletts, Bildscanner, Joysticks, Uhren, Schalter, Tasten, Wählscheiben, Schieber und/oder verschiedene Arten von Sensoren wie Kraftsensoren, Bewegungssensoren, Wärmesensoren, Beschleunigungsmesser, Gyroskope und Trägheitsmesseinheits(inertial measurement unit - IMU)-Sensoren und/oder verschiedene Arten von Sender-Empfängern wie etwa Funk wie etwa Mobilfunk oder Wi-Fi, Funkfrequenz(radio frequency - RF)- oder Infrarot(IR)-Sender-Empfänger und GPS(Global Positioning System)-Sender-Empfänger.
  • Ein anderer Typ einer Eingabevorrichtung ist eine Steuervorrichtung 516, die alternativ oder zusätzlich zu den Eingabefunktionen eine Cursorsteuerung oder andere automatisierte Steuerfunktionen wie die Navigation in einer grafischen Oberfläche auf einem Anzeigebildschirm ausführen kann. Die Steuervorrichtung 516 kann ein Touchpad, eine Maus, ein Trackball oder Cursorrichtungstasten zum Übermitteln von Richtungsinformationen und Befehlsauswahlen an den Prozessor 504 und zum Steuern der Cursorbewegung auf der Anzeige 512 sein. Die Eingabevorrichtung kann mindestens zwei Freiheitsgrade in zwei Achsen aufweisen, eine erste Achse (z. B. x) und eine zweite Achse (z. B. y), die es der Vorrichtung ermöglichen, Positionen in einer Ebene anzugeben. Eine andere Art von Eingabevorrichtung ist eine drahtgebundene, drahtlose oder optische Steuervorrichtung, wie beispielsweise ein Joystick, ein Handlesegerät, eine Konsole, ein Lenkrad, ein Pedal, ein Schaltmechanismus oder ein anderer Typ einer Steuervorrichtung. Eine Eingabevorrichtung 514 kann eine Kombination mehrerer verschiedener Eingabevorrichtungen beinhalten, wie beispielsweise eine Videokamera und einen Tiefensensor.
  • In einer anderen Ausführungsform kann das Computersystem 500 eine Internet-der-Dinge (internet of things - IoT)-Vorrichtung umfassen, in der eine oder mehrere von der Ausgabevorrichtung 512, der Eingabevorrichtung 514 und der Steuervorrichtung 516 entfallen. In einer solchen Ausführungsform kann die Eingabevorrichtung 514 auch eine oder mehrere Kameras, Bewegungsdetektoren, Thermometer, Mikrofone, seismische Detektoren, andere Sensoren oder Detektoren, Messvorrichtungen oder Codierer umfassen, und die Ausgabevorrichtung 512 kann eine Anzeige mit besonderer Zweckbestimmung wie etwa eine einzeilige LED- oder LCD-Anzeige, einen oder mehrere Indikatoren, ein Anzeigefeld, ein Messgerät, ein Ventil, ein Solenoid, einen Aktuator oder ein Servo umfassen.
  • Wenn das Computersystem 500 eine mobile Computervorrichtung ist, kann die Eingabevorrichtung 514 einen GPS(Global Positioning System)-Empfänger umfassen, der mit einem GPS-Modul gekoppelt ist, das in der Lage ist, zu einer Vielzahl von GPS-Satelliten zu triangulieren, um Geostandort- oder Positionsdaten wie etwa als Breiten- und Längengrade für einen geophysikalischen Standort des Computersystems 500 zu bestimmen und zu erzeugen. Die Ausgabevorrichtung 512 kann Hardware, Software, Firmware und Schnittstellen zum Erzeugen von Positionsberichtspaketen, Benachrichtigungen, Puls- oder Herzschlagsignalen oder anderen wiederkehrenden Datenübertragungen beinhalten, die eine Position des Computersystems 500 allein oder in Kombination mit anderen anwendungsspezifischen Daten, die auf den Host 524 oder den Server 530 gerichtet sind, spezifizieren.
  • Das Computersystem 500 kann die hier beschriebenen Techniken unter Verwendung einer benutzerdefinierten fest verdrahteten Logik, mindestens eines ASIC oder FPGA, einer Firmware und/oder Programmbefehlen oder -logik implementieren, die, wenn sie in Kombination mit dem Computersystem geladen und verwendet oder ausgeführt werden, das Computersystem veranlassen oder programmieren, als Maschine mit besonderer Zweckbestimmung zu arbeiten. Gemäß einer Ausführungsform werden die hier enthaltenen Techniken von dem Computersystem 500 als Reaktion darauf ausgeführt, dass der Prozessor 504 mindestens eine Sequenz von mindestens einem im Hauptspeicher 506 enthaltenen Befehl ausführt. Solche Befehle können von einem anderen Speichermedium, wie dem Speicher 510, in den Hauptspeicher 506 eingelesen werden. Die Ausführung der im Hauptspeicher 506 enthaltenen Befehlssequenzen bewirkt, dass der Prozessor 504 die hier beschriebenen Prozessschritte ausführt. In alternativen Ausführungsformen können fest verdrahtete Schaltungen anstelle von oder in Kombination mit Softwarebefehlen verwendet werden.
  • Der Begriff „Speichermedium“, wie er hier verwendet wird, bezieht sich auf alle nicht vorübergehenden Medien, die Daten und/oder Befehle speichern, die bewirken, dass eine Maschine auf eine bestimmte Weise arbeitet. Solche Speichermedien können nichtflüchtige Medien und/oder flüchtige Medien umfassen. Nichtflüchtige Medien beinhalten beispielsweise optische oder magnetische Platten, wie beispielsweise Speicher 510. Flüchtige Medien beinhalten einen dynamischen Arbeitsspeicher, wie beispielsweise den Arbeitsspeicher 506. Übliche Formen von Speichermedien beinhalten beispielsweise eine Festplatte, ein Solid-State-Laufwerk, ein Flash-Laufwerk, ein magnetisches Datenspeichermedium, ein beliebiges optisches oder physikalisches Datenspeichermedium, einen Speicherchip oder dergleichen. Speichermedien unterscheiden sich von Übertragungsmedien, können jedoch in Verbindung mit Übertragungsmedien verwendet werden. Übertragungsmedien sind an der Übertragung von Informationen zwischen Speichermedien beteiligt. Zum Beispiel beinhalten Übertragungsmedien Koaxialkabel, Kupferdraht und Glasfaser, einschließlich der Drähte, die einen Bus des I/O-Teilsystems 502 umfassen. Übertragungsmedien können auch die Form von akustischen oder Lichtwellen annehmen, wie sie beispielsweise während der Funkwellen- und Infrarot-Datenkommunikation erzeugt werden.
  • Verschiedene Formen von Medien können daran beteiligt sein, mindestens eine Sequenz von mindestens einem Befehl zur Ausführung an den Prozessor 504 zu übertragen. Beispielsweise können die Befehle anfänglich auf einer Magnetplatte oder einem Solid-State-Laufwerk eines entfernten Computers übertragen werden. Der entfernte Computer kann die Befehle in seinen dynamischen Arbeitsspeicher laden und die Befehle über eine Kommunikationsverbindung wie etwa ein Glasfaser- oder Koaxialkabel oder eine Telefonleitung unter Verwendung eines Modems senden. Ein Modem oder Router, der lokal für das Computersystem 500 ist, kann die Daten auf der Kommunikationsverbindung empfangen und die Daten in ein Format konvertieren, das vom Computersystem 500 gelesen werden kann. Beispielsweise kann ein Empfänger wie eine Funkfrequenzantenne oder ein Infrarotdetektor die in einem drahtlosen oder optischen Signal übertragenen Daten empfangen, und eine geeignete Schaltung kann die Daten dem I/O-Teilsystem 502 bereitstellen, wie etwa die Daten auf einem Bus platzieren. Das I/O-Teilsystem 502 überträgt die Daten in den Arbeitsspeicher 506, von dem der Prozessor 504 die Befehle abruft und ausführt. Die vom Arbeitsspeicher 506 empfangenen Befehle können optional entweder vor oder nach der Ausführung durch den Prozessor 504 im Speicher 510 gespeichert werden.
  • Das Computersystem 500 beinhaltet auch eine Kommunikationsschnittstelle 518, die mit dem Bus 502 gekoppelt ist. Die Kommunikationsschnittstelle 518 stellt eine bidirektionale Datenkommunikationskopplung an die Netzwerkverbindung(en) 520 bereit, die direkt oder indirekt mit mindestens einem Kommunikationsnetzwerk verbunden sind, wie etwa einem Netzwerk 522 oder einer öffentlichen oder privaten Cloud im Internet. Beispielsweise kann die Kommunikationsschnittstelle 518 eine Ethernet-Netzwerkschnittstelle, eine ISDN(Integrated Services Digital Network)-Karte, ein Kabelmodem, ein Satellitenmodem oder ein Modem sein, um eine Datenkommunikationsverbindung zu einem entsprechenden Typ einer Kommunikationsleitung, beispielsweise einem Ethernet-Kabel oder einem Metallkabel einer beliebigen Art oder einer Glasfaserleitung oder einer Telefonleitung bereitzustellen. Das Netzwerk 522 repräsentiert im Wesentlichen ein lokales Netzwerk (local area network - LAN), ein Weitverkehrsnetzwerk (wide-area network - WAN), ein Campus-Netzwerk, ein Internetwork oder eine beliebige Kombination davon. Die Kommunikationsschnittstelle 518 kann eine LAN-Karte zum Bereitstellen einer Datenkommunikationsverbindung zu einem kompatiblen LAN oder eine zellulare Funktelefonschnittstelle, die zum Senden oder Empfangen von zellularen Daten gemäß drahtlosen Funktelefon-Netzwerkstandards verkabelt ist, oder eine Satellitenfunkschnittstelle, die zum Senden oder Empfangen digitaler Daten gemäß den Standards für drahtlose Satellitennetzwerke verdrahtet ist, umfassen. In einer solchen Implementierung sendet und empfängt die Kommunikationsschnittstelle 518 elektrische, elektromagnetische oder optische Signale über Signalpfade, die digitale Datenströme tragen, die verschiedene Arten von Informationen darstellen.
  • Die Netzwerkverbindung 520 stellt typischerweise eine elektrische, elektromagnetische oder optische Datenkommunikation direkt oder über mindestens ein Netzwerk zu anderen Datenvorrichtungen bereit, wobei beispielsweise Satelliten-, Mobilfunk-, Wi-Fi- oder BLUETOOTH-Technologie verwendet wird. Beispielsweise kann die Netzwerkverbindung 520 eine Verbindung über ein Netzwerk 522 zu einem Host-Computer 524 bereitstellen.
  • Darüber hinaus kann die Netzwerkverbindung 520 eine Verbindung über das Netzwerk 522 oder zu anderen Computervorrichtungen über Internetworking-Vorrichtungen und/oder Computer bereitstellen, die von einem Internetdienstanbieter (Internet Service Provider - ISP) 526 betrieben werden. Der ISP 526 stellt Datenkommunikationsdienste über ein weltweites Paketdaten-Kommunikationsnetz bereit, das als Internet 528 dargestellt wird. Ein Servercomputer 530 kann mit dem Internet 528 gekoppelt sein. Der Server 530 repräsentiert im Wesentlichen jeden Computer, jedes Datenzentrum, jede virtuelle Maschine oder jede virtuelle Recheninstanz mit oder ohne Hypervisor oder jeden Computer, der ein containerisiertes Programmsystem wie etwa DOCKER oder KUBERNETES ausführt. Der Server 530 kann einen elektronischen digitalen Dienst darstellen, der unter Verwendung von mehr als einem Computer oder einer Instanz implementiert ist und auf den durch Übertragen von Webdienstanforderungen, URL(Uniform Resource Locator)-Zeichenfolgen mit Parametern in HTTP-Nutzlasten, API-Aufrufe, App-Dienstaufrufe oder andere Serviceanrufe zugegriffen und der von diesen verwendet wird. Das Computersystem 500 und der Server 530 können Elemente eines verteilten Computersystems bilden, das andere Computer, einen Verarbeitungscluster, eine Serverfarm oder eine andere Organisation von Computern beinhaltet, die zusammenarbeiten, um Aufgaben auszuführen oder Anwendungen oder Dienste auszuführen. Der Server 530 kann einen oder mehrere Befehlssätze umfassen, die als Module, Verfahren, Objekte, Funktionen, Routinen oder Aufrufe organisiert sind. Die Befehle können als ein oder mehrere Computerprogramme, Betriebssystemdienste oder Anwendungsprogramme einschließlich mobiler Apps organisiert sein. Die Befehle können ein Betriebssystem und/oder eine Systemsoftware; eine oder mehrere Bibliotheken zur Unterstützung von Multimedia, Programmierung oder anderen Funktionen; Datenprotokollbefehle oder -stapel zum Implementieren von TCP/IP-, HTTP- oder anderen Kommunikationsprotokollen; Befehle zur Dateiformatverarbeitung zum Parsen oder Rendern von Dateien, die mit HTML, XML, JPEG, MPEG oder PNG codiert wurden; Benutzeroberflächenbefehle zum Rendern oder Interpretieren von Befehlen für eine grafische Benutzeroberfläche (graphical user interface - GUI), eine Befehlszeilenschnittstelle oder eine Textbenutzeroberfläche; Anwendungssoftware wie eine Office-Suite, Anwendungen für den Internetzugang, Design- und Fertigungsanwendungen, Grafikanwendungen, Audioanwendungen, Softwaretechnikanwendungen, Lernanwendungen, Spiele oder verschiedene Anwendungen umfassen. Der Server 530 kann einen Webanwendungsserver umfassen, der eine Präsentationsschicht, eine Anwendungsschicht und eine Datenspeicherschicht hostet, wie etwa ein relationales Datenbanksystem, das eine strukturierte Abfragesprache (structured query language - SQL) oder kein SQL, einen Objektspeicher, eine Graphen-Datenbank, ein Flat-File-System oder andere Datenspeicherung verwendet.
  • Das Computersystem 500 kann Nachrichten senden und Daten und Befehle, einschließlich Programmcode, über das/die Netzwerk(e), die Netzwerkverbindung 520 und die Kommunikationsschnittstelle 518 empfangen. In dem Internet-Beispiel könnte ein Server 530 einen angeforderten Code für ein Anwendungsprogramm über das Internet 528, den ISP 526, das lokale Netzwerk 522 und die Kommunikationsschnittstelle 518 übertragen. Der empfangene Code kann vom Prozessor 504 ausgeführt werden, wenn er empfangen wurde, und/oder im Speicher 510 oder einem anderen nichtflüchtigen Speicher zur späteren Ausführung gespeichert werden.
  • Die Ausführung von Befehlen, wie in diesem Abschnitt beschrieben, kann einen Prozess in Form einer Instanz eines Computerprogramms implementieren, das ausgeführt wird und aus Programmcode und seiner aktuellen Aktivität besteht. Abhängig vom Betriebssystem (operating system - OS) kann ein Prozess aus mehreren Ausführungsthreads bestehen, die gleichzeitig Befehle ausführen. In diesem Zusammenhang ist ein Computerprogramm eine passive Sammlung von Befehlen, während ein Prozess die tatsächliche Ausführung dieser Befehle sein kann. Dem gleichen Programm können mehrere Prozesse zugeordnet sein; beispielsweise bedeutet das Öffnen mehrerer Instanzen desselben Programms häufig, dass mehr als ein Prozess ausgeführt wird. Multitasking kann implementiert werden, um es mehreren Prozessen zu ermöglichen, den Prozessor 504 gemeinsam zu nutzen. Während jeder Prozessor 504 oder Kern des Prozessors jeweils gleichzeitig eine einzelne Aufgabe ausführt, kann das Computersystem 500 so programmiert sein, dass es Multitasking implementiert, damit jeder Prozessor zwischen Aufgaben wechseln kann, die ausgeführt werden, ohne auf den Abschluss jeder Aufgabe warten zu müssen. In einer Ausführungsform können Wechsel ausgeführt werden, wenn Aufgaben Eingabe-/Ausgabeoperationen ausführen, wenn eine Aufgabe anzeigt, dass sie gewechselt werden kann, oder bei Hardware-Unterbrechungen. Time-Sharing kann implementiert werden, um eine schnelle Reaktion für interaktive Benutzeranwendungen zu ermöglichen, indem schnell Kontextwechsel durchgeführt werden, um den Anschein einer gleichzeitigen Ausführung mehrerer Prozesse zur gleichen Zeit zu erwecken. In einer Ausführungsform kann ein Betriebssystem aus Sicherheits- und Zuverlässigkeitsgründen die direkte Kommunikation zwischen unabhängigen Prozessen verhindern und eine streng vermittelte und kontrollierte Kommunikationsfunktionalität zwischen Prozessen bereitstellen.
  • In der vorstehenden Beschreibung wurden Ausführungsformen der Erfindung unter Bezugnahme auf zahlreiche spezifische Details beschrieben, die von Implementierung zu Implementierung variieren können. Die Beschreibung und die Zeichnungen sind dementsprechend eher veranschaulichend als einschränkend anzusehen. Der einzige und ausschließliche Indikator für den Umfang der Erfindung und für das, was von den Anmeldern als Umfang der Erfindung beabsichtigt ist, ist der wörtliche und äquivalente Umfang des Anspruchssatz, der sich aus dieser Anmeldung ergibt, in der konkreten Form, in der solche Ansprüche entstehen, einschließlich etwaiger späterer Korrekturen.

Claims (18)

  1. Verfahren, das eine Verbesserung der Geschwindigkeit und Effizienz beim Konfigurieren einer digitalen elektronischen integrierten Schaltung (integrated circuit - IC) bereitstellt, die eine partielle Rekonfiguration unterstützt, wobei eine bestimmte IC eine Vielzahl von rekonfigurierbaren Partitionen und eine Vielzahl von Primitiv-Varianten aufweist, die in jeder der rekonfigurierbaren Partitionen konfigurierbar sind, wobei das Verfahren Folgendes umfasst: vor dem Schreiben von Konfigurationsbitströmen in die bestimmte IC Kompilieren und Speichern einer Vielzahl von Primitiv-Bitströmen unter Verwendung eines digitalen Speichers für eine Vielzahl von verschiedenen Primitiv-Funktionen, die in die bestimmte IC geschrieben und auf dieser implementiert werden können; Empfangen von Eingaben zum Spezifizieren der Funktionslogik eines Algorithmus zum Implementieren auf der bestimmten IC unter Verwendung einer rekonfigurierbaren Logik; automatisches Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die der Funktionslogik entsprechen; Erhalten einer Teilmenge der Primitiv-Bitströme aus dem digitalen Speicher, die der Teilmenge der Primitiv-Funktionen entspricht; Verwenden einer oder mehrerer Operationen der partiellen Rekonfiguration, Schreiben der Teilmenge der Primitiv-Bitströme in die bestimmte IC; wobei das Verfahren von einer oder mehreren Computervorrichtungen durchgeführt wird.
  2. Verfahren nach Anspruch 1, wobei die bestimmte IC ein feldprogrammierbares Gate-Array (FPGA) mit M rekonfigurierbaren Partitionen und N Varianten in jeder der rekonfigurierbaren Partitionen umfasst, wobei das Verfahren ferner das Kompilieren und Speichern der Vielzahl von Primitiv-Bitströmen für eine Vielzahl von verschiedenen Primitiv-Funktionen umfasst, die in alle Kombinationen von M und N auf dem FPGA geschrieben und implementiert werden können, was zum Speichern von M * N-Primitiven führt.
  3. Verfahren nach Anspruch 1, ferner Folgendes umfassend: Durchführen des Kompilierens und Speicherns unter Verwendung eines Servers, der kommunikativ mit einem Client-Computersystem gekoppelt ist; Übertragen einer Anforderung vom Client-Computersystem zum Server zum Bereitstellen der Teilmenge der Primitiv-Bitströme, die der Teilmenge der Primitiv-Funktionen entspricht; Übertragen einer Antwort vom Server zum Client-Computer, die die Teilmenge der Primitiv-Bitströme beinhaltet, die der Teilmenge der Primitiv-Funktionen entspricht.
  4. Verfahren nach Anspruch 3, wobei das automatische Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die der Funktionslogik entsprechen, ferner das Bestimmen bestimmter Partitionen und Varianten für jede der Primitiv-Funktionen und das Speichern von Metadaten, die die bestimmten Partitionen und Varianten identifizieren, umfasst und wobei das Übertragen der Anforderung ferner das Übertragen der Metadaten mit der Anforderung umfasst.
  5. Verfahren nach Anspruch 1, ausgelegt zur Verwendung mit einem FPGA, umfassend eine Vielzahl von Zeilen mit jeweils einer Vielzahl von sequentiell verbundenen Bereichen partieller Rekonfiguration im DSP-Block, eine Vielzahl von Zwischenverbindungen, um beliebige Verbindungen zwischen Zeilen zu ermöglichen, wobei jeder der Bereiche partieller Rekonfiguration im DSP-Block als eine von N Varianten, die unter Verwendung eines anderen Bitstrom-Primitivs aus den Primitiv-Bitströmen konfigurierbar ist, wobei jede der Varianten einen oder mehrere Eingaben und einen oder mehrere Ausgaben aufweist und mit einem Konfigurations-AXI-Bus verbunden ist.
  6. Verfahren nach Anspruch 5, ausgelegt zur Verwendung mit dem FPGA, bei dem jede der Varianten Logik für einen anderen Zweck umfasst und als Ausgabemultiplex zur Auswahl hat, welche Signale an die zwei oder mehr Ausgaben weitergeleitet werden.
  7. Verfahren nach Anspruch 1, ausgelegt zur Verwendung mit einem FPGA, umfassend eine Vielzahl von Zeilen mit jeweils einer Vielzahl von sequentiell verbundenen Bereichen partieller Rekonfiguration im DSP-Block, eine Vielzahl von Zwischenverbindungen, um beliebige Verbindungen zwischen Zeilen zu ermöglichen, wobei jeder der Bereiche partieller Rekonfiguration im DSP-Block als eine von N Varianten, die ein anderes Bitstrom-Primitiv aus den Primitiv-Bitströmen verwenden, konfigurierbar ist, wobei jede der Varianten zwei oder mehr Eingaben und zwei oder mehr Ausgaben aufweist und mit einem Konfigurations-AXI-Bus verbunden ist, wobei ein erster Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block größere PR-Bereiche sind, die als einkanalige Versionen von Instrumenten konfiguriert sein können; wobei ein zweiter Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block ausgelegt ist, um Funktionen auf niedriger Ebene zu implementieren.
  8. Verfahren nach Anspruch 1, ausgelegt zur Verwendung mit einem FPGA, umfassend eine Vielzahl von Zeilen mit jeweils einer Vielzahl von sequentiell verbundenen Bereichen partieller Rekonfiguration im DSP-Block, eine Vielzahl von Zwischenverbindungen, um beliebige Verbindungen zwischen Zeilen zu ermöglichen, wobei jeder der Bereiche partieller Rekonfiguration im DSP-Block als eine von N Varianten unter Verwendung eines anderen Bitstrom-Primitivs aus den Primitiv-Bitströmen konfigurierbar ist, wobei jede der Varianten zwei oder mehr Eingaben und zwei oder mehr Ausgaben aufweist und mit einem Konfigurations-AXI-Bus verbunden ist; wobei ein erster Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block größere PR-Bereiche sind, die für Signalerzeugungs- oder Steuerungsinstrumente konfiguriert sind; wobei ein zweiter Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block für Mess- oder Überwachungsinstrumente konfiguriert ist.
  9. Verfahren nach Anspruch 1, ferner umfassend das Empfangen von Eingaben in einer grafischen Benutzeroberfläche zum Auswählen und Verbinden von grafischen Blöcken, die die Funktionslogik des auf der bestimmten IC zu implementierenden Algorithmus darstellen, wobei sich die grafischen Blöcke auf rekonfigurierbare Logik beziehen.
  10. Ein oder mehrere nicht vorübergehende computerlesbare Speichermedien, die Befehlssequenzen speichern, die eine Verbesserung der Geschwindigkeit und Effizienz beim Konfigurieren einer digitalen elektronischen integrierten Schaltung (integrated circuit - IC) bereitstellen, die eine partielle Rekonfiguration unterstützt, wobei eine bestimmte IC eine Vielzahl von rekonfigurierbaren Partitionen und eine Vielzahl von Primitiv-Varianten aufweist, die in jeder der rekonfigurierbaren Partitionen konfigurierbar sind und bei Ausführung unter Verwendung eines oder mehreren Prozessoren bewirken, dass der eine oder die mehreren Prozessoren Folgendes durchführen: vor dem Schreiben von Konfigurationsbitströmen in die bestimmte IC Kompilieren und Speichern einer Vielzahl von Primitiv-Bitströmen unter Verwendung eines digitalen Speichers für eine Vielzahl von verschiedenen Primitiv-Funktionen, die in die bestimmte IC geschrieben und auf dieser implementiert werden können; Empfangen von Eingaben zum Spezifizieren der Funktionslogik eines Algorithmus zum Implementieren auf der bestimmten IC unter Verwendung einer rekonfigurierbaren Logik; automatisches Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die der Funktionslogik entsprechen; Erhalten einer Teilmenge der Primitiv-Bitströme aus dem digitalen Speicher, die der Teilmenge der Primitiv-Funktionen entspricht; Verwenden einer oder mehrerer Operationen der partiellen Rekonfiguration, Schreiben der Teilmenge der Primitiv-Bitströme in die bestimmte IC; wobei das Verfahren von einer oder mehreren Computervorrichtungen durchgeführt wird.
  11. Computerlesbare Medien nach Anspruch 10, wobei die bestimmte IC ein feldprogrammierbares Gate-Array (FPGA) mit M rekonfigurierbaren Partitionen und N Varianten in jeder der rekonfigurierbaren Partitionen umfasst, ferner umfassend Befehlssequenzen, die bei Ausführung das Kompilieren und Speichern der Vielzahl von Primitiv-Bitströmen für eine Vielzahl von verschiedenen Primitiv-Funktionen bewirken, die in alle Kombinationen von M und N auf dem FPGA geschrieben und implementiert werden können, was zum Speichern von M * N-Primitiven führt.
  12. Computerlesbare Medien nach Anspruch 10, ferner umfassend Befehlssequenzen, die bei Ausführung Folgendes bewirken: Durchführen des Kompilierens und Speicherns unter Verwendung eines Servers, der kommunikativ mit einem Client-Computersystem gekoppelt ist; Übertragen einer Anforderung vom Client-Computersystem zum Server zum Bereitstellen der Teilmenge der Primitiv-Bitströme, die der Teilmenge der Primitiv-Funktionen entspricht; Übertragen einer Antwort vom Server zum Client-Computer, die die Teilmenge der Primitiv-Bitströme beinhaltet, die der Teilmenge der Primitiv-Funktionen entspricht.
  13. Computerlesbare Medien nach Anspruch 12, wobei das automatische Bestimmen einer Teilmenge der Primitiv-Funktionen, die bestimmte Primitiv-Funktionen umfassen, die der Funktionslogik entsprechen, ferner Befehlssequenzen, die bei Ausführung das Bestimmen bestimmter Partitionen und Varianten für jede der Primitiv-Funktionen bewirken, und das Speichern von Metadaten, die die bestimmten Partitionen und Varianten identifizieren, umfasst, und wobei das Übertragen der Anforderung ferner das Übertragen der Metadaten mit der Anforderung umfasst.
  14. Computerlesbare Medien nach Anspruch 10, ausgelegt zur Verwendung mit einem FPGA, umfassend eine Vielzahl von Zeilen mit jeweils einer Vielzahl von identischen sequentiell verbundenen Bereichen partieller Rekonfiguration im DSP-Block, eine Vielzahl von Zwischenverbindungen, um beliebige Verbindungen zwischen Zeilen zu ermöglichen, wobei jeder der Bereiche partieller Rekonfiguration im DSP-Block als eine von N Varianten unter Verwendung eines anderen Bitstrom-Primitivs aus den Primitiv-Bitströmen konfigurierbar ist, wobei jede der Varianten einen oder mehrere Eingaben und einen oder mehrere Ausgaben aufweist und mit einem Konfigurations-AXI-Bus verbunden ist.
  15. Computerlesbare Medien nach Anspruch 14, ausgelegt zur Verwendung mit dem FPGA, bei dem jede der Varianten Logik für einen anderen Zweck umfasst und als Ausgabemultiplex zur Auswahl hat, welche Signale an die zwei oder mehr Ausgaben weitergeleitet werden.
  16. Computerlesbare Medien nach Anspruch 10, ausgelegt zur Verwendung mit einem FPGA, umfassend eine Vielzahl von Zeilen mit jeweils eine Vielzahl von sequentiell verbundenen Bereichen partieller Rekonfiguration im DSP-Block, eine Vielzahl von Zwischenverbindungen, um beliebige Verbindungen zwischen Zeilen zu ermöglichen, wobei jeder der Bereiche partieller Rekonfiguration im DSP-Block als eine von N Varianten unter Verwendung eines anderen Bitstrom-Primitivs aus den Primitiv-Bitströmen konfigurierbar ist, wobei jede der Varianten zwei oder mehr Eingaben und zwei oder mehr Ausgaben aufweist und mit einem Konfigurations-AXI-Bus verbunden ist; wobei ein erster Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block größere PR-Bereiche sind, die als einkanalige Versionen von Instrumenten konfiguriert werden können; wobei ein zweiter Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block ausgelegt ist, um Funktionen niedriger Ebene zu implementieren.
  17. Computerlesbare Medien nach Anspruch 10, ausgelegt zur Verwendung mit einem FPGA, umfassend eine Vielzahl von Zeilen mit jeweils einer Vielzahl von sequentiell verbundenen Bereichen partieller Rekonfiguration im DSP-Block, eine Vielzahl von Zwischenverbindungen, um beliebige Verbindungen zwischen Zeilen zu ermöglichen, wobei jeder der Bereiche partieller Rekonfiguration im DSP-Block als eine von N Varianten unter Verwendung eines anderen Bitstrom-Primitivs aus den Primitiv-Bitströmen konfigurierbar ist, wobei jede der Varianten zwei oder mehr Eingaben und zwei oder mehr Ausgaben aufweist und mit einem Konfigurations-AXI-Bus verbunden ist; wobei ein erster Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block größere PR-Bereiche sind, die für Signalerzeugungs- oder Steuerungsinstrumente konfiguriert sind; wobei ein zweiter Satz von einem oder mehreren der Bereiche partieller Rekonfiguration im DSP-Block für Mess- oder Überwachungsinstrumente konfiguriert ist.
  18. Computerlesbare Medien nach Anspruch 10, ferner umfassend Befehlssequenzen, die bei Ausführung bewirken, dass Eingaben in einer grafischen Benutzeroberfläche empfangen werden, um grafische Blöcke auszuwählen und zu verbinden, die die Funktionslogik eines Algorithmus darstellen, der auf der bestimmten IC implementiert werden soll, wobei sich die grafischen Blöcke auf rekonfigurierbare Logik beziehen.
DE112019004301.3T 2018-08-27 2019-08-20 Verbesserter prozess der programmierung von feldprogrammierbaren gate-arrays unter verwendung einer partiellen rekonfiguration Pending DE112019004301T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/113,490 US10642630B1 (en) 2018-08-27 2018-08-27 Process of programming field programmable gate arrays using partial reconfiguration
US16/113,490 2018-08-27
PCT/US2019/047251 WO2020046645A1 (en) 2018-08-27 2019-08-20 Improved process of programming field programmable gate arrays using partial reconfiguration

Publications (1)

Publication Number Publication Date
DE112019004301T5 true DE112019004301T5 (de) 2021-06-17

Family

ID=69643748

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019004301.3T Pending DE112019004301T5 (de) 2018-08-27 2019-08-20 Verbesserter prozess der programmierung von feldprogrammierbaren gate-arrays unter verwendung einer partiellen rekonfiguration

Country Status (12)

Country Link
US (2) US10642630B1 (de)
EP (1) EP3844662A4 (de)
JP (2) JP7411663B2 (de)
KR (2) KR102521275B1 (de)
CN (1) CN112997145A (de)
AU (1) AU2019327360B2 (de)
CA (1) CA3114313C (de)
CH (1) CH716706B1 (de)
DE (1) DE112019004301T5 (de)
GB (2) GB2590859B (de)
SG (1) SG11202101816YA (de)
WO (1) WO2020046645A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3639530B1 (de) * 2017-06-15 2022-03-02 Telefonaktiebolaget LM Ericsson (PUBL) Hardware-plattform auf basis von fpga-teilrekonfiguration für drahtlosekommunikationsvorrichtung
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US11907828B2 (en) * 2019-09-03 2024-02-20 International Business Machines Corporation Deep neural network on field-programmable gate array
CN112199320B (zh) * 2020-09-28 2023-06-02 西南电子技术研究所(中国电子科技集团公司第十研究所) 多通道可重构信号处理装置
US20220131915A1 (en) * 2020-10-27 2022-04-28 Nokia Solutions And Networks Oy Management and implementation of applications in cloud-based fpgas
WO2022131397A1 (ko) * 2020-12-16 2022-06-23 주식회사 모빌린트 Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법
CN112560370A (zh) * 2020-12-21 2021-03-26 上海逸集晟网络科技有限公司 芯片设计代码的生成方法、终端以及存储介质
CN113203935A (zh) * 2021-03-11 2021-08-03 江西创成微电子有限公司 芯片测试方法、系统及可读存储介质
KR20230157375A (ko) * 2021-03-15 2023-11-16 리퀴드 인스트루먼트 피티와이. 엘티디. 부분 재구성 fpga에 기초하는 다중 기기 디바이스
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11556494B1 (en) * 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
CN116737618B (zh) * 2023-08-14 2023-11-14 浪潮电子信息产业股份有限公司 Fpga架构、器件、数据处理方法、系统及存储介质
CN117077599B (zh) * 2023-09-18 2024-04-19 苏州异格技术有限公司 一种现场可编程逻辑门阵列视图生成方法及装置
CN117807938A (zh) * 2023-12-29 2024-04-02 苏州异格技术有限公司 一种从逻辑原语参数产生fpga芯片配置比特的方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7698118B2 (en) 2004-04-15 2010-04-13 Mentor Graphics Corporation Logic design modeling and interconnection
US7679401B1 (en) * 2005-12-01 2010-03-16 Tabula, Inc. User registers implemented with routing circuits in a configurable IC
US7739092B1 (en) 2006-01-31 2010-06-15 Xilinx, Inc. Fast hardware co-simulation reset using partial bitstreams
US7823117B1 (en) 2007-12-21 2010-10-26 Xilinx, Inc. Separating a high-level programming language program into hardware and software components
US8797061B2 (en) 2011-12-21 2014-08-05 Altera Corporation Partial reconfiguration circuitry
US20130212366A1 (en) * 2012-02-09 2013-08-15 Altera Corporation Configuring a programmable device using high-level language
US9134981B2 (en) * 2012-06-22 2015-09-15 Altera Corporation OpenCL compilation
US8997033B1 (en) * 2014-03-05 2015-03-31 Altera Corporation Techniques for generating a single configuration file for multiple partial reconfiguration regions
US9584129B1 (en) * 2014-06-20 2017-02-28 Altera Corporation Integrated circuit applications using partial reconfiguration
US9542244B2 (en) 2015-04-22 2017-01-10 Ryft Systems, Inc. Systems and methods for performing primitive tasks using specialized processors
US9449134B1 (en) * 2015-06-25 2016-09-20 International Business Machines Corporation Dynamically reconfigurable logic circuits using native field-programmable gate array primitives
US9929734B2 (en) 2015-09-08 2018-03-27 Dspace Digital Signal Processing And Control Engineering Gmbh Method for changing the configuration of a programmable logic module
US9824173B1 (en) 2015-09-11 2017-11-21 Xilinx, Inc. Software development-based compilation flow for hardware implementation
US9584130B1 (en) * 2016-01-11 2017-02-28 Altera Corporation Partial reconfiguration control interface for integrated circuits
US10218359B2 (en) 2017-06-29 2019-02-26 Intel Corporation Regional partial reconfiguration of a programmable device
US10761951B2 (en) * 2017-12-28 2020-09-01 Intel Corporation FPGA based functional safety control logic (FFSCL)

Also Published As

Publication number Publication date
KR102521275B1 (ko) 2023-04-12
JP2021536650A (ja) 2021-12-27
KR20210078475A (ko) 2021-06-28
WO2020046645A1 (en) 2020-03-05
JP7411663B2 (ja) 2024-01-11
CA3114313C (en) 2024-02-27
GB2599051A (en) 2022-03-23
CA3114313A1 (en) 2020-03-05
GB2590859A (en) 2021-07-07
GB2599051B (en) 2022-10-26
AU2019327360B2 (en) 2023-07-20
US20210255879A1 (en) 2021-08-19
JP2024038092A (ja) 2024-03-19
US10642630B1 (en) 2020-05-05
AU2019327360A1 (en) 2021-03-18
SG11202101816YA (en) 2021-03-30
CN112997145A (zh) 2021-06-18
US11675604B2 (en) 2023-06-13
GB2590859A8 (en) 2021-07-21
GB2590859B (en) 2022-02-09
GB202103251D0 (en) 2021-04-21
KR20230052994A (ko) 2023-04-20
EP3844662A1 (de) 2021-07-07
GB202117992D0 (en) 2022-01-26
EP3844662A4 (de) 2021-11-03
CH716706B1 (de) 2023-02-15

Similar Documents

Publication Publication Date Title
DE112019004301T5 (de) Verbesserter prozess der programmierung von feldprogrammierbaren gate-arrays unter verwendung einer partiellen rekonfiguration
DE102020131613A1 (de) Verfahren, system und produkt zum implementieren von deterministischem on-boarding und planen virtualisierter arbeitslasten für edge-computing.
US11146456B2 (en) Formal model checking based approaches to optimized realizations of network functions in multi-cloud environments
DE102020208776A1 (de) Dezentralisierte edge-computing-transaktionen mit feingranularer zeitkoordination
DE112016001075T5 (de) Verteiltes speichern und abrufen von datensätzen
DE102022203247A1 (de) Disintermedierte Attestierung in einem MEC-Service-MESH-Framework
CN112449750A (zh) 日志数据收集方法、日志数据收集装置、存储介质和日志数据收集系统
US11138216B2 (en) Automatically invoked unified visualization interface
DE102021117809A1 (de) Einrichtungen, Systeme, Fabrikate und Verfahren zur Datenlebenszyklusverwaltung in einer Edge-Umgebung
DE102022121192A1 (de) Systeme und verfahren für die prüfung vernetzter geräte
CN110991040A (zh) 一种复杂产品协同仿真环境构建方法
DE112020007229T5 (de) Föderiertes mec-framework für kraftfahrzeugdienste
DE102021209043A1 (de) Methods and apparatus to select a location of execution of a computation
US20200201813A1 (en) Scaling hdfs for hive
DE112022002736T5 (de) Übertragen von aufgabendaten zwischen edge-einheiten beim edge computing
DE102021211927A1 (de) Verfahren, systeme, herstellungsartikel und vorrichtungen zum stapeln von funktionen
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
US20230385266A1 (en) Data quality enforcement as a service invoked using descriptive language
Płóciennik et al. Two-level dynamic workflow orchestration in the INDIGO DataCloud for large-scale, climate change data analytics experiments
US10326646B2 (en) Architectural design to enable bidirectional service registration and interaction among clusters
KR101743868B1 (ko) 이미지 프로세싱 방법 및 그 시스템
JP6849121B2 (ja) コンテンツ解析エンジンによるCloud EMR通信のためのアプローチ
DE202017107667U1 (de) Systeme und Computerprogrammprodukte für das Bereitstellen netzwerkübergreifender Ereigniszuordnung
Youn et al. GridTorrent Framework: A High-performance Data Transfer and Data Sharing Framework for Scientific Computing Ali Kaplan, Geoffrey C. Fox, Gregor von Laszewski A Science Collaboration Environment for the Network for Earthquake Engineering Simulation
Furmanski WebSpace-a WebWindows based gateway to the ANL LabSpace. Final report for period September 1, 1995-August 31, 1998

Legal Events

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