DE102019128206B4 - Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren - Google Patents

Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren Download PDF

Info

Publication number
DE102019128206B4
DE102019128206B4 DE102019128206.3A DE102019128206A DE102019128206B4 DE 102019128206 B4 DE102019128206 B4 DE 102019128206B4 DE 102019128206 A DE102019128206 A DE 102019128206A DE 102019128206 B4 DE102019128206 B4 DE 102019128206B4
Authority
DE
Germany
Prior art keywords
data
memory
functions
function
local
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.)
Active
Application number
DE102019128206.3A
Other languages
English (en)
Other versions
DE102019128206A1 (de
Inventor
Philipp Jungklaß
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.)
IAV GmbH Ingenieurgesellschaft Auto und Verkehr
Original Assignee
IAV GmbH Ingenieurgesellschaft Auto und Verkehr
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 IAV GmbH Ingenieurgesellschaft Auto und Verkehr filed Critical IAV GmbH Ingenieurgesellschaft Auto und Verkehr
Priority to DE102019128206.3A priority Critical patent/DE102019128206B4/de
Publication of DE102019128206A1 publication Critical patent/DE102019128206A1/de
Application granted granted Critical
Publication of DE102019128206B4 publication Critical patent/DE102019128206B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor

Landscapes

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

Abstract

Verfahren zur statischen Speicherverwaltungsoptimierung eines integrierten Mehrkernprozessors (1), der wenigstens zwei Prozessorkerne (3A, 3B, 3C), umfassend jeweils mindestens je einen lokalen Programm-RAM-Speicher (9A, 9B, 9C), einen lokalen Programm-Cache (10A, 10B, 10C), einen lokalen Daten-RAM-Speicher (11A, 11B, 11C) sowie einen lokalen Daten-Cache (12A, 12B, 12C), wenigstens einen globalen Flashspeicher (5), wenigstens einen globalen RAM-Speicher (6), sowie wenigstens ein internes Kommunikationssystem (8), das eingerichtet ist, um die Prozessorkerne (3A, 3B, 3C), den globalen Flashspeicher (5) sowie den globalen RAM-Speicher (6) miteinander zu verbinden, umfasst und auf welchem eine Software implementiert ist, die Programmcode in Form von Funktionen und Variablen in Form von Daten verarbeitet, gekennzeichnet durch die Schritte:• Erhalten eines Systembeschreibungsprotokolls (16), eines Projektbeschreibungsprotokolls (17), eines Wertebeschreibungsprotokolls (18) und eines Ablaufbeschreibungsprotokolls (19) als Eingangsvektoren,◯ wobei aus dem Projektbeschreibungsprotokoll (17) hervorgeht, welche Funktionen vorhanden sind, welche Daten diese verarbeiten, von welchen Prozessorkernen (3A, 3B, 3C) diese ausgeführt werden und ob diese bereits einer internen Priorisierung unterliegen, wobei sich die interne Priorisierung aus aufgabenbezogenen Ranglisteninformationen ergibt,◯ wobei das Wertebeschreibungsprotokoll (18) die physikalischen Adressen und Größen der Funktionen und Daten beim Kompilieren bzw. Implementieren der Software zur Verfügung stellt,◯ wobei das Ablaufbeschreibungsprotokoll (19) die Aufrufhäufigkeit der einzelnen Prozessorkerne (3A, 3B, 3C) auf die unterschiedlichen physikalischen Adressen protokolliert;• Berechnung einer Priorität zu jeder Funktion und zu jedem Datum der Software in Abhängigkeit von deren aus den Eingangsvektoren ermittelten Aufrufhäufigkeiten innerhalb der Tasks der Software sowie den Prioritäten der Tasks der Software und den Prioritäten der Prozessorkerne (3A, 3B, 3C), sodass gemäß der Abhängigkeit die Priorität einer Funktion und eines Datums mit deren zunehmenden Aufrufhäufigkeiten innerhalb der Tasks zunimmt;• Erzeugung einer Funktionsrangliste, durch Auflistung sämtlicher Funktionen und einer Datenrangliste, durch Auflistung sämtlicher Daten und Sortierung der Funktions- und Datenranglisten in Abhängigkeit der berechneten Prioritäten;• Allokieren der Funktionen und Daten aus den Funktions- und Datenranglisten in Reihenfolge, beginnend mit den Listeneinträgen mit der höchsten Priorität,◯ wobei beim Allokieren zunächst die lokalen Speicher (4) der Prozessorkerne (3A, 3B, 3C), die genannte Funktionen und Daten verarbeiten, zugewiesen werden,◯ wobei die globalen Speicher (7) dann zugewiesen werden, wenn die Speicherkapazität der genannten lokalen Speicher (4) erschöpft ist.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft das Gebiet der elektrischen und digitalen Datenverarbeitung von Mikrocontrollern, insbesondere der Aufteilung, Verwaltung und Kommunikation von Speichereinheiten auf integrierten Mehrkernprozessoren.
  • Stand der Technik
  • Mikrocontroller mit Mehrkernprozessoren weisen ein gegenüber Einzelkernprozessoren verbessertes Leistungs-Energie-Verhältnis auf, da die Energieeffizienz von mehreren Prozessorkernen geringerer Leistung höher ist als die eines einzelnen komplexeren Prozessorkerns. Die Erwartungshaltung bezüglich der Verwendung von mehreren Prozessorkernen auf einem Mikrocontroller ist ein mit der Anzahl der einzelnen Prozessorkerne linear ansteigender Leistungszuwachs. Aufgrund von quantitativ nicht vorhersagbaren Mechanismen, wie Zwischenkernkommunikation, konkurrierender Speicherzugriff durch Prozessorkerne, begrenzte Übertragungsraten interner Kommunikationssysteme oder Kohärenzprotokolle ist eine exakte Vorhersage von einzelnen Rechenzeiten nicht möglich. Besonders bei sicherheitskritischen Systemen, die eine harte Echtzeitanforderung innehaben, ist jedoch eine Analyse der Rechenzeiten unabdingbar, weswegen die „worst case execution time“ (WCET) pessimistisch angenommen werden muss, oder mit anderen Worten wird bei der Softwareentwicklung von Mikrocontrollern mit harter Echtzeitanforderung stets die größtmögliche WCET angenommen. Das führt unter Umständen wiederum zu teilweise ungenutzten Rechenkapazitäten, wodurch die Leistungsausbeute des Mikrocontrollers sinkt und die Kosten steigen.
  • Um diesem Defizit zu begegnen, existieren im Stand der Technik unterschiedliche Ansätze für eine bessere Leistungsausbeute oder eine bessere WCET. Zum einen kann bereits während der Herstellung des Mikrocontrollers eine Architektur des oder der Mehrkernprozessoren entworfen werden, bei welcher die Rechenzeiten besser vorhersagbar sind. Bei diesem sogenannten kernbeschränkenden Paradigma soll ein deterministisches Verhalten von sicherheitskritischen Anwendungen erzeugt werden. Dies kann beispielsweise dadurch erreicht werden, dass sicherheitskritische Funktionen nur auf einem bestimmten Prozessorkern ausgeführt werden, wobei zur Zeit der Ausführung der sicherheitskritischen Funktionen kein anderer Prozessorkern verwendet wird.
  • Zum anderen können bei einem zeitorientierten Ansatz, dem sogenannten zeitbeschränkenden Paradigma, während der Softwareentwicklung eines Mikrocontrollers, Regeln aufgestellt werden, die das Verhalten von sicherheitskritischen Anwendungen innerhalb zugehöriger Zeitschlitze einschränken, sodass verhindert wird, dass mehrere Prozessorkerne gleichzeitig, jedoch in zugeordneten Zeitschlitzen einzeln arbeiten. Hierbei soll die Anzahl der unvorhersehbaren Verhaltensweisen reduziert werden.
  • In der Patentschrift US20120084525A1 ist ein Verfahren zur dynamischen Speicherverwaltung von Mehrkernprozessoren mit einem zeitbeschränkenden Paradigma offenbart, wobei während eines ersten Zeitschlitzes ein erster Prozessorkern auf eine Speichersteuerung zugreift, wenigstens ein Datum aus seinem lokalen Speicher in einen globalen Speicher schreibt und ein weiteres Datum sowie eine Anweisung aus einem globalen Speicher in seinen lokalen Speicher lädt. Während diesem Zeitschlitz wird wenigstens ein weiterer Prozessorkern verhindert, auf diese Speichersteuerung zuzugreifen und verarbeitet stattdessen wenigstens ein Datum und eine zugehörige Anweisung aus seinem lokalen Speicher. Im darauffolgenden Zeitschritt wird das Verhältnis umgekehrt, wobei der erste Prozessorkern verhindert wird, auf die Speichersteuerung zuzugreifen, sodass dieser das Datum und die zugehörige Anweisung, die im vorhergehenden Zeitschlitz in seinen lokalen Speicher geladen wurden, verarbeitet und gleichzeitig der weitere Prozessorkern Zugriff auf die Speichersteuerung erhält.
  • In der Patentschrift US8943287B1 ist ein Mehrkernprozessorsystem mit einem kernbeschränkenden Paradigma offenbart, wobei einzelnen Prozessorkernen Prozessorkerngeschwindigkeitsbegrenzer zugeordnet sind, um die Geschwindigkeit einzuschränken, mit denen von den einzelnen Prozessorkernen auf Daten zugegriffen wird. Somit wird jeder Speicherzugriff durch einen Prozessorkern auf eine erwartete Rechenzeit beschränkt, wodurch die WCET mit höherer Genauigkeit vorhergesagt werden kann.
  • In der Patentschrift WO2018078610A1 ist eine Mehrkernprozessorarchitektur offenbart, wobei jedem Prozessorkern mehrere Zähler zugewiesen sind, welche unterschiedliche Datenverarbeitungsschritte oder Speicherzugriffe durch die jeweiligen Prozessorkerne zählen, um Prozessorkerne ausfindig zu machen, deren Arbeit zu einer Überlastung eines internen Kommunikationssystems führt. Ausfindig gemachte Prozessorkerne werden für den nächsten Zeitschlitz in den Leerlauf versetzt, um die Last des internen Kommunikationssystems zu reduzieren.
  • In Yang Song et al: „A Self-aware Resource Management Framework for Heterogeneous Multicore SoCs with Diverse QoS Targets". In: ACM Transactions on Architecture and Code Optimization, April 2019 Article No.: 16. doi: 10.1145/3319804 wird ein Verfahren zur Speicherbandbreitenzuweisung für einzelne Prozessorkerne offenbart, wobei die einzelnen Prozessorkerne einen gemeinsamen RAM-Speicher nutzen. Die Zuweisung basiert auf einer Metrik, wobei zur Laufzeit des Systems Lastprofile der einzelnen Prozessorkerne ermittelt und in eine Priorität umgerechnet werden, wobei einzelne Prozessorkerne Speicherbandbreite in Abhängigkeit dieser Priorität zugewiesen bekommen.
  • In Y. Kim, M. Papamichael, O. Mutlu and M. Harchol-Balter, „Thread Cluster Memory Scheduling: Exploiting Differences in Memory Access Behavior,“ 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture, Atlanta, GA, USA, 2010, pp. 65-76, doi: 10.1109/MICRO.2010.51 wird ein Verfahren zum dynamischen koordinieren von Speicherzugriffen zur Laufzeit offenbart, wobei Threads, welche auf einem gemeinsamen RAM-speicher laufen mittels Koordinator, in Abhängigkeit von deren Zugriffshäufigkeit, in zwei Gruppen aufgeteilt werden. Die beiden Gruppen bestehen aus wenigen, aber schnellen Zugriffen und vielen, aber langsamen Zugriffen, wobei der Koordinator dynamisch Speicherzugriffe, in Abhängigkeit der Gruppenzugehörigkeit, zuweist.
  • Die durch den Stand der Technik aufgezeigten Methoden zur Verbesserung der Leistungsausbeute von Mehrkernprozessoren weisen einige Nachteile auf. Ansätze, die auf kernbeschränkende Paradigmen basieren, sind durch eine schlechte Ressourcenausnutzung gekennzeichnet, da die Arbeit von verschiedenen Prozessorkernen zugunsten eines einzelnen Prozessorkerns, welcher sicherheitskritische Funktionen ausführt, verhindert wird. Ansätze, die auf zeitbeschränkenden Paradigmen basieren, können zu einem asynchronen Betrieb zwischen den einzelnen Prozessorkernen führen. Generell werden durch physische oder zeitliche Beschränkungen nicht alle verfügbaren Rechenkapazitäten ausgenutzt. Weiterhin eignen sich dynamische Speicherverwaltungsverfahren, aufgrund der beschriebenen Unvorhersehbarkeit, nur bedingt für Systeme mit harter Echtzeitanforderung.
  • Aufgabe der Erfindung
  • Der vorliegenden Erfindung ist es daher Aufgabe, ein Verfahren zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren mit harter Echtzeitanforderung bereitzustellen, wobei durch effiziente Ressourcenausnutzung eine verbesserte Leistungsausbeute erreicht wird.
  • Lösung der Aufgabe
  • Diese Aufgabe wird durch ein computerimplementiertes Verfahren zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren, nach den Merkmalen der Patentansprüche 1 bis 8, sowie durch eine Vorrichtung nach den Merkmalen des Patentanspruchs 9 erfüllt.
  • Darstellung und Vorteile der Erfindung
  • Der vorliegenden Erfindung liegt die Intention zu Grunde, die Speicherverwaltung von Mehrkernprozessoren während der Softwareimplementierung zu optimieren, um durch eine effizientere Ausnutzung von Ressourcen eine höhere Effektivität der Rechenleistung, verminderte Wartezeiten bei der Zwischenkernkommunikation und konkurrierende Speicherzugriffe durch die einzelnen Prozessorkerne zu erzielen, sowie die Vorhersehbarkeit der WCET zu verbessern. Dazu werden Prioritäten von sämtlichen in der Software angewendeten Funktionen und Variablen, anhand ihrer Aufrufhäufigkeit in den einzelnen Prozessorkernen, berechnet und Ranglisten erstellt. Unter Einbezug der Hardwarearchitektur des verwendeten Mikrocontrollers der integrierten Mehrkernprozessoren, der Softwarestruktur, den Eigenschaften von Programmcode und Variablen sowie des zu Grunde liegenden Rechenablaufes, wird basierend auf den aufgestellten Ranglisten ein Speicherverteilungsschema erzeugt, was dazu verwendet werden kann, um eine automatische Speicherallokation der Software auf dem Mikrocontroller auszuführen. Zum besseren Verständnis und als Unterstützung der Beschreibung wird sich auf folgende Abbildungen bezogen. Hierbei zeigen:
    • 1 den schematischen Aufbau eines Mehrkernprozessors, zur Ausführung des Verfahrens,
    • 2 den schematischen Prozess der Speicherverwaltungsoptimierung,
    • 3 den Prozessablauf der Berechnung von Prioritäten,
    • 4 den Prozessablauf der Erzeugung von Ranglisten,
    • 5 den Prozessablauf der Speicherverwaltungsoptimierung.
  • In 1 ist der schematische Aufbau eines Mikrocontrollers (1) mit Mehrkernprozessor (2) dargestellt, welcher zur Ausführung des erfindungsgemäßen Verfahrens geeignet ist. Ein entsprechender Mikrocontroller (1) umfasst wenigstens einen Mehrkernprozessor (2), der wenigstens zwei Prozessorkerne (3A, 3B) aufweist. Zur Anwendung des erfindungsgemäßen Verfahrens werden bevorzugt Mehrkernprozessoren (2) verwendet, die nach einer modifizierten Harvard-Architektur aufgebaut sind. Diese umfassen einen lokalen Speicherbereich (4), der den Prozessorkernen (3A, 3B) zugeordnet ist, sowie weiterhin einen oder mehrere globale Flashspeicher (5), einen oder mehrere globale RAM-Speicher (6), die zusammen den globalen Speicherbereich (7) des Mehrkernprozessors (2) bilden. Die unterschiedlichen Komponenten des lokalen Speicherbereichs (4) und des globalen Speicherbereichs (7) sind durch ein internes Kommunikationssystem (8) miteinander, untereinander sowie mit weiterer, nicht dargestellter Peripherie verbunden. Das interne Kommunikationssystem (8) ist hierbei vorzugsweise ein Bussystem oder eine Crossbar. Alternativ ist jedes weitere interne Kommunikationssystem anwendbar, das dazu geeignet ist, ein Netzwerk zwischen dem lokalen (4) und globalen Speicherbereich (7) aufzubauen.
  • Im lokalen Speicherbereich (4) sind den einzelnen Prozessorkernen (3A, 3B) lokale RAM-Speicher (9A, 9B, 11A, 11B), die in lokale Programm-RAM-Speicher (9A, 9B) und lokale Daten-RAM-Speicher (11A, 11B) aufgeteilt sind, sowie lokale Caches (10A, 10B, 12A, 12B), die in lokale Programm-Caches (10A, 10B) und lokale Daten-Caches (12A, 12B) aufgeteilt sind, zugeordnet. Speicher des lokalen Speicherbereichs (7) sind physisch unmittelbar an den Prozessorkernen (3A, 3B) angeordnet, wodurch diese den schnellst möglichen Zugriff auf diese Speicher realisieren. Die Prozessorkerne (3A, 3B) können dabei lesend oder schreibend auf die Speicher zugreifen. Im folgenden Verlauf werden die Ausführungen des lesenden oder schreibenden Zugriffs auf Speicher durch die Bezeichnung „Speicherzugriff“ verallgemeinert. Lokale RAM-Speicher (9A, 9B, 11A, 11B) werden vom Softwareentwickler verwaltet und sind entsprechend modifizierbar. Lokale Caches (10A, 10B, 12A, 12B) halten Kopien von entfernteren Speichern, wie bspw. aus dem globalen Speicherbereich (7) vor. Diese sind nicht direkt durch den Softwareentwickler modifizierbar. Auf lokale Programm-RAM-Speicher (9A, 9B) und lokale Programm-Caches (10A, 10B) kann Programmcode gespeichert oder abgebildet werden, wobei Programmcode im Sinne der Erfindung Funktionen der zu implementierenden Software sind. Auf lokale Daten-RAM-Speicher (11A, 11B) und lokale Daten-Caches (12A, 12B) können Variablen gespeichert oder abgebildet werden, wobei Variablen im Sinne der Erfindung Daten der zu implementierenden Software sind.
  • Im globalen Speicherbereich (7) können globale Flashspeicher (5) über separate Speicherbänke (13A, 13B) verfügen, wobei vorzugsweise mindestens je eine Speicherbank (13A, 13B) einem Prozessorkern (3A, 3B) zugeordnet ist. Globale RAM-Speicher (6) können ebenfalls eine oder mehrere RAM-Bänke (14) aufweisen. Speicher des globalen Speicherbereiches (7) können gleichermaßen Funktionen und Daten speichern. Zusätzlich können auf diese, je nach Anbindung durch das interne Kommunikationssystem (8), parallele Speicherzugriffe durch die einzelnen Prozessorkerne (3A, 3B) erfolgen.
  • Als Zwischenkernkommunikation im Sinne der Erfindung wird der Speicherzugriff eines ersten Prozessorkerns (3A) auf lokale Speicher (9B, 10B, 11B, 12B) eines zweiten Prozessorkerns (3B) bezeichnet oder betrifft die gemeinsame Nutzung von Funktionen oder Daten, die auf globalen RAM-Speichern (6) gelagert sind und wobei wenigstens ein erster Prozessorkern (3A) schreibenden und ein weiterer Prozessorkern (3B) lesenden Speicherzugriff ausführt. Generell kann Zwischenkernkommunikation erforderlich sein, wenn ein erster Prozessorkern (3A) Daten verarbeiten muss, die ein zweiter Prozessorkern (3B) produziert. Muss ein erster Prozessorkern (3A) über das interne Kommunikationssystem (8) auf den lokalen Speicherbereich (4) eines zweiten Prozessorkerns (3B) zugreifen, so erhöht dies deutlich die Rechenzeit, im Vergleich zu einem Speicherzugriff auf einen seiner eigenen lokalen Speicher (9B, 10B, 11B, 12B). Zusätzlich können je nach Belastung des internen Kommunikationssystems (8) Wartezeiten entstehen, sodass eine WCET nur schlecht vorhersehbar ist.
  • Als konkurrierender Speicherzugriff im Sinne der Erfindung wird der parallele Speicherzugriff von zwei oder mehr Prozessorkernen (3A, 3B) auf einem Speicher verstanden. Konkurrierender Speicherzugriff kann erforderlich sein, wenn Funktionen oder Daten im globalen Speicherbereich (7) gelagert sind, die von mehreren Prozessorkernen (3A, 3B) verarbeitet werden.
  • Bei der Implementierung von Software werden Funktionen und Daten, die auf der Software ausgeführt werden, automatisch auf die einzelnen Speicher des Mehrkernprozessors (2) verteilt. Dies kann bspw. in Abhängigkeit des Speicherbedarfs der jeweiligen Funktionen oder Daten erfolgen. Dadurch, dass die Struktur der Software und die damit verbundene Arbeitsweise des Mikrocontrollers (1) hierbei außer Acht gelassen werden, kann es vorkommen, dass Funktionen oder Daten, die sehr häufig von mehreren Prozessorkernen (3A, 3B) verarbeitet werden, ungünstig allokiert sind, sodass Zwischenkernkommunikation und/oder konkurrierende Speicherzugriffe häufig auftreten und die genannten negativen Effekte bezüglich der Leistungsausbeute des Mikrocontrollers und der pessimistischen Vorhersage der WCET mit sich führen.
  • An dieser Stelle setzt das erfindungsgemäße Verfahren an, das bezugnehmend auf 2 weitere Informationen bezüglich der zu implementierenden Software sowie insbesondere die Zusammenwirkung von dieser mit dem verwendeten Mikrocontroller (1) im Prozess der Speicherallokationsoptimierung (15) berücksichtigt. Das erfindungsgemäße Verfahren verarbeitet ein Systembeschreibungsprotokoll (16), ein Projektbeschreibungsprotokoll (17), ein Wertebeschreibungsprotokoll (18), sowie ein Ablaufbeschreibungsprotokoll (19) als Eingangsvektoren. Anhand des Systembeschreibungsprotokolls (16) erfolgt eine Systemanalyse (20) bezüglich des Aufbaus und der Funktionsweise des angewendeten Mikrocontrollers (1). Anhand des Projektbeschreibungsprotokolls (17), des Wertebeschreibungsprotokolls (18), sowie des Ablaufbeschreibungsprotokolls (19) erfolgt die Berechnung einer Priorität (21) zu jeder Funktion und jedem Datum, die auf der zu implementierenden Software verwendet werden. Aus der Systemanalyse (20) und den Prioritäten (21) wird anschließend je eine Rangliste für Funktionen und eine Rangliste für Daten erstellt (22). Ausgehend von den erzeugten Ranglisten (22) wird ein Schema erstellt, welches beschreibt, wie die Funktionen und Daten auf die unterschiedlichen Speicherbereiche (4, 7) des Mehrkernprozessors (2) zu allokieren sind. Das Ergebnis des erfindungsgemäßen Verfahrens ist entsprechend ein Speicherverteilungsschema (24), welches zur Implementierung der angewendeten Software auf dem verwendeten Mikrocontroller (1) eingesetzt werden kann, um durch effiziente Speicherverteilung, erfindungsgemäß vorteilhaft die Rechenleistung sowie die Vorhersehbarkeit der WCET, durch verminderte Wartezeiten bei Zwischenkernkommunikation und reduzierte konkurrierende Speicherzugriffe der einzelnen Prozessorkerne zu verbessern.
  • Die genaue Funktionsweise des erfindungsgemäßen Verfahrens wird im Folgenden detailliert beschrieben. Die Systemanalyse (20) zielt auf die Beschreibung des Aufbaus des verwendeten Mikrocontrollers (2) ab, sowie insbesondere auf dessen Speicherhierarchie. Hierzu enthält das Systembeschreibungsprotokoll (16) mindestens Informationen über die Anzahl der Prozessorkerne (3A, 3B) des Mehrkernprozessors (2), die Anzahl, Art und Größe der Speicher des lokalen Speicherbereichs (4) sowie des globalen Speicherbereichs (7), die physische Adressierung sämtlicher Speicher sowie die mögliche Geschwindigkeit der Speicherzugriffe auf diese durch die einzelnen Prozessorkerne (3A, 3B), die Art des internen Kommunikationssystems (8) und die Anbindung der unterschiedlichen Speicherbereiche (4, 7) über dieses, sowie weitere denkbare, systembeschreibende Eigenschaften. In einer Ausführungsform des erfindungsgemäßen Verfahrens besteht das Systembeschreibungsprotokoll (16) aus der Beschreibungssprache für Mehrkernprozessoren, genannt „software-hardware interface for multi-many-core“ (SHIM) und basiert auf dem XML-Dateiformat. Alternativ kann jede weitere Beschreibung des Mehrkernprozessors (2) angewendet werden, insofern sie wenigstens die genannten Informationen des Systembeschreibungsprotokolls (16) enthält. Das Systembeschreibungsprotokoll (16) wird vorzugsweise vom Hersteller des verwendeten Mikrocontrollers (1) geliefert. Das erfindungsgemäße Verfahren kann somit in vorteilhafter Art und Weise auf sämtliche Mikrocontroller (1) mit Mehrkernprozessoren (2) angewendet werden, die vorzugsweise eine einfache oder modifizierte Harvard-Architektur aufweisen. Es handelt sich hierbei erfindungsgemäß um strukturbezogene Ranglisteninformationen.
  • Die Berechnung der Prioritäten (21) zielt auf die Priorisierung von einzelnen Funktionen und Daten der zu implementierenden Software im Kontext der Softwarestruktur, der Eigenschaften der Funktionen und Daten sowie der Arbeitsweise des verwendeten Mikrocontrollers (1) ab. Hierzu stellt das Projektbeschreibungsprotokoll (17) den Aufbau und die Wirkungsweise der auf dem Mikrocontroller angewendeten Software zur Verfügung. Aus dem Projektbeschreibungsprotokoll (17) geht hervor, welche Funktionen vorhanden sind, welche Daten diese verarbeiten, von welchen Prozessorkernen (3A, 3B) diese ausgeführt werden und ob diese bereits einer internen Priorisierung unterliegen. Das erfindungsgemäße Verfahren entnimmt der Projektbeschreibungsinformation insbesondere, welche Funktionen sicherheitskritisch sind oder besonderen Anforderungen bezüglich der Echtzeitfähigkeit unterliegen. Beispielsweise im Kontext einer Motorsteuerung eines Fahrzeuges mit Verbrennungsmotor ist die Echtzeitanforderung der Einspritzmengenberechnung oder der Ansteuerung der Einspritzdüsen als höher einzuschätzen als die Bedienung der Klimaanlage. Wiederum ist die Funktionalität des Notbremsassistenten als sicherheitsrelevanter einzustufen als die exakte Einspritzmengenberechnung des Verbrennungsmotors, wodurch sich aus dem Inhalt der angewendeten Software bereits unterschiedliche Anforderungen bezüglich der Priorität der einzelnen Funktionen ergeben. Diese Anforderungen sollen das Projektbeschreibungsprotokoll (17) enthalten, das vorzugsweise vom Hersteller oder Entwickler der zu implementierenden Software erzeugt wird. Es handelt sich hierbei also erfindungsgemäß um aufgabenbezogene Ranglisteninformationen.
  • Das Wertebeschreibungsprotokoll (18) stellt die physikalischen Adressen und Größen, oder mit anderen Worten die Werte, der Funktionen und Daten zur Verfügung. Die Werte der Funktionen und Daten werden hierbei aus dem Quellcode der Software extrahiert. Dies geschieht vorzugsweise bei der Implementierung der Software auf dem verwendeten Mikrocontroller (1) durch eine Quellcodeübersetzung beim Kompilieren des Quellcodes in einem Compiler. Hierbei sei angemerkt, dass die Software erfindungsgemäß zunächst einmal auf dem verwendeten Mikrocontroller (1) implementiert werden muss, wobei durch das erfindungsgemäße Verfahren währenddessen die notwendigen Informationen zur Optimierung der Speicherverwaltung extrahiert und erzeugt werden. Es handelt sich hierbei um quantitätsbezogene Ranglisteninformationen.
  • Das Ablaufbeschreibungsprotokoll (19) stellt nunmehr Informationen über die Arbeitsweise des verwendeten Mikrocontrollers (1) bezüglich der auf ihm implementierten Software zur Verfügung. In einer Ausführungsform besteht das Ablaufbeschreibungsprotokoll (19) aus einem sogenannten „Trace-Mitschnitt“ des Mikrocontrollers (1), das die Aufrufhäufigkeit der einzelnen Prozessorkerne (3A, 3B) auf die unterschiedlichen physikalischen Adressen protokolliert. Auf diese Art und Weise kann das genaue Verhalten des Systems ermittelt werden. Für eine optimale Speicherverteilung durch das erfindungsgemäße Verfahren ist ein vorzugsweise über den gesamten Programmcode vollständig aufgenommener Trace-Mitschnitt erforderlich. In einer Ausführungsform des erfindungsgemäßen Verfahrens kann der Anwender zusätzliche Hardware, wie beispielsweise eine Trace-Einheit oder einen Debugger, über dazu kompatible Schnittstellen mit dem Mikrocontroller verbinden und beispielsweise bei Systemtests, während der Softwareimplementierung den Programmcode mitlesen. Alternativ kann eine Codeanalyse des zur Verfügung gestellten Programmcodes der Software erfolgen. Es handelt sich hierbei um prozessbezogene Ranglisteninformationen.
  • Die strukturbezogenen Ranglisteninformationen, die aus der Systemanalyse (20) des Systembeschreibungsprotokolls (16) extrahiert werden, sowie die aufgabenbezogenen Ranglisteninformationen aus dem Projektbeschreibungsprotokoll (17), die quantitätsbezogenen Ranglisteninformationen aus dem Wertebeschreibungsprotokoll (18) und die prozessbezogenen Ranglisteninformationen aus dem Ablaufbeschreibungsprotokoll (19) werden in der Berechnung der Prioritäten (21) der einzelnen Funktionen und Daten zur Erzeugung der Ranglisten (22) einbezogen. Die Berechnung der Prioritäten (21) wird erfindungsgemäß für Funktionen und für Daten getrennt durchgeführt, wobei jedoch im Wesentlichen die gleichen Prozesse für Funktionen und Daten angewendet werden. Hierbei wird zwischen synchroner Ausführung von Funktionen oder synchronem Abruf von Daten, nachfolgend als synchrone Funktionen und Daten bezeichnet, sowie zwischen asynchroner Ausführung von Funktionen oder asynchronem Abruf von Daten, nachfolgend als asynchrone Funktionen und Daten bezeichnet, unterschieden. Die betrachteten Mehrkernprozessoren (2) der verwendeten Mikrocontroller (1) arbeiten vorzugsweise zeitschlitzbasiert, wobei innerhalb vorgegebener Zeitraster Tasks wiederholt ausgeführt werden. Ein Task im Sinne der Erfindung ist eine Aufgabe die durch einen computerimplementierten Algorithmus gelöst wird. Diese kann beispielsweise die Berechnung einer physikalischen Größe aus verschiedenen Eingangsgrößen darstellen. So kann eine Funktion beispielsweise die arithmetische Mittelwertbildung sein, welche innerhalb der Berechnungsvorschriften eines Tasks mehrfach ausgeführt wird. Synchrone Funktionen und Daten werden im Zeitraster zyklisch wiederholt ausgeführt und sind somit definiert vorhersehbar, oder mit andern Worten, weißen sie ein deterministisches Verhalten auf. Asynchrone Funktionen und Daten treten unabhängig vom Zeitraster auf und sind somit nicht vorhersehbar.
  • Bezugnehmend auf 3 werden die Rechenvorschriften zur Berechnung der Prioritäten (21) von synchronen und asynchronen Funktionen nachfolgend detailliert beschrieben. Der Prozessablauf zur Berechnung der Prioritäten (21) startet entsprechend mit den synchronen Funktionen. Für die Berechnung der Prioritäten (21) der synchronen Funktionen wird in einem ersten Schritt (S2101) die Priorität der einzelnen Funktion innerhalb eines Tasks nach Gleichung (G1) durchgeführt. p t ( ƒ ) = n A t m a x ( ƒ ) p ( t )
    Figure DE102019128206B4_0001
  • Hierbei entspricht pt(ƒ)der Priorität (p) einer Funktion (ƒ) innerhalb eines Tasks (t). Erfindungsgemäß vorteilhaft soll die Priorität (p) der einzelnen Funktionen (ƒ) anhand deren Aufrufhäufigkeit bestimmt werden. Hierbei ist nAtmax(ƒ) die maximale Anzahl an Aufrufen der Funktion (ƒ) innerhalb der Task (t) und p(t) die Priorität (p) der Task (t) innerhalb des betrachteten Prozessorkerns (3A, 3B), wobei diese in einer Ausführungsform des erfindungsgemäßen Verfahrens eine aufgabenbezogene Information ist und aus dem Projektbeschreibungsprotokoll (17) extrahiert wird. Die Berechnung von pt(ƒ), der Priorität (p) der betrachteten Funktion (f) innerhalb des Tasks (t) wird für jeden Task (t) des Prozessorkerns (3A, 3B) durchgeführt, bis die maximale Anzahl an Tasks (ntmax) erreicht ist, in denen die Funktion (f) angewendet wird (S2102, S2103). In einem weiteren Schritt (S2104) wird nun aus pt(ƒ), der Priorität (p) der betrachteten Funktion (f) innerhalb des Tasks (t), pc(ƒ), die Priorität (p) dieser Funktion (f) innerhalb des betrachteten Prozessorkerns (3A, 3B), nach der folgenden Gleichung (G2) bestimmt. p c ( ƒ ) = t = 0 t = n t m a x p t ( ƒ ) p ( c )
    Figure DE102019128206B4_0002
  • Hierbei werden die pt(ƒ) für sämtliche Tasks (t) bis zur maximalen Anzahl der Tasks (ntmax), in denen die Funktion (f) Anwendung findet, aufsummiert und mit p(c), der Priorität (p) des betrachteten Prozessorkerns (3A, 3B), multipliziert. In einer Ausführungsform ist die Information über die Priorität (p) des betrachteten Prozessorkerns (3A, 3B) p(c) eine aufgabenbezogene Ranglisteninformation und wird aus dem Projektbeschreibungsprotokoll (17) extrahiert. Diese Berechnung von pc(ƒ), der Priorität (p) der Funktion (f) innerhalb des betrachteten Prozessorkerns (3A, 3B), erfolgt für jeden Prozessorkern (3A, 3B), bis die maximale Anzahl an Prozessorkernen (ncmax) erreicht ist (S2105, S2106).
  • In einem weiteren Schritt (S2107) wird nun aus pc(ƒ), der Priorität (p) der Funktion (f) innerhalb des betrachteten Prozessorkerns (3A, 3B), ps(ƒ), die Priorität (p) der Funktion (f) innerhalb des betrachteten Systems nach der folgenden Gleichung (G3) bestimmt. p s ( ƒ ) = c = 0 c = n c m a x p c ( ƒ )
    Figure DE102019128206B4_0003
  • Das betrachtete System (s) im Sinne der Erfindung ist der Mikrocontroller (1). Demnach ergibt sich ps(ƒ), die Priorität (p) der Funktion (f) innerhalb des betrachteten Systems (s), aus der Aufsummierung der einzelnen pc(ƒ), der Prioritäten (p) der Funktion (f) innerhalb der betrachteten Prozessorkerne (3A, 3B), über die maximale Anzahl der Prozessorkerne (ncmax), in der die Funktion (f) Anwendung findet. Als Ergebnis stellt ps(ƒ), die Priorität (p) der Funktion (f) innerhalb des betrachteten Systems (s), die berechnete Priorität der betrachteten Funktion (f) dar, die später in den Ranglisten (22) einsortiert wird. Hierfür ist die vorangegangene Berechnung für sämtliche Funktionen (f) der Software durchzuführen, die synchron ausgeführt werden (S2108, S2109).
  • Im Anschluss an die Berechnung der Prioritäten (p) der synchronen Funktionen (f) werden jene der asynchronen Funktionen (f) berechnet (S2110). In einer Ausführungsform des erfindungsgemäßen Verfahrens kann die Ausführung asynchroner Funktionen auf der Basis sogenannter „Interrupts“ erfolgen, wobei die Interrupts nicht planbar sind, wodurch konventionell viel Rechenzeit für eine Abschätzung der WCET reserviert werden muss. Erfindungsgemäß vorteilhaft werden Funktionen (f), die aus asynchronen Interrupts aufgerufen werden, mit höheren Prioritäten (p) versehen als sämtliche synchron ausgeführte Funktionen (f), welche im Zeitschlitz-Task-Kontext verwendet werden. Werden die Gleichungen (G1) und (G2) in die Gleichung (G3) substituiert, berechnen sich ps(ƒ), die Prioritäten (p) der Funktionen (f) innerhalb des betrachteten Systems (s), nach folgender Gleichung (G4). p s ( ƒ ) = c = 0 c = n c m a x t = 0 t = n t m a x n A t m a x ( ƒ ) p ( t ) p ( c )
    Figure DE102019128206B4_0004
  • Damit Funktionen (f) weiterhin nach ihrer Aufrufhäufigkeit priorisiert werden können, erfolgt die Berechnung der asynchron ausgeführten Funktionen (f) nach den gleichen Rechenvorschriften wie die der synchron ausgeführten Funktionen (f) nach Gleichung (G4), was zusätzlich dadurch bedingt ist, dass Funktionen (f) generell sowohl in einem asynchronen Interrupt als auch im synchronen Zeitschlitz-Task-Kontext aufgerufen werden können. So wird lediglich im letzten Schritt erfindungsgemäß ein Offset eingeführt (S2111), sodass sich psa(ƒ), die Prioritäten (p) der asynchron ausgeführten Funktionen (f) innerhalb des betrachteten Systems (s) nach folgender Gleichung (G5) bestimmen (S2112). p s a ( ƒ ) = c = 0 c = n c m a x t = 0 t = n t m a x n A t m a x ( ƒ ) p ( t ) p ( c ) + p s ( ƒ ) m a x
    Figure DE102019128206B4_0005
  • Wobei ps(ƒ)max die maximale Priorität (p) sämtlicher synchron ausgeführten Funktionen (f) ist, sodass selbst die niedrigste Priorität (p) einer asynchron ausgeführten Funktion (f) größer ist als die höchste Priorität (p) einer synchron ausgeführten Funktion (f) (S2113). In einer alternativen Ausführungsform, kann psa(ƒ), die Priorität (p) der asynchron ausgeführten Funktionen (f) innerhalb des betrachteten Systems, nach der folgenden Gleichung (G6) bestimmt werden. p s a ( ƒ ) = c = 0 c = n c m a x t = 0 t = n t m a x n A t m a x ( ƒ ) p ( t ) p ( c ) + p s ( ƒ ) m a x + ε
    Figure DE102019128206B4_0006
  • Wobei der Summand ε einen beliebig kleinen Wert annehmen kann, sodass ε > 0 gilt. Hierdurch wird sichergestellt, dass für den Fall, dass eine asynchron ausgeführte Funktion (f) eine Priorität (p) von 0 annimmt, diese dennoch größer ist, als ps(ƒ)max die maximale Priorität (p) sämtlicher synchron ausgeführten Funktionen (f). Die genannten Rechenvorschriften werden, analog zu den synchronen Funktionen, für jede asynchrone Funktion ausgeführt (S2114, S2115).
  • Zur Berechnung der Prioritäten (p) von Daten gelten die nachfolgend detailliert beschriebenen Rechenvorschriften, die dem gleichen Prozessablauf der Funktionen entsprechen. Daten, die in einem Zeitschlitz-Task-Kontext aufgerufen werden, oder mit anderen Worten, die synchron aufgerufen werden, werden nach der folgenden Gleichung (G7) bestimmt. p s ( d ) = c = 0 c = n c m a x t = 0 t = n t m a x n A t m a x ( d ) p ( t ) p ( c )
    Figure DE102019128206B4_0007
  • Wobei ps(d), die Priorität (p) des Datums (d) innerhalb des Systems (s) und nAtmax(d) die Anzahl der Aufrufe des Datums (d) sind und wobei ps(d) für jedes Datum berechnet wird. Entsprechend berechnet sich psa(d), die Priorität (p) des asynchron aufgerufenen Datums (d) innerhalb des Systems (s), nach folgender Gleichung (G8). p s a ( d ) = c = 0 c = n c m a x t = 0 t = n t m a x n A t m a x ( d ) p ( t ) p ( c ) + p s ( d ) m a x
    Figure DE102019128206B4_0008
  • Wobei auch hier ps(d)max die maximale Priorität (p) sämtlicher synchron ausgerufenen Daten (d) ist. In einer alternativen Ausführungsform kann psa(d), die Priorität (p) der asynchron aufgerufenen Daten (d) innerhalb des betrachteten Systems (s), nach der folgenden Gleichung (G9) bestimmt werden. p s a ( d ) = c = 0 c = n c m a x t = 0 t = n t m a x n A t m a x ( f ) p ( t ) p ( c ) + p s ( d ) m a x + ε
    Figure DE102019128206B4_0009
  • Wobei auch hier der Summand ε einen beliebig kleinen Wert annehmen kann, sodass ε > 0 gilt. Die Prioritäten ps(d), der synchron aufgerufenen Daten (d), sowie psa(d), der asynchron aufgerufenen Daten (d), werden ebenfalls für sämtliche Daten (d) der Software berechnet.
  • Zu den nach solcherart aufgestellten Prioritäten (p), die ihrerseits Ranglisteninformationen darstellen, anhand welcher die entsprechenden Funktionen (f) und Daten (d) in die Ranglisten einsortiert werden sollen, werden erfindungsgemäß vorteilhaft noch weitere Ranglisteninformationen bezüglich der Zwischenkernkommunikation beigefügt. Hierzu werden prozessbezogene Informationen aus dem Ablaufbeschreibungsprotokoll (19) extrahiert, wobei sämtliche Variablen ermittelt werden, auf welche verschiedene Prozessorkerne (3A, 3B) einen Speicherzugriff haben. Diese Variablen dienen somit automatisch der Zwischenkernkommunikation und können größere Wartezeiten verursachen, weswegen diese erfindungsgemäß vorteilhaft aus dem Ablaufbeschreibungsprotokoll (19) heraus markiert werden und zusätzlich vermerkt wird, welche Prozessorkerne (3A, 3B) lesenden und welche schreibenden Speicherzugriff auf die jeweilige Variable innehaben.
  • Im Anschluss an die Berechnung der Prioritäten (21) erfolgt die Erzeugung der Ranglisten für Funktionen und Daten (22). Hierfür werden die Funktionen in einer Funktionsrangliste und die Daten in einer Datenrangliste eingetragen. In 4 ist der Prozessablauf der Erzeugung der Ranglisten (22) dargestellt, wobei die Verfahrensweise für die Funktionsrangliste und die Datenrangliste identisch sind. In einem ersten Schritt (S2201) werden Funktionen und Daten jeweils in die Funktions- oder Datenrangliste einsortiert, solange, bis sämtliche Funktionen und Daten erfasst sind (S2202, 2203). In einem weiteren Schritt (S2204) werden die Funktionen und Daten innerhalb ihrer Funktions- und Datenranglisten in Abhängigkeit ihrer Priorität sortiert. In einer Ausführungsform werden die Einträge der beiden Ranglisten absteigend sortiert, sodass der erste Eintrag jener mit dem höchsten Wert der Priorität ist.
  • Die nach solcherart aufgestellten Ranglisten können in einem weiteren Schritt optional erneut nach weiteren Kriterien sortiert werden. In einer Ausführungsform werden die Funktionen und Daten entsprechend anhand ihres Speicherbedarfs bewertet. Der Speicherbedarf ist hierbei eine quantitätsbezogene Ranglisteninformation und wird aus dem Wertebeschreibungsprotokoll (18) extrahiert (S2205). Anschließend werden die Listeneinträge der beiden Ranglisten erneut durchgegangen und auf die Erfüllung des Sortierungskriteriums geprüft (S2206). In einer Ausführungsform, wobei das Sortierungskriterium der Speicherbedarf ist, wird der entsprechende Listeneintrag darauf geprüft, ob der Speicherbedarf des zu bewertenden Listeneintrages höher ist als jener, der sich aus der Addition der Speicherbedarfe weiterer Listeneinträge ergibt, die unmittelbar nachfolgend in der jeweiligen Rangliste angeordnet sind. Der Hintergrund ergibt sich daraus, dass, bezogen auf den Speicherbedarf, mehrere kleine Funktionen oder Daten, die zusammen den gleichen oder weniger Speicherbedarf aufweisen als der betrachtete Listeneintrag höher priorisiert werden können, somit in der jeweiligen Rangliste aufsteigen und perspektivisch im Speicherverteilungsschema an eine schnellere Speicheranbindung allokiert werden. Dies hat den Vorteil, dass der Mehrkernprozessor somit in der Lage ist, zum Preis des gleichen Speicherplatzes mehrere kleinere Funktionen schnell anbinden zu können als lediglich eine größere Funktion. In diesem Fall würde der betrachtete Listeneintrag um einen Index erhöht werden und in der jeweiligen Rangliste, zugunsten anderer Funktionen oder Daten, absteigen. Dies kann solange wiederholt werden, bis definierte Sortierungskriterien erfüllt sind (S2207, S2208). Auf diese Art und Weise wird jeder Listeneintrag der Funktions- und Datenranglisten verarbeitet (S2209, S2210).
  • In einer alternativen Ausführungsform können weitere Sortierungskriterien angewendet werden, die vorzugsweise auf der Grundlage strukturbezogener, aufgabenbezogener, quantitätsbezogener oder prozessbezogener Ranglisteninformationen bewertet werden können, die aus dem Systembeschreibungsprotokoll (16), dem Projektbeschreibungsprotokoll (17), dem Wertebeschreibungsprotokoll (18) und dem Ablaufbeschreibungsprotokoll (19) extrahiert werden können. Somit ist es dem Softwareentwickler möglich, eigene Anforderungen bezüglich unterschiedlicher Funktionen und Daten zu priorisieren, die möglicherweise gesondert vom Speicherbedarf und der Anbindungsgeschwindigkeit betrachtet werden müssen.
  • Ausgehend von den erzeugten Ranglisten (22) erfolgt die Speicherverwaltungsoptimierung (23), welche ein Speicherverwaltungsschema (24) als Ergebnis hat. In 5 ist der Prozessablauf der Speicherverwaltungsoptimierung (23) dargestellt. Das Ziel der Speicherverwaltungsoptimierung (23) ergibt sich erfindungsgemäß aus zwei Ansätzen, wobei zum einen Funktionen und Daten, die entsprechend der Ranglisten hoch priorisiert sind, physisch möglichst nah am verarbeitenden Prozessorkern (3A, 3B) zu allokieren sind, sodass ein umso schnellerer Speicherzugriff auf entsprechende Funktionen und Daten möglich ist, je wichtiger diese sind und wobei zum anderen Funktionen und Daten gleichzeitig in der Art allokiert werden, dass die Mechanismen konkurrierender Speicherzugriff sowie Wartezeiten bei der Zwischenkernkommunikation minimiert werden. Die nunmehr erzeugten Funktions- und Datenranglisten werden entsprechend getrennt voneinander der Reihenfolge nach abgearbeitet, wobei mit dem Listeneintrag begonnen wird, welcher die höchste Priorität aufweist. In einer Ausführungsform, in der neben der berechneten Priorität der Funktionen oder Daten weitere Sortierungskriterien herangezogen wurden, wie bspw. der Speicherbedarf, werden die Funktions- und Datenranglisten von oben nach unten abgearbeitet, vorausgesetzt, die Ranglisten (22) sind nach solcherart sortiert, dass die durch die Sortierungskriterien am wichtigsten befundenen Listeneinträge oben beginnen.
  • Bezugnehmend auf 5 wird daher in einem ersten Schritt (S2301) überprüft, ob die lokalen Speicher (4) der einzelnen Prozessorkerne (3A, 3B) noch Speicherkapazitäten vorhanden haben. Ist genügend freier Speicherplatz in den lokalen Speichern (4) vorhanden, wird der oberste Listeneintrag in einem weiteren Schritt (S2302) in den lokalen Speicher (4) des Prozessorkerns (3A, 3B) geschrieben, der die Funktion oder das Datum verwendet und die höchste Priorität aufweist. Als lokale Speicher (4) im Sinne der Erfindung gelten für Funktionen die Programm-RAM-Speicher (9A, 9B) und die Programm-Caches (10A, 10B), sowie für Daten die Daten-RAM-Speicher (11A, 11B) und die Daten-Caches (12A, 12B). Generell werden als erstes erfindungsgemäß die lokalen RAM-Speicher (9A, 9B, 11A, 11B) befüllt. Die lokalen RAM-Speicher (9A, 9B, 11A, 11B) beziehen ihre Funktionen und Daten bei Systemstart aus dem globalen Flashspeicher (5) und verändern ihren Inhalt zur Laufzeit zum Teil nicht mehr. Entsprechend werden die in der Rangliste am höchsten einsortierten Listeneinträge in die lokalen RAM-Speicher (9A, 9B, 11A, 11B) allokiert. Auf diese Art und Weise haben die jeweiligen Prozessorkerne (3A, 3B) den schnellstmöglichen Speicherzugriff auf entsprechende Funktionen und Daten. Sind die lokalen RAM-Speicher (9A, 9B, 11A, 11B) voll, werden als nächstes die lokalen Caches (10A, 10B, 12A, 12B) befüllt. Generell eignen sich lokale Caches (10A, 10B, 12A, 12B) nur bedingt für eine vorgeschlagene Speicherverwaltungsoptimierung, da diese zwar physisch und in ihrer Funktionsweise den lokalen RAM-Speichern (9A, 9B, 11A, 11B) entsprechen, jedoch zur Laufzeit ihren Inhalt ändern können. Sind auch die lokalen Caches (10A, 10B, 12A, 12B) vollständig befüllt, gelten die lokalen Speicher (4) als erschöpft.
  • In einem zweiten Schritt (S2303) werden Kopien von dem aktuellen Listeneintrag, der in den lokalen Speicher (4) des Prozessorkerns (3A, 3B) mit der höchsten Priorität allokiert wurde, in die lokalen Speicher (4) der weiteren Prozessorkerne (3A, 3B) allokiert, welche die Funktion oder das Datum des aktuellen Listeneintrages verwenden. Die lokalen Kopien des Listeneintrages dienen der Reduzierung von konkurrierendem Speicherzugriff. Verarbeiten mehrere Prozessorkerne (3A, 3B) die gleiche Funktion oder das gleiche Datum, welche lediglich im lokalen Speicher (4) des Prozessorkerns (3A, 3B) der höchsten Priorität gespeichert ist, kann es passieren, dass mehrere Prozessorkerne (3A, 3B) gleichzeitig auf diese Funktion oder dieses Datum und somit gleichzeitig auf den gleichen Speichereintrag zugreifen müssen. Durch die lokalen Kopien haben alle Prozessorkerne (3A, 3B) garantiert den schnellsten Speicherzugriff auf die entsprechende Funktion oder das entsprechende Datum. In einer Ausführungsform, in der eine Funktion oder ein Datum mittels lokaler Kopien in den lokalen Speichern (4) mehrere Prozessorkerne (3A, 3B) allokiert ist und wenigstens ein Prozessorkern (3A, 3B) den Wert eines Datums verändert, oder mit anderen Worten ein Produzent dafür ist, werden im Mikrocontroller Kohärenzprotokoll angewendet, um den aktuellsten Stand für jeden Prozessorkern (3A, 3B) zu gewährleisten. Dies ist erforderlich, wenn neben den lokalen RAM-Speichern (9A, 9B, 11A, 11B) auch lokale Caches (10A, 10B, 12A, 12B) für die Speicherverwaltungsoptimierung genutzt werden.
  • In einem weiteren Schritt (S2304) wird eine Kopie des aktuellen Listeneintrages in eine Flashbank (13A, 13B) des globalen Flashspeichers (5) allokiert. Zur Initialisierung des Systems beim Start wird der Listeneintrag aus dieser Flashbank (13A, 13B) in die lokalen Speicher (4) der Prozessorkerne (3A, 3B) geladen, die die entsprechende Funktion oder das Datum verwenden. Anschließend wird der nunmehr nach solcherart allokierte Listeneintrag in einem weiteren Schritt (S2305) aus der jeweiligen Rangliste (22) gelöscht und es wird in einem weiteren Schritt (S2306) überprüft, ob sich weitere Listeneinträge in der entsprechenden Rangliste (22) befinden. Ist dies nicht der Fall, beginnt der Prozessablauf wieder beim ersten Schritt (S2301), für den nächsten Listeneintrag.
  • Sind die lokalen Speicher (4) erschöpft und existieren weitere Listeneinträge, so werden diese in einem weiteren Schritt (S2307) in die Flashbänke (13A, 13B) der globalen Speicher (5) allokiert. Der aktuelle Listeneintrag wird entsprechend in eine erste Flashbank (13A) allokiert, die vorzugsweise dem Prozessorkern (3A) zugeordnet ist, der die Funktion oder das Datum des Listeneintrages verwendet und die höchste Priorität aufweist. Generell kann der globale Flashspeicher (5) in mehrere Flashbänke (13A, 13B) partitioniert sein, hierbei ist jedoch nicht vorherbestimmt, ob genügend einzelne Flashbänke (13A, 13B) vorhanden sind, sodass für jeden Prozessorkern (3A, 3B) eine Flashbank (13A, 13B) reserviert werden kann. Diese Informationen werden im erfindungsgemäßen Verfahren in vorteilhafter Art und Weise aus den strukturbezogenen Ranglisteninformationen des Systembeschreibungsprotokolls (16) und der Systemanalyse (20) entnommen. Aus diesem Grund können in globalen Speichern (5) allokierte Funktionen und Daten zu konkurrierendem Speicherzugriff sowie zu einer Busüberlast führen, wodurch diese prinzipbedingt einen langsameren Speicherzugriff als lokale Speicher (4) bereitstellen.
  • In einem weiteren Schritt (S2308) werden daher Kopien der Funktion oder des Datums, welches im vorherigen Schritt (S2307) in eine Flashbank (13A, 13B) allokiert wurde, in weitere Flashbänke (13A, 13B) gespeichert, vorzugsweise in jene, die weiteren Prozessorkernen (3A, 3B) zugeordnet sind, die die Funktion oder das Datum des aktuellen Listeneintrages verwenden. Auf diese Art und Weise werden konkurrierende Speicherzugriffe reduziert, in dem Fall, dass mehrere Prozessorkerne (3A, 3B) die gleiche Funktion oder das gleiche Datum verwenden, die auf globalen Speichern (5) allokiert sind. Anschließend wird der nunmehr nach solcherart allokierte Listeneintrag in einem weiteren Schritt (S2309) aus der jeweiligen Rangliste (22) gelöscht und es wird in einem weiteren Schritt (S2310) überprüft, ob sich weitere Listeneinträge in der entsprechenden Rangliste (22) befinden. Ist dies nicht der Fall, beginnt der Prozessablauf wieder beim ersten Schritt (S2301), für den nächsten Listeneintrag.
  • Einen Sonderfall bezüglich des erfindungsgemäßen Verfahrens stellen Daten bzw. Variablen dar, von denen bekannt ist, dass diese explizit zur Zwischenkernkommunikation genutzt werden. Bei diesen Daten ist konkurrierender Speicherzugriff nicht zu vermeiden. Um die Rechenleistung der einzelnen Prozessorkerne (3A, 3B) in der Ausführung ihrer Tasks, mittels deren lokaler Speicher (4), durch Zwischenkernkommunikation nicht negativ zu beeinflussen, werden die entsprechenden Variablen in den globalen RAM-Speichern (6) allokiert.
  • Sind sämtliche Funktionen und Daten allokiert, ist das Ergebnis des erfindungsgemäßen Verfahrens ein Speicherverteilungsschema (24), das Informationen enthält, wie die Funktionen und Daten bzw. der Programmcode und die Variablen auf entsprechende Speicher eines Mehrkernprozessors (2) eines verwendeten Mikrocontrollers (1) aufzuteilen sind. Das nach solcherart entstandene Speicherverwaltungsschema (24) kann nunmehr für die Implementierung der spezifischen Software auf dem spezifischen Mikrocontroller verwendet werden, aus dessen Kombination es die strukturbezogenen Ranglisteninformationen aus dem Systembeschreibungsprotokoll (16), die aufgabenbezogenen Ranglisteninformationen aus dem Projektbeschreibungsprotokoll (17), die quantitätsbezogenen Ranglisteninformationen aus dem Wertebeschreibungsprotokoll (18) und die prozessbezogenen Ranglisteninformationen aus dem Ablaufbeschreibungsprotokoll (19) für die Berechnung der Prioritäten (21) entnommen hat.
  • Ausführungsbeispiel
  • Nachfolgend wird ein Ausführungsbeispiel der beschriebenen Ausführungsformen aufgezeigt. Dieses dient der prinzipiellen Veranschaulichung, wobei das erfindungsgemäße Verfahren nicht durch das aufgezeigte Ausführungsbeispiel limitiert sein soll. Weitere Besonderheiten und Vorteile ergeben sich zusätzlich aus den unterstützenden Schaubildern, hierbei zeigen:
    • 6 den Aufbau eines beispielhaften Dreikernprozessors,
    • Tab. 1 strukturbezogene, aufgabenbezogene und wertebezogene Ranglisteninformationen,
    • Tab. 2 die erfindungsgemäß erzeugte Funktionsrangliste des Dreikernprozessors,
    • Tab. 3 das erfindungsgemäße Speicherverteilungsschema des Dreikernprozessors.
  • Das nachfolgende Ausführungsbeispiel bezieht sich auf die Speicherverwaltungsoptimierung von Funktionen. Für Daten gilt der Ansatz ebenso. 6 zeigt den schematischen Aufbau eines beispielhaften Dreikernprozessors, umfassend drei Prozessorkerne (3A, 3B, 3C), wobei jeder Prozessorkern (3A, 3B, 3C) jeweils einen lokalen Programm-RAM-Speicher (9A, 9B, 9C), einen lokalen Programm-Cache (10A, 10B, 10C), einen lokalen Daten-RAM-Speicher (11A, 11B,11C) sowie einen lokalen Daten-Cache (12A, 12B, 12C) aufweist. Die drei Prozessorkerne (3A, 3B, 3C) sind über ein Bussystem (8) untereinander und mit 4 Flashbänken (13A, 13B, 13C, 13D) eines globalen Flashspeichers (5) verbunden. Sämtlichen genannten Speichern sind Speicherkapazitäten zugewiesen, welche in eckigen Klammern unter der jeweiligen Bezeichnung in der Abbildung vermerkt sind. Sowohl der Dreikernprozessor, einschließlich seiner genannten Komponenten, als auch die Werte der abgebildeten Speicherkapazitäten sind rein fiktiver Natur und dienen lediglich der qualitativen beispielhaften Darstellung einer möglichen Ausführungsform eines Mehrkernprozessors (2) zur Ausführung des erfindungsgemäßen Verfahrens. Das aufgezeigte Beispiel soll hierbei das erfindungsgemäße Verfahren nicht begrenzen, sodass die Anzahl der Prozessorkerne (3A, 3B, 3C), sämtlicher Speicher und internen Kommunikationssysteme (8) sowie weiterer, nicht dargestellter Peripherie, frei wählbar sind. Dies wird insbesondere durch die Intention des erfindungsgemäßen Verfahrens verdeutlicht, auf einen beliebigen Mikrocontroller (1) bzw. dessen Mehrkernprozessoren (2) anwendbar zu sein.
  • Der in 6 dargestellte Aufbau eines beispielhaften Dreikernprozessors wird dem erfindungsgemäßen Verfahren durch die Systemanalyse (20), unter Verwendung eines Systembeschreibungsprotokolls (16), in Form von strukturbezogenen Ranglisteninformationen mitgeteilt. Aus einem Projektbeschreibungsprotokoll (17), einem Wertebeschreibungsprotokoll (18) sowie einem Ablaufbeschreibungsprotokoll (19) entnimmt das erfindungsgemäße Verfahren weitere Ranglisteninformationen, welche in Tab. 1 zusammengefasst sind. Dargestellt sind hierbei die drei Prozessorkerne c0, c1, c2 (3A, 3B, 3C) und die dazugehörigen Prioritäten der Prozessorkerne p(c). Jedem Prozessorkern c0, c1, c2 (3A, 3B, 3C) sind unterschiedliche Tasks t0, t1, t2, t3 zugeordnet, die wiederum verschiedene Prioritäten p(t) innerhalb des jeweiligen Prozessorkerns c0, c1, c2 (3A, 3B, 3C) aufweisen. In der zu implementierenden Software sind weiterhin 7 Funktionen (f) vorhanden (f0,...,f7), wobei zu jeder Funktion (f) der zugehörige Speicherbedarf in Form der Größe sowie die Art Funktionsaufrufe zugewiesen ist. Bis auf die Funktion f5, die asynchron aufgerufen wird, werden sämtliche Funktionen (f) synchron aufgerufen. Im Hauptteil von Tab. 1 sind für jede Funktion (f), auf deren Zeile die maximalen Funktionsaufrufe nAtmax(ƒ), für jeden Task t0, t1, t2, t3, jedes Prozessorkerns c0, c1, c2 aufgeführt. Ist der Wert der maximalen Funktionsaufrufe nAtmax(ƒ) für einen Task t0, t1, t2, t3 gleich 0, so benötigt dieser Task die genannte Funktion (f) nicht. Gilt dieser Zustand für sämtliche Tasks t0, t1, t2, t3 eines Prozessorkerns c0, c1, c2 (3A, 3B, 3C), wie beispielsweise für die Funktion f0, so wird diese Funktion (f) in dem genannten Prozessorkern c0 nicht verwendet.
  • In der letzten Spalte von Tab. 1 sind die nach dem Teilprozess der Prioritätsberechnung (21) berechneten Systemprioritäten ps(ƒ) für die jeweiligen Funktionen (f) ausgeführt. Nachfolgend soll die Prioritätsberechnung (21) für die erste Funktion f0 beispielhaft detailliert ausgeführt werden. Die Funktion f0 wird in den beiden Prozessorkernen c1, c2 verwendet, wobei der Prozessorkern c1 die beiden Tasks t0, t1 , sowie der Prozessorkern c2 den Task t0 ausführt, in denen die Funktion f0 angewendet wird. Zunächst erfolgt dabei die Berechnung der Prioritäten pt(ƒ) der Funktion f0 innerhalb der Tasks t0, t1, jeweils getrennt für jeden Prozessorkern c1, c2 nach Gleichung (G1): c 1 : p t 0 ( ƒ 0 ) = n A t m a x ( ƒ 0 ) p ( t 0 ) = 23 1 = 23
    Figure DE102019128206B4_0010
    c 1 : p t 1 ( ƒ 0 ) = n A t m a x ( ƒ 0 ) p ( t 1 ) = 1 3 = 3
    Figure DE102019128206B4_0011
    c 2 : p t 0 ( ƒ 0 ) = n A t m a x ( ƒ 0 ) p ( t 0 ) = 5 4 = 20
    Figure DE102019128206B4_0012
  • In einem weiteren Schritt erfolgt die Berechnung der Priorität pc(ƒ) der Funktion f0 innerhalb der Prozessorkerne c1, c2 nach Gleichung (G2): c 1 : p c 1 ( ƒ 0 ) = t = 0 t = 1 p t ( ƒ 0 ) p ( c 1 ) = p t 0 ( ƒ 0 ) p ( c 1 ) + p t 1 ( ƒ 0 ) p ( c 1 ) = 23 2 + 3 2 = 52
    Figure DE102019128206B4_0013
    c 2 : p c 2 ( ƒ 0 ) = t = 0 t = 0 p t ( ƒ 0 ) p ( c 2 ) = p t 0 ( ƒ 0 ) p ( c 2 ) = 20 3 = 60
    Figure DE102019128206B4_0014
  • In einem weiteren Schritt erfolgt die Berechnung der Priorität ps(ƒ) der Funktion ƒ0 innerhalb des Systems nach Gleichung (G3): p s ( ƒ 0 ) = c = 1 c = 2 p c ( ƒ 0 ) p c 2 ( ƒ 0 ) = 52 + 60 = 112
    Figure DE102019128206B4_0015
  • Auf diese Art und Weise werden die Systemprioritäten ps(ƒ) der restlichen synchronen Funktionen berechnet, welche in der letzten Spalte der Tab. 1 aufgelistet sind. Die Systempriorität psa5) der asynchronen Funktion ƒ5 ergibt sich aus der ursprünglichen Gleichung (G5) bzw. (G6). Da diese jedoch nicht für eine bestimmte Task t0, t1, t2, t3 vorgesehen ist, existieren auch keine Werte, um für die Funktion ƒ5 ein Äquivalent der synchronen Systempriorität ps(ƒ) zu berechnen. Aus diesem Grund wird die Systempriorität psa5) der asynchronen Funktion ƒ5 aus der modifizierten Gleichung (G6) berechnet, wobei der Offset ε beispielhaft mit dem Wert 1 angenommen wird. Der größte Wert der synchronen Systempriorität ps(ƒ) entspricht jener der ersten Funktion ps0). p s a ( ƒ 5 ) = p s ( ƒ 5 ) + p s ( ƒ ) m a x + ε = p s ( ƒ 0 ) + ε = 112 + 1 = 113
    Figure DE102019128206B4_0016
  • Aus den nach solcherart berechneten Systemprioritäten ps(ƒ), psa(ƒ) wird in einem weiteren Schritt die Rangliste aufgestellt und sortiert. Die sortierte Rangliste ist in Tab. 2 dargestellt, beginnend mit der Spalte für die Funktionen (f), deren zugehöriger Speicherbedarf, der Art der Funktionsaufrufe sowie deren Systempriorität. Zusätzlich sind in den letzten 3 Spalten diejenigen Funktionen (f) markiert, welche in den entsprechenden Prozessorkernen c0, c1, c2 (3A, 3B, 3C) verwendet werden.
  • In einem weiteren Schritt werden die einzelnen Funktionen (f) nun den jeweiligen Speichern des Dreikernprozessors zugewiesen, beginnend mit Funktion ƒ5, die die höchste Priorität aufweist. Das Ergebnis ist das Speicherverteilungsschema (24), das in Tab. 3 dargestellt ist. Nachfolgend wird die Allokation der Funktionen (f) in das Speicherverteilungsschema (24) detailliert beschrieben.
  • Erfindungsgemäß wird als erstes der oberste Listeneintrag verarbeitet, der der Funktion ƒ5 entspricht. Die Funktion ƒ5 ist eine asynchrone Funktion (f), weswegen davon ausgegangen werden muss, dass sie in sämtlichen Prozessorkernen c0, c1, c2 (3A, 3B, 3C) Anwendung finden kann. Diese wird daher, zusammen mit Kopien, in die lokalen Programm-RAM-Speicher (9A, 9B, 9C) sämtlicher Prozessorkerne c0, c1, c2 (3A, 3B, 3C) allokiert. Die lokalen RAM-Speicher (9A, 9B, 9C) weisen im Ausführungsbeispiel eine Speicherkapazität von 4kB auf. Die Funktion ƒ5 umfasst einen Speicherbedarf von 3kB. Durch das Allokieren der Funktion ƒ5 in die lokalen Programm-RAM-Speicher (9A, 9B, 9C) haben diese weiterhin 1kB Speicherkapazität zur Verfügung. Da die lokalen Programm-RAM-Speicher (9A, 9B, 9C) zum Systemstart mit Werten aus dem globalen Flashspeicher (5) initialisiert werden, wird die Funktion ƒ5 zusätzlich in die erste Flashbank (13A) des globalen Speichers (5) allokiert und belegt dort ebenfalls 3kB Speicherplatz. Sämtliche Flashbänke (13A, 13B, 13C, 13D) weisen im Ausführungsbeispiel eine Speicherkapazität von 10kB auf. Die erste Flashbank (13A) hat nunmehr nur noch 7kB freie Speicherkapazität.
  • Im folgenden Schritt wird nun der nächste Listeneintrag zugewiesen, welcher der Funktion ƒ0 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 1kB aufweist und in den letzten beiden Prozessorkernen c1, c2 (3B, 3C) verwendet wird. Aus diesem Grund wird die Funktion ƒ0 in die lokalen Programm-RAM-Speicher (9B, 9C) der letzten beiden Prozessorkerne c1, c2 (3B, 3C) allokiert. Analog zum vorherigen Listeneintrag wird auch die Funktion ƒ0 zusätzlich in der ersten Flashbank (13A) allokiert. Somit sind die lokalen Programm-RAM-Speicher (9B, 9C) der letzten beiden Prozessorkerne c1, c2 (3B, 3C) erschöpft und der lokale Programm-RAM-Speicher (9A) des ersten Prozessorkerns c1 (3A) verfügt weiterhin über 1kB freie Speicherkapazität sowie die erste Flashbank (13A) verfügt über nunmehr 6kB freie Speicherkapazität.
  • Im folgenden Schritt wird nun der nächste Listeneintrag zugewiesen, welcher der Funktion ƒ6 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 2kB aufweist und in sämtlichen Prozessorkernen c0, c1, c2 (3A, 3B, 3C) verwendet wird. Da kein lokaler Programm-RAM-Speicher (9A, 9B, 9C) genügend freie Speicherkapazität aufweist, wird die Funktion ƒ6 und deren Kopien in die lokalen Programm-Caches (10A, 10B, 10C) der Prozessorkerne c0, c1, c2 (3A, 3B, 3C) allokiert. Da die lokalen Programm-Caches (10A, 10B, 10C) ebenso wie die lokalen Programm-RAM-Speicher (9A, 9B, 9C) bei Systemstart aus dem globalen Flashspeicher (5) initialisiert werden, wird die Funktion ƒ6 auch in die erste Flashbank (13A) allokiert. Somit sind nunmehr auch sämtliche Programm-Caches (10A, 10B, 10C) in ihrer freien Speicherkapazität erschöpft und die erste Flashbank (13A) weist weiterhin eine freie Speicherkapazität von 4kB auf.
  • Im folgenden Schritt wird nun der nächste Listeneintrag zugewiesen, welcher der Funktion ƒ1 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 4kB aufweist und in sämtlichen Prozessorkernen c0, c1, c2 (3A, 3B, 3C) verwendet wird. Da sämtliche lokale Speicher (4) der Prozessorkerne c0, c1, c2 (3A, 3B, 3C) nicht genügend freie Speicherkapazitäten aufweisen, um die Funktion ƒ1 aufzunehmen, wird diese in die zweite Flashbank (13B) allokiert, sowie zusätzlich Kopien davon in die letzten beiden Flashbänke (13C, 13D). Das Vorhandensein von 4 Flashbänken (13A, 13B, 13C, 13D) begünstigt die Speicherkapazitäten zur Verminderung von konkurrierendem Speicherzugriff. Dies hat das erfindungsgemäße Verfahren erkannt und die Funktion ƒ1 in genau 3 der Flashbänke (13A, 13B, 13C, 13D) allokiert, da dem erfindungsgemäßen Verfahren bekannt ist, dass 3 Prozessorkerne c0, c1, c2 (3A, 3B, 3C) existieren, die potentiell auf die Funktion ƒ1 zugreifen. Erfolgt dieser Zustand nun simultan durch sämtliche der 3 Prozessorkerne c0, c1, c2 (3A, 3B, 3C), kann jeder auf eine separate Flashbank (13B, 13C, 13D) gleichzeitig und ohne Wartezeit zugreifen.
  • Im folgenden Schritt wird nun der nächste Listeneintrag zugewiesen, welcher der Funktion f2 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 1kB aufweist und in sämtlichen Prozessorkernen c0, c1, c2 (3A, 3B, 3C) verwendet wird. Da der lokale Programm-RAM-Speicher (9A) des ersten Prozessorkerns c0 (3A) über noch genau 1kB an freier Speicherkapazität verfügt, wird die Funktion ƒ2 in diesen allokiert. Somit hat der erste Prozessorkern c0 (3A) exklusiven und somit schnellstmöglichen Speicherzugriff auf die Funktion f2. Wegen der Systeminitialisierung wird die Funktion f2 ebenfalls in die zweite Flashbank (13B) allokiert. Die zweite Flashbank (13B) wurde durch das erfindungsgemäße Verfahren ausgewählt, da in der ersten Flashbank (13A) bisher vornehmlich Funktionen (f) allokiert sind, welche den ersten Prozessorkern c0 (3A) betreffen, dieser diese jedoch in seinem lokalen Programm-RAM-Speicher (9A) allokiert hat und diese zusätzlich von weiteren Prozessorkernen c1, c2 (3B, 3C) benötigt werden. Aus diesem Grund werden ebenfalls Kopien der Funktion ƒ2 in die letzten beiden Flashbänke (13C, 13D) allokiert, um konkurrierendem Speicherzugriff durch die beiden letzten Prozessorkerne c1, c2 (3B, 3C) vorzubeugen, welche zur Ausführung der Funktion ƒ2 auf den globalen Speicher (5) zugreifen müssen.
  • Im folgenden Schritt wird nun der nächste Listeneintrag zugewiesen, welcher der Funktion ƒ4 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 2kB aufweist und in sämtlichen Prozessorkernen c0, c1, c2 (3A, 3B, 3C) verwendet wird. Diese wird wie die Funktion ƒ1 behandelt.
  • Im folgenden Schritt wird nun der nächste Listeneintrag zugewiesen, welcher der Funktion ƒ7 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 3kB aufweist und lediglich vom ersten Prozessorkern c0 (3A) verwendet wird. An diesem Punkt weist die erste Flashbank (13A) eine freie Speicherkapazität von 4kB und die restlichen Flashbänke (13B, 13C, 12D) von 3kB auf. Das erfindungsgemäße Verfahren allokiert nun die Funktion f7 in die zweite Flashbank (13B), sodass diese vollständig erschöpft ist und vermeidet somit eventuell ungenutzte Speicherkapazitäten, im Vergleich zur ersten Flashbank (13A), bei welcher anschließend immer noch 1kB freie Speicherkapazität übrig geblieben wäre.
  • Im letzten Schritt wird nun der letzte Listeneintrag zugewiesen, welcher der Funktion ƒ3 entspricht. Diese ist eine synchrone Funktion (f), welche einen Speicherbedarf von 4kB aufweist und lediglich vom ersten Prozessorkern c0 (3A) verwendet wird. Das erfindungsgemäße Verfahren allokiert die Funktion ƒ3 in die erste Flashbank (13A). Die erste Flashbank (13A) ist lediglich mit Funktionen (f) belegt, welche zur Initialisierung bei Systemstart geladen werden und auf welche nicht zur Laufzeit zugegriffen wird. Durch das Allokieren von der Funktion ƒ3 auf die erste Flashbank (13A) kann somit auf dieser konkurrierender Speicherzugriff vermieden werden, da die Funktion die einzige in dieser Flashbank (13A) ist, auf die während der Laufzeit zugegriffen wird.
  • Das so entstandene Speicherverteilungsschema (24) nach Tab. 3 hat die zu implementierenden Funktionen (f) somit optimal bezüglich ihrer Priorität auf die vorhandenen Speicher verteilt. Im aufgezeigten Ausführungsbeispiel wurden jedoch keine weiteren Sortierungskriterien verwendet. In einer alternativen Ausführungsform, in der der notwendige Speicherbedarf der Funktionen (f) für die Aufstellung der Rangliste berücksichtig wird, könnte beispielsweise die Funktion ƒ5 durch die beiden Funktionen ƒ2, ƒ4 ausgetauscht werden, welche in Summe den gleichen Speicherbedarf beanspruchen sowie eine höhere Priorität aufweisen. In diesem Fall würde das erfindungsgemäße Verfahren die Priorität einer einzelnen Funktion (f) zugunsten des Speicherbedarfs von mehreren kleineren Funktionen (f) zurückstellen, sodass mehrere Funktionen (f) schneller angebunden werden können.
  • Weiterhin können beispielsweise weniger Flashbänke (13A, 13B, 13C, 13D) als Prozessorkerne (3A, 3B, 3C) vorhanden sein, sodass ein konkurrierender Speicherzugriff nicht verhindert werden kann. In diesem Fall könnte das erfindungsgemäße Verfahren eine erste Flashbank (13A) dem Prozessorkern (3A, 3B, 3C) mit der höchsten Priorität exklusiv zuweisen und die restlichen Prozessorkerne (3A, 3B, 3C) auf die übrigbleibenden Speicherkapazitäten verteilen.
  • Bezugszeichenliste
  • 1
    Mikrocontroller
    2
    Mehrkernprozessor
    3A, 3B, 3C
    Prozessorkern
    4
    Lokaler Speicherbereich
    5
    Globaler Flashspeicher
    6
    Globaler RAM-Speicher
    7
    Globaler Speicherbereich
    8
    Kommunikationssystem
    9A, 9B
    Programm-RAM-Speicher
    10A, 10B
    Programm-Cache
    11A, 11B
    Daten-RAM-Speicher
    12A, 12B
    Daten-Cache
    13A, 13B, 13C, 13D
    Flashbank
    14
    RAM-Bank
    15
    Prozess der Speicherallokationsoptimierung
    16
    Systembeschreibungsprotokoll
    17
    Projektbeschreibungsprotokoll
    18
    Wertebeschreibungsprotokoll
    19
    Ablaufbeschreibungsprotokoll
    20
    Systemanalyse
    21
    Prioritätsberechnung
    22
    Ranglistenerzeugung
    23
    Speicherverwaltungsoptimierung
    24
    Speicherverwaltungsschema
    c
    Prozessorkern
    d
    Daten
    f
    Funktion
    p
    Priorität
    s
    System
    S2101
    Priorität innerhalb Task berechnen
    S2102
    Letzte Task?
    S2103
    Gehe zu nächster Task
    S2104
    Priorität innerhalb Prozessorkern berechnen
    S2105
    Letzter Prozessorkern?
    S2106
    Gehe zu nächstem Prozessorkern
    S2107
    Priorität innerhalb System berechnen
    S2108
    Letzte Funktion oder Datum?
    S2109
    Gehe zu nächster Funktion oder Datum
    S2110
    Start mit asynchroner Funktion oder Datum
    S2111
    Maximale synchrone Priorität berechnen
    S2112
    Priorität innerhalb System berechnen
    S2113
    Offset addieren
    S2114
    Letzte Funktion oder Datum?
    S2115
    Gehe zu nächster Funktion oder Datum
    S2201
    Funktion oder Datum in Ranglisten einfügen
    S2202
    Letzte Funktion oder Datum?
    S2203
    Nächste Funktion oder Datum
    S2204
    Ranglisten nach Priorität sortieren
    S2205
    Speicherbedarfsinformation hinzufügen
    S2206
    Listeneintrag nach Sortierungskriterium bewerten
    S2207
    Sortierungskriterium erfüllt?
    S2208
    Listeneintrag neu sortieren
    S2209
    Letzter Listeneintrag?
    S2210
    Nächster Listeneintrag
    S2301
    Lokale Speicher frei?
    S2302
    In lokalen Speicher des Prozessorkerns höchster Priorität allokieren
    S2303
    Kopie in lokale Speicher anderer verwendender Prozessorkerne
    S2304, S2308
    Kopie in Flashbänke
    S2305, S2309
    Eintrag löschen
    S2306, S2310
    Liste leer?
    S2307
    Allokieren in Flashbank
    nAtmax(ƒ)
    Maximale Anzahl an Aufrufen innerhalb eines Tasks
    ncmax
    Maximale Anzahl an Prozessorkernen
    ntmax
    Maximale Anzahl an Tasks
    p(c)
    Priorität eines Prozessorkerns
    p(t)
    Priorität eines Tasks
    pC(ƒ)
    Priorität einer Funktion innerhalb eines Prozessorkerns
    pt(ƒ)
    Priorität einer Funktion innerhalb eines Tasks
    ps(ƒ), psa(ƒ)
    Priorität einer Funktion innerhalb des Systems
    ε
    Offset

Claims (9)

  1. Verfahren zur statischen Speicherverwaltungsoptimierung eines integrierten Mehrkernprozessors (1), der wenigstens zwei Prozessorkerne (3A, 3B, 3C), umfassend jeweils mindestens je einen lokalen Programm-RAM-Speicher (9A, 9B, 9C), einen lokalen Programm-Cache (10A, 10B, 10C), einen lokalen Daten-RAM-Speicher (11A, 11B, 11C) sowie einen lokalen Daten-Cache (12A, 12B, 12C), wenigstens einen globalen Flashspeicher (5), wenigstens einen globalen RAM-Speicher (6), sowie wenigstens ein internes Kommunikationssystem (8), das eingerichtet ist, um die Prozessorkerne (3A, 3B, 3C), den globalen Flashspeicher (5) sowie den globalen RAM-Speicher (6) miteinander zu verbinden, umfasst und auf welchem eine Software implementiert ist, die Programmcode in Form von Funktionen und Variablen in Form von Daten verarbeitet, gekennzeichnet durch die Schritte: • Erhalten eines Systembeschreibungsprotokolls (16), eines Projektbeschreibungsprotokolls (17), eines Wertebeschreibungsprotokolls (18) und eines Ablaufbeschreibungsprotokolls (19) als Eingangsvektoren, ◯ wobei aus dem Projektbeschreibungsprotokoll (17) hervorgeht, welche Funktionen vorhanden sind, welche Daten diese verarbeiten, von welchen Prozessorkernen (3A, 3B, 3C) diese ausgeführt werden und ob diese bereits einer internen Priorisierung unterliegen, wobei sich die interne Priorisierung aus aufgabenbezogenen Ranglisteninformationen ergibt, ◯ wobei das Wertebeschreibungsprotokoll (18) die physikalischen Adressen und Größen der Funktionen und Daten beim Kompilieren bzw. Implementieren der Software zur Verfügung stellt, ◯ wobei das Ablaufbeschreibungsprotokoll (19) die Aufrufhäufigkeit der einzelnen Prozessorkerne (3A, 3B, 3C) auf die unterschiedlichen physikalischen Adressen protokolliert; • Berechnung einer Priorität zu jeder Funktion und zu jedem Datum der Software in Abhängigkeit von deren aus den Eingangsvektoren ermittelten Aufrufhäufigkeiten innerhalb der Tasks der Software sowie den Prioritäten der Tasks der Software und den Prioritäten der Prozessorkerne (3A, 3B, 3C), sodass gemäß der Abhängigkeit die Priorität einer Funktion und eines Datums mit deren zunehmenden Aufrufhäufigkeiten innerhalb der Tasks zunimmt; • Erzeugung einer Funktionsrangliste, durch Auflistung sämtlicher Funktionen und einer Datenrangliste, durch Auflistung sämtlicher Daten und Sortierung der Funktions- und Datenranglisten in Abhängigkeit der berechneten Prioritäten; • Allokieren der Funktionen und Daten aus den Funktions- und Datenranglisten in Reihenfolge, beginnend mit den Listeneinträgen mit der höchsten Priorität, ◯ wobei beim Allokieren zunächst die lokalen Speicher (4) der Prozessorkerne (3A, 3B, 3C), die genannte Funktionen und Daten verarbeiten, zugewiesen werden, ◯ wobei die globalen Speicher (7) dann zugewiesen werden, wenn die Speicherkapazität der genannten lokalen Speicher (4) erschöpft ist.
  2. Verfahren nach Patentanspruch 1, dadurch gekennzeichnet, dass das Systembeschreibungsprotokoll (16) strukturbezogene Informationen bezüglich des Aufbaus und der Speicherhierarchie des Mehrkernprozessors (1) umfasst.
  3. Verfahren nach Patentanspruch 2, dadurch gekennzeichnet, dass strukturbezogene Informationen wenigstens die Anzahl der Prozessorkerne (3A, 3B, 3C) des Mehrkernprozessors (2), die Anzahl, Art und Größe der Speicher des lokalen (4) und globalen Speicherbereichs (7), die Art des internen Kommunikationssystems (8), die Anzahl und Art der Anbindung genannter Speicher an das genannte Kommunikationssystem (8), die physische Adressierung sämtlicher genannter Speicher sowie die mögliche Geschwindigkeit des Speicherzugriffs auf diese umfassen.
  4. Verfahren nach Patentanspruch 3, dadurch gekennzeichnet, dass die Sortierung der Funktions- und Datenrangliste zusätzlich in Abhängigkeit weiterer aufgabenbezogener, quantitätsbezogener oder prozessbezogener Informationen erfolgt.
  5. Verfahren nach Patentanspruch 4, dadurch gekennzeichnet, dass die Sortierung der Funktions- und Datenrangliste in Abhängigkeit des Speicherbedarfs der einzelnen Funktionen und Daten erfolgt.
  6. Verfahren nach Patentanspruch 1, dadurch gekennzeichnet, dass bei der Berechnung der Prioritäten der Funktionen und Daten, jeweils zwischen synchronem und asynchronem Aufrufverhalten unterschieden wird, wobei asynchron aufgerufenen Funktionen und Daten eine höhere Priorität zugeschrieben wird als synchron aufgerufenen Funktionen und Daten.
  7. Verfahren nach Patentanspruch 1, dadurch gekennzeichnet, dass lokalen Speichern (4) zuzuweisende Funktionen und Daten primär in den lokalen Speicher (4) des Prozessorkerns (3A, 3B, 3C) mit der höchsten Priorität allokiert werden und, dass je nach vorhandener Speicherplatzkapazität, Kopien der jeweiligen Funktionen und Daten in die gleichen lokalen Speicher (4) weiterer Prozessorkerne (3A, 3B, 3C), die genannte Funktionen und Daten verarbeiten, sowie in die globalen Speicher (7) allokiert werden.
  8. Verfahren nach Patentanspruch 7, dadurch gekennzeichnet, dass globale Flashspeicher (5) in mehrere Flashbänke (13A, 13B, 13C, 13D) aufgeteilt sein können, wobei von Funktionen und Daten, die in globale Flashspeicher (5) allokiert wurden, Kopien in weitere Flashbänke (13A, 13B, 13C, 13D) allokiert werden, jedoch maximal in einer Anzahl, die der Anzahl der Prozessorkerne (3A, 3B, 3C) entspricht, die genannte Funktionen und Daten verarbeiten.
  9. Vorrichtung zum Ausführen eines Verfahrens nach den Ansprüchen 1 bis 8.
DE102019128206.3A 2019-10-18 2019-10-18 Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren Active DE102019128206B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102019128206.3A DE102019128206B4 (de) 2019-10-18 2019-10-18 Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019128206.3A DE102019128206B4 (de) 2019-10-18 2019-10-18 Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren

Publications (2)

Publication Number Publication Date
DE102019128206A1 DE102019128206A1 (de) 2021-04-22
DE102019128206B4 true DE102019128206B4 (de) 2022-09-01

Family

ID=75268565

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019128206.3A Active DE102019128206B4 (de) 2019-10-18 2019-10-18 Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren

Country Status (1)

Country Link
DE (1) DE102019128206B4 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084525A1 (en) 2009-06-05 2012-04-05 AIRBUS OPERATIONS(inc as a Societe par Act Simpl) Method and device for loading and executing instructions with deterministic cycles in a multicore avionic system having a bus of which the access time is not predictable
US8943287B1 (en) 2012-07-17 2015-01-27 Rockwell Collins, Inc. Multi-core processor system configured to constrain access rate from memory
WO2018078610A1 (en) 2016-10-31 2018-05-03 Leonardo S.P.A. Certifiable deterministic system software framework for hard real-time safety-critical applications in avionics systems featuring multi-core processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084525A1 (en) 2009-06-05 2012-04-05 AIRBUS OPERATIONS(inc as a Societe par Act Simpl) Method and device for loading and executing instructions with deterministic cycles in a multicore avionic system having a bus of which the access time is not predictable
US8943287B1 (en) 2012-07-17 2015-01-27 Rockwell Collins, Inc. Multi-core processor system configured to constrain access rate from memory
WO2018078610A1 (en) 2016-10-31 2018-05-03 Leonardo S.P.A. Certifiable deterministic system software framework for hard real-time safety-critical applications in avionics systems featuring multi-core processors

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Y. Kim, M. Papamichael, O. Mutlu and M. Harchol-Balter, "Thread Cluster Memory Scheduling: Exploiting Differences in Memory Access Behavior," 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture, Atlanta, GA, USA, 2010, pp. 65-76, doi: 10.1109/MICRO.2010.51.
Yang Song et al: „A Self-aware Resource Management Framework for Heterogeneous Multicore SoCs with Diverse QoS Targets". In: ACM Transactions on Architecture and Code Optimization, April 2019 Article No.: 16.doi: 10.1145/3319804

Also Published As

Publication number Publication date
DE102019128206A1 (de) 2021-04-22

Similar Documents

Publication Publication Date Title
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
DE2423194C2 (de) Vorrichtung zum Berechnen einer absoluten Hauptspeicheradresse in einer Datenverarbeitungsanlage
DE69910826T2 (de) Rechnersystem mit rekonfigurierbarer programmierbarer logik-vorrichtung
DE69637020T2 (de) Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE102020119621A1 (de) Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen
DE102013014169B4 (de) Dynamisch grössenveränderbare Zirkularpuffer
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE112010004083T5 (de) Verteilung von Arbeitsobjekten in einem Mehrkern-Datenverarbeitungssystem
DE102012220267B4 (de) Rechenarbeitsverteilungs - Referenzzähler
DE102010029209B4 (de) Verfahren zur dynamischen Verteilung von einem oder mehreren Diensten in einem Netz aus einer Vielzahl von Rechnern
WO1996002883A1 (de) Verfahren zur steuerung von technischen vorgängen oder prozessen
DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102017118341B4 (de) Neuaufteilen von Daten in einem verteilten Computersystem
DE112019001821T5 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102014103139B4 (de) Parallelisierte Ausführung von Single-Core Steuerungssoftware auf Multi-Core Fahrzeugsteuergeräten
DE102021108963A1 (de) Sperrenfreier arbeitseinsatz thread scheduler
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE112010004562T5 (de) Zuweisung wirksam referenzierbarer global eindeutiger Kennungen in einer Mehrkernumgebung
DE60318993T2 (de) Eingebettete Speicherbereinigung
DE102019128206B4 (de) Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren
DE102010028896A1 (de) Verfahren und Vorrichtung zum Zuweisen einer Mehrzahl von Teilaufgaben einer Aufgabe zu einer Mehrzahl von Recheneinheiten einer vorgegebenen Prozessorarchitektur
DE202016107027U1 (de) Modulation von Prozessorkernoperationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final