Die Erfindung betrifft ein Verfahren zum Verzweigen bei der
Abarbeitung eines Programms durch einen Prozessor nach Pa
tentanspruch 1 und eine Vorrichtung zur Durchführung des
Verfahrens nach Patentanspruch 4.
Befehle zum Verzweigen bei der Programmabarbeitung durch ei
nen Prozessor - auch als Sprungbefehle bezeichnet - werden in
indirekte und direkte Sprungbefehle eingeteilt.
Indirekte Sprungbefehle berechnen dabei die Zieladresse der
Programmverzweigung bzw. des Sprunges indirekt über den In
halt eines sogenannten Indexregisters. Der Wert, der in dem
Indexregister gespeichert ist, ist während der Programmabar
beitung veränderbar, so daß das Sprungziel innerhalb bestimm
ter Bereiche programmierbar ist. Nachteilig ist dabei jedoch,
daß indirekte Sprungbefehle einstufig abgearbeitet werden
(eine Stufe zur Berechnung des Sprung- bzw. Verzwei
gungsziels) und der Sprung bzw. die Verzweigung nur aufwendig
mittels einer Vielzahl von Befehlen zweistufig ausgeführt
werden kann. Der Vorteil des Zweistufigkeit liegt in der
leichten Umprogrammierbarkeit und Anpassbarkeit von Sprung-
bzw. Verzweigungszielen während der Bearbeitung des Sprunges.
Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren
zum Verzweigen bei der Abarbeitung eines Programms durch
einen Prozessor und eine entsprechende Vorrichtung zur Durch
führung des Verfahrens zu schaffen, das eine zweistufige Pro
grammverzweigung mittels einer veränderbaren indirekten
Adressierung ermöglicht.
Diese Aufgabe wird durch ein Verfahren mit den Merkmalen des
Anspruchs 1 und durch eine Vorrichtung mit den Merkmalen des
Anspruchs 4 gelöst. Bevorzugte Ausführungsformen der Erfin
dung sind Gegenstand der Unteransprüche.
Erfindungsgemäß weist ein Verfahren zum Verzweigen bei der
Abarbeitung eines Programms durch einen Prozessor, wobei das
Programm in einem Programmspeicher abgelegt ist und ein Va
riablenspeicher und ein Tabellenspeicher vorgesehen sind, die
folgenden Schritte auf:
- a) Adressieren einer ersten Speicherzelle des Variablen
speichers,
- b) Adressieren einer zweiten Speicherzelle des Variablen
speichers abhängig vom Inhalt der in Schritt a) adressierten
ersten Speicherzelle und weiteren Parametern,
- c) Adressieren einer Speicherzelle des Tabellenspeichers
abhängig vom Inhalt der in Schritt b) adressierten zweiten
Speicherzelle, und
- d) Verzweigen zu einer Adresse des Programms, die in der in
Schritt c) adressierten Speicherzelle des Tabellenspeichers
abgelegt ist.
Vorteilhafterweise kann durch die zweistufige Verzweigung
(erste Stufe: Schritt a) und b), zweite Stufe: Schritt c))
eine variable indirekte Adressierung des Sprung- bzw. Ver
zweigungsziels erfolgen. Dabei kann die variable indirekte
Adressierung durch weitere Parameter in Schritt b) beeinflußt
werden.
Bevorzugt wird in Schritt b) die zweite Speicherzelle des Va
riablenspeichers von dem Ergebnis eines Befehls, der den In
halt der ersten Speicherzelle des Variablenspeichers und die
weiteren Parameter verarbeitet, adressiert.
Ferner erfolgt das Adressieren des Variablenspeichers mit ei
ner ersten Bitbreite a und das Adressieren des Tabellenspei
chers mit einer zweiten Bitbreite b, wobei die erste Bit
breite a und zweite Bitbreite b unterschiedlich groß sein
können.
Ferner betrifft die Erfindung eine Vorrichtung zum Verzweigen
bei der Abarbeitung eines Programms durch einen Prozessor,
wobei das Programm in einem Programmspeicher, der über einen
ersten bidirektionalen Bus mit dem Prozessor verbunden ist,
abgelegt ist. Weiterhin ist eine Adressiereinheit, die erste
Adressen über einen ersten Bus von dem Prozessor empfängt und
die ersten Adressen in zweite Adressen umwandelt und damit
über einen zweiten Bus einen Variablenspeicher, der über
einen dritten Bus von dem Prozessor auslesbar ist, adressiert
und ein Tabellenspeicher, der über einen zweiten
bidirektionalen Bus mit dem Prozessor verbunden, vorgesehen.
Bevorzugt ist eine Einrichtung, die über einen vierten Bus
Daten von dem Variablenspeicher und über einen fünften Bus
Daten von dem Prozessor empfängt und aus den empfangenen
Daten eine Adresse zur Adressierung des Variablenspeichers
über einen sechsten Bus berechnet, vorgesehen.
Ferner handelt es sich bei dem Variablenspeicher um einen
Schreib-/Lese-Speicher und der Tabellenspeicher ist vorzugs
weise als ein Schreib-/Lese-Speicher ausgelegt. Der Prozessor
ist bevorzugt als I/O-Prozessor zur Protokollverarbeitung
ausgeführt.
Bevorzugte Ausführungsformen der Erfindung werden nachfolgend
anhand der Zeichnungen erläutert. In der Zeichnung zeigt
Fig. 1 ein Ausführungsbeispiel des erfindungsgemäßen Ver
fahrens, und
Fig. 2 ein Ausführungsbeispiel der erfindungsgemäßen Vor
richtung zur Durchführung des Verfahrens.
In Fig. 1 ist das erfindungsgemäße Verfahren an Hand eines
Programmspeichers 5, eines Variablenspeichers 6 und eines Ta
bellenspeichers 7 schematisch dargestellt. Unter einem Pro
grammspeicher wird dabei ein Speicher, in dem ein Programm
abgelegt ist, das von einem Prozessor verarbeitet wird, ver
standen. Ein Variablenspeicher dient zum Ablegen von verän
derbaren Werten. In einem Tabellenspeicher sollen Festwerte
abgelegt sein.
In dem Programmspeicher 5 ist ein Programm abgelegt, das von
einem Prozessor abgearbeitet wird und einen Sprungbefehl, der
als BRI-Befehl (Branch-Indexed-Befehl) gekennzeichnet ist,
aufweist. Der BRI-Befehl, der im Programmspeicher 5 an der
Adresse x abgelegt ist, soll beispielsweise einen Sprung-
bzw. eine Verzweigung des Programms an die Speicherstelle mit
der Adresse x + y des Programmspeichers 5 ausführen. Der dazu
erforderliche Sprung 8 ist gestrichelt dargestellt.
Zur Ausführung dieser Verzweigung adressiert der BRI-Befehl
eine Speicherzelle, die als Register 12 gekennzeichnet ist,
in einem Variablenspeicher 6. Die Adressierung erfolgt dabei
über ein erstes Adressierungssignal 1, das eine Bitbreite von
a Bits aufweist.
In dem Register 12 des Variablenspeichers 6 ist die Adresse
einer weiteren Speicherzelle, die als Register 13 bezeichnet
ist, des Variablenspeichers 6 abgelegt. Diese Adresse kann
von einer Einheit 10, die weitere Parameter 11 erhält, verän
dert werden, dargestellt durch den Sprung 2.
Die Einheit 10 adressiert dann das Register 13 des Varia
blenspeichers 6. In der zweiten Speicherzelle bzw. dem Regi
ster 13 ist wiederum eine Adresse abgelegt, die zur Adressie
rung eines Tabellenspeichers 7 dient.
In dem Tabellenspeicher 7 sind verschiedene Werte für einen
Programmzähler, der den Programmspeicher 5 adressiert, abge
legt. Die in dem Register 13 des Variablenspeichers 6 abge
legte Adresse des Tabellenspeichers 7 weist eine Bitbreite
von b Bits auf. Zum Adressieren des Tabellenspeichers wird
der Inhalt des Registers 13 des Variablenspeichers 6 als
zweites Adreßsignal 3 an den Tabellenspeicher 7 geführt. Die
in dem Tabellenspeicher 7 adressierte Speicherzelle wird dann
ausgelesen und in den Programmzähler des Prozessors geladen.
Der dann in dem Programmzähler stehende neue Programmzähler
wert 14 adressiert nun (drittes Adressierungssignal 4 der
Breite c Bits) die Speicherzelle mit der Adresse x + y des
Programmspeichers, die das Verzweigungsziel 15 der Verzwei
gung bzw. des Sprunges im Programm angibt.
Durch die zweistufige Ausführung des Verfahrens - erste
Stufe: Adressieren des Variablenspeichers 6, zweite Stufe:
Adressieren des Tabellenspeichers 7 - kann ein indirekter
Verzweigungsbefehl, der auf dem erfindungsgemäßen Verfahren
basiert, sehr flexibel auf unterschiedliche Anforderungen
eingestellt werden.
Durch die zusätzliche Möglichkeit der Beeinflussung bzw. Ver
änderung durch die Einheit 10 der Adressierung des Registers
13 des Variablenspeichers kann das Sprung- bzw. Verzweigungs
ziel während der Abarbeitung des BRI-Befehls verändert wer
den.
Ein Prozessor, der den BRI-Befehl bearbeitet, kann bei
spielsweise durch einen zu verarbeitenden Datenstrom zur Än
derung des Verzweigungs- bzw. Sprungziels veranlaßt werden.
Durch die Parameter 11 kann der Prozessor nun die Einheit 10
so steuern, daß eine andere Speicherzelle bzw. ein anderes
Register des Variablenspeichers 6 anstelle des ursprünglich
durch den BRI-Befehl vorgesehenen Registers 13 des Varia
blenspeichers 6 adressieren. Damit kann das Sprung- bzw. Ver
zweigungsziel des BRI-Befehls noch während der Abarbeitung
der ersten Stufe des Befehls geändert werden.
Ferner besteht die Möglichkeit, den Inhalt des Variablen
speichers 6 durch den Prozessor oder durch andere Einrich
tungen mittels Umprogrammierung 9 zu verändern. Dadurch kön
nen die Sprung- bzw. die Verzweigungsziele der BRI-Befehle
verändert werden. Somit kann auf weitere Veränderungen des
Programmablaufes bzw. der Programmabarbeitung flexibel rea
giert werden.
In Fig. 2 ist eine Vorrichtung zur Durchführung des erfin
dungsgemäßen Verfahrens dargestellt. Elemente, die bereits in
Fig. 1 dargestellt sind, sind mit den gleichen Bezugszeichen
wie in Fig. 1 gekennzeichnet.
Ein Prozessor 100, der einen Programmzähler PC aufweist, ist
über Busse 111 und 112 mit weiteren Einrichtungen verbindbar.
Der Prozessor 100 adressiert über den Programmzähler PC einen
Programmspeicher 5, der über einen bidirektionalen Bus 103
mit dem Prozessor verbunden ist.
Trifft der Prozessor 100 bei der Abarbeitung eines Programms
aus dem Programmspeicher auf einen BRI-Befehl zur Programm
verzweigung, so adressiert der Prozessor 100 einen Varia
blenspeicher 6 über eine Adressiereinheit 101. Der Variablen
speicher 6 enthält wiederum Adressen zum Adressieren eines
Tabellenspeichers 7.
Die Adressiereinheit 101 empfängt dazu über einen unidirek
tionalen Bus 104 Adressen von dem Prozessor 100. Die Adres
siereinheit 101 wandelt diese Adressen in Adressen zum
Adressieren des Variablenspeichers 6, die über einen unidi
rektionalen Bus 105 von der Adressiereinheit 101 an den Va
riablenspeicher 6 übertragen werden. Im Variablenspeicher 6
wird dadurch eine Speicherzelle adressiert, die die Adresse
einer weiteren Speicherzelle des Variablenspeichers 6 ent
hält.
Der Inhalt der Speicherzelle des Variablenspeicher 6 wird
über einen unidirektionalen Bus 106 einer Einheit zur Adreß
berechnung 102 zugeführt.
Die Einheit zur Adreßberechnung 102 empfängt von dem Prozes
sor 100 weitere Daten über einen unidirektionalen Bus 108 und
berechnet aus dem Inhalt der Speicherzelle des Varia
blenspeichers 6 und den Daten vom Prozessor eine Adresse zum
Adressieren der weiteren Speicherzelle des Variablenspei
chers. Diese Adresse wird von der Einheit zur Adreßberechnung
102 an den Variablenspeicher 6 über einen unidirektionalen
Bus 107 übermittelt.
Durch diese indirekte Berechnung einer Adresse des Tabellen
speichers, der wiederum die Adressen der Sprungziele enthält,
ergibt sich die Möglichkeit zur Veränderung der Sprungziele
in Abhängigkeit von Daten, die der Prozessor 100 an die Ein
heit zur Adreßberechnung 102 sendet.
Der Inhalt der nun adressierten zweiten Speicherzelle des Va
riablenspeichers 6 wird über einen unidirektionalen Bus 109
vom Prozessor ausgelesen.
Der Prozessor adressiert daraufhin mittels dieser Adresse den
Tabellenspeicher 7, der über einen bidirektionalen Bus 110
mit dem Prozessor verbunden ist. Der Inhalt der adressierten
Speicherzelle des Tabellenspeichers 7 wird vom Prozessor über
den bidirektionalen Bus 110 ausgelesen und in den Programm
zähler PC geschrieben.
Der Programmzähler PC adressiert wiederum über den bidirek
tionalen Bus 103 den Programmspeicher an dem vorgesehenen
Sprung- bzw. Verzweigungsziel.
Der Variablenspeicher 6 ist zusätzlich über einen bidirek
tionalen Bus 113 durch den Prozessor umprogrammierbar. Da
durch können die in dem Variablenspeicher abgelegten Adressen
zur Adressierung des Tabellenspeichers 7 um-programmiert
werden.
Ferner ist der Tabellenspeicher 7 über den bidirektionalen
Bus 110 durch den Prozessor umprogrammierbar. Hierdurch er
öffnet sich eine weitere Möglichkeit der Umprogrammierung
aller Verzweigungen bzw. Sprungziele der BRI-Befehle.
Anwendung findet die Erfindung insbesondere bei besonderen
Prozessoren zur Protokollverarbeitung von Telekommunikati
onsprotokollen wie beispielsweise ISDN.
Bezugszeichenliste
1
Adressierungssignal
2
Adressierungssignal
3
Adressierungssignal
4
Adressierungssignal
5
Programmspeicher
6
Variablenspeicher
7
Tabellenspeicher
8
Sprung
9
Umprogrammierung
10
Einheit
11
Parameter
12
Register
13
Register
14
Programmzählerwert
15
Verzweigungsziel
100
Prozessor
101
Adressiereinheit
102
Adressberechnung
103
Bus
104
Bus
105
Bus
106
Bus
107
Bus
108
Bus
109
Bus
110
Bus
111
Bus
112
Bus