KR102447602B1 - 메모리 장치 및 그 동적 가비지 컬렉션 방법 - Google Patents
메모리 장치 및 그 동적 가비지 컬렉션 방법 Download PDFInfo
- Publication number
- KR102447602B1 KR102447602B1 KR1020170139344A KR20170139344A KR102447602B1 KR 102447602 B1 KR102447602 B1 KR 102447602B1 KR 1020170139344 A KR1020170139344 A KR 1020170139344A KR 20170139344 A KR20170139344 A KR 20170139344A KR 102447602 B1 KR102447602 B1 KR 102447602B1
- Authority
- KR
- South Korea
- Prior art keywords
- garbage collection
- memory device
- operating speed
- vpc ratio
- vpc
- 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
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Investigating Or Analysing Biological Materials (AREA)
Abstract
메모리 장치 및 그 동적 가비지 컬렉션 방법이 제공된다. 상기 메모리 장치의 동적 가비지 컬렉션 방법은 최소 동작 속도를 수신하고, 최대 동작 속도, 상기 최소 동작 속도 및 가비지 컬렉션 속도를 이용하여 기준 VPC 비율(Valid page count ratio)을 계산하되, 상기 기준 VPC 비율은 하기 수학식 1에 의해서 계산되고, 상기 기준 VPC 비율, 현재 평균 VPC 비율을 이용하여 가비지 컬렉션을 수행할지를 판단하는 것을 포함하고, 상기 수학식 1은 Vr=Gp(Jp-Mp)/(Jp*Mp+(Gp*(Jp-Mp)))이고, 여기서, Vr은 상기 기준 VPC 비율이고, Gp는 상기 가비지 컬렉션 속도이고, Jp는 상기 최대 동작 속도이고, Mp는 상기 최소 동작 속도이다.
Description
본 발명은 메모리 장치 및 그 동적 가비지 컬렉션 방법에 관한 것이다.
반도체 메모리 장치들은 휘발성 메모리 장치들 및 비휘발성 메모리 장치들을 포함한다. 휘발성 메모리 장치의 리드(Read) 및 라이트(write) 속도는 빠른 반면, 휘발성 메모리 장치는 전원-오프일때, 저장된 내용을 잃을 수 있다. 반대로, 비휘발성 메모리 장치들은 전원-오프인 경우에도, 저장된 내용을 유지하므로, 비휘발성 메모리 장치들은 전원 공급 여부에 관계 없이 유지되어야 하는 컨텐츠를 저장하는 데 이용된다.
예컨대, 휘발성 메모리 장치는 정적 램(SRAM: static RAM), 동적 램(DRAM: dynamic RAM), 동기식 디램(SDRAM: synchronous DRAM) 등을 포함한다. 비휘발성 메모리 장치들은 전원-오프인 경우에도, 저장된 내용을 유지한다. 예컨대, 비휘발성 메모리 장치는 롬(ROM: read only memory), 프로그래머블 롬(PROM: programmable ROM), 전기적 프로그래머블 롬(EPROM: electrically programmable ROM), 전기적 소거 및 프로그램 가능 롬(EEPROM: electrically erasable and programmable ROM), 플래시 메모리(flash memory), 상변화 램(PRAM: phase change RAM), 마그네틱 램(MRAM: magnetic RAM), 저항성 램(RRAM: resistive RAM), 강유전체 램(FRAM: ferroelectric RAM) 등을 포함한다. 플래시 메모리는 NOR 타입 플래시 메모리 및 NAND 타입 플래시 메모리로 분류될 수 있다.
특히, 플래시 메모리 장치는 일반적인 EEPROM과 비교할 때, 고-집적화된 보조 대용량 저장 장치와 같은 것으로 구현될 수 있는 장점이 있다.
다양한 메모리 시스템들은 플래시 메모리를 이용하여 생산되고 있다. 메모리 시스템은 프로토콜을 통해 플래시 메모리로 데이터를 저장하거나 플래시 메모리로부터 데이터를 리드할 수 있다.
플래시 메모리를 저장 매체로 사용하는 저장 장치는 디스크 드라이브들을 포함하는 저장 장치와 비교해서, 증가된 수명, 더 적은 파워 소모 및 더 나은 접근 시간(access time)을 가지는 것으로 간주된다.
이러한 플래시 메모리는 프리 블록을 확보하기 위해서 가비지 컬렉션(garbage collection) 동작을 수행할 수 있다. 이러한 가비지 컬렉션의 수행 시점에 따라서, 플래시 메모리의 성능이 급격히 낮아질 수 있어 이를 제어하는 방안이 필요하다.
본 발명이 해결하려는 과제는, 가비지 컬렉션 수행 시점을 동적으로 제어하여 최소 성능이 보장되는 메모리 장치를 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 가비지 컬렉션 수행 시점을 동적으로 제어하여 최소 성능이 보장되는 메모리 장치의 동적 가비지 컬렉션 방법을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치의 동적 가비지 컬렉션 방법은, 최소 동작 속도를 수신하고, 최대 동작 속도, 상기 최소 동작 속도 및 가비지 컬렉션 속도를 이용하여 기준 VPC 비율(Valid page count ratio)을 계산하되, 상기 기준 VPC 비율은 하기 수학식 1에 의해서 계산되고, 상기 기준 VPC 비율, 현재 평균 VPC 비율을 이용하여 가비지 컬렉션을 수행할지를 판단하는 것을 포함하고, 상기 수학식 1은 Vr=Gp(Jp-Mp)/(Jp*Mp+(Gp*(Jp-Mp)))이고, 여기서, Vr은 상기 기준 VPC 비율이고, Gp는 상기 가비지 컬렉션 속도이고, Jp는 상기 최대 동작 속도이고, Mp는 상기 최소 동작 속도이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치의 동적 가비지 컬렉션 방법은 최대 동작 속도, 최소 동작 속도 및 가비지 컬렉션 속도를 이용하여 기준 VPC 비율을 계산하고, 상기 기준 VPC 비율 이하의 블록들에 대한 프리 블록 기대치를 계산하고, 현재의 평균 VPC 비율을 이용하여 최종 필요 프리 블록수를 계산하고, 상기 프리 블록 기대치와 상기 최종 필요 프리 블록수를 비교하여 현재 가비지 컬렉션을 수행할지를 결정하는 것을 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치의 동적 가비지 컬렉션 방법은 제1 시점에 호스트로부터 제1 최소 동작 속도를 수신하고, 제1 최대 동작 속도, 상기 제1 최소 동작 속도 및 제1 가비지 컬렉션 속도를 이용하여 제1 기준 VPC 비율을 계산하고, 상기 제1 기준 VPC 비율, 현재의 제1 평균 VPC 비율을 이용하여 제1 가비지 컬렉션을 수행할지를 판단하고, 만일 상기 제1 가비지 컬렉션을 수행하지 않은 경우, 상기 제1 시점과 다른 제2 시점에 상기 호스트로부터 제2 최소 동작 속도를 수신하고, 제2 최대 동작 속도, 상기 제2 최소 동작 속도 및 제2 가비지 컬렉션 속도를 이용하여 제2 기준 VPC 비율을 계산하고, 상기 제2 기준 VPC 비율, 현재의 제2 평균 VPC 비율을 이용하여 제2 가비지 컬렉션을 수행할지를 판단하는 것을 포함한다.
상기 다른 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 비휘발성 메모리 및 상기 비휘발성 메모리 및 호스트와 연결되는 메모리 컨트롤러로서, 상기 메모리 컨트롤러는, 최대 동작 속도, 최소 동작 속도 및 가비지 컬렉션 속도를 수신하여 기준 VPC 비율을 계산하고, 상기 기준 VPC 비율, 현재 평균 VPC 비율을 이용하여 가비지 컬렉션을 수행할지를 판단하여 가비지 컬렉션 수행 신호를 생성하는 가비지 컬렉션 트리거와, 상기 가비지 컬렉션 트리거를 수신하고, 상기 비휘발성 메모리의 가비지 컬렉션을 수행하는 가비지 컬렉션 수행기를 포함하는 메모리 컨트롤러를 포함한다.
도 1은 본 발명의 몇몇 실시예들에 따른 메모리 장치를 포함하는 메모리 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 메모리 장치를 세부적으로 설명하기 위한 블록도이다.
도 3은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 예시적인 등가 회로도이다.
도 4는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 사시도이다.
도 5는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 단면 사시도이다.
도 6은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 7은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 가비지 컬렉션 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율을 설명하기 위한 개념도이다.
도 9는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율의 산포를 도시한 그래프이다.
도 10은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 로지컬 점유 비율 대비 피지컬 점유 비율을 도시한 그래프이다.
도 11은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율의 산포 및 프리 블록 기대치를 도시한 그래프이다.
도 12는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 로지컬 점유 비율 대비 랜덤 라이트 성능을 도시한 그래프이다.
도 13은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 14는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 15는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 16은 본 발명의 몇몇 실시예들에 따른 메모리 장치가 포함된 SSD(solid state drive)를 설명하기 위한 블록도이다.
도 17은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 동적 가비지 컬렉션 방법을 설명하기 위한 순서도이다.
도 18은 도 17의 가비지 컬렉션 수행 여부 판단 단계를 세부적으로 설명하기 위한 순서도이다.
도 2는 도 1의 메모리 장치를 세부적으로 설명하기 위한 블록도이다.
도 3은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 예시적인 등가 회로도이다.
도 4는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 사시도이다.
도 5는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 단면 사시도이다.
도 6은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 7은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 가비지 컬렉션 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율을 설명하기 위한 개념도이다.
도 9는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율의 산포를 도시한 그래프이다.
도 10은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 로지컬 점유 비율 대비 피지컬 점유 비율을 도시한 그래프이다.
도 11은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율의 산포 및 프리 블록 기대치를 도시한 그래프이다.
도 12는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 로지컬 점유 비율 대비 랜덤 라이트 성능을 도시한 그래프이다.
도 13은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 14는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 15는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 16은 본 발명의 몇몇 실시예들에 따른 메모리 장치가 포함된 SSD(solid state drive)를 설명하기 위한 블록도이다.
도 17은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 동적 가비지 컬렉션 방법을 설명하기 위한 순서도이다.
도 18은 도 17의 가비지 컬렉션 수행 여부 판단 단계를 세부적으로 설명하기 위한 순서도이다.
이하에서, 도 1 내지 도 12를 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 장치에 대해서 설명한다.
도 1은 본 발명의 몇몇 실시예들에 따른 메모리 장치를 포함하는 메모리 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예들에 따른 메모리 장치(20)를 포함하는 메모리 시스템은 호스트(10) 및 메모리 장치(20)를 포함한다.
호스트(10)는 메모리 장치(20)와 연결되어 메모리 장치(20)로부터 여러가지 동작을 지시할 수 있다. 호스트(10)의 동작 지시는 커맨드(CMD)를 통해서 이루어질 수 있다. 호스트(10)는 예를 들어, 리드(read) 동작, 라이트(write) 동작 및 이레이즈(erase) 동작 등을 메모리 장치(20)에 지시할 수 있다. 단, 본 발명의 실시예가 이에 제한되는 것은 아니다.
호스트(10)는 메모리 장치(20)로 최소 동작 속도(Mp)를 전송할 수 있다. 최소 동작 속도(Mp)는 메모리 장치(20)의 리드 동작, 라이트 동작 등을 포함하는 모든 동작에 대해서 그 동작 속도의 최소값을 의미할 수 있다. 즉, 호스트(10)는 최소 동작 속도(Mp)를 제시하면서 메모리 장치(20)가 그 미만의 속도로 동작하지 않도록 지시할 수 있다.
메모리 장치(20)는 사용자 데이터를 저장하는 저장 매체이다. 예를 들어, 메모리 장치(20)는 SSD(solid state drive), 메모리 카드(CF, SD, microSD, 등), USB 저장 장치 등 일 수 있다.
본 발명의 몇몇 실시예에 있어서, 메모리 장치(20)는 비휘발성 메모리 장치로 구성될 수 있다. 비휘발성 메모리 장치는 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다. 또한, 비휘발성 메모리 장치는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 아래에서는 메모리 장치(20)가 플래시 메모리 장치로 구현된 플래시 저장 장치(flash storage device)라고 가정하겠다
메모리 장치(20)는 호스트(10)로부터 커맨드(CMD)와 최소 동작 속도(Mp)를 전달받을 수 있다. 메모리 장치(20)는 내부에 메모리 컨트롤러(100)와 비휘발성 메모리(200)를 포함할 수 있다. 메모리 컨트롤러(100)와 비휘발성 메모리(200)에 대해서는 이하에서 자세히 설명한다.
도 2는 도 1의 메모리 장치를 세부적으로 설명하기 위한 블록도이다.
도 2를 참조하면, 비휘발성 메모리(200)는 복수의 메모리 블록들(BLK1 ~ BLKz, z는 2 이상의 정수)을 포함한다. 복수의 메모리 블록들(BLK1 ~ BLKz) 각각은 복수의 페이지들(Page 1 ~ Page m, m은 2 이상의 정수)을 포함한다
도 3은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 예시적인 등가 회로도이다.
도 3을 참조하면, 메모리 블록(BLK)은 복수의 비트라인들(BL1 ~ BLn, n는 2 이상의 정수)에 연결된 스트링(String)들을 포함한다. 여기서 스트링들 각각은 비트라인과 공통 소스 라인(common source line; CSL) 사이에 직렬 연결된 적어도 하나의 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1 ~ MCm, m은 2 이상의 정수), 적어도 하나의 접지 선택 트랜지스터(GST)를 포함한다.
메모리 셀들(MC1 ~ MCm) 각각은 적어도 하나의 비트 이상의 데이터를 저장할 수 있다. 도시되지 않았지만, 스트링들 각각은 스트링 선택 트랜지스터(SST)와 메모리 셀들(MC1 ~ MCm) 사이에 적어도 하나의 더미 셀과, 메모리 셀들(MC1 ~ MCm)과 접지 선택 트랜지스터(GST) 사이에 적어도 하나의 더미 셀을 더 포함할 수 있다.
도 4는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 사시도이다.
도 4를 참조하면, 기판 위에 4개의 서브 블록들이 형성된다. 각각의 서브 블록들은 기판 위에 워드라인 컷(WL cut)들 사이에 적어도 하나의 접지 선택 라인(GSL), 복수의 워드라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)이 판 형태로 적층됨으로써 형성된다. 여기서 적어도 하나의 스트링 선택 라인(SSL)은 스트링 선택 라인 컷(String Cut)으로 분리된다. 한편, 도 4에서는 스트링 선택 라인 컷이 존재하지만, 본 발명의 메모리 블록이 여기에 제한되지 않는다. 본 발명의 메모리 블록(BLKa)은 스트링 선택 라인 컷이 존재하지 않도록 구현될 수도 있다.
제1 방향(1st)과 제2 방향(2nd)은 서로 교차하고, 제3 방향(3rd)은 제1 방향(1st) 및 제2 방향(2nd)과 교차할 수 있다. 제1 방향(1st), 제2 방향(2nd) 및 제3 방향(3rd)은 예를 들어, 서로 직교하는 오소고날한 방향일 수 있다.
접지 선택 라인(GSL)과 워드라인들(WLs)과 스트링 선택 라인(SSL)은 제2 방향(2nd)으로 연장되고, 워드라인 컷과 스트링 선택 라인 컷에 의해서 제1 방향(1st)으로 서로 이격될 수 있다. 또한, 접지 선택 라인(GSL)과 워드라인들(WLs)과 스트링 선택 라인(SSL)은 순차적으로 제3 방향(3rd)으로 적층될 수 있다.
본 발명의 몇몇 실시예에 있어서, 접지 선택 라인(GSL)과 워드라인들(WLs) 사이에 적어도 하나의 더미 워드라인이 판 형태로 적층되거나, 워드라인들(WLs)과 스트링 선택 라인(SSL) 사이에 적어도 하나의 더미 워드라인이 판 형태로 적층 될 수 있다.
각각의 워드라인 컷들은, 도시되지 않았지만 공통 소스 라인(common source line: CSL)을 포함한다. 실시 예에 있어서, 각각의 워드라인 컷에 포함된 공통 소스 라인(CSL)은 공통으로 연결된다. 비트라인에 연결된 필라(pillar)가 적어도 하나의 접지 선택 라인(GSL), 복수의 워드라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)을 관통함으로써, 스트링이 형성된다
도 4에서는 워드라인 컷들 사이의 대상을 서브 블록으로 도시하였는데, 본 발명이 반드시 여기에 제한되지 않는다. 본 발명의 서브 블록은 워드라인 컷과 스트링 선택 라인 컷 사이의 대상을 서브 블록으로 명명할 수 있다.
본 발명의 실시 예에 따른 블록(BLKa)은 두 개의 워드라인들이 하나로 병합된 구조, 다른 말로 워드라인 병합 구조(merged wordline structure)로 구현될 수 있다
도 5는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 블록에 대한 단면 사시도이다. 도 5의 블록(BLKb) 구조는 도 4의 블록(BLKa) 구조와 다를 수 있다.
도 5를 참조하면, 메모리 블록(BLKb)은 설명의 편의를 위하여 워드라인의 층수가 4라고 하였으나, 이에 제한되는 것은 아니다. 메모리 블록(BLKb)은 인접한 직렬 연결된 메모리 셀들의 하단들을 파이프로 연결하는 PBiCS(pipe-shaped bit cost scalable) 구조로 구현될 수 있다.
메모리 블록(BLKb)은 m×n(m,n은 자연수)의 스트링들(NS)을 포함한다. 도 5에서는 m=6, n=2를 나타내고 있다. 각 스트링(NS)은 직렬 연결된 메모리 셀들(MC1 ~ MC8)를 포함한다. 여기서 메모리 셀들(MC1 ~ MC8)의 제 1 상단은 스트링 선택 트랜지스터(SST)에 연결되고, 메모리 셀들(MC1 ~ MC8)의 제 2 상단은 접지 선택 트랜지스터(GST)에 연결되고, 메모리 셀들(MC1 ~ MC8)의 하단은 파이프 연결된다.
워드라인들(WL1~WL8)은 제1 방향(1st)으로 연장되고, 스트링들(NS)은 제2 방향으로 연장될 수 있다. 워드라인들(WL1~WL8)과 스트링들(NS)은 제3 방향(3rd)으로 서로 이격될 수 있다.
스트링(NS)을 구성하는 메모리 셀들은 복수의 반도체 층에 적층됨으로써 형성된다. 각 스트링(NS)은 제 1 필라 (PL11), 제 2 필라(PL12), 제 1 필라(PL11) 및 제 2 필라(PL12)를 연결하는 필라 연결부(PL13)를 포함한다. 제 1 필라(PL11)는 비트라인(예를 들어, BL1)과 필라 연결부(PL13)에 연결되고, 스트링 선택 라인(SSL), 워드라인들(WL5 ~ WL8) 사이를 관통함으로써 형성된다. 제 2 필라(PL12)는 공통소스라인(CSL)과 필라 연결부(PL13)에 연결되고, 접지 선택 라인(GSL), 워드라인들(WL1 ~ WL4) 사이를 관통함으로써 형성된다. 도 5에 도시된 바와 같이, 스트링(NS)은 U 자형 필라 형태로 구현된다.
이 때, 제1 필라(PL11) 및 제2 필라(PL12)는 제3 방향으로 연장되고, 필라 연결부(PL13)는 제2 방향(2nd)으로 연결될 수 있다.
본 발명의 몇몇 실시 예에 있어서, 백-게이트(BG)는 기판 위에 형성되고, 백-게이트(BC) 내부에 필라 연결부(PL13)가 구현될 수 있다. 실시 예에 있어서, 백-게이트(BG)는 블록(BLKb)에 공통적으로 존재할 수 있다. 백-게이트(BG)는 다른 블록의 백-게이트와 서로 분리된 구조일 수 있다.
도 6은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 6을 참조하면, 메모리 컨트롤러(100)는 성능 모니터(160), 가비지 컬렉션 프레딕터(170), 가비지 컬렉션 트리거(180) 및 가비지 컬렉션 실행기(190)를 포함할 수 있다.
성능 모니터(160)는 메모리 장치(20)은 최대 동작 속도(Jp)를 계산할 수 있다. 성능 모니터(160)는 메모리 장치(20)의 현재 동작 속도를 측정하고, 이를 이용하여 메모리 장치(20)의 최대 동작 속도(Jp)를 도출할 수 있다.
최대 동작 속도(Jp)란 1초에 소모되는 프리 페이지 양의 최대값을 의미할 수 있다. 또는 최대 동작 속도(Jp)는 1초에 소모되는 저장 공간의 크기의 최대값으로도 정의할 수 있다.
성능 모니터(160)는 상기 현재 동작 속도를 동적으로(dynamically) 측정하므로 이를 기반으로 계산된 최대 동작 속도(Jp) 역시 동적으로 계산될 수 있다.
성능 모니터(160)는 최대 동작 속도(Jp)를 가비지 컬렉션 트리거(180)로 전송할 수 있다. 이 때, 최대 동작 속도(Jp)의 전송 역시 동적으로 수행될 수 있다. 즉, 가장 최신에 계산된 최대 동작 속도(Jp)가 성능 모니터(160)에서 가비지 컬렉션 트리거(180)로 전송될 수 있다.
가비지 컬렉션 프레딕터(170)는 가비지 컬렉션 속도(Gp)를 예측할 수 있다. 가비지 컬렉션의 속도는 비휘발성 메모리(200)의 데이터 배치 구조에 따라서 달라질 수 있다. 따라서, 가비지 컬렉션 프레딕터(170)는 비휘발성 메모리(200)의 데이터 배치 구조를 고려하여 가비지 컬렉션 속도(Gp)를 예측할 수 있다.
가비지 컬렉션 속도(Gp)란 1초당 가비지 컬렉션이 완료되는 페이지의 수를 의미할 수 있다. 또는 가비지 컬렉션 속도(Gp)는 1초당 가비지 컬렉션이 완료되는 저장 공간의 크기를 의미할 수 있다.
가비지 컬렉션 프레딕터(170)도 동적으로 가비지 컬렉션 속도(Gp)를 예측할 수 있다. 가비지 컬렉션 프레딕터(170)는 가비지 컬렉션 속도(Gp)를 가비지 컬렉션 트리거(180)로 전송할 수 있다. 이 때, 가비지 컬렉션 속도(Gp)의 전송 역시 동적으로 수행될 수 있다. 즉, 가장 최근에 계산된 가비지 컬렉션 속도(Gp)가 가비지 컬렉션 프레딕터(170)에서 가비지 컬렉션 트리거(180)로 전송될 수 있다.
가비지 컬렉션 트리거(180)는 호스트(10)로부터 최소 동작 속도(Mp)를 전송받을 수 있다. 가비지 컬렉션 트리거(180)는 성능 모니터(160)로부터 최대 동작 속도(Jp)를 전송받을 수 있다. 가비지 컬렉션 트리거(180)는 가비지 컬렉션 프레딕터(170)로부터 가비지 컬렉션 속도를 전송받을 수 있다.
이 때, 최소 동작 속도(Mp)는 1초에 소모되는 프리 페이지 양의 최소값을 의미할 수 있다. 또는 최소 동작 속도(Mp)는 1초에 소모되는 저장 공간의 크기의 최소값으로도 정의할 수 있다.
가비지 컬렉션 트리거(180)는 최소 동작 속도(Mp), 최대 동작 속도(Jp) 및 가비지 컬렉션 속도(Gp)를 이용하여 기준 VPC 비율을 도출할 수 있다.
이하, 도 7 내지 도 9를 참조하여, 가비지 컬렉션 트리거(180)가 기준 VPC 비율(CP)을 어떻게 도출하는지를 설명한다.
도 7은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 가비지 컬렉션 동작을 설명하기 위한 개념도이고, 도 8은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율을 설명하기 위한 개념도이다. 도 9는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율의 산포를 도시한 그래프이다.
우선, 도 7을 참조하여, 가비지 컬렉션 동작의 방식을 설명한다.
비휘발성 메모리(200), 특히 플래시 메모리는 호스트(10)가 인식하는 로지컬 프리 블록과 실제 비휘발성 메모리(200) 내에 존재하는 피지컬 프리 블록 사이에 차이가 존재할 수 있다. 이는, 플래시 메모리의 특징으로서 동일한 로지컬 주소로의 데이터의 덮어쓰기(overwrite)가 되지 않기 때문이다.
즉, 호스트(10)가 동일한 로지컬 주소에 데이터를 덮어쓰기를 요청한 경우에는 기존의 데이터가 기존의 피지컬 주소에 올드 데이터로 남아있고, 새로운 데이터가 새로운 피지컬 주소에 라이트될 수 있다. 이러한 경우 올드 데이터는 단지 유효하지 않은 인밸리드(invalid) 상태로 피지컬 프리 블록을 채운 상태로 남아있게 된다.
따라서, 호스트(10)는 비어있는 로지컬 주소 즉, 로지컬 프리 블록에 새로 라이트 동작을 요청할 수 있지만, 실제로 피지컬 프리 블록은 상기 올드 데이터에 의해서 채워져서 존재하지 않을 수 있다. 이 때, 메모리 컨트롤러(100)는 가비지 컬렉션을 통해서 로지컬 프리 블록에 대응하는 피지컬 프리 블록을 확보할 수 있다.
도 7의 제1 블록(B1)은 복수의 페이지를 포함할 수 있다. 복수의 페이지 중 일부는 유효한 데이터가 라이트된 제1 유효 페이지(Vp1)이고, 복수의 페이지 중 또 다른 일부는 상술한 인밸리드 상태의 데이터가 기록된 제1 무효 페이지(Ip1)이고, 복수의 페이지 중 나머지는 아무런 데이터가 기록되지 않은 제1 프리 페이지(Fp1)일 수 있다. 단, 상기 구성은 설명을 위한 하나의 예시에 불과하고, 실제 블록의 구성은 무효 페이지, 유효 페이지 및 프리 페이지 중 적어도 하나를 포함하는 모든 구성이 가능할 수 있다.
메모리 컨트롤러(100)에 의해서 가비지 컬렉션이 진행되면, 제1 블록(B1)의 제1 유효 페이지(Vp1)는 다른 프리 블록 즉, 제2 블록(B2)으로 카피(copy)될 수 있다. 즉, 제2 블록(B2)은 제1 유효 페이지(Vp1)가 카피된 제2 유효 페이지(Vp2)를 포함할 수 있다. 다만, 제1 블록(B1)의 제1 무효 페이지(Ip1)는 제2 블록(B2)에 카피되지 않으므로 제2 블록(B2)은 제1 유효 페이지(Vp1)와, 아무것도 기록되지 않은 제2 프리 페이지(Fp2)만을 포함할 수 있다.
제1 블록(B1)은 가비지 컬렉션(GC)에 의해서 제1 변환 블록(B1')으로 변경될 수 있다. 즉, 제1 블록(B1) 내의 제1 유효 페이지(Vp1)와 제1 무효 페이지(Ip1)가 모두 인밸리드한 제2 무효 페이지(Ip2)로 변환될 수 있다. 제1 블록(B1) 내의 제1 프리 페이지(Fp1)는 여전히 아무것도 기록되지 않은 제3 프리 페이지(Fp3)로 남아있을 수 있다. 따라서, 제1 변환 블록(B1')은 제2 무효 페이지(Ip2) 및 제3 프리 페이지(Fp3)만을 포함할 수 있다.
추후에, 제1 변환 블록(B1')은 시큐어 이레이즈 등의 커맨드에 따라서 제1 변환 프리 블록(B1'')으로 변경될 수 있다. 즉, 내부에 유효 페이지 없이 무효 페이지 및 프리 페이지만 존재하는 블록은 전체적으로 프리 페이지만을 가지도록 변경될 수 있다. 즉, 제1 변환 블록(B1')의 제2 무효 페이지(Ip2)와 제3 프리 페이지(Fp3)는 모두 제4 프리 페이지(Fp4)로 변환될 수 있다.
이러한 가비지 컬렉션의 동작은 기존의 제1 블록(B1)의 제1 유효 페이지(Vp1)에 기록된 데이터는 제2 블록(B2)의 제2 유효 페이지로 옮겨 보존하되, 제1 블록(B1)을 제4 프리 페이지(Fp4)로만 구성된 제1 변환 프리 블록(B1'')으로 변환시킴으로서 프리 블록을 확보할 수 있다.
도 8을 참조하면, 블록(B)은 유효 페이지(Vp), 무효 페이지(Ip) 및 프리 페이지(Fp) 중 적어도 하나로 구성될 수 있다. 상술하였듯이, 유효 페이지(Vp)는 유효한 데이터가 기록된 페이지고, 무효 페이지(Ip)는 인밸리드된 올드 데이터가 기록된 페이지이다. 프리 페이지(Fp)는 아무런 데이터가 기록되지 않은 페이지이다.
유효 페이지(Vp)를 제외한 무효 페이지(Ip) 및 프리 페이지(Fp)는 비유효 페이지(Np)로 정의될 수 있다.
블록(B)의 VPC 비율(Valid Page Count ratio)은 블록(B)을 구성하는 전체 페이지 중의 유효 페이지(Vp)의 비율을 의미할 수 있다.
즉, VPC 비율은, 수학식 1 로 정의될 수 있다.
[수학식 1]
Vr=Vp/(Vp+Np)=Vp/(Vp+Ip+Fp)
여기서, Vr은 VPC 비율이고, Vp는 유효 페이지의 개수이고, Np는 비유효 페이지의 개수이고, Ip는 무효 페이지의 개수이고, Fp는 프리 페이지의 개수이다.
도 9를 참조하면, VPC 비율에 따른 블록의 산포를 확인할 수 있다. 도 9와 같은 산포에서 기준 VPC 비율(CP)을 정하고, 영역을 나눌 수 있다.
구체적으로, 기준 VPC 비율(CP)보다 낮은 VPC 비율을 가지는 블록은 라이트 영역(Rl)에 위치하고, 기준 VPC 비율(CP)보다 높은 VPC 비율을 가지는 블록은 헤비 영역(Rh)에 위치할 수 있다.
도 7 및 도 8을 참조하면, 유효 페이지(Vp)의 비율이 작은 블록 즉, VPC 비율이 낮은 블록이 가비지 컬렉션에 의해서 더 많은 프리 페이지(Fp)를 생성할 수 있음을 알 수 있다. 따라서, 가비지 컬렉션은 VPC 비율이 낮은 블록부터 순차적으로 수행될 수 있다. 그래야 가비지 컬렉션의 효율이 극대화될 수 있기 때문이다.
이 때, 가비지 컬렉션의 효율은 수학식 2로 정의될 수 있다.
[수학식 2]
GCeff=(1-Vr)/Vr
여기서, GCeff는 가비지 컬렉션의 효율이고, Vr은 VPC 비율이다.
다시, 도 6을 참조하면, 가비지 컬렉션 트리거(180)는 가비지 컬렉션 프레딕터(170)로부터 전송받은 가비지 컬렉션 속도(Gp)와 가비지 컬렉션의 효율을 이용하여 프리 페이지 생산 속도를 다음의 수학식 3과 같이 산출할 수 있다.
[수학식 3]
Fp=Gp*GCeff= Gp*(1-Vr)/Vr
여기서, Fp는 프리 페이지 생산 속도이고, Gp는 가비지 컬렉션 속도이다.
이 때, Fp는 메모리 장치(20)의 최소 동작 속도(Mp)를 고려하지 않은 프리 페이지 생산 속도이다. 메모리 장치(20)는 최소 동작 속도(Mp)를 보장하기 위해서 가비지 컬렉션 속도를 더 줄여야 할 수도 있다.
따라서, 최대 동작 속도(Jp)와 최대 동작 속도(Jp)에서 최소 동작 속도(Mp)를 제외한 값의 비율만큼을 더욱 곱해주면 최소 동작 속도(Mp)를 고려한 실제 프리 페이지 생산 속도를 구할 수 있다. 이는 하기 수학식 4에 의해서 표현될 수 있다.
[수학식 4]
Fpa=(1-(Mp/Jp))*Fp=(1-(Mp/Jp))*Gp*GCeff=(1-(Mp/Jp))*Gp*(1-Vr)/Vr
여기서, Fpa는 최소 동작 속도(Mp)를 고려한 실제 프리 페이지 생산 속도이고, Mp는 호스트(10)로부터 가비지 컬렉션 트리거(180)가 수신한 최소 동작 속도(Mp)이고, Jp는 성능 모니터(160)가 획득한 최대 동작 속도(Jp)일 수 있다.
가비지 컬렉션 트리거(180)는 상기 실제 프리 페이지 생산 속도가 호스트(10)가 전송해준 최소 동작 속도(Mp) 즉, 최소한의 프리 페이지 소비 속도보다 큰 VPC 비율 값을 계산할 수 있다. 이러한 조건은 다음의 수학식 5로 표현할 수 있다.
[수학식 5]
Fpa=(1-(Mp/Jp))*Gp*(1-Vr)/Vr >Mp
상기 부등식의 양변을 Vr에 의해서 정리하면 다음의 수학식 6으로 나타낼 수 있다.
[수학식 6]
Vr<Gp(Jp-Mp)/(Jp*Mp+(Gp*(Jp-Mp)))
예시적으로, 최대 동작 속도(Jp)가 48MB/s, 최소 동작 속도(Mp)가 8MB/s이고, 가비지 컬렉션 속도가 24MB/s라고 가정하는 경우, Vr<0.71일 수 있다. 이에 따라서, 기준 VPC 비율(CP)은 0.71일 수 있다.
가비지 컬렉션 트리거(180)는 수학식 6과 같은 조건에 의한 VPC 비율값의 최대 한계치를 도 9의 기준 VPC 비율(CP)로 산출할 수 있다.
가비지 컬렉션 트리거(180)는 기준 VPC 비율(CP)을 산출한 다음에, 현재 가비지 컬렉션이 수행되어야하는지를 판단할 수 있다.
가비지 컬렉션 트리거(180)는 비휘발성 메모리(200)로부터 VPC 데이터(VPC DATA)를 수신할 수 있다. VPC 데이터(VPC DATA)는 비휘발성 메모리(200) 내의 블록들의 VPC 비율 현황 및 현재 평균 VPC 비율 등의 VPC 관련 데이터를 포함할 수 있다.
이하, 도 10 및 도 11을 참조하여, 가비지 컬렉션 트리거(180)가 가비지 컬렉션 수행여부를 어떻게 결정하는 지를 설명한다.
도 10은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 로지컬 점유 비율 대비 피지컬 점유 비율을 도시한 그래프이고, 도 11은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 VPC 비율의 산포 및 프리 블록 기대치를 도시한 그래프이다.
도 10의 그래프의 가로축은 로지컬 점유율 즉, 호스트(10)가 인식하는 로지컬 공간의 점유 비율을 의미할 수 있다. 도 10의 그래프의 세로축은 피지컬 공간의 점유율 즉, 실제 메모리 장치(20) 내의 데이터 점유율을 의미할 수 있다.
만일 메모리 장치(20)의 모든 라이트 동작이 랜덤 라이트(random write) 동작이 아닌 시퀀셜 라이트(sequential write) 동작인 경우 즉, 피지컬 주소에서도 중간에 빈 페이지 없이 순차적으로 데이터를 라이트하는 경우에는 도 10의 ③의 그래프처럼 평균 VPC 비율이 100%가 될 수 있다. 이 경우에는 기존에 존재하는 피지컬 블록이 모든 로지컬 블록을 대체할 수 있으므로 가비지 컬렉션이 수행되지 않을 수 있다.
메모리 장치(20)의 라이트 동작 중 일부가 랜덤 라이트 동작인 경우에는 당연히 평균 VPC 비율이 100%보다 낮아질 수 밖에 없다. 도 10의 ①은 평균 VPC 비율이 66.7%인 그래프이고, ②는 평균 VPC 비율이 83.3%인 그래프이다.
그래프 ① 및 ②는 현재 시점의 평균 VPC 비율을 이용하여 도시된 그래프이므로 실제 메모리 장치(20)의 동작과는 다를 수 있다. 즉, 현재 시점의 평균 VPC 비율은 동적 수치이므로 측정 시점에 따라 변할 가능성이 있지만, 그래프 ① 및 ②는 이러한 사항을 고려하지 않고, 로지컬 공간의 점유율이 100%일 때까지의 직선 그래프를 도시한 것일 수 있다.
메모리 장치(20)는 VPC가 100%보다 낮을 가능성에 의해 실제 로지컬 저장 공간보다 피지컬 저장 공간이 더 필요하기 때문에 쓰레숄드 프리 블록(threshold FB)에 해당하는 피지컬 공간을 가질 수 있다. 따라서, 일반적인 가비지 컬렉션의 수행시점은 피지컬 공간의 점유일이 100%보다 조금 높은 시점 즉, 가비지 컬렉션 포인트(garbage collection point)(GCP)일 수 있다.
그래프 ① 및 ②에서 로지컬 공간의 점유율이 100%인 경우에는 각 그래프의 최종 피지컬 공간 점유율이 계산될 수 있다. 물론, 이는 현재 평균 VPC 비율에 의해서 유추된 값이지만, 이를 통해서 현재 가비지 컬렉션 수행 여부를 판단할 수 있다. 상기 최종 피지컬 공간 점유율을 통해서 예상 소모 블록수를 도출할 수 있다.
구체적으로, 그래프 ①의 경우 예상 소모 블록수를 계산하고, 거기에 전체 로지컬 블록수(100%의 피지컬 공간의 점유율에 대응하는 피지컬 블록수와 동일함) 및 스레숄드 블록수를 제외하여 최종 필요 프리 블록수를 계산할 수 있다. 즉, E2에 해당되는 블록수가 최종 필요 프리 블록수일 수 있다.
마찬가지로, 그래프 ②의 경우 예상 소모 블록수를 계산하고, 거기에 전체 로지컬 블록수 및 스레숄드 블록수를 제외하여 최종 필요 프리 블록수를 계산할 수 있다. 즉, E1에 해당되는 블록수가 최종 필요 프리 블록수일 수 있다.
도 11을 참조하면, 기준 VPC 비율(CP)보다 낮은 라이트 영역(Rl)의 블록들에 대한 가비지 컬렉션을 수행하였을 경우 프리 블록 기대치(Expected FB)의 그래프를 도시할 수 있다.
가비지 컬렉션은 VPC 비율이 낮은 블록부터 순차적으로 수행되므로, VPC 비율이 높아질수록 당연히 프리 블록 기대치(Expected FB)도 커질 수 있다. 기준 VPC 비율(CP)에서의 프리 블록 기대치(Expected FB)의 값(K)은 기준 VPC 비율(CP)보다 낮은 VPC 비율을 가지는 블록들에 의해서 생성되는 프리 블록의 수를 의미할 수 있다.
이 때, 상기 프리 블록 기대치는 기준 VPC 비율(CP)보다 낮은 VPC 비율을 가지는 블록의 무효 페이지의 합에 의해서 도출될 수 있다.
다시, 도 6을 참조하면, 가비지 컬렉션 트리거(180)는 도 10의 최종 필요 프리 블록수와 도 11의 프리 블록 기대치(K)를 비교하여 가비지 컬렉션 수행 여부를 결정할 수 있다.
구체적으로, 최종 필요 프리 블록수가 프리 블록 기대치보다 더 큰 경우에는 가비지 컬렉션을 수행하여 프리 블록을 확보하고, 반대로 최종 필요 프리 블록수가 프리 블록 기대치보다 더 작은 경우에는 굳이 가비지 컬렉션을 수행할 필요가 없다.
다만, 가비지 컬렉션 트리거(180)가 수신하는 최대 동작 속도(Jp), 가비지 컬렉션 속도(Gp)는 동적으로 결정되므로 값이 변할 수 있다. 또한, 호스트(10)로부터 수신하는 최소 동작 속도(Mp) 역시 시점에 따라 달라질 수 있으므로, 현재 시점에서 가비지 컬렉션이 수행되지 않더라도, 그 이후의 시점에서는 언제든지 판단에 따라서 가비지 컬렉션이 수행될 수 있다.
즉, 제1 시점에서 상술한 가비지 컬렉션 수행 판단에 의해서 가비지 컬렉션이 수행되지 않았더라도, 그 이후에 상기 제1 시점보다 늦은 제2 시점에서 동일한 방식으로 가비지 컬렉션 수행 판단이 이루어져 가비지 컬렉션이 수행될 수 있다. 또한, 제2 시점에서 이루어진 가비지 컬렉션 수행 판단에 의해서도 가비지 컬렉션이 수행되지 않는 경우에도, 제3 시점에서 동일한 방식으로 가비지 컬렉션 수행 판단이 이루어지고 가비지 컬렉션이 수행될 수 있다.
즉, 가비지 컬렉션 트리거(180)는 계속하여 동적으로 가비지 컬렉션 수행 여부를 판단할 수 있다.
만일 가비지 컬렉션 트리거(180)에 의해서 가비지 컬렉션이 수행하는 것으로 판단한 경우, 즉, 최종 필요 프리 블록수가 프리 블록 기대치보다 더 큰 경우에는 가비지 컬렉션 트리거(180)는 가비지 컬렉션 실행기(190)로 가비지 컬렉션 트리거 신호(GC trigger signal)를 전송할 수 있다.
가비지 컬렉션 실행기(190)는 가비지 컬렉션 트리거(180)로부터 가비지 컬렉션 트리거 신호(GC trigger signal)를 수신할 수 있다. 가비지 컬렉션 실행기(190)는 가비지 컬렉션 트리거 신호(GC trigger signal)를 수신하면, 비휘발성 메모리(200)로 가비지 컬렉션 신호(GC signal)를 전송할 수 잇다.
가비지 컬렉션 신호(GC signal)는 비휘발성 메모리(200)의 가비지 컬렉션을 수행하는 신호일 수 있다. 이에 따라서, 비휘발성 메모리(200)가 가비지 컬렉션이 수행될 수 있다.
도 12는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 로지컬 점유 비율 대비 랜덤 라이트 성능을 도시한 그래프이다.
도 12를 참조하면, 메모리 장치(20)의 랜덤 라이트 성능은 일반적인 가비지 컬렉션(Noramal-GC)을 수행하는 경우 제1 레벨(L1)까지 낮아질 수 있다. 일반적인 가비지 컬렉션은 프리 블록이 완전히 필요한 시기까지 기다렸다가 가비지 컬렉션을 수행하기 때문에 메모리 장치(20)의 성능이 아주 낮은 수준(L1)까지 낮아질 수 있다.
이러한 경우, 호스트가 요구하는 특정 작업을 수행하는 데에 너무 많은 시간이 걸린다거나, 아예 수행할 수 없는 상황이 발생할 수 있으므로, 최소 동작 속도의 확보가 필요할 수 있다.
본 발명의 몇몇 실시예에 따른 메모리 장치는 얼리 가비지 컬렉션(early-GC)을 수행하여 최소한의 성능을 보존할 수 있다. 구체적으로, 얼리 가비지 컬렉션을 수행하는 경우 메모리 장치(20)의 랜덤 라이트 성능은 제2 레벨(L2)까지 올라갈 수 있다. 물론, 로지컬 점유율이 상대적으로 낮은 부분에서도 랜덤 라이트 성능이 떨어지는 부작용이 있지만, 도 12의 ①의 성능 하락이 ②의 성능 하락으로 옮겨지면서 최소한의 동작 성능이 상대적으로 향상될 수 있다.
즉, 호스트가 요구하는 특정 작업을 위한 최소 동작 속도를 보장할 수 있다. 이에 따라서, 호스트는 원하는 수준의 최소 동작 속도를 메모리 장치(20)에 전달하고, 메모리 장치(20)는 이에 맞추어 가비지 컬렉션의 시점을 조절할 수 있다.
이하, 도 13을 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 장치를 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 13은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 13을 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 장치(20)는 호스트로부터 최소 동작 속도를 전송 받지 않고, 제어 정책(155)을 더 포함한다.
제어 정책(155)은 미리 메모리 장치 내에 내장되어 있을 수 있다. 제어 정책(155)은 미리 설정된 최소 동작 속도(Mp)를 가비지 컬렉션 트리거(180)에 제공할 수 있다.
제어 정책(155)은 메모리 장치(20)가 제조될 때 설정된 적절한 최소 동작 속도(Mp)를 저장할 수 있다. 제어 정책(155)에 의한 최소 동작 속도(Mp)는 미리 정해진 상태로 변하지 않을 수 있다.
본 발명의 몇몇 실시예에 따른 메모리 장치(20)의 제어 정책(155)의 최소 동작 속도(Mp)는 변경 가능할 수 있다. 즉, 현재의 메모리 장치(20)의 상태에 따라서 최소 동작 속도(Mp)가 결정될 수 있다. 최소 동작 속도(Mp)를 결정하는 변수로서는 여러가지가 가능할 수 있다.
예를 들어, 메모리 장치(20)의 온도, 최대 동작 속도(Jp), 가비지 컬렉션 속도(Gp) 및 비휘발성 메모리(200)의 프로그램 카운트 중 적어도 하나가 최소 동작 속도(Mp)를 결정하는 변수일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
본 실시예에 따른 메모리 장치(20)는 호스트로부터 수신되는 최소 동작 속도(Mp)에 종속되지 않고, 메모리 장치(20) 스스로 가비지 컬렉션의 수행 여부를 결정하므로 호스트의 부담을 덜어주고, 자체적으로 최적의 동작을 수행할 수 있다.
이하, 도 14를 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 장치를 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 14는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 14를 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 장치(20)는 성능 모니터로부터 최대 동작 속도(Jp)를 전송 받지 않고, 제어 정책(155)을 더 포함한다.
제어 정책(155)은 미리 메모리 장치 내에 내장되어 있을 수 있다. 제어 정책(155)은 미리 설정된 최소 동작 속도(Mp)를 가비지 컬렉션 트리거(180)에 제공할 수 있다.
제어 정책(155)은 메모리 장치(20)가 제조될 때 설정된 적절한 최대 동작 속도(Jp)를 저장할 수 있다. 제어 정책(155)에 의한 최대 동작 속도(Jp)는 미리 정해진 상태로 변하지 않을 수 있다.
본 발명의 몇몇 실시예에 따른 메모리 장치(20)의 제어 정책(155)의 최대 동작 속도(Jp)는 변경 가능할 수 있다. 즉, 현재의 메모리 장치(20)의 상태에 따라서 최대 동작 속도(Jp)가 결정될 수 있다. 최대 동작 속도(Jp)를 결정하는 변수로서는 여러가지가 가능할 수 있다.
대신, 성능 모니터와 같이 현재 동작 속도를 통해서 동적으로 최대 동작 속도(Jp)를 판단하는 것이 아니라 몇몇의 간단한 조건을 검토하여 주어진 몇 명의 최대 동작 속도(Jp) 중 어느 하나를 가비지 컬렉션 트리거(180)에 제공할 수 있다.
본 실시예에 따른 메모리 장치(20)는 현재 동작 속도를 따로 측정할 필요도 없고, 그를 통해서 동적으로 변하는 최대 동작 속도(Jp)를 계산할 필요도 없으므로, 전체적인 메모리 장치(20)의 연산량이 줄어들 수 있다. 이를 통해서 제한되 리소스의 배분을 효율적으로 할 수 있으므로, 메모리 장치(20)의 전체적인 성능이 향상될 수 있다.
이하, 도 15를 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 장치를 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 15는 본 발명의 몇몇 실시예들에 따른 메모리 장치의 메모리 컨트롤러를 설명하기 위한 블록도이다.
도 15를 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 장치(20)는 호스트로부터 최소 동작 속도(Mp)를 전송 받지 않고, 성능 모니터로부터 최대 동작 속도(Jp)를 전송 받지 않고, 제어 정책(155)을 더 포함한다.
제어 정책(155)은 미리 메모리 장치 내에 내장되어 있을 수 있다. 제어 정책(155)은 미리 설정된 최소 동작 속도(Mp) 및 최대 동작 속도(Jp)를 가비지 컬렉션 트리거(180)에 제공할 수 있다.
제어 정책(155)은 메모리 장치(20)가 제조될 때 설정된 적절한 최소 동작 속도(Mp) 및 최대 동작 속도(Jp)를 저장할 수 있다. 제어 정책(155)에 의한 최소 동작 속도(Mp) 및 최대 동작 속도(Jp)는 미리 정해진 상태로 변하지 않을 수 있다.
본 발명의 몇몇 실시예에 따른 메모리 장치(20)의 제어 정책(155)의 최소 동작 속도(Mp) 및 최대 동작 속도(Jp)는 변경 가능할 수 있다. 즉, 현재의 메모리 장치(20)의 상태에 따라서 최소 동작 속도(Mp) 및 최대 동작 속도(Jp)가 결정될 수 있다.
예를 들어, 메모리 장치(20)의 온도, 최대 동작 속도(Jp), 가비지 컬렉션 속도(Gp) 및 비휘발성 메모리(200)의 프로그램 카운트 중 적어도 하나가 최소 동작 속도(Mp)를 결정하는 변수일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
최대 동작 속도(Jp)를 결정하는 변수로서는 여러가지가 가능할 수 있다. 대신, 성능 모니터와 같이 현재 동작 속도를 통해서 동적으로 최대 동작 속도(Jp)를 판단하는 것이 아니라 몇몇의 간단한 조건을 검토하여 주어진 몇 명의 최대 동작 속도(Jp) 중 어느 하나를 가비지 컬렉션 트리거(180)에 제공할 수 있다.
본 실시예에 따른 메모리 장치(20)는 호스트로부터 수신되는 최소 동작 속도(Mp)에 종속되지 않고, 메모리 장치(20) 스스로 가비지 컬렉션의 수행 여부를 결정하므로 호스트의 부담을 덜어주고, 자체적으로 최적의 동작을 수행할 수 있다.
나아가, 본 실시예에 따른 메모리 장치(20)는 현재 동작 속도를 따로 측정할 필요도 없고, 그를 통해서 동적으로 변하는 최대 동작 속도(Jp)를 계산할 필요도 없으므로, 전체적인 메모리 장치(20)의 연산량이 줄어들 수 있다. 이를 통해서 제한되 리소스의 배분을 효율적으로 할 수 있으므로, 메모리 장치(20)의 전체적인 성능이 향상될 수 있다.
이하, 도 16을 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 장치를 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 16은 본 발명의 몇몇 실시예들에 따른 메모리 장치가 포함된 SSD(solid state drive)를 설명하기 위한 블록도이다.
도 16을 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 장치(20)가 SSD에 적용된 모습을 보여준다.
메모리 장치(20)는 복수의 비휘발성 메모리(200) 및 SSD 메모리 컨트롤러(1000)를 포함한다. 비휘발성 메모리(200)는 복수의 비휘발성 메모리 모듈(210)을 포함할 수 있다. 각각의 비휘발성 메모리 모듈(210)은 도 2의 비휘발성 메모리(200)로 구현될 수 있다.
SSD 메모리 컨트롤러(1000)는 복수의 채널들(CH1 ~ CHi, i는 2 이상의 정수)을 통하여 비휘발성 메모리(200)에 연결된다.
SSD 메모리 컨트롤러(1000)는 적어도 하나의 프로세서(1110), 버퍼 메모리(1140), 에러 정정 회로(1120), 호스트 인터페이스(1130) 및 비휘발성 메모리 인터페이스(1150)를 포함한다. SSD 메모리 컨트롤러(1000)는 도 2의 메모리 컨트롤러(100)로 구현될 수 있다. 즉, 도시되지 않았지만 SSD 메모리 컨트롤러(1000)는 도 6의 성능 모니터(160), 가비지 컬렉션 프레딕터(170), 가비지 컬렉션 트리거(180) 및 가비지 컬렉션 실행기(190)가 포함될 수 있다.
버퍼 메모리(1140)는 SSD 메모리 컨트롤러(1000)의 동작에 필요한 데이터를 임시로 저장할 수 있다. 버퍼 메모리(1140)는 데이터 혹은 명령을 저장하는 복수의 메모리 라인들을 포함할 수 있다. 여기서 복수의 메모리 라인들은 캐시 라인들에 다양한 방법으로 맵핑될 수 있다. 도 16에서 버퍼 메모리(1140)는 SSD 메모리 컨트롤러(1000)의 내부에 위치하지만, 본 발명이 이에 제한되는 것은 아니다. 본 발명의 몇몇 실시예에 따른 메모리 장치(20)의 버퍼 메모리(1140)는 SSD 메모리 컨트롤러(1000)의 외부에 위치할 수도 있다.
에러 정정 회로(1120)는 쓰기 동작에서 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 비휘발성 메모리(200)로부터 복구된 데이터의 에러를 정정할 수 있다.
에러 정정 회로(1120)는 비휘발성 메모리(200)로부터 수신된 데이터의 페일 비트(fail bit) 혹은 에러 비트(error bit)를 정정하기 위한 에러 정정 코드(ECC; error correction code)를 생성할 수 있다. 에러 정정 회로(1120)는 비휘발성 메모리 장치(1230)로 제공되는 데이터의 에러 정정 인코딩을 수행하여, 패리티(parity) 비트가 부가된 데이터를 형성할 수 있다. 패리티 비트는 비휘발성 메모리 장치(1230)에 저장될 수 있다.
또한, 에러 정정 회로(1120)는 비휘발성 메모리(200)로부터 출력된 데이터에 대하여 에러 정정 디코딩을 수행할 수 있다. 에러 정정 회로(1120)는 패리티(parity)를 사용하여 에러를 정정할 수 있다.
에러 정정 회로(1120)는 LDPC(low ensity parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러를 정정할 수 있다.
도시되지 않았지만, SSD 메모리 컨트롤러(1000)를 동작하는 데 필요한 코드 데이터를 저장하는 코드 메모리가 더 포함될 수 있다. 코드 메모리는 비휘발성 메모리 장치로 구현될 수 있다.
호스트 인터페이스(1130)는 외부의 장치와 인터페이스 기능을 제공할 수 있다. 호스트 인터페이스(1130)는 PATA 버스(parallel AT attachment bus), SATA 버스(serial AT attachment bus), SCSI, USB, PCIe, SD, SAS, UFS, 낸드 인터페이스 등을 통해 호스트와 연결될 수 있다.
비휘발성 메모리 인터페이스(1150)는 비휘발성 메모리(200)와 인터페이스 기능을 제공할 수 있다.
시스템 버스(1160)는 프로세서(1110), 에러 정정 회로(1120), 호스트 인터페이스(1130), 버퍼 메모리(1140) 및 비휘발성 메모리 인터페이스(1150)를 서로 연결할 수 있다.
이하, 도 6, 도 10, 도 11 및 도 17 및 도 18을 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 장치의 동적 가비지 컬렉션 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 17은 본 발명의 몇몇 실시예들에 따른 메모리 장치의 동적 가비지 컬렉션 방법을 설명하기 위한 순서도이고, 도 18은 도 17의 가비지 컬렉션 수행 여부 판단 단계를 세부적으로 설명하기 위한 순서도이다.
도 17을 참조하면, 최소 동작 속도, 최대 동작 속도 및 가비지 컬렉션 속도를 획득한다(S100).
구체적으로, 도 6을 참조하면, 가비지 컬렉션 트리거(180)는 호스트(10)로부터 최소 동작 속도(Mp)를 전송받을 수 있다. 가비지 컬렉션 트리거(180)는 성능 모니터(160)로부터 최대 동작 속도(Jp)를 전송받을 수 있다. 가비지 컬렉션 트리거(180)는 가비지 컬렉션 프레딕터(170)로부터 가비지 컬렉션 속도를 전송받을 수 있다.
본 발명의 몇몇 실시예에 따른 메모리 장치의 동적 가비지 컬렉션 방법은 당연히 도 6뿐만, 아니라, 도 13 내지 도 16의 몇몇 실시예에 따른 메모리 장치에도 적용될 수 있다.
다시, 도 17을 참조하면, 기준 VPC 비율을 계산한다(S200).
구체적으로, 도 6을 참조하면, 기준 VPC 비율은 수학식 6에 의한 최대의 VPC 비율 값 즉, Vr값일 수 있다. 이를 하기의 수학식 7로 나타내면 다음과 같다.
[수학식 7]
Cp=Gp(Jp-Mp)/(Jp*Mp+(Gp*(Jp-Mp)))
여기서, Cp은 기준 VPC 비율(CP)값이고, Gp는 가비지 컬렉션 속도(Gp)이고, Jp는 최대 동작 속도(Jp)이고, Mp는 최소 동작 속도(Mp)이다.
다시, 도 17을 참조하면, 기준 VPC 비율 및 현재 평균 VPC 비율을 이용하여 가비지 컬렉션 수행 여부를 판단한다(S300).
만일 가비지 컬렉션을 수행하기로 판단하였다면, 바로 가비지 컬렉션 수행 단계(S400)로 넘어가지만, 그렇지 않다면 다시 동적으로 S100 단계부터 수행할 수 있다.
상기 S300 단계를 세부적으로 설명하기 위해서 도 18을 참조하면, S100, S200 및 S400 단계는 도 17과 동일하고, 도 17의 S300 단계는 세부적으로 도 18의 S310, S320 및 S330 단계를 포함할 수 있다.
S200의 단계 후에, 기준 VPC 비율 이하의 블록들에 대한 프리 블록 기대치를 계산한다(S310).
구체적으로, 도 11을 참조하면, 기준 VPC 비율(CP)보다 낮은 라이트 영역(Rl)의 블록들에 대한 가비지 컬렉션을 수행하였을 경우 프리 블록 기대치(Expected FB)의 그래프를 도시할 수 있다.
가비지 컬렉션은 VPC 비율이 낮은 블록부터 순차적으로 수행되므로, VPC 비율이 높아질수록 당연히 프리 블록 기대치(Expected FB)도 커질 수 있다. 기준 VPC 비율(CP)에서의 프리 블록 기대치(Expected FB)의 값(K)은 기준 VPC 비율(CP)보다 낮은 VPC 비율을 가지는 블록들에 의해서 생성되는 프리 블록의 수를 의미할 수 있다.
이 때, 상기 프리 블록 기대치는 기준 VPC 비율(CP)보다 낮은 VPC 비율을 가지는 블록의 무효 페이지의 합에 의해서 도출될 수 있다.
다시, 도 18을 참조하면, S200 단계 후에, 현재의 평균 VPC 비율을 이용하여 최종 필요 프리 블록수를 계산한다(S320).
구체적으로, 도 10을 참조하면, 그래프 ① 및 ②에서 로지컬 공간의 점유율이 100%인 경우에는 각 그래프의 최종 피지컬 공간 점유율이 계산될 수 있다. 물론, 이는 현재 평균 VPC 비율에 의해서 유추된 값이지만, 이를 통해서 현재 가비지 컬렉션 수행 여부를 판단할 수 있다. 상기 최종 피지컬 공간 점유율을 통해서 예상 소모 블록수를 도출할 수 있다.
구체적으로, 그래프 ①의 경우 예상 소모 블록수를 계산하고, 거기에 전체 로지컬 블록수(100%의 피지컬 공간의 점유율에 대응하는 피지컬 블록수와 동일함) 및 스레숄드 블록수를 제외하여 최종 필요 프리 블록수를 계산할 수 있다. 즉, E2에 해당되는 블록수가 최종 필요 프리 블록수일 수 있다.
마찬가지로, 그래프 ②의 경우 예상 소모 블록수를 계산하고, 거기에 전체 로지컬 블록수 및 스레숄드 블록수를 제외하여 최종 필요 프리 블록수를 계산할 수 있다. 즉, E1에 해당되는 블록수가 최종 필요 프리 블록수일 수 있다.
다시, 도 18을 참조하면, 최종 필요 프리 블록수가 프리 블록 기대치보다 큰지 판단한다(S330).
만일 최종 필요 프리 블록수가 프리 블록 기대치보다 크다면 가비지 컬렉션을 수행하고(S400), 그렇지 않다면 다시 S100 단계로 돌아갈 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트
20: 메모리 장치
100: 메모리 컨트롤러
200: 비휘발성 메모리
20: 메모리 장치
100: 메모리 컨트롤러
200: 비휘발성 메모리
Claims (20)
- 메모리 장치의 최소 동작 속도를 수신하고,
상기 메모리 장치의 최대 동작 속도, 상기 최소 동작 속도 및 가비지 컬렉션 속도를 이용하여 기준 VPC 비율(Valid page count ratio)을 계산하되,
상기 기준 VPC 비율은 하기 수학식 1에 의해서 계산되고,
상기 기준 VPC 비율, 현재 평균 VPC 비율을 이용하여 가비지 컬렉션을 수행할지를 판단하는 것을 포함하고,
상기 기준 VPC 비율과 상기 현재 평균 VPC 비율에 기초하여 상기 가비지 컬렉션을 수행하기로 결정되면, 상기 가비지 컬렉션을 수행하는 메모리 장치의 동적 가비지 컬렉션 방법.
<수학식 1>
Vr=Gp(Jp-Mp)/(Jp*Mp+(Gp*(Jp-Mp)))
여기서, Vr은 상기 기준 VPC 비율이고, Gp는 상기 가비지 컬렉션 속도이고, Jp는 상기 최대 동작 속도이고, Mp는 상기 최소 동작 속도이다. - 제1 항에 있어서,
상기 최소 동작 속도는 호스트로부터 수신되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제1 항에 있어서,
상기 최대 동작속도는 현재 동작 속도를 기준으로 계산되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제1 항에 있어서,
상기 가비지 컬렉션을 수행할지를 판단하는 것은,
상기 기준 VPC 비율 이하의 VPC 비율을 갖는 블록들에 대한 프리 블록 기대치를 계산하고,
현재의 평균 VPC 비율을 이용하여 최종 필요 프리 블록수를 계산하고,
상기 프리 블록 기대치와 상기 최종 필요 프리 블록 수를 비교하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제4 항에 있어서,
상기 최종 필요 프리 블록수를 계산하는 것은,
상기 평균 VPC 비율을 전체 VPC 비율로 가정하여 예상 소모 블록수를 계산하고,
상기 예상 소모 블록수에 전체 로지컬 블록수 및 스레숄드 블록수를 제외하여, 상기 최종 필요 프리 블록수를 계산하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제4 항에 있어서,
상기 프리 블록 기대치를 계산하는 것은,
상기 기준 VPC 비율보다 낮은 VPC 비율을 가지는 블록들의 인밸리드 페이지의 합을 계산하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 메모리 장치의 최대 동작 속도, 최소 동작 속도 및 가비지 컬렉션 속도를 이용하여 기준 VPC 비율을 계산하고,
상기 기준 VPC 비율 이하의 VPC 비율을 갖는 블록들에 대한 프리 블록 기대치를 계산하고,
현재의 평균 VPC 비율을 이용하여 최종 필요 프리 블록수를 계산하고,
현재 가비지 컬렉션을 수행할지를 결정하기 위해 상기 프리 블록 기대치와 상기 최종 필요 프리 블록수를 비교하고,
비교결과에 기초하여 상기 가비지 컬렉션을 수행하기로 결정되면, 상기 가비지 컬렉션을 수행하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제7 항에 있어서,
상기 기준 VPC 비율을 계산하는 것은,
프리 페이지 생성 속도와 상기 최소 동작 속도가 동일할 때의 VPC 비율을 상기 기준 VPC 비율로 정의하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제8 항에 있어서,
상기 기준 VPC 비율은 0보다 크거나 같고 1 보다 작거나 같은 값인 메모리 장치의 동적 가비지 컬렉션 방법. - 제7 항에 있어서,
상기 최소 동작 속도는 호스트로부터 수신되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제7 항에 있어서,
상기 최소 동작 속도는 상기 메모리 장치에 저장된 미리 설정된 정책에 의해서 결정되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제7 항에 있어서,
상기 최대 동작 속도는 상기 메모리 장치의 현재 동작 속도에 의해서 산출되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제7 항에 있어서,
상기 최대 동작 속도는 상기 메모리 장치에 저장된 미리 설정된 정책에 의해서 결정되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제7 항에 있어서,
상기 프리 블록 기대치가 상기 최종 필요 프리 블록수보다 큰 경우 상기 가비지 컬렉션을 수행하지 않고, 상기 프리 블록 기대치가 상기 최종 필요 프리 블록수보다 작은 경우 상기 가비지 컬렉션을 수행하는 것을 더 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제1 시점에 호스트로부터 메모리 장치의 제1 최소 동작 속도를 수신하고,
상기 메모리 장치의 제1 최대 동작 속도, 상기 제1 최소 동작 속도 및 제1 가비지 컬렉션 속도를 이용하여 제1 기준 VPC 비율을 계산하고,
상기 제1 기준 VPC 비율, 현재의 제1 평균 VPC 비율을 이용하여 제1 가비지 컬렉션을 수행할지를 판단하고,
상기 제1 시점에 상기 제1 가비지 컬렉션을 수행하지 않은 경우, 상기 제1 시점과 다른 제2 시점에 상기 호스트로부터 제2 최소 동작 속도를 수신하고, 상기 메모리 장치의 제2 최대 동작 속도, 상기 제2 최소 동작 속도 및 제2 가비지 컬렉션 속도를 이용하여 제2 기준 VPC 비율을 계산하고, 상기 제2 기준 VPC 비율, 현재의 제2 평균 VPC 비율을 이용하여 제2 가비지 컬렉션을 수행할지를 판단하는 것을 포함하고,
상기 제2 기준 VPC 비율, 상기 현재의 제2 평균 VPC 비율의 비교에 기초하여 상기 제2 가비지 컬렉션을 수행하기로 결정되면, 상기 제2 가비지 컬렉션을 수행하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제15 항에 있어서,
상기 제1 및 제2 가비지 컬렉션 속도는 서로 동일한 메모리 장치의 동적 가비지 컬렉션 방법. - 제15 항에 있어서,
상기 제2 시점에 상기 제2 가비지 컬렉션을 수행하지 않을 것으로 판단한 경우,
상기 제1 및 제2 시점과 다른 제3 시점에 상기 호스트로부터 상기 메모리 장치의 제3 최소 동작 속도를 수신하고, 상기 메모리 장치의 제3 최대 동작 속도, 상기 제3 최소 동작 속도 및 제3 가비지 컬렉션 속도를 이용하여 제3 기준 VPC 비율을 계산하고, 상기 제3 기준 VPC 비율, 현재의 제3 평균 VPC 비율을 이용하여 제3 가비지 컬렉션을 수행할지를 판단하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제15 항에 있어서,
상기 제1 최대 동작속도는 상기 제1 시점의 제1 동작 속도를 기준으로 계산되고,
상기 제2 최대 동작속도는 상기 제2 시점의 제2 동작 속도를 기준으로 계산되는 메모리 장치의 동적 가비지 컬렉션 방법. - 제15 항에 있어서,
상기 제1 기준 VPC 비율을 이용하여 상기 제1 가비지 컬렉션을 수행할지를 판단하는 것은,
상기 제1 기준 VPC 비율 이하의 VPC 비율을 갖는 블록들에 대한 제1 프리 블록 기대치를 계산하고,
상기 제1 시점의 상기 현재의 제1 평균 VPC 비율을 이용하여 제1 최종 필요 프리 블록수를 계산하고,
상기 제1 프리 블록 기대치와 상기 제1 최종 필요 프리 블록 수를 비교하는 것을 포함하는 메모리 장치의 동적 가비지 컬렉션 방법. - 제19 항에 있어서,
상기 제1 프리 블록 기대치가 상기 제1 최종 필요 프리 블록수보다 큰 경우 상기 제1 가비지 컬렉션을 수행하지 않고, 상기 제1 프리 블록 기대치가 상기 제1 최종 필요 프리 블록수보다 작은 경우 상기 제1 가비지 컬렉션을 수행하는 것을 더 포함하는 메모리 장치의 동적 가비지 컬렉션 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170139344A KR102447602B1 (ko) | 2017-10-25 | 2017-10-25 | 메모리 장치 및 그 동적 가비지 컬렉션 방법 |
US16/134,849 US10613975B2 (en) | 2017-10-25 | 2018-09-18 | Method of dynamic garbage collection for a memory device based on valid page count (VPC), garbage collection speed, and maximum and minimum operating speeds |
CN201811173830.9A CN109712659B (zh) | 2017-10-25 | 2018-10-09 | 存储设备及其动态无用单元收集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170139344A KR102447602B1 (ko) | 2017-10-25 | 2017-10-25 | 메모리 장치 및 그 동적 가비지 컬렉션 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190046134A KR20190046134A (ko) | 2019-05-07 |
KR102447602B1 true KR102447602B1 (ko) | 2022-09-26 |
Family
ID=66171212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170139344A KR102447602B1 (ko) | 2017-10-25 | 2017-10-25 | 메모리 장치 및 그 동적 가비지 컬렉션 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10613975B2 (ko) |
KR (1) | KR102447602B1 (ko) |
CN (1) | CN109712659B (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190108788A (ko) * | 2018-03-15 | 2019-09-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20210054399A (ko) * | 2019-11-05 | 2021-05-13 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
KR20210099870A (ko) * | 2020-02-05 | 2021-08-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
TWI738442B (zh) * | 2020-07-29 | 2021-09-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
US11467942B2 (en) | 2020-12-16 | 2022-10-11 | Western Digital Technologies, Inc. | Predictive performance indicator for storage devices |
US11507502B2 (en) * | 2021-02-23 | 2022-11-22 | Western Digital Technologies, Inc. | Data storage device performance prediction based on valid fragment count |
US11907123B2 (en) | 2021-04-20 | 2024-02-20 | International Business Machines Corporation | Flash memory garbage collection |
KR20230094262A (ko) | 2021-12-21 | 2023-06-28 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 메모리 저장 장치 및 전자 장치 |
CN116644001B (zh) * | 2023-07-20 | 2023-10-17 | 合肥康芯威存储技术有限公司 | 一种存储器件及其垃圾回收的控制方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101571823B1 (ko) | 2014-06-30 | 2015-11-25 | 주식회사 이에프텍 | 비휘발성 메모리 장치의 파워 로스 테스트 방법 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7957189B2 (en) | 2004-07-26 | 2011-06-07 | Sandisk Il Ltd. | Drift compensation in a flash memory |
US7743203B2 (en) | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
US7796424B2 (en) | 2007-06-21 | 2010-09-14 | Qimonda North America Corp. | Memory device having drift compensated read operation and associated method |
US7773413B2 (en) | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US8880775B2 (en) | 2008-06-20 | 2014-11-04 | Seagate Technology Llc | System and method of garbage collection in a memory device |
US7755946B2 (en) | 2008-09-19 | 2010-07-13 | Sandisk Corporation | Data state-based temperature compensation during sensing in non-volatile memory |
KR101504340B1 (ko) | 2008-11-04 | 2015-03-20 | 삼성전자주식회사 | 온도 보상 기능을 가지는 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템 |
KR101324688B1 (ko) * | 2009-06-12 | 2013-11-04 | 바이올린 메모리 인코포레이티드 | 영구 가비지 컬렉션을 갖는 메모리 시스템 |
US8402218B2 (en) | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
JP2011192260A (ja) | 2010-02-16 | 2011-09-29 | Toshiba Corp | 半導体記憶装置 |
US8363478B1 (en) | 2010-02-17 | 2013-01-29 | Marvell International Ltd. | Group based read reference voltage management in flash memory |
US8213255B2 (en) | 2010-02-19 | 2012-07-03 | Sandisk Technologies Inc. | Non-volatile storage with temperature compensation based on neighbor state information |
US8706983B2 (en) * | 2010-06-30 | 2014-04-22 | Sandisk Technologies Inc. | Garbage collection of memory blocks using volatile memory |
US8248856B2 (en) | 2010-10-20 | 2012-08-21 | Seagate Technology Llc | Predictive read channel configuration |
KR101184814B1 (ko) | 2010-10-26 | 2012-09-20 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치 및 이의 프로그램 방법 |
US8472274B2 (en) | 2011-03-02 | 2013-06-25 | Apple Inc. | Using temperature sensors with a memory device |
US8542537B2 (en) | 2011-04-29 | 2013-09-24 | Spansion Llc | Method and apparatus for temperature compensation for programming and erase distributions in a flash memory |
US9158670B1 (en) | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
KR20130031046A (ko) * | 2011-09-20 | 2013-03-28 | 삼성전자주식회사 | 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법 |
US8576651B2 (en) | 2012-01-20 | 2013-11-05 | Sandisk 3D Llc | Temperature compensation of conductive bridge memory arrays |
KR101297442B1 (ko) * | 2013-02-22 | 2013-08-16 | 서울과학기술대학교 산학협력단 | 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템 |
KR101284465B1 (ko) * | 2013-03-26 | 2013-07-09 | 서울과학기술대학교 산학협력단 | 낸드 기반 블록 장치에서 안전 파일 삭제를 지원하는 페이지 사상 방법 및 이를 기록하는 기록매체 |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
KR20150092644A (ko) * | 2014-02-05 | 2015-08-13 | 삼성전자주식회사 | 가비지 컬렉션을 수행하기 위한 전자 장치 및 방법 |
TWI516922B (zh) * | 2014-03-12 | 2016-01-11 | 慧榮科技股份有限公司 | 資料儲存裝置及快閃記憶體零散資料收集方法 |
KR20150139112A (ko) * | 2014-06-02 | 2015-12-11 | 삼성전자주식회사 | 가비지 컬렉션 유닛을 포함하는 메모리 시스템 및 동작 방법 |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9652382B1 (en) * | 2014-09-04 | 2017-05-16 | Sk Hynix Memory Solutions Inc. | Look-ahead garbage collection for NAND flash based storage |
KR101539895B1 (ko) | 2014-09-30 | 2015-07-27 | 홍익대학교 산학협력단 | 오버 프로비저닝 스페이스 사이즈를 결정하는 컴퓨팅 방법 및 장치 |
US9665609B2 (en) | 2014-11-25 | 2017-05-30 | Sap Se | Garbage collection of multi-version concurrency control (MVCC) data blocks |
JP2016122227A (ja) | 2014-12-24 | 2016-07-07 | 株式会社東芝 | メモリシステムおよび情報処理システム |
KR102391678B1 (ko) * | 2015-01-22 | 2022-04-29 | 삼성전자주식회사 | 저장 장치 및 그것의 서스테인드 상태 가속 방법 |
KR102467032B1 (ko) * | 2015-10-08 | 2022-11-14 | 삼성전자주식회사 | 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 |
US9891833B2 (en) * | 2015-10-22 | 2018-02-13 | HoneycombData Inc. | Eliminating garbage collection in nand flash devices |
KR102602694B1 (ko) * | 2015-12-15 | 2023-11-15 | 삼성전자주식회사 | 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법 |
US10540274B2 (en) * | 2016-03-29 | 2020-01-21 | Micron Technology, Inc. | Memory devices including dynamic superblocks, and related methods and electronic systems |
US10248327B2 (en) * | 2016-04-01 | 2019-04-02 | SK Hynix Inc. | Throttling for a memory system using a GC/HOST ratio and operating method thereof |
KR20180076765A (ko) * | 2016-12-28 | 2018-07-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102544162B1 (ko) * | 2017-07-11 | 2023-06-16 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR102430791B1 (ko) * | 2017-07-19 | 2022-08-10 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
TWI633428B (zh) * | 2017-09-28 | 2018-08-21 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
KR20190040607A (ko) * | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20190044798A (ko) * | 2017-10-23 | 2019-05-02 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
-
2017
- 2017-10-25 KR KR1020170139344A patent/KR102447602B1/ko active IP Right Grant
-
2018
- 2018-09-18 US US16/134,849 patent/US10613975B2/en active Active
- 2018-10-09 CN CN201811173830.9A patent/CN109712659B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101571823B1 (ko) | 2014-06-30 | 2015-11-25 | 주식회사 이에프텍 | 비휘발성 메모리 장치의 파워 로스 테스트 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20190121728A1 (en) | 2019-04-25 |
KR20190046134A (ko) | 2019-05-07 |
US10613975B2 (en) | 2020-04-07 |
CN109712659A (zh) | 2019-05-03 |
CN109712659B (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102447602B1 (ko) | 메모리 장치 및 그 동적 가비지 컬렉션 방법 | |
US9977712B2 (en) | Memory device with different parity regions | |
KR102233074B1 (ko) | 저장 장치 및 그것의 신뢰성 검증 방법 | |
KR102072829B1 (ko) | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 | |
KR102671727B1 (ko) | 메모리 시스템 및 그것의 동작방법 | |
CN112650442B (zh) | 存储器系统、存储器控制器及操作方法 | |
KR102714121B1 (ko) | 메모리 시스템 및 그것의 동작방법 | |
US11887681B2 (en) | Performing selective copyback in memory devices | |
US11342013B2 (en) | Memory system and operating method to set target command delay time to merge and process read commands | |
US11656990B2 (en) | Memory system and operating method thereof | |
US12072762B2 (en) | Error-handling management during copyback operations in memory devices | |
CN114863962A (zh) | 存储器系统及其操作方法 | |
CN114579041A (zh) | 存储器系统及其操作方法 | |
CN113257324A (zh) | 存储器系统、存储器控制器以及操作存储器系统的方法 | |
CN114664342A (zh) | Ufs装置及其操作方法 | |
US20230049877A1 (en) | Diagonal page mapping in memory systems | |
KR20210017181A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
US11474726B2 (en) | Memory system, memory controller, and operation method thereof | |
KR20200066906A (ko) | 메모리 시스템, 그것의 동작방법 및 컨트롤러 | |
KR102248207B1 (ko) | 저장 장치 및 그것의 동작 방법 | |
KR20220035577A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR102692526B1 (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
US11275524B2 (en) | Memory system, memory controller, and operation method of memory system | |
US11934266B2 (en) | Memory compaction management in memory devices | |
CN114296631B (zh) | 存储器系统及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |