DE19815865A1 - Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen - Google Patents
Kompiliersystem und Verfahren zum rekonfigurierbaren RechnenInfo
- Publication number
- DE19815865A1 DE19815865A1 DE19815865A DE19815865A DE19815865A1 DE 19815865 A1 DE19815865 A1 DE 19815865A1 DE 19815865 A DE19815865 A DE 19815865A DE 19815865 A DE19815865 A DE 19815865A DE 19815865 A1 DE19815865 A1 DE 19815865A1
- Authority
- DE
- Germany
- Prior art keywords
- instruction
- instructions
- reconfiguration
- subset
- code
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Description
Die vorliegende Erfindung betrifft generell Software für rekonfigurierbare Computer und
insbesondere ein Kompiliersystem und ein Verfahren zur Erzeugung ausführbarer Dateien
zur Verwendung in einer dynamisch rekonfigurierbaren Verarbeitungseinheit, die eine
veränderbare interne Hardwareorganisation aufweist.
Im Stand der Technik sind Versuche unternommen worden, rekonfigurierbare Geräte bzw.
Einheiten zu schaffen. Ein erster bekannter Lösungsansatz besteht in herunterladbaren
(down-loadable) Mikrocode-Geräten, bei denen das Verhalten bzw. der Betriebsablauf von festen,
nicht rekonfigurierbaren Hardwarebetriebsmitteln zur Ausführung von Programmen wahlwei
se verändert werden kann, in dem eine bestimmte Version des Mikrocodes (Programmier
sprache für ein Steuerwerk) verwendet wird, der in einen programmierbaren Steuerspeicher
geladen wird. Ein Beispiel hierfür findet sich in J.L. Hennessy und D.A. Paterson, Computer
Architecture: A Quantitative Approach, Morgan Kaufmann, 1990. In einigen solcher Systeme
kann der Mikrocode vom Benutzer nach der Herstellung geschrieben oder verändert werden.
Siehe beispielsweise W.T. Wilner "Design of the Burroughs B1700" in AFIPS Fall Joint
Computer Conference, AFIPS Press, 1972; W.G. Matheson, "User Microprogrammability
in the HP-21MX Minicomputer", in Proceedings of the Seventh Annual Microprogramming
Workshop, IEEE Computer Society Press, 1974. Weil die zugrundeliegende Computerhard
ware in solchen bekannten Systemen nicht selbst rekonfigurierbar ist, zeigen solche Systeme
keine optimierte Rechenleistung, wenn man an einen großen Bereich von Problemtypen
denkt. Insbesondere sind solche Systeme generell nicht in der Lage, den Datenpfad zu
ändern, sind durch die Größe bzw. Speichergröße der Ausführungseinheiten begrenzt und
sind nur in der Lage, Wechsel-Befehlssätze (alternate instruction sets) für dieselbe Hardware
zu schaffen. Solche Systeme stellen keinen Einzelkompiler zur Verfügung, der in der Lage
ist, zwei verschiedene Architekturen zu kompilieren bzw. zu übersetzen.
Ein zweiter bekannter Lösungsansatz beinhaltet ein System, bei dem die Hardware, die einen
Rechenvorgang ausführt, mit Hilfe einer programmierbaren Logik realisiert wird. Es gibt
Beispiele hierfür, die feldprogrammierbare Logikschaltungen bzw. feldprogrammierbare
Gatetrarrays (FPGAs) von der Stange verwenden (PAM, SPLASH, VCC) und anwender
programmierbare Logik (TERAMAC). Siehe beispielsweise: P. Bertin et al., Programmable
Active Memories: A Performance Assessment,, Tech. Rep. 24, Digital Paris Research
Laboratory, März 1993; D.A. Buell et al., Splash 2: FPGAs in a Custom Computing
Machine, IEEE Computer Society Press, 1996; S. Casselman, "Virtual Computing and The
Virtual Computer", in IEEE Symposium on FPGAs for Custom Computing Macines, IEEE
Computer Society Press, 1994; R. Amerson et al., "Teramac-Configurable Custom
Computing", in IEEE Symposium on FPGAs for Custom Computing Machines, IEEE
Computer Society Press, 1995. Im allgemeinen erfordern es diese Technologien, daß eine
Anwendung bzw. Applikation hinsichtlich der Hardwarebeschreibung spezifiziert wird, was
entweder in Form einer schematischen Beschreibungssprache oder unter Verwendung einer
Hardware-Beschreibungssprache, wie beispielsweise VHDL, erfolgt, anstatt daß man
Software für einen Computer schreibt, der durch FPGAs festgelegt wird. Beispielsweise wird
ein PAM programmiert, indem man ein C++-Programm schreibt, das eine Netzliste
erzeugt, die die Konfiguration und Architektur der Gatter bzw. Schaltelemente (Gate)
beschreibt. Ein Applikationsentwickler spezifiziert eine Datenstruktur, die eine Hardware
beschreibung zur Umsetzung der Applikation beschreibt, anstatt daß er eine Spezifizierung
eines Applikationsalgorithmusses kompiliert. SPLASH wird auf eine der folgenden drei Arten
programmiert: 1) Ein schematisches Erfassungspaket (schematic capture package) zum
Aufbauen einer Hardwarespezifizierung, basierend auf einem Schaltschema bzw. schemati
schen Diagramm; 2) einer Hardware-Beschreibungssprache (wie beispielsweise VHDL), die
mit einem Synthese-Paket gekoppelt ist, das VHDL in einfache Gate-Anweisungen
(primitives) übersetzt; oder 3) einer DBC, d. h. einer C-Untersprache, die in Gate-Be
schreibungen kompiliert wird. TERAMAC wird mit Hilfe eines schematischen
Erfassungspakets oder einer Hardware-Beschreibungssprache programmiert. Keines dieser
Programmierverfahren beschreibt Algorithmenschritte; statt dessen sorgen sie für einen
Mechanismus zur Spezifizierung von Hardware-Architekturen.
Ein dritter bekannter Lösungsansatz beinhaltet rekonfigurierbare Computer, die Software
programme ausführen. Der RISC-4005-Prozessor und der Hokie-Prozessor realisieren
Standard-Mikroprozessoren innerhalb von FPGAs. Der RISC 4005 ist im wesentlichen die
Demonstration einer eingebetteten (embedded) zentralen Prozessoreinheit (CPU) innerhalb
eines kleinen Abschnittes eines FPGAs, dessen weitere Betriebsmittel (resources) einigen
Coprozessor-Funktionen zugeordnet sind. Hokie wird als Lernübung für Informatikstudenten
oder Elektrotechnikstudenten verwendet. Eine Befehlsatzarchitektur (instruction set
architecture; ISA) wird vor der Kompilierung und Ausführung des Programmes ausgewählt
und diese Befehlsatzarchitektur wird dann fortwährend verwendet. Außerdem wird der
Bitstrom für den Prozessor separat von der Software abgespeichert, die dieser ausführt. Ad
hoc-Verfahren werden verwendet, um sicherzustellen, daß ein korrekter Bitstrom geladen
wird. Siehe beispielsweise P. Athanas und R. Hudson, "Using Rapid Prototyping to Teach
the Design of Complete Computing Solutions", in IEEE Symposium on FPGAs for Custom
Computing Machines, IEEE Computer Society Press, 1996. Diese Systeme sorgen nicht für
eine Laufzeit-Rekonfigurierung (während der Ausführung des Programm).
Bei einem weiteren bekannten, rekonfigurierbaren Computer handelt es sich um den
dynamischen Befehlsatz-Computer (Dynamic Instruction Set Computer; DISC), der eine
rekonfigurierbare Prozessoreinheit verwendet. Siehe beispielsweise M.J. Wirthlin und B.L.
Hutchings, "A Dynamic Instruction Set Computer", in IEEE Symposium on FPGAs for
Custom Computing Machines, IEEE Computer Society Press, 1995; D.A. Clark und
B.L. Hutchings, "The DISC Programming Environment", in IEEE Symposium on FPGAs for
Custom Computing Machines, IEEE Computer Society Press, 1996. Die Ausführung und
Konfiguration der FPGA der DISC-Prozessoreinheit wird mit Hilfe eines Mikrocontrollers
gesteuert, der ebenfalls in Form eines FPGAs realisiert ist. Der Mikrocontroller wird in
einem Dialekt der C-Programmiersprache programmiert. Der Kompiler bzw. das
Übersetzungsprogramm für diesen C-Dialekt erkennt, daß gewisse Programmanweisungen
durch entsprechende Hardware-Konfigurationen der Verarbeitungseinheit ausgeführt werden
sollen und sendet einen Mikrocontroller-Code aus, der veranlaßt, daß der richtige
Konfigurations-Bitstrom während der Ausführung des Programms in die Verarbeitungseinheit
geladen wird. Der Fachmann auf diesem Gebiet wird erkennen, daß der Mikrocontroller
seinerseits einen festen Befehlssatz aufweist und daß der Kompiler diesen festen Befehlssatz
kompiliert bzw. übersetzt. Es bestehen mehrere Nachteile hinsichtlich dieser von einem DISC
verwendeten Architektur. Weil der Mikrocontroller fest bzw. statisch ist, kann dieser nicht
optimiert werden, um verschiedene Arten von Verarbeitungseinheiten zu steuern. Die
Konfigurations-Bitströme werden in externer Hardware außerhalb des Speicherplatzes des
Mikrocontrollers gespeichert, weshalb das System nicht selbst-enthaltend ist. Außerdem
offenbaren die vorstehend im Wege der Bezugnahme in dieser Offenbarung mit beinhalteten
Dokumente nicht, wie ein DISC zum Parallelrechnen, zur globalen Signalisierung bzw.
systemweiten Datenübermittlung und zum Takten oder zur Handhabung von Interrupts bzw.
Unterbrechungsanweisungen verwendet werden könnte. Schließlich werden neue Befehle nur
als Einzelgrößen spezifiziert. Der Kompiler sendet nur Befehle für einen Befehlssatz aus, läßt
es jedoch zu, daß einzelne Befehle vom Programmierer hinzugefügt werden. Jede
Konfigurierung der Verarbeitungseinheit ist ein einzelner Befehl in Form von Hardware, der
von dem Programmierer zur Verfügung gestellt wird, wodurch die mögliche Flexibilität
eingeschränkt wird.
Ein vierter bekannter Lösungsansatz besteht darin, Systeme zu mischen, wobei verschiedene
Teile des Algorithmus bzw. Rechenvorgangs auf verschiedene Komponenten bzw. Elemente
des Systems abgebildet werden. Ein bekanntes System bildet einen Algorithmus, der in einem
erweiterten C-Dialekt ausgedrückt ist, auf eine gemischte FPGA/DSP-Architektur ab. Der
Benutzer markiert ausdrücklich Abschnitte des Eingabeprogramms zur Zuordnung zum DSP,
während der Rest des Codes in Gates zur FPGA-Realisierung hinein kompiliert wird. Solche
Systeme erfordern spezialisierte Werkzeuge bzw. Tools, weil sie eine nicht übliche Syntax
für ISA-Änderungen verwenden. Außerdem ist der Betrieb solcher Systeme mühsam, was
an der Verwendung von Netzlisten zur FPGA-Spezifizierung von Abschnitten des Programms
liegt. Solche Programme schaffen keine tatsächliche Hardware-Rekonfigurierung, sondern
sorgen lediglich für die Fähigkeit zur Abbildung auf ein anderes Teil der Hardware.
In gleicher Weise verwenden einige Systeme einen Standard-Mikroprozessor mit einigen
konfigurierbaren Logik-Betriebsmitteln. Diese Betriebsmittel (Resourcen) werden verwendet,
um spezielle Befehle bzw. Instruktionen zu realisieren, die die Ausführung von bestimmten
Programmen beschleunigen. Siehe beispielsweise R. Razdan und M.D. Smith, "A
High-Performance Microarchitecture with Hardware-Programmable Functional Units", in
Proceedings of the Twenty-Seventh Annual Microprogramming Workshop, IEEE Computer
Society Press, 1994. Solche Systeme werden typischerweise als Zentralprozessoreinheit
(CPU) realisiert, und zwar mit einem Abschnitt des Silizium-Chips, der verwendet wird, um
einen FPGA zu realisieren. Die CPU besitzt einen festen bzw. fixierten Datenpfad, mit dem
die FPGAs verbunden sind. Der Kompiler kombiniert ausgewählte Assembler-Codesequenzen
in Einzelbefehlanweisungen zur Ausführung durch ein FPGA. Jedoch arbeiten solche Systeme
generell nur auf Ebenen eines bestehenden Assembler-Sprachcodes und erfordern eine
angrenzende, feste Befehlsatzarchitektur (nachfolgend als ISA oder auch IS-Architektur
bezeichnet) als Ausgangspunkt. Außerdem halten solche Systeme generell keine Laufzeit-
Rekonfigurierung bereit. Schließlich sind solche Systeme nicht weit anwendbar und sorgen
üblicher Weise nicht für eine deutliche Geschwindigkeitsverbesserung im Vergleich zu
anderen herkömmlichen Systemen.
Obwohl die zuvor genannten Systeme jeweils ein gewisses Niveau für die Rekonfigurierbar
keit von Hardware schaffen, beschreibt keines von diesen ein Verfahren oder eine
Vorrichtung zur Zusammenfassung von binären Maschinensprache-Befehlen und von Daten
gemeinsam mit den Hardware-Konfigurierungen, die notwendig sind, um die Maschinenbe
fehle in der in diesem Patent beanspruchten Art und Weise auszuführen. Außerdem
offenbaren die bekannten Systeme weder eine Mehrfacharchitektur-ISA-Rekonfiguration auf
der Ebene der Granularität, die vergleichbar zu RISC- oder CISC-Befehlen ist, die hierin
beansprucht werden, noch Kompilierungsverfahren innerhalb der C-Sprachensyntax zum
Ausführen auf dynamisch rekonfigurierten IS-Architekturen, wie diese hierin beansprucht
werden.
Erfindungsgemäß wird ein System und ein Verfahren zur Kompilierung von Quellcode
geschaffen, der beispielsweise in C oder Pascal geschrieben ist, um ausführbare Dateien bzw.
Programme zur Verwendung in einer dynamisch rekonfigurierbaren Prozessoreinheit zu
erzeugen, die eine wahlweise veränderbare interne Hardwareorganisation aufweist. Bei einer
Ausführungsform können erfindungsgemäß Maschinenbefehle und Daten gemeinsam mit
Hardware-Konfigurationen zusammengefaßt werden, welche erforderlich sind, um die
Maschinenbefehle auszuführen. In der rekonfigurierbaren Architektur besteht jeder einzelne
Prozessor beispielsweise aus: Einer rekonfigurierbaren Prozessor-Hardware, wie beispiels
weise einem vollständig FPGA-basierten Prozessor, einem Datenspeicher und einem
Programmspeicher, einer Parallel-Verbindungseinheit und einem wiederbeschreibbaren
Speicher für FPGA-Konfigurationsbits. Durch dynamisches Laden von FPGA-Konfigurations
bitströmen realisiert die vorliegende Erfindung einen dynamischen ISA-Computer, der eine
hohe Leistungsfähigkeit erreicht, in dem ISAs verwendet werden, die für spezielle Phasen
der Ausführung der Applikation optimiert sind.
Bei der erfindungsgemäßen Architektur werden Applikationen als Software zur Verfügung
gestellt, wird Hardware in der Form von Schaltungen (ein zentrales Service-Modul,
Prozessormodule, Eingabe/Ausgabe-Module (I/O)) sowie Bitströme für Befehlsatz
architekturen (ISAs) bereitgestellt, die auf den FPGAs des Prozessormoduls beheimatet sind.
Ein ISA bzw. eine IS-Architektur ist ein primitiver Satz von Befehlen, der dazu verwendet
werden kann, einen Computer zu programmieren. Applikationssoftware wird mit Hilfe von
FPGAs ausgeführt, die als ISAs auf den Prozessormodulen konfiguriert sind.
Die vorliegende Erfindung beschreibt ein System, das ausgelegt ist, so daß FPGA-
Konfigurationsbitströme statisch während der Kompilierung mit dem Programm verbunden
bzw. verknüpft werden können, das diese ausführt, und daß diese zum dynamischen Schalten
von ISAs und/oder FPGA-Applikationselementrealisierungen unabhängig und in Echtzeit
programmiert werden können.
Die ISAs führen Programmbefehle aus, die in RAM 133 gespeichert sind. Diese Programm
befehle umfassen wahlweise eine oder mehrere Rekonfigurations-Übersetzungsanweisungen
(reconfiguration directives). Bei Auswahl einer Rekonfigurations-Übersetzungsanweisung
bzw. Rekonfigurations-Betriebsanweisung wird die Hardware rekonfiguriert, um für eine
optimierte Realisierung einer bestimmten Befehlsatzarchitektur zu sorgen. Zusätzlich zu ihrer
spezifischen Funktionalität umfaßt jede ISA einen Befehl oder eine Übersetzungsanweisung,
der bzw. die veranlaßt, daß eine andere ISA in den rekonfigurierbaren Prozessor geladen
wird, so daß die Ausführung der Software anschließend unter Verwendung der neuen ISA
fortfährt.
Weil die Speicherstelle der ISA-Bitströme im Speicher ein Argument für den Rekonfigura
tionsbefehl darstellt, wird diese Speicherstelle vorzugsweise zum Zeitpunkt der Verbindung
(link) oder des Ladens bestimmt, was auch für die Speicherstellen für Funktions-Aufrufziele
und -Variablen gilt. Ebenso wie für diese Funktionen und Variablen hat es sich als
wünschenswert herausgestellt, symbolische Namen für die Adressen eines Bitstroms zu
verwenden. Die vorliegende Erfindung verwendet ein Objektdatei-Format, das die
Vorstellung einer ausführbaren Software auf ISA-Bitströme erweitert. Daraus resultieren
einige Vorteile, wie beispielsweise:
- - Tools bzw. Werkzeuge können leicht aufgebaut bzw. erstellt werden. Weil die Rekonfigurierung als ein Befehl und Bitströme als Daten behandelt wird, können standardmäßige Software-Verbindungsverfahren eingesetzt werden, um softwa regesteuerte Hardwareänderungen mit den erforderlichen Bitstrom zu binden. Keine neue Softwaretechnologie über die Bitstrom-als-Daten-Abstraktion muß erzeugt werden.
- - Flexibilität beim Laden. Indem Rekonfigurationsdaten auf einen Teil des Ausführ baren isoliert werden, wird die Fähigkeit Konfigurationen in geschützte Bereiche des Speichers zu laden, vereinfacht. Mit Gesichtspunkten der Speicherausrichtung wird man auf strukturierte Weise leicht fertig, wie nachfolgend ausführlicher beschrieben werden wird.
- - Das Laden wird vereinfacht. Alle Daten, die erforderlich sind, um das Programm auszuführen, werden in einer einzigen Datei aufbewahrt, so daß keine Ladezeit- Identifikation und keine Lokalisierung von Bitströmen ausgeführt zu werden braucht, falls das Ausführbare bzw. das Programm statisch verbunden wird.
- - Das Konfigurationsmanagement wird vereinfacht. Nur eine einzige Datei braucht zur gleichen Zeit beibehalten werden, sobald ein Programm gebunden worden ist. Dies vereinfacht die Vorgehensweise zur Verteilung von Applikationen auf einzelne Geräte und entfernte Stellen.
Nachfolgend wird die Erfindung in beispielhafter Weise und unter Bezugnahme auf die
Zeichnungen beschrieben, in denen:
Fig. 1 ein Blockschema der Hardwarekomponenten einer dynamisch rekonfigurier
baren Rechenarchitektur ist;
Fig. 1A ein Blockschema eines erfindungsgemäßen Prozessormoduls ist;
Fig. 1B und 1C Blockschema einer Systemarchitektur zur Realisierung der Erfindung sind, die
ein Beispiel für die Rekonfiguration eines FPGAs zeigen;
Fig. 2 ein Beispiel für ein Programmlisting ist, das Rekonfigurations-Übersetzungs
anweisungen enthält;
Fig. 3 ein Flußdiagramm für ein Gesamt-Kompilierverfahren ist, das von einem
Kompiler bzw. Übersetzungsprogramm zum dynamisch rekonfigurierbaren
Rechnen ausgeführt wird;
Fig. 3A und 3B ein Flußdiagramm von bevorzugten Kompiliervorgängen sind, die von einem
Kompiler zum dynamisch rekonfigurierbaren Rechnen ausgeführt werden;
Fig. 3C ein Flußdiagramm von weiteren Kompiliervorgängen ist, die von einem
Kompiler zum dynamisch rekonfigurierbaren Rechnen ausgeführt werden;
Fig. 4 ein Blockschema eines Kompiliersystems gemäß der vorliegenden Erfindung
ist;
Fig. 5 ein Schema eines Objektdateiformats aus dem Stand der Technik ist;
Fig. 6 ein Flußdiagramm für ein Verfahren zum Erhalten eines Programmzustands
gemäß der vorliegenden Erfindung ist;
Fig. 7 ein Flußdiagramm für ein Verfahren zur strukturierten Rekonfiguration gemäß
der vorliegenden ist; und
Fig. 8A, 8B und 8C Diagramme von Stapelinhalten während einer strukturierten Rekonfiguration
gemäß der vorliegenden Erfindung darstellen.
Fig. 9 ein Blockdiagramm einer bevorzugten Ausführungsform eines Systems für ein
skalierbares, paralleles, dynamisch rekonfigurierbares Berechnen, gemäß der
Erfindung;
Fig. 10 ein Blockdiagramm einer bevorzugten Ausführungsform einer S-Einrichtung
gemäß der Erfindung;
Fig. 11A ein beispielhaftes Programmauflisten, das Rekonfigurationsanweisungen enthält;
Fig. 11B ein Ablaufdiagramm von herkömmlichen Kompilieroperationen, die während der
Kompilation einer Folge von Programmbefehlen durchgeführt worden sind;
Fig. 11C und 11D ein Ablaufdiagramm von bevorzugten Kompilieroperationen, welche
mittels eines Kompilierers für ein dynamisch rekonfigurierbares Berechnen
durchgeführt worden sind;
Fig. 12 ein Blockdiagramm einer bevorzugten Ausführungsform einer dynamisch
rekonfigurierbaren Verarbeitungseinheit der Erfindung;
Fig. 13 ein Blockdiagramm einer bevorzugten Ausführungsform einer Befehlsabrufein
heit der Erfindung;
Fig. 14 ein Zustandsdiagramm, das eine bevorzugte Gruppe von Zuständen zeigt, die
durch eine Befehlszustands-Ablaufsteuereinheit der Erfindung gestützt sind;
Fig. 15 ein Zustandsdiagramm, das eine bevorzugte Gruppe von Zuständen zeigt, welche
durch Unterbrechungslogik der Erfindung getragen sind;
Fig. 16 ein Blockdiagramm einer bevorzugten Ausführungsform einer Datenoperations
einheit der Erfindung;
Fig. 17A ein Blockdiagramm einer ersten beispielhaften Ausführungsform der Daten
operationseinheit, welche durch die Ausführung einer universellen Außenschleifen-
Befehlssatz-Architektur konfiguriert ist;
Fig. 17B ein Blockdiagramm einer zweiten beispielhaften Ausführungsform der Daten
operationseinheit, welche für die Verwirklichung einer Innenschleifen-Befehlssatz-
Architektur konfiguriert ist;
Fig. 18 ein Blockdiagramm einer bevorzugten Ausführungsform einer Adressen
operationseinheit der Erfindung;
Fig. 19A ein Blockdiagramm einer ersten beispielhaften Ausführungsform der Adressen
operationseinheit, welche für die Verwirklichung einer universellen Außen
schleifen-Befehlssatz-Architektur konfiguriert ist;
Fig. 19B ein Blockdiagramm einer zweiten beispielhaften Ausführungsform der Adressen
operationseinheit, welche für die Verwirklichung einer Innenschleifen-Befehlssatz-
Architektur konfiguriert ist;
Fig. 20A ein Diagramm, das eine beispielhafte Zuordnung von rekonfigurierbaren
Hardware-Ressourcen zwischen der Befehlsabrufeinheit, der Datenopera
tionseinheit und der Adressenoperationseinheit für eine Außenschleifen-
Befehlssatz-Architektur zeigt;
Fig. 20B ein Diagramm einer beispielhaften Zuordnung von rekonfigurierbaren Hardware-
Ressourcen zwischen der Befehlsabfrageeinheit der Datenoperationseinheit und der
Adressenoperationseinheit für eine Innenschleifen-Befehlssatz-Architektur;
Fig. 21 ein Blockdiagramm einer bevorzugten Ausführungsform einer T-Einrichtung
der Erfindung;
Fig. 22 ein Blockdiagramm einer Verbindungs-Ein-/Ausgabeeinheit der
Erfindung;
Fig. 23 ein Blockdiagramm einer bevorzugten Ausführungsform einer
Ein-/Ausgabe-T-Einrichtung der Erfindung;
Fig. 24 ein Blockdiagramm einer bevorzugten Ausführungsform einer universellen
Verbindungsmatrix der Erfindung, und
Fig. 25A und 25B ein Ablaufdiagramm eines bevorzugten Verfahrens für ein skalierbares, paralleles,
dynamisch rekonfigurierbares Berechnen gemäß der Erfindung.
Die vorliegende Erfindung ist auf ein Kompiliersystem und ein Verfahren zur Erzeugung
ausführbarer Dateien zur Verwendung bei einer dynamisch rekonfigurierbaren Prozesso
reinheit gerichtet, deren Hardware-Konfiguration nachfolgend insbesondere anhand der
Fig. 9 bis 25B beschrieben wird.
In Fig. 1 ist ein Blockschema eines skalierbaren, parallelen, dynamisch rekonfigurierbaren
Computers 10 zum Ausführen von Objektdateien gezeigt, die gemäß der vorliegenden
Erfindung erzeugt wurden. Der Computer 10 umfaßt vorzugsweise mindestens eine
S-Einrichtung 12, eine T-Einrichtung 14, die jeder S-Einrichtung 12 entspricht, eine
Mehrzweck-Verbindungsmatrix (General Purpose Interconnect Matrix; GPI-Matrix) 16,
mindestens eine Eingabe-/Ausgabe-T-Einrichtung 18, eine oder mehrere Eingabe-/Aus
gabeeinrichtungen 20 und eine Master-Zeitbasiseinheit 22. Bei der bevorzugten Ausführungs
form umfaßt der Computer 10 mehrere S-Einrichtungen 12 und somit auch mehrere
T-Einrichtungen 14 und außerdem mehrere Eingabe-/Ausgabe-T-Einrichtungen 18 und mehrere
Eingabe-/Ausgabeeinrichtungen 20.
Jede der S-Einrichtungen 12, T-Einrichtungen 14 und Eingabe-/Ausgabe-T-Einrichtungen 18
hat einen Mastertakteingang, der mit dem Taktausgang der Masterzeitbasiseinheit 22
verbunden ist. Jede S-Einrichtung 12 hat einen Eingang und einen Ausgang, der mit ihrer
entsprechenden T-Einrichtung 14 verbunden ist. Zusätzlich zu dem Eingang und dem
Ausgang, die mit der entsprechenden S-Einrichtung 12 verbunden sind, weist jede
T-Einrichtung 14 einen Wegsteuerungseingang (routing input) und einen Wegsteuerungsausgang
auf, die mit der GPI-Matrix 16 verbunden sind. Dementsprechend hat jede Einga
be-/Ausgabe-T-Einrichtung 18 einen Eingang und einen Ausgang, die mit einer Einga
be-/Ausgabeeinrichtung 20 verbunden sind, sowie einen Wegsteuerungseingang und einen
Wegsteuerungsausgang, der mit der GPI-Matrix 16 verbunden ist.
Bei jeder S-Einrichtung 12 handelt es sich um einen dynamisch rekonfigurierbaren Rechner.
Die GPI-Matrix 16 stellt ein paralleles Punkt-zu-Punkt-Verbindungsmittel bzw. ein paralleles
Maschen-Verbindungsmittel dar, das die Kommunikation zwischen den T-Einrichtungen 14
erleichtert. Der Satz von T-Einrichtungen 14 und die GPI-Matrix 16 bilden ein paralleles
Punkt-zu-Punkt-Verbindungsmittel für einen Datentransfer zwischen Speichern, die der
S-Einrichtung 12 zugeordnet sind. In ähnlicher Weise bilden die GPI-Matrix 16, der Satz von
T-Einrichtungen 14 und der Satz von Eingabe-/Ausgabe-T-Einrichtungen 18 ein paralleles
Punkt-zu-Punkt-Verbindungsmittel für einen Eingabe-/Ausgabetransfer zwischen
S-Einrichtungen 12 und jeder Eingabe-/Ausgabeeinrichtung 20. Die Master-Zeitbasiseinheit 22
umfaßt einen Oszillator, der jeder S-Einrichtung 12 und jeder T-Einrichtung 14 ein Master-
Taktsignal zur Verfügung stellt.
In einer beispielhaften Ausführungsform ist jede S-Einrichtung 12 durch Verwendung eines
Xilinx XC4013 (Xilinx, Inc., San Jose, CA) feldprogrammierbaren Gate-Arrays (FPGA)
bzw. Logikanordnung ausgeführt, das mit einem 64 MB Direktzugriffsspeicher (RAM)
verbunden ist. Jede T-Einrichtung 14 ist durch Verwendung von annähernd 50% der
rekonfigurierbaren Hardware-Betriebsmittel in einem Xilinx XC4013 FPGA ausgeführt,
ebenso jede Eingabe-/Ausgabe-T-Einrichtung 18. Die GPI-Matrix 16 ist als ein ringförmiges
Verbindungsmaschennetz ausgeführt. Die Master-Zeitbasiseinheit 22 ist ein Taktoszillator,
der mit einer Taktverteilungsschaltung verbunden ist, um für eine systemweite Frequenzrefe
renz zu sorgen, wie nachfolgend anhand der Fig. 9 bis 25B beschrieben wird.
Vorzugsweise übertragen die GPI-Matrix 16, die T-Einrichtungen 14 und die Ein
gabe-/Ausgabe-T-Einrichtungen 18 Information entsprechend dem Punkt-zu-Punkt-Protokoll des
ANSI/IEEE-Standard 1596-1992, wodurch ein skalierbares kohärentes Interface (SCI)
definiert ist.
In Fig. 1A ist ein Blockschema eines Prozessormoduls 130 gezeigt, das in einer
Ausführungsform der vorliegenden Erfindung verwendet wird. Der S-Einrichtungs-FPGA 12
ist mit einem zugeordneten bzw. reservierten Bitstromspeicher 132 und einem Programm-/Da
tenspeicher 133, einer oder mehreren T-Einrichtungen 14 und einer Takterzeugungs
schaltung verbunden, wie beispielsweise einen Taktgenerator 131, um ein Prozessormodul
130 zu bilden. Das Modul 130 ist mit anderen, vergleichbaren Modulen über die
T-Einrichtungen 14 in einer solchen Art und Weise verbunden, die einen Parallelbetrieb
erleichtert. Der Programm-/Datenspeicher 133 speichert Programmbefehle und ist in Form
eines üblichen RAMs realisiert. Der Bitstromspeicher 132 speichert Bitströme, die die FPGA-Kon
figurationen beschreiben. In einer Ausführungsform ist der Programm-/Datenspeicher
133 als dynamisches RAM (DRAM) implementiert und der Bitstromspeicher 132 als
statisches RAM (SRAM).
In den Fig. 1B und 1C sind Beispiele für eine FPGA-Rekonfiguration gezeigt, um ISAs
in rekonfigurierbarer Architektur zu realisieren. Die Figuren zeigen Blockschema einer
Systemarchitektur zur Realisierung der vorliegenden Erfindung, wobei die S-Einrichtungs-
FPGA 12 umprogrammiert ist, so daß sie eine arithmetische Logikeinheit (ALU) 143 in
Fig. 1B umfaßt sowie einen finiten Impulsantwortfilter (FIR) 148 in Fig. 1C. Ein
Bitstrom-RAM 132 und ein Programm-/Daten-RAM 133 ist vorgesehen. Der Speicherbus
149 hält einen Kommunikationskanal zwischen dem S-Einrichtungs-FPGA 12 und RAM 132
und 133 bereit. Die FPGA-Konfigurationshardware 140 ermöglicht die Rekonfiguration des
S-Einrichtungs-FPGAs 12 entsprechend den ISA-Bitströmen vom Bitstrom-RAM 132.
Konfigurationen des S-Einrichtungs-FPGA 12 umfassen beispielsweise Datenregister bzw.
Datenspeicher 141, Adreßregister 142, einen Registermultiplexer 144 und ein Speicherdaten
register 145. Jede oder alle dieser Komponenten kann modifiziert oder in anderen
Konfigurationen entfernt werden, was von dem Bitstrom abhängt. Beispielsweise taucht Alu
143 in der in Fig. 1B gezeigten Konfiguration auf, ist aber in der Konfiguration aus Fig.
1C durch den FIR-Filter 148 ersetzt.
Vorzugsweise speichert der Computer 10 Programmbefehle in RAM wahlweise, und zwar
einschließlich von Rekonfigurations-Übersetzungsanweisungen zur Rekonfigurierung von
Computer 10, indem die Konfiguration der S-Einrichtung 12 geändert wird. In Fig. 2 ist
ein beispielhaftes Programmlisting 50 gezeigt, das einen Satz von Außenschleifenabschnitten
52, einen ersten Innenschleifenabschnitt 54, einen zweiten Innenschleifenabschnitt 55, einen
dritten Innenschleifenabschnitt 56, einen vierten Innenschleifenabschnitt 57 und einen fünften
Innenschleifenabschnitt 58 umfaßt. Wie der Fachmann weiß, verweist der Begriff
"Innenschleife" auf einen iterativen Abschnitt eines Programms, der dafür verantwortlich ist,
einen ganz bestimmten Satz von verwandten Operationen auszuführen; und der Begriff
"Außenschleife" verweist auf die Abschnitte eines Programms, die hauptsächlich dafür
verantwortlich sind, Mehrzweck-Operationen bzw. universelle Operationen und/oder eine
Übertragungssteuerung von einem Innenschleifenabschnitt zum anderen durchzuführen. Im
allgemeinen führen die Innenschleifenabschnitte 54 bis 58 eines Programms spezifische
Operationen an möglicherweise großen Datensätzen durch. Eine oder mehrere der
Rekonfigurations-Übersetzungsanweisungen kann einem vorgegebenen Innenschleifenabschnitt
54, 55, 56, 57 oder 58 zugeordnet sein, so daß sich eine geeignete ISA im Kontext befinden
wird, wenn der Innenschleifenabschnitt ausgeführt wird. Im allgemeinen werden für ein
beliebiges vorgegebenes Programm die Außenschleifenabschnitte 52 des Programmlistings
50 eine Vielzahl von Mehrzweck-Befehlsarten umfassen, während die Innenschleifen
abschnitte 54, 56 des Programmlistings 50 aus vergleichsweise wenig Befehlsarten bestehen
werden, die dazu verwendet werden, einen spezifischen Satz von Operationen auszuführen.
In einer beispielhaften Programmauflistung 50 erscheint eine erste Rekonfigurations-
Übersetzungsanweisung zu Beginn des ersten Innenschleifenabschnitts 54 und erscheint eine
zweite Rekonfigurations-Übersetzungsanweisung am Ende des ersten Innenschleifenabschnitts
54. Dementsprechend erscheint eine dritte Rekonfigurations-Übersetzungsanweisung zu
Beginn des zweiten Innenschleifenabschnitts 55; eine vierte Rekonfigurations-Übersetzungs
anweisung erscheint zu Beginn des dritten Innenschleifenabschnitts 56 usw. Jeder
Rekonfigurationsbefehl verweist vorzugsweise auf einen Konfigurationsdatensatz, der von
einem Bitstrom dargestellt wird. Der Bitstrom spezifiziert eine interne Hardware-Organisation
für jede S-Einrichtung 12, und zwar einschließlich einer dynamisch rekonfigurierbaren
Prozessoreinheit (nachfolgend DRPU genannt), einer Adreß-Betriebseinheit (AOU), einer
Befehl-Abrufeinheit (IFU) und einer Datenbetriebseinheit (DOU) (nicht gezeigt). Eine solche
Hardware-Organisation ist gedacht und optimiert zur Realisierung einer bestimmten
Befehlsatzarchitektur (Instruction Set Architecture; ISA). Eine IS-Architektur ist ein einfacher
Satz oder Kernsatz von Befehlen bzw. Instruktionen, die dazu verwendet werden können, um
einen Rechner zu programmieren. Eine IS-Architektur definiert Befehlsformate, Operations
codes, Datenformate, Adressiermodes, Ausführungs-Steuerflags und programmzugängliche
Register bzw. Verzeichnisse. Bei der rekonfigurierbaren Rechnerarchitektur, die zur
Ausführung von Objektdateien eingesetzt wird, die gemäß der vorliegenden Erfindung erzeugt
werden, kann jede S-Einrichtung sehr rasch und in Echtzeit konfiguriert werden, um
unmittelbar eine Folge von IS-Architekturen durch Verwendung eines eindeutigen
Konfigurationsdatensatzes für jede gewünschte IS-Architektur zu realisieren, die durch einen
Bitstrom spezifiziert wird. Somit wird jede IS-Architektur mit einer speziellen, internen
Hardware-Organisation realisiert, wie sie durch einen entsprechenden Konfigurationsdatensatz
spezifiziert wird. Folglich entsprechen in dem Beispiel aus Fig. 2 die ersten fünf
Innenschleifenabschnitte 54 bis 58 jeweils einer eindeutigen IS-Architektur 1, 2, 3, 4 bzw.
k. Der Fachmann erkennt, daß jede nachfolgende IS-Architektur nicht eindeutig zu sein
braucht. Folglich könnte ISA k 1, 2, 3, 4 oder irgendeine andere ISA sein. Der Satz von
Außenschleifenabschnitten 52 entspricht ebenfalls einer eindeutigen ISA, nämlich ISA 0.
Während der Programmausführung kann die Auswahl nachfolgender Rekonfigurations-
Übersetzungsanweisungen von den Daten abhängen. Bei Auswahl einer gegebenen
Rekonfigurations-Übersetzungsanweisung werden im Anschluß daran Befehle bzw.
Anweisungen nach einer entsprechenden ISA über eine eindeutige S-Einrichtungs-
Hardwarekonfiguration ausgeführt, wie sie durch den Bitstrom spezifiziert wird, auf den
durch die Rekonfigurations-Übersetzungsanweisung verwiesen wird.
Mit der Ausnahme von Rekonfigurations-Übersetzungsanweisungen umfaßt das beispielhafte
Programmlisting 50 aus Fig. 2 übliche Hochsprachen-Anweisungen, beispielsweise
Anweisungen, die entsprechend der C-Programmiersprache geschrieben sind.
Der Fachmann erkennt, daß der Einbau von einer oder mehreren Rekonfigurations-
Übersetzungsanweisungen in einer Folge von Programmanweisungen einen Kompiler bzw.
ein Übersetzungsprogramm erfordert, der bzw. das modifiziert wurde, um den Re
konfigurations-Übersetzungsanweisungen Rechnung zu tragen. Folglich umfaßt das
erfindungsgemäße Kompiliersystem und das erfindungsgemäße Verfahren Vorgänge
einschließlich von Rekonfigurations-Übersetzungsanweisungen durch Zusammenfassung von
Verweisungen auf Bitströme, die Hardware-Konfigurationen beschreiben, und durch
Übersetzung bzw. Kompilierung von Quellcode entsprechend den Spezifikationen von
bestimmten ISAs, die durch die Rekonfigurations-Übersetzungsanweisungen identifiziert
werden.
In einer Ausführungsform der vorliegenden Erfindung unterstützen alle dem Computer 10
zur Verfügung stehende ISAs die folgenden Vorgänge:
- - Einen Stapelzeiger (stack pointer; SP) und ein Zeiger Adreßverzeichnis für nächste Befehle (Next Instruction Pointer Address Register; NIPAR; auch bekannt als Programmzähler (PC)), um einen stapel-basierten Speicher von Informationen und Parametern während der Rekonfiguration zu realisieren;
- - geeignete Befehle in Assemblersprache zur Flußsteuerung, und zwar einschließlichbeispiels weise von "jsr" bzw. "jump to subroutine" für einen Unterprogramm-Einsprung und "rts" bzw. "return to subroutine" für eine Unterprogramm-Rückkehr; und
- - eine geeignete Speicher-Schnittstelleneinheit zum Speichern und Laden von Verzeichniswerten in bzw. aus dem Stapel.
Die Betriebsweise dieser Komponenten zur Realisierung einer Rekonfiguration wird
nachfolgend anhand der Fig. 6 bis 8C beschrieben.
In Fig. 4 ist ein Blockschema eines erfindungsgemaßen Kompiliersystems dargestellt. Das
Kompiliersystem und das erfindungsgemäße Verfahren läuft auf einer typischen Workstation
oder einem PC, der ein übliches Betriebssystem, wie beispielsweise Unix, verwendet. Die
Unix-Umgebung ist wegen der großen Verfügbarkeit von Quellcode für Software-
Entwicklungstools und der Robustheit der Benutzer-Umgebung vorteilhaft. Wie der
Fachmann erkennen wird, könnte das erfindungsgemäße System und das erfindungsgemäße
Verfahren direkt auf einem rekonfigurierbaren Computer laufen. In Fig. 3 ist ein
Flußdiagramm für ein erfindungsgemäßes Gesamtverfahren zur Kompilierung bzw.
Übersetzung, zur Assemblierung, zur Verbindung bzw. Verknüpfung und zum Laden gezeigt.
Die Kompilierschritte aus Fig. 3 werden nachfolgend anhand der Fig. 3A bis 3C
ausführlicher beschrieben.
Die Quelldateien 401 werden mit Hilfe eines speziell modifizierten C-Kompilers 402
kompiliert, der nachfolgend beschrieben wird. Der Kompiler 402 liest (301) die Quelldateien
401, die Quellcode-Befehlsanweisungen enthalten, von einem Plattenspeicher oder von einem
anderen Eingabe- oder Speichergerät. Der Kompiler 402 identifiziert (302) dann eine ISA für
einen Untersatz von Quellcodebefehlsanweisungen. In einer Ausführungsform werden ISAs
von Rekonfigurations-Übersetzungsanweisungen identifiziert, wie nachfolgend ausführlicher
beschrieben wird. Der Kompiler 402 erzeugt (303) geeignete Rekonfigurations-Übersetzungs
anweisungen, um die identifizierte ISA zu spezifizieren, und kompiliert (304) den Untersatz
von Befehlen zur Ausführung durch die identifizierte ISA, um Anweisungen in Assembler
sprache zu erzeugen. Der Kompiler 402 bestimmt dann (305), ob ein nachfolgender Untersatz
von Befehlsanweisungen (typischerweise eine separate Funktion innerhalb der Quelldatei 401)
mit einer anderen ISA kompiliert werden soll. In einer Ausführungsform wird eine solche
Bestimmung wiederum dadurch ausgeführt, daß die Rekonfigurationsübersetzungs
anweisungen überprüft werden. Falls eine andere ISA identifiziert wird, kehrt der Kompiler
402 zu Schritt 302 zurück.
Anderenfalls, wenn das Ende der Quelldatei erreicht wird, werden die Assemblersprachen
anweisungen vom Assembler 409 assembliert (306), um Objektdateien 403 zu erzeugen. Die
Objektdateien 403 werden mit Hilfe des Softwarelinkers bzw. Softwarebinders 404 verbunden
(307), der modifiziert wurde, um Bitstrom-Speicherstellen und abgeglichene bzw.
synchronisierte 64-Bit-Adressen zu behandeln, um ein ausführbares Programm 405 zu
erzeugen. Wie nachfolgend beschrieben wird, enthält das ausführbare Programm 405
aufgelöste Verweise (Referenzen) auf ISA-Bitströme 406, die FPGA-Architekturen festlegen.
Nachdem das ausführbare Programm 405 vom Binder 404 erzeugt wurde, wird dieses über
die Netzwerkverbindung 408 an das Ladeprogramm 407 gesendet, das auf einem re
konfigurierbaren Computer 10 abläuft, zum Laden (308) in den Computer 10. Für den Fall
einer dynamischen Verbindung werden ISA-Bitströme 406 auch über die Netzwerkverbindung
408 an das Ladeprogramm 407 gesendet.
In einer Ausführungsform läßt der Kompiler 402 eine beliebige Rekonfigurierung (arbitrary
reconfiguration) zu, bei der die Rekonfigurations-Übersetzungsanweisungen an einer
beliebigen Stelle in dem Quellcode lokalisiert sein können. Bei einer anderen Ausführungs
form läßt der Kompiler 402 eine strukturierte Rekonfigurierung (structured reconfiguration)
zu, bei der Rekonfigurierungs-Übersetzungsanweisungen nur zugelassen wird, wenn von
einer Funktion aufgerufen oder zurückgekehrt wird, so daß jede Funktion mit einer einzelnen
ISA bezeichnet wird, die während des gesamten Ablaufs der Funktion im Kontext bzw.
Zusammenhang sein soll. Während eine beliebige Rekonfigurierung zusätzliche Flexibilität
und einen kleineren Quellcode ermöglicht, sorgt eine strukturierte Rekonfigurierung für eine
bessere Vorhersagbarkeit und einen besseren Determinismus beim Laden einer ISA, was zu
einer größeren Zuverlässigkeit führt. Weil der Maschinencode generell für verschiedene ISAs
verschieden ist, wird der Determinismus bevorzugt, so daß der Kompiler in der Lage ist,
einen geeigneten Maschinencode für ein bestimmtes Segment des Quellcodes zu erzeugen.
Die beliebige Rekonfigurierung kann zu nicht deterministischen Situationen führen, wenn
diese mit gewissen Konditionalkonstrukten im Quellcode kombiniert wird. Diese Situationen
werden durch Verwendung einer strukturierten Rekonfigurierung beseitigt.
Der folgende Auszug aus einem Code stellt ein Beispiel für eine nicht deterministische
Rekonfiguration dar, die auftreten kann, wenn eine beliebige Rekonfiguration verwendet
wird:
Die ISA im Kontext nach der if-Anweisung kann zum Zeitpunkt der Kompilierung nicht
bestimmt werden, weil es zur Laufzeit zwei mögliche Pfade für den Steuerfluß gibt, von
denen jeder eine Rekonfiguration zu einer anderen ISA bewirkt. Deshalb kann der Kompiler
für diese Prozedur keinen gültigen Maschinencode ausgeben, solange ISA1 und ISA2 binär
kompatibel sind. Ein solcher Nichtdeterminismus wird beseitigt, wenn eine strukturierte
Rekonfiguration verwendet wird, weil nur eine ISA pro Funktion spezifiziert werden kann.
Bei dem oben genannten Beispiel ist der Wert der Variablen x während des Rekonfigurations
vorgangs geschützt, so daß auf diesen von der neuen IS-Architektur zugegriffen werden kann.
In einer Ausführungsform wird der Wert in einem Register bzw. Verzeichnis von ISA0 in
herkömmlicher Art und Weise abgespeichert. Die Rekonfigurierung in ISA1 oder ISA2 kann
jedoch bewirken, daß dieses Verzeichnis aufhört, zu existieren oder seinen Wert verliert, so
daß man sich nicht auf das Verzeichnis verlassen kann, wenn es den Wert von x nach der
Rekonfiguration liefert. Der Kompiler 402 überwacht deshalb die lebenden Verzeichniswerte,
die nach einer Rekonfiguration verwendet werden, um sicherzustellen, daß ihre Werte zur
Verfügung stehen, wenn sie benötigt werden.
Wenn eine beliebige Rekonfiguration verwendet wird, legt der Kompiler 402 fest, wie eine
darauffolgende ISA mit einem Zugriff auf eine Variable versehen wird, indem dieser
berücksichtigt, wie die augenblickliche ISA die Variable abgespeichert hat, ebenso wie die
Einrichtungen, auf die die nachfolgende ISA zugreifen muß. In der strukturierten
Rekonfiguration wird der Stapel dazu verwendet, um Werte abzuspeichern, wie dies üblich
ist, wenn Werte an eine aufgerufene Funktion übergeben oder von dieser abgerufen werden.
Weil sich die Verzeichnisarchitektur während der Rekonfiguration radikal ändern kann,
werden lebende Variablen von der scheidenden ISA abgespeichert und dann wieder von der
nachfolgenden ISA geladen, wie nachfolgend ausführlicher im Zusammenhang mit Fig. 6
erörtert wird.
Bei einer Ausführungsform realisiert der Kompiler 402 eine bekannte "Linear"-Optimierung
(inlining optimization), um eine strukturierte Rekonfiguration zu ermöglichen, um den
Aufwand bzw. Systemverwaltungsaufwand der JSR-Anweisung zu vermeiden. Inlining ist ein
bekanntes Verfahren zur Optimierung der Kompilierung von Funktionsaufrufen, indem die
Vorgänge einer aufgerufenen Funktion "in der Linie" aufgerufen werden, um so den
Aufwand zu vermeiden, der mit dem Aufruf der Funktion in üblicher Weise verbunden ist.
Somit kann ein Code-Segment, wie beispielsweise:
übersetzt werden durch:
wodurch die Leistungsfähigkeit verbessert wird, indem die Notwendigkeit einer Sprung
anweisung und einer Programmrückkehr umgangen wird und auch die zugeordneten Stapel-
Schreibvorgänge, die beim Aufruf einer Funktion und bei der Rückkehr von der Funktion
involviert sind.
Außerdem kann eine zusätzliche Optimierung erfolgen, indem alle Rekonfigurations-
Übersetzungsanweisungen bis auf die letzte eliminiert werden, wenn mehr als eine
Rekonfigurations-Übersetzungsanweisung in Folge auftritt. Somit kann die dritte Zeile
(#pragma reconfig ISA0) von dem oben genannten Code-Segment gelöscht werden.
Wenn man eine beliebige Rekonfiguration verwendet, kann eine aufgerufene Funktion eine
Rekonfiguration bewirken, die wirksam bleibt, auch nachdem der Programmfluß zu der
aufgerufenen Funktion zurückkehrt. Beispielsweise beginnt eine aufgerufene Funktion, die
die oben genannte Code-Auflistung enthält, in einer ISA, rekonfiguriert zweimal und kehrt
dann zu einer aufrufenden Funktion zurück. Von nachfolgenden Anweisungen in der
aufrufenden Funktion muß deshalb angenommen werden, daß diese die ISA von der letzten
Rekonfiguration verwenden. In einer Ausführungsform führt der Kompiler 402 eine
interprozedurale Analyse durch, um zu bestimmen, welche ISAs sich bei jedem Funktions
aufruf und bei jeder Funktionsrückkehr im Kontext befinden. Dort, wo Quelldateien separat
in Objektdateien kompiliert werden, bevor diese in ausführbare Programmanweisungen
gebunden werden, kann es schwierig oder unmöglich sein, zu bestimmen, welche ISA sich
im Kontext befinden wird, nachdem eine aufgerufene Funktion zurückkehrt. In solchen
Situationen kann die ISA-Information abgespeichert werden, beispielsweise in Header-Dateien
bzw. Kopfinformationsdateien, um zu spezifizieren, welche ISA sich im Kontext bei einer
Funktions-Einsprungstelle sowie bei einer Funktions-Austrittsstelle befindet, und zwar für alle
externen Funktionen, die von einem Modul aufgerufen werden. Alternativ können Parameter
unter Funktionen weitergeleitet werden, um die ISA-Kontexte zu spezifizieren.
Wenn eine strukturierte Rekonfiguration verwendet wird, ist die ISA-Information im
Vereinbarungsteil der Funktion vorgesehen, so daß keine Notwendigkeit besteht, daß der
Kompiler 402 ISA-Spezifikationen gegen den Steuerfluß verifiziert, und es gibt keine
Möglichkeit, daß eine unerwartete Rekonfiguration während einer aufgerufenen Funktion
auftritt.
Ein weiterer Vorteil einer strukturierten Rekonfiguration besteht darin, daß diese den
Rekonfigurationsvorgang vom semantischen Standpunkt her besser wiedergibt. Weil eine
Rekonfiguration generell ein Maß an Aufwand mit sich bringt, das zumindest vergleichbar
mit dem Aufwand für einen Funktionsaufruf ist, und weil eine Rekonfiguration viele
derselben Arten von Operationen beinhaltet, wie beispielsweise die Abspeicherung von
Werten auf einem Stapel, ist es wünschenswert, eine ähnliche Syntax sowohl für die
Rekonfiguration als auch für Funktionsaufrufe zu schaffen. Die strukturierte Rekonfiguration
verbindet die Idee einer Rekonfiguration mit der Idee von Funktionsaufrufen und verwirklicht
deshalb dieses semantische Ziel. Weitere Beispiele für eine strukturierte und beliebige
Rekonfiguration werden nachfolgend erörtert.
Bei der bevorzugten Ausführungsform steht vir Rekonfigurations-Übersetzungsanweisungen
#pragma, eine normale Meta-Syntax, die bei der C-Sprache vorgesehen ist, um Information
an den Kompiler weiterzuleiten, die aus der Sprachsyntax herausfällt. Die Verwendung der
#pragma-Syntax ermöglicht es, daß die Rekonfigurations-Übersetzungsanweisung im Kontext
eines C-Programms verwendet werden kann. Ein Beispiel für eine Rekonfigurations-
Übersetzungsanweisung, die man in dem Quellcode finden kann, würde wie folgt lauten:
#pragma func_isa func2 isa2.
Bei einer Ausführungsform sind drei #pragma-Übersetzungsanweisungen vorgesehen. Jede
Übersetzungsanweisungen wird auf einem anderen Niveau der Granularität oder des
Gültigkeitsbereichs betrieben und beeinflußt deshalb einen spezifischen Teil des Codes:
- - reconfig: beeinflußt eine Zwischen-Rekonfiguration zu einer neuen ISA (Gültigkeitsbereich ist ein beliebiger Block des Codes);
- - func_isa: spezifiziert für eine bestimmte Funktion eine ISA (Gültigkeitsbereich ist die Funktion); und
- - default_func_isa: spezifiziert eine Standard-ISA (Gültigkeitsbereich ist die gesamte Datei).
Diese Rekonfigurations-Übersetzungsanweisungen resultieren in Registertransferniveau-
Rekonfigurationsanweisungen (RTL), die den Kompiler mit Information versorgen, um zu
bestimmen, welche ISA für jeden Block des Codes benötigt wird, wie nachfolgend
ausführlicher beschrieben wird.
Das nachfolgende Codelisting stellt ein Beispiel für die Verwendung von jeder der oben
genannten Übersetzungsanweisungen in einer strukturierten Rekonfigurationsumgebung dar.
Zeile 4 des Codelistings stellt ein Beispiel für die default_func_isa-Übersetzungsanweisung
dar, die spezifiziert, daß ISA0 für jegliche Funktionen verwendet werden soll, die keine
andere ISA spezifizieren. Der Gültigkeitsbereich dieser Übersetzungsanweisung ist die
gesamte Datei; deshalb gilt die Übersetzungsanweisung für das gesamte gezeigte Listing.
Zeile 6 des Codelistings stellt ein Beispiel für die func_isa-Übersetzungsanweisung, die
spezifiziert, daß FIXED_POINT_ISA die geeignete ISA für die Funktion darstellt, die
build_color_map genannt wird. Der Gültigkeitsbereich dieser Übersetzungsanweisung ist die
spezifizierte Funktion.
Zeile 21 des Codelistings stellt ein Beispiel für die reconfig-Übersetzungsanweisung dar, die
spezifiziert, daß BYTE_MAP_ISA die geeignete ISA für den Codeblock darstellt, der
unmittelbar der Übersetzungsanweisung folgt. Der Gültigkeitsbereich dieser Übersetzungs
anweisung ist der in den Zeilen 22 bis 35 des Codelistings gezeigte Codeblock.
Das folgende Codelisting stellt ein Beispiel für die Verwendung von jeder der oben genannten
Übersetzungsanweisungen in einer beliebigen Rekonfigurationsumgebung dar.
Zeilen 9 und 19 enthalten reconfig-Übersetzungsanweisungen, die solange wirksam bleiben,
bis eine andere Rekonfigurations-Übersetzungsanweisung festgestellt wird. Für eine beliebige
Rekonfiguration können die Übersetzungsanweisungen an einem beliebigen Punkt in dem
Code auftreten und sie sind nicht auf die Funktionsebenen-Granularität begrenzt.
In den Fig. 3A und 3B ist ein Flußdiagramm eines bevorzugten Kompilierungsverfahrens
gemäß der vorliegenden Erfindung gezeigt. Fig. 3A zeigt die Schritte, die von der
Kompiler-Oberfläche ausgeführt werden, während Fig. 3B die Schritte zeigt, die vom
Kompiler-Kern ausgeführt werden. Die Oberfläche interpretiert Rekonfigurations-Überset
zungsanweisungen und erzeugt RTL-Anweisungen, die vom Kern in üblicher Weise
interpretiert werden können. Wie man weiß, sind RTL-Anweisungen ISA-unabhängige
Zwischenniveauanweisungen, die den herkömmlichen Kompilern eingesetzt werden, die
beispielsweise in dem GNU C-Kompiler (GCC), der von der Firma Free Software
Foundation (Cambridge, MA) hergestellt wird. RTL kann entsprechend der Spezifikation des
Stanford University Intermediate Format (SUIF) ausgeführt werden, wie diese in Stanford
SUIF Compiler Group, SUIF: A Parallelizing & Optimizing Research Compiler, Tech. Rep.
CSL-TR-94-620, Computer Systems Lab, Stanford University, May 1994 offenbart ist.
Beispielsweise könnte die Quellcode-Anweisung:
x = y + 3;
in RTL wie folgt dargestellt werden:
r1 <- y
r0 <- r1 + 3
x <- r0.
r0 <- r1 + 3
x <- r0.
Das Verfahren aus den Fig. 3A und 3B zieht als Eingangsgröße die Quelldatei 401 heran,
die eine Folge von Hochsprachen-Quellcodebefehlsanweisungen enthält und die auch
mindestens eine Rekonfigurations-Übersetzungsanweisung enthält, die eine ISA zur
Ausführung von nachfolgenden Anweisungen spezifiziert. Um dies zu erläutern, sei eine
strukturierte Rekonfigurationsumgebung angenommen, bei der eine Rekonfiguration Funktion
für Funktion erfolgt. Die Oberfläche des Kompilers 402 wählt (600) die nächste Hoch
sprachenanweisung von der Quelldatei 401 aus und stellt fest (601), ob die ausgewählte
Hochsprachenanweisung ein Funktionsaufruf ist. Falls dies nicht der Fall ist, sendet (603)
der Kompiler 402 einen RTL-Code für diese Anweisung.
Falls der Kompiler 402 in Schritt 601 feststellt, daß die Anweisung ein Funktionsaufruf ist,
stellt der Kompiler 402 in Schritt 602 fest, ob die gerade aufgerufene Funktion in einer
anderen ISA als der gerade im Kontext befindlichen ISA abläuft. Falls dies nicht der Fall ist,
gibt der Kompiler 402 im Schritt 605 einen RTL-Code für den Funktionsaufruf und für das
Einlesen des Rückkehrwerts der Funktion in Schritt 613 ab.
Falls der Kompiler 402 in Schritt 602 feststellt, daß die Funktion in einer anderen ISA
arbeitet, gibt der Kompiler 402 einen RTL-Code ab, der erforderlich ist, um die Re
konfiguration zu bewirken, und zwar einschließlich des Abspeicherns aller lebenden Register
in Schritt 607 und der Durchführung der Rekonfiguration in Schritt 604. Bei der bevorzugten
Ausführungsform handelt es sich bei der RTL-Rekonfigurationsanweisung um keine Standard-
RTL-Anweisung, die eine ISA-Identifikation enthält. Der Kompiler 402 gibt dann in Schritt
606 einen RTL-Code für den Funktionsaufruf ab. Der Kompiler 402 gibt dann in Schritt 609
den RTL-Code für die Rekonfiguration zurück an die erste ISA, um in Schritt 611 lebende
Register wieder abzuspeichern und um den Rückgabewert der Funktion in Schritt 613 zu
lesen.
Bei Beendigung der Schritte 603 oder 613 stellt der Kompiler 402 in Schritt 608 fest, ob eine
andere Hochsprachenanweisung berücksichtigt werden muß. Falls dies der Fall ist, kehrt der
Kompiler 402 zu Schritt 600 zurück; anderenfalls fährt er mit Schritt 610 fort.
In Fig. 3B führt der Kern des Kompilers 402 die Schritte 610 bis 622 aus, um zuvor
generierte RTL-Anweisungen in Assemblersprache zu übersetzen.
Der Kompiler 402 wählt dann in Schritt 612 eine nächste RTL-Anweisung innerhalb der
augenblicklich berücksichtigten Gruppe von RTL-Anweisungen aus. Der Kompiler 402 erhält
in Schritt 618 eine Regel, die eine Weise spezifiziert, in der die augenblickliche Gruppe von
RTL-Anweisungen in einen Satz von Maschinenspracheanweisungen übersetzt werden kann,
die für die augenblicklich berücksichtigte Gruppe von RTL-Anweisungen existiert. Der
Kompiler 402 erzeugt in Schritt 620 einen Satz von Maschinenspracheanweisungen, die
entsprechend der Regel der augenblicklich berücksichtigten Gruppe von RTL-Anweisungen
entspricht. Der Kompiler 402 stellt dann in Schritt 622 fest, ob eine andere RTL-Anweisung
innerhalb des Kontext einer nächsten Gruppe von RTL-Anweisungen berücksichtigt werden
muß. Falls dies der Fall ist, kehrt der Kompiler 402 zu Schritt 612 zurück. Anderenfalls
führt der Kompiler 402 in Schritt 610 Registerreservierungsschritte (register allocation) aus.
Bekanntlich ist eine konsistente Registerarchitektur von einer ISA zur anderen nicht unbedingt
erforderlich. Außerdem können gewisse Innenschleifen-ISAs spezielle Register besitzen, für
die normale Registerreservierungsvorgänge nicht gelten. Im allgemeinen sind jedoch
Außenschleifen-ISAs in der Lage, normale Registerreservierungen zu verwenden.
Beispielsweise könnte der oben angeführte RTL-Code etwa wie folgt in einen Assembler-
Code übersetzt werden, wobei der Assembler-Code von ISA zu ISA verschieden wäre:
ld y, r3
ld [r3], r0
add 3, r0
St r0, [x].
ld [r3], r0
add 3, r0
St r0, [x].
Somit erzeugt der Kompiler 402 wahlweise und automatisch in Entsprechung mit Vielfach-
ISAs während Kompilierungsvorgängen Assemblersprachenanweisungen. Oder mit anderen
Worten: Während des Kompilierungsvorgangs kompiliert der Kompiler 402 einen Einzelsatz
von Programmanweisungen von den Quelldateien 401 entsprechend einer variablen ISA. Bei
dem Kompiler 402 handelt es sich vorzugsweise um einen üblichen Kompiler, der modifiziert
ist, um die bevorzugten Kompilierungsvorgänge durchzuführen, die zuvor anhand der
Fig. 3A und 3B beschrieben wurden.
Der Assembler 409 bzw. der Übersetzer für maschinenorientierte Programmiersprache wird
betrieben, um Maschinensprachenanweisungen, die vom Kompiler 403 erzeugt wurden, auch
dazu zu verwenden, um Objektdateien 403 zu erzeugen. Die Objektdateien 403 werden dann
vom Binder bzw. Linker 404 gebunden, der Bitstrom-Speicherstellen und 64-Bit, Bit
ausgerichtete bzw. Bit-abgeglichene Adressen handhabt, um ein ausführbares Programm 405
zu erzeugen. Das Ladeprogramm 407 verkettet gleiche Segmente von einer Anzahl von
Objektdateien 403, einschließlich von Bitstrom-Segmenten, in ein einzelnes Speicherbild zur
Übermittlung an einen rekonfigurierbaren Computer 10. Bei einer Ausführungsform erfolgt
eine solche Verkettung während der Laufzeit bzw. in Echtzeit; bei einer alternativen
Ausführungsform erfolgt dies off-line. Es ist vorteilhaft, wenn der Binder 404 in der Lage
ist, eine Speicherausrichtung bzw. einen Speicherabgleich auf dem ausführbaren Programm
405 auszuführen, um für die Ausrichtungserfordernisse für den FPGA-Bitstrom zu sorgen.
Gewisse FPGA-Ladeprogrammhardware erfordert Bitströme von konstanter Größe. Deshalb
kann der Binder die Speicherausrichtung vornehmen, indem er Bitströme auffüllt, damit die
Anforderungen für eine solche Hardware erfüllt werden.
Wenn ein statisches Einbinden (static linking) verwendet wird, werden Bitströme 406 und
ausführbare Programme 405 vom Binder 404 zur Zeit des Bindens verbunden. Wenn ein
dynamisches Binden verwendet wird, werden die ISA-Bitströme 406 und die ausführbaren
Programme 405 zum Zeitpunkt des Ladens des Programms verbunden, so daß das
ausführbare Programm 405 und die Bitströme 406 über die Netzwerkverbindung 408 zu dem
Ladeprogramm 407 gesendet werden, das auf einen rekonfigurierbaren Computer 10 läuft.
In Fig. 3C ist ein Flußdiagramm von weiteren Schritten gezeigt, die zur Erzeugung eines
Maschinensprachencodes gemäß einer Ausführungsform der vorliegenden Erfindung
ausgeführt werden. Dieses Flußdiagramm gibt im Detail die Zwischendateien an, die erzeugt
werden, wenn der RTL-Code in einen maschinenlesbaren Code für einen rekonfigurierbaren
Computer übersetzt wird. Der RTL-Code ist mit Bemerkungen versehen 331, um anzuzeigen,
welche ISA sich in Kontext für jede RTL-Anweisung in dem Code befindet. Zu diesem
Zeitpunkt werden RTL-Anweisungen modifiziert. Der Kode wird dann in Schritt 332 mit
Hilfe von ISA-abhängigen Verfahren und ISA-unabhängigen Verfahren mittels eines
Optimierungs-Dienstprogrammes optimiert. Obwohl das Optimierungsdienstprogramm eine
ISA-abhängige Optimierung ausführt, verwendet seine Ausgabe maschinenunabhängigen
Code. Somit würde die Ausgabe dennoch auf einer beliebigen ISA laufen, obwohl dies nicht
notwendiger Weise optimal ist. Schließlich werden maschinenabhängige Befehle im Schritt
333 von dem optimierten Code mittels des Assemblers 409 erzeugt. Dieser Code verwendet
abstrakte Register (abstract registers) und andere maschinenabhängige Merkmale. Zusätzliche
Schritte zum Aufräumen von Verknüpfungen bzw. Links und weitere unwichtige Schritte
können dann ausgeführt werden.
Bei der bevorzugten Ausführungsform der vorliegenden Erfindung umfassen die ISAs eine
reconfig-Anweisung, die bewirkt, daß der FPGA von S-Einrichtung 12 einen Bitstrom lädt,
auf den mittels eines Parameters der Anweisung verwiesen wird. Somit besitzt jede ISA
zumindest einen Programmverschiebungstyp, der mit Programmverschiebungsbitstrom
adressen in Zusammenhang steht, die als Parameter für die reconfig-Anweisung der ISAs
verwendet werden. Die Programmverschiebungseinsprungstelle in der Objektdatei teilt dem
Binder mit, die augenblickliche Adresse einer Größe in ein Segment eines ausführbaren
Programms zum Zeitpunkt der Bindung zu ersetzen. Programmverschiebungstypen werden
nachfolgend ausführlicher beschrieben.
Wie nachfolgend beschrieben wird, werden Bitströme als Datenobjekte definiert, die sich in
einem bestimmten Abschnitt befinden, möglicherweise nur zum Lesen, und deshalb sind
Standard-Programmverschiebungsverfahren in der Lage, für eine Programmverschiebung von
Bitstromadressen zu sorgen, die in analoger Weise mit ISA-reconfig-Anweisungen zu
irgendwelchen programmdefinierten, nur lesbaren Daten verwendet werden.
Der rekonfigurierbare Computer 10 führt die Ergebnisse von dem Ladeprogramm aus, das
nachfolgend anhand der Fig. 9 bis 25B beschrieben wird. Insbesondere erkennt der
rekonfigurierbare Computer 10 reconfig-Anweisungen und lädt geeignete ISA-Bitströme, wie
sie in Parametern für solche Anweisungen spezifiziert sind.
Eine FPGA-Rekonfiguration durch Laden einer neuen ISA kann zu einem Verlust von
interner Hardwarezustandsinformation führen. Folglich behält das erfindungsgemäße System
und das Verfahren den Programmzustand während einer Rekonfiguration bei, um den Verlust
der Ausführungsbefehlsfolge bei solchen Übergängen der Hardware zu vermeiden.
Während der Rekonfiguration verwendet der rekonfigurierbare Computer 10 vorzugsweise
einen Aufrufstapel, um irgendwelche Daten abzuspeichern, die erforderlich sein könnten,
nachdem die neue ISA geladen worden ist. Ein solcher Speichervorgang wird durch Schieben
von Werten auf den Aufrufstapel bewerkstelligt und durch Abspeichern des Stapelzeigers in
einer vordefinierten Speicherzelle, die nicht durch die Rekonfiguration beeinflußt werden
wird. Im Anschluß an die Rekonfiguration verwendet der rekonfigurierbare Computer 10 den
Stapelzeiger, um die zuvor abgespeicherten Werte von dem Aufrufstapel auszuspeichern.
Es sind Stapel in Laufzeitumgebungen für laufende Maschinenprogramme bekannt, die von
Hochsprachen kompiliert wurden, die eine Rekursion unterstützen, wie beispielsweise
C/C++, Lisp und Pascal. Ein Stapel ist in einem Bereich des Speichers realisiert und der
Stapelzeiger (stack pointer; SP) wird in der ISA dazu verwendet, um die Adresse des Beginns
des Stapels zu behalten. Ein Wert, beispielsweise die Programmdaten oder die Adresse, wird
in dem Stapel gespeichert (oder auf den Stapel "geschoben"), indem der Stapelzeiger
dekrementiert wird und der Wert in die in dem Stapelzeiger enthaltene Adresse geschrieben
wird. Der Wert wird wieder von dem Stapel abgerufen (oder vom Stapel "heruntergescho
ben"), indem der Wert von der in dem Stapelzeigerregister enthaltenen Adresse gelesen wird;
dann wird der Stapelzeiger inkrementiert.
Bei der vorliegenden Erfindung wird der dynamische Zustand des Programms, wie
beispielsweise lokale Variablen und die Speicherstelle der nächsten Anweisung, die die
Hardware ausführen soll, die typischerweise in einem Adreßregister für den nächsten
Anweisungszeiger (Next Instruction Pointer Address Register; NIPAR) oder in einen
Programmzähler (PC) abgespeichert ist, vor der Rekonfiguration der Hardware auf dem
Stapel abgespeichert. Der Stapelzeiger wird bei der vorbestimmten Speicheradresse
aufbewahrt. Somit werden die Werte des Stapelzeigers und des NIPARs bei der Hardware-
Rekonfiguration aufbewahrt, so daß auf diese später Zugriff genommen werden kann, wenn
die Ausführung des Programms beginnt.
In Fig. 6 ist ein Flußdiagramm für ein Verfahren zum Konservieren des Programmzustands
gemaß der vorliegenden Erfindung gezeigt. Bei Schritt 601 wird eine reconfig-Anweisung
empfangen, die anzeigt, daß ein Bitstrom, der eine neue ISA-Konfiguration darstellt, in die
Prozessor-Hardware geladen werden soll. Das Argument für die reconfig-Anweisung ist eine
physikalische Speicheradresse, die die zu ladende ISA-Konfiguration enthält.
Der Stapelzeiger wird bei Schritt 652 dekrementiert und der NIPAR wird in Schritt 653 in
die von dem Stapelzeiger angezeigte Adresse hineingeladen, wodurch NIPAR auf den Stapel
geschoben wird. Der Stapelzeiger wird in Schritt 654 unter einer vorbestimmten Adresse im
Speicher abgespeichert, die der neuen ISA-Konfiguration bekannt ist. Die neue ISA-
Konfiguration wird dann im Schritt 655 in die Hardware hineingeladen, indem die FPGA 12
dazu veranlaßt wird, den ISA-Bitstrom von einer Speicherstelle in dem Bitstromspeicher 132
zu lesen. Sobald die neue Konfiguration geladen worden ist, lädt diese in Schritt 656 den
Stapelzeiger von der bekannten, vorbestimmten Adresse und lädt dann NIPAR von dem
Stapel, indem dieser von der Speicherstelle abgerufen wird, die in Schritt 657 in dem
Stapelzeiger abgespeichert wurde und dann wird der Stapelzeiger in Schritt 658 in
krementiert. Ein Beispiel für Stapelinhalte während des Rekonfigurationsvorgangs aus Fig.
6 wird nachfolgend anhand der Fig. 8A bis 8C beschrieben.
Bei einer Ausführungsform der vorliegenden Erfindung wird eine strukturierte Re
konfiguration dadurch bewerkstelligt, daß reconfig-Anweisungen von dem Quellcode in eine
Folge von Assemblersprachenanweisungen übersetzt werden. Wie zuvor beschrieben wurde,
werden bei der strukturierten Rekonfiguration Rekonfigurations-Übersetzungsanweisungen
nur dann zugelassen, wenn eine Funktion aufgerufen wird oder zu einer Funktion
zurückgekehrt wird, so daß jede Funktion mit einer einzigen ISA gekennzeichnet ist, die sich
während der gesamten Ausführung der Funktion im Kontext befinden soll. In Fig. 7 ist ein
Flußdiagramm für ein Verfahren zur Realisierung der strukturierten Rekonfiguration gemäß
einer Ausführungsform der vorliegenden Erfindung gezeigt.
Das Verfahren gemäß Fig. 7 wird ausgeführt, wenn der Aufruf einer Funktion eine
aufgerufene Funktion mit sich bringt, die eine ISA-Rekonfigurationsanweisung besitzt. Die
S-Einrichtung 12 rettet in Schritt 707 lebende Registerwerte, so daß diese nicht als Folge der
Rekonfiguration verlorengehen. Die S-Einrichtung 12 verwendet die augenblickliche ISA, um
in Schritt 701 Parameter für die aufgerufene Funktion auf den Stapel zu schieben, weil diese
Parameter in Registern vorliegen können. Die S-Einrichtung 12 rekonfiguriert in Schritt 702
in die neue ISA und ruft in Schritt 703 das Unterprogramm auf, das die Funktion darstellt,
wobei eine Anweisung, wie beispielsweise "jsr", der ISA der Zielfunktion verwendet wird.
Nachdem die aufgerufene Funktion die Ausführung beendet hat, kehrt eine Rückkehr
anweisung, wie beispielsweise "ret", in Schritt 704 zu der aufrufenden Funktion zurück.
S-Einrichtung 12 10 rekonfiguriert in Schritt 705 zu der ursprünglichen ISA für die aufrufende
Funktion, liest in Schritt 706 einen Rückgabewert der aufgerufenen Funktion und speichert
lebende Registerwerte in Schritt 708 wieder ab. Die Verfahren aus Fig. 7 zur Weitergabe
von Stapelparametern und zur Rückgabe von Werten können in üblicher Weise realisiert
werden, wie sie in nicht rekonfigurierbaren Computern verwendet werden, die keine
Parameter oder Rückgabewerte in Register weiterleiten.
Das folgende stellt ein Beispiel für einen Code zur Realisierung einer strukturierten
Rekonfiguration dar:
Zwei Funktionen sind bekannt: main, das ISA0 verwendet, einen Mehrzweck-Anweisungs
satz; und func1, das einen anderen Anweisungssatz (another IS) verwendet, der als
another_isa bezeichnet wird. Die #pragma-Anweisungen spezifizieren die Anweisungssätze
für die zwei Funktionen.
In einer Ausführungsform der vorliegenden Erfindung, die eine strukturierte Rekonfiguration
verwendet, würde der Kompiler 402 die Funktion call bar = func1 () von dem oben
genannten Listing in den folgenden Assemblercode übersetzen. Dabei wurden Kommentare
zum Zwecke der Erläuterung hinzugefügt.
1 ; schaffe Platz für den Rückgabewert durch Dekrementierung von SP
2 eldi 16, a0
3 esub a0, sp
4 ; berechne die Adresse von Argument foo
5 emov sp, a1
6 eadd a0, a1
7 ; und schiebe diese auf den Stapel
8 estr a1, sp
9 ; reconfig
10 reconfig another_isa
11 ; rufe das Unterprogramm auf
12 jsr func1
13 ; gehe zurück zu isa0
14 reconfig isa0
15 ; lösche den geschobenen Parameter
16 eldf d0
17 ; und lese das Ergebnis in die Registervariable bar
18 ldf d0
Außerdem könnte Assemblercode zum Abspeichern und wieder Herstellen von lebenden Registerwerten vor der Zeile 1 bzw. nach der Zeile 18 hinzugefügt werden.
1 ; schaffe Platz für den Rückgabewert durch Dekrementierung von SP
2 eldi 16, a0
3 esub a0, sp
4 ; berechne die Adresse von Argument foo
5 emov sp, a1
6 eadd a0, a1
7 ; und schiebe diese auf den Stapel
8 estr a1, sp
9 ; reconfig
10 reconfig another_isa
11 ; rufe das Unterprogramm auf
12 jsr func1
13 ; gehe zurück zu isa0
14 reconfig isa0
15 ; lösche den geschobenen Parameter
16 eldf d0
17 ; und lese das Ergebnis in die Registervariable bar
18 ldf d0
Außerdem könnte Assemblercode zum Abspeichern und wieder Herstellen von lebenden Registerwerten vor der Zeile 1 bzw. nach der Zeile 18 hinzugefügt werden.
In den Fig. 8A bis 8C sind Diagramme der Speicherinhalte bei verschiedenen Punkten
während der Ausführung des Assemblercodes gezeigt. Die Fig. 8A zeigt den Zustand des
Stapels 800 nach der Ausführung der Zeilen 1 bis 8 des oben angeführten Assemblercodes.
Diese Zeilen bilden den Stapelrahmen, der von func1 verwendet wird. Zunächst wird Platz
geschaffen, um einen Rückgabewert abzuspeichern; dann wird die Adresse der Variablen foo
auf den Stapel geschoben. Die Speicherstelle 801 enthält die Variable foo im Stapelrahmen
für die Funktion main. In diesem Beispiel wird die Variable bar in einem ISA0-Register
abgespeichert und erscheint deshalb nicht auf dem Stapel 800. Die Speicherstelle 802 wird
für einen Rückgabewert reserviert und die Speicherstelle 803 enthält die Adresse der
Variablen foo.
Fig. 8B zeigt den Zustand des Stapels 800 auf halben Wege während der Ausführung der
reconfig-Anweisung bei Zeile 10. Wie man auch durch Vergleich mit Fig. 6 erkennen wird,
entspricht dieser Zustand des Stapels 800 dem Ende des Schrittes 654, unmittelbar bevor die
neue Konfiguration geladen werden soll. Die augenblickliche Adresse der nächsten
Anweisung (NIPAR) wurde auf den Stapel 800 bei der Speicherstelle 804 geschoben und der
Stapelzeiger SP wurde auf eine vorbestimmte Adresse (nicht gezeigt) geschrieben. An dieser
Stelle werden die Schritte 655 bis 658 ausgeführt, nämlich die Hardware wird rekonfiguriert,
der Stapelzeiger wird geladen und NIPAR wird ausgespeichert, wie zuvor beschrieben
wurde.
Fig. 8C zeigt den Zustand des Stapels 800 bei der Einsprungstelle zu func1, wobei die jsr
func1-Anweisung bei Zeile 12 verwendet wird. Die Speicherstelle 804 enthält nun die
Rückkehradresse. Wenn func1 zurückkehrt, rekonfiguriert der Computer 10 zu ISA0 zurück,
wird der Parameter von dem Speicher entfernt und wird der Rückkehrwert in die
Variable bar gelesen, die der Kompiler 402 für Register d0 reserviert hatte.
Die bevorzugte Ausführungsform der vorliegenden Erfindung erweitert Standardparadigmen
zur Softwareentwicklung, um Bitströme mit einzuschließen, die Hardwarekonfigurationen
festlegen, die einen mit Hilfe von FPGAs realisierten Computer spezifizieren, der binäre
Maschinenanweisungen von einer ausführbaren Datei 405 ausführt. Dies wird dadurch
bewerkstelligt, daß ein neues Dateiformat verwendet wird, das als ICARUS ELF bezeichnet
wird und das eine Erweiterung des Executable and Linking Format (ELF) umfaßt, das häufig
auf Unix-Workstations verwendet wird und in UNIX System Laboratories, Inc., System V
Application Binary Interface, 3. Auflage, 1993 beschrieben ist und das hiermit im Wege der
Bezugnahme in dieser Patentbeschreibung mit aufgenommen sei.
Wie in dem UNIX System Laboratories, Inc., System V Application Binary Interface, 3.
Auflage, 1993 beschrieben ist, handelt es sich bei ELF-Dateien entweder um programmver
schiebliche (relocatable) Dateien (Objektdateien 403) oder um ausführbare Dateien 405. ELF
sorgt für Parallelansichten der Inhalte der Datei, was die differierenden Erfordernisse dieser
zwei Formate reflektiert. In Fig. 5 ist im Teil 501 ein typisches ELF-Dateiformat in einer
Binden-Ansicht und im Teil 502 in einer Ausführen-Ansicht gemäß dem Stand der Technik
dargestellt. Der ELF-Kopfteil 503 enthält einen "Plan", der die Organisation der Datei
beschreibt. Die Abschnitte 505 beinhalten den Großteil der Information der Objektdatei für
die Binden-Betrachtungsweise 501, einschließlich von Anweisungen, Daten, Symboltabellen,
Verschiebungsinformation und dergleichen, wie nachfolgend ausführlicher beschrieben wird.
Die Abschnitte 507, die in der Ausführen-Darstellung 502 verwendet werden, entsprechen
den Abschnitten 505, wobei jeder Abschnitt 507 einem oder mehreren Abschnitten 505
entspricht. Außerdem können die Abschnitte 507 Kopfteile umfassen, die Information
enthalten, wie beispielsweise die Information, ob der Abschnitt 507 sich in einem Schreib-
Speicher befindet, was auf die Abschnitte 505 anwendbar sein kann oder nicht. Im
allgemeinen enthalten die Abschnitte 505 Information, die während des Bindens verwendet
wird, während die Abschnitte 507 Information enthalten, die während des Ladens verwendet
wird.
Die Programmkopfteiltabelle 504 (falls vorhanden), teilt dem Computer 10 mit, wie ein
Verarbeitungsbild aufzubauen ist. Die Abschnittskopfteiltabelle 506 enthält Information, die
die Abschnitte 505 beschreibt. Jeder Abschnitt 505 besitzt einen Eintrag in Tabelle 506; jeder
Eintrag gibt Information an, wie beispielsweise den Namen des Abschnitts, die Größe und
dergleichen. Die in Fig. 5 gezeigten Elemente können in einer beliebigen Reihenfolge
vorgesehen sein und einige Elemente können fehlen.
Weitere Details, die die in Fig. 5 gezeigten Elemente betreffen, kann man in UNIX System
Laboratories, Inc., System V Application Binary Interface, 3. Auflage, 1993 finden. Die
folgende Beschreibung erklärt die Unterschiede zwischen dem Standard-ELF, wie in System
V Application Binary Interface beschrieben, und dem ICARUS ELF-Dateiformat, das bei der
vorliegenden Erfindung verwendet wird.
Das ICARUS ELF-Dateiformat verwendet prozessorabhängige Merkmale von ELF, um für
eine Verschiebung von Bitstromadressen zu sorgen, die innerhalb des Programmtextes
verwendet werden, und um für eine Verschiebung und für ein Binden von Bitströmen in
Segmente zu sorgen, die während des Ablaufens des Programms innerhalb eines hierfür
vorgesehenen Bitstromspeichers 132 geladen werden können. ICARUS ELF erweitert somit
Standard-ELF, um die Abspeicherung von Bitströmen zu erleichtern, die FPGA-Konfiguratio
nen sowie den ausführbaren Code definieren, der auf der FPGA-definierten Hardware läuft.
ICARUS ELF ergänzt den Standard-ELF, um für neue Datentypen, Abschnitte, Symboltypen
und Verschiebungstypen für ISA-Bitströme zu sorgen.
Bei der bevorzugten Ausführungsform verwendet der rekonfigurierbare Computer
Bitadressen, die 64 Bit breit sind. Die Adressen zeigen auf den Bitversatz des niedrigst
wertigen Bits des Daten-Gegenstands. ICARUS ELF ist für 64-Bit Byte-Adressen ausgelegt,
wobei die Adresse auf das erste Byte (niedrigstwertig für kleine Endian-Prozessoren,
höchstwertig für große Endian-Prozessoren) für jedes Datenelement zeigt. Während die
Versätze in Kopfteilen bezüglich der Bytes definiert werden, werden zu verschiebende
Adressen in 64-Bit Bit-Adressen spezifiziert. Dies läßt die Verwendung eines Binders auf
einem Byte-orientierten Computer zu. ICARUS ELF verwendet zwei neue Datentypen, um
eine 64-Bitadressierung zu erleichtern:
- - ICARUS_ELF_Addr: Größe-8-Bytes, mit Ausrichtung, die für die augenblickliche ISA durch Kisa festgelegt wird, das den Zweier-Logarithmus der Bitbreite des Speichers darstellt (beispielsweise 3 für 8-Bit, 4 für 16-Bit).
- - ICARUS_ELF_Off: Byte-Versatz in die Datei, Größe 4 Bytes, Ausrichtung 1 Byte.
Eine Ausführungsform der vorliegenden Erfindung fügt einen neuen Abschnitt hinzu, der
FPGA-Bitstromdaten enthält, mit dem Namen .ICARUS.bitstream. Einer oder mehrere
solcher Abschnitte können vorgesehen sein. Bei der bevorzugten Ausführungsform ist jeder
solcher Abschnitte vom ELF-Abschnittstyp SHT_PROGBITS und besitzt das ELF-
Abschnittsattribut SHF_ALLOC.SHT_PROGBITS bezeichnet einen Abschnitt, der
Information enthält, die durch das Programm festgelegt wird, deren Format und Bedeutung
ausschließlich über das Programm festgelegt wird. Attribut SHF_ALLOC spezifiziert, daß
der Abschnitt während der Vorgangsausführung einen Speicher besetzt, Information, die für
das Ladeprogramm nützlich sein kann.
Weil ELF mehrere Beispiele für einen Abschnitt mit einem bestimmten Namen erlaubt, kann
die vorliegende Erfindung einen Abschnitt pro Bitstrom verwenden, oder kann alternativ alle
Bitströme in einen Abschnitt mit geeigneter Ausrichtung verbinden.
Es ist vorteilhaft, für einen neuen Abschnitt für Bitströme zu sorgen, so daß Hardware mit
speziellen Speicherbereichen für Bitströme hergestellt werden kann. Der separate Abschnitt
erleichtert die Plazierung von Bitströmen in diesen speziellen Speicherbereichen mit Hilfe des
Ladeprogramms. Falls solche Speicherbereiche nicht erforderlich sind, kann die vorliegende
Erfindung unter Verwendung eines Standard-Datenabschnitts für Nur-Lese-Programmdaten
realisiert werden, wie beispielsweise .rodata und .rodata1, wie in System V Application
Binary Interface beschrieben ist, anstatt das spezielle Bitstromabschnitte eingeführt werden.
Objektdateien enthalten Symboltabellen, die Information zur Lokalisierung bzw. Fixierung
und zur Verschiebung der Symboladressen und Verweise eines Programms halten. In einer
Ausführungsform der vorliegenden Erfindung besitzt jeder Bitstrom, der in dem Abschnitt
.ICARUS.bitstream enthalten ist, einen Eintrag in der Symboltabelle der Objektdatei. In der
Binden-Ansicht 501 aus Fig. 5 ist die Symboltabelle in einem separaten Abschnitt 505
lokalisiert. Das Symbol hat die folgenden Attribute:
- - st_name: Der Name des Symbols ist der Name, der verwendet wird, um es in der Maschinensprachenquelle für die Objektdatei zu referenzieren. st_name enthält einen Index in die Symbolstringtabelle der Objektdatei, die die Zeichendarstellungen der Symbolnamen enthält.
- - st_value: Sorgt bei Bitstrom-Symbolen für den Versatz des Bitstroms innerhalb des Abschnittes.
- - st_size: Größe des Bitstroms in Bits.
- - st_info: Spezifiziert den Typ und die Binde-Attribute. Ein neuer Typ wird verwendet, der als STT_BITSTREAM bezeichnet wird. Dieser neue Typ ist charakteristisch für die vorliegende Erfindung und zeigt an, daß dieses Symbol sich in einem FPGA-Bitstrom befindet. Der Bindevorgang legt die Sichtbarkeit der Bindung und das Verhalten fest und kann STB_LOCAL oder STB_GLOBAL sein. STB_LOCAL zeigt an, daß das Symbol nicht außerhalb der Objektdatei, die die Definition des Symbols enthält, sichtbar ist. STB-GLOBAL zeigt an, daß das Symbol für alle Dateien, die kombiniert werden, sichtbar ist. F 99999 00070 552 001000280000000200012000285919988800040 0002019815865 00004 99880ür Bitstrom-Symbole kann das Binden entweder STB_LOCAL oder STB-GLOBAL sein. Weil Bitströme für gewöhnlich von mehr als einem Codeabschnitt verwendet werden und deshalb in eine Bibliothek zur Wiederverwendung übersetzt werden können, ist es wahrscheinlicher, daß STB-GLOBAL verwendet wird.
Verschiebung ist der Vorgang der Verbindung symbolischer Referenzen mit symbolischen
Definitionen. Verschiebbare Dateien enthalten Verschiebungen bzw. Programmver
schiebungen, die Daten darstellen, die beschreiben, wo spezielle symbolische Definitionen
gefunden werden können,. so daß der Binder diese lokalisieren kann. Spezielle Verschiebungs
vorgänge variieren von ISA zu ISA, wie dies auch bei Standard-ELF-Dateien der Fall ist.
Verschiebungstypen sind innerhalb der Felder r_info von ICARUS_ELF_REL-Strukturen und
ICARUS_ELF_RELA-Strukturen enthalten. Beispiele für solche Verschiebungstypen
umfassen:
- - ICARUS_64_BIT_ADDR: 64-Bitadressen, die zum Zeitpunkt der Übersetzung bestimmt werden. Typischerweise gemeinsam mit der eldi-Anweisung in den Prozessor geladen.
- - ICARUS_64_BIT_OFFSET: Relativadreßversatz von augenblicklicher NIPAR-Stelle zu einem Symbol, typischerweise einem Kennzeichen (label). Von den br-Anweisungen (branch; Programmverzweigung) verwendet.
Aus den genannten Gründen macht erfindungsgemäß das zuvor beschriebene ICARUS
ELF-Objektdateiformat neuartigen Gebrauch von der Softwarebindungstechnologie, um
Computerprogramme gemeinsam mit der Hardwarekonfiguration zusammenzufügen, auf der
das Programm läuft, wobei ein rekonfigurierbarer Computer 10 verwendet wird, wie er
zuvor beschrieben wurde. Das System und das Verfahren gemäß der vorliegenden Erfindung
kann eine Kompilierung für Mehrfach-ISAs innerhalb einer einzigen Quelldatei ausführen und
ist bei einer Ausführungsform in der Lage, Maschinenanweisungen und Daten gemeinsam
mit Hardwarekonfigurationen zusammenzufügen, die erforderlich sind, um die Maschinenin
struktionen auszuführen.
Nachfolgend wird anhand der Fig. 9 bis 25B eine bevorzugte Hardware-Umgebung
beschrieben, in der die Erfindung bevorzugt angewendet wird.
In Fig. 9 ist ein Blockdiagramm einer bevorzugten Ausführungsform eines Systems 3010 für
ein skalierbares, paralleles, dynamisch rekonfigurierbares Berechnen dargestellt, das gemäß
der Erfindung ausgeführt wird. Das in Fig. 9 gezeigte System 3010 entspricht im
wesentlichen dem in Fig. 1 gezeigten System 10. Das System 3010 weist vorzugsweise
zumindest eine S-Einrichtung 3012, eine T-Einrichtung 3014 entsprechend jeder
S-Einrichtung 3012, eine universelle Verbindungsmatrix (GPIM) 3016, zumindest eine
Ein-/Ausgabe-T-Einrichtung 3018, ein oder mehrere Ein-/Ausgabevorrichtungen 3020 und eine
Master-Zeitbasiseinheit 3022 auf. In der bevorzugten Ausführungsform weist das System
3010 mehrere S-Einrichtungen 3012 und folglich mehrere T-Einrichtungen 3014 plus mehrere
Ein-/Ausgabe-T-Einrichtungen 3018 und mehrere Ein-/Ausgabe-Vorrichtungen 3020 auf.
Jede der S-Einrichtungen 3012, der T-Einrichtungen 3014 und der Ein-/Ausgabe-T-Ein
richtungen 3018 hat einen Master-Zeitsteuereingang, der mit einem Zeitsteuerausgang der
Master-Zeitbasiseinheit 3022 verbunden ist. Jede S-Einrichtung 3012 hat einen Eingang und
einen Ausgang, der mit der entsprechenden T-Einrichtung 3014 verbunden ist. Zusätzlich zu
dem Eingang und dem Ausgang, der mit der entsprechenden S-Einrichtung 3012 verbunden
ist, hat jede T-Einrichtung 3014 einen Leiteingang und einen Leitausgang, welche mit der
GPI-Matrix 3016 verbunden sind. Dementsprechend hat jede Ein-/Ausgabe-T-Einrichtung
3018 einen Eingang und einen Ausgang, welcher mit einer Ein-/Ausgabe-Vorrichtung 3020
verbunden ist, und einen Leiteingang und einen Leitausgang, der mit der GPI-Matrix 3016
verbunden ist.
Wie unten im einzelnen noch beschrieben wird, ist jede S-Einrichtung 3012 ein dynamisch
rekonfigurierbarer Rechner. Die GPI-Matrix 3016 stellt ein paralleles Punkt-zu-Punkt-
Verbindungsmittel dar, welches eine Kommunikation zwischen T-Einrichtungen 3014
erleichtert. Der Satz T-Einrichtungen 3014 und die GPI-Matrix 3016 bilden ein paralleles
Punkt-zu-Punkt-Verbindungsmittel für einen Datentransfer zwischen S-Einrichtungen 3012.
In ähnlicher Weise bilden die GPI-Matrix 3016, der Satz T-Einrichtungen 3014 und der Satz
Ein-/Ausgabe-T-Einrichtungen 3018 ein paralleles Punkt-zu-Punkt-Verbindungsmittel für
einen Ein-/Ausgabe-Transfer zwischen S-Einrichtungen 3012 und jeder Ein-/Ausgabevor
richtung 3020. Die Master-Zeitbasiseinheit 3022 weist einen Oszillator auf, der ein Master-
Zeitsteuersignal zu jeder S-Einrichtung 3012 und jeder T-Einrichtung 3014 schafft.
In einer beispielhaften Ausführungsform ist jede S-Einrichtung 3012 durch Verwenden eines
Xilinx C4013 (Xilinx, Inc., San Jose, CA) feldprogrammierbaren Gate-Array (FPGA)
ausgeführt, das mit einem 64 Megabyte Randomspeicher (RAM) verbunden ist. Jede
T-Einrichtung 3014 ist durch Verwenden von annähernd 50% der rekonfigurierbaren Hardware-
Ressourcen in einem Xilinx XC4013 FPGA ausgeführt, ebenso jede Ein-/Ausgabe-T-Ein
richtung 3018 ist. Die GPI-Matrix 3014 ist als ein ringförmiges Verbindungsmaschennetz
ausgeführt. Die Master-Zeitbasiseinheit 3020 ist ein Taktoszillator, der vorgesehen ist, um
eine Verteilungsschaltung zu takten, um eine systemweite Frequenzreferenz zu schaffen.
Vorzugsweise übertragen die GPI-Matrix 3014 die T-Einrichtung 3012 und die Ein-/Ausgabe-T-Ein
richtung 3018 Information entsprechend ANSI/IEEE-Standard 1596 bis 1992, wodurch
ein skalierbares kohärentes Interface (SCI) definiert ist.
In der bevorzugten Ausführungsform weist das System 3010 mehrere S-Einrichtungen 3012
auf, welche parallel arbeiten. Der Aufbau und die Funktionalität jeder der einzelnen
S-Einrichtungen 3012 wird im einzelnen anhand von Fig. 10 bis 20B beschrieben. In Fig. 10 ist
ein Blockdiagramm einer bevorzugten Ausführungsform einer S-Einrichtung 3012 dargestellt.
Die S-Einrichtung 3012 weist eine erste lokale Zeitbasiseinheit 3030, eine dynamisch
rekonfigurierbare Verarbeitungs-(DRP-)Einheit 3032 zum Ausführen von Programmbefehlen
und einen Speicher 3034 auf. Die erste lokale Zeitbasiseinheit 303 hat einen Zeitsteuer
eingang, welche den Master-Zeitsteuereingang der S-Einrichtung bildet. Die erste lokale
Zeitbasiseinheit 3030 hat auch einen Zeitsteuerausgang, der ein erstes lokales Zeitsteuersignal
oder ein Taktsignal an einem Zeitsteuereingang der DRP-Einheit 3032 und an einem
Zeitsteuereingang des Speichers 3034 über eine erste Zeitsteuerleitung 3040 schafft. Die
DRP-Einheit 3032 hat einen Steuersignal-Ausgang, der mit einem Steuersignaleingang des
Speichers 3034 über eine Speichersteuerleitung 3042 verbunden ist, einen Adressenausgang,
der mit einem Adresseneingang des Speichers 3034 über eine Adressenleitung 3044
verbunden ist, und einen zweiseitig gerichteten Steuerport, der mit einem zweiseitig
gerichteten Steuerport des Speichers 3034 über eine Speicher-Ein-/Ausgabeleitung 3046
verbunden ist. Die DPR-Einheit 3032 hat zusätzlich einen zweiseitig gerichteten Steuerport,
der über einen zweiseitig gerichteten Steuerport der entsprechenden T-Einrichtung 3014 über
eine externe Steuerleitung 3048 verbunden ist. Wie in Fig. 10 dargestellt, überspannt die
Speichersteuerleitung 3042 X-Bits; die Adressenleitung 3044 überspannt M-Bits; die
Speicherein-/Ausgabeleitung 3046 überspannt (N × k) Bits und die externe Steuerleitung 3048
überspannt Y-Bits.
In der bevorzugten Ausführungsform empfängt die erste lokale Zeitbasiseinheit 3030 das
Master-Zeitsteuersignal bzw. Master-Taktsignal von der Master-Zeitbasiseinheit 3022. Die
erste lokale Zeitbasiseinheit 3030 erzeugt das erste lokale Zeitsteuersignal auf dem Master-
Zeitsteuersignal und gibt das erste lokale Zeitsteuersignal an die DRP-Einheit 3032 und den
Speicher 3034 ab. In der bevorzugten Ausführungsform kann sich das erste lokale
Zeitsteuersignal von einer S-Einrichtung 3012 zur anderen ändern. Folglich arbeiten die
DRP-Einheit 3032 und der Speicher 3034 in einer vorgegebenen S-Einrichtung 3012 mit
einer unabhängigen Taktrate bezüglich der DRP-Einheit 3032 und dem Speicher 3034 in einer
anderen S-Einrichtung 3012. Vorzugsweise ist das erste lokale Zeitsteuersignal phasensyn
chronisiert mit dem Master-Zeitsteuersignal. In der bevorzugten Ausführungsform ist die
erste lokale Zeitbasiseinheit 3030 durch Verwenden einer phasengekoppelten Frequen
zumwandlungsschaltung ausgeführt, die eine phasengekoppelte Detektionsschaltung enthält,
die mit Hilfe von rekonfigurierbaren Hardware-Ressourcen ausgeführt ist. Der Fachmann
weiß, daß in einer alternativen Ausführungsform die erste lokale Zeitbasiseinheit 3030 auch
als ein Teil eines Taktverteilungsbaums ausgeführt sein könnte.
Der Speicher 3034 ist vorzugsweise als ein RAM ausgeführt und speichert Programmbefehle,
Programmdaten und Konfigurationsdatensätze für die DRP-Einheit 3032. Der Speicher 3034
einer vorgegebenen S-Einrichtung 3012 ist vorzugsweise für eine andere S-Einrichtung 3012
in dem System 3010 über die GPI-Matrix 3016 zugänglich. Darüber hinaus ist jede
S-Einrichtung 3012 vorzugsweise dadurch gekennzeichnet, daß sie einen gleichförmigen
Speicheradressenplatz hat. In der bevorzugten Ausführungsform enthalten Programmbefehle,
die in dem Speicher 3040 selektiv gespeichert sind, Rekonfigurationsanweisungen, die in
Richtung der DRP-Einheit 3032 gerichtet sind.
In Fig. 11A weist die beispielhafte Programmauflistung 3050 einen Satz Außenschleifenteile
3052, sowie erste bis fünfte Innenschleifenteile 3050 bis 3057 auf. Wie der Fachmann weiß,
verweist der Begriff "Innenschleife" auf einen iterativen Teil eines Programms, das dafür
verantwortlich ist, einen ganz bestimmten Satz verwandter Operationen durchzuführen, und
der Begriff "Außenschleife" verweist auf die Teile eines Programms hin, die hauptsächlich
dafür verantwortlich sind, universelle Operationen und/oder eine Übertragungssteuerung von
einem Innenschleifenteil zu einem anderen durchzuführen. Im allgemeinen führen
Innenschleifenteile 3054 bis 3058 eines Programms spezifische Operationen an möglicher
weise großen Datensätzen durch. Bei einer Bildverarbeitungsanwendung kann der erste innere
Schleifenteil 3054 Farbformat-Umsetzoperationen an Bilddaten durchführen, und die zweiten
bis fünften Innenschleifenteile 3055 bis 3058 können eine lineare Filterung, eine Faltung,
Mustersuch- und Kompressionsoperationen durchführen. Wie der Fachmann weiß, kann eine
aneinanderhängende Folge von Innenschleifenteilen 3055 bis 3058 als eine Software-Pipeline
betrachtet werden. Jeder Außenschleifenteil 3052 würde für eine Daten-Ein-/Ausgabe
und/oder für ein Leiten der Datenübertragung und ein Steuern von dem ersten Innenschleifen
teil 3054 zu dem zweiten Innenschleifenteil 3055 verantwortlich sein. Zusätzlich erkennt der
Fachmann, daß ein vorgegebener Innenschleifenteil 3054 bis 3058 eine oder mehrere
Rekonfigurationsanweisungen enthalten kann. Im allgemeinen werden für ein vorgegebenes
Programm die Außenscheifenteile 3052 der Programmauflistung 3050 eine Vielfalt von
universellen Befehlstypen enthalten, während die Innenschleifenteile 3054, 3056 der
Programmauflistung 3050 aus verhältnismäßig wenigen Befehlstypen bestehen, die verwendet
werden, um eine spezifische Menge an Operationen durchzuführen.
In einer beispielhaften Programmauflistung 3050 erscheint eine erste Konfigurations
anweisung am Anfang des ersten Innenschleifenteils 3054, und eine zweite Rekonfigurations
anweisung erscheint am Ende des ersten Innenschleifenteils 3054. Dementsprechend erscheint
eine dritte Konfigurationsanweisung zu Beginn des zweiten Innenschleifenteils 3055; eine
vierte Rekonfigurationsanweisung erscheint zu Beginn des dritten Innenschleifenteils 3056;
eine fünfte Rekonfigurationsanweisung erscheint zu Beginn des vierten Innenschleifenteils
3057 und eine sechste und siebte Rekonfigurationsanweisung erscheint am Anfang bzw. am
Ende des fünften Innenschleifenteils 3058. Jede Rekonfigurationsanweisung verweist
vorzugsweise auf einen Rekonfigurationsdatensatz, welcher eine interne DRPU-Hardware-
Organisation spezifiziert, die auf die Ausführung einer ganz bestimmen Befehlssatz-
Architektur (ISA) gewidmet und dafür optimiert worden ist. Eine IS-Architektur ist ein
Stamm- oder Kernsatz von Informationen, die verwendet werden können, um einen Rechner
zu programmieren. Eine IS-Architektur definiert Befehlsformate, Operationscodes,
Datenformate, Adressiermodes, Ausführungs-Steuerflags und programmzugängliche Register.
Der Fachmann weiß, daß dies der herkömmlichen Definition einer IS-Architektur entspricht.
In der vorliegenden Erfindung kann jede DRP-Einheit 3032 einer S-Einrichtung schnell
laufzeit-konfiguriert werden, um direkt Mehrfach-IS-Architekturen durch die Verwendung
eines eindeutigen Konfigurationsdatensatzes für jede gewünschte IS-Architektur auszuführen.
Das heißt, jede IS-Achitektur wird mit einer eindeutigen internen DRPU-Hardware-
Organisation durchgeführt, wie die durch einen entsprechenden Konfigurationsdatensatz
spezifiziert ist. Folglich entsprechen in der vorliegenden Erfindung die ersten bis fünften
Innenschleifenteile 3054 bis 3058 jeweils einer eindeutigen IS-Architektur, nämlich ISA 1,
2, 3, 4 bzw. k. Der Fachmann erkennt, daß jede nachfolgende IS-Architektur nicht eindeutig
zu sein braucht. Folglich könnte ISA k ISA 1, 2, 3, 4 oder irgendeine andere ISA sein. Der
Satz Außenschleifenteile 3052 entspricht auch einer eindeutigen ISA, nämlich ISA 0. In der
bevorzugten Ausführungsform kann während einer Programmausführung die Auswahl von
aufeinanderfolgenden Rekonfigurationsanweisungen datenabhängig sein. Bei Auswahl einer
vorgegebenen Rekonfigurationsanweisung werden Programmbefehle nacheinander gemäß
einer entsprechenden IS-Architektur über eine eindeutige DRPU-Hardware-Konfiguration
ausgeführt, was durch einen entsprechenden Konfigurations-Datensatz spezifiziert ist.
In der Erfindung kann eine vorgegebene IS-Architektur als eine Innenschleifen-IS-Architektur
oder als eine Außenschleifen-IS-Architektur entsprechend der Anzahl und den Typen von
Befehlen, welche sie enthält, in Kategorien eingeteilt werden. Eine IS-Architektur, die
mehrere Befehle enthält und die zum Durchführen genereller Operationen brauchbar ist, ist
eine Außenschleifen-ISA, während eine ISA, die aus relativ wenigen Befehlen besteht und
die darauf ausgerichtet ist, spezifische Operationstypen durchzuführen, eine Innenschleifen-
ISA ist. Da eine Außenschleifen-ISA darauf gerichtet ist, generelle Operationen durch
zuführen, ist eine Außenschleifen-ISA am zweckdienlichsten, wenn eine parallele Programm-
Befehlsausführung wünschenswert ist. Die Wirksamkeit einer Ausführung einer Innen
schleifen-ISA ist vorzugsweise hinsichtlich Befehlen gekennzeichnet, die pro Taktzyklus
durchgeführt werden oder hinsichtlich rechten Ergebnissen gekennzeichnet, die pro
Taktzyklus erzeugt worden sind.
Der Fachmann erkennt, daß die vorhergehende Erörterung einer sequentiellen Programm
befehlsausführung und einer parallelen Programmbefehlsausführung eine Programmbefehls
ausführung mit einer einzigen DRP-Einheit 3032 betrifft. Das Vorhandensein von mehreren
S-Einrichtung Rekonfigurationsanweisungen 3012 in dem System 3010 erleichtert die
parallele Ausführung von mehreren Programmbefehlsfolgen in einer vorgegebenen Zeit,
wobei jede Programmbefehlsfolge durch eine vorgegebene DRP-Einheit 3032 durchgeführt
wird. Jede DRP-Einheit 3032 ist entsprechend konfiguriert, um eine parallele oder serielle
Hardware zu haben, um eine ganz bestimmte Innenschleifen-ISA bzw. eine Außenschleifen-
ISA in einer ganz bestimmten Zeit durchzuführen. Die interne Hardware-Konfiguration einer
vorgegebenen DRP-Einheit 3032 ändert sich mit der Zeit entsprechend der Auswahl von
einer oder mehreren Rekonfigurationsanweisungen, die in eine Folge von durchzuführenden
Programmbefehlen eingebettet sind.
In einer bevorzugten Ausführungsform sind jede IS-Architektur und deren entsprechende
interne DRPU-Hardware-Organisation entsprechend ausgelegt, um eine optimale Rechenlei
stung für eine ganz bestimmte Klasse von Rechenproblemen bezüglich einer Menge
verfügbarer rekonfigurierbarer Hardware-Ressourcen zu schaffen. Wie vorher bereits erwähnt
und wie nunmehr nachstehend im einzelnen näher beschrieben wird, ist eine interne DRPU-
Hardware-Organisation, die einer Außenschleifen-ISA entspricht, vorzugsweise für eine
sequentielle Programmbefehlsausführung optimiert, und eine interne DRPU-Hardware-
Organisation, die einer Innenschleifen-ISA entspricht, ist vorzugsweise für eine parallele
Programmbefehlsausführung optimiert.
Mit Ausnahme jeder Rekonfigurationsanweisung weist die beispielhafte Programmauflistung
3050 der Fig. 11A vorzugsweise herkömmliche Hochsprachenangaben auf, beispielsweise
Angaben die entsprechend der C-Programmiersprache geschrieben sind. Der Fachmann
erkennt, daß das Einbeziehen von einer oder mehreren Rekonfigurationsanweisungen in eine
Folge von Programmbefehlen einen Compiler erfordert, der modifiziert ist, um für die
Rekonfigurationsanweisungen verantwortlich zu sein.
In Fig. 11B ist ein Flußdiagramm von herkömmlichen Compilieroperationen dargestellt, die
während des Compilierens bzw. Übersetzens einer Folge von Programmbefehlen durch
geführt worden sind. Hierbei entsprechen die herkömmlichen Compilieroperationen im
allgemeinen denjenigen, die von dem GNU C Compiler (GCC) durchgeführt worden sind,
der von der Free Software Foundation (Cambridge, MA) hergestellt worden ist. Der
Fachmann weiß, daß die herkömmlichen Compilieroperationen, die unten beschrieben
werden, ohne weiteres für andere Compiler verallgemeinert werden können. Die herkömm
lichen Compilieroperationen beginnen beim Schritt 3500 mit dem Compiler-Frontende, das
eine nächste Hochsprachen-Anweisung für eine Folge von Programmbefehlen auswählt. Als
nächstes erzeugt das Compiler-Frontende beim Schritt 3502 einen Zwischencode, der der
ausgewählten Hochsprachen-Anweisung entspricht, welche im Falle von GCC Register-
Transterpegel-(RTL-)Angaben entspricht. Im Anschluß an den Schritt 3502 bestimmt das
vordere Compilerende, ob eine andere Hochsprachen-Anweisung eine Beachtung beim Schritt 3504
erfordert. Wenn dem so ist, kehrt das bevorzugte Verfahren auf den Schritt 3500
zurück.
Wenn beim Schritt 3504 das vordere Compilerende bestimmt, daß keine andere Hoch
sprachenanweisung Beachtung erfordert, führt das hintere Compilerende als nächstes
herkömmliche Registerzuordnungsoperationen beim Schritt 3605 durch. Nach dem Schritt
3506 wählt das hintere Compilerende eine nächste RTL-Angabe hinsichtlich einer aktuellen
RTL-Anweisungsgruppe beim Schritt 3508 aus. Das hintere Compilerende bestimmt dann,
ob eine Vorschrift, die eine Art und Weise spezifiziert, in welcher die aktuelle RTL-
Anweisungsgruppe in einen Satz von Assemblersprachen-Anweisungen übersetzt werden
kann, beim Schritt 3510 vorhanden ist. Wenn eine derartige Vorschrift nicht vorhanden ist,
kehrt das bevorzugte Verfahren auf den Schritt 3508 zurück, um eine andere RTL-Anweisung
für ein Einbeziehen in die aktuelle RTL-Anweisungsgruppe auszuwählen. Wenn eine
Vorschrift, die der aktuellen RTL-Anweisungsgruppe entspricht, existiert, erzeugt das hintere
Compilerende beim Schritt 3512 einen Satz Assemblersprachen-Anweisungen entsprechend
der Vorschrift. Nach dem Schritt 3512 stellt das hintere Compilerende fest, ob eine nächste
RTL-Anweisung Beachtung im Kontext mit einer nächsten RTL-Anweisungsgruppe erfordert.
Wenn dem so ist, kehrt das bevorzugte Verfahren auf Schritt 3508 zurück; andernfalls ist das
bevorzugte Verfahren beendet.
Die vorliegende Erfindung enthält vorzugsweise einen Compiler für ein dynamisch
rekonfigurierbares Berechnen. In Fig. 11C und 11D ist ein Flußdiagramm von bevorzugten
Compilieroperationen dargestellt, die von einem Compiler für ein dynamisch rekonfigurier
bares Berechnen durchgeführt worden sind. Die bevorzugten Compileroperationen beginnen
beim Schritt 3600 mit dem vorderen Ende des Compilers, der eine nächste Hochsprachen-
Anweisung in einer Folge von Programmbefehlen auswählt. Als nächstes bestimmt das
vordere Ende des Compilers beim Schritt 3602, ob die ausgewählte Hochsprachen-Anweisung
eine Rekonfigurationsanweisung ist. Wenn dem so ist, erzeugt das vordere Ende des
Compilers eine RTL-Regkonfigurationsanweisung beim Schritt 3604, worauf dann das
bevorzugte Verfahren auf Schritt 3600 zurückkehrt. In der bevorzugten Ausführungsform ist
die RTL-Rekonfigurationsanweisung eine nichtnormierte RTL-Anweisung, die einen
ISA-Identifizierung erhält. Wenn beim Schritt 3602 die ausgewählte Hochprogramm-Anweisung
nicht eine Rekonfigurationsanweisung ist, erzeugt das vordere Ende des Compilers als
nächstes einen Satz RTL-Anweisungen in herkömmlicher Weise beim Schritt 3606. Nach
dem Schritt 3606 bestimmt das vordere Ende des Compilers beim Schritt 3608, ob eine
andere Hochsprachen-Anweisung Berücksichtigung erfordert. Wenn dem so ist, kehrt das
bevorzugte Verfahren auf den Schritt 3600 zurück; anderenfalls geht das bevorzugte
Verfahren auf Schritt 3610 über, um Operationen am Compilerende zu initiieren.
Beim Schritt 3610 führt das hintere Ende des Compilers für ein dynamisch rekonfigurierbares
Berechnen Register-Zuordnungsoperationen durch. In der bevorzugten Ausführungsform der
Erfindung ist jede ISA-Architektur so definiert, daß die Register-Architektur von einer IS-
Architektur zur anderen folgerichtig ist; daher werden Register-Zuordnungsoperationen in
herkömmlicher Weise durchgeführt. Der Fachmann erkennt, daß im allgemeinen eine
folgerichtige Register-Architektur von einer ISA zur anderen keine absolute Forderung ist.
Als nächstes wählt das hintere Ende des Compilers eine nächste RTL-Anweisung in einer
aktuell in Betracht gezogenen RTL-Anweisungsgruppe beim Schritt 3612 aus. Das hintere
Ende des Compilers bestimmt dann beim Schritt 3614, ob die ausgewählte RTL-Anweisung
eine RTL-Rekonfigurationsanweisung ist. Wenn die ausgewählte RTL-Anweisung nicht eine
RTL-Rekonfigurationsanweisung ist, bestimmt das hintere Ende des Compilers beim Schritt
3618, ob eine Vorschrift für die aktuell in Betracht gezogene RTL-Anweisungsgruppe
existiert. Wenn dem nicht so ist, kehrt das bevorzugte Verfahren auf den Schritt 3612
zurück, um eine nächste RTL-Anweisung für ein Einbeziehen in die aktuell in Betracht
gezogene RTL-Anweisungsgruppe zu wählen. In dem Fall, daß eine Vorschrift für die aktuell
in Betracht gezogene RTL-Anweisungsgruppe beim Schritt 3618 existiert, erzeugt das hintere
Ende des Compilers als nächstes einen Satz Assemblersprachen-Anweisungen beim Schritt
3620, welche der aktuell in Betracht gezogenen RTL-Anweisungsgruppe gemäß dieser
Vorschrift entsprechen. Nach dem Schritt 3620 bestimmt das hintere Ende des Compilers
beim Schritt 3622, ob eine andere RTL-Anweisung eine Berücksichtigung im Kontext mit
einer nächsten RTL-Anweisungsgruppe erfordert. Wenn dem so ist, kehrt das bevorzugte
Verfahren auf den Schritt 3612 zurück; anderenfalls endet das bevorzugte Verfahren.
Wenn beim Schritt 3614 die ausgewählte RTL-Anweisung eine RTL-Rekonfigurations
anweisung ist, wählt das hintere Ende des Compilers einen Vorschriftensatz beim Schritt
3616 aus, welcher der ISA-Identifizierung der RTL-Rekonfigurationsanweisung entspricht.
In der vorliegenden Erfindung existiert vorzugsweise ein eindeutiger Vorschriftensatz für jede
ISA. Jeder Vorschriftensatz schafft daher eine oder mehrere Vorschriften, um Gruppen von
RTL-Anweisungen in Assemblersprachen-Anweisungen entsprechend einer ganz bestimmten
IS-Architektur umzuwandeln. Nach dem Schritt 3616 geht das bevorzugte Verfahren auf
Schritt 3618 über. Der Vorschriftensatz, der einer vorgegebenen IS-Architektur entspricht,
enthält vorzugsweise ein Vorschrift, um die RTL-Rekonfigurationsanweisung in einen Satz
Assemblersprachen-Befehle zu übersetzen, die eine Software-Unterbrechung erzeugen, die
auf eine Durchführung eines Rekonfigurations-Abwicklers (handler) hinausläuft, wie im
einzelnen unten beschrieben wird.
In der vorstehend beschriebenen Weise erzeugt der Compiler für dynamisch rekonfigurier
bares Berechnen selektiv und automatisch Assemblersprachen-Anweisungen entsprechend
mehreren IS-Architekturen während Compileroperationen. Mit anderen Worten, während des
Compilerprozesses übersetzt der Compiler einen einzigen Satz Programmbefehlen
entsprechend einer variablen IS-Architektur. Der Compiler ist vorzugsweise ein herkömm
licher Compiler, der modifiziert worden ist, um bevorzugte Compileroperationen
durchzuführen, die vorstehend unter Bezugnahme auf Fig. 11C und 11D beschrieben worden
sind. Der Fachmann erkennt, daß, obwohl die geforderten Modifikationen nicht komplex
sind, solche Modifikationen im Hinblick sowohl auf herkömmliche Compilertechniken als
auch im Hinblick auf herkömmliche rekonfigurierbaren Berechnungsmethoden nicht
offensichtlich und naheliegend sind.
In Fig. 12 ist ein Blockdiagramm einer bevorzugten Ausführungsform einer dynamisch
rekonfigurierbaren Verarbeitungseinheit 3032 dargestellt. Die DRP-Einheit 3032 weist eine
Befehlsabruf-(IF-)Einheit 3016, eine Datenoperations-(D0-)Einheit 3062 und eine
Adressenoperations-(AO-)Einheit 3064 auf. Jede der IF-Einheiten 3060, der DO-Einheiten
3062 und der AO-Einheiten 3064 hat einen Zeitsteuereingang, welcher mit der ersten
Zeitsteuersignalleitung 3040 verbunden ist. Die IF-Einheit 3060 hat einen Speichersteuer
ausgang, welcher mit der Leitung 3042 verbunden ist, einen Dateneingang, der mit einer
Leitung 3046 verbunden ist, und einen zweigerichteten Steuereingang, der mit der externen
Steuerleitung 3048 verbunden ist. Die IF-Einheit 3060 hat zusätzlich einen ersten
Steuerausgang, der mit einem ersten Steuereingang der DO-Einheit 3062 über eine erste
Steuerleitung 3070 verbunden ist, und einen zweiten Steuerausgang, der mit einem ersten
Steuereingang der AO-Einheit 3064 über eine zweite Steuerleitung 3072 verbunden ist. Die
IF-Einheit 3060 hat auch einen dritten Steuerausgang, der mit einem zweiten Steuereingang
der DO-Einheit 3062 und mit einem zweiten Steuereingang der AO-Einheit 3064 über eine
dritte Steuerleitung 3074 verbunden ist. Die DO-Einheit 3062 und die AO-Einheit 3064 haben
jeweils einen zweigerichteten Dateneingang, der mit der Speicher-Ein-/Ausgabeleitung 3064
verbunden ist. Schließlich hat die AO-Einheit 3064 einen Adressenausgang, welcher den
Adressenausgang der DRP-Einheit bildet.
Die DRP-Einheit 3032 ist vorzugsweise unter Verwendung einer rekonfigurierbaren oder
umprogrammierbaren Logikvorrichtung, beispielsweise einer FPGA, wie einer Xilinx
XC4013 (Xilinx, Inc., San Jose, CA) oder einer AT ORCA™ 1C07 (AT Microelec
tronics, Allentown, PA) durchgeführt. Vorzugsweise schafft die umprogrammierbare
Logikvorrichtung eine Anzahl von 1) selektiv umprogrammierbaren Logikblöcken oder
konfigurierbaren Logikblöcken CLB), von 2) selektiv programmierbaren Ein-/Ausgabe-
Blöcken (IOB), von 3) selektiv umprogrammierbaren Verbindungsstrukturen, von 4)
Datenspeicher-Ressourcen, von 5) Puffer-Ressourcen mit drei Zuständen und von 6)
verdrahteten logischen Funktionsmerkmalen. Jeder CLB enthält vorzugsweise eine selektiv
rekonfigurierbare Schaltungsanordnung zum Erzeugen logischer Funktionen, zum Speichern
von Daten und zum Lenken von Signalen. Der Fachmann weiß, daß eine rekonfigurierbare
Datenspeicherschaltung auch in einem oder mehreren Datenspeicherblöcken (DSB), die von
der Gruppe CL-Blöcken getrennt ist, in Abhängigkeit von der genauen Bemessung der zu
verwendenden umprogrammierbaren Logikvorrichtung enthalten sein kann. Hierbei ist
angenommen, daß sich die rekonfigurierbare Datenspeicherschaltung in einer FPGA in den
CL-Blöcken befindet; das heißt, das Vorhandensein von DS-Blöcken wird nicht angenommen.
Der Fachmann erkennt ohne weiteres, daß ein oder mehrere der hier beschriebenen
Elemente, die eine auf CL-Blöcken basierende, rekonfigurierbare Datenspeicherschaltung
benutzen, eine auf DS-Blöcken basierende Schaltungsanordnung in dem Fall benützen
können, daß DS-Blöcke vorhanden sind. Jeder IO-Block enthält vorzugsweise eine selektiv
rekonfigurierbare Schaltungsanordnung, um Daten zwischen CL-Blöcken und einem FPAG-
Ausgangsanschlußstift zu übertragen. Ein Konfigurationsdatensatz definiert eine DRPU-
Hardware-Konfiguration oder Organisation durch Spezifizieren von Funktionen, die in W-
Blöcken durchgeführt worden sind, sowie Verbindungen 1) in CL-Blöcken, 2) zwischen CL-
Blöcken, 3) in IO-Blöcken, 4) zwischen IO-Blöcken und 5) zwischen CL- und IO-Blöcken.
Der Fachmann erkennt, daß über einen Konfigurationsdatensatz, die Anzahl Bits jeweils in
der Speichersteuerleitung 3042, der Adressenleitung 3044, der Speicherleitung 3046 und der
externen Steuerleitung 3048 rekonfigurierbar ist. Vorzugsweise werden Konfigurations
datensätze in einem oder mehreren Speichern 3034 der S-Einrichtung in dem System 3010
gespeichert. Der Fachmann erkennt, daß die DRP-Einheit 3032 nicht auf eine auf FPGA
basierende Ausführung beschränkt ist. Beispielsweise könnte die DRP-Einheit 3032 als eine
auf einem RAM basierende Zustandseinrichtung ausgeführt sein, die möglicherweise ein oder
mehrere Hinweistabellen enthält. Alternativ hierzu könnte die DRP-Einheit 3032 mit Hilfe
einer komplexen programmierbaren Logikvorrichtung (CPLD) ausgeführt sein. Jedoch wird
der Fachmann realisieren, daß einige der S-Einrichtungen 3012 des Systems 3010
DRP-Einheiten 3032 haben können, die nicht rekonfigurierbar sind.
In einer bevorzugten Ausführungsform sind die IF-Einheit 3060, die DO-Einheit 3062 und
die AO-Einheit 3064 jeweils dynamisch rekonfigurierbar. Folglich kann deren interne
Hardware-Konfiguration selektiv während einer Programmdurchführung modifiziert werden.
Die IF-Einheit 3060 richtet Befehlsabruf- und Decodieroperationen, Zugriffsoperationen,
DRPU-Rekonfigurationsoperationen aus und gibt Steuersignale an die DO-Einheit 3062 und
die AO-Einheit 3064 ab, um eine Befehlsausführung zu erleichtern. Die DO-Einheit 3062
führt Operationen einschließlich einer Datenberechnung durch und die AO-Einheit 3064 führt
Operationen einschließlich einer Adressenberechnung durch. Der innere Aufbau und die
Arbeitsweise der IF-Einheit 3060, der DO-Einheit 3062 und der AO-Einheit 3064 wird
nunmehr im einzelnen beschrieben.
In Fig. 13 ist ein Blockdiagramm einer bevorzugten Ausführungsform einer Befehlsab
ruf-(IF-)Einheit 3060 dargestellt. Die IF-Einheit 3060 weist einen Befehlszustands-Zuordner(ISS)
3100, einen Architekturbeschreibungsspeicher 3101, eine Speicherzugriffslogik 3102, einen
Rekonfigurationslogik 3104, eine Unterbrechungslogik 3106, eine Abrufsteuereinheit 3108,
einen Befehlspuffer 3110, eine Decodiersteuereinheit 3112, einen Befehlsdecodierer 3114,
einen Operationscode-Speicherregistersatz 3116, einen Registerdatei-(RF-)Adressenre
gistersatz 3118, einen Konstanten-Registersatz 3120 und einen Prozeßsteuer-Registersatz 3122
auf. Der IS-Zuordner 3100 hat einen ersten und zweiten Steuerausgang, welcher die ersten
und zweiten Steuerausgänge der IF-Einheit bildet und einen Zeitsteuereingang, welcher den
Zeitsteuereingang der IF-Einheit bildet. Der IS-Zuordner 3100 hat auch einen Ab
ruf/Decodier-Steuerausgang, der mit einem Steuereingang der Abrufsteuereinheit 3108 und
einem Steuereingang der Decodiersteuereinheit 3112 über eine Abruf-Decodier-Steuerleitung
3130 verbunden ist. Der IS-Zuordner 3100 hat zusätzlich einen zweigerichteten Steuer
eingang, der mit einem ersten zweigerichteten Steuereingang jeweils der Speicherzugrifflogik
3102, der Rekonfigurationslogik 3104 und der Unterbrechungslogik 3106 über eine
zweigerichtete Steuerleitung 3132 verbunden ist. Der IS-Zuordner 3100 hat auch einen
Operationscode-Eingang, der mit einem Ausgang des Operationscode-Speicherregistersatzes
3116 über eine Operationscode-Leitung 3142 verbunden ist. Schließlich hat der IS-Zuordner
3100 einen zweigerichteten Dateneingang, der mit einem zweigerichteten Dateneingang des
Prozeßsteuer-Registersatzes 3122 über eine Prozeßdatenleitung 3144 verbunden ist.
Jeweils die Speicherzugriffslogik 3102, die Rekonfigurationslogik 3104 und die Unter
brechungslogik 3106 haben einen zweiten zweigerichteten Steuereingang, welcher mit der
externen Steuerleitung 3048 verbunden ist. Die Speicherzugriffslogik 3102, die Re
konfigurationslogik 3104 und die Unterbrechungslogik 3106 haben zusätzlich jeweils einen
Dateneingang, der mit einem Datenausgang des Architektur-Beschreibungsspeichers 3101
über eine Steuerleitung 3138 verbunden ist. Die Speicherzugriffslogik 3102 hat zusätzlich
einen Steuerausgang, welcher den Speichersteuerausgang der IF-Einheit bildet, und die
Unterbrechungslogik 3106 hat zusätzlich einen Ausgang, der mit der Prozeßdatenleitung 3144
verbunden ist. Der Befehlspuffer 3110 hat einen Dateneingang, welcher den Dateneingang
der IF-Einheit bildet, einen Steuereingang, der mit einem Steuerausgang der Abrufsteuer
einheit 3108 über eine Abrufsteuerleitung 3134 verbunden ist, und einen Ausgang, der mit
einem Eingang des Befehlsdecodierers 3114 über eine Befehlsleitung 3136 verbunden ist. Der
Befehlscodierer 3114 hat einen Steuereingang, der mit einem Steuerausgang der Decodier
steuereinheit 3112 über eine Decodiersteuerleitung 3138 verbunden ist, und einen Ausgang,
der über eine Befehlsleitung 3140 mit 1) einem Ausgang des Operationscode-Speicher
registers 3116, mit 2) einem Eingang des HF-Adressenregistersatzes 3118 und 3) mit einem
Eingang des Konstanten-Registersatzes 3120 verbunden ist. Der HF-Adressenregistersatz
3118 und der Konstanten-Registersatz 3120 haben jeweils einen Ausgang, die zusammen den
dritten Steuerausgang 3074 der IF-Einheit bilden.
Der Architektur-Beschreibungsspeicher 3101 speichert Architektur-Spezifikationssignale,
welche die aktuelle DRPU-Konfiguration kennzeichnen. Vorzugsweise enthalten die
Architektur-Spezifikationssignale 1) eine Referenz zu einem fehlerhaften Konfigurationsdaten
satz, 2) eine Referenz zu einer Liste zulässiger Konfigurationsdatensätze, 3) eine Referenz
zu einem Konfigurationsdatensatz, welcher der aktuell in Betracht gezogenen ISA entspricht,
d. h. eine Referenz zu dem Konfiguration-Datensatz, welcher die aktuelle DRPU-Konfigura
tion definiert, 4) eine Verbindungs-Adressenliste, welche eine oder mehrere Verbindungs-
Ein/Ausgabeeinheiten 3304 in der T-Einrichtung 3014 identifiziert, welche der S-Einrichtung
3012 zugeordnet ist, in welcher die IF-Einheit 3060 untergebracht ist, wie im einzelnen unten
in Verbindung mit Fig. 21 noch beschrieben wird, 5) einen Satz Unterbrechungsansprech
signale, welche eine Unterbrechungslatenz und Unterbrechungspräzisions-Information
spezifizieren, welche definiert, wie die IF-Einheit 3060 auf Unterbrechungen antwortet, und
6) eine Speicherzugriffskonstante, welche ein Speicheradressen-Inkrement definiert.
In der bevorzugten Ausführungsform implementiert jeder Konfigurations-Datensatz den
Architektur-Beschreibungsspeicher 3101 als einen Satz von CL-Blöcken, die als ein
Festwertspeicher (ROM) konfiguriert sind. Die Architektur-Spezifikationssignale, welche den
Inhalt des Architekturbeschreibungsspeichers 3101 definieren, sind vorzugsweise in jedem
Konfigurations-Datensatz enthalten. Folglich ändert sich, da jeder Konfigurations-Datensatz
einer ganz bestimmten ISA entspricht, der Inhalt des Architektur-Beschreibungsspeichers
3103 entsprechend der aktuellen in Betracht gezogenen ISA. Für eine vorgegebene ISA wird
ein Programmzugriff auf den Inhalt des Architektur-Beschreibungsspeichers 3101
vorzugsweise durch das Einbeziehen eines Speicherlesebefehls in dem ISA erleichtert. Dies
ermöglicht einem Programm, die Information über die aktuelle DRPU-Konfiguration während
einer Programmdurchführung wieder aufzufinden.
In der vorliegenden Erfindung ist die Konfigurationslogik 3104 eine Zustandseinrichtung,
welche eine Folge von Rekonfigurationsoperationen steuert, welche eine Rekonfiguration der
DRP-Einheit 3032 entsprechend einem Konfigurationsdatensatz erleichtern. Vorzugsweise
initiiert die Rekonfigurationslogik 3104 die Rekonfigurationsoperationen bei Empfang eines
Rekonfigurationssignals. Wie unten noch im einzelnen beschrieben wird, wird das
Rekonfigurationssignal von der Unterbrechungslogik 3106 entsprechend einer Rekonfigura
tionsunterbrechung, die auf der externen Steuerleitung 3048 erhalten worden ist, oder durch
die ISS 3100 entsprechend einer Rekonfigurationsanweisung erzeugt, die in ein Programm
eingebettet ist. Die Rekonfigurationsoperationen sorgen für eine anfängliche DRPU-Kon
figuration, auf die eine Energieeinschalt/Rücksetzbedingung mit Hilfe des vorgegebenen
Konfigurationsdatensatzes von dem Architektur-Beschreibungsspeicher 3101 folgt. Die
Rekonfigurationsoperationen sorgen auch für eine selektive DRPU-Rekonfiguration, nachdem
die anfängliche DRPU-Konfiguration eingerichtet worden ist. Bei Beendigung der
Rekonfigurationsoperationen gibt die Rekonfigurationslogik 3104 ein Beendigungssignal ab.
In der bevorzugten Ausführungsform ist die Rekonfigurationslogik 3104 eine nicht
rekonfigurierbare Logik, welche das Laden von Konfigurationsdatensätze in die um
programmierbare Logikvorrichtung selbst steuert, und folglich ist die Folge von Re
konfigurationsoperationen von dem Hersteller der umprogrammierbaren Logikvorrichtung
festgelegt. Die Rekonfigurationsoperationen sind daher dem Fachmann bekannt.
Jede DRPU-Konfiguration ist vorzugsweise durch einen Konfigurations-Datensatz gegeben,
welcher eine ganz bestimmte Hardware-Organisation festlegt, die der Ausführung einer
entsprechenden ISA zugeeignet ist. In der bevorzugten Ausführungsform enthält die IF-
Einheit 3060 jeweils die vorstehend angegebenen Elemente unabhängig von der DRPU-
Konfiguration. Bei einem Grundpegel ist die Funktionalität, die durch jedes Element in der
IF-Einheit 3060 geschaffen ist, unabhängig von der aktuell in Betracht gezogenen ISA.
Jedoch können sich in der bevorzugten Ausführungsform der detaillierte Aufbau und die
Funktionalität eines oder mehrerer Elemente der IF-Einheit 3060 basierend auf der
Beschaffenheit der ISA ändern, für welche sie konfiguriert worden ist. In der bevorzugten
Ausführungsform bleiben der Aufbau und die Funktionalität des Architektur-Beschreibungs
speichers 3101 und der Rekonfigurationslogik 3104 vorzugsweise von einer DRPU-
Konfiguration zur anderen konstant. Der Aufbau und die Funktionalität der anderen Elemente
der IF-Einheit 3060 und der Art und Weise, in welcher sie sich entsprechend dem ISA-Typ
ändern, wird nunmehr im einzelnen beschrieben.
Der Prozeßsteuerregister-(PCR-)Satz 3122 speichert Signale und Daten, die von dem ISS
3100 während einer Befehlsausführung verwendet worden sind. In der bevorzugten
Ausführungsform weist der PCR-Satz 3122 ein Register zum Speichern eines Prozeßsteuer
warts, ein Register zum Speichern eines Unterbrechungsvektors und ein Register zum
Speicher einer Referenz zu einem Konfigurationsdatensatz auf. Das Prozeßsteuerwort enthält
vorzugsweise eine Anzahl von Bedingungsflags, die selektiv basierend auf Bedingungen
gesetzt und rückgesetzt werden können, die während einer Befehlsausführung auftreten. Das
Prozeßsteuerwort enthält zusätzlich eine Anzahl von Übergangssteuersignalen, die ein oder
mehrere Arten festlegen, auf welchen Unterbrechungen verwaltet werden können, wie im
einzelnen unten noch beschrieben wird. In der bevorzugten Ausführungsform ist der
PCR-Satz 3122 als ein Satz von LC-Blöcken ausgeführt, die für eine Datenspeicher- und
Ansteuerlogik konfiguriert sind.
ISS 3100 ist vorzugsweise eine Zustandseinrichtung, welche die Operation der Abrufsteuer
einheit 3108, der Decodiersteuereinheit 3112, der DO-Einheit 3062 und der AO-Einheit 3064
steuert und Speicherlese- und -Schreibsignale an die Speicheradressenlogik 3102 abgibt, um
eine Befehlsausführung zu erleichtern. In Fig. 14 ist ein Zustandsdiagramm dargestellt, das
eine bevorzugte Menge von Zuständen zeigt, die von der ISS 3100 gestützt sind. Im
Anschluß an eine Energieeinschalt- oder Rücksetzbedingung oder unmittelbar nachdem eine
Rekonfiguration aufgetreten ist, beginnt die ISS 3100 eine Operation im Zustand P.
Entsprechend dem Beendigungssignal, das von der Rekonfigurationslogik 3104 abgegeben
worden ist, geht die ISST- 3100 auf den Zustand S über, in welchem der ISS Programm
zustandsinformation für den Fall initialisiert oder wieder speichert, daß eine Energieein
schalt-/Rücksetzbedingung oder eine Rekonfiguration aufgetreten ist.
Die ISS 3100 rückt als nächstes auf einen Zustand F vor, in welchem Befehlsabruf-
Operationen durchgeführt werden. Bei den Befehlsabrufoperationen gibt ISS 3100 ein
Speicherlesesignal an die Speicherzugrifflogik 3102 ab, gibt ein Abrufsignal an die
Abrufsteuereinheit 3108 und ein Inkrementsignal an die AO-Einheit 3064 ab, um ein nächstes
Befehlsprogranrnadressen-(NIPA-)Register 3232 zu inkrementieren, wie im einzelnen unter
Bezugnahme auf Fig. 19A und 19B nachstehend noch beschrieben wird. Nach dem Zustand
F geht ISS 3100 auf einen Zustand D vor, um Befehlsdecodieroperationen zu initiieren. Im
Zustand D gibt ISS 3100 ein Decodiersignal an die Decodiersteuerlogik 3112 ab, während
beim Zustand D ISS 3100 zusätzlich einen Operationscode wiederfindet, der einem
decodierten Befehl von dem Operationscode-Speicherregistersatz 3116 entspricht.
Basierend auf dem wiedergefundenen von dem Operationscode geht ISS 3100 auf einen
Zustand E oder M über, um Befehlsausführungsoperationen durchzuführen. ISS 3100 geht
auf den Zustand E in dem Fall vor, daß der Befehl in einem einzigen Taktzyklus ausgeführt
werden kann; anderenfalls geht ISS 3100 auf den Zustand M für eine in Mehrzyklen
durchzuführende Befehlsausführung vor. Bei den Befehlsausführungsoperationen erzeugt ISS
3100 DOU und AOU-Steuersignale und/oder Signale, die auf die Speicherzugriffslogik 3102
gerichtet sind, um die Ausführung des Befehls zu erleichtern, der dem wiederaufgefundenen
Operationscode entspricht. Im Anschluß entweder an den Zustand E oder M geht ISS 3100
auf einen Zustand W über.
Im Zustand W erzeugt ISS 3100 DOU-, AOU-Steuersignale und/oder Speicherschreibsignale,
um ein Speichern eines Befehlsausführungsergebnisses zu erleichtern. Der Zustand W wird
daher als ein Rückschreibzustand bezeichnet. Der Fachmann weiß, daß die Zustände F, D,
E oder M und W einen vollständigen Befehlsausführungszyklus aufweisen. Nach dem Zustand
W geht die ISS 3100 auf den Zustand Y in dem Fall über, daß eine Suspension einer
Befehlsausführung gefordert wird. Der Zustand Y entspricht einem Freizustand, welcher
gefordert werden kann, beispielsweise in dem Fall, daß eine T-Einrichtung 3014 Zugriff auf
den Speicher 3034 der S-Einrichtung fordert. Nach dem Zustand Y oder W geht in dem Fall,
daß eine Befehlsausführung fortzusetzen ist, die ISS 3100 auf den Zustand F zurück, um
wieder einen anderen Befehlsausführungszyklus aufzunehmen.
Wie in Fig. 14 dargestellt, weist das Zustandsdiagramm auch einen Zustand I auf, welcher
als ein Unterbrechungsservice-Zustand definiert ist. Bei der Erfindung empfängt ISS 3100
Unterbrechungsankündigungssignale von der Unterbrechungslogik 3106. Wie im einzelnen
unter Bezugnahme auf Fig. 15 auch beschrieben wird, erzeugt die Unterbrechungslogik 3106
Übergangssteuersignale und speichert diese Signale in dem Prozeßsteuerwort in dem PCR-
Satz 3122. Die Übergangssteuersignale zeigen vorzugsweise an, welcher der Zustände F, D,
E, M, W und Y unterbrechbar sind und zeigen einen Pegel einer Unterbrechungspräzision,
die in jedem unterbrechbaren Zustand erforderlich ist, und für jeden unterbrechbaren Zustand
einen nächsten Zustand an, bei welchem eine Befehlsdurchführung im Anschluß an den
Zustand I fortzusetzen ist. Wenn ISS 3100 ein Unterbrechungsankündigungssignal erhält,
während es sich in einem vorgegebenen Zustand befindet, geht ISS 3100 auf den Zustand I
über, wenn die Übergangssteuersignale anzeigen, daß der aktuelle Zustand unterbrechbar ist.
Andernfalls geht ISS 3100 weiter, wenn kein Unterbrechungssignal empfangen worden ist,
bis ein unterbrechbarer Zustand erreicht wird.
Sobald ISS 3100 auf den Zustand I vorgerückt ist, greift ISS 3100 vorzugsweise auf den
PCR-Satz 3122 zu, um ein Unterbrechungsabdeckflag zu setzen und einen Unterbrechungs
vektor wieder aufzufinden. Nach dem Wiederauffinden des Unterbrechungsvektors verwaltet
ISS 3100 vorzugsweise die aktuelle Unterbrechung über einen herkömmlichen Subroutine-
Sprung zu einem Unterbrechungshandhabungsprogramm, wie es durch den Unterbrechungs
vektor spezifiziert ist.
In der Erfindung wird eine Rekonfiguration der DRPU-Einheit 3032 entsprechend 1) einer
Rekonfigurationsunterbrechung, die auf der externen Steuerleitung 3048 durchgesetzt oder
2) die Durchführung einer Rekonfigurationsanweisung in einer Folge von Programmbefehlen
initiiert. In der bevorzugten Ausführungsform führen sowohl die Konfigurationsunterbrechung
als auch die Durchführung einer Rekonfigurationsanweisung zu einem Subroutine-Sprung auf
ein Rekonfigurations-Handhabungsprogramm. Vorzugsweise stellt das Rekonfigurations-
Handhabungsprogramm eine Programmzustandsinformation sicher und gibt eine Konfigura
tionsdatensatz-Adresse und das Rekonfigurationssignal an die Rekonfigurationslogik 3104 ab.
Für den Fall, daß die aktuelle Unterbrechung nicht eine Rekonfigurationsunterbrechung ist,
geht ISS 3100 auf einen nächsten Zustand über, was durch die Übergangssteuersignale
angezeigt ist, sobald die Unterbrechung verwaltet worden ist, um dadurch einen Befehls
durchführungszyklus wieder aufzunehmen, Befehle durchzuführen oder zu initiieren.
In der bevorzugten Ausführungsform ändert sich die Menge an Zuständen, welche durch ISS
3100 gestützt sind, entsprechend der Beschaffenheit der ISA, für welche die DRP-Einheit
3032 konfiguriert worden ist. Folglich ist der Zustand M für eine ISA nicht vorhanden, in
welcher ein oder mehrere Befehle in einem einzigen Taktzyklus durchgeführt werden können,
wie es der Fall bei einer typischen Innenschleifen-IS-Architektur ist. Wie beschrieben,
definiert das Zustandsdiagramm der Fig. 14 vorzugsweise die Zustände, die von ISS 3100
gestützt worden sind, um eine generelle Außenschleifen-IS-Architektur durchzuführen. Für
das Durchführen einer Innenschleifen-ISA trägt ISS 3100 vorzugsweise mehrere Sätze von
Zuständen F, D, E und W parallel nebeneinander, um dadurch eine Pipeline-Steuerung einer
Befehlsdurchführung in einer Weise zu erleichtern, die dem Fachmann ohne weiteres
verständlich ist. In der bevorzugten Ausführungsform ist ISS 3100 als eine auf einem CL-
Block basierende Zustandseinrichtung ausgeführt, welche die Zustände oder eine Untergruppe
der vorstehend beschriebenen Zustände entsprechend einem aktuell in Betracht gezogenen
ISA unterstützt.
Die Unterbrechungslogik 3106 weist vorzugsweise eine Zustandseinrichtung auf, welche
Übergangssteuersignale erzeugt und Unterbrechungshinweis-Operationen entsprechend einem
Unterbrechungssignal durchführt, das über die externe Steuerleitung 3048 erhalten worden
ist. In Fig. 15 ist ein Zustandsdiagramm dargestellt, das einen bevorzugten Satz Zustände
zeigt, die von der Unterbrechungslogik 3106 gestützt sind. Die Unterbrechungslogik 3106
beginnt eine Operation im Zustand P. Der Zustand P entspricht einer Energieeinschalt-
Rücksetz- oder Rekonfigurationsbedingung. Entsprechend dem Beendigungssignal, das von
der Rekonfigurationslogik 3104 abgegeben worden ist, geht die Unterbrechungslogik 3106
auf den Zustand A über und findet die Unterbrechungsantwortsignale aus dem Architektur
beschreibungsspeicher 3101 wieder. Die Unterbrechungslogik 3106 erzeugt dann die
Übergangssteuersignale aus den Unterbrechungsantwortsignalen und speichert die
Übergangssteuersignale in dem Prozeßsteuerregister-(PCR-)Satz 3122. In der bevorzugten
Ausführungsform enthält die Unterbrechungslogik 3106 eine auf CLB basierende program
mierbare Logikanordnung (PLA), um die Unterbrechungsantwortsignale zu empfangen und
um die Übergangssteuersignale zu erzeugen. Im Anschluß an den Zustand A geht die
Unterbrechungslogik 3106 auf den Zustand B über, um auf ein Unterbrechungssignal zu
warten. Bei Empfang eines Unterbrechungssignals geht die Unterbrechungslogik 3106 auf
einen Zustand C in dem Fall über, daß das Unterbrechungsabdeckflag in dem PCR-Satz 3122
rückgesetzt wird. Sobald sie im Zustand C ist, bestimmt die Unterbrechungslogik 3106 den
Ursprung der Unterbrechung, eine Unterbrechungspriorität und die Unterbrechungs-
Handhabungsadresse. In dem Fall, daß das Unterbrechungssignal eine Rekonfigurationsunter
brechung ist, geht die Unterbrechungslogik 3106 auf einen Zustand R über, und speichert
eine Konfigurationsdatensatz-Adresse in dem PCR-Satz 3122. Nach dem Zustand R oder im
Anschluß an den Zustand G für den Fall, daß das Unterbrechungssignal keine Re
konfigurations-Unterbrechung ist, geht die Unterbrechungslogik 3106 auf einen Zustand N
über und speichert die Unterbrechungshandhabungsadresse in dem PCR-Satz 3122. Die Logik
3106 geht auf einen Zustand X über und gibt ein Unterbrechungshinweissignal an ISS 3100
ab. Im Anschluß an den Zustand X kehrt die Unterbrechungslogik 3122 auf den Zustand B
zurück, um auf ein nächstes Unterbrechungssignal zu warten.
In der bevorzugten Ausführungsform ändert sich der Pegel einer Unterbrechungslatenz, wie
sie durch die Unterbrechungsantwortsignale und folglich durch die Übergangssteuersignale
spezifiziert ist, entsprechend einer aktuellen ISA, für welche die DRP-Einheit 3032
konfiguriert worden ist. Beispielsweise erfordert eine ISA, die einer Hochleistungs-
Echtzeitbewegungssteuerung gewidmet ist, schnelle und vorhersehbare Unterbrechungsant
wort-Fähigkeiten. Der Konfigurationsdatensatz, der einer solchen ISA entspricht, weist daher
vorzugsweise Unterbrechungsanwortsignale auf, die anzeigen, daß eine Unterbrechung
geringer Latenz erforderlich ist. Die entsprechenden Übergangssteuersignale wiederum
identifizieren vorzugsweise mehrfache ISS-Zustände als unterbrechbar, um dadurch eine
Unterbrechung zuzulassen, um einen Befehlsausführungszyklus vor der Beendigung der
Befehlsausführungszyklus aufzuschieben. Im Gegensatz zu einer ISA für eine Realzeit-
Bewegungssteuerung erfordert eine ISA für Bildfaltungsoperationen Unterbrechungsantwort
Möglichkeiten, die sicherstellen, daß die Anzahl Faltungsoperationen, die pro Zeiteinheit
durchgeführt worden sind, maximiert ist. Der Konfigurationsdatensatz, welcher der
Bildfaltungs-ISA entspricht, weist vorzugsweise Unterbrechungsantwortsignale auf, die eine
hochlatente Unterbrechung erforderlichenfalls spezifizieren. Die entsprechenden Übergangs
steuersignale identifizieren vorzugsweise einen Zustand W, wenn er unterbrechbar ist. Für
den Fall, daß ISS 3100 Mehrfachsätze von Zuständen F, D, E und W in paralleler Form
stützt, wenn konfiguriert wird, um die Bildfaltungs-ISA durchzuführen, identifizieren die
Übergangssteuersignale vorzugsweise jeden Zustand W, wenn er unterbrechbar ist, und
spezifizieren ferner, daß eine Unterbrechungsbedienung zu verzögern ist, bis jeder der
parallelen Befehlsdurchführungszyklen, deren den Zustand W betreffenden Operationen
beendet haben. Hierdurch ist sichergestellt, daß eine ganze Gruppe von Befehlen durch
geführt wird, bevor eine Unterbrechung vorgenommen wird, um dadurch vernünftige
Pipeline-Durchführungs-Leistungspegel aufrechtzuerhalten.
Analog zu dem Unterbrechungslatenz-Pegel ändert sich auch der Pegel einer Unterbrechungs
präzision, wie sie durch die Unterbrechungsantwortsignale spezifiziert ist, entsprechend der
ISA, für welche die DRP-Einheit 3032 konfiguriert wird. Beispielsweise spezifizieren in dem
Fall, daß der Zustand M als ein unterbrechbarer Zustand für eine Außenschleifen-ISA
definiert ist, welche unterbrechbare Mehrzyklen-Operationen stützt, vorzugsweise die
Unterbrechungsantwortsignale, daß genau Unterbrechungen gefordert werden. Die
Übergangssteuersignale spezifizieren dann, daß Unterbrechungen, die beim Zustand M
erhalten worden sind, als genaue Unterbrechungen behandelt werden, um sicherzustellen, daß
Mehrzyklen-Operationen erfolglich wieder gestartet werden können. Bei einem anderen
Beispiel spezifizieren für eine ISA, welche nicht-fehlerhafte, durch eine Pipeline verbundene
Rechenoperationen stützt, die Unterbrechungsantwortsignale vorzugsweise, daß nicht genaue
Unterbrechungen gefordert werden. Die Übergangssteuersignale spezifizieren dann, daß
Unterbrechungen, die beim Zustand W erhalten worden sind, als ungenaue Unterbrechungen
behandelt werden.
Für eine vorgegebene ISA werden die Unterbrechungsantwortsignale definiert oder durch
einen Teil des entsprechenden Konfigurationsdatensatzes einer ISA programmiert. Über die
programmierbaren Unterbrechungsantwortsignale und die Erzeugung von entsprechenden
Übergangssteuersignalen erleichtert die Erfindung, die Durchführung eines optimalen
Unterbrechungsschemas auf einer ISA-zu-ISA-Basis. Der Fachmann weiß, daß die große
Mehrzahl von herkömmlichen Computer-Architekturen nicht für die flexible Spezifikation
von Unterbrechungsmöglichkeiten, nämlich einer programmierbaren Zustandsübergangs
freigabe, einer programmierbaren Unterbrechungslatenz und einer programmierbaren
Unterbrechungspräzision vorsorgen. In der bevorzugten Ausführungsform ist die Unter
brechungslogik 3106 als eine auf CLB basierende Zustandseinrichtung ausgeführt, welche die
vorstehend beschriebenen Zustände stützt.
Die Abrufsteuereinheit 3108 richtet das Laden von Befehlen in den Befehlspuffer 3110
entsprechend dem Abrufsignal aus, das von ISS 3100 abgegeben worden ist und in der
bevorzugten Ausführungsform ist die Abrufsteuereinheit 3108 als eine herkömmliche
(one-hot) codierte Zustandseinrichtung mit Flip-Flops in einer Gruppe von CL-Blöcken ausgeführt.
Der Fachmann erkennt, daß in einer alternativen Ausführungsform die Abrufsteuereinheit
3108 auch als eine herkömmliche codierte Zustandseinrichtung oder als eine auf ROM
basierende Zustandseinrichtung konfiguriert sein könnte. Der Befehlsspeicher 3110 schafft
eine vorübergehende Speicherung für Befehle, die aus dem Speicher 3034 geladen sind. Für
die Durchführung einer äußeren Schleifen-ISA ist der Befehlspuffer 3110 vorzugsweise als
ein herkömmlicher, auf RAM basierender FIFO-Puffer mit einer Vielzahl von CL-Blöcken
ausgeführt. Für die Ausführung einer Innenschleifen-ISA ist der Befehlspuffer 3110
vorzugsweise als ein Satz von Flip-Flop-Registern mit einer Anzahl Flip-Flops in einer
Gruppe von IOBs oder einer Vielzahl Flip-Flops sowohl in IOBs als auch CLBs ausgeführt.
Die Decodiersteuereinheit 3112 richtet die Übertragung von Befehlen von dem Befehlspuffer
3110 in den Befehlsdecodierer 3114 entsprechend dem Decodiersignal aus, das von der ISS
3100 abgegeben worden ist. Für eine Innenschleifen-ISA ist die Decodiersteuereinheit 3112
vorzugsweise als eine auf ROM-basierende Zustandseinrichtung mit einem auf CLB
basierenden ROM ausgeführt, der mit einem auf CLB basierenden Register verbunden ist.
Für eine Außenschleifen-ISA ist die Decodiersteuereinheit 3112 als eine auf CLB basierende
codierte Zustandseinrichtung ausgeführt. Für jeden Befehl, der als Eingangssignal empfangen
wird, gibt der Befehlsdecoder 3114 einen entsprechenden Operationscode eine Register-
Dateiadresse und wahlweise ein- oder mehrere Konstanten in herkömmlicher Weise ab. Für
eine Innenschleifen-ISA ist der Befehlsdecodierer 3115 vorzugsweise entsprechend
konfiguriert, um eine Gruppe von Befehlen, die als Eingangssignal empfangen worden sind,
zu decodieren. In der bevorzugten Ausführungsform wird der Befehlsdecodierer 3114 als ein
auf CLB-basierender Decodierer ausgeführt, der entsprechend konfiguriert ist, um jeden der
Befehle, die in der aktuellen in Betracht gezogenen ISA enthalten sind, zu decodieren.
Der Operationscode-Speicheuegister-(OSR-)Satz 3113 schafft eine vorübergehende
Speicherung für jeden Operationscodeausgang durch den Befehlsdecodierer 3144 und gibt
jeden Operationscode an ISS 3100 ab. Wenn eine Außenschleifen-ISA in der DRP-Einheit
3032 durchgeführt wird, wird der OSR-Satz 3113 vorzugsweise mit Hilfe einer optimalen
Anzahl von Flip-Flop-Registerbänken ausgeführt. Die Flip-Flop-Registerbänke erhalten
Signale von dem Befehlsdecodierer 3114, welche Klassen- oder Gruppencodes darstellen, die
von Operationscode-Literal-Bitfeldern aus Befehlen abgeleitet sind, die vorher den
Befehlspuffer 3110 in Form einer Warteschlange durchlaufen haben. Die Flip-Flop-
Registerbänke speichern die vorerwähnten Klassen- oder Gruppencodes gemäß einem
Decodierschema, das vorzugsweise eine ISS-Komplexität minimiert. Im Falle einer
Innenschleifen-ISA speichert der OSR-Satz 3113 vorzugsweise Operationscode-Anzeige
signale, die unmittelbar von Operationscode-Literal-Bitfeldern abgeleitet worden sind, die von
dem Befehlsdecodierer 3114 abgegeben worden sind. Innenschleifen-ISAs haben notwendiger
weise kleinere Operationscode-Literal-Bitfelder, um dadurch die Ausführungsanforderungen
hinsichtlich Puffern, Decodierern und einer Operationscode-Anzeige für ein sequentielles
Befehlszuordnen durch den Befehlspuffer 3110, den Befehlsdecodierer 3114 bzw. den OSR-Satz
3116 zu minimieren. Für Außenschleifen-ISAs wird der OSR-Satz 3116 vorzugsweise
als ein kleiner Verbund von Flip-Flops-Registerbänken ausgeführt, die durch eine Bandbreite
gekennzeichnet sind, die gleich der Operationscode-Literalgröße oder einem Bruchteil derer
ist. Für Innenschleifen-ISAs ist der Operationscode-Speicherregister-(OSR-)Satz 3116
vorzugsweise eine kleinere und vereinheitlichte Flip-Flop-Registerbank als für Außen
schleifen-ISAs. Die reduzierte Flip-Flop-Registerbankgröße im Fall einer Innenschleife
reflektiert die minimale Befehls-Zählcharakteristik von Innenschleifen-ISAs relativ zu
Außenschleifen-ISAs.
Der HF-Adressenregister-Satz 3118 und der Konstanten-Registersatz 3120 schaffen eine
vorübergehende Speicherung für jede RegisterDateiadresse bzw. jeden konstanten Ausgang
für den Befehlsdecodierer 3114. In der bevorzugten Ausführungsform sind der Operations
code-Speicherregistersatz 3116, der HF-Adressenregistersatz 3118 und der Konstanten-
Registersatz 3112 jeweils als ein Satz von CL-Blöcken ausgeführt, die für eine Daten
speicherung konfiguriert sind.
Die Speicherzugriffslogik 3102 ist eine Speichersteuerschaltung, welche den Datentransfer
zwischen dem Speicher 3034, der DO-Einheit 3062 und der AO-Einheit 3064 entsprechend
der Speicheradressengröße ausrichtet und synchronisiert, die in dem Architektur-Be
schreibungsspeicher 3122 spezifiziert ist. Die Speicherzugriffslogik 3102 richtet aus und
synchronisiert den Datentransfer und Befehle zwischen der S-Einrichtung 3012 und einer
vorgegebenen T-Einrichtung 3014. In der bevorzugten Ausführungsform stützt die
Speicherzugriffslogik 3102 Stoßbetrieb-Speicherzugriffe und ist vorzugsweise als eine
herkömmliche RAM-Steuereinheit mit CL-Blöcken ausgeführt. Der Fachmann erkennt, daß
während einer Rekonfiguration die Eingangs- und Ausgangsanschlüsse der rekonfigurierbaren
Logik für drei Zustände ausgelegt sind, so daß Widerstandsabschlüsse nicht bestehende
Logikpegel definieren, und folglich nicht den Speicher 3034 stören. In einer anderen Ausfüh
rungsform könnte die Speicherzugriffslogik 3201 extern in der DRP-Einheit 3032 ausgeführt
sein.
In Fig. 16 ist ein Blockdiagramm einer bevorzugten Ausführungsform einer Datenoperations-
(DO-)Einheit 3062 dargestellt. Die DO-Einheit 3062 führt Operationen an Daten gemäß
DOU-Steuersignalen, HF-Adressen und Konstanten durch, die von ISS 3100 erhalten worden
sind. Die DO-Einheit 3062 weist einen DOU-Crossbar-Schalter 3150, eine Speicher/Ausricht
logik 3152 und eine Datenoperationslogik 3154 auf. Der Crossbar-Schalter 3150, die
Speicher/Ausrichtlogik 3152 und die Datenoperationslogik 3154 haben jeweils einen
Steuereingang, der mit dem ersten Steuerausgang der IF-Einheit 3060 über die erste
Steuerleitung 3070 verbunden ist. Der Crossbar-Schalter 3150 hat einen zweigerichteten
Dateneingang, welcher den zweigerichteten Dateneingang der DO-Einheit bildet, einen
konstanten Eingang, der mit der dritten Steuerleitung 3074 verbunden ist, einen ersten
Datenrückkopplungseingang, der mit einem Datenausgang der Datenoperationslogik 3154
über eine erste Datenleitung 3160 verbunden ist, einen zweiten Datenrückkopplungseingang,
der mit einem Datenausgang der Speicher/Ausrichtlogik 3152 über eine zweite Datenleitung 3164
verbunden ist, und einen Datenausgang, der mit einem Dateneingang der Spei
cher/Ausrichtlogik 3152 über eine dritte Datenleitung 3162 verbunden ist. Zusätzlich zu dem
Datenausgang hat die Speicher/Ausrichtlogik 3154 einen Adresseneingang, welcher mit der
dritten Steuerleitung 3074 verbunden ist. Die Datenoperationslogik 3154 hat zusätzlich einen
Dateneingang, welcher mit dem Ausgang der Speicher/Ausrichtlogik über die zweite
Datenleitung 3164 verbunden ist.
Die Datenoperationslogik 3154 führt Rechen-, Schiebe- und/oder logische Operationen an
Daten, welche an deren Dateneingang empfangen worden sind, entsprechend den DOU-Steu
ersignalen durch, die an deren Steuereingang empfangen worden sind. Die Spei
cher/Ausrichtlogik 3152 weist Datenspeicherelemente auf, die für eine vorübergehende
Speicherung von Operanden, Konstanten und Teilergebnissen sorgen, die Datenberechnungen
zugeordnet sind, und zwar unter der Anordnung von HF-Adressen und DOU-Steuersignalen,
die an deren Adressen- bzw. Steuereingang empfangen worden sind. Der Crossbar-Schalter
3150 ist vorzugsweise ein herkömmliches Crossbar-Steuernetz, welches das Laden von Daten
aus dem Speicher 3034, dem Transfer von Ergebnissen, die von der Datenoperationslogik
3154 abgegeben worden sind, an die Speicher/Ausrichtlogik 3152 oder den Speicher 3034
und das Laden von Konstanten, die von der IF-Einheit 3060 abgegeben worden sind, in die
Speicher/Ausrichtlogik 3152 entsprechend den DOU-Steuersignalen erleichtern, die an deren
Steuereingang erhalten worden sind. In der bevorzugten Ausführungsform hängt der Aufbau
der Datenoperationslogik 3154 im einzelnen von den Operationsarten ab, die von der
aktuellen in Betracht gezogenen ISA gestützt sind. Das heißt, die Datenoperationslogik 154
weist eine Schaltung zum Durchführen der Rechen- und/oder logischen Operationen auf,
welche durch die Datenoperationsbefehle in der aktuell in Betracht gezogenen ISA spezifiziert
sind. Dementsprechend hängt auch der Aufbau der Speicher/Ausrichtlogik 3152 und des
Crossbar-Schalters 3150 von der aktuell in Betracht gezogenen ISA ab. Der detaillierte
Aufbau der Datenoperationslogik 3154, die Speicher/Ausrichtlogik 3152 und der Crossbar-
Speicher 3150 gemäß dem ISA-Typ wird nachstehend anhand der Fig. 17A bis 17B
beschrieben.
Für eine Außenschleifen-ISA ist die DO-Einheit 3062 vorzugsweise entsprechend
konfiguriert, um serielle Operationen an Daten durchzuführen. In Fig. 17A ist ein
Blockdiagramm einer ersten beispielhaften Ausführungsform der DO-Einheit 3061 dargestellt,
die für die Ausführung einer generellen Außenschleifen-ISA konfiguriert ist. Die generelle
Außenschleifen-ISA erfordert Hardware, die konfiguriert ist, um mathematische Operationen,
wie Multiplikationen, Additionen und Subtraktionen, Boolsche Operationen, wie UND,
ODER und NOT, sowie Verschiebe- und Drehoperationen durchzuführen. Folglich weist für
die Durchführung einer generellen Außenscheifen-ISA die Datenoperationslogik 5154
vorzugsweise eine Arithmetik-Logik-(AL-)Einheit/Schiebeeinheit 3184 mit einem ersten und
zweiten Eingang, einem Steuereingang und einem Ausgang auf. Die Speicher/Ausrichtlogik
3152 weist vorzugsweise einen ersten RAM 3180 und einen zweiten RAM 3182 auf, die
jeweils einen Dateneingang, einen Datenausgang, einen Adressen-Auswähleingang und einen
Freigabeeingang haben. Der DOU-Crossbar-Schalter 3150 weist vorzugsweise ein
herkömmliches Crossbar-Schaltnetz mit sowohl zweigerichteten als auch einseitig gerichteten
Crossbar-Verbindungen und mit den vorstehend in Verbindung mit Fig. 16 beschriebenen
Eingängen und Ausgängen auf. Der Fachmann weiß, daß eine effiziente Ausführung des
DOU-Crossbar-Schalters 3150 für ein Außenschleifen-ISA Multiplexer, Puffer mit drei
Zuständen, eine auf CLB basierende Logik, eine direkte Verdrahtung oder Untergruppen der
vorerwähnten Elemente enthalten kann, die in irgendeine Kombination durch eine
rekonfigurierbare Verbindungseinrichtung verbunden sind. Für dem Außenschleifen-ISA ist
der DUO-Crossbar-Schalter 3150 entsprechend ausgeführt, um eine serielle Datenbewegung
in einer minimal möglichen Zeit durchzuführen, während auch eine maximale Anzahl von
eindeutigen Datenbewegungs-Crossbar-Verbindungen geschaffen wird, um verallgemeinerte
Außenschleifen-Befehlstypen zu stützen.
Der Dateneingang des ersten und zweiten RAM 3180 bzw. 3182 ist mit dem Datenausgang
des Schalter 3150 über die dritte Datenleitung 3162 verbunden. Die Adressenauswähl
eingänge der beiden RAM 3180 und 3182 sind entsprechend verbunden, um Registerdatei-
Adressen von der IF-Einheit 3060 über die dritte Steuerleitung 3074 aufzunehmen. In
ähnlicher Weise sind Freigabe-Eingänge der beiden RAM 3180, 3182 entsprechend
verbunden, um DOU-Steuersignale über erste Steuerleitungen 3070 zu erhalten. Die
Datenausgänge der beiden RAM 3180 und 3182 sind mit dem ersten und dem zweiten
Eingang der ALU/Schiebeeinheit 3184 und auch mit dem zweiten Datenrückkopplungsein
gang des Schalters 3150 verbunden. Der Steuereingang der ALU-Schiebeeinheit 3184 ist
entsprechend geschaltet, um DOU-Steuersignale über die erste Steuerleitung 3070
aufzunehmen, und der Ausgang der ALU-/Schiebeeinheit 3184 ist mit dem ersten
Datenrückkopplungseingang des Schalters 3150 verbunden. Die Verbindungen zu den
restlichen Eingängen und Ausgängen des Crossbar-Schalters 3150 sind identisch mit denen,
die in Verbindung mit Fig. 16 vorstehend beschrieben worden sind.
Um das Ausführen eines Datenoperationsbefehls zu erleichtern, gibt die IF-Einheit 3060
DOU-Steuersignale, HF-Adressen- und Konstanten an die DO-Einheit 3061 während einer
der ISS-Zustände E oder M ab. Die beiden RAM 3180, 3182 schaffen eine erste und zweite
Registerdatei für ein vorübergehendes Datenspeichern. Einzelne Adressen in den beiden
RAM 3180, 3182 werden entsprechend den HF-Adressen ausgewählt, die an jedem RAM-Adres
senauswähleingang empfangen worden sind. Dementsprechend wird ein Laden der
beiden RAM 3180, 3182 durch die DOU-Steuersignale gesteuert, die der jeweilige RAM
3180, 3182 an seinem Schreib-Freigabeeingang erhält. In der bevorzugten Ausführungsform
weist zumindest ein RAM 3180, 3182 eine Durchgangsmöglichkeit auf, um den Datentransfer
von dem DOU-Crossbar-Schalter 3150 unmittelbar in die ALU-Schiebeeinheit 3184 zu
erleichtern. Die ALU/Schiebeeinheit 8134 führt arithmetische, logische oder Schie
beoperationen bei einem ersten Operanden, der von dem ersten RAM 3180 erhalten worden
ist, und/oder bei einem zweiten Operanden, der von dem zweiten RAM 3182 erhalten
worden ist, unter der Weisung der DOU-Steuersignale durch, die an deren Steuereingang
erhalten worden sind. Der Crossbar-Schalter 3150 leitet selektiv 1) Daten zwischen dem
Speicher 3034 und den beiden RAM 3180, 3182, 2) Ergebnisse von der ALU/Schiebeeinheit
3184 zu den beiden RAM 3180, 3182 oder dem Speicher 3034, 3) Daten, die in dem ersten
oder zweiten RAM 3180, 3182 gespeichert sind, zu dem Speicher 3034, und 4) Konstante
von der IF-Einheit 3060 zu den beiden RAM 3180 und 3182.
Wie vorstehend beschrieben, leitet für den Fall, daß entweder der erste oder der zweite RAM
3180, 3182 eine Durchgangsmöglichkeit enthält, der Crossbar-Schalter 3150 selektiv auch
Daten von dem Speicher 3034 oder von dem Ausgang der ALU/Schiebeeinheit unmittelbar
zurück in die ALU-Schiebeeinheit 3184. Der Crossbar-Schalter 3150 führt eine ganz
bestimmte Schwenkoperation entsprechend den DOU-Steuersignalen durch, die an seinem
Steuereingang empfangen worden sind. In einer bevorzugten Ausführungsform ist die
ALU/Schiebeeinheit 3184 durch Verwenden von logischen Funktionsgeneratoren in einer
Gruppe von LC-Blöcken und einer Schaltungsanordnung ausgeführt, die für mathematische
Operationen in der rekonfigurierbaren Logikvorrichtung vorgesehen ist. Die beiden RAM
3180, 3182 sind jeweils vorzugsweise mit Hilfe der Datenspeicherschaltung ausgeführt, die
in einer Gruppe von CL-Blöcken vorhanden ist, und der Crossbar-Schalter 3150 ist
vorzugsweise in der vorstehend beschriebenen Weise ausgeführt.
In Fig. 17B ist ein Blockdiagramm einer zweiten beispielshaften Ausführungsform einer DO-
Einheit 3063 dargestellt, die für die Ausführung einer Innenschleifen-ISA konfiguriert ist.
Im allgemeinen stützt eine innere Schleifen-ISA verhältnismäßig wenig spezialisierte
Operationen und wird vorzugsweise dazu verwendet, eine gemeinsame Menge von
Operationen an möglichst großen Datensätzen durchzuführen. Eine optimale Rechenleistung
für eine Innenschleifen-ISA wird daher durch Hardware erzeugt, die entsprechend
konfiguriert ist, um Operationen parallel durchzuführen. Folglich sind in der zweiten
beispielhaften Ausführungsform der DO-Einheit 3063 die Datenoperationslogik 3154, die
Speicher/Ausrichtlogik 3152 und der DOU-Crossbar-Schalter 3150 entsprechend konfiguriert,
um Pipeline-Berechnungen durchzuführen. Die Datenoperationslogik 3154 weist eine
Pipeline-Funktionseinheit 3194 mit einer Anzahl Eingänge, einem Steuereingang und einem
Ausgang auf. Die Speicher/Ausrichtlogik 3152 weist 1) eine Gruppe von herkömmlichen
Flip-Flop-Anordnungen 3192, wobei jede Flip-Flop-Anordnung 3132 einen Dateneingang und
-ausgang sowie einen Steuereingang hat, und 2) einen Datenselektor 3190 auf, der einen
Steuer- und einen Dateneingang sowie eine Anzahl Ausgänge hat, welche der Anzahl an
vorhandenen Flip-Flops-Anordnungen 3192 entsprechen. Der DOU-Crossbar-Schalter 3150
weist ein herkömmliches Crossbar-Schaltnetz mit einseitig gerichteten
Duplex-Crossbar-Verbindungen auf.
In der zweiten beispielhaften Ausführungsform der DO-Einheit 3063 enthält der Crossbar-
Schalter 3150 vorzugsweise die Eingänge und Ausgänge, die vorher in Verbindung mit Fig.
16 beschrieben sind, mit Ausnahme des zweiten Datenrückkopplungseingangs. Analog zu
dem Außenschleifen-ISA-Fall kann eine effiziente Ausführung des DOU-Crossbar-Schalters
3150 für eine Innenschleifen-ISA multipliziert, Puffer mit drei Zuständen, eine auf
CLB-basierende Logik, eine direkte Verdrahtung oder eine Untergruppe der vorerwähnten
Elemente enthalten, die in einer rekonfigurierbaren Weise verbunden sind. Über eine
Innenschleifen-ISA ist der Schalter 3150 entsprechend ausgeführt, um parallele Datenbewe
gungen in einer minimalen Zeit zu maximieren, obwohl auch eine minimale Anzahl von
eindeutigen Datenbewegungs-Crossbar-Verbindungen vorgesehen ist, um über eine Pipeline
zugeführte Innenschleifen-ISA-Befehle zu stützen.
Der Dateneingang des Datenselektors 3190 ist mit dem Datenausgang des Schalters 3150 über
die erste Datenleitung 3162 verbunden. Der Steuereingang des Datenselektors 3190 ist
entsprechend verbunden, um HF-Adressen über die dritte Steuerleitung 3074 aufzunehmen,
und jeder Ausgang des Datenselektors 3190 ist mit einem entsprechenden Dateneingang einer
Flip-Flop-Anordnung verbunden. Der Steuereingang jeder Flip-Flop-Anordnung 3192 ist
entsprechend geschaltet, um DOU-Steuersignale für die erste Steuerleitung 3070 auf
zunehmen, und jeder Datenausgang der Flip-Flop-Anordnung ist mit einem Eingang der
Funktionseinheit 3194 verbunden. Der Steuereingang der Funktionseinheit 3194 ist
entsprechend geschaltet, um DOU-Steuersignale über die erste Steuerleitung 3070 zu
erhalten, und der Ausgang der Funktionseinheit 3194 ist mit dem ersten Datenrückkopplungs
eingang des Crossbar-Schalters 3150 verbunden. Die Verbindungen der restlichen Eingänge
und Ausgänge des Crossbar-Schalters 3150 sind identisch mit denjenigen, die vorher in
Verbindung mit Fig. 16 beschrieben worden sind.
Während des Betriebs führt die Funktionseinheit 3194 Pipeline-Operationen an Daten, welche
an deren Dateneingängen empfangen worden sind, entsprechend den DOU-Steuersignalen
durch, die an deren Steuereingang erhalten worden sind. Der Fachmann erkennt, daß die
Funktionseinheit 3194 eine Multiplizier-Addiereinheit, eine Schwellenwert-Bestimmungsein
heit, eine Bilddreheinheit, eine Randvergrößerungseinheit oder eine Funktionseinheit ist, die
sich dazu eignet, Pipeline-Operationen an aufgeteilten Daten durchzuführen. Der Datenselek
tor 3190 leitet Daten vom Ausgang des Schalters 3150 in eine vorgegebene Flip-Flop-
Anordnung 3192 entsprechend den HF-Adressen, die an seinem Steuereingang empfangen
worden sind. Jede Flip-Flop-Anordnung 3192 weist vorzugsweise eine Gruppe von
fortlaufend verbundenen Datenhaltegliedern auf, um Daten relativ zu dem Dateninhalt der
anderen Flip-Flop-Anordnung 3192 unter der Weisung der Steuersignale, die an deren
Steuereingang erhalten worden sind, räumlich und vorübergehend auszurichten. Der
Crossbar-Schalter 3150 leitet selektiv 1) Daten von dem Speicher 3034 zu dem Datenselektor
3190, 2) Ergebnisse von der Multiplizier-Addiereinheit 3194 zu dem Datenselektor 3190 oder
dem Speicher 3034 und 3) Konstante von der IF-Einheit 3060 zu dem Datenselektor 3190.
Der Fachmann erkennt, daß eine Innenschleifen-ISA eine Gruppe von "eingebauten"
Konstanten haben kann. Bei der Durchführung einer solchen Innenschleifen-ISA enthält die
Speicher-Ausrichtlogik 3154 vorzugsweise einen auf CLB basierenden ROM, welcher die
"eingebauten" Konstanten enthält, um dadurch die Notwendigkeit zu beseitigen, Konstante
von der IF-Einheit 3060 in die Speicher/Ausrichtlogik 3152 über den Schalter 3150 zu leiten.
In der bevorzugten Ausführungsform ist die Funktionseinheit 3194 vorzugsweise unter
Verwendung von logischen Funktionsgeneratoren und einer Schaltung ausgeführt, die für
mathematische Operationen in einer Gruppe von CL-Blöcken vorgesehen ist. Jede Flip-Flop-
Anordnung 3192 ist vorzugsweise unter Verwendung von Flip-Flops in einer Gruppe von
CL-Blöcken ausgeführt, und der Datenselektor 3190 ist vorzugsweise unter Verwendung von
logischen Funktionsgeneratoren und einer Datenauswählschaltung in einer Gruppe von CL-
Blöcken ausgeführt. Schließlich ist die DOU-Crossbar-Schaltung 3150 vorzugsweise in der
Weise ausgeführt, die vorher bezüglich der Innenschleifen-ISA beschrieben ist.
In Fig. 18 ist ein Blockdiagramm einer bevorzugten Ausführungsform einer Adressen
operation-(AO-)Einheit 3064 dargestellt. Die AO-Einheit 3064 führt Operationen an Adressen
entsprechend AOU-Steuersignalen, HF-Adressen und Konstanten durch, die von der
IF-Einheit 3060 erhalten worden sind. Die AO-Einheit 3064 weist einen AOU-Crossbar-Schalter
3200, eine Speicher/Zähllogik 3202, eine Adressen-Betriebslogik 3204 und einen
Adressenmultiplexer 3206 auf. Der Schalter 3200, die Speicher-Zähllogik 3202, die
Adressenbetriebslogik 3204 und der Adressenmultiplexer 3206 haben jeweils einen
Steuereingang, der mit dem zweiten Steuereingang der IF-Einheit 3060 über die zweite
Steuerleitung 3072 verbunden ist. Der Schalter 3200 hat einen zweigerichteten Datenzugang,
welcher den zweigerichteten Datenzugang der AO-Einheit bildet, einen Adressenrückkopp
lungseingang, der mit einem Adressenausgang der Adressenoperationslogik 3204 über eine
erste Adressenleitung 3210 verbunden ist, einen konstanten Eingang, der mit der dritten
Steuerschaltung 3070 verbunden ist, und einen Adressenausgang, der mit einem Adressen
eingang der Speicher/Zähllogik 3202 über eine zweite Adressenleitung 3212 verbunden ist.
Außer dem Adressen- und Steuereingang hat die Speicher/Zähllogik 3202 einen H-
Adresseneingang, der mit der dritten Steuerleitung 3074 verbunden ist, und einen
Adressenausgang, der mit einem Adresseneingang der Adressenoperationslogik 3204 über
eine dritte Adressenleitung 3214 verbunden ist. Der Adressenmultiplexer 3206 hat einen
ersten Eingang, der mit der ersten Adressenleitung 3210 verbunden ist, einen zweiten
Eingang, der mit der dritten Adressenleitung 3214 verbunden ist, und einen Ausgang,
welcher dem Adressenausgang der AO-Einheit 3064 bildet.
Die Adressenoperationslogik 3204 führt Rechenoperationen an Adressen, die an deren
Adresseneingang erhalten worden sind, unter der Anweisung von AOU-Steuersignalen durch,
die an deren Steuereingang erhalten worden sind. Die Speicher/Zähllogik 3202 sorgt für eine
vorübergehende Speicherung von Adressen und von Adressenrechenergebnissen. Der
Crossbar-Schalter 3200 erleichtert das Laden von Adressen aus dem Speicher 3034, den
Transfer von Ergebnissen, die von der Adressenoperationslogik 3204 abgegeben worden sind,
an die Speicher/Zähllogik 3202 oder den Speicher 3004 und das Laden von Konstanten, die
von der IS-Einheit 3060 abgegeben worden sind, in die Speicher/Zähllogik 3202 entsprechend
den AOU-Steuersignalen, die an deren Steuereingang erhalten worden sind. Der Adressen
multiplexer 3206 gibt selektiv eine Adresse, die von der Speicher/Zähllogik 3202 oder der
Adressenoperationslogik 3200 erhalten worden ist, an den Adressenausgang der AO-Einheit
3064 unter der Anweisung der AOU-Steuersignale ab, die an deren Steuereingang empfangen
worden sind. In der bevorzugten Ausführungsform ist der detaillierte Aufbau des AOU-
Crossbar-Schalters 3200, der Speicher/Ausrichtlogik 3202 und der Adressenbetriebseinheit
3204 abhängig von der Art der gerade in Betracht gezogenen ISA, was nachstehend unter
Bezugnahme auf Fig. 19A und 19B beschrieben wird.
In Fig. 19A ist ein Blockdiagramm einer ersten beispielhaften Ausführungsform der
AO-Einheit 6065 dargestellt, die für die Durchführung einer generellen Außenschleifen-ISA
konfiguriert ist. Eine generelle Außenschleifen-ISA erfordert Hardware zum Durchführen von
Operationen, wie einer Addition, einer Subtraktion, ein Inkrementieren und Dekrementieren
bei dem Inhalt eines Programmzählers und von Adressen, die in der Speicher/Zähllogik 3202
gespeichert sind. In der ersten beispielhaften Ausführungsform der AO-Einheit 3065 weist
die Adressenoperationslogik 3205 vorzugsweise ein das nächste Befehlsprogramm
betreffendes Adressenregister (NIPAR) 3232 mit einem Eingang, einem Ausgang und einem
Steuereingang, eine Recheneinheit 3234 mit ersten bis dritten Eingängen, einem Steuer
eingang und einem Ausgang und einen Multiplexer 3230 mit einem ersten und einem zweiten
Eingang, einem Steuereingang und einem Ausgang auf. Die Steuer/Zähllogik 3202 weist
vorzugsweise einen dritten RAM 3220 und einen vierten RAM 3222 auf, die jeweils einen
Eingang, einen Ausgang, einen Adressenwähleingang und einen Freigabeeingang haben. Der
Adressenmultiplexer 3206 weist vorzugsweise einen Multiplexer mit einem ersten, zweiten
und dritten Eingang, einen Steuereingang und einem Ausgang auf. Der Crossbar-Schalter
3200 weist vorzugsweise einen herkömmliches Crossbar-Schaltnetz mit einseitig gerichteten
Duplex-Crossbar-Verbindungen und mit den Eingängen und Ausgängen auf, die vorher unter
Bezugnahme auf Fig. 19 beschrieben worden sind. Eine effektive Ausführung des AOU-
Crossbar-Schalters 3200 kann Multiplexer, Puffer mit drei Zuständen, eine auf CLB-ba
sierende Logik, eine direkte Verdrahtung und eine Untergruppe solcher Elemente
aufweisen, die durch rekonfigurierbare Verbindungen verbunden sind. Für eine Außen
schleifen-ISA ist der Crossbar-Schalter 3200 vorzugsweise ausgeführt, um eine serielle
Adressenbewegung in einer minimalen Zeit zu maximieren, während auch eine maximale
Anzahl eindeutiger Adressenbewegungs-Crossbar-Verbindungen vorgesehen ist, um
verallgemeinerte eine Außenschleifen-ISA betreffende Pressenoperationsbefehle zu stützen.
Der Eingang des dritten und vierten RAM 3220, 3222 ist jeweils mit dem Ausgang des
Crossbar-Schalters 3200 über die zweite Adressenleitung 3212 verbunden. Die Adressenwähl
eingänge der dritten und vierten RAM 3220, 3222 sind entsprechend geschaltet, um
HF-Adressen von der IF-Einheit 3060 über die dritte Steuerleitung 74 aufzunehmen und die
Freigabeeinänge der ersten und zweiten RAM 3220, 3222 sind entsprechend geschaltet,um
AOU-Steuersignale über die zweite Steuerleitung 3072 aufzunehmen. Der Ausgang des
dritten RAM 3220 ist verbunden mit dem ersten Eingang des Multiplexers 3230, mit dem
ersten Eingang der Recheneinheit 3234 und dem ersten Eingang des Adressenmultiplexers
3206. In ähnlicher Weise ist der Ausgang des vierten RAM 3222 verbunden mit dem zweiten
Eingang des Multiplexers 3220, dem zweiten Eingang der Recheneinheit 3234 und dem
zweiten Eingang des Adressenmultiplexers 3206. Die Steuereingänge des Multiplexers 3230,
des NIPAR-Registers 3232 und die Recheneinheit 3234 sind jeweils mit der zweiten
Steuerleitung 3272 verbunden. Der Ausgang der Recheneinheit 3234 bildet den Ausgang der
Adressenoperationslogik 3204 und ist folglich mit dem Adressenrückkopplungseingang des
AOU-Crossbar-Schalters 3200 und dem dritten Eingang des Adressenmultiplexers 3206
verbunden. Die Verbindungen zu den restlichen Eingängen und Ausgängen des AOU-
Crossbar-Schalters 3200 und des Adressenmultiplexers 3206 sind identisch mit denjenigen,
die vorher unter Bezugnahme auf Fig. 18 beschrieben worden sind.
Um die Durchführung eines Adressen-Operationsbefehls zu vereinfachen, gibt die IF-Einheit
3060 AOU-Steuersignale, HF-Adressen und Konstanten an die AO-Einheit 3064 während
entweder des ISS-Zustandes E oder M ab. Die dritten und vierten RAM 3220, 3222 schaffen
eine erste bzw. zweite Registerdatei für ein vorübergehendes Adressenspeichern. Einzelne
Speicherstellen in dem dritten und vierten RAM 3220, 3222 werden entsprechend dem
HF-Adressen ausgewählt, die an jedem RAM-Adressenauswähleingang erhalten worden sind. Das
Laden des dritten und vierten RAM 3220, 3222 wird durch die AOU-Steuersignale gesteuert,
die der jeweilige RAM 3220, 3222 an seinem Schreib-Freigabeeingang erhält. Der
Multiplexer 3230 leitet selektiv Adressen, die von dem dritten und vierten RAM 3220, 3222
abgegeben worden sind, zu dem NIPAR-Register 3232 unter der Anweisung der AOU-
Steuersignale, die an dessen Steuereingang erhalten worden sind. Das NIPAR-Register 3232
lädt eine Adresse, die von dem Ausgang des Multiplexers 3230 erhalten worden ist, und
inkrementiert deren Inhalt entsprechend den AOU-Steuersignalen, die an dessen Steuer
eingang erhalten worden sind.
In der bevorzugten Ausführungsform speichert das NIPAR-Register 3232 die Adresse des
nächsten durchzuführenden Programmbefehls. Die Recheneinheit 3234 führt Rechen
operationen einschließlich einer Addition, einer Subtraktion, eines Inkrementierens und
Dekrementierens an Adressen, die von dem dritten und vierten RAM 3220, 3222 und/oder
an Inhalten eines NIPAR-Registers 3232 durch. Der Schalter 3200 leitet selektiv 1) Adressen
von dem Speicher 3034 zu dem dritten und vierten RAM 3220, 3222 und 2) Ergebnisse von
Adressenrechnungen, die von der Recheneinheit 3234 abgegeben worden sind, zu dem
Speicher 3034 oder dem dritten und vierten RAM 3220, 3222. Der AOU-Crossbar-Schalter
3200 führt eine ganz bestimmte Lenkoperation gemäß dem AOU-Steuersignalen durch, die
an dessen Steuereingang erhalten worden sind. Der Adressenmultiplexer 3206 lenkt selektiv
Adressen, die von dem dritten RAM 3220 abgegeben worden sind, Adressen, die von dem
vierten RAM 3222 abgegeben worden sind, oder Ergebnisse von Adressenrechnungen, die
von der Recheneinheit 3234 abgegeben worden sind, zu dem AOU-Adressenausgang unter
der Anweisung der AOU-Steuersignale, die an dessen Steuereingang erhalten worden sind.
In der bevorzugten Ausführungsform sind der dritte und vierte RAM 3220, 3222 jeweils
durch Verwenden der Datenspeicherschaltung ausgeführt, die in einem Satz von CL-Blöcken
vorhanden ist. Der Multiplexer 3230 und der Adressenmultiplexer 3206 sind jeweils durch
Verwenden einer Datenauswahlschaltung ausgeführt, die in einem Satz von CL-Blöcken
vorhanden ist, und das NIPAR-Register 3232 ist vorzugsweise durch Verwenden einer
Datenspeicherschaltung ausgeführt, die in einem Satz CL-Blöcken vorhanden ist. Die
Recheneinheit 3234 ist vorzugsweise mit Hilfe von logischen Funktionsgeneratoren und einer
Schaltung ausgeführt, die mathematischen Funktionen in einer Gruppe von CL-Blöcken
zugeordnet ist. Schließlich ist der AOU-Crossbar-Schalter vorzugsweise in der vorstehend
beschriebenen Weise ausgeführt.
In Fig. 19B ist ein Blockdiagramm einer zweiten beispielhaften Ausführungsform der AO-
Einheit 3066 dargestellt, die für die Durchführung einer Innenschleifen-ISA konfiguriert ist.
Vorzugsweise erfordert eine Innenschleifen-ISA Hardware zum Durchführen einer sehr
begrenzten Menge von Adressenoperationen, und eine Hardware, um zumindest einen
Quellenadressenzeiger und eine entsprechende Anzahl von Bestimmungsadressenzeigern
aufrechtzuerhalten. Eine Innenschleifen-Verarbeitung, für welche eine sehr begrenzte Anzahl
von Adressenoperationen oder sogar eine einzige Adressenoperation erforderlich sind, enthält
Block- oder Serpentinenoperationen an Bilddaten, Bitumkehroperationen, Operationen an
zirkularen Pufferdaten und Parsing-Operationen an Daten variabler Länge.
Nachstehend wird eine einzige Adressenoperation betrachtet, nämlich eine Inkrement-Ope
ration. Der Fachmann erkennt, daß Hardware, welche Inkrement-Operationen durchführt,
auch inhärent in der Lage ist, Dekrementier-Operationen durchzuführen, um dadurch eine
zusätzliche Adressen-Operationsmöglichkeit zu schaffen. In der zweiten beispielhaften
Ausführungsform der AO-Einheit 3076 weist die Speicher/Zähllogik 3202 zumindest auf ein
Quellenadressenregister 3252 mit einem Eingang, einem Ausgang und einem Steuereingang,
zumindest ein Bestimmungsadressenregister 3254 mit einem Eingang, einem Ausgang und
einem Steuereingang und einen Datenselektor 3250 mit einem Eingang, einem Steuereingang
und einer Anzahl Ausgänge, welche gleich der Gesamtanzahl an vorhandenen Quellen-
Bestimmungs-Adressenregister 3252, 3254 ist. Hier werden ein einziges Quellenadressen
register 3252 und ein einziges Bestimmungsregister 3254 betrachtet und daher hat der
Datenselektor 3250 einen ersten und einen zweiten Ausgang.
Die Adressenoperations-Logik 3204 weist ein NIPAR-Register 3232 mit einem Eingang, einem
Ausgang und einem Steuerausgang, wie einen Multiplexer 3260 auf, der eine Anzahl
Eingänge, die gleich der Anzahl Datenselektorausgänge sind, einen Steuereingang und einen
Ausgang hat. Hierbei hat der Multiplexer 3260 einen ersten Eingang und einen zweiten
Eingang. Der Adressenmultiplexer 3206 weist vorzugsweise einen Multiplexer mit einer
Anzahl Eingänge auf, welche um eins größer ist als die Anzahl an Datenselektorausgängen,
einem Steuereingang und einem Ausgang auf. Folglich hat hier der Adressenmultiplexer 3201
einen ersten, einen zweiten und einen dritten Eingang. Der Crossbar-Schalter 3200 weist
vorzugsweise ein herkömmliches Crossbar-Schaltnetz mit zweiseitig und einseitig gerichteten
Crossbar-Verbindungen und mit den Eingängen und Ausgängen, die vorher in Verbindung
mit Fig. 18 beschrieben worden sind. Eine effiziente Ausführung des AOU-Crossbar-
Schalters 3200 kann enthalten Multiplexer, Puffer mit drei Zuständen, eine auf CLB
basierende Logik, eine Direktverdrahtung oder eine Untergruppe solcher Elemente, die durch
rekonfigurierbare Kopplungen verbunden sind. Für eine Innenschleifen-ISA ist der Schalter
3200 vorzugsweise ausgelegt, um eine parallele Adressenbewegung in einer minimal
möglichen Zeit durchzuführen, während auch eine minimale Anzahl von eindeutigen
Adressenbewegungs-Crossbar-Kopplungen vorgesehen sind, um Innenschleifen-Operationen
zu stützen. Der Eingang des Datenselektors 3250 ist mit dem Ausgang des Schalters 3200
verbunden. Die ersten und zweiten Ausgänge des Datenselektors 3250 sind mit dem Eingang
des Feldadressenregister 3252 bzw. des Bestimmungsadressen-Registers 3254 verbunden. Die
Steuereingänge des Quellenadressenregisters 3252 und des Bestimmungsadressenregister 3254
erhalten AO-Steuersignale über die zweite Steuerleitung 3072. Der Ausgang des Quellen
adressenregisters 3252 ist mit dem ersten Eingang des Multiplexers 3260 und dem ersten
Eingang des Adressenmultiplexers 3206 verbunden. Dementsprechend ist der Ausgang des
Bestimmungsregisters 3254 mit dem zweiten Eingang des Multiplexers 3260 bzw. des
Adressenmultiplexers 3206 verbunden. Der Eingang des NIPAR-Registers 3232 ist mit dem
Ausgang des Multiplexers 3260 verbunden. Der Steuereingang des Registers 3232 erhält
AOU-Steuersignale über die zweite Steuerleitung 3072, und der Ausgang des Registers 3232
ist sowohl mit dem Adressenrückkopplungseingang des Schalters 3200 als auch mit dem
dritten Eingang des Adressenmultiplexers 3206 verbunden. Die Verbindungen zu den
restlichen Eingängen und Ausgängen des Schalters 3200 sind identisch mit dem, die vorher
bezüglich Fig. 18 beschrieben worden sind.
Beim Betrieb leitet der Datenselektor 3250 Adressen, die von dem AOU-Crossbar-Schalter
3200 erhalten worden sind, zu dem Quellenadressenregister 3252 oder dem Bestimmungs
adressenregister 3254 entsprechend den HF-Adressen, die an dem Steuereingang erhalten
worden sind. Das Quellenadressenregister 3252 lädt eine an dessen Eingang vorhandene
Adresse entsprechend den an dessen Steuereingang vorhandenen AOU-Steuersignal 51636 00070 552 001000280000000200012000285915152500040 0002019815865 00004 51517e. Das
Bestimmungsadressenregister 3254 lädt eine an dessen Eingang vorhandene Adresse in
analoger Weise. Der Multiplexer 3260 leitet eine Adresse, die er von dem Quellenadressen
register 3252 oder dem Bestimmungsadressenregister 3254 erhalten hat, zu dem Eingang des
NIPAR-Registers 3232 entsprechend der AOU-Steuersignalen, die er an dem Steuereingang
erhalten hat. Das Register 3232 lädt eine an dessen Eingang vorhandene Adresse,
inkrementiert oder dekrementiert dessen Inhalt entsprechend den an dem Steuereingang
erhaltenen AOU-Steuersignalen. Der AOU-Crossbar-Schalter 3200 lenkt selektiv 1) Adressen
von dem Speicher 3034 zu dem Datenselektor 3050 und 2) den Inhalt des Registers 3232 zu
dem Speicher 3034 oder dem Datenselektor 3250. Der AOU-Crossbar-Schalter 3200 führt
eine ganz bestimmte Leitoperation entsprechend den an dem Steuereingang erhaltenen AOU-
Steuersignalen. Der Adressenmultiplexer 3206 leitet selektiv den Inhalt des Quellenadressen
registers 3252, des Bestimmungsadressenregisters 3254 oder des NIPAR-Registers 3232 zu
dem AOU-Adressenausgang unter der Anweisung der an dessen Steuereingang erhaltenen
AOU-Steuersignalen.
In der bevorzugten Ausführungsform sind das Quellenadressenregister 3252 und das
Bestimmungsadressenregister 3254 jeweils unter Verwendung der Datenspeicherschaltung
ausgeführt, die in einem Satz von CL-Blöcken vorhanden ist. Das NIPAR-Register 3232 ist
vorzugsweise mit Hilfe einer Inkrementier/Dekrementier-Logik und Flip-Flops in einem Satz
von CL-Blöcken ausgeführt. Der Datenselektor 3250, der Multiplexer 3220 und der
Adressenmultiplexer 3206 sind jeweils vorzugsweise unter Verwendung einer Datenselek
tionsschaltung ausgeführt, die in einem Satz CL-Blöcken vorhanden ist. Schließlich ist der
Schalter 3200 vorzugsweise in der Weise ausgeführt, die vorher für eine Innenschleifen-ISA
beschrieben ist. Der Fachmann erkennt, daß in bestimmten Anwendungen es vorteilhaft sein
kann, eine ISA zu benutzen, welche auf einer Innenschleifen-AOU-Konfiguration einer
Außenschleifen-DOU-Konfiguration oder umgekehrt beruht. Beispielsweise würde eine
assoziative String-Suchvorgang-ISA in vorteilhafter Weise eine Innenschleifen-DOU-Kon
figuration zusammen mit einer Außenschleifen-AOU-Konfiguration ausnutzen. Ferner
würde beispielsweise eine ISA zum Durchführen von Histogramm-Operationen in
vorteilhafter Weise eine Außenschleifen-DOU-Konfiguration in Verbindung mit einer
Innenschleifen-AOU-Konfiguration ausnutzen.
Begrenzte rekonfigurierbare Hardware-Ressourcen müssen zwischen jedem Element der
DRPU-Einheit 3032 angeordnet werden. Da die rekonfigurierbaren Hardware-Ressourcen in
ihrer Zahl begrenzt sind, beeinflußt die Art und Weise, in welcher sie der IF-Einheit 3060
beispielsweise zugeordnet werden, den maximalen Rechenleistungspegel, der von der DA-
Einheit 3062 und der AO-Einheit 3064 erreichbar ist. Die Art und Weise, in welcher die
rekonfigurierbaren Hardware-Ressourcen zwischen der IF-Einheit 3060, der DO-Einheit 3062
und der AO-Einheit 3064 zugeordnet werden, ändert sich entsprechend dem Typ von ISA,
der in einem vorgegebenen Moment durchzuführen ist. Wenn die ISA-Komplexität zunimmt,
müssen mehrere konfigurierbare Hardware-Ressourcen der IF-Einheit 3060 zugeordnet
werden, um zunehmend komplexe Decodier- und Steueroperationen zu vereinfachen, die
weniger rekonfigurierbare Hardware-Ressourcen übriglassen, die zwischen der DO-Einheit
3063 und der AO-Einheit 3064 verfügbar sind. Folglich nimmt die maximale Rechenleistung,
die von der DO-Einheit 3062 und der AO-Einheit 3064 erreichbar ist, mit der ISA-Kom
plexität ab. Im allgemeinen hat eine Außenschleifen-ISA viel mehr Befehle als eine
Innenschleifen-ISA, und daher ist deren Ausführung merklich komplexer hinsichtlich der
Decodier- und Steuerschaltung. Beispielsweise würde eine Außenschleifen-ISA, die einen 64
Bit Universalprozessor definiert, viel mehr Befehle haben als eine Innenschleifen-ISA, die
nur auf eine Datenkompression ausgerichtet ist.
In Fig. 20A ist ein Diagramm dargestellt, das eine beispielhafte Zuordnung von re
konfigurierbaren Hardware-Ressourcen zwischen IF-Einheit 3060, der DO-Einheit 3062 und
der AO-Einheit 3064 für eine Außenschleifen-ISA zeigt. In der beispielhaften Zuordnung der
rekonfigurierbaren Hardware-Ressourcen für die Außenschleifen-ISA sind der IF-Einheit 3060,
der DO-Einheit 3062 und der AO-Einheit 3064 jeweils annäherend ein Drittel der
verfügbaren rekonfigurierbaren Hardware-Ressourcen zugeordnet. Für den Fall, daß die
DRP-Einheit 3032 zu rekonfigurieren ist, um eine Innenschleifen-ISA durchzuführen, werden
weniger rekonfigurierbare Hardware-Ressourcen erfordert, um die IF-Einheit 3060 und die
AO-Einheit 3064 infolge der begrenzten Anzahl von Befehlen und Arten von Adressen
operationen auszuführen, die von einer Innenschleifen-ISA getragen sind.
In Fig. 20B ist ein Diagramm dargestellt, das eine beispielhafte Zuordnung von re
konfigurierbaren Hardware-Ressourcen zwischen der IF-Einheit 3060, der DO-Einheit 3062
und der AO-Einheit 3064 für eine Innenschleifen-ISA zeigt. In der beispielhaften Zuordnung
von rekonfigurierbaren Hardware-Ressourcen für die Innenschleifen-ISA ist die IF-Einheit
3060 unter Verwendung von annähernd 5 bis 10% der rekonfigurierbaren Hardware-
Ressourcen ausgeführt, und die AO-Einheit 3064 ist unter Verwendung von annähernd 10
bis 25% der rekonfigurierbaren Hardware-Ressourcen ausgeführt. Folglich bleiben etwa 70
bis 80% der rekonfigurierbaren Hardware-Ressourcen verfügbar, um die DO-Einheit 3062
auszuführen. Dies wiederum bedeutet, daß der innere Aufbau der DO-Einheit 3062, welche
der Innenschleifen-ISA zugeordnet ist, komplexer sein kann und folglich ein deutlich höheres
Leistungsvermögen bietet als der interne Aufbau der DO-Einheit 3062, welche der
Außenschleifen-ISA zugeordnet ist.
Der Fachmann erkennt, daß die DRP-Einheit 3032 entweder die DO-Einheit 3062 oder die
AO-Einheit 3064 in einer alternativen Ausführungsform enthalten kann. Beispielsweise
braucht in einer alternativen Ausführungsform die DRP-Einheit 3032 nicht eine AO-Einheit
3064 zu enthalten. Die DO-Einheit 3062 würde dann dafür verantwortlich sein, Operationen
sowohl bei Daten als auch bei Adressen durchzuführen. Ungeachtet der besonderen, in
Betracht gezogenen DRPU-Ausführungsform muß eine endliche Anzahl rekonfigurierbarer
Hardware-Ressourcen zugeordnet werden, um die Elemente der DRPU-Einheit 3032
auszuführen. Die rekonfigurierbaren Hardware-Ressourcen sind vorzugsweise so zugeordnet,
daß eine optimale oder beinahe optimale Leistung für die aktuell in Betracht gezogene ISA
relativ zu dem Gesamtraum an verfügbaren rekonfigurierbaren Hardware-Ressourcen erreicht
wird.
Der Fachmann erkennt, daß der detaillierte Aufbau des Elements der IF-Einheit 3060, der
DO-Einheit 3062 und der AO-Einheit 3064 nicht auf die vorstehend beschriebenen
Ausführungsformen beschränkt ist. Für eine vorgegebene ISA ist der entsprechende
Konfigurations-Datensatz vorzugsweise so definiert, daß der interne Aufbau jedes Elements
in der IF-Einheit 3060, der DO-Einheit 3062 und der AO-Einheit 3064 eine Rechenleistung
relativ zu den verfügbaren rekonfigurierbaren Hardware-Ressourcen maximiert.
In Fig. 21 ist ein Blockdiagramm einer bevorzugten Ausführungsform einer T-Einrichtung
3014 dargestellt. Die T-Einrichtung 3014 weist eine zweite lokale Zeitbasiseinheit 3300, eine
gemeinsame Interface- und Steuereinheit 3302 und eine Reihe Verbindungs-Ein/Ausgabeein
heiten 3304 auf. Die zweite lokale Zeitbasiseinheit 3300 hat einen Zeitsteuereingang, welcher
den Master-Zeitsteuereingang der T-Einrichtung bildet. Die gemeinsame Interface-
Steuereinheit 3302 hat einen Zeitsteuereingang, der mit einem Zeitsteuereingang der zweiten
lokalen Zeitbasiseinheit 3300 über eine zweite Zeitsteuersignalleitung 3310 verbunden ist,
einen Adressenausgang, welcher mit der Adressenleitung 3344 verbunden ist, einen ersten
zweigerichteten Dateneingang, der mit der Speicher-Ein/Ausgabe-Leitung 3044 verbunden
ist, einen zweigerichteten Steuereingang, der mit einer externen Steuerleitung 3048 verbunden
ist, und einen zweiten zweigerichteten Dateneingang, der mit einem zweigerichteten
Dateneingang jeder vorhandenen Ein/Ausgabeeinheit 3304 über eine Nachrichtenüber
tragleitung 3312 verbunden ist. Jede Ein/Ausgabeeinheit 3304 hat einen Eingang, welcher
mit der GPI-Matrix 3016 über eine Nachrichteneingangsleistung 3314 verbunden ist, und
einen Ausgang, der mit der GPI-Matrix 3016 über eine Nachrichtenausgangsleitung 3316
verbunden ist.
Die zweite lokale Zeitbasis-Einheit 3300 in der T-Einrichtung 3014 erhält das Master-
Zeitsteuersignal von der Master-Zeitbasiseinheit 3022 und erzeugt ein zweites lokales
Zeitsteuersignal. Die zweite lokale Zeitbasiseinheit 3300 liefert das zweite lokale Zeitsteuer
signal an die gemeinsame Interface-Steuereinheit 3302, um dadurch eine Zeitsteuerreferenz
für die T-Einrichtung 3040 zu schaffen, in welcher sie untergebracht ist. Vorzugsweise ist
die zweite lokale Zeitsteuereinheit phasensynchronisiert mit dem Master-Zeitsteuersignal. In
dem System 1030 arbeitet jede zweite lokale Zeitbasiseinheit 3300 der T-Einrichtung
vorzugsweise auf derselben Frequenz. Der Fachmann erkennt, daß in einer alternativen
Ausführungsform ein oder mehrere zweite lokale Zeitbasiseinheiten 3300 auch auf
unterschiedlichen Frequenzen arbeiten können. Die zweite lokale Zeitbasiseinheit 3300 ist
vorzugsweise mit Hilfe einer herkömmlichen phasenstarren Frequenzumwandlungsschaltung
ausgeführt, die eine auf CLB basierende phasenstarre Detektionsschaltung enthält. Der
Fachmann erkennt, daß in einer alternativen Ausführungsform die zweite lokale Zeitbasis
einheit 3300 als ein Teil eines Taktverteilungsbaums ausgeführt sein könnte.
Die gemeinsame Interface-Steuereinheit 3302 leitet den Nachrichtentransfer zwischen der
entsprechenden S-Einrichtung 3012 und einer spezifizierten Ein-/Ausgabeeinheit 3304, wobei
eine Nachricht einen Befehl und möglicherweise Daten enthält. In der bevorzugten
Ausführungsform kann die spezifizierte Ein/Ausgabeeinheit 3304 in einer T-Einrichtung 3014
oder in einer Ein/Ausgabe-T-Einrichtung 3018 intern oder extern zu dem System 3010
untergebracht sein. In der vorliegenden Erfindung ist jede Ein/Ausgabeeinheit 3304
vorzugsweise einer Verbindungsadresse zugeordnet, die eindeutig die verbindende
Ein/Ausgabeeinheit 3304 identifiziert. Die Verbindungsadressen für die Ein/Ausgabeeinheiten
3304 in einer vorgegebenen T-Einrichtung werden in dem entsprechenden Architektur-
Beschreibungsspeicher 3101 der S-Einrichtung gespeichert.
Die gemeinsame Interface- und Steuereinheit 3302 erhält Daten und Befehle von der
entsprechenden S-Einrichtung 3012 über die Speicher-Ein-/Ausgabeleitung 3064 bzw. die
externe Steuersignalleitung 3048. Vorzugsweise enthält jeder empfangene Befehl eine
Sollkopplungsadresse und einen Befehlscode, welcher eine ganz bestimmte durchzuführende
Operationsart spezifiziert. In der bevorzugten Ausführungsform enthalten die Operationsarten,
die eindeutig durch Befehlscodes codiert sind, 1) Datenleseoperationen, 2) Datenschreib
operationen und 3) einen Unterbrechungssignal-Transfer einschließlich eines
Rekonfigurations- Unterbrechungstransfers. Die Sollkopplungsadresse identifiziert eine
Sollkopplungs-Ein/Ausgabeeinheit 3304, an welcher Daten und Befehle zu übertragen sind.
Vorzugsweise überträgt die gemeinsame Interface-Steuereinheit 3302 jeden Befehl und
irgendwelche diesbezüglichen Daten als einen Satz auf einem Datenpaket basierender
Nachrichten in herkömmlicher Weise, wobei jede Nachricht die Sollkopplungsadresse und
den Befehlscode enthält.
Außer Daten und Befehle von der entsprechenden S-Einrichtung 3012 zu erhalten, erhält die
gemeinsame Interface- und Steuereinheit 3302 Nachrichten von jeder der Ein/Ausgabeeinheit
3304, die mit der Nachrichtenübertragungsleitung 3312 verbunden sind. In der bevorzugten
Ausführungsform wandelt die Interface- und Steuereinheit 3302 eine Gruppe von diesbezügli
chen Nachrichten in eine einzige Befehls- und Datenfolge um. Wenn der Befehl an die
DRP-Einheit 3032 in der entsprechenden S-Einrichtung 3012 gerichtet ist, gibt die Interface- und
Steuereinheit 3302 den Befehl über die externe Steuersignalleitung 3048 ab. Wenn der Befehl
an den Speicher 3034 in der entsprechenden S-Einrichtung 3012 gerichtet ist, gibt die
Interface- und Steuereinheit 3302 ein entsprechendes Speichersteuersignal über die externe
Steuersignalleitung 3048 und ein Speicheradressensignal über die Speicheradressenleitung
3044 ab. Daten werden über die Speicher-Ein/Ausgabeeinheit 3046 übertragen. In der
bevorzugten Ausführungsform weist die Interface- und Steuereinheit 3302 eine auf CLB
basierende Schaltung auf, um Operationen analog denjenigen auszuführen, die von einer
herkömmlichen SCI-Schalteinheit ausgeführt worden sind, die durch ANSI-/IEEE-Norm 1596
bis 1992 definiert ist.
Jede Ein/Ausgabeeinheit 3304 erhält Nachrichten von der Interface- und Steuereinheit 3302
und überträgt Nachrichten an andere Ein/Ausgabeeinheiten 3304 über die GPI-Matrix 3016
unter Anweisung von Steuersignalen, die von der Interface- und Steuereinheit 3302 erhalten
worden sind. In der bevorzugten Ausführungsform basiert die Ein/Ausgabeeinheit 3304 auf
einem SCI-Knoten, wie er durch ASNI/IEEE-Norm 1596-1992 definiert ist. In Fig. 22 ist
ein Blockdiagramm einer bevorzugten Ausführungsform einer Kopplungs-Ein/Ausgabeeinheit
3304 dargestellt. Die Einheit 3304 weist einen Adressendecodierer 3320, einen Eingabe-
FIFO-Puffer 3322, einen Bypass-FIFO-Puffer 3324, einen Ausgangs-FIFO 3326, und einen
Multiplexer 3328 auf. Der Adressendecodierer 3320 hat einen Eingang, welcher den Eingang
einer Kopplungs-Ein/Ausgabeeinheit 3304 bildet, einen ersten Ausgang, der mit dem
Eingabe-FIFO 3322 verbunden ist, und einen zweiten Ausgang, der mit dem Bypass-FIFO
3324 verbunden ist. Das Eingabe-FIFO 3322 hat einen Ausgang, welcher mit der
Nachrichtenübertragungsleitung 3312 verbunden ist, um Nachrichten an die gemeinsame
Interface- und Steuereinheit 3302 zu übertragen. Das Ausgangs-FIFO 3326 hat einen
Eingang, welcher mit der Nachrichtenübertragungsleitung 2312 verbunden ist, um
Nachrichten von dem gemeinsamen Interface und einer Steuerschaltung 3302 zu erhalten, und
einen Ausgang, der mit einem ersten Eingang des Multiplexers 3328 verbunden ist. Der
Bypass-FIFO 3326 hat einen Ausgang, der mit einem zweiten Eingang des Multiplexers 3328
verbunden ist. Schließlich hat der Multiplexer 3328 einen Steuereingang, welcher mit der
Nachrichtenübertragungsleitung 3312 verbunden ist, und einen Ausgang, der den Ausgang
der Kopplungs-Ein/Ausgabeeinheit bildet.
Die Ein/Ausgabeeinheit 3304 erhält Nachrichten an dem Eingang des Adressen-Decodierers
3312, welcher bestimmt, ob die Sollkopplungsadresse, die in der empfangenen Nachricht
spezifiziert ist, identisch mit der Kopplungsadresse der Kopplungs-Ein/Ausgabeeinheit 3304
ist, in welcher sie untergebracht ist. Wenn dem so ist, leitet der Adressendecodierer 3320
die Nachricht zu dem Eingabe-FIFO 3322. Anderenfalls leitet der Adressendecodierer 3320
die Nachricht zu dem Bypass-FIFO 3324. In der bevorzugten Ausführungsform weist der
Adressen-Decodierer 3320 einen Codierer und einen Datenselektor auf, die mit Hilfe IOBs
und CLBs ausgeführt sind.
In Fig. 23 ist ein Blockdiagramm einer bevorzugten Ausführungsform der Ein/Ausgabe-T-Ein
richtung 3018 dargestellt. Die Ein/Ausgabe-T-Einrichtung 3018 weist eine dritte lokale
Zeitbasiseinheit 3360, eine gemeinsame kundenspezifische Interface- und Steuereinheit 3362
und eine Kopplungs-Ein/Ausgabeeinheit 3304 auf. Die dritte lokale Zeitbasiseinheit 3360 hat
einen Zeitsteuereingang, welche den Master-Zeitsteuereingang der Ein/Ausgabe-T-Ein
richtung 3018 bildet. Die Ein/Ausgabe-Einheit 3304 hat einen Eingang, welcher mit der
GPI-Matrix 3016 über eine Nachrichten-Eingabeleitung 3314 verbunden ist, und einen
Ausgang, der mit der GPI-Matrix 3016 über eine Nachrichtenausgabeleitung 3316 verbunden
ist. Die gemeinsame kundenspezifische Interface- und Steuereinheit 3362 hat vorzugsweise
einen Zeitsteuereingang, der mit einem Zeitsteuerausgang des dritten lokalen Zeitbasiseinheit
3360 über eine dritte Zeitsteuersignalleitung 3370 verbunden ist, einen ersten zweigerichteten
Dateneingang, der mit einem zweigerichteten Dateneingang der Kopplungs-Ein/Ausgabe-
Einheit 3304 verbunden ist, und einen Satz Verbindungen zur Ein/Ausgabe-Vorrichtung
3020. In der bevorzugten Ausführungsform enthält der Satz Verbindungen zu der
Ein/Ausgabe-Vorrichtung 3020 einen zweiten zweigerichteten Dateneingang, der mit einem
zweigerichteten Dateneingang der Ein/Ausgabe-Vorrichtung 3020 verbunden ist, einen
Adressenausgang, der mit einem Adresseneingang der Ein/Ausgabe-Vorrichtung 3020
verbunden ist, und einen zweigerichteten Steuereingang, der mit einem zweigerichteten
Steuereingang der Ein/Ausgabe-T-Vorrichtung 3020 verbunden ist. Der Fachmann erkennt
ohne weiteres, daß die Verbindungen zu der Ein/Ausgabe-Vorrichtung 3020 von der Art der
Ein/Ausgabe-Vorrichtung 3020 abhängen, mit welcher die gemeinsame kundenspezifische
Interface- und Steuereinheit 3362 verbunden ist.
Die dritte lokale Zeitbasiseinheit 3360 erhält das Master-Zeitsteuersignal von der Master-
Zeitsteuereinheit 3025 und erzeugt ein drittes lokales Zeitsteuersignal. Die dritte lokale
Zeitbasiseinheit 3360 gibt das dritte lokale Zeitsteuersignal an die Interface- und Steuereinheit
3362 ab, wodurch eine Zeitreferenz für die Ein/Ausgabe-T-Einrichtung 3018 geschaffen ist,
in welcher sie untergebracht ist. In der bevorzugten Ausführungsform ist das dritte lokale
Zeitsteuersignal phasensynchronisiert mit dem Master-Zeitsteuersignal. Jede dritte lokale
Zeitbasiseinheit 3360 der T-Einrichtung arbeitet vorzugsweise auf einer identischen Frequenz.
In einer alternativen Ausführungsform könnten jedoch auch ein oder mehr dritte lokale
Zeitbasiseinheiten 3360 auf verschiedenen Frequenzen arbeiten. Die dritte lokale Zeitbasis
einheit 3360 ist vorzugsweise mit Hilfe einer herkömmlichen phasenstarren Frequen
zumwandlungsschaltung ausgeführt, die eine auf CLB basierende phasenstarre Detektions
schaltung enthält. Analog zu den ersten und zweiten lokalen Zeitbasiseinheiten 3030 könnte
auch die dritte lokale Zeitbasiseinheit 3360 als ein Teil eines Taktverteilungsbaums in einer
alternativen Ausführungsform ausgeführt sein.
Der Aufbau und die Funktionalität der Ein/Ausgabe-Einheit 3304 in der T-Einrichtung 3018
ist vorzugsweise identisch mit derjenigen, die vorstehend für die T-Einrichtung 3014
beschrieben worden ist. Die Ein/Ausgabe-Einheit 3304 in der T-Einrichtung 3018 ist eine
eindeutige Verbindungsadresse analog derjenigen für jede Verbindungs-Ein/Ausgabe-Einheit
3304 in jeder vorgegebenen T-Einrichtung 3014 zugeteilt.
Die gemeinsame kundenspezifische Interface- und Steuereinheit 3362 leitet den Nachrichten
transfer zwischen der Ein-Ausgabevorrichtung 3020, an welche sie gekoppelt ist, und der
Verb indungs-Ein/Ausgabe-Einheit 3304, wobei eine Nachricht einen Befehl und möglicher
weise Daten enthält. Die Interface- und Steuereinheit 3362 erhält Daten und Befehle von der
entsprechenden Ein/Ausgabe-Vorrichtung 3020. Vorzugsweise enthält jeder Befehl, der von
der Ein/Ausgabe-Vorrichtung 3020 empfangen worden ist, eine Sollkopplungsadresse und
einen Befehlscode, der eine ganz bestimmte durchzuführende Operationsart spezifiziert. In der
bevorzugten Ausführungsform enthalten die Operationsarten, die eindeutig durch Befehlscodes
identifiziert sind, 1) Datenanforderung, 2) Datenübertragungsbestätigung und 3) einen
Unterbrechungssignal-Transfer. Die Sollverbindungsadresse identifiziert eine Sollverbindungs-
Ein/Ausgabe-Einheit 3304 in dem System 3010, in welche Daten und Befehle übertragen
sind. Vorzugsweise überträgt die gemeinsame Interface- und Steuereinheit 3062 jeden Befehl
und irgendwelche diesbezüglichen Daten als einen Satz auf einem Datenpaket basierender
Nachrichten in herkömmlicher Weise, wobei jede Nachricht eine Sollverbindungsadresse und
den Befehlscode enthält.
Zusätzlich zum Empfangen von Daten und Befehlen von der entsprechenden Ein/Ausgabe-Vor
richtung 3020 erhält die gemeinsame kundenspezifische Interface- und Steuereinheit 3362
Nachrichten von einer zugeordneten Verbindungs-Ein/Ausgabe-Einheit 3304. In der
bevorzugten Ausführungsform wandelt die Interface- und Steuereinheit 3363 eine Gruppe von
verwandten Nachrichten in eine einzige Befehl- und Datenfolge entsprechend den
Kommunikationsprotokollen, die von der entsprechenden Ein/Ausgabe-Vorrichtung 3020
getragen sind. In der bevorzugten Ausführungsform weist die gemeinsame kundenspezifische
Interface- und Steuereinheit 3362 eine Steuereinheit für die auf CLB-basierende Ein/Ausgabe-
Einheit auf, die mit der auf CLB-basierenden Schaltung verbunden ist, um Operationen
durchzuführen, welche analog denjenigen sind, die von einer herkömmlichen
SCI-Schalteinheit durchgeführt worden sind, wie durch ANSI/IEEE-Norm
1596-1992 definiert ist.
Die GPI-Matrix 3016 ist ein herkömmliches Verbindungsnetz, welches eine parallele Punkt-
zu-Punkt-Nachrichtenlenkung zwischen Verbindungs-Ein/Ausgabe-Einheiten 3304 erleichtert.
In der bevorzugten Ausführungsform ist die GPI-Matrix 3016 ein auf einer Verdrahtung
basierendes, statisches k-näres (k-ary-) Würfel-Verbindungsnetz. In Fig. 24 ist ein
Blockdiagramm einer beispielhaften Ausführungsform einer universellen Verbindungs-GPI-
Matrix 3016 dargestellt. In Fig. 24 ist die Verbindungs-GPI-Matrix 3016 ein toroid- bzw.
ringförmiges Verbindungsmachennetz, über dem entsprechend ein k-närer 2 Würfel, der eine
Anzahl erster Übertragungskanäle 3380 und eine Anzahl zweiter Übertragungskanäle 3382
aufweist. Jeder erste Übertragungskanal 3380 enthält eine Anzahl Knotenverbindungsstellen
3384, ebenso jeder zweite Übertragungskanal 3382. Jede Verbindungs-Ein/Ausgabeeinheit
3304 in dem System 3010 ist vorzugsweise mit der Verbindungs-GPI-Matrix 3014
verbunden, so daß die Nachrichten-Eingangsleitung 3314 und die Nachrichten-Ausgangs
leitung 3310 aufeinanderfolgende Knotenverbindungsstellen 3384 in einem vorgegebenen
Übertragungskanal 3380, 3382 verbinden. In der bevorzugten Ausführungsform enthält jede
T-Einrichtung 3014 eine Verbindungs-Ein/Ausgabe-Einheit 3304, die mit dem ersten
Verbindungskanal 3380 verbunden ist, und eine Verbindungs-Ein-/Ausgabeeinheit 3304, die
mit dem zweiten Verbindungskanal 3382 in der vorstehend beschriebenen Weise verbunden
ist. Die gemeinsame Interface- und Steuereinheit 3302 in der T-Einrichtung 3014 erleichtert
vorzugsweise das Leiten von Information zwischen der mit dem ersten Verbindungskanal
verbundenen Ein/Ausgabe-Einheit 3304 und der mit dem zweiten Verbindungskanal 3382
verbundenen Ein/Ausgabeeinheit 3304. Für eine T-Einrichtung 3014, die eine Verbindungs-Ein/Aus
gabe-Einheit 3304 hat, die mit dem ersten als 3380c bezeichneten Übertragungskanal
verbunden ist, und eine Verbindungs-Ein/Ausgabe-Einheit 3304 hat, die mit dem zweiten als
3382c bezeichneten Übertragungskanal in Fig. 24 verbunden ist, erleichtert diese gemeinsame
Interface- und Steuereinheit 3302 der T-Einrichtung, ein Informationslenken zwischen dieser
Gruppe von ersten und zweiten Übertragungskanälen 3380c, 3382c.
Die Verbindungs-GPI-Matrix 3016 erleichtert folglich das Leiten von vielfachen Nachrichten
in paralleler Form zwischen Verbindungs-Ein/Ausgabeeinheiten 3304. Für die zweidimensio
nale GPI-Matrix 3016, die in Fig. 24 dargestellt ist, enthält jede T-Einrichtung 3014
vorzugsweise eine einzige Verbindungs-Ein/Ausgabe-Einheit 3304 für den ersten Über
tragungskanal 3380 und eine einzige Verbindungs-Ein/Ausgabe-Einheit 3304 für den zweiten
Verbindungskanal 3382. Der Fachmann erkennt, daß nur eine Ausführungsform, in welcher
die Verbindungs-GPI-Matrix 3016 eine Anzahl Dimensionen hat, die größer als zwei ist, die
T-Einrichtung 3014 vorzugsweise mehr als zwei Verbindungs-Ein/Ausgabe-Einheiten 3304
enthält. Vorzugsweise ist die Verbindungs-GPI-Matrix 3016 als eine k-närer 2-Würfel (k-ary
2-cube) mit einer 16 Bitdatenweggröße ausgeführt.
In der vorhergehenden Beschreibung sind verschiedene Elemente der vorliegenden Erfindung
vorzugsweise unter Verwendung von rekonfigurierbaren Hardware-Ressourcen ausgeführt.
Die Hersteller von umprogrammierbaren Logikvorrichtungen stellen üblicherweise
veröffentliche Richtlinien zur Verfügung, um herkömmliche digitale Hardware mit Hilfe von
umprogrammierbaren oder rekonfigurierbaren Hardware-Ressourcen auszuführen.
Beispielsweise enthält das Xilinx-Buch "Programmierbare Logik-Daten" von 1994
(Xilinx, Inc., San Jose, CA) Anwendungshinweise, wie die folgenden: Anwendungshinweis
XAPP 005.002 "Register-Based FIFO"; Anwendungshinweis XAPP 044.00
"High-Performance RAM-Based FIFO2"; Anwendungshinweis XAPP 013.001, "Using the Dedicated
Carry Logic in the XC4000"; Anwendungshinweis XAPP 018.000 "Estimating the
Performance of XC4000 Adders and Counters", Anwendungshinweis: XAPP 028.001,
"Frequency/Phase Comparator for Phase-Locked Loops"; Anwendungshinweis: XAPP3 1.000
"Using the XC4000 RAM Capability", Anwendungshinweis: XAPP 036.001 "Four-Port
DRAM Controller . . .", und Anwendungshinweis XAPP 039.001 "18-Bit Pipelinded
Accumulator". Zusätzliches Material, das von Xilinx veröffentlicht worden ist, enthält
Merkmale in "XCELL, The Quaterly Journal for Xilinx Programmable Logic Users".
Beispielsweise erscheint ein Artikel, der sich im einzelnen mit der Ausführung schneller
ganzzahliger Multiplikatoren befaßt, in Ausgabe 14, der Ausgabe vom 3. Quartal 1994.
Das hier beschriebene System 3010 ist eine skalierbare, parallele Computerarchitektur, um
dynamisch Mehrfach-ISAs auszuführen. Eine einzelne S-Einrichtung 3012 kann ein ganzes
Computerprogramm selbständig ablaufen lassen, unabhängig von einer anderen S-Einrichtung
3012 oder von externen Hardware-Ressourcen, wie ein Host-Computer. Auf einer einzelnen
S-Einrichtung 3012 werden mehrere ISAs zeitlich nacheinander während einer Programm
durchführung entsprechend Rekonfigurationsunterbrechungen und/oder ins Programm
eingebetteten Rekonfigurationsanweisungen ausgeführt. Da das System 3010 vorzugsweise
mehrere S-Einrichtungen 3012 enthält, werden vorzugsweise mehrere Programme gleichzeitig
durchgeführt, wobei jedes Programm unabhängig sein kann. Folglich werden, da das System
3010 vorzugsweise mehrere S-Einrichtungen 3012 enthält, mehrere IS-Architekturen immer
gleichzeitig (d. h. parallel) außer während der System-Initialisierung oder Rekonfiguration
durchgeführt. Das heißt, in einer vorgegebenen Zeit werden mehrere Sätze von Programm
befehlen gleichzeitig durchgeführt, wobei jeder Satz von Programmbefehlen gemäß einer
entsprechenden IS-Architektur durchgeführt wird. Jede derartige IS-Architektur kann
eindeutig sein.
S-Einrichtungen 3012 kommunizieren miteinander und mit Ein/Ausgabevorrichtungen 3020
über die Gruppe von T-Einrichtungen 3014, die Verbindungs-GPI-Matrix 3016 und jede
Ein/Ausgabe-T-Einrichtung 3018. Obwohl jede S-Einrichtung 3012 ein ganzer Computer in
sich ist, der in der Lage ist, einen unabhängigen Betrieb durchzuführen, kann eine
S-Einrichtung 3012 als eine Master-S-Einrichtung 3012 für andere S-Einrichtungen 3012 oder
das ganze System fungieren, das Daten und/oder Befehle zu anderen S-Einrichtungen 3012,
zu einer oder mehreren T-Einrichtungen 3016, einer oder mehreren Ein/Ausgabe-T-Ein
richtungen 3018 und ein oder mehreren Ein/Ausgabe-Einrichtungen 3022 sendet.
Das System 3010 gemäß der Erfindung ist folglich insbesondere bei Problemen verwendbar,
die sowohl räumlich als zeitlich in ein oder mehrere daten-parallele Unterprobleme aufgeteilt
werden können, beispielsweise in eine Bildverarbeitung, eine medizinische Datenver
arbeitung, eine kalibrierte Farbanpassung, eine Datenbasis-Berechnung, eine Dokumenten-
Verarbeitung, assoziative Sucheinrichtungen und Netzwerk-Server. Für Rechenprobleme mit
einem großen Array von Operanden ist eine Daten-Parallelität vorhanden, wenn Algorithmen
angewendet werden können, um so eine effektive Rechenbeschleunigung durch parallele
Rechentechniken anzubieten. Probleme bei der parallelen Datenverarbeitung besitzen eine
bekannte Komplexität, nämlich O(nk). Der Wert von k ist problem-abhängig, beispielsweise
k = 2 für eine Bildverarbeitung und k = 3 für medizinische Datenverarbeitung. Bei der
vorliegenden Erfindung werden die einzelnen S-Einrichtungen bzw. Geräte 3012 vorzugs
weise verwendet, um eine Datenparallelität auf dem Niveau von Programmbefehlsgruppen
auszunutzen. Da das System 3010 mehrere S-Einrichtungen 3012 enthält, wird das System
3010 vorzugsweise benutzt, um eine Datenparallelität auf dem Niveau von ganzen
Programmsätzen auszunutzen.
Das System 3010 gemäß der Erfindung sorgt für sehr viel Rechenleistung, da es in der Lage
ist, die Befehls-Verarbeitungshardware in jede S-Einrichtung 3012 vollständig zu re
konfigurieren, um die Rechenleistung solcher Hardware relativ zu Rechenerfordernissen zu
einem vorgegebenen Zeitpunkt zu optimieren. Jede S-Einrichtung 3012 kann unabhängig von
einer anderen S-Einrichtung 3012 rekonfiguriert werden. Das System 3010 behandelt in
vorteilhafter Weise jeden Konfigurations-Datensatz, und folglich jede IS-Architektur, wie ein
programmiertes Interface zwischen Software und der hier beschriebenen rekonfigurierbaren
Hardware. Die Architektur der vorliegenden Erfindung erleichtert zusätzlich das Strukturie
ren von rekonfigurierbarer Hardware auf hohem Niveau, um selektiv die Angelegenheiten
aktueller Systeme an Ort und Stelle zu adressieren, einschließlich Verhalten, bei welchen eine
Unterbrechung eine Befehlsverarbeitung beeinflußt, die Notwendigkeit für eine de
terministische Latenzantwort, um eine Echtzeit-Verarbeitung und Steuerfähigkeit zu
erleichtern, und die Notwendigkeit für wählbare Antworten bei einer Fehler-Behandlung.
Im Unterschied zu anderen Computer-Architekturen lehrt die vorliegende Erfindung jederzeit
die maximale Ausnutzung von Silizium-Ressourcen. Die vorliegende Erfindung sorgt für ein
paralleles Computersystem, das jederzeit auf jede gewünschte Größe vergrößert werden kann,
sogar auf Tausende von S-Einrichtungen 12. Eine derartige architektonische Skalierbarkeit
ist möglich, da eine auf S-Geräten basierende Befehlsverarbeitung absichtlich von einer auf
T-Einrichtungen basierenden Datenkommunikation getrennt ist. Dieses Paradigma-
Befehlsverarbeitung Datenkommunikation-Trennung ist äußerst günstig für eine parallele
Datenberechnung. Der interne Aufbau einer S-Geräte-Hardware ist vorzugsweise für den
zeitlichen Durchlauf von. Befehlen optimiert, während der interne Aufbau einer T-Geräte-
Hardware vorzugsweise für eine effiziente Datenkommunikation optimiert ist. Die Menge an
S-Einrichtungen bzw. -Geräten 3012 und die Menge an T-Einrichtungen bzw. Geräten sind
jeweils eine trennbare, konfigurierbare Komponente in einer Raum-Zeitaufteilung einer daten-
parallelen Rechenarbeit.
Mit Hilfe der vorliegenden Erfindung kann zukünftige rekonfigurierbare Hardware ausgenutzt
werden, um Systeme mit noch größeren Rechenkapazitäten zu bauen, wobei der hier
beschriebene Gesamtaufbau erhalten bleibt. Mit anderen Worten, das System 10 gemäß der
Erfindung ist technologisch skalierbar. Praktisch brauchen alle gegenwärtig verfügbaren,
rekonfigurierbaren Logik-Vorrichtungen auf speicher-basierender CMOS-(Komplementärer
Metalloxid-Halbleiter)Technologie. In künftigen Systemen würde eine rekonfigurierbare
logische Vorrichtung, die verwendet ist, um eine S-Einrichtung auszuführen, eine Aufteilung
von internen Hardware-Ressourcen gemäß den hier beschriebenen Innenschleifen- und
Außenschleifen-ISA-Parametriken haben. Größere rekonfigurierbare logische Vorrichtungen
bieten einfach die Möglichkeit, mehr daten-parallele Rechenarbeit in einer einzigen
Vorrichtung durchzuführen. Beispielsweise würde eine größere funktionelle Einheit 3194 in
der zweiten beispielhaften Ausführungsform der DO-Einheit 3063, wie vorstehend anhand
von Fig. 17B beschrieben ist, größere Abbildungs-Kerngrößen unterbringen. Der Fachmann
erkennt, daß die technologische Skalierbarkeit, welche durch die vorliegende Erfindung
geschaffen ist, weder auf auf CMOS-basierende Vorrichtungen noch auf FPGA basierende
Ausführungen beschränkt ist. Folglich schafft die Erfindung eine technologische Skalierbar
keit ungeachtet der speziellen Technologie, die verwendet ist, um eine Rekonfigurierbarkeit
oder Umprogrammierbarkeit zu schaffen.
In Fig. 25A und 25B ist ein Ablaufdiagramm eines bevorzugten Verfahrens für ein
skalierbares, paralleles, dynamisch rekonfigurierbares Berechnen dargestellt. Vorzugsweise
wird das in Fig. 25A und 25B dargestellte Verfahren in jeder der S-Einrichtungen 3012 in
dem System 3010 durchgeführt. Das bevorzugte Verfahren beginnt beim Schritt 4000 in Fig.
25A mit der Rekonfigurationslogik 3104, die einen Konfigurations-Datensatz wieder
auffindet, der einer ISA entspricht. Als nächstes konfiguriert beim Schritt 4002 die
Rekonfigurationslogik 3104 jedes Element in der IF-Einheit 3060 der DO-Einheit 3062 und
der AO-Einheit 3064 entsprechend dem wiederaufgefundenen Konfigurations-Datensatz beim
Schritt 4002, wodurch eine DRPU-Hardware-Organisation für die Ausführung der aktuellen
in Betracht gezogenen ISA erzeugt wird. Im Anschluß an den Schritt 4002 findet die
Unterbrechungslogik 3106 die Unterbrechungsantwortsignale wieder, die in dem Architektur-
Beschreibungsspeicher 3101 gespeichert sind, und erzeugt einen entsprechenden Satz von
Übergangssteuersignalen, welche festlegen, wie die aktuelle DRPU-Konfiguration auf
Unterbrechungen beim Schritt 4004 anspricht. Das ISS 3100 initialisiert anschließend beim
Schritt 4006 eine Programm-Zustandsinformation, worauf das ISS 3100 einen Befehls
ausführungszyklus beim Schritt 4008 initialisiert.
Als nächstes bestimmt das ISS 3100 oder die Unterbrechungslogik 3106, ob Rekonfiguration
erforderlich ist. Das ISS 3100 legt fest, daß Rekonfiguration in dem Fall erforderlich ist, daß
eine Rekonfigurationsanweisung während einer Programmausführung gewählt wird. Die
Unterbrechungslogik 3106 bestimmt, daß Rekonfiguration entsprechend einer Rekonfigura
tions-Unterbrechung erforderlich ist. Wenn Rekonfiguration erforderlich ist, geht das
bevorzugte Verfahren auf Schritt 4012 über, bei welchem ein Rekonfigurations-Handhabungs
programm Programmzustandsinformation rettet. Vorzugsweise enthält die Programmzustands
information eine Referenz zu dem Konfigurationsdatensatz, welcher der aktuellen DRPU-
Konfiguration entspricht. Nach dem Schritt 4012 kehrt das bevorzugte Verfahren auf den
Schritt 4000 zurück, um einen nächsten Konfigurations-Datensatz aufzufinden, auf den durch
die Rekonfigurations-Anweisung oder die Rekonfigurations-Unterbrechung Bezug genommen
ist.
Für den Fall, daß die Rekonfiguration beim Schritt 4010 nicht erforderlich ist, bestimmt die
Unterbrechungslogik 3106, ob eine Nicht-Rekonfigurations-Unterbrechung eine Wartung
beim Schritt 4014 erfordert. Wenn dem so ist, bestimmt das ISS 3100 als nächstes beim
Schritt 4020, ob ein Zustandsübergang von dem aktuellen ISS-Zustand in dem Befehlsaus
führungszyklus in den Unterbrechungs-Servicezustand basierend auf den Übergangssteuer
signalen zulässig ist. Wenn ein Zustandsübergang in den Unterbrechungs-Servicezustand nicht
zulässig ist, geht das ISS 3100 in den nächsten Zustand in dem Befehlsausführungszyklus
über und kehrt auf den Schritt 4020 zurück. In dem Fall, daß Übergangssteuersignale einen
Zustandsübergang von dem aktuellen ISS-Zustand in dem Befehlsausführungszyklus in den
Unterbrechungs-Servicezustand erlauben, geht ISS 3100 als nächstes beim Schritt 4024 in den
Unterbrechungs-Servicezustand über. Beim Schritt 4024 stellt das ISS 3100 eine Programm
zustandsinformation sicher und führt Programmbefehle für ein Warten der Unterbrechung
aus. Im Anschluß an den Schritt 4024 kehrt das bevorzugte Verfahren auf den Schritt 4008
zurück, um den aktuellen Befehlsausführungszyklus wieder aufzunehmen, wenn er noch nicht
beendet worden ist, oder um einen nächsten Befehlsausführungszyklus zu initiieren.
Für den Fall, daß keine Nicht-Konfigurations-Unterbrechung eine Wartung beim Schritt 4014
erfordert, geht das bevorzugte Verfahren auf den Schritt 4016 über und stellt fest, ob die
Durchführung des aktuellen Programms beendet ist. Wenn die Durchführung des aktuellen
Programms noch andauert, kehrt das bevorzugte Verfahren auf den Schritt 4008 zurück, um
einen anderen Befehlsausführungszyklus zu initiieren. Andererseits ist das bevorzugte
Verfahren beendet.
Die Lehren der vorliegenden Erfindung unterscheiden sich deutlich von anderen Systemen
und Verfahren für ein umprogrammierbares oder rekonfigurierbares Rechnen. Insbesondere
ist die vorliegende Erfindung nicht äquivalent mit einer herunterladbaren Mikrocode-
Architektur, da solche Architekturen im allgemeinen auf nicht-rekonfigurierbare Steuerein
richtung und eine nicht-rekonfigurierbare Hardware angewiesen sind. Die vorliegende
Erfindung unterscheidet sich also deutlich von einem angeschlossen rekonfigurierbaren
Prozessor-(ARP-)System, in welchem eine Gruppe von rekonfigurierbaren Hardware-
Ressourcen mit einem nicht-rekonfigurierbaren Host-Prozessor oder Host-System verbunden
ist. Die ARP-Einrichtung hängt von dem Host ab, um gewisse Programmbefehle durch
zuführen. Daher wird eine Menge verfügbarer Silizium-Ressourcen nicht maximal über den
Zeitrahmen der Programmdurchführung genutzt, da Silizium-Ressourcen bei der ARP-Ein
richtung oder dem Host unbenutzt sind oder ineffizient genutzt werden, wenn der Host
bzw. die ARP-Einrichtung mit Daten arbeitet. Im Unterschied hierzu ist jede S-Einrichtung
3012 ein unabhängiger Rechner, in welchem ganze Programme ohne weiteres ausgeführt
werden können. Mehrere S-Einrichtungen 3012 führen vorzugsweise gleichzeitig Programme
durch. Die vorliegende Erfindung lehrt daher die ständige maximale Ausnutzung von
Silizium-Ressourcen sowohl für einzelne Programme, die von einzelnen S-Einrichtungen
3012 durchgeführt werden oder von mehreren Programmen, die von dem gesamten System
3010 ausgeführt werden.
Eine ARP-Einrichtung stellt einen Rechenbeschleuniger für einen ganz bestimmten
Algorithmus in einer ganz bestimmten Zeit zur Verfügung und ist als ein Satz von
Verknüpfungsgliedern ausgeführt, die optimal bezüglich dieses spezifischen Algorithmus
miteinander verbunden sind. Die Verwendung von rekonfigurierbaren Hardware-Ressourcen
für universelle Operationen, wie eine verwaltende Befehlsausführung, ist bei ARP-System
vermieden. Darüber hinaus behandelt ein ARP-System nicht eine vorgegebene Menge von
miteinander verbundenen Verknüpfungsgliedern bzw. Gates als eine ohne weiteres
wiederverwendbare Ressource. Im Gegensatz, die vorliegende Erfindung lehrt eine
dynamisch rekonfigurierbare Verarbeitungseinrichtung, die für ein effizientes Management
einer Befehlsausführung gemäß einem Befehlsausführungsmodells konfiguriert ist, das am
besten für die Rechenerfordernisse zu einem ganz bestimmten Zeitpunkt ausgelegt ist. Jede
S-Einrichtung 3012 weist eine Vielzahl ohne weiteres wiederverwendbarer Ressourcen,
beispielsweise das ISS 3100, die Unterbrechungslogik 3106 und die Speicher/Ausrichtlogik
3152 auf. Die vorliegende Erfindung lehrt die Verwendung von rekonfigurierbaren logischen
Ressourcen auf dem Niveau von LCBs- oder IOBs-Gruppen und rekonfigurierbarer
Verbindungen, jedoch nicht auf dem Niveau von miteinander verbundenen Gates. Die
vorliegende Erfindung lehrt folglich die Verwendung von rekonfigurierbaren höherwertigen
logischen Designkonstrakts, die zum Durchführen von Operationen der ganzen Klassen von
Rechenproblemen verwendbar sind, und lehrt nicht ein brauchbares Verbindungsschema, das
für einen einzigen Algorithmus verwendbar ist.
Im allgemeinen sind ARP-Systeme auf ein Übertragen eines ganz bestimmten Algorithmus
in einen Satz von miteinander verbundenen Gates gerichtet. Einige ARP-Systeme versuchen,
hochwertige Befehle in einer optimalen Hardware-Konfiguration zu compilieren, welches im
allgemeinen ein hartes NP-Problem ist. Im Unterschied hierzu lehrt die Erfindung die
Verwendung eines Compilers für ein dynamisch rekonfigurierbares Berechnen, das
hochwertige Programmbefehle in Assembler-Sprachenbefehle gemäß einer variablen ISA auf
sehr unkomplizierte Weise compiliert.
Eine ARP-Einrichtung ist im allgemeinen nicht in der Lage, ihre eigenes Host-Programm als
Daten zu behandeln oder es selbst zu kontextualisieren. Im Unterschied hierzu kann jede
S-Einrichtung in dem System 3010 ihre eigenen Programme als Daten behandeln, und folglich
ohne weiteres selbst kontextualisieren. Das System 3010 kann ohne weiteres sich selbst durch
die Ausführung seiner eigenen Programme simulieren. Die vorliegende Erfindung hat
zusätzlich die Fähigkeit, ihren eigenen Compiler zu compilieren.
In der vorliegenden Erfindung kann ein einziges Programm eine erste Gruppe von Befehlen,
die zu einem ersten ISA gehören, eine zweite Gruppe von Befehlen, die zu einer zweiten ISA
gehören, eine dritte Gruppe von Befehlen, die zu noch einer weiteren ISA gehören, usw.
enthalten. Die hier beschriebene Architektur führt jede derartige Gruppe von Befehlen mit
Hilfe von Hardware durch, die hinsichtlich Durchlaufzeit konfiguriert ist, um die ISA
durchzuführen, zu welcher die Befehle gehören. Keine bekannten Systeme oder Methoden
bieten ähnliche Lehren an.
Die Erfindung lehrt ferner ein rekonfigurierbares Unterbrechungsschema, bei welchem
Unterbrechungslatenz, Unterbrechungspräzision und ein programmierbares Zustands
übergangs-Freigeben gemäß der aktuellen, in Betracht gezogenen ISA sich ändern kann.
Keine anlogen Lehren werden in anderen Computersystemen gefunden. Die vorliegende
Erfindung lehrt zusätzlich ein Computersystem mit einer rekonfigurierbaren Datenweg-
Bitbreite, einer Adressen-Bitbreite und rekonfigurierbare Steuerzeilen-Breiten im Unterschied
zu herkömmlichen Computersystemen.
Zusammenfassend wurde ein Kompiliersystem und ein Verfahren zur Erzeugung einer
Folge von Programmbefehlen zur Verwendung in einer dynamisch rekonfigurierbaren
Verarbeitungseinheit geschaffen, die eine interne Hardwareorganisation aufweist, die
wahlweise unter einer Anzahl von Hardwarearchitekturen geändert werden kann, wobei
jede Hardwarearchitektur Befehle von einem entsprechenden Befehlssatz ausführt.
Quelldateien werden zur Ausführung mit Hilfe von mehreren Befehlsatzarchitekturen
(instruction set architectures) kompiliert, wie dies durch Rekonfigurations-Übersetzungs
anweisungen spezifiziert wird. Die Objektdateien fassen wahlweise Bitströme, die
Hardwarearchitekturen spezifizieren, die Befehlssatzarchitekturen entsprechen, mit
ausführbarem Code zur Ausführung auf den Architekturen zusammen.
Fig. 1
12 S-Einrichtung
14 T-Einrichtung
18 Ein/Ausgabe-T-Einrichtung
20 Ein/Ausgabeeinrichtung
16 Mehrzweckverbindungsmatrix (GPI-Matrix)
22 Master-Zeitbasiseinheit
14 T-Einrichtung
18 Ein/Ausgabe-T-Einrichtung
20 Ein/Ausgabeeinrichtung
16 Mehrzweckverbindungsmatrix (GPI-Matrix)
22 Master-Zeitbasiseinheit
Fig. 1A
131 Taktgenerator
132 Bitstromspeicher
133 Programm-/Datenspeicher
12 S-Einrichtung
14 T-Einrichtung
132 Bitstromspeicher
133 Programm-/Datenspeicher
12 S-Einrichtung
14 T-Einrichtung
Fig. 1B
149 Speicherbus
140 FPGA Konfigurationshardware
146 Befehle dekodieren
147 Speicherinterface
132 ISA0 Bitstrom;
ISA1 Bitstrom
140 FPGA Konfigurationshardware
146 Befehle dekodieren
147 Speicherinterface
132 ISA0 Bitstrom;
ISA1 Bitstrom
Fig. 1C
siehe Fig. 1B
siehe Fig. 1B
Fig. 3
301 Quelldatei lesen
302 ISA identifizieren
303 Rekonfigurationsanweisung erzeugen
304 Anweisungen für identifizierte ISA kompilieren
305 weitere ISA?
306 übersetzen
307 binden
308 laden
309 Ende
302 ISA identifizieren
303 Rekonfigurationsanweisung erzeugen
304 Anweisungen für identifizierte ISA kompilieren
305 weitere ISA?
306 übersetzen
307 binden
308 laden
309 Ende
Fig. 3A
600 nächste Hochsprachenanweisung auswählen
601 Funktionsaufruf
602 verschiedene ISA?
603 RTL-Code abgeben
605 RTL-Funktionsaufruf abgeben
607 RTL-Code zum Speichern lebender Register abgeben
604 RTL-Rekonfigurationscode abgeben
606 RTL-Funktionsaufruf abgeben
608 weitere Hochsprachenanweisung?
609 RTL-Rekonfigurationscode abgeben
611 RTL-Code zum Wiederherstellen lebender Register abgeben
613 RTL-Code zum Lesen von Rückgabewert abgeben
601 Funktionsaufruf
602 verschiedene ISA?
603 RTL-Code abgeben
605 RTL-Funktionsaufruf abgeben
607 RTL-Code zum Speichern lebender Register abgeben
604 RTL-Rekonfigurationscode abgeben
606 RTL-Funktionsaufruf abgeben
608 weitere Hochsprachenanweisung?
609 RTL-Rekonfigurationscode abgeben
611 RTL-Code zum Wiederherstellen lebender Register abgeben
613 RTL-Code zum Lesen von Rückgabewert abgeben
Fig. 3B
612 nächste RTL-Anweisung auswählen
618 Regel für aktuelle RTL-Anweisungsgruppe erhalten
620 Maschinensprachenanweisung erzeugen. Gemäß der Regel für diese ISA setzen
622 andere RTL-Anweisung?
610 Registerreservierung ausführen
618 Regel für aktuelle RTL-Anweisungsgruppe erhalten
620 Maschinensprachenanweisung erzeugen. Gemäß der Regel für diese ISA setzen
622 andere RTL-Anweisung?
610 Registerreservierung ausführen
Fig. 3C
331 RTL-Code mit neuer ISA mit Bemerkungen versehen
332 ISA-abhängige und ISA-unabhängige Optimierung
333 maschinenabhängige Anweisungen erzeugen
332 ISA-abhängige und ISA-unabhängige Optimierung
333 maschinenabhängige Anweisungen erzeugen
Fig. 4
401 Quelle
403 Objekt
404 Binder
405 ausführbares Programm
406 ISA-Bitströme
10 rekonfigurierbarer Computer
407 Ladeprogramm
403 Objekt
404 Binder
405 ausführbares Programm
406 ISA-Bitströme
10 rekonfigurierbarer Computer
407 Ladeprogramm
Fig. 5
501 Binden-Ansicht
503 ELF-Kopfteil
504 Programmkopfteiltabelle optional
505 Abschnitt 1
. . .
Abschnitt n
. . .
506 Abschnittskopfteiltabelle
502 Ausführen-Ansicht
503 ELF-Kopfteil
504 Programmkopfteiltabelle
505 Abschnitt 1
Abschnitt 2
. . .
506 Abschnittskopfteiltabelle optional
503 ELF-Kopfteil
504 Programmkopfteiltabelle optional
505 Abschnitt 1
. . .
Abschnitt n
. . .
506 Abschnittskopfteiltabelle
502 Ausführen-Ansicht
503 ELF-Kopfteil
504 Programmkopfteiltabelle
505 Abschnitt 1
Abschnitt 2
. . .
506 Abschnittskopfteiltabelle optional
Fig. 6
651 Anweisung reconfig
654 vorbestimmte Adresse <= SP
655 Hardware lädt nächste Konfiguration
656 SP <= vorbestimmte Adresse
654 vorbestimmte Adresse <= SP
655 Hardware lädt nächste Konfiguration
656 SP <= vorbestimmte Adresse
Fig. 7
707 lebende Registerwerte retten
701 Parameter zu aufgerufener Funktion schieben
702 rekonfigurieren zu neuer ISA
703 Unterprogramm aufrufen
704 Fluß zum Aufrufer zurückkehren
705 auf ursprüngliche ISA rekonfigurieren
706 Rückgabewert lesen
708 lebende Registerwerte wieder herstellen
701 Parameter zu aufgerufener Funktion schieben
702 rekonfigurieren zu neuer ISA
703 Unterprogramm aufrufen
704 Fluß zum Aufrufer zurückkehren
705 auf ursprüngliche ISA rekonfigurieren
706 Rückgabewert lesen
708 lebende Registerwerte wieder herstellen
Claims (33)
1. Kompilierverfahren zur Erzeugung einer Folge von Programmbefehlen zur Verwendung
in einer dynamisch rekonfigurierbaren Verarbeitungseinheit (10), die eine interne
Hardwareorganisation aufweist, die während der Ausführung der Folge von Programm
befehlen wahlweise unter einer Anzahl von Hardwarearchitekturen geändert werden kann,
wobei jede Hardwarearchitektur Befehle aus einem entsprechenden Befehlssatz ausführt, mit
den folgenden Schritten:
- a) als Eingabe wird eine Quelldatei (301) empfangen, die eine Anzahl von Quellcode-Be fehlsanweisungen enthält, und zwar einschließlich mindestens eines ersten Untersatzes von Befehlsanweisungen und eines zweiten Untersatzes von Befehls anweisungen;
- b) für den ersten Untersatz von Befehlsanweisungen wird ein erster Befehlssatz identifiziert;
- c) für den zweiten Untersatz von Befehlsanweisungen wird ein zweiter Befehlssatz identifiziert; und
- d) der erste Untersatz von Befehlsanweisungen zur Ausführung wird mit Hilfe des ersten Befehlssatzes kompiliert bzw. übersetzt und der zweite Untersatz von Befehls anweisungen zur Ausführung wird mit Hilfe des zweiten Befehlssatzes kompiliert.
2. Verfahren nach Anspruch 1, für das
beim Schritt b) von dem Quellcode eine Rekonfigurations-Betriebsanweisung abgerufen wird, die den ersten Befehlssatz spezifiziert; und
beim Schritt c) von dem Quellcode eine Rekonfigurations-Betriebsanweisung abgerufen wird, die den zweiten Befehlssatz spezifiziert.
beim Schritt b) von dem Quellcode eine Rekonfigurations-Betriebsanweisung abgerufen wird, die den ersten Befehlssatz spezifiziert; und
beim Schritt c) von dem Quellcode eine Rekonfigurations-Betriebsanweisung abgerufen wird, die den zweiten Befehlssatz spezifiziert.
3. Verfahren nach Anspruch 2, bei dem jede Rekonfigurations-Betriebsanweisung unter
Verwendung einer Meta-Syntax bereitgestellt wird.
4. Verfahren nach Anspruch 2 oder 3, bei dem jede Rekonfigurations-Betriebsanweisung
entweder eine Direkt-Rekonfigurations-Betriebsanweisung, eine Funktionsebenen-Re
konfigurations-Betriebsanweisung oder eine Standard-Rekonfigurations-Betriebsanweisung
umfaßt.
5. Verfahren nach einem der vorhergehenden Ansprüche, mit dem weiteren Schritt:
- e) es wird eine ausführbare Datei erzeugt, die die Ergebnisse des Schrittes d) beinhaltet und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurations code, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht.
6. Verfahren nach einem der Ansprüche 1 bis 4, mit dem weiteren Schritt:
- e) es wird eine ausführbare Datei erzeugt, die die Ergebnisse des Schrittes d) beinhaltet und außerdem für jeden Untersatz von Befehlsanweisungen einen Verweis, der einen Bitstrom bestimmt, der den Befehlssatz darstellt, der dem Untersatz von Befehls anweisungen entspricht.
7. Verfahren nach einem der Ansprüche 1 bis 4, mit dem weiteren Schritt:
- e) es wird eine ausführbare Datei erzeugt, die die Ergebnisse des Schrittes d) beinhaltet und außerdem für jeden Untersatz von Befehlsanweisungen einen Verweis, der entsprechend einem erweiterten, ausführbaren Programm und einem Bindungsformat codiert ist, wobei der Verweis einen Bitstrom bestimmt, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
8. Verfahren nach einem der Ansprüche 1 bis 4, mit dem weiteren Schritt:
- e) es wird eine ausführbare Datei erzeugt, die die Ergebnisse des Schrittes d) beinhaltet und außerdem für jeden Untersatz von Befehlsanweisungen einen Bitstrom, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
9. Verfahren nach einem der Ansprüche 1 bis 4, mit den weiteren Schritten:
- e) eine erste Objektdatei wird erzeugt, die die Ergebnisse des Schrittes d) beinhaltet und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurationscode, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht;
- f) die Schritte a) bis e) werden mindestens für eine zweite Quelldatei wiederholt, um mindestens eine zweite Objektdatei zu erzeugen; und
- g) die in den Schritten e) und f) erzeugten Objektdateien werden gebunden, um eine ausführbare Datei zu erzeugen.
10. Verfahren nach Anspruch 9, mit dem weiteren Schritt:
- h) an der erzeugten, ausführbaren Datei wird entsprechend den Ausrichtungserforder nissen eine Speicherausrichtung vorgenommen.
11. Verfahren nach Anspruch 10, bei dem die erzeugte, ausführbare Datei einem Bitstrom
zugeordnet ist, der einen Befehlssatz darstellt, und bei dem der Schritt h) den Schritt umfaßt:
- h.1) der Bitstrom wird aufgefüllt, um eine Speicherausrichtung durchzuführen.
12. Verfahren nach Anspruch 9, bei dem:
beim Schritt a) als Eingabe eine Quelldatei empfangen wird, die eine Anzahl von Quellcode-Befehlsanweisungen einschließlich mindestens eines ersten Untersatzes von Befehlsanweisungen und eines zweiten Untersatzes von Befehlsanweisungen enthält, wobei zumindest eine der Befehls anweisungen einen externen Verweis enthält; und
beim Schritt e) eine erste Objektdatei erzeugt wird, die die Ergebnisse des Schrittes d) enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurationscode, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht, wobei zumindest eine der Befehlsanweisungen einen externen Verweis enthält; und
mit dem weiteren Schritt:
beim Schritt a) als Eingabe eine Quelldatei empfangen wird, die eine Anzahl von Quellcode-Befehlsanweisungen einschließlich mindestens eines ersten Untersatzes von Befehlsanweisungen und eines zweiten Untersatzes von Befehlsanweisungen enthält, wobei zumindest eine der Befehls anweisungen einen externen Verweis enthält; und
beim Schritt e) eine erste Objektdatei erzeugt wird, die die Ergebnisse des Schrittes d) enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurationscode, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht, wobei zumindest eine der Befehlsanweisungen einen externen Verweis enthält; und
mit dem weiteren Schritt:
- f.1) vor der Ausführung des Schrittes g) werden für jede Objektdatei die externen Verweise aufgelöst.
13. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der erste Untersatz von
Befehlsanweisungen eine erste definierte Funktion und der zweite Untersatz von Befehls
anweisungen eine zweite definierte Funktion umfaßt.
14. Verfahren nach einem der Ansprüche 1 bis 13, bei dem der erste Untersatz von
Befehlsanweisungen einen ersten beliebigen Block von Anweisungen und der zweite Untersatz
von Befehlsanweisungen einen zweiten beliebigen Block von Anweisungen umfaßt.
15. Verfahren nach Anspruch 14, bei dem die Quelldatei mindestens einen Funktionsaufruf
und einen Funktionsrücksprung umfaßt und bei dem die Schritte b) und c) jeweils die
wahlweise Ausführung einer interprozeduralen Analyse umfassen, um bei jedem Funktions
aufruf und bei jedem Funktionsrücksprung eine im Kontext befindliche Befehlsatzarchitektur
(ISA) zu identifizieren.
16. Verfahren nach Anspruch 1, mit den weiteren Schritten:
- e) der erste kompilierte Untersatz von Befehlsanweisungen wird für den ersten Befehlssatz optimiert; und
- f) der zweite kompilierte Untersatz von Befehlsanweisungen wird für den zweiten Befehlssatz optimiert.
17. Kompilierverfahren zur Erzeugung einer Folge von Programmbefehlen zur Verwendung
in einer dynamisch rekonfigurierbaren Verarbeitungseinheit, die eine interne Hardware
organisation aufweist, die während der Ausführung der Folge von Programmbefehlen unter
einer Anzahl von Hardwarearchitekturen verändert werden kann, wobei jede Hardware
architektur Befehle von einem entsprechenden Befehlssatz ausführt, mit den folgenden
Schritten:
- a) eine Quellcode-Befehlsanweisung wird von einer Quelldatei ausgewählt, die eine Anzahl von Quellcode-Befehlsanweisungen enthält;
- b) in Antwort auf die Anweisung, die einen Funktionsaufruf umfaßt, werden die
folgenden Schritte ausgeführt:
- b.1) ein erster Befehlssatz, der augenblicklich im Kontext steht, wird bestimmt;
- b.2) ein zweiter Befehlssatz für den Funktionsaufruf wird bestimmt;
- b.3) in Antwort darauf, daß der erste Befehlssatz von dem zweiten Befehlssatz
abweicht, werden die folgenden Schritte ausgeführt:
- b.3.1) Codeanweisungen zur Rekonfiguration werden an den zweiten Befehlssatz abgegeben;
- b.3.2) für den Funktionsaufruf wird eine kompilierte Codeanweisung abgegeben; und
- b.3.3) zur Rekonfiguration werden an den ersten Befehlssatz Codeanweisungen abgegeben; und
- b.4) in Antwort darauf, daß die erste Befehlsatzarchitektur identisch zu dem zweiten Befehlssatz ist, wird für den Funktionsaufruf eine kompilierte Codeanweisung abgegeben;
- c) in Antwort darauf, daß die Anweisung keinen Funktionsaufruf umfaßt, wird für die Anweisung eine kompilierte Codeanweisung abgegeben; und
- d) die Schritte a) bis c) werden für jede Quellcode-Befehlsanweisung in der Quelldatei wiederholt.
18. Verfahren nach Anspruch 17, bei dem der Schritt b.3.1) die folgenden Schritte umfaßt:
- b.3.1.1.) es wird eine Codeanweisung zum Retten von lebenden Registern abgegeben; und
- b.3.1.2) es wird eine Rekonfigurations-Codeanweisung abgegeben; und bei dem der Schritt b.3.3) die folgenden Schritte umfaßt:
- b.3.3.1) es wird eine Rekonfigurations-Codeanweisung abgegeben; und
- b.3.3.2) es wird eine Codeanweisung zur Wiederherstellung der geretteten, lebenden Register abgegeben.
19. Verfahren nach Anspruch 18, bei dem die Codeanweisungen Registertransferebenen
anweisungen (RTL-Anweisungen) umfassen.
20. Verfahren nach Anspruch 19, mit den weiteren Schritten:
- e) eine Register- bzw. Speicherreservierung wird durchgeführt;
- f) für jede Registertransferebenenanweisung wird:
- f.1) bestimmt, ob für die Registertransferebenenanweisung eine Übersetzungsregel existiert; und
- f.2) in Antwort auf die Feststellung, daß eine Übersetzungsregel existiert, wird für die Registertransferebenenanweisung entsprechend der Übersetzungsregel ein Assemblercode erzeugt.
21. Verfahren nach Anspruch 19, mit den weiteren Schritten:
- e) jede Registertransferebenenanweisung wird mit Bemerkungen versehen, um eine Befehlsatzarchitektur (ISA) anzugeben;
- f) die Registertransferebenenanweisungen werden optimiert; und
- g) aus den optimierten Registertransferebenenanweisungen wird ein maschinenabhängiger Assemblercode erzeugt.
22. Verfahren zur Rekonfigurierung einer dynamisch rekonfigurierbaren Verarbeitungseinheit
während der Ausführung eines Programms, das eine Folge von Programmbefehlen umfaßt,
mit den folgenden Schritten:
- a) es wird eine Rekonfigurations-Betriebsanweisung identifiziert, die einen neuen Befehlssatz spezifiziert;
- b) ein Zustand der Programmausführung wird gespeichert;
- c) der neue Befehlssatz wird geladen;
- d) der gespeicherte Zustand der Programmausführung wird wieder abgerufen; und
- e) die Ausführung wird unter Verwendung des neuen Befehlssatzes wieder aufgenommen.
23. Verfahren nach Anspruch 22, bei dem der Schritt b) die folgenden Schritte umfaßt:
- b.1) Zustandsvariablen werden auf einem Stapel gespeichert, auf den mit Hilfe eines Stapelzeigers (SP) verwiesen wird; und
- b.2) der Stapelzeiger wird in einer Speicherstelle abgespeichert; und bei dem der Schritt d) die Schritte umfaßt:
- d.1) der Stapelzeiger wird von der Speicherstelle wieder abgerufen; und
- d.2) die Zustandsvariablen werden von dem Stapel wieder abgerufen.
24. Kompiliersystem zur Erzeugung einer Folge von Programmanweisungen zur Verwendung
in einer dynamisch rekonfigurierbaren Verarbeitungseinheit, die eine interne Hardware
organisation aufweist, die während der Ausführung der Folge von Programmanweisungen
unter einer Anzahl von Hardwarearchitekturen geändert werden kann, wobei jede
Hardwarearchitektur Befehle von einem entsprechenden Befehlssatz ausführt, welches
Kompiliersystem umfaßt:
- a) ein Eingabegerät zur Eingabe von mindestens einer Quelldatei, die eine Anzahl von Quellcode-Befehlsanweisungen enthält, und zwar einschließlich von mindestens einem ersten Untersatz von Befehlsanweisungen, einem zweiten Untersatz von Befehls anweisungen, sowie für jeden Untersatz von Befehlsanweisungen eine Rekonfigura tions-Betriebsanweisung, die eine der Hardwarearchitekturen spezifiziert; und
- b) einen Kompiler, der verbunden ist, um von dem Eingabegerät jede Quelldatei zu empfangen, zur Kompilierung jeder Eingabe-Quelldatei, um eine Objektdatei zu erzeugen, indem der Befehlssatz, der der von jeder Rekonfigurations-Betriebs anweisung spezifizierten Hardwarearchitektur entspricht, identifiziert wird, indem mindestens ein Abschnitt der Eingabe-Quelldatei zur Ausführung unter Verwendung jedes identifizierten Befehlssatzes kompiliert wird, und indem ein Rekonfigurations code erzeugt wird, der jeder Rekonfigurations-Betriebsanweisung entspricht.
25. Kompiliersystem nach Anspruch 24, das außerdem umfaßt:
einen Binder bzw. Linker, der verbunden ist, um jede Objektdatei zu empfangen, zur Verknüpfung der Objektdateien, um eine ausführbare Datei zu erzeugen, die für jede Rekonfigurations-Betriebsanweisung einen Verweis auf einen Bitstrom enthält, der die durch die Rekonfigurations-Betriebsanweisung spezifizierte Hardwarearchitektur beschreibt, sowie eine Folge von Programmanweisungen für die beschriebene Hardwarearchitektur.
einen Binder bzw. Linker, der verbunden ist, um jede Objektdatei zu empfangen, zur Verknüpfung der Objektdateien, um eine ausführbare Datei zu erzeugen, die für jede Rekonfigurations-Betriebsanweisung einen Verweis auf einen Bitstrom enthält, der die durch die Rekonfigurations-Betriebsanweisung spezifizierte Hardwarearchitektur beschreibt, sowie eine Folge von Programmanweisungen für die beschriebene Hardwarearchitektur.
26. Kompiliersystem nach Anspruch 24, das außerdem umfaßt:
einen Binder bzw. Linker, der verbunden ist, um jede Objektdatei zu empfangen, zur Verknüpfung der Objektdateien, um eine ausführbare Datei zu erzeugen, die für jede Rekonfigurations-Betriebsanweisung einen Bitstrom enthält, der die von der Rekonfigurations- Betriebsanweisung spezifizierte Hardwarearchitektur beschreibt, sowie eine Folge von Programmbefehlen für die beschriebene Hardwarearchitektur.
einen Binder bzw. Linker, der verbunden ist, um jede Objektdatei zu empfangen, zur Verknüpfung der Objektdateien, um eine ausführbare Datei zu erzeugen, die für jede Rekonfigurations-Betriebsanweisung einen Bitstrom enthält, der die von der Rekonfigurations- Betriebsanweisung spezifizierte Hardwarearchitektur beschreibt, sowie eine Folge von Programmbefehlen für die beschriebene Hardwarearchitektur.
27. Computerprogrammprodukt, das ein computerverwendbares Medium umfaßt, auf dem
ein computerlesbarer Code verkörpert ist, zur Erzeugung einer Folge von Programmbefehlen
zur Verwendung in einer dynamisch rekonfigurierbaren Verarbeitungseinheit, welche umfaßt:
- a) Geräte für computerlesbaren Programmcode, die ausgelegt sind, um als Eingabe eine Quelldatei zu empfangen, die eine Anzahl von Quellcode-Befehlsanweisungen enthält, einschließlich mindestens eines ersten Untersatzes von Befehlsanweisungen und eines zweiten Untersatzes von Befehlsanweisungen;
- b) Geräte für computerlesbaren Programmcode, die konfiguriert sind, um einen ersten Befehlssatz für den ersten Untersatz von Befehlsanweisungen zu identifizieren;
- c) Geräte für computerlesbaren Programmcode, die konfiguriert sind, um einen zweiten Befehlssatz für den zweiten Untersatz von Befehlsanweisungen zu identifizieren; und
- d) Geräte für computerlesbaren Programmcode, die konfiguriert sind, um den ersten Untersatz von Befehlsanweisungen zur Ausführung unter Verwendung des ersten Befehlssatzes zu kompilieren und um den zweiten Untersatz von Befehlsanweisungen zur Ausführung unter Verwendung des zweiten Befehlssatzes zu kompilieren.
28. Computerprogrammprodukt nach Anspruch 27, das außerdem umfaßt:
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, welche die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurationscode, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht.
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, welche die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurationscode, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht.
29. Computerprogrammprodukt nach Anspruch 27, das außerdem umfaßt:
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, welche die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Verweis, der einen Bitstrom bezeichnet, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, welche die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Verweis, der einen Bitstrom bezeichnet, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
30. Computerprogrammprodukt nach Anspruch 27, das außerdem umfaßt:
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, die die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Verweis, der entsprechend einem erweiterten ausführbaren Programm und einem Bindeformat codiert ist, wobei der Verweis einen Bitstrom bezeichnet, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, die die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Verweis, der entsprechend einem erweiterten ausführbaren Programm und einem Bindeformat codiert ist, wobei der Verweis einen Bitstrom bezeichnet, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
31. Computerprogrammprodukt nach Anspruch 27, das außerdem umfaßt:
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, die die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Bitstrom, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine ausführbare Datei zu erzeugen, die die kompilierten Anweisungen enthält und außerdem für jeden Untersatz von Befehlsanweisungen einen Bitstrom, der den Befehlssatz darstellt, der dem Untersatz von Befehlsanweisungen entspricht.
32. Computerprogrammprodukt nach Anspruch 27, das außerdem umfaßt:
- a) Geräte für computerlesbaren Programmcode, die konfiguriert sind, um eine erste Objektdatei zu erzeugen, welche die kompilierten Anweisungen enthält, und außerdem für jeden Untersatz von Befehlsanweisungen einen Rekonfigurationscode, der den Befehlssatz identifiziert, der dem Untersatz von Befehlsanweisungen entspricht;
- b) Geräte für computerlesbaren Programmcode, die konfiguriert sind, um mindestens eine zweite Objektdatei zu erzeugen; und
- c) Geräte für computerlesbaren Programmcode, die konfiguriert sind, um die erzeugten Objektdateien zu binden, die erzeugt wurden, um eine ausführbare Datei zu erzeugen.
33. Computerprogrammprodukt nach Anspruch 32, das außerdem Geräte für computerles
baren Programmcode umfaßt, die konfiguriert sind, um auf der erzeugten ausführbaren Datei
entsprechend den Ausrichtungserfordernissen eine Speicherausrichtung vorzunehmen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/827,619 US5933642A (en) | 1995-04-17 | 1997-04-09 | Compiling system and method for reconfigurable computing |
US827619 | 1997-04-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19815865A1 true DE19815865A1 (de) | 1998-12-10 |
DE19815865B4 DE19815865B4 (de) | 2004-11-04 |
Family
ID=25249685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19815865A Expired - Fee Related DE19815865B4 (de) | 1997-04-09 | 1998-04-08 | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen |
Country Status (3)
Country | Link |
---|---|
US (1) | US5933642A (de) |
JP (2) | JPH10320214A (de) |
DE (1) | DE19815865B4 (de) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1306751A1 (de) * | 2000-06-06 | 2003-05-02 | OHMI, Tadahiro | System zur verwaltung von schaltkreisen einer informationsverarbeitungsschaltung variabler funktion und verfahren zur verwaltung von schaltkreisen einer informationsverarbeitungs-schaltung variabler funktion |
DE102005010476A1 (de) * | 2005-03-04 | 2006-09-07 | Daimlerchrysler Ag | Steuergerät mit konfigurierbaren Hardwaremodulen |
US7206829B1 (en) | 1998-09-30 | 2007-04-17 | Siemens Aktiengesellschaft | Method for operating a network computer |
Families Citing this family (135)
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 |
JP3961028B2 (ja) | 1996-12-27 | 2007-08-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等) |
DE19654846A1 (de) | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (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 |
DE19915135A1 (de) * | 1998-03-27 | 1999-11-04 | Nec Corp | Verfahren zur Erzeugung einer Verknüpfungshinweis-Datei und Tool/Instrument dafür |
US6334207B1 (en) * | 1998-03-30 | 2001-12-25 | Lsi Logic Corporation | Method for designing application specific integrated circuits |
US6253309B1 (en) | 1998-09-21 | 2001-06-26 | Advanced Micro Devices, Inc. | Forcing regularity into a CISC instruction set by padding instructions |
US6275927B2 (en) | 1998-09-21 | 2001-08-14 | Advanced Micro Devices. | Compressing variable-length instruction prefix bytes |
US6339822B1 (en) | 1998-10-02 | 2002-01-15 | Advanced Micro Devices, Inc. | Using padded instructions in a block-oriented cache |
US6240506B1 (en) * | 1998-10-02 | 2001-05-29 | Advanced Micro Devices, Inc. | Expanding instructions with variable-length operands to a fixed length |
US6314557B1 (en) * | 1998-12-14 | 2001-11-06 | Infineon Technologies Development Center Tel Aviv Ltd | Hybrid computer programming environment |
US6356950B1 (en) * | 1999-01-11 | 2002-03-12 | Novilit, Inc. | Method for encoding and decoding data according to a protocol specification |
KR100731371B1 (ko) * | 1999-02-15 | 2007-06-21 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체 |
US7353163B2 (en) * | 1999-04-27 | 2008-04-01 | Transitive Limited | Exception handling method and apparatus for use in program code conversion |
CN1378665A (zh) | 1999-06-10 | 2002-11-06 | Pact信息技术有限公司 | 编程概念 |
US6578194B1 (en) * | 1999-09-08 | 2003-06-10 | International Business Machines Corporation | System and method using extended relocation types and operations in relocating operations |
US6662302B1 (en) * | 1999-09-29 | 2003-12-09 | Conexant Systems, Inc. | Method and apparatus of selecting one of a plurality of predetermined configurations using only necessary bus widths based on power consumption analysis for programmable logic device |
US7114062B2 (en) * | 1999-12-31 | 2006-09-26 | Johnson Luther A | Processor which accelerates execution of binary programs intended for execution on a conventional processor core, using a reconfigurable combinational logic array, a function lookup unit, and a compatible conventional processor core, without requiring recompilation |
US7340596B1 (en) * | 2000-06-12 | 2008-03-04 | Altera Corporation | Embedded processor with watchdog timer for programmable logic |
JP2004506261A (ja) | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
US6988263B1 (en) | 2000-07-10 | 2006-01-17 | International Business Machines Corporation | Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs |
US6708169B1 (en) * | 2000-07-10 | 2004-03-16 | International Business Machines Corporation | Apparatus and method for generating a merged symbol file for verifying symbolic data |
TW525091B (en) * | 2000-10-05 | 2003-03-21 | Koninkl Philips Electronics Nv | Retargetable compiling system and method |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
ATE498158T1 (de) * | 2000-11-06 | 2011-02-15 | Broadcom Corp | Umkonfigurierbares verarbeitungssystem und - verfahren |
US20020083421A1 (en) * | 2000-12-22 | 2002-06-27 | Hitachi America, Ltd. | Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler |
US9552047B2 (en) | 2001-03-05 | 2017-01-24 | Pact Xpp Technologies Ag | Multiprocessor having runtime adjustable clock and clock dependent power supply |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
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 |
US9250908B2 (en) | 2001-03-05 | 2016-02-02 | Pact Xpp Technologies Ag | Multi-processor bus and cache interconnection system |
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 |
WO2005045692A2 (en) | 2003-08-28 | 2005-05-19 | Pact Xpp Technologies Ag | Data processing device and method |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
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 |
US6725364B1 (en) * | 2001-03-08 | 2004-04-20 | Xilinx, Inc. | Configurable processor system |
US7962716B2 (en) | 2001-03-22 | 2011-06-14 | Qst Holdings, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US20040133745A1 (en) | 2002-10-28 | 2004-07-08 | Quicksilver Technology, Inc. | Adaptable datapath for a digital processing system |
US7752419B1 (en) | 2001-03-22 | 2010-07-06 | Qst Holdings, Llc | Method and system for managing hardware resources to implement system functions using an adaptive computing architecture |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
US6836839B2 (en) | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US6577678B2 (en) * | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
JP3561506B2 (ja) * | 2001-05-10 | 2004-09-02 | 東京エレクトロンデバイス株式会社 | 演算システム |
US10031733B2 (en) * | 2001-06-20 | 2018-07-24 | Scientia Sol Mentis Ag | Method for processing data |
ATE478381T1 (de) * | 2001-06-20 | 2010-09-15 | Richter Thomas | Verfahren zur bearbeitung von daten |
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 |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US6941548B2 (en) * | 2001-10-16 | 2005-09-06 | Tensilica, Inc. | Automatic instruction set architecture generation |
KR100461535B1 (ko) * | 2001-11-02 | 2004-12-14 | 한국전자통신연구원 | 내장형 시스템을 위한 점진적 원격 로딩 장치 및 그 방법 |
WO2003042823A1 (en) * | 2001-11-14 | 2003-05-22 | Exegesys, Inc. | Method and system for software application development and customizable runtime environment |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US6986021B2 (en) | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US7215701B2 (en) | 2001-12-12 | 2007-05-08 | Sharad Sambhwani | Low I/O bandwidth method and system for implementing detection and identification of scrambling codes |
US7403981B2 (en) | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
WO2003060747A2 (de) | 2002-01-19 | 2003-07-24 | Pact Xpp Technologies Ag | Reconfigurierbarer prozessor |
US6988192B2 (en) * | 2002-02-11 | 2006-01-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus for compiling source code to configure hardware |
WO2003071432A2 (de) | 2002-02-18 | 2003-08-28 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
WO2003081454A2 (de) * | 2002-03-21 | 2003-10-02 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US7024664B2 (en) * | 2002-04-22 | 2006-04-04 | Intel Corporation | Symbolic assembly language |
US6732354B2 (en) * | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
US7660984B1 (en) | 2003-05-13 | 2010-02-09 | Quicksilver Technology | Method and system for achieving individualized protected space in an operating system |
US7328414B1 (en) | 2003-05-13 | 2008-02-05 | Qst Holdings, Llc | Method and system for creating and programming an adaptive computing engine |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US7444495B1 (en) * | 2002-08-30 | 2008-10-28 | Hewlett-Packard Development Company, L.P. | Processor and programmable logic computing arrangement |
WO2004038599A1 (de) | 2002-09-06 | 2004-05-06 | Pact Xpp Technologies Ag | Rekonfigurierbare sequenzerstruktur |
US7937591B1 (en) | 2002-10-25 | 2011-05-03 | Qst Holdings, Llc | Method and system for providing a device which can be adapted on an ongoing basis |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US8276135B2 (en) | 2002-11-07 | 2012-09-25 | Qst Holdings Llc | Profiling of software and circuit designs utilizing data operation analyses |
US7225301B2 (en) | 2002-11-22 | 2007-05-29 | Quicksilver Technologies | External memory controller node |
JP2005018626A (ja) * | 2003-06-27 | 2005-01-20 | Ip Flex Kk | 並列処理システムの生成方法 |
KR20070097051A (ko) * | 2004-11-30 | 2007-10-02 | 동경 엘렉트론 주식회사 | 동적으로 재구성 가능한 프로세서 |
JP5175517B2 (ja) * | 2005-04-12 | 2013-04-03 | パナソニック株式会社 | プロセッサ |
WO2006114642A1 (en) * | 2005-04-28 | 2006-11-02 | The University Court Of The University Of Edinburgh | Reconfigurable instruction cell array |
DE102005044728A1 (de) * | 2005-09-19 | 2007-03-29 | Silicon Software Gmbh | Programmierung und Layoutdesign von Hardware |
US7926046B2 (en) * | 2005-12-13 | 2011-04-12 | Soorgoli Ashok Halambi | Compiler method for extracting and accelerator template program |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
US7757224B2 (en) * | 2006-02-02 | 2010-07-13 | Microsoft Corporation | Software support for dynamically extensible processors |
US7827537B2 (en) * | 2006-05-26 | 2010-11-02 | Oracle America, Inc | Searching computer programs that use different semantics |
US20070283336A1 (en) * | 2006-06-01 | 2007-12-06 | Michael Karl Gschwind | System and method for just-in-time compilation in a heterogeneous processing environment |
US8209662B2 (en) | 2006-12-04 | 2012-06-26 | Microsoft Corporation | Application retargeting |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
JP5175524B2 (ja) * | 2007-11-13 | 2013-04-03 | 株式会社日立製作所 | コンパイラ |
US8752056B2 (en) * | 2007-12-03 | 2014-06-10 | International Business Machines Corporation | Running native code across single or multi-core hybrid processor achitecture |
US8336036B2 (en) * | 2008-11-21 | 2012-12-18 | Korea University Industrial & Academic Collaboration Foundation | System and method for translating high programming level languages code into hardware description language code |
US8621447B1 (en) * | 2009-08-25 | 2013-12-31 | Adobe Systems Incorporated | Systems and methods for dynamic struct variable creation including inline declaration with dynamic keys |
CN101697131B (zh) * | 2009-11-04 | 2013-07-03 | 中兴通讯股份有限公司 | 一种可重定位文件动态加载的方法及装置 |
US20110113409A1 (en) * | 2009-11-10 | 2011-05-12 | Rodrick Evans | Symbol capabilities support within elf |
JP5990466B2 (ja) | 2010-01-21 | 2016-09-14 | スビラル・インコーポレーテッド | ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置 |
US8719808B1 (en) * | 2010-01-27 | 2014-05-06 | Altera Corporation | Method and apparatus for using object files to provide reliable program operation |
US20110246966A1 (en) * | 2010-04-06 | 2011-10-06 | Sony Computer Entertainment America Inc. | Embedding source files into program symbol files |
US8473911B1 (en) | 2010-07-23 | 2013-06-25 | Xilinx, Inc. | Documentation generation from a computer readable symbolic representation |
KR20120031756A (ko) * | 2010-09-27 | 2012-04-04 | 삼성전자주식회사 | Cpu와 gpu를 사용하는 이종 시스템에서 가상화를 이용한 어플리케이션 컴파일 및 실행 방법 및 장치 |
US9201754B2 (en) * | 2011-01-19 | 2015-12-01 | Red Hat, Inc. | Recording application consumption details |
US9483284B2 (en) | 2011-02-25 | 2016-11-01 | Red Hat, Inc. | Version compatibility determination |
US20150378698A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Integrated compilation modes for data flow code generation |
US9183020B1 (en) | 2014-11-10 | 2015-11-10 | Xamarin Inc. | Multi-sized data types for managed code |
JP6313237B2 (ja) | 2015-02-04 | 2018-04-18 | 東芝メモリ株式会社 | ストレージシステム |
US9213638B1 (en) | 2015-03-24 | 2015-12-15 | Xamarin Inc. | Runtime memory management using multiple memory managers |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10409599B2 (en) * | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10169044B2 (en) * | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10713213B2 (en) * | 2016-12-21 | 2020-07-14 | Intel Corporation | Systems and methods for multi-architecture computing |
US10684984B2 (en) | 2016-12-21 | 2020-06-16 | Intel Corporation | Computing devices and server systems with processing cores having different instruction set architectures |
US10540186B1 (en) | 2017-04-18 | 2020-01-21 | Amazon Technologies, Inc. | Interception of identifier from client configurable hardware logic |
US11275709B2 (en) | 2017-05-02 | 2022-03-15 | Intel Corporation | Systems and methods for multi-architecture computing |
EP3662384A4 (de) * | 2017-08-03 | 2021-05-05 | Next Silicon Ltd | Laufzeitoptimierung einer konfigurierbaren hardware |
WO2019055675A1 (en) | 2017-09-13 | 2019-03-21 | Next Silicon, Ltd. | DATA ARCHITECTURE WITH DIRECTED AND INTERCONNECTED GRID |
FR3074931B1 (fr) * | 2017-12-13 | 2020-01-03 | Vsora | Architectures de processeur |
US10892952B2 (en) | 2019-02-21 | 2021-01-12 | Juniper Networks, Inc. | Supporting compilation and extensibility on unified graph-based intent models |
US10897396B2 (en) | 2019-03-29 | 2021-01-19 | Juniper Networks, Inc. | Supporting concurrency for graph-based high level configuration models |
US10841182B2 (en) | 2019-03-29 | 2020-11-17 | Juniper Networks, Inc. | Supporting near real time service level agreements |
EP3722944A1 (de) | 2019-04-10 | 2020-10-14 | Juniper Networks, Inc. | Absicht-basierte netzwerkbewusste netzwerkvorrichtungssoftware-upgrade-planung |
US11165647B2 (en) | 2019-06-28 | 2021-11-02 | Juniper Networks, Inc. | Managing multiple semantic versions of device configuration schemas |
US11467812B2 (en) * | 2019-11-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Compiler operations for heterogeneous code objects |
US11256522B2 (en) | 2019-11-22 | 2022-02-22 | Advanced Micro Devices, Inc. | Loader and runtime operations for heterogeneous code objects |
US11269526B2 (en) | 2020-04-23 | 2022-03-08 | Next Silicon Ltd | Interconnected memory grid with bypassable units |
US11403100B2 (en) | 2020-08-31 | 2022-08-02 | Microsoft Technology Licensing, Llc | Dual architecture function pointers having consistent reference addresses |
US11231918B1 (en) * | 2020-08-31 | 2022-01-25 | Microsoft Technologly Licensing, LLC | Native emulation compatible application binary interface for supporting emulation of foreign code |
US11714615B2 (en) | 2020-09-18 | 2023-08-01 | International Business Machines Corporation | Application migration using cost-aware code dependency graph |
JP2023088120A (ja) | 2021-12-14 | 2023-06-26 | 久利寿 帝都 | ソフトウェア開発装置およびソフトウェア開発プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
GB9316948D0 (en) * | 1993-08-14 | 1993-09-29 | Ibm | Programming aid for distributed computing systems |
US5600845A (en) * | 1994-07-27 | 1997-02-04 | Metalithic Systems Incorporated | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US5848273A (en) * | 1995-10-27 | 1998-12-08 | Unisys Corp. | Method for generating OLE automation and IDL interfaces from metadata information |
-
1997
- 1997-04-09 US US08/827,619 patent/US5933642A/en not_active Expired - Lifetime
-
1998
- 1998-04-08 DE DE19815865A patent/DE19815865B4/de not_active Expired - Fee Related
- 1998-04-09 JP JP10097703A patent/JPH10320214A/ja active Pending
-
2005
- 2005-12-19 JP JP2005365548A patent/JP4050764B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206829B1 (en) | 1998-09-30 | 2007-04-17 | Siemens Aktiengesellschaft | Method for operating a network computer |
EP1306751A1 (de) * | 2000-06-06 | 2003-05-02 | OHMI, Tadahiro | System zur verwaltung von schaltkreisen einer informationsverarbeitungsschaltung variabler funktion und verfahren zur verwaltung von schaltkreisen einer informationsverarbeitungs-schaltung variabler funktion |
EP1306751A4 (de) * | 2000-06-06 | 2009-05-06 | Tadahiro Ohmi | System zur verwaltung von schaltkreisen einer informationsverarbeitungsschaltung variabler funktion und verfahren zur verwaltung von schaltkreisen einer informationsverarbeitungs-schaltung variabler funktion |
DE102005010476A1 (de) * | 2005-03-04 | 2006-09-07 | Daimlerchrysler Ag | Steuergerät mit konfigurierbaren Hardwaremodulen |
Also Published As
Publication number | Publication date |
---|---|
DE19815865B4 (de) | 2004-11-04 |
JP4050764B2 (ja) | 2008-02-20 |
JP2006155632A (ja) | 2006-06-15 |
US5933642A (en) | 1999-08-03 |
JPH10320214A (ja) | 1998-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19815865A1 (de) | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen | |
DE102018005181B4 (de) | Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen | |
DE19614991C2 (de) | Dynamisch rekonfigurierbare Verarbeitungseinheit, System zur dynamisch rekonfigurierbaren Steuerung, System zum Koppeln von Prozessoren, Verfahren zur Erzeugung von Instruktionen, Verfahren zum dynamischen rekonfigurierbaren Rechnen, dynamisch rekonfigurierbare Computer und Verfahren zur Datenverarbeitung | |
DE102018006735A1 (de) | Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array | |
DE102018005169A1 (de) | Prozessoren und verfahren mit konfigurierbaren netzwerkbasierten datenflussoperatorschaltungen | |
DE102018006889A1 (de) | Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array | |
EP1228440B1 (de) | Sequenz-partitionierung auf zellstrukturen | |
DE102018005216A1 (de) | Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen | |
EP1402382B1 (de) | Verfahren zur bearbeitung von daten | |
EP1342158B1 (de) | Pipeline ct-protokolle und -kommunikation | |
EP0961980B1 (de) | Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines | |
DE19735348B4 (de) | Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben | |
DE60037065T2 (de) | Übertragungsteuerung mit Naben- und Torachitektur | |
DE69826700T2 (de) | Kompilerorientiertes gerät zur parallelkompilation, simulation und ausführung von rechnerprogrammen und hardwaremodellen | |
DE19722365A1 (de) | Rekonfigurierbares Rechenbauelement | |
DE60316151T2 (de) | Zugriff zum breiten speicher | |
EP1116128A2 (de) | Verfahren zum konfigurieren eines konfigurierbaren hardware-blocks | |
DE19983504B4 (de) | Verbesserung der Portabilität von digitalen Bildern | |
KR100958909B1 (ko) | 소스 코드에서의 규격을 분할하는 방법 및 목표 시스템을 생성하는 공동-설계 방법 | |
DE60102694T2 (de) | Modulares computersystem und -verfahren | |
EP1472616B8 (de) | Rekonfigurierbare elemente | |
DE69728495T2 (de) | Vliw-prozessor zur verarbeitung eines komprimierten instruktionsformats | |
EP3538996B1 (de) | Austausch von echtzeitdaten zwischen programmmodulen | |
DE19655265B4 (de) | Verfahren zur Erzeugung von Instruktionen zur dynamischen Rekonfiguration | |
EP0981079B1 (de) | Programmierbare 1-Bit Datenverarbeitungsanordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20131101 |