DE102016211286A1 - Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren - Google Patents

Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren Download PDF

Info

Publication number
DE102016211286A1
DE102016211286A1 DE102016211286.4A DE102016211286A DE102016211286A1 DE 102016211286 A1 DE102016211286 A1 DE 102016211286A1 DE 102016211286 A DE102016211286 A DE 102016211286A DE 102016211286 A1 DE102016211286 A1 DE 102016211286A1
Authority
DE
Germany
Prior art keywords
core
processor
processor core
processors
main processor
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.)
Withdrawn
Application number
DE102016211286.4A
Other languages
English (en)
Inventor
Uwe Eckelmann-Wendt
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Priority to DE102016211286.4A priority Critical patent/DE102016211286A1/de
Priority to EP17733365.5A priority patent/EP3449366A1/de
Priority to PCT/EP2017/063260 priority patent/WO2017220305A1/de
Priority to US16/311,970 priority patent/US11301308B2/en
Priority to CN201780038482.1A priority patent/CN109313581B/zh
Publication of DE102016211286A1 publication Critical patent/DE102016211286A1/de
Withdrawn 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level

Landscapes

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

Abstract

Es wird ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren (MC1, MC2) vorgeschlagen, wobei ein erster (MC1) und ein zweiter Mehrkernprozessor (MC2) jeweils umfassend einen Hauptprozessorkern (A1, A2) und mindestens einen Nebenprozessorkern (B1, B2, B3, B4) bereitgestellt wird, der zur Abarbeitung von Nutzprogrammen dient. Nur die Hauptprozessorkerne (A1, A2) der verschiedenen Mehrkernprozessoren (MC1, MC2) synchronisieren miteinander. Der mindestens eine Nebenprozessorkern (B1, B2, B3, B4) wird durch den jeweiligen Hauptprozessorkern (A1, A2) in jedem Mehrkernprozessor (MC1, MC2) gesteuert. Die Nutzprogramme werden durch den mindestens einen Nebenprozessorkern (B1, B2, B3, B4) bearbeitet und Ausgaben erzeugt, die dem jeweiligen Hauptprozessorkern (A1, A2) des gleichen Mehrkernprozessors (MC1, MC2) zur Verfügung gestellt werden. Ausgaben der Mehrzahl von Mehrkernprozessoren (MC1, MC2) werden dann durch den jeweiligen Hauptprozessorkern (A1, A2) synchron ausgegeben.

Description

  • Die Erfindung betrifft ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren. Ferner betrifft die Erfindung ein Mehrkernprozessorsystem, das derart ausgebildet ist, das Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren durchzuführen.
  • Für sicherheitstechnische Anwendungen werden typischerweise Verfahren verwendet, bei dem mehrere Prozessoren (mehrere CPUs) mittels Hardwareunterstützung so synchron ihre Programme abarbeiten, dass ihre generierten Ausgaben quasi zeitgleich sind (innerhalb von µs). Jeder dieser Ausgabepfade, über den eine Ausgabe erfolgt, wird im Folgenden auch als Kanal bezeichnet. Es können diese Ausgaben während der Ausgabe hardwaretechnisch miteinander durch zum Beispiel einen Voterbaustein verglichen werden. Bei beispielsweise drei Prozessoren, die jeweils separate Ausgaben erzeugen (drei Kanäle) kann dann eine Abweichung von einer Ausgabe erkannt werden und in Folge dieser spezielle Prozessor bzw. der entsprechende Kanal ausgegrenzt werden. Bei beispielsweise zwei Prozessoren werden bei Abweichungen untereinander beide Prozessoren ausgegrenzt und von der Peripherie getrennt, da nicht entschieden werden kann, welcher von beiden die richtigen Ausgaben erzeugt.
  • Interrupts bezeichnen Unterbrechungen eines laufenden Programms um beispielsweise Programme bzw. Tasks mit höherer Priorität abzuarbeiten. Dazu wird das laufende Programm an einer bestimmten Stelle unterbrochen und nach Abarbeitung des Interrupts an dieser Stelle wieder fortgeführt. Bei hardwaresynchronisierten Systemen bzw. miteinander synchronisierten Prozessoren, die also beispielsweise zeitlich mit einer Präzision von < 1µs abgestimmt sind, werden Interrupts derart eingespeist, dass bei jedem Prozessor der Interrupt auf genau dem gleichen Maschinenbefehl des ausgeführten Programms unterbricht. Ferner werden die Eingaben derart auf die Prozessoren verteilt, dass die verschiedenen Prozessoren immer exakt identische Eingabedaten erhalten.
  • Damit die Ausgaben der Prozessoren zeitlich so nahe beieinanderliegen, müssen die Laufzeitdifferenzen der Kanäle bzw. der Prozessoren (hervorgerufen durch leicht unterschiedliche Quarze und gelegentlich durch eine unterschiedliche Anzahl von Zyklen für einen Maschinencode) durch Wartezeiten des schnelleren Prozessors auf den langsameren Prozessor ausgeglichen werden. Dazu kann man beispielsweise den kompletten Programmcode so instrumentieren, dass sehr häufig ein Synchronisationsaufruf generiert wird, der eine Synchronisation per Hardware auslöst. In anderen Ausführungen wird die Synchronisation als Nebeneffekt von Ein-/Ausgabe-Befehlen oder nach einer bestimmten Anzahl von Speicherzugriffen ausgelöst. Da mittlerweile bei modernen Prozessoren kein Zugriff auf die internen Busse des Prozessors existiert, hilft jedoch meist die Software der Hardwaresynchronisationseinheit durch häufiges Aufrufen einer kurzen Funktion, die der Hardware den Synchronisationsanstoß gibt. Nur zu Synchronisationszeitpunkten ist es möglich, ein Interrupt einzuspeisen. Das regelmäßige Uhreninterrupt (z. B. alle 20 ms) wie andere Interrupts werden also auf allen Prozessoren dann verarbeitet, wenn wieder gerade ein Synchronisationsaufruf (besonderer Aufruf zur Synchronisation) seitens des ausgeführten Programmes erfolgt bzw. erfolgt ist.
  • Problematisch ist jedoch, dass diese Verfahren nicht ohne weiteres geeignet sind für den Betrieb von Mehrkernprozessoren statt Einkernprozessoren, d. h. für Prozessoren mit mehr als einem Prozessorkern oder auch hyperthreadingfähige Prozessoren, die also einen zweiten virtuellen Prozessorkern zur Verfügung stellen. Bisher hat man diese zusätzlichen Prozessorkerne im synchronisierten Betrieb totgelegt, d. h. im synchronisierten Betrieb nicht verwendet.
  • Eine Schwierigkeit besteht nämlich darin, dass die Prozessorkerne zeitlich vollkommen unabhängig voneinander agieren. Die Synchronisierlogik der Hardware kann dabei nicht unterscheiden, welcher der Prozessorkerne synchronisiert. Die Synchronisationsausgaben der verschiedenen Prozessorkerne eines Prozessors behindern sich somit gegenseitig. Beispielsweise kann ein toter Prozessorkern, bzw. ein Prozessorkern mit nicht mehr laufendem Programm bzw. Software, nicht erkannt werden, da der noch arbeitende Prozessorkern weitersynchronisiert.
  • Daher wurde bisher in hardwaresynchronen Systemen nur je ein Prozessorkern pro Kanal ausgenutzt. Sollten also mehrere Prozessorkerne oder auch weitere Hyperthreading-Kerne zur Verfügung stehen, so wurden diese Rechenkapazitäten nicht genutzt, sondern abgeschaltet falls vorhanden. Hardwaresynchrone Systeme sind also bisher reine Einzelprozessorkern-Systeme pro Kanal. Nachteilig werden dadurch Mehrkernprozessoren oder Prozessoren mit Hyperthreadingfähigkeit nur zu entsprechenden Bruchteilen ausgelastet. Um mehr nebenläufige Rechenkraft zu generieren, müssen bisher also demnach mehrere hardwaresynchrone Systeme parallel betrieben werden, was entsprechend höheren Hardwareaufwand bedeutet.
  • Die Aufgabe besteht daher darin, ein Verfahren zu entwickeln, das einen hardwaresynchronen Betrieb unter der Benutzung von Mehrkernprozessoren ermöglicht, bei dem die Rechenleistung der zusätzlichen Prozessorkerne nicht ungenutzt bleibt.
  • Das erfindungsgemäße Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren umfasst grundsätzlich folgende Schritte: a) Bereitstellen eines ersten Mehrkernprozessors und eines zweiten Mehrkernprozessors jeweils umfassend einen Hauptprozessorkern und mindestens einen Nebenprozessorkern, der zur Abarbeitung von Nutzprogrammen dient. In einem nächsten Schritt b) erfolgt das Synchronisieren des ersten Mehrkernprozessors mit dem zweiten Mehrkernprozessor derart, dass nur der jeweilige Hauptprozessorkern des ersten Mehrkernprozessors mit dem Hauptprozessorkern des zweiten Mehrkernprozessors synchronisiert. In einem weiteren Schritt c) erfolgt das Steuern des mindestens einen Nebenprozessorkerns durch den jeweiligen Hauptprozessorkern in jedem Mehrkernprozessor. In einem weiteren Schritt d) werden die Nutzprogramme durch den mindestens einen Nebenprozessorkern bearbeitet und Ausgaben erzeugt, die dem jeweiligen Hauptprozessorkern des gleichen Mehrkernprozessors zur Verfügung gestellt werden. In einem letzten Schritt e) wird das synchrone Ausgeben von Ausgaben der Mehrzahl von Mehrkernprozessoren durch den jeweiligen Hauptprozessorkern realisiert.
  • Das Verfahren hat den Vorteil, dass die Synchronisation lediglich durch den Hauptprozessorkern eines jeden Mehrkernprozessors erfolgt und der oder die weiteren Nebenprozessorkerne diese Synchronisation nicht stören. Die jeweiligen Hauptprozessorkerne agieren somit als Synchronisationsmaster. Die Nebenprozessorkerne dienen dabei lediglich als Slave-Rechenknechte, d. h. es werden die anstehenden Nutzprogramme an die Nebenprozessorkerne übergeben, abgearbeitet und dann die Ausgaben dem jeweiligen Hauptprozessorkern wieder zur Verfügung gestellt. Als Nutzprogramme kommen hierbei Applikationen, Anwendungssoftware, Rechenprogramme, Tasks sowie jede Form von Programmen in Frage, die von Prozessorkernen bearbeitet werden können. Durch die Übergabe der Ausgaben an die Hauptprozessorkerne werden die Ausgaben in die Synchronisation der Hauptprozessorkerne gehoben. Die Nebenprozessorkerne synchronisieren somit nicht selbst sondern laufen weitestgehend autark. Somit kann vorteilhaft die Rechenleistung der Nebenprozessorkerne ausgenutzt werden, ohne dass es dabei zu Synchronisationsstörungen kommt, da diese Aufgabe lediglich von dem jeweiligen Hauptprozessorkern ausgeübt wird. Durch diese funktionale Aufteilung der Nutzprogramme auf mehrere Prozessorkerne und die entsprechenden Nebenläufigkeiten kann eine lineare Steigerung der Rechenleistung gemäß der Anzahl der Prozessorkerne erfolgen. Das erlaubt es, auf parallele Zusatzrechner zu verzichten und somit günstigere und kompaktere Bauformen zu ermöglichen.
  • Vorteilhafterweise erfolgt Ein-/Ausgabe lediglich über die jeweiligen Hauptprozessorkerne. Dadurch werden die Nebenprozessorkerne lediglich über die Hauptprozessorkerne steuerbar gemacht. Nur die Hauptprozessorkerne „kommunizieren“ somit mit der Peripherie.
  • Bevorzugt findet die Kommunikation zwischen dem Hauptprozessorkern und dem mindestens einen Nebenprozessorkern durch Nachrichten mittels eines gemeinsam genutzten Speichers (Shared Memory) statt. Hierzu können beispielsweise mittels Virtualisierungsunterstützungen die Nebenprozessorkerne als virtuelle Prozessorkerne betrieben werden, wobei auf diesen Kernen ein Betriebssystem bereit gestellt werden kann, das eine Kommunikation zwischen Prozessorkernen mittels Nachrichtenaustausch ermöglicht. Der Transfer der Nachrichten kann dabei beispielsweise mittels Verriegelungsprotokoll über gemeinsame Speicherbereiche (Shared Memory Bereiche) erfolgen, um Zugriffskonflikte zu vermeiden. Der Hauptprozessorkern hat hierbei die Speicheraufteilung eingerichtet.
  • Der Hauptprozessorkern übergibt bevorzugt dem mindestens einen jeweiligen Nebenprozessorkern des entsprechenden Mehrkernprozessors ein Uhrzeitinkrement. Das Uhrzeitinkrement ist dabei als eine in regelmäßigen Zeitschritten bzw. Zeitintervallen aktualisierte Uhr zu verstehen. Die Nebenprozessorkerne je Hauptprozessorkern haben somit synchron das gleiche Uhrzeitinkrement zur Verfügung. Dieses kann beispielsweise alle 20 ms erfolgen. Somit werden den Nebenprozessorkernen die Abarbeitung von anstehenden, rechenwilligen Tasks bzw. Programmen in regelmäßigen Abständen eingeräumt. Diese können vom Hauptprozessorkern auf die Nebenprozessorkerne auf bestimmte Weise verteilt werden, wobei diese Verteilung in jedem Mehrkernprozessor in gleicher Weise geschieht.
  • Bevorzugt ist in die Nutzprogramme bzw. Betriebssysteme wiederkehrender Systemaufruf implementiert. Ein solcher Systemaufruf kann beispielsweise ein Synchronisationsanstoß sein.
  • Dabei wird vorzugsweise durch den Systemaufruf in dem jeweiligen mindestens einen Nebenprozessorkern eine erste Bearbeitungsphase ausgeführt, in der das Empfangen und Senden von Nachrichten zwischen dem mindestens einen Nebenprozessorkern und dem jeweiligen Hauptprozessorkern durchgeführt wird und dabei eine zweite Bearbeitungsphase unterbrochen wird, in der die Nutzprogramme in dem mindestens einem Nebenprozessorkern abgearbeitet werden. Die erste Bearbeitungsphase findet somit in der Unterbrechung der zweiten Bearbeitungsphase statt. In dieser zweiten Bearbeitungsphase findet die eigentliche Abarbeitung der Programme statt, in der auch das jeweilige Betriebssystem der Nebenprozessorkerne läuft. Die zweite Bearbeitungsphase bekommt somit von der jeweiligen ersten Bearbeitungsphase nichts mit.
  • In der ersten Bearbeitungsphase werden das Empfangen und Senden von Nachrichten zwischen dem mindestens einen Nebenprozessorkern und dem jeweiligen Hauptprozessorkern bevorzugt zu einem synchronen Zeitpunkt ausgeführt. Dadurch kann in jedem Hauptprozessorkern die Ausgabe zur identischen Zeit anliegen und weiterverarbeitet werden ohne unerwünschte Abweichungen zu erzeugen. Der synchrone Zeitpunkt kann durch aktives Warten auf ein Uhrzeitinkrement erzielt werden. Dies kann beispielsweise alle 100 ms oder alle 200 ms erfolgen.
  • Die erste Bearbeitungsphase kann eine Verzögerung der Reaktion auf ein Uhrzeitinkrement in dem mindestens einen Nebenprozessorkern auf Basis der innerhalb einer Zeit zwischen zwei Uhrzeitinkremente gezählten Systemaufrufe erzeugen. Dadurch werden Laufzeitunterschiede vorteilhaft ausgeglichen und die Nebenprozessorkerne laufen entsprechend gleichläufiger.
  • Bevorzugt werden Nutzprogramme in den Nebenprozessoren abgearbeitet, deren Ausgaben nach einer Verzögerungszeit, die größer als die Laufzeit der Nutzprogramme ist, synchron an die Hauptprozessorkerne übergeben werden. Die Verzögerungszeit ist dabei entsprechend so zu wählen, dass die zu berechnenden Ausgaben bei Ablauf der Verzögerungszeit vorliegen, so
  • dass eine synchrone Übergabe an den Hauptprozessorkern möglich wird. Zum Beispiel können die Laufzeiten der Nutzprogramme vorher bekannt sein. Auf den Ablauf der Verzögerungszeit wird aktiv gewartet.
  • Mindestens ein Prozessorkern des mindestens einen Nebenprozessorkerns kann als Hyperthreading-Kern ausgebildet sein. Das Verfahren kann somit auch auf hyperthread-fähige Prozessoren angewendet werden, die virtuelle Prozessorkerne zur Verfügung stellen.
  • Ferner wird ein Mehrkernprozessorsystem umfassend eine Mehrzahl von Mehrkernprozessoren jeweils umfassend einen Hauptprozessorkern sowie mindestens einen Nebenprozessorkern offenbart, der zur Abarbeitung von Nutzprogrammen dient, dadurch gekennzeichnet, dass das Mehrkernprozessorsystem derart ausgebildet ist, das Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren nach einem der oberhalb beschriebenen Ausführungen auszuführen.
  • Ferner wird ein Computerprogramm offenbart, das es einer Datenverarbeitungseinrichtung ermöglicht, nachdem es in ein Speichermittel der Datenverarbeitungseinrichtung geladen worden ist, ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren nach einem der oberhalb beschriebenen Ausführungen durchzuführen.
  • Ferner wird ein Computerlesbares Speichermedium offenbart, auf dem ein Programm gespeichert ist, das es einer Datenverarbeitungseinrichtung ermöglicht, nachdem es in Speichermittel der Datenverarbeitungseinrichtung geladen worden ist, ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren gemäß einem der oberhalb beschriebenen Ausführungen durchzuführen.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden klarer und deutlicher verständlich im Zusammenhang mit der folgenden Beschreibung der Ausführungsbeispiele, die im Zusammenhang mit den Zeichnungen näher erläutert werden. Es zeigen:
  • 1 eine schematische Darstellung eines erfindungsgemäßen Mehrkernprozessorsystems,
  • 2 eine schematische Darstellung des erfindungsgemäßen Verfahrens zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren.
  • In der 1 ist eine schematische Darstellung eines erfindungsgemäßen Mehrkernprozessorsystems 10 rein beispielhaft beschrieben. Anhand dieser Darstellung wird ebenfalls das erfindungsgemäße Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren MC1, MC2 beschrieben, das in 2 schematisch zusammengefasst wird. Es sei angemerkt, dass in der 1 die lediglich für die Erfindung besonders relevanten technischen Merkmale angezeigt werden und diese Merkmale nicht abschließend sind, sondern weitere technische Merkmale, die dem Fachmann bekannt sind, enthalten sein können wie z. B. weitere Speicherstrukturen, entsprechende Bussysteme, Timer, Scheduler, Peripherieeinheiten etc..
  • Das Mehrkernprozessorsystem 10 umfasst beispielhaft einen ersten Mehrkernprozessor MC1 sowie einen zweiten Mehrkernprozessor MC2. Es können jedoch beliebig viele Mehrkernprozessoren MC1, MC2 vorgesehen sein, jedoch mindestens zwei, was also einer Mehrzahl von Mehrkernprozessoren MC1, MC2 entspricht. Besonders bevorzugt sind drei Mehrkernprozessoren, da eine Abweichungen in den Ausgaben oder ein Ausfall eines Mehrkernprozessors sicherheitstechnisch kompensiert werden kann. Jeder Mehrkernprozessor MC1, MC2 umfasst genau einen Hauptprozessorkern A1, A2, wobei hier beispielhaft der Hauptprozessorkern A1 in dem ersten Mehrkernprozessor MC1 und der Hauptprozessorkern A2 in dem zweiten Mehrkernprozessor MC2 verbaut sind. Ferner stehen dem ersten Mehrkernprozessor MC1 beispielhaft zwei Nebenprozessorkerne B1, B2 zur Abarbeitung von Nutzprogrammen zur Verfügung. Ferner stehen dem zweiten Mehrkernprozessor MC2 ebenfalls zwei Nebenprozessorkerne B3, B4 zur Abarbeitung von Nutzprogrammen zur Verfügung. Die Erfindung ist jedoch nicht auf zwei Nebenprozessorkerne B1, B2, B3, B4 beschränkt, sondern es kann auch nur ein Nebenprozessorkern oder mehr als zwei Nebenprozessorkerne je Hauptprozessorkern zur Verfügung gestellt werden. Als Nutzprogramme kommen hierbei Applikationen, Anwendungssoftware, Rechenprogramme, Tasks und jede Form von Programmen in Frage, die von Prozessorkernen bearbeitet werden können. Die Nutzprogramme, die von den jeweiligen Mehrkernprozessoren MC1, MC2 bearbeitet werden, sind dabei identisch, d. h. sie bestehen aus der gleichen Folge von Maschinenbefehlen.
  • Die Hauptprozessorkerne A1, A2 der verschiedenen Mehrkernprozessoren MC1, MC2 sind miteinander synchronisiert, was in der 1 schematisch durch eine Synchronisationseinheit SE dargestellt wird. Eine solche Synchronisation zwischen den Hauptprozessorkernen A1, A2 kann beispielsweise durch Synchronisationsaufrufe, d. h. besondere Aufrufe in den Programmen oder durch bestimmte Zugriffe wie zum Beispiel Speicherzugriffe durch die Hardware erfolgen. Die Ausgaben der Hauptprozessorkerne A1, A2 sind vorzugsweise derart synchronisiert, dass deren Ausgaben innerhalb von µs erfolgen und beispielsweise von einem nachgestellten Voterbaustein V während der Ausgabe verglichen werden können.
  • Die Nebenprozessorkerne B1, B2, B3, B4 sind in dieser Synchronisation nicht einbezogen, sondern laufen im Wesentlichen autark vor sich hin. Es synchronisieren somit nur die jeweiligen Hauptprozessorkerne A1, A2 der verschiedenen Mehrkernprozessoren MC1, MC2 untereinander. Die Nebenprozessorkerne B1, B2, B3, B4 dienen dazu, die Nutzprogramme abzuarbeiten und werden vom jeweiligen Hauptprozessorkern A1, A2 angesteuert. Die Steuerung, d. h. auch die Verteilung der Programme, Teilprogramme oder Tasks auf die jeweiligen Nebenprozessorkerne B1, B2, B3, B4 erfolgt in jedem Mehrkernprozessor MC1, MC2 gleichartig, d. h. in anderen Worten läuft in jedem Mehrkernprozessor MC1, MC2 die gleiche Prozedur ab.
  • Bei der Bearbeitung der Nutzprogramme durch den mindestens einen Nebenprozessorkern B1, B2, B3, B4 werden Ausgaben erzeugt, die dem jeweiligen Hauptprozessorkern A1, A2 des gleichen Mehrkernprozessors MC1, MC2 zur Verfügung gestellt werden. Folgend wird ein Synchrones Ausgeben von Ausgaben der Mehrzahl von Mehrkernprozessoren MC1, MC2 durch den jeweiligen Hauptprozessorkern A1, A2 bewirkt.
  • Somit fungiert der Hauptprozessorkern A1, A2 demnach als Synchronisationsmaster, während die Nebenprozessorkerne B1, B2, B3, B4 als Slave-Rechenknechte agieren. Es ergibt sich der Vorteil, dass die weiteren Nebenprozessorkerne B1, B2, B3, B4 diese Synchronisation nicht stören, da sie an der Synchronisation nicht teilnehmen. Somit kann vorteilhaft die Rechenleistung der Nebenprozessorkerne B1, B2, B3, B4 ausgenutzt werden, ohne dass es dabei zu Synchronisationsstörungen kommt, denn diese Aufgabe wird lediglich von dem jeweiligen Hauptprozessorkern A1, A2 ausgeübt. Durch die funktionale Aufteilung der Nutzprogramme auf mehrere Prozessorkerne und die entsprechenden Nebenläufigkeiten (Paralleles Bearbeiten) kann eine lineare Steigerung der Rechenleistung gemäß der Anzahl der Prozessorkerne erfolgen.
  • Ein-/Ausgabe erfolgt über eine Ein-/Ausgabeeinheit E1, E2, wobei nur jeweilige Hauptprozessorkerne über entsprechende Ein-/Ausgabeeinheiten E1, E2 verfügen. Ein-/Ausgabe sind ebenfalls in die Synchronisation der Hauptprozessorkerne A1, A2 einbezogen. Die jeweiligen Nebenprozessorkerne B1, B2, B3, B4 verfügen nicht über Ein-/Ausgabeeinheiten. Dazu gehört ferner, dass die Nebenprozessorkerne B1, B2, B3, B4 von Interrupten der Ein-/Ausgabeeinheiten E1, E2 entkoppelt sind.
  • Die Kommunikation zwischen dem Hauptprozessorkern A1, A2 und dem mindestens einen Nebenprozessorkern B1, B2, B3, B4 wird durch Nachrichten mittels eines gemeinsam genutzten Speichers M1, M2 realisiert. Hierzu können die Nebenprozessorkerne B1, B2, B3, B4 als virtuelle Prozessorkerne durch Virtualisierungsunterstützungen betrieben werden. Auf diesen Prozessorkernen kann dann ein Betriebssystem bereitgestellt werden, das eine Kommunikation zwischen Prozessorkernen mittels Nachrichtenaustausch mit dem jeweiligen Hauptprozessorkern A1, A2 ermöglicht. Der Transfer der Nachrichten kann über die gemeinsamen Speicherbereiche M1, M2 (Shared Memory Bereiche) mittels Verriegelungsprotokollen erfolgen zur Vermeidung von Zugriffskonflikten auf den gemeinsamen Speicher M1, M2. Der Hauptprozessorkern A1, A2 hat hierbei die Speicheraufteilung eingerichtet.
  • Der Hauptprozessorkern A1 des ersten Mehrkernprozessors MC1 reicht seinen Uhrzeitinkrement I1 an die zwei Nebenprozessorkerne B1, B2 weiter. Ebenfalls reicht der Hauptprozessorkern A2 des zweiten Mehrkernprozessors MC2 sein Uhrzeitinkrement I2 an die zugehörigen zwei Nebenprozessorkerne B3, B4 weiter. Die Uhrzeitinkremente I1, I2 können beispielsweise alle 20 ms erfolgen und sind synchron zueinander. Über die Uhrzeitinkremente I1, I2 können grundsätzlich rechenwillige Programme oder Tasks zur Zwischenbearbeitung bereitgestellt werden, die beispielsweise nach Prioritäten oder anderen Kriterien in einer Warteschlange sortiert werden. Dies entspricht einem präemptiven Multitaskingsystem mit prioritätsgesteuerter Methodik. Die Verarbeitung der Uhrenzeitinkremente wird in den folgenden Abschnitten näher beschrieben.
  • In die Nutzprogramme werden besondere Aufrufe, sogenannte Systemaufrufe, eingepflegt. Diese Systemaufrufe sind Funktionen des Betriebssystems. Bei Uhrenzeitinkrementen von beispielsweise 20 ms können diese Systemaufrufe beispielhaft jede ms erfolgen, sinnvollerweise also stets deutlich unterhalb von 20 ms und damit häufig in Bezug auf die Uhrenzeitinkremente. Die Systemaufrufe können beispielsweise Synchronisationsanstöße sein, die jedoch nicht zur Synchronisation verwendet werden. Wenn ein solcher Systemaufruf erfolgt, wird im jeweiligen Nebenprozessorkern B1, B2, B3, B4 eine erste Bearbeitungsphase gestartet.
  • In dieser ersten Bearbeitungsphase wird der zyklische Ablauf in dem jeweiligen Nebenprozessorkernen B1, B2, B3, B4 geführt. Dabei werden die eingehenden Nachrichten und ausgehenden Nachrichten durch Wartelisten geführt und zu bestimmten synchronen Zeitpunkten zwischen Nebenprozessorkernen B1, B2, B3, B4 und Hauptprozessorkernen A1, A2 durch Zugriff auf den gemeinsamen Speicherbereich M1, M2 übermittelt. Dies kann zum Beispiel alle 100 ms oder alle 200 ms zu synchronen Zeitpunkten erfolgen. Der synchrone Zeitpunkt kann durch aktives Warten auf ein Uhrzeitinkrement I1, I2 erzielt werden. In der ersten Bearbeitungsphase wird auch geprüft, ob ein entsprechendes Uhrzeitinkrement I1, I2 anhängig ist bzw. es wird auf das nächste Uhrzeitinkrement I1, I2 aktiv gewartet zur groben Synchronisation der Nebenprozessorkerne B1, B2, B3, B4, um geringe Laufzeitunterschiede auszugleichen, so dass dann z.B. ein Taskwechsel stattfinden kann. Programme, die nach Timerablauf rechenwillig werden, verdrängen dabei Programme mit niedrigerer Priorität und wenn alle Programme abgearbeitet sind, wird in die Idle-Task gemündet, die erst beim nächsten Uhrzeitinkrement (z. B. alle 20 ms) verlassen wird, es wird also ein präemptives Multitasking propagiert. Ist kein Uhrzeitinkrement I1, I2 anhängig, dann aktualisiert die erste Bearbeitungsphase einen möglicherweise vorhandenen Zeitzähler, z. B. einen ms-Zeitzähler, der vornehmlich für die Feststellung von Zeitdifferenzen zuständig ist, und springt zum Aufrufpunkt zurück.
  • Die Bearbeitung der Nutzprogramme ist dabei Teil der zweiten Bearbeitungsphase, die eigentliche Rechenphase der Nebenprozessorkerne B1, B2, B3, B4. In dieser zweiten Bearbeitungsphase läuft auch das Betriebssystem der Nebenprozessorkerne. Die zweite Bearbeitungsphase, also die reine Abarbeitungsphase, ist unabhängig von der ersten Bearbeitungsphase, d. h. sie bekommt von den Abläufen der ersten Bearbeitungsphase nichts mit.
  • Die erste Bearbeitungsphase erfasst ferner die Anzahl der Systemaufrufe, die zwischen zwei Uhrzeitinkrementen I1, I2, also beispielsweise alle 20 ms, stattgefunden haben. Diese Systemaufrufe in den Nebenprozessorkernen B1, B2, B3, B4 werden typischerweise auf Zeiten von ms erfolgen. Auf Basis der Anzahl der erfassten Systemaufrufe wird dann eine Verzögerung der Reaktion auf den erfassten Uhreninterrupt I1, I2 ausgeführt. Diese Verzögerung soll eine Gleichläufigkeit der Bearbeitung durch die jeweiligen Nebenprozessorkerne B1, B2, B3, B4 bewirken, wodurch leichte Abweichungen durch Laufzeitunterschiede ausgeglichen werden. Diese Abweichung wird durch einfaches Abzählen der Systemaufrufe durch die erste Bearbeitungsphase erfasst und durch eine geeignete Verzögerung ausgeglichen. Die Synchronisationsmöglichkeiten der Nebenprozessorkerne B1, B2, B3, B4 der verschiedenen Mehrkernprozessoren MC1, MC2 liegen demnach im Bereich der gewählten Uhrzeitinkrementintervalle bzw. Uhreninkrementintervalle, also beispielsweise bei 20 ms. Dieses Zeitfenster ist demnach weiter gefasst als das Zeitfenster für die Synchronisation der entsprechenden Hauptprozessorkerne A1, A2 untereinander, die typischerweise im Bereich von µs liegen soll. Es handelt sich daher um eine gröbere Synchronisation als die der Hauptprozessorkerne A1, A2. Alternativ kann eine grobe Synchronisation erfolgen durch Ausnutzung eines Taktes, beispielsweise alle 20 ms, indem man z.B. alle 200 ms durch aktives Warten grobsynchronisiert, wie für die Übermittelung der Eingaben und Ausgaben zwischen Nebenprozessorkern B1, B2, B3, B4 und Hauptprozessorkern A1, A2 beschrieben. Es sei dabei allgemein angemerkt, dass die in den Nebenprozessorkernen B1, B2, B3, B4 in der zweiten Bearbeitungsphase, also der Arbeitsphase, ablaufenden Prozesse typischerweise lediglich im Bereich von Promille voneinander abweichen.
  • Der Austausch der angesammelten Nachrichten, der in der ersten Bearbeitungsphase erfolgt, zwischen den Nebenprozessorkernen B1, B2, B3, B4 mit ihren jeweilig zugeordneten Hauptprozessorkernen A1, A2 muss nicht nach jedem Uhrzeitinkrement I1, I2 erfolgen, sondern kann auch in vergröberten Zeitintervallen erfolgen, also beispielsweise alle 100 ms, da für viele Applikationen, die einen Zeitbegriff verarbeiten wie beispielsweise zur Steuerung oder zur Verfolgung von Bewegungen, Zyklen erst ab oder oberhalb des vergröberten Zeitintervalls liegen, also beispielsweise bei 100 ms, 200 ms oder gar 500 ms.
  • Von der Erfindung ist miteingeschlossen, dass der oder die Nebenprozessorkerne B1, B2, B3, B4 auch als Hyperthreading-Kerne ausgebildet sein können. Das Verfahren ist also grundsätzlich ebenso auf hyperthreading-fähigen Prozessoren ausführbar.
  • Alternativ kann bei Nutzprogrammen mit beispielsweise bekannter Laufzeit, die in den Nebenprozessoren B1, B2, B3, B4 abgearbeitet werden, bei denen weder ein Betriebssystem für Multitasking noch ein Uhrzeitinkrement I1, I2 benötigt werden, eine Verzögerungszeit, die größer als die Laufzeit der Nutzprogramme ist, implementiert sein, nach deren Ablauf die errechneten Ausgaben synchron an die Hauptprozessorkerne A1, A2 übergeben werden. Die Verzögerungszeit ist dabei entsprechend so zu wählen, dass zu berechnenden Ausgaben bei Ablauf der Verzögerungszeit in den verschiedenen Nebenprozessorkernen B1, B2, B3, B4 vorliegen, so dass eine synchrone Übergabe trotz möglicher Laufzeitunterschiede an den jeweiligen Hauptprozessorkern A1, A2 möglich wird. Auf den Ablauf der Verzögerungszeit wird aktiv gewartet.
  • Das Verfahren ist grundsätzlich auch mit nur einem Mehrkernprozessor betreibbar und daher von der Erfindung eingeschlossen, um z. B. Entwicklungs- und Testläufe vereinfacht zu unterstützen. Dann entfällt entsprechend die Synchronisation mit weiteren Kanälen, da diese nicht vorhanden sind.
  • Um sicherzustellen, dass im Speicherbereich der Nebenprozessorkerne B1, B2, B3, B4 sich kein schlummernder Fehler etabliert, der in einem anderen Kanal sich unerkannt gleichartig manifestieren kann, kann vorteilhaft auch in den Nebenprozessorkernen B1, B2, B3, B4 stetig über den verwendeten Speicher ein Hashwert gebildet und zum Abgleich an den zugehörigen Hauptprozessorkern A1, A2 übertragen werden.
  • Auf dem jeweiligen Hauptprozessorkern A1, A2 und den jeweiligen Nebenprozessorkernen B1, B2, B3, B4 können die gleichen oder auch unterschiedliche Betriebssysteme laufen, wobei diese stets voneinander separiert sind. Dadurch ergibt sich die Möglichkeit, die Nutzprogramme für die Nebenprozessorkerne B1, B2 als eigene, zusätzliche Images zu laden. Dies reduziert die Komplexität bei Updates und Wartungen.
  • Grundsätzlich braucht der jeweilige Hauptprozessorkern A1, A2 keine projektspezifischen Applikationen bzw. Nutzprogramme zu erhalten, da die Rechenleistung für die spezifischen Nutzprogramme alleine durch die Nebenprozessorkerne B1, B2, B3, B4 bewirkt wird. Somit kann sich der jeweilige Hauptprozessorkern A1, A2 alleine um die Kommunikationslast kümmern, was potentiell die Anzahl der möglichen handhabbaren Kanäle für die auf dem Hauptprozessorkern A1, A2 laufenden Sicherheitsprotokolle erhöhen könnte. Es ist aber auch von der Erfindung eingeschlossen, dass durchaus auch auf den jeweiligen Hauptprozessorkernen A1, A2 je nach Auslastung Programme bearbeitet werden können.
  • Um eine Diagnosesoftware weiterhin konfliktfrei mit einer Diagnoseschnittstelle betreiben zu können, ist es zudem vorteilhaft, dass die Diagnoseschnittstellen-Zugriffe der Nebenprozessorkerne B1, B2, B3, B4 über den Hauptprozessorkern A1, A2 geroutet werden oder die Hardware ermöglicht gesonderte Zugänge per FPGA (field programmable gate array). Somit hätte jeder Prozessorkern seine Diagnoseschnittstelle, obwohl nur ein physischer Diagnoseschnittstellenzugang existiert.
  • In 2 wird das erfindungsgemäße Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren schematisch zusammengefasst. In einem ersten Schritt S1 erfolgt das Bereitstellen einer Mehrzahl von Mehrkernprozessoren MC1, MC2 jeweils umfassend einen Hauptprozessorkern A1, A2, mindestens einen Nebenprozessorkern B1, B2, B3, B4, der zur Abarbeitung von Nutzprogrammen dient. In einem zweiten Schritt S2 erfolgt das Synchronisieren des ersten Mehrkernprozessors MC1 mit dem zweiten Mehrkernprozessors MC2 derart, dass nur der jeweilige Hauptprozessorkern A1 des ersten Mehrkernprozessors MC1 mit dem Hauptprozessorkern A2 des zweiten Mehrkernprozessors MC2 synchronisiert. In einem dritten Schritt S3 erfolgt das Steuern des mindestens einen Nebenprozessorkerns B1, B2, B3, B4 durch den jeweiligen Hauptprozessorkern A1, A2 in jedem Mehrkernprozessor MC1, MC2. Die Steuerung des mindestens einen Nebenprozessorkerns B1, B2, B3, B4 erfolgt in jedem Mehrkernprozessor MC1, MC2 in gleicher Weise. In einem weiteren Schritt S4 wird das Bearbeiten der Nutzprogramme durch den mindestens einen Nebenprozessorkern B1, B2, B3, B4 und Erzeugen von Ausgaben, die dem jeweiligen Hauptprozessorkern A1, A2 des gleichen Mehrkernprozessors MC1, MC2 zur Verfügung gestellt werden. In einem weiteren Schritt S5 erfolgt das synchrone Ausgeben von Ausgaben der Mehrzahl von Mehrkernprozessoren MC1, MC2 durch den jeweiligen Hauptprozessorkern A1, A2.
  • Zusammengefasst wird ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren MC1, MC2 vorgeschlagen, bei dem synchronisierte Ausgaben erzeugt werden, wobei die Rechenkapazitäten der Mehrkernprozessoren MC1, MC2 zum parallelen Ausführen von Programmen ausgelastet wird. Dabei werden die Aufgabenbereiche zwischen den verschiedenen Prozessorkernen innerhalb eines Mehrkernprozessors MC1, MC2 hierarchisiert, wobei ein Hauptprozessorkern A1, A2 als Synchronisationsmaster agiert und der oder die Nebenprozessorkerne B1, B2, B3, B4 zu Slave-Rechenknechten degradiert werden, die mit der Synchronisation des Hauptprozessorkerne A1, A2 nicht interferieren.
  • Als Vorteil ergeben sich eine effizientere Nutzung der Rechenkapazitäten sowie damit verknüpft eine Einsparung an Hardwareaufwand. Zudem können nun auch Mehrkernprozessoren in sicherheitsrelevanten Systemen unter Ausnutzung ihrer erhöhten Rechenleistung genutzt werden.
  • Obwohl die Erfindung im Detail durch bevorzugte Ausführungsbeispiele näher illustriert und beschrieben wurde, so ist die Erfindung nicht durch die offenbarten Beispiele eingeschränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.
  • Bezugszeichenliste
    • MC1, MC2
      Mehrkernprozessor
      A1, A2
      Hauptprozessorkern
      B1, B2, B3, B4
      Nebenprozessorkern
      I1, I2
      Uhrzeitinkrement
      E1, E2
      Ein-/Ausgabeeinheit
      SE
      Synchronisierungseinheit
      M1, M2
      gemeinsamer Speicher
      V
      Voterbaustein
      S1, S2, S3, S4, S5
      Schritt

Claims (12)

  1. Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren (MC1, MC2) mit den folgenden Schritten: a) Bereitstellen eines ersten Mehrkernprozessors (MC1) und eines zweiten Mehrkernprozessors (MC2) jeweils umfassend: – einen Hauptprozessorkern (A1, A2), – mindestens einen Nebenprozessorkern (B1, B2, B3, B4), der zur Abarbeitung von Nutzprogrammen dient; b) Synchronisieren des ersten Mehrkernprozessors (MC1) mit dem zweiten Mehrkernprozessors (MC2) derart, dass nur der jeweilige Hauptprozessorkern (A1) des ersten Mehrkernprozessors (MC1) mit dem Hauptprozessorkern (A2) des zweiten Mehrkernprozessors (MC2) synchronisiert; c) Steuern des mindestens einen Nebenprozessorkerns (B1, B2, B3, B4) durch den jeweiligen Hauptprozessorkern (A1, A2) in jedem Mehrkernprozessor (MC1, MC2); d) Bearbeiten der Nutzprogramme durch den mindestens einen Nebenprozessorkern (B1, B2, B3, B4) und Erzeugen von Ausgaben, die dem jeweiligen Hauptprozessorkern (A1, A2) des gleichen Mehrkernprozessors (MC1, MC2) zur Verfügung gestellt werden; e) Synchrones Ausgeben von Ausgaben der Mehrzahl von Mehrkernprozessoren (MC1, MC2) durch den jeweiligen Hauptprozessorkern (A1, A2).
  2. Verfahren nach Anspruch 1, wobei Ein-/Ausgabe lediglich über die jeweiligen Hauptprozessorkerne (A1, A2) erfolgt.
  3. Verfahren nach einem der vorherigen Ansprüche, wobei die Kommunikation zwischen dem Hauptprozessorkern (A1, A2) und dem mindestens einen Nebenprozessorkern (B1, B2, B3, B4) durch Nachrichten mittels eines gemeinsam genutzten Speichers (M1, M2) erfolgt.
  4. Verfahren nach einem der vorigen Ansprüche, wobei der Hauptprozessorkern (A1, A2) dem mindestens einen jeweiligen Nebenprozessorkern (B1, B2, B3, B4) des entsprechenden Mehrkernprozessors (MC1, MC2) Uhrzeitinkremente (I1, I2) übergibt.
  5. Verfahren nach einem der vorherigen Ansprüche, wobei in die Nutzprogramme bzw. Betriebssysteme ein wiederkehrender Systemaufruf implementiert ist.
  6. Verfahren nach Anspruch 5, wobei der Systemaufruf in dem jeweiligen mindestens einen Nebenprozessorkern (B1, B2, B3, B4) eine erste Bearbeitungsphase ausführt, in der das Empfangen und Senden von Nachrichten zwischen dem mindestens einen Nebenprozessorkern (B1, B2, B3, B4) und dem jeweiligen Hauptprozessorkern (A1, A2) durchgeführt wird und dabei eine zweite Bearbeitungsphase unterbrochen wird, in der die Nutzprogramme in dem mindestens einen Nebenprozessorkern (B1, B2, B3, B4) abgearbeitet werden.
  7. Verfahren nach Anspruch 6, wobei die erste Bearbeitungsphase das Empfangen und Senden von Nachrichten zwischen dem mindestens einen Nebenprozessorkern (B1, B2, B3, B4) und dem jeweiligen Hauptprozessorkern (A1, A2) zu einem synchronen Zeitpunkt ausführt.
  8. Verfahren nach einem der vorherigen Ansprüche 6 oder 7, wobei die erste Bearbeitungsphase eine Verzögerung der Reaktion auf einen Uhrzeitinkrement (I1, I2) in dem mindestens einen Nebenprozessorkern (B1, B2, B3, B4) je Hauptprozessorkern (A1, A2) auf Basis der zwischen zwei Uhrzeitinkrementen (I1, I2) gezählten Systemaufrufe erzeugt.
  9. Verfahren nach einem der vorherigen Ansprüche 1 und 2, wobei Nutzprogramme in den Nebenprozessoren (B1, B2, B3, B4) abgearbeitet werden, deren Ausgaben nach einer Verzögerungszeit, die größer als die Laufzeit der Nutzprogramme ist, synchron an die Hauptprozessorkerne (A1, A2) übergeben werden. Verfahren nach einem der vorherigen Ansprüche, wobei mindestens ein Nebenprozessorkern (B1, B2, B3, B4) als Hyperthreading-Kern ausgebildet wird.
  10. Mehrkernprozessorsystem (10) umfassend eine Mehrzahl von Mehrkernprozessoren (MC1, MC2) jeweils umfassend: – einen Hauptprozessorkern (A1, A2), – mindestens einen Nebenprozessorkern (B1, B2, B3, B4), der zur Abarbeitung von Nutzprogrammen dient; dadurch gekennzeichnet, dass das Mehrkernprozessorsystem (10) derart ausgebildet ist, das Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren (MC1, MC2) nach einem der vorherigen Ansprüche auszuführen.
  11. Computerprogramm, das es einer Datenverarbeitungseinrichtung ermöglicht, nachdem es in ein Speichermittel der Datenverarbeitungseinrichtung geladen worden ist, ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren (MC1, MC2) gemäß einem der Ansprüche 1–10 durchzuführen.
  12. Computerlesbares Speichermedium, auf dem ein Programm gespeichert ist, das es einer Datenverarbeitungseinrichtung ermöglicht, nachdem es in Speichermittel der Datenverarbeitungseinrichtung geladen worden ist, ein Verfahren zum synchronisierten Betrieb von einer Mehrzahl von Mehrkernprozessoren (MC1, MC2) gemäß einem der Ansprüche 1–10 durchzuführen.
DE102016211286.4A 2016-06-23 2016-06-23 Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren Withdrawn DE102016211286A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE102016211286.4A DE102016211286A1 (de) 2016-06-23 2016-06-23 Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren
EP17733365.5A EP3449366A1 (de) 2016-06-23 2017-06-01 Verfahren zum synchronisierten betrieb von mehrkernprozessoren
PCT/EP2017/063260 WO2017220305A1 (de) 2016-06-23 2017-06-01 Verfahren zum synchronisierten betrieb von mehrkernprozessoren
US16/311,970 US11301308B2 (en) 2016-06-23 2017-06-01 Method for synchronized operation of multicore processors
CN201780038482.1A CN109313581B (zh) 2016-06-23 2017-06-01 用于多核处理器的同步操作的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102016211286.4A DE102016211286A1 (de) 2016-06-23 2016-06-23 Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren

Publications (1)

Publication Number Publication Date
DE102016211286A1 true DE102016211286A1 (de) 2017-12-28

Family

ID=59227694

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016211286.4A Withdrawn DE102016211286A1 (de) 2016-06-23 2016-06-23 Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren

Country Status (5)

Country Link
US (1) US11301308B2 (de)
EP (1) EP3449366A1 (de)
CN (1) CN109313581B (de)
DE (1) DE102016211286A1 (de)
WO (1) WO2017220305A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016205119A1 (de) * 2016-03-29 2017-10-05 Siemens Aktiengesellschaft System zur Steuerung von Stellwerken im Bahnverkehr
CN111274068B (zh) * 2020-01-19 2022-07-12 合肥工大高科信息科技股份有限公司 一种热备计算机联锁系统的通信机双cpu数据同步方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011101707A1 (en) * 2010-02-16 2011-08-25 Freescale Semiconductor, Inc. Data processing method, data processor and apparatus including a data processor
US20120191441A1 (en) * 2011-01-24 2012-07-26 National Tsing Hua University High-Parallelism Synchronization Approach for Multi-Core Instruction-Set Simulation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
US6629152B2 (en) 1998-06-29 2003-09-30 International Business Machines Corporation Message passing using shared memory of a computer
US8645959B2 (en) 2005-03-30 2014-02-04 Intel Corporaiton Method and apparatus for communication between two or more processing elements
US8826288B2 (en) 2005-04-19 2014-09-02 Hewlett-Packard Development Company, L.P. Computing with both lock-step and free-step processor modes
US7818744B2 (en) * 2005-12-30 2010-10-19 Intel Corporation Apparatus and method for redundant software thread computation
CN101354693B (zh) * 2008-09-11 2010-06-09 重庆邮电大学 一种异构多核处理器的核间通信调度系统及方法
JP5463076B2 (ja) * 2009-05-28 2014-04-09 パナソニック株式会社 マルチスレッドプロセッサ
CN102446155A (zh) * 2010-10-12 2012-05-09 无锡江南计算技术研究所 同步装置及方法
JP5596793B2 (ja) * 2010-10-25 2014-09-24 株式会社日立製作所 計算機システム
JP5099251B1 (ja) 2011-07-15 2012-12-19 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
US9417935B2 (en) * 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US9329865B2 (en) * 2013-06-11 2016-05-03 Intel Corporation Context control and parameter passing within microcode based instruction routines
CN104331388B (zh) * 2013-08-28 2018-09-11 威盛电子股份有限公司 微处理器及在微处理器的处理核间同步的方法
US10067813B2 (en) * 2014-11-21 2018-09-04 Samsung Electronics Co., Ltd. Method of analyzing a fault of an electronic system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011101707A1 (en) * 2010-02-16 2011-08-25 Freescale Semiconductor, Inc. Data processing method, data processor and apparatus including a data processor
US20120191441A1 (en) * 2011-01-24 2012-07-26 National Tsing Hua University High-Parallelism Synchronization Approach for Multi-Core Instruction-Set Simulation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BALEANI, M. u.a.: Fault-Tolerant Platforms for Automotive Safety-Critical Applications. IN: Proceedings of the 2003 international conference on Compilers, architecture and synthesis for embedded systems. 2003, S. 170 - 177, ISBN: 1-58113-676-5 *
TEXAS INSTRUMENTS: Multicore Programming Guide, [recherchiert am 14.02.2017] August 2012. Im Internet: <URL: http://www.ti.com/lit/an/sprab27b/sprab27b.pdf> *

Also Published As

Publication number Publication date
US11301308B2 (en) 2022-04-12
US20200310887A1 (en) 2020-10-01
WO2017220305A1 (de) 2017-12-28
CN109313581A (zh) 2019-02-05
CN109313581B (zh) 2022-06-24
EP3449366A1 (de) 2019-03-06

Similar Documents

Publication Publication Date Title
DE3853574T2 (de) Steuerung von Benutzerantworten in einem Übertragungsbus.
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
DE102013214756B4 (de) Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor
DE69224954T2 (de) Verfahren und Vorrichtung zur Echtzeitverwaltung von einem System mit mindestens einem zur Verwaltung mehrerer Funktionen geeignetem Prozessor
DE3688363T2 (de) Unterbrechungsabwicklung in einem Multiprozessorrechnersystem.
EP3014438B1 (de) Verfahren und vorrichtung zur zeitrichtigen datenübergabe an die zyklischen tasks in einem verteilten echtzeitsystem
EP3538960B1 (de) Ablaufsteuerung von programmmodulen
EP2657797A1 (de) Verfahren zum Betreiben eines redundanten Automatisierungssystems
EP2513796B1 (de) Verfahren zum betreiben einer recheneinheit
EP3417373B1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
CH675781A5 (de)
DE102016211286A1 (de) Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren
DE10326542B4 (de) Betriebsverfahren und Steuerungsprogramm für eine Zentraleinheit eines Automatisierungssystems sowie Zentraleinheit eines Automatisierungssystems und Automatisierungssystem selbst
EP2982063B1 (de) Automatisierungseinrichtung und verfahren zur reduzierung von jittern
DE102006052757A1 (de) Automatisierungsgerät mit einer Verarbeitungseinheit und Verwendung einer Verarbeitungseinheit in einem Automatisierungsgerät
DE3752059T2 (de) Ereignisgesteuertes Exekutivprogramm
EP0476175A1 (de) Einrichtung zum Betrieb eines Mehrprozessorsystems, insbesondere einer numerischen Steuerung
EP2685377B1 (de) Verfahren und Anordnung zur Synchronisierung von zwei auf einer Hardware-Plattform ablaufenden Prozessen
DE3786583T2 (de) Prozessor.
EP3143506B1 (de) Verfahren und system zum zuweisen einer steuerberechtigung zu einem rechner
WO2012051972A2 (de) Verfahren, zur effizienten nutzung eines zwei- oder mehrkernprozessors durch ein betriebssystem
EP1426862B1 (de) Synchronisation der Datenverarbeitung in redundanten Datenverarbeitungseinheiten eines Datenverarbeitungssystems
DE102018205390A1 (de) Verfahren und Vorrichtung zur Fehlerbehandlung in einer Kommunikation zwischen verteilten Software Komponenten
EP0991995B1 (de) Unterbrechungsverfahren in einem computersystem mit unterbrechungssteuerung
EP2160670A1 (de) Prozessor und verfahren zu seiner ansteuerung

Legal Events

Date Code Title Description
R163 Identified publications notified
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee