<Desc/Clms Page number 1>
Die Erfindung bezieht sich auf eine programmierbare Schaltung zur Datenverarbeitung mit mindestens drei Hardware-Moduln, die alle untereinander gleich sind und von denen jeder eine Zentraleinheit, einen Speicher und zur Verbindung mit ändern Zentraleinheiten eine Schnittstellenschaltung hat, wobei jeder Modul Adressen-, Daten- und Sensorleitungen zum Daten-und Kontrollinformationsaustausch von Modul zu Modul in beiden Richtungen aufweist und alle Moduln demselben, in einem Teil ihres jeweiligen Speichers gespeicherten Programm unterliegen.
Es ist bekannt, dass Algorithmen, die durch rekursive Prozeduren beschrieben werden, mit Hilfe der heute üblichen Computer nur dadurch abgearbeitet werden können, dass die einzelnen Aufrufe der rekursiv verschachtelten Prozeduren hintereinander ausgeführt werden, wobei mit Hilfe bekannter Kellermechanismen softwaremässig Buchhaltung darüber geführt wird, in welcher Reihenfolge dieeinzelnenAufrufeabgear- beitet werden müssen und mit welchen aktuellen Ein-, Ausgabe- und Zwischenwertvariablen die einzelnen Aufrufe der Prozedur arbeiten.
Diese sequentielle Abarbeitung rekursiver Prozeduren ist auf den heute verfügbaren Computern unum- gänglich, weil diese nur eine Zentraleinheit besitzen (Computer des Von-Neumann-Typs) und deshalb zu einer bestimmten Zeit nur einen Prozeduraufruf steuern können. Auch die im Experimentierstadium befindlichen Feldrechner, in denen sehr viele einzelne Prozessoren parallel arbeiten können, erlauben nicht die maximal parallele Bearbeitung der einzelnen Aufrufe rekursiver Prozeduren, weil die hierarchisch Verbindung der verfügbaren Prozessoren zum Zweck des direktenAustausches der Ein-/Ausgabeparameter der einzelnen Prozeduraufrufe nicht möglich ist, sondern jeweils zur Parameterübergabe der dem gesamten System übergeordnete Steuerrechner eingreifen muss.
Diese sequentielle Ausführung von Prozeduraufrufen, die im Prinzip parallel bearbeitetwerdenkönn- ten, hat nun den Nachteil zur Folge, dass die Rechenzeit für typische Beispiele rekursiv formulierter Prozeduren mit wachsenden Problemgrössen sehr stark (in typischen Fällen exponentiell) steigt. Gerade in der nichtnumerischen Datenverarbeitung spielen aber Probleme, die in natürlicher Weise durch rekursiv formulierte Algorithmen gelöst werden können, eine wichtige Rolle. So hat man geschätzt, dass zirka 30% der gesamten Computer-Rechenzeiten für das Sortieren verbraucht wird, das durch den rekursiv formulierten Mische-Sortiere-Algorithmus optimal gelöst wird.
Die Erfindung setzt sich zur Aufgabe, diese Nachteile zu vermeiden und eine programmierbare Schaltung zur Datenverarbeitung der eingangs geschilderten Art so zu erstellen, dass Algorithmen, die durch rekursive Prozeduren beschrieben werden, auf Rechnern mit minimaler Rechenzeit zu implementieren sind.
Die Erfindung löst diese Aufgabe bei einer Schaltung der eingangs beschriebenen Art im wesentlichen dadurch, dass die Schnittstellenschaltung jedes Moduls zur kaskadenartigen Verbindung mit den Schnittstellenschaltungen mindestens zweier Moduln der nächsten Kaskadenstufe ausgebildet ist und die Schnittstellenschaltung Logikschaltungen zur Adressenmodifizierung enthält, wobei bei einer Adresse m im Speicherbereich 0 bis A-1 der Speicher des eigenen Moduls mit der Adresse m angesprochen wird, im Speicherbereich A bis 2A-1 der Speicher des ersten Moduls der nächsten Kaskadenstufe mit der modifizierten Adresse m-A angesprochen wird, im Speicherbereich 2A bis SA-1 der Speicher des zweiten Moduls der nächsten Kas- kadenstufe mit der modifizierten Adresse m-2A angesprochen wird, usf, wobei A die Zellenzahl des Speichers des Moduls ist.
Auf diese Weise können rekursiv formulierte Algorithmen auf den zu Kaskaden zusammengeschalteten Moduln derart abgearbeitet werden, dass die in der rekursiven Formulierung immanente Parallelität optimal ausgenutzt wird. Vereinfacht ausgedrückt bedeutet dies, dass zwei oder mehr Moduln gleichzeitig arbeiten können. Dadurch wird eine wesentliche Verkürzung der Gesamtrechenzeit erzielt.
Der einfachste Fall 2T1 Moduln pro Kaskadenstufe (wobei die Kaskadenstufenanzahl ist) ergibt die übersichtlichste Schaltung, jedoch kann die Verbindung jedes Moduls mit mehr als zwei Moduln der nächsten Kaskadenstufe in analoger Weise erfolgen.
Die Anzahl der Moduln, die auf der jeweils nächsten Kaskadenstufe mit einem Modul der vorhergehenden Kaskadenstufe verbunden sind, ist im Prinzip nicht begrenzt. Die Anzahl der Kaskadenstufen ist vorzugsweise hoch.
Die Kaskade der Moduln kann sowohl als selbständiger Computer angewendet werden, da eine Steuerung von aussen nicht notwendig ist, als auch als spezielles Rechenwerk im Anschluss an einen bestehenden Computer.
Insbesondere dort, wo es auf den Vorteil der Verkleinerung der Schaltung ankommt, empfiehlt es sich, dass im Rahmen der Erfindung die Zentraleinheit eines jeden Moduls als Mikroprozessor ausgebildet ist.
Dies ergibt im Rahmen der Erfindung auch die Möglichkeit, dass die Zentraleinheit, der Speicher und die
<Desc/Clms Page number 2>
Schnittstellenschaltung einen integrierten Schaltungsbauteil bilden, wodurch weiter an Platz und Kosten gespart wird.
Die kaskadenartigen Verbindungen der einzelnen Moduln müssen nicht von vorneherein leitungsmässig aufgebaut sein. Es kann vielmehr im Rahmen der Erfindung vorteilhaft sein, wenn eine Umschalteinrichtung vorhanden ist, die die kaskadenartige Verbindung freier Moduln nach Bedarf zusammenstellt.
Eine weitere vorteilhafte Weiterentwicklung der Erfindung besteht darin, dass der Speicher eines jeden Moduls in einen eigenen Programmspeicher und einen Datenspeicher aufgeteilt ist. Es besteht hiebei erfindungsgemäss die Möglichkeit, dass der Programmspeicher eines jeden Moduls für die gesamte Kaskade nur einmal realisiert ist und ausserhalb der Moduln angeordnet ist. Dieser Programmspeicher kann alle privaten Speicher der Moduln ersetzen, jedoch auch zusätzlich zu diesen angeordnet sein, z. B. um eine Speicherreduzierung in den Moduln und damit eine Kostenreduzierung zu erreichen.
Unter "Schnittstellenschaltung" (Interface) soll im vorliegenden Zusammenhang eine Schaltung verstanden werden, die die Anpassung zwischen den einzelnen Zentraleinheiten übernimmt und die aus bekannten elektronischen Bauteilen aufgebaut werden kann.
In den Zeichnungen sind Ausführungsbeispiele des Erfindungsgegenstandes schematisch dargestellt.
Fig. 1 zeigt das Prinzip der kaskadenartigen Zusammenschaltung universeller Hardware-Moduln, Fig. 2 zeigt einen solchen Modul im Blockschaltbild, Fig. 3 schematisch den genau dargestellten Aufbau eines solchen Moduls und Fig. 4 ein vereinfachtes Schaltbild des Moduls. Fig. 5 zeigt den Logikplan für eine Schnittstellenschaltung in einem speziellen Beispiel und Fig. 6 zeigt den Verlauf einer Berechnung durch die Kaskade.
Fig. 7 zeigt die Zusammenschaltung von mit einem privaten Speicher ausgebildeten Moduln und Fig. 8 zeigt eine Variante hiezu.
Gemäss Fig. 1 sind beliebig viele universelle Hardware-Moduln-UHM1 bis UHMn-- kaskadenartig zu- sammengeschaltet, von denen nur die Moduln mit den Nummern 1 bis 7 dargestellt sind. Es sind jeweils zwei Moduln der nächstfolgenden Kaskadenstufe an einen Modul der vorangehenden Kaskadenstufe angeschaltet. Jeder dieser Moduln --UHM-- besteht aus einer Zentraleinheit --CPU-- (Fig. 2), die vorteilhaft als Mi- kroprozessor-juP-- (Fig. 2) ausgebildet ist. Dieser Zentraleinheit --CPU-- ist ein eigener (privater) Programmspeicher --PM-- zugeordnet. Ferner hat jeder Modul einen Speicher-RAM-- od. dgl. mit A Zellen und eine Schnittstellenschaltung-IF-. Als Zentraleinheiten bzw.
Mikroprozessoren und Speicher kommen hiebei beliebige Typen in Frage.
EMI2.1
lenschaltung der vorangehenden Kaskadenstufe, die Leitungen-5, 6--mit dem Speicher --RAM-- und die Leitungen --7 bis 10-- mit den Schnittstellenschaltungen der nächstfolgenden Kaskadenstufe (Fig. 1, 3).
Die Funktionsweise der Schnittstellenschaltung-IF-- ist hiebei wie folgt : a) Wenn eine Adresse bei der Leitung --3-- anliegt, so wird diese Adresse unverändert an die Leitung - -6-- weitergegeben und die Datenleitung-4-- mit der Datenleitung --5-- verbunden. b) Wenn eine Adresse zwischen 0 und A-1 bei der Leitung-l-anliegt, sowirddlese unverändert an die Leitung --6-- weitergegeben und die Datenleitung --2-- mit der Datenleitung --5-- verbunden. c) Wenn eine Adresse zwischen A und 2A-1 bei der Leitung-l-anliegt, so wird diese Adresse um A vermindert an die Leitung --10-- weitergegeben und die Datenleitung --2-- mit der Datenleitung--9-- verbunden.
d) Wenn eine Adresse zwischen2A und3A-1 bei der Leitung-l-anliegt, so wird diese Adresse um 2A vermindert an die Leitung -- 8-- weitergegeben und die Datenleitung --2-- mit der Datenleitung-7- verbunden. e) Gleichzeitige Anzahlen über die Leitungen --1 und 3-- werden in der Schnittstellenschaltung- IF- gegeneinander gesperrt. Die Art der Sperrung spielt hiebei keine Rolle.
Die Leitungen-3, 4, 7, 8, 9, 10- sind im Modul also noch frei. Sie dienen der kaskadenartigen Zusammenschaltung der Moduln (Fig. 1).
Zusätzlich zu den bereits beschriebenen Teilen besitzt das Interface --IF-- noch drei Sensorbits S, T, und T2, die von der Zentraleinheit --CPU-- bzw. vom Mikroprozessor -¯,uP-- nur gelesen und von aussen nur gesetzt werden können, sowie drei Sensor-Setzleitungen, über welche die Zentraleinheit --CPU-- bzw.
EMI2.2
pulse nach aussen geben kann.
Von aussen ist der gesamte --UHM-- also nur über die Leitungen-13, 3,4, 14,12, 7, 8,15, 11,9, 10, 16-zugänglich und erscheint deshalb nach aussen als ein Block der in Fig. 4dargestelltenArt. Die Gesamtheit der
<Desc/Clms Page number 3>
Leitungen --13, 3, 4, 11- sei somit die Ein-Linie des Moduls genannt, die Gesamtheit der Leitungen --16,
10, 9, 11--die linke Aus-Linie und die Gesamtheit der Leitungen --15, 8, 7,12-- die rechte Aus-Linie des
Moduls.
Die beiden Aus-Linien jedes Moduls der jeweils vorhergehenden Kaskadenstufe sind mit der Ein-
Linie der an diesem Modul angeschlossenen Moduln der nächstfolgenden Kaskadenstufe verbunden. i Ein beliebiger Modul in der Kaskade hat nun auf Grund der oben beschriebenen Wirkungsweise seiner
Schnittstellenschaltung folgende Möglichkeiten :
a) mit den Adressen 0 bis A-1 seinen eigenen Speicher --RAM-- anzusprechen, b) mit den Adressen A bis 2A-1 den Speicher --RAM-- seines linken unteren Nachbarn anzusprechen (WO- bei dann die Zelle, die von dem Modul selbst mit der Adresse m angesprochen wird, von seinem lin- ken unteren Nachbarn mit der Adresse m-A angesprochen werden kann), c) mit den Adressen 2A bis 3A-1 den Speicher --RAM-- seines rechten unteren Nachbarn anzusprechen (wobei dann die Zelle, die von dem Modul selbst mit der Adresse m angesprochen wird, von seinem rechten unteren Nachbarn mit der Adresse m-2A angesprochen werden kann), d) über die Leitung --11-- das Sensorbit S seines linken unteren Nachbarn zu setzen,
EMI3.1
der Modul selber linker oder rechter unterer Nachbar seines oberen Nachbarn ist.
Die in a), b), c) erwähnten Regeln seien Adressen-Umrechnungsregeln genannt. Dementsprechend kann auf den Speicher --RAM-- des betrachteten Moduls auch von seinem oberen Nachbarn zugegriffen werden
EMI3.2
16 bzw. 15-dieK2.... Adressbereich zur Adressierung des rechten unteren Nachbarn K3.... Adressbereich zur Adressierung des eigenen Speichers --RAM-- K4.... vorbehalten für Sonderaufgaben, insbesondere zur Anwahl der Sensorbits K5 bis K7.... Speicherbereich für den --KIM-Monitor--.
Hiebei steht Ki als Abkürzung für den Adressbereich i. (1024) bis (1+1). 1024-1.
Die Adressen-Umrechnungsregeln werden bei dieser Realisierung wie folgt modifiziert : Adressen über Leitung-l-aus dem Bereich K3 bleiben unverändert.
Adressen über Leitung-l-aus dem BereichKl werden um 2048 erhöht.
EMI3.3
des Bytes mit der Adresse 1100 (hexadezimal). Sie können mit dem normalen Ladebefehl gelesen werden. Naheliegendwerden dieselbenBits auch als logische Adressen für das Ansprechen der Sensorbits im oberen, linken unteren bzw. rechten unteren Nachbarn verwendet, d. h. also zur Realisierung der Leitungen --13, 11 bzw. 12-- (Fig. 3). Diese können mit dem normalen Speicherbefehl gesetzt werden.
Die gegenseitige Sperrung des Speichers-RAM-für Zugriffe vom jeweiligen Mikroprozessor --,uP-- und vom oberen Nachbarn wird dadurch erreicht, dass ein spezieller Internbefehl als Speicheranforderung entschlüsselt wird und die Speicheranforderungen der zwei zugreiffähigen Mikroprozessoren in der Schnitt-
EMI3.4
LDA 0401....
Bringe den Inhalt des Bytes mit der Adresse OC01 des linken unteren Nachbarn STA 0802.... Speichere den Inhalt des Akkumulators in das Byte mit derAdresse OC02 im rechten un- teren Nachbarn LDA 0007.... Bringe den Inhalt des Bytes mit der Adresse OC07 des eigenen --RAM-- in den Akkumu- lator (dasselbe Byte kann vom oberen Nachbarn mit der Adresse 0407 bzw. 0807 ange- sprochen werden, je nachdem ob der betrachtete Modul linker oder rechter unterer Nach- bar seines oberen Nachbarn ist) LDA 0006.... Bringe den Inhalt des Bytes mit der Adresse 0006 des privaten Speichers in denAkkumu- lator LDA 1100.... Bringe den Inhalt der drei Sensorbits in den Akkumulator.
Nach Ausführung des Befehls ist der Inhalt des Akkumulators wie folgt zu interpreteren:
<Desc/Clms Page number 4>
Bit-Nr.
EMI4.1
Inhalt von S T l'T 2
EMI4.2
EMI4.3
Der Logikplan für die Schnittstellenschaltung--IF--hat in diesem Beispiel die in Fig. 5 dargestellte Gestalt, wobei die für die technische Realisierung notwendige, für das Prinzip aber unwichtige spezielle Ausführung der gegenseitigen Sperre bei gleichzeitigem Zugriff auf den Speicher-RAM-- durchdeneigenen und den übergeordneten Mikroprozessor--liP--nicht im Detail dargestellt, sondern global durch das Kästchen"Busfreigabe"gekennzeichnet ist.
Als Beispiel für die Anwendung der zu einer Kaskade zusammengeschalteten --UHM-- zur maximalen parallelen Abarbeitung von rekursiv formulierten Algorithmen sei folgende rekursive Beschreibung des Tautologie-Problems gegeben. (Das Tautologie-Problem besteht darin, für einen beliebigen Boole'sehen Ausdruck t mit n Variablen festzustellen, ob er tautologisch ist, d. h. ob für jedebeliebige Belegung der Variablen mit den Wahrheitswerten 1 und 0 der Ausdruck t den Wahrheitswert 1 liefert) : taut (t, n) 4= n = 0 true (t) v n2 lez taut (subst (t, n, l), n-1)/\ taut (subst (t, n, 0), n-1).
Hierin bedeuten : taut (t, n).... derBoole'sche Ausdruck t hat höchstens n Variable und ist eine Tautologie subst(t,n,x)...Ergebnis der Substituenten des Wahrheitswertes x für die n-te Variable des Boole'sehen
Ausdrucks t true (t).... der Boole'sehe Ausdruck t enthält keine Variable und die Auswertung von t liefert den
Wahrheitswert 1.
Dieser rekursiv formulierte Algorithmus kann von der Kaskade dadurch abgearbeitet werden, dass man folgendes Programm in die Programmspeicher aller Moduln der Kaskade speichert (es müssen dazu mindestens n Stufen in der Kaskade vorhanden sein. Ausserdem sei vorausgesetzt, dass alle Moduln der Kaskade gleichzeitig gestartet werden, wobei am Anfang die Sensorbits aller Moduln auf 0 stehen mit Ausnahme des Sensorbits S des obersten Moduls in der Kaskade, welches auf 1 gesetzt sei. Das Programm sei in einer ALGOL-ähnlichen Sprache notiert, weil das Prinzip von jeder konkreten Internsprache unabhängig ist) :
<Desc/Clms Page number 5>
EMI5.1
**WARNUNG** Ende DESC Feld kannt Anfang CLMS uberlappen**.