EP1010081A1 - Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher - Google Patents

Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher

Info

Publication number
EP1010081A1
EP1010081A1 EP97910244A EP97910244A EP1010081A1 EP 1010081 A1 EP1010081 A1 EP 1010081A1 EP 97910244 A EP97910244 A EP 97910244A EP 97910244 A EP97910244 A EP 97910244A EP 1010081 A1 EP1010081 A1 EP 1010081A1
Authority
EP
European Patent Office
Prior art keywords
memory
register
stack
logical address
address space
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
EP97910244A
Other languages
English (en)
French (fr)
Inventor
Klaus Oberländer
Michael Baldischweiler
Stefan Pfab
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.)
Infineon Technologies 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
Publication of EP1010081A1 publication Critical patent/EP1010081A1/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
    • 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

Definitions

  • An interrupt can advantageously be triggered by the result signal of the detection means, whereby the processor interrupts the execution of the respective program at the current position and jumps to a predetermined other program address.
  • the program instructions to be processed there can then cause the stack memory to be emptied by forcibly terminating the last started subroutines.
  • this register 1111 1111 to 1111 0000, this registers a logic 60 and increments the content of the first register 6 by the value 1. Conversely, in the case of a return from a subroutine (Return), the corresponding return address is taken from the stack memory 4, and the last four bits XXXX of the stack pointer 7 are decremented by the value 1. If there is an underflow of the last four bits XXXX, this registers the logic 60 and decrements the content of the first register 6 by 1.
  • an increment or decrement value (for example 2) which deviates therefrom can also be provided. This depends on the scope of the data to be stored in the stack 4. In the exemplary embodiment described with reference to FIG. 1, in which the storage units have a size of one byte each, an increment or decrement of 2 each would have to be selected if the return addresses or variables to be stored have a size of two bytes.

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)

Abstract

Der Mikroprozessor hat einen über Adressausgänge (2) direkt adressierbaren logischen Adressraum (3). Der Stapelspeicher (4) ist wenigstens teilweise außerhalb des logischen Adressraums (3) angeordnet. Vorteil: Der im logischen Adressraum (3) verbleibende Arbeitsspeicher (10) kann maximiert werden.

Description

