DE69910826T2 - Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung - Google Patents

Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung Download PDF

Info

Publication number
DE69910826T2
DE69910826T2 DE69910826T DE69910826T DE69910826T2 DE 69910826 T2 DE69910826 T2 DE 69910826T2 DE 69910826 T DE69910826 T DE 69910826T DE 69910826 T DE69910826 T DE 69910826T DE 69910826 T2 DE69910826 T2 DE 69910826T2
Authority
DE
Germany
Prior art keywords
programmable logic
functions
reconfigurable
application
resources
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.)
Expired - Fee Related
Application number
DE69910826T
Other languages
English (en)
Other versions
DE69910826D1 (de
Inventor
J. Stephen SMITH
J. Timothy SOUTHGATE
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.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Application granted granted Critical
Publication of DE69910826D1 publication Critical patent/DE69910826D1/de
Publication of DE69910826T2 publication Critical patent/DE69910826T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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]

Description

  • Hintergrund der Erfindung
  • Diese Erfindung betrifft die Technologie programmierbarer Logikeinrichtungen und insbesondere Computersysteme, in denen eine programmierbare Logik rekonfiguriert wird, um die Fähigkeit des Rechnersystems zur Behandlung einer gegebenen Anwendung zu optimieren.
  • Das einzige programmierbare Element in einer herkömmlichen Computerarchitektur ist der Mikroprozessor. Der Mikroprozessor wird mit einem festen Befehlssatz hergestellt, der nicht kundenspezifisch für bestimmte Anwendungen angepaßt werden kann. Der Mikroprozessor ist insofern flexibel, als er praktisch jede beliebige softwareimplementierte Funktion einer Anwendung ausführen kann. Die Ausführungsgeschwindigkeit einer gegebenen Funktion ist jedoch im allgemeinen wesentlich kleiner, wenn die Funktion zur Ausführung auf einem Mikroprozessor implementiert ist. Das liegt daran, daß softwareimplementierte Funktionen relativ komplex sein müssen, damit sie an den ursprünglichen Befehlssatz des Mikroprozessors angepaßt sind.
  • Bei einer herkömmlichen Computerarchitektur läuft die Software typischerweise auf einem begrenzten Bereich von Plattformen. Wenn ein Anwendungsingenieur sich dafür entscheidet, eine Anwendung zu schreiben, die auf einem gegebenen Mikroprozessor laufen soll, so ist der Befehlssatz, den der Anwendungsingenieur verwenden kann, auf denjenigen begrenzt, der permanent im Mikroprozessor resident ist. Der Anwendungsingenieur muß deshalb wählen, ob eine Anwendung besser für eine Hardwareplattform oder eine Softwareplattform geeignet ist. Obgleich infolge der Inflexibilität und Ineffizienz von hardwarebasierten Systemen häufig Softwareplattformen bevorzugt sind, führt in vielen Fällen der ursprüngliche Befehlssatz, der auf einem Mikroprozessor resident ist, zu einer inadäquaten Leistung für einen bestimmten Typ von Softwareanwendungen. Zum Beispiel benötigen graphikintensive Anwendungen gewöhnlich Hardware, die speziell für die besonderen graphischen Elemente der Anwendung geeignet ist, wie z. B. 3D-Rendering. Um die Schwierigkeiten zu umgehen, die mit der Programmierung für eine Hardwareplattform zusammenhängen, greifen Ingenieure auf Software zurück, die in vielen Fällen die Anwendungsgeschwindigkeit beträchtlich reduziert.
  • Kürzlich ist das Konzept eines rekonfigurierbaren Computers vorgeschlagen worden, das auf programmierbaren Logikeinrichtungen basiert. Zum Beispiel wird ein solches System in EP-A-0 801 351 (International Computers Limited) gezeigt, die eine integrierte Peripheriesteuerung mit rekonfigurierbaren Schaltungen beschreibt. Ein solches System ist auch in WO 94/ 10627 (Giga Operations Corporation) gezeigt, die verteilte Verarbeitungseinheiten mit reprogrammierbaren Schaltungen beschreibt. "Software Acceleration Using Programmable Hardware Devices" (Edwards M. D. et al., IEE Proceedings: Computers and Digital Techniques, GB, IEE, Band 143, Nr. 1, 1996, Seiten 55–63, XP000554820 ISSN: 1350–2387) und US-Patent Nr. 5 684 980 (Virtual Computer Corporation) zeigen außerdem programmierbare Hardware, die dazu verwendet wird, hardwarebasierte Funktionen zu implementieren. Das Ziel eines rekonfiguriebaren Computers ist es, die Leistung gegenüber einem herkömmlichen Computer zu steigern, indem Parallelität und schnelle Ausführungszeiten durch Verwendung von anpaßbarer Hardware bereitgestellt werden. Erhöhte Flexibilität kann erreicht werden durch Verwendung programmierbarer Logikeinrichtungen, weil die Logik solcher Einrichtungen rekonfiguriert werden kann, indem neue Konfigurationsdaten in die Einrichtungen geladen werden. Dies erlaubt es, dem rekonfigurierbaren Computer eine große Anzahl von Befehlssätzen zu geben, anstelle eines einzigen Befehlssatzes für einen herkömmlichen Computer. Eine größere Anzahl von Funktionen kann durch Verwendung einer fes ten Menge an Hardware bereitgestellt werden, wenn der Computer rekonfigurierbare Logik benutzt.
  • Es ist eine Aufgabe der vorliegenden Erfindung, verbesserte rekonfigurierbare Computer auf der Grundlage von programmierbaren Logikeinrichtigungen zu schaffen, die reprogrammiert werden können, um die Fähigkeit des Computers zur Handhabung einer gegebenen Anwendung zu optimieren.
  • Kurzdarstellung der Erfindung
  • Diese und weitere Ziele der Erfindung werden gelöst in Übereinstimmung mit den Prinzipien der vorliegenden Erfindung, wie beansprucht, durch Bereitstellen eines rekonfigurierbaren Computersystems, das auf programmierbarer Logik basiert.
  • Ein Anwendungsingenieur, der eine Anwendung für den rekonfigurierbaren Computer entwickelt, braucht sich nicht mit den Eizelheiten darüber zu befassen, welche Ressourcen auf diesem Computer verfügbar sind. Es wird eine Hardwareabstraktion verwendet, die auf der Größe einer einzigen programmierbaren Logikeinrichtung oder einer Teilmenge einer programmierbaren Logikeinrichtung beruht. Wenn die Anwendung kompiliert wird, werden die in Hardware implementierten Funktionen der Anwendung in Blöcke aufgeteilt, die Konfigurationsdaten enthalten, die die gleiche Größe wie eine programmierbare Logikeinrichtung oder eine kleinere Größe haben.
  • Das rekonfigurierbare Computersystem ist modular und skallierbar. Wenn weitere Hardwareressourcen hinzugefügt werden, nimmt die Systemleistung zu. Es ist nicht notwendig, die Anwendung zu rekompilieren, um die gesteigerte Leistung auszunutzen.
  • Das rekonfigurierbare Computersystem erlaubt es, daß sowohl Hardware- als auch Softwareimplementationen einer Funktion während der Laufzeit gleichzeiitg existieren. Ein virtuelles Com puterbetriebssystem wird dazu benutzt, je nach den während der Laufzeit verfügbaren Ressourcen auszuwählen, welche Implementierungen laufen sollen. Es können Tools für die Softwareentwicklung bereitgestellt werden, die es einem Anwendungsingenieur erlauben, eine hohe Sprache zu verwenden, um sowohl eine Hardwareimplementierung als auch eine Softwareimplementierung für eine Anwendung zu entwickeln, die auf einem rekonfigurierbaren Computersystem mit programmierbaren Logikressourcen ausgeführt werden kann. Diese Tools können einen Partitionierer einschließen, der eine Spezifikation, die in einer Systementwicklungssprache geschrieben ist, die aus Funktionen und Beschränkungen aufgebaut ist, automatisch in Softwarefunktionen und Hardwarefunktionen partitioniert. Die Softwarefunktionen und Hardwarefunktionen können in Stränge bzw. Konfigurationsdaten für programmierbare Logikressourcen kompiliert werden. Die Stränge (Threads) und Konfigurationsdatenkönnen von dem virtuellen Computerbetriebssystem in Laufzeit benutzt werden, um die Anwendung auszuführen.
  • Das rekonfigurierbare Computersystem bietet einem Anwendungsingenieur Mechanismen zum Bestimmen der Leistungsanforderungen für eine Anwendung. Zum Beispiel kann eine Graphikanwendung einen bestimmten Durchsatz erfordern, gegeben durch die Anzahl von Polygonen, die pro Zeiteinheit auf einem Anzeigeschirm gezeichnet werden können. Wenn es erforderlich ist, daß z. B. eine Million Polygone pro Sekunde gezeichnet werden, kann der Ingenieur in dem virtuellen Computersystem spezifizieren, daß die Funktion, die das Polygon zeichnet, ihre Arbeit in einer Mikrosekunde ausführen muß.
  • Das virtuelle Computerbetriebssystem hat die Fähigkeit, die Leistung von Anwendungen, die in dem System laufen, (sowie ihre individuellen Funktionen) zu überwachen, und hat die Fähigkeit, einer bestimmten Anwendung oder einer einzelnen Funktion mehr Ressourcen neu zuzuweisen um sicherzustellen, daß sie ihre Leistungsanforderungen erfüllt. Das virtuelle Computerbetriebssystem kann auch bestimmen, ob die Softwarever sion oder die Hardwareversion einer speziellen Funktion auszuführen ist, je nach Leistung des Systems und der Zeit, in der die Funktion auszuführen ist. Wenn z. B. die Funktion zum Zeichnen von Polygonen so diponiert ist, daß sie läuft, während gleichzeitig eine andere rechenintensive Anwendung ausgeführt wird, kann die von dem virtuellen Computerbetriebssytem ausgeführte dynamische Profilierung dies in Rechnung stellen, wenn sie die Ressourcenzuweisung bestimmt und bestimmt, ob die Softwareversion der Funktion zum Polygonzeichnen oder die Hardwareversion dieser Funktion verwendet werden soll.
  • Es wird ein virtuelles Computerbetriebssystem geschaffen, das den programmierbaren Logikressourcen die Funktionen der Anwendung zuweist. Das virtuelle Computerbetriebssystem kann eine virtuelle Computer Kernel-Dienstkomponente einschließen. Die virtuelle Computer Kernel-Dienstkomponente kann verschiedene Ressourcenmanager umfassen, einschließlich eines Managers für virtuelle Logikressourcen.
  • Wenn ein bestimmtes rekonfigurierbares Computersystem ein virtuelles Betriebssystem mit virtuellen Logikfähigkeiten hat, kann während der Laufzeit der virtuelle Logikmanager das Austauschen von programmierbaren Logik-Konfigurationsdaten und von Information über den Anwendungszustand zwischen programmierbaren Logikressourcen und einer sekundären Speichereinrichtung steuern. Dies erlaubt es rekonfigurierbaren Computersystemen mit begrenzten Ressourcen, komplexe Anwendungen zu implementieren.
  • Weitere Merkmale der Erfindung, ihre Beschaffenheit und verschiedene Vorteile werden verdeutlicht durch die nachstehende detaillierte Beschreibung der bevorzugten Ausführungsformen anhand der beigefügten Zeichnungen.
  • Kurzbeschreibung der Zeichnungen
  • In 1 ist ein Blockdiagramm eines Beispiels eines rekonfigurierbaren Computersystems gemäß der vorliegenden Erfindung.
  • 2 ist ein Flußdiagramm illustrativer Schritte in dem Boot-Prozeß eines rekonfigurierbaren Computers gemäß der vorliegenden Erfindung.
  • 3 ist ein Blockdiagramm von illustrativen Betriebssystem-Kernel-Diensten für einen rekonfigurierbaren Computer gemäß der vorliegenden Erfindung.
  • 4 ist ein F1ußdiagramm illustrativer Schritte, die von dem virtuellen Computerbetriebssystem benutzt werden, um eine Funktion in einen rekonfigurierbaren Computer gemäß der vorliegenden Erfindung zu laden.
  • 5A ist eine Skizze, die zeigt, wie das virtuelle Computerbetriebssystem in Übereinstimmung mit der vorliegenden Erfindung eine Anwendung nehmen kann, die für Einheits-Hardware ausgelegt ist, und den Funktionen der Anwendung eine oder mehrere programmierbare Logikressourcen in dem Computersystem zuweisen kann.
  • 5B ist eine Skizze, die zeigt, wie eine programmierbare Logikressource mehrfachen Funktionen in Übereinstimmung mit der vorliegenden Erfindung zugewiesen werden kann.
  • 6 ist ein Blockdiagramm eines illustrativen Softwareentwicklungsflusses für einen rekonfigurierbaren Computer gemäß der vorliegenden Erfindung.
  • 7 ist ein Blockdiagramm eines illustrativen vereinfachten Softwareentwicklungsflusses für einen rekonfigurierbaren Computer gemäß der vorliegenden Erfindung.
  • Detaillierte Beschreibung der bevorzugten Ausführungsformen
  • 1 zeigt auf einer hohen Ebene ein Schema eines illustrativen rekonfigurierbaren Computersystems gemäß der vorliegenden Erfindung. Die Hardwareressourcen in dem rekonfigurierbaren Computersystem 5 umfassen eine zentrale Verarbeitungseinheit (CPU) 16, die in einer programierbaren Logikeinrichtung implementiert sein kann, einen eigentlichen Mikroprozessor oder eine Kombination solcher Elemente, einen Speicher 12, Eingabe/Ausgabe-Einrichtungen (I/O) 18 (die auf programmierbaren Logikeinrichtungen oder anderen geeigneten Einrichtungen basieren können) und ein Verbindungsnetzwerk 22.
  • Eine programmierbare Logikeinrichtung umfaßt typischerweise ein Feld von programmierbaren Logikbereichen, eine Routing-Struktur, Eingabe- und Ausgabebereiche, Speicherbereiche und einen Konfigurationsspeicher (d. h. einen Speicher zur Speicherung der Konfigurationsdaten, die zum Konfigurieren der Logikkomponenten in den programmierbaren Logikbereichen benutzt werden). Die logischen Funktionen, die von einer programmierbaren Logikeinrichtung ausgeführt werden können, sind bestimmt durch die Konfigurationsdaten, die im Konfigurationsspeicher abgelgt sind, und die Verbindung des Konfigurationsspeichers mit den Logikbereichen, der Routing-Struktur, den Eingabe- und Ausgabebereichen und den Speicherbereichen. Der Konfigurationsspeicher kann z. B. auf einem statischen RAM basieren, der, im Schaltkreis, im wesentlichen beliebig oft beschrieben werden kann. Alternativ kann anstelle des internen statischen RAM der programmierbaren Logikeinrichtung eine Einrichtung wie etwa ein löschbarer programmierbarer ROM (EPROM) außerhalb der programmierbaren Logikeinrichtung als ein Konfigurationsspeicher verwendet werden. Auf Wunsch kann irgendeine andere Speichereinrichtung benutzt werden, die in der Lage ist, eine beträchtliche Anzahl von Malen beschrieben zu werden. Die von einer programmierbaren Logikeinrichtung ausgeführte logische Funktion kann deshalb oftmals im Schaltkreis (in-circuit) modifiziert werden. Ein Beispiel für eine geeignete Logikeinrichtung ist die Einrichtung FLEX EPF10K50 von Altera Corporation, San Jose, Kalifornien. Dieser Typ programmierbarer Logikeinrichtungen dient lediglich als Beispiel. Auf Wunsch kann in dem System 5 irgendeine andere geeignete Art programmierbarer Logikeinrichtungen verwendet werden. Auf Wunsch können die programmierbaren Logikeinrichtungen eine Teilrekonfiguration des Konfigurationsspeichers oder mehrerer Konfigurationsspeicher unterstützen.
  • Zum Speichern von Initialisierungsinformation kann ein nichtflüchtiger RAM 10 verwendet werden. Wenn die Spannung für ein rekonfigurierbares Computersystem zum ersten Mal eingeschaltet wird, kann die Initialisierungsinformation dazu benutzt werden, den Computer zu initialisieren. Dieser Prozeß ist als "Boot-Strapping" bekannt.
  • Die für Berechnungen benutzten Speichereinrichtungen können RAMs 12 sein. Diese können durch statische oder dynamische integrierte Speicherschaltkreis-Technologie gebildet werden. Die Wahl zwischen statischer oder dynamischer Speichertechnologie kann von den gewünschten Berechnungsfunktionen abhängen, die von der Speichereinrichtung ausgeführt werden sollen. Statische RAMs haben schnellere Zugriffszeiten als dynamsiche RAMs, benutzen jedoch mehr Transistoren pro Speicherzelle und sind deshalb für eine äquivalente Speicherdichte teurer in der Herstellung. Die Kombination aus Zugriffszeit, Dichte und Kosten sind Faktoren bei der Bestimmung der bevorzugten Speichertechnologie für eine gegebene Berechnungsfunktion.
  • Das Verbindungsnetzwerk 22 kann durch Drähte (z. B. einen Bus) gebildet werden, die alle physikalischen Ressourcen verbinden. Die Topologie des Verbindungsnetzwerkes kann auch durch Verwendung von programmierbaren Logikeinrichungen oder durch Verwendung von programmierbaren Verbindungseinrichtungen gebildet werden, die eine dynamische Rekonfigurierung der Topologie erlauben können. Die Topologie kann dann für eine bestimmte Berechnungsfunktion opitmiert werden. Beispiele für potentielle Netzwerktechnologien sind Gitter (mesh), Voll- oder Teil-Kreuzleitungen (cross bar), cliques, hyper-cubes und verteilte oder shared-memory-Hierarchien.
  • Die I/O-Verbindungen 20 können durch Drähte gebildet werden, die das rekonfigurierbare Rechnerfeld mit externen Einrichtungen wie etwa einer Tastatur, einer visuellen Anzeige, Massenspeichern wie einem Festplattenlaufwerk oder mit einem Computernetzwerk verbinden, das andere rekonfigurierbare oder nichtrekonfigurierbare Computersysteme umfaßt.
  • Auf Wunsch können programmierbare Logikeinrichtungen dazu benutzt werden, kombinatorische oder sequenzielle Logikfunkfuntionen für die Logikeinrichtung 14, Mikroprozessorfunktionen für den Mikroprozessor 16 oder I/O-Funktionen für die I/O-Schnittstelle 18 zu implementieren. Einige dieser Funktionen, etwa die Mikroprozessorfunktionen, können auf Wunsch in fester Hardware implementiert werden.
  • Bei der Erweiterung eines solchen Systems können mehr programmierbare Logikeinrichtungen hinzugefügt werden. Wenn programmierbare Logikeinrichtungen zu dem System hinzugefügt werden, nimmt die Verarbeitungsleistung zu. Skalierbarkeit und Modularität erlauben es, daß eine Zunahme der programmierbaren Loigkeinrichtungs-Ressourcen zu einer erhöhten Leistung des Systems führt.
  • Der Speicher 12 kann eine Speicherhierarchie für die Ausführung von Anwendungen und Systemprogrammen und Daten un terstützen. Anwendungs- und Systemprogramme können Mikroprozessor-Code und Konfigurationsdaten für programmierbare Logikeinrichtungen umfassen.
  • Eine programmierbare Logikeinrichtung kann so konfiguriert werden, daß sie eine anwendungsspezifische I/O-Einrichtung 18 bildet, die nur für die Dauer der Anwendung benötigt wird. Diese Einrichtungen können Protokolle verwenden, wie etwa Ethernet-Protokolle, SCSI-Protokolle (small computer systems Interface), PCI-Protokolle (peripheral component interconnect), Videotreiber-Protokolle und dergleichen.
  • Das Verbindungsnetzwerk 22 kann dazu benutzt werden, die folgenden Funktionen bereitzustellen: einen Konfigurationsbus für programmierbare Logikeinrichtungen, einen Anwendungs-Speicherbus und einen I/O-Bus. Jeder Bus kann unabhängig arbeiten. Der Konfigurationsbus für programmierbare Logikeinrichtungen kann dazu verwendet werden, jede programmierbare Logikeinrichtung in dem System zu konfigurieren. Je nach Adressierungsmodus für die Konfiguration der programmierbaren Logikeinrichtungen können diese Daten simultan an eine Gruppe von programmierbaren Logikeinrichtungen oder an eine individuelle programmierbare Logikeinrichtung gesendet werden. Der Anwendungs-Speicherbus kann es dem System erlauben, mit dem Feld der programmierbaren Logikeinrichtungen ein Speichersystem mit gemeinsamem oder verteiltem Speicher zu bilden. Der I/O-Bus kann eine programmierbare Logikeinrichtung mit einer externen I/O-Einrichtung verbinden.
  • Die Information in dem nichtflüchtigen Speicher 10 kann dazu benutzt werden, das System zu booten, wie in 2 gezeigt ist. Wenn in Schritt 30 die Spannung für das System eingeschaltet wird, enthalten weder die programmierbaren Logikeinrichtungen noch die zur Berechnung benutzten RAMs 12 Information aus vorherigen Konfigurationen. Der Zweck der im nichtflüchtigen Speicher 10 abgelegten Information ist es, einen boot-strap-Manager zu laden (Schritt 32). Der boot-strap-Mana ger kann seinerseits in Schritt 34 grundlegende I/O-Dienste (BIOS) laden, in Schritt 36 ein Selbsttest-Diagnoseprogramm bei Spannungseinschaltung laden und laufen lassen und in Schritt 38 einen Betriebssystem-Kernel laden und laufen lassen.
  • Die im nichtflüchtigen Speicher 10 abgelegten boot-strap-Befehle können in Schritt 36 auf einer Berechnungsressource ausgeführt werden. Diese Ressource kann ein spezieller Mikroprozessor, eine als Mikroprozessor konfigurierte programmierbare Logikeinheit, eine Kombination aus einem Mikroprozessor und einer teilweise als Mikroprozessor konfigurierten programmierbaren Logikeinheit oder eine logische Schaltung einer programmierbaren Logikeinrichtung sein. Wenn die Ressource ein spezieller Mikroprozessor ist, enthält der nichtflüchtige Speicher 10 einfach die Mikroprozessorbefehle, die zur Vollendung des bootstrap-Prozesses benötigt werden. Wenn eine programmierbare Logikeinrichtung als Mikroprozessor konfiguriert werden muß, so kann der nichtflüchtige Speicher 10 Konfigurationsdaten für die programmierbare Logikeinrichtung und Mikroprozessorbefehle enthalten. Anderenfalls kann der nichtflüchtige Speicher 10 Konfigurationsdaten für eine programmierbare Logikeinrichtung für eine Logikschaltung enthalten, die zum Abschluß des boot-strap-Prozesses zusätzliche Programmbefehle erfordern mag oder nicht.
  • Der letzte boot-strap-Prozeß ist das Laden eines Betriebssystem-Kernels. Die Ladeprozedur kann das Laden von Befehlen für einen Mikroprozessor enthalten, der durch Verwendung einer programmierbaren Logikeinrichtung implementiert ist, oder kann das Laden der Konfigurationsdaten für eine programmierbare Logikeinrichtung beinhalten. Welche Anordnung auch immer benutzt wird – Mikroprozessorenfehle oder Logikschaltung mit oder ohne Befehle – kann das Betriebssystem als das virtuelle Computerbetriebssystem (VC-OS) bezeichnet werden.
  • Illustrative Komponenten des virtuellen Computerbetriebssystems sind in 3 gezeigt. Das virtuelle Computerbetriebssys tem 40 nach 3 kann die grundlegenden Dienste bereitstellen, die traditionelle Betriebssysteme hinsichtlich des Laufzeitmanagements bieten. Außerdem unterstützt das virtuelle Computerbetriebssytem Dienste für das System 5, die sich auf die Verwendung von programmierbaren Logikressourcen beziehen.
  • Das virtuelle Computerbetriebssystem umfaßt Laufzeitmanagement-Tools, die sicherstellen, daß die Funktionen einer gegebenen Anwendung ausgeführt werden können. Zum Beispiel stellen die Laufzeitmanagementfunktionen sicher, daß Funktions- und Zeitbeschränkungen eingehalten werden, die auf der Ebene der Systemkonstruktion spezifiziert wurden.
  • Herkömmliche Betriebssysteme wie etwa Microsoft Windows NT nehmen die Zeitplanung (Disposition) für Funktionen vor, die auf den in herkömmlichen Computersystemen verfügbaren Ressourcen in Laufzeit auszuführen sind. Die Ressourcen in solch einem herkömmlichen Computersystem sind in Laufzeit je nach Anforderungen des Anwendungsprogrammms und Ressourcenverfügbarkeit dynamisch zugewiesen. Jede Ressource hat einen Ressourcenmanager, etwa einen Manager für den virtuellen Speicher, der für die Zuweisung des physikalischen Speichers verantwortlich ist. Die gebräuchlichsten Ressourcenmanager in herkömmlichen Betriebssystemen sind ein Dateisystemmanager, ein Graphikmanager, ein I/O-Manager (zur Handhabung des Zugriffs auf Massenspeicher oder einfache I/O-Einrichtungen wie etwa eine Tastatur oder Maus), ein Netzwerkmanager und ein Manager für virtuellen Speicher.
  • Gemäß der vorliegenden Erfindung umfaßt das virtuelle Computerbetriebssystem 40 eine Anwendungs-Schnittstelle (VC-API) 44, die eine Schnittstelle zwischen dem virtuellen Computerbetriebssystem 40 und Anwendungen bildet, die für das virtuelle Computerbetriebssystem 40 geschrieben sind. Das virtuelle Computerbetriebssystem 40 enthält auch Kernel-Dienste 42, die Ressourcen-Managementfunktionen bereitstellen. Jede Ressource in dem System kann einen Ressourcenmanageer haben. Zum Beispiel können Dateiressourcen von dem Dateisystemmanager 46 gehandhabt werden. Graphikressourcen können vom Graphikmanager 47 gehandhabt werden, IO-Ressourcen können vom IO-Manager 48 gehandhabt werden, Netzwerkressourcen können vom Netzwerkmanager 50 gehandhabt werden, und Ressourcen für virtuellen Speicher können vom Manager 52 für virtuellen Speicher gehandhabt werden. Ein rekonfigurierbares Computersystem kann eine virtuelle Logik haben, die von einem virtuellen Logikmanager 54 gemanagt wird, der Anfragen behandelt, die von Anwendungen gemacht werden, um auf die begrenzten programmierbaren Logikressourcen in dem System 5 zuzugreifen.
  • Herkömmliche Betriebssysteme sind auf den virtuellen Speicher angewiesen, um Beschränkungen beim begrenzten Zugriff auf RAM-Speicher zu überwinden. Der virtuelle Speicher kann sekundäre Speichereinrichtungen (etwa Festplattenlaufwerke) benutzen, um Laufzeitdaten temporär zu handhaben, die andernfalls typischerweise in einer primären Speichereinrichtung (etwa einem RAM) gespeichert würden. Wenn Funktionen und Daten von einer Anwendung angefordert werden, bestimmt das Betriebssystem, ob die angeforderten Daten zur Zeit im virtuellen Speicher abgelegt sind, und wenn dies der Fall ist, ersetzt es die Daten in dem physikalischen Speicher für andere Anwendungen durch die Funktionen und Daten, die gegenwärtig vom virtuellen Speicher angefordert werden.
  • Der virtuelle Logikmanager nach der vorliegenden Erfindung ist jedoch für die Laufzeitzuweisung von programmierbaren Logikeinrichtungen zuständig. Der virtuelle Logikmanager erfüllt die Laufzeitanforderungen von Anfragen von verschiedenen Anwendungen für Funktionen, die in programmierbarer Logik zu implementieren sind. Eine Anwendung kann verlangen, daß mehr Funktionen unter Verwendung programmierbarer Logikeinrichtungen implementiert werden als programmierbare Logikeinrichtungen zur Handhabung solcher Anforderungen vorhanden sind. Der virtuelle Logikmanager muß deshalb die Laufzeit umschaltung von Funktionen managen, die in programmierbare Logik zu implementieren sind.
  • Herkömmliche virtuelle Speichermanager lassen eine relativ kleine Menge an physikalischem Speicher für eine Anwendung wie eine relativ große Menge an logischem Speicher aussehen. Dies wird erreicht durch die Laufzeitumschaltung von Speicherseiten in den und aus dem physikalischen Speicher zu und von einem sekundären Speicher (üblicherweise einem lokalen Festplattenlaufwerk). Mit dem virtuellen Logikmanager 54 nach der vorliegenden Erfindung kann man eine relativ kleine Menge an physikalischen programmierbaren Logikeinrichtungen für eine Anwendung wie eine relativ große Menge an logischen programmierbaren Logikeinrichtungen aussehen lassen. Dies wird dadurch erreicht, daß der virtuelle Logikmanager 54 dazu benutzt wird, eine Laufzeitumschaltung von Konfigurationsdaten für programmierbare Logikeinrichtungen und Zustandsinformationen in und aus dem Konfigurationsspeicher für programmierbare Logikeinrichtungen (d. h. dem Konfigurationsspeicher) zu und von einer sekundären Speichereinrichtung (üblicherweise einem lokalen Festplattenlaufwerk) durchzuführen.
  • Der Prozeß des Ladens einer auszuführenden Funktion in das System ist in 4 gezeigt. Dieser Prozeß dient dazu, die beste zu verwendende Implementierung der Funktion (entweder Software oder Hardware) zu der Zeit auszuwählen, zu der die Funktion ausgeführt wird.
  • In Schritt 150 werden die verfügbare Hardware-Verarbeitungsbandbreite des Systems und die verfügbare Software-Verarbeitungsbandbreite des Systems bestimmt. Die Software-Verarbeitungsbandbreite kann aus der Zeitmenge berechnet werden, die sämtliche Mikroprozessoren in dem System unbeschäftigt sind und keine Funktionen ausführen. Die Hardware-Verarbeitungsbandbreite kann berechnet werden anhand der Anzahl von unbenutzten programmierbaren Logikressourcen in dem System zusammen mit der Menge an Zeit, in der die benutzten programmierbaren Logikressourcen keine Daten verarbeiten.
  • In Schritt 152 werden die geforderte Hardware-Verarbeitungsbandbreite für die Funktion und die geforderte Software-Verarbeitungsbandbreite für die Funktion bestimmt. Diese Anforderungen können durch den Anwendungsingenieur als eine absolute Anforderung spezifiziert werden, oder sie können spezifiziert werden anhand der Leistung des Systems, wenn eine kleine zusätzliche Funktion ausgeführt wird, die neben der auszuführenden Funktion ausgeführt wird. Diese kleine Funktion kann in Schritt 152 ausgeführt werden, und die Leistung des Systems kann gemesssen werden.
  • In Schritt 154 wird entschieden, ob die geforderte Software-Verarbeitungsbandbreite kleiner ist als die in dem System verfügbare Bandbreite. Wenn die geforderte Software-Verarbeitungsbandbreite kleiner ist als die in dem System verfügbare Bandbreite, so wird in Schritt 160 die Softwareimplementierung in das System geladen, damit sie auf einem Mikroprozessor läuft. Diese Wahl wird getroffen, weil die Softwareimplementierung weniger Systemressourcen benötigt als die Hardwareimplementierung.
  • Wenn die Software-Verarbeitungsbandbreite nicht adäquat ist, so wird in Schritt 156 die Hardwareimplementierung bewertet. Wenn die verfügbare Hardware-Bandbreite akzeptabel ist, wird in Schritt 162 die Funktion in das System geladen, so daß sie direkt auf einer programmierbaren Logikressource ausgeführt wird. Wenn in Schritt 156 festgestellt wurde, daß die verfügbare Hardware-Bandbreite nicht akzeptabel ist, und wenn weiter in Schritt 158 festgestellt wurde, daß die Leistungsanforderung "hart" war, was bedeutet, daß die Leistungsanforderung erfüllt werden muß, so erhält der Benutzer eine Fehlermeldung, und das Laden der Funktion (und ihrer Mutter-Anmeldung) muß in Schritt 164 abgebrochen werden. Wenn die Anforderung nicht "hart" war, wird die Funktion in Schritt 162 dennoch geladen und läuft mit einem reduzierten Leistungsniveau.
  • Wenn eine Implementierung einer Funktion in das System geladen worden ist (unter Verwendung üblicher Mittel zur Entscheidung, welche Funktionen eine niedrigere Priorität haben, und mit Schließen dieser Funktionen niedrigerer Priorität, soweit nötig), wird die Leistung der Funktion in dem System in Schritt 166 überwacht. Die Priorität, die der Funktion für die Bandbreite des Systems gegeben wurde, wird proportional zu der Differenz zwischen der geforderten Bandbreite und der tatsächlich realisierten Bandbreite sein.
  • Wann immer eine neue Funktion durch den Prioritätsmanagementprozeß für die Ressourcenzuweisung vorgemerkt wird, besteht der erste von der Ressourcen-Zuweisungsroutine des virtuellen Computerbetriebssystems ausgeführte Schritt darin, zu entscheiden, ob eine Ressource vorhanden ist, die die Rahmenbedingungen dieser Funktion erfüllen kann. Wenn eine solche Ressource vorhanden ist, so wird die Ressource der Funktion zugewiesen. Wenn nicht, muß unter Verwendung einer geeigneten Ersatzpolitik ein geeigneter Kandidat in dem vorhandenen Pool physikalischer Ressourcen gefunden werden. Wenn z. B. entschieden wird, daß nicht genügend programmierbare Logikressourcen verfügbar sind, um für die Ausführung einer gegebenen Funktion einer Anwendung rekonfiguriert zu werden, kann das virtuelle Computerbetriebssystem dazu benutzt werden, sicherzustellen, daß die gegebene Funktion mit Hilfe von Hardwareressourcen implementiert wird, die nicht rekonfiguriert zu werden brauchen (z. B. einem spezialisierten Mikroprozessor oder einer programmierbaren Logikeinrichtung, die so konfiguriert ist, daß sie als eine CPU arbeitet). Das virtuelle Computerbetriebssystem kann sicherstellen, daß eine geeignete Softwareversion der Funktion durch den Anwendungsingenieur bereitgestellt wurde, bevor versucht wird, die Funktion auf einem Mikroporzessor laufen zu lassen.
  • Vorbehaltlich von Beschränkungen für die Funktion umfassen geeignete Ersatzstrategien, die verwendet werden können, "first-in-first-out", "zuletzt benutzt" oder "am wenigsten häufig benutzt". Ein Extremfall könnte ein Austausch der ersten geeigneten Ressource auf Anfrage sein, wenn das Laufzeitmanagement eine Funktion mit hoher Priorität detektiert, etwa einen Echtzeitinterrupt-Handhabungsprozeß.
  • Im Hinblick auf die Ressourcenzuweisung und Vormerkung schließt das Laufzeit-Ressourcenmanagement von Betriebssystemen herkömmlicher Computerarchitekturen die Verwendung verschiedener Techniken zur CPU-Disposition (scheduling) ein. Wenn man ein Computersystem Anwendungen (wie auch einzelne Funktionen unter derselben Anwendung) eine nach der anderen handhaben läßt, kann dies extrem ineffizient sein. Je nach der zu einer gegebenen Zeit bearbeiteten Aufgabe können Ressourcen überlastet werden, während andere unbenutzt bleiben. Das Resultat ist ein sehr langsamer Computer. Als Antwort darauf wurde das Konzept der CPU-Disposition allmählich von den meisten herkömmlichen Betriebssystemen übernommen.
  • Die CPU-Disposition in herkömmlichen Computersystemen umfaßt die Zuweisung von Ressourcen und die Disposition der Reihenfolge, in der alle Funktionen von dem System abgearbeitet werden. Das Ziel der CPU-Disposition ist es, eine stabile Multitasking-Umgebung zu erzeugen. Diese Umgebung wird erzeugt durch algorithmisches Zuweisen von CPU-Ressourcen auf der Grundlage einer Kombination von Faktoren wie etwa Prioritätsvergabe, Leerlauf von Funktionen infolge von I/O-Verzögerungen oder irgendwelchen anderen Faktoren, die dazu benutzt werden können, die Reihenfolge zu bestimmen, in der Funktionen abgerarbeitet werden. Wenn z. B. ein Mikroprozessor eine Funktion behandelt, die einen Punkt erreicht, an dem sie auf eine Eingabe eines Benutzers warten muß, kann ein CPU-Dispositionsmerkmal eines herkömmlichen Betriebssystems einer anderen Funktion die Gelegenheit geben, die Ressourcen des Mikroprozessors zu nutzen (wie auch andere verfügbare Systemres sourcen), bis die Benutzereingabe verfügbar ist. Wenn die Eingabe des Benutzers verfügbar ist, kann die erste Funktion die Ressourcen wieder zurückerlangen, die sie freigegeben hatte, als sie einen Leerlauf des Systems verursachte.
  • Gemäß der vorliegenden Erfindung übernimmt in einem rekonfigurierbaren Computersystem, in dem programmierbare Logikeinrichtungen entweder vollständig oder teilweise als einer oder mehrere Mikroprozessoren konfiguriert sind, die Funktion eines Dipositionssystems eine etwas andere Rolle als bei einem herkömmlichen CPU-Dispositionssystem. Während die herkömmliche CPU-Disposition Mikroprozessorressourcen an Funktionen zuweist, weist die Dispostion programmierbarer Logikeinrichtungen den Funktionen programmierbare Logikressourcen (von denen es mehrere gegen kann) zu. Die programmierbaren Logikressourcen müssen nicht notwendigerweise als Mikroprozessoren programmiert sein, sondern können so programmiert sein, daß sie irgendeine gewünschte Funktion ausführen, z. B. I/O-Funktionen, Graphikfunktionen, Netzwerkfunktionen. Der Zweck dieses Merkmals in einem Betriebssystems eines rekonfigurierbaren Computers ist es, das Management von verschiedenen Aufgaben zu unterstützen, die von einer Gruppe von programmierbaren Logikressourcen simultan bearbeitet werden. Im Betriebssystem eines herkömmlichen Computers hat dagegen ein CPU-Dispositionsmerkmal in erster Linie den Zweck, den Leerlauf von Mikroprozessoren zu reduzieren, der durch die hohe Nachfrage an Verarbeitungsleistung durch die verschiedenen zu einer gegebenen Zeit aktiven Aufgaben entsteht.
  • Ein typisches Dispositionssystem für einen rekonfigurierbaren Computer kann ein Zeitmultiplex-System verwenden, bei dem Anwendungsfunktionen programmierbaren Logikressourcen zugeordnet werden. Dies kann das Umschalten zwischen verschiedenen Funktionen in bestimmten Zeitintervallen beinhalten. Bemerkenswerte Ausnahmen umfassen Echtzeit-Interrupts und I/ O-Funktionen.
  • Wenn in einem rekonfigurierbaren Computersystem Ressourcen freiwerden und keine Funktionen für die sofortige Zuweisung disponiert sind, so kann ein Vorholen von Funktionen dazu beitragen, den Zeitaufwand zu minimieren, der mit dem Vorspann für die Konfiguration der programmierbaren Logikressourcen zusammenhängt, da die programmierbaren Logikressourcen mit den Konfigurationsdaten geladen werden können, bevor die Funktion benötigt wird.
  • Dieser Zeitaufwand, der mit dem Laden einer programmierbaren Logikeinrichtung zusammenhängt, kann bei zur Zeit verfügbaren programmierbaren Logikeinrichtungen in der Größenorndnung von Millisekunden liegen. Falls erwünscht, kann die zum Konfigurieren einer programmierbaren Logikeinrichtung benötigte Zeit reduziert werden (z. B. in der Größenordnung von Nanosekunden), indem vermehrt Pipelinetechnik und Parallelität auf der Einrichtung benutzt wird.
  • Ein rekonfigurierbares Computersystem, das auf einer Gruppe von programmierbaren Logikressourcen basiert, hat daher den Vorteil, das es relativ große Verarbeitungsfähigkeiten hat, weil die Anzahl der in dem System verwendeten programmierbaren Logikressourcen relativ groß sein kann. Wenn in einem rekonfigurierbaren System mehr Verarbeitungsleistung benötigt wird, braucht man lediglich mehr programmierbare Logikeinrichtungen auf dem Verbindungsnetzwerk hinzuzufügen. Eine Anwendung braucht nicht notwendigerweise recompiliert zu werden, nachdem mehr programmierbare Logikeinrichtungen zu dem System hinzugefügt wurden, weil der Laufzetimanager die neue Hardware automatisch detektiert und in die Laufzeit-Leistungsspezifikation einbezieht. Alle diese Einrichtungen können dann mit Hilfe des virtuellen Computerbetriebssystems kontrolliert und verfolgt werden.
  • Die vom Softwaredesigner festgelegten minimalen und maximalen Leistungsziele einer Funktion können die nächste Funktion bestimmen, die für die Ressourcenzuweisung zu disponieren ist.
  • Außerdem können auch die Prioritäten der augenblicklich laufenden Funktionen zur Bestimmung der nächsten zu disponierenden Funktion benutzt werden.
  • Ein weiteres Merkmal der vorliegenden Erfindung ist die Möglichkeit, die programmierbaren Logikeinrichtungen zu defragmentieren. In herkömmlichen Computern können Speichereinrichtungen wie etwa Plattenlaufwerke defragmentiert werden, um die Probleme zu vermeiden, die auftreten, wenn Ressourcen auf dem Laufwerk ständig zugewiesen und entzogen werden. Ein Bereich des nicht zugewiesenen Raumes auf einem herkömmlichen Plattenlaufwerk ist möglicherweise nicht groß genug, um einer Funkton neu zugewiesen zu werden, die einen größeren zusammenhängenden Raum benötigt. Gemäß der vorliegenden Erfindung kann die Defragmentierung der programmierbaren Logik dazu benutzt werden, die partielle Konfiguration einer einzelnen programmierbaren Logikeinrichtung zu defragmentieren. Dies ermöglicht es, daß viele kleine präallozierte Bereiche der programmierbaren Logik neu zugewiesen werden, um einen größeren Arbeitsbereich der programmierbaren Logik verfügbar zu machen. Dies umfaßt die Neuzuweisung der Konfigurationsdaten für bestimmte Vermittler zu verschiedenen Teilen der programmierbaren Logik zur Aufnahme der gewünschten Funktionen der programmierbaren Logikeinrichtung.
  • Ein weiterer Aspekt der vorliegenden Erfindung bezieht sich auf die Softwareentwicklung. Der Prozeß der Softwareentwicklung ist ein kritischer Teil der Benutzung jedes Computersystems. Es ist wichtig, Fähigkeiten zu haben, komplexe Funktionen auszuführen und verwickelte Schnittstellen zu erzeugen, über die ein Benutzer mit dem Rechnersystem interagieren kann. Die meisten herkömmlichen Entwicklungstools umfassen hohe Programmiersprachen wie etwa JAVA, C++, ADA, LISP, COBOL, VISUAL BASIC und andere. Um die Konsistenz während des Softwareentwicklungsprozesses aufrechtzuerhalten, können hohe Sprachen für das rekonfigurierbare Computersystem entwickelt wer den, indem die Prinzipien der herkömmlichen Programmierung hoher Sprachen benutzt werden.
  • Eine Anwendung umfaßt typischerweise vielfältige Funktionen. Zum Beispiel kann eine Graphikanwendung bestimmte Funktionen zum Rendern von Oberflächen und andere Funktionen zur Strahlenrückverfolgung benutzen. Das virtuelle Computerbetriebssystem weist den Funktionen der Anwendung die programmierbaren Logikeinrichtungen zu.
  • Es kann eine Einheits-Hardwareabstraktion benutzt werden. Das heißt, ein Anwendungsingenieur braucht sich nicht darum zu kümmern, wie viele programmierbare Logikeinrichtungs-Ressourcen ein bestimmtes System, auf dem die Anwendung läuft, hat. Statt dessen kann eine Abstraktion gemacht werden, daß sämtliche Ressourcen verfügbar sind, vorbehaltlich eines minimalen Ressourcenbedarfs für wenigstens eine programmierbare Logikeinrichtung.
  • Dies ist in 5A gezeigt. Hardwarefunktionen 181 werden durch einen HDL-Compiler 180 auf der Grundlage einer Einheits-Hardwareabstraktion kompiliert (d. h. die Annahme, daß die Hardware-Beschreibungssprache für die Anwendung in Blöcken von Konfigurationsdaten kompiliert wird, die in einer programmierbaren Logikressource oder einer Teilmenge einer programmierbaren Logikressource implementiert werden, dargestellt als Hardwareeinheit 182). Die Hardwareeinheit 182 kann z. B. eine einzige programmierbare Logikeinrichtung oder ein Teil einer einzigen programmierbaren Logikeinrichtung sein. Der HDL-Compiler 180 versorgt das virtuelle Computerbetriebssystem (VC-OS) 184 mit Konfigurationsdaten in der Form von Blöcken von Konfigurationsdaten, wobei jeder Block in eine Hardwareeinheit 182 paßt. VC-OS 184 weist den Blöcken (die Funktionen bilden, die ihrerseits die Anwendung bilden) nach Bedarf programmierbare Logikeinrichtungs-Ressourcen zu.
  • In dem Beispiel nach 5A hat das VC-OS 184 dem Block 1 der Anwendung eine programmierbare Logikressource 186, dem Block 2 der Anwendung eine programmierbare Logikressource 188, ... und dem Block n der Anwendung eine programmierbare Logikressource 190 zugewiesen. Logikressourcen wie etwa die Logikressourcen 186, 188, 190 können jeweils auf einer einzigen programmierbaren Logikeinrichtung basieren, können jeweils auf einen Teil einer programmierbaren Logikeinrichtung basieren, können jeweils auf einer Kombination solcher Anordnungen von Einrichtungen basieren oder können jeweils auf irgendwelchen anderen geeigneten Logikressourcen basieren. Der HDL-Compiler 180 kann Anwendung auf der Grundlage einer konsistenten Einheites-Hardwareabstraktion selbst dann compilieren, wenn die zuzuweisenden Ressourcen sich von System zu System ändern oder sich während der Laufzeit in einem gegebenen System ändern. Der virtuelle Logikmanager kann Blöcke von Konfigurationsdaten in einer bestimmten programmierbaren Logikressource austauschen, wenn diese Ressourcen begrenzt sind. Wie in 5B gezeigt ist, kann das VC-OS außerdem mehreren Blöcken von Konfigurationsdaten eine programmierbare Logikeinrichtungs-Ressource zuweisen.
  • Der Prozeß der Kompilierung einer Entwicklungsspezifikation oder eines Algorithmus auf hoher Ebene und seiner Ausführung auf einer rekonfigurierbaren Hardwarearchitektur ist detailliert in 6 dargestellt. Eine Spezifikation (Algorithmus) 70, ein Satz von Beschränkungen 74 und eine Ressourcenbibliothek 76 werden Software-Entwicklungstools 192 als Eingangsdaten bereitgestellt. Die Spezifikation kann in einer Systementwicklungssprache geschrieben werden. In der Spezifikation braucht der Anwendungsingenieur nur eine Anwendung mit Hilfe der Tools zu schreiben, die von der Systementwicklungssprache bereitgestellt werden. Der Anwendungsingenieur braucht keine Software-Version und keine Hardware-Version der Funktionen zu berücksichtigen, die in der Systementwicklungssprache geschrieben sind. Ein Partitionierer 72 kann dann die Spezifikation 79 in Softwarefunktionen 78 und Hardwarefunktionen 80 partitionieren. Dies geschieht so, daß die Funktionen vollständig als Software laufen können (z. B. auf einem Mikroprozessor), vollständig als Hardware laufen können (auf einer programmierbaren Logikeinrichtung) oder in einer Kombination aus beidem laufen können. Für jede Funktionspartition können sowohl eine Softwareimplementierung als auch eine Hardwareimplementierung erzeugt werden, weil die Entscheidung, eine bevorzugte Implementierung der Partition laufen zu lassen, bis zur Laufzeit aufgeschoben werden kann. Auf dem Code der Systementwicklungssprache kann auch ein Systementwicklungssprachen-Profilierer laufen, um kritische Pfade zu ananlysieren und Partitionen zuzuweisen.
  • Die Partitionierungsphase muß möglicherweise die Beschränkungen 74 berücksichtigen. Es gibt zwei allgemeine Typen von Beschränkungen 74. Zunächst können die Funktionsgrenzen der Spezifikation 70 in der Systementwicklungssprache Zeitbeziehungen innerhalb von Funktionen haben, und es mag Gleichzeitigkeits- oder Sequenzbeschränkungen zwischen Funktionen geben. Zweitens können der Verwendung von Hardwareressourcen in der Ressourcenbibliothek 76 Kostenfunktionen zugeordnet sein. Die Ressourcenbibliothek 76 enthält Einzelheiten über jede verfügbare Hardwareressource (dies umfaßt im allgemeinen Mikroprozessoren, Speicher und programmierbare Logikeinrichtungen). Diese können Berechnungsraten, Latenz und Ansprechzeiten einer Ressource oder Kostenfunktionen der Zeit (üblicherweise für Softwareimplementierungen), des Platzes (üblicherweise für Hardwareimplementierungen) oder der Kommunikation (Overhead bei Platz und Zeit) umfassen.
  • Beschränkungen können als "harte" Beschränkungen definiert sein, die erfüllt werden müssen. Ein Beispiel einer harten Beschränkung ist eine Beschränkung, die einen in Echtzeit auszuführenden I/O- oder Interrupt-Prozeß betrifft. Beschränkungen können auch als "weiche" Beschränkungen definiert sein. Ein Beispiel einer weichen Beschränkung ist eine Beschränkung, die sich auf arithmetische Funktionen in einem Rechenblatt be zieht. Es ist nicht kritisch, daß diese arithmetischen Funktionen innerhalb einer bestimmten Zeit ausgeführt werden, doch je schneller diese Funktionen ausgeführt werden, desto zweckmäüßiger ist dies für die Benutzung der Anwendung.
  • Die Ressourcenbibliothek 76 beschreibt Eigenschaften für jeden Typ von Ressourcen. Zum Beispiel kann ein Mikroprozessor Eigenschaften haben wie etwa einen bestimmten Befehlssatz und eine bestimmte Datenwegbreite, ein Speicher kann eine bestimmte Datenwegbreite haben, und eine programmierbare Logikeinrichtung kann eine bestimmte Logikkapazität und einen I/ O-Zähler haben. Das Partitionierungstool 72 berücksichtigt Eigenschaften aus der Ressourcenbibliothek 76 und Beschränkungen 74, mag jedoch nicht berücksichtigen, wieviel Ressourcen es von jeder Ressource innerhalb eines gegebenen Systems gibt. Es liegt in der Verantwortung des Laufzeit-Ressourcenmanagers, die Funktionspartitionen je nach Bedarf von einer laufenden Anwendung auf die verfügbaren Hardwareressourcen abzubilden.
  • Nachdem die Spezifikation 70 in der Systementwicklungssprache einmal in Softwarefunktionen 78 und Hardwarefunktionen 80 partitioniert worden ist, können Schnittstellenfunktionen 86 synthetisiert werden, um die Übergabe von Parametern zwischen diesen Funktionen zu erlauben. Die Schnittstellenfunktionen 86 können Sofrwareverfahren sein zum Schreiben von Parametern in Hardwarefunktionen 80, die speicherabgebildet sind, oder dies könnte die Instanzierung einer Festplatten-Schnittstellenschaltung in einer programmierbaren Logikeinrichtung umfassen, um die Archivierung eines Dateisystems zu ermöglichen.
  • Es ist nicht nötig, sowohl eine Softwareversion als auch eine Hardwareversion von allen Funktionen zu haben. Ein Anwendungsingenieur kann alle Funktionen sowohl für Software als auch für Hardware schreiben, einige für beide Versionen oder stets nur die eine oder die andere. Es kann jedoch wünschenswert sein, beide Versionen zu haben, damit das Betriebssystem Flexibilität bei der Auswahl eines optimalen Satzes von Funktionen und Implementierungen erhält.
  • Nach der Partitionierung in Funktionen muß jede Komponente in Software und Hardware auf die physikalische Implementierungstechnologie abgebildet werden. Dies umfaßt die Compilierung von Softwarefunktionen 78 in Threads 88 mit Hilfe eines Compilers 82 für Sprachen auf hoher Ebene und von Hardwarefunktionen 80 in Konfigurationsmuster 90 mit Hilfe eines Compilers 84 für eine Hardware-Beschreibungssprache. Verschiedene Optimierungs- und Reduktionstechniken können auf dieser Stufe eingesetzt werden, etwa Propagation von Konstanten (sowohl arithmetische als auch geometrische), Reduktion von Verknüpfungsstärken (Z. B. a + a = 2*a -- dies würde eine u. U. kostspielige Multiplikationsstufe entfernen), Pipelinetechnik oder Ressourcensharing.
  • Das letzlich ausführbare Codebild (erzeugt von einem Linker 92, der Software- und Hardwarefunktionen und Parameteradressen auflöst) umfaßt eine Hauptfunktion und dynamisch verknüpfte Funktionen, die alle in Software oder Hardware oder einer Kombination von beidem ausgeführt werden können. Diese Funktionen und die von dem Partitionierer 72 der Systementwicklungssprache erzeugten Beschränkungen 74 sind Eingänge in das virtuelle Computerbetriebssystem 94.
  • Alternativ kann ein Benutzer den Entwicklungsfluß vereinfachen, indem er die Spezifikation manuell in Softwarekomponenten und Hardwarekomponenten partitioniert, wie in 7 gezeigt ist. Dieser Flug würde keine funktionellen Zeitbeschränkungen annehmen (weil er nicht in der Systementwicklungssprache geschrieben ist). Gewünschtenfalls können Beschränkungen in Betracht gezogen werden. Der Hauptfluß der Steuerung kann auf einem Mikroprozessor 130 (oder einer programmierbaren Logikeinrichtung, die als Mikroprozessor programmiert ist) ausgeführt werden, der Funktionen aufrufen kann, die in der programmierbaren Logik 132 residieren.
  • Algorithmusfunktionen, die endweder auf einen Mikroprozessor 130 oder auf eine programmierbaren Logikeinrichtung 132 zielen, können in einer hohen Sprache 114 geschrieben und für die Funktionen, die in einer programmierbaren Logikeinrichtung 132 zu implementieren sind, mit Hilfe eines Compilers 118, der von einer hohen Sprache in eine Hardwarebeschreibungssprache compiliert, in die Hardwarebeschreibungssprache übersetzt werden. Schnittstellenfunktionen, die zur Übergabe von Parametern zwischen den Software- und Hardwarefunktionen notwendig sind, werden ebenfalls in der hohen Sprache spezifiziert.
  • Der Compiler 116 für die hohe Sprache compiliert die Softwarefunktionen 110 und erzeugt Threads 122, die im Linker 124 mit den Konfigurationsdaten 126 aus dem Maschinensprachen-Compiler 120 verknüpft werden. Diese Funktionen können dann von dem virtuellen Computerbetriebssystem 128 benutzt werden.
  • Je nach verfügbaren Ressourcen, Befehlen des Anwendungsingenieurs und Beschränkungen kann das virtuelle Computerbetriebssystem entscheiden (entweder während der Laufzeit oder während der Softwarekompilierung), ob die Softwareimplementierung, die Hardwarekomplementierung oder eine Kombination von beiden benutzt werden wird, um eine bestimmte Anwendung laufen zu lassen. Dies ermöglicht eine äußerst effiziente Verarbeitung, da Funktionen, die besser als Software laufen, auch als Software laufen, während solche Funktionen, die besser für die Hardware der programmierbaren Logikeinrichtung geeignet sind, auf den programmierbaren Logikressourcen laufen.
  • Das vorstehende soll lediglich die Prinzipien der Erfindung illustrieren, und der Fachmann kann verschiedene Abwandlungen vornehmen, ohne daß der Rahmen der Erfindung, wie beansprucht, verlassen wird.

