DE602005001900T2 - Rekonfigurierbarer Prozessor und Halbleiterbaustein - Google Patents

Rekonfigurierbarer Prozessor und Halbleiterbaustein Download PDF

Info

Publication number
DE602005001900T2
DE602005001900T2 DE602005001900T DE602005001900T DE602005001900T2 DE 602005001900 T2 DE602005001900 T2 DE 602005001900T2 DE 602005001900 T DE602005001900 T DE 602005001900T DE 602005001900 T DE602005001900 T DE 602005001900T DE 602005001900 T2 DE602005001900 T2 DE 602005001900T2
Authority
DE
Germany
Prior art keywords
register
registers
arithmetic
group
window
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE602005001900T
Other languages
English (en)
Other versions
DE602005001900D1 (de
Inventor
Ichiro Kasama
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of DE602005001900D1 publication Critical patent/DE602005001900D1/de
Application granted granted Critical
Publication of DE602005001900T2 publication Critical patent/DE602005001900T2/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Diese Erfindung betrifft einen rekonfigurierbaren Prozessor und eine Halbleitervorrichtung und, im Besonderen, einen rekonfigurierbaren Prozessor und eine Halbleitervorrichtung mit einer Arithmetik- und Logikeinheitsgruppe, die eine Vielzahl von Arithmetik- und Logikeinheiten enthält, und einem Sequenzer zum Steuern der Operation der Arithmetik- und Logikeinheitsgruppe.
  • Nach dem Versand von Produkten können eine Veränderung der Spezifikation, das Hinzufügen einer Funktion, das Hinzufügen eines neuen Dienstes oder dergleichen vorgenommen werden. Herkömmlicherweise sind rekonfigurierbare Prozessoren vorgesehen worden, um Funktionen zu verändern, ohne Vorrichtungen neu herzustellen. Herkömmliche rekonfigurierbare Prozessoren können den obenerwähnten Situationen nur gerecht werden, indem Schaltungskonfigurationsinformationen ausgetauscht werden.
  • Zum Beispiel sind der Digital Application Processor/Distributed Network Architecture (registrierte Marke) (DAP/DNA), hergestellt bei IP-Flex Inc., und der dynamisch rekonfigurierbare Prozessor (DRP), hergestellt bei NEC Corporation, als solche rekonfigurierbaren Prozessoren bekannt.
  • Der DAP/DNA enthält eine Vielzahl von verbundenen Arithmetik- und Logikeinheitsmodulen, die zweidimensional angeordnet sind, und eine Vielzahl von Informationselementen, in denen eine Konfiguration in jedem Modul und die Verbindung zwischen Arithmetik- und Logikeinheiten beschrieben sind, und bedient verschiedene Algorithmen durch das Umschalten dieser Informationselemente.
  • Der DRP umfasst eine Vielzahl von Arithmetik- und Logikeinheitsmodulen, von denen jedes einen Instruktions speicher, einen Instruktionsdecodierer und eine Arithmetik- und Logikeinheit enthält, die zweidimensional angeordnet sind. Die Operation der Vielzahl von Arithmetik- und Logikeinheitsmodulen wird durch eine Zustandsübergangsverwaltungssektion verwaltet. Die Zustandsübergangsverwaltungssektion hat eine Zustandsübergangstabelle. Durch das Bezeichnen einer Adresse in einem Instruktionsspeicher, um durch jedes Arithmetik- und Logikeinheitsmodul ausgeführt zu werden, gemäß der Zustandsübergangstabelle selektiert die Zustandsübergangsverwaltungssektion eine Instruktion und bewirkt, dass jedes Arithmetik- und Logikeinheitsmodul diese ausführt.
  • Die herkömmlichen rekonfigurierbaren Prozessoren haben, wie oben beschrieben, eine Arithmetik- und Logikeinheitsgruppe, in der eine Vielzahl von Arithmetik- und Logikeinheiten (ALUs) enthalten ist. Die Operation von jeder Arithmetik- und Logikeinheit, die in der Arithmetik- und Logikeinheitsgruppe enthalten ist, und die Verbindung zwischen Arithmetik- und Logikeinheiten können auf der Basis von Einstellinformationen rekonfiguriert werden. Ein Register zum Halten eines Eingangswertes ist mit jeder Arithmetik- und Logikeinheit verbunden. 7 zeigt die Struktur von Arithmetik- und Logikeinheiten und Registern, die in einem herkömmlichen rekonfigurierbaren Prozessor enthalten sind.
  • ALUs 901 und 902, die in einem herkömmlichen rekonfigurierbaren Prozessor enthalten sind, tauschen Daten über einen Bus 910 aus und führen vorbestimmte Operationsprozesse aus. Register 903 und 904 zum Halten eines Eingangswertes, der über den Bus 910 eingegeben wird, sind mit der ALU 901 fest verbunden. Ähnlich sind Register 905 und 906 zum Halten eines Eingangswertes, der über den Bus 910 eingegeben wird, mit der ALU 902 fest verbunden. Die Register 903 und 904 sind sozusagen jeweilig mit zwei Eingangsports der ALU 901 fest verbunden, und die Register 905 und 906 sind jeweilig mit zwei Eingangsports der ALU 902 fest verbunden. Bei dem herkömmlichen rekonfigurierbaren Prozessor ist auf diese Weise ein Register mit einem Eingangsport einer ALU fest verbunden.
  • Indessen ist ein Prozessor eines Computers mit eingeschränktem Befehlsvorrat (RISC-Prozessor), worin eine Vielzahl von Sätzen von Registerdateien, auf die von einem externen Coprozessor zugegriffen werden kann, mit einer ALU verbunden ist, als Beispiel bekannt, bei dem eine Vielzahl von Registern mit einer ALU verbunden ist (siehe zum Beispiel die veröffentlichten Übersetzungen ins Japanische der PCT International Publication for Patent Applications Nr. 2002-512399, 3).
  • Bei herkömmlichen rekonfigurierbaren Prozessoren wird durch das Umschalten der Konfiguration einer arbeitenden Arithmetik- und Logikeinheitsgruppe im Laufe der Zeit die Leistung gemindert. 8 zeigt die Zeit, zu der das Umschalten einer Konfiguration in einem herkömmlichen rekonfigurierbaren Prozessor ausgeführt wird. Die Konfiguration einer Arithmetik- und Logikeinheitsgruppe wird gemäß den Inhalten von Prozessen umgeschaltet, die durch Anwendungen 1 und 2 ausgeführt werden.
  • Bei den herkömmlichen rekonfigurierbaren Prozessoren beträgt die Anzahl von Registern, die für jede Arithmetik- und Logikeinheit vorgesehen ist, immer eins. Um eine Konfiguration für die Anwendung 1 (921) in eine Konfiguration für die Anwendung 2 (922) umzuschalten, werden deshalb Daten, die durch die Anwendung 1 (921) erzeugt wurden, von einem Register nach Beendigung der Anwendung 1 (921) als Resultat des Exportierens der Daten (931) ausgegeben, und dann erfolgt das Umschalten auf die Konfiguration für die Anwendung 2 (922). Um die Konfiguration für die Anwendung 2 (922) auf die Konfiguration für die Anwendung 1 (921) umzuschalten, wird derselbe Prozess ausgeführt, und dann erfolgt das Umschalten auf die Konfiguration für die Anwendung 1 (921).
  • Wenn eine Anwendung umgeschaltet wird, wird eine Extrazeit zum Exportieren von Daten benötigt, wie oben angegeben. Als Resultat wird durch das Umschalten einer Anwendung auf der Basis einer feinen Zeitteilung die Leistung gemindert. Um des Weiteren ein Resultat zu halten, das durch Ausführen der Anwendung 1 erhalten wurde, und es zu verwenden, wenn die Anwendung 1 zum zweiten Mal ausgeführt wird, müssen Daten in einer Speichervorrichtung, wie etwa einem Speicher, gesichert werden. Dies hat einen großen Einfluss auf die Leistung.
  • Zusätzlich ist bei den herkömmlichen rekonfigurierbaren Prozessoren eine Fehlersuche in einer Arithmetik- und Logikeinheitsgruppe schwierig. In manchen Fällen ist es notwendig, den Zustand zu jeder Zeit einer Eingabe und einer Ausgabe in eine bzw. von einer Arithmetik- und Logikeinheit (Werte von Registern) zur Fehlersuche zu kennen. Um jedoch Daten zu entnehmen, muss die Operation vollständig gestoppt werden oder muss der Zustand von Schaltungen und Daten nach einem Stopp ganz und gar verworfen werden. Bei den herkömmlichen rekonfigurierbaren Prozessoren ist ein Register jedoch zwischen Arithmetik- und Logikeinheiten angeordnet, so dass der Wert des Registers nur über die Arithmetik- und Logikeinheiten nach außen ausgegeben werden kann. Ein Register ist mit jeder Arithmetik- und Logikeinheit verbunden. Um den Wert eines Registers zu einem besonderen Zeitpunkt extern zu erhalten, müssen daher Operationen, die all den Arithmetik- und Logikeinheiten zugeteilt sind, temporär verändert werden in "Keine Operation" (No Operation: NOP), um Daten sequentiell fließen zu lassen. In diesem Fall fließen Daten, die durch Operationen vor der Veränderung der Operationen erhalten werden. Nachdem die Daten zur Fehlersuche entnommen sind, ist es deshalb unmöglich, die Operationen wiederaufzunehmen.
  • Indessen werden bei herkömmlichen Vorrichtungen, in denen eine Vielzahl von Sätzen von Registerdateien durch das Ausführen einer Kontextumschaltung umgeschaltet wird, alle Registerdateien gleichzeitig im Block umgeschaltet. Deshalb ist es unmöglich, eine Feinumschaltung von individuellen Arithmetik- und Logikeinheiten, Arithmetik- und Logikeinheitsgruppen oder dergleichen auszuführen.
  • 'Architectural Trade-Offs in Dynamically Reconfigurable Processors', Enzler, Swiss Federal Institute of Technology, Dissertation ETH Nr. 15423, Januar 2004, diskutiert die Konstruktion und Bewertung von dynamisch rekonfigurierbaren Prozessorarchitekturen in Hinblick auf die eingebettete Rechendomäne. Es wird ein rekonfigurierbares Array offenbart, worin Registersätze für eine Arithmetik- und Logikeinheit (ALU) vorgesehen sind, so dass jedem logischen Inhalt sein eigener, dedizierter Registersatz zugeordnet werden kann.
  • 'Serial Scan, Design for Test, JTAG ... An overview and introduction', Suhr, Wescon Technical Papers, Western Periodicals Co., North Hollywood, US, Bd. 33, 1. November 1989, Seiten 290-293, diskutiert die Methodologien, die bei der Konstruktion, beim Bau und beim Test elektronischer Systeme verwendet werden und die testbewusste Konstruktion, den Selbsttest und die Serienabtastung enthalten.
  • Ein rekonfigurierbarer Prozessor mit einer Arithmetik- und Logikeinheitsgruppe, die eine Vielzahl von Arithmetik- und Logikeinheiten enthält, und einem Sequenzer zum Steuern der Operation der Arithmetik- und Logikeinheitsgruppe wird durch die vorliegende Erfindung vorgesehen. Dieser rekonfigurierbare Prozessor hat auch Registergruppen, die zwischen Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten und einer vorhergehenden Stufe angeordnet sind, von welcher der Vielzahl von Arithmetik- und Logikeinheiten Daten eingegeben werden, wobei jede eine Vielzahl von Registern zum Halten der Daten enthält, die von der vorhergehenden Stufe der Vielzahl von Arithmetik- und Logikeinheiten eingegeben werden; und Selektoren zum Selektieren von Registern, die mit der Vielzahl von Arithmetik- und Logikeinheiten zu verbinden sind, von den Registergruppen gemäß Instruktionen von dem Sequenzer und zum Verbinden der selektierten Register mit den Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten; bei dem: ein Register, das in einer Registergruppe enthalten ist, anderen Registern zugeordnet ist, die in anderen Registergruppen innerhalb einer vorbestimmten größeren Gruppe enthalten sind und die gleichzeitig mit dem Register selektiert werden, das in der Registergruppe enthalten ist, und gemeinsam mit den selektierten anderen Registern, die in den anderen Registergruppen innerhalb der vorbestimmten größeren Gruppe enthalten sind, einen Satz bildet; und die Selektoren, die mit den Registergruppen innerhalb der vorbestimmten größeren Gruppe verbunden sind, die Register, die den Satz bilden, gemäß Instruktionen von dem Sequenzer selektieren; dadurch gekenn zeichnet, dass die Register, die in dem Satz enthalten sind, seriell verbindbar sind; und die Register, die in dem Satz enthalten sind, mit der vorhergehenden Stufe in einem Zustand verbunden sind, wenn die Register durch die Selektoren auch mit den Arithmetik- und Logikeinheiten verbunden sind, und in einem Zustand, wenn die Register durch die Selektoren nicht mit den Arithmetik- und Logikeinheiten verbunden sind, seriell miteinander verbunden sind.
  • Zusätzlich wird durch die vorliegende Erfindung eine Halbleitervorrichtung vorgesehen, die eine Arithmetik- und Logikeinheitsgruppe hat, die eine Vielzahl von Arithmetik- und Logikeinheiten enthält, und einen Sequenzer zum Steuern der Operation der Arithmetik- und Logikeinheitsgruppe, und in der der Operationszustand der Arithmetik- und Logikeinheitsgruppe durch den Sequenzer rekonfigurierbar ist. Diese Halbleitervorrichtung hat auch Registergruppen, die zwischen Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten und einer vorhergehenden Stufe angeordnet sind, von welcher der Vielzahl von Arithmetik- und Logikeinheiten Daten eingegeben werden, wobei jede eine Vielzahl von Registern zum Halten der Daten enthält, die von der vorhergehenden Stufe der Vielzahl von Arithmetik- und Logikeinheiten eingegeben werden; und Selektoren zum Selektieren von Registern, die mit der Vielzahl von Arithmetik- und Logikeinheiten zu verbinden sind, von den Registergruppen gemäß Instruktionen von dem Sequenzer und zum Verbinden der selektierten Register mit den Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten; bei der: ein Register, das in einer Registergruppe enthalten ist, anderen Registern zugeordnet ist, die in anderen Registergruppen innerhalb einer vorbestimmten größeren Gruppe enthalten sind und die gleichzeitig mit dem Register selektiert werden, das in der Registergruppe enthalten ist, und gemeinsam mit den selektierten anderen Registern, die in den anderen Registergruppen innerhalb der vorbestimmten größeren Gruppe enthalten sind, einen Satz bildet; und die Selektoren, die mit den Registergruppen innerhalb der vorbestimmten größeren Gruppe verbunden sind, die Register, die den Satz bilden, gemäß Instruktionen von dem Sequenzer selektieren; dadurch gekennzeichnet, dass die Register, die in dem Satz enthalten sind, seriell verbindbar sind; und die Register, die in dem Satz enthalten sind, mit der vorhergehenden Stufe in einem Zustand verbunden sind, wenn die Register durch die Selektoren auch mit den Arithmetik- und Logikeinheiten verbunden sind, und in einem Zustand, wenn die Register durch die Selektoren nicht mit den Arithmetik- und Logikeinheiten verbunden sind, seriell miteinander verbunden sind.
  • Die obigen und andere Merkmale und Vorteile der vorliegenden Erfindung gehen aus der folgenden Beschreibung in Verbindung mit den beiliegenden Zeichnungen hervor, die bevorzugte Ausführungsformen der vorliegenden Erfindung beispielhaft darstellen und in denen:
  • 1 eine schematische Ansicht der vorliegenden Erfindung ist, die auf Ausführungsformen angewendet wird;
  • 2 ein Blockdiagramm ist, das die Struktur eines gesamten rekonfigurierbaren Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 3 ein Beispiel für die Struktur eines Konfigurationsspeichers gemäß der Ausführungsform der vorliegenden Erfindung zeigt;
  • 4 ein Beispiel für die Struktur einer Fensterregistersektion gemäß der Ausführungsform zeigt;
  • 5 ein Beispiel für die Struktur eines Fensters gemäß der Ausführungsform zeigt;
  • 6 ein Zeitlagendiagramm ist, das ein Beispiel für das Umschalten der Fensterregistersektion gemäß der Ausführungsform zeigt;
  • 7 die Struktur von Arithmetik- und Logikeinheiten und Registern zeigt, die in einem herkömmlichen rekonfigurierbaren Prozessor enthalten sind;
  • 8 die Zeit zeigt, zu der das Umschalten einer Konfiguration in einem herkömmlichen rekonfigurierbaren Prozessor erfolgt.
  • Ein rekonfigurierbarer Prozessor und eine Halbleitervorrichtung, die die Erfindung verkörpern, können Operationen fein steuern, ohne beim Umschalten einer Anwendung auf Zeitteilungsbasis oder bei der Fehlersuche einen Einfluss auf andere Funktionen auszuüben.
  • Unter Bezugnahme auf die Zeichnungen wird nun eine Ausführungsform der vorliegenden Erfindung beschrieben. Zuerst wird ein Überblick über die vorliegende Erfindung gegeben, die auf die Ausführungsform angewendet wird, und dann werden die konkreten Inhalte der Ausführungsform beschrieben.
  • 1 ist eine schematische Ansicht der vorliegenden Erfindung, die auf die Ausführungsform angewendet wird. Ein rekonfigurierbarer Prozessor gemäß der Ausführungsform der vorliegenden Erfindung umfasst eine Arithmetik- und Logikeinheitsgruppe (ALU-Gruppe), die eine Vielzahl von ALUs enthält, die beispielsweise als Matrix angeordnet sind, und einen Sequenzer 2 zum Steuern der Operation der ALU-Gruppe.
  • Zum Beispiel sind zwei Eingangsports einer ALU 1, die in der ALU-Gruppe enthalten ist, über Selektoren 4 und 6 mit jeweiligen Registergruppen 3 und 5 verbunden.
  • Die ALU 1 akzeptiert Daten, die von einer vorhergehenden Stufe ausgegeben werden, über die Registergruppen 3 und 5 und die Selektoren 4 und 6 und führt vorbestimmte Operationen, wie beispielsweise arithmetische Operationen und logische Operationen, unter der Steuerung des Sequenzers 2 aus. Die vorhergehende Stufe, von der die Daten ausgegeben werden, ist zum Beispiel eine andere ALU, die durch den Sequenzer 2 mit der ALU 1 verbunden ist.
  • Der Sequenzer 2 hält eine Vielzahl von Einstellinformationselementen, in denen die Konfiguration der ALU-Gruppe, wie etwa die Operation jeder ALU, die in der ALU-Gruppe enthalten ist, und die Verbindung zwischen ALUs, die zum Ausführen jeder Anwendung erforderlich ist, beschrieben ist, und schaltet den Zustand der ALU-Gruppe durch das Umschalten der Einstellinformationen um und führt eine gewünschte Anwendung aus. Zusätzlich steuert der Sequenzer 2 die Selektoren 4 und 6 gemäß einem selektierten Zustand und selektiert Register, die in den Registergruppen 3 und 5 enthalten sind und mit der ALU 1 zu verbinden sind, durch die Selektoren 4 und 6.
  • Jede der Registergruppen 3 und 5 enthält eine Vielzahl von Registern, die unabhängig voneinander arbeiten können. Die Registergruppe 3 enthält ein Register 1 (3a), ein Register 2 (3b) und ein Register 3 (3c). Die Registergruppe 5 enthält ein Register 1 (5a), ein Register 2 (5b) und ein Register 3 (5c). Eines der Register, die in der Registergruppe 3 enthalten sind, wird durch den Selektor 4 selektiert und mit der ALU 1 verbunden. Ähnlich wird eines der Register, die in der Registergruppe 5 enthalten sind, durch den Selektor 6 selektiert und mit der ALU 1 verbunden. Die selektierten Register sind zwischen der vorhergehenden Stufe und den Eingangsports der ALU 1 verbunden, halten die Daten, die von der vorhergehenden Stufe ausgegeben werden (Daten, die der ALU 1 eingegeben werden), und geben sie an die ALU 1 aus. Diese Daten werden bis zur nächsten Operationszeitlage gehalten. Die Länge eines Registers entspricht der Länge von Daten, die der damit verbundenen ALU 1 eingegeben werden. Das heißt, falls die Länge der Daten, die der ALU 1 eingegeben werden, acht Bits beträgt, beläuft sich die Länge eines Registers dann auf acht Bits. Falls die Länge von Daten, die der ALU 1 eingegeben werden, sechzehn Bits beträgt, beläuft sich die Länge eines Registers dann auf sechzehn Bits. Falls die Länge von Daten, die der ALU 1 eingegeben werden, zweiunddreißig Bits beträgt, beläuft sich die Länge eines Registers dann auf zweiunddreißig Bits. Jede Registergruppe kann eine beliebige Anzahl von Registern enthalten.
  • Unter der Steuerung des Sequenzers 2 selektieren die Selektoren 4 und 6 jeweils ein Register von den Registergruppen 3 bzw. 5, mit denen sie verbunden sind, und verbinden es mit der ALU 1. Das heißt, dass der Selektor 4 mit der Registergruppe 3 verbunden ist und eines von dem Register 1 (3a), dem Register 2 (3b) und dem Register 3 (3c) mit der ALU 1 verbindet. Der Selektor 6 ist mit der Registergruppe 5 verbunden und verbindet eines von dem Register 1 (5a), dem Register 2 (5b) und dem Register 3 (5c) mit der ALU 1.
  • Nun wird die Operation des rekonfigurierbaren Prozessors beschrieben, der die obengenannte Struktur hat.
  • Register, die zu selektieren sind und mit den zwei Eingangsports der ALU 1 in verschiedenen Zuständen der ALU- Gruppe zu verbinden sind, sind in den Einstellinformationen registriert, die durch den Sequenzer 2 gehalten werden. Der Sequenzer 2 steuert nicht nur den Operationszustand der ALU-Gruppe, sondern auch das Umschalten von Registern gemäß einem selektierten Zustand. Nun wird das Umschalten von Registern beschrieben, das ausgeführt wird, wenn der Zustand der ALU-Gruppe umgeschaltet wird.
  • Die ALU-Gruppe führt vor dem Umschalten eine Anwendung aus. Unter der Steuerung des Sequenzers 2 selektieren zu dieser Zeit die Selektoren 4 und 6 irgendein Register von den Registergruppen 3 bzw. 5 und verbinden es mit der ALU 1. Zum Beispiel werden das Register 1 (3a), das in der Registergruppe 3 enthalten ist, und das Register 1 (5a), das in der Registergruppe 5 enthalten ist, selektiert, und ein Datenstrom wird gebildet, durch den die Daten, die von der Stufe unmittelbar vor der ALU 1 ausgegeben werden (Daten, die der ALU 1 eingegeben werden), der ALU 1 über das Register 1 (3a) und das Register 1 (5a) eingegeben werden.
  • Wenn der Sequenzer 2 bestimmt, den Zustand der ALU-Gruppe umzuschalten, werden Instruktionen zum Umschalten von Registern ausgegeben. Gemäß den durch den Sequenzer 2 ausgegebenen Instruktionen trennen die Selektoren 4 und 6 die gegenwärtig verbundenen Register und verbinden bezeichnete Register mit der ALU 1. Zum Beispiel werden das Register 2 (3b), das in der Registergruppe 3 enthalten ist, und das Register 2 (5b), das in der Registergruppe 5 enthalten ist, selektiert. Als Resultat werden die Daten, die von der Stufe unmittelbar vor der ALU 1 ausgegeben werden, der ALU 1 über das Register 2 (3b) und das Register 2 (5b) eingegeben, und ein Datenstrom durch die neuen Register wird gebildet. Dadurch wird es unnötig, erzeugte Daten nach Beendigung des vorhergehenden Datenstroms zu exportieren. Das heißt, dass der Datenstrom sofort beim Umschalten der Anwendung umgeschaltet werden kann. Deshalb wird die Leistung durch den Export von Daten in den Speicher nicht gemindert.
  • Wenn die Register umgeschaltet werden, verbleiben die letzten Daten, die vor dem Umschalten eingegeben wurden, in dem Register 1 (3a) und dem Register 1 (5a). Diese Daten können unter Verwendung von Verriegelungsmechanismen gehalten werden. Diese Daten können von außen entnommen werden, indem im Voraus ein spezieller Datenweg gebildet wird. Nachdem der Datenstrom umgeschaltet ist und ein vorbestimmter Prozess ausgeführt ist, kann die ALU-Gruppe als Resultat dessen in den Zustand vor dem Umschalten versetzt werden. Darüber hinaus können die Daten zum Beispiel zur Fehlersuche leicht entnommen werden. Außerdem sollten bei der Rückkehr von der Fehlersuche die ursprünglichen Register selektiert werden. Daher übt die Fehlersuche keinen Einfluss auf andere Funktionen aus.
  • Unter Bezugnahme auf die Zeichnungen wird nun die Ausführungsform der vorliegenden Erfindung eingehend beschrieben.
  • 2 ist ein Blockdiagramm, das die Struktur eines gesamten rekonfigurierbaren Prozessors gemäß der Ausführungsform der vorliegenden Erfindung zeigt.
  • Ein rekonfigurierbarer Prozessor umfasst eine ALU-Gruppe 10, die eine Vielzahl von ALUs enthält, und einen Sequenzer 20 zum Steuern der Operation jedes ALU-Moduls, das eine ALU hat und in der ALU-Gruppe 10 enthalten ist.
  • Die ALU-Gruppe 10 enthält einen Konfigurationsspeicher 11, eine Verdrahtung und Umschaltung 12, ALUs 13a, 13b, ... und 13c, Datenspeichervorrichtungen 13d, 13e usw., einen Zähler 13f und eine Fensterregistersektion 14.
  • Der Konfigurationsspeicher 11 speichert Einstellinformationen, wie etwa Inhalte, die durch jedes ALU-Modul auszuführen sind, das in der ALU-Gruppe 10 enthalten ist, Verdrahtungswege zwischen ALU-Modulen und Daten, die für Operationen erforderlich sind, zum Einstellen der Operation der ALU-Gruppe 10. Ein Element der Einstellinformationen entspricht dem "Zustand" einer Schaltungskonfiguration der ALU-Gruppe 10. Eine Vielzahl von Zuständen ist in dem Konfigurationsspeicher 11 eingestellt. Die ALU-Gruppe 10 arbeitet in einem Zustand, der durch den Sequenzer 20 bezeichnet wird. Jede ALU und die Verdrahtung und Umschaltung 12 arbeiten gemäß Inhalten, die in dem Konfigurationsspeicher 11 eingestellt sind. Die Verdrahtung und Umschaltung 12 enthält eine Verdrahtungssektion zum Herstellen von Verbindungen zwischen ALUs gemäß Inhalten, die in dem Konfigurationsspeicher 11 eingestellt sind, und eine Umschaltsektion zum Umschalten von Verbindungen gemäß Inhalten, die in dem Konfigurationsspeicher 11 eingestellt sind. Jede der ALUs 13a, 13b, ... und 13c führt eine vorbestimmte Operation an Eingangssignalen aus, die über die Verdrahtung und Umschaltung 12 und die Fensterregistersektion 14 eingegeben werden, und gibt ein Resultat über die Verdrahtung und Umschaltung 12 aus. Jedes ALU-Modul enthält die Datenspeichervorrichtungen 13d, 13e usw., die Speicher oder Register sind, zum Speichern von Daten zur Datenverarbeitung und den Zähler 13f. Zusätzlich enthält jedes ALU-Modul eine Schnittstelle zum Austauschen von Daten und Adressen mit einer externen Einheit, einen Adressgenerator und dergleichen. Die Fensterregistersektion 14 enthält eine Registergruppe, die aus einer Vielzahl von Registern zum Halten von Daten gebildet ist, und einen Verbinder (Selektor) zum Selektieren eines Registers von der Gruppe und Verbinden desselben mit einer ALU. Die Fensterregistersektion 14 ist gegenüber den Eingangsports der ALUs angeordnet, die in der ALU-Gruppe 10 enthalten sind. Die Fensterregistersektion 14 schaltet Register für alle ALUs, für eine ALU oder für eine Gruppe von ALUs gemäß den im Konfigurationsspeicher 11 eingestellten Inhalten um.
  • In 2 ist die Fensterregistersektion 14 zwischen der Verdrahtung und Umschaltung 12 und den ALUs 13a, 13b, ... und 13c angeordnet. Die Fensterregistersektion 14 kann jedoch in der Verdrahtung und Umschaltung 12 oder den ALUs 13a, 13b, ... und 13c angeordnet sein. Zusätzlich kann die Fensterregistersektion 14 geteilt sein, um sie in der Verdrahtung und Umschaltung 12 und den ALUs 13a, 13b, ... und 13c anzuordnen. In 2 ist der Konfigurationsspeicher 11 in der ALU-Gruppe 10 angeordnet. Der Konfigurationsspeicher 11 kann jedoch im Sequenzer 20 oder außerhalb der ALU-Gruppe 10 und des Sequenzers 20 angeordnet sein. Zusätzlich kann der Konfigurationsspeicher 11 geteilt sein, um ihn in der ALU-Gruppe 10 und dem Sequenzer 20 anzuordnen.
  • Der Sequenzer 20 enthält eine Zustandssteuersektion 21, eine Zustandstabelle 22, ein Register der Adresse des gegenwärtigen Zustandes 23 und eine Fenstereinstellsteuersektion 24.
  • Die Zustandssteuersektion 21 stellt einen Zustand, in den die ALU-Gruppe 10 als Nächstes übergeht, als Reaktion auf ein Umschaltbedingungssignal ein, das von der ALU-Gruppe 10 eingegeben wird. Dieses Umschaltbedingungssignal enthält eine Mitteilung über das Auftreten einer Umschaltbedingung und einen Umschaltbedingungscode. Adressen, die in der Zustandstabelle 22 verwendet werden, sind dieselben wie jene, die im Konfigurationsspeicher 11 verwendet werden. Jeder Eintrag in der Zustandstabelle 22 speichert einen Operationscode, der das Verhalten zu der Zeit eines Übergangs zu dem nächsten Eintrag angibt, und die Adresse eines Eintrags, die selektiert werden kann. Das Register der Adresse des gegenwärtigen Zustandes 23 speichert eine Adresse (in der Zustandstabelle 22 und dem Konfigurationsspeicher 11), die den gegenwärtigen Zustand angibt. Die Fenstereinstellsteuersektion 24 steuert ein Register, das durch die Fensterregistersektion 14 gemäß dem Zustand selektiert wird, der durch die Zustandssteuersektion 21 eingestellt wurde.
  • In dem obigen rekonfigurierbaren Prozessor arbeitet die ALU-Gruppe 10 in einem Zustand, der auf Einstellinformationen an einer spezifizierten Adresse in dem Konfigurationsspeicher 11 basiert, die durch den Sequenzer 20 bezeichnet ist. Wenn die ALU-Gruppe 10 bestimmt, dass eine Umschaltbedingung eingetreten ist, sendet die ALU-Gruppe 10 einen Umschaltbedingungscode und ein Umschaltbedingungssignal an den Sequenzer 20. In dem Sequenzer 20 wird die Zustandssteuersektion 21 durch das Umschaltbedingungssignal gestartet, wird ein Zustand, in den die ALU-Gruppe 10 als Nächstes übergeht, gemäß dem Umschaltbedingungscode und einem Eintrag in der Zustandstabelle 22 bestimmt, wird eine Adresse (Zieladresse) berechnet, an der Einstellinformationen registriert sind, die den Zustand angeben, und wird die berechnete Zieladresse in dem Register der Adresse des gegenwärtigen Zustandes 23, der Zustandstabelle 22 und dem Konfigurationsspeicher 11 eingestellt. Als Resultat wird die spezifizierte Adresse im Konfigurationsspeicher 11 in die Zieladresse verändert und vollzieht die ALU-Gruppe 10 einen Übergang in den Zustand. Zu dieser Zeit gibt die Fenstereinstellsteuersektion 24 Instruktionen zum Umschalten von Registern aus und bezeichnet Register, die zu selektieren sind, gemäß dem Zustand, der durch die Zustandssteuersektion 21 eingestellt wurde. Diese Instruktionen werden ausgegeben, um alle Register, die in der Fensterregistersektion 14 enthalten sind, die Register, die jeder Gruppe von ALUs entsprechen und im Voraus eingestellt wurden, oder ein Register entsprechend jeder ALU umzuschalten, je nach Bedarf.
  • Nun wird der Konfigurationsspeicher 11 beschrieben. Ein Datenstrom in der ALU-Gruppe 10 und Register, die zum Ausführen einer Anwendung zu verwenden sind, sind im Konfigurationsspeicher 11 beschrieben. 3 zeigt ein Beispiel für die Struktur des Konfigurationsspeichers gemäß der Ausführungsform der vorliegenden Erfindung.
  • Der Konfigurationsspeicher 11 speichert Konfigurationsdaten, die die Operation der ALU-Gruppe 10 in jedem Zustand bestimmen. Bei diesem Beispiel sind Konfigurationsdaten 111, 112, 113, 114 usw. gemäß Zuständen gespeichert. Jeder Zustand (Konfiguration, Anordnung) wird durch eine Adresse verwaltet.
  • Ein Operationsmodus 111a, Informationen bezüglich der rekonfigurierbaren Schaltungskonstruktion 111b, ein Zustand 1 (111c), ein Zustand 2 (111d), ein Zustand 3 (111e) und ein Zustand 4 (111f) sind für jeden Zustand gespeichert. Der Operationsmodus 111a sind Informationen zum Identifizieren dieses Zustandes. Die Informationen bezüglich der rekonfigurierbaren Schaltungskonstruktion 111b sind Konstruktionsinformationen, die die Operation von jeder ALU in einer rekonfigurierbaren Schaltung und Verbindungen zwischen ALUs in diesem Operationsmodus angeben. Wenn die Konstruktions informationen erzeugt werden, wird unter Verwendung von spezifischen Registern ein spezifischer Datenstrom automatisch und eindeutig bestimmt. Kandidaten für den nächsten Zustand dieser Schaltungskonfiguration sind als Zustand 1 (111c), Zustand 2 (111d), Zustand 3 (111e) und Zustand 4 (111f) beschrieben. Tatsächlich sind Adressen im Konfigurationsspeicher 11 direkt beschrieben oder sind Daten beschrieben, aus denen diese Adressen durch das Ausführen von Operationen direkt erzeugt werden können. Jedem Kandidatenzustand ist eine Umschaltbedingung zugeordnet. Wenn eine Umschaltbedingung entsteht, wird der Prozess zum Vollziehen des Übergangs in den entsprechenden Zustand ausgeführt. In diesem Fall werden die Operation von jeder ALU, Verbindungen zwischen ALUs sowie Register, die mit jeder ALU verbunden sind, gemäß Informationen eingestellt, die im Konfigurationsspeicher 11 gespeichert sind. Die Anzahl von Zuständen, die als Kandidaten registriert sind, kann beliebig selektiert werden.
  • Nun wird die Struktur der Fensterregistersektion 14 beschrieben. 4 zeigt ein Beispiel für die Struktur der Fensterregistersektion gemäß der Ausführungsform. Dieselben Komponenten von 4 wie jene, die in 2 gezeigt sind, sind mit denselben Bezugszeichen versehen, und Beschreibungen von ihnen werden weggelassen.
  • In der Fensterregistersektion 14 ist eine Vielzahl von Registergruppen und Selektoren zum Selektieren eines Registers von jeder Registergruppe und Verbinden dessen mit einer ALU für die ALUs 13a und 13b angeordnet. Bei diesem Beispiel hat jede der ALUs 13a und 13b zwei Eingangsports. Eine Registergruppe und ein Selektor sind mit jedem dieser Ports verbunden. Das heißt, dass eine Registergruppe, die das Fenster 1 (141a), das Fenster 2 (142a) und das Fenster 3 (143a) enthält, und ein Selektor 144a mit einem ersten Eingangsport der ALU 13a verbunden sind. Eine Registergruppe, die das Fenster 1 (141b), das Fenster 2 (142b) und das Fenster 3 (143b) enthält, und ein Selektor 144b sind mit einem zweiten Eingangsport der ALU 13a verbunden. Eine Registergruppe, die das Fenster 1 (141c), das Fenster 2 (142c) und das Fenster 3 (143c) enthält, und ein Selektor 144c sind mit einem ersten Eingangsport der ALU 13b verbunden. Eine Registergruppe, die das Fenster 1 (141d), das Fenster 2 (142d) und das Fenster 3 (143d) enthält, und ein Selektor 144d sind mit einem zweiten Eingangsport der ALU 13b verbunden.
  • Register in diesen Registergruppen, die zu derselben Zeit selektiert werden, bilden einen Satz. Falls zum Beispiel das Fenster 1 (141a), das Fenster 1 (141b), das Fenster 1 (141c) und das Fenster 1 (141d) zum Ausführen einer Anwendung selektiert werden, bilden diese Fenster dann einen Satz. Ähnlich bilden das Fenster 2 (142a), das Fenster 2 (142b), das Fenster 2 (142c) und das Fenster 2 (142d) einen Satz und bilden das Fenster 3 (143a), das Fenster 3 (143b), das Fenster 3 (143c) und das Fenster 3 (143d) einen Satz. Fenster in diesen Registergruppen, die einen Satz bilden, werden beliebig selektiert. Fenster, die einen Satz bilden, sind seriell verbunden. Im Folgenden wird ein Weg, der durch das serielle Verbinden von Registern gebildet wird, die einen Satz bilden, als Blindweg bezeichnet. Durch das Bilden eines Blindweges im Voraus durch das serielle Verbinden von Registern, die in demselben Satz enthalten sind, können nicht nur vorbestimmte Daten gemäß einem Datenstrom gesendet werden, der in dem Konfigurationsspeicher 11 beschrieben ist, sondern können Daten, die in einem nichtselektierten Register gespeichert sind, als Datenstrom über den Blindweg gesendet werden.
  • Die detaillierte Struktur jedes Fensters, das in der Fensterregistersektion 14 enthalten ist, wird nun beschrieben. 5 zeigt ein Beispiel für die Struktur eines Fensters gemäß der Ausführungsform. 5 zeigt eines der Fenster, die in der Fensterregistersektion enthalten sind.
  • Das Fenster 1 (141a) enthält einen Schalter 1411a zum Umschalten der Eingabe und ein Register 1412a. Insgesamt drei Signalleitungen, das heißt eine Signalleitung von einem Register 1512 in dem Fenster 151, das mit einer ALU in der Nähe verbunden ist, eine Signalleitung von der Verdrahtung und Umschaltung 12 und eine Signalleitung, die mit der Außenseite des Registers 1412a verbunden ist, sind mit der Eingangsseite des Schalters 1411a verbunden. Das Register 1512 und das Register 1412a, die miteinander verbunden sind, sind in demselben Satz enthalten.
  • Der Schalter 1411a selektiert einen Eingang, der gemäß dem Zustand der Verbindung zwischen dem Fenster 1 (141a) und einer ALU 13 zu verbinden ist. Wenn zum Beispiel das Fenster 1 (141a) durch einen Selektor mit der ALU 13 verbunden wird und in einem aktiven Zustand ist, ist die Eingangsseite des Schalters 1411a mit der Verdrahtung und Umschaltung 12 verbunden. Dadurch können Daten, die über die Verdrahtung und Umschaltung 12 eingegeben werden, an die ALU 13 ausgegeben werden und in dem Register 1412a gesichert werden. Wenn das Fenster 1 (141a) von der ALU 13 getrennt wird und in einen aktiven Zustand übergeht, wird die Eingangsseite des Schalters 1411a mit der Ausgangsseite des Registers 1412a verbunden. Dadurch werden Daten, die zuletzt eingegeben wurden, als das Fenster 1 (141a) in einem aktiven Zustand war, in dem Fenster 1 (141a) gehalten. Wenn das Fenster 1 (141a) in einem inaktiven Zustand ist, kann die Eingangsseite des Schalters 1411a mit der Ausgangsseite des Registers 1512 verbunden sein. Das Register 1512 und das Register 1412a sind in demselben Satz enthalten und sind seriell verbunden. Die Eingangsseite des Schalters 1411a wird mit der Ausgangsseite des Registers 1512 verbunden, wenn eine spezifische Bedingung eintritt, wie wenn Instruktionen zur Fehlersuche durch einen Sequenzer oder einen Fehlersuchblock erteilt werden, der die Fehlersuche steuert. Dadurch können die Daten, die in dem Fenster 1 (141a) in einem inaktiven Zustand gehalten werden, über einen Blindweg nach außen ausgegeben werden, der durch das serielle Verbinden des Registers 1512 und des Registers 1412a gebildet wurde.
  • Die Struktur des Fensters 2 und des Fensters 3 ist dieselbe wie jene des Fensters 1 (141a).
  • Nun wird die Operation der Fensterregistersektion 14 beschrieben, die die obige Struktur hat.
  • Zum Beispiel werden Konfigurationsdaten im Voraus im Konfigurationsspeicher 11 eingestellt, so dass das Register Fenster 1 zum Ausführen einer Anwendung 1 verwendet wird und das Register Fenster 2 zum Ausführen einer Anwendung 2 verwendet wird. Immer wenn eine vorbestimmte Bedingung eintritt, erfolgt ein Umschalten, und die Anwendungen 1 und 2 werden alternierend ausgeführt.
  • Zuerst wird die Anwendung 1 ausgeführt und selektieren die Selektoren 144a, 144b, 144c und 144d in der Fensterregistersektion 14 die Register Fenster 1 (141a), Fenster 1 (141b), Fenster 1 (141c) bzw. Fenster 1 (141d). Wenn die Anwendung 1 ausgeführt wird, wird das Fenster 1 auf diese Weise in einen Datenstrom inkorporiert und wird ein Prozess ausgeführt.
  • Falls eine Umschaltbedingung entsteht, während die Anwendung 1 ausgeführt wird, schaltet der Sequenzer 20 eine Adressbezeichnung im Konfigurationsspeicher 11 auf die Anwendung 2 um und ändert die Konfiguration einer ALU-Gruppe, um die Anwendung 2 auszuführen. Zu dieser Zeit werden den Selektoren 144a, 144b, 144c und 144d Instruktionen über den Konfigurationsspeicher 11 oder direkt von dem Sequenzer 20 erteilt, um die Register Fenster 1 (141a), Fenster 1 (141b), Fenster 1 (141c) bzw. Fenster 1 (141d) zu trennen und die Register Fenster 2 (142a), Fenster 2 (142b), Fenster 2 (142c) bzw. Fenster 2 (142d) mit den ALUs 13a und 13b zu verbinden. Jedes der Register Fenster 1 (141a), Fenster 1 (141b), Fenster 1 (141c) und Fenster 1 (141d), die getrennt werden, geht in einen inaktiven Zustand über, vollzieht den Übergang in den Verriegelungsmodus, bei dem es seine Ausgabe aufnimmt, und hält zuletzt eingegebene Daten, während die Anwendung 1 ausgeführt wurde.
  • Als Nächstes entsteht eine Umschaltbedingung, während die Anwendung 2 ausgeführt wird, und es erfolgt ein Umschalten von der Anwendung 2 auf die Anwendung 1. Zu dieser Zeit werden die Register Fenster 2 (142a), Fenster 2 (142b), Fenster 2 (142c) und Fenster 2 (142d) getrennt und werden die Register Fenster 1 (141a), Fenster 1 (141b), Fenster 1 (141c) und Fenster 1 (141d) mit den ALUs 13a und 13b verbunden. Dies ist die Umkehrung der Operation, die zum Umschalten der Anwendung 1 auf die Anwendung 2 ausgeführt wurde. Jedes der Register Fenster 1 (141a), Fenster 1 (141b), Fenster 1 (141c) und Fenster 1 (141d), das in einen aktiven Zustand übergeht, hält wieder die zuletzt eingegebenen Daten, als die Anwendung 1 ausgeführt wurde, und kann sie bei Bedarf verwenden. Jedes der Register Fenster 2 (142a), Fenster 2 (142b), Fenster 2 (142c) und Fenster 2 (142d) tritt in den Verriegelungsmodus ein. Dies ist genauso wie bei der obigen Umschaltung von der Anwendung 1 auf die Anwendung 2. Wenn deshalb die Anwendung 1 wieder auf die Anwendung 2 umgeschaltet wird, können Daten verwendet werden, die in den Registern Fenster 2 (142a), Fenster 2 (142b), Fenster 2 (142c) und Fenster 2 (142d) gehalten werden.
  • Nun wird die obige Umschaltoperation unter Verwendung eines Zeitlagendiagramms beschrieben. 6 ist ein Zeitlagendiagramm, das ein Beispiel für die Umschaltung der Fensterregistersektion gemäß der Ausführungsform zeigt. Bei diesem Beispiel wird die Umschaltung zwischen der Anwendung 1 (die Register Fenster 1 (141a), Fenster 1 (141b), Fenster 1 (141c) und Fenster 1 (141d) werden verwendet) und der Anwendung 2 (die Register Fenster 2 (142a), Fenster 2 (142b), Fenster 2 (142c) und Fenster 2 (142d) werden verwendet) zyklisch ausgeführt.
  • Der Sequenzer kann Instruktionen zum Umschalten von Registern, wie oben beschrieben, zu derselben Zeit ausgeben, zu der der Sequenzer eine Anwendung (den Zustand der ALU-Gruppe) umschaltet. In diesem Fall ist es nicht erforderlich, den Prozess zum temporären Sichern von Daten auszuführen. Wenn in 6 die Verarbeitung von einem Sequenzblock begonnen hat, werden Register umgeschaltet, wird das Fenster 1 (W1) selektiert und wird sofort die Anwendung 1 ausgeführt. Ähnlich wird zu Beginn des nächsten Sequenzblocks das Fenster 2 (W2) selektiert und wird sofort die Anwendung 2 ausgeführt. Wie oben angegeben, erscheint abwechselnd zu jeder Umschaltzeitlage eine Vielzahl von Datenströmen und können die Anwendungen mit hoher Geschwindigkeit ausgeführt werden.
  • Bei den obigen Beispielen erfolgt ein Umschalten zwischen den Registern Fenster 1 und den Registern Fenster 2. Zum Beispiel können jedoch auch die Register Fenster 3 verwendet werden. Wie bei den obigen Beispielen kann eine Anwendung durch das Umschalten von Registern leicht umgeschaltet werden.
  • Bei den obigen Beispielen werden alle Register umgeschaltet, die einen Satz bilden. Jedoch können mehrere Registergruppen für jede ALU erzeugt werden, in Abhängigkeit von den Anwendungen, und die Registerumschaltung kann durch die Registergruppe gesteuert werden. Registergruppen können für eine ALU erzeugt werden.
  • Um zum Beispiel eine Fehlersuche auszuführen, können Daten unter Verwendung eines Blindweges übertragen werden, der durch das serielle Verbinden von Registern gebildet wird, die in demselben Satz enthalten sind. Dieser Blindweg unterscheidet sich von einem Datenstrom, der auf dem Konfigurationsspeicher 11 basiert.
  • Bei der vorliegenden Erfindung ist die Vielzahl von Registern zum Halten von Daten vorgesehen, die den ALUs eingegeben werden, und werden Register gemäß Instruktionen von dem Sequenzer selektiert. Als Resultat können Register, die verwendet werden, gemäß dem Operationszustand des Sequenzers dynamisch umgeschaltet werden. Das heißt, dass das Umschalten von Registern, die für einen Datenstrom in einem Operationszustand verwendet werden, auf Register, die zu verwenden sind, nachdem der Operationszustand umgeschaltet ist, zum Beispiel gemäß Instruktionen von dem Sequenzer zum Umschalten des Operationszustandes dynamisch erfolgt. Als Resultat können Daten in dem vorhergehenden Datenstrom gehalten werden und kann ein Datenstrom sofort verändert werden. Darüber hinaus können die Registergruppen und die Selektoren gemäß den ALUs betrieben werden, kann irgendein spezifischer Datenweg bei einem Datenstrom dynamisch verändert werden und können Daten auf dem Datenweg vor der Veränderung gehalten werden. Auf diese Weise kann die Operation fein gesteuert werden, ohne einen Einfluss auf andere Funktionen auszuüben.
  • Obiges soll lediglich die Prinzipien der vorliegenden Erfindung veranschaulichen. Da die Fachwelt darüber hinaus auf zahlreiche Abwandlungen und Veränderungen kommen wird, soll die Erfindung nicht auf die exakte Konstruktion und die gezeigten und beschriebenen Anwendungen begrenzt sein, und daher enthält sie alle geeigneten Abwandlungen, die in den Umfang der beigefügten Ansprüche fallen.

Claims (6)

  1. Rekonfigurierbarer Prozessor mit einer Arithmetik- und Logikeinheitsgruppe (10), die eine Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) enthält, und einem Sequenzer (20) zum Steuern der Operation der Arithmetik- und Logikeinheitsgruppe, welcher Prozessor ferner umfasst: Registergruppen (REG), die zwischen Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) und einer vorhergehenden Stufe angeordnet sind, von welcher der Vielzahl von Arithmetik- und Logikeinheiten Daten eingegeben werden, wobei jede Registergruppe eine Vielzahl von Registern (141a, 142a, 143a; ... 141d, 142d, 143d) zum Speichern der Daten enthält, die von der vorhergehenden Stufe der Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) eingegeben werden; und Selektoren (144a, 144b, 144c, 144d) zum Selektieren von Registern, die mit der Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) zu verbinden sind, von den Registergruppen (REG) gemäß Instruktionen von dem Sequenzer (20) und zum Verbinden der selektierten Register mit den Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten; bei dem: ein Register (Fenster 1, 141a), das in einer Registergruppe (REG) enthalten ist, anderen Registern (141b, 141c, 141d) zugeordnet ist, die in anderen Registergruppen innerhalb einer vorbestimmten größeren Gruppe enthalten sind und die gleichzeitig mit dem Register selektiert werden, das in der Registergruppe enthalten ist, und gemeinsam mit den selektierten anderen Registern, die in den anderen Register gruppen innerhalb der vorbestimmten größeren Gruppe enthalten sind, einen Satz bildet; und die Selektoren (144a, 144b, 144c, 144d), die mit den Registergruppen innerhalb der vorbestimmten größeren Gruppe verbunden sind, die Register, die den Satz bilden, gemäß Instruktionen von dem Sequenzer (20) selektieren; dadurch gekennzeichnet, dass die Register (141a, 141b, 141c, 141d), die in dem Satz enthalten sind, seriell verbindbar sind; und die Register, die in dem Satz enthalten sind, mit der vorhergehenden Stufe in einem Zustand verbunden sind, wenn die Register durch die Selektoren (144a, 144b, 144c, 144d) auch mit den Arithmetik- und Logikeinheiten (13a, 13b, 13c) verbunden sind, und in einem Zustand, wenn die Register durch die Selektoren nicht mit den Arithmetik- und Logikeinheiten verbunden sind, seriell miteinander verbunden sind.
  2. Rekonfigurierbarer Prozessor nach Anspruch 1, bei dem: Register (141a...d; 142a...d; 143a...d), die von der Registergruppe (REG) zu selektieren sind, im Voraus gemäß Einstellinformationen bestimmt werden, in denen ein Zustand der Arithmetik- und Logikeinheitsgruppe (10) zum Ausführen irgendeiner Anwendung beschrieben ist; und die Selektoren (144a, 144b, 144c, 144d) die Register gemäß dem Umschalten eines Zustandes der Arithmetik- und Logikeinheitsgruppe (10) selektieren, der durch den Sequenzer (20) eingestellt wird.
  3. Rekonfigurierbarer Prozessor nach Anspruch 1 oder 2, bei dem: die vorbestimmte größere Gruppe alle Registergruppen (REG) enthält, so dass der Satz selektierte Register von allen Registergruppen enthält; und alle Selektoren (144a, 144b, 144c, 144d) die Register, die den Satz bilden, gemäß Instruktionen von dem Sequenzer (20) selektieren.
  4. Rekonfigurierbarer Prozessor nach irgendeinem vorhergehenden Anspruch, bei dem jedes Register (141a...d; 142a...d; 143a...d), das in den Registergruppen (REG) enthalten ist, seine eigene Ausgabe als seine Eingabe in einem Zustand selektiert, wenn das Register durch einen Selektor (144a, 144b, 144c, 144d) nicht mit einer Arithmetik- und Logikeinheit (13a, 13b, 13c) verbunden ist.
  5. Rekonfigurierbarer Prozessor nach irgendeinem vorhergehenden Anspruch, bei dem die Länge jedes Registers (141a...d; 142a...d; 143a...d), das in den Registergruppen (REG) enthalten ist, der Länge von Daten entspricht, die jeder von der Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) eingegeben werden, die mit den Registergruppen verbunden sind.
  6. Halbleitervorrichtung mit einer Arithmetik- und Logikeinheitsgruppe (10), die eine Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) enthält, und einem Sequenzer (20) zum Steuern der Operation der Arithmetik- und Logikeinheitsgruppe, wobei der Operationszustand der Arith metik- und Logikeinheitsgruppe durch den Sequenzer rekonfigurierbar ist, welche Vorrichtung ferner umfasst: Registergruppen (REG), die zwischen Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) und einer vorhergehenden Stufe angeordnet sind, von welcher der Vielzahl von Arithmetik- und Logikeinheiten Daten eingegeben werden, wobei jede Registergruppe (REG) eine Vielzahl von Registern (141a, 142a, 143a) zum Speichern der Daten enthält, die von der vorhergehenden Stufe der Vielzahl von Arithmetik- und Logikeinheiten eingegeben werden; und Selektoren (144a, 144b, 144c, 144d) zum Selektieren von Registern, die mit der Vielzahl von Arithmetik- und Logikeinheiten (13a, 13b, 13c) zu verbinden sind, von den Registergruppen (REG) gemäß Instruktionen von dem Sequenzer (20) und zum Verbinden der selektierten Register mit den Eingangsports der Vielzahl von Arithmetik- und Logikeinheiten; bei der: ein Register (Fenster 1, 141a), das in einer Registergruppe (REG) enthalten ist, anderen Registern (141b, 141c, 141d) zugeordnet ist, die in anderen Registergruppen innerhalb einer vorbestimmten größeren Gruppe enthalten sind und die gleichzeitig mit dem Register selektiert werden, das in der Registergruppe enthalten ist, und gemeinsam mit den selektierten anderen Registern, die in den anderen Registergruppen innerhalb der vorbestimmten größeren Gruppe enthalten sind, einen Satz bildet; und die Selektoren (144a, 144b, 144c, 144d), die mit den Registergruppen innerhalb der vorbestimmten größeren Gruppe verbunden sind, die Register, die den Satz bilden, gemäß Instruktionen von dem Sequenzer (20) selektieren; dadurch gekennzeichnet, dass die Register (141a, 141b, 141c, 141d), die in dem Satz enthalten sind, seriell verbindbar sind; und die Register, die in dem Satz enthalten sind, mit der vorhergehenden Stufe in einem Zustand verbunden sind, wenn die Register durch die Selektoren (144a, 144b, 144c, 144d) auch mit den Arithmetik- und Logikeinheiten (13a, 13b, 13c) verbunden sind, und in einem Zustand, wenn die Register durch die Selektoren nicht mit den Arithmetik- und Logikeinheiten verbunden sind, seriell miteinander verbunden sind.
