WO2003077118A2 - Method for machine instruction assisted and program assisted control of processors - Google Patents

Method for machine instruction assisted and program assisted control of processors Download PDF

Info

Publication number
WO2003077118A2
WO2003077118A2 PCT/EP2003/002295 EP0302295W WO03077118A2 WO 2003077118 A2 WO2003077118 A2 WO 2003077118A2 EP 0302295 W EP0302295 W EP 0302295W WO 03077118 A2 WO03077118 A2 WO 03077118A2
Authority
WO
WIPO (PCT)
Prior art keywords
interface
branch
data
transfer
address
Prior art date
Application number
PCT/EP2003/002295
Other languages
German (de)
French (fr)
Other versions
WO2003077118A3 (en
Inventor
Fritz Mayer-Lindenberg
Original Assignee
Tuhh Technologie Gmbh
Technische Universität Hamburg-Harburg
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 Tuhh Technologie Gmbh, Technische Universität Hamburg-Harburg filed Critical Tuhh Technologie Gmbh
Priority to AU2003218698A priority Critical patent/AU2003218698A1/en
Publication of WO2003077118A2 publication Critical patent/WO2003077118A2/en
Publication of WO2003077118A3 publication Critical patent/WO2003077118A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack

Definitions

  • the invention relates to a method for machine command and program-based control of processors, in particular microprocessors, comprising at least one central processing unit CPU, storage means for data and for control algorithms, and at least one input / output unit I / O representing an interface, whereby the machine commands and / or program-supported computer-internal at least write, read, branch and arithmetic operations of data and addresses as well as data and address transfers from the interface to the processor and from the processor to the interface.
  • processors in particular microprocessors, comprising at least one central processing unit CPU, storage means for data and for control algorithms, and at least one input / output unit I / O representing an interface
  • the machine commands and / or program-supported computer-internal at least write, read, branch and arithmetic operations of data and addresses as well as data and address transfers from the interface to the processor and from the processor to the interface.
  • processors as they can be found with the structure described above in almost all computers today, be it in personal computers, process computers, mainframes and special processors processing an immediate control task in special devices and equipment, work in principle with the steps according to the above-mentioned method .
  • processors use one or more computing circuits that are repeatedly used for various processing steps under the control of a program.
  • data and program instructions are regularly read from the same memory.
  • additional operations ie additional commands and time cycles.
  • Such operations are, for example
  • Modern processors use a separate "load / store unit” LSU, a so-called “branch processing unit” BPU and so-called “integer units” IU to handle memory accesses, branches and loops in parallel with arithmetic operations.
  • the LSU is responsible for executing load / store accesses, ie loading and saving the operands or results in the L-2 cache or in the working memory.
  • the BPU tries to recognize several instructions in the program execution in advance and tries to adapt beforehand to which branches (jump instructions) or instruction groups are likely to be executed next.
  • the IU represents a separate arithmetic unit for integer and calculation. With these complex, parallel working units succeed it is at least to perform memory operations and the management of loops in parallel with arithmetic operations.
  • step ⁇ . and ß. are repeated until the interface is ready and the data can be read, step ⁇ .
  • Step ß Means jump instruction to the beginning of the waiting loop.
  • Some processors set status bits when reading that control a branch or allow access to a selected bit of the status line as a branch condition.
  • an operation command reads: a. Read data from the interface,
  • the advantage of the invention results in the case of the input interface from the fact that a single operation command (input command), which is structured in two steps, is provided, which at the same time reads the interface status and permits branching. If the interface is not ready to deliver data, the read operation is invalid.
  • the command for reading the status port is therefore no longer executed. Rather, the command is implicitly executed by the aritmethical logical unit ALU and, in the event of a failure, a corresponding status bit is set, which the command acc. Step b. controls. According to the invention, the operation that realizes the synchronization and controls the branching is thus combined with the actual processing step (input / output, arithmetic operation, etc.).
  • the "branch" operation command is contained in a selectable and definable instruction code, the "branch” operation command preferably being able to be defined by a bit in the instruction code. If a bit indicates that a branch is to take place in addition to the arithmetic or interface operation specified in the institution and the interface operation is unsuccessful, a branch is made to an address held in a register (indirect branching).
  • a branch (control 1 flow operation) is now used in this way, specifically in combination with a jump condition generated by the I / 0 operation. If different operating modes (waiting loop, context change) are required for the branching, this is controlled according to the invention not by further command bits but by status bits in the processor.
  • the operation command elements - read data from the interface - and - branch to read again if the read operation is invalid - can be shortened to an operation command, namely
  • Context changes can be realized through indirect, conditional jumps if one uses static process management.
  • process management the processes are arranged in a loop and each process is given a status variable (any memory for a memory address in the main memory). This contains the instruction address, ie the memory address from which the process is to be resumed.
  • the context change then corresponds to an indirect jump to the address in the state variable of the next process in the loop.
  • the branch operation in the interface instruction is for the
  • the cortical text change is implemented in such a way that the processor also reads a destination address from the cyclically addressed (sequentially processed) status variable list.
  • the fact that a context change and not just a jump can be carried out can be controlled by an additional status bit, which is set as long as no jump address is specified (a context change should be carried out).
  • the operation command structured in two steps is combined into a single one, i.e. read the interface and branch to a memory address that is stored in an address register.
  • Self-synchronizing I / O operations are also known for certain signal processors, but an input operation blocks the processor until data is available.
  • the processor is not blocked in the method according to the invention. He can e.g. stay in an interruptible queue or jump to another context.
  • Input / output commands with a non-optional, automatic change of context were already available for a known transputer family, but only in connection with sperill interfaces and complex, dynamic process management in microcode.
  • the address of the branch is set automatically.
  • setting a branch address in an address register requires an additional command. However, this does not have to be repeated in the waiting loop or for a context change.
  • the jump address is again identified as invalid by the status bit assigned to the jump address register. Since the repetition of the interface command must take place at the address of the same, the branching address can, as has been proposed according to the invention, be set automatically, as mentioned, to further shorten and accelerate the program. In the event of a change of context, the repeat address is written to the status variable of the process and the jump address remains marked as invalid.
  • Automatic and separate branching can also be combined according to the invention if a successful interface operation (with a branch not carried out) sets a branchable status bit in order to differentiate between different message types or the execution of the interface operation by a so-called. To be able to query "Timeout".
  • Another advantageous embodiment of the invention is also to automate this branching level, even if additional hardware and software would be required.
  • the I / 0 command starts a DMA block transfer (direct transfer between the main memory and an interface without the involvement of the CPU) via the selected interface, registers defining the parameters (address, length) of the transfer. Alternatively, all or part of these parameters are transmitted as part of the data transmission and are used automatically for further DMA control.
  • the transfer command branches until the transfer is complete without restarting the transfer (the transfer command is executed again in the loop each time).
  • the DMA controller is thus designed so that the branching status is generated (status is set) and repeated starting of the transfer has no effect until the transfer is completed and the interface selected with the transfer command controls the DMA, ie starts the transfer.
  • the above-mentioned transputer family also used automatic DMA transfers for their input / output commands, but with the above-mentioned restrictions. According to the DMA support always gives the other hand simply through consistent use to combine them, the principle underlying the invention, namely a- operation with a status inquiry and an associated indirect Vezweigung.
  • a DMA channel can advantageously also be shared between several interfaces.
  • the DMA is expediently already integrated into the structure of the CPU using separate address count registers, as a result of which an additional memory utilization (control of the memory accesses to prevent collisions) is unnecessary.
  • a major advantage of the invention as a whole is that the combined I / O for the transmission of entire data blocks represent a uniform software interface for inputs and outputs.
  • a synchronizing input command for a data block replaces an entire program loop - possibly in its own subroutine - and the setting up of a DMA block transfer.
  • This software interface can also be emulated for interface driver routines to write a data block using simple I / O commands.
  • DMA support means that IRQ processing can be dispensed with in many applications.
  • the increased functionality of individual interfaces supported by the extended I / O commands also allows for simpler interface designs in which the status must be queried separately.
  • the following example shows the structure of the 16-bit instruction code of an extended interface operation as it was designed for a 16-bit processor architecture.
  • the specified register for the data is specified for individual word transfers; for block transfers, it is used for a DMA parameter.
  • An example may illustrate the versatility of the combined I / O commands.
  • a timer timeout
  • a single, combined command is used, which writes the waiting time parameter in the timer register, but does not report back with success status until the time has also expired. Only then does another timer command start a new time delay.
  • timeout is also important in connection with the wait for an interface operation and can be combined with it in such a way that when the timeout is reached or the interface operation is completed, a distinction can be made between these options based on a status bit.
  • An important application of the combined I / O commands relates to software caching using a memory managed by a separate control circuit, but not by the CPU, which performs DMA transfers from it to the main memory of the CPU. There is no need for a cache managed by means of a circuit as a link between the main memory and the CPU.
  • main memory interface with the required special functions for the memory types to be used can be completely decoupled from the CPU structure.
  • the memory structure consists of the main memory managed by a separate control circuit and the CPU with a small, directly addressed RAM Memory and DMA transfer instructions anchored in the instruction set.
  • the block transfer is started and waited by only two extended I / O commands:
  • the processor changes into a different context, so that no computing time is lost.
  • conditional, indirect jumps with other instruction classes is also possible according to the invention.
  • a common feature of such combined commands is the elimination of control commands from the binary code of the program and thus the more efficient use of the ALU.
  • the conditional jump or context change specified by a bit in the instruction code, but the mode of operation of which depends on the status of the processor, is possible in addition to handshaking for interface operations and for other applications. For example, the return in a loop, or in an unconditional variant.
  • the combined operation read / test / branch can also be applied to memory accesses to insert the synchronization of processes.
  • a special code e.g. the O code
  • Error handling in arithmetic operations can also be an important, further application of the invention Word width) can be carried out using the same method.
  • the arithmetic operation generates an error condition that is answered automatically by an indirect jump instruction.
  • Alternative error conditions and the option of a conditional indirect jump are selected by instruction bits.
  • the jump address can be set together for a whole group of instructions, if a common handling of occurring errors is possible.
  • a conditional branching behind each operation which can cause errors, leads to a considerable slowdown and extension of the program, and error handling via (automatically triggered interrupts (traps) leads to additional overheads.
  • the jump address for the error case must be set for each group of operations with common error handling using a suitable command.
  • the jump from an instruction sequence to a common error processing can also be viewed and used as a back-tracking operation. If further backtracking is to take place after an unsuccessful error handling, a previously valid branch address must be restored. In contrast to the interface operation, the operation is not repeated in the event of an error, so that the jump address must become invalid after the jump.
  • This operating mode can again be distinguished by a status bit of the processor. For a subroutine without your own If the error is handled, the branch must act as a conditional return command (termination of the subroutine) and must continue at the call level, which corresponds to another operating mode of the branch operation.
  • the 16-bit processor mentioned uses the combined jump instruction in no less than five operating modes and uses an automatically managed stack in order to be able to nest the various branch structures and subroutines. Context changes are only carried out outside of subroutines and branch structures.
  • coprocessors In order to expand a CPU by additional operations, which are to be called in chronological order by it and with the control flow given by its program, coprocessors are used.
  • the synchronization with a coprocessor which receives data and instructions from the main processor (possibly with DMA support) and delivers results via special I / O operations (coprocessor commands) and returns results, can be handled as in the case of the I / O commands.
  • a coprocessor can e.g. are used to adapt an interface with a specified transmission protocol to the software interface given by the I / O commands.
  • the memory controller in the software caching architecture can also be seen as a coprocessor.
  • a coprocessor operation can also have error cases that must be transferred as status in order to be able to branch to error handling.
  • An arithmetic coprocessor can, for example, report overflow and underflow and conversion errors.
  • a distinction must be made between the time synchronization and the treatment of an arithmetic error, which can be done with a further status bit.
  • With a fast coprocessor it makes sense to use it to let it work in a pipeline and to implement the synchronization by waiting cycles of the CPU, but to use the automatic branching, as with the arithmetic operations of the CPU, only for processing the reported errors. As there, no context changes are made for error handling, and a stack is implemented for nested branching structures.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Disclosed is a method for machine instruction assisted and program assisted control of processors, particularly microprocessors, comprising at least one central processing unit (CPU), means for storing data and control algorithms, and at least one input/output unit (I/O) representing an interface. At least writing, reading, branching, and arithmetic operations of data and addresses as well as the transfer of data and addresses from the interface into the processor and from the processor to the interface are carried out computer-internally by said machine instructions and/or in a program-assisted manner. One operation command reads as follows: a. read interface data; b. branch if reading operation invalid; and/or c. start data transfer and/or address transfer; d. branch if data transfer completed.

Description

Verfahren zur maschinenbefehl- und programmgestützten Steuerung von ProzessorenProcess for machine command and program-based control of processors
Beschreibungdescription
Die Erfindung betrifft ein Verfahren zur maschinenbefehl- und programmgestützten Steuerung von Prozessoren, insbesondere Mikroprozessoren, umfassend wenigstens eine zentrale Recheneinheit CPU, Speichermittel für Daten sowie für Steueralgorithmen sowie wenigstens eine eine Schni tstelle darstellende Ein-/Ausgabeeinhei t I/O, wobei durch die Maschinenbefehle und/oder programmgestützt rechnerinterne wenigstens Schreib-, Lese-, Verzweig- sowie arithmetische Operationen von Daten und Adressen sowie Daten und Adressentransfers von der Schnittstelle in den Prozessor und vom Prozessor zur Schnittstelle ausgeführt werden. Prozessoren, wie sie mit dem vorangehend beschriebenen Aufbau im wesentlichen in nahezu allen Rechnern heutzutage anzutreffen sind, sei es in Personalcomputern, Prozeßrechnern, Großrechnern und speziellen eine unmittelbare Steueraufgabe in speziellen Geräten und Einrichtungen bearbeitende Prozessoren, arbeiten im Prinzip mit den Schritten gemäß dem voraufgeführten Verfahren. Allgemein kann gesagt werden, daß Prozessoren eine oder mehrere Rechenschaltungen verwenden, die unter der Steuerung eines Programms wiederholt für verschiedene Verarbeitungsschritte herangezogen werden. Daten und Programmanweisungen werden bei einfachen Prozessoren regelmäßig aus demselben Speicher gelesen. Neben den eigentlichen Rechenschritten werden zusätzliche Operationen (Hilfsoperationen) benötigt, d.h. zusätzliche Befehle und Zeittakte. Derartige Operationen sind z.B.The invention relates to a method for machine command and program-based control of processors, in particular microprocessors, comprising at least one central processing unit CPU, storage means for data and for control algorithms, and at least one input / output unit I / O representing an interface, whereby the machine commands and / or program-supported computer-internal at least write, read, branch and arithmetic operations of data and addresses as well as data and address transfers from the interface to the processor and from the processor to the interface. Processors, as they can be found with the structure described above in almost all computers today, be it in personal computers, process computers, mainframes and special processors processing an immediate control task in special devices and equipment, work in principle with the steps according to the above-mentioned method , In general, it can be said that processors use one or more computing circuits that are repeatedly used for various processing steps under the control of a program. With simple processors, data and program instructions are regularly read from the same memory. In addition to the actual computing steps, additional operations (auxiliary operations) are required, ie additional commands and time cycles. Such operations are, for example
Instruktionen laden oder im Speicher (cache) berei stel len,Load instructions or provide them in memory (cache),
Operanden aus dem Speicher laden und Resultate abspeichern,Load operands from memory and save results,
Verzweigbefehle (auch für Schleifen* Unterprogrammauf ufe) lesen und Ausführen,Read and execute branch instructions (also for loops * subroutine calls),
Fehler bei arithmetischen Operationen behandeln,Handle errors in arithmetic operations,
Synchronisation mit anderen Prozessoren, bspw. einem Coprozessor,Synchronization with other processors, e.g. a coprocessor,
Synchronisation mit den Ein- und Ausgabeschnittstellen realisieren und diese ansprechen sowie Kontextwechsel durchzuführen.Realize synchronization with the input and output interfaces and address them as well Perform context change.
Während der Ausführung dieser Hilfsoperationen können nicht ohne weiteres andere Rechenoperationen durchgeführt werden. Es ist erkennbar, daß die Recheneinheit, wenn die besagten Hilfsoperationen ausgeführt werden, nicht effizient oder überhaupt nicht genutzt werden kann.Other arithmetic operations cannot easily be performed while these auxiliary operations are being carried out. It can be seen that if the said auxiliary operations are carried out, the computing unit cannot be used efficiently or not at all.
Dabei sei angemerkt, daß die Fähigkeit eines Prozessors, Operanden aus einem Speicher zu laden und Resultate abzuspeichern, von der Zahl der verfügbaren Register und der für sie gewählten Struktur sowie des Aufbaues des Speichers abhängt (von Neumann, Harvard). Da Schnittstellen meist nicht nur einzelne Datenworte, sondern ganze Datenblöcke übertragen, ist die Synchronisation mit den Ein- und Ausgabestellen und sie anzusprechen von erheblichem Gewicht für Kommunikationsanwendungen in Mehrprozessorsystemen. Auch die Durchführung von Kontextwechseln erfordert in einem Prozessor einen großen Aufwand.It should be noted that the ability of a processor to load operands from a memory and to store results depends on the number of available registers and the structure chosen for them, as well as the structure of the memory (von Neumann, Harvard). Since interfaces usually transmit not just individual data words, but entire data blocks, synchronization with the input and output points and addressing them are of considerable importance for communication applications in multiprocessor systems. The implementation of context changes also requires a great deal of effort in a processor.
Moderne Prozessoren verwenden eine separate "load/store unit" LSU, eine sogen, "branch processing unit" BPU und sogen, "integer units" IU, um Speicherzugriffe, Verzweigungen und Schleifen parallel zu Rechenoperationen zu behandeln. Die LSU ist für die Ausführung von load/sto- re-Zugriffen zuständig, d.h. dem Laden und Speichern der Operanden bzw. Ergebnissen im L-2 cache oder im Arbeitsspeicher. Die BPU versucht mehrere Befehle in der Programmausführung quasi im voraus zu erkennen und versucht sich vorher darauf einzustellen, welche Verzweigungen (Sprungbefehle) oder Befehlsgruppen wahrscheinlich als nächstes ausgeführt werden. Die IU stellt eine separate Recheneinheit für Ganzzahl- und berechnungen dar. Mit diesen komplexen, parallel arbeitenden Einheiten gelingt es zumindest, Speicheroperationen und die Verwaltung von Schleifen parallel zu arithmetischen Operationen auszuführen.Modern processors use a separate "load / store unit" LSU, a so-called "branch processing unit" BPU and so-called "integer units" IU to handle memory accesses, branches and loops in parallel with arithmetic operations. The LSU is responsible for executing load / store accesses, ie loading and saving the operands or results in the L-2 cache or in the working memory. The BPU tries to recognize several instructions in the program execution in advance and tries to adapt beforehand to which branches (jump instructions) or instruction groups are likely to be executed next. The IU represents a separate arithmetic unit for integer and calculation. With these complex, parallel working units succeed it is at least to perform memory operations and the management of loops in parallel with arithmetic operations.
Bei im Stand der Technik bekannten typischen Prozessoren, wie sie in bezug auf ihren Aufbau eingangs skizziert worden sind, werden gewöhnlich drei Schritte mit jeweils separaten Instruktionen benötigt, um eine synchronisierte Schnittstellenoperation auszuführen. Diese Schritte sind:In the case of typical processors known in the prior art, as outlined above with regard to their structure, three steps, each with separate instructions, are usually required in order to carry out a synchronized interface operation. These steps are:
α. Statusleitung bzw. Statusbit (Statusport) der Schnittstelle lesen,α. Read status line or status bit (status port) of the interface,
ß. Verzweigen, falls Schnittstelle nicht bereit (Handshakebit im Statusport nicht aktiv) (z.B. am Anfang einer Warteschleife),ß. Branch if interface is not ready (handshake bit not active in the status port) (e.g. at the beginning of a waiting loop),
γ. Ein- oder Ausgabeoperation im Register ausführen (nachdem die Schnittstelle bereit ist).γ. Execute input or output operation in the register (after the interface is ready).
Die Schritte α . und ß. werden so lange wiederholt, bis die Schnittstelle bereit ist und die Daten gelesen werden können, Schritt γ .The steps α. and ß. are repeated until the interface is ready and the data can be read, step γ.
"Verzweigen", Schritt ß., bedeutet Sprungbefehl auf den Anfang der Warteschleife."Branch", step ß., Means jump instruction to the beginning of the waiting loop.
Wird anstatt einer Warteschleife ein Interrupt IRQ verwendet, so muß dieser Zustand erst aktiviert werden, Verarbei tungsoverhead, d.h. ein Kontextwechsel wird ausgeführt (aktuellen Status des Prozessors speichern), was entsprechend lange dauert (Wechsel vom first, second und third level cache, sofern vorhanden). Falls ein Datenblock übertragen wird, wird der synchronisierte Zugriff, d.h. das regelmäßige Abfragen der Schnittstelle, auch "polling" genannt, in eine Programmschleife eingebettet, oder ein direkter Transfer, direkt memory access DMA, zwischen dem Hauptspeicher und einer Schnittstelle ohne Beteiligung der zentralen Recheneinheit CPU durchgeführt. Für die Signalisierung der bereiten Schnittstelle per IRQ sowie für einen DMA-Transfer entsteht kein Aufwand für wiederholte Verzweigungen. Die Schreiboder Leseoperation der Statusleitungen (Statusport) der Schnittstelle oder ihrer Datenleitungen (Datenports) entspricht einer Speicheroperation der zentralen Recheneinheit CPU, bei der diese eine Adresse ausgibt und Daten liest oder schreibt.If an interrupt IRQ is used instead of a waiting loop, this state must first be activated, processing overhead, i.e. a context switch is carried out (save the current status of the processor), which takes a correspondingly long time (switch from first, second and third level cache, if available) ). If a data block is transmitted, the synchronized access, ie the regular polling of the interface, also called "polling", embedded in a program loop, or a direct transfer, direct memory access DMA, between the main memory and an interface without the involvement of the central processing unit CPU. For the signaling of the ready interface via IRQ and for a DMA transfer, there is no effort for repeated branches. The write or read operation of the status lines (status port) of the interface or its data lines (data ports) corresponds to a storage operation of the central processing unit CPU, in which the CPU outputs an address and reads or writes data.
Einige Prozessoren setzen beim Lesen Statüsbits, die eine Verzweigung steuern oder den Zugriff auf ein ausgewähltes Bit der Statusleitung als Verzweigungsbedingung gestatten.Some processors set status bits when reading that control a branch or allow access to a selected bit of the status line as a branch condition.
Es ist somit Aufgabe der Erfindung, die o.g. Hilfsoperationen bei dem Betrieb von Prozessoren derart zu vereinfachen, daß das eigentliche Rechenwerk des Prozessors besser genutzt werden kann und der Prozessor damit effektiv schneller wird als bisher bekannte Systeme und Verfahrensabläufe bei Prozessoren der eingangs genannten Art, d.h. die Operation, die die Synchronisierung realisiert und die Verzweigung steuert, zu vereinfachen, um neben aufgrund der vereinfachten Steuerung und der damit einhergehenden Verbesserung der Effektivität der Ausnutzung der Recheneinheit auch eine kostengünstigere und einfachere Bereitstellbarkei t von Verfahrensabläufen zur Steuerung der Prozessoren zu ermöglichen.It is therefore an object of the invention, the above. To simplify auxiliary operations in the operation of processors in such a way that the actual arithmetic unit of the processor can be better used and the processor is thus effectively faster than previously known systems and procedures for processors of the type mentioned at the outset, i.e. to simplify the operation that realizes the synchronization and controls the branching, in order to enable, in addition to the simplified control and the associated improvement in the effectiveness of the use of the computing unit, a more cost-effective and simple provision of process sequences for controlling the processors.
Gelöst wird die Aufgabe gemäß der Erfindung zum einen dadurch, daß ein Operationsbefehl lautet: a. Daten von der Schnittstelle lesen,The object according to the invention is achieved on the one hand in that an operation command reads: a. Read data from the interface,
b. Verzweigen falls Leseoperation ungültig.b. Branch if read operation is invalid.
Der Vorteil der Erfindung ergibt sich im Falle der Ein- gabeschni ttstell e daraus, daß ein einziger, quasi in zwei Schritten gegliederter Operationsbefehl (Eingabebefehl) vorgesehen ist, der zugleich den Schnittstellenstatus liest und eine Verzweigung erlaubt. Falls die Schnittstelle nicht bereit ist, Daten zu liefern, ist die Leseoperation ungültig.The advantage of the invention results in the case of the input interface from the fact that a single operation command (input command), which is structured in two steps, is provided, which at the same time reads the interface status and permits branching. If the interface is not ready to deliver data, the read operation is invalid.
Erfindungsgemäß wird somit der Befehl zum Lesen des Statusports nicht mehr ausgeführt. Vielmehr wird der Befehl implizit durch die aritmethical logical unit ALU ausgeführt und im Falle eines Mißerfolgs wird ein entsprechendes Statusbit gesetzt, das den Befehl gem. Schritt b. steuert. Erfindungsgemäß wird somit die Operation, die die Synchronisation realisiert und die Verzweigung steuert, mit dem eigentlichen Verarbeitungsschritt (Ein-/Ausgabe, arithmetische Operation usw.) kombiniert.According to the invention, the command for reading the status port is therefore no longer executed. Rather, the command is implicitly executed by the aritmethical logical unit ALU and, in the event of a failure, a corresponding status bit is set, which the command acc. Step b. controls. According to the invention, the operation that realizes the synchronization and controls the branching is thus combined with the actual processing step (input / output, arithmetic operation, etc.).
Gem. einer vorteilhaften Ausgestaltung des Verfahrens ist der Operationsbefehl "Verzweigen" in einem wähl- und festlegbaren Instruktionscode enthalten, wobei vorzugsweise der Operationsbefehl "Verzweigen" durch ein Bit im Instruktionscode festlegbar ist. Falls ein Bit anzeigt, daß neben der in der Institution spezifizierten arithmetischen Operationen oder Schnittstellenoperation eine Verzweigung erfolgen soll und die Schnittstellenoperation nicht erfolgreich ist, wird zu einer in einem Register bereitgehaltenen Adresse verzweigt (indirekte Verzweigung) .According to an advantageous embodiment of the method, the "branch" operation command is contained in a selectable and definable instruction code, the "branch" operation command preferably being able to be defined by a bit in the instruction code. If a bit indicates that a branch is to take place in addition to the arithmetic or interface operation specified in the institution and the interface operation is unsuccessful, a branch is made to an address held in a register (indirect branching).
Bei dem Aufbau einiger frühererer Stackprozessoren wurde bereits ein Instruktionsbit für den Sprung auf eine implizite Adresse verwendet (indirekte Verzweigung), nämlich eine sogen, "unbedingte Return-Operati on" .When building some earlier stack processors, an instruction bit was already used to jump to one implicit address used (indirect branching), namely a so-called "unconditional return operation".
Erfindungsgemäß wird nun eine Verzweigung (Kontrol 1 fl uß- operation) in dieser Weise verwendet, und zwar in Kombination mit einer von der I/0-Operation erzeugten Sprungbedingung. Wenn für die Verzweigung verschiedene Betriebsarten (Warteschleife, Kontextwechsel) benötigt werden, wird dieses erfindungsgemäß nicht durch weitere Befehlsbits, sondern durch Statusbits im Prozessor gesteuert.According to the invention, a branch (control 1 flow operation) is now used in this way, specifically in combination with a jump condition generated by the I / 0 operation. If different operating modes (waiting loop, context change) are required for the branching, this is controlled according to the invention not by further command bits but by status bits in the processor.
Gem. einer weiteren vorteilhaften Ausgestaltung des Verfahrens können die Operationsbefehlsglieder - Daten von der Schnittstelle lesen - sowie - verzweigen zum erneuten Lesen, falls Leseoperation ungültig - zu einem Operationsbefehl verkürzt werden, nämlichAccording to a further advantageous embodiment of the method, the operation command elements - read data from the interface - and - branch to read again if the read operation is invalid - can be shortened to an operation command, namely
e. Schnittstelle lesen, Verzweigen falls ungültig,e. Read interface, branch if invalid,
und zwar dann, wenn eine Sprungoperation nicht gewählt wird, d.h. das Statusbit nicht gesetzt ist.namely when a jump operation is not chosen, i.e. the status bit is not set.
Kontextwechsel können durch indirekte, bedingte Sprünge realisiert werden, wenn man eine statische Prozeßverwaltung zugrunde legt. Bei dieser Art der Prozeßverwaltung werden die Prozesse in einer Schleife angeordnet und jeder Prozeß erhält eine Zustandsvariable (ein beliebiger Speicher für eine Speicheradresse im Hauptspeicher). Diese enthält die Instruktionsadresse, d.h. die Speicheradresse, von der der Prozeß wieder aufgenommen werden soll. Der Kontextwechsel entspricht dann einem indirekten Sprung auf die Adresse in der Zustandsvariabl en des nächsten Prozesses in der Schleife. Die Verzweigungsoperation im Schnittstellenbefehl ist für den Korttextwechsel so realisiert, daß der Prozessor zusätzlich eine Zieladresse aus der zyklisch adressierten (se- quenziell abgearbeiteten) Zustandsvariablenl iste liest. Daß ein Kontextwechsel und nicht einfach ein Sprung ausgeführt wird, kann durch ein zusätzliches Statusbit gesteuert werden, welches gesetzt ist, solange keine Sprungadresse vorgegeben ist (ein Kontextwechsel soll durchgeführt werden) .Context changes can be realized through indirect, conditional jumps if one uses static process management. With this type of process management, the processes are arranged in a loop and each process is given a status variable (any memory for a memory address in the main memory). This contains the instruction address, ie the memory address from which the process is to be resumed. The context change then corresponds to an indirect jump to the address in the state variable of the next process in the loop. The branch operation in the interface instruction is for the The cortical text change is implemented in such a way that the processor also reads a destination address from the cyclically addressed (sequentially processed) status variable list. The fact that a context change and not just a jump can be carried out can be controlled by an additional status bit, which is set as long as no jump address is specified (a context change should be carried out).
Gem. dieser vorteilhaften Ausgestaltung der Erfindung wird der in zwei Schritten gegliederte Operationsbefehl zu einem einzigen kombiniert, d.h. das Lesen der Schnittstelle und zu einer Speicheradresse verzweigen, die in einem Adreßregister gespeichert ist. Zwar sind selbstsynchronisierende I/0-Operationen auch bei bestimmten Signal Prozessoren bekannt, bei denen blockiert aber eine Inputoperation den Prozessor, bis Daten vorhanden sind. Im Gegensatz dazu wird bei dem erfindungsgemäßen Verfahren der Prozessor nicht blockiert. Er kann z.B. in einer interruptfähigen Warteschleife verweilen oder in einen anderen Kontext springen. Input/output-Be- fehle mit einem icht optionalen, automatischen Kontextwechsel gab es auch schon bei einer bekannten Transputerfamilie, dort aber nur in Verbindung mit sperillen Schnittstellen und einer aufwendigen, dynamischen Prozeßverwaltung im Microcode.According to this advantageous embodiment of the invention, the operation command structured in two steps is combined into a single one, i.e. read the interface and branch to a memory address that is stored in an address register. Self-synchronizing I / O operations are also known for certain signal processors, but an input operation blocks the processor until data is available. In contrast, the processor is not blocked in the method according to the invention. He can e.g. stay in an interruptible queue or jump to another context. Input / output commands with a non-optional, automatic change of context were already available for a known transputer family, but only in connection with sperill interfaces and complex, dynamic process management in microcode.
Die erfindungsgemäß hier vorgeschlagene Lösung kommt hingegen mit viel einfacheren Mitteln aus.In contrast, the solution proposed here according to the invention manages with much simpler means.
Gem. einer weiteren vorteilhaften anderen Ausgestaltung der Erfindung wird die Adresse der Verzweigung automatisch gesetzt. Normalerweise erfordert das Setzen einer Sprungadresse in einem Adressregister einen zusätzlichen Befehl. Dieser muß aber weder in der Warteschleife noch für einen Kontextwechsel wiederholt werden. Beim Abschluß der Schnittstellenoperation wird die Sprungadresse durch das dem Sprungadreßregister zugeordnete Statusbit wieder als ungültig ausgewiesen. Da die Wiederholung des Schnittstellenbefehls an der Adresse derselben erfolgen muß, kann, wie erfindungsgemäß vorgeschlagen, zur weiteren Verkürzung und Beschleunigung des Programms, wie gesagt, auch die Verzweigungsadresse automatisch gesetzt werden. Im Falle eines Kontextwechsels wird die Wiederhol adresse in die Statusvariable des Prozesses geschrieben und die Sprungadresse bleibt als ungültig markiert.According to another advantageous embodiment of the invention, the address of the branch is set automatically. Typically, setting a branch address in an address register requires an additional command. However, this does not have to be repeated in the waiting loop or for a context change. At the At the end of the interface operation, the jump address is again identified as invalid by the status bit assigned to the jump address register. Since the repetition of the interface command must take place at the address of the same, the branching address can, as has been proposed according to the invention, be set automatically, as mentioned, to further shorten and accelerate the program. In the event of a change of context, the repeat address is written to the status variable of the process and the jump address remains marked as invalid.
Automatische und separate Verzweigung können erfindungsgemäß auch kombiniert werden, wenn eine erfolgreiche Schnittstellenoperation (mit nicht ausgeführter Verzweigung) ein verzweigungsfähiges Statusbit setzt, um zwischen verschiedenen Nachrichtentypen zu unterscheiden oder den Vollzug der Schnittstellenoperation durch ein sogen. "Timeout" abfragen zu können.Automatic and separate branching can also be combined according to the invention if a successful interface operation (with a branch not carried out) sets a branchable status bit in order to differentiate between different message types or the execution of the interface operation by a so-called. To be able to query "Timeout".
Eine weitere vorteilhafte Ausgestaltung der Erfindung ist es, auch diese Verzweigungsebene zu automatisieren, selbst wenn zusätzlicher Hard- und Softwareaufwand nötig wäre.Another advantageous embodiment of the invention is also to automate this branching level, even if additional hardware and software would be required.
Wie eingangs schon erwähnt, werden von den Schnittstellen nicht nur einzelne Datenworte, sondern auch Datenblöcke übertragen. Unter Zugrundelegung der o.g. Aufgabe wird eine zweite Lösung gem. der Erfindung vorgeschlagen, bei der ein, quasi in zwei Schritten gegliederter, Operationsbefehl lautet:As already mentioned at the beginning, the interfaces not only transmit individual data words, but also data blocks. Based on the above Task is a second solution acc. proposed in the invention, in which an operation command, divided into two steps, is:
c. Daten- und/oder Adressentransfer beginnen,c. Start transfer of data and / or address,
d. Verzweigen, falls Datentransfer abgeschlossen . Auch diese Operationsbefehlsglieder - Daten- und/oder Adressentransfer beginnen - sowie - Verzweigen zum erneuten Transfer, falls Daten- und/oder Adressentransfer ungültig - kann zu einem Operationsbefehl verkürzt werden, der lautet:d. Branch if data transfer is complete. These operation command elements - data and / or address transfer begin - and - branch to retransfer if data and / or address transfer is invalid - can be shortened to an operation command which reads:
e. Transfer beginnen, Verzweigen, so lange Transfer nicht abgeschlossene. Start transfer, branch as long as transfer is not completed
Dadurch ist eine weitere Erhöhung der Funktionalität der Schnittstellenoperation erreichbar, und zwar durch die Integration eines DMA-gesteuerten Blocktransfers. Erfindungsgemäß startet der I/0-Befehl einen DMA-Blocktransfer (direkter Transfer zwischen dem Hauptspeicher und einer Schnittstelle ohne Beteiligung der CPU) über die gewählte Schnittstelle, wobei Register die Parameter (Adresse, Länge) des Transfers festlegen. Alternativ werden diese Parameter ganz oder teilweise als Teil er Datensendung übertragen und automatisch zur weiteren DMA-Kontrolle verwendet. Der Transferbefehl verzweigt, bis der Transfer abgeschlossen ist, ohne dabei den Transfer neu zu starten (der Transferbefehl wird in der Schleife jedes Mal wieder ausgeführt). Der DMA-Controller wird also so ausgelegt, daß der Verzweigungsstatus generiert wird (Status wird gesetzt) und ein wiederholtes Starten des Transfers wirkungslos bleibt, bis der Transfer abgeschlossen ist und die mit dem Transferbefehl gewählte Schnittstelle den DMA ansteuert, d.h. den Transfer startet. Die o.g. Transputerfamilie verwendete für ihre input/output-Befehle auch automatische DMA- Transfers, aber mit den o.g. Einschränkungen. Erfindungsgemäß ergibt sich die DMA-Unterstützung hingegen einfach durch konsequente Verwendung immer, derselben, der Erfindung zugrunde liegenden Prinzips, nämlich eine- Operation mit einer Statusabfrage und einer zugehörigen indirekten Vezweigung zu kombinieren. Vorteilhafterweise kann zudem zur weiteren Vereinfachung dabei ein DMA-Kanal zwischen mehreren Schnittstellen geteilt werden.This enables a further increase in the functionality of the interface operation, namely by integrating a DMA-controlled block transfer. According to the invention, the I / 0 command starts a DMA block transfer (direct transfer between the main memory and an interface without the involvement of the CPU) via the selected interface, registers defining the parameters (address, length) of the transfer. Alternatively, all or part of these parameters are transmitted as part of the data transmission and are used automatically for further DMA control. The transfer command branches until the transfer is complete without restarting the transfer (the transfer command is executed again in the loop each time). The DMA controller is thus designed so that the branching status is generated (status is set) and repeated starting of the transfer has no effect until the transfer is completed and the interface selected with the transfer command controls the DMA, ie starts the transfer. The above-mentioned transputer family also used automatic DMA transfers for their input / output commands, but with the above-mentioned restrictions. According to the DMA support always gives the other hand simply through consistent use to combine them, the principle underlying the invention, namely a- operation with a status inquiry and an associated indirect Vezweigung. For further simplification, a DMA channel can advantageously also be shared between several interfaces.
Wegen der engen Verflechtung mit der zentralen Recheneinheit CPU wird die DMA zweckmäßigerweise bereits unter Verwendung gesonderter Adreßzähl erregister in den Aufbau der CPU integriert, wodurch eine zusätzliche Speicherausnutzung (Steuerung der Speicherzugriffe, um Kollisionen zu verhindern) unnötig wird.Because of the close integration with the central processing unit CPU, the DMA is expediently already integrated into the structure of the CPU using separate address count registers, as a result of which an additional memory utilization (control of the memory accesses to prevent collisions) is unnecessary.
Ein wesentlicher Vorteil der Erfindung in ihrer Gesamtheit ist, daß die kombinierten I/O- zur Übertragung ganzer Datenblöcke ein einheitliches Softwareinterface für Ein- und Ausgaben darstellen. Ein synchronisierender Eingabebefehl für einen Datenblock ersetzt eine ganze Programmschleife - ggf. in einem eigenen Unterprogramm - und das Aufsetzen eines DMA-Blocktransfers. Diese Softwareinterface kann auch für Schnittstel lentreiberrouti - nen emuliert werden, um einen Datenblock unter Verwendung einfacher I/O-Befehle einzuschreiben.A major advantage of the invention as a whole is that the combined I / O for the transmission of entire data blocks represent a uniform software interface for inputs and outputs. A synchronizing input command for a data block replaces an entire program loop - possibly in its own subroutine - and the setting up of a DMA block transfer. This software interface can also be emulated for interface driver routines to write a data block using simple I / O commands.
Die Erfindung stellt somitThe invention thus represents
einen speziellen I/0-Befehl styp mit Statusinformation und Wiederholmöglichkeit (retry) bereit, und zwar mita special I / 0 command type with status information and repeatability (retry), with
den Optionen der automatischen Verzweigung, der Wiederholung oder des Kontextwechsels,the options of automatic branching, repetition or context switching,
der Option von Blocktransfers unter automatischer Verwendung von DMA undthe option of block transfers using automatic DMA and
der Auslegung der Schnittstellen-Hardware für das resultierende Softwareinterface. Der damit ggf. verbundene zusätzliche Aufwand bei der Realisierung der Schnittstelle ist relativ gering. Die DMA-Unterstützung bewirkt, daß in vielen Anwendungen auf eine IRQ-Verarbeitung ganz verzichtet werden kann. Die durch die erweiterten I/O-Befehle unterstützte, erhöhte Funktional iät einzelner Schnittstellen läßt daneben auch einfachere Schnittstell enkonstruktionen zu, bei denen der Status separat abgefragt werden muß.the design of the interface hardware for the resulting software interface. The additional effort involved in realizing the interface is relatively low. DMA support means that IRQ processing can be dispensed with in many applications. The increased functionality of individual interfaces supported by the extended I / O commands also allows for simpler interface designs in which the status must be queried separately.
Zusammenfassend kann gesagt werden, daß mit dem erfindungsgemäßen Verfahren eine effektive Nutzung des Rechenwerks mit wesentlich einfacheren Mitteln erreicht wird, ohne eine parallel arbeitende BPK, LSU oder auch nur einen Chace vorauszusetzen, und deckt zudem weitere Aspekte ab. Es ist damit insbesondere auf einfache Prozessoren wie Mikrokontrol ler oder Prozessoren auf FPUA- Basis anwendbar, die ein breites Anwendungsfeld aufweisen, aber mit geringem Schaltungsaufwand auskommen müssen .In summary, it can be said that with the method according to the invention an effective use of the arithmetic unit is achieved with much simpler means, without presupposing a BPK, LSU or even just a chace, and also covers other aspects. It is therefore particularly applicable to simple processors such as microcontrollers or processors based on FPUA, which have a wide range of applications but have to make do with little circuitry.
Das folgende Beispiel zeigt den Aufbau des 16-bit-In- struktionscodes einer erweiterten Schnittstellenoperation, wie er für eine 16-bit-Prozessorarchi tektur konzipiert wurde. Für Ei nzel worttransfers wird das spezifizierte Register für die Daten angegeben; für Blocktransfers wird es für einen DMA-Parameter verwendet.The following example shows the structure of the 16-bit instruction code of an extended interface operation as it was designed for a 16-bit processor architecture. The specified register for the data is specified for individual word transfers; for block transfers, it is used for a DMA parameter.
01111110 | ii | rr | c | d | n | o | (1) (2) (3) (4) (5) (6) (7)01111110 | ii | rr | c | d | n | o | (1) (2) (3) (4) (5) (6) (7)
(1) konstantes Bitfeld zur Selektion der(1) constant bit field for the selection of the
I/O-InstruktionsklasseI / O instruction class
(2) 2-Bit-Sel ektionscode der Schnittstelle (3) 2- Bit -Registeradresse (4) spezifiziert bedingten indirekten Sprung (5): selektiert zwischen Einzel- und Blocktransfer(2) 2-bit selection code of the interface (3) 2-bit register address (4) specifies conditional indirect jump (5): selected between single and block transfer
(6): Sonderfunktion (pipelining der nächsten EmpfangsOperation)(6): Special function (pipelining of the next receiving operation)
(7): selektiert zwischen Sende- und Empfangsoperati on(7): selected between send and receive operation
Ein Beispiel möge die vielseitige Anwendbarkeit der kombinierten I/O-Befehle illustrieren. Um eine Wartezeit mit Hilfe eines Timers zu realisieren (timeout), wird ein einzelner, kombinierter Befehl verwendet, der den Wartezeitparameter in das Timerregister schreibt, sich aber erst mit Erfolgsstatus zurückmeldet, wenn die Zeit auch abgelaufen ist. Erst dann startet ein weiterer Timerbefehl ein neues Timedelay.An example may illustrate the versatility of the combined I / O commands. In order to realize a waiting time with the help of a timer (timeout), a single, combined command is used, which writes the waiting time parameter in the timer register, but does not report back with success status until the time has also expired. Only then does another timer command start a new time delay.
Die Implementierung des Timeouts ist auch in Verbindung mit dem Warten auf eine Schnittstellenoperation bedeutsam und kann mit dieser so kombiniert werden, daß bei Erreichen des Timeouts oder dem Abschluß der Schnitt- steil enoperation zwischen diesen Möglichkei en aufgrund eines Statusbits unterschieden werden kann.The implementation of the timeout is also important in connection with the wait for an interface operation and can be combined with it in such a way that when the timeout is reached or the interface operation is completed, a distinction can be made between these options based on a status bit.
Eine wichtige Anwendung der kombinierten I/O-Befehle betrifft das Software-Caching unter Verwendung eines durch eine separate Kontrollschaltung, aber nicht durch die CPU verwalteten Speichers, welche DMA-Transfers von diesem in den Hauptspeicher der CPU ausführt. Auf einen mittels einer Schaltung verwalteten Cache als Bindeglied zwischen Arbeitsspeicher und CPU wird dabei ganz verzichtet.An important application of the combined I / O commands relates to software caching using a memory managed by a separate control circuit, but not by the CPU, which performs DMA transfers from it to the main memory of the CPU. There is no need for a cache managed by means of a circuit as a link between the main memory and the CPU.
Eine ähnliche Situation besteht bei der Verwendung von Caches, auf die control! ergeste.uerte, "transparente" Speichertransfers mit dem Hauptspeicher ausgeführt werden, und der ähnlich arbeitenden virtuellen Speicherverwaltung. Die Vorteile des Software-Caching in der hier vorgeschlagenen Form liegen darin, daß die CPU überhaupt nur einen kleinen, dem Cache entsprechenden Speicher adressieren muß und daher kürzere Befehle und eine einfachere Adreßgenerierungslogik verwenden kann, so daß der aufwendige Cachecontroller entfällt, und daß ein deterministisches Zeitverhalten resultiert.A similar situation exists when using caches that control! controlled, "transparent" Memory transfers are carried out with the main memory, and the similarly working virtual memory management. The advantages of software caching in the form proposed here are that the CPU only has to address a small memory corresponding to the cache and can therefore use shorter instructions and simpler address generation logic, so that the complex cache controller is eliminated and that it is deterministic Time behavior results.
Zudem kann das Hauptspeicherinterface mit den benötigten speziellen Funktionen für die zu verwendenden Speichertypen ganz vom CPU-Aufbau entkoppelt werden.In addition, the main memory interface with the required special functions for the memory types to be used can be completely decoupled from the CPU structure.
Von Nachteil ist es, zur Laufzeit häufige (vom Compiler gemäß seiner Speicherverwaltung eingesetzte) Blocktransfers aufsetzen zu müssen. Hier kommen nun die erweiterten I/O-Befehle zum Tragen. Da die so erhaltene Softwa- re-Caching-Architektur erst in Verbindung mit diesen, den erweiterten I/O-Befehlen, attraktiv wird, ist der Speicheraufbau aus dem von einer separaten Kontrollschaltung verwalteten Hauptspeicher und der CPU mit einem kleinen, direkt adressierten RAM-Speicher und im Befehlssatz verankerten DMA-Transferbefehlen ausgeführt.It is disadvantageous to have to set up frequent block transfers (used by the compiler in accordance with its memory management) at runtime. This is where the extended I / O commands come into play. Since the software caching architecture obtained in this way only becomes attractive in connection with these, the extended I / O commands, the memory structure consists of the main memory managed by a separate control circuit and the CPU with a small, directly addressed RAM Memory and DMA transfer instructions anchored in the instruction set.
Der Blocktransfer wird durch nur zwei erweiterte I/O-Befehle gestartet und abgewartet:The block transfer is started and waited by only two extended I / O commands:
g. eine Transferkommandoausgabe über ein Steuerport an den Speicherkontroller,G. a transfer command output via a control port to the memory controller,
h. den Blocktransferbefehl der CPU über das Datenport zum Speicherkontroller. Die häufige Anwendung rechtfertigt es, diese Befehle gleich als Sonderfunktion in einen Befehl zu kombinieren, nämlichH. the block transfer command of the CPU via the data port to the memory controller. Frequent use justifies combining these commands as a special function in one command, namely
i. das Transferkomfnando über den Steuerport und den Blocktransferbefehl über den Datenport an den Speicherkontroller sendeni. send the transfer command to the memory controller via the control port and the block transfer command via the data port
Während des Blocktransfers wechselt der Prozessor in einen anderen Kontext, so daß keine Rechenzeit verlorengeht.During the block transfer, the processor changes into a different context, so that no computing time is lost.
Die Kombination bedingter, indirekter Sprünge mit anderen 'Instruktionsklassen ist erfindungsgemäß ebenfalls möglich. Gemeinsames Merkmal solcher kombinierter Befehle ist die Eliminierung von Kontrollbefehlen aus dem Binärcode des Programms und damit die effizientere Nutzung der ALU. Der durch ein Bit im Instruktionscode spezifizierte, aber in seiner Wirkungsweise vom Status des Prozessors abhängige, bedingte Sprung oder Kontextwechsel ist außer für das Handshaking bei Schnittstellenoperationen auch für andere Anwendungen möglich. Beispielswiese den Rücksprung in einer Schleife, oder in einer unbedingten Variante. Die kombinierte Operation Lesen/Testen/Verzweigen kann auch auf Speicherzugriffe angewandt werden, um die Synchronisation von Prozessen einzufügen. Ein spezieller Code (z.B. der O-Code) kann definiert werden, um nicht vorhandene Daten zu bezeichnen, und nach der Ladeoperation einen Fehlerstatus zu erzeugen, auf den hin automatisch verzweigt wird. In Verbindung mit einer Schreiboperation ergibt sich damit ein Sema- phorenbefehl .The combination of conditional, indirect jumps with other instruction classes is also possible according to the invention. A common feature of such combined commands is the elimination of control commands from the binary code of the program and thus the more efficient use of the ALU. The conditional jump or context change specified by a bit in the instruction code, but the mode of operation of which depends on the status of the processor, is possible in addition to handshaking for interface operations and for other applications. For example, the return in a loop, or in an unconditional variant. The combined operation read / test / branch can also be applied to memory accesses to insert the synchronization of processes. A special code (e.g. the O code) can be defined to indicate data that is not available and to generate an error status after the load operation, which is then automatically branched to. In conjunction with a write operation, this results in a semaphore command.
Als wichtige, weitere Anwendung der Erfindung kann auch die Fehlerbehandlung bei arithmetischen Operationen (z.B. Overflow bei Operationen mit konstanter Wortbreite) nach derselben Methode durchgeführt werden. Die arithmetische Operation erzeugt eine Fehlerbedingung, die automatisch durch einen indirekten Sprungbefehl beantwortet wird. Alternative Fehlerbedingungen und die Option des bedingten indirekten Sprunges werden durch Instruktionsbits angewählt. Die Sprungadresse kann gemeinsam für eine ganze Gruppe von Anweisungen gesetzt werden, wenn eine gemeinsame Behandlung auftretender Fehler möglich ist. Demgegenüber führt eine bedingte Verzweigung hinter jeder Operation, die Fehler verursachen kann, zu einer erheblichen Verlangsamung und Verlängerung des Programms, und auch eine Fehlerbehandlung über (automatisch ausgelöste Interrupts (Traps) zu zusätzlichen Overheads. Typischerweise müssen Fehler innerhalb desselben Prozesses behandelt werden und führen keinen Kontextwechsel herbei. Da die Fehlerbehandlung als Ausnahme anzusehen ist, würden nachfolgende Instruktionen wie üblich parallel zur Ausführung der arithmetischen Operation geladen, so daß im Normalfall kein zusätzlicher Zeitaufwand durch die Verzweigungsoption entsteht.Error handling in arithmetic operations (eg overflow in operations with constant.) Can also be an important, further application of the invention Word width) can be carried out using the same method. The arithmetic operation generates an error condition that is answered automatically by an indirect jump instruction. Alternative error conditions and the option of a conditional indirect jump are selected by instruction bits. The jump address can be set together for a whole group of instructions, if a common handling of occurring errors is possible. In contrast, a conditional branching behind each operation, which can cause errors, leads to a considerable slowdown and extension of the program, and error handling via (automatically triggered interrupts (traps) leads to additional overheads. Typically, errors have to be handled within the same process and do not lead to any Since error handling is to be regarded as an exception, subsequent instructions would, as usual, be loaded parallel to the execution of the arithmetic operation, so that normally the branching option does not add any additional time.
Es muß allerdings für jede Gruppe von Operationen mit gemeinsamer Fehlerbehandlung durch einen geeigneten Befehl die Sprungadresse für den Fehlerfall gesetzt werden. Der Sprung aus einer Instruktionssequenz in eine gemeinsame Fehlerverarbeitung kann auch als Back- trackingoperation angesehen und verwendet werden. Soll nach einer erfolglosen Fehlerbehandlung ein weiteres Backtracking erfolgen, so muß eine zuvor gültige Verzweigungsadresse wiederhergestellt werden. Im Gegensatz zur Schnittstellenoperation wird die Operation im Feh- lerfall nicht wiederholt, so daß nach erfolgtem Sprung die Sprungadresse ungültig werden muß. Diese Betriebsart kann wieder durch ein Statusbit des Prozessors unterschieden werden. Für ein Unterprogramm ohne eigene Fehlerbehandlung muß die Verzweigung als bedingter Returnbefehl (Abbruch des Unterprogrammes) wirken und in der Aufrufebene fortgesetzt werden, was einer weiteren Betriebsart der Verzweigungsoperation entspricht. Der erwähnte 16-bit-Prozessor verwendet die kombinierte Sprunganweisung in nicht weniger als fünf Betriebsarten und verwendet einen automatisch verwalteten Stack, um die verschiedenen Verzweigungsstrukturen sowie Unterprogramme schachteln zu können. Kontextwechsel werden nur außerhalb von Unterprogrammen und Verzweigungsstrukturen ausgeführt.However, the jump address for the error case must be set for each group of operations with common error handling using a suitable command. The jump from an instruction sequence to a common error processing can also be viewed and used as a back-tracking operation. If further backtracking is to take place after an unsuccessful error handling, a previously valid branch address must be restored. In contrast to the interface operation, the operation is not repeated in the event of an error, so that the jump address must become invalid after the jump. This operating mode can again be distinguished by a status bit of the processor. For a subroutine without your own If the error is handled, the branch must act as a conditional return command (termination of the subroutine) and must continue at the call level, which corresponds to another operating mode of the branch operation. The 16-bit processor mentioned uses the combined jump instruction in no less than five operating modes and uses an automatically managed stack in order to be able to nest the various branch structures and subroutines. Context changes are only carried out outside of subroutines and branch structures.
Um eine CPU durch zusätzliche Operationen zu erweitern, die in zeitlicher Folge durch sie und mit dem durch ihr Programm gegebenen Kontroll fluß aufzurufen sind, werden Koprozessoren eingesetzt. Die Synchronisation mit einem Koprozessor, der über spezielle I/0-Operationen (Kopro- zessorbefehle) Daten und Instruktionen vom Hauptprozessor erhält (ggf. mit DMA-Unterstützung) und Resultate zurückliefert, kann wie im Falle der I/O-Befehle behandelt werden. Ein Koprozessor kann z.B. eingesetzt werden, um eine Schnittstelle mit einem vorgegebenen Über- tragungsprotokoll an das durch die I/O-Befehle gegebene Software-Interface anzupassen. Auch der Speicherkontroller in der Software-Caching-Archi tektur kann als Koprozessor aufgefaßt werden.In order to expand a CPU by additional operations, which are to be called in chronological order by it and with the control flow given by its program, coprocessors are used. The synchronization with a coprocessor, which receives data and instructions from the main processor (possibly with DMA support) and delivers results via special I / O operations (coprocessor commands) and returns results, can be handled as in the case of the I / O commands. A coprocessor can e.g. are used to adapt an interface with a specified transmission protocol to the software interface given by the I / O commands. The memory controller in the software caching architecture can also be seen as a coprocessor.
Ferner kann auch eine Koprozessoroperation Fehlerfälle haben, die als Status übergeben werden müssen, um in eine Fehlerbehandlung verzweigen zu können. Ein arithmetischer Koprozessor kann z.B. Ober- und Unterläufe und Konvertierungsfehler melden. Bei einem solchen Koprozessor muß zwischen der zeitlichen Synchronisation und der Behandlung eines arithmetischen Fehlers unterschieden werden, was mit einem weiteren Statusbit erfolgen kann. Bei einem schnellen Koprozessor bietet es sich an, ihn in einer Pipeline arbeiten zu lassen und die Synchronisation durch Wartezyklen der CPU zu realisieren, aber die automatische Verzweigung, wie bei den arithmetischen Operationen der CPU, nur zur Verarbeitung der rückgemeldeten Fehler zu verwenden. Wie dort werden für die Fehlerbehandlung keine Kontextwechsel ausgeführt, und für geschachtelte Verzweigungsstrukturen wird ein Stack implementiert.Furthermore, a coprocessor operation can also have error cases that must be transferred as status in order to be able to branch to error handling. An arithmetic coprocessor can, for example, report overflow and underflow and conversion errors. In such a coprocessor, a distinction must be made between the time synchronization and the treatment of an arithmetic error, which can be done with a further status bit. With a fast coprocessor, it makes sense to use it to let it work in a pipeline and to implement the synchronization by waiting cycles of the CPU, but to use the automatic branching, as with the arithmetic operations of the CPU, only for processing the reported errors. As there, no context changes are made for error handling, and a stack is implemented for nested branching structures.
Erfindungsgemäß sind somit folgende Betriebsablaufschritte möglich:The following operational sequence steps are thus possible according to the invention:
1) Kombination einer Operation, die einen Fehlerstatus liefert, mit einer indirekten Verzweigung.1) Combination of an operation that returns an error status with an indirect branch.
la) Verwendung der indirekten Verzweigung als durch ein Instruktionsbit ausgewählte Option.la) Use the indirect branch as an option selected by an instruction bit.
lb) Operation nach 1), la), wobei bei nicht selektierter Verzweigung der Status so erzeugt wird, daß eine separate Verzweigung folgen kann.lb) Operation according to 1), la), wherein if the branch is not selected, the status is generated so that a separate branch can follow.
lc) Kombinierte Operation nach 1), la), lb, die bei nicht genommener Verzweigung zusätzliche Statusinformation erzeugt.lc) Combined operation according to 1), la), lb, which generates additional status information if the branch is not taken.
ld) Spezialfall einer Schήi ttstel lenoperation in 1), la) - c) , die ihre Nicht-Bereitschaft als Fehler meldet.ld) Special case of a rocket operation in 1), la) - c), which reports that it is not ready as an error.
le) Auslegung der Schnittstelle nach ld), so daß nach erfolgter Verzweigung derselbe Befehl nur den Status ermittelt und verzweigt, ohne die Schnittstellenoperation zu wiederholen.le) interpretation of the interface according to ld), so that after branching the same instruction only determines and branches without repeating the interface operation.
lf) Schnittstellenoperation nach ld) - e) , die die Befehlsadresse als Verzweigungsadresse einsetzt. lg) Integration einer DMA-Funktion in die CPU und Start von DMA-Blocktransfers mit einem Befehl nach ld) - f) , der bis zum Ende des Transfers den Fehlerstatus erzeugt.lf) Interface operation according to ld) - e), which uses the command address as a branch address. lg) Integration of a DMA function in the CPU and start of DMA block transfers with a command according to ld) - f), which generates the error status until the end of the transfer.
lh) Emulation des durch lf) - g) gegebenen Softwareinterfaces durch Treiberroutinen.lh) Emulation of the software interface given by lf) - g) by driver routines.
lj) Synchronisierende Speicherleseoption analog lf), die einen bestimmten Code als Fehler behandelt.lj) Synchronizing memory read option analog lf), which treats a certain code as an error.
2) Verwendung der indirekten Verzweigung nach 1), 2) in verschiedenen Betriebsarten, die durch. Zustandsbits in der CPU unterschieden werden.2) Use of the indirect branching according to 1), 2) in different operating modes by. Status bits are differentiated in the CPU.
2a) Automatische Kontextwechsel im Fehlerfall bei einer Schnittstellenoperation nach ld) - h) .2a) Automatic context change in the event of an error during an interface operation according to ld) - h).
2b) Ausführung der Verzweigung als bedingter Returnbefehl aus einem Unterprogramm.2b) Execution of the branch as a conditional return instruction from a subroutine.
2c) Verwendung einer automatischen Stackfunktion für geschachtelte Verzweigungsstrukturen unter möglicher Beschränkung der Kontextwechsel auf den Zustand eines leeren Stacks.2c) Use of an automatic stack function for nested branching structures with possible restriction of the context change to the state of an empty stack.
3) Anwendung der Blocktransferbefehle lg) für den Datenaustausch mit einem externen Speicher.3) Use of the block transfer commands lg) for data exchange with an external memory.
3a) Speicherarchitektur mit externem Speicher und Kontroller und kleinem CPU-Speicherraum, wobei dieser durch Befehle nach 3) per Software als Cache verwaltet wird.3a) Memory architecture with external memory and controller and small CPU memory space, which is managed by software according to 3) as a cache.
3b) Kontroller nach 3a) mit zusätzlichen Funktionen zur DRAM-Ansteuerung, Wait-State-Generierung, Wortbreitenanpassung . 3c) Kontroller nach 3a), 3b), der die Parameter der Blocktransferkommandos in Startadressen für Datenblöcke transformiert.3b) Controller according to 3a) with additional functions for DRAM control, wait state generation, word width adjustment. 3c) Controller according to 3a), 3b), which transforms the parameters of the block transfer commands into start addresses for data blocks.
4) Kombinierte Operation nach 1), la) - c) auf der Grundlage einer ALU-Operation mit Fehlerstatus.4) Combined operation according to 1), la) - c) based on an ALU operation with error status.
4a) Verwendung der Verzweigungsoperation zur gemeinsamen Fehlerbehandlung für Grundblöcke.4a) Using the branching operation for common error handling for basic blocks.
4b) Backtracking-Betriebsart der Verzweigung für 4a) mit Wiederherstellung der vorigen Sprungadresse und Fortsetzung der Fehlerbehandlung nach einem bedingten Returnbefehl .4b) Backtracking operating mode of the branch for 4a) with restoration of the previous jump address and continuation of error handling after a conditional return command.
4c) Übertragung von 4), 4a) - b) auf die Operationen eines entsprechend ausgelegten Koprozessors . 4c) Transfer of 4), 4a) - b) to the operations of a coprocessor designed accordingly.

Claims

Patentansprüche claims
1. Verfahren zur maschinenbefehl- und programmgestützten Steuerung von Prozessoren, insbesondere Mikroprozessoren, umfassend wenigstens eine zentrale Recheneinheit CPU, Speichermittel für Daten sowie für Steueralgorithmen sowie wenigstens eine eine Schnittstelle darstellende Ein-/Ausgabeeinhei t I/O, wobei durch die Maschinenbefehle und/oder programmgestützt rechnerinterne wenigstens Schreib-, Lese-, Verzweig- sowie arithmetische Operationen von Daten und Adressen sowie Daten- und Adressentransfers von der Schnittstelle in den Prozessor und vom Prozessor zur Schnittstelle ausgeführt werden, dadurch gekennzeichnet, daß ein Operationsbefehl lautet:1. A method for machine command and program-based control of processors, in particular microprocessors, comprising at least one central processing unit CPU, storage means for data and for control algorithms and at least one input / output unit I / O which represents an interface, with the machine commands and / or program-supported computer-internal at least write, read, branch and arithmetic operations of data and addresses as well as data and address transfers from the interface to the processor and from the processor to the interface, characterized in that an operation command reads:
a. Daten von der Schnittstelle lesena. Read data from the interface
b. Verzweigen, falls Leseoperation ungültig. b. Branch if read operation is invalid.
2. Verfahren zur maschinenbefehl- oder programmgestützten Steuerung von Prozessoren, insbesondere Mikroprozessoren, umfassend wenigstens eine zentrale Recheneinheit CPU, Speichermittel für Daten sowie für Steueralgorithmen sowie wenigstens eine eine Schnittstelle darstellende Ein-/Ausgabeeinheit I/O, wobei durch die Maschinenbefehle und/oder programmgestützt rechnerinterne wenigstens Schreib-, Lese-, Verzweig- sowie arithmetische Operationen sowie Daten- und Adreßtransfers von der Schnittstelle in den Prozessor und vom Prozessor zur Schnittstelle ausgeführt werden, dadurch gekennzeichnet, daß ein Operationsbefehl lautet:2. Method for machine command or program-based control of processors, in particular microprocessors, comprising at least one central processing unit CPU, storage means for data and for control algorithms and at least one input / output unit I / O which represents an interface, with the machine commands and / or program-based Computer-internal at least write, read, branch and arithmetic operations as well as data and address transfers are carried out from the interface into the processor and from the processor to the interface, characterized in that an operation command reads:
c. Daten- und/oder Adressentransfer beginnen,c. Start transfer of data and / or address,
d. Verzweigen, falls Datentransfer abgeschlossen.d. Branch if data transfer is complete.
3. Verfahren nach einem oder beiden der Ansprüche 1 oder 2, dadurch gekennzeichnet, daß der Operationsbefehl Verzweigen in einem wähl- und festlegbaren Instruktionscode enthalten ist.3. The method according to one or both of claims 1 or 2, characterized in that the operation command branch is contained in a selectable and definable instruction code.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß der Operationsbefehl Verzweigen durch ein Bit im Instruktionscode festlegbar ist.4. The method according to claim 3, characterized in that the operation command branch can be determined by a bit in the instruction code.
5. Verfahren nach einem oder mehreren der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Operationsbefehlsglieder - Daten von der Schnittstelle lesen - sowie - Verzweigen zum erneuten Lesen, falls Leseoperation ungültig - zu einem Operationsbefehl verkürzt werden, der lautet:5. The method according to one or more of claims 1 to 4, characterized in that the operation command elements - read data from the interface - and - branch for rereading, if read operation is invalid - are shortened to an operation command which reads:
e. Schnittstelle lesen, Verzweigen falls ungültig. e. Read interface, branch if invalid.
6. Verfahren nach einem oder mehreren der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die Operationsbefehlsglieder - Daten- und/oder Adressentransfer beginnen - sowie - Verzweigen zum erneuten Transfer, falls Daten- Und/oder Adressentransfer ungültig - zu einem Operationsbefehl verkürzt werden, der lautet:6. The method according to one or more of claims 1 to 5, characterized in that the operation command elements - data and / or address transfer begin - and - branch to retransfer if data and / or address transfer is invalid - are shortened to an operation command, it reads:
f. Transfer beginnen, Verzweigen, so lange Transfer nicht abgeschlossenf. Start transfer, branch as long as transfer is not completed
7. Verfahren nach einem oder mehreren der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß der Operationsbefehl in einem Instruktionscode folgenden Aufbaues enthalten ist:7. The method according to one or more of claims 1 to 6, characterized in that the operation command is contained in an instruction code of the following structure:
| 01111110 | 11 | rr | c | d | n | o | (1) (2) (3) (4) (5) (6) (7)| 01111110 | 11 | rr | c | d | n | o | (1) (2) (3) (4) (5) (6) (7)
wobeiin which
(1): konstantes Bitfeld zur Selektion der I/O-Instruktionsklasse(1): constant bit field for selection of the I / O instruction class
(2): 2-Bit-Sel ektionscode der Schnittstelle(2): 2-bit selection code of the interface
(3): 2-Bit-Registeradresse(3): 2-bit register address
(4): spezifiziert bedingten indirekten Sprung(4): specified conditional indirect jump
(5): selektiert zwischen Einzel- und Blocktransfer(5): selected between single and block transfer
(6): Sonderfunktion (pipelining der nächsten Empfangsoperation)(6): Special function (pipelining of the next receive operation)
(7): selektiert zwischen Sende- und Empfangsoperation (7): selected between send and receive operation
8. Verfahren nach einem oder mehreren der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Adresse der Verzweigung automatisch gesetzt wird.8. The method according to one or more of claims 1 to 7, characterized in that the address of the branch is set automatically.
9. Verfahren nach einem oder mehreren der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß als Schnittstelle ein Speicherkontroller angesprochen wird und ein Blocktransferbefehl ein software-caching ausführt.9. The method according to one or more of claims 1 to 8, characterized in that a memory controller is addressed as the interface and a block transfer command executes software caching.
10. Verfahren nach einem oder mehreren der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß statt der Schnittstellenoperation eine ALU- oder Koprozessoroperation verwendet wird.10. The method according to one or more of claims 1 to 9, characterized in that an ALU or coprocessor operation is used instead of the interface operation.
11. Verfahren nach einem oder mehreren der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß eine jeweilige Operation einen zusätzlichen Status hinterläßt, der eine weitere Verzweigung ermöglicht. 11. The method according to one or more of claims 1 to 10, characterized in that a respective operation leaves an additional status which enables further branching.
PCT/EP2003/002295 2002-03-08 2003-03-06 Method for machine instruction assisted and program assisted control of processors WO2003077118A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003218698A AU2003218698A1 (en) 2002-03-08 2003-03-06 Method for machine instruction assisted and program assisted control of processors

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE2002110085 DE10210085B8 (en) 2002-03-08 2002-03-08 Method and processor for combining data and control flow operations
DE10210085.3 2002-03-08

Publications (2)

Publication Number Publication Date
WO2003077118A2 true WO2003077118A2 (en) 2003-09-18
WO2003077118A3 WO2003077118A3 (en) 2004-02-12

Family

ID=27797592

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2003/002295 WO2003077118A2 (en) 2002-03-08 2003-03-06 Method for machine instruction assisted and program assisted control of processors

Country Status (3)

Country Link
AU (1) AU2003218698A1 (en)
DE (1) DE10210085B8 (en)
WO (1) WO2003077118A2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390307A (en) * 1990-08-29 1995-02-14 Mitsubishi Denki Kabushiki Kaisha Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
EP0762271A2 (en) * 1995-09-11 1997-03-12 International Business Machines Corporation Early completion of floating-point operations during load/store multiple operations
EP0982655A2 (en) * 1998-08-26 2000-03-01 Infineon Technologies Corporation Data processing unit and method for executing instructions of variable lengths

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5636352A (en) * 1994-12-16 1997-06-03 International Business Machines Corporation Method and apparatus for utilizing condensed instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390307A (en) * 1990-08-29 1995-02-14 Mitsubishi Denki Kabushiki Kaisha Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
EP0762271A2 (en) * 1995-09-11 1997-03-12 International Business Machines Corporation Early completion of floating-point operations during load/store multiple operations
EP0982655A2 (en) * 1998-08-26 2000-03-01 Infineon Technologies Corporation Data processing unit and method for executing instructions of variable lengths

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LEE R.B.: "HP precision: a spectrum architecture" PROCEEDINGS OF THE 22ND ANNUAL HAWAII INTERNATIONAL CONFERENCE ON KAILUA-KONA, 3. - 6. Januar 1989, Seiten 242-251, XP010014847 HI,US *

Also Published As

Publication number Publication date
DE10210085B8 (en) 2008-11-27
DE10210085A1 (en) 2004-01-15
AU2003218698A1 (en) 2003-09-22
DE10210085B4 (en) 2008-01-31
WO2003077118A3 (en) 2004-02-12

Similar Documents

Publication Publication Date Title
DE2251876C3 (en) Electronic data processing system
DE10110504B4 (en) Method and computer system for managing threads
EP0947049B1 (en) Reconfiguration method for programmable components during running time
DE10085374B4 (en) System management memory for the system management interrupt handlers is integrated into the memory controller, regardless of the BIOS and operating system
DE2828544A1 (en) ARRANGEMENT FOR HANDLING TASKS IN A DATA PROCESSING SYSTEM
DE2411963A1 (en) DATA PROCESSING SYSTEM
WO2005073865A2 (en) Device for transmitting data between memories
DE102008055892A1 (en) Storing sections of a data transfer descriptor in a cached and uncached address space
DE4305851A1 (en) Data transfer system between memory and central processing unit - uses direct memory access transfer control having bus information control stage to provide time priority access control of operations
EP1599794B1 (en) Processor with different types of control units for commonly used resources
DE19842254C2 (en) Computing device
DE602004010399T2 (en) RENEWABLE VIRTUAL DMA TAX AND STATUS REGISTER
DE3802025C1 (en)
EP1483682A2 (en) Reconfigurable processor
EP1117037B1 (en) Data processing apparatus for parallel processing of independent processes (threads)
DE102010003512A1 (en) Shared central processing of data
DE19843663A1 (en) Configurable hardware block
DE10210085B4 (en) Method and processor for combining data and control flow operations
DE19580638B4 (en) A computer system and method for controlling a peripheral device in a computer system
DE102007015507B4 (en) Processor with first and second modes of operation and method of operation
DE60104549T2 (en) DATA PROCESSING ARRANGEMENT FOR TREATING VARIOUS DATA TYPES
DE102011083468A1 (en) Circuit arrangement for scheduling in a data processing
DE102008020782B4 (en) Method for processing programs in parallel and processor suitable for carrying out the method
DE19827914C1 (en) Application specific integrated circuit for processing defined sequences of assembly commands
DE2507405A1 (en) PROCEDURE AND ARRANGEMENT FOR SYNCHRONIZING THE TASKS IN PERIPHERAL DEVICES IN A DATA PROCESSING SYSTEM

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP