DE60114470T2 - Verfahren und vorrichtung zur reduzierung einer ram-grösse unter beibehaltung eines schnellen datenzugriffs - Google Patents

Verfahren und vorrichtung zur reduzierung einer ram-grösse unter beibehaltung eines schnellen datenzugriffs Download PDF

Info

Publication number
DE60114470T2
DE60114470T2 DE60114470T DE60114470T DE60114470T2 DE 60114470 T2 DE60114470 T2 DE 60114470T2 DE 60114470 T DE60114470 T DE 60114470T DE 60114470 T DE60114470 T DE 60114470T DE 60114470 T2 DE60114470 T2 DE 60114470T2
Authority
DE
Germany
Prior art keywords
memory
ram
data
data records
input
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.)
Revoked
Application number
DE60114470T
Other languages
English (en)
Other versions
DE60114470D1 (de
Inventor
Yousong Mei
John Eric LEKVEN
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23937770&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60114470(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of DE60114470D1 publication Critical patent/DE60114470D1/de
Publication of DE60114470T2 publication Critical patent/DE60114470T2/de
Anticipated expiration legal-status Critical
Revoked legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storing Facsimile Image Data (AREA)
  • Image Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)

Description

  • Hintergrund der Erfindung
  • I. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft elektronische Schaltungen. Insbesondere betrifft die vorliegende Erfindung ein neues und verbessertes Verfahren und eine Vorrichtung zur Reduzierung der RAM-Anforderung in einer Vorrichtung unter Beibehaltung einer schnellen Suche und Abfrage von Daten aus einem langsamen nichtflüchtigen Speicher.
  • II. Beschreibung verwandter Techniken
  • Ein elektronischer Speicher irgendeines Typs wird in fast allen modernen elektronischen Vorrichtungen verwendet. Ein elektronischer Speicher kann die Form von Floppy-Disks, Magnetbänder, Festplatten und integrierten Schaltungen (IC – integrated circuits) annehmen. Jede Speicherform hat ihre Vorteile und Nachteile. Floppy-Disks ermöglichen zahlreiche Datenaktualisierungen auf einem tragbaren Medium, haben aber eine begrenzte Kapazität und eine sehr lange Lese- und Schreibzugriffszeit. Sowohl Magnetbänder als auch Festplatten weisen die Fähigkeit für eine enorme Kapazität auf, sind aber nicht tragbar, erfordern große Mengen von Unterstützungs-Hardware und haben langsame Lese- und Schreibzugriffszeiten. Daten, die auf einer Floppy-Disk, einer Festplatte und einem Magnetband gespeichert werden, werden oft vor einem Speichern auf dem Medium zuerst in einer Software auf ein Dateiformat formatiert. Wenn Daten aus dem Speichermedium zurückgewonnen werden, muss die Softwaredateiroutine ablaufen, um die angeforderten Daten zu lokalisieren und abzufragen. Dies verlangsamt weiter den Datenzugriffsprozess, da es eine Software-Ebene zusätzlich zu dem bereits langsamen Hardware-Zugriff hinzufügt.
  • Ein IC-Speicher wird typischerweise verwendet, wenn ein Speicher in eine tragbare Vorrichtung integriert werden muss. Ein Variieren des Typs und der Anzahl von ICs kann die Menge an Speicher skalieren (verkleinern/vergrößern). ICs erfordern minimale Unterstützungs-Hardware, sind sehr klein und können schnelle Lese- und Schreibzugriffszeiten liefern. Mancher IC-Speicher kann einen direkten Zugriff einfach unterstützen ohne die Notwendigkeit für eine Software-Ebene bzw. Layer.
  • Eine Vielzahl von unterschiedlichen Typen von IC-Speicher ist verfügbar, um Lösungen für verschiedene Gestaltungsanforderungen vorzusehen. Jeder Typ von Speicher kann eine Anzahl von Gestaltungsanforderungen erfüllen, aber kein Speichertyp ist in der Lage, eine vollständige Gestaltungslösung zu liefern. Der für eine bestimmte Anwendung gewählte Typ von Speicher hängt ab von der geplanten Verwendung und von Kompromissen zwischen Leistung und Gestaltung.
  • Der verbreitetste Typ von IC-Speicher ist der Festwertspeicher (ROM – read only memory). Wie der Name andeutet, ist der Speicher nur zum Lesen zugänglich. Eine ROM-Vorrichtung kann nicht wiederbeschrieben werden, sobald sie programmiert wurde. Integrierte Softwareanwendungen verwenden ROM, um integrierte Code- und Datenaufzeichnungen zu speichern. Der Prozessor in einer integrierten Softwareanwendung ruft jede Anweisung aus dem ROM ab und führt sie aus. Unterschiedliche Typen von ROM sind abhängig von der Flüchtigkeit der in dem ROM zu programmierenden Information verfügbar. Wenn die in dem ROM zu speichernde Information sich nicht ändern wird und das erwartete Volumen von Vorrichtungen hoch ist, dann wird ein maskenprogrammierbarer ROM verwendet. Dieser Typ von ROM wird vor dem Packen des Chips (die) maskenprogrammiert. Die zu programmierende Information muss sehr stabil sein und darf keiner Revision unterliegen, da Änderungen der programmierten Information eine Maskenänderung erfordern. Die Vorteile einer Verwendung von maskenprogrammiertem ROM betreffen Kosten- und Zeiteinsparungen für ausgereifte Pro dukte mit hohem Volumen. Andere Typen von ROM sind für Produkte verfügbar, die keine Produktionsvolumen oder eine Codestabilität unterstützen, die ausreichend sind/ist, einen maskenprogrammierten ROM zu rechtfertigen.
  • Ein programmierbarer Festwertspeicher (PROM – programmable read only memory) ermöglicht dem Vorrichtungshersteller, den integrierten Code zu programmieren. Dies ermöglicht Revisionen des Codes, aber ermöglicht noch immer keine Modifikation oder Löschung des ROMs, sobald er programmiert wurde. Vorrichtungen, die mit einer veralteten Coderevision programmiert wurden, müssen entweder mit der veralteten Coderevision verwendet werden oder müssen weggeworfen werden.
  • Ein EPROM (erasable programmable read-only memory) sieht die Fähigkeit vor, einen programmierten Teil vollständig zu löschen. Die Löschung eines EPROMs wird erreicht durch Aussetzen des Chips einem ultravioletten Licht (UV) für eine vorgegebene Zeitdauer. Der Chip kann dem UV-Licht durch ein transparentes Fenster auf dem EPROM-Gehäuse ausgesetzt werden. Sobald der EPROM gelöscht wurde, kann er neu programmiert werden. EPROMs werden typischerweise nur bei der Ingenieursentwicklung verwendet, wo die erwartete Anzahl von Coderevisionen hoch ist. Die Einschränkungen an den Gehäusetyp, der das transparente Fenster aufnehmen kann, tragen zu dem sehr viel höheren Preis eines EPROMs im Vergleich zu einem PROM bei. Obwohl der EPROM gelöscht und neu programmiert werden kann, müssen die Modifizierungen des Codes auf einer vollständigen Chip-Basis durchgeführt werden. Sogar Änderungen an einem einzigen Bit in dem Code erfordern eine vollständige Löschung und neue Programmierung. Diese Einschränkung zusammen mit der Erfordernis für ein UV-Licht zur Löschung begrenzen die Aufgabe einer Aktualisierung von EPROMs auf die ursprünglichen Vorrichtungshersteller (OEMs – original equipment manufacturers).
  • Eine Vorrichtung, die eine selektive Inhaltslöschung und Neuprogrammierung erlaubt, ist der EEPROM (electrically erasable programmable read only memory). Ein herkömmlicher EEPROM ermöglicht, dass Daten an Ort und Stelle aktualisiert werden können. Das heißt, ein bestimmter Datenort kann gelöscht und neue Daten an derselben Stelle darüber geschrieben werden. Daten können aus einem EEPROM schnell gelesen werden, aber der Schreibzyklus des herkömmlichen EEPROMs kann um eine Größenordnung länger sein als die Lesezeit. Ein weiterer Nachteil einer Verwendung eines herkömmlichen EEPROMs entsteht aus der inhärenten Struktur der herkömmlichen EEPROM-Zelle. Die Struktur einer herkömmlichen EEPROM-Zelle erfordert mehr Transistoren als in einem standardmäßigen PROM. Die erhöhte Struktur resultiert in einer reduzierten Speicherkapazität und gesteigerten Kosten. Diese Nachteile verbieten eine Verwendung von herkömmlichem EEPROM in den meisten elektronischen Anwendungen für Endverbraucher.
  • Ein Arbeitsspeicher (RAM – random access memory) stellt ein weiteres alternatives Mittel zur Speicherung dar. RAM ermöglicht selektive Datenlesungen und -beschreibungen. Lesen und Schreiben können auf einer Byte-Basis durchgeführt werden. Es ist kein Löschzyklus erforderlich vor dem Schreiben neuer Daten auf ein früher beschriebenes Byte. Ferner sind, anders als beim EEPROM, die Lese- und Schreibzykluszeiten fast identisch. Die Dichte und Kapazität von RAM ist vergleichbar zu ROM. Der größte Nachteil bei der Verwendung von RAM ist die flüchtige Eigenschaft der gespeicherten Daten. In einem RAM gespeicherte Information ist verloren, wenn der RAM abgeschaltet wird. Dies steht in Kontrast zu ROM, bei dem es sich um einen nichtflüchtigen Speicher handelt, wo die Inhalte des Speichers verbleiben, auch nachdem der IC einem Stromzyklus (an/aus) unterzogen wurde. Um die Inhalte von RAM zu behalten, muss auf dem Chip zu jeder Zeit Strom vorhanden sein. Dies erfordert eine Batterieunterstützung zu der normalen Stromversorgung. Wenn die Batterieunterstützung ausfällt, wenn die Stromversorgung ausgeschaltet wird, sind die Inhalte des RAMs verloren. Aus diesem Grund wird RAM nicht für einen integrierten Code verwendet und wird nur für einen dynamischen Speicher verwendet. Ein für einen integrierten Code verwendeter RAM wäre anfällig für einen Verlust von Batterieleistung und Stromversorgungsstörungen. Ferner hätten, wenn ein RAM für einen integrierten Code verwendet wird, Batterie-betriebene Vorrichtungen, wie zellulare Telefone, aufgrund des konstanten Strombedarfs des RAMs eine verminderte Batterielebensdauer. Wenn ein RAM für einen dynamischen Speicher verwendet wird, interessiert es das System nicht, ob die Inhalte nach einem Stromzyklus verloren sind. Dies verringert die Notwendigkeit für eine Batterieunterstützung. Jedoch sind die Kosten eines RAMs höher als die Kosten eines ROMs.
  • Eine weitere Speicheralternative ist ein sektorierter (sectored) EEPROM, der im Allgemeinen als ein Flash-Speicher bezeichnet wird. Ein sektorierter EEPROM ist eine nichtflüchtige Speichervorrichtung, die ein Lesen und Schreiben auf einer Byte-Basis ermöglicht. Im Unterschied zu RAM muss in einem sektorierten EEPROM eine Löschoperation vor dem Neubeschreiben über ein vorher beschriebenes Byte durchgeführt werden. Jedoch kann eine Datenlöschung nicht auf einer Byte-Basis durchgeführt werden. Eine Löschung kann nur auf einer Sektorbasis durchgeführt werden, wobei die Größe des Sektors von der bestimmten gewählten Speichervorrichtung definiert wird. Die Größe eines löschbaren Sektors ist immer größer als ein Byte und kann in dem Bereich von 64 Kbytes liegen. Jedoch ist die Anzahl von Löschzyklen nicht unbegrenzt, sondern von einer maximalen Zykluslebensdauer begrenzt. Eine typische empfohlene Löschzykluslebensdauer für einen sektorierten EEPROM ist 100,000 Zyklen. Somit würde man einen sektorierten EEPROM nicht für Anwendungen verwenden, die mehr als 100,000 Löschzyklen über die erwartete Lebensdauer der Vorrichtung erfordern. Ein sektorierter EEPROM hat Vorteile gegenüber den anderen Typen von wiederbeschreibbarem Speicher in Anwendungen, die weniger als 100,000 Lösch- und Wiederbeschreibzyklen erfordern. Ein sektorierter EEPROM ist bevorzugt gegenüber jedem Typ von RAM für integrierte Codeanwendungen, da ein sektorierter EEPROM nichtflüchtig ist. Ein sektorierter EEPROM ist vorzuziehen über EPROM aufgrund der Fähigkeit des sektorierten EEPROMs, Teile des systeminternen Speichers neu zu beschreiben. Ein sektorierter EEPROM benötigt auch kein UV-Licht für eine Chiplöschung. Ein sektorierter EEPROM ist vorzuziehen gegenüber einem herkömmlichen EEPROM, der vergleichbare Wiederbeschreibbeschränkungen aufweist, aufgrund der geringeren Kosten und der höheren Dichte von sektorierten EEPROM-Vorrichtungen. Sektorierte EEPROMs werden in tragbaren elektronischen Vorrichtungen für die nichtflüchtige Speicherung von Benutzerkonfigurierbaren Daten verwendet.
  • In einem sektorierten EEPROM gespeicherte Daten werden oftmals formatiert, um einem Dateisystem zu entsprechen. Das Dateiformatübereinkommen wird teilweise von dem Löschzyklus auf Sektorgröße bestimmt. Daten werden nicht an einen bestimmten Ort speicheradressiert (memory mapped), da Daten in einem sektorierten EEPROM nicht auf der Stelle wieder geschrieben werden können. Der zusätzliche Software-Overhead führt zu stark erhöhten Speicherzugriffszeiten. Die Zugriffszeit wird in Multitasking-Systemen weiter erhöht. Einem nichtflüchtigen Speicherzugriff in einem Multitasking-Systeme kann durch eine Aufgabe mit höherer Priorität zuvorgekommen (preempted) werden. Eine Präemption erfordert, dass die Aufgabe mit niedrigerer Priorität auf die Beendigung der Aufgabe mit höherer Priorität wartet, bevor sie fortfährt. Wenn der Software-Overhead bei der Berechnung der Zugriffszeit eingeschlossen ist, kann die Zeit, um auf Daten von dem sektorierten EEPROM zuzugreifen, mehr als 1000 bis 100,000 mal langsamer sein als die Zugriffszeit auf in RAM-Vorrichtungen gespeicherten Daten.
  • Lange Zugriffszeiten stellen für den Benutzer Schnittstellenprobleme dar. In einer tragbaren elektronischen Vorrichtung, wie einem drahtlosen Telefon, werden nichtflüchtige Benutzer-konfigurierbare Daten oft in sektorierten EEPROMs gespeichert. Die Benutzerschnittstelle wird verbessert, wenn ein Zugriff auf die Daten des Telefonbuchs als verzögerungsfrei stattzufinden erscheint. Ein Datenabruf aus dem sektorierten EEPROM führt zu einer langsamen Benutzerantwort, wenn ein Benutzer eine Telefonnummer zum Vergleich mit den Einträgen in dem Telefonbuch eingibt. Dies geschieht auf grund des Software-Overheads bei der Bearbeitung des Dateisystems, das initiiert werden muss, um Daten aus dem sektorierten EEPROM abzufragen. Die lange Zugriffszeitverzögerung stellt ein ernsthaftes Problem in Echtzeitsystemen dar, wo ein Datenabruf in einem vordefinierten Zeitfenster stattfinden muss.
  • Eine Lösung für die langsamen Zugriffszeiten von sektorierten EEPROMs oder anderem nichtflüchtigem Speicher besteht darin, alle Daten von den nichtflüchtigen Datenaufzeichnungen zu einem RAM zu übertragen. Die Datenaufzeichnungen können von einem nichtflüchtigen RAM beim Einschalten der Vorrichtung übertragen werden. Dann können alle Daten schnell von dem RAM abgerufen werden. Dies verbessert die Benutzerschnittstelle sehr. Jedoch präsentiert diese Lösung beträchtliche Kosten- und Raumnachteile. Zusätzlicher RAM ist erforderlich, der die Inhalte des nichtflüchtigen Speichers redundant speichert, nur um die Benutzerschnittstelle zu verbessern. Es ist ein Verfahren und eine Vorrichtung zur Reduzierung der Menge an erforderlichem RAM erforderlich, um eine schnelle Benutzerschnittstelle bei einem Zugriff auf Daten beizubehalten, die in einem nichtflüchtigen Speicher gespeichert sind.
  • EP-A-1076301, eine Veröffentlichung gemäß Artikel 54(3)EPC, offenbart ein Verfahren des Ladens von Objekten aus einem primären Speicher, in dem ein berechneter Hash-Index verzeichnet ist. Ein berechneter Hash-Wert wird für ein aufgerufenes Objekt abgeleitet und mit einem Hash-Wert in dem Hash-Index abgeglichen. Als Antwort wird ein Objekt, das dem berechneten Hash-Wert entspricht, in den primären Speicher geladen. Ein derartiges Verfahren ist ungünstig, da es nur ein Erzeugen von Zeigern zur Extraktion von Information vorsieht, wodurch die Zeit dafür erhöht wird.
  • EP-A-0411691 offenbart eine Speicheranordnung mit einer Hash-Schaltung und einem Speicher zum Speichern von Schlüsseln und zugehörigen Daten. Der Speicher wird in zwei Teile geteilt, der erste Teil zum Speichern von Hash-Werten, der zweite zum Speichern der Schlüssel und zugehörigen Da ten. Die Schaltung arbeitet lediglich, um Zeiger zur Auswahl von Schlüsseln vorzusehen.
  • Zusammenfassung der Erfindung
  • Gemäß der vorliegenden Erfindung ist ein Verfahren für einen schnellen Datenzugriff gemäß Anspruch 1 vorgesehen und eine Vorrichtung für einen schnellen Datenzugriff gemäß Anspruch 8 vorgesehen.
  • Die vorliegende Erfindung ist ein neues und verbessertes Verfahren und eine Vorrichtung zur Reduzierung der Menge von erforderlichem RAM, um einen schnellen Datenabruf aus einem langsameren nichtflüchtigen Speicher zu unterstützen. Die Verwendung von RAM statt einem nichtflüchtigen Speicher verringert die Datensuchzeit sehr. Ein RAM-Zugriff ist um vieles schneller als ein nichtflüchtiger Speicherzugriff aufgrund eines Software-Overheads, der jedes Mal durchgeführt werden muss, wenn auf einen nichtflüchtigen Speicher zugegriffen wird.
  • Eine Sammlung von Datenaufzeichnungen kann in dem nichtflüchtigen Speicher gespeichert werden. Zugriff auf die nichtflüchtigen Datenaufzeichnungen ist aufgrund des zu einem nichtflüchtigen Speicherzugriffgehörenden Software-Overheads verlangsamt. Die vorliegende Erfindung kann verwendet werden, um Suchen von in einem nichtflüchtigen Speicher gespeicherten Datenaufzeichnungen stark zu verbessern. Wenn in einem nichtflüchtigen Speicher gespeicherte Datenaufzeichnungen durchsucht werden müssen, sind typischerweise zahlreiche Zugriffe auf den nichtflüchtigen Speicher erforderlich. Die vorliegende Erfindung reduziert die Anzahl der Zugriffe auf die nichtflüchtigen Datenaufzeichnungen durch Speichern einer Reihe von berechneten Bezeichnungswerten (tag values) in vorgegebenen Stellen in dem RAM. Suchen nach in einem nichtflüchtigen Speicher gespeicherten Datenaufzeichnungen werden dann durchgeführt durch Durchsuchen der vorgegebenen RAM-Stellen nach entsprechenden Bezeichnungswerten, dann Durchsuchen der nichtflüchtigen Datenaufzeichnung, ob ein übereinstimmender Bezeichnungswert gefunden ist. Ein Suchen nach übereinstimmenden Bezeichnungswerten in dem RAM reduziert die typische Anzahl von nichtflüchtigen Speicherzugriffen, die erforderlich ist, um nach einer übereinstimmenden Datenaufzeichnung zu suchen, auf eins. Dies steht im Gegensatz zu den zahlreichen nichtflüchtigen Aufzeichnungsabfragen und Vergleichen, die in einer herkömmlichen Suche von nichtflüchtigen Datenaufzeichnungen erforderlich sind.
  • Eine vorgegebene Anzahl von Speicherstellen wird in einem RAM entsprechend der Anzahl von in dem nichtflüchtigen Speicher gespeicherten Datenaufzeichnungen zugeteilt. Jede in dem RAM zugeteilte Speicherstelle muss nicht groß genug sein, um die in dem nichtflüchtigen Speicher gespeicherte Datenaufzeichnung zu speichern. In dem bevorzugten Ausführungsbeispiel werden zwei Bytes RAM für jede Datenaufzeichnungsstelle in dem nichtflüchtigen Speicher zugeteilt. Die nichtflüchtige Datenaufzeichnung kann beliebig lang sein. Eine Bezeichnungs(tag)funktion H(x) wird definiert, um jede nichtflüchtige Aufzeichnung (record) einem entsprechenden Bezeichnungswert zuzuordnen. Die Bezeichnungsfunktion H(x) muss keine 1:1-Abbildung von Datenaufzeichnungen zu Bezeichnungswerten liefern. Eine 1:1-Abbildung von Datenaufzeichnungen zu Bezeichnungswerten minimiert die Anzahl von nichtflüchtigen Speicherzugriffen auf einen nichtflüchtigen Aufzeichnungszugriff pro Datenaufzeichnungssuche.
  • Die vorgegebenen RAM-Stellen weisen Bezeichnungswerte auf, die von den Inhalten der entsprechenden nichtflüchtigen Datenaufzeichnungen bestimmt werden. Wenn eine Suche nach einer bestimmten Datenaufzeichnung erforderlich ist, wird ein Bezeichnungswert für die durchsuchte Aufzeichnung berechnet. Wenn die durchsuchte Aufzeichnung als y bezeichnet wird, wird der Bezeichnungswert H(y) berechnet. Der Bezeichnungswert H(y) wird dann mit allen in den vorgegebenen RAM-Stellen gespeicherten Bezeichnungswerten verglichen. Dieser Schritt wird aufgrund der schnellen Zugriffsfähigkeiten von RAM sehr schnell durchgeführt. Wenn ein übereinstimmender Bezeichnungswert in RAM gefunden wird, wird die entsprechende nichtflüchtige Speicherstelle als die Stelle identifiziert, die der bestimmten RAM-Stelle entspricht. Die Inhalte der nichtflüchtige Datenaufzeichnung werden abgerufen und mit der gesuchten Aufzeichnung verglichen. Wenn die beiden übereinstimmen, ist die Suche komplett. Wenn die abgerufene nichtflüchtige Datenaufzeichnung und die gesuchte Aufzeichnung keine identische Übereinstimmung zeigen, werden die verbleibenden Bezeichnungswerte in dem RAM nach zusätzlichen Übereinstimmungen zu dem Bezeichnungswert durchsucht, der für die gesuchte Aufzeichnung berechnet wurde. Die Suche dauert an, bis eine identische Übereinstimmung gefunden ist oder das Ende der RAM-Bezeichnungswerte erreicht ist.
  • Die vorliegende Erfindung sieht eine starke Verringerung der Zeit vor, die gebraucht wird, um die Datenaufzeichnungen zu durchsuchen, da der Großteil der Suche unter Verwendung der RAM-Bezeichnungstabellen durchgeführt wird. Auf die nichtflüchtigen Speicheraufzeichnungen wird nur zugegriffen, wenn eine Übereinstimmung des Bezeichnungswerts gefunden ist. Für die meisten Suchen ist nur ein Zugriff auf den nichtflüchtigen Speicher erforderlich. Die Zeiteinsparungen ermöglichen eine verbesserte Benutzerschnittestelle, während die Reduzierung des RAMs reduzierte Hardware-Kosten liefert.
  • Kurze Beschreibung der Zeichnungen
  • Die Merkmale, Ziele und Vorteile der vorliegenden Erfindung werden aus der unten angeführten detaillierten Beschreibung in Verbindung mit den Zeichnungen offensichtlicher, in denen gleiche Bezugszeichen Entsprechendes identifizieren und wobei:
  • 1 eine Blockdarstellung einer Speicherimplementierung in Schichten ist;
  • 2A2B Blockdarstellungen sind, die Implementierungen einer RAM-basierten Suche von NV-Speichertabellen zeigen; und
  • 3A3B Ablaufdiagramme der RAM-Implementierung der vorliegenden Erfindung sind.
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele
  • Speicher und Speichervorrichtungen in jeder elektronischen Vorrichtung werden gemäß erwarteten Anforderungen zugeteilt. In einer elektronischen Vorrichtung, wie einem drahtlosen Telefon, gibt es einen Speicher typischerweise in der Form eines nichtflüchtigen Speichers und eines RAMs. Der nichtflüchtige Speicher kann eine Kombination aus PROM und nichtflüchtigem sektorierten EEPROM sein. Ein Typ von nichtflüchtigem sektorierten EEPROM, der in der Industrie bekannt ist, ist ein FLASH-Speicher.
  • Einer der Vorteile einer Verwendung eines FLASH-Speichers ist seine Fähigkeit, elektronisch gelöscht und wiederbeschrieben werden zu können. Einer der Nachteile eines FLASH-Speichers ist, wie oben diskutiert, die Unfähigkeit, Daten an Ort und Stelle zu aktualisieren. Ganze Sektoren müssen zur gleichen Zeit gelöscht werden. Um eine effiziente Verwendung des FLASH-Speicherraums zu maximieren, werden die in FLASH gespeicherten Daten nicht speicheradressiert (memory mapped) zu einer bestimmten Stelle, sondern sie werden unter Verwendung eines Datei-basierten Speichersystems gespeichert. Im Gegensatz dazu können in dem RAM gespeicherte Daten an Ort und Stelle aktualisiert werden und können aufgrunddessen einem Speicherplan zugewiesen werden.
  • 1 zeigt eine Blockdarstellung der Speicherstruktur 20 einer elektronischen Vorrichtung, wie einem drahtlosen Telefon 10. Alle in dem Speicher 20 gespeicherten Daten werden in einer Datenbank 110 verwaltet. Daten, die flüchtig oder vorübergehend sind, werden in einem RAM 120 gespeichert. Daten des RAMs 120 kann ein Speicherplan zugewiesen werden, da Daten des RAMs 120 an der Stelle aktualisiert werden können. Jedoch werden andere Teile von Daten, die variierende Längen oder Positionen haben, unter Verwendung eines Dateisystems 130 verwaltet. Das Dateisystem 130 ist eine Software-Routine, die das Format, die Position und die Größe von Datei-basierten Daten bestimmt. Eine der Vorrichtungen, welche die Datei-basierte Struktur für ihre Daten verwendet, ist ein nichtflüchtiger Speicher 140. Alle in dem nichtflüchtigen Speicher 140 gespeicherten Daten müssen zuerst in dem Dateisystem 130 formatiert werden. Ein Anordnen des nichtflüchtigen Speichers 140 unter dem Dateisystem 130 erzeugt eine weitere Verzögerung beim Zugriff auf Daten, die in dem nichtflüchtigen Speicher 140 gespeichert sind. Die Verzögerung beim Zugriff auf die in dem nichtflüchtigen Speicher 140 gespeicherten Daten kann unerwünschte Verzögerungen erzeugen, wo Daten aus dem nichtflüchtigen Speicher als Teil einer Benutzerschnittstelle abgerufen werden müssen. Ein Beispiel einer Verwendung von allgemein in einem drahtlosen Telefon verfügbaren Daten ist die Suche eines von dem Benutzer erzeugten Telefonbuchs.
  • Drahtlose Telefone haben typischerweise die Fähigkeit, Benutzer-erzeugte Telefonbucheinträge zu speichern. Ein Benutzer kann typischerweise über einhundert Telefonnummern und entsprechende Namen in einem elektronischen Telefonbuch haben, das in dem nichtflüchtigen Speicher gespeichert ist. Die tatsächliche Anzahl von Einträgen wird nur von der Menge von Speicherraum begrenzt, den ein Gestalter dem Telefonbuch zuteilt. Die Telefonnummern und Namen stellen jeweils Datenaufzeichnungen (Daten-Records) dar, die in dem nichtflüchtigen Speicher gespeichert sind. Jede Telefonnummer kann bis zu zweiunddreißig Zeichen lang sein. Diese Länge ermöglicht, dass Vorwahlen, interne Telefondurchwahlen, Zugriffscodes und persönliche Identifikationscodes für bestimmte Nummern automatisch gewählt werden können. Jede Anzahl von Zeichen kann für einen Namen zugeteilt werden, aber zur Einfachheit wird eine Länge von zweiunddreißig Zeichen angenommen. Wenn angenommen wird, dass 512 kombinierte Telefonnummer- und Namenseinträge möglich sind, dann müssen 16 K von nichtflüchtigem Speicher zugeteilt werden. Wenn ein Benutzer eine Telefonnummer oder einen Namen eingibt und wünscht, das Telefonbuch nach der entsprechenden gespeicherten Information zu durchsuchen, müssen die in dem nichtflüchtigem Speicher gespeicherten Datenaufzeichnungen durchsucht werden.
  • In dem nichtflüchtigem Speicher gespeicherte Datenaufzeichnungen können nur durch das Dateisystem 130 gelesen werden. Das Dateisystem 130 ist eine Ebene unter der Datenbank 110. Die mehreren Ebenen auf dem Zugriff zu dem nichtflüchtigen Speicher erzeugen eine große Verzögerung für jeden Zugriff auf in dem nichtflüchtigen Speicher gespeicherte Datenaufzeichnungen. Während einer herkömmlichen Suchroutine wird eine Datenaufzeichnung aus dem nichtflüchtigen Speicher abgerufen und mit den Eingabedaten verglichen. Wenn die beiden übereinstimmen, werden die der Übereinstimmung entsprechenden Datenaufzeichnungen gefunden. Wenn die beiden nicht übereinstimmen, wird die erste abgerufene Datenaufzeichnung verworfen und die nächste Datenaufzeichnung wird aus dem nichtflüchtigen Speicher abgerufen. Ein Abruf von Datenaufzeichnungen aus dem nichtflüchtigen Speicher und ein Vergleich mit den Eingabedaten wird fortgesetzt, bis eine Übereinstimmung gefunden wird oder alle Datenaufzeichnungen in dem nichtflüchtigen Speicher durchsucht sind. Die mehreren Ebenen, die vor einem Abruf von Datenaufzeichnungen aus dem nichtflüchtigen Speicher durchlaufen werden müssen, tragen zu Verzögerungen bei. Wenn Eingabedaten mit einer großen Anzahl von in dem nichtflüchtigen Speicher gespeicherten Inhalten verglichen werden müssen, ist die Verzögerung für eine Benutzerschnittstelle übermäßig lange. Von einem Benutzer, der einen Namen oder eine Telefonnummer eingibt und die gespeicherte Information abzufragen wünscht, die sich auf diesen Eintrag bezieht, kann nicht erwartet werden, für lange Zeitdauern zu warten. Die Benutzerschnittstelle muss für den Benutzer nahtlos und unmittelbar erscheinen.
  • Eine Art, die Geschwindigkeit zu erhöhen, die mit einer Suche der Datenaufzeichnungen in dem nichtflüchtigen Speicher zusammenhängt, liegt darin, die Suche in dem RAM durchzuführen. Zugriffszeiten auf in dem RAM gespeicherte Datenaufzeichnungen sind um Größenordnungen schneller als die Zugriffszeiten, um die entsprechende Datenaufzeichnung aus dem nicht flüchtigen Speicher abzurufen. Der Unterschied bei den Zugriffszeiten ist dem Dateisystem zuschreibbar. RAM erfordert nicht, dass Datenaufzeichnungen formatiert und auf sie unter dem Dateisystem zugegriffen wird. Um die Suche in dem RAM statt in dem nichtflüchtigen Speicher durchzuführen, können alle Datenaufzeichnungen des nichtflüchtigen Speichers zu dem RAM übertragen werden. Dann sind, wenn eine Suche notwendig ist, alle Datenaufzeichnungen in dem RAM verfügbar. Diese Implementierung hat den Nachteil der Verwendung einer großen Menge an RAM nur dafür, in dem nichtflüchtigen Speicher verfügbare Datenaufzeichnungen redundant zu speichern. Die gesteigerten Kosten und die physikalische Größe von zusätzlichem RAM machen diese Lösung weniger als ideal zur Implementierung in einer tragbaren elektronischen Vorrichtung, wie einem drahtlosen Telefon.
  • Eine alternative Implementierung, die Suchzeiten von in dem nichtflüchtigen Speicher gespeicherte Datenaufzeichnungen verbessert, aber nicht zur Folge hat, dass die gesamten Inhalte des nichtflüchtigen Speichers in dem RAM gespeichert werden müssen, wird in 2A dargestellt. In 2A wird der RAM nicht verwendet, um die in dem nichtflüchtigen Speicher gespeicherten Datenaufzeichnungen zu speichern. Stattdessen werden RAM-Hash-Bins (Behältnisse) 220 in dem RAM definiert. Jede der ursprünglichen nichtflüchtigen (NV – nonvolatile) Aufzeichnungen 210 wird in eine Hash-Funktion eingegeben. Ein Zeiger zu der eingegebenen NV-Aufzeichnung 210 wird in dem RAM-Hash-Bin 220 entsprechend der ausgegebenen Hash-Zahl gespeichert. Die Hash-Funktion muss keine 1:1-Abbildung der NV-Aufzeichnung 210 zu dem RAM-Hash-Bin 220 vorsehen. Jedoch gleicht die Wahl einer Hash-Funktion die Anzahl von RAM-Hash-Bin 220 gegenüber einer Zugriffsgeschwindigkeit aus. Je eindeutiger die Hash-Funktion-Abbildung ist, desto größer ist der benötigte Raum für den RAM-Hash-Bin 220. Der Vorteil einer eindeutigen Hash-Funktion-Abbildung ist die reduzierte Anzahl von Zugriffen auf den nichtflüchtigen Speicher bei einer Durchsuchung der NV-Aufzeichnungen 210 nach einer Übereinstimmung.
  • Die in 2A gezeigte Implementierung wird wie folgt durchgeführt. Bei Initialisierung der elektronischen Vorrichtung wird jede der NV-Aufzeichnungen 210 in eine Hash-Funktion eingegeben. Eine Initialisierung kann als jedes Ereignis für eine elektronische Vorrichtung definiert werden. Eine Initialisierung in einem drahtlosen Telefon wird als Einschalten definiert. Ein Beispiel einer Hash-Funktion wird im Folgenden gezeigt.
  • Figure 00150001
  • In der Gleichung stellt xi das i-te Byte in der bestimmten in die Hash-Funktion eingegebene NV-Datenaufzeichnung dar. Das yi stellt die Ausgabe der Hash-Funktion nach der Verarbeitung von i Bytes in der bestimmten NV-Datenaufzeichnung dar. Die Anzahl N stellt die Anzahl von Bytes dar, die jeder NV-Datenaufzeichnungseintrag aufweist. Jede NV-Datenaufzeichnung ist in dem oben beschriebenen Beispiel zweiunddreißig Bytes lang. Für die in dem oben beschriebenen Beispiel beschriebene Datenaufzeichnungslänge ist N = 32. Die Berechnung wird unter Verwendung von ganzzahliger Mathematik für eine tatsächliche Implementierung durchgeführt. Es ist zu sehen, dass die Abbildung von Eingabe zu Ausgabe nicht 1:1 ist, wenn eine ganzzahlige Mathematik verwendet wird.
  • Die Ausgabe der Hash-Funktion fällt in einen vordefinierten RAM-Hash-Bin 220. Ein Zeiger 222 zu der NV-Aufzeichnung, die als die Eingabe in die Hash-Funktion verwendet wurde, wird in dem RAM-Hash-Bin 220 gespeichert. Der Zeiger verwendet weniger Speicherraum zur Speicherung als die Datenaufzeichnung. Typischerweise werden dem Zeiger vier Bytes zugeteilt. Für eine nichtflüchtige Datenaufzeichnung mit 512 Einträgen sind 2 K an Speicher erforderlich, um alle Zeiger zu speichern. Dies liefert eine mögliche Einsparung von RAM-Speicherraum.
  • Jeder Hash-Bin muss die Fähigkeit aufweisen, mehr als einen Zeiger 222 zu speichern. Dies ist erforderlich, da die Hash-Funktion keine 1:1-Abbildung von Eingabe zu Ausgabe liefert. Das Fehlen einer 1:1-Abbildung in der Hash-Funktion erzeugt Probleme mit einer RAM-Speicherzuteilung. Eine große Anzahl von Hash-Bins muss definiert werden, um sicherzustellen, dass jeder Hash-Bin nur einen Zeiger aufweisen wird. Wenn eine geringere Anzahl von Hash-Bins definiert wird, besteht die Wahrscheinlichkeit, dass jeder Hash-Bin eine Anzahl von Zeigern speichern muss.
  • Ein Konstrukteur kann sicherstellen, dass jeder Hash-Bin nur einen Zeiger aufweist, wenn 64 K an Hash-Bins definiert werden. Da nur 2 K an Zeigern erforderlich sind, um alle Datenaufzeichnungen zu identifizieren, ist es offensichtlich, dass die Mehrzahl der Hash-Bins keine Zeiger aufweisen wird. Eine Zuteilung von 64 K Hash-Bins erfordert eindeutig mehr RAM-Raum als ein Speichern aller nichtflüchtigen Datenaufzeichnungen in den RAM erfordert. Somit ist diese Lösung nicht brauchbar. Um die RAM-Anforderung zu reduzieren, teilt eine Gestaltung weniger 64 K Hash-Bins zu. Jedoch erhöht eine Reduzierung der Anzahl von Hash-Bins durchaus die Wahrscheinlichkeit, dass ein Hash-Bin mehr als einen Zeigerwert enthält.
  • Um eine Übereinstimmung einer Datenaufzeichnung zu eingegeben Daten zu finden, werden die eingegebenen Daten zuerst durch die Hash-Funktion geleitet. Die Ausgabe der Hash-Funktion lenkt die Suchroutine dann zu einem bestimmten Hash-Bin. Wenn in dem Hash-Bin kein Zeiger gespeichert ist, dann wird keine Übereinstimmung in den nichtflüchtigen Datenaufzeichnungen gefunden. Dies reduziert die Suchzeit beträchtlich, wenn keine Übereinstimmung zu finden ist. In der herkömmlichen Suche müssten alle Datenaufzeichnungen in dem nichtflüchtigen Speicher abgerufen und mit der Eingabe verglichen werden, bevor festgestellt wird, dass keine Übereinstimmung existiert. Unter Verwendung des Hash-Bin-Verfahrens müssen Zugriffe auf den nichtflüchtigen Speicher nicht vor einer Feststellung stattfinden, dass keine Übereinstimmungen existieren.
  • Wenn in dem Hash-Bin Zeiger gespeichert sind, wird der erste Zeiger aus dem Hash-Bin abgerufen und die NV-Aufzeichnung, auf die der Zeiger ver weist, wird abgerufen. Dann wird ein vollständiger Vergleich zwischen der Eingabe und der abgerufenen Datenaufzeichnung durchgeführt. Wenn die beiden identisch sind, ist eine Übereinstimmung gefunden und die verbleibenden zugehörigen Datenaufzeichnungen können abgerufen werden. Wenn die abgerufene Datenaufzeichnung nicht übereinstimmt, dann muss der nächste Zeiger, wenn vorhanden, in dem Hash-Bin abgerufen werden. Der Vergleich wird durchgeführt und der Abruf von Zeigern aus dem Hash-Bin wiederholt, bis entweder eine Übereinstimmung gefunden ist oder alle nichtflüchtigen Datenaufzeichnungen verglichen wurden, auf die von den Hash-Bin-Zeigern verwiesen wird.
  • In der vorherigen Implementierung gibt es die Möglichkeit von zahlreichen Zugriffen auf den nichtflüchtigen Speicher. Die Anzahl von Zugriffen auf den nichtflüchtigen Speicher hängt ab von der Anzahl von in jedem Hash-Bin gespeicherten Zeigern. Die Anzahl der erforderlichen Hash-Bins steht in Beziehung zu der Hash-Funktion. Eine Erhöhung der Anzahl von eindeutigen Hash-Bins reduziert die Anzahl von nichtflüchtigen Speicherzugriffen. Die Reduzierung der Anzahl von nichtflüchtigen Speicherzugriffen führt zu mehr erforderlichem RAM.
  • Die vorliegende Erfindung verwendet eine Implementierung, die reduzierte Suchzeiten für Datenaufzeichnungen und verringerte RAM-Anforderungen vorsieht. Eine Blockdarstellung der vorliegenden Erfindung wird in 2B gezeigt. In der vorliegenden Erfindung weisen NV-Aufzeichnungen 210 eine Sammlung von Datenaufzeichnungen auf, wie oben beschrieben. Statt einer Definition von Hash-Bins in dem RAM wird jedoch ein Speicherblock in dem RAM für Bezeichnungswerte 230 zugeteilt. Wie in dem obigen Beispiel beschrieben, ist jede in dem nichtflüchtigen Speicher gespeicherte Datenaufzeichnung zweiunddreißig Zeichen lang. Es gibt 512 verfügbare Aufzeichnungen, die in dem nichtflüchtigen Speicher zugeteilt sind. Dies entspricht 16 K an Speicher. Die vorliegende Erfindung teilt zwei Bytes an RAM-Raum für jede Datenaufzeichnung in dem nichtflüchtigen Speicher zu. Um 512 Datenaufzeichnungen aufzunehmen, muss 1 K Bytes an RAM zugeteilt werden.
  • Da die Anzahl von Bytes an RAM, die jeder nichtflüchtigen Speicheraufzeichnung zugeteilt wird, konstant ist, können die RAM-Adressstellen den entsprechenden nichtflüchtigen Datenaufzeichnung zugewiesen werden. Zum Beispiel würde die erste nichtflüchtige Datenaufzeichnung den ersten zwei in dem RAM zugeteilten Bytes entsprechen.
  • Die zwei Bytes an RAM, die jeder nichtflüchtigen Datenaufzeichnung zugeteilt werden, sind nicht ausreichend, um die gesamte Datenaufzeichnung zu speichern. Stattdessen speichern die zwei Bytes einen Bezeichnungswert, welcher der Datenaufzeichnung entspricht. Der Bezeichnungswert wird unter Verwendung derselben oben beschriebenen Hash-Funktion erzeugt. Der Bezeichnungswert, der jeder Datenaufzeichnung in dem nichtflüchtigen Speicher entspricht, wird berechnet und an einer vorgegebenen Stelle in dem RAM gespeichert. Die vorliegende Erfindung minimiert somit die zugeteilte Menge an RAM. Zwei Bytes in dem RAM werden für jede nichtflüchtige Datenaufzeichnung zugeteilt und es gibt 512 Datenaufzeichnungen. Somit muss nur 1 K an RAM zugeteilt werden.
  • Wenn ein Eingabewert mit den Inhalten der Datenaufzeichnungen des nichtflüchtigen Speichers verglichen werden muss, wird der eingegebene Wert zuerst durch die Hash-Funktion geleitet. Dann wird der ausgegebene Hash-Wert mit den in dem RAM gespeicherten Bezeichnungswerten verglichen. Wenn ein übereinstimmender Bezeichnungswert gefunden wird, werden die Inhalte des nichtflüchtigen Speichers entsprechend dieser Bezeichnungswertstelle abgerufen und mit dem ursprünglichen eingegebenen Wert verglichen. Wenn die beiden identisch sind, ist eine Übereinstimmung gefunden. Ansonsten fährt die Suche durch die RAM-Bezeichnungswerte fort, bis entweder ein anderer Bezeichnungswert eine übereinstimmende Datenaufzeichnung ergibt oder das Ende des Bezeichnungswertverzeichnisses erreicht ist. Auf diese Weise wird der Großteil der Suche in dem RAM durchgeführt und das einzige Mal, wann auf den nichtflüchtigen Speicher zugegriffen wird, ist, wenn der berechnete eingegebene Bezeichnungswert mit einem der vorher gespeicherten Bezeichnungswerte übereinstimmt. Wenn die Hash-Funktion keine große Anzahl von doppelten Bezeichnungswerten erzeugt, ist die Anzahl von Zugriffen auf den nichtflüchtigen Speicher minimiert. Unter Verwendung der oben beschriebenen Hash-Funktion wird die Anzahl von Zugriffen auf den nichtflüchtigen Speicher auf eine für 99% der Datensuchen minimiert.
  • 3A zeigt ein Ablaufdiagramm der vorliegenden Erfindung. Die Routine startet in Zustand 301. Die Routine wird jedes Mal initialisiert, wenn die Vorrichtung angeschaltet wird. In einem drahtlosen Telefon startet 301 die Routine, wenn der Benutzer das Telefon anschaltet. Die Routine geht dann zu Zustand 304, wo alle Einträge in den nichtflüchtigen (NV – nonvolatile) Speicherdatenaufzeichnungen gelesen werden. Dann werden in Zustand 308 die Bezeichnungswerte für die NV-Speichereinträge berechnet. Der Bezeichnungswert für jeden NV-Speichereintrag wird unter Verwendung einer Funktion berechnet, wie der oben beschriebenen Hash-Funktion. Jeder Bezeichnungswert erfordert zwei Bytes.
  • Die Routine geht dann zu Zustand 310, wo die berechneten Bezeichnungswerte in vorgegebenen RAM-Stellen gespeichert werden. Jede RAM-Stelle entspricht einem Eintrag in der Sammlung der NV-Speicherdatenaufzeichnungen. Zum Beispiel ist der sechste Eintrag in der RAM-Bezeichnungswerttabelle eine absolute Adresse, die dem sechsten Eintrag in der NV-Speicherdatenaufzeichnung unabhängig davon entspricht, wo in dem NV-Speicher sich der Eintrag tatsächlich befindet.
  • Nachdem die Bezeichnungs- bzw. Tagwerte in dem RAM gespeichert wurden, kann jede Suche der Datenaufzeichnungen hauptsächlich in dem RAM durchgeführt werden. Der Zustand 320 nimmt an, dass ein Eintrag „y" mit den Inhalten der Datenaufzeichnungen verglichen werden muss. In einer elektronischen Vorrichtung, wie einem drahtlosen Telefon, kann der Eintrag „y" einer Telefonnummer entsprechen, die von dem Benutzer eingegeben wird. Die Inhalte der Datenaufzeichnungen entsprechen Namen und Information, die zu einer bestimmten Telefonnummer gehören. Ein Benutzer kann eine Telefonnummer eingeben und wünschen, alle früher gespeicherte Information abzurufen, die diese Nummer betrifft.
  • Der erste Schritt der Suche wird in Zustand 322 erreicht, wo der Bezeichnungswert, der dem Eintrag „y" entspricht, berechnet wird. Bei Zustand 324 wird ein in der Suche verwendeter Indexzähler initialisiert. Das Ablaufdiagramm geht als nächstes weiter zu Punkt 330. Der Punkt 330 ist kein funktionales Element des Ablaufdiagramms und ist nur vorhanden, um die Zustände des Ablaufdiagramms von 3A mit den Zuständen des Ablaufdiagramms von 3B zu verbinden.
  • 3B beginnt mit Punkt 330, der das Ablaufdiagramm von 3A mit dem von 3B verbindet. Von dem Punkt 330 geht die Routine zu Zustand 340 weiter. Bei Zustand 340 ruft die Routine aus dem RAM den vorher gespeicherten Bezeichnungswert ab, welcher der von dem Indexzähler identifizierten Stelle entspricht. Die Routine geht dann zu Zustand 344, wo der dem Eintrag „y" entsprechende Bezeichnungswert mit dem abgerufenen RAM-Bezeichnungswert verglichen wird. Die Abruf- und Vergleichsoperation findet sehr schnell statt, da die Bezeichnungswerte nur zwei Bytes lang sind und sich alle Werte in dem RAM befinden. Wenn die Routine feststellt, dass die beiden Bezeichnungswerte nicht übereinstimmen, geht die Routine zu Zustand 354 weiter, um zu überprüfen, ob es weitere Bezeichnungseinträge in dem RAM gibt, die noch mit dem eingegebenen Bezeichnungswert verglichen werden müssen. Wenn in Zustand 354 die Routine weitere Bezeichnungswerte in dem RAM identifiziert, die nicht verglichen wurden, geht die Routine zu Zustand 358, um den Indexzähler zu inkrementieren. Nachdem der Indexzähler inkrementiert ist, geht die Routine zurück zu Zustand 340, um den nächsten von dem Indexzähler identifizierten Bezeichnungswert abzurufen.
  • Wenn stattdessen die Routine in Zustand 354 feststellt, dass keine weiteren Bezeichnungswerte in dem RAM vorhanden sind, die noch nicht mit dem Bezeichnungswert des Eintrags verglichen wurden, geht die Routine zu Zu stand 362, wo die Routine schließt, dass keine Datenaufzeichnung in dem Speicher existiert, die mit dem eingegebenen Eintrag übereinstimmt. Die Routine ist dann beendet. Wenn keine Bezeichnungswerte mit dem Bezeichnungswert für den eingegebenen Eintrag übereinstimmen, ist notwendigerweise keine Datenaufzeichnung in dem nichtflüchtigen Speicher gespeichert, die mit dem eingegebenen Eintrag übereinstimmt. In der vorliegenden Erfindung gibt es für diese Bedingung keinen Zugriff auf den nichtflüchtigen Speicher. Somit kann die Suche feststellen, dass keine nichtflüchtigen Datenaufzeichnungen übereinstimmen, ohne jemals auf den nichtflüchtigen Speicher zuzugreifen.
  • Wenn bei Zustand 344 die Routine stattdessen feststellt, dass der abgerufene Bezeichnungswert mit dem Bezeichnungswert des Eintrags übereinstimmt, geht die Routine zu Zustand 348. Bei Zustand 348 ruft die Routine aus dem nichtflüchtigen Speicher die Datenaufzeichnung ab, die dem übereinstimmenden Bezeichnungswert entspricht, der vorher aus dem RAM abgerufen wurde. Somit wird auf die in dem nichtflüchtigen Speicher gespeicherten Datenaufzeichnungen nur zugegriffen, wenn der Bezeichnungswert für diese Datenaufzeichnung mit dem Bezeichnungswert eines eingegebenen Eintrags übereinstimmt.
  • Sobald die tatsächliche Datenaufzeichnung aus dem nichtflüchtigen Speicher abgerufen ist, geht die Routine zu Zustand 350, um einen Vergleich der vollständigen Aufzeichnungen durchzuführen. Der Vergleich der vollständigen Aufzeichnungen ist erforderlich, da die Hash-Funktion keine 1:1-Abbildung von der Datenaufzeichnung zu dem Bezeichnungswert vorsieht. Obwohl der eingegebene Eintrag und die nichtflüchtige Datenaufzeichnung dieselben Bezeichnungswerte erzeugen können, müssen die tatsächlichen Datenaufzeichnungen verglichen werden, um eine Übereinstimmung tatsächlich zu bestätigen.
  • Wenn die abgerufene nichtflüchtige Datenaufzeichnung mit dem eingegebenen Eintrag übereinstimmt, wurde eine erfolgreiche Suche durchgeführt. Es gibt keinen weiteren Grund, die Suchroutine fortzusetzen, somit endet die Routine und erwartet einen neuen eingegebenen Eintrag zur Suche.
  • Wenn bei Zustand 350 die Routine feststellt, dass die abgerufene nichtflüchtige Speicherdatenaufzeichnung nicht mit dem eingegebenen Eintrag übereinstimmt, geht die Routine zu Zustand 354 wie oben beschrieben, um zu bestimmen, ob alle RAM-Bezeichnungswerte durchsucht wurden oder nicht.
  • Die Ablaufdiagramme in den 3A und 3B zeigen, wie eine minimale Menge von RAM zur Unterstützung bei einer schnellen Suche von Datenaufzeichnungen, die in einem langsamen nichtflüchtigen Speicher gespeichert sind, benutzt werden kann. Anstatt die gesamten Inhalte der Datenaufzeichnungen in einem nichtflüchtigen Speicher in den RAM zu laden, wird nur ein Satz von Bezeichnungswerten in den RAM geladen. Wenn die Datenaufzeichnungen nach einem eingegebenen Eintrag durchsucht werden müssen, wird zuerst der eingegebene Eintrag verwendet, um den Bezeichnungswert zu erzeugen, unter Verwendung derselben Hash-Funktion, die zuvor verwendet wurde, um in dem RAM gespeicherten Bezeichnungswerte zu erzeugen. Dann wird der Bezeichnungswert des eingegebenen Eintrags nacheinander mit den in dem RAM gespeicherten Bezeichnungswerten verglichen. Wenn ein übereinstimmender Bezeichnungswert gefunden wird, wird die entsprechende Datenaufzeichnung aus dem nichtflüchtigen Speicher abgerufen. Somit wird auf den nichtflüchtigen Speicher nur zugegriffen, wenn es eine hohe Wahrscheinlichkeit zum Abruf einer übereinstimmenden Datenaufzeichnung gibt. Die aus dem nichtflüchtigen Speicher abgerufene Datenaufzeichnung wird dann mit dem eingegebenen Eintrag verglichen. Es gibt eine hohe Wahrscheinlichkeit zur Erzielung einer Übereinstimmung, da die beiden Aufzeichnungen denselben Bezeichnungswert erzeugen. Wenn jedoch die abgerufene Datenaufzeichnung und der eingegebene Eintrag nicht übereinstimmen, wird der Rest der RAM-Bezeichnungswerttabelle nach anderen Bezeichnungswerten durchsucht, die mit dem Bezeichnungswert des eingegebenen Eintrags übereinstimmen. Da die Hash-Funktion fast eine 1:1-Abbildung von eingegebenen Wert zu Bezeichnungswert vorsieht, wird auf den nichtflüchtigen Speicher typischerweise nur einmal pro Suche zugegriffen. Somit wird die Anzahl von Zugriffen auf den nichtflüchtigen Speicher minimiert, während die Menge von erforderlichem RAM zur Implementierung der Erfindung minimiert wird.
  • Die obige Beschreibung der bevorzugten Ausführungsbeispiele ist vorgesehen, um Fachleuten zu ermöglichen, die vorliegende Erfindung herzustellen oder zu verwenden. Die verschiedenen Modifikationen zu diesen Ausführungsbeispielen sind für Fachleute offensichtlich und die hier definierten generischen Prinzipien können auf andere Ausführungsbeispiele ohne die Verwendung der Erfindungsgabe angewendet werden. Somit soll die vorliegende Erfindung nicht auf die hier gezeigten Ausführungsbeispiele, sondern nur durch den Umfang der angehängten Ansprüche beschränkt sein.

Claims (15)

  1. Ein Verfahren zur schnellen Datenerfassung bzw. -zugriff, das die erforderliche Menge an schnellem Speicher minimiert, wobei Folgendes vorgesehen ist: Erzeugen einer Sammlung von individuellen Datenaufzeichnungen (data records); Speichern der Sammlung von Datenaufzeichnungen in einem Speicher; Erzeugen (308) eines Bestimmungs- bzw. Bezeichnungswertes für jede Datenaufzeichnung in der Sammlung; Speichern (310) der Bezeichnungswerte in vorbestimmten Stellen im schnellen Speicher; Empfangen (320) einer Eingangseingabe bzw. Eingangseintrag, die eine Suche bzw. Durchsuchung der gesammelten Datenaufzeichnungen anfordert; Erzeugen (322) eines Eingangseintragsbezeichnungswertes entsprechend dem Eingangseintrag; Vergleichen (344) des Eingangseintragsbezeichnungswertes mit den in dem schnellen Speicher gespeicherten Bezeichnungswerten; und Entnahme (348) aus der Sammlung von Datenaufzeichnungen, der Datenaufzeichnung, die dem Bezeichnungswert entspricht, der mit dem Eingabeeintragsbezeichnungswert übereinstimmt, gekennzeichnet durch Vergleichen (350) der entnommenen Datenaufzeichnung mit dem Eingangseintrag.
  2. Verfahren nach Anspruch 1, wobei die Erzeugung eines Bezeichnungswertes Folgendes aufweist: Eingabe der Datenaufzeichnung in eine "Hash-Funktion" und Zuweisung einer Hash-Funktionsausgangsgröße als der Bezeichnungswert.
  3. Verfahren nach Anspruch 2, wobei die Erzeugung eines Eingangseintragsbezeichnungswertes Folgendes aufweist: Eingeben des Eingangs eintrags zu der Hash-Funktion und Zuweisen der Hash-Funktionsausgangsgröße als den Eingangseintragsbezeichnungswert.
  4. Verfahren nach Anspruch 1, wobei die Sammlung von Datenaufzeichnungen in einem nicht flüchtigen Speicher gespeichert ist.
  5. Verfahren nach Anspruch 4, wobei der nicht flüchtige Speicher ein Flash-Speicher ist.
  6. Verfahren nach Anspruch 1, wobei der schnelle Speicher ein RAM ist.
  7. Verfahren nach Anspruch 1, wobei ferner Folgendes vorgesehen ist: Wiederholung der Datenaufzeichnungsentnahme und Vergleichensschritte für alle Datenaufzeichnungen, die dem Bezeichnungswert entsprechen, der mit dem Eingangseintragsbezeichnungswert übereinstimmt.
  8. Eine Vorrichtung für den schnellen Datenzugriff zur Minimierung der erforderlichen Menge an schnellem Speicher, wobei Folgendes vorgesehen ist: ein erster Speicher (212) zum Speichern einer Vielzahl von Datenaufzeichnungen, die eine Sammlung von Datenaufzeichnungen definieren; ein digitaler Prozessor (212); und ein zweiter Speicher (230) zum Speichern der Bezeichnungswerte, berechnet durch den Digitalprozessor, entsprechend jeder der Datenaufzeichnungen gespeichert in dem ersten Speicher; wobei der digitale Prozessor ansprechend auf eine Anforderung, die Sammlung von Datenaufzeichnungen nach einem Eingangseintrag zu durchsuchen, einen Eingangseintragsbezeichnungswert berechnet und zwar entsprechend dem Eingangseintrag, wobei der Digitalprozessor ferner den Eingabeeingangsbestimmungswert mit jedem der im zweiten Speicher gespeicherten Bezeichnungswerte vergleicht, und die Datenaufzeichnung entnimmt, die dem Be zeichnungswert entspricht, der mit dem Eingangseintragsbezeichnungswert übereinstimmt und zwar dadurch gekennzeichnet, dass der Eingangseintrag mit entnommenen Datenaufzeichnung verglichen wird.
  9. Vorrichtung nach Anspruch 8, wobei der erste Speicher ein nicht flüchtiger Speicher ist.
  10. Vorrichtung nach Anspruch 8, wobei der zweite Speicher ein RAM ist.
  11. Vorrichtung nach Anspruch 8, wobei die Datenaufzeichnungen Einträge in einem elektronischen Telefonbuch umfassen.
  12. Vorrichtung nach Anspruch 8, wobei die Bezeichnungswerte berechnet werden als die Ausgangsgrößen einer Hash-Funktion und zwar unter Verwendung der Datenaufzeichnungen als Eingangsgrößen für die Hash-Funktion.
  13. Vorrichtung nach Anspruch 12, wobei der Eingangseintragsbezeichnungswert unter Verwendung der gleichen Hash-Funktion berechnet wird, die zur Berechnung der Bezeichnungswerte verwendet wurde.
  14. Vorrichtung nach Anspruch 8, wobei im zweiten Speicher zwei Bytes jeder im ersten Speicher gespeicherten Datenaufzeichnung zugewiesen werden.
  15. Vorrichtung nach Anspruch 8 bis 14, wobei die Vorrichtung ein Telefon ist.
DE60114470T 2000-01-19 2001-01-19 Verfahren und vorrichtung zur reduzierung einer ram-grösse unter beibehaltung eines schnellen datenzugriffs Revoked DE60114470T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US487948 1995-06-07
US09/487,948 US6484250B1 (en) 2000-01-19 2000-01-19 Hash technique eliminating pointer storage to reduce RAM size
PCT/US2001/001892 WO2001053950A2 (en) 2000-01-19 2001-01-19 A method and apparatus for reducing ram size while maintaining fast data access

Publications (2)

Publication Number Publication Date
DE60114470D1 DE60114470D1 (de) 2005-12-01
DE60114470T2 true DE60114470T2 (de) 2006-07-20

Family

ID=23937770

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60114470T Revoked DE60114470T2 (de) 2000-01-19 2001-01-19 Verfahren und vorrichtung zur reduzierung einer ram-grösse unter beibehaltung eines schnellen datenzugriffs

Country Status (13)

Country Link
US (1) US6484250B1 (de)
EP (1) EP1381966B1 (de)
JP (1) JP2004505332A (de)
KR (1) KR100749971B1 (de)
CN (1) CN1282108C (de)
AT (1) ATE308079T1 (de)
AU (1) AU774735B2 (de)
CA (1) CA2397940A1 (de)
DE (1) DE60114470T2 (de)
ES (1) ES2254361T3 (de)
HK (1) HK1062947A1 (de)
IL (1) IL150668A0 (de)
WO (1) WO2001053950A2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772177B2 (en) * 2001-06-01 2004-08-03 International Business Machines Corporation System and method for parallelizing file archival and retrieval
KR20040000182A (ko) * 2002-06-24 2004-01-03 주식회사 이투엠솔루션 전화번호 검색장치 및 방법
US6865100B2 (en) * 2002-08-12 2005-03-08 Micron Technology, Inc. 6F2 architecture ROM embedded DRAM
KR20040031926A (ko) * 2002-10-07 2004-04-14 엘지전자 주식회사 이동 통신 단말기의 전화 번호 검색 방법
US7093099B2 (en) * 2002-12-12 2006-08-15 Alacritech, Inc. Native lookup instruction for file-access processor searching a three-level lookup cache for variable-length keys
JP4327585B2 (ja) * 2003-12-25 2009-09-09 株式会社東芝 記憶装置
US7272654B1 (en) * 2004-03-04 2007-09-18 Sandbox Networks, Inc. Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names
KR100623363B1 (ko) * 2004-06-04 2006-09-19 주식회사 팬택 부정 논리곱형 플래시 메모리를 구비한 휴대용 기기에서의멀티미디어 데이터 처리 장치 및 그 방법
CN100389406C (zh) * 2006-01-16 2008-05-21 深圳创维数字技术股份有限公司 在嵌入系统的非易失存储器中进行数据操作的方法
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
CN103023943B (zh) * 2011-09-27 2016-06-22 中国移动通信集团公司 任务处理方法及其装置、终端设备
CN102346783B (zh) * 2011-11-09 2014-09-17 华为技术有限公司 数据检索方法及装置
US11468781B2 (en) 2017-08-11 2022-10-11 The Boeing Company Simulation of an asset including message playback using nested hash tables
US11119999B2 (en) 2019-07-24 2021-09-14 Sap Se Zero-overhead hash filters
US11636047B2 (en) 2021-08-31 2023-04-25 Micron Technology, Inc. Hash operations in memory for data sharing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0411691B1 (de) * 1989-07-31 1997-01-02 Koninklijke Philips Electronics N.V. Speicherarchitektur und Schaltung zum Hashcodieren
JPH09130A (ja) * 1995-06-22 1997-01-07 Noriomi Yoshimizu 水中水上両用めがね
US5754844A (en) * 1995-12-14 1998-05-19 Sun Microsystems, Inc. Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location
US5944781A (en) * 1996-05-30 1999-08-31 Sun Microsystems, Inc. Persistent executable object system and method
US6044079A (en) * 1997-10-03 2000-03-28 International Business Machines Corporation Statistical packet discard
US6324637B1 (en) * 1999-08-13 2001-11-27 Sun Microsystems, Inc. Apparatus and method for loading objects from a primary memory hash index

Also Published As

Publication number Publication date
CA2397940A1 (en) 2001-07-26
EP1381966B1 (de) 2005-10-26
CN1282108C (zh) 2006-10-25
AU3100801A (en) 2001-07-31
EP1381966A2 (de) 2004-01-21
WO2001053950A3 (en) 2003-11-20
ES2254361T3 (es) 2006-06-16
CN1496523A (zh) 2004-05-12
JP2004505332A (ja) 2004-02-19
IL150668A0 (en) 2003-02-12
KR20030036133A (ko) 2003-05-09
KR100749971B1 (ko) 2007-08-16
DE60114470D1 (de) 2005-12-01
HK1062947A1 (en) 2004-12-03
AU774735B2 (en) 2004-07-08
US6484250B1 (en) 2002-11-19
ATE308079T1 (de) 2005-11-15
WO2001053950A2 (en) 2001-07-26

Similar Documents

Publication Publication Date Title
DE60114470T2 (de) Verfahren und vorrichtung zur reduzierung einer ram-grösse unter beibehaltung eines schnellen datenzugriffs
DE69333906T2 (de) Verfahren und System für die Dateienverwaltung mit einem schnell löschbaren, programmierbaren ROM
DE60319563T2 (de) Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
US6032160A (en) Buddy system space allocation management
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE60032531T2 (de) Aufzeichnungsverfahren, Verwaltungsverfahren und Aufzeichnungsgerät
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE60019903T2 (de) Speichersystem
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
US6658437B1 (en) System and method for data space allocation using optimized bit representation
DE60112257T2 (de) Virtuelles Dateisystem für dynamisch erzeugte Webseiten
DE112011105774B4 (de) Verschiebbarer Speicher, der In-Memory-Datenstrukturen unterstützt
DE19537305A1 (de) Halbleiter-Platteneinrichtung und Speicherverwaltungsmethode
DE102006005877A1 (de) Adresszuordnungstabelle und Verfahren zum Erzeugen einer Adresszuordnungstabelle
DE19623853A1 (de) Halbleiter-Speichervorrichtung
DE2515696A1 (de) Anordnung zum selektiven loeschen von teilen beziehungsweise zum ersatz von daten in einem cache-speicher
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102004061597A1 (de) Betriebssystem, das den Lauf von Echtzeitprogrammen ermöglicht, Steuerungsverfahren hierfür sowie Verfahren zum Laden von DLLs
DE102009033961A1 (de) Emulation eines einmal programmierbaren Speichers
EP0917053B1 (de) Programmgesteuerte Einheit und Verfahren zu ihrem Betreiben
DE102014006998A1 (de) Korrektur eines programmierbaren Speichers
EP1564754B1 (de) Verfahren und Vorrichtung zur Verwaltung von Daten in einem nichtflüchtigen Datenspeicher

Legal Events

Date Code Title Description
8331 Complete revocation
8363 Opposition against the patent