DE19614991A1 - System und Verfahren zum skalierbaren, parallelen, dynamisch rekonfigurierbaren Rechnen - Google Patents
System und Verfahren zum skalierbaren, parallelen, dynamisch rekonfigurierbaren RechnenInfo
- Publication number
- DE19614991A1 DE19614991A1 DE19614991A DE19614991A DE19614991A1 DE 19614991 A1 DE19614991 A1 DE 19614991A1 DE 19614991 A DE19614991 A DE 19614991A DE 19614991 A DE19614991 A DE 19614991A DE 19614991 A1 DE19614991 A1 DE 19614991A1
- Authority
- DE
- Germany
- Prior art keywords
- input
- data
- output
- instruction
- unit
- 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
- 230000015654 memory Effects 0.000 claims description 179
- 238000012545 processing Methods 0.000 claims description 128
- 238000004891 communication Methods 0.000 claims description 79
- 238000000034 method Methods 0.000 claims description 60
- 230000004044 response Effects 0.000 claims description 54
- 230000007704 transition Effects 0.000 claims description 42
- 238000003860 storage Methods 0.000 claims description 37
- 239000000872 buffer Substances 0.000 claims description 35
- 230000008520 organization Effects 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000013500 data storage Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 11
- 238000007726 management method Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 1
- 108090000623 proteins and genes Proteins 0.000 claims 1
- 239000011159 matrix material Substances 0.000 abstract description 8
- 230000002457 bidirectional effect Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 44
- 238000012546 transfer Methods 0.000 description 32
- 238000004422 calculation algorithm Methods 0.000 description 22
- 238000004886 process control Methods 0.000 description 15
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 13
- 230000033001 locomotion Effects 0.000 description 13
- 229910052710 silicon Inorganic materials 0.000 description 13
- 239000010703 silicon Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 11
- 101000994167 Homo sapiens Iron-sulfur cluster assembly 1 homolog, mitochondrial Proteins 0.000 description 9
- 102100031404 Iron-sulfur cluster assembly 1 homolog, mitochondrial Human genes 0.000 description 9
- 230000000295 complement effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000036651 mood Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012369 In process control Methods 0.000 description 3
- 230000035508 accumulation Effects 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000000227 grinding Methods 0.000 description 3
- 238000010965 in-process control Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 101150064205 ESR1 gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000007853 buffer solution Substances 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 241000283283 Orcinus orca Species 0.000 description 1
- 241001128140 Reseda Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- WYTGDNHDOZPMIW-RCBQFDQVSA-N alstonine Natural products C1=CC2=C3C=CC=CC3=NC2=C2N1C[C@H]1[C@H](C)OC=C(C(=O)OC)[C@H]1C2 WYTGDNHDOZPMIW-RCBQFDQVSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001684 chronic effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 210000003608 fece Anatomy 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 150000002500 ions Chemical class 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000008961 swelling Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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 or 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
- 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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
-
- 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 or look ahead
- G06F9/3824—Operand accessing
-
- 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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or 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 or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or 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 or 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 or 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
- Logic Circuits (AREA)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung nimmt bezug auf die US-Patentan
meldung mit dem Titel: "System und Verfahren für phasensyn
chrones Takten mit flexibler Frequenz und phasensynchrone
Nachrichtenübertragung" bzw. "System and Method for Phase-
Synchronous, Flexible Frequency Clocking and Messaging".
Die vorliegende Erfindung betrifft im allgemeinen die Ar
chitektur von Computern und insbesondere Systeme und Ver
fahren zum rekonfigurierbaren bzw. umstrukturierbaren Rech
nen. Noch genauer handelt es sich bei der vorliegenden Er
findung um ein System und ein Verfahren zum skalierbaren,
parallelen, dynamisch rekonfigurierbaren Rechnen.
Die Evolution der Computerarchitektur wird von dem Bedürfnis
nach immer größerer Rechenleistung angetrieben. Eine schnel
le und genaue Lösung verschiedener Arten von Rechenproblemen
oder numerischen Problemen erfordert typischerweise ver
schiedene Arten von Rechen-Systemelementen bzw. Rechen-Re
sourcen. Ist ein bestimmter Problembereich gegeben, so kann
die Rechenleistung durch die Verwendung von Rechen-System
elementen erhöht werden, die speziell für die betrachteten
Problemtypen architektonisch ausgelegt bzw. strukturiert
wurden. Zum Beispiel kann die Verwendung einer Hardware zur
digitalen Signalverarbeitung (DSP) bzw. eine "Digital Signal
Processing"-Hardware in Verbindung mit einem Allzweck-Compu
ter signifikant bestimmte Arten der Signalverarbeitungslei
tung bzw. der Signalverarbeitungswirkung erhöhen. Für den
Fall, daß ein Computer selbst speziell für die betrachteten
Problemtypen architektonisch ausgelegt wurde, wird die Be
rechnungsleistungsfähigkeit weiter erhöht werden oder mögli
cherweise sogar in bezug auf die verfügbaren Rechen-System
elemente bzw. Rechen-Resourcen für diese bestimmten Problem
typen optimiert werden. Gegenwärtige parallele oder massiv
parallele Computer, die eine hohe Leistungsfähigkeit für
bestimmte Typen von Probleme der Ordnung n² bzw. von O(n²)
oder größerer Komplexität anbieten, stellen Beispiele für
diesen Fall dar.
Das Bedürfnis nach größerer Rechenleistung muß gegenüber dem
Bedürfnis nach der Minimierung der Systemkosten und dem
Bedürfnis nach der Maximierung der Systemleistungsfähigkeit
in einem breitestmöglichen Bereich sowohl der täglichen bzw.
aktuellen als auch möglichen zukünftigen Anwendungen abgewo
gen werden. Im allgemeinen beeinträchtigt das Einbringen von
Rechen-Systemelementen bzw. Rechen-Resourcen, die auf eine
begrenzte Anzahl von Problemtypen ausgerichtet sind, in ein
Computersystem nachteilig die Systemkosten, weil eine spe
zialisierte Hardware typischerweise teurer ist als eine
Allzweck-Hardware. Die Gestaltung und die Erzeugung eines
ganzen Computers für einen bestimmten Zweck kann so teuer
werden, daß es sich verbietet, und zwar sowohl bezüglich der
Erstellungszeit als auch der Hardwarekosten. Die Verwendung
spezialisierter Hardware, um die Rechenleistung zu erhöhen,
kann wenig positives bezüglich der Leistungsfähigkeit anbie
ten, da die Bedürfnisse bezüglich der Berechnungen sich
ändern. Im Stand der Technik wurden, da sich die Erforder
nisse bezüglich der Berechnung geändert haben, neue Typen
spezialisierter Hardware oder neue Systeme für bestimmte
Zwecke gestaltet und hergestellt, was zu einem weiterlaufen
den Kreislauf von unerwünschten, nicht zurücklaufenden Inge
nieurkosten bzw. Erstellungskosten führt. Die Verwendung von
Rechen-Systemelementen bzw. Rechen-Resourcen, die auf be
stimmte Problemtypen ausgerichtet sind, führt deshalb zu
einer ineffizenten Verwendung verfügbaren System-Siliziums,
wenn man die sich ändernden Rechenerfordernisse bzw. Rechen
bedürfnisse in Betracht zieht. Somit ist es wegen der oben
beschriebenen Gründe nicht wünschenswert, wenn man versucht,
die Rechenleistung zu erhöhen, indem man spezialisierte
Hardware verwendet.
Im Stand der Technik wurden verschiedene Versuche bzw. An
läufe unternommen, um sowohl die Rechenleistung zu erhöhen
als auch die problemtypische Anwendbarkeit zu maximieren,
indem reprogrammierbare oder rekonfigurierbare Hardware
verwendet wird. Ein erster derartiger Anlauf bzw. Versuch
gemäß dem Stand der Technik liegt in herunterladbaren Mikro
code-Computerarchitekturen. In einer herunterladbaren Mikro
code-Architektur kann das Verhalten von fixen, nicht rekon
figurierbaren Hardware-Systemelementen selektiv geändert
werden, indem eine bestimmte Version eines Mikrocodes ver
wendet wird.
Ein Beispiel für eine derartige Architektur ist diejenige
des IBM-Systems/360. Da die fundamentale bzw. grundlegende
Rechen-Hardware in derartigen Systemen nach dem Stand der
Technik nicht selbst rekonfigurierbar ist, liefern derartige
Systeme keine optimierte Rechenleistungsfähigkeit, wenn man
einen breiten Bereich von Problemtypen betrachtet.
Ein zweiter Anlauf bzw. Versuch nach dem Stand der Technik
im Hinblick auf sowohl einer Erhöhung der Rechenleistungs
fähigkeit als auch einer Maximierung der problemtypischen
Anwendbarkeit liegt in der Verwendung einer rekonfigurier
baren Hardware, die mit einem nicht-rekonfigurierbaren Host-
Prozessor oder Most-System verbunden ist bzw. damit gekop
pelt ist. Diesen Versuch bzw. Anlauf kann man als "zugeord
nete rekonfigurierbare Prozessor" - bzw. "Attached Reconfigu
ralbe Processor" (ARP) -Architektur kategorisieren, bei wel
cher ein gewisser Anteil der Hardware innerhalb einer Pro
zessorgruppe, die einem Most zugeordnet ist, rekonfigurier
bar ist. Beispiele gegenwärtiger ARP-Systeme, die eine Grup
pe rekonfigurierbarer Prozessoren verwenden, die mit einem
Most-System gekoppelt sind bzw. verbunden sind, beinhalten:
die SPLASH-1- und SPLASH-2-Systeme, die an dem Supercomputer
Forschungszentrum bzw. Supercomputing Research Center
(Bowie, MD, USA) designed bzw. gestaltet wurden; den WILDFIRE
bzw. allgemein konfigurierbaren Computer, der von den An
napolis Micro Systems (Annapolis, MD, USA) hergestellt wird,
der eine kommerzielle Version der SPLASH-2 darstellt; und
dem EVC-1, der von der Virtual Computer Corporation (Reseda,
CA, USA), hergestellt wird. Bei den meisten rechenintensiven
Problemen wird eine beträchtliche Menge an Zeit darauf ver
wendet, relativ kleine Abschnitte von Programmcodes auszu
führen. Im allgemeinen werden ARP-Architekturen verwendet,
um eine rekonfigurierbare Rechenbeschleunigungseinrichtung
für derartige Abschnitte von Programmcodes bereitzustellen.
Unglücklicherweise leidet ein Rechenmodell, das auf einer
oder mehreren rekonfigurierbaren Rechenbeschleunigungsein
richtungen basiert, an beträchtlichen Nachteilen, wie im
folgenden beschrieben werden wird.
Ein erster Nachteil der ARP-Architekturen tritt auf, weil
ARP-Systeme versuchen, eine optimierte Implementation eines
bestimmten Algorithmus in einer rekonfigurierbaren Hardware
zu einer bestimmten Zeit bereitzustellen. Die Philosophie,
die hinter dem EVC-1 der Virtual Computer Corporation liegt,
besteht z. B. darin, einen speziellen Algorithmus in eine
spezielle Konfiguration von rekonfigurierbaren Hardware-
Systemelementen umzuwandeln, um eine optimierte Rechenlei
stung für jenen bestimmten Algorithmus bereitzustellen.
Rekonfigurierbare Hardware-Systemelemente werden allein zu
dem Zweck verwendet, eine optimale Leistungsfähigkeit für
einen bestimmten Algorithmus bereitzustellen. Die Verwendung
von rekonfigurierbaren Hardware-Systemelementen für allge
meinere Zwecke, wie z. B. dem Management der Ausführung von
Instruktionen bzw. Befehlen, wird vermieden. Für einen gege
benen Algorithmus werden somit rekonfigurierbare Hardware-
Systemelemente unter dem Gesichtspunkt von individuellen
Gattern bzw. Gates betrachtet, die gekoppelt sind, um eine
optimale Leistungsfähigkeit zu gewährleisten.
Gewisse ARP-Systeme verlassen sich auf ein Programmierungs
modell, bei welchem ein "Programm" sowohl konventionelle
Programminstruktionen bzw. -befehle beinhaltet als auch
Instruktionen für spezielle Zwecke, die spezifizieren, wie
verschiedene rekonfigurierbare Hardware-Systemelemente un
tereinander verbunden sind. Weil ARP-Systeme rekonfigurier
bare Hardware-Systemelemente in einer algorithmus-spezifi
schen Art und Weise auf Gatterebene betrachten, müssen diese
auf einen speziellen Zweck gerichtete Instruktionen explizi
te Details bezüglich der Natur eines jeden verwendeten
rekonfigurierbaren Hardware-Systemelements und der Art und
Weise, in der es mit anderen rekonfigurierbaren Hardware-
Systemelementen verbunden ist, bereitstellen. Dies
beeinflußt nachteilig die Programmkomplexität. Um die
Programmkomplexität zu verringern, wurden Versuche unter
nommen, eine Programmiermodell zu verwenden, bei welchem ein
Programm sowohl konventionelle Instruktionen auf hohem Ni
veau einer Programmiersprache als auch Instruktionen auf
hohem Niveau für spezielle Zwecke beinhaltet. Gegenwärtige
ARP-Systeme versuchen deshalb, ein Kompilier-System zu ver
wenden, das in der Lage ist, sowohl Befehle auf hohem Niveau
einer Programmiersprache zu kompilieren als auch die zuvor
erwähnten Befehle auf hohem Niveau für spezielle Zwecke. Die
angestrebte Ausgabe bzw. Sollausgabe eines derartigen
Kompilier-Systems ist ein Code in Assemblersprache für
konventionelle Instruktionen auf hohem Niveau einer Program
miersprache und in ein Code einer Hardware-Beschreibungs
sprache bzw. einer "Hardware Description Lanquage" (HDL) für
Befehle zu speziellen Zwecken. Unglücklicherweise stellt die
automatische Bestimmung einer Gruppe von rekonfigurierbaren
Hardware-Systemelementen und ein Schema bezüglich ihrer
Verbindung, um eine optimale Rechenleistung für jeglichen
bestimmten Algorithmus, der gerade betrachtet wird, ein NP-
Hard-Problem bzw. "NP-hard"-Problem dar. Ein Fernziel gewis
ser ARP-Systeme ist die Entwicklung eines Kompiliersystems,
das einen Algorithmus direkt in ein optimiertes Schema be
züglich der Verbindungen untereinander für eine Gruppe von
Gattern kompilieren kann. Die Entwicklung eines derartigen
Kompiliersystems ist jedoch eine außerordentlich schwierige
Aufgabe, insbesondere wenn man die vielfachen Typen von
Algorithmen betrachtet.
Ein zweiter Nachteil von ARP-Architekturen tritt auf, weil
ein ARP-Apparat die Berechnungsarbeit, die mit dem Algorith
mus verbunden ist, für den er konfiguriert worden ist, über
eine Vielzahl rekonfigurierbarer Logikvorrichtungen ver
teilt. Zum Beispiel wird bei einem ARP-Apparat, der reali
siert wurde, indem eine Gruppe von feldprogrammierbaren
Logikvorrichtungen bzw. "Field Programmable Logic Devices"
(FPGAs) verwendet wurde, und der konfiguriert wurde, um eine
parallele Multiplikations-Beschleunigungseinrichtung zu
implementieren, die Berechnungsarbeit, die mit der paralle
len Multiplikation verbunden ist, über die gesamte Gruppe
der FPGAs verteilt. Deshalb ist die Größe des Algorithmus,
bezüglich dem der ARP-Apparat konfiguriert werden kann, auf
die Anzahl der vorliegenden rekonfigurierbaren Logikvorrich
tungen beschränkt. In ähnlicher Weise ist die maximale Da
tensatzgröße, die der ARP-Apparat handhaben kann, be
schränkt. Eine Untersuchung von Sourcecodes bzw. Quellcodes
lieferten nicht notwendigerweise einen klaren Hinweis auf
die Beschränkungen des ARP-Apparats, weil einige Algorithmen
Daten-Abhängigkeiten aufweisen können. Im allgemeinen werden
datenabhängige Algorithmen vermieden.
Da weiter ARP-Architekturen die Verteilung von Rechenarbeit
über mehrere rekonfigurierbare Logikvorrichtung lehren,
erfordert die Anpassung eines neuen (oder sogar leicht modi
fizierten) Algorithmus, daß die Rekonfiguration massiv
durchgeführt werden muß, d. h. die mehreren rekonfigurier
baren Logikvorrichtungen müssen rekonfiguriert werden. Dies
beschränkt die maximale Rate, bei der eine Rekonfiguration
für alternative Probleme oder Kaskaden-Unterprobleme bzw.
hintereinandergeschaltete Unterprobleme auftreten kann.
Ein dritter Nachteil von ARP-Architekturen ergibt sich aus
der Tatsache, daß eine oder mehrere Abschnitte des Programm
codes auf dem Host ausgeführt werden. Das heißt ein ARP-
Apparat ist nicht selbst ein unabhängiges Computersystem
bzw. Rechensystem, der ARP-Apparat führt nicht ganze Pro
gramme aus und es ist deshalb eine Wechselwirkung mit dem
Host notwendig. Da etwas von dem Programmcode auf dem nicht
rekonfigurierbaren Host ausgeführt wird, wird die Gruppe
bzw. der Satz an verfügbaren Silizium-Resourcen nicht maxi
mal über den Zeitrahmen der Programmausführung ausgenutzt.
Insbesondere während der Ausübung von Instruktionen bzw.
Befehlen auf Host-Basis, werden die Silizium-Resourcen bzw.
Silizium-Systemelemente auf dem ARP-Apparat untätig sein
oder ineffizient verwendet werden. In ähnlicher Weise wer
den, wenn der ARP-Apparat mit Daten arbeitet, die Silizium-
Resourcen bzw. die Silizium-Systemelemente auf dem Host im
allgemeinen ineffizient verwendet werden. Um leicht mehrere
ganze Programme auszuführen, müssen die Silizium-Resourcen
bzw. die Silizium-Systemeinheiten in leicht wieder
verwendbare Resourcen bzw. Systemeinheiten kopiert werden.
Wie vorstehend beschrieben wurde, behandeln ARP-System re
konfigurierbare Hardware-Systemelemente als eine Gruppe von
Gattern bzw. Gates, die optimal untereinander verbunden
sind, um einen bestimmten Algorithmus zu einer bestimmten
Zeit zu implementieren. Somit liefern ARP-Systeme nicht eine
Einrichtung, um einen bestimmten Satz bzw. eine bestimmte
Gruppe an rekonfigurierbaren Hardware-Systemelementen als
ein leicht von einem Algorithmus zum anderen wiederverwend
bares Systemelement zu behandeln, weil die Wiederverwend
barkeit ein gewisses Niveau an Unabhängigkeit bezüglich des
Algorithmus erfordert.
Ein ARP-Apparat kann nicht das gegenwärtig ausgeführte Host
programm als Daten behandeln und kann im allgemeinen nicht
sich selbst kontextualisieren. Ein ARP-Apparat kann nicht
leicht so hergestellt werden, daß er sich selbst durch das
Ausführen seines eigenen Hostprogramms simuliert. Weiter
kann ein ARP-Apparat nicht hergestellt werden, um seine
eigene HDL oder seine eigenen Anwendungsprogramme auf ihn
selbst zu kompilieren, wobei er direkt die rekonfigurier
baren Hardware-Systemelemente bzw. Hardware-Resourcen ver
wendet, aus denen er aufgebaut ist. Ein ARP-Apparat ist
somit bezüglich seiner Architektur bezüglich in sich ge
schlossener Rechenmodelle beschränkt, die die Unabhängigkeit
von einem Hostprozessor lehren.
Weil ein ARP-Apparat als eine Rechen-Beschleunigungseinrich
tung wirkt, ist er im allgemeinen nicht in der Lage, eine
unabhängige Eingangs-/Ausgangs- bzw. "Input/Output" (I/O)-
Verarbeitung durchzuführen. Typischerweise erfordert ein
ARP-Apparat eine Wechselwirkung mit dem Host für eine I/O-
Verarbeitung. Die Leistungsfähigkeit eines ARP-Apparats kann
deshalb bezüglich des I/O beschränkt sein. Fachleute werden
erkennen, daß ein ARP-Apparat jedoch konfiguriert werden
kann, um ein spezielles I/O-Problem zu beschleunigen. Da
jedoch der gesamte ARP-Apparat auf ein einziges, spezielles
Problem hin gestaltet bzw. konfiguriert ist, kann ein ARP-
Apparat die I/O-Verarbeitung nicht mit der Datenverarbeitung
balancieren, ohne bezüglich des einen oder des anderen einen
Kompromiß einzugehen. Darüber hinaus stellt ein ARP-Apparat
keine Einrichtung für die Interruptverarbeitung bereit. Die
Lehren bezüglich eines ARP′s bieten keine derartigen Mecha
nismen an, da sie auf eine maximale Beschleunigung des Rech
nens hin ausgerichtet sind und die Unterbrechung sich nega
tiv auf die Rechenbeschleunigung auswirkt.
Ein vierter Nachteil von ARP-Architekturen existiert, da es
Software-Applikationen gibt, die eine inhärente Datenpar
allelität besitzen, wobei es schwierig ist, diese auszunut
zen, indem ein ARP-Apparat verwendet wird. HDL-Kompilie
rungs-Anwendungen liefern ein derartiges Beispiel, wenn eine
Netz-Namen-Symbolauflösung in einer sehr großen Netzliste
benötigt wird.
Ein fünfter Nachteil, der mit ARP-Architekturen verbunden
ist, ist, daß es im wesentlichen ein SIMD-Computerarchitek
turmodell gibt. ARP-Architekturen sind deshalb weniger be
züglich ihrer Architektur effektiv, als ein oder mehrere
innovative nicht-rekonfigurierbare Systeme nach dem Stand
der Technik. ARP-Systeme spiegeln nur einen Teil des Prozes
ses der Ausführung eines Programms wider, hauptsächlich die
arithmetische Logik für eine arithmetische Berechnung, und
zwar für jeden spezifischen Konfigurationsfall, und zwar für
so viel Rechenleistung, wie die verfügbare rekonfigurierbare
Hardware liefern kann. Im Gegensatz dazu nutzte nach dem
Systemdesign der SYMBOL-Maschine bei Fairchild 1971 der
gesamte Computer einen einzigen Hardware-Kontext für jeden
Aspekt der Programmausführung. Infolgedessen umfaßte SYMBOL
jedes Element für die Systemanwendung eines Computers, ein
schließlich des Hostabschnittes, der durch ARP-Systeme ge
lehrt bzw. angewiesen wird.
ARP-Architekturen weisen andere Unzulänglichkeiten ebenso
auf. Zum Beispiel fehlt es einem ARP-Apparat an einer effek
tiven Einrichtung, um ein unabhängiges Timing bzw. eine
unabhängige Zeitsteuerung für vielfach rekonfigurierbare
Logikvorrichtungen bereitzustellen. Ähnlich fehlt es einem
kaskadierten ARP-Apparat an einer wirksamen Takt-Ver
teilungseinrichtung, um unabhängig getimte Einheiten bzw.
Einheiten, die bezüglich ihrer Zeitsteuerung unabhängig
sind, bereitzustellen. Nach einem anderen Beispiel ist es
schwierig, genau die Ausführungszeit mit den Quellencode-
Anweisungen zu korrelieren, für die eine Beschleunigung
beabsichtigt wird. Für eine genaue Abschätzung der Netzsy
stem-Taktrate muß die ARP-Vorrichtung mit einem Werkzeug für
computerunterstütztes Design bzw. mit einem "Computer-Aided
Design (CAD)"-Tool nach einer HDL-Kompilierung modelliert
werden, dies ist ein zeitaufbrauchender Prozeß, um zu einem
derartigen Basisparameter zu gelangen.
Was gebraucht wird, ist eine Einrichtung zum rekonfigurier
baren Rechnen, die die Beschränkungen des oben beschriebenen
Standes der Technik überwindet.
Die vorliegende Erfindung betrifft ein System und ein Ver
fahren für skalierbares, paralleles, dynamisch rekonfigu
rierbares Rechnen. Das System weist wenigstens eine S-Ma
schine, eine T-Maschine, die jeder S-Maschine entspricht,
eine Allzweck-Verbindungsmatrix (GPIM), eine Gruppe von I/O-
T-Maschinen, eine oder mehrere I/O-Vorrichtungen und eine
Master-Zeitbasis-Einheit auf. In der bevorzugten Ausfüh
rungsform beinhaltet das System mehrere S-Maschinen. Jede
S-Maschine weist einen Eingang bzw. einen Ausgang auf, der mit
einem Ausgang bzw. einem Eingang der entsprechenden
T-Maschine verbunden ist. Jede T-Maschine beinhaltet einen
Leitweg-Eingang bzw. Führungs-Eingang und einen Leitweg-
Ausgang bzw. Führungs-Ausgang, der mit der GPIM verbunden
ist, wie dies auch bei jeder I/O-T-Maschine der Fall ist.
Eine I/O-T-Maschine beinhaltet weiter einen Eingang und
einen Ausgang, der mit einer I/O-Vorrichtung verbunden ist.
Schließlich weist jede S-Maschine, T-Maschine und I/O-T-
Maschine einen Master-Zeitsteuer-Eingang bzw. einen Master-
Timing-Eingang auf, der mit einem Zeitsteuer-Ausgang bzw.
Timing-Ausgang der Master-Zeitbasiseinheit verbunden ist.
Die Master-Zeitbasiseinheit liefert eine systemweite Fre
quenzreferenz an jede S-Maschine, T-Maschine und I/O-T-Ma
schine. Jede S-Maschine ist ein Computer, der eine Verarbei
tungseinheit aufweist, die selektiv rekonfiguriert werden
kann, und zwar während der Ausführung von Programminstruk
tionen. Jede T-Maschine ist eine Datentransfervorrichtung
bzw. Datenübertragungsvorrichtung. Die GPIM liefert eine
skalierbare Punkt-zu-Punkt-Parallel-Verbindungseinrichtung
zur Kommunikation zwischen T-Maschinen. Zusammengenommen
stellt der Satz an T-Maschine und die GPIM eine skalierbare
Punkt-zu-Punkt-Parallelverbindungseinrichtung zur Kommunika
tion zwischen S-Maschinen bereit.
Eine S-Maschine umfaßt vorzugsweise eine erste lokale Zeit
basiseinheit, einen Speicher und eine dynamisch rekonfigu
rierbare Verarbeitungseinheit bzw. eine "Dynamically Recon
figurable Processing Unit" (DRPU). Die erste lokale Zeitba
siseinheit umfaßt einen Zeitsteuerungseingang bzw. einen
Timingeingang, der mit der Master-Zeitbasiseinheit verbunden
ist, und einen Zeitsteuerungsausgang bzw. Timingausgang, der
mit einem Zeitsteuerungseingang der DRPU und einem Zeit
steuerungseingang des Speichers über die erste Zeit
steuerungs-Signalleitung verbunden ist. Die DRPU umfaßt
einen Steuersignalausgang, einen Adressenausgang bzw. einen
bidirektionalen Datenport, der mit einem Steuersignalein
gang, einem Adresseneingang bzw. einem bidirektionalen Da
tenport des Speichers über eine Speichersteuerleitung, eine
Adressenleitung bzw. eine Speicher-I/O-Leitung verbunden
ist. Die DRPU weist ebenso einen bidirektionalen Steuerport
auf, der mit einem bidirektionalen Steuerport ihrer ent
sprechenden T-Maschine über eine externe Steuerleitung ver
bunden ist.
Die erste lokale Zeitbasiseinheit empfängt ein Master-Zeit
steuersignal von der Master-Zeitbasiseinheit und erzeugt ein
erstes lokales Zeitsteuersignal, das zu der DRPU und dem
Speicher über eine erste Zeitsteuersignalleitung geliefert
wird. Bei dem Speicher handelt es sich vorzugsweise um einen
Speicher mit wahlfreiem Zugriff bzw. ein "Random Access
Memory" (RAM), das Programminstruktionen, Programmdaten und
eine oder mehrere Konfigurationsdatensätze speichert. Bei
der bevorzugten Ausführungsform ist ein gegebener
S-Maschinenspeicher für jede andere S-Maschine in dem System
über die GPIM und ihre korrespondierende T-Maschine zugäng
lich.
Eine Gruppe von Programminstruktionen bzw. Programmbefehlen,
die darauf ausgerichtet sind bzw. spezialisiert sind, einen
spezifischen Satz von Befehlen bezüglich potentiell großen
Datensätze durchzuführen, wird hierin als ein "Innen
schleifen"- bzw. "Inner-Loop"-Abschnitt eines Programms be
zeichnet. Eine Gruppe von Programminstruktionen, die für das
Durchführen von Allzweckoperationen und/oder für das Über
tragen der Steuerung von einem Innenschleifenabschnitt zu
einem anderen verantwortlich ist, wird hierin als "Außen
schleifen"- bzw. "Outer-Loop"-Abschnitt des Programms be
zeichnet. Innerhalb jedes gegebenen Programms besteht jeder
Innenschleifenabschnitt vorzugsweise aus einer kleinen An
zahl von Instruktionstypen, während Außenschleifenabschnitte
vorzugsweise eine Mannigfaltigkeit bzw. Vielzahl von All
zweck-Instruktionstypen beinhalten.
Jeder Konfigurationsdatensatz, der in dem Speicher gespei
chert ist, spezifiziert eine DRPU-Hardware-Organisation, die
für die Implementation bzw. Realisierung einer entsprechen
den Befehlssatzarchitektur bzw. Instruktionssatzarchitektur
("Instruction Set Architecture" bzw. ISA) optimiert ist.
Eine ISA ist ein primitiver Satz von Instruktionen, der
verwendet werden kann, um einen Computer zu programmieren.
Gemäß der vorliegenden Erfindung kann eine ISA kategorisiert
werden als eine Innenschleifen-ISA oder eine Außenschleifen-
ISA, und zwar gemäß der Anzahl und Typen von Instruktionen,
die sie enthält. Eine Innenschleifen-ISA besteht aus relativ
wenig Instruktionen, und zwar wo die Instruktionen nützlich
sind, um spezifische Typen von Operationen durchzuführen.
Eine Außenschleifen-ISA beinhaltet mehrere Instruktionen,
und zwar wo die Instruktionen nützlich sind, um eine Viel
zahl von Allzweck-Operationen durchzuführen.
Programminstruktionen, die in dem Speicher gespeichert sind,
beinhalten selektiv eine oder mehrere Rekonfigurations-
Anweisungen, und zwar wo jede Rekonfigurationsanweisung auf
einen Konfigurationsdatensatz Bezug nimmt. Während der Pro
grammausführung durch die DRPU können eine oder mehrere
Rekonfigurationsanweisungen gewählt werden. Die Auswahl von
gegebenen Rekonfigurationsanweisungen führt zu einer Re
konfiguration der DRPU-Hardware gemäß dem Konfigurations
datensatz, auf dem durch die Rekonfigurationsanweisung Bezug
genommen wird. Somit wird nach der Auswahl einer Rekonfigu
rationsanweisung die DRUP-Hardware rekonfiguriert, um eine
optimierte Implementation einer bestimmten ISA bereitzustel
len. Gemäß der vorliegenden Erfindung wird eine Rekonfigura
tion der DRPU ebenso in Antwort auf einen Rekonfigurations
interrupt ausgelöst, und zwar wo der Rekonfigurationsinter
rupt auf einen Konfigurationsdatensatz Bezug nimmt, der
einer ISA in der oben beschriebenen Art und Weise
entspricht.
Die DRPU umfaßt eine Instruktionsabrufeinheit bzw. "Instruc
tion Fetch Unit" (IFU), eine Datenoperationseinheit bzw.
"Data Operate Unit" (DOU) und eine Adressenoperationseinheit
bzw. "Address Operate Unit" (AOU), wobei jede dynamisch
rekonfigurierbar ist. Bei der bevorzugten Ausführungsform
wird die DRPU implementiert, indem eine rekonfigurierbare
Logikvorrichtung, wie z. B. ein Xilinx XC4013 programmier
bares Gatter-Array bzw. "Programmable Gate Array" (FPGA)
verwendet wird. Die reprogrammierbare Logikvorrichtung lie
fert vorzugsweise eine Vielzahl von selektiv reprogrammier
baren 1) Logikblöcken oder konfigurierbaren Logikblöcken
bzw. "Configurable Logic Blocks" (CLBs); 2) I/O-Blöcke
(IOBs); 3) Verbindungsstrukturen; 4) Datenspeicher-
Systemeinheiten; 5) Dreizustands-Puffer-Systemeinheiten; und
6) Fähigkeiten einer fest verdrahteten Logik.
Die IFU umfaßt einen Speichersteuerausgang, der den Spei
chersteuerausgang der DRPU bildet, einen Dateneingang, der
mit der Speicher-I/O-Leitung verbunden ist und einen bidi
rektionalen Steuerport, der den bidirektionalen Steuerport
der DRPU bildet. Die IFU umfaßt zusätzlich einen ersten,
zweiten und dritten Steuerausgang. Die DOU und die AOU um
fassen jeweils einen bidirektionalen Datenport, der mit der
Speicher-I/O-Leitung verbunden ist, und die AOU umfaßt einen
Adressenausgang, der mit der Adressenleitung verbunden ist.
Die DOU umfaßt einen ersten Steuereingang, der mit dem er
sten Steuerausgang der IFU über eine erste Steuerleitung
verbunden ist. Die AOU umfaßt einen ersten Steuereingang,
der mit dem zweiten Steuerausgang der IFU über eine zweite
Steuerleitung verbunden ist. Sowohl die DOU als auch die AOU
umfassen einen zweiten Steuereingang, der mit dem dritten
Steuerausgang der IFU über eine dritte Steuerleitung ver
bunden ist. Schließlich umfassen sowohl die IFU als auch DOU
und die AOU einen Zeitsteuereingang, der mit der ersten
Zeitsteuersignalleitung verbunden ist.
Die IFU verwaltet Instruktionenabruf- und Instruktionen-
Decodieroperationen, Speicherzugriffsoperationen, DRPU-Re
konfigurationsoperationen und gibt Steuersignale zu der DOU
und der AOU aus, um die Ausführungen der Instruktionen zu
erleichtern. Die IFU umfaßt vorzugsweise einen Architektur
beschreibungsspeicher, eine Instruktionszustands-Folgesteue
rungseinheit bzw. einen "Instruction State Sequencer" (ISS),
eine Speicherzugriffslogik, eine Rekonfigurationslogik, eine
Interruptlogik, eine Abrufsteuereinheit, einen Instruktions
puffer, eine Decodiersteuereinheit, einen Instruktionsdeco
der, einen Opcode- bzw. Operationscode-Speicherregistersatz,
einen Registerdatei- bzw. Registerfile-(RF)-
Adressenregistersatz, einen Konstantenregistersatz und einen
Prozeßsteuerregistersatz. Die ISS umfaßt einen ersten bzw.
einen zweiten Steuerausgang, der die ersten bzw. zweiten
Steuerausgänge der IFU umfaßt; einen Zeitsteuerungseingang,
der den Zeitsteuerungseingang der IFU ausbildet; einen
Abruf-/Decodiersteuerausgang, der mit einem Steuereingang
der Abrufsteuereinheit und einem Steuereingang des
Decodiersteuereingangs verbunden ist; einen bidirektionalen
Steuerport, der mit einem ersten bidirektionalen Steuerport
sowohl der Speicherzugriffslogik als auch der Rekon
figurationslogik und der Interruptlogik verbunden ist; einen
Operationscodeeingang, der mit einem Ausgang des Operations
codespeicherregistersatzes verbunden ist; einen bidirektio
nalen Datenport, der mit einem bidirektionalen Datenport des
Prozeßsteuerregistersatzes verbunden ist. Sowohl die Spei
cherzugriffslogik als auch die Rekonfigurationslogik und die
Interruptlogik umfaßt einen zweiten bidirektionalen
Steuerport, der mit der externen Steuerleitung verbunden
ist; einen Dateneingang, der mit einem Datenausgang des
Architekturbeschreibungsspeichers verbunden ist. Die
Speicherzugriffslogik umfaßt ebenso einen Steuerausgang, der
den Speichersteuerausgang des IFU ausbildet und die
Interruptlogik umfaßt zusätzlich einen Ausgang, der mit dem
bidirektionalen Datenport des Verarbeitungs- bzw.
Prozeßsteuerregistersatzes verbunden ist.
Der Architektur-Beschreibungsspeicher umfaßt vorzugsweise
einen Speicher zum Speichern der Architektur-Spezifikations
signale, die die DRPU-Konfiguration zu jeder gegebenen Zeit
kennzeichnen. Die Architektur-Spezifikationssignale bein
halten vorzugsweise eine Referenz zu einem vorgegebenen
Konfigurationsdatensatz bzw. Default-Datensatz; eine Refe
renz bzw. einen Bezug auf eine Liste von ermöglichbaren
Konfigurationsdatensätzen; ein atomares Speicher-
Adresseninkrement; und einen Satz von Interrupt-
Antwortsignalen, die spezifizieren, wie die gegenwärtige
DRPU-Hardware-Konfiguration auf die Interrupts antwortet.
Die ISS umfaßt vorzugsweise eine Zustandsmaschine, die das
Ausführen von Instruktionen innerhalb der gegenwärtig
betrachteten ISA erleichtert, indem Signale zu der
Abrufsteuereinheit, der Decodiersteuereinheit, der DOU, der
AOU und der Speicherzugriffslogik ausgegeben werden. Die ISS
gibt DOU-Steuersignale auf die erste Steuerleitung, AOU-
Steuersignale auf die zweite Steuerleitung und RF-Adressen
und -Konstanten auf die dritte Steuerleitung. Die
Interruptlogik umfaßt vorzugsweise eine Zustandsmaschine,
die vorzugsweise Interrupt-Meldungsoperationen durchführt.
Die Rekonfigurationslogik umfaßt vorzugsweise eine
Zustandsmaschine, die Rekonfigurations-Operationen in
Antwort auf ein Rekonfigurationssignal durchführt. In der
bevorzugten Ausführungsform wird das Rekonfigurationssignal
in Antwort auf einen Rekonfigurationsinterrupt oder, wenn
eine Rekonfigurationsanweisung ausgewählt wird, während der
Programmausführung erzeugt.
Die DOU führt Operationen aus, die zu Datenberechnungen in
bezug stehen, und zwar in Übereinstimmung mit DOU-Steuersig
nalen, RF-Adressen und Konstanten, die von der IFU empfan
gen werden. Die DOU umfaßt vorzugsweise einen DOU-Crossbar-
Schalter, eine Abspeicher-/Ausrichtlogik und eine
Datenoperationslogik. Der DOU-Crossbar-Schalter ("X-Bar-
Schalter") umfaßt einen bidirektionalen Datenport, der den
bidirektionalen Datenport der DOU ausbildet; einen
Konstanteneingang, der mit der dritten Steuerleitung der IFU
verbunden ist; einen ersten Daten-Feedback-Eingang bzw.
Daten-Rückführ-Eingang, der mit einem Datenausgang der
Datenoperationslogik verbunden ist; einen zweiten Daten-
Feedback-Eingang bzw. Daten-Rückführ-Eingang, der mit einem
Datenausgang der Abspeicher-/Ausrichtlogik verbunden ist;
einen Datenausgang, der mit einem Dateneingang der
Abspeicher-/Ausrichtlogik verbunden ist. Die Abspeicher-
/Ausrichtlogik beinhaltet einen Adresseneingang, der mit der
dritten Steuerleitung verbunden ist, und die Daten
operationslogik beinhaltet einen Dateneingang, der mit dem
Ausgang der Abspeicher-/Ausrichtlogik verbunden ist.
Schließlich umfaßt sowohl der DOU-Crossbar-Schalter als auch
die Abspeicher-/Ausrichtlogik und die Datenoperationslogik
einen Steuereingang, der mit der ersten Steuerleitung
verbunden ist.
Der DOU-Crossbar-Schalter lädt die Daten von dem Speicher,
überträgt Ergebnisse, die von der Datenoperationslogik aus
gegeben werden, zu der Abspeicher-/Ausrichtlogik oder dem
Speicher und lädt Konstante, die durch die IFU in Antwort
auf die DOU-Steuersignale, die an ihrem Eingang empfangen
werden, ausgegeben werden. Die Abspeicher-/Ausrichtlogik
stellt eine temporäre Speicherung für Operanden, Konstante
und Teilergebnisse bereit, die mit den Datenberechnungen
verbunden sind. Die Datenoperationslogik führt arithmeti
sche, Schiebe- und/oder logische Operationen in Antwort auf
die DOU-Steuersignale, die bei ihrem Steuereingang empfangen
werden, durch.
Die AOU führt Operationen durch, die in Beziehung zu der
Adressenberechnung stehen, und umfaßt vorzugsweise einen
AOU-Crossbar-Schalter, eine Abspeicher-/Zähllogik, eine
Adressenoperationslogik und einen Adressenmultiplexer. Der
AOU-Crossbarschalter umfaßt einen bidirektionalen Datenport,
der den bidirektionalen Datenport der AOU ausbildet; einen
Adressen-Rückführeingang, der mit einem Adressenausgang der
Adressenoperationslogik verbunden ist; einen Konstanten
eingang, der mit der dritten Steuerleitung verbunden ist;
und einen Adressenausgang, der mit einem Adresseneingang und
der Abspeicher-/Zähllogik verbunden ist. Die Abspeicher-
/Zähllogik beinhaltet einen RF-Adresseneingang, der mit der
dritten Steuerleitung verbunden ist, und einen Adressenaus
gang, der mit einem Adresseneingang der Adressenoperations
logik verbunden ist. Der Adressenmultiplexer umfaßt einen
ersten Eingang, der mit dem Adressenausgang der Abspeicher-
/Zähllogik verbunden ist, und einen zweiten Eingang, der mit
dem Adressenausgang der Adressenoperationslogik verbunden
ist. Sowohl der AOU-Crossbar-Schalter als auch die
Abspeicher-/Zähllogik und die Adressenoperationslogik
umfassen einen Steuereingang, der mit der zweiten
Steuerleitung verbunden ist.
Der AOU-Steuerschalter lädt Adressen aus dem Speicher, über
trägt Ergebnisse, die von der Adressenoperationslogik ausge
geben wurden, zu der Abspeicher-/Zähllogik oder dem Speicher
und lädt Konstante, die von der IFU ausgegeben wurden, in die
Abspeicher-/Zähllogik in Antwort auf die AOU-Steuersignale,
die an seinem Eingang empfangen werden. Die Abspeicher-
/Zähllogik stellt eine temporäre Speicherung von Adressen und
Adressenberechnungsergebnissen bereit. Die Adressenope
rationslogik führt arithmetische Operationen bezüglich der
Adressen in Übereinstimmung mit den AOU-Steuersignalen durch,
die bei ihrem Steuereingang empfangen werden. Der
Adressenmultiplexer wählt selektiv eine Adresse aus, die von
der Abspeicher-/Zähllogik oder der Adressenoperationslogik
empfangen werden, aus, und zwar in Übereinstimmung mit den
AOU-Steuersignalen, die bei seinem Steuereingang empfangen
werden.
Jedes Element innerhalb der IFU, der DOU und der AOU wird
implementiert bzw. realisiert, indem rekonfigurierbare Hard
ware-Systemelemente innerhalb der rekonfigurierbaren Logik
vorrichtung verwendet werden, wie es durch einen gegebenen
Konfigurationsdatensatz spezifiziert ist, der einer bestimmten
ISA entspricht. Die detaillierte interne Struktur der Elemente
innerhalb der IFU, der DOU und der AOU variiert vorzugsweise
in Abhängigkeit von dem Typ der ISA, für den die DRPU
konfiguriert ist, um zu jedem gegebenen Augenblick zu
implementieren bzw. zu realisieren. Für eine Außenschleifen-
ISA ist die interne Struktur eines jeden Elements innerhalb
der IFU, der DOU und der AOU vorzugsweise für die serielle
Instruktionsverarbeitung optimiert. Für eine Innenschleifen-
ISA ist die interne Struktur eines jeden Elements innerhalb
der IFU, der DOU und der AOU vorzugsweise für die parallele
Instruktionsverarbeitung optimiert.
Jede T-Maschine umfaßt vorzugsweise eine gemeinsame Schnitt
stellen und Steuereinheit bzw. "common interface control
unit", einen Satz an Verbindungs-I/O-Einheiten und eine zweite
lokale Zeitbasiseinheit. Die zweite lokale Zeitbasiseinheit
umfaßt einen Zeitsteuerungseingang, der mit der Master-
Zeitbasiseinheit verbunden ist, und einen Zeitsteuerungsaus
gang, der mit einem Zeitsteuerungseingang der gemeinsamen
schnittstellen- und Steuereinheit verbunden ist. Die
gemeinsame Schnittstellen- und Steuereinheit umfaßt einen
Adressenausgang, der mit der Adressenleitung verbunden ist,
einen ersten bidirektionalen Datenport, der mit der Speicher-
I/O-Leitung verbunden ist, einen bidirektionalen Steuerport,
der mit der externen Steuerleitung verbunden ist, und einem
zweiten bidirektionalen Datenport, der mit einem
bidirektionalen Datenport eines jeden seiner assoziierten
Verbindungs-I/O-Einheiten verbunden ist.
Die zweite lokale Zeitbasiseinheit erzeugt ein zweites lokales
Zeitbasissignal, das von der Master-Frequenzreferenz
abgeleitet wird, die von der Master-Zeitbasiseinheit empfangen
wird. Die gemeinsame schnittstellen- und Steuereinheit
verwaltet den Transfer von Daten und Befehlen zwischen seiner
entsprechenden S-Maschine und einer seiner zugeordneten
Verbindungs-I/O-Einheiten. Jede Verbindungs-I/O-Einheit
überträgt Nachrichten bzw. Meldungen, die von ihrer zugeord
neten gemeinsamen Schnittstellen- und Steuereinheit empfangen
wird, zu einer anderen Verbindungs-I/O-Einheit über die GPIM.
Jede Verbindungs-I/O-Einheit überträgt ebenso selektiv
Nachrichten, die von anderen Verbindungs-I/O-Einheiten emp
fangen werden, zu ihrer zugeordneten gemeinsamen Schnitt
stellen- und Steuereinheit.
Jede I/O-T-Maschine umfaßt vorzugsweise eine gemeinsame
Kunden-Schnittstellen- und Steuereinheit, eine Verbindungs-
I/O-Einheit und eine dritte lokale Zeitbasiseinheit. Die
internen Verbindungen bzw. Kopplungen innerhalb einer I/O-T-
Maschine sind zu jenen innerhalber einer T-Maschine analog;
jedoch wird eine I/O-T-Maschine eher mit einer I/O-Vorrichtung
bzw. ein I/O-Bauelement verbunden als mit einer S-Maschine,
sie enthält deshalb Verbindungen, die für eine bestimmte I/O-
Vorrichtung spezifisch sind. Über ihre entsprechende
T-Maschine, die GPIM und eine I/O-T-Maschine kommuniziert eine
S-Maschine mit einer bestimmten I/O-Vorrichtung in dem System.
Die GPIM liefert eine skalierbare Punkt-zu-Punkt-Verbin
dungseinrichtung für eine parallele Kommunikation zwischen
T-Maschinen. Der Satz an T-Maschinen und die GPIM bilden
zusammen eine skalierbare Punkt-zu-Punkt-Verbindungseinrich
tung für parallele Kommunikation zwischen S-Maschinen. Die
GPIM umfaßt vorzugsweise ein "k-ary, n-cube" bzw. k-n-
kubisches statisches Verbindungsnetzwerk mit einer Anzahl
erster Kommunikationskanäle und einer Anzahl zweiter
Kommunikationskanäle. Jeder erste Kommunikationskanal
beinhaltet eine Vielzahl von Knotenverbindungsplätzen, wie
dies bei jedem zweiten Verbindungskanal der Fall ist. Jede
Verbindungs-I/O-Einheit in dem System ist mit der GPIM
derartig verbunden, daß ihr Eingang mit einem bestimmten
Knotenverbindungsplat z über eine Nachrichteneingangsleitung
verbunden ist und ihr Ausgang zu einem anderen
Knotenverbindungsplatz über eine Nachrichtenausgangsleitung
verbunden ist. Die GPIM ist somit ein skalierbares Netzwerk
zum parallelen Leiten bzw. Führen von Daten und Befehlen
zwischen mehreren Verbindungs-I/O-Einheiten.
Im folgenden werden kurz die Zeichnungen beschrieben:
Fig. 1 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform eines Systems zum skalierbaren, paralle
len, dynamisch rekonfigurierbaren Rechnen, das in
Übereinstimmung mit der vorliegenden Erfindung
aufgebaut ist;
Fig. 2 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer S-Maschine gemäß der vorliegenden
Erfindung;
Fig. 3A ist ein exemplarisches Programmlisting, das Rekon
figurationsanweisungen enthält;
Fig. 3B ist ein Flußdiagramm bekannter Kompilierungsopera
tionen, die während der Kompilierung einer Folge
von Programminstruktionen ausgeführt werden;
Fig. 3C und 3D sind Flußdiagramme der bevorzugten Kompilie
rungsoperationen, die von einem Kompiler zum dyna
misch rekonfigurierbaren Rechnen durchgeführt werden;
Fig. 4 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer dynamisch rekonfigurierbaren Ver
arbeitungseinheit bzw. einer "Dynamically Reconfi
gurable Processing Unit" gemäß der vorliegenden
Erfindung;
Fig. 5 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer Instruktionsabrufeinheit bzw. einer
"Instruction Fetch Unit" gemäß der vorliegenden
Erfindung;
Fig. 6 ist ein Zustandsdiagramm, das einen bevorzugten
Satz von Zuständen zeigt, die durch eine Befehls
zustandsfolgesteuereinheit bzw. einen "Instruction
State Sequencer" gemäß der vorliegenden Erfindung
unterstützt werden;
Fig. 7 ist ein Zustandsdiagramm, das einen bevorzugten
Satz von Zuständen zeigt, die durch eine Inter
ruptlogik der vorliegenden Erfindung unterstützt
werden;
Fig. 8 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer Datenoperationseinheit bzw. einer
"Data Operate Unit" der vorliegenden Erfindung;
Fig. 9A ist ein Blockdiagramm einer ersten beispielhaften
Ausführungsform der Datenoperationseinheit, die für
die Implementation bzw. Realisierung einer
Instruktionssatz-Architektur bzw. einer "Instruc
tion Set Architecture" gemäß einer Allzweck-Außen
schleife konfiguriert ist;
Fig. 9B ist ein Blockdiagramm für eine zweite beispielhafte
Ausführungsform der Datenoperationseinheit, die für
die Implementation einer Innenschleifen-In
struktionssatz-Architektur konfiguriert ist;
Fig. 10 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform für eine Adressenoperationseinheit bzw.
für eine "Address Operate Unit" gemäß der vorlie
genden Erfindung;
Fig. 11A ist ein Blockdiagramm einer ersten beispielhaften
Ausführungsform für die Adressenoperationseinheit,
die für die Implementation bzw. Realisierung einer
Instruktionssatz-Architektur gemäß einer Allzweck-
Außenschleife konfiguriert ist;
Fig. 11B ist ein Blockdiagramm für eine zweite beispielhafte
Ausführungsform der Adressenoperationseinheit, die
für die Implementation bzw. Verwirklichung einer
Innenschleifen-Instruktionssatz-Architektur
konfiguriert ist;
Fig. 12A ist ein Diagramm, das eine beispielhafte Zuordnung
von rekonfigurierbaren Hardware-Systemeinheiten
zwischen der Instruktionsabrufeinheit, der Daten
operationseinheit und der Adressenoperationseinheit
für eine Außenschleifen-Instruktionssatz-Ar
chitektur zeigt;
Fig. 12B ist ein Diagramm, das eine exemplarische Zuordnung
von rekonfigurierbaren Hardware-Systemeinheiten
zwischen der Instruktionsabrufeinheit, der Daten
operationseinheit und der Adressenoperationseinheit
für eine Innenschleifen-Instruktionssatz-Ar
chitektur zeigt;
Fig. 13 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer T-Maschine der vorliegenden Erfin
dung;
Fig. 14 ist ein Blockdiagramm einer Verbindungs-I/O-Einheit
der vorliegenden Erfindung;
Fig. 15 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer I/O-T-Maschine der vorliegenden
Erfindung;
Fig. 16 ist ein Blockdiagramm einer bevorzugten Ausfüh
rungsform einer Allzweck-Verbindungsmatrix bzw. ei
ner "General Purpose Interconnect Matrix" der
vorliegenden Erfindung; und
Fig. 17A und 17B zeigen ein Flußdiagramm eines bevorzugten
Verfahrens zum skalierbaren, parallelen, dynamisch
rekonfigurierbaren Rechnen in Übereinstimmung mit
der vorliegenden Erfindung.
Im folgenden werden die bevorzugten Ausführungsformen de
tailliert beschrieben:
Fig. 1 zeigt ein Blockdiagramm einer bevorzugten Ausfüh rungsform eines Systems 10 zum skalierbaren, parallelen, dynamisch rekonfigurierbaren Rechnen, das in Übereinstimmung mit der vorliegenden Erfindung aufgebaut ist. Das System 10 umfaßt vorzugsweise wenigstens eine S-Maschine 12, eine T-Maschine 14, die zu jeder S-Maschine 12 korrespondiert, eine Allzweck-Verbindungsmatrix bzw. "General Purpose Interconnect Matrix" (GPIM) 16, wenigstens eine I/O-T-Maschine 18, eine oder mehrere I/O-Vorrichtungen 20 und eine Master-Zeitbasis einheit 22. Bei der bevorzugten Ausführungsform umfaßt das System 10 mehrere S-Maschinen 12 und somit mehrere T-Maschinen 14 sowie mehrere I/O-T-Maschinen 18 und mehrere I/O- Vorrichtungen 20.
Fig. 1 zeigt ein Blockdiagramm einer bevorzugten Ausfüh rungsform eines Systems 10 zum skalierbaren, parallelen, dynamisch rekonfigurierbaren Rechnen, das in Übereinstimmung mit der vorliegenden Erfindung aufgebaut ist. Das System 10 umfaßt vorzugsweise wenigstens eine S-Maschine 12, eine T-Maschine 14, die zu jeder S-Maschine 12 korrespondiert, eine Allzweck-Verbindungsmatrix bzw. "General Purpose Interconnect Matrix" (GPIM) 16, wenigstens eine I/O-T-Maschine 18, eine oder mehrere I/O-Vorrichtungen 20 und eine Master-Zeitbasis einheit 22. Bei der bevorzugten Ausführungsform umfaßt das System 10 mehrere S-Maschinen 12 und somit mehrere T-Maschinen 14 sowie mehrere I/O-T-Maschinen 18 und mehrere I/O- Vorrichtungen 20.
Jede der S-Maschinen 12, T-Maschinen 14 und I/O-T-Maschinen
18 umfaßt einen Master-Zeitsteuerungseingang, der mit einem
Zeitsteuerungsausgang der Master-Zeitbasiseinheit 22 verbunden
ist.
Jede S-Maschine 12 umfaßt einen Eingang und einen Ausgang, der
mit ihrer entsprechenden bzw. korrespondierenden T-Maschine
14 verbunden ist. Zusätzlich dazu, daß der Eingang und der
Ausgang mit ihrer entsprechenden bzw. korrespondierenden
S-Maschine 12 verbunden ist, umfaßt jede T-Maschine 14 einen
Leitwegeingang bzw. Führungseingang und einen Leitwegausgang
bzw. Führungsausgang, der mit der GPIM 16 verbunden ist. In
ähnlicher Art und Weise umfaßt jede I/O-T-Maschine 18 einen
Eingang und einen Ausgang, der mit einer I/O-Vorrichtung 20
verbunden ist, und einen Leitwegeingang und einen
Leitwegausgang, der mit der GPIM 16 verbunden ist.
Wie detaillierter weiter unten beschrieben werden wird,
handelt es sich bei jeder S-Maschine 12 um einen dynamisch
rekonfigurierbaren Computer bzw. Rechner. Die GPIM 16 bildet
eine Punkt-zu-Punkt-Parallel-Verbindungseinrichtung, die die
Kommunikation zwischen T-Maschinen 14 erleichtert. Der Satz
von T-Maschinen 14 und die GPIM 16 bilden eine Punkt-zu-Punkt-
Parallel-Verbindungseinrichtung für einen Datentransfer
zwischen S-Maschinen 12. In ähnlicher Weise bilden die GPIM
16, der Satz von T-Maschinen 14 und der Satz von I/O-T-
Maschinen 18 eine Punkt-zu-Punkt-Parallel-Verbindungsein
richtung für einen I/O-Transfer bzw. für eine I/O-Übertragung
zwischen S-Maschinen 12 und jeder I/O-Vorrichtung 20. Die
Master-Zeitbasiseinheit 22 umfaßt einen Oszillator, der ein
Master-Zeitsteuersignal für jede S-Maschine 12 und T-Maschine
14 liefert.
Bei einer beispielhaften Ausführungsform ist jede S-Maschine
12 realisiert, indem ein Xilinx XC4013 (Xilinx, Inc., San
Jose, CA, USA) feldprogrammierbares Gate-Array bzw. "Field
Programmable Gate Array" (FPGA) verwendet wird, das mit 64
Megabyte Speicher mit wahlfreiem Zugriff bzw. "Random Access
Memory" (RAM) verbunden ist. Jede T-Maschine 14 wird reali
siert, indem ungefähr 50% der rekonfigurierbaren Hardware-
Systemelemente in einer Xilinx XC4013 FPGA verwendet werden,
dies ist auch bei jeder I/O-T-Maschine 18 der Fall. Die GPIM
14 ist als eine toroidale Verbindungsmasche bzw.
Verbindungsvermaschung verwirklicht. Die Master-
Zeitbasiseinheit 22 ist ein Taktoszillator, der mit dem
Taktverteilungsschaltkreis verbunden ist, um eine systemweite
Frequenzreferenz zu liefern, wie dies in der US-
Patentanmeldung mit dem Titel "System und Verfahren für
phasensynchrones Takten und phasensynchrone Nachrichtenüber
tragung mit flexibler Frequenz" bzw. "System and Method for
Phase-Synchronous, Flexible Frequency Clocking and Messaging"
beschrieben ist. Vorzugsweise übertragen die GPIM 14, die
T-Maschinen 12 und die I/O-T-Maschinen 18 Information in
Übereinstimmung mit dem ANSI/IEEE-Standard 1596-1992, der ein
skalierbares kohärentes Interface bzw. ein "Scalable Coherent
Interface" (SCI) festlegt.
Bei der bevorzugten Ausführungsform umfaßt das System 10
mehrere S-Maschinen 12, die parallel arbeiten. Die Struktur
und die Funktionalität bzw. Wirkungsweise einer jeden ein
zelnen S-Maschine 12 sind weiter unten detailliert unter
Bezugnahme auf die Fig. 2 bis 12B beschrieben. Nimmt man nun
Bezug auf die Fig. 2, so ist ein Blockdiagramm einer bevor
zugten Ausführungsform einer S-Maschine 12 gezeigt. Die
S-Maschine 12 umfaßt eine erste lokale Zeitbasiseinheit 30, eine
dynamisch rekonfigurierbare Verarbeitungseinheit bzw. eine
"Dynamically Reconfigurable Processing Unit" (DRPU) 32, um
Programminstruktionen auszuführen, und einen Speicher 34. Die
erste lokale Zeitbasiseinheit 30 umfaßt einen Zeitsteue
rungseingang, der den Master-Zeitsteuerungseingang der
S-Maschine ausbildet. Die erste lokale Zeitbasiseinheit 30
umfaßt ebenso einen Zeitst 99999 00070 552 001000280000000200012000285919988800040 0002019614991 00004 99880euerungsausgang, der ein erstes
lokales Zeitsteuerungssignal oder einen ersten lokalen Zeit
steuerungstakt zu einem Zeitsteuerungseingang der DRPU 32 und
einem Zeitsteuerungseingang des Speichers 34 über eine erste
Zeitsteuerungssignalleitung 40 liefert. Die DRPU 32 umfaßt
einen Steuersignalausgang, der mit einem Steuersignaleingang
des Speichers 34 über eine Speichersteuerleitung 42 verbunden
ist; einen Adressenausgang, der mit einem Adresseneingang des
Speichers 34 über eine Adressenleitung 44 verbunden ist; einen
bidirektionalen Datenport, der mit einem bidirektionalen
Datenport des Speichers 34 über eine Speicher-I/O-Leitung 46
verbunden ist. Die DRPU 32 umfaßt zusätzlich einen
bidirektionalen Steuerport, der mit einem bidirektionalen
Steuerport ihrer entsprechenden T-Maschine 14 über eine
externe Steuerleitung 48 verbunden ist. Wie in der Fig. 2
gezeigt, überspannt die Speichersteuerungsleitung 42 X Bits,
die Adressenleitung 44 M Bits, die Speicher-I/O-Leitung 46 (N
× k) Bits und die externe Steuerleitung 48 überspannt Y Bits.
Bei der bevorzugten Ausführungsform empfängt die erste lokale
Zeitbasiseinheit 30 das Master-Zeitsteuerungssignal von der
Master-Zeitbasiseinheit 22. Die erste lokale Zeitbasiseinheit
30 erzeugt das erste lokale Zeitsteuerungssignal aus dem
Master-Zeitsteuerungssignal und liefert das erste lokale
Zeitsteuerungssignal zu der DRPU 32 und dem Speicher 34. Bei
der bevorzugten Ausführungsform kann das erste lokale Zeit
steuerungssignal von einer S-Maschine 12 zu der anderen sich
ändern. Somit arbeiten die DRPU 32 und der Speicher 34 in
nerhalb einer gegebenen S-Maschine 12 bei unabhängigen Tak
traten relativ zu der DRPU 32 dem Speicher 34 innerhalb
irgendeiner anderen S-Maschine 12. Vorzugsweise ist das erste
lokale Zeitsteuerungssignal mit dem Master-Zeitsteue
rungssignal phasensynchronisiert. Bei der bevorzugten Aus
führungsform ist die erste lokale Zeitbasiseinheit 30 reali
siert, indem eine phasensynchronisierte Frequenzumwandlungs
schaltung verwendet wird, einschließlich einer phasensyn
chronisierten Detektionsschaltung, die realisiert wird, indem
rekonfigurierbare Hardware-Systemeinheiten verwendet werden.
Fachleute werden erkennen, daß bei einer alternativen
Ausführungsform die erste lokale Zeitbasiseinheit 30 als ein
Abschnitt eines Taktverteilungsbaums realisiert werden kann.
Der Speicher 34 wird vorzugsweise als ein RAM realisiert bzw.
implementiert und speichert Programminstruktionen,
Programmdaten und Konfigurationsdatensätze für die DRPU 32.
Der Speicher 34 einer jeden gegebenen S-Maschine 12 ist
vorzugsweise für jede andere S-Maschine 12 in dem System 10
über die GPIM 16 zugänglich. Darüber hinaus ist jede S-Ma
schine 12 vorzugsweise dadurch gekennzeichnet, daß sie einen
einheitlichen bzw. gleichmäßigen Speicheradressenraum auf
weist. Bei der bevorzugten Ausführungsform enthalten Pro
gramminstruktionen, die in dem Speicher 34 gespeichert sind,
selektiv Rekonfigurationsanweisungen, die an die DRPU 32
gerichtet sind. Nimmt man nun Bezug auf die Fig. 3A, so ist
ein beispielhaftes Programmlisting 50 einschließlich der
Rekonfigurationsanweisungen gezeigt. Wie in der Fig. 3A
gezeigt ist, beinhaltet das beispielhafte Programmlisting 50
einen Satz von Außenschleifenabschnitten 52, einen ersten
Innenschleifenabschnitt 54, einen zweiten Innenschleifen
abschnitt 55, einen dritten Innenschleifenabschnitt 56, einen
vierten Innenschleifenabschnitt 57 und einen fünften
Innenschleifenabschnitt 58. Fachleute werden leicht erkennen,
daß der Ausdruck "Innenschleife" bzw. "Inner-Loop" auf einen
iterativen Abschnitt eines Programms Bezug nimmt, der für die
Durchführung eines bestimmten Satzes von dazu in bezug
stehenden Operationen verantwortlich ist, und der Term
"Außenschleife" bzw. "Outer-Loop" nimmt auf jene Abschnitte
eines Programms Bezug, die hauptsächlich für die Durchführung
von Allzweckoperationen und/oder für das Übertragen einer
Steuerung von einem Innenschleifenabschnitt zu einem anderen
verantwortlich ist. Im allgemeinen führen Innen
schleifenabschnitte 54, 55, 56, 57, 58 eines Programmes Ope
rationen bezüglich potentiell großer Datensätze durch. Bei
einer Bildverarbeitungsanwendung kann z. B. der erste Innen
schleifenabschnitt 54 eine Farbformatumwandlungsoperation
bezüglich der Bilddaten durchführen und die zweiten bis
fünften Innenschleifenabschnitte 55, 56, 57, 58 können ein
lineares Filtern, Falten, Mustersuchen und Komprimierungs
operationen durchführen. Fachleute werden erkennen können, daß
eine aneinanderliegende Abfolge von Innenschleifenabschnitten
55, 56, 57, 58 als eine Software-Pipeline bzw. ein Software-
Fließband gedacht werden kann. Jeder Außenschleifenabschnitt
52 wäre für den Daten-I/O und/oder für die Anweisung des
Transfers bzw. der Übertragung von Daten und der Steuerung von
dem ersten Innenschleifenabschnitt 54 zu dem zweiten Innen
schleifen-Abschnitt 55 verantwortlich. Fachleute werden
zusätzlich erkennen, daß ein gegebener Innenschleifenabschnitt
54, 55, 56, 57, 58 eine oder mehrere
Rekonfigurationsanweisungen enthalten kann. Im allgemeinen
werden für jedes gegebene Programm die
Außenschleifenabschnitte 52 oder das Programmlisting 50 eine
Vielzahl von Allzweck-Instruktionstypen beinhalten, während
die Innenschleifenabschnitte 54, 56 des Programmlistings 50
aus relativ wenigen Instruktionstypen bestehen, die verwendet
werden, um einen spezifischen Satz von Operationen
durchzuführen.
Bei dem beispielhaften Programmlisting 50 erscheint eine erste
Rekonfigurationsanweisung am Beginn des ersten Innen
schleifenabschnittes 54 und eine zweite Rekonfigurations
anweisung erscheint an dem Ende des ersten Innenschleifen
abschnittes 54. In ähnlicher Weise erscheint eine dritte
Rekonfigurationsanweisung am Beginn des zweiten Innenschlei
fenabschnittes 55; eine vierte Rekonfigurationsanweisung
erscheint am Beginn des dritten Innenschleifenabschnittes 56;
eine fünfte Rekonfigurationsanweisung erscheint am Beginn des
vierten Innenschleifenabschnittes 57; und eine sechste und
siebte Rekonfigurationsanweisung erscheint am Beginn und am
Ende des fünften Innenschleifenabschnittes 58, und zwar
jeweilig. Jede Rekonfigurationsanweisung nimmt vorzugsweise
auf einen Konfigurationsdatensatz Bezug, der eine interne
DRPU-Hardware-Organisation spezifiziert, die auf die
Implementation bzw. Realisation einer bestimmten
Instruktionssatz-Architektur bzw. "Instruction Set
Architecture" (ISA) ausgerichtet ist und dafür optimiert ist.
Eine ISA ist ein primitiver Satz oder Kernsatz von
Instruktionen, der verwendet werden kann, um einen Computer
zu programmieren. Eine ISA definiert Instruktionsformate,
Operationscodes bzw. Opcodes, Datenformate,
Adressierungsmoden, Ausführungssteuermarken bzw.
Ausführungssteuerflags und über das Programm zugreifbare
Register. Fachleute werden erkennen, daß dies der kon
ventionellen Definition einer ISA entspricht. Bei der vor
liegenden Erfindung kann jede DRPU 32 einer S-Maschine schnell
in Echtzeit konfiguriert werden, um direkt mehrere ISAs durch
die Verwendung eines einzigen Konfigurationsdatensatzes für
jede gewünschte ISA zu realisieren. Das heißt, jede ISA wird
mit einer einzigen internen DRPU-Hardware-Organisation
realisiert bzw. implementiert, wie dies durch einen
entsprechenden Konfigurationsdatensatz spezifiziert ist. Somit
entsprechen bei der vorliegenden Erfindung die ersten bis
fünften Innenschleifenabschnitte 54, 55, 56, 57, 58 jeweils
einer einzigen ISA, nämlich ISA jeweilig 1, 2, 3, 4 und k.
Fachleute werden erkennen, daß jede aufeinanderfolgende bzw.
sukzessive ISA nicht einzig zu sein braucht. Somit kann ISA k
ISA 1, 2, 3, 4 oder jede davon unterschiedliche ISA sein. Der
Satz von Außenschleifenabschnitten 52 entspricht ebenso einer
einzigen ISA, nämlich ISA 0. Bei der bevorzugten
Ausführungsform kann während der Programmausführung die
Auswahl sukzessiver Rekonfigurationsanweisungen von den Daten
abhängen. Nach der Auswahl einer gegebenen Rekonfigu
rationsanweisung werden die Programminstruktionen aufeinand
erfolgend gemäß einer entsprechenden ISA über eine einzige
DRPU-Hardware-Konfiguration ausgeführt, wie dies durch einen
entsprechenden Konfigurationsdatensatz spezifiziert ist.
Bei der vorliegenden Erfindung kann eine gegebene ISA als eine
Innenschleifen-ISA oder eine Außenschleifen-ISA gemäß der
Anzahl und Typen von Instruktionen, die sie enthält,
kategorisiert werden. Eine ISA, die mehrere Instruktionen
beinhaltet, und das ist nützlich, um Allzweck-Operationen
durchzuführen, ist eine Außenschleifen-ISA, während eine ISA,
die aus relativ wenigen Instruktionen besteht, und das ist
daraufhin ausgerichtet, spezifische Typen von Operationen
durchzuführen, ist eine Innenschleifen-ISA. Weil eine
Außenschleifen-ISA auf die Durchführung von Allzweck-Opera
tionen gerichtet ist, ist eine Außenschleifen-ISA besonders
nützlich, wenn eine aufeinander abfolgende bzw. sequentielle
Ausführung von Programminstruktionen erwünscht ist. Die
Leistungsfähigkeit einer Außenschleifen-ISA bezüglich der
Ausführung wird vorzugsweise in Termen der Taktzyklen pro
ausgeführter Instruktion charakterisiert. Im Gegensatz dazu
ist eine Innenschleifen-ISA, da eine Innenschleifen-ISA auf
die Ausführung spezieller Typen von Operationen gerichtet ist,
am nützlichsten, wenn eine Ausführung von Parallel-
Programminstruktionen wünschenswert ist. Die Leistungsfähig
keit einer Innenschleifen-ISA wird vorzugsweise in Termen von
ausgeführten Instruktionen pro Taktzyklus oder Rechenergebnis,
das pro Taktzyklus erzeugt wird, charakterisiert.
Fachleute werden erkennen, daß die vorhergehende Diskussion
einer Ausführung von sequentiellen Programminstruktionen und
einer Ausführung von parallelen Programminstruktionen die
Ausführung von Programminstruktionen innerhalb einer einzigen
DRPU 32 betrifft. Das Vorliegen von mehreren S-Maschinen 12
in dem System 10 erleichtert die parallele Ausführung von
mehreren Programminstruktionssequenzen zu jeder gegebenen
Zeit, und zwar wo jede Programminstruktionssequenz durch eine
gegebene DRPU 32 ausgeführt wird. Jede DRPU 32 ist so kon
figuriert, daß sie eine parallele bzw. serielle Hardware
aufweist, um eine bestimmte Innenschleifen-ISA bzw. Außen
schleifen-ISA zu einer bestimmten Zeit zu implementieren. Die
interne Hardwarekonfiguration einer gegebenen DRPU 32 ändert
sich mit der Zeit gemäß der Auswahl von einer oder mehreren
Rekonfigurationsanweisungen, die innerhalb einer Sequenz von
Programminstruktionen, die ausgeführt werden, eingebettet
sind.
Bei der bevorzugten Ausführungsform werden jede ISA und ihre
entsprechende interne DRPU-Hardware-Organisation ausgestaltet,
um optimale Rechenleistungsfähigkeit für eine bestimmte Klasse
von Rechenproblemen relativ zu einem Satz von verfügbaren
rekonfigurierbaren Hardware-Systemeinheiten bereitzustellen.
Wie zuvor erwähnt wurde und wie detaillierter weiter unten
beschrieben werden wird, wird eine interne DRPU-Hardware-
Organisation, die einer Außenschleifen-ISA entspricht,
vorzugsweise für die Ausführung sequentieller Pro
gramminstruktionen optimiert und eine interne DRPU-Hardware-
Organisation, die einer Innenschleifen-ISA entspricht, wird
vorzugsweise für eine Ausführung paralleler Programminstruk
tionen optimiert. Eine beispielhafte Allzweck-Außenschleifen-
ISA ist Anhang A zu entnehmen und eine beispielhafte
Innenschleifen-ISA, die auf die Faltung gerichtet ist, ist dem
Anhang B zu entnehmen.
Mit Ausnahme jeder Rekonfigurationsanweisung, umfaßt das
beispielhafte Programmlisting 50 der Fig. 3A vorzugsweise
herkömmliche Sprachbefehle hohen Niveaus, z. B. Befehle, die
in Übereinstimmung mit der C-Programmiersprache beschrieben
sind. Fachleute werden erkennen, daß der Einschluß von einer
oder mehreren Konfigurationsanweisungen in eine Sequenz von
Programminstruktionen einen Kompiler erfordert, der modifi
ziert ist bzw. geändert ist, um den Rekonfigurationsanwei
sungen Rechnung zu tragen. Nimmt man nun auf die Fig. 3B
Bezug, so ist ein Flußdiagramm nach dem Stand der Technik für
Kompilierungsoperationen gezeigt, die während der Kompilierung
einer Sequenz bzw. Abfolge von Programminstruktionen
durchgeführt werden. Hierin entsprechen die Kompilie
rungsoperationen gemäß dem Stand der Technik im allgemeinen
jenen, die durch den GNU-C-Kompiler (GCC) durchgeführt werden,
der von der Free Software Foundation (Cambridge, MA, USA)
hergestellt werden. Fachleute werden erkennen, daß die Kom
pilierungsoperationen gemäß dem Stand der Technik, die weiter
unten beschrieben sind, leicht für andere Kompiler ver
allgemeinert werden können. Die Kompilierungsoperationen nach
dem Stand der Technik beginnen im Schritt 500, wobei das
Kompiler-Vorderende einen nächsten Befehl hohen Niveaus aus
einer Abfolge von Programminstruktionen auswählt. Danach
erzeugt das Kompiler-Vorderende einen Code mittleren Niveaus,
der dem gewählten Befehl hohen Niveaus im Schritt 502
entspricht, was in dem Fall des GCC dem Registertransferni
veau- bzw. "Register Transfer Level" (RTL) -Befehlen entspricht.
Folgt man nun Schritt 502, so bestimmt das Vorderende des
Kompilers, ob ein anderer Befehl hohen Niveaus im Schritt 504
eine Beachtung erfordert. Falls dem so ist, so kehrt das
bevorzugte Verfahren zu dem Schritt 500 zurück.
Im Schritt 504 bestimmt das Kompiler-Vorderende, daß kein
anderer Befehls hohen Niveaus eine Beachtung erfordert, das
Kompiler-Hinterende führt als nächstes herkömmliche Regi
sterzuweisungsoperationen im Schritt 506 durch. Nach dem
Schritt 506 wählt das Kompiler-Hinterende einen nächsten RTL-
Befehl, der innerhalb einer gegenwärtigen RTL-Befehlsgruppe
im Schritt 508 zu beachten ist. Das Kompiler-Hinterende
bestimmt dann, ob eine Regel im Schritt 510 existiert, die
eine Art und Weise spezifiziert, in der die gegenwärtige RTL-
Befehlsgruppe in einen Satz von Assemblersprachenbefehlen
übersetzt werden kann. Falls eine derartige Regel nicht
existiert, kehrt das bevorzugte Verfahren zum Schritt 508
zurück, um einen anderen RTL-Befehl auszuwählen, um ihn in die
gegenwärtige RTL-Befehlsgruppe einzuschließen. Falls eine
Regel existiert, die der gegenwärtigen RTL-Befehlsgruppe
entspricht, erzeugt das Kompiler-Hinterende einen Satz von
Assemblersprachenbefehlen gemäß der Regel in dem Schritt 512.
Nachfolgend zum Schritt 512 bestimmt das Kompiler-Hinterende,
ob ein nächster RTL-Befehl eine Beachtung erfordert, und zwar
im Zusammenhang mit einer nächsten RTL-Befehlsgruppe. Falls
dem so ist, kehrt das bevorzugte Verfahren zum Schritt 508
zurück; ansonsten endet das bevorzugte Verfahren.
Die vorliegende Erfindung beinhaltet vorzugsweise einen
Kompiler für dynamisch rekonfigurierbares Rechnen. Nimmt man
nun Bezug auf die Fig. 3C und 3D, so ist ein Flußdiagramm für
bevorzugte Kompilierungsoperationen gezeigt, die von einem
Kompiler für eine dynamisch rekonfigurierbare Berechnung
durchgeführt werden. Die bevorzugten Kompilierungsoperationen
beginnen beim Schritt 600 mit dem Vorderende des Kompilers für
dynamisch rekonfigurierbares Berechnen, wobei ein nächster
Befehl hohen Niveaus innerhalb einer Sequenz von
Programminstruktionen ausgewählt wird. Als nächstes bestimmt
das Vorderende des Kompilers für dynamisch rekonfigurierbares
Berechnen, ob der gewählte Befehl hohen Niveaus eine
Rekonfigurationsanweisung ist, und zwar im Schritt 602. Falls
dem so ist, erzeugt das Vorderende des Kompilers für dynamisch
rekonfigurierbares Rechnen einen RTL-Rekonfigurationsbefehl
im Schritt 604, nachdem das bevorzugte Verfahren zu dem
Schritt 600 zurückkehrt. Bei der bevorzugten Ausführungsform
handelt es sich bei dem RTL-Rekonfigurationsbefehl um einen
Nicht-Standard-RTL-Befehl, der eine ISA-Identifikation bzw.
ISA-Kennzeichnung beinhaltet. Falls im Schritt 602 der
gewählte Programmbefehl hohen Niveaus nicht eine Rekon
figurationsanweisung ist, erzeugt das Vorderende des Kompilers
für dynamisch rekonfigurierbares Rechnen als nächstes einen
Satz von RTL-Befehlen auf eine konventionelle Art und Weise,
und zwar im Schritt 606. Nach dem Schritt 606 bestimmt das
Vorderende des Kompilers für dynamisch rekonfigurierbares
Rechnen, ob ein anderer Befehl hohen Niveaus eine Beachtung
erfordert, und zwar im Schritt 608. Falls dem so ist, kehrt
das bevorzugte Verfahren zum Schritt 600 zurück; ist dem nicht
so, fährt das bevorzugte Verfahren zu dem Schritt 610 fort,
um Operationen bezüglich des hinteren Endes auszulösen bzw.
zu beginnen.
Im Schritt 610 führt das Hinterende des Kompilers für dyna
misch rekonfigurierbares Rechnen Registerzuordnungsoperationen
durch. Bei der bevorzugten Ausführungsform der vorliegenden
Erfindung ist jede ISA derartig definiert, daß die
Registerarchitektur von einer ISA zu einer anderen konsistent
ist; deshalb werden die Registerzuordnungsoperationen auf eine
konventionelle Art und Weise durchgeführt. Fachleute werden
erkennen, daß im allgemeinen eine konsistente
Registerarchitektur von einer ISA zur anderen kein absolutes
Erfordernis ist. Als nächstes wählt das Hinterende des Kom
pilers für dynamisch rekonfigurierbares Rechnen einen nächsten
RTL-Befehl innerhalb einer gegenwärtig betrachteten RTL-
Befehlsgruppe im Schritt 612. Das Hinterende des Kompilers für
dynamisch rekonfigurierbares Rechnen bestimmt dann im Schritt
614, ob der gewählte RTL-Befehl eine RTL-
Rekonfigurationsbefehl ist. Falls der gewählte RTL-Befehl kein
RTL-Rekonfigurationsbefehl ist, bestimmt das Hinterende des
Kompilers für dynamisch rekonfigurierbares Rechnen im Schritt
618, ob eine Regel für die gegenwärtig betrachtete RTL-
Befehlsgruppe existiert. Falls nicht, kehrt das bevorzugte
Verfahren zum Schritt 612 zurück, um einen nächsten RTL-Befehl
auszuwählen, der in die gegenwärtig betrachtete RTL-
Befehlsgruppe eingeschlossen werden soll. Für den Fall, daß
eine Regel für die gegenwärtig betrachtete RTL-Befehlsgruppe
im Schritt 618 existiert, erzeugt das Hinterende des Kompilers
für dynamisch rekonfigurierbares Rechnen als nächstes einen
Satz von Assemblersprachbefehlen, die der gegenwärtig
betrachteten RTL-Befehlsgruppe gemäß dieser Regel entspricht,
und zwar im Schritt 620. Nachfolgend zum Schritt 620 bestimmt
das Hinterende des Kompilers für dynamisch rekonfigurierbares
Rechnen, ob ein anderer RTL-Befehl eine Beachtung innerhalb
des Zusammenhangs einer nächsten RTL-Befehlsgruppe erfordert,
und zwar im Schritt 622. Falls dem so ist, kehrt das
bevorzugte Verfahren zum Schritt 612 zurück, falls dem nicht
so ist, endet das bevorzugte Verfahren.
Im Schritt 614 handelt es sich bei dem gewählten RTL-Befehl
um einen RTL-Rekonfigurationsbefehl, das Hinterende des
Kompilers für dynamisch rekonfigurierbares Rechnen wählt einen
Regelsatz, der der ISA-Identifikation innerhalb des RTL-
Rekonfigurationsbefehls entspricht, und zwar im Schritt 616.
Bei der vorliegenden Erfindung existiert vorzugsweise ein
einziger Regelsatz für jede ISA. Jeder Regelsatz liefert
deshalb eine oder mehrere Regeln zur Umwandlung von Gruppen
von RTL-Befehlen in Assemblersprachbefehle in Übereinstimmung
mit einer bestimmten ISA. Nachfolgend zum Schritt 616 läuft
das bevorzugte Verfahren weiter zum Schritt 618. Der
Regelsatz, der einer jeden gegebenen ISA entspricht, bein
haltet vorzugsweise eine Regel, um den RTL-Rekonfigurations
befehl in einen Satz von Assemblersprachbefehlen zu über
setzen, die einen Software-Interrupt erzeugen, der in der
Ausführung einer Rekonfigurations-Handhabungseinrichtung
resultiert, wie dies im folgenden detailliert beschrieben
werden wird.
In der oben beschriebenen Art und Weise erzeugt der Kompiler
für dynamisch rekonfigurierbares Rechnen selektiv und auto
matisch Assemblersprachbefehle, und zwar in Übereinstimmung
mit mehreren ISAs während der Kompilierungsoperationen. Mit
anderen Worten kompiliert während des Kompilierungsprozesses
der Kompiler für dynamisch rekonfigurierbares Rechnen einen
einzigen Satz von Programminstruktionen gemäß einer variablen
ISA. Bei dem Kompiler für dynamisch rekonfigurierbares Rechnen
handelt es sich vorzugsweise um einen herkömmlichen Kompiler,
der modifiziert ist, um die bevorzugten Kompilie
rungsoperationen durchzuführen, die oben unter Bezugnahme auf
die Fig. 3C und 3D beschrieben sind. Fachleute werden
erkennen, daß, obwohl die erforderlichen Modifikationen bzw.
Änderungen nicht komplex sind, derartige Modifikationen im
Hinblick auf sowohl Kompilierungstechniken nach dem Stand der
Technik als auch rekonfigurierbare Rechentechniken nach dem
Stand der Technik nicht offensichtlich sind.
Nimmt man nun Bezug auf die Fig. 4, so ist ein Blockschaltbild
bzw. ein Blockdiagramm einer bevorzugten Ausführungsform einer
dynamischen rekonfigurierbaren Verarbeitungseinheit 32
gezeigt. Die DRPU 32 umfaßt eine Instruktionsanfor
derungseinheit (IFU) 60, eine Datenoperationseinheit (DOU) 62
und eine Adressenoperationseinheit (AOU) 64. Sowohl die IFU
60 als auch die DOU 62 und die AOU 64 umfassen einen
Zeitsteuereingang, der mit der ersten Zeitsteuersignalleitung
40 verbunden ist. Die IFU 60 umfaßt einen Speichersteu
erausgang, der mit der Speichersteuerleitung 42 verbunden ist,
einen Dateneingang, der mit der speicher-I/O-Leitung 46
verbunden ist, und einen bidirektionalen Steuerport, der mit
der externen Steuerleitung 48 verbunden ist. Die IFU 60 umfaßt
zusätzlich einen ersten Steuerausgang, der mit einem ersten
Steuereingang der DOU 62 über eine erste Steuerleitung 70
verbunden ist, und einen zweiten Steuerausgang, der mit einem
ersten Steuereingang der AOU 64 über eine zweite Steuerleitung
72 verbunden ist. Die IFU 60 umfaßt ebenso einen dritten
Steuerausgang, der mit einem zweiten Steuereingang der DOU 62
und einem zweiten Steuereingang der AOU 64 über eine dritte
Steuerleitung 74 verbunden ist. Die DOU 62 und die AOU 64
umfassen jeweils einen bidirektionalen Datenport, der mit der
speicher-I/O-Leitung 46 verbunden ist. Schließlich umfaßt die
AOU 64 einen Adressenausgang, der den Adressenausgang der DRPU
ausbildet.
Die DRPU 32 wird vorzugsweise realisiert, indem eine rekon
figurierbare oder reprogrammierbare Logikvorrichtung, wie z. B.
eine FPGA, wie z. B. eine Xilinx XC4013 (Xilinx, Inc., San
Jose, CA, USA) oder eine AT ORCATM 1C07 (AT Microelec
tronics, Allentown, PA, USA) verwendet wird. Vorzugsweise
stellt die reprogrammierbare Logikvorrichtung eine Vielzahl
von folgendem bereit: 1) selektiv reprogrammierbare
Logikblöcke oder konfigurierbare Logikblöcke (CLBs); 2)
selektiv reprogrammierbare I/O-Blöcke (IOBs); 3) selektiv
reprogrammierbare Verbindungsstrukturen; 4) Datenspeicher-
Systemeinheiten; 5) Dreizustands-Puffer-Systemeinheiten; und
6) Funktionsfähigkeiten einer fest verdrahteten Logik. Jede
CLB beinhaltet vorzugsweise eine selektiv rekonfigurierbare
Schaltung zur Erzeugung von Logikfunktionen, Speicherdaten und
Wegeermittlungssignalen bzw. Leitwegsignalen. Fachleute werden
erkennen, daß eine rekonfigurierbare Datenspeicherschaltung
auch in einer oder mehreren Datenspeicherblöcken (DSBs)
beinhaltet sein können, die von dem Satz von CLBs getrennt
sind, und zwar in Abhängigkeit von der exakten Ausgestaltung
der rekonfigurierbaren Logikvorrichtung, die verwendet wird.
Hier befindet sich die rekonfigurierbare
Datenspeicherschaltung, die innerhalb einer FPGA ist, in
nerhalb der CLBs; d. h. die Gegenwart von DSBs wird nicht
angenommen. Fachleute werden leicht erkennen, daß eine oder
mehrere Elemente, die hierin beschrieben sind, die eine CLB-
basierte rekonfigurierbare Datenspeicherschaltung verwenden,
eine DSB-basierte Schaltung für den Fall verwenden könnten,
daß DSBs vorhanden sind. Jede IOB beinhaltet vorzugsweise eine
selektiv rekonfigurierbare Schaltung, um Daten zwischen CLBs
und einem FPGA-Ausgangspin zu übertragen. Ein Konfigura
tionsdatensatz legt eine DRPU-Hardware-Konfiguration oder
-Organisation fest, indem Funktionen spezifiziert werden, die
innerhalb von CLBs durchgeführt werden, sowie Verbindungen
spezifiziert werden, und zwar wie folgt: 1) innerhalb CLBs;
2) zwischen CLBs; 3) innerhalb IOBs; 4) zwischen IOBs; und 5)
zwischen CLBs und IOBs. Fachleute werden erkennen, daß über
einen Konfigurationsdatensatz die Anzahl von Bits sowohl in
der Speichersteuerleitung 42 als auch in der Adreßleitung 44,
der speicher-I/O-Leitung 46 und der externen Steuerleitung 48
rekonfigurierbar ist. Vorzugsweise werden Konfigurations
datensätze in einem oder mehreren S-Maschinenspeichern 34
innerhalb des Systems 10 gespeichert. Fachleute werden er
kennen, daß die DRPU 32 nicht auf eine FPGA-basierte Imple
mentation bzw. Realisierung beschränkt ist. Zum Beispiel
könnte die DRPU 32 als eine RAM-basierte Zustandsmaschine
verwirklicht werden, die möglicherweise eine oder mehrere
Nachschlag- bzw. Verweistabellen enthält. Alternativ könnte
die DRPU 32 realisiert werden, indem eine komplex program
mierbare Logikvorrichtung bzw. eine "Complex Programmable
Logic Device" (CPLD) verwendet wird. Jedoch werden Fachleute
erkennen, daß einige der S-Maschinen 12 des Systems 10 DRPUs
32 enthalten können, die nicht rekonfigurierbar sind.
Bei der bevorzugten Ausführungsform sind sowohl die IFU 60 als
auch die DOU 62 und die AOU 64 dynamisch rekonfigurierbar.
Somit kann ihre interne Hardware-Konfiguration selektiv
während der Programmausführung geändert werden. Die IFU 60
verwaltet Instruktionsanweisungs- und Decodieroperationen,
Speicherzugriffsoperationen, DRPU-Rekonfigurationsoperationen
und gibt Steuersignale zu der DOU 62 und der AOU 64 aus, um
die Instruktionsausübung zu erleichtern. Die DOU 62 führt
Operationen aus, die eine Datenberechnung mit einschließen
bzw. mit sich bringen und die AOU 64 führt Operationen aus,
die eine Adressenberechnung mit sich bringen. Die interne
Struktur und der Betrieb sowohl der IFU 60 als auch der DOU
62 und der AOU 64 wird nun detailliert beschrieben.
Nimmt man Bezug auf die Fig. 5, so ist ein Blockdiagramm bzw.
ein Blockschaltbild einer bevorzugten Ausführungsform der
Instruktionsabrufeinheit 60 bzw. "Instruction Fetch Unit" 60
gezeigt. Die IFU 60 umfaßt eine Instruktionszu
standsfolgesteuereinheit bzw. einen "Instruction State
Sequencer" (ISS) 100, einen Architekturbeschreibungsspeicher
101, eine Speicherzugriffslogik 102, eine Rekonfigurations
logik 104, eine Interruptlogik 106, eine Abrufsteuereinheit
108, einen Instruktionspuffer 110, eine Dekodersteuereinheit
112, einen Instruktionsdecoder 114, einen Operationscode-
Speicherregistersatz 116, einen Registerfile (RF)-Adressenre
gistersatz 118, einen Konstantenregistersatz 120 und einen
Prozeßsteuerregistersatz 122. Die ISS 100 umfaßt einen ersten
bzw. einen zweiten Steuerausgang, der den ersten bzw. zweiten
Steuerausgang der IFU ausbildet, und einen Zeitsteuereingang,
der den Zeitsteuereingang der IFU ausbildet. Die ISS 100
umfaßt ebenso einen Abruf-/Decodersteuerausgang, der mit einem
Steuereingang der Abrufsteuereinheit 108 und einem
Steuereingang der Decodiersteuereinheit 112 über eine Abruf-
/Decodiersteuerleitung 130 verbunden ist. Die ISS 100 weist
zusätzlich einen bidirektionalen Steuerport auf, der mit einem
ersten bidirektionalen Steuerport sowohl der Speicher
zugriffslogik 102 als auch der Rekonfigurationslogik 104 und
der Interruptlogik 106 über eine bidirektionale Steuerleitung
132 verbunden ist. Die ISS 100 umfaßt ebenso einen
Operationscodeeingang, der mit einem Ausgang des Operations
codespeicherregistersatzes 116 über eine Operationscodeleitung
142 verbunden ist. Schließlich umfaßt die ISS 100 einen
bidirektionalen Datenport, der mit einem bidirektionalen
Datenport des Prozeßsteuerregistersatzes 122 über eine Pro
zeßdatenleitung 144 verbunden ist.
Sowohl die Speicherzugriffslogik 102 als auch die Rekonfigu
rationslogik 104 und die Interruptlogik 106 umfassen einen
zweiten bidirektionalen Steuerport, der mit der externen
Steuerleitung 48 verbunden ist. Die Speicherzugriffslogik 102,
die Rekonfigurationslogik 104 und die Interruptlogik 106
umfassen zusätzlich jeweils einen Dateneingang, der mit einem
Datenausgang des Architekturbeschreibungsspeichers 101 über
eine Implementationssteuerleitung 131 bzw. Realisie
rungssteuerleitung 131 verbunden ist. Die Speicherzugriffs
logik 102 umfaßt zusätzlich einen Steuerausgang, der den
Speichersteuerausgang der IFU ausbildet. Und die Inter
ruptlogik 106 umfaßt einen Ausgang, der mit der Prozeßdaten
leitung 144 verbunden ist. Der Instruktionspuffer 110 umfaßt
einen Dateneingang, der den Dateneingang der IFU ausbildet,
einen Steuereingang, der mit einem Steuerausgang der Abruf
steuereinheit 108 über eine Abrufsteuerleitung 134 verbunden
ist, und einen Ausgang, der mit einem Eingang des Instruk
tionsdecoders 114 über eine Instruktionsleitung 136 verbunden
ist. Der Instruktionsdecoder 114 umfaßt einen Steuereingang,
der mit einem Steuerausgang der Decodiersteuereinheit 112 über
eine Decodiersteuerleitung 138 verbunden ist, und einen
Ausgang, der über eine Decodierinstruktionsleitung 140 mit 1)
einem Eingang des Operationscode-Speicherregistersatzes 116;
2) einem Eingang des RF-Adressenregistersatzes 118; und 3)
einem Eingang des Konstantenregistersatzes 120 verbunden ist.
Der RF-Adressenregistersatz 118 und der Konstantenregistersatz
120 umfassen jeweils einen Ausgang, die zusammen den dritten
Steuerausgang 74 der IFU ausbilden.
Der Architekturbeschreibungsspeicher 101 speichert Architek
turbeschreibungssignale, die die gegenwärtige DRPU-Konfigu
ration kennzeichnen. Vorzugsweise beinhalten die Architek
turspezifikationssignale 1) einen Bezug bzw. eine Referenz zu
einem Ausgangskonfigurationsdatensatz bzw. Default-
Konfigurationsdatensatz; 2) einen Bezug bzw. eine Referenz zu
einer Liste von möglichen Konfigurationsdatensätzen; 3) einen
Bezug bzw. eine Referenz zu einem Konfigurationsdatensatz, der
der gegenwärtig betrachteten ISA entspricht, d. h. einen Bezug
zu dem Konfigurationsdatensatz, der die gegenwärtige DRPU-
Konfiguration festlegt; 4) eine Verbindungsadressenliste, die
eine oder mehrere Verbindungs-I/O-Einheiten 304 innerhalb der
T-Maschine 14 identifiziert, die der S-Maschine 12 zugeordnet
ist, in der sich die IFU 60 befindet, wie detailliert weiter
unten unter Bezugnahme auf die Fig. 13 beschrieben werden
wird; 5) einen Satz von Interrupt-Antwortsignalen, die eine
Interruptsuchzeit bzw. Interruptverzögerungszeit und eine
Interrupt-Präzisionsinformation, die festlegt, wie die IFU 60
auf die Interrupt antwortet, spezifizieren; und 6) eine
Speicherzugriffskonstante, die eine atomare
Speicheradresseninkrementierung festlegt. Bei der bevorzugten
Ausführungsform realisiert bzw. implementiert jeder
Konfigurationsdatensat z den Architekturbeschreibungsspeicher
101 als einen Satz von CLBs, der als ein Nur-Lese-Speicher
bzw. "Read Only Memory" (ROM) konfiguriert ist. Die
Architekturspezifikationssignale, die den Inhalt des Archi
tekturbeschreibungsspeichers 101 festlegen, sind vorzugsweise
in jedem Konfigurationsdatensatz enthalten. Da jeder
Konfigurationsdatensatz einer bestimmten ISA entspricht,
variiert der Inhalt des Architekturbeschreibungsspeichers 101
gemäß der ISA, die gegenwärtig betrachtet wird. Für eine
gegebene ISA wird der Programmzugriff auf den Inhalt des
Architekturbeschreibungsspeichers 101 vorzugsweise erleich
tert, indem eine Speicherleseinstruktion in die ISA einge
schlossen wird bzw. mit aufgenommen wird. Dies ermöglicht es,
daß ein Programm Informationen über die gegenwärtige DRPU-
Konfiguration während der Programmausführung wiederfindet.
Bei der vorliegenden Erfindung handelt es sich bei der Re
konfigurationslogik 104 um eine Zustandsmaschine, die eine
Abfolge von Rekonfigurationsoperationen steuert, die die
Rekonfiguration der DRPU 32 gemäß einem Konfigurationsdaten
satz erleichtert. Vorzugsweise löst die Rekonfigurationslogik
104 die Rekonfigurationsoperationen nach dem Empfang eines
Rekonfigurationssignals aus. Wie detallierter weiter unten
beschrieben werden wird, wird das Rekonfigurationssignal durch
die Interruptlogik 106 in Antwort auf einen
Rekonfigurationsinterrupt erzeugt, der auf der externen
Steuerleitung 48 empfangen wird, oder es wird durch die ISS
100 in Antwort auf eine Rekonfigurationsanweisung, die in
einem Programm eingebaut ist, erzeugt. Die Rekonfigurations
operationen stellen eine anfängliche DRPU-Konfiguration
bereit, die einer Einschalt-/Reset-Bedingung folgt, die den
Ausgangs-Konfigurationsdatensatz bzw. Default-Konfigura
tionsdatensatz verwendet, auf den der Architekturbeschrei
bungsspeicher 101 verweist. Die Rekonfigurationsoperationen
stellen ebenso eine selektive DRPU-Rekonfiguration bereit,
nachdem die anfängliche DRPU-Konfiguration erstellt worden
ist. Nach der Vollendung der Rekonfigurationsoperationen gibt
die Rekonfigurationslogik 104 ein Vollendungssignal ab. Bei
der bevorzugten Ausführungsform handelt es sich bei der
Rekonfigurationslogik 104 um eine nicht-rekonfigurierbare
Logik, die das Laden von Konfigurationsdatensätzen in die
reprogrammierbare Logikvorrichtung selbst steuert, und somit
wird die Abfolge bzw. Sequenz von Rekonfigurationsoperationen
durch den Hersteller der reprogrammierbaren Logikvorrichtung
festgelegt. Die Rekonfigurationsoperationen werden nun für die
Fachleute bekannt sein.
Jede DRPU-Konfiguration ist vorzugsweise durch einen Kon
figurationsdatensatz gegeben, der eine bestimmte Hardware-
Organisation festlegt, die auf die Implementation bzw. Rea
lisierung einer entsprechenden ISA ausgerichtet ist bzw.
zugeordnet ist. Bei der bevorzugten Ausführungsform beinhaltet
die IFU 60 jedes der Elemente, auf die oben hingewiesen wurde,
und zwar unabhängig von der DRPU-Konfiguration. Bei einem
Basisniveau bzw. bei einer Grundebene ist die Funktionalität
bzw. Funktionstüchtigkeit, die durch jedes Element innerhalb
der IFU 60 bereitgestellt wird, unabhängig von der gegenwärtig
betrachteten ISA. Jedoch kann bei der bevorzugten
Ausführungsform die detaillierte Struktur und Funktions
tüchtigkeit von einem oder mehreren Elementen der IFU 60 sich
verändern, und zwar aufgrund der Natur der ISA, für die sie
konfiguriert worden ist. Bei der bevorzugten Ausführungsform
bleibt die Struktur und Funktionalität des Archi
tekturbeschreibungsspeichers 101 und der Rekonfigurationslogik
104 vorzugsweise von einer DRPU-Konfiguration zu einer anderen
konstant. Die Struktur und Funktionstüchtigkeit bzw.
Funktionalität der anderen Elemente der IFU 60 und die Art und
Weise, in der sie gemäß dem Typ der ISA variieren, wird nun
im Detail beschrieben.
Der Prozeßsteuerregistersatz 122 speichert Signale und Daten,
die durch die ISS 100 während der Ausführung von Instruktionen
verwendet wird. Bei der bevorzugten Ausführungsform umfaßt der
Prozeßsteuerregistersatz 122 ein Register, um ein
Prozeßsteuerwort zu speichern, ein Register, um einen
Interruptvektor zu speichern, und ein Register, um einen Bezug
zu einem Konfigurationsdatensatz zu speichern. Das
Prozeßsteuerwort beinhaltet vorzugsweise eine Vielzahl von
Bedingungsflags, die wahlweise gesetzt und rückgesetzt werden
können, und zwar in Abhängigkeit von Bedingungen, die während
der Instruktionsausführung auftreten. Das Prozeßsteuerwort
beinhaltet zusätzlich eine Vielzahl von
Übergangssteuersignalen, die eine oder mehrere Arten und
Weisen festlegen, in denen Interrupts abgearbeitet werden
können, wie im folgenden detaillierter beschrieben werden
wird. Bei der bevorzugten Ausführungsform ist der
Prozeßsteuerregistersatz 122 als ein Satz von CLBs realisiert,
der für Datenspeicherung und für Gattersteuerlogik bzw.
logische Torschaltungen konfiguriert ist.
Die ISS 100 ist vorzugsweise eine Zustandsmaschine, die den
Betrieb der Abrufsteuereinheit 108, der Decodiersteuereinheit
112, der DOU 62 und der AOU 64 steuert und Speicherlese- und
Speicherschreibsignale zu der Speicherzugriffslogik 102
ausgibt, um die Instruktionsausführung zu erleichtern. Nimmt
man nun Bezug auf Fig. 6, so ist ein Zustandsdiagramm gezeigt,
das einen bevorzugten Satz von Zuständen, die durch die ISS
100 unterstützt werden, zeigt. Nachfolgend zu einer Einschalt-
oder Resetbedingung oder unmittelbar, nachdem eine
Rekonfiguration aufgetreten ist, beginnt die ISS 100 mit einer
Operation im Zustand P. In Antwort auf das Vollendungssignal,
das durch die Rekonfigurationslogik 104 ausgegeben wird,
schreitet die ISS 100 zum Zustand S fort, indem die ISS 100
Programmzustandsinformationen initialisiert wiederhergestellt,
und zwar in dem Fall, daß eine Einschalt-/Resetbedingung bzw.
eine Rekonfiguration aufgetreten ist. Die ISS 100 schreitet
zum Zustand F fort, indem Instruktionsabrufoperationen
durchgeführt werden. Bei den Instruktionsabrufoperationen gibt
die ISS 100 ein Speicherlesesignal zu der
Speicherzugriffslogik 102 aus, gibt ein Abrufsignal zu der
Abrufsteuereinheit 108 aus und gibt ein Inkrementsignal zu der
AOU 64 aus, um ein Programmadressenregister bezüglich einer
nächsten Instruktion bzw. ein "Next Instruction Programm
Address Register" (NIPAR) 232 zu inkrementieren, wie unten
detaillierter unter Bezugnahme auf die Fig. 11A und 11B
beschrieben wird. Nach dem Zustand F schreitet die ISS 100 zu
dem Zustand D, um Instruktionsdecodieroperationen auszulösen.
Im Zustand D gibt die ISS 100 ein Decodiersignal zu der
Decodiersteuereinheit 112 aus. Während sie im Zustand D ist,
liest die ISS 100 zusätzlich einen Operationscode aus, und
zwar entsprechend einer decodierten Instruktion von dem
Operationscodespeicherregistersatz 116. Basierend auf dem
empfangenen Operationscode, schreitet die ISS 100 zu dem
Zustand E oder zu dem Zustand M fort, um
Instruktionsausführungsoperationen durchzuführen. Die ISS 100
schreitet zu dem Zustand E in dem Fall fort, daß die
Instruktion in einem einzigen Taktzyklus ausgeführt werden
kann; andernfalls schreitet die ISS 100 zu dem Zustand M für
Multizyklusinstruktionsausführung fort. Bei den
Instruktionsausführungsoperationen erzeugt die ISS 100 DOU-
Steuersignale, AOU-Steuersignale und/oder Signale, die auf die
Speicherzugriffslogik 102 gerichtet sind, um die Ausführung
der Instruktionen zu erleichtern, die dem wiedergewonnenen
bzw. ausgelesenen Operationscode entsprechen. Nachfolgend
entweder den Zuständen E oder M, schreitet die ISS 100 zu dem
Zustand W fort. Im Zustand W erzeugt die ISS 100 DOU-
Steuersignale, AOU-Steuersignale und/oder Speicher
schreibsignale, um ein Speichern eines Ergebnisses einer
Instruktionsausführung zu erleichtern. Auf dem Zustand W wird
deshalb als ein Schreib-zurück-Zustand Bezug genommen.
Fachleute werden erkennen, daß die Zustände F, D, E oder M und
W einen vollständigen Instruktionsausführungszyklus aufweisen.
Nach dem Zustand W schreitet die ISS 100 zu dem Zustand Y in
dem Fall fort, daß ein Aussetzen einer Instruktionsausführung
erforderlich ist. Der Zustand Y entspricht einem nichttätigen
Zustand bzw. Ruhezustand, der z. B. in dem Fall erforderlich
sein kann, daß eine T-Maschine 14 Zugriff zu dem
S-Maschinenspeicher 34 fordert bzw. benötigt. Nachfolgend zum
Zustand Y oder nach dem Zustand W kehrt die ISS 100 in dem
Fall, daß die Instruktionsausführung fortgesetzt werden soll,
zu dem Zustand F zurück, um einen anderen Instruk
tionsausführungszyklus aufzunehmen.
Wie in Fig. 6 gezeigt, beinhaltet das Zustandsdiagramm ebenso
einen Zustand I, der festgelegt ist, ein Interruptservi
cezustand zu sein. Bei der vorliegenden Erfindung empfängt die
ISS 100 ein Interruptmeldungssignal von der Interruptlogik
106. Wie im folgenden unter Bezugnahme auf die Fig. 7
beschrieben werden wird, erzeugt die Interruptlogik 106
Übergangssteuersignale und speichert die Übergangssteuersi
gnale in dem Prozeßsteuerwort innerhalb des Prozeßsteuerre
gistersatzes 122. Die Übergangssteuersignale weisen vorzugs
weise darauf hin, welcher der Zustände F, D, E, M, W und Y
unterbrechbar sind bzw. auf ein Interrupt reagieren, und auf
ein Niveau bzw. eine Ebene einer Interruptpräzision, die in
bzw. bei jedem unterbrechbaren Zustand erforderlich ist, und
für jeden unterbrechbaren Zustand auf einen nächster Zustand,
bei dem die Instruktionsausführung fortgesetzt werden soll und
der dem Zustand I folgt. Falls die ISS 100 ein
Interruptmeldungssignal empfängt, während sie in einem
gegebenen Zustand ist, schreitet die ISS 100 zu dem Zustand
I, falls das Übergangssteuersignal anzeigt, daß der
gegenwärtige Zustand unterbrechbar ist bzw. auf ein Interrupt
ansprechen kann. Andernfalls schreitet die ISS 100 fort als
ob sie kein Interruptsignal empfangen hätte, bis sie einen
unterbrechbaren Zustand erreicht.
Wenn einmal die ISS 100 zum Zustand I fortgeschritten ist,
greift die ISS 100 vorzugsweise auf den Prozeßsteuerregist
ersatz 122 zu, um ein Interruptmaskierflag bzw. eine Inter
ruptmaskiermarke zu setzen, und sie empfängt einen Inter
ruptvektor. Nachdem der Interruptvektor wiedergewonnen bzw.
ausgelesen ist, arbeitet die ISS 100 vorzugsweise über einen
herkömmlichen Subroutinensprung zu einer
Interrupthandhabungseinrichtung bzw. zu einem
Interrupthandler, wie es durch den Interruptvektor beschrieben
ist, den gegenwärtigen Interrupt ab.
Bei der vorliegenden Erfindung wird die Rekonfiguration der
DRPU 32 in Antwort auf folgendes ausgelöst: 1) einen Rekon
figurationsinterrupt, der auf der externen Steuerleitung 48
aktiv ist; oder 2) die Ausführung einer Rekonfigurations
anweisung innerhalb einer Abfolge von Programminstruktionen.
Bei der bevorzugten Ausführungsform führen sowohl der Rekon
figurationsinterrupt als auch die Ausführung einer Rekon
figurationsanweisung zu einem Subroutinensprung zu einer
Rekonfigurationshandhabungseinrichtung bzw. zu einem Rekon
figurationshandler. Vorzugsweise speichert die Rekonfigura
tionshandhabungseinrichtung Programmzustandsinformationen und
gibt eine Konfigurationsdatensatzadresse und das Rekon
figurationssignal zu der Rekonfigurationslogik 104.
In dem Fall, daß es sich bei dem vorliegenden Interrupt nicht
um einen Rekonfigurationsinterrupt handelt, schreitet die ISS
100 zu dem nächsten Zustand fort, wie dies durch die
Übergangssteuersignale angezeigt wird, wenn der Interrupt
empfangen worden ist, wodurch ein Instruktionsausführungs
zyklus wieder aufgenommen, vollendet oder ausgelöst wird.
Bei der bevorzugten Ausführungsform variiert der Satz an
Zuständen, der durch die ISS 100 unterstützt wird, gemäß der
Natur der ISA, für die die DRPU 32 konfiguriert ist. Somit
würde der Zustand M für eine ISA nicht vorliegen, in der eine
oder mehrere Instruktionen in einem einzigen Taktzyklus
ausgeführt werden können, was der Fall wäre bei einer typi
schen Innenschleifen-ISA. Wie gezeigt, definiert das Zu
standsdiagramm der Fig. 6 vorzugsweise die Zustände, die durch
die ISS 100 festgelegt werden, um eine Allzweck-Außen
schleifen-ISA zu realisieren. Zur Realisierung der Innen
schleifen-ISA unterstützt die ISS 100 vorzugsweise mehrere
Sätze von Zuständen F, D, E und W, und zwar parallel, wodurch
eine pipelineartige Steuerung einer Instruktionsausführung in
einer Art und Weise erleichtert wird, die leicht von
Fachleuten verstanden wird. Bei der bevorzugten Ausfüh
rungsform ist die ISS 100 als eine CLB-basierte Zustands
maschine realisiert, die die Zustände oder einen Untersatz von
den Zuständen, die oben beschrieben wurden, in Übereinstimmung
mit der gegenwärtig betrachteten ISA unterstützt.
Die Interruptlogik 106 umfaßt vorzugsweise eine Zustands
maschine, die Übergangssteuersignale erzeugt und Inter
ruptmeldeoperationen in Antwort auf ein Interruptsignal
durchführt, das über die externe Steuerleitung 48 empfangen
wird. Nimmt man Bezug auf Fig. 7, so ist ein Zustandsdiagramm
gezeigt, das einen bevorzugten Satz von Zuständen zeigt, die
durch die Interruptlogik 106 unterstützt werden. Die
Interruptlogik 106 beginnt ihren Betrieb bzw. ihre Operation
im Zustand P. Der Zustand P entspricht einer Einschalt-,
Reset- oder Rekonfigurationsbedingung. In Antwort auf das
Vollendungssignal, das durch die Rekonfigurationslogik 104
abgegeben wird, schreitet die Interruptlogik 106 zum Zustand
A und liest das Interruptantwortsignal aus dem Ar
chitekturbeschreibungsspeicher 101. Die Interruptlogik 106
erzeugt dann das Übergangssteuersignal aus den
Interruptantwortsignalen und speichert das
Übergangssteuersignal in dem Prozeßsteuerregistersatz 122. Bei
der bevorzugten Ausführungsform beinhaltet die Interruptlogik
106 ein CLB-basiertes programmierbares Logikfeld bzw. eine
CLB-basierte "Programmable Logic Array" (PLA), um die
Interruptantwortsignale zu empfangen und um die
Übergangssteuersignale zu erzeugen. Nachfolgend zum Zustand
A schreitet die Interruptlogik 106 zu dem Zustand B fort, um
auf ein Interruptsignal zu warten. Nach dem Empfang eines
Interruptsignals schreitet die Interruptlogik 106 zu dem
Zustand C in dem Fall fort, daß das Interruptmaskierflag
innerhalb des Prozeßsteuerregistersatzes 122 zurückgesetzt
wird. Wenn einmal der Zustand C erreicht ist bzw. vorliegt,
bestimmt die Interruptlogik 106 den Ursprung des Interrupts,
eine Interruptpriorität und eine Adresse der
Interrupthandhabungseinrichtung bzw. eine
Interrupthandleradresse. In dem Fall, daß das Interruptsignal
ein Rekonfigurationsinterrupt ist, schreitet die Inter
ruptlogik 106 zu dem Zustand R und speichert eine Konfigura
tionsdatensatzadresse in dem Prozeßsteuerregistersatz 122.
Nach dem Zustand R oder nachfolgend zu dem Zustand C schreitet
die Interruptlogik 106, in dem Fall, daß das Interruptsignal
nicht ein Rekonfigurationsinterrupt ist, zu dem Zustand N fort
und speichert die Interrupthandleradresse bzw. die Adresse der
Interrupthandhabungseinrichtung in dem
Prozeßsteuerregistersatz 122. Die Interruptlogik 106 schreitet
als nächstes zu dem Zustand X und gibt ein Interruptmel
designal zu der ISS 100. Nachfolgend zu dem Zustand X kehrt
die Interruptlogik 122 zum Zustand B zurück, um auf ein
nächstes Interruptsignal zu waren.
Bei der bevorzugten Ausführungsform variiert der Pegel bzw.
die Ebene der Interruptwartezeit bzw. der
Interruptverzögerungszeit, wie sie durch die
Interruptantwortsignale und folglich durch die
Übergangssteuersignale spezifiziert ist, in Abhängigkeit von
der gegenwärtigen ISA, für die die DRPU 32 konfiguriert worden
ist. Zum Beispiel erfordert eine ISA, die auf Hochleistungs-
Echtzeitbewegungssteuerung ausgerichtet ist, schnelle und
vorhersehbare Interruptantwortfähigkeiten. Der
Konfigurationsdatensatz, der einer derartigen ISA entspricht,
beinhaltet deshalb vorzugsweise Interruptantwortsignale, die
anzeigen, daß eine Unterbrechung mit geringer Wartezeit bzw.
Verzögerungszeit erforderlich ist. Die entsprechenden
Übergangssteuersignale identifizieren wiederum mehrere ISS-
Zustände als unterbrechbar, wodurch es einem Interrupt
ermöglicht wird, einen Instruktionsausführungszyklus
auszusetzen bzw. aufzugeben, bevor der Instruktions
ausführungszyklus vollendet ist. Im Gegensatz zu einer ISA,
die auf Echtzeitbewegungssteuerung ausgerichtet ist, benötigt
eine ISA, die auf Bildfaltungsoperationen ausgerichtet ist,
Interruptantwortfähigkeiten, die gewährleisten, daß die Anzahl
der Faltungsoperationen, die pro Zeiteinheit durchgeführt
wird, maximiert ist. Der Konfigurationsdatensatz, der der
Bildfaltungs-ISA entspricht, beinhaltet vorzugsweise
Interruptantwortsignale, die spezifizieren, daß eine Unter
brechung mit langer Warte- bzw. Verzögerungszeit erforderlich
ist. Die entsprechenden Übergangssteuersignale identifizieren
einen Zustand W vorzugsweise als einen unterbrechbaren. In dem
Fall, daß die ISS 100 mehrere Sätze von Zuständen F, D, E und
W parallel unterstützt, identifizieren die Bildsteuersignale,
wenn sie konfiguriert sind, um die Bildfaltungs-ISA zu
realisieren, jeden Zustand W als unterbrechbar und
spezifizieren weiter, daß das Abarbeiten bezüglich des
Interrupts verzögert werden soll, bis jede der parallelen
Instruktionsausführungszyklen ihre Zustand-W-Operationen
beendet hat. Dies gewährleistet, daß eine ganze Gruppe von
Instruktionen ausgeführt werden wird, bevor ein Interrupt
abgearbeitet wird, wodurch vernünftige Fließband-
Ausführungsleistungspegel bzw. gepipelinte
Ausführungsleistungspegel aufrechterhalten werden.
In einer Art und Weise, die analog zu dem Pegel der Inter
ruptverzögerungszeit ist, variiert der Pegel bzw. das Niveau
der Interruptpräzision, wie sie durch die Interruptantwort
signale spezifiziert werden, ebenso in Abhängigkeit von der
ISA, für die die DRPU 32 konfiguriert ist. Zum Beispiel geben
die Interruptantwortsignale in dem Fall, daß ein Zustand M als
ein unterbrechbarer Zustand für eine Außenschleifen-ISA
festgelegt ist, die unterbrechbare Multizyklusoperationen
unterstützt, vorzugsweise vor, daß präzise Interrupts
erforderlich sind. Die Übergangssteuersignale spezifizieren
somit bzw. geben somit vor, daß Interrupts, die in dem Zustand
M empfangen werden, als präzise Interrupts behandelt werden,
um zu gewährleisten, daß Multizyklusoperationen erfolgreich
erneut gestartet werden können. In einem anderen Beispiel
bezüglich einer ISA, die nicht fehlbare bzw. nicht
fehlerbehaftete Fließband-Arithmetikoperationen unterstützt,
spezifizieren Interruptantwortsignale vorzugsweise, daß
ungenaue bzw. unpräzise Interrupts erforderlich sind. Die
Übergangssteuersignale spezifizieren dann bzw. geben dann vor,
daß die Interrupts, die im Zustand W empfangen werden, als
unpräzise Interrupts behandelt werden.
Bezüglich jeder gegebenen ISA werden die Interruptantwortsi
gnale durch einen Abschnitt des Datensatzes, der der ISA
entspricht, festgelegt oder programmiert. Über programmierbare
Interruptantwortsignale und die Erzeugung von entsprechenden
Übergangssteuersignalen erleichtert die vorliegende Erfindung
die Realisierung eines optimalen Interruptschemas auf einer
ISA-durch-ISA-Basis. Fachleute werden erkennen, daß die
überwiegende Mehrzahl von Computerarchitekturen nach dem Stand
der Technik nicht für die flexible Spezifizierung von
Unterbrechungsfähigkeiten bzw. Interruptfähigkeiten, nämlich
programmierbare Zustands-Übergangsfreigabe, programmierbare
Interruptverzögerungszeit und programmierbare
Interruptpräzision sorgen. Bei der bevorzugten Ausführungsform
ist die Interruptlogik 106 als eine CLB-basierte Zu
standsmaschine realisiert, die die oben beschriebenen Zustände
unterstützt.
Die Abrufsteuereinheit 108 verwaltet das Laden von Instruk
tionen in den Instruktionspuffer 110 in Antwort auf das
Abrufsignal, das von der ISS 100 ausgegeben wird. Bei der
bevorzugten Ausführungsform ist die Abrufsteuereinheit 108 als
eine herkömmliche "One-Hot" codierte bzw. Monoflog-kodierte
Zustandsmaschine realisiert, die Flipflops innerhalb eines
Satzes von CLBs verwendet. Fachleute werden erkennen, daß bei
einer alternativen Ausführungsform die Abrufsteuereinheit 108
als eine konventionell codierte Zustandsmaschine oder als eine
ROM-basierte Zustandsmaschine konfiguriert werden könnte. Der
Instruktionspuffer 110 stellt eine temporäre Speicherung für
Instruktionen bereit, die von dem Speicher 34 geladen werden.
Für die Realisierung einer Außenschleifen-ISA ist der
Instruktionspuffer 110 vorzugsweise als herkömmlicher RAM-
basierter "Zuerst-rein, Zuerst-raus"- bzw. "First In, First
Out"-(FIFO)-Puffer realisiert, der eine Vielzahl von CLBs
verwendet. Für die Realisierung einer Innenschleifen-ISA ist
der Instruktionspuffer 110 vorzugsweise als ein Satz von Flip
flop-Register realisiert, die eine Vilzahl von Flipflops
innerhalb eines Satzes von IOBs oder eine Vielzahl von Flip
flops innerhalb sowohl IBOs als auch CLBs verwendet.
Die Decodersteuereinheit 112 verwaltet den Transfer von
Instruktionen von dem Instruktionspuffer 110 in den Instruk
tionsdecoder 114 in Antwort auf das Decodiersignal, das von
der ISS 100 ausgegeben wird. Bezüglich einer Innenschleifen-
ISA ist die Decodiersteuereinheit 112 vorzugsweise als eine
Zustandsmaschine auf ROM-Basis realisiert, die ein ROM auf
CLB-Basis aufweist, das mit einem Register auf CLB-Basis
verbunden ist. Bezüglich einer Außenschleifen-ISA ist die
Decodiersteuereinheit 112 vorzugsweise als eine codierte
Zustandsmaschine auf CLB-Basis realisiert. Bezüglich jeder
Instruktion, die als Eingang empfangen wird, gibt der
Instruktionsdecoder 114 einen entsprechenden Operationscode
bzw. Opcode, eine Registerfileadresse und optional eine oder
mehrere Konstanten in einer herkömmlichen Art und Weise aus.
Bezüglich einer Innenschleifen-ISA ist der Instruktionsdecoder
114 vorzugsweise konfiguriert, um eine Gruppe von
Instruktionen zu decodieren, die als ein Eingang bzw. ein
Eingangssignal empfangen werden. Bei der bevorzugten Ausfüh
rungsform ist der Instruktionsdecoder 114 als ein Decoder auf
CLB-Basis bzw. als ein CLB-basierter Decoder konfiguriert, um
jede der Instruktionen zu decodieren, die in der ISA, die
gegenwärtig betrachtet wird, beinhaltet sind.
Der Operationscode-Speicherregistersatz 116 stellt eine
temporäre Speicherung für jeden Operationscode bereit, der
durch den Instruktionsdecoder 144 ausgegeben wird und gibt
jeden Operationscode bzw. Opcode zu der ISS 100 aus. Wenn eine
Außenschleifen-ISA in der DRPU 32 realisiert wird, wird der
Operationscode-Speicherregistersatz 116 vorzugsweise
realisiert, indem eine optimale Anzahl an Flipflop-Register
bänken verwendet wird. Die Flipflop-Registerbänke empfangen
Signale von dem Instruktionsdecoder 114, die Klassen- oder
Gruppencodes darstellen, die von Operationscode-Literal-
Bitfeldern von Instruktionen abgeleitet werden, die zuvor
durch den Instruktionspuffer 110 geschleust wurden bzw. dort
in einer Warteschlange eingereiht wurden. Die Flipflop-Regi
sterbänke speichern die zuvor erwähnten Klassen- oder Grup
pencodes gemäß einem Decodierschema, das vorzugsweise die ISS-
Komplexität minimiert. Für den Fall einer Innenschleifen-ISA
speichert der Operationscode-Speicherregistersatz 116
vorzugsweise Operationscode-Hinweissignale, die direkter von
den Operationscode-Bitfeldern abgeleitet werden, die durch den
Instruktionsdecoder 114 ausgegeben werden. Innenschleifen-ISAs
weisen notwendigerweise kleinere Operationscode-Literal-
Bitfelder auf, wodurch die Realisierungserfordernisse für das
Puffern, Decodieren bzw. Operationscode-Anzeigen für das
Sequenzieren von Instruktionen durch den Instruktionspuffer
110, den Instruktionsdecodierer 114 bzw. den Operationscode-
Speicherregistersatz 116 minimiert werden. Zusammengefaßt ist
bezüglich Außenschleifen-ISAs der Operationscode-
Speicherregistersatz 116 vorzugsweise als ein kleiner Verbund
von Flipflop-Registerbänken realisiert, die durch eine
Bitbreite charakterisiert sind, die gleich der Operationscode-
Literal-Größe ist oder einen Bruchteil davon darstellt.
Bezüglich Innenschleifen-ISAs ist der Operationscode-
Speicherregistersatz 116 vorzugsweise eine kleinere und
gleichmäßigere Flipflop-Registerbank als bezüglich Außen
schleifen-ISAs. Die reduzierte Flipflop-Registerbankgröße in
dem Innenschleifenfall spiegelt die minimale Instruktions
zählcharakteristik von Innenschleifen-ISAs relativ zu Außen
schleifen-ISAs wieder.
Der RF-Adreßregistersatz 118 bzw. der Konstantenregistersatz
120 stellen eine temporäre Speicherung für jede Registerfi
leadresse bzw. für jede Konstante bereit, die durch den
Instruktionsdecoder 114 ausgegeben wird. Bei der bevorzugten
Ausführungsform werden der Operationscode-Speicherregistersatz
116, der RF-Adreßregistersatz 118 und der Konstanten
registersatz 120 jeweils als ein Satz von CLBs realisiert, die
für die Datenspeicherung konfiguriert sind.
Bei der Speicherzugriffslogik 102 handelt es sich um eine
Speicher-Steuerschaltung, die den Transfer bzw. die Über
tragung von Daten zwischen dem Speicher 34, der DOU 62 und der
AOU 64 gemäß der atomaren Speicheradressengröße verwaltet und
synchronisiert, die in dem Architekturbeschreibungsspeicher
122 spezifiziert ist. Die Speicherzugriffslogik 102 verwaltet
und synchronisiert zusätzlich den Transfer von Daten und
Befehlen bzw. Kommandos zwischen der S-Maschine 12 und einer
gegebenen T-Maschine 14. Bei der bevorzugten Ausführungsform
unterstützt die Speicherzugriffslogik 102 Burstmodus-
Speicherzugriffe und sie ist vorzugsweise als eine
herkömmliche RAM-Steuereinrichtung realisiert, die CLBs
verwendet. Fachleute werden erkennen, daß während der Rekon
figuration die Eingangs- und Ausgangspins bzw. -anschlüsse der
Rekonfigurierbaren Logikvorrichtung drei Zustände aufweisen,
die ohmsche Abschlüsse ermöglichen, um unaktive bzw. nicht
angesteuerte Logikpegel festzulegen, und sie werden somit
nicht den Speicher 34 stören. Bei einer alternativen Ausfüh
rungsform könnte die Speicherzugriffslogik 102 außerhalb der
DRPU 32 realisiert sein.
Nimmt man nun Bezug auf Fig. 8, so ist eine Datenoperations
einheit bzw. "Data Operate Unit" 62 gezeigt. Die DOU 62 führt
bezüglich der Daten Operationen gemäß den DOU-Steuersignalen,
RF-Adressen und Konstanten durch, die von der ISS 100
empfangen werden. Die DOU 62 umfaßt einen DOU-Crossbar-
Schalter (X-Bar-Schalter) 150, eine Abspeicher-/Ausrichtlogik
152 und eine Datenoperationslogik 154. Sowohl der DOU-
Crossbar-Schalter 150 als auch die Abspeicher-/Ausrichtlogik
152 und die Datenoperationslogik 154 umfassen einen
Steuereingang, der mit dem ersten Steuerausgang der IFU 60
über die erste Steuerleitung 70 verbunden ist. Der DOU-
Crossbar-Schalter 150 umfaßt einen bidirektionalen Datenport,
der den bidirektionalen Datenport des DOU ausbildet; einen
Konstanteneingang, der mit der dritten Steuerleitung 74
verbunden ist; einen ersten Datenrückführeingang bzw. Daten-
Feedback-Eingang, der mit einem Datenausgang der
Datenoperationslogik 154 über eine erste Datenleitung 160
verbunden ist; einen zweiten Datenrückführeingang bzw. Daten-
Feedback-Eingang, der mit einem Datenausgang der Abspeicher-
/Ausrichtlogik 152 über eine zweite Datenleitung 164 verbunden
ist; und einen Datenausgang, der mit einem Dateneingang der
Abspeicher-/Ausrichtlogik 152 über eine dritte Datenleitung
162 verbunden ist. Zusätzlich zu ihren Datenausgängen umfaßt
die Abspeicher-/Ausrichtlogik 154 einen Adresseneingang, der
mit der dritten Steuerleitung 74 verbunden ist. Die
Datenoperationslogik 154 weist zusätzlich einen Dateneingang
auf, der mit dem Ausgang der Abspeicher-/Ausrichtlogik über
die zweite Datenleitung 164 verbunden ist.
Die Datenoperationslogik 154 führt arithmetische, Schiebe-
und/oder logische Operationen bezüglich der Daten durch, die
bei ihrem Dateneingang in Antwort auf die DOU-Steuersignale
empfangen werden, die bei ihrem Steuereingang empfangen
werden. Die Abspeicher-/Ausrichtlogik 152 umfaßt Datenspei
cherelemente, die eine temporäre Speicherung bezüglich Ope
randen, Konstanten und Teilergebnissen, die mit Datenberech
nungen verbunden sind, bereitstellen, und zwar unter der
Verwaltung der RF-Adressen bzw. DOU-Steuersignale, die bei
ihrem Adresseneingang bzw. Steuereingang empfangen werden. Der
DOU-Crossbar-Schalter 150 ist vorzugsweise ein konventionelles
Crossbar-Schalt-Netzwerk, das das Laden von Daten aus dem
Speicher 34, den Transfer von Ergebnissen, die durch die
Datenoperationslogik 154 ausgegeben werden, zu der Abspeicher-
/Ausrichtlogik 152 des Speichers 34, und das Laden von
Konstanten, die durch die IFU 60 ausgegeben werden, in die
Abspeicher-/Ausrichtlogik 152 in Übereinstimmung mit DOU-Steu
ersignalen, die bei ihrem Steuereingang empfangen werden,
erleichtert. Bei der bevorzugten Ausführungsform hängt die
detaillierte Struktur der Datenoperationslogik 154 von den
Typen der Operationen ab, die durch die ISA, die gegenwärtig
betrachtet wird, unterstützt werden. Das heißt, die Daten
operationslogik 154 umfaßt eine Schaltung, um arithmetische
und/oder logische Operationen durchzuführen, die durch die
Datenoperationsinstruktionen innerhalb der gegenwärtig be
trachteten ISA spezifiziert werden. In ähnlicher Weise hängt die
detaillierte Struktur der Abspeicher-/Ausrichtlogik 152 und
des DOU-Crossbar-Schalters 150 von der gegenwärtig be
trachteten ISA ab. Die detaillierte Struktur der Datenopera
tionslogik 154, der Abspeicher-/Ausrichtlogik 152 und der DOU-
Crossbar-Schalters 150 gemäß des ISA-Typs wird im folgenden
unter Bezugnahme auf die Fig. 9A und 9B beschrieben.
Bezüglich einer Außenschleifen-ISA ist die DOU 62 vorzugsweise
konfiguriert, um serielle Operationen bezüglich der Daten
durchzuführen. Nimmt man Bezug auf die Fig. 9A, so ist ein
Blockdiagramm bzw. ein Blockschaltbild einer ersten
beispielhaften Ausführungsform der DOU 61 gezeigt, die für die
Realisierung einer Allzweck-Außenschleifen-ISA konfiguriert
ist. Eine Allzwecke-Außenschleifen-ISA erfordert eine
Hardware, die konfiguriert ist, um mathematische Operationen,
wie z. B. Multiplikation, Addition und Subtraktion; boolsche
Operationen, wie z. B. AND bzw. UND, ODER bzw. OR und NICHT
bzw. NOT; Schiebeoperationen; und Rotationsoperationen bzw.
Drehoperationen durchzuführen. Somit weist die
Datenoperationslogik 154 für die Realisierung einer Allzweck-
Außenschleifen-ISA vorzugsweise eine herkömmliche
arithmetische Logikeinheit bzw. "Arithmetic-Logic Unit"
(ALU)/Verschiebeeinrichtung 184 mit einem ersten Eingang,
einem zweiten Eingang, einem Steuereingang und einem Ausgang
auf. Die Abspeicher-/Ausrichtlogik 152 umfaßt vorzugsweise
einen ersten RAM 180 und einen zweiten RAM 182, von denen
jeder einen Dateneingang, einen Datenausgang, einen Adreß-
Wähleingang und einen Freigabeeingang bzw. Enable-Eingang
aufweist. Der DOU-Crossbar-Schalter 150 umfaßt vorzugsweise
ein herkömmliche Crossbar-Schaltnetzwerk mit zwei bidirek
tionalen und unidirektionalen Crossbar-Verbindungen und mit
Eingängen und Ausgängen, die zuvor unter Bezugnahme auf die
Fig. 8 beschrieben wurden. Fachleute werden erkennen, daß eine
wirksame Realisierung des DOU-Crossbar-Schalters 150 für eine
Außenschleifen-ISA, Multiplexer, Drei-Zustands-Puffer, CLB-
basierte Logik, direkte Verdrahtung oder Untersätze bzw.
Subsets von zuvor erwähnten Elementen beinhalten, die in
jeglicher Kombination durch die Wirkung bzw. Eigenschaft der
rekonfigurierbaren Kopplungseinrichtung bzw.
rekonfigurierbaren Verbindungseinrichtung verbunden werden.
Bezüglich einer Außenschleifen-ISA wird der DOU-Crossbar-
Schalter 150 realisiert bzw. implementiert, um eine serielle
Datenbewegung in einer minimal möglichen Zeit voranzutreiben
bzw. zu beschleunigen, während ebenso eine maximale Anzahl von
einzigen Datenbewegungs-Crossbar-Verbindungen bereitgestellt
werden, um verallgemeinerte Außenschleifen-Instruktionstypen
zu unterstützen.
Der Dateneingang des ersten RAM′s 180 ist ebenso wie der
Dateneingang des zweiten RAM′s 182 über die dritte Daten
leitung 162 mit dem Datenausgang des DOU-Crossbar-Schalters
150 verbunden. Die Adressenauswahleingänge des ersten RAM′s
180 und des zweiten RAM′s 182 sind verbunden, um Registerfi
leadressen von der IFU 60 über die dritte Steuerleitung 74 zu
empfangen. In ähnlicher Weise sind die Freigabeeingänge des
ersten und des zweiten RAM′s 180, 182 verbunden, um DOU-
Steuersignale über die erste Steuerleitung 70 zu empfangen.
Die Datenausgänge des ersten bzw. des zweiten RAM′s 180, 182
sind mit dem ersten bzw. dem zweiten Eingang der ALU/Ver
schiebeeinrichtung 184 verbunden und sind ebenso mit dem
zweiten Daten-Feedback-Eingang des DOU-Crossbar-Schalters 150
verbunden. Der Steuereingang der ALU/Verschiebeeinrichtung 184
ist verbunden, um die DOU-Steuersignale über die erste
Steuerleitung 70 zu empfangen, und der Ausgang der
ALU/Verschiebeeinrichtung 184 ist mit dem ersten Datenrück
führeingang des DOU-Crossbar-Schalters 150 verbunden. Die
Verbindungen zu den übrigen Eingängen und Ausgängen des DOU-
Crossbar-Schalters 150 sind mit jenen identisch, die oben
unter Bezugnahme auf die Fig. 8 beschrieben wurden.
Um die Ausführung einer Datenoperationsinstruktion zu er
leichtern, gibt die IFU 60 DOU-Steuersignale, RF-Adressen und
Konstante zu der DOU 61 während einem der beiden ISS-Zustände
E oder M aus. Der erste bzw. zweite RAM 180, 182 liefern ein
erstes bzw. zweites Registerfile zur temporären
Datenspeicherung. Individuelle Adressen innerhalb des ersten
und des zweiten RAM′s 180, 182 werden gemäß den RF-Adressen
ausgewählt, die bei dem jeweiligen Adresseneingang jedes RAM′s
empfangen werden. In ähnlicher Weise wird das Laden des ersten
und zweiten RAM′s 180, 182 durch die DOU-Steuersignale
gesteuert, die jedes RAM 180, 182 bei seinem
Schreibfreigabeeingang empfängt. Bei der bevorzugten Ausfüh
rungsform beinhaltet wenigstens ein RAM 180, 182 eine Hin
durchreichfähigkeit, um den Transfer von Daten von dem DOU-
Crossbar-Schalter 150 direkt zu der ALU/Verschiebeeinrichtung
184 zu erleichtern. Die ALU/Verschiebeeinrichtung 184 führt
arithmetische, logische oder Schiebeoperationen bezügliche
eines ersten Operanden aus, der von dem ersten RAM 180
empfangen wird, und/oder bezüglich eines zweiten Operanden
aus, der von dem zweiten RAM 182 empfangen wird, und zwar
unter der Verwaltung der DOU-Steuersignale, die bei ihrem
Steuereingang empfangen werden. Der DOU-Crossbar-Schalter 150
leitet selektiv folgendes: 1) Daten zwischen dem Speicher 34
und dem ersten und zweiten RAM 180, 182; 2) Ergebnisse von der
ALU/Verschiebeeinrichtung 184 zu dem ersten und zweiten RAM
180, 182 oder dem Speicher 34; 3) Daten, die in dem ersten
oder zweiten RAM 180, 182 gespeichert sind, zu dem Speicher
34; und 4) Konstanten von der IFU 60 zu dem ersten und zweiten
RAM 180, 182. Wie zuvor beschrieben wurde, leitet in dem Fall,
daß entweder der erste oder der zweite RAM 180, 182 eine
Hindurchreichfähigkeit beinhaltet, der DOU-Crossbar-Schalter
150 ebenso selektiv Daten von dem Speicher 34 oder dem Ausgang
der ALU/Verschiebeeinrichtung direkt zurück in die
ALU/Verschiebeeinrichtung 184. Der DOU-Crossbar-Schalter 150
führt eine bestimmte Leitweg-Operation bzw.
Wegeermittlungsoperation gemäß den DOU-Steuersignalen durch,
die bei seinem Steuereingang empfangen werden. Bei der
bevorzugten Ausführungsform wird die ALU/Verschiebeeinrichtung
184 realisiert, indem Logikfunktionsgeneratoren innerhalb
eines Satzes von CLBs und eine Schaltung, die auf
mathematische Operationen innerhalb der rekonfigurierbaren
Logikvorrichtung ausgerichtet ist, verwendet werden. Der erste
und zweite RAM 180, 182 werden vorzugsweise realisiert, indem
die Datenspeicherschaltung, die in einem Satz von CLBs
vorliegt, verwendet wird, und der DOU-Crossbar-Schalter 150
wird vorzugsweise in einer Art und Weise realisiert, wie
vorstehend beschrieben.
Es wird nun auf die Fig. 9B Bezug genommen. Dort ist ein
Blockdiagramm bzw. ein Blockschaltbild einer zweiten bei
spielhaften Ausführungsform der DOU 63 gezeigt, die für die
Realisierung einer Innenschleifen-ISA konfiguriert ist. Im
allgemeinen unterstützt eine Innenschleifen-ISA relativ wenige
spezialisierte Operationen und wird vorzugsweise verwendet,
um einen allgemeinen Satz von Operationen bezüglich potentiell
großer Datensätze durchzuführen. Optimale
Rechenleistungsfähigkeit wird deshalb für eine Innenschleifen-
ISA durch eine Hardware erzeugt, die konfiguriert ist, um
Operationen parallel durchzuführen. Somit sind bei der zweiten
beispielhaften Ausführung der DOU 63 die Datenoperationslogik
154, die Abspeicher-/Ausrichtlogik 152 und der DOU-Crossbar-
Schalter 150 konfiguriert, um Fließband-Berechnungen bzw.
gepipelinete Berechnungen durchzuführen. Die Daten
operationslogik 154 umfaßt eine Fließband-Funktionseinheit
bzw. gepipelinte Funktionseinheit 194 mit einer Anzahl von
Eingängen, einem Steuereingang und einem -ausgang. Die
Abspeicher-/Ausrichtlogik 152 umfaßt folgendes: 1) einen Satz
von herkömmlichen Flipflop-Feldern 192, wobei jedes Flipflop-
Feld 192 einen Dateneingang, einen Datenausgang und einen
Steuereingang umfaßt; und 2) eine Datenauswähleinrichtung 190
mit einem Steuereingang, einem Dateneingang und einer Anzahl
von Datenausgängen, die der Anzahl der vorliegenden Flipflop-
Felder 192 entsprechen. Der DOU-Crossbar-Schalter 150 umfaßt
ein herkömmliches Crossbar-Schaltnetzwerk mit Duplex-
unidirektionalen Crossbar-Verbindungen. Bei der zweiten
beispielhaften Ausführungsform der DOU 63 beinhaltet der DOU-
Crossbar-Schalter 150 vorzugsweise die Eingänge und Ausgänge,
die vorhergehend unter Bezugnahme auf die Fig. 8 beschrieben
wurden, und zwar mit Ausnahme des zweiten
Datenrückführeingangs. In einer Art und Weise, die dem
Außenschleifen-ISA-Fall analog ist, kann eine wirksame
Realisierung des DOU-Crossbar-Schalters 150 für eine
Innenschleifen-ISA, Multiplexer, Drei-Zustands-Puffer, eine
CLB-basierte Logik, eine direkte Verdrahtung bzw. eine direkte
Leitung oder einen Untersatz der zuvor erwähnten Elemente, die
in rekonfigurierbarer Art und Weise verbunden sind,
beinhalten. Für eine Innenschleifen-ISA ist der DOU-Crossbar-
Schalter 150 vorzugsweise realisiert, um eine parallele
Datenbewegung innerhalb eines minimalen Zeitaufwands zu
maximieren, während ebenso eine minimale Anzahl von einzigen
Datenbewegungs-Crossbar-Verbindungen bereitgestellt wird, um
Innenschleifen-ISA-Instruktionen zu unterstützen, die eine
starke Betonung der Fließbandbearbeitung aufweisen bzw. die
stark "gepipelined" sind.
Der Dateneingang der Datenauswähleinrichtung 190 ist mit dem
Datenausgang des DOU-Crossbar-Schalters 150 über die erste
Datenleitung 162 verbunden. Der Steuereingang der Datenaus
wähleinrichtung 190 ist verbunden, um RF-Adressen über die
dritte Steuerleitung 74 zu empfangen, und jeder Ausgang der
Datenauswähleinrichtung 190 ist mit einem entsprechenden Flip
flop-Feld-Dateneingang verbunden. Der Steuereingang eines
jeden Flipflop-Feldes 192 ist verbunden, um DOU-Steuersignale
über die erste Steuerleitung 70 zu empfangen, und jeder Flip
flop-Feld-Datenausgang ist mit einem Eingang der
Funktionseinheit 194 verbunden. Der Steuereingang der Funk
tionseinheit 194 ist verbunden, um DOU-Steuersignale über die
erste Steuerleitung 70 zu empfangen, und der Ausgang der
Funktionseinheit 194 ist mit dem ersten Datenrückführeingang
des DOU-Crossbar-Schalters 150 verbunden. Die Verbindungen der
verbleibenden Eingänge und Ausgänge des DOU-Crossbar-Schalters
150 sind mit jenen identisch, die zuvor unter Bezugnahme auf
die Fig. 8 beschrieben wurden.
Im Betrieb führt die Funktionseinheit 194 Fließband-Opera
tionen bzw. gepipelinete Operationen bezüglich der Daten
durch, die bei ihren Dateneingängen in Übereinstimmung mit den
DOU-Steuersignalen empfangen werden, die bei ihrem Steu
ereingang empfangen werden. Fachleute werden erkennen, daß die
Funktionseinheit 194 eine Multiplikations-Akkumulations
einheit, eine Schwellen-Bestimmungseinheit, eine Bild-Rota
tionseinheit, eine Kantenverstärkungseinheit bzw. eine Rand
verstärkungseinheit oder irgendeine Art von Funktionseinheit
sein kann, die geeignet ist, um Fließband-Operationen bzw.
gepipelinete Operationen bezüglich der aufgeteilten bzw.
partitionierten Daten durchzuführen. Die Datenauswählein
richtung 190 leitet Daten von dem Eingang des DOU-Crossbar-
Schalters 150 in ein gegebenes Flipflop-Feld 192 gemäß den RF-
Adressen, die bei seinem Steuereingang empfangen werden. Jedes
Flipflop-Feld 192 beinhaltet vorzugsweise einen Satz von
sequentiell gekoppelten Datenlatches bzw. Datenhalteein
richtungen, um räumlich und temporär Daten relativ zu dem
Dateninhalt eines anderen Flipflop-Feldes 192 auszurichten,
und zwar unter der Verwaltung der Steuersignale, die bei
seinem Steuereingang empfangen werden. Der DOU-Crossbar-
Schalter 150 leitet selektiv folgendes: 1) Daten von dem
Speicher 34 zu der Datenauswähleinrichtung 190; 2) Ergebnisse
von der Multiplikations-/Akkumulationseinheit 194 zu der
Datenauswähleinrichtung 190 oder dem Speicher 34; und 3)
Konstante von der IFU 60 zu der Datenauswähleinrichtung 190.
Fachleute werden erkennen, daß eine Innenschleifen-ISA einen
Satz von eingebauten bzw. "built-in"-Konstanten aufweist. Bei
der Realisierung einer derartigen Innenschleifen-ISA
beinhaltet die Abspeicher-/Ausrichtlogik 154 vorzugsweise ein
ROM auf CLB-Basis bzw. ein CLB-basiertes ROM, das eingebaute
Konstanten enthält, wodurch das Erfordernis beseitigt wird,
die Konstanten von der IFU 60 in die Abspeicher-/Ausrichtlogik
152 über den DOU-Crossbar-Schalter 150 zu leiten. Bei der
bevorzugten Ausführungsform ist die Funktionseinheit 194
vorzugsweise implementiert bzw. realisiert, indem
Logikfunktionsgeneratoren und eine Schaltung, die auf
mathematische Operationen innerhalb eines Satzes von CLBs
ausgerichtet ist, verwendet werden. Jedes Flipflop-Feld 192
ist vorzugsweise realisiert, indem Flipflops innerhalb eines
Satzes von CLBs verwendet werden, und die
Datenauswähleinrichtung 190 ist vorzugsweise implementiert,
indem Logikfunktionsgeneratoren und eine Datenauswählschaltung
innerhalb eines Satzes von CLBs verwendet werden. Schließlich
wird die Codier- und Decodierschaltung 150 vorzugsweise in der
zuvor für eine Innenschleifen-ISA beschriebenen Art und Weise
realisiert.
Nimmt man nun Bezug auf Fig. 10, so ist ein Blockdiagramm
einer bevorzugten Ausführungsform der Adressenoperationsein
heit 64 gezeigt. Die AOU 64 führt Operationen bezüglich der
Adressen gemäß der AOU-Steuersignale, RF-Adressen und Kon
stanten durch, die von der IFU 60 empfangen werden. Die AOU
64 umfaßt einen AOU-Crossbar-Schalter 200, eine Abspeicher-
/Zähllogik 202, eine Adressenoperationslogik 204 und einen
Adressen-Multiplexer 206. Sowohl der AOU-Crossbar-Schalter 200
als auch die Abspeicher-/Zähllogik 202 und die Adressen
operationslogik 204 und der Adressenmultiplexer 206 umfassen
einen Steuereingang, der mit dem zweiten Steuereingang des IFU
60 über die zweiten Steuerleitung 72 verbunden ist. Der AOU-
Crossbar-Schalter 200 umfaßt einen bidirektionalen Datenport,
der den bidirektionalen Datenport des AOU ausbildet; einen
Adressen-Rückführeingang, der mit einem Adressenausgang der
Adressenoperationslogik 204 über eine erste Adressenleitung
201 verbunden ist; einen Konstanteneingang, der mit der
dritten Steuerleitung 74 verbunden; und einen Adressenausgang,
der mit einem Adresseneingang über der Abspeicher-/Zähllogik
202 über eine zweite Adressenleitung 212 verbunden ist.
Zusätzlich zu seinem Adresseneingang und Steuereingang, weist
die Abspeicher-/Zähllogik 202 einen RF-Adresseneingang auf,
der mit der dritten Steuerleitung 74 verbunden ist, und einen
Adressenausgang auf, der mit einem Adresseneingang der
Adressenoperationslogik 204 über eine dritte Adressenleitung
214 verbunden ist. Der Adressenmultiplexer 206 umfaßt einen
ersten Eingang, der mit der ersten Adressenleitung 210
verbunden ist, einen zweiten Eingang, der mit der dritten
Adressenleitung 214 verbunden ist, und einen Ausgang, der den
Adressenausgang der AOU 64 ausbildet.
Die Adressenoperationslogik 204 führt arithmetische Opera
tionen bezüglich der Adressen durch, die bei ihrem Adressen
eingang empfangen werden, und zwar unter der Verwaltung der
AOU-Steuersignale, die bei ihrem Steuereingang empfangen
werden. Die Abspeicher-/Zähllogik 202 stellt eine temporäre
Speicherung von Adressen bereit und adressiert Rechenergeb
nisse. Der AOU-Crossbar-Schalter 200 erleichtert das Laden von
Adressen von dem Speicher 34, den Transfer von Ergebnissen,
die durch die Adressenoperationslogik 204 ausgegeben werden,
zu der Abspeicher-/Zähllogik 202 oder dem Speicher 34, und das
Laden von Konstanten, die durch die IFU 60 ausgegeben werden,
in die Abspeicher-/Zähllogik 202 in Übereinstimmung mit den
AOU-Steuersignalen, die bei ihrem Eingang empfangen werden.
Der Adressenmultiplexer 206 gibt selektiv eine Adresse, die
von der Abspeicher-/Zähllogik 202 oder der
Adressenoperationslogik 200 empfangen wird, zu dem Adressen
ausgang der AOU 64 unter der Verwaltung des AOU-Steuersignals
aus, das bei seinem Steuereingang empfangen wird. Bei der
bevorzugten Ausführungsform hängt die detaillierte Struktur
des AOU-Crossbar-Schalters 200, der Abspeicher-/Ausrichtlogik
202 und der Adressenoperationseinheit 204 von dem Typ der ISA
ab, die gegenwärtig betrachtet wird, wie im folgenden unter
Bezugnahme auf die Fig. 11A und 11B beschrieben wird.
Es wird nun auf die Fig. 11A Bezug genommen. Dort ist ein
Blockschaltbild einer ersten beispielhaften Ausführungsform
der AOU 65 gezeigt, die für die Realisierung einer Allzweck-
Außenschleifen-ISA konfiguriert ist. Eine Allzweck-Außen
schleifen-ISA erfordert eine Hardware zur Durchführung von
Operationen, wie z. B. Addition, Subtraktion, Inkrementation und
Dekrementation bezüglich der Inhalte eines Programmzählers und
bezüglich Adressen, die in der Abspeicher-/Zähllogik 202
gespeichert sind. Bei der ersten beispielhaften Ausführungs
form der AOU 65 umfaßt die Adressenoperationslogik 204 vor
zugsweise ein Programmadressenregister bezüglich nächster
Befehle bzw. ein "Next Instruction Program Address Register"
(NIPAR) 232 mit einem Eingang, einem Ausgang und einem Steu
ereingang; wobei eine arithmetische Einheit 234 einen ersten
Eingang, einen zweiten Eingang, einen dritten Eingang, einen
Steuereingang und einen Ausgang umfaßt; und ein Multiplexer
230 einen ersten Eingang, einen zweiten Eingang, einen Steu
ereingang und einen Ausgang umfaßt. Die Abspeicher-/Zähllogik
202 umfaßt vorzugsweise einen dritten RAM 220 und einen
vierten RAM 222, wobei jeder einen Eingang, einen Ausgang und
einen Adressenauswähleingang und einen Freigabeeingang umfaßt.
Der Adressenmultiplexer 206 umfaßt vorzugsweise einen
Multiplixer mit einem ersten Eingang, einem zweiten Eingang,
einem dritten Eingang, einem Steuereingang und einem Ausgang.
Der AOU-Crossbar-Schalter 200 umfaßt vorzugsweise ein
herkömmliches Crossbar-Schaltnetzwerk mit Duplex-
unidirektionalen Crossbar-Verbindungen und mit den Eingängen
und Ausgängen, die zuvor unter Bezugnahme auf die Fig. 10
beschrieben wurden. Eine wirksame Realisierung des AOU-
Crossbar-Schalters 200 kann Multiplexer, Drei-Zustandspuffer,
eine CLB-basierte Logik, eine Direktverdrahtung bzw. eine
Direktleitung oder irgendeinen Untersatz von derartigen
Elemente aufweisen, die durch rekonfigurierbare Verbindungen
verbunden sind. Für eine Außenschleifen-ISA wird der AOU-
Crossbar-Schalter vorzugsweise realisiert, um die Bewegung
bezüglich serieller Adressen zu maximieren, und zwar innerhalb
eines minimalen Zeitaufwands, während ebenso eine maximale
Anzahl von einzigen bzw. eindeutigen Adressenbewegungs-
Crossbar-Verbindungen bereitgestellt wird, um verallgemeinerte
Außenschleifen- ISA-Adressenoperationsinstruktionen zu unter
stützen.
Der Eingang des dritten RAM′s 220 und der Eingang des vierten
RAM′s 222 sind jeweils mit dem Ausgang des AOU-Crossbar-
Schalters 200 über die zweite Adressenleitung 212 verbunden.
Die Adressenauswahleingänge des dritten und vierten RAM′s 220,
222 sind verbunden, um RF-Adressen von der IFU 60 über die
dritte Steuerleitung 74 zu empfangen, und die Freigabeeingänge
des ersten und zweiten RAM′s 220, 222 sind verbunden, um AOU-
Steuersignale über die zweite Steuerleitung 72 zu empfangen.
Der Ausgang des dritten RAM′s 220 ist mit dem ersten Eingang
des Multiplexers 230, dem ersten Eingang der arithmetischen
Einheit 234 und dem ersten Eingang des Adressenmultiplexers
206 verbunden. In ähnlicher Weise ist der Ausgang des vierten
RAM′s 222 mit dem zweiten Eingang des Multiplexers 230, dem
zweiten Eingang der arithmetischen Einheit 234 und dem zweiten
Eingang des Adressenmultiplexers 206 verbunden. Die
Steuereingänge des Multiplexers 230, der NIPAR 232 und der
arithmetischen Einheit 234 sind jeweils mit der zweiten
Steuerleitung 72 verbunden. Der Ausgang der arithmetischen
Einheit 234 bildet den Ausgang der Adressenoperationslogik 204
und ist deshalb mit dem Adressen-Rückführeingang des AOU-
Crossbar-Schalters 200 und dem dritten Eingang des
Adressenmultiplexers 206 verbunden. Die Verbindungen zu den
übrigen Eingängen und Ausgängen des AOU-Crossbar-Schalters 200
und des Adressenmultiplexers 206 sind mit jenen identisch, die
zuvor unter Bezugnahme auf die Fig. 10 beschrieben wurden.
Um das Ausführen einer Adressen-Operationsinstruktion zu
erleichtern, gibt die IFU 60 AOU-Steuersignale, RF-Adressen
und Konstante zu der AOU 64 während eines der beiden ISS-
Zustände E oder M aus. Der dritte bzw. vierte RAM 220, 222
liefern ein erstes bzw. ein zweites Registerfile für die
temporäre Adressenspeicherung. Individuelle Speicherstellen
innerhalb des dritten und vierten RAM′s 220, 222 werden gemäß
den RF-Adressen ausgewählt, die bei den jeweiligen Adressen-
Auswähl-Eingang jedes RAM′s empfangen werden. Das Laden des
dritten und vierten RAM′s 220, 222 wird durch die AOU-
Steuersignale gesteuert, die das jeweilige RAM 220, 222 bei
seinem Schreib-Freigabeeingang empfängt. Der Multiplexer 230
leitet selektiv Adressen, die durch den dritten und vierten
RAM 220, 222 ausgegeben werden, zu der NIPAR 232, und zwar
unter der Verwaltung der AOU-Steuersignale, die bei seinem
Steuereingang empfangen werden. Der NIPAR 232 lädt eine
Adresse, die von dem Ausgang des Multiplexers 230 empfangen
wird, und inkrementiert ihren Inhalt in Antwort auf das AOU-
Steuersignal, das von seinem Steuereingang empfangen wird. Bei
der bevorzugten Ausführungsform speichert der NIPAR 232 die
Adresse der nächsten Programminstruktion, die auszuführen ist.
Die arithmetische Einheit 234 führt arithmetische Operationen
einschließlich Addition, Subtraktion, Inkrementation,
Dekrementation bezüglich der Adressen durch, die von dem
dritten und vierten RAM 220, 222 empfangen werden, und/oder
bezüglich des Inhalts des NIPAR 232. Der AOU-Crossbar-Schalter
200 leitet selektiv folgendes: 1) Adressen von dem Speicher
34 zu dem dritten und vierten RAM 220, 222; und 2) Ergebnisse
der Adressenberechnungen, die durch die arithmethische Einheit
234 ausgegeben werden, zu dem Speicher 34 oder dem dritten und
vierten RAM 220, 222. Der AOU-Crossbar-Schalter 200 führt eine
bestimmte Leitwegoperation bzw. Wegermittlungsoperation gemäß
der AOU-Steuersignale durch, die bei seinem Steuereingang
empfangen werden. Der Adressenmultiplexer 206 leitet selektiv
die Adressen, die durch das dritte RAM 220 ausgegeben werden,
Adressen, die durch das vierte RAM 222 ausgegeben werden, oder
die Ergebnisse von Adressenberechnungen, die durch die
arithmetische Einheit 234 ausgegeben werden, zu dem
Adressenausgang des AOU, und zwar unter der Verwaltung des
AOU-Steuersignals, das bei seinem Steuereingang empfangen
wird.
Bei der bevorzugten Ausführungsform werden der dritte und
vierte RAM 220, 222 jeweils realisiert, indem die Datenspei
cherschaltung, die innerhalb eines Satzes von CLBs vorliegt,
verwendet wird. Der Multiplexer 230 und der Adressenmulti
plexer 206 werden jeweils vorzugsweise realisiert, indem eine
Datenauswählschaltung verwendet wird, die innerhalb eines
Satzes von CLBs vorhanden ist, und der NIPAR 232 wird
vorzugsweise realisiert, indem die Datenspeicherschaltung, die
innerhalb eines Satzes von CLBs vorliegt, verwendet wird. Die
arithmetische Einheit 234 wird vorzugsweise realisiert, indem
logische Funktionsgeneratoren und eine Schaltung, die auf
mathematische Operationen innerhalb eines Satzes von CLBs
ausgerichtet ist, verwendet wird. Schließlich wird der AOU-
Crossbar-Schalter 200 vorzugsweise in einer zuvor
beschriebenen Art und Weise implementiert.
Es wird nun auf die Fig. 11B Bezug genommen. Dort ist ein
Blockschaltbild einer zweiten exemplarischen Ausführungsform
der AOU 66 gezeigt, die für die Implementation einer Innen
schleifen-ISA konfiguriert ist. Vorzugsweise erfordert eine
Innenschleifen-ISA eine Hardware zur Durchführung eines sehr
beschränkten Satzes von Adressenoperationen und eine Hardware
zur Aufrechterhaltung wenigstens eines Quellenadressenzeigers
und einer entsprechende Anzahl von Bestimmungsadressenzeigern.
Arten von Innenschleifenverarbeitung, für die eine sehr
beschränkte Anzahl von Adressenoperationen oder sogar eine
einzige Adressenoperation benötigt werden, beinhalten Block-,
Raster- oder Serpentinenoperationen bezüglich der Bilddaten;
Bit-Umkehroperationen; Operationen bezüglich zirkularer
Pufferdaten; und Parsingoperationen bezüglich variabler
Datenmengen. Hier wird eine einzige Adressenoperation, nämlich
eine Inkrementoperation, betrachtet. Fachleute werden
erkennen, daß Hardware, die Inkrementoperationen durchführt,
ebenso inhärent in der Lage sein kann, Dekrementoperationen
durchzuführen, wodurch eine zusätzliche
Adressenoperationsfähigkeit bereitgestellt wird. Bei der
zweiten beispielhaften Ausführungsform der AOU 66 umfaßt die
Abspeicher-/Zähllogik 202 wenigstens ein Quellen
adressenregister 202 mit einem Eingang, einem Ausgang und
einem Steuereingang; wenigstens ein Bestimmungsadressenregi
ster 254 mit einem Eingang, einem Ausgang und einem Steuer
eingang; und eine Datenauswähleinrichtung 250 mit einem
Eingang, einem Steuereingang und einer Anzahl von Ausgängen,
die gleich der gesamten Anzahl der vorliegenden Quellen- und
Bestimmungsadressenregisters 252, 254 ist. Hier werden ein
Einzelquellen-Adressenregister 252 und ein Einzelbestimmungs-
Adressenregister 254 betrachtet, und somit hat die
Datenauswähleinrichtung 250 einen ersten Ausgang und einen
zweiten Ausgang. Die Adressenoperationslogik 204 umfaßt ein
NIPAR 232 mit einem Eingang, einem Ausgang und einem Steuer
ausgang; einen Multiplexer 260 mit einer Anzahl von Eingängen,
die gleich der Anzahl von Datenauswählausgängen ist, einen
Steuereingang und einen Ausgang. Hier umfaßt der Multiplexer
260 einen ersten Eingang und einen zweiten Eingang. Der
Adressenmultiplexer 206 umfaßt vorzugsweise einen Multiplexer
mit einer Anzahl von Eingängen, die um 1 größer ist als die
Anzahl von Datenauswahlausgängen, einem Steuereingang und
einem Ausgang. Somit umfaßt der Adressenmultiplexer 206 einen
ersten Eingang, einen zweiten Eingang und einen dritten
Eingang. Der AOU-Crossbar-Schalter 200 umfaßt vorzugsweise ein
herkömmliches Crossbar-Schaltnetzwerk mit bidirektionalen und
unidirektionalen Crossbarverbindungen und mit den Eingängen
und Ausgängen, die zuvor unter Bezugnahme auf die Fig. 10
beschrieben wurden. Eine wirksame Realisierung des AOU-
Crossbar-Schalters 200 kann Multiplexer, Drei-Zustands-Puffer,
eine CLB-basierte Logik, direkte Verdrahtung bzw. eine direkte
Leitung oder sonstige Untersätze von derartigen Elementen
enthalten, die durch rekonfigurierbare Verbindungen verbunden
sind. Für eine Innenschleifen-ISA wird der AOU-Crossbar-
Schalter 200 vorzugsweise realisiert, um eine parallele
Adressenbewegung in einer minimal möglichen Zeit zu
maximieren, während ebenso eine minimale Anzahl von einzigen
bzw. eindeutigen Adressen-Bewegungs-Crossbar-Verbindungen
bereitgestellt werden, um Innenschleifen-Adressenoperationen
zu unterstützen.
Der Eingang der Datenauswähleinrichtung 250 ist mit dem
Ausgang des AOU-Crossbar-Schalters 200 verbunden. Der erste
bzw. zweite Ausgang der Datenauswähleinrichtung 250 sind mit
dem Eingang des Quellenadressenregisters 252 bzw. mit dem
Eingang des Bestimmungsadressenregisters 254 verbunden. Die
Steuereingänge des Quellenadressenregisters 252 und des
Bestimmungsadressenregisters 254 sind verbunden, um AOU-
Steuersignale über die zweite Steuerleitung 72 zu empfangen.
Der Ausgang des Quellenadressenregisters 252 ist mit dem
ersten Eingang des Multiplexers 260 und dem ersten Eingang des
Adressenmultiplexers 206 verbunden. In ähnlicher Weise ist der
Ausgang des Bestimmungsregisters 254 mit dem zweiten Eingang
des Multiplexers 254 und dem zweiten Eingang des
Adressenmultiplexers 206 verbunden. Der Eingang des NIPAR 232
ist mit dem Ausgang des Multiplexers 260 verbunden, der
Steuereingang des NIPAR 232 ist verbunden, um AOU-Steuersi
gnale über die zweite Steuerleitung zu empfangen, und der
Ausgang des NIPAR 232 ist sowohl mit dem Adressen-
Rückführeingang bzw. Adressen-Feedback-Eingang des AOU-
Crossbar-Schalters 200 als auch mit dem dritten Eingang des
Adressenmultiplexers 206 verbunden. Die Verbindungen zu den
übrigen Eingängen und Ausgängen des AOU-Crossbar-Schalters 200
sind mit den zuvor unter Bezugnahme auf die Fig. 10
beschriebenen identisch.
Im Betrieb leitet die Datenauswähleinrichtung 250 Adressen,
die von dem AOU-Crossbar-Schalter empfangen werden, zu dem
Quellenadressenregister 252 oder dem Bestimmungsadressenre
gister 254 gemäß den RF-Adressen, die bei ihrem Steuereingang
empfangen werden. Das Quellenadressenregister 252 lädt eine
Adresse, die an ihrem Eingang vorliegt, als Antwort auf das
AOU-Steuersignal, das bei seinem Steuereingang vorliegt. Das
Bestimmungsadressenregister 254 lädt eine Adresse, die bei
seinem Eingang vorliegt, in einer analogen Art und Weise. Der
Multiplexer 260 leitet eine Adresse, die von dem
Quellenadressenregister 252 oder dem Bestimmungsadressenre
gister 254 empfangen wird, zu dem Eingang des NIPAR 232 gemäß
den AOU-Steuersignalen, die bei seinem Steuereingang empfangen
werden. Das NIPAR 232 lädt eine Adresse, die bei seinem
Eingang vorliegt, inkrementiert ihren Inhalt oder
dekrementiert ihren Inhalt in Antwort auf die AOU-Steuersi
gnale, die bei seinem Steuereingang empfangen werden. Der AOU-
Crossbar-Schalter 200 leitet selektiv folgendes: 1) Adressen
von dem Speicher 34 zu der Datenauswähleinrichtung 250; und
2) die Inhalte des NIPAR 232 zu dem Speicher 34 oder der
Datenauswähleinrichtung 250. Der AOU-Crossbar-Schalter 200
führt eine bestimmte Leitwegoperation bzw.
Wegeermittlungsoperation gemäß den AOU-Steuersignal durch, die
bei seinem Eingang empfangen werden. Der Adressenmultiplexer
206 leitet selektiv die Inhalte des Quellenadressenregisters
252, des Bestimmungsadressenregisters 254 oder des NIPAR 232
zu dem Adressenausgang des AOU′s, und zwar unter der
Verwaltung der AOU-Steu 84289 00070 552 001000280000000200012000285918417800040 0002019614991 00004 84170ersignale, die aus einem Steuereingang
empfangen werden.
Bei der bevorzugten Ausführungsform sind sowohl das Quellen
adressenregister 252 als auch das Bestimmungsadressenregister
254 verwirklicht, indem die Datenspeicherschaltung verwendet
wird, die innerhalb eines Satzes von CLBs vorliegt. Das NIPAR
232 wird vorzugsweise verwirklicht, indem eine Inkrement-
/Dekrementlogik und Flipflops innerhalb eines Satzes von CLBs
verwendet werden. Die Datenauswähleinrichtung 250, der
Multiplexer 230 und der Adressenmultiplexer 206 werden jeweils
vorzugsweise verwirklicht, indem eine Datenauswahlschaltung
verwendet wird, die innerhalb eines Satzes von CLBs vorliegt.
Schließlich wird der AOU-Crossbar-Schalter 200 vorzugsweise
in der zuvor für einen Innenschleifen-ISA beschriebenen Art
und Weise verwirklicht. Fachleute werden erkennen, daß es bei
bestimmten Anwendungen vorteilhaft sein kann, eine ISA zu
verwenden, die sich auf eine Innenschleifen-AOU-Konfiguration
mit einer Außenschleifen-DOU-Konfiguration oder umgekehrt
verläßt. Zum Beispiel würde eine assoziative String-Such-ISA
vorteilhaft eine Innenschleifen-DOU-Konfiguration mit einer
Außenschleifen-AOU-Konfiguration nutzen. Gemäß einem anderen
Beispiel würde eine ISA zur Durchführung von
Histogrammoperationen vorteilhaft eine Außenschleifen-DOU-
Konfiguration mit einer Innenschleifen-AOU-Konfiguration
nutzen.
Finite bzw. endliche rekonfigurierbare Hardware-Systemelemente
müssen zwischen jedem Element der DRPU 32 zugewiesen werden.
Weil die rekonfigurierbaren Hardware-Systemelemente in ihrer
Anzahl beschränkt sind, beeinflußt bzw. beeinträchtigt die Art
und Weise, in der sie der IFU 60 zugeordnet sind, z. B. den
maximalen Rechenleistungsfähigkeitspegel, der durch die DOU
62 und die AOU 64 erreichbar ist. Die Art und Weise, in der
die rekonfigurierbaren Hardware-Systemelemente zwischen der
IFU 60, der DOU 62 und der AOU 64 zugewiesen sind, variiert
gemäß der Art der ISA, die zu jedem gegebenen Augenblick zu
implementieren ist. Wenn die ISA-Komplexität zunimmt, müssen
mehr rekonfigurierbare Hardware-Systemelemente der IFU 60
zugewiesen werden, um die zunehmend komplexen Decodier- und
Steueroperationen zu erleichtern, was dazu führt, daß weniger
rekonfigurierbare Hardware-Systemelemente zwischen der DOU 62
und der AOU 64 verfügbar bleiben. Somit nimmt die maximale
Rechenleistung, die von der DOU 62 und der AOU 64 erreicht
werden kann, mit der ISA-Komplexität ab. Im allgemeinen wird
eine Außenschleifen-ISA viel mehr Instruktionen aufweisen als
eine Innenschleifen-ISA, und deshalb wird ihre Realisierung
in Termen der Decodier- und Steuerschaltung beträchtlich
komplexer sein. Zum Beispiel würde eine Außenschleifen-ISA,
die einen Allzweck-64-Bit-Prozessor festlegt, viel mehr
Instruktionen aufweisen als eine Innenschleifen-ISA, die nur
auf Datenkomprimierung ausgerichtet ist.
Nimmt man nun Bezug auf die Fig. 12A, so ist ein Diagramm
gezeigt, das eine examplarische Zuweisung von rekonfigurier
baren Hardware-Systemelementen zwischen der IFU 60, der DOU
62 und der AOU 64 für eine Außenschleifen-ISA zeigt. Bei der
beispielhaften Zuweisung von rekonfigurierbaren Hardware-
Systemelementen für die Außenschleifen-ISA werden der IFU 60,
der DOU 62 und der AOU 64 jeweils ein Drittel der verfügbaren
rekonfigurierbaren Hardware-Systemelemente bzw. Hardware-
Ressourcen zugewiesen. Für den Fall, daß die DRPU 32
rekonfiguriert werden soll, um eine Innenschleifen-ISA zu
verwirklichen, werden weniger rekonfigurierbare Hardware-
Systemelemente benötigt, um die IFU 60 und die AOU 64 zu
verwirklichen, und zwar aufgrund der beschränkten Anzahl von
Instruktionen und Typen von Adressenoperationen, die durch
eine Innenschleifen-ISA unterstützt werden. Nimmt man nun
Bezug auf die Fig. 12B, so ist ein Diagramm gezeigt, daß eine
beispielhafte Zuweisung von rekonfigurierbaren Hardware-
Systemelementen bzw. Hardware-Ressourcen zwischen der IFU 60,
der DOU 62 und der AOU 64 für eine Innenschleifen-ISA zeigt.
Bei der beispielhaften Zuweisung von rekonfigurierbaren
Hardware-Systemelementen für die Innenschleifen-ISA wird die
IFU 60 verwirklicht, indem ungefähr 5-10% der re
konfigurierbaren Hardware-Systemelemente verwendet werden, und
die AOU 64 wird verwirklicht, indem ungefähr 10-25% der
rekonfigurierbaren Hardware-Systemelemente verwendet werden.
Somit verbleiben ungefähr 70-80% der rekonfigurierbaren
Hardware-Systemelemente für die Realisierung der DOU 62
verfügbar. Dies wiederum bedeutet, daß die interne Struktur
der DOU 62, die mit der Innenschleifen-ISA in Zusammenhang
steht bzw. dieser zugeordnet ist, komplexer sein kann und
deshalb eine beträchtlich höhere Leistungsfähigkeit anbietet
als die interne Struktur der DOU 62, die mit der Außen
schleifen-ISA im Zusammenhang steht bzw. dieser zugeordnet
ist.
Fachleute werden erkennen, daß die DRPU 32 in einer
alternativen Ausführungsform entweder die DOU 62 oder die AOU
64 ausschließen kann. Zum Beispiel kann in einer alternativen
Ausführungsform die DRPU 32 nicht eine AOU 64 beinhalten. Die
DOU 62 würde dann für die Durchführungsoperationen bezüglich
sowohl der Daten als auch der Adressen verantwortlich sein.
Unabhängig von der bestimmten DRPU-Ausführung, die betrachtet
wird, muß eine finite bzw. endliche Zahl von
rekonfigurierbaren Hardwarequellen zugewiesen werden, um die
Elemente der DRPU 32 zu realisieren. Die rekonfigurierbaren
Hardware-Systemelemente werden vorzugsweise derart zugewiesen,
daß eine optimale Leistungsfähigkeit oder eine beinahe
optimale Leistungsfähigkeit bezüglich der gegenwärtig be
trachteten ISA relativ zu dem gesamten Raum von verfügbaren
rekonfigurierbaren Hardware-Systemelementen erreicht wird.
Fachleute werden erkennen, daß die detaillierte Struktur eines
jeden Elements der IFU 60, der DOU 62 und der AOU 64 nicht auf
die Ausführungsformen beschränkt ist, die oben beschrieben
wurden. Für eine gegebene ISA ist der entsprechende
Konfigurationsdatensatz vorzugsweise derartig festgelegt, daß
die interne Struktur eines jeden Elements innerhalb der IFU
60, der DOU 62 und der AOU 64 die Rechenleistungsfähigkeit
relativ zu den verfügbaren rekonfigurierbaren Hardware-
Systemelementen maximiert.
Nimmt man nun Bezug auf die Fig. 13, so ist ein Blockdiagramm
einer bevorzugten Ausführungsform einer T-Maschine 14 gezeigt.
Die T-Maschine 14 umfaßt eine zweite lokale Zeitbasiseinheit
300, eine gemeinsame Schnittstellen- und Steuereinheit 302 und
einen Satz von Verbindungs-I/O-Einheiten 304. Die zweite
lokale Zeitbasiseinheit 300 weist einen Zeitsteuereingang auf,
der den Master-Zeitsteuereingang der T-Maschine ausbildet. Die
gemeinsame Schnittstellen- und Steuereinheit 302 umfaßt einen
Zeitsteuereingang, der mit einem Zeitsteuerausgang der zweiten
lokalen Zeitbasiseinheit 300 über eine zweite
Zeitsteuersignalleitung 310 verbunden ist, einen
Adressenausgang, der mit der Adressenleitung 44 verbunden ist,
einen ersten bidirektionalen Datenport, der mit der Speicher-
I/O-Leitung 46 verbunden ist, einen bidirektionalen
Steuerport, der mit der externen Steuerleitung 48 verbunden
ist, und einen zweiten bidirektionalen Datenport, der mit
einem bidirektionalen Datenport einer jeden Verbindungs-I/O-
Einheit 304, die vorliegt, über eine Nach
richtenübertragungsleitung 312 verbunden ist. Jede Verbin
dungs-I/O-Einheit 304 umfaßt einen Eingang, der mit der GPIM
16 über eine Nachrichteneingangsleitung 314 verbunden ist, und
einen Ausgang, der mit der GPIM 16 über eine Nachrich
tenausgangsleitung 316 verbunden ist.
Die zweite lokale Zeitbasiseinheit 300 innerhalb der T-Ma
schine 14 empfängt das Master-Zeitsteuersignal von der Master-
Zeitbasiseinheit 22 und erzeugt ein zweites lokals
Zeitsteuersignal. Die zweite lokale Zeitsteuereinheit 300
liefert das zweite lokale Zeitsteuersignal zu der gemeinsamen
Schnittstellen- und Steuereinheit 302, dadurch wird eine
Zeitsteuerreferenz für die T-Maschine 14 geliefert, auf der
sie beruht. Vorzugsweise ist das zweite lokale Zeitsteu
ersignal phasensynchronisiert mit dem Master-Zeitsteuersignal.
Innerhalb des Systems 10 operiert bzw. arbeitet jede zweite
lokale Zeitbasiseinheit 300 der T-Maschine vorzugsweise mit
einer identischen Frequenz. Fachleute werden erkennen, daß bei
einer alternativen Ausführungsform eine oder mehrere zweite
lokale Zeitbasiseinheiten 300 bei verschiedenen Frequenzen
arbeiten können. Die zweite lokale Zeitbasiseinheit 300 wird
vorzugsweise realisiert, indem eine herkömmliche
phasensynchronisierte Frequenzumwandlungsschaltung verwendet
wird, einschließlich einer CLB-basierten phasen
synchronisierten Detektionsschaltung. Fachleute werden er
kennen, daß bei einer alternativen Ausführungsform die zweite
lokale Zeitbasiseinheit 300 als ein Abschnitt eines Takt
verteilungsbaumes realisiert werden könnte.
Die gemeinsame Schnittstellen- und Steuereinheit 302 verwaltet
den Transfer von Nachrichten zwischen ihrer entsprechenden
S-Maschine 12 und einer spezifizierten Verbindungs-I/O-Einheit
304, wo eine Nachricht ein Kommando bzw. einen Befehl und
mögliche Daten enthält. Bei der bevorzugten Ausführungsform
kann die spezifizierte Verbindungs-I/O-Einheit 304 innerhalb
jeglicher T-Maschine 14 oder I/O-T-Maschine 18 sich innerhalb
oder außerhalb bezüglich des Systems 10 befinden. Bei der vor
liegenden Erfindung ist jeder Verbindungs-I/O-Einheit 304
vorzugsweise eine Verbindungsadresse zugeordnet, die einzig
die Verbindungs-I/O-Einheit 304 identifiziert. Die
Verbindungsadressen zur Verbindung der I/O-Einheiten 304
innerhalb einer gegebenen T-Maschine werden in dem
entsprechenden Architekturbeschreibungsspeicher 101 der
S-Maschine gespeichert.
Die gemeinsame Schnittstellen- und Steuereinheit 302 empfängt
Daten bzw. Befehle von ihrer entsprechenden S-Maschine 12 über
die Speicher-I/O-Leitung 46 bzw. die externe Steuer
signalleitung 48. Vorzugsweise beinhaltet jeder empfangene
Befehl eine Zielverbindungsadresse und einen Befehlscode bzw.
Kommandocode, der einen bestimmten Operationstyp spezifiziert,
der durchgeführt werden soll. In der bevorzugten Ausführungs
form beinhalten die Operationstypen, die einzig bzw. eindeutig
durch die Kommandocodes bzw. Befehlscodes identifiziert
werden, folgendes: 1) Datenleseoperationen; 2) Datenschreib
operationen; und 3) Interruptsignaltransfer einschließlich
Rekonfigurations-Interruptsignaltransfer. Die Zielverbin
dungsadressen identifizieren eine Zielverbindungs-I/O-Einheit
304, zu der Daten und Befehle übertragen werden soll.
Vorzugsweise überträgt die gemeinsame Schnittstellen- und
Steuereinheit 302 jeden Befehl und jegliche in Beziehung
stehende Daten als einen Satz von Nachrichten auf Paketbasis
in einer herkömmlichen Art und Weise, und zwar wo jede
Nachricht die Zielverbindungsadresse und den Befehlscode
enthält.
Zusätzlich zum Empfang der Daten und Befehle von ihrer ent
sprechenden S-Maschine 12 empfängt die gemeinsame
Schnittstellen- und Steuereinheit 302 Nachrichten bzw.
Meldungen von jeder der Verbindungs-I/O-Einheiten 304, die mit
der Nachrichtenübertragungsleitung bzw.
Nachrichtentransferleitung 312 verbunden sind. Bei der
bevorzugten Ausführungsform wandelt die gemeinsame
Schnittstellen- und Steuereinheit 302 eine Gruppe von in
Beziehung stehenden Nachrichten in eine einzige Befehls- und
Datensequenz um. Falls der Befehl auf die DRPU 32 innerhalb
ihrer entsprechenden S-Maschine 12 gerichtet ist, gibt die
gemeinsame Schnittstellen- und Steuereinheit 302 den Befehl
über die externe Steuersignalleitung 48 aus. Falls der Befehl
auf den Speicher 34 innerhalb ihrer entsprechenden S-Maschine
12 gerichtet ist, gibt die gemeinsame Schnittstellen- und
Steuereinheit 302 ein entsprechendes Speichersteuersignal über
die externe Steuersignalleitung 48 und ein
Speicheradressensignal über die Speicheradressenleitung 44
aus. Daten werden über die Speicher-I/O-Leitung 46 übertragen.
Bei der bevorzugten Ausführungsform umfaßt die gemeinsame
Schnittstellen- und Steuereinheit 302 eine Schaltung auf CLB-
Basis, um Operationen analog zu jenen, die durch eine
konventionelle SCI-Schaltungseinheit durchgeführt werden, wie
sie durch den ANSI/IEEE-Standard 1596-1992 definiert ist, zu
realisieren.
Jede Verbindungs-I/O-Einheit 304 empfängt Nachrichten von der
gemeinsamen Schnittstellen- und Steuereinheit 302 und
überträgt Nachrichten zu anderen Verbindungs-I/O-Einheiten 304
über die GPIM 16, und zwar unter Verwaltung der Steuersignale,
die von der gemeinsamen Schnittstellen- und Steuereinheit 302
empfangen werden. Bei der bevorzugten Ausführungsform basiert
die Verbindungs-I/O-Einheit 304 auf einem SCI-Knoten, wie
durch den ANSI/IEEE-Standard 1596-1992 definiert ist. Nimmt
man nun Bezug auf die Fig. 14, so ist ein Blockdiagramm einer
bevorzugten Ausführungsform einer Verbindungs-I/O-Einheit 304
gezeigt. Die Verbindungs-I/O-Einheit 304 umfaßt einen
Adressendecoder 302, einen Eingangs-FIFO-Puffer 322, einen
Bypaß-FIFO-Puffer 324 und einen Ausgangs-FIFO-Puffer 326 und
einen Multiplexer 328. Der Adressendecoder 328 umfaßt einen
Eingang, der den Eingang der Verbindungs-I/O-Einheit
ausbildet, einen ersten Ausgang, der mit dem Eingangs-FIFO 322
verbunden ist, und einen zweiten Ausgang, der mit dem Bypaß-
FIFO 324 verbunden ist. Der Eingangs-FIFO 322 umfaßt einen
Ausgang, der mit der Nachrichtentransferleitung 312 zur
Übertragung von Nachrichten zu der gemeinsamen Schnittstellen-
und Steuereinheit 302 verbunden ist. Der Ausgangs-FIFO 326
umfaßt einen Eingang, der mit der Nachrichtentransferleitung
312 zum Empfang von Nachrichten von der gemeinsamen
Schnittstellen- und Steuereinheit 302, verbunden ist, und
einen Ausgang, der mit dem ersten Eingang des Multiplexers 328
verbunden ist. Der Bypaß-FIFO 326 umfaßt einen Ausgang, der
mit einem zweiten Eingang des Multiplexers 328 verbunden ist.
Schließlich umfaßt der Multiplexer 328 einen Steuereingang,
der mit der Nachrichtentransferleitung 312 verbunden ist, und
einen Ausgang, der den Ausgang der Verbindungs-I/O-Einheit
ausbildet.
Die Verbindungs-I/O-Einheit 304 empfängt Nachrichten bei dem
Eingang des Adressendecoders 320. Der Adressendecoder 320
bestimmt, ob die Zielverbindungsadresse, die in einer emp
fangenen Nachricht spezifiziert ist, identisch mit der Ver
bindungsadresse der Verbindungs-I/O-Einheit 304 ist, in der
sie sich befindet. Falls dem so ist, leitet der Adressende
coder 320 die Nachricht zu dem Eingangs-FIFO 322. Ansonsten
leitet der Adressendecoder 320 die Nachricht zu dem Bypaß-FIFO
324. Bei der bevorzugten Ausführungsform umfaßt der
Adressendecoder 320 einen Decoder und eine Datenauswählein
richtung, die verwirklicht ist, indem IOBs und CLBs verwendet
werden.
Bei dem Eingangs-FIFO 322 handelt es sich um einen konven
tionellen FIFO-Puffer, der Nachrichten, die bei seinem Eingang
empfangen werden, zu der Nachrichtenübertragungsleitung 312
überträgt. Sowohl der Bypaß-FIFO 324 als auch der Ausgangs-
FIFO 326 sind herkömmliche FIFO-Puffer, die Nachrichten, die
bei deren Eingängen empfangen werden, zu dem Multiplexer 328
übertragen. Der Multiplexer 328 ist ein herkömmlicher
Multiplexer, der entweder eine Nachricht, die von dem Bypaß-
FIFO 324 erhalten wird, oder eine Nachricht, die von dem
Ausgangs-FIFO 326 erhalten wird, zu der GPIM 16 in Über
einstimmung mit einem Steuersignal, das bei seinem Steuer
eingang empfangen wird, leitet. Bei der bevorzugten Ausfüh
rungsform werden sowohl der Eingangs-FIFO 322 als auch der
Bypaß-FIFO 324 und der Ausgangs-FIFO 326 realisiert, indem ein
Satz von CLBs verwendet wird. Der Multiplexer 328 wird
vorzugsweise realisiert, indem ein Satz von CLBs und IOBs
verwendet wird.
Es wird nun auf die Fig. 15 Bezug genommen. Dort ist ein
Blockdiagramm einer bevorzugten Ausführungsform einer I/O-T-
Maschine 18 gezeigt. Die I/O-T-Maschine 18 umfaßt eine dritte
lokale Zeitbasiseinheit 360, eine allgemeine Kunden-
Schnittstellen- und Steuereinheit 326 und eine Verbindungs-
I/O-Einheit 304. Die dritte lokale Zeitbasiseinheit 360 umfaßt
eine Zeitbasiseinheit, die den Master-Zeitsteuereingang der
I/O-T-Maschine ausbildet. Die Verbindungs-I/O-Einheit 304
umfaßt einen Eingang, der mit der GPIM 16 über eine
Nachrichteneingangsleitung 314 verbunden ist, und einen
Ausgang, der mit der GPIM 16 über eine Nachrichtenausgangs
leitung 316 verbunden ist. Die gemeinsame Kunden-Schnitt
stellen- und Steuereinheit 362 umfaßt vorzugsweise einen
Zeitsteuereingang, der mit einem Zeitsteuerausgang der dritten
lokalen Zeitbasiseinheit 360 über eine dritte Zeitsteu
ersignalleitung 370 verbunden ist, einen ersten bidirektio
nalen Datenport, der mit einem bidirektionalen Datenport der
Verbindungs-I/O-Einheit 304 verbunden ist, und einen Satz von
Verbindungen zu einer I/O-Vorrichtung 20. Bei der bevorzugten
Ausführungsform beinhaltet der Satz von Verbindungen zu der
I/O-Vorrichtung 20 einen zweiten bidirektionalen Datenport,
der mit einem bidirektionalen Datenport der I/O-Vorrichtung
20 verbunden ist, und einen Adressenausgang, der mit einem
Adresseneingang von der I/O-Vorrichtung 20 verbunden ist, und
einen bidirektionalen Steuerport, der mit einem
bidirektionalen Steuerport der I/O-Vorrichtung 20 verbunden
ist. Fachleute werden leicht erkennen, daß die Verbindungen
zu der I/O-Vorrichtung 20 von dem Typ der I/O-Vorrichtung 20
abhängen, mit der die gemeinsam Kunden-Schnittstellen- und
Steuereinheit 362 verbunden ist.
Die dritte lokale Zeitbasiseinheit 360 empfängt das Master-
Zeitsteuersignal von der Master-Zeitsteuereinheit 22 und
erzeugt ein drittes lokales Zeitsteuersignal. Die dritte
lokale Zeitbasiseinheit 360 liefert das dritte lokale Zeit
steuersignal zu der gemeinsamen Kunden-Schnittstellen- und
Steuereinheit 362, womit eine Zeitsteuerreferenz für die I/O-
T-Maschine bereitgestellt wird, in der sie sich befindet. Bei
der bevorzugten Ausführungsform ist das dritte lokale
Zeitsteuersignal mit dem Master-Zeitsteuersignal
phasensynchronisiert. Die dritte lokale Zeitbasiseinheit 360
einer jeden I/O-T-Maschine arbeitet vorzugsweise bei einer
identischen Frequenz. Bei einer alternativen Ausführungsform
können eine oder mehrere dritte lokale Zeitbasiseinheiten 360
bei verschiedenen Frequenzen arbeiten. Die dritte lokale
Zeitbasiseinheit 360 wird vorzugsweise realisiert, indem eine
herkömmliche phasensynchronisierte Frequenzumwandlungs
schaltung verwendet wird, die eine phasensynchronisierte
Detektionsschaltung auf CLB-Basis beinhaltet. Auf eine Art und
Weise, die zu jener für die ersten und zweiten lokalen
Zeitbasiseinheiten 30, 300 analog ist, könnte die dritte
lokale Zeitbasiseinheit 360 als ein Abschnitt eines Taktver
teilungsbaumes in einer alternativen Ausführungsform ver
wirklicht werden.
Die Struktur und Funktionalität der Verbindungs-I/O-Einheit
304 innerhalb der I/O-T-Maschine 18 ist vorzugsweise mit jener
der zuvor für die T-Maschine 14 beschriebenen identisch. Der
Verbindungs-I/O-Einheit 304 innerhalb der I/O-T-Maschine 18
ist vorzugsweise einer einzigen Verbindungsadresse in einer
Art und Weise zugeordnet, die zu jener für jede Verbindungs-
I/O-Einheit 304 innerhalb einer gegebenen T-Maschine 14 analog
ist.
Die gemeinsame Kunden-Schnittstellen- und Steuereinheit 362
verwaltet den Transfer bzw. die Übertragung von Nachrichten
zwischen der I/O-Vorrichtung 20, an die sie gekoppelt ist, und
der Verbindungs-I/O-Einheit 304, und zwar wo eine Nachricht
einen Befehl und mögliche Daten enthält. Die gemeinsame
Kunden-Schnittstellen- und Steuereinheit 362 empfängt Daten
und Befehle von ihrer entsprechenden I/O-Vorrichtung 20. Vor
zugsweise beinhaltet jeder Befehl, der von der I/O-Vorrichtung
20 empfangen wird, eine Zielverbindungsadresse und einen
Befehlscode, der einen bestimmten Typ von Operation
spezifiziert, der durchgeführt werden soll. Bei der bevor
zugten Ausführungsform beinhalten die Typen von Operationen,
die ausschließlich bzw. einzig durch Befehlscodes identifi
ziert werden, folgendes: 1) Datenanforderungen; 2) Daten
transferbestätigungen; und 3) Interruptsignaltransfer. Die
Zielverbindungsadresse identifiziert eine Zielverbindungs-I/O-
Einheit 304 in dem System 10, zu der Daten und Befehle
übertragen werden sollen. Vorzugsweise überträgt die gemein
same Schnittstellen- und Steuereinheit 362 jedes Kommando bzw.
jeder Befehl und jegliche in Bezug stehende Daten als einen
Satz von Nachrichten auf Paketbasis in einer herkömmlichen Art
und Weise, und zwar wo jede Nachricht die
Zielverbindungsadresse und den Befehlscode enthält.
Zusätzlich zum Empfang von Daten und Befehlen von ihrer
entsprechenden I/O-Vorrichtung 20, empfängt die allgemeine
Kunden-Schnittstellen- und Steuereinheit 362 Nachrichten von
ihrer zugeordneten Verbindungs-I/O-Einheit 304. Bei der
bevorzugten Ausführungsform wandelt die gemeinsame Kunden-
Schnittstellen- und Steuereinheit 362 eine Gruppe von in
Beziehung stehenden Nachrichten in eine einzige Befehls- und
Datensequenz in Übereinstimmung mit den Kommunikationsproto
kollen um, die durch ihre entsprechende I/O-Vorrichtung 20
unterstützt werden. Bei der bevorzugten Ausführungsform umfaßt
die gemeinsame Kunden-Schnittstellen- und Steuereinheit 362
eine CLB-basierte I/O-Vorrichtungs-Steuereinrichtung, die mit
der CLB-basierten Schaltung zur Realisierung von Operationen
verbunden ist, die analog zu jenen sind, die durch eine
konventionelle SCI-Schaltungseinheit durchgeführt werden, wie
es durch den ANSI/IEEE-Standard 1596-1992 festgelegt ist.
Die GPIM 16 ist eine herkömmliche Verbindungsmasche bzw.
Verbindungsvermaschung, die eine Punkt-zu-Punkt-
Parallelnachrichten-Wegeermittlung zwischen Verbindungs-I/O-
Einheiten 304 erleichtert. Bei der bevorzugten Ausführungsform
handelt es sich bei der GPIM 16 um ein statisches "k-ary n-
cube" bzw. k-n-kubisches Verbindungsnetzwerk auf
Verdrahtungsbasis. Nimmt man nun Bezug auf Fig. 16, so ist ein
Blockdiagramm einer beispielhaften Ausführungsform einer
Allzweck-Verbindungsmatrix 16 gezeigt. In der Fig. 16 handelt
es sich bei der GPIM 16 um eine toroidale Verbindungsmasche
oder äquivalent um ein "k-ary-2-cube" bzw. ein k-2-Kubus mit
einer Anzahl von ersten Kommunikationskanälen 380 und einer
Anzahl von zweiten Kommunikationskanälen 382. Jeder erste
Kommunikationskanal 380 beinhaltet eine Anzahl von Knoten
verbindungssitzen 384, wie dies auch bei jedem zweiten Kom
munikationskanal 382 der Fall ist. Jede Verbindungs-I/O-
Einheit 304 in dem System 10 ist vorzugsweise mit der GPIM 16
derartig verbunden, daß die Nachrichteneingangsleitung 314 und
die Nachrichtenausgangsleitung 316 an fortlaufende
Knotenverbindungssitze 384 innerhalb eines gegebenen Kom
munikationskanals 380, 382 angeschlossen sind. Bei der be
vorzugten Ausführungsform beinhaltet jede T-Maschine 14 eine
Verbindungs-I/O-Einheit 304, die mit dem ersten Kommunika
tionskanal 380, und eine Verbindungs-I/O-Einheit 304, die mit
dem zweiten Kommunikationskanal 382 in der oben beschriebenen
Weise verbunden ist. Die gemeinsame Schnittstellen- und
Steuereinheit 302 innerhalb der T-Maschine 14 erleichtert
vorzugsweise das Leiten von Informationen zwischen ihrer
Verbindungs-I/O-Einheit 304, die mit dem ersten Kom
munikationskanal verbunden ist, und ihrer Verbindungs-I/O-
Einheit 304, die mit dem zweiten Kommunikationskanal 382
verbunden ist. Somit erleichtert für eine T-Maschine 14 mit
einer Verbindungs-I/O-Einheit 304, die an den ersten Kom
munikationskanal angeschlossen ist, der als 380c bezeichnet
ist, und einer Verbindungs-I/O-Einheit 304, die mit dem
zweiten Kommunikationskanal verbunden ist, der als 382c in
Fig. 16 bezeichnet ist, diese gemeinsame Schnittstellen- und
Steuereinheit 302 der T-Maschine das Leiten vom Informationen
zwischen diesem Satz von ersten und zweiten Kommunika
tionskanälen 380c, 382c.
Die GPIM 16 erleichtert somit das parallele Leiten von meh
reren Nachrichten zwischen den Verbindungs-I/O-Einheiten 304.
Für die zweidimensionale GPIM 16, die in Fig. 16 gezeigt ist,
beinhaltet jede T-Maschine 14 vorzugsweise eine einzige
Verbindungs-I/O-Einheit 304 für den ersten Kommunikationskanal
380 und eine einzige Verbindungs-I/O-Einheit 304 für den
zweiten Verbindungskanal 382. Fachleute werden erkennen, daß
bei einer Ausführungsform, bei der die GPIM 16 eine
Dimensionalität aufweist, die größer als 2 ist, die T-Maschine
14 vorzugsweise mehr als zwei Verbindungs-I/O-Einheiten 304
aufweist. Vorzugsweise ist die GPIM 16 als ein k-ary 2-cube
bzw. k-2-Kubus mit einer 16-Bit-Datenpfadgröße realisiert.
Bei der vorhergehenden Beschreibung wurden verschiedene Ele
mente der vorliegenden Erfindung vorzugsweise realisiert,
indem rekonfigurierbare Hardware-Systemelemente verwendet
wurden. Die Hersteller von reprogrammierbaren Logikvorrich
tungen liefern typischerweise veröffentlichte Richtlinien, um
herkömmliche digitale Hardware zu realisieren, indem
reprogrammierbare oder rekonfigurierbar Hardware-Systemele
mente verwendet werden. Zum Beispiel beinhaltet das 1994
Xilinx Programmable Logic Data Book (Xilinx, Inc., San Jose,
GA) als Bemerkungen zur Anwendung bzw. als "Application Notes"
das folgende: Application Note XAPP 005.002 "Register-Based
FIFO"; Application Note XAPP 044.00 "High-Perrormance RAM-
Based FIFO"; Application Note XAPP 013.001 "Using the
Dedicated Carry Logic in the XC 4000"; Application Note XAPP
018.000 "Estimating the Performance of XC 4000 Adders and
Counters"; Application Note XAPP 028.001, "Frequency/Phase
Comparator for Phase-Locked Loops"; Application Note XAPP
031.000 "Using the XC4000 RAM Capability"; Application Note
XAPP 036.001, "Four-Port DRAM Controller . . ."; und Application
Note XAPP 039.001, "18-Bit Pipelined Accumulator".
Zusätzliches von Xilinx veröffentlichtes Material beinhaltet
Merkmale aus "XCELL, The Quarterly Journal for Xilinx
Programmable Logic Users". Zum Beispiel ist ein Artikel in der
Ausgabe 14 des dritten Quartals 1994 erschienen, der die
Realisierung von schnellen Integermultiplikatoren detailliert
beschreibt.
Bei dem hierin beschriebenen System 10 handelt es sich um eine
skalierbare, parallele Computer-Architektur, um dynamisch
mehrere ISAs zu realisieren. Jede einzelne S-Maschine 12 ist
in der Lage, ein gesamtes Computerprogramm selbst ablaufen zu
lassen, und zwar unabhängig von einer ander S-Maschine 12 oder
externen Hardware-Systemelementen, wie z. B. einem
Hostcomputer. Auf jeder individuellen S-Maschine 12 sind
mehrere ISAs sequentiell in der Zeit während der Pro
grammausführung realisiert, und zwar in Antwort auf die
Rekonfigurations-Interrupts und/oder auf im Programm einge
bettete Rekonfigurationsanweisungen. Weil das System 10
vorzugsweise mehrere S-Maschinen 12 beinhaltet, werden mehrere
Programme vorzugsweise simultan ausgeführt, wo jedes Programm
unabhängig sein kann. Da somit das System 10 vorzugsweise
mehrere S-Maschinen 12 beinhaltet, sind mehrere ISAs simultan
(d. h. parallel) zu allen Zeiten, außer während der
Systeminitialisierung oder Rekonfigurierung, realisiert. Das
heißt, zu jeder gegebenen Zeit werden mehrere Sätze von
Programminstruktionen simultan ausgeführt, und zwar wo jeder
Satz von Programminstruktionen gemäß einer entsprechenden ISA
ausgeführt wird. Jede derartige ISA kann einzig sein.
S-Maschinen 12 kommunizieren miteinander und mit I/O-Vor
richtungen 20 über den Satz von T-Maschinen 14, der GPIM 16
und jeder I/O-T-Maschine 18. Obwohl jede S-Maschine 12 einen
ganzen Computer in sich selbst darstellt, der zu einem
unabhängigen Betrieb in der Lage ist, ist jede S-Maschine 12
in der Lage als eine Master-S-Maschine 12 für andere S-Ma
schinen 12 oder das gesamte System 10 zu wirken, Daten zu
senden und/oder Befehle zu anderen S-Maschinen 12, einer oder
mehreren T-Maschinen 16 oder einer oder mehreren I/O-T-
Maschinen 18 oder einer oder mehreren T/O-Vorrichtungen 22 zu
senden.
Das System 10 der vorliegenden Erfindung ist somit besonders
nützlich für Probleme, die sowohl räumlich als auch zeitlich
in ein oder mehrere datenparallele Subprobleme unterteilt
werden können, z. B.: Bildverarbeitung, medizinische Daten
verarbeitung, kalibriertes Farbmatching bzw. kalibrierte
Farbanpassung, Datenbasisrechnen, Vorlagenverarbeitung,
assoziative Suchmaschinen und Netzwerkserver. Bezüglich
Rechenproblemen mit einem großen Feld von Operanden existiert
ein Datenparallelismus, wenn Algorithmen verwendet werden
können, um so eine wirksame Berechnungsgeschwindigkeit
anzubieten, die durch parallele Rechentechniken beschleunigt
wird. Datenparallelprobleme besitzen eine bekannte
Komplexität, nämlich von O(nk). Der Wert von k ist
problemabhängig; z. B. k = 2 für Bildverarbeitung und k = 3 für
medizinische Datenverarbeitung. Bei der vorliegenden Erfindung
werden individuelle S-Maschinen 12 vorzugsweise verwendet, um
den Datenparallelismus bei der Ebene von
Programminstruktionsgruppen auszuschöpfen bzw. auszunutzen.
Weil das System 10 mehrere S-Maschinen 12 beinhaltet, wird das
System 10 vorzugsweise verwendet, um den Datenparallelismus
auf der Ebene von Sätzen von gesamten Programmen auszunutzen.
Das System 10 der vorliegenden Erfindung liefert eine große
Menge an Rechenleistung, und zwar wegen seiner Fähigkeit, die
Instruktionsverarbeitungshardware in jeder S-Maschine 12
vollständig zu rekonfigurieren, um die Rechenfähigkeiten einer
derartigen Hardware relativ zu Rechenerfordernissen zu einem
gegebenen Augenblick zu optimieren. Jede S-Maschine 12 kann
unabhängig von jeder anderen S-Maschine 12 rekonfiguriert
werden. Das System 10 behandelt vorteilhafterweise jeden
Konfigurationsdatensatz und folglich jede ISA als eine
programmierte Grenze oder Schnittstelle zwischen Software und
der rekonfigurierbaren Hardware, die hierin beschrieben ist.
Die Architektur der vorliegenden Erfindung erleichtert
zusätzlich die Strukturierung auf hoher Ebene von rekonfigu
rierbarer Hardware, um selektiv die Belange aktueller Systeme
in situ anzusprechen, einschließlich: der Arten und Weisen,
in denen eine Unterbrechung die Instruktionsverarbeitung
beeinträchtigt; des Erfordernisses einer deterministischen
bzw. bestimmbaren Verzögerungsantwort bzw. Latenzantwort, um
Echtzeitverarbeitung und Steuerfähigkeiten zu erleichtern; und
des Erfordernisses nach wählbaren Antworten zur
Fehlerhandhabung.
Im Gegensatz zu anderen Computer-Architekturen lehrt die
vorliegende Erfindung die maximale Verwendung von Silizium-
Systemelementen zu allen Zeiten. Die vorliegende Erfindung
liefert ein paralleles Computersystem, das auf jede ge
wünschte Größe zu jeder Zeit vergrößert werden kann, sogar
zu massiv parallelen Größen mit tausenden von S-Maschinen 12.
Derartige Skalierbarkeit bezüglich der Architektur ist
möglich, da Instruktionsverarbeitung auf S-Maschinen-Basis
absichtlich von der Datenkommunikation auf T-Maschinen-Basis
getrennt ist. Dieses Trennungsparadigma bzw. Trennungsbeispiel
bezüglich der Befehlsverarbeitung/Datenkommunikation paßt
äußerst gut für datenparalleles Rechnen. Die interne Struktur
der S-Maschinen-Hardware ist vorzugsweise für den Zeitfluß von
Instruktionen optimiert, während die interne Struktur der
T-Maschinen-Mardware vorzugsweise für wirksame
Datenkommunikation optimiert ist. Der Satz von S-Maschinen 12
und der Satz von T-Maschinen stellen jeweils einen trennbaren,
konfigurierbaren Bestandteil in einer Raum-Zeit-Aufteilung
einer datenparallelen Rechenarbeit dar.
Mit der vorliegenden Erfindung kann zukünftige rekonfigu
rierbare Hardware ausgenutzt werden, um Systeme mit sogar noch
größeren Rechenfähigkeiten zu konstruieren, während die
Gesamtstruktur bzw. die zugrundeliegende Struktur, die hierin
beschrieben ist, aufrechterhalten wird. Mit anderen Worten,
das System 10 der vorliegenden Erfindung ist technologisch
skalierbar. Bei scheinbar allen gegenwärtigen rekon
figurierbaren Logikvorrichtungen handelt es sich um komple
mentäre Metalloxidhalbleiter- bzw. "Complementary Metal-Oxide
Semiconductor" (CMOS) -Technologie auf Speicherbasis.
Fortschritte in der Kapazität bzw. Fähigkeit der Bauelemente
folgen den Trends der Halbleiterspeichertechnologie. In
zukünftigen Systemen würde ein rekonfigurierbares Logikbau
element, das verwendet wird, um eine S-Maschine 12 zu er
stellen bzw. zu konstruieren, eine Aufteilung der internen
Hardware-Systemelemente in Übereinstimmung mit der Innen
schleifen- und Außenschleifen-ISA-Parameter aufweisen, die
hierin beschrieben sind. Größere rekonfigurierbare Logikvor
richtungen bieten einfach die Fähigkeit an, mehr daten
parallele Rechenarbeit innerhalb eines einzigen Bauelelements
durchzuführen. Zum Beispiel würde eine größere Funk
tionseinheit 194 innerhalb der zweiten beispielhaften Aus
führung der DOU 63, wie sie oben unter Bezugnahme auf die Fig.
9B beschrieben ist, sich an größere Bildkerngrößen bzw.
"imaging kernel sizes" anpassen. Fachleute werden erkennen,
daß die technologische Skalierbarkeit, die durch die
vorliegende Erfindung bereitgestellt wird, nicht auf
Vorrichtungen auf CMOS-Basis beschränkt ist, noch daß sie auf
Implementationen auf FPGA-Basis beschränkt ist. Somit liefert
die vorliegende Erfindung eine technologische Skalierbarkeit
unabhängig von der bestimmten Technologie, die verwendet wird,
um eine Rekonfigurierbarkeit oder Reprogrammierbarkeit
bereitzustellen.
Nimmt man nun Bezug auf die Fig. 17A und 17B, so ist ein
Flußdiagramm eines bevorzugten Verfahrens für skalierbares,
paralleles, dynamisch rekonfigurierbares Rechnen gezeigt.
Vorzugsweise wird das Verfahren der Fig. 17A und 17B innerhalb
jeder S-Maschine 12 in dem System 10 durchgeführt. Das
bevorzugte Verfahren beginnt im Schritt 1000 in der Fig. 17A
mit der Rekonfigurationslogik 104, die einen Konfigurations
datensatz, der einer ISA entspricht, ausliest bzw. wieder
aufnimmt. Danach konfiguriert im Schritt 1002 die Rekonfigu
rationslogik 104 jedes Element innerhalb der IFU 60, der DOU
62 und der AOU 64 gemäß dem ausgelesenen Datensatz im Schritt
1002, wodurch eine DRPU-Hardware-Organisation für die
Implementation der ISA, die gegenwärtig betrachtet wird,
erzeugt wird. Nachfolgend zum Schritt 1002 liest die Inter
ruptlogik 106 die Interruptantwortsignale aus, die in dem
Architekturbeschreibungsspeicher 101 gespeichert sind, und
erzeugt einen entsprechenden Satz von Übergangssteuersignalen,
die festlegen, wie die gegenwärtige DRPU-Konfiguration auf die
Unterbrechungen bzw. Interrupts im Schritt 1004 antwortet. Die
ISS 100 initialisiert nachfolgend eine Pro
grammzustandsinformation im Schritt 1006, nach der die ISS 100
einen Instruktionausführungszyklus im Schritt 1008 in
itialisiert.
Danach bestimmt im Schritt 1010 die ISS 100 oder die Inter
ruptlogik 106, ob eine Rekonfiguration erforderlich ist. Die
ISS 100 bestimmt, daß die Rekonfiguration in dem Fall erfor
derlich ist, daß eine Rekonfigurationsanweisung während der
Programmausführung gewählt wird. Die Interruptlogik 106
bestimmt, daß eine Rekonfiguration in Antwort auf einen
Rekonfigurationsinterrupt erforderlich ist. Falls eine Re
konfiguration erforderlich ist, schreitet das bevorzugte
Verfahren zum Schritt 1012 fort, in dem eine Rekonfigura
tionshandhabungseinrichtung Programmzustandsinformationen
sichert. Vorzugsweise beinhalten die Programmzustandsinfor
mationen einen Bezug zu dem Konfigurationsdatensatz, der die
laufende DRPU-Konfiguration entspricht. Nach dem Schritt 1012
kehrt das bevorzugte Verfahren zum Schritt 1000 zurück, um
einen nächsten Konfigurationsdatensatz derartig auszulesen,
wie durch die Rekonfigurationsanweisung oder den Rekonfigura
tionsinterrupt verwiesen wurde.
Für den Fall, daß eine Rekonfiguration im Schritt 1010 nicht
erforderlich ist, bestimmt die Interruptlogik 106, ob ein
Nicht-Rekonfigurationsinterrupt eine Behandlung im Schritt
1014 erfordert. Falls dem so ist, bestimmt die ISS 100 als
nächstes im Schritt 1020, ob ein Zustandsübergang von dem
gegenwärtigen ISS-Zustand innerhalb des Instruktionsausfüh
rungszyklus zu dem Interrupt Servicezustand, basierend auf den
Übergangssteuersignalen, möglich ist. Falls ein Zu
standsübergang zu dem Interruptservicezustand nicht möglich
ist bzw. nicht erlaubt ist, schreitet die ISS 100 zu einem
nächsten Zustand in dem Instruktionsausführungszyklus fort und
kehrt zu dem Zustand 1020 zurück. Für den Fall, daß die
Übergangssteuersignale einen Zustandsübergang von dem gegen
wärtigen ISS-Zustand innerhalb des Instruktionsausführungs
zyklus zu dem Interruptservicezustand erlauben, schreitet die
ISS 100 als nächstes zu dem Interruptservicezustand im Schritt
1024 fort. Im Schritt 1024 sichert die ISS 100 die
Programmzustandsinformation und führt Programminstruktionen
zur Abarbeitung des Interrupts aus. Nachfolgend zum Schritt
1024 kehrt das bevorzugte Verfahren zum Schritt 1008 zurück,
um den gegenwärtigen Instruktionsausführungszyklus wieder auf
zunehmen, falls er nicht vollendet worden ist, oder um einen
nächsten Instruktionsausführungszyklus auszulösen bzw. zu
initialisieren.
Für den Fall, daß kein Nicht-Rekonfigurationsinterrupt eine
Abarbeitung im Schritt 1014 erfordert, schreitet das bevor
zugte Verfahren zum Schritt 1016 fort und bestimmt, ob die
Ausführung des gegenwärtigen Programms vollendet ist. Falls
die Ausführung des gegenwärtigen Programms fortgesetzt werden
soll, kehrt das bevorzugte Verfahren zum Schritt 1008 zurück,
um einen anderen Instruktionsausführungszyklus auszulösen bzw.
zu initialisieren. Ansonsten endet das bevorzugte Verfahren.
Die Lehren der vorliegenden Erfindung unterscheiden sich
entscheidend von anderen Systemen und Verfahren zum repro
grammierbaren oder rekonfigurierbaren Rechnen. Insbesondere
ist die vorliegende Erfindung nicht äquivalent zu herunter
ladbaren Mikrocode-Architekturen, weil derartige Architekturen
sich im allgemeinen auf nicht-rekonfigurierbare Steuer
einrichtungen und nicht-rekonfigurierbare Hardware verlassen.
Die vorliegende Erfindung unterscheidet sich also eindeutig
von einem zugeordneten rekonfigurierbaren Prozessor bzw.
"Attached Reconfigurable Processor" (ARP)-System, in dem ein
Satz von rekonfigurierbaren Hardware-Systemelementen zu einem
nicht-rekonfigurierbaren Hostprozessor oder Hostsystem
verbunden wird. Ein ARP-Apparat hängt bezüglich der Ausführung
einiger Programminstruktionen von dem Host ab. Deshalb ist der
Satz an verfügbaren Silizium-Systemelementen nicht maximal
über den Zeitrahmen der Programmausführung ausgenutzt, da die
Silizium-Systemelemente auf dem ARP-Apparat bzw. dem Host
untätig sein werden oder ineffizient genutzt werden, wenn der
Host- bzw. der ARP-Apparat mit Daten arbeitet. Im Gegensatz
dazu handelt es sich bei jeder S-Maschine 12 um einen
unabhängigen Computer, in dem gesamte Programme leicht
ausgeführt werden können. Mehrere S-Maschinen 12 führen
vorzugsweise Programme simultan aus. Die vorliegende Erfindung
lehrt deshalb das maximale Ausnutzen von Silizium-
Systemelementen bzw. Silizium-Resourcen zu allen Zeiten,
sowohl für einzelne Programm, die auf einzelnen S-Maschinen
12 ausgeführt werden, als auch für mehrere Programme, die auf
dem gesamten System 10 ausgeführt werden.
Ein ARP-Apparat liefert eine Rechen-Beschleunigungseinrichtung
für einen bestimmten Algorithmus zu einer bestimmten Zeit und
ist als ein Satz von Gattern realisiert, die optimal bezüglich
dieses bestimmten Algorithmus verbunden sind. Die Verwendung
rekonfigurierbarer Hardware-Systemelemente für Allzweck-
Operationen, wie z. B. die Handhabung einer Befehlsausführung
wird in ARP-Systemen vermieden. Darüber hinaus behandelt ein
ARP-System nicht einen gegebenen Satz von untereinander
verbundenen Gattern als eine leicht wiederverwendbare Resource
bzw. als ein leicht wiederverwendbares Systemelement. Im
Gegensatz dazu lehrt die vorliegende Erfindung eine dynamisch
rekonfigurierbare Verarbeitungseinrichtung, die für die
effiziente Handhabung einer Instruktionsausführung
konfiguriert ist, und zwar gemäß einem In
struktionsausführungsmodell, das am besten an die Rechen
erfordernisse zu einem bestimmten Moment angepaßt ist. Jede
S-Maschine 12 beinhaltet eine Vielzahl von leicht wiederver
wendbaren Systemelementen, z. B. die ISS 100, die Inter
ruptlogik 106 und die Abspeicher-/Ausrichtlogik 152. Die vor
liegende Erfindung lehrt die Verwendung von rekonfigurierbaren
Logik-Systemelementen auf der Ebene von Gruppen von CLBs, IOBs
und rekonfigurierbaren Verbindungen eher als auf der Ebene von
untereinander verbundenen Gattern. Die vorliegende Erfindung
lehrt somit die Verwendung rekonfigurierbarer Logikdesign-
Konstruktionen höheren Niveaus, die nützlich bei der
Durchführung von Operationen auf einer gesamten Klasse von
Rechenproblemen sind, eher als daß sie ein einziges nützliches
Gatterverbindungsschema lehrt, das für einen einzigen
Algorithmus nützlich ist.
Im allgemeinen sind ARP-Systeme auf die Übersetzung eines
bestimmten Algorithmus in einen Satz von untereinander ver
bundenen Gattern gerichtet. Einige ARP-Systeme streben an,
Instruktionen hohen Niveaus in eine optimale Hardware-Kon
figuration auf Gatterniveau zu kompilieren bzw. zu übersetzen,
was im allgemeinen ein "NP-Hard"- bzw. NP-hart-Problem ist.
Im Gegensatz dazu lehrt die vorliegende Erfindung die Verwen
dung eines Kompilers für dynamisch rekonfigurierbares Rechnen,
der Programminstruktionen hohen Niveaus in Assembler
sprachinstruktionen gemäß einer variablen ISA in einer sehr
geradlinigen Art und Weise kompiliert.
Ein ARP-Apparat ist im allgemeinen nicht in der Lage, sein
eigenes Hostprogramm als Daten zu behandeln oder sich selbst
zu kontextualisieren bzw. vom Kontext abhängig zu behandeln.
Im Gegensatz dazu kann jede S-Maschine in dem System 10 ihr
eigenes Programm als Daten behandeln und sich somit leicht
selbst kontextualisieren bzw. vom Kontext abhängig behandeln.
Das System 10 kann sich leicht selbst durch das Ausführen
seiner eigenen Programme simulieren. Die vorliegende Erfindung
hat zusätzlich die Fähigkeit, seinen eigenen Kompiler zu
kompilieren.
Bei der vorliegenden Erfindung kann ein einziges Programm eine
erste Gruppe von Instruktionen beinhalten, die zu einer ersten
ISA gehören, eine zweite Gruppe von Instruktionen, die zu
einer zweiten ISA gehören, eine dritte Gruppe von
Instruktionen, die zu einer noch anderen ISA gehören, usw. Die
hierin gelehrte Architektur führt jede derartige Gruppe von
Instruktionen aus, indem Hardware verwendet wird, die
bezüglich der Ausführungszeit bzw. Laufzeit konfiguriert ist,
um die ISA zu realisieren, zu der die Instruktionen gehören.
Kein System oder Verfahren nach dem Stand der Technik bietet
ähnliche Techniken an.
Die vorliegende Erfindung lehrt weiter ein rekonfigurierbares
Interruptschema bzw. Unterbrechungsschema, bei welche die
Interruptverzögerungszeit bzw. die Interruptlatenz, die
Interruptpräzision und die programmierbare Zustandsüber
gangsfreigabe sich gemäß der ISA ändern kann, die gegenwärtig
betrachtet wird. Keine analogen Techniken wurden in anderen
Computersystemen gefunden. Die vorliegende Erfindung lehrt
zusätzlich ein Computersystem mit einer rekonfigurierbaren
Datenpfadbitbreite, Adressenbitbreite und rekonfigurierbarer
Steuerleitungsbreite im Gegensatz zu dem Stand der Technik von
Computersystemen.
Während die vorliegende Erfindung unter Bezugnahme auf gewisse
bevorzugte Ausführungsformen beschrieben wurde, werden
Fachleute erkennen, daß verschiedene Änderungen vorgenommen
werden können. Veränderungen und Modifikationen der bevor
zugten Ausführungsformen werden durch die vorliegende Erfin
dung bereitgestellt, die nur durch die folgenden Ansprüche
beschränkt ist.
Zusammenfassend kann man folgendes bemerken:
Die Erfindung betrifft ein System und ein Verfahren zum
skalierbaren, parallelen, dynamisch rekonfigurierbaren Rech
nen. Ein Satz von S-Maschinen, eine T-Maschine, die zu jeder
S-Maschine korrespondierend ist, eine Allzweck-Verbindungs
matrix (GPIM), ein Satz von I/O-T-Maschinen, ein Satz von
I/O-Vorrichtungen und eine Master-Zeitbasiseinheit bilden ein
System für skalierbares paralleles, dynamisch rekonfigu
rierbares Rechnen. Jede S-Maschine ist ein dynamisch rekon
figurierbarer Rechner mit einem Speicher, einer ersten loka
len Zeitbasiseinheit und einer dynamisch rekonfigurierbaren
Verarbeitungseinheit (DRPU). Die DRPU wird realisiert bzw.
implementiert, indem eine reprogrammierbare Logikvorrichtung
verwendet wird, die als eine Instruktionsabrufeinheit (IFU),
eine Datenoperationseinheit (DOU) und eine Adressenopera
tionseinheit (AOU) konfiguriert ist, von denen jede selektiv
während einer Programmausführung in Antwort auf einen Rekon
figurationsinterrupt oder der Auswahl einer Rekonfigura
tionsanweisung, die in einen Satz von Programminstruktionen
eingebettet ist, rekonfiguriert wird. Jeder Rekonfigura
tionsinterrupt und jede Rekonfigurationsanweisung nimmt auf
einen Satz von Konfigurationsdaten Bezug, der eine DRPU-
Hardware-Organisation spezifiziert, die für Realisierung bzw.
Implementation einer bestimmten Instruktionssatzarchitektur
(ISA)optimiert ist. Die IFU verwaltet Rekonfigurations
operationen, Instruktionsabruf- und Decodieroperationen,
Speicherzugriffsoperationen, und sie gibt Steuersignale an
die DOU und die AOU aus, um eine Instruktionsausführung zu
erleichtern bzw. zu vereinfachen. Die DOU führt
Datenberechnungen durch und die AOU führt
Adressenberechnungen durch. Bei jeder T-Maschine handelt es
sich um eine Datentransfervorrichtung bzw. um eine
Datenübertragungsvorrichtung mit einer gemeinsamen
Schnittstellen- und Steuereinheit, einer oder mehrerer
Verbindungs-I/O-Einheiten und einer zweiten lokalen
Zeitbasiseinheit. Bei der GPIM handelt es sich um ein
skalierbares Verbindungsnetzwerk, das eine parallele
Kommunikation zwischen T-Maschinen erleichtert bzw.
vereinfacht. Der Satz von T-Maschinen und die GPIM erleich
tert eine parallele Kommunikation zwischen S-Maschinen.
Dieser Abschnitt stellt die Sicht der ISA0-Architektur aus der Sicht des Programmierers dar, einschließlich
Register, Speichermodell, Aufrufkonventionen bzw. "Calling"-Konventionen von Sprachen hohen
Niveaus und eines Interruptmodells.
Die ISA0 umfaßt 16 16-Bit-Allzweckregister, 16 Adressenregister, zwei Prozessorstatusregister und ein
Interruptvektorregister. Die Mnemoniks für die Daten und Adressenregister verwenden hexadezimale
Zahlen, deshalb handelt es sich bei dem letzten Datenregister um df und bei dem letzten Adressenregister
um af. Einer der Prozessorstatusregister, nipar (Programmadressenregister für den nächsten Befehl bzw.
"Next Instruction Program Address Register"), zeigt zum Abruf auf die Adresse der nächsten Instruktion.
Das andere Statusregister pcw (Prozessorsteuerwort bzw. "Processor Control Word") beinhaltet Marken
bzw. Flags und Steuerbits, die verwendet werden, um Programmfluß- und Interrupthandhabung zu
bewirken. Seine Bits sind in Fig. 2 und 3 festgelegt. Undefinierte Bits sind für eine zukünftige Verwen
dung reserviert. Die vier Bedingungsflags bzw. Zustandsflags Z, N, V und G werden als Seiteneffekte
verschiedener Instruktionen eingestellt bzw. gesetzt. Für eine Zusammenfassung jener Flags bzw. Marken,
die durch jede Instruktion beeinträchtigt bzw. beeinflußt werden, siehe Abschnitt 2.0.
Das T-(Ablaufverfolgungsmodus bzw. "Trace Mode") und das IM-(Interruptmaske bzw. "Interrupt
Mask")-Flag steuert, wie der Prozessor auf die Interrupts antwortet und wann Traps gehandhabt werden.
Das Interruptvektorregister ivec hält die 64-Bitadresse der Interruptserviceroutine. Interrupts und Traps
werden im Abschnitt 1.4 beschrieben.
Werte, die in dem 64-Bit-Adressenregister gespeichert werden, werden bei Speicher-Lade-/Abspeicherin
struktionen verwendet und greifen auf den Speicher in 16- und 64-Bit-Inkrementen zu (siehe Tabelle 4).
Bei den Adressen handelt es sich um Bitadressen, d. h. Adresse 16 zeigt auch das Wort, das bei
Bit 16 in dem Speicher beginnt. Wörter können nur an 16-Bit-Grenzen gelesen werden und deshalb
werden die vier LSBs eines Adressenregisters ignoriert, wenn ein Speicher gelesen wird (siehe [1] zur
weiteren Diskussion des Konzepts Kisa.) 64-Bit-Werte werden als 16-Bit-Worte in der "Little-Endian"-
Ordnung (die 16 Bits mit der geringsten Signifikanz werden bei der niedrigsten Adresse gespeichert)
gespeichert.
Nach Konvention wird ein Register af als der Stackzeiger durch C-Programme verwendet und ein Register
ae wird als der Stackrahmenzeiger bzw. "Stack Frame Pointer" verwendet. Die Anemoniks sp und fp
können als Alias bzw. als Alternativnamen für diese Register verwendet werden. Alle anderen Register
sind zum allgemeinen Gebrauch frei. Der Stack wächst nach unten.
ints sind 16 Bits, longs sind 64, wie dies auch void *s sind. int-Werte werden in d0, long- und void*-
Werte in a0 zurückgegeben bzw. returned. d0-d4 und a0-a3 können durch Funktionen "überfahren" bzw.
"fertiggemacht" werden, alle anderen allgemeinen Register müssen über die Funktionsaufrufe erhalten
bleiben. Nachdem in eine Funktion eingetreten wurde, zeigt der Stackzeiger zu der Rückkehradresse bzw.
Returnadresse und somit beginnt das erste Argument bei Adresse sp+64 (Dezimal).
ISA0 arbeitet eine Interruptleitung und Software-Traps von zwei Quellen ab. Alle rufen denselben "Flow-
of-Control"-Transfermechanismus bzw. Steuerfluß-Transfermechanismus auf, der unten beschrieben wird.
Extern gibt es einen einzigen INTR-Signaleingang und einen iack-Ausgang. iack wird aktiv,
sobald das Interrupt-Maskierbit in pcw gelöscht ist, und zwar indem entweder pcw mit einer xpcw-
Instruktion zurückgesetzt wird oder pcw in seinem originalen Wert durch das Rückkehren aus dem
Interrupt mit einer rti-Instruktion wiederhergestellt wird. Die Zeitmenge, die zwischen dem Signal geben
des Interrupts durch die externe Vorrichtung und dem Abarbeiten des Interrupts durch den Prozessor
gebraucht wird, hängt von den Instruktionen ab, die gegenwärtig ausgeführt werden und von der Gegen
wart von Software-Traps.
Software-Traps werden entweder durch eine explizite trap-Instruktion oder durch das Ausführen einer
Instruktion, bei der das T-(trace)-Flag gesetzt ist, ausgelöst. In diesem Fall wird eine Steuerung zu der
Interruptserviceroutine übertragen, und zwar nach der ersten Instruktion, die dem Setzen des T folgt. Wenn
eine trap-Instruktion ausgeführt wird, dann setzt der Prozessor das T-Flag und tritt in die Interruptservice
routine ein als ob das T-Flag vor der Ausführung des Programms gesetzt worden wäre. Es werden keine
Interrupts abgearbeitet, während das T-Flag bzw. die T-Marke gesetzt ist. Es werden keine weiteren Traps
auftreten, bis das T-Flag entweder durch Rücksetzen von pcw mit einer xpcw-Instruktion oder durch sein
Rücksetzen aus dem Stack, indem aus dem Interrupt mit einer rti-Instruktion zurückgekehrt wird, gelöscht
wird.
Interrupts werden durch die Gegenwart von aktiven Signalen auf dem intr-Externsignal verursacht. Falls
das im-Flag oder das T-Flag gesetzt ist, dann werden die Interrupts maskiert und der anhängige Interrupt
wird ignoriert. Wenn das im-Flag und das T-Flag gelöscht werden, dann wird die Steuerung zu der
Interruptserviceroutine übertragen, und zwar nach der ersten Instruktion, die der Bestätigung von intr folgt.
Nach dem Eintritt in die Interruptserviceroutine wird das im-Flag durch den Prozessor gesetzt. Es werden
keine weiteren Interrupts auftreten, bis das im-Flag gelöscht ist, und zwar entweder durch ein Rücksetzen
von pcw mit einer xpcw-Instnktion oder durch sein Rücksetzen aus dem Stack, indem aus dem Interrupt
mit einer rti-Instruktion zurückgekehrt wird.
Die Schritte, die von dem Prozessor unternommen werden, wenn ein Interrupt oder ein Trap auftritt, sind
die folgenden:
- 1. Alle Instruktionen, die gegenwärtig ausgeführt werden, werden vollendet.
- 2. Die Inhalte der 16 Datenregister (d0 zuerst), der 16 Adressenregister (a0 zuerst), pcw, ivec und nipar werden auf den Stack (auf den durch das Register af gezeigt wird) in dieser Ordnung geschoben bzw. gepusht. Der Wert des af, der auf den Stack gepusht wird, ist sein Wert, bevor das Abarbeiten des Interrupts oder des Traps begann.
- 3. Falls dies ein Interrupt ist, dann wird das Interrupt-Bit in pcw besetzt um weitere Interrupts zu maskieren. Falls dies eine trap-Instruktion ist, dann wird das T-Flag gesetzt. Falls dies ein Trap ist, der durch den T-Flag verursacht wird, dann wird pcw nicht geändert.
- 4. nipar wird mit dem Wert in dem ivec-Register geladen.
- 5. Ausführung von Instruktionen in dem Interrupthandler beginnt dann.
Nach der Ausführung der rti-Instruktion werden die folgenden Aktionen unternommen:
- 1. Die Register werden von dem Stack in der umgekehrten Ordnung, in der sie geschrieben wurden, wiederhergestellt bzw. erneut gespeichert.
- 2. Die Ausführung wird wieder aufgenommen.
Es ist zu bemerken, daß, falls das Interrupt-Maskierflag nicht bereits gelöst worden ist, es durch die rti-
Instruktion gelöscht wird, da es nach dem Eintritt in die Serviceroutine gelöscht bzw. freigegeben war,
sofern nicht der Wert des pcw auf dem Stack modifiziert worden ist. Falls das T-Flag durch Ausführen
einer trap-Instraktion gesetzt worden ist, dann wird es nach der Ausführung einer rti aus gleichen Gründen
gelöscht. Falls der Trap durch das T-Flag verursacht wurde, das vor dem Eintritt in die Serviceroutine
gesetzt worden ist, dann muß es durch die Serviceroutine gelöscht werden, um zu bestätigen, daß der Trap
aufgetreten ist. Wenn das Interrupt-Maskierflag auf irgendwelche Weise gelöscht worden ist, wird das
externe Ausgangssignal iack für einen Taktzyklus aktiv, um der externen Vorrichtung bzw. dem externen
Bauelement zu signalisieren, daß der Interrupt abgearbeitet worden ist.
Die Notationskonventionen sind:
Der Instruktions-Satz für ISA0 ist unten in alphabetischer Ordnung aufgelistet. Die Mnemonik ist
mit einer kurzen Beschreibung dargestellt. Unterhalb dieser befindet sich die binäre Kodierung der
Instruktion. Jede Zeile in der binären Kodierung ist ein 16-Bit-Wort. Die beeinträchtigten Flags sind
dann aufgelistet. Falls nicht anders spezifiziert bzw. beschrieben, werden die Flags gesetzt, indem
die Daten verwendet werden, die in dem Bestimmungsregister gespeichert sind. Es wird an
genommen, daß nipar bereits zu Beginn der Instruktionsausführung inkrementiert worden ist.
Schließlich wird eine Textbeschreibung der Instruktions-Semanfik bereitgestellt.
Die Notations-Konventionen, die in den binären Kodierungen verwendet werden, werden in der
folgenden Tabelle beschrieben. Die Bedingung-Codes sind in Tabelle 7 definiert.
Addiert zwei Datenregister, läßt das Ergebnis im Bestimmungsregister.
Addiert zwei Datenregister plus das Carry-Flag bzw. Übertrags-Flag, läßt das Ergebnis im Be
stimmungsregister.
Addiert ein 8-Bit vorzeichenbehaftete (Zweierkomplement) Konstante zu einem Datenregister, läßt
das Ergebnis im Register.
Führt das bitweise UND von zwei Datenregister durch, läßt das Ergebnis im Bestimmungsregister.
Falls die Bedingung war ist, dann wird (offset «Kisa) zu nipar addiert.
(offset «Kisa) wird zu nipar addiert.
Verschiebe bedingt 8 Bit nach rechts und maskiere. Wird nach einer Lade-Instruktion verwendet,
um 8-Bit-Datenworte auszulesen, die von Wort-Offsets gelesen werden. Falls die Adresse, die in
dem Quellen-Adressregister enthalten ist, an einer 8-Bit-Grenze ( hat Bit 2 gesetzt) liegt, dann wird
der Wert des Datenregisters nach rechts um 8 Bit verschoben. Falls die Adresse nicht an einer 8-Bit-
Grenze liegt, werden die oberen 8-Bits des Registers gelöscht.
Merke: Der negative Flag wird mit Bit 7 gesetzt, nicht Bit 15. Dies erleichtert die Vorzeichen-
Ausdehnung von 8-Bit-Größen.
Setzt Flags zum Größenvergleich von zwei Datenregister, indem das Quellenregister von dem
Bestimmungsregister substrahiert wird, beeinflußt nur die Flags.
Vorzeichenbehaftete Division einer vorzeichenbehafteten 32-Bit-Integer durch eine vorzeichenbe
hattete 16-Bit Integer, gibt den vorzeichenbehafteten 16-Bit Quotienten und den Rest zurück. Der
32-Bit-Dividend wird gespeichert ("little-endian"), und zwar in zwei aufeinanderfolgenden Regi
stern, die von dem Index des Bestimmungsregister ausgehend beginnen. Der 16-Bit-Divisor ist im
Quellenregister bzw. Source-Register. Der Rest wird in dem Bestimmungsregister zurückgegeben,
und der Quotiont wird in dem Register nach dem Bestimmungsregister zurückgegeben (modulo 16).
Ein Überlauf tritt auf, falls der Quotient mehr als 16-Bits zur Darstellung benötigt.
Addiert ein Datenregister zu einem Adressenregister, läßt das Ergebnis im Adressenregister.
Addiert eine vorzeichenbehaftete 8-Bit-Konstante zu einem Adressenregister, läßt das Ergebnis in
dem Adressenregister.
Setzt Flags zum Größenvergleich von zwei Adressregister, indem das Quellenregister von dem
Bestimmungsregister substrahiert wird, beinflußt nur die Flags.
Addiert zwei Adressregister, läßt das Ergebnis im Bestimmungsregister.
Substrahiere das Quellenregister von dem Bestimmungsregister, speicher das Ergebnis in dem Bestimmungsregister ab.
Post-Inkrement Laden in das Adressregister. Speicher wird von der Adresse gelesen, auf die durch
das Quellenregister gezeigt wird, und wird in dem Bestimmungsregister plaziert. Das Quellen
register wird dann inkrementiert.
Lade 64-Bit-Konstante in ein Adressregister.
Bewege den Wert von dem Quellenregister zu dem Bestimmungs-Adressregister.
Schiebe ein Adressregister zu dem linken Bit. Das LSB wird durch den Wert des Carry-Flag ersetzt.
Das MSB wird in das Carry-Flag am Ende der Instruktion plaziert.
Schiebe ein Adressenregister zu dem linken Bit.
Schiebe ein Adressenregister zu dem rechten Bit.
Speichere aus einem Adressenregister. Der 64-Bit-Wert in dem Quellenregister wird in die Spei
cherstelle geschrieben, auf die durch das Bestimmungsregister gezeigt wird. Der Wert wird als vier
16-Bit-Wörter, die in der "little-endian"-Ordnung plaziert sind, geschrieben.
Prä-dekrement-speichern aus Adressenregister. Das Bestimmungsregister wird dekrementiert und
dann wird der Wert in dem Quellenregister in die Speicherstelle geschrieben, auf die durch das
Bestimmungsregister gezeigt wird. Der Wert wird als vier 16-Bit-Wörter geschrieben, die in "little-
endian"-Ordnung plaziert sind.
Substrahiert ein Datenregister von einem Adressenregister, läßt das Ergebnis im Adressregister.
Plaziert das bitweise Inverse des Quellenregisters in das Bestimmungsregister.
Bedingter Sprung zu Absolutadressen. Siehe Tabelle 7 für Bedingungscode-Bit-
Definitionen.
Unbedingter Sprung zu Absolut-Adresse. Dasselbe wie jCC mit Bedingung "immer".
Das Bestimmungsregister wird zuerst inkrementiert, dann wird das gegenwärtige nipar (zeigt zu der
nächsten Adresse) unter der Adresse abgespeichert, auf die durch das Bestimmungsregister (übli
cherweise der Stackpointer) gezeigt wird. nipar wird dann mit der Adresse in dem Quellenregister
geladen, bevor die nächste Instruktion geholt bzw. abgerufen wird.
Schiebe ein Datenregister um eine konstante Anzahl von Bits nach links.
Schiebe ein Datenregister um eine konstante Anzahl von Bits nach rechts.
Lade ein Datenregister aus dem Speicher. Der Wert, auf den durch das Quellenadreßregister gezeigt
wird, wird in das Bestimmungsdatenregister geladen.
Post-inkrement-laden in Datenregister. Speicher wird von der Adresse gelesen, auf die durch das
Quellenadressenregister gezeigt wird, und wird in das Bestimmungsdatenregister plaziert. Das
Quellenregister wird dann inkrementiert.
Lade einen 16-Bit-Sofort-Wert bzw. einen 16-Bit-Direkt-Wert in ein Datenregister.
Das Bestimmungregister wird durch das bitweise Inverse des Quellenregisters ersetzt, das mit dem
Bestimmungsregister gegründet wird.
Der Wert in dem Quellendatenregister wird in das Bestimmungsdatenregister plaziert.
Das Ergebnis der Multiplikation des Wertes in dem Quellenregister mit dem Wert in dem Be
stimmungsregister wird gespeichert ("little-endian"), und zwar in den zwei aufeinanderfolgenden
Registern, die mit dem Bestimmungsregister beginnen.
Führt das bitweise ODER bzw. OR von zwei Datenregistern durch, läßt das Ergebnis in dem
Bestimmungsregister.
Schiebe ein Datenregister zu dem linken Bit. Das LSB wird durch den Wert des Carry-Flag ersetzt.
Das ursprüngliche MSB wird in dem Carry-Flag am Ende der Instruktion plaziert.
Siehe Abschnitt 1.4. Das Quellenregister bzw. Sourceregister wird als Stack-Zeiger verwen
det.
Keine Kehre von Unterprogramm zurück. nipar wird aus der Speicherstelle geladen, auf die durch das
Bestimmungsregister (üblicherweise der Stack-Zeiger) gezeigt wird. Das Bestinunungsregister wird
dann inkrementiert.
Das Bestimmungsregister wird links um die Anzahl von Bits verschoben, die durch den Wert des
Quellenregister spezifiziert sind.
Das Bestimmungsregister wird rechts um die Anzahl von Bits verschoben, die durch den Wert des
Quellenregisters spezifiziert sind.
Speichere aus einem Datenregister. Der Wert in dem Quellenregister wird zu der Speicherstelle
geschrieben, auf die durch das Bestimmungsregister gezeigt wird.
Prä-dekrement-speichern aus Datenregister. Das Bestimmungregister wird dekrementiert und dann
wird der Wert in dem Quellenregister in die Speicherstelle geschrieben, auf die durch das Be
stimmungsregister gezeigt wird.
Substrahiere das Quellenregister von dem Bestimmungsregister, speichere das Ergebnis in dem
Bestimmungsregister.
Substrahiere das Quellenregister von dem Bestirnmungsregister, dann substrahiere das Carry-Bit,
wobei das Ergebnis in dem Bestimmungsregister gespeichert wird.
Führe Interrupt-Handler aus. Siehe Abschnitt 1.4. Das Bestimmungsregister wird als der
Stack-Pointer verwendet.
Nicht-vorzeichenbehaftete Division einer 32-Bit-Integer durch eine vorzeichenbehaftete 16-Bit-
Integer, wobei der vorzeichenbehaftete 16-Bit-Quotient und -Rest zurückgegeben wird. Die 32 Bits
werden in zwei aufeinander folgenden Registern, beginnend von dem Index des Bestimmungs
registers, gespeichert ("little endian"). Der Divisor ist in dem Quellenregister. Der Rest wird in das
Bestimmungsregister zurückgegeben und der Quotient wird in das nächste Register nach dem
Bestimmungregister zurückgegeben. Ein Überlauf tritt auf; falls der Quotiont mehr als 16-Bit zum
Darstellen erfordert.
Das Ergebnis der Multiplikation des Werts in dem Quellenregister mit dem Wert in dem Be
stimmungsregister wird gespeichert ("little-endian"), und zwar in zwei aufeinander folgende
Register beginnend mit dem Bestimmungsregister.
Übertrage den Wert in dem Quellenadressregister zu vier aufeinander folgende Datenregister
beginnend mit dem Bestimmungsregister. Der Wert wird "little-endian-"gespeichert und die
Bestimmungsregisteradresse wird modulo 16 berechnet, so daß das Bestimmungsregister jedes
Register sein kann.
Übertrag einen "little-endian"-64-Bit-Wert in vier aufeinanderfolgende Datenregister in das
Bestimmungsadressenregister. Die Quellenregisteradresse wird modulo 16 berechnet, so daß das
Bestimmungsregister jede Integer sein kann.
Führt das bitweise exklusive ODER bzw. OR bezüglich zwei Datenregistern durch, läßt das
Ergebnis im Bestimmungsregister.
Der Wert in dem Quellendatenregister wird durch das pcw-Register ausgetauscht.
Der Wert in dem Quellenadressregister wird mit dem ivec-Register ausgetauscht.
Die Bedingungs-Code-Opcode-Unterfelder verwenden die Werte der folgenden Tabelle:
ISA1 ist ein gepipelinte Multiplikations-Akkumulator-Array, das zu 4 simultanen Multiplikations-
Akkumulationen pro Instruktionszyklus in der Lage ist. Es gibt 8 8-Bit Datenregister (xd0-xd3 &
yd0-yd3), einen für jeden Eingang zu den vier 8-Bit-X-8-Bit-Multiplizierern. Die vier Multiplizierer
werden über ein gepipelinetes Addier-Array summiert, bis eine engültige 16-Bit-Summe her
auskommt, und zwar wo bis zu vier 16-Bit-Register das Ergebnis (m0-m4) speichern werden
können. Die Architektur der ISA1 vermutet einen Fluß-durch-Batch-Verarbeitungszyklus mit
Hauptspeicher. Für sich genommen gibt es keinen Feedback-Pfad bzw. Rückführ-Pfad durch den
Multiplikations-Akkumulator-Datenpfad, um akkumulierte Ergebnisse wieder aufzuarbeiten, weil
die Betonung auf den Speicher-Datenflußraten liegt. Es ist nichts vorgesehen für Überlauf-Skalie
rung oder erweiterte Endlichkeits-Akkumulierungen; ISA1 vermutet, daß die Koeffizienten, die für
Faltungs-Filtern verwendet werden, nicht mehr als 16-Bit-Ergebnis-Endlichkeiten für alle Datensät
ze hervorbringen. Das Multiplikations-Array nimmt 8-bit-2er-Komplement-Dateneingänge an und
erzeugt ein 16-Bit-2er-Komplement-Ergebnis.
Speicherzugriff wird durch zwei 64-Bit-Addressenregister (a0 & a1) verwaltet bzw. gehandhabt, die
als miteinander vertauschbare Quellen- und Bestimmungsregister gedacht werden können. Pro
grammfluß wird durch das Standard-64-Bit-NIPAR-Register verwaltet und ein 64-Bit-Interrupt-
Vektor-Register (IVEC) wird für einen einzelnen Interrupt, wie z. B. einen Frame- oder Daten
fertig-Interrupt, unterstützt.
Der Instruktionssatz von ISA1 ist sehr klein und auf 16-Bitwort-Größe ausgerichtet, die mit der
KISA=4-Speicher-Organisation für den Außenschleifen-Prozessor ISA0 zusammenpaßt. Bis zu 7
Arithmethikoperationen können in einem einzigen Taktzyklus mit ISA1 sofort ausgeführt bzw.
beispielhaft durchgeführt werden, und die Implementation hält eine Ergebnisrate von eins pro Takt
über ein schmales Fenster von Takten aufrecht, und zwar mit der Fähigkeit neue Quell- oder
Bestimmungsadressen zu indizieren und Registerdaten aus oder zu einem Speicher zu bewegen, und
zwar parallel mit einer Berechnung.
Jeder von bis zu 14 Registern wird sequentiell aus dem Speicher geladen, und zwar
gemäß 14-Bit-Bitmap-reg-vector, der rechts-justiert im Instruktionswort enthalten ist.
Jedes von bis zu 14 Register wird sequentiell in einen Speicher gespeichert, und
zwar gemäß einem 14-Bit-Bitmap-reg-vector, der rechts-justiert in dem Instruktionswort enthalten
ist.
Die 64-Bitadresse, die dieser Instruktion folgt, wird in das IVEC-Register geladen,
während NIPAR+=5, um auf die nächste auszuführende Instruktion zu zeigen.
Die 64-Bit-Adresse, die dieser Instruktion folgt, wird in das NIPAR-
Register geladen, wodurch auf die nächste auszuführende Instruktion gezeigt wird.
Das Multiplikations-Ergebnis-Register, auf das durch den 2-Bit-m-reg-Code
gezeigt wird, empfängt das Produkt und die Summe (xd0*yd0)+(xd1*yd1)+(xd2*yd2)+(xd3*yd3).
Das Multiplikations-Ergebnis-Register, auf das durch 2-Bits des 4-Bit-d-
vec-Codes gezeigt wird, empfängt das Produkt und die Summe (xd0*yd0) + (xd1*yd1) + (xd2*yd2)
+ (xd3*yd3). Ein anderes Bit des d-vec-Codes enabelt selektiv eine Speicher-Schreiboperation
dieses Ergebnis-Registers bei Adresse (a1) bzw. gibt diese frei, während das übrige Bit des d-vec-
Codes auswählt, ob das Adressenregister a1 inkrementiert wird oder nicht. Der 8-Bit-s-vec wird in
vier 2-Bit-Gruppen aufgeteilt, die sukzessiv für die Datenregister xd0-xd3 spezifizieren bzw.
vorgeben, ob eine Leseoperation aus dem Speicher bei Adresse (a0) auftreten soll und ob das
Adressenregister a0 inkrementiert werden soll. Falls Lese- oder Schreiboperationen spezifiziert bzw.
vorgegeben sind, werden sie parallel mit der Multiplikation durchgeführt. Die Software muß der
gepipelineten Ausrichtung der Instruktionsverarbeitung bezüglich Batches bzw. Blöcken von Daten
Rechnung tragen, die vom Speicher gelesen werden und im Speicher gespeichert werden.
ISA1 wird de-kontextet und die S-Maschine wird für die ISA rekonfigu
riert, die durch das ISA-vector-Bitfeld in der Instruktion ausgewählt ist.
Claims (69)
1. Dynamisch rekonfigurierbare Verarbeitungseinheit zum
Ausführen von Programminstruktionen, um Daten zu verarbei
ten, wobei die dynamisch rekonfigurierbare Verarbeitungsein
heit einen Eingang, einen Ausgang und eine veränderbare
interne Hardware-Organisation umfaßt, die selektiv während
der Ausführung einer Sequenz von Programminstruktionen zwi
schen einer ersten Hardware-Architektur, die Instruktionen
von einem ersten Instruktionssatz ausführt, und einer zwei
ten Hardware-Architektur, die Instruktionen eines zweiten
Instruktionssatzes ausführt, veränderbar ist, wobei die
dynamisch rekonfigurierbare Verarbeitungseinheit, wenn sie
als die erste Hardware-Architektur konfiguriert ist, auf
eine Rekonfigurationsinstruktion anspricht, um die interne
Hardware-Organisation der dynamisch rekonfigurierbaren Ver
arbeitungseinheit zu verändern, die als die zweite Hardware-
Architektur konfiguriert werden soll.
2. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, bei welcher die Rekonfigurationsinstruktion eine
der Instruktionen in dem ersten Instruktionssatz ist.
3. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, bei welcher die Rekonfigurationsinstruktion ein
Teil einer anderen Instruktion ist und die Ausführung der
Rekonfigurationsinstruktion von Daten abhängt, die in Regi
stern der dynamisch rekonfigurierbaren Verarbeitungseinheit
gespeichert sind.
4. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, die weiter folgendes umfaßt: eine zweite rekon
figurierbare Verarbeitungseinheit mit einem Eingang, einem
Ausgang und einer veränderbaren internen Hardware-Organisa
tion, die selektiv während der Ausführung einer Folge von
Programminstruktionen zwischen der ersten Hardware-Architek
tur, die Instruktionen von dem ersten Instruktionssatz aus
führt, und der zweiten Hardware-Architektur, die Instruktio
nen von dem zweiten Instruktionssatz ausführt, veränderbar
ist, wobei der Eingang der zweiten rekonfigurierbaren Ver
arbeitungseinheit mit dem Ausgang der dynamisch rekonfigu
rierbaren Verarbeitungseinheit verbunden ist und der Ausgang
der zweiten rekonfigurierbaren Verarbeitungseinheit mit dem
Eingang der dynamisch rekonfigurierbaren Verarbeitungsein
heit verbunden ist.
5. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 4, bei welcher die dynamisch rekonfigurierbare
Verarbeitungseinheit unabhängig von einer Rekonfiguration
der zweiten rekonfigurierbaren Verarbeitungseinheit dyna
misch rekonfigurierbar ist.
6. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, bei welcher es sich bei der ersten Hardware-
Architektur um einen seriellen Instruktionsprozessor bzw.
eine serielle Instruktionsverarbeitungseinrichtung handelt
und bei der zweiten Hardware-Architektur um einen parallelen
Instruktionsprozessor bzw. eine parallele Instruktionsver
arbeitungseinrichtung.
7. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, bei welcher die veränderbare interne Hardware-
Organisation der dynamisch rekonfigurierbaren Verarbeitungs
einheit eine Instruktionsabrufeinheit mit einem Datenein
gang, einem ersten Steuerausgang und einem zweiten Steuer
ausgang umfaßt, um Instruktionsausführungsoperationen in
nerhalb der dynamisch rekonfigurierbaren Verarbeitungsein
heit sequentiell zu ordnen, wobei der Dateneingang mit einem
Datenport eines Speichers verbunden ist.
8. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 7, bei welcher die Instruktionsabrufeinheit weiter
folgendes aufweist:
einen Architekturbeschreibungsspeicher mit einem Aus gang, wobei der Architekturbeschreibungsspeicher einen Satz von Architekturbeschreibungssignalen einschließlich eines Interruptantwortsignals speichert, das eine Art und Weise spezifiziert, in der die dynamisch rekonfigurierbare Ver arbeitungseinheit auf ein Interruptsignal antwortet, wenn sie konfiguriert ist, um eine Instruktionssatz-Architektur zu verwirklichen bzw. zu implementieren;
eine Instruktionszustandsfolgesteuereinheit bzw. ein Instruktionszustands-Sequenzer mit einem Eingang und einem Ausgang, um einen Instruktionsausführungszyklus und einen Übergang zwischen einem Instruktionsabrufzustand, einem Instruktionsdecodierzustand, einem Instruktionsausführungs zustand und einem Schreib-zurück-Zustand zu steuern; und
eine Interruptzustandsmaschine mit einem Eingang und einem Ausgang, um ein Übergangssteuersignal zu erzeugen, das einen Zustand, innerhalb des Instruktionsausführungszyklus spezifiziert, für den ein Übergang zu einem Interruptservi cezustand erlaubt ist, wobei der Eingang der Interruptzu standsmaschine mit dem Ausgang des Architekturbeschreibungs speichers verbunden ist, der Ausgang der Interruptzustands maschine mit dem Eingang der Instruktionszustands-Folgesteu ereinheit bzw. dem Instruktionszustands-Sequenzer verbunden ist.
einen Architekturbeschreibungsspeicher mit einem Aus gang, wobei der Architekturbeschreibungsspeicher einen Satz von Architekturbeschreibungssignalen einschließlich eines Interruptantwortsignals speichert, das eine Art und Weise spezifiziert, in der die dynamisch rekonfigurierbare Ver arbeitungseinheit auf ein Interruptsignal antwortet, wenn sie konfiguriert ist, um eine Instruktionssatz-Architektur zu verwirklichen bzw. zu implementieren;
eine Instruktionszustandsfolgesteuereinheit bzw. ein Instruktionszustands-Sequenzer mit einem Eingang und einem Ausgang, um einen Instruktionsausführungszyklus und einen Übergang zwischen einem Instruktionsabrufzustand, einem Instruktionsdecodierzustand, einem Instruktionsausführungs zustand und einem Schreib-zurück-Zustand zu steuern; und
eine Interruptzustandsmaschine mit einem Eingang und einem Ausgang, um ein Übergangssteuersignal zu erzeugen, das einen Zustand, innerhalb des Instruktionsausführungszyklus spezifiziert, für den ein Übergang zu einem Interruptservi cezustand erlaubt ist, wobei der Eingang der Interruptzu standsmaschine mit dem Ausgang des Architekturbeschreibungs speichers verbunden ist, der Ausgang der Interruptzustands maschine mit dem Eingang der Instruktionszustands-Folgesteu ereinheit bzw. dem Instruktionszustands-Sequenzer verbunden ist.
9. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, bei welcher die veränderbare interne Hardware-
Organisation der dynamisch rekonfigurierbaren Verarbeitungs
einheit eine Datenoperationseinheit mit einem Datenport und
einem Steuereingang umfaßt, um Operationen bezüglich der
Daten durchzuführen, wobei der Datenport der Datenopera
tionseinheit mit dem Datenport des Speichers verbunden ist
und der Steuereingang verbunden ist, um Steuersignale zu
empfangen.
10. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 9, bei welcher die Datenoperationseinheit folgendes
umfaßt:
einen Schalter mit einem Datenport, einen Steuerein gang, einen Rückführ- bzw. Feedbackeingang und einen Aus gang, um selektiv Daten zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten, wobei der Datenport des Schalters mit dem Datenport des Speichers verbunden ist und der Steuereingang des Schalters verbunden ist, um Steuersignale zu empfangen;
eine Abspeicher-/Ausrichteinheit mit einem Eingang, einem Ausgang und einer Steuereinheit, um Daten zu spei chern, wobei der Eingang der Abspeicher-/Ausrichteinheit mit dem Ausgang des Schalters verbunden ist und der Steuerein gang der Abspeicher-/Ausrichteinheit verbunden ist, um Steuersignale zu empfangen; und
eine Datenoperationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Datenberechnungen durch zuführen, wobei der Eingang der Datenoperationsschaltung mit dem Ausgang der Abspeicher-/Ausrichteinheit verbunden ist, der Ausgang der Datenoperationseinheit mit dem Rückführ- bzw. Feedbackeingang des Schalters verbunden ist und der Steuereingang der Datenoperationslogik verbunden ist, um Steuersignale zu empfangen.
einen Schalter mit einem Datenport, einen Steuerein gang, einen Rückführ- bzw. Feedbackeingang und einen Aus gang, um selektiv Daten zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten, wobei der Datenport des Schalters mit dem Datenport des Speichers verbunden ist und der Steuereingang des Schalters verbunden ist, um Steuersignale zu empfangen;
eine Abspeicher-/Ausrichteinheit mit einem Eingang, einem Ausgang und einer Steuereinheit, um Daten zu spei chern, wobei der Eingang der Abspeicher-/Ausrichteinheit mit dem Ausgang des Schalters verbunden ist und der Steuerein gang der Abspeicher-/Ausrichteinheit verbunden ist, um Steuersignale zu empfangen; und
eine Datenoperationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Datenberechnungen durch zuführen, wobei der Eingang der Datenoperationsschaltung mit dem Ausgang der Abspeicher-/Ausrichteinheit verbunden ist, der Ausgang der Datenoperationseinheit mit dem Rückführ- bzw. Feedbackeingang des Schalters verbunden ist und der Steuereingang der Datenoperationslogik verbunden ist, um Steuersignale zu empfangen.
11. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 10, bei welcher die Abspeicher-/Ausrichteinheit re
konfigurierbar ist und selektiv als eine aus der Gruppe von
einem Speicher mit wahlfreiem Zugriff bzw. ein RAM und einem
gepipelineten Register bzw. Fließbandregister konfiguriert
werden kann, und zwar in Antwort auf Steuersignale für eine
entsprechende Instruktionssatz -Architektur.
12. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 10, bei welcher entsprechend Signalen die Daten
operationseinheit rekonfigurierbar ist und selektiv als eine
aus der Gruppe von einer arithmetische Logikeinheit und
einer gepipelineten Funktionseinheit bzw. Fließband-Funk
tionseinheit konfiguriert werden kann, und zwar in Antwort
auf Steuersignale für eine entsprechende Instruktionssatz-
Architektur.
13. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 1, bei welcher die veränderbare interne Hardware-
Organisation der rekonfigurierbaren Verarbeitungseinheit
eine Adressen-Operationseinheit mit einem Steuereingang,
einem Adresseneingang und einem Ausgang umfaßt, um Operatio
nen bezüglich Adressen durchzuführen, wobei der Adressen
eingang mit dem Datenport eines Speichers verbunden ist und
der Ausgang der Adressen-Operationseinheit mit einem Adres
seneingang des Speichers verbunden ist, und der Steuerein
gang der Adressen-Operationseinheit verbunden ist, um Steu
ersignale zu empfangen.
14. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 13, bei welcher die Adressen-Operationseinheit
folgendes umfaßt:
einen Schalter mit einem Datenport, einen Steuerein gang, einen Rückführ- bzw. Feedbackeingang und einen Aus gang, um selektiv Adressen zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten bzw. zu führen, und zwar in Antwort auf ein Steuersignal, das bei dem Steuereingang empfangen wurde, wobei der Daten port des Schalters mit dem Datenport des Speichers verbunden ist;
eine Abspeicher-/Zähleinheit mit einem Eingang, einem Ausgang und einem Steuereingang, um Daten zu speichern, wobei der Eingang der Abspeicher-/Zähleinheit mit dem Aus gang des Schalters verbunden ist, der Steuereingang der Abspeicher-/Zähllogik verbunden ist, um Steuersignale zu empfangen; und
eine Adressen-Operationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Adressenberech nungen durchzuführen, wobei der Eingang der Adressen-Opera tionsschaltung mit dem Ausgang der Abspeicher-/Zähleinheit verbunden ist, der Ausgang der Adressen-Operationsschaltung mit dem Rückführ- bzw. Feedbackeingang des Schalters verbun den ist, und der Steuereingang der Adressen-Operationsein heit verbunden ist, um Steuersignale zu empfangen.
einen Schalter mit einem Datenport, einen Steuerein gang, einen Rückführ- bzw. Feedbackeingang und einen Aus gang, um selektiv Adressen zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten bzw. zu führen, und zwar in Antwort auf ein Steuersignal, das bei dem Steuereingang empfangen wurde, wobei der Daten port des Schalters mit dem Datenport des Speichers verbunden ist;
eine Abspeicher-/Zähleinheit mit einem Eingang, einem Ausgang und einem Steuereingang, um Daten zu speichern, wobei der Eingang der Abspeicher-/Zähleinheit mit dem Aus gang des Schalters verbunden ist, der Steuereingang der Abspeicher-/Zähllogik verbunden ist, um Steuersignale zu empfangen; und
eine Adressen-Operationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Adressenberech nungen durchzuführen, wobei der Eingang der Adressen-Opera tionsschaltung mit dem Ausgang der Abspeicher-/Zähleinheit verbunden ist, der Ausgang der Adressen-Operationsschaltung mit dem Rückführ- bzw. Feedbackeingang des Schalters verbun den ist, und der Steuereingang der Adressen-Operationsein heit verbunden ist, um Steuersignale zu empfangen.
15. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 14, bei welcher die Abspeicher-/Zähleinheit rekon
figurierbar ist und selektiv als etwas aus der Gruppe kon
figuriert werden kann, die ein Speicher mit wahlfreiem Zu
griff bzw. ein RAM und ein Register aufweist, und zwar in
Antwort auf Signale, die an dem Steuereingang der
Abspeicher-/Zähleinheit empfangen werden.
16. Dynamisch rekonfigurierbare Verarbeitungseinheit nach
Anspruch 14, bei welcher die Adressen-Operationsschaltung
als eine aus der Gruppe von einem Register und einem Regi
ster und einer arithmetischen Einheit rekonfigurierbar ist,
und zwar in Antwort auf Signale, die bei dem Steuereingang
der Adressen-Operationsschaltung empfangen werden.
17. System zur dynamisch rekonfigurierbaren Steuerung, das
folgendes umfaßt:
eine erste rekonfigurierbare Verarbeitungseinheit zur Ausführung von Programminstruktionen, um Daten zu verarbei ten, wobei die erste rekonfigurierbare Verarbeitungseinheit einen Eingang, einen Ausgang und eine veränderbare interne Hardware-Organisation aufweist, die selektiv während der Ausführung einer Sequenz von Programminstruktionen veränder bar ist;
eine erste Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von der ersten rekonfigurierbaren Verarbeitungseinheit zu übertragen, wobei der Eingang der ersten Kommunikationsvorrichtung mit dem Ausgang der ersten rekonfigurierbaren Verarbeitungseinheit verbunden ist, und der Ausgang der ersten Kommunikationsvorrichtung mit dem Eingang der ersten rekonfigurierbaren Verarbeitungseinheit verbunden ist.
eine erste rekonfigurierbare Verarbeitungseinheit zur Ausführung von Programminstruktionen, um Daten zu verarbei ten, wobei die erste rekonfigurierbare Verarbeitungseinheit einen Eingang, einen Ausgang und eine veränderbare interne Hardware-Organisation aufweist, die selektiv während der Ausführung einer Sequenz von Programminstruktionen veränder bar ist;
eine erste Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von der ersten rekonfigurierbaren Verarbeitungseinheit zu übertragen, wobei der Eingang der ersten Kommunikationsvorrichtung mit dem Ausgang der ersten rekonfigurierbaren Verarbeitungseinheit verbunden ist, und der Ausgang der ersten Kommunikationsvorrichtung mit dem Eingang der ersten rekonfigurierbaren Verarbeitungseinheit verbunden ist.
18. System nach Anspruch 17, das weiter folgendes umfaßt:
eine zweite rekonfigurierbare Verarbeitungseinheit zur Ausführung von Programminstruktionen, um Daten zu verarbei ten, wobei die zweite rekonfigurierbare Verarbeitungseinheit einen Eingang, einen Ausgang und eine veränderbare interne Hardware-Organisation umfaßt, die selektiv während der Aus führung einer Sequenz von Programminstruktionen veränderbar ist;
eine zweite Kommunikationsvorrichtung mit einem Ein gang, einem Ausgang, einem ersten Datenport und einem zwei ten Datenport, um Daten zu und von der zweiten rekonfigu rierbaren Verarbeitungseinheit zu übertragen, wobei der Eingang der zweiten Kommunikationsvorrichtung mit dem Aus gang der zweiten rekonfigurierbaren Verarbeitungseinheit verbunden ist, und der Ausgang der zweiten Kommunikations vorrichtung mit dem Eingang der zweiten rekonfigurierbaren Verarbeitungseinheit verbunden ist; und
eine Verbindungseinrichtung zum Leiten von Daten und mit einer Vielzahl von Kommunikationskanälen, wobei sowohl der erste Datenport der ersten Kommunikationsvorrichtung als auch der zweite Datenport der ersten Kommunikationsvorrich tung und der erste Datenport der zweiten Kommunikationsvor richtung und der zweite Datenport der zweiten Kommunika tionsvorrichtung mit einem der Vielzahl von Kommunikations kanälen verbunden ist.
eine zweite rekonfigurierbare Verarbeitungseinheit zur Ausführung von Programminstruktionen, um Daten zu verarbei ten, wobei die zweite rekonfigurierbare Verarbeitungseinheit einen Eingang, einen Ausgang und eine veränderbare interne Hardware-Organisation umfaßt, die selektiv während der Aus führung einer Sequenz von Programminstruktionen veränderbar ist;
eine zweite Kommunikationsvorrichtung mit einem Ein gang, einem Ausgang, einem ersten Datenport und einem zwei ten Datenport, um Daten zu und von der zweiten rekonfigu rierbaren Verarbeitungseinheit zu übertragen, wobei der Eingang der zweiten Kommunikationsvorrichtung mit dem Aus gang der zweiten rekonfigurierbaren Verarbeitungseinheit verbunden ist, und der Ausgang der zweiten Kommunikations vorrichtung mit dem Eingang der zweiten rekonfigurierbaren Verarbeitungseinheit verbunden ist; und
eine Verbindungseinrichtung zum Leiten von Daten und mit einer Vielzahl von Kommunikationskanälen, wobei sowohl der erste Datenport der ersten Kommunikationsvorrichtung als auch der zweite Datenport der ersten Kommunikationsvorrich tung und der erste Datenport der zweiten Kommunikationsvor richtung und der zweite Datenport der zweiten Kommunika tionsvorrichtung mit einem der Vielzahl von Kommunikations kanälen verbunden ist.
19. System nach Anspruch 18, bei welchem die erste rekon
figurierbare Verarbeitungseinheit dynamisch unabhängig von
der Rekonfiguration der zweiten rekonfigurierbaren Verarbei
tungseinheit rekonfigurierbar ist.
20. System Anspruch 18, das weiter folgendes aufweist:
eine dritte rekonfigurierbare Verarbeitungseinheit zur Ausführung von Programminstruktionen, um Daten zu verarbei ten, wobei die dritte rekonfigurierbare Verarbeitungseinheit einen Eingang, einen Ausgang und eine veränderbare interne Hardware-Organisation aufweist, die selektiv während der Ausführung einer Sequenz von Programminstruktionen veränder bar ist; und
eine dritte Kommunikationsvorrichtung mit einem Ein gang, einem Ausgang, einem ersten Datenport und einem zwei ten Datenport, um Daten zu und von der dritten rekonfigu rierbaren Verarbeitungseinheit zu übertragen, wobei der Eingang der dritten Kommunikationsvorrichtung mit dem Aus gang der dritten rekonfigurierbaren Verarbeitungseinheit verbunden ist, der Ausgang der dritten Kommunikationsvor richtung mit dem Eingang der dritten rekonfigurierbaren Ver arbeitungseinheit verbunden ist, sowohl der erste Datenport der dritten Kommunikationsvorrichtung als auch der zweite Datenport der dritten Kommunikationsvorrichtung mit einer der Vielzahl von Kommunikationskanälen der Verbindungsein richtung verbunden ist.
eine dritte rekonfigurierbare Verarbeitungseinheit zur Ausführung von Programminstruktionen, um Daten zu verarbei ten, wobei die dritte rekonfigurierbare Verarbeitungseinheit einen Eingang, einen Ausgang und eine veränderbare interne Hardware-Organisation aufweist, die selektiv während der Ausführung einer Sequenz von Programminstruktionen veränder bar ist; und
eine dritte Kommunikationsvorrichtung mit einem Ein gang, einem Ausgang, einem ersten Datenport und einem zwei ten Datenport, um Daten zu und von der dritten rekonfigu rierbaren Verarbeitungseinheit zu übertragen, wobei der Eingang der dritten Kommunikationsvorrichtung mit dem Aus gang der dritten rekonfigurierbaren Verarbeitungseinheit verbunden ist, der Ausgang der dritten Kommunikationsvor richtung mit dem Eingang der dritten rekonfigurierbaren Ver arbeitungseinheit verbunden ist, sowohl der erste Datenport der dritten Kommunikationsvorrichtung als auch der zweite Datenport der dritten Kommunikationsvorrichtung mit einer der Vielzahl von Kommunikationskanälen der Verbindungsein richtung verbunden ist.
21. System nach Anspruch 17, das weiter folgendes aufweist:
eine nicht-rekonfigurierbare Verarbeitungseinheit mit einer vorbestimmten Architektur, um ein Programm von In struktionen auszuführen, das aus einem einzigen Instruk tionssatz ausgebildet ist, wobei die nicht-rekonfigurierbare Verarbeitungseinheit einen Eingang und einen Ausgang umfaßt; und
eine zweite Kommunikationsvorrichtung mit einem Ein gang, einem Ausgang, einem ersten Datenport und einem zwei ten Datenport, um Daten zu und von der nicht-rekonfigurier baren Verarbeitungseinheit zu übertragen, wobei der Eingang der dritten Kommunikationsvorrichtung mit dem Ausgang der nicht-rekonfigurierbaren Verarbeitungseinheit verbunden ist, der Ausgang der dritten Kommunikationsvorrichtung mit dem Eingang der nicht-rekonfigurierbaren Verarbeitungseinheit verbunden ist; und
eine Verbindungseinrichtung zum Leiten von Daten mit einer Vielzahl von Kommunikationskanälen, wobei sowohl der erste Datenport der ersten Kommunikationsvorrichtung als auch der zweite Datenport der ersten Kommunikationsvorrich tung und der erste Datenport der zweiten Kommunikationsvor richtung und der zweite Datenport der zweiten Kommunika tionsvorrichtung mit einem der Vielzahl von Kommunikations kanälen verbunden ist.
eine nicht-rekonfigurierbare Verarbeitungseinheit mit einer vorbestimmten Architektur, um ein Programm von In struktionen auszuführen, das aus einem einzigen Instruk tionssatz ausgebildet ist, wobei die nicht-rekonfigurierbare Verarbeitungseinheit einen Eingang und einen Ausgang umfaßt; und
eine zweite Kommunikationsvorrichtung mit einem Ein gang, einem Ausgang, einem ersten Datenport und einem zwei ten Datenport, um Daten zu und von der nicht-rekonfigurier baren Verarbeitungseinheit zu übertragen, wobei der Eingang der dritten Kommunikationsvorrichtung mit dem Ausgang der nicht-rekonfigurierbaren Verarbeitungseinheit verbunden ist, der Ausgang der dritten Kommunikationsvorrichtung mit dem Eingang der nicht-rekonfigurierbaren Verarbeitungseinheit verbunden ist; und
eine Verbindungseinrichtung zum Leiten von Daten mit einer Vielzahl von Kommunikationskanälen, wobei sowohl der erste Datenport der ersten Kommunikationsvorrichtung als auch der zweite Datenport der ersten Kommunikationsvorrich tung und der erste Datenport der zweiten Kommunikationsvor richtung und der zweite Datenport der zweiten Kommunika tionsvorrichtung mit einem der Vielzahl von Kommunikations kanälen verbunden ist.
22. System nach Anspruch 17, das weiter folgendes aufweist:
eine I/O-Vorrichtung mit einem Eingang und einem Aus gang; und
eine I/O-Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von der I/O-Vorrichtung zu über tragen, wobei der Eingang der I/O-Kommunikationsvorrichtung mit dem Ausgang der I/O-Vorrichtung verbunden ist, der Aus gang der I/O-Kommunikationsvorrichtung mit dem Eingang der I/O-Vorrichtung verbunden ist; und
eine Verbindungseinrichtung zum Leiten von Daten mit einer Vielzahl von Kommunikationskanälen, wobei sowohl der erste Datenport der ersten Kommunikationsvorrichtung als auch der zweite Datenport der ersten Kommunikationsvorrich tung und der erste Datenport der I/O-Kommunikationsvorrich tung und der zweite Datenport der I/O-Kommunikationsvor richtung mit einem der Vielzahl von Kommunikationskanälen verbunden ist.
eine I/O-Vorrichtung mit einem Eingang und einem Aus gang; und
eine I/O-Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von der I/O-Vorrichtung zu über tragen, wobei der Eingang der I/O-Kommunikationsvorrichtung mit dem Ausgang der I/O-Vorrichtung verbunden ist, der Aus gang der I/O-Kommunikationsvorrichtung mit dem Eingang der I/O-Vorrichtung verbunden ist; und
eine Verbindungseinrichtung zum Leiten von Daten mit einer Vielzahl von Kommunikationskanälen, wobei sowohl der erste Datenport der ersten Kommunikationsvorrichtung als auch der zweite Datenport der ersten Kommunikationsvorrich tung und der erste Datenport der I/O-Kommunikationsvorrich tung und der zweite Datenport der I/O-Kommunikationsvor richtung mit einem der Vielzahl von Kommunikationskanälen verbunden ist.
23. System nach Anspruch 17, das weiter eine Master-Zeit
basiseinheit mit einem Ausgang umfaßt, um ein Master-Zeit
steuersignal zu der ersten rekonfigurierbaren Verarbeitungs
einheit zu liefern.
24. System nach Anspruch 23, bei welchem die erste rekon
figurierbare Verarbeitungseinheit weiter eine lokale Zeitba
sis-Einheit mit einem Eingang und einem Ausgang umfaßt, um
ein lokales Zeitsteuersignal von dem Master-Zeitsteuersignal
zu erzeugen, wobei der Eingang der lokalen Zeitbasis-Einheit
mit dem Ausgang der Master-Zeitbasiseinheit verbunden ist
und der Ausgang der lokalen Zeitbasiseinheit mit einem Zeit
steuereingang der rekonfigurierbaren Verarbeitungseinheit
verbunden ist.
25. System nach Anspruch 17, bei welchem die erste rekon
figurierbare Verarbeitungseinheit aus einer programmierbaren
Logikvorrichtung aufgebaut ist.
26. System nach Anspruch 25, bei welchem die programmier
bare Logikvorrichtung ein erstes feldprogrammierbares Gat
ter-Array ist, das eine Vielzahl von konfigurierbaren Logik
blöcken, eine Vielzahl von programmierbaren I/O-Blöcken und
eine Vielzahl von programmierbaren Verbindungsstrukturen und
Datenspeicher-Systemelementen enthält.
27. System nach Anspruch 17, bei welchem das System weiter
einen Speicher umfaßt, der einen ersten Konfigurationsdaten
satz speichert, der einer ersten Instruktionssatz-Architek
tur für einen seriellen Instruktionsprozessor entspricht,
und einem zweiten Konfigurationsdatensatz, der einer zweiten
Instruktionssatz-Architektur für einen parallelen Instruk
tionsprozessor entspricht, umfaßt und bei welchem die erste
rekonfigurierbare Verarbeitungseinheit selektiv als eine aus
der Gruppe von einem seriellen Instruktionsprozessor und
einem parallelen Instruktionsprozessor konfiguriert wird,
und zwar in Antwort auf Signale von dem Speicher, wobei die
erste rekonfigurierbare Verarbeitungseinheit mit dem Spei
cher verbunden ist.
28. System nach Anspruch 27, bei welchem die erste rekon
figurierbare Verarbeitungseinheit mit dem Speicher über eine
Vielzahl von Signalleitungen verbunden ist und die erste An
zahl von der Vielzahl von Signalleitungen Adressenleitungen
ausbildet, eine zweite Anzahl von der Vielzahl von
Signalleitungen Steuerleitungen ausbildet und eine dritte
Anzahl der Vielzahl von Signalleitungen Datenleitungen aus
bildet, wobei die erste Anzahl, die zweite Anzahl und dritte
Anzahl der Vielzahl von Signalleitungen rekonfigurierbar
sind und gemäß einem Konfigurationsdatensatz gesetzt bzw.
eingestellt werden, der durch die erste rekonfigurierbare
Verarbeitungseinheit verwendet wird.
29. System nach Anspruch 17, bei welchem die veränderbare
interne Hardware-Organisation der ersten rekonfigurierbaren
Verarbeitungseinheit eine rekonfigurierbare Instruktions
abrufeinheit mit einem ersten Dateneingang, einem ersten
Steuerausgang und einem zweiten Steuerausgang umfaßt, um
Instruktions-Ausführungsoperationen innerhalb der ersten
rekonfigurierbaren Verarbeitungseinheit sequentiell zu ord
nen, wobei der Dateneingang mit einem Datenport eines Spei
chers verbunden ist.
30. System nach Anspruch 28, bei welchem die Instruktions
abrufeinheit einen Architekturbeschreibungsspeicher mit
einem Ausgang umfaßt, wobei der Architekturbeschreibungs
speicher einen Satz von Architekturbeschreibungssignalen
einschließlich eines Interruptantwortsignals speichert, das
eine Art und Weise spezifiziert, in der die erste rekonfigu
rierbare Verarbeitungseinheit auf ein Interruptsignal ant
wortet, wenn sie konfiguriert ist, um eine Instruktionssatz-
Architektur zu realisieren bzw. zu implementieren.
31. System nach Anspruch 30, bei welchem die Instruktions
abrufeinheit weiter folgendes umfaßt:
einen Instruktionszustandssequenzer bzw. eine Instruk tionszustandsfolgesteuereinheit mit einem Eingang und einem Ausgang, um einen Instruktionsausführungszyklus mit einem Instruktionsabrufzustand, einen Instruktionsdecodierzustand,
einen Instruktionsausführungszustand und einen Schreib-zurück- Zustand zu steuern, wobei der Instruktionsausführungszyklus zu der Ausführung einer Instruktion innerhalb der Instruktionssatz-Architektur führt; und
eine Interruptszustandsmaschine mit einem Eingang und einem Ausgang, um ein Übergangssteuersignal zu erzeugen, das einen Zustand innerhalb des Instruktionsausführungszyklus spezifiziert, für den ein Übergang zu einem Interruptservi cezustand erlaubt ist, wobei der Eingang der Interruptzu standsmaschine mit dem Ausgang des Architekturbeschreibungs speichers verbunden ist, der Ausgang der Interruptzustands maschine mit dem Eingang des Instruktionszustandssequenzers bzw. der Instruktionszustandsfolgesteuereinheit verbunden ist.
einen Instruktionszustandssequenzer bzw. eine Instruk tionszustandsfolgesteuereinheit mit einem Eingang und einem Ausgang, um einen Instruktionsausführungszyklus mit einem Instruktionsabrufzustand, einen Instruktionsdecodierzustand,
einen Instruktionsausführungszustand und einen Schreib-zurück- Zustand zu steuern, wobei der Instruktionsausführungszyklus zu der Ausführung einer Instruktion innerhalb der Instruktionssatz-Architektur führt; und
eine Interruptszustandsmaschine mit einem Eingang und einem Ausgang, um ein Übergangssteuersignal zu erzeugen, das einen Zustand innerhalb des Instruktionsausführungszyklus spezifiziert, für den ein Übergang zu einem Interruptservi cezustand erlaubt ist, wobei der Eingang der Interruptzu standsmaschine mit dem Ausgang des Architekturbeschreibungs speichers verbunden ist, der Ausgang der Interruptzustands maschine mit dem Eingang des Instruktionszustandssequenzers bzw. der Instruktionszustandsfolgesteuereinheit verbunden ist.
32. System nach Anspruch 31, bei welchem die Instruktions
abrufeinheit weiter folgendes aufweist:
eine programmierbare Abrufsteuereinheit mit einem Eingang und einem Ausgang, um die Operation eines Instruktionspuffers variabler Größe zu steuern, wobei der Eingang der programmier baren Abrufsteuereinheit mit einem Ausgang der Instruktions zustandsfolgesteuereinheit bzw. des Instruktionszustands sequenzers verbunden ist, um Signale zu empfangen, die die Operation der programmierbaren Abrufsteuereinheit festlegen, wobei der Eingang der programmierbaren Abrufsteuereinheit mit dem Instruktionspuffer verbunden ist; und
eine programmierbare Decodiersteuereinheit mit einem Eingang und einem Ausgang, um die Operation eines Instruk tionsdecoders variabler Größe zu steuern, wobei der Eingang der programmierbaren Abrufsteuereinheit mit dem Ausgang des Instruktionszustandssequenzers bzw. der Instruktionszu standsfolgesteuereinheit verbunden ist, um Signale zu empfangen, die die Operation der programmierbaren Decodier steuereinheit festlegen, wobei der Ausgang der programmier baren Decodiersteuereinheit mit dem Instruktiondecoder ver bunden ist und der Instruktionsdecoder verbunden ist, um Programminstruktionen von dem Instruktionspuffer zu empfangen.
eine programmierbare Abrufsteuereinheit mit einem Eingang und einem Ausgang, um die Operation eines Instruktionspuffers variabler Größe zu steuern, wobei der Eingang der programmier baren Abrufsteuereinheit mit einem Ausgang der Instruktions zustandsfolgesteuereinheit bzw. des Instruktionszustands sequenzers verbunden ist, um Signale zu empfangen, die die Operation der programmierbaren Abrufsteuereinheit festlegen, wobei der Eingang der programmierbaren Abrufsteuereinheit mit dem Instruktionspuffer verbunden ist; und
eine programmierbare Decodiersteuereinheit mit einem Eingang und einem Ausgang, um die Operation eines Instruk tionsdecoders variabler Größe zu steuern, wobei der Eingang der programmierbaren Abrufsteuereinheit mit dem Ausgang des Instruktionszustandssequenzers bzw. der Instruktionszu standsfolgesteuereinheit verbunden ist, um Signale zu empfangen, die die Operation der programmierbaren Decodier steuereinheit festlegen, wobei der Ausgang der programmier baren Decodiersteuereinheit mit dem Instruktiondecoder ver bunden ist und der Instruktionsdecoder verbunden ist, um Programminstruktionen von dem Instruktionspuffer zu empfangen.
33. System nach Anspruch 17, bei welchem die veränderbare
interne Hardware-Organisation der ersten rekonfigurierbaren
Verarbeitungseinheit eine rekonfigurierbare Datenoperations
einheit mit einem Datenport und einem Steuereingang umfaßt,
um Operationen bezüglich Daten durchzuführen, wobei der
Datenport der Datenoperationseinheit mit einem Datenport eines
Speichers verbunden ist und der Steuereingang verbunden ist,
um Steuersignale zu empfangen.
34. System nach Anspruch 33, bei welchem die rekonfigurier
bare Datenoperationseinheit folgendes aufweist:
einen Schalter mit einem Datenport, einem Steuereingang, einem Rückführ- bzw. Feedbackeingang und einem Ausgang, um selektiv Daten zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten, wobei der Datenport des Schalters mit dem Datenport des Speichers verbunden ist und der Steuereingang des Schalters mit dem ersten Steuer ausgang der Instruktionsabrufeinheit verbunden ist;
eine Abspeicher-/Ausrichteinheit mit einem Eingang, einem Ausgang und einer Steuereinheit, um Daten und Datenberech nungsergebnisse zu speichern, wobei der Eingang der Abspeicher-/Ausrichteinheit mit dem Ausgang des Schalters verbunden ist, der Steuereingang der Speicher-/Ausrichteinheit mit dem ersten Steuerausgang der Instruktionsabrufeinheit ver bunden ist; und
eine Datenoperationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Datenberechnungen durch zuführen, wobei der Eingang der Datenoperationsschaltung mit dem Ausgang der Abspeicher-/Ausrichteinheit verbunden ist, der Ausgang der Datenoperationsschaltung mit dem Rückführ- bzw. Feedbackeingang des Schalters verbunden ist, und der Steuer eingang der Datenoperationsschaltung mit dem ersten Steuer ausgang der Instruktionsabrufeinheit verbunden ist.
einen Schalter mit einem Datenport, einem Steuereingang, einem Rückführ- bzw. Feedbackeingang und einem Ausgang, um selektiv Daten zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten, wobei der Datenport des Schalters mit dem Datenport des Speichers verbunden ist und der Steuereingang des Schalters mit dem ersten Steuer ausgang der Instruktionsabrufeinheit verbunden ist;
eine Abspeicher-/Ausrichteinheit mit einem Eingang, einem Ausgang und einer Steuereinheit, um Daten und Datenberech nungsergebnisse zu speichern, wobei der Eingang der Abspeicher-/Ausrichteinheit mit dem Ausgang des Schalters verbunden ist, der Steuereingang der Speicher-/Ausrichteinheit mit dem ersten Steuerausgang der Instruktionsabrufeinheit ver bunden ist; und
eine Datenoperationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Datenberechnungen durch zuführen, wobei der Eingang der Datenoperationsschaltung mit dem Ausgang der Abspeicher-/Ausrichteinheit verbunden ist, der Ausgang der Datenoperationsschaltung mit dem Rückführ- bzw. Feedbackeingang des Schalters verbunden ist, und der Steuer eingang der Datenoperationsschaltung mit dem ersten Steuer ausgang der Instruktionsabrufeinheit verbunden ist.
35. System nach Anspruch 34, bei welchem die Speicher-/Aus
richteinheit als etwas von der Gruppe rekonfigurierbar ist,
die einen Speicher mit wahlfreiem Zugriff bzw. ein RAM auf
weist und ein gepipelinetes Register bzw. ein Fließbandregi
ster aufweist, und zwar in Antwort auf Steuersignale von dem
Speicher, die ein Konfigurationsdatensatz darstellen, der
einer ersten Instruktionssatz-Architektur bzw. einer zweiten
Instruktionssatz-Architektur entspricht.
36. System nach Anspruch 35, bei welchem die Datenopera
tionseinheit als eine aus der Gruppe von einer arithmetischen
Logikeinheit und einer gepipelineten Funktionseinheit
rekonfigurierbar ist, und zwar in Antwort auf Konfigurations
signale aus dem Speicher.
37. System nach Anspruch 17, bei welchem die veränderbare
interne Hardware-Organisation der ersten rekonfigurierbaren
Verarbeitungseinheit eine rekonfigurierbare Adressenopera
tionseinheit mit einem ersten Steuereingang, einem Adressen
eingang und einem Ausgang umfaßt, um Operationen bezüglich
Adressen durchzuführen, wobei der Adresseneingang mit dem
Datenport eines Speichers verbunden ist und der Ausgang der
Adressenoperationseinheit mit einem Adresseneingang des
Speichers verbunden ist und der Steuereingang der Adressen
operationseinheit verbunden ist, um Steuersignale zu empfan
gen.
38. System nach Anspruch 37, bei welchem die rekonfigurier
bare Adressenoperationseinheit folgendes umfaßt:
einen Schalter mit einem Datenport, einem Steuereingang, einem Rückführ- bzw. Feedbackeingang und einem Ausgang, um selektiv Adressen zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten, wobei der Datenport des Schalters mit dem Datenport des Speichers verbunden ist und der Steuereingang des Schalters mit dem ersten Steuer ausgang der Instruktionsabrufeinheit verbunden ist;
eine Abspeicher-/Zähleinheit mit einem Eingang, einem Ausgang und einem Steuereingang, um Daten zu speichern, wobei der Eingang der Abspeicher-/Zähleinheit mit dem Ausgang des Schalters verbunden ist, der Steuereingang der Abspeicher- /Zähllogik mit dem zweiten Steuerausgang der Instruktionsabru feinheit verbunden ist; und
eine Adressenoperationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Adressenberechnungen durchzuführen, wobei der Eingang der Adressenoperationsschal tung mit dem Ausgang der Abspeicher-/Zähleinheit verbunden ist, der Ausgang der Adressenoperationsschaltung mit dem Rückführ- bzw. Feedbackeingang des Schalters verbunden ist, und der Steuereingang der Adressenoperationseinheit mit dem zweiten Steuerausgang der Instruktionsabrufeinheit verbunden ist.
einen Schalter mit einem Datenport, einem Steuereingang, einem Rückführ- bzw. Feedbackeingang und einem Ausgang, um selektiv Adressen zwischen dem Datenport, dem Rückführ- bzw. Feedbackeingang und dem Ausgang zu leiten, wobei der Datenport des Schalters mit dem Datenport des Speichers verbunden ist und der Steuereingang des Schalters mit dem ersten Steuer ausgang der Instruktionsabrufeinheit verbunden ist;
eine Abspeicher-/Zähleinheit mit einem Eingang, einem Ausgang und einem Steuereingang, um Daten zu speichern, wobei der Eingang der Abspeicher-/Zähleinheit mit dem Ausgang des Schalters verbunden ist, der Steuereingang der Abspeicher- /Zähllogik mit dem zweiten Steuerausgang der Instruktionsabru feinheit verbunden ist; und
eine Adressenoperationsschaltung mit einem Eingang, einem Ausgang und einem Steuereingang, um Adressenberechnungen durchzuführen, wobei der Eingang der Adressenoperationsschal tung mit dem Ausgang der Abspeicher-/Zähleinheit verbunden ist, der Ausgang der Adressenoperationsschaltung mit dem Rückführ- bzw. Feedbackeingang des Schalters verbunden ist, und der Steuereingang der Adressenoperationseinheit mit dem zweiten Steuerausgang der Instruktionsabrufeinheit verbunden ist.
39. System nach Anspruch 38, bei welchem die Abspeicher-
/Zähleinheit rekonfigurierbar ist und selektiv als eine aus
der Gruppe von einem Speicher mit wahlfreiem Zugriff bzw.
einem RAM und einem Register konfiguriert werden kann, und
zwar in Antwort auf Signale, die am Steuereingang der
Abspeicher- /Zähleinheit empfangen werden.
40. System nach Anspruch 38, bei welchem die Adressenopera
tionsschaltung als eine aus der Gruppe von einem Register und
einem Register und einer arithmetischen Einheit rekonfigurier
bar ist, und zwar in Antwort auf Signale, die an dem Steuer
eingang der Adressenoperationsschaltung empfangen werden.
41. System nach Anspruch 17, bei welchem die erste rekon
figurierbare Verarbeitungseinheit folgendes umfaßt:
eine rekonfigurierbare Instruktionsabrufeinheit mit einem Dateneingang, einem ersten Steuereingang und einem zweiten Steuerausgang, um Instruktionsausführungsoperationen innerhalb der ersten rekonfigurierbaren Verarbeitungseinheit sequentiell zu ordnen, wobei der Dateneingang mit dem Datenport eines Speichers verbunden ist;
eine rekonfigurierbare Datenoperationseinheit mit einem Datenport und einem Steuereingang, um Operationen bezüglich Daten durchzuführen, wobei der Datenport der Datenoperations einheit mit dem Datenport des Speichers verbunden ist und der Steuereingang mit dem ersten Steuerausgang der Instruk tionsabrufeinheit verbunden ist; und
eine rekonfigurierbare Adressenoperationseinheit mit einem Steuereingang, einem Adresseneingang und einem Ausgang, um Operationen bezüglich Adressen durchzuführen, wobei der Steuereingang der Adressenoperationseinheit mit dem zweiten Steuerausgang der Instruktionsabrufeinheit verbunden ist, der Adresseneingang mit dem Datenport des Speichers verbunden ist und der Ausgang der Adressenoperationseinheit mit einem Adresseneingang des Speichers verbunden ist.
eine rekonfigurierbare Instruktionsabrufeinheit mit einem Dateneingang, einem ersten Steuereingang und einem zweiten Steuerausgang, um Instruktionsausführungsoperationen innerhalb der ersten rekonfigurierbaren Verarbeitungseinheit sequentiell zu ordnen, wobei der Dateneingang mit dem Datenport eines Speichers verbunden ist;
eine rekonfigurierbare Datenoperationseinheit mit einem Datenport und einem Steuereingang, um Operationen bezüglich Daten durchzuführen, wobei der Datenport der Datenoperations einheit mit dem Datenport des Speichers verbunden ist und der Steuereingang mit dem ersten Steuerausgang der Instruk tionsabrufeinheit verbunden ist; und
eine rekonfigurierbare Adressenoperationseinheit mit einem Steuereingang, einem Adresseneingang und einem Ausgang, um Operationen bezüglich Adressen durchzuführen, wobei der Steuereingang der Adressenoperationseinheit mit dem zweiten Steuerausgang der Instruktionsabrufeinheit verbunden ist, der Adresseneingang mit dem Datenport des Speichers verbunden ist und der Ausgang der Adressenoperationseinheit mit einem Adresseneingang des Speichers verbunden ist.
42. System nach Anspruch 41, bei welchem die rekonfigurier
bare Instruktionsabrufeinheit, die rekonfigurierbare Daten
operationseinheit und die rekonfigurierbare Adressenopera
tionseinheit während der Ausführung eines Befehls durch die
erste rekonfigurierbare Verarbeitungseinheit rekonfigurierbar
sein kann.
43. System zum Koppeln bzw. Verbinden eines ersten Prozessors
bzw. einer ersten Verarbeitungseinrichtung mit einem zweiten
Prozessor bzw. einer zweiten Verarbeitungseinrichtung, wobei
das System folgendes umfaßt:
eine erste Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von dem ersten Prozessor zu über tragen, wobei der Eingang und der Ausgang der ersten Kom munikationsvorrichtung mit dem ersten Prozessor verbunden ist; und
eine zweite Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von dem zweiten Prozessor zu übertragen, wobei der Eingang und der Ausgang der zweiten Kommunikationsvorrichtung mit dem zweiten Prozessor verbunden ist; und
eine Verbindungseinrichtung zum Bereitstellen einer Punkt-zu-Punkt-Parall-Datenwegeleitung mit einem ersten und einem zweiten Kommunikationskanal, wobei der erste Datenport der ersten Kommunikationsvorrichtung und der erste Datenport der zweiten Kommunikationsvorrichtung mit dem ersten Kommunikationskanal verbunden ist und der zweite Datenport der ersten Kommunikationsvorrichtung und der zweite Datenport der zweiten Kommunikationsvorrichtung mit dem zweiten Kommunika tionskanal verbunden ist.
eine erste Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von dem ersten Prozessor zu über tragen, wobei der Eingang und der Ausgang der ersten Kom munikationsvorrichtung mit dem ersten Prozessor verbunden ist; und
eine zweite Kommunikationsvorrichtung mit einem Eingang, einem Ausgang, einem ersten Datenport und einem zweiten Datenport, um Daten zu und von dem zweiten Prozessor zu übertragen, wobei der Eingang und der Ausgang der zweiten Kommunikationsvorrichtung mit dem zweiten Prozessor verbunden ist; und
eine Verbindungseinrichtung zum Bereitstellen einer Punkt-zu-Punkt-Parall-Datenwegeleitung mit einem ersten und einem zweiten Kommunikationskanal, wobei der erste Datenport der ersten Kommunikationsvorrichtung und der erste Datenport der zweiten Kommunikationsvorrichtung mit dem ersten Kommunikationskanal verbunden ist und der zweite Datenport der ersten Kommunikationsvorrichtung und der zweite Datenport der zweiten Kommunikationsvorrichtung mit dem zweiten Kommunika tionskanal verbunden ist.
44. System nach Anspruch 43, bei welchem die erste und die
zweite Kommunikationsvorrichtung jeweils als ein feldpro
grammierbares Gatter-Array aufgebaut bzw. konstruiert sind.
45. System nach Anspruch 43, bei welchem die erste Kommuni
kationsvorrichtung weiter folgendes aufweist:
eine Schnittstellen- und Steuereinheit mit einem ersten Datenport, einem zweiten Datenport und einem Steuerport, um Daten und Befehle bzw. Kommandos zu empfangen und zu senden, und zwar zu und von dem ersten Prozessor, wobei der erste Datenport mit dem ersten Prozessor zum Senden und Empfangen von Daten verbunden ist und der Steuerport mit dem ersten Prozessor zum Senden und Empfangen von Befehlen bzw. Kommandos verbunden ist;
eine erste Verbindungseinheit mit einem Eingang, einem Ausgang, einem Port und einer einzigen Verbindungsadresse, wobei der Port der ersten Verbindungseinheit mit dem zweiten Datenport der Schnittstellen- und Steuereinheit verbunden ist, und der Eingang und Ausgang der ersten Verbindungseinheit mit Knoten des ersten Kommunikationskanals verbunden sind; und
eine zweite Verbindungseinheit mit einem Eingang, einem Ausgang, einem Port und einer einzigen Verbindungsadresse, wobei die zweite Verbindungseinheit mit dem zweiten Datenport der Schnittstellen- und Steuereinheit verbunden ist und der Eingang und der Ausgang der zweiten Verbindungseinheit mit Knoten des zweiten Kommunikationskanals verbunden sind.
eine Schnittstellen- und Steuereinheit mit einem ersten Datenport, einem zweiten Datenport und einem Steuerport, um Daten und Befehle bzw. Kommandos zu empfangen und zu senden, und zwar zu und von dem ersten Prozessor, wobei der erste Datenport mit dem ersten Prozessor zum Senden und Empfangen von Daten verbunden ist und der Steuerport mit dem ersten Prozessor zum Senden und Empfangen von Befehlen bzw. Kommandos verbunden ist;
eine erste Verbindungseinheit mit einem Eingang, einem Ausgang, einem Port und einer einzigen Verbindungsadresse, wobei der Port der ersten Verbindungseinheit mit dem zweiten Datenport der Schnittstellen- und Steuereinheit verbunden ist, und der Eingang und Ausgang der ersten Verbindungseinheit mit Knoten des ersten Kommunikationskanals verbunden sind; und
eine zweite Verbindungseinheit mit einem Eingang, einem Ausgang, einem Port und einer einzigen Verbindungsadresse, wobei die zweite Verbindungseinheit mit dem zweiten Datenport der Schnittstellen- und Steuereinheit verbunden ist und der Eingang und der Ausgang der zweiten Verbindungseinheit mit Knoten des zweiten Kommunikationskanals verbunden sind.
46. System nach Anspruch 45, bei welchem die erste Verbin
dungseinheit folgendes aufweist:
einen Adressendecoder mit einem Eingang und einem ersten und zweiten Ausgang, um selektiv Daten zu einem der ersten und zweiten Ausgänge zu leiten, und zwar in Antwort auf eine Adresse, die als ein Teil eines Nachrichtenpakets ausgebildet ist, wobei der Eingang des Adressendecoders mit dem ersten Kommunikationskanal verbunden ist;
einen ersten Puffer zum Speichern von Daten, wobei der erste Puffer einen Eingang und einen Ausgang aufweist, wobei der Eingang des ersten Puffers mit dem ersten Ausgang des Adressendecoders verbunden ist und der Ausgang mit dem In terface und der Steuereinheit verbunden ist;
einen zweiten Puffer zum Speichern von Daten, wobei der zweite Puffer einen Eingang und einen Ausgang aufweist, wobei der Eingang des zweiten Puffers mit dem zweiten Ausgang des Adressendecoders verbunden ist;
einen dritten Puffer zum Speichern von Daten, wobei der dritte Puffer einen Eingang und einen Ausgang aufweist, wobei der Eingang des dritten Puffers mit der Schnittstellen- und Steuereinheit verbunden ist;
einen Multiplexer mit einem ersten Eingang, einem zweiten Eingang, einem Steuereingang und einem Ausgang, um selektiv Daten von dem ersten Eingang oder dem zweiten Eingang in Antwort auf ein Steuersignal zu dem Steuereingang weiter zugeben, wobei der erste Eingang mit dem Ausgang des zweiten Puffers verbunden ist, der zweite Eingang mit dem dritten Puffer verbunden ist, der Steuereingang mit der Schnittstellen- und Steuerlogik verbunden ist und der Ausgang des Multiplexers mit dem ersten Kommunikationskanal verbunden ist.
einen Adressendecoder mit einem Eingang und einem ersten und zweiten Ausgang, um selektiv Daten zu einem der ersten und zweiten Ausgänge zu leiten, und zwar in Antwort auf eine Adresse, die als ein Teil eines Nachrichtenpakets ausgebildet ist, wobei der Eingang des Adressendecoders mit dem ersten Kommunikationskanal verbunden ist;
einen ersten Puffer zum Speichern von Daten, wobei der erste Puffer einen Eingang und einen Ausgang aufweist, wobei der Eingang des ersten Puffers mit dem ersten Ausgang des Adressendecoders verbunden ist und der Ausgang mit dem In terface und der Steuereinheit verbunden ist;
einen zweiten Puffer zum Speichern von Daten, wobei der zweite Puffer einen Eingang und einen Ausgang aufweist, wobei der Eingang des zweiten Puffers mit dem zweiten Ausgang des Adressendecoders verbunden ist;
einen dritten Puffer zum Speichern von Daten, wobei der dritte Puffer einen Eingang und einen Ausgang aufweist, wobei der Eingang des dritten Puffers mit der Schnittstellen- und Steuereinheit verbunden ist;
einen Multiplexer mit einem ersten Eingang, einem zweiten Eingang, einem Steuereingang und einem Ausgang, um selektiv Daten von dem ersten Eingang oder dem zweiten Eingang in Antwort auf ein Steuersignal zu dem Steuereingang weiter zugeben, wobei der erste Eingang mit dem Ausgang des zweiten Puffers verbunden ist, der zweite Eingang mit dem dritten Puffer verbunden ist, der Steuereingang mit der Schnittstellen- und Steuerlogik verbunden ist und der Ausgang des Multiplexers mit dem ersten Kommunikationskanal verbunden ist.
47. System nach Anspruch 45, bei welchem
der erste Prozessor mit der Schnittstellen- und Steuer einheit über einen Speicher verbunden ist, der eine Vielzahl von Signalleitungen aufweist, und wobei eine erste Anzahl der Vielzahl von Signalleitungen Adressenleitungen ausbilden, eine zweite Anzahl der Vielzahl von Signalleitungen Steuerleitungen ausbilden und eine dritte Anzahl der Vielzahl von Signallei tungen Datenleitungen ausbilden; und
der erste Prozessor und die Schnittstellen- und Steuer einheit derartig rekonfigurierbar sind, daß die erste Anzahl, die zweite Anzahl und die dritte Anzahl der Vielzahl von Signalleitungen gemäß eines Konfigurationsdatensatzes, der durch den ersten Prozessor und die Schnittstellen- und Steu ereinheit genutzt bzw. verwendet wird, eingestellt bzw. gesetzt werden kann.
der erste Prozessor mit der Schnittstellen- und Steuer einheit über einen Speicher verbunden ist, der eine Vielzahl von Signalleitungen aufweist, und wobei eine erste Anzahl der Vielzahl von Signalleitungen Adressenleitungen ausbilden, eine zweite Anzahl der Vielzahl von Signalleitungen Steuerleitungen ausbilden und eine dritte Anzahl der Vielzahl von Signallei tungen Datenleitungen ausbilden; und
der erste Prozessor und die Schnittstellen- und Steuer einheit derartig rekonfigurierbar sind, daß die erste Anzahl, die zweite Anzahl und die dritte Anzahl der Vielzahl von Signalleitungen gemäß eines Konfigurationsdatensatzes, der durch den ersten Prozessor und die Schnittstellen- und Steu ereinheit genutzt bzw. verwendet wird, eingestellt bzw. gesetzt werden kann.
48. System nach Anspruch 45, bei welchem
der erste Prozessor mit der Schnittstellen- und Steuer einheit über einen Speicher, der eine Vielzahl von Signal leitungen aufweist, verbunden ist und wobei eine erste Anzahl der Vielzahl von Signalleitungen Adressenleitungen ausbilden, eine zweite Anzahl der Vielzahl von Signalleitungen Steuer leitungen ausbilden und eine dritte Anzahl der Vielzahl von Signalleitungen Datenleitungen ausbilden; und
der erste Prozessor und die Schnittstellen- und Steuer einheit derartig rekonfigurierbar sind, daß die erste Anzahl, die zweite Anzahl und die dritte Anzahl der Vielzahl von Signalleitungen gemäß eines Konfigurationsdatensatzes eingestellt werden können, der durch den ersten Prozessor und die Schnittstellen- und Steuereinheit verwendet bzw. genutzt wird.
der erste Prozessor mit der Schnittstellen- und Steuer einheit über einen Speicher, der eine Vielzahl von Signal leitungen aufweist, verbunden ist und wobei eine erste Anzahl der Vielzahl von Signalleitungen Adressenleitungen ausbilden, eine zweite Anzahl der Vielzahl von Signalleitungen Steuer leitungen ausbilden und eine dritte Anzahl der Vielzahl von Signalleitungen Datenleitungen ausbilden; und
der erste Prozessor und die Schnittstellen- und Steuer einheit derartig rekonfigurierbar sind, daß die erste Anzahl, die zweite Anzahl und die dritte Anzahl der Vielzahl von Signalleitungen gemäß eines Konfigurationsdatensatzes eingestellt werden können, der durch den ersten Prozessor und die Schnittstellen- und Steuereinheit verwendet bzw. genutzt wird.
49. System nach Anspruch 45, bei welchem
der erste Prozessor mit der Schnittstellen- und Steuer einheit über einen Speicher, der eine Vielzahl von Signal leitungen aufweist, verbunden ist, und wobei eine erste Anzahl der Vielzahl von Signalleitungen Adressenleitungen ausbilden, eine zweite Anzahl der Vielzahl von Signalleitungen Steuer leitungen ausbilden und eine dritte Anzahl der Vielzahl von Signalleitungen Datenleitungen ausbilden; und
die Schnittstellen- und Steuereinheit derartig rekon figurierbar ist, daß die erste Anzahl, die zweite Anzahl bzw. die dritte Anzahl der Vielzahl von Signalleitungen eingestellt werden kann, um mit einer Anzahl von Adressen-, Steuer- bzw. Datenleitungen zusammenzupassen, die durch den ersten Prozessor verwendet werden, um auf den Speicher zuzugreifen und diesen zu steuern.
der erste Prozessor mit der Schnittstellen- und Steuer einheit über einen Speicher, der eine Vielzahl von Signal leitungen aufweist, verbunden ist, und wobei eine erste Anzahl der Vielzahl von Signalleitungen Adressenleitungen ausbilden, eine zweite Anzahl der Vielzahl von Signalleitungen Steuer leitungen ausbilden und eine dritte Anzahl der Vielzahl von Signalleitungen Datenleitungen ausbilden; und
die Schnittstellen- und Steuereinheit derartig rekon figurierbar ist, daß die erste Anzahl, die zweite Anzahl bzw. die dritte Anzahl der Vielzahl von Signalleitungen eingestellt werden kann, um mit einer Anzahl von Adressen-, Steuer- bzw. Datenleitungen zusammenzupassen, die durch den ersten Prozessor verwendet werden, um auf den Speicher zuzugreifen und diesen zu steuern.
50. System nach Anspruch 45, bei welchem die Schnittstellen-
und Steuereinheit eine Nachricht in einen Befehl bzw. in ein
Kommando und in Daten, die von dem ersten Prozessor verwendet
werden können, umwandelt und Kommandos bzw. Befehle und Daten
von dem ersten Prozessor in eine Nachricht zur Übertragung
über die Verbindungseinrichtung bündelt bzw. packetiert.
51. Verfahren zur Erzeugung von Instruktionen, die von einem
rekonfigurierbaren Computer aus einer Vielzahl von Aussagen
hohen Niveaus ausführbar sind, wobei das Verfahren die
folgenden Schritte aufweist:
eine Vielzahl von Sätzen von Regeln zum Übersetzen von Aussagen hohen Niveaus in Instruktionen, die durch einen rekonfigurierbaren Computer ausführbar sind, wird bereitge stellt;
einer der Vielzahl von Sätzen von Regeln wird als der gegenwärtige Satz von Regeln ausgewählt, der verwendet werden soll, um Aussagen hohen Niveaus in Instruktionen zu überset zen, die durch einen rekonfigurierbaren Computer ausführbar sind;
eine Aussage hohen Niveaus wird ausgewählt;
ob die gewählte Aussage hohen Niveaus eine Rekonfigura tionsanweisung ist, wird bestimmt;
der gegenwärtige Satz von Regeln, der zum Übersetzen von Aussagen hohen Niveaus verwendet werden soll, wird in einen Satz von Regeln geändert, der in der Rekonfigurationsanweisung spezifiziert ist, falls die gewählte Aussage hohen Niveaus eine Rekonfigurationsanweisung ist; und
die gewählte Aussage hohen Niveaus wird in wenigstens eine Instruktion übersetzt, die durch eine rekonfigurierbaren Computer ausführbar ist, indem der gegenwärtige Satz von Regeln verwendet wird.
eine Vielzahl von Sätzen von Regeln zum Übersetzen von Aussagen hohen Niveaus in Instruktionen, die durch einen rekonfigurierbaren Computer ausführbar sind, wird bereitge stellt;
einer der Vielzahl von Sätzen von Regeln wird als der gegenwärtige Satz von Regeln ausgewählt, der verwendet werden soll, um Aussagen hohen Niveaus in Instruktionen zu überset zen, die durch einen rekonfigurierbaren Computer ausführbar sind;
eine Aussage hohen Niveaus wird ausgewählt;
ob die gewählte Aussage hohen Niveaus eine Rekonfigura tionsanweisung ist, wird bestimmt;
der gegenwärtige Satz von Regeln, der zum Übersetzen von Aussagen hohen Niveaus verwendet werden soll, wird in einen Satz von Regeln geändert, der in der Rekonfigurationsanweisung spezifiziert ist, falls die gewählte Aussage hohen Niveaus eine Rekonfigurationsanweisung ist; und
die gewählte Aussage hohen Niveaus wird in wenigstens eine Instruktion übersetzt, die durch eine rekonfigurierbaren Computer ausführbar ist, indem der gegenwärtige Satz von Regeln verwendet wird.
52. Verfahren nach Anspruch 51, bei welchem jeder der Viel
zahl von Sätzen von Regeln zum Übersetzung von Aussagen hohen
Niveaus in Instruktionen, die durch den rekonfigurierbaren
Computer ausführbar sind, einer unterschiedlichen
Instruktionssatz-Architektur entspricht.
53. Verfahren nach Anspruch 51, das weiter folgende Schritte
aufweist:
die Rekonfigurationsanweisung wird in eine Rekonfigura tionsaussage mittleren Niveaus übersetzt, falls die gewählte Aussage hohen Niveaus eine Rekonfigurationsanweisung ist;
die gewählte Aussage wird in eine Aussage mittleren Niveaus übersetzt, falls die gewählte Aussage hohen Niveaus nicht eine Rekonfigurationsanweisung ist;
eine Registerzuweisung wird durchgeführt;
bei welchem der Schritt der Veränderung des gegenwärtigen Satzes von Regeln die folgenden Unterschritte aufweist:
eine Aussage mittleren Niveaus wird ausgewählt;
es wird bestimmt, ob die gewählte Aussage mittleren Niveaus eine Rekonfigurationsaussage mittleren Niveaus ist; und
ein Satz von Regeln wird ausgewählt, der der Instruktionssatz-Architektur entspricht, die durch die Rekonfigurationsaussage mittleren Niveaus spezifiziert ist, falls die gewählte Aussage mittleren Niveaus eine Rekonfigurationsaussage mittleren Niveaus ist; und
bei welchem der Schritt des Übersetzens der gewählten Aussage hohen Niveaus den Schritt der Erzeugung einer As semblersprachaussage aus der gewählten Aussage mittleren Niveaus beinhaltet, wobei der gewählte Satz von Regeln verwendet wird, der der Instruktionssatz-Architektur ent spricht, die durch die Rekonfigurationsaussage mittleren Niveaus spezifiziert ist.
die Rekonfigurationsanweisung wird in eine Rekonfigura tionsaussage mittleren Niveaus übersetzt, falls die gewählte Aussage hohen Niveaus eine Rekonfigurationsanweisung ist;
die gewählte Aussage wird in eine Aussage mittleren Niveaus übersetzt, falls die gewählte Aussage hohen Niveaus nicht eine Rekonfigurationsanweisung ist;
eine Registerzuweisung wird durchgeführt;
bei welchem der Schritt der Veränderung des gegenwärtigen Satzes von Regeln die folgenden Unterschritte aufweist:
eine Aussage mittleren Niveaus wird ausgewählt;
es wird bestimmt, ob die gewählte Aussage mittleren Niveaus eine Rekonfigurationsaussage mittleren Niveaus ist; und
ein Satz von Regeln wird ausgewählt, der der Instruktionssatz-Architektur entspricht, die durch die Rekonfigurationsaussage mittleren Niveaus spezifiziert ist, falls die gewählte Aussage mittleren Niveaus eine Rekonfigurationsaussage mittleren Niveaus ist; und
bei welchem der Schritt des Übersetzens der gewählten Aussage hohen Niveaus den Schritt der Erzeugung einer As semblersprachaussage aus der gewählten Aussage mittleren Niveaus beinhaltet, wobei der gewählte Satz von Regeln verwendet wird, der der Instruktionssatz-Architektur ent spricht, die durch die Rekonfigurationsaussage mittleren Niveaus spezifiziert ist.
54. Dynamisch rekonfigurierbares Computersystem mit einer
rekonfigurierbaren Verarbeitungseinheit, wobei ein Verfahren
zum dynamisch rekonfigurierbaren Rechnen folgende Schritte
aufweist:
die rekonfigurierbare Verarbeitungseinheit zur Operation gemäß eines ersten Konfigurationsdatensatzes, der einer ersten Instruktionssatz-Architektur entspricht, wird konfiguriert, wobei die Konfiguration der rekonfigurierbaren Verarbeitungs einheit zu einer Hardware-Organisation führt, die die erste Instruktionssatz-Architektur realisiert bzw. implementiert;
ein Instruktionsausführungszyklus der rekonfigurierbaren Verarbeitungseinheit wird unterbrochen; und
die rekonfigurierbare Verarbeitungseinheit gemäß einem zweiten Konfigurationsdatensatz, der einer zweiten Instruktionssatz-Architektur entspricht, wird derart re konfiguriert daß die Hardware-Organisation der rekonfigurier baren Verarbeitungseinheit die zweite Instruktionssatz- Architektur realisiert.
die rekonfigurierbare Verarbeitungseinheit zur Operation gemäß eines ersten Konfigurationsdatensatzes, der einer ersten Instruktionssatz-Architektur entspricht, wird konfiguriert, wobei die Konfiguration der rekonfigurierbaren Verarbeitungs einheit zu einer Hardware-Organisation führt, die die erste Instruktionssatz-Architektur realisiert bzw. implementiert;
ein Instruktionsausführungszyklus der rekonfigurierbaren Verarbeitungseinheit wird unterbrochen; und
die rekonfigurierbare Verarbeitungseinheit gemäß einem zweiten Konfigurationsdatensatz, der einer zweiten Instruktionssatz-Architektur entspricht, wird derart re konfiguriert daß die Hardware-Organisation der rekonfigurier baren Verarbeitungseinheit die zweite Instruktionssatz- Architektur realisiert.
55. Verfahren nach Anspruch 54, das weiter den Schritt
aufweist, wonach während der Ausführung einer Sequenz von
Programminstruktionen bestimmt wird, ob Hardware innerhalb der
dynamisch rekonfigurierbaren Verarbeitungseinheit rekon
figuriert werden soll.
56. Verfahren nach Anspruch 55, das weiter den Schritt
beinhaltet, wonach ein neuer Instruktionsausführungszyklus
nach dem Schritt einer Rekonfigurierung ausgelöst wird.
57. Verfahren nach Anspruch 56, bei welchem der Instruk
tionsausführungszyklus einer ersten Programminstruktion
innerhalb der Sequenz von Programminstruktionen entspricht,
und der neue Instruktionsausführungszyklus einer zweiten
Programminstruktion innerhalb der Sequenz von Programmin
struktionen entspricht.
58. Verfahren nach Anspruch 54, das weiter die folgenden
Schritte aufweist:
ein erster Satz von Übergangssteuersignalen, der der ersten instruktionssatz-Architektur entspricht, wird erzeugt, wobei der erste Satz von Übergangssteuersignalen einen Satz unterbrechbarer Zustände innerhalb des Instruktionsaus führungszyklus spezifiziert; und
ein zweiter Satz von Übergangssteuersignalen wird er zeugt, der der zweiten Instruktionssatz-Architektur ent spricht, wobei der zweite Satz von Übergangssteuersignalen einen Satz unterbrechbarer Zustände innerhalb eines zweiten Instruktionsausführungszyklus spezifiziert.
ein erster Satz von Übergangssteuersignalen, der der ersten instruktionssatz-Architektur entspricht, wird erzeugt, wobei der erste Satz von Übergangssteuersignalen einen Satz unterbrechbarer Zustände innerhalb des Instruktionsaus führungszyklus spezifiziert; und
ein zweiter Satz von Übergangssteuersignalen wird er zeugt, der der zweiten Instruktionssatz-Architektur ent spricht, wobei der zweite Satz von Übergangssteuersignalen einen Satz unterbrechbarer Zustände innerhalb eines zweiten Instruktionsausführungszyklus spezifiziert.
59. Dynamisch rekonfigurierbarer Computer, der folgendes
aufweist:
eine Einrichtung zum Konfigurieren einer rekonfigurier baren Verarbeitungseinheit mit einem ersten Konfigurations datensatz, der einer ersten Instruktionssatz-Architektur entspricht, wobei die Konfiguration der rekonfigurierbaren Verarbeitungseinheit zu einer Hardware-Organisation führt, die die erste Instruktionssatz-Architektur realisiert bzw. implementiert;
eine Einrichtung, um während der Ausführung einer Sequenz von Programminstruktionen zu bestimmen, ob die rekonfigurier bare Verarbeitungseinheit rekonfiguriert werden soll; und
eine Einrichtung zum Rekonfigurieren der rekonfigurier baren Verarbeitungseinheit gemäß eines zweiten Konfigura tionsdatensatzes derart, daß die rekonfigurierbare Verarbei tungseinheit eine neue Hardware-Organisation aufweist, die eine zweite Instruktionssatz-Architektur realisiert bzw. implementiert.
eine Einrichtung zum Konfigurieren einer rekonfigurier baren Verarbeitungseinheit mit einem ersten Konfigurations datensatz, der einer ersten Instruktionssatz-Architektur entspricht, wobei die Konfiguration der rekonfigurierbaren Verarbeitungseinheit zu einer Hardware-Organisation führt, die die erste Instruktionssatz-Architektur realisiert bzw. implementiert;
eine Einrichtung, um während der Ausführung einer Sequenz von Programminstruktionen zu bestimmen, ob die rekonfigurier bare Verarbeitungseinheit rekonfiguriert werden soll; und
eine Einrichtung zum Rekonfigurieren der rekonfigurier baren Verarbeitungseinheit gemäß eines zweiten Konfigura tionsdatensatzes derart, daß die rekonfigurierbare Verarbei tungseinheit eine neue Hardware-Organisation aufweist, die eine zweite Instruktionssatz-Architektur realisiert bzw. implementiert.
60. Computer nach Anspruch 59, der weiter folgendes aufweist:
eine Einrichtung, um einen ersten Instruktionsausfüh rungszyklus, der einer ersten Programminstruktion innerhalb einer Sequenz von Programminstruktionen entspricht für den Fall zu unterbrechen, daß die rekonfigurierbare Verarbeitungs einheit rekonfiguriert werden soll; und
eine Einrichtung, um einen zweiten Instruktionsausfüh rungszyklus auszulösen, der einer zweiten Programminstruktion innerhalb der Sequenz von Programminstruktionen entspricht, und zwar nachdem die rekonfigurierbare Verarbeitungseinheit rekonfiguriert worden ist.
eine Einrichtung, um einen ersten Instruktionsausfüh rungszyklus, der einer ersten Programminstruktion innerhalb einer Sequenz von Programminstruktionen entspricht für den Fall zu unterbrechen, daß die rekonfigurierbare Verarbeitungs einheit rekonfiguriert werden soll; und
eine Einrichtung, um einen zweiten Instruktionsausfüh rungszyklus auszulösen, der einer zweiten Programminstruktion innerhalb der Sequenz von Programminstruktionen entspricht, und zwar nachdem die rekonfigurierbare Verarbeitungseinheit rekonfiguriert worden ist.
61. Computer nach Anspruch 59, der weiter eine Einrichtung
zur Erzeugung eines Satzes von Übergangssteuersignalen er
zeugt, die einer Instruktionssatz-Architektur entsprechen,
wobei der Satz von Übergangssteuersignalen einen Satz von
unterbrechbaren Zuständen innerhalb eines Instruktionsaus
führungszyklus spezifiziert.
62. Dynamisch rekonfigurierbarer Computer innerhalb einer
reprogrammierbaren Logikvorrichtung bzw. innerhalb eines
reprogrammierbaren Logikbauelements, wobei der dynamisch
rekonfigurierbare Computer folgendes aufweist:
einen Architekturbeschreibungsspeicher mit einem Ausgang, um Architekturbeschreibungssignale zu speichern, die eine Architektur des rekonfigurierbaren Computers charakterisieren, wobei die Architekturbeschreibungssignale ein Interruptant wortsignal umfassen, das eine Art und Weise spezifiziert, in der der dynamisch rekonfigurierbare Computer auf einen Interrupt antwortet;
einen Instruktionszustandssequenzer bzw. eine Instruk tionszustandsfolgesteuereinheit mit einem Eingang, um eine Ausführung einer Instruktion durch den rekonfigurierbaren Computer zu steuern; und
eine Interruptzustandsmaschine mit einem ersten Eingang, einem zweiten Eingang und einem Ausgang, um ein Über gangssteuersignal zu erzeugen, das spezifiziert bzw. vorgibt, wenn während des Instruktionsausführungszyklus ein Übergang zu einem Interruptservicezustand erlaubt ist, wobei der Eingang der Interruptzustandsmaschine mit dem Ausgang des Architekturbeschreibungsspeichers verbunden ist und der Ausgang der Interruptzustandsmaschine mit dem Eingang des Instruktionszustandssequenzers bzw. der Instruktions zustandsfolgesteuereinheit verbunden ist.
einen Architekturbeschreibungsspeicher mit einem Ausgang, um Architekturbeschreibungssignale zu speichern, die eine Architektur des rekonfigurierbaren Computers charakterisieren, wobei die Architekturbeschreibungssignale ein Interruptant wortsignal umfassen, das eine Art und Weise spezifiziert, in der der dynamisch rekonfigurierbare Computer auf einen Interrupt antwortet;
einen Instruktionszustandssequenzer bzw. eine Instruk tionszustandsfolgesteuereinheit mit einem Eingang, um eine Ausführung einer Instruktion durch den rekonfigurierbaren Computer zu steuern; und
eine Interruptzustandsmaschine mit einem ersten Eingang, einem zweiten Eingang und einem Ausgang, um ein Über gangssteuersignal zu erzeugen, das spezifiziert bzw. vorgibt, wenn während des Instruktionsausführungszyklus ein Übergang zu einem Interruptservicezustand erlaubt ist, wobei der Eingang der Interruptzustandsmaschine mit dem Ausgang des Architekturbeschreibungsspeichers verbunden ist und der Ausgang der Interruptzustandsmaschine mit dem Eingang des Instruktionszustandssequenzers bzw. der Instruktions zustandsfolgesteuereinheit verbunden ist.
63. Computer nach Anspruch 62, bei welchem
ein erster Abschnitt der rekonfigurierbaren Logikvor richtung gemäß einem ersten Satz von Konfigurationsdaten konfiguriert ist, und zwar derart, daß eine erste Instruk tionssatz-Architektur in dem ersten Abschnitt ausgebildet wird;
ein zweiter Abschnitt der rekonfigurierbaren Logikvor richtung gemäß einem zweiten Satz von Konfigurationsdaten derart konfiguriert wird, und zwar derart, daß eine zweite Instruktionssatz-Architektur in dem zweiten Abschnitt ausgebildet wird;
der rekonfigurierbare Computer konfiguriert werden kann, um den ersten Abschnitt oder den zweiten Abschnitt zur Verarbeitung zu verwenden; und
die Interruptzustandsmaschine in den Übergangssteuer signalen eine Anzeige des Abschnittes der reprogrammierbaren Logikvorrichtungen bzw. einen Hinweis auf den Abschnitt, auf den der rekonfigurierbare Computer zum Verwenden bzw. zum Gebrauch eingestellt bzw. gesetzt ist, und die Instruktionen, die durch die ausgewählte Instruktionssatz-Architektur ausgeführt werden können, beinhaltet.
ein erster Abschnitt der rekonfigurierbaren Logikvor richtung gemäß einem ersten Satz von Konfigurationsdaten konfiguriert ist, und zwar derart, daß eine erste Instruk tionssatz-Architektur in dem ersten Abschnitt ausgebildet wird;
ein zweiter Abschnitt der rekonfigurierbaren Logikvor richtung gemäß einem zweiten Satz von Konfigurationsdaten derart konfiguriert wird, und zwar derart, daß eine zweite Instruktionssatz-Architektur in dem zweiten Abschnitt ausgebildet wird;
der rekonfigurierbare Computer konfiguriert werden kann, um den ersten Abschnitt oder den zweiten Abschnitt zur Verarbeitung zu verwenden; und
die Interruptzustandsmaschine in den Übergangssteuer signalen eine Anzeige des Abschnittes der reprogrammierbaren Logikvorrichtungen bzw. einen Hinweis auf den Abschnitt, auf den der rekonfigurierbare Computer zum Verwenden bzw. zum Gebrauch eingestellt bzw. gesetzt ist, und die Instruktionen, die durch die ausgewählte Instruktionssatz-Architektur ausgeführt werden können, beinhaltet.
64. Verfahren zum Verarbeiten von Daten mit einem dynamisch
rekonfigurierbaren Computer, der einen Instruktionsausfüh
rungszyklus bereitstellt, der einen Instruktionsabrufzustand,
einen Instruktionsdecodierzustand, einen Instruktionsaus
führungszustand und einen Schreib-zurück-Zustand umfaßt, wobei
das Verfahren folgende Schritte aufweist:
der Computer wird zum Betrieb gemäß einer ersten In struktionssatz-Architektur konfiguriert, die unterbrechbare bzw. auf ein Interrupt ansprechende Zustände spezifiziert bzw. vorgibt;
ein Interruptsignal wird empfangen;
ein Betriebszustand bzw. Operationszustand für den dynamischen rekonfigurierbaren Computer wird bestimmt;
es wird bestimmt, ob der Betriebszustand bzw. Operations zustand des dynamisch rekonfigurierbaren Computers unter brechbar ist;
das Interruptsignal wird abgearbeitet, falls der dyna misch rekonfigurierbare Computer bestimmt ist, in einem unterbrechbaren Zustand zu sein.
der Computer wird zum Betrieb gemäß einer ersten In struktionssatz-Architektur konfiguriert, die unterbrechbare bzw. auf ein Interrupt ansprechende Zustände spezifiziert bzw. vorgibt;
ein Interruptsignal wird empfangen;
ein Betriebszustand bzw. Operationszustand für den dynamischen rekonfigurierbaren Computer wird bestimmt;
es wird bestimmt, ob der Betriebszustand bzw. Operations zustand des dynamisch rekonfigurierbaren Computers unter brechbar ist;
das Interruptsignal wird abgearbeitet, falls der dyna misch rekonfigurierbare Computer bestimmt ist, in einem unterbrechbaren Zustand zu sein.
65. Verfahren nach Anspruch 64, das weiter die folgenden
Schritte aufweist:
ein nächster unterbrechbarer Zustand wird bestimmt, indem der Betrieb bzw. die Operation des dynamisch rekonfigurier baren Computers unterbrechbar sein kann, falls der dynamisch rekonfigurierbare Computer sich nicht in einem unterbrechbaren Zustand befindet;
es wird bestimmt, wenn der dynamisch rekonfigurierbare Computer in den nächsten unterbrechbaren Zustand übergeht, falls der dynamisch rekonfigurierbare Computer sich nicht in einem unterbrechbaren Zustand befindet;
das Interruptsignal in dem nächsten unterbrechbaren Zustand wird abgearbeitet bzw. bedient, falls bestimmt ist, daß der dynamisch rekonfigurierbare Computer nicht in einem unterbrechbaren Zustand ist.
ein nächster unterbrechbarer Zustand wird bestimmt, indem der Betrieb bzw. die Operation des dynamisch rekonfigurier baren Computers unterbrechbar sein kann, falls der dynamisch rekonfigurierbare Computer sich nicht in einem unterbrechbaren Zustand befindet;
es wird bestimmt, wenn der dynamisch rekonfigurierbare Computer in den nächsten unterbrechbaren Zustand übergeht, falls der dynamisch rekonfigurierbare Computer sich nicht in einem unterbrechbaren Zustand befindet;
das Interruptsignal in dem nächsten unterbrechbaren Zustand wird abgearbeitet bzw. bedient, falls bestimmt ist, daß der dynamisch rekonfigurierbare Computer nicht in einem unterbrechbaren Zustand ist.
66. Verfahren nach Anspruch 64, bei welchem der Schritt des
Bedienens bzw. Abarbeitens des Interruptsignals weiter
folgende Schritte aufweist:
ein Ursprung bzw. Anfang, eine Priorität und eine Inter rupthandleradresse bzw. eine Adresse der Interrupthandha bungseinrichtung wird für den Interrupt bestimmt;
es wird bestimmt, ob das Interruptsignal eine Rekon figuration anzeigt; und
Konfigurationsdaten für eine neue Instruktionssatz-Ar chitektur werden im Interruptsteuerregister gespeichert, falls das Interruptsignal Rekonfiguration anzeigt.
ein Ursprung bzw. Anfang, eine Priorität und eine Inter rupthandleradresse bzw. eine Adresse der Interrupthandha bungseinrichtung wird für den Interrupt bestimmt;
es wird bestimmt, ob das Interruptsignal eine Rekon figuration anzeigt; und
Konfigurationsdaten für eine neue Instruktionssatz-Ar chitektur werden im Interruptsteuerregister gespeichert, falls das Interruptsignal Rekonfiguration anzeigt.
67. Verfahren nach Anspruch 64, bei welchem der Schritt,
wonach bestimmt wird, ob der Betriebszustand bzw. Opera
tionszustand des dynamisch rekonfigurierbaren Computers
unterbrechbar ist,weiter folgende Schritte aufweist:
ein Übergangssteuersignal wird empfangen, das der In struktionssatz-Architektur entspricht, für die der dynamisch rekonfigurierbare Computer konfiguriert worden ist, wobei die Übergangssteuersignale wenigstens einen Zustand spezifizieren, in dem die Ausführung von Instruktionen unterbrechbar ist; und
die Zustände, die durch die Übergangssteuersignale spezifiziert sind, werden mit dem Betriebszustand bzw. Operationszustand des dynamisch rekonfigurierbaren Computers verglichen.
ein Übergangssteuersignal wird empfangen, das der In struktionssatz-Architektur entspricht, für die der dynamisch rekonfigurierbare Computer konfiguriert worden ist, wobei die Übergangssteuersignale wenigstens einen Zustand spezifizieren, in dem die Ausführung von Instruktionen unterbrechbar ist; und
die Zustände, die durch die Übergangssteuersignale spezifiziert sind, werden mit dem Betriebszustand bzw. Operationszustand des dynamisch rekonfigurierbaren Computers verglichen.
68. Verfahren nach Anspruch 64, bei welchem der dynamisch
rekonfigurierbare Computer gemäß einer Anzahl von verschie
denen Instruktionssatz-Architekturen konfiguriert werden kann,
wobei jeder der Instruktionssatz-Architekturen ein Satz von
Übergangssteuersignalen liefert, die wenigstens einen
unterbrechbaren Betriebszustand einer Instruktionsausführung
festlegen.
69. Verfahren nach Anspruch 68, bei welchem jede Instruk
tionssatz-Architektur einen rekonfigurierbaren Interruptme
chanismus umfaßt, der durch Modifikation des Satzes von
Übergangssteuersignalen bereitgestellt wird, die der In
struktionssatz-Architektur zugeordnet sind.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19655265A DE19655265B4 (de) | 1995-04-17 | 1996-04-16 | Verfahren zur Erzeugung von Instruktionen zur dynamischen Rekonfiguration |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/423,560 US5794062A (en) | 1995-04-17 | 1995-04-17 | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19614991A1 true DE19614991A1 (de) | 1996-10-24 |
DE19614991C2 DE19614991C2 (de) | 2003-11-06 |
Family
ID=23679324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19614991A Expired - Fee Related DE19614991C2 (de) | 1995-04-17 | 1996-04-16 | 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 |
Country Status (5)
Country | Link |
---|---|
US (4) | US5794062A (de) |
JP (1) | JP3785218B2 (de) |
KR (1) | KR100283812B1 (de) |
DE (1) | DE19614991C2 (de) |
TW (1) | TW394884B (de) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0825540A1 (de) * | 1996-08-23 | 1998-02-25 | Siemens Aktiengesellschaft | Prozessor mit Pipelining-Aufbau |
US6021186A (en) * | 1995-04-17 | 2000-02-01 | Ricoh Company Ltd. | Automatic capture and processing of facsimile transmissions |
DE19843663A1 (de) * | 1998-09-23 | 2000-03-30 | Siemens Ag | Konfigurierbarer Hardware-Block |
DE19815865B4 (de) * | 1997-04-09 | 2004-11-04 | Ricoh Co., Ltd. | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen |
US7103429B2 (en) | 2001-08-11 | 2006-09-05 | Daimlerchrysler Ag | Universal computer architecture |
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 |
US7225321B2 (en) | 2001-10-29 | 2007-05-29 | Siemens Aktiengesellschaft | Reprogrammable microprogram based reconfigurable multi-cell logic concurrently processing configuration and data signals |
Families Citing this family (242)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6077315A (en) * | 1995-04-17 | 2000-06-20 | Ricoh Company Ltd. | Compiling system and method for partially reconfigurable computing |
US6741494B2 (en) * | 1995-04-21 | 2004-05-25 | Mark B. Johnson | Magnetoelectronic memory element with inductively coupled write wires |
US6140838A (en) | 1995-04-21 | 2000-10-31 | Johnson; Mark B. | High density and high speed magneto-electronic logic family |
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
JP3623840B2 (ja) | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US5841295A (en) * | 1996-02-09 | 1998-11-24 | Hewlett-Packard Company | Hybrid programmable logic device |
US6023742A (en) * | 1996-07-18 | 2000-02-08 | University Of Washington | Reconfigurable computing architecture for providing pipelined data paths |
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 |
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.) |
EP1329816B1 (de) | 1996-12-27 | 2011-06-22 | Richter, Thomas | Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US5966534A (en) * | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US6163836A (en) * | 1997-08-01 | 2000-12-19 | Micron Technology, Inc. | Processor with programmable addressing modes |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
US6438679B1 (en) * | 1997-11-03 | 2002-08-20 | Brecis Communications | Multiple ISA support by a processor using primitive operations |
WO1999026121A2 (en) | 1997-11-13 | 1999-05-27 | Hyperspace Communications, Inc. | File transfer system |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
US6636931B2 (en) * | 1998-01-06 | 2003-10-21 | Pragmatic Communications Systems, Inc. | System and method for switching signals over twisted-pair wires |
US6636932B1 (en) * | 1998-05-27 | 2003-10-21 | Micron Technology, Inc. | Crossbar switch and control for data networks switching |
US6205537B1 (en) * | 1998-07-16 | 2001-03-20 | University Of Rochester | Mechanism for dynamically adapting the complexity of a microprocessor |
US6647511B1 (en) * | 1998-09-17 | 2003-11-11 | Texas Instruments Incorporated | Reconfigurable datapath for processor debug functions |
EP1116107B1 (de) * | 1998-09-30 | 2003-03-26 | Infineon Technologies AG | Verfahren zur ausführung einzelner algorithmen mittels einer rekonfigurierbaren schaltung und vorrichtung zur durchführung eines solchen verfahrens |
US6378067B1 (en) * | 1998-10-12 | 2002-04-23 | Idea Corporation | Exception reporting architecture for SIMD-FP instructions |
US6862563B1 (en) | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US6182183B1 (en) | 1998-11-13 | 2001-01-30 | Sonics, Inc. | Communications system and method with multilevel connection identification |
US6539438B1 (en) | 1999-01-15 | 2003-03-25 | Quickflex Inc. | Reconfigurable computing system and method and apparatus employing same |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
WO2000049496A1 (en) * | 1999-02-15 | 2000-08-24 | Koninklijke Philips Electronics N.V. | Data processor with a configurable functional unit and method using such a data processor |
US6341371B1 (en) * | 1999-02-23 | 2002-01-22 | International Business Machines Corporation | System and method for optimizing program execution in a computer system |
JP4285877B2 (ja) * | 1999-02-23 | 2009-06-24 | 株式会社リコー | 動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法 |
US6560754B1 (en) * | 1999-05-13 | 2003-05-06 | Arc International Plc | Method and apparatus for jump control in a pipelined processor |
AU5805300A (en) | 1999-06-10 | 2001-01-02 | Pact Informationstechnologie Gmbh | Sequence partitioning in cell structures |
US6378022B1 (en) * | 1999-06-17 | 2002-04-23 | Motorola, Inc. | Method and apparatus for processing interruptible, multi-cycle instructions |
US6470478B1 (en) * | 1999-06-29 | 2002-10-22 | International Business Machines Corporation | Method and system for counting events within a simulation model |
US6442597B1 (en) | 1999-07-08 | 2002-08-27 | International Business Machines Corporation | Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory |
US6467012B1 (en) | 1999-07-08 | 2002-10-15 | International Business Machines Corporation | Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors |
US6779036B1 (en) | 1999-07-08 | 2004-08-17 | International Business Machines Corporation | Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system |
EP1069513A1 (de) * | 1999-07-15 | 2001-01-17 | Infineon Technologies AG | Programmgesteuerte Einheit |
US6496880B1 (en) * | 1999-08-26 | 2002-12-17 | Agere Systems Inc. | Shared I/O ports for multi-core designs |
JP2004102988A (ja) * | 1999-08-30 | 2004-04-02 | Ip Flex Kk | データ処理装置 |
US6591348B1 (en) | 1999-09-09 | 2003-07-08 | International Business Machines Corporation | Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system |
US6725307B1 (en) * | 1999-09-23 | 2004-04-20 | International Business Machines Corporation | Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system |
US6587930B1 (en) * | 1999-09-23 | 2003-07-01 | International Business Machines Corporation | Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock |
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 |
US6590419B1 (en) * | 1999-10-12 | 2003-07-08 | Altera Toronto Co. | Heterogeneous interconnection architecture for programmable logic devices |
US6457085B1 (en) | 1999-11-04 | 2002-09-24 | International Business Machines Corporation | Method and system for data bus latency reduction using transfer size prediction for split bus designs |
US6523076B1 (en) | 1999-11-08 | 2003-02-18 | International Business Machines Corporation | Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks |
US6516379B1 (en) | 1999-11-08 | 2003-02-04 | International Business Machines Corporation | Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system |
US6529990B1 (en) | 1999-11-08 | 2003-03-04 | International Business Machines Corporation | Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system |
US6684279B1 (en) | 1999-11-08 | 2004-01-27 | International Business Machines Corporation | Method, apparatus, and computer program product for controlling data transfer |
US6535941B1 (en) | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants |
US7529799B2 (en) | 1999-11-08 | 2009-05-05 | International Business Machines Corporation | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system |
US6542949B1 (en) | 1999-11-08 | 2003-04-01 | International Business Machines Corporation | Method and apparatus for increased performance of a parked data bus in the non-parked direction |
US6606676B1 (en) | 1999-11-08 | 2003-08-12 | International Business Machines Corporation | Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system |
US20010049757A1 (en) | 2000-03-01 | 2001-12-06 | Ming-Kang Liu | Programmable task scheduler for use with multiport xDSL processing system |
US6988154B2 (en) * | 2000-03-10 | 2006-01-17 | Arc International | Memory interface and method of interfacing between functional entities |
RU2158319C1 (ru) * | 2000-04-25 | 2000-10-27 | Институт металлургии и материаловедения им. А.А. Байкова РАН | Высокопрочная коррозионно- и износостойкая аустенитная сталь |
EP1342158B1 (de) | 2000-06-13 | 2010-08-04 | Richter, Thomas | Pipeline ct-protokolle und -kommunikation |
US6507942B1 (en) * | 2000-07-11 | 2003-01-14 | Xilinx , Inc. | Methods and circuits for testing a circuit fabrication process for device uniformity |
US7343594B1 (en) * | 2000-08-07 | 2008-03-11 | Altera Corporation | Software-to-hardware compiler with symbol set inference analysis |
US7325221B1 (en) * | 2000-08-08 | 2008-01-29 | Sonics, Incorporated | Logic system with configurable interface |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US6978231B2 (en) | 2000-12-05 | 2005-12-20 | Derek Edward Williams | Embedded hardware description language instrumentation |
US7039574B1 (en) * | 2000-12-29 | 2006-05-02 | International Business Machines Corporation | Naming and managing simulation model events |
US7092864B2 (en) * | 2000-12-29 | 2006-08-15 | International Business Machines Corporation | Signal override for simulation models |
US20020128809A1 (en) * | 2000-12-30 | 2002-09-12 | International Business Machines Corporation | Randomized simulation model instrumentation |
US6941257B2 (en) * | 2000-12-30 | 2005-09-06 | International Business Machines Corporation | Hierarchical processing of simulation model events |
US6920418B2 (en) | 2000-12-30 | 2005-07-19 | International Business Machines Corporation | Detecting events within simulation models |
US7213231B1 (en) * | 2001-01-11 | 2007-05-01 | Cisco Technology, Inc. | Cross-spectrum application model for dynamic computing environments in software lifecycle |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
WO2005045692A2 (en) | 2003-08-28 | 2005-05-19 | Pact Xpp Technologies Ag | Data processing device and method |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7165094B2 (en) * | 2001-03-09 | 2007-01-16 | Sonics, Inc. | Communications system and method with non-blocking shared interface |
US7325123B2 (en) | 2001-03-22 | 2008-01-29 | Qst Holdings, Llc | Hierarchical interconnect for configuring separate interconnects for each group of fixed and diverse computational elements |
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 |
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 |
US7249242B2 (en) | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US7653710B2 (en) | 2002-06-25 | 2010-01-26 | Qst Holdings, Llc. | Hardware task manager |
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 |
US20030088757A1 (en) * | 2001-05-02 | 2003-05-08 | Joshua Lindner | Efficient high performance data operation element for use in a reconfigurable logic environment |
US7840777B2 (en) * | 2001-05-04 | 2010-11-23 | Ascenium Corporation | Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime |
US6577678B2 (en) | 2001-05-08 | 2003-06-10 | Quicksilver Technology | Method and system for reconfigurable channel coding |
US20030004699A1 (en) * | 2001-06-04 | 2003-01-02 | Choi Charles Y. | Method and apparatus for evaluating an integrated circuit model |
EP1402382B1 (de) | 2001-06-20 | 2010-08-18 | Richter, Thomas | Verfahren zur bearbeitung von daten |
US6848074B2 (en) * | 2001-06-21 | 2005-01-25 | Arc International | Method and apparatus for implementing a single cycle operation in a data processing system |
CA2458199A1 (en) * | 2001-08-16 | 2003-02-27 | Pact Xpp Technologies Ag | Method for the translation of programs for reconfigurable architectures |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7146395B2 (en) * | 2001-08-20 | 2006-12-05 | Ricoh Company Ltd. | Banyan switched processor datapath |
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 |
US7376811B2 (en) * | 2001-11-06 | 2008-05-20 | Netxen, Inc. | Method and apparatus for performing computations and operations on data using data steering |
US7046635B2 (en) | 2001-11-28 | 2006-05-16 | Quicksilver Technology, Inc. | System for authorizing functionality in adaptable hardware devices |
US8412915B2 (en) | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
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 |
US7493470B1 (en) | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
US6754881B2 (en) | 2001-12-10 | 2004-06-22 | International Business Machines Corporation | Field programmable network processor and method for customizing a network processor |
US6668361B2 (en) | 2001-12-10 | 2003-12-23 | International Business Machines Corporation | Method and system for use of a field programmable function within a chip to enable configurable I/O signal timing characteristics |
US6545501B1 (en) | 2001-12-10 | 2003-04-08 | International Business Machines Corporation | Method and system for use of a field programmable function within a standard cell chip for repair of logic circuits |
US7047464B2 (en) * | 2001-12-10 | 2006-05-16 | International Business Machines Corporation | Method and system for use of a field programmable function within an application specific integrated circuit (ASIC) to access internal signals for external observation and control |
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 |
US7251594B2 (en) * | 2001-12-21 | 2007-07-31 | Hitachi, Ltd. | Execution time modification of instruction emulation parameters |
US7403981B2 (en) | 2002-01-04 | 2008-07-22 | Quicksilver Technology, Inc. | Apparatus and method for adaptive multimedia reception and transmission in communication environments |
US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
ATE402446T1 (de) | 2002-02-18 | 2008-08-15 | Pact Xpp Technologies Ag | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US20050131980A1 (en) * | 2002-04-03 | 2005-06-16 | Centre National De La Recherche Scientifique-Cnrs, An Organization Of France | Logical calculation architecture comprising multiple configuration modes |
US20040006635A1 (en) * | 2002-04-19 | 2004-01-08 | Oesterreicher Richard T. | Hybrid streaming platform |
US7899924B2 (en) * | 2002-04-19 | 2011-03-01 | Oesterreicher Richard T | Flexible streaming hardware |
US20040006636A1 (en) * | 2002-04-19 | 2004-01-08 | Oesterreicher Richard T. | Optimized digital media delivery engine |
AU2003223746A1 (en) * | 2002-04-25 | 2003-11-10 | Arc International | Apparatus and method for managing integrated circuit designs |
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 |
US7176914B2 (en) * | 2002-05-16 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | System and method for directing the flow of data and instructions into at least one functional unit |
US7024654B2 (en) | 2002-06-11 | 2006-04-04 | Anadigm, Inc. | System and method for configuring analog elements in a configurable hardware device |
US7493607B2 (en) | 2002-07-09 | 2009-02-17 | Bluerisc Inc. | Statically speculative compilation and execution |
US7231630B2 (en) * | 2002-07-12 | 2007-06-12 | Ensequence Inc. | Method and system automatic control of graphical computer application appearance and execution |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
US7263602B2 (en) * | 2002-08-16 | 2007-08-28 | Carnegie Mellon University | Programmable pipeline fabric utilizing partially global configuration buses |
US20040122643A1 (en) * | 2002-08-29 | 2004-06-24 | Anderson Howard C. | Apparatus and method for simulating switched-capacitor circuits |
US8108656B2 (en) | 2002-08-29 | 2012-01-31 | Qst Holdings, Llc | Task definition for specifying resource requirements |
US6978435B2 (en) | 2002-08-29 | 2005-12-20 | Anadigm, Inc. | Apparatus for programming a programmable device, and method |
AU2003289844A1 (en) | 2002-09-06 | 2004-05-13 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US7707216B2 (en) * | 2002-10-08 | 2010-04-27 | Stmicroelectronics, Inc. | Data sorting apparatus with querying mechanism and method of operation |
US7290089B2 (en) | 2002-10-15 | 2007-10-30 | Stmicroelectronics, Inc. | Executing cache instructions in an increased latency mode |
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 |
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 |
JP4542308B2 (ja) * | 2002-12-16 | 2010-09-15 | 株式会社ソニー・コンピュータエンタテインメント | 信号処理用デバイス及び情報処理機器 |
US8024548B2 (en) * | 2003-02-18 | 2011-09-20 | Christopher Joseph Daffron | Integrated circuit microprocessor that constructs, at run time, integrated reconfigurable logic into persistent finite state machines from pre-compiled machine code instruction sequences |
US8190858B2 (en) * | 2003-02-25 | 2012-05-29 | Topside Research, Llc | Interface device for interfacing a main processor to processing engines and classifier engines, and methods for configuring and operating interface devices |
US7590829B2 (en) | 2003-03-31 | 2009-09-15 | Stretch, Inc. | Extension adapter |
US7613900B2 (en) | 2003-03-31 | 2009-11-03 | Stretch, Inc. | Systems and methods for selecting input/output configuration in an integrated circuit |
US7581081B2 (en) * | 2003-03-31 | 2009-08-25 | Stretch, Inc. | Systems and methods for software extensible multi-processing |
US8001266B1 (en) | 2003-03-31 | 2011-08-16 | Stretch, Inc. | Configuring a multi-processor system |
WO2004104825A1 (en) * | 2003-05-15 | 2004-12-02 | Applianz Technologies, Inc. | Systems and methods of creating and accessing software simulated computers |
US7373642B2 (en) * | 2003-07-29 | 2008-05-13 | Stretch, Inc. | Defining instruction extensions in a standard programming language |
US8296764B2 (en) | 2003-08-14 | 2012-10-23 | Nvidia Corporation | Internal synchronization control for adaptive integrated circuitry |
US7174432B2 (en) | 2003-08-19 | 2007-02-06 | Nvidia Corporation | Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture |
US20050049843A1 (en) * | 2003-08-29 | 2005-03-03 | Lee Hewitt | Computerized extension apparatus and methods |
US7124338B1 (en) * | 2003-10-10 | 2006-10-17 | Xilinx, Inc. | Methods of testing interconnect lines in programmable logic devices using partial reconfiguration |
US7529814B2 (en) | 2003-10-15 | 2009-05-05 | International Business Machines Corporation | Autonomic computing algorithm for identification of an optimum configuration for a web infrastructure |
US20050114850A1 (en) | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US7996671B2 (en) | 2003-11-17 | 2011-08-09 | Bluerisc Inc. | Security of program executables and microprocessors based on compiler-architecture interaction |
JP2005165961A (ja) * | 2003-12-05 | 2005-06-23 | Matsushita Electric Ind Co Ltd | 動的再構成論理回路装置、割込制御方法、及び、半導体集積回路 |
US7376083B2 (en) * | 2003-12-09 | 2008-05-20 | International Business Machines Corporation | Apparatus and method for modeling queueing systems with highly variable traffic arrival rates |
KR20050071739A (ko) * | 2004-01-02 | 2005-07-08 | 삼성전자주식회사 | 누설 전력을 줄이기 위한 마이크로프로세서 |
DE102004003167A1 (de) | 2004-01-21 | 2005-08-18 | Siemens Ag | Verfahren zum Entwickeln einer Maschine |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US20050278464A1 (en) * | 2004-05-13 | 2005-12-15 | Claseman George R | Multiple state configuration method |
JP4663718B2 (ja) * | 2004-07-21 | 2011-04-06 | ビーチ・アンリミテッド・エルエルシー | ブロックマップキャッシングおよびvfsスタック可能なファイルシステムモジュールに基づく分散型のストレージアーキテクチャ |
KR100868820B1 (ko) * | 2004-07-23 | 2008-11-14 | 비치 언리미티드 엘엘씨 | 데이터 스트림을 전달하는 방법 및 시스템과 데이터 저장 레벨을 제어하는 방법 |
TW200617703A (en) * | 2004-11-30 | 2006-06-01 | Tokyo Electron Ltd | Dynamically reconfigurable processor |
WO2006059775A2 (en) * | 2004-11-30 | 2006-06-08 | Tokyo Electron Limited | Dynamically reconfigurable processor |
JP5175517B2 (ja) * | 2005-04-12 | 2013-04-03 | パナソニック株式会社 | プロセッサ |
US8966223B2 (en) * | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
US20070033089A1 (en) | 2005-08-04 | 2007-02-08 | Microsoft Corporation | User interface and geo-parsing data structure |
US7441212B1 (en) * | 2005-09-07 | 2008-10-21 | Altera Corporation | State machine recognition and optimization |
US7523434B1 (en) * | 2005-09-23 | 2009-04-21 | Xilinx, Inc. | Interfacing with a dynamically configurable arithmetic unit |
US8230481B2 (en) * | 2005-11-23 | 2012-07-24 | Armstrong Quinton Co. LLC | Methods, systems, and computer program products for reconfiguring an operational mode of an input interface based on a privacy level |
KR100663709B1 (ko) * | 2005-12-28 | 2007-01-03 | 삼성전자주식회사 | 재구성 아키텍처에서의 예외 처리 방법 및 장치 |
KR100681199B1 (ko) * | 2006-01-11 | 2007-02-09 | 삼성전자주식회사 | 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치 |
JP2009524134A (ja) | 2006-01-18 | 2009-06-25 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | ハードウェア定義方法 |
KR100812346B1 (ko) * | 2006-02-06 | 2008-03-11 | 삼성전자주식회사 | 재구성 어레이에서의 인터럽트 처리 방법 및 장치 |
US7756973B2 (en) * | 2006-04-27 | 2010-07-13 | International Business Machines Corporation | Identifying a configuration for an application in a production environment |
US20070294181A1 (en) * | 2006-05-22 | 2007-12-20 | Saurabh Chheda | Flexible digital rights management with secure snippets |
US7693257B2 (en) * | 2006-06-29 | 2010-04-06 | Accuray Incorporated | Treatment delivery optimization |
US8028290B2 (en) * | 2006-08-30 | 2011-09-27 | International Business Machines Corporation | Multiple-core processor supporting multiple instruction set architectures |
KR100781340B1 (ko) * | 2006-09-18 | 2007-11-30 | 삼성전자주식회사 | 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법 |
US7840732B2 (en) * | 2006-09-25 | 2010-11-23 | Honeywell International Inc. | Stacked card address assignment |
JP4787711B2 (ja) * | 2006-10-02 | 2011-10-05 | 日本電気株式会社 | データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並びにデータ処理システム |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US7904288B1 (en) * | 2006-11-06 | 2011-03-08 | Cadence Design Systems, Inc. | Hardware emulator having a variable input emulation group |
US8127113B1 (en) | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
RU2363973C2 (ru) * | 2006-12-13 | 2009-08-10 | Николай Валентинович Татарченко | Модульная инженерная система |
US7529909B2 (en) * | 2006-12-28 | 2009-05-05 | Microsoft Corporation | Security verified reconfiguration of execution datapath in extensible microcomputer |
KR100893527B1 (ko) * | 2007-02-02 | 2009-04-17 | 삼성전자주식회사 | 재구성 가능 멀티 프로세서 시스템에서의 매핑 및 스케줄링방법 |
US8302006B2 (en) * | 2007-02-28 | 2012-10-30 | Rockwell Automation Technologies, Inc. | Interactive tooltip to display and navigate to different resources of a data point |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US8589935B2 (en) | 2007-05-08 | 2013-11-19 | L-3 Communications Corporation | Heterogeneous reconfigurable agent compute engine (HRACE) |
US7941641B1 (en) | 2007-10-01 | 2011-05-10 | Yong-Kyu Jung | Retargetable instruction decoder for a computer processor |
US8276132B1 (en) * | 2007-11-12 | 2012-09-25 | Nvidia Corporation | System and method for representing and managing a multi-architecture co-processor application program |
US8281294B1 (en) * | 2007-11-12 | 2012-10-02 | Nvidia Corporation | System and method for representing and managing a multi-architecture co-processor application program |
JP5119902B2 (ja) * | 2007-12-19 | 2013-01-16 | 富士通セミコンダクター株式会社 | 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム |
US8037350B1 (en) * | 2008-04-30 | 2011-10-11 | Hewlett-Packard Development Company, L.P. | Altering a degree of redundancy used during execution of an application |
DE102008037431B4 (de) | 2008-10-10 | 2013-06-06 | Lear Corporation Gmbh | Verfahren zur dynamischen Konfiguration eines Signalaufbereiters |
US20100138575A1 (en) | 2008-12-01 | 2010-06-03 | Micron Technology, Inc. | Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices |
US20100174887A1 (en) | 2009-01-07 | 2010-07-08 | Micron Technology Inc. | Buses for Pattern-Recognition Processors |
US9323994B2 (en) | 2009-12-15 | 2016-04-26 | Micron Technology, Inc. | Multi-level hierarchical routing matrices for pattern-recognition processors |
WO2011091323A1 (en) | 2010-01-21 | 2011-07-28 | Qst Holdings, Llc | A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations |
WO2011123151A1 (en) * | 2010-04-02 | 2011-10-06 | Tabula Inc. | System and method for reducing reconfiguration power usage |
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를 사용하는 이종 시스템에서 가상화를 이용한 어플리케이션 컴파일 및 실행 방법 및 장치 |
US10983947B2 (en) * | 2011-11-21 | 2021-04-20 | Robert Keith Mykland | Method and dynamically reconfigurable processor adapted for management of persistence of information across multiple instruction cycles |
US20130275709A1 (en) | 2012-04-12 | 2013-10-17 | Micron Technology, Inc. | Methods for reading data from a storage buffer including delaying activation of a column select |
US9524248B2 (en) | 2012-07-18 | 2016-12-20 | Micron Technology, Inc. | Memory management for a hierarchical memory system |
US9063532B2 (en) | 2012-08-31 | 2015-06-23 | Micron Technology, Inc. | Instruction insertion in state machine engines |
US9465620B2 (en) * | 2012-12-20 | 2016-10-11 | Intel Corporation | Scalable compute fabric |
US9703574B2 (en) | 2013-03-15 | 2017-07-11 | Micron Technology, Inc. | Overflow detection and correction in state machine engines |
US9448965B2 (en) | 2013-03-15 | 2016-09-20 | Micron Technology, Inc. | Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine |
US9465763B2 (en) | 2013-06-17 | 2016-10-11 | Altera Corporation | Bridge circuitry for communications with dynamically reconfigurable circuits |
CN104348889B (zh) * | 2013-08-09 | 2019-04-16 | 鸿富锦精密工业(深圳)有限公司 | 切换开关及电子装置 |
US10019260B2 (en) * | 2013-09-20 | 2018-07-10 | Via Alliance Semiconductor Co., Ltd | Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match |
US9811335B1 (en) * | 2013-10-14 | 2017-11-07 | Quicklogic Corporation | Assigning operational codes to lists of values of control signals selected from a processor design based on end-user software |
US9338057B2 (en) * | 2013-10-30 | 2016-05-10 | Netapp, Inc. | Techniques for searching data associated with devices in a heterogeneous data center |
US9990131B2 (en) * | 2014-09-22 | 2018-06-05 | Xilinx, Inc. | Managing memory in a multiprocessor system |
US9250900B1 (en) | 2014-10-01 | 2016-02-02 | Cadence Design Systems, Inc. | Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network |
US9223921B1 (en) * | 2014-11-13 | 2015-12-29 | Xilinx, Inc. | Compilation of HLL code with hardware accelerated functions |
US11366675B2 (en) | 2014-12-30 | 2022-06-21 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
US10769099B2 (en) | 2014-12-30 | 2020-09-08 | Micron Technology, Inc. | Devices for time division multiplexing of state machine engine signals |
US10430210B2 (en) | 2014-12-30 | 2019-10-01 | Micron Technology, Inc. | Systems and devices for accessing a state machine |
JP6313237B2 (ja) | 2015-02-04 | 2018-04-18 | 東芝メモリ株式会社 | ストレージシステム |
US10846103B2 (en) | 2015-10-06 | 2020-11-24 | Micron Technology, Inc. | Methods and systems for representing processing resources |
US10691964B2 (en) | 2015-10-06 | 2020-06-23 | Micron Technology, Inc. | Methods and systems for event reporting |
US10977309B2 (en) | 2015-10-06 | 2021-04-13 | Micron Technology, Inc. | Methods and systems for creating networks |
CN105955923A (zh) * | 2016-04-27 | 2016-09-21 | 南京大学 | 一种可配置流水信号处理核的高效率控制器及控制方法 |
US10146555B2 (en) | 2016-07-21 | 2018-12-04 | Micron Technology, Inc. | Adaptive routing to avoid non-repairable memory and logic defects on automata processor |
US10534541B2 (en) | 2016-09-20 | 2020-01-14 | Seagate Technology Llc | Asynchronous discovery of initiators and targets in a storage fabric |
US10019311B2 (en) | 2016-09-29 | 2018-07-10 | Micron Technology, Inc. | Validation of a symbol response memory |
US10268602B2 (en) | 2016-09-29 | 2019-04-23 | Micron Technology, Inc. | System and method for individual addressing |
US10929764B2 (en) | 2016-10-20 | 2021-02-23 | Micron Technology, Inc. | Boolean satisfiability |
US10592450B2 (en) | 2016-10-20 | 2020-03-17 | Micron Technology, Inc. | Custom compute cores in integrated circuit devices |
US12073308B2 (en) | 2017-01-04 | 2024-08-27 | Stmicroelectronics International N.V. | Hardware accelerator engine |
JP6751057B2 (ja) * | 2017-07-04 | 2020-09-02 | 日立オートモティブシステムズ株式会社 | 電子制御システム |
US11243880B1 (en) * | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11114138B2 (en) | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
CN108172249B (zh) * | 2017-12-22 | 2021-09-17 | 湖南国科微电子股份有限公司 | 一种NAND Flash访问操作方法、装置及系统 |
US10922412B2 (en) * | 2018-01-22 | 2021-02-16 | The Boeing Company | Automatic tampering detection in networked control systems |
US10866753B2 (en) | 2018-04-03 | 2020-12-15 | Xilinx, Inc. | Data processing engine arrangement in a device |
US11204976B2 (en) | 2018-11-19 | 2021-12-21 | Groq, Inc. | Expanded kernel generation |
US10878150B1 (en) * | 2019-09-17 | 2020-12-29 | Xilinx, Inc. | Loop optimization in a circuit design netlist |
US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
CN113032329B (zh) * | 2021-05-21 | 2021-09-14 | 千芯半导体科技(北京)有限公司 | 基于可重构存算芯片的计算结构、硬件架构及计算方法 |
US20230052672A1 (en) * | 2021-08-10 | 2023-02-16 | International Business Machines Corporation | Queue bypassing interrupt handling |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4811214A (en) * | 1986-11-14 | 1989-03-07 | Princeton University | Multinode reconfigurable pipeline computer |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4037094A (en) * | 1971-08-31 | 1977-07-19 | Texas Instruments Incorporated | Multi-functional arithmetic and logical unit |
US4250545A (en) * | 1978-12-29 | 1981-02-10 | Bell Telephone Laboratories, Incorporated | Data processing apparatus providing autoloading of memory pointer registers |
US5042004A (en) * | 1986-03-06 | 1991-08-20 | Advanced Micro Devices, Inc. | Programmable logic device with subroutine stack and random access memory |
US4791603A (en) | 1986-07-18 | 1988-12-13 | Honeywell Inc. | Dynamically reconfigurable array logic |
JP2733765B2 (ja) | 1987-11-10 | 1998-03-30 | 株式会社日立製作所 | 回路構成装置 |
US5068823A (en) * | 1988-07-11 | 1991-11-26 | Star Semiconductor Corporation | Programmable integrated circuit using topological and parametric data to selectively connect and configure different high level functional blocks thereof |
US5452231A (en) * | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
DE68929518T2 (de) * | 1988-10-05 | 2005-06-09 | Quickturn Design Systems, Inc., Mountain View | Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät |
US5109353A (en) * | 1988-12-02 | 1992-04-28 | Quickturn Systems, Incorporated | Apparatus for emulation of electronic hardware system |
US5353243A (en) * | 1989-05-31 | 1994-10-04 | Synopsys Inc. | Hardware modeling system and method of use |
US5400262A (en) * | 1989-09-20 | 1995-03-21 | Aptix Corporation | Universal interconnect matrix array |
JP2968289B2 (ja) * | 1989-11-08 | 1999-10-25 | 株式会社リコー | 中央演算処理装置 |
US5522083A (en) * | 1989-11-17 | 1996-05-28 | Texas Instruments Incorporated | Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors |
US5280474A (en) * | 1990-01-05 | 1994-01-18 | Maspar Computer Corporation | Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays |
US5550845A (en) * | 1990-08-03 | 1996-08-27 | Siemens Aktiengesellschaft | Method for dynamic testing of digital logic circuits |
US5452101A (en) * | 1991-10-24 | 1995-09-19 | Intel Corporation | Apparatus and method for decoding fixed and variable length encoded data |
CA2073516A1 (en) * | 1991-11-27 | 1993-05-28 | Peter Michael Kogge | Dynamic multi-mode parallel processor array architecture computer system |
FR2686175B1 (fr) * | 1992-01-14 | 1996-12-20 | Andre Thepaut | Systeme de traitement de donnees multiprocesseur. |
US5542067A (en) * | 1992-04-23 | 1996-07-30 | International Business Machines Corporation | Virtual multi-port RAM employing multiple accesses during single machine cycle |
US5475624A (en) * | 1992-04-30 | 1995-12-12 | Schlumberger Technologies, Inc. | Test generation by environment emulation |
US5386562A (en) * | 1992-05-13 | 1995-01-31 | Mips Computer Systems, Inc. | Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop |
US5684980A (en) * | 1992-07-29 | 1997-11-04 | Virtual Computer Corporation | FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions |
US5802290A (en) * | 1992-07-29 | 1998-09-01 | Virtual Computer Corporation | Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed |
US5535342A (en) * | 1992-11-05 | 1996-07-09 | Giga Operations Corporation | Pld connector for module having configuration of either first PLD or second PLD and reconfigurable bus for communication of two different bus protocols |
US5497498A (en) * | 1992-11-05 | 1996-03-05 | Giga Operations Corporation | Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation |
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 |
US5524243A (en) * | 1992-12-16 | 1996-06-04 | Rolm Company | Parallel programming of field programmable gate array devices |
US5430734A (en) * | 1993-02-12 | 1995-07-04 | Metalithic Systems, Inc. | Fault-tolerant waferscale integrated circuit device and method |
US5550989A (en) * | 1993-05-28 | 1996-08-27 | International Business Machines Corporation | Bridge circuit that can eliminate invalid data during information transfer between buses of different bitwidths |
US5466117A (en) * | 1993-06-10 | 1995-11-14 | Xilinx, Inc. | Device and method for programming multiple arrays of semiconductor devices |
WO1995004402A1 (en) * | 1993-08-03 | 1995-02-09 | Xilinx, Inc. | Microprocessor-based fpga |
AU5550194A (en) * | 1993-09-27 | 1995-04-18 | Giga Operations Corporation | Implementation of a selected instruction set cpu in programmable hardware |
US5548771A (en) * | 1993-11-02 | 1996-08-20 | Motorola Inc. | Multi-processor data processing system having multiple ports coupled to multiple interface circuits |
US5539893A (en) * | 1993-11-16 | 1996-07-23 | Unisys Corporation | Multi-level memory and methods for allocating data most likely to be used to the fastest memory level |
JPH07175664A (ja) | 1993-12-16 | 1995-07-14 | Dainippon Printing Co Ltd | コンパイラ装置 |
US5539888A (en) * | 1993-12-23 | 1996-07-23 | Unisys Corporation | System and method for processing external conditional branch instructions |
US5535406A (en) * | 1993-12-29 | 1996-07-09 | Kolchinsky; Alexander | Virtual processor module including a reconfigurable programmable matrix |
US5548775A (en) * | 1993-12-30 | 1996-08-20 | International Business Machines Corporation | System and method for adaptive active monitoring of high speed data streams using finite state machines |
US5465975A (en) * | 1994-03-04 | 1995-11-14 | Shull; Naomi S. | Dead hand card game and method of use |
US5551013A (en) * | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5557734A (en) * | 1994-06-17 | 1996-09-17 | Applied Intelligent Systems, Inc. | Cache burst architecture for parallel processing, such as for image processing |
US5546347A (en) * | 1994-07-22 | 1996-08-13 | Integrated Device Technology, Inc. | Interleaving architecture and method for a high density FIFO |
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 |
US5574930A (en) * | 1994-08-12 | 1996-11-12 | University Of Hawaii | Computer system and method using functional memory |
JPH0869447A (ja) | 1994-08-31 | 1996-03-12 | Toshiba Corp | データ処理装置 |
US5457408A (en) * | 1994-11-23 | 1995-10-10 | At&T Corp. | Method and apparatus for verifying whether a bitstream received by a field programmable gate array (FPGA) is intended for that FPGA |
US5546545A (en) * | 1994-12-09 | 1996-08-13 | International Business Machines Corporation | Rotating priority selection logic circuit |
US5742180A (en) * | 1995-02-10 | 1998-04-21 | Massachusetts Institute Of Technology | Dynamically programmable gate array with multiple contexts |
US5546562A (en) * | 1995-02-28 | 1996-08-13 | Patel; Chandresh | Method and apparatus to emulate VLSI circuits within a logic simulator |
US5737631A (en) * | 1995-04-05 | 1998-04-07 | Xilinx Inc | Reprogrammable instruction set accelerator |
US5752035A (en) * | 1995-04-05 | 1998-05-12 | Xilinx, Inc. | Method for compiling and executing programs for reprogrammable instruction set accelerator |
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 |
US6594752B1 (en) * | 1995-04-17 | 2003-07-15 | Ricoh Company, Ltd. | Meta-address architecture for parallel, dynamically reconfigurable computing |
DE19609035A1 (de) * | 1996-03-08 | 1997-09-11 | Krupp Foerdertechnik Gmbh | Einrichtung zum kontinuierlichen Messen der jeweiligen Position eines in Bewegung befindlichen Schienenfahrzeugs |
US5811214A (en) * | 1997-05-08 | 1998-09-22 | Eastman Kodak Company | Monocomponent developer comprising surface treated toners |
US6363381B1 (en) * | 1998-11-03 | 2002-03-26 | Ricoh Co., Ltd. | Compressed document matching |
-
1995
- 1995-04-17 US US08/423,560 patent/US5794062A/en not_active Expired - Fee Related
-
1996
- 1996-04-08 TW TW085104076A patent/TW394884B/zh not_active IP Right Cessation
- 1996-04-16 DE DE19614991A patent/DE19614991C2/de not_active Expired - Fee Related
- 1996-04-17 KR KR1019960012145A patent/KR100283812B1/ko not_active IP Right Cessation
- 1996-04-17 JP JP09569096A patent/JP3785218B2/ja not_active Expired - Fee Related
-
1998
- 1998-02-26 US US09/031,323 patent/US6182206B1/en not_active Expired - Lifetime
- 1998-05-11 US US09/075,694 patent/US6058469A/en not_active Expired - Lifetime
-
2005
- 2005-07-29 US US11/192,490 patent/US7493472B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4811214A (en) * | 1986-11-14 | 1989-03-07 | Princeton University | Multinode reconfigurable pipeline computer |
Non-Patent Citations (1)
Title |
---|
SLAGER, Jim: Advanced features speeze autopro- cessor chip. In: Computer Design, Okt. 83, S. 189-193 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021186A (en) * | 1995-04-17 | 2000-02-01 | Ricoh Company Ltd. | Automatic capture and processing of facsimile transmissions |
US6061367A (en) * | 1996-08-23 | 2000-05-09 | Siemens Aktiengesellschaft | Processor with pipelining structure and method for high-speed calculation with pipelining processors |
EP0825540A1 (de) * | 1996-08-23 | 1998-02-25 | Siemens Aktiengesellschaft | Prozessor mit Pipelining-Aufbau |
DE19815865B4 (de) * | 1997-04-09 | 2004-11-04 | Ricoh Co., Ltd. | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen |
WO2000017772A2 (de) * | 1998-09-23 | 2000-03-30 | Infineon Technologies Ag | Konfigurierbarer hardware-block |
WO2000017772A3 (de) * | 1998-09-23 | 2000-07-27 | Siemens Ag | Konfigurierbarer hardware-block |
DE19843663A1 (de) * | 1998-09-23 | 2000-03-30 | Siemens Ag | Konfigurierbarer Hardware-Block |
US7028162B2 (en) * | 1998-09-23 | 2006-04-11 | Siemens Aktiengesellschaft | Configurable processing block capable of interacting with external hardware |
US7206829B1 (en) | 1998-09-30 | 2007-04-17 | Siemens Aktiengesellschaft | Method for operating a network computer |
US7103429B2 (en) | 2001-08-11 | 2006-09-05 | Daimlerchrysler Ag | Universal computer architecture |
USRE43619E1 (en) | 2001-08-11 | 2012-08-28 | Ramsle Technology Group Gmbh, Llc | Universal computer architecture |
US7225321B2 (en) | 2001-10-29 | 2007-05-29 | Siemens Aktiengesellschaft | Reprogrammable microprogram based reconfigurable multi-cell logic concurrently processing configuration and data signals |
DE102005010476A1 (de) * | 2005-03-04 | 2006-09-07 | Daimlerchrysler Ag | Steuergerät mit konfigurierbaren Hardwaremodulen |
Also Published As
Publication number | Publication date |
---|---|
JP3785218B2 (ja) | 2006-06-14 |
US7493472B2 (en) | 2009-02-17 |
KR960038592A (ko) | 1996-11-21 |
DE19614991C2 (de) | 2003-11-06 |
US6182206B1 (en) | 2001-01-30 |
US20050268070A1 (en) | 2005-12-01 |
US6058469A (en) | 2000-05-02 |
TW394884B (en) | 2000-06-21 |
JPH08286908A (ja) | 1996-11-01 |
US5794062A (en) | 1998-08-11 |
KR100283812B1 (ko) | 2001-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
DE102018005181B4 (de) | Prozessor für einen konfigurierbaren, räumlichen beschleuniger mit leistungs-, richtigkeits- und energiereduktionsmerkmalen | |
US6961842B2 (en) | Meta-address architecture for parallel, dynamically reconfigurable computing | |
DE102018006791A1 (de) | Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator | |
US11307873B2 (en) | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging | |
US10915471B2 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
DE19815865A1 (de) | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen | |
US10817291B2 (en) | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator | |
DE102018005172A1 (de) | Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger | |
US20190303263A1 (en) | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator | |
US10853073B2 (en) | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator | |
DE102018126150A1 (de) | Einrichtung, verfahren und systeme für multicast in einem konfigurierbaren räumlichen beschleuniger | |
US10678724B1 (en) | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator | |
WO2000077652A9 (de) | Sequenz-partitionierung auf zellstrukturen | |
DE19735350A1 (de) | Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor | |
DE10028397A1 (de) | Registrierverfahren | |
Catthoor et al. | Architectural strategies for an application-specific synchronous multiprocessor environment | |
Sima et al. | Field-programmable custom computing machines-a taxonomy | |
Iseli | Spyder: A reconfigurable processor development system | |
Wolinski et al. | A polymorphous computing fabric | |
WO2003017095A2 (de) | Verfahren zum übersetzen von programmen für rekonfigurierbare architekturen | |
DE69614442T2 (de) | Mikrorechner | |
JP4285877B2 (ja) | 動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法 | |
DE19655265B4 (de) | Verfahren zur Erzeugung von Instruktionen zur dynamischen Rekonfiguration | |
Heenes et al. | A multiprocessor architecture for the massively parallel model GCA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8172 | Supplementary division/partition in: |
Ref document number: 19655265 Country of ref document: DE Kind code of ref document: P |
|
Q171 | Divided out to: |
Ref document number: 19655265 Country of ref document: DE Kind code of ref document: P |
|
8304 | Grant after examination procedure | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20141101 |