KR101150654B1 - 비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체 - Google Patents

비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체 Download PDF

Info

Publication number
KR101150654B1
KR101150654B1 KR1020097013272A KR20097013272A KR101150654B1 KR 101150654 B1 KR101150654 B1 KR 101150654B1 KR 1020097013272 A KR1020097013272 A KR 1020097013272A KR 20097013272 A KR20097013272 A KR 20097013272A KR 101150654 B1 KR101150654 B1 KR 101150654B1
Authority
KR
South Korea
Prior art keywords
logical
fragment
offset
memory block
block
Prior art date
Application number
KR1020097013272A
Other languages
English (en)
Other versions
KR20090087092A (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
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20090087092A publication Critical patent/KR20090087092A/ko
Application granted granted Critical
Publication of KR101150654B1 publication Critical patent/KR101150654B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Abstract

비휘발성 메모리 내의 데이터를 관리하는 방법 및 기계 판독 가능한 매체에 관한 것으로, 상기 방법은, 복수의 제 1 논리 오프셋이 제 1 메모리 블록의 복수의 제 1 프래그먼트에 할당되고, 상기 복수의 제 1 프래그먼트 중 제 1 프래그먼트에 데이터가 저장되는 단계와, 복수의 제 2 논리 오프셋이 제 2 메모리 블록의 복수의 제 2 프래그먼트에 할당되고, 상기 복수의 제 2 프래그먼트 중 제 2 프래그먼트는 상기 제 1 프래그먼트와 연관되고, 상기 제 2 프래그먼트에 할당된 제 2 논리 오프셋은 상기 제 1 프래그먼트에 할당된 제 1 논리 오프셋과 동일한 것인 단계, 및 데이터가 상기 제 1 프래그먼트로부터 상기 제 2 프래그먼트로 복사되는 단계를 포함한다.

Description

비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체{METHOD OF MANAGING DATA ON A NON-VOLATILE MEMORY}
NOR 플래시 메모리와 NAND 플래시 메모리와 같은 전자기기용 비휘발성 메모리 제품은 폭넓게 사용된다.
비휘발성 메모리는 복수의 메모리 블록으로 구성되고 각 블록은 복수의 데이터 프래그먼트(fragment)로 구성된다. 통상, 파일의 세그먼트는 비휘발성 메모리의 구획된 프래그먼트에 각기 저장된다. 그러므로, 프래그먼트의 메모리 어드레스를 저장함으로써 파일 세그먼트를 서로 링크하는데 파일 링킹 테이블이 사용된다. 메모리 어드레스는 프래그먼트가 속하는 블록의 어드레스와 그 블록 내의 프래그먼트의 오프셋을 포함한다.
여기에 기술된 발명은 일례로서 설명된 것이고, 첨부하는 도면으로 제한되는 것은 아니다. 기술을 간단 명료하게 하기 위해, 도면에 도시된 구성 요소는 반드 시 실제 크기로 도시된 것은 아니다. 예컨대, 몇몇 구성 요소의 크기는, 명확하게 하기 위해, 다른 구성 요소에 비해 과장될 수 있다. 또한, 적절하다고 생각되는 경우에는, 참조 부호는 도면에 있어서 동일하거나 유사한 구성 요소를 가리키기 위해 반복되고 있다.
도 1은 컴퓨팅 플랫폼의 메모리 시스템 내에 저장된 파일을 관리하는 파일 매니저를 포함하는 컴퓨팅 플랫폼을 나타내는 도면이다.
도 2는 메모리 시스템의 실시예를 나타내는 도면이다.
도 3은 파일용 파일 링킹 테이블의 실시예를 나타내는 도면이다.
도 4는 메모리 시스템의 메모리 블록용 LPBAMT(Logical to Physical Block Address Mapping Table)의 실시예를 나타내는 도면이다.
도 5(a)~ 도 5(c)는, 각각, 메모리 시스템에 있어서의 메모리 블록의 프래그먼트용 LPOMT(Logical to Physical Offset Mapping Table)의 실시예를 나타내는 도면이다.
도 6은 메모리 시스템으로부터 구(old) 메모리 블록을 반환하는(reclaim) 방법의 실시예를 나타내는 도면이다.
도 7은 메모리 시스템으로부터 파일을 판독하는 방법의 실시예를 나타내는 도면이다.
이하에는 비휘발성 메모리 상의 데이터를 관리하는 방법에 대한 기술을 설명한다. 이하의 설명에 있어서, 논리 구현(logic implementation), 의사 코드(pseudo-code), 피연산자 특정 수단, 자원 분할(partitioning)/공유(sharing)/복사(duplication) 수행, 시스템 구성 요소의 타입 및 상관성, 및 논리 분할/통합(integration) 선택과 같은 수많은 특정 항목은 본 발명의 더욱 용이한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이런 특정 항목 없이 수행될 수도 있다. 다른 예로서, 제어 구조, 게이트 레벨 회로 및 전체 소프트웨어 명령 시퀀스는 본 발명을 명료하게 하기 위해 상세하게 나타내지는 않는다. 당업자라면, 이하의 상세한 설명을 통해, 과도한 실험을 행하지 않고도 적절히 그 기능을 수행할 수 있을 것이다.
본 명세서에 있어서, "일 실시예", "실시예", "구현예" 등의 참조는 기술된 실시예가 특정한 특징, 구조 혹은 특성을 포함하는 것을 가리키지만, 모든 실시예가 특정한 특징, 구조 혹은 특성을 반드시 포함하는 것은 아니다. 또한, 이와 같은 구문은 동일 실시예에서 언급할 필요는 없다. 아울러, 특정한 특징, 구조 혹은 특성을 실시예와 관련하여 설명하는 경우, 당업자의 지식 내에서, 다른 실시예와 관련하여서도 특정한 특징, 구조 혹은 특성을 달성하도록 명확하게 기술되어 있다.
본 발명의 실시예는 하드웨어, 펌웨어, 소프트웨어나 이들의 임의 조합으로 실행된다. 본 발명의 실시예는 하나 이상의 프로세서에 의해 판독 실행되는 기계 판독 가능한 매체(machine-readable medium) 상에 저장된 명령을 통해 실행될 수도 있다. 기계 판독 가능한 매체는 기계(예컨대, 컴퓨팅 디바이스)에 의해 판독 가능한 형태로 정보를 저장하거나 전송하는 임의 메커니즘을 포함한다. 예컨대, 기계 판독 가능한 매체는 ROM(Read Only Memory); RAM(Random Access Memory); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 디바이스 등을 포함한다.
도 1은 컴퓨팅 시스템의 실시예를 나타낸다. 도시하는 바와 같이, 컴퓨팅 시스템(10)은 하나 이상의 프로세서(11), 메모리 시스템(12), 칩셋(13), I/O 디바이스(14), 및 가능한 다른 구성 요소를 포함할 수 있다. 예컨대, 컴퓨팅 시스템(10)은 셀룰러 폰, 디지털 카메라, 컴퓨터 및 데이터를 프로세싱하고 저장하는 기타 디바이스를 포함한다.
하나 이상의 프로세서(11)는 프로세서 버스와 같이 하나 이상의 버스를 거쳐 다양한 구성 요소(예컨대, 칩셋(13))와 통신 가능하게 접속된다. 프로세서(11)는, 예컨대, 캘리포니아 산타클라라의 Intel사로부터 입수할 수 있는 Intel® Pentium™, Intel® Itanium™, Intel® Core™ Duo 아키텍쳐를 포함하는, 적절한 아키텍처 하에서 코드를 수행할 수 있는 하나 이상의 프로세싱 코어로 이루어지는 IC(Integrated Circuit)에 의해 실행된다.
메모리 시스템(12)은 하나 이상의 메모리 디바이스(도시하지 않음)로 구성되고, 이 메모리 디바이스는 동일 타입이거나 동일하지 않은 타입일 수도 있다. 예컨대, 메모리 디바이스의 일부는 비휘발성 메모리 디바이스인 반면, 나머지는 휘발성 메모리 디바이스이다. 비휘발성 메모리 디바이스는, 예컨대, NOR 플래시 메모리 디바이스와 NAND 플래시 메모리 디바이스를 포함한다. 휘발성 메모리 디바이스 는, 예컨대, SDRAM(Synchronous Dynamic Random Access Memory) 디바이스, RDRAM(RAMBUS Dynamic Random Access Memory) 디바이스, DDR(Double Data Rate) 메모리 디바이스 및 SRAM(Static Random Access Memory)을 포함한다. 메모리 디바이스는 복수의 메모리 블록을 포함하고, 각 메모리 블록은 복수의 데이터 프래그먼트를 포함한다.
메모리 시스템(12)은 파일(101)과 파일 매니저(102)를 통해 명령 및 데이터를 저장한다. 파일(101)은 메모리 시스템의 개별 위치에 각각 저장될 수 있는 복수의 파일 세그먼트를 포함한다. 예컨대, 상이한 파일 세그먼트는 다른 메모리 블록이나 하나의 메모리 블록 내의 다른 데이터 프래그먼트에도 저장될 수 있다.
파일 매니저(102)는 파일 링킹 모듈(103), 블록 어드레스 매핑 모듈(104), 오프셋 매핑 모듈(105), 논리 오프셋 할당 모듈(106) 및 파일(101)을 관리할 수 있는 다른 구성 요소를 포함한다. 파일 링킹 모듈(103)은, 메모리 시스템(12)의 개별 위치에 저장된 파일 세그먼트를 서로 링크하기 위해, 파일(101)용 파일 링킹 테이블(1030)을 셋업하고 관리한다.
도 3은 파일 링킹 테이블(1030)의 실시예를 나타낸다. 도시하는 바와 같이, 파일 링킹 테이블은 복수의 엔트리로 구성되고, 각각의 엔트리는 각각의 파일 세그먼트를 등록한다. 각 엔트리는 파일 세그먼트를 저장하는 데이터 프래그먼트를 갖는 블록의 논리 블록 어드레스와, 그 블록 내의 데이터 프래그먼트의 논리 오프셋을 저장한다. 이와 달리, 블록의 논리 블록 어드레스와 데이터 프래그먼트의 논리 오프셋은 데이터 프래그먼트의 논리 어드레스를 가리킬 수 있다.
블록 어드레스 매핑 모듈(104)은 LPBAMT(1040: Logical-to-Physical Block Address Mapping Table)을 셋업하고 관리한다. LPBAMT(1040)는 복수의 엔트리를 포함하고, 각 블록용 각 엔트리는 파일 세그먼트를 저장하는 데이터 프래그먼트를 갖는다. 도 4는 LPBAMT(1040)의 실시예를 나타낸다. 도시하는 바와 같이, LPBAMT(1040)의 각 엔트리는 파일을 저장하는 각 블록에 대하여 논리 블록 어드레스를 물리 블록 어드레스로 매핑한다.
오프셋 매핑 모듈(105)은 파일을 저장하는 각 블록에 관한 LPOMT(1050: Logical-to-Physical Offset Mapping Table)를 셋업하고 관리한다. LPOMT(1050)는 복수의 엔트리를 포함하고, 각각의 엔트리는 블록의 각각의 데이터 프래그먼트에 대한 것이다. 도 5(a) 내지 도 5(c)는 세 개의 블록에 대한 세 개의 LPOMT를 나타낸다. 도시하는 바와 같이, LPOMT(1050)의 각 엔트리는 각 데이터 프래그먼트에 대하여 논리 오프셋을 물리 오프셋에 매핑할 수 있다.
논리 오프셋 할당 모듈(106)은 블록의 각 데이터 프래그먼트에 논리 오프셋을 할당한다.
파일(101)을 판독하기 위해, 파일 링킹 테이블(1030)은 파일 매니저(102)가 파일(101)의 세그먼트를 저장하는 데이터 프래그먼트의 논리 어드레스를 얻도록 돕는다. LPBAMT(1040)와 LPOMT(1050)는 파일 매니저(102)가 파일 링킹 테이블(1030) 내의 논리 어드레스에 따라 데이터 프래그먼트의 물리 어드레스를 얻도록 돕는다.
파일 세그먼트를 저장하는 구(old) 프래그먼트를 갖는 구 블록을 반환(reclaim)하기 위해, 메모리 시스템(12)은 반환 전에 구 블록을 대체할 신규 블 록을 할당한다. 그러면, 논리 오프셋 할당 모듈(106)은 신규 블록의 신규 프래그먼트에 논리 오프셋을 할당한다. 특히, 논리 오프셋 할당 모듈(106)은, 신규 프래그먼트가 구 프래그먼트로부터 복사된 파일 세그먼트를 저장하도록 선택되면, 구 프래그먼트에 할당된 논리 오프셋과 동일한 논리 오프셋을 신규 프래그먼트에 할당한다.
오프셋 매핑 모듈(105)은 신규 데이터 프래그먼트에 할당된 논리 오프셋에 근거하여 신규 블록에 대한 신규 LPOMT를 만든다. 블록 어드레스 매핑 모듈(104)은 구 블록의 물리 어드레스를 신규 블록의 물리 어드레스로 변경함으로써 LPBAMT(1040)를 업데이팅한다. 파일 세그먼트가 구 프래그먼트로부터 신규 프래그먼트로 복사된 후에, 구 블록은 삭제되고, 신규 블록은 파일 링킹 테이블(1030)을 업데이팅하지 않고도 구 블록을 대체할 수 있다.
칩셋(13)은 하나 이상의 프로세서(11), 메모리 시스템(12) 및 I/O 디바이스(14)와 같은 다른 구성 요소간에 하나 이상의 통신 경로를 제공한다. I/O 디바이스(14)는 데이터를 컴퓨팅 시스템(10)과의 사이에서 입출력한다. 예컨대, I/O 디바이스(14)는 네트워크 카드, 블루투스, 안테나 및 데이터 전송을 위해 이용 가능한 다른 디바이스를 포함한다.
다른 실시예는 컴퓨팅 시스템(10)의 다른 기술을 구현할 수 있다. 예컨대, 파일 링킹 테이블(1030)은 논리 블록 어드레스 대신에 물리 블록 어드레스를 저장한다. 그러므로, 블록 어드레스 매핑 모듈(104)은 생략될 수 있다.
도 2는 메모리 시스템(102)의 실시예를 나타낸다. 메모리 시스템(102)은 복 수의 메모리 블록을 포함하고, 그들은 동일 타입이거나 혹은 동일 타입이 아닐 수 있다. 예컨대, 도 2에 나타내는 바와 같이, 메모리 시스템(102)은 블록 0, 블록 1, 블록 2, …를 포함할 수 있다. 모든 블록은 비휘발성 메모리 블록과 같은 동일 타입의 블록일 수 있다. 한편, 블록 0은 휘발성 메모리 블록인 반면, 블록 1 및 블록 2는 비휘발성 메모리 블록일 수도 있다.
각 블록은 복수의 데이터 프래그먼트를 갖고, 각 데이터 프래그먼트는 블록 내의 데이터 프래그먼트의 물리 위치를 가리키는 물리 오프셋을 갖는다. 도 2의 실시예에서, 블록 0~2 내의 동일 위치에 위치하는 데이터 프래그먼트는 동일한 물리 오프셋을 갖는다. 예컨대, 블록 0~2의 제 3 프래그먼트는 각기 동일한 물리 오프셋, 예컨대, 2p를 갖는다. 각 데이터 프래그먼트는 블록 내의 데이터 프래그먼트의 논리 위치를 특정하는 논리 오프셋을 더 갖는다. 도 2의 실시예에서, 논리 오프셋의 동일 세트(예컨대, 0I, 1I, 2I, …, 8I)는 명세서를 간단히 하기 위해 블록 0~2의 각각에 사용된다.
파일(101)은, file_segment_1, file_segment_2, file_segment_3 및 file_segment_4와 같이, 복수의 파일 세그먼트를 갖는다. 각 파일 세그먼트는 메모리 시스템(12)의 상이한 데이터 프래그먼트에 저장된다. 예컨대, file_segment_1은 블록 0의 제 7 프래그먼트에 저장되고, file_segment_2는 블록 1의 제 3 세그먼트에 저장되고, file_segment_3은 블록 1의 제 7 프래그먼트에 저장되며, file_segment_4는 블록 1의 제 8 프래그먼트에 저장된다.
그러므로, 파일 링킹 테이블은 이들 프래그먼트의 어드레스를 저장함으로써 파일 세그먼트를 서로 링크하도록 설정될 수 있다. 상술한 바와 같이, 파일 링킹 테이블은 파일을 저장하는 각 데이터 프래그먼트에 대한 논리 블록 어드레스와 논리 오프셋을 저장한다. 논리 블록 어드레스에 근거한 물리 블록 어드레스를 얻기 위해, LPBAMT(Logical-to-Physical Block Address Mapping Table)는 파일을 저장하는 데이터 프래그먼트를 갖는 각 블록에 대하여 논리 어드레스를 물리 어드레스에 매핑하도록 설정될 수 있다.
논리 오프셋에 근거한 물리 오프셋을 얻기 위해, LPOMT(Logical-to-Physical Offset Mapping Table)은, 블록 0에 대해 LPOMT_0(도 5(a)) 및 블록 1에 대해 LPOMT_1(도 5(b))과 같이, 파일을 저장하는 각 블록에 대해 설정될 수 있다.
블록 1이 오염된 데이터(예컨대, 무효 데이터(invalid data))를 저장하면, 블록 2는 블록 1을 대체하도록 할당된다. 블록 1을 반환하기 전에, 블록 2의 하나 이상의 데이터 프래그먼트는 블록 1로부터 복사된 파일 세그먼트를 저장하도록 랜덤하게 선택된다. 예컨대, 블록 2의 제 2, 제 3 및 제 4 프래그먼트는 블록 1의 제 3, 제 7, 제 8 프래그먼트로부터 복사된 file_segment_2, file_segment_3 및 file_segment_4를 각기 저장하도록 선택된다.
다음에, 논리 오프셋은 블록 2의 각 데이터 프래그먼트에 할당된다. 블록 1의 제 3, 제 7 및 제 8 프래그먼트의 동일 논리 오프셋은 블록 2의 제 2, 제 3 및 제 4 프래그먼트에 할당되는 것을 알 수 있다. 다음에, LPOMT는 블록 2의 각 데이터 프래그먼트에 대해 논리 오프셋을 물리 오프셋으로 맵핑하도록 블록 2(예컨대, 도 5(c)의 LPOMT_2)에 대해 설정된다. 게다가, LPBAMT는 블록 1의 물리 어드레스를 블록 2의 물리 어드레스로 변경하도록 업데이팅된다.
블록 1로부터 블록 2로 파일 세그먼트를 복사한 후에, 파일 링킹 테이블의 변경없이, 블록 1은 삭제되고, 블록 2는 블록 1을 대체한다. 파일 데이터를 저장하기 위해 블록 2의 프래그먼트를 선택하는 유연성으로 인하여, 메모리 시스템은, 도 2에 나타내는 바와 같이, 파일 데이터를 저장하기 위해 블록 2의 순차 프래그먼트를 선택하고, 나머지 프래그먼트를 빈 상태로 남겨 둠으로써, 순차 어드레싱 제한(sequential addressing constraint)을 갖는 메모리의 타입(예컨대, NAND 메모리)에 대한 공간을 절약할 수 있다.
다른 실시예는 도 2의 메모리 시스템의 다른 기술을 실행한다. 예컨대, 논리 오프셋의 상이한 세트는, 동일 파일 세그먼트를 저장하는 두 개의 블록으로부터의 두 개의 데이터 프래그먼트가 동일 논리 오프셋을 사용하는 한 상이한 블록에 대해 사용될 수 있다.
도 6은 메모리 시스템(102)의 블록 상에 파일(101)을 기록하고 메모리 시스템(102)으로부터 파일(101)을 저장하는 블록을 반환하는 방법의 실시예를 나타낸다. 도시하는 바와 같이, 단계 601 내에서, 블록 어드레스 매핑 모듈(104)은 파일(101)이 기록된 모든 블록(예컨대, 블록 0 및 1)에 대한 LPBAMT를 설정한다. LPBAMT는 블록의 각각에 대해 논리 블록 어드레스를 물리 블록 어드레스에 맵핑한다. 단계 602에서, 오프셋 매핑 모듈(105)은, 예컨대, 블록 0에 대한 LPOMT_0 및 블록 1에 대한 LPOMT_1과 같이, 각 블록에 대한 LPOMT를 설정한다. LPOMT는 블록 의 각 데이터 프래그먼트에 대해 논리 오프셋을 물리 오프셋에 맵핑한다.
단계 603에서, 파일(101)의 상이한 세그먼트는 블록의 상이한 데이터 프래그먼츠, 예컨대, 블록 0의 제 7 프래그먼트, 블록 1의 제 3,제 7 및 제 8 프래그먼트로 기록된다. 단계 604에서, 파일 링킹 모듈(103)은, 블록의 논리 어드레스와 블록 내의 데이터 프래그먼트의 논리 오프셋을 포함하여 파일을 저장하는 데이터 프래그먼트의 논리 어드레스를 저장함으로써, 파일 세그먼트를 서로 링크하도록 파일 링킹 테이블을 설정한다.
단계 605에서, 메모리 시스템(12)으로부터 파일(101)을 저장하는 구 블록(예컨대, 블록 1)을 반환(reclaim)할지 여부가 결정된다. 구 블록을 반환하는 것에 응답하여, 단계 606에서, 신규 블록(예컨대, 블록 2)은 구 블록을 대체하도록 할당되고, 논리 오프셋 할당 모듈(106)은 신규 블록의 각 프래그먼트에 대한 논리 오프셋을 할당한다. 상술한 바와 같이, 신규 블록으로부터의 신규 프래그먼트가 구 블록의 구 프래그먼트로부터 복사된 파일 데이터를 저장하도록 선택되면, 논리 오프셋 할당 모듈(106)은 구 프래그먼트에 할당된 논리 오프셋과 동일한 논리 오프셋을 신규 프래그먼트에 대해 할당한다.
단계 607에서, 오프셋 매핑 모듈(105)은 논리 오프셋 할당 모듈(106)에 의해 할당된 논리 오프셋에 근거하여 신규 블록에 대한 신규 LPOMT를 설정한다. 신규 LPOMT는 신규 블록의 각 프래그먼트에 대해 논리 오프셋을 물리 오프셋으로 맵핑한다. 단계 608에서, 블록 어드레스 매핑 모듈(104)은 구 블록의 물리 어드레스를 신규 블록의 물리 어드레스로 변경하도록 LPBAMT를 수정한다. 단계 609에서, 파일 데이터를 포함하는 유효 데이터(valid data)는 구 블록으로부터 신규 블록으로 복사되고, 단계 610에서, 구 블록은 삭제된다.
도 7은 메모리 시스템(12)으로부터 파일(101)을 판독하는 방법의 실시예를 나타낸다. 단계 701에서, 메모리 시스템(12)으로부터 파일(101)을 판독할지가 결정된다. 단계 702에서, 파일 링킹 테이블 모듈(103)은 파일(101)에 대한 파일 링킹 테이블을 인출한다. 단계 703에서, 파일 링킹 테이블 모듈(103)은 블록의 데이터 프래그먼트 상에 저장된 파일 세그먼트의 엔트리를 파일 링킹 테이블로부터 검색한다. 단계 704에서, 파일 링킹 테이블 모듈(103)은 파일 링킹 테이블 엔트리로부터 블록의 논리 블록 어드레스와 데이터 프래그먼트의 논리 오프셋을 인출한다.
단계 705에서, 블록 어드레스 매핑 모듈(104)은 파일 링킹 테이블로부터 인출된 논리 블록 어드레스를 LPBAMT에 근거하여 물리 블록 어드레스로 변환한다. 단계 706에서, 오프셋 매핑 모듈(105)은 파일 링킹 테이블로부터 인출된 논리 오프셋을 LPOMT에 근거하여 물리 오프셋으로 변환한다. 단계 707에서, 파일 매니저(102)는 물리 블록 어드레스와 물리 오프셋에 의해 표시된 데이터 프래그먼트 내에 저장된 파일 세그먼트를 판독한다. 그러면, 단계 708에서, 파일 세그먼트가 파일(101)의 마지막 것인지 여부를 판정한다. 파일 세그먼트가 마지막 것이 아닌 경우에는, 상술한 단계 703~707이 다른 파일 세그먼트를 판독하기 위해 한번 더 실행된다.
본 발명은 임의 실시예와 관련지어 설명되고 있지만, 변형 및 변경은 당업자가 쉽게 이해할 수 있을 정도로 본 발명의 정신 및 범주로부터 벗어나지 않게 취해 지는 것임이 이해되어야 할 것이다. 이와 같은 변형 및 변경은 본 발명의 관점과 첨부한 청구항에서 고려된다.

Claims (18)

  1. 제 1 메모리 블록의 복수의 제 1 프래그먼트들에 대해 상기 제 1 메모리 블록 내의 복수의 제 1 논리 오프셋들을 할당하는 단계 - 상기 복수의 제 1 논리 오프셋들은 상기 복수의 제 1 프래그먼트들에 대해 일대일 대응 관계(one-to-one correspondence)를 갖고, 상기 복수의 제 1 프래그먼트들 중 제 1 프래그먼트가 데이터를 저장함 - 와,
    제 2 메모리 블록의 복수의 제 2 프래그먼트들에 대해 상기 제 2 메모리 블록 내의 복수의 제 2 논리 오프셋들을 할당하는 단계 - 상기 복수의 제 2 논리 오프셋들은 상기 복수의 제 2 프래그먼트들에 대해 일대일 대응 관계를 갖고, 상기 복수의 제 2 프래그먼트들 중 제 2 프래그먼트는 상기 제 1 프래그먼트와 연관되고, 상기 제 2 프래그먼트에 할당되는 상기 복수의 제 2 논리 오프셋들 중 제 2 논리 오프셋은 상기 제 1 프래그먼트에 할당되는 상기 복수의 제 1 논리 오프셋들 중 제 1 논리 오프셋과 동일함 - 와,
    상기 제 1 메모리 블록에 대한 제 1 테이블을 설정하는 단계 - 상기 제 1 테이블은 상기 제 1 논리 오프셋을 상기 제 1 프래그먼트의 제 1 물리 오프셋에 맵핑함 - 와,
    상기 제 2 메모리 블록에 대한 제 2 테이블을 설정하는 단계 - 상기 제 2 테이블은 상기 제 2 논리 오프셋을 상기 제 2 프래그먼트의 제 2 물리 오프셋에 맵핑함 - 와,
    상기 제 1 프래그먼트로부터 상기 제 2 프래그먼트로 데이터를 복사하는 단계
    를 포함하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 제 1 논리 오프셋을 저장하기 위한 제 3 테이블을 설정하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 제 1 메모리 블록의 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하기 위한 제 4 테이블을 설정하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 제 4 테이블 내의 상기 제 1 물리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변경하는 단계를 더 포함하는 방법.
  6. 제 3 항에 있어서,
    상기 제 3 테이블에 영향을 주지 않고 상기 제 1 메모리 블록을 소거하는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 오프셋을 얻는 단계와,
    상기 제 1 논리 어드레스를 상기 제 1 메모리 블록의 제 1 물리 어드레스로 변환하는 단계와,
    상기 제 1 논리 오프셋을 상기 제 1 프래그먼트의 제 1 물리 오프셋으로 변환하는 단계와,
    상기 제 1 프래그먼트로부터 상기 데이터를 판독하는 단계
    를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 논리 오프셋을 얻는 단계와,
    상기 제 1 논리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변환하는 단계와,
    상기 제 1 논리 오프셋을 상기 제 2 세그먼트의 제 2 물리 오프셋으로 변환하는 단계와,
    상기 제 2 프래그먼트로부터 상기 데이터를 판독하는 단계
    를 더 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 제 1 메모리 블록과 상기 제 2 메모리 블록은 비휘발성 메모리 블록인 방법.
  10. 복수의 명령을 포함하는 기계 판독 가능한 매체(machine-readable medium)에 있어서, 상기 복수의 명령은 실행시에 시스템으로 하여금
    제 1 메모리 블록의 복수의 제 1 프래그먼트들에 대해 상기 제 1 메모리 블록 내의 복수의 제 1 논리 오프셋들을 할당하는 단계 - 상기 복수의 제 1 논리 오프셋들은 상기 복수의 제 1 프래그먼트들에 대해 일대일 대응 관계를 갖고, 상기 복수의 제 1 프래그먼트들 중 제 1 프래그먼트가 데이터를 저장함 - 와,
    제 2 메모리 블록의 복수의 제 2 프래그먼트들에 대해 상기 제 2 메모리 블록 내의 복수의 제 2 논리 오프셋들을 할당하는 단계 - 상기 복수의 제 2 논리 오프셋들은 상기 복수의 제 2 프래그먼트들에 대해 일대일 대응 관계를 갖고, 상기 복수의 제 2 프래그먼트들 중 제 2 프래그먼트는 상기 제 1 프래그먼트와 연관되고, 상기 제 2 프래그먼트에 할당되는 상기 복수의 제 2 논리 오프셋들 중 제 2 논리 오프셋은 상기 제 1 프래그먼트에 할당되는 상기 복수의 제 1 논리 오프셋들 중 제 1 논리 오프셋과 동일함 - 와,
    상기 제 1 메모리 블록에 대한 제 1 테이블을 설정하는 단계 - 상기 제 1 테이블은 상기 제 1 논리 오프셋을 상기 제 1 프래그먼트의 제 1 물리 오프셋에 맵핑함 - 와,
    상기 제 2 메모리 블록에 대한 제 2 테이블을 설정하는 단계 - 상기 제 2 테이블은 상기 제 2 논리 오프셋을 상기 제 2 프래그먼트의 제 2 물리 오프셋에 맵핑함 - 와,
    상기 제 1 프래그먼트로부터 상기 제 2 프래그먼트로 데이터를 복사하는 단계
    를 실행하도록 하는 명령을 포함하는 기계 판독 가능한 매체.
  11. 삭제
  12. 제 10 항에 있어서,
    상기 복수의 명령은 실행시에 시스템으로 하여금
    상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 제 1 논리 오프셋을 저장하기 위한 제 3 테이블을 설정하는 단계를 더 실행하도록 하는
    기계 판독 가능한 매체.
  13. 제 10 항에 있어서,
    상기 복수의 명령은 실행시에 시스템으로 하여금
    상기 제 1 메모리 블록의 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하기 위한 제 4 테이블을 설정하는 단계를 더 실행하도록 하는
    기계 판독 가능한 매체.
  14. 제 13 항에 있어서,
    상기 제 4 테이블 내의 상기 제 1 물리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변경하는 단계를 더 실행하도록 하는
    기계 판독 가능한 매체.
  15. 제 12 항에 있어서,
    상기 복수의 명령은 실행시에 시스템으로 하여금
    상기 제 3 테이블에 영향을 주지 않고 상기 제 1 메모리 블록을 소거하는 단계를 더 실행하도록 하는
    기계 판독 가능한 매체.
  16. 제 10 항에 있어서,
    상기 복수의 명령은 실행시에 시스템으로 하여금
    상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 오프셋을 얻는 단계와,
    상기 제 1 논리 어드레스를 상기 제 1 메모리 블록의 제 1 물리 어드레스로 변환하는 단계와,
    상기 제 1 논리 오프셋을 상기 제 1 프래그먼트의 제 1 물리 오프셋으로 변환하는 단계와,
    상기 제 1 프래그먼트로부터 상기 데이터를 판독하는 단계
    를 더 실행하도록 하는
    기계 판독 가능한 매체.
  17. 제 10 항에 있어서,
    상기 복수의 명령은 실행시에 시스템으로 하여금
    상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 논리 오프셋을 얻는 단계와,
    상기 제 1 논리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변환하는 단계와,
    상기 제 1 논리 오프셋을 상기 제 2 세그먼트의 제 2 물리 오프셋으로 변환하는 단계와,
    상기 제 2 프래그먼트로부터 상기 데이터를 판독하는 단계
    를 더 실행하도록 하는 기계 판독 가능한 매체.
  18. 제 10 항에 있어서,
    상기 제 1 메모리 블록과 상기 제 2 메모리 블록은 비휘발성 메모리 블록인 기계 판독 가능한 매체.
KR1020097013272A 2006-12-27 2006-12-27 비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체 KR101150654B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2006/003616 WO2008077285A1 (en) 2006-12-27 2006-12-27 Method of managing data on a non-volatile memory

Publications (2)

Publication Number Publication Date
KR20090087092A KR20090087092A (ko) 2009-08-14
KR101150654B1 true KR101150654B1 (ko) 2012-07-10

Family

ID=39562077

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097013272A KR101150654B1 (ko) 2006-12-27 2006-12-27 비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체

Country Status (5)

Country Link
US (1) US8510533B2 (ko)
JP (1) JP2010515128A (ko)
KR (1) KR101150654B1 (ko)
DE (1) DE112006004185T5 (ko)
WO (1) WO2008077285A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
WO2008077285A1 (en) 2006-12-27 2008-07-03 Intel Corporation Method of managing data on a non-volatile memory
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US10019353B2 (en) * 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US20130290482A1 (en) * 2012-04-25 2013-10-31 Cleversafe, Inc. Retrieving data in a dispersed storage network
DE102013019941A1 (de) * 2013-11-27 2015-05-28 Giesecke & Devrient Gmbh Verfahren zum Betreiben eines Speichersystems sowie ein solches Speichersystem
KR102006449B1 (ko) * 2017-11-29 2019-08-01 네이버 주식회사 분산 트랜스코딩 방법 및 분산 트랜스코딩 시스템
US10901912B2 (en) 2019-01-28 2021-01-26 Western Digital Technologies, Inc. Flash translation layer table for unaligned host writes

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328762A (ja) * 1995-06-06 1996-12-13 Mitsubishi Electric Corp 半導体ディスク装置及びそのメモリ管理方法
JP3197815B2 (ja) * 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
US7174440B2 (en) 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
DE10321104B4 (de) 2003-05-09 2016-04-07 Robert Bosch Gmbh Verfahren zur Ablage von veränderlichen Daten
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
TWI249670B (en) * 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
US20060004950A1 (en) 2004-06-30 2006-01-05 Jeffrey Wang Flash memory file system having reduced headers
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
TWI275101B (en) 2005-05-24 2007-03-01 Prolific Technology Inc Flash memory storage system
CN100407336C (zh) 2005-11-22 2008-07-30 武汉国光通信有限公司 一种嵌入式系统中非易失性存储器的数据存取方法
WO2008077285A1 (en) 2006-12-27 2008-07-03 Intel Corporation Method of managing data on a non-volatile memory

Also Published As

Publication number Publication date
WO2008077285A1 (en) 2008-07-03
US8510533B2 (en) 2013-08-13
JP2010515128A (ja) 2010-05-06
US20120124315A1 (en) 2012-05-17
KR20090087092A (ko) 2009-08-14
DE112006004185T5 (de) 2009-11-19

Similar Documents

Publication Publication Date Title
CN109144888B (zh) 存储器系统
KR101150654B1 (ko) 비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체
US10997065B2 (en) Memory system and operating method thereof
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
US9684568B2 (en) Data storage device and flash memory control method
US8489854B1 (en) Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US7594067B2 (en) Enhanced data access in a storage device
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
USRE44052E1 (en) Flash memory management method
EP1923792A1 (en) Apparatus and method of managing nonvolatile memory
US20080189490A1 (en) Memory mapping
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
US20190065394A1 (en) Method for accessing flash memory module and associated flash memory controller and electronic device
US8949515B2 (en) Storage device and memory controller
US8775758B2 (en) Memory device and method for performing a write-abort-safe firmware update
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
US20140181378A1 (en) Control device, control method, and program
JPWO2007066720A1 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
KR101041837B1 (ko) 파일저장 제어장치 및 방법
WO2011154794A1 (en) Data storage device with preloaded content
US10083181B2 (en) Method and system for storing metadata of log-structured file system
US20080109588A1 (en) Memory Card and Method of Driving the Same
CN109656835B (zh) 非易失性存储器的数据改写方法以及半导体装置
CN107025062B (zh) 数据储存方法及其系统
CN111367823B (zh) 一种写入有效数据的方法以及装置

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
FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee