KR20030036133A - 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치 - Google Patents

고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치 Download PDF

Info

Publication number
KR20030036133A
KR20030036133A KR1020027009226A KR20027009226A KR20030036133A KR 20030036133 A KR20030036133 A KR 20030036133A KR 1020027009226 A KR1020027009226 A KR 1020027009226A KR 20027009226 A KR20027009226 A KR 20027009226A KR 20030036133 A KR20030036133 A KR 20030036133A
Authority
KR
South Korea
Prior art keywords
tag value
memory
ram
data record
data
Prior art date
Application number
KR1020027009226A
Other languages
English (en)
Other versions
KR100749971B1 (ko
Inventor
유송 메이
에릭 존 렉벤
Original Assignee
콸콤 인코포레이티드
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=KR20030036133(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20030036133A publication Critical patent/KR20030036133A/ko
Application granted granted Critical
Publication of KR100749971B1 publication Critical patent/KR100749971B1/ko

Links

Classifications

    • 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
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • 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)
  • Mobile Radio Communication Systems (AREA)
  • Image Processing (AREA)
  • Storing Facsimile Image Data (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Dram (AREA)

Abstract

본 발명은 고속 데이터 액세스를 유지하면서 RAM 요구량을 감소시키는 방법 및 장치에 관한 것이다. 데이터 레코드는 회로가 전력 다운될 때도 데이터 레코드의 내용을 유지하기 위해 비휘발성 메모리에 저장된다. 본 발명에서 데이터 레코드의 비휘발성 RAM 콜렉션의 각 레코드는 태그 값을 출력하는 함수 H(x)에 입력된다. 계산된 태그 값은 RAM의 미리 결정된 메모리 위치에 저장된다. 각 계산된 태그는 비휘발성 RAM에 저장된 레코드보다 길이가 더 짧다. 따라서 RAM의 데이터 레코드의 전체 콜렉션을 저장하는데 요구되는 것보다 각 데이터 레코드에 대한 하나의 태그 값을 저장하는데 요구되는 RAM이 더 적다. H(y)의 값은 y에 대응하는 데이터 레코드 엔트리가 필요할 때 계산된다. 그러면 H(y)의 값은 태그 값 테이블의 모든 값과 비교된다. 매치가 발견되면, 비휘발성 RAM의 위치로부터 대응하는 레코드가 검색되고 y와 비교된다. 상기 값이 매칭하지 않으면 태그 값 테이블은 또 다른 위치 매칭 H(y)에 대해 탐색된다. 그 결과는 최소량의 RAM만을 요구하는 비휘발성 RAM의 내용과 매우 신속하게 비교된다.

Description

고속 데이터 액세스를 유지하면서 RAM 크기를 감소시키는 방법 및 장치{A METHOD AND APPARATUS FOR REDUCING RAM SIZE WHILE MAINTAINING FAST DATA ACCESS}
소정 유형의 전자 메모리는 거의 모든 현대 전자 장치에 사용된다. 전자 메모리는 플로피 디스크, 자기 테이프, 하드 디스크 및 집적 회로(IC)의 형태를 가질 수 있다. 각 형태의 메모리는 장점 및 단점을 갖는다. 플로피 디스크는 휴대용 매체상에 여러번 데이터 업데이트를 허용하지만 용량이 제한되며 극도로 긴 판독 및 기록 액세스 시간을 갖는다. 자기 테이프 및 하드 디스크 둘다는 거대한 용량을 가질 수 있지만 휴대할 수 없고, 많은 양의 지원 하드웨어를 필요로 하며 느린 판독 및 기록 액세스 시간을 갖는다. 플로피 디스크, 하드 디스크 및 자기 테이프에 저장된 데이터는 종종 매체상에 저장하기 전에 파일 포맷으로 소프트웨어에서 먼저 포맷된다. 데이터가 저장 매체로부터 복구되면 소프트웨어 파일 루틴은 요청된 데이터를 찾아서 추출해야한다. 이것은 이미 느린 하드웨어 액세스의 상위에소프트웨어 계층을 부가하기 때문에 데이터 액세스 프로세스를 더욱 느리게한다.
IC 메모리는 일반적으로 메모리가 휴대용 장치로 집적될 필요가 있는 경우에 사용된다. IC의 유형 및 수를 다양하게 함으로써 메모리량을 스케일링할 수 있다. 최소 지원 하드웨어를 필요로 하는 IC는 극도로 작으며, 판독 및 기록 액세스 시간을 고속으로 제공할 수 있다. 소정 IC 메모리는 소프트웨어 계층이 필요없이 직접 액세스를 용이하게 지원할 수 있다.
IC 메모리의 수많은 다른 유형이 여러 설계 요건에 대한 해결책을 제공하도록 이용될 수 있다. 각 유형의 메모리는 다수의 설계 요건을 만족시킬 수 있지만, 하나의 메모리만으로는 완전한 설계 해결책을 제공할 수 없다. 특정 애플리케이션에 대해 선택된 메모리 유형은 설계 협정의 계획된 용도 및 성능에 따를 것이다.
IC 메모리의 가장 일반적인 유형은 판독 전용 메모리(ROM)이다. 그 명칭이 암시하는 바와 같이, 이 메모리는 판독 전용으로만 액세스할 수 있다. ROM 장치는 일단 프로그램되면 다시 기록될 수 없다. 내장된 소프트웨어 응용은 구체적인 코드 및 데이터 레코드를 저장하는데 ROM을 이용한다. 내장된 소프트웨어 응용의 프로세서는 ROM으로부터 각 명령을 검색하고 그 명령을 실행한다. 다른 유형의 ROM은 ROM내에 프로그램되는 정보의 휘발성에 의존하여 이용될 수 있다. ROM에 저장되는 정보가 변경되지 않을 것으로 예상되고 예측된 장치 용적이 높으면, 마스크 프로그램가능 ROM이 이용된다. 이러한 유형의 ROM은 다이의 패키징이전에 마스크 프로그래밍된다. 프로그램되는 정보는 고도로 안정적이어야 하며 정정에 종속하지 않는데 이것은 프로그램된 정보의 변경이 마스크 변경을 필요로 하기 때문이다.마스크 프로그램된 ROM을 이용하는 이점은 고 부피의 완성된 제품에 대해 비용 및 시간을 절약해주는 것과 관련이 있다. 다른 유형의 ROM은 마스크 프로그램된 ROM을 정당하게 하는데 충분한 제품 부피 또는 코드 안정성을 유지시키지 않는 제품에 이용가능하다.
프로그램가능한 판독 전용 메모리(PROM)는 장치 제조자가 내장된 코드를 프로그램하도록 한다. 이것은 코드를 정정하도록 허용하지만 일단 프로그램된 ROM의 변조나 삭제는 허용하지 않는다. 구식 코드 버전으로 프로그램된 장치는 구식 코드 정정용으로 이용되거나 폐기될 필요가 있다.
삭제할 수 있는 프로그램가능 판독 전용 메모리(EPROM)는 완전하게 프로그램된 파트를 삭제할 수 있는 능력을 제공한다. EPROM의 삭제는 미리 결정된 시간 주기동안 다이를 자외선(UV)에 노출시킴으로써 달성된다. 다이는 EPROM 패키지상의 투명 윈도를 통해 UV 광에 노출될 수 있다. 일단 삭제되면, EPROM은 재프로그래밍될 수 있다. EPROM은 일반적으로 예측된 코드 정정 수가 높을 경우의 공학 개발용으로만 사용된다. 투명 윈도를 수용할 수 있는 패키지 유형이 제한되기 때문에 PROM과 비교할 때 EPROM의 가격이 훨씬 비싸다. EPROM이 삭제될 수 있고 재프로그램될 수 있다 하더라도, 코드에 대한 수정이 완전한 칩 기반상에 이루어져야 한다. 코드내의 단일 비트에 대한 변경도 완전한 삭제 및 재프로그래밍을 필요로 한다. 이러한 제한은, 삭제를 위한 UV 광의 필요성과 함께 원래의 장비 제조자(OEM)에게 EPROM을 업데이트하는 태스크를 제한시킨다.
선택적인 내용 삭제 및 재프로그래밍을 허용하는 장치는 전기적으로 삭제할수 있는 프로그램가능 판독 전용 메모리(EEPROM)이다. 종래의 EEPROM은 데이터가 그 장소에서 업데이트되도록 허용한다. 즉, 특정 데이터 위치는 삭제될 수 있으며 동일한 위치에서 새로운 데이터가 오버라이트(overwrite)된다. 데이터는 EEPROM으로부터 신속하게 판독될 수 있지만 종래의 EEPROM의 기록 사이클은 판독 시간보다 더 길게 정렬될 수 있다. 종래의 EEPROM을 이용하는 또 다른 단점은 종래의 EEPROM 셀의 고유 구조로부터 발생한다. 종래의 EEPROM의 구조는 표준 PROM보다 더 많은 트랜지스터를 필요로 한다. 증가된 구조는 메모리 용량 감소 및 비용 증가를 발생시킨다. 이러한 단점때문에 종래의 EEPROM은 대부분의 소비자 전자 응용에서 이용되지 않는다.
랜덤 액세스 메모리(RAM)는 또다른 저장용 선택 수단을 나타낸다. RAM은 선택적인 데이터 판독 및 기록을 허용한다. 판독 및 기록은 바이트 기반에 수행될 수 있다. 새로운 데이터를 이전에 기록된 바이트로 기록하기 전에 삭제 사이클은 요구되지 않는다. 게다가, EEPROM과 달리, RAM의 판독 및 기록 사이클 시간은 거의 동일하다. RAM의 밀도 및 용량은 ROM과 비교될 수 있다. RAM을 이용하는데 있어서 두드러지는 단점은 저장된 데이터의 휘발 특성이다. RAM에 저장된 정보는 RAM이 전력 다운될때마다 소실된다. 이것은 비휘발성 메모리이며, IC가 전력 사이클링된후에도 메모리의 내용이 남아있는 ROM과 반대된다. RAM의 내용을 유지하기 위해, 전력은 항상 칩상에 유지되어야 한다. 이것은 일반 전력 공급기에 백업되는 배터리를 필요로 한다. 전력 공급기가 전압을 받지 못할 때 배터리 백업이 실패하면, RAM의 내용은 소실될 것이다. 이러한 이유로 RAM은 내장된 코드에 사용되지않으며 유동 메모리에만 사용된다. 내장된 코드에 사용되는 RAM은 배터리 전력 손실 및 전력 공급기 고장에 민감할 것이다. 게다가, RAM이 내장된 코드에 사용되면, 셀룰라 전화와 같은 장치를 동작시키는 배터리는 RAM의 지속적인 전력 요건에 따라 배터리 수명이 감소될 것이다. RAM이 유동 메모리에 사용될 때 시스템은 전력 사이클후에 내용이 소실되는지에 개의치 않는다. 이것은 배터리 백업의 필요성을 완화시킨다. 그러나, RAM의 비용은 ROM의 비용보다 더 비싸다.
또 다른 저장 선택안은 일반적으로 플래시 메모리라 지칭되는 섹터화된 EEPROM이다. 섹터화된 EEPROM은 바이트 시간상에 판독 및 기록을 허용하는 비휘발성 저장 장치이다. RAM과 달리, 섹터화된 EEPROM에서는 삭제 동작이 이전에 기록된 바이트위에 재기록되기 전에 수행되어야 한다. 그러나, 데이터 삭제는 바이트 기반상에 수행될 수 없다. 삭제는 섹터의 크기가 선택된 특정 메모리 장치에 의해 정해진 경우의 섹터 기반상에만 수행될 수 있다. 삭제가능한 섹터의 크기는 항상 1 바이트보다 크며 64 Kbyte로 정렬될 수 있다. 그러나, 삭제 사이클의 수는 무제한이 아니며, 최대 사이클 수명에 의해 한계설정된다. 섹터화된 EEPROM에 대해 일반적으로 추천되는 삭제 사이클 수명은 100,000 사이클이다. 그러므로, 예측된 장치 수명을 넘어 100,000 삭제 사이클보다 더 큰 사이클을 필요로 하는 응용에 대해서 섹터화된 EEPROM을 사용하지 못할 것이다. 섹터화된 EEPROM은 100,000 삭제 및 재기록 사이클보다 적은 사이클을 필요로 하는 응용에서의 다른 유형의 재기록가능 메모리상에 장점을 갖는다. 섹터화된 EEPROM은 비휘발성이기 때문에 내장된 코드 응용에 대한 어떤 유형의 RAM 보다도 바람직하다. 섹터화된 EEPROM은 회로의 메모리 일부를 재기록할 수 있는 능력때문에 EPROM보다 바람직하다. 섹터화된 EEPROM은 또한 칩 삭제를 위한 UV 광을 필요로 하지 않는다. 섹터화된 EEPROM은 섹터화된 EEPROM 장치의 더 낮은 비용과 높은 밀도에 기인하여, 비교적 재기록 제한을 갖는 종래의 EEPROM보다 바람직하다. 섹터화된 EEPROM은 사용자 구성가능 데이터의 비휘발성 저장용 휴대용 전자 장치에 사용된다.
섹터화된 EEPROM에 저장된 데이터는 파일 시스템에 따르도록 포맷된다. 파일 포맷 협정은 섹터 크기설정된 삭제 사이클에 의해 부분적으로 구동된다. 섹터화된 EEPROM의 데이터는 그 장소에서 재기록될 수 없기 때문에 데이터는 특정 위치에 메모리 매핑되지 않는다. 부가의 소프트웨어 오버헤드는 메모리 액세스 시간을 극적으로 증가시킨다. 액세스 시간은 부가로 멀티-태스킹 시스템에서 증가된다. 멀티-태스킹 시스템에서의 비휘발성 메모리 액세스는 더 높은 우선순위 태스크에 의해 선점당할 수 있다. 선점은 진행하기 전에 더 높은 우선순위 태스크가 완료될 동안 더 낮은 우선순위 태스크가 대기할 것을 요구한다. 소프트웨어 오버헤드가 액세스 시간 계산에 포함되면, 섹터화된 EEPROM으로부터 데이터를 액세스하는 시간은 RAM 장치에 저장된 데이터에 대한 액세스 시간보다 1000에서 10,000배정도 더 느릴 수 있다.
긴 액세스 시간은 사용자 인터페이스 문제점을 발생시킨다. 무선 전화와 같은 휴대용 전자 장치에서, 비휘발성 사용자 구성가능 데이터는 종종 섹터화된 EERPOM에 저장된다. 사용자 인터페이스는 전화 번호부 데이터에 대한 액세스가 순간적으로 발생하는 것으로 나타날 때 강화된다. 섹터화된 EEPROM으로부터의 데이터 검색은 사용자가 전화 번호부의 엔트리와 비교하기 위해 전화 번호를 입력할 때 사용자 응답을 느리게 한다. 이것은 섹터화된 EEPROM으로부터 소정 데이터를 검색하기 위해 초기화되어야 하는 파일 시스템을 처리하는데 있어서의 소프트웨어 오버헤드에 기인한다. 긴 액세스 시간 지연은 데이터 검색이 소정의 미리 정의된 시간 윈도내에서 발생해야하는 경우에 심각한 문제점을 발생시킨다.
섹터화된 EEPROM 또는 다른 비휘발성 메모리의 느린 액세스 시간에 대한 하나의 해결책은 비휘발성 데이터 레코드로부터의 모든 데이터를 RAM으로 전송하는 것이다. 데이터 레코드는 장치 전원을 켬에 따라 비휘발성 RAM으로부터 전송될 수 있다. 그후에 모든 데이터는 RAM으로부터 신속하게 검색될 수 있다. 이것은 사용자 인터페이스를 크게 강화시킨다. 그러나, 이 해결안은 상당한 비용 및 공간의 단점을 발생시킨다. 부가의 RAM은 단순히 사용자 인터페이스를 강화시키기 위해 비휘발성 메모리의 내용을 중복하여 저장하도록 요구된다. 비휘발성 메모리에 저장된 데이터를 액세스할 때 사용자 인터페이스를 고속으로 유지하도록 요구되는 RAM의 양을 감소시키는 방법 및 장치가 요청된다.
본 발명은 전자 회로에 관한 것이다. 더 구체적으로, 본 발명은 느린 비휘발성 메모리로부터 고속으로 데이터를 룩업하고 검색하면서 장치내의 RAM 요구를 감소시키는 신규하고 개선된 방법 및 장치에 관한 것이다.
도 1은 계층적인 메모리 실행의 블록선도이다.
도 2a-2b는 NV 메모리 테이블의 RAM 기반 룩업의 실행을 도시하는 블록선도이다.
도 3a-3b는 본 발명의 RAM 실행의 흐름도이다.
본 발명은 더 느린 비휘발성 메모리로부터 고속 데이터 검색을 지원하는데 요구되는 RAM의 양을 감소시키는 신규하고 개선된 방법 및 장치에 관한 것이다. 비휘발성 메모리대신 RAM의 이용은 데이터 검색 시간을 크게 감소시킨다. RAM 액세스는 비휘발성 메모리가 액세스될 때마다 수행되어야 하는 소프트웨어 오버헤드때문에 비휘발성 메모리 액세스보다 빠른 차수이다.
데이터 레코드의 콜렉션(collection)은 비휘발성 메모리에 저장될 수 있다. 비휘발성 데이터 레코드에 대한 액세스는 비휘발성 메모리 액세스와 관련된 소프트웨어 오버헤드때문에 느려진다. 본 발명은 비휘발성 메모리에 저장된 데이터 레코드의 검색을 크게 강화하는데 사용될 수 있다. 비휘발성 메모리에 저장된 데이터 레코드가 검색되어야 하면, 일반적으로 비휘발성 메모리에 대한 여러번의 액세스가 요구된다. 본 발명은 RAM의 미리 결정된 위치에서 일련의 계산된 태그 값을 절약함으로써 비휘발성 데이터 레코드에 대한 액세스 수를 감소시킨다. 비휘발성 메모리에 저장된 데이터 레코드의 검색은 그후에 미리 결정된 RAM 위치를 통해 대응하는 태그 값을 검색하고 그후에 매칭 태그 값이 발견되면 비휘발성 데이터 레코드를 검색함으로써 수행된다. RAM에서의 매칭 태그 값을 검색함으로써, 매칭 데이터 레코드를 검색하는데 요구되는 비휘발성 메모리 액세스 수를 한번으로 감소시킨다. 이것은 비휘발성 데이터 레코드의 종래 검색시 요구되는 수많은 비휘발성 레코드 검색 및 비교와 대비된다.
미리 결정된 수의 메모리 위치는 비휘발성 메모리에 저장된 데이터 레코드의 수에 대응하는 RAM에 할당된다. RAM에 할당된 각 메모리 위치는 비휘발성 메모리에 저장된 데이터 레코드를 유지하도록 충분히 클 필요는 없다. 바람직한 실시예에서 RAM의 두 바이트는 비휘발성 메모리의 각 데이터 레코드 위치에 대해 할당된다. 비휘발성 데이터 레코드는 임의대로 길다. 태그 함수 H(x)는 각 비휘발성 레코드를 대응하는 태그 값으로 매핑하도록 정의된다. 태그 함수 H(x)는 태그 값에 대한 데이터 레코드의 1:1 매핑을 제공할 필요가 없다. 태그 값에 대한 데이터 레코드의 1:1 매핑은 비휘발성 메모리 액세스의 수를 데이터 레코드 검색당 한번의 비휘발성 레코드 액세스로 최소화한다.
미리 결정된 RAM 위치는 대응하는 비휘발성 데이터 레코드의 내용으로부터 결정된 태그 값을 유지한다. 특정 데이터 레코드에 대한 검색이 요청되면 태그 값은 검색된 레코드에 대해 계산된다. 검색된 레코드는 y로 표시되면, 태그 값 H(y)가 계산된다. 태그 값 H(y)는 그후에 미리 결정된 RAM 위치에 저장된 모든 태그 값과 비교된다. 이 단계는 RAM의 고속 액세스 능력에 따라 매우 신속하게 수행된다. RAM의 매칭 태그 값이 발견되면, 대응하는 비휘발성 메모리 위치는 특정 RAM 위치에 대응하는 위치로 식별된다. 비휘발성 데이터 레코드의 내용은 검색되고, 탐색된 레코드와 비교된다. 두개가 매칭하면 탐색은 완료된다. 검색된 비휘발성 메모리 레코드 및 탐색된 레코드가 동일한 매치가 아니면, RAM의 나머지 태그 값은 탐색된 레코드에 대해 계산된 태그 값에 대한 부가 매치로서 탐색된다. 상기 탐색은 동일한 매치가 발견되거나 RAM 태그 값의 끝부분에 도달할 때까지 계속된다.
본 발명은 탐색의 대부분이 RAM 태그 테이블을 이용하여 수행되기 때문에 데이터 레코드를 탐색하는데 걸리는 시간을 크게 감소시킨다. 비휘발성 메모리 레코드는 태그 값 매치가 발견될 때만 액세스된다. 탐색의 대부분에 대해 하나의 비휘발성 메모리만이 요구될 것이다. 시간 절약은 RAM의 감소가 하드웨어 비용을 감소시키면서 사용자 인터페이스를 강화하도록 허용한다.
본 발명의 특징, 목적 및 장점은 유사 참조 문자가 대응 식별하는 도면을 참조로 하기의 상세한 설명으로부터 더욱 명백해질 것이다.
소정 전자 장치의 메모리 및 저장 장치는 예측된 요구에 따라 할당된다. 무선 전화 메모리와 같은 전자 장치는 일반적으로 비휘발성 메모리 및 RAM의 형태이다. 비휘발성 메모리는 PROM 및 비휘발성 섹터화 EEPROM의 결합일 수 있다. 기술분야에서 공지된 비휘발성 섹터화 EEPROM 유형은 플래시 메모리이다.
플래시 메모리를 이용하는 하나의 장점은 전자적으로 삭제되고 재기록될 수 있는 능력이다. 앞서 논의된 바와 같이, 플래시 메모리의 한가지 단점은 그 장소에서 데이터를 업데이트할 수 없다는 것이다. 전체 섹터는 동시에 삭제되어야 한다. 플래시 메모리 공간의 효율적 사용을 극대화하기 위해, 플래시 메모리에 저장된 데이터는 특정 위치로 메모리 매핑되지 않으며, 오히려 파일 기반 저장 시스템을 이용하여 저장된다. 반대로, RAM에 저장된 데이터는 그 장소에서 업데이트될 수 있고 이 때문에 데이터는 메모리 맵에 할당될 수 있다.
도 1은 무선 전화(10)와 같은 전자 장치의 메모리(20) 구조의 블록선도를 도시한다. 메모리(20)에 저장된 모든 데이터는 데이터베이스(110)내에서 처리된다. 휘발성이거나 일시적 성질의 데이터는 RAM(120)에 저장된다. RAM(120) 데이터는그 장소에서 업데이트될 수 있기 때문에 메모리 맵을 할당받을 수 있다. 그러나, 변동하는 길이 또는 위치를 갖는 다른 데이터는 파일 시스템(130)을 이용하여 처리된다. 파일 시스템(130)은 파일 기반 데이터의 포맷, 위치 및 크기를 결정하는 소프트웨어 루틴이다. 데이터에 대한 파일 기반 구조를 이용하는 장치 중 하나는 비휘발성 메모리(140)이다. 비휘발성 메모리(140)에 저장된 모든 데이터는 먼저 파일 시스템(130)에서 포맷되어야 한다. 파일 시스템(130) 아래의 계층적 비휘발성 메모리(140)는 비휘발성 메모리(140)에 저장된 소정 데이터를 액세스하는데 부가의 지연을 발생시킨다. 비휘발성 메모리(140)에 저장된 데이터를 액세스하는 지연은 데이터가 사용자 인터페이스의 일부인 비휘발성 메모리로부터 검색되어야 할 때 바람직하지 않은 지연을 발생시킬 수 있다. 무선 전화에 일반적으로 이용가능한 데이터를 이용하는 예는 사용자 발생 전화번호부의 탐색이다.
무선 전화는 일반적으로 사용자 발생 전화 번호부 엔트리를 저장할 능력을 갖는다. 사용자는 일반적으로 비휘발성 메모리내에 저장된 전자 전화번호부에 100개의 전화 번호 및 대응하는 이름을 가질 수 있다. 엔트리의 실제 수는 설계자가 전화 번호부에 할당하고자 하는 메모리 공간에 의해서만 제한된다. 전화 번호 및 이름은 각각 비휘발성 메모리에 저장되는 데이터 레코드를 구성한다. 각 전화 번호는 32 문자 길이까지 될 수 있다. 이 길이는 영역 코드, 내부 전화 확장, 액세스 코드 및 개인 식별 번호가 지정된 번호에 대해 자동으로 다이얼링하도록 허용한다. 소정 수의 문자는 이름에 대해 할당될 수 있지만 편의를 위해 32 문자 길이가 추정될 것이다. 만약 512 결합 전화 번호 및 이름 엔트리가 허용된다면 비휘발성메모리의 16K가 할당되어야 한다. 사용자가 전화 번호 또는 이름을 입력하고 대응하는 저장된 정보에 대해 전화 번호부를 탐색하고자 하면 비휘발성 메모리에 저장된 데이터 레코드가 탐색되어야 한다.
비휘발성 메모리에 저장된 데이터 레코드는 파일 시스템(130)을 통해서만 판독될 수 있다. 파일 시스템(130)은 데이터베이스(110)아래 계층이다. 비휘발성 메모리 액세스의 상부에 다중 계층은 비휘발성 메모리에 저장된 데이터 레코드에 대한 소정 액세스에 대해 큰 지연을 발생시킨다. 종래의 탐색 루틴동안 데이터 레코드는 비휘발성 메모리로부터 검색되고 입력 데이터와 비교된다. 두개가 매칭하면, 상기 매칭에 대응하는 데이터 레코드가 발견된다. 두개가 매칭하지 않으면 제 1 검색 데이터 레코드는 폐기되고 다음 데이터 레코드가 비휘발성 메모리로부터 검색된다. 비휘발성 메모리로부터의 데이터 레코드의 검색과 입력 데이터에 대한 비교는 매칭이 발견되거나 비휘발성 메모리의 모든 기록이 탐색될 때까지 계속된다. 비휘발성 메모리로부터 데이터 레코드를 검색하기 전에 통과되어야 하는 다중 계층은 지연에 기여한다. 입력 데이터가 비휘발성 메모리에 저장된 많은 수의 내용과 비교되어야 할 때 지연은 사용자 인터페이스에 대해 과도하게 된다. 이름이나 전화 번호를 입력하고 엔트리에 관련된 저장 정보를 검색하려고 하는 사용자는 긴 시간 주기동안 대기하도록 예상될 수 없다. 사용자 인터페이스는 사용자에 대해 완벽하고 동시적으로 나타날 필요가 있다.
비휘발성 메모리 데이터 레코드를 탐색하는데 관련되는 속도를 증가시키는 한가지 방법은 RAM에서 탐색을 수행하는 것이다. RAM에 저장된 데이터 레코드에대한 액세스 시간은 비휘발성 메모리로부터 동등한 데이터 레코드를 검색하는 액세스 시간보다 더 빠른 차수이다. 액세스 시간 차이는 파일 시스템과 관련이 있다. RAM은 데이터 레코드가 파일 시스템하에 포맷되고 액세스되도록 요구하지 않는다. 비휘발성 메모리대신 RAM에서의 탐색을 수행하기 위해, 모든 비휘발성 메모리 데이터 레코드는 RAM에 전송될 수 있다. 그후에 탐색이 요구되면, 모든 데이터 레코드는 RAM에서 이용가능하다. 이러한 실행은 비휘발성 메모리에 이용가능한 데이터 레코드를 중복해서 저장하는데만 많은 양의 RAM을 이용하는 단점을 갖는다. 부가된 ROA의 물리적 크기 및 비용이 증가하기 때문에, 이 해결책은 무선 전화와 같은 휴대용 전자 장치의 실행에 있어서 이상적이지 않다.
비휘발성 메모리에 저장된 데이터 레코드의 탐색 시간을 개선하지만 RAM의 전체 비휘발성 메모리 내용 절약을 필요로 하지 않는 한가지 선택적 실행은 도 2a에 도시된다. 도 2a에서, RAM은 비휘발성 메모리에 저장된 데이터 레코드를 유지하는데 사용되지 않는다. 대신에, RAM 해시 빈(220)은 RAM에서 정의된다. 원래의 비휘발성(NV) 레코드(210) 각각은 해시 함수에 입력된다. 입력 NV 레코드(210)에 대한 포인터는 출력 해시 번호에 대응하는 RAM 해시 빈(220)에 저장된다. 해시 함수는 NV 레코드(210)의 1:1 매핑을 RAM 해시 빈(220)에 제공할 필요가 없다. 그러나, 해시 함수의 선택은 액세스 속도에 대한 RAM 해시 빈(220)의 수를 협상한다. 해시 함수 매핑을 더 고유하게 하면, RAM 해시 빈(220)에 대해 요구되는 공간도 더 크게 된다. 고유한 해시 함수 매핑의 장점은 매칭을 위해 NV 레코드(210)를 탐색할 때 비휘발성 메모리에 대한 액세스 수가 감소되는 것이다.
도 2a에 도시된 실행은 다음과 같이 수행한다. 전자 장치의 초기화에 따라 각 NV 레코드(210)는 해시 함수에 입력된다. 초기화는 전자 장치에 대한 이벤트로서 정의될 수 있다. 무선 전화의 초기화는 전원을 켜는것으로 정의된다. 해시 함수의 예는 하기와 같이 도시된다.
식 (1)
식에서 xi는 해시 함수에 대한 특정 NV 데이터 레코드 입력에서 ith 바이트를 나타낸다. yi는 특정 NV 데이터 레코드에서 i 바이트를 처리한후의 해시 함수의 출력을 나타낸다. 수 N은 각각의 NV 데이터 레코드 엔트리를 포함하는 바이트 수를 나타낸다. 각 NV 데이터 레코드는 상기에 기술된 예에서 32 바이트 길이이다. 상기의 예에 기술된 데이터 레코드 길이에 대해 N = 32이다. 상기 계산은 실제 실행에 대한 수학을 이용하여 수행된다. 수학이 사용될 때 입력으로부터 출력으로의 매핑은 1:1이 아님을 알 수 있다.
해시 함수 출력은 정의된 RAM 해시 빈(220)내로 떨어진다. 해시 함수에 대해 입력으로 사용되는 NV 레코드에 대한 포인터(222)는 RAM 해시 빈(220)에 저장된다. 포인터는 데이터 레코드보다 더 적은 메모리 공간을 이용한다. 일반적으로, 네개 바이트는 포인터에 할당된다. 512 엔트리를 갖는 비휘발성 데이터 레코드에 대해 메모리의 2K가 모든 포인터를 수용하도록 요구된다. 이것은 RAM 메모리 공간의 보존을 가능하게 한다.
각 해시 빈은 하나 이상의 포인터(222)를 저장할 수 있는 능력을 가져야 한다. 해시 함수는 입력대 출력의 1:1 매핑을 제공하지 않기 때문에 이것이 필요하다. 해시 함수의 1:1 매핑의 결여는 RAM 메모리 할당시에 문제점을 발생시킨다. 많은 수의 해시 빈은 각 해시 빈이 하나의 포인터만을 갖도록 하기 위해 한정될 필요가 있다. 더 적은 수의 해시 빈이 정의되면 각각의 해시 빈은 다수의 포인터를 저장할 필요가 있을 것이다.
설계자는 해시 빈의 64K가 정의되면 각 해시 빈이 그 안에 하나의 포인터만을 갖도록 할 수 있다. 포인터의 2K만이 모든 데이터 레코드를 식별하도록 요구되기 때문에 다수의 해시 빈은 널 포인터를 유지할 것이 명백하다. 64K 해시 빈을 할당하는 것은 모든 비휘발성 데이터 레코드를 RAM으로 로딩하는 것보다 훨씬 많은 양의 RAM 공간을 필요로 한다. 따라서 이 해결안은 실행가능하지 않다. RAM 요구를 감소시키기 위해 설계는 더 적은 64K 해시 빈을 할당한다. 그러나, 해시 빈 수의 감소는 필연적으로 하나의 해시 빈이 하나 이상의 포인터 값을 포함할 확률을 증가시킨다.
소정 입력 데이터에 대한 데이터 레코드 매치를 찾기 위해, 입력 데이터는 먼저 해시 함수를 통해 통과된다. 해시 함수의 출력은 그후에 탐색 루틴을 특정 해시 빈으로 유도한다. 포인터가 해시 빈에 저장되어 있지 않으면 비휘발성 데이터 레코드에서 발견되는 매치가 존재하지 않는 것이다. 이것은 매칭이 발견되지 않는다면 탐색 시간을 크게 감소시킨다. 종래의 탐색에서 비휘발성 메모리의 모든 데이터 레코드는 매치가 존재하지 않는 것으로 결정하기전에 입력에 대해 검색되고비교될 필요가 있다. 해시 빈 방법을 이용하면 비휘발성 메모리에 대한 액세스는 매치가 존재하지 않는 것으로 결정하기 전에 발생할 필요가 없다.
해시 빈에 저장된 포인터가 있다면, 제 1 포인터는 포인터가 지칭하는 해시 빈 및 NV 레코드로부터 검색된다. 그후에 전체 비교는 입력과 검색된 데이터 레코드간에 수행된다. 두개가 동일하다면 매치가 발견되고 나머지 관련 데이터 레코드가 검색될 수 있다. 검색된 데이터 레코드가 매칭하지 않으면, 해시 빈의 다음 포인터가 검색되어야 한다. 상기 비교가 수행되고 해시 빈으로부터 매치가 발견되거나 해시 빈 포인터에 의해 지칭되는 모든 비휘발성 데이터 레코드가 비교될 때까지 포인터의 검색이 반복된다.
이전의 실행에서 비휘발성 메모리에 대한 여러번의 액세스 가능성이 있다. 비휘발성 메모리로의 액세스 수는 각 해시 빈에 저장된 포인터의 수에 따른다. 요구된 해시 빈의 수는 해시 함수와 관련된다. 고유한 해시 빔의 수를 증가시킴으로써 비휘발성 메모리 액세스 수가 감소된다. 비휘발성 메모리 액세스 수의 감소는 요구된 RAM의 증가된 비용에 맞먹는다.
본 발명은 데이터 레코드 탐색 시간을 감소시키고 RAM 요건을 감소시키는 실행을 이용한다. 본 발명의 블록선도는 도 2b에 도시된다. 본 발명에서 NV 레코드 (210)는 이전에 기술된 바와 같은 데이터 레코드의 콜렉션을 포함한다. 그러나, RAM의 해시 빈을 한정하는 대신 메모리 블록이 태그 값(230)에 대해 RAM에 할당된다. 이전의 예에서 기술된 바와 같이, 비휘발성 메모리에 저장된 각 데이터 레코드는 32 문자 길이이다. 비휘발성 메모리에 할당된 512개의 이용가능한 레코드가있다. 이것은 메모리의 16K에 대응한다. 본 발명은 비휘발성 메모리의 각 데이터 레코드에 대해 RAM 공간의 2 바이트를 할당한다. 512 데이터 레코드를 수용하기 위해, RAM의 1K 바이트가 할당될 필요가 있다. 각 비휘발성 메모리에 할당된 RAM의 바이트 수는 일정하기 때문에 RAM 어드레스 위치는 대응하는 비휘발성 데이터 레코드에 할당될 수 있다. 예로서, 제 1 비휘발성 데이터 레코드는 RAM에 할당된 첫번째 두 바이트에 대응할 것이다.
각 비휘발성 데이터 레코드에 할당된 RAM의 두바이트는 전체 데이터 레코드를 유지하는데 충분하지 않다. 대신, 두 바이트는 데이터 레코드에 대응하는 태그 값을 유지한다. 태그 값은 상기에 기술된 동일한 해시 함수를 이용하여 발생된다. 비휘발성 메모리의 각 데이터 레코드에 대응하는 태그 값이 계산되고 RAM의 미리 결정된 위치에 저장된다. 본 발명은 따라서 할당된 RAM 량을 최소화한다. RAM의 두바이트는 각 비휘발성 데이터 레코드에 대해 할당되며 512 데이터 레코드가 존재한다. 따라서 RAM의 1K만이 할당될 필요가 있다.
입력 값이 비휘발성 메모리 데이터 레코드의 내용과 비교될 필요가 있을때 입력 값은 먼저 해시 함수로 넘겨진다. 그러면 출력 해시값은 RAM에 저장된 태그 값과 비교된다. 매칭 태그 값이 위치설정되면, 태그 값 위치에 대응하는 비휘발성 메모리의 내용이 검색되고 원래 입력 값과 비교된다. 두개가 동일하면 매치가 발견된다. 그렇지 않으면, 또다른 태그 값이 매칭 데이터 레코드를 생성하거나 또는 태그 값 리스트의 끝에 도달될 때까지 RAM 태그 값아래로 탐색이 계속된다. 이러한 방법으로 대부분의 탐색은 RAM에서 수행되고 비휘발성 메모리만이 액세스되는때는 계산된 입력 태그 값이 이전에 저장된 태그 값 중 하나와 매칭할 때이다. 해시 함수가 다수의 복제 태그 값을 생성하지 않으면, 비휘발성 메모리에 대한 액세스 수는 최소화된다. 이전에 기술된 해시 함수를 이용하면, 비휘발성 메모리에 대한 액세스 수는 데이터 탐색의 99%에 대해 하나로 최소화된다.
도 3a는 본 발명의 흐름도를 도시한다. 루틴은 상태(301)에서 시작한다. 상기 루틴은 장치에 전원이 켜질때마다 초기화된다. 무선 전화에서, 사용자가 전화 전원을 켤때마다 루틴이 시작한다(301). 루틴은 다음에 비휘발성(NV) 메모리 데이터 레코드의 모든 엔트리가 판독되는 경우에 상태(304)로 진행한다. 다음 상태 (308)에서 NV 메모리 엔트리에 대한 태그 값이 계산된다. 각 NV 메모리 엔트리에 대한 태그 값은 이전에 기수된 해시 함수와 같은 함수를 이용하여 계산된다. 각 태그 값은 두 바이트를 요구한다.
루틴은 그후에 계산된 태그 값이 미리 결정된 RAM 위치에 저장되는 경우에 상태(310)로 진행한다. 각 RAM 위치는 NV 메모리 데이터 레코드 콜렉션의 엔트리에 대응한다. 예로서, RAM 태그 값 테이블의 6번째 엔트리는 NV 메모리에 엔트리가 실제로 상주하는지에 관계없이 NV 메모리 데이터 레코드의 6번째 엔트리에 대응하는 절대 주소이다.
태그 값이 RAM에 저장된 후에 데이터 레코드의 소정 탐색은 RAM에서 1차적으로 수행될 수 있다. 상태(320)는 엔트리 'y'가 데이터 레코드의 내용에 비교되는 것을 가정한다. 무선 전화와 같은 전자 장치에서 엔트리 'y'는 사용자에 의한 전화 번호 입력에 대응할 수 있다. 데이터 레코드 내용은 특정 전화 번호와 관련된이름 및 정보에 대응한다. 사용자는 전화 번호를 입력할 수 있으며 그 번호와 관련된 이전에 저장된 정보를 검색하려할 것이다.
탐색의 첫번째 단계는 입력 'y'에 대응하는 태그 값이 계산되는 상태(322)에서 달성된다. 상태(324)에서 탐색에 사용되는 인덱스 카운터가 초기화된다. 흐름도는 다음에 포인트(330)로 진행한다. 포인트(330)는 흐름도의 기능적 엘리먼트가 아니며 도 3a의 흐름도의 상태를 도 3b의 흐름도의 상태로 링크시키도록 포함된다.
도 3b는 도 3a의 흐름도를 도 3b의 흐름도에 링크시키는 포인트(330)에서 시작한다. 포인트(330)로부터 루틴은 상태(340)로 진행한다. 상태(340)에서 루틴은 RAM으로부터 인덱스 카운터에 의해 식별되는 위치에 대응하는 이전에 저장된 태그 값을 검색한다. 루틴은 그후에 엔트리 'y'에 대응하는 태그 값이 검색된 RAM 태그 값과 비교되는 상태(344)로 진행한다. 태그 값이 단지 두바이트 길이이며 모든 값이 RAM에 상주하기 때문에 검색 및 비교 동작은 매우 신속하게 발생한다. 루틴이 두개의 태그 값이 매칭하지 않는 것으로 결정하면, 루틴은 입력 태그 값과 비교되는 RAM에 더 많은 태그 엔트리가 있는지를 검사하기 위해 상태(354)로 진행한다. 상태(354)에서 루틴이 비교되지 않은 RAM의 더 많은 태그 값을 식별하면 루틴은 인덱스 카운터를 증가시키도록 상태(358)로 진행한다. 인덱스 카운터가 증가되면 루틴은 인덱스 카운터에 의해 식별되는 다음 태그 값을 검색하기 위해 상태(340)로 루프 백한다.
대신에 상태(354)에서 루틴이 엔트리 태그 값에 비교되지 않은 RAM에 부가 태그 값이 없는 것으로 결정하면, 루틴은 입력 엔트리와 매칭하는 메모리내의 데이터 레코드가 존재하지 않는 것으로 결정하는 상태(362)로 진행한다. 이 루틴은 그후에 종료된다. 태그 값이 입력 엔트리에 대한 태그 값과 매칭하지 않으면, 필연적으로 입력 엔트리와 매칭하는 비휘발성 메모리에 저장된 데이터 레코드가 존재하지 않는다. 본 발명에서 이 조건에 대해 비휘발성 메모리로의 액세스가 존재하지 않는다. 따라서, 탐색은 비휘발성 데이터 레코드가 비휘발성 메모리 액세스없이 매칭하지 않는 것으로 결정할 수 있다.
상태(344)에서 루틴이 검색된 태그 값이 입력 엔트리 태그 값과 매칭하는 것으로 결정하면 루틴은 상태(348)로 진행한다. 상태(348)에서 루틴은 이전에 RAM으로부터 검색된 매칭 태그 값에 대응하는 데이터 레코드를 검색한다. 따라서, 비휘발성 메모리에 저장된 데이터 레코드는 상기 데이터 레코드에 대한 태그 값이 입력 엔트리의 태그 값과 매칭하는 경우에만 액세스된다.
일단 실제적 데이터 레코드가 비휘발성 메모리로부터 검색되면 루틴은 풀 레코드의 비교를 수행하기 위해 상태(350)로 진행한다. 해시 함수가 데이터 레코드로부터 태그 값으로의 1:1 매핑을 제공하지 않기 때문에 풀(full) 레코드의 비교가 요청된다. 입력 엔트리와 비휘발성 데이터 레코드가 동일한 태그 값을 발생시킬 수 있더라도 실제의 데이터 레코드는 실제로 매치를 확인하도록 비교되어야 한다.
검색된 비휘발성 메모리 데이터 레코드가 입력 엔트리와 매칭하면 성공적인 탐색이 수행된 것이다. 더이상 탐색 루틴을 계속할 이유가 없으므로 상기 루틴은 종료하고 탐색할 새로운 엔트리를 대기한다.
상태(350)에서 루틴이 검색된 비휘발성 메모리 데이터 레코드가 입력 엔트리와 매칭하지 않는 것으로 결정하면, 루틴은 모든 RAM 태그 값이 탐색되었는지를 결정하도록 상기에 기술된 바와 같이 상태(354)로 진행한다.
도 3a 및 3b의 흐름도는 느린 비휘발성 메모리에 저장된 데이터 레코드의 빠른 탐색에 보조하도록 최소량의 RAM의 사용될 수 있는 방법을 도시한다. 비휘발성 메모리 데이터 레코드의 전체 내용을 RAM으로 로딩하기보다는, 태그 값 세트만이 RAM으로 로딩된다. 데이터 레코드가 먼저 입력 엔트리에 대해 탐색될 필요가 있을때 입력 엔트리는 RAM에 저장된 태그 값을 발생시키는데 이전에 사용된 동일한 해시 함수를 이용하여 태그 값을 발생시키는데 사용된다. 그러면 입력 엔트리 태그 값은 연속해서 RAM에 저장된 태그 값과 비교된다. 매칭 태그 값이 발견되면 대응하는 데이터 레코드는 비휘발성 메모리로부터 검색된다. 따라서 비휘발성 메모리는 매칭 데이터 레코드를 검색할 높은 확률이 있을때만 액세스된다. 비휘발성 메모리로부터 검색된 데이터 레코드는 입력 엔트리와 비교된다. 두개 레코드가 동일한 태그 값을 발생시키기 때문에 매칭을 얻을 가능성이 높다. 그러나, 검색된 데이터 레코드와 입력 엔트리가 매칭하지 않으면, RAM 태그 값 테이블의 나머지가 입력 엔트리 태그 값과 매칭하는 다른 태그 값에 대해 탐색된다. 해시 함수는 입력 대 태그 값의 1:1 매핑을 제공하기 때문에 비휘발성 메모리는 일반적으로 탐색당 한번 액세스된다. 따라서 본 발명을 실행하는데 요구되는 RAM의 양을 최소화하면서 비휘발성 메모리에 대한 액세스 수가 최소화된다.
바람직한 실시예의 이전 기술은 당업자가 본 발명을 제조하거나 이용할 수 있도록 제공된다. 본 실시에에 대한 여러 변형이 당업자에게 명백하며, 여기에 정의된 일반 원리는 본 특허 발명의 이용없이 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 여기에 도시된 실시예에 제한되지 않으며 여기에 개시된 원리 및 신규한 특징에 따르는 최광위의 범위에 따른다.

Claims (20)

  1. 고속 메모리 요구량을 최소화하는 고속 데이터 액세스 방법으로서,
    개별 데이터 레코드의 콜렉션(collection)을 발생시키는 단계;
    데이터 레코드의 콜렉션을 메모리에 저장하는 단계;
    상기 콜렉션에서 각 데이터 레코드에 대한 태그 값을 발생시키는 단계;
    고속 메모리의 미리 결정된 위치에 태그 값을 저장하는 단계;
    상기 데이터 레코드 콜렉션의 탐색을 요구하는 입력 엔트리를 수신하는 단계;
    입력 엔트리에 대응하는 입력 엔트리 태그 값을 발생시키는 단계;
    상기 입력 엔트리 태그 값과 상기 고속 메모리에 저장된 태그 값을 비교하는 단계;
    상기 입력 엔트리 태그 값과 매칭하는 태그 값에 대응하는 데이터 레코드를 상기 데이터 레코드 콜렉션으로부터 검색하는 단계; 및
    상기 검색된 데이터 레코드와 상기 입력 엔트리를 비교하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서, 상기 태그 값을 발생시키는 단계는 상기 데이터 레코드를 해시 함수에 입력하고 해시 함수 출력을 태그 값으로서 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 상기 입력 엔트리 태그 값을 발생시키는 단계는 상기 입력 엔트리를 상기 해시 함수에 입력하고 상기 해시 함수 출력을 상기 입력 엔트리 태그 값으로서 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서, 상기 데이터 레코드 콜렉션은 비휘발성 메모리에 저장되는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서, 상기 비휘발성 메모리는 플래시 메모리인 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서, 상기 고속 메모리는 RAM인 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 입력 엔트리 태그 값과 매칭하는 태그 값에 대응하는 모든 데이터 레코드에 대해 데이터 레코드 검색 및 비교 단계를 반복하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 고속 메모리 요구량을 최소화하는 고속 데이터 액세스 장치로서,
    데이터 레코드 콜렉션을 정의하는 다수의 데이터 레코드를 저장하는 제 1 메모리;
    디지털 프로세서; 및
    상기 제 1 메모리에 저장된 데이터 레코드 각각에 대응하는 상기 디지털 프로세서에 의해 계산된 태그 값을 저장하는 제 2 메모리를 포함하며,
    상기 디지털 프로세서는 입력 엔트리에 대한 데이터 레코드 콜렉션을 탐색하도록 하는 요청에 응답하여, 상기 입력 엔트리에 대응하는 입력 엔트리 태그 값을 계산하며, 상기 입력 엔트리 태그 값과 상기 제 2 메모리에 저장된 상기 태그 값 각각을 비교하며, 상기 입력 엔트리 태그 값과 매칭하는 태그 값에 대응하는 데이터 레코드를 검색하고 상기 입력 엔트리와 상기 검색된 데이터 레코드를 비교하는 장치.
  9. 제 8 항에 있어서, 상기 제 1 메모리는 비휘발성 메모리인 것을 특징으로 하는 장치.
  10. 제 8 항에 있어서, 상기 제 2 메모리는 RAM인 것을 특징으로 하는 장치.
  11. 제 8 항에 있어서, 상기 데이터 레코드는 전자 전화 번호부의 엔트리를 포함하는 것을 특징으로 하는 장치.
  12. 제 8 항에 있어서, 상기 태그 값은 해시 함수에 대한 입력으로서 데이터 레코드를 이용하는 해시 함수의 출력으로서 계산되는 것을 특징으로 하는 장치.
  13. 제 12 항에 있어서, 상기 입력 엔트리 태그 값은 상기 태그 값의 계산에 대해 사용된 바와 같은 동일한 해시 함수를 이용하여 계산되는 것을 특징으로 하는 장치.
  14. 제 8 항에 있어서, 상기 제 1 메모리에 저장된 각 데이터 레코드에 대해 제 2 메모리에 2 바이트가 할당되는 것을 특징으로 하는 장치.
  15. 감소된 RAM 요건을 갖는 고속 데이터 액세스에 대해 구성된 전화로서,
    데이터 레코드의 콜렉션을 한정하는 다수의 데이터 레코드를 저장하는 제 1 메모리;
    디지털 프로세서; 및
    상기 제 1 메모리에 저장된 데이터 레코드 각각에 대응하는 디지털 프로세서에 의해 계산된 태그 값을 저장하는 제 2 메모리를 포함하며,
    상기 디지털 프로세서는 입력 엔트리에 대한 데이터 레코드 콜렉션을 탐색하도록 하는 요청에 응답하여, 상기 입력 엔트리에 대응하는 입력 엔트리 태그 값을 계산하며, 상기 입력 엔트리 태그 값과 상기 제 2 메모리에 저장된 상기 태그 값 각각을 비교하며, 상기 입력 엔트리 태그 값과 매칭하는 태그 값에 대응하는 데이터 레코드를 검색하고 상기 입력 엔트리와 상기 검색된 데이터 레코드를 비교하는전화.
  16. 제 15 항에 있어서, 데이터 레코드의 콜렉션은 전자 전화 번호부인 것을 특징으로 하는 전화.
  17. 제 15 항에 있어서, 상기 제 1 메모리는 비휘발성 메모리인 것을 특징으로 하는 전화.
  18. 제 15 항에 있어서, 상기 제 2 메모리는 RAM인 것을 특징으로 하는 전화.
  19. 제 15 항에 있어서, 상기 태그 값은 해시 함수에 대한 입력으로서 데이터 레코드를 이용하여 해시 함수의 출력으로서 계산되는 것을 특징으로 하는 전화.
  20. 제 19 항에 있어서, 상기 입력 엔트리 태그 값은 상기 태그 값의 계산에 사용된 동일한 해시 함수를 이용하여 계산되는 것을 특징으로 하는 전화.
KR1020027009226A 2000-01-19 2001-01-19 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치 KR100749971B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/487,948 2000-01-19
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
KR20030036133A true KR20030036133A (ko) 2003-05-09
KR100749971B1 KR100749971B1 (ko) 2007-08-16

Family

ID=23937770

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027009226A KR100749971B1 (ko) 2000-01-19 2001-01-19 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치

Country Status (13)

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

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 (en) * 1989-07-31 1997-01-02 Koninklijke Philips Electronics N.V. Memory architecture and circuit for hashing
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
US6484250B1 (en) 2002-11-19
WO2001053950A2 (en) 2001-07-26
DE60114470T2 (de) 2006-07-20
ES2254361T3 (es) 2006-06-16
IL150668A0 (en) 2003-02-12
EP1381966B1 (en) 2005-10-26
AU774735B2 (en) 2004-07-08
AU3100801A (en) 2001-07-31
HK1062947A1 (en) 2004-12-03
CN1282108C (zh) 2006-10-25
EP1381966A2 (en) 2004-01-21
DE60114470D1 (de) 2005-12-01
WO2001053950A3 (en) 2003-11-20
CA2397940A1 (en) 2001-07-26
JP2004505332A (ja) 2004-02-19
KR100749971B1 (ko) 2007-08-16
CN1496523A (zh) 2004-05-12
ATE308079T1 (de) 2005-11-15

Similar Documents

Publication Publication Date Title
US7162606B2 (en) Multiple segment data object management
US5682497A (en) Managing file structures for a flash memory file system in a computer
US7529882B2 (en) Dynamic volume management for flash memories
US5987478A (en) Virtual small block file manager for flash memory array
US7676627B2 (en) Single segment data object management
US7363421B2 (en) Optimizing write/erase operations in memory devices
US5717886A (en) Semiconductor disk device and memory management method
US6535949B1 (en) Portable electronic device having a log-structured file system in flash memory
JP5005171B2 (ja) 論理ブロックをスプリットする方法および装置
US6622199B1 (en) Method for minimizing data relocation overhead in flash based file systems
KR100749971B1 (ko) 고속 데이터 액세스를 유지하면서 ram 크기를감소시키는 방법 및 장치
US7139896B2 (en) Linear and non-linear object management
CN100367306C (zh) 非易失性存储卡
US20050216687A1 (en) Data managing method and data access system for storing all management data in management bank of non-volatile memory
US6839798B1 (en) Flash memory capable of storing frequently rewritten data
US6938140B2 (en) System and method for linear object reallocation in place
US8219739B2 (en) Read-only optimized flash file system architecture
JP2000222292A (ja) フラッシュメモリを利用したデータ管理方法
JPH0778485A (ja) 不揮発性半導体記憶装置とデータ書換/読出方法
JP2002222120A (ja) メモリ・アクセス管理装置並びに管理方法
JPH09231111A (ja) Icカード
JP2004126945A (ja) 記憶装置及びその制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20110728

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee