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 1–3 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 1–3 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 1–3). 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: 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:
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 2–4 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.