WO2011120812A1 - Cyclic priority change during data processing - Google Patents

Cyclic priority change during data processing Download PDF

Info

Publication number
WO2011120812A1
WO2011120812A1 PCT/EP2011/054014 EP2011054014W WO2011120812A1 WO 2011120812 A1 WO2011120812 A1 WO 2011120812A1 EP 2011054014 W EP2011054014 W EP 2011054014W WO 2011120812 A1 WO2011120812 A1 WO 2011120812A1
Authority
WO
WIPO (PCT)
Prior art keywords
tasks
processing
processing unit
task
fop
Prior art date
Application number
PCT/EP2011/054014
Other languages
German (de)
French (fr)
Inventor
Eberhard Boehl
Ruben Bartholomae
Original Assignee
Robert Bosch Gmbh
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 Robert Bosch Gmbh filed Critical Robert Bosch Gmbh
Publication of WO2011120812A1 publication Critical patent/WO2011120812A1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Definitions

  • the invention relates to a circuit arrangement for a data processing system for processing a plurality of tasks by means of a central processing unit and a corresponding method for processing a plurality of tasks in a data processing system.
  • CPUs Central Processing Unit
  • ALU simple arithmetic-logical Units
  • memories such as RAM, ROM, EPROM, EEPROM, etc. are used to store programs and data.
  • the processor or the CPU executes a program or executes a program.
  • the program is usually composed of different subprograms, which in turn may be dedicated to different tasks. One speaks then of multitasking.
  • An interrupt is a short-term interruption of one program to another, prioritized perform higher-level or time-critical processing of another task.
  • an interrupt request is initially made, whereupon an interrupt routine is executed and the previously processed task is interrupted and this task is continued at the interruption point after the interrupt has ended.
  • an interrupt causes the CPU to jump to a corresponding program section.
  • multitasking can also cause a so-called "time sharing", which apparently serves several users simultaneously.
  • multitasking refers to the ability of a CPU to perform several tasks in parallel. In doing so, the different processes are always activated alternately at such short intervals that an impression of simultaneity arises.
  • the circuit arrangement provided according to the invention can, for example, be implemented in a data-processing architecture and correspondingly allocate tasks currently to be processed to a processing unit available to the data-processing system, for example a CPU or ALU. Suitable embodiments of the circuit arrangement presented according to the invention as well as the method presented according to the invention emerge from the respective dependent claims and the description.
  • a circuit arrangement for a data processing system for processing a plurality of tasks by means of a central processing unit having a processing capacity associated with the processing unit.
  • the circuit arrangement provided according to the invention is configured to allocate the processing unit to the processing unit for processing in a time-delayed manner, and also to control that the tasks are processed in the order to be preselected and tasks without current processing request are skipped in the order in the processing.
  • the circuit arrangement is further configured to each assign a channel with its own registers to each of the tasks and to select the respective registers according to the assignment of the respective task to the processing unit and to connect to the processing unit. Furthermore, it can be provided that the circuit arrangement is configured to assign the processing unit each of the tasks with the current processing request, ie each of the so-called active tasks, for a constant time duration which is the same for all active tasks.
  • a passive task is tasks without a current processing request, ie tasks that currently signal no processing.
  • active tasks are tasks which make a current processing request and signal this accordingly, so that they are taken into account during processing by the processing unit.
  • the circuit provided according to the invention therefore provides for the processing capacity or computing capacity of the processing unit provided in the data processing system, such as an ALU or CPU, to be divided equally among all active tasks.
  • the time duration corresponds exactly to one cycle of a clock cycle of the processing unit.
  • the circuit arrangement is configured to provide a processing of instructions of the respective registers of the respective channels of the active tasks in a pipeline having a plurality of pipeline stages, wherein the respective registers at the time of processing in appropriately clocked pipeline registers Pipeline be switched and the pipeline stages in a period of time in parallel, but each processed for different channels.
  • instruction decoding and memory access for a first active task occur in each case in time segments in which at least one second active task is assigned to the processing unit.
  • the present invention relates to a method for processing a plurality of tasks in a data processing system by means of a central processing unit with a processing capacity allocated to the processing unit. It is provided to assign the respective tasks the processing unit for processing offset in time, to edit the tasks in a predetermined sequence and to skip tasks without current processing request in the order in the processing.
  • FIG. 1 shows an architectural model in which the method proposed according to the invention can be carried out.
  • FIG. 2 shows a possible embodiment of a pipelining, according to which command processing can be carried out according to the method proposed according to the invention.
  • FIG. 3 shows a possible embodiment of the circuit arrangement provided according to the invention, in particular when determining the respective next task to be performed.
  • FIG. 4 shows the embodiment illustrated in FIG. 3 in detail.
  • FIG. 5 shows an embodiment for realizing a barrel shifter with 16 ⁇ 16 multiplexers used in the embodiment of FIGS. 3 and 4.
  • FIG. 6 shows a possible embodiment of a "first one detector" with 32 multiplexers used in the embodiment of FIGS. 3 and 4.
  • FIG. 7 shows a possible implementation of an addition modulo 17 with an overflow look-ahead (OLA), as may be provided in one embodiment of the circuit arrangement provided according to the invention.
  • OVA overflow look-ahead
  • FIG. 8 shows a possible embodiment of a method provided according to the invention, in which an additional pipeline stage for task selection is provided.
  • Figure 9 shows a rotating register as an alternative to the barrel shifter provided in the embodiment of Figures 3 and 4.
  • the method proposed according to the invention or the circuit arrangement provided according to the invention can be implemented, for example, in a so-called multi-channel sequencer (MCS) of a generic timer module (GTM), a possible architecture of such a multi-channel sequencer being illustrated in FIG.
  • MCS multi-channel sequencer
  • GTM generic timer module
  • the Multi Channel Sequencer (MCS) 100 shown here serves several channels, for example 8 or 16, which corresponds to the tasks to be processed. This means that each task to be processed is assigned a channel.
  • the MCS 100 has a central processing unit 10, such as an ALU, and a memory 20, such as a RAM.
  • the MCS serves T channels, each channel having its own microprogram located at different locations in the memory.
  • each channel has its own command register (IR) 35, its own instruction counter (PC) 25, its own status register (STA) 45 and its own so-called General Purpose Register (GPR) 55, which in the present representation with 0 ... N-1 are designated.
  • T command registers ( " HR " 35, T command counters (T * PC) 25 and T status registers (T * STA) 45 are shown.
  • Each channel also has its own interface 30, such as an ARU interface via which data in the respective GRPs 55 can be updated asynchronously, ie without waiting for processing of a corresponding channel, or data can be output.
  • the plurality of existing interfaces 30, corresponding to the number of channels, is made clear by an indicated "overlaying" of the symbols respectively representing the interfaces. The same applies to the number of command registers 35, command counters 25, general purpose registers 55 and status registers 45 and ABC registers 65.
  • processing of a channel is blocked, which means that an operation to be performed and thus another program sequence of the corresponding channel only takes place when requested data has arrived or been picked up via the respective ARU interface 30 assigned to the corresponding channel.
  • an ARU interface 30 of a channel is completed by its own control bit register (ACB) 65. These control bits are forwarded to the ARU interface 30 with the data of the GPRs 55, or are updated with each ARU read command.
  • the blocking state of a channel is signaled by setting a corresponding bit (eg in status register (STA) 45). All other channels continue to work their program.
  • the cancellation of a blocking command is initiated asynchronously (i.e., whether the channel is in the pipeline) via the ARU interface 30 as soon as data has been received from the General Purpose Register 55.
  • All channels served by the MCS 100 use the same central arithmetic logic unit 10 (ALU), the same instruction decoder 40, the same instruction predecoder 50, the same memory 20 and the same address decoder 15 in the architecture shown here for the memory 20, as shown in FIG.
  • ALU central arithmetic logic unit 10
  • the same instruction decoder 40 the same instruction predecoder 50
  • the same memory 20 and the same address decoder 15 in the architecture shown here for the memory 20, as shown in FIG.
  • a host CPU accesses the memory 20 (RAM) via a host CPU interface 60
  • each task is independent of a priority assigned to it Compared to other tasks can be processed, but the respective task is only processed if it is to be considered as an active task, as described above.
  • Each active task i and associated therewith each active channel i, whose request signal is thus set to 1, d. H. RDYi 1, always processing exactly one cycle of the processing cycle or another equal processing time. Furthermore, it can be provided that the CPU also has a so-called reserved
  • At least one additional channel is reserved for it.
  • Host CPU via the host CPU interface 60 may conflict if another process simultaneously requires access to the RAM 20. This other process can be the preparation of the program for a currently edited channel. If an additional channel is reserved for the host CPU 60, then only the host CPU gets access to the RAM 20 via the host CPU interface 60 in the corresponding time slot 250 (see FIG. 2). In this case, for example, it may also be provided that possible interrupt requests are served via this additional channel if this request is connected to the reading or writing of the RAM 20.
  • Processing of instructions in accordance with a possible embodiment of the circuit arrangement provided according to the invention is carried out in a pipeline with a plurality of pipeline stages.
  • four pipeline stages are preferably distinguished.
  • the pipeline, or pipeline is a kind of assembly line used to decompose the execution of instructions into sub-instructions according to the number of pipeline stages, the pipeline stages for multiple channels (ie tasks) can be performed in parallel, but each for a different channel (see Figure 2). This means that instead of a task being completely processed during a processing cycle of the processing unit, only one partial task is executed at a time, whereby, however, different subtasks of several tasks are processed simultaneously.
  • the pipeline stages may be preferably:
  • Stage 0 addresses and control signals are initially formed for the RAM access pending in the next pipeline stage.
  • RAM access may be reading a date or command or writing a date.
  • the address is formed from the relevant instruction counter (PC).
  • Stage 0 is represented by the reference numeral 0 in FIGS. 1 and 2.
  • Stage 1 then accesses main memory 20 (RAM), with the corresponding instruction being loaded from main memory 20.
  • Stage 1 is shown in Figure 1 and 2 respectively with reference numeral 1.
  • Stage 2 the instruction predecoder 50 then uses a command predecode. Stage 2 is shown in Figure 1 and 2 respectively with reference numeral 2.
  • stage 3 the command processing takes place, which is carried out for all tasks by one and the same processing unit 10, such as an ALU.
  • Stage 3 is shown in Figure 1 and 2 respectively with reference numeral 3.
  • Commands which require only one processing cycle execution time process the operands 200 in stage 3 and, if necessary, 300 from the own registers or the direct operands from the instruction word and write the result back to the corresponding registers
  • a further processing cycle is required by a bit in the status register STA 45 of the corresponding channel
  • the corresponding RAM address is decoded and the data is then in Stage 1 from the corresponding General Purpose Register (GPR) 55 in the Memory 20 (RAM) is written similarly to operands from memory 20 (RAM).
  • GPR General Purpose Register
  • a whole pip The eline flow is required to load data from the memory 20 (RAM) into the corresponding GPR register 55. Only at the next processing cycle can this operand be processed.
  • the corresponding task or the corresponding channel remains active, ie the corresponding request signal RDYi remains set until the command has been completely executed.
  • a special register TRG 75 provides the possibility of triggering channels among each other.
  • the channels themselves can use time or position-related signals (TBU Time Base Unit) 85 to place an event into a current time reference or to control it in dependence on positions.
  • TBU Time Base Unit time or position-related signals
  • This comparison is carried out in the processing unit 10, for example an ALU, in which the TBU (Time Base Unit) 85 can form an operand.
  • An access to data of the respective interface 30, for example an ARU interface, is expected from the corresponding channel and the blocking reading ensures that no data inconsistency can occur.
  • the instruction predecoder 50 allows a data to be provided from the memory 20 (RAM) in the next cycle of operation. This will be a RAM date into an instruction that writes the date in the required destination register.
  • the instruction predecoder 50 ensures that with the blocking instructions enabled (the corresponding bit in the control register is set), the subsequent instructions from the previous pipeline stages are discarded. While a blocking command is still active, the subsequent command is already processed in pipeline stages 0 and 1 and transferred out of RAM, and in pipeline 2 a decision is made as to whether the command is now being processed in subsequent pipeline stage 3 ( if the blocking command was ended asynchronously via the ARU interface) or discarded (if the blocking command is still active).
  • FIG. 2 again illustrates the parallel processing of pipeline stages at T channels.
  • the pipeline comprises 4 pipeline stages, represented as Stage 0, Stage 1, Stage 2 and Stage 3.
  • a processing cycle 202 corresponds to, for example, T + 1 clocks. After a start-up phase, exactly one channel is assigned to a pipeline stage in each cycle and processed accordingly. Therefore, the pipeline stages are processed in parallel but each for a different channel. As already mentioned, the CPU is allocated at least one additional time slot 250, whereby the processing cycle comprises 202 T + 1 clocks.
  • FIG. 2 shows in detail that in the first pipeline stage, during a first processing cycle 202, a channel C a 204, a channel C b 206, a channel C c 208, a channel C d 210, etc. are processed one after the other. Finally, during the first processing cycle 202, the execution or execution of a channel C k 218, which represents the T-th active channel, takes place. The last time slot 250 of the processing cycle 202 is reserved for the CPU or reserved for the CPU channel. In a subsequent processing cycle, a channel C x 220, a channel C y 222, a channel C z 224, etc. are processed, which are always currently active channels.
  • Stage 1 For the further pipeline stages Stage 1, Stage 2, Stage 3, a processing of the respective active channels starts offset by one clock.
  • first pipeline stage stage 1 it is provided for the first pipeline stage stage 1 according to FIG. 2 that during the processing cycle 202, channel C a 204, channel C b 206, channel C c 208, etc. are processed or executed.
  • Channel C j 216 and channel C k 218 are processed.
  • a time slot 250 is first provided to the CPU and subsequently channel C x 220, channel C y 222, etc. are executed. Also offset by one clock for the second pipeline stage 2 during the first processing cycle 202, first, an execution of the channel C a 204 and the channel C b 206.
  • channel C 214 and channel Q 216 are processed
  • the time slot 250 is provided for the CPU and then channel C z and so on are processed.
  • channels C a 204 etc. are processed during the first processing cycle.
  • a processing or execution of a channel C h 212 and of the channel C, 214 takes place.
  • the processing of the channel C j 216 and of the channel C k 218 takes place first.
  • T processes active tasks and additionally provides a time slot for a host CPU or for a channel reserved for the host CPU, whereby each processing cycle T + 1 bars.
  • the individual active tasks are each processed in all four pipeline stages, with a time delay for a single active task, here in FIG. 2, offset by one clock.
  • Those shown in FIG. 2 indicate all active tasks which are processed in the processing cycle 202 without explicit designation.
  • FIG. 3 shows a circuit arrangement for determining the task to be carried out next during a processing.
  • FIG. 4 shows the embodiment of FIG. 3 in a more detailed form.
  • the count CNT indicates a task currently being processed, which is needed in the selection as a basis to be able to determine from the given order which task is to be processed next, taking into account the fact that some of the tasks following the order may not be active.
  • the RDY bit values i of the input vector 1_0 are stored in memory units (eg flip-flops), these flip-flops are interconnected as a shift register and the content of this shift register is shifted to the right by CNT positions, taking the right of the shift register
  • the bit values shifted outwards are again fed as input to the shift register on the left (see also FIG. 9, bottom).
  • a combinatorial circuit instead of such a shift register.
  • Such a circuit is known in the art as a barrel shifter. Details of a corresponding circuit of said barrel shifter 2_1 are shown and described below in FIG.
  • RDY_rot (0) is not generated because it corresponds to the task being processed and therefore always has to be 1.
  • the here shown and in use located barrel shifter 2_1 requires about 640 gate equivalents.
  • the result of the above rotation is a RDY_red vector 2_3 normalized to the corresponding CNT value.
  • the described rotation with the barrel shifter is necessary because depending on the current processing status of the tasks (and thus the value of CNT, 5) another task would be the next one (regardless of the activity of this task).
  • RDY_rot (2-3) then show at position 0 (LSB, Least Significant Bit) the value of the RDY bit of the task currently being processed at position 1, the RDY bit of the task next to the row would be the bit at location 2, the RDY bit of the task after next, and so on.
  • the position is represented in the value FOP (First One Position) 2_4 binary coded.
  • FOP First One Position
  • the circuit for determining the FOP bits is shown in FIG. 6 and, in this implementation, requires approximately 80 gate equivalents. A description by means of a hardware description language is easily possible for this circuit.
  • the structure can be described, for example, in VHDL for the bit FOP (0) (declared as a signal) as follows:
  • the thus determined FOP vector 2_4 is added as a binary value and added to the current CNT value 5_0, as shown in FIG.
  • the adder 2_5 performs, for example, an addition modulo 17 and usually requires about 50 gate equivalents. For this, a correction value 15 must be added to the result, in the event that a value greater than 16 was determined as the result. In order to obtain the corrected new_CNT vector, one may need an additional clock phase as soon as an overflow occurs.
  • an additional adder 7_2 with the corresponding correction value to the first adder 2_5, as shown as an alternative embodiment in FIG. 7, only a section of the selection network 2_0 being shown here.
  • a circuit 7_5 which anticipates an overflow 7_4 (overflow look ahead, OLA).
  • OLA overflow look ahead
  • Table 1 Value table for OV
  • the reference numeral 7_6 is assigned to the CNT value, the reference numeral 7_8 to the FOP value, the reference numeral 7_10 to the new new_CNT vector, and the reference numeral 7_1 to the provisional result vector new_CNT_v.
  • the total cost of the proposed circuit arrangement according to the invention as shown as a possible embodiment in Figure 4, with approximately 900 gate equivalents in a range that does not the associated hardware savings, which is achieved by the provided Multitask- king surpasses.
  • the circuit arrangement provided according to the invention ensures that the latency for processing the tasks is shortened if not all tasks simultaneously make a request to the central processing unit.
  • the CNT and new_CNT values 7_6, 7_10 are calculated in a forward-looking manner.
  • an additional pipeline stage can be provided, which allows the CNT value 7_6 to take effect one clock later for the tasks or channel selection.
  • CNT is delayed by one clock stored in old_CNT and this value determines the selection of the current task, as shown by way of example in Figure 8.
  • the same reference numerals are again used for identical processes or units as in the previously described embodiments of FIGS. 3, 4 and 7.
  • the next but one task to be processed is displayed here as new_CNT 7_10, which is fed to a corresponding flip-flop circuit 4_1.
  • the next task to be processed is displayed as CNT value 7_6, which in turn is then fed to the selection network 2_0 and is then displayed via a flip-flop circuit 4_2 in old_CNT 6_0 as a task to be processed currently.
  • prioritization can also be switched off by assigning each task a processing time, irrespective of a processing request. This is FOD on the

Abstract

The invention relates to a circuit assembly for a data processing system for running several tasks by means of a central processing unit having a processing capacity attributed to the processing unit. Said circuit assembly is configured to associate the temporally offset processing unit with the respective task, and to control said processing unit so that the tasks are treated according to a predetermined sequence and the tasks without actual processing requests in the sequence, are skipped during processing. The invention also relates to a corresponding method and a corresponding computer programme.

Description

Beschreibung Titel  Description title
Zyklischer Priorisierungswechsel bei einer Datenverarbeitung  Cyclic prioritization change in a data processing
Die Erfindung betrifft eine Schaltungsanordnung für ein Datenverarbeitungssystem zur Abarbeitung von einer Mehrzahl von Aufgaben mittels einer zentralen Verarbeitungseinheit und ein entsprechendes Verfahren zur Abarbeitung von einer Mehrzahl von Aufgaben in einem datenverarbeitenden System. The invention relates to a circuit arrangement for a data processing system for processing a plurality of tasks by means of a central processing unit and a corresponding method for processing a plurality of tasks in a data processing system.
Stand der Technik State of the art
In datenverarbeitenden Systemen, wie bspw. in Rechner- und Mikroprozessor- Systemen, Steuereinheiten, peripheren Einheiten sowie in anderen informationsverarbeitenden Systemen werden zum Zweck der Berechnung häufig sogenannte CPUs (Central Processing Unit) als zentrale Verarbeitungseinheiten eines Computers oder aber auch lediglich einfache arithmetische-logische Einheiten (ALU) verwendet. Ferner werden zur Speicherung von Programmen und Daten entsprechende Speicher wie RAM, ROM, EPROM, EEPROM usw. eingesetzt. Der Prozessor bzw. die CPU arbeitet ein Programm ab bzw. führt ein Programm aus. Das Programm ist dabei in der Regel aus verschiedenen Teilprogrammen zusammengesetzt, die gegebenenfalls wiederum unterschiedlichen Aufgaben (Tasks) gewidmet sein können. Man spricht dabei dann von Multitasking. In data processing systems, such as. In computer and microprocessor systems, control units, peripheral units and other information processing systems often called CPUs (Central Processing Unit) as the central processing units of a computer or even simple arithmetic-logical Units (ALU) used. Furthermore, memories such as RAM, ROM, EPROM, EEPROM, etc. are used to store programs and data. The processor or the CPU executes a program or executes a program. The program is usually composed of different subprograms, which in turn may be dedicated to different tasks. One speaks then of multitasking.
Je nach einem aktuellen Szenario, d. h. welche Aufgaben zu diesem Zeitpunkt eine Bearbeitung anfordern, wird dabei entschieden, welche Aufgabe durch die CPU abgearbeitet werden soll. Dabei ist es denkbar, dass unterschiedlichen Aufgaben unterschiedliche Prioritäten zugewiesen sind, so dass bei Abarbeitung der Aufgaben die den jeweiligen Aufgaben zugeordnete Priorität beachtet wird und entsprechend die Aufgabe der höchsten Priorität vorrangig bearbeitet wird. Dies geschieht bspw. durch sogenannte Interrupts. Bei einem Interrupt handelt es sich um eine kurzfristige Unterbrechung eines Programms, um eine andere, priori- tätshöhere bzw. zeitkritische Verarbeitung einer anderen Aufgabe durchzuführen. Dabei wird zunächst eine Unterbrechungsanforderung gestellt, woraufhin eine Unterbrechungsroutine ausgeführt wird und die zuvor bearbeitete Aufgabe unterbrochen und nach Beendigung des Interrupts diese Aufgabe an der Unterbre- chungsstelle fortgesetzt wird. Das bedeutet, dass in der Regel dabei eine aktuelle Anforderung einer Aufgabe, die eine höhere Priorität besitzt als die sich gerade in Bearbeitung befindende Aufgabe vorrangig bearbeitet wird, und dass dafür die sich bereits in Bearbeitung befindende Aufgabe unterbrochen wird. Der betreffende Interrupt veranlasst dabei die CPU zu einem Sprung in einen entsprechen- den Programmabschnitt. Depending on a current scenario, ie which tasks request processing at this time, it is decided which task is to be processed by the CPU. It is conceivable that different tasks are assigned different priorities, so that when processing the tasks, the priority assigned to the respective tasks is taken into account and, accordingly, the task of the highest priority is given priority. This happens, for example, by so-called interrupts. An interrupt is a short-term interruption of one program to another, prioritized perform higher-level or time-critical processing of another task. In this case, an interrupt request is initially made, whereupon an interrupt routine is executed and the previously processed task is interrupted and this task is continued at the interruption point after the interrupt has ended. This means that as a rule, a current request for a task that has a higher priority than the task currently being processed is given priority, and that the task already in progress is interrupted for this task. The interrupt in question causes the CPU to jump to a corresponding program section.
Das voranstehend genannte Multitasking kann auch ein sogenanntes "time sharing" bewirken, das mehrere Nutzer scheinbar gleichzeitig bedient. Generell bezeichnet Multitasking die Fähigkeit einer CPU, mehrere Aufgaben (Tasks) neben- läufig auszuführen. Dabei werden die verschiedenen Prozesse in so kurzen Abständen immer abwechselnd aktiviert, dass ein Eindruck der Gleichzeitigkeit entsteht. The aforementioned multitasking can also cause a so-called "time sharing", which apparently serves several users simultaneously. Generally, multitasking refers to the ability of a CPU to perform several tasks in parallel. In doing so, the different processes are always activated alternately at such short intervals that an impression of simultaneity arises.
Die Auswahl der einzelnen Aufgaben zuzuordnenden Prioritäten und die Abarbei- tungszeiten hochpriorisierter Aufgaben können allerdings dazu führen, dass Aufgaben mit niedriger Priorität selten und im Extremfall gar nicht abgearbeitet werden. Dies kann dann der Fall sein, wenn quasi dauerhaft oben genannte Interrupt-Anfragen kommen und somit die Abarbeitung einer in Relation zu anderen Aufgaben niedrig priorisierte Aufgabe hier nicht vollständig vollendet werden kann. In diesem Fall ist es notwendig, Maßnahmen zu ergreifen, die eine sogenannte Worst Case Execution Time (WCET) garantieren und damit ein Mindestmaß an Arbeitskapazität der CPU für jede zu bearbeitende Aufgabe garantieren. However, the selection of priorities to be assigned to each task, and the processing times of high-priority tasks, may result in low-priority tasks being rarely executed and, in the extreme case, being unworkable. This can be the case if quasi-permanently mentioned above interrupt requests and thus the execution of a low prioritized in relation to other tasks task can not be fully completed here. In this case, it is necessary to take action to guarantee a so-called Worst Case Execution Time (WCET), thus guaranteeing a minimum of CPU working capacity for each task to be processed.
Allerdings hat sich in der Vergangenheit gezeigt, dass solche Garantien sehr aufwendig sein können und darüber hinaus die Leistungsfähigkeit des zugrundeliegenden Systems einschränken können. Ferner ist hier ein Interrupt-Controller notwendig, der zudem mit einer Prioritätssteuerung ausgestattet sein muss. However, it has been shown in the past that such guarantees can be very costly and can also limit the performance of the underlying system. Furthermore, an interrupt controller is necessary here, which must also be equipped with a priority control.
Demnach wäre es wünschenswert, eine Möglichkeit vorzusehen, die zur Verfü- gung stehende Abarbeitungskapazität einer zentralen Recheneinheit bzw. CPU so zu nutzen, dass auf einfache Weise gewährleistet wird, dass jede abzuarbei- tende Aufgabe, die aktuell eine Bearbeitung anfordert, egal welche Priorität dieser Aufgabe in Relation zu allen anderen Aufgaben zuzuordnen ist, innerhalb einer bestimmten Zeit abgearbeitet wird. Accordingly, it would be desirable to provide a possibility of using the available processing capacity of a central processing unit or CPU in such a way that it is easy to ensure that each processing unit can be processed. tende task that is currently requesting a processing, no matter which priority this task is in relation to all other tasks, is processed within a certain time.
Offenbarung der Erfindung Disclosure of the invention
Vor diesem Hintergrund werden eine Schaltungsanordnung gemäß Patentanspruch 1 und ein entsprechendes Verfahren mit den Merkmalen von Patentanspruch 9 bereitgestellt. Against this background, a circuit arrangement according to claim 1 and a corresponding method with the features of claim 9 are provided.
Die erfindungsgemäß vorgesehene Schaltungsanordnung kann bspw. in einer datenverarbeitenden Architektur implementiert sein und einer dem datenverarbeitenden System zur Verfügung stehenden Verarbeitungseinheit, bspw. einer CPU oder ALU, aktuell zu bearbeitende Aufgaben entsprechend zuweisen. Geeignete Ausführungsformen der erfindungsgemäß vorgestellten Schaltungsanordnung sowie des erfindungsgemäß vorgestellten Verfahrens ergeben sich aus den jeweils abhängigen Ansprüchen und der Beschreibung. The circuit arrangement provided according to the invention can, for example, be implemented in a data-processing architecture and correspondingly allocate tasks currently to be processed to a processing unit available to the data-processing system, for example a CPU or ALU. Suitable embodiments of the circuit arrangement presented according to the invention as well as the method presented according to the invention emerge from the respective dependent claims and the description.
Kern und Vorteile der Erfindung Core and advantages of the invention
Gemäß Patentanspruch 1 wird eine Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung einer Mehrzahl von Aufgaben mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität bereitgestellt. Die erfindungsgemäß vorgesehene Schaltungsanordnung ist dazu konfiguriert, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, und ferner zu steuern, dass die Aufgaben in der vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Verarbeitung übersprungen werden. According to claim 1, a circuit arrangement is provided for a data processing system for processing a plurality of tasks by means of a central processing unit having a processing capacity associated with the processing unit. The circuit arrangement provided according to the invention is configured to allocate the processing unit to the processing unit for processing in a time-delayed manner, and also to control that the tasks are processed in the order to be preselected and tasks without current processing request are skipped in the order in the processing.
Gemäß einer möglichen Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung ist die Schaltungsanordnung ferner dazu konfiguriert, jede der Aufgaben jeweils einen Kanal mit eigenen Registern zuzuteilen und die jeweiligen Registern entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit auszuwählen und mit der Verarbeitungseinheit zu verbinden. Ferner kann vorgesehen sein, dass die Schaltungsanordnung dazu konfiguriert ist, die Verarbeitungseinheit jeder der Aufgaben mit aktueller Bearbeitungsanforderung, d. h. jeder der sogenannten aktiven Aufgaben, jeweils für eine konstante und für alle aktiven Aufgaben gleiche Zeitdauer zuzuordnen. Als passive Aufgabe bezeichnet man dabei Aufgaben ohne aktuelle Bearbeitungsanforderung d. h. Aufgaben, die aktuell keine Bearbeitung signalisieren. Aktive Aufgaben sind im Rahmen der vorliegenden Beschreibung demgegenüber Aufgaben, die eine aktuelle Bearbeitungsanforderung stellen und dies entsprechend signalisieren, so dass sie bei der Bearbeitung durch die Verarbeitungseinheit berücksichtigt werden. According to a possible embodiment of the circuit arrangement provided according to the invention, the circuit arrangement is further configured to each assign a channel with its own registers to each of the tasks and to select the respective registers according to the assignment of the respective task to the processing unit and to connect to the processing unit. Furthermore, it can be provided that the circuit arrangement is configured to assign the processing unit each of the tasks with the current processing request, ie each of the so-called active tasks, for a constant time duration which is the same for all active tasks. A passive task is tasks without a current processing request, ie tasks that currently signal no processing. By contrast, in the context of the present description, active tasks are tasks which make a current processing request and signal this accordingly, so that they are taken into account during processing by the processing unit.
Die erfindungsgemäß vorgesehene Schaltungsanordnung sieht demnach vor, die Verarbeitungskapazität bzw. Rechenkapazität der in dem datenverarbeitenden System vorgesehenen Verarbeitungseinheit, wie bspw. einer ALU oder CPU, gleichmäßig auf alle aktiven Aufgaben (Tasks) aufzuteilen. Gemäß einer weiteren Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung entspricht die Zeitdauer dabei genau einem Takt eines Takt-Zyklus der Verarbeitungseinheit. The circuit provided according to the invention therefore provides for the processing capacity or computing capacity of the processing unit provided in the data processing system, such as an ALU or CPU, to be divided equally among all active tasks. According to a further embodiment of the circuit arrangement provided according to the invention, the time duration corresponds exactly to one cycle of a clock cycle of the processing unit.
Ferner kann vorgesehen sein, dass die Schaltungsanordnung dazu konfiguriert ist, eine Abarbeitung von Befehlen der jeweiligen Register der jeweiligen Kanäle der aktiven Aufgaben in einer Pipeline mit mehreren Pipeline-Stufen vorzusehen, wobei die jeweiligen Register zum Zeitpunkt der Abarbeitung in entsprechend getaktete Pipeline-Register der Pipeline umgeschaltet werden und die Pipline- Stufen in einem Zeitabschnitt parallel, aber jeweils für verschiedene Kanäle verarbeitet werden. Furthermore, it may be provided that the circuit arrangement is configured to provide a processing of instructions of the respective registers of the respective channels of the active tasks in a pipeline having a plurality of pipeline stages, wherein the respective registers at the time of processing in appropriately clocked pipeline registers Pipeline be switched and the pipeline stages in a period of time in parallel, but each processed for different channels.
Dabei kann vorgesehen sein, dass Befehlsdekodierung und Speicherzugriff für eine erste aktive Aufgabe jeweils in Zeitabschnitten erfolgen, in welchen mindestens einer zweiten aktiven Aufgabe die Verarbeitungseinheit zugeordnet ist. In this case, it can be provided that instruction decoding and memory access for a first active task occur in each case in time segments in which at least one second active task is assigned to the processing unit.
Gemäß einer weiteren Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung ist vorgesehen, dass eine Berechnung der Zuordnung ei- ner einer aktuell in Verarbeitung befindlichen Aufgabe nachfolgenden Aufgabe inAccording to a further embodiment of the circuit arrangement provided according to the invention, it is provided that a calculation of the assignment of a task which is currently under processing in a task following in FIG
Abhängigkeit davon erfolgt, welche die aktuell zu verarbeitende Aufgabe ist und ferner, welche Aufgaben zum Berechnungszeitpunkt eine Bearbeitungsanfrage stellen bzw. eine Anforderung zur Bearbeitung signalisieren. Depending on which is the task currently being processed and Furthermore, which tasks make a processing request or signal a request for processing at the time of calculation.
Es existiert somit ein Priorisierung der aktiven Aufgaben mit variabler Priorität. Das bedeutet, dass alle aktiven Aufgaben in einer Reihenfolge abgearbeitet werden und die Reihenfolge davon abhängt, welche Aufgabe zuletzt bzw. gerade abgearbeitet wird. Dies wird nachfolgend anhand der Figuren noch näher erläutert werden. Durch die erfindungsgemäß vorgesehene Schaltungsanordnung gibt es eine genau bestimmte voranstehend genannte Worst Case Execution Time (WCET), die aber nur dann voll ausgeschöpft wird, wenn alle Aufgaben in der vorgegebenen Reihenfolge aktiv sind, d. h. alle Aufgaben jeweils eine entsprechende Bearbeitungsanforderung gestellt haben. Jede aktive Aufgabe bekommt die Verarbeitungskapazität der zentralen Verarbeitungseinheit in der vorgegebenen Reihenfolge zugeteilt. Werden zusätzliche zunächst passive Aufgaben der Reihenfolge aktiv, so reihen sich diese unmittelbar in die vorgegebene Reihenfolge ein bzw. werden in die vorgegebene Reihenfolge eingegliedert. Nicht aktive Aufgaben in der Reihenfolge werden, wie voranstehend beschrieben, übersprungen. There is thus a prioritization of the active tasks with variable priority. This means that all active tasks are processed in an order and the order depends on which task is being executed or is currently being processed. This will be explained in more detail below with reference to FIGS. By means of the circuit arrangement provided according to the invention, there is a precisely defined above-mentioned Worst Case Execution Time (WCET), which, however, is only fully utilized if all tasks are active in the specified sequence, ie. H. all tasks have each submitted a corresponding processing request. Each active task is allocated the processing capacity of the central processing unit in the given order. If additional initially passive tasks of the order become active, then these are immediately integrated into the given order or are incorporated into the given order. Inactive tasks in the order are skipped as described above.
Es ist denkbar, dass die Berechnung der Zuordnung der entsprechenden jeweils nachfolgenden Aufgabe vorausschauend mittels eines sogenannten Pipelinings erfolgt. It is conceivable that the calculation of the assignment of the respective respective subsequent task is carried out in a forward-looking manner by means of a so-called pipelining.
Ferner betrifft die vorliegende Erfindung ein Verfahren zur Abarbeitung einer Mehrzahl von Aufgaben in einem datenverarbeitenden System mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität. Dabei ist vorgesehen, den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zuzuordnen, die Aufgaben in einer vorzugebenden Reihenfolge zu bearbeiten und Aufgaben ohne aktuelle Bearbeitungsanfrage in der Reihenfolge bei der Bearbeitung zu überspringen. Furthermore, the present invention relates to a method for processing a plurality of tasks in a data processing system by means of a central processing unit with a processing capacity allocated to the processing unit. It is provided to assign the respective tasks the processing unit for processing offset in time, to edit the tasks in a predetermined sequence and to skip tasks without current processing request in the order in the processing.
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und den beiliegenden Zeichnungen. Further advantages and embodiments of the invention will become apparent from the description and the accompanying drawings.
Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, son- dem auch in anderen Kombinationen oder alleine verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen. It is understood that the features mentioned above and those yet to be explained not only in the combination specified in each case, but which can also be used in other combinations or alone, without departing from the scope of the present invention.
Figur 1 zeigt ein Architekturmodell, in welchem das erfindungsgemäß vorgeschlagene Verfahren ausgeführt werden kann. FIG. 1 shows an architectural model in which the method proposed according to the invention can be carried out.
Figur 2 zeigt eine mögliche Ausführungsform eines Pipelining, gemäß welchem Befehlsverarbeitungen gemäß dem erfindungsgemäß vorgeschlagenen Verfahren vorgenommen werden können. FIG. 2 shows a possible embodiment of a pipelining, according to which command processing can be carried out according to the method proposed according to the invention.
Figur 3 zeigt eine mögliche Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung, hier insbesondere bei Bestimmung der jeweils nächsten abzuarbeitenden Aufgabe. FIG. 3 shows a possible embodiment of the circuit arrangement provided according to the invention, in particular when determining the respective next task to be performed.
Figur 4 zeigt die in Figur 3 dargestellte Ausführungsform im Detail. FIG. 4 shows the embodiment illustrated in FIG. 3 in detail.
Figur 5 zeigt eine Ausführungsform zur Realisierung eines in der Ausführungsform der Figuren 3 und 4 verwendeten Barrel-Shifters mit 16 x 16 Multiplexer. FIG. 5 shows an embodiment for realizing a barrel shifter with 16 × 16 multiplexers used in the embodiment of FIGS. 3 and 4.
Figur 6 zeigt eine mögliche Ausführungsform eines in der Ausführungsform von Figur 3 und 4 verwendeten "first one detector" mit 32 Multiplexern. FIG. 6 shows a possible embodiment of a "first one detector" with 32 multiplexers used in the embodiment of FIGS. 3 and 4.
Figur 7 zeigt eine mögliche Realisierung einer Addition modulo 17 mit Overflow- Look-Ahead (OLA), wie sie in einer Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung vorgesehen sein kann. FIG. 7 shows a possible implementation of an addition modulo 17 with an overflow look-ahead (OLA), as may be provided in one embodiment of the circuit arrangement provided according to the invention.
Figur 8 zeigt eine mögliche Ausführungsform eines erfindungsgemäß vorgesehenen Verfahrens, bei welchem eine zusätzliche Pipeline-Stufe zur Aufgabenauswahl vorgesehen ist. FIG. 8 shows a possible embodiment of a method provided according to the invention, in which an additional pipeline stage for task selection is provided.
Figur 9 zeigt als eine alternative Möglichkeit zum in der Ausführungsform von Figur 3 und 4 vorgesehenen Barrel-Shifter ein rotierendes Register. Ausführungsformen der Erfindung Figure 9 shows a rotating register as an alternative to the barrel shifter provided in the embodiment of Figures 3 and 4. Embodiments of the invention
Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird unter Bezugnahme auf die Zeichnungen schematisch ausführlich beschrieben. Dabei wird eine detaillierte Beschreibung in Aufbau undThe invention is schematically illustrated by means of embodiments in the drawings and will be described schematically in detail with reference to the drawings. Here is a detailed description in structure and
Funktion gegeben. Function given.
Das erfindungsgemäß vorgeschlagene Verfahren bzw. die erfindungsgemäß vorgesehene Schaltungsanordnung kann bspw. in einem sogenannten Multi Channel Sequencer (MCS) eines generic timer modules (GTM) implementiert sein, wobei eine mögliche Architektur eines derartigen Multi Channel Sequencers in Figur 1 dargestellt ist. The method proposed according to the invention or the circuit arrangement provided according to the invention can be implemented, for example, in a so-called multi-channel sequencer (MCS) of a generic timer module (GTM), a possible architecture of such a multi-channel sequencer being illustrated in FIG.
Der hier dargestellte Multi Channel Sequencer (MCS) 100 bedient mehrere Kanäle, bspw. 8 oder 16, was den zu verarbeitenden Aufgaben entspricht. Das bedeutet, dass jeder zu verarbeitenden Aufgabe ein Kanal zugeteilt wird. Der MCS 100 verfügt über eine zentrale Verarbeitungseinheit 10, wie bspw. eine ALU, und einen Speicher 20, wie bspw. ein RAM. In dem hier dargestellten Fall werden seitens des MCS T Kanäle bedient, wobei jeder Kanal ein eigenes Micro-Programm besitzt, das an unterschiedlichen Stellen des Speichers untergebracht ist. Zur Abarbeitung diese Programms besitzt jeder Kanal ein eigenes Befehlsregister (IR) 35, einen eigenen Befehlszähler (PC) 25, ein eigenes Status-Register (STA) 45 und eigene sogenannte General Purpose Register (GPR) 55, die in der vorliegenden Darstellung mit 0...N-1 bezeichnet sind. The Multi Channel Sequencer (MCS) 100 shown here serves several channels, for example 8 or 16, which corresponds to the tasks to be processed. This means that each task to be processed is assigned a channel. The MCS 100 has a central processing unit 10, such as an ALU, and a memory 20, such as a RAM. In the case shown here, the MCS serves T channels, each channel having its own microprogram located at different locations in the memory. To execute this program, each channel has its own command register (IR) 35, its own instruction counter (PC) 25, its own status register (STA) 45 and its own so-called General Purpose Register (GPR) 55, which in the present representation with 0 ... N-1 are designated.
Das bedeutet, dass in der hier dargestellten MCS-Architektur T Befehlsregister ("HR) 35, T Befehlszähler (T*PC) 25 und T Status-Register (T*STA) 45 dargestellt sind. Ferner besitzt jeder Kanal eine eigene Schnittstelle 30, wie bspw. ein ARU-Interface, über die Daten in den jeweiligen GRPs 55 asynchron, d. h. ohne ein Warten auf Bearbeiten eines entsprechenden Kanals, aktualisiert werden können bzw. Daten ausgegeben werden können. That is, in the MCS architecture shown here, T command registers ( " HR " 35, T command counters (T * PC) 25 and T status registers (T * STA) 45 are shown.) Each channel also has its own interface 30, such as an ARU interface via which data in the respective GRPs 55 can be updated asynchronously, ie without waiting for processing of a corresponding channel, or data can be output.
Die Mehrzahl der vorhandenen Schnittstellen 30, entsprechend der Anzahl von Kanälen, wird durch ein angedeutetes "Übereinanderlegen" der die Schnittstellen jeweils repräsentierenden Symbole deutlich gemacht. Gleiches gilt für die Mehr- zahl von Befehlsregistern 35, Befehlszählern 25, General Purpose Registern 55 und Status-Registern 45 und ABC Registern 65. The plurality of existing interfaces 30, corresponding to the number of channels, is made clear by an indicated "overlaying" of the symbols respectively representing the interfaces. The same applies to the number of command registers 35, command counters 25, general purpose registers 55 and status registers 45 and ABC registers 65.
Zu Synchronisationszwecken wird eine Bearbeitung eines Kanals blockiert, was bedeutet, dass eine durchzuführende Operation und damit ein weiterer Programmablauf des entsprechenden Kanals erst dann erfolgt, wenn angeforderte Daten über das jeweilige, dem entsprechenden Kanal zugeordnete ARU- Interface 30 eingetroffen oder abgeholt worden sind. Ferner ist in der hier dargestellten Architektur vorgesehen, dass ein ARU-Interface 30 eines Kanals jeweils durch ein eigenes Kontroll-Bit-Register (ACB) 65 komplettiert wird. Diese Kontrollbits werden mit den Daten der GPRs 55 an das ARU-Interface 30 weitergeleitet bzw. werden mit jedem ARU-Lesebefehl aktualisiert. Der blockierende Zustand eines Kanals wird durch Setzen eines entsprechenden Bits (z. B. im Status-Register (STA) 45) signalisiert. Alle anderen Kanäle arbeiten ihr Programm weiterhin ab. Das Aufheben eines blockierenden Befehls wird asynchron (d. h. unabhängig davon, ob der Kanal sich in der Pipeline befindet) über das ARU- Interface 30 veranlasst, sobald Daten der General Purpose Register 55 empfangen bzw. gesendet wurden. Alle von der MCS 100 bedienten Kanäle benutzen in der hier dargestellten Architektur die gleiche zentrale arithmetisch-logische Einheit 10 (ALU), den gleichen Instruktions-Dekoder 40, den gleichen Instruktions-Predekoder 50, den gleichen Speicher 20 und den gleichen Adress-Dekoder 15 für den Speicher 20, wie in Figur 1 dargestellt ist. In der hier dargestellten MCS Architektur 100 greift eine Host-CPU über ein Host-CPU-Interface 60 über den Speicher 20 (RAM) in denFor synchronization purposes, processing of a channel is blocked, which means that an operation to be performed and thus another program sequence of the corresponding channel only takes place when requested data has arrived or been picked up via the respective ARU interface 30 assigned to the corresponding channel. Furthermore, it is provided in the architecture shown here that an ARU interface 30 of a channel is completed by its own control bit register (ACB) 65. These control bits are forwarded to the ARU interface 30 with the data of the GPRs 55, or are updated with each ARU read command. The blocking state of a channel is signaled by setting a corresponding bit (eg in status register (STA) 45). All other channels continue to work their program. The cancellation of a blocking command is initiated asynchronously (i.e., whether the channel is in the pipeline) via the ARU interface 30 as soon as data has been received from the General Purpose Register 55. All channels served by the MCS 100 use the same central arithmetic logic unit 10 (ALU), the same instruction decoder 40, the same instruction predecoder 50, the same memory 20 and the same address decoder 15 in the architecture shown here for the memory 20, as shown in FIG. In the MCS architecture 100 shown here, a host CPU accesses the memory 20 (RAM) via a host CPU interface 60
Ablauf ein, d. h. Daten werden in einem dafür reservierten Zyklus von oder zum Handshake-Interface 60 der Host-CPU übergeben. Expiration, d. H. Data is transferred to or from the handshake interface 60 of the host CPU in a dedicated cycle.
Gemäß dem erfindungsgemäß vorgesehenen Verfahren und der erfindungsge- mäß vorgesehenen Schaltungsanordnung wird zunächst ermittelt, welcher Kanal, d. h. welche Aufgabe jeweils im Rahmen eines Bearbeitungszyklus als nächstes bearbeitet werden soll. Der als nächstes zu bearbeitende Kanal wird dabei in Abhängigkeit von einem Zählerstand (CNT) bezüglich gerade aktiver Aufgaben und einem Anforderungssignal (RDYi) einer jeden Aufgabe i bestimmt. Dies wird an- hand von Figur 3 im Folgenden noch näher erläutert. Dabei ist vorgesehen, dass zwar einerseits jede Aufgabe unabhängig von einer ihr zuzuordnenden Priorität im Vergleich zu anderen Aufgaben bearbeitet werden kann, jedoch die jeweilige Aufgabe nur dann bearbeitet wird, wenn sie selbst als aktive Aufgabe, wie vorstehend beschrieben, zu betrachten ist. Das bedeutet, dass Aufgaben, die keine Anforderung einer Bearbeitung zu einem aktuellen Zeitpunkt stellen, d. h. kein Anforderungssignal aussenden, bei Abarbeitung in der Reihenfolge der Aufgaben übersprungen werden. Das heißt die Reihenfolge, die vorgegeben wird, umfasst alle zu bearbeitenden Aufgaben, bei Abarbeitung der Aufgaben wird jedoch in der Reihenfolge darauf geachtet, ob die jeweilige Aufgabe, die gemäß der Reihenfolge ansteht, auch als aktive Aufgabe zu betrachten ist, d. h. ob diese Auf- gäbe aktuell ein Anforderungssignal ausgesendet hat. In accordance with the method provided according to the invention and the circuit arrangement provided according to the invention, it is first determined which channel, ie which task should be processed next in each case within the scope of a processing cycle. The next channel to be processed is determined as a function of a count (CNT) with respect to currently active tasks and a request signal (RDYi) of each task i. This will be explained in more detail below with reference to FIG. 3. It is provided that, on the one hand, each task is independent of a priority assigned to it Compared to other tasks can be processed, but the respective task is only processed if it is to be considered as an active task, as described above. This means that tasks that do not make a request for processing at a current time, ie send out a request signal, are skipped during execution in the order of tasks. That is, the order that is given includes all the tasks to be processed, but when processing the tasks, care is taken in the sequence as to whether the respective task, which is to be performed according to the order, is also to be regarded as an active task, ie whether this is - There is currently a request signal has sent out.
Jede aktive Aufgabe i und damit verbunden jeder aktive Kanal i, dessen Anforderungssignal somit auf 1 gesetzt ist, d. h. RDYi = 1 , wird immer genau einen Takt des Bearbeitungszyklus oder eine andere gleiche Verarbeitungszeit bearbeitet. Ferner kann vorgesehen sein, dass die CPU auch eine sogenannte reservierteEach active task i and associated therewith each active channel i, whose request signal is thus set to 1, d. H. RDYi = 1, always processing exactly one cycle of the processing cycle or another equal processing time. Furthermore, it can be provided that the CPU also has a so-called reserved
Aufgabe bedient, d. h. mindestens ein zusätzlicher Kanal ist dafür reserviert. Als zusätzlicher Kanal wird dabei das Schreiben oder Lesen des RAMs bzw. Speichers 20 angesehen. Da dieser Speicher 20 vorteilhafterweise als Single port RAM ausgeführt wird (zum Zwecke der Einsparung von Hardware gegenüber ei- nem dual port RAM), würde ein Schreiben oder Lesen des RAM 20 durch eineTask served, d. H. at least one additional channel is reserved for it. As an additional channel while writing or reading the RAM or memory 20 is considered. Since this memory 20 is advantageously implemented as a single port RAM (for the purpose of saving hardware compared to a dual port RAM), writing or reading the RAM 20 would be done by a
Host-CPU über das Host-CPU-Interface 60 möglicherweise zu Konflikten führen, falls ein anderer Prozess gleichzeitig den Zugriff zu dem RAM 20 benötigt. Dieser andere Prozess kann dabei die Ausarbeitung des Programms für einen gerade bearbeiteten Kanal sein. Wenn ein zusätzlicher Kanal für die Host-CPU 60 reser- viert wird, dann bekommt nur die Host-CPU über das Host-CPU-Interface 60 in dem entsprechenden Zeitabschnitt 250 den Zugriff auf den RAM 20 (siehe Figur 2). Dabei kann bspw. auch vorgesehen sein, dass über diesen zusätzlichen Kanal mögliche Interrupt-Anforderungen bedient werden, wenn diese Anforderung mit dem Lesen oder Schreiben des RAMs 20 in Verbindung steht. Host CPU via the host CPU interface 60 may conflict if another process simultaneously requires access to the RAM 20. This other process can be the preparation of the program for a currently edited channel. If an additional channel is reserved for the host CPU 60, then only the host CPU gets access to the RAM 20 via the host CPU interface 60 in the corresponding time slot 250 (see FIG. 2). In this case, for example, it may also be provided that possible interrupt requests are served via this additional channel if this request is connected to the reading or writing of the RAM 20.
Eine Abarbeitung von Befehlen gemäß einer möglichen Ausführungsform der erfindungsgemäß vorgesehenen Schaltungsanordnung wird in einer Pipeline mit einer Mehrzahl von Pipeline-Stufen vorgenommen. Dabei werden vorzugsweise vier Pipeline-Stufen unterschieden. Die Pipeline bzw. Befehls-Pipeline bezeich- net eine Art Fließband, mit dem die Abarbeitung von Befehlen in Teilbefehle entsprechend der Anzahl der Pipeline-Stufen zerlegt wird, wobei die Pipeline-Stufen für mehrere Kanäle (d. h. Aufgaben) parallel durchgeführt werden können, aber jeweils für einen anderen Kanal (siehe Figur 2). Das bedeutet, dass anstelle, dass eine Aufgabe während eines Bearbeitungszyklus der Verarbeitungseinheit vollständig abgearbeitet wird, lediglich jeweils eine Teilaufgabe abgearbeitet wird, wobei dabei allerdings verschiedene Teilaufgaben mehrerer Aufgaben gleichzeitig bearbeitet werden. Die Pipeline-Stufen können dabei vorzugsweise sein: Processing of instructions in accordance with a possible embodiment of the circuit arrangement provided according to the invention is carried out in a pipeline with a plurality of pipeline stages. In this case, four pipeline stages are preferably distinguished. The pipeline, or pipeline, is a kind of assembly line used to decompose the execution of instructions into sub-instructions according to the number of pipeline stages, the pipeline stages for multiple channels (ie tasks) can be performed in parallel, but each for a different channel (see Figure 2). This means that instead of a task being completely processed during a processing cycle of the processing unit, only one partial task is executed at a time, whereby, however, different subtasks of several tasks are processed simultaneously. The pipeline stages may be preferably:
Stage 0: RAM-Zugriffsdekodierung Stage 0: RAM access decoding
Stage 1 : RAM-Zugriff Stage 1: RAM access
Stage 2: Befehls-Vordekodierung Stage 2: Command predecoding
Stage 3: Befehlsabarbeitung Stage 3: Command processing
In Stage 0 werden zunächst Adressen und Steuersignale für den in der nächsten Pipeline-Stufe anstehenden RAM-Zugriff gebildet. Ein RAM-Zugriff kann das Lesen eines Datums oder eines Befehls oder das Schreiben eines Datums sein. Im Falle des Lesens eines Befehls wird die Adresse aus dem betreffenden Befehlszähler (PC) gebildet. Stage 0 wird in Figur 1 und 2 jeweils mit dem Bezugszeichen 0 dargestellt. In Stage 0, addresses and control signals are initially formed for the RAM access pending in the next pipeline stage. RAM access may be reading a date or command or writing a date. In the case of reading a command, the address is formed from the relevant instruction counter (PC). Stage 0 is represented by the reference numeral 0 in FIGS. 1 and 2.
In Stage 1 erfolgt dann der Zugriff auf den Arbeitsspeicher 20 (RAM), wobei der entsprechende Befehl aus dem Arbeitsspeicher 20 geladen wird. Stage 1 wird in Figur 1 und 2 jeweils mit Bezugszeichen 1 dargestellt. Stage 1 then accesses main memory 20 (RAM), with the corresponding instruction being loaded from main memory 20. Stage 1 is shown in Figure 1 and 2 respectively with reference numeral 1.
In Stage 2 erfolgt dann mittels des Instruktions-Predekoders 50 eine Befehls- Vordekodierung. Stage 2 wird in Figur 1 und 2 jeweils mit Bezugszeichen 2 dargestellt. In Stage 2, the instruction predecoder 50 then uses a command predecode. Stage 2 is shown in Figure 1 and 2 respectively with reference numeral 2.
In Stage 3 erfolgt letztlich die Befehlsabarbeitung, welche für alle Aufgaben durch ein und dieselbe Verarbeitungseinheit 10, wie bspw. eine ALU vorgenommen wird. Stage 3 wird in Figur 1 und 2 jeweils mit Bezugszeichen 3 dargestellt. Finally, in stage 3, the command processing takes place, which is carried out for all tasks by one and the same processing unit 10, such as an ALU. Stage 3 is shown in Figure 1 and 2 respectively with reference numeral 3.
Alle Pipeline-Stufen bzw. Pipeline-Stages werden parallel verarbeitet, aber jeweils für einen anderen Kanal bzw. eine dem entsprechenden Kanal zugeteilten Aufgabe. Allerdings erfolgt die Verarbeitung gemäß der hier vorgeschlagenen Schaltungsanordnung nur für aktive Aufgaben bzw. damit verbundenen aktiven Kanälen. Die Art der zeitlichen Abarbeitung ist in Figur 2 mit Hilfe eines söge- nannten Pipeline-Flows dargestellt. Wenn Kanal Ca 204 zunächst mit der Dekodierung der RAM-Adresse beginnt (Stage 0) wird Kanal Ca im nächsten Takt den RAM-Zugriff ausführen (Stage 1 ), während Kanal Cb 206 mit der Dekodierung der RAM-Adresse beschäftigt ist (Stage 0). Die entsprechenden "eigenen" Register T*PC bzw. "HR, jeweils dargestellt in Figur 1 durch 25 bzw. 35 werden je nach Kanal automatisch dazugeschaltet. Befehle, die nur einen Bearbeitungszyklus Ausführungszeit benötigen, verarbeiten in Stage 3 die Operanden 200 und ggf. 300 aus den eigenen Registern oder den Direktoperanden aus dem Befehlswort und schreiben das Ergebnis in die entsprechenden Register zurück. Für ein Rückschreiben von Daten in den Speicher 20 (RAM) wird ein weiterer Bearbeitungszyklus benötigt. Dazu wird im Statusregister STA 45 des entsprechenden Kanals ein Bit gesetzt, das das Rückschreiben im nächsten Befehlszyklus bewirkt. Das bedeutet, wenn der entsprechende Kanal wieder in Stage 0 bearbeitet wird, die entsprechende RAM-Adresse dekodiert wird und die Daten dann in Stage 1 aus dem entsprechenden General Purpose Register (GPR) 55 in den Speicher 20 (RAM) geschrieben werden. Ähnlich verhält es sich mit den Operanden aus dem Speicher 20 (RAM). Ein ganzer Pipeline-Ablauf wird benötigt, um Daten aus dem Speicher 20 (RAM) in das entsprechende GPR-Register 55 zu laden. Erst beim nächsten Bearbeitungszyklus kann dann dieser Operand verarbeitet werden. Für Befehle, die mehrere Bearbeitungszyklen benötigen, ist zu beachten, dass die entsprechende Aufgabe bzw. der entsprechende Kanal aktiv bleibt d. h. das entsprechende Anforderungssignal RDYi gesetzt bleibt, bis der Befehl vollständig abgearbeitet ist. All pipeline stages or pipeline stages are processed in parallel, but each for a different channel or a task assigned to the corresponding channel. However, according to the circuit arrangement proposed here, the processing takes place only for active tasks or associated active channels. The type of temporal processing is shown in FIG. 2 with the aid of a so-called called pipeline flows. When channel C a 204 first starts decoding the RAM address (stage 0), channel C a will execute RAM access (stage 1) in the next clock, while channel C b 206 is busy decoding the RAM address ( Stage 0). The corresponding "own" registers T * PC or " HR " , respectively represented by 25 or 35 in FIG. 1, are automatically switched in. Commands which require only one processing cycle execution time process the operands 200 in stage 3 and, if necessary, 300 from the own registers or the direct operands from the instruction word and write the result back to the corresponding registers For a write-back of data in the memory 20 (RAM) a further processing cycle is required by a bit in the status register STA 45 of the corresponding channel This means that if the corresponding channel is again processed in Stage 0, the corresponding RAM address is decoded and the data is then in Stage 1 from the corresponding General Purpose Register (GPR) 55 in the Memory 20 (RAM) is written similarly to operands from memory 20 (RAM). A whole pip The eline flow is required to load data from the memory 20 (RAM) into the corresponding GPR register 55. Only at the next processing cycle can this operand be processed. For commands which require several processing cycles, it should be noted that the corresponding task or the corresponding channel remains active, ie the corresponding request signal RDYi remains set until the command has been completely executed.
Ein Spezialregister TRG 75 schafft die Möglichkeit einer Triggerung von Kanälen untereinander. Die Kanäle selbst können durch zeit- oder positionsbezogene Signale (TBU-Time Base Unit) 85 ein Ereignis in einen aktuellen Zeitbezug versetzen oder in Abhängigkeit von Positionen steuern. Dieser Vergleich wird in der Verarbeitungseinheit 10, bspw. einer ALU, durchgeführt, bei dem die TBU (Time Base Unit) 85 einen Operanden bilden kann. Ein Zugriff auf Daten der jeweiligen Schnittstelle 30, bspw. eines ARU-Interfaces, wird von dem entsprechenden Kanal erwartet und durch das blockierende Lesen wird gewährleistet, dass es zu keiner Dateninkonsistenz kommen kann. Der Instruktions-Predekoder 50 ermöglicht das Bereitstellen eines Datums aus dem Speicher 20 (RAM) im nächsten Betriebszyklus. Dazu wird ein RAM-Datum in eine Instruktion gewandelt, die das Datum in das geforderte Zielregister schreibt. Außerdem sorgt der Instruktions-Predekoder 50 dafür, dass bei aktivierten blockierenden Befehlen (das entsprechende Bit im Kontrollregister ist gesetzt), die nachfolgenden Befehle aus den vorangegangenen Pipeline-Stufen verworfen werden. Während ein blockierender Befehl noch aktiv ist, wird der nachfolgende Befehl bereits in den Pipeline-Stufen 0 und 1 bearbeitet und aus dem RAM transferiert und in Pipeline-Stufe 2 wird entschieden, ob der Befehl nun in der nachfolgenden Pipeline-Stufe 3 verarbeitet wird (falls der blockierende Befehl asynchron über das ARU-Interface beendet wurde) oder verworfen wird (falls der blockierende Befehl noch aktiv ist). A special register TRG 75 provides the possibility of triggering channels among each other. The channels themselves can use time or position-related signals (TBU Time Base Unit) 85 to place an event into a current time reference or to control it in dependence on positions. This comparison is carried out in the processing unit 10, for example an ALU, in which the TBU (Time Base Unit) 85 can form an operand. An access to data of the respective interface 30, for example an ARU interface, is expected from the corresponding channel and the blocking reading ensures that no data inconsistency can occur. The instruction predecoder 50 allows a data to be provided from the memory 20 (RAM) in the next cycle of operation. This will be a RAM date into an instruction that writes the date in the required destination register. In addition, the instruction predecoder 50 ensures that with the blocking instructions enabled (the corresponding bit in the control register is set), the subsequent instructions from the previous pipeline stages are discarded. While a blocking command is still active, the subsequent command is already processed in pipeline stages 0 and 1 and transferred out of RAM, and in pipeline 2 a decision is made as to whether the command is now being processed in subsequent pipeline stage 3 ( if the blocking command was ended asynchronously via the ARU interface) or discarded (if the blocking command is still active).
Figur 2 verdeutlicht nochmals die parallele Verarbeitung von Pipeline-Stufen bei T Kanälen. In dem hier dargestellten Fall umfasst die Pipeline 4 Pipeline-Stufen, dargestellt als Stage 0, Stage 1 , Stage 2 und Stage 3. Ein Bearbeitungszyklus 202 entspricht bspw. T+1 Takten. Nach einer Anlaufphase wird in jedem Takt genau ein Kanal einer Pipeline-Stufe zugeordnet und entsprechend bearbeitet. Daher werden die Pipeline-Stufen parallel, aber jeweils für einen anderen Kanal verarbeitet. Wie bereits erwähnt, wird der CPU mindestens ein zusätzlicher Zeitschlitz 250 zugeordnet, wodurch der Bearbeitungszyklus 202 T+1 Takte umfasst. FIG. 2 again illustrates the parallel processing of pipeline stages at T channels. In the case illustrated here, the pipeline comprises 4 pipeline stages, represented as Stage 0, Stage 1, Stage 2 and Stage 3. A processing cycle 202 corresponds to, for example, T + 1 clocks. After a start-up phase, exactly one channel is assigned to a pipeline stage in each cycle and processed accordingly. Therefore, the pipeline stages are processed in parallel but each for a different channel. As already mentioned, the CPU is allocated at least one additional time slot 250, whereby the processing cycle comprises 202 T + 1 clocks.
Figur 2 zeigt im Detail, dass in der ersten Pipeline-Stufe während eines ersten Bearbeitungszyklus 202 nacheinander ein Kanal Ca 204, ein Kanal Cb 206, ein Kanal Cc 208, ein Kanal Cd 210 usw. abgearbeitet bzw. ausgeführt wird. Zuletzt erfolgt während des ersten Bearbeitungszyklus 202 die Abarbeitung bzw. Aus- führung eines Kanals Ck 218, welcher den T-ten aktiven Kanal darstellt. Der letzte Zeitschlitz 250 des Bearbeitungszyklus 202 ist für die CPU reserviert bzw. für den für die CPU reservierten Kanal. In einem nachfolgenden Bearbeitungszyklus werden ein Kanal Cx 220, ein Kanal Cy 222, ein Kanal Cz 224 usw. bearbeitet, wobei es sich stets um aktuell aktive Kanäle handelt. FIG. 2 shows in detail that in the first pipeline stage, during a first processing cycle 202, a channel C a 204, a channel C b 206, a channel C c 208, a channel C d 210, etc. are processed one after the other. Finally, during the first processing cycle 202, the execution or execution of a channel C k 218, which represents the T-th active channel, takes place. The last time slot 250 of the processing cycle 202 is reserved for the CPU or reserved for the CPU channel. In a subsequent processing cycle, a channel C x 220, a channel C y 222, a channel C z 224, etc. are processed, which are always currently active channels.
Für die weiteren Pipeline-Stufen Stage 1 , Stage 2, Stage 3 beginnt eine Bearbeitung der jeweiligen aktiven Kanäle jeweils um einen Takt versetzt. For the further pipeline stages Stage 1, Stage 2, Stage 3, a processing of the respective active channels starts offset by one clock.
Hierbei ist für die erste Pipeline-Stufe Stage 1 gemäß Figur 2 vorgesehen, dass während des Bearbeitungszyklus 202 Kanal Ca 204, Kanal Cb 206, Kanal Cc 208 usw. bearbeitet bzw. ausgeführt werden. Am Ende des Bearbeitungszyklus 202 werden Kanal Cj 216 und Kanal Ck 218 bearbeitet. Im nachfolgenden Bearbeitungszyklus wird der CPU zunächst ein Zeitschlitz 250 bereitgestellt und nachfolgend werden Kanal Cx 220, Kanal Cy 222 usw. ausgeführt. Ebenfalls um einen Takt versetzt erfolgt für die zweite Pipeline-Stufe 2 während des ersten Bearbeitungszyklus 202 zunächst eine Ausführung bzw. Bearbeitung des Kanals Ca 204 und des Kanals Cb 206. Am Ende des Bearbeitungszyklus werden Kanal C, 214 und Kanal Q 216 bearbeitet. Im nächsten Bearbeitungszyklus werden zunächst Kanal Ck 218 abgearbeitet, der Zeitschlitz 250 für die CPU bereitgestellt und dann Kanal Cz usw. abgearbeitet. In this case, it is provided for the first pipeline stage stage 1 according to FIG. 2 that during the processing cycle 202, channel C a 204, channel C b 206, channel C c 208, etc. are processed or executed. At the end of the machining cycle 202 Channel C j 216 and channel C k 218 are processed. In the subsequent processing cycle, a time slot 250 is first provided to the CPU and subsequently channel C x 220, channel C y 222, etc. are executed. Also offset by one clock for the second pipeline stage 2 during the first processing cycle 202, first, an execution of the channel C a 204 and the channel C b 206. At the end of the processing cycle channel C, 214 and channel Q 216 are processed , In the next processing cycle, first channel C k 218 are processed, the time slot 250 is provided for the CPU and then channel C z and so on are processed.
Für die dritte Pipeline-Stufe 3 wird während des ersten Bearbeitungszyklus 202 Kanal Ca 204 usw. bearbeitet. Am Ende des ersten Bearbeitungszyklus 202 erfolgt eine Bearbeitung bzw. Ausführung eines Kanals Ch 212 und des Kanals C, 214. Im nächsten Bearbeitungszyklus erfolgt zunächst die Bearbeitung des Kanals Cj 216 und des Kanals Ck 218. For the third pipeline stage 3, 202 channels C a 204 etc. are processed during the first processing cycle. At the end of the first processing cycle 202, a processing or execution of a channel C h 212 and of the channel C, 214 takes place. In the next processing cycle, the processing of the channel C j 216 and of the channel C k 218 takes place first.
Das bedeutet zusammenfassend, dass gemäß der exemplarischen Darstellung in Figur 2 nach einer Anlaufphase in jedem Bearbeitungszyklus bspw. T aktive Aufgaben bearbeitet und zusätzlich ein Zeitschlitz für eine Host-CPU bzw. für einen für die Host-CPU reservierten Kanal bereitgestellt wird, wodurch jeder Bearbeitungszyklus T+1 Takte umfasst. Die einzelnen aktiven Aufgaben werden jeweils in allen 4 Pipeline-Stufen bearbeitet, wobei dies für eine einzelne aktive Aufgabe zeitversetzt, hier in Figur 2, um einen Takt versetzt erfolgt. Die in Figur 2 dargestellten weisen auf alle aktiven Aufgaben hin, die im Bearbeitungszyklus 202 ohne explizite Benennung bearbeitet werden. In summary, according to the exemplary representation in FIG. 2, after a start-up phase in each processing cycle, for example, T processes active tasks and additionally provides a time slot for a host CPU or for a channel reserved for the host CPU, whereby each processing cycle T + 1 bars. The individual active tasks are each processed in all four pipeline stages, with a time delay for a single active task, here in FIG. 2, offset by one clock. Those shown in FIG. 2 indicate all active tasks which are processed in the processing cycle 202 without explicit designation.
Figur 3 zeigt eine Schaltungsanordnung zur Bestimmung der bei einer Bearbeitung als nächstes abzuarbeitenden Aufgabe. FIG. 3 shows a circuit arrangement for determining the task to be carried out next during a processing.
Figur 4 zeigt die Ausführungsform von Figur 3 in weiterer detaillierterer Form. FIG. 4 shows the embodiment of FIG. 3 in a more detailed form.
Zunächst wird für jede Aufgabe ein sogenanntes RDYi Bit gesetzt. Dieses Bit signalisiert, ob die jeweils betreffende Aufgabe aktiv oder inaktiv ist, d. h. ob die- se Aufgabe zu bearbeiten ist oder bei Bearbeitung in der Reihenfolge zu überspringen ist. Demnach liegt für jedes RDYi = 1 eine Anforderung der Aufgabe i zur Bearbeitung vor, wie dies durch Pfeil 1_0 angedeutet ist. Mit Hilfe eines kombinatorischen Auswahl-Netzwerks 2_0 wird dann jeweils die nächste abzuarbeitende Aufgabe bestimmt und über einen sogenannten new_C NT-Zählerstand angezeigt, wie durch Pfeil 3_0 kenntlich gemacht. Diese Information wird dann einer entsprechenden Flip-Flop Schaltung 4_0 zugeführt, so dass damit mittels eines entsprechenden Abspeichersignals für die Flip-Flops die entsprechende Aufgabe bestimmt ist, die als nächste bearbeitet werden soll. Der Zählerstand CNT, wie durch Pfeil 5_0 dargestellt, zeigt eine gerade in Bearbeitung befindliche Aufgabe an, welche bei der Auswahl benötigt wird als Basis, um bestimmen zu können anhand der vorgegebenen Reihenfolge, welche Aufgabe als nächstes zu bearbeiten ist, unter Berücksichtigung der Tatsache, dass manche der gemäß der Reihenfolge folgenden Aufgaben ggf. nicht aktiv sind. First, a so-called RDYi bit is set for each task. This bit signals whether the task in question is active or inactive, ie whether this task is to be processed or has to be skipped in the order in which it is processed. Thus, for each RDYi = 1, there is a requirement of task i for processing, as indicated by arrow 1_0. With the help of a combinatorial selection network 2_0, the next task to be processed is then determined in each case and displayed via a so-called new_C NT counter reading, as indicated by arrow 3_0. This information is then supplied to a corresponding flip-flop circuit 4_0, so that it is determined by means of a corresponding storage signal for the flip-flops the corresponding task to be processed next. The count CNT, as represented by arrow 5_0, indicates a task currently being processed, which is needed in the selection as a basis to be able to determine from the given order which task is to be processed next, taking into account the fact that some of the tasks following the order may not be active.
Gemäß Figur 4, die weitere Details zu Figur 3 zeigt und in welcher daher gleiche Vorgänge bzw. Einheiten mit gleichen Bezugszeichen versehen sind, wird beiAccording to Figure 4, which shows further details to Figure 3 and in which therefore the same operations or units are provided with the same reference numerals is at
Ermittlung der nächsten aktiven Aufgabe von bspw. 17 möglichen Aufgaben zunächst in einem Barrel-Shifter 2_1 als Teil des Auswahl-Netzwerks 2_0 ein entsprechend vorliegender RDY-Vektor "RDY_rot" 2_3 um CNT Stellen nach rechts geschoben und überlaufende Bits an einer anderen Seite wieder eingespeist. Man kann sich diese Verschiebung auch als eine Rotation nach rechts um CNTDetermination of the next active task of, for example, 17 possible tasks initially in a barrel shifter 2_1 as part of the selection network 2_0 a correspondingly present RDY vector "RDY_rot" 2_3 shifted CNT positions to the right and fed overflowing bits on another side again , One can also see this shift as a rotation to the right around CNT
Bits vorstellen. Die RDY-Bitwerte i des Eingangsvektors 1_0 werden in Speichereinheiten (z. B. Flip-Flops) abspeichert, diese Flip-Flops werden als Schieberegister verschaltet und der Inhalt dieses Schieberegisters wird um CNT Stellen nach rechts verschoben, wobei man die rechts aus dem Schieberegister hinaus- geschobenen Bitwerte jeweils wieder links als Eingang dem Schieberegister zuführt (siehe auch Figur 9, unten). Um Hardwareaufwand zu sparen, ist es aber in der Regel günstiger, anstelle eines derartigen Schieberegisters eine kombinatorische Schaltung zu benutzen. Eine solche Schaltung ist dem Fachmann als Barrel-Shifter bekannt. Details einer entsprechenden Schaltung des genannten Bar- rel-Shifters 2_1 sind nachfolgend in Figur 5 gezeigt und beschrieben. Das BitIntroduce bits. The RDY bit values i of the input vector 1_0 are stored in memory units (eg flip-flops), these flip-flops are interconnected as a shift register and the content of this shift register is shifted to the right by CNT positions, taking the right of the shift register The bit values shifted outwards are again fed as input to the shift register on the left (see also FIG. 9, bottom). In order to save hardware, but it is usually cheaper to use a combinatorial circuit instead of such a shift register. Such a circuit is known in the art as a barrel shifter. Details of a corresponding circuit of said barrel shifter 2_1 are shown and described below in FIG. The bit
RDY_rot(0) wird dabei nicht generiert, weil es der gerade bearbeiteten Aufgabe entspricht und deshalb immer gleich 1 sein muss. Der hier dargestellte und im Einsatz sich befindende Barrel-Shifter 2_1 benötigt ca. 640 Gatteräquivalente. Das Ergebnis der oben genannten Rotation ist ein auf den entsprechenden CNT- Wert normalisierter RDY_rot-Vektor 2_3. Die Anzahl der niedrigstwertigsten (Le- ast Significant Bit, LSB) "Nullen" (außer in Position 0) im zu bestimmenden RDY_rot-Vektor zeigt mit seinen Bitwerten an, ob die nächsten zu bearbeitenden Aufgaben aktiv (Bit=1 ) oder passiv (Bit=0) sind. Die beschriebene Rotation mit dem Barrelshifter ist notwendig, weil je nach aktuellem Bearbeitungsstand der Aufgaben (und damit dem Wert von CNT, 5) eine andere Aufgabe die nächste wäre (unabhängig von der Aktivität dieser Aufgabe). Die Bitwerte in RDY_rot (2- 3) zeigen dann an der Stelle 0 (LSB, Least Significant Bit) den Wert des RDY- Bits der gerade bearbeitenden Aufgabe an der Stelle 1 , das RDY-Bit der Aufgabe, die als nächste an der Reihe wäre, das Bit an der Stelle 2, das RDY-Bit der übernächsten Aufgabe und so weiter. RDY_rot (0) is not generated because it corresponds to the task being processed and therefore always has to be 1. The here shown and in use located barrel shifter 2_1 requires about 640 gate equivalents. The result of the above rotation is a RDY_red vector 2_3 normalized to the corresponding CNT value. The number of least significant (LSB) "zeros" (except in position 0) in the one to be determined RDY_rot vector indicates with its bit values whether the next tasks to be processed are active (bit = 1) or passive (bit = 0). The described rotation with the barrel shifter is necessary because depending on the current processing status of the tasks (and thus the value of CNT, 5) another task would be the next one (regardless of the activity of this task). The bit values in RDY_rot (2-3) then show at position 0 (LSB, Least Significant Bit) the value of the RDY bit of the task currently being processed at position 1, the RDY bit of the task next to the row would be the bit at location 2, the RDY bit of the task after next, and so on.
Im Barrel-Shifter 2_1 kann, aufgrund oben genannter Gründe, auf die Bestimmung des Wertes RDY_rot(0) verzichtet werden. Mit Hilfe einer sogenannten First One Detektor Schaltung (FOD) 2_2 wird ermittelt, an welcher niedrigwer- tigsten Stelle im RDY_rot-Vektor eine "1 " steht. Die niedrigwertigste Stelle zeigt ausgehend von der Position 0, welche die gerade in Bearbeitung stehende Aufgabe angibt, die nächste Aufgabe in der vorgegebenen Reihenfolge an, die aktiv ist und demnach als nächstes zu bearbeiten ist. An dieser Stelle sei nochmals betont, dass eine 1 an der Position 0 des RDY_rot-Vektors keine Rolle spielt, weil diese 1 der momentanen abgearbeiteten bzw. sich gerade in Abarbeitung befindenden Aufgabe entspricht und deshalb an dieser Position immer eine 1 stehen muss. Es wird deshalb nur eine 1 oberhalb der Position 0 ermittelt. Die Position wird in dem Wert FOP (First One Position) 2_4 binär kodiert dargestellt. Die Schaltung zur Ermittlung der FOP-Bits ist in Figur 6 gezeigt und benötigt in dieser Realisierung ca. 80 Gatteräquivalente. Eine Beschreibung mittels einer Hardwarebeschreibungssprache ist für diese Schaltung einfach möglich. Die Struktur lässt sich bspw. in VHDL für das Bit FOP (0) (als Signal deklariert) wie folgt beschreiben: In the barrel shifter 2_1, due to the reasons given above, the determination of the value RDY_rot (0) can be dispensed with. With the aid of a so-called first-one detector circuit (FOD) 2_2, it is determined at which lowest point in the RDY_rot vector there is a "1". The least significant digit, starting from the position 0 indicating the task currently being processed, indicates the next task in the given order, which is active and therefore to be processed next. At this point it should be emphasized again that a 1 at the position 0 of the RDY_rot vector does not matter, because this 1 corresponds to the current processed task or is currently being processed and therefore always has to be 1 at this position. It is therefore determined only a 1 above the 0 position. The position is represented in the value FOP (First One Position) 2_4 binary coded. The circuit for determining the FOP bits is shown in FIG. 6 and, in this implementation, requires approximately 80 gate equivalents. A description by means of a hardware description language is easily possible for this circuit. The structure can be described, for example, in VHDL for the bit FOP (0) (declared as a signal) as follows:
IF (RDY_rot(1 )='1 ') THEN FOP(0)<= Ύ; IF (RDY_rot (1) = '1') THEN FOP (0) <= Ύ;
ELSIF (RDY_rot(2)='1 ') THEN FOP(0)<= Ό';  ELSIF (RDY_rot (2) = '1') THEN FOP (0) <= Ό ';
ELSIF (RDY_rot(3)='1 ') THEN FOP(0)<= Ύ;  ELSIF (RDY_rot (3) = '1') THEN FOP (0) <= Ύ;
ELSIF (RDY_rot(4)='1 ') THEN FOP(0)<= Ό"; ELSIF (RDY_rot(15)='1') THEN FOP(0)<= T; ELSIF (RDY_rot (4) = '1') THEN FOP (0) <= Ό "; ELSIF (RDY_rot (15) = ' 1 ' ) THEN FOP (0) <= T;
ELSE FOP(0)<= Ό'; ELSE FOP (0) <= Ό ' ;
END IF;  END IF;
Für das Bit F0P(1) erhält man: For the bit F0P (1) you get:
IF(RDY_rot(1)='1') THEN FOP(1)<= Ό'; ELSIF (RDY_rot(2)='1 ' OR RDY_rot(3)='1') THEN FOP(1)<= Ί'; ELSIF (RDY_rot(4)=T OR RDY_rot(5)='1') THEN FOP(1)<= Ό'; ELSIF (RDY_rot(6)='1'OR RDY_rot(7)='1') THEN FOP(1)<= Ί'; IF (RDY_rot (1) = ' 1 ' ) THEN FOP (1) <= Ό ' ; ELSIF (RDY_rot (2) = ' 1' OR RDY_rot (3) = ' 1 ' ) THEN FOP (1) <= Ί ' ; ELSIF (RDY_rot (4) = T OR RDY_rot (5) = ' 1 ' ) THEN FOP (1) <= Ό ' ; ELSIF (RDY_rot (6) = ' 1 ' OR RDY_rot (7) = ' 1 ' ) THEN FOP (1) <= Ί ' ;
ELSIF (RDY_rot(14)='1'OR RDY_rot(15)='1 ') THEN FOP(1)<= Ί'; ELSE FOP(1)<= Ό'; ELSIF (RDY_rot (14) = ' 1 ' OR RDY_rot (15) = ' 1 ' ) THEN FOP (1) <= Ί ' ; ELSE FOP (1) <= Ό ' ;
END IF;  END IF;
Weiter für F0P(2): Continue for F0P (2):
IF (RDY_rot(1)='1 ' OR IF (RDY_rot (1) = ' 1 ' OR
RDY_rot(2)='1 ' OR RDY__rot(3)='1 ') THEN FOP(2)< ELSIF (RDY_rot(4)='1 ' OR RDY_rot(5)='1 ' OR RDY_red (2) = ' 1 ' OR RDY__rot (3) = ' 1 ' ) THEN FOP (2) <ELSIF (RDY_red (4) = ' 1 ' OR RDY_rot (5) = ' 1 ' OR
RDY_rot(6)='1'OR RDYrot(7)='1') THEN FOP(2)< ELSIF (RDY_rot(8)= OR RDY_rot(9)='1'OR RDY_rot (6) = ' 1 ' OR RDY " red (7) = ' 1 ' ) THEN FOP (2) <ELSIF (RDY_red (8) = OR RDY_rot (9) = ' 1 ' OR
RDY_rot(10)='1 ' OR RDY_rot(11)=Ί ') THEN FOP(2)< ELSIF (RDY_rot(12)='1 ' OR RDY_rot(13)='1 ' OR RDY_rot (10) = ' 1 ' OR RDY_rot (11) = Ί ' ) THEN FOP (2) <ELSIF (RDY_red (12) = ' 1 ' OR RDY_rot (13) = ' 1 ' OR
RDY_rot(14)='1'OR RDY_rot(15)='1 ') THEN FOP(2)< ELSE FOP(2)<= Ό'; RDY_rot (14) = ' 1 ' OR RDY_red (15) = ' 1 ' ) THEN FOP (2) <ELSE FOP (2) <= Ό ' ;
END IF;  END IF;
Für FOP(3):  For FOP (3):
IF (RDY_rot(1)='1'OR IF (RDY_rot (1) = ' 1 ' OR
RDY_rot(2)='1 ' OR RDY_rot(3)='1 ' OR RDY_rot (2) = ' 1 ' OR RDY_rot (3) = ' 1 ' OR
RDY_rot(4)='1 ' OR RDY_rot(5)='1 ' OR RDY_rot (4) = ' 1 ' OR RDY_rot (5) = ' 1 ' OR
RDY_rot(6)='1 ' OR RDY_rot(7)='1 ') THEN FOP(3)<= '0' ELSIF (RDY_rot(8)='1 ' OR RDY_rot(9)='1 ' OR RDY_rot (6) = ' 1 ' OR RDY_red (7) = ' 1 ' ) THEN FOP (3) <= ' 0 ' ELSIF (RDY_red (8) = ' 1 ' OR RDY_rot (9) = ' 1 ' OR
RDY_rot(10)='1'OR RDY_rot(11)='1'OR RDY_rot (10) = ' 1 ' OR RDY_rot (11) = ' 1 ' OR
RDY_rot(12)='1'OR RDY_rot(13)='1'OR RDY_rot (12) = ' 1 ' OR RDY_rot (13) = ' 1 ' OR
RDY_rot(14)='1'OR RDY_rot(15)='1 ') THEN FOP(3)<= Ί'; ELSE FOP(3)<= Ό'; RDY_rot (14) = ' 1 ' OR RDY_rot (15) = ' 1 ' ) THEN FOP (3) <= Ί ' ; ELSE FOP (3) <= Ό ' ;
END IF;  END IF;
und schließlich für FOP(4): and finally for FOP (4):
IF (RDY_rot(1)='1'OR IF (RDY_rot (1) = ' 1 ' OR
RDY_rot(2)='1' OR RDY_rot(3)='1 ' OR RDY_rot (2) = ' 1 ' OR RDY_rot (3) = ' 1 ' OR
RDY_rot(4)='1 ' OR RDY_rot(5)='1 ' OR RDY_rot (4) = ' 1 ' OR RDY_rot (5) = ' 1 ' OR
RDY_rot(6)='1 ' OR RDY_rot(7)='1 ' OR RDY_rot (6) = ' 1 ' OR RDY_rot (7) = ' 1 ' OR
RDY_rot(8)='1 ' OR RDY_rot(9)='1 ' OR RDY_rot (8) = ' 1 ' OR RDY_rot (9) = ' 1 ' OR
RDY_rot(10)='1'OR RDY_rot(11)=Ί' OR  RDY_rot (10) = '1'OR RDY_rot (11) = Ί' OR
RDY_rot(12)='1'OR RDY_rot(13)='1 ' OR RDY_rot (12) = ' 1 ' OR RDY_rot (13) = ' 1 ' OR
RDY_rot(14)= :'1'OR RDY_rot(15)='1') THEN FOP(4)< ELSE FOP(4)<= RDY_ END IF; Der so ermittelte FOP-Vektor 2_4 wird als Binärwert addiert und zu dem momentanen CNT-Wert 5_0, wie in Figur 4 dargestellt, addiert. Der Addierer 2_5 führt bspw. eine Addition modulo 17 durch und benötigt in der Regel ca. 50 Gatteräquivalente. Dazu muss ein Korrekturwert 15 zum Ergebnis addiert werden, im Falle, dass ein Wert größer als 16 als Ergebnis ermittelt wurde. Um den korrigierten new_CNT-Vektor zu erhalten, braucht man ggf. eine zusätzliche Taktphase, sobald ein Überlauf erfolgt. Dazu prüft man nach der Durchführung der Addition von CNT und FOP in einem vorläufigen Ergebnisvektor new_CNT_v, ob das höchstwertige Bit (Most Signifigant Bit, MSB) gleich "1 " ist und noch ein weiteres Bit im Ergebniswert gleich 1 ist und addiert in diesem Wall den Korrekturwert hinzu. Das kann durch folgende Gleichung in der Hardwarebeschreibungssprache VHDL beschrieben werden: RDY_rot (14) = : ' 1 ' OR RDY_rot (15) = ' 1 ' ) THEN FOP (4) <ELSE FOP (4) <= RDY_ END IF; The thus determined FOP vector 2_4 is added as a binary value and added to the current CNT value 5_0, as shown in FIG. The adder 2_5 performs, for example, an addition modulo 17 and usually requires about 50 gate equivalents. For this, a correction value 15 must be added to the result, in the event that a value greater than 16 was determined as the result. In order to obtain the corrected new_CNT vector, one may need an additional clock phase as soon as an overflow occurs. For this purpose, after performing the addition of CNT and FOP in a preliminary result vector new_CNT_v, it is checked whether the Most Significant Bit (MSB) is equal to "1" and another bit in the result value is equal to 1 and adds in this wall the Add correction value. This can be described by the following equation in the hardware description language VHDL:
IF (new_CNT_v(16)='1 ' AND (new_CNT_v(15)='1 ' OR new_CNT_v(14)='1 ' OR new_CNT_v(13)='1 ' OR new_CNT_v(12)='1 ' OR ... OR new_CNT_v(0)='1 ')IF (new_CNT_v (16) = '1' AND (new_CNT_v (15) = '1' OR new_CNT_v (14) = '1' OR new_CNT_v (13) = '1' OR new_CNT_v (12) = '1' OR .. OR new_CNT_v (0) = '1')
THEN new_CNT <= new_CNT_v + 15; THEN new_CNT <= new_CNT_v + 15;
ELSE new_CNT <= new_CNT_v; ELSE new_CNT <= new_CNT_v;
Es ist jedoch auch möglich, einen zusätzlichen Addierer 7_2 mit dem entsprechenden Korrekturwert dem ersten Addierer 2_5 nachzuschalten, wie dies als alternative Ausführungsform in Figur 7 gezeigt ist, wobei hier lediglich ein Ausschnitt des Auswahlnetzwerks 2_0 gezeigt ist. Dazu wird der Addierer 7_2 entweder mit 15 (OxF) für den Fall eines Überlaufs 7_4 (OV=Overflow) oder mit 0(0x0) im Falle eines Wertes kleiner oder gleich 16 beaufschlagt. Dabei kann geeigneterweise eine Schaltung 7_5 eingesetzt werden, die vorausschauend einen Überlauf 7_4 erkennt (Overflow-Look-Ahead, OLA). Eine derartige Schaltung ist nachfolgend mittels Tabelle 1 und den ebenfalls nachfolgend beschriebenen Booleschen Gleichungen beschrieben: However, it is also possible to connect an additional adder 7_2 with the corresponding correction value to the first adder 2_5, as shown as an alternative embodiment in FIG. 7, only a section of the selection network 2_0 being shown here. For this purpose, the adder 7_2 is supplied either with 15 (OxF) in the event of an overflow 7_4 (OV = Overflow) or with 0 (0x0) in the case of a value less than or equal to 16. In this case, it is suitably possible to use a circuit 7_5, which anticipates an overflow 7_4 (overflow look ahead, OLA). Such a circuit is described below by means of Table 1 and the Boolean equations also described below:
CNT-Wert FOP-Wert OV FOP-Wert OV CNT value FOP value OV FOP value OV
16 >1 1 0 0  16> 1 1 0 0
15 >2 1 <1 0  15> 2 1 <1 0
14 >3 1 <2 0  14> 3 1 <2 0
13 >4 1 <3 0  13> 4 1 <3 0
12 >5 1 <4 0  12> 5 1 <4 0
11 >6 1 <5 0  11> 6 1 <5 0
10 >7 1 <6 0  10> 7 1 <6 0
9 >8 1 <7 0  9> 8 1 <7 0
8 >9 1 <8 0  8> 9 1 <8 0
7 >10 1 <9 0  7> 10 1 <9 0
6 >1 1 1 <10 0  6> 1 1 1 <10 0
5 >12 1 <1 1 0  5> 12 1 <1 1 0
4 >13 1 <12 0  4> 13 1 <12 0
3 >14 1 <13 0  3> 14 1 <13 0
2 >15 1 <14 0  2> 15 1 <14 0
1 16 1 <15 0  1 16 1 <15 0
0 - 0 - 0  0 - 0 - 0
Tabelle 1 : Wertetabelle für OV Table 1: Value table for OV
In Figur 7 sind dem CNT-Wert das Bezugszeichen 7_6, dem FOP-Wert das Be- zugszeichen 7_8, dem neuen new_CNT-Vektor das Bezugszeichen 7_10 und dem vorläufigen Ergebnisvektor new_CNT_v das Bezugszeichen 7_1 1 zugeordnet. In FIG. 7, the reference numeral 7_6 is assigned to the CNT value, the reference numeral 7_8 to the FOP value, the reference numeral 7_10 to the new new_CNT vector, and the reference numeral 7_1 to the provisional result vector new_CNT_v.
Boolesche Gleichung für OV in direkter Umsetzung der Tabelle 1 mit Λ = Konjunktion und v = Disjunktion: Boolean equation for OV in direct implementation of Table 1 with Λ = conjunction and v = disjunction:
CNT(4) Λ (FOP(4) v FOP(3) v FOP(2) v FOP(1 ) v FOP(0) ) v CNT (4) Λ (FOP (4) v FOP (3) v FOP (2) v FOP (1) v FOP (0)) v
CNT(3 Λ CNT(2) Λ CNT(1 ) Λ CNT(0) Λ (FOP(4) v FOP(3) v FOP(2) v FOP(1 ) ) v CNT(3 Λ CNT(2) Λ CNT(1 ) Λ (FOP(4) v FOP(3) v FOP(2) v (FOP(1 ) Λ FOP(0)) ) v CNT(3 Λ CNT(2) Λ CNT(0) Λ (FOP(4) v FOP(3) v FOP(2) ) v CNT (3 Λ CNT (2) Λ CNT (1) Λ CNT (0) Λ (FOP (4) v FOP (3) v FOP (2) v FOP (1)) v CNT (3 Λ CNT (2) Λ CNT (1) Λ (FOP (4) v FOP (3) v FOP (2) v (FOP (1) Λ FOP (0))) v CNT (3 Λ CNT (2) Λ CNT (0) Λ (FOP (4) v FOP (3) v FOP (2)) v
CNT(3 Λ CNT(2) Λ (FOP(4) v FOP(3) v (FOP(2) Λ (FOP(1 ) v FOP(0))) ) v CNT (3 Λ CNT (2) Λ (FOP (4) v FOP (3) v (FOP (2) Λ (FOP (1) v FOP (0)))) v
CNT(3 Λ CNT(1 ) Λ CNT(0) Λ (FOP(4) v FOP(3) v (FOP(2) Λ FOP(1 )) ) v CNT (3 Λ CNT (1) Λ CNT (0) Λ (FOP (4) v FOP (3) v (FOP (2) Λ FOP (1))) v
CNT(3 Λ CNT(1) Λ (FOP(4) v FOP(3) v (FOP(2) Λ FOP(1 ) Λ FOP(0)) ) v CNT (3 Λ CNT (1) Λ (FOP (4) v FOP (3) v (FOP (2) Λ FOP (1) Λ FOP (0))) v
CNT(3 Λ CNT(0) Λ (FOP(4) v FOP(3) ) v CNT (3 Λ CNT (0) Λ (FOP (4) v FOP (3)) v
CNT(3 (FOP(4) v FOP(3) Λ (FOP(2) v FOP(1 ) v FOP(0) ) v CNT (3 (FOP (4) v FOP (3) Λ (FOP (2) v FOP (1) v FOP (0)) v
CNT(2 CNT(1 ) Λ CNT(0) Λ (FOP(4) v FOP(3) Λ (FOP(2) v FOP(1 )) v CNT (2 CNT (1) Λ CNT (0) Λ (FOP (4) v FOP (3) Λ (FOP (2) v FOP (1)) v
CNT(2 CNT(1 ) Λ (FOP(4) v FOP(3) Λ (FOP(2) v (FOP(1 ) Λ FOP(0))) )v CNT (2 CNT (1) Λ (FOP (4) v FOP (3) Λ (FOP (2) v (FOP (1) Λ FOP (0)))) v
CNT(2 CNT(0) Λ (FOP(4) v (FOP(3) Λ FOP(2)) ) v CNT (2 CNT (0) Λ (FOP (4) v (FOP (3) Λ FOP (2))) v
CNT(2 (FOP(4) v (FOP(3) Λ FOP(2) Λ (FOP(1 ) v FOP(0))) ) v CNT (2 (FOP (4) v (FOP (3) Λ FOP (2) Λ (FOP (1) v FOP (0)))) v
CNT(1 CNT(0) Λ (FOP(4) v (FOP(3) Λ FOP(2) Λ FOP(1 )) ) v CNT (1 CNT (0) Λ (FOP (4) v (FOP (3) Λ FOP (2) Λ FOP (1))) v
CNT(1 (FOP(4) v (FOP(3) Λ FOP(2) Λ FOP(1 ) Λ FOP(0)) ) v CNT (1 (FOP (4) v (FOP (3) Λ FOP (2) Λ FOP (1) Λ FOP (0))) v
CNT(0 FOP(4) Diese Booleschen Gleichung bietet noch Optimierungspotenzial bei der Compi- lierung und wird mit ca. 50 Gatteräquivalenten Realisierungsaufwand abgeschätzt. CNT (0 FOP (4) This Boolean equation still offers optimization potential for the compilation and is estimated with approx. 50 gate equivalent implementation costs.
Es ist anzumerken, dass der Gesamtaufwand der erfindungsgemäß vorgeschlagenen Schaltungsanordnung, wie sie als mögliche Ausführungsform in Figur 4 dargestellt ist, mit ca. 900 Gatteräquivalenten in einem Bereich liegt, der die damit einhergehende Hardwareeinsparung, die durch das bereitgestellte Multitas- king erzielt wird, nicht übertrifft. Mit der erfindungsgemäß vorgesehenen Schaltungsanordnung wird gewährleistet, dass die Latenzzeit zur Bearbeitung der Aufgaben verkürzt wird, wenn nicht alle Aufgaben gleichzeitig eine Anforderung an die zentrale Verarbeitungseinheit stellen. Ferner ist es möglich, dass die CNT- und new_CNT-Werte 7_6, 7_10 vorausschauend berechnet werden. Dazu kann eine zusätzliche Pipeline-Stufe vorgesehen werden, die den CNT-Wert 7_6 erst einen Takt später für die Aufgaben bzw. Kanal-Auswahl wirksam werden lässt. Dazu wird CNT um einen Takt verzögert in old_CNT gespeichert und dieser Wert bestimmt die Auswahl der aktuel- len Aufgabe, wie dies beispielhaft in Figur 8 dargestellt ist. It should be noted that the total cost of the proposed circuit arrangement according to the invention, as shown as a possible embodiment in Figure 4, with approximately 900 gate equivalents in a range that does not the associated hardware savings, which is achieved by the provided Multitask- king surpasses. The circuit arrangement provided according to the invention ensures that the latency for processing the tasks is shortened if not all tasks simultaneously make a request to the central processing unit. Furthermore, it is possible that the CNT and new_CNT values 7_6, 7_10 are calculated in a forward-looking manner. For this purpose, an additional pipeline stage can be provided, which allows the CNT value 7_6 to take effect one clock later for the tasks or channel selection. For this purpose, CNT is delayed by one clock stored in old_CNT and this value determines the selection of the current task, as shown by way of example in Figure 8.
In Figur 8 werden wiederum für gleiche Vorgänge bzw. Einheiten gleiche Bezugszeichen wie in den voranstehend beschriebenen Ausführungsformen der Figuren 3, 4 und 7 verwendet. Im Signal 3_1 wird hier allerdings als new_CNT 7_10 die übernächste abzuarbeitende Aufgabe angezeigt, was einer entsprechenden Flip-Flop Schaltung 4_1 zugeführt wird. Im Signal 5_1 wird als CNT- Wert 7_6 die nächste abzuarbeitende Aufgabe angezeigt, was wiederum dann dem Auswahl-Netzwerk 2_0 zugeführt wird und über eine Flip-Flop Schaltung 4_2 auch in old_CNT 6_0 dann als aktuell abzuarbeitende Aufgabe angezeigt wird. In FIG. 8, the same reference numerals are again used for identical processes or units as in the previously described embodiments of FIGS. 3, 4 and 7. In the signal 3_1, however, the next but one task to be processed is displayed here as new_CNT 7_10, which is fed to a corresponding flip-flop circuit 4_1. In the signal 5_1, the next task to be processed is displayed as CNT value 7_6, which in turn is then fed to the selection network 2_0 and is then displayed via a flip-flop circuit 4_2 in old_CNT 6_0 as a task to be processed currently.
In einer weiteren möglichen Ausgestaltung der erfindungsgemäß vorgeschlagenen Schaltungsanordnung kann alternativ zu dem in Figur 5 dargestellten Barrel- Shifter auch ein Register mit 17 Bits eingesetzt werden, das entsprechend der CNT-Werte rotiert, wie dies in Figur 9 gezeigt ist. Eine Einspeisung der RDYi-In a further possible embodiment of the circuit arrangement proposed according to the invention, as an alternative to the barrel shifter shown in FIG. 5, a register with 17 bits which rotates in accordance with the CNT values can also be used, as shown in FIG. An infeed of the RDYi
Werte in dieses Register erfolgt dabei an einer festgelegten Position, in Figur 9 ist dies die Position 0, und je nach Rotationszustand wird das entsprechende RDYi-Bit an dieser Position gespeichert. Diese Ausführungsform der erfindungsgemäß vorgeschlagenen Schaltungsanordnung erfordert mit ca. 200 Gatteräquivalenten einen wesentlich geringeren Hardwareaufwand als der in Figur 5 darge- stellte Barrel-Shifter. Dabei ist jedoch zu beachten, dass die RDY-Signale erst nach einer zusätzlichen Latenzzeit, aufgrund einer Rotation des Registers, berücksichtigt werden können. Ferner ist zu beachten, dass beim Überspringen mehrerer Aufgaben durch das damit einhergehende Erhöhen des CNT-Wertes um mehr als 1 eine Rotation in mehreren Takten vorgenommen werden muss. Eine entsprechend vorausschauende Berechnung in Form eines Pipelining in mehreren Stufen erhöht dabei die Latenzzeit nochmals. Values in this register take place at a fixed position, in FIG. 9 this is position 0, and depending on the rotation state, the corresponding RDYi bit is stored at that position. This embodiment of the circuit arrangement proposed according to the invention requires, with approximately 200 gate equivalents, a significantly lower hardware outlay than the barrel shifter illustrated in FIG. However, it should be noted that the RDY signals can only be taken into account after an additional latency due to a rotation of the register. Furthermore, it should be noted that when several tasks are skipped due to the associated increase in the CNT value by more than 1, rotation must take place in several cycles. A correspondingly forward-looking calculation in the form of pipelining in several stages increases the latency time again.
Es sei ferner angemerkt, dass man die Priorisierung, wie voranstehend beschrieben, auch ausschalten kann, indem jede Aufgabe eine Abarbeitungszeit zugeteilt wird, unabhängig von einer Bearbeitungsanforderung. Dazu ist FOD auf denIt should also be noted that the prioritization, as described above, can also be switched off by assigning each task a processing time, irrespective of a processing request. This is FOD on the
Wert 0x002, 0x003, ... oder OxFFF zu setzen, unabhängig von den Werten RDY_rot. Das bewirkt, dass zumindest die nächste Aufgabe aktiv gesetzt ist (Bit 1 =1 ). Value 0x002, 0x003, ... or set OxFFF, regardless of the values RDY_rot. This causes at least the next task to be active (bit 1 = 1).

Claims

R. 331301 2011/120812 PCT/EP2011/054014 - 21 - Ansprüche R. 331301 2011/120812 PCT / EP2011 / 054014 - 21 - Claims
1 . Schaltungsanordnung für ein datenverarbeitendes System zur Abarbeitung von mehreren Aufgaben mittels einer zentralen Verarbeitungseinheit (10) mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei die Schaltungsanordnung (100) dazu konfiguriert ist, den jeweiligen Aufgaben die Verarbeitungseinheit (10) zur Verarbeitung zeitlich versetzt zuzuordnen, zu steuern, dass die Aufgaben in einer vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden. 1 . Circuit arrangement for a data processing system for processing a plurality of tasks by means of a central processing unit (10) having a processing capacity associated with the processing unit, wherein the circuitry (100) is configured to assign to the respective tasks, the processing unit (10) offset for processing that the tasks are edited in a predefined order, and that tasks without a current edit request are skipped in the order in which they are edited.
2. Schaltungsanordnung nach Anspruch 1 , wobei die Schaltungsanordnung 2. Circuit arrangement according to claim 1, wherein the circuit arrangement
(100) ferner dazu konfiguriert ist, jeder der Aufgaben jeweils einen Kanal mit eigenen Registern zuzuteilen und die jeweiligen Register entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit (10) auszuwählen und mit der Verarbeitungseinheit (10) zu verbinden.  (100) is further configured to each assign a channel with its own registers to each of the tasks and to select the respective registers according to the assignment of the respective task to the processing unit (10) and to connect them to the processing unit (10).
3. Schaltungsanordnung nach einem der Ansprüche 1 oder 2, wobei die Schaltungsanordnung (100) ferner dazu konfiguriert ist, die Verarbeitungseinheit (10) jeder der Aufgaben mit aktueller Bearbeitungsanforderung jeweils für eine konstante und für alle aktiven Aufgaben gleiche Zeitdauer zuzuordnen. 3. Circuit arrangement according to claim 1, wherein the circuit arrangement is further configured to associate the processing unit with each of the current processing request tasks for a constant time duration that is the same for all active tasks.
4. Schaltungsanordnung nach Anspruch 3, wobei die Zeitdauer einem Takt eines Takt-Zyklus der Verarbeitungseinheit (10) entspricht. 4. A circuit arrangement according to claim 3, wherein the time period corresponds to a clock of a clock cycle of the processing unit (10).
5. Schaltungsanordnung nach einem der Ansprüche 2 bis 4, wobei die Schaltungsanordnung (100) ferner dazu konfiguriert ist, eine Abarbeitung von Befehlen der jeweiligen Register der jeweiligen Kanäle der Aufgaben mit aktueller Bearbeitungsanforderung als aktiven Aufgaben in einer Pipeline mit mehreren Pipeline-Stufen vorzusehen, wobei die jeweiligen Register zum Zeitpunkt der Abarbeitung in entsprechend getaktete Pipeline-Register der Pipeline umgeschaltet werden und die Pipeline-Stufen in einem Zeitabschnitt parallel, aber jeweils für verschiedene Kanäle verarbeitet werden. R. 331301 5. Circuitry according to claim 2, wherein the circuit arrangement is further configured to provide execution of commands of the respective registers of the respective channels of the tasks with current processing request as active tasks in a pipeline with multiple pipeline stages, wherein the respective registers are switched at the time of processing into correspondingly clocked pipeline registers of the pipeline and the pipeline stages are processed in parallel in a time period, but in each case for different channels. R. 331301
2011/120812 PCT/EP2011/054014  2011/120812 PCT / EP2011 / 054014
- 22 -  - 22 -
6. Schaltungsanordnung nach Anspruch 5, wobei Befehlsdekodierung und 6. Circuit arrangement according to claim 5, wherein instruction decoding and
Speicherzugriffe für eine erste aktive Aufgabe jeweils in Zeitabschnitten erfolgen, in welchen mindestens einer zweiten aktiven Aufgabe die Verarbeitungseinheit zugeordnet ist.  Memory accesses for a first active task in each case take place in time segments in which at least one second active task is assigned to the processing unit.
7. Schaltungsanordnung nach einem der voranstehenden Ansprüche, wobei 7. Circuit arrangement according to one of the preceding claims, wherein
eine Berechnung der Zuordnung einer einer aktuell in Verarbeitung befindlichen Aufgabe nachfolgenden Aufgabe in Abhängigkeit davon erfolgt, welche die aktuell in Verarbeitung befindliche Aufgabe ist und welche Aufgaben zum Berechnungszeitpunkt eine Bearbeitungsanforderung stellen.  a calculation is made of the assignment of a task following a task currently being processed as a function of this, which is the task currently being processed and which tasks make a machining request at the time of calculation.
8. Schaltungsanordnung nach Anspruch 7, wobei die Berechnung der Zuordnung der entsprechend nachfolgenden Aufgabe vorausschauend mittels Pi- pelinening erfolgt. 8. Circuit arrangement according to claim 7, wherein the calculation of the assignment of the corresponding subsequent task is carried out by means of predictive Pelinening.
9. Verfahren zur Abarbeitung von mehreren Aufgaben in einem datenverarbeitenden System mittels einer zentralen Verarbeitungseinheit mit einer der Verarbeitungseinheit zugeordneten Verarbeitungskapazität, wobei den jeweiligen Aufgaben die Verarbeitungseinheit zur Verarbeitung zeitlich versetzt zugeordnet wird, die Aufgaben in einer vorzugebenden Reihenfolge bearbeitet und Aufgaben ohne aktuelle Bearbeitungsanforderung in der Reihenfolge bei der Bearbeitung übersprungen werden. 9. A method for processing a plurality of tasks in a data processing system by means of a central processing unit having a processing unit associated processing capacity, wherein the processing unit is allocated to the respective tasks for processing offset, the tasks processed in a predetermined order and tasks without current processing requirement in the Sequence to be skipped during editing.
10. Verfahren nach Anspruch 9, wobei jeder der Aufgaben jeweils ein Kanal mit eigenen Registern zugeteilt wird und die jeweiligen Register entsprechend der Zuordnung der jeweiligen Aufgabe zu der Verarbeitungseinheit ausgewählt und mit der Verarbeitungseinheit verbunden werden. 10. The method of claim 9, wherein each of the tasks is assigned a channel with its own registers and the respective registers are selected according to the assignment of the respective task to the processing unit and connected to the processing unit.
PCT/EP2011/054014 2010-03-31 2011-03-17 Cyclic priority change during data processing WO2011120812A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102010003565.3 2010-03-31
DE201010003565 DE102010003565A1 (en) 2010-03-31 2010-03-31 Cyclic prioritization change in a data processing

Publications (1)

Publication Number Publication Date
WO2011120812A1 true WO2011120812A1 (en) 2011-10-06

Family

ID=44123387

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2011/054014 WO2011120812A1 (en) 2010-03-31 2011-03-17 Cyclic priority change during data processing

Country Status (2)

Country Link
DE (1) DE102010003565A1 (en)
WO (1) WO2011120812A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0947926A2 (en) * 1998-04-03 1999-10-06 MMC Networks, Inc. System and method for multi-tasking, resource sharing, and execution of computer instructions
US20030046517A1 (en) * 2001-09-04 2003-03-06 Lauterbach Gary R. Apparatus to facilitate multithreading in a computer processor pipeline
US20060136915A1 (en) * 2004-12-17 2006-06-22 Sun Microsystems, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0947926A2 (en) * 1998-04-03 1999-10-06 MMC Networks, Inc. System and method for multi-tasking, resource sharing, and execution of computer instructions
US20030046517A1 (en) * 2001-09-04 2003-03-06 Lauterbach Gary R. Apparatus to facilitate multithreading in a computer processor pipeline
US20060136915A1 (en) * 2004-12-17 2006-06-22 Sun Microsystems, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline

Also Published As

Publication number Publication date
DE102010003565A1 (en) 2011-10-06

Similar Documents

Publication Publication Date Title
DE2430127C2 (en) Device for controlling the memory access of competing users
DE2411963C3 (en) Electronic data processing system with a priority control circuit with changeable control blocks
EP3077912B1 (en) Control device for a motor vehicle
EP1146432A2 (en) Reconfiguration method for programmable components during runtime
DE102013014169A1 (en) Dynamically variable circular buffers
EP3417373A1 (en) Method and device for operating a controller
EP2541348B1 (en) Method and programming system for programming an automation component
DE102018202446A1 (en) Method for modularizing a software architecture
DE202004021684U1 (en) Devices and devices for use in scheduling
DE102010003512A1 (en) Shared central processing of data
WO2011063869A1 (en) Method for enabling sequential, non-blocking processing of statements in concurrent tasks in a control device
DE102004009610B4 (en) Heterogeneous Parallel Multithreaded Processor (HPMT) with Shared Contexts
DE102011083468A1 (en) Circuit arrangement for scheduling in a data processing
DE112004002368T5 (en) Processor and method for supporting compiler-directed multi-threading management
WO2011120812A1 (en) Cyclic priority change during data processing
EP4016296A1 (en) Vehicle control apparatus with synchronous driver
EP1770521B1 (en) Multiprocessor architecture and method for controlling memory access in a multiprocessor architecture
EP1917587B1 (en) Method and device for controlling a computer system
DE19827914C1 (en) Application specific integrated circuit for processing defined sequences of assembly commands
DE102016210345A1 (en) Method for processing a plurality of tasks in a data processing system with shared central data processing
DE102016210432A1 (en) Method for processing a plurality of tasks in a data processing system with shared central data processing
DE102013217616B4 (en) Managing resources within a computing environment
WO2024074295A1 (en) Method for statically allocating and assigning information to memory areas, information technology system and vehicle
DE202012104250U1 (en) Central processing unit with pipeline registers combined into a bank
EP3901780A1 (en) Digital circuit and method for configuring at least one configurable hardware component

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11710167

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 11710167

Country of ref document: EP

Kind code of ref document: A1