DE19614991A1 - System und Verfahren zum skalierbaren, parallelen, dynamisch rekonfigurierbaren Rechnen - Google Patents

System und Verfahren zum skalierbaren, parallelen, dynamisch rekonfigurierbaren Rechnen

Info

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
Application number
DE19614991A
Other languages
English (en)
Other versions
DE19614991C2 (de
Inventor
Michael A Baxter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to DE19655265A priority Critical patent/DE19655265B4/de
Publication of DE19614991A1 publication Critical patent/DE19614991A1/de
Application granted granted Critical
Publication of DE19614991C2 publication Critical patent/DE19614991C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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.
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.
ANHANG A Instruktionssatz 0 Eine Allzweck-Außenschleifen-ISA 1.0 Architekturmodell des Programmierers
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.
1.1. Register
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.
Fig. 1. Register
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.
1.2. Speicherzugriff
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.
Fig. 2. pcw-Felder
1.3. Aufrufkonventionen bzw. "Calling"-Konventionen
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).
1.4. Traps und Interrupts
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.
2.0 Instruktionen gruppiert nach Funktion
Die Notationskonventionen sind:
2.1 Register-Bewegung
Tabelle 1
Register-Bewegung
2.2 Logische Operationen
Tabelle 2
Logische Operationen. Flags modifiziert: Z, N
2.3 Speicher Laden/Abspeichern
Tabelle 3
Laden/Abspeichern. Modifizierte Flags: Z, N
2.4 Arithmetische Operationen
Tabelle 4
Arithmetische Operationen. Modifizierte Flags: Z, N, V, C
2.5 Steuer-Fluß
Tabelle 5
Steuer-Fluß. Modifizierte Flags: Keine
3.0 Alphabetische Referenz
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.
Tabelle 6
Notations-Konventionen
add (Add data registers)-Addiert Datenregister
Addiert zwei Datenregister, läßt das Ergebnis im Bestimmungsregister.
addc (Add data registers with carry)-Addiert Datenregister mit Übertrag
Addiert zwei Datenregister plus das Carry-Flag bzw. Übertrags-Flag, läßt das Ergebnis im Be­ stimmungsregister.
addq (Add quick constant)-Addiere schnell Konstante
Addiert ein 8-Bit vorzeichenbehaftete (Zweierkomplement) Konstante zu einem Datenregister, läßt das Ergebnis im Register.
and (Bitwise and) - Bitweises und
Führt das bitweise UND von zwei Datenregister durch, läßt das Ergebnis im Bestimmungsregister.
brCC (Conditional branch) - bedingte Verzweigung
Falls die Bedingung war ist, dann wird (offset «Kisa) zu nipar addiert.
bru (Unconditional branch) - unbedingte Verzweigung
(offset «Kisa) wird zu nipar addiert.
byte (Byte align)-Byte-Ausrichtung
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.
cmp (Compare data registers) - Vergleiche Datenregister
Setzt Flags zum Größenvergleich von zwei Datenregister, indem das Quellenregister von dem Bestimmungsregister substrahiert wird, beeinflußt nur die Flags.
div (Signed 32 by 16 division) - Vorzeichenbehaftete 32-durch-16-Division
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.
eadd (Add data register to address register) - Addiere Datenregister zu Adressregister
Addiert ein Datenregister zu einem Adressenregister, läßt das Ergebnis im Adressenregister.
eaddq (Add quick constant to address register) - Addiere schnell Konstante zu Adressen­ register
Addiert eine vorzeichenbehaftete 8-Bit-Konstante zu einem Adressenregister, läßt das Ergebnis in dem Adressenregister.
ecmp (Compare of address registers) - Vergleich von Adressregister
Setzt Flags zum Größenvergleich von zwei Adressregister, indem das Quellenregister von dem Bestimmungsregister substrahiert wird, beinflußt nur die Flags.
efadd (Add address register to address register) - Addiere Adressregister zu Adressregister
Addiert zwei Adressregister, läßt das Ergebnis im Bestimmungsregister.
efsub (Substract address register from address register) - Substrahiere Adressregister von Adressregister
Substrahiere das Quellenregister von dem Bestimmungsregister, speicher das Ergebnis in dem Bestimmungsregister ab.
eldf (Extended Ioad forward) - Erweitertes Laden vorwärts
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.
eldi (load immediate into adress register) - Lade sofort in Adressregister
Lade 64-Bit-Konstante in ein Adressregister.
emov (Move address register) - Bewege Adressenregister
Bewege den Wert von dem Quellenregister zu dem Bestimmungs-Adressregister.
erotl (Rotate address register left through carry flag) - Rotiere bzw. verschiebe zyklisch Adressenregister nach links durch Carry-Flag
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.
esl (Shift address register left) - Schiebe Adressenregister links
Schiebe ein Adressenregister zu dem linken Bit.
esr (shift address register right) - Schiebe Adressenregister rechts
Schiebe ein Adressenregister zu dem rechten Bit.
est (Store address register) - Speichere Adressenregister
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.
estr (Extended store reverse) - Erweiterte Speicherumkehrung
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.
esub (Subsfract data register from address register) - Substrahiere Datenregister von Adress­ register
Substrahiert ein Datenregister von einem Adressenregister, läßt das Ergebnis im Adressregister.
inv (Bitwise inverse) - Bitweise invers
Plaziert das bitweise Inverse des Quellenregisters in das Bestimmungsregister.
jCC (Conditional jump) - Bedingter Sprung
Bedingter Sprung zu Absolutadressen. Siehe Tabelle 7 für Bedingungscode-Bit- Definitionen.
jmp (Unconditional jump) - Unbedingter Sprung
Unbedingter Sprung zu Absolut-Adresse. Dasselbe wie jCC mit Bedingung "immer".
jsr (Jump to subroutine) - Springe zu Unterprogramm
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.
ksl (Shift left by constant) - Schiebe links um Konstante
Schiebe ein Datenregister um eine konstante Anzahl von Bits nach links.
ksr (Shift right by constant) - Schiebe rechts um Konstante
Schiebe ein Datenregister um eine konstante Anzahl von Bits nach rechts.
Id (Load data register) - Lade Datenregister
Lade ein Datenregister aus dem Speicher. Der Wert, auf den durch das Quellenadreßregister gezeigt wird, wird in das Bestimmungsdatenregister geladen.
Idf (Load forward) - Lade vorwärts
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.
Idi (Load immediate) - Lade sofort
Lade einen 16-Bit-Sofort-Wert bzw. einen 16-Bit-Direkt-Wert in ein Datenregister.
mask (Bitwise mask operation)-Bitweise Maskier-Operation
Das Bestimmungregister wird durch das bitweise Inverse des Quellenregisters ersetzt, das mit dem Bestimmungsregister gegründet wird.
mov (Move data register) - Bewege Datenregister
Der Wert in dem Quellendatenregister wird in das Bestimmungsdatenregister plaziert.
mul (Signed 16 by 16-bit multiply)-Vorzeichenbehaftete 16 mit 16-Bit-Multiplikation
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.
or (Bitwise or) - Bitweises oder
Führt das bitweise ODER bzw. OR von zwei Datenregistern durch, läßt das Ergebnis in dem Bestimmungsregister.
rotl (Rotate data register left through carry flag) - Rotiere bzw. verschiebe zyklisch Daten­ register links durch Carry-Flag
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.
rti (Return from interrupt) - Return vom Interrupt
Siehe Abschnitt 1.4. Das Quellenregister bzw. Sourceregister wird als Stack-Zeiger verwen­ det.
rts (Return from subroutine) - Rückkehr von Unterprogramm
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.
sl (Shift left) - Schiebe links
Das Bestimmungsregister wird links um die Anzahl von Bits verschoben, die durch den Wert des Quellenregister spezifiziert sind.
sr (Shift right) - Schiebe rechts
Das Bestimmungsregister wird rechts um die Anzahl von Bits verschoben, die durch den Wert des Quellenregisters spezifiziert sind.
st (Store) - Speichern
Speichere aus einem Datenregister. Der Wert in dem Quellenregister wird zu der Speicherstelle geschrieben, auf die durch das Bestimmungsregister gezeigt wird.
str (Store reserve) - Speicher umgekehrt
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.
sub (Substract data register from data register) - Substrahiere Datenregister von Daten­ register
Substrahiere das Quellenregister von dem Bestimmungsregister, speichere das Ergebnis in dem Bestimmungsregister.
subc (Substract with carry) - Substrahiere mit Carry bzw. Übertrag
Substrahiere das Quellenregister von dem Bestirnmungsregister, dann substrahiere das Carry-Bit, wobei das Ergebnis in dem Bestimmungsregister gespeichert wird.
trap (Unconditional trap) - Unbedingter Trap
Führe Interrupt-Handler aus. Siehe Abschnitt 1.4. Das Bestimmungsregister wird als der Stack-Pointer verwendet.
udiv (Unsigned 32 by 16-bit division) - Nicht-vorzeichenbehaftete 32 durch 16-Bit Division
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.
umul ( Unsigned 16 by 16-Bit-Multiplikation) - Nicht-vorzeichenbehaftete 16 mit 16-Bit Multiplikation
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.
xad (Transfer address register to data register) - Übertrage Adressenregister zu Datenregister
Ü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.
xda (Transfer data register to address register) - Übertrag Datenregister zu Adressenregister
Ü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.
xor (Bitwise exclusive or) - Bitweises exklusives Oder
Führt das bitweise exklusive ODER bzw. OR bezüglich zwei Datenregistern durch, läßt das Ergebnis im Bestimmungsregister.
xpcw (Exchange processor control word) - Tausche Prozessor-Steuerwort
Der Wert in dem Quellendatenregister wird durch das pcw-Register ausgetauscht.
xivec (Exchange interrupt vector) -Tausche Interrupt-Vektor
Der Wert in dem Quellenadressregister wird mit dem ivec-Register ausgetauscht.
4.0 Bedingungs-Codes
Die Bedingungs-Code-Opcode-Unterfelder verwenden die Werte der folgenden Tabelle:
Tabelle 7
Bedingungs-Codes
Anhang B Instruktionssatz 1 Eine gepipelinte Multiplikations-Akkumulier-ISA ISA1 gepipelinte Faltungsmaschine für XC 4013 Einführung
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.
ISA1 Instruktionssatz Datenbewegung ld (reg-vector)
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.
st (reg-vector)
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.
ld (ivec-data)
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.
Programm-Steuerung jmp (nipar-data)
Die 64-Bit-Adresse, die dieser Instruktion folgt, wird in das NIPAR- Register geladen, wodurch auf die nächste auszuführende Instruktion gezeigt wird.
Arithmetik mac (m-reg)
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).
macp (s-vec, d-vec)
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.
Rekonfiguration reconf (ISA-vector)
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.
Block-Diagramm von ISA1 - Gepipelinete Faltungsmaschine für XC4013
Speicher-Datenbus

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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
DE19614991A 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 Expired - Fee Related DE19614991C2 (de)

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)

