DE19640316A1 - Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher - Google Patents

Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher

Info

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
Application number
DE19640316A
Other languages
English (en)
Inventor
Klaus Dipl Ing Oberlaender
Stefan Dipl Ing Pfab
Michael Baldischweiler
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE19640316A priority Critical patent/DE19640316A1/de
Priority to CN97198398A priority patent/CN1232564A/zh
Priority to JP10516148A priority patent/JP2000503792A/ja
Priority to EP97910244A priority patent/EP1010081A1/de
Priority to KR1019990702740A priority patent/KR20000048754A/ko
Priority to BR9712154-1A priority patent/BR9712154A/pt
Priority to PCT/DE1997/002253 priority patent/WO1998014876A1/de
Publication of DE19640316A1 publication Critical patent/DE19640316A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing 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.
DE19640316A 1996-09-30 1996-09-30 Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher Withdrawn DE19640316A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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