KR20200057866A - 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 - Google Patents

불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR20200057866A
KR20200057866A KR1020180141638A KR20180141638A KR20200057866A KR 20200057866 A KR20200057866 A KR 20200057866A KR 1020180141638 A KR1020180141638 A KR 1020180141638A KR 20180141638 A KR20180141638 A KR 20180141638A KR 20200057866 A KR20200057866 A KR 20200057866A
Authority
KR
South Korea
Prior art keywords
data
page
address
logical
physical
Prior art date
Application number
KR1020180141638A
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 삼성전자주식회사
Priority to KR1020180141638A priority Critical patent/KR20200057866A/ko
Priority to US16/533,901 priority patent/US11347654B2/en
Priority to CN201911093271.5A priority patent/CN111198655A/zh
Publication of KR20200057866A publication Critical patent/KR20200057866A/ko
Priority to US17/732,580 priority patent/US20220253386A1/en
Priority to US17/827,850 priority patent/US20220292030A1/en

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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
    • G06F2212/1024Latency reduction
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법에 관한 것이다. 스토리지 장치는 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 제1 데이터를 제1 페이지에 쓴 이후에, 제2 데이터를 제2 페이지에 쓴다. 메모리 컨트롤러는 제1 데이터에 대응되는 제1 검사 데이터 및 제2 데이터에 대응되는 제2 검사 데이터를 생성한다. 메모리 컨트롤러는 제2 검사 데이터에 기초하여 제1 및 제2 물리 어드레스들 및 상기 제1 및 제2 논리 어드레스들을 복원한다. 본 발명의 실시예에 따르면, 맵을 복원하는 시간이 감소될 수 있다.

Description

불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법{STORAGE DEVICE INCLUDING NONVOLATILE MEMORY DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터를 저장하는 장치에 관한 것으로, 좀 더 상세하게는 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법에 관한 것이다.
스토리지 장치(예를 들면, SSD 또는 UFS(Universal Flash Storage))는 불휘발성 메모리 장치를 포함한다. 불휘발성 메모리 장치는 전원이 차단되어도 저장된 데이터를 유지할 수 있으며, 따라서 장기간의 데이터 저장에 유리하다. 스토리지 장치는 컴퓨터, 스마트폰, 스마트 패드 등과 같은 다양한 전자 장치들에서 주 저장소로 사용되고 있다.
스토리지 장치는 호스트로부터 제공되는 논리 어드레스를 불휘발성 메모리 장치에서 사용 가능한 물리 어드레스로 변환하는 동작을 통하여, 불휘발성 메모리 장치에 대한 다양한 동작들을 수행할 수 있다. 논리 어드레스에서 물리 어드레스로 변환하는 동작은 맵핑 테이블을 통하여 수행될 수 있다. 맵핑 테이블이 불휘발성 메모리 장치에 업데이트되기 전에, 서든 파워 오프(SPO)와 같이 예상치 못한 상황에 의하여 스토리지 장치에 포함된 휘발성 메모리(예를 들어, 버퍼 메모리)로부터 맵핑 테이블이 소거될 수 있다. 이 경우, 맵핑 테이블의 복원이 요구된다. 다만, 맵핑 테이블의 복원 동작이, 그 이후의 쓰기, 읽기, 소거 등을 포함하는 다양한 동작을 지연시키지 않을 것이 요구된다.
본 발명은 논리 어드레스 및 물리 어드레스를 연결하는 맵을 복원하는 시간을 감소시키는 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법을 제공할 수 있다.
본 발명의 실시예에 따른 스토리지 장치는 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함한다. 불휘발성 메모리 장치는 제1 물리 어드레스에 대응되는 제1 페이지, 및 제2 물리 어드레스에 대응되는 제2 페이지를 포함하는 메모리 영역을 포함한다. 메모리 컨트롤러는 제1 논리 어드레스에 대응되는 제1 쓰기 커맨드에 기초하여 제1 데이터를 제1 페이지에 쓴 이후에, 제2 논리 어드레스에 대응되는 제2 쓰기 커맨드에 기초하여 제2 데이터를 제2 페이지에 쓴다. 메모리 컨트롤러는 제1 데이터에 대응되는 제1 검사 데이터 및 제2 데이터에 대응되는 제2 검사 데이터를 생성한다. 메모리 컨트롤러는 제2 검사 데이터에 기초하여 제1 및 제2 물리 어드레스들 및 제1 및 제2 논리 어드레스들을 복원한다.
본 발명의 실시예에 따른 스토리지 장치의 동작 방법은, 기준 어드레스에 대응되는 제1 쓰기 커맨드에 기초하여 제1 데이터를 불휘발성 메모리 장치의 제1 페이지에 쓰는 단계, 타겟 어드레스에 대응되는 제2 쓰기 커맨드에 기초하여, 제2 데이터를 상기 불휘발성 메모리 장치의 제2 페이지에 쓰는 단계, 및 타겟 어드레스 이전에 생성된 어드레스와 타겟 어드레스 사이의 연속성 및 기준 어드레스와 타겟 어드레스 사이의 차이에 기초하여, 제2 데이터에 대응되는 타겟 검사 데이터를 생성하는 단계를 포함한다.
본 발명의 실시예에 따른 스토리지 장치의 동작 방법은 복수의 페이지들을 포함하는 메모리 영역에 물리 페이지 번호 순서로 데이터를 쓰는 단계, 복수의 페이지들 각각에 대응되는 검사 데이터를 생성하는 단계, 복수의 페이지들 중 마지막으로 데이터를 저장한 라스트 페이지를 읽는 단계, 및 라스트 페이지에 대응되는 검사 데이터에 기초하여, 논리 페이지 번호에 대응되는 물리 페이지 번호를 지시하는 맵의 일부를 복원하는 단계를 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법은 불휘발성 메모리 장치의 일부 페이지에 저장된 검사 데이터를 읽어 메모리 영역에 대한 맵을 복원함으로써, 맵을 복원하는 시간을 감소시킬 수 있다.
도 1은 본 발명의 실시예에 따른 스토리지 장치의 블록도이다.
도 2는 도 1의 메모리 컨트롤러의 예시적인 블록도이다.
도 3은 도 1의 불휘발성 메모리 장치의 예시적인 블록도이다.
도 4는 도 1의 스토리지 장치의 동작 방법의 예시적인 순서도이다.
도 5는 도 4의 맵에 기초하여 데이터를 쓰는 동작을 설명하기 위한 예시적인 도면이다.
도 6은 도 5의 제1 메모리 블록에 쓰여지는 데이터의 예시적인 도면이다.
도 7은 도 5의 제2 메모리 블록에 쓰여지는 데이터의 예시적인 도면이다.
도 8은 도 6 또는 도 7의 검사 데이터를 생성하기 위한 스토리지 장치의 동작 방법의 예시적인 순서도이다.
도 9는 도 8의 동작들로부터 생성된 검사 데이터를 통하여 맵을 복원하기 위한 스토리지 장치의 동작 방법의 예시적인 순서도이다.
도 10은 도 6과 같이 불연속적으로 데이터가 쓰여지는 경우에 맵을 복원하는 과정을 설명하기 위한 예시적인 도면이다.
도 11은 도 7과 같이 연속적으로 데이터가 쓰여지는 경우에 맵을 복원하는 과정을 설명하기 위한 예시적인 도면이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재된다.
도 1은 본 발명의 실시예에 따른 스토리지 장치의 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 메모리 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함한다. 스토리지 장치(100)는 솔리드 스테이트 드라이브(SSD), 메모리 카드, eMMC(ebedded Multi Media Card), 또는 UFS(Universal Flash Storage) 등의 형태로 구성될 수 있으나, 이에 제한되지 않는다.
메모리 컨트롤러(110)는 호스트와 같은 외부 장치의 제어에 따라 불휘발성 메모리 장치(120)를 제어할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 외부 요청에 따라, 불휘발성 메모리 장치(120)에 데이터(DATA)를 쓰거나, 불휘발성 메모리 장치(120)에 저장된 데이터(DATA)를 읽을 수 있다. 이를 위하여, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 어드레스(ADDR), 커맨드(CMD), 및 제어 신호(CTRL)를 전송할 수 있다.
메모리 컨트롤러(110)는 버퍼 메모리(미도시)를 이용하여 스토리지 장치(100)를 관리할 수 있다. 일례로, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 쓰여질 데이터 또는 불휘발성 메모리 장치(120)로부터 읽혀진 데이터를 버퍼 메모리(미도시)에 임시로 저장할 수 있다. 일례로, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)를 관리하는데 필요한 메타 데이터를 버퍼 메모리(미도시)에 저장할 수 있다. 일례로, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 대한 쓰기 동작, 읽기 동작, 및 소거 동작 등을 수행하도록 논리 어드레스를 물리 어드레스로 변환하기 위한 맵을 버퍼 메모리(미도시)에 저장할 수 있다.
메모리 컨트롤러(110)는 플래시 변환 계층(130) (Flash Translation Layer, FTL)을 구동한다. 플래시 변환 계층(130)은 호스트로부터 제공되는 논리 어드레스와 불휘발성 메모리 장치(120)의 물리 어드레스 사이의 대응 관계를 정의할 수 있다. 예를 들어, 논리 어드레스와 물리 어드레스 사이의 대응 관계는 맵핑 테이블로 관리될 수 있다. 이외에도, 플래시 변환 계층(130)은 가비지 콜렉션 동작, 리드 리클레임 동작, 데이터 복구 동작, 데이터 백업 동작 등과 같은 유지 관리 동작을 수행할 수 있다.
또한, 메모리 컨트롤러(110)는 쓰기 검사 매니저(140)를 구동한다. 쓰기 검사 매니저(140)는 불휘발성 메모리 장치(120)에 대한 쓰기 동작 시에, 어드레스에 의하여 식별되는 저장 공간에 쓰여지는 쓰기 데이터를 관리할 수 있다. 쓰기 검사 매니저(140)는 쓰기 데이터와 함께 특정된 페이지에 저장되는 검사 데이터를 생성할 수 있다. 검사 데이터는 맵이 소실되는 것과 같은 예상치 못한 상황에서, 쓰기 데이터를 식별할 수 있도록 제공되는 데이터를 포함할 수 있다. 예를 들어, 예상치 못한 상황은 서든 파워 오프(Sudden Power Off)와 같이 스토리지 장치(100)에 전력이 공급되지 않아, 버퍼 메모리(미도시)에 저장된 맵이 소거되는 상황일 수 있다.
쓰기 검사 매니저(140)는 쓰기 데이터에 대응되는 논리 어드레스 및 물리 어드레스의 연속성을 검사함으로써, 검사 데이터를 생성할 수 있다. 연속성은 현재의 쓰기 동작을 위한 어드레스(예를 들어, 논리 및 물리 페이지 번호들)와 과거의 쓰기 동작을 위한 어드레스의 상관관계에 의하여 판단될 수 있다. 검사 데이터는 이러한 상관관계를 반영하며, 현재의 쓰기 동작뿐만 아니라 과거의 쓰기 동작의 추이 또는 이력이 검사 데이터에 반영될 수 있다. 쓰기 검사 매니저(140)는 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 등에 의하여 하드웨어로 구현되거나, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 검사 데이터에 대한 구체적인 내용은 후술된다.
메모리 컨트롤러(110)는 검사 데이터에 기초하여, 소거된 맵을 복원할 수 있다. 일례로, 맵을 복원하는 동작은 플래시 변환 계층(130)에서 수행될 수 있다. 메모리 컨트롤러(110)는 검사 데이터에 반영된 어드레스의 연속성에 기초하여, 검사 데이터에 대응되는 어드레스뿐만 아니라, 과거의 쓰기 동작에 따른 어드레스들을 예측할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 하나의 페이지에 대응되는 검사 데이터에 기초하여, 복수의 페이지들에 대응되는 어드레스들을 복원할 수 있다. 이러한 맵의 복원 동작에 대한 구체적인 내용은 후술된다.
불휘발성 메모리 장치(120)는 메모리 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 불휘발성 메모리 장치(120)는 어드레스(ADDR), 커맨드(CMD), 및 제어 신호(CTRL)를 수신할 수 있다. 불휘발성 메모리 장치(120)는 어드레스(ADDR)에 대응되는 공간에 데이터(DATA)를 저장하거나, 어드레스(ADDR)에 대응되는 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다.
불휘발성 메모리 장치(120)는 플래시 메모리, 상 변화 랜덤 액세스 메모리(PRAM, Phase-change Random Access Memory), 강유전체 랜덤 액세스 메모리(FeRAM, Ferroelectric RAM), 자기 랜덤 액세스 메모리(MRAM, Magnetic RAM), 저항성 랜덤 액세스 메모리(RRAM, Resistive RAM) 등을 포함할 수 있다.
도 2는 도 1의 메모리 컨트롤러의 예시적인 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(110)는 프로세서(111), 버퍼 메모리(112), 호스트 인터페이스(113), 에러 정정 코드 엔진(114), 메모리 인터페이스(115), 및 버스(116)를 포함한다. 설명의 편의상 도 1의 도면 부호를 참조하여, 도 2가 설명된다.
프로세서(111)는 메모리 컨트롤러(110)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(111)는 호스트 인터페이스(113)를 통하여 외부의 호스트와 통신하고, 메모리 인터페이스(115)를 통하여 불휘발성 메모리 장치(120)와 통신할 수 있다. 프로세서(111)는 버퍼 메모리(112)를 사용하여 스토리지 장치(100)를 제어할 수 있다.
프로세서(111)는 도 1의 플래시 변환 계층(130) 및 쓰기 검사 매니저(140)를 구동할 수 있다. 플래시 변환 계층(130)은 논리 어드레스로부터 물리 어드레스로의 변환 동작을 수행할 수 있고, 어드레스(ADDR)에 대응되는 메모리 영역에 대한 쓰기 동작을 수행할 수 있다. 쓰기 검사 매니저(140)의 실행에 따라, 프로세서(111)는 검사 데이터를 생성할 수 있다. 플래시 변환 계층(130)의 실행에 따라, 프로세서(111)는 검사 데이터를 통하여 버퍼 메모리(112)로부터 소거된 맵을 복원할 수 있다. 검사 데이터는 현재의 쓰기 동작을 위한 어드레스와 과거의 쓰기 동작을 위한 어드레스의 상관관계에 의하여 생성된 데이터이다.
버퍼 메모리(112)는 메모리 컨트롤러(110)에 의하여 실행되는 코드들 및 명령들을 저장할 수 있다. 버퍼 메모리(112)는 메모리 컨트롤러(110)에 의하여 처리되는 데이터를 저장할 수 있다. 메모리 컨트롤러(110)를 제어하기 위한 소프트웨어 (또는 펌웨어)는 버퍼 메모리(112)에 로딩될 수 있다. 일례로, 쓰기 검사 매니저(140)가 펌웨어로 구현되는 경우, 버퍼 메모리(112)에 로딩되어, 프로세서(111)에 의하여 실행될 수 있다. 다만, 이에 제한되지 않고, 쓰기 검사 매니저(140)는 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 등에 의하여 하드웨어로 구현될 수 있다. 버퍼 메모리(112)는 랜덤 액세스 메모리(RAM)일 수 있으며, 일례로, SRAM일 수 있다.
호스트 인터페이스(113)는 프로세서(111)의 제어에 따라, 호스트 장치와 통신하도록 구성된다. 호스트 인터페이스(113)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
에러 정정 코드 엔진(114)은 불휘발성 메모리 장치(120)에 저장될 데이터에 대한 에러 정정 코드를 생성할 수 있다. 에러 정정 코드 엔진(114)은 에러 정정 코드에 기초하여 불휘발성 메모리 장치(120)로부터 읽은 데이터(DATA)의 에러를 검출하고 검출된 에러를 정정할 수 있다.
메모리 인터페이스(115)는 프로세서(111)의 제어에 따라, 불휘발성 메모리 장치(120)와 통신하도록 구성된다. 일례로, 메모리 인터페이스(115)는 입출력 채널을 통해, 불휘발성 메모리 장치(120)와 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 통신할 수 있다. 일례로, 메모리 인터페이스(115)는 제어 채널을 통해 불휘발성 메모리 장치(120)와 제어 신호(CTRL)를 통신할 수 있다.
버스(116)는 메모리 컨트롤러(110)의 구성 요소들 사이에서 통신 경로를 제공한다. 프로세서(111), 버퍼 메모리(112), 호스트 인터페이스(113), 에러 정정 코드 엔진(114), 및 메모리 인터페이스(115)는 버스(116)를 통해 서로 데이터를 교환할 수 있다. 버스(116)는 메모리 컨트롤러(110)에 이용되는 다양한 유형의 통신 포맷을 지원하도록 구성될 수 있다.
도 3은 도 1의 불휘발성 메모리 장치의 예시적인 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(120)는 메모리 셀 어레이(121), 어드레스 디코더(122), 페이지 버퍼 회로(123), 데이터 입출력 회로(124), 및 제어 로직 회로(125)를 포함한다. 설명의 편의상 도 1의 도면 부호를 참조하여 도 3이 설명된다.
메모리 셀 어레이(121)는 복수의 메모리 블록들(BLK1~BLKi)을 포함한다. 일례로, 복수의 메모리 블록들(BLK1~BLKi) 각각은 복수의 페이지들을 포함한다. 쓰기 동작 및 읽기 동작은 페이지 단위로 수행될 수 있다. 소거 동작은 메모리 블록 단위로 수행될 수 있다. 메모리 셀 어레이(121)는 워드 라인들(WL) 또는 선택 라인들을 통해 어드레스 디코더(122)에 연결되고, 비트 라인들(BL)을 통해 페이지 버퍼 회로(123)에 연결된다. 하나의 페이지는 하나의 워드 라인에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKi)은 불휘발성 메모리 장치(120)의 동작상의 특징 또는 구조적 특징에 따라 구별될 수 있다.
어드레스 디코더(122)는 메모리 컨트롤러(110)로부터 수신된 어드레스(ADDR)를 디코딩하도록 구성된다. 여기에서, 어드레스(ADDR)는 플래시 변환 계층(130)에 의하여 변환된 물리 어드레스일 수 있다. 어드레스 디코더(122)는 디코딩된 어드레스(ADDR)를 기반으로 워드 라인들(WL) 중 적어도 하나를 선택하고, 선택된 적어도 하나의 워드 라인을 구동할 수 있다.
페이지 버퍼 회로(123)는 동작 모드에 따라 쓰기 드라이버 또는 감지 증폭기로 동작할 수 있다. 쓰기 동작 시에, 페이지 버퍼 회로(123)는 메모리 셀 어레이(121)의 비트 라인들(BL)로 쓰기 데이터에 대응하는 비트 라인 전압을 전달한다. 읽기 동작 시에, 페이지 버퍼 회로(123)는 선택된 메모리 셀에 저장된 데이터를 비트 라인들(BL)을 통해서 감지한다.
데이터 입출력 회로(124)는 쓰기 동작 시에, 메모리 컨트롤러(110)로부터 제공되는 데이터(DATA)를 데이터 라인들(DL)을 통하여 페이지 버퍼 회로(123)로 제공한다. 데이터 입출력 회로(124)는 읽기 동작 시에, 페이지 버퍼 회로(123)로부터 데이터 라인들(DL)을 통하여 데이터(DATA)를 수신한다. 데이터 입출력 회로(124)는 수신된 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다.
제어 로직 회로(125)은 메모리 컨트롤러(110)로부터 전달되는 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여, 어드레스 디코더(122), 페이지 버퍼 회로(123), 및 데이터 입출력 회로(124)를 제어한다. 제어 로직 회로(125)는 커맨드(CMD)에 기초하여, 쓰기 동작, 읽기 동작, 또는 소거 동작을 수행하도록 불휘발성 메모리 장치(120)를 제어할 수 있다.
도 4는 도 1의 스토리지 장치의 동작 방법의 예시적인 순서도이다. 도 4는 스토리지 장치(100)의 쓰기 동작에 의하여 형성된 맵이 소실된 경우에 맵을 복원하는 동작에 대한 순서도를 도시한다. 도 4의 동작들은 도 1의 스토리지 장치(100)에 포함된 메모리 컨트롤러(110) 및 불휘발성 메모리 장치(120)에서 수행될 수 있다. 설명의 편의상, 도 1의 도면 부호를 참조하여, 도 4가 설명된다.
S110 단계에서, 메모리 컨트롤러(110)는 쓰기 커맨드에 대응되는 쓰기 동작을 수행할 수 있다. 플래시 변환 계층(130)은 쓰기 커맨드에 대응되는 논리 어드레스를 불휘발성 메모리 장치(120)에서 사용되는 물리 어드레스로 변환할 수 있다. 메모리 컨트롤러(110)는 물리 어드레스에 대응되는 페이지에 데이터를 쓸 수 있다. 이를 위하여, 메모리 컨트롤러(110)는 데이터, 물리 어드레스, 및 쓰기 커맨드를 불휘발성 메모리 장치(120)에 제공할 수 있다.
쓰기 동작을 수행하는 동안, 메모리 컨트롤러(110)의 쓰기 검사 매니저(140)는 검사 데이터를 생성할 수 있다. 검사 데이터는 S110 단계에서 쓰여지는 데이터 이전에 쓰여지는 데이터와 관련될 수 있다. 다만, 이에 제한되지 않고, 검사 데이터는 S110 단계에서 쓰여지는 데이터와 관련될 수도 있다. 검사 데이터는 쓰기 커맨드에 대응되는 쓰기 데이터와 함께 물리 어드레스에 대응되는 페이지에 쓰여질 수 있다.
S120 단계에서, 메모리 컨트롤러(110)는 버퍼 메모리에 맵을 업데이트할 수 있다. 맵은 논리 어드레스를 물리 어드레스로 변환하기 위하여 사용되는 매핑 테이블로 구현될 수 있다. 매핑 테이블에 복수의 논리 어드레스들(L1~Lj) 각각에 대응되는 복수의 물리 어드레스들(P1~Pj)이 기록될 수 있다. S110 단계의 쓰기 동작에 따라, 논리 어드레스에 대응되는 물리 어드레스가 변경될 수 있다. 메모리 컨트롤러(110)는 논리 어드레스와 물리 어드레스 사이의 연결 관계의 변경을 버퍼 메모리에 쓸 수 있다.
S130 단계에서, 스토리지 장치(100)에 예상치 못한 상황이 발생될 수 있으며, 메모리 컨트롤러(110)는 예상치 못한 상황을 판단할 수 있다. 예상치 못한 상황은 버퍼 메모리에 저장된 맵이 소거되거나, 버퍼 메모리에 맵이 업데이트되지 못한 상황을 의미할 수 있다. 일례로, 예상치 못한 상황은 스토리지 장치(100)에 전력이 공급되지 않는 서든 파워 오프일 수 있다. 이 경우, SRAM과 같이 휘발성 메모리를 포함하는 버퍼 메모리에 저장된 데이터는 소거될 수 있다. 다만, 이에 제한되지 않고, 예상치 못한 상황은 시스템 중지(System halt) 또는 시스템 충돌(System crash) 등으로 인하여 버퍼 메모리에 업데이트된 맵이 저장되지 않거나, 소거된 상황일 수 있다.
버퍼 메모리에 저장된 맵은 예상치 못한 상황에서도 관리될 수 있도록, 불휘발성 메모리 장치(120)에 저장될 수 있다. 다만, 쓰기 동작이 발생될 때마다 변경된 맵 정보를 불휘발성 메모리 장치(120)에 쓰는 경우, 동작 지연이 발생되어 스토리지 장치(100)의 성능이 저하된다. 따라서, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)보다 빠른 속도를 갖는 버퍼 메모리에 변경된 맵 정보를 지속적으로 업데이트한 후에, 플러시(Flush) 주기에 따라 버퍼 메모리에 저장된 맵 정보를 불휘발성 메모리 장치(120)에 쓸 수 있다. 이 경우, 맵의 업데이트를 위하여 불휘발성 메모리 장치(120)에 접근하는 빈도가 감소하고, 쓰기 동작의 속도가 증가한다. 플러시 주기는 버퍼 메모리에서 관리되는 맵 정보가 불휘발성 메모리 장치(120)에 업데이트되는 주기로 정의될 수 있다. 버퍼 메모리에 저장된 맵이 불휘발성 메모리 장치(120)에 쓰여지기 전에 예상치 못한 상황이 발생한 경우, S140 단계가 진행된다. 예상치 못한 상황이 발생되지 않은 경우, S150 단계가 진행된다.
S140 단계에서, 메모리 컨트롤러(110)는 버퍼 메모리에 업데이트되지 않은 맵을 복원할 수 있다. 이를 위하여, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 저장된 검사 데이터를 읽을 수 있다. 메모리 컨트롤러(110)는 검사 데이터에 기초하여, 맵의 적어도 일부를 복원할 수 있다. 메모리 컨트롤러(110)는 검사 데이터에 대응되는 논리 어드레스 및 물리 어드레스뿐만 아니라, S110 단계 이전에 쓰여진 데이터에 대응되는 복수의 논리 어드레스들 및 물리 어드레스들을 예측할 수 있다. 여기에서, 복수의 논리 어드레스들 및 물리 어드레스들은 검사 데이터에 대응되는 어드레스가 이전의 어드레스들과 연속성을 갖는다는 가정하에 계산될 수 있다.
S150 단계에서, 메모리 컨트롤러(110)는 복원된 맵을 불휘발성 메모리 장치(120)에 업데이트할 수 있다. 메모리 컨트롤러(110)는 플러시(Flush) 주기에 따라 복원된 맵 정보를 불휘발성 메모리 장치(120)에 쓸 수 있다. 이 경우, 서든 파워 오프와 같은 예상치 못한 상황이 발생하더라도 불휘발성 메모리 장치(120)로부터 맵을 읽음으로써, 이후의 스토리지 장치(100)의 동작이 용이하게 수행될 수 있다.
도 5는 도 4의 맵에 기초하여 데이터를 쓰는 동작을 설명하기 위한 예시적인 도면이다. 도 5를 참조하면, 맵(M1)에 의하여 논리 어드레스는 물리 어드레스로 변환되고, 제1 메모리 블록(BLK1) 또는 제2 메모리 블록(BLK2)에 데이터가 쓰여진다. 제1 메모리 블록(BLK1) 및 제2 메모리 블록(BLK2)은 도 1 내지 4에서 설명된 불휘발성 메모리 장치(120)에 포함된다.
맵(M1)은 논리 블록 번호(LBN), 물리 블록 번호(PBN), 논리 페이지 번호(LPN), 및 물리 페이지 번호(PPN)에 대한 정보를 포함한다. 논리 블록 번호(LBN)는 쓰기 커맨드 및 쓰기 데이터와 함께 호스트로부터 제공되는 논리 어드레스의 블록 정보와 관련될 수 있다. 물리 블록 번호(PBN)는 불휘발성 메모리 장치(120)에서 사용되는 물리 어드레스의 블록 정보와 관련될 수 있다. 논리 페이지 번호(LPN)는 논리 어드레스의 페이지 정보와 관련될 수 있다. 물리 페이지 번호(PPN)는 물리 어드레스의 페이지 정보와 관련될 수 있다.
설명의 편의상, 1 값을 갖는 제1 물리 블록 번호는 제1 메모리 블록(BLK1)에 대응되고, 2 값을 갖는 제2 물리 블록 번호는 제2 메모리 블록(BLK2)에 대응되는 것으로 가정한다. 또한, 각각이 1 내지 4 값들을 갖는 제1 내지 제4 물리 페이지 번호들은 제1 내지 제4 페이지들(PG1~PG4) 각각에 대응되는 것으로 가정한다.
제1 메모리 블록(BLK1)은 불연속적으로 (또는 랜덤하게) 데이터가 쓰여지는 메모리 영역으로 가정한다. 제1 데이터는 제1 논리 블록 번호 및 제1 논리 페이지 번호에 대응되며, 제1 메모리 블록(BLK1)의 제1 페이지(PG1)에 쓰여진다. 그 다음, 제2 데이터는 제1 논리 블록 번호 및 제2 논리 페이지 번호에 대응되며, 제1 메모리 블록(BLK1)의 제2 페이지(PG2)에 쓰여진다. 그 다음, 제3 데이터는 제1 논리 블록 번호 및 제3 논리 페이지 번호에 대응되며, 제1 메모리 블록(BLK1)의 제3 페이지(PG3)에 쓰여진다. 그 다음, 제4 데이터는 제1 논리 블록 번호 및 제2 논리 페이지 번호에 대응되며, 제1 메모리 블록(BLK1)의 제4 페이지(PG4)에 쓰여진다. 이 경우, 제2 논리 페이지 번호에 대응되는 물리 페이지 번호는 2에서 4로 변경될 수 있다. 제1 메모리 블록(BLK1)의 제2 페이지(PG2)는 무효(Invalid) 페이지일 수 있다.
제2 메모리 블록(BLK2)은 연속적으로 데이터가 쓰여지는 메모리 영역으로 가정한다. 제1 데이터는 제2 논리 블록 번호 및 제1 논리 페이지 번호에 대응되며, 제2 메모리 블록(BLK2)의 제1 페이지(PG1)에 쓰여진다. 그 다음, 제2 데이터는 제2 논리 블록 번호 및 제2 논리 페이지 번호에 대응되며, 제2 메모리 블록(BLK2)의 제2 페이지(PG2)에 쓰여진다. 그 다음, 제3 데이터는 제2 논리 블록 번호 및 제3 논리 페이지 번호에 대응되며, 제2 메모리 블록(BLK2)의 제3 페이지(PG3)에 쓰여진다. 그 다음, 제4 데이터는 제2 논리 블록 번호 및 제4 논리 페이지 번호에 대응되며, 제2 메모리 블록(BLK2)의 제4 페이지(PG4)에 쓰여진다. 제2 메모리 블록(BLK2)의 제1 내지 제4 페이지들(PG1~PG4)은 유효(Valid) 페이지일 수 있다.
이하에서, 제1 메모리 블록(BLK1)과 같이 불연속적으로 데이터가 쓰여지는 경우의 스토리지 장치의 동작과 제2 메모리 블록(BLK2)과 같이 연속적으로 데이터가 쓰여지는 경우의 스토리지 장치의 동작이 설명된다.
도 6은 도 5의 제1 메모리 블록에 쓰여지는 데이터의 예시적인 도면이다. 도 6을 참조하면, 제1 내지 제5 페이지들(PG1~PG5)에 일부 불연속적으로 쓰여지는 데이터가 도시된다. 제1 내지 제5 페이지들(PG1~PG5) 각각에 쓰기 데이터 및 검사 데이터가 쓰여진다. 도 5의 제1 메모리 블록(BLK1)에 제5 페이지가 도시되지 않았으나, 제1 메모리 블록(BLK1)은 제5 페이지를 더 포함하는 것으로 설명된다.
쓰기 데이터는 쓰기 커맨드 및 논리 어드레스에 기초하여, 제1 내지 제5 페이지들(PG1~PG5) 각각에 저장되도록 호스트로부터 제공되는 데이터일 수 있다. 제1 내지 제5 페이지들(PG1~PG5) 각각은 제1 내지 제5 쓰기 데이터(WD1~WD5)를 저장한다. 쓰기 데이터는 페이지의 일부에 저장된다. 제1 내지 제5 페이지들(PG1~PG5) 각각은 쓰기 데이터가 저장되지 않는 스페어 영역을 포함할 수 있다.
검사 데이터는 제1 내지 제5 페이지들(PG1~PG5) 각각의 스페어 영역에 저장될 수 있다. 검사 데이터가 불휘발성 메모리 장치(120)의 스페어 영역에 저장되므로, 예상치 못한 상황에 의하여 맵이 소실될 때, 검사 데이터는 소실되지 않을 수 있다. 검사 데이터는 도 1의 쓰기 검사 매니저(140)로부터 생성될 수 있고, 메모리 컨트롤러(110)는 소실된 맵을 복원하기 위하여, 검사 데이터를 읽을 수 있다.
제1 쓰기 데이터(WD1)에 대응되는 검사 데이터는 제2 페이지(PG2)에 저장될 수 있다. 제1 쓰기 데이터(WD1)에 대응되는 검사 데이터는 제2 쓰기 데이터(WD2)의 쓰기 동작을 수행하는 동안 생성될 수 있다. 제1 페이지(PG1)에 제1 쓰기 데이터(WD1)에 대응되는 검사 데이터가 저장되는 경우, 검사 데이터가 생성될 때까지 제1 페이지(PG1)에 대한 쓰기 동작이 지연될 수 있다. 쓰기 동작의 지연이 감소되도록, 제2 쓰기 데이터(WD2)의 쓰기 동작이 수행되는 동안 제1 쓰기 데이터(WD1)에 대응되는 검사 데이터가 생성되어 제2 페이지(PG2)에 저장될 수 있다. 마찬가지로, 제2 내지 제4 쓰기 데이터(WD2~WD4) 각각에 대응되는 검사 데이터는 제3 내지 제5 페이지들(PG3~PG5) 각각에 저장될 수 있다.
검사 데이터는 순서 데이터(Seq)를 포함할 수 있다. 순서 데이터(Seq)는 검사 데이터에 대응되는 논리 어드레스의 연속성에 기초하여 생성될 수 있다. 도 1의 쓰기 검사 매니저(140)는 쓰기 데이터에 대응되는 논리 어드레스 및 물리 어드레스의 연속성을 판단하여, 순서 데이터(Seq)의 값을 결정할 수 있다. 논리 어드레스 및 물리 어드레스가 연속성을 갖는다면, 순서 데이터(Seq)는 연속 식별 값(SE)을 가질 수 있다. 그렇지 않으면, 순서 데이터(Seq)는 불연속 식별 값(NSE)을 가질 수 있다. 일례로, 연속 식별 값(SE)은 1이고, 불연속 식별 값(NSE)은 0일 수 있으나, 이에 제한되지 않는다.
구체적으로 도 5 및 도 6을 참조하면, 제1 페이지(PG1) 이전의 페이지가 존재하지 않으므로, 제2 페이지(PG2)에 저장된 순서 데이터는 불연속 식별 값(NSE)을 가질 수 있다. 제2 페이지(PG2)의 논리 및 물리 어드레스는 2이고, 제1 페이지(PG1)의 논리 및 물리 어드레스는 1이므로, 제3 페이지(PG3)에 저장된 순서 데이터는 연속 식별 값(SE)을 가질 수 있다. 제3 페이지(PG3)의 논리 및 물리 어드레스는 3이고, 제2 페이지(PG2)의 논리 및 물리 어드레스는 2이므로, 제4 페이지(PG4)에 저장된 순서 데이터는 연속 식별 값(SE)을 가질 수 있다. 제4 페이지(PG4)의 논리 어드레스는 2이고, 제3 페이지(PG3)의 논리 어드레스는 3이므로, 제4 페이지(PG4)에 저장된 순서 데이터는 불연속 식별 값(NSE)을 가질 수 있다.
순서 데이터(Seq)는 기준 어드레스를 결정하는데 사용될 수 있다. 불연속 식별 값(NSE)을 갖는 페이지의 논리 어드레스는 기준 논리 어드레스로 정의된다. 추후에, 맵을 복원하는 동작 시에, 메모리 컨트롤러(110)는 마지막에 데이터가 저장된 라스트 페이지 및 불연속 식별 값(NSE)이 저장된 페이지 이전의 페이지를 읽고, 나머지 페이지들의 읽기는 스킵할 수 있다.
검사 데이터는 오프셋 데이터(Offset)를 포함할 수 있다. 오프셋 데이터는 쓰기 데이터에 대응되는 논리 어드레스와 기준 논리 어드레스의 차이에 기초하여 생성될 수 있다. 도 1의 쓰기 검사 매니저(140)는 오프셋 데이터의 값을 결정할 수 있다. 도 5 및 도 6을 참조하면, 제1 내지 제3 쓰기 데이터(WD1~WD3)에 대응되는 기준 논리 어드레스는 1이므로, 제2 내지 제4 페이지들(PG2~PG4) 각각에 저장된 오프셋 데이터는 0 내지 2 값을 가질 수 있다. 또한, 제4 쓰기 데이터(WD4)에 대응되는 기준 논리 어드레스는 2이므로, 제5 페이지(PG5)에 저장된 오프셋 데이터는 0 값을 가질 수 있다.
오프셋 데이터는 맵을 복원하는 동작 시에 스킵되는 페이지를 결정하는데 사용될 수 있다. 오프셋 데이터의 값만큼의 개수의 페이지들이 스킵될 수 있다. 예를 들어, 맵을 복원하기 위하여, 제5 페이지(PG5)가 읽혀지는 경우, 오프셋 데이터의 값이 0이므로, 페이지의 스킵 없이 제4 페이지(PG4)가 읽혀질 수 있다. 제4 페이지(PG4)가 읽혀지는 경우, 오프셋 데이터의 값이 2이므로, 제2 및 제3 페이지들(PG2, PG3)은 스킵될 수 있다. 제4 페이지(PG4)가 읽혀지면, 제3 논리 어드레스가 3이고, 제2 논리 어드레스는 3에서 1이 감산된 2이고, 제1 논리 어드레스는 3에서 2가 감산된 1임이 예측될 수 있다.
검사 데이터는 어드레스(ADDR)를 포함할 수 있다. 여기에서 어드레스(ADDR)는 논리 어드레스, 구체적으로 논리 페이지 번호일 수 있다. 예를 들어, 제5 페이지(PG5)를 읽는 경우에, 오프셋 데이터 0만으로 4 값을 갖는 물리 페이지 번호에 대응되는 논리 페이지 번호가 예측되기 어렵다. 따라서, 불연속적으로 읽혀지는 데이터의 논리 어드레스를 계산하기 위하여, 어드레스(ADDR)가 검사 데이터에 포함될 수 있다. 다만, 이에 제한되지 않고, 검사 데이터는 어드레스(ADDR) 대신에 중간에 불연속되는 논리 어드레스를 예측하기 위한 데이터를 포함할 수 있다.
예시적으로, 제1 페이지(PG1)에 저장된 검사 데이터는 표시되지 않았으나, 제 특정된 값을 가질 수 있다. 예를 들어, 순서 데이터(Seq)는 0과 같이, 불연속 식별 값(NSE)을 가질 수 있고, 오프셋 데이터의 값은 0일 수 있다.
도 7은 도 5의 제2 메모리 블록에 쓰여지는 데이터의 예시적인 도면이다. 도 7을 참조하면, 제1 내지 제5 페이지들(PG1~PG5)에 연속적으로 쓰여지는 데이터가 도시된다. 제1 내지 제5 페이지들(PG1~PG5) 각각은 쓰기 데이터 및 검사 데이터를 포함한다. 도 5의 제2 메모리 블록(BLK2)에 제5 페이지가 도시되지 않았으나, 제2 메모리 블록(BLK2)은 제5 페이지를 더 포함하는 것으로 설명된다.
도 6과 마찬가지로, 제1 내지 제5 페이지들(PG1~PG5) 각각은 제1 내지 제5 쓰기 데이터(WD1~WD5)를 저장한다. 제1 내지 제4 쓰기 데이터(WD1~WD4) 각각에 대응되는 검사 데이터는 제2 내지 제5 페이지들(PG2~PG5) 각각에 저장될 수 있다. 검사 데이터는 제1 내지 제5 페이지들(PG1~PG5) 각각의 스페어 영역에 저장될 수 있다.
검사 데이터는 순서 데이터(Seq)를 포함할 수 있다. 순서 데이터(Seq)는 검사 데이터에 대응되는 논리 어드레스의 연속성에 기초하여 생성될 수 있다. 제1 페이지(PG1) 이전의 페이지가 존재하지 않으므로, 제2 페이지(PG2)에 저장된 순서 데이터는 불연속 식별 값(NSE)을 가질 수 있다. 제2 메모리 블록(BLK2)에 쓰여지는 데이터는 논리 페이지 번호(LPN) 및 물리 페이지 번호(PPN) 순서대로 쓰여지므로, 제3 내지 제5 페이지들(PG3~PG5) 각각에 저장된 순서 데이터는 연속 식별 값(SE)을 가질 수 있다.
검사 데이터는 오프셋 데이터(Offset)를 포함할 수 있다. 오프셋 데이터는 쓰기 데이터에 대응되는 논리 어드레스와 기준 논리 어드레스의 차이에 기초하여 생성될 수 있다. 제2 메모리 블록(BLK2)에 쓰여지는 데이터는 논리 페이지 번호(LPN) 및 물리 페이지 번호(PPN) 순서대로 쓰여지므로, 제2 내지 제5 페이지들(PG2~PG5) 각각에 저장된 오프셋 데이터는 0 내지 3 값을 가질 수 있다.
연속적인 쓰기 동작이 수행되는 경우, 검사 데이터는 어드레스를 포함하지 않을 수 있다. 쓰기 데이터가 어드레스의 순서에 따라 연속적으로 쓰여지는 경우, 논리 페이지 번호는 오프셋 데이터로부터 예측될 수 있다. 페이지들 전반에 걸쳐, 오프셋 데이터와 논리 어드레스 사이의 상관관계가 일정하여, 논리 어드레스가 오프셋 데이터로부터 예측될 수 있기 때문이다. 예시적으로, 제1 페이지(PG1)에 저장된 검사 데이터는 표시되지 않았으나, 도 6과 마찬가지로 특정된 값을 가질 수 있다.
도 8은 도 6 또는 도 7의 검사 데이터를 생성하기 위한 스토리지 장치의 동작 방법의 예시적인 순서도이다. 도 8의 동작들은 도 1의 메모리 컨트롤러(110)에 포함된 쓰기 검사 매니저(140)에서 수행될 수 있다. 도 6 및 도 7에서 설명된 바와 같이, 도 8의 동작들은 검사 데이터에 대응되는 쓰기 데이터가 불휘발성 메모리 장치(120)에 쓰여진 이후에, 호스트로부터 제공되는 쓰기 데이터를 처리하는 동안 수행될 수 있다. 설명의 편의상 도 1의 도면 부호를 참조하여, 도 8이 설명된다.
S210 단계에서, 쓰기 검사 매니저(140)는 쓰기 데이터에 대응되는 어드레스의 연속성을 판단한다. 쓰기 검사 매니저(140)는 쓰기 데이터 직전에 쓰여진 데이터에 대응되는 어드레스(제1 어드레스)와 현재 쓰여진 쓰기 데이터에 대응되는 어드레스(제2 어드레스)를 비교할 수 있다. 예를 들어, 제1 어드레스는 제1 논리 페이지 번호 및 제1 물리 페이지 번호를 포함할 수 있다. 제2 어드레스는 제2 논리 페이지 번호 및 제2 물리 페이지 번호를 포함할 수 있다. 제2 물리 페이지 번호가 제1 물리 페이지 번호 다음의 번호이고, 제2 논리 페이지 번호가 제1 논리 페이지 번호 다음의 번호인 경우, 쓰기 검사 매니저(140)는 어드레스가 연속성을 갖는다고 판단할 수 있다.
S210 단계에서, 쓰기 검사 매니저(140)는 연속성의 판단 결과에 기초하여, 쓰기 데이터에 대응되는 순서 데이터를 생성할 수 있다. 어드레스가 연속성을 갖는다고 판단되는 경우, 순서 데이터는 연속 식별 값을 가질 수 있다. 어드레스가 연속성을 갖지 않는다고 판단되는 경우, 순서 데이터는 불연속 식별 값을 가질 수 있다.
S220 단계에서, 쓰기 검사 매니저(140)는 쓰기 데이터에 대응되는 어드레스의 오프셋을 계산한다. 오프셋 데이터는 쓰기 데이터에 대응되는 논리 어드레스(논리 페이지 번호)와 기준 논리 어드레스(기준 논리 페이지 번호)의 차이 값일 수 있다. 기준 논리 어드레스는 S210 단계에서 불연속 식별 값을 갖는 쓰기 데이터의 논리 어드레스일 수 있다. 쓰기 검사 매니저(140)는 오프셋 계산에 의한 값을 갖는 오프셋 데이터를 생성할 수 있다. 예를 들어, 기준 논리 어드레스에 대응되는 쓰기 데이터가 쓰여진 이후에, 호스트로부터 쓰기 데이터가 제공될 때마다, 쓰기 검사 매니저(140)는 오프셋 값을 1씩 누산함으로써, 오프셋 데이터를 생성할 수 있다.
S230 단계에서, 쓰기 검사 매니저(140)는 검사 데이터를 생성한다. 검사 데이터는 S210 단계에서 생성된 순서 데이터 및 S220 단계에서 생성된 오프셋 데이터를 포함할 수 있다. 다만, 이에 제한되지 않고, 필요에 따라, 쓰기 검사 매니저(140)는 논리 어드레스를 검사 매니저에 더 포함시킬 수 있다. 또한, 필요에 따라, 특정 쓰기 데이터에 대응되는 검사 데이터는 오프셋 데이터 대신에 논리 어드레스를 포함할 수 있다. 생성된 검사 데이터는 다음 쓰기 동작에서 쓰기 데이터와 함께 불휘발성 메모리 장치(120)의 스페어 영역에 저장될 수 있다.
도 9는 도 8의 동작들로부터 생성된 검사 데이터를 통하여 맵을 복원하기 위한 스토리지 장치의 동작 방법의 예시적인 순서도이다. 도 9의 동작들은 도 1의 메모리 컨트롤러(110)에서 수행될 수 있고, 예시적으로 플래시 변환 계층(130)에 의하여 수행될 수 있다. 도 9는 도 4의 S140 단계를 구체화한 순서도로 볼 수 있다. 설명의 편의상 도 1의 도면 부호를 참조하여, 도 9가 설명된다.
S310 단계에서, 메모리 컨트롤러(110)는 라스트 유효 페이지를 읽을 수 있다. 라스트 유효 페이지는 메모리 영역(메모리 블록)에 포함된 복수의 페이지들 중 가장 마지막으로 데이터가 쓰여진 페이지일 수 있다. 예를 들어, 라스트 유표 페이지는 데이터가 쓰여진 페이지들 중 가장 큰 물리 페이지 번호를 갖는 페이지일 수 있다. 서든 파워 오프 등에 의하여 맵이 소실된 경우, 메모리 컨트롤러(110)가 라스트 유효 페이지를 곧바로 검출하기 어려울 수 있다. 라스트 유효 페이지를 검출하는 방법은 제한되지 않으며, 예를 들어, 메모리 컨트롤러(110)는 이진 탐색(binary search)을 통하여 상기 라스트 유효 페이지를 검출할 수 있다.
S320 단계에서, 메모리 컨트롤러(110)는 라스트 유효 페이지에 저장된 검사 데이터에 기초하여, 맵 데이터를 복원한다. 맵 데이터는 복수의 페이지들 중 적어도 하나의 논리 어드레스 및 물리 어드레스를 포함할 수 있다. 검사 데이터에 포함된 오프셋 데이터의 값에 따라, 메모리 컨트롤러(110)에서 복원되는 어드레스의 개수가 결정될 수 있다. 즉, 오프셋 데이터의 값에 따라, 적어도 하나의 페이지에 대응되는 어드레스가 복원될 수 있다. 예를 들어, 오프셋 데이터의 값이 0이면, 라스트 유효 페이지에 대응되는 어드레스만 복원될 수 있고, 오프셋 데이터의 값이 2이면, 라스트 유효 페이지 및 2개의 추가적인 페이지들에 대응되는 어드레스들이 복원될 수 있다.
S330 단계에서, 메모리 컨트롤러(110)는 읽혀진 페이지가 연속성을 갖는 페이지인지 판단할 수 있다. 메모리 컨트롤러(110)는 오프셋 데이터 값 또는 순서 데이터에 기초하여, 읽혀진 페이지의 연속성을 판단할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 오프셋 데이터가 0이거나, 순서 데이터가 불연속 식별 값을 갖는 경우, 읽혀진 페이지가 불연속인 것으로 판단할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 오프셋 데이터가 0보다 크거나, 순서 데이터가 연속 식별 값을 갖는 경우, 읽혀진 페이지가 연속인 것으로 판단할 수 있다. 읽혀진 페이지가 연속성을 갖는 것으로 판단되는 경우, S340 단계가 진행된다. 읽혀진 페이지가 연속성을 갖지 않는 것으로 판단되는 경우, S350 단계가 진행된다.
S340 단계에서, 메모리 컨트롤러(110)는 오프셋 데이터에 기초하여 적어도 하나의 페이지를 스킵할 수 있다. 여기에서 스킵하는 방향은 어드레스를 기준으로 역순(backward)일 수 있다. 예를 들어, 오프셋 데이터의 값이 2이면, 읽혀진 페이지로부터 이전의 2개의 어드레스들에 대응되는 2개의 페이지들이 스킵될 수 있다. S320 단계에서, 스킵된 페이지들에 대한 어드레스들이 복원되므로, 맵을 복원하기 위하여 해당 페이지들을 읽을 것이 요구되지 않을 수 있다. 따라서, 모든 페이지들을 읽어 맵을 복원할 때와 비교하여, 맵을 복원하는데 요구되는 시간이 감소할 수 있다.
S350 단계에서, 메모리 컨트롤러(110)는 페이지를 읽거나, 페이지를 스킵한 결과, 모든 페이지들에 대한 맵 데이터가 복원되었는지 판단할 수 있다. 일례로, 메모리 컨트롤러(110)는 가장 작은 물리 어드레스를 갖는 페이지인 제1 페이지가 읽혀지거나, 스킵되는지 판단할 수 있다. 제1 페이지가 읽혀지거나 스킵된 경우, S360 단계가 진행된다. 예를 들어, S310 단계에서 읽혀진 페이지가 제1 페이지인 경우, S360 단계가 진행된다. 예를 들어, S340 단계에서 제1 페이지가 스킵된 경우, S360 단계가 진행된다.
제1 페이지가 읽혀지지 않고, 스킵되지도 않은 경우, S310 단계가 진행된다. 예를 들어, S310 단계에서 읽혀진 페이지가 불연속이며 제1 페이지가 아닌 경우, S310 내지 S350 단계가 다시 진행된다. 예를 들어, S340 단계에서 스킵된 페이지가 제1 페이지가 아닌 경우, S310 내지 S350 단계가 다시 진행된다. S310 단계가 다시 진행되는 경우 메모리 컨트롤러(110)는 읽혀진 페이지 이전의 페이지 또는 스킵되지 않은 페이지를 기준으로 라스트 유효 페이지를 읽을 수 있다.
S360 단계에서, 메모리 컨트롤러(110)는 서든 파워 오프 등으로 소거된 맵을 생성한다. S310 내지 S350 단계에 걸쳐 유효 페이지에 대응되는 맵 데이터가 모두 복원될 수 있다. 메모리 컨트롤러(110)는 복원된 맵 데이터를 맵에 모두 반영할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 복원된 맵 데이터를 매핑 테이블의 형태로 기록할 수 있다. 생성된 맵은 플러시 주기에 따라, 불휘발성 메모리 장치(120)에 쓰여질 수 있다.
도 10은 도 6과 같이 불연속적으로 데이터가 쓰여지는 경우에 맵을 복원하는 과정을 설명하기 위한 예시적인 도면이다. 설명의 편의상 도 9의 단계들을 참조하여, 맵을 복원하는 과정이 설명된다.
메모리 영역(메모리 블록)은 제1 내지 제16 페이지들(PG1~PG16)을 포함하는 것으로 가정한다. 또한, 제1 내지 제10 페이지들(PG1~PG10)에 데이터가 쓰여진 것으로 가정한다. 다만, 상술한 바와 같이, 검사 데이터가 다음 페이지에 쓰여진다면, 제1 내지 제11 페이지들(PG1~PG11)에 데이터가 쓰여진 것으로 볼 수 있으나, 설명의 편의상 도 10에서 이러한 조건은 생략된다. 제1 내지 제10 페이지들(PG1~PG10) 각각에 표시된 오프셋 데이터(Offset) 및 어드레스(ADDR)는 표시된 페이지에 대응되는 것으로 가정한다. 여기에서 어드레스(ADDR)는 논리 어드레스, 예를 들어 논리 페이지 번호를 의미한다.
도 10 및 도 9의 S310 단계를 참조하면, 라스트 유효 페이지가 읽혀진다. 라스트 유효 페이지는 제10 페이지(PG10)이다. 예시적으로 라스트 유효 페이지는 이진 탐색을 통하여 검출될 수 있다. 이 경우, 메모리 컨트롤러는 제8 페이지(PG8)가 유효 페이지임을 확인하고, 제12 페이지(PG12)가 무효 페이지임을 확인하고, 제10 페이지(PG10)가 유효 페이지임을 확인하고, 제11 페이지(PG11)가 무효 페이지임을 확인함으로써, 최종적으로 제10 페이지(PG10)를 라스트 유효 페이지로 확정할 수 있다.
도 10 및 도 9의 S320 단계를 참조하면, 맵의 일부가 제1 복원 맵(RM1)과 같이 복원된다. 제10 페이지(PG10)의 오프셋 값은 2이고, 논리 어드레스는 5이다. 메모리 컨트롤러는 논리 페이지 번호 5에, 제10 페이지(PG10)에 대응되는 물리 페이지 번호 10을 연결시킬 수 있다. 오프셋 값이 2이므로, 논리 페이지 번호 4는 물리 페이지 번호 9에 연결되고, 논리 페이지 번호 3은 물리 페이지 번호 8에 연결됨이 예측된다. 오프셋 값 2에 기초하여, 제8 및 제9 페이지들(PG8, PG9)은 스킵된다.
스킵 결과, 제7 페이지(PG7)가 읽혀진다. 제7 페이지(PG7)의 오프셋 값은 6이고, 논리 어드레스는 7이다. 메모리 컨트롤러는 논리 페이지 번호 7에 물리 페이지 번호 7을 연결시킬 수 있다. 오프셋 값이 6이므로, 원칙적으로 논리 페이지 번호 1 내지 6은 물리 페이지 번호 1 내지 6에 일대일로 연결될 것이다. 다만, 논리 페이지 번호 3 내지 5에 대한 물리 페이지 번호의 관계가 이미 복원되어 있으므로, 논리 페이지 번호 3 내지 5에 대한 복원은 생략된다. 제3 내지 제5 페이지들(PG3~PG5)은 제8 내지 제10 페이지들(PG8~PG10)에 의하여 무효 페이지로 볼 수 있기 때문이다. 제7 페이지(PG)의 읽기 동작에 따라, 맵이 제2 복원 맵(RM2)과 같이 복원된다.
맵은 제10 페이지(PG10) 및 제7 페이지(PG7)를 읽음으로써, 복원될 수 있다. 따라서, 제1 내지 제10 페이지들(PG1~PG10)을 순차적으로 읽음으로써 맵을 복원하는 시간보다 짧은 시간에 맵이 복원될 수 있다.
도 11은 도 7과 같이 연속적으로 데이터가 쓰여지는 경우에 맵을 복원하는 과정을 설명하기 위한 예시적인 도면이다. 도 10과 같이, 메모리 영역(메모리 블록)은 제1 내지 제16 페이지들(PG1~PG16)을 포함하는 것으로 가정한다. 제1 내지 제10 페이지들(PG1~PG10) 각각에 표시된 오프셋 데이터(Offset) 및 어드레스(ADDR)는 표시된 페이지에 대응되는 것으로 가정한다. 여기에서 어드레스(ADDR)는 논리 어드레스, 예를 들어 논리 페이지 번호를 의미한다.
도 11을 참조하면, 라스트 유효 페이지가 읽혀진다. 라스트 유효 페이지는 제10 페이지(PG10)이다. 예시적으로 라스트 유효 페이지는 이진 탐색을 통하여 검출될 수 있으며, 도 10에서 그 방식이 설명되었다.
맵은 복원 맵(RM)과 같이 복원된다. 제10 페이지(PG10)의 오프셋 값은 9이고, 논리 어드레스는 10이다. 연속적으로 데이터가 쓰여지는 경우, 오프셋 데이터와 논리 어드레스는 일정한 상관관계를 갖는다. 메모리 컨트롤러는 논리 페이지 번호 10에, 제10 페이지(PG10)에 대응되는 물리 페이지 번호 10을 연결시킬 수 있다. 오프셋 값이 9이므로, 논리 페이지 번호 1 내지 9는 물리 페이지 번호 1 내지 9에 일대일로 연결될 것이다. 오프셋 값 9에 기초하여, 제1 내지 제9 페이지들(PG1~PG9)은 스킵된다. 제1 페이지(PG1)가 스킵되므로, 복원 맵(RM)은 확정된다.
맵은 제10 페이지(PG10)를 읽음으로써 복원되므로, 제1 내지 제10 페이지들(PG1~PG10)을 순차적으로 읽음으로써 맵을 복원하는 시간보다 짧은 시간에 맵이 복원될 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100: 스토리지 장치 110: 메모리 컨트롤러
120: 불휘발성 메모리 장치 130: 플래시 변환 계층
140: 쓰기 검사 매니저

