DE112009001700B4 - Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren - Google Patents

Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren Download PDF

Info

Publication number
DE112009001700B4
DE112009001700B4 DE112009001700.2T DE112009001700T DE112009001700B4 DE 112009001700 B4 DE112009001700 B4 DE 112009001700B4 DE 112009001700 T DE112009001700 T DE 112009001700T DE 112009001700 B4 DE112009001700 B4 DE 112009001700B4
Authority
DE
Germany
Prior art keywords
cpu core
task
processing load
core
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE112009001700.2T
Other languages
English (en)
Other versions
DE112009001700T5 (de
Inventor
Kazumi Yamada
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Publication of DE112009001700T5 publication Critical patent/DE112009001700T5/de
Application granted granted Critical
Publication of DE112009001700B4 publication Critical patent/DE112009001700B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Microcomputers (AREA)

Abstract

Multikernsystem (100) zum Zuweisen einer Aufgabe, die von einem Steuerungssystemprogramm erzeugt wird, zu einem CPU-Kern und Ausführen der Aufgabe, mit:einem Probeausführungsanweisungsteil (33), der konfiguriert ist, um einen zweiten CPU-Kern zu veranlassen, eine Aufgabe, die ein erster CPU-Kern ausführt, probehalber auszuführen, bevor das Multikernsystem die Aufgabe von dem ersten CPU-Kern zu dem zweiten CPU-Kern überträgt und den zweiten CPU-Kern veranlasst, die Aufgabe auszuführen;einem Bestimmungsteil (36), der konfiguriert ist, um zu bestimmen, ob das Ausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt; undeinem Zuweisungsfestlegungsteil (38), der konfiguriert ist, um den zweiten CPU-Kern als den CPU-Kern festzulegen, zu dem die Aufgabe zugewiesen wird, wenn der Bestimmungsteil bestimmt, dass das Ausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt.

Description

  • 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.

Claims (18)

  1. Multikernsystem (100) zum Zuweisen einer Aufgabe, die von einem Steuerungssystemprogramm erzeugt wird, zu einem CPU-Kern und Ausführen der Aufgabe, mit: einem Probeausführungsanweisungsteil (33), der konfiguriert ist, um einen zweiten CPU-Kern zu veranlassen, eine Aufgabe, die ein erster CPU-Kern ausführt, probehalber auszuführen, bevor das Multikernsystem die Aufgabe von dem ersten CPU-Kern zu dem zweiten CPU-Kern überträgt und den zweiten CPU-Kern veranlasst, die Aufgabe auszuführen; einem Bestimmungsteil (36), der konfiguriert ist, um zu bestimmen, ob das Ausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt; und einem Zuweisungsfestlegungsteil (38), der konfiguriert ist, um den zweiten CPU-Kern als den CPU-Kern festzulegen, zu dem die Aufgabe zugewiesen wird, wenn der Bestimmungsteil bestimmt, dass das Ausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt.
  2. Multikernsystem (100) gemäß Anspruch 1, dadurch gekennzeichnet, dass: der Probeausführungsanweisungsteil (33) konfiguriert ist, um zwei oder mehrere zweite CPU-Kerne zu veranlassen, die Aufgabe probehalber auszuführen, der Bestimmungsteil (36) konfiguriert ist, um das Ausführungsergebnis durch den ersten CPU-Kern mit jedem der Probeausführungsergebnisse durch die zwei oder mehr zweiten CPU-Kerne zu vergleichen, und der Zuweisungsfestlegungsteil (38) konfiguriert ist, um einen CPU-Kern mit dem frühesten Probeausführungsergebnis unter den zwei oder mehr zweiten CPU-Kernen als den CPU-Kern festzulegen, zu dem die Aufgabe zugewiesen wird, wobei das früheste Probeausführungsergebnis mit dem Ausführungsergebnis durch den ersten CPU-Kern übereinstimmt.
  3. Multikernsystem (100) gemäß Anspruch 1 oder 2, weiterhin mit einem Verarbeitungslasterfassungsteil (32), der konfiguriert ist, um eine Verarbeitungslast des ersten CPU-Kerns zu erfassen, dadurch gekennzeichnet, dass: der Probeausführungsanweisungsteil (33) konfiguriert ist, um den zweiten CPU-Kern zu veranlassen, die Aufgabe probehalber auszuführen, wenn der Verarbeitungslasterfassungsteil erfasst, dass eine Verarbeitungslast des ersten CPU-Kerns hoch geworden ist, oder dass es eine Möglichkeit gibt, dass eine Verarbeitungslast des ersten CPU-Kerns hoch wird, wobei eine hohe Verarbeitungslast des ersten CPU-Kerns basierend auf zumindest einem einer Verwendungsrate des ersten CPU-Kerns, einer Anzahl von registrierten Aufgaben in der Warteschlange, und eines Status eines gesteuerten Objekts erfasst wird.
  4. Multikernsystem (100) gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass: der Probeausführungsanweisungsteil (33) konfiguriert ist, um den ersten CPU-Kern zu veranlassen, die Aufgabe probehalber auszuführen, wenn der erste CPU-Kern die Aufgabe nicht ausführt.
  5. Multikernsystem (100) gemäß Anspruch 1 oder 2, weiterhin mit einem Verarbeitungslasterfassungsteil (32), der konfiguriert ist, um Verarbeitungslasten des ersten CPU-Kerns und des zweiten CPU-Kerns zu erfassen, dadurch gekennzeichnet, dass: der Probeausführungsanweisungsteil (33) konfiguriert ist, um den ersten CPU-Kern und den zweiten CPU-Kern zu veranlassen, die Aufgabe, die der erste CPU-Kern oder der zweite CPU-Kern mit einer höheren Verarbeitungslast ausgeführt haben, probehalber auszuführen, wenn der Verarbeitungslasterfassungsteil (32) ein Ungleichgewicht oder die Möglichkeit eines Ungleichgewichts zwischen der Verarbeitungslast des ersten CPU-Kerns und der Verarbeitungslast des zweiten CPU-Kerns erfasst.
  6. Multikernsystem (100) gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass: der Bestimmungsteil (36) konfiguriert ist, um zu bestimmen, dass das Ausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt, wenn ein Unterschied zwischen dem Ausführungsergebnis durch den ersten CPU-Kern und dem Probeausführungsergebnis durch den zweiten CPU-Kern innerhalb eines vorbestimmten Bereichs liegt.
  7. Multikernsystem (100) gemäß Anspruch 6, dadurch gekennzeichnet, dass: der Bereich in Abhängigkeit der Aufgabe vorbestimmt ist.
  8. Multikernsystem (100) gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass: der Bestimmungsteil (36) konfiguriert ist, um, in dem Fall, dass das Ausführungsergebnis durch den ersten CPU-Kern nicht mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt, eine Bestimmung zu wiederholen, bis das Ausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern innerhalb einer vorbestimmten Standby-Zeit übereinstimmt.
  9. Multikernsystem (100) gemäß Anspruch 1, weiterhin mit einer Prioritätstabelle (34), die konfiguriert ist, um den CPU-Kern zu registrieren, zu dem die Aufgabe zugewiesen ist, mit Bezug auf die Aufgabe, dadurch gekennzeichnet, dass: der Probeausführungsanweisungsteil (33) konfiguriert ist, um auf die Prioritätstabelle (34) Bezug zu nehmen, um einen CPU-Kern zur Probeausführung der Aufgabe zu bestimmen.
  10. Multikernsystem (100) gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass: es einen Verarbeitungslasterfassungsteil (32) aufweist, der konfiguriert ist, um Verarbeitungslasten der CPU-Kerne zu erfassen, eine Aufgabe, wegen der der Probeausführungsanweisungsteil (33) den zweiten CPU-Kern veranlasst, diese probehalber auszuführen, eine Aufgabe ist, die der erste CPU-Kern ausführt, wenn der Verarbeitungslasterfassungsteil (32) erfasst hat, dass eine Verarbeitungslast des ersten CPU-Kerns größer als ein erster Schwellenwert geworden ist, oder der Verarbeitungslasterfassungsteil (32) erfasst hat, dass es eine Möglichkeit gibt, dass eine Verarbeitungslast des ersten CPU-Kerns größer als der erste Schwellenwert wird, oder wenn der Verarbeitungslasterfassungsteil (32) ein Ungleichgewicht oder die Möglichkeit eines Ungleichgewichts zwischen Verarbeitungslasten einer Vielzahl von CPU-Kernen erfasst hat.
  11. Multikernsystem (100) gemäß Anspruch 10, dadurch gekennzeichnet, dass: der erste CPU-Kern konfiguriert ist, um an ein gesteuertes Objekt ein Ausführungsergebnis der Aufgabe, die der erste CPU-Kern ausführt, auszugeben, wenn der Verarbeitungslasterfassungsteil (32) erfasst hat, dass eine Verarbeitungslast des ersten CPU-Kerns größer als ein erster Schwellenwert geworden ist, oder der Verarbeitungslasterfassungsteil (32) erfasst hat, dass es eine Möglichkeit gibt, dass eine Verarbeitungslast des ersten CPU-Kerns größer als der erste Schwellenwert wird, oder wenn der Verarbeitungslasterfassungsteil (32) ein Ungleichgewicht oder die Möglichkeit eines Ungleichgewichts unter Verarbeitungslasten von einer Vielzahl von CPU-Kernen erfasst hat.
  12. Multikernsystem (100) gemäß Anspruch 3, dadurch gekennzeichnet, dass: der Verarbeitungslasterfassungsteil (32) konfiguriert ist, um zu erfassen, dass die Verarbeitungslast des ersten CPU-Kerns größer als ein erster Schwellenwert ist, wenn zumindest eine von Bedingungen erfüllt ist, wobei die Bedingungen sind, dass eine CPU-Kern-Verwendungsrate, die eine Rate einer Ausführungszeitperiode der Aufgabe mit Bezug auf eine vorbestimmte Zeitperiode darstellt, größer als ein Schwellenwert TR1 ist, und dass die Anzahl von Aufgaben im Standby größer als ein Schwellenwert TN1 ist, und der Verarbeitungslasterkennungsteil (32) konfiguriert ist, um zu erfassen, dass die Verarbeitungslast des ersten CPU-Kerns größer als der erste Schwellenwert wird, wenn zumindest eine von Bedingungen erfüllt ist, wobei die Bedingungen sind, dass eine Zunahmerate der CPU-Kern-Verwendungsrate größer als ein Schwellenwert TdR1 ist, und dass eine Zunahmerate der Anzahl von Aufgaben im Standby größer als ein Schwellenwert TdN1 ist.
  13. Multikernsystem (100) gemäß Anspruch 3, dadurch gekennzeichnet, dass: der Verarbeitungslasterfassungsteil (32) konfiguriert ist, um zu erfassen, dass die Verarbeitungslast des ersten CPU-Kerns größer als ein vorbestimmter Schwellenwert ist, wenn ein Statuswert, der einen Zustand eines Fahrzeugs darstellt, größer als ein Schwellenwert TS ist, und der Verarbeitungslasterfassungsteil (32) konfiguriert ist, um zu erfassen, dass die Verarbeitungslast des ersten CPU-Kerns größer als der Schwellenwert wird, wenn eine Zunahmerate des Statuswerts, der einen Zustand des Fahrzeugs angibt, größer als ein Schwellenwert TdS ist.
  14. Multikernsystem (100) gemäß Anspruch 5, dadurch gekennzeichnet, dass: der Verarbeitungslasterfassungsteil (32) konfiguriert ist, um das Ungleichgewicht zwischen der Verarbeitungslast des ersten CPU-Kerns und der Verarbeitungslast des zweiten CPU-Kerns zu erfassen, wenn zumindest eine von Bedingungen erfüllt ist, wobei die Bedingungen sind, dass ein Unterschied zwischen einer CPU-Kern-Verwendungsrate des ersten CPU-Kerns, der eine Rate einer Ausführungszeitperiode der Aufgabe mit Bezug auf eine vorbestimmte Zeitperiode darstellt, und eine CPU-Kern-Verwendungsrate des zweiten CPU-Kerns größer als ein Schwellenwert TR12 ist, und dass ein Unterschied zwischen der Anzahl von Aufgaben, die auf eine Ausführung durch den ersten CPU-Kern warten, und der Anzahl von Aufgaben, die auf eine Ausführung durch den zweiten CPU-Kern warten, größer als ein Schwellenwert TN12 ist, und der Verarbeitungslasterfassungsteil (32) konfiguriert ist, um die Möglichkeit eines Ungleichgewichts zwischen der Verarbeitungslast des ersten CPU-Kerns und der Verarbeitungslast des zweiten CPU-Kerns zu erfassen, wenn zumindest eine von Bedingungen erfüllt ist, wobei die Bedingungen sind, dass eine Zunahmerate des Unterschieds zwischen der CPU-Verwendungsrate des ersten CPU-Kerns und der CPU-Verwendungsrate des zweiten CPU-Kerns größer als ein vorbestimmter Schwellenwert TdR12 ist, und dass eine Zunahmerate des Unterschiedes zwischen der Anzahl von Aufgaben, die auf eine Ausführung durch den ersten CPU-Kern warten, und die Anzahl von Aufgaben, die auf eine Ausführung durch den zweiten CPU-Kern warten, größer als ein Schwellenwert TdN12 ist.
  15. Multikernsystem (100) gemäß Anspruch 3, dadurch gekennzeichnet, dass: es einen Verarbeitungslasterfassungsteil (32) aufweist, der konfiguriert ist, um eine Verarbeitungslast des zweiten CPU-Kerns zu erfassen, der Probeausführungsanweisungsteil (33) konfiguriert ist, um den ersten CPU-Kern und den zweiten CPU-Kern zu veranlassen, die Aufgabe probehalber auszuführen, die der zweite CPU-Kern ausführt, wenn der Verarbeitungslasterfassungsteil erfasst, dass die Verarbeitungslast des zweiten CPU-Kerns niedriger als ein Schwellenwert ist, der Bestimmungsteil (36) konfiguriert ist, um zu bestimmen, ob das Probeausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt, das Multikernsystem (100) konfiguriert ist, um einen CPU-Kern zum Ausführen der Aufgabe von dem zweiten CPU-Kern zu dem ersten CPU-Kern umzuschalten, und den zweiten CPU-Kern zu stoppen, wenn der Bestimmungsteil bestimmt, dass das Probeausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt.
  16. Multikernsystem (100) gemäß Anspruch 1, dadurch gekennzeichnet, dass: das Steuerungssystemprogramm ein Programm ist, das ein vorheriges Ausführungsergebnis für eine Ausführung einer nächsten Aufgabe verwendet.
  17. Fahrzeugseitige elektronische Steuerungseinheit (50), mit: dem Multikernsystem (100) gemäß einem der Ansprüche 1 bis 16; einem Speicherteil (22), der konfiguriert ist, um das Steuerungssystemprogramm zu speichern, und einer Schnittstelle (24), die mit einem Aktor (26) verbunden ist.
  18. Aufgabenumschaltverfahren eines Multikernsystems (100) zum Zuweisen einer Aufgabe, die von einem Steuerungssystemprogramm erzeugt wird, zu einem CPU-Kern und Ausführen der Aufgabe, mit den Schritten: ein Probeausführungsanweisungsteil (33) veranlasst einen ersten CPU-Kern und einen zweiten CPU-Kern eine Aufgabe probehalber auszuführen, die ein erster CPU-Kern ausführt, bevor das Multikernsystem die Aufgabe von dem ersten CPU-Kern zu dem zweiten CPU-Kern überträgt und den zweiten CPU-Kern veranlasst, die Aufgabe auszuführen; ein Bestimmungsteil (36) bestimmt, ob ein Probeausführungsergebnis durch den ersten CPU-Kern mit einem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt; und ein Zuweisungsfestlegungsteil (38) legt den zweiten CPU-Kern als den CPU-Kern fest, zu dem die Aufgabe zugewiesen wird, wenn der Bestimmungsteil bestimmt, dass das Probeausführungsergebnis durch den ersten CPU-Kern mit dem Probeausführungsergebnis durch den zweiten CPU-Kern übereinstimmt.
DE112009001700.2T 2008-07-22 2009-02-23 Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren Expired - Fee Related DE112009001700B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008-188830 2008-07-22
JP2008188830 2008-07-22
PCT/JP2009/053200 WO2010010723A1 (ja) 2008-07-22 2009-02-23 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法

Publications (2)

Publication Number Publication Date
DE112009001700T5 DE112009001700T5 (de) 2011-06-01
DE112009001700B4 true DE112009001700B4 (de) 2019-02-07

Family

ID=41570191

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112009001700.2T Expired - Fee Related DE112009001700B4 (de) 2008-07-22 2009-02-23 Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren

Country Status (4)

Country Link
US (1) US8856196B2 (de)
JP (1) JP5195913B2 (de)
DE (1) DE112009001700B4 (de)
WO (1) WO2010010723A1 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8293548B2 (en) * 2009-03-04 2012-10-23 Unilumin Group Co., Ltd. LED light module for street lamp and method of manufacturing same
JP4901915B2 (ja) * 2009-06-18 2012-03-21 株式会社東芝 映像処理装置、処理ユニット及びipアドレス管理方法
JP5515810B2 (ja) 2010-02-05 2014-06-11 日本電気株式会社 負荷制御装置
EP2369477B1 (de) * 2010-02-22 2017-10-11 Telefonaktiebolaget LM Ericsson (publ) Technik zur Bereitstellung der Aufgabenpriorität im Zusammenhang mit zur Aufgabenplanung in einem System vorgesehenen Informationen
JPWO2011141992A1 (ja) * 2010-05-10 2013-07-22 トヨタ自動車株式会社 故障診断装置及び故障診断方法
US9098521B2 (en) * 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
US9152523B2 (en) * 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
DE102011086530A1 (de) * 2010-11-19 2012-05-24 Continental Teves Ag & Co. Ohg Mikroprozessorsystem mit fehlertoleranter Architektur
WO2012098684A1 (ja) 2011-01-21 2012-07-26 富士通株式会社 スケジューリング方法およびスケジューリングシステム
JPWO2012098683A1 (ja) * 2011-01-21 2014-06-09 富士通株式会社 スケジューリング方法およびスケジューリングシステム
CN103339604B (zh) * 2011-01-31 2016-10-26 株式会社索思未来 程序生成装置、程序生成方法、处理器装置以及多处理器系统
WO2012137238A1 (ja) * 2011-04-04 2012-10-11 株式会社日立製作所 計算機システム
DE102011105617A1 (de) * 2011-06-28 2013-01-03 Audi Ag Kraftfahrzeug mit einer Vielzahl von Betriebskomponenten
JP5341957B2 (ja) * 2011-07-20 2013-11-13 トヨタ自動車株式会社 内燃機関の制御装置
JP5760846B2 (ja) * 2011-08-22 2015-08-12 トヨタ自動車株式会社 内燃機関の制御装置
JP2014066165A (ja) * 2012-09-25 2014-04-17 Toyota Motor Corp エンジン制御装置
CN104903832B (zh) * 2012-10-05 2020-09-25 触觉实验室股份有限公司 用于低等待时间用户输入处理和反馈的混合型系统和方法
US9483811B2 (en) 2014-01-06 2016-11-01 Microsoft Technology Licensing, Llc Division of processing between systems based on external factors
US9608876B2 (en) 2014-01-06 2017-03-28 Microsoft Technology Licensing, Llc Dynamically adjusting brand and platform interface elements
US9501808B2 (en) * 2014-01-06 2016-11-22 Microsoft Technology Licensing, Llc Division of processing between systems based on business constraints
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
CN110290038B (zh) * 2014-09-12 2021-11-09 松下电器(美国)知识产权公司 电子控制单元、车载网络系统以及车辆用通信方法
US10089197B2 (en) * 2014-12-16 2018-10-02 Intel Corporation Leverage offload programming model for local checkpoints
JP6879625B2 (ja) * 2016-12-27 2021-06-02 東芝インフラシステムズ株式会社 プログラマブルコントローラ、管理装置および制御システム
KR102309429B1 (ko) * 2017-03-20 2021-10-07 현대자동차주식회사 차량 및 그 제어 방법
JP6617744B2 (ja) * 2017-04-05 2019-12-11 トヨタ自動車株式会社 車両システム
US10606714B2 (en) 2017-09-05 2020-03-31 International Business Machines Corporation Stopping central processing units for data collection based on event categories of events
US10740030B2 (en) 2017-09-06 2020-08-11 International Business Machines Corporation Stopping a plurality of central processing units for data collection based on attributes of tasks
DE102017217016A1 (de) * 2017-09-26 2019-03-28 Robert Bosch Gmbh Verteilvorrichtung und Verfahren zum Verteilen von Datenströmen für ein Steuergerät für ein hochautomatisiert fahrbares Fahrzeug
JP2019074851A (ja) * 2017-10-13 2019-05-16 株式会社デンソー 電子制御装置
JP6902992B2 (ja) * 2017-12-19 2021-07-14 日立Astemo株式会社 自動車用電子制御装置
US20190243698A1 (en) * 2018-02-02 2019-08-08 Robert Bosch Gmbh Electronic Control Unit for Flexible Replacement of Replaceable Components in a Vehicle
US11195442B2 (en) * 2018-07-19 2021-12-07 Mitsubishi Electric Corporation Screen generation device and screen generation method
JP7342669B2 (ja) * 2019-12-04 2023-09-12 株式会社デンソー 電子制御装置
JP2021124902A (ja) * 2020-02-04 2021-08-30 トヨタ自動車株式会社 車両制御装置、車両制御方法、及び車両制御プログラム
TWI756974B (zh) 2020-12-09 2022-03-01 財團法人工業技術研究院 機器學習系統及其資源配置方法
CN114257549B (zh) * 2021-12-21 2023-01-10 北京锐安科技有限公司 一种流量的转发方法、装置、设备及存储介质
US20230341921A1 (en) * 2022-04-26 2023-10-26 Western Digital Technologies, Inc. Data Storage With Real Time Dynamic Clock Frequency Control

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
DE102005037246A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Rechnersystems mit wenigstens zwei Ausführungseinheiten und einer Vergleichseinheit
JP2007188212A (ja) 2006-01-12 2007-07-26 Seiko Epson Corp マルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム
JP2008188830A (ja) 2007-02-02 2008-08-21 Dic Corp プロセス印刷方法及び印刷データ作成装置

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330826A (en) * 1980-02-05 1982-05-18 The Bendix Corporation Synchronizer and synchronization system for a multiple computer system
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US5168566A (en) * 1983-11-25 1992-12-01 Sharp Kabushiki Kaisha Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks
JPH0778785B2 (ja) * 1986-03-29 1995-08-23 株式会社東芝 プロセッサ選択方法
JPS6345670A (ja) * 1986-08-13 1988-02-26 Hitachi Ltd プロセツサ間同期装置
US4914570A (en) * 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
US4807228A (en) * 1987-03-18 1989-02-21 American Telephone And Telegraph Company, At&T Bell Laboratories Method of spare capacity use for fault detection in a multiprocessor system
US5404521A (en) * 1990-07-31 1995-04-04 Top Level Inc. Opportunistic task threading in a shared-memory, multi-processor computer system
CA2067576C (en) * 1991-07-10 1998-04-14 Jimmie D. Edrington Dynamic load balancing for a multiprocessor pipeline
JPH05265975A (ja) * 1992-03-16 1993-10-15 Hitachi Ltd 並列計算処理装置
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
JPH0830471A (ja) * 1994-07-14 1996-02-02 Hitachi Ltd ジョブの実行プロセサ変更方式
US5956482A (en) * 1996-05-15 1999-09-21 At&T Corp Multimedia information service access
US5889989A (en) * 1996-09-16 1999-03-30 The Research Foundation Of State University Of New York Load sharing controller for optimizing monetary cost
JPH10143380A (ja) 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
US5903717A (en) * 1997-04-02 1999-05-11 General Dynamics Information Systems, Inc. Fault tolerant computer system
JPH11261702A (ja) * 1998-03-06 1999-09-24 Fujitsu Ltd 負荷予測によるシステム最適化制御装置
US6182085B1 (en) * 1998-05-28 2001-01-30 International Business Machines Corporation Collaborative team crawling:Large scale information gathering over the internet
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
JP4137264B2 (ja) * 1999-01-05 2008-08-20 株式会社日立製作所 データベース負荷分散処理方法及びその実施装置
US6647408B1 (en) * 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6625725B1 (en) * 1999-12-22 2003-09-23 Intel Corporation Speculative reuse of code regions
US20020032754A1 (en) * 2000-04-05 2002-03-14 Gary Logston Method and apparatus for profiling in a distributed application environment
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
JP2002215599A (ja) * 2001-01-18 2002-08-02 Mitsubishi Electric Corp マルチプロセッサシステムおよびその制御方法
US20030005380A1 (en) * 2001-06-29 2003-01-02 Nguyen Hang T. Method and apparatus for testing multi-core processors
JP3632635B2 (ja) * 2001-07-18 2005-03-23 日本電気株式会社 マルチスレッド実行方法及び並列プロセッサシステム
US6931576B2 (en) * 2002-01-07 2005-08-16 Sun Microsystems, Inc. Data integrity device providing heightened error protection in a data processing system
US7249358B2 (en) * 2003-01-07 2007-07-24 International Business Machines Corporation Method and apparatus for dynamically allocating processors
JP3970786B2 (ja) * 2003-03-05 2007-09-05 株式会社日立製作所 マルチプロセッサシステム
JP2005031736A (ja) * 2003-07-07 2005-02-03 Hitachi Information Systems Ltd サーバ負荷分散装置及びサーバ負荷分散方法及びクライアントサーバシステム
US7594228B2 (en) * 2003-09-23 2009-09-22 Lam Siu H Method and apparatus to perform task scheduling
CN100465900C (zh) * 2003-10-29 2009-03-04 国际商业机器公司 信息系统、负载控制方法、负载控制程序和记录媒体
US7961194B2 (en) * 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20080074428A1 (en) * 2003-11-19 2008-03-27 Reuven Bakalash Method of rendering pixel-composited images for a graphics-based application running on a computing system embodying a multi-mode parallel graphics rendering system
EP1544763A1 (de) * 2003-12-19 2005-06-22 Sap Ag Prozessüberwachung
JP2005190038A (ja) * 2003-12-25 2005-07-14 Hitachi Ltd プロセッサの診断処理方法および診断処理プログラム
JP2006031358A (ja) * 2004-07-15 2006-02-02 Ziosoft Inc ボリュームレンダリング等の画像処理システム
JP3914230B2 (ja) 2004-11-04 2007-05-16 株式会社東芝 プロセッサシステム及びその制御方法
JP4410661B2 (ja) * 2004-11-09 2010-02-03 株式会社日立製作所 分散制御システム
JP4189379B2 (ja) * 2004-12-27 2008-12-03 株式会社日立製作所 アプリケーション運用制御方法およびシステム
GB0507150D0 (en) * 2005-04-08 2005-05-18 Ibm A method or apparatus for running a test program in a computer system
US7610425B2 (en) * 2005-08-22 2009-10-27 Sun Microsystems, Inc. Approach for managing interrupt load distribution
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
JP4777994B2 (ja) * 2005-09-29 2011-09-21 富士通株式会社 マルチコアプロセッサ
US20070288734A1 (en) * 2006-06-08 2007-12-13 Luick David A Double-Width Instruction Queue for Instruction Execution
US20080091974A1 (en) * 2006-10-11 2008-04-17 Denso Corporation Device for controlling a multi-core CPU for mobile body, and operating system for the same
US8032888B2 (en) * 2006-10-17 2011-10-04 Oracle America, Inc. Method and system for scheduling a thread in a multiprocessor system
JP2008102778A (ja) * 2006-10-19 2008-05-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びプログラム
FR2912526B1 (fr) * 2007-02-13 2009-04-17 Thales Sa Procede de maintien du synchronisme d'execution entre plusieurs processeurs asynchrones fonctionnant en parallele de maniere redondante.
US20090064166A1 (en) * 2007-08-28 2009-03-05 Arimilli Lakshminarayana B System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks
JP4872944B2 (ja) * 2008-02-25 2012-02-08 日本電気株式会社 運用管理装置、運用管理システム、情報処理方法、及び運用管理プログラム
US8037350B1 (en) * 2008-04-30 2011-10-11 Hewlett-Packard Development Company, L.P. Altering a degree of redundancy used during execution of an application
US8904003B2 (en) * 2008-06-30 2014-12-02 Oracle America, Inc. Method and system for delegated job control across a network
US8429652B2 (en) * 2009-06-22 2013-04-23 Citrix Systems, Inc. Systems and methods for spillover in a multi-core system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
DE102005037246A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Rechnersystems mit wenigstens zwei Ausführungseinheiten und einer Vergleichseinheit
JP2007188212A (ja) 2006-01-12 2007-07-26 Seiko Epson Corp マルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム
JP2008188830A (ja) 2007-02-02 2008-08-21 Dic Corp プロセス印刷方法及び印刷データ作成装置

Also Published As

Publication number Publication date
JPWO2010010723A1 (ja) 2012-01-05
WO2010010723A1 (ja) 2010-01-28
US8856196B2 (en) 2014-10-07
US20100262971A1 (en) 2010-10-14
JP5195913B2 (ja) 2013-05-15
DE112009001700T5 (de) 2011-06-01

Similar Documents

Publication Publication Date Title
DE112009001700B4 (de) Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren
DE102013214756B4 (de) Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE10231668B4 (de) Multitaskingbetriebssystem zur Verringerung des Stromverbrauchs und elektronische Steuerung im Fahrzeug, die selbiges benutzt
EP3709160A1 (de) Fahrzeugsystem, fahrzeug und verfahren zum betreiben eines solchen fahrzeugsystems
DE10393969T5 (de) Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands
DE102010038466A1 (de) Gemeinsame Elektronische Steuereinheit und in dieser Implementiertes Weiterleitungsprogramm
DE102008062692A1 (de) Vorrichtung und Verfahren mit gesteuertem Schaltmodus
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE60125540T2 (de) Verfahren und gerät für einen ablaufsplanungstreiber zum implementieren eines protokolls mittels zeitschätzungen für anwendung mit einem gerät das keine unterbrechungen erzeugt
DE102013202774A1 (de) Vorrichtung, Verfahren und System zum Steuern eines Prozessors
DE102012209789A1 (de) Fahrzeuggebundene elektrische steuervorrichtung
EP0799441A1 (de) Verfahren zur steuerung von technischen vorgängen
DE102013211266B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
DE10206865C1 (de) Reaktionszeit-Beschränkung eines Software-Prozesses
DE112020002799T5 (de) Fahrzeugsteuervorrichtung, fahrzeuganzeigesystem und fahrzeuganzeigesteuerverfahren
DE112020001632T5 (de) Hypervisor und steuervorrichtung
WO2011154020A1 (de) Rechenvorrichtung mit koordination des zugriffs auf einen internen speicher und betriebsverfahren
DE10348113A1 (de) Verfahren und Einrichtung zum Betreiben eines Sekundärbetriebssystems neben einem Primärbetriebssystem
DE102020105613A1 (de) Echtzeit-steuersystem für ein fahrzeug und verfahren zur ausführung der steuerung des fahrzeugs über das echtzeit-steuerungssystem
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102020205720A1 (de) Computerimplementiertes Verfahren und Vorrichtung zur Planung von Ressourcen
EP2126700B1 (de) Steuerung des laufzeitverhaltens von prozessen
DE10056198A1 (de) Kommunikationssystem zum Austausch von Daten unter Verwendung eines zusätzlichen Prozessors

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee