-
Die Erfindung bezieht sich auf einen mehrfach ausge-
-
nutzten Mikroprozessor. Es handelt sich dabei um den Aufbau und die
Architektur eines einzelnen digitalen Mikroprozessors, derart, daß zwei oder noch
mehr Programme gleichzeitig nebeneinander darauf ausgeführt werden können Ein solches
Ziel wurde auch schon bisher angestrebt, was zu einer Vielfalt von Lösungen führte,
welche sämtlich die Verdopplung zahlreicher innerer Teile eines Prozessors erforderten,
derart, daß einzigartige Speicher oder Register oder arithmetische Logikbausteine
oder Steuerschaltungen geschaffen wurden. Diese besonderen parallelen inneren Teile
werden dann dem Gebrauch jeweils eines Programmes zugewiesen. Eine Durchsicht des
bisherigen Standes der Technik zeigt, daß die Auswahl der zu verdoppelnden bzw.
-
zu vervielfältigenden Teile mehr eine Funktion der geschichtlichen
Entwicklung als eine Erfindung ist. Es werden bis zu dem Stand von heute immer diejenigen
Teile, welche zufällig die langsamsten sind, in paralleler Anordnung verdoppelt
und dem jeweils zu durchlaufenden Programm zugewiesen, während schnellere Teile
zeitlich verzahnt werden.
-
Um dies zu belegen, wird hingewiesen auf die U.S.-Patente 4,156,925,
4,164,787, 3,980,992, 3,896,418, 3,757,306, 3,689,895, 3,676,852, 3,573,852, 3,566,357,
3,449,724, 3,449,723, 3,373,408, 3,245,047, 3,202,969 und 4,197,579.
-
Aus diesen Druckschriften ergeben sich die ausführlichen und umständlichen
bekannten Lösungsvorschläge, die darauf hinauslaufen, die schnellsten Teile des
Prozessors ständig
in Betrieb zu halten, statt sie im Leerlauf auf
die langsameren Komponenten warten zu lassen.
-
Die hier am meisten interessierende Druckschrift dürfte die an letzter
Stelle genannte U.S.-Patentschrift 4,197,579 sein. Darin wird gelehrt, daß ein Mikroprozessor
zur Verarbeitung einer neuen Instruktion in Betrieb genommen werden kann, bevor
er eine alte Instruktion vollendet hat, da ein begrenztes Zeitintervall vorhanden
ist, in welchem die elektrischen Signale die für einen Prozessor typischen Arbeitszyklen,
nämlich Auswahl, Heranholen, Dekodieren und Ausführung der Instruktion durchlaufen
können. Daher müssen die der Auswahl und dem Heranholen zugeordneten Teile des Stromkreises
im nutzlosen Stillstand verbleiben, während die der Dekodieren und Ausführung zugeordneten
Teile in Betrieb sind. Diese Leerlauf- oder Stillstandszeit wird nach der Lehre
der letztgenannten U.S.-Patentschrift benutzt, um eine neue Instruktion aus einem
besonderen Programm den Arbeitszyklus durchlaufen zu lassen, so daß zwei Programme
in der gleichen Zeit ablaufen können wie eines. Um jedoch sicher zu sein, daß die
neue Instruktion die alte nicht überholt und eine gegenseitige Störung beider eintritt,
müssen auch hier einmal wieder parallel vorgesehene Instruktionsadressenregister
und Speicher, jeweils ein Satz für jedes Programm, vorgesehen werden, und es müssen
abwechselnd deren Ausgänge mit einem genauen Taktsignal im Sinne einer Sperrung
und Öffnung gesteuert werden. Daher
benötigt auch dieser bekannte
Vorschlag, wie alle übrigen bekannten Vorschläge, eine Anzahl überschüssiger paralleler
Teile für den ausschließlichen Gebrauch jeweils eines Programmes. Zusätzliche Teile
bedeuten aber einen zusätzlichen Platzbedarf auf dem Plättchen und zusätzliche Kosten.
-
Der Erfindung liegt die Aufgabe zugrunde, die Ausführung mehrerer
Programme gleichzeitig nebeneinander ohne einen derartigen zusätzlichen Aufwand
zu ermöglichen.
-
Beim Gegenstand der Erfindung werden keine parallelen Teile vorgesehen,
die getrennten Programmen zugewiesen sind. Jeder Teil der Schaltung wird vielmehr
gleichmäßig durch alle zum Ablauf kommenden Programme ausgenutzt.
-
Dabei besteht die Möglichkeit, mehrere Programme auf einem Mikroprozessor
gleichzeitig nebeneinander ablaufen zu lassen. Kurz gesagt geschieht dies durch
Auswählen einer Instruktion aus dem ersten Programm, im Anschluß daran einer Instruktion
aus dem zweiten Programm, danach einer Instruktion aus einem dritten Programm und
sofort, wobei diese Instruktionen über eine Aufreihung oder Warteschlange geleitet
werden, so daß sie bei zeitlicher Verzahnung vermischt (in a time shared intermixed
manner) ausgeführt werden. Die Warteschlange wird in Form eines Schieberegisters
verwirklicht, das soviele Stufen hat wie zu durchlaufende Programme vorhanden sind,
wobei die jeweils nächste Instruktion in irgendeinem Programm - sei es ausgewählt
durch einen Incrementer, einen Programmsprung oder durch Speicherwahl - zwangsweise
dazu gebracht wird,
erneut in die Warteschlange oder das Schieberegister
am Anfang einzutreten und sich einzureihen, um die Ausführung abzuwarten, bis eine
Instruktion aus allen anderen Programmen ausgeführt worden ist. Um sicherzustellen,
daß die arithmetische Logik auf die richtigen vorangegangenen Daten zugreift, die
mit dem bei einer gegebenen Instruktion gerade in Ausführung begriffenen Programm
verbunden ist, erfolgt auch ein Umlauf des Ausgangs der arithmetischen Einheit über
eine Warteschlange, die als Daten-Warteschlange bezeichnet werden kann und gleichfalls
aus einem Schieberegister gebildet wird, das die gleiche Zahl von Stufen aufweist
wie die Instruktions-Warteschlange.
-
Wenn die Daten erneut aus der Warteschlange hervortreten, sind sie
im Synchronismus mit der betreffenden Instruktion aus demselben Programm und daher
einwandfrei verfügbar zur Verwendung durch die arithmetische Einheit. Alle Programme
laufen durch die Warteschlangen nacheinander in einer rotierenden Folge und gebrauchen
alle Teile des Prozessors in gleicher Weise. Daher laufen alle Programme simultan,
was den Prozessor gemäß der Erfindung besonders geeignet zur gleichzeitigen Steuerung
mehrerer Vorrichtungen macht, wobei Wert darauf gelegt wird, sämtlichen Vorrichtungen
ständige Aufmerksamkeit zuzuwenden, aber nicht das Äußerste hinsichtlich der möglichen
Geschwindigkeit gefordert wird.
-
Im folgenden ist die Erfindung anhand der Zeichnungen näher erläutert.
Es zeigen
F i g . 1 ein grundsätzliches Flußdiagramm für irgendeinen
Prozessor, bei dem die Architektur gemäß der Erfindung verwendet ist; F i g . 2
ein schematisches Schaltbild einer bevorzugten Ausführungsform der Erfindung.
-
In Fig. 1 ist die Anordnung eines Prozessors gemäß der Erfindung
als Blockschema dargestellt. Mit der gestrichelten Linie 40 ist eine Instruktions-Warteschlange
und mit der gestrichelten Linie 42 eine Daten-Warteschlange bezeichnet. Jede Warteschlange
hat bei diesem Ausführungsbeispiel drei Stufen zur Aufnahme dreier Programme 44,
48 und 50 in der Instruktions-Warteschlange und 45, 49, 51 in der Daten-Warteschlange.
Die Stufen können in Reihe geschaltete miteinander verbundene Register aufweisen,
um ein Schieberegister oder irgendeine andere Schaltungsanordnung zu bilden, die
geeignet ist, mehrere Bitworte aufeinanderfolgend zu einem Zug zu ordnen und sie
so dem Prozessor darzubieten. Fig. 1 kann gewissermaßen als ein Schnappschuß des
Systems in einem Augenblick angesehen werden, wo gerade eine Instruktion in einem
Programm A aus der Stufe 44 einem Mikroprozessor 47 in Verbindung mit Daten aus
vorangegangenen Instruktionsausführungen des Programms A aus der Stufe 45 dargeboten
wird. Die Ausgangsdaten aus dem Prozessor 47 werden in die Daten-Warteschlange am
Eingang der Stufe 51 zurückgeführt und alle übrigen Daten werden im Takt um eine
Stufe in der Warteschlange von 51 nach 49, von 49 nach 45, usw. vorgeschoben. Zur
gleichen Zeit wird eine Ein-
richtung zur Auswahl der nächsten
Instruktion 52 durch den Ausgang der Stufe 44 getriggert. Sie dient dazu, die nächste
Instruktion zu wählen. Die Einrichtung 52 enthält geeignete, an sich bekannte Mittel
für die Wahl der nächsten Instruktion, wie z.B. jeweils eine Einheit hinzufügende
Incrementer (add one incrementers), Sprungadressierung (jump addressing), Speicherauswahlen
(selections from memory) oder Unterbrechungen (interrupts).
-
Was für eine Wählvorrichtung aber auch benutzt wird, die Anforderung
wird nicht unmittelbar eingelöst, sondern muß an den Eingang der Stufe 50 der Instruktions-Warteschlange
gehen. Andere Instruktionsanforderungen werden im Takt um eine Stufe in der Warteschlange
von 50 nach 48, von 48 nach 44, usw. vorgeschoben.
-
Normalerweise werden Instruktionswörter in einem Speicher oder Gedächtnis
gespeichert und mit einer Adresse abgerufen. Daher ist der geeignetesteWeg, Instruktionen
warten zu lassen, derjenige mit einer Instruktionsadressen-Warteschlange. Eine entsprechende
Schaltung ist in Fig. 2 veranschaulicht.
-
Fig. 2 zeigt ein Schaltschema für eine Ausführungsform der Erfindung,
bei der zwei Programme gleichzeitig ablaufen können.
-
Der Vorgang kann eingeleitet werden, indem eine Instruktionsadresse
aus einer Datenquelle 10 über einen Programmadressen-Logikbaustein 12 in ein Adressenregister
14 eingeführt wird. Dieses Adressenregister kann die erste
von
einer Reihe einem ersten Programm zugeordneter Instruktionsadressen bilden.
-
Beim nächsten Taktzyklus wird die Adresse in dem Register 14 um eine
Stufe in das Adressenregister 16 weitergeschoben und eine zweite Instruktionsadresse
aus der Quelle 10 wird durch die Logik 12 in das Register 14 gegattert oder durchgelassen.
Diese zweite Instruktionsadresse kann nunmehr der ersten einer Reihe von einem zweiten
Programm zugeordneten Instruktionen bestimmt sein. Der Prozessor ist nunmehr in
die Lage versetzt, die gleichzeitige Verarbeitung beider Programme zu beginnen.
Naturgemäß können auch andere an sich bekannte Möglichkeiten zur Einleitung des
Vorgangs benutzt werden. Z.B. könnte ein Rücksetzsignal an die Register 14 und 16
angelegt werden, um diese auf die richtigen beiden Anfangsadressen zu setzen oder
einzustellen.
-
Beim nächsten Taktzyklus wird die Adresse in dem Register 16 auf
einen Speicher 18 gerichtet. Die Instruktion aus der adressierten Stelle in dem
Speicher 18 wird durch einen Instruktionsdekoder 20 dekodiert. Damit werden Steuersignale
entwickelt, die von der Gatter- und Steuerlogik 22 (in Fig. 2 durch zwei getrennte
Blöcke dargestellt) benutzt werden, um einen arithmetischen Logikbaustein 23, einen
Ausgang 24 und ein Sammlerregister 25 zu regulieren. Auf diese Weise wird die jeweilige
mathematische Berechnung, Datenübertragung oder sonstige Tätigkeit, welche durch
die aus dem Register
16 adressierte gespeicherte Instruktion abgerufen
wird, durch den Prozessor ausgeführt und das Ergebnis wird in dem Register 25 gespeichert.
-
Während die Instruktion ausgeführt wird, wird die von dem Register
16 zu dem Speicher 18 geschobene Adresse auch über eine Leitung 26 an einen Incrementer
28 geführt, wo sie um eins vermehrt wird. Diese neue Adresse läuft, wenn sie durch
die Logik 12 gewählt wird, beim nächsten Taktzyklus in das Register 14. Die vorher
in dem Register 14 befindliche Adresse wird zu dem Register 16 verschoben.
-
Nunmehr befindet sich die Adresse der ersten Instruktion des zweiten
Programms in dem Register 16 und die Adresse der nächsten Instruktion des ersten
Programms steht in dem Register 14 und wartet auf ihre Übertragung an den Prozessor.
-
Beim nächsten Taktzyklus wird die Adresse in dem Register 16 gleichzeitig
zu dem Incrementer 28 zur Vergrößerung um eins und zu dem Speicher 16 geleitet,
um die erste Instruktion für das zweite Programm aufzurufen. Diese Instruktion wird
wie früher beschrieben ausgeführt und das Ergebnis in dem Register 25 gespeichert.
Das vorher in dem Register 25 gespeicherte Ergebnis wird zu einem anderen Sammlerregister
30 weitergeschoben. Die Adresse der nächsten Instruktion an dem ersten Programm
verschiebt sich von dem Register 14 zu dem Register 16, und die aktualisierte nächste
Adresse für das zweite Programm aus dem Incrementer 28 (oder einer anderen Quelle)
wird in dem Register 14 gespeichert.
-
Nun befindet sich die nächste Instruktionsadresse für das erste Programm
in dem Register 16 und die nächste Instruktionsadresse für das zweite Programm steht
in Wartestellung in dem Register 14.
-
Beim nächsten Taktzyklus kann die nächste Instruktion in dem ersten
Programm ausgeführt werden. Das vorhergehende Ergebnis des ersten Programms ist
in dem Register 30 verfügbar, um erforderlichenfalls durch die arithmetische Einheit
23 benutzt zu werden, da das Ergebnis des ersten Programms durch die Register 25
und 30 im Synchronismus mit der Verschiebung der Adressen für Instruktionen durch
die Register 14 und 16 verschoben worden ist. In gleicher Weise kann beim nächsten
Taktzyklus die nächste Instruktion aus dem zweiten Programm ausgeführt werden. Das
Ergebnis der vorhergehenden Instruktion in dem zweiten Programm ist dann, falls
erforderlich, an dem Register 30 verfügbar.
-
Es ist ohne weiteres ersichtlich, daß es durch die Erfindung möglich
wird, eine beliebige Zahl getrennter Programme auf einem Mikroprozessor nebeneinander
ablaufen zu lassen, da einfach dadurch, daß zusätzlich eine gleiche Anzahl von Adressenregister
und Sammlerregister vorgesehen wird. Z.B. kann man fünf Programme ablaufen lassen,
wenn die Register 14 und 16 durch fünf folgende Adressenregister und die Register
25 und 30 durch fünf Sammlerregister ersetzt wurden. Natürlich läuft jedes Programm
fünfmal langsamer als es geschähe, wenn ihm ein
eigener Mikroprozessor
zugewiesen wäre, aber ein solcher Geschwindigkeitsverlust ist oftmals kein Problem
bei den praktischen Anwendungen. Außerdem ist die Kostenersparnis eine geradezu
dramatische, da die Schaltung mit allen ihren Einzelheiten mehrfach ausgenutzt wird.
Es wird nur ein einziger Instruktionsspeicher 18 benötigt, da jedes Programm jede
beliebige Speicherstelle adressieren kann. Es wird ferner nur ein einziger Satz
von Sammelleitungen, eine einzige arithmetische Einheit 23, ein Incrementer 28,
eine Logik 12 und eine Logik 22 benötigt, und der Dekoder 20 dient, da er mit zeitlicher
Verzahnung arbeitet (on a time shared basis), allen Programmen. Dies steht im Gegensatz
zu den umständlichen früheren Dualprozessoren, die in aller Regel getrennte Instruktionsspeicher,
getrennte zugewiesene Speicherregister, getrennte zugewiesene Adressenregister und
umständliche besondere Sammelleitungen und Steuerlogiken aufweisen, um zu gewährleisten,
daß ein Programm immer einen Speicher adressiert und eine Speicherung in einem Register
vornimmt, während das andere Programm immer den anderen Speicher adressiert und
die Speicherung in einem anderen Register bewirkt. Offensichtlich können solche
früheren Lösungsprinzipien nicht ohne weiteres derart erweitert werden, daß sie
fünf getrennte Programme mit einer Leichtigkeit und Einfachheit verarbeiten, wie
sie durch die Erfindung geboten wird.
-
Leerseite