DE102006052012A1 - Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes - Google Patents

Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes Download PDF

Info

Publication number
DE102006052012A1
DE102006052012A1 DE200610052012 DE102006052012A DE102006052012A1 DE 102006052012 A1 DE102006052012 A1 DE 102006052012A1 DE 200610052012 DE200610052012 DE 200610052012 DE 102006052012 A DE102006052012 A DE 102006052012A DE 102006052012 A1 DE102006052012 A1 DE 102006052012A1
Authority
DE
Germany
Prior art keywords
processing processes
data processing
processes
processors
new data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE200610052012
Other languages
German (de)
Inventor
Achim Degenhardt
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE200610052012 priority Critical patent/DE102006052012A1/en
Publication of DE102006052012A1 publication Critical patent/DE102006052012A1/en
Ceased legal-status Critical Current

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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

The method involves examining whether previous data processing processes (6, 9) are terminated in processors (PU1, PU2), and starting new data processing processes on the processors when the previous data processing processes are terminated. The new data processing processes are started, if sufficient data (D, F) lie for the new data processing processes, and input processes (5, 8) and/or output processes (7, 10) are controlled. The starting of the new data processing processes are slowed, if the previous data processing processes are not yet terminated. An independent claim is also included for a device for synchronizing a set of processors.

Description

Die vorliegende Erfindung betrifft Synchronisationsverfahren und Synchronisationsvorrichtungen für Multiprozessorsysteme.The The present invention relates to synchronization methods and synchronization devices for multiprocessor systems.

Synchronisationsverfahren sind beispielsweise aus der US 5,448,732 oder aus R. DeMara et al., „Capability Classes of Barrier Synchronization Techniques" , bekannt.Synchronization methods are for example from US 5,448,732 or off R. DeMara et al., "Capability Classes of Barrier Synchronization Techniques" , known.

Diesbezüglich stellt die vorliegende Erfindung Synchronisationsverfahren nach Anspruch 1 und 9 und Synchronisationsvorrichtungen nach Anspruch 15 und 23 bereit. Die abhängigen Ansprüche definieren weitere Ausführungsbeispiele der Synchronisationsverfahren bzw. der Synchronisationsvorrichtungen.In this regard the present invention synchronization method according to claim 1 and 9 and synchronization devices according to claims 15 and 23 ready. The dependent ones claims define further embodiments the synchronization method or the synchronization devices.

Bei einem Ausführungsbeispiel eines Synchronisationsverfahrens wird überprüft, ob Eingangsdaten vorliegen, und überprüft, ob vorherige Prozesse beendet sind. Ist dies der Fall, werden neue Prozesse gestartet.at an embodiment a synchronization procedure checks whether input data is present, and checks if previous Processes are finished. If this is the case, new processes are started.

Die Erfindung wird nachfolgend unter Bezugnahme auf die beigefügte Zeichnung anhand von Ausführungsbeispielen näher erläutert. Es zeigen:The Invention will now be described with reference to the accompanying drawings based on embodiments explained in more detail. It demonstrate:

1 ein Diagramm zur Veranschaulichung der Verarbeitung von Daten auf einem Prozessor, 1 a diagram illustrating the processing of data on a processor,

2 ein Diagramm zur Veranschaulichung der Verarbeitung von Daten auf zwei parallelen Prozessoren, 2 a diagram illustrating the processing of data on two parallel processors,

3 ein Diagramm zur Veranschaulichung der Daten auf zwei parallelen Prozessoren, wobei eine Echtzeitverletzung auftritt, 3 a diagram to illustrate the data on two parallel processors, where a real-time injury occurs,

4 ein Blockdiagramm eines Ausführungsbeispiels einer erfindungsgemäßen Vorrichtung, und 4 a block diagram of an embodiment of a device according to the invention, and

5 ein Flussdiagramm eines Ausführungsbeispiels eines erfindungsgemäßen Verfahrens. 5 a flowchart of an embodiment of a method according to the invention.

Im Folgenden werden Ausführungsbeispiele der vorliegenden Erfindung näher erläutert. Dabei werden zunächst unter Bezugnahme auf 13 in der dann folgenden Beschreibung der Ausführungsbeispiele verwendete Begriffe erläutert und definiert.In the following, embodiments of the present invention will be explained in more detail. It will be initially with reference to 1 - 3 in the then following description of the embodiments used terms and explained.

In 1 sind dabei Prozesse P1 und P2 dargestellt, welche zeitlich hintereinander auf einem Prozessor zur Verarbeitung von Daten ablaufen. Dabei verarbeitet der Prozess P1 Daten D1 und D2 und der Prozess P2 Daten D3 und D4, während Daten D4 und D5 von einem weiteren nicht dargestellten Prozess P3 verarbeitet werden. Die Daten D1–D6 werden dabei periodisch aus einer Eingabeschnittstelle gelesen, wobei die Periodizität bzw. der Abstand, mit welchem die Daten gelesen werden, mit T bezeichnet ist. Die Daten D1–D6 können dabei beispielsweise als Datenpakete, Bytes, Bits oder in anderer Form vorliegen.In 1 In this case, processes P1 and P2 are shown which run consecutively on a processor for processing data. In this case, process P1 processes data D1 and D2 and process P2 processes data D3 and D4, while data D4 and D5 are processed by another process P3, not shown. The data D1-D6 are periodically read from an input interface, wherein the periodicity or the distance at which the data is read, T is designated. The data D1-D6 can be present for example as data packets, bytes, bits or in another form.

Bei manchen Anwendungen werden die Daten D1–D6 nicht sofort verarbeitet, sondern es wird eine vorgegebene Anzahl von Daten gesammelt, welche dann blockweise verarbeitet werden. Die Daten eines derartigen Datenblocks werden auch als „Frame" bezeichnet. In 1 sind Frames F1–F3 dargestellt, welche jeweils zwei der Daten D1–D6 zusammenfassen. Im dargestellten Beispiel werden also immer zwei Daten gesammelt und dann block- bzw. frameweise verarbeitet. Selbstverständlich kann die Anzahl von Daten in einem Frame wesentlich höher als zwei sein, beispielsweise N = 8 oder N = 50.In some applications, the data D1-D6 are not processed immediately, but a predetermined number of data are collected, which are then processed in blocks. The data of such a data block is also referred to as "frame." 1 Frames F1-F3 are shown, each of which summarizes two of the data D1-D6. In the example shown, two data are always collected and then processed in block or frame fashion. Of course, the number of data in a frame may be substantially higher than two, for example N = 8 or N = 50.

Wie in 1 zu sehen, treffen zunächst die Daten D1 und D2, d.h. der Frame F1 ein. Nachdem der Frame F1 vorliegt, wird der Prozess P1 gestartet, um die Daten D1 und D2 zu verarbei ten. Währenddessen treffen die Daten D3 und D4 ein und werden, nachdem somit der Frame F2 vollständig vorliegt, durch den Prozess P2 verarbeitet, wobei gegebenenfalls auch Ergebnisse des Prozesses P1 verwendet werden. Währenddessen treffen Daten D5 und D6 für den folgenden Prozess P3 (nicht dargestellt) ein. Die Prozesse P1 und P2 müssen dabei keine grundlegend verschiedenen Prozesse sein, sondern können auch auf demselben Programmcode basieren, wobei wie beschrieben der Prozess P1 die Daten D1 und D2 und der Prozess P2 die Daten D3 und D4 verarbeitet.As in 1 to see first, the data D1 and D2, ie the frame F1. After the frame F1 is present, the process P1 is started to process the data D1 and D2. Meanwhile, the data D3 and D4 arrive and, after the frame F2 is complete, are processed by the process P2, possibly also Results of the process P1 can be used. Meanwhile, data D5 and D6 arrive for the following process P3 (not shown). The processes P1 and P2 need not be fundamentally different processes, but may also be based on the same program code, where as described the process P1 processes the data D1 and D2 and the process P2 processes the data D3 and D4.

Bei Systemen, bei denen Daten in Echtzeit verarbeitet werden, darf ein Prozess zur Verarbeitung des Frames bzw. der entsprechenden Daten maximal N × T dauern, wobei N die Anzahl der Daten in einem Frame ist, in dem in 1 dargestellten Beispiel zwei. Andernfalls würden sich die Daten vor einem entsprechenden Prozess „aufstauen" und daher eine Echtzeitverarbeitung nicht mehr gewährleistet sein.For systems that process data in real time, a process for processing the frame or data must not exceed N × T, where N is the number of data in a frame is in that in 1 illustrated example two. Otherwise, the data would "pile up" before a corresponding process and therefore real-time processing would no longer be guaranteed.

In dem dargestellten Beispiel werden also nacheinander zwei Daten in einem Puffer gesammelt und, sobald die Daten im Puffer sind, die Daten verarbeitet. Das Sammeln und die Verarbeitung der zuletzt angesammelten Daten erfolgt dabei wie oben erläutert parallel. Eine mögliche Realisierung hierfür ist es, die Prozesse P1, P2 durch einen Interrupt zu unterbrechen und innerhalb des Interrupts dann das jeweilige Datum von der Eingabeschnittstelle zu lesen und in einen Puffer zu schreiben. Alternativ ist es auch möglich, dass bereits die Eingabeschnittstelle die Daten blockorientiert verarbeitet und der jeweilige Prozessor mit einer Periodizität von N × T die Daten aus der Eingabeschnittstelle ausliest.In Thus, in the example shown, two data are successively entered in a buffer and, as soon as the data is in the buffer, the Data processed. Collecting and processing the last Accumulated data takes place in parallel as explained above. A possible realization therefor is to interrupt the processes P1, P2 by an interrupt and within the interrupt then the respective date from the input interface to read and write to a buffer. Alternatively it is possible, that already the input interface block-oriented the data processed and the respective processor with a periodicity of N × T the Read out data from the input interface.

Wie bereits bemerkt, muss für eine Echtzeitverarbeitung jeder Prozess alle Daten, d.h. den jeweiligen zur Bearbeitung vorgesehenen Frame, innerhalb der Zeit N × T, in diesem Fall 2T, verarbeiten. Dabei können Prozesse, wie in 1 angedeutet, verschieden lang sein, und es ist ohne Verletzung der Echt zeit möglich, dass die Dauer eines Prozesses kürzer als N × T ist.As already noted, for real-time processing, each process must have all the data, ie the particular frame to be processed, within the time N × T, in this case 2T , to process. It can process, as in 1 indicated, be different in length, and it is possible without violating the real time that the duration of a process is shorter than N × T.

