-
Titel der Erfindung
-
Anordnung zur Orthogonalisierung von Ternärvektorlisten Anwendungsgebiet
der Erfindung Die Erfindung betrifft eine Anordnung zur Orthogonalisierung von Ternärvektorlisten,
die einen Arbeitsspeicher (RAM), einen Zweitoperandenspeicher sowie einen Maskenoperandenspe
icher enthält und die einem Universalrechner oder einer anderen Einrichtung zur
Verarbeitung von Ternärvektorlisten beigeordnet wird, um den Ablauf der Orthogonalisierung
zu beschleunigen.
-
Orthogonale Ternärvektorlisten sind Listen von Vektoren, die ihrerseits
aus Ternärvariablen bestehen. Jede solche Variable kann nur jeweils einen von drei
Werten annehmen (0, 1, -).
-
Eine Ternärvektorliste heißt orthogonal, wenn bei jedem Paar ihrer
Vektoren wenigstens einmal die Kombination 1, 0 bzw. O, 1 auftritt. Orthogonalisierung
bedeutet, aus einer beliebigen Ternärvektorliste eine orthogonale zu erzeugen. Derartige
Ternärvektorlisten eignen sich gut als rechentechnische Basis für die Berechnung
von Testdaten für digitale Schaltungen, zur Analyse von Graphen usw.
-
Charakteristik der bekannten technischen Lösungen Operationen mit
Ternärvektorlisten (einschließlich der Ortilogonalisierung) wurden bisher durch
Programme auf Universalrechnern realisiert. Ein Überblick über die Algorithmen ist
2.ß. in Posthoff/Steinbach: Binäre Gleichungen Algorithmen und Programme (Wissenschaftliche
Schriftenreihe der Technischen llochschule Karl-Marx-Stadt, Ausgabe 1/1979) zu finden.
-
Des weiteren wurde bereits vorgeschlagen, eine Anordnung zur Verarbeitung
von Ternärvektorlisten zu schaffen, die an einen Universalrechner angeschlossen
wird, um typische Abläufe mit wesentlich höherer Geschwindigkeit auszuführen.
-
Mit einer solchen Anordnung kann ein Universalrechner zwar den Markierungsvektor
für die Orthogonalisierung ohne eigene Verknüpfungsoperationen erhalten (es handelt
sich dabei um einen Binärvektor, der die Variablenpositionen kennzeichnet, die bei
der eigentlichen Orthogonalisierung zu modifizieren sind), für die Orthogonalisierung
selbst sind aber umfangreiche Recilenoperationen auszuführen. Da zur Orthogonalisierung
eines Ternärvektors bezüglich einer Zeile einer Ternärvektorliste an die Ternärvektorliste
n Zeilen angefügt werden müssen, wenn der Markierungsvektor n Einsen enthält, ergibt
sich eine beträchtliche Verarbeitungszeit.
-
Ziel der Erfindung Das Ziel der Erfindung besteht darin, die Ausführungszeit
für die eigentlichen Orthogonalisierungsabläufe deutlich zu verringen.
-
Wesen der Erfindung Die Aufgabe der Erfindung besteht darin, eine
Anordnung anzugeben, die in Verbindung mit einem Universalrechner bzw. mit anderen
Einrichtungen zur Verarbeitung von Ternärvektorlisten Orthogonalisierungsabläufe
mit hoher Geschwindigkeit ausführt, so daß in jedem Zugriff zu den Speichermitteln
der gegebenen Verarbeitungseinrichtung während der betreffenden Abläufe stets eine
Nutz-Operation ausgeführt wird.
-
Der Nachteil der vorhandenen bzw. vorgeschlagenen Einrichtungen besteht
darin, daß diese nicht über spezifische Schaltmittel verfügen, so daß die Orthogonalisierung
komplexere Abläufe (durch Programme, Mikroprogramme bzw. sequentielle Steuerung)
erfordert.
-
Erfindungsgemäß wird die Aufgabe durch die in den Patentansprüchen
genannten Schaltungsanordnungen gelöst.
-
Ausführungsbeispiel Im nachstehenden Ausführungsbeispiel zeigen: Fig.
1 das Blockschaltbild der erfindungsgemäßen Anordnung, Fig. 2 eine Darstellung von
Ternärvariablen in einem Maschinenwort, Fig. 3 eine Ausgestaltung des Indexzuordners,
Fig. 4 eine weitere Ausgestaltung des Indexzuordners, Fig. 5 eine Ausgestaltung
des Rückführungszuordners des Markierungsvektorspeichers, Fig. G eine Ausgestaltung
des Eingangszuordners des Arheitsspeichers, Fig. 7 eine Ausgestaltung des Eingangszuordners
des Zweitoperandenspeichers, Fig. 8 eine Struktur der Adressengeneratorschaltung,
Fig. 9, 10 Details der Steuerschaltungen, Fig. 11 das zugehörige Impulsdiagramm,
Fig. 12 eine Ausgestaltung der Auswahlschaltung für die RAM-Adresse, Fig. 13 die
Einordnung in eine Rechnerkonfiguration mit universellem Bussystem.
-
Fig. 1 zeigt das Blockschaltbild der erfindungsgemäßen Anordnung.
Es sind ein Arbeitsspeicher 1 (im folgenden als RAUM 1 bezeichnet), ein Zweitoperandenspeicher
2 (SECOND OPERAND MEMORY SOM), ein Maskenoperandenspeicher 3 (MASK OPERAND MEMORY
MOM) und ein Markierungsvektorspeicher 4 (TAG VECTOR MEMORY TVM) vorgesehen, wobei
jedem der Speicher 1 - 4 eines der Halteregister 5 - 8 nachgeordnet ist. Diese sind
ihrerseits über Koppelstufen 9 - 12 an auswärtsführende Datenleitungen 13 angeschlossen.
Den Speichern 1, 2, 4 sind Datenauswahlschaltungen 14, 15, 16 vorgeordnet. Diese
sind mit eingangsseitigen Datenleitungen 17 verbunden, die weiterhin direkt an den
Maskenoperandenspeicher 3 angeschlossen sind.
-
Der Auswahlschaltung 14 des RAM 1 ist weiterhin ein erster Eingangszuordner
13 vorgeordnet. Die Auswahlschaltung 15 des Zweitoperandenspeichers 2 ist mit einem
zweiten Eingangszuordner 19 verbunden und die Auswahlschaltung 16 des Markierungsvektorspeichers
4 mit einem Rückführungszuordner 20. Alle Zuordner 18, 19, 20 sind einem Indexzuordner
21 nachgeordnet, der an die Datenausgänge des Markierungsvektorspeichers 4 (über
das Halteregister 8) angeschlossen ist. Der Rückführungszuordner 20 ist weiterhin
mit den Ausgangsleitungen des Markierungsvektorspeichers 4 (über das Ilalteregister
8) direkt beschaltet.
-
Der Eingangszuordner 19 ist über das ilalteregister 6 weiterhin an
den Zweitoperandenspeicher 2 und über das ilalteregister 5 an den RAM 1 angeschlossen.
Der Eingangszuordner 18 ist darüber hinaus noch mit dem Maskenoperandenspeicher
3 (über das Halteregister 7) verbunden.
-
Den Adresseneingängen des RAM 1 sind über eine Auswahlschaltung 22
Adressenbusleitungen 23 sowie erste Adressenleitungen 24 und zweite Adressenleitungen
25 einer Adressengeneratorschaltung 26 vorgeordnet. Der Adressengeneratorschaltung
26 sind weiterhin über dritte Adressenleitungen 27 und eine Auswahlschaltung 23,
die zusätzlich an die Adressenbusleitungen 23 angeschlossen ist, die Adresseneingänge
des Zweitoperandenspeichers 2, des Maskenoperandenspeichers 3 sowie des Markierungsvektorspeichers
4 nachgeschaltet. An die Adressengeneratorschaltung 26 sind die ein- und ausgangsseitigen
Datenleitungen 13, 17, die Adressenbusleitungen 23 sowie Steuerleitungen 37 angeschlossen.
-
Die gesamte Anordnung ist vorzugsweise mit einem Universalrechner
verbunden (über die Datenleitungen 13, 17, die Adressenbusleitungen 23 und die Steuerleitungen
37). Dies ist dann besonders unproblematisch, wenn es sich bei dem Universalrechner
um einen Mikroprozessor oder Minicomputer handelt, der ein reguläres Bussystem hat.
-
Die Anordnung kann dann auf einfache Weise gekoppelt werden.
-
Beispielsweise bereitet es keine Schwierigkeiten, die ein- und
ausgangsseitigen
Datenleitungen 13, 17 zu einem bidirektionalen Datenbus zusammenzufassen.
-
Der RAM 1 ist vorzugsweise der eigentliche Arbeitsspeicher des Universalrechners.
Die weiteren Speicher 2, 3, 4 sind ebenfalls für den Universalrechner zugänglich.
Weiterhin können Schaltmittel in der Adressengeneratorschaltung 26 auf diese Weise
gesetzt bzw. abgefragt werden. Dazu werden im Ruhezustand der Anordnung über die
Auswahlschaltungen 14, 15, 16 die eingangsseitigen Datenleitungen 17 zu den Dateneingängen
der Speicher 1, 2, 4 durchgesteuert. Die Auswahlschaltungen 22, 28 steuern Adressenbusleitungen
23 zu den Adresseneingängen der Speicher 1 - 4 durch. Die vom Universalrechner gelieferte
Adresse wird durch nicht näher beschriebene (in der Digitaltechnik allgemein übliche)
Schaltmittel so decodiert, daß bei Schreibzugriffen Schreibimpulse zum jeweils ausgewählten
Speicher oder zu den ausgewählten Schaltmitteln der Adressengeneratorschaltung 26
geschickt werden und daß bei Lesezugriffen die jeweils ausgewählte Koppelstufe (z.
B. 9, 10, 11 oder 12) aktiviert wird, wobei weiterhin ein Übernahme impuls für die
Halteregister 5 - 3 ausgekjst wird.
-
Damit kann der Universalrechner beliebige Datentransporte zwischen
den Speichern 1 - 4 ausführen.
-
Die Auswahlschaltungen 14 - 15, 22, 28 können sowohl mit Multlplexerschaltkreisen
als auch auf Basis von tri state"-bzw. zonen collector"-Elementen realisiert sein.
-
Im besonderen kann die erfindungsgemäße Anordnung auch die Einrichtung
ergänzen, die in der WP-Anmeldung Anordnung zur Verarbeitung von Ternärvektorlisten
vorgeschlagen wurde. RAM 1, Zweitoperandenspeicher 2 und Maskenoperandenspeicher
3 sind dabei bereits vorhanden. Sie müssen zusätzlich mit den Auswahlschaltungen
14, 15, 16 beschaltet werden.
-
Die Verarbeitungsbreite des angeschlossenen Universalrechners betrage
z. B. 16 Bit. Dann können gemäß Fig. 2 in einem Maschinenwort acht Ternärvariable
zu zwei Bit gespeichert werden.
-
Eine bewährte Codierung ist z. B. folgende: E V Wert O O -0 1 frei
100 11 1 Die erste Bitposition wird als Erlaubnisbit E bezeichnet ("ENABLE"). Sie
repräsentiert praktisch die Unterscheidung zwischen einer Zdon't care"-Belegung
("-" bzw. neutrales Element, im folgenden als N-Element bezeichnet) und einer Belegung
mit definiertem Wert (0 oder 1). Das zweite Bit repräsentiert diesen Wert und wird
deshalb als Wertbit V bezeichnet ("VALUE"). Die Länge eines einzelnen Ternärvektors
ist im Beispiel auf 4096 Ternärvariable begrenzt, das entspricht 512 Worten zu acht
Ternärvariablen. Der Zweitoperandenspeicher 2 hat somit eine Speicherkapazität von
512 Worten. Die Speicher 3, 4 enthalten Binärvektoren (ein Bit je Variablenposition).
Ihre Speicherkapazität beträgt somit jeweils 512 Bytes (zu acht Bit). Der Maskenoperandenspeicher
3 enthält einen Maskenvektor, mit dem Variablenpositionen von der Bearbeitung ausgeschlossen
werden. Für jede Position, die bearbeitet werden soll, muß der Maskenvektor eine
1 enthalten (er wird in der Literatur gelegentlich als Vorhandenvektor bezeichnet).
Der Markierungsvektorspeicher 4 enthält einen Markierungsvektor, der die Variablenpositionen
kennzeichnet, die bei der Orthogonalisierung modifiziert werden müssen.
-
Wesentlich dabei ist, daß jeweils nur eine Position verarbeitet wird.
Dazu zeigt Fig. 3 den Aufbau des Indexzuordners 21. Seine Aufgabe besteht darin,
im aktuellen Teil (acht Bit) des Markierungsvektors die aktuell niedrigstwertige
Eins zu kennzeichnen.
-
Beispiele: a) Markierungsvektor 0001 1010 Indexvektor 0000 0010 b)
Markierungsvektor 0001 1000 Indexvektor 0000 1000
Bei einem Markierungsvektor
von acht Bit gibt es 256 Möglichkeiten, einen Indexvektor zu bilden. Die entsprechenden
Booleschen Gleichungen lauten 1 mg i1 = m1./i0 i2 = 2 m2./i0./i1 3 = m3./i0./i1./i2
usw.
-
Dies läßt sich zweckmäßigerweise mit einem ROM-Schaltkreis realisieren,
dessen Ausgängen UND-Gatter nachgeordnet sind, die gemeinsam mit einer Erlaubnisleitung
(INDEX ENABLE) beschaltet sind. Der Zweck dieser Erlaubnisleitung besteht darin,
den Indexvektor nur dann zu belegen, wenn der betreffende 8-Bit-Teilvektor aus dem
Markierungsvektorspeicher 4 gelesen wird.
-
Bei größeren Verarbeitungsbreiten (z. B. 16 oder 32 Ternärvariable
entsprechend 16 oder 32 Bit des Markierungsvektors) ist ein ROM als Indexzuordner
nicht mehr praktikabel.
-
Dazu zeigt Fig. 4 eine Ausgestaltung aus zwei ROMs, wobei der niedere
und der höhere Teil der Ausgangsleitungen des hlarkierungsvektorspeichers 4 jeweils
an einen der ROMs angeschlossen ist. Jede Ausgangsleitung des Indexzuordners 21
ist weiterhin einem UND-Gatter nachgeordnet, das mit der Erlaubnisleitung beschaltet
ist. Zusätzlich sind die dem oberen IZOM nachgeordneten UND-Gatter gemeinsam mit
einem NOR-Gatter verbunden, das an alle Ausgangsleitungen des unteren ROM angeschlossen
ist.
-
Jeder der ROMs enthält die Indexzuordnung für beispielsweise ..
-
Bit. Dabei dürfen die höherwertigen acht Ausgänge nur dann zur Wirkung
kommen, wenn die niederwertigen acht Ausgänge sämtlich "0" sind. Dies wird durch
das NOR-Gatter erreicht.
-
Die Anordnung ist auf mehr als zwei ROMs erweiterbar. Dabei muß jedem
ROM bis auf den, an den die höchstwertigen Leitungen angeschlossen sind, ein NOR-Gatter
nachgeschaltet werden. Die einem ROM nachgeordneten UND-Gatter sind dann mit allen
P2OR-G3ttern der niederen ROMs zu beschalten.
-
Damit ist gewährleistet, daß alle R0M-Schaltkreise gleichzeitig betrieben
werden. Die Indexsignale müssen dann lediglich noch zwei Gatter-Ebenen durchlaufen.
Gegenüber einer Kaskadierung von ROM-(oder auch PLA-)Schaltkreisen tritt somit bei
zunehmender Verarbeitungsbreite kein Laufzeitverlust ein.
-
Statt der ROMs können auch RAM-Schaltkreise (die vor Betriebsbeginn
geladen werden müssen) eingesetzt werden.
-
Fig. 5 zeigt die Struktur des Rückführungszuordners 20.
-
Die Ausgangsleitungen des Markierungsvektorspeichers 4 sind über UND-Gatter
mit dessen Eingangsleitungen verbunden, die an die Auswahlschaltung 16 angeschlossen
sind. An jedes der UND-Gatter ist die korrespondierende Ausgangsleitung des Indexzuordners
21 invertiert angeschlossen.
-
Dies bewirkt, daß die vom aktuellen Indexvektor markierte Bitposition
beim Schreiben in den Markierungsvektorspeicher 4 auf Null gesetzt wird. Die übrigen
Bitpositionen werden unverändert wieder eingeschrieben.
-
Der erste Eingangszuordner 18 soll während der Orthogonalislerung
die resultierenden Ternärvektoren zur Speicherung im RAM 1 liefern. Dazu muß er
die jeweils korrespondierende Belegung des Zweitoperandenspeichers 2 zur Auswahlschaltung
14 durchsteuern, bis auf die Position, die durch eine Eins im Indexvektor gekennzeichnet
ist. In dieser Position wird das Erlaubnisbit stets aktiviert und das invertierte
Wertbit des RAM 1 (gemäß der Belegung des Halteregisters 5) durchgesteuert. Der
Markierungsvektor wird derart bereitgestellt, daß Einsen nur mit Variablenpositionen
in der Ternärvektorliste korrespondieren, die einen definierten Wert haben (in denen
also das Erlaubnisbit von vornherein gesetzt ist).
-
Theoretisch besteht die wirkung des ersten Eingangszuordners 1U darin,
einen Resultatvektor zu erzeugen, der dem Zweitoperanden entspricht und an der Position,
die durch den Indexvektor markiert ist, die invertierte Belegung der entsprechenden
Position der Zeile der Ternärvektorliste enthält.
-
Fig. 6 zeigt den Aufbau für eine Variablenposition. Sowohl für die
Erlaubnis- als auch die Wertbitposition der Eingangsleitungen
des
RAM 1 ist eine Auswahlschaltung vorgesehen, deren Auswahleingänge mit der korrespondierenden
Ausgangsleitung des Indexzuordners 21 beschaltet sind. An alle Eingänge ist die
jeweilige Ausgangsleitung des Maskenoperandenspeichers 3 (MASK.i) angeschlossen.
-
Die Auswahlschaltung der Wertbitposition (Vi) ist direkt mit der jeweiligen
Ausgangsleitung des Zweitoperandenspeichers 2 (SOM.Vi) und invertiert mit der des
RAM 1 (RAM.Vi) beschaltet.
-
Die Auswahlschaltung der Erlaubnisbitposition (Ei) ist der jeweiligen
Ausgangsleitung des Zweitoperandenspeichers 2 (SOM.
-
Ei) nachgeschaltet.
-
Dies veranlaßt die gewünschte Wirkung. Weiterhin wird in maskierte
Variablenpositionen (MASK.i = O) ein N-Elerment eingetragen (Belegung O, 0).
-
Der zweite Eingangszuordner 19 soll während der Orthogonalisierung
den Zweitoperanden derart modifizieren, daß an der Position, die durch den Indexvektor
markiert ist, die korrespondierende Variable aus der Zeile der Ternärvektorliste
(aus RAM l) eingetragen wird.
-
Dazu zeigt Fig. 7 den Aufbau für eine Variablenposition, wobei für
die Erlaubnis- und die Wertbitposition der Eingangsleitungen des Zweitoperandenspeichers
2 jeweils eine Auswahlschaltung vorgesehen ist, deren Auswahlcingang mit der korrespondierenden
Ausgangsleitung (INDEX.i) des Indexzuordners 21 verbunden ist. Die Eingänge sind
jeweils sinngemäß an die Ausgangsleitungen des Zweitoperandenspeichers 2 sowie des
RAM l angeschlossen.
-
Ist INDEX.i inaktiv, so wird der Inhalt des Zweitoperandenspeichers
2 zurückgeschrieben, ist INDEX.i aktiv ("1"), so wird stattdessen die gelesene Belegung
aus dem RAM 1 eingetragen.
-
Sind die Ternärvariablen auf andere Weise codiert, so ändert sich
die Realisierung des zweiten Eingangszuordners 19 im Prinzip nicht, da es sich lediglich
darum handelt, die zur Codierung benutzten binären Signale entsprechend durchzuschalten.
Der erste Eingangszuordner 18 muß hingegen so modifiziert
werden,
daß er bei INDES.i = 0 die jeweiligen Signale durchschaltet und bei INDEX.i = 1
den Code für "0" abgibt, wenn aus dem RAM der Code für "1" geliefert wird und umgekehrt.
-
Fig. 3 zeigt eine Ausgestaltung der Adressengeneratorschaltung 26.
Die ersten Adressenleitungen 24 sind einem TVL-Adressenzähler 29 nachgeschaltet,
der seinerseits einem TVL-Adressenregister 30 nachgeordnet ist. Die zweiten Adressenleitungen
25 sind an einen Bereichsadressenzähler 31 angeschlossen.
-
Die dritten Adressenleitungen 27 sind einem Variablenadressenzähler
32 nachgeordnet und an einen Vergleicher 33 angeschlossen, dem weiterhin ein Variablenanzahlregister
34 vorgeschaltet ist.
-
Die einwärtsführenden Datenleitungen 17 sind mit dem TVL-Adressenregister
30, dem Bereichsadressenzähler 31, dem Variablenanzahlregister 34 und mit einem
Vektoranzahlzähler 35 verbunden.
-
Die genannten Schaltmittel 30, 31, 34, 35 sind vom angeschlossenen
niversalrechner 1 aus selektiv ladbar. Dazu werden bestimmte Belegungen der Adressenbusleitungen
23 mit nicht näher beschriebenen Decoderschaltungen so decodiert, daß Schreibsignale
der Steuerleitungen 37 die Erregung der betreffenden Schreibimpulsleitungen veranlassen
(WRITE TVL ADRS, I"JRITE AREA ADRS, WRITE VAR COUNT, WRITE VECTOR COUNT).
-
Die Voraussetzungen für einen Orthogonalisierungsablauf sind folgende:
a) Gegeben sind: ein Ternärvektor eine Zeile einer Ternärvektorliste (im folgenden
mit TVL abgekürzt) der dazugehörige Maskenvektor ein Markierungsvektor.
-
b) Der Ternärvektor ist bezüglich der TVL-Zeile zu orthogonalisieren.
Dabei entstehen so viele Ternärvektoren, wie der Markierungsvektor Einsen hat. Diese
werden an die Ausgangs-TVL angehängt.
-
c) Vor Ausführung der Orthogonalisierung gewährleistet der angeschlossene
Universalrechner, daß der Ternärvektor im Zweitoperandenspeicher 2, der Maskenvektor
im Maskenoperandenspeicher 3 und der Markierungsvektor im Markierungsvektorspeicher
4 bereitstehen.
-
Die TVL befindet sich im RAM 1. Dort werden auch die resultierenden
Ternärvektoren abgespeichert, und der Universalrechner hat den benötigten Speicherplatz
lokalisiert und reserviert.
-
d) Der Universalrechner lädt die erforderliche Information in die
Adressengeneratorschaltung G, und zwar die Anfangsadresse der TVL-Zeile in das TVL-Adressenregister
30 die Anfangsadresse des Speicherbereichs für die resultierenden Ternärvektoren
in den Bereichsadressenzähler 31 die Variablenanzahl der Vektoren in das Variablenanzahlregister
34 die Anzahl der Einsen des Markierungsvektors (gleichbedeutend mit der Anzahl
der zu erzeugenden kesultatvektoren) in den Vektoranzahlzähler 35.
-
e) Der Universalrechner startet den Ablauf und wartet au-f- die Fertigmeldung.
-
Dabei wird zunächst der TVL-Adressenzähler 29 mit dem Inhalt des
TVL-Adressenregisters 30 geladen, und der Variablenadressenzähler 32 wird zurückgesetzt.
-
Alle drei Adressenleitungen 24, 25, 27 adressieren nun jewells den
ersten Abschnitt (zu beispielsweise acht Variablenpositionen) aller zu verarbeitenden
Vektoren. Die AUS-wahlschaltung 22 steuert die ersten Adressenleitungen 24 zu den
Adresseneingängen des RAM) 1 durch. Die entsprechenden Belegungen werden aus den
Speichern 1 - 4 in die Halteregister 5 - übernommen und stehen somit zur Verarbeitung
bereit. Im folgenden Zyklus werden die Resultate der Zuordner 18, 19, 20 in den
kAM 1, den Zweitoperandenspeicher 2 und in den Markierungsvektorspeicher 4 zurückgeschricben.
-
Dabei atenert die Auswahlschaltung 22 die zwciten Adressenleitungen
25
zu den Adresseneingängen des kAM 1 durch, so daß der erste Abschnitt des ersten
Resultatvektors eingeschrieben wird. Am Ende des Schreibzyklus werden die Adressenzähler
29, 31, 32 um 1 erhöht. Das Zählen des TVL-Adressenzählers 29 und des Variablenadressenzählers
32 erfolgt nur dann, wenn das Ausgangssignal (VAR ADRS COMPARE) des Vergleichers
33 inaktiv ist. In diesem Fall sind noch weitere Abschnitte zu bearbeiten, und es
wird der nächste Lesezyklus ausgeführt. Daran schließt sich der nächste Schreibzyklus
an usw.
-
Ist das Ausgangssignal des Vergleichers 33 aktiv, so zeigt dies an,
daß alle Abschnitte des Vektors verarbeitet wurden. Somit wurde ein flesultatvektor
erzeugt, und die betreffende Bitposition im Markierungsvektorspeicher 4, die im
aktuellen Indexvektor aktiv ar, wurde über den Rückführungszuordner 20 gelöscht.
-
Damit wird der Vektoranzahlzähler 35 um 1 vermindert. Wird der Inhalt
dieses Zählers zu Null (VECTOR COUNT ZERO aktiv), so wurden alle Resultatvektoren
erzeugt, und der Orthogonalisierungsablauf wird beendet.
-
Andernfalls beginnt die Erzeugung des folgenden Resultatvektors damit,
daß der TVL-Adressenzähler 29 mit dem Inhalt des TVL-Adressenregisters 30 geladen
wird, so daß die TVL-Zeile erneut verarbeitet werden kann. Weiterhin wird der Variablenadressenzähler
32 zurückgesetzt, und der Verknüpfungsablauf beginnt von neuem.
-
Der gewünschte Ablauf kann z. B. dadurch erreicht werden, daß die
Steuersignale für die Anordnung in Fig. Q von einem geeigneten Steuerautomaten geliefert
werden. Das kann ein übliches Mikroprogramrasteuerwerk sein, aber auch ein Sequencer
auf PLA-Basis oder dergleichen.
-
Eine sehr einfache Steuerschaltung ist in den Fig. 9, 10 dargestellt.
Fig. 11 zeigt das zugehörige Impulsdiagramm.
-
Die zugrunde liegenden Taktimpulse T1 ... T4 werden gemäß Fig.
-
9 mit einem rückgekoppelten Schieberegister erzeugt.
-
Der Ruhezustand der Anordnung wird durch ein Flipflop IDLE rcpräsentiert.
In diesem Ruhezustand (IDLE = 1) werden die Auswahlschaltungen II, 15, 16, 22, 23
so gesteuert, daß allgemeine Zugriffe des angeschlossenen Universalrechners zu den
Speichermitteln der Anordnung möglich sind.
-
Um den Orthogonalisierungsablauf zu starten, flluß der Universalrechner
einen Startimpuls INITIATE veranlassen, der IDLE ausschaltet. Damit läuft die interne
Taktimpulserzeugung an, und die Auswahlschaltungen 14, 15, 16, 22, 28 werden so
umgesteuert, daß interne Zugriffe möglich sind.
-
Der IDLE-Zustand muß vom angeschlossenen Universalrechner aus abfragbar
sein, dort einen Interrupt auslösen können o. ä., so daß der Universalrechner darüber
informiert wird, daß der Orthogonalisierungsablauf beendet ist. Eine Möglichkeit
dazu ist gemäß Fig. 9 die Kopplung auf eine der auswärtsführenden Datenleitungen
13 zwecks programmteehnischer Abfrage.
-
Ober ein weiteres Flipflop wird veranlaßt, daß zyklisch nacheinander
Lesezugriffe (READ SLOT) und Schreibzugriffe (I7RITE SLOT) ausgeführt werden.
-
Die Bildung weiterer Steuersignale ist in Fig. 10 dargestellt.
-
READ PULSE veranlaßt bei internen Zugriffen das Laden der Halteregister
5 - 8, WRITE PULSE ist das Schreibtaktsignal für die Speicher l, 2, 4.
-
Alle Adressenänderungen erfolgen am Ende der Schreibzyklen.
-
AREA COUNT veranlaßt das ständige Erhöhen der Bereichsadresse für
das Speichern der Resultatvektoren.
-
Wurde ein Vektor vollständig erzeugt, so wird das Ausgangssignal des
Vergleichers 33 aktiv (VAR ADRS COMPARE = 1). Dies wird mit einem Flipflop für die
Dauer eines Taktzyklus gehalten. Daraufhin wird die TVL-Adresse erneut geladen,
und die Variablenadresse wird zurückgesetzt (ADRS LOAD). weiterhin wird ein Zählimpuls
für den Vektoranzahlzähler 35 abgegeben (VECTOR COUNT).
-
Ansonsten werden Zählimpulse für den TVI-Adressenzähler 29 und den
Variablcnadressenzähler 32 geliefert (ADRS COUNT).
-
Fig. 9 zeigt weitcrhin die Beschaltung der Erlaubnisleitung
INDEX
ENABLE des Indexzuordners 21. Es ist ein Flipflop vorgesehen, das mit einer disjunktiven
Verknüpfung aller Ausgangssignale des Markierungsvektorspeichers 4 beschaltet ist.
Das Flipflop wird zu Beginn der Verarbeitung eines Vektors zurückgesetzt (ADRS LOAD).
Mit dem ersten verarbeiteten Abschnitt des Markierungsvektors, der Einsen enthält,
wird das Flipflop am Ende des Schreibzyklus (also nach dem Schreiben) gesetzt (ADRS
COUNT). Damit wird die an den invertierten Ausgang angeschlossene Erlaubnisleitung
inaktiv.
-
Das Flipflop ist selbsthaltend ausgeführt, so daß dieser Zustand bis
zum Ende der Bearbeitung des Vektors anhält.
-
Die Verarbeitung beginnt stets vom niedrigstwertigen Abschnitt an.
Der gültige Indexvektor repräsentiert die aktuell niedrigstwertige Eins des Markierungsvektors.
Durch den flückführungszuordner 20 wird diese Eins jeweils gelöscht. Der Markierungsvektor
kann aber in höherwertigen Positionen noch Einsen enthalten, die bei der Erzeugung
des aktuellen Pesultatvektors weder zur Wirkung kommen noch gelöscht werden dürfen.
Dies wird dadurch gewährleistet, daß INDEX ENABLE nach der Verarbeitung des niedrigstwertigen
Abschnittes, bei dem der Markierungsvektor Einsen enthält, bis zum Ende des Vektors
inaktiv wird, so daß in allen folgenden Abschnitten der Indexvektor nur Nullen enthält
(s. Fig. 3, 4).
-
Die Anzahl der Variablen in den Vektoren muß im Beispiel stets ein
Vielfaches von acht betragen. Die Variablen müssen rechtsbündig den Positionen zugeordnet
werden. Nicht belegte Positionen sind im Maskenvektor mit Nullen zu kennzeichnen.
-
Die Resultatvektoren enthalten an diesen Stellen N-Elemente.
-
Auch der Markierungsvektor muß so aufbereitet sein, daß er an den
betreffenden Stellen Nullen enthält.
-
Es ist weiterhin möglich, durch eine zusätzliche Beschaltung der Ausgangsleitungen
des Maskenoperandenspeichers 3 in Verbindung mit einem Zuordner, der dem Variablenanzahlregister
34 nachgeschaltet ist, nicht belegte Restpositionen im jeweils letzten Abschnitt
automatisch zu maskieren. Dies ist in der WP-Anmeldung "Anordnung zur Verarbeitung
von Ternärvektorlisten" im Detail dargestellt.
-
Wird diese Möglichkeit benutzt, so muß für maximal 4096 Variable das
Variablenanzahlregister 34 zwölf Bit umfassen.
-
Der Variablenadressenzähler 32 und der Vergleicher 33 umfassen neun
Bit (bei 512 Abschnitten zu acht Variablen).
-
Ansonsten ist eine Breite von neun Bit auch für das Variablenanzahlregister
34 ausreichend, und es ist die um 1 verminderte Anzahl der Abschnitte zu laden.
-
Fig. 12 veranschaulicht eine Bitposition der Auswahlschaltung 22.
Es ist ersichtlich, daß es sich um eine gesteuerte Torschaltung handelt, wobei .
im Rsuhezustand (IDLE) die jeweilige der Adressenbusleitungen 23 (ADRS.i), bei internen
Lesezugriffen (READ SLOT) die jeweilige der Adressenleitungen 24 (TVL ADflS.i) und
bei internen Schreibzugriffen (WPITE SLOT) die jeweilige der Adressenleitungen 25
(AREA ADPS.i) zum Adresseneingang des RAM 1 (RAM ADRS.i) durchgeschaltet werden.
-
Äquivalent ist eine Ausbildung mit "tri state"- bzw. "open collector"-Schaltkreisen
möglich.
-
Auf dieser Basis läßt sich die erfindungsgemäße Anordnung vorteilhaft
in ein System einbeziehen, das auf einem Universalrechner basiert, dem weitere Einrichtungen,
so auch der PA 1, über ein reguläres Bussystem nachgeordnet sind, das für den "Multi-Master-Betrieb"
eingerichtet ist, wie dies in Fig. 13 veranschaulicht ist.
-
Der Universalrechner, der RAM 1 und das verbindende Bussystem sind
beispielsweise kommerziell verfügbare Baugruppen (ctwa Bestandteile eines Mikroprozessorsystems).
-
Die erfindungsgemäße Anordnung 36 wird nun einfach als weitere Funktionseinheit
an das Bussystem angeschlossen. nie nicht näher dargestellten internen Details entsprechen
Fig. 1, die Datenleitungen des Bussystems sind an die bidirektional gekoppelten
Datenleitungen 13, 17 angeschlossen. Im Puhezustand der Anordnung 36 hat der Universalrechner
die Busherrsehaft, d. h. er belegt als Master das Bussystem und kann sowohl zum
RAM
1 als auch zu den Speichermitteln der Anordnung 36 ungehindert zugreifen. Geht die
Anordnung 36 in den Arbeitszustand über, so fordert sie die Busherrschaft an. Damit
belegt sie über die Auswahl schaltung 22 (die aus Buskoppelschaltungen für die Adressenleitungen
24, 25 besteht) die Adressenleitungen des Bussystems. Bei Lesezyklen wird der RAM
l als Slave adressiert, wobei die ersten Adressenleitungen 24 aufgeschaltet sind.
Die gelesene Information gelangt in das Halteregister 5. Bei Schreibzyklcn wird
der RAU 1 als Slave adressiert, wobei die zweiten Adressenleitungen 25 aufgeschaltet
sind. Die Ausgangssignale des ersten Eingangszuordners 18 werden dabei auf den Datenbus
gelegt (dies bedeutet faktisch, daß die Auswahlschaltung 14 als Buskoppelschaltung
ausgebildet sein muß).
-
Der Ablauf der Orthogonalisierung sei an einem Beispiel erläutert:
1. Ausgangswerte: TVL-Zeile: 0-0-1-01 Ternärvektor: 00-1--O-Markierungsvektor: 00101001
Somit sind drei Resultatvektoren zu erzeugen.
-
2. Erzeugung des ersten Resultatvektors: Indexvektor: 00000001 (.
Fig. 3) Resultatvektor: 00-1--00 (s. Fig. 6) neuer Ternärvektor: 00-1--Ol (s. Fig.
7) neuer Markierungsvektor: 00101000 (s. Fig. 5) 3. Erzeugung des zweiten Psesulatvektors:
Indexvektor: 00001000 Resultatvektor: 00-10-01 neuer Ternärvektor: 00-11-01 neuer
Markierungsvektor: 00100000
4. Erzeugung des dritten Resultatvoktors:
Indexvektor: 00100000 Resultatvektor : 00111-01 neuer Ternärvektor: 00011-01 Der
verbleibende neue Ternärvektor ist der Durchschnitt aus TVL-Zeile und dem ursprünglichen
Ternärvektor.
-
Die Vorteile der erfindungsgemäßen Anordnung können wie folgt zusainmengefaßt
werden: Im Rahmen der Aufrufbreite und Zykluszeit des Arbeitsspeichers wird beim
Orthogonalisierungsablauf in jedem Zyklus eine Nutzoperation (Lesen oder Schreiben)
ausgeführt, so daß in zwei Zyklen beispielsweise acht Variablenpositionen eines
Resultatvektors erzeugt werden können. Bei einer Zykluszeit von 500 ns bedeutet
dies, daß 8 Variable/µs verarbeitet rer den. hingegen muß bei einer Softwarelösung
eine Vielzahl von Befehlen durchlaufen werden (Schätzung: 50 Befehle zu 2 µs ; dies
bedeutet, daß für acht Resultatvariable 100 µs benötigt werden, so daß sich etwa
eine einhundertfache Beschleunigung ergibt).
-
Die Adressierungs- und Verknüpfungsschaltungen sind sehr einfach,
im besonderen werden Verknüpfungen stets variablenweise parallel und unabhängig
voneinander ausgeführt, so daß eine Verarbeitungsbreite von 16, 32 oder 64 Variablenpositionen
im Rahmen entsprechender Rechnerkonfigurationen ohne Schwierigkeiten, besonders
ohne Zwang zur Verlängerung der Zykluszeiten, realisierbar ist.
-
Dies betrifft auch die Bildung des Indexvektors, die mit üblichen
Schaltmitteln (ROM, Gatter) auch für größere Verarbeitungsbreiten ohne Kaskadierung
ausführbar ist.
-
Damit werden die erreichbaren Zykluszeiten im wesentlichen durch
den RAM 1 bestimmt.
-
. Die Anordnung läßt sich gut in eine Rechnerkonfiguration einfügen,
die auf einem Universalbussystem mit Multi-Master-Eigenschaften beruht. Dabei kann
der RAM 1 eine Speichereinrichtung des vorhandenen Systems sein. Des weiteren rinnen
die
erfindungsgemäßen Schaltmittel mit anderen bereits vorgeschlagenen kombiniert werden.
Somit ist die Grundlage gegeben, existierende flechnerkonfigurationen systematisch
(je nach den Leistungserfordernissen) um Beschleunigungseinrichtungen für TVL-Operationen
zu ergänzen. Damit können z. B. kostengünstige Mikrorechner in die Lage versetzt
werden, komplexe Boolesche Probleme (Schaltungsentwurf, Testdatenberechnungen, Untersuchungen
von Graphen usw.) mit hoher Effektivität auszuführen. Die ergänzenden Schaltmittel
sind ohne weiteres auf 1 - 3 Leiterplatten unterzubringen.
Leerseite