WO2016062899A1 - Verfahren zur effizienten verwaltung des flüchtigen speichers auf ressourcenbeschränkten datenverarbeitungsmaschinen - Google Patents
Verfahren zur effizienten verwaltung des flüchtigen speichers auf ressourcenbeschränkten datenverarbeitungsmaschinen Download PDFInfo
- Publication number
- WO2016062899A1 WO2016062899A1 PCT/EP2015/074760 EP2015074760W WO2016062899A1 WO 2016062899 A1 WO2016062899 A1 WO 2016062899A1 EP 2015074760 W EP2015074760 W EP 2015074760W WO 2016062899 A1 WO2016062899 A1 WO 2016062899A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- cache
- management unit
- area
- memory management
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Definitions
- RAM volatile memory
- RAM memory When creating program code for controlling such memory-limited information processing systems, three types of RAM memory are used in principle: stack memory, heap memory and such in which global objects are stored.
- stack memory When creating program code for controlling such memory-limited information processing systems, three types of RAM memory are used in principle: stack memory, heap memory and such in which global objects are stored.
- the latter memory areas are characterized by the fact that they are conceptually assigned to specific contents during the entire operating time.
- a memory space reservation request in heap memory typically occurs in conventional memory management implementations and program flows such that the satisfiability of the memory requirement in designing the system can not be predicted under all conditions. This is essentially due to the problem of fragmentation within the heap memory.
- a request from a heap storage area of a certain size may not be met, although in absolute terms the corresponding amount of storage is available there, but not contiguously, that is. not in a linearly increasing sequence of address values of the corresponding memory cells. Instead, in such a case they are present in different free blocks, each separated by already reserved blocks, in the heap memory.
- RAM Random Access Memory
- the use of RAM as a cache memory is opportunistic: whenever possible (ie, the corresponding memory may not be reserved for other purposes at any one time) and useful (ie, the data to be cached potentially has to enable more efficient program execution), cache contents are stored. At the same time, it is also possible to release any such cache memory area reserved for maintaining a cache content at any time within the program sequence.
- LRU least-recently-used
- the entire memory area allocated as stack memory can not be used otherwise - for example as a cache.
- the traditional approach to heap memory management is the problem of fragmentation of heap memory.
- the problem is solved by a memory management method according to claim 1 and an information processing system according to claim 12. This avoids the efficiency problem that arises when instead of the heap memory only stack memory could be used and simultaneously benefit from the use of cache memory: The entire stack memory area is available at any time in the program flow only for use as a stack memory area, regardless of how much memory area is actually reserved therein at that time for that purpose.
- the invention is essentially suitable for those devices which operate no operating system with its own memory management.
- an operating system is called Linux, which also exists in variants specifically for resource-limited platforms ("embedded Linux").
- embedded Linux Such an operating system has its own mechanisms, which achieve a similar success as the present invention, without the provision of special code in the code of the executed program.
- the corresponding technologies used by such operating systems are based on complex memory management mechanisms and are associated with special requirements for the central processing unit used: it must have a memory management unit (MMU) for mapping virtual addresses to physical ones.
- MMU memory management unit
- the use of an operating system with such memory management requires system resources of RAM, nonvolatile memory, and computational capacity that far exceed those of highly resource constrained systems.
- the present invention is particularly advantageous for those systems in which the use of such an operating system is out of the question. It does not make any special demands on the hardware. All aspects of the invention can be realized purely in software. This is very important because only the use of universal hardware elements that are produced in high volumes allows cost-saving solutions.
- the invention relates to both an apparatus and a method for the efficient use of RAM memory: the former, because within the scope of the invention, a memory management unit is realized with certain characteristics, and the latter, because even be implemented in the executing program code arrangements for using the invention have to.
- 1 is a representation of the conventional use of the RAM memory as a stack memory, composed of the individual areas 6,7 and 8 and memory for memory areas with any length of validity, composed of the two individual areas 9 and 10.
- the total available volatile memory of the information handling system is divided into these two areas.
- the storage area of arbitrarily long validity period it should be noted that in the present example in which no heap storage area is used, it is reserved for the entire duration of the program flow for a specific content, regardless of when a write access for the first time takes place therein.
- denoted by 2 a non-volatile memory area of the same information processing system is shown schematically.
- routine A is executed. It reserves the sub-area 6 in the stack memory area. It also performs a write access to the memory area 11 in the non-volatile memory. Then she calls routine B.
- the routine B reserves the sub-area 7 in the stack memory area. It also performs a write access to the memory area 12 in the nonvolatile memory area. Then she calls routine C.
- the routine C reserves the sub-area 8 on the stack memory area and then performs a write access to the area 11 of the non-volatile memory, then first writes data to the sub-area 10 of the permanent RAM memory area. Then the routine returns to routine B.
- Routine B performs a write access in the memory area 11 and 12 of the non-volatile memory, respectively. Then, for the first time, it writes data to subarea 9 of the persistent RAM memory area. Then she returns to routine A. Routine A first performs a write access to sub-area 11 and then to sub-area 12 of the non-volatile memory.
- heap memory areas can potentially be used as cache memory for non-volatile memory write accesses that are not reserved at that time.
- the parallel use of the heap memory as a cache is shown in the drawing under 4.
- Each of the individual cache subregions 19, 20, 21 and 22 drawn in there can hold a memory area from the non-volatile storage medium. The latter is shown for this example under 5 with its subregions 23 and 24.
- routine A is executed. It reserves the sub-area 14 in the temporary heap memory. It also performs write access to the memory area 23 in the non-volatile memory via the cache memory. In this case, the memory management unit loads the memory area 23 from the non-volatile memory into the cache memory area 20, where write access is performed, write access is enabled the actual storage area 23 of the non-volatile storage medium does not take place. The current routine then calls routine B.
- the routine B reserves the sub-area 15 in the temporary heap memory. It also performs a write access to the memory area 24 in the non-volatile memory area via the cache memory. In this case, the memory management unit loads the memory area 24 from the non-volatile memory into the cache memory area 21, where the write access is performed, a write access to the actual memory area 24 of the non-volatile memory medium does not take place. Then she calls routine C.
- the routine C reserves the sub-area 16 on the stack storage area.
- the memory management unit first causes the memory contents 20 of the cache memory to be copied into the area 22 of the cache memory-usable persistent heap memory. Only then does it make the reservation of the memory area 16. It then writes through the cache to area 23 of the non-volatile memory. At this time, the cache memory area becomes
- the routine B performs a write access in the memory area 23 and 24 of the non-volatile memory via the cache.
- the areas 22 and 21 of the cache memory are actually described, write accesses to the actual memory areas 23 and 24 of the nonvolatile storage medium do not take place. It then reserves the subspace 17 of the persistent heap memory.
- the memory management unit first copies the area 22 into the area 20 and the area 21 into the area 19 within the cache memory before it makes the reservation of the area 17 in the permanent heap memory. Thereafter, the routine B releases the memory area 15 in the temporary heap memory and returns to the routine A.
- Routine A first performs a write access to sub-area 23 and then sub-area 24 of the non-volatile memory via the cache memory. Initially, the corresponding write accesses in the memory areas 20 and 19 of the cache memory are completed. Subsequently, the routine A causes all contents of the cache memory to be transferred to the non-volatile memory. The memory management unit then writes the full contents of area 19 of the cache memory into area 24 and area 20 of the cache memory into area 23 of the non-volatile memory. In this example, using the invention, only two write accesses to areas of the non-volatile memory are made overall. This represents a significant advantage to the seven write accesses from the previous example according to conventional methods.
- the cache memory is used to maintain the result of data decompression calculations.
- the compression of data is an important and established technology to reduce the storage capacity requirements of storage media and therefore the costs.
- the data stored in compressed form on the storage media can be both data in the true sense and executable program code that is to be executed on an information processing system [1].
- both lossless and lossy compression can be used; in the case of program code, only lossless compression is an option.
- a limited non-volatile memory information processing system benefits from data or program code being stored in compressed form. If necessary, these data or the program code are already stored in this form during the production or delivery of the system. If the system is to use or output the compressed data for computation at runtime, or to execute the compressed program code, the data must first be decompressed. We assume that this operation is performed by the central processing unit in a conventional way. While there is also the ability to efficiently perform decompression on specialized hardware devices that may be integrated with the central processing unit, such measures increase the cost of the information processing system, thereby creating the risk that the cost savings will not be reduced by reducing the capacity of the information processing system volatile memory can be reversed by using compression.
- the decompression operation has to be performed by the central processing unit results in delays in accessing the respective data or program code.
- it makes sense to keep the decompressed data or the decompressed program code in the cache memory in the sense of the present invention, so that they can be provided without delay at the next request, ie if they have not been removed from the cache by the time the next request is made.
- the present invention has the value of having a limited volatile information (RAM) information processing system. a comparison with the conventional approach significantly improved use of this memory allows.
- RAM volatile information
- the cache memory is used to hold the result of pre-calculations for the acceleration of cryptographic operations.
- Cryptographic operations can be extremely computationally expensive and can be speeded up in part by the use of precalculated values.
- An example is the use of precalculated tables for encryption or decryption using the Advanced Encryption Standard (AES) algorithm [2].
- AES Advanced Encryption Standard
- Another example is the use of precalculated values in the context of so-called window exponentiations in the RSA method [3].
- the corresponding precalculated values are calculated by the memory management unit, if they are not already contained in the cache memory in accordance with the present invention, at the request of the actual cryptographic operation and subsequently stored in the cache memory, so that they may be updated at the next request Operation already exist and need not be recalculated.
- the cache memory is used to hold the result of cryptographic operations.
- a resource-limited information processing system benefits from the fact that, if the results are present in the cache memory, the possibly computationally intensive cryptographic operation does not have to be performed again.
- An information processing system protected against physical attacks as is the case with smart card micro controllers, for example, is suitable for storing sensitive data such as e.g. Store cryptographic keys securely.
- a microcontroller has very limited physical memory [4].
- the decryption is performed on the secure microcontroller, which also securely stores the necessary cryptographic keys.
- the decrypted data is kept in the cache memory in the sense of the present invention, so that it can be provided if necessary with a renewed access to the same data without the need for a new decryption operation.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
Verfahren zur parallelen Nutzung von temporär nicht reservierten Bereichen eines Heap-Speicherbereichs im flüchtigen Speicher als Cache-Speicher. In Informationsverarbeitungssystemen mit begrenztem flüchtigen Speicher wird durch dieses Verfahren gegenüber herkömmlichen Verfahren zur Speicherverwaltung eine deutlich bessere Ausnutzung des Speichers ermöglicht.
Description
Verfahren zur effizienten Verwaltung des flüchtigen Speichers auf resso urcenbeschränkten Datenverarbeitungsmaschinen
Die effiziente Steuerung von Informationsverarbeitungssystemen mit beschränkten Ressourcen, häufig bezeichnet als eingebettete (engl.: embedded) Systeme, mittels Programmcode, stellt in der Industrie ein bekanntes Problem dar. Auf solchen Systemen ist häufig unter anderem der flüchtige Speicher (RAM) aus Kostengründen stark begrenzt.
Bei der Erstellung von Programmcode zur Steuerung derartiger speicherbeschränkter Informationsverarbeitungssysteme kommen prinzipiell drei Verwendungsarten des RAM-Speichers zum Einsatz: Stack-Speicher, Heap- Speicher und solcher, in dem globale Objekte abgelegt werden. Letztere Speicherbereiche zeichnen sich dadurch aus, dass sie während der gesamten Betriebszeit konzeptionell fest bestimmten Inhalten zugeordnet sind.
Der herkömmliche Ansatz zur Verwaltung des Speichers auf eingebetteten Systemen besteht darin, dabei ganz auf den Heap-Speicher zu verzichten. Dies sieht z.B. der "Misra-C" Standard der Automobilindustrie vor. Der Hintergrund für diese Entscheidung ist sind folgende Bedenken: Eine Anforderung zur Reservierung eines Speicherbereichs im Heap-Speicher erfolgt in herkömmlichen Realisierungen einer Speicherverwaltung und den Programmabläufen typischerweise derart, dass die Erfüllbarkeit der Speicheranforderung bei der Konzeption des Systems nicht unter allen Bedingungen vorhergesagt werden kann. Dies ist im wesentlichen auf das Problem der Fragmentierung innerhalb des Heap-Speichers zurückzuführen. So besteht die Möglichkeit, dass an einem gewissen Punkt inner- halb des Programm ablaufs eine Anforderung von einem Heap -Speicherbereich einer bestimmten Größe nicht erfüllt werden kann, obwohl absolut gesehen die entsprechende Menge an Speicher dort verfügbar ist, dies allerdings nicht zusammenhängend, d.h. nicht in einer linear ansteigenden Folge von Adresswerten der entsprechenden Speicherzellen. Stattdessen liegen diese in einem solchen Fall in verschiedenen freien Blöcken, jeweils getrennt durch bereits reservierte Blöcke, im Heap-Speicher vor.
Aus diesem Grund verzichtet man in Informationsverarbeitungssystemen mit stark begrenztem RAM häufig ganz auf die Verwendung eines Heap- Speichers. Stattdessen nimmt man alle Speicherallokationen auf dem sogenannten Stack- Speicher vor, in welchem sich das Problem aufgrund seiner Beschaffenheit nicht stellt. Dieser Speicherbereich ist ohnehin in solchen Systemen immer notwendig: Im Programmcode wird er verwendet, um Zwischenwerte, die temporär nicht in den Registern der Zentralrecheneinheit gehalten werden können, auszulagern. Ferner muss jede von der Hauptroutine angesprungene Unterroutine die jeweilige Rücksprungadresse, an welcher die aufrufende Routine nach Beendigung der gerade aktiven Routine fortzusetzen ist, sowie ggf. weitere Informationen, im Stack-Speicher ablegen.
Eine weitere herkömmliche Art der Speichernutzung ist die Verwendung als Cache-Speicher, wobei wir hier von einem Cache-Speicher sprechen, der von dem Programmcode gesteuert wird, der also nicht zu verwechseln ist mit dem Cache- Speicher über den eventuell die Zentralrecheneinheit selbst verfügt (Hardware-
Cache) . Ein solcher Cache-Speicherbereich ist auch im RAM angesiedelt und hat die Aufgabe, Daten vorzuhalten, die eine effizientere Programmabarbeitung ermöglichen als in dem Fall, in dem sie nicht im Cache gehalten werden. Somit ist die Nutzung des RAM als Cache-Speicher eine opportunistische: wann immer möglich (d.h., der entsprechende Speicher darf zum jeweiligen Zeitpunkt nicht für andere Zwecke reserviert sein) und nützlich (d.h. die im Cache vorzuhaltenden Daten müssen potentiell eine effizientere Programmabarbeitung ermöglichen), werden Cache-Inhalte gespeichert. Gleichzeitig besteht die Möglichkeit, jeden solchen zur Vorhaltung eine Cache-Inhalts reservierten Cache-Speicherbereichs jederzeit innerhalb des Programmablaufs auch wieder freizugeben. Dies geschieht in einem Cache-Speicherbereich, der rein für die Vorhaltung von Cache-Inhalten verwendet wird, immer dann, wenn ein anderer Cache-Inhalt an die entsprechende Stelle geschrieben wird. Wann ein Cache- Inhalt durch einen anderen ersetzt wird, entscheidet die Cache-Speicherverwaltungseinhei welche sich typischerweise aus der Kombination eines internen Zustande und einer sogenannten Ersetzungsstrategie zusammensetzt. Eine häufige Ersetzungsstrategie ist "least-recently-used" (LRU), zu deutsch etwa "am längsten zurückliegend genutzt" . Bei dieser Strategie wird in dem Fall, dass keine freien Cache-Speicherbereiche existieren, bei der Reservierung eines neuen Cache-Inhalts derjenige Eintrag gelöscht, welcher am längsten zurückliegend genutzt wurde.
Die Nachteile der oben skizzierten bisherigen Ansätze sind die Folgenden: Im Falle der Vermeidung der Heap- Nutzung muss für den Stack-Speicher ein wesentlich größerer Bereich vorgesehen werden, da alle Speicherbereiche, die während der Programmabarbeitung reserviert werden, dort lokalisiert sind.
Der gesamte als Stack-Speicher eingeteilte Speicherbereich kann nicht anderweitig genutzt werden - etwa als Cache. Im Falle der Heap- Nutzung besteht im herkömmlichen Ansatz der Heap-Speicherverwaltung das Problem der Fragmentierung des Heap-Speichers.
Das Problem wird gelöst durch ein Speicherverwaltungsverfahren nach Anspruch 1 und ein Informationsverarbeitungssystem nach Anspruch 12. Dadurch wird das Effizienzproblem vermieden, welches entsteht, wenn man statt des Heap-Speichers nur Stack-Speicher verwendet und gleichzeitig vom Einsatz von Cache-Speicher profitieren könnte: Der gesamte Stack-Speicherbereich steht zu jedem Zeitpunkt im Programmablauf nur für die Nutzung als Stack-Speicherbereich zur Verfügung, unabhängig davon, wieviel Speicherbereich darin tatsächlich zum jeweiligen Zeitpunkt zu diesem Zwecke darin reserviert ist. Dies liegt daran, dass durch die im Programmcode implizite Reservierung von Stack-Speicher durch entsprechende Instruktionen, die von der Zentralrecheneinheit verarbeitet werden, eine explizite Verwaltung des Stack-Speicherbereichs durch den Programmcode selbst nicht möglich ist: Wenn eine Routine durch die Reservierung eines weiteren Bereichs innerhalb des Stack-Speichers in einen Speicherbereich vordringen würde, der gerade einen Cache-Inhalt enthält, so würde dieser einfach überschrieben werden, ohne dass es möglich wäre, den internen Zustand der Cache-Speicherverwaltung zu aktualisieren oder vor der Freigabe des Cache- Inhalts Operationen einzuleiten, die je nach der Art der Verwendung des Cache- Speichers notwendig sein können.
Für die Verwendung eines Cache-Speichers kommen alle Anwendungen in Betracht, bei denen durch das Vorhalten von Daten im Cache-Speicher spätere Operationen beschleunigt werden. Die wesentlichen Operationen, die hier relevant sind, sind Berechnungen, bei denen auf im Cache vorgehaltene Vorberechnungen zurückgegriffen wird, und Schreibzugriffe auf im Vergleich zum RAM durch deutlich langsamere Zugriffszeiten ausgezeichnete Speichermedien.
Die Erfindung ist im wesentlichen geeignet für solche Geräte, welche kein Betriebssystem mit eigener Speicherverwaltung betreiben. Als Beispiel für ein solches Betriebssystem sei Linux genannt, welches auch in Varianten speziell für ressourcenbeschränkte Plattformen existiert ( "embedded Linux" ) . Ein solches Betriebssystem hat eigene Mechanismen, welche einen ähnlichen Erfolg erzielen wie die vorliegende Erfindung, ohne dass im Code des ausgeführten Programms überhaupt besondere Vorkehrungen getroffen werden müssten. Die entsprechenden Technologien, wie sie von solchen Betriebssystemen eingesetzt werden, basieren jedoch auf komplexen Speicherverwaltungsmechanismen und sind mit besonderen Anforderungen an die verwendete Zentralrecheneinheit verbunden: diese muss zur Abbildung von virtuellen Adressen auf physische über eine sogenannte Memory Management Unit (MMU) verfügen. Ferner setzt die Verwendung eines Betriebssystems mit derartiger Speicherverwaltung Systemressourcen an RAM, nicht-flüchtigem Speicher sowie eine Rechenkapazität voraus, die weit über denen von stark ressourcenbeschränkten Systemen liegen. Die vorliegende Erfindung ist gerade für solche Systeme von Vorteil, auf denen die Verwendung eines derartigen Betriebssystems nicht in Frage kommt. Sie stellt keine keine besonderen Anforderungen an die Hardware. Alle Aspekte der Erfindung lassen sich rein in Software realisieren. Dies ist von hoher Bedeutung, da nur die Verwendung von universellen Hardwareelementen, die in hohen Stückzahlen produziert werden, kostensparende Lösungen erlaubt.
Die Erfindung betrifft sowohl eine Vorrichtung als auch ein Verfahren zur effizienten Verwendung von RAM Speicher: ersteres, weil im Rahmen der Erfindung eine Speicherverwaltungseinheit mit bestimmten Eigenschaften realisiert wird, und letzteres, weil im zur Ausführung gelangenden Programmcode selbst auch Vorkehrungen zur Verwendung der Erfindung vorgenommen werden müssen.
Wir geben im Folgenden eine beispielhafte technische Ausgestaltung an, welche den Nutzen der Erfindung demonstriert. Dazu werden wir einen Programmablauf zuerst nach dem herkömmlichen Ansatz und anschließend den analogen Ablauf unter Verwendung der Erfindung darstellen. Dies geschieht im Zusammenhang mit der Verwendung eines Cache, welcher Speicherinhalte eines nicht- flüchtigen Speichermediums vorhält, welches sich durch deutlich langsamere Zeit für Schreibzugriffe im Vergleich mit dem RAM auszeichnet. Dabei verstehen wir unter den nicht-flüchtigen Speicherbereichen sogenannte Speicherseiten, welche eine von der technischen Hardwarelösung abhängige Größe haben und die Eigenschaft haben, nur als Ganzes beschreibbar zu sein. Dabei ist die Dauer eines solchen Schreibzugriffs unabhängig von der Anzahl der tatsächlich geänderten Datenbits innerhalb der Speicherseite, und ist typischerweise um einen Faktor von tausend oder mehr zeitintensiver als ein Schreibzugriff auf eine RAM-Speicherzelle. Aus diesem Grund werden wir uns bei der nachfol-
genden Beschreibung des beispielhaften Programmablaufs auf die für die Erfindung maßgeblichen Aspekte beschränken; dies sind die Speicherreservierungen im RAM und die Schreibzugriffe im nicht-flüchtigen Speicher.
In der Zeichnung ist mit 1 eine Darstellung der herkömmlichen Verwendung des RAM Speichers als Stack-Speicher, zusammengesetzt aus der den Einzelbereichen 6,7 und 8 und Speicher für Speicherbereiche mit beliebig langer Gültigkeitsdauer, zusammengesetzt aus den beiden Einzelbereichen 9 und 10. In diesem Beispiel ist der gesamte verfügbare flüchtige Speicher des Informationsverarbeitungssystems in diese beiden Bereich geteilt. Zu dem Speicherbereich mit beliebig langer Gültigkeitsdauer ist anzumerken, dass dieser im vorliegenden Beispiel, in dem kein Heap-Speicherbereich verwendet wird, für die gesamte Dauer des Programmablaufs für einen bestimmten Inhalt reserviert ist, unabhängig davon, wann zum ersten Mal ein Schreibzugriff darin erfolgt. Ferner ist, mit 2 bezeichnet, schematisch ein nicht-flüchtiger Speicherbereich des gleichen Informationsverarbeitungssystems dargestellt. Aus reinen Darstellungsgründen hat er in der Zeichnung die gleiche Größe wie der RAM, in tatsächlichen Systemen hat er üblicherweise eine abweichende Größe. Nehmen wir nun den nachfolgend beschriebenen Programmablauf an. Dabei ignorieren wir, wenn wir von der Reservierung von Speicherbereichen auf dem Stack sprechen, die weiter oben erwähnten, typischerweise kleinen Speicherbereiche, die dort zur Ablage von Rücksprungadressen und zur Auslagerung von Registerwerten aus der Zentralrecheneinheit verwendet werden. Stattdessen verstehen wir unter Reservierungen von Speicherbereichen solche von beträchtlicher Größe, wie sie beispielsweise zu komplexen mathematischen Berechnungen nötig sind oder für das Speichern von längeren Nachrichten, die das System über entsprechende Schnittstellen empfängt oder sendet. Nun folgt der abstrahierte, exemplarische Programmablauf, wie er mittels des herkömmlichen Ansatzes erfolgt.
• Zunächst wird die Routine A ausgeführt. Sie reserviert in dem Stack- Speicherbereich den Unterbereich 6. Ferner führt sie einen Schreibzugriff auf den Speicherbereich 11 im nicht- flüchtigen Speicher durch. Anschließend ruft sie die Routine B auf.
• Die Routine B reserviert in dem Stack-Speicherbereich den Unterbereich 7. Ferner führt sie einen Schreibzugriff auf den Speicherbereich 12 im nichtflüchtigen Speicherbereich durch. Anschließend ruft sie die Routine C auf.
• Die Routine C reserviert auf dem Stack-Speicherbereich den Unterbereich 8 und führt dann einen Schreibzugriff in den Bereich 11 des nicht- flüchtigen Speichers durch, dann schreibt sie erstmals Daten in den Unterbereich 10 des dauerhaften RAM-Speicherbereichs. Dann kehrt die Routine zurück zur Routine B.
• Die Routine B führt jeweils einen Schreibzugriff in dem Speicherbereich 11 und 12 des nicht-flüchtigen Speichers durch. Anschließend schreibt sie erstmals Daten in den Unterbereich 9 des dauerhaften RAM-Speicherbereichs. Danach kehrt sie zur Routine A zurück.
• Die Routine A führt zunächst einen Schreibzugriff auf den Unterbereich 11 und dann den Unterbereich 12 des nicht- flüchtigen Speichers durch.
Bei diesem Ablauf wurde insgesamt sieben Schreibzugriffe auf Bereiche im nicht- flüchtigen Speichermedium durchgeführt.
Nun betrachten wir den gleichen Ablauf, wie er unter Verwendung der Erfindung gestaltet werden kann. Dazu finden sich in der Zeichnung wiederum die Darstellung des RAM-Speichers, zusammengesetzt aus Stack- Speicher (13), sowie den in diesem Fall neu dazugekommenen Heap-Speicher, der sich aus den restlichen Bereichen des RAMs (14, 15, 16, 17 und 18) zusammensetzt. Der Stack-Speicher kann in diesem Fall viel kleiner sein, da er hier nur noch zur Speicherung der Rücksprungadressen, ggf. weiterer Verwaltungsinformationen und ausgelagerten Registerwerten verwendet wird. Die größeren Speicherbereiche, welche die einzelnen Routinen reservieren, werden nun in dem temporären Heap-Speicher vorgenommen, der sich aus den Einzelbereichen 14, 15 und 16 zusammensetzt. Der dauerhafte Heap-Speicher mit den Einzelbereichen 17 und 18 ersetzt die fest zugeteilten dauerhaften Speicherbereiche 9 und 10 aus dem vorhergehenden Beispiel.
Im Folgenden stellen wir den gleichen Programmablauf wie im vorhergehenden Beispiel dar, mit den einzigen Unterschieden, dass
• nun die temporären Reservierungen von Speicherbereichen durch einzelne Routinen nicht mehr in dem Stack-Speicher, sondern in dem temporären Heap-Speicher vorgenommen werden,
• die Speicherbereiche im dauerhaften Heap-Speicher nicht mehr über den gesamten Programmablauf reserviert sind, sondern nur ab dem Zeitpunkt, ab dem diese benötigt werden, bis zu dem Zeitpunkt, ab dem sie nicht mehr benötigt werden,
• solche Heap-Speicherbereiche potentiell als Cache-Speicher für Schreibzugriffe im nicht-flüchtigen Speichermedium genutzt werden können, die zum jeweiligen Zeitpunkt nicht reserviert sind. Die solchermaßen parallele Verwendung des Heap-Speichers als Cache ist in der Zeichnung dargestellt unter 4. Jeder der dort eingezeichneten einzelnen Cache- Teilbereiche 19, 20, 21 und 22 kann einen Speicherbereich aus dem nicht-flüchtigen Speichermedium vorhalten. Letzteres ist für dieses Beispiel unter 5 mit seinen Teilbereichen 23 und 24 dargestellt.
Nun geben wir den analogen Programmablauf unter Verwendung der Erfindung an:
• Zunächst wird die Routine A ausgeführt. Sie reserviert in dem temporären Heap-Speicher den Unterbereich 14. Ferner führt sie über den Cache- Speicher einen Schreibzugriff auf den Speicherbereich 23 im nicht-flüchtigen Speicher durch. Dabei wird von der Speicherverwaltungseinheit der Speicherbereich 23 aus dem nicht-flüchtigen Speicher in den Cache-Speicherbereich 20 geladen, dort wird der Schreibzugriff vollzogen, ein Schreibzugriff auf
den tatsächlichen Speicherbereich 23 des nicht-flüchtigen Speichermediums findet nicht statt. Anschließend ruft die aktuelle Routine die Routine B auf.
Die Routine B reserviert in dem temporären Heap-Speicher den Unterbereich 15. Ferner führt sie über den Cache-Speicher einen Schreibzugriff auf den Speicherbereich 24 im nicht-flüchtigen Speicherbereich durch. Dabei wird von der Speicherverwaltungseinheit der Speicherbereich 24 aus dem nicht-flüchtigen Speicher in den Cache-Speicherbereich 21 geladen, dort wird der Schreibzugriff vollzogen, ein Schreibzugriff auf den tatsächlichen Speicherbereich 24 des nicht-flüchtigen Speichermediums findet nicht statt. Anschließend ruft sie die Routine C auf.
Die Routine C reserviert auf dem Stack-Speicherbereich den Unterbereich 16. Dabei veranlaßt die Speicherverwaltungseinheit zunächst, dass der Speicherinhalt 20 des Cache-Speichers in den den Bereich 22 des des als Cache-Speichers nutzbaren dauerhaften Heap-Speicher kopiert wird. Erst anschließend führt sie die Reservierung des Speicherbereichs 16 durch. Dann führt sie über den Cache einen Schreibzugriff in den Bereich 23 des nicht-flüchtigen Speichers durch. Dabei wird der Cache-Speicherbereich
22 beschrieben, ein Schreibzugriff auf den tatsächlichen Speicherbereich
23 des nicht-flüchtigen Speichermediums findet nicht statt. Dann reserviert sie den Unterbereich 18 des dauerhaften RAM-Speicherbereichs und beschreibt ihn mit Daten. Dann gibt die Routine C den Bereich 16 im temporären Heap-Speicher wieder frei und kehrt zurück zur Routine B.
Die Routine B führt über den Cache jeweils einen Schreibzugriff in dem Speicherbereich 23 und 24 des nicht-flüchtigen Speichers durch. Dabei werden tatsächlich die Bereiche 22 und 21 des Cache-Speichers beschrieben, Schreibzugriffe auf die tatsächlichen Speicherbereiche 23 und 24 des nichtflüchtigen Speichermediums finden nicht statt. Anschließend reserviert sie den Unterbereich 17 des dauerhaften Heap-Speichers. Dabei wird von der Speicherverwaltungseinheit zunächst innerhalb des Cache-Speichers der Bereich 22 in den Bereich 20 und der Bereich 21 in den Bereich 19 kopiert, bevor sie die Reservierung des Bereichs 17 im dauerhaften Heap- Speicher vornimmt. Danach gibt die Routine B den Speicherbereich 15 im temporären Heap-Speicher wieder frei und kehrt zur Routine A zurück.
Die Routine A führt zunächst einen Schreibzugriff auf den Unterbereich 23 und dann den Unterbereich 24 des nicht-flüchtigen Speichers über den Cache-Speicher durch. Dabei werden zunächst die entprechenden Schreibzugriffe in den Speicherbereichen 20 und 19 des Cache-Speichers vollzogen. Anschließend veranlasst die Routine A, dass alle Inhalte des Cache- Speichers in den nicht-flüchtigen Speicher übertragen werden. Daraufhin vollzieht die Speicherverwaltungseinheit des Schreiben des vollständigen Inhalts des Bereichs 19 des Cache-Speichers in den Bereich 24 und des Bereichs 20 des Cache-Speichers in den Bereich 23 des nicht-flüchtigen Speichers.
In diesem Beispiel werden unter Verwendung der Erfindung insgesamt nur zwei Schreibzugriffe in Bereiche des nicht-flüchtigen Speichers getätigt. Dies stellt einen erheblichen Vorteil zu den sieben Schreibzugriffen aus dem vorhergehenden Beispiel nach herkömmlichen Verfahren dar.
In einer weiteren möglichen Ausgestaltung wird der Cache-Speicher dazu verwendet, das Ergebnis von Datendekompressionsberechnungen vorzuhalten. Die Kompression von Daten ist eine wichtige und etablierte Technologie um die Anforderungen an die Speicherkapazität von Speichermedien und damit die Kosten zu reduzieren. Dabei kann es sich in diesem Zusammenhang bei den Daten, die komprimiert auf den Speichermedien abgelegt werden, sowohl um Daten im eigentlichen Sinne als auch um ausführbaren Programmcode handeln, der auf einem Informationsverarbeitungssystem ausgeführt werden soll [1] . Im Falle von Daten kann sowohl verlustfreie als auch verlustbehaftete Kompression zum Einsatz kommen, im Falle von Programmcode kommt nur verlustfreie Kompression in Frage. Im Folgenden wird kurz dargelegt, wie ein Informationsverarbeitungssystem mit stark beschränkten Ressourcen von der Verwendung eines solchen Konzepts profitiert. Dabei sehen wir von einer detaillierten Beschreibung der generellen Funktion der Speicherverwaltungseinheit zur Verwaltung des Heap- und Cache-Speichers ab, da diese schon im vorhergehenden Beispiel des Caches zum Vorhalten von Daten eines nicht-flüchtigen Speichermediums ausführlich erläutert wurde.
Ein Informationsverarbeitungssystem mit beschränktem nicht-flüchtigen Speicher profitiert davon, wenn Daten oder Programmcode komprimiert gespeichert werden. Diese Daten bzw. der Programmcode werden gegebenenfalls bereits bei der Produktion bzw. Auslieferung des Systems in dieser Form abgelegt. Wenn das System zur Laufzeit die komprimiert gespeicherten Daten zu Berechnungen verwenden oder ausgeben soll, oder den komprimierten Programmcode ausführen soll, so muss vorher eine Dekomprimierung der Daten durchgeführt werden. Wir gehen davon aus, dass diese Operation von der Zentralrecheneinheit auf herkömmlichem Weg ausgeführt wird. Zwar existiert auch die Möglichkeit, die Dekomprimierung effizient auf dafür spezialisierten Hardwarebausteinen durchführen zu lassen, die gegebenenfalls in die Zentralrecheneinheit integriert sein können, doch erhöhen solche Maßnahmen die Kosten des Informationsverarbeitungssystems, wodurch die Gefahr entsteht, dass die Kostenersparnisse durch die Reduktion der Kapazität des nicht-flüchtigen Speichers durch Verwendung von Kompression wieder aufgehoben werden. Dadurch, dass die Dekomprimierungsoperation von der Zentralrecheneinheit durchgeführt werden muss, entstehen Verzögerungen beim Zugriff auf die jeweiligen Daten bzw. den Programmcode. Um eine möglichst optimale Performanz unter diesen Bedingungen zu erlangen, ist es sinnvoll, die dekomprimierten Daten bzw. den dekomprimierten Programmcode im dem Cache-Speicher in dem Sinne der vorliegenden Erfindung vorzuhalten, damit diese gegebenenfalls bei der nächsten Anforderungen ohne Verzögerung bereitgestellt werden können, d.h. falls diese bis zum Zeitpunkt der nächsten Anforderung noch nicht aus dem Cache-Speicher entfernt wurden. Wieder hat die vorliegende Erfindung den Wert, dass ein Informationsverarbeitungssystem mit beschränktem flüchtigen Speicher (RAM)
eine gegenüber dem herkömmlichen Ansatz deutlich verbesserte Nutzung dieses Speichers ermöglicht.
In einer weiteren möglichen Ausgestaltung wird der Cache-Speicher dazu verwendet, das Ergebnis von Vorberechnungen für die Beschleunigung von kryptographischen Operationen vorzuhalten. Hierbei ergeben sich wieder die bereits oben dargelegten Vorteile für Informationsverarbeitungssysteme mit stark beschränkten Ressourcen. Kryptographische Operationen sind mitunter äußerst rechenaufwendig und können teilweise durch die Verwendung von vorberechneten Werten beschleunigt werden. Ein Beispiel ist die Verwendung von vorberechneten Tabellen für die Ver- oder Entschlüsselung mittels des Advanced Encryp- tion Standard ( AES) Algorithmus [2] . Ein weiteres Beispiel ist Verwendung von vorberechneten Werten im Rahmen von sogenannten Window-Exponentiationen beim RSA- Verfahren [3] . Die entsprechenden vorberechneten Werte werden von der Speicherverwaltungseinheit, wenn sie nicht bereits im Cache-Speicher im Sinne der vorliegenden Erfindung enthalten sind, bei der Anforderung der eigentlichen kryptographischen Operation berechnet und anschließend im Cache- Speicher abgelegt, so dass sie gegebenenfalls bei der nächsten Anforderung der Operation bereits vorliegen und nicht neu berechnet werden müssen.
In einer weiteren möglichen Ausgestaltung wird der Cache-Speicher dazu verwendet, das Ergebnis von kryptographischen Operationen vorzuhalten. Hier profitiert ein ressourcenbeschränktes Informationsverarbeitungssystem davon, dass beim Vorliegen der Resultate im Cache-Speicher die unter Umständen rechenintensive kryptographische Operation nicht erneut durchgeführt werden muss. Dies könnte z.B. in folgendem Szenario der Fall sein: Ein Informationsverarbeitungssystem, welches gegen physische Angriffe geschützt ist, wie dies beispielsweise bei Smartcard Micro Controllern der Fall ist, ist dazu geeignet, sensible Daten wie z.B. kryptographische Schlüssel sicher zu speichern. Allerdings verfügt ein solcher Microcontroller über stark beschränkten physischen Speicher [4] . Durch die Verwendung eines herkömmlichen externen Speicherbausteins auf dem Daten verschlüsselt abgelegt werden, kann die Speicherkapazität des Informationsverarbeitungssystems kostengünstig erhöht werden. Die Entschlüsselung wird auf dem sicheren Microcontroller durchgeführt, der auch die dazu notwendigen kryptographischen Schlüssel sicher speichert. Zur Steigerung der Effizienz des Systems werden die entschlüsselten Daten im Cache-Speicher im Sinne der vorliegenden Erfindung vorgehalten, so dass diese gegebenenfalls bei einem erneuten Zugriff auf die gleichen Daten ohne die Notwendigkeit einer erneuten Entschlüsselungsoperation bereitgestellt werden können.
Literatur
[1] Lin, C.H., Xie, Y., Wolf, W.: LZW-Based Code Compression for VLIW Embedded Systems
[2] National Institute of Standards and Technology: Federal Information Processing Standards Publication - Advanced Encryption Standard (AES)
http: //csrc .nist .gov/publications/fips/fipsl97/fips-197.pdf.
Cetin Kaya Koc, RSA Laboratories: High-Speed RSA Implementation ftp //ftp . rsasecurity. com/pub/pdfs/tr201. pdf.
Infineon Technology AG: SLE 97CSNFX1M00PE http: //www infineon. com/cms/de/product/smart-card-ic/smart-card-module/ smart-card-and-security-ics/SLE+97CSNFXlM00PE/productType. html?productType=db3a30433fa9412f013fc336f5b61elf.
Claims
1. Speicherverwaltungsverfahren in einem Informationsverarbeitungssystem bestehend mindestens aus einer Zentralrecheneinheit, einer Speicherverwaltungseinheit, einem nicht-flüchtigen Speicher und einem beschränkten flüchtigen Speicher (RAM) , der zumindest in die Bereiche eines Heap- Speichers und eines Stack-Speichers (Stapelspeicher) unterteilt, verwendet wird,
• wobei ein Teil des Heap-Speichers auch als Cache-Speicher genutzt werden kann,
• wobei die Speicherverwaltungseinheit ausgebildet ist, einen Heap- Speicher und einen Cache-Speicher zu verwalten,
• wobei ein Speicherbereich des Heap-Speichers, der als Cache-Speicher genutzt wird, freigegeben wird, wenn
— entweder ein anderer Cache- Inhalt teilweise oder ganz überlappend mit dem Speicherbereich eines existierenden Cache-Inhalts in den Cache geschrieben wird,
— oder der von einem Cache-Inhalt beanspruchte Speicherbereich als Heap-Speicher reserviert wird.
• wobei die Speicherverwaltungseinheit derart ausgebildet ist, bei der Freigabe eines Cache-Inhalts gegebenenfalls eine bestimmte Aktion durchzuführen, die ihr von einem auf dem Informationsverarbeitungssystem laufenden Hauptprogramm aus vorgegeben wurde.
2. Speicherverwaltungsverfahren nach Anspruch 1, wobei die Speicherverwaltungseinheit vom Hauptprogramm aus derart konfiguriert werden kann, dass Sie auf Anforderung vom Hauptprogramm das Resultat einer Berechnung an selbiges zurückliefert, wobei vom Hauptprogramm in diesem Fall alle zur Durchführung der Berechnung nötigen Informationen, in Form von Rechenvorschriften und den zugehörigen Eingabedaten oder Referenzen darauf, der Speicherverwaltungseinheit zuvor mitgeteilt werden; wobei die Speicherverwaltungseinheit das Resultat der Berechnung, falls dieses zum Zeitpunkt der Anforderung nicht in dem Cache-Speicher enthalten ist, mit Hilfe der ihr vom Hauptprogramm übergebenen Rechenvorschriften und Eingabedaten erzeugt, und das Resultat dieser Berechnung anschließend dem Hauptprogramm zurückgibt, und das Resultat zusätzlich vollständig oder Teile davon in den Cache-Speicher übernimmt; wobei, falls das Resultat der Berechnung bei der entsprechenden Anforderung vom Hauptprogramm aus bereits im Cache-Speicher enthalten ist, dieses ohne die Durchführung einer Berechnung dem Hauptprogramm zurückgegeben wird.
3. Speicherverwaltungsverfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Heap-Speicher konzeptionell in einen Bereich, in dem
Speicherbereiche reserviert werden, die innerhalb einer einzelnen Routine reserviert und wieder freigegeben werden (temporärer Heap-Speicher), und in einen Bereich aufgeteilt werden, in dem Speicherbereiche für beliebige Dauer reserviert werden (dauerhafter Heap-Speicher), wobei die Größe eines dieser beiden Bereiche auch bei Null liegen kann.
4. Speicherverwaltungsverfahren nach Anspruch 3, dadurch gekennzeichnet, dass die Speicherreservierung im temporären Heap-Speicher immer in einer für das Informationsverarbeitungssystem vordefinierten Richtung vorgenommen wird, entweder von niedrigeren nach höheren Adressen oder von höheren nach niedrigeren Adressen, wobei bei der Reservierung eines Speicherbereichs einer bestimmten Größe von der Speicherverwaltungseinheit immer der erste nicht-reservierte Bereich der entsprechenden Größe in der vordefinierten Richtung reserviert wird.
5. Speicherverwaltungsverfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass es innerhalb der Speicherverwaltungseinheit eine vordefinierte Liste mit den Speicheradressen gibt, an denen im dauerhaften Heap- Speicher Speicherbereiche reserviert werden können, wobei jedem Eintrag in der Liste ein Identifikationsmerkmal zugeordnet ist, welches der Speicherverwaltungseinheit im Fall einer Anforderung zur Reservierung von Speicher im dauerhaften Heap-Speicher mitgeteilt wird, worauf die Speicherverwaltungseinheit den Speicher an der zugehörigen Adresse reserviert, welche sie der internen Liste entnimmt.
6. Speicherverwaltungsverfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass die Reservierung von Speicherbereichen im dauerhaften Heap-Speicher derart erfolgt, dass an jeder Adresse des Speicherbereichs nur Speicherbereiche einer bestimmten Größe als Heap-Speicher reserviert werden können;
wobei die Festlegung, an welcher Adresse Speicherbereiche einer bestimmten Größe reserviert werden können, in einer dynamischen Liste festgelegt ist, welche vor der ersten Reservierung von dauerhaftem Heap-Speicher leer ist;
wobei nach der ersten Reservierung eines Speicherbereichs einer bestimmten Größe die dem Bereich zugeordnete Adresse zusammen mit dem Wert der entsprechenden Speichergröße in die Liste aufgenommen wird;
wobei bei der nächsten Reservierung von Speicher der gleichen Größe der Reihe nach die Adressen in dieser Liste, welche für diese Speichergröße ausgewiesen sind, darauf überprüft werden, ob sie gerade als Heap- Speicherbereiche reserviert sind;
wobei, wenn eine von Null verschiedene Anzahl solchermaßen freier Adressen gefunden wird, eine dieser Adressen ausgewählt und an dieser Stelle der Speicherbereich reserviert wird;
wobei, wenn die Zahl der solchermaßen freien Adressen Null ist, eine neue Adresse zusammen mit der entsprechenden Speichergröße in die Liste aufgenommen und der Speicherbereich an dieser Adresse reserviert wird.
7. Speicherverwaltungsverfahren nach einem der Ansprüche 3, 4, 5 oder 6, dadurch gekennzeichnet, dass ein Cache- Inhalt, der in einem Speicherbereich residiert, freigegeben wird, weil er als Heap-Speicher reserviert wird, und je nach dem internen Zustand der Speicherverwaltungseinheit zuvor in einen anderen Speicherbereich des zu diesem Zeitpunkt als Cache nutzbaren Heap-Speichers kopiert wird, dabei ein gegebenenfalls in diesem anderen Cache-Speicherbereich vorgehaltener Cache-Inhalt freigegeben wird, und der interne Zustand der Speicherverwaltungseinheit entsprechend aktualisiert wird.
8. Speicherverwaltungsverfahren nach einem der Ansprüche 3, 4, 5, 6 oder 7, wobei die Speicherverwaltungseinheit im Cache-Speicher Inhalte eines nicht-flüchtigen Speichermediums vorhält und bei einem Freigeben des Cache- Inhalts den Cache- Inhalt in den nicht- flüchtigen Speicher schreibt.
9. Speicherverwaltungsverfahren nach einem der Ansprüche 3, 4, 5, 6 oder 7, wobei die Speicherverwaltungseinheit im Cache-Speicher Resultate von Datendekomprimierungsoperationen vorhält, wobei die Speicherverwaltungseinheit, wenn ein solches Resultat angefordert wird und nicht bereits im Cache-Speicher vorrätig ist, die Datendekomprimierungsoperation durchführt; wobei als Grundlage zur Durchführung dieser Operationen jeweils die vom Hauptprogramm übergebene Referenz auf komprimierte Daten verwendet wird und die Rechenvorschrift zur Datendekomprimierung entweder fester Bestandteil der Speicherverwaltungseinheit ist oder ihr vom Hauptprogramm vorgegeben wird.
10. Speicherverwaltungsverfahren nach einem der Ansprüche 3, 4, 5, 6 oder 7, wobei die Speicherverwaltungseinheit im Cache-Speicher Resultate von Vorberechnungen für kryptographische Operationen vorhält, wobei, wenn ein solches Resultat angefordert wird und nicht bereits im Cache-Speicher vorrätig ist, die Speicherverwaltungseinheit die entsprechende Vorberechnung durchführt;
wobei als Grundlage zur Durchführung der Vorberechnung jeweils die vom Hauptprogramm übergebene Referenz auf eine kryptographische Operation, und gegebenenfalls einen kryptographischen Schlüssel oder diesem zugeordnete Parameter, verwendet werden und die Rechenvorschrift zur Vorberechnung entweder fester Bestandteil der Speicher Verwaltungseinheit ist oder ihr vom Hauptprogramm vorgegeben wird.
11. Speicherverwaltungsverfahren nach einem der Ansprüche 3, 4, 5, 6 oder 7, wobei die Speicherverwaltungseinheit im Cache-Speicher Resultate von kryptographischen Operationen vorhält, wobei, wenn ein solches Resultat angefordert wird und nicht bereits im Cache-Speicher vorrätig ist, die Speicherverwaltungseinheit die entsprechende kryptographische Operation durchführt;
wobei als Grundlage zur Durchführung der Operation jeweils die vom
Hauptprogramm übergebene Referenz auf eine kryptographische Operation und die entsprechenden Eingabedaten verwendet werden und die Rechenvorschrift zur Durchführung der kryptographischen Operation entweder fester Bestandteil der Speicherverwaltungseinheit ist oder ihr vom Hauptprogramm vorgegeben wird.
12. Informationsverarbeitungssystem, bestehend mindestens aus einer Zentralrecheneinheit, einer Speicherverwaltungseinheit und einem beschränkten flüchtigen Speicher (RAM) , der zumindest in die Bereiche eines Heap- Speichers und eines Stack-Speichers (Stapelspeicher) unterteilt, verwendet wird, wobei das Informationsverarbeitungssystem ausgebildet ist, ein oder mehrere Verfahren nach den Ansprüchen 1 bis 11 auszuführen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102014015855.1 | 2014-10-25 | ||
DE102014015855.1A DE102014015855B3 (de) | 2014-10-25 | 2014-10-25 | Verfahren zur effizienten Verwaltung des flüchtigen Speichers auf ressourcenbeschränkten Datenverarbeitungsmaschinen |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016062899A1 true WO2016062899A1 (de) | 2016-04-28 |
Family
ID=54396848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2015/074760 WO2016062899A1 (de) | 2014-10-25 | 2015-10-26 | Verfahren zur effizienten verwaltung des flüchtigen speichers auf ressourcenbeschränkten datenverarbeitungsmaschinen |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE102014015855B3 (de) |
WO (1) | WO2016062899A1 (de) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753363A (zh) * | 2019-01-31 | 2019-05-14 | 深兰科技(上海)有限公司 | 一种嵌入式系统内存管理方法及装置 |
CN111448325A (zh) * | 2017-10-02 | 2020-07-24 | 皇家飞利浦有限公司 | 使用靶基因表达的数学建模评估jak-stat3细胞信号传导途径活性 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040186976A1 (en) * | 2003-03-19 | 2004-09-23 | Autodesk, Inc. | Heap memory management |
US20040221120A1 (en) * | 2003-04-25 | 2004-11-04 | International Business Machines Corporation | Defensive heap memory management |
US20050102657A1 (en) * | 2003-10-10 | 2005-05-12 | Lewis Brian T. | Method and apparatus for feedback-based management of combined heap and compiled code caches |
US20060167961A1 (en) * | 2005-01-27 | 2006-07-27 | International Business Machines Corporation | Autonomic cache object array based on heap usage |
-
2014
- 2014-10-25 DE DE102014015855.1A patent/DE102014015855B3/de not_active Expired - Fee Related
-
2015
- 2015-10-26 WO PCT/EP2015/074760 patent/WO2016062899A1/de active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040186976A1 (en) * | 2003-03-19 | 2004-09-23 | Autodesk, Inc. | Heap memory management |
US20040221120A1 (en) * | 2003-04-25 | 2004-11-04 | International Business Machines Corporation | Defensive heap memory management |
US20050102657A1 (en) * | 2003-10-10 | 2005-05-12 | Lewis Brian T. | Method and apparatus for feedback-based management of combined heap and compiled code caches |
US20060167961A1 (en) * | 2005-01-27 | 2006-07-27 | International Business Machines Corporation | Autonomic cache object array based on heap usage |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111448325A (zh) * | 2017-10-02 | 2020-07-24 | 皇家飞利浦有限公司 | 使用靶基因表达的数学建模评估jak-stat3细胞信号传导途径活性 |
CN109753363A (zh) * | 2019-01-31 | 2019-05-14 | 深兰科技(上海)有限公司 | 一种嵌入式系统内存管理方法及装置 |
CN109753363B (zh) * | 2019-01-31 | 2021-06-29 | 深兰科技(上海)有限公司 | 一种嵌入式系统内存管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
DE102014015855B3 (de) | 2016-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112016001075B4 (de) | Verteiltes speichern und abrufen von datensätzen | |
DE112011102487B4 (de) | Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen | |
DE102005029852B4 (de) | Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem | |
DE102012208141B4 (de) | Ausgleich nachlassender Funktionsfähigkeit | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE60001170T2 (de) | Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung | |
WO2013171122A2 (de) | Funktional erweiterbares fahrzeugsteuergerät und verfahren zum ergänzen der funktionalität eines fahrzeugsteuergeräts | |
DE102012201225A1 (de) | Rechnersystem | |
WO2016062899A1 (de) | Verfahren zur effizienten verwaltung des flüchtigen speichers auf ressourcenbeschränkten datenverarbeitungsmaschinen | |
EP1314135A1 (de) | Verfahren zur virtuellen vergrösserung des stacks eines tragbaren datenträgers | |
DE102016202305A1 (de) | Verfahren und Vorrichtung zum Betreiben eines Steuergeräts | |
EP1079307A1 (de) | Verfahren zum Betrieb eines Speichersystems sowie Speichersystem | |
WO2011134762A1 (de) | Coprozessor mit aufgabenablaufsteuerung | |
DE112007001541T5 (de) | Adressmaskierung zwischen Benutzern | |
EP1119811A1 (de) | Verfahren zur verbindung von stackmanipulationsangriffen bei funktionsaufrufen | |
EP3693856A1 (de) | Verfahren zum übertragen einer nachricht in einem rechensystem sowie rechensystem | |
DE102015002130A1 (de) | Programmierbare Steuerung | |
DE102018123563B4 (de) | Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor | |
DE112017008201B4 (de) | Informationsverarbeitungsvorrichtung, Informationsverarbeitungsverfahren und Informationsverarbeitungsprogramm | |
DE112015002881B4 (de) | Speichervorrichtung, Flash-Speicher-Steuervorrichtung und Programm | |
EP2151762B1 (de) | Speicherverwaltung in einem portablen Datenträger | |
DE102004040296B3 (de) | Schreiben von Daten in einen nichtflüchtigen Speicher eines tragbaren Datenträgers | |
DE102008062259A1 (de) | Verfahren zur Speicherverwaltung in einem dezentralen Datennetz und dezentrales Datennetz | |
WO2024046731A1 (de) | Verfahren zur rechnergestützten beschränkung von persistentem speicher für eine container-basierte applikation | |
EP2021928B1 (de) | Verfahren und vorrichtung zur beschleunigung von prozessor-zugriffen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15790063 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15790063 Country of ref document: EP Kind code of ref document: A1 |