[go: up one dir, main page]

KR20190048453A - 저장 장치 및 메모리 시스템 - Google Patents

저장 장치 및 메모리 시스템 Download PDF

Info

Publication number
KR20190048453A
KR20190048453A KR1020170143420A KR20170143420A KR20190048453A KR 20190048453 A KR20190048453 A KR 20190048453A KR 1020170143420 A KR1020170143420 A KR 1020170143420A KR 20170143420 A KR20170143420 A KR 20170143420A KR 20190048453 A KR20190048453 A KR 20190048453A
Authority
KR
South Korea
Prior art keywords
time
block
data
data write
controller
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
KR1020170143420A
Other languages
English (en)
Other versions
KR102530583B1 (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 KR1020170143420A priority Critical patent/KR102530583B1/ko
Priority to US15/975,008 priority patent/US10817624B2/en
Priority to CN201811255820.XA priority patent/CN109725850B/zh
Publication of KR20190048453A publication Critical patent/KR20190048453A/ko
Application granted granted Critical
Publication of KR102530583B1 publication Critical patent/KR102530583B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/0608Saving storage space on storage systems
    • 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
    • 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/0658Controller construction arrangements
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

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

Abstract

저장 장치가 제공된다. 저장 장치는, 제1 블록 및 제2 블록을 포함하는 비휘발성 메모리 및 컨트롤러를 포함하고, 상기 비휘발성 메모리는, 상기 제1 블록 및 상기 제2 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 저장하는 블록 관리 영역을 포함하고, 상기 컨트롤러는, 제1 데이터의 영구 삭제 명령에 따라 상기 제1 데이터의 생성 시간 및 수정 시간을 확인하고, 상기 제1 블록 및 상기 제2 블록 각각에 대한 상기 최초 데이터 라이트 시간 및 상기 최후 데이터 라이트 시간을 상기 생성 시간 및 상기 수정 시간과 비교하여 상기 제1 블록 및 상기 제2 블록 중 영구 삭제할 블록을 선택한다.

Description

저장 장치 및 메모리 시스템 {STORAGE DEVICE AND MEMORY SYSTEM}
본 발명은 저장 장치 및 메모리 시스템에 관한 것이다.
플래시 메모리(Flash Memory)는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능이 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근에는 휴대폰, 디지털 카메라 등과 같은 휴대용 정보 기기의 사용이 급증함에 따라, 하드 디스크(hard disk) 대신 플래시 메모리가 저장 장치로서 널리 사용되고 있다. 전술한 모바일 기기들은 다양한 기능들(예를 들어, 동영상 재생, 고음질의 음악 재생 기능 등)을 제공하기 위해서 점차 대용량의 저장 장치를 필요로 하고 있다.
한편 플래시 메모리는 비휘발성 메모리(Non-volatile Memory)로 전원의 공급 여부에 관계없이 보존되어야 할 내용이 플래시 메모리에 저장될 수 있다. 하지만, 소프트웨어 상에서 삭제된 데이터도 여전히 하드웨어인 플래시 메모리 내에 유지될 수 있다. 따라서, 소프트웨어 상에서 삭제된 데이터를 하드웨어인 플래시 메모리 상에서도 완전히 삭제할 필요성이 대두되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 소프트웨어 상에서 삭제된 데이터를 빠르게 하드웨어 상에서 삭제하는 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 저장 장치는, 제1 블록 및 제2 블록을 포함하는 비휘발성 메모리 및 컨트롤러를 포함하고, 상기 비휘발성 메모리는, 상기 제1 블록 및 상기 제2 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 저장하는 블록 관리 영역을 포함하고, 상기 컨트롤러는, 제1 데이터의 영구 삭제 명령에 따라 상기 제1 데이터의 생성 시간 및 수정 시간을 확인하고, 상기 제1 블록 및 상기 제2 블록 각각에 대한 상기 최초 데이터 라이트 시간 및 상기 최후 데이터 라이트 시간을 상기 생성 시간 및 상기 수정 시간과 비교하여 상기 제1 블록 및 상기 제2 블록 중 영구 삭제할 블록을 선택한다.
본 발명의 일 실시예에 따른 저장 장치는, 복수의 블록을 포함하는 비휘발성 메모리 및 컨트롤러를 포함하고, 상기 비휘발성 메모리는, 상기 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 저장하는 블록 관리 영역을 포함하고, 상기 컨트롤러는, 상기 복수의 블록 중 제1 블록에 포함된 페이지에 데이터를 라이트하는 명령을 수신하거나 상기 명령에 따라 상기 제1 블록에 포함된 상기 페이지에 상기 데이터를 라이트할 때, 상기 블록 관리 영역에 저장된 상기 제1 블록의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간 중 적어도 하나를 업데이트한다.
본 발명의 일 실시예에 따른 메모리 시스템은, 저장 장치의 디바이스 시간을 카운트하는 디바이스 타이머 및 컨트롤러를 포함하는 저장 장치, 시스템 시간을 저장하는 시스템 타이머를 포함하는 프로세서 및 상기 디바이스 시간과 상기 시스템 시간 간의 차이 값을 저장하는 휘발성 메모리를 포함하고, 상기 프로세서는, 시스템 온되거나 상기 시스템 시간이 변경된 경우, 상기 디바이스 타이머로부터 상기 디바이스 시간을 수신하고, 상기 시스템 시간과 상기 디바이스 시간과의 차이 값을 산출하여 상기 휘발성 메모리에 저장하고, 제1 데이터를 생성 또는 수정할 때 상기 차이 값에 기초하여 상기 디바이스 시간을 계산하고, 상기 디바이스 시간을 상기 제1 데이터의 생성 시간 또는 수정 시간으로서 상기 제1 데이터의 메타 정보에 저장한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 메모리 시스템의 일례를 나타내기 위한 블록도이다.
도 2는 몇몇 실시예에 따른 메모리 컨트롤러의 일례를 나타내기 위한 블록도이다.
도 3은 몇몇 실시예에 따른 메모리 시스템에서 데이터를 영구 삭제하는 방법의 일례를 설명하기 위한 흐름도이다.
도 4는 몇몇 실시예에 따른 비휘발성 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트하는 방법의 일례를 설명하기 위한 도면이다.
도 5는 몇몇 실시예에 따른 비휘발성 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트하는 방법의 일례를 설명하기 위한 도면이다.
도 6은 몇몇 실시예에 따른 비휘발성 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트하는 방법의 일례를 설명하기 위한 도면이다.
도 7은 몇몇 실시예에 따라 데이터의 생성 시간 및 수정 시간을 기록하는 방법의 일례를 설명하기 위한 도면이다.
도 8은 몇몇 실시예에 따라 데이터의 생성 시간 및 수정 시간을 메타 정보로 기록하는 방법의 일례를 설명하기 위한 도면이다.
도 9는 몇몇 실시예에 따라 데이터의 생성 시간 및 수정 시간을 메타 정보로 기록하는 방법의 일례를 설명하기 위한 도면이다.
도 10은 몇몇 실시예에 따른 저장 장치에서 영구 삭제를 수행하는 방법의 일례를 설명하기 위해 도시한 도면이다.
도 11 내지 도 14는 몇몇 실시예에 따른 저장 장치에서 영구 삭제를 수행하는 방법의 다른 일례를 설명하기 위해 도시한 도면이다.
도 1은 몇몇 실시예에 따른 메모리 시스템의 일례를 나타내기 위한 블록도이다.
도 1을 참조하면, 메모리 시스템(1)은 프로세서(100), 휘발성 메모리(200), 저장 장치(300) 및 버스(250)를 포함할 수 있다. 다만, 상술한 구성 요소들은 메모리 시스템(1)을 구현하는데 있어서 필수적인 것은 아니어서, 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.
메모리 시스템(1)은 TV, DTV(Digital TV), IPTV(internet protocol TV), PC(personal computer), 데스크 탑 컴퓨터, 랩-탑(lap-top) 컴퓨터, 컴퓨터 워크스테이션(computer workstation), 태블릿(tablet) PC, 비디오 게임 플랫폼(또는 비디오 게임 콘솔), 서버 및 모바일 컴퓨팅 장치 중의 하나로 구현될 수 있다. 여기서, 모바일 컴퓨팅 장치는 이동 전화기, 스마트 폰(smart phone), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(Internet of Things; IOT) 장치, 만물 인터넷(Internet of Everything; IOE) 장치 또는 e-book으로 구현될 수 있다.
프로세서(100), 휘발성 메모리(200) 및 저장 장치(300)는 버스(250)를 통해 서로 데이터를 주고 받을 수 있다.
버스(250)는 PCI 버스(Peripheral Component Interconnect Bus), PCI 익스프레스(PCI Express; PCIe) 버스, AMBA(Advanced Microcontroller Bus Architecture), AHB(Advanced High Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced Extensible Interface) 버스 및 이들의 어느 조합으로부터 선택된 적어도 하나로 구현될 수 있으나 이에 한정되는 것은 아니다.
프로세서(100)는 메모리 시스템(1)의 전반적인 동작을 제어하도록 구현될 수 있다. 또한, 프로세서(100)는 메모리 시스템(1)에서 수행되는 다양한 연산들을 수행 및 데이터를 처리할 수 있다. 프로세서(100)는 메모리 시스템(1)을 구동하기 위한 운영 체제(Operating System; OS), 애플리케이션(Application) 및 데이터베이스 매니저를 구동할 수 있다.
프로세서(100)는 CPU(Central Processing Unit), 코프로세서(co-processor), APU(Arithmetic Processing Unit), GPU(Graphic Processing Unit), DSP(Digital Signal Processor) 등 일 수 있다.
몇몇 실시예에 따르면, 프로세서(100)는 시스템 시간(예를 들어, 윈도우 시간)을 저장하는 시스템 타이머(110)를 포함할 수 있다. 시스템 타이머(110)는 하드웨어로 구현될 수도 있고 소프트웨어로 구현될 수도 있다. 여기서, 시스템 시간은 사용자가 변경할 수 있다.
저장 장치(300)는 메모리 컨트롤러(310) 및 비휘발성 메모리(320)를 포함할 수 있다.
프로세서(100)는 저장 장치(300)에 포함된 메모리 컨트롤러(310)와 통신하여 비휘발성 메모리(320)에 저장된 데이터를 리드(read)하거나, 비휘발성 메모리(320)에 데이터를 라이트(write)할 수 있다. 또한, 프로세서(100)는 비휘발성 메모리(320)에 저장된 데이터를 삭제할 수도 있다.
비휘발성 메모리(320)는 전원이 차단되어도 저장하고 있는 데이터를 보존할 수 있다. 예를 들어, 비휘발성 메모리(320)의 일례로 낸드(NAND) 플래시 메모리는 데이터의 라이트(write) 및 리드(read)를 페이지(page) 단위로 수행할 수 있고 데이터의 소거(erase)는 복수개의 페이지를 포함하는 블록(block) 단위로 수행할 수 있다.
프로세서(100)는 어떠한 주소가 지정하는 낸드 플래시 메모리의 공간에 저장되어 있는 데이터를 변경하고자 하는 경우, 데이터가 저장된 블록을 소거한 다음 변경하고자 하는 데이터를 라이트할 수 있다. 이와 같은 비휘발성 메모리의 특성으로 인하여, 프로세서(100)는 비휘발성 메모리(320)와 직접 통신하는 대신, 메모리 컨트롤러(310)와 통신할 수 있다.
비휘발성 메모리(320)에서 소거 동작은 상대적으로 오랜 시간이 걸리므로, 저장 장치에 포함된 메모리 컨트롤러(310)는 변경하고자 하는 기존의 데이터가 저장된 블록을 소거하는 대신, 비휘발성 메모리(320)의 비어 있는(데이터가 라이트되지 않은)공간에 변경하고자 하는 새로운 데이터를 라이트하고, 새로운 데이터가 저장된 장소에 대한 주소를 저장할 수 있다. 따라서, 데이터에 대하여 프로세서(100)가 인식하는 주소(논리적 주소)와 데이터가 비휘발성 메모리(320)에 저장된 주소(물리적 주소)는 서로 다를 수 있다.
메모리 컨트롤러(1100)는 하나의 데이터에 대한 논리적 주소와 물리적 주소의 관계를 나타내는 맵핑 정보를 관리할 수 있다. 예를 들어, 메모리 컨트롤러(310)는 저장 장치에 대한 논리적-물리적 주소 맵핑 정보(Logical-Physical Address Mapping Information 또는 L2P mapping info)(이하, 맵핑 정보(mapping info)라고 한다)(322)를 비휘발성 메모리(320)에 저장할 수 있다.
논리적 주소(logical address)는 프로세서(100)가 인식하는 데이터에 대한 주소로서, 프로세서(100)는 데이터가 비휘발성 메모리(320)에서 실제로 저장되는 공간에 대한 주소인 물리적 주소(physical address) 대신 논리적 주소를 지정하여 데이터를 라이트하거나 리드할 수 있다. 물리적 주소는 비휘발성 메모리(320)에서 실제 데이터가 저장되는 공간에 대한 주소로서, 메모리 컨트롤러(310)는 프로세서(100)로부터 데이터에 대한 엑세스 명령 및 논리적 주소를 수신할 수 있고 논리적 주소에 대응하는 물리적 주소가 지정하는 공간에 데이터를 라이트하거나 그 공간에 저장된 데이터를 리드할 수 있다.
메모리 컨트롤러(310)는 프로세서(100)로부터 각종 명령을 수신하고, 이에 응답하여 필요한 동작을 비휘발성 메모리(320)에 대하여 수행하는 기능을 할 수 있다. 예를 들어, 프로세서(100)는 데이터에 대한 논리적 주소를 저장 장치(300)로 전송하고, 저장 장치(300)의 메모리 컨트롤러(310)는 맵핑 정보(322)에 따라 논리적 주소에 대응하는 물리적 주소를 추출하여 물리적 주소가 지정하는 공간에 데이터를 라이트 또는 리드하여 프로세서(100)의 명령에 응답할 수 있다.
비휘발성 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지하는 특성을 갖는, EEPROM(electrically erasable programmable read-only memory), 플래시(flash) 메모리, MRAM(magnetic RAM), 스핀전달토크 MRAM (spin-transfer torque MRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), 또는 RRAM(resistive RAM)으로 구현될 수 있다.
휘발성 메모리(200)에는 저장 장치의 디바이스 시간 및 프로세서(100) 내의 시스템 타이머(110)를 통해 인식된 시스템 시간 간의 차이 값을 저장할 수 있다. 예를 들어, 프로세서(100)는 시스템이 온된 경우, 저장 장치의 디바이스 시간 및 시스템 시간 사이의 차이 값을 산출하고, 상기 산출된 값을 휘발성 메모리(200)에 저장할 수 있다.
몇몇 실시예에 따르면, 프로세서(100)는 시스템이 온 될 때마다 상기 차이 값을 산출하므로, 전원이 차단되기 전에 상기 산출한 차이 값을 비휘발성 메모리(320)에 저장하지 않을 수 있다. 다만, 이에 한정되는 것은 아니고, 프로세서(100)는 전원이 차단되기 전에 상기 산출한 차이 값을 비휘발성 메모리(320)에 저장할 수도 있다.
휘발성 메모리(200)는 RAM(random access memory), SRAM(static RAM), DRAM (dynamic RAM), SDRAM(synchronous DRAM), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), TTRAM(Twin Transistor RAM) 또는 이들의 다양한 조합으로 구성될 수 있다.
비휘발성 메모리(320)에 포함된 블록 관리 영역(321)에 비휘발성 메모리(320) 예를 들어, NAND 플래시 메모리에 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간이 저장될 수 있다. 여기서, 최초 데이터 라이트 시간은 블록 내에서 데이터가 라이트된 시간 중 가장 빠른 시간 즉, 가장 처음에 데이터가 라이트된 시간이고, 최후 데이터 라이트 시간은 블록 내에서 데이터가 라이트된 시간 중 가장 느린 시간 즉, 가장 나중에 데이터가 라이트된 시간이다.
블록 관리 영역(321)은 데이터가 라이트되거나 리드되는 블록과 상이한 별도의 블록일 수 있다.
도 2는 몇몇 실시예에 따른 메모리 컨트롤러의 일례를 나타내기 위한 블록도이다.
도 2를 참조하면, 메모리 컨트롤러(310)는 프로세서(도 1의 100)의 요청에 응답하여 비휘발성 메모리(도 1의 320)에 대한 리드, 라이트 및 소거 동작 등을 제어할 수 있다.
메모리 컨트롤러(310)는 호스트 인터페이스(311), 컨트롤러(312), 메모리 인터페이스(313), 메모리(314), ECC 회로(1250, Error Correcting Code Circuit), 디바이스 타이머(316) 및 버스(317)를 포함할 수 있다.
호스트 인터페이스(311), 컨트롤러(312), 메모리 인터페이스(313), 메모리(314), ECC 회로(1250)는 버스(317)를 통해 서로 데이터를 주고 받을 수 있다.
메모리 컨트롤러(310)는 호스트 인터페이스(311)를 통해 호스트(예를 들어, 프로세서(도 1의 100))와 데이터 등을 주고 받을 수 있고, 메모리 인터페이스(313)를 통해 비휘발성 메모리(도 1의 320)와 데이터 등을 주고 받을 수 있다. 호스트 인터페이스(311)는 PATA 버스(parallel AT attachment bus), SATA 버스(serial AT attachment bus), SCSI, USB, PCIe 등을 통해 호스트와 연결될 수 있다.
컨트롤러(312)는 비휘발성 메모리(도 1의 320)에 대한 전반적인 동작(예를 들어, 읽기, 쓰기, 파일 데이터 관리, 복수의 블록 관리 등)을 제어할 수 있다. 컨트롤러(312)는 중앙처리장치(Central Processing Unit; CPU), 프로세서(processor) 등이 포함될 수 있다.
메모리(314)는 컨트롤러(312)의 제어에 따라 동작하며, 워크 메모리(work memory), 버퍼 메모리(buffer memory), 캐시 메모리(cache memory) 등으로 사용될 수 있다. 메모리(314)가 워크 메모리로 사용되는 경우에, 컨트롤러(312)에 의해서 처리되는 데이터가 임시 저장된다. 버퍼 메모리로 사용되는 경우에는, 메모리(314)는 호스트(예를 들어, 프로세서(도 1의 100))에서 비휘발성 메모리(도 1의 320)로 또는 비휘발성 메모리(도 1의 320)에서 호스트로 전송될 데이터를 버퍼링하는데 사용된다. 메모리(314)가 캐시 메모리로 사용되는 경우에는 저속의 비휘발성 메모리(도 1의 320)가 고속으로 동작하도록 한다.
ECC 회로(315)는 비휘발성 메모리(도 1의 320)로부터 수신한 데이터의 페일 비트(fail bit) 또는 페일 비트(fail bit)를 정정하기 위한 에러 정정 코드(ECC; Error Correction Code)를 생성한다.
한편, ECC 회로(315)는 비휘발성 메모리(도 1의 320)로부터 출력된 데이터에 대하여 에러 정정 디코딩을 수행할 수 있다. ECC 회로(315)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러를 정정할 수 있다.
디바이스 타이머(316)는 저장 장치(도 1의 300)의 디바이스 시간을 카운트할 수 있다.
일례로, 디바이스 타이머(316)는 저장 장치(도 1의 300)에 인가된 클락의 라이징 엣지(rising edge) 또는 폴링 엣지(falling edge)의 수를 카운트하여 디바이스 시간을 카운트 할 수 있다.
다른 일례로, 디바이스 타이머(316)는 저장 장치(도 1의 300)에 인가된 클락의 천이(transition)를 카운트하여 디바이스 시간을 카운트할 수 있다.
몇몇 실시예에 따르면, 컨트롤러(312)는 호스트(예를 들어, 프로세서(도 1의 100))에 디바이스 시간을 전송할 수 있다.
일례로, 호스트(예를 들어, 프로세서(도 1의 100))로부터 라이트 명령을 수신한 경우 또는 라이트 명령에 따라 데이터를 블록에 포함된 페이지에 라이트할 때, 디바이스 타이머(316)를 통해 카운트되고 있는 현재 디바이스 시간에 대한 정보를 호스트에 전송할 수 있다.
다른 일례로, 컨트롤러(312)는 호스트(예를 들어, 프로세서(도 1의 100))로부터 라이트 명령이 아닌 다른 기 설정된 명령(예를 들어, 디바이스 시간을 전송하라는 명령)을 수신하는 경우, 디바이스 타이머(316)를 통해 카운트되고 있는 현재 디바이스 시간에 대한 정보를 호스트에 전송할 수 있다.
몇몇 실시예에 따르면, 컨트롤러(312)는 호스트(예를 들어, 프로세서(도 1의 100))로부터 라이트 명령을 수신한 경우 또는 수신된 라이트 명령에 기초하여 데이터를 블록에 포함된 페이지에 라이트할 때, 비휘발성 메모리(도 1의 320)에 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 또는 최후 데이터 라이트 시간을 업데이트할 수 있다.
일례로, 컨트롤러(312)는 호스트(예를 들어, 프로세서(도 1의 100))로부터 라이트 명령을 수신한 때 디바이스 타이머(316)를 통해 카운트되고 있는 현재 디바이스 시간을 직접 이용하여 비휘발성 메모리(도 1의 320)에 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 또는 최후 데이터 라이트 시간을 업데이트할 수 있다.
다른 일례로, 컨트롤러(312)는 호스트(예를 들어, 프로세서(도 1의 100))로부터 라이트 명령을 수신한 후 라이트 명령에 따라 데이터를 블록에 라이트할 때 디바이스 타이머(316)를 통해 카운트되고 있는 현재 디바이스 시간을 직접 이용하여 비휘발성 메모리(도 1의 320)에 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 또는 최후 데이터 라이트 시간을 업데이트할 수 있다.
여기서, 복수의 블록 각각의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 디바이스 시간으로 입력하는 이유는, 운영 체제에서 사용하는 시스템 시간과 달리 디바이스 시간은 사용자가 임의로 변경할 수 없는 시간이기 때문이다.
한편, 컨트롤러(312)는 비휘발성 메모리(도 1의 320)에 저장된 데이터를 삭제할 경우 단순히 논리적 주소와 물리적 주소의 맵핑을 맵핑 정보(도 1의 322)에서 삭제할 수 있다. 이 경우, 영구 삭제되길 원하는 데이터가 소프트웨어적으로 삭제된 후에도 물리적 주소에 남아있어 향후 복구될 수 있다는 문제가 존재한다. 따라서, 이하 도 3 내지 도 12를 참조하여 데이터를 빠르게 영구 삭제하는 방법을 이하 설명한다.
도 3은 몇몇 실시예에 따른 메모리 시스템에서 데이터를 영구 삭제하는 방법의 일례를 설명하기 위한 흐름도이다. 도 4 내지 도 6은 몇몇 실시예에 따른 비휘발성 포함된 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트하는 방법의 일례들을 설명하기 위한 도면들이다. 도 7은 몇몇 실시예에 따라 데이터의 생성 시간 및 수정 시간을 기록하는 방법의 일례를 설명하기 위한 도면이다. 도 8 및 도 9는 몇몇 실시예에 따라 데이터의 생성 시간 및 수정 시간을 메타 정보로 기록하는 방법의 일례를 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 컨트롤러(도 2의 310)에 포함된 컨트롤러(도 2의 312)는 프로세서(도 1의 100)로부터 커맨드를 수신할 수 있다(S310).
컨트롤러(도 2의 312)는 단계(S310)에서 수신한 커맨드가 라이트 커맨드(write command)를 포함하는지 여부를 확인할 수 있다(S320).
컨트롤러(도 2의 312)는 수신한 커맨드가 라이트 커맨드를 포함한다고 인식한 경우(S320, Y), 라이트 커맨드에 대응하는 블록의 시간 정보(예를 들어, 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간)를 블록 관리 영역(321)에 업데이트할 수 있다(S330). 그리고, 컨트롤러(도 2의 312)는 라이트 커맨드에 대응하는 동작을 수행할 수 있다(S340).
예를 들어, 도 4를 참조하면, 프로세서(도 1의 100)는 제1 시간(t1)에 제1 데이터(A)를 생성 시 제1 데이터(A)에 대한 라이트 커맨드를 컨트롤러(도 2의 312)에 전송할 수 있다. 컨트롤러(도 2의 312)는 제1 데이터(A)에 대한 라이트 커맨드를 수신한 경우, 비휘발성 메모리(도 1의 320)에 포함된 복수의 블록 중 어느 하나의 블록(예를 들어, 제1 블록(400))에 포함된 페이지(예를 들어, 제2 페이지(402))에 제1 데이터(A)를 라이트할 수 있다. 여기서, 제1 블록(400) 내의 제1 페이지(401) 및 제3 페이지(403)는 비어있는 상태(free)일 수 있다.
컨트롤러(도 2의 312)는 제1 블록(400)에 포함된 제2 페이지(402)에 제1 데이터(A)를 라이트한 경우, 제1 블록(400)에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트할 수 있다. 여기서, 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간은 디바이스 타이머(도 2의 316)를 통해 카운트된 디바이스 시간으로 저장될 수 있다.
예를 들어, 컨트롤러(도 2의 312)는 디바이스 시간이 100일 때 제1 블록(400)의 제2 페이지(402)에 제1 데이터(A)를 라이트한 경우, 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간이 100이라는 정보를 제1 블록(400)의 블록 관리 영역(321)에 업데이트할 수 있다. 여기서, 제1 블록(400)에 제1 데이터(A)가 제1 블록(400)에 최초로 라이트되기 때문에 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간에 100이라는 정보를 입력할 수 있다.
도 5를 참조하면, 제1 시간(t1) 이후인 제2 시간(t2)에 제1 데이터(A)를 제2 데이터(A')로 수정 시 프로세서(도 1의 100)는 제1 데이터(A)에 대한 논리적 주소와 물리적 주소의 맵핑을 삭제하고, 제2 데이터(A')를 라이트하라는 커맨드를 컨트롤러(도 2의 312)에 전송할 수 있다. 컨트롤러(도 2의 312)는 상기 커맨드를 수신한 경우, 제2 페이지(402)의 물리적 주소와 제1 데이터(A)의 논리적 주소의 맵핑을 삭제하고 제2 페이지(402)를 무효(invalid)화 할 수 있다. 이 경우, 제2 페이지(402)가 무효화된 경우라도 블록 관리 영역(321)에 입력된 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간은 유지될 수 있다.
한편, 컨트롤러(도 2의 312)는, 제2 데이터(A')를 라이트하라는 커맨드도 수신하였으므로, 제2 데이터(A')를 다른 페이지(예를 들어, 제1 블록(400)의 제3 페이지(403))에 라이트할 수 있다. 컨트롤러(도 2의 312)는 제1 블록(400)에 포함된 제3 페이지(403)에 제2 데이터(A')를 라이트한 경우, 제1 블록(400)에 대한 최후 데이터 라이트 시간을 업데이트할 수 있다. 여기서, 최후 데이터 라이트 시간은 디바이스 타이머(도 2의 316)를 통해 카운트된 디바이스 시간일 수 있다.
예를 들어, 컨트롤러(도 2의 312)는 디바이스 시간이 200일 때 제1 블록(400)의 제3 페이지(403)에 제2 데이터(A')를 라이트한 경우, 최후 데이터 라이트 시간이 200이라는 정보를 블록 관리 영역(321)에 업데이트할 수 있다. 이 경우, 최초 데이터 라이트 시간이 100이었고, 최후 데이터 라이트 시간만 변경되었기 때문에 최초 데이터 라이트 시간은 100을 유지한채 최후 데이터 라이트 시간만 200으로 업데이트될 수 있다.
도 6을 참조하면, 프로세서(도 1의 100)는 제1 시간(t1) 및 제2 시간(t2) 이후인 제3 시간(t3)에 제1 데이터(도 4의 A) 및 제2 데이터(A')와 다른 제3 데이터(B)를 생성 시 제3 데이터(B)에 대한 라이트 커맨드를 컨트롤러(도 2의 312)에 전송할 수 있다.
컨트롤러(도 2의 312)는 제3 데이터(B)에 대한 라이트 커맨드를 수신한 경우, 제3 데이터(B)를 비휘발성 메모리(도 1의 320)에 포함된 복수의 블록 중 어느 하나의 블록에 포함된 페이지에 라이트할 수 있다. 예를 들어, 컨트롤러(도 2의 312)는 제1 블록(400)에 포함된 제1 페이지(401)에 제3 데이터(B)를 라이트할 수 있다.
이 경우, 제1 블록(400)에 대한 최후 데이터 라이트 시간을 디바이스 시간인 300으로 블록 관리 영역(321)에 업데이트할 수 있다. 최초 데이터 라이트 시간이 100이었고, 최후 데이터 라이트 시간만 변경되었기 때문에 최초 데이터 라이트 시간은 100을 유지한채 최후 데이터 라이트 시간만 300으로 업데이트될 수 있다.(데이터의 시간이 아닌 실제 적히는 시간 기준)
도 3을 다시 참조하면, 컨트롤러(도 2의 312)는 수신된 커맨드가 라이트 커맨드가 아닌 경우(S320, N), 수신된 커맨드가 영구 삭제 커맨드인지 여부를 확인할 수 있다(S350). 여기서 영구 삭제는, 물리적 주소에서 데이터를 완전히 소거하는 것이다.
컨트롤러(도 2의 312)는 수신된 커맨드가 영구 삭제 커맨드가 아닌 경우(S350, N), 커맨드에 대응하는 동작을 수행할 수 있다(S340).
일례로, 수신된 커맨드가 리드 커맨드인 경우, 커맨드에 대응하는 데이터를 프로세서(도 1의 100)에게 전송할 수 있다.
다른 일례로, 컨트롤러(도 2의 312)는 수신된 커맨드가 소거 커맨드인 경우, 커맨드에 대응하는 데이터를 소거하는 동작을 수행할 수 있다. 다만, 소거 동작이 수행되더라도, 커맨드에 대응하는 데이터는 물리적 주소에 저장되어 있고 단지 물리적 주소와 논리적 주소의 맵핑만 맵핑 정보(도 1의 322)에서 삭제될 수 있다.
컨트롤러(도 2의 312)는 수신된 커맨드가 영구 삭제 커맨드인 경우(S350, Y), 삭제되는 데이터의 메타 정보와 복수의 블록 각각의 시간 정보(예를 들어, 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간)를 확인할 수 있다(S360). 삭제되는 데이터의 메타 정보에는 데이터의 생성 시간 및 수정 시간이 저장되어 있을 수 있다.
일례로, 도 7을 참조하면, 비휘발성 메모리(도 1의 320)에 저장되는 파일(500)은 메타 정보(510) 및 데이터(520)를 포함할 수 있다. 여기서, 메타 정보(510)는 데이터(520)의 생성 시간(511) 및 데이터(520)의 수정 시간(512)을 포함할 수 있다. 데이터(520)의 생성 시간(511) 및 데이터(520)의 수정 시간(512)은 디바이스 타이머(도 2의 316)를 통해 카운트된 저장 장치(도 1의 300)의 디바이스 시간으로 저장될 수 있다.
메타 정보(510)에 포함된 수정 시간(512)은 데이터(520)의 최종 수정 시간(512)만 포함할 수 있다. 따라서, 메타 정보(510)에 저장되는 정보의 양을 최소화할 수 있다.
몇몇 실시예에 따르면, 프로세서(도 1의 100)는 데이터를 생성하거나 수정할 때 시스템 시간과 디바이스 시간 간의 차이 값을 이용하여 디바이스 시간으로 데이터 생성 시간 또는 데이터 수정 시간을 계산하고, 이를 메타 정보로 기록할 수 있다. 이는 도 8을 참조하여 설명한다.
도 8을 참조하면, 프로세서(도 1의 100)는 시스템이 온된 경우(예를 들어, 운영 체제가 실행된 경우), 저장 장치(도 1의 300)로부터 저장 장치(도 1의 300)의 디바이스 시간을 수신할 수 있다(S610).
프로세서(도 1의 100)는 저장 장치(도 1의 300)로부터 수신된 저장 장치의 디바이스 시간과 시스템 시간 사이의 차이 값을 계산하여 휘발성 메모리(도 1의 200)에 저장할 수 있다(S620).
프로세서(도 1의 100)는 차이 값을 휘발성 메모리(도 1의 200)에 저장한 후 시스템 시간이 변경되었는지 여부를 인식할 수 있다(S630). 프로세서(도 1의 100)는 시스템 시간이 변경되었다고 인식한 경우(S630, Y), 디바이스 시간과 시스템 시간 사이의 차이 값을 다시 계산하여 휘발성 메모리(도 1의 200)에 업데이트할 수 있다(S640).
프로세서(도 1의 100)는 단계(S640)에서 차이 값을 휘발성 메모리(도 1의 200)에 업데이트한 상태에서 데이터를 생성하거나 수정하는 명령을 수신하지 못한 경우(S650, N), 시스템 시간이 변경되었는지 또는 데이터가 수정되거나 생성되었는지를 계속 확인할 수 있다.
한편, 프로세서(도 1의 100)는 단계(S640)에서 차이 값을 휘발성 메모리(도 1의 200)에 업데이트한 상태 또는 단계(S630)를 통해 시스템 시간이 변경되지 않은 상태(S630, N)에서 데이터를 생성하거나 수정하는 명령을 수신한 경우(S650, Y), 휘발성 메모리(도 1의 200)에 저장된 차이 값을 이용하여 저장 장치의 디바이스 시간을 계산할 수 있다(S660).
일례로, 프로세서(도 1의 100)는 데이터를 생성하거나 수정할 때의 시스템 시간을 확인하고, 확인된 시스템 시간에 메모리(도 2의 314)에 저장된 차이 값을 감산하거나 가산하여 저장 장치의 디바이스 시간을 계산할 수 있다.
프로세서(도 1의 100)는 단계(S660)에서 데이터를 생성 또는 수정한 때의 저장 장치의 디바이스 시간을 계산한 경우, 상기 계산된 디바이스 시간을 데이터의 메타 정보(예를 들어, 데이터 생성 시간 또는 데이터 수정 시간)로 기록할 수 있다(S670).
다른 몇몇 실시예에 따르면, 프로세서(도 1의 100)는 데이터 생성 시 또는 데이터 수정 시 디바이스 시간을 저장 장치로부터 수신하여 수신된 디바이스 시간을 데이터 생성 시간 또는 데이터 수정 시간으로 메타 정보에 저장할 수 있다. 이는 도 9를 참조하여 설명한다.
도 9를 참조하면, 프로세서(도 1의 100)는 데이터가 수정되거나 생성된 때 저장 장치(도 1의 300)로부터 디바이스 시간을 수신할 수 있다(S710). 프로세서(도 1의 100)는 단계(S710)에서 수신된 디바이스 시간을 데이터 생성 시간 또는 데이터 수정 시간으로 메타 정보에 기록할 수 있다(S720).
도 3을 다시 참조하면, 컨트롤러(도 3의 312)는 단계(S360)에서 삭제되는 데이터의 메타 데이터 및 복수의 블록의 시간 정보를 확인한 후 영구 삭제를 수행할 블록을 선택할 수 있다(S370). 컨트롤러(도 3의 312)는 단계(S370)에서 영구 삭제를 수행할 블록을 선택한 경우, 상기 선택된 블록에 대한 영구 삭제를 수행할 수 있다(S380). 이는 도 10 내지 도 14를 참조하여 좀더 자세히 설명한다.
도 10은 몇몇 실시예에 따른 저장 장치에서 영구 삭제를 수행하는 방법의 일례를 설명하기 위해 도시한 도면이다.
먼저, 도 7을 참조하면, 컨트롤러(도 2의 312)는 파일(500)을 삭제하는 명령을 수신한 경우, 메타 정보(510a)에서 데이터의 생성 시간(511) 및 수정 시간(512)을 확인할 수 있다.
예를 들어, 컨트롤러(도 2의 312)는 파일(500)에 포함된 데이터(520)의 영구 삭제 명령을 수신한 경우, 데이터(520)의 생성 시간(511)이 100이고 데이터(520)의 수정 시간(511)이 300이라는 정보를 확인할 수 있다.
또한, 도 10을 참조하면, 컨트롤러(도 2의 312)는 데이터(도 7의 520)를 영구 삭제하라는 명령을 수신한 경우, 블록 관리 영역(321)에서 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 확인할 수 있다.
몇몇 실시예에 따르면, 컨트롤러(도 2의 312)는 데이터(도 7의 520)의 생성 시간(도 7의 511)부터 데이터(도 7의 520)의 수정 시간(도 7의 512) 사이에 최초 데이터 라이트 시간 또는 최후 데이터 라이트 시간이 존재하는 블록과 최초 데이터 라이트 시간부터 최후 데이터 라이트 시간 사이에 데이터(도 7의 520)의 생성 시간(도 7의 511) 또는 데이터(도 7의 520)의 수정 시간(도 7의 512)을 포함하는 블록을 영구 삭제할 블록으로 선택할 수 있다.
제1 블록(400)의 최초 데이터 라이트 시간인 100부터 최후 데이터 라이트 시간인 200 사이에 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100이 포함되어 있기 때문에, 컨트롤러(도 2의 312)는 제1 블록(400)을 영구 삭제할 블록으로 선택할 수 있다. 또한, 제1 블록(400)의 최초 데이터 라이트 시간인 100 및 최후 데이터 라이트 시간인 200이 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100부터 수정 시간(도 7의 512)인 300 사이에 존재하기 때문에, 컨트롤러(도 2의 312)는 제1 블록(400)을 영구 삭제할 블록으로 선택할 수 있다.
제2 블록(410)의 최초 데이터 라이트 시간인 90부터 최후 데이터 라이트 시간인 400 사이에 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100 및 수정 시간(도 7의 512)인 300이 포함되어 있기 때문에, 컨트롤러(도 2의 312)는 제2 블록(410)을 영구 삭제할 블록으로 선택할 수 있다.
제3 블록(420)의 최초 데이터 라이트 시간인 20 및 최후 데이터 라이트 시간인 30은 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100 및 수정 시간(도 7의 512)인 300 이전에 존재하기 때문에, 컨트롤러(도 2의 312)는 제3 블록(420)을 영구 삭제할 블록으로 선택하지 않을 수 있다.
제4 블록(430)의 최초 데이터 라이트 시간인 400 및 최후 데이터 라이트 시간인 500은 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100 및 수정 시간(도 7의 512)인 300 이후에 존재하기 때문에, 컨트롤러(도 2의 312)는 제4 블록(430)을 영구 삭제할 블록으로 선택하지 않을 수 있다.
제5 블록(440)의 최초 데이터 라이트 시간인 110 및 최후 데이터 라이트 시간인 130은 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100부터 수정 시간(도 7의 512)인 300 사이에 존재하기 때문에, 컨트롤러(도 2의 312)는 제5 블록(440)을 영구 삭제할 블록으로 선택할 수 있다.
제6 블록(450)의 최초 데이터 라이트 시간인 200은 데이터(도 7의 520)의 생성 시간(도 7의 511)인 100부터 수정 시간(도 7의 512)인 300 사이에 존재하기 때문에 컨트롤러(도 2의 312)는 제6 블록(450)을 영구 삭제할 블록으로 선택할 수 있다. 또한, 제6 블록(450)의 최초 데이터 라이트 시간인 200부터 최후 데이터 라이트 시간인 500 사이에 데이터(도 7의 수정 시간(도 7의 512)인 300이 포함되기 때문에, 컨트롤러(도 2의 312)는 제6 블록(450)을 영구 삭제할 블록으로 선택할 수 있다.
결과적으로, 컨트롤러(도 2의 312)는 제1 블록(400), 제2 블록(410), 제5 블록(440) 및 제6 블록(450)을 영구 삭제할 블록으로 선택할 수 있고, 제3 블록(420) 및 제4 블록(430)을 영구 삭제할 블록으로 선택하지 않을 수 있다.
컨트롤러(도 2의 312)는 상술한 방법을 통해 선택된 블록들(예를 들어, 제1 블록(400), 제2 블록(410), 제5 블록(440) 및 제6 블록(450))에 대한 영구 삭제를 수행할 수 있다.
도 11 내지 도 14는 몇몇 실시예에 따른 저장 장치에서 영구 삭제를 수행하는 방법의 다른 일례를 설명하기 위해 도시한 도면이다.
도 11을 참조하면, 제1 블록(400)에 포함된 제2 페이지(402) 및 제3 페이지(403)는 제1 데이터(A)가 변경됨으로써 무효화된 페이지이고, 제3 블록(420)에 포함된 제3 페이지(423)는 제1 데이터(A)와 다른 데이터가 변경되거나 삭제됨으로써 무효화된 페이지일 수 있다.
컨트롤러(도 2의 312)는 제1 데이터(A)를 영구 삭제하라는 명령을 수신한 경우, 먼저 제1 데이터(A)를 제2 블록(410) 내의 제1 페이지(411)에서 삭제해야 한다. 그리고, 컨트롤러(도 2의 312)는 무효(invalid)화된 페이지 내에 어떠한 데이터가 포함되어 있는지 인식할 수 없기 때문에 제1 데이터(A)를 영구 삭제하기 위해 제1 데이터(A)를 포함하는 제1 블록(400) 및 제2 블록(410)뿐만 아니라 제1 데이터(A)를 포함하지 않는 제3 블록(420)에 대한 영구 삭제도 수행해야 한다. 이 경우, 영구 삭제를 수행할 블록이 많아지기 때문에 시간이 많이 걸리는 문제가 발생한다.
하지만, 몇몇 실시예에 따르면, 컨트롤러(도 2의 312)는 영구 삭제를 수행할 블록들을 제한할 수 있다.
예를 들어, 컨트롤러(도 2의 312)는 제1 데이터(A)를 영구 삭제하라는 명령을 수신한 경우, 제1 데이터(A)의 메타 정보(도 7의 510)에서 제1 데이터(A)의 생성 시간(511)이 100이고 및 수정 시간(512)이 300이라는 것을 확인할 수 있다.
또한, 도 12를 참조하면, 컨트롤러(도 2의 312)는 제1 데이터(A)를 영구 삭제하라는 명령을 수신한 경우, 블록 관리 영역(321)에서 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 확인할 수 있다.
컨트롤러(도 2의 312)는 제1 데이터(A)의 생성 시간(도 7의 511)인 100과 제1 데이터(A)의 수정 시간(도 7의 512)인 300 사이에 최후 데이터 라이트 시간을 포함하는 제1 블록(400) 및 제2 블록(410)을 영구 삭제할 블록으로 선택할 수 있다. 또한, 컨트롤러(도 2의 312)는 제1 데이터(A)의 생성 시간(도 7의 511) 및 수정 시간(도 7의 512) 이전에 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간이 존재하는 제3 블록(420)을 영구 삭제할 블록으로 선택하지 않을 수 있다.
상술한 방법에 의해 삭제할 블록을 선택하는 경우, 영구 삭제 대상이 아닌 데이터를 포함하는 페이지를 포함하는 블록은 제외할 수 있어, 영구 삭제를 수행할 블록의 수를 줄여 영구 삭제를 수행하는 시간을 줄일 수 있다.
다만, 도 11을 다시 참조하면, 영구 삭제할 블록 내에 삭제할 제1 데이터(A)와 다른 제4 데이터(D)가 포함될 수도 있다. 이 경우, 컨트롤러(도 2의 312)는 제4 데이터(D)를 영구 삭제할 블록으로 선택되지 않은 다른 블록에 라이트해야 한다.
예를 들어, 영구 삭제할 블록으로 선택된 제1 블록(400)에 삭제할 제1 데이터(A)와 다른 제4 데이터(D)가 포함된 경우, 컨트롤러(도 2의 312)는 제4 데이터(D)를 선택되지 않은 제3 블록(420)에 라이트할 수 있다.
컨트롤러(도 2의 312)는 제1 블록(400)에 포함된 제4 데이터(D)를 제3 블록(420)에 라이트할 때, 제4 데이터(D)가 저장된 제1 블록(400)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 확인할 수 있다. 컨트롤러(도 2의 312)는 제1 블록(400)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 제3 블록(420)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간과 비교하여 제3 블록(420)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트할 수 있다.
구체적으로, 컨트롤러(도 2의 312)는 제4 데이터(D)가 저장된 제1 블록(400)의 최초 데이터 라이트 시간이 데이터(D)가 이동하여 라이트될 제3 블록(420)의 최후 데이터 라이트 시간보다 더 빠른 경우에만, 제1 블록(400)의 최초 데이터 라이트 시간으로 제3 블록(420)의 최초 데이터 라이트 시간을 변경할 수 있다. 또한, 컨트롤러(도 2의 312)는 제1 블록(400)의 최후 데이터 라이트 시간이 제3 블록(420)의 최후 데이터 라이트 시간보다 뒤지는 경우에만, 제1 블록(400)의 최후 데이터 라이트 시간으로 제3 블록(420)의 최후 데이터 라이트 시간을 변경할 수 있다.
예를 들어, 도 12를 참조하면, 컨트롤러(도 2의 312)는 제4 데이터(D)가 저장된 제1 블록(400)의 최초 데이터 라이트 시간이 40이고 제4 데이터(D)가 이동하여 라이트될 제3 블록(420)의 최초 데이터 라이트 시간이 20이라는 것을 확인할 수 있다. 이 경우, 컨트롤러(도 2의 312)는 제1 블록(400)의 최초 데이터 라이트 시간이 제3 블록(420)의 최초 데이터 라이트 시간보다 뒤지기 때문에 도 14와 같이 제3 블록(420)의 최초 데이터 라이트 시간을 그대로 유지할 수 있다.
또한, 컨트롤러(도 2의 312)는 제4 데이터가 저장된 제1 블록(400)의 최후 데이터 라이트 시간이 200이고, 제4 데이터(D)가 이동하여 라이트될 제3 블록(420)의 최후 데이터 라이트 시간이 30이라는 것을 확인할 수 있다. 이 경우, 컨트롤러(도 2의 312)는 제1 블록(400)의 최후 데이터 라이트 시간이 제3 블록(420)의 최후 라이트 시간보다 뒤지기 때문에 도 14와 같이 제1 블록(400)의 최후 데이터 라이트 시간인 200으로 제3 블록(420)의 최후 데이터 라이트 시간을 업데이트할 수 있다.
한편, 컨트롤러(도 2의 312)는 제4 데이터(D)가 이동하여 라이트될 제3 블록(420)의 전체 페이지가 비어(free) 있어서 제3 블록(420)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간이 블록 관리 영역(321)에 저장되어 있지 않는 경우, 제1 블록(400)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간으로 제3 블록(420)의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 업데이트할 수도 있다.
도면에는 도시되지는 않았지만, 가비지 컬렉션(Garbage Collection)을 수행한 경우에도 동일한 방법으로 블록들의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간이 업데이트될 수 있다.
한편, 도 13을 참조하면, 컨트롤러(도 2의 312)는 영구 삭제할 블록인 제1 블록(400) 및 제2 블록(410)에 대한 영구 삭제를 수행할 수 있다. 즉, 컨트롤러(도 2의 312)는 제1 블록(400) 및 제2 블록(410)에 포함된 모든 페이지들이 프리(free) 상태가 되도록 비울 수 있다.
또한, 도 14를 다시 참조하면, 컨트롤러(도 2의 312)는 영구 삭제를 수행한 제1 블록(400) 및 제2 블록(410)에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 블록 관리 영역(321)내에서 삭제할 수 있다. 따라서, 제1 블록(400) 및 제2 블록(410)에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간은 초기화 될 수 있다.
상술한 실시예와 같이 영구 삭제할 블록을 선택하여 영구 삭제를 수행할 경우, 소프트웨어 상에서 삭제된 데이터를 빠르게 하드웨어 상에서도 영구적으로 삭제할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: 메모리 시스템 100: 프로세서
110: 시스템 타이머 200: 휘발성 메모리
250: 버스 300: 저장 장치
310: 메모리 컨트롤러 320: 비휘발성 메모리

Claims (10)

  1. 제1 블록 및 제2 블록을 포함하는 비휘발성 메모리; 및
    컨트롤러를 포함하고,
    상기 비휘발성 메모리는,
    상기 제1 블록 및 상기 제2 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 저장하는 블록 관리 영역을 포함하고,
    상기 컨트롤러는,
    제1 데이터의 영구 삭제 명령에 따라 상기 제1 데이터의 생성 시간 및 수정 시간을 확인하고,
    상기 제1 블록 및 상기 제2 블록 각각에 대한 상기 최초 데이터 라이트 시간 및 상기 최후 데이터 라이트 시간을 상기 생성 시간 및 상기 수정 시간과 비교하여 상기 제1 블록 및 상기 제2 블록 중 영구 삭제할 블록을 선택하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 블록 관리 영역은,
    상기 비휘발성 메모리 내에 포함된 상기 제1 블록 및 상기 제2 블록과 상이한 제3 블록인, 저장 장치.
  3. 제 1 항에 있어서,
    상기 컨트롤러는,
    상기 제1 블록의 제1 최초 데이터 라이트 시간부터 상기 제1 블록의 제2 최후 데이터 라이트 시간 사이에 상기 생성 시간 또는 상기 수정 시간이 포함되는 경우, 상기 제1 블록을 영구 삭제할 블록으로 선택하는, 저장 장치.
  4. 제 1 항에 있어서,
    상기 컨트롤러는,
    상기 생성 시간부터 상기 수정 시간 사이에 상기 제1 블록의 제1 최초 데이터 라이트 시간 또는 상기 제1 블록의 제1 최후 데이터 라이트 시간이 포함되는 경우, 상기 제1 블록을 영구 삭제할 블록으로 선택하는, 저장 장치.
  5. 제 1항에 있어서,
    상기 컨트롤러는,
    상기 제2 블록의 제2 최초 데이터 라이트 시간 및 제2 최후 데이터 라이트 시간이 상기 생성 시간 이전인 경우, 상기 제2 블록을 상기 영구 삭제할 블록으로 선택하지 않는, 저장 장치.
  6. 상기 컨트롤러는,
    상기 제2 블록의 제2 최초 데이터 라이트 시간 및 제2 최후 데이터 라이트 시간이 상기 수정 시간 이후인 경우, 상기 제2 블록을 상기 영구 삭제할 블록으로 선택하지 않는, 저장 장치.
  7. 복수의 블록을 포함하는 비휘발성 메모리; 및
    컨트롤러를 포함하고,
    상기 비휘발성 메모리는,
    상기 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 저장하는 블록 관리 영역을 포함하고,
    상기 컨트롤러는,
    상기 복수의 블록 중 제1 블록에 포함된 페이지에 데이터를 라이트하는 명령을 수신하거나 상기 명령에 따라 상기 제1 블록에 포함된 상기 페이지에 상기 데이터를 라이트할 때, 상기 블록 관리 영역에 저장된 상기 제1 블록의 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간 중 적어도 하나를 업데이트하는, 저장 장치.
  8. 저장 장치의 디바이스 시간을 카운트하는 디바이스 타이머 및 컨트롤러를 포함하는 저장 장치;
    시스템 시간을 저장하는 시스템 타이머를 포함하는 프로세서; 및
    상기 디바이스 시간과 상기 시스템 시간 간의 차이 값을 저장하는 휘발성 메모리를 포함하고,
    상기 프로세서는,
    시스템 온되거나 상기 시스템 시간이 변경된 경우, 상기 디바이스 타이머로부터 상기 디바이스 시간을 수신하고,
    상기 시스템 시간과 상기 디바이스 시간과의 차이 값을 산출하여 상기 휘발성 메모리에 저장하고,
    제1 데이터를 생성 또는 수정할 때 상기 차이 값에 기초하여 상기 디바이스 시간을 계산하고,
    상기 디바이스 시간을 상기 제1 데이터의 생성 시간 또는 수정 시간으로서 상기 제1 데이터의 메타 정보에 저장하는, 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 저장 장치는,
    복수의 블록 및 상기 복수의 블록 각각에 대한 최초 데이터 라이트 시간 및 최후 데이터 라이트 시간을 저장하는 블록 관리 영역을 포함하는 비휘발성 메모리를 더 포함하고,
    상기 컨트롤러는,
    상기 제1 데이터의 영구 삭제 명령에 따라 상기 제1 데이터의 상기 생성 시간 및 상기 수정 시간을 확인하고,
    상기 복수의 블록 각각에 대한 상기 최초 데이터 라이트 시간 및 상기 최후 데이터 라이트 시간을 상기 생성 시간 및 상기 수정 시간과 비교하여 영구 삭제할 블록을 선택하는, 메모리 시스템.
  10. 제 8 항에 있어서,
    상기 컨트롤러는,
    상기 복수의 블록 중 상기 생성 시간부터 상기 수정 시간까지의 시간 사이에 최초 데이터 라이트 시간 또는 최후 데이터 라이트 시간이 존재하는 블록과 최초 데이터 라이트 시간부터 최후 데이터 라이트 시간 까지의 시간 사이에 상기 생성 시간 또는 상기 수정 시간을 포함하는 블록을 상기 영구 삭제할 블록으로 선택하는, 메모리 시스템.
KR1020170143420A 2017-10-31 2017-10-31 저장 장치 및 메모리 시스템 Active KR102530583B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170143420A KR102530583B1 (ko) 2017-10-31 2017-10-31 저장 장치 및 메모리 시스템
US15/975,008 US10817624B2 (en) 2017-10-31 2018-05-09 Memory system and storage device capable of permanently deleting data stored in a non-volatile memory
CN201811255820.XA CN109725850B (zh) 2017-10-31 2018-10-25 存储器系统和存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170143420A KR102530583B1 (ko) 2017-10-31 2017-10-31 저장 장치 및 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20190048453A true KR20190048453A (ko) 2019-05-09
KR102530583B1 KR102530583B1 (ko) 2023-05-09

Family

ID=66243960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170143420A Active KR102530583B1 (ko) 2017-10-31 2017-10-31 저장 장치 및 메모리 시스템

Country Status (3)

Country Link
US (1) US10817624B2 (ko)
KR (1) KR102530583B1 (ko)
CN (1) CN109725850B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10740026B2 (en) * 2018-05-18 2020-08-11 Micron Technology, Inc. Time indicator of super block operations
US11574305B1 (en) * 2019-05-20 2023-02-07 Wells Fargo Bank, N.A. Extensible electronic payment schema
US11681965B2 (en) * 2019-10-25 2023-06-20 Georgetown University Specialized computing environment for co-analysis of proprietary data
KR20230001182A (ko) * 2021-06-28 2023-01-04 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US12158850B2 (en) * 2021-10-22 2024-12-03 Lutron Technology Company Llc Method for communication between components of an electrical device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120278564A1 (en) * 2011-04-29 2012-11-01 Seagate Technology Llc Secure erasure of data from a non-volatile memory
JP2013541743A (ja) * 2011-02-02 2013-11-14 株式会社日立製作所 ストレージシステムおよびそのデータ制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002025473A1 (en) 2000-09-21 2002-03-28 Integrity Pc Innovations, Inc. An automatic real-time file management method and apparatus
CN101354681B (zh) * 2008-09-23 2010-12-01 美商威睿电通公司 存储器系统、非易失性存储器的磨损均衡方法及装置
US8261136B2 (en) 2009-06-29 2012-09-04 Sandisk Technologies Inc. Method and device for selectively refreshing a region of a memory of a data storage device
CN102667772B (zh) 2010-03-01 2015-05-20 株式会社日立制作所 文件级分级存储管理系统、方法和设备
US20120110343A1 (en) * 2010-10-29 2012-05-03 Bandic Zvonimir Z Trustworthy timestamps on data storage devices
JP5666710B2 (ja) * 2011-04-05 2015-02-12 株式会社日立製作所 ストレージ装置及びボリューム管理方法
US9317422B1 (en) * 2011-10-03 2016-04-19 Foremay, Inc. Secure erase of data in electronic device
KR101392174B1 (ko) 2011-11-09 2014-05-09 한양대학교 산학협력단 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법
US9442955B1 (en) 2012-12-28 2016-09-13 Emc Corporation Managing delete operations in files of file systems
JP2016506585A (ja) * 2013-01-08 2016-03-03 ヴァイオリン メモリー インコーポレイテッド データストレージのための方法及びシステム
JP2015035020A (ja) 2013-08-07 2015-02-19 富士通株式会社 ストレージシステム、ストレージ制御装置及び制御プログラム
KR101539617B1 (ko) 2014-04-24 2015-08-06 서강대학교산학협력단 모바일 기기에서 파일구조 유형에 따른 파일 삭제 방법 및 이를 이용한 장치
JP5991699B2 (ja) 2014-08-08 2016-09-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、情報処理システム、バックアップ方法、およびプログラム
US9798657B2 (en) * 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
JP5991701B2 (ja) 2014-10-28 2016-09-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ストレージ管理方法、ストレージ管理システム、コンピュータ・システムおよびプログラム
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
JP6482322B2 (ja) * 2014-12-29 2019-03-13 東芝メモリ株式会社 メモリ装置及びプログラム
US10922011B2 (en) * 2018-04-12 2021-02-16 Samsung Electronics Co., Ltd. Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013541743A (ja) * 2011-02-02 2013-11-14 株式会社日立製作所 ストレージシステムおよびそのデータ制御方法
US20120278564A1 (en) * 2011-04-29 2012-11-01 Seagate Technology Llc Secure erasure of data from a non-volatile memory

Also Published As

Publication number Publication date
CN109725850A (zh) 2019-05-07
CN109725850B (zh) 2023-12-22
US20190130135A1 (en) 2019-05-02
KR102530583B1 (ko) 2023-05-09
US10817624B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
US10657041B2 (en) Data management method and storage device performing the same
US9164833B2 (en) Data storage device, operating method thereof and data processing system including the same
CN104699417B (zh) 数据储存装置以及其数据存取方法
US10817624B2 (en) Memory system and storage device capable of permanently deleting data stored in a non-volatile memory
TWI569139B (zh) 有效資料合併方法、記憶體控制器與記憶體儲存裝置
US9176865B2 (en) Data writing method, memory controller, and memory storage device
JP2011192260A (ja) 半導体記憶装置
CN107564558B (zh) 实现分散原子i/o写入
CN109388582B (zh) 数据储存装置以及其数据抹除方法
US9292435B2 (en) Memory device and method of operation
KR102807315B1 (ko) 메모리 시스템에서 맵 정보를 전송하는 장치
US9372741B2 (en) Data storage device and operating method thereof
US10552048B2 (en) Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks
US11709781B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
KR102749350B1 (ko) 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법
CN110825655A (zh) 存储器件、存取数据的方法及管理数据的方法
TWI642059B (zh) 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
CN107102953B (zh) 非易失性存储器装置及其迭代排序方法
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
KR20250029003A (ko) 조각 모음 방법, 장치, 전자 장치, 및 컴퓨터 판독가능 스토리지 매체
CN111625187B (zh) 一种存储器及其控制方法与存储系统
KR20240086166A (ko) 데이터에 대한 맵 정보를 관리하는 스토리지 장치 및 그 방법
US11354200B2 (en) Method and system for facilitating data recovery and version rollback in a storage device
CN111752475B (zh) 在存储服务器中进行数据存取管理的方法与装置
KR102032878B1 (ko) 플래시 메모리 컨트롤러의 에러 정정 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20171031

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20201027

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20171031

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20221115

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20230309

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20230503

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20230503

End annual number: 3

Start annual number: 1

PG1601 Publication of registration