KR20230062556A - 플래시 메모리 로컬 퍼지 - Google Patents

플래시 메모리 로컬 퍼지 Download PDF

Info

Publication number
KR20230062556A
KR20230062556A KR1020237006871A KR20237006871A KR20230062556A KR 20230062556 A KR20230062556 A KR 20230062556A KR 1020237006871 A KR1020237006871 A KR 1020237006871A KR 20237006871 A KR20237006871 A KR 20237006871A KR 20230062556 A KR20230062556 A KR 20230062556A
Authority
KR
South Korea
Prior art keywords
local
memory blocks
mapped
purge
block list
Prior art date
Application number
KR1020237006871A
Other languages
English (en)
Inventor
바라니다란 무투쿠마란
훙 브엉
사티시 아난드
베니시 바부
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20230062556A publication Critical patent/KR20230062556A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터는 2개 이상의 파티션들(102A-102N)을 갖는 메모리 디바이스의 특정 파티션(102A)으로 한정되는 방식으로 메모리 디바이스로부터 퍼지될 수 있다. 로직 메모리 블록들은 메모리 디바이스의 제1 저장 파티션의 물리적 메모리 블록들로부터 디-맵핑될 수 있다. 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들은 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트(114)에서 나열될 수 있다. 로컬 퍼지 커맨드가 호스트 디바이스로부터 수신될 수 있다. 로컬 퍼지 커맨드에 대한 응답으로, 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부가 퍼지된다.

Description

플래시 메모리 로컬 퍼지
[0001] 2020년 9월 8일에 "RAPID PURGE"란 명칭으로 출원된 미국 가특허 출원 번호 제63/075,435호의 출원일에 대한 이익이 본원에서 청구되며, 그 미국 가특허 출원의 명세서는 그 전체가 이런 인용에 의해 본원에 통합된다.
[0002] 컴퓨팅 디바이스는 버스들 또는 다른 상호접속부들을 통해 서로 통신하는 다수의 서브시스템들을 포함할 수 있다. 이러한 컴퓨팅 디바이스는 예를 들어, 랩톱 또는 팜톱 컴퓨터(palmtop computer), 셀룰러 전화 또는 스마트폰, 휴대용 디지털 어시스턴트, 휴대용 게임 콘솔 등과 같은 "PCD"(portable computing device)일 수 있다. 통신 서브시스템들은 동일한 집적 회로 칩 내에 또는 상이한 칩들에 포함될 수 있다. "시스템-온-어-칩(system-on-a-chip)" 또는 "SoC"는 시스템-레벨 기능성을 제공하기 위해 다수의 컴포넌트들을 통합하는 하나의 그러한 칩의 예이다.
[0003] 예를 들어, SoC는 "CPU"(central processing unit)들, "GPU"(graphics processing unit)들, "DSP"(digital signal processor)들, 및 "NPU"(neural processing unit)들과 같은 하나 이상의 타입들의 프로세서들을 포함할 수 있다. SoC는 다른 서브시스템들, 이를테면, 무선 접속을 제공하는 트랜시버 또는 "모뎀", 메인 또는 시스템 메모리, 하나 이상의 캐시 메모리들 등을 포함할 수 있다. 일부 서브시스템들은 메모리와의 메모리 트랜잭션들을 수행할 수 있는 프로세싱 엔진들을 포함할 수 있다. PCD들 및 다른 컴퓨팅 디바이스들의 시스템 메모리는 일반적으로 "DRAM"(dynamic random access memory)을 포함한다. DRAM에 추가하여, 또는 DRAM에 대해 대안적으로, 컴퓨팅 디바이스는 비휘발성 메모리, 이를테면, 플래시 메모리를 포함할 수 있다.
[0004] 컴퓨팅 디바이스는, 이를테면 사용자가 파일의 삭제를 요청할 때, 애플리케이션 프로그램이 자신이 더 이상 요구하지 않는 임시 데이터를 삭제할 때 등에 데이터를 "삭제"할 수 있다. 그럼에도 불구하고, 이러한 방식으로 데이터를 삭제하는 것은 메모리의 저장소로부터 데이터를 물리적으로 제거하지 않는다. 오히려, 그러한 방식으로 데이터를 삭제하는 것은 단지 메모리 제어기로 하여금, 데이터가 메모리에 물리적으로 저장되는 위치들을 식별하는 물리적 어드레스들로부터의 데이터를 호스트(예를 들어, 프로세싱 엔진)가 식별하게 하는 논리적 어드레스들을 디-맵핑하게 한다. "가비지 수집"으로 알려진 프로세스와 함께 이러한 디-맵핑은 물리적 위치들이 재사용될 수 있게 한다. 그럼에도 불구하고, 해커 또는 다른 당사자가 삭제된 또는 달리 디-맵핑된 데이터를 (예를 들어, 삭제 후 그러나 가비지 수집 전의 윈도우 동안) 리트리브하는 것이 가능할 수 있다.
[0005] 기밀 또는 다른 민감한 데이터가 통상적으로 PCD들 및 다른 컴퓨팅 디바이스들의 메모리들에 저장되기 때문에, 디-맵핑된 데이터의 리트리벌을 방지하는 것이 바람직하다. "퍼지"는, 데이터가 리트리브되는 것을 방지하는 방식으로 메모리로부터 데이터를 물리적으로 제거하는 것을 지칭하기 위해 통상적으로 사용되는 용어이다. 플래시 메모리를 퍼지하는 것은 어려운데, 그 이유는 기록-평준화 및 가비지 수집으로 알려진 특징들이 통상적으로 데이터의 다수의 사본들이 다양한 물리적 "블록들"에 대해 분산되는 것을 초래하기 때문이다. 플래시 메모리는 호스트가 플래시 메모리 디바이스에 퍼지 커맨드를 전송함으로써 퍼지될 수 있다. 퍼지 커맨드에 대한 응답으로, 플래시 메모리 디바이스는 플래시 메모리 디바이스에서 모든 디-맵핑된 블록들을 퍼지할 수 있다. 플래시 메모리는 또한, 메모리의 모든 블록들이 디-맵핑되고, 디-맵핑된 블록들에 대한 퍼지 동작이 후속되는 소위 "공장 리셋"을 수행함으로써 퍼지될 수 있다. 이러한 방식으로 플래시 메모리를 퍼지하는 것은 상당한 양의 시간이 걸릴 수 있으며, 이는 사용자를 불편하게 하거나 그렇지 않으면 바람직하지 않을 수 있다.
[0006] 메모리 디바이스로부터 데이터를 퍼지하기 위한 시스템들, 방법들, 컴퓨터 판독가능 매체들, 및 다른 예들이 개시된다.
[0007] 메모리 디바이스로부터의 데이터를 퍼지하기 위한 예시적인 방법은, 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하는 단계를 포함할 수 있다. 예시적인 방법은 또한 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하는 단계를 포함할 수 있다. 예시적인 방법은 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하는 단계를 더 포함할 수 있다. 예시적인 방법은 또한 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하는 단계를 더 포함할 수 있다.
[0008] 메모리 디바이스로부터의 데이터를 퍼지하기 위한 예시적인 시스템은 데이터 저장 매체 및 데이터 저장 매체에 커플링된 제어기를 포함할 수 있다. 제어기는 데이터 저장 매체의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하도록 구성될 수 있다. 제어기는 또한 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하도록 구성될 수 있다. 제어기는 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하도록 추가로 구성될 수 있다. 제어기는 또한 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하도록 추가로 구성될 수 있다.
[0009] 메모리 디바이스로부터의 데이터를 퍼지하기 위한 다른 예시적인 시스템은, 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하기 위한 수단을 포함할 수 있다. 예시적인 시스템은 또한 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하기 위한 수단을 포함할 수 있다. 예시적인 시스템은 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하기 위한 수단을 더 포함할 수 있다. 예시적인 시스템은 또한 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하기 위한 수단을 더 포함할 수 있다.
[0010] 메모리 디바이스로부터의 데이터를 퍼지하기 위한 예시적인 컴퓨터 판독가능 매체는 컴퓨터 실행가능 형태의 명령들이 저장된 비일시적 컴퓨터 판독가능 매체를 포함할 수 있다. 명령들은 프로세서에 의해 실행될 때, 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하도록 프로세서를 구성할 수 있다.
[0011] 명령들은 또한 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하도록 프로세서를 구성할 수 있다. 명령들은 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하도록 프로세서를 추가로 구성할 수 있다. 명령들은 또한 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 추가로 퍼지할 수 있다.
[0012] 도면들에서, 달리 표시되지 않는 한, 유사한 참조 번호들은 다양한 도면들 전반에 걸쳐 유사한 부분들을 지칭한다. "102A" 또는 "102B"와 같은 문자 부호 지정들을 갖는 참조 번호들의 경우, 문자 부호 지정들은 동일한 도면에 존재하는 2개의 유사한 부분들 또는 엘리먼트들을 구별할 수 있다. 참조 번호들에 대한 문자 부호 지정들은, 참조 번호가 모든 도면들에서 동일한 참조 번호를 갖는 모든 부분들을 포함하도록 의도될 때 생략될 수 있다.
[0013] 도 1은 예시적인 실시예들에 따른 메모리 디바이스에 대한 메모리 맵이다.
[0014] 도 2는 예시적인 실시예들에 따른, 메모리 디바이스로부터 데이터를 퍼지하기 위한 시스템의 블록도이다.
[0015] 도 3은 예시적인 실시예들에 따른, 메모리 디바이스로부터 데이터를 퍼지하기 위한 방법의 흐름도이다.
[0016] 도 4는 예시적인 실시예들에 따른 키 래핑 방식 도면이다.
[0017] 도 5는 예시적인 실시예들에 따라, 메모리 디바이스로부터 데이터를 퍼지하기 위한 다른 방법의 흐름도이다.
[0018] 도 6은 예시적인 실시예들에 따른 키 계층구조 도면이다.
[0019] 도 7은 예시적인 실시예들에 따른 휴대용 컴퓨팅 디바이스의 블록도이다.
[0020] 도 8은 예시적인 실시예들에 따른 로컬 퍼지 커맨드의 개념적인 예시이다.
[0021] "예시적인"이라는 단어는, "예, 예증 또는 예시로서 기능하는" 것을 의미하도록 본 명세서에서 사용된다. "예시의"이라는 단어는 본 명세서에서 "예시적인"과 동의어로 사용될 수 있다. 본 명세서에서 "예시적인" 것으로 설명되는 임의의 양상은 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석될 필요는 없다.
[0022] 도 1에 예시된 바와 같이, 메모리 맵(100)은 메모리 디바이스(도시되지 않음) 내의 저장 공간을 표현한다. 메모리 맵(100)은 제1 파티션(102A), 제2 파티션(102B) 등 내지 제N 파티션(102N)과 같은 파티션들(102)을 포함할 수 있다. "제1", "제2" 등의 용어들은 본 명세서에서 별개의 엘리먼트들을 참조하기 위한 보조로서만 사용되며, 임의의 위치, 순서, 시퀀스 등을 의미하는 것으로 해석되어서는 안 된다. 임의의 수(N)의 파티션들(102)이 있을 수 있다. 메모리 맵(100)은 도 1에서 개념적인 방식으로 도시되며, 실제 메모리 어드레스들을 표시하도록 의도되지 않는다.
[0023] 데이터는 본 명세서에서 블록들(104)로 지칭될 수 있는 위치들의 파티션들(102)에 저장될 수 있다. 즉, 각각의 블록(104)은 그 블록(104)에 데이터를 기록(즉, 그에 데이터를 물리적으로 저장)하거나 그로부터 데이터를 판독(즉, 그로부터 데이터를 물리적으로 리트리브)하는 데 사용될 수 있는 "PBA"(physical block address)를 갖는다. 예시된 블록들(104)은 단지 예들로서 의도되며, 파티션들(102) 중 임의의 파티션에 임의의 수의 블록들(104)이 있을 수 있다.
[0024] 메모리 맵(100)은 또한 제1 내지 제N 파티션들(102A-102N)의 블록들(104)의 관리에 관련된 영역들: 즉, 글로벌 사용 블록 리스트(106), 글로벌 가비지 블록 리스트(108), 및 글로벌 프리 블록 리스트(110)를 포함할 수 있다. 블록 "관리"는, 이를테면, 데이터가 블록(104)에 저장될 때, 데이터가 삭제된 후 등에 블록들(104)이 데이터 저장을 위해 이용가능하게 될 수 있게 하는 프로세스들을 지칭한다. 블록 관리는 또한 블록 어드레스들과 같이 블록들(104)을 식별하는 정보를 리스트들(106-110) 중 하나로부터 리스트들(106-110) 중 다른 하나로 이동시키는 것을 수반한다. 아래에서 설명되는 이유들로, 사용된 블록들은 또한 맵핑된 블록들로 지칭될 수 있고, 가비지 블록들은 또한 디-맵핑된 블록들로 지칭될 수 있다.
[0025] 도 1 및 도 2에 예시된 예시적인 실시예에서, 메모리 맵(100)은 제1 파티션(102A)만의 블록들(104)의 관리와 관련된 영역들: 즉, 로컬 사용 블록 리스트(112) 및 로컬 가비지 블록 리스트(114)를 더 포함할 수 있다. 로컬 프리 블록 리스트(116)가 또한 포함될 수 있다. 즉, 글로벌 사용 블록 리스트(106), 글로벌 가비지 블록 리스트(108), 및 글로벌 프리 블록 리스트(110)는 예시된 실시예에서 파티션들(102A-102N) 모두와 연관되지만, 로컬 사용 블록 리스트(112), 로컬 가비지 블록 리스트(114), 및 로컬 프리 블록 리스트(116)는 예시된 실시예에서 오직 제1 파티션(102A)과 연관된다. 그럼에도 불구하고, 다른 실시예들에서, 그러한 메모리 맵은 로컬 프리 블록 리스트(116)를 생략하고 대신에 글로벌 프리 블록 리스트(110)를 사용할 수 있다. 잠재적인 문제는, 로컬 프리 블록 리스트(116)를 활용하는 실시예들에서, 아래에서 설명되는 로컬 퍼지 기능의 과도한 사용이 메모리 위치들을 조기에 마모시킬 수 있는 반면, 마모 레벨링은, 로컬 프리 블록 리스트(116)를 생략하고 글로벌 프리 블록 리스트(110)만을 활용하는 실시예들에서 그러한 마모를 완화시킬 수 있다는 것이다.
[0026] 도 2에 예시된 바와 같이, 시스템(200)에서, 플래시 메모리 디바이스(202)는 호스트 시스템(204)에 커플링된다. 호스트 시스템(204)은 예를 들어, 컴퓨팅 디바이스 또는 그의 일부, 이를테면 프로세서 서브시스템, 프로세싱 엔진 등일 수 있다.
[0027] 예시된 실시예에서, 플래시 메모리 디바이스(202)는 저장 블록 관리 특징부들을 갖고, 따라서, 통상적으로 "관리되는" 메모리 디바이스로 지칭되는 타입일 수 있다. 관리되는 메모리 디바이스들의 예들은 "UFS"(Universal Flash Storage), "eMMC"(Embedded Multi-media Card), "NVMe"(Non-volatile Memory Express) 등을 포함한다. 따라서, 시스템의 다른 실시예들에서, 메모리 디바이스는 전술한 또는 다른 비휘발성 관리되는 메모리 타입들 중 임의의 타입일 수 있다. 플래시 메모리 디바이스(202)는 제어기(206)를 포함할 수 있다. 제어기(206)는, 예를 들어 저장 블록 관리를 포함하는, 솔리드-스테이트 저장(예를 들어, 플래시 메모리) 드라이브의 메모리 제어기와 연관된 기능들을 제공할 수 있다. 제어기(206)는 플래시 메모리 드라이브의 메모리 제어기와 연관된 종래의 기능들, 이를테면, 데이터의 기록 및 판독에 관한 양상들뿐만 아니라, 디-맵핑된 블록들의 퍼지와 관련하여 아래에서 설명되는 기능들을 수행하도록 구성될 수 있다. 당업자에 의해 잘 이해되는 플래시 메모리 디바이스(202)의 종래의 양상들은 본 명세서에서 상세히 설명되지 않는다.
[0028] 플래시 메모리 디바이스(202)는 또한 플래시 데이터 저장 매체(208)를 포함할 수 있다. 당업자에 의해 이해되는 바와 같이, 플래시 데이터 저장 매체(208)는 (명확성을 목적으로 도시되지 않은) 하나 이상의 다이들을 포함할 수 있으며, 각각의 다이는 하나 이상의 평면들을 갖고, 각각의 다이는 일부 수(통상적으로는 수천 정도이지만 잠재적으로는 임의의 수)의 블록들을 갖고, 각각의 블록은 일부 수(통상적으로는 수십 정도이지만 잠재적으로는 임의의 수)의 페이지들을 갖는다.
[0029] 데이터는 호스트 시스템(204)의 개시 시에, 즉, 호스트 시스템(204)에 의해 발행된 기록 요청(커맨드)에 대한 응답으로 플래시 메모리 디바이스(202)에 저장될 수 있다. 기록 커맨드는, 호스트 시스템(204)이 데이터가 저장되도록 요청하는 "논리적" 어드레스 공간 또는 호스트 내의 위치들을 식별하는 하나 이상의 "LBA"(logical block address)들을 포함한다. 데이터가 플래시 메모리 디바이스(202)에 저장될 때, 제어기(206)는 각각의 LBA와 하나 이상의 PBA들 사이에 맵핑을 생성한다. (블록(104)의) 이러한 맵핑은 제어기(206)가 (예를 들어, 소프트웨어 또는 펌웨어에 의해) 구성되는 "FTL"(Flash Translation Layer)(212)과 연관된 맵핑 테이블(210)에 저장될 수 있다. 맵핑된 블록(104)은 또한 "사용된" 블록(104)으로 지칭될 수 있는데, 즉, 블록(104)은 사용중이다. 제어기(206)는 각각의 맵핑된 블록(104)의 LBA를 글로벌 사용 블록 리스트(106)(도 1)에 추가할 수 있다.
[0030] 플래시 메모리 디바이스(202)는 또한, 제어기(206)의 부분들을 포함할 수 있는 호스트 인터페이스(214) 및 플래시 물리적 인터페이스(216)를 가질 수 있다. 제어기(206)의 제어 하에서, 기록 요청의 대상인 데이터는 맵핑의 PBA들에 대응하는 위치들에서 저장 매체(208)에 저장될 수 있다. 제어기(206)의 제어 하에(예를 들어, 호스트 인터페이스(214) 및 플래시 물리적 인터페이스(216)를 통해) 데이터가 호스트 시스템(204)으로부터 저장 매체(208)로 전달되어 그에 에 저장될 수 있는 방식의 세부사항들은 당업자에 의해 잘 이해되고, 본 명세서에서 설명되지 않는다.
[0031] 호스트 시스템(204)은 LBA들을 사용하여 판독 및 기록 커맨드들의 대상인 데이터에 어드레스할 수 있다. 명확성을 위해 도시되지 않았지만, 동작 중인 애플리케이션 프로그램들 또는 다른 소프트웨어의 동작에 기초하여 LBA들을 할당 및 할당해제하는 호스트 시스템(204)의 부분은 통상적으로 파일 시스템으로 지칭된다. 파일 시스템은 호스트 시스템(204)의 운영 시스템의 일부일 수 있다.
[0032] 통상적으로, 플래시 저장 매체(208)는 덮어쓰기 가능(over-writeable)하지 않다. 오히려, 데이터는 소거된 블록(104)(도 1)에만 저장될 수 있다. 소거된 블록은 또한, "프리" 상태에 있는 것으로 지칭될 수 있다. 소거된 블록들(104)은 글로벌 프리 리스트(110)(도 1)에 나열될 수 있다. 플래시 저장 매체가 덮어쓰기 가능한 실시예들에서, 블록들은, 블록들을 먼저 소거하지 않고 글로벌 프리 리스트(110)에 나열될 수 있다. 기록 커맨드에 대한 응답으로 위에서 설명된 맵핑을 생성할 때, 제어기(206)는 글로벌 프리 리스트(110)로부터 PBA를 선택할 수 있다.
[0033] 당업자에 의해 이해되는 바와 같이, 저장 매체(208) 내의 물리적 위치들은 제한된 수명을 갖는다. 즉, 일부 수의 액세스들(예를 들어, 소거 및 프로그램 플래시 메모리 커맨드들) 후에, 각각의 위치는 그것이 더 이상 적절히 기능하지 않을 수 있는 정도로 마모될 것이다. 이러한 "마모" 효과를 완화시키기 위해, 플래시 메모리 제어기는 마모 레벨링으로 알려진 프로세스를 실행할 수 있다. 마모 레벨링에 따라, 제어기(206)는 일부 블록들(104)이 다른 블록들보다 더 많이 마모되는 것을 피하기 위해 모든 블록들(104)에 걸쳐 데이터를 균등하게 분배하려고 시도할 수 있다. 마모-레벨링은, 위에서 설명된 맵핑과 같이, FTL(212)의 다른 기능이다.
[0034] 플래시 메모리 디바이스(202)에 저장된 데이터는 호스트 시스템(204)의 관점에서 삭제될 수 있다. 이러한 방식으로 데이터를 삭제하기 위해, 호스트 시스템(204)은 플래시 메모리 디바이스(202)에 기록 또는 소거 커맨드를 발행할 수 있다. 기록 또는 소거 커맨드는 호스트 시스템(204)이 데이터가 삭제되도록 요청하는 위치들을 식별하는 하나 이상의 LBA들을 포함할 수 있다. 기록 또는 소거 커맨드에 대한 응답으로, 제어기(206)는 하나 이상의 PBA들과 LBA들 사이의 맵핑들을 맵핑 테이블(210)로부터 제거할 수 있다. 명확화를 위해, 제어기(206)로 하여금 그러한 맵핑들을 제거하게 하는, 호스트 시스템(204)에 의해 발행된 커맨드(예를 들어, 기록 또는 소거 커맨드)는 본 개시내용에서 "디-맵핑(de-map)" 커맨드로 지칭될 수 있다. 제어기(206)는 또한, 각각의 디-맵핑된 블록(104)(도 1)의 PBA를 글로벌 사용 블록 리스트(106)로부터 글로벌 가비지 블록 리스트(108)로 이동시킬 수 있다.
[0035] 통상적으로 가비지 수집으로 지칭되는 프로세스에서, 제어기(206)는 때때로, 글로벌 사용 블록 리스트(106)에 나열된 블록들(104) 내의 데이터(페이지들)를 다른 블록들(104)로 이동시키고, 그에 따라 맵핑 테이블(210)을 업데이트할 수 있다. 데이터의 그러한 이동의 목표는, 블록들(104) 중 일부를 사용으로부터 제거하는 것이며, 그에 따라, 더 이상 사용되지 않는 블록들(104)은 소거되고, 이어서 새로운 데이터를 저장하기 위해 재사용될 수 있다. 블록(104)이 더 이상 사용 중인 데이터를 포함하지 않을 때, 제어기(206)는 그 블록(104)의 PBA를 글로벌 사용 블록 리스트(106)로부터 글로벌 가비지 블록 리스트(108)로 이동시킬 수 있다. 제어기(206)는 글로벌 가비지 블록 리스트(108)에 나열된 블록들(104)을 소거하고, 소거된 블록들(104)의 PBA들을 글로벌 프리 블록 리스트(110)로 이동시킬 수 있다. 가비지 수집은, 위에서 설명된 맵핑과 같이, FTL(212)의 다른 기능이다. 제어기(206)는 배경에서, 즉, 호스트 시스템(204)이 플래시 메모리 디바이스(202)와 상호작용하지 않는 시간들에 가비지 수집을 수행할 수 있다.
[0036] 보안상의 이유들로, 저장 매체(208)로부터의 디-맵핑된 데이터(즉, 무효이거나 더 이상 사용되지 않는 데이터)의 리트리벌을 방지하는 것이 바람직할 수 있다. 위에서 설명된 디-맵핑은 호스트 시스템(204)이 (LBA들에 의해 어드레스된) 데이터에 액세스하는 것을 방지하지만, 이러한 디-맵핑은 저장 매체(208) 내의 데이터의 물리적 상태에 영향을 미치지 않는다. 아래에서 설명되는 퍼지-관련 특징들이 없으면, 해커 또는 다른 당사자가, 예를 들어 소프트웨어 도구(즉, 호스트 시스템(204)의 파일 시스템 이외의 소프트웨어)를 사용하여 저장 매체(208)로부터 디-맵핑된 데이터를 리트리브하는 것이 가능할 수 있다.
[0037] "새니타이징(sanitizing)", "와이핑(wiping)" 등과 같은 용어들은 통상적으로, 데이터가 리트리브되는 것을 방지하기 위해 메모리로부터 디-맵핑된 데이터의 물리적 징후들을 제거하는 것을 지칭한다. 플래시 메모리 상에서 그러한 동작들을 수행하는 것은 난제일 수 있는데, 그 이유는 다른 이유들 중에서도, 위에서 설명된 마모 레벨링, 가비지 수집 등의 특징들의 동작이, 동일한 데이터의 다수의 사본들이 저장 매체(208) 주위에 분배되는 것을 초래할 수 있기 때문이다.
[0038] 관리되는 플래시 디바이스들, 이를테면 UFS 디바이스들은 퍼지 커맨드를 구현할 수 있으며, 이는 퍼지 커맨드를, 아래에서 설명되는 로컬 퍼지 커맨드와 구별하기 위해 글로벌 퍼지 커맨드로서 본 명세서에서 지칭될 수 있다. 호스트 시스템(204)에 의해 발행된 글로벌 퍼지 커맨드에 대한 응답으로, 제어기(206)는 모든 디-맵핑된 블록들(104)을 소거할 수 있다. 관리되는 플래시 디바이스들은 또한 포맷 유닛 커맨드를 구현할 수 있다. 호스트 시스템(204)에 의해 발행된 포맷 유닛 커맨드에 대한 응답으로, 제어기(206)는 (예를 들어, 소거 커맨드에 대한 응답으로) 모든 디-맵핑된 블록들(104)을 소거할 수 있고, 이어서, 모두 0들, 모두 1들, 난수들 등과 같은 다양한 데이터 값들을 소거된 블록들(104)에 기록하여 원래 저장된 데이터의 임의의 나머지 물리적 징후들을 모호하게 할 수 있다. 제어기(206)는 퍼지된 블록들(104)의 PBA들을 글로벌 가비지 블록 리스트(108)로부터 글로벌 프리 블록 리스트(110)로 이동시킬 수 있다.
[0039] 글로벌 가비지 블록 리스트(108)가 많은 디-맵핑된 블록들(104)을 포함할 때, 글로벌 퍼지 커맨드 또는 포맷 유닛 커맨드에 대한 응답으로 위에서 설명된 방식으로 이들을 퍼지하는 것은 시간-소모적일 수 있다. 위에서 설명된 바와 같은 글로벌 퍼지 동작은, 예를 들어, 대략 몇 시간의 시간량이 걸릴 수 있다. 글로벌 퍼지 동작보다 빠른 퍼지 동작을 제공하기 위해, 디바이스(202)에는, 위에서 설명된 글로벌 퍼지 특징에 추가하여 또는 그에 대한 대안으로, 다음의 로컬 퍼지 특징이 제공될 수 있다.
[0040] "특수" 또는 "로컬" 파티션으로 지칭될 수 있는 파티션들(102) 중 적어도 하나는 다른 파티션들(102)과 상이한 하나 이상의 특성들을 가질 수 있다. 예시된 실시예에서, 제1 파티션(102A)은, 굵은 라인의 경계에 의해 도 1에 도시된 바와 같이, 특수 또는 로컬 파티션일 수 있다. 예시된 실시예에서, 제1 파티션(102A)의 특수한 특성들은 로컬 사용 블록 리스트(112), 로컬 가비지 블록 리스트(114), 및 로컬 프리 블록 리스트(116)를 포함한다. 위에서 언급된 바와 같이, 일부 실시예들에서, 로컬 프리 블록 리스트(116)는 생략될 수 있다. 예시된 실시예에서, 제1 파티션(102A) 이외의 파티션들(102)은 그러한 로컬 사용 블록 리스트, 로컬 가비지 블록 리스트 또는 로컬 프리 블록 리스트를 포함하지 않는다.
[0041] 예시된 실시예의 제1 파티션(102A)과 같은 특수 또는 로컬 파티션은 예를 들어, "RPMB"(Replay-Protected Memory Block)"일 수 있다. RPMB는 인증된-액세스 파티션의 타입이다. 엔티티(예를 들어, 호스트 시스템(204))는 엔티티의 인증이 성공적인 경우에만 RPMB와 같은 인증된-액세스 파티션에 대한 액세스를 승인받을 수 있다. 그럼에도 불구하고, 다른 실시예들에서, 특수 파티션은 저장 매체의 임의의 파티션(때때로 또한, 로직 유닛으로 지칭됨)일 수 있다.
[0042] 로컬 퍼지 특징을 제공하기 위해, 제어기(206)는, 제어기(206)가 글로벌 퍼지 커맨드에 응답하는 위에서 설명된 방식과 유사한 방식으로, 호스트 시스템(204)으로부터 수신된 로컬 퍼지 커맨드에 응답하도록 (예를 들어, 소프트웨어 또는 펌웨어에 의해) 구성될 수 있다. 그러나, 예시적인 실시예에서, 글로벌 가비지 블록 리스트(108)에 나열된 모든 블록들(104)(도 1)을 퍼지하는 글로벌 퍼지 동작과 달리, 로컬 퍼지 동작은 로컬 가비지 블록 리스트(114)에 나열된 블록들(104)만을 퍼지한다. 따라서, 이러한 예시적인 실시예에서, 제1 내지 제N 파티션들(102A-102N) 중 임의의 파티션에서 블록들(104)을 퍼지할 수 있는 글로벌 퍼지 동작과 달리, 로컬 퍼지 동작은 제1 파티션(102A)에서만 블록들(104)을 퍼지할 수 있고, 제2 내지 제N 파티션들(102B-102N) 내의 임의의 블록들을 퍼지하지 않을 수 있다. 로컬 퍼지 동작은 제어기(206)가 로컬 가비지 블록 리스트(114)에 나열된 모든 블록들(104)을 소거하는 것을 포함할 수 있다. 로컬 퍼지 동작은 또한 제어기가 모두 0들, 모두 1들, 난수들 등과 같은 다양한 데이터 값들을 그러한 소거된 블록들(104)에 기록하여 원래 저장된 데이터의 임의의 나머지 물리적 징후들을 모호하게 할 수 있다. 제어기(206)는 퍼지된 블록들(104)의 PBA들을 로컬 가비지 블록 리스트(114)로부터 글로벌 프리 블록 리스트(110)로(또는 일부 실시예들에서는 로컬 프리 블록 리스트(116)로) 이동시킬 수 있다. 로컬 퍼지 동작은, 로컬 퍼지 동작이 특수 파티션(예를 들어, 이 예시적인 실시예에서는 제1 파티션(102A))으로 한정되기 때문에, 글로벌 퍼지 동작보다 상당히 더 짧은 시간량 내에 완료될 수 있다.
[0043] 제어기(206)는, 제어기(206)가 일반적으로 파티션들(102)에서 가비지 수집을 수행할 수 있는 위에서 설명된 방식과 유사한 방식으로 제1 파티션(102A)에서 가비지 수집을 수행하도록 구성될 수 있다. 즉, 제어기(206)는 때때로, 로컬 사용 블록 리스트(112)에 나열된 블록들(104)의 데이터(페이지들)를 제1 파티션(102A)의 다른 블록들(104)로 이동시키고 그에 따라 맵핑 테이블(210)을 업데이트하며, 그 목적은 제1 파티션(102A)의 블록들(104) 중 일부를 사용으로부터 제거하는 것이다. 로컬 사용 블록 리스트(112)에 나열된 블록(104)이 더 이상 사용 중인 데이터를 포함하지 않을 때, 제어기(206)는 그 블록(104)의 PBA를 로컬 사용 블록 리스트(112)로부터 로컬 가비지 블록 리스트(114)로 이동시킬 수 있다. 제어기(206)는 로컬 가비지 블록 리스트(114)에 나열된 블록들(104)을 소거하고, 그러한 소거된 블록들(104)의 PBA들을 글로벌 프리 블록 리스트(110)로(또는 일부 실시예들에서는 로컬 프리 블록 리스트(116)로) 이동시킬 수 있다.
[0044] 가비지 수집 및 퍼지 동작들 둘 모두가 블록들(104)을 소거하는 것을 수반하지만, 가비지 수집은 통상적으로, 디-맵핑된 블록들(104)의 일부만이 한 번에 소거되게 한다는 것을 주목한다. 대조적으로, 퍼지 동작은 모든 디-맵핑된 블록들(104)을 소거할 수 있고: 글로벌 퍼지 동작은 글로벌 가비지 블록 리스트(108)에 나열된 모든 디-맵핑된 블록들(104)을 소거할 수 있고, 로컬 퍼지 동작은 로컬 가비지 블록 리스트(114)에 나열된 디-맵핑된 블록들(104)만을 소거할 수 있다.
[0045] 제1 파티션(102A)에 대한 기록 동작들은, 제1 파티션(102A)과 연관된 블록 관리 동작들이 글로벌 사용 블록 리스트(106) 및 글로벌 가비지 블록 리스트(108) 대신에 로컬 사용 블록 리스트(112) 및 로컬 가비지 블록 리스트(114)를 각각 사용할 수 있다는 것을 제외하고는 파티션들(102) 중 임의의 파티션에 대해 위에서 설명된 방식과 유사한 방식으로 수행될 수 있다. 일부 실시예들에서, 로컬 프리 블록 리스트(116)는 글로벌 프리 블록 리스트(110) 대신에 또는 그에 추가하여 사용될 수 있다. 따라서, 호스트 시스템(204)으로부터 기록 요청(커맨드)을 수신하는 것에 대한 응답으로, 제어기(206)는 (PBA에 의해 식별된 바와 같이) 글로벌 프리 블록 리스트(110)에 나열된 하나 이상의 블록들(104)을 선택하고, 각각의 LBA와 하나 이상의 PBA들 사이의 맵핑을 생성하고, 하나 이상의 맵핑들을 맵핑 테이블(210)에 저장하고, 기록 요청의 대상인 데이터를 저장 매체(208)에 저장하고, 각각의 맵핑된 블록(104)의 PBA를 로컬 사용 블록 리스트(112)에 추가할 수 있다. 위에서 언급된 바와 같이, 예시적인 실시예에서, 전제 조건 또는 제1 파티션(102A)에서의 기록 동작 또는 다른 액세스를 완료하는 조건은 호스트 시스템(204)의 성공적인 인증이다. 그럼에도 불구하고, 다른 실시예들에서, 특수 파티션은 인증된-액세스 블록이 아닐 수 있으며, 따라서 이러한 다른 실시예들에서 호스트 시스템이 특수 파티션에 액세스하는 데 인증이 요구되지 않을 수 있다.
[0046] 도 3에서, 2개 이상의 저장 파티션들을 갖는 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법(300)이 흐름도 형태로 예시된다. 블록(302)에 의해 표시된 바와 같이, LBA들은 메모리 디바이스의 저장 파티션의 물리적 메모리 블록들로부터 디-맵핑될 수 있다. 이 저장 파티션은 예를 들어, 도 2와 관련하여 위에서 설명된 바와 같은 특수 파티션(예를 들어, 제1 파티션(102A))일 수 있다. 블록(304)에 의해 표시된 바와 같이, 그 저장 파티션의 디-맵핑된 물리적 메모리 블록들은 그 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 나열될 수 있다. 블록(306)에 의해 표시된 바와 같이, 로컬 퍼지 커맨드가 호스트 디바이스로부터 수신될 수 있다. 블록(308)에 의해 표시된 바와 같이, 로컬 퍼지 커맨드에 대한 응답으로, 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들만이 퍼지될 수 있다. 즉, 글로벌 디-맵핑된 블록 리스트와 같은 임의의 다른 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들은 이러한 로컬 타입의 퍼지 커맨드에 대한 응답으로 퍼지되지 않을 수 있다. 일부 실시예들에서, 방법(300)은, 메모리 디바이스의 모든 파티션들을 커버하는 글로벌 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들이 퍼지될 수 있게 하는 방법(도시되지 않음)에 추가하여 제공될 수 있다. 블록들(302-308)은 방법(300)의 예를 통해 독자를 안내하는 데 도움이 되는 예시적인 순서로 위에서 설명되었지만, 블록들(302-308)과 관련하여 위에서 설명된 액션들은 동일하거나 유사한 결과들을 생성하는 임의의 순서로 발생할 수 있다는 것이 이해되어야 한다.
[0047] 편리하게, 로컬 퍼지 특징은 사실상, 제2 내지 제N 파티션들(102B-102N)에 저장된 암호화된 데이터를 퍼지하는 데 사용될 수 있다. 이러한 특징은 때때로 암호화 퍼지로 지칭된다. 로컬 퍼지 동작이 실제로는 제1 파티션(102A)의 데이터 블록들(104)만을 퍼지할 수 있지만, 제1 파티션(102A)의 데이터 블록들(104)이 제2 내지 제N 파티션들(102B-102N) 중 임의의 파티션의 데이터 블록들(104)에 저장된 암호화된 데이터와 연관된 키 정보를 저장하는 데 사용되는 실시예에서, 키 정보를 퍼지하는 것은 사실상 키 정보와 관련하여 암호화된 데이터를 퍼지한다. 도 1에서, 제1 파티션(102A)의 다른 예시적인 데이터 블록들(104)의 키 정보에 의한 제2 내지 제N 파티션들(102B-102N)의 일부 예시적인 데이터 블록들(104)의 데이터의 암호화는 파선 화살표들에 의해 개념적으로 표시된다. 암호화 키들은 때때로 키 래핑으로 지칭되는 기법에 의해 암호화된 형태로 저장될 수 있다.
[0048] 도 4에 예시된 바와 같이, 키 래핑 방식(400)은 몇몇 타입들의 키들 및 몇몇 동작들 또는 기능들을 수반할 수 있다. 키 래핑 방식(400)은 호스트 시스템(204)(도 2)에서 제공될 수 있다. 키 유도 기능(402)은 시드(403)(즉, 랜덤으로 생성된 숫자), 고유 하드웨어 키(404) 및 사용자 크리덴셜들(또는 콘텍스트)을 포함하는 입력들에 따라 동작하여 키 래핑 키(406)를 생성할 수 있다. 키 생성기(408)는 (랜덤) 저장 암호화 키(410)를 생성할 수 있다. 키 래핑 기능(412)은 키 래핑 키(406) 및 저장 암호화 키(410)를 포함하는 입력들에 따라 동작하여 래핑된 저장 암호화 키(414)를 생성할 수 있다. 래핑된 저장 암호화 키(414) 및 시드(403)는 때때로 바이너리 대형 객체 또는 "블롭(blob)"으로 지칭되는 형태로 블록(104)에 저장될 수 있다. 위에서 참조된 "키 정보"는 래핑된 저장 암호화 키(414), 그 키(414)에 대한 시드(403), 또는 암호화된 데이터의 복구를 가능하게 할 수 있는 다른 정보를 포함할 수 있다. 예시적인 실시예에서, 파티션들(102B-102N)의 블록들(104)에 저장된 모든 데이터는 제1 파티션(102A)의 블록들(104)에 저장된 (예를 들어, 키 블롭들의 형태의) 키들에 의해 암호화될 수 있다. 그러한 실시예에서, 키 정보를 포함하는 제1 파티션(102A)을 퍼지하는 것은, 사실상(또는 암호화 관점에서) 파티션들(102A-102N) 전부를 퍼지하는데, 이는, 키 정보 없이는 데이터가 리트리브될 수 없기 때문이다. 위에서 언급된 바와 같이, 제1 파티션(102A)만을 퍼지하는 것은 파티션들(102A-102N) 전부를 퍼지하는 것보다 상당히 더 빠를 수 있다.
[0049] 도 5에서, 2개 이상의 저장 파티션들을 갖는 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법(500)이 흐름도 형태로 예시된다. 블록(502)에 의해 표시된 바와 같이, 데이터는 암호화된 데이터 유닛들을 형성하기 위해 대응하는 키들을 사용하여 암호화될 수 있다. 블록(504)에 의해 표시된 바와 같이, 키 정보는 제1 저장 파티션에 저장될 수 있다. 이러한 제1 저장 파티션은, 예를 들어, 메모리 디바이스의 일부 다른(제2, 제3 등의) 저장 파티션과 대조적으로, 도 2와 관련하여 위에서 설명된 바와 같은 특수 파티션(예를 들어, 제1 파티션(102A))일 수 있다. 블록(506)에 의해 표시된 바와 같이, 암호화된 데이터 유닛들은 메모리 디바이스의 다른(제2) 저장 파티션에 저장될 수 있다.
[0050] 블록(508)에 의해 표시된 바와 같이, 키들과 연관된 논리적 메모리 블록들은 키 정보가 저장된 물리적 메모리 블록들로부터 디-맵핑될 수 있다(블록(504)). 블록(510)에 의해 표시된 바와 같이, 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들은 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 나열될 수 있다. 블록(512)에 의해 표시된 바와 같이, 로컬 퍼지 커맨드가 호스트 디바이스로부터 수신될 수 있다. 블록(514)에 의해 표시된 바와 같이, 로컬 퍼지 커맨드에 대한 응답으로, 로컬 디-맵핑된 블록 리스트에 나열된(그리고 그에 따라 키 정보가 저장된 디-맵핑된 물리적 메모리 블록들을 포함하는) 디-맵핑된 물리적 메모리 블록들만이 퍼지될 수 있다. 즉, 글로벌 디-맵핑된 블록 리스트와 같은 임의의 다른 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들은 로컬 퍼지 커맨드에 대한 응답으로 퍼지되지 않을 수 있다. 일부 실시예들에서, 방법(500)은, 메모리 디바이스의 모든 파티션들을 커버하는 글로벌 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들이 퍼지될 수 있게 하는 방법(도시되지 않음)에 추가하여 제공될 수 있다. 블록들(502-514)은 방법(500)의 예를 통해 독자를 안내하는 데 도움이 되는 예시적인 순서로 위에서 설명되었지만, 블록들(502-514)과 관련하여 위에서 설명된 액션들은 동일한 유사한 결과들을 생성하는 임의의 순서로 발생할 수 있다는 것이 이해되어야 한다.
[0051] 도 6에서, 키 계층(600)은 위에서 참조된 키들이 임의의 타입일 수 있음을 예시한다. 예를 들어, 위에서 참조된 키는 사용자 키(602)(예를 들어, 제1 사용자와 연관된 제1 사용자 키(602A), 제2 사용자와 연관된 제2 사용자 키(602B) 등); 애플리케이션-특정 키(604)(예를 들어, 제1 애플리케이션 프로그램과 연관된 제1 애플리케이션-특정 키(604A), 제2 애플리케이션 프로그램과 연관된 제2 애플리케이션-특정 키(604B) 등); 또는 폴더 키(606)(예를 들어, 제1 애플리케이션 프로그램의 제1 폴더와 연관된 제1 폴더 키(606A), 제1 애플리케이션 프로그램의 제2 폴더와 연관된 제2 폴더 키(606B) 등) 중 임의의 것일 수 있다.
[0052] 키 계층구조(600)는 호스트 시스템(204)(도 2)의 (도시되지 않은) 키 관리 시스템에 의해 메모리 디바이스의 위에서 설명된 특수 파티션에 유지될 수 있다. 각각의 사용자 키(602)는 호스트 시스템(204) 상의 애플리케이션 프로그램들의 사용자에 대해 고유할 수 있다. 키 관리 시스템은 사용자 키(602)를 사용하여 애플리케이션-특정 키(604)를 래핑할 수 있고, 애플리케이션-특정 키(604)를 사용하여 폴더 키(606)를 래핑할 수 있다. 애플리케이션 프로그램이 폴더 키(606)에 의해 보호되는 폴더를 삭제하는 경우, 키 관리 시스템은 새로운 애플리케이션-특정 키(604)를 생성하고 모든 연관된 폴더 키들(606)을 리-래핑할 수 있다. 상이한 사용자가 애플리케이션 프로그램들에 대한 액세스를 요구할 때, 키 관리 시스템은 그 사용자의 사용자 키(602)를 사용하여 애플리케이션-특정 키들(604)을 래핑할 수 있다. 사용자가 더 이상 애플리케이션 프로그램들에 대한 액세스를 요구하지 않을 때, 키 관리 시스템은 키들이 저장되는 특수 파티션으로부터 그 사용자의 사용자 키(602)를 제거할 수 있다. 특수 파티션으로부터 키를 제거하는 것은 키를 포함하는 블록을 디-맵핑하는 것을 포함할 수 있다. 키 관리 시스템은 위에서 설명된 방식으로 특수 파티션을 퍼지(따라서 모든 디-맵핑된 키들을 퍼지)할 수 있다. 키 관리 시스템은, 예를 들어, 매시간, 매일 등과 같은 임의의 시간에 또는 키를 포함하는 블록이 디-맵핑될 때 특수 파티션을 퍼지할 수 있다.
[0053] 퍼지 카운트 특징은, 글로벌 프리 블록 리스트 대신에 로컬 프리 블록 리스트가 활용되는 실시예와 같은 일부 실시예들에 포함될 수 있다. 도 2를 다시 참조하면, 호스트 시스템(204)의 키 관리 시스템(도시되지 않음)은, 특수 파티션이 겪은 퍼지 동작들의 총 수 및 플래시 저장 매체(208)(도 2)가 가능한 수명 소거 사이클들의 수에 기초하여 특수 파티션을 얼마나 자주 퍼지할지를 결정할 수 있다. 플래시 메모리 디바이스(202)는 퍼지 카운터(218)를 포함할 수 있다. 제어기(206)는, 제어기(206)가 특수 파티션에 대해 퍼지 동작을 수행할 때마다 퍼지 카운터(218)를 증분시킬 수 있다. 호스트 시스템(204)으로부터 수신된 로컬 퍼지 커맨드에 대한 응답으로, 제어기(206)는 퍼지 동작을 수행할 뿐만 아니라 퍼지 카운터(218)의 퍼지 카운트 또는 값을 호스트 시스템(204)에 리턴할 수 있다. 그 퍼지 카운트(또는 플래시 메모리 디바이스가 가능한 수명 소거 사이클들의 수와 같은 다른 정보와 조합된 퍼지 카운트)에 기초하여, 키 관리 시스템은 다음 퍼지 동작을 개시할 때를 결정할 수 있다.
[0054] 도 7에 예시된 바와 같이, 메모리 디바이스로부터 데이터를 퍼지하기 위한 시스템들 및 방법들의 예시적인 실시예들이 "PCD"(portable computing device)(700)에서 제공될 수 있다. 명확성을 위해, 데이터 버스들 또는 다른 데이터 통신 상호접속부들은 도 7에 도시되지 않는다. 일부 예시적인 상호접속부들이 맥락을 위해 설명되며, 이들 중 일부는 그러한 버스들 또는 상호접속부들을 통한 통신을 표현할 수 있다. 그럼에도 불구하고, 더 일반적으로, 아래에서 설명되는 다양한 엘리먼트들은 하나 이상의 버스들 또는 시스템 상호접속부들을 통해 서로 통신할 수 있다는 것이 이해되어야 한다.
[0055] PCD(700)는 SoC(702)를 포함할 수 있다. SoC(702)는 CPU(704), GPU(706), DSP(707), 아날로그 신호 프로세서(708) 또는 다른 프로세서들을 포함할 수 있다. CPU(704)는 제1 코어(704A), 제2 코어(704B) 등 내지 제N 코어(704N)와 같은 다수의 코어들을 포함할 수 있다.
[0056] 디스플레이 제어기(710) 및 터치-스크린 제어기(712)는 CPU(704)에 커플링될 수 있다. SoC(702) 외부의 터치스크린 디스플레이(714)는 디스플레이 제어기(710) 및 터치-스크린 제어기(712)에 커플링될 수 있다. PCD(700)는 CPU(704)에 커플링된 비디오 디코더(716)를 더 포함할 수 있다. 비디오 증폭기(718)는 비디오 디코더(716) 및 터치스크린 디스플레이(714)에 커플링될 수 있다. 비디오 포트(720)는 비디오 증폭기(718)에 커플링될 수 있다. 범용 직렬 버스("USB") 제어기(722)가 또한 CPU(704)에 커플링될 수 있고, USB 포트(724)가 USB 제어기(722)에 커플링될 수 있다. "SIM"(subscriber identity module) 카드(726)가 또한 CPU(704)에 커플링될 수 있다.
[0057] 하나 이상의 메모리들은 CPU(704)에 커플링될 수 있다. 하나 이상의 메모리들은 휘발성 및 비휘발성 메모리들 둘 모두를 포함할 수 있다. 휘발성 메모리들의 예들은 "SRAM"(static random access memory)(728) 및 "DRAM"(dynamic RAM)들(730 및 731)을 포함한다. 그러한 메모리들은 SoC(702) 외부, 이를테면 DRAM(730), 또는 SoC(702) 내부, 이를테면 DRAM(731)에 있을 수 있다. CPU(704)에 커플링된 DRAM 제어기(732)는 DRAM들(730 및 731)에 대한 데이터의 기록 및 그로부터의 데이터의 판독을 제어할 수 있다. 다른 실시예들에서, 그러한 DRAM 제어기는 CPU(704)와 같은 프로세서 내에 포함될 수 있다.
[0058] PCD(700)는 SoC(702)에 커플링된 칩과 같은 플래시 메모리 디바이스(733)를 포함할 수 있다. 플래시 메모리 디바이스(733)는, 예를 들어, "I/O"(input/output) 인터페이스(735)를 통해 CPU(704)에 커플링될 수 있다. I/O 인터페이스(735)는 예를 들어, "PCIe"(peripheral component interconnect express) 버스 또는 CPU(704)와의 임의의 다른 타입의 상호접속부와 같은 버스를 포함할 수 있다. 플래시 메모리 디바이스(733)는 도 2와 관련하여 위에서 설명된 플래시 메모리 디바이스(202)의 일 예일 수 있다. 이 실시예에서, 플래시 메모리 디바이스(202)는 제어기(206)(도 2)를 포함하지만, 다른 실시예들에서, 그러한 제어기는 SoC에 포함될 수 있다. CPU(704) 및 관련 컴포넌트들은 위에서 설명된 호스트 시스템 기능들을 제공하도록 구성될 수 있다.
[0059] 스테레오 오디오 CODEC(734)이 아날로그 신호 프로세서(708)에 커플링될 수 있다. 추가로, 오디오 증폭기(736)가 스테레오 오디오 CODEC(734)에 커플링될 수 있다. 제1 및 제2 스테레오 스피커들(738 및 740)이 각각 오디오 증폭기(736)에 커플링될 수 있다. 또한, 마이크로폰 증폭기(742)가 스테레오 오디오 CODEC(734)에 커플링될 수 있고, 마이크로폰(744)은 마이크로폰 증폭기(742)에 커플링될 수 있다. "FM"(frequency modulation) 라디오 튜너(746)가 스테레오 오디오 CODEC(734)에 커플링될 수 있다. FM 안테나(748)가 FM 라디오 튜너(746)에 커플링될 수 있다. 추가로, 스테레오 헤드폰들(750)이 스테레오 오디오 CODEC(734)에 커플링될 수 있다. CPU(704)에 커플링될 수 있는 다른 디바이스들은 하나 이상의 디지털(예를 들어, CCD 또는 CMOS) 카메라들(752)을 포함한다.
[0060] 모뎀 또는 RF 트랜시버(754)가 아날로그 신호 프로세서(708) 및 CPU(704)에 커플링될 수 있다. RF 스위치(756)가 RF 트랜시버(754) 및 RF 안테나(758)에 커플링될 수 있다. 추가하여, 키패드(760), 마이크로폰(762)을 갖는 모노 헤드셋, 및 바이브레이터 디바이스(764)가 아날로그 신호 프로세서(708)에 커플링될 수 있다.
[0061] SoC(702)는 하나 이상의 내부 또는 온-칩 열 센서들(770A)을 가질 수 있고, 하나 이상의 외부 또는 오프-칩 열 센서들(770B)에 커플링될 수 있다. "ADC"(analog-to-digital converter) 제어기(772)는 열 센서들(770A 및 770B)에 의해 생성된 전압 강하들을 디지털 신호들로 변환할 수 있다. 전력 공급부(774) 및 "PMIC"(power management integrated circuit)(776)가 SoC(702)에 전력을 공급할 수 있다.
[0062] 펌웨어 또는 소프트웨어는 DRAM(730 또는 731), SRAM(728) 등과 같은 위에서 설명된 메모리들 중 임의의 것에 저장될 수 있거나, 또는 소프트웨어 또는 펌웨어가 실행되는 프로세서 하드웨어에 의해 직접 액세스가능한 로컬 메모리에 저장될 수 있다. 그러한 펌웨어 또는 소프트웨어의 실행은 위에서 설명된 방법들 중 임의의 것의 양상들을 제어하거나 또는 위에서 설명된 시스템들 중 임의의 것의 양상들을 구성할 수 있다. 프로세서 하드웨어에 의한 실행을 위해 컴퓨터 판독가능 형태로 펌웨어 또는 소프트웨어가 저장된 임의의 그러한 메모리 또는 다른 비일시적 저장 매체는, 그 용어가 특허 어휘에서 이해되는 바와 같이 "컴퓨터 판독가능 매체"의 예일 수 있다.
[0063] 위에서 설명된 로컬 퍼지 커맨드는 예를 들어, UFS 표준과 같은 플래시 메모리 표준에 의해 커버되는 커맨드들의 세트에 포함될 수 있다. 로컬 퍼지 커맨드는 위에서 설명된 글로벌 퍼지 커맨드에 추가하여 (예를 들어, UFS) 커맨드 세트에 포함될 수 있다. 로컬 퍼지 커맨드의 예(800)가 도 8에 개념적 형태로 도시된다. 위에서 설명된 바와 같이, 특수 또는 로컬 파티션은 RPMB일 수 있다. 아규먼트들을 취하지 않을 수 있는 글로벌 퍼지 커맨드와 대조적으로, 로컬 퍼지 커맨드는 로컬 파티션 내의 영역(즉, RPMB 블록들의 서브세트)을 특정하는 아규먼트들을 취할 수 있다. 예를 들어, 호스트는, RPMB의 블록들 0 내지 블록 2에 걸쳐 있는 제1 영역(RMPB 영역_0); RPMB의 블록들 3 내지 블록 7에 걸쳐 있는 제2 영역(RMPB 영역_1); RPMB의 블록들 8 내지 블록 9에 걸쳐 있는 제3 영역(RMPB 영역_2); RPMB의 블록들 10 내지 블록 14에 걸쳐 있는 제4 영역(RMPB 영역_3) 등 중 임의의 것을 식별하기 위한 아규먼트의 값을 설정할 수 있다. 도 8에 도시된 영역들은 단지 예들로서 의도되며, 로컬 퍼지 커맨드 아규먼트들을 사용하여, 호스트는 블록들의 임의의 그룹을 그러한 영역으로서 정의할 수 있다. 호스트로부터 수신된 로컬 퍼지 커맨드에 대한 응답으로, UFS 디바이스와 같은 플래시 메모리 디바이스는 로컬 퍼지 커맨드 내의 아규먼트들의 값들에 의해 식별된 그러한 블록들만을 퍼지할 수 있다. 이러한 방식으로, 호스트는 로컬 파티션(예를 들어, RPMB)에서 블록들 전부 또는 오직 서브세트만을 퍼지할 수 있다.
[0064] 본 개시내용이 관련된 기술분야의 당업자에게 대안적인 실시예들이 명백해질 것이다. 따라서, 선택된 양상들이 상세히 예시되고 설명되었지만, 그 양상들에서 다양한 치환들 및 변경들이 이루어질 수 있다는 것이 이해될 것이다.
[0065] 구현 예들은 다음의 넘버링된 조항들에서 설명된다:
[0066] 1. 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법은,
[0067] 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하는 단계;
[0068] 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하는 단계;
[0069] 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하는 단계; 및
[0070] 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하는 단계를 포함한다.
[0071] 2. 조항 1의 방법에 있어서, 메모리 디바이스는 비휘발성이다.
[0072] 3. 조항 1 또는 조항 2의 방법에 있어서, 제1 저장 파티션은 인증된 액세스 파티션이다.
[0073] 4. 조항 1 내지 조항 3 중 임의의 조항의 방법에 있어서, 제1 저장 파티션은 리플레이 보호된 메모리 블록이다.
[0074] 5. 조항 1 내지 조항 4 중 임의의 조항의 방법에 있어서, 로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하는 단계를 더 포함하고, 로컬 프리 블록 리스트는 제1 저장 파티션과 고유하게 연관된다.
[0075] 6. 조항 1 내지 조항 5 중 임의의 조항의 방법에 있어서, 글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 제1 저장 파티션 이외의 복수의 저장 파티션들과 연관되고, 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하는 단계 및 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하는 단계를 더 포함한다.
[0076] 7. 조항 1 내지 조항 6 중 임의의 조항의 방법은,
[0077] 대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하는 단계;
[0078] 복수의 키들과 연관된 키 정보를 제1 저장 파티션에 저장하는 단계; 및
[0079] 암호화된 데이터의 복수의 유닛들을 복수의 저장 파티션들 중 제2 저장 파티션에 저장하는 단계를 더 포함하고;
[0080] 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하는 단계는, 키 정보를 저장하는 물리적 메모리 블록들로부터 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하는 단계를 포함하고;
[0081] 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들을 퍼지하는 단계는 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하는 단계를 포함한다.
[0082] 8. 조항 1 내지 조항 7 중 임의의 조항의 방법은,
[0083] 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 호스트 디바이스에 제공하는 단계; 및
[0084] 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 증분시키는 단계를 더 포함한다.
[0085] 9. 조항 1 내지 조항 8 중 임의의 조항의 방법에 있어서, 로컬 퍼지 커맨드를 수신하는 단계는, 퍼지할 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 수신하는 단계를 포함한다.
[0086] 10. 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템은,
[0087] 데이터 저장 매체; 및
[0088] 데이터 저장 매체에 커플링된 제어기를 포함하고, 제어기는,
[0089] 데이터 저장 매체의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하고;
[0090] 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하고;
[0091] 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하고; 그리고
[0092] 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하도록 구성된다.
[0093] 11. 조항 10의 시스템에 있어서, 데이터 저장 매체는 비휘발성이다.
[0094] 12. 조항 10 또는 조항 11의 시스템에 있어서, 제1 저장 파티션은 인증된 액세스 파티션이다.
[0095] 13. 조항 10 내지 조항 12 중 임의의 조항의 시스템에 있어서, 제1 저장 파티션은 리플레이 보호된 메모리 블록이다.
[0096] 14. 조항 10 내지 조항 13 중 임의의 조항의 시스템에 있어서, 제어기는, 로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하도록 추가로 구성되고, 로컬 프리 블록 리스트는 제1 저장 파티션과 고유하게 연관된다.
[0097] 15. 조항 10 내지 조항 14 중 임의의 조항의 시스템에 있어서, 글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 제1 저장 파티션 이외의 복수의 저장 파티션들과 연관되고, 제어기는 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하고 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 추가로 구성된다.
[0098] 16. 조항 10 내지 조항 15 중 임의의 조항의 시스템에 있어서, 제어기는,
[0099] 대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하고;
[00100] 복수의 키들과 연관된 키 정보를 제1 저장 파티션에 저장하고; 그리고
[00101] 암호화된 데이터의 복수의 유닛들을 복수의 저장 파티션들 중 제2 저장 파티션에 저장하도록 추가로 구성되고;
[00102] 제어기는 키 정보를 저장하는 물리적 메모리 블록들로부터 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하도록 구성됨으로써 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하도록 구성되고;
[00103] 제어기는 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하도록 구성됨으로써 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 구성된다.
[00104] 17. 조항 10 내지 조항 16 중 임의의 조항의 시스템에 있어서, 제어기는,
[00105] 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 호스트 디바이스에 제공하고; 그리고
[00106] 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 증분시키도록 추가로 구성된다.
[00107] 18. 조항 10 내지 조항 17 임의의 조항의 시스템에 있어서, 로컬 퍼지 커맨드는, 퍼지할 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 포함한다.
[00108] 19. 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템은,
[00109] 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하기 위한 수단;
[00110] 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하기 위한 수단;
[00111] 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하기 위한 수단; 및
[00112] 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하기 위한 수단을 포함한다.
[00113] 20. 조항 19의 시스템에 있어서, 메모리 디바이스는 비휘발성이다.
[00114] 21. 조항 19 또는 조항 20의 시스템에 있어서, 제1 저장 파티션은 인증된 액세스 파티션이다.
[00115] 22. 조항 19 내지 조항 21 중 임의 조항의 시스템에 있어서, 제1 저장 파티션은 리플레이 보호된 메모리 블록이다.
[00116] 23. 조항 19 내지 조항 22 중 임의의 조항의 시스템에 있어서, 로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하기 위한 수단을 더 포함하고, 로컬 프리 블록 리스트는 제1 저장 파티션과 고유하게 연관된다.
[00117] 24. 조항 19 내지 조항 23 중 임의의 조항의 시스템에 있어서, 글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 제1 저장 파티션 이외의 복수의 저장 파티션들과 연관되고, 수신하기 위한 수단은 추가로 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하기 위한 것이고, 퍼지하기 위한 수단은 추가로 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하기 위한 것이다.
[00118] 25. 조항 19 내지 조항 24 중 임의의 조항의 시스템은,
[00119] 대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하기 위한 수단;
[00120] 복수의 키들과 연관된 키 정보를 제1 저장 파티션에 저장하기 위한 수단; 및
[00121] 암호화된 데이터의 복수의 유닛들을 복수의 저장 파티션들 중 제2 저장 파티션에 저장하기 위한 수단을 더 포함하고;
[00122] 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하기 위한 수단은, 키 정보를 저장하는 물리적 메모리 블록들로부터 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하기 위한 수단을 포함하고;
[00123] 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들을 퍼지하기 위한 수단은 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하기 위한 수단을 포함한다.
[00124] 26. 조항 19 내지 조항 25 중 임의의 조항의 시스템은,
[00125] 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 호스트 디바이스에 제공하기 위한 수단; 및
[00126] 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 증분시키기 위한 수단을 더 포함한다.
[00127] 27. 조항 19 내지 조항 26 중 임의의 조항의 시스템에 있어서, 로컬 퍼지 커맨드는, 퍼지할 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 포함한다.
[00128] 28. 컴퓨터 실행가능 형태의 명령들이 저장된 비일시적 컴퓨터 판독가능 매체를 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 컴퓨터 판독가능 매체로서, 명령들은, 프로세서에 의해 실행될 때,
[00129] 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하고;
[00130] 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하고;
[00131] 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하고; 그리고
[00132] 로컬 퍼지 커맨드에 대한 응답으로 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하도록 프로세서를 구성한다.
[00133] 29. 조항 28의 컴퓨터 판독가능 매체에 있어서, 메모리 디바이스는 비휘발성이다.
[00134] 30. 조항 28 또는 조항 29의 컴퓨터 판독가능 매체에 있어서, 제1 저장 파티션은 인증된 액세스 파티션이다.
[00135] 31. 조항 28 내지 조항 30 중 임의의 조항의 컴퓨터 판독가능 매체에 있어서, 제1 저장 파티션은 리플레이 보호된 메모리 블록이다.
[00136] 32. 조항 28 내지 조항 31 중 임의의 조항의 컴퓨터 판독가능 매체에 있어서, 명령들은, 로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하도록 프로세서를 추가로 구성하고, 로컬 프리 블록 리스트는 제1 저장 파티션과 고유하게 연관된다.
[00137] 33. 조항 28 내지 조항 32 임의의 조항의 컴퓨터 판독가능 매체에 있어서, 글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 제1 저장 파티션 이외의 복수의 저장 파티션들과 연관되고, 명령들은 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하고 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 프로세서를 추가로 구성한다.
[00138] 34. 조항 28 내지 조항 33 중 임의의 조항의 컴퓨터 판독가능 매체에 있어서, 명령들은,
[00139] 대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하고;
[00140] 복수의 키들과 연관된 키 정보를 제1 저장 파티션에 저장하고; 그리고
[00141] 암호화된 데이터의 복수의 유닛들을 복수의 저장 파티션들 중 제2 저장 파티션에 저장하도록 프로세서를 추가로 구성하고;
[00142] 명령들은 키 정보를 저장하는 물리적 메모리 블록들로부터 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하도록 프로세서를 구성함으로써 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하도록 프로세서를 구성하고;
[00143] 명령들은 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하도록 프로세서를 구성함으로써 로컬 디-맵핑된 블록 리스트에 나열된 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 프로세서를 구성한다.
[00144] 35. 조항 28 내지 조항 34 중 임의의 조항의 컴퓨터 판독가능 매체에 있어서, 로컬 퍼지 커맨드는, 퍼지할 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 포함한다.
[00145] 36. 관리되는 플래시 메모리 디바이스는,
[00146] 복수의 파티션들을 포함하고, 복수의 파티션들 중 적어도 하나는 자신과 고유하게 연관된 로컬 디-맵핑된 블록 리스트를 갖고, 복수의 파티션들 중 적어도 하나 이외의 복수의 파티션들은 자신과 연관된 글로벌 디-맵핑된 블록 리스트를 갖고;
[00147] 관리되는 플래시 메모리 디바이스는,
[00148] 호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하고, 로컬 퍼지 커맨드에 대한 응답으로, 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하고; 그리고
[00149] 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하고, 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌 디-맵핑된 블록 리스트에서 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 구성된다.
[00150] 37. 조항 36의 관리되는 플래시 메모리 디바이스에 있어서, 복수의 파티션들 중 적어도 하나는 리플레이 보호 메모리 블록으로 구성된다.

Claims (37)

  1. 메모리 디바이스로부터의 데이터를 퍼지(purge)하기 위한 방법으로서,
    상기 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하는 단계;
    상기 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 상기 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하는 단계;
    호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하는 단계; 및
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 로컬 디-맵핑된 블록 리스트에만 나열된 상기 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하는 단계를 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  2. 제1항에 있어서,
    상기 메모리 디바이스는 비휘발성인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  3. 제2항에 있어서,
    상기 제1 저장 파티션은 인증된 액세스 파티션인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  4. 제3항에 있어서,
    상기 제1 저장 파티션은 리플레이 보호된 메모리 블록인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  5. 제1항에 있어서,
    로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하는 단계를 더 포함하고, 상기 로컬 프리 블록 리스트는 상기 제1 저장 파티션과 고유하게 연관되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  6. 제1항에 있어서,
    글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 상기 제1 저장 파티션 이외의 상기 복수의 저장 파티션들과 연관되고, 상기 방법은 상기 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하는 단계 및 상기 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하는 단계를 더 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  7. 제1항에 있어서,
    대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하는 단계;
    상기 복수의 키들과 연관된 키 정보를 상기 제1 저장 파티션에 저장하는 단계; 및
    상기 암호화된 데이터의 복수의 유닛들을 상기 복수의 저장 파티션들 중 제2 저장 파티션에 저장하는 단계를 더 포함하고;
    상기 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하는 단계는, 상기 키 정보를 저장하는 물리적 메모리 블록들로부터 상기 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하는 단계를 포함하고;
    상기 로컬 디-맵핑된 블록 리스트에 나열된 상기 디-맵핑된 물리적 메모리 블록들을 퍼지하는 단계는 상기 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하는 단계를 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  8. 제1항에 있어서,
    상기 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 상기 호스트 디바이스에 제공하는 단계; 및
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 퍼지 카운트를 증분시키는 단계를 더 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  9. 제1항에 있어서,
    상기 로컬 퍼지 커맨드를 수신하는 단계는, 퍼지할 상기 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 수신하는 단계를 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 방법.
  10. 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템으로서,
    데이터 저장 매체; 및
    상기 데이터 저장 매체에 커플링된 제어기를 포함하고, 상기 제어기는,
    상기 데이터 저장 매체의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하고;
    상기 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 상기 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하고;
    호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하고; 그리고
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 로컬 디-맵핑된 블록 리스트에만 나열된 상기 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하도록 구성되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  11. 제10항에 있어서,
    상기 데이터 저장 매체는 비휘발성인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  12. 제11항에 있어서,
    상기 제1 저장 파티션은 인증된 액세스 파티션인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  13. 제12항에 있어서,
    상기 제1 저장 파티션은 리플레이 보호된 메모리 블록인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  14. 제10항에 있어서,
    상기 제어기는, 로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하도록 추가로 구성되고, 상기 로컬 프리 블록 리스트는 상기 제1 저장 파티션과 고유하게 연관되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  15. 제10항에 있어서,
    글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 상기 제1 저장 파티션 이외의 상기 복수의 저장 파티션들과 연관되고, 상기 제어기는 상기 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하고 상기 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 추가로 구성되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  16. 제10항에 있어서,
    상기 제어기는,
    대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하고;
    상기 복수의 키들과 연관된 키 정보를 상기 제1 저장 파티션에 저장하고; 그리고
    상기 암호화된 데이터의 복수의 유닛들을 상기 복수의 저장 파티션들 중 제2 저장 파티션에 저장하도록 추가로 구성되고;
    상기 제어기는 상기 키 정보를 저장하는 물리적 메모리 블록들로부터 상기 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하도록 구성됨으로써 상기 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하도록 구성되고;
    상기 제어기는 상기 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하도록 구성됨으로써 상기 로컬 디-맵핑된 블록 리스트에 나열된 상기 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 구성되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  17. 제10항에 있어서,
    상기 제어기는,
    상기 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 상기 호스트 디바이스에 제공하고; 그리고
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 퍼지 카운트를 증분시키도록 추가로 구성되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  18. 제10항에 있어서,
    상기 로컬 퍼지 커맨드는, 퍼지할 상기 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  19. 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템으로서,
    상기 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하기 위한 수단;
    상기 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 상기 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하기 위한 수단;
    호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하기 위한 수단; 및
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 로컬 디-맵핑된 블록 리스트에만 나열된 상기 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하기 위한 수단을 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  20. 제19항에 있어서,
    상기 메모리 디바이스는 비휘발성인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  21. 제20항에 있어서,
    상기 제1 저장 파티션은 인증된 액세스 파티션인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  22. 제21항에 있어서,
    상기 제1 저장 파티션은 리플레이 보호된 메모리 블록인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  23. 제19항에 있어서,
    로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하기 위한 수단을 더 포함하고, 상기 로컬 프리 블록 리스트는 상기 제1 저장 파티션과 고유하게 연관되는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  24. 제19항에 있어서,
    글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 상기 제1 저장 파티션 이외의 상기 복수의 저장 파티션들과 연관되고, 상기 수신하기 위한 수단은 추가로 상기 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하기 위한 것이고, 상기 퍼지하기 위한 수단은 추가로 상기 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하기 위한 것인, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  25. 제19항에 있어서,
    대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하기 위한 수단;
    상기 복수의 키들과 연관된 키 정보를 상기 제1 저장 파티션에 저장하기 위한 수단; 및
    상기 암호화된 데이터의 복수의 유닛들을 상기 복수의 저장 파티션들 중 제2 저장 파티션에 저장하기 위한 수단을 더 포함하고;
    상기 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하기 위한 수단은, 상기 키 정보를 저장하는 물리적 메모리 블록들로부터 상기 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하기 위한 수단을 포함하고;
    상기 로컬 디-맵핑된 블록 리스트에 나열된 상기 디-맵핑된 물리적 메모리 블록들을 퍼지하기 위한 수단은 상기 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하기 위한 수단을 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  26. 제19항에 있어서,
    상기 로컬 퍼지 커맨드에 대한 응답으로 퍼지 카운트를 상기 호스트 디바이스에 제공하기 위한 수단; 및
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 퍼지 카운트를 증분시키기 위한 수단을 더 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  27. 제19항에 있어서,
    상기 로컬 퍼지 커맨드는, 퍼지할 상기 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 포함하는,
    메모리 디바이스로부터의 데이터를 퍼지하기 위한 시스템.
  28. 컴퓨터 실행가능 형태의 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체를 포함하는, 메모리 디바이스로부터의 데이터를 퍼지하기 위한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 프로세서에 의해 실행될 때,
    상기 메모리 디바이스의 복수의 저장 파티션들 중 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하고;
    상기 제1 저장 파티션과 고유하게 연관된 로컬 디-맵핑된 블록 리스트에서 상기 제1 저장 파티션의 디-맵핑된 물리적 메모리 블록들을 나열하고;
    호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하고; 그리고
    상기 로컬 퍼지 커맨드에 대한 응답으로 상기 로컬 디-맵핑된 블록 리스트에만 나열된 상기 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하도록 상기 프로세서를 구성하는, 컴퓨터 판독가능 저장 매체.
  29. 제28항에 있어서,
    상기 메모리 디바이스는 비휘발성인, 컴퓨터 판독가능 저장 매체.
  30. 제29항에 있어서,
    상기 제1 저장 파티션은 인증된 액세스 파티션인, 컴퓨터 판독가능 저장 매체.
  31. 제30항에 있어서,
    상기 제1 저장 파티션은 리플레이 보호된 메모리 블록인, 컴퓨터 판독가능 저장 매체.
  32. 제28항에 있어서,
    상기 명령들은, 로컬 프리 블록 리스트에서 퍼지된 물리적 메모리 블록들을 나열하도록 상기 프로세서를 추가로 구성하고, 상기 로컬 프리 블록 리스트는 상기 제1 저장 파티션과 고유하게 연관되는, 컴퓨터 판독가능 저장 매체.
  33. 제28항에 있어서,
    글로벌 디-맵핑된 블록 리스트 및 글로벌 프리 블록 리스트는 상기 제1 저장 파티션 이외의 상기 복수의 저장 파티션들과 연관되고, 상기 명령들은 상기 호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하고 상기 글로벌 퍼지 커맨드에 대한 응답으로, 글로벌-디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 상기 프로세서를 추가로 구성하는, 컴퓨터 판독가능 저장 매체.
  34. 제28항에 있어서,
    상기 명령들은,
    대응하는 복수의 키들을 사용하여 암호화된 데이터의 복수의 유닛들을 형성하고;
    상기 복수의 키들과 연관된 키 정보를 상기 제1 저장 파티션에 저장하고; 그리고
    상기 암호화된 데이터의 복수의 유닛들을 상기 복수의 저장 파티션들 중 제2 저장 파티션에 저장하도록 상기 프로세서를 추가로 구성하고;
    상기 명령들은 상기 키 정보를 저장하는 물리적 메모리 블록들로부터 상기 복수의 키들과 연관된 논리적 메모리 블록들을 디-맵핑하도록 상기 프로세서를 구성함으로써 상기 제1 저장 파티션의 물리적 메모리 블록들로부터 논리적 메모리 블록들을 디-맵핑하도록 상기 프로세서를 구성하고;
    상기 명령들은 상기 키 정보를 저장하는 물리적 메모리 블록들을 퍼지하도록 상기 프로세서를 구성함으로써 상기 로컬 디-맵핑된 블록 리스트에 나열된 상기 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 상기 프로세서를 구성하는, 컴퓨터 판독가능 저장 매체.
  35. 제28항에 있어서,
    상기 로컬 퍼지 커맨드는, 퍼지할 상기 디-맵핑된 물리적 메모리 블록들의 부분의 표시를 포함하는, 컴퓨터 판독가능 저장 매체.
  36. 관리되는 플래시 메모리 디바이스로서,
    복수의 파티션들을 포함하고, 상기 복수의 파티션들 중 적어도 하나는 자신과 고유하게 연관된 로컬 디-맵핑된 블록 리스트를 갖고, 상기 복수의 파티션들 중 상기 적어도 하나 이외의 복수의 파티션들은 자신과 연관된 글로벌 디-맵핑된 블록 리스트를 갖고;
    상기 관리되는 플래시 메모리 디바이스는,
    호스트 디바이스로부터 로컬 퍼지 커맨드를 수신하고, 상기 로컬 퍼지 커맨드에 대한 응답으로, 상기 로컬 디-맵핑된 블록 리스트에만 나열된 디-맵핑된 물리적 메모리 블록들의 적어도 일부를 퍼지하고; 그리고
    호스트 디바이스로부터 글로벌 퍼지 커맨드를 수신하고, 상기 글로벌 퍼지 커맨드에 대한 응답으로, 상기 글로벌 디-맵핑된 블록 리스트에 나열된 모든 디-맵핑된 물리적 메모리 블록들을 퍼지하도록 구성되는, 관리되는 플래시 메모리 디바이스.
  37. 제36항에 있어서,
    상기 복수의 파티션들 중 상기 적어도 하나는 리플레이 보호 메모리 블록으로 구성되는, 관리되는 플래시 메모리 디바이스.
KR1020237006871A 2020-09-08 2021-08-19 플래시 메모리 로컬 퍼지 KR20230062556A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063075435P 2020-09-08 2020-09-08
US63/075,435 2020-09-08
US17/405,946 US20220075523A1 (en) 2020-09-08 2021-08-18 Flash memory local purge
US17/405,946 2021-08-18
PCT/US2021/046676 WO2022055684A1 (en) 2020-09-08 2021-08-19 Flash memory local purge

Publications (1)

Publication Number Publication Date
KR20230062556A true KR20230062556A (ko) 2023-05-09

Family

ID=80469767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237006871A KR20230062556A (ko) 2020-09-08 2021-08-19 플래시 메모리 로컬 퍼지

Country Status (7)

Country Link
US (1) US20220075523A1 (ko)
EP (1) EP4211564A1 (ko)
KR (1) KR20230062556A (ko)
CN (1) CN115989475A (ko)
BR (1) BR112023003354A2 (ko)
TW (1) TW202215222A (ko)
WO (1) WO2022055684A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797210B2 (en) * 2020-09-14 2023-10-24 Samsung Electronics Co., Ltd. Method of operating memory device and host device, and memory system including partitioning purge region responsive to purge information
US20230384957A1 (en) * 2022-05-30 2023-11-30 Samsung Electronics Co., Ltd. Storage device providing high purge performance and memory block management method thereof
US20240078032A1 (en) * 2022-09-06 2024-03-07 Western Digital Technologies, Inc. Metadata Management In Key Value Data Storage Device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738840B2 (en) * 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US9015401B2 (en) * 2011-04-28 2015-04-21 Seagate Technology Llc Selective purge of confidential data from a non-volatile memory
US9262316B2 (en) * 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
CN104915151B (zh) * 2015-06-02 2018-12-07 杭州电子科技大学 多虚拟机系统中一种主动共享的内存超量分配方法
JP6448571B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
KR102545166B1 (ko) * 2016-07-26 2023-06-19 삼성전자주식회사 파일을 안전하게 삭제하는 호스트, 스토리지 시스템 및 호스트의 동작방법
KR20180093153A (ko) * 2017-02-09 2018-08-21 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US10579288B2 (en) * 2017-08-31 2020-03-03 Micron Technology, Inc. Prioritized security
KR102411290B1 (ko) * 2017-10-24 2022-06-22 삼성전자주식회사 선택적으로 퍼지 동작을 수행하도록 구성되는 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
KR20190099693A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10854299B2 (en) * 2018-05-31 2020-12-01 Micron Technology, Inc. Data erase operations for a memory system
US10705954B2 (en) * 2018-10-29 2020-07-07 Vmware, Inc. Efficiently purging non-active blocks in NVM regions while preserving large pages
KR20200085967A (ko) * 2019-01-07 2020-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11144448B2 (en) * 2019-08-05 2021-10-12 Micron Technology, Inc. Memory sub-system for managing flash translation layers table updates in response to unmap commands
US11768763B2 (en) * 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase

Also Published As

Publication number Publication date
CN115989475A (zh) 2023-04-18
US20220075523A1 (en) 2022-03-10
TW202215222A (zh) 2022-04-16
EP4211564A1 (en) 2023-07-19
WO2022055684A1 (en) 2022-03-17
BR112023003354A2 (pt) 2023-04-04

Similar Documents

Publication Publication Date Title
US20220075523A1 (en) Flash memory local purge
JP5662037B2 (ja) 不揮発性メモリに対してデータの読み出しおよび書き込みを行うためのデータホワイトニング
US11216206B2 (en) Method of operating data storage device
US11657022B2 (en) Host and storage system for securely deleting files and operating method of the host
Jia et al. Deftl: Implementing plausibly deniable encryption in flash translation layer
US9223696B2 (en) Data storage device for holding erasure of victim block having valid page copied to merge block and method of operating the same
US11573733B2 (en) Data storage device and data storage system
US8886963B2 (en) Secure relocation of encrypted files
KR20180130229A (ko) 데이터 저장 장치 및 그것의 동작 방법
JP5721901B2 (ja) ウェアレベリングを有するメモリ装置の暗号化
US9645946B2 (en) Encryption for solid state drives (SSDs)
US11360912B2 (en) Method for performing adaptive locking range management, associated data storage device and controller thereof
US11775386B2 (en) Data storage device and control method for non-volatile memory
US11644983B2 (en) Storage device having encryption
KR20160119607A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11204700B2 (en) Data storage device and non-volatile memory control method, with security extension
KR102491776B1 (ko) 데이터 삭제 방법 및 장치
US11922044B2 (en) Data storage device and control method for non-volatile memory
US12008258B2 (en) Data storage device and control method for non-volatile memory
US20230289071A1 (en) Electronic device and method of operating the same
JP6212891B2 (ja) 仮想化システム、仮想サーバ、仮想ディスク配置方法、及び仮想ディスク配置プログラム
US11657000B2 (en) Controller and memory system including the same
Barbara Solid state drives: Part 5
CN117828687A (zh) 数据处理方法、装置、电子设备和可读存储介质