DE602005001900T 2004-06-28 2005-01-13 Rekonfigurierbarer Prozessor und Halbleiterbaustein Expired - Fee Related DE602005001900T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004189503 2004-06-28
JP2004189503A JP2006011924A (ja) 2004-06-28 2004-06-28 再構成可能演算装置および半導体装置

Publications (2)

Publication Number Publication Date
DE602005001900D1 DE602005001900D1 (de) 2007-09-20
DE602005001900T2 true DE602005001900T2 (de) 2007-12-06

Family

ID=34993254

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005001900T Expired - Fee Related DE602005001900T2 (de) 2004-06-28 2005-01-13 Rekonfigurierbarer Prozessor und Halbleiterbaustein

Country Status (5)

Country Link
US (1) US20050289328A1 (de)
EP (1) EP1612693B1 (de)
JP (1) JP2006011924A (de)
CN (1) CN100464323C (de)
DE (1) DE602005001900T2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100440192C (zh) * 2006-12-28 2008-12-03 北京时代民芯科技有限公司 粗粒度可重配置计算结构中算术单元结构
CN101320321B (zh) * 2008-06-27 2010-06-02 北京大学深圳研究生院 一种阵列算术逻辑单元结构
WO2010057375A1 (zh) * 2008-11-19 2010-05-27 北京大学深圳研究生院 一种可配置处理器体系结构和控制方法
JP5711889B2 (ja) * 2010-01-27 2015-05-07 スパンション エルエルシー リコンフィギュラブル回路および半導体集積回路
JP5821332B2 (ja) 2011-06-30 2015-11-24 株式会社ソシオネクスト リコンフィグ可能な集積回路装置
US9203397B1 (en) * 2011-12-16 2015-12-01 Altera Corporation Delaying start of user design execution
KR102235803B1 (ko) * 2017-03-31 2021-04-06 삼성전자주식회사 반도체 장치
CN111158756B (zh) * 2019-12-31 2021-06-29 百度在线网络技术(北京)有限公司 用于处理信息的方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811413A (en) * 1987-10-22 1989-03-07 International Business Machines Corp. System of reconfigurable pipelines of generalized neighborhood function morphic image processors
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
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
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6092174A (en) * 1998-06-01 2000-07-18 Context, Inc. Dynamically reconfigurable distributed integrated circuit processor and method
WO2001098922A1 (en) * 2000-06-21 2001-12-27 Derivation Systems, Inc. Dynamically configurable processor core and method for making the same
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
TW200504592A (en) * 2003-07-24 2005-02-01 Ind Tech Res Inst Reconfigurable apparatus with high hardware efficiency
US7072320B2 (en) * 2003-11-12 2006-07-04 Morpho Technologies Apparatus for spreading, scrambling and correlation in a reconfigurable digital signal processor
US7268786B2 (en) * 2004-05-14 2007-09-11 Nvidia Corporation Reconfigurable pipeline for low power programmable processor

Also Published As

Publication number Publication date
CN1716229A (zh) 2006-01-04
EP1612693B1 (de) 2007-08-08
US20050289328A1 (en) 2005-12-29
JP2006011924A (ja) 2006-01-12
CN100464323C (zh) 2009-02-25
DE602005001900D1 (de) 2007-09-20
EP1612693A1 (de) 2006-01-04

Similar Documents

Publication Publication Date Title
DE602005001900T2 (de) Rekonfigurierbarer Prozessor und Halbleiterbaustein
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE68929317T2 (de) Modulare Kreuzschienen zwischen Verbindungen in einem digitalen Rechner
DE19742577C1 (de) Schaltungsanordnung zur In-Circuit-Emulation eines Mikrocontrollers
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69713784T2 (de) Rekonfigurierbares rechnersystem
DE2714805C2 (de)
DE3851554T2 (de) Steuerungsanordnung für gemeinschaftlichen Speicher.
DE2542751C2 (de) Datenverarbeitungsanlage
DE102005055000A1 (de) Modulares Avioniksystem eines Flugzeuges
DE68923086T2 (de) Verfahren zum Testen von hierarchisch organisierten integrierten Schaltungen und integrierte Schaltungen, geeignet für einen solchen Test.
DE69628034T2 (de) Hochimpedanzmodus für jtag
CH620779A5 (de)
DE3685711T2 (de) Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen.
DE69107476T2 (de) Vorrichtung für eine in-circuit-prüfung mit einem minimalspeicher.
EP0010185B1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE60226141T2 (de) Fifo-speicher system und verfahren dafür
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
DE2723467A1 (de) Speichersteuerungsanordnung
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE68927202T2 (de) Paralleler Prozessor
DE3788617T2 (de) Vektordatenverarbeitungssystem mit einer E/A-Steuerung für jeden Vektordatenprozessor und einer anderen E/A-Steuerung für mindestens einen anderen Vektordatenprozessor.
DE69327504T2 (de) Datenprozessor mit Operationseinheiten, die gemeinsam Gruppen von Registerspeichern benutzen
DE60031081T2 (de) Regionalzeitmultiplexiertes emulationssystem
DE69228293T2 (de) Paralleles Datenverarbeitungssteuerungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: FUJITSU MICROELECTRONICS LTD., TOKYO, JP

8339 Ceased/non-payment of the annual fee