KR20080094882A - 기억장치 - Google Patents

기억장치 Download PDF

Info

Publication number
KR20080094882A
KR20080094882A KR1020080099593A KR20080099593A KR20080094882A KR 20080094882 A KR20080094882 A KR 20080094882A KR 1020080099593 A KR1020080099593 A KR 1020080099593A KR 20080099593 A KR20080099593 A KR 20080099593A KR 20080094882 A KR20080094882 A KR 20080094882A
Authority
KR
South Korea
Prior art keywords
physical
physical block
logical
data
block
Prior art date
Application number
KR1020080099593A
Other languages
English (en)
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
Application filed by 파나소닉 주식회사 filed Critical 파나소닉 주식회사
Publication of KR20080094882A publication Critical patent/KR20080094882A/ko

Links

Images

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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

근년, 취급되는 데이터 량이 증대해서, 비휘발성 메모리를 구비한 기억장치에 있어서는 휴대성 등을 저감시키는 일없이 기억용량의 증대가 요구되고 있다.
본원 발명은 종래 RAM에만 설치되어 있던 논리 어드레스를 물리 어드레스로 변환하는 테이블을 RAM과 비휘발성 메모리에 구비함으로써, 기억용량을 저하시키지 않고 RAM의 용적의 삭감을 도모하고 있다.
Figure P1020080099593
데이터 량, 논리 어드레스, 테이블, RAM

Description

