-
Die
Erfindung bezieht sich auf anwenderprogrammierbare Vorrichtungen.
-
Insbesondere
bezieht sich die Erfindung auf eine solche Vorrichtung, die aufweist:
eine Vielzahl von Verarbeitungsvorrichtungen; eine Verbindungsmatrix,
die die Verarbeitungsvorrichtungen miteinander verbindet und eine
Vielzahl von Schaltern enthält; eine
Vielzahl von Speicherzellen zum Speichern von Daten, mit denen die
Schalter kontrolliert werden, um die Konfiguration der Verbindungen
der Verbindungsmatrix zu bestimmen.
-
Vorrichtungen,
die vom Anwender programmierbar sind, sind im Stand der Technik
bekannt. Die
US 5,453,706 beschreibt
ein solches von einem Anwender programmierbares Gatter-Feld. Sie
gibt ein Schema an, um den Effekt eines Konfigurations-Bits an Drei-Zustands-Puffern
innerhalb der Zwischenverbindungs-Netzwerk-Struktur der FPGA zu übergehen.
Die
US 5,583,450 lehrt
die Verwendung einer wieder konfigurierbaren, logischen Vorrichtung,
die mehrere Ebenen eines Konfigurationsspeichers besitzt.
-
Die
Probleme, auf die sich die vorliegende Erfindung bezieht, sind diejenigen,
eine flexiblere Verwendung eines Speichers zu schaffenen, um eine höhere Speicherdichte
und eine höhere
Schaltungsdichte zu ermöglichen.
-
Dementsprechend
schafft die vorliegende Erfindung eine durch einen Anwender programmierbare
Vorrichtung, wie sie im Detail in den beigefügten Ansprüchen angegeben ist.
-
Gemäß der vorliegenden
Erfindung wird eine Gattereinrichtung geschaffen, die die Wirkung
der Daten, die in wenigsten einer einer Vielzahl von Gruppen der
Speicherzellen gespeichert sind, auf die Konfiguration der Verbindungen
eines entsprechenden Abschnitts der Verbindungsmatrix isoliert,
so dass die Speicherzellen in dieser Gruppe zum Speichern anderer
Daten verfügbar
sind. Dementsprechend können
die Speicherzellen wahlweise (a) zum Kontrollieren der Zwischenverbindungen
und (b) als Benutzer-Speicher verwendet werden. Durch Vorsehen dieses
Merkmals, unter Verwendung des Konfigurations-Speichers für die Schalter,
kann eine höhere
Speicherdichte erreicht werden.
-
Die
Gattereinrichtung weist vorzugsweise Einrichtungen zum Isolieren
jeder der Speicherzellen in der Gruppe von den Schaltern, die kontrollierbar durch
diese Speicherzellen sind und jeden dieser Schalter auf einen vorbestimmten
Zustand einstellen, auf. Dies ermöglicht eine Isolation, ohne
dass erforderlich ist, dass zusätzliche
Schalter in die Verdrahtung der Verbindungsmatrix eingeführt werden,
was eine Signalausbreitungsverzögerung
erhöhen
und so die Schaltungsgeschwindigkeit reduzieren würde.
-
Das
letztere Merkmal kann in Vorrichtungen vorgesehen sein, die nicht
erfordern, dass Speicherzellen in Gruppen isoliert werden.
-
Dementsprechend
können,
wenn isoliert ist, die Schalter noch eine vorbestimmte Verbindung
in der Verbindungsmatrix erzielen, allerdings können sie alle auf "aus" gesetzt sein.
-
Die
Gattereinrichtung weist vorzugsweise, für jede Speicherzelle, ein jeweiliges
Gatter auf, das Eingänge
besitzt, die mit der Speicherzelle und mit einem Steuersignal verbunden
sind, und mit einem Ausgang, der mit dem oder jedem Schalter, der
durch die Speicherzelle kontrolliert werden kann, verbunden ist.
Die Verwendung eines Gatters stellt sicher, dass der Schalter durch
ein gut definiertes, logisches Niveau, zu allen Zeitpunkten, kontrolliert
wird, ob er nun durch die Speicherzelle oder das Steuersignal kontrolliert
wird. Jedes Gatter kann für
vier Transistoren vorgesehen sein und einer der Transistoren jedes Gatters
kann gemeinsam für
eine Vielzahl von Gattern sein, was demzufolge ermöglicht,
dass eine erhöhte
Schaltungsdichte erreichbar ist.
-
Die
Gattereinrichtung weist vorzugsweise eine Einrichtung zum Isolieren
jedes der Schalter in der Gruppe von dem Rest der Verbindungsmatrix
auf.
-
Mindestens
einige der Zwischenverbindungen, vorgesehen durch die Verbindungsmatrix,
können
in der Form von Mehrfachbit-Bussen vorgesehen sein, wobei solche
der Schalter für
die Busse jeweils eine Vielzahl von Schaltelementen jeweils für ein entsprechendes
Bit des Busses umfasst.
-
Die
Positionen der Speicherzellen sind vorzugsweise über die Vorrichtung im Wesentlichen
in dem gleichen Maß verteilt
wie die Schalter, und jede der Speicherzellen ist, angrenzend an
den Schalter oder an Schalter, steuerbar durch die Speicherzelle, angeordnet,
was demzufolge ermöglicht,
dass eine hohe Schaltungsdichte erreicht werden kann.
-
Eine
spezifische Ausführungsform
der vorliegenden Erfindung wird nun, anhand eines Beispiels, unter
Bezugnahme auf die beigefügten
Zeichnungen beschrieben, in denen:
-
1 stellt einen Teil eines
Prozessorfelds dar, das sechs Schaltabschnitte und die Stellen von sechs
arithmetischen, logischen Einheiten zeigt;
-
2 zeigt ein Diagramm eines
Teils der Anordnung, dargestellt in 1,
in einem größeren Maßstab, einen
der Schaltabschnitte und eine der Stellen der arithmetischen, logischen
Einheiten darstellend;
-
3 stellt einen Teil des
Prozessorfelds, dargestellt in 1,
in einem kleineren Maßstab
dar, die Stellen der arithmetischen, logischen Einheiten und von "vertikalen" Bussen, die sich
darüber
erstrecken, darstellend;
-
4 ist ähnlich zu 3, die allerdings "horizontale" Busse darstellt, die sich über die
Stellen der arithmetischen, logischen Einheiten erstrecken;
-
5 stellt die Zwischenverbindungen
zwischen den Bussen der 2, 3 und 4 an der Stelle einer der arithmetischen,
logischen Einheiten dar;
-
6A stellt im Detail die
Schaltung eines Typs eines programmierbaren Schalters in den Umschaltabschnitten,
zur Verbindung eines Paars von 4-Bit-Bussen, die einander kreuzen,
dar;
-
6B stellt im Detail die
Schaltung eines anderen Typs eines programmierbaren Schalters in den
Umschaltabschnitten, zum Verbinden eines Paars von 4-Bit-Bussen,
die einander Ende an Ende treffen, dar;
-
6C stellt im Detail die
Schaltung eines anderen Typs eines programmierbaren Schalters in den
Umschaltabschnitten, zur Verbindung von Träger-Bit-Bussen, dar;
-
7 stellt die Schaltung einer
Reihe von NOR-Gattern dar, die in den programmierbaren Schaltern
der 5 und 6 verwendet werden können;
-
8 stellt eine Modifikation
der Schaltung der 7 dar;
-
9 stellt einen Puffer und
ein Register dar, die in jedem Umschaltabschnitt verwendet werden können;
-
10 zeigt eine schematische
Zeichnung, die darstellt, wie Freigabesignale zu den programmierbaren
Schaltern in den Umschaltabschnitten hin verteilt werden können; und
-
11 stellt in weiterem Detail
die Schaltung der Anordnung, dargestellt in 10, dar.
-
In
der nachfolgenden Beschreibung sind die Ausdrücke "horizontal", "vertikal", "Norden", "Süden", "Osten" und "Westen" dazu verwendet worden,
um beim Verständnis
von relativen Richtungen zu unterstützen, allerdings ist deren
Verwendung nicht dahingehend vorgesehen, irgendeine Beschränkung der absoluten
Orientierung der Ausführungsform
der Erfindung aufzuerlegen.
-
Das
Prozessorfeld, das die Ausführungsform der
Erfindung bildet, ist in einer integrierten Schaltung vorgesehen.
An einem Niveau ist das Prozessorfeld durch ein rechteckiges (und
bevorzugt quadratisches) Feld aus "Kacheln 10" gebildet, wobei eines davon, durch
eine dicke Linie in 1 umgeben, dargestellt
ist. Irgendeine geeignete Anzahl von Kacheln kann eingesetzt werden,
zum Beispiel in einem 16 × 16,
32 × 32
oder 64 × 64
Feld. Jede Kachel 10 ist rechtwinklig (und vorzugsweise
quadratisch) und ist in vier Schaltungsbereiche unterteilt. Es ist
für diese
Kacheln bevorzugt, dass sie logisch ein Quadrat sind (um eine Symmetrie
in einer Verbindung zu erzielen), obwohl es von geringerer Bedeutung
ist, dass sie physikalisch quadratisch sind (dies kann einen bestimmten
Vorteil bei einem Erzielen einer Symmetrie in der Zeitabstimmung
haben, allerdings wird dies allgemein weniger wahrscheinlich sein, dass
es von Bedeutung ist). Zwei der Schaltungsbereiche 12,
die diagonal in der Kachel 10 gegenüberliegend sind, bilden die
Stellen für
zwei arithmetische, logische Einheiten ("ALUs").
Die anderen zwei Schaltungsbereiche, die diagonal gegenüberliegend
in der Kachel 10 sind, liefern die Stellen für ein Paar
von Umschaltabschnitten 14.
-
Wie
die 1 und 2 zeigen, besitzt jede ALU ein
erstes Paar von 4-Bit-Eingängen a,
die direkt innerhalb der ALU verbunden sind, ein zweites Paar von
4-Bit-Eingängen b,
die auch direkt innerhalb der ALU verbunden sind, und vier 4-Bit-Ausgänge f, die direkt
innerhalb der ALU verbunden sind. Jede ALU besitzt auch ein unabhängiges Paar
von 1-Bit-Träger-Eingängen hci,
vci, und ein Paar von 1-Bit-Träger-Ausgängen co,
die direkt und innerhalb der ALU verbunden sind. Die ALU kann Standard-Operationen
in Bezug auf die Eingangssignale a, b, hci, vci durchführen, um
die Ausgangssignale f, co, zu erzeugen, beispielsweise Addieren,
Subtrahieren, AND, NAND, OR, NOR, XOR, NXOR, und Multiplexieren, und
kann optional das Ergebnis der Operation registrieren. Die Befehle
zu den ALUs können
von jeweiligen 4-Bit-Speicher-Zellen geliefert werden, deren Werte über die "H-Baum" Struktur, die nachfolgend beschrieben
ist, eingestellt sein kann, oder können auf dem Bus-System geliefert
werden, das nachfolgend beschrieben werden wird.
-
Auf
dem Niveau, dargestellt in den 1 und 2, besitzt jeder Umschaltabschnitt 14 acht
Busse, die sich darüber
horizontal erstrecken, und acht Busse, die sich darüber vertikal
erstrecken, was demzufolge ein rechteckiges 8 × 8 Feld aus 64 Kreuzungspunkten
bildet, die in 2 mit
kartesischen Koordinaten nummeriert worden sind. Alle Busse besitzen
eine Breite von vier Bits, mit der Ausnahme des Träger-Busses
vc bei X = 4 und des Träger-Busses
hc bei Y = 3, die eine Breite von einem Bit haben. An vielen der
Kreuzungspunkten ist ein programmierbarer 4-Gang-Schalter 16 vorgesehen,
der wahlweise mit zwei Bussen an diesem Kreuzungspunkt verbunden werden
kann. An einigen der Kreuzungspunkten ist ein programmierbarer 4-Gang-Schalter 18 vorgesehen,
der wahlweise zwei Busse verbinden kann, die sich Ende an Ende an
diesem Kreuzungspunkt treffen, ohne irgendeine Verbindung mit dem
Bus unter rechten Winkeln dazu. An dem Kreuzungspunkt bei (4, 3)
ist ein programmierbarer Schalter 20 (zum Beispiel so,
wie dies in 6C dargestellt
ist) vorgesehen, der wahlweise die Trägerbusse vc, hc verbinden kann,
die sich unter rechten Winkeln an diesem Punkt kreuzen.
-
Die
horizontalen Busse in dem Schaltabschnitt 14 werden nun
beschrieben.
-
Bei
Y = 0 sind Busse h2s durch programmierbare Schalter 16 mit
den vertikalen Bussen bei X = 0, 1, 2, 5, 6 verbindbar. Die Busse
h2s besitzen eine Länge
von zwei Kacheln und sind Ende an Ende in jedem anderen Umschaltabschnitt 14 durch
einen programmierbaren Schalter 18 bei (4, 0) verbindbar.
-
Bei
Y = 1 ist ein Bus, der sich von einem Eingang b der ALU nach Westen
erstrecken kann, durch Schalter 16 mit den vertikalen Bussen
bei X = 0, 1, 2, 3 verbindbar. Auch ist ein Bus fw, der sich von
einem Ausgang f der ALU nach Osten erstreckt, durch Schalter 16 mit
den vertikalen Bussen bei X = 5, 6, 7 verbindbar. Die Enden der
Busse be, fw sind durch einen programmierbaren Schalter 18 bei
(4, 1) verbindbar.
-
Bei
Y = 2 ist ein Bus hregs durch programmierbare Schalter 16 mit
den vertikalen Bussen bei X = 1, 2, 3, 4, 5, 6, 7 verbindbar.
-
Bei
Y = 3 erstreckt sich ein Bus hco von dem Träger-Ausgang co der ALU nach
Westen zu einem programmierbaren Schalter 20 bei (4, 3),
der den Bus hco (a) mit einem Träger-Bus
hci, der sich zu dem Träger-Eingang
hci der ALU nach Osten erstreckt, oder (b) einem Träger-Bus
vci, der sich zu dem Träger-Eingang
vci der ALU nach Süden
erstreckt, verbindet.
-
Bei
Y = 4 ist ein Bus hregn durch programmierbare Schalter 16 mit
den vertikalen Bussen bei X = 0, 1, 2, 3, 5, 6 verbindbar.
-
Bei
Y = 5 sind Busse h1 mit den vertikalen Bussen bei X = 0, 1, 2, 3,
5, 6, 7 verbindbar. Die Busse h1 besitzen eine Länge von einer Kachel und sind Ende
an Ende, in jedem Umschaltabschnitt, 14 durch einen programmierbaren
Schalter 18 bei (4, 5) verbindbar.
-
Bei
Y = 6 ist ein Bus fe der sich von einem Ausgang f der ALU nach Westen
erstreckt, durch Schalter 16 mit den vertikalen Bussen
bei X = 0, 1, 2, 3 verbindbar. Auch ist ein Bus aw, der sich von
einem Eingang a der ALU nach Osten erstreckt, durch Schalter 16 mit
den vertikalen Bussen bei X = 5, 6, 7 verbindbar. Die Enden der
Busse fe, aw sind durch einen programmierbaren Schalter 18 bei
(4, 6) verbindbar.
-
Bei
Y = 7 sind Busse h2n durch programmierbare Schalter 16 mit
den vertikalen Bussen bei X = 1, 2, 3, 6, 7 verbindbar. Die Busse
h2n besitzen eine Länge
von zwei Kacheln und sind Ende an Ende in jedem anderen Umschaltabschnitt 14 durch
einen programmierbaren Schalter 18 bei (4, 7), gestaffelt
in Bezug auf die programmierbaren Schalter 18, die die Busse
h2s bei (4, 2) verbinden, verbindbar.
-
Die
vertikalen Busse in dem Umschaltabschnitt 14 werden nun
beschrieben.
-
Bei
X = 0 sind Busse v2w durch programmierbare Schalter 16 mit
den horizontalen Bussen bei Y = 0, 1, 4, 5, 6 verbindbar. Die Busse
v2w besitzen eine Länge
von zwei Kacheln und sind Ende an Ende in jedem anderen Umschaltabschnitt 14 durch einen
programmierbaren Schalter 18 bei (0, 3) verbindbar.
-
Bei
X = 1 ist ein Bus fn, der sich von einem Ausgang f der ALU nach
Süden erstreckt,
durch programmierbare Schalter 16 mit den horizontalen
Bussen bei Y = 0, 1, 2, verbindbar. Auch ist ein Bus bs, der sich
von einem Eingang b der ALU nach Norden erstreckt, durch Schalter 16 mit
den horizontalen Bussen bei Y = 4, 5, 6, 7 verbindbar. Die Enden
der Busse fn, bs sind durch einen programmierbaren Schalter 18 bei
(1, 3) verbindbar.
-
Bei
X = 2 sind Busse v1 mit den horizontalen Bussen bei Y = 0, 1, 2,
4, 5, 6, 7 verbindbar. Die Busse v1 besitzen eine Länge von
einer Kachel und sind Ende an Ende in jedem Umschaltabschnitt 14 durch einen
programmierbaren Schalter 18 bei (2, 3) verbindbar.
-
Bei
X = 3 ist ein Bus vregw durch programmierbare Schalter 16 mit
den horizontalen Bussen bei Y = 1, 2, 4, 5, 6, 7 verbindbar.
-
Bei
X = 4 erstreckt sich ein Bus vco von dem Träger-Ausgang co der ALU nach
Norden zu dem programmierbaren Schalter 20 bei (4, 3),
der den Bus vco (a) mit dem Träger-Bus hci, der sich
zu dem Träger-Eingang
hci der ALU nach Osten erstreckt, oder (b) mit dem Träger-Bus
vci, der sich zu dem Träger-Eingang
vci der ALU nach Süden
erstreckt, verbindet.
-
Bei
X = 5 ist ein Bus vrege durch programmierbare Schalter 16 mit
den horizontalen Bussen bei Y = 0, 1, 2, 4, 5, 6 verbindbar.
-
Bei
X = 6 ist ein Bus, der sich von einem Eingang a der ALU nach Süden erstreckt,
durch Schalter 16 mit den horizontalen Bussen bei Y = 0,
1, 2 verbindbar. Auch ist ein Bus fs, der sich von einem Ausgang
f der ALU nach Norden erstreckt, durch programmierbare Schalter 16 mit
den horizontalen Bussen bei Y = 4, 5, 6, 7 verbindbar. Die Enden
der Busse an, fs sind durch einen programmierbaren Schalter 18 bei
(6, 3) verbindbar.
-
Bei
X = 7 sind Busse v2e durch programmierbare Schalter 16 mit
den horizontalen Bussen bei Y = 1, 2, 5, 6, 7 verbindbar. Die Busse
v2e besitzen eine Länge
von zwei Kacheln und sind Ende an Ende in jedem anderen Umschaltabschnitt 14 durch
einen programmierbaren Schalter 18 bei (7, 3), gestaffelt
in Bezug auf die programmierbaren Schalter 18, die die Busse
v2w bei (0, 3) verbinden, verbindbar.
-
Wie
in 2 dargestellt sind,
sind die Busse bs, vco, fs mit einem Eingang b, einem Ausgang co und
einem Ausgang f, jeweils, der ALU nach Norden von dem Umschaltabschnitt 14 verbunden.
Auch sind die Busse fe, hco, be mit dem Ausgang f, dem Ausgang co
und dem Eingang b der ALU, jeweils, nach Westen von dem Umschaltabschnitt 14 verbunden. Weiterhin
sind die Busse aw, hci, fw mit dem Eingang a, dem Eingang ci und
dem Ausgang f, jeweils, der ALU nach Osten von dem Umschaltabschnitt 14 verbunden.
Weiterhin sind die Busse fn, vci, an mit dem Ausgang f, dem Eingang
ci und dem Eingang a, jeweils, der ALU nach Süden von dem Umschaltabschnitt 14 verbunden.
-
Zusätzlich zu
diesen Verbindungen sind die Busse vregw, vrege über jeweilige, programmierbare Schalter 18 mit
4-Bit-Verbindungspunkten vtsw, vtse, jeweils (dargestellt durch
Kreuze in 2), in dem Bereich 12 der
ALU nach Norden von dem Umschaltabschnitt 14 verbunden.
Auch sind die Busse hregs, hregn über jeweilige, programmierbare
Schalter 18 mit 4-Bit-Verbindungspunkten htse, htne, jeweils,
in dem Bereich 12 der ALU nach Westen von dem Umschaltabschnitt 14 verbunden.
Weiterhin sind die Busse hregs, hregn über jeweilige, programmierbare Schalter 18 mit
4-Bit-Verbindungspunkten htsw, htnw, jeweils, in dem Bereich 12 der
ALU nach Osten von dem Umschaltabschnitt 14 verbunden.
Weiterhin sind die Busse vregw, vrege über jeweilige, programmierbare
Schalter 14 mit 4-Bit-Verbindungspunkten vtnw, vtne, jeweils,
in dem Bereich 12 der ALU nach Süden von dem Umschaltabschnitt 14 verbunden. Diese
Verbindungspunkte vtnw, vtne, htne, htse, vtse, vtsw, htsw, htnw
werden nachfolgend weiter im Detail unter Bezugnahme auf die 3 bis 5 beschrieben.
-
Auch
besitzen, wie in 2 dargestellt
ist, die Busse hregn, vrege, hregs, vregw jeweilige 4-Bit-Verbindungspunkte 22 (dargestellt
durch kleine Quadrate in 2),
die nachfolgend in weiterem Detail in Bezugnahme auf 9 beschrieben werden.
-
3 stellt ein Niveau von
Zwischenverbindungen zwischen den Stellen der arithmetischen, logischen
Einheiten dar, die durch Quadrate mit abgerundeten Ecken dargestellt
sind. Eine Gruppe von vier 4-Bit-Bussen v8, v4w, v4e, v16 erstreckt
sich vertikal über
jede Spalte von ALU-Stellen 12. Der am weitesten links
liegende Bus v8 in jeder Gruppe liegt in Segmenten vor, von denen
jedes eine Länge
im Wesentlichen von acht Kacheln besitzt. Der linke, vorletzte Bus
v4w in jeder Gruppe liegt in Segmenten vor, von denen jedes eine
Länge im
Wesentlichen von vier Kacheln besitzt. Der rechte, vorletzte Bus v4e
in jeder Gruppe liegt in Segmenten vor, wiederum jeweils mit einer
Länge im
Wesentlichen von vier Kacheln, allerdings um zwei Kacheln von dem
linken, vorletzten Bus v4w versetzt. Der am weitesten rechts liegende
Bus v16 in jeder Gruppe liegt in Segmenten vor, jeweils mit einer
Länge im
Wesentlichen von sechzehn Kacheln. An der oberen Kante des Felds, das
an der Oberseite der 4 vorhanden
ist, und an der unteren Kante können
die Längen
der Segmente leicht größer als
oder kürzer
als so, wie dies vorstehend spezifiziert ist, sein.
-
Wie
die 3 und 5 zeigen, sind dort, wo jede
Gruppe von vier Bussen v8, v4w, v4e, v16 jede ALU-Stelle 12 kreuzt,
vier 4-Bit-Laschen-Verbindungen an den Verbindungspunkten htnw,
htsw, htse, htne hergestellt. Die Enden der Bus-Segmente erhalten
eine Priorität
dahingehend, dass sie über
eine Verbindung mit einem Bus-Segment, das die ALU-Stelle kreuzt,
so verbunden sind.
-
Ähnlich erstreckt
sich, wie in den 4 und 5 dargestellt ist, eine Gruppe
von vier 4-Bit-Bussen h8, h4n, h4s, h16 horizontal über jede
Reihe von ALU-Stellen 12. Der oberste Bus h8 in jeder Gruppe liegt
in Segmenten vor, jeweils mit einer Länge im Wesentlichen von acht
Kacheln. Der oberste, vorletzte Bus h4n in jeder Gruppe liegt in
Seg menten vor, jeweils mit einer Länge im Wesentlichen von vier
Kacheln. Der unterste, vorletzte Bus h4s in jeder Gruppe liegt in
Segmenten vor, wiederum jeweils mit einer Länge im Wesentlichen von vier
Kacheln, allerdings um zwei Kacheln von dem obersten, vorletzten
Bus h4n versetzt. Der unterste Bus h16 in jeder Gruppe liegt in
Segmenten vor, jeweils mit einer Länge im Wesentlichen von sechzehn
Kacheln. An der linksseitigen Kante des Felds, die sich links in
der 4 befindet, und
an dem rechtsseitigen Ende können
die Längen
der Segmente leicht größer als
oder kürzer als
so, wie dies vorstehend spezifiziert ist, sein. Dort, wo jede Gruppe
von Bussen h8, h4n, h4s, h16 jede ALU-Stelle 12 kreuzt,
sind weitere vier 4-Bit-Laschen-Verbindungen an den Verbindungspunkten vtnw,
vtsw, vtse, vtne vorgenommen. Die Enden der Bus-Segmente erhalten
eine Priorität
dadurch, dass sie über
eine Verbindung mit einem Bus-Segment verbunden sind, das die ALU-Stelle
kreuzt.
-
Wie
in 5 dargestellt ist,
sind die Verbindungspunkte htnw, htsw, htne, htse über programmierbare
Schalter mit den Bussen hregn, hregs der Umschaltabschnitte nach
Westen und Osten der ALU-Stelle verbunden. Auch sind die Verbindungspunkte
vtnw, vtne, vtsw, vtse über
programmierbare Schalter mit den Bussen vregw, vrege der Umschaltabschnitte
nach Norden und Süden
der ALU-Stelle verbunden.
-
Die
programmierbaren Verbindungen 16 zwischen Paaren von 4-Bit-Bussen,
die sich unter rechten Winkeln kreuzen, werden nun unter Bezugnahme auf 6A beschrieben. Die Leiter
der horizontalen Busse sind als x0, x1, x2, x3 bezeichnet, und die
Leiter der vertikalen Busse sind mit y0, y1, y2, y3 bezeichnet.
Zwischen jedem Paar von Leitern derselben Bit-Signifikanz ist ein
jeweiliger Transistor 160, 161, 162, 163 vorgesehen.
Die Gatter der Transistoren 160, 161, 162, 163 sind
zusammen mit dem Ausgang eines NOR-Gatters 16g verbunden,
das als seine zwei Eingänge
ein invertiertes ENABLE Signal von einer Einzel-Bit-Speicher-Zelle
aufnimmt, das gemeinsam durch eine Gruppe der Schalter geteilt werden
kann, und den invertierten Inhalt einer Einzel-Bit-Speicher-Zelle 24 aufnimmt.
Dementsprechend werden nur dann, wenn das ENABLE Signal hoch ist
und der Inhalt der Speicherzelle 24 hoch ist, die Leiter
x0, x1, x2, x3 über
die Transistoren 160, 161, 162, 163,
jeweils, mit den Leitern y0, y1, y2, y3 verbunden.
-
Die
programmierbaren Verbindungen 18 zwischen Paaren von 4-Bit-Bussen,
die sich gegenseitig Ende an Ende in einer Linie treffen, werden
nun unter Bezugnahme auf die 6B beschrieben.
Die Leiter eines Busses sind als x10, x11, x12, x13 bezeichnet, und
die Leiter des anderen Busses sind als x20, x21, x22, x23 bezeichnet.
Zwischen jedem Paar von Leitern derselben Bit-Signifikanz ist ein
jeweiliger Transistor 180, 181, 182, 183 vorgesehen.
Die Gatter der Transistoren 180, 181, 182, 183 sind
zusammen mit dem Ausgang eines NOR-Gatters 18g verbunden, das
als seine zwei Eingänge
ein invertiertes ENABLE Signal von einer Einzel-Bit-Speicherzelle,
die gemeinsam durch eine Gruppe der Schalter geteilt sein kann,
und den invertierten Inhalt einer Einzel-Bit-Speicherzelle 24 aufnimmt.
Dementsprechend werden nur dann, wenn das ENABLE Signal hoch ist,
und der Inhalt der Speicherzelle 24 hoch ist, die Leiter
x10, x11, x12, x13 über
die Transistoren 180, 181, 182, 183,
jeweils, mit den Leitern x20, x21, x22, x23, jeweils, verbunden.
-
Die
programmierbaren Verbindungen 20 zwischen den Träger-Leitern
hco, vco, hci, vci werden nun unter Bezugnahme auf 6C beschrieben. Der horizontale Träger-Ausgangs-Leiter hco
ist mit dem horizontalen Träger-Eingangs-Leiter
hci und dem vertikalen Träger-Eingangs-Leiter
vci über
Transistoren 20hh, 20hv, jeweils, verbunden. Weiterhin
ist der vertikale Träger-Ausgangs-Leiter
vco mit dem vertikalen Träger-Eingangs-Leiter vci und dem
horizontalen Träger-Eingangs-Leiter
hci über
Transistoren 20vv, 20vh, jeweils, verbunden. Die
Gatter der Transistoren 20hh, 20vv sind zusammen
mit dem Ausgang eines Invertierers 20i verbunden, und die
Gatter der Transistoren 20hv, 20vh und der Eingang
zu dem Invertierer 20i sind mit dem Ausgang eines NOR-Gatters 20g verbunden.
Das NOR-Gatter 20g nimmt als seine zwei Eingänge ein
invertiertes ENABLE Signal von einer Einzel-Bit-Speicherzelle, die gemeinsam
durch eine Gruppe der Schalter geteilt sein kann, und den invertierten
Inhalt einer Einzel-Bit-Speicherzelle 24 auf. Dementsprechend
werden, wenn das ENABLE Signal hoch ist, die Leiter hco, vco mit
den Leitern hci, vci, jeweils, oder mit den Leitern vci, hci, jeweils,
in Abhängigkeit
von dem Inhalt der Speicherzelle 24, verbunden.
-
Es
wird ersichtlich werden, dass jeder der umschaltbaren Verbindungen 16, 18, 20,
beschrieben unter Bezugnahme auf die 6A bis 6C, ein NOR-Gatter 16g, 18g, 20g umfasst.
Wie in 7 dargestellt
ist, ist ein NOR-Gatter 16g typischerweise durch vier Transistoren 16g1, 16g2, 16g3, 16g4 verbunden,
wobei zwei, 16g1, 16g3, davon auf das invertierte
ENABLE Signal ansprechen, und wobei zwei, 16g2, 16g4,
davon auf den invertierten Inhalt der Speicherzelle 24 ansprechen.
In der Ausführungsform
der Erfindung ist es erwünscht,
dass eine Gruppe der umschaltbaren Sammelstellen 16, 18, 20 gemeinsam
gesperrt werden kann, ohne irgendein Erfordernis, nur einen Teil
einer solchen Gruppe zu sperren. Eine solche Gruppe könnte aus
allen der umschaltbaren Verbindungen in einem Umschaltabschnitt 14,
allen der umschaltbaren Verbindungen in den zwei Umschaltabschnitten 14 in
einer bestimmten Kachel oder allen der umschaltbaren Verbindungen
in einem größeren Bereich
des Felds bestehen. In diesem Fall kann der Transistor 16g1 gemeinsam mit
allen umschaltbaren Verbindungen 16, 18, 20 in der
Gruppe, wie dies in der 8 dargestellt
ist, aufgebaut sein. Dies ermöglicht
eine Einsparung von 25% oder weniger in der Zahl von Transistoren,
die für
die Gatter erforderlich sind, fordert allerdings eine weitere Leiter-Verbindung
des Gatters, wie es in 8 dargestellt
ist.
-
Ein
Fachmann auf dem betreffenden Fachgebiet wird erkennen, dass die
Strukturen, die in den 7 und 8 gezeigt sind, für eine Optimierung
modifiziert werden können.
Zum Beispiel würde
die Anordnung der 7 und 8 nicht vollständig Speicherzellen 24,
ausgelegt so, um sowohl einen gespeicherten Wert als auch ein Komplementär von diesem
gespeicherten Wert zurückzuführen, ausnutzen.
Die Verwendung des Komplementärs,
erhalten von solchen Zellen 24, könnte verwendet werden, um irgendein Erfordernis
für sowohl
das ENABLE als auch das invertierte ENABLE Signal zu vermeiden,
um zu allen umschaltbaren Verbindungen in einer Gruppe, wie in dem
Fall der 8, geführt zu werden.
-
Wie
vorstehend unter Bezugnahme auf die 1 und 2 erwähnt ist, sind, an jedem Umschaltabschnitt 14,
die Busse hregn, hregs, vregw, vrege durch jeweilige 4-Bit-Verbindungen 22 mit
einem Register oder einer Pufferschaltung verbunden, und diese Schaltung
wird nun in weiterem Detail unter Bezugnahme auf 9 beschrieben. Die vier Verbindungen 22 sind
jeweils mit jeweiligen Eingängen
eines Multiplexierers 26 verbunden. Der Multiplexierer 26 wählt einen
der Eingänge
als einen Ausgang aus, der zu einem Register oder Puffer 28 zugeführt wird. Der
Ausgang des Registers oder Puffers 28 wird zu vier Drei-Zustand-Puffern 30s, 30w, 30n, 30e zugeführt, die
zurück
zu den Verbindungen 20 mit den Bussen hregs, vregw, hregn,
vrege, jeweils, verbunden sind. In dem Fall, bei dem ein Puffer 28 verwendet
wird, wird das 4-Bit-Signal auf einem ausgewählten einen der Busse hregs,
vregw, hregn, vrege verstärkt
und zu einem anderen ausgewählten
einen der Busse hregs, vregw, hregn, vrege zugeführt. In dem Fall, bei dem ein
Register 28 verwendet ist, wird das 4-Bit-Signal auf einem
ausgewählten
einen der Busse hregs, vregw, hregn, vrege verstärkt und zu einem ausgewählten Bus
hregs, vregw, hregn, vrege nach der nächsten, aktiven Taktflanke
zugeführt.
-
Es
wird ersichtlich werden, dass die Anordnung, die vorstehend beschrieben
ist, eine große
Flexibilität
dabei liefert, die Signale um und über das Feld zu führen. Mit
einer geeigneten Einstellung der Schalter 16, 18, 20,
unter Verwendung der Speicherzellen 24, und mit einem geeigneten
Einstellen der Multiplexierer 26 und der Register oder
Puffer 28, können
Signale über
große
Entfernungen, primär
unter Verwendung der Busse v16, h16, v8, h8, v4e, v4w, h4n, h4s,
von der Kante des Felds zu einer bestimmten ALU, zwischen ALUs,
und von einer bestimmten ALU zu der Kante des Felds, geschickt werden.
Diese Busse können
zusammen in einer Linie oder unter rechten Winkeln, durch die Umschaltabschnitte 14,
mit einer Verstärkung
durch die Register oder Puffer 28, um Propagationsverzögerungen
zu verringern, und mit Pipeline-Stufen, eingeführt durch die Register 28,
verbunden sein. Auch können
diese Busse teilweise entlang deren Längen mit Anschluss abgegriffen
sein, so dass die Stelle der ALUs, um eine bestimmte Verarbeitungsoperation
durchzuführen,
nicht vollständig
durch die Längen
der Busse vorgegeben ist, und so, dass Signale zu mehr als einer
ALU verteilt werden können.
Weiterhin können die
Busse mit kürzerer
Länge,
die unter Bezugnahme auf die 1 und 2 beschrieben sind, dazu
verwendet werden, Signale zwischen den Umschaltabschnitten 14 und
den ALUs zu führen,
und um Signale primär über kürzere Entfernungen,
zum Beispiel von einer ALU zu einer angrenzenden ALU, in derselben
Reihe oder Spalte, oder diagonal angrenzend, zu schicken, sogar
obwohl sich die Busse horizontal oder vertikal erstrecken. Wiederum
können
die Register oder Puffer 28 dazu verwendet werden, die
Signale zu verstärken
oder programmierbare Verzögerungen
darin einzubringen.
-
In
der Anordnung, die vorstehend beschrieben ist, sind die Speicherzellen 24 über das
Feld in demselben Umfang wie die Umschaltabschnitte 14 und
die ALU-Stellen 12 verteilt. Jede Speicherzelle 24 ist
angrenzend an den Schalter oder die Schalter, den Multiplexierer,
das Register oder den Puffer, die sie steuert, angeordnet. Dies
ermöglicht,
dass eine hohe Schaltungsdichte erreicht werden kann.
-
Eine
Beschreibung wird nun in Bezug auf die Art und Weise vorgenommen,
in der Daten in die Speicherzellen 24 hineingeschrieben
oder davon gelesen werden können,
die Art und Weise, in der die ENABLE Signale für die programmierbaren Schalter 16, 18, 20 zu
deren Speicherzellen geschrieben werden, die Art und Weise, in der
Befehle, und möglicherweise
Konstanten, zu den ALUs verteilt werden können, und die Art und Weise,
in der andere Steuersignale, wie beispielsweise ein Taktsignal, über das Feld
gesendet wer den. Für
alle diese Funktionen kann eine "H-Baum" Struktur (die per
se bekannt ist) eingesetzt werden, wie dies in 10 dargestellt ist. Wie die 10 und 11 zeigen, werden, um ein ENABLE Signal
zu irgendeiner von 64 Stellen in dem Beispiel, das dargestellt ist,
zu verteilen, das ENABLE Signal 30a und eine 6-Bit-Adresse 32a dafür zu einem
Decodierer 34a zugeführt.
Der Decodierer 34a bestimmt, welche der vier Verzweigungen
davon zu der Adresse führt,
und führt
ein ENABLE Signal 30b zu einem weiteren Decodierer 34b in
dieser Verzweigung, zusammen mit einer 4-Bit-Adresse 32b,
zu den Decodierern 34b, in allen vier Verzweigungen, zu. Der
Decodierer 34b, der das ENABLE Signal 30b empfängt, bestimmt,
welche der vier Verzweigungen davon zu der erforderlichen Adresse
führt,
und führt ein
ENABLE Signal 30c zu einem weiteren Decodierer 34c in
dieser Verzweigung, zusammen mit einer 4-Bit-Adresse 32c,
zu den Decodierern 34c in allen vier Verzweigungen, zu.
Der Decodierer 34c, der das ENABLE Signal 30c empfängt, führt dann
das ENABLE Signal 34d zu der erforderlichen Adresse zu,
wo es in einer Einzel-Bit-Speicherzelle
gespeichert werden kann. Ein Vorteil der H-Baum-Struktur ist derjenige,
dass die Längen
der Signalpfade zu allen Bestimmungen ungefähr gleich sind, was besonders
vorteilhaft in dem Fall des Taktsignals ist.
-
Ein
großer
Vorteil der Anordnung, die vorstehend beschrieben ist, ist derjenige,
dass Gruppen der Speicherzellen 24 in, zum Beispiel, einem
Umschaltabschnitt 14, oder in den zwei Umschaltabschnitten in
einer Kachel, oder in den Umschaltabschnitten in einem Unterfeld
der Kacheln, en bloc durch die invertieren ENABLE Signale so gesperrt
werden können, dass
die Inhalte dieser Speicherzellen nicht die zugeordneten Schalter
beeinflussen. Es ist dann für
diese Speicherzellen 24 möglich, als "Benutzer" Speicher durch eine Anwendung verwendet
zu werden, im Gegensatz dazu, dass sie für eine Konfiguration der Verdrahtung
des Felds verwendet werden.
-
Die
Ausführungsform
der Erfindung ist nur anhand eines Beispiels beschrieben worden,
und viele Modifikationen und Weiterentwicklungen können im
Zusammenhang mit der vorliegenden Erfindung vorgenommen werden.
Zum Beispiel setzt die Ausführungsform
ALUs als die Verarbeitungseinheiten ein, allerdings können andere
Verarbeitungseinheiten zusätzlich
oder alternativ verwendet werden, zum Beispiel Durchsichttabellen,
programmierbare, logische Felder und/oder selbst-enthaltene CPUs, die
in der Lage sind, deren eigene Befehle abzurufen.
-
Weiterhin
ist die Ausführungsform
so beschrieben worden, dass das gesamte Feld durch ALUs und Umschaltabschnitte
abgedeckt ist. Allerdings können
andere Typen eines Abschnitts in dem Feld umfasst sein. Zum Beispiel
könnte
ein Unterfeld aus einer 4 × 4
Anordnung von Kacheln aus ALUs und Umschaltabschnitten, wie es vorstehend
beschrieben ist, aufgebaut sein, und das Feld könnte aus solchen Unterfeldern
und einem Speicher in einem 4 × 4
Feld, oder solchen Unterfeldern und RISC CPUs in einem 4 × 4 Feld,
aufgebaut sein.
-
In
der Ausführungsform,
die vorstehend beschrieben ist, ist jede ALU-Stelle ein Quadrat,
und jeder Umschaltabschnitt ist quadratisch und von derselben Größe wie die
ALU-Stellen, allerdings sollte angemerkt werden, dass die steuerbaren
Schalter 18 in den Register-Bussen vregw, vrege, hregn,
hregs in die quadratische Umrisslinie der ALU-Stellen aufgehen. Die ALU-Stellen müssen nicht
von derselben Größe wie die
Umschaltabschnitte sein, und können insbesondere
kleiner sein, was demzufolge ermöglicht,
dass einer oder mehrere Busse horizontal oder vertikal direkt von
einem Umschaltabschnitt 14 zu einem diagonal angrenzenden
Umschaltabschnitt 14 hindurchführen, zum Beispiel zwischen
den Bussen h2s, h2n oder zwischen den Bussen v2e, v2w verlaufend.
-
In
der Ausführungsform,
die vorstehend beschrieben ist, besitzt jede ALU zwei unabhängige Träger-Eingänge vci,
hci und ein verbundenes Paar von Träger-Ausgängen co. Falls erforderlich,
können die
ALUs so angeordnet werden, um zwei Typen eines Trägers zu
erfüllen:
einen schnellen Träger
zwischen angrenzenden ALUs, die von einem bestimmten Nutzen für Multi-Bit-Addier-Operationen
sein können;
und einen langsamen Träger,
der flexibler weitergeführt
werden kann und von einem besonderen Nutzen für eine digitale, serielle Arithmetik
sein kann. Der schnelle Träger
kann in einer ähnlichen
Art und Weise wie diejenige, die vorstehend in Bezug auf die Zeichnungen
beschrieben ist, angeordnet sein, wogegen der langsame Träger programmierbare
Schalter in den Umschaltabschnitten 14 zwischen dem Träger-Leiter
und bestimmten Bits der 4-Bit-Busse einsetzen könnte.
-
In
der Ausführungsform,
die vorstehend beschrieben ist, sind bestimmte Bit-Breiten, Größen von
dem Umschaltabschnitt und Größen des
Felds erwähnt
worden, allerdings sollte angemerkt werden, dass alle diese Werte
so, wie es geeignet ist, ausgetauscht werden können. Auch sind die programmierbaren
Schalter 16, 18, 20 dahingehend beschrieben worden,
dass sie an bestimmten Stellen in jedem Umschaltabschnitt 14 angeordnet sind,
allerdings können
andere Stellen so, wie dies erforderlich und erwünscht ist, verwendet werden.
-
In
der Ausführungsform,
die vorstehend beschrieben ist, ist das Feld zweidimensional, allerdings
sind die Prinzipien der Erfindung auch auf dreidimensionale Felder,
zum Beispiel durch Vorsehen eines Stapels der Felder so, die vorstehend
beschrieben sind, mit den Umschaltabschnitten in angrenzenden Schichten
in Bezug zueinander gestapelt, anwendbar. Der Stapel könnte nur
zwei Schichten umfassen, allerdings bevorzugt mindestens drei Schichten,
und die Anzahl der Schichten ist vorzugsweise eine Potenz von zwei.
-
In
der Ausführungsform,
die vorstehend beschrieben ist, können die Speicherzellen 24 durch
die Gatter 16g, 18g, 20g von den Schaltern
isoliert sein, die sie steuern, so dass die Speicherzellen für andere Zwecke
verwendet werden können,
das bedeutet, in die "Benutzer-Ebene" versetzt. Die ENABLE
Signal-Speicherzellen können
allerdings nicht auf die Benutzer-Ebene transferiert werden. In
einer alternativen Ausführungsform
können
die Schalter in einem bestimmten Umschaltabschnitt 14 untrennbar
von dem Rest des Feldes durch weitere Schalter in den Bussen an
der Grenze dieses Umschaltabschnitts 14 vorliegen, wobei
die weiteren Schalter durch eine weitere Speicherzelle gesteuert
werden, die nicht zu der Benutzer-Ebene transferiert werden kann.