DE3121174C2 - Circuit arrangement in a processor - Google Patents

Circuit arrangement in a processor

Info

Publication number
DE3121174C2
DE3121174C2 DE3121174A DE3121174A DE3121174C2 DE 3121174 C2 DE3121174 C2 DE 3121174C2 DE 3121174 A DE3121174 A DE 3121174A DE 3121174 A DE3121174 A DE 3121174A DE 3121174 C2 DE3121174 C2 DE 3121174C2
Authority
DE
Germany
Prior art keywords
instruction
memory
address
register
program
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.)
Expired
Application number
DE3121174A
Other languages
German (de)
Other versions
DE3121174A1 (en
Inventor
Alfred Eckert
Ernst Heilmeir
Klaus 8000 München Hempen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE3121174A priority Critical patent/DE3121174C2/en
Publication of DE3121174A1 publication Critical patent/DE3121174A1/en
Application granted granted Critical
Publication of DE3121174C2 publication Critical patent/DE3121174C2/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

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)

Abstract

Für die schnelle Abarbeitung von in Programmschleifen programmierten, höherwertigen Funktionen wird im Prozessor ein virtueller Instruktionsspeicher (VIS) vorgesehen, in den kontinuierlich die auszuführenden Instruktionen abgespeichert werden. Neue Instruktionen werden aus dem virtuellen Instruktionsspeicher (VIS) geholt, wenn sie in diesem vorhanden sind.A virtual instruction memory (VIS), in which the instructions to be executed are continuously stored, is provided in the processor for the rapid processing of higher-value functions programmed in program loops. New instructions are fetched from the virtual instruction memory (VIS) if they are present in it.

Description

Die Erfindung betrifft eine Schaltungsanordnung gemäß dem Oberbegriff des Patentanspruchs 1.The invention relates to a circuit arrangement according to the preamble of claim 1.

Prozessoren besitzen Instruktionssätze mit einfachen Funktionen, die erst durch die Programmierung in der Lage sind, höherwertige Funktionen, wie z. B. Suchbefehle innerhalb von Datenfeldern, oder Blocktransfer innerhalb des Hauptspeichers und ähnliches auszuführen.. Processors have instruction sets with simple functions that only become available through programming in the Are able to perform higher-value functions, such as B. Search commands within data fields, or block transfer within the main memory and the like.

Höherwertige Funktionen sind meistens dadurch gekennzeichnet, daß sie bei ihrer Abarbeitung durch den Prozessor Programmschleifen, die mehrmals durchlaufen werden, zur Folge haben. Zum Beispiel werden bei einem Suchbefehl innerhalb eines Datenfeldes ein oder mehrere Bytes mit den Bytes des Vergleichsfeldes verglichen. Im Prozessor wird dabei eine Programmschleife durchlaufen, bei deren Verarbeitung Arbeitsspeicheradressen fortlaufend verändert werden. Eine solche Schleife wird dann so oft durchlaufen, wie es der Anzahl der zu vergleichenden Datenworte entspricht.Higher-order functions are usually characterized by the fact that they are processed by the Processor program loops that are run through several times. For example, at a search command within a data field compares one or more bytes with the bytes of the comparison field. A program loop is run through in the processor and working memory addresses are processed continuously changed. Such a loop is then run through as often as the number corresponds to the data words to be compared.

Dabei muß über die gemeinsamen Adress- und Datensammelleitungen, den sog. Bus, der den Prozessor mit den externen Geräten wie z. B. Programm-, Datenspeicher und Peripheriegeräten verbindet, zeitlich nacheinander das Ein- und Auslesen der Daten und der Instruktionen ausgeführt werden. Die Zeit, die f.'ir das Einlesen der Instruktionen in den Prozessor benötigt wird, verringert die mögliche Leistung des Prozessors im Hinbhck auf eine möglichst schnelle Abarbeitung des Programms.The common address and data bus lines, the so-called bus, which connects the processor with external devices such as B. program, data memory and peripheral devices connects the reading in and reading out of data and instructions, one after the other are executed. The time it takes to read the instructions into the processor , reduces the possible performance of the processor in view of the fastest possible processing of the Program.

ίο Man versucht diesem Umstand dadurch Rechnung zu tragen, daß einige höherwertige und spezielle Instruktionen zusätzlich zu dem üblicherweise einfachen Instruktionssatz vorgesehen werden. Beim Einsatz solcher Prozessoren zeigt es sich aber, daß meist auch nochίο One tries to take this into account carry some higher level and special instructions in addition to the usually simple instruction set are provided. When using such processors, however, it turns out that mostly also

is einige andere komplexere Instruktionen nötig sind.some other more complex instructions are needed.

Aus der US-PS 33 37 851 ist eine Schaltungsanordnung bekannt, bei der neben dem langsamen Hauptspeicher ein schneller HilfsSpeicher vorgesehen ist. Vom Programmzähler adressierte Instruktionen werden beim erstmaligen Abarbeiten parallel in ein Instruk-LiOnSfcgiStcr UTiu ΐΠ ucii SCimcucn rliliSSpciCiicT eingeschrieben. Bei einem Rücksprung des Programnizählers auf eine schon einmal abgearbeitete Instruktion wird diese, falls sie im Hilfsspeicher adressiert werden kann, aus diesem und sonst aus dem Hauptspeicher in das Instruktionsregister beschrieben. Ein wahlfreier Zugriff zu den im HilfsspeFeher stehenden Instruktionen ist bei dieser Schaltungsanordnung nicht möglich.From US-PS 33 37 851 a circuit arrangement is known in which in addition to the slow main memory a fast auxiliary memory is provided. Instructions addressed by the program counter are when processing for the first time in parallel in an Instruk-LiOnSfcgiStcr UTiu ΐΠ ucii SCimcucn rliliSSpciCiicT inscribed. When the program counter returns to an instruction that has already been processed, this, if it can be addressed in the auxiliary memory, from this and otherwise from the main memory into the Instruction register described. Random access to the instructions in the help desk is included in this circuit arrangement is not possible.

Aus der DE-AS 27 02 556 ist eine Schaltungsanordnung bekannt, die ein die jeweils nächsten von dem Mikroprozessor auszuführenden Befehle aufnehmendes Fifo-Register aufweistFrom DE-AS 27 02 556 a circuit arrangement is known, which one the next of the Microprocessor to be executed instructions receiving FIFO register

Es ist Aufgabe der Erfindung, eine Schaltungsanordnung der eingangs genannten Art für einen Prozessor anzugeben, mit der die Speicherzugriffszeiten bei der Abarbeitung von Befehlsschleifen, wie sie insbesondere bei Interpretationen höherer Funktionen auftreten, verkürzt werden.
Diese Aufgabe wird erfKidungigcmäß durch die im Anspruch 1 angegebenen Merkmale gelöst.
It is the object of the invention to provide a circuit arrangement of the type mentioned at the beginning for a processor with which the memory access times are shortened when processing instruction loops, such as occur in particular when interpreting higher functions.
According to the invention, this object is achieved by the features specified in claim 1.

Ein wesentlicher Vorteil der Erfindung besteht darin, daß der Bus hauptsächlich für den Datentransfer benutzt werden kann. Um den Bus möglichst selten für das Einlesen von Instruktionen aus einem externen Programmspeicher in den Prozessor zu benutzen, werden gemäß einer Ausgestaltung der Erfindung diese Instruktionen fortlaufend in einen Schreib-Lesespeicher, einen sog. virtuellen Instruktionsspeicher eingeschrieben. Werden nun mittels dieser Instruktionen Programmschleifen abgearbeitet, so bedeutet das, daß am Ende der Schleife ein Rücksprung auf den Anfang der Schleife erfolgt, d. h. auf eine Instruktion, die bereits einmal eingelesen wurde und somit im Prozessor, und zwar im virtuellen Instruktionsspeicher vorhanden ist.A major advantage of the invention is that the bus is mainly used for data transfer can be. To use the bus as rarely as possible for reading instructions from an external program memory to use in the processor, according to an embodiment of the invention, these instructions continuously written into a read-write memory, a so-called virtual instruction memory. If program loops are now processed using these instructions, this means that at the end the loop returns to the beginning of the loop, d. H. to an instruction that has already been read once and is therefore present in the processor, namely in the virtual instruction memory.

Ob diese Instruktion, auf die der Rücksprung erfolgen soll, vorhanden ist. wird durch Vergleich der zugehörenden Instruktionsadresse mit der höchsten und der niedrigsten in der Schaltungsanordnung vorhandenen Instruktionsadresse ermittelt. Die Adressen, die miteinander verglichen werden, sind identisch mit den Instruktionsadressen des Prozessorsystems. Wird eine Instruktionsadresse bzw. die zugehörige Instruktion im virtuellen Instruktionsspeicher gefunden, so wird sie parallel zur Abarbeitung der vorhergehenden Instruktion bereitgestellt. Whether this instruction, to which the return should take place, is available. is made by comparing the associated Instruction address with the highest and the lowest instruction address present in the circuit arrangement determined. The addresses that are compared with each other are identical to the instruction addresses of the processor system. If an instruction address or the associated instruction is in the virtual If the instruction memory is found, it is made available parallel to the processing of the previous instruction.

Ist eine Instruktion nicht im virtuellen Instruktionsspeicher vorhanden, so wird diese aus dem externen Programmspeicher in den virtuellen Instruktionsspei-If an instruction is not available in the virtual instruction memory, it is taken from the external one Program memory in the virtual instruction memory

eher eingeschrieben. Gleichzeitig werden das, die virtuelle Speicheradresse der eingegebenen Instruktion anzeigende Register, und die, die Anzahl der gespeicherten Instruktionen anzeigende Kippstufe auf den aktuellen Stand gebrachtrather enrolled. At the same time, that, the virtual Register indicating the memory address of the instruction entered, and the number of those stored Instruction-displaying flip-flop brought up to date

Ein weiterer Vorteil der erfindungsgemäßen Schaltungsanordnung besteht darin, daß zur Ermittlung der virtuellen Speicheradresse nicht zwei Register, sondern nur ein Registei und eine Kippstufe verwendet werden.Another advantage of the circuit arrangement according to the invention is that to determine the virtual memory address not two registers, but only one Registei and a flip-flop can be used.

Im folgenden wird die Erfindung anhand eines in den Figuren dargestellten Ausführungsbeispiels näher beschrieben. Es zeigtThe invention is described in more detail below with reference to an exemplary embodiment shown in the figures. It shows

F i g. 1 ein Blockschaltbild der im Prozessor vorgesehenen Schaltungsanordnung,F i g. 1 is a block diagram of the circuit arrangement provided in the processor,

Fig.2 ein Ablaufdiagramm zur Erläuterung der Funktion der Schaltungsanordnung nach F i g. 1.2 shows a flow chart to explain the Function of the circuit arrangement according to FIG. 1.

Das in Fig. 1 dargestellte Blockschaltbild, bei dem nur die zum Verständnis der Erfindung erforderlichen Schaltungsteile dargestellt sind, besteht aus einem extern angeordneten Programmspeicher PS, einem Programmzähier FZ, drei Registern RegA, RegB und Regl, von denen das letztere ein Instruktionsregisttv ist, zwei Subtrahierern SubA und SubB, einer Kippstufe K, einem Multiplexer Mx und einem virtuellen Instruktionsspeicher VIS. Diese Schaltungsbausteine sind über einen Bus Fund ein Steuerleitungssystem 5zusammengeschaltet. The block diagram shown in Fig. 1, in which only the circuit parts required to understand the invention are shown, consists of an externally arranged program memory PS, a program counter FZ, three registers RegA, RegB and Regl, of which the latter is an instruction register, two Subtractors SubA and SubB, a flip-flop K, a multiplexer Mx and a virtual instruction memory VIS. These circuit modules are interconnected via a bus and a control line system 5.

Zur Erläuterung der Funktion der in F i g. 1 gezeigten Schaltungsanordnung wird im folgenden auch auf das in F i g. 2 dargestellte Ablaufdiagramm verwiesen.To explain the function of the in F i g. The circuit arrangement shown in the following is also referred to in FIG F i g. Referring to the flow chart shown in FIG.

Es wird angenommen, daß vom Programmzähler PZ des Prozessors eine neue Instruktionsadresse IA auf den Bus B gegeben wird. Diese liegt dann am Adreßeingang des externen Programmspeichers PS, am Eingang des ersten Registers RegA und an einem Eingang des ersten Subtrahierers SubA an. Das erste Register RegA enthält jeweils die Instruktionsadresse der zuletzt aus dem externen Programmspeicher PS in den virtuellen Instruktionsspeicher VIS eingeschriebenen Instruktion. Der Ausgang des ersten Registers RegA liegt am anderen Eingang des ersten Subtrahierers SubA an. Im ersten Subtrahierer SuM wird nun der Adreßabstand AD als die Differenz aus dem Inhalt des ersten Registers RegA und der neuen Instruktionsadresse IA gebildet. Der Ausgang des ersten Subtrahierers SubA liegt an dem einen Hingang des zweiten Subtrahieren SuW? an.It is assumed that a new instruction address IA is given to bus B by the program counter PZ of the processor. This is then applied to the address input of the external program memory PS, to the input of the first register RegA and to an input of the first subtractor SubA . The first register RegA contains the instruction address of the last instruction written from the external program memory PS into the virtual instruction memory VIS . The output of the first register RegA is applied to the other input of the first subtracter SubA . In the first subtracter SuM, the address spacing AD is now formed as the difference between the content of the first register RegA and the new instruction address IA . The output of the first subtracter SubA is connected to the one input of the second subtracter SuW? at.

Im zweiten Register RegB steht die virtuelle Speicheradresse VSA der zuletzt aus dem externen Programmspeicher PS in den virtuellen Instruktionsspeicher V/S eingeschriebene;! Instruktion, d. h. eine virtuelle Speicheradresse VSA zwischen 0 und einer Zahl N. Die Zahl A'gibt an, wieviele Speicheradressen VSA im virtuellen Instruktionsspeicher VYSfürdie Belegung mit Instruktionen vorhanden sind. Die Zahl N kann für ein praktisches Beispiel den Wert 16 haben. Der Ausgang des zweiten Registers RegB liegt am anderen Eingang des zweiten Subtrahierers SubB an Das zweite Register RegB arbeitet modulo Adreßbereich des virtuellen Instruktionsspeichers VIS, d. h. auf die höchste virtuelle Speicheradresse VSA = N folgt VSA = 0. (RegB + 1 = N + 1 = 0).The second register RegB contains the virtual memory address VSA that was last written into the virtual instruction memory V / S from the external program memory PS ;! Instruction, ie a virtual memory address VSA between 0 and a number N. The number A 'specifies how many memory addresses VSA are present in the virtual instruction memory VYS for the allocation of instructions. For a practical example, the number N can have the value 16. The output of the second register RegB is at the other input of the second subtracter SubB. The second register RegB operates modulo the address area of the virtual instruction memory VIS, ie the highest virtual memory address VSA = N is followed by VSA = 0. (RegB + 1 = N + 1 = 0).

Im zweiten Subtrahierer SubB wird die virtuelle Speicheradresse VSA als Differenz aus dem Inhalt des zweiten Registers RegB und dem Adreßabstand AD ermittelt und sowohl auf den Adreßeingang des virtuellen Instruktionsspeichers VIS als auch auf den Eingang des zweiten Registers /?e,g-ß gegeben.In the second subtracter SubB , the virtual memory address VSA is determined as the difference between the content of the second register RegB and the address spacing AD and given both to the address input of the virtual instruction memory VIS and to the input of the second register /? E, g-ß.

Die Kippstufe K dient zur Anzeige von zwei BeIegungszuständen K = O und K = 1, des virtuellen Instruktionssoeichers VIS mit gültigen Intruktionen. Zeigt die Kippstufe K den Wert K = 0 an, so steht die Anzahl der gültigen Instruktionen im zweiten Register RegB, una zwar als virtuelle Speicheradresse VSA der zuletzt in den virtuellen Instruktionsspeicher VIS eingeschriebenen Instruktion. Zeigt die Kippstufe K den Wert K — 1 an, so heißt das, daß der virtuelle Instruktionsspeicher VIS vollständig mit gültigen Instruktionen be- legt ist. Die gültigen Instruktionen wurden, beginnend mit der virtuellen Speicheradresse VSA = 0 kontinuierlich bis VSA = N eingeschrieben. Die Kippstufe K wird vom zweiten Subtrahierer SubB auf den Wert K = 1 gesetzt, wenn, mit der virtuellen Speicheradresse VSA = 0 beginnend, die höchste virtuelle Speicheradresse VSA = /V das erstemal erreicht wird.The toggle stage K is used to display two loading states K = O and K = 1, of the virtual instruction store VIS with valid intructions. If the flip-flop K indicates the value K = 0, then the number of valid instructions is in the second register RegB, as a virtual memory address VSA of the instruction last written into the virtual instruction memory VIS . If the flip-flop K shows the value K − 1, this means that the virtual instruction memory VIS is completely filled with valid instructions. The valid instructions were written in continuously, beginning with the virtual memory address VSA = 0 until VSA = N. The flip-flop K is set to the value K = 1 by the second subtracter SubB when, starting with the virtual memory address VSA = 0, the highest virtual memory address VSA = / V is reached for the first time.

Der Multiplexer Mx dient zur wr.hlweisen Verbindung des Instruktionsregisters Regl entweder mit dem virtuellen Instruktionsspeicher V/Soder mit dem externen Programmspeicher PS. The multiplexer Mx is used to interconnect the instruction register Regl either with the virtual instruction memory V / S or with the external program memory PS.

Wann vom Multiplexer Mx welche Verbindung hergestellt wird, wird im folgenden im Zusammenhang mit verschiedenen Steuerungsabläufen beschrieben.
Zunächst wird davon ausgegangen, daß bei einem kontinuierlichen Vorwärtszählen des Programmzählers PZ, d. h. daß auf die Instruktionsadresse IA die Instruktionsadresse IA + 1 folgt, die zugehörenden Instruktionen aus dem externen Programmspeicher PS mit der virtuellen Speicheradresse VSA gleich 0 beginnend kon-
When and which connection is established by the multiplexer Mx is described below in connection with various control processes.
First of all, it is assumed that with a continuous upward counting of the program counter PZ, i. H. that follows the instruction address IA, the instruction address IA + 1, the belonging instructions from the external program memory PS with the virtual memory address VSA is equal to 0 starting con-

tinuierlich in den virtuellen Instruktionsspeicher VIS eingeschrieben werden. In diesem Fall steht im ersten Subtrahierer SubA als Differenz aus dem Inhalt des ersten Registers RegA und der neuen Jnstruktionsadresse IA immer der Adreßabstand AD = — 1.are continuously written into the virtual instruction memory VIS . In this case, the difference between the content of the first register RegA and the new instruction address IA is always the address spacing AD = -1 in the first subtracter SubA.

Der zweite Subtrahierer SubB bildet aus dem Inhalt des zweiten Registers RegB und dem Adreßabstand AD die zur neuen Instruktionsadresse IA gehörende virtuelle Speicheradresse VSA, die gleich ist dem um 1 höheren Inhalt des zweiten Registers RegB (RegB + 1). In den zu dieser virtuellen Speicheradresse VSA gehörenden Speicherplatz des virtuellen Instruktionsspeichers VIS wird die zur neuen Instruktionsadresse IA gehörende Instruktion aus dem externen Programmspeicher PS eingeschrieben. Parallel dazu wird diese Instruktion auch über den Multiplexer Mx in das Instruktiortsregister Regl geschrieben. Gleichzeitig werden die neue Instruktionsadresse IA in das erste ,Register RegA und die im zweiten Subtrahierer SubB stehende virtuelle Speicheradresse VSA in das zweite Register RegB geschrieben. Diese Funktionen werden vom ersten Subtrahierer SubA über das Steuerleitungssystem S bewirkt. The second subtracter SubB forms the virtual memory address VSA belonging to the new instruction address IA from the content of the second register RegB and the address spacing AD , which is equal to the content of the second register RegB (RegB + 1), which is 1 higher. The instruction belonging to the new instruction address IA from the external program memory PS is written into the memory space of the virtual instruction memory VIS belonging to this virtual memory address VSA . In parallel, this instruction is also written into the instruction location register Regl via the multiplexer Mx. At the same time the new instruction address IA in the first register RegA and standing in the second subtractor SubB virtual memory address VSA is written into the second register RegB. These functions are brought about by the first subtracter SubA via the control line system S.

Wenn im zweiten Subtrahierer SubB das erstemal die höchste virtuelle Speicheradresse VSA — N gebildet wurde, wird von di?sem die Kippstufe K a-if den Wert K = 1 gesetzt. In diesem Fall sind alle Speicherplätze im virtuellen Ins'.ruktionsspeicher VIS, beginnend mit der virtuellen Speicheradresse VSA = 0 bis VSA = N, kontinuierlich mit gültigen Instruktionen belegt.If the highest virtual memory address VSA-N was formed for the first time in the second subtracter SubB, this sets the flip-flop K a-if to the value K = 1. In this case, all memory locations in the virtual instruction memory VIS, beginning with the virtual memory address VSA = 0 to VSA = N, are continuously occupied with valid instructions.

Da das zweite Register RegB modulo Adreßbereich des virtueilen Instruktionsspeichers V/S arbeitet, wird, wenn die Kippstufe K den Wert K = 1 anzeigt, das Einschreiben der Instruktion aus dem externen Programmspeicher PS in den virtuellen Instruktionsspeieher V/S fortgesetzi, wöbe: wieder mit der virtuellen Speicheradresse VSA gleich 0 begonnen wird. Diese wird vom Ausgang des zweiten Subtrahierers SubB an den Adreßeingang des virtuellen InstruktionsspeichersSince the second register RegB works modulo the address area of the virtual instruction memory V / S, if the flip-flop K indicates the value K = 1, the writing of the instruction from the external program memory PS into the virtual instruction memory V / S continues, wöbe: again with the virtual memory address VSA is started equal to 0. This is from the output of the second subtractor SubB to the address input of the virtual instruction memory

V/5 gelegt. Parallel dazu wird diese Instruktion über den Multiplexer Mx auch in das Instruktionsregister Regl und die neue Instruktionsadresse IA in das erste Register RegA geschrieben. Solange die Kippstufe K den Wert K = 1 anzeigt, sind im virtuellen Instruktionsspeicher WSaIIe NSpeicherplätze mit gültigen Instruktionen belegt.V / 5 placed. In parallel, this instruction is also written into the instruction register Regl via the multiplexer Mx and the new instruction address IA is written into the first register RegA. As long as the flip-flop K shows the value K = 1, N memory locations are occupied with valid instructions in the virtual instruction memory WSaIIe.

Wenn im Programmablauf ein Vorwärtssprung durch den Programmzähler ausgeführt wird, dann steht im ersten Subtrahierer SubA ein negativer Adreßabstand AD. wobei der Adreßabstand AD ungleich —1 ist. In diesem Fall werden vom ersten Subtrahierer SuM über das Steuerleitungssystem S das zweite Register RegB und die Kippstufe K auf 0 gesetzt, und der zweite Subtrahierer SubB so geschaltet, daß sein anderer Eingang, der mit dem Ausgang des zweiten Registers RegB verbunden ist, auf den Ausgang gegeben wird. Das Einschreiben der Instruktionen aus dem externen Programmspeicher PS in den virtuellen Instruktionsspeicher VIS wird fortgesetzt, wieder beginnend mit der virtuellen Speicheradresse VSA = 0, die vom Ausgang des zweiten Subtrahierers SubB an den Adreßeingang des virtuellen Instruktionsspeichers V/S gelegt wird. Parallel dazu wird diese Instruktion über den Multiplexer Mx auch in das Instruktionsregister Regl und die neue Instruktionsadresse IA in das erste Register RegA geschrieben. If the program counter executes a jump forward in the program sequence, then there is a negative address spacing AD in the first subtractor SubA. where the address spacing AD is not equal to -1. In this case, the second register RegB and the flip-flop K are set to 0 by the first subtractor SuM via the control line system S, and the second subtracter SubB is switched so that its other input, which is connected to the output of the second register RegB , is set to Output is given. The writing of the instructions from the external program memory PS into the virtual instruction memory VIS is continued, starting again with the virtual memory address VSA = 0, which is applied from the output of the second subtractor SubB to the address input of the virtual instruction memory V / S. In parallel, this instruction is also written into the instruction register Regl via the multiplexer Mx and the new instruction address IA is written into the first register RegA.

Wenn im Programmablauf ein Rückwärtssprung durch den Programmzähler PZ ausgeführt wird, dann steht im ersten Subtrahierer SubA ein positiver Adreßabstand AD. Ist dieser größer als die Zahl N, so steht die zur neuen Instruktionsadresse IA gehörende Instruktion nicht im virtuellen Instruktionsspeicher V/S. Vom ersten Subtrahierer werden über dar· Steuerleitungssystem S das zweite Register RegB und die Kippstufe K auf 0 gesetzt, und der zweite Subtrahierer SubB so geschaiiei, daß sein anderer Eingang, der mit dem Ausgang des zweiten Registers RegB verbunden ist, auf den Ausgang gegeben wird. Das Einschreiben der Instruktionen aus dem externen Programmspeicher PS wird fortgesetzt, wieder beginnend mit der virtuellen Speicheradresse VSA = 0, die vom Ausgang des zweiten Subtrahierers SubB an den Adreßeingang des virtuellen Instruktionsspeichers V/S gelegt wird. Parallel dazu wird diese Instruktion über den Multiplexer Mx auch in das Instruktionsregister und die neue Instruktionsadresse in das erste Register RegA geschrieben.In the program flow when a backward jump by the program counter PZ is performed, is in the first subtractor SubA a positive Adreßabstand AD. If this is greater than the number N, the instruction belonging to the new instruction address IA is not in the virtual instruction memory V / S. The second register RegB and the flip-flop K are set to 0 by the first subtractor via the control line system S, and the second subtracter SubB so that its other input, which is connected to the output of the second register RegB , is sent to the output . The writing of the instructions from the external program memory PS is continued, starting again with the virtual memory address VSA = 0, which is applied from the output of the second subtractor SubB to the address input of the virtual instruction memory V / S. In parallel, this instruction is also written into the instruction register via the multiplexer Mx and the new instruction address is written into the first register RegA.

Ergibt sich bei einem Rückwärtssprung des Programmzählers PZ im ersten Subtrahierer SubA für den Adreßabstand AD ein Wert, der kleiner ist als die Zahl N, so wird im zweiten Subtrahierer SubB die zur neuen Instruktionsadresse IA gehörende virtuelle Speicheradresse VSA ermittelt. Ergibt sich für diese ein negativer Wert, und zeigt die Kippstufe K den Wert K = 0 an, so ist die zur neuen Instruktionsadresse IA gehörende Instruktion nicht im virtuellen instruktionsspeicher VIS enthalten. Vom zweiten Subtrahierer SubB werden über das Steuerleitungssystem S das zweite Register RegB und die Kippstufe K auf 0 gesetzt, und der zweite Subtrahierer SubB so geschaltet, daß sein anderer Eingang, der mit dem Ausgang des zweiten Registers RegB verbunden ist, auf den Ausgang gegeben wird. Das Einschreiben der Instruktionen aus dem externen Programmspeicher PS in den virtuellen Instruktionsspeicher ViS wird fortgesetzt, wieder beginnend mit der virtuellen Speicheradresse VSA = 0, die vom Ausgang des zweiten Subtrahierers SubB an den Adreßeingang des virtuellen Instruktionsspeichers VIS gelegt wird.If a backward jump of the program counter PZ results in the first subtractor SubA for the address spacing AD which is smaller than the number N, the virtual memory address VSA belonging to the new instruction address IA is determined in the second subtractor SubB . If this results in a negative value, and if the flip-flop K indicates the value K = 0, then the instruction belonging to the new instruction address IA is not contained in the virtual instruction memory VIS . From the second subtractor SubB , the second register RegB and the flip-flop K are set to 0 via the control line system S, and the second subtracter SubB is switched so that its other input, which is connected to the output of the second register RegB , is output . The writing of the instructions from the external program memory PS into the virtual instruction memory ViS is continued, starting again with the virtual memory address VSA = 0, which is applied from the output of the second subtractor SubB to the address input of the virtual instruction memory VIS .

Parallel dazu wird diese Instruktion über den Multiplexer Mx auch in das Instruktionsregister Regl und die neue Instruktionsadresse in das erste Register RegA geschrieben.In parallel, this instruction is also written into the instruction register Regl and the new instruction address into the first register RegA via the multiplexer Mx .

Ergibt sich bei einem Rückwärtssprung des Programmzählers PZ im zweiten Subtrahierer SubB eine positive virtuelle Speicheradresse VSA (AD ist kleiner N), oder zeigt bei einer negativen virtuellen Speicheradresse VSA die Kippstufe K den Wert K = 1 an, so ist die zur neuen Instruktionsadresse IA gehörende Instruktion im virtuellen Instruktionsspeicher V/S enthalten. Vom zweiten Subtrahierer wird der Multiplexer Mx so geschaltet, daß der virtuelle Instruktionsspeicher VIS mit dem Eingang des Instruktionsregisters Regl verbunden ist. Der Ausgang des zweiten Subtrahierers SubB gibt die virtuelle Speicheradresse VSA auf den Adreßeingang des virtuellen Instruktionsspeichers VlS, wodurch die zur neuen Instruktionsadresse IA gehörende Instruktion aus dem virtuellen Instruktionsspeicher V/S über den Multiplexer Mx in das Instruktionsregister Regl geschrieben wird.If a backward jump of the program counter PZ in the second subtracter SubB results in a positive virtual memory address VSA (AD is less than N), or if the flip-flop K shows the value K = 1 with a negative virtual memory address VSA , then the one belonging to the new instruction address IA is Instructions contained in the virtual instruction store V / S. The multiplexer Mx is switched by the second subtracter in such a way that the virtual instruction memory VIS is connected to the input of the instruction register Regl . The output of the second subtracter SubB gives the virtual memory address VSA to the address input of the virtual instruction memory VIS, whereby the instruction belonging to the new instruction address IA is written from the virtual instruction memory V / S via the multiplexer Mx into the instruction register Regl .

Im allgemeinen dürfte ein virtueller Instruktionsspeicher V/S mit 16 virtuellen Speicheradressen VSA, d.h. für 16 Instruktionen ausreichen. Bei Bedarf kann die Einrichtung auch in ihrer Kapazität erweitert werden, oder es können auch mehrere Einrichtungen dieser Art für die gleichzeitige Abspeicherung mehrerer Programmschleifen angeordnet sein, wobei sich die Adressen im Adreßbereich nicht lückenlos aneinanderreihen.In general, a virtual instruction memory V / S with 16 virtual memory addresses VSA, ie for 16 instructions, should be sufficient. If necessary, the facility can also be expanded in its capacity, or several facilities of this type can be arranged for the simultaneous storage of several program loops, the addresses in the address area not lining up without gaps.

Da das Einschreiben der Instruktion in den virtuellen Instruktionsspeicher VIS vom Prozessor gesteuert werden kann, ergibt sich die vorteilhafte Möglichkeit, daß zusätzlich vom Programm entschieden werden kann, ob Instruktionen eingeschrieben werden oder nicht. Damit können wichtige Programmteile auf Dauer für den schnellen Zugriff in hochintegrierten Schaltkreisen berciigcsieih werden.Since the writing of the instruction in the virtual instruction memory VIS can be controlled by the processor, there is the advantageous possibility that the program can also decide whether or not instructions are to be written. This means that important parts of the program can be used permanently for quick access in highly integrated circuits.

Mit der erfindungsgemäßen Anordnung ist dem Benutzer die Möglichkeit gegeben, den vorhandenen Instruktionssatz optimal zur schnellen Abarbeitung von in Schleifen programmierten, höherwertigen Funktionen zu benutzen. Die zeitlichen Vorteile, die sonst nur durch wenige, vom Hersteller im Instruktionssatz vorprogrammierten, höherwertigen Instruktionen gegeben sind, kann der Benutzer nun auf alle höherwertigen Funktionen, die er selbst definiert und in Schleifen programmiert hat, anwenden.With the arrangement according to the invention, the user is given the opportunity to use the existing instruction set ideal for fast processing of higher-value functions programmed in loops to use. The time advantages that otherwise only a few preprogrammed by the manufacturer in the instruction set, If higher-order instructions are given, the user can now access all higher-order instructions Use functions that he has defined himself and programmed in loops.

Hierzu 2 Blatt ZeichnungenFor this purpose 2 sheets of drawings

Claims (2)

Patentansprüche:Patent claims: 1. Schaltungsanordnung zur Abarbeitung von Programmschleifen für einen Prozessor mit einem Programmzähler, einem Instruktionsregister, einem Programmspeicher, einem Pufferspeicher und einem Multiplexer, über den die Programminstruktionen entweder aus dem Programmspeicher oder, falls sie im Pufferspeicher zur Verfugung stehen, aus diesem dem Instruktionsregister zugeführt werden, dadurch gekennzeichnet,1. Circuit arrangement for processing program loops for a processor with a Program counter, an instruction register, a program memory, a buffer memory and a Multiplexer, via which the program instructions either from the program memory or, if they are available in the buffer memory, are fed from this to the instruction register, thereby marked, daß ein erstes Register (Reg A) die Adresse der jeweils zuletzt aus dem Programmspeicher (PS) in den Pufferspeicher (VIS) eingeschriebenen Instruktionen enthält,that a first register (Reg A) contains the address of the last instructions written into the buffer memory (VIS) from the program memory (PS), ein erster Subtrahierer (Sub A) den aktuellen Adressenabstand (AD) aus dem Inhalt des Registers (RegA) und der aktuellen Instruktionsadresse aus dem ProgEaminzähler (PZ? bildet,
ein zweites Regisier (Reg B) die Anzahl (n) der zuietzt aus dem Programmspeicher (PS)'m den Pufferspeicher (VIS) eingeschriebenen gültigen Instruktionen enthält,
a first subtractor (Sub A) forms the current address spacing (AD) from the content of the register (RegA) and the current instruction address from the ProgEaminzähler (PZ?
a second regisier (Reg B) contains the number (n) of the last valid instructions written into the program memory (PS) in the buffer memory (VIS),
ein zweiter Subtrahierer (Sub B) eine Differenz (VSA) aus dem Adreßabstand (AD) und der Anzahl (n) der gültigen Instruktionen ermittelt, mit dieser Differenz (VSA) den Pufferspeicher (VIS) adressiert und die Differenz (VSA) zugleich auf den Eingang des zweiten Registers (Reg B) gibt,
eine Kippf; tufe (K) in einen Belegtzustand gesetzt wird, wenn eine maximale Anzahl (N) der Pufferspeicherptäize erreicnt wird, und
bei einer Wiederholung der «"!eichen Instruktionsadresse (IA), oder bei einem Rückwärtssprung im Programmzähler (PZ) wenn dieser nicht größer ist als die Anzahl (n) im zweiten Register (Reg B) oder wenn dieser nicht größer ist als die maximale Anzahl (N) und die Kippstufe (K) im Belegtzustand ist, die Programminstruktion aus dem Pufferspeicher (VIS) dem Instruktionsregister zugeführt wird.
a second subtractor (Sub B) determines a difference (VSA) from the address spacing (AD) and the number (n) of valid instructions, with this difference (VSA ) addresses the buffer memory (VIS) and the difference (VSA) at the same time to the Input of the second register (Reg B) is there,
a Kippf; tufe (K) is set to an occupied state when a maximum number (N) of buffer memory space is reached, and
when repeating the ""! calibrated instruction address (IA), or when jumping backwards in the program counter (PZ) if this is not greater than the number (n) in the second register (Reg B) or if this is not greater than the maximum number (N) and the flip-flop (K) is in the occupied state, the program instruction from the buffer memory (VIS) is fed to the instruction register.
2. Schaltungsanordnung nach den Anspruch 1, dadurch gekennzeichnet, daß diese Schaltungsanordnung in einem Mikroprozessor vorgesehen ist.2. Circuit arrangement according to claim 1, characterized in that this circuit arrangement is provided in a microprocessor.
DE3121174A 1981-05-27 1981-05-27 Circuit arrangement in a processor Expired DE3121174C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE3121174A DE3121174C2 (en) 1981-05-27 1981-05-27 Circuit arrangement in a processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE3121174A DE3121174C2 (en) 1981-05-27 1981-05-27 Circuit arrangement in a processor

Publications (2)

Publication Number Publication Date
DE3121174A1 DE3121174A1 (en) 1982-12-23
DE3121174C2 true DE3121174C2 (en) 1985-11-07

Family

ID=6133392

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3121174A Expired DE3121174C2 (en) 1981-05-27 1981-05-27 Circuit arrangement in a processor

Country Status (1)

Country Link
DE (1) DE3121174C2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL193475C (en) * 1984-12-27 1999-11-02 Sony Corp Microprocessor device.

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3337851A (en) * 1963-12-09 1967-08-22 Burroughs Corp Memory organization for reducing access time of program repetitions
DE2702556B2 (en) * 1977-01-22 1979-04-19 Standard Elektrik Lorenz Ag, 7000 Stuttgart Microprocessor circuitry

Also Published As

Publication number Publication date
DE3121174A1 (en) 1982-12-23

Similar Documents

Publication Publication Date Title
DE2724125C2 (en)
DE2753062C2 (en) Device for the repeated execution of program loops
DE3424962C2 (en)
DE3131341A1 (en) "BUFFER STORAGE ORGANIZATION"
DE2714805A1 (en) DATA PROCESSING SYSTEM
DE68924719T2 (en) Device and method for executing a subroutine in a data processing system with block switching.
DE69119149T2 (en) Structure for direct memory-to-memory transfer
DE2912073C2 (en)
DE2856680A1 (en) COMMAND BUFFER FOR A DATA PROCESSING SYSTEM
DE19526008A1 (en) Vertically partitioned primary instruction cache
DE3507584C2 (en)
DE2611975A1 (en) IT SYSTEM WITH A DEVICE FOR THE ASSIGNMENT OF PROCESSES TO A PROCESSOR ON A PRIORITY BASIS
DE2233193C3 (en) Stack storage system
DE2403039C2 (en) Device for executing commands in an address-extended electronic data processing system
DE69622608T2 (en) information processor
DE19628039B4 (en) Memory address control circuit
DE3121174C2 (en) Circuit arrangement in a processor
DE69031529T2 (en) Memory control system
DE3000012A1 (en) CIRCUIT ARRANGEMENT FOR EXECUTING A TRANSMISSION COMMAND IN A DATA PROCESSING SYSTEM
DE3535215C2 (en)
EP1204917B1 (en) Stack of operands and method for stacking of operands
DE1774421B1 (en) MORE PROGRAM DATA PROCESSING SYSTEM
DE1499286B2 (en) DATA PROCESSING SYSTEM
DE3025167A1 (en) DATA PROCESSING DEVICE
DE1524211C3 (en) Data processing system

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee