DE19640316A1 - Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher - Google Patents
Schaltungsanordnung mit einem Mikroprozessor und einem StapelspeicherInfo
- Publication number
- DE19640316A1 DE19640316A1 DE19640316A DE19640316A DE19640316A1 DE 19640316 A1 DE19640316 A1 DE 19640316A1 DE 19640316 A DE19640316 A DE 19640316A DE 19640316 A DE19640316 A DE 19640316A DE 19640316 A1 DE19640316 A1 DE 19640316A1
- Authority
- DE
- Germany
- Prior art keywords
- stack
- memory
- register
- circuit arrangement
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Description
Mikroprozessoren benötigen zum Abarbeiten von durch sie aus
zuführenden Programmen einen Stapelspeicher. Immer wenn der
Prozessor bei der Abarbeitung eines Programmes nicht nur se
quentiell aufeinanderfolgende Programmanweisungen abzuarbei
ten hat, sondern, wie zum Beispiel bei einem Unterprogramm-Auf
ruf einen Programmsprung auszuführen hat, dient der Sta
pelspeicher (auch "Stack" genannt) zur Aufnahme einer Rück
sprungadresse, zu der er nach Beendigung des Unterprogramms
zurückspringt, um an derselben Stelle, von wo er den Unter
programmsprung aus unternommen hat, die Abarbeitung des Pro
gramms fortzusetzen. Zur Verwaltung des Stapelspeichers ist
ein sogenannter Stapelzeiger oder Stack Pointer vorhanden,
der für gewöhnlich die Adresse des letzten Eintrags in den
Stapelspeicher enthält und bei einem neuen Eintrag in den
Stapelspeicher entsprechend inkrementiert wird. Es ist auch
üblich, außer Rücksprungadressen auch Variablen im Sta
pelspeicher zu speichern.
Ein durch den Prozessor abzuarbeitendes Programm wird zu die
sem Zweck in einem Arbeitsspeicher des Prozessors geladen,
der gewöhnlich durch ein RAM (Random Access Memory) reali
siert ist. Der Arbeitsspeicher befindet sich dabei in einem
logischen Adreßraum, der über Adreßausgänge des Prozessors
direkt adressierbar ist.
Es ist üblich, auch den Stapelspeicher im genannten logischen
Adreßraum anzuordnen. Dies hat zur Folge, daß sich Sta
pelspeicher und Arbeitsspeicher den verfügbaren logischen
Adreßraum, dessen Größe durch die Anzahl der Adreßausgänge
des Prozessors festgelegt ist, teilen. Bei beispielsweise le
diglich acht Adreßausgängen, wie sie bei Microcontrollern
vom Typ 8051 vorhanden sind, ist der direkt über die Adreß
ausgänge des Controllers adressierbare logische Adreßraum
nur 256 Byte groß. Je nach Komplexität des abzuarbeitenden
Programms und die maximale Anzahl von zu bewerkstelligenden
Unterprogrammaufrufen ergibt sich die Größe für den benötig
ten Stapelspeicher. Damit ist die Stapelspeichergröße direkt
abhängig von der Art des abzuarbeitenden Programms. Bei der
Herstellung des Mikroprozessors ist es für gewöhnlich aber
nicht bekannt, welche Art von Software letztlich von ihm ab
gearbeitet werden soll. Daher ist der Stapelspeicher für ge
wöhnlich relativ groß dimensioniert, so daß auch komplexe
Programme vom Prozessor bewältigt werden können. Für viele
andere, nicht so komplexe Anwendungen ist der Stapelspeicher
dann jedoch überdimensioniert.
Der Stapelspeicher wird in der Regel im oberen Adreßbereich
des logischen Adreßraums des Mikroprozessors angeordnet. Zu
diesem Zweck wird der Stapelzeiger bei der Inbetriebnahme be
ziehungsweise Initialisierung des Prozessors auf die unterste
Adresse des Stapelspeichers voreingestellt. Werden anschlie
ßend Daten im Stapelspeicher abgelegt, wird der Stapelzeiger
entsprechend inkrementiert. Für den Arbeitsspeicher des Pro
zessors steht dann im logischen Adreßraum nur der Bereich
von dessen Beginn bis zum Anfang des Stapelspeichers zur Ver
fügung. Für den oben bereits erwähnten Microcontroller vom
Typ 8051 mit einem logischen Adreßraum von lediglich
256 Byte verbleiben bei einer Größe des Stapelspeichers von
zum Beispiel 64 Byte lediglich 192 Byte für den Arbeitsspei
cher. Die verbleibende Größe des Arbeitsspeichers ist jedoch
ausschlaggebend für die Gestaltungsmöglichkeiten eines Pro
grammierers und für die Geschwindigkeit, mit der Programme
vom Prozessor abgearbeitet werden können.
Der Erfindung liegt die Aufgabe zugrunde, eine Schaltungsan
ordnung mit einem Mikroprozessor und einem Stapelspeicher für
den Mikroprozessor zu schaffen, bei der ein möglichst großer
Bereich des vom Prozessor über seine Adreßausgänge direkt
adressierbaren logischen Adreßraums für den Arbeitsspeicher
zur Verfügung steht und ein möglichst geringer Teil des logi
schen Adreßraums durch den Stapelspeicher belegt wird.
Diese Aufgabe wird durch eine Schaltungsanordnung gemäß An
spruch 1 gelöst. Erfindungsgemäß ist es vorgesehen, wenig
stens einen Teil des Stapelspeichers außerhalb des direkt
adressierbaren logischen Adreßraums des Mikroprozessors an
zuordnen.
Besonders einfach ist dies erreichbar, indem der Stapelspei
cher in jeweils gleich große Speicherbereiche aufgeteilt ist,
von denen nur einer im direkt adressierbaren logischen
Adreßraum angeordnet ist. Es ist dann in einfacher Weise
möglich, denjenigen der Speicherbereiche, der sich im logi
schen Adreßraum befindet, über die Adreßausgänge des Mikro
prozessors direkt zu adressieren, während zur Adreßierung
der übrigen Speicherbereiche des Stapelspeichers eine spezi
elle Logik notwendig ist, die für eine Umschaltung zwischen
den unterschiedlichen Speicherbereichen sorgt.
Besonders vorteilhaft ist es daher, wenn die Schaltungsanord
nung ein erstes Register aufweist, in dem eine Information
zur Auswahl eines der Speicherbereiche speicherbar ist und
ein zweites Register aufweist, in dem eine Information zur
Auswahl von im jeweils ausgewählten Speicherbereich enthalte
nen Speichereinheiten speicherbar ist. Vorteilhafterweise
kann dieses zweite Register einem herkömmlichen Stapelzeiger
entsprechen. Die Speichereinheiten jedes Speicherbereiches
können zur Aufnahme je eines Datenwortes dienen. Es ist gün
stig, wenn in jedem der Speicherbereiche je eine Speicherein
heit mit derselben, im zweiten Register bzw. dem
Stapelspeicher speicherbaren Adresse vorhanden ist. Welche
dieser Speichereinheiten mit gleichen Adressen jeweils adres
siert wird, wird durch den Inhalt des ersten Registers und
die dadurch bedingte Auswahl des entsprechenden Speicherbe
reiches bestimmt.
Die Funktionsweise dieses Ausführungsbeispiels der Erfindung
ist dabei wie folgt: Bei Inbetriebnahme der Schaltungsanord
nung ist im ersten Register die Information zur Auswahl des
ersten Speicherbereiches gespeichert. Wird der Stapelspeicher
gefüllt, werden die entsprechenden Daten (Rücksprungadressen
oder Variablen) zunächst aufeinanderfolgend in den Spei
chereinheiten des ersten Speicherbereiches gespeichert. Dabei
wird der Inhalt des zweiten Registers bzw. des
Stapelzeigers entsprechend inkrementiert. Sind alle Spei
chereinheiten des ersten Speicherbereiches mit Daten belegt,
wird der Inhalt des ersten Registers inkrementiert und damit
der zweite Speicherbereich ausgewählt. Anschließend werden
über den Inhalt des zweiten Registers dessen Speichereinhei
ten bei Bedarf mit Daten gefüllt und so weiter.
Die Erfindung ermöglicht ohne großen Aufwand und unter nur
geringfügiger Veränderung von herkömmlichen Schaltungsanord
nungen, die einen Mikroprozessor und einen entsprechenden
Stapelspeicher aufweisen, durch Anordnung eines möglichst
kleinen Teiles des Stapelspeichers im logischen Adreßraum,
daß ein größtmöglicher Teil des logischen Adreßraums für den
Arbeitsspeicher des Mikroprozessors zur Verfügung steht, wo
bei gleichzeitig ein beliebig großer Stapelspeicher reali
sierbar ist, dessen größter Teil außerhalb des logischen
Adreßraums angeordnet ist. Beim geschilderten Ausführungs
beispiel können diese beiden Ziele besonders einfach erreicht
werden, indem die Anzahl der Speichereinheiten je Speicherbe
reich möglichst niedrig und die Anzahl der Speicherbereiche
des Stapelspeicher möglichst hoch gewählt wird.
Eine Weiterbildung der Erfindung sieht vor, daß die Schal
tungsanordnung ein Detektionsmittel aufweist, das zur Detek
tion eines Überschreitens einer Grenze des Stapelspeichers
beim Einschreiben bzw. Auslesen von Daten in den
Stapelspeicher dient. Wenn gleichzeitig vorgesehen ist, in
Abhängigkeit eines Ergebnissignals des Detektionsmittels im
Falle des Überschreitens einer oberen Grenze bzw.
eines Unterschreitens einer unteren Grenze des Stapelspei
chers eine wenigstens teilweise Leerung des Stapelspeichers
vorzunehmen, können Fehlfunktionen in Folge des Über- bzw.
Unterlaufs des Stapelspeichers vermieden werden.
Durch das Ergebnissignal des Detektionsmittel ist vorteilhaf
terweise ein Interrupt auslösbar, wodurch der Prozessor die
Abarbeitung des jeweiligen Programms an der aktuellen Positi
on unterbricht und zu einer vorbestimmten anderen Program
madresse springt. Die dort abzuarbeitenden Programmbefehle
können dann eine Leerung des Stapelspeichers durch zwangswei
ses Beenden der zuletzt gestarteten Unterprogramme bewirken.
Alternativ zur Leerung des Stapelspeichers durch Abbruch der
Bearbeitung von Unterprogrammen ist es möglich, den Inhalt
des Stapelspeichers wenigstens teilweise in einen weiteren
Speicherbereich, beispielsweise in denjenigen des Arbeits
speichers oder in einen Speicher außerhalb des direkt vom
Prozessor adressierbaren Adreßraumes, wenigstens vorüberge
hend auszulagern. Dies geschieht durch Kopie der auszulagern
den Daten an die gewünschte Stelle.
Zusätzlich oder alternativ zu einer Leerung des Stapelspei
chers aufgrund des Ergebnissignals des Detektionsmittels ist
es sinnvoll, wenn eine entsprechende Fehlermeldung durch den
Interrupt generiert wird, die einem Nutzer des Prozessors ei
ne Fehlfunktion des Stapelspeichers anzeigt.
Zur Vermeidung des Überschreitens der oberen Grenze des Sta
pelspeichers ist es besonders günstig, wenn die Schaltungsan
ordnung ein drittes Register aufweist, in dem die Anzahl der
Speicherbereiche gespeichert ist, so daß mittels des Detekti
onsmittels durch Vergleich des Inhalts des dritten Registers
mit dem Inhalt des ersten Registers, in dem die Adresse des
jeweils ausgewählten Speicherbereichs gespeichert ist, ein
Überlauf des Stapelspeichers detektierbar ist.
Die Erfindung wird im folgenden anhand der Figuren näher er
läutert.
Fig. 1 zeigt ein Ausführungsbeispiel der Erfindung.
Fig. 2 zeigt ein Detail aus Fig. 1.
Fig. 1 zeigt einen Mikroprozessor 1 mit einer begrenzten An
zahl von Adreßausgängen 2 zur Adreßierung eines logischen
Adreßraums 3 über einen entsprechenden Adreßdecoder 20. Bei
diesem Ausführungsbeispiel wird angenommen, daß der Mikropro
zessor 1 acht Adreßausgänge 2 aufweist. Dies ist beispiels
weise der Fall, wenn der Mikroprozessor 1 ein Microcontroller
vom Typ 8051 ist. Die binären Adressen von Speichereinheiten
innerhalb des logischen Adreßraums 3 sind der Fig. 1 eben
falls entnehmbar. Die unterste Adresse des logischen Adreß
raums ist 0000 0000. Die oberste Adresse ist 1111 1111. Die
Speichereinheiten können Datenworte sein, die jeweils die
Größe eines oder mehrerer Bytes haben. Es soll angenommen
werden, daß die Speichereinheiten die Größe eines Bytes ha
ben. Über die acht Adreßausgänge 2 sind dann 256 Byte mit
tels des Decoders 20 adressierbar.
Beim Ausführungsbeispiel in Fig. 1 ist ein Stapelspeicher 4
vorhanden, der in vier gleich große Speicherbereiche 5 (Page
1 bis Page 4) aufgeteilt ist. Jeder der Speicherbereiche 5
ist in einzeln adressierbare Speichereinheiten 9 aufgeteilt.
Die Speichereinheiten 9 jedes der Speicherbereiche 5 sind je
weils über dieselben an den Adreßausgängen 2 des Prozessors
1 anliegende Adressen adressierbar. Diese entsprechen den
16 Bits im obersten Bereich des logischen Adreßraums 3 zwi
schen den Adressen 1111 0000 und 1111 1111.
Eine Auswahl einer der Speichereinheiten 9 mit der jeweils
selben Adresse erfolgt über einen zweiten Decoder 30. Auf
grund einer in einem ersten Register 6 speicherbaren Informa
tion bzw. Adresse zur Auswahl einer der Speicher
bereiche 5 ist über den zweiten Decoder 30 einer der Spei
cherbereiche 5 auswählbar. Liegt also an den Adreßausgängen
2 des Prozessors 1 eine Adresse des logischen Adreßraums 3
an, die dem Stapelspeicher 4 zugeordnet ist, wird mittels des
ersten Registers 6 und des zweiten Decoders 30 festgelegt, in
welchem der Speicherbereiche 5 die Speichereinheit mit der
entsprechenden Adresse selektiert wird. Welche der Spei
chereinheiten 9 innerhalb der Speicherbereiche 5 vom Prozes
sor 1 angesprochen wird, wird durch den Inhalt eines zweiten
Registers 7, welches einem herkömmlichen Stapelzeiger bzw.
Stack Pointer entspricht, bestimmt.
Bisher war es üblich, den gesamten Stapelspeicher 4 innerhalb
des logischen Adreßraums 3 anzuordnen. Beim gezeigten Aus
führungsbeispiel, bei dem der Stapelspeicher 4 vier Speicher
bereiche 5 mit jeweils 16 Byte, insgesamt also 64 Byte um
faßt, blieben bei Anordnung des gesamten Stapelspeichers 4 im
logischen Adreßraum 3 von diesem nur noch 256 - 64 = 192 Byte
für einen Arbeitsspeicher 10 des Prozessors 1 übrig. Durch
die Erfindung wird in vorteilhafter Weise erreicht, daß der
Arbeitsspeicher 10, wie in Fig. 1 gezeigt, 256 - 16 = 240
Byte groß ist. Durch eine andere Anzahl von Speicherein
heiten 9 innerhalb der Speicherbereiche 5 kann die Größe des
verbleibenden Arbeitsspeichers 10 noch vergrößert oder ver
kleinert werden. Durch eine größere Anzahl von Speicherberei
chen 5 kann die Gesamtgröße des Stapelspeichers 4 erhöht wer
den, ohne daß der verbleibende Arbeitsspeicher 10 reduziert
wird.
Wie auch beim Stand der Technik üblich, erfolgt bei einer In
betriebnahme des Prozessors 1 zunächst eine Initialisierung
des zweiten Registers 7 bzw. des Stapelspeichers.
Der Inhalt des zweiten Registers 7 wird dabei zunächst auf
die unterste Adresse der Speichereinheiten 9 des Stapelspei
chers 4, nämlich 1111 0000 voreingestellt. Bei der Initiali
sierung wird auch der Inhalt des beim Stand der Technik nicht
vorhandenen ersten Registers 6 so eingestellt, daß über den
zweiten Decoder 30 der erste Speicherbereich Page 1 selek
tiert wird. Sind wie beim Ausführungsbeispiel in Fig. 1 le
diglich vier Speicherbereiche 5 vorhanden, muß das erste Re
gister 6 nur zwei Bits zu deren Adreßierung aufweisen. Es
kann jedoch vorgesehen sein, die Anzahl der Adreßbits des
ersten Registers 6 sehr viel größer zu wählen und auch die
Anzahl der auswählbaren Speicherbereiche entsprechend zu er
höhen. Wie bereits erwähnt, ist der Speicherbedarf des Sta
pelspeichers 4 abhängig von der Anzahl der Unterprogrammver
zweigungen und der darüber hinaus im Stapelspeicher 4 zu
speichernden Variablen.
Diejenigen Speicherbereiche 5 des Stapelspeichers 4, die au
ßerhalb des logischen Adreßraums 3 des Prozessors 1 angeord
net sind, können in einem oder mehreren von demjenigen Spei
cher, in dem der erste Speicherbereich Page 1 angeordnet ist,
verschiedenen Speichern angeordnet sein. Es ist sinnvoll, daß
sich diese weiteren Speicher auf der gleichen integrierten
Schaltung wie der erste Speicherbereich Page 1 und der Ar
beitsspeicher 10 befinden. Besonders günstig ist es, wenn der
gesamte Stapelspeicher 4 und der Arbeitsspeicher 10 Bestand
teile eines gemeinsamen Speichers sind, von dem nur derjenige
Teil, der den Arbeitsspeicher 10 und den ersten Speicherbe
reich Page 1 beinhaltet, im direkt durch die Adreßausgänge
2 des Mikroprozessors 1 adressierbaren logischen Adreßraum 3
liegen.
Ist das erste Register 6 auf den Wert YY = 00 und das zweite
Register 7 auf den Wert 1111 0000 initialisiert und sind an
schließend (aufgrund beispielsweise von Unterprogrammsprün
gen) entsprechende Rücksprungadressen oder Variablen im Sta
pelspeicher 4 zu speichern, wird, wie auch beim Stand der
Technik, zunächst das zweite Register 7 bzw. der
Stapelzeiger entsprechend inkrementiert. Beim Auslesen von
Daten aus dem Stapelspeicher 4 erfolgt ein entsprechendes De
krementieren. Auf dieses Weise ist gewährleistet, daß immer
die zuletzt in den Stapelspeicher 4 eingeschriebene Informa
tion als erstes wieder ausgelesen wird.
Die Erfindung ermöglicht nun, daß, sobald der erste Speicher
bereich Page 1 mit Daten gefüllt ist, das heißt, der Stapel
zeiger 7 die Adresse 1111 1111 aufweist, durch Überlauf der
letzten 4 Bits des Stapelzeigers 7 als nächstes wiederum die
Adresse 1111 0000 im Stapelzeiger enthalten ist. Erreicht
wird dies dadurch, daß die ersten vier Bits des Stapelzeigers
7 unveränderlich auf 1111 eingestellt sind. Gleichzeitig wird
der Überlauf des zweiten Registers 7 vom ersten Register 6
registriert und dieses entsprechend inkrementiert, so daß
nunmehr im zweiten Speicherbereich Page 2 die Speichereinheit
9 mit der Adresse 1111 0000 über die Adreßausgänge 2 des
Prozessors 1 adressierbar ist. Für die Wechsel zu den weite
ren Speicherbereichen Page 3, Page 4 gilt entsprechendes.
Ebenso wird beim Auslesen von Daten aus dem Stapelspeicher 4
der Stapelzeiger 7 entsprechend dekrementiert.
Es wird noch einmal betont, daß die obersten vier Bits des
Stapelzeiger auf 1111 fest eingestellt sind und nur die un
tersten vier Bits XXXX veränderlich sind. Ist bereits die un
tere Grenze eines der Speicherbereiche 5 mit der Adresse
1111 0000 erreicht, und es wird ein weiteres Datum ausgele
sen, ergibt die Subtraktion bzw. das Dekrementie
ren einen neuen Zählerstand von 1111 1111 im zweiten Register
7. Gleichzeitig registriert das erste Register 6 diesen Un
terlauf und wird entsprechend dekrementiert, woraufhin über
den zweiten Decoder 30 der nächstuntere Speicherbereich 5 se
lektierbar ist.
Fig. 1 zeigt auch ein Detektionsmittel 11, welches durch
Überwachung des Inhalts des ersten Registers 6 einen Über-
bzw. Unterlauf des Stapelspeichers 4 detektiert.
Ein Unterlauf wird verhindert, indem das Detektionsmittel 11
bei einem vorhergehenden Inhalt des ersten Registers 6 von
YY = 00 und einem anschließend auftretendem weiteren Dekre
ment ein entsprechendes Ergebnissignal an den Prozessor 1
gibt, woraufhin dieser die Weiterbearbeitung des im Arbeits
speichers 10 gespeicherten Programms vorübergehend unter
bricht und zunächst eine erneute Initialisierung des ersten
Registers 6 und des zweiten Registers 7 vornimmt.
Zur Registrierung eines Überlauf s weist die Schaltungsanord
nung ein drittes Register 8 auf, in dem die Anzahl der nutz
baren Speicherbereiche 5 gespeichert ist. Analog zum soeben
geschilderten Fall des Unterlaufs des ersten Registers 6 de
tektiert das Detektionsmittel 11 durch Vergleich des Inhalts
des ersten Registers mit demjenigen des dritten Registers 8
einen Überlauf des Stapelspeichers 4 und sendet ein entspre
chendes Ergebnissignal an den Prozessor 1. Dieser unterbricht
wiederum vorübergehend die Abarbeitung des gerade auszufüh
renden Programms und nimmt zunächst eine wenigstens teilweise
Leerung des Stapelspeichers 4 vor, gefolgt von einer entspre
chenden Initialisierung des ersten Registers 6 und des zwei
ten Registers 7.
Fig. 1 zeigt auch einen Datenbus 40, über den der Prozessor
1 Daten in den Arbeitsspeicher 10 bzw. den Sta
pelspeicher 4 schreiben und aus diesen wieder auslesen kann.
Fig. 2 zeigt noch einmal das erste Register 6 und das zweite
Register 7 aus Fig. 1. Anhand der Fig. 2 soll noch einmal
der Vorgang des Inkrementierens und Dekrementierens erläutert
werden. Im Falle eines Unterprogrammaufrufes (Call) wird die
entsprechende Rücksprungadresse im Stapelspeicher 4 an derje
nigen Adresse abgelegt, die durch den Inhalt der beiden Regi
ster 6 und 7 bestimmt ist. Gleichzeitig werden die letzten
4 Bits XXXX des zweiten Registers 7 um 1 inkrementiert, so
daß der Stapelzeiger 7 auf die nächste freie Speichereinheit
9 im Stapelspeicher 4 zeigt. Tritt dabei ein Überlauf auf,
das heißt der Inhalt des zweiten Registers 7 springt von
1111 1111 auf 1111 0000, registriert dies eine Logik 60 und
inkrementiert den Inhalt des ersten Registers 6 um den Wert
1. Umgekehrt wird bei einem Rücksprung aus einem Unterpro
gramm (Return) die entsprechende Rücksprungadresse aus dem
Stapelspeicher 4 entnommen, und die letzten vier Bits XXXX
des Stapelzeigers 7 werden um den Wert 1 dekrementiert. Kommt
es dabei zu einem Unterlauf der letzten vier Bits XXXX, regi
striert dies die Logik 60 und dekrementiert den Inhalt des
ersten Registers 6 um 1.
Statt eines Inkrementierens bzw. Dekrementierens
um jeweils 1 kann auch ein davon abweichender Inkrement- be
ziehungsweise Dekrementwert (zum Beispiel 2) vorgesehen sein.
Dies ist abhängig davon, welchen Umfang die jeweils im Sta
pelspeicher 4 zu speichernden Daten haben. Beim bezüglich
Fig. 1 geschilderten Ausführungsbeispiel, bei dem die Spei
chereinheiten eine Größe von jeweils einem Byte haben, wäre
ein Inkrement bzw. Dekrement von jeweils 2 zu wäh
len, falls die zu speichernden Rücksprungadressen beziehungs
weise Variablen eine Größe von zwei Byte aufweisen.
Fig. 2 ist auch eine weitere Logik 50 zu entnehmen, mit der
dem Stapelzeiger 7 relative bzw. den Stapelzeiger
7 modifizierende Befehle realisierbar sind, wie sie bei Mi
kroprozessoren üblich sind. In diesen Fällen legt der Prozes
sor eine neue Adresse auf den Datenbus, um die der Inhalt des
Stapelzeigers bei beim Stand der Technik üblichen Schaltungs
anordnungen erhöht bzw. erniedrigt werden soll. Um
derartige relative bzw. modifizierende Befehle
auch bei der Erfindung zu ermöglichen, ist eine weitere Logik
50 vorgesehen, die durch Addition bzw. Subtraktion
die Inhalte der beiden Register 6, 7 auf die richtigen Werte
einstellt.
Die Erfindung hat den Vorteil, daß gleichzeitig ein großer
Arbeitsspeicher 10 und ein großer Stapelspeicher 4 realisier
bar ist. Außerdem ist die erfindungsgemäße Schaltungsanord
nung in der Lage, dieselben Stapelspeicher-Befehle auszufüh
ren wie herkömmliche Schaltungsanordnungen.
Die erfindungsgemäße Schaltungsanordnung hat den weiteren
Vorteil, daß sie unter nur geringfügiger Abänderung herkömm
licher derartiger Schaltungsanordnungen realisierbar ist. So
ist ein herkömmlicher Mikroprozessor 1 mit herkömmlichen Da
tenbus 40 und Adreßausgängen 2 und ein herkömmlicher Decoder
20 einsetzbar. Der bisher übliche Stapelzeiger ist nur inso
fern zu modifizieren, daß die gewünschte Anzahl von Bits un
veränderlich ist. Beim Ausführungsbeispiel in Fig. 1 sind
beim Stapelzeiger 7 die vier obersten Bits unveränderlich auf
1111 eingestellt. Ferner wird ein Speicher benötigt, der grö
ßer ist als der logische Adreßraum 3, um die außerhalb die
ses angeordneten Speicherbereiche 5 des Stapelspeichers 4 un
terzubringen. Zusätzlich benötigt die erfindungsgemäße Schal
tungsanordnung das erste Register 6 und den zweiten Decoder
30 zur Selektion jeweils eines der Speicherbereiche 5.
Die Erfindung ist insbesondere dort von Vorteil, wo nur ein
Prozessor 1 mit einer sehr geringen Anzahl von Adreßausgän
gen 2 zur Verfügung steht, wie dies beispielsweise beim Mi
krocontroller 8051 der Fall ist. Gerade bei einem derart
kleinen zur Verfügung stehenden logischen Adreßraum 3 ist es
unbedingt notwendig, den Anteil des Stapelspeichers 4 an die
sem logischen Adreßraum 3 möglichst gering zu halten. Es
sind zwar auch schon zahlreiche Prozessoren mit einer größe
ren Anzahl von Adreßausgängen bekannt, über die dann ein
weitaus größerer logischer Adreßraum adressierbar ist, je
doch sind diese Prozessoren in der Regel viel großflächiger
als beispielsweise der Microcontroller 8051. Insbesondere bei
der Herstellung von Chipkarten, bei der eine oder mehrere in
tegrierte Halbleiterschaltungen innerhalb eines kartenförmi
gen Kunststoffgehäuses untergebracht werden müssen, ist es
von Bedeutung, daß die Chipfläche möglichst klein ist, denn
die mechanischen Beanspruchungen in einer Chipkarte sind sehr
groß, so daß großflächigere Chips leicht zerstört werden. Aus
diesem Grunde ist der Einsatz von derzeit zur Verfügung ste
henden kleinflächigen Chips mit wenigen Adreßausgängen 2,
wie dies beim 8051 der Fall ist, von großem Vorteil. Dessen
Nachteile eines nur sehr kleinen, direkt adressierbaren logi
schen Adreßraums 3 kann durch die Erfindung teilweise beho
ben werden. Ein größerer Prozessor mit einer größeren Anzahl
von Adreßausgängen 2 ist auch sehr viel kostspieliger.
Da die erfindungsgemäße Schaltungsanordnung voll kompatibel
zu bisher üblichen Stapelspeicherbefehlen ist, ist eine An
passung von Entwicklungstools für vom Prozessor 1 auszufüh
rende Software-Anwendungen nicht notwendig.
Die erfindungsgemäße Schaltungsanordnung ermöglicht eine
Adresserweiterung des Stapelspeicherbereiches, ohne daß der
direkt adressierbare logische Adreßraum des Prozessors 1 er
weitert werden muß.
Stapelspeicherbefehle müssen von allen anderen Befehlen un
terschieden werden. Daher werden günstiger Weise nur diejeni
gen Adressen bei einem relativen oder modifizierenden Befehl
in den Stapelzeiger 7 übernommen, die größer als 1111 0000
sind. Dies ist durch einen einfachen Komparator überprüfbar.
Bei allen anderen Adressen werden die Auswahlleitungen des
zweiten Decoders 30 zur Auswahl der Speicherbereiche 5 deak
tiviert.
Ein Über- bzw. Unterlauf des Stapelzeigers 7 ist
anhand eines Carry-Bits des Stapelzeiger 7 erkennbar. In bei
den Fällen ändert sich dieses Carry-Bit. Es handelte sich um
einen Unterlauf, wenn zuvor XXXX = 0000 war. Um einen Über
lauf handelt es sich, wenn zuvor XXXX = 1111 war.
Es ist möglich, daß das erste Register 6 und das zweite Regi
ster 7 Bestandteil eines einzigen Registers sind, wobei das
erste Register 6 die höchsten Bits (MSBs, most significant
bits) dieses Registers belegen und das zweite Register 7 die
unteren. Dann ergibt sich durch einen Überlauf des zweiten
Registers 7 automatisch ein Inkrementieren und durch einen
Unterlauf ein Dekrementieren des ersten Registers 6.
Claims (7)
1. Schaltungsanordnung
- - mit einem Mikroprozessor (1) mit Adreßausgängen (2),
- - mit einem Arbeitsspeicher (10) für den Mikroprozessor (1), der sich in einem über die Adreßausgänge (2) direkt adres sierbaren logischen Adreßraum (3) befindet,
- - mit einem Stapelspeicher (4) für den Mikroprozessor (1), der wenigstens teilweise außerhalb des logischen Adreßraums (3) angeordnet ist.
2. Schaltungsanordnung nach Anspruch 1,
- - bei der der Stapelspeicher (4) in gleich große Speicherbe reiche (5) aufgeteilt ist,
- - nur einer der Speicherbereiche (5) ist im logischen Adreß raum (3) angeordnet.
3. Schaltungsanordnung nach einem der vorstehenden Ansprüche,
- - sie weist ein erstes Register (6) auf, in dem eine Informa tion zur Auswahl eines der Speicherbereiche (5) speicherbar ist,
- - jeder der Speicherbereiche (5) ist in einzeln auswählbare Speichereinheiten (9) aufgeteilt,
- - die Schaltungsanordnung weist ein zweites Register (7) auf, in dem eine Information zur Auswahl einer der Speicherein heiten (9) innerhalb des jeweils durch den Inhalt des er sten Registers (6) ausgewählten Speicherbereiches (5) spei cherbar ist.
4. Schaltungsanordnung nach Anspruch 3,
- - bei der das zweite Register (7) mit einem ersten Adreßde coder (20) verbunden ist, über den die Speichereinheiten (9) innerhalb der Speicherbereiche (5) adressierbar sind, wobei der erste Adreßdecoder (20) auch zur Adreßierung des gesam ten logischen Adreßraums (3) über die Adreßausgänge (2) dient,
- - bei der das erste Register (6) mit einem zweiten Adreßde coder (30) verbunden ist, über den die Speicherbereiche (5) adressierbar sind.
5. Schaltungsanordnung nach einem der vorstehenden Ansprüche,
bei der das erste Register (6) durch einen Überlauf bzw. ei
nen Unterlauf des zweiten Registers (7) inkrementierbar bzw.
dekrementierbar ist.
6. Schaltungsanordnung nach einem der vorstehenden Ansprüche,
- - bei der ein Detektionsmittel (11) vorhanden ist zur Detek tion eines Überschreitens einer Grenze des Stapelspeichers (4) beim Einschreiben bzw. Auslesen von Daten,
- - bei der in Abhängigkeit eines Ergebnissignals des Detekti onsmittels (11) im Falle des Überschreitens eine wenigstens teilweise Leerung des Stapelspeichers (4) durchführbar ist.
7. Schaltungsanordnung nach Anspruch 6,
- - die ein drittes Register (8) aufweist, in dem die Anzahl der Speicherbereiche (5) gespeichert ist,
- - ein Überschreiten der oberen Grenze des Stapelspeichers (4) ist durch das Detektionsmittel (11) durch Vergleich des je weils ausgewählten Speicherbereiches (5) mit dem Inhalt des dritten Registers (8) erkennbar.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19640316A DE19640316A1 (de) | 1996-09-30 | 1996-09-30 | Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher |
CN97198398A CN1232564A (zh) | 1996-09-30 | 1997-09-30 | 带有微处理器和堆栈存储器的电路装置 |
JP10516148A JP2000503792A (ja) | 1996-09-30 | 1997-09-30 | マイクロプロセッサおよびスタックメモリを有する回路装置 |
EP97910244A EP1010081A1 (de) | 1996-09-30 | 1997-09-30 | Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher |
KR1019990702740A KR20000048754A (ko) | 1996-09-30 | 1997-09-30 | 마이크로프로세서 및 스택 메모리를 갖는 회로장치 |
BR9712154-1A BR9712154A (pt) | 1996-09-30 | 1997-09-30 | Disposição de circuito com um microprocessador e uma memória de pilha. |
PCT/DE1997/002253 WO1998014876A1 (de) | 1996-09-30 | 1997-09-30 | Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19640316A DE19640316A1 (de) | 1996-09-30 | 1996-09-30 | Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19640316A1 true DE19640316A1 (de) | 1998-04-02 |
Family
ID=7807457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19640316A Withdrawn DE19640316A1 (de) | 1996-09-30 | 1996-09-30 | Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1010081A1 (de) |
JP (1) | JP2000503792A (de) |
KR (1) | KR20000048754A (de) |
CN (1) | CN1232564A (de) |
BR (1) | BR9712154A (de) |
DE (1) | DE19640316A1 (de) |
WO (1) | WO1998014876A1 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100353335C (zh) * | 2003-03-28 | 2007-12-05 | 联发科技股份有限公司 | 增加处理器中存储器的方法 |
JP5391870B2 (ja) * | 2009-06-26 | 2014-01-15 | 富士通株式会社 | 情報処理装置及びその方法 |
CN102193868B (zh) * | 2010-03-10 | 2013-06-19 | 上海海尔集成电路有限公司 | 数据堆栈存储电路及微控制器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3726192A1 (de) * | 1987-08-06 | 1989-02-16 | Otto Mueller | Stacksteuerung |
DE4340551A1 (de) * | 1993-11-29 | 1995-06-01 | Philips Patentverwaltung | Programmspeichererweiterung für einen Mikroprozessor |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0215345A (ja) * | 1988-07-04 | 1990-01-19 | Hitachi Ltd | データ処理装置 |
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
US5032981A (en) * | 1989-04-10 | 1991-07-16 | Cirrus Logic, Inc. | Method for increasing effective addressable data processing system memory space |
US5255382A (en) * | 1990-09-24 | 1993-10-19 | Pawloski Martin B | Program memory expander for 8051-based microcontrolled system |
GB2282470B (en) * | 1993-09-23 | 1997-12-24 | Motorola Israel Ltd | A processor arrangement with memory management |
US5666556A (en) * | 1993-12-30 | 1997-09-09 | Intel Corporation | Method and apparatus for redirecting register access requests wherein the register set is separate from a central processing unit |
SG45399A1 (en) * | 1994-01-12 | 1998-01-16 | Sun Microsystems Inc | Logically addressable physical memory for a virtual memory computer system that support multiple page sizes |
-
1996
- 1996-09-30 DE DE19640316A patent/DE19640316A1/de not_active Withdrawn
-
1997
- 1997-09-30 WO PCT/DE1997/002253 patent/WO1998014876A1/de not_active Application Discontinuation
- 1997-09-30 JP JP10516148A patent/JP2000503792A/ja active Pending
- 1997-09-30 EP EP97910244A patent/EP1010081A1/de not_active Withdrawn
- 1997-09-30 BR BR9712154-1A patent/BR9712154A/pt unknown
- 1997-09-30 KR KR1019990702740A patent/KR20000048754A/ko active IP Right Grant
- 1997-09-30 CN CN97198398A patent/CN1232564A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3726192A1 (de) * | 1987-08-06 | 1989-02-16 | Otto Mueller | Stacksteuerung |
DE4340551A1 (de) * | 1993-11-29 | 1995-06-01 | Philips Patentverwaltung | Programmspeichererweiterung für einen Mikroprozessor |
Also Published As
Publication number | Publication date |
---|---|
WO1998014876A1 (de) | 1998-04-09 |
JP2000503792A (ja) | 2000-03-28 |
BR9712154A (pt) | 1999-08-31 |
CN1232564A (zh) | 1999-10-20 |
EP1010081A1 (de) | 2000-06-21 |
KR20000048754A (ko) | 2000-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2142634C3 (de) | Assoziativspeicher | |
DE1499193C3 (de) | Speicher-Adressierschaltung | |
DE2445617C2 (de) | Hierarchische Speicheranordnung | |
DE4215063A1 (de) | Einrichtung und verfahren zum seitenwechsel bei einem nicht-fluechtigen speicher | |
DE3940302A1 (de) | Erweiterung der moeglichkeiten, rom code dem speicherbereich eines computers zuzuordnen | |
DE2926322A1 (de) | Speicher-subsystem | |
DE68925376T2 (de) | In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas | |
EP1352318B1 (de) | Mikroprozessorschaltung für tragbare datenträger | |
EP1924916A2 (de) | Speicheranordnung und betriebsverfahren dafür | |
DE4238099A1 (de) | ||
DE68926158T2 (de) | Einchip-Mikrorechner mit EPROM | |
DE19640316A1 (de) | Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher | |
EP0134822B1 (de) | Digitalspeicher | |
EP1204917B1 (de) | Operandenstapelspeicher und verfahren zum betreiben eines operandenstapelspeichers | |
DE3101270C2 (de) | Rechneranordnung zur Wortverarbeitung mit einer Einrichtung zur Funktionserweiterung | |
EP0890172B1 (de) | Halbleiterspeichervorrichtung | |
DE3785222T2 (de) | Programmsteuerung. | |
DE3009121B1 (de) | Mikroprogramm-Steuereinrichtung | |
DE10064339B4 (de) | Integrierte Schaltungsanordnung in einem Bremskraftregelsystem | |
DE68927044T2 (de) | Rechnerspeicher mit Ausgangsleitungen, welche mittels der Speicheradresse zur Verbindung mit einem Datenbus ausgewählt werden | |
DE10313645B4 (de) | System mit einer Datenverarbeitungseinrichtung und einer Speichereinrichtung | |
DE2419837B2 (de) | Schaltungsanordnung zur adressierung eines mikroprogramms in datenverarbeitungseinrichtungen und verfahren zur durchfuehrung von sprungbefehlen | |
DE19625628C1 (de) | Halbleiterspeichervorrichtung | |
DE10128752A1 (de) | Verfahren zur Ablage von Daten in einen Speicherbaustein | |
EP0629944A1 (de) | Datenverarbeitungsmaschine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |