DE112019000189T5 - Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung - Google Patents

Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung Download PDF

Info

Publication number
DE112019000189T5
DE112019000189T5 DE112019000189.2T DE112019000189T DE112019000189T5 DE 112019000189 T5 DE112019000189 T5 DE 112019000189T5 DE 112019000189 T DE112019000189 T DE 112019000189T DE 112019000189 T5 DE112019000189 T5 DE 112019000189T5
Authority
DE
Germany
Prior art keywords
function
lock
processing
queue
cores
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.)
Pending
Application number
DE112019000189.2T
Other languages
English (en)
Inventor
Masataka Nishi
Tomohito Ebina
Kazuyoshi Serizawa
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Automotive Systems Ltd
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 Hitachi Automotive Systems Ltd filed Critical Hitachi Automotive Systems Ltd
Publication of DE112019000189T5 publication Critical patent/DE112019000189T5/de
Pending legal-status Critical Current

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Es soll ermöglicht werden, eine Funktionsgruppe, die in keinem Datenkonflikt steht, durch mehrere Kerne gleichzeitig auszuführen und ein Funktionspaar, das einem Datenkonflikt steht, auf zeitlich getrennte Art und Weise auszuführen. Eine Prozesssperre 20 enthält N-1 Prüferfunktionen 22 und eine Begrenzerfunktion 23, wobei die Anzahl der Kerne, die in der Lage sind, die Funktionen gleichzeitig auszuführen, N ist (N ist eine ganze Zahl gleich oder größer 2), wobei die Prüferfunktionen 22 bestimmen, ob der Kopfeintrag einer sperrfreien Funktionswarteschlange LFQ1 entweder die Prüferfunktion 22 oder die Begrenzerfunktion 23 ist, und das Lesen des Kopfeintrags der sperrfreien Funktionswarteschlange LFQ1 wiederholt, falls er eine ist, und die Verarbeitung beendet, falls er keine ist, und wobei die Begrenzerfunktion 23 eine Leerfunktion ist, die ohne Ausführung irgendeiner Verarbeitung endet.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf ein Programmausführungs-Steuerverfahren und auf eine Fahrzeugsteuervorrichtung, die zur Mehrkern- oder Vielkern-Programmparallelausführung in der Lage sind.
  • Stand der Technik
  • Während die Halbleiterminiaturisierungstechnologie in eine Sackgasse geraten ist, ist es dazu gekommen, dass die Leistungsfähigkeit, die durch Beschleunigen des Taktzyklus verbessert worden ist, durch Montieren einer Vielzahl von Kernen in einer Mikroverarbeitungseinheit (MPU) verbessert wird und dass Vielkern-MPUs vertrieben werden, die für verschiedene Anwendungen wie etwa Server und tragbare Endgeräte geeignet sind. Diese Anwendungen sind unter der Annahme entworfen worden, dass das Betriebssystem (OS) die gleichzeitige Ausführung mehrerer Anwendungen, die unter der Annahme einer Mehrkern-MPU entworfen sind, steuert und die Datentrennungsbedingung erfüllt und dadurch die Leistungsfähigkeit der vielen Kerne erhält. Obgleich in dieser Steuerung der gleichzeitigen Ausführung ein Lese/Schreib-Zugriff auf ein gemeinsam genutztes Betriebsmittel in dem OS auftritt, wird durch die zwangsläufige sequentielle Ausführung von Funktionen unter Verwendung eines vorhandenen Mechanismus der exklusiven Steuerung eine zeitliche Trennung erzielt und wird bei der Vermeidung von durch einen Datenkonflikt verursachten Datenintegrationsfehlern ein Grad des Erfolgs erzielt.
  • Allerdings ist in Steuersoftware, die für viele Jahre unter der Voraussetzung eines einzelnen Kerns entworfen, vererbt und abgeleitet worden ist, ein Zugriffskonflikt in Bezug auf durch globale Variablen repräsentierte gemeinsam benutzte Betriebsmittel beachtlich. Somit ist es möglich, die gleichzeitige Programmausführung unter der Annahme der Datentrennung wie oben beschrieben auszuführen, wobei es keine OS-Unterstützung gibt. Da die gleichzeitige Programmausführung ermöglicht, dass ein Datenkonflikt nach der Ausführung einen nicht deterministischen Programmzustand ableitet, werden Fehlerbehebung, Test und Verifizierung möglich.
  • In der Realität tritt in mehreren Kernen eine Rechenlast auf, die zu dem Zeitpunkt des Entwurfs schwierig anzunehmen ist, um die Unterbrechungsverarbeitungslast zu verteilen. Somit ist es selbst in einem Entwurfsverfahren für die Optimierung durch explizites Zuordnen von Funktionen unter Verwendung der Kernbelegungszeit für jede Funktion schwierig, die ungünstigste Antwortzeit sicherzustellen, solange der obere Grenzwert der unkontrollierbaren Totzeit wegen der Zeitsynchronisation unbestimmt ist.
  • In der herkömmlichen Technik gibt es verschiedene Verfahren zum expliziten Steuern der Ausführungsreihenfolge von Aufgaben, die jedem Kern unter Beachtung der Beschränkung der Abhängigkeitsrelation zwischen Aufgaben statisch zugeordnet werden, wobei es aber zwei übliche Probleme gibt. Das erste Problem ist, dass die Verwendung eines gemeinsam genutzten Betriebsmittels angenommen wird, das nicht proportional zu der Anzahl N der Kerne (N ist eine ganze Zahl gleich oder größer als 2) skaliert. Das zweite Problem ist, dass es wegen Störungslasten wie etwa der Unterbrechungsverarbeitung nicht möglich ist, die Totzeit zu unterdrücken, die durch Ausführung der statischen Aufgabenzuordnung, die zu dem Zeitpunkt des Entwurfs optimiert und bestimmt worden ist, verwirklicht wird, und dass es nicht möglich ist, die ungünstigste Ansprechzeit sicherzustellen.
  • PTL 1 offenbart ein Parallelisierungsverfahren zum Analysieren der Steuerungsabhängigkeit zwischen mehreren Folgen der Verarbeitung, die ein sequentielles Ausführungsprogramm bilden, zum Klassifizieren der Verarbeitung in eine abhängige Aufgabe und eine unabhängige Aufgabe und zum Zuordnen der Folgen der Verarbeitung zu verschiedenen Kernen. Dies ist ein Beispiel der zeitlichen Trennung auf der Grundlage der Ausführungsreihenfolgerelation und des Parallelisierungsverfahrens auf der Grundlage der Datentrennungsbedingung, wobei es möglich ist, die durch Ausführung keiner der Aufgaben erzeugte Totzeit, da die Synchronisation zwischen Kernen wartet, zu unterdrücken.
  • Die in PTL 1 offenbarte Technik verwirklicht eine Funktion einer MPU, die einen Wartezustand über ein Inter-Kern-Kommunikationsmittel freigibt, wenn die Ausführungsreihenfolge von Aufgaben gesteuert wird. Allerdings skaliert die Leistungsfähigkeit nicht auf das N-fache, selbst wenn die Anzahl N der Kerne erhöht wird, wenn dieselbe Anzahl von Aufgaben wie die Anzahl N von Kernen, die eine Vielzahl von Kernen nutzen, zugeordnet werden, falls die Abhängigkeitsrelation zwischen den Aufgaben kompliziert wird. Hinsichtlich der Hardware sind für die Anzahl N von Kernen N · (N -1)/2 Inter-Kern-Kommunikationswege erforderlich. Allerdings skaliert der Inter-Kern-Kommunikationsweg nur gemäß O(N) (Größenordnung von N).
  • Die meisten Vielkern-MPUs sind in Rollen eines Master-Kerns und einer Vielzahl von Slave-Kernen unterteilt, wobei der Master-Kern explizit eine Ausführungsaufgabe für die Slave-Kerne bestimmt und dadurch eine Aufgabenzuordnung und ein Steuerverfahren der gleichzeitigen Ausführung annimmt, das das Skalierbarkeitsproblem der Inter-Kern-Kommunikationswege behandelt. In der Realität haben nicht nur viele Kerne, wobei N etwa 6 ist, sondern auch Grafikverarbeitungseinheiten (GPU) mit N über 1000 nur Kommunikationswege für die Einer-zu-allen-Inter-Kern-Kommunikation verfügbar, deren Anzahl kleiner als O(N) ist.
  • Um diese Beschränkung gemäß dem Schutzumfang von PTL 1 zu erfüllen, gibt es keine andere Wahl als das Erhöhen der Anzahl der Prozesse, die jede Aufgabe bilden, durch Aggregieren von Verarbeitungsgruppen mit engen Abhängigkeitsrelationen. In diesem Fall muss ein parallel ausführbares Aufgabenpaar in einen Kern aggregiert und nacheinander ausgeführt werden und ist es nicht möglich, eine Vielzahl von Kernen effizient zu nutzen.
  • Darüber hinaus führt jeder Kern nicht nur eine zeitlich geplante Aufgabe aus, sondern wird er verwendet, um die Unterbrechungsverarbeitung auf eine Vielzahl von Kernen zu verteilen, um die Ansprechzeit für die Unterbrechungsverarbeitung von einer externen Vorrichtung zu unterdrücken und die Last auszugleichen. Falls eine solche Unterbrechungsverarbeitung während der Aufgabenausführung stattfindet, wird die Wirkung der Verkürzung der Synchronisationswarte-Totzeit, die durch Aufgabenzuweisung erzielt wird, die dafür bestimmt ist, die Last einer Vielzahl von Kernen auszugleichen, nicht verwirklicht.
  • PTL 2 weist als ein technischer Hintergrund auf die Wichtigkeit hin zu veranlassen, dass eine Vielzahl von Kernen durch die Nutzung einer Intra-Programm- und Inter-Programm-Parallelität unter Verwendung von Datentrennungsbedingungen parallel arbeiten. Außerdem erwähnt sie ein Verfahren, um durch einen in einer Parallelrechenumgebung wie etwa MPI, OpenMP und pthread implementierten Sperrensynchronisationsmechanismus eine Synchronisationsverarbeitung zwischen Kernen zu erzielen.
  • Außerdem erwähnt sie, dass im Fall der Implementierung nur durch Software ohne Verwendung dedizierter Hardware wie etwa der in HPC eingebauten die häufige Verwendung der Sperrensynchronisation die Ausführungsleistungsfähigkeit der Software verschlechtert und dass Veränderungen der Annahme über die Sperrenverarbeitungs-Abschlusszeit eine Totzeit verursachen, die zu dem Zeitpunkt des Entwurfs nicht beabsichtigt ist.
  • In der Sperrensynchronisation ist eine Implementierung des Haltens eines Zählers der Anzahl der Endprozesse, z. B. in einem gemeinsam genutzten Speichergebiet, üblich. Da eine Vielzahl von Kernen einen Lese/Schreib-Zugriff auf diesen Zähler ausführen, ist ein exklusiver Steuermechanismus erforderlich. Da wegen der exklusiven Steuerung der Zähloperation, die für die Sperrensynchronisationsverarbeitung erforderlich ist, eine Totzeit auftritt, skaliert die Leistungsfähigkeit in Bezug auf die Anzahl N der Kerne nicht auf das N-Fache. Um die Skalierbarkeit in Bezug auf die Anzahl N der Kerne zu verwirklichen, muss der Zugriff auf gemeinsam genutzte Daten in Bezug auf die Sperrensynchronisationssteuerung wenigstens sperrfrei sein, wobei es diesbezüglich aber keine Erwähnung gibt. Darüber hinaus ist immer noch ein Inter-Kern-Kommunikationsweg zum Mitteilen der Betriebswiederaufnahme, wenn der Zählerwert einen vorgeschriebenen Wert erreicht, erforderlich.
  • Falls das Bewältigen der Verarbeitungszeit und der Hardwarebetriebsmittel, die für diese Sperrensynchronisation erforderlich sind, nicht bezüglich der Anzahl N von Kernen skaliert, gibt es keine andere Wahl, als die Anzahl der Prozesse zu erhöhen, die die Aufgabe bilden, und ist es ähnlich der in PTL 1 offenbarten Technik nicht möglich, eine Vielzahl von Kernen effizient zu nutzen. Zu diesem Zeitpunkt wird eine Verschlechterung der Ausführungsleistungsfähigkeit verursacht, wenn das Problem durch Verringern der Verarbeitungszeit, um eine Vielzahl von Kernen effizient zu nutzen, bewältigt wird.
  • Stattdessen offenbart PTL 2 ein Inter-Kern-Kommunikationsmittel zur Unterdrückung der Latenzzeit der Sperrensynchronisationsverarbeitungs-Ausführung unter Verwendung dedizierter Hardware, in der in einen Inter-Kern-Benachrichtigungsweg eine Baumstruktur eingefügt ist. Dies ist ein Verfahren des Hierarchisierens von Kerngruppen zu einer Baumstruktur und des Begrenzens der Kommunikationswege auf jene zwischen benachbarten Kernen anstelle von Alle-zu-alle-Inter-Kern-Kommunikationswegen. Wie in PTL 2 offenbart ist, kann dieses Verfahren mit dedizierter Hardware implementiert werden oder kann es nur mit Software implementiert werden. Darüber hinaus wird die tatsächliche Anzahl der für die Alle-zu-alle-Inter-Kern-Kommunikation erforderlichen Kommunikationswege auf etwa O(N) unterdrückt und wird die Sperrensynchronisationsverarbeitungszeit etwa auf die Anzahl der Kommunikationsschritte, die nur mit Log2N zunimmt, begrenzt. Allerdings ist eine effiziente Softwareimplementierung nur möglich, wenn O(N) Inter-Kern-Kommunikationsmittel montiert sind.
  • PTL 3 offenbart ein Verfahren zum Steuern der Auswahl und der Zuordnungsreihenfolge von Threads, die durch jeden Kern ausgeführt werden, in denen die Priorität jeder Aufgabe eingestellt wird, in einer Prioritätswarteschlange registriert wird und die Thread-Auswahl und die Thread-Zuordnungsreihenfolge in der Warteschlangeausgliederungsreihenfolge gesteuert werden.
  • Um gemäß dem Schutzumfang von PTL 3 die Vorhersagbarkeit und Reproduzierbarkeit der gleichzeitigen Programmausführung sicherzustellen, ist ein Verfahren denkbar, in dem z. B. Threads, die eine Aufgabengruppe ausführen, in der Datentrennungsbedingungen erfüllt sind und eine Parallelausführung möglich ist, dieselbe Priorität zugeordnet wird und für eine Aufgabengruppe, die eine zeitliche Trennung und eine explizite Steuerung der Ausführungsreihenfolge erfordert, unterschiedliche Prioritätsniveaus eingestellt werden und die Priorität so zugeordnet wird, dass sie in der Reihenfolge der Ausführung von dem Aufgabenanfang zum Aufgabenende kleiner wird. Dieses Verfahren verwirklicht eine dynamische Thread-Zuordnung unter Berücksichtigung wenigstens der Kernoperationsrate.
  • Allerdings offenbart PTL 3 nur eine Technik zum Ausgleichen der Rechenlast jedes Kerns und offenbart sie keinen Mechanismus zur Steuerung der gleichzeitigen Ausführung für die zeitliche Trennung des Ausführungszeitpunkts eines Thread-Paars in einem Datenkonflikt. Darüber hinaus sind zwischen dem Master-Kern, der den durch jeden Kern ausgeführten Thread aus der Prioritätswarteschlange auswählt und steuert, und einer Vielzahl anderer Slave-Kerne immer noch O(N) Inter-Kern-Kommunikationswege erforderlich.
  • Liste der Entgegenhaltungen
  • Patentliteratur
    • PTL 1: JP 2017-73000 A
    • PTL 2: JP 2014-62378 A
    • PTL 3: JP 2006-155480 A
  • Zusammenfassung der Erfindung
  • Technisches Problem
  • Die Entwürfe, die Fehlerbehebung, Testtechniken, Abdeckungskriterien und Verifizierungsverfahren, die in herkömmlichen Softwareentwicklungsverfahren verwendet werden, hängen alle von der Annahme ab, dass eine Vielzahl von Funktionen sequentiell ausgeführt werden und dass die Reproduzierbarkeit und Vorhersagbarkeit des Programmzustands nach der Ausführung erfüllt sind.
  • Die Reproduzierbarkeit und Vorhersagbarkeit sind ebenfalls notwendige Anforderungen, um die für die Steuersoftware erforderliche ungünstigste Ansprechzeit sicherzustellen. Somit ist ein Steuermechanismus der gleichzeitigen Ausführung erforderlich, in dem unabhängig von einem spezifischen Mittel der Implementierung der gleichzeitigen Programmausführung eine Funktionsgruppe, für die Datentrennungsbedingungen erfüllt sind, durch mehrere Kerne gleichzeitig ausgeführt wird und ein Funktionspaar, für das wegen eines Datenkonflikts eine zeitliche Trennung erforderlich ist, nacheinander ausgeführt wird.
  • Insbesondere besteht ein Bedarf an einem Parallelausführungs-Steuermechanismus, der unabhängig von einem Inter-Kern-Kommunikationsmechanismus ist, der in Bezug auf die Zunahme der Anzahl der Kerne nicht skaliert, der sich an eine Unterbrechungslast, die zu dem Zeitpunkt des Entwurfs schwierig anzunehmen ist, anpasst, der die Rechenwartezeit jedes Kerns dynamisch ausgleicht und der die ungünstigste Ausführungszeit sicherstellen kann.
  • Die vorliegende Erfindung wurde angesichts der obigen Umstände gemacht, wobei es ihre Aufgabe ist, ein Programmausführungs-Steuerverfahren und eine Fahrzeugsteuervorrichtung zu schaffen, die zur gleichzeitigen Ausführung einer Funktionsgruppe, die nicht in Datenkonflikt steht, durch mehrere Kerne in der Lage sind und die zur Ausführung eines Funktionspaars in Datenkonflikt nach Art einer zeitlichen Trennung in der Lage sind.
  • Lösung des Problems
  • Zur Lösung der obigen Aufgabe hält ein Programmausführungs-Steuerverfahren gemäß einem ersten Aspekt eine sperrfreie Funktionswarteschlange, in der mehrere gleichzeitig ausführbare Funktionen der Reihe nach registriert sind, wobei die sperrfreie Funktionswarteschlange eine zwischen Funktionen in Datenkonflikt eingefügte Prozesssperre enthält, und die Prozesssperre veranlasst, dass von einer früheren und einer nachfolgenden Funktion in Datenkonflikt die Ausführung der nachfolgenden Funktion an einer Position der Prozesssperre wartet, bis die Ausführung der früheren Funktion abgeschlossen ist.
  • Vorteilhafte Wirkungen der Erfindung
  • Gemäß der vorliegenden Erfindung ist es möglich, eine Funktionsgruppe, die nicht in Datenkonflikt steht, durch mehrere Kerne gleichzeitig auszuführen, und ist es möglich, ein Funktionspaar in Datenkonflikt nach Art einer zeitlichen Trennung auszuführen.
  • Figurenliste
    • 1 ist ein Blockschaltplan, der eine Konfiguration einer Fahrzeugsteuervorrichtung darstellt, auf die eine Programmausführungs-Steuervorrichtung gemäß einer ersten Ausführungsform angewendet ist.
    • 2 ist ein Zeitablaufplan, der einen Betriebszustand der Programmausführungs-Steuervorrichtung aus 1 darstellt.
    • 3 ist ein Ablaufplan, der ein Funktionsausführungsverfahren der Programmausführungs-Steuervorrichtung aus 1 darstellt.
    • 4 ist ein Blockschaltplan, der eine Konfiguration einer Fahrzeugsteuervorrichtung darstellt, auf die eine Programmausführungs-Steuervorrichtung gemäß einer zweiten Ausführungsform angewendet ist.
    • 5 ist ein Zeitablaufplan, der einen Betriebszustand der Programmausführungs-Steuervorrichtung aus 4 darstellt.
    • 6 ist ein Blockschaltplan, der einen anderen Betriebszustand der Programmausführungs-Steuervorrichtung gemäß der zweiten Ausführungsform darstellt.
    • 7 ist ein Zeitablaufplan, der einen Betriebszustand der Programmausführungs-Steuervorrichtung aus 6 darstellt.
    • 8 ist ein Ablaufplan, der ein Funktionsausführungsverfahren der Programmausführungs-Steuervorrichtung aus 4 darstellt.
    • 9 ist ein Blockschaltplan, der eine Konfiguration einer Fahrzeugsteuervorrichtung darstellt, auf die eine Programmausführungs-Steuervorrichtung gemäß einer dritten Ausführungsform angewendet ist.
  • Beschreibung von Ausführungsformen
  • Ausführungsformen werden anhand der Zeichnungen beschrieben. Die im Folgenden beschriebenen Ausführungsformen beschränken nicht die Erfindung gemäß den Ansprüchen und nicht alle Elemente und Kombinationen davon, die in den Ausführungsformen beschrieben sind, sind wesentlich für die Lösung der Erfindung.
  • 1 ist ein Blockschaltplan, der die Konfiguration der Fahrzeugsteuervorrichtung darstellt, auf die die Programmausführungs-Steuervorrichtung gemäß der ersten Ausführungsform angewendet ist.
  • In 1 ist ein Computer 1A mit mehreren Kernen 10 bis 13, mit einer Eingabe/Ausgabe-Schnittstelle 14, mit einem DRAM 15 und mit einem Cache 16 bereitgestellt. Der Computer 1A ist über die Eingabe/Ausgabe-Schnittstelle 14 mit einem Sensor 17 und mit einem Aktuator 18 verbunden. Der Kern kann für jede CPU vorgesehen sein oder für eine CPU können mehrere Kerne vorgesehen sein. Der DRAM 15 kann als ein gemeinsam genutzter Speicher verwendet werden, auf den von den Kernen 10 bis 13 zugegriffen werden kann.
  • Zu diesem Zeitpunkt kann jeder der Kerne 10 bis 13 über die Eingabe/Ausgabe-Schnittstelle 14 auf den DRAM 15 und auf den Cache 16 zugreifen. Der Sensor 17 überwacht den Zustand jedes Teils eines Fahrzeugs. Der Aktuator 18 steuert ein Antriebsstrangsystem, ein Lenkungssystem, ein Bremsungssystem und dergleichen des Fahrzeugs an.
  • Der DRAM 15 hält eine sperrfreie Funktionswarteschlange LFQ1. Der DRAM 15 kann einen Ausführungscode halten, der durch jeden der Kerne 10 bis 13 ausgeführt wird. In der sperrfreien Funktionswarteschlange LFQ1 sind mehrere Funktionen, die durch den Computer 1A gleichzeitig ausgeführt werden können, der Reihe nach registriert. Die sperrfreie Funktionswarteschlange LFQ1 kann durch einen Programmierer im Voraus konstruiert werden und in einem ROM oder dergleichen gespeichert werden. Es können mehrere sperrfreie Funktionswarteschlangen LFQ1 vorbereitet werden und irgendeiner der Kerne 10 bis 13 kann z. B. in einem Zyklus von 10 ms nacheinander in den DRAM 15 geladen werden. Zur Zweckmäßigkeit der Implementierung kann in der sperrfreien Funktionswarteschlange LFQ1 anstelle einer Funktionsentität ein Zeiger auf die Funktionsentität registriert sein. 1 stellt ein Beispiel dar, in dem Funktionen [0] bis [4] registriert sind. In der sperrfreien Funktionswarteschlange LFQ1 ist zwischen Funktionen in Datenkonflikt eine Prozesssperre 20 eingefügt. Ein Datenkonflikt enthält eine Änderung des Werts einer globalen Variablen in Abhängigkeit von der Reihenfolge des Lesens oder Schreibens der globalen Variablen. Ein Datenkonflikt wird verursacht, wenn es eine Abhängigkeitsbeziehung zwischen Daten gibt.
  • Die Prozesssperre 20 ist unmittelbar vor der nachfolgenden Funktion in Datenkonflikt von der früheren und der nachfolgenden Funktion in Datenkonflikt angeordnet. Zum Beispiel ist die Prozesssperre 20 unter der Annahme, dass die Funktionen [0] und [2] einen Datenkonflikt 25 verursachen, unmittelbar vor der Funktion [2] eingefügt.
  • Die Prozesssperre 20 veranlasst, dass die Ausführung der nachfolgenden Position an einer Position der Prozesssperre 20 wartet, bis die Ausführung der früheren Funktion von der früheren und der nachfolgenden Funktion in Datenkonflikt abgeschlossen ist. Zu diesem Zeitpunkt können Funktionen, die nicht durch die Prozesssperre 20 getrennt sind, durch die mehreren Kerne 10 bis 13 gleichzeitig verarbeitet werden. Zum Beispiel können die Funktionen [0] und [1] gleichzeitig durch die Kerne 10 bis 13 verarbeitet werden. Die Funktionen [2] bis [4] können ebenfalls gleichzeitig durch die Kerne 10 bis 13 verarbeitet werden.
  • Darüber hinaus veranlasst die Prozesssperre 20 für die durch die Prozesssperre 20 getrennten Funktionen, dass die Ausführung der Funktion nach der Prozesssperre 20 an einer Position der Prozesssperre 20 wartet, bis die Funktion vor der Prozesssperre 20 in Datenkonflikt mit der Funktion nach der Prozesssperre 20 ausgeführt worden ist. Daraufhin ermöglicht die Prozesssperre 20 die Zuordnung der Kerne 10 bis 13, die nach Abschluss der Ausführung der früheren Funktion von der früheren und der nachfolgenden Funktion in Datenkonflikt die nachfolgende Funktion ausführen sollen. Wenn zu diesem Zeitpunkt die Funktion vor der Prozesssperre 20 in Konflikt mit der Funktion nach der Prozesssperre 20 ausgeführt wird, können die mehreren Kerne 10 bis 13 die Funktion für die Funktion nach der Prozesssperre 20 gleichzeitig ausführen.
  • Die Prozesssperre 20 enthält N-1 Prüferfunktionen 22 und eine Begrenzerfunktion 23, wobei die Anzahl der Kerne, die in der Lage sind, Funktionen gleichzeitig auszuführen, N ist (N ist eine ganze Zahl gleich oder größer als 2). Die Begrenzerfunktion 23 ist unmittelbar nach der Prüferfunktion 22 angeordnet. Zum Beispiel ist die Prozesssperre 20 unter der Annahme, dass die Kerne 10 bis 12 Kerne sind, die zur gleichzeitigen Ausführung in der Lage sind, mit den zwei Prüferfunktionen 22 und mit der einen Begrenzerfunktion 23 versehen. 1 bietet ein Beispiel, in dem als die Prüferfunktionen 22 ein Prozesssperre [0]_Prüfer [0] und ein Prozesssperre [0]_Prüfer [1] eingefügt sind und als die Begrenzerfunktion 23 ein Prozesssperre [0]_Begrenzer eingefügt ist.
  • Es ist möglich, in Übereinstimmung mit einem Datenkonflikt zwischen Funktionen in die sperrfreie Funktionswarteschlange LFQ1 mehrere der Prozesssperren 20 einzufügen. Um diese Prozesssperren 20 zu unterscheiden, ist an der Prozesssperre 20 eine Prozesssperren-ID 24 angebracht. Zu diesem Zeitpunkt halten die Prüferfunktion 22 und die Begrenzerfunktion 23, die zu derselben Prozesssperre 20 gehören, dieselbe Prozesssperren-ID 24.
  • Die Prüferfunktion 22 bestimmt, ob der Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 entweder die Prüferfunktion 22 oder die Begrenzerfunktion 23 ist, und wiederholt das Lesen des Kopfeintrags der sperrfreien Funktionswarteschlange LFQ1, falls er eine ist, und beendet die Verarbeitung, falls er keine ist. Die Begrenzerfunktion 23 ist eine Leerfunktion, die ohne Ausführung irgendeiner Verarbeitung endet.
  • Wenn der in der sperrfreien Funktionswarteschlange LFQ1 registrierte Eintrag erfasst wird, kann die Position des Kopfs oder des letzten Registrierungseintrags durch Bezugnahme auf Variablen von einem KOPF 41 und von einem ABSCHLUSS 42 bekannt sein. Der KOPF 41 und der ABSCHLUSS 42 können zur Beschleunigung des Zugriffs in dem Cache 16 gehalten werden. Der DRAM 15 kann den KOPF 41 und den ABSCHLUSS 42 halten. Der KOPF 41 kann daraufhin in Übereinstimmung mit der Anzahl des Zugriffs auf den KOPF 41 in dem Cache 16 gehalten werden.
  • Um einen Datenkonflikt zu vermeiden, ohne einen Exklusivsteuermechanismus wie etwa ein mutex zu verwenden, und damit die mehreren Kerne 10 bis 13 den KOPF-Wert und den ABSCHLUSS-Wert aktualisieren, ist es möglich, die sperrfreie Funktionswarteschlange LFQ1 unter Verwendung einer Vergleichen- und Auslagern- (CAS-) Anweisung, die den KOPF-Wert und den ABSCHLUSS-Wert atomar neu schreiben kann, sperrfrei zu machen. Die Kerne 10 bis 13, die bei der Ausführung der CAS-Anweisung erfolgreich waren, erfassen den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 und schalten den KOPF-Wert zu dem nächsten Registrierungseintrag weiter. Die Kerne 10 bis 13, die bei der Ausführung der CAS-Anweisung wegen eines Schreibzugriffskonflikts für den KOPF-Wert gescheitert sind, erfassen den Registrierungseintrag durch erneute Ausführung der CAS-Anweisung für den aktualisierten KOPF-Wert. Zu diesem Zeitpunkt ist ein Kern bei der Ausführung der CAS-Anweisung immer erfolgreich und geschieht es nicht, dass alle Kerne, die gleichzeitig auf den KOPF-Wert zugegriffen haben, bei der Ausführung der CAS-Anweisung scheitern, selbst wenn die mehreren Kerne 10 bis 13 gleichzeitig auf den KOPF-Wert zugreifen. Aus diesem Grund ist es möglich zu verhindern, dass ein Misserfolg der Ausführung der CAS-Anweisung endlos wiederholt wird, und ist es möglich, die Totzeit zu dem Zeitpunkt der Eintragserfassung zu verringern, solange die Anzahl N der Kerne endlich ist.
  • Mit der Einführung der Prozesssperre 20 setzen die anderen Kerne X2 bis XN die Ausführung der Prüferfunktion 22 bis zu dem Zeitpunkt, zu dem irgendein Kern X1, der gleichzeitig arbeitet, die Begrenzerfunktion 23 aus der Warteschlange ausreiht, fort. Andererseits beenden die anderen Kerne X2 bis XN die Prüferfunktion 22 und reihen sie die nachfolgende in der sperrfreien Funktionswarteschlange LFQ1 registrierte Funktion aus der Warteschlange aus und führen sie aus, wenn der Kern X1, der die Begrenzerfunktion 23 aus der Warteschlange ausgereiht hat, die Ausführung einer Leerfunktion beendet hat und eine Funktion unmittelbar nach der Prozesssperre 20 aus der Warteschlange ausgereiht hat.
  • Infolgedessen können die Kerne X1 bis XN in der sperrfreien Funktionswarteschlange LFQ1, in der die Prozesssperre 20 eingefügt ist, eine Funktionsgruppe, die nicht durch die Prozesssperre 20 getrennt ist, gleichzeitig ausführen und das durch die Prozesssperre 20 getrennte Paar der früheren und der nachfolgenden Funktion zeitlich trennen.
  • In diesem Prozess ist ein Mechanismus wie etwa eine explizite Zeitsynchronisation zwischen den Kernen X1 und XN nicht erforderlich und ist es nur erforderlich zu bestimmen, ob der Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 entweder die Prüferfunktion 22 oder die Begrenzerfunktion 23 ist, was dadurch nur eine Zeitdauer erfordert, die äquivalent dem Lesezugriff auf die Daten des Kopfeintrags der in dem gemeinsam genutzten Speicher gespeicherten sperrfreien Funktionswarteschlange LFQ1 ist. Dementsprechend wird die Synchronisationswarte-Totzeit minimiert und kann innerhalb des parallelisierbaren Bereichs, der in der sperrfreien Funktionswarteschlange LFQ1 inhärent ist, die maximale Parallelisierungsleistungsfähigkeit erhalten werden.
  • Jeder der Kerne X1 bis XN besitzt eine schwer anzunehmende Rechenlast, die durch die auf regelmäßiger Grundlage auftretende Unterbrechungsverarbeitung verursacht wird. Somit verbleibt selbst dann, wenn zu dem Zeitpunkt des Entwurfs ein Kern, der die Parallelisierungsverarbeitung statisch ausführt, zugewiesen wird, eine Synchronisationswarte-Totzeit, die von der zu dem Zeitpunkt des Entwurfs angenommenen verschieden ist, so dass es unmöglich ist, die gewünschte Parallelisierungsleistungsfähigkeit zu erhalten. Mit der Einführung der Prozesssperre 20 arbeitet jeder der Kerne X1 bis XN in der Weise, dass er die in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionen mit seiner eigenen Belegungszeit als das Maximum verarbeitet, so dass die Synchronisationswarte-Totzeit auf die Zeitdauer, in der die Prüferfunktion 22 ausgeführt wird, begrenzt werden kann.
  • Darüber hinaus arbeitet die durch jeden der Kerne X1 bis XN verarbeitete Funktion gleichzeitig in der Weise, dass die Datentrennungsbedingung und die Bedingung der zeitlichen Trennung erfüllt sind, während sie dynamisch ausgewählt werden, so dass derselbe Programmzustand nach der Ausführung wie in dem Fall abgeleitet werden kann, dass die in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionen nacheinander ausgeführt werden.
  • 2 ist ein Zeitablaufplan, der den Betriebszustand der Programmausführungs-Steuervorrichtung aus 1 darstellt.
  • 2 nimmt an, dass die Kerne, die zur gleichzeitigen Ausführung in der Lage sind, die Kerne 10 bis 12 aus 1 sind. Es ist angenommen, dass der KOPF 41 die Funktion [0] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 angibt. Unter der Annahme, dass die Kerne 10 bis 12 die CAS-Anweisung ausführen und dass der Kern 10 bei der Ausführung der CAS-Anweisung erfolgreich ist, erfasst dann der Kern 10 die durch den KOPF 41 angegebene Funktion [0], führt er die Funktion [0] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P0) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 die Funktion [1] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 an.
  • Nachfolgend erfasst der Kern 11 unter der Annahme, dass die Kerne 11 und 12, die das letzte Mal bei der Ausführung der CAS-Anweisung gescheitert sind, die CAS-Anweisung erneut ausführen und dass der Kern 11 bei der Ausführung der CAS-Anweisung erfolgreich war, die durch den KOPF 41 angegebene Funktion [1], führt er die Funktion [1] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P1) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Prüfer [0] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 an. Die Funktion [0] und die Funktion [1] werden durch die Kerne 10 und 11 gleichzeitig ausgeführt.
  • Nachfolgend erfasst der Kern 12 unter der Annahme, dass der Kern 12, der das letzte Mal daran gescheitert ist, die CAS-Anweisung auszuführen, die CAS-Anweisung erneut ausführt, und der Kern 12 bei der Ausführung der CAS-Anweisung erfolgreich war, den durch den KOPF 41 angegebenen Prozesssperre [0]_Prüfer [0], führt er die Verarbeitung des Prozesssperre [0]_Prüfers [0] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P2) fort. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Prüfer [1] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 an.
  • Nachfolgend führt der Kern 10 unter der Annahme, dass die Ausführung der Funktion [0] abgeschlossen ist, die CAS-Anweisung aus. Wenn die Ausführung der CAS-Anweisung erfolgreich ist, erfasst der Kern 10 den durch den KOPF 41 angegebenen Prozesssperre [0]_Prüfer [1], führt er die Verarbeitung des Prozesssperre [0]_Prüfers [1] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P3) fort. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Begrenzer als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 an.
  • Nachfolgend führt der Kern 11 unter der Annahme, dass die Ausführung der Funktion [1] abgeschlossen ist, die CAS-Anweisung aus. Wenn die Ausführung der CAS-Anweisung erfolgreich ist, erfasst der Kern 11 den durch den KOPF 41 angegebenen Prozesssperre [0]_Begrenzer, reiht er den Prozesssperre [0]_Begrenzer aus der Warteschlange aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P4) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 an. Der Kern 11 reiht den Prozesssperre [0]_Begrenzer aus der Warteschlange aus, wodurch er in der Lage ist, die Prozesssperre 20 zu durchlaufen.
  • Der Kern 12, der die Verarbeitung des Prozesssperre [0]_Prüfers [0] ausführt, überwacht den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 und setzt das Überwachen des Kopfeintrags der sperrfreien Funktionswarteschlange LFQ1 fort, falls der Kopfeintrag die Prüferfunktion 22 oder die Begrenzerfunktion 23 ist. Falls der Kopfeintrag weder die Prüferfunktion 22 noch die Begrenzerfunktion 23 ist, endet die Verarbeitung des Prozesssperre [0]_Prüfers [0]. Wenn der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 angibt, wird der Kopfeintrag weder zu der Prüferfunktion 22 noch zu der Begrenzerfunktion 23, so dass der Kern 12 die Verarbeitung des Prozesssperre [0]_Prüfers [0] beendet.
  • Zu diesem Zeitpunkt kann der Kern 12 die Prozesssperre 20 durchlaufen, da der Prozesssperre [0]_Begrenzer durch den Kern 11 aus der Warteschlange ausgereiht worden ist.
  • Der Kern 10, der die Verarbeitung des Prozesssperre [0]_Prüfers [1] ausführt, überwacht außerdem den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1. Wenn daraufhin der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ1 angibt, beendet der Kern 10 die Verarbeitung des Prozesssperre [0]_Prüfers [1]. Zu diesem Zeitpunkt kann der Kern 10 die Prozesssperre 20 ebenfalls durchlaufen, da der Prozesssperre [0]_Begrenzer durch den Kern 11 aus der Warteschlange ausgereiht worden ist.
  • Nach Durchlaufen der Prozesssperre 20 führen die Kerne 10 bis 12 die CAS-Anweisung aus. Daraufhin erfassen die Kerne 10 bis 12 in Übereinstimmung mit der Reihenfolge, in der die CAS-Anweisung erfolgreich war, die Funktionen [2] bis [4] und führen sie gleichzeitig die Funktionen [2] bis [4] aus.
  • Infolgedessen wird es möglich, die Funktion [0] und die Funktion [2] in Datenkonflikt zeitlich zu trennen, und wird es möglich, die Funktion [0] und die Funktion [1] nicht in Datenkonflikt gleichzeitig auszuführen und die Funktion [2], die Funktion [3] und die Funktion [4] nicht in Datenkonflikt gleichzeitig auszuführen. Mit der Implementierung der Prozesssperre 20 ist es nach Abschluss der Ausführung aller Funktionen vor der Prozesssperre 20 möglich, nahezu ohne Wartezeit die parallele Ausführung der Funktionen nach der Prozesssperre 20 zu beginnen und dadurch zu ermöglichen, dass die Synchronisationswarte-Totzeit verringert wird.
  • Darüber hinaus werden die Funktion [0] und die Funktion [2] in Datenkonflikt zeitlich voneinander getrennt, so dass derselbe Programmzustand nach der Ausführung abgeleitet werden kann wie in dem Fall, dass die in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionen nacheinander ausgeführt werden. Aus diesem Grund ist es möglich zu verhindern, dass Fehlerbehebung, Test und Überprüfung unmöglich werden, selbst wenn die parallele Ausführung der in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionen ermöglicht wird.
  • Außerdem kann derselbe Programmzustand nach der Ausführung wie in dem Fall, dass die in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionen nacheinander ausgeführt werden, abgeleitet werden, selbst wenn die in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionen gleichzeitig ausgeführt werden, so dass es möglich wird, die Reproduzierbarkeit und Vorhersagbarkeit des Programmzustands nach der Ausführung sicherzustellen. Somit ist es möglich, die ungünstigste Ansprechzeit sicherzustellen, die für die Steuersoftware erforderlich ist, und ist es möglich, die harte Echtzeitsteuerung zu verwirklichen, die für die Fahrzeugsteuervorrichtung erforderlich ist.
  • 3 ist ein Ablaufplan, der das Funktionsausführungsverfahren der Programmausführungs-Steuervorrichtung aus 1 darstellt.
  • In Schritt S01 aus 3 bestimmt jeder der Kerne 10 bis 13, ob in der sperrfreien Funktionswarteschlange LFQ1 keine Funktion registriert ist (die sperrfreie Funktionswarteschlange LFQ1 leer ist). Falls die sperrfreie Funktionswarteschlange LFQ1 leer ist, endet die Verarbeitung. Falls die sperrfreie Funktionswarteschlange LFQ1 nicht leer ist, geht der Verarbeitungsablauf zu Schritt S02 über, um den durch den KOPF-Wert angegebenen Kopfeintrag aus der sperrfreien Funktionswarteschlange LFQ1 zu erfassen.
  • Nachfolgend bestimmt jeder der Kerne 10 bis 13 in Schritt S03, ob die von der sperrfreien Funktionswarteschlange LFQ1 erfasste Funktion die Prüferfunktion 22 ist, und schreitet der Ablauf der Verarbeitung zu Schritt S06 fort, um die Verarbeitung 100 der Prüferfunktion 22 auszuführen, falls sie die Prüferfunktion 22 ist. Falls sie nicht die Prüferfunktion 22 ist, schreitet der Ablauf der Verarbeitung zu Schritt S04 fort, wo jeder der Kerne 10 bis 13 bestimmt, ob die aus der sperrfreien Funktionswarteschlange LFQ1 erfasste Funktion die Begrenzerfunktion 23 ist. Falls sie die Begrenzerfunktion 23 ist, schreitet der Ablauf der Verarbeitung zu Schritt S09 fort, um die Verarbeitung der Begrenzerfunktion 23 zu beenden, und kehrt der Ablauf der Verarbeitung zu Schritt S01 zurück. Falls sie nicht die Begrenzerfunktion 23 ist, schreitet jeder der Kerne 10 bis 13 zu Schritt S05 fort, führt er die in Schritt S02 erfasste Funktion aus und kehrt er daraufhin zu Schritt S01 zurück.
  • In der Verarbeitung 100 der Prüferfunktion 22 liest jeder der Kerne 10 bis 13 in Schritt S06 aus der sperrfreien Funktionswarteschlange LFQ1 den durch den KOPF-Wert angegebenen Kopfeintrag. Nachfolgend bestimmt jeder der Kerne 10 bis 13 in Schritt S07, ob die in Schritt S06 erfasste Funktion entweder die Prüferfunktion 22 oder die Begrenzerfunktion 23 mit derselben Prozesssperren-ID 24 wie die Prüferfunktion 22 in Schritt S03 ist. Falls sie entweder die Prüferfunktion 22 oder die Begrenzerfunktion 23 ist, kehrt der Ablauf der Verarbeitung zu Schritt S06 zurück, um das Lesen des durch den KOPF-Wert angegebenen Kopfeintrags aus der sperrfreien Funktionswarteschlange LFQ1 zu wiederholen. Falls sie weder die Prüferfunktion 22 noch die Begrenzerfunktion 23 ist, schreitet der Ablauf der Verarbeitung zu Schritt S08 fort, um die Verarbeitung der Prüferfunktion 22 zu beenden, und kehrt der Ablauf der Verarbeitung zu Schritt S01 zurück.
  • Infolgedessen wird die Funktionsgruppe der Daten, die getrennt sind und somit nicht in Konflikt stehen, durch die mehreren Kerne 10 bis 13 gleichzeitig ausgeführt und wird die Funktionsgruppe der Daten, die nicht getrennt sind, durch die Prozesssperre 20 zeitlich getrennt und nacheinander ausgeführt. Darüber hinaus passt der Programmzustand nach der Ausführung durch jeden der Kerne 10 bis 13 durch diese Steuerung der gleichzeitigen Ausführung zu dem Programmzustand nach der sequentiellen Ausführung der in der sperrfreien Funktionswarteschlange LFQ1 registrierten Funktionsgruppe. Aus diesem Grund können die Reproduzierbarkeit und die Vorhersagbarkeit des Programmzustands nach der Ausführung sichergestellt werden, selbst wenn unter Verwendung der mehreren Kerne 10 bis 13 eine gleichzeitige Ausführung ausgeführt wird.
  • Darüber hinaus kann jeder der Kerne 10 bis 13 die in der sperrfreien Funktionswarteschlange LFQ1 registrierte Funktion verarbeiten, ohne wegen der Inter-Kern-Synchronisation eine Totzeit zu erzeugen. Aus diesem Grund kann die ungünstigste Ausführungszeit, die für die Verarbeitung der Funktionsgruppe erforderlich ist, sichergestellt werden, solange sie endlich ist, selbst wenn in jedem der Kerne 10 bis 13 unregelmäßig eine Rechenverarbeitungslast wie etwa eine Unterbrechung auftritt. Der Inter-Kern-Kommunikationsmechanismus ist nicht erforderlich und das Problem der Skalierbarkeit des Inter-Kern-Kommunikationsmechanismus in Bezug auf die Anzahl N an der Sperrensynchronisation beteiligter Kerne tritt nicht auf.
  • 4 ist ein Blockschaltplan, der die Konfiguration der Fahrzeugsteuervorrichtung darstellt, auf die die Programmausführungs-Steuervorrichtung gemäß der zweiten Ausführungsform angewendet ist.
  • In 4 ist ein Computer 1B mit den mehreren Kernen 10 bis 13, der Eingabe/Ausgabe-Schnittstelle 14, dem DRAM 15 und dem Cache 16 bereitgestellt. Der Computer 1B ist über die Eingabe/Ausgabe-Schnittstelle 14 mit dem Sensor 17 und mit dem Aktuator 18 verbunden. Der DRAM 15 hält eine sperrfreie Funktionswarteschlange LFQ2. In der sperrfreien Funktionswarteschlange LFQ2 sind mehrere Funktionen, die durch den Computer 1A gleichzeitig ausgeführt werden können, der Reihe nach registriert. 4 stellt ein Beispiel dar, in dem die Funktionen [0] bis [4] registriert sind. Zu jeder Funktion ist ein Austrittsmerker 36 hinzugefügt, der das Ende der Verarbeitung der Funktion angibt. Jede Funktion setzt ihren eigenen Austrittsmerker auf wahr, wenn die Verarbeitung der eigenen Funktion endet, und setzt ihren eigenen Austrittsmerker auf falsch, wenn die Verarbeitung der eigenen Funktion nicht geendet hat. Der Austrittsmerker 36 der Funktion, deren Verarbeitung nicht beendet ist, kann im Voraus auf falsch initialisiert werden und der Austrittsmerker der eigenen Funktion kann auf wahr gesetzt werden, wenn die Verarbeitung der eigenen Funktion endet.
  • In der sperrfreien Funktionswarteschlange LFQ2 wird zwischen Funktionen in Datenkonflikt eine Prozesssperre 30 eingefügt. Die Prozesssperre 30 wird unmittelbar vor der nachfolgenden Funktion von der früheren und der nachfolgenden Funktion in Datenkonflikt angeordnet. Zum Beispiel wird die Prozesssperre 30 unter der Annahme, dass die Funktionen [0] und [2] einen Datenkonflikt 35 veranlassen, unmittelbar vor der Funktion [2] eingefügt.
  • Die Prozesssperre 30 veranlasst, dass die Ausführung der nachfolgenden Funktion an einer Position der Prozesssperre 30 wartet, bis die Ausführung der früheren Funktion von der früheren und der nachfolgenden Funktion in Datenkonflikt abgeschlossen ist. Zu diesem Zeitpunkt überwacht die Prozesssperre 30, ob die Ausführung der früheren Funktion von der früheren und der nachfolgenden Funktion in Datenkonflikt abgeschlossen ist. Daraufhin ermöglicht die Prozesssperre 30 die Zuordnung der Kerne 10 bis 13, die die nachfolgende Funktion nach Abschluss der Ausführung der früheren Funktion von der früheren und der nachfolgenden Funktion in Datenkonflikt ausführen sollen.
  • Die Prozesssperre 30 enthält eine Prüferfunktion 32, um den Verarbeitungsabschluss einer bestimmten Funktion zu bestätigen, und eine Begrenzerfunktion 33, um zu veranlassen, dass die Ausführung einer Funktion nach der Prozesssperre 30 wartet. In der Prozesssperre 30 sind eine Prüferfunktion 32 und eine Begrenzerfunktion 33 vorgesehen, wobei die Prüferfunktion 32 und die Begrenzerfunktion 33 gepaart sind. Die Begrenzerfunktion 33 ist unmittelbar nach der Prüferfunktion 32 angeordnet. Zu der Prüferfunktion 32 ist eine Liste von Funktionen hinzugefügt, deren Austrittsmerker 36 ein zu überwachendes Ziel ist (im Folgenden als eine Überwachungszielfunktion bezeichnet). Falls es mehrere Überwachungszielfunktionen gibt, werden alle diese Überwachungszielfunktionen in der Prüferfunktion 32 registriert. Die Überwachungszielfunktion kann durch den Programmierer im Voraus in der Prüferfunktion 32 registriert werden. 4 bietet ein Beispiel, in dem ein Prozesssperre [0]_Prüfer und eine Überwachungszielfunktion = Funktion [0] als die Prüferfunktion 32 eingefügt sind und der Prozesssperre [0]_Begrenzer als die Begrenzerfunktion 33 eingefügt ist.
  • Nach Bestätigung des Verarbeitungsabschlusses der bestimmten Funktionen löscht die Prüferfunktion 32 die mit der Prüferfunktion 32 gepaarte Begrenzerfunktion 33 aus der sperrfreien Funktionswarteschlange LFQ2. Jeder der Kerne 10 bis 13 unterbricht während der Verarbeitung der Prozesssperre 30 die Erfassung und Ausführung der Funktion und nimmt die Verarbeitung der Erfassung und Ausführung der Funktion aus der sperrfreien Funktionswarteschlange LFQ2 nach Löschung der Begrenzerfunktion 33 wieder auf.
  • Der Kern zum Überwachen des Abschlusses der Ausführung der bestimmten Funktion wird hier getrennt von dem Kern zur Ausführung der bestimmten Funktion zugeordnet. Darüber hinaus wird in den anderen Kernen als jenen, die die bestimmte Funktion ausführen oder den Abschluss der Ausführung der bestimmten Funktion überwachen, die Ausführung der Funktion nach der Prozesssperre 30 durch den Prozesssperre [0]_Begrenzer gesperrt, bis die Ausführung der bestimmten Funktion abgeschlossen ist.
  • Die Einführung der Prozesssperre 30 beseitigt die Notwendigkeit, die Anzahl der an der Verarbeitung der sperrfreien Funktionswarteschlange LFQ2 beteiligten Kerne festzusetzen. Somit kann die Anzahl der der Verarbeitung der sperrfreien Funktionswarteschlange LFQ2 zugeordneten Kerne in Übereinstimmung mit der tatsächlichen Verarbeitungslast jedes Kerns dynamisch geändert werden, wodurch ermöglicht wird, dass die Rechenlast ausgeglichen wird und die ungünstigste Ansprechzeit sichergestellt wird.
  • Außerdem kann die Ausführung der Funktion nach der Prozesssperre 20 in der Prozesssperre 20 von 1 erst ausgeführt werden, wenn die Ausführung aller Funktionen vor der Prozesssperre 20 abgeschlossen ist. Andererseits kann die Funktion nach der Prozesssperre 30 in der Prozesssperre 30 aus 4 ausgeführt werden, wenn die Ausführung der Überwachungszielfunktion abgeschlossen ist, selbst wenn die Ausführung irgendeiner Funktion vor der Prozesssperre 30 nicht abgeschlossen ist, wodurch ermöglicht wird, dass die Wartezeit für die Ausführung der Funktion nach der Prozesssperre 30 verringert wird.
  • 5 ist ein Zeitablaufplan, der den Betriebszustand der Programmausführungs-Steuervorrichtung aus 4 darstellt. 4 und 5 bieten Beispiele eines Falls, in dem in der Funktion [0] und in der Funktion [1], die gleichzeitig ausgeführt werden sollen, die Funktion [1], die kein Überwachungsziel ist, früher als die Funktion [0], die ein Überwachungsziel ist, abgeschlossen wird.
  • 5 nimmt an, dass die Kerne, die zur gleichzeitigen Ausführung in der Lage sind, die Kerne 10 bis 12 aus 4 sind. Es wird angenommen, dass der KOPF 41 die Funktion [0] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 angibt. Somit erfasst der Kern 10 unter der Annahme, dass die Kerne 10 bis 12 die CAS-Anweisung ausführen und dass der Kern 10 bei der Ausführung der CAS-Anweisung erfolgreich ist, die durch den KOPF 41 angegebene Funktion [0], führt er die Funktion [0] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P10) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 die Funktion [1] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Nachfolgend erfasst der Kern 11 unter der Annahme, dass die Kerne 11 und 12, die bei der Ausführung der CAS-Anweisung gescheitert sind, die CAS-Anweisung das letzte Mal erneut ausführen und dass der Kern 11 bei der Ausführung der CAS-Anweisung erfolgreich war, die durch den KOPF 41 angegebene Funktion [1], führt er die Funktion [1] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P11) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Prüfer als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an. Die Funktion [0] und die Funktion [1] werden durch die Kerne 10 und 11 gleichzeitig ausgeführt.
  • Nachfolgend erfasst der Kern 12 unter der Annahme, dass der Kern 12, der bei der Ausführung der CAS-Anweisung gescheitert ist, die CAS-Anweisung das letzte Mal erneut ausführt und dass der Kern 12 bei der Ausführung der CAS-Anweisung erfolgreich war, den durch den KOPF 41 angegebenen Prozesssperre [0]_Prüfer, führt er die Verarbeitung des Prozesssperre [0]_Prüfers aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P12) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Begrenzer als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Nachfolgend führt der Kern 11 unter der Annahme, dass die Ausführung der Funktion [1] abgeschlossen ist, die CAS-Anweisung aus. Wenn die Ausführung der CAS-Anweisung erfolgreich ist, erfasst der Kern 11 den durch den KOPF 41 angegebenen Prozesssperre [0]_Begrenzer und führt er die Verarbeitung des Prozesssperre [0]_Begrenzers aus (P13). Zu diesem Zeitpunkt lässt der Kern 11 den KOPF-Wert so wie er ist, ohne den KOPF 41 zu dem nächsten Registrierungseintrag weiterzuschalten. Aus diesem Grund gibt der KOPF 41 weiter den Prozesssperre [0]_Begrenzer als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an. In der Verarbeitung des Prozesssperre [0]_Begrenzers liest der Kern 11 den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 und wiederholt er das Lesen des Kopfeintrags der sperrfreien Funktionswarteschlange LFQ2, falls der Kopfeintrag der Prozesssperre [0]_Begrenzer ist.
  • Der Kern 12, der die Verarbeitung des Prozesssperre [0]_Prüfers ausführt, überwacht den Austrittsmerker 36 der Funktion [0], die eine Überwachungszielfunktion ist, und setzt das Überwachen des Austrittsmerkers 36 der Funktion [0] fort, falls der Austrittsmerker 36 der Funktion [0] falsch ist.
  • Andererseits setzt der Kern 10 nach Abschluss der Ausführung der Funktion [0] den Austrittsmerker 36 der Funktion [0] auf wahr. Wenn der Austrittsmerker 36 der Funktion [0] zu wahr wird, reiht der Kern 12 den Prozesssperre [0]_Begrenzer aus der Warteschlange aus und beendet er die Verarbeitung des Prozesssperre [0]_Prüfers. Zu diesem Zeitpunkt schaltet der Kern 12 den KOPF 41 zu dem nächsten Registrierungseintrag fort. Somit gibt der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Wenn der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 angibt, ist der Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 nicht mehr der Prozesssperre [0]_Begrenzer. Zu diesem Zeitpunkt kann der Kern 11, wenn der Kern 11, der die Verarbeitung des Prozesssperre [0]_Begrenzers ausführt, den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 liest, der nicht der Prozesssperre [0]_Begrenzer ist, aus der Verarbeitung des Prozesssperre [0]_Begrenzers austreten und die Prozesssperre 30 durchlaufen. Darüber hinaus reiht der Kern 12 den Prozesssperre [0]_Begrenzer aus der Warteschlange aus, wodurch er ermöglicht, dass die Kerne 10 und 12 die Prozesssperre 30 durchlaufen.
  • Nach Durchlaufen der Prozesssperre 30 führen die Kerne 10 bis 12 die CAS-Anweisung aus. Daraufhin erfassen die Kerne 10 bis 12 in Übereinstimmung mit der Reihenfolge, in der die CAS-Anweisung erfolgreich war, die Funktionen [2] bis [4] und führen sie gleichzeitig die Funktionen [2] bis [4] aus.
  • 6 ist ein Blockschaltplan, der einen anderen Betriebszustand der Programmausführungs-Steuervorrichtung gemäß der zweiten Ausführungsform darstellt, und 7 ist ein Zeitablaufplan, der einen Betriebszustand der Programmausführungs-Steuervorrichtung aus 6 darstellt. 6 und 7 bieten Beispiele eines Falls, in dem in der Funktion [0] und in der Funktion [1], die gleichzeitig ausgeführt werden sollen, die Funktion [0], die eine Überwachungszielfunktion ist, früher als die Funktion [1], die keine Überwachungszielfunktion ist, abgeschlossen wird.
  • 6 und 7 nehmen an, dass die Kerne, die zur gleichzeitigen Ausführung in der Lage sind, die Kerne 10 bis 12 aus 4 sind. Es ist angenommen, dass der KOPF 41 die Funktion [0] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 angibt. Der Kern 10 erfasst daraufhin unter der Annahme, dass die Kerne 10 bis 12 die CAS-Anweisung ausführen und dass der Kern 10 bei der Ausführung der CAS-Anweisung erfolgreich ist, die durch den KOPF 41 angegebene Funktion [0], führt die Funktion [0] aus und schaltet den KOPF 41 zu dem nächsten Registrierungseintrag (P20) weiter.
  • Zu diesem Zeitpunkt gibt der KOPF 41 die Funktion [1] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Nachfolgend erfasst der Kern 11 unter der Annahme, dass die Kerne 11 und 12, die bei der Ausführung der CAS-Anweisung gescheitert sind, die CAS-Anweisung das letzte Mal erneut ausführen und dass der Kern 11 bei der Ausführung der CAS-Anweisung erfolgreich war, die durch den KOPF 41 angegebene Funktion [1], führt er die Funktion [1] aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P21) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Prüfer als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an. Die Funktion [0] und die Funktion [1] werden durch die Kerne 10 und 11 gleichzeitig ausgeführt.
  • Nachfolgend erfasst der Kern 12 unter der Annahme, dass der Kern 12, der bei der Ausführung der CAS-Anweisung das letzte Mal gescheitert ist, die CAS-Anweisung erneut ausführt und dass der Kern 12 bei der Ausführung der CAS-Anweisung erfolgreich war, den durch den KOPF 41 angegebenen Prozesssperre [0]_Prüfer, führt er die Verarbeitung des Prozesssperre [0]_Prüfers aus und schaltet er den KOPF 41 zu dem nächsten Registrierungseintrag (P22) weiter. Zu diesem Zeitpunkt gibt der KOPF 41 den Prozesssperre [0]_Begrenzer als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Nachfolgend setzt der Kern 10 unter der Annahme, dass die Ausführung der Funktion [0] abgeschlossen ist, den Austrittsmerker 36 der Funktion [0] auf wahr und führt er die CAS-Anweisung aus. Wenn die Ausführung der CAS-Anweisung erfolgreich war, erfasst der Kern 10 den durch den KOPF 41 angegebenen Prozesssperre [0]_Begrenzer und führt er die Verarbeitung des Prozesssperre [0]_Begrenzers aus (P23). Zu diesem Zeitpunkt lässt der Kern 10 den KOPF-Wert so wie er ist, ohne den KOPF 41 zu dem nächsten Registrierungseintrag weiterzuschalten. Aus diesem Grund gibt der KOPF 41 den Prozesssperre [0]_Begrenzer weiter als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an. In der Verarbeitung des Prozesssperre [0]_Begrenzers liest der Kern 10 den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 und wiederholt er das Lesen des Kopfeintrags der sperrfreien Funktionswarteschlange LFQ2, falls der Kopfeintrag der Prozesssperre [0]_Begrenzer ist.
  • Der Kern 12, der die Verarbeitung des Prozesssperre [0]_Prüfers ausführt, überwacht den Austrittsmerker 36 der Funktion [0], die eine Überwachungszielfunktion ist, und setzt das Überwachen des Austrittsmerkers 36 der Funktion [0] fort, falls der Austrittsmerker 36 der Funktion [0] falsch ist.
  • Wenn der Austrittsmerker 36 der Funktion [0] andererseits wahr wird, reiht der Kern 12 den Prozesssperre [0]_Begrenzer aus der Warteschlange aus und beendet er die Verarbeitung des Prozesssperre [0]_Prüfers. Zu diesem Zeitpunkt schaltet der Kern 12 den KOPF 41 zu dem nächsten Registrierungseintrag weiter. Somit gibt der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Wenn der KOPF 41 die Funktion [2] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 angibt, ist der Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 nicht mehr der Prozesssperre [0]_Begrenzer. Zu diesem Zeitpunkt kann der Kern 10, wenn der Kern 10, der die Verarbeitung des Prozesssperre [0]_Begrenzers ausführt, den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 liest, der nicht der Prozesssperre [0]_Begrenzer ist, aus der Verarbeitung des Prozesssperre [0]_Begrenzers austreten und die Prozesssperre 30 durchlaufen. Darüber hinaus reiht der Kern 12 den Prozesssperre [0]_Begrenzer aus der Warteschlange aus und ermöglicht er dadurch, dass die Kerne 11 und 12 die Prozesssperre 30 durchlaufen.
  • Nach Durchlaufen der Prozesssperre 30 führen die Kerne 10 und 12 die CAS-Anweisung aus. Daraufhin erfassen die Kerne 10 und 12 die Funktionen [2] und [3] in Übereinstimmung mit der Reihenfolge, in der die CAS-Anweisung erfolgreich war, und führen sie gleichzeitig die Funktionen [2] und [3] aus. Zu diesem Zeitpunkt schaltet jeder der Kerne 10 und 12 den Registrierungseintrag des KOPF 41 vorwärts fort. Somit gibt der KOPF 41 die Funktion [4] als den Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 an.
  • Der Kern 11 setzt die Ausführung der Funktion [1] fort, während die Kerne 10 und 12 die Funktion [2] und die Funktion [3] ausführen. Nach Abschluss der Ausführung der Funktion [1] führt der Kern 11 daraufhin die CAS-Anweisung aus. Wenn der Kern 10 bei der Ausführung der CAS-Anweisung erfolgreich ist, erfasst der Kern 11 die durch den KOPF 41 angegebene Funktion [4] und führt er die Funktion [4] aus. Zu dem Zeitpunkt, zu dem der Kern 11 die Ausführung der Funktion [1] abschließt, ist der Prozesssperre [0]_Begrenzer aus der Warteschlange ausgereiht worden. Aus diesem Grund kann der Kern 11 die Funktion [4], die auf die Ausführung der Funktion [1] folgt, ohne Wartezeit wegen der Prozesssperre 30 ausführen.
  • Hier in der ersten Ausführungsform kann die Prozesssperre 20 erst durchlaufen werden, nachdem die Ausführung der Funktion [1] durch den Kern 11 abgeschlossen ist, selbst wenn die Ausführung der Funktion [0] durch den Kern 10 abgeschlossen ist. Somit können die Funktion [2] und die Funktion [3] erst ausgeführt werden, nachdem die Ausführung der Funktion [1] durch den Kern 11 abgeschlossen ist, selbst wenn die Ausführung der Funktion [0] durch den Kern 10 abgeschlossen ist.
  • Andererseits wird in der zweiten Ausführungsform der Prozesssperre [0]_Begrenzer durch den Kern 12 aus der Warteschlange ausgereiht, wenn die Ausführung der Funktion [0] durch den Kern 10 abgeschlossen ist. Somit können die Funktion [2] und die Funktion [3] selbst dann ausgeführt werden, wenn die Ausführung der Funktion [1] durch den Kern 11 nicht abgeschlossen ist, wenn die Ausführung der Funktion [0] durch den Kern abgeschlossen ist. Somit ist es in der zweiten Ausführungsform im Vergleich zu der ersten Ausführungsform möglich, die Wartezeit, bis die Ausführung der Funktion [2] und der Funktion [3] begonnen wird, zu verringern.
  • Selbst in einem Fall, dass der Kern, der die Funktion ausführt, unterbrochen wird und ein Abschluss der Ausführung der Funktion verzögert wird, können die anderen Kerne die Funktion weiter erfassen und ausführen. Somit kann die Last auf andere Kerne verteilt werden, selbst wenn der Kern, der die Funktion ausführt, unterbrochen wird, und kann die Ansprechzeit für die Unterbrechungsverarbeitung von der externen Vorrichtung unterdrückt werden und kann die Last ausgeglichen werden.
  • In 7 überspringt der Kern 10 die Verarbeitung des Prozesssperre [0]_Begrenzers (P23) und kann er die Funktion [3] ausführen, nachdem der Kern die Ausführung der Funktion [0] abgeschlossen hat und den Austrittsmerker 36 der Funktion [0] auf wahr eingestellt hat, falls der Kern 12 den Prozesssperre [0]_Begrenzer aus der Warteschlange ausreiht, bevor der Kern 10 bei der Ausführung der CAS-Anweisung erfolgreich war.
  • 8 ist ein Ablaufplan, der das Funktionsausführungsverfahren der Programmausführungssteuerung aus 4 darstellt.
  • In Schritt S11 aus 8 bestimmt jeder der Kerne 10 bis 13, ob die sperrfreie Funktionswarteschlange LFQ2 leer ist. Falls die sperrfreie Funktionswarteschlange LFQ2 leer ist, endet die Verarbeitung. Falls die sperrfreie Funktionswarteschlange LFQ2 nicht leer ist, geht der Ablauf der Verarbeitung zu S12, um den Kopfeintrag aus der sperrfreien Funktionswarteschlange LFQ2 zu lesen. Falls der Eintrag, der gelesen worden ist, keine Begrenzerfunktion ist, wird der Kopfeintrag davon erfasst, und falls er eine Begrenzerfunktion ist, wird ein Rückwert falsch zurückgegeben. Zu diesem Zeitpunkt wird der KOPF-Wert, der die Begrenzerfunktion angibt, so wie er ist beibehalten und wird der KOPF-Wert nicht zu dem nächsten Registrierungseintrag weitergeschaltet.
  • Nachfolgend bestimmt jeder der Kerne 10 bis 13 in Schritt S13, ob die durch die sperrfreie Funktionswarteschlange LFQ2 erfasste Funktion die Prüferfunktion 32 ist, wobei die Verarbeitung zu Schritt S17 übergeht, um die Verarbeitung 102 der Prüferfunktion 22 auszuführen, falls sie die Prüferfunktion 32 ist. Falls sie nicht die Prüferfunktion 32 ist, geht der Ablauf der Verarbeitung zu Schritt S14 über, wo jeder der Kerne 10 bis 13 bestimmt, ob sie die Begrenzerfunktion 33 ist. Falls sie die Begrenzerfunktion 33 ist, geht der Ablauf der Verarbeitung zu Schritt S20 über, um die Verarbeitung 101 der Begrenzerfunktion 33 auszuführen. Falls sie nicht die Begrenzerfunktion 33 ist, geht der Ablauf der Verarbeitung zu Schritt S15 über, wo jeder der Kerne 10 bis 13 die in Schritt S12 erfasste Funktion ausführt. Nachfolgend wird in Schritt S16 der Austrittsmerker 36 der in Schritt S15 ausgeführten Funktion auf wahr gesetzt und kehrt der Ablauf der Verarbeitung zu Schritt S11 zurück.
  • In der Verarbeitung 102 der Prüferfunktion 32 wird in Schritt S17 ein Austrittsmerker 37 der Überwachungszielfunktion gelesen und bestimmt, ob der Austrittsmerker 37 wahr ist. Falls der Austrittsmerker 37 nicht wahr ist, wird die Verarbeitung des Schritts S17 wiederholt. Wenn ein Kern die Verarbeitung 102 der Prüferfunktion 32 ausführt und ein anderer Kern, der die Überwachungszielfunktion verarbeitet, die Ausführung der Überwachungszielfunktion abschließt, setzt der Kern, der die Ausführung der Überwachungszielfunktion abgeschlossen hat, den Austrittsmerker 36 der Überwachungszielfunktion auf wahr.
  • Wenn der Austrittsmerker 36 der Überwachungszielfunktion durch einen anderen Kern auf wahr gesetzt wird, bestimmt der Kern, der die Verarbeitung 102 der Prüferfunktion 32 ausführt, in Schritt S17, dass der Austrittsmerker 37 wahr ist, und schreitet der Ablauf der Verarbeitung zu Schritt S18 fort. Falls in der Prüferfunktion 32 mehrere Überwachungszielfunktionen registriert sind, schreitet der Ablauf der Verarbeitung zu Schritt S18 fort, wenn die Austrittsmerker 37 aller Überwachungszielfunktionen wahr sind. In Schritt S18 reiht der Kern, der die Verarbeitung 102 der Prüferfunktion 32 ausführt, die Begrenzerfunktion 33 aus der Warteschlange aus und geht der Ablauf der Verarbeitung zu Schritt S19 über. In Schritt S19 beendet der Kern, der die Verarbeitung 102 der Prüferfunktion 32 ausführt, die Verarbeitung der Prüferfunktion 32 und kehrt der Ablauf der Verarbeitung zu Schritt S11 zurück.
  • In der Verarbeitung 101 der Begrenzerfunktion 33 in Schritt S20 wird der Kopfeintrag aus der sperrfreien Funktionswarteschlange LFQ2 gelesen.
  • Nachfolgend bestimmt der Kern, der die Verarbeitung 101 der Begrenzerfunktion 33 ausführt, in Schritt S21, ob die in Schritt S20 erfasste Funktion die Begrenzerfunktion 33 mit einer selben Prozesssperren-ID 34 wie die Begrenzerfunktion 33 in Schritt S14 ist. Zur Einfachheit kann auf den KOPF-Wert der sperrfreien Funktionswarteschlange LFQ2 Bezug genommen werden und können sie verglichen werden. Falls die Begrenzerfunktion 33 dieselbe Prozesssperren-ID 34 aufweist, kehrt der Ablauf der Verarbeitung zu Schritt S20 zurück, um das Lesen des Kopfeintrags der sperrfreien Funktionswarteschlange LFQ1 zu wiederholen.
  • Wenn der Kern, der die Verarbeitung 102 der Prüferfunktion 32 ausführt, die Begrenzerfunktion 33 aus der Warteschlange ausreiht, während ein bestimmter Kern die Verarbeitung 101 der Begrenzerfunktion 33 ausführt, ist der Kopfeintrag der sperrfreien Funktionswarteschlange LFQ2 nicht mehr die Begrenzerfunktion 33 mit derselben Prozesssperren-ID 34. Somit bestimmt der Kern, der die Verarbeitung 101 der Begrenzerfunktion 33 ausführt, in Schritt S21, dass die in Schritt S20 erfasste Funktion nicht die Begrenzerfunktion 33 mit derselben Prozesssperren-ID 34 ist, und kehrt der Ablauf der Verarbeitung zu Schritt S11 zurück.
  • Infolgedessen wird die Begrenzerfunktion 33 zu demselben Zeitpunkt aus der Warteschlange ausgereiht, zu dem die Funktion, die ein durch die Prüferfunktion 32 zu überwachendes Ziel ist, abgeschlossen ist, und wird die Totzeit, die der in Schritt S20 ausgeführten Schleifenüberwachungsverarbeitung zugeordnet ist, beseitigt, so dass die Verarbeitung beschleunigt werden kann. Darüber hinaus erfordert in der ersten Ausführungsform die Prüferfunktion 22, die in der Prozesssperre 20 registriert ist, die Bestimmung der Anzahl der Kerne, die der Funktionsverarbeitung zugeordnet werden sollen, während die Bestimmung der Anzahl der Kerne, die der Funktionsverarbeitung zugeordnet werden sollen, in der zweiten Ausführungsform nicht mehr erforderlich ist. Zu irgendeinem Zeitpunkt während der Verarbeitung einer in der sperrfreien Funktionswarteschlange LFQ2 registrierten Funktion kann ein Kern, der eine in der sperrfreien Funktionswarteschlange LFQ2 registrierte Funktion ausführen soll, hinzugefügt werden oder können einige Kerne zu der Verarbeitung einer anderen sperrfreien Funktionswarteschlange neu zugeordnet werden.
  • 9 ist ein Blockschaltplan, der die Konfiguration der Fahrzeugsteuervorrichtung darstellt, auf die die Programmausführungs-Steuervorrichtung gemäß der dritten Ausführungsform angewendet ist. Die Programmausführungs-Steuervorrichtung aus 9 weist eine zu der Konfiguration aus 4 hinzugefügte Managementtabelle 50 auf. Die Managementtabelle 50 managt die Kernnummer des Kerns, der der Ausführung der in der sperrfreien Funktionswarteschlange registrierten Funktion zugeordnet ist. In die sperrfreie Funktionswarteschlange kann eine Prozesssperre mit derselben Konfiguration wie in 4 eingefügt werden. Zu diesem Zeitpunkt können die sperrfreien Funktionswarteschlangen auf der Grundlage einer Aufgabenfunktion und einer dynamischen Charakterisierung wie etwa eines Ausführungszyklus klassifiziert werden.
  • Zum Beispiel werden zwei sperrfreie Funktionswarteschlangen LFQ2A und LFQ2B angenommen. Die Funktionen [10] bis [14] werden in der sperrfreien Funktionswarteschlange LFQ2A registriert. Die Funktionen [11] und [13] veranlassen einen Datenkonflikt und unmittelbar vor der Funktion [13] wird eine Prozesssperre 30A eingefügt. Für die Funktion [11] wird die Überwachungszielfunktion eingestellt, die ein durch die Prozesssperre 30A zu überwachendes Ziel ist. Die Funktionen [0] bis [4] werden in der sperrfreien Funktionswarteschlange LFQ2B registriert. Die Funktionen [0] und [2] veranlassen einen Datenkonflikt und unmittelbar vor der Funktion [2] wird eine Prozesssperre 30B eingefügt. Für die Funktion [0] wird die Überwachungszielfunktion eingestellt, die ein durch die Prozesssperre 30B zu überwachendes Ziel ist.
  • Außerdem wird angenommen, dass die Kerne 10 bis 13 in dieser Reihenfolge die Kernnummern N00 bis N03 erhalten. Die Korrespondenzbeziehung zwischen der sperrfreien Funktionswarteschlange LFQ2A und den Kernnummern N00 und NO1 und die Korrespondenzbeziehung zwischen der sperrfreien Funktionswarteschlange LFQ2B und den Kernnummern N02 und NO3 werden hier unter der Annahme, dass die Kerne 10 und 11 für die sperrfreie Funktionswarteschlange LFQ2A verantwortlich sind und dass die Kerne 12 und 13 für die sperrfreie Funktionswarteschlange LFQ2B verantwortlich sind, in der Managementtabelle 50 registriert.
  • Vielkernsteuersoftware wird häufig verwendet, um Einkernanwendungen zu integrieren. Somit ist es bevorzugt, die Funktionen in aufeinanderfolgende Ausführungsverarbeitungseinheiten zu teilen, die jeweils eine auf einer Grundlage eines Ausführungszyklus und einer Verarbeitungscharakteristik gemanagte Unterprogrammbibliothek bilden, anstatt alle Funktionen in einer sperrfreien Funktionswarteschlange zu registrieren. Dadurch, dass die somit unterteilten sperrfreien Funktionswarteschlangen LFQ2A und LFQ2B konstruiert werden und auf die Managementtabelle 50 Bezug genommen wird, ist es möglich, Kerne zuzuordnen, die die in den sperrfreien Funktionswarteschlangen LFQ2A und LFQ2B registrierten Funktionen ausführen sollen. Im Fall der Ausführung einer periodischen Aufgabe, die durch einen Zeitgeber gestartet wird, wird zu dem Zeitpunkt des Startens des Zeitgebers die entsprechende sperrfreie Funktionswarteschlange LFQ2A oder LFQ2B ausgewählt und die Verarbeitung in 4 ausgeführt.
  • Dadurch, dass die sperrfreien Funktionswarteschlangen LFQ2A und LFQ2B wie in der zweiten Ausführungsform dargestellt konfiguriert sind, können die Kerne 10 bis 13, die der Verarbeitung der Registrierungsfunktion zugeordnet werden sollen, in Übereinstimmung mit der tatsächlichen Rechenlast jedes der Kerne 10 bis 13 dynamisch gesteuert werden. Durch Nutzung dieses Punkts kann der Kern, der der sperrfreien Funktionswarteschlange zugeordnet ist, deren Verarbeitung früher beendet wurde, der Verarbeitung der anderen sperrfreien Funktionswarteschlange neu zugeordnet werden, selbst wenn den mehreren sperrfreien Funktionswarteschlangen LFQ2A und LFQ2B unterschiedliche Kerne zugeordnet sind. Selbst wenn in einem spezifischen Kern eine unbegrenzte Menge an Unterbrechungsverarbeitung konzentriert ist, kann diese Neuzuordnung die Rechenlast des gesamten Kerns ausgleichen und die ungünstigste Ausführungszeit sicherstellen.
  • Bezugszeichenliste
  • 1A
    Computer
    10 bis 13
    Kern
    14
    Eingabe/Ausgabe-Schnittstelle
    15
    DRAM
    16
    Cache
    17
    Sensor
    18
    Aktuator
    LFQ1, LFQ2
    sperrfreie Funktionswarteschlange
    20, 30
    Prozesssperre
    21,31
    Funktion
    22, 32
    Prüferfunktion
    23, 33
    Begrenzerfunktion
    24, 34
    Prozesssperren-ID
    36
    Austrittsmerker
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • JP 2017073000 A [0018]
    • JP 2014062378 A [0018]
    • JP 2006155480 A [0018]

Claims (10)

  1. Programmausführungs-Steuerverfahren, das umfasst: eine sperrfreie Funktionswarteschlange, in der mehrere gleichzeitig ausführbare Funktionen der Reihe nach registriert sind, wobei die sperrfreie Funktionswarteschlange eine zwischen Funktionen in Datenkonflikt eingefügte Prozesssperre enthält, und die Prozesssperre veranlasst, dass von einer früheren und einer nachfolgenden Funktion in Datenkonflikt die Ausführung der nachfolgenden Funktion an einer Position der Prozesssperre wartet, bis die Ausführung der früheren Funktion abgeschlossen ist.
  2. Programmausführungs-Steuerverfahren nach Anspruch 1, wobei die Prozesssperre von der früheren und der nachfolgenden Funktion in Datenkonflikt überwacht, ob die Ausführung der früheren Funktion abgeschlossen ist, und nach Abschluss der Ausführung der früheren Funktion die Zuordnung eines Kerns, der die nachfolgende Funktion ausführen soll, zulässt.
  3. Programmausführungs-Steuerverfahren nach Anspruch 2, wobei die Prozesssperre enthält: einen Prüfer, der den Verarbeitungsabschluss einer bestimmten Funktion bestätigt, und einen Begrenzer, der veranlasst, dass die Ausführung einer Funktion nach der Prozesssperre wartet, wobei der Prüfer den Begrenzer, gepaart mit dem Prüfer, nach Bestätigung des Verarbeitungsabschlusses der bestimmten Funktion aus der sperrfreien Funktionswarteschlange löscht, und der Kern die Erfassung und Ausführung der Funktion zu einem Zeitpunkt der Verarbeitung der Prozesssperre unterbricht und die Verarbeitung des Erfassens und Ausführens der Funktion aus der sperrfreien Funktionswarteschlange nach Löschung des Begrenzers wiederaufnimmt.
  4. Programmausführungs-Steuerverfahren nach Anspruch 3, das umfasst: mehrere der sperrfreien Funktionswarteschlangen; und eine Managementtabelle, die eine Kernnummer eines Kerns, der zur Ausführung einer registrierten Funktion zugeordnet ist, in jeder der sperrfreien Funktionswarteschlangen managt.
  5. Programmausführungs-Steuerverfahren nach Anspruch 2, wobei die Prozesssperre N-1 Prüfer und einen Begrenzer enthält, wobei eine Anzahl von Kernen, die in der Lage sind, die Funktionen gleichzeitig auszuführen, N ist (N ist eine ganze Zahl gleich oder größer 2), die Prüfer bestimmen, ob ein Kopfeintrag der sperrfreien Funktionswarteschlange entweder der Prüfer oder der Begrenzer ist, und das Lesen des Kopfeintrags wiederholt wird, falls er einer ist, und die Verarbeitung endet, falls er keiner ist, und der Begrenzer eine Leerfunktion ist, die ohne Ausführung irgendeiner Verarbeitung endet.
  6. Programmausführungs-Steuerverfahren nach Anspruch 2, wobei der Kern die sperrfreie Funktionswarteschlange unter Verwendung einer atomaren Anweisung sperrfrei macht, wenn eine Variable, die einen Kopfeintrag der sperrfreien Funktionswarteschlange angibt, aktualisiert wird.
  7. Fahrzeugsteuervorrichtung, die umfasst: mehrere Kerne; und einen gemeinsam genutzten Speicher, auf den von den Kernen zugegriffen werden kann, wobei der gemeinsam genutzte Speicher eine sperrfreie Funktionswarteschlange hält, die eine zwischen Funktionen in Datenkonflikt eingefügte Prozesssperre enthält, wobei die Prozesssperre enthält: einen Prüfer, der den Verarbeitungsabschluss der bestimmten Funktion bestätigt, und einen Begrenzer, der veranlasst, dass die Ausführung einer Funktion nach der Prozesssperre wartet, und die Kerne die Erfassung und Ausführung der Funktion zu einem Zeitpunkt der Verarbeitung der Prozesssperre unterbrechen und der Prüfer den mit dem Prüfer gepaarten Begrenzer aus der sperrfreien Funktionswarteschlange löscht, wenn der Prüfer den Verarbeitungsabschluss der bestimmten Funktion zu einem Zeitpunkt der Ausführung des Prüfers bestätigt, und die Kerne die Verarbeitung des Erfassens und Ausführens der Funktion aus der sperrfreien Funktionswarteschlange nach Löschen des Begrenzers wiederaufnehmen.
  8. Fahrzeugsteuervorrichtung nach Anspruch 7, die umfasst: mehrere der sperrfreien Funktionswarteschlangen; und eine Tabelle, die Kernnummern von Kernen, die zur Ausführung einer in jeder der sperrfreien Funktionswarteschlangen registrierten Funktion zugeordnet sind, managt.
  9. Fahrzeugsteuervorrichtung nach Anspruch 8, wobei die sperrfreien Funktionswarteschlangen auf einer Grundlage einer Aufgabenfunktion oder einer dynamischen Charakteristik klassifiziert werden, und Kerne, die die sperrfreien Funktionswarteschlangen verarbeiten, dynamisch zugeordnet werden.
  10. Fahrzeugsteuervorrichtung nach Anspruch 8, wobei Kerne, die die sperrfreien Funktionswarteschlangen verarbeiten, in Übereinstimmung mit einem Verarbeitungszustand der sperrfreien Funktionswarteschlangen dynamisch neu zugeordnet werden.
DE112019000189.2T 2018-02-16 2019-01-23 Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung Pending DE112019000189T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018025692A JP7042105B2 (ja) 2018-02-16 2018-02-16 プログラム実行制御方法および車両制御装置
JP2018-025692 2018-02-16
PCT/JP2019/001978 WO2019159616A1 (ja) 2018-02-16 2019-01-23 プログラム実行制御方法および車両制御装置

Publications (1)

Publication Number Publication Date
DE112019000189T5 true DE112019000189T5 (de) 2020-08-27

Family

ID=67620045

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000189.2T Pending DE112019000189T5 (de) 2018-02-16 2019-01-23 Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung

Country Status (4)

Country Link
US (1) US11645124B2 (de)
JP (1) JP7042105B2 (de)
DE (1) DE112019000189T5 (de)
WO (1) WO2019159616A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220394284A1 (en) * 2021-06-07 2022-12-08 Sony Interactive Entertainment Inc. Multi-threaded cabac decoding
US11934255B2 (en) 2022-01-04 2024-03-19 Bank Of America Corporation System and method for improving memory resource allocations in database blocks for executing tasks

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4606142B2 (ja) 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US8037474B2 (en) 2005-09-27 2011-10-11 Sony Computer Entertainment Inc. Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution
JP2011248469A (ja) 2010-05-24 2011-12-08 Sony Computer Entertainment Inc 情報処理装置および情報処理方法
WO2011148553A1 (ja) 2010-05-24 2011-12-01 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
JP2014063278A (ja) 2012-09-20 2014-04-10 Kyushu Univ 同期処理回路及び同期処理方法
US9804888B2 (en) * 2013-03-15 2017-10-31 Oracle International Corporation System and method for implementing constrained data-driven parallelism
JP6464982B2 (ja) 2015-10-07 2019-02-06 株式会社デンソー 並列化方法、並列化ツール、車載装置

Also Published As

Publication number Publication date
US11645124B2 (en) 2023-05-09
JP7042105B2 (ja) 2022-03-25
US20210004278A1 (en) 2021-01-07
JP2019144627A (ja) 2019-08-29
WO2019159616A1 (ja) 2019-08-22

Similar Documents

Publication Publication Date Title
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE4227345C2 (de) Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem
DE112005002403B4 (de) Prozessor-Pipeline mit konstantem Durchsatz
DE69816686T2 (de) Hochfrequenzabtastung von Leistungszählern
DE102013202495A1 (de) Verfahren zur Durchführung von interaktivem Debugging auf nicht unterbrechbaren Graphikverarbeitungseinheiten
DE102013214756A1 (de) Verfahren und vorrichtung zum verbessern des verarbeitungsleistungsvermögens eines mehrkernprozessors
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE4221073A1 (de) Datenspeichersystem und -verfahren mit geraeteunabhaengigen dateiverzeichnissen
DE112010005821T5 (de) Kontextwechsel
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE102009012766A1 (de) Ein Zugriffssperrenvorgang, um atomare Aktualisierungen zu einem geteilten Speicher zu ermöglichen
DE4216871A1 (de) Ausfuehrungsordnen zum sicherstellen der serienherstellbarkeit verteilter transaktionen
DE112015004750T5 (de) Eine beinahe faire aktive sperre
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE112013006646B4 (de) Computer, System und computerlesbares Ablagemedium zum Identifizieren von Arbeitslast und Dimensionierung von Puffern zum Zweck der Volumenreplikation
DE112012000245T5 (de) Aktivitätsaufzeichnungssystem für eine parallele Softwareumgebung
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102007046947A1 (de) System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE112019000189T5 (de) Programmausführungs-steuerverfahren und fahrzeugsteuervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HITACHI ASTEMO, LTD., HITACHINAKA-SHI, JP

Free format text: FORMER OWNER: HITACHI AUTOMOTIVE SYSTEMS, LTD., HITACHINAKA-SHI, IBARAKI, JP