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 PDF

Info

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
Application number
DE19681704T
Other languages
English (en)
Other versions
DE19681704T1 (de
Inventor
Robert N. Shingle Springs Hasbun
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19681704T1 publication Critical patent/DE19681704T1/de
Application granted granted Critical
Publication of DE19681704B4 publication Critical patent/DE19681704B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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.

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 oder DE 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 Computersystem 10 veranschaulicht ist, das gemäß einem Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist. Das dargestellte System 10 enthält eine zentrale Verarbeitungseinheit 11, welche die zum Steuern der Operationen des Systems 10 zur Verfügung gestellten verschiedenen Instruktionen ausführt. Die zentrale Verarbeitungseinheit 11 ist typischerweise über einen Prozessorbus mit einer Brückenschaltung 14 verbunden, welche den Zugriff auf einen Eingabe/Ausgabe-Bus 12 steuert, der Informationen zwischen verschiedenen Komponenten des Systems 10 übertragen kann. In 1 ist der Bus 12 vorzugsweise ein Peripheriekomponentenschnittstellen(PCI)-Bus oder ein anderer lokaler Bus, der besonders schnelle Datenübertragungen zur Verfügung stellen kann. Dieser Bus ist in 1 nur zu Veranschaulichungszwecken ausgewählt. Bei einem typischen System 10 sind verschiedene Eingabe/Ausgabeeinrichtungen als Bus-Master- und Bus-Slave-Schaltungen mit dem Bus 12 verbunden. Bei der vorliegenden Darstellung kann beispielsweise der Langzeitspeicher 15 mit dem PCI-Bus 12 als Bus-Slave-Schaltung verbunden sein. Andere Eingabe/Ausgabeeinrichtungen, wie beispielsweise Klang-Schaltungsplatinen, Einzelbildpuffer und dergleichen, können ebenfalls mit dem Bus 12 verbunden sein.
  • Die Brückenschaltung 14 ist außerdem mit einem Speicherbus 16 zum Hauptspeicher 13 verbunden. Der Hauptspeicher 13 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 System 10 mit Strom versorgt wird. Bei der vorliegenden Erfindung ist ein nicht-flüchtiges Speicher-Array 17 gemäß der vorliegenden Erfindung ebenfalls an dem Speicherbus 16 zusammen mit dem Hauptspeicher 13 angeordnet.
  • 2 ist eine Blockdarstellung eines Flash-EEPROM-Speicher-Array 17, welches als Langzeitspeicher in verschiedenen bekannten System verwendet worden ist. Die folgende Beschreibung des Array 17 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öcken 20 unterteilt, von denen jeder unabhängig voneinander gelöscht werden kann. Jeder dieser Blöcke 20 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 Array 17 wird durch die Kommandobenutzerschnittstelle 22 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)

  1. 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.
  2. 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.
  3. 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.
  4. Das Verfahren nach Anspruch 3, wobei in dem Schritt a), iii) ferner eine Seitendeskriptortabelle entsprechend aktualisiert wird.
  5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß iv) Seitentabellen aktualisiert werden, wenn das Programm ausgeführt wird.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
DE19681704T 1995-12-26 1996-12-23 Verfahren zum Ausführen eines Programms aus einem nichtflüchtigen Speicher heraus Expired - Fee Related DE19681704B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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