DE102005005073B4 - Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen - Google Patents

Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen Download PDF

Info

Publication number
DE102005005073B4
DE102005005073B4 DE102005005073A DE102005005073A DE102005005073B4 DE 102005005073 B4 DE102005005073 B4 DE 102005005073B4 DE 102005005073 A DE102005005073 A DE 102005005073A DE 102005005073 A DE102005005073 A DE 102005005073A DE 102005005073 B4 DE102005005073 B4 DE 102005005073B4
Authority
DE
Germany
Prior art keywords
stage
memory
implicants
parallel
computer device
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
DE102005005073A
Other languages
English (en)
Other versions
DE102005005073A1 (de
Inventor
Christian Prof. Siemers
Christian Wiegand
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Priority to DE102005005073A priority Critical patent/DE102005005073B4/de
Publication of DE102005005073A1 publication Critical patent/DE102005005073A1/de
Application granted granted Critical
Publication of DE102005005073B4 publication Critical patent/DE102005005073B4/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)

Abstract

Rechnereinrichtung mit rekonfigurierbarer Architektur aus wenigstens einem einzeln konfigurierbaren und/oder rekonfigurierbaren Schaltwerk,
a) dessen zugrunde liegendes Schaltnetz eine Boole'sche Schaltfunktion realisiert, die durch die Summe ihrer Implikanten definiert ist,
b) das eine erste Stufe aus einem oder mehreren parallel geschalteten Speicher-Bausteinen enthält,
b1) wobei die Adress-Eingänge eines jeden Speicher-Bausteins durch eine Teilmenge der aktuellen Eingabevariablen eines der Implikanten belegt sind und die dadurch adressierte Speicherzelle des Speicher-Bausteins eine ein- oder mehrstellige Kennung, die der aktuellen Belegung der Eingabevariablen entspricht, als Ausgabedatum liefert,
c) das die parallel geschalteten Ausgänge der ersten Stufe über einen Crossbar-Switch mit den Adress-Eingängen einer nachgeordneten zweiten Stufe mit einem oder mehreren parallel geschalteten Speicher-Bausteinen beliebig verbindet,
c1) wobei jeweils die Adress-Eingänge eines der parallel geschalteten Speicher-Bausteine mit einer Kombination der Kennungen der Teilimplikanten belegt sind und
c2) die dadurch adressierte Speicherzelle eines Speicher-Bausteins den Wert des entsprechenden Implikanten als Ausgabedatum...

Description

  • Die vorliegende Erfindung bezieht sich auf eine Rechnereinrichtung mit konfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen mit wenigstens einem Schaltnetzwerk.
  • Rechnermodelle sind vom Stand der Technik bekannt: Allgemein wird die so genannte ,Von-Neumann-Architektur', wie sie aus der prinzipiellen Darstellung der 1 hervorgeht, als Universalrechnereinrichtung angesehen. Darunter ist zu verstehen, dass mithilfe eines Rechners, auf dieser Architektur mit den Komponenten Central Processing Unit [CPU, darin enthalten Control Unit (CU) und Arithmetical-Logical Unit (ALU)], Memory (Speicher), Input/Output (Ein-/Ausgabe) und Bussystem basierend, alle algorithmierbaren Probleme prinzipiell berechnet werden können. Die Einstellung eines solchen Rechners auf das jeweilige Problem erfolgt durch ein Programm, d. h. eine textuelle Beschreibung des Algorithmus z. B. in den Programmiersprachen C, C++ oder Java. Dieses Programm wird durch einen Übersetzer (Compiler), der selbst ein Programm darstellt, in ein Maschinen-lesbares Programm übersetzt.
  • Die Programmbearbeitung erfolgt in Rechnern, die auf der Von-Neumann-Architektur der weiter unten bechriebenen 1 und ähnlichen Architekturen, z. B. einer Harvard- oder modifizierten Harvard-Architektur, basieren, prinzipiell auf sequenzielle Weise. Dies ist so zu verstehen, dass der Algorithmus, bestehend aus einer Menge von Maschinen-Instruktionen, dadurch bearbeitet wird, dass die erste Instruktion bekannt ist. Die einem Befehl nachfolgende Instruktion ist entweder die im Speicher an der nächsten Adresse stehende (normaler Programmfluss), oder die letzte ausgeführte Instruktion war ein Sprungbefehl, der den aktuellen Programmstand an eine andere Stelle versetzt. Das interne Register, das den aktuellen Programmstand speichert, wird mit ,Program Counter' (PC) bezeichnet.
  • Dieses Prinzip der sequenziellen Bearbeitung bedeutet, dass sich zu einem Zeitpunkt genau eine Instruktion in der Bearbeitung befindet. Es wird als Von-Neumann-Prinzip bezeichnet. Moderne Architekturen, die als RISC (Reduced Instruction-Set Computing), superskalar oder VLIW (Very Long Instruction Word) bezeichnet werden, führen zwar zu einem Zeitpunkt mehr als eine Instruktion aus; das Prinzip der Sequenzialität bleibt jedoch erhalten. Insgesamt wird dieses Ausführungsprinzip als 'zeit-sequenziell' (Computing in Time) bezeichnet, was andeutet, dass der Algorithmus Zeit benötigt.
  • Ein gänzlich anderes Prinzip der Programmbearbeitung ist in programmierbaren Logikbausteinen [PLDs(Programmable Logic Devices), entsprechend 2] bzw. deren bekanntester Implementierung, den FPGAs (Field-Programmable Gate Arrays), vorgesehen. Auch diese Architektur ist universell, d. h. für jedes algorithmierbare Problem einsetzbar. Die Programmierung erfolgt hierbei so, dass elementare Recheneinheiten, meist auf Bit-Ebene definiert und daher als Logikelemente bezeichnet, in einem Netzwerk verschaltet werden. Diese Form der Programmierung wird meist als ,Konfiguration' bezeichnet.
  • Die Programmbearbeitung in einem PLD erfolgt im Unterschied zum Von-Neumann-Prinzip mit maximaler Parallelität. Die gesamte Konfiguration eines Bausteins kann als eine einzige Instruktion – im Gegensatz zum Von-Neumann-Prinzip allerdings nicht fest definiert, sondern zusammengesetzt – aufgefasst werden, die in einem Zyklus komplett bearbeitet wird. Die Zykluszeit, häufig mit einem externen Takt in Verbindung gebracht, ist dann von der Komplexität der Zusammensetzung abhängig. Hierdurch kommt ein im Vergleich zu Prozessoren niedrigerer Takt zum Einsatz, der aber durch die Parallelität der Ausführung mehr als ausgeglichen wird. Dieses Prinzip der Ausführung wird als ,Computing in Space' bezeichnet.
  • Eines der wesentlichen Modelle zur Algorithmierung von Problemen sind deterministische endliche Automaten [DEAs, auch DFAs (deterministic finite automata)]. Diese werden in der Technik auch als ,Finite State Machines' (FSMs gemäß der prinzipiellen Darstellung nach 3) bezeichnet. Dieses Modell betrachtet das Problem als eine Folge von Zuständen mit definierten Übergangsfunktionen (hext State Decoder) zwischen diesen, abhängig von den Eingangswerten. Obwohl das Modell des DEA theoretisch nicht so mächtig ist wie das des Von-Neumann-Modells, können in der Praxis beliebige Probleme, ggf. mit Zusatz im Modell, gelöst werden.
  • Das größte Problem dieser DEAs besteht darin, dass ihre Funktionen mit der Anzahl der Zustände in exponentieller Weise anwachsen, den Flächenbedarf an Halbleitermaterial (insbesondere Silizium) betreffend. Aus diesem Grund wählt man gerne Modelle, die aus vielen, miteinander kommunizierenden Automaten bestehen. Ein derartiges Rechnermodell wird als ,komplexer, kooperierender Automat' bezeichnet.
  • Eine Boole'sche Funktion oder Schaltfunktion ist eine Abbildung f: Bm – Bn, mit B = {0, 1}, die in der Form f = (f1, f2, ... fn), also als Vektor von Funktionen fk: Bm → B dargestellt werden kann. Im Folgenden wird daher nur von Funktionen fk mit einem Ausgangswert ausgegangen; diese werden allgemein als f bezeichnet.
  • Es ist weiterhin bekannt, dass f in Form einer disjunktiven oder konjunktiven Normalform darstellbar ist. Für die disjunktive Normalform bedeutet dies, dass f = z1 + z2 ... + zk, (1)mit k = 1, 2, ..., 2m und '+' als OR-Operator (logisches ODER) und zi = y1·y2·... yn (2) mit i = 1, 2, ..., k mit '·' als AND-Operator (logisches UND) gilt.
  • Es werden natürlich nur solche zi verwendet, für die die zu beschreibende Funktion den Wert TRUE oder '1' erhält. Die Bezeichnung yj bestimmt dabei, wie ein Inputbit ik aus dem Inputvektor x = (i1, i2, ... ik) werden soll. während für die Inputbits nur Werte aus der Menge {0, 1} zugelassen sind, muss dies für yj geändert werden: Diesen Werten wird eines aus den drei Attributen {0, 1, –} zugewiesen. Das Attribut '1' für yj bedeutet dabei, dass ik unverändert genommen wird, '0' bedeutet, dass ik invertiert gewählt werden muss (notiert als /ik), und '–' steht für don't care; d. h., ik wird nicht verwendet. Werden für yj nur die Werte {0, 1} als Attribute verwendet, spricht man von der ,kanonisch disjunktiven Normalform'.
  • Diese Darstellung ist deswegen bedeutend, weil dadurch bei bekannter Reihenfolge der Inputbits die Teilausdrücke zi gemäß vorstehender Gleichung (2), auch als ,Terme' bezeichnet, als so genannte ,Stringterme' darstellbar sind: Bei einer Reihenfolge i1, i2, i3 bedeutet "111", dass z1 = i1·i2·i3 ist, "0-1" steht für z2 = /i1·i3 usw.
  • Bei drei Inputbits ist die Menge aller möglichen Inputvektoren v = {000, 001, 010, 011, 100, 101, 110, 111}. Falls beispielhaft die Funktion f nur an den Eingangsvektor {001, 011, 111} den Wert TRUE erhält, brauchen oder dürfen auch nur diese angegeben werden; in Form von Stringterms kann dies durch 111 und 0-1 erfolgen, dies charakterisiert vollständig die gegebene Funktion und ist isomorph zur disjunktiven Normalform f = /i1·i3 + i1·i2·i3.
  • Lese-/Schreib-Speicherbausteine [RAM(Random Addressable Read/Write Memory)] werden üblicherweise zur Speicherung von Daten und Programmen genutzt. In diesem Fall liegt eine Adresse an dem Adressbus an, und nach Ablauf einer Bausteinspezifischen Wartezeit ist beim Lesevorgang das gespeicherte Datum am Datenbus anliegend und kann weiter verwendet werden. Der Schreibvorgang ist in entsprechender Weise arbeitend.
  • Aus Sicht der Instanz, die die Daten erhalten möchte (z. B. ein Prozessor), ist die Adresse bekannt, und der gespeicherte Inhalt ist vorher unbekannt. Es existieren jedoch Anwendungen, bei der das Verhältnis genau umgekehrt ist: Der gespeicherte Inhalt ist bekannt, und das Interesse ist, an welcher Adresse dieser Inhalt gespeichert ist, wobei die Antwort auch 'nicht vorhanden' sein kann. Speicherbausteine, die diese Art der Abfrage unterstützen, werden als ,Content-Addressable Memories' [CAMs (Inhalts-adressierbare Speicherbausteine)] bezeichnet.
  • Speicherbausteine, die als CAM bezeichnet werden und dieses Verhalten direkt unterstützen, gelten als spezielle Bausteine und sind keineswegs häufig anzufinden. Für praktische Anwendungen kann man jedoch die Funktionalität des CAM durch übliche RAM-Bausteine emulieren. Hierzu müssen für alle Daten, die im CAM direkt gespeichert werden würden, bei einer Abfrage jedoch nicht der Wert, sondern die Speicheradresse ergeben, die korrespondierenden Adressen vorher berechnet werden und an der RAM-Adresse, die dem Datum entspricht, gespeichert werden.
  • Zellulare Automaten [CAs(cellular automata)] sind eine Menge von endliche Automaten, die in einem Feld mit feststehender Topologie angeordnet sind und weitere Eigenschaften besitzen (vgl. Literaturzitate [1] und [4]). Diese Menge von FSMs ist als n-dimensionales Array (meist gilt n = 2) angeordnet, wobei jedem Platz feste Koordinaten gegeben sind. Jede FSM besitzt eindeutig Nachbarn, mit denen kommuniziert werden kann. Im Fall n = 2 werden meist die 4 umliegenden FSMs (in den 'Himmelsrichtungen' N, E, W, S, daher auch als ,NEWS-Nachbarschaft' bezeichnet) als Nachbarn angesehen.
  • Die Kommunikation mit den Nachbarn erfolgt so, dass die Zustände der direkten Nachbarn lesbar und damit auswertbar sind. Mit jedem Zeitschritt wird der Zustand aller Zellen parallel berechnet. Sollen Daten aus weiter entfernten Zellen für die Berechnung eines neuen Zustandes genutzt werden, so müssen diese Daten schrittweise von Zelle zu Zelle transportiert werden. Damit sind klassische zellulare Automaten gut zur Berechnung von Problemstellungen mit hoher Lokalität der Daten geeignet.
  • CAs gelten als universelle Rechner wie die vorher diskutierten Architekturen und arbeiten zudem vollkommen parallel. Soll ein Netz von CAs in eine Hardwareschaltung, z. B. einen ASIC oder auch PLD, abgebildet werden, so steigt die Anzahl der Verbindungen linear mit der Zahl der Automaten an. Die Verbindungen selbst sind je nach gewählter Topologie nur relativ kurz und fest verlegt. Der Aufwand zur Kommunikation der Cas untereinander ist also relativ gering. Wird als Komplexität einer Schaltfunktion der Speicherbedarf angesehen, der nötig ist, diese Schaltfunktion in ein RAM abzubilden, so steigt die maximale Komplexität der dem Verhalten einer Zelle entsprechenden Schaltfunktion exponentiell mit der Anzahl der Eingangsvariablen und linear mit der Anzahl der Ausgangsvariablen der Funktion an. Die Zahl der Eingangsvariablen ist hier die Summe aller Bits, die nötig sind, die Zustände aller mit der Zelle verbundenen CAs einschließlich des Zustandes der Zelle selbst zu codieren. Damit ist die maximale Komplexität der Zelle im Wesentlichen durch die Anzahl der Verbindungen eines jeden Automaten beschränkt.
  • Das Konzept der globalen zellularen Automaten [GCAs (global cellular automata)] überwindet die Einschränkungen der CAs, indem Verbindungen einer Zelle nicht nur zu ihren nächsten Nachbarn, sondern zu beliebigen Zellen im gesamten Feld erlaubt werden. Damit besitzt ein GCA keine feststehende Topologie mehr sondern ermöglicht, eine an die Problemstellung angepasste und gegebenenfalls zur Laufzeit der Berechnung sogar wechselnde Topologie zu verwenden. Dies kann zu einer erheblichen Beschleunigung in der Programmbearbeitung führen. Die Anzahl der Verbindungen eines einzelnen Automaten ist ge gebenenfalls durch eine obere Grenze festgelegt. Ist nur eine einzelne Verbindung erlaubt, so spricht man von einarmigen-, im allgemeinen Fall von k-armigen GCAs.
  • Als Konsequenz steigt bei der Realisierung eines Feldes von GCAs der erforderliche Aufwand für die Kommunikation der Zellen untereinander mit der Zahl der Zellen stark an. Die Anzahl der möglichen Verbindungen zwischen den einzelnen Automaten steigt quadratisch mit deren Anzahl.
  • Die Komplexität der einzelnen Automaten selbst bzw. der zugrunde liegenden Schaltfunktion hängt wie bei den konventionellen CAs im Wesentlichen von der Anzahl der Verbindungen einer jeden Zelle ab. Soll ein GCA in eine rekonfigurierbare Schaltung (PLD) abgebildet werden, so muss jede einzelne Zelle, die ja beliebige Schaltfunktionen realisieren kann, die maximal mögliche Komplexität ermöglichen.
  • Werden die einzelnen Automaten auf jeweils ein Rechenwerk mit lokalem Speicher abgebildet, so kann jede Zelle auch komplexe Schaltfunktionen realisieren. Der Aufwand für eine beliebige Kommunikation alle Zellen steigt quadratisch mit der Anzahl der Zellen. Die Granularität der Schaltung wird dann bestimmt durch die Anzahl der Zellen bzw. die Bitbreite der Verbindungen zwischen den Zellen. Eine solche Schaltung kann sehr gut GCAs realisieren, die in Anzahl der FSMs und Bitbreite den Vorgaben der Schaltung entsprechen. Es können auch komplexe Schaltfunktionen in jeder einzelnen Zelle realisiert werden. Nachteilig wirkt sich jedoch aus, dass GCAs, die in Anzahl und benötigter Bitbreite der Verbindungen nicht mit der vorgegebenen Körnigkeit übereinstimmen, nur schwierig auf die Schaltung abgebildet werden können.
  • Werden die einzelnen Zellen als Schaltnetz ausgeführt, so muss jede Zelle in der Lage sein, Daten von allen anderen Zellen einschließlich des eigenen Zustands zu verarbeiten. Aus diesem Grund muss jedes Schaltnetz Schaltfunktionen realisieren können, die alle binärcodierten Zustände aller Zel len als Eingabevariablen enthalten können. Die Anzahl der Ausgabevariablen der Schaltfunktion muss es lediglich ermöglichen, alle Zustände einer einzelnen Zelle binär zu codieren. Nachteilig ist hier, dass die Komplexität der Schaltfunktion exponentiell mit der Anzahl der Eingabevariablen ansteigt. Ebenfalls nachteilig ist der polynomial ansteigende Aufwand für die Kommunikation der Zellen untereinander.
  • Eine (re-)konfigurierbare Architektur (PLD), die zur Aufnahme eines GCA geeignet ist, muss also pro FSM eine beliebige Komplexität aufnehmen können. Dies bedeutet, dass – falls die FSMs direkt in eine Zelle des PLDs abgebildet werden sollen – die Zellen jede beliebige Funktion aufnehmen müssen. Es ist bekannt, dass sich hieraus ein exponentielles Wachstum der Zellengröße ergibt. Das konfigurierbare Netzwerk in dem PLD muss zudem vollständig ausgeführt sein, d. h., jeder Zellenausgang muss mit jeder anderen Zelle verbindbar sein. Das Netzwerk wächst damit quadratisch an, die Konfiguration des Netzwerks ebenfalls.
  • Derzeit sind keine PLD-Architekturen am Markt oder bekannt, die beide Forderungen erfüllen: Große Zellen mit einem vollständigen Designraum existieren nicht, es gibt nur kleine Zellen mit vollständigem Designraum [so genannte ,Look-Up-Table-Struktur' (LUT)] oder große Zellen mit unvollständigen Möglichkeiten zur Abbildung beliebiger Funktionen. Eine vollständige Verbindbarkeit aller Zellen ist nur bei großen Zellen möglich. Die Abbildung von GCAs auf existierende PLDs ist damit schwierig, vielfach sogar unmöglich.
  • Aus der Veröffentlichung „Proceedings of the 1999 Congress an Evolutionary Computation, Washington, DC, USA, 1999, Vol. 2, pp. 1067 bis 1075 ist die Verwendung von genetischen Algorithmen (GA) bei Rechnerarchitekturen bekannt. Weiterhin ist es aus der Veröffentlichung „Proceedings of the First NASA/DoD Workshop an Evolvable Hardware, Pasadena, CA, USA, 1999, pp. Seiten 175 bis 180 bekannt, bei selbstkonfigurierbaren Rechnerarchitekturen (sog. FPGA) aus mehreren Schichten über eine Kontrollschicht (CL) die die rekonfigurierbare Schicht zu beeinflussen.
  • Ausgehend von obigen theoretischen Abhandlungen und dem angegebenen Stand der Technik ist es Aufgabe der vorliegenden Erfindung, eine Rechnereinrichtung mit der angegebenen Architektur zu schaffen, bei der die vorgenannten Probleme zumindest gemindert sind. Dabei soll insbesondere die Möglichkeit aufgezeigt werden, die als ausgezeichnetes Modell zu erachtenden CGAs, die die im Algorithmus steckende Parallelität tatsächlich nutzen können, auf eine programmierbare Hardware wie ein PLD abbilden zu können. D. h., es soll eine Rechnereinrichtung mit einer solchen PLD-Architektur geschaffen werden, die eine Aufnahme eines beliebigen CGA ermöglicht.
  • Die Aufgabe ist erfindungsgemäß mit den in Patentanspruch 1 angegebenen Merkmalen gelöst. Weiterbildungen sind in den Unteransprüchen angegeben.
  • Gegenstand der Erfindung ist eine Rechnereinrichtung mit rekonfigurierbarer Architektur wenigstens einem einzelnen konfigurierbaren und/oder rekonfigurierbaren Schaltwerk, mit folgenden Einzelmerkmalen:
    • a) dessen zugrunde liegendes Schaltnetz eine Boolesche Schaltfunktion realisiert, die durch die Summe ihrer Implikanten definiert ist,
    • b) das eine erste Stufe aus einem oder mehreren parallel geschalteten Speicher-Bausteinen enthält,
    • b1) wobei die Adress-Eingänge eines jeden Speicher-Bausteins durch eine Teilmenge der aktuellen Eingabevariablen eines der Implikanten belegt sind und die dadurch adressierte Speicherzelle des Speicher-Bausteins eine ein- oder mehrstellige Kennung, die der aktuellen Belegung der Eingabevariablen entspricht, als Ausgabedatum liefert,
    • c) das die parallel geschalteten Ausgänge der ersten Stufe über einen Crossbar-Switch mit den Adress-Eingängen einer nachgeordneten zweiten Stufe mit einem oder mehreren pa rallel geschalteten Speicher-Bausteinen beliebig verbindet,
    • c1) wobei jeweils die Adress-Eingänge eines der parallel geschalteten Speicher-Bausteine mit einer Kombination der Kennungen der Teilimplikanten belegt sind und
    • c2) die dadurch adressierte Speicherzelle eines Speicher-Bausteins den Wert des entsprechenden Implikanten als Ausgabedatum enthält,
    • d) das eine der zweiten Stufe nachgeordnete dritte Stufe mit Mitteln zu einer disjunktiven Verknüpfung der Ausgabedaten der einzelnen Implikanten aus den Speicher-Bausteinen der zweiten Stufe aufweist.
  • Zur Definition des Begriffes „Implikant" wird in lezterem Zusammenhang auf den einschlägigen Stand der Technik, beispielsweise K. Fricke „Lehr- und Übungsbuch für Elektrotechniker und Informatiker" (ISBN: 978-3-8348-0241-5), S. 53ff „Schaltnetze" verwiesen. Die unterschiedliche Wirkung von seriell und parallel geschalteten Speicher-Bausteinen geht aus K. Wüst „Mikroprozessortechnik" (ISBN:978-3-8348-0046-6), S. 38ff Kapitel „Speicherbausteine" hervor.
  • Bei der Rechnereinrichtung gemäß der Erfindung brauchen nicht alle Eingänge von gespeicherten Ausgängen belegt zu sein. Vielmehr können auch freie Eingänge existieren. Außerdem können auch Ausgänge vorhanden sein, die nicht rückgekoppelt sind, also beispielsweise nur ein Endergebnis darstellen, das nicht wieder verwendet wird.
  • Bei der Erfindung ist das Schaltwerk dreistufig ausgebildet, wobei die drei Stufen hintereinander geschaltet sind. Dabei dient die zwischen der Stufe mit den Eingängen und der Stufe mit den Ausgängen angeordnete zweite Stufe mit Speicherelementen zur Verarbeitung von in der ersten Stufe erzeugten Da ten und zur Weiterleitung von verarbeiteten Daten an die dritte Stufe.
  • Dabei kann vorteilhaft eine erste Stufe mehrere parallel geschaltete Speicherelemente enthalten, die über Eingabeleitungen adressierbar sind, wobei jedem Speicherelement eine Teilmenge der in einem zugehörenden, ermittelten Implikanten gebundenen Eingabevariablen zuzuführen sind, der ersten Stufe eine zweite Stufe mit Speicherelementen nachgeordnet sein, die durch Kennungen der einzelnen Implikanten zu adressieren sind, und der zweiten Stufe eine dritte Stufe mit Mitteln zu einer disjunktiven Verknüpfung der Ausgabewerte der einzelnen Implikanten aus den Speicherelementen der zweiten Stufe nachgeordnet sein.
  • Mit den Zeitpunkten tn-1 und tn sind direkt aufeinander folgende Auswertungen der Schaltfunktion bezeichnet. In einer technisch günstigen Realisierung können diese Zeitpunkte von einem eingeprägten Takt mit einer Taktdauer T abgeleitet werden, so dass tn – tn-1 = k·T mit k = 1, 2, 3, ... gilt. Für eine gegebene Anwendung ist hierbei k konstant, für verschiedene Anwendungen kann es unterschiedlich gewählt werden.
  • Nachdem feststeht, dass die Komplexität der Schaltfunktion exponentiell mit der Anzahl der Eingabevariablen und linear mit der Anzahl der Ausgabevariablen bzw. der Anzahl der Zellen im Feld der abzubildenden GCAs steigt und der Aufwand für die Kommunikation der GCAs untereinander zumindest quadratisch mit der Anzahl der Zellen ansteigt, ist die erfindungsgemäße (re-)konfigurierbare Architektur zur Aufnahme von GCAs geeignet. Hierzu besteht sie aus wenigstens einem einzelnen konfigurierbaren Schaltwerk, dessen Ausgangsvariablen zum Zeitpunkt tn-1 die Eingangsvariablen des Schaltwerks zum Zeitpunkt tn bilden. Zwischen den Zeitpunkten tn-1 und tn werden die Ausgänge des Schaltwerks in einem Speicher wie insbesondere in Registern gespeichert, so dass ein komplexes Schaltwerk bzw. eine FSM entsteht. Dabei stellen die einzelnen Stufen in der Gliederung ebenfalls Schaltwerke dar; nur die Kon figuration liegt in einzelnen Schaltnetzen einer jeden Stufe, wobei jede Stufe aus einem konfigurierbaren Schaltnetz und Speicherelementen besteht.
  • Bei der erfindungsgemäßen Architektur sind demnach Schaltnetze als Boolesche Schaltfunktionseinheiten vorhanden, deren jeweiliger Ausgang von aktuellen Werten am Eingang der Architektur abhängt, während unter dem wenigstens einen Schaltwerk eine Boolesche Schaltfunktionseinheit zu verstehen ist, deren Ausgang von aktuellen Werten am Eingang zu dieser und endlich vielen vorangegangenen Zeitpunkten abhängt. Schaltwerke werden demnach aus Schaltnetzen und zumeist taktflankengesteuerten Speicherelementen zusammengesetzt.
  • Die erfindungsgemäße Ausführungsform nach Patentanspruch 1 kann mit den Merkmalen eines der Unteransprüche oder vorzugsweise auch denen aus mehreren Unteransprüchen kombiniert werden.
  • Demgemäß kann die Architektur noch folgendermaßen ausgebildet sein:
    • – Als Speichermittel können Registerspeicherelemente vorgesehen sein, wobei es sich hier im Allgemeinen um taktflankengesteuerte Flipflop-Elemente handelt.
    • – Die einzelnen Implikanten lassen sich bevorzugt durch Minimierungsverfahren ermitteln.
    • – Die erste Stufe kann mit der zweiten Stufe über wenigstens einen Crossbar-Switch miteinander verknüpft sein.
    • – Als Speicherelemente können vorteilhaft CAMs und/oder RAMs vorgesehen sein.
    • – Besonders vorteilhaft ist es, wenigstens ein CGA zu integrieren.
    • – Als Speicherelemente können magnetoresistive Bauelemente, insbesondere vom TMR-Typ, vorgesehen sein. Derartige tunnelmagnetoresistive Elemente sind vom Stand der Technik bekannt.
  • Bei der Erfindung wird unter einem Speicherelement der Architektur jedes interne Element verstanden, das im Allgemeinen aus wenigen Transistoren oder vergleichbaren Bausteinen sowie aus den eigentlichen, die Speicherfunktion ermöglichenden Elementen wie z. B. den erwähnten magnetoresistiven Elementen (pro Speichereinheit) zusammengesetzt ist.
  • Den vorstehend angegebenen Ausgestaltungen der erfindungsgemäßen Architektur liegen insbesondere die nachfolgend dargelegten Überlegungen zu Grunde:
    Die Komplexität einer Schaltfunktion in dem gewählten Schaltwerk steigt zwar linear mit der Anzahl der Ausgabevariablen an, jedoch entfällt sämtlicher Aufwand für die Kommunikation der Zellen untereinander. In eine solche Schaltfunktion können viele einzelne Automaten mit wenigen Ausgabevariablen abgebildet werden, oder wenige GCAs mit vielen Ausgabevariablen oder auch eine Mischung verschiedener Zellen. Damit ist keine Granularität vorgegeben, und die Kommunikation der FSMs untereinander ist prinzipiell vollständig möglich. Eine Grenze ist jedoch durch die maximale Komplexität der Schaltfunktion gesetzt, die das Schaltnetz aufnehmen kann.
  • Die Benutzung eines Schaltwerks mit einer großen Anzahl von Eingängen – dies wird im allgemeinen Fall entstehen, wenn ein GCA mit einer Anzahl von FSMs abgebildet wird – bedeutet, dass wiederum eine Art exponentielle Abhängigkeit des Flächenbedarfs von der Anzahl der Eingänge entstehen kann. Als obere Grenze gilt ein Wachstum der Fläche mit exp(Anzahl Zustände), wenn jeder Zustand in einem Bit codiert wird; im Allgemeinen Fall wird der Flächenbedarf geringer sein. Da eine universelle Schaltung jedoch den Maximalfall beinhalten muss, wäre das exponentielle Wachstumsgesetz anzuwenden.
  • Hier ist es als besonders vorteilhaft anzusehen, die Schaltung, die das Schaltwerk aufnimmt, in drei spezielle Abschnitte/Stufen einzuteilen. Dazu wird nachstehend eine (re)konfigurierbare Schaltung dargestellt, die Schaltfunktio nen mit einer großen Zahl von Eingangsvariablen und einer großen Zahl von Ausgangsvariablen als Schaltwerk realisieren kann.
  • Um ein rekonfigurierbares Schaltwerk für Schaltfunktionen zu entwerfen, werden als Ausgangsüberlegung zwei Möglichkeiten betrachtet:
    Zum einen ist es möglich, eine Schaltfunktion komplett in einem RAM-Speicher abzulegen. Die Eingabevariablen der Schaltfunktion bilden die Adressbits und adressieren für jede mögliche Kombination von Eingabevariablen eine Speicherzelle. Der Inhalt dieser Speicherzelle entspricht dann dem Wert der Schaltfunktion, die Datenleitungen des Speicherelements bilden die Ausgabevariablen der Funktion. Der Vorteil dieses Konzepts liegt im einfachen Aufbau der Schaltung, der einfachen Rekonfigurierbarkeit, der hohen Integrationsdichte von Speicherelementen und der festen Zeitdauer, die die Auswertung der Schaltfunktion benötigt. Allerdings steigt die Anzahl der benötigten Speicherzellen, also die Größe des benötigten Speicherelementes exponentiell mit der Anzahl der Eingabevariablen an. Aus diesem Grunde können nur kleine Schaltfunktionen auf diese Weise abgebildet werden.
  • Dies ist Stand der Technik in PLDs und wird als Look-Up-Table-Struktur bei FPGAs eingesetzt, meist mit 4 binärwertigen Eingangsvariablen und 1 binärwertigen Ausgang.
  • Eine zweite Möglichkeit, Schaltfunktionen in ein Schaltnetz abzubilden, besteht darin, Gatter in einem 2- oder mehrstufigen Netz konfigurierbar anzuordnen. Damit ist es möglich, Schaltfunktion mit einem minimalen Verbrauch von Gattern in Schaltnetze abzubilden. Die Schaltkreistheorie stellt hier günstige Darstellungsformen von Schaltfunktionen wie z. B. die Reed-Muller-Form, oder auch leistungsfähige Algorithmen zur Logikminimierung bereit. Der Vorteil dieses Ansatzes besteht im minimalen Verbrauch von Gattern und in der Möglichkeit, leistungsfähige Verfahren und Algorithmen zur Minimie rung zu nutzen (vgl. Literaturzitate [2] und [3]). Dieses Verfahren kann gut zur Darstellung einer festen Schaltfunktion z. B. der Realisierung eines ROMs genutzt werden. Über Hardwarebausteine wie z. B. Crossbar-Switches können die einzelnen Gatter rekonfigurierbar verschaltet werden, jedoch steigt hier der Aufwand für die Rekonfigurierbarkeit exponentiell mit der Anzahl der Eingabevariablen der Schaltfunktion an.
  • Um die Vorteile der ersten Möglichkeit, die hohe Integrierbarkeit, die Rekonfigurierbarkeit und die Einfachheit der Schaltung, und die Vorteile der 2. Variante, den geringen Verbrauch von Gatterfunktionen und die Anwendbarkeit moderner Verfahren, verbinden zu können, ist erfindungsgemäß folgender Ansatz vorgesehen:
    Die Grundidee der angenommenen Ausführungsform ist die Entwicklung eines rekonfigurierbaren Schaltwerks, welches soviel logische Funktionalität wie möglich in RAM-Bausteinen darstellt, um den Vorteil der hohen Integrationsdichte zu nutzen. Diese RAM-Bausteine sollen in einer mehrstufigen Schaltung rekonfigurierbar miteinander verbunden werden, um nicht komplette Schaltfunktionen speichern zu müssen. Für die drei Stufen der Rechnerarchitektur gilt Folgendes:
  • 1. Stufe:
  • Die Eingabevariablen der Schaltfunktion werden durch die Eingabeleitungen des Schaltnetzes repräsentiert. Die erste Stufe der Schaltung besteht aus mehreren parallel geschalteten Speicherelementen, die durch die Eingabeleitungen adressiert werden. Jedem Speicherelement ist dabei eine Teilmenge der Eingabeleitungen und damit der Eingabevariablen der Schaltfunktion zugeordnet. Die durch Minimierungsverfahren ermittelten Implikanten einer Schaltfunktion (minimierte zi aus Gl. (2) bzw. deren Stringterm-Darstellung) werden in Speicherelementen der Eingangsstufe abgespeichert. Dazu werden in jedem Speicherelement, dem im Implikanten gebundene Eingabevariablen zugeordnet sind, die Belegung der Eingabevariablen im Implikanten und eine eindeutige Kennung zu diesem Implikanten abgespeichert. Da jedem Baustein nur ein Teil der Eingabevariablen zugeordnet sind, wird auch nur jeweils ein Teilimplikant gespeichert. In Speicherelementen, denen keine im Implikanten gebundenen Variablen zugeordnet sind, wird entsprechend kein Teil des Implikanten gespeichert. Liegt an den Eingabeleitungen des Schaltnetzes eine Bitkombination an, so geben alle Speicherelemente, die zur Bitkombination passende Teilimplikanten enthalten, deren Kennungen über die Datenleitungen an die 2. Stufe der Schaltung weiter.
  • 2. Stufe:
  • Die Kennungen der (Teil-)Implikanten adressieren einen Speicher in einer zweiten Stufe. In diesem Speicher sind die zum jeweiligen Implikanten gehörigen Bitmuster der Kennungen und die Ausgabewerte der Schaltfunktion gespeichert. Entspricht das Bitmuster an Kennungen, die von der ersten Stufe geliefert werden, dem eines gespeicherten Implikanten, so liegt dieser Implikant an den Eingangsleitungen der Schaltung an. Die 2. Stufe der Schaltung leitet dann die Ausgabewerte aller Implikanten, die an den Eingabeleitungen anliegen, über die Datenleitungen an die 3. Stufe weiter.
  • 3. Stufe:
  • In der 3. Stufe werden die Ausgabewerte der einzelnen Implikanten disjunktiv (OR) verknüpft und bilden so das Ergebnis der Schaltfunktion.
  • Die Erfindung wird nachfolgend unter Bezugnahme auf die Zeichnung anhand eines konkreten Ausführungsbeispieles unter Berücksichtigung der vorstehenden Überlegungen noch weiter erläutert. Die Zeichnung umfasst folgende Teile, wobei deren 1 bis 3 zum Stand der Technik unter Abschnitt 2 bereits angesprochen wurden:
  • 1 zeigt den prinzipiellen Aufbau einer Von-Neumann-Architektur gemäß dem Stand der Technik,
  • 2 zeigt die generelle Struktur eines PLD gemäß dem Stand der Technik,
  • 3 zeigt den prinzipiellen Aufbau einer FSM in Form eines Mealy-Automaten gemäß dem Stand der Technik,
  • 4 zeigt ein Ausführungsbeispiel eines Speicheraufbaus einer erfindungsgemäßen Architektur,
  • 5 zeigt die Abbildung von Springtermen auf RAM, wobei Teilfigur a) partielle Springterme, Teilfigur b) die Abbildung auf ein Tag-RAM und Teilfigur c) die Abbildung auf ein konventionelles RAM veranschaulichen,
  • 6 zeigt die Abbildung des Ergebnisses der Stufe 1 einer erfindungsgemäßen Architektur auf eine RAM-Kombination in Stufe 2,
  • 7 zeigt eine endgültige Architektur für das Beispiel [(0, 1)12 → (0, 1)12-Funktion],
  • 8 zeigt eine erfindungsgemäße Architektur für ein Schaltwerk mit großem Schaltnetz zur Aufnahme eines GCA und
  • 9 eine erfindungsgemäße rekonfigurierbare Architektur zur Aufnahme von CGAs.
  • Dabei sind in den Figuren sich entsprechende Teile jeweils mit denselben Bezugszeichen versehen.
  • Für das Ausführungsbeispiel gemäß den 4 bis 9 sei eine erfindungsgemäße Architektur mit drei Stufen, wie vorstehend angesprochen, angesetzt, und zwar für eine Schaltfunktion mit 12 Eingabevariablen, 10 Implikanten und 8 Ausgabevariablen: Tabelle 1 zeigt hierfür alle Implikanten (auch als ,Minterme' bezeichnet) für eine Beispielfunktion an. Die Darstellung der Stringterme ist so gewählt, dass hierbei drei Vierergruppen entstehen. Tabelle 1: Beispiel für eine Implikantentabelle, dargestellt durch Stringterme Implikanten:
    1. 0-11 ---- 1100 6. 0100 11-- 0000
    2. 1101 11-- 0000 7. ---- 0001 0000
    3. -0-1 0001 ---- 8. ---- 0001 ----
    4. ---- ---- --10 9. ---- ---- 0000
    5. 0100 0001 ---- 10. -0-1 0001 1100
  • Betrachtet man nun diese Tabelle spaltenweise, wird man feststellen, dass nur wenige verschiedene Kombinationen in den Stringtermen vorkommen. Bei einer zweiwertigen Darstellung könnte es für jede Spalte hier 24 = 16 verschiedene Kombinationen geben, bei dreiwertiger entsprechend 34 = 81. In dem Beispiel kommen hiervon nur 5, 3 und 4 für die Spalten 1–3 vor, wobei eine Eingangskombination jeweils komplett '-' ist.
  • Liegt am Eingang eine Bitkombination als Parameter der Schaltfunktion an, so liefert ein Speicherelement, welches einen Teilimplikanten mit der anliegenden Bitkombination speichert, die Kennung des zugehörigen Implikanten zurück. Dieses Speicherelement der ersten Stufe ist in 4 als 3-wertiges CAM ausgeführt, d. h., die Eingangsvektoren, die real als zweiwertige Information an dem Adressbus anliegt, wird mit gespeicherter dreiwertigen Informationen verglichen. Als Ausgabe wird eine zu dem Treffer gespeicherte Kennung, ebenfalls dreiwertig, ausgegeben.
  • Alle Kennungen zusammen bilden die Kennung der Implikantenkombination, die am Eingang des Schaltnetzes anliegt. Diese Implikantenkombination kann dabei durchaus mehrere Implikanten umfassen. So können im dargestellten Beispiel z. B. die Implikanten 3, 4 und 8 oder die Kombination der Implikanten 4, 5 und 8 anliegen. Im ersten Fall liegt die Bitkombination 100001 an der 2. Stufe an, im zweiten Fall die Kombination 110001.
  • Die Kennung der Implikantenkombinationen wird in der 2. Stufe der Schaltung erkannt und liefert für jeden beteiligten Implikanten den zugehörigen Ausgabewert der Schaltfunktion. Diese zweite Stufe besteht nun aus einem dreiwertigen RAM, d. h., am die Adressbusinformationen dieser Stufe sind dreiwertig, die gespeicherten Daten allerdings zweiwertig.
  • In der 3. Stufe der Schaltung werden die Ausgabewerte der anliegenden Implikanten disjunktiv verknüpft und bilden zusammen den Funktionswert der Schaltfunktion.
  • Für die Speicherelemente von Stufe 1 gilt Folgendes: Als Speicherelement zum Aufnehmen der Teilimplikanten kann – wie schon erwähnt – ein sehr spezieller Baustein bzw. eine sehr spezielle Architektur zum Einsatz kommen, hier mit dreiwertigem CAM gemäß 4 bezeichnet. Hierbei muss prinzipiell noch das Problem der Mehrfachübereinstimmung diskutiert werden, was aber im Zusammenhang mit anderen Realisierungsmöglichkeiten erfolgen soll.
  • Möglich als Einsatz für die Stufe 1 ist auch ein vollassoziativer Cache. Hier können die Teilimplikanten als so genannter Tag gespeichert werden, das gecachte Datum dient als Kennung des erkannten Implikanten. Enthält jedoch ein Teilimplikant ungebundene Variablen, die beim Vergleich mit anliegenden Bitkombinationen als Don't-Care(DC)-Stellen zum Ausdruck kommen, so muss für alle Belegungen dieses Implikanten, die den Vergleich mit DC erfüllen, ein Tag im Tag-RAM angelegt werden. Weiterhin ergeben sich durch den Vergleich mit DC Überschneidungen von Teilimplikanten. So gehört z. B. die Bitkombination 0011 im ersten Teilimplikantenspeicher des obigen Beispiels sowohl zum Implikanten 1 als auch zum Implikanten 3. Es sind also nicht nur Kombinationen von Implikanten möglich, sondern auch Kombinationen von Teilimplikanten.
  • Aus diesem Grunde werden zu einer Realisierung als Teilimplikantenspeicher normale, d. h. zweiwertige RAM-Bausteine bzw. -Architekturen verwendet. Jedes dieser RAMs wird durch einen Teil der Eingangsleitungen des Schaltnetzes adressiert. An den Adressen, deren Bitkombination jeweils demselben Teil implikanten mit DC-Stellen entsprechen (jede DC-Stelle in einem Stringterm bedeutet, dass die Anzahl der zutreffenden Stellen bei binärer Codierung um den Faktor 2 erhöht wird), wird jeweils die gleiche Kennung im Speicher abgelegt. Ist die Ausgangsbreite des verwendeten RAMs größer als die zur Darstellung der Kennungen notwendige Bitbreite, so können die weiteren Bits als Kontextwert genutzt werden. Dieser Kontext kann z. B. eine ungültige Belegung der Eingangsvariablen der Schaltfunktion anzeigen.
  • Da ein normales RAM keine Statusanzeige für ein nicht vorhandenes Datum wie z. B. ein Tag-RAM mit seinem Cache-Miss-Ausgang besitzt, muss eine Bitkombination auf denjenigen Datenleitungen, die an die 2. Stufe zum Vergleich der Bitkombinationen verwendet werden, als Kennzeichnung für keinen anliegenden Teilimplikanten verwendet werden. In 5c) ist dies durch die Kennung 8 gegeben.
  • Für die Speicherelemente von Stufe 2 gilt Folgendes: Ebenso wie im bei den RAMs der ersten Stufe zum Speichern der Teilimplikanten müssen auch beim Vergleich der Implikantenkombinationen in der 2. Stufe der Schaltung DCs berücksichtigt werden. Deshalb wird auch hier ein normales RAM verwendet. Dieses RAM wird mit der Kennung der Implikantenkombination adressiert.
  • Da wieder mehrere Adressen derselben Implikantenkombination entsprechen können, muss der Speicher der zweiten Stufe aufgeteilt werden: die Bitkombinationen der ersten Stufe adressieren ein RAM der zweiten Stufe. Dort ist für jede gültige Implikantenkombination ein Index abgelegt, der wiederum ein RAM adressiert, welches seinerseits die Ausgabevariablen der beteiligten Implikanten enthält. So können die verschiedenen Adressen, die sich durch die Implikantenkombination mit Don't-Care-Stellen ergeben, auf denselben Index der Ausgabewerte der Schaltfunktion abgebildet werden.
  • 6 zeigt eine entsprechende Abbildung des Ergebnisses der Stufe 1 auf eine RAM-Kombination in Stufe 2.
  • 7 zeigt die endgültige Architektur: Da ein RAM nur einen einzigen Index liefern kann, müssen in einer 1. Stufe eines Schaltwerks im Speicher der Ausgabewerte die disjunktiv verknüpften Ausgabewerte aller an der erkannten Kombination beteiligten Implikanten aufgenommen werden. Damit muss das Ausgabe-RAM in dieser Stufe alle möglichen Funktionswerte der Schaltfunktion speichern können. Da die Anzahl der möglichen Funktionswerte exponentiell mit der Anzahl der Ausgabevariablen einer Schaltfunktion ansteigt, werden mehrere Kombinations- und Ausgabe-Speicher der 2. Stufe des Schaltwerks parallel verwendet und deren Ausgabekombinationen disjunktiv verknüpft. Damit können alle Funktionswerte einer Schaltfunktion erzeugt werden.
  • Um die Kapazität der einzelnen Kombinationsspeicher besser ausnutzen zu können, werden alle Datenleitungen der Implikantenspeicher mit allen Adressleitungen der Kombinationsspeicher über einen Crossbar-Switch verbunden. Damit können beliebige Datenleitungen die Adressierung der Kombinations-RAMs übernehmen. Nicht verwendete Datenleitungen können über den Crossbar-Switch als Kontext-Information weitergeleitet werden.
  • In einem letzten Schritt wird in einer 3. Stufe des Schaltwerks der erzeugte Ausgabewert bitweise über die Exklusiv-Oder-Funktion mit einem Registerinhalt verknüpft, um einzelne Ausgabevariablen invertieren zu können und so ggf. kleinere Logikminimierungen zu erhalten. Damit besteht die 3. Stufe der Schaltung aus der disjunktiven Verknüpfung der Ausgabekombinationen und der anschließenden möglichen Invertierung einzelner Ausgabebits.
  • Insgesamt ergibt somit 7 das Prinzipschaltbild für ein erfindungsgemäßes Schaltwerk.
  • Nachfolgend wird die anhand 7 dargestellte Architektur diskutiert: Die Intention der Erfindung ist es, sowohl eine RAM-basierte Architektur zur Implementierung großer Schaltnetze als auch – gewissermaßen als Anwendung zur Aufnahme einer universellen Maschine – diese Architektur zur Aufnahme von GCAs anzubieten. Zur Aufnahme einer beliebigen Funktion im RAM muss der Speicherplatz in dem Speicher exponentiell mit der Anzahl der Eingänge (und linear mit der Anzahl der Ausgänge) wachsen. Im Fall des obigen Beispiels bedeutet dies, dass eine beliebige Funktion mit 12 Ein- und 12 Ausgängen einen Speicherbedarf von 4096·12 bit entsprechend 6144 Bytes hätte. Bei 32 Eingängen und 8 Ausgängen wären dies bereits 4 GByte an Speicherkapazität.
  • Die vorgeschlagene Architektur eines mehrstufigen Netzwerks beinhaltet lediglich 211,5 Bytes RAM, nämlich:
    3 × Implikanten-RAM 16 × 4 24 Bytes
    3 × Kombinations-RAM 64 × 4 96 Bytes
    3 × Ausgabe-RAM 16 × 12 72 Bytes
    Crossbar-Switch-Konfiguration 18 Bytes
    Invertierung 12 × 1 1,5 Bytes
    Summe 211,5 Bytes
  • Damit liegt der wesentliche Vorteil darin, dass diese Architektur erheblich platzsparender ist als eine LUT-basierte Architektur. Hierbei ist zu berücksichtigen, dass nicht jede Funktion auf diese Weise darstellbar ist.
  • Um eine Applikation in diese Architektur abbilden zu können, müssen mehrere notwendige Bedingungen erfüllt sein. Die erste Bedingung ist diejenige, dass die Anzahl der verschiedenen Teil-Stringterme, die in einer Spalte vorhanden sind, auf die RAMs der ersten Stufe abgebildet werden können. Dies ist automatisch dadurch erfüllt, dass diese RAMs alle Kombinationen aufnehmen (weil sie CAMs emulieren), lediglich die Eingangsbreite der Schaltung muss für Applikation ausreichen.
  • Die zweite Bedingung schließt sich hier an: Die Anzahl der verschiedenen Teil-Stringtermkombinationen, die in der Applikation nach Minimierung enthalten sind, muss codierbar sein. Dies bedeutet, dass eine Anzahl von Speicherstellen zur Verfügung stehen muss. Zur Effizienzabschätzung sei m die Eingangsbreite des Schaltnetzes. Dies würde bedeuten, dass 2m Speicherzellen benötigt würden, um die komplette Funktion darzustellen.
  • Wenn k nun die Parallelität der Bausteine (Anzahl der Bausteine) und 2s die Kapazität eines Bausteins ist, so muss für eine effizientere Speicherung der Applikation die Ungleichung k·s ≤ m – 1 (3)gelten. Je deutlicher die Unterschreitung ausfällt, desto effizienter war die Implementierung. Die Gleichung 3 bedeutet, dass die Ausgangsbreite geeignet gewählt sein muss.
  • GCAs werden auf die Architektur abgebildet: Zur Abbildung von GCAs auf die erfindungsgemäße Architektur müssen noch Speicherelemente eingeführt werden, die taktgesteuert das Fortschreiten in der Rechnung speichern. Dies hat seine Ursache darin, dass GCAs als Array von FSMs definiert sind, und diese sind in der Regel synchronisiert. Hier ist angenommen, dass ein globaler Takt zur Synchronisation genommen wird. Alle Implementierungen von nicht-globalen, insbesondere nicht in gegenseitiger Beziehung stehenden Takten würden zu wesentlichen Problemen führen, sind jedoch in der Praxis selten anzutreffen.
  • 8 zeigt ein weiteres Beispiel für eine konfigurierbare Architektur der vorgeschlagenen Art, nunmehr ausgestattet mit Registern zur Speicherung von Zuständen. Zusätzlich ist ein weiterer Crossbar-Switch eingefügt, der an dieser Stelle u. a. dazu dient, Ein- und Ausgabeschnittstellen für den Rechner bereitzustellen. Dies ist zwar für das grundlegende Verständnis der Architektur unerheblich, im praktischen Betrieb jedoch notwendig, weil ein Rechner mit Außenanschlüssen versehen sein muss.
  • Der Speicherbedarf dieser beispielhaften Architektur berechnet sich zu
    8 × minterm-RAM 256 × 8 2 KBytes
    8 × combination-RAM 64K × 8 512 KBytes
    8 × Output-vector-RAM 256 × 64 16 KBytes
    2 × Crossbar-Switch configuration 1 KBytes
    Inverting register 64 × 1 8 Bytes
    Sum 531 KBytes
  • Damit ist verdeutlich, wie gering die Speicheranforderungen sind; ein RAM mit 264·64 bit (= 267 Bytes) ist jedenfalls nicht in der Herstellung möglich. Sollten bei einer Applikation auf dieser Architektur Leitungen von den RAMs der ersten Stufe ungenutzt bleiben, können diese als Kontextinformationen genutzt werden. Eine Anwendung besteht dabei in der Kontextumschaltung, die für die RAMs der zweiten Stufe zusätzlich möglich sein könnte. Werden also beispielsweise bei einem RAM nur 14 Adressbits benötigt, dann können die Informationen für diese 14 bit viermal gespeichert werden, also in vier verschiedenen Kontexten stehen.
  • Aus 9 ist der prinzipielle Aufbau einer rekonfigurierbaren Architektur nach der Erfindung zu entnehmen, wie sie zur Aufnahme von CGAs geeignet ist. Dieser Aufbau stellt eine Verallgemeinerung des Aufbaus nach 8 dar. Insbesondere sind die RAM-Stufen 1 und 2 durch gestrichelte Linien verdeutlicht.

Claims (6)

  1. Rechnereinrichtung mit rekonfigurierbarer Architektur aus wenigstens einem einzeln konfigurierbaren und/oder rekonfigurierbaren Schaltwerk, a) dessen zugrunde liegendes Schaltnetz eine Boole'sche Schaltfunktion realisiert, die durch die Summe ihrer Implikanten definiert ist, b) das eine erste Stufe aus einem oder mehreren parallel geschalteten Speicher-Bausteinen enthält, b1) wobei die Adress-Eingänge eines jeden Speicher-Bausteins durch eine Teilmenge der aktuellen Eingabevariablen eines der Implikanten belegt sind und die dadurch adressierte Speicherzelle des Speicher-Bausteins eine ein- oder mehrstellige Kennung, die der aktuellen Belegung der Eingabevariablen entspricht, als Ausgabedatum liefert, c) das die parallel geschalteten Ausgänge der ersten Stufe über einen Crossbar-Switch mit den Adress-Eingängen einer nachgeordneten zweiten Stufe mit einem oder mehreren parallel geschalteten Speicher-Bausteinen beliebig verbindet, c1) wobei jeweils die Adress-Eingänge eines der parallel geschalteten Speicher-Bausteine mit einer Kombination der Kennungen der Teilimplikanten belegt sind und c2) die dadurch adressierte Speicherzelle eines Speicher-Bausteins den Wert des entsprechenden Implikanten als Ausgabedatum enthält, d) das eine der zweiten Stufe nachgeordnete dritte Stufe mit Mitteln zu einer disjunktiven Verknüpfung der Ausgabedaten der einzelnen Implikanten aus den Speicher-Bausteinen der zweiten Stufe aufweist.
  2. Rechnereinrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Speicherbausteine Registerspeicherbausteine sind.
  3. Rechnereinrichtung nach Anspruch 1 oder 2, gekennzeichnet durch mit Hilfe von Minimierungsverfahren ermittelten Implikanten.
  4. Rechnereinrichtung nach einem der vorangehenden Ansprüche, gekennzeichnet durch CAMs- und/oder RAMs als Speicherelemente.
  5. Rechnereinrichtung nach einem der vorangehenden Ansprüche, gekennzeichnet durch eine Implementierung wenigstens eines CGAs.
  6. Rechnereinrichtung nach einem der vorangehenden Ansprüche, gekennzeichnet durch magnetoresistive Speicherelemente, insbesondere vom TMR-Typ.