기억장치{STORAGE DEVICE}
본 발명은 데이터의 재기록이 가능한 플래시 메모리 등의 비휘발성 메모리를 구비한 기억장치에 관한 것이다.
음악 데이터나 영상데이터를 취급하는 휴대기기의 기억장치로서, 데이터의 재기록이 가능하고, 휴대성이 높고, 전지 등에 의한 백업이 불필요한 플래시 메모리 등의 비휘발성 메모리를 구비한 기억장치가 사용되어 왔다.
그러나 플래시 메모리에 데이터를 기록하는 처리속도는 기억장치내에 있는 버퍼에 데이터를 전송하는 처리속도에 비하여 느리고, 이 때문에 대기시간이 발생하게 된다.
그래서, 플래시 메모리에 효율 좋게 데이터를 기록하는 처리로서, 예를들면 일본 특개평 6-301601호 공보에서는 복수의 물리 블록에 데이터를 병렬적으로 기록하는 처리가 제안되어 있다.
또, 일단 플래시 메모리 내에 기록된 데이터에 액세스 하려면, 플래시 메모리 내에 있어서의 이 데이터의 물리 어드레스를 논리 어드레스로부터 특정할 필요가 있다. 이 때문에, 기억장치가 갖는 RAM에는 플래시 메모리 내에 기록된 데이터 의 논리 어드레스를 플래시 메모리 내의 물리 어드레스로 변환하는 테이블이 설치된다.
그런데, 근년, 휴대기기에서 취급하는 정보량은 증대하는 경향에 있고, 이에 대처하기 위해서, 기억장치에 있는 비휘발성 메모리를 증가시킴으로써, 기억장치의 기억용량의 증대를 도모하고 있다.
그러나, 이 기억용량의 증대는 상기 테이블의 용량의 증대로 연결되고, 그 결과, RAM의 용량과 용적의 증대를 초래한다.
예를들면, 기억장치의 기억용량을 1기가 바이트로 하고, 이 기억장치의 논리 블록의 사이즈를 16킬로 바이트로 하면, 이 기억장치에 논리 블록을 2^16개 구성할 수가 있고, 이 때문에 소정의 논리 블록을 특정하기 위한 어드레스는 16비트가 필요하게 된다. 즉 논리 어드레스를 플래시 메모리 내의 물리 어드레스로 변환하기 위한 테이블의 용량은 16비트×2^16=128킬로 바이트가 필요하게 된다.
또, 플레시 메모리 내에 효율 좋게 데이터를 기록하기 위한 처리는 상기와 같이 제안되어 있지만, 기록된 데이터에 대하여, 데이터의 판독수단 등이 고속으로 액세스하기 위한 데이터의 기록방법은 제안되어 있지 않다.
종래의 기록방법에 있어서는 예를들면 선두의 제 1 물리 블록으로 부터 제 5 물리 블록에 기록된 데이터 중, 제 5물리 블록에 기록된 데이터에 액세스하는 수순은 이하와 같이 되어 있다.
우선, 예를들면 데이터의 판독수단은 제 1 물리 블록을 판독하여, 이 제 1 물리 블록의 최종부분에 격납된 제 2 물리 블록의 어드레스를 취득하고, 다음에 제 2 물리 블록을 판독한다. 마찬가지로, 판독수단은 제 2 물리 블록, 제 3 물리 블록, 제 4 물리 블록에 유지되어 있는 제 5 물리 블록의 어드레스를 취득하고, 제 5 물리 블록에 액세스하도록 되어 있다. 따라서 제 5 물리 블록에 액세스 하기 위해서는 제 1 물리 블록으로부터 제 4 물리 블록을 판독할 필요가 있고, 이것이 액세스 타임의 증대의 원인으로 되고 있었다.
또, 데이터의 소거 단위가 물리 블록 단위인 플래시 메모리 등에 있어서는 무효한 데이터가 격납되어 있는 물리 블록의 데이터를 소거하면, 이 물리 블록에 격납되어 있는 유효한 데이터 까지도 소거하게 된다. 이 때문에, 예를들면 데이터의 소거수단은 유효한 데이터를 다른 기억매체에 퇴피시킨후, 이 물리 블록의 데이터를 소거하는 소위 말려들기 퇴피처리가 행해지고 있었다. 따라서, 데이터의 소거를 효율좋게 행하기 위해서는 말려들기 퇴피처리의 처리효율을 향상하는 것이 필요하게 된다.
본 발명은 이와 같은 과제를 감안해서 이루어진 것으로, 대용량의 기억매체를 콤팩트한 제어회로로 제어할 수 있고, 또 기록된 데이터에 고속 액세스가 가능한 기억장치를 제공하는 것을 목적으로 한다.
본 발명은 상기 목적을 달성하기 위하여 이하의 수단을 채용하고 있다. 즉 비휘발성 메모리를 구비한 기억장치의 RAM의 용량을 삭감하기 위하여, RAM에 설치된 제 1 테이블과 비휘발성 메모리에 설치된 제 2 테이블를 사용하여 논리 어드레스를 물리 어드레스로 변환하도록 되어 있다. 2개의 테이블을 사용하여 논리 어드 레스를 물리 어드레스로 변환함으로써, 제 1 테이블의 용량을 삭감할 수가 있다. 제 1 테이블의 용량을 삭감함으로써, RAM의 용량과 용적을 삭감할 수가 있다.
또, 본 발명의 기억장치는 데이터 블록으로 구성되는 논리 블록의 구성이나, 논리 블록의 판독 또는 소거를 효율좋게 행하기 위하여, 물리 블록 테이블, 논리 블록 테이블, 엔트리 카운터, 어드레스 레지스터를 구비한다.
물리 블록 테이블은 비휘발성 메모리의 데이터의 소거단위인 물리 블록이 사용중 물리 블록인가, 소거를 마친 물리 블록인가를 나타낸다. 어드레스 레지스터는 데이터의 기록대상이 되는 물리 블록을 나타낸다. 엔트리카운터는 어드레스 레지스터에 나타난 물리 블록에 기록된 데이터 양을 나타낸다. 엔트리카운터는 상기 물리 블록에 구성된 논리 블록의 데이터 양을 나타낸다. 논리 블록 테이블은 상기 논리 블록의 상항을 나타낸다.
예를들면, 기록수단은 소정의 논리 어드레스로 특정되는 논리 블록을 비휘발성 메모리에 구성할 때에, 논리 블록을 구성한 물리 블록을 사용중으로하여 물리 블록 테이블에 등록하고, 논리 블록을 구성한 기록단위에 의거하여 어드레스 레지스터를 갱신하고, 이 논리 블록의 데이터 양에 의거하여 엔트리 카운터를 갱신한다.
또, 기록수단은 비휘발성 메모리에 구성한 논리 블록에 판독수단 등이 고속으로 액세스할 수 있도록, 논리 블록을 구성하는 경우에, 논리 블록을 구성하는 기록단위중, 예를들면 대표 기록 단위로 다른 기록단위의 물리 어드레스를 특정하기 위한 연쇄정보를 기록한다. 기록단위란, 비휘발성 메모리에 있어서 데이터의 기록 단위이고, 논리 블록은 복수의 기록 단위에 걸쳐서 구성된다.
더욱이, 기록수단은 비휘발성 메모리에 구성한 논리 블록의 대표 기록 단위의 물리 어드레스를 특정하는 정보를 제 2 테이블에 등록한다.
판독수단은 소정의 논리 어드레스로 특정되는 논리 블록의 판독 요구가 있으면, 이 논리 어드레스를 사용하여, 상기 제 2 테이블에 등록된 정보를 판독하고, 대표 기록 단위의 물리 어드레스를 획득한다. 판독수단은 대표 기록 단위의 물리 어드레스를 얻으면 대표 기록 단위에 기록된 연쇄정보를 판독한다. 이 연쇄정보는 대표 기록 단위와 같은 논리 블록을 구성하는 다른 기록단위의 물리 어드레스이다. 판독 수단은 연쇄정보를 판독하여 다른 기록단위의 물리 어드레스를 획득한다. 판독수단은 다른 기록 단위의 물리 어드레스를 얻으면, 이 다른 기록 단위로 기록된 연쇄정보를 판독하여, 다른 기록단위의 물리 어드레스를 더 얻는다. 이와 같이하여 판독수단은 연쇄정보를 판독함으로써, 판독요구의 대상이 되는 논리 블록을 구성하는 모든 기록단위의 물리 어드레스를 얻을 수가 있다.
더욱이, 대표 기록 단위로 기록된 연쇄정보는 대표 기록 단위와 동일한 논리 블록을 구성하는 다른 모든 기록 단위의 물리 어드레스를 특정하기 위한 정보여도 된다. 이경우, 판독수단은 대표 기록 단위의 연쇄정보를 판독함으로써 판독요구의 대상이 되는 논리 블록을 구성하는 모든 기록단위의 물리 어드레스를 얻을 수가 있다.
판독수단은 상기와 같이 기록 단위의 물리 어드레스를 취득하면, 이 기록단위에 격납된 데이터를 판독한다.
또 소거수단은 이하와 같이하여 선택한 물리 블록에 격납된 데이터를 소거한다. 소거수단은 상기 물리 블록 테이블과 상기 논리 블록 테이블과 어드레스 레지스터 등을 참조하여, 유효한 논리 블록이 구성되어 있는 양이 적은 물리 블록을 파악한다. 그리고 소거수단은 이 물리 블록을 소거 물리 블록으로서, 이 소거 물리 블록에 구성된 유효한 논리 블록을 다른 물리 블록에 카피한다. 그리고 소거물리블록의 데이터를 소거한다. 이와같이하여 소거 물리 블록을 선택함으로써, 데이터를 소거하는 경우에 유효한 논리 블록을 카피하는 양이 적어지므로, 데이터의 소거를 신속히 행할 수가 있다.
이상 설명한 바와 같이, 본 발명의 기억장치는 상기 제 1 테이블과 제 2 테이블을 사용하여, 논리 어드레스를 물리 어드레스로 변환하기 때문에, RAM에 설치된 제 1 테이블(51)의 용량을 삭감할 수가 있다. 따라서, 소형으로 기억용량이 큰 기억장치을 실현할 수가 있다.
또, 본 발명의 기억장치는 논리 블록을 구성하는 소정의 기록 단위에 이 논리 블록을 구성하는 물리 어드레스를 연쇄정보로서 기록함으로써, 이 논리 블록을 구성하는 전체 기록 단위로 빠르게 액세스 할수가 있다.
물리 블록에 기록된 데이터의 상황을 판단하고, 데이터를 기록하는 기록 단위나 소거하는 물리 블록의 선택을 행하기 때문에, 데이터의 기록 또는 데이터의 소거를 효율좋게 행할 수가 있다. 재기록 테이블을 무효 테이블과 다른 물리 블록으로 기록하는 경우에만, 무효테이블의 플래그 영역의 값을 무효값으로 갱신하기 때문에, 기록처리를 고속으로 행할 수가 있다.
또, 물리 블록 테이블이 나타내는 불량 물리 블록의 사용상태를 유효상태로 함으로써 기록의 지연을 억제할 수가 있다. 그결과, 데이터 액세스의 고속화를 도모할 수가 있다. 더욱이, 불량 물리 블록에 대응하는 논리 블록에 대하여 논리 블록 테이블이 나타내는 상태를 유효상태로 함으로써, 소거의 지연을 억제할 수가 있다. 그결과 데이터 액세스의 고속화를 도모할 수가 있다.
도 1에 도시하는 바와 같이, 본 발명의 기억장치(1)는 비휘발성 메모리인 플래시 메모리(2)를 복수 구비한다. 그 플래시 메모리(2)는 도 2에 도시하는 바와 같이 복수의 물리 블록(B)으로 구성되어 있다. 상기 물리 블록(B)는 복수의 페이지(A)로 구성되어 있다. 플래시 메모리(2)에 있어서의 데이터의 기록 단위는 상기페이지(A)이고, 또 데이터의 소거단위는 상기 물리 블록(B)이다.
더욱이, 본 실시형태에서는, 플래시 메모리(2) 전체의 기억용량은 1기가바이트이고, 물리 블록(B)의 기억용량은 16킬로바이트이고, 페이지(A)의 기억용량은 512 바이트로서 설명하지만, 플래시 메모리(2), 물리 블록(B), 페이지(A)의 기억용량은 상기의 용량에 한정되는 것은 아니다.
(실시의 형태1)
<전원투입시에 관하여>
상기 기억장치(1)에 전원이 투입되면, 작성수단(510)에 구비된 물리 블록 테이블 작성수단(521)은, 기억장치(1)에 설치된 어드레스 제어부(5)의 RAM위에 상기 각 물리 블록(B)의 사용상태를 나타내는 물리 블록 테이블(52)을 작성한다. 여기서, 도 3에 물리 블록 테이블(52)의 작성수순의 일예를 도시하다.
우선, 상기 물리 블록 테이블 작성수단(521)은, 상기 물리 블록 테이블(52)의 값을 초기화한다(도 3, S301). 상기 물리 블록 테이블 작성수단(521)이 행하는 초기화의 방법으로서, 예를 들면 물리 블록 테이블(52)의 값을 전부, 소거를 마친 물리 블록을 나타내는 값으로 변경하는 방법이 있다.
계속해서, 상기 물리 블록 테이블 작성수단(521)은, 도 2에 도시하는 소정의 물리 블록(B)을 구성하는 소정의 페이지(A)를 참조하고, 이 소정의 물리 블록(B)의 상황을 확인한다(도 3, S302). 이 소정의 페이지란, 예를 들면 초기 상태의 물리 블록(B) 내에 처음으로 데이터가 기록되는 페이지(A)등을 가리킨다.
물리 블록(B)의 상황을 확인하기 위하여, 여기서는, 상기 물리 블록 테이블 작성수단(521)이, 소정의 물리 블록(B)에 불량이 있는가의 여부를 판단하는 불량 물리 블록 판단수단(522)으로서 동작한다. 즉, 상기 물리 블록 테이블 작성수단(521)은, 확인대상인 물리 블록(B)에 속하는 소정의 페이지(A)내의 정보를 확인하고, 이 물리 블록(B)가 상처등에 의하여 정상으로 데이터로 기록할수 없는 불량 물리 블록인가 여부를 판단한다(도 3, S 303).
예를 들면 확인대상인 물리 블록(B1)이 불량 물리 블록이 아니라고 판단하였을 때, 상기 물리 블록 테이블 작성수단(521)은, 이 확인 대상인 물리 블록(B1)내에 데이터가 격납되어 있는 페이지(A)가 있는가 여부를 판단한다(도 3, S304). 뒤이어, 데이터가 격납되어 있는 페이지(A)가 있다고 판단하였을 때, 상기 물리 블록 테이블 작성수단(521)은 확인 대상인 물리 블록(B1)의 사용상태가 사용중이라고 인식한다. 상기 물리 블록 테이블 작성수단(521)은, 이 확인대상인 물리 블록(B1)을 사용중 물리 블록으로서, 도 4에 도시하는 물리 블록 테이블(52)에 등록한다(도 3, S305). 데이터를 격납하고 있는 페이지(A)가 없다고 판단한 경우, 상기 물리 블록 테이블 작성수단(521)은, 확인 대상인 물리 블록(B1)의 사용상태는 소거를 마친것이라고 인식한다. 그리고, 이 확인 대상인 물리 블록(B)을 소거를 마친 물리 블록으로서, 상기 물리 블록 테이블(52)에 등록한다(도 3, S306).
상술한 바와같이 사용중 물리 블록 또는 소거를 마친 물리 블록을 물리 블록 테이블(52)에 등록하면, 상기 물리 블록 테이블 작성수단(521)은, 확인 대상인 물리 블록(B)이 최종의 물리 블록(B)인가 여부를 판단한다(도 3, S307). 그리고, 확인 대상인 물리 블록(B)가 최종의 물리 블록(B)이 아니라고 판단한 경우에는, 아직도 상황을 확인하지 않은 다른 물리 블록(B)의 상황 확인을 행한다(도 3, S302). 확인 대상인 물리 블록(B)이 최종의 물리 블록(B)이라고 판단하면, 물리 블록 테이블 작성수단(521)은 물리 블록 테이블(52)의 작성을 종료한다.
이와 같이하여, 예를 들면 도 4에 도시하는 바와 같은, 물리 블록 테이블(52)에 작성한다. 도 4에서는, 물리 블록 테이블 (52)에 의하여 물리 블록(B1, B2...)각각에 대하여 사용중 물리 블록인가 소거를 마친 물리 블록인가가 도시되어 있다.
더욱이, 확인 대상인 물리 블록(B)이 불량 물리 블록이라고 판단한 경우, 상기 불량 물리 블록 판단수단(522)은, 이 확인 대상인 물리 블록(B)을 사용중 물리 블록으로서, 상기 물리 블록 테이블(52)에 등록하는 것이 된다.(도 3, S308)
즉, 상기 불량 물리 블록 판단수단(522)에 의하여 물리 블록이 불량이라고 판단된 경우, 상기 물리 블록 테이블(52)이 나타내는 이 물리 블록(B)의 사용상태를 사용중에 설정하는 사용상태 설정수단(523)으로서도, 상기 물리 블록 테이블 작성 수단(521)을 동작시키는 것이다.
불량 물리 블록을 사용중 물리 블록으로서 물리 블록 테이블(52)에 설정하는 이유는, 후술하는 데이터의 기록처리시에, 기록수단(100)이, 상기 물리 블록 테이블(52)에 소거를 마친 물리 블록으로 등록되어 있는 물리 블록(B)을 데이터의 기록 대상인 물리 블록(B)으로서 선택하기 위해서이다. 만일, 불량 물리 블록이 소거를 마친 물리 블록으로서 물리 블록 테이블(52)에 설정되어있으면, 기록수단(100)은, 불량 물리 블록을 기록대상인 물리 블록(B)으로서 선택하는 경우가 있다. 이 경우, 기록수단(100)이, 이 불량 물리 블록(B)에 데이터를 기록할 수 없음을 인식한 다음, 기록 대상인 물리 블록(B)의 선택을 다시 하면 되지만, 그 만큼 기록 처리에 시간이 걸리고만다.
상술한 바와 같이, 불량 물리 블록을 사용중 물리 블록으로서 등록함으로써, 불량 물리 블록은 기록대상인 물리 블록(B)에서 제외되고, 그 결과 불량 물리 블록이 있는 것을 전제로해서 이용되는 비휘발성 메모리에 있어서도, 기록 처리의 시간을 단축할 수가 있다.
상기 기억장치(1)에 전원이 투입되면, 상기 물리 블록 테이블(52)외에, 상기 작성수단(510)에 구비된 논리 블록 테이블 작성수단(531)으로 논리 블록 테이 블(53)이 상기 어드레스 제어부(5)의 RAM 위에 작성된다. 논리 블록 테이블(531)의 작성은, 상기 물리 블록 테이블(52)의 작성과 동시에 행하여도 되고, 물리 블록 테이블(52)이 작성된 다음에 행하여도 되고, 물리 블록 테이블(52)을 작성하기전에 행하여도 된다.
논리 블록 테이블(53)은, 각 논리 블록(C)의 데이터가 유효상태('유효')에 있는가 무효상태('무효')에 있는가를 나타내는 테이블이다. 상기 논리 블록(C)는, 논리 어드레스가 나타내는 데이터 블록이고, 1이상의 물리 블록(B)에 걸쳐서 구성된다. 도 5는, 논리 블록 테이블 (53)의 작성수순의 일예를 나타내는 플도차트이다.
도 5에 도시하는 바와 같이, 논리 블록 테이블 작성수단(531)은, 우선 상기 논리 블록 테이블(53)을 초기화 한다(도 5, S501). 상기 논리 블록 테이블 작성수단(531)이 행하는 초기화의 방법으로서는, 예를 들면 논리 블록 테이블(53)의 값을 전부, '무효'를 나타내는 값으로 변경하는 방법이 있다.
계속해서, 상기 논리 블록 테이블 작성수단(531)은, 물리어드레스를 나타내는 비트열중 소정의 5비트가 '01000'인 페이지(A)의 관리영역(Ab)에 설치된 플래그 영역(90)의 값을 참조한다(도 5, S502). 더욱이, 상기 논리 블록 테이블 작성 수단(531)이, 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)에 설치된 플래그 영역(90)을 참조하는 이유는, 본 실시의 형태의 기억장치(1)에서는, 이 물리 어드레스의 페이지(A)에만 제 2 테이블(80)(상세한 것은 후술한다)이 격납되는 방법이 되어 있기 때문이다. 즉 상기논리 블록 테이블 작성수단(531)은, 상기 제 2 테이 블(80)을 격납할 수 있는 페이지(A)의 플래그 영역(90)만을 참조한다.
상기 플래그 영역(90)의 값은, 이 플래그 영역(90)과 같은 관리영역(Ab)에 격납된 제 2 테이블(80)이 유효한가 무효한가를 나타내는 관리정보이다, 또, 논리 블록 테이블의 작성처리의 고속화를 위하여, 상기 논리 블록 테이블 작성수단(531)은, 물리어드레스의 소정의 5비트가 '01000'의 페이지(A)의 플래그 영역(90)을 전부 참조할 필요는 없다. 예를 들면, 논리 블록 테이블 작성수단(531)은, 소정의 5비트가 '01000'이고, 또한 물리 블록 테이블(52)에 사용중 물리 블록으로서 등록되어 있는 물리 블록(B)에 속하는 페이지(A)의 플래그 영역(90)만을 참조하도록 하여도 된다.
상기 플래그영역(90)을 참조하면, 상기 논리 블록 테이블 작성수단(531)은, 상기 플래그 영역(90)의 값이 유효값인가 무효값인가를 판단한다(도 5, S503). 플래그 영역(90)의 값이 유효값이라고 판단하였을 때, 상기 논리 블록 테이블 작성수단(531)은, 이 제 2 테이블(80)에 등록된 제 2 물리어드레스(Ca)로 특정되는 논리 블록(C)를, 상기 논리 블록 테이블(53)에 '유효'로서 등록한다(도 5, S504). 이 제 2 물리어드레스(Ca)란, 논리 블록(C)을 구성하는 소정의 하나의 페이지(A)(대표페이지(a))의 물리 어드레스를 특정하기 위한 정보이다.
한편, 플래그 영역(90)의 값이 무효값이라고 판단하였을 때, 상기 논리 블록 테이블 작성수단(531)은, 이 제 2 테이블(80)에 등록된 제 2 물리어드레스(Ca)로 특정되는 논리 블록(C)을, 상기 논리 블록 테이블(53)에 '무효'로서 등록한다(도 5, S505).
상기 논리 블록 테이블 작성수단(531)은, 상기와 같이 '유효' 또는 '무효'를 상기 논리 블록테이블(53)에 등록하면, 참조할 모든 플래그 영역(90)을 참조 하였는가 여부를 판단한다(도 5, S506).
모든 플래그 영역(90)을 참조하고 있지 않다고 판단 한 경우에는, 상기 논리 블록 테이블 작성수단(531)은, 아직 참조하고 있지 않는 다른 플래그 영역(90)의 참조를 행한다(도 5, S502). 그리고, 상기 논리 블록 테이블 작성수단(531)은, 모든 플래그 영역(90)을 참조하였다고 판단할 때까지, 동일한 처리를 반복한다.
이와 같이하여, 도 6에 도시하는 바와 같은 논리 블록 테이블(53)이 작성된다. 상기 불량 물리 블록 중에는 상기 물리 블록 테이블(52)에 사용중 물리 블록으로서 등록되어 있는 불량 물리 블록이 있다. 이와 같은 불량 불리 블록에는 물리 어드레스의 소정 5비트가 '00000'인 페이지(후술하는 대표페이지(a))를 포함하고 있는 것이 있다. 논리블록 테이블 작성수단(531)은, 이와 같은 불량 물리 블록(B) 위에 구성되는 논리 블록(C)을 '유효'로서 상기 논리 블록 테이블(53)에 등록하는 것이 바람직하다.
즉, 상기 불량 물리 블록에 구성되어 있는 논리 블록(C)을 '유효'로서 상기 논리 블록 테이블(53)에 설정하는 유효상태 설정수단(532)으로서, 상기 논리 블록 테이블 작성수단(531)을 동작시키는 것이다.
이는, 후술하는 테이터의 소거처리에 있어서, 논리 블록 테이블(53)에 '유효'로서 등록되어 있는 논리 블록(C)이 구성된 수가 적은 물리 블록(B)이 데이터의 소거대상인 데이터로서 인정되는 경우가 있기 때문이다. 여기서, 데이터가 기록되 어 있지 않은 불량 물리 블록을 "유효"로서 등록함으로써, 불량 물리 블록이 소거 대상이 되지 않게 하기 위함이다.
이로서, 불량 물리 블록위에 구성되는 전체 논리 블록(C)은, 논리블록 테이블(53)에 '유효'로 등록되기 때문에, 이 불량 물리 블록은, 소거대상인 물리블록에서 제외된다. 그 결과, 필요없는 데이터의 소거를 막을 수 있다.
또, 물리 블록 테이블(52), 논리 블록 테이블(53)외에, 제 1 테이블(51)도 상기 어드레스 제어부(5)의 RAM위에 작성된다, 예를 들면 상기와 같이 물리 블록 테이블(52), 논리 블록테이블(53)이 작성되면, 작성수단(510)에 구비된, 제 1 테이블 작성수단(511)이, 제 1 테이블(51)의 작성을 개시한다, 여기서, 도 7은 상기 제 1 테이블(51)을 작성하는 작성수순의 일예를 나타내는 플로우차트이다.
우선 상기 제 1 테이블 작성수단(511)은, 상기 제 1 테이블(51)을 초기화하고(도 7, S701), 계속해서 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)의 플래그영역(90)을 참조한다. 더욱이 제 1 테이블 작성수단(511)도 상기 물리 블록 테이블(52)에 사용중 물리 블록으로 등록되어 있는 물리 블록(B)의 플래그영역(90)만을 참조하도록 하여도 된다.
플래그 영역(90)을 참조하면, 상기 제 1 테이블 작성수단(511)은, 플래그 영역(90)의 값이 유효값인가 무효값인가를 판단한다(도 7, S702). 플래그영역(90)이 유효값이라고 판단한 경우, 제 1 테이블 작성수단(511)은, 이 플래그 영역(90)이 속하는 페이지(A)의 물리 어드레스와 이 페이지(A)에 격납된 제 2 테이블(80)이 보유하는 식별번호를 취득한다(도 7, S703). 이 식별 번호는, 도 8에 도시하는 제 1 테이블(51)내의 하나의 영역(50)을 특정하기 위한 식별자이다. 본 실시의 형태에서는, 식별번호는 13비트의 비트열로 구성되어 있는 것으로 한다.
도 8에 도시하는 바와 같이, 상기 제 1 테이블 작성수단(511)은 취득한 식별 번호가 나타내는 영역(50)에, 제 2 테이블이 격납되어 있는 페이지(A)의 물리 어드레스의 소정 16비트를 제 1 물리 어드레서로서 등록한다(도 7, S704). 소정의 16비트에는, 제 2 테이블(80)을 격납할 수 있는 페이지(A)의 물리 어드레스에 공통하는 '01000'의 5비트는 포함되지 않는다. 이와 같은 소정의 16비트를 등록하는 이유는 다음에 설명한다. 본 실시의 형태의 비휘발성 메모리(2)는, 2^21개의 페이지(A)(1기가바이트/512 바이트)가 있고, 페이지(A)의 물리 어드레스는 21비트로 표현된다. 더욱 더 상술한 바와 같이 제 2 테이블(80)을 격납할수 있는 페이지(A)는, 물리 어드레스의 소정의 5비트가 '01000'이다. 이 때문에, 물리 어드레스의 소정의 16비트를 특정할 수 있으면, 비휘발성 메모리(2)내에 격납된 모든 제 2 테이블(80)로부터 소정의 하나의 제 2 테이블을 특정할수 있기 때문이다.
이와 같이, 제 2 테이블(80)이 격납할수 있는 페이지(A)를 미리 정해둠으로써, 제 1 테이블의 용량을 작게 할수가 있다. 더욱이, 물리 어드레서의 소정의 5비트가 '01000'인 페이지(A)가 제 2 테이블(80)을 격납하는 페이지(A)이라는 것은 기억장치(1)내의 ROM등의 메모리에 기억시켜 둔다. 본 실시 형태에서는, 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)가 제 2 테이블(80)을 격납하는 페이지(A)로 되어 있다. 그러나, 물리 어드레스의 소정의 5비트가 '01000'이외인 페이지(A)가 제 2 테이블(80)을 격납하도록 하여도 된다.
제 1 물리 어드레스를 등록하면, 상기 제 1 테이블 작성수단(511)은, 참조할 모든 플래그 영역(90)을 참조하였는가 여부를 판단한다.(도 7, S705). 모든 플래그 영역(90)을 참조하고 있지 않고 있다고 판단하였을 때, 제 1 테이블 작성수단(511)은, 아직 참조하고 있지 않는 다른 플래그 영역(90)의 참조를 행한다(도 7, S706). 그리고 모든 플래그 영역(90)을 참조하였다고 판단하기까지, 동일한 처리를 반복한다.
더욱 더, 본 실시의 형태에서는, 유효값을 나타내는 플래그 영역(90)과 대응하는 제 2 테이블(80)은, 비휘발성 메모리(2)내에 2^13개 격납되어 있으므로, 상기 영역(50)은 2^13개로 된다. 따라서 제 1 테이블 (51)의 용량을 16비트×2^13=16킬로바이트로 된다. 유효값을 나타내는 플래그 영역(90)과 대응하는 제 2 테이블이 2^13개인 이유는 후술한다.
한편, 플래그 영역(90)이 무효값이라고 판단하였을 경우, 상기 제 1 테이블 작성수단(511)은, 상기와 같이 물리 어드레스나 식별번호를 제 1 테이블(51)에 등록하지 않고, 수순(705)으로 이행한다.
이와 같이 하여, 물리 블록 테이블(52), 논리 블록 테이블(53), 제 1 테이블(51)이 작성되지만, 이들 테이블을 작성하는 순서는, 이미 설명한 순서에 한정되는 것은 아니고, 예를 들면 3개의 테이블을 동시에 작성하도록 하여도 된다.
또 상술한 설명에서는, 물리 블록 테이블(52), 논리 블록 테이블(53), 제 1 테이블(51)를 별개의 테이블 작성수단이 독립하여 작성하였지만, 이하와 같이하며, 각 테이블 작성수단이 연계하여 물리 블록 테이블(52), 논리 블록 테이블(53), 제 1 테이블(51)을 작성하여도 된다.
예를 들면, 상기 물리 블록 테이블 작성수단(521)이 물리 블록 테이블(52)을 작성함에 있어서, 물리 블록(B)내에 데이터가 격납되어있는가 여부를 판단하는경우에, 이 물리 블록(B)에 제 2 테이블(80)를 검지하는 경우가 있다. 이와 같이 상기 물리 블록 테이블 작성수단(521)이 제 2 테이블(80)을 검지하면, 순차로 상기 논리 블록 테이블 작성수단(531)과 상기 제 1 테이블 작성수단(511)이, 제 2 테이블(80)에 대응하는 플래그 영역(90)의 값이 유효값 또는 무효값인 것을 판단한다. 더욱이, 논리 블록 테이블 작성수단(531)은 플래그 영역(90)이 유효값을 나타내는 경우, 이 제 2 테이블(80)이 나타내는 제 2 물리 어드레스(Ca)로 특정되는 논리 블록(C)을 '유효'로 해서 논리 블록 테이블(53)에 등록한다. 한편, 제 1 테이블 작성수단(511)은 플래그 영역(90)이 유효값을 나타내는 경우, 이 제 2 테이블(80)에 격납되어 있는 페이지(A)의 물리 어드레스의 소정의 16비트를 이 제 2 테이블(80)이 보유하는 식별번호가 나타내는 영역(50)에 등록한다.
또 전원 투입시에, 상기 작성수단(510)에 있는 어드레스 레지스터 작성수단(551)이, 이하에 나타내는 방법으로, 상기 어드레스 제어부(5)의 RAM위에 도 9a에 도시하는 어드레스 레지스터(55)와 도 9b에 도시하는 카운터(54)를 작성하여도 된다.
우선, 어드레스 레지스터 작성수단(551)은 어드레스 레지스터(55)를 초기화한다. 그리고, 상기 물리 블록 테이블(52)을 참조해서, 소정수의 소거를 마친 물리 블록의 물리 어드레스를 어드레스 레지스터(55)에 등록한다.
물리 블록(B)의 물리 어드레스를 등록하면, 상기 어드레스 레지스터 작성수단(551)은, 도 9b에 도시한 바와 같이 어드레스 레지스터(55)에 등록한 각 물리 블록(B)의 데이터가 기록된 페이지수(즉, '0')를, 상기 RAM 상에 설치된 엔트리카운터(54)에 등록한다.
더욱이, 어드레스 레지스터(55)의 갱신 및 엔트리카운터 (54)에의 페이지 수의 등록은 전원투입시에 행하지 않고, 예를 들면 비휘발성 메모리(2)의 데이터의 기록처리시에 행하도록 하여도 된다. 또 이하의 설명에서는 엔트리 카운터(54)에는 데이터가 격납되어 있는 페이지수가 등록 되는 경우에 대하여 설명한다. 더욱이, 상기 어드레스 레지스터 작성수단(551)은 데이터가 격납되어 있지 않는 페이지수나, 각 물리 블록(B)에 구성된 논리 블록(C)의 수를 엔트리 카운터(54)에 등록하여도 된다.
<기록에 관하여>
상기 물리 블록 테이블(52), 논리 블록 테이블(53), 상기 제 1 테이블(51)이 작성되면, 상기 기억장치(1)는, 데이터 입출력 장치(7)로 부터의 데이터의 기록을 받아들일 수 있게 된다. 더욱이, 본 실시 형태에서는, 비휘발성 메모리(2)에 구성되는 논리 블록(C)은 16킬로바이트로 한다. 이 때문에, 이 비휘발성 메모리(2)에는 1기가 바이트/16킬로바이트=2^16개의 논리 블록(C)이 구성되게 되므로, 논리 블록(C)을 표현하는데는, 16비트의 정보가 필요하다. 여기서, 데이터 입출력장치(7)로 부터 기억장치(1)로의 데이터의 기록 요구는, 16킬로바이트의 데이터와 16비트의 논리 어드레스(S)로 구성 되게 된다.
상기 데이터 입출력장치(7)로부터 송신되는 기록요구는, 기억장치(1)에 구비된 입출력제어부(4)에서 수신된다.
데이터와 논리 어드레스(S)를 수신하면, 입출력제어부(4)는, 수신한 데이터를 기록 단위인 512 바이트 마다 32의 데이터블록으로 분할함과 동시에, 버퍼수단(31 내지 34)에, 8데이터 블록씩 전송한다. 입출력제어부(4)는, 수신한 기록요구에 포함되는 논리 어드레스(S)를 기억장치(1)에 설치된 기록수단(100)에 전송한다.
이 기록수단(100)은 논리 어드레스(S)을 수취하면, 기록대상이 되는 데이터로 구성하는 논리 블록(C1)을 어느 물리 블록(B)으로 구성하는가를 결정한다. 더욱이, 본 실시형태에서는, 상기 버퍼수단(31 내지 34)과 비휘발성 메모리(2)가 4개의 버스(D1 내지 D4)로 접속되어 있으므로, 상기 기록 수단(100)는 논리 블록(C1)을 4개의 물리 블록(B)에 걸쳐서 구성하게 한다.
우선 상기 기록 수단(100)은 4개의 물리 블록의 물리 어드레스를 어드레스 레지스터(55)에 등록한다. 4개의 물리 블록을 등록하는 것은 본 실시형태에서는 기록장치(1)에는 버스(D1 내지 D4)가 4개 구비되어 있기 때문이다. 예를들어 도 9a에 도시된 바와 같이, 상기 어드레스 레지스터(55)에 4개의 물리블록(B1 내지 B4)을 등록하면, 기록 수단(100)은 이들 물리블록(B1 내지 B4)을 기록후보 물리 블록으로서 결정한다(도 10, S1001). 물리 블록(B)의 물리 어드레스를 등록하면, 기록 수단(100)은 상기와 같이 도 9b에 도시된 바와 같이, 어드레스 레지스터(55)에 등록한 각 물리 블록(B)의 데이터가 기록된 페이지수(즉, '0')를 상기 엔트리 카운 터(54)에 등록한다. 이 때, 기록 수단(100)이 어드레스 레지스터 작성 수단(551)으로서 기능하게 된다.
또한, 어드레스 레지스터(55)에 물리 블록(B)가 사전에 등록되어 있는 경우, 기록 수단(100)은 사전에 기록되어 있는 물리 블록(B)을 기록 후보 물리 블록으로 결정한다.
다음에, 상기 기록수단(100)은, 상기 엔트리카운터(54)를 참조하여, 상기 기록 후보 물리 블록을 기록 블록으로하는가 여부를 결정한다(도 10, S1002). 여기서는, 기록 대상이 되는 32개의 데이터블록을 4개의 물리 블록(B)에 격납하기 때문에, 하나의 물리 블록(B)에는 8개의 데이터블록이 격납되게 된다. 그래서, 상기 기록수단(100)은, 상기 4개의 기록 후보 물리 블록과 대응하는 엔트리 카운터(54)의 값을 참조하고, 이 값이 24이하인가, 즉 8페이지 이상 데이터가 기록 되어있지 않는 페이지가 있는가 여부를 확인하다.
여기서는, 도 9b에 도시하는 바와 같이 물리 블록(B1 내지 B4)에 대응하는 엔트리카운터(54)의 값이 '8'로 되어 있으므로, 상기 기록수단(100)은, 상기 기록 후보 물리 블록(B1 내지 B4)을 기록 물리 블록(B1 내지 B4)이라고 결정한다.
더욱이, 기록 후보 물리 블록(B1 내지 B4)에 대응한 엔트리카운터(54)의 값이 25이상의 값을 유지하고 있는 경우, 상기 기록 수단(100)은, 이 기록 후보 물리 블록(B1 내지 B4)을 기록 불능 물리 블록이라고 결정한다. 계속하여, 상기 기록수단(101)은, 상기 물리 블록 테이블(52)를 참조하고, 여기서 결정한 기록 불능 물리 블록과 같은수의 소거를 마친 물리 블록(B)을 선택한다. 더욱이, 상기 기록수 단(100)은 여기서 선택한 소거를 마친 물리 블록을 기록 물리 블록으로 결정하고, 상기 물리 블록 테이블(52)에 사용중 물리 블록으로서 등록한다(도 10, S1003 내지 S1004). 더욱이, 상기 기록 수단(100)은, 여기서 상기 물리 블록 테이블(52)에 사용중 물리 블록으로서 등록한 기록 물리 블록의 물리 어드레스를 상기 어드레스 레지스터(55)에 등록한다(도 10, S1005).
더욱이, 어드레스 레지스터(55)에, 엔트리카운터(54)의 값이 25이상인 물리 블록(B)의 물리 어드레스가 유지되어 있는 것은 전회의 기록처리로 부터 금회의 기록 처리까지 사이에, 어드레스레지스터(55)의 갱신이 행해지지 않는 경우가 있기 때문이다. 즉, 어드레스 레지스터(55)가 갱신되지 않으면, 전회의 데이터의 기록에 의하여 전체 페이지(A)에 데이터가 기록된 물리 블록(B)의 물리 어드레스가, 상기 어드레스 레지스터(55)에 유지된 상태로 되기 때문이다.
이상과 같이, 상기 기록수단(100)은 4개의 기록 물리 블록을 결정하면, 엔트리카운터(54)를 참조하여, 논리 블록(C1)을 구성하는 데이터블록을 기록하는 기록 페이지를 각 기록 물리 블록으로부터 8페이지씩 선택한다(도 10, S1006). 더욱이, 본 실시형태에 있어서는, 상기 기록 수단(100)은, 물리 어드레스가 작은 페이지(A)부터 차례로 데이터를 기록하도록 되어있다. 이 때문에, 도 9b와 같이, 기록 물리 블록(B1 내지 B4)에 대응하는 엔트리카운터(54)의 값이 '8'로 되어 있는 경우, 물리 블록(B1 내지 B4)을 구성하는 페이지(A)중, 물리어드레스가 가장 작은 페이지(A)로부터 8번째로 작은 페이지(A)(도 12의 1점쇄선 L로 둘러쌓인 페이지)에 데이터가 기록되어 있게 된다.
여기서, 상기 기록수단(100)은 기록 물리 블록(B1 내지 B4)을 구성하는 페이지(A) 중, 물리 어드레스가 9번째로 작은 페이지(A)로 부터 16번째로 작은 페이지(A)를 기록페이지로서 결정하고, 결정한 기록 페이지의 물리 어드레스를 기억한다.
다음에, 상기 기록수단(100)은, 상기 데이터 입출력장치(7)로부터 데이터와 함께 전송된 논리 어드레스(S)의 소정비트(S1)(본 실시 형테에서는 상기와 같이 영역(50)이 2^13개 있으므로 위치 13비트)을 사용하여, 상기 제 1 테이블(51)중 하나의 영역(50)을 특정한다(도 10, S1007). 더욱이, 논리 어드레스 중 소정의 13비트, 예를들면 하위 13비트를 사용하여 하나의 영역(50)을 특정하여도 된다.
상기 기록수단(100)은, 특정한 영역(50)에 등록된 상기 제 1 물리 어드레스, 즉, 제 2 테이블(80)이 격납된 페이지(A)의 물리어드레스의 소정의 16비트를 판독하고, 이 판독한 물리 어드레스에 '01000'를 부가하여 제 2 테이블(80)이 격납된 페이지(A)의 물리 어드레스를 생성한다.
상기 기록수단(100)은, 제 2 테이블(80)이 격납된 페이지(A)의 물리 어드레스를 생성하면, 그 생성한 물리 어드레스의 페이지(A)에, 예를 들면 제 2 물리 어드레스 등의 물리 어드레스 등이 이미 격납되어 있는가 여부를 판단하다.(도 11, S1008).
상기 기록수단(100)은, 페이지(A)에 이미 데이터등이 격납되어 있다고 판단하면, 이 페이지(A)의 관리 영역(Ab)에 격납된 제 2 테이블(80)을 재기록 테이블로서, 버퍼(31 내지 34)등에서 판독함과 동시에, 이 페이지(A)에 격납된 제 2 테이 블(80)을 무효 테이블로서 인정한다(S11, S1009). 그리고 기록수단(100)은 논리 어드레스(S)의 다른 소정비트(S2), 여기서는 하위 3 비트를 사용하여, 판독한 재기록 테이블의 갱신영역(81)을 특정하고, 이 갱신 영역(81)에 제 2 물리어드레스(Ca)가 기록되어있는가 여부를 판단한다. 더욱이, 본 실시 형태에서는, 재기록 테이블(제 2 테이블80)은 8개의 갱신영역(81)으로 구성되어 있다. 8개의 갱신 영역(81)으로 구성되어 있는 이유는 후술한다.
제 2 물리 어드레스(Ca)가 갱신영역(81)에 기록되어 있는 경우에만, 상기 기록수단(100)은, 이 제 2 물리어드레스(Ca)에서 특정되는 논리 블록(C)을'무효'로서 상기 논리 블록 테이블(53)에 등록한다.
다음에, 상기기록수단(100)은 상기 특정한 갱신 영역(81)에 상기 기억한 기록 페이지를 대표하는 대표페이지의 물리 어드레스의 소정의 16비트를 제 2 물리 어드레스(Ca)로서 기록한다(도 11, S1010). 더욱이, 소정의 16비트만을 갱신영역(80)에 등록하는것은, 본 실시 형태에서는, 전체 대표페이지(a)의 물리 어드레스의 소정의 5비트가 '00000'이기 때문이다. 더욱이, 대표페이지(a)가 물리 어드레스의 소정의 5비트가 '00000'인 페이지(A)를 가리키는 뜻은, 상기 기록수단(100)이 미리 기억하고 있어도 되고, 기억장치(1)내의 ROM등의 메모리에 기억시켜 두어도 된다.
이와 같이, 재기록 테이블을 버퍼수단(31 내지 34)등에서 판독하여, 갱신 영역(81)을 재기록하는것은, 비휘발성메모리(2)에서는 데이터의 중복기록을 행할수 없기 때문이다.
이상과 같이, 갱신영역(81)에 제 2 물리어드레스(Ca)를 기록하면, 상기 기록수단(100)은, 버스(D1 내지 D4)를 사용하여 버퍼수단 31 내지 34에 있는 데이터블록을 기록 페이지의 데이터영역(Aa)에 기록한다. 또, 기록수단(100)은, 상기 재기록 테이블을 소정의 하나 또는 복수의 기록페이지의 관리영역(Ab)에 기록하고, 연쇄정보를 이하에 나타내는 바와 같이 1 또는 복수의 기록페이지의 관리 영역(Ab)에 기록한다(도 11, S1011). 이 연쇄 정보란, 판독수단(60)등이 논리 블록(C)을 구성하는 대표페이지(a)에 기록된 데이터를 판독함으로써, 이 논리 블록(C)을 구성하는 다른 기록페이지의 물리 어드레스를 획득하기 위한 정보이다.
예를들면 도 12에 도시하는 바와 같이, 논리 블록(C1)의 대표페이지(a)가 페이지(1)이라하면, 그 페이지 1의 관리영역(Ab)에는 논리 블록(C1)의 페이지(2)의 물리 어드레스가 연쇄정보로서 기록된다. 마찬가지로, 페이지(N)의 관리영역(Ab)에, 페이지(N+1)의 물리 어드레스를 나타내는 연쇄 정보를 격납하면, 후술하는 판독수단(60)은, 이 연쇄정보를 서치해 감으로써, 도 12에 도시하는 논리 블록(C1)을 구성하는 모든 페이지(2 내지 32)의 물리 어드레스를 얻을수가 있다.
다만, 이 경우, 판독수단(60)이, 페이지(20)의 물리어드레스를 획득하기위해서는, 페이지(1)로부터 페이지(19)에 격납된 연쇄정보를 판독할 필요가 생긴다. 따라서, 그 몫만큼 판독수단(60)의 페이지(20)에 대한 액세스 타임이 길어진다.
여기서, 그 액세스 타임을 짧게하기 위해서는, 예를 들면, 대표페이지(a)(페이지1)의 관리 영역(Ab)에, 페이지(2)로부터 페이지(32)까지의 물리어드레스를 연쇄정보로서 기록하도록 하여도 된다. 이와 같이하면 판독수단(60)은, 페이지(1)의 관리영역(Ab)에 격납된 연쇄정보를 판독하게 되고, 페이지(2)로부터 페이지(32)의 물리어드레스가 얻어진다. 그 결과, 각 페이지에 대한 액세스 타임이 짧아진다.
더욱이, 논리 블록(C1)을 구성하는 각 페이지(A)의 물리어드레스는, 예를 들면 이 논리 블록(C1)이 구성되는 각 물리 블록(B1 내지 B4)의 선두 페이지(1 내지 4)의 물리어드레스로부터 용이하게 얻을수가 있다. 페이지(20)의 물리어드레스를 획득하는것이라면, 페이지(4)의 물리어드레스에 4를 가산하면 된다. 이 때문에, 페이지(1)(대표페이지(a))의 관리영역(Ab)에, 페이지(2)로부터 페이지(32)까지의 물리어드레스를 연쇄정보로서 기록하는 대신에, 페이지(2)로부터 페이지(4)까지의 물리 어드레스를 연쇄정보로서 기록하도록 하여도 된다.
또, 상기 관리영역(Ab)에는, 연쇄정보 이외에도 예를 들면 제 2 테이블(80)이나 오류정정 정보등의 관리정보가 기록되는 경우가 있다. 그런데 관리영역(Ab)에는 그다지 큰 영역을 확보할수없기 때문에, 연쇄정보를 관리영역(Ab)에 격납해 버리면, 제 2 테이블을 당해 관리영역(Ab)에 격납할 수 없게 된다.
예를 들면 도 12에 도시하는 논리 블록(C1)을 구성하는 페이지(1 내지 32)중, 페이지 2,6,10,14,18,22,26,30의 관리영역(Ab)은, 제 2 테이블(80)을 격납할 수 있게 한다.
가령 기술한 바와 같이, 페이지 N의 관리영역(Ab)에, 페이지(N+1)의 물리어드레스를 나타내는 연쇄정보를 격납한다고하면, 제 2 테이블(80)을 격납한 페이지(2,6,10,14,18,22,26,30)의 관리영역(Ab)에도, 연쇄 정보를 기록하게 된다. 페이지(2,6,10,14,18,22,26,30)의 관리 영역(Ab)에 연쇄정보가 격납되면, 이 관리 영 역(Ab)에 제 2 테이블(8)을 격납하기 위한 용량을 확보할수 없는 경우가 생긴다. 그래서, 상기 기록수단(100)은, 관리영역(Ab)에 제 2 테이블(8)이 격납되어 있는 페이지 이외의 페이지(A)에 연쇄정보를 기록한다.
구체적으로, 페이지{(4k+3),K=0,1,2,...,7}의 물리어드레스를 나타내는 연쇄정보(C11)을, 제 2 테이블(8)이 있는 페이지(4k+2)가 아니고, 페이지(4k+1)의 관리영역(Ab)에 기록한다. 따라서, 페이지(4k+1)의 관리영역(Ab)에는, 도 12에 도시하는 바와 같이, 페이지(4k+2)의 물리어드레스를 나타내는 연쇄정보(C10)와 페이지(4k+3)의 물리 어드레스를 나타내는 연쇄정보(C11)와 기록되게 된다. 더욱더, 페이지(4k+4)의 물리 어드레스를 나타내는 연쇄정보(C12)를, 페이지(4k+3)의 관리영역(Ab)에, 페이지(4k+1)의 물리어드레스를 나타내는 연쇄정보(C13)를 페이지(4k+4)의 관리영역(Ab)에 기록한다.
이와 같이 연쇄 정보를 기록하면, 제 2 테이블(80)을 격납하는 관리영역(Ab)이외의 관리영역(Ab)에 연쇄정보를 격납할 수 있다.
더욱이, 페이지(N)의 관리영역(Ab)에, 페이지(N+1)의 물리 어드레스를 나타내는 연쇄정보를 격납한다고 하면, 판독수단(60)은 페이지(N)의 관리영역(Ab)를 참조함으로써, 페이지(N+1)의 페이지 물리 어드레스를 나타내는 연쇄정보가 얻어진다. 한편, 상술한 바와 같은 연쇄 정보의 기록을 행한 경우, 판독수단(60)은 제 2 테이블(80)이 있는 페이지(4k+2)의 관리영역(Ab)를 참조하더라도, 다음 페이지(4k+3)의 물리 어드레스를 나타내는 연쇄 정보를 얻을수 없다. 이 때문에, 판독수단(60)은, 페이지(4k+1)에 대하여 판독을 행할 때에, 연쇄정보(C10)뿐이아니고 모든 연쇄정보, 여기서는 연쇄정보(C11)도 판독해 두고, 연쇄정보(C11)를 유지하여 둔다. 그리고, 페이지(4k+2)에 대하여 판독을 행한 다음, 이미 유지되어 있는 연쇄정보(C11)을 사용하여 페이지(4k+3)의 물리 어드레스를 취득하면 된다.
또, 상술한 예에서는 도 12에 도시하는 바와 같이, 페이지(4k+1)의 관리영역(Ab)에, 연쇄정보(C10, C11)를 기록한, 페이지(4k+1)의 관리영역(Ab)에 연쇄정보(C12, C13)를 기록하여도 된다.
그러나, 관리정보에는, 오류 정정 정보등 그외에 없어서는 않될 것도 있기 때문에, 페이지(4k+1)의 관리영역(Ab)에 모든 연쇄정보(C10 내지 C13)를 기록하기 위한 용량을 확보할수 없거나 기록하는것이 적당하지 않는 경우가 있다. 그래서, 하나의 관리영역(Ab)에 기록되는 연쇄정보의 수를 미리 결정해둔다. 기록수단(100)은, 하나의 관리 영역(Ab)에 일정수의 연쇄정보를 기록하면, 아직 기록하지 않는 연쇄정보를 다른 페이지(A)의 관리영역(Ab)에 기록하도록 한다. 여기서의 소정수는, 하나의 논리 블록을 구성하는 페이지의 수의 방법등에 의거하여 정하면 된다.
데이터, 재기록테이블, 연쇄정보의 기록처리가 종료하면, 상기 기록수단(100)은, 재기록 테이블의 식별번호로 특정되는 영역(50)에, 그 재기록 테이블을 기록한 기록페이지의 물리 어드레스의 소정의 16비트를 제 1 물리 어드레스로서 기록한다(도 11, S1012). 다음에, 상기 기록수단(100)은, 상기에서 무효테이블이라고 인정한 제 2 테이블(80)이 격납된 페이지(A)의 플래그 영역(90)의 값을, 무효값으로 갱신한다(도 11, S1013).
상기에서는 비휘발성 메모리(2)의 데이터의 기록단위는 페이지(A)이라고 설명하였지만, 본 발명의 기억장치(1)에서는, 상기 플래그영역(90)은 동일 페이지 내의 다른 영역과는 독립해서 갱신될 수 있다. 즉, 데이터의 소거 후의 플래그영역(90)의 값이 '00'인 경우, '00'을 유효값으로 하고, 'FF'를 무효값으로 한다. 그리하면 상기 기록수단(100)은, 플래그영역(90)의 값을 다른 영역으로부터 독립하여 유효값에서 무효값(즉, '00'→'FF')으로 갱신할수 있게 된다. 더욱이 비휘발성 메모리(2)의 초기상태의 플래그영역(90)의 값이 'FF' 인 경우는, 'FF'을 유효값으로하고, '00'을 무효값으로 한다. 더욱이, 플래그영역(90)을 무효값으로 하는 처리는, 재기록 테이블을 버퍼수단(31 내지 34)등으로 판독함과 동시에 행하도록 하여도 된다.
이와 같이 무효 테이블의 플래그영역(90)의 값을 무효값으로 갱신하는 것은, 기억장치(1)의 전원이 끊어지고, 그 후 전원이 투입되었을 때, 상기 논리 블록 테이블 작성수단(531)이, 무효테이블에 등록되어 있는 제 2 물리어드레스(Ca)로 특정되는 논리 블록(C)까지도 논리 블록 테이블(531)에 '유효'로서 등록하기 때문이다. 또, 플래그영역(90)을 갱신하지 않으면 같은 식별번호를 보유하는 제 2 테이블(80)이 복수개 비휘발성 메모리(2)내에 존재하게 된다.
이 때문에 식별 번호가 같은 제 2 테이블(80)이 복수있으면, 상기 제 1 테이블 작성수단(511)에 등록하는 제 1 물리어드레스가 정해지지 않기 때문이다.
이와 같이, 무효값으로 갱신함으로써, 상기 갱신영역(81)의 재기록 후, 본 발명의 기억장치(1)의 전원이 끊기고, 그 후 전원이 투입되었을 때, 제 1 테이블 작성수단(511)은, 플래그영역(Ab)이 유효한 제 2 테이블(80)이 격납된 페이지(A)의 물리어드레스를 취득할 수 있다. 따라서, 제 1 테이블 작성수단(511)은, 유효한 제 2 테이블의 물리어드레스의 소정의 16비트를 제 1 물리어드레스로서 제 1 테이블(51)에 등록하게 된다.
상기 기록수단(100)은, 수순(S 1015)에서 플래그영역(90)의 값을 무효값으로 갱신하면, 상기 엔트리카운터(54)와 논리 블록 테이블(53)을 갱신한다(도 11, S1015).
엔트리카운터(54)의 갱신은, 예를들면, 상기 기록 물리 블록(B1 내지 B4)에 대응하는 엔트리카운터(54)가 보유하는 값에, 기록 페이지수를 더하는 것이다. 논리 블록 테이블(53)의 갱신은, 데이터를 기록한 대표페이지(a)가 속하는 논리 블록(C)를 '유효'로서 상기 논리 블록 테이블(53)에 등록하는 것이다.
또, 상기 기록 수단(100)은, 수순(S1008)에서 제 2 테이블(80)이 격납된 페이지(A)에 데이터가 격납되어 있지 않다고 판단한 경우, 상기와 같이 제 2 테이블을 재기록 데이터로서 버퍼(31 내지 34)에서 판독하지 않고, 수순(1010)으로 이행한다.
또, 상기 어드레스 레지스터(55)는, 예를들면, 기억장치(1)가 기록요구를 수신하였을때, 또는 소정의 주기로 어드레스 레지스터 작성수단(551)에서 갱신되게 되어있다. 그 갱신이란, 예를 들면, 어드레스 레지스터 작성수단(551)이, 소정의 물리 블록(B)에 대응하는 엔트리카운터(54)가 보유하는 값을 참조하고, 예를 들어 엔트리카운터(54)의 값이 32가 된 물리 블록(B)의 물리 어드레스를 어드레스레지스 터(55)로 부터 말소하는 것이다. 더욱이, 어드레스 레지스터(55)가 갱신되면, 엔트리카운터(54)의 값은, 어드레스 레지스터 작성수단(551)에서 자동적으로 0으로 갱신된다.
또, 전원 투입시에 관한 설명에 있어서, 상기 물리 블록 테이블 작성수단(521)이, 물리 블록이 불량인가 여부를 판단하였다. 상기 기록 수단(100)이 기록을 행하는 경우에도, 상기 기록수단(100)은, 기록 물리 블록이 불량블록인가 여부를 판단하여도 된다. 이 경우에는, 상기 기록수단(100)을, 상기 불량 물리 블록 판단수단(522), 상기 사용상태 설정수단(523), 상기 유효상태 설정수단(532)으로서 동작시킨다.
<데이터의 판독에 관하여>
상술과 같이, 본 발명의 기억장치(1)의 비휘발성 메모리(2)의 기억용량은, 1기가 바이트이고, 논리 블록(C)은 16킬로바이트이므로, 이 비휘발성 메모리(2)에는, 2^16개의 논리 블록(C)이 구성되게 된다. 그래서, 비휘발성 메모리(2)내에 구성된 하나의 논리 블록(C)을 표현하는데는 16비트의 정보가 필요하다.
이 때문에, 예를 들면, 상기 데이터 입출력 장치(7)로 부터 송신되는 데이터의 판독요구에는, 판독대상의 논리 블록(C)을 특정하기 위한 16비트의 논리 어드레스(S)가 포함된다.
예를들면 도 12에 도시하는 논리 블록(C1)의 판독요구가 상기 데이터 입출력 장치(7)로부터 기억장치(1)로 송신되면, 이 판독요구는, 상기 입출력 제어부(4)에서 수신되고, 그 입출력 제어부(4)는 판독 요구를 수신하면, 그 판독 요구를 판독 수단(60)에 전송한다.
상기 판독수단(60)은, 판독요구를 수취하면, 도 13에 도시하는 바와 같이 이 판독요구에 포함되는 논리 어드레스(S)의 상위 13비트(S1)을 사용하여, 상기 제 1 테이블(51)의 하나의 영역(50)을 특정한다(도 14, S1401).
상기 판독수단(60)은, 특정한 영역(50)에 등록된 제 1 물리어드레스 Tn(n: 0∼2^13-1)를 판독하고, 다시 판독한 제 1 물리어드레스에 '01000'를 부가하여, 제 2 테이블(80)이 격납된 페이지(A)의 물리 어드레스(Tn+0100)를 생성한다(도 14, S1402).
다음에, 판독수단(60)은, 상기 논리 어드레스의 하위 3비트(S2)를 사용하여 상기 생성한 물리어드레스의 페이지(A)에 격납된 제 2 테이블(80)의 하나의 갱신영역(81)을 특정한다(도 14, S1403). 판독수단(60)은, 여기서 특정한 갱신 영역(81)에 격납되어 있는 제 2 물리 어드레스(Can(n:0∼2^3-1))를 판독하고, 이 제 2 물리어드레스(Can)에 '00000'을 부가하여 대표페이지(a)의 물리어드레스(Can+00000)을 생성한다(도 14, S1404).
이와 같이 2개의 테이블을 사용하여 대표페이지(a)의 물리어드레스를 특정함으로써 이하에 나타내는 바와 같이 RAM에 설치되는 제 1 테이블(51)의 용량을 삭감할 수 있다.
예를 들면 상기와 같이 하나의 제 2 테이블(80)이, 8개의 갱신영역(81)으로 구성되어 있고, 8개의 제 2 물리어드레스(Ca)를 격납할수 있는 경우, 제 1 테이블(51)의 기억용량을 이하와 같이 된다.
하나의 제 2 테이블(8)로 8개의 대표페이지(a)에 대응하는 제 2 물리어드레스(Ca)를 등록할 수 있으므로, 2^16개의 대표페이지(a)를 특정하기 위해서 필요한 제 2 테이블의 수는 2^16/2^3=2^13개로 된다.
이로서, 제 2 테이블(80)을 특정하기 위한 제 1 테이블(51)은 2^13개의 제 1 물리어드레스를 보유하면 되고, 따라서 영역(50)은 2^13개 존재하게 된다. 따라서, 제 1 테이블(51)의 용량은 16비트×2^13=16킬로바이트가 된다.
한편, RAM에 설치된 테이블만으로 제 2 물리어드레스(Ca)를 특정하는 경우, 이 테이블은 2^16개의 제 2 물리어드레스(Ca)를 보유할 필요가 있다. 이 경우, 테이블의 용량은, 16비트×2^16=128킬로 바이트가 된다. 이와 같이하여, 본 발명의 기억장치(1)에서는, RAM의 용량의 삭감이 도모되고 있다.
논리 블록(C1)의 대표페이지(a) (도 12의 페이지1)의 물리 어드레스를 생성하면, 판독수단(60)은, 대표페이지(a)에 기록된 데이터와 연쇄정보(C10, C11)을 이 대표페이지(a)와 접속된 버스(D1)를 이용하여 버퍼(31)에서 판독한다(도 14, S1405)
다음에, 판독수단(60)은, 판독한 연쇄정보(C10, C11)를 참조하고, 이 연쇄정보(C10, C11)가 나타내는 물리어드레스의 페이지(A)에 격납된 데이터와 연쇄정보를 판독한다. 여기서는, 연쇄정보(C10)는 페이지(2), 연쇄정보(C11)는 페이지(3)의 물리어드레스를 나타내고 있기 때문에, 판독수단(60)은, 페이지2, 페이지3에 격납된 데이터와 연쇄정보를 버스(D2), 버스(D3)을 사용하여, 버퍼(32,33)에서 판독한다.
여기서 판독수단(60)은, 페이지(2), 페이지(3)에 격납된 데이터와 연쇄정보를 2개의 버스(D2, D3)를 이용하여 판독할수 있으므로, 판독처리를 신속히 행할수가 있다. 또, (4k+1)페이지의 관리영역(Ab)에 연쇄정보(C10,C11,C12,C13)가 격납되어 있는 경우, 판독수단(60)은 4개의 버스(D1 내지 D4)를 이용하여 페이지((4k+1), (4k+2), (4k+3), (4k+4))에 격납된 데이터와 연쇄정보를 동시에 버퍼(31 내지 34)로 판독할수가 있다.
이와 같이 판독수단(60)은, 연쇄정보가 나타내는 물리어드레스의 페이지(A)에 격납된 데이터와 연쇄정보의 판독처리를 행하고, 논리 블록의 마지막 페이지까지 상기 처리를 행한다.
버퍼(31 내지 34)에 데이터를 판독하면 판독수단(60)은, 이 데이터를 상기 입출력 제어부(4)를 통하여, 예를 들면 상기 데이터 입출력장치(7)로 송신한다(14, S1406).
또, 상기 판독 요구에는, 논리 블록(C1)의 예를들면 페이지(20)에 격납된 데이터 보다도 페이지 번호가 큰 데이터만을 판독하는 것을 지시하는 두출(頭出)요구가 있다. 이 두출요구에는, 상기 논리어드레스(S)와, 두출요구의 대상이 되는 데이터의 선두의 논리 어드레스를 나타내는 5비트의 논리 어드레스(이하,「두출어드레스」라함)이 조합되어 있다.
상기 데이터 입출력장치(7)로부터 기억장치(1)에 두출요구가 송신되면, 상기 입출력제어부(4)는 이 두출요구를 수신하고, 상기 판독수단(60)에 이 두출요구에 포함되는 논리어드레스(S)와 두출 어드레스를 전송한다.
상기 판독수단(60)은, 논리어드레스(S)와 두출어드레스를 수신하면, 이 두출 어드레스가 몇 페이지째의 데이터를 나타내고 있는가를 판단한다. 다음에, 판독수단(60)은, 논리어드레스(S)를 사용하여, 상기와 같이 대표페이지(a)의 물리 어드레스를 특정한다. 대표페이지(a)의 물리어드레스를 특정하면, 판독수단(60)은 연쇄정보를 사용하여 두출어드레스가 나타내고 있는 페이지(여기서는, 페이지20)보다도 큰 페이지에 기록된 데이터를 판독한다. 이와 같이 판독수단(60)이 두출요구의 판독의 대상이 되는 데이터에 액세스하는 경우에도 연쇄정보를 사용할 수 있다.
그런데, 상기 제 2 테이블(80)은, 복수의 페이지(A)에 걸쳐서 구성되어 있어도 된다. 예를 들면, 제 2 테이블(80)은, 물리 어드레스가 연속하는 4페이지에 걸쳐서 구성되도록 하여도 된다. 또, 제 2 테이블(80)이 4페이지에 걸쳐서 구성되어 있는 경우, 이 4페이지 중, 소정의 하나의 페이지에 해당 제 2 테이블(80)의 유효 또는 무효를 나타내는 플래그 영역(90)을 설치하도록 한다.
(소거에 관하여)
상기와 같이, 소정의 주기로 기록처리가 행해지면, 상기 비휘발성 메모리(2)에는, 유효한 데이터와 무효한 테이터가 격납된 물리 블록(B)이 다수 존재하게 된다. 비휘발성메모리의 데이터의 소거단위는 물리 블록(B)이기 때문에, 이와 같은 물리 블록(B)에 격납된 무효한 데이터를 소거하려고 하면, 이 물리 블록(B)에 격납된 유효한 데이터도 소거하여야 한다.
이와 같은 상황에서, 유효한 데이터를 소거하지 않고 효율좋게 무효한 데이터만을 소거하고, 비휘발성메모리(2)의 자유공간 용량을 늘리기 위해서는, 이하와 같이 데이터의 소거를 행한다.
소거수단(70)은, 우선 상기 물리 블록 테이블(52)을 참조하고, 상기 물리 블록 테이블(52)에 사용중 물리 블록으로서 등록된 물리 블록(B)에 구성되어 있는 논리 블록의 상태를 상기 논리 블록 테이블(53)을 참조하여 조사한다(도 15, S1501).
소거수단(70)은, 상기 물리블록(52)에 사용중물리 블록으로서 등록된 물리블록(B)중, 논리 블록 테이블(53)에 '유효'로서 등록되어 있는 유효 논리 블록이 2이상 밖에 구성되어 있지 않은 물리 블록(B)를 소거 물리 블록이라고 결정한다(도 15, S1502).
상기 소거 수단(70)은 소거 물리 블록에 구성된 유효 물리 블록(C)에 대응하는 대표 페이지(a)에 격납된 연쇄정보를 이용해서, 이 유효 물리 블록(C)(이하「유효 물리 블록」이라 함)이 어느 물리 블록에 구성되어 있는가를 파악한다(도 15, S1503).
계속해서, 상기 소거수단(70)은, 소거물리블록에 구성된 유효 논리블록(C) 전체(일부가 소거물리블록에 구성되어 있는 유효 논리 블록(C)도 포함함)를 퇴피데이터로서 버퍼(31 내지 34)에서 판독한다. 더욱이, 퇴피데이터에는, 그 퇴피데이터에 포함되는 유효 논리 블록(C)의 대표페이지(a)의 물리어드레스를 특정하는 제 2 물리어드레스가 등록된 제 2 테이블(80)도 포함된다.
퇴피데이터를 판독하면, 소거수단(70)은, 상기 기록수단(100)에 이 퇴피데이터를 버퍼(31 내지 34)로 판독한 뜻을 통지한다.
여기서, 기록수단(100)은, 데이터 입출력장치(7)로부터 송신된 데이터의 기 록 페이지의 선택과 동일한 방법으로, 퇴피데이터를 기록하는 기록 페이지를 선택한다(도 15, S1504). 기록 페이지를 선택하면, 기록수단(100)은, 기록페이지의 물리 어드레스에 의거하여, 퇴피데이터에 격납되어 있는 연쇄정보를 재기록한다(도 15, S1505). 예를들면, 버퍼(31 내지 34)에 판독된 논리 블록(C)의 대표페이지의 관리영역(Ab)에, 기록 페이지의 전체의 물리어드레스를 기록해둔다. 연쇄정보를 재기록하면, 기록수단(100)은, 버퍼(31 내지 34)에 판독된 퇴피데이터를 기록페이지에 기록한다(도 15, S1506). 또, 상기 기록수단(100)은, 퇴피데이터에 포함되는 제 2 테이블(80)을, 퇴피데이터의 기록 페이지 중, 물리어드레스의 소정의 5비트가 '01000'인 페이지(A)에 기록한다. 상기 기록수단(100)은, 이 제 2 테이블(80)의 식별번호에 의거하여 특정되는 영역(50)을, 이 제 2 테이블(80)을 기록한 페이지(A)의 물리어드레스의 소정의 16비트로 갱신한다.
상기 기록수단(100)은 퇴피데이터를 기록하면, 데이터 입출력장치(7)로부터 기록요구가 있었던 경우와 동일하게, 엔트리카운터(54)와, 논리 블록 테이블(53)을 갱신한다. 엔트리카운터(54)와 논리 블록 테이블(53)을 갱신하면, 상기 기록수단(100)은, 상기 소거수단(70)에 퇴피데이터를 기록한 뜻을 통지한다.
상기 소거수단(70)은, 그 통지를 받으면 상기 소거물리블록에 격납되어 있는 데이터를 소거함과 동시에 상기 소거물리블록을 소거를 마친 물리 블록으로서 상기 물리 블록 테이블(52)에 등록한다(도 15, S1507).
상기에서는, 소거물리블록을 결정하는 조건으로서, ① 상기 물리 블록 테이블(52)에 사용중 물리 블록으로 등록되어 있을 것 ②유효논리 블록이 2이하 밖에 구성되어 있지 않을 것으로 하였지만, 예를 들면 이 조건에 어드레스 레지스터(55)에 물리어드레스가 보유되어 있지 않을 것을 추가하여도 된다. 또, 상기 조건은, 상기와 같은 경우에 한하지 않고, 유효 논리 블록이 1이하 밖에 구성되어 있지 않을 것이라는 조건일지라도 상관없다. 이와 같이, 무효한 데이터가 많이 격납되어 있는 물리 블록(B)을 상기 소거물리블록으로함으로써, 상기 소거수단(70)은 소량의 데이터를 버퍼(31 내지 34)로 판독하면 양호하게 된다.
더욱이, 무효한 데이터의 소거의 타이밍은, 한정되는 것은 아니고, 예를들면, 소정의 주기로 자동적으로 소거수단(70)이 행하도록 하여도 된다.
더욱이, 전원 투입시에 관한 설명에 있어서 상기 물리 블록 테이블 작성수단(521)이, 물리 블록이 불량인가 여부를 판단하였다. 상기 소거수단(70)이 소거를 행하는 경우에도, 상기 소거수단(70)은, 소거 대상인 물리 블록이 불량블록인가 여부를 판단하여도 된다. 이 경우에는, 상기 소거수단(70)을, 상기 불량 물리 블록 판단수단(522), 상기 사용상태 설정수단(523), 상기 유효 상태 설정수단(532)로서 동작시킨다.
(실시형태 2)
상기 기록수단(100)은, 상기에서 무효 테이블로 인정한 제 2 테이블(80)이 격납된 페이지(A)의 플래그 영역(90)의 값을 무효값으로 갱신하는 처리를 행하고 있다. 그러나, 기록처리를 될수 있는데로 고속으로 행하기 위해서는, 이와 같은 처리를 생략하여야 한다.
여기서, 상기 기록수단(100)은 버퍼(31 내지 34)에 판독한 재기록 테이블을 기록하는 페이지(A)를 이하와 같이 결정하고, 결정한 페이지(A)에 제 2 테이블(80)를 카피함으로써 상기 처리를 생략한다.
우선, 기록수단(100)은 무효 테이블과 같은 물리 블록(B)내의 페이지(A)에, 무효 테이블이 격납되어 있는 페이지(A)보다 물리 어드레스가 크고, 또한 물리 어드레스의 소정의 5비트가 '01000'이고, 데이터를 기록할 수 있을 것이라는 조건을 만족하는 페이지(A)가 있는가를 판단한다. 소정의 5비트가 '01000'이라는 조건은, 본 실시형태에서 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)만 상기 제 2 테이블(80)을 격납할 수 있기 때문이다. 이 조건을 만족하는 페이지(A)가 있는 경우, 상기 기록수단(100)은 이 조건을 만족하는 페이지 중, 물리 어드레스가 가장 작은 페이지(A)를 재기록 테이블을 격납하는 페이지(A)로서 결정한다. 상기 기록수단(100)은 이와같이 결정한 페이지(A)에 재기록 테이블을 격납할 때에, 무효 테이블의 플래그 영역(90)의 값을 무효를 나타내는 값으로 갱신하는 처리는 행하지 않도록 한다.
상기 조건을 만족하는 페이지(A)가 없는 경우, 상기 기록수단(100)은 무효 테이블이 격납되어 있는 물리 블록(B) 이외의 소정의 물리 블록(B)에 속하고, 또한, 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)중, 가장 물리 어드레스가 작은 페이지(A)를 재기록 데이터의 기록 페이지로서 결정한다. 이와같이 결정한 페이지(A)에 재기록 테이블을 격납할 때에는, 기록수단(100)은 실시형태(1)과 마찬가지로 무효 테이블의 플래그 영역(90)의 값을 무효값으로 갱신한다.
이상과 같이 기록수단(100)이 재기록 테이블을 기록하는 페이지(A)를 결정하 였을 때, 상기 논리 블록 테이블 작성수단(531), 제 1 테이블 작성수단(511)은 이하와 같이하여 논리 블록 테이블(53), 제 1 테이블(51)을 작성한다.
기억장치(1)에 전원이 투입되면, 상기 논리 블록 테이블 작성수단(531)은 우선 상기 논리 블록 테이블(53)을 초기화한다(도 16, S1601). 계속하여, 상기 논리 블록 테이블 작성수단(531)은 각 물리 블록(B)에 있어서, 이하와 같은 처리를 행한다.
상기 논리 블록 테이블 작성수단(531)은 물리 어드레스의 하위 5비트가 '01000'인 페이지(A)를 검출 대상 페이지로서 인식한다. 다음에, 상기 논리 블록 테이블 작성수단(531)은 이 검출 대상 페이지 중, 물리 어드레스가 큰 검출 대상 페이지로 부터 순서로 플래그 영역(90)의 값을 참조하고, 플래그 영역(90)의 값이 유효값인 검출 대상 페이지의 검출을 행한다(도 16, S1602). 상기 논리 블록 테이블 작성 수단(531)은 이 검출 처리에 있어서, 처음에 검출 대상 페이지를 검출하였을 때, 수순(1603)을 행하지 않고, 이 검출 대상 페이지에 격납된 제 2 테이블(80)에 등록되어 있는 제 2 물리 어드레스를 참조한다. 상기 논리 블록 테이블 작성 수단(531)은 제 2 테이블(80)에 등록되어 있는 제 2 물리 어드레스에 특정되는 논리 블록(C)를 '유효'로서 상기 물리 블록 테이블(53)에 등록한다(도 16, S1604). 그리고, 논리 블록 테이블 작성 수단(531)은 처음에 검출한 제 2 테이블(80)이 보유하는 식별 번호를 메모리(535)에 기억한다(도 16, S1605).
'유효'로서 등록하면, 논리 블록 테이블 작성수단(531)은 상기 처음에 검출한 검출 대상 페이지 보다 물리 어드레스가 작은 검출 대상 페이지중, 물리 어드레 스가 큰 페이지부터 순서대로 플래그 영역(90)의 값을 참조하고, 그 값이 유효값의 검출 대상 페이지의 검출을 행한다. 플래그 영역(90)의 값이 유효값인 검출 대상 페이지를 검출하면, 논리 블록 테이블 작성수단(531)은 이 페이지(A)에 격납된 제 2 테이블(80)에 보유되어 있는 식별번호와 상기 메모리(535)에 기억되어 있는 식별번호가 동일한가 여부를 판단한다(도 16, S1603 내지 S1604).
동일하지 않다고 판단하면, 상기 논리 블록 테이블 작성수단(531)은 이 제 2 테이블(80)에 등록된 제 2 물리 어드레스(Ca)로 특정되는 논리 블록(C)를 '유효'로서 논리 블록 테이블(53)에 등록하고, 이 제 2 테이블(80)에 보유되어 있는 식별번호를 상기 메모리(535)에 기억한다(도 16, S1605). 동일하다고 판단하면, 상기 논리 블록 테이블 작성수단(531)은 이 제 2 테이블(80)에 등록된 제 2 물리 어드레스(Ca)로 특정되는 논리 블록(C)을 논리 블록 테이블(53)에 등록하지 않고, 상기 플래그 영역(90)의 값이 유효값인 검출 대상 페이지의 검출을 재개한다.
이와같이하여, 상기 논리 블록 테이블 작성수단(53)은, 상기 메모리(535)에 기억되어 있지 않는 식별번호를 보유하는 제 2 테이블에 등록된 제 2 물리 어드레스(Ca)로 특정되는 논리 블록(C) 만을 상기 논리 블록 테이블(53)에 '유효'로서 등록한다.
상기 논리 블록 테이블 작성수단(531)은 소정의 물리 블록(B)의 전체 검출 대상 페이지의 플래그 영역(90)의 참조를 행하면(도 16, S1606), 상기 메모리(535)를 초기화하고, 아직 검출 대상 페이지의 참조를 행하고 있지 않는 물리 블록(B)에 대하여 이 검출처리을 행한다(도 16, S1607∼S1608).
또, 상기 제 1 테이블 작성수단(511)은 전원이 투입되면, 상기 제 1 테이블(51)을 초기화하고 (도 17, S1701), 상기 논리 블록 테이블 작성수단(531)과 동일하게, 각 물리 블록(B)에 대하여 이하와 같은 처리를 행한다.
상기 제 1 테이블 작성수단(511)은 소정의 물리 블록(B)의 검출 대상 페이지중, 물리 어드레스가 큰 페이지(A)로부터 순서로 플래그 영역(90)의 값을 참조한다(도 17, S1702). 상기 제 1 테이블 작성 수단(511)은 이 검출 처리에 있어서, 처음에 검출대상 페이지를 검출하였을 때는, 수순(1703)을 행하지 않고, 수순(1704)로 이행한다. 즉, 이 검출 수단 페이지에 격납된 제 2 테이블(80)이 유지되는 식별 번호에 나타나 있는 영역(50)에, 이 검출대상 페이지의 물리 어드레스의 소정의 16비트를 제 1 물리 어드레스로서 등록한다(도 17 S1704).
제 1 물리 어드레스를 등록하면, 제 1 테이블 작성수단(511)은 상기 처음에 검출한 검출 대상 페이지 보다 물리 어드레스가 작은 검출 대상 페이지 중, 물리 어드레스가 큰 검출 대상 페이지로부터 순서대로 플래그 영역(90)의 값을 참조하고, 이 값이 유효값의 검출 대상 페이지의 검출을 행한다. 플래그 영역(90)의 값이 유효값인 검출 대상 페이지를 검출하면, 제 1 테이블 작성수단(511)는 이 검출 대상 페이지에 격납된 제 2 테이블(80)에 보유되어 있는 식별번호와 상기 메모리(515)에 기억되어 있는 식별번호가 동일한가 여부를 판단한다(도 17, S1703 내지 S1704).
동일하지 않다고 판단하면, 제 1 테이블 작성수단(511)은 이 제 2 테이블(80)이 격납되어 있는 검출 대상 페이지의 물리 어드레스의 소정의 16비트를 제 1 물리 어드레스로서, 이 제 2 테이블(80)이 보유하는 식별번호로 표시되는 영역(50)에 등록한다. 그리고, 제 1 테이블 작성수단(511)은 처음에 검출한 제 2 테이블(80)이 유지하는 식별번호를 메모리(515)에 기억한다(도 17, S1705). 동일하다고 판단하면, 제 1 테이블 작성수단(511)은 검출 대상 페이지의 물리 어드레스의 소정의 16비트(제 1 물리 어드레스)를 이 제 2 테이블(80)에 보유되어 있는 식별번호로 표시되는 영역(50)에 등록하지 않는다.
이와같이하여, 상기 제 1 테이블 작성수단(511)은 상기 메모리(515)에 기억되어 있지 않는 식별번호를 보유하는 제 2 테이블(80)이 격납된 검출 대상 페이지의 물리 어드레스의 소정의 16비트를 제 1 물리 어드레스로서 이 식별번호로 표시되는 영역(50)에 등록한다.
상기 제 1 테이블 작성수단(511)은 소정의 물리 블록(B)의 전체 검출 대상 페이지의 참조를 행하면(도 17, S1706), 상기 메모리(515)를 초기화하고, 아직 검출 대상 페이지의 참조를 하고 있지 않는 소정의 물리 블록(B)의 검출 대상 페이지의 참조를 행하고 있지 않는 물리 블록(B)에 대하여 이 검출처리를 행한다(도 17, S1707∼S1708).
이상과 같이하여, 상기 논리 블록 테이블 작성수단(531)은 논리 블록 테이블(53)을 작성하고, 상기 제 1 테이블 작성수단(511)은 제 1 테이블(51)을 작성함으로써, 무효 테이블이 격납되어 있는 물리 블록(B)과 같은 물리 블록(B)로 재기록 테이블을 기록할 때에 무효 테이블과 대응하는 플래그 영역(90)의 값을 무효로 갱신하지 않더라도 논리 블록 테이블(53)과 제 1 테이블(51)을 작성할 수가 있다.
더욱이, 상기 조건은 기록수단은 예를들면 무효 테이블과 같은 물리 블록(B)내의 페이지(A)에, 무효 테이블이 격납되어 있는 페이지(A)보다 물리 어드레스가 작고, 또한 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)가 있는 경우, 그 페이지(A)에 재기록 데이터를 기록하여도 된다. 그 경우, 상기 기록수단은 이 조건을 만족하는 페이지가 없는 경우, 무효 테이블이 격납되어 있는 물리 블록(B) 이외의 소정의 물리 블록(B)에 속하고, 또한 물리 어드레스의 소정의 5비트가 '01000'인 페이지(A)중, 가장 물리 어드레스가 큰 페이지(A)로 재기록 데이터를 기록하는 페이지로서 결정한다.
이와같은 조건하에 재기록 데이터를 기록하는 페이지가 결정되었을 때는 상기 논리 블록 테이블 작성수단(531), 제 1 테이블 작성수단(511)은 물리 어드레스가 가장 작은 검출 대상 페이지로 부터 순서로 플래그 영역(90)의 참조를 행하도록 한다.
도 1은 기억장치의 개략 블록도,
도 2는 비휘발성 메모리의 구성을 도시한 도면,
도 3은 물리 블록 테이블의 작성 수순의 구체예를 도시한 플로우차트,
도 4는 물리 블록 테이블를 도시한 도면,
도 5는 논리 블록 테이블의 작성 수순의 구체예를 도시한 플로우차트,
도 6은 논리 블록 테이블를 도시한 도면,
도 7은 제 1 테이블을 작성하는 수순의 구체예를 도시한 플로우차트,
도 8은 제 1 테이블를 도시한 도면,
도 9는 어드레스 레지스터와 엔트리 카운터를 도시한 도면,
도 10은 데이터 기록의 수순을 도시한 플로우차트,
도 11은 데이터 기록의 수순을 도시한 플로우차트,
도 12는 플래시 메모리에 연쇄정보를 기록한 구체예를 도시한 도면,
도 13은 대표페이지의 물리 어드레스를 취득하는 수순을 도시한 개념도,
도 14는 데이터의 판독 수순을 도시한 플로우차트,
도 15는 데이터의 소거 수순을 도시한 플로우차트,
도 16은 논리 블록 테이블의 작성 수순의 구체예를 도시한 플로우차트,
도 17은 제 1 테이블의 작성수순의 구체예를 도시한 플로우차트.
(도면의 주요부분에 대한 부호의 설명)
1: 기억장치 2: 비휘발성 메모리
80: 제 2 테이블 51: 제 1 테이블
52: 물리 블록 테이블 53: 논리 블록 테이블
54: 엔트리 카운터 55: 어드레스 레지스터
60: 판독수단 70: 소거수단
100: 기록수단 511: 제 1 테이블 작성수단
521: 물리 블록 테이블 작성수단 522: 불량 물리 블록 판단수단
523: 사용상태 설정수단 531: 논리 블록 테이블 작성수단
532: 유효상태 설정수단

Claims (8)

  1. 소거단위인 물리 블록을 복수 개 포함하는 1 이상의 비휘발성 메모리와,
    상기 비휘발성 메모리로부터 선택한 상기 물리 블록으로서 병렬로 액세스 가능하게 구성된 복수의 물리 블록을 기록 물리 블록군으로 하고, 상기 기록 물리 블록군을 상기 복수의 물리 블록에 걸쳐 소정 페이지 수마다 분할한 단위영역을 논리 블록으로서 관리하고, 상기 논리 블록에 논리 어드레스를 할당하는 논리 블록 관리수단과,
    상기 논리 어드레스에 의거하여 상기 논리 블록의 기억 위치를 특정하는 어드레스 제어수단과,
    상기 어드레스 제어수단의 특정에 따라서 상기 비휘발성 메모리에 대해 데이터의 기록/판독을 행하는 데이터 기록/판독수단을 구비하고,
    상기 어드레스 제어수단은,
    상기 데이터 기록/판독수단에 의한 데이터의 기록에 있어서 상기 기록 물리 블록군의 물리 어드레스의 작은 페이지로부터 상기 단위영역마다 데이터를 기록하도록 어드레스를 결정하는 것을 특징으로 하는 기억장치.
  2. 제 1 항에 있어서, 상기 논리 블록 관리수단은,
    상기 논리 블록 단위로 데이터의 유효무효를 관리하고, 그 유효무효의 결과를 보유하는 보유수단을 갖는 것을 특징으로 하는 기억장치.
  3. 제 2 항에 있어서, 상기 논리 블록 관리수단은,
    상기 보유수단에서 보유된 유효무효의 결과를 참조하고,
    상기 기록 물리 블록군 안에 구성된 상기 논리 블록이 소정 수 이상 무효로 되어 있는 물리 블록군을 소거 물리 블록군으로서 선택하고,
    유효로 되어 있는 논리 블록의 데이터를 상기 소거 물리 블록군과는 별개의 물리 블록군에 퇴피한 후, 상기 소거 물리 블록군을 소거하는 것을 특징으로 하는 기억장치.
  4. 제 3 항에 있어서, 상기 논리 블록 관리수단은,
    물리 블록이 불량인지 여부를 판정하는 불량 물리 블록 판단수단과,
    불량 물리 블록을 검출한 경우에 이 물리 블록을 포함하여 구성되는 복수의 논리 블록을 모두 상기 보유수단에서는 유효로 등록하는 유효상태 설정수단을 구비하는 것을 특징으로 하는 기억장치.
  5. 제 1 항에 있어서, 상기 논리 블록 관리수단은,
    데이터 입출력 장치로부터 기록 요구와 논리 어드레스를 접수하면,
    논리 블록을 기록가능한 기록 물리 블록군을 결정하여, 상기 기록 물리 블록군 중에서 논리 블록을 구성하는 페이지의 연결을 나타내는 연쇄정보를 생성하고,
    상기 연쇄정보를 상기 비휘발성 메모리에 기록하는 것을 특징으로 하는 기억 장치.
  6. 제 5 항에 있어서, 상기 논리 블록 관리수단은,
    상기 논리 블록 단위로 데이터의 유효무효를 관리하고, 그 유효무효의 결과를 보유하는 보유수단을 갖는 것을 특징으로 하는 기억장치.
  7. 제 6 항에 있어서, 상기 논리 블록 관리수단은,
    상기 보유수단에서 보유된 유효무효의 결과를 참조하고,
    상기 기록 물리 블록군 안에 구성된 상기 논리 블록이 소정 수 이상 무효로 되어 있는 물리 블록군을 소거 물리 블록군으로서 선택하고,
    유효로 되어 있는 논리 블록의 데이터를 상기 소거 물리 블록군과는 별개의 물리 블록군에 퇴피한 후, 상기 소거 물리 블록군을 소거하는 것을 특징으로 하는 기억장치.
  8. 제 7 항에 있어서, 상기 논리 블록 관리수단은,
    물리 블록이 불량인지 여부를 판정하는 불량 물리 블록 판단수단과,
    불량 물리 블록을 검출한 경우에 이 물리 블록을 포함하여 구성되는 복수의 논리 블록을 모두 상기 보유수단에서는 유효로 등록하는 유효상태 설정수단을 구비하는 것을 특징으로 하는 기억장치.
KR1020080099593A 2001-03-22 2008-10-10 기억장치 KR20080094882A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JPJP-P-2001-00083104 2001-03-22
JP2001083104 2001-03-22
JPJP-P-2001-00257349 2001-08-28
JP2001257349 2001-08-28
JPJP-P-2001-00260250 2001-08-29
JP2001260250 2001-08-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020070102128A Division KR100880415B1 (ko) 2001-03-22 2007-10-10 기억장치

Publications (1)

Publication Number Publication Date
KR20080094882A true KR20080094882A (ko) 2008-10-27

Family

ID=27346327

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020020015575A KR100862584B1 (ko) 2001-03-22 2002-03-22 기억장치
KR1020070102128A KR100880415B1 (ko) 2001-03-22 2007-10-10 기억장치
KR1020080099593A KR20080094882A (ko) 2001-03-22 2008-10-10 기억장치

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020020015575A KR100862584B1 (ko) 2001-03-22 2002-03-22 기억장치
KR1020070102128A KR100880415B1 (ko) 2001-03-22 2007-10-10 기억장치

Country Status (6)

Country Link
US (2) US6938144B2 (ko)
EP (1) EP1244019A3 (ko)
JP (2) JP4015866B2 (ko)
KR (3) KR100862584B1 (ko)
CN (1) CN1276358C (ko)
TW (1) TW564346B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111885214A (zh) * 2020-06-15 2020-11-03 北京交通大学 一种面向工业异构网络设备的地址统一分配方法及装置

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3969278B2 (ja) * 2002-10-21 2007-09-05 株式会社デンソー 電子制御装置
JP4047908B2 (ja) * 2004-01-19 2008-02-13 トレック・2000・インターナショナル・リミテッド メモリアドレスマッピングテーブルを使用するポータブルデータ記憶デバイス
JP3924568B2 (ja) * 2004-02-20 2007-06-06 Necエレクトロニクス株式会社 フラッシュメモリにおけるデータアクセス制御方法、データアクセス制御プログラム
TWI249670B (en) 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
US7323400B2 (en) * 2004-08-30 2008-01-29 Micron Technology, Inc. Plasma processing, deposition and ALD methods
JP4561246B2 (ja) * 2004-08-31 2010-10-13 ソニー株式会社 メモリ装置
US7444493B2 (en) * 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
DE102004062245A1 (de) * 2004-12-23 2006-07-13 Giesecke & Devrient Gmbh Verwaltung von Datenobjekten in einem nichtflüchtigen überschreibbaren Speicher
CN101091223B (zh) * 2004-12-24 2011-06-08 斯班逊有限公司 施加偏压至储存器件的方法与装置
DE102005001038B3 (de) * 2005-01-07 2006-05-04 Hyperstone Ag Verfahren zur Umsetzung von logischen in reale Blockadressen in Flashspeichern
KR100659475B1 (ko) 2005-05-26 2006-12-20 영남대학교 산학협력단 Zigbee MAC 계층의 재정렬 송신 버퍼 구조
JP4940738B2 (ja) 2006-04-12 2012-05-30 株式会社日立製作所 記憶領域動的割当方法
JP2008009527A (ja) * 2006-06-27 2008-01-17 Toshiba Corp メモリシステム
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US7791952B2 (en) 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009072104A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8566510B2 (en) * 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
TWI450271B (zh) * 2009-09-02 2014-08-21 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
CN101727402B (zh) * 2009-10-23 2012-07-04 深圳市江波龙电子有限公司 一种非易失性存储器数据的读写控制方法及系统
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8417914B2 (en) 2011-01-06 2013-04-09 Micron Technology, Inc. Memory address translation
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
JP6040767B2 (ja) * 2012-12-28 2016-12-07 富士通株式会社 配信システム、配信方法、及びプログラム
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
JP6055544B2 (ja) * 2013-06-03 2016-12-27 株式会社日立製作所 ストレージ装置およびストレージ装置制御方法
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
SG11201802566PA (en) 2016-12-29 2018-08-30 Huawei Tech Co Ltd Storage system and solid state disk
US11016903B2 (en) * 2019-08-22 2021-05-25 Micron Technology, Inc. Hierarchical memory systems
CN113568579B (zh) * 2021-07-28 2022-05-03 深圳市高川自动化技术有限公司 一种存储器、数据存储方法以及数据读取方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420993A (en) * 1991-06-13 1995-05-30 Unisys Corporation Extended address translation system for pointer updating in paged memory systems
JP3328604B2 (ja) 1992-06-22 2002-09-30 株式会社日立製作所 半導体記憶装置
JPH06231047A (ja) * 1993-02-05 1994-08-19 Fujitsu Ltd アドレス変換方法および装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH06301601A (ja) 1993-04-16 1994-10-28 Sony Corp 情報記録装置及び情報転送装置
JPH0714398A (ja) 1993-06-14 1995-01-17 Hitachi Ltd 半導体記憶装置
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5446854A (en) * 1993-10-20 1995-08-29 Sun Microsystems, Inc. Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes
JPH08212019A (ja) 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JP3706167B2 (ja) 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
JP3197815B2 (ja) 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
US5827783A (en) * 1996-08-23 1998-10-27 Mosel Vitelic, Inc. Stacked capacitor having improved charge storage capacity
JPH11203191A (ja) 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
KR100319598B1 (ko) * 1998-03-18 2002-04-06 김영환 플래시메모리어레이액세스방법및장치
US6286092B1 (en) * 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6721843B1 (en) * 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111885214A (zh) * 2020-06-15 2020-11-03 北京交通大学 一种面向工业异构网络设备的地址统一分配方法及装置
CN111885214B (zh) * 2020-06-15 2021-07-02 北京交通大学 一种面向工业异构网络设备的地址统一分配方法及装置

Also Published As

Publication number Publication date
EP1244019A2 (en) 2002-09-25
CN1376980A (zh) 2002-10-30
TW564346B (en) 2003-12-01
EP1244019A3 (en) 2004-11-10
KR20020075291A (ko) 2002-10-04
US20020156988A1 (en) 2002-10-24
KR100862584B1 (ko) 2008-10-09
USRE42263E1 (en) 2011-03-29
JP4015866B2 (ja) 2007-11-28
JP4384682B2 (ja) 2009-12-16
JP2003150443A (ja) 2003-05-23
JP2007280431A (ja) 2007-10-25
KR100880415B1 (ko) 2009-01-30
KR20070104874A (ko) 2007-10-29
CN1276358C (zh) 2006-09-20
US6938144B2 (en) 2005-08-30

Similar Documents

Publication Publication Date Title
KR100880415B1 (ko) 기억장치
US8392690B2 (en) Management method for reducing utilization rate of random access memory (RAM) used in flash memory
US5946714A (en) Semiconductor storage device utilizing address management tables and table state maps for managing data storage and retrieval
US7227788B2 (en) Memory management device and memory device
US6388908B1 (en) Recording system, data recording device, memory device, and data recording method
US7404031B2 (en) Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory
US6965963B1 (en) Continuous arrangement of data clusters across multiple storages
US20070016719A1 (en) Memory device including nonvolatile memory and memory controller
US10303367B2 (en) Mapping table updating method without updating the first mapping information, memory control circuit unit and memory storage device
US7136986B2 (en) Apparatus and method for controlling flash memories
JP5969130B2 (ja) 情報処理装置
US8521947B2 (en) Method for writing data into flash memory
JP2006277737A (ja) アドレス予測機能をもつ不揮発性記憶装置
US10997073B2 (en) Memory system
CN112596668A (zh) 一种存储器的坏块处理方法及系统
US20080294837A1 (en) Memory controller for controlling a non-volatile semiconductor memory and memory system
TW200941215A (en) Management method, management apparatus and controller for memory data access
JP2001202281A (ja) 記録方法及び装置、転送方法及び装置、再生方法及び装置、記録媒体
CN111767005A (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
JP3117244B2 (ja) Eepromの制御装置
JP2007199828A (ja) 不揮発性記憶装置およびそのアドレス管理方法
JP2005092678A (ja) 半導体メモリカード及び不揮発性メモリのデータ消去処理方法
JP2004206615A (ja) 記憶装置
KR20030009250A (ko) 플래시 메모리 동작 제어 방법 및 장치
JP2004126945A (ja) 記憶装置及びその制御方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
WITB Written withdrawal of application