-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft ein Multikernsystem, bei dem jeder einer Vielzahl von CPU-Kernen eine Verarbeitung für jede Aufgabe ausführt, eine fahrzeugseitige elektronische Steuerungseinheit und ein Aufgabenumschaltverfahren.
-
STAND DER TECHNIK
-
Beim Ausführen eines Programms führt eine CPU das Programm aus, wahrend es Aufgaben (eine Aufgabe ist eine ausführbare Einheit einer CPU) von dem Programm erzeugt und die Aufgaben plant. Im Falle einer Verarbeitung, die eine Zusicherung einer Ausführzeit erfordert, kann ein Planer eine Priorität einer jeden Aufgabe bestimmen und kann ein Zuteiler jede Aufgabe in Abhängigkeit der Priorität an die CPU zuweisen.
-
In einem Computer, in dem eine Vielzahl von CPU-Kernen angebracht ist, verbessert der Computer seine Verarbeitungseffizienz durch Zuweisen einer Vielzahl von Aufgaben an jeden CPU-Kern während eine zeitliche Überlappung erlaubt wird (siehe zum Beispiel Patentdokument 1). Patentdokument 1 beschreibt ein Multiprozessorsystem, das dazu konfiguriert ist, ein Ausmaß von Parallelverarbeitungsleistungsfähigkeit für jede Aufgabe zu berechnen und jede Aufgabe in Abhängigkeit des Ausmaßes der Parallelverarbeitungsleistungsfähigkeit und Länge der Verarbeitungszeit an jeden CPU-Kern zuzuweisen.
-
Es gibt ebenso ein System, das konfiguriert ist, um einer Vielzahl von CPU-Kernen anzuweisen, auf einem anderen OS zu arbeiten, so dass jedes OS Aufgaben teilt und ausfuhrt (siehe zum Beispiel Patentdokument 2). Patentdokument 2 beschreibt ein Multiprozessorsystem, das Verarbeitungslasten zwischen OSs durch Bestimmen einer Last für jedes OS und Anweisen eines CPU-Kerns, der auf einem OS mit niedriger Verarbeitungslast arbeitet, auf einem OS mit einer hohen Verarbeitungslast zu arbeiten, steuert.
-
Ein dynamisches Zuweisen von Aufgaben, wie bei dem in Patentdokument 2 beschriebenen CPU-Kern, kann jedoch Nachteile mit sich bringen. In einer Serie von Verarbeitungen einer Motorsteuerung zum Beispiel wird eine Aufgabe oft durch Anwenden eines Ausführungsergebnisses einer vorherigen Aufgabe auf eine Regelung für eine nächste Aufgabe ausgeführt. Da es schwierig ist, eine Drehzahl eines elektrischen Motors rapide zu erhöhen, berechnet zum Beispiel eine Aufgabe, die einen Betrag eines Stroms, der dem elektrischen Motor zugeführt wird, basierend auf der Regelung bestimmt, den Betrag eines Stroms, der dem elektrischen Motor zugeführt wird, so dass dieser in Abhängigkeit des vorhergehenden Betrags des Stroms einen Sollwert erreichen kann.
-
Auf diese Weise kann ein Multikernsystem in einem Steuerungssystem manchmal ein gewünschtes Ausfuhrungsergebnis nicht erreichen, wenn es das Ausfuhrungsergebnis der vorhergehenden Aufgabe nicht verwenden kann. Es besteht ebenso eine Möglichkeit, dass das System aufgrund einer plötzlichen Änderung bei einer gesteuerten Variable außer Kontrolle gerat, wenn es einen CPU-Kern, zu dem eine Aufgabe zugewiesen ist, einfach in Abhängigkeit einer Verarbeitungslast umschaltet oder es einen anderen CPU-Kern auffordert, eine Parallelverarbeitung auszufuhren.
-
Allgemein, obwohl ein Multi-CPU-Kern ein Ausfuhrungsergebnis über einen gemeinsamen Speicher, IPC („Inter Process Communication“), oder Ahnliches übertragen kann, ist es unter der Berücksichtigung, dass Inhalte in dem gemeinsamen Speicher zerstört werden können oder IPC verzögert sein kann, nicht genug, sich auf solch eine Struktur zu verlassen.
-
Eine Lastverteilung in solch einem Multikernsystem ist im Stand der Technik für eine Aufgabe eines Informationsverarbeitungssystems bekannt. Jedoch entspricht in der Aufgabe eines Informationsverarbeitungssystems eine Dateneingabe eins-zu-eins einer Datenausgabe und es ist selten, dass ein Ausführungsergebnis einer vorhergehenden Aufgabe für eine nächste Aufgabe erforderlich ist. Somit wurde bisher noch nicht vorgeschlagen, eine Aufgabe eines Informationsverarbeitungssystems unter Berücksichtigung eines Ausführungsergebnisses einer vorhergehenden Aufgabe zuzuweisen.
- Patentdokument 1: Japanische Patentveröffentlichung Nr. H10-143380
- Patentdokument 2: Japanische Patentveröffentlichung Nr. 2007-188212
-
OFFENBARUNG DER ERFINDUNG
-
PROBLEME, DIE DURCH DIE ERFINDUNG ZU LÖSEN SIND
-
Angesichts der vorstehend erwähnten Probleme ist es eine Aufgabe der vorliegenden Erfindung, ein Multikernsystem, das dazu in der Lage ist CPU-Kerne, die Aufgaben ausführen, umzuschalten, ohne eine plötzliche Änderung in der Steuerung zu verursachen, eine fahrzeugseitige elektronische Steuerungseinheit und ein Aufgabenumschaltverfahren bereitzustellen.
-
EINRICHTUNGEN ZUM LOSEN DER PROBLEME
-
Um die vorstehende Aufgabe zu erreichen, ist ein Ausführungsbeispiel der vorliegenden Erfindung ein Multikernsystem zum Zuweisen einer Aufgabe, die von einem Steuerungssystemprogramm erzeugt wird, an einen geeigneten CPU-Kern, und zum Ausfuhren der Aufgabe. Das Multikernsystem besitzt einen Probeausfuhrungsanweisungsteil (zum Beispiel einen Zuteiler 33), der konfiguriert ist, um einen zweiten CPU-Kern 2 zu veranlassen, eine Aufgabe probehalber auszufuhren, die ein erster CPU-Kern 1 ausführt, bevor das Multikernsystem die Aufgabe von dem ersten CPU-Kern 1 an den zweiten CPU-Kern 2 überträgt und den zweiten CPU-Kern 2 veranlasst, die Aufgabe auszuführen, einen Bestimmungsteil, der konfiguriert ist, um zu bestimmen, ob das Ausführungsergebnis durch den ersten CPU-Kern 1 mit dem Ausführungsergebnis des zweiten CPU-Kerns 2 übereinstimmt, und einen Zuweisungsfestlegungsteil, der konfiguriert ist, den zweiten CPU-Kern 2 als den geeigneten CPU-Kern festzulegen, zu dem die Aufgabe zugewiesen wird, wenn der Bestimmungsteil bestimmt, dass das Ausführungsergebnis durch den ersten CPU-Kern 1 mit dem Ausführungsergebnis durch den zweiten CPU-Kern 2 übereinstimmt.
-
EFFEKT DER ERFINDUNG
-
Es ist möglich, ein Multikernsystem, das dazu in der Lage ist, CPU-Kerne, die Aufgaben ausführen, umzuschalten, ohne eine plötzliche Änderung in der Steuerung zu verursachen, eine fahrzeugseitige elektronische Steuerungseinheit und ein Aufgabenumschaltverfahren bereitzustellen.
-
Figurenliste
-
- 1A ist ein Beispiel eines Diagramms, das diagrammatisch eine Lastverteilung durch ein Multikernsystem darstellt.
- 1B ist ein Diagramm, dass diagrammatisch eine Lastverteilung darstellt, wenn es ein Ungleichgewicht zwischen einer Verarbeitungslast eines CPU-Kerns 1 und einer Verarbeitungslast eines CPU-Kerns 2 gibt.
- 2 ist ein Beispiel eines Diagramms, das diagrammatisch eine Plattform zeigt, die ein Multikernsystem verwirklicht.
- 3 ist ein Beispiel eines schematischen Diagramms einer ECU („electronic control unit“, Elektronische Steuerungseinheit), die ein Multikernsystem umfasst.
- 4 ist ein Beispiel eines funktionellen Blockdiagramms eines Multikernsystems.
- 5A ist ein Diagramm, das ein Beispiel einer Prioritätstabelle zeigt.
- 5B ist ein Diagramm, das ein Beispiel einer Übereinstimmungsbestimmungstabelle zeigt.
- 6 ist ein Ablaufdiagramm, das ein Beispiel einer Prozedur zeigt, bei der ein Multikernsystem Aufgaben an CPU-Kerne zuweist.
- 7 ist ein Ablaufdiagramm, das ein Beispiel einer Prozedur zeigt, um Verarbeitungslasten anzugleichen und einen CPU-Kern zu veranlassen, zu stoppen.
- 8 ist ein Beispiel eines Diagramms, das diagrammatisch eine Angleichung von Verarbeitungslasten unter drei oder mehr CPU-Kernen darstellt.
- 9 ist ein Beispiel eines Diagramms, das diagrammatisch eine Lastverteilung durch ein Multikernsystem darstellt (zweites Ausführungsbeispiel).
- 10 ist ein Beispiel eines funktionellen Blockdiagramms eines Multikernsystems (zweites Ausführungsbeispiel).
- 11 ist ein Beispiel eines Ablaufdiagramms, das eine Prozedur zeigt, bei der ein Multikernsystem bestimmt, eine Aufgabe A an den CPU-Kern 2, der der erste Kern ist, dessen Ausführungsergebnis der Aufgabe A mit dem Ausführungsergebnis durch den hoch-belasteten CPU-Kern 1 übereinstimmt, zuzuweisen.
-
Bezugszeichenliste
-
- 11
- AP (Steuerungssystemprogramm)
- 12
- OS
- 13
- Inter-OS-Kommunikationsteil
- 14
- Hardware-Ressource (HW)
- 25
- Sensoren
- 26
- Aktoren
- 50
- ECU („electronic control unit“, Elektronische Steuerungseinheit)
- 100
- Multikernsystem
-
BESTE ART ZUM AUSFUHREN DER ERFINDUNG
-
Mit Bezug auf die Figuren wird nachstehend mit Ausführungsbeispielen die beste Art zum Ausführen der vorliegenden Erfindung beschrieben.
-
(Erstes Ausführungsbeispiel)
-
1A ist ein Beispiel eines Diagramms, das diagrammatisch eine Lastverteilung durch ein Multikernsystem 100 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung darstellt. Das in 1A gezeigte Multikernsystem 100 umfasst einen CPU-Kern 1 und einen CPU-Kern 2 (nachstehend „ein CPU-Kern 1~n“ genannt, sofern nicht differenziert wird), wobei der CPU-Kern 1 eine Aufgabe A und eine Aufgabe B gemäß einem vorbestimmten Plan ausfuhrt. Wenn zum Beispiel ein OS (Betriebssystem) erfasst, dass eine Verarbeitungslast des CPU-Kerns 1 hoch wird, oder erfasst, dass es eine Möglichkeit gibt, dass die Verarbeitungslast des CPU-Kerns 1 hoch wird, empfängt der CPU-Kerri 2 einen Kontext einer vorbestimmten Aufgabe (die Aufgabe A in der Figur) von dem CPU-Kern 1 (es ist nicht immer nötig, den Kontext zu empfangen), und führt probehalber die Aufgabe A aus. Der CPU-Kern 1 führt die Aufgabe A auf die Steuerungsanforderung hin aus (dies kann nachstehend „tatsächliche Anforderungsausführung“ genannt werden), oder führt die Aufgabe A probehalber aus. Das heißt, in beiden Fällen führt der CPU-Kern 1 die Aufgabe A aus.
-
Dann bestimmt das OS, ob ein Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 mit einem Ausführungsergebnis durch den CPU-Kern 2 übereinstimmt. Wenn diese übereinstimmen, schaltet das Multikernsystem 100 den CPU-Kern 1~n, der die Aufgabe A ausführen soll, von dem CPU-Kern 1 zu dem CPU-Kern 2 um.
-
Nach einer Evaluierung des Ausfuhrungsergebnisses durch den CPU-Kern 1 und den CPU-Kern 2, kann durch Umschalten des CPU-Kerns 1∼n, der die Aufgabe A ausführen soll, auch bei einer Verarbeitung eines Steuerungssystems, in dem ein vorhergehendes Ausführungsergebnis ein momentanes Ausführungsergebnis beeinträchtigt, das Multikernsystem 100 den CPU-Kern 1~n, der die Aufgabe A ausführen soll, umschalten, ohne eine Steuerung, die ein Berechnungsergebnis der Aufgabe A verwendet, zu unterbrechen. Nach einer Zuweisung der Aufgabe A an den CPU-Kern 2, führt der CPU-Kern 1 die Aufgabe B aus und führt der CPU-Kern 2 die Aufgabe A aus. Auf diese Weise verteilt das Multikernsystem 100 Verarbeitungslasten.
-
1B ist ein Diagramm, das diagrammatisch eine Lastverteilung in dem Fall zeigt, in dem es ein Ungleichgewicht zwischen einer Verarbeitungslast des CPU-Kerns 1 und einer Verarbeitungslast des CPU-Kerns 2 gibt. Zum Beispiel, wenn das OS das Ungleichgewicht zwischen der Verarbeitungslast des CPU-Kerns 1 und der Verarbeitungslast des CPU-Kerns 2 erfasst oder schätzt (nachstehend kann diese Schätzung „Ungleichgewichtsschätzung“ genannt werden), empfängt der CPU-Kern 2, ähnlich wie in 1A, einen Kontext einer vorbestimmten Aufgabe (der Aufgabe A in der Figur) von dem CPU-Kern 1 (es ist nicht immer nötig, den Kontext zu empfangen), und sowohl der CPU-Kern 1 als auch der CPU-Kern 2 führen die Aufgabe A aus. Das OS schaltet einen CPU-Kern 1~n, der die Aufgabe A ausführen soll, zu dem CPU-Kern 2 um, wenn Ausführungsergebnisse der Aufgabe A durch beide CPU-Kerne übereinstimmen. Somit kann das OS nach einer Evaluierung der Ausführungsergebnisse die Verarbeitungslasten verteilen.
-
2 ist ein Beispiel eines Diagramms, das diagrammatisch eine Plattform zeigt, die das Multikernsystem 100 verwirklichen kann. Das Multikernsystem 100 kann eines oder mehrere OS (OS1 und OS2 in der Figur, nachstehend „OS 12“ genannt, sofern nicht differenziert wird) anweisen, unabhängig und parallel auf einer Hardware-Ressource (nachstehend „HW“ genannt) zu arbeiten. Anwendungen AP1~APn (nachstehend einfach „AP 11“ genannt, sofern nicht differenziert wird) werden unabhängig auf OS1 ausgeführt. Zum Beispiel sind die Anwendungen derart konfiguriert, dass eine Verarbeitung der AP1 das Ausführungsergebnis der AP2 nicht beeinträchtigt.
-
Jedes der AP 11 kann zum Beispiel ein Maschinensteuerungsprogramm, ein Kamerasteuerungsprogramm, das ein Aufnahmesystem steuert, das konfiguriert ist, um eine weiße Linie oder einen Fußganger zu erkennen, ein Navigationsprogramm oder Ahnliches sein. Das Multikernsystem 100 gemäß dem vorliegenden Ausführungsbeispiel ermöglicht eine Lastverteilung beim Ausführen der AP 11 (Aufgaben, die von AP 11 erzeugt werden) eines Steuerungssystems, das Hardware, wie etwa eine Maschine oder einen Aktor steuert. Das Kamerasteuerungsprogramm, obwohl es ein Programm ist, das ein Bild, das durch eine Kamera aufgenommen wird, verarbeitet, ist in dem Steuerungssystemprogramm enthalten, da das Kamerasteuerungsprogramm manchmal zum Beispiel einen Lenkwinkel einer elektrischen Servolenkung basierend auf seinem Verarbeitungsergebnis steuern kann (zum Beispiel konnen Informationen über eine weiße Linie, wie etwa eine Breite, eine Kurve oder Ahnliches erhalten werden). Nicht nur die Kamera, die wie beschrieben Aufnahmen außerhalb eines Fahrzeugs vornimmt, sondern auch ein Kamerasteuerungsprogramm, das eine unaufmerksame Fahrweise oder ein Ausmaß an Schlafrigkeit eines Fahrers erfasst, kann in dem Steuerungssystemprogramm enthalten sein, da Erfassungen einer unaufmerksamen Fahrweise oder des Ausmaßes an Schläfrigkeit zum Steuern eines Summers verwendet werden. Auf ahnliche Weise kann ebenso das Navigationsprogramm in dem Steuerungssystemprogramm enthalten sein, da das Navigationsprogramm eine Fahrzeugsteuerung wie etwa ein Herunterschalten oder ein Verlangsamen, wenn ein Fahrzeug eine Position vor einer Kreuzung oder Kurve erreicht, einstellt. Ein Programm, das ein Fahrzeugkarosseriesystem zum Steuern von Lichtern, Schließen/Offnen, Scheibenwischern oder Ähnlichem steuert, kann ebenso in dem Steuerungssystemprogramm enthalten sein.
-
Eine AP 11, die für das Multikernsystem 100 geeignet ist, ist nicht nur basierend darauf, ob es ein steuerbares Objekt aufweist oder nicht sondern auch auf eine Verarbeitungsweise erkennbar. Wenn eine Aufgabe in AP 11 eine Aufgabe ist, die Hardware steuert, dessen physikalischer Zustand, wie etwa ein Betrag eines Stroms, der an einen elektrischen Motor zugeführt wird, oder eine Drehzahl einer Maschine, sich kontinuierlich ändert, führt der CPU-Kern 1~n die Aufgabe unter Verwendung des vorherigen Ausführungsergebnisses derselben Aufgabe aus. Somit kann eine AP 11 des Steuerungssystems als ein Programm definiert werden, bei dem der CPU-Kern 1~n die gleiche Aufgabe unter Verwendung des vorherigen Ausfuhrungsergebnisses ausführt, oder ein Programm, in dem das vorherige Ausfuhrungsergebnis ein nächstes Ausführungsergebnis beeinträchtigt. Solch eine Steuerung wird weitlaufig bei einer Regelung verwendet.
-
In dem vorliegenden Ausfuhrungsbeispiel wird angenommen, dass das Multikernsystem 100 das OS 1 durch den CPU-Kern 1 und den CPU-Kern 2 ausführt, und ebenso Aufgaben A~C in AP 11 durch den CPU-Kern 1 und den CPU-Kern 2 ausführt. Jede der Aufgaben A~C kann eins-zu-eins mit jedem der AP1~APn korrespondieren oder nicht. In der Figur wird AP 11 auf OS1 ausgeführt. Jedoch kann AP 11 teilweise oder gesamt auf OS2 ausgeführt werden, wenn das Multikernsystem 100 eine Multi-OS-Plattform ist.
-
HW 14 umfasst einen Speicher 14a (einen RAM 21, einen Cache-Speicher eines CPU-Kerns 1, Speichervorrichtung 22), eine I/O-Vorrichtung 14b (zum Beispiel eine Schnittstelle mit einem Aktor, einem Schaltelement, einem Bildschirmtastfeld, einer Anzeige oder Ahnlichem), oder andere Hardware sowie den CPU-Kern 1~n. HW 14 ist mit mindestens zwei oder mehr CPU-Kernen (eine Multikernart) oder einer Vielzahl von CPUs (eine Multi-CPU-Art) versehen. Der CPU-Kern 1 und der CPU-Kern 2 können homogen sein, wobei jeder die gleiche Architektur aufweist, oder können heterogen sein, wobei jeder eine unterschiedliche Architektur aufweist.
-
Ein Inter-OS-Kommunikationsteil 13 ist eine ansässige Software, derer ein Benutzer (zum Beispiel ein Fahrer) nicht bewusst sein muss, und weist HW 14 zu OS1 und OS2 zu, durch logisches (und vorübergehendes) Aufteilen von HW 14. Somit gibt es in dem Fall, in dem das Multikernsystem 100 kein Multi-OS-System verwendet, keine Notwendigkeit für den Inter-OS-Kommunikationsteil 13 in dem Multikernsystem 100. Funktionen des nachstehend beschriebenen OS konnen entweder von OS1 oder dem Inter-OS-Kommunikationsteil 13 bereitgestellt werden, oder durch OS1 ohne den Inter-OS-Kommunikationsteil 13 bereitgestellt werden.
-
Der Inter-OS-Kommunikationsteil 13 konstruiert eine Vielzahl von virtuellen Ausführungsumgebungen für einen Berechner mittels dieser logischen Aufteilung und weist das OS1 an, auf der Ausfuhrungsumgebung zu arbeiten. HW 14 ist durch den Inter-OS-Kommunikationsteil 13 von OS1 verborgen. Der Inter-OS-Kommunikationsteil 13 uberwacht einen Lastzusatnd von OS1. Wenn zum Beispiel eine Last auf OS1 hoch wird, weist der Inter-OS-Kommunikationsteil 13 zusätzlich OS2 zu einem CPU-Kern 3 zu, um eine Ausführungsumgebung zu erzeugen. Nach einer Ausführung stellt der Inter-OS-Kommunikationsteil 13 eine Inter-OS-Kommunikationseinrichtung bereit, durch welche OS1 und OS2 Informationen kommunizieren können. OS1 kann durch Ausgeben eines Systemanrufs verschiedene Dienste des Inter-OS-Kommunikationsteils 13 anfordern und das OS1 und der Inter-OS-Kommunikationsteil 13 können miteinander kommunizieren.
-
(Anwendung auf eine fahrzeugseitige elektronische Steuerungseinheit)
-
Steuerungssysteme, die an einem Fahrzeug angebracht sind, werden mehr und mehr verschiedenartig, und eine Notwendigkeit für eine Lastanpassung unter CPUs wird größer. Deshalb kann das Multikernsystem 100 des vorliegenden Ausführungsbeispiels als ein Beispiel einer Anwendung von diesem an einer fahrzeugseitigen elektronischen Steuerungseinheit angebracht werden.
-
3 zeigt ein Beispiel eines schematischen Diagramms einer ECU („electronic control unit“, elektronische Steuerungseinheit) 50, die das Multikernsystem 100 umfasst. Eine ECU 50 kann zum Beispiel eine Maschinen-ECU zum Steuern einer Maschine, eine Motor-ECU zum Steuern eines Elektromotorgenerators eines Hybridfahrzeugs, eine Hybrid-ECU zum Ausgeben einer Drehmomentanweisung, die für die Maschine und den elektrischen Motor notwendig ist, oder Ähnliches sein. Wie vorstehend beschrieben kann das Multikernsystem 100 auf eine Navigations-ECU oder Ähnliches angewendet werden.
-
In der ECU 50 sind das Multikernsystem 100, der RAM 21, die Speichervorrichtung 22, eine Kommunikationsschnittstelle 23 und eine Eingabe-/Ausgabe-Schnittstelle 24 über einen internen Bus verbunden. Die Kommunikationsschnittstelle 23 ist mit einem fahrzeuginternen LAN, wie etwa zum Beispiel einem CAN („controller area network“, Steuerungsbereichsnetzwerk), einem LIN („local interconnect network“, lokales Zwischenverbindungsnetzwerk), einem FlexRay, oder Ähnlichem verbunden, und sendet Kommunikationsdaten an eine andere ECU oder empfängt Kommunikationsdaten von dieser. Zum Beispiel ist die Kommunikationsschnittstelle 23 mit einer Navigations-ECU zum Steuern eines Navigationssystems, einer Brems-ECU, oder Ähnlichem verbunden, und ermöglicht eine kooperative Steuerung mit jeder ECU.
-
Die Eingabe-/Ausgabe-Schnittstelle 24 ist mit Sensoren 25 und Aktoren 26 verbunden. In dem Fall, in dem die ECU 50 die Maschine steuert, konnen die Sensoren 25 eine Vielzahl von Sensoren, wie etwa zum Beispiel ein Luftströmungssensor, ein Kurbelwinkelpositionssensor, ein O2-Sensor oder Ähnliches sein, und die Aktoren 26 können eine Vielzahl von Aktoren, wie etwa ein Drosselklappenventil, ein Kraftstoffeinspritzventil oder Ähnliches sein. In dem Fall, in dem die ECU 50 die Motor-ECU ist, können die Sensoren 25 zum Beispiel ein Stromsensor zum Erfassen eines Stromwerts eines Phasenstroms, ein Drehmelder zum Erfassen eines Drehwinkels eines Rotors eines elektrischen Motors oder Ähnliches sein und können die Aktoren 26 zum Beispiel ein Elektromotorgenerator sein.
-
Die Speichervorrichtung 22 kann eine Festplatte, ein Flash-Speicher oder Ähnliches sein, und speichert eine OS-Datei zum Speichern von Programmen oder Daten bezüglich einem OS und eine AP-Datei zum Speichern von Programmen oder Daten bezüglich eines AP 11. Wenn zum Beispiel die ECU 50 als Reaktion auf ein Anschalten einer Zündung mit Strom versorgt wird, führt der CPU-Kern 1 die OS-Datei aus. Nach dem Initiieren des Inter-OS-Kommunikationsteils 13 initiiert der CPU-Kern 1 das OS1 und ein vorbestimmtes AP 11.
-
(Funktionelles Blockdiagramm des Multikernsystems 100)
-
Mit Bezug auf 4 wird ein funktioneller Block des Multikerns 100 beschrieben. Jeder Block in 4 ist durch OS1 oder durch den Inter-OS-Kommunikationsteil 13 bereitgestellt. Eine Prioritätstabelle 34 und eine Ubereinstimmungsbestimmungstabelle 37, die nachstehend beschrieben werden, können in dem Speicher 14a von HW 14 im Voraus gespeichert werden, oder können aus der Speichereinheit 22 in den Speicher 14a zum Zeitpunkt des Startens des Multikernsystems 100 kopiert werden.
-
Das OS1 führt AP 11 aus, während es AP 11 in Aufgaben (eine Aufgabe ist eine verarbeitbare Einheit) aufteilt und die Aufgaben plant. Die Aufgabe ist eine minimale Einheit, die das OS1 handhaben kann. Die Aufgabe ist ein Objektcode von AP 11. Die Aufgabe wird durch einen TCB („task control block“, Aufgabensteuerungsblock) gesteuert. Der TCB registriert einen Aufgabenstatus (einen ausfuhrbaren Zustand, einen Ausführungszustand, einen Standby-Zustand), Identifikationsinformationen einer Aufgabe, einen Aufgabenzeiger, eine Zuordnung (verschiebbar, wiederverwendbar, wiedereingebbar oder Ahnliches), Anknupfungsinformationen an eine vorhergehende Aufgabe, Anknupfungsinformationen zu einer nächsten Aufgabe, einen Aufgabenbesitzer (Identifikationsinformationen einer AP 11), einen Kontext (einen Status eines CPU-Kerns, wie etwa ein Inhalt eines Registers) oder Ahnliches. Der Kontext kann ein letztes Ausführungsergebnis der Aufgabe umfassen.
-
(Aufgabenplanung)
-
Ein Aufgabenplaner 31 wählt nächste Aufgaben, die an den CPU-Kern 1 und den CPU-Kern 2 zuzuweisen sind, aus den Aufgaben in dem Speicher 14a basierend auf Prioritäten und Zuständen der Aufgaben aus. Der Aufgabenplaner 31 weist eine Priorität zu der Aufgabe A und der Aufgabe B zu, und registriert die Aufgabe A und die Aufgabe B in eine Aufgabenwarteschlange. Wenn eine Unterbrechung mit hoher Priorität auftritt, wie etwa eine Softwareunterbrechung, eine Hardwareunterbrechung, ein Systemanruf oder Ahnliches, schaltet der Aufgabenplaner 31 gezwungenermaßen Aufgaben um (Bevorrechtigung). Auf diese Weise werden die Prioritäten der Aufgabe A oder der Aufgabe B relativ in Abhängigkeit von Prioritäten der Unterbrechungen oder Ähnlichem bestimmt. Es wird angenommen, dass in den Figuren eine Priorität mit Abnahme ihres Werts höher wird. Die Aufgabenwarteschlange wird für jedes Zeitintervall sortiert, so dass sich eine Aufgabe mit höchster Priorität an die Vorderseite der Warteschlange bewegt. Wenn Prioritäten von Aufgaben gleich sind, werden die Aufgaben in einer Reihenfolge gemaß einer FIFO-Priorisierung ausgeführt.
-
Wenn ein Zuteiler 33 eine Beendigung einer Aufgabe oder eine Unterbrechung durch eine andere Aufgabe erfasst, speichert der Zuteiler 33 einen Kontext der Aufgabe, die momentan ausgeführt wird, in dem Speicher 14a und veranlasst den CPU-Kern 1 eine nächste Aufgabe auszufuhren. Zum Beispiel bezieht sich das Multikernsystem 100 auf die Aufgabenwarteschlange, teilt eine Aufgabe mit der hochsten Prioritat an den CPU-Kern 1 zu, und gibt den gespeicherten Kontext der Aufgabe an den CPU-Kern 1 zurück. Das Multikernsystem 100 fuhrt eine Vielzahl von Aufgaben auf dem CPU-Kern 1 durch Wiederholen dieser Verarbeitung aus.
-
Die Aufgabenwarteschlange ist oft für jeden CPU-Kern in einem Multikernsystem mit einer Vielzahl von CPU-Kernen bereitgestellt. Im Wesentlichen wird die gleiche Aufgabe in der Aufgabenwarteschlange des gleichen CPU-Kerns registriert. Somit, wenn Kontext von einer Aufgabe, die das vorhergehende Ausführungsergebnis, wie bei einer Regelung, verwendet, zu einer anderen Aufgabe umgeschaltet wird, reduziert das Multikernsystem 100 einen zu speichernden Kontext und beschränkt einen Overhead. Auch wenn das Multikernsystem 100 manchen Kontext nicht speichert, kann das Multikernsystem 100 auch eine Kontinuität von Ausführungsergebnissen beibehalten, solange der gleiche CPU-Kern die gleiche Aufgabe ausführt.
-
Es gibt mehrere Wege, um eine Aufgabe zu einem CPU-Kern zuzuweisen. Wenn das Multikernsystem 100 zum Beispiel Verarbeitungslasten des CPU-Kerns 1 und des CPU-Kerns 2 gleichmaßig verteilt, weist das Multikernsystem 100 die Aufgabe A, die Aufgabe B oder Ähnliches zu jeder Aufgabenwarteschlange zu, so dass die Anzahl von Aufgaben gleich wird. Inzwischen kann es vorzuziehen sein, den Energieverbrauch zu verringern, dadurch, dass nur der CPU-Kern 1 veranlasst wird, alle Aufgaben soweit wie moglich auszuführen, und dass der CPU-Kern 2 gestoppt gelassen wird. In solch einem Fall registriert das Multikernsystem 100 anfanglich so viele Aufgaben wie möglich in der Aufgabenwarteschlange des CPU-Kerns 1. Dann registriert das Multikernsystem 100 Aufgaben in der Aufgabenwarteschlange des CPU-Kerns 2, wenn die Verarbeitungslast des CPU-Kerns 1 hoch wird. Sobald eine Vielzahl von CPU-Kernen initiiert wurde, kann das Multikernsystem 100 Verarbeitungslasten unter den CPU-Kernen durch gleichmaßiges Zuweisen von Aufgaben angleichen. Aus dieser Sicht, wie in der Figur gezeigt, versucht das Multikernsystem 100 des vorliegenden Ausführungsbeispiels anfanglich (zur Zeit des Startens der ECU 50) den Energieverbrauch durch Zuweisen von Aufgaben nur an den CPU-Kern 1 zu reduzieren und gleicht Verarbeitungslasten an, nachdem der CPU-Kern 2 initiiert wurde.
-
(Hochlastschätzung, Ungleichgewichtsschätzung)
-
Ein Lastschatzungsteil 32 erfasst, ob die Verarbeitungslast des CPU-Kerns 1 hoch ist oder ob es eine Möglichkeit gibt, dass die Verarbeitungslast des CPU-Kerns 1 hoch wird, in der Situation, in der der CPU-Kern 2 nicht initiiert wurde (Hochlastschätzung). Der Lastschätzungsteil 32 erfasst, ob der Unterschied zwischen der Verarbeitungslast des CPU-Kerns 1 und der des CPU-Kerns 2 größer oder gleich einem vorbestimmten Wert wurde, oder ob es eine Möglichkeit gibt, dass der Unterschied größer oder gleich dem vorbestimmten Wert wird, nachdem der CPU-Kern 2 initiiert wurde (Ungleichgewichtsschätzung).
-
(Situation, in der der CPU-Kern 2 nicht initiiert wurde)
-
Eine Hochverarbeitungslast wird basierend auf einer Verwendungsrate eines CPU-Kerns R1, der Anzahl von Aufgaben, die in der Aufgabenwarteschlange N1 registriert sind, oder einem Status eines gesteuerten Objekts erfasst. Die Verwendungsrate R1 ist eine Rate einer Zeitperiode T, innerhalb der der CPU-Kern 1 eine Aufgabe ausführt, relativ zu einer vorbestimmten Zeitperiode T0 (zum Beispiel ein Bereich zwischen mehreren Sekunden und mehreren zehn Sekunden). Somit wird die Verwendungsrate R1 durch die folgende Gleichung ausgedrückt: R1 = T/T0. Ein statischer Zustand, in dem nur der CPU-Kern 1 initiiert wurde, wird ein Leerlaufzustand genannt. Da eine Verarbeitungslast in dem Leerlaufzustand ausreichend niedrig ist, wenn die Verwendungsrate R1 größer als ein Schwellenwert R0 ist, kann das Multikernsystem 100 eine Hochverarbeitungslast aufgrund einer Ausführung einer Aufgabe erfassen. Gemäß der gleichen Idee, wenn die Anzahl von Aufgaben in der Aufgabenwarteschlange N1 größer als ein vorbestimmter Wert N0 ist, kann das Multikernsystem 100 die Hochverarbeitungslast des CPU-Kerns 1 erfassen. Alternativ, wenn ein Fahrzeuginsasse AP 11 initiiert hat, kann das Multikernsystem 100 die Hochverarbeitungslast aus dieser Initiierungsoperation erfassen.
-
Alternativ kann das Multikernsystem 100 die Hochverarbeitungslast von einem Status eines gesteuerten Objekts erfassen. Allgemein, wenn ein gesteuertes Objekts gesteuert wird, dessen Status sich rapide ändert, wird eine Verarbeitungslast hoher, als eine Verarbeitungslast beim Steuern des gleichen gesteuerten Objekts, dessen Status sich langsam ändert. Zum Beispiel, da sich ein Zeitintervall bei einer Drehzahlsteuerung oder bei einer Zündungssteuerung mit einer Erhöhung einer Drehzahl einer Maschine verringert, erhöht sich eine Verarbeitungslast mit einer Zunahme der Drehzahl. Das Gleiche gilt für eine Drehmomentsteuerung eines elektrischen Motors. Somit, wenn eine Kurbelwellenposition, die von den Sensoren 25 oder einer Winkelgeschwindigkeit eines drehenden Rotors erfasst wird, größer oder gleich entsprechenden Schwellenwerten wird, kann das Multikernsystem 100 die Hochverarbeitungslast erfassen. In diesem Fall kann das Multikernsystem 100 die Hochverarbeitungslast dadurch erfassen, dass erkannt wird, dass eine Fahrzeuggeschwindigkeit großer oder gleich einem Schwellenwert ist. Das ist so, weil die Fahrzeuggeschwindigkeit in solch einem Fall ebenso groß wird.
-
Der Lastschätzungsteil 32 erkennt, ob es eine Hochverarbeitungslast gibt, basierend auf einer oder einer Kombination von zwei oder mehreren der folgenden Bedingungen. TR1~2, TN1∼2, TdR1∼2, TdN1∼2, TN1∼2, TR12, TN12, TdR12, TdN12, und TS repräsentieren einen Schwellenwert.
- Die Verwendungsrate R1 (= T/T0) > TR1
- Die Anzahl von Aufgaben N1 > TN1
- Der Fahrzeugstatuswert S > TS
-
Die Möglichkeit, dass die Verarbeitungslast hoch wird, kann aus einer Rate einer zeitlichen Änderung dR1 in der Verwendungsrate R1, einer Rate einer zeitlichen Anderung dN1 in der Anzahl von Aufgaben N1, einer Rate einer zeitlichen Änderung dS in dem Fahrzeugstatuswert S erfasst werden. Der Lastschätzungsteil 32 überwacht jede der Verwendungsraten R1, der Anzahl von Aufgaben N1 und des Fahrzeugstatuswerts S in chronologischer Reihenfolge. Wenn ein Status, in dem eine der Raten einer zeitlichen Änderung dR1, dN1, dS größer als der entsprechende Schwellenwert ist, länger als eine vorbestimmte Zeitperiode P angedauert hat, erfasst der Lastschatzungsteil 32, dass es eine Möglichkeit gibt, dass sich die Verarbeitungslast erhöht. Auf diese Weise erfasst der Lastschätzungsteil 32, dass es eine Möglichkeit gibt, dass sich die Verarbeitungslast erhöht, basierend auf einer oder einer Kombination von zwei oder mehreren der folgenden Bedingungen.
-
Der Lastschätzungsteil 32 kann ebenso die Möglichkeit der Hochverarbeitungslast basierend auf einer oder einer Kombination von zwei oder mehreren der Verwendungsrate R1, der Anzahl von Aufgaben N1 und des Fahrzeugstatuswerts S erfassen.
- Die Zunahmerate dR1 > TdR1
- Die Zunahmerate dN1 > TdN1
- Die Zunahmerate dS > Tds
-
(Nachdem der CPU-Kern 2 initiiert wurde)
-
Nachdem der CPU-Kern 2 initiiert wurde, werden die Verwendungsrate R2 des CPU-Kerns 2, die Anzahl von Aufgaben N2 und der Fahrzeugstatuswert S berechnet, wie in dem Fall mit dem CPU-Kern 1. Der Lastschätzungsteil 32 erfasst, ob es ein Ungleichgewicht zwischen der Verarbeitungslast des CPU-Kerns 1 und der Verarbeitungslast des CPU-Kerns 2 gibt, oder ob es eine Möglichkeit gibt, dass es eine Ungleichmäßigkeit gibt.
-
Der Lastschätzungsteil 32 erfasst das Ungleichgewicht zwischen der Verarbeitungslast des CPU-Kerns 1 und der Verarbeitungslast des CPU-Kerns 2 basierend auf irgendeiner oder einer Kombination der folgenden Bedingungen.
- R1 - R2 > TR12
- N1 - N2 > TN12
-
In solchen Fällen, in denen die Verarbeitungslast des CPU-Kerns 1 größer ist, weist das Multikernsystem 100 Aufgaben an den CPU-Kern 2 zu.
- R2 - R1 > TR12
- N2 - N1 > TN12
-
In solchen Fallen, in denen die Verarbeitungslast des CPU-Kerns 2 großer ist, weist das Multikernsystem 100 Aufgaben an den CPU-Kern 1 zu. Auf diese Weise kann das Multikernsystem 100 die Verarbeitungslasten angleichen. Der Lastschätzungsteil 32 verwendet nicht den Fahrzeugstatuswert S für die Ungleichmäßigkeitsschätzung, da der Fahrzeugstatuswert S für den CPU-Kern 1 und den CPU-Kern 2 gemeinsam ist, und nicht für die Erfassung des Ungleichgewichts geeignet ist.
-
Ähnlich erfasst der Lastschätzungsteil 32, ob es eine Möglichkeit gibt, dass ein Ungleichgewicht zwischen der Verarbeitungslast des CPU-Kerns 1 und der Verarbeitungslast des CPU-Kerns 2 auftreten kann, basierend auf irgendeiner oder einer Kombination der folgenden Bedingungen.
- dR1 - dR2 > TdR12
- dN1 - dN2 > TdN12
-
Auf diese Weise erfasst der Lastschatzungsteil 32 den Hochlastschätzungszustand und den Ungleichgewichtsschätzungszustand.
-
Wenn die Verarbeitungslast des CPU-Kerns 1 oder 2 niedrig wurde (in dem Fall, in dem zumindest eine der Bedingungen, bei der die Verwendungsrate R1 kleiner oder gleich einem Schwellenwert ist, der kleiner als TR1 ist, und bei der die Anzahl der Aufgaben N1 kleiner oder gleich einem Schwellenwert ist, der kleiner als TN1 ist, zutrifft), kann das Multikernsystem 100 den CPU-Kern 1 oder den CPU-Kern 2, dessen Verarbeitungslast niedrig wurde, außer Betrieb setzen. Somit kann das Multikernsystem 100 einen Energieverbrauch durch Außerbetriebsetzen eines Teils des CPU-Kerns 1~n reduzieren. In solch einem Fall wird eine Aufgabe, die der außer Betrieb gesetzte CPU-Kern 1~n ausgeführt hat, an einen anderen CPU-Kern 1~n zugewiesen. Wie vorstehend beschrieben verhindert das Multikernsystem 100 jedoch eine abrupte Änderung in der Steuerung durch Zuweisen, nachdem bestimmt wird, ob die Ausführungsergebnisse übereinstimmen.
-
(Probeausführung einer Aufgabe)
-
Ein Verfahren, bei dem der Zuteiler 33 die Aufgabe A als eine Aufgabe bestimmt, die durch den CPU-Kern 2 mit einer niedrigen Verarbeitungslast probehalber auszuführen ist, wird beschrieben. Wie in 1A gezeigt, wenn der CPU-Kern 1~n eine Aufgabe in dem Multikernsystem 100 des vorliegenden Ausführungsbeispiels ausführt, konnen diese die Aufgabe als Reaktion auf die Anforderung von einer Steuerung (auf eine tatsachliche Anforderung) ausfuhren, oder sie können die Aufgabe auf Probe ausführen. In beiden Fällen weist der Zuteiler 33 die Aufgabe an den CPU-Kern 1~n zu. Manche Ausführungen ändern sich von Ausführungen auf Probe zu Ausführungen auf eine tatsächliche Anforderung. Folglich, obwohl die Unterscheidung zwischen „Zuweisung“ und „Probeausführung“ nicht klar ist, wird die Zuweisung einer Aufgabe durch den Zuteiler 33 manchmal als „Probeausführung“ durch den CPU-Kern 1~n ausgedrückt. Das ist so, weil eines der Merkmale des vorliegenden Ausfuhrungsbeispiels ist, dass der CPU-Kern 1~n eine Probeausführung vornimmt.
-
Es gibt ein statisches Bestimmungsverfahren und ein dynamisches Bestimmungsverfahren beim Bestimmen der Aufgabe A als eine Aufgabe, die durch den CPU-Kern 2 probehalber auszufuhren ist. Das statische Bestimmungsverfahren bestimmt den CPU-Kern 1~n vor, um vorzugsweise jede Aufgabe auszufuhren.
-
5A ist ein Diagramm, das ein Beispiel einer Prioritatstabelle 34 zeigt. Die Prioritatstabelle 34 registriert die CPU-Kerne zum vorzugsweisen Ausfuhren einer jeden Aufgabe mit deren Prioritätsreihenfolgen. Wie in 1A gezeigt, führt der CPU-Kern 1 die Aufgabe A aus, bevor der CPU-Kern 2 initiiert ist. Gemäß der Prioritätstabelle 34 wird jedoch angenommen, dass der CPU-Kern 2 die Aufgabe A vorzugsweise ausführt. Somit, sobald der CPU-Kern 2 initiiert wurde, kann der Zuteiler 33 bestimmen, den CPU-Kern 2 zu veranlassen, die Aufgabe A probehalber auszuführen.
-
Gemäß der Prioritätstabelle 34 kann der Zuteiler 33 den CPU-Kern 2 als einen CPU-Kern zur Probeausführung der Aufgabe A bestimmen, sogar nachdem der CPU-Kern 2 initiiert wurde. Wenn zum Beispiel der Ungleichgewichtsschätzungszustand der Verarbeitungslast in dem Zustand von 1B erfasst wird, kann der Zuteiler 33 bestimmen, den CPU-Kern 2 zu veranlassen, die Aufgabe A probehalber auszuführen. Dies ist so, weil die Aufgabe A, die der CPU-Kern 1 mit einer hohen Verarbeitungslast ausgeführt hat, gemäß der Prioritatstabelle 34 vorzugsweise durch den CPU-Kern 2 ausgeführt werden sollte.
-
Dann, wenn die Verarbeitungslast des CPU-Kerns 2 hoch wird, überträgt der Zuteiler 33 die Aufgabe A oder die Aufgabe C an einen anderen CPU-Kern. Gemäß der Prioritätstabelle 34 jedoch, wurden sowohl die Aufgabe A als auch die Aufgabe C bereits an den CPU-Kern 2 mit der höchsten Prioritätsreihenfolge zugewiesen. Somit, durch Bezugnehmen auf die Prioritätstabelle 34, veranlasst der Zuteiler 33 den CPU-Kern 1 mit der zweithöchsten Prioritätsreihenfolge die Aufgabe A probehalber auszufuhren. Das Multikernsystem 100 kann den CPU-Kern 3 initiieren, wenn die Verarbeitungslast des CPU-Kerns 1 ebenso hoch ist.
-
Somit, wenn die Prioritatstabelle 34 angemessen angepasst wird, kann der Zuteiler 33 einen CPU-Kern zur Probeausführung einer Aufgabe gemäß einer Prioritätsreihenfolge bestimmen und Verarbeitungslasten angleichen.
-
Andererseits bestimmt bei dem dynamischen Bestimmungsverfahren der Zuteiler 33 einen CPU-Kern für eine Probeausfuhrung einer Aufgabe in Abhängigkeit des Zustandes des CPU-Kerns 1 (oder des CPU-Kerns 2) in dem Hochlastschätzungszustand oder dem Ungleichgewichtsschatzungszustand. Wenn zum Beispiel der CPU-Kern 1 die Aufgabe A ausführt, kann der Zuteiler 33 einen Overhead, der mit einer Kontextumschaltung verknüpft ist, und ein Fehler, der mit einem Speichern oder Wiederherstellen verknüpft ist, reduzieren, indem er den CPU-Kern 1 veranlasst, die Aufgabe A weiterhin auszuführen, und den CPU-Kern 2 veranlasst, die Aufgabe B auszuführen. In solch einem Fall, in dem der CPU-Kern 1 das Ausführungsergebnis der Aufgabe A uber die I/O-Vorrichtung 14b zu den Aktoren 26 zufuhren kann, kann der CPU-Kern 1 eine Probeausführung vornehmen, während seine Steuerung fortgesetzt wird.
-
Wenn es eine Vielzahl von Aufgaben gibt, außer der Aufgabe B, die durch den CPU-Kern 1 nicht ausgeführt werden (wenn es die Aufgabe B und die Aufgabe C gibt), ist es notwendig, zu bestimmen, welche der CPU-Kern 2 probehalber ausführen soll. In diesem Fall, nimmt der Zuteiler 33 Bezug auf eine Prioritat von jeder Aufgabe, die in der Aufgabenwarteschlange registriert ist, und veranlasst den CPU-Kern 2 eine Aufgabe mit der geringsten Priorität oder eine Aufgabe am Ende der Aufgabenwarteschlange probehalber auszuführen. Auf diese Weise gewinnt das Multikernsystem 100 Zeit, um eine Ubereinstimmungsbestimmungsverarbeitung, die nachstehend beschrieben wird, durchzuführen.
-
(Handhabung des Ausführungsergebnisses, das mit der Probeausführung verknüpft ist)
-
Das Ausführungsergebnis (ein numerischer Wert) des CPU-Kerns 1 oder des CPU-Kerns 2 in einem Register 1 oder 2 des CPU-Kerns 1 oder 2 wird in entsprechenden Datenpuffern gespeichert, und dann an den RAM 21, die Kommunikationsschnittstelle 23, oder die Eingabe-/Ausgabe-Schnittstelle 24 über eine Busentscheidung gesendet. Das Ausfuhrungsergebnis der Aufgabe A, die durch den CPU-Kern 2 probehalber ausgeführt wird, ist jedoch in dem Zustand, dass eine Verifikation des Ausfuhrungsergebnisses immer noch nicht ausreichend ist.
-
Zusätzlich basiert die Ausführung der Aufgabe A durch den CPU-Kern 1 nicht immer auf einer tatsachlichen Anforderung von Notwendigkeiten von der Fahrzeugsteuerung. Auch wenn das Ausführungsergebnis des CPU-Kerns 2 korrekt ist und die Ausführung durch den CPU-Kern 1 auf einer tatsächlichen Anforderung basiert, ist es nicht notwendig, die gleichen überlappenden Ergebnisse zu haben.
-
Das heißt, die Probeausführung der Aufgabe A erzeugt die Möglichkeit, dass ein unnötiges Ausführungsergebnis an die Eingabe-/Ausgabe-Schnittstelle 24 oder Ahnliches ausgegeben wird. Somit, wenn der Zuteiler 33 den CPU-Kern 2 veranlasst, die Aufgabe A probehalber auszuführen, verhindert ein Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausfuhrungsergebnis an die Eingabe-/Ausgabe-Schnittstelle 24 oder Ahnliches ausgibt. Wenn der Zuteiler 33 den CPU-Kern 1 veranlasst, die Aufgabe A probehalber auszuführen, die nicht auf einer tatsächlichen Anforderung basiert, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 1 das Ausfuhrungsergebnis an die Eingabe-/Ausgabe-Schnittstelle 24 oder Ähnliches ausgibt. Auf diese Weise wird nur das Ausführungsergebnis basierend auf der tatsächlichen Anforderung an die Eingabe-/Ausgabe-Schnittstelle 24 ausgegeben. Speziell verhindert zum Beispiel der Freigabe-/Sperr-Umschaltteil 35, dass die Ausführungsergebnisse in den Registern des CPU-Kerns 1 oder des CPU-Kerns 2 in den Datenpuffern gespeichert werden, oder loscht die Ausfuhrungsergebnisse, die in den Datenpuffern gespeichert sind.
-
(Ubereinstimmungsbestimmung der Ausführungsergebnisse)
-
Wenn der Lastschätzungsteil 32 den Hochlastschätzungszustand oder den Ungleichgewichtsschätzungszustand erfasst, wie vorstehend beschrieben, bestimmt der Zuteiler 33 in dem statischen oder dem dynamischen Verfahren die Aufgabe A als eine Aufgabe, die durch den CPU-Kern 2 probehalber auszufuhren ist. Wie in dem Fall einer Unterbrechungshandhabung speichert der Zuteiler 33 den Kontext des CPU-Kerns 1 zu dem CPU-Kern 2 um. Es ist nicht immer notwendig, den Kontext (das Ausführungsergebnis) von dem CPU-Kern 1 zu dem CPU-Kern 2 zu übertragen. Das ist so, weil das vorliegende Ausführungsbeispiel bestimmt, ob es eine Übereinstimmung in den Ausführungsergebnissen gibt. Es kann jedoch erwartet werden, dass ein Umspeichern des Kontextes die Zeit zur Übereinstimmung in den Ausführungsergebnissen des CPU-Kerns 1 und des CPU-Kerns 2 reduzieren kann.
-
Dann vergleicht ein Ubereinstimmungsbestimmungsteil 36 das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 2 und bestimmt, ob diese übereinstimmen. Jedes der Ausführungsergebnisse wird in dem Register des CPU-Kerns 1 oder des CPU-Kerns 2 gespeichert. Der Übereinstimmungsbestimmungsteil 36 wendet exklusive logische Additionsoperationen (XOR) zwischen Inhalten der zwei Register an, und bestimmt, dass diese übereinstimmen, wenn alle Bits „0“ sind.
-
Wenn es eine Ubereinstimmung gibt, legt der Zuweisungsfestlegungsteil 38 den CPU-Kern 2 als einen CPU-Kern fest, zu dem die Aufgabe A zuzuweisen ist. Der Zuweisungsfestlegungsteil 38 informiert den Freigabe-/Sperr-Umschaltteil 35, den Zuteiler 33 und den Aufgabenplaner 31, dass der CPU-Kern 2 festgelegt ist. Als ein Ergebnis erlaubt der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausfuhrungsergebnis ausgibt. Der Zuteiler 33 beendet zwangsweise die Aufgabe A, die der CPU-Kern 1 ausgeführt hat. Der Aufgabenplaner 31 löscht die Aufgabe A von der Aufgabenwarteschlange des CPU-Kerns 1 und registriert die Aufgabe A, die gelöscht wurde, in der Aufgabenwarteschlange des CPU-Kerns 2.
-
In der Übereinstimmungsbestimmungsverarbeitung gibt es manche Fälle, in denen Ausführungsergebnisse nicht übereinstimmen, aber der Unterschied beim Vergleich der Ausführungsergebnisse unerheblich ist. Im Falle des Steuerns einer Maschine oder eines elektrischen Motors ist es vorzuziehen, kleine Unterschiede mit Bezug auf eine gesteuerte Zielvariable in manchen Fällen zu erlauben. Solch ein erlaubter Wert kann sich von Aufgabe zu Aufgabe unterscheiden.
-
Somit registriert das Multikernsystem 100 einen erlaubten Differenzwert eines Ausführungsergebnisses für jede Aufgabe im Voraus in die Ubereinstimmungsbestimmungstabelle 37. 5B zeigt ein Beispiel der Ubereinstimmungsbestimmungstabelle 37. Der Ubereinstimmungsbestimmungsteil 36 nimmt auf die Ubereinstimmungsbestimmungstabelle 37 für jede Aufgabe Bezug und wenn der Unterschied innerhalb dem erlaubten Bereich ist, bestimmt der Übereinstimmungsbestimmungsteil 36, dass es eine Übereinstimmung gibt. In den folgenden Sätzen ist der Fall, in dem der Unterschied innerhalb des erlaubten Bereichs liegt, bei einer „Übereinstimmung“ enthalten.
-
Wenn es keine Übereinstimmung gibt, kann das Multikernsystem 100 nicht versuchen, die Verarbeitungslasten zwischen CPU-Kernen anzugleichen, solange die Aufgabe A nicht an einen anderen CPU-Kern zugewiesen wird. Dies führt zu einer Möglichkeit, dass das Ausführungsergebnis verzögert werden kann. Somit, wenn es keine Übereinstimmung in dem Vergleichsergebnis gibt, wartet der Übereinstimmungsbestimmungsteil 36, bis es eine Übereinstimmung gibt. Auf diese Weise kann das Multikernsystem 100 die Angleichung der Verarbeitungslasten erleichtern.
-
Die Übereinstimmungsbestimmungstabelle 37 in 5B registriert die maximale Standby Zeit für jede Aufgabe. Dies ist so, weil eine lange Warteperiode zu einer Verzögerung bei der Berechnung für die tatsächliche Anforderung führt. Wenn es keine Übereinstimmung in dem Vergleichsergebnis gibt, veranlasst der Ubereinstimmungsbestimmungsteil 36 die CPU-Kerne die Aufgabe wiederholt auszuführen, bis die maximale Standby-Zeit beim Warten abgelaufen ist, bis es eine Ubereinstimmung gibt. Wenn es innerhalb der maximalen Standby-Zeit keine Übereinstimmung gibt, veranlasst der Zuteiler 33 den CPU-Kern 2 eine nächste Aufgabe (zum Beispiel die Aufgabe B) probehalber auszuführen, und der Ubereinstimmungsbestimmungsteil 36 bestimmt erneut, ob das Ausfuhrungsergebnis der Aufgabe B durch den CPU-Kern 1 mit dem Ausfuhrungsergebnis der Aufgabe B durch den CPU-Kern 2 übereinstimmt. Auf diese Weise kann das Multikernsystem 100 eine Aufgabe, dessen Ausführungsergebnis einfacher zur Ubereinstimmung zu bringen ist, an den CPU-Kern 2 zuweisen. Wenn eine Aufgabe mit einer höheren Priorität in der Aufgabenwarteschlange registriert ist, beendet der Zuteiler 33 auch innerhalb der maximalen Standby-Zeit zwangsweise eine Aufgabe für eine Übereinstimmungsbestimmungsverarbeitung.
-
(Prozeduren des Multikernsystems 100)
-
(Vor der Initiierung des CPU-Kerns 2)
-
Basierend auf der vorstehenden Anordnung wird mit Bezug auf ein Ablaufdiagramm in 6 eine Prozedur beschrieben, bei der das Multikernsystem 100 die Aufgabe A an den CPU-Kern 2 überträgt. Die Prozedur in 6 wird für jede vorbestimmte Zykluszeit wiederholt ausgeführt, während das Multikernsystem 100 in Betrieb ist. Zur Zeit des Startens des Multikernsystems 100 ist der CPU-Kern 2 nicht initiiert, während der CPU-Kern 1 alle Aufgaben ausführt. Der Lastschatzungsteil 32 überwacht konstant die Verarbeitungslast des CPU-Kerns 1.
-
Für jede Zykluszeit bestimmt der Lastschätzungsteil 32, ob eine Verarbeitungslast hoch wurde, oder ob es eine Möglichkeit gibt, dass eine Verarbeitungslast hoch werden kann (S10). Wenn der Hochlastschätzungszustand nicht erfasst wird (NEIN in S10), wird die Prozedur in 6 direkt beendet.
-
Wenn der Hochlastschatzungszustand erfasst wird (JA in S10), fordert der Lastschatzungsteil 32 den Zuteiler 33 auf, eine Aufgabe probehalber auszufuhren. Der Zuteiler 33 bestimmt gemäß entweder dem statischen oder dem dynamischen Verfahren die Aufgabe A als eine Aufgabe, die zuzuweisen ist, und veranlasst den CPU-Kern 2 die Aufgabe probehalber auszuführen. Wenn der CPU-Kern 1 die Aufgabe A nicht ausführt, veranlasst der Zuteiler 33 den CPU-Kern 1 die Aufgabe A probehalber auszuführen (S20).
-
Wenn der CPU-Kern 2 bereits initiiert wurde, versichert sich das Multikernsystem 100, dass die Verarbeitungslast des CPU-Kerns 2 ausreichend niedrig ist. Wenn das Multikernsystem 100 den CPU-Kern 2 veranlasst, die Aufgabe A probehalber auszufuhren, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausführungsergebnis ausgibt. Auf ahnliche Weise, wenn die Ausführung der Aufgabe A durch den CPU-Kern 1 nicht auf der tatsächlichen Anforderung basiert, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 1 das Ausführungsergebnis ausgibt.
-
Dann vergleicht der Ubereinstimmungsbestimmungsteil 36 das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 2 (S30). Der Ubereinstimmungsbestimmungsteil 36 nimmt Bezug auf die Übereinstimmungsbestimmungstabelle 37 und bestimmt, ob es eine Ubereinstimmung gibt, in Abhängigkeit davon, ob der Unterschied innerhalb des erlaubten Bereichs liegt (S40).
-
Wenn es eine Ubereinstimmung in den Ausfuhrungsergebnissen der Aufgabe A durch den CPU-Kern 1 und durch den CPU-Kern 2 gibt (JA in S40), legt der Zuweisungsfestlegungsteil 38 den CPU-Kern 2 als einen CPU-Kern fest, zu dem die Aufgabe A zugewiesen wird (S50). Auf diese Weise stoppt der Zuteiler 33 die Zuweisung der Aufgabe A an den CPU-Kern 1, der Freigabe-/Sperr-Umschaltteil 35 verhindert, dass der CPU-Kern 2 das Ausführungsergebnis ausgibt und der Aufgabenplaner 31 loscht die Aufgabe A aus der Aufgabenwarteschlange des CPU-Kerns 1 und registriert die Aufgabe A, die gelöscht wurde, in die Aufgabenwarteschlange des CPU-Kerns 2.
-
Wie vorstehend beschrieben kann das Multikernsystem 100 einen Energieverbrauch reduzieren, während die Verarbeitungslast niedrig ist. Wenn die Verarbeitungslast hoch wurde, kann das Multikernsystem 100 die Ausfuhrungszeit durch Angleichen der Verarbeitungslasten der zwei CPU-Kerne sicherstellen.
-
Solange es keine Übereinstimmung in den Ausführungsergebnissen der Aufgabe A durch den CPU-Kern 1 und durch den CPU-Kern 2 gibt (NEIN in S40), fährt der Ubereinstimmungsbestimmungsteil 36 fort, die Ausführungsergebnisse der wiederholt ausgeführten Aufgabe A zu vergleichen, bis die maximale Standby-Zeit der Aufgabe A, die in der Übereinstimmungsbestimmungstabelle 37 gespeichert ist, ablauft (S60, S70). Wenn es eine Regelung gibt, kann das Multikernsystem 100 das Angleichen der Verarbeitungslast durch Warten erleichtern. Dies ist so, weil erwartet werden kann, dass sich zwei Ausführungsergebnisse aufgrund der wiederholten Ausführung annähern.
-
(Nach der Initiierung des CPU-Kerns 2)
-
Als Nächstes wird mit Bezug auf 7 eine Prozedur in dem Fall beschrieben, in dem sowohl der CPU-Kern 1 als auch der CPU-Kern 2 eine Aufgabe ausführen, ein Ungleichgewicht zwischen Verarbeitungslasten aufgetreten ist, oder es eine Möglichkeit gibt, dass ein Ungleichgewicht auftritt.
-
Für jede Zykluszeit bestimmt der Lastschätzungsteil 32, ob ein Ungleichgewicht zwischen Verarbeitungslasten aufgetreten ist, oder ob es eine Möglichkeit gibt, dass ein Ungleichgewicht auftreten wird (S11).
-
Wenn der Lastschätzungsteil 32 den Ungleichgewichtsschätzungszustand erfasst (JA in S11), fordert der Lastschätzungsteil 32 den Zuteiler 33 auf, eine Aufgabe probehalber auszufuhren. Der Zuteiler 33 bestimmt die Aufgabe A als eine Aufgabe, die gemäß entweder dem statischen oder dem dynamischen Verfahren zuzuweisen ist, und veranlasst den CPU-Kern 2 die Aufgabe probehalber auszufuhren. Wenn der CPU-Kern 1 die Aufgabe A nicht ausführt, veranlasst der Zuteiler 33 den CPU-Kern 1, die Aufgabe A probehalber auszuführen (S20). Wenn das Multikernsystem 100 den CPU-Kern 2 veranlasst, die Aufgabe A probehalber auszuführen, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausfuhrungsergebnis ausgibt. Auf ähnliche Weise, wenn die Ausführung der Aufgabe A durch den CPU-Kern 1 nicht auf einer tatsächlichen Anforderung basiert, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 1 das Ausführungsergebnis ausgibt.
-
Dann vergleicht der Übereinstimmungsbestimmungsteil 36 das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 2 (S30). Der Übereinstimmungsbestimmungsteil 36 nimmt Bezug auf die Ubereinstimmungsbestimmungstabelle 37 und bestimmt, ob es eine Übereinstimmung gibt, in Abhängigkeit davon, ob der Unterschied innerhalb des erlaubten Bereichs liegt (S40).
-
Wenn es eine Ubereinstimmung in den Ausfuhrungsergebnissen der Aufgabe A durch den CPU-Kern 1 und durch den CPU-Kern 2 gibt (JA in S40), legt der Zuweisungsfestlegungsteil 38 den CPU-Kern 2 als einen CPU-Kern fest, zu dem die Aufgabe A zugewiesen wird (S50). Auf diese Weise stoppt der Zuteiler 33 die Zuweisung der Aufgabe A an den CPU-Kern 1, der Freigabe-/Sperr-Umschaltteil 35 erlaubt, dass der CPU-Kern 2 das Ausführungsergebnis ausgibt und der Aufgabenplaner 31 löscht die Aufgabe A aus der Aufgabenwarteschlange des CPU-Kerns 1 und registriert die Aufgabe A, die gelöscht wurde, in die Aufgabenwarteschlange des CPU-Kerns 2. Auf diese Weise, wenn ein Ungleichgewicht zwischen den Verarbeitungslasten der zwei CPU-Kerne 1, 2 auftritt, kann das Multikernsystem 100 die Verarbeitungslasten angleichen.
-
Wenn es keine Übereinstimmung in den Ausführungsergebnissen der Aufgabe A durch den CPU-Kern 1 und durch den CPU-Kern 2 gibt (NEIN in S40), fährt der Übereinstimmungsbestimmungsteil 36 fort, die Ausführungsergebnisse der wiederholt ausgefuhrten Aufgabe A zu vergleichen, bis die maximale Standby-Zeit der Aufgabe A, die in der Ubereinstimmungsbestimmungstabelle 37 gespeichert ist, abläuft (S60, S70). Auf diese Weise kann das Multikernsystem 100 die Verarbeitungslasten soweit wie möglich angleichen.
-
In 7, obwohl der Fall beschrieben ist, in dem es zwei CPU-Kerne gibt, wenn jeder von drei oder mehr CPU-Kernen jede Aufgabe ausführt, weist der Zuteiler 33 eine Aufgabe, die ein CPU-Kern mit der höchsten Verarbeitungslast ausführt, an einen CPU-Kern mit der niedrigsten Verarbeitungslast zu. 8 ist ein Beispiel eines Diagramms, das diagrammatisch eine Angleichung von Verarbeitungslasten in dem Fall zeigt, in dem drei oder mehr CPU-Kerne vorkommen. In 8 weist der CPU-Kern 1 eine hohe Verarbeitungslast auf, weist der CPU-Kern 2 eine niedrige Verarbeitungslast auf und weist der CPU-Kern 3 eine mittlere Verarbeitungslast auf. In diesem Fall weist der Zuteiler 33 die Aufgabe A oder die Aufgabe B, die der CPU-Kern 1 ausgeführt hat, an den CPU-Kern 2 zu.
-
Es gibt manche Fälle, in denen das Multikernsystem 100 den CPU-Kern 2 stoppen und einen Energieverbrauch nicht durch Angleichen, sondern durch Zuweisen der Aufgabe C, die der CPU-Kern 2 ausgeführt hat, an den CPU-Kern 3 mit der mittleren Verarbeitungslast reduzieren kann. Ob ein Angleichen oder ein Versuch der Reduzierung des Energieverbrauchs durchgeführt wird, kann in Abhängigkeit des Ausmaßes der Verarbeitungslast des CPU-Kerns 1, des Ausmaßes der Verarbeitungslast des CPU-Kerns 3, wenn der CPU-Kern 2 gestoppt wurde, oder Ähnlichem entschieden werden.
-
Im Falle des dynamischen Bestimmungsverfahrens kann das Multikernsystem 100 den CPU-Kern 2 veranlassen, zusätzlich zu dem CPU-Kern 1, der die Aufgabe A ausführt, die Aufgabe A probehalber auszuführen. In dem Fall des statischen Bestimmungsverfahrens bestimmt das Multikernsystem 100 eine Aufgabe, die durch den CPU-Kern 2 probehalber auszuführen ist. In dem Fall des statischen Bestimmungsverfahrens nimmt der Zuteiler 33 auf die Prioritätstabelle 34 Bezug und wählt eine Aufgabe, von der angenommen wird, dass sie vorzugsweise an den CPU-Kern 2 mit der niedrigsten Verarbeitungslast zugewiesen wird, und die momentan an den CPU-Kern 1 mit der höchsten Verarbeitungslast zugewiesen ist, aus. Dann veranlasst der Zuteiler 33 sowohl den CPU-Kern 1 mit der höchsten Verarbeitungslast als auch den CPU-Kern 2 mit der niedrigsten Verarbeitungslast, die Aufgabe probehalber auszuführen. Ein Bestimmen der Aufgabe, die probehalber auszufuhren ist, basierend auf der Prioritatstabelle 34 erleichtert das Angleichen der Verarbeitungslasten.
-
Wieder Bezug nehmend auf Schritt S11, wenn der Lastschatzungsteil 32 keinen Ungleichgewichtszustand erfasst (NEIN in S11), bestimmt der Lastschätzungsteil 32, ob die Verarbeitungslast des CPU-Kerns 2 niedrig ist (S110). Ein Schwellenwert dieser Bestimmung wird derart gesetzt, dass die Verarbeitungslast des CPU-Kerns 1 nicht hoch wird, auch wenn der CPU-Kern 2 gestoppt wird, und der CPU-Kern 1 die Aufgabe ausfuhrt. Somit ist entsprechend jeder Schwellenwert zum Bestimmen der Verwendungsrate R1, der Anzahl von Aufgaben N1 oder des Fahrzeugstatuswerts S geringer als TR1, TN1, oder TS.
-
Wenn die Verarbeitungslast des CPU-Kerns 2 niedrig ist (JA in S110), kann das Multikernsystem 100 den CPU-Kern 2 gemäß der ähnlichen Prozedur wie in dem Fall, in dem der Hochlastschätzungszustand erfasst wurde, stoppen.
-
Speziell fordert der Lastschatzungsteil 32 den Zuteiler 33 auf, eine Aufgabe probehalber auszuführen. Gemaß entweder dem statischen oder dem dynamischen Verfahren bestimmt der Zuteiler 33 die Aufgabe A als eine Aufgabe, die zuzuweisen ist, und veranlasst den CPU-Kern 1 die Aufgabe A probehalber auszuführen. Wenn der CPU-Kern 2 die Aufgabe A nicht ausführt, veranlasst der Zuteiler 33 den CPU-Kern 2, die Aufgabe A probehalber auszuführen (S120). Wenn der CPU-Kern 1 veranlasst wird, die Aufgabe A probehalber auszuführen, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 1 das Ausfuhrungsergebnis ausgibt. Wenn die Ausfuhrung der Aufgabe A durch den CPU-Kern 2 nicht auf der tatsächlichen Anforderung basiert, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausfuhrungsergebnis ausgibt.
-
Dann vergleicht der Ubereinstimmungsbestimmungsteil 36 das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 2 (S130). Der Ubereinstimmungsbestimmungsteil 36 nimmt Bezug auf die Übereinstimmungsbestimmungstabelle 37 und bestimmt, ob es eine Übereinstimmung gibt, in Abhängigkeit davon, ob der Unterschied innerhalb des erlaubten Bereichs ist (S140).
-
Wenn das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 mit dem Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 2 ubereinstimmt (JA in S140), legt der Zuweisungsfestlegungsteil 38 den CPU-Kern 1 als einen CPU-Kern fest, zu dem die Aufgabe A zugewiesen wird (S150).
-
Auf diese Weise stoppt der Zuteiler 33 die Zuweisung der Aufgabe A an den CPU-Kern 2, der Freigabe-/Sperr-Umschaltteil 35 erlaubt, dass der CPU-Kern 1 das Ausführungsergebnis der Aufgabe A ausgibt, und der Aufgabenplaner 31 löscht die Aufgabe A von der Aufgabenwarteschlange des CPU-Kerns 2 und registriert die Aufgabe A, die gelöscht wurde, in die Aufgabenwarteschlange des CPU-Kerns 1.
-
Das Multikernsystem 100 stoppt den CPU-Kern 2 durch zum Beispiel Beenden eines Bereitstellens eines Taktes. Somit kann das Multikernsystem 100 einen Energieverbrauch reduzieren. Auf diese Weise kann das Multikernsystem 100 einen Energieverbrauch durch Anhalten des CPU-Kerns 2 mit der niedrigen Verarbeitungslast reduzieren.
-
Wenn das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 nicht mit dem Ausführungsergebnis der Aufgabe A durch den CPU-Kern 2 ubereinstimmt (NEIN in S140), fährt der Übereinstimmungsbestimmungsteil 36 fort, die Ausführungsergebnisse der wiederholt ausgeführten Aufgabe A zu vergleichen, bis die maximale Standby-Zeit der Aufgabe A, die in der Übereinstimmungsbestimmungstabelle 37 gespeichert ist, abläuft. Der Standby kann eine Reduzierung eines Energieverbrauchs fördern.
-
Wie vorstehend beschrieben kann das Multikernsystem 100 des vorliegenden Ausführungsbeispiels einen CPU-Kern, der eine Aufgabe ausführt, die aus dem Steuerungssystemprogramm erzeugt wird, ohne eine abrupte Änderung im Ausführungsergebnis der Aufgabe umschalten.
-
(Zweites Ausführungsbeispiel)
-
Das Multikernsystem 100 in dem ersten Ausführungsbeispiel wartet, bis das Ausführungsergebnis durch den CPU-Kern 1 mit dem Ausführungsergebnis durch den CPU-Kern 2 übereinstimmt, bis zu einer maximalen Standby-Zeit. Bei der Lastverteilung ist es jedoch vorzuziehen, die Aufgabe A, die zum Beispiel der CPU-Kern 1 mit hoher Verarbeitungslast ausgeführt hat, so früh wie moglich an einen anderen CPU-Kern (den CPU-Kern 2) zuzuweisen.
-
Wenn es eine Vielzahl von CPU-Kernen 1~n gibt, ist es üblich, dass eine Aufgabe an einen CPU-Kern mit der niedrigsten Verarbeitungslast zugewiesen wird, um die Verarbeitungslasten zu verteilen. Für eine Aufgabe in dem Steuerungssystem ist es jedoch notwendig, eine Zuweisung der Aufgabe umzuschalten, während die Kontinuitat der Steuerung beibehalten wird. Somit kann es von dem Standpunkt einer schnellen Verteilung der Verarbeitungslasten aus vorzuziehen sein, einen CPU-Kern auszuwahlen, der zuzuweisen ist, anstatt die Aufgabe an einen CPU-Kern mit einer niedrigen Verarbeitungslast zuzuweisen. Das heißt, auch wenn eine Verarbeitungslast einigermaßen hoch ist, kann der fruheste CPU-Kern, der ein übereinstimmendes Ausführungsergebnis erhalten kann, als ein CPU-Kern, zu dem eine Aufgabe zugewiesen wird, optimaler sein, als ein CPU-Kern, der durch Zuweisen der Aufgabe zu einem CPU-Kern mit einer niedrigen Verarbeitungslast und Warten, bis das Ausführungsergebnis übereinstimmt, bestimmt wird.
-
Somit beschreibt das vorliegende Ausführungsbeispiel das Multikernsystem 100, das eine Aufgabe an den fruhesten CPU-Kern, dessen Ausfuhrungsergebnis ubereinstimmt, zuweist, wenn es eine Vielzahl von CPU-Kernen 1~n gibt, zu denen die Aufgabe zugewiesen werden kann.
-
9 zeigt ein Beispiel, das diagrammatisch eine Lastverteilung durch das Multikernsystem 100 des vorliegenden Ausführungsbeispiels zeigt. Das Multikernsystem 100 des vorliegenden Ausführungsbeispiels veranlasst eine Vielzahl von CPU-Kernen 1~n, die gleiche Aufgabe probehalber auszuführen, und legt den frühesten CPU-Kern unter den CPU-Kernen 1~n, dessen Ausführungsergebnis übereinstimmt, als einen CPU-Kern fest, zu dem die Aufgabe zugewiesen wird.
-
In 9 weist das Multikernsystem 100 vier CPU-Kerne 1~4 auf. Der CPU-Kern 1 führt die Aufgabe A und die Aufgabe B aus, während der CPU-Kern 4 die Aufgabe D ausführt. Wenn eine Verarbeitungslast des CPU-Kerns 1 hoch wird, ahnlich wie bei dem ersten Ausführungsbeispiel, veranlasst der Zuteiler 33 zum Beispiel den CPU-Kern 2 und den CPU-Kern 3, die Aufgabe A probehalber auszufuhren. Der Lastschätzungsteil 32 überwacht entsprechende Verarbeitungslasten der entsprechenden CPU-Kerne 1~n, extrahiert einen oder mehrere CPU-Kerne, dessen Verarbeitungslasten kleiner oder gleich einem vorbestimmten Wert sind, und informiert den Zuteiler 33 uber das Ergebnis der Extrahierung. In 9, da eine Verarbeitungslast des CPU-Kerns 4 hoch ist, veranlasst der Zuteiler 33 den CPU-Kern 4, die Aufgabe A nicht probehalber auszuführen.
-
Der Ubereinstimmungsbestimmungsteil 36 vergleicht das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch CPU-Kern 2 und vergleicht das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 3. Dann erfasst der Ubereinstimmungsbestimmungsteil 36 den fruhesten CPU-Kern unter den CPU-Kernen 1~n, dessen Ausfuhrungsergebnis mit dem Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 1 übereinstimmt. Der Zuweisungsfestlegungsteil 38 legt den frühesten CPU-Kern (CPU-Kern 2), dessen Ausführungsergebnis übereingestimmt hat, als den CPU-Kern fest, zu dem die Aufgabe A zugewiesen wird.
-
Auf diese Weise kann das Multikernsystem 100 die Zeit zum Festlegen eines CPU-Kerns, zu dem die Aufgabe zugewiesen wird, reduzieren, und das Risiko einer Instabilitat einer Steuerung, wenn das Multikernsystem 100 Verarbeitungslasten unter einer Vielzahl von CPU-Kernen 1~n verteilt, reduzieren.
-
(Funktioneller Block des Multikernsystems 100)
-
10 zeigt ein Beispiel eines Diagramms eines funktionellen Blocks des Multikernsystems 100 des vorliegenden Ausführungsbeispiels. In 10 sind gleiche Teile mit gleichen Bezugszeichen versehen und eine Beschreibung von diesen wird ausgelassen. Der Lastschätzungsabschnitt 32 uberwacht Verarbeitungslasten von allen CPU-Kernen 1~n. Der Lastschatzungsabschnitt 32 erfasst, ob irgendeine der Verarbeitungslasten der CPU-Kerne 1~n hoch wurde, oder ob es eine Möglichkeit gibt, dass irgendeine der Verarbeitungslasten der CPU-Kerne 1~n hoch wird. In dem vorliegenden Ausführungsbeispiel wird angenommen, dass der Hochlastschatzungszustand mit dem Ungleichgewichtsschatzungszustand gleichbedeutend ist. Dies ist so, weil es selten ist, dass die Hochlastschatzungszustände in Verarbeitungslasten von allen CPU-Kernen 1~n gleichmäßig erfasst werden. Wenn der Lastschätzungsabschnitt 32 den Hochlastschatzungszustand in zum Beispiel dem CPU-Kern 1 erfasst, bestimmt der Lastschatzungsteil 32 zum Beispiel den CPU-Kern 2 und den CPU-Kern 3, dessen Verarbeitungslasten niedriger oder gleich dem vorbestimmten Wert sind, als Kandidaten von CPU-Kernen, zu denen die Aufgabe A zugewiesen wird.
-
Der Zuteiler 33 veranlasst den CPU-Kern 2 und den CPU-Kern 3, die als die Kandidaten bestimmt sind, die Aufgabe A probehalber auszuführen. Wenn der CPU-Kern 1 mit einer hohen Verarbeitungslast die Aufgabe A noch nicht ausgeführt hat, veranlasst der Zuteiler 33 den CPU-Kern 1, die Aufgabe A probehalber auszuführen. Auf diese Weise führt jeder der CPU-Kerne 1~3 die Aufgabe A aus. Da eine Zeit, wenn jeder des CPU-Kerns 2 und des CPU-Kerns 3 eine Ausführung der Aufgabe A startet, gemäß jedem von Verarbeitungszuständen des CPU-Kerns 2 und des CPU-Kerns 3 bestimmt ist, ist es nicht immer der Fall, dass jeder des CPU-Kerns 2 und des CPU-Kerns 3 die Ausführung der Aufgabe A gleichzeitig beginnt.
-
Dann vergleicht der Ubereinstimmungsbestimmungsteil 36 des vorliegenden Ausführungsbeispiels das Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 1 mit hoher Verarbeitungslast und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 2, zu dem die Aufgabe A zur Bestimmung zugewiesen wird, und vergleicht das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 mit hoher Verarbeitungslast und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 3, zu dem die Aufgabe A zur Bestimmung zugewiesen ist. Der Ubereinstimmungsbestimmungsteil 36 informiert den Zuweisungsfestlegungsteil 38 über Identifikationsinformationen von zum Beispiel dem frühesten CPU-Kern 2, dessen Ausfuhrungsergebnis ubereinstimmt.
-
Der Zuweisungsfestlegungsteil 38 legt den CPU-Kern 2 als den CPU-Kern fest, zu dem die Aufgabe A zugewiesen wird. Der Zuweisungsfestlegungsteil 38 informiert den Freigabe-/Sperr-Umschaltteil 35, den Zuteiler 33, und den Aufgabenplaner 31 über die Identifikationsinformationen des festgelegten CPU-Kerns 2. Als ein Ergebnis erlaubt der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausführungsergebnis ausgibt. Der Zuteiler 33 beendet zwangsmäßig die Aufgabe A, die der CPU-Kern 1 und der CPU-Kern 3 ausführen. Der Aufgabenplaner 31 loscht die Aufgabe A von der Aufgabenwarteschlange des CPU-Kerns 1 und registriert die Aufgabe A, die gelöscht wurde, in die Aufgabenwarteschlange des CPU-Kerns 2.
-
Auf diese Weise kann das Multikernsystem 100 den frühesten CPU-Kern 2, dessen Ausführungsergebnis der Aufgabe A mit dem Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 1 mit der hohen Verarbeitungslast übereinstimmt, als einen CPU-Kern festlegen, zu dem die Aufgabe A zugewiesen wird, und die Zeit zum Festlegen des CPU-Kerns, zu dem die Aufgabe A zugewiesen wird, reduzieren.
-
(Verarbeitungsprozedur des Multikernsystems 100)
-
11 zeigt ein Beispiel eines Ablaufdiagramms, das eine Prozedur angibt, bei der das Multikernsystem 100 den frühesten CPU-Kern 2, dessen Ausfuhrungsergebnis der Aufgabe A mit dem Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 mit hoher Verarbeitungslast übereinstimmt, als einen CPU-Kern festlegt, zu dem die Aufgabe A zugewiesen wird. Die CPU-Kerne 1~4 konnen bereits initiiert worden sein oder können noch nicht initiiert worden sein.
-
Der Lastschatzungsteil 32 uberwacht konstant die Verarbeitungslasten der CPU-Kerne 1~4. Der Lastschätzungsteil 32 bestimmt, ob die Verarbeitungslasten hoch wurden, oder ob es eine Moglichkeit gibt, dass die Verarbeitungslasten hoch werden (S10). Wenn der Hochlastschatzungszustand nicht erfasst wird (NEIN in S10), endet die Prozedur in 11. Das ist so, weil es keine Notwendigkeit gibt, die Verarbeitungslasten zu verteilen.
-
Wenn der Hochlastschätzungszustand erfasst wird (JA in S10), bestimmt der Lastschätzungsteil 32 einen vorubergehenden CPU-Kern, zu dem die Aufgabe A zugewiesen wird (S12). Der vorübergehende CPU-Kern kann der CPU-Kern 2, 3 sein, dessen Verarbeitungslast niedriger oder gleich einem vorbestimmten Wert ist.
-
Der Zuteiler 33 veranlasst unter Verwendung von entweder dem statischen oder dem dynamischen Verfahren den CPU-Kern 2 und den CPU-Kern 3 die Aufgabe A probehalber auszuführen (S21). Wenn der CPU-Kern 1 mit hoher Verarbeitungslast die Aufgabe A nicht ausführt, veranlasst der Zuteiler 33 den CPU-Kern 1, die Aufgabe A probehalber auszuführen.
-
Wenn der Zuteiler 33 den CPU-Kern 2 und den CPU-Kern 3 veranlasst, die Aufgabe A probehalber auszufuhren, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass jeder der CPU-Kerne 2 und 3 das Ausfuhrungsergebnis ausgibt. Wenn die Ausführung der Aufgabe A durch den CPU-Kern 1 nicht auf einer tatsächlichen Anforderung basiert, verhindert der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 1 das Ausführungsergebnis ausgibt.
-
Dann vergleicht der Ubereinstimmungsbestimmungsteil 36 das Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 2 und vergleicht das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 und das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 3 (S31). Der Übereinstimmungsbestimmungsteil nimmt Bezug auf die Ubereinstimmungsbestimmungstabelle 37 und bestimmt, ob es eine Übereinstimmung gibt, in Abhängigkeit davon, ob der Unterschied innerhalb eines erlaubten Bereichs liegt (S40).
-
Wenn das Ausführungsergebnis der Aufgabe A des CPU-Kerns 2 das früheste Ausfuhrungsergebnis ist, das mit dem Ausfuhrungsergebnis der Aufgabe A durch den CPU-Kern 1 übereinstimmt (JA in S40), legt der Zuweisungsfestlegungsteil 38 den CPU-Kern 2 als einen CPU-Kern fest, zu dem die Aufgabe A zugewiesen wird, wobei, wenn das Ausführungsergebnis der Aufgabe A durch den CPU-Kern 3 das früheste Ausführungsergebnis ist, das mit dem Ausführungsergebnis der Aufgabe A durch den CPU-Kern 1 übereinstimmt (JA in S40), der Zuweisungsfestlegungsteil 38 den CPU-Kern 3 als einen CPU-Kern festlegt, zu dem die Aufgabe A zugewiesen wird (S51). Die Bestimmung, ob es eine Ubereinstimmung gibt, wird wie in dem ersten Ausführungsbeispiel wiederholt, bis die maximale Standby-Zeit abgelaufen ist.
-
Der Zuweisungsfestlegungsteil 38 informiert den Freigabe-/Sperr-Umschaltteil 35, den Zuteiler 33 und den Aufgabenplaner 31 uber den festgelegten CPU-Kern. Als ein Ergebnis erlaubt der Freigabe-/Sperr-Umschaltteil 35, dass der CPU-Kern 2 das Ausführungsergebnis ausgibt. Der Zuteiler 33 beendet zwangsmaßig die Aufgabe A, die der CPU-Kern 1 und der CPU-Kern 3 ausführen. Der Aufgabenplaner 31 löscht die Aufgabe A aus der Aufgabenwarteschlange des CPU-Kerns 1 und registriert die Aufgabe A, die gelöscht wurde, in die Aufgabenwarteschlange des CPU-Kerns 2.
-
Das Multikernsystem 100 des vorliegenden Ausführungsbeispiels kann die Zeit zum Festlegen eines CPU-Kerns, zu dem eine Aufgabe zugewiesen wird, reduzieren, und kann ein Risiko einer Instabilität bei einer Steuerung, wenn das Multikernsystem 100 Verarbeitungslasten unter einer Vielzahl von CPU-Kernen verteilt, reduzieren.
-
Die vorliegende internationale Anmeldung beansprucht die Prioritat der
Japanischen Patentanmeldung Nr. 2008-188830 , eingereicht am 22. Juli 2008, die hierbei durch Bezugnahme vollständig mit eingeschlossen wird.