DE102005005073A 2004-02-13 2005-02-03 Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen Expired - Fee Related DE102005005073B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102005005073A DE102005005073B4 (de) 2004-02-13 2005-02-03 Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102004007232 2004-02-13
DE102004007232.9 2004-02-13
DE102005005073A DE102005005073B4 (de) 2004-02-13 2005-02-03 Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen

Publications (2)

Publication Number Publication Date
DE102005005073A1 DE102005005073A1 (de) 2005-09-08
DE102005005073B4 true DE102005005073B4 (de) 2009-05-07

Family

ID=34832667

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005005073A Expired - Fee Related DE102005005073B4 (de) 2004-02-13 2005-02-03 Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen

Country Status (5)

Country Link
US (1) US7352205B2 (de)
JP (2) JP5027515B2 (de)
CN (1) CN100388264C (de)
DE (1) DE102005005073B4 (de)
WO (1) WO2005078599A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509479B2 (en) * 2004-09-16 2009-03-24 Siemens Aktiengesellschaft Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit
US7801835B2 (en) * 2005-06-15 2010-09-21 International Business Machines Corporation Method for constructing autonomic advisors and learning procedural knowledge from scored examples
CN101325559B (zh) * 2008-07-28 2010-08-18 腾讯科技(深圳)有限公司 一种推荐游戏房间的方法、系统和游戏服务器
KR101274115B1 (ko) * 2009-10-06 2013-06-13 한국전자통신연구원 스크램블 장치 및 이의 동작 방법
US11113176B2 (en) 2019-01-14 2021-09-07 Microsoft Technology Licensing, Llc Generating a debugging network for a synchronous digital circuit during compilation of program source code
US11093682B2 (en) 2019-01-14 2021-08-17 Microsoft Technology Licensing, Llc Language and compiler that generate synchronous digital circuits that maintain thread execution order
US11275568B2 (en) 2019-01-14 2022-03-15 Microsoft Technology Licensing, Llc Generating a synchronous digital circuit from a source code construct defining a function call
US11106437B2 (en) * 2019-01-14 2021-08-31 Microsoft Technology Licensing, Llc Lookup table optimization for programming languages that target synchronous digital circuits
US11144286B2 (en) 2019-01-14 2021-10-12 Microsoft Technology Licensing, Llc Generating synchronous digital circuits from source code constructs that map to circuit implementations
US11923009B2 (en) * 2022-06-15 2024-03-05 Hewlett Packard Enterprise Development Lp Compact K-SAT verification with TCAMS

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996034346A1 (en) * 1995-04-28 1996-10-31 Xilinx, Inc. Microprocessor with distributed registers accessible by programmable logic device
US6247036B1 (en) * 1996-01-22 2001-06-12 Infinite Technology Corp. Processor with reconfigurable arithmetic data path
DE19843640A1 (de) 1998-09-23 2000-03-30 Siemens Ag Verfahren zum Konfigurieren eines konfigurierbaren Hardware-Blocks
JP4285877B2 (ja) * 1999-02-23 2009-06-24 株式会社リコー 動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法
JP4558879B2 (ja) * 2000-02-15 2010-10-06 富士通株式会社 テーブルを用いたデータ処理装置および処理システム
JP2002026721A (ja) * 2000-07-10 2002-01-25 Fuji Xerox Co Ltd 情報処理装置
CA2458199A1 (en) * 2001-08-16 2003-02-27 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
DE10347975B4 (de) 2002-10-24 2008-10-09 Siemens Ag Einrichtung der programmierbaren Logik
JP4011007B2 (ja) * 2003-01-15 2007-11-21 三洋電機株式会社 リコンフィギュラブル回路を備えた集積回路装置および処理装置
DE102004044976A1 (de) * 2004-09-16 2006-03-30 Siemens Ag Rechnereinrichtung mit rekonfigurierbarer Architektur

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Hoffmann, R. et al.: GCA: Global Cellular Automata. A Flexible Parallel Model. In: V. Malyshkin (Ed.): PaCT 2001, LNCS 2127, pp. 66.73, Springer-Verlag Berlin Heidelberg 2001 *
MACIAS, N.J.: "Ring Around the PIG, A parallel GA with Only Local Interactions Coupled with a Self-R econfigurable Hardware Platform to Implement an O( 1) Evolutionary Cycle for Evolvable Hardware"; & I n: Proceedings of the 1999 Congress on Evolutionar y Computation, Washington, DC, USA, 1999, Vol. 2, pp. 1067-1075; MACIAS, N.L.: "The PIG Paradigm: "T he Design and Use of a Massively Parallel Fine Gra ined Self-Reconfigurable Infinitely Scalable Archi tecture". In: Proceedings of the First NASA/DoD Wo rkshop on Evolvable Hardware, Pasadena, CA, USA, 1 999, pp. 175-180; Hoffmann, R. et al.: GCA: Global Cellular Automata. A Flexible Parallel Model. In: V. Malyshkin (Ed.): PaCT 2001, LNCS 2127, pp. 66. 73, Springer-Verlag Berlin Heidelberg 2001
MACIAS, N.J.: "Ring Around the PIG, A parallel GA with Only Local Interactions Coupled with a Self-Reconfigurable Hardware Platform to Implement an O(1) Evolutionary Cycle for Evolvable Hardware" In: Proceedings of the 1999 Congress on Evolutionary Computation, Washington, DC, USA, 1999, Vol. 2, pp. 1067-1075 *
MACIAS, N.L.: "The PIG Paradigm: "The Design and Use of a Massively Parallel Fine Grained Self-Reconfigurable Infinitely Scalable Architecture". In: Proceedings of the First NASA/DoD Workshop on Evolvable Hardware, Pasadena, CA, USA, 1999, pp. 175- 180 *

Also Published As

Publication number Publication date
CN100388264C (zh) 2008-05-14
US7352205B2 (en) 2008-04-01
WO2005078599A1 (de) 2005-08-25
JP2007522571A (ja) 2007-08-09
DE102005005073A1 (de) 2005-09-08
JP5027515B2 (ja) 2012-09-19
US20070171101A1 (en) 2007-07-26
JP2012074051A (ja) 2012-04-12
CN1918560A (zh) 2007-02-21

Similar Documents

Publication Publication Date Title
DE102005005073B4 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
DE60100476T2 (de) Unterstützung mehrerer konfigurationszustände eines fpga mittels eines auf dem integrierten schaltkreis dafür vorgesehenen prozessors
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
EP1222739B1 (de) Rekonfigurierbares gate-array
DE69534812T2 (de) Programmierbare logische Vorrichtung, die mehr als eine Konfiguration speichert, und Mittel zum Umschalten der Konfiguration
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
DE60216938T2 (de) Gleichzeitiges durchsuchen verschiedener tabellen in einem inhaltsadressierbaren speicher
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
WO2002029600A2 (de) Zellenarordnung mit segmentierterwischenzellstruktur
DE19704044A1 (de) Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine
DE4107889A1 (de) Halbleiterspeichereinrichtung mit mehreren ports
EP1599794B1 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
DE3114921A1 (de) Datenverarbeitungssystem
EP1789889B1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten
WO2001065829A1 (de) Verfahren und vorrichtung zum auslesen von bilddaten eines teilbereichs eines bildes
DE2121490A1 (de) Orthogonaler Datenspeicher
DE2459476C3 (de)
DE102004006769B3 (de) Auslesevorrichtung
DE10347975B4 (de) Einrichtung der programmierbaren Logik
DE2112637B2 (de) Komplexe schaltungsanordnung aus einer vielzahl untereinander verschalteter integrierter schaltkreise
DE602004005806T2 (de) Serieller Speicher mit Mitteln zur Integration eines erweiterten Speicherfeldes
DE2024584B2 (de) Steuereinrichtung für eine allgemeine Datenverarbeitungseinrichtung
DE102015121128B4 (de) Verfahren und Vorrichtung zum beschleunigten Zugriff auf Signale eines programmierbaren Logikbausteins
EP1116127B1 (de) Programmgesteuerte einheit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee