DE102015107654A1 - Dienst und System zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller - Google Patents

Dienst und System zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller Download PDF

Info

Publication number
DE102015107654A1
DE102015107654A1 DE102015107654.3A DE102015107654A DE102015107654A1 DE 102015107654 A1 DE102015107654 A1 DE 102015107654A1 DE 102015107654 A DE102015107654 A DE 102015107654A DE 102015107654 A1 DE102015107654 A1 DE 102015107654A1
Authority
DE
Germany
Prior art keywords
buffer
read
indicator
write
coherent data
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
DE102015107654.3A
Other languages
English (en)
Inventor
Shige Wang
Chang Liu
Trenton W. Haines
James T. Kurnik
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.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
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 GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102015107654A1 publication Critical patent/DE102015107654A1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)

Abstract

Ein System und Verfahren zum Zugreifen auf kohärente Daten auf einem Controller. Das System und Verfahren umfassen einen ersten Puffer und einen zweiten Puffer, aus denen man jeweils lesen oder in die man schreiben kann, und einen Indikator, der angibt, welcher von dem ersten oder dem zweiten Puffer ausgelesen wird, während in den anderen von dem ersten oder dem zweiten Puffer geschrieben wird. Das System und Verfahren umfassen auch ein Lese-Synchronisationsprotokoll, das es ermöglicht, die kohärenten Daten aus dem Puffer, von dem der Indikator angibt, dass er der Lesepuffer ist, auszulesen, und ein Schreib-Synchronisationsprotokoll, das es ermöglicht, die kohärenten Daten in den Puffer, von dem der Indikator angibt, dass er der Schreibpuffer ist, zu schreiben.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen ein System und Verfahren zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller und genauer gesagt ein System und Verfahren, die zwei Puffer, einen Indikator und ein Synchronisationsprotokoll bereitstellen, das es ermöglicht, dass der eine Puffer gelesen wird während der andere Puffer beschrieben wird, und wobei die Schreib- und Lese-Zuständigkeiten zwischen den beiden Puffern wechseln.
  • Beschreibung der verwandten Technik
  • Moderne Fahrzeuge verwenden diverse eingebettete elektronische Controller, welche die Leistung, den Komfort, die Sicherheit usw. des Fahrzeugs verbessern. Derartige Controller umfassen Motor-Controller, Federungs-Controller, Lenkungs-Controller, Antriebsstrang-Controller, Klimaregelungs-Controller, Infotainment-Anlagen-Controller, Fahrgestellsystem-Controller usw. Diese Controller benötigen typischerweise spezielle Software und Algorithmen, um ihre Steuerfunktionen auszuführen.
  • Die aktuelle Tendenz für elektronische Fahrzeug-Controller geht dahin, mehrere Software-Anwendungen für verschiedene Funktionen bereitzustellen, die auf einem gemeinsamen Controller funktionieren. Beispielsweise sind Abstandsregeltempomat-(ACC)Systeme, Spurzentrierungssysteme, Stabilitätssteuersysteme usw. alle in der Technik bekannt und steuern alle die Fahrzeuglenkung und/oder Bremsung auf gewisse Weise automatisch. Diese Systeme verwenden häufig die gleichen Sensoreingaben und andere Variablen, die manchmal als globale Variablen bezeichnet werden, die, wenn sie im Speicher abgelegt werden, von mehr als einer Software-Anwendung verwendet werden können. Beispielsweise kann das ACC-System die Sensordaten lesen und die Sensordaten während seines Betriebs auf dem Prozessor in den Controller-Speicher schreiben, und das Spurzentrierungssystem und andere Software-Anwendungen können diese Daten lesen, wenn sie auf dem Prozessor ablaufen. Somit ist es in vielen Fällen, wie etwa bei diesen, sinnvoll, mehrere Software-Anwendungen auf dem gleichen Prozessor laufen zu lassen.
  • Das Bereitstellen mehrerer diesbezüglicher Software-Anwendungen, die auf einem gemeinsamen Controller ablaufen, hat offensichtliche Vorteile zum Reduzieren der System-Hardware und Kosten. Das Betreiben verschiedener Software-Anwendungen auf dem gleichen Prozessor erhöht jedoch die Komplexität des Controllers auf Grund der Planung, die notwendig ist, um die verschiedenen Software-Anwendungen laufen zu lassen und zu verhindern, dass sich die Software-Anwendungen gegenseitig stören. Derartige Anwendungen gemischter Nutzung, die auf einem einzigen Prozessor funktionieren, werden noch komplizierter, wenn ein Fahrzeug-OEM zusätzliche Software auf einem Controller bereitstellt, der bereits über Software verfügt, die von einem Anbieter bereitgestellt wird.
  • Wenn in mehreren diesbezüglichen Software-Anwendungen und/oder Multicore-Computer-Umgebungen eine oder mehrere Software-Ausführungsanwendungen gleichzeitige Vorgänge auf den gleichen kritischen Ressourcen versuchen, kann es zu einem Problem kommen. Wenn beispielsweise die Software-Anwendungen einen gleichzeitigen Zugriff auf einen gemeinsam genutzten Dateneintrag versuchen, der automatisch aktualisiert werden muss, kann es zu einer Wettlaufsituation kommen, die wiederum einen Programmausfall verursachen kann. Es werden Synchronisationsabläufe verwendet, um zu verhindern, dass es zu derartigen Situationen kommt. Bekannte Synchronisationsverfahren verwenden Sperrmechanismen oder sperrfreie Mechanismen, um den Software-Anwendungen Zugriff auf kritische Ressourcen bereitzustellen, um zu verhindern, dass es zu Wettlaufsituationen oder ähnlichen Problemen kommt.
  • Sperrmechanismen verwenden ein Verfahren, die es nur einer Software-Anwendung auf einmal ermöglicht, eine Sperre zu erlangen und anschließend Verarbeitungsvorgänge an einer kritischen Ressource vorzunehmen. Wenn eine Software-Anwendung über eine Sperre für eine kritische Ressource verfügt, werden andere Software-Anwendungen, die versuchen, auf die kritische Ressource zuzugreifen, angehalten und in eine Warteschlange gesetzt. Sobald die Sperre aufgehoben wurde, erhält die nächste Software-Anwendung am Anfang der Warteschlange die Sperre und darf mit der Verarbeitung von Vorgängen fortfahren. Obwohl der zuvor angesprochene Ansatz der Sperrsynchronisation Wettlaufsituationen verhindert, verlangsamt das notwendige Anhalten der Software-Anwendungen die Verarbeitung. Falls zusätzlich eine Software-Anwendung, die über eine Sperre verfügt, die Verarbeitung nicht richtig beendet, kann es sein, dass das Programm nicht mehr reagiert.
  • Ein anderes bekanntes Verfahren, das gewöhnlich als sperrfreie Synchronisation bezeichnet wird, gewährleistet, dass nur eine Software-Anwendung eine kritische Ressource aktualisieren kann. Falls eine zweite Software-Anwendung eine Aktualisierung versucht, während eine erste Software-Anwendung die kritische Ressource aktualisiert, versagt der Versuch der zweiten Software-Anwendung. Falls die zweite Software-Anwendung versagt, startet sie den Aktualisierungsversuch erneut, nachdem die erste Software-Anwendung die Aktualisierung für die kritische Ressource beendet hat. Obwohl eine sperrfreie Synchronisation im Vergleich zu einer Sperrsynchronisation eine bessere Ausführungsleistung erbringen kann, kann sie für bestimmte kritische Ressourcen nicht immer umgesetzt werden. Andere bekannte Ansätze, wie etwa solche ohne Wartezeiten, erfordern übermäßig viel Speicher und erfordern mindestens drei Kopien der Datensätze.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Die nachstehende Offenbarung beschreibt ein System und Verfahren zum Zugreifen auf kohärente Daten auf einem Controller. Das System und Verfahren umfassen einen ersten Puffer und einen zweiten Puffer, aus denen man jeweils lesen oder in die man schreiben kann, und einen Indikator, der angibt, welcher von dem ersten oder dem zweiten Puffer ausgelesen wird, während in den anderen von dem ersten oder dem zweiten Puffer geschrieben wird. Das System und Verfahren umfassen auch ein Lese-Synchronisationsprotokoll, das es ermöglicht, die kohärenten Daten aus dem Puffer zu lesen, von dem der Indikator angibt, dass er der Lesepuffer ist, und ein Schreib-Synchronisationsprotokoll, das es ermöglicht, die kohärenten Daten in den Puffer zu schreiben, von dem der Indikator angibt, dass er der Schreibpuffer ist.
  • Zusätzliche Merkmale der vorliegenden Erfindung werden aus der nachstehenden Beschreibung und den beiliegenden Ansprüchen hervorgehen, wenn sie zusammen mit den beiliegenden Zeichnungen gesehen werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Es zeigen:
  • 1 eine Abbildung von kohärenten Daten, die zusammen zu aktualisieren sind, d.h. kohärent durch dasselbe ablauffähige Anbieterelement;
  • 2 eine Abbildung eines Systems, das zwei Puffer und einen Indikator umfasst;
  • 3 ein Ablaufschema eines Synchronisationsprotokolls für einen Leseabschnitt des in 2 gezeigten Systems;
  • 4 ein Ablaufschema eines Synchronisationsprotokolls für einen Schreibabschnitt des in 2 gezeigten Systems;
  • 5 eine Abbildung eines bestimmten ablauffähigen Software-Elements R1, welches das System aus 2 verwendet;
  • 6 eine Zeitachse, die das ablauffähige Software-Element R1 aus 5 im Verlauf der Zeit und ein anderes ablauffähiges Software-Element R2, das versucht, die kohärenten Daten zu lesen, die von R1 bereitgestellt werden, abbildet;
  • 7 eine andere Zeitachse, die das ablauffähige Software-Element R1 und das zweite ablauffähige Software-Element R2 im Verlauf der Zeit zeigt; und
  • 8 eine andere Zeitachse, welche die ablauffähigen Software-Elemente R1 und R2 im Verlauf der Zeit zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSBEISPIELE
  • Die folgende Diskussion der Ausführungsformen der Erfindung über ein System und Verfahren zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller ist rein beispielhafter Art und keineswegs dazu gedacht, die Erfindung oder ihre Anwendungen oder Verwendungen einzuschränken. Obwohl beispielsweise eine Fahrzeuganwendung besprochen wird, kann man das hier beschriebene System und Verfahren in einer beliebigen Rechenumgebung verwenden.
  • 1 ist eine Abbildung von kohärenten Daten 10, die zusammen durch dasselbe ablauffähige Element bzw. dieselbe Software-Anwendung zu aktualisieren sind. Wie er hier verwendet wird, umfasst der Begriff „ablauffähiges Element” eine kleine ausführbare Software-Komponente oder Software-Funktion. Die Datengruppe 12, die verwandte Daten 14, 16 und 18 umfasst, soll derart aktualisiert werden, dass die Daten 14, 16 und 18 zusammen (d.h. kohärent) von demselben ablauffähigen Anbieterelement Ra, das durch das Kästchen 50 dargestellt wird, aktualisiert werden. Beispielsweise können die Daten 14, 16 und 18 Positionsdaten der X-, Y- und Z-Achsen eines globalen Positionsbestimmungssatelliten (GPS) eines Fahrzeugs darstellen. Die Datengruppe 20, welche die verwandten Daten 22 und 24 umfasst, soll derart aktualisiert werden, dass die Daten 22 und 24 zusammen von demselben ablauffähigen Anbieterelement, das durch das Kästchen 52 dargestellt wird, aktualisiert werden. Beispielsweise können die Daten 22 und 24 die Position eines Motorzylinders und die Position einer Nockenwellenphase darstellen. Viele verschiedene kohärente Datengruppen können in einer elektronischen Steuereinheit (ECU) eines Fahrzeugs vorhanden sein, wie es für den Fachmann offensichtlich ist. Die Datengruppe 30 umfasst die verwandten Daten 32 und 34, die zusammen von demselben ablauffähigen Anbieterelement, das durch das Kästchen 56 dargestellt wird, aktualisiert werden sollen, und die Datengruppe 40 umfasst die verwandten Daten 42 und 44, die zusammen von demselben ablauffähigen Anbieterelement, das durch das Kästchen 54 dargestellt wird, aktualisiert werden sollen.
  • Die jeweiligen Daten 14, 16, 18, 22, 24, 32, 34, 42 und 44 sind grundlegende bzw. atomare Bausteinelemente von ausführbaren Programmen. Obwohl die Datengruppen 12, 20, 30 und 40 zusammen geschrieben werden sollen, können die Daten 14, 16, 18, 22, 24, 32, 34, 42 und 44 gemäß verschiedenen Gruppen zusammen gelesen werden. In dem Kästchen 50 werden die Daten 14, 16 und 18 alle zusammen geschrieben oder aktualisiert. Falls beispielsweise die Daten 14, 16 und 18 die X-, Y- und Z-Koordinaten eines Fahrzeugs darstellen, z.B. Längengrad, Breitengrad und Höhenlage, kann der Standort des Fahrzeugs nicht genau bestimmt werden, falls die Daten 16 und 18 aber nicht 14 aktualisiert wurden. Somit ist es in diesem Fall wichtig, dass die Daten 14, 16 und 18 zusammen aktualisiert werden. Bei einem anderen Beispiel werden in dem Kästchen 52 die Daten 22 und 24 zusammen geschrieben, und die Daten 32 werden alleine für eine bestimmte Anwendung gelesen. Bei einem anderen Beispiel werden in dem Kästchen 54 die Daten 34 alleine gelesen, und die Daten 42 und 44 werden von einer bestimmten Anwendung geschrieben. Bei einem anderen Beispiel werden in dem Kästchen 56 die Daten 14, 16 und 22 zusammen gelesen, und die Daten 32 und 34 werden von einer bestimmten Anwendung zusammen geschrieben. Die Daten 14 und 16, die von dem ablauffähigen Anbieterelement in dem Kästchen 56 gelesen werden, müssen kohärent sein, was bedeutet, dass 14 und 16, die von dem ablauffähigen Anbieterelement in dem Kästchen 56 gelesen werden, von dem ablauffähigen Anbieterelement in dem Kästchen 50 kohärent zu einem früheren Zeitpunkt aktualisiert werden müssen, wie etwa die zuvor besprochenen Längengrad- und Breitengrad-Koordinaten des Fahrzeugs. Bei einem anderen Beispiel werden in dem Kästchen 58 die Daten 16 und 18 zusammen gelesen, und sie müssen von dem ablauffähigen Anbieterelement in dem Kästchen 50 kohärent aktualisiert werden, die Daten 24 werden alleine gelesen, und die Daten 42 und 44 werden zusammen gelesen, nachdem sie von dem ablauffähigen Anbieterelement in dem Kästchen 54 kohärent aktualisiert wurden. Die Beispiele 50, 52, 54, 56 und 58 erläutern, dass in einer Rechenumgebung die Lesekohärenz unterschiedlich vorkommen kann. Ferner können verschiedene ablauffähige Elemente verschiedene Versionen von kohärenten Daten lesen. Beispielsweise können die Daten 16 in dem Kästchen 56 nicht die gleichen Daten 16 sein, die in dem Kästchen 58 gelesen werden. Somit können die ablauffähigen Elemente unter Verwendung verstreuter Daten in dem Speicher wirklich parallel ausgeführt werden, ohne die Verwendung der Verfahren der Sperrsynchronisation oder der sperrfreien Synchronisation, die in der Technik bekannt sind, zu benötigen, wodurch die Probleme vermieden werden, die mit diesen Lösungsansätzen verknüpft sind und zuvor identifiziert wurden.
  • Die Sperrsynchronisation, die in der Technik bekannt ist und zuvor besprochen wurde, bedingt eine Sperrsynchronisation für den Datenzugriff. Bei der vorliegenden Anmeldung wird das Sperren des Steuerprogramms des Betriebssystems (OS) vorgeschlagen, um die nachstehend beschriebenen Protokolle zu synchronisieren. Das Sperren des OS-Steuerprogramms soll verhindern, dass die aktuelle Software-Ausführung von einem OS-Arbeitsschritt höherer Priorität in demselben Kern vorweggenommen wird. Dies soll sicherstellen, dass der Lese- oder Schreibzugriff der kohärenten Daten so schnell wie möglich erfolgen kann.
  • 2 ist eine Abbildung eines Systems 70, das es ermöglicht, dass die Datengruppen 12, 20, 30 und 40 zusammen geschrieben werden, und zwar auf eine Art und Weise, die schnell und zuverlässig ist und keine großen Mengen an Speicher benötigt und die zwei Puffer verwendet. Das System 70 umfasst einen ersten Puffer 72, einen zweiten Puffer 74 und einen Indikator 76. Der Indikator 76 gibt an, welcher der Puffer 72 und 74 auszulesen ist. Wenn ein ablauffähiges Element Rr liest, bestimmt das ablauffähige Element, welchen der Puffer 72 oder 74 der Indikator 76 als den Puffer angibt, aus dem gelesen werden soll. Das ablauffähige Element liest die gewünschten kohärenten Daten aus dem angegebenen Puffer 72 oder 74. Wenn ein ablauffähiges Element Rw schreibt, bestimmt das ablauffähige Element, welchen der Puffer 72 oder 74 der Indikator 76 als auszulesen angibt, und schreibt in den Puffer 72 oder 74, den der Indikator 76 nicht angibt bzw. auf den er nicht zeigt. Mit anderen Worten zeigt der Indikator immer auf den Lesepuffer, so dass der andere Puffer implizit als Schreibpuffer angegeben wird. Ein Synchronisationsprotokoll, das nachstehend beschrieben wird, wird kombiniert mit den Puffern 72 und 74, einer zum Lesen und der andere zum Aktualisieren/Schreiben, verwendet, und der Indikator 76 ermöglicht es dem System 70, ein einziges Schreibelement zu nutzen, bei dem es sich um eine weit verbreitete Standardausführung für sicherheitskritische Software-Anwendungen handelt, wodurch die Kosten gering gehalten werden, während aktualisierte Kerndaten ohne die Verzögerung von Sperrmechanismen, Wartezeiten, teure Bauteile oder das Risiko von Fehlern des ablauffähigen Elements, wie zuvor beschrieben, bereitgestellt werden.
  • Zurück zu 2 wird zum Zeitpunkt t0, der in Punkt 82 gezeigt wird, der Puffer 74 von dem Indikator 76 als der Puffer gezeigt, aus dem gelesen werden soll, wie durch den Pfeil 78 gezeigt. Der Puffer 72 wird von dem Indikator 76 als der Puffer angegeben, in den geschrieben werden soll oder der aktualisiert werden soll, wie durch den gestrichelten Pfeil 80 gezeigt. Zum Zeitpunkt t1, der in Punkt 84 gezeigt wird, ist das Schreiben in den Puffer 72 beendet und der Indikator 76 schaltet um. Somit zeigt der Indikator 76 auf den Puffer 72 als den Puffer, aus dem gelesen werden soll, wie durch den Pfeil 78 gezeigt, während der Puffer 74 als der Puffer gezeigt wird, in den geschrieben werden soll. Zum Zeitpunkt t2, der in Punkt 86 gezeigt wird, hat der Indikator wieder umgeschaltet, so dass der Puffer 74 den Pfeil 78 aufweist, der auf den Puffer 74 als den Lesepuffer zeigt, während der Puffer 72 von dem Indikator 76 als der Schreibpuffer angegeben wird, wie durch den gestrichelten Pfeil 80 gezeigt. Auf diese Art und Weise werden die kohärenten Daten nie durch die ablauffähigen Elemente blockiert, wobei das Risiko, dass kohärente Daten gelesen werden, wenn sie nur teilweise aktualisiert sind, nicht vorkommt. Somit stellt das System 70 im Betrieb einen einzigen Schreibvorgang auf einmal bereit, verfügt über die Fähigkeit mehrerer paralleler Lesevorgänge, erfordert keine globale (d.h. Multicore-)Planungssteuerung, und Zugriffe auf die kohärenten Daten können mit unterschiedlichen Arbeitsschrittfrequenzen des Betriebssystems und auf unterschiedlichen Kernen erfolgen.
  • 3 ist ein Ablaufdiagramm eines Synchronisationsprotokolls oder Algorithmus 90 für den Leseabschnitt des Systems 70, der funktioniert, um einen parallelen Zugriff des Indikators 76 auf verschiedene Kerne oder ablauffähige Elemente zu verhindern. In dem Kästchen 92 wird das Steuerprogramm des Betriebssystems (OS) des Host-Kerns (nur für Host-Kern), d.h. den Kern, auf dem der aktuelle Code ausgeführt wird, gesperrt, um sicherzustellen, dass keine Vorwegnahme durch einen Arbeitsschritt höherer Priorität erfolgt. In dem Kästchen 94 wird der Indikator 76 lokal in dem ablauffähigen Leseelement gespeichert, um zu verhindern, dass es auf Grund des zuvor beschriebenen Umschaltprozesses des Indikators 76 zu einer Verfälschung kommt. Dann werden die kohärenten Daten in dem Kästchen 96 aus dem angegeben Lesepuffer gelesen. An der Entscheidungsraute 98 überprüft der Algorithmus, ob der Indikator 76 auf einen anderen Puffer umgeschaltet hat. Falls der Indikator 76 nun auf einen anderen Puffer zeigt, bedeutet dies, dass der soeben ausgelesene Puffer irgendwann während des vorherigen Lesezugriffs 96 zum Schreibpuffer geworden ist, so dass die soeben gelesenen Daten vielleicht nicht kohärent sind. Falls der Indikator 76 umgeschaltet hat, müssen die Daten erneut gelesen werden, der Algorithmus kehrt zum Kästchen 94 zurück und speichert den Indikator wieder lokal, wodurch die zuletzt aktualisierten kohärenten Daten bereitgestellt werden. Falls an der Entscheidungsraute 98 der Indikator 76 die Puffer nicht umgeschaltet hat, seit der Indikator lokal in dem Kästchen 94 gespeichert wurde, ist die Kohärenz der Datenauslesung garantiert, das OS-Steuerprogramm wird freigegeben, was bedeutet, dass ein kohärenter Datenlesezugriff an dem Host-Kern in dem Kästchen 100 fertiggestellt wurde.
  • 4 ist ein Ablaufschema eines Synchronisationsprotokolls oder Algorithmus 110 für den Schreibabschnitt des zuvor beschriebenen Systems 70. In dem Kästchen 112 wird das OS-Steuerprogramm des Host-Kerns derart gesperrt, dass die Vorwegnahme durch einen Arbeitsschritt höherer Priorität verhindert wird. In dem Kästchen 114 werden die kohärenten Daten in den Puffer geschrieben, der von dem Indikator 76 als Schreibpuffer angegeben wird. In dem Kästchen 116 schaltet der Indikator 76 um, um die aktualisierten Daten als den Lesepuffer anzugeben, weil soeben in dem Kästchen 114 ein neuer Schreibvorgang beendet wurde. In dem Kästchen 118 wird das OS-Steuerprogramm an dem Host-Kern freigegeben. Die Puffer 72 und 74 schalten, wie zuvor mit Bezug auf 2 beschrieben, unter Verwendung der Algorithmen 90 und 110 von Lesepuffer und Schreibpuffer um. Der Schreibalgorithmus 110 ist einfacher als der Lesealgorithmus 90, weil der Schreibalgorithmus 110 sich nicht um den Leseprozess kümmern muss. Der Lesealgorithmus 90 überprüft, wann der Indikator 76 umschaltet, was gut funktioniert, weil der Schreibalgorithmus 110, obwohl er einfacher ist, länger als der Lesealgorithmus 90 braucht, um zu Ende zu gehen. Der Zweck des Sperrens des OS-Steuerprogramms besteht wiederum darin, sicherzustellen, dass entweder der Schreibzugriff oder der Lesezugriff auf die kohärenten Daten so schnell wie möglich beendet werden kann.
  • 5 bildet ein ablauffähiges Software-Element R1 ab, das in dem Kästchen 120 gezeigt wird, das mit einer Arbeitsschrittfrequenz von 2,5 Millisekunden läuft und in dem Kästchen 122 einen Satz von kohärenten Signalen S bereitstellt, wobei es sich um einen Satz von Signalen handelt, auf die kohärent zugegriffen werden soll, wie etwa die zuvor beschriebenen X-, Y- und Z-Koordinaten. Zwei Puffer, wie etwa die zuvor beschriebenen Puffer 74 und 76, werden für den Satz von kohärenten Signalen S erstellt. Gleichzeitig mit der Erstellung der Puffer 72 und 74 wird eine Variable „read_index” erstellt, die als der Indikator 76 gezeigt wird, um anzugeben, welcher der beiden Puffer 72 und 74 für den Lesezugriff verwendet werden soll. Der andere Puffer wird für den Schreibzugriff nur zu diesem Zeitpunkt verwendet. Das Umschalten erfolgt, wie in 2 zuvor beschrieben, d.h. zu jedem beliebigen Zeitpunkt ist ein Puffer der Lesepuffer und der andere Puffer ist der Schreibpuffer.
  • 6 bis 8 bilden eine beispielhafte Zeitachse ab, die das ablauffähige Software-Element R1 der 5 im Betrieb im Verlauf der Zeit zeigt. In 6 wird in den Kästchen 132, 134 und 136 R1 alle 2,5 Millisekunden ausgeführt. Sobald somit R1 in dem Kästchen 132 ausgeführt wird, wird 2,5 Millisekunden später R1 wieder in dem Kästchen 134 ausgeführt, dann 2,5 Millisekunden danach wird R1 in dem Kästchen 136 wieder ausgeführt. Am Ende jeder Ausführung in den Kästchen 132, 134 und 136 schaltet der Indikator 76 den Lesepuffer und den Schreibpuffer um, weil R1 alle 2,5 Millisekunden einen neuen Satz von Signalen S erzeugt. Die einzelnen Signale von S können jederzeit während der R1-Ausführung in den Kästchen 132, 134 und 136 erzeugt werden. In dem Kästchen 138 muss ein anderes ablauffähiges Software-Element R2 S asynchron und kohärent lesen. Das ablauffähige Software-Element R2 in dem Kästchen 138 vergleicht „read_index”, d.h. die Angabe des Indikators 76 mit einem Lese-Anfang und einem Lese-Ende unter Verwendung des Algorithmus 90. Falls der Indikator 76 sich nicht ändert, wurde der kohärente Datenlesevorgang erfolgreich beendet, weil der Lesepuffer immer kohärente Daten enthält.
  • 7 ist eine andere Zeitachse, welche die ablauffähigen Software-Elemente R1 und R2 im Verlauf der Zeit abbildet. Wie in 7 gezeigt, falls der Indikator 76 während des Lesezugriffs von dem Zeigen beispielsweise auf den Puffer 72 auf den Puffer 74 umgeschaltet hat, werden die Daten, die von dem ablauffähigen Software-Element R2 gelesen wurden, in dem Kästchen 140 wiederholt, bis von dem Indikator 76 zwischen dem Anfang des Lesevorgangs und dem Ende des Lesevorgangs in dem Kästchen 132 keine Änderung erkannt wird.
  • 8 ist eine andere Zeitachse, welche die ablauffähigen Software-Elemente R1 und R2 abbildet, die eine erweiterte Ausführungszeit von R1 in dem Kästchen 132 zeigt, wobei die Signale S während des Lesevorgangs des zweiten ablauffähigen Software-Elements R2 in dem Kästchen 138 aktualisiert werden. Das zweite ablauffähige Software-Element R2 liest wieder in dem Kästchen 140, und in dem Kästchen 140 beendet R2 den Lesevorgang, bevor S am Ende der Ausführung in dem Kästchen 134 wieder aktualisiert wird (wenn der Indikator 76 umschaltet).
  • Der Vorteil, der von dem hier beschriebenen System und Verfahren bereitgestellt wird, ist ein System, das wartefrei und sperrfrei ist und das gewährleistet, dass der Schreibvorgang und der Lesevorgang bei Vorliegen eines parallelen Zugriffs ohne Prioritätsumkehrung fortfahren. Die Daten, auf die zugegriffen wird, sind mit Sicherheit kohärent.
  • Wie es der Fachmann sehr wohl verstehen wird, können sich die mehreren und diversen Schritte und Prozesse, die hier besprochen wurden, um die Erfindung zu beschreiben, auf Arbeitsabläufe beziehen, die von einem Computer, einem Prozessor oder einer anderen elektronischen Rechenvorrichtung ausgeführt werden, die Daten unter Verwendung eines elektrischen Phänomens manipuliert und/oder umformt. Derartige Computer und elektronische Vorrichtungen können diverse flüchtige und/oder nicht flüchtige Speicher verwenden, wozu ein nicht vorübergehendes computerlesbares Medium gehört, auf dem ein ausführbares Programm gespeichert ist, das diversen Code oder ausführbare Anweisungen umfasst, die von dem Computer oder Prozessor ausgeführt werden können, wobei der Speicher und/oder das computerlesbare Medium alle Formen und Arten von Speichern und anderen computerlesbaren Medien umfassen können.
  • Die vorstehende Diskussion offenbart und beschreibt rein beispielhafte Ausführungsformen der vorliegenden Erfindung. Der Fachmann wird aus dieser Diskussion und aus den beiliegenden Zeichnungen und Ansprüchen ohne Weiteres erkennen, dass diverse Änderungen, Modifikationen und Variationen daran vorgenommen werden können, ohne Geist und Umfang der Erfindung, wie sie in den nachstehenden Ansprüchen definiert wird, zu verlassen.

Claims (10)

  1. Verfahren zum Zugreifen auf kohärente Daten auf einem Controller, wobei das Verfahren folgende Schritte umfasst: – Bereitstellen eines ersten Puffers und eines zweiten Puffers, die jeweils gelesen oder beschrieben werden können; – Bereitstellen eines Indikators, der angibt, welcher von dem ersten oder dem zweiten Puffer ausgelesen wird, während der andere von dem ersten oder dem zweiten Puffer beschrieben wird; – Ausführen eines Lese-Synchronisationsprotokolls, das es ermöglicht, die kohärenten Daten aus dem Puffer, den der Indikator als Lesepuffer angibt, ausgelesen werden; und – Ausführen eines Schreib-Synchronisationsprotokolls, das es ermöglicht, die kohärenten Daten in den Puffer, den der Indikator als Schreibpuffer angibt, geschrieben werden.
  2. Verfahren nach Anspruch 1, wobei die kohärenten Daten, die zusammen geschrieben werden sollen, zu Datengruppen zusammengefasst werden.
  3. Verfahren nach Anspruch 1, wobei die kohärenten Daten atomare Elemente von ausführbaren Programmen sind.
  4. Verfahren nach Anspruch 1, wobei der Indikator bei der Beendigung des Schreibprozesses vom Angeben des Schreibpuffers zum Angeben des Schreibpuffers als Lesepuffer umschaltet.
  5. Verfahren nach Anspruch 1, wobei das Ausführen des Lese-Synchronisationsprotokolls ferner das Speichern des Indikators lokal in einem ablauffähigen Lese-Element umfasst, um zu verhindern, dass es zu einer Verfälschung kommt, weil der Indikator die Angabe ändert, welcher Puffer der Lesepuffer ist und welcher Puffer der Schreibpuffer ist.
  6. Verfahren nach Anspruch 5, wobei das Ausführen des Lese-Synchronisationsprotokolls ferner das Bestimmen umfasst, ob der Indikator während des Lesevorgangs die Angabe geändert hat, welcher Puffer der Lesepuffer ist und welcher Puffer der Schreibpuffer ist, und wenn ja, erneutes lokales Speichern des Indikators und erneutes Lesen, um die neuesten aktualisierten kohärenten Daten zu erzielen.
  7. Verfahren nach Anspruch 1, wobei das Ausführen des Schreib-Synchronisationsprotokolls ferner das Sperren eines Steuerprogramms des Betriebssystems eines Host-Kerns umfasst, so dass die kohärenten Daten in den Schreibpuffer geschrieben werden können, ohne Vorwegnahme durch einen Arbeitsschritt höherer Priorität, so dass das Schreiben der kohärenten Daten so schnell wie möglich erfolgt.
  8. System zum Zugreifen auf kohärente Daten auf einem Controller, wobei das System Folgendes umfasst: – erste und zweite Puffer, die jeweils gelesen oder beschrieben werden können; – einen Indikator, der angibt, welcher von dem ersten oder dem zweiten Puffer ausgelesen wird, während der andere von dem ersten oder dem zweiten Puffer beschrieben wird; – ein Lese-Synchronisationsprotokoll, das es ermöglicht, die kohärenten Daten aus dem Puffer, den der Indikator als Lesepuffer angibt, auszulesen; und – ein Schreib-Synchronisationsprotokoll, das es ermöglicht, die kohärenten Daten in den Puffer, den der Indikator als Schreibpuffer angibt, zu schreiben.
  9. System nach Anspruch 8, wobei die kohärenten Daten atomare Elemente von ausführbaren Programmen sind.
  10. System nach Anspruch 8, wobei der Indikator bei der Beendigung des Schreibprozesses vom Angeben des Schreibpuffers zum Angeben des Schreibpuffers als Lesepuffer umschaltet.
DE102015107654.3A 2014-05-15 2015-05-15 Dienst und System zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller Pending DE102015107654A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/278,797 2014-05-15
US14/278,797 US9720742B2 (en) 2014-05-15 2014-05-15 Service and system supporting coherent data access on multicore controller

Publications (1)

Publication Number Publication Date
DE102015107654A1 true DE102015107654A1 (de) 2015-11-19

Family

ID=54361848

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015107654.3A Pending DE102015107654A1 (de) 2014-05-15 2015-05-15 Dienst und System zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller

Country Status (3)

Country Link
US (1) US9720742B2 (de)
CN (1) CN105094084B (de)
DE (1) DE102015107654A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9871610B2 (en) * 2015-10-30 2018-01-16 Citrix Systems, Inc. Method for packet scheduling using multiple packet schedulers
WO2017094162A1 (ja) * 2015-12-03 2017-06-08 三菱電機株式会社 多重系システム
CN107305525A (zh) * 2016-04-22 2017-10-31 上海真虹信息科技有限公司 一种基于双缓冲同步机制的测试数据处理方法
CN107678862B (zh) * 2017-10-10 2021-04-13 中电科航空电子有限公司 一种解决arinc661规范中竞态条件的方法
FR3084500B1 (fr) * 2018-07-26 2020-07-03 Thales Procede et dispositif electronique d'installation logicielles avioniques sur une plateforme comprenant un processeur multicoeurs, programme d'ordinateur et systeme electronique associes
CN109976675B (zh) * 2019-04-01 2023-02-03 广州市百果园信息技术有限公司 一种数据更新、读取方法、装置、设备及存储介质
US11975714B2 (en) 2019-11-01 2024-05-07 GM Global Technology Operations LLC Intelligent vehicles with distributed sensor architectures and embedded processing with computation and data sharing
WO2021189382A1 (en) * 2020-03-26 2021-09-30 Nokia Shanghai Bell Co., Ltd. Scheduling release feedback

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399467A (en) * 1981-10-13 1983-08-16 Ncr Canada Ltd. Method and apparatus for image data compression and decompression
US5365283A (en) * 1993-07-19 1994-11-15 Texas Instruments Incorporated Color phase control for projection display using spatial light modulator
US5727233A (en) * 1994-08-02 1998-03-10 Apple Computer, Inc. Byte-mode and burst-mode data transfer mechanism for a high-speed serial interface
US6173442B1 (en) 1999-02-05 2001-01-09 Sun Microsystems, Inc. Busy-wait-free synchronization
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7577798B1 (en) 2004-12-30 2009-08-18 Sun Microsystems, Inc. Space-adaptive lock-free queue using pointer-sized single-target synchronization
JP4749002B2 (ja) * 2005-02-25 2011-08-17 ルネサスエレクトロニクス株式会社 データ転送装置、画像処理装置及びデータ転送制御方法
US7484028B2 (en) * 2005-12-20 2009-01-27 Fujitsu Limited Burst-capable bus bridges for coupling devices to interface buses
US9448856B2 (en) 2005-12-30 2016-09-20 Level 3 Communications, Llc Lock-free dual queue with condition synchronization and time-outs
US7571301B2 (en) 2006-03-31 2009-08-04 Intel Corporation Fast lock-free post-wait synchronization for exploiting parallelism on multi-core processors
US7747996B1 (en) 2006-05-25 2010-06-29 Oracle America, Inc. Method of mixed lock-free and locking synchronization
JP5448355B2 (ja) * 2007-05-23 2014-03-19 京セラドキュメントソリューションズ株式会社 ステッピングモータ制御装置、画像形成装置、ステッピングモータ、およびステッピングモータの制御方法
US8804212B2 (en) * 2007-05-23 2014-08-12 Kyocera Document Solutions Inc. Stepping motor control device capable of reducing load on CPU
US8279796B1 (en) * 2007-11-16 2012-10-02 Bnsf Railway Company Multiple-channel software defined radios and systems using the same
US8095727B2 (en) 2008-02-08 2012-01-10 Inetco Systems Limited Multi-reader, multi-writer lock-free ring buffer
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US8321635B2 (en) * 2010-11-08 2012-11-27 Lsi Corporation Synchronizing commands for preventing data corruption
US8504864B2 (en) 2010-12-01 2013-08-06 GM Global Technology Operations LLC Data sensor coordination using time synchronization in a multi-bus controller area network system
US9619417B2 (en) * 2011-06-17 2017-04-11 Alcatel Lucent Method and apparatus for remote delivery of managed USB services via a mobile computing device
US9378072B2 (en) * 2014-05-30 2016-06-28 GM Global Technology Operations LLC Mechanisms and apparatus for embedded controller reconfigurable inter-processor communications

Also Published As

Publication number Publication date
CN105094084A (zh) 2015-11-25
US9720742B2 (en) 2017-08-01
US20150331829A1 (en) 2015-11-19
CN105094084B (zh) 2018-04-13

Similar Documents

Publication Publication Date Title
DE102015107654A1 (de) Dienst und System zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller
EP2807558A1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen
DE102014201682A1 (de) Verfahren zur Koexistenz von Software mit verschiedenen Sicherheitsstufen in einem Multicore-Prozessorsystem
DE102013014172A1 (de) Schutz globaler register in einem multithreaded-prozessor
EP2698678B1 (de) Konfigurationstechnik für ein Steuergerät mit miteinander kommunizierenden Anwendungen
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE112015007104T5 (de) Datenverarbeitungsvorrichtung, Datenverarbeitungsverfahren und Datenverarbeitungsprogramm
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE102021130897A1 (de) Elektronische steuerungseinheit, softwareaktualisierungsverfahren, softwareaktualisierungsprogramm und elektronisches steuerungssystem
DE112016004301T5 (de) Vornehmen einer flüchtigen Fehleratomarität von Isolierungstransaktionen in einem nichtflüchtigen Speicher
DE102004061339A1 (de) Scheduling-Verfahren, insbesondere Kontex-Scheduling-Verfahren, und Einrichtung zur Verwendung bei einem Scheduling-Verfahren
DE102017119065B4 (de) Aktualisieren eines Speichers
DE102021131057A1 (de) System und Verfahren zur Ausführung einer Aufgabe eines Betriebssystems für ein Fahrzeug
DE102016224206A1 (de) Fahrzeugsteuervorrichtung
DE112004001564T5 (de) Low-contention Lock
US9710313B2 (en) Method and system for ensuring integrity of critical data
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE112015007097T5 (de) Übertragungssteuervorrichtung, Fahrzeug und Übertragungssteuerverfahren
DE102016203283A1 (de) Verfahren zum Betreiben eines Mikroprozessors
DE102017200571A1 (de) Datenverarbeitungseinrichtung
DE102007015507A1 (de) Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
DE102013204045B4 (de) Mikrocomputer
WO2017153411A1 (de) Verfahren zum betreiben eines steuergeräts für ein kraftfahrzeug
DE102017211564A1 (de) Elektronische steuereinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: SCHWEIGER, MARTIN, DIPL.-ING. UNIV., DE