KR101150654B1 - 비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체 - Google Patents
비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing 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
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 프래그먼트들에 대해 일대일 대응 관계(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 프래그먼트로 데이터를 복사하는 단계를 포함하는 방법.
- 삭제
- 제 1 항에 있어서,상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 제 1 논리 오프셋을 저장하기 위한 제 3 테이블을 설정하는 단계를 더 포함하는 방법.
- 제 1 항에 있어서,상기 제 1 메모리 블록의 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하기 위한 제 4 테이블을 설정하는 단계를 더 포함하는 방법.
- 제 4 항에 있어서,상기 제 4 테이블 내의 상기 제 1 물리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변경하는 단계를 더 포함하는 방법.
- 제 3 항에 있어서,상기 제 3 테이블에 영향을 주지 않고 상기 제 1 메모리 블록을 소거하는 단계를 더 포함하는 방법.
- 제 1 항에 있어서,상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 오프셋을 얻는 단계와,상기 제 1 논리 어드레스를 상기 제 1 메모리 블록의 제 1 물리 어드레스로 변환하는 단계와,상기 제 1 논리 오프셋을 상기 제 1 프래그먼트의 제 1 물리 오프셋으로 변환하는 단계와,상기 제 1 프래그먼트로부터 상기 데이터를 판독하는 단계를 더 포함하는 방법.
- 제 1 항에 있어서,상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 논리 오프셋을 얻는 단계와,상기 제 1 논리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변환하는 단계와,상기 제 1 논리 오프셋을 상기 제 2 세그먼트의 제 2 물리 오프셋으로 변환하는 단계와,상기 제 2 프래그먼트로부터 상기 데이터를 판독하는 단계를 더 포함하는 방법.
- 제 1 항에 있어서,상기 제 1 메모리 블록과 상기 제 2 메모리 블록은 비휘발성 메모리 블록인 방법.
- 복수의 명령을 포함하는 기계 판독 가능한 매체(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 프래그먼트로 데이터를 복사하는 단계를 실행하도록 하는 명령을 포함하는 기계 판독 가능한 매체.
- 삭제
- 제 10 항에 있어서,상기 복수의 명령은 실행시에 시스템으로 하여금상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 제 1 논리 오프셋을 저장하기 위한 제 3 테이블을 설정하는 단계를 더 실행하도록 하는기계 판독 가능한 매체.
- 제 10 항에 있어서,상기 복수의 명령은 실행시에 시스템으로 하여금상기 제 1 메모리 블록의 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하기 위한 제 4 테이블을 설정하는 단계를 더 실행하도록 하는기계 판독 가능한 매체.
- 제 13 항에 있어서,상기 제 4 테이블 내의 상기 제 1 물리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변경하는 단계를 더 실행하도록 하는기계 판독 가능한 매체.
- 제 12 항에 있어서,상기 복수의 명령은 실행시에 시스템으로 하여금상기 제 3 테이블에 영향을 주지 않고 상기 제 1 메모리 블록을 소거하는 단계를 더 실행하도록 하는기계 판독 가능한 매체.
- 제 10 항에 있어서,상기 복수의 명령은 실행시에 시스템으로 하여금상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 오프셋을 얻는 단계와,상기 제 1 논리 어드레스를 상기 제 1 메모리 블록의 제 1 물리 어드레스로 변환하는 단계와,상기 제 1 논리 오프셋을 상기 제 1 프래그먼트의 제 1 물리 오프셋으로 변환하는 단계와,상기 제 1 프래그먼트로부터 상기 데이터를 판독하는 단계를 더 실행하도록 하는기계 판독 가능한 매체.
- 제 10 항에 있어서,상기 복수의 명령은 실행시에 시스템으로 하여금상기 제 1 메모리 블록의 제 1 논리 어드레스와 상기 제 1 프래그먼트의 상기 제 1 논리 오프셋을 얻는 단계와,상기 제 1 논리 어드레스를 상기 제 2 메모리 블록의 제 2 물리 어드레스로 변환하는 단계와,상기 제 1 논리 오프셋을 상기 제 2 세그먼트의 제 2 물리 오프셋으로 변환하는 단계와,상기 제 2 프래그먼트로부터 상기 데이터를 판독하는 단계를 더 실행하도록 하는 기계 판독 가능한 매체.
- 제 10 항에 있어서,상기 제 1 메모리 블록과 상기 제 2 메모리 블록은 비휘발성 메모리 블록인 기계 판독 가능한 매체.
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)
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)
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 |
-
2006
- 2006-12-27 WO PCT/CN2006/003616 patent/WO2008077285A1/en active Application Filing
- 2006-12-27 KR KR1020097013272A patent/KR101150654B1/ko not_active IP Right Cessation
- 2006-12-27 US US12/517,062 patent/US8510533B2/en active Active
- 2006-12-27 JP JP2009543320A patent/JP2010515128A/ja active Pending
- 2006-12-27 DE DE112006004185T patent/DE112006004185T5/de not_active Ceased
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 |