KR20140133800A - 메모리 장치 및 메모리 장치의 관리 방법 - Google Patents

메모리 장치 및 메모리 장치의 관리 방법 Download PDF

Info

Publication number
KR20140133800A
KR20140133800A KR20140148162A KR20140148162A KR20140133800A KR 20140133800 A KR20140133800 A KR 20140133800A KR 20140148162 A KR20140148162 A KR 20140148162A KR 20140148162 A KR20140148162 A KR 20140148162A KR 20140133800 A KR20140133800 A KR 20140133800A
Authority
KR
South Korea
Prior art keywords
logical group
memory
memory device
lookup table
data
Prior art date
Application number
KR20140148162A
Other languages
English (en)
Other versions
KR101501717B1 (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 삼성전자주식회사
Priority to KR1020140148162A priority Critical patent/KR101501717B1/ko
Publication of KR20140133800A publication Critical patent/KR20140133800A/ko
Application granted granted Critical
Publication of KR101501717B1 publication Critical patent/KR101501717B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation

Abstract

메모리 장치가 제공된다. 본 발명의 일 실시예에 따른 메모리 장치는 복수의 블록들을 포함하고, 복수의 블록들은 복수의 페이지들을 포함할 수 있다. 메모리 장치는 비휘발성인 주소 변환 메모리를 이용하여 외부 물리 주소를 내부 물리 주소로 변환할 수 있다. 메모리 장치는 내부 물리 주소를 이용하여 복수의 페이지들 중 어느 하나에 접근할 수 있다. 메모리 장치는 메모리 관리 부하(load)를 줄일 수 있고, 가비지 콜렉션(garbage collection) 수행 시간 및 복잡도를 줄일 수 있다.

Description

메모리 장치 및 메모리 장치의 관리 방법 {MEMORY DEVICE AND MANAGING METHOD OF MEMORY DEVICE}
본 발명의 실시예들은 메모리 장치 및 메모리 장치의 관리 방법에 관한 것이다. 본 발명의 실시예들은 비휘발성 메모리(non-volatile memory)에 기반한 메모리 장치 및 메모리 장치의 관리 방법에 관한 것이다.
데이터를 저장하는 스토리지 장치로는 자기 디스크(magnetic disk), 반도체 메모리 등이 있을 수 있다. 스토리지 장치는 종류 별로 서로 다른 물리적 특성을 가지기 때문에 물리적 특성에 상응하는 관리 방법이 필요하다.
종래의 스토리지 장치로는 자기 디스크가 널리 사용되어 왔다. 자기 디스크는 평균적으로 킬로바이트(kilobyte) 당 수 밀리초(millisecond)의 읽기/쓰기 시간을 특성으로 가진다. 또한, 자기 디스크는 데이터가 저장된 물리적 위치에 따라 암(arm)이 도달하는 시간이 다르기 때문에 읽기/쓰기 시간이 달라지는 특성을 가진다.
호스트(host) 또는 프로세서(processor)는 스토리지 장치에 저장된 데이터를 읽거나 스토리지 장치에 데이터를 저장하기 위하여 스토리지 장치에 접근(access)한다. 호스트 또는 프로세서가 스토리지 장치로부터 데이터를 읽어 들이는 시간은 호스트 또는 프로세서의 입장에서는 상대적으로 긴 시간이므로 호스트 또는 프로세서는 스토리지 장치에 저장된 데이터의 일부를 저장하는 메모리를 이용할 수 있다.
호스트 또는 프로세서는 한번 읽은 데이터를 가까운 시간 내에 다시 한번 읽어 들이는 경향이 있다. 이러한 경향을 시간적 지역성(temporal locality)라고 하며, 종래의 스토리지 장치 및 관리 시스템(management system)은 시간적 지역성을 이용하여 호스트 또는 프로세서가 스토리지 장치로부터 읽은 데이터를 저장하는 버퍼 메모리(buffer memory)를 이용한다.
또한, 호스트 또는 프로세서는 근접한 공간에 저장된 데이터를 함께 참조(referring)하는 경향이 있다. 이러한 경향은 공간적 지역성(spatial locality)라고 하며, 종래의 스토리지 장치 및 관리 시스템은 데이터를 읽어 들일 때 특정한 길이의 연속된 공간에 저장된 데이터를 함께 읽는다.
본 발명의 일 실시예에 따른 메모리 장치는 호스트 또는 컨트롤러가 가비지 콜렉션(Garbage Collection)을 수행할 때 고려해야 할 조건을 단순화할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 호스트 또는 컨트롤러의 메모리 관리 부하(load)를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션을 수행하는 데 걸리는 시간을 단축할 수 있다. 본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션을 수행할 때 수반되는 카피 연산(copy operation)을 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션을 수행하는 데 필요한 블록(block)의 수를 줄일 수 있다. 본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션이 수행되는 횟수를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 웨어 레벨링을 수행할 때 고려되는 단위를 축소하여 웨어 레벨링의 정확성을 높일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 웨어 레벨링의 관리에 필요한 오버헤드를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 비휘발성 랜덤 억세스 메모리 (Non-volatile Random Access Memory, NVRAM)에 최적화된 웨어 레벨링을 수행할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 비휘발성 메모리 및 주소 변환 메모리를 포함할 수 있다. 비휘발성 메모리는 복수의 블록들을 포함할 수 있고, 복수의 블록들 각각은 복수의 페이지들을 포함할 수 있다. 주소 변환 메모리는 비휘발성이며, 랜덤하게 접근 가능한 메모리일 수 있다. 메모리 장치는 주소 변환 메모리를 이용하여 외부 물리 주소를 내부 물리 주소로 변환하고, 내부 물리 주소를 이용하여 복수의 페이지들 중 어느 하나에 접근할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 워드 단위로 랜덤하게 접근 가능한 데이터 메모리를 포함할 수 있다. 데이터 메모리는 비휘발성 메모리일 수 있다. 메모리 장치는 데이터 메모리를 적어도 하나의 논리 그룹으로 분할하고, 데이터 메모리를 논리 그룹 단위로 관리할 수 있다. 적어도 하나의 논리 그룹 각각은 복수의 워드들을 포함할 수 있다. 메모리 장치는 적어도 하나의 논리 그룹 각각에 포함되는 워드들의 쓰기 횟수에 관련된 통계 정보를 적어도 하나의 논리 그룹 각각에 대하여 관리할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 호스트 또는 컨트롤러가 가비지 콜렉션(Garbage Collection)을 수행할 때 고려해야 할 조건을 단순화할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 호스트 또는 컨트롤러의 메모리 관리 부하(load)를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션을 수행하는 데 걸리는 시간을 단축할 수 있다. 본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션을 수행할 때 수반되는 카피 연산(copy operation)을 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션을 수행하는 데 필요한 블록(block)의 수를 줄일 수 있다. 본 발명의 일 실시예에 따른 메모리 장치는 가비지 콜렉션이 수행되는 횟수를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 웨어 레벨링을 수행할 때 고려되는 단위를 축소하여 웨어 레벨링의 정확성을 높일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 웨어 레벨링의 관리에 필요한 오버헤드를 줄일 수 있다.
본 발명의 일 실시예에 따른 메모리 장치는 비휘발성 랜덤 억세스 메모리 (Non-volatile Random Access Memory, NVRAM)에 최적화된 웨어 레벨링을 수행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치(100)를 도시하는 도면이다.
도 2는 도 1의 메모리 장치(100)가 수행하는 데이터 프로그램 과정을 도시하는 도면이다.
도 3은 도 1의 메모리 장치(100)가 수행하는 가비지 콜렉션 (garbage collection) 과정을 도시하는 도면이다.
도 4는 낸드 플래시 메모리(NAND Flash Memory)의 가비지 콜렉션 과정의 일 예를 도시하는 도면이다.
도 5는 본 발명의 일 실시예에 따른 주소 변환 메모리(500)를 도시하는 도면이다.
도 6은 도 1의 메모리 장치(100)의 쓰기 동작의 일 예를 도시하는 타이밍도이다.
도 7은 도 1의 메모리 장치(100)의 읽기 동작의 일 예를 도시하는 타이밍도이다.
도 8은 도 1의 메모리 장치(100)의 소거 동작의 일 예를 도시하는 타이밍도이다.
도 9는 본 발명의 일 실시예에 따른 메모리 장치(900)를 도시하는 도면이다.
도 10은 도 9의 데이터 메모리(910)의 일 예를 상세히 도시하는 도면이다.
도 11은 도 9의 룩업 테이블 1(920)의 일 예를 상세히 도시하는 도면이다.
도 12는 도 9의 메모리 장치(900)에서 수행되는 관리 방법의 일 예를 도시하는 동작 흐름도이다.
도 13은 도 12의 단계(S1250)의 일 예를 상세히 도시하는 동작 흐름도이다.
도 14는 도 12의 단계(S1270)의 일 예를 상세히 도시하는 동작 흐름도이다.
이하에서, 본 발명의 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 메모리 장치(100)를 도시하는 도면이다.
도 1을 참조하면 메모리 장치(100)는 비휘발성 메모리(110) 및 주소 변환 메모리(120)를 포함할 수 있고, 컨트롤 로직(130) 및 버퍼(buffer)(140)를 더 포함할 수 있다.
비휘발성 메모리(110)는 복수의 블록들을 포함할 수 있다. 복수의 블록들 각각은 복수의 페이지들을 포함할 수 있고, 복수의 페이지들 각각은 복수의 메모리 셀들을 포함할 수 있다.
메모리 장치(100)가 비휘발성 메모리(110)의 메모리 셀들 각각에 데이터를 저장하는 과정을 프로그램이라 하기도 한다. 프로그램 과정은 메모리 셀들 각각으로부터 데이터를 읽는 과정보다 긴 시간을 소요할 수 있다.
메모리 장치(100)는 비휘발성 메모리(110)의 메모리 셀들 중 데이터가 저장된 메모리 셀에 새로운 데이터를 저장할 필요가 있는 경우 상기 데이터가 저장된 메모리 셀을 소거(erase)한 후 새로운 데이터를 저장할 수 있다. 소거 과정은 프로그램 과정보다 긴 시간을 소요할 수 있다.
메모리 장치(100)는 하나의 페이지에 포함되는 메모리 셀에 대하여 동시에 프로그램 과정을 수행할 수 있다. 메모리 장치(100)의 외부에서는 상기 페이지를 데이터가 저장되는 최소 단위로서 인식할 수 있다.
메모리 장치(100)는 하나의 블록에 포함되는 메모리 셀에 대하여 동시에 소거 과정을 수행할 수 있다. 메모리 장치(100)의 외부에서는 상기 블록을 데이터가 소거되는 최소 단위로서 인식할 수 있다.
본 발명의 다른 실시예에 따라서는 컨트롤 로직(130)이 페이지 단위로 데이터를 비휘발성 메모리(110)에 프로그램할 수 있다. 이 때 컨트롤 로직(130)은 비휘발성 메모리(110)에 저장된 데이터를 블록 단위로 소거할 수 있다. 메모리 장치(100)는 메모리 장치(100)의 외부의 호스트 또는 컨트롤러가 비휘발성 메모리(110)의 블록 또는 페이지의 구성을 인식하지 못하도록 제어될 수 있다.
주소 변환 메모리(120)는 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러로부터 외부 물리 주소(external physical address)를 수신할 수 있다. 주소 변환 메모리(120)는 외부 물리 주소를 내부 물리 주소(internal physical address)로 변환(translate)할 수 있다. 메모리 장치(100)는 내부 물리 주소를 이용하여 비휘발성 메모리(110)에 접근할 수 있다. 내부 물리 주소는 비휘발성 메모리(110)의 복수의 페이지들 각각에 대응할 수 있다. 컨트롤 로직(130)은 주소 변환 메모리(120)로부터 내부 물리 주소를 수신할 수 있다. 컨트롤 로직(130)은 내부 물리 주소를 이용하여 비휘발성 메모리(110)의 복수의 페이지들 중 어느 하나에 접근할 수 있다.
컨트롤 로직(130)은 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러로부터 읽기(read), 쓰기(write), 및/또는 소거(erase) 연산(operation)을 수신할 수 있다. 수신된 연산에 대응하는 내부 물리 주소를 이용하여 비휘발성 메모리(110)의 복수의 페이지들 중 어느 하나에 접근할 수 있다.
버퍼(140)는 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러로부터 쓰기 연산에 대응하는 데이터를 수신하여 저장할 수 있다. 버퍼(140)는 메모리 장치(100)에 의하여 비휘발성 메모리(110)에 대한 프로그램 과정이 수행되는 동안 쓰기 연산에 대응하는 데이터를 유지할 수 있다.
주소 변환 메모리(120)는 비휘발성일 수 있다. 주소 변환 메모리(120)는 바이트 또는 워드 단위로 랜덤하게 접근 가능한 비휘발성 램 (Random Access Memory, RAM)일 수 있다. 비휘발성 램의 예로는 PRAM (Phase Shift Random Access Memory), MRAM (Magnetic Random Access Memory) 등을 들 수 있다.
주소 변환 메모리(120)는 복수의 엔트리들을 포함할 수 있다. 주소 변환 메모리(120)는 외부 물리 주소를 이용하여 복수의 엔트리들 중 어느 하나에 접근할 수 있다.
외부 물리 주소는 블록을 가리키는 블록 필드를 포함할 수 있다. 메모리 장치(100)는 블록 필드의 값에 기초하여 비휘발성 메모리(110)의 복수의 블록들 중 어느 하나를 선택하고 선택된 블록에 접근할 수 있다. 외부 물리 주소는 페이지를 가리키는 페이지 필드를 포함할 수 있다. 메모리 장치(100)는 페이지 필드의 값에 기초하여 선택된 블록에 포함된 복수의 페이지들 중 어느 하나를 선택할 수 있다.
주소 변환 메모리(120)는 비휘발성 메모리(110)의 복수의 블록들 각각에 대하여 배타적으로 할당된 영역을 포함할 수 있다. 예를 들어 비휘발성 메모리(110)가 256 개의 블록들을 포함하는 경우 주소 변환 메모리(120)는 256 개의 영역들을 포함할 수 있고, 영역들 각각은 블록들 중 어느 하나에 배타적으로 대응할 수 있다.
본 발명의 다른 실시예에 따라서는 비휘발성 메모리(110)가 256 개의 블록들을 포함하는 경우 메모리 장치(100)는 256 개의 주소 변환 메모리들(도시되지 않음)을 포함할 수 있다. 이 때 주소 변환 메모리들 각각은 블록들 중 어느 하나에 배타적으로 할당될 수 있다.
주소 변환 메모리(120)는 외부 물리 주소의 블록 필드를 이용하여 상기 선택된 블록에 대응하는 영역을 선택할 수 있다. 주소 변환 메모리(120)는 외부 물리 주소의 페이지 필드를 이용하여 상기 선택된 영역에 포함된 엔트리들 중 어느 하나를 선택할 수 있다. 주소 변환 메모리(120)는 상기 선택된 엔트리에 접근하고, 상기 접근된 엔트리에 저장된 내용을 읽을 수 있다. 주소 변환 메모리(120)는 상기 읽은 내용을 외부 물리 주소에 대응하는 내부 물리 주소로 생성할 수 있다.
이 때 엔트리들 각각은 내부 물리 주소의 페이지 필드에 대응하는 내용을 저장할 수 있다. 주소 변환 메모리(120)는 외부 물리 주소의 블록 필드 및 상기 접근된 엔트리로부터 읽은 내용을 결합하여 내부 물리 주소를 생성할 수 있다.
본 발명의 다른 실시예에 따라서는 주소 변환 메모리(120)는 메모리 장치(100)의 컨트롤러에 포함될 수도 있다. 이 때 컨트롤러는 메모리 장치(100)의 내부에 포함될 수도 있고, 메모리 장치(100)의 외부에 위치할 수도 있다.
도 2는 도 1의 메모리 장치(100)가 수행하는 데이터 프로그램 과정을 도시하는 도면이다.
도 2를 참조하면 비휘발성 메모리(110)는 데이터 블록(210) 및 로그 블록(220)을 포함할 수 있다. 도 2에서는 외부 물리 주소에 의해 형성되는 주소 공간에 대응하는 데이터 프로그램 과정이 도시된다.
데이터 블록(210)은 페이지 1 내지 페이지 8의 데이터를 저장할 수 있다.
메모리 장치(100)는 페이지 1, 페이지 3 및 페이지 5의 데이터가 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러에 의하여 업데이트되면 업데이트된 페이지 1, 페이지 3 및 페이지 5의 데이터를 로그 블록(220)에 프로그램할 수 있다.
메모리 장치(100)는 로그 블록(220)에 업데이트된 페이지 1의 데이터를 프로그램하고, 프로그램된 페이지 1의 데이터가 데이터 블록(210)의 페이지 1의 업데이트 버전(update version)임을 나타내는 메타 데이터를 저장하고, 데이터 블록(210)의 페이지 1이 obsolete한 데이터임을 나타내는 메타 데이터를 저장할 수 있다.
유사한 방법으로 메모리 장치(100)는 로그 블록(220)에 업데이트된 페이지 3의 데이터를 프로그램하고, 프로그램된 페이지 3의 데이터가 데이터 블록(210)의 페이지 3의 업데이트 버전(update version)임을 나타내는 메타 데이터를 저장하고, 데이터 블록(210)의 페이지 3이 obsolete한 데이터임을 나타내는 메타 데이터를 저장할 수 있다.
메모리 장치(100)는 외부 물리 주소를 내부 물리 주소로 변환하고, 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러에 대하여 외부 물리 주소에 의해 형성되는 주소 공간을 제공하고, 메모리 장치(100)의 내부에서는 내부 물리 주소에 의하여 비휘발성 메모리(110)를 관리할 수 있다.
메모리 장치(100)는 페이지 1, 페이지 3 및 페이지 5의 데이터가 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러에 의하여 업데이트되는 시간적 순서에 관계 없이 업데이트된 페이지 1, 페이지 3 및 페이지 5의 데이터를 로그 블록(220)에 프로그램할 수 있다. 예를 들어 페이지 3이 업데이트된 후 페이지 5가 업데이트되고 페이지 5가 업데이트된 후 페이지 1이 업데이트된 경우 메모리 장치(100)는 업데이트된 페이지 3을 로그 블록(220)에 프로그램한 후 업데이트된 페이지 5를 로그 블록(220)에 프로그램할 수 있고, 업데이트된 페이지 5를 로그 블록(220)에 프로그램한 후 업데이트된 페이지 1을 로그 블록(220)에 프로그램할 수 있다.
메모리 장치(100)의 내부에서 페이지 3, 페이지 5, 및 페이지 1이 인접한 내부 물리 페이지에 순차적으로 프로그램되더라도 메모리 장치(100)는 메모리 장치(100)의 외부의 호스트, 프로세서 또는 컨트롤러에 페이지들 각각이 제자리에(in place) 프로그램된 로그 블록(220)을 제공할 수 있다.
도 3은 도 1의 메모리 장치(100)가 수행하는 가비지 콜렉션 (garbage collection) 과정을 도시하는 도면이다.
도 3을 참조하면 데이터 블록(310) 및 로그 블록(320)의 병합 연산(merge operation) 및 가비지 콜렉션 과정이 도시된다.
도 2에서와 마찬가지로 데이터 블록(310)의 페이지 1, 페이지 3 및 페이지 5가 업데이트되고, 업데이트된 페이지 1, 업데이트된 페이지 3 및 업데이트된 페이지 5가 로그 블록(320)에 프로그램된 상태를 가정한다.
메모리 장치(100)는 데이터 블록(310)에 저장된 데이터를 로그 블록(320)에 카피할 수 있다. 이 때 메모리 장치(100)는 데이터 블록(310)에 저장된 데이터 중 obsolete한 페이지 1, 페이지 3 및 페이지 5를 카피하지 않을 수 있다.
메모리 장치(100)는 데이터 블록(310)에 저장된 데이터 중 페이지 2, 페이지 4, 페이지 6, 페이지 7 및 페이지 8을 로그 블록(320)에 카피한 후에 데이터 블록(310)에 저장된 데이터를 소거할 수 있다. 메모리 장치(100)는 로그 블록(320)을 새로운 데이터 블록으로 설정하고, 로그 블록(320)이 새로운 데이터 블록임을 나타내는 메타 데이터를 저장할 수 있다.
메모리 장치(100)는 외부 물리 주소를 내부 물리 주소로 변환하고, 내부 물리 주소를 이용하여 로그 블록(320)의 페이지들을 관리함으로써 가비지 콜렉션 과정에 수반되는 카피 연산의 수를 줄일 수 있다. 메모리 장치(100)는 가비지 콜렉션 과정을 단순화함으로써 가비지 콜렉션 과정에 걸리는 시간을 단축할 수 있다.
메모리 장치(100)의 컨트롤러는 가비지 콜렉션 과정에서 데이터 블록(310)을 소스(source)로, 로그 블록(320)을 타겟으로 설정할 수 있다. 메모리 장치(100)의 컨트롤러는 가비지 콜렉션 과정을 소스로부터 타겟으로 데이터를 카피하는 과정으로 단순화할 수 있다.
메모리 장치(100)는 데이터 블록(310)의 데이터를 로그 블록(320)에 카피함으로써 가비지 콜렉션 과정에 필요한 물리 블록(physical block)의 수를 줄일 수 있다. 메모리 장치(100)는 점유 중인 블록의 수를 줄임으로써 가비지 콜렉션이 수행되는 횟수를 줄일 수 있다.
메모리 장치(100)는 외부 물리 주소와 다른 내부 물리 주소를 생성할 수 있다. 예를 들어 데이터 블록(310)에 저장된 페이지들의 실제 저장 순서는 외부 물리 주소와 다를 수 있다. 메모리 장치(100)는 데이터 블록(310) 및 로그 블록(320)에 데이터가 저장된 순서에 관계 없이 일관된 외부 물리 주소를 메모리 장치(100)의 컨트롤러에 제공할 수 있다.
메모리 장치(100)는 페이지가 업데이트되는 시간적 순서대로 업데이트된 페이지를 로그 블록(320)에 순차적으로 저장할 수 있다. 또는 메모리 장치(100)는 업데이트된 페이지를 로그 블록(320)의 상태를 고려하여 로그 블록(320)에 저장할 수 있다.
메모리 장치(100)의 컨트롤러는 가비지 콜렉션을 수행할 때 실제 저장 순서를 고려하지 않을 수 있다. 메모리 장치(100)의 컨트롤러는 외부 물리 주소만을 이용하여 가비지 콜렉션을 수행할 수 있다. 메모리 장치(100)의 컨트롤러는 외부 물리 주소만을 이용하여 메모리 장치(100)를 관리할 수 있다. 메모리 장치(100)는 메모리 장치(100)의 컨트롤러의 관리 부하(load)를 줄일 수 있다.
랜덤 쓰기 연산(random write operation)이 빈번하게 발생하는 경우에도 메모리 장치(100)의 컨트롤러는 쓰기 연산의 랜덤함(randomness)에 관계 없이 메모리 장치(100)를 관리할 수 있다. 메모리 장치(100)가 외부 물리 주소 및 내부 물리 주소 간의 맵핑(mapping)을 통해 업데이트되는 페이지를 제자리에 저장할 수 있기 때문이다.
도 4는 낸드 플래시 메모리(NAND Flash Memory)의 가비지 콜렉션 과정의 일 예를 도시하는 도면이다.
도 4를 참조하면 낸드 플래시 메모리는 데이터 블록(410) 및 로그 블록(420)에 저장된 데이터를 병합 블록(merged block)(430)에 병합할 수 있다.
데이터 블록(410)의 페이지 1, 페이지 3 및 페이지 5가 업데이트되고, 업데이트된 페이지 1, 페이지 3 및 페이지 5가 로그 블록(420)에 프로그램된 상태를 가정한다.
로그 블록(420)에는 페이지 3, 페이지 5 및 페이지 1이 업데이트된 순서대로 저장될 수 있다. 낸드 플래시 메모리는 로그 블록(420)에 저장된 페이지 3이 데이터 블록(410)에 저장된 페이지 3의 업데이트 버전임을 나타내는 메타 데이터를 저장하고, 데이터 블록(410)에 저장된 페이지 3이 obsolete한 버전임을 나타내는 메타 데이터를 저장할 수 있다.
마찬가지로 낸드 플래시 메모리는 데이터 블록(410)에 저장된 페이지 1 및 페이지 5가 obsolete한 버전임을 나타내는 메타 데이터를 저장할 수 있다.
낸드 플래시 메모리는 로그 블록(420)에 저장된 페이지 3을 병합 블록(430)의 세번째 위치에 카피할 수 있다. 낸드 플래시 메모리는 로그 블록(420)에 저장된 페이지 5를 병합 블록(430)의 다섯번째 위치에 카피하고 로그 블록(420)에 저장된 페이지 1을 병합 블록(430)의 첫번째 위치에 카피할 수 있다.
낸드 플래시 메모리는 데이터 블록(410)의 페이지 2, 페이지 4, 페이지 6, 페이지 7 및 페이지 8을 병합 블록(430)으로 카피할 수 있다. 데이터 블록(410)의 페이지 2, 페이지 4, 페이지 6, 페이지 7 및 페이지 8은 모두 obsolete하지 않은 버전이다.
데이터 블록(410) 및 로그 블록(420)의 데이터를 병합 블록(430)에 카피한 후 낸드 플래시 메모리는 데이터 블록(410) 및 로그 블록(420)의 데이터를 소거할 수 있다.
도 5는 본 발명의 일 실시예에 따른 주소 변환 메모리(500)를 도시하는 도면이다.
도 5를 참조하면 주소 변환 메모리(500)는 64개의 엔트리(Entry)들을 포함할 수 있다. 주소 변환 메모리(500)는 하나의 블록에 대응하고, 상기 블록은 64개의 페이지들을 포함할 수 있다.
상기 블록이 64개의 페이지들을 포함하는 경우 상기 엔트리들 각각은 6비트의 내용을 포함할 수 있다. 이 때 6 = log 2 64의 관계식이 성립한다. 상기 엔트리들 각각은 6비트의 내용을 이용하여 64개의 페이지들 중 어느 하나를 가리킬 수 있다.
예를 들어 엔트리 1에 저장된 내용이 "001000"인 경우 엔트리 1은 상기 블록의 8번째 페이지를 가리킬 수 있고, 엔트리 2에 저장된 내용이 "001001"인 경우 엔트리 2는 상기 블록의 9번째 페이지를 가리킬 수 있다. 상기 블록 내에서 페이지들 각각이 가지는 상대적인 위치를 오프셋(offset)이라 할 수 있다.
주소 변환 메모리(500)는 외부 물리 주소를 이용하여 64개의 엔트리들 중 어느 하나에 접근할 수 있다. 예를 들어 외부 물리 주소가 "000000"인 경우 주소 변환 메모리(500)는 엔트리 1에 접근할 수 있다. 주소 변환 메모리(500)는 엔트리 1에 저장된 내용인 "001000"을 내부 물리 주소로 생성할 수 있다. 이 때 주소 변환 메모리(500)는 외부 물리 주소 "000000"을 내부 물리 주소 "001000"로 매핑할 수 있다.
외부 물리 주소가 "000001"인 경우 주소 변환 메모리(500)는 엔트리 2에 접근할 수 있다. 주소 변환 메모리(500)는 외부 물리 주소 "000001"을 내부 물리 주소 "001001"로 매핑할 수 있다.
외부 물리 주소가 "111110"인 경우 주소 변환 메모리(500)는 외부 물리 주소를 이용하여 엔트리 63에 접근할 수 있다. 외부 물리 주소가 "111111"인 경우 주소 변환 메모리(500)는 외부 물리 주소를 이용하여 엔트리 64에 접근할 수 있다.
주소 변환 메모리(500)는 상기 블록이 포함하는 페이지들의 수에 대응하는 64개의 엔트리들을 포함함으로써 상기 블록이 포함하는 페이지들 각각의 오프셋을 외부 물리 주소와 매핑할 수 있다.
주소 변환 메모리(500)는 대응하는 블록의 크기에 비해 매우 작은 크기를 가질 수 있다. 주소 변환 메모리(500)는 상대적으로 작은 크기를 가지고도 상기 대응하는 블록의 외부 물리 주소를 내부 물리 주소로 변환할 수 있다. 예를 들어 하나의 페이지의 크기가 4 kilobytes 이면 상기 대응하는 블록은 64 x 4 kilobytes = 256 kilobytes의 크기를 가진다. 이 때 주소 변환 메모리(500)는 64 x 6 bits = 48 bytes 의 크기를 가진다. 주소 변환 메모리(500)의 크기는 상기 대응하는 블록의 크기의 1.83 % 이다 (48 bytes / 256 kilobytes x 100 = 1.83 (%) ).
도 6은 도 1의 메모리 장치(100)의 쓰기 동작의 일 예를 도시하는 타이밍도이다.
도 6을 참조하면 파형(waveform)(610)은 주소 변환 메모리(120)의 동작을 도시하고 파형(waveform)(620)은 비휘발성 메모리(110)의 동작을 도시한다.
메모리 장치(100)가 컨트롤러로부터 쓰기 연산(write operation) 또는 쓰기 명령(write command)을 수신하면 메모리 장치(100)는 비휘발성 메모리(110)의 복수의 페이지들 중 빈 페이지를 검색할 수 있다. 메모리 장치(100)는 하나 이상의 빈 페이지 중 하나를 선택할 수 있다.
비휘발성 메모리(110)는 쓰기 연산의 데이터를 선택된 페이지에 저장할 수 있다. 메모리 장치(100)는 선택된 페이지의 오프셋을 쓰기 연산의 내부 물리 주소로 생성할 수 있다. 메모리 장치(100)는 쓰기 연산의 외부 물리 주소를 이용하여 주소 변환 메모리(120)의 엔트리들 중 하나에 접근할 수 있다. 주소 변환 메모리(120)는 상기 접근된 엔트리에 쓰기 연산의 내부 물리 주소를 저장함으로써 상기 접근된 엔트리의 내용을 업데이트할 수 있다.
파형(610)은 주소 변환 메모리(120)가 상기 접근된 엔트리의 내용을 업데이트하는 과정을 나타낸다. 파형(620)은 비휘발성 메모리(110)가 쓰기 연산의 데이터를 선택된 페이지에 저장하는 과정을 나타낸다.
파형(610) 및 파형(620)을 참조하면 비휘발성 메모리(110)가 쓰기 연산의 데이터를 선택된 페이지에 저장하는 동안 주소 변환 메모리(120)는 상기 접근된 엔트리의 내용을 업데이트할 수 있다. 주소 변환 메모리(120)는 비휘발성 메모리(110)의 동작과 병렬적으로 엔트리의 내용을 업데이트할 수 있다.
메모리 장치(100)는 주소 변환 메모리(120) 및 비휘발성 메모리(110)에 병렬적으로 접근함으로써 쓰기 연산을 수행하는 시간을 단축할 수 있다.
도 7은 도 1의 메모리 장치(100)의 읽기 동작의 일 예를 도시하는 타이밍도이다.
도 7을 참조하면 파형(waveform)(710)은 주소 변환 메모리(120)의 동작을 도시하고 파형(waveform)(720)은 비휘발성 메모리(110)의 동작을 도시한다.
메모리 장치(100)가 컨트롤러로부터 읽기 연산(read operation) 또는 읽기 명령(read command)을 수신하면 메모리 장치(100)는 읽기 연산의 외부 물리 주소를 이용하여 주소 변환 메모리(120)의 복수의 엔트리들 중 하나에 접근할 수 있다. 메모리 장치(100)는 상기 접근된 엔트리의 내용을 참조하여 읽기 연산의 외부 물리 주소에 대응하는 내부 물리 주소를 읽을 수 있다.
메모리 장치(100)는 비휘발성 메모리(110)의 복수의 페이지들 중 내부 물리 주소에 대응하는 페이지를 검색하고, 검색된 페이지에 저장된 데이터를 읽을 수 있다. 메모리 장치(100)는 읽은 데이터를 컨트롤러로 출력할 수 있다.
파형(710)은 메모리 장치(100)가 주소 변환 메모리(120)의 엔트리의 내용을 참조하는 과정을 나타낸다. 파형(720)은 메모리 장치(100)가 비휘발성 메모리(110)로부터 읽기 연산의 데이터를 읽는 과정을 나타낸다.
파형(710) 및 파형(720)을 참조하면 메모리 장치(100)는 주소 변환 메모리(120)의 내용을 참조하는 동안 병렬적으로 비휘발성 메모리(110)에 접근할 수 있다.
메모리 장치(100)는 주소 변환 메모리(120) 및 비휘발성 메모리(110)에 병렬적으로 접근함으로써 읽기 연산을 수행하는 시간을 단축할 수 있다.
도 8은 도 1의 메모리 장치(100)의 소거 동작의 일 예를 도시하는 타이밍도이다.
도 8을 참조하면 파형(waveform)(810)은 주소 변환 메모리(120)의 동작을 도시하고 파형(waveform)(820)은 비휘발성 메모리(110)의 동작을 도시한다.
소거 연산은 비휘발성 메모리(110)의 복수의 블록들 중 적어도 하나를 소거하는 연산을 의미한다. 소거 연산이 수신되면 메모리 장치(100)는 주소 변환 메모리(120)의 엔트리들 중 소거되는 블록에 대응하는 엔트리를 소거할 수 있다.
파형(810)은 메모리 장치(100)가 주소 변환 메모리(120)의 엔트리의 내용을 소거하는 과정을 나타낸다. 파형(820)은 메모리 장치(100)가 비휘발성 메모리(110)의 데이터 블록들 중 선택된 블록의 데이터를 소거하는 과정을 나타낸다.
파형(810) 및 파형(820)을 참조하면 메모리 장치(100)는 주소 변환 메모리(120)의 엔트리를 소거하는 동안 병렬적으로 비휘발성 메모리(110)의 블록들 중 선택된 블록의 데이터를 소거할 수 있다.
메모리 장치(100)는 주소 변환 메모리(120) 및 비휘발성 메모리(110)에 병렬적으로 접근함으로써 소거 연산을 수행하는 시간을 단축할 수 있다.
도 9는 본 발명의 일 실시예에 따른 메모리 장치(900)를 도시하는 도면이다.
도 9를 참조하면 메모리 장치(900)는 데이터 메모리(910)를 포함할 수 있다.
메모리 장치(900)는 룩업 테이블 1(920), 룩업 테이블 2(930) 및 룩업 테이블 3(940)를 더 포함할 수 있다.
데이터 메모리(910)는 워드(word) 또는 바이트(byte) 단위로 랜덤하게 접근 가능하며 비휘발성일 수 있다. 메모리 장치(900)는 데이터 메모리(910)를 적어도 하나의 논리 그룹(Logical Group)으로 분할할 수 있다. 도 9에서는 데이터 메모리(910)가 N개의 논리 그룹들로 구성되는 실시예가 도시된다. N개의 논리 그룹들 각각은 복수의 워드들을 포함할 수 있다.
룩업 테이블 1(920)은 논리 그룹 1에 대응하고, 논리 그룹 1에 포함되는 워드들의 쓰기 횟수(write cycle number)와 관련된 통계 정보를 관리할 수 있다.
룩업 테이블 2(930)은 논리 그룹 2에 대응하고, 논리 그룹 2에 포함되는 워드들의 쓰기 횟수와 관련된 통계 정보를 관리할 수 있다.
룩업 테이블 3(940)은 논리 그룹 N에 대응하고, 논리 그룹 N에 포함되는 워드들의 쓰기 횟수와 관련된 통계 정보를 관리할 수 있다.
통계 정보는 논리 그룹 각각에 포함되는 워드들의 쓰기 횟수의 평균(mean), 최대값(maximum value), 및 편차(deviation)를 포함할 수 있다.
메모리 장치(900)는 논리 그룹 각각에 포함되는 워드들의 쓰기 횟수에 관련된 통계 정보를 논리 그룹 각각에 대한 메타 데이터로서 저장할 수 있다.
룩업 테이블의 개수는 논리 그룹의 개수 이하일 수 있다.
메모리 장치(900)는 적어도 하나의 논리 그룹 중 제1 논리 그룹을 선택할 수 있다. 제1 논리 그룹은 포함되는 워드들의 쓰기 횟수의 평균이 가장 큰 논리 그룹일 수 있다. 메모리 장치(900)는 적어도 하나의 논리 그룹 중 제2 논리 그룹을 선택할 수 있다. 제2 논리 그룹은 포함되는 워드들의 쓰기 횟수의 평균이 가장 작은 논리 그룹일 수 있다. 메모리 장치(900)는 제1 논리 그룹 및 제2 논리 그룹 간에 데이터를 교환하고, 제1 논리 그룹 및 제2 논리 그룹 간에 주소를 교환할 수 있다.
다른 실시예에 따라서는 메모리 장치(900)는 적어도 하나의 논리 그룹 중 제1 논리 그룹을 선택할 수 있다. 제1 논리 그룹은 포함되는 워드들의 쓰기 횟수의 편차가 가장 작은 논리 그룹일 수 있다. 메모리 장치(900)는 적어도 하나의 논리 그룹 중 제2 논리 그룹을 선택할 수 있다. 제2 논리 그룹은 포함되는 워드들의 쓰기 횟수의 편차가 가장 큰 논리 그룹일 수 있다. 메모리 장치(900)는 제1 논리 그룹 및 제2 논리 그룹 간에 데이터를 교환하고, 제1 논리 그룹 및 제2 논리 그룹 간에 주소를 교환할 수 있다.
또 다른 실시예에 따라서는 메모리 장치(900)는 적어도 하나의 논리 그룹 중 제1 논리 그룹을 선택할 수 있다. 제1 논리 그룹은 포함되는 워드들의 쓰기 횟수의 최대값이 가장 큰 논리 그룹일 수 있다. 메모리 장치(900)는 적어도 하나의 논리 그룹 중 제2 논리 그룹을 선택할 수 있다. 제2 논리 그룹은 포함되는 워드들의 쓰기 횟수의 최대값이 가장 작은 논리 그룹일 수 있다. 메모리 장치(900)는 제1 논리 그룹 및 제2 논리 그룹 간에 데이터를 교환하고, 제1 논리 그룹 및 제2 논리 그룹 간에 주소를 교환할 수 있다.
데이터 메모리(910)는 복수의 메모리 셀들을 포함하고, 복수의 메모리 셀들은 행(row) 및 열(column)로 표현되는 어레이(array)를 형성할 수 있다.
데이터 메모리(910)는 비휘발성 메모리의 한 종류이므로 쓰기 횟수가 증가하면 메모리 셀의 특성(characteristic)이 열화(degrade)될 수 있다. 메모리 장치(900)는 데이터 메모리(910)의 메모리 셀들 각각의 특성이 균등하도록 메모리 셀들 각각의 쓰기 횟수를 관리할 수 있다. 이러한 관리를 웨어 레벨링(wear leveling) 이라 하기도 한다.
데이터 메모리(910)는 워드 또는 바이트 단위로 랜덤하게 접근 가능한 메모리이므로 웨어 레벨링도 워드 또는 바이트 단위로 수행될 수 있다. 그러나 데이터 메모리(910)가 매우 많은 워드들 또는 바이트들을 포함하는 경우 웨어 레벨링에 대한 관리 오버헤드가 지나치게 증가할 수 있다.
메모리 장치(900)는 데이터 메모리(910)를 논리 그룹들로 분할하고, 논리 그룹들 각각에 대하여 웨어 레벨링을 수행함으로써 관리 오버헤드를 감소시킬 수 있다.
메모리 장치(900)는 평균 쓰기 횟수가 높은 제1 논리 그룹 및 평균 쓰기 횟수가 낮은 제2 논리 그룹의 데이터 및 주소를 교환함으로써 제1 논리 그룹 및 제2 논리 그룹의 쓰기 횟수를 평준화(equalize)할 수 있다. 호스트 또는 프로세서는 교환 전 제1 논리 그룹에 저장되었던 데이터에 빈번하게 접근할 가능성이 높다. 호스트 또는 프로세서는 교환 후 제2 논리 그룹에 저장된 데이터에 빈번하게 접근할 가능성이 높으므로 교환 후에는 제2 논리 그룹의 쓰기 횟수가 증가하게 되어 제1 논리 그룹의 쓰기 횟수와 비슷하게 될 수 있다.
메모리 장치(900)는 반대되는 경향을 가지는 논리 그룹 간의 교환을 통해 웨어 레벨링을 수행할 수 있다. 이 때 쓰기 횟수에 대응하는 통계 정보는 교환 시 데이터 및 주소와 함께 교환되지 않는다.
메모리 장치(900)는 논리 그룹의 크기를 조정함으로써 웨어 레벨링의 정확성을 높일 수 있다. 논리 그룹의 크기가 작게 조정되면 웨어 레벨링의 정확성은 높아질 수 있고 오버헤드는 증가할 수 있다. 논리 그룹의 크기가 크게 조정되면 웨어 레벨링의 정확성은 낮아질 수 있고 오버헤드는 감소할 수 있다.
논리 그룹의 크기는 페이지(page)의 크기와 유사하게 조정될 수 있다.
도 10은 도 9의 데이터 메모리(910)의 일 예를 상세히 도시하는 도면이다.
도 10을 참조하면 데이터 메모리(910)는 N개의 논리 그룹을 포함할 수 있다. 하나의 논리 그룹은 복수의 워드들을 포함할 수 있다.
예를 들어 논리 그룹 1은 워드 11 및 워드 12를 포함할 수 있다. 워드 11은 논리 그룹 1에 포함되는 워드들 중 첫번째 워드이다. 이 때 워드 11은 오프셋 "0"을 가질 수 있다. 오프셋은 워드들 각각의 논리 그룹 내에서의 상대적인 주소를 나타낸다. 워드 12는 논리 그룹 1에 포함되는 워드들 중 두번째 워드이다. 워드 12는 오프셋 "1"을 가질 수 있다.
논리 그룹 2는 워드 21 및 워드 22를 포함할 수 있다. 워드 21은 논리 그룹 2에 포함되는 워드들 중 첫번째 워드이다. 워드 21은 오프셋 "0"을 가질 수 있다. 워드 22는 논리 그룹 2에 포함되는 워드들 중 두번째 워드이다. 워드 22는 오프셋 "1"을 가질 수 있다.
논리 그룹 N은 워드 N1 및 워드 N2를 포함할 수 있다. 워드 N1은 논리 그룹 N에 포함되는 워드들 중 첫번째 워드이다. 워드 N1은 오프셋 "0"을 가질 수 있다. 워드 N2는 논리 그룹 N에 포함되는 워드들 중 두번째 워드이다. 워드 N2는 오프셋 "1"을 가질 수 있다.
도 11은 도 9의 룩업 테이블 1(920)의 일 예를 상세히 도시하는 도면이다.
도 11을 참조하면 룩업 테이블 1(920)은 M개의 엔트리들을 포함할 수 있다. 엔트리들 각각은 오프셋 및 쓰기 횟수를 포함할 수 있다.
예를 들어 엔트리 1(1110)는 제1 워드의 오프셋인 오프셋 1 및 제1 워드의 쓰기 횟수인 쓰기 횟수 1을 포함할 수 있다. 제1 워드는 워드 11일 수도 있고, 워드 12일 수도 있으며 또 다른 워드일 수도 있다.
엔트리 2(1120)는 제2 워드의 오프셋인 오프셋 2 및 제2 워드의 쓰기 횟수인 쓰기 횟수 2를 포함할 수 있다.
엔트리 M(1130)는 오프셋 M 및 쓰기 횟수 M을 포함할 수 있다. 오프셋 M은 제M 워드의 오프셋이고 쓰기 횟수 M은 제M 워드의 쓰기 횟수일 수 있다.
이 때 M은 논리 그룹 1에 포함되는 워드들의 개수와 같거나 작을 수 있다.
M이 논리 그룹 1에 포함되는 워드들의 개수와 같은 경우 룩업 테이블 1(920)은 논리 그룹 1에 포함되는 워드들 모두에 대응하는 정보를 저장할 수 있다. M이 논리 그룹 1에 포함되는 워드들의 개수보다 작은 경우 룩업 테이블 1(920)은 논리 그룹 1에 포함되는 워드들 중 일부를 선택하고 선택된 워드에 대응하는 정보만을 저장할 수 있다.
이 때 룩업 테이블 1(920)은 시간적 지역성 및/또는 공간적 지역성에 기초하여 논리 그룹 1에 포함되는 워드들 중 일부를 선택할 수 있다.
시간적 지역성(temporal locality)는 한번 접근된 데이터가 가까운 시간 내에 다시 한번 접근되는 경향을 말하며 룩업 테이블 1(920)은 가까운 시간 내에 접근된 워드에 대응하는 정보를 엔트리들 중 어느 하나에 저장할 수 있다.
룩업 테이블 1(920)은 논리 그룹 1에 포함되는 워드에 호스트 또는 프로세서가 접근하는 경우 접근된 워드에 대응하는 정보를 엔트리들 중 하나에 저장할 수 있다.
또한, 공간적 지역성(spatial locality)은 호스트 또는 프로세서가 근접한 공간에 저장된 데이터를 함께 참조(referring)하는 경향을 말한다. 룩업 테이블 1(920)은 논리 그룹 1에 포함되는 워드에 호스트 또는 프로세서가 접근하는 경우 접근된 워드에 인접한 워드들에 대응하는 정보를 엔트리들 중 하나에 저장할 수 있다.
메모리 장치(900)는 접근하고자 하는 목표 워드에 대응하는 정보가 룩업 테이블 1(920)에 저장되어 있는지를 판정하기 위해 룩업 테이블 1(920)에 저장된 엔트리들 각각의 오프셋 필드를 목표 워드의 오프셋과 비교할 수 있다. 이 때 룩업 테이블 1(920)의 엔트리들 각각의 오프셋 필드는 내용 주소 메모리 (Content Addressable Memory, CAM) 일 수 있다.
도 12는 도 9의 메모리 장치(900)에서 수행되는 관리 방법의 일 예를 도시하는 동작 흐름도이다.
도 12를 참조하면 관리 방법은 쓰기 연산(write operation)을 수신한다(S1210).
관리 방법은 쓰기 연산에 대응하는 논리 그룹에 대응하는 룩업 테이블이 존재하는지 여부를 판정한다(S1220).
관리 방법은 단계(S1220)의 판정 결과 긍정이면 쓰기 연산에 대응하는 워드의 오프셋이 룩업 테이블의 엔트리에 존재하는지 여부를 판정한다(S1230). 이 때 룩업 테이블은 쓰기 연산에 대응하는 논리 그룹에 대응하는 룩업 테이블이다.
관리 방법은 단계(S1230)의 판정 결과 긍정이면 대응하는 엔트리의 쓰기 횟수를 갱신한다(S1240).
관리 방법은 단계(S1230)의 판정 결과 부정이면 쓰기 연산에 대응하는 워드의 오프셋을 룩업 테이블의 엔트리에 저장한다(S1250).
단계(S1250)의 상세한 과정은 도 13을 이용하여 설명한다.
도 13은 도 12의 단계(S1250)의 일 예를 상세히 도시하는 동작 흐름도이다.
도 13을 참조하면 관리 방법은 쓰기 연산에 대응하는 룩업 테이블의 엔트리들 중 어느 하나를 선택한다(S1310). 이 때 관리 방법은 랜덤 시퀀스에 기초하여 엔트리를 선택할 수도 있고 시간적 및/또는 공간적 지역성에 기초하여 엔트리를 선택할 수도 있다.
관리 방법은 선택된 엔트리가 비어 있는지 여부를 판정한다(S1320).
관리 방법은 단계(S1320)의 판정 결과 부정이면 선택된 엔트리의 쓰기 횟수가 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수보다 큰지 여부를 판정한다(S1330). 이 때 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수는 메타 데이터로 저장된 정보일 수 있다.
관리 방법은 단계(S1330)의 판정 결과 긍정이면 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수를 갱신한다(S1340). 이 때 관리 방법은 선택된 엔트리에 저장된 쓰기 횟수를 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수로 설정할 수 있다. 관리 방법은 새롭게 설정된 최대 쓰기 횟수를 메타 데이터로 저장할 수 있다. 관리 방법은 논리 그룹 각각의 최대 쓰기 횟수를 메타 데이터로서 관리할 수 있다.
관리 방법은 단계(S1320)의 판정 결과 긍정이면 단계(S1240)를 수행할 수 있다. 관리 방법은 단계(S1330)의 판정 결과 부정이면 단계(S1240)를 수행할 수 있다.
다시 도 12를 참조하면 관리 방법은 단계(S1250)를 수행한 후 단계(S1240)를 수행할 수 있다. 이 때 관리 방법은 쓰기 연산에 대응하는 논리 그룹의 새롭게 설정된 최대 쓰기 횟수에 1을 더한 값을 선택된 엔트리에 저장할 수 있다.
관리 방법은 단계(S1220)의 판정 결과 부정이면 룩업 테이블 중 하나를 선택한다(S1260). 이 때 관리 방법은 랜덤 시퀀스에 기초하여 룩업 테이블을 선택할 수도 있고 시간적 및/또는 공간적 지역성에 기초하여 룩업 테이블을 선택할 수도 있다.
관리 방법은 선입 선출 (First In First Out) 알고리즘에 기초하여 룩업 테이블을 선택할 수도 있고, 휴리스틱(heuristic)한 판정 기준에 기초하여 룩업 테이블을 선택할 수도 있다. 관리 방법은 쓰기 횟수에 기초하여 룩업 테이블을 선택할 수도 있고, LRU(Least Recently Used) 판정 기준에 기초하여 룩업 테이블을 선택할 수도 있다.
관리 방법은 쓰기 연산에 대응하는 워드의 오프셋을 선택된 룩업 테이블의 엔트리에 저장한다(S1270).
관리 방법은 단계(S1270)를 수행한 후 단계(S1240)를 수행할 수 있다.
도 14는 도 12의 단계(S1270)의 일 예를 상세히 도시하는 동작 흐름도이다.
도 14를 참조하면 관리 방법은 선택된 룩업 테이블의 엔트리에서 최대값을 검색한다(S1410).
관리 방법은 검색된 최대값을 선택된 룩업 테이블에 대응하는 논리 그룹의 쓰기 횟수의 최대값으로 설정한다(S1420). 이 때 관리 방법은 설정된 최대값을 논리 그룹에 대한 메타 데이터로서 저장할 수 있다. 관리 방법은 선택된 룩업 테이블에 대응하는 논리 그룹에 대한 정보를 메타 데이터로서 백업할 수 있다.
관리 방법은 선택된 룩업 테이블을 쓰기 연산에 대응하는 논리 그룹에 링크한다(S1430). 쓰기 연산에 대응하는 논리 그룹은 이전에 선택된 룩업 테이블에 대응하던 논리 그룹에 대신하여 선택된 룩업 테이블에 새롭게 대응할 수 있다.
관리 방법은 선택된 룩업 테이블의 엔트리 중 하나를 선택한다(S1440).
관리 방법은 쓰기 연산에 대응하는 워드의 오프셋을 선택된 엔트리에 저장한다(S1450).
관리 방법은 단계(S1450)를 수행한 후 단계(S1240)를 수행할 수 있다. 이 때 관리 방법은 오프셋이 저장된 엔트리에 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수에 1을 더한 값을 저장할 수 있다.
본 발명의 일 실시예에 따른 메모리 장치의 관리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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)를 구성할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
110: 비휘발성 메모리
120: 주소 변환 메모리

Claims (12)

  1. 비휘발성이며, 워드 단위로 랜덤하게 접근 가능한 데이터 메모리
    를 포함하고,
    상기 데이터 메모리를 복수의 워드들을 포함하는 적어도 하나의 논리 그룹으로 분할하고, 상기 적어도 하나의 논리 그룹 각각에 포함되는 워드들의 쓰기 횟수에 관련된 통계 정보를 상기 적어도 하나의 논리 그룹 각각에 대하여 관리하는 메모리 장치.
  2. 제1항에 있어서,
    상기 통계 정보는
    상기 적어도 하나의 논리 그룹 각각에 포함되는 워드들의 쓰기 횟수의 평균, 최대값 및 편차를 포함하는 메모리 장치.
  3. 제1항에 있어서,
    상기 적어도 하나의 논리 그룹 중 포함되는 워드들의 쓰기 횟수의 평균이 가장 큰 제1 논리 그룹을 선택하고, 상기 적어도 하나의 논리 그룹 중 포함되는 워드들의 쓰기 횟수의 평균이 가장 작은 제2 논리 그룹을 선택하고, 상기 제1 논리 그룹 및 상기 제2 논리 그룹 간에 데이터 및 주소를 교환하는 메모리 장치.
  4. 제1항에 있어서,
    상기 적어도 하나의 논리 그룹 중 포함되는 워드들의 쓰기 횟수의 편차가 가장 작은 제1 논리 그룹을 선택하고, 상기 적어도 하나의 논리 그룹 중 포함되는 워드들의 쓰기 횟수의 편차가 가장 큰 제2 논리 그룹을 선택하고, 상기 제1 논리 그룹 및 상기 제2 논리 그룹 간에 데이터 및 주소를 교환하는 메모리 장치.
  5. 제1항에 있어서,
    상기 적어도 하나의 논리 그룹 중 포함되는 워드들의 쓰기 횟수의 최대값이 가장 큰 제1 논리 그룹을 선택하고, 상기 적어도 하나의 논리 그룹 중 포함되는 워드들의 쓰기 횟수의 최대값이 가장 작은 제2 논리 그룹을 선택하고, 상기 제1 논리 그룹 및 상기 제2 논리 그룹 간에 데이터 및 주소를 교환하는 메모리 장치.
  6. 제1항에 있어서,
    적어도 하나의 룩업 테이블을 더 포함하고,
    상기 적어도 하나의 룩업 테이블 각각은 상기 적어도 하나의 논리 그룹 중 어느 하나에 대응하고, 상기 대응하는 논리 그룹에 포함되는 워드들 중 적어도 하나의 워드의 오프셋 및 쓰기 횟수가 저장된 적어도 하나의 엔트리를 포함하고,
    상기 오프셋은 상기 적어도 하나의 워드 각각의 상기 대응하는 논리 그룹 내에서의 상대적인 주소를 나타내는 메모리 장치.
  7. 제6항에 있어서,
    상기 적어도 하나의 룩업 테이블 중 하나가 쓰기 연산에 대응하는 논리 그룹에 대응하고, 상기 쓰기 연산에 대응하는 워드의 오프셋이 상기 대응하는 룩업 테이블에 저장된 경우, 상기 오프셋이 저장된 엔트리의 쓰기 횟수를 업데이트하는 메모리 장치.
  8. 제6항에 있어서,
    상기 적어도 하나의 룩업 테이블 중 하나가 쓰기 연산에 대응하는 논리 그룹에 대응하고, 상기 쓰기 연산에 대응하는 워드의 오프셋이 상기 대응하는 룩업 테이블에 저장되지 않은 경우, 상기 대응하는 룩업 테이블의 엔트리 중 하나를 선택하고, 상기 선택된 엔트리에 상기 쓰기 연산에 대응하는 워드의 오프셋을 저장하고, 상기 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수에 1을 더한 값을 상기 선택된 엔트리에 저장하는 메모리 장치.
  9. 제8항에 있어서,
    랜덤 시퀀스에 기초하여 또는 시간적/공간적 지역성에 기초하여 상기 대응하는 룩업 테이블의 엔트리 중 하나를 선택하고,
    상기 선택된 엔트리가 비어 있지 않고, 상기 선택된 엔트리에 저장된 쓰기 횟수가 상기 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수보다 크면 상기 선택된 엔트리에 저장된 쓰기 횟수를 상기 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수로 설정하는 메모리 장치.
  10. 제6항에 있어서,
    상기 적어도 하나의 룩업 테이블 중 쓰기 연산에 대응하는 논리 그룹에 대응하는 룩업 테이블이 존재하지 않는 경우, 상기 적어도 하나의 룩업 테이블 중 하나를 선택하고, 상기 선택된 룩업 테이블의 엔트리에 저장된 쓰기 횟수의 최대값을 상기 선택된 룩업 테이블에 대응하는 논리 그룹의 최대 쓰기 횟수로 설정하고, 상기 선택된 룩업 테이블을 상기 쓰기 연산에 대응하는 논리 그룹에 대응시키고, 상기 쓰기 연산에 대응하는 워드의 오프셋을 상기 선택된 룩업 테이블에 저장하고, 상기 오프셋이 저장된 엔트리에 상기 쓰기 연산에 대응하는 논리 그룹의 최대 쓰기 횟수에 1을 더한 값을 저장하는 메모리 장치.
  11. 제6항에 있어서,
    상기 적어도 하나의 룩업 테이블의 개수는 상기 적어도 하나의 논리 그룹의 개수 이하이고,
    상기 적어도 하나의 룩업 테이블 각각의 엔트리의 개수는 상기 적어도 하나의 논리 그룹 각각이 포함하는 워드들의 개수 이하인 메모리 장치.
  12. 제1항에 있어서,
    상기 적어도 하나의 논리 그룹 각각에 포함되는 워드들의 쓰기 횟수에 관련된 통계 정보를 상기 적어도 하나의 논리 그룹 각각에 대한 메타 데이터로서 저장하는 메모리 장치.
KR1020140148162A 2014-10-29 2014-10-29 메모리 장치 및 메모리 장치의 관리 방법 KR101501717B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140148162A KR101501717B1 (ko) 2014-10-29 2014-10-29 메모리 장치 및 메모리 장치의 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140148162A KR101501717B1 (ko) 2014-10-29 2014-10-29 메모리 장치 및 메모리 장치의 관리 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020080067033A Division KR101466585B1 (ko) 2008-07-10 2008-07-10 메모리 장치 및 메모리 장치의 관리 방법

Publications (2)

Publication Number Publication Date
KR20140133800A true KR20140133800A (ko) 2014-11-20
KR101501717B1 KR101501717B1 (ko) 2015-03-12

Family

ID=52454245

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140148162A KR101501717B1 (ko) 2014-10-29 2014-10-29 메모리 장치 및 메모리 장치의 관리 방법

Country Status (1)

Country Link
KR (1) KR101501717B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101663425B1 (ko) * 2015-06-29 2016-10-07 한양대학교 산학협력단 저장장치의 성능 및 내구성 향상을 위해 다중 오픈 블록을 관리하는 메모리 저장 장치 및 방법
US10198184B2 (en) 2016-09-19 2019-02-05 SK Hynix Inc. Resistance variable memory apparatus, and circuit and method for operating therefor

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220093982A (ko) 2020-12-28 2022-07-05 삼성전자주식회사 파편화율을 이용하는 메모리 컨트롤러, 및 스토리지 장치 및 이의 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960030252A (ko) * 1995-01-24 1996-08-17 구자홍 반도체 메모리소자 및 그의 데이타 쓰기 방법
KR100484161B1 (ko) * 2002-09-13 2005-04-19 삼성전자주식회사 데이터를 워드 단위 또는 바이트 단위로 로드하고 워드단위로 저장하는 장치 및 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101663425B1 (ko) * 2015-06-29 2016-10-07 한양대학교 산학협력단 저장장치의 성능 및 내구성 향상을 위해 다중 오픈 블록을 관리하는 메모리 저장 장치 및 방법
US10198184B2 (en) 2016-09-19 2019-02-05 SK Hynix Inc. Resistance variable memory apparatus, and circuit and method for operating therefor
US10866734B2 (en) 2016-09-19 2020-12-15 SK Hynix Inc. Resistance variable memory apparatus, and circuit and method for operating therefor

Also Published As

Publication number Publication date
KR101501717B1 (ko) 2015-03-12

Similar Documents

Publication Publication Date Title
KR101466585B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
CN112433956B (zh) 逻辑到物理表高速缓存中基于顺序写入的分区
US11599552B2 (en) Counter-based compaction of key-value store tree data block
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US20120005451A1 (en) Data storage device and bad block managing method thereof
US9037776B2 (en) Storage device with flash memory and data storage method
US20100125694A1 (en) Memory device and management method of memory device
KR101510120B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
CN108027764B (zh) 可转换的叶的存储器映射
US9892034B2 (en) Semiconductor device and operating method thereof
KR20100114381A (ko) 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
CN114442914B (zh) 存储器系统
CN111767235A (zh) 存储器系统、存储器控制器以及存储器控制器的操作方法
CN115080458A (zh) 在存储器子系统中高速缓存逻辑到物理映射信息
CN115145838A (zh) 在与非存储器中存储逻辑到物理映射
KR101501717B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
CN112445715B (zh) 管理不对准存储器组件的重新映射的存储器子系统
JP2015053075A (ja) メモリシステム、情報処理装置および記憶装置
US20110264848A1 (en) Data recording device
TW201624490A (zh) 記憶體裝置及非暫態電腦可讀取記錄媒體
TW201624491A (zh) 資訊處理裝置及非暫態電腦可讀取記錄媒體
US11579792B2 (en) Data movement between different cell regions in non-volatile memory
KR20090006637A (ko) 반도체 메모리 장치 및 그것의 프로그램 방법

Legal Events

Date Code Title Description
A107 Divisional application of patent
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: 20180220

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190221

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 6