DE112014001815T5 - Eingebetteter Speicher mit Managementschema für Echtzeit-Applikationen - Google Patents

Eingebetteter Speicher mit Managementschema für Echtzeit-Applikationen Download PDF

Info

Publication number
DE112014001815T5
DE112014001815T5 DE112014001815.5T DE112014001815T DE112014001815T5 DE 112014001815 T5 DE112014001815 T5 DE 112014001815T5 DE 112014001815 T DE112014001815 T DE 112014001815T DE 112014001815 T5 DE112014001815 T5 DE 112014001815T5
Authority
DE
Germany
Prior art keywords
memory
type
program
storage
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112014001815.5T
Other languages
English (en)
Inventor
Bijal Joshi
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.)
Continental Automotive Systems Inc
Original Assignee
Continental Automotive Systems Inc
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 Continental Automotive Systems Inc filed Critical Continental Automotive Systems Inc
Publication of DE112014001815T5 publication Critical patent/DE112014001815T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Abstract

In einem eingebetteten Computersystem wird Speicher dynamisch gemeinsam benutzt oder zugewiesen. Zunächst werden die Arten von Speicher, welche Teil des Systems sind, bestimmt. Danach wird die Menge an zur Verwendung verfügbarem Speicher bestimmt. Es wird die Art eines von einem Programm oder einer Anwendung benötigtem Speichers zusammen mit der Menge an benötigtem Platz bestimmt. Falls die Menge an Speicherplatz, welcher dem Programm in einer ersten Art von benötigtem Speicher zugewiesen werden kann, größer als oder gleich der Menge an vom Computerprogramm benötigten Speicherplatz ist, dann wird das Programm in den verfügbaren Speicher geladen. Falls die benötigte Art von Speicher nicht verfügbar ist oder falls nicht ausreichend benötigter Speicher zur Verfügung steht, dann werden andere Arten von Speichereinrichtungen in Betracht gezogen und verwendet, falls ausreichend Platz in einer oder mehreren von ihnen vorhanden ist.