Claims (10)

  1. 제1 물리 어드레스에 대응되는 제1 페이지, 및 제2 물리 어드레스에 대응되는 제2 페이지를 포함하는 메모리 영역을 포함하는 불휘발성 메모리 장치; 및
    제1 논리 어드레스에 대응되는 제1 쓰기 커맨드에 기초하여 제1 데이터를 상기 제1 페이지에 쓴 이후에, 제2 논리 어드레스에 대응되는 제2 쓰기 커맨드에 기초하여 제2 데이터를 상기 제2 페이지에 쓰고, 상기 제1 데이터에 대응되는 제1 검사 데이터 및 상기 제2 데이터에 대응되는 제2 검사 데이터를 생성하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는, 상기 제2 검사 데이터에 기초하여 상기 제1 및 제2 물리 어드레스들 및 상기 제1 및 제2 논리 어드레스들을 복원하는 스토리지 장치.
  2. 제1 항에 있어서,
    상기 제2 검사 데이터는,
    상기 제1 및 제2 논리 어드레스들 사이의 연속성에 기초한 값을 갖는 순서 데이터를 포함하는 스토리지 장치.
  3. 제2 항에 있어서,
    상기 제2 물리 어드레스가 상기 제1 물리 어드레스 다음의 물리 어드레스이고, 상기 제2 논리 어드레스가 상기 제1 논리 어드레스 다음의 논리 어드레스인 경우, 상기 순서 데이터는 연속 식별 값을 갖는 스토리지 장치.
  4. 제1 항에 있어서,
    상기 제1 검사 데이터는,
    상기 제1 쓰기 커맨드 이전에 수신된 제3 쓰기 커맨드가 상기 제1 논리 어드레스 이전의 제3 논리 어드레스에 대응되는 경우, 연속 식별 값을 갖는 순서 데이터를 포함하고, 상기 제3 쓰기 커맨드가 상기 제3 논리 어드레스에 대응되지 않는 경우, 불연속 식별 값을 갖는 순서 데이터를 포함하는 스토리지 장치.
  5. 제1 항에 있어서,
    상기 제2 검사 데이터는,
    기준 논리 어드레스 및 상기 제2 논리 어드레스 사이의 차이에 기초한 값을 갖는 오프셋 데이터를 포함하는 스토리지 장치.
  6. 제5 항에 있어서,
    상기 오프셋 데이터의 값에 기초하여, 상기 제2 검사 데이터에 의하여 복원되는 어드레스의 개수가 결정되는 스토리지 장치.
  7. 제1 항에 있어서,
    상기 메모리 컨트롤러는, 상기 제2 쓰기 커맨드에 기초하여 상기 제2 데이터와 함께 상기 제1 검사 데이터를 상기 제2 페이지에 쓰는 스토리지 장치.
  8. 스토리지 장치의 동작 방법에 있어서,
    복수의 페이지들을 포함하는 메모리 영역에 물리 페이지 번호의 순서로 데이터를 쓰는 단계;
    상기 복수의 페이지들의 각각에 대응되는 검사 데이터를 생성하는 단계;
    상기 복수의 페이지들 중 마지막으로 데이터를 저장한 라스트 페이지를 읽는 단계; 및
    상기 라스트 페이지에 대응되는 검사 데이터에 기초하여, 논리 페이지 번호에 대응되는 물리 페이지 번호를 지시하는 맵의 일부를 복원하는 단계를 포함하고,
    상기 검사 데이터는 상기 복수의 페이지들 중 기준 페이지의 물리 페이지 번호와 상기 검사 데이터에 대응되는 페이지의 물리 페이지 번호 사이의 오프셋 값을 포함하는 방법.
  9. 제8 항에 있어서,
    상기 맵의 상기 일부를 복원하는 단계는,
    상기 오프셋 값을 감소시키면서 상기 기준 페이지로부터 상기 라스트 페이지까지의 페이지들에 대응되는 맵 정보를 계산하는 단계를 포함하는 방법.
  10. 제8 항에 있어서,
    상기 기준 페이지 이전의 페이지에 대응되는 검사 데이터에 기초하여, 상기 맵의 나머지 중 적어도 일부를 복원하는 단계를 더 포함하는 방법.
KR1020180141638A 2018-11-16 2018-11-16 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 KR20200057866A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180141638A KR20200057866A (ko) 2018-11-16 2018-11-16 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법
US16/533,901 US11347654B2 (en) 2018-11-16 2019-08-07 Storage device including nonvolatile memory device and operating method thereof
CN201911093271.5A CN111198655A (zh) 2018-11-16 2019-11-08 包括非易失性存储器器件的存储设备及其操作方法
US17/732,580 US20220253386A1 (en) 2018-11-16 2022-04-29 Storage device including nonvolatile memory device and operating method thereof
US17/827,850 US20220292030A1 (en) 2018-11-16 2022-05-30 Storage device including nonvolatile memory device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180141638A KR20200057866A (ko) 2018-11-16 2018-11-16 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200057866A true KR20200057866A (ko) 2020-05-27

Family

ID=70727259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180141638A KR20200057866A (ko) 2018-11-16 2018-11-16 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법

Country Status (3)

Country Link
US (3) US11347654B2 (ko)
KR (1) KR20200057866A (ko)
CN (1) CN111198655A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11282567B2 (en) * 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
CN111752487B (zh) * 2020-06-18 2024-01-12 深圳大普微电子科技有限公司 一种数据恢复方法、装置及固态硬盘
US11983080B2 (en) * 2021-11-16 2024-05-14 Netapp, Inc. Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors
CN117785072B (zh) * 2024-02-27 2024-05-28 南京扬贺扬微电子科技有限公司 一种基于eMMC协议的存储控制系统及方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
JP2005258851A (ja) * 2004-03-12 2005-09-22 Renesas Technology Corp メモリカード
US8429352B2 (en) 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US8171205B2 (en) * 2008-05-05 2012-05-01 Intel Corporation Wrap-around sequence numbers for recovering from power-fall in non-volatile memory
JP4439578B1 (ja) * 2008-12-24 2010-03-24 株式会社東芝 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法
TWI385523B (zh) 2009-11-06 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料備份方法及其控制器與儲存系統
US9244769B2 (en) * 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
KR101890767B1 (ko) * 2011-07-01 2018-09-28 시게이트 테크놀로지 인터내셔날 주소 사상 정보 관리 방법 이를 적용한 저장 장치
US8806160B2 (en) * 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
JP5874525B2 (ja) * 2012-05-11 2016-03-02 ソニー株式会社 制御装置、記憶装置、記憶制御方法
KR101979392B1 (ko) * 2012-05-17 2019-05-16 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US9405621B2 (en) 2012-12-28 2016-08-02 Super Talent Technology, Corp. Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance
KR102025240B1 (ko) 2013-04-01 2019-11-04 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9542309B2 (en) 2013-08-21 2017-01-10 Sandisk Technologies Llc Relocating data based on matching address sequences
TWI539282B (zh) * 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
US9824007B2 (en) * 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9658966B2 (en) 2014-11-24 2017-05-23 Sandisk Technologies Llc Systems and methods of write cache flushing
US10025788B2 (en) 2015-09-29 2018-07-17 International Business Machines Corporation Detection of file corruption in a distributed file system
CN106201906B (zh) * 2016-07-11 2019-01-18 浪潮(北京)电子信息产业有限公司 一种用于闪存的冷热数据分离方法及系统

Also Published As

Publication number Publication date
US20220253386A1 (en) 2022-08-11
US20220292030A1 (en) 2022-09-15
CN111198655A (zh) 2020-05-26
US11347654B2 (en) 2022-05-31
US20200159668A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
JP5585919B2 (ja) 電源遮断管理
US11347654B2 (en) Storage device including nonvolatile memory device and operating method thereof
US11086772B2 (en) Memory system performing garbage collection operation and operating method of memory system
KR20170120738A (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
US10853241B2 (en) Data storing method and data storing apparatus for reducing power consumption in sudden power-off
CN111755039A (zh) 在恢复进程期间减少存储器系统中单元干扰的设备及方法
US11520694B2 (en) Data storage device and operating method thereof
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
US20220138096A1 (en) Memory system
US11113202B2 (en) Operating method forcing the second operation to fail using a scatter-gather buffer and memory system thereof
US11036493B2 (en) Memory system and operating method thereof
CN112835514B (zh) 存储器系统
US11210209B2 (en) Method for managing flash memory module and associated flash memory controller and electronic device
US20230289059A1 (en) Memory system and operating method thereof
CN108986864B (zh) 控制器和存储器系统以及存储器系统的操作方法
US20190278703A1 (en) Memory system, operating method thereof and electronic device
US20190361608A1 (en) Data storage device and operation method for recovery, and storage system having the same
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
CN115114178A (zh) 存储器系统及其操作方法
CN108509295B (zh) 存储器系统的操作方法
KR20220005832A (ko) 메타 데이터 관리를 위한 메모리 시스템 및 메모리 시스템의 동작방법
US20220171706A1 (en) Memory system and operating method thereof
US20240143226A1 (en) Data storage device and method for managing a write buffer
US20240202090A1 (en) Storage device for storing temperature log information according to temperature storage level and operating method thereof
US20210406169A1 (en) Self-adaptive wear leveling method and algorithm

Legal Events

Date Code Title Description
E902 Notification of reason for refusal