Beschreibung
Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher
Mikroprozessoren benötigen zum Abarbeiten von durch sie auszuführenden Programmen einen Stapelspeicher. Immer wenn der Prozessor bei der Abarbeitung eines Programmes nicht nur sequentiell aufeinanderfolgende Programmanweisungen abzuarbei- ten hat, sondern, wie zum Beispiel bei einem Unterprogramm- Aufruf einen Programmsprung auszuführen hat, dient der Stapelspeicher (auch "Stack" genannt) zur Aufnahme einer Rücksprungadresse, 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 Programms 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 Stapelspeicher 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) realisiert ist. Der Arbeitsspeicher befindet sich dabei in einem logischen Adressraum, der über Adressausgänge des Prozessors direkt adressierbar ist.
Es ist üblich, auch den Stapelspeicher im genannten logischen Adressraum anzuordnen. Dies hat zur Folge, daß sich Stapelspeicher und Arbeitsspeicher den verfügbaren logischen Adressraum, dessen Größe durch die Anzahl der Adressausgänge des Prozessors festgelegt ist, teilen. Bei beispielsweise lediglich acht Adressausgängen, wie sie bei Microcontrollern vom Typ 8051 vorhanden sind, ist der direkt über die Adreß- ausgänge des Controllers adressierbare logische Adressraum 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 abgearbeitet werden soll. Daher ist der Stapelspeicher für ge- wohnlich 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 Adressbereich des logischen Adressraums des Mikroprozessors angeordnet. Zu diesem Zweck wird der Stapelzeiger bei der Inbetriebnahme beziehungsweise 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 Prozessors steht dann im logischen Adressraum nur der Bereich von dessen Beginn bis zum Anfang des Stapelspeichers zur Verfügung. Für den oben bereits erwähnten Microcontroller vom Typ 8051 mit einem logischen Adressraum von lediglich
256 Byte verbleiben bei einer Größe des Stapelspeichers von zum Beispiel 64 Byte lediglich 192 Byte für den Arbeitsspeicher. Die verbleibende Größe des Arbeitsspeichers ist jedoch ausschlaggebend für die Gestaltungsmöglichkeiten eines Pro- gram ierers und für die Geschwindigkeit, mit der Programme vom Prozessor abgearbeitet werden können.
Der Erfindung liegt die Aufgabe zugrunde, eine Schaltungsanordnung 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 Adressraums für den Arbeitsspeicher zur Verfügung steht und ein möglichst geringer Teil des logi¬ schen Adressraums durch den Stapelspeicher belegt wird.
Diese Aufgabe wird durch eine Schaltungsanordnung gemäß An- spruch 1 gelöst. Erfindungsgemäß ist es vorgesehen, wenigstens einen Teil des Stapelspeichers außerhalb des direkt adressierbaren logischen Adressraums des Mikroprozessors anzuordnen.
Besonders einfach ist dies erreichbar, indem der Stapelspeicher in jeweils gleich große Speicherbereiche aufgeteilt ist, von denen nur einer im direkt adressierbaren logischen Adressraum angeordnet ist . Es ist dann in einfacher Weise möglich, denjenigen der Speicherbereiche, der sich im logi- sehen Adressraum befindet, über die Adressausgänge des Mikroprozessors direkt zu adressieren, während zur Adressierung der übrigen Speicherbereiche des Stapelspeichers eine spezielle Logik notwendig ist, die für eine Umschaltung zwischen den unterschiedlichen Speicherbereichen sorgt.
Besonders vorteilhaft ist es daher, wenn die Schaltungsanordnung 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 enthaltenen 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 Speichereinheit mit derselben, im zweiten Register beziehungsweise dem Stapelspeicher speicherbaren Adresse vorhanden ist. Welche dieser Speichereinheiten mit gleichen Adressen jeweils adressiert wird, wird durch den Inhalt des ersten Registers und die dadurch bedingte Auswahl des entsprechenden Speicherbereiches bestimmt. Die Funktionsweise dieses Ausführungsbeispiels der Erfindung ist dabei wie folgt: Bei Inbetriebnahme der Schaltungsanordnung 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 Speichereinheiten des ersten Speicherbereiches gespeichert. Dabei wird der Inhalt des zweiten Registers beziehungsweise 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 Speichereinheiten 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 Schaltungsanordnungen, die einen Mikroprozessor und einen entsprechenden Stapelspeicher aufweisen, durch Anordnung eines möglichst kleinen Teiles des Stapelspeichers im logischen Adressraum, daß ein größtmöglicher Teil des logischen Adressraums für den Arbeitsspeicher des Mikroprozessors zur Verfügung steht, wobei gleichzeitig ein beliebig großer Stapelspeicher realisierbar ist, dessen größter Teil außerhalb des logischen Adressraums angeordnet ist. Beim geschilderten Ausführungsbeispiel können diese beiden Ziele besonders einfach erreicht werden, indem die Anzahl der Speichereinheiten je Speicherbereich möglichst niedrig und die Anzahl der Speicherbereiche des Stapelspeicher möglichst hoch gewählt wird.
Eine Weiterbildung der Erfindung sieht vor, daß die Schaltungsanordnung ein Detektionsmittel aufweist, das zur Detek- tion eines Überschreitens einer Grenze des Stapelspeichers beim Einschreiben beziehungsweise 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 beziehungsweise eines Unterschreitens einer unteren Grenze des Stapelspeichers 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 vorteilhafterweise ein Interrupt auslösbar, wodurch der Prozessor die Abarbeitung des jeweiligen Programms an der aktuellen Position unterbricht und zu einer vorbestimmten anderen Program- madresse springt. Die dort abzuarbeitenden Programmbefehle können dann eine Leerung des Stapelspeichers durch zwangsweises 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 Arbeitsspeichers oder in einen Speicher außerhalb des direkt vom Prozessor adressierbaren Adreßraumes, wenigstens vorübergehend auszulagern. Dies geschieht durch Kopie der auszulagern- den Daten an die gewünschte Stelle.
Zusätzlich oder alternativ zu einer Leerung des Stapelspeichers aufgrund des Ergebnissignals des Detektionsmittels ist es sinnvoll, wenn eine entsprechende Fehlermeldung durch den Interrupt generiert wird, die einem Nutzer des Prozessors eine Fehlfunktion des Stapelspeichers anzeigt.
Zur Vermeidung des Überschreitens der oberen Grenze des Stapelspeichers 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 Detektionsmittels 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 .
Figur 1 zeigt ein Ausführungsbeispiel der Erfindung.
Figur 2 zeigt ein Detail aus Figur 1.
Figur 1 zeigt einen Mikroprozessor 1 mit einer begrenzten Anzahl von Adressausgängen 2 zur Adressierung eines logischen Adressraums 3 über einen entsprechenden Adressdecoder 20. Bei diesem Ausführungsbeispiel wird angenommen, daß der Mikroprozessor 1 acht Adressausgänge 2 aufweist. Dies ist beispielsweise der Fall, wenn der Mikroprozessor 1 ein Microcontroller vom Typ 8051 ist. Die binären Adressen von Speichereinheiten innerhalb des logischen Adressraums 3 sind der Figur 1 ebenfalls entnehmbar. Die unterste Adresse des logischen Adressraums 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 haben. Über die acht Adressausgänge 2 sind dann 256 Byte mittels des Decoders 20 adressierbar.
Beim Ausführungsbeispiel in Figur 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 jeweils über dieselben an den Adressausgängen 2 des Prozessors 1 anliegende Adressen adressierbar . Diese entsprechen den
16 Bits im obersten Bereich des logischen Adressraums 3 zwischen den Adressen 1111 0000 und 1111 1111.
Eine Auswahl einer der Speichereinheiten 9 mit der jeweils selben Adresse erfolgt über einen zweiten Decoder 30. Aufgrund einer in einem ersten Register 6 speicherbaren Information beziehungsweise 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 Adressausgängen 2 des Prozessors 1 eine Adresse des logischen Adressraums 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 Speichereinheiten 9 innerhalb der Speicherbereiche 5 vom Prozessor 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 Adressraums 3 anzuordnen. Beim gezeigten Aus- führungsbeispiel , bei dem der Stapelspeicher 4 vier Speicherbereiche 5 mit jeweils 16 Byte, insgesamt also 64 Byte umfaß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 Figur 1 gezeigt, 256 - 16 = 240 Byte groß ist. Durch eine andere Anzahl von Speichereinheiten 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 Speicherbereichen 5 kann die Gesamtgröße des Stapelspeichers 4 erhöht werden, ohne daß der verbleibende Arbeitsspeicher 10 reduziert wird.
Wie auch beim Stand der Technik üblich, erfolgt bei einer Inbetriebnahme des Prozessors 1 zunächst eine Initialisierung des zweiten Registers 7 beziehungsweise 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 Initialisierung 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 Figur 1 le¬ diglich vier Speicherbereiche 5 vorhanden, muß das erste Re¬ gister 6 nur zwei Bits zu deren Adressierung aufweisen. Es kann jedoch vorgesehen sein, die Anzahl der Adressbits des ersten Registers 6 sehr viel größer zu wählen und auch die Anzahl der auswählbaren Speicherbereiche entsprechend zu erhöhen. Wie bereits erwähnt, ist der Speicherbedarf des Stapelspeichers 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 Adressraums 3 des Prozessors 1 angeord- net sind, können in einem oder mehreren von demjenigen Speicher, 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 Bestandteile eines gemeinsamen Speichers sind, von dem nur derjenige Teil, der den Arbeitsspeicher 10 und den ersten Speicherbereich Page 1 beeinhaltet, im direkt durch die Adressausgänge 2 des Mikroprozessors 1 adressierbaren logischen Adressraum 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üngen) entsprechende Rücksprungadresεen oder Variablen im Stapelspeicher 4 zu speichern, wird, wie auch beim Stand der Technik, zunächst das zweite Register 7 beziehungsweise 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 Stapelzeiger 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 Adressausgänge 2 des Prozessors 1 adressierbar ist. Für die Wechsel zu den weiteren 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 untersten vier Bits XXXX veränderlich sind. Ist bereits die untere Grenze eines der Speicherbereiche 5 mit der Adresse 1111 0000 erreicht, und es wird ein weiteres Datum ausgele- sen, ergibt die Subtraktion beziehungsweise das Dekrementie- ren einen neuen Zählerstand von 1111 1111 im zweiten Register 7. Gleichzeitig registriert das erste Register 6 diesen Unterlauf und wird entsprechend dekrementiert, woraufhin über den zweiten Decoder 30 der nächstuntere Speicherbereich 5 se- lektierbar ist.
Figur 1 zeigt auch ein Detektionsmittel 11, welches durch Überwachung des Inhalts des ersten Registers 6 einen Überbeziehungsweise 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 Arbeitsspeichers 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 Überlaufs weist die Schaltungsanord¬ nung ein drittes Register 8 auf, in dem die Anzahl der nutzbaren 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 entsprechendes Ergebnissignal an den Prozessor 1. Dieser unterbricht wiederum vorübergehend die Abarbeitung des gerade auszuführenden Programms und nimmt zunächst eine wenigstens teilweise Leerung des Stapelspeichers 4 vor, gefolgt von einer entsprechenden Initialisierung des ersten Registers 6 und des zweiten Registers 7.
Figur 1 zeigt auch einen Datenbus 40, über den der Prozessor 1 Daten in den Arbeitsspeicher 10 beziehungsweise den Stapelspeicher 4 schreiben und aus diesen wieder auslesen kann.
Figur 2 zeigt noch einmal das erste Register 6 und das zweite Register 7 aus Figur 1. Anhand der Figur 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 Register 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 Unterprogramm (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, registriert dies die Logik 60 und dekrementiert den Inhalt des ersten Registers 6 um 1.
Statt eines Inkrementierens beziehungsweise Dekrementierens um jeweils 1 kann auch ein davon abweichender Inkrement- beziehungsweise Dekrementwert (zum Beispiel 2) vorgesehen sein. Dies ist abhängig davon, welchen Umfang die jeweils im Stapelspeicher 4 zu speichernden Daten haben. Beim bezüglich Figur 1 geschilderten Ausführungsbeispiel, bei dem die Spei- chereinheiten eine Größe von jeweils einem Byte haben, wäre ein Inkrement beziehungsweise Dekrement von jeweils 2 zu wählen, falls die zu speichernden Rücksprungadreεsen beziehungsweise Variablen eine Größe von zwei Byte aufweisen.
Figur 2 ist auch eine weitere Logik 50 zu entnehmen, mit der dem Stapelzeiger 7 relative beziehungsweise den Stapelzeiger 7 modifizierende Befehle realisierbar sind, wie sie bei Mikroprozessoren üblich sind. In diesen Fällen legt der Prozessor eine neue Adresse auf den Datenbus, um die der Inhalt des Stapelzeigers bei beim Stand der Technik üblichen Schaltungsanordnungen erhöht beziehungsweise erniedrigt werden soll. Um derartige relative beziehungsweise modifizierende Befehle auch bei der Erfindung zu ermöglichen, ist eine weitere Logik 50 vorgesehen, die durch Addition beziehungsweise 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 Schaltungsanordnung in der Lage, dieselben Stapelspeicher-Befehle auszuführen 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 Datenbus 40 und Adressausgängen 2 und ein herkömmlicher Decoder 20 einsetzbar. Der bisher übliche Stapelzeiger ist nur insofern zu modifizieren, daß die gewünschte Anzahl von Bits unveränderlich ist. Beim Ausführungsbeispiel in Figur 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 Adressraum 3, um die außerhalb dieses angeordneten Speicherbereiche 5 des Stapelspeichers 4 unterzubringen. 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 Adressausgä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 Adressraum 3 ist es unbedingt notwendig, den Anteil des Stapelspeichers 4 an diesem logischen Adressraum 3 möglichst gering zu halten. Es sind zwar auch schon zahlreiche Prozessoren mit einer größeren Anzahl von Adressausgängen bekannt, über die dann ein weitaus größerer logischer Adressraum adressierbar ist, jedoch 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 integrierte 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 stehenden kleinflächigen Chips mit wenigen Adressausgängen 2, wie dies beim 8051 der Fall ist, von großem Vorteil. Dessen Nachteile eines nur sehr kleinen, direkt adreεsierbaren logi¬ schen Adressraums 3 kann durch die Erfindung teilweise beho¬ ben werden. Ein größerer Prozessor mit einer größeren Anzahl von Adressausgängen 2 ist auch sehr viel kostspieliger.
Da die erfindungsgemäße Schaltungsanordnung voll kompatibel zu bisher üblichen Stapelspeicherbefehlen ist, ist eine Anpassung von Entwicklungstools für vom Prozessor 1 auεzufüh- rende Software-Anwendungen nicht notwendig.
Die erfindungsgemäße Schaltungεanordnung ermöglicht eine Adresserweiterung des Stapelspeicherbereicheε, ohne daß der direkt adreεεierbare logiεche Adressraum des Prozesεorε 1 er- weitert werden muß.
Stapelεpeicherbefehle müεεen von allen anderen Befehlen unterschieden werden. Daher werden günstiger Weise nur diejenigen 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 Adresεen werden die Auεwahlleitungen des zweiten Decoders 30 zur Auswahl der Speicherbereiche 5 deaktiviert .
Ein Über- beziehungsweiεe Unterlauf des Stapelzeigers 7 ist anhand eines Carry-Bits des Stapelzeiger 7 erkennbar. In beiden Fällen ändert sich dieseε Carry-Bit. Es handelte εich 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 Register 7 Bestandteil eines einzigen Registers sind, wobei das erεte Register 6 die höchsten Bits (MSBs, most significant bitε) dieses Registers belegen und das zweite Register 7 die unteren. Dann ergibt sich durch einen Überlauf deε zweiten Registerε 7 automatiεch ein Inkrementieren und durch einen Unterlauf ein Dekrementieren des ersten Registers 6.

Claims

Patentansprüche
1. Schaltungsanordnung
- mit einem Mikroprozeεsor (1) mit Adreßausgängen (2) , über die ein logischer Adreßraum (3) direkt adresεierbar ist,
- mit einem Arbeitsspeicher (10) , der sich in einem unteren Bereich des logischen Adreßraums (3) befindet,
- und mit einem Stapelspeicher (4) , der in wenigstenε zwei gleich große Speicherbereiche (5) aufgeteilt iεt, von denen einer in einem oberen Bereich deε logischen Adreßraums (3) und die übrigen außerhalb des logischen Adreßraums (3) angeordnet sind, wobei im Stapelspeicher (4) zu speichernde Daten so gespeichert werden, daß der im logiεchen Adreßraum (3) angeordnete Speicherbereich (5) gefüllt wird, bevor Da- ten in den anderen Speicherbereichen (5) gespeichert werden.
2. Schaltungsanordnung nach Anspruch 1
- mit einem ersten Register (6) zum Speichern einer Informa- tion zur Auswahl eines der Speicherbereiche (5)
- und mit einem zweiten Register (7) zum Speichern einer Information zur Auswahl von Speichereinheiten (9) innerhalb deε jeweilε durch den Inhalt deε ersten Registers (6) ausgewählten Speicherbereicheε (5) .
3. Schaltungsanordnung nach Anspruch 2,
- bei der das zweite Register (7) mit einem ersten Adreßdecoder (20) verbunden ist, über den die Speichereinheiten (9) innerhalb der Speicherbereiche (5) adresεierbar εind, wobei der erste Adreßdecoder (20) auch zur Adressierung des gesamten logischen Adreßraums (3) über die Adreßausgänge (2) dient,
- und bei der das erste Register (6) mit einem zweiten Adreßdecoder (30) verbunden ist, über den die Speicherbereiche (5) adresεierbar sind.
4. Schaltungsanordnung nach Anspruch 2 oder 3, bei der das erste Register (6) durch einen Überlauf bzw. einen Unterlauf des zweiten Registerε (7) inkrementierbar bzw. dekrementierbar iεt.
5. Schaltungsanordnung nach einem der vorstehenden Ansprüche,
- bei der ein Detektionsmittel (11) vorhanden ist zur Detek- tion eines Überschreitens einer Grenze des Stapelεpeichers (4) beim Einschreiben bzw. Ausleεen von Daten, - bei der in Abhängigkeit eines Ergebnissignals des Detekti- onsmittels (11) im Falle des Überschreitens eine wenigstenε teilweise Leerung des Stapelspeichers (4) durchführbar ist.
6. Schaltungsanordnung nach Anspruch 5, - die ein drittes Register (8) aufweist zum Speichern der Anzahl der Speicherbereiche (5) ,
- ein Überschreiten der oberen Grenze des Stapelspeichers (4) ist durch das Detektionsmittel (11) durch Vergleich des jeweils ausgewählten Speicherbereiches (5) mit dem Inhalt des dritten Registers (8) erkennbar.
EP97910244A 1996-09-30 1997-09-30 Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher Withdrawn EP1010081A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE19640316A DE19640316A1 (de) 1996-09-30 1996-09-30 Schaltungsanordnung mit einem Mikroprozessor und einem Stapelspeicher
DE19640316 1996-09-30
PCT/DE1997/002253 WO1998014876A1 (de) 1996-09-30 1997-09-30 Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher

Publications (1)

Publication Number Publication Date
EP1010081A1 true EP1010081A1 (de) 2000-06-21

Family

ID=7807457

Family Applications (1)

Application Number Title Priority Date Filing Date
EP97910244A Withdrawn EP1010081A1 (de) 1996-09-30 1997-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 上海海尔集成电路有限公司 数据堆栈存储电路及微控制器

Family Cites Families (9)

* 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
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
DE4340551A1 (de) * 1993-11-29 1995-06-01 Philips Patentverwaltung Programmspeichererweiterung für einen Mikroprozessor
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
DE69428881T2 (de) * 1994-01-12 2002-07-18 Sun Microsystems Inc Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO9814876A1 *

Also Published As

Publication number Publication date
CN1232564A (zh) 1999-10-20
JP2000503792A (ja) 2000-03-28
KR20000048754A (ko) 2000-07-25
DE19640316A1 (de) 1998-04-02
BR9712154A (pt) 1999-08-31
WO1998014876A1 (de) 1998-04-09

Similar Documents

Publication Publication Date Title
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE2431379B2 (de) Datenverarbeitungseinrichtung
DE68923433T2 (de) Einrichtung und Methode um Festwertspeicher in einem Rechnerspeicherbereich anzuordnen.
CH657218A5 (de) Mehrbenuetzer-datenverarbeitungsmaschine mit virtuellem speicher.
EP0813714A1 (de) Mehrbenutzerdatenverarbeitungsanlage mit speicherschutz
EP1183690B1 (de) Speicheranordnung mit adressverwürfelung
EP1352318B1 (de) Mikroprozessorschaltung für tragbare datenträger
DE19955776C1 (de) Multitasking-Prozessorsystem
EP1639475A2 (de) Prozessorarchitektur für exakte zeigeridentifizierung
DE68925376T2 (de) In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas
DE4238099A1 (de)
DE68926158T2 (de) Einchip-Mikrorechner mit EPROM
WO1998014876A1 (de) Schaltungsanordnung mit einem mikroprozessor und einem stapelspeicher
EP1204917B1 (de) Operandenstapelspeicher und verfahren zum betreiben eines operandenstapelspeichers
EP0890172B1 (de) Halbleiterspeichervorrichtung
DE19709975C2 (de) Mikrocomputer
DE19751093A1 (de) Programmgesteuerte Einheit
WO1998044421A1 (de) Schaltungsanordnung mit einem prozessor und einem datenspeicher
EP1516245B1 (de) Vorrichtung und verfahren zum verarbeiten einer sequenz von sprungbefehlen
DE2954533C2 (de)
EP0075715B1 (de) Cachespeicher und Verfahren zu seinem Betrieb
DE10313645B4 (de) System mit einer Datenverarbeitungseinrichtung und einer Speichereinrichtung
DE10064339B4 (de) Integrierte Schaltungsanordnung in einem Bremskraftregelsystem
DE68927044T2 (de) Rechnerspeicher mit Ausgangsleitungen, welche mittels der Speicheradresse zur Verbindung mit einem Datenbus ausgewählt werden
DE10206554B4 (de) Teletext-Anordnung mit einem programmierbaren externen Programmspeicher

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19990319

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT CH DE ES FR GB IT LI

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: INFINEON TECHNOLOGIES AG

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20030401