Description

  • Hintergrund
  • Der Begriff „eingebettetes System” bezieht sich hierin auf ein Computersystem, welches zur Ausführung von Steuerfunktionen innerhalb eines anderen gewöhnlicherweise größeren Systems oder für ein anderes gewöhnlicherweise größeres System ausgelegt ist. Da ein solches Computersystem eine Teilkomponente des größeren Systems ist, wird es deshalb als in dem größeren System „eingebettet” bezeichnet. Beispielsweise wird ein Computersystem, welches die verschiedenen Komponenten eines Fahrzeug-„Infotainment”-Systems steuert, hierin als ein eingebettetes System betrachtet. Ein Computersystem, welches Komponenten eines Mobiltelefons steuert, wird hierin als ein eingebettetes System betrachtet. Andererseits sind Allzweckcomputer, wie zum Beispiel Personal Computer bzw. „PC”, welche nicht mit einem größeren System verbunden sind oder Teil eines größeren Systems bilden, keine eingebetteten Systeme.
  • Viele eingebettete Systeme müssen in der Lage sein, viele unterschiedliche Arten von Applikationen oder Programmen zur gleichen Zeit bzw. im Wesentlichen zur gleichen Zeit ablaufen zu lassen. Viele eingebettete Systeme verwenden außerdem unterschiedliche Arten von physischen Speichereinrichtungen (bzw. Speichergeräten), um Kosten zu reduzieren, und um trotzdem die Ausführung verschiedener Programme mit entsprechend unterschiedlichen Wichtigkeitsstufen zu optimieren. Die Arten von Speichereinrichtungen, welche solche Systeme verwenden können, können IRAM (Interner Arbeitsspeicher bzw. RAM, welcher auf dem gleichen Halbleiterchip wie ein Prozessor angeordnet ist) und externe RAM-Einrichtungen umfassen, wie zum Beispiel DDR1, DDR2, SDRAM, FLASH oder sogar ein Festplattenlaufwerk.
  • Jede Art von RAM weist eine unterschiedliche Zugriffszeit auf, das heißt die Rate, mit welcher Daten an einen Platz in einer Einrichtung geschrieben und davon ausgelesen werden können. Sogenannter IRAM ist gewöhnlicherweise der schnellste Speicher, wobei die Speicherplätze darauf mit der gleichen Clockspeed („Schaltfrequenz”) wie die CPU zugreifbar sind. FLASH-RAM dagegen ist gewöhnlicherweise am langsamsten.
  • Die Anzahl an CPU-Clock-Zyklen, welche zum Schreiben von Daten auf unterschiedliche Arten von RAM-Einrichtungen und zum Lesen von Daten davon benötigt werden, kann ein wesentlicher Bestandteil dafür werden, wie ein Programm, welches auf einem eingebetteten Computersystem ausgeführt werden soll, das heißt mit Hilfe einer eingebetteten Applikation, tatsächlich auf dem System „laufen” wird. Da relativ schnelle RAM-Einrichtungen gewöhnlicherweise teurer sind als relativ langsame RAM-Einrichtungen, sind viele eingebettete Computersysteme dazu ausgelegt, Kosten zu senken, und zwar durch Verwenden einer relativ kleinen Menge von schnellem RAM in Kombination mit einer größeren Menge von langsamem RAM, beispielsweise SDRAM und FLASH-Speicher.
  • In einem eingebetteten System, auf welchem unterschiedliche Programme ablaufen sollen, weisen die Programme, welche schnell ausgeführt werden müssen, Daten gewöhnlicherweise den schnellsten Speichereinrichtungen zu, welche beispielsweise Speichereinrichtungen und Speicherplätze auf dem gleichen Halbleiterchip sind, auf dem sich auch die CPU bzw. der Prozessor befinden. Weniger wichtige Programme bzw. solche, welche nicht schnell ausgeführt werden müssen, weisen Daten oftmals relativ langsamen Speichereinrichtungen zu, welche gewöhnlicherweise hinsichtlich der CPU bzw. hinsichtlich des Prozessors externe Speichereinrichtungen sind, oder welche mit Hilfe von naturgemäß langsameren Technologien hergestellt wurden. Sogenannte DDR2-Speichereinrichtungen haben kürzere Zugriffszeiten und sind deshalb schneller als SDRAM-Einrichtungen. SDRAM-Einrichtungen können kürzere Zugriffszeiten aufweisen und können deshalb schneller als eine magnetische Platte sein, das heißt ein Festplattenlaufwerk, welches als ein Diektzugriffs-(Random Access-)Speicher ausgebildet ist und als solches betrieben wird.
  • Ein optimales gleichzeitiges Nutzen von unterschiedlichen Arten von Speicherplatz, welcher zum Speichern von Programmdaten für unterschiedliche Programme verfügbar ist, welche unterschiedliche Ausführungsprioritäten haben, kann für eingebettete Computersysteme eine schwierige Aufgabe sein. Mit zunehmender Anzahl von Aufgaben, welche ein eingebettetes Computersystem ausführen muss, wird eine optimale Ausnutzung von Speicherplatz kritischer.
  • 1 ist ein vereinfachtes Blockdiagramm eines herkömmlichen eingebetteten Computersystems 100. Ein Halbleitersubstrat 102 wird zur Aufnahme einer zentralen Prozessoreinheit bzw. CPU 104 und mehrerer individuell adressierbarer Direktzugriffsspeicher(RAM)-Plätze 106 gebildet, und zwar unter Verwendung von Techniken, welche dem Fachmann auf dem Gebiet der Halbleitertechnik gut bekannt sind. Die Adressen der auf dem Chip befindlichen RAM 106-Plätze sind für Zwecke der Darstellung als von null bis eintausend (dezimal) durchgezählt gekennzeichnet. Eine DDR2-Direktzugriffsspeicher(RAM)-Einrichtung 108 und eine SDRAM-Einrichtung 110 sind hinsichtlich des Chips 102 extern, werden aber über den gleichen herkömmlichen Bus 112 angesteuert bzw. es wird darauf zugegriffen. Der Bus 112 koppelt die CPU 104 mit verschiedenen unterschiedlichen peripheren Einrichtungen 114, welche die CPU 104 steuern soll.
  • Da die On-Chip-RAM-Plätze 106 auf dem gleichen Halbleiterchip 102 sind wie die CPU 104, und sicherlich näher an der CPU 104 sind als andere externe Speichereinrichtungen 108, 110, kann die CPU 104 die auf dem Chip befindlichen Speicherplätze 106 in deutlich kürzerer Zeit ansteuern bzw. darauf zugreifen, als es für die CPU 104 dauern würde, auf die hinsichtlich der CPU 104 externen Speichereinrichtungen zuzugreifen, das heißt auf den DDR2 108 und den SRAM 110-Speicher. Programme, auf welche schnell zugegriffen werden muss, sind deshalb vorzugsweise in den auf dem Chip befindlichen RAM-Plätzen 106 abgespeichert und werden von diesen Stellen ausgeführt.
  • Der Fachmann weiß, dass verschiedene periphere Einrichtungen 114, welche durch die CPU 104 gesteuert werden, von der CPU 104 jeweils ein unterschiedliches Antwortverhalten erfordern. Im Stand der Technik kann, wenn ein Computerprogramm zur Steuerung einer bestimmten peripheren Einrichtung 114 geschrieben ist, das Programm derart geschrieben sein, dass es eine Compiler-Betriebsanweisung bzw. „Pragma” umfasst, welche bei Kompilierung einen Speicherplan (memory map) durchführen wird, welcher einen Speichermanager 114 anweisen wird, wo die Datenabschnitte im Speicher zu laden sind. Eine solche Compiler-Anweisung ist allgemein als eine Speicherzuweisungsfunktion bzw. „malloc(arg)” bekannt, wobei das Argument („(arg)”) sowohl die Größe als auch die Art der Speichereinrichtung spezifiziert, wo die folgenden Programmanweisungen durch Speichermanager 114 zu laden sind.
  • In den folgenden Ausdrücken (1), (2) und (3) werden durch den Compiler sowohl Leistungs-kritische als auch nicht-kritische Speicher durch Verwenden der gleichen malloc-Funktion zugewiesen, jedoch mit geändertem Funktionsargument („arg”). Eine entsprechende Datenzuweisung wird in entsprechend unterschiedliche physische Speichereinrichtungen geladen. pSlow = malloc(sizeof(rtSlowArray)); (1) pFast = malloc(sizeof(rtFastArray)); (2) pSlow2 = malloc(sizeof(nrtSlowArray)); (3) wobei pSlow, pFast und pSlow2 Adressen bzw. Pointer für Stellen in einer Speichereinrichtung sind. Für Zwecke der Darstellung erzeugt das „rtSlowArray” eine Zuweisung für einen relativ langsamen oder Nicht-Echtzeit-Speicherblock, welcher für ein Programm geeignet wäre, welches keine CPU-intensive Rechnerleistung erfordert. Das Argument „nrtSlowArray” würde eine Zuweisung zu langsamem Speicher erzeugen, welche für Nicht-Echtzeit-Anwendungen geeignet wäre. Unglücklicherweise muss, wenn eine Compiler-Anweisung erfordert, dass ein bestimmtes Programm in eine bestimmte Art von Speichereinrichtung geladen werden muss, Speicherplatz für das Programm in der Compiler-angewiesenen Speichereinrichtung verfügbar sein, oder der durch das Programm angeforderte Datenbereich wird nicht mit Hilfe des System-Speichermanagers 114 geladen.
  • 2 ist ein Flussdiagramm eines Verfahrens aus dem Stand der Technik, nach welchem ein herkömmlicher Speichermanager 114 für das eingebettete Computersystem 100 Speicherplatz für ein Programm in Antwort auf die Speicherfunktion „malloc” zuweist. Das in 2 dargestellte Verfahren 200 ist relativ einfach. Bei Ausführung der durch die malloc-Funktion erzeugten Anweisungen wird der Speichermanager 114 bei Schritt 202 im Wesentlichen „gefragt”, zu bestimmen, ob ein Speicherblock einer erforderlichen Größe für eine Verwendung durch das bestimmte Programm in einer Default-Speichereinrichtung, gewöhnlicherweise SDRAM, verfügbar ist. Falls die erforderliche Speichergröße verfügbar ist, dann wird der Speicher bei Schritt 204 zugewiesen und ein Pointer kehrt bei Schritt 206 zum Startbereich zurück. Falls die erforderliche Größe des Speicherplatzes nicht in der erforderlichen Default-Speichereinrichtung verfügbar ist, dann wird der durch das Programm angeforderte Datenbereich nicht geladen, das heißt das Programm wird nicht ausgeführt.
  • Zur Sicherstellung, dass ein Programm geladen wird, muss deshalb eine ausreichende Menge an Speicher bereitgestellt werden. Ein „intelligenter” Systemdesigner bzw. Rechner muss deshalb ausreichend Speicher verschiedener Arten bereitstellen, um in der Lage zu sein, alle Programme zu berücksichtigen, welche theoretisch zur gleichen Zeit laufen könnten, selbst wenn eine solche Anforderung niemals auftreten könnte.
  • Die Kosten zur Bereitstellung von Hochgeschwindigkeitsspeicher, welcher niemals erforderlich sein könnte, könnte vermieden werden, falls es möglich wäre, Speicher in unterschiedlichen physischen Einrichtungen in einem eingebetteten System dynamisch zuzuweisen. Ein Verfahren und eine Vorrichtung, durch welche schneller Speicher in effizienter Weise gemeinsam von ausführbaren Programmen genutzt werden kann, welche eine schnelle Response erfordern, wäre deshalb eine Verbesserung gegenüber dem Stand der Technik.
  • Kurze Zusammenfassung
  • In Übereinstimmung mit Ausführungsformen der Erfindung wird Speicher in einem eingebetteten Computersystem dynamisch gemeinsam genutzt bzw. zugewiesen. Die Arten von Speicher, welche Teil des Systems sind, werden zunächst bestimmt. Danach wird die Menge an verwendbarem zur Verfügung stehenden Speicher bestimmt. Die Art von Speicher, welche von einem Programm bzw. einer Applikation erfordert wird, wird wie die Menge an erforderlichem Speicherplatz bestimmt. Falls die Menge an Speicherplatz, welche dem Programm in einer ersten Art von erforderlichem Speicher zuweisbar ist, größer als oder wenigstens gleich der Menge an vom Computerprogramm erforderten Speicherplatz ist, dann wird das Programm in den verfügbaren Speicher geladen. Falls die erforderliche Art von Speicher nicht verfügbar ist oder der erforderte Speicher nicht in ausreichendem Maße verfügbar ist, dann werden andere Arten von Speichereinrichtungen in Erwägung gezogen und verwendet, falls in einer oder mehreren der Speichereinrichtungen ausreichend Speicherplatz vorhanden ist.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockdiagramm-Darstellung eines eingebetteten Computersystems mit unterschiedlichen Arten von Speichereinrichtungen, welche jeweils unterschiedliche Zugriffszeiten aufweisen, welche Programme speichern, welche unterschiedliche mit dem Computersystem gekoppelte periphere Einrichtungen steuern;
  • 2 ist ein Flussdiagramm, welches ein herkömmliches Speicherzuweisungs-Verfahren zeigt;
  • 3 ist ein Flussdiagramm, welches Schritte eines dynamischen Speicherzuweisungs-Verfahrens zeigt;
  • 4 ist ein Blockdiagramm eines eingebetteten Computersystems mit einem dynamischen Speichermanager; und
  • 5 ist ein Blockdiagramm eines dynamischen Speichermanagers.
  • Detaillierte Beschreibung
  • Hochgeschwindigkeitsspeicherbereiche in Hochgeschwindigkeitsspeichereinrichtungen können zwischen unterschiedlichen eingebetteten Applikationen bei Verfügbarwerden von Hochgeschwindigkeitsspeicher mehrmals verwendet und gemeinsam genutzt werden. Ein Managementschema von eingebettetem Speicher für Echtzeit-Anwendungsprogramme wird unter Verwendung einer dynamischen Speicherzuweisung erzielt. Eine dynamische Speicherzuweisung wird durch Verwendung eines dynamischen Speichermanagers und durch Steuern des Managers erzielt, um zunächst die Arten von für eine Programmzuweisung verfügbaren Speichereinrichtungen und die Menge an Speicherplatz zu bestimmen, welcher für eine Zuweisung in jeder Art von Speichereinrichtung verfügbar ist. Bei Aufruf von Echtzeit-Programmen bzw. Anforderung durch das eingebettete System oder unterschiedliche periphere Einrichtungen bestimmt der dynamische Speichermanager die Art von Speichereinrichtung, welche von einem bestimmten Computerprogramm erfordert wird, sowie die Menge an Speicherplatz, welche vom Programm benötigt wird. Es wird außerdem der Speicherplatz bestimmt, welcher tatsächlich in einer bestimmten Art von Speichereinrichtung verfügbar ist, welcher von dem Programm erfordert wird, und welcher dem Programm zur Verwendung durch das Computerprogramm zuweisbar ist. Falls die Menge an Speicherplatz, welche einem bestimmten Programm in einer bestimmten Art von Speichereinrichtungen zugewiesen werden kann, größer als oder gleich der Menge an vom Computerprogramm erforderten Speicherplatz ist, dann lädt der dynamische Speichermanager die vom Programm erforderten Computerdaten in die erforderte Art von Speichereinrichtungen und ermöglicht dem Computer bzw. der CPU, das Programm unter Verwendung von Daten von der Speichereinrichtung auszuführen.
  • Im Gegensatz zu der in herkömmlichen eingebetteten Systemen verwendeten statischen Speicherzuweisung kann die hierin offenbarte Vorrichtung und das hierin offenbarte Verfahren einen Datenbereich den am besten geeigneten Speichereinrichtungen zuweisen, um einen Betrieb für ein System oder eine periphere Einrichtung bereitzustellen, welches bzw. welcher am besten den Bedürfnissen auf Basis kritischer Anforderungen des Programms entspricht.
  • Falls die Menge an in einer bestimmten Art von durch ein bestimmtes Programm erforderte Speichereinrichtung verfügbaren Speicherplatz kleiner als die Menge an durch das Computerprogramm erforderten Speicherplatz ist, dann fährt der dynamische Speichermanager mit der Bestimmung des in einer langsameren bzw. zweiten Art von Speichereinrichtung verfügbaren Speicherplatz fort. Falls die Menge an verfügbarem Speicherplatz in einer langsameren, zweiten Art von Speichereinrichtungen größer als oder gleich der Menge an durch das Computerprogramm in der schnelleren Art von Speichereinrichtung erfordertem Speicherplatz ist, dann lädt der dynamische Speichermanager das Programm bzw. erlaubt dem Programm, die Daten von der zweiten Art von Speichereinrichtungen zu verwenden. Das Programm kann dann wenigstens unter Verwendung einer etwas langsameren, zweiten Art von Speichereinrichtung ausgeführt werden.
  • 3 ist ein Flussdiagramm, welches ein Schema bzw. ein Verfahren einer Speicherverwaltung in einem eingebetteten Computersystem darstellt, so dass Echtzeit-Applikationen (Programme) in der Lage sind, die Art von Speichereinrichtung gemeinsam zu nutzen, welche sie benötigen, und möglicherweise die Menge an tatsächlich benötigtem Hochgeschwindigkeitsspeicher zu eliminieren bzw. zu reduzieren. Die Syntax der in 3 dargestellten „emalloc”-Funktion 301 unterscheidet sich leicht von der Syntax einer herkömmlichen malloc-Funktion. Im Gegensatz zu den in 2 dargestellten malloc-Verfahrensschritten bestimmt bei Schritt 302 ein dynamischer Speichermanager, wie zum Beispiel der in 4 dargestellte, zunächst die verschiedenen Arten von Speichereinrichtungen, welche das eingebettete System umfasst. Die bei Verfahrensschritt 302 durchgeführte Bestimmung ist vorzugsweise als ein einfaches Auslesen von Einträgen in einer Tabelle, welche typischerweise im Speicher abgelegt ist, implementiert.
  • Nach Bestimmung der Arten von verfügbaren Speichereinrichtungen bei Verfahrensschritt 302 werden bei Verfahrensschritt 304 die Bereiche in einer bestimmten Art von in dem emalloc-Argument erforderten Einrichtung („MEM_TYPE”), welche nicht verwendet werden und deshalb für eine Verwendung durch ein Programm verfügbar sind, bestimmt und mit der Menge an in dem emalloc-Argument erforderten Speicher verglichen, das heißt, dem „Größen”-(„size”-)Parameter in dem emalloc-Argument.
  • Falls der Betrag des in dem emalloc-Argument spezifizierten Speichers in der Art in dem emalloc-Argument spezifizierten Speichereinrichtung verfügbar ist, dann wird die von dem Programm aufgrund der emalloc-Compiler-Anweisung erforderte Speicherzuweisung durch den dynamischen Speichermanager zugewiesen. Bei Verfahrensschritt 308 wird die Adresse zurückgegeben, wo das Programm den Speicherblock in der bestimmten Art von Einrichtung anfordert. Das Programm wird dann von dieser Speichereinrichtung geladen und ausgeführt.
  • Weiterhin mit Bezug auf 3, im Gegensatz zu herkömmlichen Speichermanagementschemata, falls der bei Verfahrensschritt 304 durchgeführte Test negativ ausfällt, das heißt, dass der in einer erforderten Art von Einrichtung verfügbare Speicher unzureichend ist, oder die erforderte Speicherart nicht in diesem System vorhanden ist, fährt das Verfahren fort mit Verfahrensschritt 310, wo eine Bestimmung durchgeführt wird, ob andere Arten von Speicher verfügbar sein könnten, in welche das Programm geladen werden könnte und in welchen das Programm ausgeführt werden könnte. Bei Vorhandensein von weiteren Arten von Speicher bestimmen Verfahrensschritte 312, 302 und 304, ob die erforderte Menge an Speicher in die nächstbeste Art von Speichereinrichtung geladen werden kann, welche gewöhnlicherweise die nächstschnellste Art von Speicher ist. Falls keine weiteren Speichereinrichtungen vorhanden sind, dann endet das Verfahren 300 bei Verfahrensschritt 314 und gibt einen Null-Pointer zurück, welcher anzeigt, dass das Programm in keinen Speicher geladen werden kann.
  • 4 ist ein Blockdiagramm eines eingebetteten Computersystems 400, welches mit einem dynamischen Speichermanager 402 ausgebildet ist, welcher zur Durchführung der in 3 und oben beschriebenen Verfahrensschritte ausgebildet ist.
  • Der dynamische Speichermanager 402, welcher in Software oder Hardware implementiert sein kann, ist betrieblich mit der CPU 404 und Speichereinrichtungen 406, 408 und 410 über einen herkömmlichen Bus 412 gekoppelt. Über den Bus 412 sind mit der CPU 404 außerdem verschiedene periphere Einrichtungen 414 gekoppelt.
  • 5 ist ein Blockdiagramm eines dynamischen Speichermanagers 500. Ein Prozessor bzw. eine CPU 502 ist mit einer oder mehreren nicht-flüchtigen Speichereinrichtungen 504 gekoppelt, wie zum Beispiel die oben beschriebenen Speichereinrichtungen, und welche Programmanweisungen 506, 508 speichern, welche durch den Prozessor/CPU 502 ausführbar sind.
  • Bei Ausführung der Anweisungen veranlassen sie, dass der Prozessor/CPU 502 die in 3 dargestellten und oben beschriebenen Verfahrensschritte ausführt.
  • Wie hierin verwendet, wird ein Bus als eine Menge von elektrisch parallelen Leiterelementen in einem Computersystem betrachtet, welches einen Übertragungspfad für Steuersignale, Adressinformation und Daten bildet. In 5 wird ein herkömmlicher Adress-/Daten-/Steuer-Bus 502 gezeigt. Der Bus 510 ermöglicht eine Kommunikation des Prozessors/der CPU mit verschiedenen peripheren Einrichtungen, welche der Einfachheit halber aus 5 weggelassen sind.
  • Die vorangegangene Beschreibung dient den Zwecken der Darstellung. Der wahre Umfang der Erfindung ist in den folgenden Ansprüchen definiert.

Claims (9)

  1. Verfahren zum Zuweisen des Datenbereichs eines auszuführenden Computerprogramms durch einen Prozessor, und zwar an einen Speicherbereich, welcher aus einer Mehrzahl von Bereichen ausgewählt ist, welcher in einer Mehrzahl von unterschiedlichen Arten von mit dem Prozessor gekoppelten verfügbaren Speichereinrichtungen angeordnet ist, wobei das Verfahren umfasst: Bestimmen einer ersten Art von durch das Computerprogramm zu verwendender Speichereinrichtung; Bestimmen einer Menge von Speicherplatz, welcher vom Computerprogramm benötigt ist; Bestimmen des in einer ersten Art von Speichereinrichtungen verfügbaren Speicherplatzes, welcher für eine Verwendung durch das Computerprogramm zuteilbar ist; falls die Menge an Speicherplatz, welche dem ersten Programm in Speichereinrichtungen der ersten Art zuweisbar ist, größer oder gleich der Menge an durch das Computerprogramm erforderlichem Speicherplatz ist, Laden des Computerprogramms in die Speichereinrichtungen von der ersten Art; und Ausführen des Computerprogramms unter Verwendung des Datenbereichs von den Speichereinrichtungen der ersten Art.
  2. Verfahren nach Anspruch 1, weiterhin umfassend: Bestimmen von unterschiedlichen Arten von mit dem Prozessor gekoppelten Speichereinrichtungen.
  3. Verfahren nach Anspruch 2, wobei eine Mehrzahl von unterschiedlichen Arten von Speichereinrichtungen mit einem Prozessor gekoppelt ist, wobei das Verfahren weiterhin umfasst: falls die Menge von in der Speichereinrichtung der ersten Art verfügbarem Speicherplatz kleiner als die Menge an vom Computerprogramm erforderten Speicherplatz ist, Bestimmen des in den Speichereinrichtungen der zweiten Art für eine Verwendung durch Programme verfügbaren Speicherplatzes; falls die Menge an in Speichereinrichtungen der zweiten Art verfügbarem Speicherplatz größer oder gleich der Menge an durch das Computerprogramm erforderlichen Speicherplatz ist, Laden des Programms in die Speichereinrichtungen der zweiten Art; und Ausführen des Programms unter Verwendung des Datenbereichs von den Speichereinrichtungen der zweiten Art.
  4. Verfahren nach Anspruch 3, wobei die erste Art von Speichereinrichtung schneller als die zweite Art von Speichereinrichtung ist.
  5. Speichermanager für dynamisches Zuweisen von Speicher an nicht-flüchtige Speichereinrichtungen, wobei der Speichermanager umfasst: einen Speicherart-Bestimmer, welcher mit ersten und zweiten unterschiedlichen Arten von Speichereinrichtungen gekoppelt ist, wobei der Speicherart-Bestimmer zum Bestimmen der Arten von Speichereinrichtungen ausgebildet ist, mit welchen er gekoppelt ist, und zum Bestimmen von Programm-nutzbarem Platz in jeder Art von Speichereinrichtung; und einen Speichergröße-Zuweiser, welcher zum Zuweisen eines ersten Programm-nutzbaren Platzes in einer bestimmten Art von Speichereinrichtung ausgebildet ist, welcher auf eine Anfrage durch ein Programm reagiert, um den ersten Programm-nutzbaren Platz in der bestimmten Art von Speichereinrichtung zuzuweisen.
  6. Speichermanager nach Anspruch 1, wobei der Speicherart-Bestimmer und der Speichergröße-Zuweiser umfassen: einen Prozessor; und eine Speichereinrichtung, welche mit dem Prozessor gekoppelt ist und Programmanweisungen abspeichert, welche bei Ausführung bewirkt, dass der Prozessor: Arten von Speichereinrichtungen bestimmt, mit welchen der Prozessor gekoppelt ist; und Programm-nutzbaren Platz in einer bestimmten Art von Speichereinrichtung zuweist, welche mit dem Prozessor gekoppelt ist, und zwar in Antwort auf eine Anforderung eines im Prozessor ablaufenden Programms.
  7. Speichermanager nach Anspruch 2, wobei der Prozessor ein Echtzeit-Steuersystem umfasst.
  8. Speichermanager nach Anspruch 3, wobei der Prozessor in betrieblicher Weise mit einer Mehrzahl von Peripherieeinrichtungen gekoppelt ist, welche durch den Prozessor steuerbar sind.
  9. Speichermanager nach Anspruch 1, wobei die erste Art von Speichereinrichtung schneller als die zweite Art von Speichereinrichtung ist.
DE112014001815.5T 2013-04-05 2014-04-01 Eingebetteter Speicher mit Managementschema für Echtzeit-Applikationen Pending DE112014001815T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361809031P 2013-04-05 2013-04-05
US61/809,031 2013-04-05
PCT/US2014/032529 WO2014165514A1 (en) 2013-04-05 2014-04-01 Embedded memory management scheme for real-time applications

Publications (1)

Publication Number Publication Date
DE112014001815T5 true DE112014001815T5 (de) 2015-12-17

Family

ID=49119031

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014001815.5T Pending DE112014001815T5 (de) 2013-04-05 2014-04-01 Eingebetteter Speicher mit Managementschema für Echtzeit-Applikationen

Country Status (5)

Country Link
US (1) US10901883B2 (de)
CN (1) CN105103138B (de)
DE (1) DE112014001815T5 (de)
GB (1) GB2516435A (de)
WO (1) WO2014165514A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10599353B2 (en) 2017-05-16 2020-03-24 Apple Inc. Techniques for managing storage space allocation within a storage device
CN107302505B (zh) * 2017-06-22 2019-10-29 迈普通信技术股份有限公司 管理缓存的方法及装置
US10368128B2 (en) * 2017-08-11 2019-07-30 Microsoft Technology Licensing, Llc Memory allocation type for media buffer
WO2023093979A1 (en) * 2021-11-24 2023-06-01 Volkswagen Aktiengesellschaft Computer implemented method for organizing access to a shared memory of a vehicle

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5008805A (en) * 1989-08-03 1991-04-16 International Business Machines Corporation Real time, fail safe process control system and method
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7222224B2 (en) * 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7529903B2 (en) * 2005-07-05 2009-05-05 International Business Machines Corporation Systems and methods for memory migration
US20070180203A1 (en) * 2006-02-01 2007-08-02 Madhusudhan Ramgarajan Optimizing system performance in flexible interleaving memory mode
US7707379B2 (en) * 2006-07-13 2010-04-27 International Business Machines Corporation Dynamic latency map for memory optimization
US7681201B2 (en) * 2006-08-04 2010-03-16 Lectronix Method and system for integrating and controlling components and subsystems
US8718087B1 (en) * 2006-10-24 2014-05-06 Marvell International Ltd. Processing architecture for passive optical network
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
KR101469512B1 (ko) * 2007-01-10 2014-12-05 모바일 세미컨덕터 코오포레이션 외부 컴퓨팅 디바이스의 성능 향상을 위한 어댑티브 메모리 시스템
US20080196030A1 (en) * 2007-02-13 2008-08-14 Buros William M Optimizing memory accesses for multi-threaded programs in a non-uniform memory access (numa) system
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US20100131698A1 (en) * 2008-11-24 2010-05-27 Tsai Chien-Liang Memory sharing method for flash driver
JP5671050B2 (ja) * 2009-11-04 2015-02-18 エスティー‐エリクソン(フランス)エスエーエスSt−Ericsson (France) Sas ランダムアクセスメモリの動的管理
US8321703B2 (en) * 2009-12-12 2012-11-27 Microsoft Corporation Power aware memory allocation
US20110161597A1 (en) * 2009-12-30 2011-06-30 International Business Machines Corporation Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller
JP5875193B2 (ja) * 2010-01-13 2016-03-02 マーベル・イスラエル・(エム・アイ・エス・エル)・リミテッドMarvell Israel (M.I.S.L.) Ltd. メディア処理のためのハードウェア仮想化
JP2011145838A (ja) * 2010-01-13 2011-07-28 Toshiba Corp 記憶装置管理装置および記憶装置の管理方法
CN103080903B (zh) * 2010-08-27 2016-07-06 富士通株式会社 调度器、多核处理器系统以及调度方法
US20120271903A1 (en) * 2011-04-19 2012-10-25 Michael Luna Shared resource and virtual resource management in a networked environment
CN102508787B (zh) * 2011-11-29 2014-09-03 清华大学 混合结构内存的内存分配系统及方法
US20140215177A1 (en) * 2012-08-02 2014-07-31 Boo Jin Kim Methods and Systems for Managing Heterogeneous Memories
US9600413B2 (en) * 2013-12-24 2017-03-21 Intel Corporation Common platform for one-level memory architecture and two-level memory architecture

Also Published As

Publication number Publication date
GB2516435A (en) 2015-01-28
CN105103138A (zh) 2015-11-25
CN105103138B (zh) 2018-11-16
US20140304485A1 (en) 2014-10-09
WO2014165514A1 (en) 2014-10-09
US10901883B2 (en) 2021-01-26
GB201312999D0 (en) 2013-09-04

Similar Documents

Publication Publication Date Title
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE112012000635T5 (de) Dynamische Speicherverwaltung in einer virtualisierten Datenverarbeitungsumgebung
DE112006003081T5 (de) Leistungspriorisierung in Multithreadprozessoren
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE112013001711T5 (de) Optimieren von Unterroutine-Aufrufen auf der Grundlage der Architekturebene einer aufgerufenen Unterroutine
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE112019001821B4 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
WO2013110736A1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE112014001815T5 (de) Eingebetteter Speicher mit Managementschema für Echtzeit-Applikationen
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102008062044A1 (de) Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE102018119881A1 (de) Verwaltung einer DRAM-Bankaktivierung
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102009056282A1 (de) Technik zum Steuern von Verarbeitungsressourcen
DE102021127324A1 (de) Planung von aufträgen auf grafischen verarbeitungseinheiten
DE102020132767A1 (de) Verwaltung der Dienstgüte (QoS) eines Speichersystems
DE102016202305A1 (de) Verfahren und Vorrichtung zum Betreiben eines Steuergeräts
DE102020119205A1 (de) Speichervorrichtung, speichersystem und betriebsverfahren hierfür
DE102018202446A1 (de) Verfahren zum Modularisieren einer Softwarearchitektur
DE102013015658A1 (de) System und Verfahren zum Starten von aufrufbaren Funktionen
DE112012002562T5 (de) Unterbringung von Daten in Partitionen auf einer Speichereinheit

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012080000

Ipc: G06F0009500000

R082 Change of representative

Representative=s name: BONN, ROMAN, DIPL.-ING. DR.-ING., DE

R012 Request for examination validly filed