KR102497213B1 - 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법 - Google Patents

안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법 Download PDF

Info

Publication number
KR102497213B1
KR102497213B1 KR1020190022579A KR20190022579A KR102497213B1 KR 102497213 B1 KR102497213 B1 KR 102497213B1 KR 1020190022579 A KR1020190022579 A KR 1020190022579A KR 20190022579 A KR20190022579 A KR 20190022579A KR 102497213 B1 KR102497213 B1 KR 102497213B1
Authority
KR
South Korea
Prior art keywords
value
block
key
blocks
storage device
Prior art date
Application number
KR1020190022579A
Other languages
English (en)
Other versions
KR20190119511A (ko
Inventor
천정하
김지환
박찬익
오상진
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to US16/381,671 priority Critical patent/US10922011B2/en
Priority to CN201910293772.1A priority patent/CN110377599B/zh
Publication of KR20190119511A publication Critical patent/KR20190119511A/ko
Application granted granted Critical
Publication of KR102497213B1 publication Critical patent/KR102497213B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법이 개시된다. 본 개시의 기술적 사상의 일측면에 따른 키-밸류 스토리지 장치는, 다수의 블록들을 포함하는 비휘발성 메모리 및 상기 비휘발성 메모리에 대한 메모리 동작을 제어하고, 호스트로부터의 제1 키 및 이에 대응하는 제1 밸류를 포함하는 기록 커맨드를 수신함에 따라 상기 제1 밸류에 상응하는 파일의 데이터를 상기 비휘발성 메모리의 하나 이상의 블록들에 기록하며, 상기 호스트로부터의 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라 상기 제1 밸류가 기록된 상기 하나 이상의 블록들을 소거함으로써 파일 단위의 삭제 동작을 수행하는 컨트롤러를 구비하는 것을 특징으로 한다.

Description

안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법{Controller performing secure deletion, Key-value storage device having the same and Operating method of key-value storage device}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법에 관한 것이다.
스토리지는 데이터를 관리하는 단위에 따라 오브젝트 기반 스토리지 및 블록 기반 스토리지로 구분될 수 있다. 오브젝트 기반 스토리지는 데이터를 오브젝트 형식으로 저장하고 관리하는 스토리지 구조이다. 오브젝트는 임의의 사이즈를 가질 수 있는 데이터로, 예를 들어 동영상, 이미지 등의 멀티미디어 데이터, 파일 등을 의미하며, 오브젝트 스토리지는 오브젝트를 관리하기 위해 사용될 수 있다. 오브젝트 기반 스토리지의 일 예로서, 키-밸류 스토리지 장치가 있다.
키-밸류 스토리지 장치에서, 데이터의 삭제가 요청되면 맵핑 정보를 제거하는 등의 논리적 소거를 통해 데이터의 삭제가 수행될 수 있다. 또는, 키-밸류 스토리지 장치 자체적으로 가비지 컬렉션 동작을 수행함으로써 데이터가 물리적으로 소거될 수 있으나, 이와 같은 경우 데이터가 스토리지에 오래 남아있게 되어 보안에 취약할 수 있는 문제가 있다.
본 개시의 기술적 사상이 해결하려는 과제는, 데이터 보안성을 강화하고 데이터 사용 효율을 향상할 수 있는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 키-밸류 스토리지 장치는, 다수의 블록들을 포함하는 비휘발성 메모리 및 상기 비휘발성 메모리에 대한 메모리 동작을 제어하고, 호스트로부터의 제1 키 및 이에 대응하는 제1 밸류를 포함하는 기록 커맨드를 수신함에 따라 상기 제1 밸류에 상응하는 파일의 데이터를 상기 비휘발성 메모리의 하나 이상의 블록들에 기록하며, 상기 호스트로부터의 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라 상기 제1 밸류가 기록된 상기 하나 이상의 블록들을 소거함으로써 파일 단위의 삭제 동작을 수행하는 컨트롤러를 구비하는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 컨트롤러는, 적어도 하나의 프로세서 및 상기 프로세서에 의해 실행 가능한 프로그램들을 저장하고, 호스트로부터의 키와 비휘발성 메모리의 물리적 어드레스 사이의 맵핑 정보를 저장하는 워킹 메모리를 구비하고, 상기 프로세서는, 상기 호스트로부터의 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 응답하여 상기 워킹 메모리에 저장된 적어도 하나의 프로그램을 포함하는 안전 삭제 제어 모듈을 실행함으로써, 상기 제1 밸류가 저장된 하나 이상의 블록들에 대한 소거 동작을 제어함으로써 상기 제1 밸류를 삭제하는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 키-밸류 스토리지 장치의 동작방법은, 호스트로부터의 제1 키 및 이에 대응하는 제1 밸류를 포함하는 기록 커맨드의 수신에 응답하여, 상기 제1 밸류에 상응하는 파일의 데이터를 하나 이상의 블록들에 기록하는 단계와, 상기 호스트로부터 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라 상기 제1 밸류가 기록된 상기 하나 이상의 블록들을 판단하는 단계 및 상기 판단된 하나 이상의 블록들을 소거함으로써 파일 단위의 삭제 동작을 수행하는 단계를 구비하는 것을 특징으로 한다.
본 개시의 기술적 사상에 따른 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법은, 스토리지 장치의 보안성을 강화함과 함께 성능과 수명을 향상할 수 있으며, 하나의 커맨드에 응답하여 다수의 블록들에 대한 소거 동작을 수행함으로써 데이터 삭제에 소요되는 시간을 감소할 수 있는 효과가 있다.
또한, 본 개시의 기술적 사상에 따른 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법은, 파일에 관련된 각종 상태 정보를 인덱스 정보로서 저장하고 이를 호스트로 제공함으로써 파일의 사용 내역을 관리할 수 있는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 도 1의 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 3a,b는 블록 스토리지 시스템과 키-밸류 스토리지 시스템에서의 데이터 저장의 비교 예를 나타내는 개념도이다.
도 4a,b는 예시적인 실시예에 따른 어드레스 변환 동작 및 비휘발성 메모리에 저장되는 정보를 나타내는 도면이다.
도 5는 키와 물리적 어드레스 사이의 맵핑 정보의 일 예를 나타내는 표이다.
도 6은 본 발명의 예시적인 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
도 7은 도 6의 플로우차트에 따른 안전 소거 동작을 도식화한 개념도이다.
도 8a,b 및 도 9는 하나의 블록이 하나의 파일을 선택적으로 저장하는 경우에서의 안전 삭제 동작을 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 안전 삭제 동작에서 유효 데이터의 카피 동작을 나타내는 개념도이다.
도 11은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 12 및 도 13은 본 발명의 예시적인 실시예에 따른 데이터 관리 동작의 일 예를 나타내는 블록도이다.
도 14는 본 발명의 다른 예시적인 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
도 15는 인덱스 정보의 관리 동작의 일 예를 도식화한 개념도이다.
도 16은 도 1의 스토리지 장치의 비휘발성 메모리(NVM)의 일 구현 예를 나타내는 구조도이다.
도 17은 본 발명의 실시예에 따른 안전 삭제 및 인덱스 관리 동작이 소프트웨어 방식에 따라 제어되는 예를 나타내는 블록도이다.
도 18은 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함하고, 스토리지 장치(100)는 컨트롤러(110) 및 비휘발성 메모리(Non Volatile Memory, NVM)(120)를 포함할 수 있다. 호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있다. 예를 들어, 호스트(200)는 AP(Application Processor) 또는 SoC(System-On-a-Chip)를 포함할 수 있다.
일 실시예에서, 스토리지 장치(100)는 키-밸류 스토리지 장치 또는 키-밸류 스토어(store)일 수 있고, 예를 들어, 키-밸류 SSD(Solid State Drive)일 수 있다. 키-밸류 스토리지 장치는 키-밸류 페어(pair)를 이용하여 데이터를 빠르고 간단하게 처리하는 장치이다. 여기서, "키-밸류 페어"는 유일성을 가지는 키(K)와, 상기 키(K)에 대응하는 데이터인 밸류의 쌍이며, "튜플(tuple)" 또는 "키-밸류 튜플"이라고 지칭할 수 있다. 키-밸류 페어에서, 키(K)는 파일 네임(file name), URI(Uniform Resource Identifier) 또는 해시와 같은 임의의 스트링(string)으로 표시되고, 밸류는 이미지, 사용자 선호 파일 또는 문서와 같은 임의의 종류의 파일 데이터일 수 있다. 이때, 키(K)와 밸류의 사이즈는 가변적이며, 예를 들어, 밸류의 사이즈는 밸류에 포함되는 데이터에 따라 변경될 수 있다.
이하에서는, 스토리지 장치(100)가 키-밸류 스토리지 장치인 실시예를 중심으로 설명하기로 하며, 본 명세서에서, 스토리지 장치(100)는 키-밸류 스토리지 장치 또는 키-밸류 스토어와 실질적으로 동일한 의미로 사용될 수 있다. 그러나, 스토리지 장치(100)는 키-밸류 스토리지 장치에 한정되지 않으며, 데이터를 오브젝트 단위로 관리하는 임의의 오브젝트 캐시 시스템 또는 오브젝트 스토리지 시스템에 적용될 수 있다. 따라서, 스토리지 장치(100)는 키-밸류 페어가 아닌 임의의 방식으로 데이터를 오브젝트 단위로 관리할 수 있다.
호스트(200)는 키-밸류(KEY, VALUE)를 포함하는 커맨드(CMD), 예를 들어, 기록 요청 또는 풋(put) 커맨드를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 커맨드(CMD)에 응답하여 비휘발성 메모리(120)에 밸류(VALUE)를 기록할 수 있다. 일 실시예에서, 호스트(200)는 키(KEY)를 포함하는 커맨드(CMD), 예를 들어, 독출 요청 또는 겟(get) 커맨드를 스토리지 장치(100)에 전송할 수 있고, 스토리지 장치(100)는 커맨드(CMD)에 응답하여 비휘발성 메모리(120)로부터 키(KEY)에 대응하는 밸류(VALUE)를 독출할 수 있다. 호스트(200)는 키(KEY)를 고정 사이즈를 갖는 LBA(Logical Block Address) 단위로 변환하지 않고, 가변 사이즈를 갖는 키(KEY)를 포함하는 커맨드(CMD)를 생성하고, 생성된 커맨드(CMD)를 스토리지 장치(100)에 전송할 수 있다.
컨트롤러(110)는 호스트(200)로부터의 기록 요청에 응답하여 비휘발성 메모리(120)에 밸류(VALUE)를 기록하거나, 또는 호스트(200)로부터의 독출 요청에 응답하여 비휘발성 메모리(120)에 저장된 밸류(VALUE)를 독출하도록 비휘발성 메모리(120)를 제어할 수 있다. 일 실시예에서, 컨트롤러(110)는 맵핑 테이블(Mapping Table, 미도시)을 포함할 수 있으며, 맵핑 테이블은 키(KEY)와 비휘발성 메모리(120)의 물리적 어드레스(Physical Address) 사이의 맵핑 정보를 저장할 수 있다.
또는, 컨트롤러(110)는 커맨드(CMD)에 포함된 키(KEY)로부터 맵핑 테이블의 맵핑 인덱스를 생성할 수 있으며, 맵핑 테이블은 생성된 맵핑 인덱스와 물리적 어드레스 사이의 맵핑 정보를 저장할 수 있다. 일 실시예에서, 맵핑 인덱스는 키(KEY)에 대한 해시 연산을 통해 생성되는 해시 키(hashed key)일 수 있고, 물리적 어드레스는 키(KEY)에 대응하는 밸류(VALUE)를 기록하기 위한 비휘발성 메모리(120)의 블록 어드레스(Block Address) 및 페이지 어드레스(Page Address)를 포함할 수 있다.
비휘발성 메모리(120)는 메모리 셀 어레이(Memory Cell Array, MCA)를 포함할 수 있고, 메모리 셀 어레이(MCA)는 메모리 블록들(BLK1 ~ BLKz)을 포함할 수 있다. 또한, 각각의 메모리 블록(예컨대, 제1 메모리 블록(BLK1))은 복수의 페이지들(PG1 ~ PGn)을 포함할 수 있다. 여기서, z와 n는 각각 양의 정수일 수 있고, 실시예에 따라 다양하게 변경될 수 있다. 예를 들어, 메모리 블록은 소거(Erase)의 단위이고, 페이지는 기록 및 독출의 단위일 수 있다. 스토리지 장치(100)로 밸류(VALUE)에 대한 기록 또는 독출 커맨드가 수신되면, 컨트롤러(110)는 페이지 단위의 맵핑 정보에 기반하여 밸류(VALUE)를 다수의 페이지들에 기록하거나, 또는 다수의 페이지들로부터 밸류(VALUE)를 독출할 수 있다. 또한, 스토리지 장치(100)는 내부적인 관리 동작(예컨대, 프리 블록 생성을 위한 가비지 컬렉션 동작 등)을 통해 블록 단위로 데이터를 소거하거나, 또는 본 발명의 실시예에 따라 안전 삭제 커맨드(SecureDel(KEY, VALUE))가 수신되면 컨트롤러(110)는 키(KEY)에 대한 맵핑 정보에 기반하여 하나 이상의 블록들을 판단하고 블록 단위로 데이터를 소거할 수 있다.
한편, 일부 실시예들에서, 메모리 셀 어레이(MCA)는 복수의 플레인들(planes), 복수의 다이들(dies), 또는 복수의 칩들(chips)을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리(120)는 플래쉬 메모리 장치를 포함할 수 있고, 예를 들어, 낸드(NAND) 플래쉬 메모리 장치를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 비휘발성 메모리(120)는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항성 메모리 장치를 포함할 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지, IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는 내부 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 SSD, 임베디드 UFS(Universal Flash Storage) 메모리 장치 또는 eMMC(embedded Multi-Media Card)일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
본 발명의 예시적인 실시예에 따르면, 키 밸류 인터페이스(Key Value Interface)를 가지는 스토리지 장치(100)는 안전 삭제(Secure Delete) 기능을 제공하며, 호스트(200)는 안전 삭제를 요청하는 커맨드(예컨대, 안전 삭제 커맨드(SecureDel(KEY, VALUE)))를 스토리지 장치(100)로 제공할 수 있다. 스토리지 장치(100)는 안전 삭제 커맨드(SecureDel(KEY, VALUE))를 통해 비휘발성 메모리(120)에 저장된 데이터를 물리적으로 소거하며, 이를 통해 비휘발성 메모리(120)에 데이터가 남아있지 않도록 함으로써 데이터 보안을 강화할 수 있으며, 기존의 블록 인터페이스(Block Interface) 스토리지에 대비하여 성능과 수명이 향상될 수 있다.
상기와 같은 본 발명의 실시예에 따른 오브젝트 기반 스토리지로서 키-밸류(key-value) 스토리지 장치(100)는, 주어진 속성을 기반으로 데이터 생성, 읽기, 쓰기, 삭제(deletion) 등의 데이터 관리를 수행함으로써 낸드 플래시의 물리적인 특성에 맞는 최적화를 가능하게 한다. 일 예로, 개인 데이터에 대한 보호가 중요해지면서 비휘발성 메모리(120)에 저장된 데이터의 빠른 삭제 및 접근에 대한 기록 유지가 중요해지고 있는데, 본 발명의 실시예에 따르면 안전 삭제 커맨드(SecureDel(KEY, VALUE))를 통해 비휘발성 메모리(120)에 저장된 데이터의 영구적인 삭제가 가능하며, 이를 통해 보안을 필요로 하는 중요 정보가 비휘발성 메모리(120)에 남아있지 않도록 보안 기능이 강화될 수 있다.
전술한 동작을 위한 일 실시예로서, 컨트롤러(110)는 안전 삭제 제어 모듈(111)을 포함할 수 있다. 안전 삭제 제어 모듈(111)은 하드웨어로 구현되거나 또는 소프트웨어로 구현될 수 있다. 또는, 안전 삭제 제어 모듈(111)은 하드웨어와 소프트웨어의 조합으로 구현될 수도 있다. 일 예로서, 안전 삭제 제어 모듈(111)이 소프트웨어로 구현되는 경우, 컨트롤러(110)는 소프트웨어를 실행하는 하나 이상의 프로세서들(미도시) 및 소프트웨어를 저장하는 메모리(미도시)를 포함할 수 있으며, 안전 삭제 제어 모듈(111)은 소프트웨어 형태로 상기 메모리에 로딩될 수 있다. 일 실시예에 따라, 컨트롤러(110)는 FTL(Flash Translation Layer)를 포함하고, 안전 삭제 제어 모듈(111)의 기능의 적어도 일부는 FTL에 포함될 수 있다.
안전 삭제 제어 모듈(111)은 전술한 실시예에 따라 안전 삭제 커맨드(SecureDel(KEY, VALUE))에 대응하는 소거 동작을 제어하기 위한 일련의 동작을 수행할 수 있다. 예컨대, 안전 삭제 제어 모듈(111)의 제어에 기반하여 비휘발성 메모리(120) 내의 데이터가 물리적 또는 영구적으로 삭제될 수 있다.
예시적인 실시예에 따라, 어느 하나의 키(KEY)에 대응하는 밸류(VALUE)는 이미지, 문서 등의 하나의 파일에 해당할 수 있으며, 호스트(200)는 파일 단위로 안전 삭제 요청을 제공할 수 있다. 또는, 다양한 실시예들로서, 호스트(200)는 하나의 파일을 두 개 이상의 밸류들로 분류하고, 어느 하나의 키(KEY)에 대응하는 밸류(VALUE)는 상기 파일의 일부에 해당하는 데이터를 포함할 수도 있다. 본 발명의 실시예들을 설명함에 있어서, 설명의 편의상 밸류와 파일이 동일한 개념으로 설명될 것이나, 본 발명의 실시예는 이에 국한될 필요가 없이 밸류는 다양한 종류의 데이터로 정의될 수 있을 것이다. 또한, 본 발명의 실시예를 설명함에 있어서 밸류와 파일의 용어는 혼용될 수 있을 것이다.
안전 삭제 제어 모듈(111)은 호스트(200)로부터의 안전 삭제 커맨드(SecureDel(KEY, VALUE))에 응답하여 파일을 비휘발성 메모리(120)로부터 영구적으로 삭제하기 위한 일련의 동작들을 제어할 수 있다. 일 실시예에 따라, 안전 삭제 제어 모듈(111)은 안전 삭제 커맨드(SecureDel(KEY, VALUE))에 응답하여 비휘발성 메모리(120)의 블록 단위로 소거 동작을 수행할 수 있으며, 삭제 대상의 파일의 데이터가 두 개 이상의 블록들에 기록됨에 따라 두 개 이상의 블록들을 소거하기 위한 일련의 동작들을 제어할 수 있다.
일 동작 예로서, 안전 삭제 제어 모듈(111)은 맵핑 테이블을 참조함으로써 키(KEY)에 대응하는 하나 이상의 블록들을 판단할 수 있으며, 만약 두 개 이상의 블록들에 대해 소거 동작이 수행되는 경우에는 소거 대상의 블록을 나타내는 위치 정보(예컨대, 블록 어드레스)를 순차적으로 출력할 수 있다. 즉, 안전 삭제 제어 모듈(111)은 호스트(200)로부터의 하나의 안전 삭제 커맨드(SecureDel(KEY, VALUE))에 응답하여 소거 대상의 두 개 이상의 블록들을 지시하는 블록 어드레스를 출력할 수 있으며, 컨트롤러(110)는 안전 삭제 제어 모듈(111)의 제어에 기반하여 판단된 다수의 블록들에 대해 순차적으로 또는 동시에 소거 동작을 수행할 수 있을 것이다.
한편, 도 1에서는 커맨드(CMD)가 키(KEY) 및 밸류(VALUE)를 함께 포함하는 것으로 도시되었으나, 메모리 동작의 특성 또는 종류에 따라 일부의 커맨드(CMD)는 밸류(VALUE)를 포함하지 않을 수 있을 것이다. 일 예로서, 호스트(200)는 안전 삭제를 원하는 파일을 지시하는 키(KEY)를 포함하는 안전 삭제 커맨드(SecureDel(KEY))를 스토리지 장치(100)로 제공할 수도 있을 것이다.
도 2는 도 1의 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 컨트롤러(110)는 안전 삭제 제어 모듈(111) 및 키-물리적 어드레스 변환 모듈(112)을 포함할 수 있으며, 안전 삭제 제어 모듈(111)은 블록 판단 모듈(111_1), 블록 선택 모듈(111_2) 및 소거 제어 모듈(111_3)을 포함할 수 있다. 키-물리적 어드레스 변환 모듈(112)은 키(KEY)를 이용한 어드레스 변환 동작을 수행함으로써 키(KEY)와 물리적 어드레스(PA) 사이의 맵핑 정보를 생성하고 이를 맵핑 테이블에 저장할 수 있으며, 또한 호스트(200)로부터 제공된 키(KEY)에 대한 맵핑 정보로서 물리적 어드레스(PA)를 출력할 수 있다. 또는, 컨트롤러(110)는 키(KEY)에 대한 해시 연산 등을 통해 해시 키(hashed key)를 생성할 수 있으며, 키-물리적 어드레스 변환 모듈(112)은 해시 키(hashed key)와 물리적 어드레스(PA) 사이의 맵핑 정보를 저장할 수 있다.
도 2에 도시된 안전 삭제 제어 모듈(111)의 구성 요소들은 안전 삭제에 관련된 각종 동작들을 기능 별로 분류한 구성으로서, 본 발명의 예시적인 실시예에 따른 안전 삭제 제어 모듈(111)의 구성은 도 2에 도시된 특징에 한정될 필요는 없다. 일 예로서, 안전 삭제와 관련하여, 소거 대상의 블록 판단, 블록 내의 유효 데이터의 존재 여부 및 종류, 유효 데이터를 다른 블록에 카피하는 동작, 판단된 블록들을 소거하는 동작들이 일련하게 수행될 수 있으며, 이들 중 적어도 일부의 기능은 안전 삭제 제어 모듈(111)에 포함되고, 나머지 일부의 기능은 컨트롤러(110)의 기존의 구성 요소들을 통해 수행될 수도 있을 것이다.
블록 판단 모듈(111_1)은 안전 삭제가 요청된 밸류(VALUE)가 저장된 하나 이상의 블록들을 판단할 수 있으며, 일 예로서 키-물리적 어드레스 변환 모듈(112)로부터 키(KEY)에 대응하는 물리적 어드레스(PA)를 수신하고, 이를 통해 블록 단위의 소거가 수행될 하나 이상의 블록들의 위치가 판단될 수 있다.
블록 선택 모듈(111_2)은 블록 단위의 소거 동작이 순차적으로 수행될 때, 소거가 수행될 블록을 선택하기 위한 블록 어드레스(ADD_BLK[1:k])를 출력할 수 있다. 일 예로서, 안전 삭제가 요청된 밸류(VALUE)가 k 개의 블록들에 저장되고, 블록 선택 모듈(111_2)은 블록 판단 모듈(111_1)로부터의 판단 결과에 기반하여 블록 어드레스(ADD_BLK[1:k])를 출력할 수 있다.
한편, 소거 제어 모듈(111_3)은 안전 삭제 커맨드(SecureDel(KEY, VALUE))를 디코딩한 내부 커맨드(Dec_CMD)에 응답하여 이에 대응하는 소거 동작을 제어할 수 있다. 일 예로서, 소거 제어 모듈(111_3)은 컨트롤러(110)가 비휘발성 메모리(120)로 블록 단위의 소거를 요청하는 내부 커맨드를 출력하도록 내부 제어신호(Ctrl_I)를 출력할 수 있다. 블록 판단 모듈(111_1)는 소거 제어 모듈(111_3)의 제어에 기반하여, 비휘발성 메모리(120)로 소거를 요청하는 내부 커맨드가 제공될 때 소거 대상의 블록을 지시하기 위한 블록 어드레스(ADD_BLK[1:k])를 출력할 수 있다.
전술한 본 발명의 실시예에 따라, 호스트(200)는 하나의 안전 삭제 커맨드(SecureDel(KEY, VALUE))를 제공함으로써 파일 단위의 정보를 비휘발성 메모리(120)로부터 영구적으로 삭제할 수 있으며, 또한 파일이 다수의 블록들에 분산되어 저장된 경우에도 하나의 안전 삭제 커맨드(SecureDel(KEY, VALUE))에 의해 다수의 블록들에 대해 소거 동작이 동시에 또는 순차적으로 수행될 수 있다. 이에 따라, 하나의 파일을 삭제하기 위해, 호스트(200)가 블록 단위의 소거 요청을 제공하고, 스토리지 장치(100)가 하나의 블록에 대한 소거가 완료되었음을 나타내는 응답(RESPONSE)을 제공하는 동작을 반복하는 경우에 비하여 데이터 삭제 동작의 속도가 향상될 수 있다.
도 3a,b는 블록 스토리지 시스템과 키-밸류 스토리지 시스템에서의 데이터 저장의 비교 예를 나타내는 개념도이다.
도 3a를 참조하면, 파일 시스템 기반의 블록 스토리지에서 호스트(HOST)는 논리적 어드레스를 관리할 수 있으며, 다수의 파일들(File 1 ~ File 4) 각각은 다수의 논리적 어드레스들에 의해 관리될 수 있다. 이 때, 각각의 파일의 데이터는 다수의 블록들에 랜덤하게 기록될 수 있으므로, 하나의 파일의 데이터를 저장하는 블록의 개수가 증가할 수 있다.
또한, 스토리지 장치는 호스트(HOST)로부터의 논리적 어드레스를 물리적 어드레스에 맵핑하여 데이터의 저장을 관리할 수 있다. 이 때, 기존의 블록 스토리지 장치에서는 데이터 삭제 요청 시 논리적인 소거(예컨대, 맵핑 정보의 삭제 등)를 통해 데이터를 소거(Logical Erase)하므로, 데이터가 스토리지 장치에 물리적으로 남아있게 된다. 만약, 스토리지 장치의 데이터를 물리적으로 소거(Physical Erase)하기 위해서는, 다수의 블록들 각각의 데이터의 유효/무효(valid/invalid) 여부를 판단하고, 유효 데이터를 다른 블록들로 카피하는 등 소거 동작을 위해 빈번한 가비지 컬렉션(Garbage Collection, GC)이 수행되어야 하고, 이로 인해 스토리지 장치의 성능 및 수명 저하가 발생하게 된다.
도 3b는 오브젝트 기반의 스토리지 시스템에서의 데이터 저장 예를 나타낸다.
본 발명의 실시예에 따른 키-밸류에 기반한 스토리지 장치는 안전 삭제(Secure Erase) 기능을 제공하며, 키-밸류 스토리지 장치는 키-밸류 프로토콜(Protocol)에 기반하여 데이터를 저장한다. 일 예로서, 키-밸류 스토리지 장치는 데이터를 저장함에 있어서, 동일한 키에 대응하는 데이터(예컨대, 밸류)는 같은 속성으로 판단하기 때문에 동일 또는 인접한 하나 이상의 블록들에 상기 데이터를 상대적으로 또는 최대한 순차적으로 관리한다. 즉, 키-밸류 스토리지 장치는 키와 관련된 데이터(또는, 밸류)를 즉시 읽는 장점을 포함함과 함께, 키에 관련된 데이터를 하나 또는 최소한의 개수의 블록에 저장할 수 있다.
이에 따라, 본 발명의 예시적인 실시예에 따르면 가변 사이즈의 키-밸류를 갖는 키-밸류 인터페이스 기반의 스토리지 장치에서, 소정의 단위(예컨대, 키 또는 밸류 단위)의 안전 삭제 기능을 제공하고, 키에 대응하는 밸류가 상대적으로 적은 개수의 블록에 저장될 수 있으며, 이에 따라 키에 해당하는 데이터를 안전 삭제할 시에 발생되는 가비지 컬렉션의 수행 횟수를 최소화 할 수 있다. 따라서, 안전 삭제 동작 시 성능 및 수명 관리가 블록 기반의 스토리지 장치에 대비하여 용이할 수 있다. 또한, 일부의 경우에 상기 밸류가 두 개 이상의 블록들에 걸쳐서 저장되더라도, 상기 밸류가 저장된 블록의 개수가 기존의 블록 기반의 스토리지 장치에 비해 상대적으로 적을 수 있으며, 안전 삭제 동작 시 동일한 블록 내의 데이터만을 소거하거나, 또는 최소한의 개수의 블록들 내의 데이터만을 소거하기 때문에 머지(Merge) 동작에 대한 오버헤드(O/H)가 최소화될 수 있다.
도 4a,b는 예시적인 실시예에 따른 어드레스 변환 동작 및 비휘발성 메모리에 저장되는 정보를 나타내는 도면이다.
도 1 및 도 4a를 참조하면, 호스트(200)는 파일에 대한 기록 및 독출 동작을 위해 키(KEY)를 스토리지 장치(100)로 제공하고, 스토리지 장치(100)는 키(KEY)에 대해 해시 연산을 수행함으로써, 해시 키(hashed key)를 생성할 수 있다.
또한, 해시 키(hashed key)를 물리적 어드레스(PA)로 변환한 맵핑 정보가 맵핑 테이블에 저장될 수 있으며, 일 예로서 해시 연산을 통해 생성된 해시 키(hashed key)를 맵핑 인덱스, 다시 말해, 해시 인덱스로 사용하고, 맵핑 인덱스 별로 물리적 어드레스(PA)를 저장할 수 있다. 전술한 바와 같이 물리적 어드레스(PA)는 비휘발성 메모리(120)에 밸류를 저장하기 위한 블록 어드레스 및 페이지 어드레스를 포함할 수 있다.
한편, 도 4b를 참조하면, 비휘발성 메모리(120)에는 키-밸류와 함께 키-밸류 헤더 정보가 저장될 수 있다. 일 예로서, 비휘발성 메모리(120)는 키-밸류 헤더 정보가 저장되는 제1 영역(HR), 키가 저장되는 제2 영역(KR) 및 밸류가 저장되는 제3 영역(VR)을 포함할 수 있으며, 호스트(200)로부터 제공되는 키(KEY)가 큰 가변 사이즈를 가질 수 있으므로, 호스트(200)로부터의 키(KEY)는 컨트롤러(110) 내의 메모리, 예를 들어, DRAM에 저장됨이 없이, 키(KEY)는 밸류와 함께 비휘발성 메모리(120)에 저장될 수 있다. 한편, 키-밸류 헤더 정보는 대응하는 키-밸류에 관련된 메타 데이터를 포함할 수 있으며, 예를 들어, 키(KEY)와 밸류의 사이즈에 관련된 정보를 포함할 수 있다. 스토리지 장치(100)는 키-밸류 헤더 정보를 이용하여 키(KEY)와 밸류(VALUE)를 구분할 수 있다.
도 5는 키와 물리적 어드레스 사이의 맵핑 정보의 일 예를 나타내는 표이다. 도 5에서는 맵핑 정보로서 키(KEY)가 예시되나, 전술한 바와 같이 키(KEY)에 대해 해시 연산이 수행되고, 해시 키 및 이에 대응하는 물리적 어드레스의 맵핑 정보가 맵핑 테이블에 저장될 수도 있을 것이다. 또한, 도 5에서는 어느 하나의 키(KEY)가 다수의 페이지들의 물리적 어드레스에 맵핑되는 것으로 도시되었으나, 이는 키(KEY)에 대응하는 밸류가 저장된 다수의 위치들을 개념적으로 나타내기 위한 것으로서, 실제적으로 맵핑 정보는 도 5에 도시된 구성에 한정될 필요는 없다. 일 예로서, 키(KEY)를 이용하여 페이지 단위의 다수의 맵핑 인덱스들이 생성되고, 하나의 맵핑 인덱스와 하나의 물리적 어드레스 사이의 맵핑 정보가 맵핑 테이블에 저장될 수도 있을 것이다.
도 5를 참조하면, 제1 키(KEY 1)에 대응하는 제1 밸류가 비휘발성 메모리에 저장되고, 일 예로서 제1 키(KEY 1)에 대응하는 제1 밸류는 제1 블록(BLK1) 및 제2 블록(BLK2)에 저장될 수 있다. 도 5에서는, 제1 밸류가 제1 블록(BLK1)의 A 개의 페이지들과 제2 블록(BLK2)의 B 개의 페이지들에 저장되는 예가 도시된다. 한편, 제2 키(KEY 2)에 대응하는 제2 밸류가 비휘발성 메모리에 저장되며, 일 예로서 제2 밸류는 하나의 블록으로서 제3 블록(BLK3)의 C 개의 페이지들에 저장될 수 있다.
스토리지 장치는 호스트로부터의 요청에 응답하여 파일 단위로 데이터를 삭제할 수 있으며, 제1 키(KEY 1)를 포함하는 안전 삭제 커맨드가 수신됨에 따라 제1 블록(BLK1) 및 제2 블록(BLK2)에 대한 소거 동작을 수행할 수 있다. 만약, 제1 블록(BLK1) 및 제2 블록(BLK2) 각각에 다른 파일들에 관련된 유효 데이터(미도시)가 저장된 경우에는, 스토리지 장치는 제1 블록(BLK1) 및 제2 블록(BLK2)의 유효 데이터를 다른 블록에 카피하고, 카피 동작이 완료되고 난 후 제1 블록(BLK1) 및 제2 블록(BLK2)에 대한 소거 동작을 수행할 수 있다.
일 동작 예로서, 스토리지 장치는 호스트로부터의 하나의 안전 삭제 커맨드에 응답하여 제1 블록(BLK1) 및 제2 블록(BLK2)의 유효 데이터의 카피 동작 및 소거 동작을 일련하게 수행할 수 있다. 예컨대, 제1 키(KEY 1)를 이용하여 맵핑 테이블을 참조하고, 이를 통해 소거가 수행될 하나 이상의 블록들로서 제1 블록(BLK1) 및 제2 블록(BLK2)이 판단될 수 있으며, 또한 제1 블록(BLK1) 및 제2 블록(BLK2)에 저장된 유효 데이터의 위치가 판단될 수 있다. 일 동작 예로서, 제1 블록(BLK1)의 유효 데이터를 다른 블록에 카피하고 제1 블록(BLK1)을 소거한 후, 제2 블록(BLK2)의 유효 데이터를 다른 블록에 카피하고 제2 블록(BLK2)을 소거할 수 있다. 또는, 제1 블록(BLK1) 및 제2 블록(BLK2)의 유효 데이터를 다른 블록에 카피한 후 제1 블록(BLK1) 및 제2 블록(BLK2)이 순차적으로 또는 함께 소거될 수 있다.
한편, 호스트로부터의 제2 키(KEY 2)를 포함하는 안전 삭제 커맨드에 응답하여 제2 파일이 소거될 수 있으며, 제2 파일이 하나의 블록으로서 제3 블록(BLK3)에 저장됨에 따라 하나의 블록을 소거함으로써 안전 삭제 커맨드에 대한 동작이 완료될 수 있다. 예컨대, 제3 블록(BLK3)에 다른 파일의 유효 데이터가 저장된 경우에는, 제3 블록(BLK3)의 유효 데이터를 다른 블록에 카피한 후 제3 블록(BLK3)이 소거될 수 있다.
도 6은 본 발명의 예시적인 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
도 6을 참조하면, 키-밸류 프로토콜에 따른 데이터의 기록 방식에 따라, 어느 하나의 파일의 데이터(예컨대, 제1 키에 대응하는 제1 밸류)가 스토리지 장치의 하나 또는 그 이상의 블록에 저장될 수 있다. 일 예로서 제1 밸류의 데이터는 다수의 블록들에 대해 랜덤하게 기록되는 것이 아니라, 하나의 블록의 다수의 페이지들에 기록된 후 다른 블록에 순차적으로 기록될 수 있다. 상기와 같은 기록 동작에 따라 제1 키와 물리적 어드레스 사이의 맵핑 정보가 맵핑 테이블에 저장되고, 그 이후 스토리지 장치는 호스트로부터 제1 키에 대응하는 제1 밸류의 안전 삭제 요청을 수신할 수 있다(S11).
스토리지 장치는 호스트로부터의 제1 키를 이용하여 맵핑 테이블을 참조하고, 이를 통해 소거 대상의 블록들의 개수 및 위치를 판단할 수 있다(S12). 또한, 맵핑 테이블을 참조함에 의해, 소거 대상의 블록들에 다른 파일에 관련된 유효 데이터가 저장되어 있는지의 여부가 판단될 수 있다.
상기와 같은 판단 결과에 따라, 스토리지 장치는 앞서 판단된 블록들에 대해 유효 데이터를 다른 블록에 카피하는 동작을 수행하고(S13), 카피 동작이 완료된 후 상기 판단된 블록들에 대한 물리적 소거 동작을 수행할 수 있다(S14). 일 예로서, 두 개 이상의 블록들이 소거 대상의 블록으로 판단된 경우, 스토리지 장치는 상기 판단된 두 개 이상의 블록들에 대한 소거 동작을 순차적으로 또는 함께 수행하여 파일 단위로 삭제 동작을 수행할 수 있으며, 두 개 이상의 블록들의 소거 동작을 완료한 후 호스트로부터의 커맨드에 응답하는 삭제 완료 응답을 호스트로 제공할 수 있다(S15).
도 7은 도 6의 플로우차트에 따른 안전 소거 동작을 도식화한 개념도이다.
도 7을 참조하면, 호스트(HOST)는 제1 키(KEY1)에 대응하는 밸류를 소거하기 위하여 제1 키(KEY1)를 포함하는 안전 삭제 커맨드(SecureDel)를 스토리지 장치로 제공하고(S21), 스토리지 장치의 컨트롤러(Controller)는 안전 삭제 커맨드(SecureDel)에 응답하여 안전 소거와 관련된 각종 동작들을 일련하게 수행할 수 있다. 전술한 실시예들에 따라, 컨트롤러(Controller)는 제1 키(KEY1)를 이용한 맵핑 테이블 참조를 통해 소거 대상의 블록을 판단하고(S22), 판단된 블록에 대한 유효 데이터 카피 동작을 수행하기 위해 내부 커맨드(CMD_I(Copy))를 비휘발성 메모리(NVM)으로 제공하며(S23), 비휘발성 메모리(NVM)는 판단된 블록에 존재하는 유효 데이터를 다른 블록에 카피할 수 있다(S24). 일 예로서, 소거 대상으로 판단된 다수의 블록들로서 제1 내지 제K 블록들(BLK 1 ~ BLK K)이 존재할 때, 컨트롤러(Controller)는 유효 데이터의 위치를 나타내는 물리적 어드레스 및 카피가 수행될 위치를 나타내는 물리적 어드레스를 비휘발성 메모리(NVM)로 제공할 수 있고, 비휘발성 메모리(NVM)는 제1 내지 제K 블록들(BLK 1 ~ BLK K)에 존재하는 유효 데이터를 다른 블록에 카피할 수 있다.
유효 데이터에 대한 카피 동작이 완료된 후 컨트롤러(Controller)는 제1 내지 제K 블록들(BLK 1 ~ BLK K)에 대한 소거 동작을 수행하기 위해 내부 커맨드(CMD_I(Erase))와 블록 어드레스(ADD_BLK)를 비휘발성 메모리(NVM)으로 제공하며(S25), 비휘발성 메모리(NVM)는 내부 커맨드(CMD_I(Erase))에 따라 제1 내지 제K 블록들(BLK 1 ~ BLK K)에 대해 소거 동작을 수행하고(S26, S27), 소거 동작이 완료된 후 컨트롤러(Controller)는 삭제 완료 응답을 호스트로 제공할 수 있다(S28).
이하에서는, 본 발명에 적용 가능한 다양한 실시예들에 따른 스토리지 장치가 설명된다.
도 8a,b 및 도 9는 하나의 블록이 하나의 파일을 선택적으로 저장하는 경우에서의 안전 삭제 동작을 나타내는 도면이다.
도 8a를 참조하면, 스토리지 장치에 구비되는 컨트롤러(300)는 안전 삭제 제어 모듈(310), 밸류 기록 제어 모듈(320) 및 맵핑 테이블(330)을 포함할 수 있다. 전술한 실시예에서와 유사하게, 안전 삭제 제어 모듈(310) 및 밸류 기록 제어 모듈(320) 각각은 하드웨어적 구성을 통해 구현될 수도 있으며, 또는 프로세서에 의해 실행 가능한 프로그램들을 포함함에 따라 소프트웨어로 구현될 수도 있다. 또는, 전술한 바와 같이 안전 삭제 제어 모듈(310) 및 밸류 기록 제어 모듈(320) 각각은 하드웨어와 소프트웨어의 조합에 의해 구현될 수도 있을 것이다.
안전 삭제 제어 모듈(310)은 전술한 실시예들에 따라 호스트로부터의 안전 삭제 커맨드에 응답하여 하나 이상의 블록들을 소거하기 위한 일련의 동작들을 제어할 수 있다. 밸류 기록 제어 모듈(320)은 호스트로부터 밸류의 기록 요청이 수신될 때, 호스트로부터의 키(Key)를 이용한 어드레스 변환 동작을 통해 키(Key)를 하나 이상의 블록의 페이지들을 나타내는 물리적 어드레스에 맵핑시키고, 맵핑된 물리적 어드레스가 지시하는 영역에 밸류를 기록할 수 있다. 이 때, 키(Key)를 이용한 어드레스 변환 동작은 하나의 블록이 하나의 파일을 선택적으로 저장하도록 제어될 수 있다.
일 예로서, 도 8b를 참조하면, 제1 파일(File 1)에 해당하는 밸류의 기록이 요청될 때, 밸류의 사이즈는 하나의 블록의 사이즈를 초과하는 크기를 가질 수 있으며, 하나의 블록에 제1 파일(File 1)의 데이터의 일부가 기록되고 난 후 나머지 데이터는 다른 블록에 순차적으로 기록될 수 있다. 도 8b에는 제1 블록(BLK 1)에 제1 파일(File 1)의 일부의 데이터가 기록되고, 나머지 일부의 데이터는 제2 블록(BLK 2)에 기록되는 예가 도시된다. 또한, 제2 파일(File 2)에 해당하는 밸류의 사이즈는 하나의 블록의 사이즈보다 작음에 따라 제2 파일(File 2)의 데이터는 제P 블록(BLK P)의 일부의 영역에 저장되는 예가 도시된다.
밸류 기록 제어 모듈(320)의 제어에 기반하여 제2 블록(BLK 2)의 일부의 영역에 제1 파일(File 1)의 데이터가 기록되면, 제2 블록(BLK 2)의 나머지 영역은 다른 파일의 데이터가 기록됨이 없이 무효한 상태가 유지된다. 또한, 제P 블록(BLK P)의 일부의 영역에는 제2 파일(File 2)의 데이터가 기록되고, 제P 블록(BLK P)의 나머지 영역은 다른 파일의 데이터가 기록됨이 없이 무효한 상태가 유지된다. 상기와 같은 기록 동작에 따른 키(KEY)와 물리적 어드레스 사이의 맵핑 정보가 맵핑 테이블(330)에 저장될 수 있다.
이후, 호스트로부터의 커맨드에 따라 제1 파일(File 1) 및 제2 파일(File 2)에 대한 안전 삭제가 요청될 수 있으며, 스토리지 장치는 요청에 대응하는 안전 삭제 동작을 수행할 수 있다. 예컨대, 제1 파일(File 1)에 대한 안전 삭제가 요청될 때, 전술한 실시예들에 따라 스토리지 장치는 제1 파일(File 1)의 데이터가 저장된 제1 블록(BLK 1) 및 제2 블록(BLK 2)에 대한 소거 동작을 일련하게 수행할 수 있으며, 또한 제1 블록(BLK 1) 및 제2 블록(BLK 2)에는 다른 파일의 유효 데이터가 저장되어 있지 않으므로, 유효 데이터의 카피 동작을 수행함이 없이 삭제 동작이 완료될 수 있다.
도 9는 도 8a,b에 도시된 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
도 9를 참조하면, 호스트로부터 제1 키 및 이에 대응하는 제1 밸류의 기록 요청이 수신됨에 따라(S31), 스토리지 장치는 제1 키를 이용한 어드레스 변환 동작을 수행하여 물리적 어드레스를 생성하고, 생성된 물리적 어드레스를 기초로 하나 이상의 블록들을 선택할 수 있다(S32). 또한, 스토리지 장치는 기록 요청된 제1 밸류에 해당하는 파일의 데이터를 선택된 블록들에 기록하고, 선택된 블록들에서 데이터가 기록되지 않은 페이지들에는 다른 파일의 데이터를 기록하지 않고 무효 상태를 유지할 수 있다(S33).
이후, 스토리지 장치는 호스트로부터 제1 밸류에 대한 안전 삭제 요청을 수신할 수 있으며(S34), 스토리지 장치는 전술한 실시예들에 따라 제1 밸류가 저장된 하나 이상의 블록들에 대해 소거 동작을 수행하고, 이 때 유효 데이터에 대한 카피 동작을 수행함이 없이 삭제 동작이 완료될 수 있다(S35).
도 10은 본 발명의 일 실시예에 따른 안전 삭제 동작에서 유효 데이터의 카피 동작을 나타내는 개념도이다. 도 10에서는 하나의 블록에 두 개 이상의 파일들의 데이터가 기록될 수 있음에 따라, 안전 삭제 동작시에 유효 데이터의 카피 동작이 발생되는 예가 도시된다.
도 10을 참조하면, 제1 파일(File 1)의 데이터는 제1 블록(BLK 1) 및 제2 블록(BLK 2)에 기록될 수 있으며, 제2 블록(BLK 2)의 일부의 영역에는 제2 파일(File 2) 및 제3 파일(File 3)의 데이터가 기록될 수 있다. 이 때, 제1 파일(File 1)에 대한 안전 삭제가 요청됨에 따라 제1 블록(BLK 1) 및 제2 블록(BLK 2)에 대한 소거 동작이 수행될 수 있다. 이 때, 제2 블록(BLK 2)에 저장된 제2 파일(File 2) 및 제3 파일(File 3)의 유효 데이터가 다른 블록에 카피될 필요가 있다.
스토리지 장치는 맵핑 테이블에 저장된 맵핑 정보를 이용하여 소거 대상의 제1 블록(BLK 1) 및 제2 블록(BLK 2)을 판단하고, 또한 제2 블록(BLK 2)에 저장된 유효 데이터가 판단될 수 있다. 이와 함께, 스토리지 장치는 맵핑 정보를 이용하여 제2 파일(File 2)의 다른 데이터가 저장된 블록(예컨대, 제P 블록(BLK P))과 제3 파일(File 3)의 다른 데이터가 저장된 블록(예컨대, 제Q 블록(BLK Q))을 판단할 수 있다.
스토리지 장치는 안전 삭제 동작 시 유효 데이터를 카피함에 있어서, 유효 데이터와 동일한 파일의 데이터가 저장된 블록을 판단하고, 상기 유효 데이터를 판단된 블록에 카피할 수 있다. 일 예로서, 제2 블록(BLK 2)에 저장된 제2 파일(File 2)의 유효 데이터는 제2 파일(File 2)의 다른 데이터가 저장된 제P 블록(BLK P)에 카피될 수 있으며, 또한 제3 파일(File 3)의 유효 데이터는 제3 파일(File 3)의 다른 데이터가 저장된 제Q 블록(BLK Q)에 카피될 수 있다. 상기와 같은 유효 데이터의 카피 동작에 따라, 이후 제2 파일(File 2) 및 제3 파일(File 3)에 대한 안전 삭제 요청이 수신될 때, 유효 데이터의 카피 동작이 최소화될 수 있음과 함께, 소거 동작이 수행되는 블록의 개수가 감소될 수 있다.
도 11은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 11을 참조하면, 스토리지 시스템(400)은 스토리지 장치(410) 및 호스트(420)를 포함하고, 스토리지 장치(410)는 컨트롤러(411) 및 비휘발성 메모리(Non Volatile Memory, NVM)(412)를 포함할 수 있다. 스토리지 장치(410)는 키-밸류 스토리지 장치 또는 키-밸류 스토어(store)일 수 있으며, 호스트(420)는 키-밸류(KEY, VALUE)를 포함하는 커맨드(CMD)를 스토리지 장치(410)로 제공할 수 있다. 도 11에 도시된 스토리지 장치(410)의 구성 및 동작 예를 설명함에 있어서, 전술한 실시예에서 설명된 구성과 동일한 구성에 대해서는 자세한 설명은 생략된다.
컨트롤러(411)는 안전 삭제 제어 모듈(411_1) 및 인덱스 관리 모듈(411_2)을 포함할 수 있다. 안전 삭제 제어 모듈(411_1)은 전술한 실시예들에 따라 호스트(420)로부터의 안전 삭제 요청에 응답하여 밸류 단위(또는, 파일 단위)의 데이터를 삭제하기 위한 일련의 동작들을 제어할 수 있으며, 일 예로서 하나의 안전 삭제 커맨드(SecureDel(KEY, VALUE))에 응답하여 두 개 이상의 블록들에 대한 소거 동작을 수행할 수 있다. 또한, 전술한 실시예들에 따라 하나의 블록에 하나의 파일만이 선택적으로 저장되는 경우에는 유효 데이터에 대한 카피 동작 없이 삭제 동작이 완료될 수도 있다.
한편, 스토리지 장치(410)는 비휘발성 메모리(411)에 저장된 데이터에 관련된 각종 정보나 변경 히스토리 등의 상태 정보(예컨대, 인덱스 정보)를 저장 및 관리하며, 이에 따라 비휘발성 메모리(411)에 저장된 데이터의 접근에 대한 기록 유지가 수행될 수 있다. 또한 사용자는 원하는 데이터(예컨대, 유저의 개인 정보 등)에 대한 사용 기록 등을 확인 할 수 있는 상태 요청 커맨드(StatQuery(KEY, VALUE))를 정의함으로써 데이터의 보안과 스토리지 장치의 효율적 관리가 최적화될 수 있다.
전술한 동작을 위한 일 실시예로서, 컨트롤러(411)는 인덱스 관리 모듈(411_2)을 포함할 수 있으며, 인덱스 관리 모듈(411_2)은 하드웨어로 구현되거나 또는 소프트웨어로 구현될 수 있다. 또는, 인덱스 관리 모듈(411_2)은 하드웨어와 소프트웨어의 조합으로 구현될 수도 있다. 일 예로서, 인덱스 관리 모듈(411_2)이 소프트웨어로 구현되는 경우, 컨트롤러(110)는 소프트웨어를 실행하는 하나 이상의 프로세서들(미도시) 및 소프트웨어를 저장하는 메모리(미도시)를 포함할 수 있으며, 인덱스 관리 모듈(411_2)은 소프트웨어 형태로 메모리에 로딩될 수 있다. 일 실시예에 따라, 컨트롤러(411)는 FTL(Flash Translation Layer)를 포함하고, 인덱스 관리 모듈(411_2)은 FTL에 포함될 수 있다.
인덱스 관리 모듈(411_2)은 비휘발성 메모리(412) 내의 데이터에 관한 다양한 종류의 상태 정보를 인덱스 정보로서 관리할 수 있다. 예컨대, 비휘발성 메모리(412)에 데이터가 새로이 기록되는 경우 데이터 기록 시각을 인덱스 정보로서 관리하거나, 또는 비휘발성 메모리(412)에 저장된 데이터의 억세스 횟수, 데이터의 변경 내역 및 변경 횟수 등 각종 정보들이 상기 인덱스 정보에 포함될 수 있으며, 인덱스 관리 모듈(411_2)은 비휘발성 메모리(412)에 상기 인덱스 정보를 저장할 수 있다. 또한, 인덱스 관리 모듈(411_2)은 호스트(420)로부터의 상태 요청 커맨드(StatQuery(KEY, VALUE))에 응답하여 인덱스 정보를 호스트(420)로 제공할 수 있다.
인덱스 관리 동작과 관련한 구체적인 일 예를 설명하면 다음과 같다. 도 12 및 도 13은 본 발명의 예시적인 실시예에 따른 데이터 관리 동작의 일 예를 나타내는 블록도이다.
도 11 및 도 12를 참조하면, 스토리지 장치(410)는 호스트(420)로부터 상태 요청 커맨드(StatQuery(KEY, VALUE))를 수신할 수 있으며, 상기 상태 요청 커맨드(StatQuery(KEY, VALUE))에 응답하여 그 내부의 인덱스 정보(Index)를 호스트(420)로 제공할 수 있다. 스토리지 장치(410)는 전술한 실시예에서의 컨트롤러(CTRL, 411)를 포함하고, 컨트롤러(411)의 제어에 기반하여 비휘발성 메모리(412)에 키 및 이에 대응하는 밸류를 저장할 수 있다. 도 12에서는 제1 키(KEY 1) 및 이에 대응하는 제1 밸류(VALUE 1)가 예시되며, 도 12의 인덱스 정보(Index)는 제1 키(KEY 1)에 대응하는 제1 밸류(VALUE 1)에 관련된 각종 상태 정보일 수 있다.
컨트롤러(CTRL, 411)는 제1 밸류(VALUE 1)에 관련된 각종 상태 정보들을 인덱스 정보(Index)로서 비휘발성 메모리(412)에 저장하고 업데이트하는 동작을 제어할 수 있다. 또한, 호스트(420)로부터 제1 키(KEY 1)에 대한 상태 요청 커맨드(StatQuery(KEY, VALUE))가 제공된 경우, 컨트롤러(CTRL, 411)는 제1 밸류(VALUE 1)에 관련된 인덱스 정보(Index)를 독출하고 이를 호스트(420)로 제공할 수 있다.
일 실시예에 따라, 컨트롤러(CTRL, 411)는 다양한 상태 정보들을 인덱스 정보(Index)로서 저장 및 관리할 수 있다. 예컨대, 제1 밸류(VALUE 1)에 대한 기록 커맨드가 제공되는 경우, 제1 밸류(VALUE 1)의 기록 시각에 관련된 정보(예컨대, 데이터의 수명(Age))가 인덱스 정보(Index)에 포함될 수 있다. 다양한 방식에 따라 기록 시각이 판단될 수 있으며, 일 예로서 호스트(420)가 시각 정보를 스토리지 장치(410)로 제공하고, 또한 스토리지 장치(410)는 제1 밸류(VALUE 1)의 기록 시점에 타임 스탬프(Time stamp)를 기반으로 하여 내부의 클록 카운터(Clock counter)를 통해 기록 시각을 계산할 수 있다. 또한, 제1 밸류(VALUE 1)의 억세스 횟수에 관련된 정보가 인덱스 정보(Index)에 포함될 수 있으며, 일 예로서 Get(KEY, VALUE), Iterate(KEY, VALUE) 등의 다양한 커맨드들을 통해 제1 밸류(VALUE 1)가 참조될 수 있으며, 제1 밸류(VALUE 1)를 참조한 횟수가 업데이트될 수 있다. 제1 밸류(VALUE 1)가 기록되는 시점에서는 억세스 횟수(또는, 독출 카운트)가 0 으로 설정될 수 있으며, 전술한 Get(KEY, VALUE), Iterate(KEY, VALUE) 등의 커맨드를 통해 독출 카운트가 증가될 수 있다.
상기와 같은 인덱스 정보(Index)는 키(KEY) 별로 저장 및 관리될 수 있으며, 호스트로부터 상태 요청 커맨드(StatQuery(KEY, VALUE))가 제공될 때, 키(KEY)에 대응하는 인덱스 정보(Index)가 호스트로 제공될 수 있다.
또한, 제1 키(KEY 1)에 대응하는 제1 밸류(VALUE 1)의 값이 일부 변경이 된 경우에, 상기 제1 밸류(VALUE 1)의 변경 이력이 인덱스 정보(Index)로서 관리될 수 있다. 예컨대, 상기 제1 밸류(VALUE 1)는 다수 회 변경이 수행될 수 있으며, 상기 다수 회의 변경 이력이 인덱스 정보(Index)로서 관리될 수 있다. 인덱스 정보(Index)는 상기 제1 밸류(VALUE 1)의 변경된 내용을 포함할 수 있으며, 또한 상기 제1 밸류(VALUE 1)의 변경 횟수 등의 정보를 포함할 수 있다.
도 13을 참조하면, 호스트(420)로부터 기록 명령(Write(Put))이 제공되면, 컨트롤러(CTRL, 411)는 제1 키(KEY 1)에 대응하는 제1 밸류(VALUE 1)를 비휘발성 메모리(412)의 다수의 페이지들에 기록할 수 있으며, 상기 제1 밸류(VALUE 1)에 관련된 인덱스 정보(Index)를 생성하여 상기 제1 키(KEY 1), 제1 밸류(VALUE 1)와 함께 상기 비휘발성 메모리(412)에 함께 저장할 수 있다. 이후, 호스트(420)로부터 상태 요청 커맨드(StatQuery(KEY, VALUE))가 제공되면, 컨트롤러(CTRL, 411)는 제1 키(KEY 1)에 대응하는 제1 밸류(VALUE 1)가 저장된 위치를 확인하고, 제1 밸류(VALUE 1)에 대응하는 인덱스 정보(Index)를 독출하여 호스트(420)로 제공할 수 있다.
도 14는 본 발명의 다른 예시적인 실시예에 따른 스토리지 장치의 동작방법을 나타내는 플로우차트이다.
도 14를 참조하면, 스토리지 장치는 호스트와 통신하여 각종 메모리 동작의 요청을 수신할 수 있으며(S41), 다양한 종류의 요청을 나타내는 커맨드들을 호스트로부터 수신할 수 있다. 일 예로서, 다양한 종류의 커맨드들 중 일부는 전술한 인덱스 정보를 관리할 필요가 있는 커맨드에 해당하고, 다른 일부의 커맨드들은 인덱스 정보의 관리가 수행되지 않는 커맨드에 해당할 수 있다. 스토리지 장치는 호스트로부터의 커맨드 종류를 판단하고, 수신된 커맨드가 인덱스 정보를 관리하는 커맨드에 해당하는 지를 판단할 수 있다(S42).
일 예로서, 호스트로부터의 커맨드가 데이터를 기록하거나, 또는 데이터의 변경 및 독출 등 인덱스 정보의 관리를 필요로 하는 커맨드에 해당함에 따라, 호스트로부터의 커맨드에 응답하여 인덱스 정보를 생성하거나 업데이트할 수 있다(S43). 또한, 스토리지 장치는 인덱스 정보에 대한 관리 동작과 함께 호스트로부터의 커맨드에 대응하는 메모리 동작을 수행할 수 있다(S44).
이후, 호스트는 파일들의 상태를 판단하기 위해 상태 요청 커맨드를 스토리지 장치로 제공할 수 있으며, 스토리지 장치는 상태 요청 커맨드를 수신하고(S45), 호스트로부터의 키에 대응하는 밸류의 인덱스 정보를 독출하고 이를 호스트로 제공할 수 있다(S46).
한편, 전술한 실시예에서는 스토리지 장치가 인덱스 정보를 생성하고, 또한 업데이트 동작을 통해 인덱스 정보를 변경하는 것으로 설명되었으나 본 발명의 실시예는 이에 국한될 필요가 없다. 일 예로서, 호스트가 독출 카운트 정보, 타임 스탬프 정보 등 다양한 종류의 인덱스 정보를 생성하고 이를 스토리지 장치로 제공할 수 있으며, 또한 호스트는 스토리지 장치로부터 인덱스 정보를 수신하고, 업데이트된 인덱스 정보를 생성하여 이를 스토리지 장치로 제공할 수도 있을 것이다.
도 15는 인덱스 정보의 관리 동작의 일 예를 도식화한 개념도이다.
도 15를 참조하면, 호스트(HOST)는 제1 키(KEY 1)에 대응하는 제1 밸류(VALUE 1)에 대한 기록/독출을 위해 스토리지 장치로 기록/독출 커맨드(PUT/GET CMD)를 제공하고(S51), 컨트롤러(Controller)는 제1 밸류(VALUE 1)의 기록/독출을 수행하기 위해 내부 커맨드(CMD_I(WR/RD))를 비휘발성 메모리(NVM)로 제공할 수 있다(S52). 제1 밸류(VALUE 1)는 비휘발성 메모리(NVM)의 하나 이상의 블록들로서 제1 내지 제a 블록들(BLK 1 ~ BLK a)에 기록되거나 제1 내지 제a 블록들(BLK 1 ~ BLK a)로부터 독출될 수 있으며, 비휘발성 메모리(NVM)는 제1 내지 제a 블록들(BLK 1 ~ BLK a)에 인덱스 정보(INDEX)를 저장하거나 또는 인덱스 정보(INDEX)를 업데이트할 수 있다(S53, S54). 또한, 컨트롤러(Controller)는 제1 밸류(VALUE 1)에 대한 기록/독출 동작이 완료되면 완료 응답(RESPONSE)을 호스트(HOST)로 제공할 수 있다(S55). 도 15에서는 인덱스 정보(INDEX)가 다수의 블록들에 저장되는 예가 도시되었으나, 전술한 바와 같이 인덱스 정보(INDEX)는 하나의 블록에 저장될 수도 있을 것이다.
이후, 호스트(HOST)는 스토리지 장치로 제1 밸류(VALUE 1)에 대한 인덱스 정보(INDEX)를 요청하는 상태 요청 커맨드(StatQuery(KEY 1))를 제공할 수 있으며(S57), 컨트롤러(Controller)는 상태 요청 커맨드(StatQuery(KEY 1))에 응답하여 제1 내지 제a 블록들(BLK 1 ~ BLK a)에 저장된 인덱스 정보(INDEX)를 독출하기 위한 내부 커맨드(CMD_I(RD_index))를 비휘발성 메모리(NVM)으로 제공할 수 있다(S57). 비휘발성 메모리(NVM)는 내부 커맨드(CMD_I(RD_index))에 응답하여 인덱스 정보(INDEX)를 독출할 수 있으며(S58, S59), 컨트롤러(Controller)는 인덱스 정보(INDEX)의 출력이 완료되었음을 나타내는 응답(RESPONSE)을 호스트(HOST)로 제공할 수 있다(S60).
도 16은 도 1의 스토리지 장치의 비휘발성 메모리(NVM)의 일 구현 예를 나타내는 구조도이다. 스토리지 장치가 플래시 메모리 칩을 구비하는 경우, 도 16은 플래시 메모리 칩의 하나의 블록이 3D 형태로 구현되는 예를 나타낸다.
도 16을 참조하면, 비휘발성 메모리(NVM)의 블록(BLK)은 기판(SUB)에 대해 수직 방향으로 형성되어 있다. 도 16에서는, 블록(BLK)이 2 개의 선택 라인들(GSL, SSL), 8 개의 워드 라인들(WL1 ~ WL8), 그리고 3 개의 비트 라인들(BL1 ~ BL3)을 포함하는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
기판(SUB)은 제1 도전형(예를 들어, p 타입)을 가지며, 기판(SUB) 상에 제1 방향(예를 들어, Y 방향)을 따라 신장되고, 제2 도전형(예를 들어, n 타입)의 불순물들이 도핑된 공통 소스 라인(CSL)이 제공된다. 인접한 두 공통 소스 라인(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 신장되는 복수의 절연막들(IL)이 제3 방향(예를 들어, Z 방향)을 따라 순차적으로 제공되며, 복수의 절연막들(IL)은 제3 방향을 따라 특정 거리만큼 이격된다. 예를 들어, 복수의 절연막들(IL)은 실리콘 산화물과 같은 절연 물질을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 기판(SUB)의 영역 상에, 제1 방향을 따라 순차적으로 배치되며, 제3 방향을 따라 복수의 절연막들(IL)을 관통하는 복수의 필라들(pillars)(P)이 제공된다. 예를 들어, 복수의 필라들(P)은 복수의 절연막들(IL)을 관통하여 기판(SUB)과 컨택할 것이다. 구체적으로, 각 필라(P)의 표면층(surface layer)(S)은 제1 타입을 갖는 실리콘 물질을 포함할 수 있고, 채널 영역으로 기능할 수 있다. 한편, 각 필라(P)의 내부층(I)은 실리콘 산화물과 같은 절연 물질 또는 에어 갭(air gap)을 포함할 수 있다.
인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 절연막들(IL), 필라들(P) 및 기판(SUB)의 노출된 표면을 따라 전하 저장층(charge storage layer, CS)이 제공된다. 전하 저장층(CS)은 게이트 절연층(또는 터널링 절연층이라고 지칭함), 전하 트랩층 및 블로킹 절연층을 포함할 수 있다. 예를 들어, 전하 저장층(CS)은 ONO(oxide-nitride-oxide) 구조를 가질 수 있다. 또한, 인접한 두 공통 소스 라인들(CSL) 사이의 영역에서, 전하 저장층(CS)의 노출된 표면 상에, 선택 라인들(GSL, SSL) 및 워드 라인들(WL1 ~ WL8)과 같은 게이트 전극(GE)이 제공된다.
복수의 필라들(P) 상에는 드레인들 또는 드레인 컨택들(DR)이 각각 제공된다. 예를 들어, 드레인들 또는 드레인 컨택들(DR)은 제2 도전형을 갖는 불순물들이 도핑된 실리콘 물질을 포함할 수 있다. 드레인들(DR) 상에, 제2 방향(예를 들어, X 방향)으로 신장되고 제1 방향을 따라 특정 거리만큼 이격되어 배치된 비트 라인들(BL1 ~ BL3)이 제공된다.
도 17은 본 발명의 실시예에 따른 안전 삭제 및 인덱스 관리 동작이 소프트웨어 방식에 따라 제어되는 예를 나타내는 블록도이다.
도 17을 참조하면, 컨트롤러(500)은 프로세싱 유닛(510) 및 워킹 메모리(520)를 포함할 수 있으며, 컨트롤러(500)가 플래시 메모리를 포함하는 비휘발성 메모리를 제어하는 경우 플래시 변환 레이어(FTL)가 워킹 메모리(520)에 로딩될 수 있다. 이 때, 플래시 변환 레이어(FTL)는 메모리 동작을 제어하기 위한 다양한 모듈들을 포함할 수 있으며, 일 예로서 전술한 실시예에서의 안전 삭제 및 인덱스 관리 동작과 관련하여 안전 삭제 모듈(521), 인덱스 관리 모듈(522) 및 어드레스 변환 모듈(523)을 포함할 수 있다. 또한, 어드레스 변환 모듈(523)은 맵핑 테이블을 포함할 수 있다.
본 발명의 실시예들에 따른 안전 삭제 및 인덱스 관리 동작은 워킹 메모리(520)에 로딩된 소프트웨어를 실행함에 의해 수행될 수 있다. 상기 소프트웨어는 컨트롤러(500) 또는 이를 포함하는 스토리지 장치(미도시) 내의 저장 수단(예컨대, 불휘발성 저장 매체)에 저장되어 워킹 메모리(520)에 로딩될 수 있으며, 일 실시예에 따라, 워킹 메모리(520)는 컴퓨터 판독 가능 매체로서 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
안전 삭제 동작과 관련하여, 호스트로부터 안전 삭제 커맨드가 제공되면, 프로세싱 유닛(510)은 안전 삭제 모듈(521)을 실행하여 전술한 실시예들에 따른 일련의 동작이 수행되도록 제어할 수 있다. 일 예로서, 맵핑 테이블을 참조함에 의해 소거 대상의 하나 이상의 블록들이 판단되고, 하나의 안전 삭제 커맨드에 응답하여 하나 이상 또는 다수의 블록들이 소거되도록 제어 동작을 수행할 수 있다.
또한, 인덱스 관리 동작과 관련하여, 호스트로부터 인덱스 정보의 업데이트를 필요로하는 커맨드가 제공되면, 프로세싱 유닛(510)은 인덱스 관리 모듈(522)을 실행함으로써 인덱스 정보의 저장 및 업데이트 동작을 제어할 수 있으며, 또한 호스트로부터 상태 요청 커맨드가 제공되면 인덱스 정보의 독출 및 출력 동작을 제어할 수 있다.
도 18은 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 18을 참조하면, 전자 장치(600)는 프로세서(610), 메모리 장치(620), 스토리지 장치(630), 모뎀(640), 입출력 장치(650) 및 파워 서플라이(660)를 포함할 수 있다. 일 실시예에서, 스토리지 장치(630)는 도 1 내지 도 17을 참조하여 상술된 실시예들을 이용하여 구현될 수 있다.
전술한 예시적인 실시예들의 스토리지 장치에 따르면, 데이터의 이용 및 활용에 대한 정보를 제공하는 커맨드(예컨대, 상태 요청 커맨드)가 정의될 수 있으며, 상기 커맨드에 따라 인덱스 정보가 호스트로 제공될 수 있다. 또한, 블록 인터페이스(Block Interface) 기반의 기존의 스토리지 장치에 대비하여 매우 빠른 속도로 안전 삭제 기능이 제공될 뿐 아니라, 안전 삭제 동작 시 머지(Merge)에 대한 오버헤드가 최소화 되어 수명 향상 극대화가 가능하다.
일 실시예에 따라, 상기와 같은 안전 삭제 동작은 포어 그라운드(Foreground) 및/또는 백그라운드(Background) 동작을 통해 수행될 수 있다. 예컨대, 호스트로부터 안전 삭제 커맨드(SecureDel(KEY, VALUE))가 제공되면 상기 안전 삭제 동작이 우선 수행될 수 있다. 또는, 호스트로부터 안전 삭제 커맨드(SecureDel(KEY, VALUE))가 제공되면 다른 메모리 동작에 대한 백그라운드 동작으로서 상기 안전 삭제 동작이 수행될 수도 있다.
한편, 본 발명의 예시적인 실시예에 따르면, 다수의 키 들에 대한 안전 삭제 커맨드(SecureDel({KEY 1, KEY 2, KEY 3,...})가 정의될 수 있으며, 스토리지 장치는 키들의 집합에 대해 전술한 안전 삭제 동작을 일련하게 수행할 수 있다. 즉, 다수의 키들에 대응하는 다수의 파일들에 대한 일괄적인 안전 삭제 동작이 수행될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 다수의 블록들을 포함하는 비휘발성 메모리; 및
    상기 비휘발성 메모리에 대한 메모리 동작을 제어하고, 호스트로부터의 제1 키 및 이에 대응하는 제1 밸류를 포함하는 기록 커맨드를 수신함에 따라 상기 제1 밸류에 상응하는 파일의 데이터를 상기 비휘발성 메모리의 하나 이상의 블록들에 기록하며, 상기 호스트로부터의 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라 상기 제1 밸류가 기록된 상기 하나 이상의 블록들을 소거함으로써 파일 단위의 삭제 동작을 수행하는 컨트롤러를 구비하고,
    상기 제1 밸류는 제1 블록 및 제2 블록을 포함하는 다수의 블록들에 기록되고,
    상기 컨트롤러는, 상기 제1 밸류에 대한 하나의 안전 삭제 커맨드에 응답하여 상기 제1 블록 및 상기 제2 블록에 대한 소거 동작을 수행하며,
    상기 컨트롤러는,
    상기 제1 밸류에 대한 안전 삭제 커맨드에 응답하여 소거 대상의 블록들을 판단하고, 판단 결과에 따라 상기 제1 및 제2 블록들에 대한 소거 동작을 제어하는 안전 삭제 제어 모듈; 및
    상기 제1 밸류가 기록된 블록들의 물리적 어드레스와 상기 제1 키 사이의 맵핑 정보를 저장하는 맵핑 테이블을 포함하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 컨트롤러는, 상기 제1 및 제2 블록들에 대한 소거 동작이 완료된 후 상기 호스트로 상기 제1 밸류에 대한 안전 삭제 동작이 완료되었음을 나타내는 응답을 제공하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  4. 제1항에 있어서,
    상기 제1 밸류는 상기 제1 블록에 기록되고, 상기 제1 블록은 제2 밸류의 유효 데이터를 더 저장하며,
    상기 컨트롤러는, 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라 상기 제2 밸류가 저장된 제3 블록을 판단하고, 상기 제1 블록에 대한 소거 동작 전에 상기 제1 블록에 저장된 상기 제2 밸류의 유효 데이터를 상기 제3 블록에 카피하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  5. 제1항에 있어서,
    상기 컨트롤러는, 상기 제1 밸류를 상기 제1 블록의 일부의 페이지들에 기록하고, 상기 제1 블록의 다른 일부의 페이지들에 대해서는 다른 밸류를 기록함이 없이 무효한 상태로 유지시키는 것을 특징으로 하는 키-밸류 스토리지 장치.
  6. 제1항에 있어서,
    상기 컨트롤러는, 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라, 상기 제1 블록에 대한 유효 데이터의 카피 및 소거 동작을 완료하고 난 후, 상기 제2 블록에 대한 유효 데이터의 카피 및 소거 동작을 수행하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  7. 삭제
  8. 제1항에 있어서, 상기 컨트롤러는,
    상기 제1 밸류에 대한 기록 커맨드를 수신함에 따라, 상기 제1 밸류에 관련된 상태 정보로서 인덱스 정보를 상기 비휘발성 메모리에 저장하고,
    상기 호스트로부터의 상기 제1 밸류에 대한 상태 요청 커맨드를 수신함에 따라 상기 인덱스 정보를 독출하여 상기 호스트로 제공하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  9. 제8항에 있어서,
    상기 인덱스 정보는, 상기 제1 밸류에 대한 데이터 기록 시각, 데이터 억세스 횟수, 데이터 변경 내역 및 변경 횟수 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  10. 제9항에 있어서,
    상기 제1 밸류에 관련된 인덱스 정보는 상기 제1 블록 및 상기 제2 블록 각각에 저장되며,
    상기 컨트롤러는, 상기 제1 밸류에 대한 하나의 상태 요청 커맨드에 응답하여 상기 제1 블록 및 상기 제2 블록에 저장된 인덱스 정보를 순차적으로 독출하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  11. 제10항에 있어서,
    상기 컨트롤러는, 상기 제1 블록 및 상기 제2 블록에 저장된 인덱스 정보가 출력되고 난 후 상기 호스트로 상태 요청 동작이 완료되었음을 나타내는 응답을 제공하는 것을 특징으로 하는 키-밸류 스토리지 장치.
  12. 키-밸류 프로토콜에 따라 호스트와 통신하고, 비휘발성 메모리에 대한 메모리 동작을 제어하는 컨트롤러에 있어서,
    적어도 하나의 프로세서; 및
    상기 프로세서에 의해 실행 가능한 프로그램들을 저장하고, 상기 호스트로부터의 키와 상기 비휘발성 메모리의 물리적 어드레스 사이의 맵핑 정보를 저장하는 워킹 메모리를 구비하고,
    상기 프로세서는, 상기 호스트로부터의 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 응답하여 상기 워킹 메모리에 저장된 적어도 하나의 프로그램을 포함하는 안전 삭제 제어 모듈을 실행함으로써, 상기 제1 밸류가 저장된 하나 이상의 블록들에 대한 소거 동작을 제어함으로써 상기 제1 밸류를 삭제하고,
    상기 제1 밸류는 다수 개의 블록들에 저장되고,
    상기 프로세서는, 하나의 안전 삭제 커맨드를 수신함에 응답하여 상기 다수 개의 블록들이 소거되도록 소거 동작을 제어하는 것을 특징으로 하는 컨트롤러.
  13. 삭제
  14. 제12항에 있어서,
    상기 프로세서는, 상기 워킹 메모리에 저장된 적어도 하나의 프로그램을 포함하는 어드레스 변환 모듈을 실행함에 의해 하나의 블록에 하나의 밸류가 기록되도록 기록 동작을 제어하고,
    상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 응답하여, 유효 데이터에 대한 카피 동작을 수행함이 없이 상기 블록들에 대한 소거 동작을 수행하는 것을 특징으로 하는 컨트롤러.
  15. 키-밸류 스토리지 장치의 동작방법에 있어서, 상기 키-밸류 스토리지 장치는 다수의 블록들을 포함하는 비휘발성 메모리와 메모리 동작을 제어하는 컨트롤러를 구비하고,
    호스트로부터의 제1 키 및 이에 대응하는 제1 밸류를 포함하는 기록 커맨드의 수신에 응답하여, 상기 제1 밸류에 상응하는 파일의 데이터를 하나 이상의 블록들에 기록하는 단계;
    상기 호스트로부터 상기 제1 밸류에 대한 안전 삭제 커맨드를 수신함에 따라 상기 제1 밸류가 기록된 상기 하나 이상의 블록들을 판단하는 단계; 및
    상기 판단된 하나 이상의 블록들을 소거함으로써 파일 단위의 삭제 동작을 수행하는 단계를 구비하고,
    상기 제1 밸류에 상응하는 파일의 데이터를 상기 하나 이상의 블록들에 기록하는 단계는, 상기 제1 밸류를 제1 블록의 제1 페이지들에 기록하는 단계를 포함하고,
    상기 제1 블록의 제1 페이지들 이외의 나머지 페이지들은 다른 밸류의 데이터를 기록함이 없이 무효한 상태로 유지되는 것을 특징으로 하는 키-밸류 스토리지 장치의 동작방법.
  16. 제15항에 있어서,
    상기 제1 밸류는 제1 블록 및 제2 블록을 포함하는 다수의 블록들에 기록되고,
    상기 파일 단위의 삭제 동작을 수행하는 단계는, 하나의 안전 삭제 커맨드에 응답하여 상기 제1 블록 및 제2 블록을 순차적으로 소거하는 것을 특징으로 하는 키-밸류 스토리지 장치의 동작방법.
  17. 제15항에 있어서,
    상기 제1 블록 및 제2 블록에 대한 소거 동작이 완료된 후 상기 호스트로 안전 삭제 동작이 완료되었음을 나타내는 응답을 제공하는 단계를 더 구비하는 것을 특징으로 하는 키-밸류 스토리지 장치의 동작방법.
  18. 삭제
  19. 제15항에 있어서,
    상기 기록 커맨드의 수신에 응답하여, 상기 제1 밸류의 상태 정보를 포함하는 인덱스 정보를 상기 비휘발성 메모리의 적어도 하나의 블록에 기록하는 단계; 및
    상기 호스트로부터의 상기 제1 밸류에 대한 상태 요청 커맨드를 수신함에 따라 상기 인덱스 정보를 독출하는 단계를 더 구비하는 것을 특징으로 하는 키-밸류 스토리지 장치의 동작방법.
  20. 제19항에 있어서,
    상기 제1 밸류에 관련된 상기 인덱스 정보는 다수 개의 블록들에 기록되고,
    상기 제1 밸류에 대한 하나의 상태 요청 커맨드에 응답하여 상기 다수 개의 블록들에 기록된 상기 인덱스 정보가 독출되는 것을 특징으로 하는 키-밸류 스토리지 장치의 동작방법.
KR1020190022579A 2018-04-12 2019-02-26 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법 KR102497213B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/381,671 US10922011B2 (en) 2018-04-12 2019-04-11 Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
CN201910293772.1A CN110377599B (zh) 2018-04-12 2019-04-12 键值存储装置及其操作方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180042923 2018-04-12
KR20180042923 2018-04-12

Publications (2)

Publication Number Publication Date
KR20190119511A KR20190119511A (ko) 2019-10-22
KR102497213B1 true KR102497213B1 (ko) 2023-02-08

Family

ID=68420257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190022579A KR102497213B1 (ko) 2018-04-12 2019-02-26 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법

Country Status (1)

Country Link
KR (1) KR102497213B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275656A1 (en) * 2012-04-17 2013-10-17 Fusion-Io, Inc. Apparatus, system, and method for key-value pool identifier encoding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275656A1 (en) * 2012-04-17 2013-10-17 Fusion-Io, Inc. Apparatus, system, and method for key-value pool identifier encoding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yanqin Jin et al., "KAML: A Flexible, High-Performance Key-Value SSD", 2017 IEEE International Symposium on High Performance Computer Architecture(2017.02.)*

Also Published As

Publication number Publication date
KR20190119511A (ko) 2019-10-22

Similar Documents

Publication Publication Date Title
US10229051B2 (en) Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
US10657041B2 (en) Data management method and storage device performing the same
KR102254392B1 (ko) 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
US10922011B2 (en) Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
US9367444B2 (en) Non-volatile memory device, control method for information processing device, and information processing device
CN108027764B (zh) 可转换的叶的存储器映射
US10289340B2 (en) Coalescing metadata and data writes via write serialization with device-level address remapping
US11875055B2 (en) Storage device that receives inode address information to reduce external communication overhead
US11556271B2 (en) Storage device storing data on key-value basis and operating method thereof
KR20140112303A (ko) 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR20160103236A (ko) 저장 장치 및 그것의 동작 방법
KR20200011832A (ko) 메모리 시스템에서의 데이터 처리 방법 및 장치
KR20140094278A (ko) 반도체 장치 및 이의 동작 방법
KR20210068888A (ko) 키-밸류 기반으로 데이터를 저장하는 스토리지 장치 및 이의 동작 방법
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
US20230152968A1 (en) Storage devices including non-volatile memory devices
KR102497213B1 (ko) 안전 삭제를 수행하는 컨트롤러, 이를 포함하는 키-밸류 스토리지 장치 및 키-밸류 스토리지 장치의 동작방법
US11657000B2 (en) Controller and memory system including the same
US11822800B2 (en) Storage system including host and storage device and operation method thereof
US11354200B2 (en) Method and system for facilitating data recovery and version rollback in a storage device
US20220164119A1 (en) Controller, and memory system and data processing system including the same
US20220405000A1 (en) Storage device and operating method of storage device
KR20230071005A (ko) 스토리지 장치
KR20240065774A (ko) 네임스페이스의 순차성을 기초로 논리 주소를 변환하는 스토리지 장치 및 그 동작 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right