KR20050024322A - 블록 단위로 소거될 수 있는 메모리의 관리 데이터레코드를 복원하는 방법 - Google Patents

블록 단위로 소거될 수 있는 메모리의 관리 데이터레코드를 복원하는 방법 Download PDF

Info

Publication number
KR20050024322A
KR20050024322A KR10-2004-7020050A KR20047020050A KR20050024322A KR 20050024322 A KR20050024322 A KR 20050024322A KR 20047020050 A KR20047020050 A KR 20047020050A KR 20050024322 A KR20050024322 A KR 20050024322A
Authority
KR
South Korea
Prior art keywords
memory
management data
reorganization
data record
rkt
Prior art date
Application number
KR10-2004-7020050A
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 하이퍼스톤 아게
Priority to KR10-2004-7020050A priority Critical patent/KR20050024322A/ko
Publication of KR20050024322A publication Critical patent/KR20050024322A/ko

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Abstract

본 발명은 섹터 단위로 기록될 수 있고 블록 단위로 소거될 수 있는 비휘발성 메모리의 관리 데이터 레코드로서, 배속된 메모리 컨트롤러의 신속하게 액세스될 수 있는 내부 휘발성 플래그 메모리에 저장된 관리 데이터 레코드를 복원하는 방법에 관한 것이다. 본 발명에 따르면, 익스텐트로 된 모든 기록 동작 및 소거 동작이 엔트리로서 등록되는 재구성 테이블(RKT)을 비휘발성 메모리의 하나 이상의 메모리 블록에 계속적으로 업데이트시켜 정전 후의 재시동 시에 내부 플래그 메모리의 관리 데이터 레코드가 각각 완전하게 재구성될 수 있도록 한다.

Description

블록 단위로 소거될 수 있는 메모리의 관리 데이터 레코드를 복원하는 방법{METHOD FOR RESTORING ADMINISTRATIVE DATA RECORDS OF A MEMORY THAT CAN BE ERASED IN BLOCKS}
본 발명은 섹터 단위로 기록될 수 있고 블록 단위로 소거될 수 있는 비휘발성 메모리의 관리 데이터 레코드로서, 배속된 메모리 컨트롤러의 휘발성 플래그 메모리(flag memory)로 전달된 관리 데이터 레코드를 복원하는 방법에 관한 것이다.
널리 보급되어 있는 비휘발성 반도체 메모리(플래시 메모리)는 블록 및 섹터로 편성되는데, 블록은 예컨대 512 바이트씩을 갖는 32 섹터로 이뤄진다. 그러한 메모리는 새로운 정보가 섹터 단위로 기록되고, 사전에 소거된 섹터에만 기록될 수 있다는 특성을 갖는다. 그와 같이 소거하는 것은 모든 섹터에 대한 블록마다 공통적으로 이뤄진다. 메모리의 섹터에 기록을 하는 것은 판독을 하는 것보다 더 오래 걸리고, 블록을 소거하는 동작은 오랜 시간, 예컨대 수 밀리 초를 소요한다. 본 출원과 동시에 출원된 방법에 따르면, 배속된 메모리 컨트롤러에 있는 프로그램에 의해 신속하게 액세스될 수 있는 휘발성 플래그 메모리로 테이블을 전달하여 거기에서 블록 및 섹터에 대한 각각의 데이터 레코드를 등록한다. 그러한 테이블은 주로 비휘발성 플래그 메모리의 섹터에 기록을 할 때에 논리 블록 주소를 물리 블록 주소와 대체 메모리 블록(alternative memory block) 주소에 할당하는 것으로 이뤄진다. 정전이 될 경우에는 휘발성 플래그 메모리로부터 데이터가 사라진다. 즉, 재시동 후에 정확한 데이터로 계속 작업을 할 수 있으려면, 그 시점에 데이터가 비휘발성 메모리의 부분에 확실하게 포함되어 있어야만 한다. 그러나, 기록 동작의 지속 시간 때문에 정전 시에는 더 이상 그럴 시간이 없다. 하지만, 모든 관리 데이터 레코드를 복사에 의해 상시적으로 확보해 두는 것은 모든 기록 동작을 느리게 만들고, 비휘발성 메모리의 소모를 증대시키는 결과를 초래한다.
특허 공보 US 5 930 193 A에도 시스템의 전원 차단 시에 관리 테이블을 비휘발성 메모리의 별개의 메모리 구역에 저장시키는 것이 개시되어 있다. 그러나, 그것은 통상적인 전원 차단 시에만 가능한 것이고, 예상 밖의 정전 시에는 관리 데이터 레코드가 상실되어 버린다.
이하, 본 발명의 구성을 첨부 도면을 참조로 하여 예시적으로 더욱 상세하게 설명하기로 한다. 첨부 도면 중에서,
도 1은 재구성 테이블의 구성을 나타낸 도면이고,
도 2는 블록 포인터 테이블과 포인터 중간 테이블과의 관계를 나타낸 도면이다.
본 발명의 목적은 섹터 단위로 기록될 수 있고 블록 단위로 소거될 수 있는 메모리에 대한 관리 데이터 레코드를 배속된 메모리 컨트롤러의 신속한 휘발성 플래그 메모리로 전달하여 정전 후의 재시동 시에 그 관리 데이터 레코드를 완전하게 복원할 수 있도록 하는 방법을 제공하는 것이다.
그러한 목적은 익스텐트(extent)로 된 기록 동작 및 소거 동작이 엔트리(entry)로서 등록되는 재구성 테이블을 비휘발성 메모리에 계속적으로 업데이트시켜 정전 후의 재시동 시에 내부 플래그 메모리의 관리 데이터 레코드가 각각 완전하게 재구성될 수 있도록 함으로써 달성된다.
바람직한 실시 양태들은 종속 청구항들에 기재되어 있다.
비휘발성 메모리에는 재구성 테이블이 기록되는 하나 이상의 데이터 블록을 예비해 둔다. 그러한 재구성 테이블은 예컨대 128 섹터의 정해진 길이를 갖는다. 휘발성 플래그 메모리에는 기록이 이뤄지는 메모리 블록에 대해 특히 논리 블록 주소 및 물리 블록 주소와 실제로 기록이 이뤄진 대체 메모리 블록의 주소가 기입된 관리 데이터 레코드를 작성해 둔다. 새로운 메모리 블록에 기록이 이뤄지거나, 새로운 대체 메모리 블록이 제공되고 이전에 논리 블록 주소를 물리 블록 주소에 할당했던 것이 취소되면, 재구성 테이블에 각각의 엔트리를 계속적으로 기록해 둔다. 재구성 테이블에 있는 각각의 엔트리는 하나 이상의 논리 블록 주소, 원래의 데이터 블록의 물리 블록 주소, 및 경우에 따라 사용되는 대체 메모리 블록의 주소를 포함한다.
정전 후에 메모리 시스템의 재시동이 이뤄지면, 메모리 컨트롤러의 프로그램에 의해 휘발성 플래그 메모리에 있는 관리 데이터 레코드가 빈 상태로 초기화되고 난 후에, 재구성 테이블이 맨 처음부터 정밀하게 판독되어 재구성 테이블에 있는 각각의 엔트리에 상응하게 관리 데이터 레코드에의 할당이 등록되게 된다. 그것은 재구성 테이블의 끝에 도달될 때까지 재구성 테이블에 있는 각각의 엔트리에 대해 반복된다. 그 경우, 최초의 저장 중에도 할당이 업데이트되기 때문에, 몇몇 할당을 여러 번 바꿔 쓰는 것도 전적으로 가능하다. 그러나, 재시동의 종료 시에는 관리 데이터 레코드에의 주소 할당의 실제의 상태가 정전 전에 존재하였던 것과 같이 복원된다.
재구성 테이블의 바람직한 구성에서는 비록 섹터의 모든 바이트가 채워지지 않았더라도 재구성 테이블에 있는 각각의 엔트리가 섹터의 길이와 똑같도록 재구성 테이블을 구축한다. 메모리는 항상 섹터 단위로 기록되기 때문에, 데이터 처리에 부가로 소요되는 것은 없다. 몇몇 저장 공간이 그와 같이 사용되지 않는다할지라도, 그것은 전체의 메모리 크기에서는 그리 중요하지 않다. 아울러, 모든 섹터는 재구성 테이블에 있는 실제의 엔트리로부터 소거되기도 하기 때문에, 추가의 소요 없이 다음 엔트리가 직접 재구성 테이블에 기록되게 된다.
몇몇 타입의 비휘발성 메모리에서는 섹터의 일 섹션만을, 예컨대 128 바이트의 섹션만을 섹터의 다른 섹션과는 별개로 기록하는 것도 또한 가능하다. 그와 같은 타입에서는 섹터의 그러한 일 섹션만이 기록됨으로써, 재구성 테이블에 필요한 메모리 불록이 예컨대 단지 하나에 불과하게 된다.
재구성 테이블을 특정하게 구축하여 그 재구성 테이블을 비휘발성 메모리에 저장함으로써, 관리 데이터 레코드를 재구성하는 동안에도 재차 정전이 되더라도 오류를 일으키지 않을 수 있다. 즉, 시스템을 새로이 재시동하면, 재구성 테이블이 다시 한 번 완전하게 활용됨으로써, 그러고 나서 관리 데이터 레코드의 실제의 상태를 얻게 된다.
재구성 테이블은 정해진 길이, 예컨대 128 엔트리를 갖기 때문에, 재구성 테이블이 통상의 메모리 동작에서 거의 끝에 이르기까지 채워지게 된다. 끝에서 두번째의 엔트리가 기록되었을 때에 재편성을 시작하는 것이 바람직하다. 그를 위해, 재구성 테이블의 마지막 엔트리로서 재편성에 관한 기록을 기입해 둔다. 이어서, 관리 데이터 레코드에 실제로 기입되어 있는 바와 같은 모든 주소 할당을 취소하고, 그럼으로써 시스템의 재시동 시에도 맨 처음으로 초기화되는 것과 같이 관리 데이터 레코드의 정해진 기저 상태가 조성되게 된다.
성공적인 재편성 후에 완료 엔트리를 재구성 테이블에 기록해 둘 경우에 본 발명에 방법이 더욱 더 개선되게 된다. 그러한 완료 엔트리는 재편성 시마다 계수되는 계수치를 갖는 것이 바람직하다.
또한, 재편성 시마다 새로운 재구성 테이블을 다른 메모리 블록에 작성해 두는 것이 좋다. 그것은 이제 막 최초로 소거되었거나 배경 프로그램에 의해 소거된 소거 메모리 블록의 인벤토리로루터 얻어진다. 완료 엔트리를 새로운 재구성 테이블에 제1 엔트리로서 기록한다. 이어서, 지금까지 재구성 테이블에 사용되었던 블록을 할당 해제하여 그것이 배경 프로그램에 의해 소거를 위해 처리되도록 표시를 한다. 재편성 과정 중에 정전이 되고 아직 새로운 완료 엔트리가 기록되지 않았다면, 시스템의 재시동 시에 재편성이 새로이 시작된다. 그러한 재편성은 임의의 빈도로 반복될 수 있다.
완료 엔트리가 이미 기록되었지만, 지금까지의 재구성 테이블 이 아직 할당 해제되지 않았다면, 시스템의 재시동 시에 2개의 재구성 테이블, 즉 지금까지의 재구성 테이블과 새로운 재구성 테이블이 탐색되는 일이 생길 수 있다. 그러면, 재구성 테이블의 완료 엔트리에 있는 계수치에 의거하여 어떤 것이 새로운 재구성 테이블인지를 확인하고, 재편성 과정을 그에 따라 속개한다. 즉, 그러한 경우에도 메모리 시스템의 정확한 계속적 처리가 보장되게 된다.
물리 블록 주소를 논리 블록 주소에 새로이 할당할 때마다, 블록 포인터 테이블에 있는 블록 포인터를 그에 상응하게 변경해야 한다. 그러한 블록 포인터 테이블은 비휘발성 메모리에 있고, 그러한 변경의 기록은 매번 대체 메모리 블록 메커니즘을 거쳐 진행해야 한다. 그러한 기록 동작을 최적화시키기 위해, 논리 블록 주소와 변경된 물리 블록 주소에 의한 변경된 주소 할당이 기입된 포인터 중간 테이블을 휘발성 플래그 메모리에 저장해 둔다. 그러한 포인터 중간 테이블은 논리 블록 주소별로 정렬되어 있다. 이제, 주소 할당이 실행되면, 우선 그 포인터 중간 테이블에서 논리 블록 주소가 거기에 등록되어 있는지를 체크한다. 그럴 경우에는 거기에 지정되어 있는 물리 메모리 블록 주소를 사용하고, 그렇지 않은 경우에는 블록 포인터 테이블로부터 나온 물리 블록 주소를 사용한다. 즉, 포인터 중간 테이블은 블록 포인터 테이블에 있는 어떤 엔트리가 더 이상 유효하지 않은 것인지를 지정해 준다. 전술된 재편성 시에는 블록 포인터 테이블도 역시 비휘발성 메모리에 새로이 기록되고, 포인터 중간 테이블로부터 나온 값으로 업데이트된다. 즉, 단지 재편성 시에만 블록 포인터의 변경이 비휘발성 메모리에 새로이 기록됨으로써, 다수의 기록 동작이 절감되게 된다.
포인터 중간 테이블은 정전 시에 상실되어 버린다. 그 논리 블록 주소와 물리 블록 주소에 의한 각각의 새로운 주소 할당은 최종적인 재편성 이후부터 엔트리로서 재구성 테이블에 저장되기 때문에, 재시동 시에 포인터 중간 테이블도 역시 함께 재구성되게 된다.
도 1에는 재구성 테이블(RKT)의 구성이 도시되어 있다. 여기서, 그러한 재구성 테이블(RKT)은 섹터의 길이와 각각 같은 128 엔트리로 이뤄진다. 제1 엔트리는 완료 엔트리(FE)로서 지칭되고, 완료 계수치(FZ)도 아울러 포함하고 있다. 다른 관리 데이터(VD)를 위한 공간이 존재한다. 제2 엔트리로부터 재구성 엔트리(RE)가 등록되는데, 그러한 재구성 엔트리(RE)는 기입된 기록 동작으로부터 논리 블록 주소(LBA), 물리 메모리 블록 주소(SBA), 사용된 대체 메모리 블록 주소(ABA), 및 또 다른 관리 데이터(VD)에 대한 엔트리들을 포함한다. 재구성 테이블(RKT)에 있는 마지막 엔트리는 재편성 엔트리(OE)로서 지칭된다. 그러한 엔트리도 역시 다른 관리 데이터(VD)를 위한 공간을 갖는다.
도 2에는 논리 블록 주소(LBA)로써 지정되고 그에 할당된 물리 메모리 블록 주소(SBA)를 각각 포함하는 블록 포인터 테이블(BZT)이 도시되어 있다. 그러한 블록 포인터 테이블(BZT)은 비휘발성 메모리에 있다. 휘발성 플래그 메모리에는 논리 블록 주소(LBA)를 물리 메모리 블록 주소(SBA)에 할당한 것을 그 각각의 테이블 행에 포함하고 있는 포인터 중간 테이블(ZZT)이 구축된다. 그것은 물리 메모리 블록 주소(SBA)에의 그 할당이 마지막 재편성 이후로부터 변경된 논리 블록 주소(SBA)이다. 테이블 행은 오름차순의 논리 블록 주소(LBAn)에 따라 분류되고, 더 이상 유효하지 않아 다음 재편성 시에 업데이트되는 블록 포인터 테이블(BZT) 내의 엔트리를 지정하고 있다.
<도면 부호의 설명>
ABA : 대체 메모리 블록 주소
BZT : 블록 포인터 테이블
FE : 완료 엔트리
FZ : 완료 계수치
LBA : 논리 블록 주소
LBAn : ZZT에 있는 논리 블록 주소 n
OE : 재편성 엔트리
RE : 재구성 엔트리
RKT : 재구성 테이블
SBA : 메모리 블록 주소
VD : 관리 데이터
ZZT : 포인터 중간 테이블

Claims (9)

  1. 섹터 단위로 기록될 수 있고 블록 단위로 소거될 수 있는 비휘발성 메모리의 관리 데이터 레코드로서, 배속된 메모리 컨트롤러의 휘발성 플래그 메모리에 저장된 관리 데이터 레코드를 복원하는 방법에 있어서,
    익스텐트로 된 모든 기록 동작 및 소거 동작이 엔트리로서 등록되는 재구성 테이블(RKT)을 비휘발성 메모리의 하나 이상의 메모리 블록에 계속적으로 업데이트시켜 정전 후의 재시동 시에 내부 플래그 메모리의 관리 데이터 레코드가 각각 재구성될 수 있도록 하는 것을 특징으로 하는 블록 단위로 소거될 수 있는 메모리의 관리 데이터 레코드를 복원하는 방법.
  2. 제1항에 있어서, 재구성 테이블(RKT)에 있는 각각의 엔트리를 섹터 또는 섹터 섹션의 길이로 하는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  3. 제1항에 있어서, 관리 데이터 레코드의 재구성 시에 정전이 되면, 플래그 메모리의 관리 데이터 레코드의 재구성을 반복하는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  4. 제1항에 있어서, 재구성 테이블(RKT)이 미리 정해진 상태로 채워질 때마다 플래그 메모리와 재구성 테이블(RKT)에 있는 관리 데이터 레코드의 정해진 기저 상태를 조성하기 위한 재편성을 시작하고, 그러한 재편성의 시작을 재구성 테이블(RKT)의 마지막 엔트리(OE)로서 기입해 두는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  5. 제4항에 있어서, 재편성이 성공적으로 이뤄질 적마다 재구성 테이블(RKT)에 완료 엔트리(FE)를 기록해 두되. 그 완료 엔트리(FE)는 완료 엔트리마다 계수되는 계수치(FZ)를 포함하는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  6. 제5항에 있어서, 성공적인 재편성 후에 재구성 테이블(RKT)을 새로이 구축하기 위해, 지금까지 사용되었던 메모리 블록을 배경 프로그램(background program)에서의 소거를 위해 할당 해제하고, 이제 막 소거된 블록을 그에 상응하게 초기화시키는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  7. 제5항에 있어서, 재구성 테이블(RKT)에 있는 제1 엔트리를 완료 엔트리(FE)로 하는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  8. 제1항에 있어서, 관리 데이터 레코드의 일부로서 비휘발성 메모리에 있는 블록 포인터 테이블(BZT)에 포함되어 있는 유효하지 않은 블록 포인터에 대한 테이블(ZZT)을 플래그 메모리에 전달하는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
  9. 제3항에 있어서, 재편성 시에 블록 포인터 테이블(BZT)을 유효하지 않은 블록 포인터에 대한 테이블(ZZT)에 의거하여 업데이트시키는 것을 특징으로 하는 관리 데이터 레코드 복원 방법.
KR10-2004-7020050A 2002-06-19 2003-06-17 블록 단위로 소거될 수 있는 메모리의 관리 데이터레코드를 복원하는 방법 KR20050024322A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2004-7020050A KR20050024322A (ko) 2002-06-19 2003-06-17 블록 단위로 소거될 수 있는 메모리의 관리 데이터레코드를 복원하는 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10227255.7 2002-06-19
KR10-2004-7020050A KR20050024322A (ko) 2002-06-19 2003-06-17 블록 단위로 소거될 수 있는 메모리의 관리 데이터레코드를 복원하는 방법

Publications (1)

Publication Number Publication Date
KR20050024322A true KR20050024322A (ko) 2005-03-10

Family

ID=41784657

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7020050A KR20050024322A (ko) 2002-06-19 2003-06-17 블록 단위로 소거될 수 있는 메모리의 관리 데이터레코드를 복원하는 방법

Country Status (1)

Country Link
KR (1) KR20050024322A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100783560B1 (ko) * 2005-11-11 2007-12-07 (주)아이디스 데이터 처리 시스템 및 데이터 구성 방법과 저장 방법
US8914608B2 (en) 2010-03-12 2014-12-16 Samsung Electronics Co., Ltd. Data storage device and computing system including the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100783560B1 (ko) * 2005-11-11 2007-12-07 (주)아이디스 데이터 처리 시스템 및 데이터 구성 방법과 저장 방법
US8914608B2 (en) 2010-03-12 2014-12-16 Samsung Electronics Co., Ltd. Data storage device and computing system including the same

Similar Documents

Publication Publication Date Title
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
RU2243588C2 (ru) Энергонезависимое устройство памяти, устройство записи и способ записи
KR100896698B1 (ko) 메모리의 페이지 및/또는 블럭의 사이즈와 상이한사이즈를 구비하는 데이터 섹터를 갖는 비-휘발성 메모리시스템을 작동시키는 방법
JP4695801B2 (ja) 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置
US7680977B2 (en) Page and block management algorithm for NAND flash
US6772274B1 (en) Flash memory system and method implementing LBA to PBA correlation within flash memory array
US6426893B1 (en) Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
US7624239B2 (en) Methods for the management of erase operations in non-volatile memories
US6725321B1 (en) Memory system
US8554985B2 (en) Memory block identified by group of logical block addresses, storage device with movable sectors, and methods
US6262918B1 (en) Space management for managing high capacity nonvolatile memory
US6134151A (en) Space management for managing high capacity nonvolatile memory
TWI393140B (zh) 在一非揮發性記憶體中儲存資料之方法
KR100987241B1 (ko) 메모리 장치 및 그 메모리 장치를 이용한 기록 재생 장치
US20190220396A1 (en) Data Storage Device
US7818492B2 (en) Source and shadow wear-leveling method and apparatus
US20030229753A1 (en) Flash memory file system
US20020085433A1 (en) Data management system and data management method
US8296503B2 (en) Data updating and recovering methods for a non-volatile memory array
US20080082773A1 (en) Systems for Managing File Allocation Table Information
US20080082774A1 (en) Methods of Managing File Allocation Table Information
US20100131700A1 (en) Memory indexing system and process
US6839798B1 (en) Flash memory capable of storing frequently rewritten data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application