KR20230166803A - 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법 - Google Patents
높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법 Download PDFInfo
- Publication number
- KR20230166803A KR20230166803A KR1020220086464A KR20220086464A KR20230166803A KR 20230166803 A KR20230166803 A KR 20230166803A KR 1020220086464 A KR1020220086464 A KR 1020220086464A KR 20220086464 A KR20220086464 A KR 20220086464A KR 20230166803 A KR20230166803 A KR 20230166803A
- Authority
- KR
- South Korea
- Prior art keywords
- rpmb
- block
- replay protection
- data
- blocks
- Prior art date
Links
- 238000010926 purge Methods 0.000 title claims abstract description 116
- 230000015654 memory Effects 0.000 title claims description 77
- 238000007726 management method Methods 0.000 title claims description 8
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 23
- 230000006870 function Effects 0.000 description 29
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 10
- 230000015556 catabolic process Effects 0.000 description 6
- 238000006731 degradation reaction Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000003936 working memory Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 101000648827 Homo sapiens TPR and ankyrin repeat-containing protein 1 Proteins 0.000 description 1
- 102100028173 TPR and ankyrin repeat-containing protein 1 Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명에 따른 리플레이 보호 블록 퍼지(RPMB Purge) 명령에 응답하여 퍼지 동작을 수행하는 스토리지 장치는, 적어도 하나의 불휘발성 메모리 장치, 그리고 상기 적어도 하나의 불휘발성 메모리 장치의 데이터 입출력을 제어하며, 리플레이 보호 블록(RPMB) 데이터가 저장되는 상기 적어도 하나의 불휘발성 메모리 장치의 리플레이 보호 블록(RPMB)을 추적하고, 상기 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면 가비지 컬렉션을 트리거하는 스토리지 컨트롤러를 포함한다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 퍼지 성능을 높일 수 있는 스토리지 장치 및 그것의 메모리 블록 관리 방법에 관한 것이다.
근래에, 스마트폰, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 PC, 웨어러블 기기와 같은 다양한 모바일 장치나 전자 장치들이 널리 사용되고 있다. 이러한 전자 장치들은 대개 데이터를 저장하기 위한 스토리지 장치를 포함한다. 특히, 이러한 전자 장치들의 대용량화 및 고속화 추세에 따라, 스토리지 장치의 용량을 증가시키고 스토리지 장치의 속도를 향상시키기 위한 많은 노력이 있어 왔다. 이러한 노력의 일환으로, 전자 장치의 호스트 장치와 스토리지 장치 간의 인터페이싱을 수행하기 위한 다양한 규약이 채택되어 왔다.
전자 장치에 포함되는 스토리지 장치는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치를 포함할 수 있다. 특히, 몇몇 불휘발성 메모리 장치들은 덮어쓰기가 불가능하며, 보안상 이유로 기존의 데이터를 물리적으로 소거하는 퍼지(Purge) 동작을 수행한다.
퍼지 동작은 대상이 되는 무효(Invalid) 데이터가 특정되어 있지 않다. 따라서, 일반적인 퍼지 동작은 스토리지 장치에 저장된 모든 무효(Invalid) 데이터에 대한 물리적인 소거를 야기하므로, 스토리지 장치의 성능을 저하시키는 문제점이 있다. 특히, 최근 리플레이 보호 블록(Replay Protected Memory Block: 이하, RPMB)에 대한 퍼지 명령을 제공하는 규약들이 등장하고 있다. 이 경우에도 대상이 되는 특정 RPMB 데이터가 지정되지 않아 모든 무효화된 RPMB 데이터(Invalid RPMB data)에 대한 물리적 소거가 불가피하게 발생한다. 이러한 퍼지 동작의 특성에 의해 RPMB 데이터가 다수의 메모리 블록에 분포되어 있는 경우, 스토리지 장치의 응답이 지연되고 성능의 저하가 발생한다.
본 발명의 목적은 리플레이 보호 블록(RPMB) 데이터에 대한 퍼지 성능을 높일 수 있는 스토리지 장치 및 그것의 메모리 블록 관리 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 리플레이 보호 블록 퍼지(RPMB Purge) 명령에 응답하여 퍼지 동작을 수행하는 스토리지 장치는, 적어도 하나의 불휘발성 메모리 장치, 그리고 상기 적어도 하나의 불휘발성 메모리 장치의 데이터 입출력을 제어하며, 리플레이 보호 블록(RPMB) 데이터가 저장되는 상기 적어도 하나의 불휘발성 메모리 장치의 리플레이 보호 블록(RPMB)을 추적하고, 상기 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면 가비지 컬렉션을 트리거하는 스토리지 컨트롤러를 포함하되, 상기 스토리지 컨트롤러는 쓰기 데이터를 프로그램할 로그 블록을 할당할 때, 프리 블록들 중에서 상기 리플레이 보호 블록(RPMB)에 대응하는 메모리 블록에 우선순위를 부여한다.
상기 목적을 달성하기 위한 본 발명에 따른 불휘발성 메모리 장치, 그리고 상기 불휘발성 메모리 장치의 메모리 블록들 중 리플레이 보호 블록(RPMB) 데이터가 저장되는 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면 가비지 컬렉션을 수행하는 스토리지 컨트롤러를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 리플레이 보호 블록 퍼지(RPMB Purge) 명령에 응답하여 퍼지 동작을 수행하는 스토리지 장치의 메모리 블록 관리 방법은, 리플레이 보호 블록(RPMB) 데이터가 저장되는 리플레이 보호 블록(RPMB)의 수가 임계치에 도달했는지 체크하는 단계, 상기 리플레이 보호 블록(RPMB)의 수가 상기 임계치에 도달한 경우, 프리 블록들 중에 무효 RPMB 데이터를 포함하는 어느 하나를 선택하는 단계, 그리고 상기 선택된 어느 하나의 프리 블록에 상기 리플레이 보호 블록(RPMB)들로부터 수집된 유효 데이터를 복사하는 단계를 포함한다.
상술한 본 발명의 실시 예에 따른 스토리지 장치는, 리플레이 보호 블록(리플레이 보호 블록(RPMB) 데이터에 대한 퍼지 레이턴시를 줄일 수 있다. 따라서, RPMB 데이터에 대한 퍼지 기능을 지원하는 스토리지 장치의 성능을 획기적으로 높일 수 있다.
도 1은 본 발명의 실시 예에 따라 리플레이 보호 블록 퍼지(RPMB Purge) 동작을 수행하도록 구성되는 시스템(1000)을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치의 구성을 세부적으로 보여주는 블록도이다.
도 3은 도 2의 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 블록 매니저의 동작을 보여주는 도면이다.
도 5는 본 발명의 블록 매니저의 동작을 예시적으로 보여주는 순서도이다.
도 6은 도 5의 S140 단계를 좀더 구체적으로 보여주는 순서도이다.
도 7은 본 발명의 RPMB 퍼지 매니저의 주요 기능을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 RPMB 퍼지 매니저의 리플레이 보호 블록의 수(nRPMB)를 제한하는 동작을 간략히 보여주는 순서도이다.
도 9a 및 도 9b는 리플레이 보호 블록(RPMB)의 수를 제한하지 않는 일반적인 경우의 리플레이 보호 블록(RPMB)의 수가 증가하는 예들이다.
도 10은 본 발명의 실시 예에 따른 리플레이 보호 블록의 수(nRPMB)의 제한을 통해서 RPMB 퍼지 대상의 수가 제어될 수 있음을 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 스토리지 컨트롤러의 RPMB 데이터의 쓰기 동작을 간략히 보여주는 순서도이다.
도 12는 본 발명의 효과를 예시적으로 보여주는 그래프이다.
도 13 및 도 14는 백패턴 프로그램 절차를 포함하는 경우의 일반적 퍼지 및 본 발명의 퍼지 동작을 각각 보여주는 도면들이다.
도 15는 도 1의 시스템의 계층적 구조를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치의 구성을 세부적으로 보여주는 블록도이다.
도 3은 도 2의 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 블록 매니저의 동작을 보여주는 도면이다.
도 5는 본 발명의 블록 매니저의 동작을 예시적으로 보여주는 순서도이다.
도 6은 도 5의 S140 단계를 좀더 구체적으로 보여주는 순서도이다.
도 7은 본 발명의 RPMB 퍼지 매니저의 주요 기능을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 RPMB 퍼지 매니저의 리플레이 보호 블록의 수(nRPMB)를 제한하는 동작을 간략히 보여주는 순서도이다.
도 9a 및 도 9b는 리플레이 보호 블록(RPMB)의 수를 제한하지 않는 일반적인 경우의 리플레이 보호 블록(RPMB)의 수가 증가하는 예들이다.
도 10은 본 발명의 실시 예에 따른 리플레이 보호 블록의 수(nRPMB)의 제한을 통해서 RPMB 퍼지 대상의 수가 제어될 수 있음을 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 스토리지 컨트롤러의 RPMB 데이터의 쓰기 동작을 간략히 보여주는 순서도이다.
도 12는 본 발명의 효과를 예시적으로 보여주는 그래프이다.
도 13 및 도 14는 백패턴 프로그램 절차를 포함하는 경우의 일반적 퍼지 및 본 발명의 퍼지 동작을 각각 보여주는 도면들이다.
도 15는 도 1의 시스템의 계층적 구조를 예시적으로 보여주는 도면이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
도 1은 본 발명의 실시 예에 따라 리플레이 보호 블록 퍼지(RPMB Purge) 동작을 수행하도록 구성되는 시스템(1000)을 보여주는 블록도이다. 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다. 이하 본 명세서에서, 일반 퍼지(Normal Purge) 동작은 스토리지 장치(1200)에 저장된 무효(Invalid) 데이터 전부를 물리적으로 소거하는 것을 지칭하며, 리플레이 보호 블록 퍼지(RPMB Purge) 동작은 스토리지 장치(1200)에 저장된 무효 데이터 중 RPMB 데이터를 물리적으로 소거하는 것을 지칭한다.
호스트(1100)는 시스템(1000)의 제반 동작들을 관리하고 처리할 수 있다. 호스트(1100)는 다양한 산술 연산/논리 연산을 수행할 수 있다. 예를 들어, 호스트(1100)는 하나 이상의 프로세서 코어들을 포함할 수 있다. 호스트(1100)는 FPGA(Field Programmable Gate Arrays)나 ASIC(Application Specific Integrated Circuit)과 같은 전용 회로를 사용하여 구현되거나, 또는 SoC(System on Chip)로 구현될 수 있다. 예를 들어, 호스트(1100)는 범용 프로세서, 전용 프로세서, 또는 애플리케이션 프로세서(Application Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
호스트(1100)는 스토리지 장치(1200)로의 쓰기 요청에 따른 명령어 및 쓰기 데이터를 생성할 수 있다. 나아가, 호스트(1100)는 소거 요청에 따른 언맵(Unmap) 커맨드 및 퍼지 요청 등을 생성할 수 있다. 예를 들어, 쓰기 명령어, 쓰기 데이터, 언맵 명령어, 퍼지 요청 등은 JEDEC에 의해 제안된 인터페이스 규약에 따라 UPIU(UFS Protocol Information Unit)를 포함하는 패킷들(예컨대, CMDw UPIU, DATA UPIU)로 변환/가공될 수 있다. 특히, 호스트(1100)는 보안 기능을 보장하기 위해 인증키와 같은 데이터를 기입할 때, RPMB 로직 유닛 쓰기 요청(RPMB LU Write)을 생성할 수 있다. 더불어, 덮어쓰기를 통해서 무효화된 RPMB 데이터에 대한 퍼지 명령(이하, RPMB 퍼지)을 스토리지 장치(1200)에 제공할 수 있다.
스토리지 장치(1200)는 스토리지 컨트롤러(1210)와 불휘발성 메모리 장치(1220)를 포함할 수 있다. 스토리지 컨트롤러(1210)는 불휘발성 메모리 장치(1220)에 저장된(또는 저장될) 데이터의 논리 주소와 물리 주소 사이의 대응 관계를 정의하는 맵핑 테이블을 관리할 수 있다. 나아가, 스토리지 컨트롤러(1210)는 호스트(1100)로부터의 RPMB 퍼지 요청에 응답하여 무효화된 RPMB 데이터에 대한 퍼지 동작을 수행할 수 있다. 즉, 스토리지 컨트롤러(1210)는 호스트(1100)로부터의 RPMB 퍼지 요청에 따라 무효화된 RPMB 데이터 영역을 물리적으로 소거할 수 있다.
특히, 스토리지 컨트롤러(1210)는 RPMB 데이터가 저장된 메모리 블록(이하, 리플레이 보호 블록(RPMB))을 추적하는 기능을 갖는다. 좀더 구체적으로, 스토리지 컨트롤러(1210)는 유효한 RPMB 데이터(Valid RPMB data)가 저장된 메모리 블록이나, 논리적으로 소거되어 무효화된 RPMB 데이터(Invalid RPMB data)가 포함된 메모리 블록을 추적하는 기능을 갖는다. 이하에서 유효한 RPMB 데이터(Valid RPMB data)가 저장된 메모리 블록과 무효화된 RPMB 데이터(Invalid RPMB data)가 포함되는 메모리 블록을 통칭하여 리플레이 보호 블록(RPMB)이라 칭하기로 한다.
스토리지 컨트롤러(1210)는 리플레이 보호 블록(RPMB)의 수를 특정 개수 이하로 제한할 수 있다. 즉, 추적되는 리플레이 보호 블록(RPMB)의 수가 미리 결정된 임계치에 도달하면, 스토리지 컨트롤러(1210)는 리플레이 보호 블록(RPMB)들에 대한 가비지 컬렉션(Garbage Collection)을 수행한다. 더불어, 스토리지 컨트롤러(1210)는 새로운 로그 블록(Log Block)을 할당해야 할 경우, 프리 블록(Free Block)들 중에서 리플레이 보호 블록(RPMB)에 대응하는 메모리 블록에 우선순위를 부여할 수 있다. 스토리지 컨트롤러(1210)는 리플레이 보호 블록(RPMB)에 대한 가비지 컬렉션 및 로그 블록 할당 우선순위를 관리하여 리플레이 보호 블록(RPMB)의 수를 제한할 수 있다.
상술된 구성에 의하면, 본 발명의 스토리지 장치(1200)는 리플레이 보호 블록(RPMB)의 수를 미리 결정된 임계치 미만으로 관리할 수 있다. RPMB 퍼지 명령이 들어오는 경우, 리플레이 보호 블록(RPMB)의 수에 따라 퍼지에 소요되는 시간이 증가하는 것으로 알려져 있다. 따라서, 본 발명의 스토리지 장치(1200)에 의해 RPMB 퍼지 요청에 따라 발생하는 성능 저하 또는 레이턴시를 줄일 수 있다.
도 2는 본 발명의 실시 예에 따른 스토리지 장치의 구성을 세부적으로 보여주는 블록도이다. 도 2를 참조하면, 스토리지 장치(1200)는 스토리지 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함한다. 예시적으로, 스토리지 컨트롤러(1210) 및 불휘발성 메모리 장치(1220) 각각은 하나의 칩, 하나의 패키지, 또는 하나의 모듈로 제공될 수 있다. 또는, 스토리지 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)는 하나의 칩, 하나의 패키지, 또는 하나의 모듈로 형성되어, 임베디드 메모리, 메모리 카드, 메모리 스틱, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등과 같은 스토리지로 제공될 수도 있다.
스토리지 컨트롤러(1210)는 불휘발성 메모리 장치(1220)를 제어하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(1210)는 호스트(1100, 도 1 참조)의 요청에 따라 불휘발성 메모리 장치(1220)에 데이터를 기입하거나 또는 불휘발성 메모리 장치(1220)에 저장된 데이터를 독출할 수 있다. 이러한 불휘발성 메모리 장치(1220)로의 접근을 위하여, 스토리지 컨트롤러(1210)는 명령어, 어드레스, 데이터 그리고 제어 신호를 불휘발성 메모리 장치(1220)에 제공할 수 있다.
특히, 스토리지 컨트롤러(1210)는 본 발명의 실시 예에 따라 리플레이 보호 블록(RPMB)을 추적하고 리플레이 보호 블록(RPMB)의 수를 제한할 수 있다. 이러한 스토리지 컨트롤러(1210)의 기능에 의해, RPMB 퍼지 명령에 따른 리플레이 보호 블록(RPMB)에 대한 가비지 컬렉션이나 백패턴 프로그램으로 인한 성능 저하가 최소화될 수 있다. 이를 위해 스토리지 컨트롤러(1210)는 블록 매니저(1212)와 RPMB 퍼지 매니저(1214)를 포함한다. 블록 매니저(1212)와 RPMB 퍼지 매니저(1214)는 하드웨어로 구현될 수도 있고 펌웨어(Firmware)와 같은 소프트웨어로 구현될 수 있을 것이다.
블록 매니저(1212)는 RPMB 데이터가 기입되는 메모리 블록들을 추적하고 관리한다. 예를 들면, 블록 매니저(1212)는 RPMB 데이터의 쓰기 요청(RPMB LU Write)이 발생하면, 쓰기 요청된 로직 유닛(LU) 데이터를 불휘발성 메모리 장치(1220)의 블록 단위 및 페이지 단위로 변환하고 맵핑한다. 그리고 블록 매니저(1212)는 RPMB 데이터가 기입되는 메모리 블록에 RPMB 식별자를 할당한다. 예를 들면, 블록 매니저(1212)는 RPMB 데이터가 기입되는 메모리 블록을 리플레이 보호 블록(RPMB) 식별자에 해당하는 테그(Tag)나 플레그(Flag)를 부여할 수 있다. 또는, 블록 매니저(1212)는 RPMB 데이터가 기입되는 메모리 블록을 맵핑 테이블이나 리스트로 관리할 수 있다.
더불어, 블록 매니저(1212)는 RPMB 데이터 또는 일반 데이터 쓰기 요청이 발행하면, 프리 블록들 중에서 RPMB 식별자를 가진 메모리 블록을 우선적으로 로그 블록(Log Block)으로 할당할 수 있다. 일단, 메모리 블록에 RPMB 식별자가 할당되면, 실질적인 블록 소거(Block Erase)가 발생하기 전까지는 블록 매니저(1212)에 의하여 리플레이 보호 블록(RPMB)으로 추적되고 관리될 것이다.
RPMB 퍼지 매니저(1214)는 리플레이 보호 블록(RPMB)의 수를 관리하기 위한 제반 제어 동작을 수행한다. 그리고 RPMB 퍼지 매니저(1214)는 RPMB 퍼지 명령에 응답하여 리플레이 보호 블록(RPMB)에 대한 물리적 소거를 실행할 수 있다. 여기서, RPMB 퍼지 매니저(1214)는 리플레이 보호 블록(RPMB)의 수를 관리하기 위한 가비지 컬렉션을 수행할 수 있다. 예를 들면, RPMB 퍼지 매니저(1214)는 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면, 리플레이 보호 블록(RPMB)들 간의 가비지 컬렉션을 수행한다.
가비지 컬렉션에 의해서 무효화된 리플레이 보호 블록(RPMB)은 프리 블록으로 리스트된다. 그러면, 프리 블록 리스트에 포함된 무효화된 리플레이 보호 블록(RPMB)은 블록 매니저(1212)에 의해서 우선적으로 로그 블록으로 할당된다. 로그 블록으로의 할당을 위해 무효화된 리플레이 보호 블록(RPMB)은 물리적으로 소거되고, 백패턴 데이터가 기입될 수도 있을 것이다. 이러한 절차에 의해서, 리플레이 보호 블록(RPMB)의 수는 임계치 미만으로 유지될 수 있다. RPMB 퍼지 명령이 입력되면, 퍼지 대상이 되는 리플레이 보호 블록(RPMB)의 수가 임계치 미만으로 제한되기 때문에 퍼지 동작에 소요되는 시간은 사용자가 설정한 레이턴시 이하로 관리될 수 있다.
여기서, 블록 매니저(1212)와 RPMB 퍼지 매니저(1214)는 플래시 변환 계층(Flash Translation Layer: 이하, FTL)의 일부로 구현될 수 있다. 또는, 블록 매니저(1212)와 RPMB 퍼지 매니저(1214)는 플래시 변환 계층(FTL)의 맵핑과 가비지 컬렉션 동작을 상호 보완하는 별도의 장치나 소프트웨어로 구현될 수 있을 것이다.
스토리지 컨트롤러(1210)에 포함되는 플래시 변환 계층(FTL)은 호스트(1100)의 파일 시스템(File System)과 불휘발성 메모리 장치(1220) 사이에서 불휘발성 메모리 장치(1220)의 삭제 연산을 감추기 위한 인터페이싱을 제공한다. 플래시 변환 계층(FTL)에 의하여, 쓰기 전 소거(Erase-before-Write) 및 소거 단위와 쓰기 단위의 불일치라는 불휘발성 메모리 장치(1220)의 단점이 보완될 수 있다. 또한, 플래시 변환 계층(FTL)은 호스트(1100)의 파일 시스템(File system)이 생성한 논리 주소(Logical Address)를 불휘발성 메모리 장치(1220)의 물리 주소(Physical Address)로 맵핑(Mapping)시킨다. 이 밖에도 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(1220)의 수명을 관리하기 위한 웨어 레벨링(Wear leveling)이나 데이터 용량을 관리하기 위한 가비지 컬렉션(Garbage collection)에도 관여한다.
불휘발성 메모리 장치(1220)는 스토리지 컨트롤러(1210)의 제어에 따라 스토리지 컨트롤러(1210)로부터 수신된 데이터를 저장하거나 또는 저장된 데이터를 스토리지 컨트롤러(1210)로 전송할 수 있다. 불휘발성 메모리 장치(1220)는 복수의 메모리 블록들(BLK1~BLKn-1)을 포함할 수 있다. 복수의 메모리 블록들(BLK1~BLKn-1) 각각은 기판에 수직 방향으로 워드 라인 레이어가 적층되는 3차원 메모리 구조를 갖는다. 복수의 메모리 블록들(BLK1~BLKn-1) 각각은 스토리지 컨트롤러(1210)에 의해서 소거 카운트(Erase count)와 같은 웨어 레벨링을 위한 정보를 통해서 관리될 수 있다.
이상의 본 발명의 실시 예에 따르면, 스토리지 장치(1200)는 리플레이 보호 블록(RPMB)의 수를 미리 설정된 임계치 이하로 유지할 수 있다. 리플레이 보호 블록(RPMB)의 수가 많을수록 RPBM 퍼지 명령의 실행에 소요되는 시간이 증가하게 된다. 본 발명의 스토리지 장치(1200)는 리플레이 보호 블록(RPMB)의 수를 성능 저하를 최소화할 수 있는 수 이하로 유지할 수 있다. 따라서, 스토리지 장치(1200)는 RPMB 퍼지 명령에 따른 성능 저하를 최소화할 수 있다.
도 3은 도 2의 스토리지 컨트롤러의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 본 발명의 스토리지 컨트롤러(1210)는 프로세싱 유닛(1211), 워킹 메모리(1213), 호스트 인터페이스(1215), 그리고 플래시 인터페이스(1217)를 포함한다. 하지만, 스토리지 컨트롤러(1210)의 구성 요소들이 앞서 언급된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 스토리지 컨트롤러(1210)는 부팅(Booting) 동작에 필요한 코드 데이터(Code data)를 저장하는 ROM(Read Only Memory)이나 에러 정정 코드 블록(ECC Block) 등을 더 포함할 수도 있다.
프로세싱 유닛(1211)은 중앙 처리 장치(Central Processing Unit) 또는 마이크로-프로세서(Micro-processor)를 포함할 수 있다. 프로세싱 유닛(1211)은 스토리지 컨트롤러(1210)를 구동하기 위한 펌웨어(Firmware)를 구동할 수 있다. 특히, 프로세싱 유닛(1211)은 워킹 메모리(1213)에 로드되는 소프트웨어들을 구동할 수 있다. 예를 들면, 프로세싱 유닛(1211)은 블록 매니저(1212)나 RPMB 퍼지 매니저(1214)를 실행할 수 있다. 이밖에, 프로세싱 유닛(1211)은 플래시 변환 계층(FTL)과 같은 스토리지 장치(1200)의 핵심 기능들을 실행할 수 있다.
워킹 메모리(1213)에는 스토리지 컨트롤러(1210)를 제어하기 위한 소프트웨어(또는, 펌웨어)나 데이터가 로드(Load)된다. 워킹 메모리(1213)에 로드된 소프트웨어 및 데이터는 프로세싱 유닛(1211)에 의해 구동되거나 처리된다. 특히, 본 발명의 실시 예에 따르면, 워킹 메모리(1213)에는 플래시 변환 계층(FTL), 블록 매니저(1212), 그리고 RPMB 퍼지 매니저(1214) 등이 로드될 수 있다. 또는, 블록 매니저(1212)나 RPMB 퍼지 매니저(1214)의 기능을 포함하는 플래시 변환 계층(FTL)이 로드될 수도 있을 것이다.
프로세싱 유닛(1211)에 의해서 구동되는 블록 매니저(1212)는 RPMB 데이터가 프로그램된 리플레이 보호 블록(RPMB)들을 추적하고 관리한다. 블록 매니저(1212)는 RPMB 쓰기 요청(RPMB LU Write)이 발생하면, 쓰기 요청된 데이터를 불휘발성 메모리 장치(1220)에 기입하고 RPMB 식별자를 사용하여 해당 블록을 관리한다. RPMB 데이터나 일반 데이터의 쓰기 요청이 발생할 때, 쓰기 요청된 데이터를 프로그램할 로그 블록을 할당해야 한다. 이때, 블록 매니저(1212)는 프리 블록들 중에서 RPMB 식별자를 가진 프리 블록을 우선적으로 로그 블록(Log Block)으로 할당할 수 있다. 이때, RPMB 식별자를 가진 프리 블록은 물리적인 소거 이후에 로그 블록으로 제공될 것이다.
프로세싱 유닛(1211)에 의해서 구동되는 RPMB 퍼지 매니저(1214)는 리플레이 보호 블록(RPMB)의 수를 관리하기 위한 제반 제어 동작을 수행한다. RPMB 퍼지 매니저(1214)는 RPMB 퍼지 명령에 응답하여 리플레이 보호 블록(RPMB)에 대한 물리적 소거를 실행할 수 있다. RPMB 퍼지 매니저(1214)는 리플레이 보호 블록(RPMB)들의 수를 임계치 미만으로 관리하기 위한 가비지 컬렉션(Garbage Collection)을 수행할 수 있다. RPMB 퍼지 매니저(1214)는 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면, 리플레이 보호 블록(RPMB)들 간의 가비지 컬렉션을 수행한다. 이때, 수집된 유효 데이터가 복사되는 목적지 블록(Destination Block)으로는 무효 데이터만 존재하는 리플레이 보호 블록(RPMB)들 중 어느 하나가 할당될 수 있다. 여기서, 목적지(Destination)의 의미는 가비지 컬렉션 동작에서 수집된 유효 데이터(Valid)가 프로그램되는 메모리 블록을 의미한다. 따라서, 리플레이 보호 블록(RPMB)들에 대한 가비지 컬렉션에 의해서 리플레이 보호 블록(RPMB)의 수는 감소할 수 있고, 임계치 이하로 유지될 수 있다. 이때, RPMB 퍼지 명령이 입력되면, 퍼지 대상이 되는 리플레이 보호 블록(RPMB)의 수가 임계치 이하로 제한되기 때문에 퍼지 동작에 따른 성능 저하는 최소화된다.
프로세싱 유닛(1211)에 의해서 구동되는 플래시 변환 계층(FTL, 미도시)은, 일반적으로 주소 맵핑(Address mapping), 가비지 컬렉션(Garbage collection), 그리고 웨어 레벨링(Wear leveling)과 같은 기능을 수행한다.
호스트 인터페이스(1215)는 호스트(Host)와 스토리지 컨트롤러(1210) 사이의 인터페이스를 제공한다. 호스트와 스토리지 컨트롤러(1210)는 다양한 표준 인터페이스들(Standardized Interfaces) 중 하나를 통해 연결될 수 있다. 여기에서, 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral component Interconnection), PCIe(PCI Express), USB(Universal Serial Bus), IEEE 1394, UFS(Universal Flash Storage), eMMC(Embedded Multi Media Card), NVMe 등과 같은 다양한 인터페이스 방식들을 포함한다. 본 명세서에서는, 예시적으로 퍼지 명령어(Purge Command)를 지원하는 UFS 인터페이스를 기준으로 본 발명의 이점이 설명될 것이다.
플래시 인터페이스(1217)는 스토리지 컨트롤러(1210)와 불휘발성 메모리 장치(1220) 사이의 인터페이스를 제공한다. 예를 들면, 프로세싱 유닛(1211)에 의해서 처리된 데이터가 플래시 인터페이스(1217)를 통해 불휘발성 메모리 장치(1220)에 저장된다. 다른 예로써, 불휘발성 메모리 장치(1220)에 저장된 데이터는 플래시 인터페이스(1217)를 통해 스토리지 컨트롤러(1210)와 교환될 수 있다.
이상에서 예시적으로 설명된 스토리지 컨트롤러(1210)의 구성들이 설명되었다. 본 발명의 스토리지 컨트롤러(1210)의 기능에 따르면, 리플레이 보호 블록(RPMB)의 수가 임계치 이하로 유지될 수 있다. 따라서, 본 발명의 스토리지 컨트롤러(1210)의 특징에 따라 RPMB 퍼지 명령에 따른 성능 저하가 획기적으로 감소된다. 더불어, 소프트웨어로 구현된 블록 매니저(1212)와 RPMB 퍼지 매니저(1214)는 스토리지 컨트롤러(1210) 내에서 별도의 하드웨어로 구현될 수 있음은 잘 이해될 것이다.
도 4는 본 발명의 실시 예에 따른 블록 매니저의 동작을 보여주는 도면이다. 도 4를 참조하면, 블록 매니저(1212)는 RPMB 데이터가 저장된 모든 리플레이 보호 블록(RPMB)을 추적하고, 프리 블록 할당시 프리 블록들 중에서 리플레이 보호 블록(RPMB)을 우선적으로 할당한다.
블록 매니저(1212)는 RPMB 데이터가 기입되는 메모리 블록들을 추적하고 관리한다. 블록 매니저(1212)는 RPMB 쓰기 요청(RPMB Write)이 발생하면, RPMB 데이터가 프로그램되는 메모리 블록에 RPMB 식별자(1216)를 부여한다. RPMB 식별자(1216)는 어드레스나 데이터에 부가되는 테그(Tag) 형태, 또는 별도로 관리되는 테이블이나 리스트를 통해서 부여될 수 있다. 이하에서는 RPMB 식별자(1216)를 부여받은 메모리 블록을 리플레이 보호 블록(RPMB)이라 칭하기로 한다. 더불어, 프리 블록 풀(Free Block Pool)에 포함되는 리플레이 보호 블록(RPMB)을 가리켜 RPMB 프리 블록이라 칭하기로 한다.
블록 매니저(1212)는 일단 RPMB 식별자(1216)를 가진 리플레이 보호 블록(RPMB)이 생성되면, 리플레이 보호 블록(RPMB)이 물리적으로 소거되는 시점까지 추적 및 관리한다. 즉, 블록 매니저(1212)는 가비지 컬렉션이나 데이터의 업데이트에 의해 리플레이 보호 블록(RPMB)에 유효한 데이터(Valid data)가 존재하지 않는 경우에도 RPMB 식별자(1216)를 해제하지 않는다. 더불어, 블록 매니저(1212)는 RPMB 식별자(1216)로 마킹된 리플레이 보호 블록(RPMB)이 논리적으로는 무효화되어 프리 블록(Free Block)으로 관리되는 시점에도 RPMB 식별자(1216)를 해제하지 않는다. 블록 매니저(1212)는 어느 하나의 리플레이 보호 블록(RPMB)이 물리적으로 블록 소거된 이후에 RPMB 식별자(1216)를 해제할 것이다. 결론적으로, 블록 매니저(1212)는 RPMB 데이터가 하나의 페이지라도 기입된 메모리 블록에 대해 블록 소거가 발생하는 시점까지 RPMB 식별자를 부여하여 추적할 수 있다. 도시된 데이터 블록과 프리 블록들 중에서 리플레이 보호 블록(RPMB)은 9개의 블록들(BLK1~BLK6, BLK2, BLK24, BLK26)로 정의될 수 있다.
더불어, 블록 매니저(1212)는 RPMB 데이터 또는 일반 데이터 쓰기 요청이 발행하면, 프리 블록들 중에서 RPMB 식별자(1216)를 가진 메모리 블록을 우선적으로 로그 블록(Log Block)으로 할당한다. 로그 블록(Log Block)은 데이터를 기입하기 위한 버퍼 영역의 기능을 갖는 메모리 블록이다. 쓰기 요청이 발생하면, 프리 블록들 중에서 어느 하나가 선택되어 블록 소거된 후에 로그 블록으로 할당된다. 그리고 할당된 로그 블록에 쓰기 요청된 데이터가 프로그램된 후에 데이터 블록으로 지정된다.
블록 매니저(1212)는 RPMB 데이터 쓰기 요청 또는 일반 데이터 쓰기 요청에 관계없이 프리 블록 풀(Free Block Pool)에 리플레이 보호 블록(RPMB)이 존재하면, 해당 리플레이 보호 블록(RPMB)을 우선적으로 로그 블록으로 할당할 수 있다. 다른 실시 예에서, 블록 매니저(1212)는 RPMB 데이터의 쓰기 요청시에만 프리 블록 풀(Free Block Pool)의 RPMB 프리 블록을 우선적으로 로그 블록으로 할당할 수도 있다.
이상에서는 블록 매니저(1212)의 리플레이 보호 블록(RPMB)에 대한 추적 기능 및 RPMB 프리 블록을 우선적으로 로그 블록으로 할당하는 기능에 대해 설명하였다. 로그 블록의 할당시에 RPMB 프리 블록에 우선순위를 부여하는 기능에 의해서 불휘발성 메모리 장치(1200) 내에서의 리플레이 보호 블록(RPMB)의 소진 속도가 가속화될 수 있다. 블록 매니저(1212)의 상술한 기능은 후술하게 되는 리플레이 보호 블록(RPMB)의 수를 임계치 이하로 관리할 수 있는 RPMB 퍼지 매니저(1214)의 기능을 지원한다.
도 5는 본 발명의 블록 매니저의 동작을 예시적으로 보여주는 순서도이다. 도 5를 참조하면, 블록 매니저(1212, 도 4 참조)는 RPMB 데이터의 쓰기 요청시에 RPMB 데이터가 프로그램된 메모리 블록을 리플레이 보호 블록(RPMB)으로 지정하고 추적 및 관리할 수 있다.
S110 단계에서, 호스트(1100, 도 1 참조)로부터 스토리지 장치(1200, 도 1 참조)로의 RPMB 데이터의 쓰기 요청이 전달된다. 스토리지 컨트롤러(1210) 또는 스토리지 컨트롤러(1210) 내의 블록 매니저(1212)는 호스트(1100)의 쓰기 요청을 수신하여 명령어 파싱이나 어드레스를 디코딩할 수 있다.
S120 단계에서, 블록 매니저(1212)는 현재 액티브 로그 블록이 존재하는지 판단한다. 여기서, 액티브 로그 블록은 데이터의 프로그램을 위해 선택된 후에 모든 메모리 영역이 데이터로 채워지기 전인 현재 사용 중인 로그 블록을 지칭하기로 한다. 만일, 현재 액티브 로그 블록이 존재하는 경우라면('Yes' 방향), 절차는 S130 단계로 이동한다. 반면, 현재 액티브 로그 블록이 존재하지 않는 경우라면('No' 방향), 절차는 S140 단계로 이동한다.
S130 단계에서, 블록 매니저(1212)는 쓰기 요청된 RPMB 데이터를 액티브 로그 블록에 프로그램한다. 액티브 로그 블록에 RPMB 데이터의 기입이 완료되면, 액티브 로그 블록은 데이터 블록에서 리플레이 보호 블록(RPMB)으로 관리될 것이다.
S140 단계에서, 블록 매니저(1212)는 현재 액티브 로그 블록이 존재하지 않기 때문에, 새로운 로그 블록을 할당받아야 한다. 블록 매니저(1212)는 프리 블록 풀(Free Block Pool)에서 어느 하나의 프리 블록을 할당받아 액티브 로그 블록으로 사용할 것이다. 이때, 블록 매니저(1212)는 프리 블록 풀(Free Block Pool)의 RPMB 프리 블록을 우선적으로 로그 블록으로 할당할 수 있다.
S150 단계에서, 블록 매니저(1212)는 쓰기 요청된 RPMB 데이터를 새로 할당받은 로그 블록에 프로그램할 것이다.
S160 단계에서, 블록 매니저(1212)는 새로 할당받아 RPMB 데이터를 기입한 로그 블록에 RPMB 식별자를 부여하여 리플레이 보호 블록(RPMB)으로 관리한다.
이상에서는 블록 매니저(1212)의 리플레이 보호 블록(RPMB) 지정 및 리플레이 보호 블록(RPMB)의 추적 기능에 대해 간략히 설명하였다. 블록 매니저(1212)는 RPMB 데이터의 쓰기 요청시에 로그 블록에 데이터를 기입한 후에 RPMB 식별자를 부여하여 추적할 수 있다. 이러한 블록 매니저(1212)의 RPMB 식별자를 사용하는 추적 기능은 리플레이 보호 블록(RPMB)이 물리적으로 소거되는 시점까지 지속된다.
도 6은 도 5의 S140 단계를 좀더 구체적으로 보여주는 순서도이다. 도 6을 참조하면, 블록 매니저(1212)는 RPMB 데이터를 기입하기 위한 로그 블록의 할당시에 RPMB 프리 블록을 우선적으로 선택한다.
S141 단계에서, 블록 매니저(1212)는 스토리지 컨트롤러(1210)에 의해 RPMB 데이터를 기입할 새로운 로그 블록(New Log Block)의 할당을 요청받는다. 왜냐하면, RPMB 데이터의 쓰기 요청이 발생한 상황에서 현재 액티브 로그 블록이 존재하지 않기 때문이다.
S143 단계에서, 블록 매니저(1212)는 프리 블록 풀(Free Block Pool) 또는 프리 블록 리스트에서 RPMB 프리 블록이 존재하는지 체크한다. RPMB 데이터에 대한 접근 및 업데이트가 빈번한 경우에는 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재할 가능성이 높을 것이다. 하지만, RPMB 데이터에 대한 업데이트가 희박한 경우, 프리 블록 풀(Free Block Pool)에는 RPMB 프리 블록이 존재하지 않을 수도 있다. 만일, 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하는 경우('Yes' 방향), 절차는 S145 단계로 이동한다. 반면에, 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하지 않는 경우('No' 방향), 절차는 S147 단계로 이동한다.
S145 단계에서, 블록 매니저(1212)는 프리 블록 풀(Free Block Pool)에 존재하는 RPMB 프리 블록을 쓰기 요청된 RPMB 데이터를 기입하기 위한 로그 블록으로 할당한다.
S147 단계에서, 블록 매니저(1212)는 일반 프리 블록을 쓰기 요청된 RPMB 데이터를 기입하기 위한 로그 블록으로 할당한다.
이상에서는 블록 매니저(1212)의 로그 블록의 할당시에 RPMB 프리 블록에 우선순위를 부여하는 기능이 간략히 설명되었다. 상술한 블록 매니저(1212)의 리플레이 보호 블록(RPMB)의 추적 기능과 RPMB 프리 블록을 우선하여 로그 블록으로 할당하는 기능에 의해서 불휘발성 메모리 장치(1200) 내에서의 리플레이 보호 블록(RPMB)의 수가 제한될 수 있다.
도 7은 본 발명의 RPMB 퍼지 매니저의 주요 기능을 예시적으로 보여주는 도면이다. 도 7을 참조하면, RPMB 퍼지 매니저(1214)는 리플레이 보호 블록의 수(nRPMB)를 미리 결정된 최대 리플레이 보호 블록 수(nRPMB_Max) 이하로 관리할 수 있다. 이를 위하여 RPMB 퍼지 매니저(1214)는 가비지 컬렉션(GC)을 사용할 수 있다.
RPMB 퍼지 매니저(1214)는 RPMB 식별자(1216)가 부여된 리플레이 보호 블록의 수(nRPMB)를 미리 결정된 최대 리플레이 보호 블록 수(nRPMB_Max) 이하로 유지하기 위한 블록 관리 동작을 수행한다. 예를 들어, 최대 리플레이 보호 블록 수(nRPMB_Max)가 '6'에 대응하는 것으로 가정하기로 한다. 그러면, 현재 RPMB 식별자(1216)가 부여된 리플레이 보호 블록(RPMB)은 6개의 메모리 블록들(BLK31~BLK36)에 해당한다. 예를 들면, 유효한 RPMB 데이터가 포함되는 4개의 리플레이 보호 블록들(BLK31, BLK32, BLK33, BLK34)과 무효한 RPMB 데이터가 포함된 2개의 리플레이 보호 블록들(BLK35, BLK36)이 리플레이 보호 블록(RPMB)으로 체크될 수 있다.
이때, RPMB 퍼지 매니저(1214)는 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max)에 도달한 것으로 인식하고, 리플레이 보호 블록들(BLK31~BLK36)에 대한 가비지 컬렉션을 트리거한다. 그러면, 4개의 리플레이 보호 블록들(BLK31, BLK32, BLK33, BLK34)에 남아있는 유효한 RPMB 데이터가 수집되어 로그 블록에 기입될 것이다. 그리고 가비지 컬렉션에 의해서 4개의 리플레이 보호 블록들(BLK31, BLK32, BLK33, BLK34)은 프리 블록으로 전환될 수 있다. 가비지 컬렉션에 의해서 6개의 리플레이 보호 블록들(BLK31~BLK36)은 1개 내지 2개의 리플레이 보호 블록(RPMB)으로 감소될 수 있다. 이후, RPMB 퍼지 명령이 제공되면, RPMB 퍼지 매니저(1214)는 감소된 리플레이 보호 블록(RPMB)들에 대해서만 퍼지 동작을 수행하게 될 것이다.
이상에서는 RPMB 퍼지 매니저(1214)의 리플레이 보호 블록의 수(nRPMB)를 제한하는 기능에 대해서 간략히 설명하였다. RPMB 퍼지 매니저(1214)에 의한 가비지 컬렉션에 의해서 스토리지 장치(1200) 내의 전체 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max) 이하로 관리될 수 있다. 이를 통해서, RPMB 퍼지 명령에 따른 퍼지 동작의 성능을 향상시킬 수 있다.
도 8은 본 발명의 RPMB 퍼지 매니저의 리플레이 보호 블록의 수(nRPMB)를 제한하는 동작을 간략히 보여주는 순서도이다. 도 8을 참조하면, RPMB 퍼지 매니저(1214, 도 7 참조)는 리플레이 보호 블록의 수(nRPMB)를 모니터링하고, 리플레이 보호 블록의 수(nRPMB)를 최대 리플레이 보호 블록 수(nRPMB_Max) 이하로 관리할 수 있다.
S210 단계에서, RPMB 퍼지 매니저(1214)는 현재 추적되고 있는 리플레이 보호 블록의 수(nRPMB)를 체크한다. 리플레이 보호 블록의 수(nRPMB)는 유효(Valid) 또는 무효(Invalid)에 관계없이 RPMB 데이터를 갖는 제반 리플레이 보호 블록(RPMB)의 카운트 수를 나타낸다. 더불어, 논리적으로 언맵(Un-map) 또는 맵아웃(Map-out)된 프리 블록으로 관리되는 RPMB 프리 블록도 리플레이 보호 블록의 수(nRPMB)에 카운트된다.
S220 단계에서, RPMB 퍼지 매니저(1214)는 체크된 현재 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max)에 도달했는지 판단한다. 만일, 현재 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max) 이상인 것으로 판단되면('Yes' 방향), 절차는 S230 단계로 이동한다. 반면, 현재 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max)보다 적은 것으로 판단되면('No' 방향), 절차는 S210 단계로 복귀한다.
S230 단계에서, RPMB 퍼지 매니저(1214)는 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하는지 체크한다. 만일, 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하는 것으로 체크되면('Yes' 방향), 절차는 S240 단계로 이동한다. 반면, 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하지 않는 것으로 체크되면('No' 방향), 절차는 S250 단계로 이동한다.
S240 단계에서, RPMB 퍼지 매니저(1214)는 RPMB 프리 블록을 수집된 유효 RPMB 데이터를 기입하기 위한 목적지 블록(Destination Block)으로 사용하는 가비지 컬렉션을 수행한다. 가비지 컬렉션에 의해서 유효한 RPMB 데이터가 모두 목적지 블록으로 이동되면, 무효한 RPMB 데이터만 남은 리플레이 보호 블록(RPMB)은 프리 블록으로 지정될 것이다.
S250 단계에서, RPMB 퍼지 매니저(1214)는 RPMB 프리 블록이 존재하지 않는 상황에서 일반 프리 블록을 가비지 컬렉션을 위한 목적지 블록(Destination Block)으로 할당한다. 그리고 수집된 유효 RPMB 데이터가 일반 프리 블록에 기입되면, 새로운 리플레이 보호 블록(RPMB)이 생성된다. 하지만, 가비지 컬렉션에 의해서 무효한 RPMB 데이터만 남은 리플레이 보호 블록(RPMB)들은 프리 블록으로 지정되고, 물리적 소거 후에는 리플레이 보호 블록(RPMB)에서 해제될 것이다. 따라서, 실질적으로 리플레이 보호 블록(RPMB)의 수는 증가하지 않게 된다.
이상에서는 RPMB 퍼지 매니저(1214)의 가비지 컬렉션을 활용하여 리플레이 보호 블록의 수(nRPMB)를 최대 리플레이 보호 블록 수(nRPMB_Max) 이하로 관리하는 절차가 간략히 설명되었다. RPMB 퍼지 매니저(1214)와 블록 매니저(1212)의 상호 협조를 통해서 스토리지 장치(1200) 내의 리플레이 보호 블록의 수(nRPMB)가 제한되고, 이는 RPMB 퍼지 성능을 향상시키는 효과로 이어진다.
도 9a 및 도 9b는 리플레이 보호 블록(RPMB)의 수를 제한하지 않는 일반적인 경우의 리플레이 보호 블록(RPMB)의 수가 증가하는 예들이 도시되어 있다. 도 9a를 참조하면, 일반적인 RPMB 데이터의 쓰기 요청이 발생하면 리플레이 보호 블록(RPMB)의 수가 증가하게 된다.
현재 4개의 리플레이 보호 블록들(BLK1, BLK2, BLK3, BLK4)이 존재하고 있다. 4개의 리플레이 보호 블록(RPMB)들 중에는 유효한 RPMB 데이터가 저장된 블록(BLK1, BLK2, BLK4)과 무효한 RPMB 데이터가 저장된 블록(BLK3)이 포함된다. 그리고 5개의 블록들(BLK5, BLK6, BLK7, BLK8, BLK9) 각각에는 유효한 데이터(LBA2, LBA3, LBA4, LBA5, LBA6)가 존재한다. 반면, 메모리 블록(BLK10)에는 모두 무효한 데이터만이 유지되고 있다. 결국, 이러한 상황에서 RPMB 퍼지 명령이 입력되면, 4개의 리플레이 보호 블록(RPMB)들(BLK1, BLK2, BLK3, BLK4)이 RPMB 퍼지 대상(1221)이 된다.
이러한 상황에서, RPMB 데이터(RPMB0)와 일반 데이터(LBA2, LBA3, LBA4, LBA5, LBA6)의 쓰기 요청이 발생할 수 있다. 리플레이 보호 블록(RPMB)에 대한 관리없이 RPMB 데이터(RPMB0)와 일반 데이터(LBA2, LBA3, LBA4, LBA5, LBA6)에 대한 쓰기 동작이 수행될 것이다. 이 경우, 메모리 블록(BLK10)이 로그 블록으로 할당되고, 쓰기 요청된 데이터(RPMB0, LBA2, LBA3, LBA4, LBA5, LBA6)는 메모리 블록(BLK10)에 기입될 수 있다. 그리고 메모리 블록(BLK10)은 업데이트된 RPMB 데이터(RPMB0)가 기입된 상태이기 때문에 새로운 리플레이 보호 블록(RPMB)으로 지정될 것이다. 따라서, RPMB 퍼지 명령이 제공되면, RPMB 퍼지를 수행할 RPMB 퍼지 대상(1221, 1222)은 5개 블록으로 증가한다.
도 9b를 참조하면, 현재 4개의 리플레이 보호 블록(RPMB)들(BLK1, BLK2, BLK3, BLK4)이 존재하고 있다. 4개의 리플레이 보호 블록(RPMB)들 중에는 유효한 RPMB 데이터가 저장된 블록(BLK1, BLK2, BLK4)과 무효한 RPMB 데이터가 저장된 블록(BLK3)이 포함된다. 그리고 5개의 블록들(BLK5, BLK6, BLK7, BLK8, BLK9) 각각에는 유효한 데이터(LBA2, LBA3, LBA4, LBA5, LBA6)가 존재한다. 그리고 메모리 블록(BLK10)에는 모두 무효한 데이터만이 유지되고 있다. 결국, 이러한 상황에서 RPMB 퍼지 명령이 입력되면, 4개의 리플레이 보호 블록들(BLK1, BLK2, BLK3, BLK4)이 RPMB 퍼지 대상(1221)이 된다.
이러한 상황에서, RPMB 데이터(RPMB0)와 일반 데이터(LBA2, LBA3, LBA4, LBA5, LBA6)의 쓰기 요청이 발생할 수 있다. 이 경우, 리플레이 보호 블록(RPMB)인 메모리 블록(BLK3)이 로그 블록으로 지정되고, 쓰기 요청된 데이터(RPMB0, LBA2, LBA3, LBA4, LBA5, LBA6)가 소거된 메모리 블록(BLK3)에 기입될 수 있다. 그러면, 실질적으로 RPMB 퍼지 대상(1221)은 4개 블록을 유지하게 된다.
여기에, 추가적으로 RPMB 데이터(RPMB1)의 쓰기 요청이 발생하는 것으로 가정하기로 한다. 그러면, RPMB 데이터(RPMB1)를 기입하기 위해서는 메모리 블록(BLK5)이 프리 블록으로 지정되고, 소거된 후에 로그 블록으로 제공될 수 있다. 그리고 RPMB 데이터(RPMB1)가 메모리 블록(BLK5)에 기입된다. 이때, RPMB 퍼지 명령이 제공되면, RPMB 퍼지를 수행할 RPMB 퍼지 대상(1223)은 5개의 메모리 블록(BLK1, BLK2, BLK3, BLK4, BLK5)으로 증가하게 된다.
이상의 도 9a 및 도 9b의 예들을 통해서 리플레이 보호 블록의 수(nRPMB)를 제한하기 위한 구성이나 기능 없이는 리플레이 보호 블록(RPMB)의 수가 지속적으로 증가하게 됨을 알 수 있다. 이는 RPMB 퍼지 동작의 성능을 현저하게 저하되는 요인으로 작용한다.
도 10은 본 발명의 실시 예에 따른 리플레이 보호 블록의 수(nRPMB)의 제한을 통해서 RPMB 퍼지 대상의 수가 제어될 수 있음을 보여주는 도면이다. 도 10을 참조하면, RPMB 퍼지 매니저(1214)에 의해 제어되는 가비지 컬렉션에 의해 리플레이 보호 블록의 수(nRPMB)의 증가가 억제될 수 있다. 여기서, 최대 리플레이 보호 블록 수(nRPMB_Max)가 4인 것으로 가정하기로 한다. 그리고 초기 조건은 도 9a 또는 도 9b와 동일한 상태를 가정하기로 한다.
현재 4개의 리플레이 보호 블록(RPMB)들(BLK1, BLK2, BLK3, BLK4)이 존재하고 있다. 4개의 리플레이 보호 블록(RPMB)들 중에는 유효한 RPMB 데이터가 저장된 블록(BLK1, BLK2, BLK4)과 무효한 RPMB 데이터가 저장된 블록(BLK3)이 포함된다. 그리고 5개의 블록들(BLK5, BLK6, BLK7, BLK8, BLK9) 각각에는 유효한 데이터(LBA2, LBA3, LBA4, LBA5, LBA6)가 존재한다. 그리고 메모리 블록(BLK10)에는 모두 무효한 데이터만이 유지되고 있다. 결국, 이러한 상황에서 RPMB 퍼지 명령이 입력되면, 4개의 리플레이 보호 블록들(BLK1, BLK2, BLK3, BLK4)이 RPMB 퍼지 대상(1221)이 된다. 현재 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max)에 대응하는 4로 모니터링될 것이다. 따라서, RPMB 퍼지 매니저(1214)에 의한 본 발명의 가비지 컬렉션(GC)이 트리거될 수 있다.
가비지 컬렉션(GC)은 RPMB 퍼지 대상(1221) 내에서 발생할 수 있다. 즉, 메모리 블록(BLK3)이 프리 블록으로 지정되고, 소거된 후에 로그 블록으로 할당될 수 있다. 그리고 로그 블록으로 할당된 메모리 블록(BLK3)에 리플레이 보호 블록들(BLK1, BLK2)에 저장된 유효 데이터(LBA0, RPMB0, RPMB1, RPMB2, RPMB3, RPMB4)가 수집되어 기입된다. 가비지 컬렉션(GC) 이후에도 리플레이 보호 블록(RPMB)의 수는 여전해 4개를 유지하게 된다. 즉, 실질적으로 RPMB 퍼지 대상(1221)은 4개로 유지된다.
여기에, 추가적으로 RPMB 데이터(RPMB0)의 쓰기 요청이 발생하는 것으로 가정하기로 한다. 그러면, RPMB 데이터(RPMB0)를 기입하기 위해서는 메모리 블록(BLK1)이 프리 블록으로 지정되고, 소거된 후에 로그 블록으로 제공될 수 있다. 그리고 RPMB 데이터(RPMB0)가 메모리 블록(BLK1)에 기입될 수 있다. 이때, RPMB 퍼지 명령이 제공되면, RPMB 퍼지를 수행할 RPMB 퍼지 대상(1221)인 리플레이 보호 블록의 수(nRPMB)은 여전히 4개를 초과하지 않게 된다. 이는 RPMB 퍼지 대상이 5개로 증가하는 도 9b의 예에 비해 향상된 RPMB 퍼지 성능을 보장할 수 있다.
이상의 본 발명의 스토리지 컨트롤러(1210)에 의한 리플레이 보호 블록(RPMB)의 추적 및 리플레이 보호 블록의 수(nRPMB)의 제한 기능이 예시적으로 설명되었다. 이러한 본 발명의 기능을 통해서 리플레이 보호 블록(RPMB)의 수는 미리 결정된 최대 리플레이 보호 블록 수(nRPMB_Max) 이하를 유지할 수 있다.
도 11은 본 발명의 실시 예에 따른 스토리지 컨트롤러의 RPMB 데이터의 쓰기 동작을 간략히 보여주는 순서도이다. 도 11을 참조하면, 스토리지 컨트롤러(1210, 도 2 참조)는 리플레이 보호 블록(RPMB)의 추적이나 리플레이 보호 블록의 수(nRPMB)를 제한할 수 있다.
S310 단계에서, 호스트(1100, 도 1 참조)로부터 스토리지 장치(1200, 도 1 참조)로의 RPMB 쓰기 요청이 전달된다. 스토리지 컨트롤러(1210)는 RPMB 쓰기 요청을 수신한다.
S320 단계에서, 스토리지 컨트롤러(1210)는 쓰기 요청된 RPMB 데이터를 기입할 액티브 로그 블록이 여유가 있는지 판단한다. 만일, 현재 액티브 로그 블록에 쓰기 요청된 RPMB 데이터를 기입할 충분한 공간이 있다면('No' 방향), 절차는 S380 단계로 이동한다. 하지만, 현재 액티브 로그 블록에 쓰기 요청된 RPMB 데이터를 기입할 충분한 공간이 없다면('Yes' 방향), 절차는 S330 단계로 이동한다.
S330 단계에서, 스토리지 컨트롤러(1210)는 현재의 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max)에 도달했는지 판단한다. 만일, 현재 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max) 이상인 것으로 판단되면('Yes' 방향), 절차는 S340 단계로 이동한다. 반면, 현재 리플레이 보호 블록의 수(nRPMB)가 최대 리플레이 보호 블록 수(nRPMB_Max)보다 적은 것으로 판단되면('No' 방향), 절차는 S350 단계로 복귀한다.
S340 단계에서, 스토리지 컨트롤러(1210)는 현재 추적 및 파악된 리플레이 보호 블록(RPMB)들 내에서 가비지 컬렉션을 수행한다. 즉, 스토리지 컨트롤러(1210)는 리플레이 보호 블록(RPMB)들의 유효 RPMB 페이지들을 복사하기 위한 로그 블록도 RPMB 프리 블록들 중에서 선택할 수 있다. 스토리지 컨트롤러(1210)는 선택된 RPMB 프리 블록을 물리적으로 소거한다. 그리고 스토리지 컨트롤러(1210)는 소거된 RPMB 프리 블록을 로그 블록으로 사용하여 유효 RPMB 페이지들을 수집하여 복사한다. 가비지 컬렉션에 의해서 리플레이 보호 블록(RPMB)들 중에는 무효 RPMB 데이터만 남은 메모리 블록들이 다수 발생하게 된다. 이들 무효한 페이지들만 남은 메모리 블록은 RPMB 프리 블록으로 지정된다.
S350 단계에서, 스토리지 컨트롤러(1210)는 프리 블록 풀(Free Block Pool)에서 RPMB 프리 블록이 존재하는지 체크한다. 만일, 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하는 경우('Yes' 방향), 절차는 S360 단계로 이동한다. 반면, 프리 블록 풀(Free Block Pool)에 RPMB 프리 블록이 존재하지 않는 경우('No' 방향), 절차는 S370 단계로 이동한다.
S360 단계에서, 스토리지 컨트롤러(1210)는 프리 블록 풀(Free Block Pool)에 존재하는 RPMB 프리 블록을 로그 블록으로 할당한다. 로그 블록으로 할당된 RPMB 프리 블록은 물리적으로 소거된 후에 S310 단계에서 쓰기 요청된 RPMB 데이터를 위한 로그 블록으로 제공된다.
S370 단계에서, 스토리지 컨트롤러(1210)는 프리 블록 풀(Free Block Pool)에 존재하는 일반 프리 블록을 로그 블록으로 할당한다. 로그 블록으로 할당된 일반 프리 블록(Normal Free Block)은 물리적인 소거 절차를 거쳐 S310 단계에서 쓰기 요청된 RPMB 데이터를 위한 로그 블록으로 제공된다.
S380 단계에서, 스토리지 컨트롤러(1210)는 S310 단계에서 쓰기 요청된 RPMB 데이터를 할당된 로그 블록에 프로그램한다.
이상에서는 스토리지 컨트롤러(1210)의 RPMB 데이터의 쓰기 동작을 위한 가비지 컬렉션이나 로그 블록의 선택 절차가 간략히 설명되었다. 스토리지 컨트롤러(1210)는 RPMB 데이터의 쓰기 요청시에 리플레이 보호 블록(RPMB)들 간의 가비지 컬렉션을 통해 리플레이 보호 블록의 수(nRPMB)를 제한할 수 있다.
도 12는 본 발명의 효과를 예시적으로 보여주는 그래프이다. 도 12를 참조하면, 스토리지 장치(1200)의 리플레이 보호 블록(RPMB)의 수와 RPMB 퍼지 명령에 따른 퍼지 성능이 반비례하는 형태로 간략히 나타날 수 있다.
그래프의 가로축은 리플레이 보호 블록의 수(nRPMB)를 나타내고, 그래프의 세로축은 퍼지 성능 또는 퍼지 속도를 나타낸다. 만일, 본 발명의 특징과 같이 리플레이 보호 블록의 수(nRPMB)를 최대 리플레이 보호 블록 수(nRPMB_Max)로 제한하게 된다면, 퍼지 성능은 타깃 퍼지 성능(TPP) 이상을 유지할 수 있게 될 것이다.
도 13 및 도 14는 백패턴 프로그램 절차를 포함하는 경우의 일반적 퍼지 및 본 발명의 퍼지 동작을 각각 보여주는 도면들이다. 도 13은 리플레이 보호 블록의 수(nRPMB)를 제한하지 않은 경우의 퍼지 동작을 보여준다. 도 14는 리플레이 보호 블록의 수(nRPMB)를 제한하는 경우의 퍼지 동작을 보여준다.
도 13을 참조하면, RPMB 퍼지 명령이 제공되면 리플레이 보호 블록의 수(nRPMB)가 제한되지 않는 일반적인 경우에는 상대적으로 퍼지 성능의 하락이 발생한다. 먼저, 초기 조건에서는 유효 또는 무효 RPMB 데이터를 가진 9개의 리플레이 보호 블록(BLK1~BLK9)과 무효한 데이터만을 갖는 1개의 일반 블록(BLK10)이 존재하는 것으로 가정하기로 한다. 이때 수행되는 가비지 컬렉션(GC1)에 의해, 유효한 데이터가 존재하지 않는 메모리 블록(BLK10)이 소거되고 로그 블록으로 제공된다. 그리고 5개의 리플레이 보호 블록들(BLK1, BLK2, BLK3, BLK4, BLK5)의 유효 RPMB 데이터가 수집되어 로그 블록으로 제공되는 메모리 블록(BLK10)에 프로그램될 것이다. 그러면, 메모리 블록(BLK10)은 리플레이 보호 블록(RPMB)으로 관리되며, 전체 리플레이 보호 블록(RPMB)의 수는 10개로 증가한다.
이어지는 가비지 컬렉션(GC2)에 의해, 나머지 4개의 리플레이 보호 블록(RPMB)들(BLK6, BLK7, BLK8, BLK9)의 유효 RPMB 데이터가 수집되어 소거 후 로그 블록으로 제공되는 메모리 블록(BLK1)에 프로그램될 것이다. 하지만, 여전히 리플레이 보호 블록(RPMB)의 수는 10개로 유지된다.
이어서, 2회의 가비지 컬렉션을 통해서 확보된 무효 리플레이 보호 블록들(BLK2~BLK9)에 대한 소거 및 백패턴 쓰기 동작이 수행된다. 8개의 무효 리플레이 보호 블록들(BLK2~BLK9)이 소거되고, 이후에 각각의 메모리 블록들에는 백패턴이 프로그램된다. 그리고 백패턴이 프로그램된 8개의 무효 리플레이 보호 블록들(BLK2~BLK9)은 프리 블록으로 관리될 수 있다.
이상에서는 리플레이 보호 블록의 수(nRPMB)가 제한되지 않고, 동시에 가비지 컬렉션(GC) 동작에서 무효한 상태의 RPMB 프리 블록을 우선적으로 로그 블록으로 활용하지 않는 경우의 RPMB 퍼지 동작이 설명되었다. 이 경우, RPMB 퍼지 명령에 응답하여 가비지 컬렉션을 수행할 때에도 리플레이 보호 블록(RPMB)의 수가 증가하게 된다. 증가된 리플레이 보호 블록(RPMB)들에 대한 소거 및 백패턴 쓰기를 진행하는 경우, 전체적인 퍼지 성능은 감소하게 될 것이 자명하다.
도 14를 참조하면, 리플레이 보호 블록의 수(nRPMB)가 제한되며, RPMB 프리 블록을 우선적으로 로그 블록으로 제공하는 본 발명의 스토리지 장치(1200)의 경우에는 도 13의 일반적인 경우보다 퍼지 성능을 향상시킬 수 있다.
먼저, 초기 조건에서는 유효 또는 무효 RPMB 데이터를 가진 8개의 리플레이 보호 블록(BLK1~BLK8)과 유효 데이터(LBA6)를 가진 블록(BLK9), 그리고 무효한 데이터만을 갖는 1개의 일반 블록(BLK10)이 존재하는 것으로 가정하기로 한다. 이때, 본 발명의 블록 관리 동작에 의해 트리거되는 가비지 컬렉션(GC1)에 의해, 유효한 데이터가 존재하지 않는 메모리 블록(BLK10)이 소거되고 로그 블록으로 제공된다. 그리고 2개의 리플레이 보호 블록들(BLK1, BLK2)의 유효 RPMB 데이터가 수집되어 로그 블록으로 제공되는 메모리 블록(BLK10)에 프로그램될 것이다. 그러면, 메모리 블록(BLK10)은 리플레이 보호 블록(RPMB)으로 지정 및 관리되며, 전체 리플레이 보호 블록의 수(nRPMB)는 9개로 증가한다.
하지만, 후속되어 발생하는 가비지 컬렉션(GC2)에 의해, 리플레이 보호 블록(BLK4)의 유효 데이터(LBA1)가 수집되어 소거 후 로그 블록으로 제공되는 메모리 블록(BLK1)에 프로그램될 것이다. 그러면, 메모리 블록(BLK1)은 리플레이 보호 블록(RPMB)에서 해제된다. 따라서, 리플레이 보호 블록의 수(nRPMB)는 8개로 감소된다.
이어서, 2회의 가비지 컬렉션을 통해서 확보된 3개의 무효 리플레이 보호 블록들(BLK2, BLK3, BLK4)에 대한 소거 및 백패턴 쓰기 동작이 수행된다. 3개의 무효 리플레이 보호 블록들(BLK2, BLK3, BLK4)이 블록 소거되고, 이후에 각각의 메모리 블록들에는 백패턴이 프로그램된다. 그리고 백패턴이 프로그램된 3개의 무효 리플레이 보호 블록들(BLK2, BLK3, BLK4)은 리플레이 보호 블록(RPMB)에서 해제되고, 프리 블록으로 관리될 수 있다. 결국, 리플레이 보호 블록의 수(nRPMB)는 5개로 감소된다.
이상에서는 리플레이 보호 블록의 수(nRPMB)를 제한하기 위한 가비지 컬렉션(GC) 및 로그 블록 할당시 무효한 상태의 RPMB 프리 블록을 우선적으로 할당하는 본 발명의 RPMB 퍼지 동작이 설명되었다. 이 경우, 리플레이 보호 블록(RPMB)의 수가 특정 수 이하로 제한될 수 있다. 따라서, RPMB 퍼지 명령이 제공되는 시점에 리플레이 보호 블록(RPMB)들에 대한 소거 및 백패턴 쓰기를 진행하는 경우, 전체적인 퍼지 성능의 향상이 가능하다.
도 15는 도 1의 시스템의 계층적 구조를 예시적으로 보여주는 도면이다. 도 15를 참조하면, 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다. 호스트(1100)는 애플리케이션(AP-h), 파일 시스템(FS-h), 장치 관리자(DM-h), UFS 애플리케이션 계층(UAP-h), UFS 전송 프로토콜 계층(UTP-h), 및 UFS 인터커넥트 계층(UIC-h)을 포함할 수 있다.
애플리케이션(AP-h)은 호스트(1100)에서 구동되는 다양한 응용 프로그램들, 프로세스들 등을 포함할 수 있다. 파일 시스템(FS-h)은 애플리케이션(AP-h)에 의해 발생하는 다양한 데이터를 조직화하고 관리하도록 구성될 수 있다.
UFS 애플리케이션 계층(UAP-h)은 호스트(1100) 및 스토리지 장치(1200) 사이의 다양한 커맨드를 지원하도록 구성된다. 예를 들어, UFS 애플리케이션 계층(UAP-h)은 입출력 관리자(IOM-h) 및 UFS 커맨드 셋(USC-h)을 포함할 수 있다. 입출력 스트림 관리자(IOM-h)는 애플리케이션(AP-h) 또는 파일 시스템(FS-h)으로부터의 요청을 관리하도록 구성된다.
예시적인 실시 예에서, 입출력 스트림 관리자(IOM-h)는 애플리케이션(AP-h) 또는 파일 시스템(FS-h)으로부터의 입출력의 특성 값을 구분하도록 구성될 수 있다. 입출력 스트림 관리자(IOM-h)는 애플리케이션(AP-h) 또는 파일 시스템(FS-h)으로부터의 요청의 우선 순위를 관리하거나 또는 애플리케이션(AP-h) 또는 파일 시스템(FS-h)으로부터의 요청에 따른 다양한 기능을 지원하도록 구성될 수 있다.
UFS 커맨드 셋(USC-h)은 호스트(1100) 및 스토리지 장치(1200) 사이에서 지원되는 다양한 커맨드 세트를 지원할 수 있다. 예시적인 실시 예에서, UFS 커맨드 셋(USC-h)은 UFS 전용 커맨드 셋(UFS Native command set) 및 UFS SCSI 커맨드 셋(UFS SCSI command set)을 포함할 수 있다. UFS 커맨드 셋(USC-h)은 애플리케이션(AP-h) 또는 파일 시스템(FS-h)으로부터의 요청에 따라 스토리지 장치(1200)로 전송될 커맨드를 구성할 수 있다. 비록 도면에 도시되지는 않았으나, UFS 애플리케이션 계층(UAP-h)은 커맨드 큐 제어를 위한 커맨드들을 처리하는 태스크 관리자(Task Manager)를 더 포함할 수 있다.
장치 관리자(DM-h)는 장치 레벨의 동작들 및 장치 레벨의 구성들을 관리할 수 있다. 예시적인 실시 예에서, 장치 관리자(DM-h)는 스토리지 장치(1200)의 다양한 정보를 설정하거나 확인하기 위한 쿼리 요청을 관리할 수 있다.
UFS 전송 프로토콜 계층(UTP-h; UFS Transport Protocol)은 상위 계층을 위한 서비스들을 제공할 수 있다. UFS 전송 프로토콜 계층(UTP-h)은 UFS 애플리케이션 계층(UAP-h)로부터 제공된 커맨드 또는 정보; 또는 장치 관리자(DM-h)로부터 제공된 쿼리 요청을 UPIU(UFS Protocol Information Unit) 형태의 패킷으로 생성할 수 있다. 예시적인 실시 예에서, UFS 전송 프로토콜 계층(UTP-h) 및 장치 관리자(DM-h)는 UDM-SAP(UDM-Service Access Point)를 통해 서로 통신할 수 있다. UFS 전송 프로토콜 계층(UTP-h) 및 UFS 애플리케이션 계층(UAP-h)은 UTP_CMD_SAP 또는 UTP_TM_SAP를 통해 서로 통신할 수 있다.
UFS 인터커넥터 계층(UIC-h)은 스토리지 장치(1200)와의 연결을 관리할 수 있다. 예시적인 실시 예에서, UFS 인터커넥터 계층(UIC-h)은 스토리지 장치(1200)의 UFS 인터커넥터 계층(UIC-d)과 물리적으로 연결된 MIPI Unipro 및 MIPI M-PHY 와 같은 하드웨어 구성들을 포함할 수 있다. 예시적인 실시 예에서, UFS 인터커넥터 계층(UIC-h) 및 UFS 전송 프로토콜 계층(UTP-h)은 UIC-SAP를 통해 통신할 수 있고, UFS 인터커넥터 계층(UIC-h) 및 장치 관리자(DM-h)는 UIO-SAP를 통해 통신할 수 있다.
스토리지 장치(1200)는 메모리 영역 관리자(MAM-d), 메모리 영역 속성 관리자(MAPM-d), 장치 관리자(DM-d), UFS 애플리케이션 계층(UAP-d), UFS 전송 프로토콜 계층(UTP-d), 및 UFS 인터커넥트 계층(UIC-d)을 포함할 수 있다. 예시적인 실시 예에서, UFS 애플리케이션 계층(UAP-d), UFS 전송 프로토콜 계층(UTP-d), 및 UFS 인터커넥트 계층(UIC-d)의 구성은 호스트(1100)의 UFS 애플리케이션 계층(UAP-h), UFS 전송 프로토콜 계층(UTP-h), 및 UFS 인터커넥트 계층(UIC-h)과 유사하며, 대응되는 계층들 간 논리적 통신하는 구성으로 이해될 수 있으므로, 이에 대한 상세한 설명은 생략된다.
스토리지 장치(1200)의 메모리 영역 속성 관리자(MAPM-d)는 호스트(1100)로부터 수신된 쓰기 데이터가 저장될 영역을 지정하고 관리할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 호스트(1100)의 명시적 요청 또는 내부 정책에 따라 호스트(1100)로부터 수신된 쓰기 데이터는 고정된 터보 라이트 버퍼(TWB-p), 비고정된 터보 라이트 버퍼(TWB-np), 및 사용자 스토리지(UST) 중 적어도 하나의 공간에 기입될 수 있다. 메모리 영역 속성 관리자(MAPM-d)은 앞서 설명된 다양한 방식들을 기반으로 호스트(1100)로부터 수신된 쓰기 데이터가 저장될 공간을 선택하고, 선택된 공간에 쓰기 데이터를 저장할 수 있다.
스토리지 장치(1200)의 메모리 영역 관리자(MAM-d)는 앞서 설명된 바와 같이, 호스트(1100)로부터의 명시적인 요청 또는 내부 정책에 따라, 고정된 터보 라이트 버퍼(TWB-p), 비고정된 터보 라이트 버퍼(TWB-np), 및 사용자 스토리지(UST) 사이의 데이터 이동/플러쉬/마이그레이션을 제어할 수 있다.
상술된 호스트(1100) 및 스토리지 장치(1200) 각각의 계층적인 구조 및 기능은 예시적인 것이며 본 발명의 범위가 이에 한정되는 것은 아니다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (10)
- 리플레이 보호 블록 퍼지(RPMB Purge) 명령에 응답하여 퍼지 동작을 수행하는 스토리지 장치에 있어서:
적어도 하나의 불휘발성 메모리 장치; 그리고
상기 적어도 하나의 불휘발성 메모리 장치의 데이터 입출력을 제어하며, 리플레이 보호 블록(RPMB) 데이터가 저장되는 상기 적어도 하나의 불휘발성 메모리 장치의 리플레이 보호 블록(RPMB)을 추적하고, 상기 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면 가비지 컬렉션을 트리거하는 스토리지 컨트롤러를 포함하되,
상기 스토리지 컨트롤러는 쓰기 데이터를 프로그램할 로그 블록을 할당할 때, 프리 블록들 중에서 상기 리플레이 보호 블록(RPMB)에 대응하는 메모리 블록에 우선순위를 부여하는 스토리지 장치. - 제 1 항에 있어서,
상기 리플레이 보호 블록(RPMB)에는 업데이트에 의해서 무효화된 RPMB 데이터를 포함하는 메모리 블록이 포함되는 스토리지 장치. - 제 1 항에 있어서,
상기 리플레이 보호 블록(RPMB)에는 논리적으로 소거된 RPMB 데이터를 포함하지만, 물리적으로 소거되기 이전인 프리 블록으로 지정된 메모리 블록이 포함되는 스토리지 장치. - 제 1 항에 있어서,
상기 스토리지 컨트롤러는 상기 리플레이 보호 블록(RPMB)이 물리적으로 소거된 후에 추적을 중지하는 스토리지 장치. - 제 1 항에 있어서,
상기 쓰기 데이터는 RPMB 데이터에 대응하는 스토리지 장치. - 제 1 항에 있어서,
상기 스토리지 컨트롤러는:
상기 리플레이 보호 블록(RPMB)에 RPMB 식별자를 테그, 리스트, 그리고 테이블 중 적어도 하나의 형태로 부여하고 관리하는 블록 매니저; 그리고
상기 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면 상기 리플레이 보호 블록(RPMB)들 내에서 가비지 컬렉션을 수행하는 RPMB 퍼지 매니저를 포함하는 스토리지 장치. - 제 6 항에 있어서,
상기 RPMB 퍼지 매니저는 상기 가비지 컬렉션을 수행할 때, 수집된 유효 데이터를 복사하는 목적지 블록으로 무효한 RPMB 데이터를 갖는 프리 블록을 선택하는 스토리지 장치. - 제 6 항에 있어서,
상기 가비지 컬렉션은 유효 데이터가 존재하지 않는 프리 블록에 백패턴 데이터를 프로그램하는 동작을 포함하는 스토리지 장치. - 불휘발성 메모리 장치; 그리고
상기 불휘발성 메모리 장치의 메모리 블록들 중 리플레이 보호 블록(RPMB) 데이터가 저장되는 리플레이 보호 블록(RPMB)의 수가 임계치에 도달하면 가비지 컬렉션을 수행하는 스토리지 컨트롤러를 포함하는 스토리지 장치. - 리플레이 보호 블록 퍼지(RPMB Purge) 명령에 응답하여 퍼지 동작을 수행하는 스토리지 장치의 메모리 블록 관리 방법에 있어서:
리플레이 보호 블록(RPMB) 데이터가 저장되는 리플레이 보호 블록(RPMB)의 수가 임계치에 도달했는지 체크하는 단계;
상기 리플레이 보호 블록(RPMB)의 수가 상기 임계치에 도달한 경우, 프리 블록들 중에 무효 RPMB 데이터를 포함하는 어느 하나를 선택하는 단계; 그리고
상기 선택된 어느 하나의 프리 블록에 상기 리플레이 보호 블록(RPMB)들로부터 수집된 유효 데이터를 복사하는 단계를 포함하는 메모리 블록 관리 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/124,821 US20230384957A1 (en) | 2022-05-30 | 2023-03-22 | Storage device providing high purge performance and memory block management method thereof |
EP23163934.5A EP4287028A1 (en) | 2022-05-30 | 2023-03-24 | Storage device providing high purge performance and memory block management method thereof |
CN202310395197.2A CN117149052A (zh) | 2022-05-30 | 2023-04-12 | 提供高清除性能的存储设备及其存储块管理方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20220065998 | 2022-05-30 | ||
KR1020220065998 | 2022-05-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230166803A true KR20230166803A (ko) | 2023-12-07 |
Family
ID=89163716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220086464A KR20230166803A (ko) | 2022-05-30 | 2022-07-13 | 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230166803A (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430136B2 (en) | 2004-11-30 | 2008-09-30 | Siliconsystems, Inc. | Purge operations for solid-state storage devices |
US10522229B2 (en) | 2017-08-30 | 2019-12-31 | Micron Technology, Inc. | Secure erase for data corruption |
US10996883B2 (en) | 2017-10-24 | 2021-05-04 | Samsung Electronics Co., Ltd. | Storage system including host device and storage device configured to perform selective purge operation |
-
2022
- 2022-07-13 KR KR1020220086464A patent/KR20230166803A/ko unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430136B2 (en) | 2004-11-30 | 2008-09-30 | Siliconsystems, Inc. | Purge operations for solid-state storage devices |
US10522229B2 (en) | 2017-08-30 | 2019-12-31 | Micron Technology, Inc. | Secure erase for data corruption |
US10996883B2 (en) | 2017-10-24 | 2021-05-04 | Samsung Electronics Co., Ltd. | Storage system including host device and storage device configured to perform selective purge operation |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE49508E1 (en) | Memory system and method for controlling nonvolatile memory | |
JP6982468B2 (ja) | メモリシステムおよび制御方法 | |
US8700881B2 (en) | Controller, data storage device and data storage system having the controller, and data processing method | |
JP5907255B2 (ja) | Lsb及びmsbページにおける選択的データ記憶 | |
US10411024B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11747989B2 (en) | Memory system and method for controlling nonvolatile memory | |
WO2014102886A1 (en) | Information processing apparatus and cache control method | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
EP2631916A1 (en) | Data deletion method and device | |
US20100088461A1 (en) | Solid state storage system using global wear leveling and method of controlling the solid state storage system | |
US20210034536A1 (en) | Storage device, memory system comprising the same, and operating method thereof | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
US11150819B2 (en) | Controller for allocating memory blocks, operation method of the controller, and memory system including the controller | |
JP7392080B2 (ja) | メモリシステム | |
US11573732B2 (en) | Storage device, memory system comprising the same, and operation method thereof | |
WO2018041258A1 (zh) | 去分配命令处理的方法与存储设备 | |
KR20230166803A (ko) | 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법 | |
EP4287028A1 (en) | Storage device providing high purge performance and memory block management method thereof | |
US10698621B2 (en) | Block reuse for memory operations | |
KR20210142863A (ko) | 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법 | |
CN117149052A (zh) | 提供高清除性能的存储设备及其存储块管理方法 | |
JP7102482B2 (ja) | メモリシステムおよび制御方法 | |
KR20230115196A (ko) | 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 |