DE102015223714A1 - Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem - Google Patents

Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem Download PDF

Info

Publication number
DE102015223714A1
DE102015223714A1 DE102015223714.1A DE102015223714A DE102015223714A1 DE 102015223714 A1 DE102015223714 A1 DE 102015223714A1 DE 102015223714 A DE102015223714 A DE 102015223714A DE 102015223714 A1 DE102015223714 A1 DE 102015223714A1
Authority
DE
Germany
Prior art keywords
program code
procedure
processor core
event
runtime
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
DE102015223714.1A
Other languages
English (en)
Inventor
Henning Classen
Jens Gladigau
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102015223714.1A priority Critical patent/DE102015223714A1/de
Publication of DE102015223714A1 publication Critical patent/DE102015223714A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Verfahren (10) zum Ermitteln einer Laufzeit eines Programmcodes auf einem System mit zumindest einem ersten Prozessorkern, einem zweiten Prozessorkern und von den Prozessorkernen zumindest bereichsweise gemeinsam genutztem Speicher oder gemeinsam genutzter Datenübertragungsressourcen (zum Beispiel Bus, Cross-Bar, Network-on-Chip), gekennzeichnet durch folgende Merkmale: – eine Basislaufzeit eines durch den ersten Prozessorkern auszuführenden Programmcodes auf dem System wird ermittelt (11), – zumindest für den ersten Prozessorkern wird ein statistischer Korrekturfaktor für die Basislaufzeit abhängig von einem den Programmcode speichernden Bereich des Speichers und einem Betriebszustand des zweiten Prozessorkernes ermittelt (12) und – ausgehend von der Basislaufzeit wird mittels des Korrekturfaktors die Laufzeit des Programmcodes geschätzt.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Ermitteln einer Laufzeit eines Programmcodes auf einem System mit zumindest einem ersten Prozessorkern, einem zweiten Prozessorkern und von den Prozessorkernen zumindest bereichsweise gemeinsam genutztem Speicher oder gemeinsam genutzter Datenübertragungsressourcen (zum Beispiel Bus, Cross-Bar, Network-on-Chip). Die vorliegende Erfindung betrifft darüber hinaus eine entsprechende Vorrichtung, ein entsprechendes Computerprogramm sowie ein entsprechendes Speichermedium.
  • Stand der Technik
  • In der Elektronik werden eingebettete Systeme zur Steuerung oder Regelung von Fahrzeugen, Maschinen, Anlagen oder sonstigen technischen Prozessen zusammenfassend als Steuergeräte (electronic control unit, electronic control module, ECU, ECM) bezeichnet. Die Größe bekannter Steuergeräte variiert je nach Komplexität seiner Aufgaben erheblich und reicht von Ein-Chip-Systemen (system on a chip, SoC) mit einem Mikrocontroller und integriertem Speicher bis hin zu Mehrprozessorkernsystemen (multi-core) mit gemeinsam genutztem Speicher (shared memory). Als Mehrkernprozessorsystem sind im vorliegenden Zusammenhang nicht nur Mehrprozessorsysteme im engeren Sinn zu verstehen, deren Hauptplatine mehrere unabhängig bestückte Prozessorsockel umfasst. Gemeint sind vielmehr auch Mehrkernprozessoren mit mehreren Hauptprozessorkernen in einem einzigen Chip.
  • Das dynamische Systemverhalten eines derartigen Steuergerätes nach dem Stand der Technik entzieht sich angesichts seiner Komplexität in der Regel einer theoretischen oder formelmäßigen Analyse. Zur Anwendung kommt stattdessen mitunter eine als Ablaufsimulation bezeichnete diskrete Rechnersimulation. In Betracht kommt insbesondere die sogenannte ereignisgesteuerte oder ereignisorientierte Simulation, bei welcher ein Ereignissystem nach statistisch oder zufällig bemessenen Zeitintervallen bestimmte Ereignisse (events) hervorruft, welche ihrerseits den jeweils folgenden Systemzustand bestimmen.
  • EP2851815A1 beschreibt eine Testeinrichtung zum Echtzeittest zumindest eines Teils eines virtuellen Steuergeräts mit einem Steuergerätecode, wobei die Testeinrichtung wenigstens einen Rechenkern ersten Typs mit einem ersten Instruktionssatz und wenigstens eine Simulationsumgebung zur Echtzeitsimulation der Umgebung des virtuellen Steuergeräts aufweist, und wobei die Simulationsumgebung und der Steuergerätecode mit wenigstens einem Rechenkern ersten Typs berechnet wird.
  • Offenbarung der Erfindung
  • Die Erfindung stellt ein Verfahren zum Ermitteln einer Laufzeit eines Programmcodes auf einem System mit zumindest einem ersten Prozessorkern, einem zweiten Prozessorkern und von den Prozessorkernen zumindest bereichsweise gemeinsam genutztem Speicher oder gemeinsam genutzter Datenübertragungsressourcen (zum Beispiel Bus, Cross-Bar, Network-on-Chip), eine entsprechende Vorrichtung, ein entsprechendes Computerprogramm sowie ein entsprechendes Speichermedium gemäß den unabhängigen Ansprüchen bereit.
  • Ein Vorzug dieser Lösung liegt in der vergleichsweise genauen und schnellen Schätzung der Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem, die neben Speicherzugriffen für Daten auch Speicherzugriffe für den auszuführenden Programmcode berücksichtigt, ohne die Anzahl der Ereignisse zu erhöhen; damit lassen sich genauere zeitliche Vorhersagen über das System, etwa einer Motorsteuerungssoftware auf dem Mehrprozessorkernsystem, erzielen.
  • Durch die in den abhängigen Ansprüchen aufgeführten Maßnahmen sind vorteilhafte Weiterbildungen und Verbesserungen des im unabhängigen Anspruch angegebenen Grundgedankens möglich. So kann vorgesehen sein, dass basierend auf den Zuständen aller Prozessorkerne des Systems (zum Beispiel „Kern 1 führt Code aus Flash-Bank A aus“, „Kern 2 ist untätig“ oder „Kern 3 führt Code aus lokalem Speicher aus“) die Laufzeit eines Programmcodes basierend auf statistischen Annahmen antizipiert wird. Diesem Ansatz liegt die Erkenntnis zugrunde, dass sich die Ausführungszeit für zwei Prozessorkerne, die Programmcode aus derselben Flash-Bank ausführen, unter Umständen verlängert.
  • Gemäß einem weiteren Aspekt kann vorgesehen sein, dass alle vorher antizipierten Laufzeiten überprüft und nötigenfalls angepasst werden, wenn sich der Zustand eines Prozessorkernes ändert. Der Vorteil dieser Ausführungsform liegt in akkurateren Schätzungsergebnissen bei geringem Mehraufwand, da es hierzu keiner zusätzlichen Ereignisse für die Schätzung bedarf.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigt:
  • 1 das Flussdiagramm eines Verfahrens gemäß einer ersten Ausführungsform.
  • 2 schematisch eine Vorrichtung gemäß einer zweiten Ausführungsform.
  • Ausführungsformen der Erfindung
  • 1 illustriert den grundlegenden Ablauf eines Verfahrens (10) gemäß einer Ausführungsform der Erfindung. Durch Messung (Benchmark), Berechnung oder Experteneinschätzung wird für jeden Kern eines Mehrkernprozessorsystems die Laufzeit eines gegebenen Programmcodes ermittelt (11). Berücksichtigung finden dabei einerseits der Speicherort der ausgeführten Software – zu denken ist etwa an einen lokalen Speicher des Kerns, globalen Direktzugriffsspeicher (random access memory, RAM) oder globalen Flash-Speicher – und andererseits die möglichen Zustände der anderen Kerne im System. In Betracht kommt beispielsweise, dass einer der übrigen Kerne des Systems untätig (idle) ist, Code aus seinem lokalem Speicher oder aus dem globalem RAM ausführt. Mit diesem Wissen wird für jeden Kern eine Tabelle erstellt (12), die ausgehend von einem Basiswert für die Laufzeit des Programmcodes – etwa die kürzeste Laufzeit bei Ausführung aus lokalem Speicher – Korrekturfaktoren für die Laufzeit abhängig von der Ausführung auf allen anderen Kernen enthält. Der Terminus „Korrekturfaktor“ ist dabei in einem methodischen und nicht etwa streng arithmetischen Wortsinn zu verstehen und umfasst jegliche statistische Größe oder Formel, die geeignet ist, den erwähnten Basiswert den gewonnenen Erwartungen oder Beobachtungen anzugleichen.
  • Man betrachte folgendes Beispiel für zwei Kerne A und B, die jeweils lokalen Speicher („LRAM A/B“) haben und sich über einen gemeinsamen Bus globalen RAM-Speicher („GRAM“) und globalen Flash-Speicher („FLASH“) teilen. Die Tabelle für Kern A gestaltet sich in diesem Szenario wie folgt:
    Speicherbereich des durch Kern A auszuführenden Programmcodes LRAM A GRAM FLASH
    Kern B ist untätig 1 1 1
    Kern B führt weiteren Programmcode aus LRAM B aus 1 1 1
    Kern B führt weiteren Programmcode aus GRAM aus 1 1,1 1,05
    Kern B führt weiteren Programmcode aus FLASH aus 1 1,05 1,3
  • Für jede auf dem Programmcode basierende Task ist ferner die Basis-Laufzeit bekannt. Als „Task“ ist dabei nicht zwingend lediglich ein Prozess im fachsprachlichen Wortsinn zu verstehen. Im vorliegenden Zusammenhang bezeichnet der Begriff vielmehr jedwede zusammenhängende Aufgabe aus Sicht des Betriebssystems, also beispielsweise auch die einzelnen Ausführungsstränge (threads) eines solchen Prozesses.
  • In der Laufzeitabschätzung (13) wird die obige Tabelle dann wie folgt genutzt: Wird eine Task gestartet, wird ein Ereignis für das voraussichtliche Ende der Task erstellt; dabei wird der Zustand aller Kerne im System und sämtliche Tabellen der obigen Form berücksichtigt, indem die Basis-Laufzeit mit dem Korrekturfaktor multipliziert wird. Es versteht sich, dass in einer alternativen Ausführungsform beispielsweise ein um 1 reduzierter Korrekturfaktor vorgehalten werden mag, der vor seiner Anwendung entsprechend inkrementiert wird, ohne den Rahmen der Erfindung zu verlassen.
  • Ändert sich etwa durch den Start oder das Ende einer Task der Zustand eines Kernes, werden die Ende-Zeiten für alle laufenden Tasks neu berechnet, indem die vormals erzeugten Ereignisse entweder gelöscht oder modifiziert werden.
  • Das Verfahren lässt sich entsprechend auf Mehrprozessorkernsysteme mit getrenntem Speicher, aber anderweitig gemeinsam genutzten Datenübertragungsressourcen (zum Beispiel Bus, Cross-Bar, Network-on-Chip) übertragen.
  • Das beschriebene Verfahren ist auf komplexere Systeme erweiterbar, in denen etwa der Zustand anderer Ressourcen als der Kerne Relevanz für die Laufzeit haben, beispielsweise Router in einen Network-on-Chip. Insbesondere sind auch andere Form des Erhalts von Korrekturfaktoren möglich als die in dem Beispiel aufgeführten Tabellen, zum Beispiel mathematische Formeln oder andere Formen von (statistischen) Modellen.
  • Dieses Verfahren (10) kann beispielsweise in Software oder Hardware oder in einer Mischform aus Software und Hardware beispielsweise in einer Arbeitsstation (20) implementiert sein, wie die schematische Darstellung der 2 verdeutlicht.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • EP 2851815 A1 [0004]

Claims (10)

  1. Verfahren (10) zum Ermitteln einer Laufzeit eines Programmcodes auf einem System mit zumindest einem ersten Prozessorkern, einem zweiten Prozessorkern und von den Prozessorkernen zumindest bereichsweise gemeinsam genutztem Speicher, gekennzeichnet durch folgende Merkmale: – eine Basislaufzeit eines durch den ersten Prozessorkern auszuführenden Programmcodes auf dem System wird ermittelt (11), – zumindest für den ersten Prozessorkern wird ein statistischer Korrekturfaktor für die Basislaufzeit abhängig von einem den Programmcode speichernden Bereich des Speichers und einem Betriebszustand des zweiten Prozessorkernes ermittelt (12) und – ausgehend von der Basislaufzeit wird mittels des Korrekturfaktors die Laufzeit des Programmcodes geschätzt (13).
  2. Verfahren (10) nach Anspruch 1, gekennzeichnet durch folgende Merkmale: – zu einem Startzeitpunkt des Programmcodes wird anhand der geschätzten Laufzeit ein voraussichtlicher Endzeitpunkt des Programmcodes berechnet und – durch ein Ereignissystem wird ein zum Endzeitpunkt auszulösendes Ereignis hinterlegt.
  3. Verfahren (10) nach Anspruch 2, gekennzeichnet durch folgende Merkmale: – wenn der Betriebszustand sich zwischen dem Startzeitpunkt und dem Endzeitpunkt ändert, wird der Korrekturfaktor abhängig von dem geänderten Betriebszustand neu ermittelt (12) und – mittels des neuen Korrekturfaktors wird eine Restlaufzeit des Programmcodes geschätzt.
  4. Verfahren (10) nach Anspruch 3, gekennzeichnet durch folgende Merkmale: – anhand der geschätzten Restlaufzeit wird der Endzeitpunkt neuberechnet und – durch das Ereignissystem wird das Ereignis dem neuen Endzeitpunkt angepasst.
  5. Verfahren (10) nach Anspruch 4, gekennzeichnet durch mindestens eines der folgenden Merkmale: – das Ereignis wird angepasst, indem das Ereignis gelöscht und neu hinterlegt wird oder – das Ereignis wird angepasst, indem das Ereignis entsprechend dem neuen Endzeitpunkt modifiziert wird.
  6. Verfahren (10) nach einem der Ansprüche 1 bis 5, gekennzeichnet durch mindestens eines der folgenden Merkmale: – die Basislaufzeit wird durch eine Messung ermittelt (11), – die Basislaufzeit wird durch eine Berechnung ermittelt (11) oder – die Basislaufzeit wird durch eine Experteneinschätzung ermittelt (11).
  7. Verfahren (10) nach einem der Ansprüche 1 bis 6, gekennzeichnet durch folgende Merkmale: – der Betriebszustand ist durch Zustände der Prozessorkerne und eine Quelle des auszuführenden weiteren Programmcode bestimmt und – während des Schätzens (13) wird der Korrekturfaktor im Wesentlichen für jeden Prozessorkern, jeden Bereich des Speichers und jeden Betriebszustand geeignet vorgehalten und bedarfsweise abgerufen oder berechnet.
  8. Computerprogramm, welches eingerichtet ist, das Verfahren (10) nach einem der Ansprüche 1 bis 7 auszuführen.
  9. Maschinenlesbares Speichermedium, auf dem das Computerprogramm nach Anspruch 8 gespeichert ist.
  10. Vorrichtung (20), die eingerichtet ist, das Verfahren (10) nach einem der Ansprüche 1 bis 7 auszuführen.
DE102015223714.1A 2015-11-30 2015-11-30 Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem Pending DE102015223714A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102015223714.1A DE102015223714A1 (de) 2015-11-30 2015-11-30 Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015223714.1A DE102015223714A1 (de) 2015-11-30 2015-11-30 Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem

Publications (1)

Publication Number Publication Date
DE102015223714A1 true DE102015223714A1 (de) 2017-06-01

Family

ID=58692882

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015223714.1A Pending DE102015223714A1 (de) 2015-11-30 2015-11-30 Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem

Country Status (1)

Country Link
DE (1) DE102015223714A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2851815A1 (de) 2013-09-18 2015-03-25 dSPACE digital signal processing and control engineering GmbH Testeinrichtung zum Echtzeittest eines virtuellen Steuergeräts

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2851815A1 (de) 2013-09-18 2015-03-25 dSPACE digital signal processing and control engineering GmbH Testeinrichtung zum Echtzeittest eines virtuellen Steuergeräts

Similar Documents

Publication Publication Date Title
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
EP2442248B1 (de) Kopplungsmethodik für nicht-iterative Co-Simulation
DE102016014152A1 (de) Numerische Steuervorrichtung
EP3080668B1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
DE102018111851A1 (de) Verfahren zur ereignisbasierten Simulation eines Systems
DE102020214951A1 (de) Verfahren zum dynamischen Zuweisen von Speicherbandbreite
DE102016007651B4 (de) Numerische Steuerung mit Funktion zur automatischen Auswahl eines Speicherungsziels für ein Bearbeitungsprogramm
DE102013000857A1 (de) Kompakte Funktionsablaufprotokollierung
EP3566398B1 (de) Verfahren und halbleiterschaltkreis zum schützen eines betriebssystems eines sicherheitssystems eines fahrzeugs
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
DE102012210482A1 (de) Verfahren und System zum Migrieren von Geschäftsprozessinstanzen
DE112013004307T5 (de) Systeme und Verfahren für eine zustandsbasierte Testfallgenerierung zur Software-Validierung
DE102006006843B4 (de) Verfahren zum Antworten auf einen Steuermodulausfall
DE102015223714A1 (de) Verfahren und Vorrichtung zum Ermitteln einer Laufzeit eines Programmcodes auf einem Mehrprozessorkernsystem
DE102013009364B4 (de) Verfahren und System zur Erkennung von latenten Fehlern in Mikrocontrollern
DE102016206490A1 (de) Elektronische steuereinheit
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk
DE102022200255A1 (de) Verfahren und Vorrichtung zum Verarbeiten von Daten
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
EP2338111B1 (de) Verfahren und vorrichtung zum testen eines rechnerkerns in einer mindestens zwei rechnerkerne aufweisenden recheneinheit
DE102020132160A1 (de) Elektronische Steuereinheit
DE102018217014A1 (de) Dynamische Qualifizierung von Nutzdaten
DE112018002837T5 (de) Überwachung für gemeinsam angeordnete container in einem hostsystem
DE102014208568A1 (de) Recheneinheit und Betriebsverfahren hierfür
DE102017211564A1 (de) Elektronische steuereinheit

Legal Events

Date Code Title Description
R012 Request for examination validly filed