DE19681704B4 - Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus - Google Patents
Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus Download PDFInfo
- Publication number
- DE19681704B4 DE19681704B4 DE19681704T DE19681704T DE19681704B4 DE 19681704 B4 DE19681704 B4 DE 19681704B4 DE 19681704 T DE19681704 T DE 19681704T DE 19681704 T DE19681704 T DE 19681704T DE 19681704 B4 DE19681704 B4 DE 19681704B4
- Authority
- DE
- Germany
- Prior art keywords
- memory
- program
- volatile memory
- command code
- code section
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- 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
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
Abstract
Verfahren zum Ausführen eines zumindest einen seiner Befehlscodeabschnitte während seiner Ausführung modifizierenden Programms, wobei:
a) die Ausführung des Programms, während es in einem nicht-flüchtigen Speicher gespeichert ist, initiiert wird, wobei das Programm aus dem nicht-flüchtigen Speicher heraus ausgeführt wird;
b) eine Ausnahme erzeugt wird, sofern ein Programmbefehl einen Schreibversuch zu einem Speicherplatz eines Befehlscodeabschnitts des Programms innerhalb des nicht-flüchtigen Speichers bewirkt;
c) in Erwiderung der Ausnahme eine Kopie nur desjenigen Befehlscodeabschnitts des nicht-flüchtigen Speichers, der den betroffenen Speicherplatz einschließt, in einen Hauptspeicher geschrieben wird, und
d) das Programm beginnend mit dem Programmbefehl, der die Ausnahme bewirkt hat, neu gestartet wird, so dass der Schreibversuch bei der wiederholten Ausführung des Programmbefehls in die Kopie des Befehlscodeabschnitts in dem Hauptspeicher vorgenommen wird.
a) die Ausführung des Programms, während es in einem nicht-flüchtigen Speicher gespeichert ist, initiiert wird, wobei das Programm aus dem nicht-flüchtigen Speicher heraus ausgeführt wird;
b) eine Ausnahme erzeugt wird, sofern ein Programmbefehl einen Schreibversuch zu einem Speicherplatz eines Befehlscodeabschnitts des Programms innerhalb des nicht-flüchtigen Speichers bewirkt;
c) in Erwiderung der Ausnahme eine Kopie nur desjenigen Befehlscodeabschnitts des nicht-flüchtigen Speichers, der den betroffenen Speicherplatz einschließt, in einen Hauptspeicher geschrieben wird, und
d) das Programm beginnend mit dem Programmbefehl, der die Ausnahme bewirkt hat, neu gestartet wird, so dass der Schreibversuch bei der wiederholten Ausführung des Programmbefehls in die Kopie des Befehlscodeabschnitts in dem Hauptspeicher vorgenommen wird.
Description
- Diese Erfindung bezieht sich auf ein Verfahren zum Ausführen eines zumindest einen seiner Befehlscodeabschnitte während seiner Ausführung modifizierenden Programms, dessen Ausführung initiiert wird, während es in einem nicht-flüchtigen Speicher, wie beispielsweise einem Flash-EEPROM gespeichert ist.
- In jüngster Zeit wurden elektronisch löschbare, programmierbare Nur-Lese-Flash-Speicher-Bauelemente (Flash-EEPROM-Bauelemente) in Arrays als neue Art von Langzeitspeichern verwendet. Ein Flash-EEPROM-Speicherarray ist aus einer großen Anzahl von Floating-Gate-Metalloxid-Halbleiter-Feldeffekt-Transistorbauelementen aufgebaut, die als Speicherzellen in der üblichen Art und Weise in Zeilen und Spalten zusammen mit Schaltungen angeordnet sind, die auf einzelne Zellen zugreifen und die Speichertransistoren dieser Zellen in unterschiedliche Speicherzustände versetzen. Diese Speichertransistoren können programmiert werden, indem eine Ladung auf dem schwebenden Gate (Floating Gate) gespeichert wird. Diese Ladung bleibt zurück, wenn die Stromversorgung von dem Array (der Matrix) weggenommen wird. Diese Ladung (üblicherweise eine ”Null” oder ein programmierter Zustand) oder ihr Fehlen (eine ”Eins” oder ein gelöschter Zustand) können erfasst werden, wenn das Bauelement gelesen wird.
- Diese Speicherarrays können viele Operationen ausführen, die zuvor üblicherweise von anderen Arten von Speichern in Computersystemen ausgeführt wurden. Beispielsweise können Flash-Speicher verwendet werden, um verschiedene Nur-Lese-Speicher (ROMs) eines Computersystems, wie beispielsweise BIOS-Speicher, zu ersetzen. Die Möglichkeit, Flash-Speicher am Ort im eingebauten Zustand programmieren zu können, bietet wesentliche Vorteile für BIOS-Speicher gegenüber dem herkömmlicheren EPROM-Speicher, welcher aus dem System entfernt werden muss, um für Änderungen der Systemkomponenten neu programmiert zu werden. In jüngerer Zeit wurde der Flash-Speicher verwendet, um ein kleineres, leichteres funktionelles Äquivalent zu einem elektromechanischem Festplattenlaufwerk zur Verfügung zu stellen. Flash-Speicher sind für diese Zwecke nützlich, da sie schneller gelesen werden können und nicht so empfindlich gegenüber physikalischen Zerstörungen sind wie elektromechanische Festplattenlaufwerke. Darüber hinaus erfordern Flash-Speicher keine Auffrischzyklen und verschwenden keine Leistung oder Zeit für solche Zyklen. Flash-Speicher-”Laufwerke” sind besonders nützlich in tragbaren Computern, in denen Platz sehr gesucht und das Gewicht extrem wichtig ist. Ein solches Flash-Speicher-”Laufwerk” ist beispielsweise in der Patentschrift
US 5,437,020 beschrieben. Dieses enthält neben dem eigentlichen Flash-Array einen Controller, der das Lesen, Schreiben und Säubern des Flash-Arrays steuert, und einen zusätzlichen Flash-Speicher, der die zugehörigen Routinen speichert. - Im allgemeinen ist ein Flash-EEPROM-Speicherarray in Blöcken von Speicherzellen unterteilt. Jeder Block ist so verschaltet, dass seine Speicherzellen gleichzeitig gelöscht werden. Ein solches Löschen versetzt sämtliche Speicherzellen in dem Block in den gelöschten Zustand. Anschließend kann eine Speicherzelle individuell programmiert werden, um Daten zu speichern. Da sämtliche Speichertransistoren eines Blocks des Arrays so miteinander verknüpft sind, dass sie zusammen gelöscht werden können, kann eine Zelle in einem programmierten Zustand solange nicht in den gelöschten Zustand umgeschaltet werden, bis der gesamte Block des Array gelöscht wird. Während eines elektromechanischen Festplattenlaufwerkes typischerweise Informationen in einem ersten Bereich der Platte speichert und dann den gleichen Bereich der Platte überschreibt, wenn die Informationen sich ändern, ist dies bei einem Flash-EEPROM-Speicherarray nicht möglich, ohne sämtliche der gültigen Informationen, die in dem Block gemeinsam mit den ungültigen Informationen verbleiben, zu löschen.
- Folglich werden bei bekannten Flash-Speicheranordnungen dann, wenn Informationen sich in einem Dateneintrag ändern, die neuen Informationen in einen neuen Speicherbereich und nicht über die alten Daten geschrieben; und es werden die alten Daten als ungültig markiert. Dann kann, nachdem ein hinreichender Teil eines Blockes als ungültig markiert worden ist, der gesamte Block gelöscht werden, dies aber nur, nachdem sämtliche in dem Block verbliebenen gültigen Informationen in den neuen Speicherbereich geschrieben worden sind.
- Grundsätzlich kann ein Flash-Speicher bei der gleichen Rate wie ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM) gelesen werden und schneller als ein elektromechanisches Festplattenlaufwerk, weil der Zugriff auf eine Matrix von Zeilen und Spalten schneller als der auf eine rotierende Platte ist. Da jedoch die zum Schreiben eines Flash-Bauelements erforderliche Ladungsmenge viel größer ist, verbraucht selbst das Schreiben eines leeren Blockes eines Flash-Speichers eine etwas längere Zeit als das Schreiben in einen DRAM. Darüber hinaus ist die Durchschnittszeit zum Schreiben eines Flash-Speichers wesentlich länger als die zum Schreiben in dem DRAM, weil die geänderten Daten nicht direkt über die ungültigen Daten in einen Block des Flash-Speichers geschrieben werden können, sondern diese in einen neuen Bereich geschrieben werden müssen, die alten Daten ungültig gemacht werden müssen und schließlich der Block mit den ungültigen Daten gelöscht werden muss.
- Obwohl Flash-Speicher für viele Zwecke in Computersystemen verwendet worden sind, werden somit weder Flash-Speicher noch irgendwelche anderen Arten nicht-flüchtiger Speicher verwendet, um den Hauptspeicher zu ergänzen. Die Schreibzeit für diese nicht-flüchtigen Speicher wurde als zu lang angesehen, um die Verwendung eines solchen Speichers als Teil des Hauptspeichers zu ermöglichen.
- Obgleich nicht-flüchtige Speicher verschiedene Probleme auferlegen, gibt es jedoch eine Anzahl von Gründen, nicht-flüchtige Speicherarrays zum Ergänzen des Hauptspeichers zu verwenden. Ein nicht-flüchtiger Speicher am Speicherbus speichert Programme, welche nicht verloren gehen, wenn die Stromversorgung des Systems entfernt wird. Somit sind die Programme für eine Ausführung im Speicher verfügbar, wenn die Stromversorgung angelegt wird, ohne dass sie in den Speicher kopiert werden müssen. Anwendungsprogramme oder andere Prozesse könnten in einem nicht-flüchtigen Speicher-Array gespeichert und direkt aus ihm ausgeführt werden. Dies würde die Übertragung dieser Anwendungsprogramme zwischen dem Langzeitspeicher und dem Hauptspeicher vermeiden und dadurch den größten Teil des Seiten-Auslagerns und des damit verbundenen, durch die Überfüllung des in dem Hauptspeicher verfügbaren begrenzten Raumes verursachten Geschwindigkeitsverlustes vermeiden. Es würde darüber hinaus den Anwendungen gestatten, schneller anzulaufen, wenn sie aufgerufen werden.
- Es erscheint zunächst einfach, einen nicht-flüchtigen Speicher, der ein Anwendungsprogramm speichert, am Speicherbus anzuordnen. Obgleich Schreiboperationen zu solchen Speichern langsamer als bei DRAM sind, sollte man beispielsweise meinen, dass die Prozesse eines Anwendungsprogramms nur gelesen zu werden brauchen, so dass ein Anwendungsprogramm auch aus einem nicht-flüchtigen Speicher ausgeführt werden könnte. Grundsätzlich ist das Ausführen von Programmen aus einem Nur-Lese-Speicher (ROM) heraus im Stand der Technik bekannt (vgl. beispielsweise
EP 0 205 692 A1 oderDE 44 22 453 A1 ). Einige Anwendungsprogramme jedoch errichten und modifizieren Datenstrukturen und Variablen, die innerhalb ihres Befehlscodes angeordnet sind. Andere Programme enthalten einen selbstmodifizierenden Befehlscode, in welchen die Änderungen geschrieben werden müssen, wenn sie auftreten. Wenn man annimmt, dass Daten in den Speicher nicht mit ausreichender Geschwindigkeit geschrieben werden können, um mit Operationen auf dem Speicherbus mitzuhalten, so erscheint es unmöglich, den ein solches Anwendungsprogramm speichernden Speicher an dem Speicherbus derart anzuordnen, dass das Programm aus dem nicht-flüchtigen Speicherarray ausführbar ist. - Es ist folglich eine Aufgabe der vorliegenden Erfindung, eine Einrichtung und ein Verfahren zur Verfügung zu stellen, um ein nicht-flüchtiges Speicher-Array, das am Speicherbus eines Computers angeordnet ist, zu verwenden, um Programme und Prozesse zu speichern, welche aus dem nicht-flüchtigen Speicher heraus ausgeführt werden können.
- Diese Aufgabe wird durch ein Verfahren mit den Merkmalen des Anspruchs 1 gelöst.
- Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
- Diese und andere Aufgaben und Merkmale der Erfindung sind besser zu verstehen unter Bezugnahme auf die detaillierte Beschreibung, welche zusammen mit den Zeichnungen folgt, in welchen in den verschiedenen Ansichten auf gleiche Elemente durch gleiche Bezugszeichen Bezug genommen wird.
-
1 ist eine Blockdarstellung eines Computersystems, das gemäß der vorliegenden Erfindung konstruiert ist. -
2 ist eine Blockdarstellung eines Flash-EEPROM-Speicherarrays, wie es typischerweise im Stand der Technik angeordnet ist. -
3 ist ein Ablaufdiagramm, das ein Verfahren gemäß der Erfindung veranschaulicht. - Es wird jetzt auf
1 Bezug genommen, in der ein Computersystem10 veranschaulicht ist, das gemäß einem Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist. Das dargestellte System10 enthält eine zentrale Verarbeitungseinheit11 , welche die zum Steuern der Operationen des Systems10 zur Verfügung gestellten verschiedenen Instruktionen ausführt. Die zentrale Verarbeitungseinheit11 ist typischerweise über einen Prozessorbus mit einer Brückenschaltung14 verbunden, welche den Zugriff auf einen Eingabe/Ausgabe-Bus12 steuert, der Informationen zwischen verschiedenen Komponenten des Systems10 übertragen kann. In1 ist der Bus12 vorzugsweise ein Peripheriekomponentenschnittstellen(PCI)-Bus oder ein anderer lokaler Bus, der besonders schnelle Datenübertragungen zur Verfügung stellen kann. Dieser Bus ist in1 nur zu Veranschaulichungszwecken ausgewählt. Bei einem typischen System10 sind verschiedene Eingabe/Ausgabeeinrichtungen als Bus-Master- und Bus-Slave-Schaltungen mit dem Bus12 verbunden. Bei der vorliegenden Darstellung kann beispielsweise der Langzeitspeicher15 mit dem PCI-Bus12 als Bus-Slave-Schaltung verbunden sein. Andere Eingabe/Ausgabeeinrichtungen, wie beispielsweise Klang-Schaltungsplatinen, Einzelbildpuffer und dergleichen, können ebenfalls mit dem Bus12 verbunden sein. - Die Brückenschaltung
14 ist außerdem mit einem Speicherbus16 zum Hauptspeicher13 verbunden. Der Hauptspeicher13 ist üblicherweise aus dynamischen Speicherbausteinen mit wahlfreiem Zugriff (DRAM) gebildet, die in einer für den Fachmann im Stand der Technik gut bekannten Weise angeordnet sind, um Informationen während der Zeit zu speichern, in der das System10 mit Strom versorgt wird. Bei der vorliegenden Erfindung ist ein nicht-flüchtiges Speicher-Array17 gemäß der vorliegenden Erfindung ebenfalls an dem Speicherbus16 zusammen mit dem Hauptspeicher13 angeordnet. -
2 ist eine Blockdarstellung eines Flash-EEPROM-Speicher-Array17 , welches als Langzeitspeicher in verschiedenen bekannten System verwendet worden ist. Die folgende Beschreibung des Array17 soll veranschaulichen, weshalb es als unmöglich angesehen wird, ein solches nicht-flüchtiges Speicher-Array am Hauptspeicherbus anzuordnen. - Das Speicher-Array
17 ist in eine Reihe von Blöcken20 unterteilt, von denen jeder unabhängig voneinander gelöscht werden kann. Jeder dieser Blöcke20 enthält Flash-Speicherbauelemente, die in einer logischen Reihen- und Spalten-Anordnung miteinander verbunden sind. Auf ein bestimmtes Bauelement wird zugegriffen, indem seine Zeile und Spalte in der gleichen Weise ausgewählt werden, in der auf Daten in dynamischen Speichern mit wahlfreiem Zugriff (DRAM) zugegriffen wird. Ein Zugriff auf die Blöcke des Array17 wird durch die Kommandobenutzerschnittstelle22 erlangt, welche Kommandos empfängt, sichert, dass das Array in einem geeigneten Modus ist, um die empfangenen Kommandos auszuführen, und die Kommandos ausführt (üblicherweise durch die Verwendung verschiedener Zustandsmaschinen). - Für den Fachmann ist es bekannt, dass in Flash-Speicher-Arrays nicht auf die gleiche Weise geschrieben werden kann, wie in DRAM oder andere Speicher. Wenn in DRAM oder einen magnetischen Speicher geschrieben wird, ändern sich die Zustände sämtlicher Bits, die geschrieben werden, im wesentlichen gleichzeitig mit dem Schreiben. Ein Flash-Speicher muss gelöscht werden, bevor in ihn erneut geschrieben werden kann, so dass geänderte Daten in einen gelöschten Raum in einem Block geschrieben werden müssen. Wenn ein Wort oder ein Bit des Flash-Speichers geschrieben wird, sind die Stromanforderungen zum Laden der Floating-Gates viel höher, so dass die Bauelemente oftmals mehrfach gepulst werden müssen, bis sie den richtigen Ladungszustand erreichen. In ähnlicher Weise braucht es viel mehr Strom, um die Floating-Gates der Flash-Bauelemente zu entladen, weil die Ladung größer ist und weil der Löschprozess, der vor dem Schreiben erforderlich ist, zunächst sämtliche Flash-Bauelemente in dem geladenen Zustand bringt und dann die Bauelemente durch Anlegen einer großen Potentialdifferenz entlädt. Für den Fachmann ist es klar, dass die Zeitdauer, die für jeden der für Flash-EEPROM-Speicher-Arrays verwendeten Schreib- und Lösch-Prozesse benötigt wird, das Schreiben in ein Flash-EEPROM-Speicher-Array im Vergleich zu typischen, für Hauptspeicher verwendeten DRAM-Speichern ziemlich langsam macht. Aus diesem Grund wird der Flash-Speicher als ungeeignet für solche Speicher angesehen, welche in häufige Schreib-Aktualisierungsoperationen involviert sind.
- Wenn auch die Schreib- und Löschzeiten im Vergleich zu den Schreib- und Löschzeiten für DRAMs lang sind, gibt es jedoch eine Reihe von Gründen, nicht-flüchtige Speicher zum Ergänzen des Hauptspeichers zu verwenden. Ein primärer Grund besteht darin, einen größeren Speicherraum im Hauptspeicher verfügbar zu machen. Ein weiterer Grund besteht darin, die Übertragung von speziellen Anwendungsprogrammen zwischen dem Langzeitspeicher und dem Hauptspeicher zu beseitigen und dadurch das zum Behandeln der Überfüllung des im Hauptspeicher verfügbaren begrenzten Raumes erforderliche Seiten-Auslagern und den damit verbundenen Geschwindigkeitsverlust zu mindern. Wenn ein nicht-flüchtiges Speicher-Array an dem Hauptspeicherbus derart angeordnet wird, dass es ebenso schnell wie der DRAM des Hauptspeichers gelesen werden kann, und wenn ein Anwendungsprogramm in das nicht-flüchtige Speicher-Array plaziert wird und aus ihm heraus ausführbar gemacht wird, so braucht das Anwendungsprogramm nicht aus dem Langzeitspeicher aufgerufen und in den Hauptspeicher zum Abarbeiten geladen zu werden. Dies lässt einen größeren Raum im Hauptspeicher für andere Zwecke. Das Seiten-Auslagern des Hauptspeichers, das üblicherweise zum Abarbeiten großer Anwendungen erforderlich ist, kann für solche Anwendungen, die im nicht-flüchtigen Speicher gespeichert sind, im wesentlichen beseitigt werden. Sämtliche Prozesse eines solchen Anwendungsprogramms wären im nicht-flüchtigen Speicher verfüg bar, und der Prozessor müsste diesen Verwaltungsfunktionen keine Zeit zur Verfügung stellen.
- Eine signifikante Anzahl von Problemen führte dazu, dass das Anordnen eines ein Anwendungsprogramm speichernden Flash-Speichers am Speicherbus für die Fachleute als unmöglich erschien. Zunächst erscheinen, weil Schreiboperationen zum Flash-Speicher signifikant langsamer sind als zum DRAM, diese Schreiboperationen und damit verbundene Löschoperationen des Flash-Speichers unter den Betriebsbedingungen von an dem Speicherbus angeordneten Flash-Speichern ohne eine signifikante Verlangsamung der Operationen als unmöglich. Es scheint jedoch, dass ein Anwendungsprogramm aus dem Flash-Speicher ausgeführt werden könnte, da die Prozesse eines Anwendungsprogramms nur gelesen zu werden brauchen. Obwohl es nützlich wäre, in der Lage zu sein, Daten in den Flash-Speicher zu schreiben, könnten solche Operationen auf Operationen begrenzt werden, welche sehr selten auftreten, wie beispielsweise Aktualisierungen des Programms.
- Einige Anwendungsprogramme jedoch errichten und modifizieren kontinuierlich Datenstrukturen und Variablen, die in ihren Code-Segmenten angeordnet sind. Andere Programme verwenden einen selbstmodifizierenden Befehlscode, welcher sich ändert, wenn die Anwendung abgearbeitet wird. Da Daten nicht kontinuierlich mit ausreichender Geschwindigkeit zu dem Flash-Speicher geschrieben werden können, erscheint es unmöglich, einen ein solches Anwendungsprogramm speichernden Flash-Speicher an dem Speicherbus anzuordnen und die Anwendung aus dem Flash-Speicher-Array heraus auszuführen.
- Die vorliegende Erfindung gestattet es Anwendungsprogrammen und Prozessen, welche es erfordern, dass Daten während ihrer Ausführung in ihre Code-Abschnitte geschrieben werden, in ein Flash-EEPROM- oder ein anderes nicht-flüchtiges Speicher-Array, das an dem Speicherbus eines Computersystems angeordnet ist, gespeichert werden und aus dem Flash-Speicher- Array heraus ausgeführt werden. Dies wird bei der vorliegenden Erfindung ausgeführt, indem eine Speichermanagementeinheit (MMU) verwendet wird, die von dem Betriebssystem gesteuert wird, um eine Anzahl spezieller Operationen auszuführen. Typischerweise ist eine Speichermanagementeinheit so konstruiert, dass sie von einem Betriebssystem verwendet werden kann, um die Adressierung eines virtuellen Speichers zu gestatten. Die Adressierung eines virtuellen Speichers gestattet den Zugriff auf eine viel größere Speichermenge, als im Hauptspeicher verfügbar ist, indem virtuelle Adressen immer dann Daten zugewiesen werden, wenn sie gespeichert werden können, und diese virtuellen Adressen in physikalische Adressen übersetzt werden, wenn auf die Daten tatsächlich zugegriffen wird. Die Speichermanagementeinheit steuert die Seitentabellen, auf welche eine Anwendung zugreifen kann, und stellt die Übersetzungen zwischen dem virtuellen und dem physikalischen Speicher unter Verwendung dieser Tabellen zur Verfügung.
- In einem virtuellen Speichersystem wird eine viel größere Anzahl von Speicheradressen zur Verfügung gestellt, als Adressen im Hauptspeicher verfügbar sind. Die Speicheradressen können von dem Speichermanager des Betriebssystems unterschiedlichen Komponenten des Systems zugewiesen werden, um es einem Anwendungsprogramm zu gestatten, die Komponente direkt zu adressieren. Die meisten modernen Betriebssysteme gestatten es nicht, dass diese Adressen Eingabe/Ausgabe-Komponenten des Computersystems zugewiesen werden, weil, sofern sie diese Adressen zuweisen würden, eine Anwendung direkt zu solchen Eingabe/Ausgabe-Einrichtungen unter Verwendung dieser Möglichkeit schreiben könnte und dadurch viele der Schutzmechanismen und den größten Teil der Sicherheit, die das Betriebssystem zur Verfügung stellen soll, vermeiden könnte.
- Jedoch kann das Betriebssystem diese Adressen bestimmten Komponenten zuweisen, bei welchen es kein Problem des Umgehens des Betriebssystems gibt, wie beispielsweise zusätzlichem Speicher am Speicherbus. Wenn folglich ein nicht-flüchtiges Speicher-Array erstmalig in einem System angeordnet wird, wird ein Abschnitt der Speicheradressen dem nicht-flüchtigen Speicher-Array zugewiesen. Wenn ein Programm oder Prozess in das nicht-flüchtige Speicher-Array geschrieben wird, werden die speziellen Adressen des Abschnittes der Speicheradressen, in dem das Programm gespeichert ist, dem Programm zugewiesen. Sobald sie zugewiesen sind, erkennt das Betriebssystem, insbesondere der Speichermanagementabschnitt dieses Systems, dass diese Adressen Adressen des nicht-flüchtigen Speicher-Arrays sind und dass diese Adressen dem Programm zugewiesen sind.
- Wo mit Hilfe einer Art eines Eingabesignals (wie beispielsweise einer Bedienertastatureingabe) ein Versuch unternommen wird, ein in einem nicht-flüchtigen Speicher-Array an dem Speicherbus gespeichertes ausführbares Programm abzuarbeiten, muss das Betriebssystem aus einer Verzeichnisstruktur oder einem Treiber feststellen können, dass dieses Programm in dem Flash-Speicher-Array vorhanden ist, zu welchem Speicheradressen zugewiesen sind. So wird, wenn ein Programm erstmalig von dem Betriebssystem aufgerufen wird, das Betriebssystem typischerweise den Aufruf abfangen (trap), den Pfad zur Anwendung nachschlagen und die dem Programm zugeordneten Adressen in die von der Speichermanagementeinheit gesteuerten Seitentabellen ablegen, so dass die Speichermanagementeinheit die Operationen zu den richtigen Dateien lenken kann. Durch dieses Aktualisieren der Seitentabellen sichern die Speichermanagementprozesse des Betriebssystems, dass auf die richtigen Adressen im Flash- und DRAM-Speicher zugegriffen wird, wenn ein Zugriff versucht wird.
- Der Lader-Abschnitt des Betriebssystems verwendet die Adresseninformationen, um die ausführbare Datei in dem Flash-Speicher-Array aufzufinden. Der Lader liest den Kopfteil des Codes des Programms, um die Adresse zu bestimmen, von welcher das Programm den Start der Ausführung erwartet, um die Stack- Segmentgröße für das Programm zu bestimmen und um die Datensegmentgröße für das Programm zu bestimmen. Der Lader verwendet diese Informationen, um die Kellerspeicher- und Datensegmente in dem DRAM-Speicher zu erzeugen. Er lässt jedoch die Befehlscodesegmentadresse bei den Speicheradressen, die den Programm in dem Flash-Speicher-Array zugewiesen sind. Der Lader veranlasst darüber hinaus die Anwendung, in der Deskriptortabelle für die ausführbaren Anwendungen als Nur-Lesen/Ausführen beschrieben zu werden.
- Da die Anwendung in der Deskriptortabelle für die ausführbare Anwendung als Nur-Lesen/Ausführen beschrieben ist, wird, sofern eine Anwendung bei ihrer Ausführung versucht, in das nicht-flüchtige Speicher-Array zu schreiben, ein Ausnahmezustand erzeugt. Die Ausnahme wird zu einem Ausnahme-Behandler weitergeleitet, der auf eine in dem Flash-Speicher am Speicherbus gespeicherte Anwendung zugeschnitten ist, die ein Schreiben in den Flash-Speicher versucht. Der Ausnahme-Behandler wird von der zentralen Verarbeitungseinheit ausgeführt. Der Ausnahme-Behandler liest aus dem Flash-Speicher denjenigen Abschnitt des Befehlscodes, der von dem versuchten Schreibzugriff adressiert worden ist, und kopiert diesen Abschnitt des Befehlscodes in einen DRAM-Abschnitt des Hauptspeichers. Bei einem Ausführungsbeispiel ist der kopierte Abschnitt die Seite (üblicherweise 4 Kilobits), die den Befehlscode enthält, in welchen das Schreiben, dass das Interrupt verursacht hat, adressiert war.
- Um dies auszuführen, kann es und wird es wohl für den Speichermanager notwendig sein, einen Abschnitt der Daten in dem DRAM-Hauptspeicher zum Langzeitspeicher auszulagern, wobei irgendein Zuweisungsalgorithmus des Betriebssystems verwendet wird, der zum Zuweisen von Daten zwischen dem Hauptspeicher und dem Langzeitspeicher in dem speziellen virtuellen Speichersystem benutzt wird. Der Speichermanager aktualisiert dann die Seitentabellen, um diese Änderungen wiederzugeben.
- Sobald die Seite, die von dem versuchten Schreibzugriff adressiert wurde, in den DRAM geschrieben worden ist, wird die Deskriptortabelle für die Anwendung markiert, um diese Seite als Lesen/Schreiben/Ausführen zu definieren; und das Programm wird bei der Instruktion erneut gestartet, die die Ausnahme verursachte. Von diesem Punkt an kann die Anwendung in den Abschnitt des Befehlscodes schreiben, welcher zuvor Nur-Lesen/Ausführen war, da die Adressen für den Abschnitt der Anwendung in den DRAM-Abschnitt des Hauptspeichers versetzt wurden und die Deskriptortabelle anzeigt, dass in den Abschnitt geschrieben werden kann. Da die Attribute des Abschnitts des Programms derart geändert worden sind, dass er gelesen, beschrieben und ausgeführt werden kann, können die Daten in dem Abschnitt des Programms, unabhängig davon, ob es Datenstrukturen, Variablen oder selbstmodifizierender Befehlscode ist, durch Schreiben in die Seite des Hauptspeichers modifiziert werden.
- Wenn das Programm abgearbeitet wird, wird auf die verschiedenen Dateien in dem nicht-flüchtigen Speicher-Array zugegriffen und die Dateien werden ausgeführt. Wenn nun von dem Programm ein Versuch unternommen wird, auf den Abschnitt im DRAM zuzugreifen, so adressieren die aus den Seitentabellen bestimmten Adressen in korrekter Weise den Zugriff in den DRAM und nicht in den Flash-Speicher. Auf diese Weise kann ein beliebiges Programm oder ein Prozess, das bzw. der in dem an dem Speicherbus angeordneten nicht-flüchtigen Speicher-Array gespeichert ist, abgearbeitet werden, selbst wenn das Programm oder der Prozess einen Bereich enthält, in den während der Operation geschrieben wird.
Claims (9)
- Verfahren zum Ausführen eines zumindest einen seiner Befehlscodeabschnitte während seiner Ausführung modifizierenden Programms, wobei: a) die Ausführung des Programms, während es in einem nicht-flüchtigen Speicher gespeichert ist, initiiert wird, wobei das Programm aus dem nicht-flüchtigen Speicher heraus ausgeführt wird; b) eine Ausnahme erzeugt wird, sofern ein Programmbefehl einen Schreibversuch zu einem Speicherplatz eines Befehlscodeabschnitts des Programms innerhalb des nicht-flüchtigen Speichers bewirkt; c) in Erwiderung der Ausnahme eine Kopie nur desjenigen Befehlscodeabschnitts des nicht-flüchtigen Speichers, der den betroffenen Speicherplatz einschließt, in einen Hauptspeicher geschrieben wird, und d) das Programm beginnend mit dem Programmbefehl, der die Ausnahme bewirkt hat, neu gestartet wird, so dass der Schreibversuch bei der wiederholten Ausführung des Programmbefehls in die Kopie des Befehlscodeabschnitts in dem Hauptspeicher vorgenommen wird.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß im Schritt c) der Befehlscodeabschnitt des Inhalts des nicht-flüchtigen Speichers in den Hauptspeicher kopiert wird und anschließend Seitentabellen aktualisiert werden, damit diese anzeigen, daß der Befehlscodeabschnitt nunmehr im Hauptspeicher lokalisiert ist.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß im Schritt a) vor dem Initieren der Ausführung: i) Speicheradressen dem nicht-flüchtigen Speicher zugewiesen werden; ii) das Programm in den nicht-flüchtigen Speicher geschrieben wird; und iii) die dem Programm zugeordneten Speicheradressen als Nur-Lese/Ausführe-Adressen identifiziert werden.
- Das Verfahren nach Anspruch 3, wobei in dem Schritt a), iii) ferner eine Seitendeskriptortabelle entsprechend aktualisiert wird.
- Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß iv) Seitentabellen aktualisiert werden, wenn das Programm ausgeführt wird.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß im Schritt c) der Befehlscodeabschnitt des Inhalts des nicht-flüchtigen Speichers zunächst gelesen und dann in den Hauptspeicher geschrieben wird und Seitentabellen aktualisiert werden, damit sie den so umgelagerten Befehlscodeabschnitt anzeigen.
- Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß im Schritt c) vor dem Schreiben zu dem Hauptspeicher ein Befehlscodeabschnitt des Hauptspeichers in einen virtuellen Speicher ausgelagert wird, um Raum für den einzuschreibenden Befehlscodeabschnitt zu schaffen.
- Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß als nicht-flüchtiger Speicher ein elektrisch lösch- und programmierbarer Nur-Lese-Flash-Speicher verwendet wird.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß im Schritt c) der in den Hauptspeicher eingeschriebene Befehlscodeabschnitt des Inhalts des nicht-flüchtigen Speichers mit dem Status des Lesens/Schreibens/Ausführens eingeschrieben wird.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/578,474 | 1995-12-26 | ||
US08/578,474 US5829013A (en) | 1995-12-26 | 1995-12-26 | Memory manager to allow non-volatile memory to be used to supplement main memory |
PCT/US1996/020498 WO1997023829A1 (en) | 1995-12-26 | 1996-12-23 | Memory manager allowing flash memory to supplement main memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19681704T1 DE19681704T1 (de) | 1998-11-26 |
DE19681704B4 true DE19681704B4 (de) | 2009-12-31 |
Family
ID=24313039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19681704T Expired - Fee Related DE19681704B4 (de) | 1995-12-26 | 1996-12-23 | Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus |
Country Status (8)
Country | Link |
---|---|
US (2) | US5829013A (de) |
KR (1) | KR100284975B1 (de) |
AU (1) | AU1344697A (de) |
DE (1) | DE19681704B4 (de) |
GB (1) | GB2323690B (de) |
HK (1) | HK1016293A1 (de) |
TW (1) | TW386210B (de) |
WO (1) | WO1997023829A1 (de) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829013A (en) * | 1995-12-26 | 1998-10-27 | Intel Corporation | Memory manager to allow non-volatile memory to be used to supplement main memory |
FR2748134B1 (fr) * | 1996-04-30 | 1998-06-26 | Bull Cp8 | Procede et dispositif permettant a un programme fige de pouvoir evoluer |
US6311290B1 (en) | 1997-02-14 | 2001-10-30 | Intel Corporation | Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
US6182188B1 (en) | 1997-04-06 | 2001-01-30 | Intel Corporation | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
US6088759A (en) * | 1997-04-06 | 2000-07-11 | Intel Corporation | Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
DE19739545C1 (de) * | 1997-09-09 | 1999-01-07 | Siemens Ag | Chipkarte mit Speicher für anwendungsabhängig nachladbare Programme |
JP3812115B2 (ja) * | 1998-01-19 | 2006-08-23 | ブラザー工業株式会社 | 通信システム |
US6489950B1 (en) | 1998-06-26 | 2002-12-03 | Research In Motion Limited | Hand-held electronic device with auxiliary input device |
US6919879B2 (en) | 1998-06-26 | 2005-07-19 | Research In Motion Limited | Hand-held electronic device with a keyboard optimized for use with the thumbs |
US7705828B2 (en) | 1998-06-26 | 2010-04-27 | Research In Motion Limited | Dual-mode mobile communication device |
US6278442B1 (en) | 1998-06-26 | 2001-08-21 | Research In Motion Limited | Hand-held electronic device with a keyboard optimized for use with the thumbs |
JP2001166993A (ja) * | 1999-12-13 | 2001-06-22 | Hitachi Ltd | 記憶制御装置およびキャッシュメモリの制御方法 |
TW495675B (en) * | 2000-09-14 | 2002-07-21 | Acer Ipull Inc | System for updating program executable being running and the method thereof |
US20020048203A1 (en) * | 2000-10-19 | 2002-04-25 | Findling Patrick M. | Extending total write cycles of non-volatile memory for rolling codes |
CA2363244C (en) * | 2000-11-07 | 2006-06-13 | Research In Motion Limited | Multifunctional keyboard for a mobile communication device and method of operating the same |
US7324949B2 (en) * | 2001-03-26 | 2008-01-29 | Medtronic, Inc. | Implantable medical device management system |
US8019789B2 (en) * | 2001-07-03 | 2011-09-13 | Research In Motion Limited | System and method of object-oriented persistence |
CA2392851C (en) * | 2001-07-09 | 2009-05-05 | Research In Motion Limited | Method of operating a handheld device for directional input |
TWI237759B (en) * | 2001-10-04 | 2005-08-11 | Via Tech Inc | Method for data accessing in a computer and the computer thereof |
CA2408331C (en) * | 2001-10-16 | 2008-11-18 | Research In Motion Limited | Handheld mobile communication device with repositionable display and inputs |
US6842169B2 (en) | 2001-10-19 | 2005-01-11 | Research In Motion Limited | Hand-held electronic device with multiple input mode thumbwheel |
US7083342B2 (en) | 2001-12-21 | 2006-08-01 | Griffin Jason T | Keyboard arrangement |
ES2374285T3 (es) * | 2001-12-21 | 2012-02-15 | Research In Motion Limited | Dispositivo electrónico portátil con teclado. |
USD479233S1 (en) | 2002-01-08 | 2003-09-02 | Research In Motion Limited | Handheld electronic device |
US6725324B2 (en) * | 2002-04-23 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for increasing flash ROM programming performance in a multiple processor computer system |
US20050251305A1 (en) * | 2002-06-03 | 2005-11-10 | Junkei Sato | Electronic control apparatus |
TW588282B (en) * | 2002-10-22 | 2004-05-21 | Via Tech Inc | System capable of managing peripheral input/output control device |
US20040123054A1 (en) * | 2002-12-20 | 2004-06-24 | Gould Geoffrey A. | Portable computing device having a non-volatile memory device adapted to detect when a current memory operation is to be suspended and method therefor |
US20040188720A1 (en) * | 2003-03-25 | 2004-09-30 | Chew Kenneth S. | Bit-cell and method for programming |
US7109973B2 (en) | 2003-05-14 | 2006-09-19 | Research In Motion Limited | Mobile device with rotatable keyboard |
US20040242279A1 (en) * | 2003-05-28 | 2004-12-02 | Costanzo Rito Natale | Implementing direct telephone access on a multi-purpose wireless mobile electronic device |
GB2402650B (en) | 2003-12-31 | 2006-05-10 | Research In Motion Ltd | Keyboard arrangement |
US20070192711A1 (en) | 2006-02-13 | 2007-08-16 | Research In Motion Limited | Method and arrangement for providing a primary actions menu on a handheld communication device |
US7986301B2 (en) * | 2004-06-21 | 2011-07-26 | Research In Motion Limited | Handheld wireless communication device |
US20070254704A1 (en) * | 2004-06-21 | 2007-11-01 | Griffin Jason T | Handheld wireless communication device |
US20070259697A1 (en) * | 2004-06-21 | 2007-11-08 | Griffin Jason T | Handheld wireless communication device |
US8064946B2 (en) * | 2004-06-21 | 2011-11-22 | Research In Motion Limited | Handheld wireless communication device |
US8271036B2 (en) | 2004-06-21 | 2012-09-18 | Research In Motion Limited | Handheld wireless communication device |
US20070254701A1 (en) * | 2004-06-21 | 2007-11-01 | Griffin Jason T | Handheld wireless communication device |
US8463315B2 (en) * | 2004-06-21 | 2013-06-11 | Research In Motion Limited | Handheld wireless communication device |
US8219158B2 (en) | 2004-06-21 | 2012-07-10 | Research In Motion Limited | Handheld wireless communication device |
US20070254721A1 (en) * | 2004-06-21 | 2007-11-01 | Griffin Jason T | Handheld wireless communication device |
KR100631782B1 (ko) | 2004-07-27 | 2006-10-11 | 삼성전자주식회사 | 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법및 장치 |
US7439959B2 (en) | 2004-07-30 | 2008-10-21 | Research In Motion Limited | Key arrangement for a keyboard |
US9142369B2 (en) | 2005-03-14 | 2015-09-22 | Qualcomm Incorporated | Stack assembly for implementing keypads on mobile computing devices |
US7525534B2 (en) | 2005-03-14 | 2009-04-28 | Palm, Inc. | Small form-factor keypad for mobile computing devices |
US7389391B2 (en) * | 2005-04-29 | 2008-06-17 | Mediatek, Inc. | Memory disposition methods and systems |
US7930589B2 (en) * | 2005-06-17 | 2011-04-19 | Analog Devices, Inc. | Interrupt-responsive non-volatile memory system and method |
US7275836B2 (en) * | 2005-08-13 | 2007-10-02 | Palm, Inc. | Lighting and usability features for key structures and keypads on computing devices |
US20070035522A1 (en) * | 2005-08-13 | 2007-02-15 | Michael Yurochko | Lighting and usability features for key structures and keypads on computing devices |
US7770118B2 (en) * | 2006-02-13 | 2010-08-03 | Research In Motion Limited | Navigation tool with audible feedback on a handheld communication device having a full alphabetic keyboard |
US8537117B2 (en) | 2006-02-13 | 2013-09-17 | Blackberry Limited | Handheld wireless communication device that selectively generates a menu in response to received commands |
US8989822B2 (en) | 2006-09-08 | 2015-03-24 | Qualcomm Incorporated | Keypad assembly for use on a contoured surface of a mobile computing device |
US8185685B2 (en) * | 2007-12-14 | 2012-05-22 | Hitachi Global Storage Technologies Netherlands B.V. | NAND flash module replacement for DRAM module |
TWI370971B (en) * | 2008-08-20 | 2012-08-21 | Incomm Technologies Co Ltd | Memory card and non-volatile memory controller thereof |
TW201009704A (en) * | 2008-08-20 | 2010-03-01 | Incomm Technologies Co Ltd | Memory card and non-volatile memory controller thereof |
US8219781B2 (en) | 2008-11-06 | 2012-07-10 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
KR100987332B1 (ko) * | 2008-11-07 | 2010-10-18 | 서울대학교산학협력단 | 메모리 구조에 따른 메모리 관리 장치 |
US8584120B2 (en) * | 2009-11-23 | 2013-11-12 | Julian Michael Urbach | Stream-based software application delivery and launching system |
US8350728B2 (en) | 2010-04-23 | 2013-01-08 | Hewlett-Packard Development Company, L.P. | Keyboard with integrated and numeric keypad |
US10114660B2 (en) | 2011-02-22 | 2018-10-30 | Julian Michael Urbach | Software application delivery and launching system |
US9516094B2 (en) * | 2012-05-17 | 2016-12-06 | Microsoft Technology Licensing, Llc | Event-responsive download of portions of streamed applications |
US9256729B2 (en) * | 2013-06-20 | 2016-02-09 | International Business Machines Corporation | Address translation/specification field for hardware accelerator |
KR102205087B1 (ko) * | 2016-06-17 | 2021-01-20 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 공유형 머신 러닝 데이터 구조 |
CN108021392A (zh) * | 2016-11-01 | 2018-05-11 | 中芯国际集成电路制造(上海)有限公司 | 处理器及其操作执行方法 |
WO2020214757A1 (en) | 2019-04-17 | 2020-10-22 | John Rankin | Virtual memory pool within a network which is accessible from multiple platforms |
US11372773B2 (en) * | 2019-05-28 | 2022-06-28 | Rankin Labs, Llc | Supporting a virtual memory area at a remote computing machine |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0205692A1 (de) * | 1985-06-18 | 1986-12-30 | International Business Machines Corporation | Mikroprozessor |
DE4216871A1 (de) * | 1991-05-21 | 1993-01-21 | Digital Equipment Corp | Ausfuehrungsordnen zum sicherstellen der serienherstellbarkeit verteilter transaktionen |
DE4422453A1 (de) * | 1993-06-30 | 1995-01-12 | Intel Corp | Verfahren und Schaltung zum selektiven Sperren von Zellenblöcken in einer Speichermatrix |
US5437020A (en) * | 1992-10-03 | 1995-07-25 | Intel Corporation | Method and circuitry for detecting lost sectors of data in a solid state memory disk |
CA2147529A1 (en) * | 1994-06-22 | 1995-12-23 | James Michael Magee | Memory and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU575182B2 (en) | 1984-06-28 | 1988-07-21 | Wang Laboratories, Inc. | Self extending memory file |
US4758944A (en) | 1984-08-24 | 1988-07-19 | Texas Instruments Incorporated | Method for managing virtual memory to separate active and stable memory blocks |
DE69034191T2 (de) | 1989-04-13 | 2005-11-24 | Sandisk Corp., Sunnyvale | EEPROM-System mit aus mehreren Chips bestehender Blocklöschung |
JPH0476681A (ja) * | 1990-07-13 | 1992-03-11 | Mitsubishi Electric Corp | マイクロコンピュータ |
GB2251324B (en) | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
JPH06214670A (ja) | 1991-04-29 | 1994-08-05 | Intel Corp | コンピュータ装置およびそれを初期化する方法 |
IT1254937B (it) | 1991-05-06 | 1995-10-11 | Aggiornamento dinamico di memoria non volatile in un sistema informatico | |
DE4215063C2 (de) | 1991-05-10 | 1999-11-25 | Intel Corp | Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher |
US5680570A (en) | 1991-06-12 | 1997-10-21 | Quantum Corporation | Memory system with dynamically allocatable non-volatile storage capability |
GB2256735B (en) | 1991-06-12 | 1995-06-21 | Intel Corp | Non-volatile disk cache |
US5245572A (en) | 1991-07-30 | 1993-09-14 | Intel Corporation | Floating gate nonvolatile memory with reading while writing capability |
US5596738A (en) * | 1992-01-31 | 1997-01-21 | Teac Corporation | Peripheral device control system using changeable firmware in a single flash memory |
US5535369A (en) | 1992-10-30 | 1996-07-09 | Intel Corporation | Method for allocating memory in a solid state memory disk |
US5581723A (en) | 1993-02-19 | 1996-12-03 | Intel Corporation | Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5519843A (en) | 1993-03-15 | 1996-05-21 | M-Systems | Flash memory system providing both BIOS and user storage capability |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5522076A (en) | 1993-05-13 | 1996-05-28 | Kabushiki Kaisha Toshiba | Computer system having BIOS (basic input/output system)-ROM (Read Only Memory) writing function |
JP3310060B2 (ja) * | 1993-09-13 | 2002-07-29 | 株式会社東芝 | 記憶装置および同装置の制御プログラム書換え方法 |
US5715423A (en) | 1994-04-18 | 1998-02-03 | Intel Corporation | Memory device with an internal data transfer circuit |
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US5533190A (en) | 1994-12-21 | 1996-07-02 | At&T Global Information Solutions Company | Method for maintaining parity-data consistency in a disk array |
US5563828A (en) | 1994-12-27 | 1996-10-08 | Intel Corporation | Method and apparatus for searching for data in multi-bit flash EEPROM memory arrays |
US5671388A (en) | 1995-05-03 | 1997-09-23 | Intel Corporation | Method and apparatus for performing write operations in multi-level cell storage device |
JPH08328762A (ja) | 1995-06-06 | 1996-12-13 | Mitsubishi Electric Corp | 半導体ディスク装置及びそのメモリ管理方法 |
US5673417A (en) * | 1995-07-20 | 1997-09-30 | Inventec Corporation | Electronic organizer with a flash memory and associated data archiving |
US5802549A (en) * | 1995-12-14 | 1998-09-01 | International Business Machines Corporation | Method and apparatus for patching pages of ROM |
US5829013A (en) * | 1995-12-26 | 1998-10-27 | Intel Corporation | Memory manager to allow non-volatile memory to be used to supplement main memory |
US5701492A (en) | 1996-03-29 | 1997-12-23 | Canon Kabushiki Kaisha | Fail-safe flashing of EPROM |
US5937434A (en) * | 1997-02-14 | 1999-08-10 | Intel Corporation | Method of managing a symmetrically blocked nonvolatile memory having a bifurcated storage architecture |
-
1995
- 1995-12-26 US US08/578,474 patent/US5829013A/en not_active Expired - Fee Related
-
1996
- 1996-12-23 AU AU13446/97A patent/AU1344697A/en not_active Abandoned
- 1996-12-23 DE DE19681704T patent/DE19681704B4/de not_active Expired - Fee Related
- 1996-12-23 WO PCT/US1996/020498 patent/WO1997023829A1/en active IP Right Grant
- 1996-12-23 KR KR1019980704963A patent/KR100284975B1/ko not_active IP Right Cessation
- 1996-12-23 GB GB9812269A patent/GB2323690B/en not_active Expired - Fee Related
-
1997
- 1997-01-25 TW TW086100830A patent/TW386210B/zh not_active IP Right Cessation
-
1998
- 1998-02-23 US US09/028,159 patent/US6243789B1/en not_active Expired - Lifetime
-
1999
- 1999-03-23 HK HK99101194A patent/HK1016293A1/xx not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0205692A1 (de) * | 1985-06-18 | 1986-12-30 | International Business Machines Corporation | Mikroprozessor |
DE4216871A1 (de) * | 1991-05-21 | 1993-01-21 | Digital Equipment Corp | Ausfuehrungsordnen zum sicherstellen der serienherstellbarkeit verteilter transaktionen |
US5437020A (en) * | 1992-10-03 | 1995-07-25 | Intel Corporation | Method and circuitry for detecting lost sectors of data in a solid state memory disk |
DE4422453A1 (de) * | 1993-06-30 | 1995-01-12 | Intel Corp | Verfahren und Schaltung zum selektiven Sperren von Zellenblöcken in einer Speichermatrix |
CA2147529A1 (en) * | 1994-06-22 | 1995-12-23 | James Michael Magee | Memory and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
Non-Patent Citations (1)
Title |
---|
K.-H. Thies, 80486 Systemsofware-Entwicklung, Carl Hanser Verlag München Wien, 1992, S. 87-93 * |
Also Published As
Publication number | Publication date |
---|---|
US5829013A (en) | 1998-10-27 |
GB2323690A (en) | 1998-09-30 |
US6243789B1 (en) | 2001-06-05 |
DE19681704T1 (de) | 1998-11-26 |
HK1016293A1 (en) | 1999-10-29 |
GB2323690B (en) | 2000-05-10 |
WO1997023829A1 (en) | 1997-07-03 |
KR19990076836A (ko) | 1999-10-25 |
TW386210B (en) | 2000-04-01 |
AU1344697A (en) | 1997-07-17 |
GB9812269D0 (en) | 1998-08-05 |
KR100284975B1 (ko) | 2001-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19681704B4 (de) | Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus | |
DE69635663T2 (de) | vERFAHREN FÜR DAS EINSPEICHERN VON DATEN IN EINEM FLASH-EEPROM-HAUPTSPEICHER IN EINEM RECHNERSYSTEM | |
DE69433320T2 (de) | Ferngesteuerter rreprogrammierbarer programmspeicher fuer einen mikrokontroller | |
DE19882933B4 (de) | Flash-Speicher-Unterteilung für Lese-während-Schreiboperationen | |
DE4215063C2 (de) | Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher | |
DE69924916T2 (de) | Speicherschaltung | |
DE60317347T2 (de) | Speicherschaltung mit nichtflüchtigem ram und ram | |
DE69630624T2 (de) | EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern | |
DE60030876T2 (de) | Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität | |
DE69815258T2 (de) | Elektrisch programmier- und löschbarer nichtflüchtiger Speicher mit einem lese- und/oder schreibgeschützen Bereich einschliesslich zugehöriger elektronischer Schaltung | |
DE3318123A1 (de) | Schaltungsanordnung mit einem datenspeicher und einer ansteuereinheit zum auslesen, schreiben und loeschen des speichers | |
DE2515696A1 (de) | Anordnung zum selektiven loeschen von teilen beziehungsweise zum ersatz von daten in einem cache-speicher | |
DE1114049B (de) | ||
DE10115729B4 (de) | Vielseitiges Boot-Verfahren für eine Anwendungs-Software eines Mikrocontrollers | |
DE102005035084A1 (de) | Speicherbauelement und Programmierverfahren | |
DE112014000311T5 (de) | Absichern der Inhalte einer Speichereinheit | |
DE102010037064A1 (de) | Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung | |
DE69432512T2 (de) | Für fensterumgebungsoperationen entworfenes rasterpuffersystem | |
DE102016109892B4 (de) | Datenverarbeitungsvorrichtung und Verfahren zum Einsparen von Leistung in einer Datenverarbeitungsvorrichtung | |
EP1314135A1 (de) | Verfahren zur virtuellen vergrösserung des stacks eines tragbaren datenträgers | |
DE102006009214B4 (de) | Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers | |
DE69829649T2 (de) | Wiederprogrammierbare speichereinrichtung mit variablem seitenformat | |
DE602004012923T2 (de) | Wortweise programmierbarer Flash-Speicher | |
DE4238099A1 (de) | ||
DE102004018473A1 (de) | Monolithische Lesen-beim-Schreiben-Flashspeicher-Vorrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8607 | Notification of search results after publication | ||
8364 | No opposition during term of opposition | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20130702 |