-
Die Erfindung betrifft eine Datenverarbeitungsvorrichtung, die mehrere CPUs beinhaltet.
-
Ein Multiprozessorsystem mit mehreren CPUs verwendet ein für jede CPU vorbereitetes Synchronizitätsflag, um eine Gleichzeitigkeit zwischen CPUs durchzuführen (vgl. zum Beispiel Patentliteratur 1). Eine konventionelle Technologie bereitet ein Synchronizitätsflag für jede CPU in einer Synchronizitätsflagregion in einem Speicher vor, auf den jede CPU zugreift. Das Synchronizitätsflag ist ein Zähler mit einem Bit oder mehr. Wenn sich jede CPU mit einer anderen CPU synchronisiert (zum Beispiel in einem Fall, in dem es notwendig ist, Zeitsequenzen einzuhalten und auf eine identische Variable in einer Speicherregion oder einer identischen I/O-Einrichtung zuzugreifen), setzt jede CPU einen Wert, der anzeigt, welche Verarbeitung ausgeführt worden ist, in das eigene Synchronizitätsflag. Wenn jede CPU eine Verarbeitung beendet und zu der folgenden Verarbeitung fortschreitet, fährt jede CPU damit fort, auf alle Synchronizitätsflags anderer CPUs Bezug zu nehmen, und wartet auf eine Bedingung dahingehend, dass alle Synchronizitätsflags einen Wert annehmen, welcher es ermöglicht, zu der folgenden Verarbeitung fortzuschreiten. Wenn alle Synchronizitätsflags den Wert annehmen, geht jede CPU zu der nächsten Verarbeitung über.
- Patentliteratur 1: JP 2005-71109 A
-
Der Erfinder der vorliegenden Anmeldung stellte Folgendes fest. In einer konventionellen Technologie muss jede CPU für Synchronizität auf alle Synchroniziätsflags anderer CPUs Bezug nehmen. Wenn die Anzahl von CPUs zunimmt, kann die Anzahl von Bezugnahmezeiten, die für Synchronizität erforderlich ist, beschleunigt zunehmen. Für die gesamte Datenverarbeitungsvorrichtung kann eine Verarbeitungslast für Synchronizität zunehmen.
-
Der Erfindung liegt als eine Aufgabe zugrunde, eine Verarbeitungseffizienz für Synchronizität in einer Datenverarbeitungsvorrichtung mit mehreren CPUs zu verbessern.
-
In Übereinstimmung mit einem Aspekt der Erfindung beinhaltet eine Datenverarbeitungsvorrichtung eine Vielzahl von CPUs, eine Vielzahl von Beendigungsflags, einen Zähler, einen ersten Aktualisierungsabschnitt und einen zweiten Aktualisierungsabschnitt. Die mehreren Beendigungsflags entsprechen jeweils den mehreren CPUs. Jede der CPUs setzt unabhängig ein entsprechendes Beendigungsflag, das jeder der CPUs entspricht. Jedes der Beendigungsflags zeigt eine Ausführungsbeendigung einer Synchronität erfordernden Verarbeitung an. Der Zähler zeigt einen Zustand, nachdem eine vorbestimmte Anzahl der Beendigungsflags gesetzt ist und bevor alle der Beendigungsflags gesetzt sind, anhand eines Zählerwerts. Die vorbestimmte Anzahl der Beendigungsflags entspricht einem Teil einer Gesamtanzahl der Beendigungsflags der CPUs. Der erste Aktualisierungsabschnitt aktualisiert den Zählerwert, wenn die vorbestimmte Anzahl der Beendigungsflags gesetzt ist. Der zweite Aktualisierungsabschnitt aktualisiert den Zählerwert weiter und setzt alle der Beendigungsflags zurück, wenn der erste Aktualisierungsabschnitt den Zählerwert aktualisiert und alle der Beendigungsflags gesetzt sind. Jede der CPUs führt die Synchronität erfordernde Verarbeitung in Übereinstimmung mit dem durch den zweiten Aktualisierungsabschnitt aktualisierten Zählerwert aus. Nachdem jede der CPUs die Synchronität erfordernde Verarbeitung beendet und das entsprechende Beendigungsflag setzt, führt jede der CPUs eine Synchronität nicht erfordernde Verarbeitung aus.
-
In Übereinstimmung mit der Datenverarbeitungsvorrichtung ist es möglich, dass jede der CPUs auf den gemeinsamen einzelnen Zähler Bezug nimmt und die zu synchronisierende Verarbeitung ausführt. Daher ist es in der gesamten Datenverarbeitungsvorrichtung möglich, eine Verarbeitungslast für Synchronizität im Vergleich mit einer konventionellen Technologie zu reduzieren. Daher ist es möglich, die Effizienz der Verarbeitung für Synchronizität zu verbessern.
-
Jede der CPUs für die notwendig synchrone Verarbeitung in Übereinstimmung mit dem Wert des Zählers aus. Während einer Zeitspanne nach dem Abschluss bzw. der Beendigung der notwendig synchronen Verarbeitung und dem Setzen des eigenen Beendigungsflags vor dem Beginnen der folgenden notwendig synchronen Verarbeitung führt jede der CPUs die nichtnotwendig synchrone Verarbeitung aus. Daher ist es möglich, die Effizienz der Verarbeitung weiter zu verbessern.
-
Zum Beispiel sei angenommen, dass es in jeder Verarbeitung einen Abschnitt gibt, der nicht notwendigerweise ausgeführt wird. Der Abschnitt, der nicht notwendigerweise ausgeführt wird, entspricht zum Beispiel einer Verarbeitung, die nur in einem Fall ausgeführt wird, in dem eine Verarbeitungslast klein ist. In diesem Fall kann dann, wenn der Zählerwert gleich einem durch den ersten Aktualisierungsabschnitt vor der Ausführung oder während der Ausführung der Verarbeitung zu aktualisierenden Wert ist, der Abschnitt, der nicht notwendigerweise ausgeführt wird, weggelassen werden. In diesem Fall ist es möglich, schnell auf eine andere Verarbeitung umzuschalten und die Effizienz der Verarbeitung zu verbessern.
-
Das vorstehende sowie weitere Ziele, Merkmale und Vorteile der Erfindung sind der folgenden detaillierten Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen besser entnehmbar. In den Zeichnungen ist
-
1 ein Diagramm, das eine Konfiguration eines Mehrkernprozessors darstellt;
-
2 ein Diagramm, das einen Verarbeitungsbetriebsablauf in jeder CPU darstellt;
-
3 ein Ablaufdiagramm, das eine durch jede CPU durchgeführte Verarbeitung darstellt;
-
4 ein Diagramm, das eine Konfiguration eines Mehrkernprozessors in einem zweiten Ausführungsbeispiel darstellt;
-
5A ein Diagramm, das einen Verarbeitungsbetriebsablauf in jeder CPU in einem dritten Ausführungsbeispiel darstellt;
-
5B ein Ablaufdiagramm, das eine Zählermanipulationsverarbeitung in dem dritten Ausführungsbeispiel darstellt; und
-
6 ein Ablaufdiagramm, das eine Zählermanipulationsverarbeitung in einem vierten Ausführungsbeispiel darstellt.
-
Nachstehend wird eine erfindungsgemäße Datenverarbeitungsvorrichtung erklärt. Es wird angenommen, dass die erfindungsgemäße Datenverarbeitungsvorrichtung auf einen Mehrkernprozessor angewandt ist. Der Mehrkernprozessor in dem vorliegenden Ausführungsbeispiel ist ein Mikroprozessor, in welchem mehrere CPUs in einem einzelnen Gehäuse versammelt sind. Da jede von mehreren CPUs, die eingebaut sind, als ein CPU-Kern oder ein Kern bezeichnet werden kann, wird diese Art eines Mikroprozessors als ein Mehrkernprozessor bezeichnet.
-
(Erstes Ausführungsbeispiel)
-
Wie in 1 dargestellt beinhaltet ein Mehrkernprozessor 11 in einem ersten Ausführungsbeispiel mehrere CPUs 1a, 1b, 1c, 1d, ein ROM 2, das feste Daten und ein von jeder der CPUs 1a–1d ausgeführtes Programm speichert, einen Speicher 3, der von jeder der CPUs 1a–1d gemeinsam genutzt wird, I/Os bzw. Eingänge/Ausgänge 4, 5, und einen Bus 6, der die vorstehenden Elemente wechselseitig miteinander verbindet. Der Mehrkernprozessor 11 kann auch ganz einfach als ein Prozessor bezeichnet werden. Die Eingänge/Ausgänge 4, 5 entsprechen einem Beispiel einer I/O- bzw. Eingabe/Ausgabe-Einrichtung. Der Speicher 3 ist in den Ausführungsbeispielen beispielsweise ein RAM. Die Anzahl der mehreren CPUs ist in dem Ausführungsbeispiel beispielsweise gleich vier.
-
Der Prozessor 11 beinhaltet vier Beendigungsflags 7a, 7b, 7c, 7d, welche jeweils für die CPUs 1a–1d bereitgestellt sind. Die Beendigungsflags 7a-7d entsprechen jeweils den CPUs 1a–1d. Der Prozessor 11 beinhaltet exklusive Leitungen 9a, 9b, 9c, 9d. Die exklusiven Leitungen 9a–9d verbinden jeweils die CPUs 1a–1d und die Beendigungsflags 7a–7d zum Setzen der Beendigungsflags 7a–7d wie in 1 beschrieben. In diesem Beispiel bedeutet das Setzen von Beendigungsflags 7a–7d das Schreiben von ”1” in die Beendigungsflags 7a–7d mit einer einzelnen exklusiven Anweisung. Die exklusive Anweisung kann zum Beispiel eine Bitmanipulationsanweisung ”setf” sein.
-
Nebenbei bemerkt wird in dem Ausführungsbeispiel in einem Fall, in dem die CPUs 1a–1d nicht besonders voneinander unterschieden werden, eine beliebige eine der CPUs 1a–1d als eine CPU 1 bezeichnet werden. Ähnlich dazu wird in einem Fall, in dem die Beendigungsflags 7a–7d nicht besonders voneinander unterschieden werden, ein beliebiges eines der Beendigungsflags 7a–7d als ein Beendigungsflag 1 bezeichnet werden.
-
Der Prozessor 11 beinhaltet einen Zähler 13, der für die CPUs 1a–1d gemeinsam vorgesehen ist. Der Prozessor 11 beinhaltet eine ODER-Schaltung 15, eine UND-Schaltung 16, und eine Addiererschaltung 17 als eine Hardwareschaltung, die den Zähler 13 in Übereinstimmung mit den Beendigungsflags 7a–7d betreibt.
-
Die Zähler 13 bzw. der Zähler 13 sind bzw. ist in dem vorliegenden Ausführungsbeispiel ein Zähler mit 2 Bits oder mehr. Die CPUs 1a–1d sind für den Zähler über den Bus 6 zugänglich.
-
Die ODER-Schaltung 15 setzt einen Wert eines logischen UND der Beendigungsflags 7a–7d in ein geringstwertiges Bit (Least Significant Bit, LSB) des Zählers 13. Daher setzt dann, wenn eine vorbestimmte Anzahl (in diesem Beispiel 1) der Beendigungsflags 7a–7d gesetzt ist, die ODER-Schaltung 15 das LSB des Zählers 13 von ”0” auf ”1”. Nebenbei bemerkt ist die vorbestimmte Anzahl der Beendigungsflags 7 ein Teil der Beendigungsflags 7a–7d, das heißt, ist gleich oder kleiner als die Gesamtanzahl der Beendigungsflags 7a–7d. Das Setzen des LSB des Zählers 13 von ”1” auf ”0” entspricht einem Aktualisieren eines Werts des Zählers 13 auf einen Wert, der um 1 größer ist. Das heißt, wenn das LSB des Zählers 13 von ”1” auf ”0” gesetzt wird, wird der Zähler 13 um 1 inkrementiert. Der Wert des Zählers 13 kann auch als ein Zählerwert bezeichnet werden.
-
Die Addiererschaltung 17 gibt einen Wert aus, der 1 zu einem Datenwert des zweiten Bits oder mehr des Zählers 13 addiert.
-
Wenn alle der Beendigungsflags 7a–7d gesetzt sind, gibt die UND-Schaltung 16 ein Schreibfreigabesignal (Write Enable; WE-Signal) an den Zähler 13 aus. Dann wird der Ausgangswert der Addiererschaltung 17 in das zweite Bit oder mehr des Zählers 13 geschrieben. Wenn der Zähler 13 das WE-Signal ausgibt, werden alle der Beendigungsflags 7a–7d zurückgesetzt (löschen auf ”0”), und wird das LSB des Zählers 13 durch die ODER-Schaltung 15 auf ”0” gesetzt. Wenn alle der Beendigungsflags 7a–7d gesetzt sind, wird der Zähler 13 insgesamt um ein Inkrement fortgeschaltet.
-
Daher wird dann, wenn alle der Beendigungsflags 7a–7d gesetzt sind, nachdem alle der Beendigungsflags 7a–7d zurückgesetzt wurden, der Zähler 13 um insgesamt 2 Inkremente fortgeschaltet. Das heißt, wenn irgendeines der Beendigungsflags 7a–7d gesetzt ist, nachdem alle der Beendigungsflags 7a–7d zurückgesetzt sind, der Zähler 13 durch die ODER-Schaltung 15 um ein Inkrement fortgeschaltet (das heißt, das LSB des Zählers 13 wird auf ”1” gesetzt). Wenn alle der Beendigungsflags 7a–7d gesetzt sind, wird der Zähler 13 durch die UND-Schaltung 16 um ein Inkrement weiter fortgeschaltet. Dann werden alle der Beendigungsflags 7a–7d zurückgesetzt.
-
Nebenbei bemerkt zeigt ein Status bzw. Zustand, in dem das LSB des Zählers 13 gleich ”1” ist (das heißt ein Zustand, in dem der Zählerwert eine ungerade Zahl ist), einen Zustand an, in dem eines der Beendigungsflags 7a–7d gesetzt worden ist und noch nicht alle der Beendigungsflags 7a–7d gesetzt worden sind.
-
Der Zählerwert wird nach einem vorbestimmten finalen Wert auf 0 zurückgeführt. Eine Zeitspanne, in der der Zählerwert ausgehend von 0 erneut auf 0 zurückkehrt, entspricht einem Zyklus (vgl. 2.).
-
Nachstehend wir die Verarbeitung in jeder der CPUs 1a–1d erklärt.
-
<Abriss>
-
Der Prozessor 11 ist mit zum Beispiel einer elektronischen Steuereinheit versehen, die einen Motor eines Fahrzeugs steuert. Jede der CPUs 1a–1d führt eine Steuerungsverarbeitung zum Steuern des Motors aus. Die Steuerungsverarbeitung zum Steuern des Motors ist eine periodische Steuerungsverarbeitung (die auch als eine periodische Steuerungssystemverarbeitung bezeichnet wird), welche eine Periodizität aufweist.
-
Die periodische Steuerungsverarbeitung kann eine Synchronizität in einem globalen Grad grober Körnung durchführen bzw. global grob synchronisieren. Die Steuerungsverarbeitung ist in einen Abschnitt, in dem Synchronizität erforderlich ist, und einen gegenüber diesem Abschnitt anderen Abschnitt (einen Abschnitt, der keine Synchronizität erfordert), unterteilt. Nebenbei bemerkt beinhaltet die Synchronizität Exklusion. Ein Abschnitt bedeutet einen Teil der gesamten Verarbeitung. Daher ist der Synchronizität erfordernde Abschnitt eine Verarbeitung (nachstehend als eine Synchronizität erfordernde Verarbeitung bezeichnet), in der die Synchronizität erforderlich ist, und entspricht einer Verarbeitung, die geordnet ausgeführt werden sollte. Ähnlich dazu ist der keine Synchronizität erfordernde Abschnitt eine Verarbeitung (nachstehend als eine Synchronizität nicht erfordernde Verarbeitung bezeichnet), in der die Synchronizität nicht erforderlich ist, und entspricht einer Verarbeitung, die zu einer beliebigen Zeit ausgeführt werden kann. Die Verarbeitung, die zu beliebiger Zeit ausgeführt werden kann, bedeutet eine Verarbeitung, die keine zeitliche Relevanz mit einer anderen Verarbeitung aufweist.
-
In dem vorliegenden Ausführungsbeispiel wird angenommen, dass Synchronizitätsfenster W1, W2 durch den Zählerwert wie in 2 beschrieben definiert und über die CPUs 1a–1d bereitgestellt werden. In jedem Synchronizitätsfenster ist der Synchronizität erfordernde Abschnitt (vgl. ein Abschnitt 1 und ein Abschnitt 2 in 2) bereitgestellt. Ferner ist es, da der keine Synchronizität erfordernde Abschnitt (vgl. einen schräg schraffierten Teil von 2) zwischen den Abschnitten 1 und 2 bereitgestellt ist, möglich, Synchronizität mit geringerem Verschnitt in einem Grad groben Korns bzw. mit geringerem unnützen Aufwand Synchronizität grob zu realisieren.
-
<Verarbeitungsanordnung>
-
Initial ist die Verarbeitung in Verarbeitungen (Synchronizität erfordernde Verarbeitungen), die Synchronizität erfordern, unterteilt. Die unterteilte Synchronizität erfordernde Verarbeitung und eine Synchronizität nicht erfordernde Verarbeitung, die auf die unterteilte Synchronizität erfordernde Verarbeitung folgt, sind zu einer Einheitsverarbeitung kombiniert.
-
Wie durch den Abschnitt 1, den Abschnitt 2 und die auf den Abschnitt 1 und den Abschnitt 2 folgenden schrägschraffieren Teile in 2 dargestellt, ist die Einheitsverarbeitung, die die Synchronizität erfordernde Verarbeitung und die Synchronizität nicht erfordernde Verarbeitung beinhaltet, in jeder der CPUs 1a–1d angeordnet (eingeplant). Jede Einheitsverarbeitung ist mit dem Zählerwert assoziiert bzw. dem Zählerwert zugeordnet.
-
In 2 ist ein Abschnitt M (M ist eine Ganzzahl von 1 oder größer) der Abschnitt (die Synchronizität erfordernde Verarbeitung), der Synchronizität erfordert, und ist der auf den Abschnitt M folgende schrägschraffierte Teil ein Abschnitt (der Synchronizität nicht erfordernde Abschnitt), der keine Synchronizität erfordert. Der keine Synchronizität erfordernde Abschnitt ist unabhängig von einem Ausführungsinhalt anderer CPUs 1 ausführbar.
-
In 2 entspricht ein Fall, in dem der Zählerwert gleich 0 oder 1 ist, dem Synchronizitätsfenster W1. Der Abschnitt 1 ist an dem Synchronizitätsfenster W1 angeordnet. Ein Fall, in dem der Zählerwert gleich 2 oder 3 ist, entspricht dem Synchronizitätsfenster W2. Der Abschnitt 2 ist an dem Synchronizitätsfenster W2 angeordnet. Das heißt, ein Fall, in dem der Zählerwert N (N ist 0 oder eine größere gerade Zahl) und (N + 1) ist entspricht einem Synchronizitätsfenster Wm (M = N/2 + 1). Ein Abschnitt M ist an dem Synchronizitätsfenster Wm angeordnet.
-
Zum Beispiel ist der Abschnitt 1 der CPU 1a eine Verarbeitung, in welcher die CPU 1a auf den Eingang/Ausgang 4 zugreift. Der Abschnitt 1 der CPU 1b ist eine Verarbeitung, in welcher die CPU 1b auf den Eingang/Ausgang 5 zugreift. Der Abschnitt 1 der CPU 1c ist eine Verarbeitung, in welcher die CPU 1c auf eine Variable Da in dem Speicher 3 zugreift. Der Abschnitt 1 der CPU 1d ist eine Verarbeitung, in welcher die CPU 1d auf eine Variable Db in dem Speicher 3 zugreift. Der Abschnitt 1 der CPU 1a ist eine Verarbeitung, in welcher die CPU 1a auf den Eingang/Ausgang 5 zugreift. Der Abschnitt 1 der CPU 1b ist eine Verarbeitung, in welcher die CPU 1b auf den Eingang/Ausgang 4 zugreift. Der Abschnitt 1 der CPU 1c ist eine Verarbeitung, in welcher die CPU 1c auf eine Variable Da in dem Speicher 3 zugreift. Der Abschnitt 1 der CPU 1d ist eine Verarbeitung, in welcher die CPU 1d auf eine Variable Dd in dem Speicher 3 zugreift. Folglich ist vorgesehen bzw. geplant, dass nicht gleichzeitig von mehreren CPUs 1 aus auf ein identisches Zugriffsziel zugegriffen wird.
-
<Verarbeitungsbetriebsablauf in jeder CPU>
-
Wie in 2 dargestellt, sind dann, wenn der Zählerwert 0 ist, die CPUs 1a–1d in dem Abschnitt 1, und führt jede der CPUs 1a–1d die Synchronizität erfordernde Verarbeitung der ”dem Zählerwert = 0” entsprechenden Einheitsverarbeitungen aus. Wenn die Synchronizität erfordernde Verarbeitung abgeschlossen bzw. beendet ist, setzt jede der CPUs 1a–1d ihr eigenes Beendigungsflag 7a–7d. Dann führt jede der CPUs 1a–1d die Synchronizität nicht erfordernde Verarbeitung (den auf den Abschnitt 1 folgenden schrägschraffierten Teil in 2) der Einheitsverarbeitungen aus. Nebenbei bemerkt wird dann, wenn irgend eines der Beendigungsflags 7a–7d gesetzt ist, der Zähler 13 um ein Inkrement fortgeschaltet (das heißt, das LSB wird auf ”1” gesetzt).
-
Wenn alle der CPUs 1a–1d die Beendigungsflags 7a–7d setzen, wird der Zähler 13 um ein Inkrement fortgeschaltet, und dann werden alle der Beendigungsflags 7a–7d zurückgesetzt. Daher wird dann, wenn alle der Beendigungsflags 7a–7d gesetzt werden, nachdem alle der Beendigungsflags 7a–7d zurückgesetzt sind, der Zähler 13 um insgesamt zwei Inkremente fortgeschaltet.
-
Daher nimmt dann, wenn die Synchronizität nicht erfordernde Verarbeitung abgeschlossen ist, jede der CPUs 1a–1d auf den Zählerwert des Zählers 13 Bezug, und wartet, bis der Zähler 13 um zwei Inkremente fortgeschaltet ist.
-
Wenn jede der CPUs 1a–1d erfasst, dass der Zähler 13 um zwei Inkremente fortgeschaltet ist, beginnt jede der CPUs 1a–1d die Synchronizität erfordernde Verarbeitung (der Abschnitt 2 in 2), welche in diesem Beispiel in einer folgenden Einheitsverarbeitung liegt und ”dem Zählerwert = 2” entspricht. Wenn der Zähler 13 zu der Zeit, zu der die Synchronizität nicht erfordernde Verarbeitung abgeschlossen ist, bereits um zwei Inkremente fortgeschaltet worden ist, beginnt eine CPU 1 in der folgenden Einheitsverarbeitung unmittelbar eine Synchronizität erfordernde Verarbeitung. Das heißt, das jede der CPUs 1a–1d die folgende Synchronizität erfordernde Verarbeitung beginnt, nachdem jede der CPUs 1a–1d erfasst, dass alle der CPUs 1a–1d die Synchronizität erfordernde Verarbeitung der gegenwärtigen Zeit beenden.
-
Wenn jede der CPUs 1a–1d den Abschnitt 2 in 2 beendet, setzt die jede der CPUs 1a–1d das eigene Beendigungsflag 7, und führt dann die Synchronizität nicht erfordernde Verarbeitung (den schrägschraffierten Teil, der in 2 auf den Abschnitt 2 folgt) aus.
-
Der identische Betriebsablauf wird wiederholt. Wenn der Zählerwert von einem vorbestimmten finalen Wert bzw. Endwert auf 0 zurückkehrt (das heißt, wenn alle die periodischen Verarbeitungen in einem einzelnen Zyklus abgeschlossen sind), führt jede der CPUs 1a–1d die ”dem Zählerwert = 0” entsprechende Einheitsverarbeitung erneut aus.
-
Nachstehend wird die Verarbeitung in jeder der CPUs 1a–1d unter Bezugnahme auf 3 erklärt.
-
Wie in 3 dargestellt, liest dann, wenn eine CPU 1 den Betriebsablauf beginnt, die CPU 1 den Zählerwert des Zählers 13 in S110. In S120 ermittelt die CPU 1, ob das LSB in dem Zähler 13 gleich 0 ist oder nicht.
-
Wenn die CPU 1 ermittelt, dass das LSB des Zählers 13 nicht gleich 0 ist (S120: NEIN), kehrt die Verarbeitung zu S110 zurück. Das LSB des Zählers 13 ist gleich 1, und die Verarbeitung kehrt zu S110 zurück.
-
Wenn ermittelt wird, dass das LSB des Zählers 13 gleich 0 ist (S120: JA), ermittelt die CPU 1, dass der Zähler 13 um zwei Inkremente fortgeschaltet ist, und geht zu S130 über. Die Situation, dass der Zähler 12 um zwei Inkremente fortgeschaltet ist, bedeutet, dass der Zählerwert durch die UND-Schaltung 16 aktualisiert ist, und dass eine folgende Einheitsverarbeitung ausgeführt werden kann.
-
In S130 springt die CPU 1 zu einer Kopfadresse (im Einzelnen, einer Kopfadresse eines Programms einer Aufgabe) einer dem gegenwärtigen Zählerwert (nämlich dem in S110 gelesenen Zählerwert) entsprechenden Aufgabe.
-
Die Aufgabe entspricht der Einheitsverarbeitung. Nebenbei bemerkt beinhaltet die Aufgabe eine Anweisung (entsprechend der exklusiven Anweisung in dem vorliegenden Ausführungsbeispiel) zum Setzen des Beendigungsflags 7 einer entsprechenden CPU 1. Die Anweisung wird bei S150 ausgeführt. Das ROM 2 speichert eine Aufgabentabelle, die die Kopfadresse der dem Zählerwert entsprechenden Aufgabe beschreibt. In S130 nimmt die CPU 1 auf die Aufgabentabelle Bezug, spezifiziert die Kopfadresse der dem gegenwärtigen Zählerwert entsprechenden Aufgabe, und springt zu der spezifizierten Kopfadresse.
-
Wenn die CPU 1 zu der Kopfadresse der Aufgabe springt, führt die CPU 1 initial die Synchronizität erfordernde Verarbeitung unter den Aufgaben aus (S140). Wenn die CPU 1 eine Ausführung der Synchronizität erfordernden Verarbeitung beendet, setzt die CPU 1 das eigene Beendigungsflag 7 (S150), und dann führt die CPU 1 die Synchronizität nicht erfordernde Verarbeitung unter den Aufgaben aus (S160). Das eigene Beendigungsflag 7 kann auch als ein entsprechendes Beendigungsflag 7, das der CPU 1 entspricht, bezeichnet werden.
-
Wenn die CPU 1 die Synchronizität nicht erfordernde Verarbeitung beendet, kehrt die Verarbeitung zu S110 zurück. Wenn das LSB des Zählers 13 0 wird (oder das LSV bereits gleich 0 ist), führt die CPU 1 erneut die Verarbeitungen nach S130 durch und führt die folgende Einheitsverarbeitung (die Aufgabe) aus.
-
In den Prozessoren 11 sind die Beendigungsflags 7a–7d jeweils für CPUs 1a–1d bereitgestellt. Darüber hinaus ist der für die CPUs 1a–1d gemeinsame Zähler 13 bereitgestellt. Wenn eines der Beendigungsflags 7a–7d gesetzt wird, wird der Zähler 13 um ein Inkrement weitergeschaltet. Wenn alle der Beendigungsflags 7a–7d gesetzt sind, wird der Zähler 13 um ein weiteres Inkrement fortgeschaltet, und werden die Beendigungsflags 7a–7d zurückgesetzt.
-
Jede der CPUs 1a–1d führt die Synchronizität erfordernde Verarbeitung in Übereinstimmung mit einem geraden, durch Setzen aller der Beendigungsflags 7a–7d aktualisierten Zählerwert aus. Wenn jede der CPUs 1a–1d die Synchronizität erfordernde Verarbeitung beendet und das jeder der CPUs 1a–1d entsprechende Beendigungsflag setzt, führt jede der CPUs 1a–1d die Synchronizität nicht erfordernde Verarbeitung aus.
-
In dem Prozessor 11 ist es möglich, dass jede der CPUs 1a–1d auf den gemeinsamen Zähler 13 Bezug nimmt und die Synchronizität erfordernde Verarbeitung durchführt. Daher ist es möglich, im Vergleich mit einer konventionellen Technologie insgesamt eine Verarbeitungslast für Synchronizität zu reduzieren. Daher ist es möglich, die Effizienz der Verarbeitung für Synchronizität zu verbessern.
-
Jede der CPUs 1a–1d führt die Synchronizität erfordernde Verarbeitung in Übereinstimmung mit dem Zählerwert aus. Während einer Zeitspanne nach Beenden der Synchronizität erfordernden Verarbeitung und Setzen des entsprechenden Beendigungsflags 7 vor Beginnen der folgenden Synchronizität erfordernden Verarbeitung führt jede der CPUs 1a–1d die Synchronizität nicht erfordernde Verarbeitung aus. Daher ist es möglich, die Effizienz der Verarbeitung weiter zu verbessern.
-
Es wird angenommen, dass es einen Abschnitt gibt, der nicht in jeder Verarbeitung ausgeführt werden muss. In diesem Fall kann dann, wenn das LSB des Zählers 13 gleich 1 ist, zumindest eine der CPUs 1a–1d die Verarbeitung entsprechend dem Abschnitt, der nicht ausgeführt zu werden braucht, überspringen.
-
In diesem Fall ist es möglich, rasch zu einer anderen Verarbeitung umzuschalten, und die Effizienz der Verarbeitung zu verbessern.
-
Jede der CPUs 1a–1d setzt das die eigenen Beendigungsflags 7a–7d mit einer einzelnen exklusiven Anweisung. Es ist möglich, die Verarbeitungslast zu verringern. Es ist möglich, von der Synchronizität erfordernden Verarbeitung rasch auf die Synchronizität nicht erfordernde Verarbeitung umzuschalten.
-
Da eine Manipulation (eine Aktualisierung des Werts des Zählers) des Zählers 13 durch die exklusive Hardwareschaltung, die sich von den CPUs 1a–1d unterscheidet, durchgeführt wird, ist es möglich, die Verarbeitungslast der CPUs 1a–1d weiter zu reduzieren.
-
Die Anzahl von Bits des Zählers 13 ist nicht notwendigerweise 2 Bits oder mehr. Die Anzahl von Bits kann 1 Bit sein, welches die kleinste Einheit ist. Das heißt, die Anzahl von Bits kann wahlfrei bestimmt werden. Wenn der Zählerwert innerhalb eines Zyklus der periodischen Steuerungsverarbeitung überläuft, kann die Anzahl von Bits ermittelt werden, um ein Inkrement zu erfassen, während ein Überlauf berücksichtigt wird.
-
Nebenbei bemerkt kann dann, wenn mehrere Synchronizität nicht erfordernde Verarbeitungen in einem Teil der CPUs 1 fortgesetzt werden, der Teil der CPUs 1 mehrere die Synchronisation nicht erfordernde Abschnitte zusammen ausführen. In diesem Fall kann die CPU 1, die die zusammengefassten Abschnitte ausführt, warten, bis der Zählerwert um Inkremente des zweifachen der Anzahl der zusammengefassten Abschnitte weitergeschaltet ist, bevor sie einen auf die zusammengefassten, Synchronizität nicht erfordernden Abschnitte folgenden Folgeabschnitt beginnt. Es wird angenommen, dass die Anzahl von Bits des Zählers 13 gleich N ist. In diesem Fall ist es möglich, eine Verarbeitung von 2^(N–1) oder weniger zusammenzufassen.
-
(Zweites Ausführungsbeispiel)
-
Der Prozessor in dem zweiten Ausführungsbeispiel wird erklärt. Zu dem ersten Ausführungsbeispiel ähnlichen Komponenten und Verarbeitungen werden die zu dem ersten Ausführungsbeispiel identischen Symbole gegeben, und eine Erklärung wird weggelassen.
-
Im Vergleich zu dem Prozessor 11 in dem ersten Ausführungsbeispiel weist ein Prozessor 21 in dem zweiten Ausführungsbeispiel wie in 4 dargestellt die exklusiven Leitungen 9a–9d nicht auf und setzt das Beendigungsflag 7 entsprechend jeder der CPUs 1a–1d über den Bus 6. Daher setzt jede der CPUs 1a–1d das jeder der CPUs 1a–1d entsprechende Beendigungsflag 7 durch eine Anweisung einer allgemeinen Software.
-
Zum Beispiel kann dann, wenn die Bitmanipulationsanweisung für jedes der Beendigungsflags 7a–7d nicht vorhanden ist, jede der CPUs 1a–1d eine Leseanweisung, eine Berechnungsanweisung und eine Schreibanweisung ausführt. In Übereinstimmung mit der Leseanweisung werden alle der Beendigungsflags 7a–7d als ein Datum aus mehreren Bits in ein internes Register gelesen. In Übereinstimmung mit der Berechnungsanweisung wird ein Bit ”0” nur in dem Bit durch bzw. auf ”1” ersetzt, das unter den gelesenen mehreren Bits dem entsprechenden Beendigungsbit 7 entspricht. In Übereinstimmung mit der Schreibanweisung wird ein Datum nach der Ausführung der Berechnungsanweisung in die Beendigungsflags 7a–7d geschrieben.
-
In Übereinstimmung mit dem Prozessor 21 in dem zweiten Ausführungsbeispiel wird (außer der Wirkung durch die exklusive Anweisung) eine zu dem ersten Ausführungsbeispiel ähnliche Wirkung erhalten.
-
(Drittes Ausführungsbeispiel)
-
Ein Prozessor in dem dritten Ausführungsbeispiel weist im Vergleich zu den Prozessoren 11, 21 in dem ersten Ausführungsbeispiel und dem zweiten Ausführungsbeispiel die UND-Schaltung 16 und die Addiererschaltung 17 nicht auf. Eine einzelne vorbestimmte CPU (hierin zum Beispiel die CPU 1a) der CPU 1 unter den CPUs 1a–1d hat Funktionen, die zu der UND-Schaltung 16 und der Addiererschaltung 17 ähnlich sind. Die Einzel-CPU 1a ermöglicht es zum Beispiel, auf die Beendigungsflags 7a–7d über den Bus 6 zuzugreifen.
-
Wie in 5A und 5B dargestellt, führt dann, wenn die CPU 1a die Synchronizität erfordernde Verarbeitung der Einheitsverarbeitungen beendet und das Beendigungsflag 7a setzt, die CPU 1a die in 5B dargestellte Zählermanipulationsverarbeitung aus, und führt dann die Synchronizität nicht erfordernde Verarbeitung aus. Das heißt, die Zählermanipulationsverarbeitung wird zwischen S150 und S160 von 3 in der CPU 1a durchgeführt.
-
In S210 liest die CPU 1a die Beendigungsflags 7a–7d in der Zählermanipulationsverarbeitung. In S220 ermittelt die CPU 1a, ob alle der Beendigungsflags 7a–7d gleich ”1” sind (das heißt, ob alle der Beendigungsflags 7a–7d gesetzt sind). Wenn nicht alle der Beendigungsflags 7a–7d gleich ”1” sind, kehrt die Verarbeitung zu S210 zurück.
-
Wenn in S220 ermittelt wird, dass alle der Beendigungsflags 7a–7d gleich ”1” sind, geht die Verarbeitung zu S230 über. In S230 aktualisiert die CPU 1a den Zählerwert, und wird der Zähler 13 um ein Inkrement weitergeschaltet. Zum Beispiel liest die CPU 1a den gegenwärtigen Zählerwert und schreibt einen Wert, zu dem 1 addiert ist, in den Lesewert in dem Zähler 13. In S240 setzt die CPU 1a alle der Beendigungsflags 7a–7d zurück, und beendet dann die Zählermanipulationsverarbeitung.
-
In Übereinstimmung mit dem Prozessor in dem dritten Ausführungsbeispiel wird die zu dem ersten Ausführungsbeispiel und dem zweiten Ausführungsbeispiel ähnliche Wirkung erhalten. Nebenbei bemerkt kann es genügen, dass eine einzelne CPU unter den mehreren CPUs auf die Beendigungsflags Bezug nimmt. Das heißt, dass nur die CPU 1a unter den CPUs 1a–1d auf die Beendigungsflags 7a–7d Bezug nimmt.
-
In einem modifizierten Beispiel kann die Zählermanipulationsverarbeitung in 5B nach der Synchronizität nicht erfordernden Verarbeitung ausgeführt werden.
-
(Viertes Ausführungsbeispiel)
-
Im Vergleich mit den Prozessoren 11, 21 in dem ersten Ausführungsbeispiel und dem zweiten Ausführungsbeispiel weist ein Prozessor in einem vierten Ausführungsbeispiel die ODER-Schaltung 15, die UND-Schaltung 16 und die Addiererschaltung 17 nicht auf. In dem vorliegenden Ausführungsbeispiel hat eine CPU 1, die das Beendigungsflag 7 an erster Stelle unter den CPUs 1a–1d setzt, nachdem alle der Beendigungsflags 7a–7d zurückgesetzt sind, eine zu der ODER-Schaltung 15, der UND-Schaltung 16 und der Addiererschaltung 17 ähnliche Funktion. Die CPU 1 unter den CPUs 1a–1d, die das Beendigungsflag 7 an erster Stelle setzt, nachdem alle der Beendigungsflags 7a–7d zurückgesetzt sind, wird als eine führende CPU 1 bezeichnet. Nebenbei bemerkt entspricht die CPU 1 einem Beispiel einer initialen CPU.
-
Daher führt dann, wenn jede der CPUs 1a–1d die Synchronizität erfordernde Verarbeitung der Einheitsverarbeitungen beendet und das entsprechende Beendigungsflag 7a–7d entsprechend jeder der CPUs 1a–1d setzt, jede der CPUs 1a–1d die in 6 dargestellte Zählermanipulationsverarbeitung aus, und führt dann die Synchronität nicht erfordernde Verarbeitung aus.
-
Wie in 6 beschrieben, liest jede der CPUs 1a–1d die Beendigungsflags 7a–7d in der Zählermanipulationsverarbeitung in S200. Jede der CPUs 1a–1d ermittelt in S205, ob nur das eigene Beendigungsflag 7 unter allen der Beendigungsflags 7a–7d gleich ”1” ist. Wenn jede der CPUs 1a–1d eine verneinende Entscheidung ermittelt (S205: NEIN), das heißt, wenn ein anderes Beendigungsflag 7 als das eigene Beendigungsflag 7 ebenfalls gleich ”1” ist, wird die Zählermanipulationsverarbeitung beendet.
-
Wenn jede der CPUs 1a–1d eine bejahende Entscheidung ermittelt (S20: JA), das heißt, wenn nur das entsprechende Beendigungsflag 7 gleich ”1” ist, geht die Verarbeitung zu S207 über, und wird das LSB des Zählers 13 auf ”1” gesetzt. In einem Fall, in dem eine CPU 1 eine bejahende Entscheidung ermittelt, entspricht die CPU 1 einer CPU 1, die das eigene Beendigungsflag 7 an erster Stelle setzt, und entspricht der führenden CPU 1. Daher hat die vorstehende Konfiguration die zu der ODER-Funktion 15 ähnliche Funktion.
-
Die CPU 1 (die führende CPU 1), die die Verarbeitung bei S207 durchführt, führt eine Verarbeitung durch, die identisch mit S210–S240 in 5B ist und in dem dritten Ausführungsbeispiel erklärt wurde. Demgemäß hat die CPU 1 eine Funktion ähnlich zu der UND-Schaltung 16 und der Addiererschaltung 17. Dann endet die Zählermanipulationsverarbeitung.
-
In Übereinstimmung mit dem Prozessor in dem vierten Ausführungsbeispiel ist es möglich, die Wirkung ähnlich zu dem ersten Ausführungsbeispiel und dem zweiten Ausführungsbeispiel zu machen. Nebenbei bemerkt führt jede der CPUs 1a–1d die Verarbeitung von S200 und S205 nur einmal in der Zählermanipulationsverarbeitung von 6 durch. Nur eine einzelne CPU 1, die die bejahende Entscheidung in bei S205 ermittelt, führt unter den CPUs 1a–1d die Verarbeitung von S207–S240 durch.
-
Als ein modifiziertes Beispiel ist es dann, wenn die ODER-Schaltung 15 bereitgestellt ist, möglich, die Verarbeitung von S207 in 6 zu entfernen.
-
Obwohl Ausführungsbeispiele hierin beschrieben wurden, ist die Erfindung nicht auf ein vorliegendes Ausführungsbeispiel beschränkt, sondern kann verschiedene Modi haben. Ein beliebiger Zahlenwert in den vorliegenden Ausführungsbeispielen ist ein Beispiel, und kann einen anderen Wert aufweisen.
-
Zum Beispiel kann in dem ersten Ausführungsbeispiel und dem dritten Ausführungsbeispiel die CPU 1a–1d ”1” in das LSB des Zählers 13 setzen, ohne dass die ODER-Schaltung 15 bereitgestellt ist. Im Einzelnen kann jede der CPUs 1a–1d zu der Zeit, zu der jede der CPUs 1a–1d das Beendigungsflag 7 entsprechend jeder der CPUs 1a–1d setzt, ”1” in das LSB in dem Zähler 13 setzen.
-
Die vorbestimmte Zahl ist nicht auf 1 beschränkt, sondern es kann wahlfrei eine beliebige Zahl kleiner als eine Gesamtanzahl der CPU 1 festgelegt werden. Zum Beispiel kann eine andere Schaltung anstelle der ODER-Schaltung 15 bereitgestellt sein. Die Schaltung setzt ”1” in das LSB in dem Zähler 13, wenn zwei oder drei der Beendigungsflags 7a–7d gesetzt sind. Eine Weise zum Aktualisieren des Zählerwerts kann auch wahlfrei bestimmt werden. Zum Beispiel kann der Zählerwert um zwei oder drei erhöht werden.
-
Eine in einem einzelnen Konfigurationselement enthaltene Funktion kann auf mehrere Konfigurationselemente verteilt sein, und in mehreren Konfigurationselementen enthaltene Funktionen können auf ein einzelnes Konfigurationselement vereint sein. Zumindest ein Teil der Konfiguration in den vorliegenden Ausführungsbeispielen kann durch eine bekannte Konfiguration mit identischer Funktion ersetzt werden. Ein Teil der Konfiguration in den vorliegenden Ausführungsbeispielen kann weggelassen werden. Zumindest ein Teil der Konfiguration in einem Ausführungsbeispiel kann zu der Konfiguration in einem anderen Ausführungsbeispiel hinzugefügt oder in diesem ausgetauscht werden. Zusätzlich zu dem Prozessor kann die Erfindung durch eine Steuervorrichtung und ein System mit dem Prozessor als Konfigurationselement, ein durch jede CPU in dem Prozessor ausgeführtes Programm, ein das Programm speicherndes Medium, ein Datenverarbeitungsverfahren und andere verschiedenartige Modi bereitgestellt werden.
-
Es wird angemerkt, dass ein Ablaufdiagramm oder eine Verarbeitung des Ablaufdiagramms in der vorliegenden Anmeldung Schritte (die auch als Abschnitte bezeichnet werden) beinhalten, von welchen jeder als zum Beispiel S110 repräsentiert ist. Ferner kann jeder Schritt in mehrere Unterschritte aufgeteilt sein, und können mehrere Schritte zu einem einzelnen Schritt kombiniert sein.
-
Während die Datenverarbeitungsvorrichtung unter Bezugnahme auf Ausführungsbeispiele derselben beschrieben wurde, versteht sich, dass die Erfindung nicht auf die Ausführungsbeispiele und Konstruktionen beschränkt ist. Die Datenverarbeitungsvorrichtung zielt darauf ab, verschiedene Modifikationen und äquivalente Anordnungen abzudecken. Während die verschiedenen Kombinationen und Konfigurationen beschrieben wurden, liegen andere Kombinationen und Konfigurationen, die mehr, weniger oder nur ein einzelnes Element beinhalten, ebenfalls innerhalb des Schutzbereichs der Erfindung.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-