-
Schaltungsanordnung für einen Mikrocomputer
-
Die Erfindung betrifft eine Schaltungsanordnung für einen Mikrocomputer
mit einem Speicher zur Aufnahme eines implementierten Befehlsatzes in einer untergeordneten,
insbesondere maschinenorientierten Programmiersprache und einem Anwenderprogrammspeicher
zur Aufnahme der Anweisungen eines Anwenderprogramms in einer übergeordneten, insbesondere
problemorientierten Programmiersprache, sowie einem Interpretierer zur Übersetzung
der Anweisungen der übergeordneten Programmiersprache in Befehlsfolgen der untergeordneten
Programmiersprache, und ferner einem Programmzähler für die Befehle des Anwenderprogramms.
-
Bei Mikrocomputern mit implementierten Befehlssätzen werden bei der
Verwendung von übergeordneten, insbesondere problemorientierten Programmiersprachen,
z.B. FORTRAN, und untergeordneten, insbesondere maschinenorientierten Programmiersprachen,
z.B. ASSEMBLER, die einzelnen Befehle der übergeordneten Programmiersprache durch
eine Folge von Befehlen der untergeordneten Programmiersprache interpretiert. Jede
Interpretation erfordert eine Mehrfachprogrammverzweigung, wobei in der Regel die
Anzahl der Zweige der Anzahl der Befehle im Befehlsvorrat der untergeordneten Programmiersprache
entspricht.
-
Derartige Mehrfachprogrammverzweigungen werden bisher ausschließlich
durch Software verwirklicht. Hierbei wird ein Programmteil in der untergeordneten
Programmiersprache
geschrieben, das bei der Interpretation jedes
Befehls der übergeordneten Programmiersprache zuerst durchlaufen wird und die Anfangsadresse
des gerade zu interpretierenden Befehls in den Programmzähler lädt. Ist ein derartiges
indirektes Laden des Programmzählers nicht möglich, so wird eine Mehrfachprogrammverzweigung
durch eine Folge von Einfachverzweigungen nachgebildet, was einen großen Zeitaufwand
bei der Abarbeitung des Anwenderprogramms durch den Mikroprozessor erfordert. Die
Abarbeitung einer Mehrfachverzweigung, die ausschließlich durch Software verwirklicht
wird, benötigt somit einen erheblichen Teil der Bearbeitungszeit des Zweiges selbst.
-
Bei der schnellen Steuerung technischer Abläufe durch einen Mikroprozessor
mit implementiertem Befehlssatz wird durch derartige Mehrfachprogrammverzweigungen
die Ablaufsteuerung unerwünscht verlangsamt. Dies kann zur Ineffizienz einer der
Maschinensprache übergeordneten Sprache führen, bzw. führt allgemein bei einer hierarchischen
Ordnung mehrerer Programmiersprachen zu steigender Ineffizienz in Richtung der höchsten
Sprache.
-
Der Erfindung liegt die Aufgabe zugrunde, eine Schaltungsanordnung
für einen Mikroprozessor mit implementiertem Befehlssatz anzugeben, die eine schnellere
Realisierung einer Mehrfachprogrammverzweigung bei der Interpretation einer übergeordneten
Programmiersprache durch eine untergeordnete Programmiersprache ermöglicht.
-
Erfindungsgemäß wird diese Aufgabe gelöst durch einen Festwertspeicher
zur Aufnahme der Adressen für den Interpretierer und einn direkt übernehmenden Speicher,
wobei die Eingänge des Festwertspeichers an diejenigen Leitungen des Datenbus angeschlossen
sind, die mit dem
Operationscode der übergeordneten Programmiersprache
belegt sind, und die Ausgänge des Festwertspeichers mit den Dateneingängen des direkt
übernehmenden Speichers verbunden sind, der von einem Adressdecoder mit Ladesteuersignalen
und Lesesteuersignalen gesteuert wird.
-
Bei der erfindungsgemäßen Schaltungsanordnung wird die Schaltung des
Mikrocomputers durch einen Festwertspeicher und ein direkt übernehmendes Register
ergänzt.
-
Die Funktion dieser ergänzten Schaltungsanordnung besteht darin, daß
ein Sprungbefehl in der untergeordneten Programmiersprache, der eine Ladung des
Programmzählers mit konstanter Adresse beinhaltet, derart modifiziert wird, daß
die Speicherzelle, die die Sprungadresse enthalten soll, mit der jeweils gewünschten
Sprungadresse, die der Anfangsadresse des zu interpretierenden Befehls der übergeordneten
Programmsprache entspricht, überschrieben wird, bevor die Sprungadresse in den Programmzähler
geladen wird. Dieser Vorgang wird durch sehr wenige Befehle der untergeordneten
Programmiersprache gesteuert. Der entsprechende Programmteil zur Steuerung enthält
einen Befehl, der das Kriterium für die Verzweigung im Befehlscode der übergeordneten
Sprache auf den Datenbus des Mirkocomputers ausgibt und aus dem modifizierten Sprungbefehl,
der eine Mehrfachverzweigung durch einen unbedingten Sprungbefehl bewirkt.
-
Die Erfindung wird anhand der in der Zeichnung dargestellten Ausführungsbeispiele
im einzelnen beschrieben, wobei zur besseren Übersicht nur die zum Verständnis der
Erfindung notwendigen Elemente und Verbindungen eines Mikrocomputers schematisch
dargestellt sind. Es zeigen:
FIG 1 eine schematische Darstellung
eines ersten Ausführungsbeispieles der Erfindung, FIG 2 eine schematische Darstellung
eines weiteren Ausführungsbeispieles der Erfindung.
-
FIG 1 zeigt den Schaitungsaufbau eines Mikrocomputers.
-
An die Bus struktur 1 des Mikrocomputers sind angeschlossen ein Mikroprozessor
2 mit einem Programmzähler 3 für die in der übergeordneten Programmiersprache geschrietenen
Anweisungen eines Anwenderprogramms, ein Anwenderprogrammspeicher 4, der die Anweisungen
des Anwenderprogramms enthält und ein Interpretorspeicher 5, der das Interpretationsprogramm
enthält. Der Interpretorspeicher 5 ist in eine Anzahl von Speicherbereiche eingeteilt.
In jedem dieser Speicherbereiche ist eine Befehlsfolge in der untergeordneten, insbesondere
maschinenorientierten Programmiersprache eingeschrieben, die eine Anweisung in der
übergeordneten Programmiersprache interpretiert. Am Ende eines jeden Speicherbereichs
des Interpretorspeichers 5 ist ein Rücksprungbefehl programmiert. Der Interpretorspeicher
5 enthält weiterhin einen Speicherbereich, in dem die Befehle für den Interpretoreinsprung
und für das Befehlsholen gespeichert sind. In einem letzten Speicherbereich schließlich
ist ein unbedigter Sprungbefehl gespeichert.
-
Der dargestellte Mikrocomputer enthält weiterhin die erfindungsgemäßen
Elemente, nämlich einen Festwertspeicher 7, insbesondere ein PROM, einen direkt
übernehmenden Speicher 8 und einen Adressdecoder 6. Die Eingänge des Festwertspeichers
7 sind an den Datenbus angeschlossen, der eine der Wortbreite der untergeordneten
Programmiersprache entsprechende Anzahl n von Leitungen aufweist. Die Anzahl der
Adressen des Festwert-
speichers entspricht der Operationscodelänge
OC der übergeordneten Programmiersprache. Für die Anzahl c der eingangsseitigen
Adressleitungen des Festwertspeichers 7 gilt die Beziehung (1): OC = 2C (1) Der
Festwertspeicher 7 enthält eine Anzahl von adressierbaren Speicherplätzen, in denen
die Einsprungadressen für den Interpretorspeicher 5 fest gespeichert sind. Die Anzahl
der Ausgänge des Festwertspeichers 7 entspricht der Adressbreite AB für das Interpretationsprogramm,
die dem Logarithmus der Basis 2 der Länge des Interpretationsprogramms in Anzahl
der Speicherworte entspricht. Die Ausgänge des Festwertspeichers 7 sind mit einer
ersten Anzahl AB von Eingängen des direkt übernehmenden Speichers 8 verbunden. Der
direkt übernehmende Speicher 8 ist vorzugsweise als D-Register in TTL-Technik mit
tristate-Ausgängen ausgebildet. Eine weitere Anzahl Eingänge AG des D-Registers
8 sind mit den höherwertigen Bits für die Anfangsadresse des Interpretationsprogramms
im Adressbereich und den restlichen Bits des JUMP-Code der Anzahl k verbunden. Es
gilt für die Eingänge AG die Beziehung (2): AG = n-AB+k (2) Das D-Register 8 wird
vom Adressdecoder 6 gesteuert, der eingangsseitig an den Steuerbus und den Adressbus
n-k in der Busstruktur angeschlossen ist. Der Adressdecoder 6 erzeugt ein Ladesteuersignal
für den entsprechenden Eingang G des D-Registers 8, das bei der Adresse j-l aktiviert
wird, sowie ein Lesesteuersignal für den entsprechenden Eingang OE des D-Registers
8, das bei der Adresse j aktiviert wird. Die Adressen j-l und j sind die Adressen
des modifizierbaren JUMP-Befehls, die neben der Schaltungsdarstellung angegeben
sind. Dabei entspricht
die Wortbreite n entweder 0 oder n. Weiterhin
ento spricht nO+k der Länge des JUMP-Operationscodes und n-k der Länge der JUMP-Adresse,
die wiederum der Größe des Adressbereichs entspricht.
-
Die Aktivierung der erfindungsgemäßen Schaltungsergänzung eines Mikrocomputers
erfolgt durch einen Programmteil, der aus einem Befehl besteht, der das Kriterium
für die Verzweigung im Befehlscode der übergeordneten Programmiersprache auf den
Datenbus des Mikroprozessorsystems ausgibt, und aus dem unbedingten Sprungbefehl,
der die Mehrfachverzweigung bewirkt. Durch diesen Programmteil wird der Sprungbefehl
in der untergeordneten Programmiersprache, der eine Programmzählerladung mit konstanter
Adresse bewikt, über den Festwertspeicher 7 und das D-Register 8 derart modifiziert,
daß die Speicherzelle, die die Sprungadresse enthalten soll, mit der Anfangsadresse
des zu interpretierenden Befehls als neuer Sprungadresse überschrieben wird, bevor
sie in den Programmzähler geladen wird. Damit ergibt sich folgender Funktionsablauf
bei einer Abarbeitung eines Befehls der übergeordneten Programmiersprache: Der Befehl
in der übergeordneten Programmiersprache wird in den Mikroprozessor geladen. Der
Mikroprozessor läuft auf die Adresse j-1 und führt einen Sprungbefehl (JUMP) aus.
Dabei schaltet der Programmzähler des Mikroprozessors automatisch auf die Adresse
j. Bei der Adresse j steht die vom Festwertspeicher 7 interpretierte Einsprungadresse
für den Prozessor im D-Register 8 bereit.
-
Damit wird der Programmzähler 3 des Mikroprozessors 2 auf den Anfang
des entsprechenden Interpretationszweiges im Interpretorspeicher 5 gestellt. Der
Befehl in der übergeordneten Programmiersprache kann somit ohne zusätzliche Zeitverzögerung
interpretiert werden.
-
FIG 2 zeigt eine ähnlich aufgebaute Anordnung, bei der jedoch im Gegensatz
zu FIG 1 zwei Festwertspeichern 8a und 8b vorgesehen sind. Bei dieser Ausführungsform
besteht die Sprungadresse aus zwei aufeinanderfolgenden Speicherworten, die jeweils
in einem der beiden Festwertspeicher 8a, 8b fest eingespeichert sind. Beide D-Register
8a und 8b werden an ihren Eingängen G von einem Ladesteuersignal bei der Adresse
j-1 aktiviert und übernehmen dabei die an ihren Dateneingängen anstehenden Informationen.
Die Dateneingänge AG1 des D-Registers 8a entsprechen den restlichen JUMP-Code Bits
k. Die weiteren Dateneingänge n-AG1 des Festwertspeichers 8a sind mit einem Teil
der Ausgänge AB des Festwertspeichers 7 verbunden. Die Dateneingänge AG2 des D-Registers
8b sind mit den höherwertigen Bits für die Anfangsadresse des Interpretationsprogramms
im Adressbereich belegt. Es gilt die Beziehung (3): AG2 - 2n-AB-k. (3) Ausgangsseitig
sind die beiden D-Register 8a und 8b mit dem Datenbus verbunden, wobei n wiederum
der Wortbreite der untergeordneten Programmiersprache entspricht.
-
Der Adressdecoder 6', der eingangsseitig wiederum mit dem Steuerbus
und dem Adressbus 2n-k verbunden ist, erzeugt ein Lesesteuersignal für den entsprechenden
Eingang OE1 des D-Registers 8a, das bei der Adresse j aktiviert wird, sowie ein
Lesesteuersignal für den entsprechenden Eingang OE2 des D-Registers 8b, das bei
der Adresse j+1 aktiviert wird.
-
Die Eingangsbeschaltung der beiden D-Register 8a und 8b kann alternativ
auch so vorgenommen werden, daß die Dateneingänge AG1 des D-Registers 8a mit den
restlichen JUMP-Code Bits und höherwertigen Bits für die Anfangs-
adresse
des Interpretationsprogramms im Adressbereich belegt sind und die Dateneingänge
AG2 des D-Registers 8b mit AK belegt sind.
-
Neben der Schaltungsdarstellung der FIG 2 sind die Speicheradressen
j-1, j, j+1 des modifizierbaren JUMP-Befehls veranschaulicht. Die Wortbreite nO
entspricht entweder 0 oder der Wortbreite n der untergeordneten Programmiersprache.
n +k entspricht der Länge 0 des JUMP-Operationscodes. 2n-k entspricht der Länge
der JUMP-Adresse und damit der Größe des Adressbereichs.
-
1 Patentanspruch 2 Figuren