KR20100057346A - 메모리 장치 및 메모리 장치의 관리 방법 - Google Patents
메모리 장치 및 메모리 장치의 관리 방법 Download PDFInfo
- Publication number
- KR20100057346A KR20100057346A KR1020080116347A KR20080116347A KR20100057346A KR 20100057346 A KR20100057346 A KR 20100057346A KR 1020080116347 A KR1020080116347 A KR 1020080116347A KR 20080116347 A KR20080116347 A KR 20080116347A KR 20100057346 A KR20100057346 A KR 20100057346A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- data
- block
- stored
- mapping table
- 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/04—Addressing variable-length words or parts of words
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
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)
Abstract
Description
본 발명은 메모리 장치 및 메모리 장치의 동작 방법에 관한 것으로서, 특히 비휘발성 메모리(non-volatile memory)에 기반한 메모리 장치 및 메모리 장치의 동작 방법에 관한 것이다.
비휘발성 메모리 장치는 전기적으로 읽기(read), 쓰기(write) 및 소거(erase)가 가능하며, 공급 전원이 없는 상태에서도 저장된 데이터를 유지할 수 있는 반도체 메모리 장치이다. 비휘발성 메모리 장치에 대한 데이터의 저장 과정은 쓰기 외에도 프로그래밍(programming)이라고 불리기도 한다.
한편 비휘발성 메모리, 특히 낸드 플래시 메모리(NAND Flash memory)는 킬로바이트(kilobyte) 당 수십 마이크로초(microsecond)의 읽기 시간 및 수백 마이크로초의 쓰기 시간을 특성으로 가진다. 또한, 낸드 플래시 메모리는 쓰기 시간과 다른 소거 시간을 가지는 것이 일반적인데, 소거 시간은 수 밀리초(millisecond)에 이르기 때문에 전체 데이터에 대한 소거 시간을 단축하기 위해 복수의 메모리 셀들을 동시에 소거하는 방법이 널리 사용된다. 이 때, 동시에 소거되는 복수의 메모 리 셀들의 단위를 소거 유닛(erase unit)이라 한다
비휘발성 메모리 장치에 대한 프로그래밍은 페이지 단위로 수행될 수 있고 소거는 블록 단위로 수행될 수 있다. 블록은 복수의 페이지들을 포함할 수 있다. 비휘발성 메모리 장치는 외부의 호스트(host) 또는 프로세서(processor)에 논리 주소 (logical address)를 제공하고, 비휘발성 메모리 장치에 대해서는 물리 주소 (physical address)를 제공할 수 있다. 비휘발성 메모리 장치는 물리 주소를 이용하여 비휘발성 메모리 장치를 관리하고, 물리 주소를 논리 주소로 변환할 수 있다. 이처럼 물리 주소와 논리 주소 사이의 변환이 수행되는 계층을 플래시 변환 계층 (Flash Translation Layer)라 하기도 한다.
본 발명의 일부 실시예는, 논리 주소와 물리 주소를 매핑하기 위한 매핑 테이블의 저장 공간을 줄이는 메모리 장치 및 메모리 관리 방법을 제공하기 위한 것이다.
본 발명의 다른 일부 실시예는, 비휘발성 메모리에 대한 읽기 명령 또는 쓰기 명령을 효율적으로 처리하는 메모리 장치 및 메모리 관리 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따르면, 제1 데이터를 저장하는 데이터 블록, 및 상기 제1 데이터의 업데이트된 값인 제2 데이터를 저장하는 로그 블록을 포함하고, 상기 로그 블록의 잉여 영역은 상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 저장하는 것을 특징으로 하는 메모리 장치가 제공된다.
한편, 상기 데이터 블록은 복수 개의 페이지를 포함하고, 상기 제1 매핑 테이블은 복수 개의 필드를 포함하고, 상기 복수 개의 필드의 각각은 상기 데이터 블록의 복수 개의 페이지의 각각에 대응할 수 있다.
본 발명의 일 실시예에 따르면, 상기 제1 데이터를 업데이트하는 경우, 상기 제2 데이터는 상기 로그 블록의 클린 페이지에 저장된다. 또한, 상기 제1 매핑 테이블은 상기 제2 데이터가 저장되는 상기 클린 페이지의 잉여 영역에 저장될 수 있 다. 한편, 상기 제1 매핑 테이블의 복수 개의 필드 중 상기 제1 페이지에 대응하는 필드에, 상기 제2 데이터가 저장되는 상기 클린 페이지에 대응하는 값이 저장된다.
본 발명의 일 실시예에 따르면, 상기 로그 블록의 클린 페이지가 존재하지 않는 경우, 새로운 로그 블록이 할당되고, 상기 제2 데이터를 상기 새로운 로그 블록의 클린 페이지에 저장된다. 한편, 상기 제1 매핑 테이블은 상기 제2 데이터가 저장되는 상기 새로운 로그 블록의 클린 페이지의 잉여 영역에 저장된다.
본 발명의 다른 일 실시예에 따르면, 상기 데이터 블록의 복수 개의 페이지 중 제1 페이지에 대응하는 데이터를 판독하는 경우, 상기 로그 블록의 클린 페이지와 이웃한 페이지의 잉여 영역에 저장된 상기 제1 매핑 테이블의 복수 개의 필드 중, 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터가 판독된다.
한편, 상기 제1 페이지에 대응하는 필드에 저장된 값이 상기 로그 블록 내의 제2 페이지의 주소인 경우, 상기 제2 페이지에 저장된 상기 제2 데이터가 상기 제1 페이지에 대응하는 데이터로서 독출된다.
본 발명의 일 실시예에 따르면, 상기 제1 페이지에 대응하는 필드에 저장된 값이 존재하지 않는 경우, 상기 로그 블록이 참조하는 제1 블록의 잉여 영역에 저장된 제3 매핑 테이블의 복수 개의 필드 중 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터가 판독된다.
본 발명의 또 다른 일 실시예에 따르면, 제1 데이터를 저장하는 복수 개의 데이터 블록, 상기 제1 데이터의 업데이트된 값인 제2 데이터를 저장하는 적어도 하나의 로그 블록, 및 논리 블록 주소와 물리 블록 주소를 매핑하는 매핑 테이블 -단, 상기 매핑 테이블 내에는 상기 물리 블록 주소에 대응하는 클린 페이지 오프셋이 저장됨 - 을 저장하는 메타 블록을 포함하고, 상기 적어도 하나의 로그 블록의 각각의 잉여 영역은 상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 저장하는 것을 특징으로 하는 메모리 장치가 제공된다.
상기 복수 개의 데이터 블록 중 제1 데이터 블록은 복수 개의 페이지를 포함하고, 상기 제1 데이터 블록을 참조하는 제1 로그 블록의 잉여 영역에 저장된 상기 제1 매핑 테이블은 복수 개의 필드를 포함하고, 상기 복수 개의 필드의 각각은 상기 제1 데이터 블록의 복수 개의 페이지의 각각에 대응할 수 있다.
한편, 제1 페이지에 대응하는 데이터를 판독하는 경우, 상기 제1 페이지의 논리 페이지 주소에 대응하는 제1 논리 블록 주소 및 제1 페이지 오프셋을 계산하고, 상기 매핑 테이블을 이용하여 상기 제1 논리 블록 주소에 대응하는 제1 물리 블록 주소 및 상기 제1 물리 블록의 클린 페이지 오프셋을 결정하고, 상기 로그 블록의 클린 페이지와 이웃한 페이지의 잉여 영역에 저장된 상기 제1 매핑 테이블의 복수 개의 필드 중, 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터를 판독하는 것을 특징으로 하는 메모리 장치가 제공된다.
본 발명의 또 다른 일 실시예에 따르면, 제1 데이터를 데이터 블록에 저장하는 단계, 상기 제1 데이터의 업데이트된 값인 제2 데이터를 로그 블록의 클린 페이 지에 저장하는 단계, 및 상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 상기 로그 블록의 클린 페이지의 잉여 영역에 저장하는 단계를 포함하는 메모리 관리 방법이 제공된다.
상기 데이터 블록은 복수 개의 페이지를 포함하고, 상기 제1 매핑 테이블은 복수 개의 필드를 포함하고, 상기 복수 개의 필드의 각각은 상기 데이터 블록의 복수 개의 페이지의 각각에 대응할 수 있다.
본 발명의 일 실시예에 따르면, 상기 데이터 블록의 복수 개의 페이지 중 제1 페이지에 대응하는 데이터를 판독하는 경우, 상기 메모리 관리 방법은 상기 제1 페이지의 논리 페이지 주소에 대응하는 제1 논리 블록 주소 및 제1 페이지 오프셋을 계산하고, 상기 매핑 테이블을 이용하여 상기 제1 논리 블록 주소에 대응하는 제1 물리 블록 주소 및 상기 제1 물리 블록의 클린 페이지 오프셋을 결정하는 단계, 및 상기 로그 블록의 클린 페이지와 이웃한 페이지의 잉여 영역에 저장된 상기 제1 매핑 테이블의 복수 개의 필드 중, 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터를 판독하는 단계를 더 포함한다.
본 발명의 일부 실시예에 따르면, 메모리 장치 내에서 논리 주소와 물리 주소를 매핑하기 위한 매핑 테이블을 위해 할당되는 별도의 저장 공간을 줄일 수 있다.
본 발명의 다른 일부 실시예에 따르면, 비휘발성 메모리에 대한 읽기 명령 또는 쓰기 명령이 효율적으로 처리된다.
이하에서, 본 발명의 일 실시예에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치를 도시한다.
메모리 장치(100)는 낸드(NAND) 플래시 메모리일 수 있고 노어 (NOR) 플래시 메모리일 수도 있다. 낸드 플래시 메모리는 최근 대용량의 스토리지를 구현하는 데 널리 사용되고 있다. 그러나, 상기 메모리 장치(100)는 특정 메모리 구조인 것으로 제한되지 않는다.
이를테면, 상기 플래시 메모리를 포함하는 고체 상태 디스크 (Solid State Disk, SSD)일 수도 있다. SSD는 다수의 플래시 메모리 칩들을 이용하여 대용량의 스토리지(storage)를 구현하는 장치이다.
낸드 플래시 메모리는 킬로바이트 당 수십 마이크로초(microsecond)의 읽기 시간 및 수백 마이크로초의 쓰기 시간을 특성으로 가진다. 또한, 낸드 플래시 메모리는 쓰기 시간과 다른 소거 시간을 가지는 것이 일반적인데, 소거 시간은 수 밀리초에 이르기 때문에 전체 데이터에 대한 소거 시간을 단축하기 위해 복수의 메모리 셀들을 동시에 소거하는 방법이 널리 사용된다. 이 때, 동시에 소거되는 복수의 메모리 셀들의 단위를 소거 유닛(erase unit), 소거 블록 (erase block) 또는 블록이라 한다.
한편, 낸드 플래시 메모리에서 동시에 데이터를 쓰거나(Write), 또는 읽는(Read) 복수의 메모리 셀들의 단위를 페이지(page)라 하며, 한 개의 블록에는 복수 개의 페이지(이를테면, 64개)가 포함되어 있다.
그리고 각 페이지는 데이터를 저장하는 복수 개의 섹터(sector) 및 잉여 영역(spare)을 포함한다. 잉여 영역(spare 또는 spare area)은 메모리(이를 테면 낸드 플래시 메모리)의 각 페이지마다 추가로 존재하는 저장 영역으로서, 상기 잉여 영역에는 메타 데이터(meta data), 에러 수정(error correction)을 위한 정보가 저장될 수 있다. 예를 들어 한 개의 페이지의 크기가 2 킬로바이트(killo Byte)인 경우, 상기 잉여 영역은 64 바이트(Byte)의 크기를 가질 수 있다. 그리고 한 개의 페이지 내에 상기 잉여 영역은 두 개 이상으로 분할되어 있을 수도 있다. 그러나, 상기 잉여 영역은 특정 크기, 구조, 또는 용도로 한정되는 것이 아니며, 각 페이지에서 데이터를 저장하는 섹터를 제외한 나머지 부분이면 그 크기와 용도에 한정되지 않는다.
본 발명의 일 실시예에 따르면, 메모리 장치(100)은 블록 매핑 테이블(block mapping table)(110)을 포함한다. 상기 블록 매핑 테이블은 주소 변환 테이블(Address Translation Table)이라고도 한다. 상기 블록 매핑 테이블(110)은 논리적 블록 주소(Logical Block Address)에 해당하는 복수 개의 필드(field)(또는 엔트리(entry)라고도 한다. 이하 같다) 각각에 물리적 블록 주소 및 상기 물리적 블록 주소의 클린 페이지 오프셋을 저장한다.
이를테면, 논리적 블록 주소 126에 해당하는 물리적 블록 주소는 33이고, 블록 33의 클린 페이지 오프셋은 4이다.
데이터 블록(140)은 복수 개의 페이지(본 실시예에서는 8개)를 갖는다. 상기 데이터 블록(140)의 물리적 블록 주소는 128이다. 블록(140)의 0번 페이지 내지 7번 페이지에 제1 데이터가 기록되는 경우, 상기 페이지의 각각의 잉여 영역에는 페이지 매핑 테이블이 저장될 수 있다.
본 발명의 일 실시예에 따르면, 로그 블록(130)은 8개의 페이지를 갖는다. 상기 로그 블록(130)의 물리적 블록 주소는 7이다. 상기 블록 7(130)은 데이터 블록 128(140)을 참조한다. 상기 블록 128(140)의 각 페이지에 저장되는 제1 데이터의 업데이트된 값인 제2 데이터가 상기 블록 7(130)의 각 페이지 내에 저장된다.
그리고, 상기 블록 7(130)의 각 페이지의 잉여 영역(spare)에 상기 블록 7(130)의 각 페이지와 상기 블록 128(140)의 각 페이지 간의 페이지 매핑 정보가 저장된다. 상기 매핑 정보는 페이지 매핑 테이블일 수 있다. 예를 들어, 블록 7(130)의 7번 페이지의 잉여 영역(132)에 저장되는 매핑 테이블(133)은 8개의 필드를 갖는다. 상기 8개의 필드의 각각은 상기 데이터 블록 128(140)의 8개의 페이지의 각각에 대응한다.
페이지 매핑 테이블(133)의 0번 필드는 7을 저장하고 있다. 따라서, 블록 7(130)의 7번 페이지에 블록 128(140)의 0번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다.
페이지 매핑 테이블(133)의 1번 필드는 6을 저장하고 있다. 따라서, 블록 7(130)의 6번 페이지에 블록 128(140)의 1번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다.
마찬 가지로, 페이지 매핑 테이블(133)의 2번 필드를 읽으면, 블록 7(130)의 2번 페이지에 블록 128(140)의 2번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다.
그리고, 페이지 매핑 테이블(133)의 3번 필드를 읽으면, 블록 7(130)의 3번 페이지에 블록 128(140)의 3번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다. 또한, 페이지 매핑 테이블(133)의 4번 필드를 읽으면, 블록 7(130)의 4번 페이지에 블록 128(140)의 4번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다.
한편, 페이지 매핑 테이블(133)의 5번 필드 내지 7번 필드는 값이 저장되어 있지 않다. 즉, free 하거나, 또는 invalid 하다. 따라서, 블록 7(130)에는 블록 128(140)의 5번 페이지 내지 7번 페이지의 제1 데이터를 업데이트 한 값이 저장되지 않았음을 알 수 있다.
페이지(또는 테이블의 필드)에 데이터가 저장되어 있지 않은 경우에 free하다고 한다. 그리고 페이지에 데이터가 저장되어 있고 저장된 데이터가 valid한 경우에 페이지가 valid하다고 할 수 있다. 한편, 페이지에 데이터가 저장되어 있으나 저장된 데이터가 valid하지 않은 경우에 페이지가 invalid하다고 할 수 있다.
로그 블록(120)도 8개의 페이지를 갖는다. 상기 로그 블록(120)의 물리적 블록 주소는 33이다. 상기 블록 33(120)은 로그 블록 7(130)을 참조한다. 상기 블록 128(140)의 각 페이지에 저장되는 제1 데이터의 업데이트된 값인 제2 데이터가 상기 로그 블록 33(120)의 각 페이지 내에 저장된다.
그리고, 상기 블록 33(120)의 각 페이지의 잉여 영역에도 상기 블록 33(120)의 각 페이지와 상기 블록 128(140)의 각 페이지 간의 페이지 매핑 정보가 저장된다. 상기 매핑 정보는 페이지 매핑 테이블일 수 있다. 예를 들어, 블록 33(120)의 3번 페이지의 잉여 영역(124)에 저장되는 매핑 테이블(125)은 8개의 필드를 갖는다. 상기 8개의 필드의 각각은 상기 데이터 블록 128(140)의 8개의 페이지의 각각에 대응한다
페이지 매핑 테이블(125)의 0번 필드는 2를 저장하고 있다. 따라서, 블록 33(120)의 2번 페이지에 블록 128(140)의 0번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다.
페이지 매핑 테이블(125)의 1번 필드는 3을 저장하고 있다. 따라서, 블록 33(120)의 3번 페이지(123)에 블록 128(140)의 1번 페이지의 제1 데이터가 업데이트 된 값인 제2 데이터가 저장되어 있음을 알 수 있다.
한편, 페이지 매핑 테이블(125)의 3번 필드 내지 7번 필드는 값이 저장되어 있지 않다. 즉, free 하거나, 또는 invalid 하다. 따라서, 블록 33(120)에는 블록 128(140)의 3번 페이지 내지 7번 페이지의 제1 데이터를 업데이트 한 값이 저장되지 않았음을 알 수 있다.
메모리 장치(100)에 데이터가 저장되고 판독되는 상세한 과정은 도 5 및 도 6을 참조하여 후술한다.
도 2는 본 명의 일 실시예에 따른 블록 매핑 테이블을 도시한다.
본 발명의 일 실시예에 따르면, 블록 매핑 테이블(200)은 낸드 플래시 메모리 내에 포함된다. 그러나, 본 발명은 이에 제한되지 않으며, 본 발명의 다른 일 실시예에 따르면, 상기 블록 매핑 테이블은(200)은 메모리 장치(100)가 부팅되는 경우 DRAM에 저장된다. 이 경우, 물리적 블록 주소(PBN) 또는 클린 페이지 오프셋(CPO)을 랜덤하게 업데이트 하기 용이하다.
한편, 블록 매핑 테이블(200)은 n 개의 - 단, n은 자연수 - 가상 블록 주소(Virtual Block Address; VBA)(또는 논리적 블록 주소)에 해당하는 복수 개의 필드의 각각(이를테면 필드(210))에 물리적 블록 넘버(Physical Block Number; PBA)(이하에서는 "물리적 블록 주소"라고도 한다) 및 상기 물리적 블록 주소의 클린 페이지 오프셋(Clean Page Offset; CPO)를 저장한다.
본 발명의 일 실시예에 따라, 메모리 장치(100)이 논리적 페이지 주소가 1011인 페이지에 접근(읽기 또는 쓰기 등)하는 경우, 상기 메모리 장치(100)는 논리적 블록 주소와 페이지 오프셋을 계산한다. 그리고, 상기 계산된 논리적 블록 주소에 해당하는 필드에 저장된 값을 이용하여, 상기 논리적 페이지 주소가 1011인 페이지에 대응하는 물리적 블록 주소 및 클린 페이지 오프셋을 결정한다.
도 3은 본 발명의 일 실시예에 따라, 메모리 장치에서 다른 로그 블록을 참조하는 로그 블록을 도시한다.
로그 블록 K(310)은, 로그 블록 K'(330)을 참조한다. 로그 블록 K'(330)의 각 페이지는 다른 로그 블록 또는 데이터 블록을 참조할 수 있다.
본 발명의 일 실시예에 따르면, 로그 블록 K'(330)의 6번 페이지의 섹터(331)에는, 로그 블록 K'(330)과 연관되는 데이터 블록(도시되지 않음)의 1번 페이지를 업데이트 한 제2 데이터가 저장된다. 이 경우, 블록 K'(330)의 6번 페이지의 잉여 영역(332)에 저장되는 페이지 매핑 테이블의 1번 필드(도시되지 않음)에는 6이 저장된다.
로그 블록 K'(330)의 7번 페이지의 섹터(333)에는 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 0번 페이지를 업데이트 한 제2 데이터가 저장된다. 이 경우, 블록 K'(330)의 7번 페이지의 잉여 영역(334)에 저장되는 페이지 매핑 테이블의 0번 필드(도시되지 않음)에는 7이 저장된다.
그리고 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 1번 페이지를 다시 업데이트 한 제2 데이터를 저장하기 위해 블록 K(310)가 새로 할당되었다. 블록 K(310)는 블록 K'(330)을 참조한다.
블록 K(310)의 0번 페이지의 섹터(311)에는 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 1번 페이지를 다시 업데이트 한 제2 데이터가 저장된다. 이 경우, 블록 K(310)의 0번 페이지의 잉여 영역(312)에 저장되는 페이지 매핑 테이블의 1번 필드(도시되지 않음)에는 0이 저장된다.
그리고, 블록 K(310)의 1번 페이지의 섹터(313)에는 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 0번 페이지를 다시 업데이트 한 제2 데이터가 저장된다. 이 경우, 블록 K(310)의 1번 페이지의 잉여 영역(314)에 저장되는 페이지 매핑 테이블의 0번 필드(도시되지 않음)에는 1이 저장된다.
그리고, 블록 K(310)의 2번 페이지의 섹터(315)에는 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 0번 페이지를 다시 업데이트 한 제2 데이터가 저장된다. 이 경우, 블록 K(310)의 2번 페이지의 잉여 영역(316)에 저장되는 페이지 매핑 테이블의 0번 필드(도시되지 않음)에는 2가 저장된다.
그리고, 블록 K(310)의 3번 페이지의 섹터(317)에는 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 1번 페이지를 다시 업데이트 한 제2 데이터가 저장된다. 이 경우, 블록 K(310)의 3번 페이지의 잉여 영역(318)에 저장되는 페이지 매핑 테이블의 1번 필드(도시되지 않음)에는 3이 저장된다.
본 발명의 일 실시예에 따라, 메모리 장치(100)가 본 발명의 일 실시예에 따르면, 메모리 장치(100)가 상기 로그 블록 K'(330)과 연관되는 데이터 블록(도시되지 않음)의 복수 개의 페이지 중 하나에 저장된 제1 데이터를 업데이트 하는 경우, 상기 메모리 장치는 블록 K(310)이 가득 찼는지 탐색한다. 그리고 블록 K(310)의 4번 페이지의 섹터(319)에 상기 제1 데이터의 업데이트된 값인 제2 데이터를 저장한다. 그리고, 상기 블록 K(310)의 4번 페이지의 잉여 영역(320)에 저장되는 복수 개의 필드 중 상기 제1 데이터를 업데이트 하는 페이지에 대응하는 필드에 4를 저장한다.
제1 데이터를 업데이트하는 보다 상세한 과정은 도 5를 참조하여 후술한다.
본 발명의 일 실시예에 따르면, 메모리 장치(100)가 상기 로그 블록 K'(330)과 연관되는 데이터 블록의 1번 페이지를 읽는 경우, 상기 메모리 장치(100)는 상기 블록 K(310)의 3번 페이지의 잉여 영역(318)에 저장되는 페이지 매핑 테이블의 1번 필드를 읽는다. 그리고, 상기 1번 필드에 저장된 값을 이용하여, 상기 블록 K(310)의 3번 페이지의 섹터(317)에 저장된 데이터를 반환한다.
그리고 메모리 장치(100)가 상기 로그 블록 K'(330)과 연관되는 데이터 블록(도시되지 않음)의 0번 페이지를 읽는 경우, 상기 메모리 장치(100)는 상기 블록 K(310)의 3번 페이지의 잉여 영역(318)에 저장되는 페이지 매핑 테이블의 0번 필드를 읽는다. 그리고, 상기 0번 필드에 저장된 값을 이용하여, 상기 블록 K(310)의 2번 페이지의 섹터(315)에 저장된 데이터를 반환한다.
한편, 메모리 장치(100)가 상기 로그 블록 K'(330)과 연관되는 데이터 블록(도시되지 않음)의 3번 페이지를 읽는 경우, 상기 메모리 장치(100)는 상기 블록 K(310)의 3번 페이지의 잉여 영역(318)에 저장되는 페이지 매핑 테이블의 3번 필드를 읽는다. 그러나 상기 3번 필드는 clean하거나 또는 invalid 하므로, 상기 메모리 장치(100)은 상기 블록 K(310)이 참조하는 상기 블록 K'(330)에 접근한다. 그리고 상기 블록 K'(330)의 7번(마지막) 페이지의 잉여 영역(334)에 저장되는 페이지 매핑 테이블의 3번 필드에 저장된 값을 이용하여, 상기 블록 K'(330)의 3번 페이지의 섹터에 저장된 데이터를 반환한다.
메모리 장치(100)가 데이터를 판독하는 보다 상세한 과정은 도 6을 참조하여 후술한다.
도 4는 본 발명의 일 실시예에 따라, 각 페이지의 잉여 영역에 저장되는 페이지 맵을 도시한다.
본 발명의 일 실시예에 따르면, 상기 페이지 맵(400)은 페이지 매핑 테이블 이다. 상기 페이지 매핑 테이블(400)은 복수 개의 필드를 포함할 수 있다. 상기 복수 개의 필드(0번 필드 내지 n번 필드 - 단 n은 데이터 블록 하나에 포함되는 페이지 수에 1을 뺀 값으로, 자연수임 - )는, 상기 데이터 블록의 페이지의 각각(0번 페이지 내지 n번 페이지)에 대응한다.
이를테면, 필드(401)는 도 1의 데이터 블록 128(140)의 0번 페이지에 대응하고, 필드(402)는 블록 128(140)의 1번 페이지에 대응한다.
상기 각 필드는 대응하는 페이지의 제1 데이터를 업데이트한 값인 제2 데이터가 저장되는 페이지 정보를 저장할 수 있다.
본 발명의 일 실시예에 따르면, 페이지 매핑 테이블(400)은 로그 블록의 각 페이지의 잉여 영역에 저장될 수 있다. 한편, 본 발명의 다른 일 실시예에 따르면, 매핑 테이블(400)은 상기 데이터 블록 128(140)의 각 페이지의 잉여 영역에 저장된다.
도 5는 본 발명의 일 실시예에 따른 메모리 장치의 데이터 블록 내에 저장된 제1 데이터를 업데이트 하는 과정을 도시한다.
단계(S501)에서 제1 데이터를 업데이트 할 논리적 페이지 주소와, 상기 제1 데이터가 업데이트 된 값인 제2 데이터가 입력된다. 이 경우, 상기 논리적 페이지 주소를 블록의 페이지 수로 나눈다.
이를테면, 도 1의 실시예에서, 상기 논리적 페이지 주소가 1011이고, 한 블록에 8개의 페이지가 포함되는 경우, 논리적 블록 주소는 1011/8 = 126이고, 페이지 오프셋은 3이 된다.
그리고 블록 매핑 테이블(110)을 이용하여, 논리적 블록 주소 126에 해당하는 물리적 블록 주소가 33으로, 그리고 상기 물리적 블록 주소 33의 클린 페이지 오프셋이 4로 결정된다.
단계(S502)에서, 메모리 장치(100)는 상기 블록 33(120)이 가득 찼는지(full)(블록 33이 가득 찼다는 것은, 상기 블록 33에 클린 페이지가 존재하지 않음을 의미함)여부를 판단한다.
본 발명의 일 실시예에 따르면, 상기 물리적 블록 주소 33에 클린 페이지가 존재하는지는 클린 페이지 오프셋에 기초하여 결정된다. 상기 실시예에서, 한 블록에 포함되는 페이지는 8이므로, 클린 페이지 오프셋이 8으로 결정되는 경우는 상기 블록 33에 클린 페이지가 존재하지 않는다고 판단된다.
이 경우 상기 물리적 블록 주소 33의 블록은 가득 찼으므로(full), 단계(S503)에서 메모리 장치(100)는 상기 제2 데이터를 저장하기 위해 새로운 로그 블록(도시되지 않음)을 할당한다.
그리고 단계(S504)에서 상기 블록 매핑 테이블(110)에서 상기 논리적 블록 주소(126)에 대응하는 물리적 블록 주소를 상기 새로 할당되는 로그 블록의 물리적 주소로 업데이트 한다. 따라서 다음에 페이지 주소 1011에 대해 접근(access)하는 경우, 물리적 블록 주소(PBN)는 33이 아닌, 상기 새로 할당되는 로그 블록의 물리적 주소가 된다. 그리고 상기 새로 할당되는 로그 블록이 상기 블록 33(120)을 참조한다는 정보가 저장된다.
단계(S505)에서 상기 블록 매핑 테이블(110)에서 상기 논리적 블록 주 소(126)에 대응하는 클린 페이지 오프셋(CPO)은 0으로 저장된다.
단계(S506)에서는 상기 새로 할당되는 로그 블록의 0번째 페이지의 잉여 영역에 저장될 새로운 페이지 맵이 생성된다. 상기 새로운 페이지 맵은 매핑 테이블일 수 있으며, 상세한 구조는 도 4를 참조하여 상기한 바와 같다.
본 실시예에서, 한 블록에는 8개의 페이지가 포함되므로, 생성되는 상기 페이지 매핑 테이블은 0번부터 7번까지의 필드를 갖는다. 상기 페이지 매핑 테이블의 0번 필드는, 데이터 블록(도 1의 블록 128(140))의 0번 페이지에 대응한다. 그리고 상기 페이지 매핑 테이블의 3번 필드는, 상기 데이터 블록의 3번 페이지에 대응한다.
본 실시예에는 논리적 페이지 주소 1011을 업데이트하고, 이 경우 상기 페이지 오프셋은 3이다. 즉, 상기 데이터 블록 128(140)의 3번 페이지가 제2 데이터로 업데이트 된다. 따라서 생성되는 상기 페이지 매핑 테이블의 3번 필드에 상기 클린 페이지 오프셋인 0이 저장되고, 상기 페이지 매핑 테이블의 나머지 필드는 클린(clean)으로 남아 있다. 혹은, 상기한 바와 같이 상기 페이지 매핑 테이블의 나머지 필드는 invalid로 될 수도 있다.
그리고, 단계(S509)에서 상기 제2 데이터가 새로 할당되는 로그 블록(도시되지 않음)의 0번 페이지의 섹터에 저장되고, 상기 생성되는 페이지 매핑 테이블은 새로 할당되는 로그 블록의 상기 0번 페이지의 잉여 영역에 저장된다.
그리고, 메모리 장치(100)은, 상기 블록 매핑 테이블(110)의 논리 블록 126에 대응하는 클린 페이지 오프셋(CPO)를 CPO = CPO+1로 하여 1 증가 시킨다.
상기 단계(S502)에서, 상기 블록 33(120)이 가득 차지 않았다고 판단되는 경우, 즉 클린 페이지 오프셋이 8이 아닌 경우는 단계(S507)이 수행된다. 이를테면, 도 1에서 도시된 바와 같이, 클린 페이지 오프셋(CPO)이 4일 수 있다.
이 경우 메모리 장치(100)는 클린 페이지인 블록 33(120)의 4번 페이지의 이전 페이지(previous page)인 3번 페이지의 페이지 맵을 독출한다.
그리고 단계(S508)에서, 메모리 장치(100)는 상기 독출한 페이지 맵을 업데이트 한다. 본 실시예에서는 상기 데이터 블록 128(140)의 3번 페이지가 제2 데이터로 업데이트 된다. 따라서 페이지 매핑 테이블의 3번 필드에 상기 클린 페이지 오프셋인 4가 저장되고, 상기 페이지 매핑 테이블의 나머지 필드는 3번 페이지의 잉여 영역으로부터 독출한 상기 페이지 맵을 복사한다.
따라서 상기 데이터 블록 33(120)의 페이지 4의 잉여 영역(122)에 저장될 페이지 맵은, 페이지 3의 잉여 영역(124)에 저장된 페이지 맵(125)의 3번 필드에 4를 저장하고, 나머지 필드들은 페이지 맵(125)와 동일하다.
그러면 상기 3번 페이지의 잉여 영역(124)에 저장된 페이지 맵(125)는 더 이상 valid 하지 않다. 대신, 4번 페이지의 잉여 영역(124)에 저장되는 페이지 맵(도시되지 않음)이 valid 하다.
그리고 단계(S509)에서 상기 블록 128(140)의 3번 페이지를 업데이트 하는 제2 데이터가 블록 33(120)의 4번 페이지의 섹터(121)에 저장되고, 상기 valid한 페이지 맵이 블록 33의 4번 페이지의 잉여 영역(122)에 저장된다.
이 경우 단계(S510)에서 CPO = CPO+1이 수행되어, 클린 페이지 오프셋은 5가 된다. 따라서, 상기 블록 매핑 테이블의 논리적 블록 주소 126에 대응하는 클린 페이지 오프셋이 5이다.
도 6은 본 발명의 일 실시예에 따른 메모리 장치로부터 데이터를 읽는 과정을 도시한다.
단계(S601)에서 데이터를 읽고자 하는 논리적 페이지 주소가 입력된다. 이 경우, 상기 논리적 페이지 주소를 블록의 페이지 수로 나눈다.
이를테면, 도 1의 실시예에서, 상기 논리적 페이지 주소가 1011이고, 한 블록에 8개의 페이지가 포함되는 경우, 논리적 블록 주소는 1011/8 = 126이고, 페이지 오프셋은 3이 된다. 즉, 논리적 블록 주소가 126인 블록의 3번 페이지의 가장 최근 업데이트 된 데이터 값이 판독된다.
그리고 블록 매핑 테이블(110)을 이용하여, 논리적 블록 주소 126에 해당하는 물리적 블록 주소가 33으로, 상기 물리적 블록 주소 33의 클린 페이지 오프셋이 4로 결정된다.
단계(S602)에서 메모리 장치(100)는 상기 클린 페이지인 블록 33(120)의 4번 페이지의 이전 페이지(previous page)의 잉여 영역(124)에 저장된 페이지 맵(125)를 읽는다.
그리고 단계(S603)에서 현재 로그 블록인 블록 33(120)에 읽고자 하는 페이지(블록 128(140)의 3번 페이지)를 업데이트한 제2 데이터가 존재하는지 판단된다. 페이지 맵(125)의 3번 필드에 페이지 번호가 저장되지 않은 경우(즉, 상기 3번 필드가 clean 하거나 invalid인 경우)는, 상기 블록 33(120)에 블록 128(140)의 3번 페이지를 업데이트한 제2 데이터가 존재하지 않는 경우이다.
이 경우 단계(S605)에서, 상기 블록 33(120)이 참조하는 이전 블록(previous block)이 존재하는지 판단된다. 상기 블록 33(120)이 참조하는 블록이 존재하는지 않는 경우, 에러 메시지를 반환하고 판독 과정은 종료된다.
도 1을 참조하는 본 실시예에서는, 상기 블록 33(120)이 참조하는 블록 7(130)이 존재하므로, 단계(S606)이 수행된다.
단계(S606)에서 메모리 장치(100)는 블록 7(130)에 접근하여, 마지막 페이지인 7번 페이지의 잉여 영역(132)에 저장된 페이지 맵(133)을 읽는다. 그리고, 다시 단계(S603)이 수행되어, 현재 로그 블록인 블록 7(130)에 읽고자 하는 페이지(블록 128(140)의 3번 페이지)를 업데이트한 제2 데이터가 존재하는지 판단된다.
페이지 맵(133)의 3번 필드에 페이지 번호 3이 저장되어 있는 경우, 메모리 장치(100)는, 현재 로그 블록인 블록 7(130)의 3번 페이지에 상기 읽고자 하는 페이지(블록 128(140)의 3번 페이지)를 업데이트한 제2 데이터가 존재한다고 판단한다.
그러면, 단계(S604)에서 메모리 장치(100)는 상기 블록 7(130)의 3번 페이지의 섹터(134)로부터 상기 제2 데이터를 읽고, 이것을 상기 논리적 주소 1011에 대한 데이터 값으로 반환한다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단 독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명의 일 실시예에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 구현될 수 있다. 예를 들면, 본 발명의 일 실시예에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 구현될 수 있다.
플래시 메모리 장치와 메모리 컨트롤러는 메모리 카드를 구성할 수 있다. 이러한 경우, 메모리 컨트롤러는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 수 있다.
플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 비휘발성 메모리 장치이다. 셀룰러 폰, PDA, 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용될 수 있다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템 또는 호스트는 버스에 전기적으로 연결된 마이크로프로세서, 사용자 인터페이스, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀, 메모리 컨트롤러, 그리고 플래시 메모리 장치를 포함한다. 플래시 메모리 장치에는 마이크로프로세서에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 컨트롤러를 통해 저장될 것이다. 본 발명의 일 실시예에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 것이다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 컨트롤러와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 비휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치를 도시한다.
도 2는 본 명의 일 실시예에 따른 블록 매핑 테이블을 도시한다.
도 3은 본 발명의 일 실시예에 따라, 메모리 장치에서 다른 로그 블록을 참조하는 로그 블록을 도시한다.
도 4는 본 발명의 일 실시예에 따라, 각 페이지의 잉여 영역에 저장되는 페이지 맵을 도시한다.
도 5는 본 발명의 일 실시예에 따른 메모리 장치의 데이터 블록 내에 저장된 제1 데이터를 업데이트 하는 과정을 도시한다.
도 6은 본 발명의 일 실시예에 따른 메모리 장치로부터 데이터를 읽는 과정을 도시한다.
Claims (20)
- 제1 데이터를 저장하는 데이터 블록; 및상기 제1 데이터의 업데이트된 값인 제2 데이터를 저장하는 로그 블록을 포함하고,상기 로그 블록의 잉여 영역은 상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 저장하는 것을 특징으로 하는 메모리 장치.
- 제1항에 있어서,상기 데이터 블록은 복수 개의 페이지를 포함하고,상기 제1 매핑 테이블은 복수 개의 필드를 포함하고, 상기 복수 개의 필드의 각각은 상기 데이터 블록의 복수 개의 페이지의 각각에 대응하는 것을 특징으로 하는 메모리 장치.
- 제2항에 있어서,상기 제1 데이터를 업데이트하는 경우, 상기 제2 데이터는 상기 로그 블록의 클린 페이지에 저장되는 것을 특징으로 하는 메모리 장치.
- 제3항에 있어서,상기 제1 데이터를 업데이트하는 경우, 상기 제1 매핑 테이블은 상기 제2 데이터가 저장되는 상기 클린 페이지의 잉여 영역에 저장되는 것을 특징으로 하는 메모리 장치.
- 제4항에 있어서,상기 제1 데이터를 업데이트하는 경우, 상기 제1 매핑 테이블의 복수 개의 필드 중 상기 제1 페이지에 대응하는 필드에, 상기 제2 데이터가 저장되는 상기 클린 페이지에 대응하는 값을 저장하는 것을 특징으로 하는 메모리 장치.
- 제5항에 있어서,상기 제1 데이터를 업데이트하는 경우, 상기 클린 페이지와 이웃하는 페이지의 잉여 영역에 저장된 제2 매핑 테이블을 판독하고, 상기 제2 매핑 테이블의 복수 개의 필드 중 상기 제1 페이지에 대응하지 않는 필드의 각각에 저장된 값을 복사하여, 상기 제1 매핑 테이블의 복수 개의 필드 중 상기 제1 페이지에 대응하지 않는 필드의 각각에 저장하는 것을 특징으로 하는 메모리 장치.
- 제3항에 있어서,상기 로그 블록의 클린 페이지가 존재하지 않는 경우, 새로운 로그 블록을 할당하고, 상기 제2 데이터를 상기 새로운 로그 블록의 클린 페이지에 저장하는 것을 특징으로 하는 메모리 장치.
- 제7항에 있어서,상기 제1 매핑 테이블은 상기 제2 데이터가 저장되는 상기 새로운 로그 블록의 클린 페이지의 잉여 영역에 저장되는 것을 특징으로 하는 메모리 장치.
- 제2항에 있어서,상기 데이터 블록의 복수 개의 페이지 중 제1 페이지에 대응하는 데이터를 판독하는 경우, 상기 로그 블록의 클린 페이지와 이웃한 페이지의 잉여 영역에 저장된 상기 제1 매핑 테이블의 복수 개의 필드 중, 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터를 판독하는 것을 특징으로 하는 메모리 장치.
- 제9항에 있어서,상기 제1 페이지에 대응하는 필드에 저장된 값이 상기 로그 블록 내의 제2 페이지의 주소인 경우, 상기 제2 페이지에 저장된 상기 제2 데이터를 상기 제1 페이지에 대응하는 데이터로서 독출하는 것을 특징으로 하는 메모리 장치.
- 제9항에 있어서,상기 제1 페이지에 대응하는 필드에 저장된 값이 존재하지 않는 경우, 상기 로그 블록이 참조하는 제1 블록의 잉여 영역에 저장된 제3 매핑 테이블의 복수 개 의 필드 중 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터를 판독하는 것을 특징으로 하는 메모리 장치.
- 제1 데이터를 저장하는 복수 개의 데이터 블록;상기 제1 데이터의 업데이트된 값인 제2 데이터를 저장하는 적어도 하나의 로그 블록; 및논리 블록 주소와 물리 블록 주소를 매핑하는 매핑 테이블 -단, 상기 매핑 테이블 내에는 상기 물리 블록 주소에 대응하는 클린 페이지 오프셋이 저장됨 - 을 저장하는 메타 블록을 포함하고,상기 적어도 하나의 로그 블록의 각각의 잉여 영역은 상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 저장하는 것을 특징으로 하는 메모리 장치.
- 제12항에 있어서,상기 복수 개의 데이터 블록 중 제1 데이터 블록은 복수 개의 페이지를 포함하고,상기 제1 데이터 블록을 참조하는 제1 로그 블록의 잉여 영역에 저장된 상기 제1 매핑 테이블은 복수 개의 필드를 포함하고, 상기 복수 개의 필드의 각각은 상기 제1 데이터 블록의 복수 개의 페이지의 각각에 대응하는 것을 특징으로 하는 메 모리 장치.
- 제13항에 있어서,제1 페이지에 대응하는 데이터를 판독하는 경우, 상기 제1 페이지의 논리 페이지 주소에 대응하는 제1 논리 블록 주소 및 제1 페이지 오프셋을 계산하고, 상기 매핑 테이블을 이용하여 상기 제1 논리 블록 주소에 대응하는 제1 물리 블록 주소 및 상기 제1 물리 블록의 클린 페이지 오프셋을 결정하고, 상기 로그 블록의 클린 페이지와 이웃한 페이지의 잉여 영역에 저장된 상기 제1 매핑 테이블의 복수 개의 필드 중, 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터를 판독하는 것을 특징으로 하는 메모리 장치.
- 제1 데이터를 데이터 블록에 저장하는 단계;상기 제1 데이터의 업데이트된 값인 제2 데이터를 로그 블록의 클린 페이지에 저장하는 단계; 및상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 상기 로그 블록의 클린 페이지의 잉여 영역에 저장하는 단계를 포함하는 메모리 관리 방법.
- 제15항에 있어서,상기 데이터 블록은 복수 개의 페이지를 포함하고, 상기 제1 매핑 테이블은 복수 개의 필드를 포함하고, 상기 복수 개의 필드의 각각은 상기 데이터 블록의 복수 개의 페이지의 각각에 대응하는 것을 특징으로 하는 메모리 관리 방법.
- 제16항에 있어서,상기 제1 매핑 테이블의 복수 개의 필드 중 상기 제1 페이지에 대응하는 필드에는, 상기 제2 데이터가 저장되는 상기 클린 페이지에 대응하는 값이 저장되는 것을 특징으로 하는 메모리 관리 방법.
- 제15항에 있어서,상기 로그 블록의 클린 페이지가 존재하지 않는 경우, 새로운 로그 블록을 할당하는 단계;상기 제2 데이터를 상기 새로운 로그 블록의 클린 페이지에 저장하는 단계; 및상기 제1 데이터 및 상기 제2 데이터 사이의 매핑 정보를 포함하는 제1 매핑 테이블을 상기 새로운 로그 블록의 클린 페이지의 잉여 영역에 저장하는 단계를 더 포함하는 메모리 관리 방법.
- 제16항에 있어서,상기 데이터 블록의 복수 개의 페이지 중 제1 페이지에 대응하는 데이터를 판독하는 경우,상기 제1 페이지의 논리 페이지 주소에 대응하는 제1 논리 블록 주소 및 제1 페이지 오프셋을 계산하고, 상기 매핑 테이블을 이용하여 상기 제1 논리 블록 주소에 대응하는 제1 물리 블록 주소 및 상기 제1 물리 블록의 클린 페이지 오프셋을 결정하는 단계; 및상기 로그 블록의 클린 페이지와 이웃한 페이지의 잉여 영역에 저장된 상기 제1 매핑 테이블의 복수 개의 필드 중, 상기 제1 페이지에 대응하는 필드에 저장된 값에 기초하여 상기 제1 페이지에 대응하는 데이터를 판독하는 단계를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
- 제15항 내지 제19항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20080116347A KR101510120B1 (ko) | 2008-11-21 | 2008-11-21 | 메모리 장치 및 메모리 장치의 관리 방법 |
US12/535,785 US9292435B2 (en) | 2008-11-21 | 2009-08-05 | Memory device and method of operation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20080116347A KR101510120B1 (ko) | 2008-11-21 | 2008-11-21 | 메모리 장치 및 메모리 장치의 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100057346A true KR20100057346A (ko) | 2010-05-31 |
KR101510120B1 KR101510120B1 (ko) | 2015-04-10 |
Family
ID=42197444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20080116347A KR101510120B1 (ko) | 2008-11-21 | 2008-11-21 | 메모리 장치 및 메모리 장치의 관리 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9292435B2 (ko) |
KR (1) | KR101510120B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013025083A2 (ko) * | 2011-08-18 | 2013-02-21 | 영남대학교 산학협력단 | 피램에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI399644B (zh) * | 2009-12-24 | 2013-06-21 | Univ Nat Taiwan | 非揮發記憶體區塊管理方法 |
CN102364450A (zh) * | 2011-06-27 | 2012-02-29 | 浪潮电子信息产业股份有限公司 | 一种NandFlash物理地址和逻辑地址映射的方法 |
KR101445025B1 (ko) * | 2012-02-09 | 2014-09-26 | 서울시립대학교 산학협력단 | 신뢰성 있는 ssd를 위한 효율적인 raid 기법 |
US9971685B2 (en) * | 2016-04-01 | 2018-05-15 | Intel Corporation | Wear leveling based on a swapping operation between sets of physical block addresses of a non-volatile memory |
JP6912240B2 (ja) * | 2017-03-29 | 2021-08-04 | ラピスセミコンダクタ株式会社 | メモリシステム及びメモリの管理方法 |
KR102552689B1 (ko) * | 2018-04-26 | 2023-07-05 | 삼성전자주식회사 | 데이터 저장 장치 |
TWI749279B (zh) * | 2018-12-18 | 2021-12-11 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
TWI776028B (zh) * | 2019-03-14 | 2022-09-01 | 點序科技股份有限公司 | 快閃記憶體管理方法及快閃記憶體 |
CN112634975A (zh) * | 2020-12-24 | 2021-04-09 | 杭州华澜微电子股份有限公司 | 一种数据存储纠错方法、装置及电子设备 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404485A (en) * | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US6678785B2 (en) | 2001-09-28 | 2004-01-13 | M-Systems Flash Disk Pioneers Ltd. | Flash management system using only sequential write |
KR100457812B1 (ko) | 2002-11-14 | 2004-11-18 | 삼성전자주식회사 | 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법 |
KR100526188B1 (ko) | 2003-12-30 | 2005-11-04 | 삼성전자주식회사 | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 |
KR100568115B1 (ko) * | 2004-06-30 | 2006-04-05 | 삼성전자주식회사 | 점진적 머지 방법 및 그것을 이용한 메모리 시스템 |
KR100638638B1 (ko) | 2004-09-03 | 2006-10-26 | 명지대학교 산학협력단 | 플래시 메모리의 제어 방법 |
KR100706242B1 (ko) * | 2005-02-07 | 2007-04-11 | 삼성전자주식회사 | 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법 |
KR101274181B1 (ko) | 2006-02-13 | 2013-06-14 | 삼성전자주식회사 | 플래시 메모리를 관리하는 장치 및 방법 |
KR100849221B1 (ko) * | 2006-10-19 | 2008-07-31 | 삼성전자주식회사 | 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치 |
KR100843135B1 (ko) * | 2006-11-20 | 2008-07-02 | 삼성전자주식회사 | 비휘발성 메모리 관리 방법 및 장치 |
US8732388B2 (en) * | 2008-09-16 | 2014-05-20 | Micron Technology, Inc. | Embedded mapping information for memory devices |
-
2008
- 2008-11-21 KR KR20080116347A patent/KR101510120B1/ko active IP Right Grant
-
2009
- 2009-08-05 US US12/535,785 patent/US9292435B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013025083A2 (ko) * | 2011-08-18 | 2013-02-21 | 영남대학교 산학협력단 | 피램에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법 |
WO2013025083A3 (ko) * | 2011-08-18 | 2013-05-30 | 영남대학교 산학협력단 | 피램에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법 |
Also Published As
Publication number | Publication date |
---|---|
US20100131736A1 (en) | 2010-05-27 |
KR101510120B1 (ko) | 2015-04-10 |
US9292435B2 (en) | 2016-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101510120B1 (ko) | 메모리 장치 및 메모리 장치의 관리 방법 | |
US7890550B2 (en) | Flash memory system and garbage collection method thereof | |
US8321624B2 (en) | Memory device and management method of memory device | |
US8375191B2 (en) | Non-volatile memory, page dynamic allocation apparatus and page mapping apparatus therefor, and page dynamic allocation method and page mapping method therefor | |
JP5405513B2 (ja) | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム | |
US9128618B2 (en) | Non-volatile memory controller processing new request before completing current operation, system including same, and method | |
JP5649742B2 (ja) | トランザクションログの復元 | |
US20100125694A1 (en) | Memory device and management method of memory device | |
TW201945934A (zh) | 用以在記憶裝置中進行存取管理的方法、相關記憶裝置及其控制器以及相關電子裝置 | |
CN114442914B (zh) | 存储器系统 | |
KR20130098642A (ko) | 저장 장치 | |
JP2011508358A (ja) | 摩耗度をビットレベルで平準化するフラッシュメモリ装置およびフラッシュメモリプログラミング方法 | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
KR20110060493A (ko) | 메모리 장치의 소거 카운트 관리 방법 및 장치 | |
KR20120060236A (ko) | 파워 인터럽트 관리 | |
US10990536B2 (en) | Memory controller, operating method of the memory controller, and storage device including the memory controller | |
US20100125697A1 (en) | Computing device having storage, apparatus and method of managing storage, and file system recorded recording medium | |
JP2018160189A (ja) | メモリシステム | |
JP2011175632A (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP2015053075A (ja) | メモリシステム、情報処理装置および記憶装置 | |
KR101501717B1 (ko) | 메모리 장치 및 메모리 장치의 관리 방법 | |
EP2381354A2 (en) | Data recording device | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2011175666A (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP5694212B2 (ja) | 管理情報生成方法およびメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
FPAY | Annual fee payment |
Payment date: 20180321 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190319 Year of fee payment: 5 |