Ist die Dauer eines Prozesses länger als T (aber kürzer als N × T), sind entsprechende Zwischenspeicher nötig, um die Daten während der Verarbeitung zwischenzuspeichern, so dass in dem oben erwähnten Puffer ausreichend Platz für die aus der Eingangsschnittstelle einzulesenden Daten ist.is the duration of a process longer as T (but shorter as N × T), are appropriate buffers necessary to store the data during the Cache processing so that in the above-mentioned buffer enough space for is the data to be read from the input interface.

Reicht die Leistung des Prozessors, auf welchem die Prozesse P1 und P2 laufen, nicht aus, um die anfallenden Daten in der erforderlichen Zeit zu verarbeiten, können Multiprozessorsysteme verwendet werden.Enough the performance of the processor on which the processes P1 and P2 do not run out, in order to get the data in the required Time to process Multiprocessor systems are used.

Bei derartigen Multiprozessorsystemen sind mehrere Prozessoren vorgesehen, welche zeitlich parallel Daten verarbeiten. Diese Situation ist in 2 schematisch dargestellt. Dabei ist in der oberen Hälfte der 2 die Verarbeitung von Daten, von denen Daten D1–D6 dargestellt sind, in Prozessen, von denen Prozesse P1 und P2 dargestellt sind, auf einem ersten Prozessor PU1 dargestellt, wobei die Daten wie in 1 zu Frames F1, F2 und F3 zusammengefasst werden. Zusätzlich werden parallel hierzu weitere Daten, von denen Daten D1'–D6' dargestellt sind, welche zu Frames F1'–F3' zusammengefasst sind, in weiteren Prozessen, von denen Prozesse P1' und P2' dargestellt sind, auf einem zweiten Prozessor PU2 verarbeitet. Die Verarbeitung erfolgt dabei für jeden Prozessor PU1, PU2 für sich genommen wie bereits unter Bezugnahme auf 1 beschrieben.In such multiprocessor systems, a plurality of processors are provided, which process data in parallel over time. This situation is in 2 shown schematically. It is in the upper half of the 2 the processing of data representing data D1-D6 in processes, of which processes P1 and P2 are illustrated, on a first processor PU1, the data being as in 1 to frames F1, F2 and F3. In addition, additional data, of which data D1'-D6 'are shown, which are combined to form frames F1'-F3', are processed in parallel on a second processor PU2 in further processes, of which processes P1 'and P2' are shown , The processing takes place for each processor PU1, PU2 taken alone as already with reference to 1 described.

Bei derartigen Multiprozessorsystemen kann es vorkommen, dass spätere Prozesse auf einem Prozessor auf von früheren Prozessen auf einem anderen Prozessor gelieferten Daten zugegriffen werden muss. In dem in 2 dargestellten Beispiel würde dies bedeuten, dass beispielsweise für die Durchführung des Prozesses P2' auf von dem Prozess P1 gelieferten Daten zugegriffen werden muss. Bei dem in 2 dargestellten Beispiel starten daher die Prozesse P1 und P1' gleichzeitig, und die Prozesse P2 und P2' starten gleichzeitig. Auf diese Weise wird sichergestellt, dass die Prozesse P2 und P2' erst gestartet werden, nachdem die Prozesse P1 und P1' beendet sind. Zudem werden bei dem in 2 gezeigten Beispiel die Prozesse P2 und P2' erst nach einer Zeit N × T gestartet, was sicherstellt, dass in der Zwischenzeit wiederum genug Daten vorhanden sind, um die Prozesse P2, P2' zu starten. Somit ist das Starten der Prozesse auch mit dem Dateneingang abgestimmt.In such multiprocessor systems, it may happen that later processes on a processor need to be accessed on data provided by previous processes on another processor. In the in 2 This would mean that, for example, for the execution of the process P2 ', data supplied by the process P1 must be accessed. At the in 2 Therefore, the processes P1 and P1 'start simultaneously, and the processes P2 and P2' start simultaneously. In this way, it is ensured that the processes P2 and P2 'are only started after the processes P1 and P1' have ended. In addition, at the in 2 the processes P2 and P2 'are started only after a time N × T, which ensures that in the meantime, in turn, enough data is available to start the processes P2, P2'. Thus, starting the processes is also tuned to the data input.

Hierbei ist zu beachten, dass die Dauer der Prozesse, welche auf den verschiedenen Prozessoren eines derartigen Multiprozessorsystems laufen, im Beispiel der 2 der Prozesse P1, P2, P1' und P2' nicht in jedem Fall vorauszusehen ist. Beispielsweise kann bei der Verarbeitung von Sprachdaten die Dauer von Prozessen von den Daten selbst abhängen, so dass die Dauer eines bestimmten Prozesses je nach eingehenden Daten schwankt. Abhängig von der Rechenleistung des jeweiligen Prozessors und den Prozessen kann es dabei dazu kommen, dass die Dauer eines Prozesses die für den Prozess vorgesehene Zeit N × T überschreitet.It should be noted that the duration of the processes that run on the various processors of such a multiprocessor system, in the example of 2 The processes P1, P2, P1 'and P2' can not be foreseen in every case. For example, when processing speech data, the duration of processes may depend on the data itself, such that the duration of a particular process varies depending on the incoming data. Depending on the computing power of the respective processor and the processes, it may happen that the duration of a process exceeds the time provided for the process N × T.

Diese Situation ist in 3 dargestellt, wobei 3 im Wesentlichen dieselben Elemente wie 2 mit denselben Bezugszeichen bezeichnet zeigt. Bei dem Beispiel in 3 dauert der Prozess P1 im Gegensatz zu 2 nun jedoch länger als N × T, so dass hier eine so genannte Echtzeitverletzung vorliegt. Bei dem in 3 dargestellten Fall werden daher die Prozesse P2 und P2' später gestartet. Da die Prozesse P2 und P2' weniger Zeit benötigen als N × T, ist bei dem vorliegenden Fall die Echtzeitverletzung nach den Prozessen P2, P2' wieder kompensiert.This situation is in 3 shown, where 3 essentially the same elements as 2 denoted by the same reference numerals. In the example in 3 the process takes P1 as opposed to 2 but now longer than N × T, so that there is a so-called real-time violation here. At the in 3 In this case, therefore, the processes P2 and P2 'are started later. Since the processes P2 and P2 'require less time than N × T, in the present case the real-time violation after the processes P2, P2' is compensated again.

Zu bemerken ist, dass bei derartigen Echtzeitverletzungen gegebenenfalls auch zusätzliche Datenpuffer nötig sind. Dies ist insbesondere der Fall, wenn aufgrund einer Echtzeitverletzung noch Daten verarbeitet werden, während die „neuen Da ten" bereits zur Verarbeitung anstehen. Dies wäre in dem Beispiel von 3 der Fall, wenn der Prozess P1 erst beendet wird, nachdem das Datenpaket D5 eingetroffen ist. In diesem Fall würde als der Prozess 21 noch die Daten D1 und D2, d.h. den Frame F1 verarbeiten, die Daten D3 und D4, d.h. der Frame F2, stünden für den Prozess 22 bereit, und es wäre bereits das Datum D5 für einen (nicht dargestellten) folgenden Prozess eingetroffen.It should be noted that such real-time violations may also require additional data buffers. This is especially the case when still processing data due to a real-time violation while the "new data" are already being processed, which would be the example of 3 the case when the process P1 is terminated only after the data packet D5 has arrived. In this case, as the process would 21 nor the data D1 and D2, that process the frame F1, the data D3 and D4, ie the frame F2, stand for the process 22 ready and the date D5 would already have arrived for a following process (not shown).

Wie aus 3 unschwer zu erkennen ist, muss also der Beginn der Prozesse auf den Prozessoren PU1 und PU2 auf die eingehenden Daten abgestimmt sein und zudem auch die Prozesse derart synchronisiert sein, dass folgende Prozesse erst gestartet werden, wenn vorherige Prozesse beendet sind. Zudem besteht ein Bedürfnis danach, Echtzeitverletzungen wie in 3 gezeigt auszugleichen.How out 3 It is not difficult to see, therefore, that the beginning of the processes on the processors PU1 and PU2 has to be coordinated with the incoming data and, in addition, the processes must be synchronized in such a way that the following processes are not started until previous processes have ended. There is also a need for real-time injuries such as 3 balance shown.

Die nachfolgend unter Bezugnahme auf 4 und 5 beschriebenen Ausführungsbeispiele stellen Synchronisierungsvorrichtungen bzw. Synchronisierungsverfahren für Multiprozessorsysteme dar, womit auf verschiedenen Prozessoren ablaufende Prozesse zueinander und mit eingehenden Daten synchronisierbar sind. 4 zeigt dabei ein Ausführungsbeispiel einer Synchronisationsvorrichtung 1, welche zwei Prozessoren PU1 und PU2 steuert. Die Steuervorrichtung 1 kann dabei in Form eines Hardwarebausteins oder auch in Form eines auf einem Prozessor laufenden Computerprogramms realisiert sein. Die Synchronisationsvorrichtung bietet eine zentrale Steuerung für eine Mehrzahl von Prozessoren, bei dem dargestellten Ausführungsbeispiel für die Prozessoren PU1 und PU2. Dabei ist der Einsatz einer derartigen Steuervorrichtung jedoch nicht auf zwei Prozessoren beschränkt, sondern kann auf eine beliebige Anzahl von Prozessoren erweitert werden. Die Darstellung von lediglich zwei Prozessoren erfolgte lediglich aus Gründen der Übersichtlichkeit.The following with reference to 4 and 5 described embodiments represent synchronization devices or synchronization method for multiprocessor systems, which are on different processors running processes to each other and with incoming data synchronized. 4 shows an embodiment of a synchronization device 1 which controls two processors PU1 and PU2. The control device 1 can be implemented in the form of a hardware component or in the form of a computer program running on a processor. The synchronization device provides a central control for a plurality of processors, in the illustrated embodiment for the processors PU1 and PU2. However, the use of such a control device is not limited to two processors, but can be extended to any number of processors. The representation of only two processors was only for reasons of clarity.

Auf dem Prozessor PU1 laufen ein Input- oder Eingabeprozess 5 zum Einlesen von Daten D, ein datenverarbeitender Prozess 6 zum Verarbeiten von zu Frames F zusammengefassten Daten D und ein Output- oder Ausgabeprozess 7 zum Ausgeben der Daten. Die Prozesse 5, 6, 7 können hardwaremäßig getrennt in verschiedenen Teilen des Prozessors PU1 ablaufen, können aber auch durch verschiedene Programmcodes vorgegeben sein, welche auf demselben Prozessor ablaufen. Zudem können bei anderen Ausführungsbeispielen die Prozesse 5 und 7 auch auf Einheiten außerhalb des Prozessors ablaufen.On the processor PU1 run an input or input process 5 for reading data D, a data-processing process 6 for processing data D combined into frames F and an output or output process 7 to output the data. The processes 5 . 6 . 7 may be hardware separated in different parts of the processor PU1, but may also be predetermined by different program codes that run on the same processor. In addition, in other embodiments, the processes 5 and 7 also occur on units outside the processor.

In ähnlicher Weise laufen auf dem Prozessor PU2 ein Eingabeprozess 8, ein datenverarbeitender Prozess 9 und ein Ausgabeprozess 10, welche den Prozessen 5, 6 bzw. 7 des Prozessors PU1 entsprechen.Similarly, an input process is run on the processor PU2 8th , a data-processing process 9 and an issue process 10 which the processes 5 . 6 respectively. 7 of the processor PU1.

Die Steuervorrichtung 1 weist ein IO-Steuerregister 2, ein Prozesssteuerregister 3 sowie ein Rückmelderegister 4 auf. Das IO-Steuerregister 2 weist für jeden Prozessor PU1, PU2 ein Bit oder Unterregister auf, welches mit den jeweiligen Eingabe- oder Ausgabeprozessen 5, 7, 8, 10 verknüpft ist. Wenn das jeweilige Bit gesetzt wird, werden die zugeordneten Prozesse durch einen Interrupt gestartet, wie durch Pfeile in 4 angedeutet. In ähnlicher Weise weist das Prozesssteuerregister 3 für jeden datenverarbeitenden Prozess 6, 9 ein Bit oder Unterregister auf, bei dem dargestellten Ausführungsbeispiel also zwei Bits. Wird ein einem jeweiligen Prozess zugeordnetes Bit gesetzt, wird der jeweilige Prozess gestartet, beispielsweise interruptgesteuert.The control device 1 indicates an IO control register 2 , a process control register 3 as well as a confirmation register 4 on. The IO control register 2 For each processor PU1, PU2, has a bit or sub-register associated with the respective input or output processes 5 . 7 . 8th . 10 is linked. When the respective bit is set, the associated processes are started by an interrupt, as indicated by arrows in 4 indicated. Similarly, the process control register 3 for every data processing process 6 . 9 a bit or sub-register, in the illustrated embodiment, therefore, two bits. If a bit assigned to a respective process is set, the respective process is started, for example interrupt-controlled.

Auch das Rückmelderegister 4 weist für jeden Prozess 6, 9 ein Bit auf. Wird ein Prozess 6, 9 beendet, wird das dem jeweiligen Prozess zugeordnete Bit in dem Rückmelderegister 4 gesetzt.Also the feedback register 4 points for every process 6 . 9 one bit up. Becomes a process 6 . 9 ends, the bit associated with the respective process in the feedback register 4 set.

Die Steuervorrichtung 1 wird durch ein Taktsignal CLK gesteuert. Wie durch die gestrichelte Zeile in 4 angedeutet werden durch das Taktsignal CLK auch die Datenzufuhr an die Prozessoren PU1 und PU2 von außen gesteuert.The control device 1 is controlled by a clock signal CLK. As indicated by the dashed line in 4 are indicated by the clock signal CLK and the data supply to the processors PU1 and PU2 controlled from the outside.

In 5 ist ein Ausführungsbeispiel für ein Verfahren dargestellt, mit welchem die Steuervorrichtung 1 aus 4 das synchrone Arbeiten der Prozessoren PU1 und PU2 sicherstellen kann. Das in 5 dargestellte Verfahren wird dabei beispielsweise bei jedem Takt des Taktsignals CLK aufgerufen.In 5 an embodiment of a method is shown, with which the control device 1 out 4 can ensure the synchronous working of the processors PU1 and PU2. This in 5 The method illustrated here is called, for example, at every clock of the clock signal CLK.

Das in 5 gezeigte Verfahren wird mit Schritt 20 gestartet. In Schritt 21 wird überprüft, ob Ein-/Ausgabeprozesse fällig sind. Wie oft dies der Fall ist, hängt von der Rate der eingehenden Daten D ab. Die Daten D können dabei wie bei 13 beispielsweise Datenpakete, einzelne Bytes, einzelne Bits oder dergleichen sein. Zum Beispiel kann ein Datum D in jedem vierten Takt des Taktsignals CLK eintreffen. In diesem Fall wären Ein-Ausgabeprozesse bei jedem vierten Aufruf des Verfahrens aus 5 fällig.This in 5 The method shown in step 20 started. In step 21 It is checked whether input / output processes are due. How often this happens depends on the rate of incoming data D. The data D can be as in 1 - 3 For example, data packets, individual bytes, individual bits or the like. For example, a datum D may arrive every fourth clock of the clock signal CLK. In this case, I / O processes would be off on every fourth invocation of the process 5 due.

Sind Ein-/Ausgabeprozesse fällig, werden diese in Schritt 22 durch Setzen der entsprechenden Bits in dem IO-Steuerregister 2 aus 4 aktiviert. Laufen die Ein- und Ausgabeprozesse der Prozessoren PU1 und PU2 synchron, bedeutet dies, dass sämtliche Bits des Steuerregisters 2 gesetzt werden. Sind keine Ein-/Ausgabeprozesse fällig, wird Schritt 22 übersprungen.If I / O processes are due, they will be in step 22 by setting the appropriate bits in the IO control register 2 out 4 activated. If the input and output processes of the processors PU1 and PU2 are synchronized, this means that all bits of the control register 2 be set. Are not on / off due process becomes step 22 skipped.

Anschließend wird in Schritt 23 überprüft, ob bereits ein vollständiger Frame zur Verarbeitung ansteht. Besteht ein Frame beispielsweise aus fünf Daten und trifft, wie oben beispielhaft erläutert, bei jedem vierten Takt des Taktsignals CLK ein Datum ein, wäre ein Frame nach 20 Takten, d.h. nach 20 Aufrufen des Verfahrens von 5 vollständig.Subsequently, in step 23 checks whether a complete frame is already waiting for processing. If, for example, a frame consists of five data and, as explained above by way of example, arrives at every fourth clock of the clock signal CLK, a frame would be after 20 clocks, ie after 20 calls of the method of FIG 5 Completely.

Ist der Frame noch nicht vollständig, wird das Verfahren in Schritt 30 beendet. Ist der Frame hingegen vollständig, bedeutet dies, dass die zum Start der Prozesse 6, 9 aus 4 nötigen Datenvorliegen (vgl. auch 13). In diesem Fall wird in Schritt 24 überprüft, ob vorherige Prozesse beendet sind. Diese Überprüfung geschieht in dem Ausführungsbeispiel von 4 mit Hilfe des Rückmelderegisters 4. Sind alle Prozesse, in diesem Fall Prozesse 6, 9, beendet, sind alle Bits in dem Rückmelderegister 4 gesetzt. In diesem Fall werden in Schritt 25 neue Prozesse zum Verarbeiten der angefallenen Frames F, F' gestartet.If the frame is not complete, the procedure in step 30 completed. If, on the other hand, the frame is complete, it means that the process is started 6 . 9 out 4 necessary data (see also 1 - 3 ). In this case, in step 24 checks if previous processes have ended. This check is done in the embodiment of 4 with the help of the check-in register 4 , Are all processes, in this case processes 6 . 9 When finished, all bits in the feedback register 4 set. In this case, in step 25 new processes for processing the incurred frames F, F 'started.

Falls nicht alle Prozesse beendet sind, liegt eine Echtzeitverletzung wie in 3 dargestellt vor, da bereits ein neuer Frame vorliegt, d.h. ein Zeit N × T verstrichen ist, ohne dass alle Prozesse beendet wären. In diesem Fall wird in Schritt 26 überprüft, ob eine maximal zulässige Überschreitung, beispielsweise von vier Aufrufen des Verfahrens von 5 erreicht ist. Diese maximale Überschreitung wird bei Ausführungsbeispielen der Erfindung derart gewählt, dass oberhalb der maximalen Überschreitung eine Kompensation der Echtzeitverletzungen wie in 3 dargestellt kaum möglich ist oder lange dauern würde. Ist die maximale Überschreitung noch nicht erreicht, wird gemäß Schritt 27 der Start der neuen Prozesse verzögert. Ansonsten werden in Schritt 28 Daten verworfen, um ein Wiederherstellen des Echtzeitverhaltens zu ermöglichen. Auch hier wird der Start der neuen Prozesse in Schritt 29 verzögert, bis alle Prozesse beendet sind. In jedem Fall wird in Schritt 30 das Verfahren beendet.If not all processes are finished, there is a real-time violation as in 3 shown before, since there is already a new frame, ie a time N × T has elapsed, without all processes would be completed. In this case, in step 26 checks whether a maximum allowable overrun, for example, four calls to the procedure of 5 is reached. This maximum excess is chosen in embodiments of the invention such that above the maximum excess compensation of real-time violations as in 3 shown hardly possible or would take long. If the maximum exceedance has not yet been reached, the procedure in step 27 the start of the new processes is delayed. Otherwise, in step 28 Discarded data to allow for real-time behavior restoration. Again, the start of the new processes is in step 29 delayed until all processes are completed. In any case, in step 30 the procedure ends.

Werden in Schritt 28 des Verfahrens von 5 Daten verworfen, bedeutet dies eine Störung auch in den Ausgangsdaten, welche sich im Falle von Sprachdaten für ein Gespräch beispielsweise durch Artefakte bemerkbar machen. In diesem Fall können ausgabeseitig durch die Ausgabeprozesse 7 und 10 aus 4 Dummy-Daten ausgegeben werden, beispielsweise durch Wiederholung vorheriger Daten, um diesen Effekt möglichst wenig bemerkbar zu machen.Become in step 28 the procedure of 5 Discarded data, this means a disturbance in the output data, which in the case of voice data for a conversation, for example, by artifacts noticeable. In this case, the output side through the issue processes 7 and 10 out 4 Dummy data are output, for example, by repeating previous data in order to make this effect as little as possible.

Wie bereits erläutert, kann die Synchronisationsvorrichtung als Software oder als Hardware implementiert sein. Eine Softwareimplementierung anhand eines C-Programms des Verfahrens von 5 ist im Folgenden dargestellt:

Figure 00100001
As already explained, the synchronization device can be implemented as software or as hardware. A software implementation based on a C program of the method of 5 is shown below:
Figure 00100001

Die durch diesen Programmcode definierte Funktion Synchronisation_Unit() wird bei dem dargestellten Ausführungsbeispiel wie in 4 angedeutet periodisch mit einem Systemtakte CLK aufgerufen, wobei dieser Systemtakt synchron zu den Eingabe- und Ausgabedaten läuft. In anderen Worten weist das Taktsignal CLK ein festes Verhältnis zu der Anzahl von Daten auf, welche in einem vorgegebenen Zeitraum ein- und ausgegeben werden. Beispielsweise kann das Taktsignal CLK der grundlegenden Abtastrate der Signalverarbeitung in der Vorrichtung von 4 oder in einer die Vorrichtung von 4 enthal tenden Kommunikationseinrichtung sein. Wird das dargestellte Ausführungsbeispiel in einem ISDN-Telefon eingesetzt, könnte die Taktfrequenz des Taktsignals CLK beispielsweise 8000 Hz sein, d.h. in diesem Fall wird die Funktion Synchronization_Unit() 8000 mal pro Sekunde aufgerufen.The function Synchronization_Unit () defined by this program code is used in the illustrated embodiment as in FIG 4 indicated periodically with a system clock CLK called, this system clock is synchronous with the input and output data. In other words, the clock signal CLK has a fixed relationship to the number of data input and output in a predetermined period of time. For example, the clock signal CLK may be the basic sampling rate of the signal processing in the device of FIG 4 or in one the device of 4 contained border communication device. If the illustrated embodiment is used in an ISDN telephone, the clock frequency of the clock signal CLK could be, for example, 8000 Hz, ie in this case the function Synchronization_Unit () is called 8000 times per second.

Die Funktion Synchronization_Unit() stellt wie bereits erwähnt ein Ausführungsbeispiel für das in 5 dargestellte Verfahren dar. Dies soll im Folgenden näher erläutert werden, wobei zunächst die in der Funktion verwendeten Variablen erläutert werden sollen.The function Synchronization_Unit () provides, as already mentioned, an embodiment for the in 5 This will be explained in more detail below, wherein initially the variables used in the function are to be explained.

Die Anzahl der Prozessoren ist in dem dargestellten Programmcode mit NP bezeichnet. Bei dem Ausführungsbeispiel von 4 wäre beispielsweise NP = 2. Die Variablen Ready und i sind Hilfsvariablen für die Programmausführung.The number of processors is denoted by NP in the illustrated program code. In the embodiment of 4 For example, NP = 2. The variables Ready and i are auxiliary variables for program execution.

PERIOD_IO_INTERRUPT ist eine Konstante oder Variable, welche festlegt, nach wie viel Funktionsaufrufen ein IO-Interrupt beispielsweise mittels des IO-Steuerregisters 2 aus 4 für die Eingabe- und Ausgabeprozesse gegeben werden muss. Im Fall einer Variablen muss PERIOD_IO_INTERRUPT vor dem ersten Aufruf der Funktion Synchronization_Unit() initialisiert werden. Bei dem unter Bezugnahme auf 5 diskutierten Zahlenbeispiel wäre PERIOD_IO_INTERRUPT beispielsweise gleich 4, so dass bei jedem vierten Aufruf der Funktion Synchronization_Unit() ein IO-Interrupt zur Aktivierung der Eingabe- und Ausgabeprozesse generiert wird.PERIOD_IO_INTERRUPT is a constant or variable that determines after how many function calls an IO interrupt, for example, using the IO control register 2 out 4 must be given for the input and output processes. In the case of a variable, PERIOD_IO_INTERRUPT must be initialized before the first call to the Synchronization_Unit () function. With reference to 5 For example, PERIOD_IO_INTERRUPT would equal 4, so that every 4th call of the Synchronization_Unit () function generates an IO interrupt to activate the input and output processes.

In diesem Zusammenhang wird unter Konstante ein Wert verstanden, welcher unverändert festgelegt ist, beispielsweise durch Speicherung in einem Nur-Lesespeicher (ROM), während unter Variable eine Größe verstanden wird, welche angepasst werden kann, beispielsweise in Abhängigkeit von der Art der zu verarbeitenden Daten.In this context, constant is understood to mean a value which is fixed as it is, for example by storage in a read-only memory (ROM), while a variable is a variable is understood, which can be adapted, for example, depending on the type of data to be processed.

HW_IO_Interrupt[] ist ein Array bzw. Feld, welches dem IO-Steuerregister 2 aus 4 entspricht, d.h. jedes Element dieses Feldes entspricht einem Bit des IO-Steuerregisters 2 aus 4. Wird das entsprechende Bit gesetzt, wird ein IO-Interrupt für die Eingabe- und Ausgabeprozesse des entsprechenden Prozessors generiert. Bei dem in 4 dargestellten Ausführungsbeispiel hätte das Feld zwei Elemente, wobei beispielsweise HW_IO_Interrupt[0] das für den Prozessor PU1 zuständige Bit und HW_IO_Interrupt[1] das für den Prozessor PU2 zuständige Bit bezeichnen würde. Das IO-Steuerregister 2 kann im Übrigen auch als Feld mehrerer getrennter Register ausgestaltet sein.HW_IO_Interrupt [] is an array corresponding to the IO control register 2 out 4 corresponds, ie each element of this field corresponds to one bit of the IO control register 2 out 4 , If the corresponding bit is set, an IO interrupt is generated for the input and output processes of the corresponding processor. At the in 4 For example, HW_IO_Interrupt [0] would designate the bit responsible for processor PU1 and HW_IO_interrupt [1] the bit responsible for processor PU2. The IO control register 2 can also be configured as a field of several separate registers.

Frame_Counter und Frame_Counter_Next sind Zähler, welche den Forschritt bei der Bildung eines Rahmens bzw. Frames kontrollieren. Insbesondere wird über diese Variablen überprüft, wie viele Daten bereits eingegangen sind.frame_counter and Frame_Counter_Next are counters, which the progress in the formation of a frame or frame check. In particular, checks are made about these variables, such as many data have already been received.

FRAME ist eine Konstante oder Variable, welche die Größe eines Frames in Einheiten des Taktsignals CLK definiert. Bei dem dargestellten Ausführungsbeispiel ist FRAME ein ganzzahliges Vielfaches von PERIOD_IO_INTERRUPT. Ist wie oben beispielhaft angegeben PERIOD_IO_INTERRUPT gleich 4, d.h. werden Daten bei jedem vierten Aufruf der Funktion Synchronization_Unit() eingelesen und enthält ein Frame fünf Daten, wäre FRAME beispielsweise gleich 20.FRAME is a constant or variable that measures the size of a frame in units the clock signal CLK defined. In the illustrated embodiment FRAME is an integer multiple of PERIOD_IO_INTERRUPT. is as exemplified above, PERIOD_IO_INTERRUPT equals 4, i. data is called every fourth call of the Synchronization_Unit () function read in and contains a frame of five dates, would be FRAME for example, 20.

HW_Interrupt_VP[] ist wiederum ein Feld oder Array, welches die Bits des Prozesssteuerregisters 3 aus 4 bezeichnet. HW_Interrupt_VP[] entspricht im Aufbau dem Feld HW_IO_Interrupt[].HW_Interrupt_VP [] is again a field or array containing the bits of the process control register 3 out 4 designated. HW_Interrupt_VP [] corresponds in structure to the field HW_IO_Interrupt [].

Sync_Ack_VP[] ist ein weiteres Feld und bezeichnet die Bits des Rückmeldungsregisters 4 aus 4. Dieses Feld wird komplett mit Null initialisiert, bevor die Funktion Synchronization_Unit() zum ersten Mal aufgerufen wird.Sync_Ack_VP [] is another field and identifies the bits of the feedback register 4 out 4 , This field is completely initialized to zero before the Synchronization_Unit () function is called for the first time.

Die Konstante oder Varialbe MAX_MIPS_OVERLOAD gibt schließlich die maximale Echtzeitverletzung an, welche ohne Verwerfen von Daten akzeptiert wird (vgl. Schritt 26 aus 5). Ist MAX_MIPS_OVERLOAD eine Variable, muss diese vor dem ersten Aufruf der Funktion Synchronization_Unit() initialisiert werden.The constant or varialbe MAX_MIPS_OVERLOAD finally indicates the maximum real-time violation, which is accepted without discarding data (see step 26 out 5 ). If MAX_MIPS_OVERLOAD is a variable, it must be initialized before the first call to the Synchronization_Unit () function.

Für die folgende Erläuterung wird beispielhaft angenommen, dass MAX_MIPS_OVERLOAD auf 4 gesetzt wird, während wie oben bereits erläutert PERIOD_IO_INTERRUPT ebenfalls auf 4 und FRAME auf 20 gesetzt wird. Demnach soll bei jedem vierten Aufruf der Funktion Synchronization_Unit() ein IO-Interrupt für die Ein-/Ausgabeprozesse (Bezugszeichen 5, 7, 8 und 10 in 4) generiert werden, und bei jedem zwanzigsten Aufruf der Funktion Synchronization_Unit() sollen nach Möglichkeit die datenverarbeitenden Prozesse (Bezugszeichen 6 und 9 in 4) gestartet werden, da dann jeweils ein vollständiger Frame vorliegt.For the purposes of the following discussion, it is assumed by way of example that MAX_MIPS_OVERLOAD is set to 4 while, as explained above, PERIOD_IO_INTERRUPT is also set to 4 and FRAME is set to 20. Accordingly, an IO interrupt for the input / output processes (reference symbol 5 . 7 . 8th and 10 in 4 ) are generated, and every twenty calls the function Synchronization_Unit () should, if possible, the data processing processes (reference numerals 6 and 9 in 4 ) are started, since then in each case a complete frame is present.

Bei jedem Aufruf der Funktion Synchronization_Unit() wird in Zeile 2 die Variable Frame_Counter gleich der Variablen Frame_Counter_Next gesetzt und in Zeile 3 die Variable Frame_Counter_Next um 1 inkrementiert. Die Variable Frame_Counter_Next wird dabei vor dem ersten Aufruf der Funktion Synchronization_Unit() auf Null initialisiert, so dass beim ersten Aufruf die Variable Frame_Counter auf 0 (Zeile 2) und die Variable Frame_Counter_Next auf 1 gesetzt wird. Mit der Variable Frame_Counter ist ein Zugriff auf den momentanen Stand der eingehenden Daten jederzeit möglich, während innerhalb der Funktion lediglich die Variable Frame_Counter_Next verwendet wird. Diese beinhaltet somit immer den Wert, welcher Frame_Counter beim nächsten Aufruf der Funktion zugewiesen wird. Beim vierten Aufruf der Funktion Synchronization_Unit() ist dann Frame_Counter gleich 3 und Frame_Counter_Next gleich 4.at Each call to the Synchronization_Unit () function appears in line 2 the variable Frame_Counter equals the variable Frame_Counter_Next and in line 3 the variable Frame_Counter_Next is incremented by 1. The variable Frame_Counter_Next will appear before the first call The function Synchronization_Unit () initializes to zero, so that at the first call, the variable Frame_Counter to 0 (line 2) and the variable Frame_Counter_Next is set to 1. With the variable Frame_Counter is an access to the current state of the incoming Data possible at any time, while within the function only the variable Frame_Counter_Next is used. This always contains the value, which Frame_Counter at the next Calling the function is assigned. The fourth time the Synchronization_Unit () function is called then Frame_Counter is equal to 3 and Frame_Counter_Next is equal to 4.

In den Zeilen 4 und 5 werden periodisch bei jedem vierten Aufruf die nötigen Eingabe- bzw. Ausgabeinterrupts zur Aktivierung der Eingabe- und Ausgabeprozesse (Bezugszeichen 5, 7, 8, 10 in dem Ausführungsbeispiel von 4) aktiviert. Der Ausdruck der If-Abfrage von Zeile 4 ist genau dann erfüllt, wenn Frame Counter ein Vielfaches von 4 ist, da für den Fall PERIOD_IO_INTERRUPT gleich 4 PERIOD_IO_INTERRUPT-1 die binäre Form 011 aufweist. Die Formulierung mit Hilfe einer Und-Verknüpfung ist insbesondere dann möglich, wenn PERIOD_IO_INTERRUPT einer Zweierpotenz ist. Ist dies nicht der Fall, ist eine andere Formulierung der Abfrage ebenfalls möglich.In lines 4 and 5, the necessary input and output interrupts for activation of the input and output processes (reference numerals 5 . 7 . 8th . 10 in the embodiment of 4 ) is activated. The expression of the If query of line 4 is satisfied if and only if Frame Counter is a multiple of 4, because in the case PERIOD_IO_INTERRUPT equal to 4 PERIOD_IO_INTERRUPT-1 has the binary form 011. The formulation with the aid of an AND operation is possible in particular when PERIOD_IO_INTERRUPT has a power of two. If this is not the case, another formulation of the query is also possible.

Durch die For-Schleife in Zeile 5 werden dann sämtliche Bits des IO-Steuerregisters 2 aus 4 auf 1 gesetzt und somit die Eingabe- und Ausgabeprozesse mittels eines Interrupts aktiviert. Durch Zeilen 4 und 5 der Funktion Synchronization_Unit() werden also die Schritte 21 und 22 des Ausführungsbeispiels aus 5 realisiert.The For loop in line 5 then turns all bits of the IO control register 2 out 4 is set to 1 and thus the input and output processes are activated by means of an interrupt. Through lines 4 and 5 of the Synchronization_Unit () function become the steps 21 and 22 of the embodiment 5 realized.

In Zeile 8 wird dann überprüft, ob bereits genug Daten für den Aufruf der datenverarbeitenden Prozesse vorliegen, was nach 20 Aufrufen der Funktion Synchronization_Unit() der Fall ist, da in dem vorliegenden Ausführungsbeispiel FRAME auf 20 gesetzt wurde und in diesem Fall gerade vorher zum fünften mal der IO-Interrupt erzeugt wurde, so dass ein vollständiger Frame vorliegt. In anderen Worten liegen nunmehr genügen Daten für die datenverarbeitenden Prozesse (Bezugszeichen 6 und 9 aus 4) vor. Bei Echtzeitverletzungen, welche später erläutert werden, kann die Variable Frame_Counter_Next auch größer als FRAME werden. Die Abfrage von Zeile 8 entspricht also Schritt 23 des Verfahrens aus 5.In line 8 it is then checked whether there are already enough data for the call of the data-processing processes, which is the case after 20 calls to the function Synchronization_Unit (), since FRAME was set to 20 in the present embodiment and in this case just before the fifth times the IO interrupt has been generated so that a complete frame is present. In other words, there are now sufficient data for the data-processing processes (reference numerals 6 and 9 out 4 ) in front. For real-time violations, which will be explained later, the variable Frame_Counter_Next can also become larger than FRAME. The query of line 8 corresponds to step 23 of the method 5 ,

In Zeile 9 wird eine Hilfsvariable Ready gebildet, welche angibt, ob vorherige datenverarbeitende Prozesse bereits beendet sind. Hierfür wird die Variable Ready zunächst auf 1 (True) gesetzt und dann mit einer Und-Verknüpfung mit sämtli chen Elementen des Feldes Sync-Ack_VP[], d.h. mit den Bits des Rückmelderegisters 4 aus 4 verknüpft. Nur wenn sämtliche Bits des Rückmelderegisters 4 gesetzt sind, d.h. sämtliche datenverarbeitende Prozesse beendet sind, nimmt Ready den Wert 1 oder True an. In Schritt 10 wird dann entsprechend Schritt 24 aus 5 anhand der Variable Ready überprüft, ob die Prozesse beendet sind.In line 9, an auxiliary variable Ready is formed, which indicates whether previous data-processing processes have already ended. For this, the variable Ready is first set to 1 (True) and then with an AND operation with all elements of the field Sync-Ack_VP [], ie with the bits of the feedback register 4 out 4 connected. Only if all the bits of the feedback register 4 are set, ie all data-processing processes have ended, Ready assumes the value 1 or True. In step 10 will then step accordingly 24 out 5 The variable Ready checks whether the processes have ended.

Ist dies nicht der Fall, wird in Zeile 11 weiterhin überprüft, ob die Variable Frame_Counter_Next bereits größer als FRAME+MAX_MIPS_OVERLOAD ist, also bereits die maximal zulässige Überschreitung erreicht ist (vgl. Schritt 26 aus 5). Ist dies der Fall, wird in Zeile 12 die Variable Frame_Counter_Next um PERIOD_IO_INTERRUPT erniedrigt. Dies bewirkt effektiv, dass ein Datum verworfen wird. In einem anderen Ausführungsbeispiel kann auch ein Vielfaches von PERIOD_IO_INTERRUPT von Frame_Counter_Next subtrahiert werden, was einem Verwerfen von mehr Daten entspricht. Bei dem Zahlenbeispiel wäre die Bedingung in Zeile 11 erfüllt, wenn Frame_Counter_Next 24 beträgt (FRAME = 20 und MAX_MIPS_OVERLOAD = 4). In diesem Fall wird dann in Zeile 12 Frame_Counter_Next auf 20 zurückgesetzt, d.h. auf den Wert, bei welchem eine Echtzeitverletzung gerade erst aufgetreten ist. Hierdurch wird die Rückführung des Systems in die Echtzeitverarbeitung erleichtert, auf der anderen Seite werden wie bereits angesprochen Daten verworfen.If this is not the case, it is further checked in line 11 whether the variable Frame_Counter_Next is already greater than FRAME + MAX_MIPS_OVERLOAD, ie the maximum permissible overshoot has already been reached (cf. 26 out 5 ). If this is the case, then in line 12 the variable Frame_Counter_Next is decremented by PERIOD_IO_INTERRUPT. This effectively causes a date to be discarded. In another embodiment, a multiple of PERIOD_IO_INTERRUPT may also be subtracted from Frame_Counter_Next, which corresponds to discarding more data. For the numeric example, the condition in line 11 would be met if Frame_Counter_Next is 24 (FRAME = 20 and MAX_MIPS_OVERLOAD = 4). In this case, Frame_Counter_Next is then reset to 20 in line 12, ie the value at which a real-time violation has just occurred. This facilitates the return of the system to real-time processing and, on the other hand, discards data as already mentioned.

Bei einem Ausführungsbeispiel der Erfindung erfolgt das Verwerfen von Daten, indem zusätzliche, weiterhin eingehende Daten nicht gespeichert werden. Dies kann bei Ausführungsbeispielen eingesetzt werden, bei welchen Eingabepuffer der Prozessoren zum Speichern der eingehenden Daten auf einer Größe von FRAME+MAX_MIPS_OVERLOAD begrenzt sind. Bei einem anderen Ausführungsbeispiel wird die Variable Frame-Counter als Index für die Speicherung der eingehenden Daten verwendet. Durch Rücksetzen der Variablen Frame-Counter durch Zeilen 12 und 3 des Programmbeispiels werden dann automatisch Daten verwor fen, beispielsweise durch Überschreiben bereits gespeicherter Daten.at an embodiment The invention is the discarding of data by additional, continue incoming data will not be saved. This can be done in embodiments which input buffers of the processors are used for Save the incoming data to a size of FRAME + MAX_MIPS_OVERLOAD are limited. In another embodiment, the variable is frame counter as index for used to store the incoming data. By resetting the variable frame counter through lines 12 and 3 of the program example then data are automatically verwor fen, for example, by overwriting already stored data.

Sind hingegen die vorherigen Prozesse bereits beendet (Ready = True), werden die in Zeilen 4–17 dargestellten Befehle ausgeführt. Zunächst wird in Zeile 14 die Variable Frame_Counter_Next um FRAME erniedrigt. Wenn sämtliche Prozesse rechtzeitig beendet wurden, d.h. keine Echtzeitverletzung vorliegt, wäre Frame_Counter_Next vor diesem Schritt gleich 20 und würde somit durch Zeile 14 auf 0 zurückgesetzt werden. Lag hingegen eine Echtzeitverletzung vor, beispielsweise um zwei Takte oder zwei Aufrufe der Funktion Synchronization_Unit(), wäre Frame_Counter_Next vor Zeile 14 gleich 22 und würde auf 2 zurückgesetzt werden. Dies würde andererseits bedeuten, dass die Bedingung in Zeile 8 bereits nach 18 weiteren Aufrufen erfüllt wäre und somit der nächste Startversuch der folgenden Prozesse zum frühestmöglichen Zeitpunkt (d.h. sobald wieder genügend Daten vorliegen) durchgeführt würde, um die Echtzeitverletzung wie in 3 dargestellt baldmöglichst auszugleichen. Schließlich werden in diesem Fall in Zeilen 15–17 zum einen die Bits des Rückmelderegisters zurückgesetzt und zum anderen die Bits des Prozesssteuerregisters gesetzt, um die datenverarbeitenden Prozesse (Bezugszeichen 6, 9 in 4) durch entsprechende Interrupts zu starten.If, on the other hand, the previous processes are already finished (Ready = True), the commands shown in lines 4-17 are executed. First, in row 14, the variable Frame_Counter_Next is decremented by FRAME. If all processes were ended on time, ie if there was no real-time violation, Frame_Counter_Next would be equal to 20 before this step and would thus be reset to 0 by line 14. On the other hand, if there was a real-time violation, such as two bars or two calls to the Synchronization_Unit () function, Frame_Counter_Next would be 22 before line 14 and would be reset to 2. On the other hand, this would mean that the condition in line 8 would already be met after 18 further calls and thus the next start attempt of the following processes would be performed at the earliest possible time (ie as soon as enough data is available) again, as in 3 illustrated as soon as possible to compensate. Finally, in this case, in lines 15-17, on the one hand, the bits of the feedback register are reset and, on the other hand, the bits of the process control register are set in order to process the data processing processes (reference numerals) 6 . 9 in 4 ) by appropriate interrupts.

Bei dem Ausführungsbeispiel wird davon ausgegangen, dass die Bits des IO-Steuerregisters 2 und des Prozesssteuerregisters 3 nach erfolgtem Interrupt automatisch zurückgesetzt werden, d.h. auf 0 gesetzt werden. Ist dies nicht der Fall, könnte dies am Ende der Funktion Synchronization_Unit() explizit vorgesehen werden.In the embodiment, it is assumed that the bits of the IO control register 2 and the process control register 3 be reset automatically after a successful interrupt, ie set to 0. If this is not the case, this could be provided explicitly at the end of the Synchronization_Unit () function.

Da in der Funktion Synchronization_Unit() eine Änderung der Variable Frame Counter Next in Zeile 12 um PERIOD_IO_INTERRUPT (oder Vielfachen hiervon) und in Zeile 14 um FRAME, welches ein Vielfaches von PERIOD_IO_INTERRUPT ist, erfolgt, wird die periodische Auslösung der Ein-/Ausgabeinterrupts in Zeilen 4 und 5 durch diese Änderungen nicht beeinträchtigt, d.h. unabhängig von diesen Änderungen der Variable Frame_Counter_Next werden die Eingabe- und Ausgabeprozesse bei jedem vierten Aufruf der Funktion Synchronization_Unit() gestartet.Since in the function Synchronization_Unit () a change of the variable Frame Counter Next takes place in line 12 by PERIOD_IO_INTERRUPT (or multiples thereof) and in line 14 by FRAME, which is a multiple of PERIOD_IO_INTERRUPT, the periodic triggering of the input / output interrupts in Lines 4 and 5 are not affected by these changes, that is, regardless of these changes to the variable Frame_Counter_Next, the input and output processes on every fourth invocation of the function Synchronization_Unit () started.

Sind innerhalb der Eingabe- und Ausgabeprozesse Informationen über die Anzahl der bereits vorhandenen Daten in einem gerade zusammenzustellenden Frame nötig, wird hierzu bei Ausführungsbeispielen der Erfindung auf die Variable Frame_Counter zurückgegriffen, welche abgesehen von der Aktualisierung der Variable in Zeile 2 innerhalb der Funktion Synchronization_Unit() nicht verändert wird. Hierdurch können innerhalb der Eingabe- und Ausgabeprozesse auch Echtzeitverletzungen, bei welchen eine maximale Überschreibung (Frame_Counter_Next>FRAME+MAX_MIPS_OVERLOAD) vorliegt, berücksichtigt werden. In diesem Fall ist bei dem dargestellten Ausführungsbeispiel die Variable Frame_Counter bei zwei aufeinanderfolgenden Aufrufen der Eingabe- und Ausgabeprozesse gleich. Ist zum Beispiel Frame_Counter gleich 23 (Frame_Counter_Next gleich 24), wird bei dem Zahlenbeispiel in Zeile 11 die Bedingung erfüllt und Frame Counter_Next in Zeile 12 auf 20 zurückgesetzt. Beim nächsten IO_Interrupt, d.h. wenn die Bedingung in Zeile 4 beim nächsten Mal erfüllt ist, ist Frame_Counter wiederum gleich 23.are within the input and output processes information about the Number of existing data in a currently being compiled Frame needed, is this in embodiments of the invention resorted to the variable Frame_Counter, which apart from updating the variable in line 2 within the function Synchronization_Unit () not changed becomes. This allows real-time violations within the input and output processes, where a maximum override (Frame_Counter_Next> FRAME + MAX_MIPS_OVERLOAD) is present become. In this case, in the illustrated embodiment the variable Frame_Counter on two consecutive calls the input and output processes are the same. Is for example Frame_Counter equal to 23 (Frame_Counter_Next equals 24) will be in the numerical example in line 11, the condition is fulfilled and Frame Counter_Next is reset to 20 on line 12. At the next IO_interrupt, i.e. if the condition in line 4 is met next time, Frame_Counter is again equal to 23.

Die unter Bezugnahme auf die Figuren dargestellten Ausführungsbeispiele sind lediglich beispielhaft zu verstehen, und eine Vielzahl von Modifikationen ist möglich. Bei einer Softwarerealisierung kann eine Programmierung beispielsweise auch in einer anderen Programmiersprache als C erfolgen. Des Weiteren ist wie bereits angesprochen auch eine Hardwarelösung, bei welcher die entsprechenden Schritte eines Ausführungsbeispiels des erfindungsgemäßen Verfahrens fest verdrahtet sind, oder eine gemischte Hardware-/Softwarelösung realisiert werden.The Embodiments illustrated with reference to the figures are merely exemplary, and a variety of Modifications is possible. For example, in a software implementation, programming may be also in a programming language other than C. Furthermore is as already mentioned also a hardware solution, with which the appropriate Steps of an embodiment the method according to the invention hardwired, or a mixed hardware / software solution implemented become.

Bei dem dargestellten Ausführungsbeispiel werden alle Ein-/Ausgabeprozesse periodisch aktiviert. Durch das IO-Steuerregister 2 können die Ein-/Ausgabeprozesse des Prozessors PU1 auch unabhängig von Ein-/Ausgabeprozessen des Prozessors PU2 aktiviert werden. Dies kann beispielsweise bei Ausführungsbeispielen erfolgen, bei welchen die Daten bei verschiedenen Prozessoren nicht synchron einlaufen oder bei welchen bei bestimmten Prozessoren zeitweilig keine Daten anfallen. In diesem Fall können auch bei Ausführungsbeispielen der Erfindung durch das Prozesssteuerregister 3 (beispielsweise in Schritt 25 von 5) nur diejenigen datenverarbeitenden Prozesse aktiviert werden, an denen tatsächlich Daten einfallen. Ein derartiges Szenario kann beispielsweise bei einem Multiprozessorsystem auftreten, welches zur Verarbeitung von Audio- und Videodaten dient. Fallen reine Audiodaten, beispielsweise Radioprogramme und dergleichen, an, werden nur die für die Verarbeitung der Audiodaten zuständigen Prozessoren bzw. der Ein-/Ausgabeprozesse und datenverarbeitenden Prozesse aktiviert. Fallen hingegen Videodaten, beispielsweise Fernsehdaten oder Daten bezüglich einer Telekonferenz, zusammen mit Audiodaten an, werden sowohl für Bildverarbeitung vorgesehene Prozessoren als auch die für Audiodaten vorgesehenen Prozessoren aktiviert.In the illustrated embodiment, all I / O processes are periodically activated. Through the IO control register 2 The input / output processes of the processor PU1 can also be activated independently of input / output processes of the processor PU2. This can be done, for example, in embodiments in which the data does not arrive synchronously in the case of different processors or in which no data is temporarily produced in the case of certain processors. In this case, in embodiments of the invention by the process control register 3 (for example in step 25 from 5 ) only those data-processing processes are activated, in which data actually occurs. Such a scenario may occur, for example, in a multiprocessor system which serves to process audio and video data. If pure audio data, for example radio programs and the like, occur, only the processors responsible for the processing of the audio data or the input / output processes and data-processing processes are activated. If, on the other hand, video data, for example television data or teleconferencing data, coincides with audio data, processors intended for image processing as well as the processors provided for audio data are activated.

Bei den dargestellten Ausführungsbeispielen wird die Synchronisierungseinheit 1 von 4 mit einem Taktsignal CLK versorgt, welches synchron zu dem Eingang von Daten bzw. der Ausgabe von Daten läuft, bzw. das Verfahren von 5 wird gemäß einem derartigen Taktsignal aufgerufen. Es ist jedoch ebenso denkbar, dass für den Dateneingang zuständige Schaltungsteile wie eine entsprechende Hardwareschnittstelle in Abhängigkeit von den eingehenden Daten ein Synchronisationstaktsignal erzeugen, welches die Synchronisationsvorrichtung 1 aus 4 steuert.In the illustrated embodiments, the synchronization unit 1 from 4 supplied with a clock signal CLK, which runs in synchronism with the input of data or the output of data, and the method of 5 is called in accordance with such a clock signal. However, it is also conceivable that circuit components responsible for the data input, such as a corresponding hardware interface, generate a synchronization clock signal as a function of the incoming data, which synchronizing device 1 out 4 controls.

Statt Interrupts wie in den dargestellten Ausführungsbeispielen können auch andere Signale von der Synchronisationsvorrichtung 1 zu den Prozessoren verwendet werden, um zu signalisieren, dass Eingabe- bzw. Ausgabeprozesse oder datenverarbeitende Prozesse gestartet werden sollen. Wie bereits erläutert, können die dargestellten Ausführungsbeispiele auf eine beliebige Anzahl von Prozessoren erweitert werden, beispielsweise indem die Register 24 aus 4 entsprechend erweitert werden. Zudem ist es möglich, für sämtliche Prozessoren und für sämtliche Eingabe- und Ausgabeprozesse jeweils nur eine Interrupt-Leitung vorzusehen, falls die oben angesprochene Möglichkeit, nur einzelne Prozesse zu starten, nicht vorgesehen werden muss.Instead of interrupts as in the illustrated embodiments, other signals from the synchronization device 1 to the processors used to signal that input / output processes or data processing processes should be started. As already explained, the illustrated embodiments can be extended to any number of processors, for example by the registers 2 - 4 out 4 be extended accordingly. In addition, it is possible to provide only one interrupt line for all processors and for all input and output processes, if the above-mentioned possibility of starting only individual processes need not be provided.

Zusammenfassung wird mit Ausführungsbeispielen der vorliegenden Erfindung eine zentrale Synchronisationsvorrichtung bzw. ein Synchronisationsverfahren bereitgestellt, womit eine Vielzahl von Prozessoren, auf welchen datenverarbeitende Prozesse sowie Ein- und Ausgabeprozesse laufen, synchronisiert werden können. Mit Ausführungsbeispielen der vorliegenden Erfindung können Echtzeitverletzungen erkannt werden und zum Ausgleich der Echtzeitverletzungen nachfolgende Prozesse baldmöglichst gestartet werden, sobald hierfür ausreichend Daten vorhanden sind.Summary is with exemplary embodiments the present invention, a central synchronization device or provided a synchronization method, whereby a plurality of processors on which data-processing processes and and issue processes can be run, synchronized. With embodiments of the present invention Real-time violations are detected and to compensate for real-time violations subsequent processes as soon as possible be started as soon as this sufficient data are available.

Claims (28)

Verfahren zum Synchronisieren einer Mehrzahl von Prozessoren (PU1, PU2), umfassend: Überprüfen, ob vorherige datenverarbeitende Prozesse (6, 9) auf der Mehrzahl von Prozessoren (PU1, PU2) beendet sind, und Starten neuer datenverarbeitender Prozesse (6, 9) auf der Mehrzahl von Prozessoren (PU1, PU2), wenn die vorherigen datenverarbeitenden Prozesse (6, 9) beendet sind.Method for synchronizing a plurality of processors (PU1, PU2), comprising: checking whether previous data-processing processes ( 6 . 9 ) on the plurality of processors (PU1, PU2) and starting new data processing processes ( 6 . 9 ) on the plurality of processors (PU1, PU2) if the previous data processing processes ( 6 . 9 ) are completed. Verfahren nach Anspruch 1, wobei die neuen datenverarbeitenden Prozesse (6, 9) auf der Mehrzahl von Prozessoren (PU1, PU2) gleichzeitig gestartet wird.The method of claim 1, wherein the new data processing processes ( 6 . 9 ) is started simultaneously on the plurality of processors (PU1, PU2). Verfahren nach Anspruch 1 oder 2, wobei das Starten der neuen datenverarbeitenden Prozesse (6, 9) nur dann durchgeführt wird, wenn ausreichend Daten (D, F) für die neuen datenverarbeitenden Prozesse (6, 9) vorliegen.Method according to claim 1 or 2, wherein the starting of the new data-processing processes ( 6 . 9 ) is performed only when sufficient data (D, F) is available for the new data processing processes ( 6 . 9 ) are present. Verfahren nach einem der vorhergehenden Ansprüche, umfassend: Steuern von Eingabeprozessen (5, 8) und/oder Ausgabeprozessen (7, 10) auf der Mehrzahl von Prozessoren (PU1, PU2).Method according to one of the preceding claims, comprising: controlling input processes ( 5 . 8th ) and / or issuing processes ( 7 . 10 ) on the plurality of processors (PU1, PU2). Verfahren nach einem der vorhergehenden Ansprüche, umfassend: Verzögern des Startens der neuen datenverarbeitenden Prozesse (6, 9), wenn die vorherigen datenverarbeitenden Prozesse (6, 9) noch nicht beendet sind.Method according to one of the preceding claims, comprising: delaying the starting of the new data-processing processes ( 6 . 9 ), if the previous data processing processes ( 6 . 9 ) are not finished yet. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Überprüfen, ob die vorherigen datenverarbeitenden Prozesse (6, 9) beendet sind, ein Empfangen von Rückmeldesignalen von der Mehrzahl von Prozessoren (PU1, PU2) umfasst.Method according to one of the preceding claims, wherein checking whether the previous data-processing processes ( 6 . 9 ), receiving receive feedback signals from the plurality of processors (PU1, PU2). Verfahren nach einem der vorhergehenden Ansprüche, wobei das Starten der neuen datenverarbeitenden Prozesse (6, 9) das Senden von Interrupts an die Mehrzahl von Prozessoren (PU1, PU2) umfasst.Method according to one of the preceding claims, wherein starting the new data-processing processes ( 6 . 9 ) comprises sending interrupts to the plurality of processors (PU1, PU2). Verfahren nach einem der vorhergehenden Ansprüche, umfassend: Verwerfen von zu verarbeitenden Daten (D, F), falls die vorherigen datenverarbeitenden Prozesse (6, 9) nicht zu einem vorgegebenen Zeitpunkt beendet sind.Method according to one of the preceding claims, comprising: discarding data to be processed (D, F) if the previous data processing processes ( 6 . 9 ) are not finished at a given time. Verfahren zum Synchronisieren einer Mehrzahl von Prozessoren (PU1, PU2), umfassend eine periodische Durchführung folgender Schritte: Aufrufen von Eingabeprozessen (5, 8) und/oder Ausgabeprozessen (7, 10) in vorgegebenen ersten Zeitabständen, Überprüfen, ob ausreichend Daten (D, F) für neue datenverarbeitende Prozesse (6, 9) vorliegen, Überprüfen, ob vorherige datenverarbeitende Prozesse (6, 9) beendet sind, Starten der neuen datenverarbeitenden Prozesse (6, 9), falls ausreichend Daten (D, F) vorliegen und die vorherigen datenverarbeitenden Prozesse (6, 9) beendet sind, falls die vorherigen datenverarbeitenden Prozesse nicht beendet sind, Verwerfen von Daten, wenn seit dem ausreichenden Vorliegen von Daten für die neuen datenverarbeitenden Prozesse ein zweiter vorgegebener Zeitabstand vergangen ist.Method for synchronizing a plurality of processors (PU1, PU2), comprising a periodic execution of the following steps: invocation of input processes ( 5 . 8th ) and / or issuing processes ( 7 . 10 ) at predetermined first time intervals, checking whether sufficient data (D, F) are available for new data-processing processes ( 6 . 9 ), check if previous data processing processes ( 6 . 9 ), starting the new data processing processes ( 6 . 9 ), if sufficient data (D, F) are available and the previous data processing processes ( 6 . 9 ) are terminated, if the previous data processing processes have not ended, discarding data if a second predetermined time interval has passed since the sufficient presence of data for the new data processing processes. Verfahren nach Anspruch 9, wobei die periodische Durchführung durch ein Taktsignal bestimmt wird, wobei die ersten vorgegebenen Zeitabstände und/oder die zweiten vorgegebenen Zeitabstände einer vorgegebenen Anzahl von Takten des Taktsignals entsprechen.Method according to claim 9, being the periodic execution is determined by a clock signal, the first given intervals and / or the second predetermined time intervals of a predetermined number of clocks of the clock signal correspond. Verfahren nach Anspruch 9 oder 10, wobei die neuen datenverarbeitenden Prozesse (6, 9) auf der Mehrzahl von Prozessoren gleichzeitig gestartet werden.Method according to claim 9 or 10, wherein the new data-processing processes ( 6 . 9 ) on the plurality of processors at the same time. Verfahren nach einem der Ansprüche 9 bis 11, umfassend: Verzögern des Startens der neuen datenverarbeitenden Prozesse (6, 9), wenn die vorherigen datenverarbeitenden Prozesse (6, 9) noch nicht beendet sind.Method according to one of claims 9 to 11, comprising: delaying the starting of the new data-processing processes ( 6 . 9 ), if the previous data processing processes ( 6 . 9 ) are not finished yet. Verfahren nach einem der Ansprüche 9 bis 12, wobei das Überprüfen, ob die vorherigen datenverarbeitenden Prozesse (6, 9) beendet sind, ein Empfangen von Rückmeldesignalen von der Mehrzahl von Prozessoren (PU1, PU2) umfasst.Method according to one of claims 9 to 12, wherein the checking whether the previous data processing processes ( 6 . 9 ), receiving receive feedback signals from the plurality of processors (PU1, PU2). Verfahren nach einem der Ansprüche 9 bis 13, wobei das Starten der neuen datenverarbeitenden Prozesse das Senden von Interrupts an die Mehrzahl von Prozessoren (PU1, PU2) umfasst.Method according to one of claims 9 to 13, wherein the starting the new data processing processes sending interrupts to the plurality of processors (PU1, PU2). Vorrichtung (1) zum Synchronisieren einer Mehrzahl von Prozessoren (PU1, PU2), umfassend: Prüf mittel (4) zum Überprüfen, ob datenverarbeitende Prozesse (6, 9) auf der Mehrzahl von Prozessoren (PU1, PU2) beendet sind, und Startmittel (3) zum Starten neuer datenverarbeitender Prozesse (6, 9) auf der Mehrzahl von Prozessoren (PU1, PU2), wenn die vorherigen datenverarbeitenden Prozesse beendet sind.Contraption ( 1 ) for synchronizing a plurality of processors (PU1, PU2), comprising: test means ( 4 ) to check whether data processing processes ( 6 . 9 ) are terminated on the plurality of processors (PU1, PU2), and starting means ( 3 ) for starting new data processing processes ( 6 . 9 ) on the plurality of processors (PU1, PU2) when the previous data processing processes have ended. Vorrichtung (1) nach Anspruch 15, wobei die Startmittel (3) derart ausgestaltet sind, dass die neuen datenverarbeitenden Prozesse (6, 9) auf der Mehrzahl von Prozessoren (PU1, PU2) gleichzeitig gestartet wird.Contraption ( 1 ) according to claim 15, wherein the starting means ( 3 ) are configured such that the new data processing processes ( 6 . 9 ) is started simultaneously on the plurality of processors (PU1, PU2). Vorrichtung (1) nach Anspruch 15 oder 16, wobei die Startmittel (3) derart ausgestaltet sind, dass das Starten der neuen datenverarbeitenden Prozesse nur dann durchgeführt wird, wenn ausreichend Daten für die neuen datenverarbeitenden Prozesse vorliegen.Contraption ( 1 ) according to claim 15 or 16, wherein the starting means ( 3 ) are configured such that the starting of the new data-processing processes is performed only when there is sufficient data for the new data-processing processes. Vorrichtung (1) nach einem der Ansprüche 15 bis 17, umfassend: weitere Startmittel (2) zum Steuern von Eingabeprozessen (5, 8) und/oder Ausgabeprozessen (7, 10) auf der Mehrzahl von Prozessoren (PU1, PU2).Contraption ( 1 ) according to one of claims 15 to 17, comprising: further starting means ( 2 ) for controlling input processes ( 5 . 8th ) and / or issuing processes ( 7 . 10 ) on the plurality of processors (PU1, PU2). Vorrichtung (1) nach einem der Ansprüche 15 bis 18, wobei die Startmittel (3) derart ausgestaltet sind, dass sie das Starten der neuen datenverarbeitenden Prozesse verzögern, wenn die vorherigen datenverarbeitenden Prozesse noch nicht beendet sind.Contraption ( 1 ) according to one of claims 15 to 18, wherein the starting means ( 3 ) are configured to delay the starting of the new data processing processes if the previous data processing processes have not yet ended. Vorrichtung (1) nach einem der Ansprüche 15 bis 19, wobei die Prüfmittel ein Rückmelderegister (4) umfassen, wobei das Überprüfen, ob die vorherigen datenverarbeitenden Prozesse beendet sind, ein Empfangen von Rückmeldesignalen von der Mehrzahl von Prozessoren (PU1, PU2) in dem Rückmelderegister (4) umfasst.Contraption ( 1 ) according to one of claims 15 to 19, wherein the test means comprise a feedback register ( 4 ), wherein the checking as to whether the previous data processing processes have ended, receiving acknowledgment signals from the plurality of processors (PU1, PU2) in the feedback register ( 4 ). Vorrichtung (1) nach einem der Ansprüche 15 bis 20, wobei die Startmittel ein Steuerregister (3) umfassen, wobei das Starten der neuen datenverarbeitenden Prozesse das Senden von Interrupts an die Mehrzahl von Prozessoren (PU1, PU2) durch Setzen von Werten in dem Steuerregister (3) umfasst.Contraption ( 1 ) according to one of claims 15 to 20, wherein the starting means comprise a control register ( 3 ), wherein the starting of the new data processing processes, the sending of interrupts to the plurality of processors (PU1, PU2) by setting values in the control register ( 3 ). Vorrichtung (1) nach einem der vorhergehenden Ansprüche, umfassend: Mittel zum Verwerfen von zu verarbeitenden Daten, falls die vorherigen datenverarbeitenden Prozesse (6, 9) nicht zu einem vorgegebenen Zeitpunkt beendet sind.Contraption ( 1 ) according to one of the preceding claims, comprising: means for discarding data to be processed if the previous data processing processes ( 6 . 9 ) are not finished at a given time. Vorrichtung (1) zum Synchronisieren einer Mehrzahl von Prozessoren (PU1, PU2), umfassend einen Programmspeicher mit einem Synchronisationsprogramm, wobei das Synchronisationsprogramm im Betrieb periodisch aufgerufen wird, wobei bei ei nem Aufruf des Synchronisationsprogramms folgende Schritte durchgeführt werden: Aufrufen von Eingabeprozessen (5, 8) und/oder Ausgabeprozesse (7, 10) in vorgegebenen ersten Zeitabständen, Überprüfen, ob ausreichend Daten (D, F) für neue datenverarbeitende Prozesse (6, 9) vorliegen, Überprüfen, ob vorherige datenverarbeitende Prozesse (6, 9) beendet sind, Starten der neuen datenverarbeitenden Prozesse (6, 9), falls ausreichend Daten (D, F) vorliegen und die vorherigen datenverarbeitenden Prozesse (6, 9) beendet sind, falls die vorherigen datenverarbeitenden Prozesse (6, 9) nicht beendet sind, Verwerfen von Daten, wenn seit dem ausreichenden Vorliegen von Daten für die neuen datenverarbeitenden Prozesse ein zweiter vorgegebener Zeitabstand vergangen ist.Contraption ( 1 ) for synchronizing a plurality of processors (PU1, PU2), comprising a program memory with a synchronization program, wherein the synchronization program is periodically called in operation, wherein the following steps are performed during a call of the synchronization program: calling of input processes ( 5 . 8th ) and / or issuing processes ( 7 . 10 ) at predetermined first time intervals, checking whether sufficient data (D, F) are available for new data-processing processes ( 6 . 9 ), check if previous data processing processes ( 6 . 9 ), starting the new data processing processes ( 6 . 9 ), if sufficient data (D, F) are available and the previous data processing processes ( 6 . 9 ) are terminated if the previous data processing processes ( 6 . 9 ) are discarded, discarding data when a second predetermined time interval has passed since the sufficient presence of data for the new data processing processes. Vorrichtung (1) nach Anspruch 23, wobei die Vorrichtung einen Takteingang aufweist, wobei das periodische Aufrufen durch ein Taktsignal (CLK) bestimmt wird, wobei die ersten vorgegebenen Zeiträume und/oder der zweite vorgegebene Zeitraum einer vorgegebenen Anzahl von Takten des Taktsignals entsprechen.Contraption ( 1 ) according to claim 23, wherein the device comprises a clock input, the periodic calling being determined by a clock signal (CLK), wherein the first predetermined periods and / or the second predetermined period correspond to a predetermined number of clocks of the clock signal. Vorrichtung (1) nach Anspruch 23 oder 24, wobei die neuen datenverarbeitenden Prozesse auf der Mehrzahl von Prozessoren gleichzeitig gestartet wird.Contraption ( 1 ) according to claim 23 or 24, wherein the new data processing processes on the plurality of processors is started simultaneously. Vorrichtung (1) nach einem der Ansprüche 23 bis 25, wobei die Schritte umfassen: Verzögern des Startens der neuen datenverarbeitenden Prozesse (6, 9), wenn die vorherigen datenverarbeitenden Prozesse (6, 9) noch nicht beendet sind.Contraption ( 1 ) according to one of claims 23 to 25, wherein the steps comprise: delaying the starting of the new data processing processes ( 6 . 9 ), if the previous data processing processes ( 6 . 9 ) are not finished yet. Vorrichtung (1) nach einem der Ansprüche 23 bis 26, wobei das Überprüfen, ob die vorherigen datenverarbeitenden Prozesse beendet sind, ein Empfangen von Rückmeldesignalen von der Mehrzahl von Prozessoren (PU1, PU2) umfasst.Contraption ( 1 ) according to any one of claims 23 to 26, wherein the checking as to whether the previous data processing processes have ended comprises receiving feedback signals from the plurality of processors (PU1, PU2). Vorrichtung (1) nach einem der Ansprüche 23 bis 27, wobei das Starten der neuen datenverarbeitenden Prozesse das Senden von Interrupts an die Mehrzahl von Prozessoren (PU1, PU2) umfasst.Contraption ( 1 ) according to any one of claims 23 to 27, wherein starting the new data processing processes comprises sending interrupts to the plurality of processors (PU1, PU2).
DE200610052012 2006-11-03 2006-11-03 Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes Ceased DE102006052012A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE200610052012 DE102006052012A1 (en) 2006-11-03 2006-11-03 Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610052012 DE102006052012A1 (en) 2006-11-03 2006-11-03 Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes

Publications (1)

Publication Number Publication Date
DE102006052012A1 true DE102006052012A1 (en) 2008-05-08

Family

ID=39264857

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610052012 Ceased DE102006052012A1 (en) 2006-11-03 2006-11-03 Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes

Country Status (1)

Country Link
DE (1) DE102006052012A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993002414A2 (en) * 1991-07-22 1993-02-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993002414A2 (en) * 1991-07-22 1993-02-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads

Similar Documents

Publication Publication Date Title
EP0847165B1 (en) Digital data transmission network and method for operating a data transmission network
EP0048767A1 (en) Priority stage controlled interruption device
DE1424762A1 (en) Data processing system
DE602005003506T2 (en) Method and apparatus for enhancing the synchronization of a multimedia stream processing unit in a multi-threaded environment
DE4011745A1 (en) Task performance recorder for multi-tasking operating system protocol - includes stores for interrupt information of sizes of task selection interrupts and information on system calls
DE102010029349A1 (en) Control unit for exchanging data with a peripheral unit, peripheral unit, and method for data exchange
DE3114924C2 (en) Fast timing signal generator
DE3236302A1 (en) PROGRAMMABLE CONTROL
DE4426001A1 (en) Process for avoiding overload during a system startup of a multi-computer system and multi-computer system therefor
DE3532481A1 (en) DATA PROCESSING ARRANGEMENT
EP1230590B1 (en) Processor system
EP1278339A1 (en) Method and apparatus for communicating data from a first to a second data network
DE2722775A1 (en) DATA PROCESSING SYSTEM
EP2843486B1 (en) Method and apparatus for synchronising a control unit and at least one associated peripheral unit
WO1990002996A1 (en) Operating programme for a data processor
DE102013005748A1 (en) Automation device and method for reducing jitter
EP1870787B1 (en) Method for monitoring a cyclic control program
DE102006052012A1 (en) Processor synchronizing method for multiprocessor system, involves starting new data processing processes on processors when previous data processing processes are terminated and sufficient data lie for new data processing processes
EP1548603B1 (en) Method and apparatus for controlling memory access
DE2813079B2 (en) High security multi-computer system
DE102018205390A1 (en) Method and device for error handling in a communication between distributed software components
EP1369754B1 (en) Method for the serial transfer of data between a position measuring device and a processing unit
WO2023066626A1 (en) Method for processing data using a data processing network comprising a plurality of data processing modules, data processing module and data processing network
DE102005011034A1 (en) Operation of computer telephony integration device by means of web browser involves automatic generation of hypertext transfer protocol requests for determination of information by browser integrated functions
DE102009000584A1 (en) Diagnosis of the synchronization of two communication networks of an electronic data processing system

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection