-
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.