* Cited by examiner, † Cited by third party
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
WO2000017772A2 (de) * 1998-09-23 2000-03-30 Infineon Technologies 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 (241)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
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
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.)
JP3961028B2 (ja) 1996-12-27 2007-08-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等)
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
AU757557B2 (en) 1997-11-13 2003-02-27 Intellectual Ventures I Llc 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
JP3668425B2 (ja) * 1998-09-30 2005-07-06 インフィネオン テクノロジース アクチエンゲゼルシャフト リコンフィギュレーション可能な回路を用いて個別アルゴリズムを実行するための方法およびこのような方法を実施するための装置
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
US8230411B1 (en) * 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
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
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
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
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
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
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
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
US20010049757A1 (en) * 2000-03-01 2001-12-06 Ming-Kang Liu Programmable task scheduler for use with multiport xDSL processing system
AU2001243463A1 (en) 2000-03-10 2001-09-24 Arc International Plc Memory interface and method of interfacing between functional entities
RU2158319C1 (ru) * 2000-04-25 2000-10-27 Институт металлургии и материаловедения им. А.А. Байкова РАН Высокопрочная коррозионно- и износостойкая аустенитная сталь
EP2226732A3 (de) 2000-06-13 2016-04-06 PACT XPP Technologies AG Cachehierarchie für einen Multicore-Prozessor
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
US6920418B2 (en) 2000-12-30 2005-07-19 International Business Machines Corporation Detecting events within simulation models
US6941257B2 (en) * 2000-12-30 2005-09-06 International Business Machines Corporation Hierarchical processing of simulation model events
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
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
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
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
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
US7249242B2 (en) 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
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
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
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US6848074B2 (en) * 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
WO2003017095A2 (de) * 2001-08-16 2003-02-27 Pact Xpp Technologies Ag Verfahren zum übersetzen von programmen für rekonfigurierbare architekturen
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
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
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
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
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
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
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
US20040006636A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Optimized digital media delivery engine
US7899924B2 (en) * 2002-04-19 2011-03-01 Oesterreicher Richard T Flexible streaming hardware
US20040006635A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Hybrid streaming platform
KR100818826B1 (ko) * 2002-04-25 2008-04-01 에이알씨 인터내셔널 집적회로의 설계를 발생하기 위한 컴퓨터처리되는 장치 및 복수의 성분을 갖는 집적회로 설계 내에 계층을 발생하기 위한 방법
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
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
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7263602B2 (en) * 2002-08-16 2007-08-28 Carnegie Mellon University Programmable pipeline fabric utilizing partially global configuration buses
US6978435B2 (en) 2002-08-29 2005-12-20 Anadigm, Inc. Apparatus for programming a programmable device, and method
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US20040122643A1 (en) * 2002-08-29 2004-06-24 Anderson Howard C. Apparatus and method for simulating switched-capacitor circuits
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
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
US8001266B1 (en) 2003-03-31 2011-08-16 Stretch, Inc. Configuring a multi-processor system
US7581081B2 (en) * 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7613900B2 (en) 2003-03-31 2009-11-03 Stretch, Inc. Systems and methods for selecting input/output configuration in an integrated circuit
US7590829B2 (en) 2003-03-31 2009-09-15 Stretch, Inc. Extension adapter
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
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
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
EP1782287A2 (de) * 2004-07-21 2007-05-09 Beach Unlimited LLC Auf blockkarten-caching basierende verteilte speicherarchitektur und vfs-stapelbare dateisystemmodule
KR100868820B1 (ko) * 2004-07-23 2008-11-14 비치 언리미티드 엘엘씨 데이터 스트림을 전달하는 방법 및 시스템과 데이터 저장 레벨을 제어하는 방법
EP1836601A2 (de) * 2004-11-30 2007-09-26 Tokyo Electron Limited Dynamisch umkonfigurierbarer prozessor
TW200617703A (en) * 2004-11-30 2006-06-01 Tokyo Electron Ltd 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 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
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
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8276132B1 (en) * 2007-11-12 2012-09-25 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
JP5990466B2 (ja) 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US8912820B2 (en) * 2010-04-02 2014-12-16 Tabula, Inc. System and method for reducing reconfiguration power
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
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
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
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
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
US11366675B2 (en) 2014-12-30 2022-06-21 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
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
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
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
US10417364B2 (en) * 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
JP6751057B2 (ja) * 2017-07-04 2020-09-02 日立オートモティブシステムズ株式会社 電子制御システム
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. 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
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
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
US11537687B2 (en) 2018-11-19 2022-12-27 Groq, Inc. Spatial locality transform of matrices
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 千芯半导体科技(北京)有限公司 基于可重构存算芯片的计算结构、硬件架构及计算方法

Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc 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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
SLAGER, Jim: Advanced features speeze autopro- cessor chip. In: Computer Design, Okt. 83, S. 189-193 *

Cited By (13)

* Cited by examiner, † Cited by third party
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
DE19843663A1 (de) * 1998-09-23 2000-03-30 Siemens Ag Konfigurierbarer Hardware-Block
WO2000017772A3 (de) * 1998-09-23 2000-07-27 Siemens Ag Konfigurierbarer hardware-block
WO2000017772A2 (de) * 1998-09-23 2000-03-30 Infineon Technologies 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
KR100283812B1 (ko) 2001-03-02
JPH08286908A (ja) 1996-11-01
DE19614991C2 (de) 2003-11-06
US20050268070A1 (en) 2005-12-01
KR960038592A (ko) 1996-11-21
US6058469A (en) 2000-05-02
US5794062A (en) 1998-08-11
US7493472B2 (en) 2009-02-17
US6182206B1 (en) 2001-01-30
TW394884B (en) 2000-06-21
JP3785218B2 (ja) 2006-06-14

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
US6961842B2 (en) Meta-address architecture for parallel, dynamically reconfigurable computing
US11593295B2 (en) Apparatuses, methods, and systems for operations in a configurable spatial accelerator
DE102018006735A1 (de) Prozessoren und Verfahren für konfigurierbares Clock-Gating in einem räumlichen Array
DE102018006889A1 (de) Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array
DE102018130441A1 (de) Einrichtung, Verfahren und Systeme mit konfigurierbarem räumlichem Beschleuniger
US11307873B2 (en) Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
DE19815865A1 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
US10915471B2 (en) Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
DE102018005169A1 (de) Prozessoren und verfahren mit konfigurierbaren netzwerkbasierten datenflussoperatorschaltungen
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
EP1228440B1 (de) Sequenz-partitionierung auf zellstrukturen
US10817291B2 (en) Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10853073B2 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10678724B1 (en) Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
DE19735350A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor
DE10028397A1 (de) Registrierverfahren
EP1116128A2 (de) Verfahren zum konfigurieren eines konfigurierbaren hardware-blocks
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
WO2003017095A2 (de) Verfahren zum übersetzen von programmen für rekonfigurierbare architekturen
JP4285877B2 (ja) 動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法
DE19655265B4 (de) Verfahren zur Erzeugung von Instruktionen zur dynamischen Rekonfiguration

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