EP1010081A1 - Circuit with a microprocessor and a pushdown storage - Google Patents

Circuit with a microprocessor and a pushdown storage

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
German (de)
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/en
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.

Abstract

The microprocessor has a logical address range (3) that is directly addressable through address outputs (2). The pushdown (4) is placed at least partially outside the logical address range (3). Advantage: The working storage (10) remaining in the logical address range (3) can be maximized.

Description

Beschreibungdescription
Schaltungsanordnung mit einem Mikroprozessor und einem StapelspeicherCircuit arrangement with a microprocessor and a stack
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.Microprocessors require a stack memory in order to process programs to be executed by them. Whenever the processor not only has to process sequential program instructions sequentially when processing a program, but also has to execute a program jump, for example when calling a subroutine, the stack memory (also called "stack") is used to hold a return address which he jumps back to after the end of the subroutine in order to continue executing the program at the same point from where he made the subroutine jump. To manage the stack, there is a so-called stack pointer, which usually contains the address of the last entry in the stack and is incremented accordingly when a new entry is made in the stack. It is also common to store variables in the stack in addition to return addresses.
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.For this purpose, a program to be processed by the processor is loaded into a main memory of the processor, which is usually implemented by a RAM (Random Access Memory). The main memory is located in a logical address space that can be directly addressed via the processor's address outputs.
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.It is common to arrange the stack in the logical address space mentioned. As a result, the stack memory and the working memory share the available logical address space, the size of which is determined by the number of address outputs of the processor. With, for example, only eight address outputs, such as those found in type 8051 microcontrollers, this can be done directly via the address outputs of the controller addressable logical address space only 256 bytes in size. Depending on the complexity of the program to be processed and the maximum number of subroutine calls to be carried out, the size for the required stack memory results. The stack size is therefore directly dependent on the type of program to be processed. When manufacturing the microprocessor, however, it is usually not known what type of software it should ultimately process. The stack memory is therefore usually of relatively large dimensions, so that even complex programs can be handled by the processor. For many other, less complex applications, however, the stack memory is then oversized.
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 lediglichThe stack memory is usually arranged in the upper address area of the logical address space of the microprocessor. For this purpose, the stack pointer is preset to the lowest address of the stack when the processor is started up or initialized. If data is subsequently stored in the stack, the stack pointer is incremented accordingly. For the main memory of the processor, only the area from the beginning to the beginning of the stack is available in the logical address space. For the type 8051 microcontroller mentioned above with a logical address space of only
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.With a stack size of 64 bytes, for example, only 256 bytes remain for the working memory. However, the remaining size of the main memory is decisive for the design options of a programmer and for the speed with which programs can be processed by the processor.
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.The invention has for its object to provide a circuit arrangement with a microprocessor and a stack for the microprocessor, in which the largest possible area of the logical address space directly addressable by the processor via its address outputs for the main memory is available and the smallest possible part of the logi ¬'s address space occupied by the stack.
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.This object is achieved by a circuit arrangement according to claim 1. According to the invention, it is provided to arrange at least a part of the stack memory outside the directly addressable logical address space of the microprocessor.
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.This is particularly easy to achieve by dividing the stack into memory areas of equal size, only one of which is arranged in the directly addressable logical address space. It is then possible in a simple manner to address that of the memory areas which is located in the logical address space directly via the address outputs of the microprocessor, while special logic is required to address the other memory areas of the stack, which is necessary for switching between the different storage areas.
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.It is therefore particularly advantageous if the circuit arrangement has a first register in which information on the selection of one of the memory areas can be stored and a second register in which information on the selection of memory units contained in the respectively selected memory area can be stored. This second register can advantageously correspond to a conventional stack pointer. The storage units of each storage area can be used to hold one data word each. It is advantageous if there is a memory unit in each of the memory areas with the same address that can be stored in the second register or the stack memory. Which of these memory units is addressed with the same addresses is determined by the content of the first register and the resulting selection of the corresponding memory area. The functioning of this exemplary embodiment of the invention is as follows: When the circuit arrangement is started up, the information for selecting the first memory area is stored in the first register. If the stack memory is filled, the corresponding data (return addresses or variables) are first stored in succession in the memory units of the first memory area. The content of the second register or the stack pointer is incremented accordingly. If all storage units of the first storage area are occupied with data, the content of the first register is incremented and the second storage area is thus selected. The contents of the second register are then used to fill its storage units with data, if necessary, and so on.
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.The invention enables the greatest possible part of the logical address space to be available for the working memory of the microprocessor by arranging as small a part of the stack memory in the logical address space as possible with little effort and with only a slight change from conventional circuit arrangements which have a microprocessor and a corresponding stack memory stands, whereby at the same time an arbitrarily large stack memory can be realized, the largest part of which is arranged outside the logical address space. In the exemplary embodiment described, these two goals can be achieved in a particularly simple manner by selecting the number of storage units per storage area as low as possible and the number of storage areas of the stack memory as high as possible.
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.A further development of the invention provides that the circuit arrangement has a detection means which is used to detect when a limit of the stack memory has been exceeded when writing or reading data into the stack memory. If it is provided at the same time, depending on a result signal of the detection means in the event that an upper limit or is exceeded If the stack memory falls below a lower limit and the stack memory is at least partially emptied, malfunctions as a result of the overflow or underflow of the stack memory can be avoided.
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.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. As an alternative to emptying the stack memory by aborting the processing of subroutines, it is possible to at least temporarily swap the contents of the stack memory at least partially into a further memory area, for example in that of the main memory or into a memory outside the address space directly addressable by the processor. This is done by copying the data to be swapped out to the desired location.
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.In addition or as an alternative to emptying the stack memory on the basis of the result signal from the detection means, it makes sense if the interrupt generates a corresponding error message which indicates to a user of the processor that the stack memory is malfunctioning.
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 derTo avoid exceeding the upper limit of the stack, it is particularly advantageous if the circuit arrangement has a third register in which the number of
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 .Memory areas are stored so that an overflow of the stack memory can be detected by means of the detection means by comparing the content of the third register with the content of the first register in which the address of the respectively selected memory area is stored. The invention is explained in more detail below with reference to the figures.
Figur 1 zeigt ein Ausführungsbeispiel der Erfindung.Figure 1 shows an embodiment of the invention.
Figur 2 zeigt ein Detail aus Figur 1.FIG. 2 shows a detail from FIG. 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.FIG. 1 shows a microprocessor 1 with a limited number of address outputs 2 for addressing a logical address space 3 via a corresponding address decoder 20. In this exemplary embodiment, it is assumed that the microprocessor 1 has eight address outputs 2. This is the case, for example, if the microprocessor 1 is a type 8051 microcontroller. The binary addresses of storage units within the logical address space 3 can also be seen in FIG. 1. The lowest address of the logical address space is 0000 0000. The highest address is 1111 1111. The storage units can be data words, each of which has the size of one or more bytes. Assume that the storage units are one byte in size. 256 bytes can then be addressed by means of the decoder 20 via the eight address outputs 2.
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 denIn the exemplary embodiment in FIG. 1, there is a stack memory 4 which is divided into four memory areas 5 (page 1 to page 4) of equal size. Each of the memory areas 5 is divided into individually addressable memory units 9. The memory units 9 of each of the memory areas 5 can each be addressed via the same addresses present at the address outputs 2 of the processor 1. These correspond to the
16 Bits im obersten Bereich des logischen Adressraums 3 zwischen den Adressen 1111 0000 und 1111 1111.16 bits in the uppermost area of the logical address space 3 between the addresses 1111 0000 and 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.A selection of one of the memory units 9, each with the same address, is made via a second decoder 30. regions 5 can be selected via the second decoder 30 a SpeI ¬ cherbereiche. 5 If an address of the logical address space 3, which is assigned to the stack memory 4, is present at the address outputs 2 of the processor 1, the first register 6 and the second decoder 30 determine in which of the memory areas 5 the memory unit with the corresponding address is selected . Which of the memory units 9 is addressed by the processor 1 within the memory areas 5 is determined by the content of a second register 7, which corresponds to a conventional stack pointer or stack pointer.
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.It was previously common to arrange the entire stack 4 within the logical address space 3. In the exemplary embodiment shown, in which the stack memory 4 comprises four memory areas 5 each with 16 bytes, that is to say 64 bytes in total, when the entire stack memory 4 is arranged in the logical address space 3, only 256-64 = 192 bytes remain for a working memory 10 processor 1 remaining. The invention advantageously achieves that the working memory 10, as shown in FIG. 1, is 256-16 = 240 bytes in size. The size of the remaining working memory 10 can be increased or decreased by a different number of memory units 9 within the memory areas 5. The total size of the stack memory 4 can be increased by a larger number of memory areas 5 without the remaining working memory 10 being reduced.
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.As is also customary in the prior art, when the processor 1 is started up, the second register 7 or the stack is initially initialized. The content of the second register 7 is initially preset to the lowest address of the memory units 9 of the stack memory 4, namely 1111 0000. During the initialization, the content of the first register 6, which is not available in the prior art, is also set such that the second decoder 30 is the first memory area advantage Page 1 selec ¬. Are as in the embodiment in Figure 1 le ¬ diglich four memory areas 5 exists, the first re gister ¬ must have 6 only two bits for their addressing. However, it can be provided that the number of address bits of the first register 6 is selected to be much larger and the number of selectable memory areas is also increased accordingly. As already mentioned, the memory requirement of the stack 4 is dependent on the number of subroutine branches and the variables to be stored in the stack 4.
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.Those memory areas 5 of the stack 4 which are arranged outside the logical address space 3 of the processor 1 can be arranged in one or more memories different from that in which the first memory area is arranged. It makes sense that these additional memories are located on the same integrated circuit as the first memory area 1 and the working memory 10. It is particularly favorable if the entire stack memory 4 and the working memory 10 are components of a common memory, of which only that part which contains the working memory 10 and the first memory area 1 in the logical address space which can be addressed directly by the address outputs 2 of the microprocessor 1 3 lie.
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.If the first register 6 is initialized to the value YY = 00 and the second register 7 is initialized to the value 1111 0000 and corresponding return addresses or variables are then to be stored in the stack memory 4 (due to, for example, subroutine jumps), as is also the case with the Technology, first the second register 7 or the stack pointer incremented accordingly. A corresponding decrementing takes place when reading out data from the stack memory 4. This ensures that always the most recently written into the stack memory 4 Informa ¬ tion as the first is read out again.
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 .The invention now enables that as soon as the first memory area Page 1 is filled with data, that is to say the stack pointer 7 has the address 1111 1111, the address 1111 0000 in the stack pointer again passes over the last 4 bits of the stack pointer 7 is included. This is achieved in that the first four bits of the stack pointer 7 are set to 1111 in an unchangeable manner. At the same time, the overflow of the second register 7 is registered by the first register 6 and this is incremented accordingly, so that the memory unit 9 with the address 1111 0000 can now be addressed in the second memory area via the address outputs 2 of the processor 1. The same applies to the change to the other storage areas. Likewise, when reading data from the stack 4, the stack pointer 7 is decremented accordingly.
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.It is emphasized again that the top four bits of the stack pointer are fixed at 1111 and only the bottom four bits XXXX are variable. If the lower limit of one of the memory areas 5 with the address 1111 0000 has already been reached and a further date is read, the subtraction or decrementing results in a new counter reading of 1111 1111 in the second register 7. At the same time, the first register registers 6 this underflow and is decremented accordingly, whereupon the next lower memory area 5 can be selected via the second decoder 30.
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 .FIG. 1 also shows a detection means 11 which, by monitoring the content of the first register 6, detects an overflow or underflow of the stack memory 4. An underflow is prevented by the detection means 11 having a previous content of the first register 6 of YY = 00 and a further decrement that subsequently occurs. ment gives a corresponding result signal to the processor 1, whereupon the processor temporarily interrupts the further processing of the program stored in the working memory 10 and first carries out a new initialization of the first register 6 and the second register 7.
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.To register an overflow, the circuit arrangement has a third register 8, in which the number of usable memory areas 5 is stored. Analogous to the just described case of the underflow of the first register 6, the detection means 11 detects an overflow of the stack memory 4 by comparing the content of the first register with that of the third register 8 and sends a corresponding result signal to the processor 1. This in turn temporarily interrupts the processor Execution of the program to be executed and first performs an at least partial emptying of the stack 4, followed by a corresponding initialization of the first register 6 and the second register 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.FIG. 1 also shows a data bus 40, via which the processor 1 can write data into the working memory 10 or the stack memory 4 and read them out again.
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 vonFIG. 2 again shows the first register 6 and the second register 7 from FIG. 1. The process of incrementing and decrementing is to be explained once again with reference to FIG. 2. In the case of a subroutine call (call), the corresponding return address is stored in the stack 4 at the address which is determined by the content of the two registers 6 and 7. At the same time, the last 4 bits XXXX of the second register 7 are incremented by 1, so that the stack pointer 7 points to the next free storage unit 9 in the stack 4. If an overflow occurs, that is, the content of the second register 7 jumps from
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.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.
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.Instead of incrementing or decrementing by 1 in each case, 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.
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 .FIG. 2 also shows a further logic 50, with which commands relative to the stack pointer 7 or modifying the stack pointer 7 can be implemented, as are customary in microprocessors. In these cases, the processor places a new address on the data bus by which the content of the stack pointer is to be increased or decreased in the circuit arrangements customary in the prior art. In order to enable such relative or modifying commands in the invention as well, a further logic 50 is provided which adjusts or adjusts the contents of the two registers 6, 7 to the correct values.
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.The invention has the advantage that a large working memory 10 and a large stack memory 4 can be implemented at the same time. In addition, the circuit arrangement according to the invention is capable of executing the same stack instructions as conventional circuit arrangements. The circuit arrangement according to the invention has the further advantage that it is only under a slight modification herkömm ¬ Licher such circuit arrangements are realized. Thus, a conventional microprocessor 1 with conventional data bus 40 and address outputs 2 and a conventional decoder 20 can be used. The previously common stack pointer can only be modified to the extent that the desired number of bits cannot be changed. In the exemplary embodiment in FIG. 1, the four uppermost bits in the stack pointer 7 are set unchangeably at 1111. Furthermore, a memory is required which is larger than the logical address space 3 in order to accommodate the memory areas 5 of the stack memory 4 arranged outside this. In addition, the circuit arrangement according to the invention requires the first register 6 and the second decoder 30 to select one of the memory areas 5 in each case.
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.The invention is particularly advantageous where only one processor 1 with a very small number of address outputs 2 is available, as is the case, for example, with the 8051 microcontroller. Especially with such a small available logical address space 3, it is absolutely necessary to keep the portion of the stack 4 in this logical address space 3 as small as possible. Although numerous processors with a larger number of address outputs are also known, by means of which a much larger logical address space can then be addressed, these processors are generally much larger than, for example, the 8051 microcontroller If one or more integrated semiconductor circuits have to be accommodated within a card-shaped plastic housing, it is important that the chip area is as small as possible, because the mechanical stresses in a chip card are very large, so that larger-area chips are easily destroyed. For this reason, the use of currently available small-area chips with few address outputs 2, as is the case with the 8051, a great advantage. The disadvantages of a very small, directly adreεsierbaren logi ¬'s address space 3 can be ben beho ¬ by the invention partially. A larger processor with a larger number of address outputs 2 is also much more expensive.
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.Since the circuit arrangement according to the invention is fully compatible with conventional stack memory commands, it is not necessary to adapt development tools for software applications to be executed by processor 1.
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ß.The circuit arrangement according to the invention enables an expansion of the address of the stack memory area without the directly addressable logical address space of the processor 1 having to be expanded.
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 .Stack commands must be distinguished from all other commands. Therefore, only those addresses that are larger than 1111 0000 are transferred to the stack pointer 7 in a relative or modifying command. This can be checked using a simple comparator. For all other addresses, the selection lines of the second decoder 30 for selecting the memory areas 5 are deactivated.
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.An overflow or underflow of the stack pointer 7 can be recognized by means of a carry bit of the stack pointer 7. This carry bit changes in both cases. It was an underflow if XXXX = 0000 was previously. It is an overflow if XXXX = 1111 was previously.
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. It is possible that the first register 6 and the second register 7 are part of a single register, the first register 6 occupying the highest bits (MSBs, most significant bits) of this register and the second register 7 the lower ones. Then an overflow of the second results Registers 7 automatically incrementing and decrementing the first register 6 by an underflow.

Claims

Patentansprüche claims
1. Schaltungsanordnung1. Circuit arrangement
- mit einem Mikroprozeεsor (1) mit Adreßausgängen (2) , über die ein logischer Adreßraum (3) direkt adresεierbar ist,with a microprocessor (1) with address outputs (2), via which a logical address space (3) can be directly addressed,
- mit einem Arbeitsspeicher (10) , der sich in einem unteren Bereich des logischen Adreßraums (3) befindet,- With a working memory (10), which is located in a lower area of the logical address space (3),
- 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.- And with a stack (4), which is divided into at least two equally large memory areas (5), one of which is arranged in an upper area of the logical address space (3) and the rest outside the logical address space (3) Stack memory (4) data to be stored are stored in such a way that the memory area (5) arranged in the logical address space (3) is filled before data is stored in the other memory areas (5).
2. Schaltungsanordnung nach Anspruch 12. Circuit arrangement according to claim 1
- mit einem ersten Register (6) zum Speichern einer Informa- tion zur Auswahl eines der Speicherbereiche (5)- With a first register (6) for storing information on the selection of one of the memory areas (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) .- And with a second register (7) for storing information for the selection of storage units (9) within the respective storage areas (5) selected by the content of the first register (6).
3. Schaltungsanordnung nach Anspruch 2,3. Circuit arrangement according to claim 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,- in which the second register (7) is connected to a first address decoder (20), via which the memory units (9) can be addressed within the memory areas (5), the first address decoder (20) also for addressing the entire logical address space ( 3) via the address outputs (2),
- und bei der das erste Register (6) mit einem zweiten Adreßdecoder (30) verbunden ist, über den die Speicherbereiche (5) adresεierbar sind. - And in which the first register (6) is connected to a second address decoder (30), via which the memory areas (5) can be addressed.
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.4. Circuit arrangement according to claim 2 or 3, in which the first register (6) can be incremented or decremented by an overflow or an underflow of the second register (7).
5. Schaltungsanordnung nach einem der vorstehenden Ansprüche,5. Circuit arrangement according to one of the preceding claims,
- 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.- in which a detection means (11) is present for detecting that a limit of the stack memory (4) has been exceeded when writing or reading out data, - in which, depending on a result signal from the detection means (11), one is exceeded if one is exceeded at least partial emptying of the stack memory (4) can be carried out.
6. Schaltungsanordnung nach Anspruch 5, - die ein drittes Register (8) aufweist zum Speichern der Anzahl der Speicherbereiche (5) ,6. Circuit arrangement according to claim 5, - which has a third register (8) for storing the number of memory areas (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. - An exceeding of the upper limit of the stack (4) can be detected by the detection means (11) by comparing the selected memory area (5) with the content of the third register (8).
EP97910244A 1996-09-30 1997-09-30 Circuit with a microprocessor and a pushdown storage Withdrawn EP1010081A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE19640316A DE19640316A1 (en) 1996-09-30 1996-09-30 Circuit arrangement with a microprocessor and a stack
DE19640316 1996-09-30
PCT/DE1997/002253 WO1998014876A1 (en) 1996-09-30 1997-09-30 Circuit with a microprocessor and a pushdown storage

Publications (1)

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

Family

ID=7807457

Family Applications (1)

Application Number Title Priority Date Filing Date
EP97910244A Withdrawn EP1010081A1 (en) 1996-09-30 1997-09-30 Circuit with a microprocessor and a pushdown storage

Country Status (7)

Country Link
EP (1) EP1010081A1 (en)
JP (1) JP2000503792A (en)
KR (1) KR20000048754A (en)
CN (1) CN1232564A (en)
BR (1) BR9712154A (en)
DE (1) DE19640316A1 (en)
WO (1) WO1998014876A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100353335C (en) * 2003-03-28 2007-12-05 联发科技股份有限公司 Method of increasing storage in processor
JP5391870B2 (en) * 2009-06-26 2014-01-15 富士通株式会社 Information processing apparatus and method
CN102193868B (en) * 2010-03-10 2013-06-19 上海海尔集成电路有限公司 Data stack storage circuit and microcontroller

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3726192A1 (en) * 1987-08-06 1989-02-16 Otto Mueller STACK CONTROL
JPH0215345A (en) * 1988-07-04 1990-01-19 Hitachi Ltd Data processor
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 (en) * 1993-11-29 1995-06-01 Philips Patentverwaltung Program memory extension for a microprocessor
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

Non-Patent Citations (1)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
DE69723286T2 (en) REAL TIME PROGRAMMING LANGUAGE ACCELERATOR
DE2431379B2 (en) Data processing device
CH657218A5 (en) MULTIPLE-USE DATA PROCESSING MACHINE WITH VIRTUAL MEMORY.
EP0813714A1 (en) Multi-user data processing system with storage protection
DE3500804A1 (en) INTERRUPT CONTROL CIRCUIT
WO2000070620A1 (en) Memory array with address scrambling
EP1352318B1 (en) Microprocessor circuit for portable data carriers
DE19955776C1 (en) Multitasking processor system
EP1639475A2 (en) Processor architecture for exact index identification
DE4238099C2 (en) Microprocessor with multiple operating modes
WO1998014876A1 (en) Circuit with a microprocessor and a pushdown storage
EP1021791B1 (en) Chip card with memory for application dependent reloadable programs
EP1204917B1 (en) Stack of operands and method for stacking of operands
EP0890172B1 (en) Solid-state memory device
DE19709975C2 (en) Microcomputer
DE19751093A1 (en) Program controlled unit
WO1998044421A1 (en) Circuit with a processor and a data memory
EP1516245B1 (en) Device and method for processing a sequence of jump instructions
DE2954533C2 (en)
EP0075715B1 (en) Cache memory and its operating method
DE10313645B4 (en) System with a data processing device and a memory device
DE10064339B4 (en) Integrated circuit arrangement in a brake force control system
DE10206554B4 (en) Teletext arrangement with a programmable external program memory
EP0513505A1 (en) Shadow register for a write-only register
DE2451984A1 (en) DATA PROCESSING SYSTEM

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