Claims (20)

  1. Ein rekonfigurierbares Rechnersystem mit: einer zentralen Verarbeitungseinheit (16), die auf wenigstens einer programmierbaren Logikressource implementiert ist, einer programmierbaren Logik (14), die mit der zentralen Verarbeitungseinheit (16) gekoppelt ist, wobei die programmierbare Logik (14) rekonfigurierbar ist, um die Fähigkeit des Rechnersystems zur Behandlung einer gegebenen Anwendung zu optimieren, und gekennzeichnet durch: eine sekundäre Speichereinrichtung, die Konfigurationsdaten für die programmierbare Logik (14) speichert.
  2. Das rekonfigurierbare Rechnersystem nach Anspruch 1, weiter mit einem nichtflüchtigen Speicher (10), der mit der programmierbaren Logik (14) gekoppelt ist, wobei der nichtflüchtige Speicher anfängliche Konfigurationsdaten speichert, die von der programmierbaren Logik (14) während einer Bootphase benutzt werden.
  3. Das rekonfigurierbare Rechnersystem nach Anspruch 1 oder 2, weiter mit einem Sprecher (12) mit wahlfreiem Zugriff, der mit der programmierbaren Logik (14) gekoppelt ist, wobei der Speicher mit wahlfreiem Zugriff Daten und Zustandsinformation speichert.
  4. Das rekonfigurierbare Rechnersystem nach einem der vorstehenden Ansprüche, weiter mit Eingangs- und Ausgangs-Schaltungstechnik (18), die in der programmierbaren Logik implementiert ist, wobei die Eingangs- und Ausgangs-Schaltungstechnik (18) mit der zentralen Verarbeitungseinheit (16) und der programmierbaren Logik (14) gekoppelt ist.
  5. Das rekonfigurierbare Rechnersystem nach einem der vorstehenden Ansprüche, bei dem die programmierbare Logik dazu ausgebildet ist, die Installation einer zusätzlichen programmierbaren Logik aufzunehmen, und bei dem ein Laufzeitmanager die zusätzliche programmierbare Logik automatisch detektiert, so daß die zusätzliche programmierbare Logik installiert wird, ohne daß die Anwendung recompiliert wird.
  6. Ein Verfahren zur Verwaltung von Ressourcen in einem rekonfigurierbaren Rechnersystem, das programmierbare Logikressourcen enthält, die rekonfigurierbar sind, um die Fähigkeit des Rechnersystems zur Behandlung einer gegebenen Anwendung zu optimieren, gekennzeichnet durch den Austausch von Konfigurationsdaten zwischen einer sekundären Speichereinrichtung und den programmierbaren Logikressourcen während der Belegung der programmierbaren Logikressourcen mit Hilfe eines virtuellen Logikmanagers (54).
  7. Das Verfahren nach Anspruch 6, bei dem der rekonfigurierbare Rechner eine zentrale Verarbeitungseinheit (16) hat, die auf wenigstens einer programmierbaren Logik-Vorrichtung implementiert ist, und eine programmierbare Logik (14) aufweist, die mit der zentralen Verarbeitungseinheit (16) gekoppelt ist, wobei die programmierbare Logik (14) rekonfigurierbar ist, um die Fähigkeit des Rechnersystems zur Behandlung einer gegebenen Anwendung zu optimieren.
  8. Das Verfahren nach Anspruch 6, bei dem der rekonfigurierbare Rechner eine auf einem Mikroprozessor implementierte zentrale Verarbeitungseinheit (16) und eine programmierbare Logik (14) aufweist, die mit der zentralen Verarbeitungseinheit (16) gekoppelt ist, wobei die programmierbare Logik rekonfigurierbar ist, um die Fähigkeit des Rechnersytems zur Behandlung einer gegebenen Anwendung zu optimieren.
  9. Das Verfahren nach Anspruch 6, bei dem der rekonfigurierbare Rechner eine zentrale Verarbeitungseinheit (16), die teilweise auf einem Mikroprozessor implementiert ist und die teilweise auf einer programmierbaren Logik-Vorrichtung implementiert ist, und eine programmierbare Logik (14) aufweist, die mit der zentralen Verarbeitungseinheit (16) gekoppelt ist, wobei die programmierbare Logik rekonfigurierbar ist, um die Fähigkeit des Rechnersystems zur Behandlung einer gegebenen Anwendung zu optimieren.
  10. Das Verfahren nach einem der Ansprüche 6 bis 9 weiter mit: der Verwendung eines virtuellen Rechnerbetriebssystems (40) zur Bestimmung, ob genügend programmierbare Logikressourcen verfügbar sind, um rekonfiguriert zu werden, um eine gegebene Funktion unter den Funktionen der Anwendung auszuführen, der Verwendung des virtuellen Rechnerbetriebssystems (40) zur Messung der Leistung der Anwendung während der Laufzeit und zum Vergleich der gemessenen Leistung mit spezifizierten Leistungsanforderungen, der Verwendung des virtuellen Rechnerbetriebssystems (40) zum Belegen der programmierbaren Logikressourcen mit den vielfältigen Funktionen der Anwendung auf der Grundlage des Vergleichs der gemessenen Leistung mit den spezifizierten Leistungsanforderungen und der Verwendung des virtuellen Rechnerbetriebssystems (40), um auf der Grundlage des Vergleichs der gemessenen Leistung mit den spezifizierten Leistungsanforderungen zu entscheiden, ob eine Hardwareimplementierung oder eine Softwareimplementierung für die gegebene Funktion zu verwenden ist.
  11. Das Verfahren nach Anspruch 10, bei dem die Anwendung vielfältige Funktionen enthält, wobei das Verfahren weiterhin die Belegung einer einzelnen der programmierbaren Logikressourcen mit mehreren Blöcken von Konfigurationsdaten einschließt, die eine gegebene Funktion erstellen.
  12. Das Verfahren nach Anspruch 10, bei dem die Anwendung vielfältige Funktionen enthält, wobei das Verfahren weiterhin die Belegung einer einzelnen der programmierbaren Logikressourcen mit einem einzelnen Block von Konfigurationsdaten einschließt, der eine gegebene Funktion erstellt.
  13. Das Verfahren nach Anspruch 10, bei der das virtuelle Rechnerbetriebssystem auf einem System residiert, das virtuelle Logik verwendet.
  14. Das Verfahren nach Anspruch 10, bei dem das virtuelle Rechnerbetriebssystem auf einem System residiert, das keine virtuelle Logik verwendet.
  15. Das Verfahren nach einem der Ansprüche 6 bis 14, weiterhin aufweisend: die Verwendung einer Systementwicklungssprache (70) zum Generieren von Funktionen für die Anwendung, das Partitionieren der Funktionen in Softwarefunktionen (78) und Hardwarefunktionen (80), die während der Laufzeit simultan existieren, wobei wenigstens eine der Softwarefunktionen dieselbe Funktion implementiert wie eine der Hardwarefunktionen, und die Entscheidung (150162) während der Laufzeit, ob die Softwarefunktionen oder die Hardwarefunktionen zu verwenden sind.
  16. Das Verfahren nach Anspruch 15, weiter mit Verwendung einer Ressourcenbibliothek (76) zum Bereitstellen von Information über Eigenschaften der programmierbaren Logikressourcen an einen Partitionierer (72).
  17. Das Verfahren nach Anspruch 15, weiter mit der Verwendung einer Ressoucenbibliothek (76) zum Bereitstellen von Information über Eigenschaften einer zentralen Verarbeitungseinheit (16) und über Eigenschaften eines Speichers (10, 12) in dem rekonfigurierbaren Rechner an einen Partitionierer (72).
  18. Das Verfahren nach Anspruch 15, weiter mit der Erzeugung von Hardwarefunktionen, die auf der Grundlage einer Einheits-Hardwareabstraktion geschrieben und compiliert sind.
  19. Das Verfahren nach Anspruch 15, weiter mit der automatischen Partitionierung der Hardwarefunktionen und der Softwarefunktionen mit Hilfe eines Partitionierers (72).
  20. Das Verfahren nach Anspruch 15, weiter mit der manuellen Partitionierung der Hardwarefunktionen und der Softwarefunktionen.
DE69910826T 1998-11-20 1999-11-19 Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung Expired - Fee Related DE69910826T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10914298P 1998-11-20 1998-11-20
US109142P 1998-11-20
PCT/US1999/027485 WO2000031652A2 (en) 1998-11-20 1999-11-19 Reconfigurable programmable logic device computer system

Publications (2)

Publication Number Publication Date
DE69910826D1 DE69910826D1 (de) 2003-10-02
DE69910826T2 true DE69910826T2 (de) 2004-06-17

Family

ID=22326022

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69910826T Expired - Fee Related DE69910826T2 (de) 1998-11-20 1999-11-19 Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung

Country Status (5)

Country Link
US (3) US6658564B1 (de)
EP (3) EP1138001B1 (de)
JP (5) JP2002530780A (de)
DE (1) DE69910826T2 (de)
WO (1) WO2000031652A2 (de)

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US9195784B2 (en) * 1998-08-31 2015-11-24 Cadence Design Systems, Inc. Common shared memory in a verification system
US6658564B1 (en) 1998-11-20 2003-12-02 Altera Corporation Reconfigurable programmable logic device computer system
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
GB0012773D0 (en) * 2000-05-25 2000-07-19 Radioscape Ltd Programmable single-chip device and related development environment
US6732263B1 (en) 2000-06-12 2004-05-04 Altera Corporation Configuring both a programmable logic device and its embedded logic with a single serialized configuration bit stream
EP2226732A3 (de) 2000-06-13 2016-04-06 PACT XPP Technologies AG Cachehierarchie für einen Multicore-Prozessor
US7343594B1 (en) 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
US7257780B2 (en) * 2000-08-07 2007-08-14 Altera Corporation Software-to-hardware compiler
WO2002033504A2 (en) * 2000-10-02 2002-04-25 Altera Corporation Programmable logic integrated circuit devices including dedicated processor components
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
WO2002031678A2 (en) * 2000-10-12 2002-04-18 Celoxica Limited System and method for an operating system in a reconfigurable logic device
NZ508052A (en) 2000-11-09 2003-06-30 Derek Ward Programmable controller
GB0028079D0 (en) * 2000-11-17 2001-01-03 Imperial College System and method
US7213231B1 (en) * 2001-01-11 2007-05-01 Cisco Technology, Inc. Cross-spectrum application model for dynamic computing environments in software lifecycle
EP1229445A1 (de) * 2001-02-02 2002-08-07 Cluster Labs GmbH Verfahren zum Betreiben eines Rechnersystems und Vorrichtung
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US7840777B2 (en) * 2001-05-04 2010-11-23 Ascenium Corporation Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime
EP1402382B1 (de) 2001-06-20 2010-08-18 Richter, Thomas Verfahren zur bearbeitung von daten
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US20030033374A1 (en) * 2001-07-24 2003-02-13 Condor Engineering, Inc. Method and system for implementing a communications core on a single programmable device
DE10139610A1 (de) 2001-08-11 2003-03-06 Daimler Chrysler Ag Universelle Rechnerarchitektur
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US6809736B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
US7768522B2 (en) * 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US7015919B1 (en) * 2002-01-08 2006-03-21 Apple Computer, Inc. Virtualization of graphics resources
US6809735B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
AU2003208266A1 (en) * 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
WO2003071432A2 (de) 2002-02-18 2003-08-28 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7194615B2 (en) * 2002-09-17 2007-03-20 Nokia Corporation Reconfigurable apparatus being configurable to operate in a logarithmic scale
US8276135B2 (en) * 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7424710B1 (en) * 2002-12-18 2008-09-09 Vmware, Inc. TCP/IP offloading for virtual machines
US8639487B1 (en) * 2003-03-25 2014-01-28 Cadence Design Systems, Inc. Method for multiple processor system-on-a-chip hardware and software cogeneration
JP4665760B2 (ja) * 2003-06-25 2011-04-06 日本電気株式会社 電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラム
EP1676208A2 (de) 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
GB2407178B (en) * 2003-10-17 2006-07-12 Toshiba Res Europ Ltd Reconfigurable signal processing module
US7986328B2 (en) * 2004-02-26 2011-07-26 Hewlett-Packard Development Company, L.P. Graphics optimization system and method
JP4497993B2 (ja) 2004-04-16 2010-07-07 株式会社日立製作所 電子配付物の配付制御システム及び方法
JP2005309644A (ja) 2004-04-20 2005-11-04 Hitachi Ltd リソース制御方法及びそのシステム
US8719837B2 (en) * 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
US7623660B1 (en) 2004-07-20 2009-11-24 Xilinx, Inc. Method and system for pipelined decryption
US7689726B1 (en) * 2004-10-01 2010-03-30 Xilinx, Inc. Bootable integrated circuit device for readback encoding of configuration data
US7328335B1 (en) 2004-10-01 2008-02-05 Xilinx, Inc. Bootable programmable logic device for internal decoding of encoded configuration data
US7199608B1 (en) * 2005-02-17 2007-04-03 Xilinx, Inc. Programmable logic device and method of configuration
US20060200603A1 (en) * 2005-03-01 2006-09-07 Naoto Kaneko Dynamic resource allocation for a reconfigurable IC
US7805593B1 (en) * 2005-03-24 2010-09-28 Xilinx, Inc. Real-time performance monitoring using a system implemented in an integrated circuit
US7774299B2 (en) * 2005-05-09 2010-08-10 Microsoft Corporation Flow computing
DE102005021749A1 (de) * 2005-05-11 2006-11-16 Fachhochschule Dortmund Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung
US9874923B1 (en) * 2005-05-30 2018-01-23 Invent.Ly, Llc Power management for a self-powered device scheduling a dynamic process
US7650603B2 (en) * 2005-07-08 2010-01-19 Microsoft Corporation Resource management for virtualization of graphics adapters
US7788478B2 (en) 2005-07-15 2010-08-31 Tabula, Inc. Accessing multiple user states concurrently in a configurable IC
US9009265B2 (en) * 2005-09-28 2015-04-14 Photobucket Corporation System and method for automatic transfer of data from one device to another
US9049243B2 (en) * 2005-09-28 2015-06-02 Photobucket Corporation System and method for allowing a user to opt for automatic or selectively sending of media
US7698392B2 (en) * 2005-09-28 2010-04-13 Photobucket Corporation Method and system for establishing a user-friendly data transfer service application executing within a heterogeneous distributed service application execution environment
JP5016807B2 (ja) * 2005-10-07 2012-09-05 株式会社日立ハイテクノロジーズ データ処理システム
US7779286B1 (en) 2005-10-28 2010-08-17 Altera Corporation Design tool clock domain crossing management
US7769929B1 (en) * 2005-10-28 2010-08-03 Altera Corporation Design tool selection and implementation of port adapters
JP4978006B2 (ja) 2006-01-05 2012-07-18 日本電気株式会社 データ処理装置及びデータ処理方法
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US7379777B2 (en) * 2006-01-24 2008-05-27 National Instruments Corporation System and method for automatically updating the memory map of a programmable logic controller to customized hardware
JP2007207136A (ja) 2006-02-06 2007-08-16 Nec Corp データ処理装置、データ処理方法、及びデータ処理プログラム
US7533362B1 (en) * 2006-03-20 2009-05-12 Altera Corporation Allocating hardware resources for high-level language code sequences
US7636796B2 (en) * 2006-09-15 2009-12-22 Microsoft Corporation Smart interconnect for modular multi-component embedded devices
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US9424270B1 (en) 2006-09-28 2016-08-23 Photobucket Corporation System and method for managing media files
KR100883655B1 (ko) * 2006-12-04 2009-02-18 삼성전자주식회사 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
US20080222581A1 (en) 2007-03-09 2008-09-11 Mips Technologies, Inc. Remote Interface for Managing the Design and Configuration of an Integrated Circuit Semiconductor Design
US8103987B2 (en) * 2007-03-09 2012-01-24 Mips Technologies, Inc. System and method for managing the design and configuration of an integrated circuit semiconductor design
US8069425B2 (en) 2007-06-27 2011-11-29 Tabula, Inc. Translating a user design in a configurable IC for debugging the user design
US7595655B2 (en) 2007-06-27 2009-09-29 Tabula, Inc. Retrieving data from a configurable IC
US7839162B2 (en) 2007-06-27 2010-11-23 Tabula, Inc. Configurable IC with deskewing circuits
WO2009039462A1 (en) 2007-09-19 2009-03-26 Tabula, Inc. Method and system for reporting on a primary circuit structure of an integrated circuit (ic) using a secondary circuit structure of the ic
US20090106755A1 (en) * 2007-10-19 2009-04-23 Sundeep Chandhoke Programmable Controller with Multiple Processors Using Scanning and Data Acquisition Architectures
US9336051B2 (en) * 2007-10-19 2016-05-10 National Instruments Corporation Programmable controller with multiple processors using a scanning architecture
JP5119902B2 (ja) * 2007-12-19 2013-01-16 富士通セミコンダクター株式会社 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム
US8429394B1 (en) 2008-03-12 2013-04-23 Stone Ridge Technology Reconfigurable computing system that shares processing between a host processor and one or more reconfigurable hardware modules
US8595723B2 (en) * 2008-06-10 2013-11-26 Hewlett-Packard Development Company, L.P. Method and apparatus for configuring a hypervisor during a downtime state
WO2010016857A1 (en) 2008-08-04 2010-02-11 Tabula, Inc. Trigger circuits and event counters for an ic
WO2010049910A2 (en) * 2008-10-30 2010-05-06 Nokia Corporation Software defined radio
JP5507136B2 (ja) * 2009-07-09 2014-05-28 株式会社日立製作所 管理装置及び方法並びに計算機システム
US8072234B2 (en) 2009-09-21 2011-12-06 Tabula, Inc. Micro-granular delay testing of configurable ICs
US20110106522A1 (en) * 2009-11-05 2011-05-05 Chinya Gautham N virtual platform for prototyping system-on-chip designs
JP5371109B2 (ja) * 2010-02-23 2013-12-18 日本電気株式会社 移行方法
US8364946B2 (en) * 2010-03-22 2013-01-29 Ishebabi Harold Reconfigurable computing system and method of developing application for deployment on the same
DE102010035102A1 (de) * 2010-08-23 2012-04-19 Bürkert Werke GmbH Steuergerät für fluidische Systeme
US9553590B1 (en) 2012-10-29 2017-01-24 Altera Corporation Configuring programmable integrated circuit device resources as processing elements
KR102014721B1 (ko) * 2013-01-29 2019-10-21 삼성전자 주식회사 어플리케이션과 비즈니스 요구에 기반한 프로그램 가능한 지능적 스토리지 아키텍처
US9577643B1 (en) 2013-11-26 2017-02-21 Altera Corporation Secure partial reconfiguration regions
US10452392B1 (en) 2015-01-20 2019-10-22 Altera Corporation Configuring programmable integrated circuit device resources as processors
US9805152B1 (en) * 2016-02-17 2017-10-31 Xilinx, Inc. Compilation of system designs
US10110233B2 (en) 2016-06-23 2018-10-23 Altera Corporation Methods for specifying processor architectures for programmable integrated circuits
US10394990B1 (en) * 2016-09-27 2019-08-27 Altera Corporation Initial condition support for partial reconfiguration
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10423438B2 (en) * 2016-09-30 2019-09-24 Amazon Technologies, Inc. Virtual machines controlling separate subsets of programmable hardware
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
KR102559581B1 (ko) 2018-05-23 2023-07-25 삼성전자주식회사 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10891132B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Flow convergence during hardware-software design for heterogeneous and programmable devices

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1444084A (en) 1972-06-21 1976-07-28 Honeywell Inf Systems Generalized logic device
US5142625A (en) * 1985-06-12 1992-08-25 Minolta Camera Kabushiki Kaisha One-chip microcomputer including a programmable logic array for interrupt control
US5134884A (en) * 1986-05-02 1992-08-04 Forrest Anderson Single pulse imaging device
US5068823A (en) * 1988-07-11 1991-11-26 Star Semiconductor Corporation Programmable integrated circuit using topological and parametric data to selectively connect and configure different high level functional blocks thereof
DE69031257T2 (de) * 1989-09-21 1998-02-12 Texas Instruments Inc Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor
US5128871A (en) * 1990-03-07 1992-07-07 Advanced Micro Devices, Inc. Apparatus and method for allocation of resoures in programmable logic devices
US5541849A (en) 1990-04-06 1996-07-30 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including estimation and comparison of timing parameters
JPH04314133A (ja) * 1991-04-11 1992-11-05 Nec Corp 情報処理装置
JPH04355867A (ja) * 1991-05-31 1992-12-09 Oki Electric Ind Co Ltd 分散処理方式
US5579530A (en) * 1992-06-11 1996-11-26 Intel Corporation Method and apparatus for dynamically allocating access time to a resource shared between a peripheral bus and a host bus by dynamically controlling the size of burst data transfers on the peripheral bus
US5684980A (en) * 1992-07-29 1997-11-04 Virtual Computer Corporation FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions
US5442792A (en) 1992-08-07 1995-08-15 Hughes Aircraft Company Expert system compilation method
GB9223226D0 (en) * 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5535342A (en) 1992-11-05 1996-07-09 Giga Operations Corporation Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JPH06301522A (ja) * 1993-04-09 1994-10-28 Sony Corp 計算機システム構成方法
JPH0784754A (ja) * 1993-09-14 1995-03-31 Toshiba Corp 電子計算機
US5535406A (en) * 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5761484A (en) 1994-04-01 1998-06-02 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5484740A (en) * 1994-06-06 1996-01-16 Motorola, Inc. Method of manufacturing a III-V semiconductor gate structure
US5548228A (en) * 1994-09-28 1996-08-20 Altera Corporation Reconfigurable programmable logic device having static and non-volatile memory
GB9508931D0 (en) * 1995-05-02 1995-06-21 Xilinx Inc Programmable switch for FPGA input/output signals
JPH08305547A (ja) * 1995-05-11 1996-11-22 Oki Electric Ind Co Ltd Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5859878A (en) * 1995-08-31 1999-01-12 Northrop Grumman Corporation Common receive module for a programmable digital radio
KR0180058B1 (ko) * 1995-09-13 1999-04-01 이민화 Cine메모리에 데이타를 압축 저장하는 초음파진단장치
SE505783C2 (sv) 1995-10-03 1997-10-06 Ericsson Telefon Ab L M Förfarande för att tillverka en digital signalprocessor
US5819064A (en) 1995-11-08 1998-10-06 President And Fellows Of Harvard College Hardware extraction technique for programmable reduced instruction set computers
JP3075166B2 (ja) * 1996-02-13 2000-08-07 日本電気株式会社 遠隔保守システム
GB9607528D0 (en) 1996-04-11 1996-06-12 Int Computers Ltd Integrated circuit processor
US5968161A (en) * 1996-08-29 1999-10-19 Altera Corporation FPGA based configurable CPU additionally including second programmable section for implementation of custom hardware support
JPH1078932A (ja) * 1996-09-04 1998-03-24 Hitachi Ltd リコンフィグラブル・ネットワークコンピュータ
GB2317245A (en) 1996-09-12 1998-03-18 Sharp Kk Re-timing compiler integrated circuit design
US5822570A (en) * 1996-10-30 1998-10-13 Microsoft Corporation System and method for parsing and executing a single instruction stream using a plurality of tightly coupled parsing and execution units
US5946219A (en) * 1996-10-30 1999-08-31 Atmel Corporation Method and system for configuring an array of logic devices
JPH10171645A (ja) * 1996-12-12 1998-06-26 Fujitsu Ltd 情報処理装置
DE19654593A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
US5835734A (en) * 1997-03-07 1998-11-10 California Institute Of Technology Electronic processing and control system with programmable hardware
US6219149B1 (en) 1997-04-01 2001-04-17 Fuji Xerox Co., Ltd. Print processing apparatus
JP3125863B2 (ja) * 1997-04-01 2001-01-22 富士ゼロックス株式会社 印刷処理装置
US6085317A (en) 1997-08-15 2000-07-04 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6608638B1 (en) 2000-02-07 2003-08-19 National Instruments Corporation System and method for configuring a programmable hardware instrument to perform measurement functions utilizing estimation of the hardware implentation and management of hardware resources
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6226776B1 (en) 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
JP4212676B2 (ja) * 1998-02-12 2009-01-21 富士ゼロックス株式会社 情報処理システムおよび情報処理方法
US6011740A (en) * 1998-03-04 2000-01-04 Xilinx, Inc. Structure and method for providing additional configuration memories on an FPGA
US5999990A (en) * 1998-05-18 1999-12-07 Motorola, Inc. Communicator having reconfigurable resources
US6282627B1 (en) * 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6658564B1 (en) 1998-11-20 2003-12-02 Altera Corporation Reconfigurable programmable logic device computer system
GB9828381D0 (en) 1998-12-22 1999-02-17 Isis Innovation Hardware/software codesign system
US6068823A (en) * 1999-01-15 2000-05-30 The University Of Houston System Process for the benign direct fixation and conversion of nitrogen oxides
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
CA2370960C (en) 1999-04-20 2006-06-13 Synthes (U.S.A.) Device for the percutaneous obtainment of 3d-coordinates on the surface of a human or animal organ
US6457173B1 (en) 1999-08-20 2002-09-24 Hewlett-Packard Company Automatic design of VLIW instruction formats
US6745160B1 (en) 1999-10-08 2004-06-01 Nec Corporation Verification of scheduling in the presence of loops using uninterpreted symbolic simulation
US6625797B1 (en) 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
US6510546B1 (en) * 2000-07-13 2003-01-21 Xilinx, Inc. Method and apparatus for pre-routing dynamic run-time reconfigurable logic cores
US7257780B2 (en) 2000-08-07 2007-08-14 Altera Corporation Software-to-hardware compiler

Also Published As

Publication number Publication date
JP5050069B2 (ja) 2012-10-17
JP2002530780A (ja) 2002-09-17
JP2014059905A (ja) 2014-04-03
EP1138001B1 (de) 2003-08-27
US6658564B1 (en) 2003-12-02
EP1138001A2 (de) 2001-10-04
JP2012252712A (ja) 2012-12-20
JP2010170572A (ja) 2010-08-05
EP1351153A2 (de) 2003-10-08
WO2000031652A2 (en) 2000-06-02
US7171548B2 (en) 2007-01-30
EP1351153A3 (de) 2008-11-05
WO2000031652A3 (en) 2000-12-28
US20040098569A1 (en) 2004-05-20
USRE42444E1 (en) 2011-06-07
EP1351154A2 (de) 2003-10-08
JP5509107B2 (ja) 2014-06-04
DE69910826D1 (de) 2003-10-02
JP2011090710A (ja) 2011-05-06

Similar Documents

Publication Publication Date Title
DE69910826T2 (de) Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
DE60318086T2 (de) System und methode zur reduzierung von leitungsverzögerung oder überlastung bei der synthese von hardware-solvern
DE69833914T2 (de) Architektur eines Multiprozessorrechners mit mehreren Betriebssysteminstanzen und softwaregesteuerter Betriebsmittelzuteilung
DE112012002905B4 (de) Technik zum Kompilieren und Ausführen von Programmen in höheren Programmiersprachen auf heterogenen Computern
DE60116060T2 (de) Rekonfigurierbare logik für einen rechner
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
DE102004012056B4 (de) System und Verfahren zum Überwachen von Ressourcenausnutzung und Anwendungsleistungsfähigkeit
DE60307532T2 (de) Paralleles Prozess-Ausführungsverfahren und Mehrprozessorenrechner
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
WO2000031652A9 (en) Reconfigurable programmable logic device computer system
DE112011101469T5 (de) Kompilieren von Software für ein hierarchisches verteiltes Verarbeitungssystem
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE102010044529A1 (de) Autonome Subsystem-Architektur
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE102021127324A1 (de) Planung von aufträgen auf grafischen verarbeitungseinheiten
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE10333088A1 (de) Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung
DE102010028896A1 (de) Verfahren und Vorrichtung zum Zuweisen einer Mehrzahl von Teilaufgaben einer Aufgabe zu einer Mehrzahl von Recheneinheiten einer vorgegebenen Prozessorarchitektur
DE10109848B4 (de) Programmierbarer Logik Controller und Programmerzeugungsvorrichtung zum Erzeugen eines Sequenzprogramms für einen programmierbaren Logik Controller
DE60132629T2 (de) Verfahren zum plazieren von mehrprozessoranwendungen
DE102023105575A1 (de) Verteilter gemeinsamer speicher
EP3901780A1 (de) Digitale schaltanordnung und verfahren zur konfiguration zumindest einer konfigurierbaren hardwarekomponente
DE102023105563A1 (de) Arrays kooperativer gruppen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee