KR20190050154A - 데이터 저장 장치 - Google Patents

데이터 저장 장치 Download PDF

Info

Publication number
KR20190050154A
KR20190050154A KR1020170145397A KR20170145397A KR20190050154A KR 20190050154 A KR20190050154 A KR 20190050154A KR 1020170145397 A KR1020170145397 A KR 1020170145397A KR 20170145397 A KR20170145397 A KR 20170145397A KR 20190050154 A KR20190050154 A KR 20190050154A
Authority
KR
South Korea
Prior art keywords
block address
data
logical block
read
nonvolatile memory
Prior art date
Application number
KR1020170145397A
Other languages
English (en)
Other versions
KR102418856B1 (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 KR1020170145397A priority Critical patent/KR102418856B1/ko
Priority to US15/994,247 priority patent/US11074171B2/en
Priority to CN201811199834.4A priority patent/CN109753441B/zh
Publication of KR20190050154A publication Critical patent/KR20190050154A/ko
Application granted granted Critical
Publication of KR102418856B1 publication Critical patent/KR102418856B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 데이터 저장 장치에 관한 것이다. 상기 데이터 저장 장치는 논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 버퍼, 데이터가 저장되는 비휘발성 메모리, 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하되, 컨트롤러는, 외부로부터 제1 논리 블록 주소에 대응하는 데이터의 리드 명령을 수신하면, 매핑 테이블을 참조하여 제1 논리 블록 주소에 대응되는 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하되, 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 제1 논리 블록 주소가 다른 경우, 비휘발성 메모리에서 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도한다.

Description

데이터 저장 장치{A DATA STORAGE DEVICE}
본 발명은 데이터 저장 장치에 관한 것이다.
데이터 저장 장치, 예를 들어, 플래시 메모리를 이용한 저장 장치는 호스트의 논리 블록 주소(LBA: Logical Block Address)를 플래시 메모리의 물리 페이지 넘버(PPN: Physical Page Number)로 변환할 수 있는 매핑 테이블(mapping table)을 이용할 수 있다.
호스트가 특정 논리 블록 주소(LBA)에 대한 리드 명령을 요청하는 경우, 데이터 저장 장치는 매핑 테이블을 이용하여, 플래시 메모리의 물리 페이지 넘버(PPN)으로 변환하고, 이 위치에 대해 리드 동작을 수행한다.
그러나, 데이터 저장 장치가 매핑 테이블을 이용하여, 플래시 메모리의 물리 페이지 넘버(PPN)으로 변환할 때, 외부로부터의 충격이나 하드웨어의 일시적 오류로 인해 호스트가 요구하는 논리 블록 주소(LBA)가 아닌 잘못된 위치의 데이터를 리드할 수 있다.
이러한 문제가 발생한 경우, 데이터가 리드는 되었으나 리드된 데이터의 신뢰성이 확보될 수 없다.
본 발명이 해결하고자 하는 기술적 과제는, 외부로부터 데이터 리드 명령에 대응하여, 리드된 데이터가 기대하지 않은 데이터인 경우 리드 동작을 다시 수행함으로써 신뢰성이 확보된 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 외부로부터 데이터 리드 명령에 대응하여, 캐시 메모리에 기록된 작업 내역들을 참조하고, 리드된 데이터가 기대하지 않은 데이터인 경우 리드 동작을 다시 수행함으로써 신뢰성과 속도가 확보된 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 버퍼, 데이터가 저장되는 비휘발성 메모리, 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하되, 컨트롤러는, 외부로부터 제1 논리 블록 주소에 대응하는 데이터의 리드 명령을 수신하면, 매핑 테이블을 참조하여 제1 논리 블록 주소에 대응되는 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하되, 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 제1 논리 블록 주소가 다른 경우, 비휘발성 메모리에서 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 버퍼, 논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 비휘발성 메모리, 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하되, 컨트롤러는, 외부로부터 전원이 공급되면, 비휘발성 메모리에 저장된 매핑 테이블을 버퍼에 저장하고, 외부로부터 제1 논리 블록 주소에 대응하는 데이터의 리드 명령을 수신하면, 버퍼에 저장된 매핑 테이블을 참조하여 제1 논리 블록 주소에 대응되는 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하되, 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 제1 논리 블록 주소가 다른 경우, 비휘발성 메모리에서 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도하고, 외부로부터 전원이 차단될 때, 버퍼에 저장된 매핑 테이블을 비휘발성 메모리에 저장한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 데이터 저장 장치는, 논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 버퍼, 비휘발성 메모리, 및 버퍼 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하되, 컨트롤러는, 외부로부터 제1 논리 블록 주소와 제1 유저 데이터를 포함하는 제1 데이터를 제공받고, 매핑 테이블을 참조하여 제1 논리 블록 주소에 대응되는 비휘발성 메모리의 물리 블록 주소에 제1 논리 블록 주소와 제1 유저 데이터를 저장하고, 외부로부터 제2 논리 블록 주소를 포함하는 제2 데이터의 리드 명령을 수신하면, 비휘발성 메모리로부터 제2 논리 블록 주소를 포함하는 제2 데이터가 리드될 때까지 리드 동작을 반복한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 데이터 저장 장치를 설명하기 위한 예시적인 블럭도이다.
도 2는 몇몇 실시예에 따른 저장 장치의 컨트롤러를 설명하기 위한 예시적인 블록도이다.
도 3은 몇몇 실시예에 따른 호스트로부터의 데이터 리드 명령에 따른 컨트롤러의 동작을 설명하기 위한 예시적인 순서도이다.
도 4a 내지 도 4d는 몇몇 실시예에 따른 논리 블록 주소와 물리 블록 주소를 포함하는 매핑 테이블을 설명하기 위한 예시적인 도면이다.
도 5는 몇몇 실시예에 따른 데이터 저장 장치의 리드된 데이터가 플래시 변환 계층이 기대한 데이터인지 여부를 판별하는 방법을 설명하기 위한 예시적인 순서도이다.
도 6은, 몇몇 실시예에 따른 매핑 테이블의 저장 경로 및 갱신을 설명하기 위한 예시적인 순서도이다.
도 7은 몇몇 실시예에 따른 데이터 저장 장치의 라이트 동작 시에 버퍼, 캐시, 및 비휘발성 메모리의 동작을 설명하기 위한 예시적인 도면이다.
도 8은 몇몇 실시예에 따른 버퍼에 저장된 매핑 테이블을 갱신하는 것을 설명하기 위한 예시적인 도면이다.
도 9는 몇몇 실시예에 따른 데이터 저장 장치가 리드를 다시 수행하는 것을 설명하기 위한 예시적인 도면이다.
도 10은 다른 몇몇 실시예에 따른 호스트로부터의 데이터 리드 명령에 따른 컨트롤러의 동작을 설명하기 위한 예시적인 순서도이다.
도 11은 몇몇 실시예에 따른 데이터 저장 장치의 리드 동작을 설명하기 위한 예시적인 도면이다.
도 1은 몇몇 실시예에 따른 데이터 저장 장치를 설명하기 위한 예시적인 블럭도이다.
도 1을 참조하면, 데이터 저장 장치(100)는 컨트롤러(Controller, 110), 버퍼(Buffer, 120), 캐시(Cache, 130), 및 비휘발성 메모리(Non-volatile memory, 140)를 포함할 수 있다.
컨트롤러(110)는 버퍼(120), 캐시(130) 및 비휘발성 메모리(140)를 제어할 수 있다. 컨트롤러(110)는 호스트(host), 버퍼(120), 캐시(130), 및 비휘발성 메모리(140) 사이의 명령어 및 데이터 교환을 수행할 수 있다. 또한, 컨트롤러(110)는, 비록 도면에는 도시하지 않았지만 호스트(host)로부터의 요청에 따라 데이터 데이터 저장 장치(100)의 전반적인 동작(예를 들어, 리드(read) 또는 라이트(write) 등)을 수행할 수 있다. 구체적 설명을 위해, 도 2를 참조하여 설명한다.
도 2는 몇몇 실시예에 따른 저장 장치의 컨트롤러를 설명하기 위한 예시적인 블록도이다.
도 2를 참조하면, 컨트롤러(110)는 캐시(cache, 111), 프로세서(processor, 112), 플래시 변환 계층(FTL: Flash Translation Layer, 113), 버퍼 인터페이스(Buffer Interface, 115), 및 비휘발성 메모리 인터페이스(Non-volatile Memory Interface, 116)를 포함할 수 있다.
캐시(111)는 도 1의 캐시(130)와 동일할 수 있다. 다시 말해서, 캐시(111, 130)는 컨트롤러(110) 내부에 포함되거나 컨트롤러(110)와 독립적인 하드웨어 모듈로 구성될 수 있다. 캐시(111, 130)에 관한 자세한 설명은 후술한다.
프로세서(112)는 데이터 처리 또는 연산을 수행하는 장치나 프로그램일 수 있다. 예를 들어, 프로세서(112)는 마이크로 프로세서(microprocessor)를 포함할 수 있다. 또한, 예를 들어, 프로세서(112)는 프로그램 언어(program language)를 기계 언어(machine language)로 번역하는 프로그램 프로세서(program processor)일 수 있다.
플래시 변환 계층(113)은 주소 변환 계층(ATL: Address Translation Layer, 114)를 포함할 수 있다. 주소 변환 계층(113)은 호스트에서 요구하는 블록 주소를 실제 비휘발성 메모리(140)의 블록 주소로 변환할 수 있다. 플래시 변환 계층(113)은 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현할 수 있다. 호스트에서 요구하는 블록 주소를 실제 비휘발성 메모리(140)의 블록 주소로 변환하는 과정에 대해서는 후술한다.
플래시 변환 계층(113)은 블록 주소를 변환하는 것 외에도, 웨어 레벨링(Wear leveling), 및 가비지 콜렉션(Garbage collection) 등을 수행할 수 있다.
버퍼 인터페이스(115) 및 비휘발성 메모리 인터페이스(116)은 각각 컨트롤러(110)와 버퍼(120), 그리고 컨트롤러(110)와 비휘발성 메모리(140) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예를 들어, 버퍼 인터페이스(115) 및 비휘발성 메모리 인터페이스(116)은 각각 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, IDE (Integrated Drive Electronics) 프로토콜, NVMe(Non-Volatile Memory express) 프로토콜, 그리고 쿼리 응답(Query Request) 프로토콜 등과 같은 다양한 인터페이스 프로토콜을 통해 컨트롤러(110)와 통신하도록 구성될 수 있다. 다만, 전술한 프로토콜들은 예시적인 것이며, 본 발명이 이에 제한되지는 않는다.
다시 도 1을 참조하면, 버퍼(120)는 호스트로부터 수신한 데이터를 임시로 저장할 수 있다. 또한, 버퍼(120)는 주소 변환 계층(114)이 호스트가 요구하는 블록 주소를 실제 비휘발성 메모리(140)의 블록 주소로 변환하기 위한 매핑 테이블(mapping table)을 임시로 저장할 수 있다.
버퍼(120)는 고속의 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 예를 들어, 버퍼(120)는 DRAM(Dynamic Random Access Memory), 또는 플래시 메모리(Flash Memory)의 SLC(Single Level Cell) 영역일 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
캐시(130)는 전술한 바와 같이, 도 2의 캐시(111)와 동일할 수 있다. 다시 말해서, 캐시(111)는 컨트롤러(110) 내부에 포함될 수 있다. 또한 캐시(130)는 컨트롤러(110)와 독립적인 하드웨어 모듈로 구성될 수 있다. 다만, 이하에서는 설명의 편의를 위해, 캐시(130)가 컨트롤러(110)와 독립적인 하드웨어 모듈로 구성된 예를 기준으로 설명한다.
캐시(130)는 데이터에 고속으로 접근(access)할 수 있도록, 미래의 요청에 대비해 데이터를 임시로 저장할 수 있는 메모리일 수 있다. 캐시(130)에 저장된 데이터는 이전에 수행한 연산의 결과일 수 있다. 예를 들어, 호스트로부터 라이트 명령이 수신되어, 비휘발성 메모리(140)에 데이터를 라이트하는 경우, 캐시(130)에는 라이트 명령에 포함된 논리 블록 주소(LBA: Logical Block Address), 라이트될 데이터, 및/또는 비휘발성 메모리(140)의 실제 물리 블록 주소(PBA: Physical Block Address)가 임시로 저장될 수 있다.
또한, 캐시(130)에 저장된 데이터는 버퍼(120) 또는 비휘발성 메모리(140)에 저장된 데이터의 복제본일 수 있다. 예를 들어, 캐시(130)는 버퍼(120) 또는 비휘발성 메모리(140)에 저장되어 있는 매핑 테이블(mapping table)의 일부를 임시로 저장할 수 있다.
컨트롤러(110)는 캐시(130)에 저장된 데이터를 이용해, 데이터에 접근하는 시간 및 동일한 값을 재 연산하는데 소요되는 시간을 절감할 수 있다. 호스트로부터 요청된 데이터가 캐시(130) 내에서 발견되는 경우 이를 캐시 히트(cache hit)라고 한다. 반면, 호스트로부터 요청된 데이터가 캐시(130) 내에 존재하지 않는 경우 이를 캐시 미스(cache miss)라고 한다.
캐시(130)는 SRAM(Static Random Access Memory)일 수 있으나, 본 발명이 이에 제한되는 것은 아니다.
비휘발성 메모리(140)는 호스트로부터 수신한 데이터를 저장할 수 있다. 또한 비휘발성 메모리(140)는 주소 변환 계층(114)이 호스트가 요구하는 블록 주소를 실제 비휘발성 메모리(140)의 블록 주소로 변환하기 위한 매핑 테이블(mapping table)을 비일시적으로 저장할 수 있다.
예를 들어, 비휘발성 메모리(140)는 낸드 플래시(NAND flash)를 포함하는 플래시 메모리일 수 있다. 상기 플래시 메모리는 SLC 및 MLC 영역을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 비휘발성 메모리(140)는 PC 카드(PCMCIA: personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS), 임베디드 멀티미디어 카드(eMMC), 낸드 플래시 메모리(NAND Flash Memory), 노어 플래시 메모리(NOR Flash Memory), 브이 낸드 플래시 메모리(V-NAND Flash Memory) 등을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
또한 데이터 데이터 저장 장치(100)는 컨트롤러(110), 버퍼(120), 캐시(130) 및 비휘발성 메모리(140)가 서로 데이터 통신을 하는데 이용될 수 있는 데이터 버스(150)를 포함할 수 있다. 데이터 버스(150)는 데이터들이 이동되는 통로(path)에 해당하며, 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다.
이하에서는, 호스트로부터의 데이터 리드 명령에 따라 리드된 데이터가 플래시 변환 계층(113)이 기대한 데이터가 아닌 경우, 데이터 데이터 저장 장치(100)의 동작에 대해 설명한다.
도 3은 몇몇 실시예에 따른 호스트로부터의 데이터 리드 명령에 따른 컨트롤러의 동작을 설명하기 위한 예시적인 순서도이다.
도 3을 참조하면, 먼저 호스트(host)로부터 데이터 리드 명령을 수신할 수 있다. 컨트롤러(110)는 버퍼(120)에 저장된 매핑 테이블(mapping table)을 이용하여 논리 블록 주소(LBA)를 비휘발성 메모리(140)의 물리 블록 주소(PBA)로 변환할 수 있다(S300). 몇몇 실시예에 따른 논리 블록 주소(LBA)와 물리 블록 주소(PBA)를 포함하는 매핑 테이블에 관한 구체적인 설명을 위해, 도 4a 내지 도 4d를 참조하여 설명한다.
도 4a 내지 도 4d는 몇몇 실시예에 따른 논리 블록 주소와 물리 블록 주소를 포함하는 매핑 테이블을 설명하기 위한 예시적인 도면이다.
도 4a를 참조하면, 매핑 테이블(400_1)은 논리 블록 주소(LBA)와 이와 대응하는 비휘발성 메모리(140)의 물리 블록 주소(PBA)를 포함할 수 있다. 예를 들어, 논리 블록 주소(LBA)는 호스트의 논리 페이지 넘버(LPN: Logical Page Number)일 수 있다. 또한, 물리 블록 주소(PBA)는 비휘발성 메모리(140)의 물리 페이지 넘버(PPN: Physical Page Number)일 수 있다.
다시 말해서, 플래시 변환 계층(113)이 페이지(page) 단위로 매핑하는 경우, 즉, 호스트의 리드 및 라이트 동작의 최소 단위가 페이지 단위인 경우, 논리 블록 주소(LBA)와 물리 블록 주소(PBA)는 각각 논리 페이지 넘버(LPN)와 물리 페이지 넘버(PPN)일 수 있다.
예를 들어, 데이터 저장 장치(100)가 호스트로부터 논리 블록 주소 0(LBA 0) 에 해당하는 데이터 리드 명령을 수신하면, 매핑 테이블(400_1)을 참조하여, 비휘발성 메모리(140)의 물리 페이지 넘버 2(PPN 2)에 저장된 데이터를 호스트로 전송할 수 있다.
도 4b를 참조하면, 매핑 테이블(400_2)은 논리 블록 주소(LBA)와 이와 대응하는 비휘발성 메모리(140)의 물리 블록 주소(PBA)를 포함할 수 있다. 예를 들어, 논리 블록 주소(LBA)는 호스트의 논리 블록 넘버(LBN: Logical Block Number)일 수 있다. 또한, 물리 블록 주소(PBA)는 비휘발성 메모리(140)의 물리 블록 넘버(PPN: Physical Block Number)일 수 있다.
다시 말해서, 플래시 변환 계층(113)이 복수개의 페이지(page)의 집합인 블록(block) 단위로 매핑하는 경우, 즉, 호스트의 리드 및 라이트 동작의 최소 단위가 블록 단위인 경우, 논리 블록 주소(LBA)와 물리 블록 주소(PBA)는 각각 논리 블록 넘버(LBN)와 물리 블록 넘버(PBN)일 수 있다.
예를 들어, 데이터 저장 장치(100)가 호스트로부터 논리 블록 주소 0(LBA 0)에 해당하는 데이터 리드 명령을 수신하면, 매핑 테이블(400_2)을 참조하여, 비휘발성 메모리(140)의 물리 블록 넘버 7(PBN 7)에 저장된 데이터를 호스트로 전송할 수 있다.
도 4c를 참조하면, 매핑 테이블(400_3)은 논리 블록 주소(LBA)와 이와 대응하는 비휘발성 메모리(140)의 물리 블록 주소(PBA)를 포함할 수 있다. 예를 들어, 호스트의 논리 블록 주소(LBA)는 비휘발성 메모리(140)의 페이지 단위보다 작은 단위일 수 있다.
도 4d를 참조하여, 도 4c의 매핑 테이블(400_3)을 이용하는 경우 데이터가 비휘발성 메모리(140)에 저장되는 방식을 설명한다.
도 4c 및 도 4d에서는, 예를 들어, 비휘발성 메모리(140)의 하나의 물리 블록 주소(PBA)가 두개의 호스트의 논리 블록 주소(LBA)와 대응되는 것으로 도시하였으나, 본 발명이 이에 제한되지는 않는다.
도 4d를 참조하면, 비휘발성 메모리(140)에 포함된 페이지(page)는 유저 데이터 영역(user data region, 141)과 스페어 영역(spare region, 143)을 포함할 수 있다. 유저 데이터 영역(141)은 저장될 데이터를 포함할 수 있고, 스페어 영역(143)은 저장될 데이터와 대응되는 논리 블록 주소(LBA)를 포함할 수 있다. 각각 하나의 유저 데이터 영역(141) 및 스페어 영역(143)은 에러 정정을 위한 ECC 청크(ECC chunk)일 수 있다. 따라서, 비록 도면상에는, 스페어 영역(143)에 논리 블록 주소(LBA)만 저장되는 것으로 도시하였으나, 본 발명이 이에 제한되지는 않는다. 예를 들어, 스페어 영역(143)은 에러 정정을 위한 에러 정정 패리티(ECC parity)가 포함될 수 있다.
도 4c의 매핑 테이블(400_3)을 이용할 때, 비휘발성 메모리(140)의 페이지는 논리 블록 주소(LBA)와 이에 대응하는 데이터를 순차적으로 저장할 수 있다. 예를 들어, 논리 블록 주소 0(LBA 0) 및 논리 블록 주소 1(LBA 1)에 각각 데이터 1(Data#1) 및 데이터 2(Data#2)를 저장할 때, 매핑 테이블(400_3)을 참조하여, 비휘발성 메모리(140)의 물리 페이지 넘버 3(PPN 3)에는 Data#1, LBA0, Data#2, LBA1의 순서로 순차적으로 저장될 수 있다.
예를 들어, 비휘발성 메모리(140)의 페이지, 유저 데이터 영역(141), 및 스페어 영역(143)이 각각 8비트, 3비트, 및 1비트인 경우를 가정하면, 물리 페이지 넘버 3(PPN 3)에 라이트할 때, 1~3번째 비트에 Data#1, 4번째 비트에 LBA 0, 5~7번째 비트에 Data#2, 및 8번째 비트에 LBA 1이 저장될 수 있다.
예를 들어, 비휘발성 메모리(140)의 페이지, 유저 데이터 영역(141), 및 스페어 영역(143)이 각각 8비트, 3비트, 및 1비트인 경우를 가정하면, 논리 블록 주소 0(LBA 0)에 대응되는 데이터를 리드할 때, 컨트롤러(110)는 물리 페이지 넘버 3(PPN 3)에 접근하여, 데이터를 리드하고, 1~4번째 비트에 저장된 데이터를 호스트로 출력할 수 있다.
다만, 도 4a 내지 도 4d는 예시적인 설명일 뿐, 본 발명이 이에 제한되지는 않는다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 적절한 방식으로 논리 블록 주소(LBA)와 물리 블록 주소(PBA)를 설정할 수 있다. 또한, 설명의 편의를 위해, 이하에서는, 논리 블록 주소(LBA)는 논리 페이지 넘버(LPN)고, 물리 블록 주소(PBA)는 물리 페이지 넘버(PPN)인 것을 예를 들어 설명한다.
다시 도 3을 참조하면, 비휘발성 메모리(140)의 변환된 물리 블록 주소(PBA)에 저장된 데이터를 리드하고, 리드된 데이터에 에러가 존재하는 경우 에러 정정을 수행할 수 있다(S310). 다만, 에러 정정 과정은 예시적인 것이며 생략될 수 있다.
이어서, 컨트롤러(110)는 데이터가 성공적으로 리드되었는지 여부를 판별할 수 있다(S320). 예를 들어, 리드된 데이터가 없거나(clean, floating), 리드된 데이터가 정정 불가능한 데이터(uncorrectable data)인 경우 데이터 리드가 실패한 것일 수 있다. 반면, 데이터 리드가 성공적으로 수행된 경우는 정정 불가능한 데이터가 아닌 리드된 데이터가 존재하는 경우일 수 있다.
리드된 데이터가 플래시 변환 계층(113)이 기대한 데이터인지, 즉, 리드된 데이터가 호스트가 요구한 데이터인지 여부를 판별할 수 있다(S330). 구체적인 설명을 위해, 도 5를 참조하여 설명한다.
도 5는 몇몇 실시예에 따른 데이터 저장 장치의 리드된 데이터가 플래시 변환 계층이 기대한 데이터인지 여부를 판별하는 방법을 설명하기 위한 예시적인 순서도이다.
도 5를 참조하면, 데이터가 성공적으로 리드된 경우, 호스트로부터 리드를 요청 받은 논리 블록 주소(LBA)와 리드된 데이터에 포함된 논리 블록 주소(LBA)를 비교할 수 있다(S332).
몇몇 실시예에서, 호스트로부터 수신되는 데이터 라이트 명령은, 라이트할 데이터와 라이트할 데이터가 쓰여질 논리 블록 주소(LBA)를 포함할 수 있다. 따라서, 호스트로부터 데이터의 라이트 명령을 수신하면, 컨트롤러(110)는 논리 블록 주소(LBA)와 수신된 데이터를 함께 비휘발성 메모리(140)에 저장할 수 있다. 그러므로, 데이터가 성공적으로 리드되면, 리드된 데이터에는 논리 블록 주소(LBA)가 포함되어 있을 수 있다.
호스트로부터 리드를 요청 받은 논리 블록 주소(LBA)와 리드된 데이터에 포함된 논리 블록 주소(LBA)가 동일하면(S334), 리드된 데이터는 플래시 변환 계층(113)이 기대한 데이터, 즉, 호스트로부터 리드가 요구된 데이터일 수 있다(S336).
호스트로부터 리드를 요청 받은 논리 블록 주소(LBA)와 리드된 데이터에 포함된 논리 블록 주소(LBA)가 상이하면(S334), 리드된 데이터는 플래시 변환 계층(113)이 기대한 데이터, 즉, 호스트로부터 리드가 요구된 데이터가 아닐 수 있다(S338).
다시 도 3을 참조하면, 데이터를 성공적으로 리드하고, 리드된 데이터가 플래시 변환 계층(113)이 기대한 데이터인 경우, 컨트롤러(110)는 리드된 데이터를 호스트로 전송할 수 있다(S380).
반면, 데이터를 성공적으로 리드하였으나, 리드된 데이터가 플래시 변환 계층(113)이 기대한 데이터가 아닌 경우, 미리 정한 리드 재시도 횟수를 초과하였는지 여부를 판별할 수 있다(S340).
만약 미리 정한 리드 재시도 횟수를 초과한 경우, 컨트롤러(110)는 리드된 데이터를 호스트로 전송할 수 있다(S380).
반면, 미리 정한 리드 재시도 횟수를 초과하지 않은 경우, 컨트롤러(110)는 버퍼(120)에 저장된 매핑 테이블을 갱신하고(S350), 다시 리드 동작을 수행할 수 있다(S300 이후 과정). 그러나, 리드 동작을 다시 수행하는 경우라 할지라도, 버퍼(120)에 저장된 매핑 테이블의 갱신이 불필요한 경우, 매핑 테이블의 갱신 과정(S350)은 생략될 수 있다. 매핑 테이블의 갱신이 불필요한 경우는, 예를 들어, 캐시(130)에 기록된 작업 내역이 존재하지 않는 경우일 수 있다.
버퍼(120)에 저장된 매핑 테이블, 비휘발성 메모리(140)에 저장된 매핑 테이블, 및 캐시(130)에 기록된 정보들에 관한 관계 및 매핑 테이블을 갱신하는 과정을 설명하기 위해 도 6 내지 도 8을 참조한다.
도 6은, 몇몇 실시예에 따른 매핑 테이블의 저장 경로 및 갱신을 설명하기 위한 예시적인 순서도이다.
도 6을 참조하면, 데이터 저장 장치(100)에 외부로부터 전원이 공급될 수 있다. 전원이 차단되면, 버퍼(120)에 임시로 저장되어 있던 매핑 테이블은 손실될 수 있으므로, 데이터 저장 장치(100)에 전원이 공급되는 경우 먼저 비휘발성 메모리(140)에 비일시적으로 저장되어 있는 매핑 테이블을 버퍼(120)에 저장할 수 있다(S610).
버퍼(120)에 저장된 매핑 테이블의 갱신(update)가 필요한 경우, 캐시(130)에 기록된 이전 작업 내역을 기초로, 버퍼(120)에 저장된 매핑 테이블을 갱신할 수 있다(S620).
전술한 바와 같이, 캐시(130)는 이전 연산의 결과 혹은 이전 작업 내역이 저장될 수 있다. 따라서, 캐시(130)는 최신의 논리 블록 주소(LBA)와 물리 페이지 넘버(PPN) 사이의 매핑 정보를 포함할 수 있다. 따라서, 버퍼(120)에 저장된 매핑 테이블이 최신의 정보를 포함하지 않는 경우, 캐시(130)에 저장된 작업 내역을 기초로 매핑 테이블을 갱신할 수 있다.
이후, 데이터 저장 장치(100)에 전원이 차단되기 전, 버퍼(120)에 임시로 저장된 매핑 테이블을 비휘발성 메모리(140)로 전송하여, 매핑 테이블을 비일시적으로 저장할 수 있다(S630).
비록 본 명세서에서는 데이터 저장 장치(100)에 전원이 차단되기 전 버퍼(120)에 저장된 매핑 테이블을 비휘발성 메모리(140)에 저장하는 것으로 설명하였으나, 본 발명이 이에 제한되지는 않는다. 예를 들어, 데이터 저장 장치(100)는 비상 전원 장치(예를 들어, 배터리, UPS 등)를 포함할 수 있고, 데이터 저장 장치(100)에 전원 공급이 갑작스럽게 중단되더라도, 비상 전원 장치를 이용하여 데이터 저장 장치(100)에 비상 전원을 공급할 수 있다. 다시 말해서, 데이터 저장 장치(100)에 전원이 갑작스럽게 차단된 후에도 버퍼(120)에 저장된 매핑 테이블을 비휘발성 메모리(140)에 저장할 수 있다.
또한, 버퍼(120)에 저장된 매핑 테이블을 갱신하는 것이, 리드를 재시도하는 경우에만 갱신하는 것으로 한정되는 것은 아니다. 예를 들어, 캐시(130)에 작업 내역을 기록할 공간이 부족한 경우, 캐시(130)에 기록된 작업 내역을 이용하여 버퍼(120)에 저장된 매핑 테이블을 갱신할 수 있다. 또한, 예를 들어, 특정 주기로 버퍼(120)에 저장된 매핑 테이블을 갱신할 수 있다.
매핑 테이블을 갱신하는 과정에 대한 이해를 돕기 위해, 도 7 및 도 8을 참조한다.
도 7은 몇몇 실시예에 따른 데이터 저장 장치의 라이트 동작 시에 버퍼, 캐시, 및 비휘발성 메모리의 동작을 설명하기 위한 예시적인 도면이다.
도 7을 참조하면, 먼저 호스트로부터 논리 블록 주소 3(LBA 3)에 데이터 라이트 명령이 수신될 수 있다(Write Data#2 in LBA 3, ①).
컨트롤러(110)는 버퍼(120)에 접근하고, 매핑 테이블을 이용하여, 논리 블록 주소 3(LBA 3)을 이에 대응하는 비휘발성 메모리(140)의 물리 페이지 넘버(PPN)로 변환할 수 있다. 이 경우, 물리 페이지 넘버 9(PPN 9)로 변환한다. 이후, 컨트롤러(110)는 비휘발성 메모리(140)의 물리 페이지 넘버 9(PPN 9)로 접근한다. 이때, 캐시(130)에는 논리 블록 주소 3(LBA 3)에 대응하여 물리 페이지 넘버 9(PPN 9)에 접근한 기록이 저장될 수 있다(②).
비휘발성 메모리(140)의 물리 페이지 넘버 9(PPN 9)에 접근하였으나, 이미 라이트된 데이터(Data#1)가 존재하는 경우, 컨트롤러(110)는 물리 페이지 넘버 9(PPN 9)에 저장된 데이터(Data#1)를 무효화할 수 있다(Invalid, ③).
이후, 컨트롤러(110)는 논리 블록 주소 3(LBA 3)에 대응하여 새로운 물리 페이지 넘버 10(PPN 10)을 할당하여, 물리 페이지 넘버 10(PPN 10)의 유저 데이터 영역(142)에 데이터(Data#2)를, 스페어 영역(141)에 논리 블록 주소 3(LBA 3)을 각각 저장할 수 있다.
이때, 캐시(130)에 데이터(Data#2)를 논리 블록 주소 3(LBA 3)에 대응하는 물리 페이지 넘버 10(PPN 10)에 저장한 기록이 저장될 수 있다(④).
비록 도면에는 캐시(130)에 논리 블록 주소(LBA)와 물리 페이지 넘버(PPN)만 기록되는 것으로 도시하였으나, 비휘발성 메모리(130)에 저장되는 데이터 역시 기록될 수 있다.
도 8은 몇몇 실시예에 따른 버퍼에 저장된 매핑 테이블을 갱신하는 것을 설명하기 위한 예시적인 도면이다.
도 8을 참조하면, 버퍼(120)에는 호스트가 요구하는 물리 블록 주소(LBA)와 비휘발성 메모리(140)의 실제 물리 페이지 넘버(PPN) 사이의 대응 관계를 나타내는 매핑 테이블이 저장될 수 있다.
캐시(130)에 데이터 저장 장치(100)가 최근에 작업한 내역들이 기록될 수 있다. 도 8에서는, 캐시(130)에 저장된 작업 내역은 상대적으로 위쪽에 저장된 작업 내역이 상대적으로 아래쪽에 저장된 작업 내역보다 더 오래된 작업 내역인 것을 가정한다. 예를 들어, 캐시(130)에 기록된 논리 블록 주소 3(LBA 3)에 대응하는 비휘발성 메모리(140)의 물리 페이지 넘버(PPN)는, 기존에는 물리 페이지 넘버 9(PPN 9)였으나, 최근 작업 등(예를 들어, 라이트 동작)에 의해 물리 페이지 넘버 10(PPN 10)으로 바뀌었음을 알 수 있다.
몇몇 실시예에서 논리 블록 주소(LBA)와 물리 페이지 넘버(PPN)이 설명의 편의상 캐시(130)에 논리 블록 주소(LBA)와 물리 페이지 넘버(PPN)만 저장되어 있는 것으로 도시하였으나, 전술한 바와 같이 본 발명이 이에 제한되지는 않는다.
몇몇 실시예에서 버퍼(120)에 저장된 매핑 테이블은 최신의 정보를 반영하지 않을 수 있다. 따라서, 버퍼(120)에 저장된 매핑 테이블을 최신의 정보로 갱신(update)하기 위해, 캐시(130)에 기록된 최근 작업 내역을 참조할 수 있다.
예를 들어, 도 8의 버퍼(120)에 저장된 매핑 테이블에서, 논리 블록 주소 3(LBA 3), 논리 블록 주소 4(LBA 4), 및 논리 블록 주소5(LBA 5)는 최신의 정보를 반영하지 않는다. 따라서, 캐시(130)에 기록된 논리 블록 주소 3(LBA 3), 논리 블록 주소 4(LBA 4), 및 논리 블록 주소5(LBA 5)의 정보를 이용하여, 버퍼(120)에 저장된 매핑 테이블을 갱신할 수 있다. 여기에서, 버퍼(120)에 저장된 매핑 테이블의 논리 블록 주소 3(LBA 3), 논리 블록 주소 4(LBA 4), 및 논리 블록 주소5(LBA 5)는 각각 물리 페이지 넘버 10(PPN 10), 물리 페이지 넘버 15(PPN 15), 및 물리 페이지 넘버 17(PPN 17)로 갱신될 수 있다.
다시 도 3의 S320 단계를 참조하면, 컨트롤러(110)는 데이터의 리드가 실패한 경우 리드된 데이터가 정정 불가능한 데이터인지를 판별한다(S360). 전술한 바와 같이, 데이터의 리드가 실패한 경우는 리드된 데이터가 정정 불가능한 데이터(uncorrectable)이거나, 리드된 데이터가 존재하지 않는 경우(clean, floating)인 것으로 정의할 수 있다.
리드된 데이터가 정정 불가능한 데이터가 아니면, 즉 리드된 데이터가 존재하지 않는 경우, 미리 정한 리드 재시도 횟수를 초과하였는지 여부를 판별할 수 있다(S370).
만약 미리 정한 리드 재시도 횟수를 초과하지 않은 경우, 컨트롤러(110)는 다시 리드를 수행할 수 있다(S300 이후 과정).
반면, 미리 정한 리드 재시도 횟수를 초과한 경우, 컨트롤러(110)는 리드된 데이터를 호스트로 전송할 수 있다. 즉, 컨트롤러(110)는 리드된 데이터가 존재하지 않음을 호스트로 전송할 수 있다(S380).
컨트롤러(110)는 리드된 데이터가 정정 불가능한 데이터인 경우, 정정 불가능한 데이터를 호스트로 전송할 수 있다(S380).
도 9는 몇몇 실시예에 따른 데이터 저장 장치가 리드를 다시 수행하는 것을 설명하기 위한 예시적인 도면이다.
도 9를 참조하면, 비휘발성 메모리(140)는 유저 데이터 영역(user data region, 142)과 스페어 영역(spare region, 144)을 포함할 수 있다. 유저 데이터 영역(142)에는 데이터가 저장되고, 스페어 영역(142)에는 논리 블록 주소(LBA)가 저장될 수 있다.
호스트로부터 논리 블록 주소 3(LBA 3)의 리드 명령이 요청된다(Read LBA 3). 컨트롤러(110)는 버퍼(120)에 접근하여, 버퍼(120)에 저장된 매핑 테이블을 이용해 논리 블록 주소 3(LBA 3)을 비휘발성 메모리(140)의 물리 페이지 넘버(PPN)로 변환할 수 있다. 이때, 논리 블록 주소 3(LBA 3)에 대응하는 물리 페이지 넘버(PPN)는 물리 페이지 넘버 9(PPN 9)일 수 있다.
그러나, 외부적 충격이나 물리적 오류로 인해, 컨트롤러(110)는 호스트의 논리 블록 주소(LBA)를 비휘발성 메모리(140)의 물리 페이지 넘버(PPN)으로 변환 오류가 발생할 수 있다. 이때, 컨트롤러(110)는 비휘발성 메모리(140)의 물리 페이지 넘버 9(PPN 9)가 아닌 물리 페이지 넘버 2(PPN 2)를 리드할 수 있다(①). 이때, 리드된 데이터는 데이터 1(Data#1) 및 논리 블록 주소 0(LBA 0)을 포함할 수 있다.
컨트롤러(110)는 호스트로부터 리드가 요청된 논리 블록 주소(LBA)와 리드된 데이터에 포함된 논리 블록 주소(LBA)를 비교할 수 있다. 호스트로부터 리드가 요청된 논리 블록 주소 3(LBA 3)과 리드된 데이터에 포함된 논리 블록 주소 0(LBA 0)은 서로 일치하지 않으므로, 컨트롤러(110)는 리드를 재시도하여 비휘발성 메모리(140)의 물리 페이지 넘버 9(PPN 9)에 포함된 데이터를 리드할 수 있다(②).
컨트롤러(110)는 호스트로부터 리드가 요청된 논리 블록 주소(LBA)와 리드된 데이터에 포함된 논리 블록 주소(LBA)를 다시 비교할 수 있다. 호스트로부터 리드가 요청된 논리 블록 주소 3(LBA 3)과 리드된 데이터에 포함된 논리 블록 주소 3(LBA 3)은 서로 일치하므로, 컨트롤러(110)는 리드된 데이터(Data#2)를 호스트로 전송할 수 있다(③).
도 10은 다른 몇몇 실시예에 따른 호스트로부터의 데이터 리드 명령에 따른 컨트롤러의 동작을 설명하기 위한 예시적인 순서도이다. 앞서 설명한 내용과 중복되는 내용은 생략하거나 간단히 설명한다.
도 10에서, 몇몇 실시예에 따른 캐시(130)는 최근 작업 내역 중 논리 블록 주소(LBA)와 이와 대응하는 비휘발성 메모리(140)의 물리 페이지 넘버(PPN)를 포함하는 맵 캐시(map cache)인 것을 가정하여 설명한다.
몇몇 실시예에서, 캐시(130)에 기록된 논리 블록 주소(LBA) 및 이와 대응하는 비휘발성 메모리(140)의 물리 페이지 넘버(PPN)를 이용하면, 컨트롤러(110)가 플래시 변환 계층(113)을 거치지 않고 캐시(130)에만 접근하여 바로 논리 블록 주소(LBA)를 이와 대응하는 물리 페이지 넘버(PPN)로 변환할 수 있다. 즉, 호스트로부터 리드가 요청되고, 캐시 히트(cache hit)이면, 버퍼(120)를 거치지 않고 논리 블록 주소(LBA)를 이와 대응하는 물리 페이지 넘버(PPN)로 변환할 수 있다(S1000, S1010). 반면, 호스트로부터 리드가 요청되고 캐시 미스(cache miss)이면, 앞서 설명한 바와 같이 버퍼(120)에 저장된 매핑 테이블을 이용하여 논리 블록 주소(LBA)를 이와 대응하는 물리 페이지 넘버(PPN)로 변환할 수 있다(S1000, S1020).
S1030 내지 S1080 단계는 도 3에서 설명한 단계와 동일할 수 있다. 다만, 컨트롤러(110)는 캐시(130)에 먼저 접근하여 최근 작업 내역을 참조하기 때문에, 리드를 다시 수행할 때 버퍼(120)에 저장된 매핑 테이블을 갱신하는 단계는 생략될 수 있다.
본 명세서에서는 캐시 히트(cache hit)의 경우 캐시(130)에 기록된 매핑 정보를 이용하여 논리 블록 주소(LBA)를 이와 대응하는 물리 페이지 넘버(PPN)로 변환한 후, 단계 S1030 내지 S1080을 수행하는 것으로 도시하였으나, 본 발명이 이에 제한되지는 않는다. 예를 들어, 캐시(130)가 논리 블록 주소(LBA)와 이와 대응하는 물리 페이지 넘버(PPN)뿐만 아니라, 이들과 관련된 데이터까지 포함하는 경우, 리드 동작의 고속 수행을 위해, 캐시 히트의 경우 캐시(130)에 기록된 논리 블록 주소(LBA)와 물리 페이지 넘버(PPN)과 관련된 데이터를 리드하고, S1030 내지 S1080 단계를 수행할 수 있다. 또한, 예를 들어, 캐시(130)가 논리 블록 주소(LBA)와 이와 대응하는 물리 페이지 넘버(PPN)뿐만 아니라, 이들과 관련된 데이터까지 포함하는 경우, 리드 동작의 고속 수행을 위해, 캐시 히트의 경우 캐시(130)에 기록된 논리 블록 주소(LBA)와 물리 페이지 넘버(PPN)과 관련된 데이터를 리드하여, S1030 내지 S1080 단계의 수행 없이 바로 호스트로 전송할 수 있다.
도 11은 몇몇 실시예에 따른 데이터 저장 장치의 리드 동작을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 앞서 설명한 내용과 중복되는 내용은 생략하거나 간단히 설명한다.
도 11을 참조하면, 호스트로부터 논리 블록 주소 1(LBA 1)의 리드 명령을 수신할 수 있다(Read LBA 1). 이때, 캐시(130)에 논리 블록 주소1(LBA 1) 및 물리 페이지 넘버4(PPN 4)에 대한 정보가 존재하므로, 컨트롤러(110)는 버퍼(120)를 거치지 않고 논리 블록 주소(LBA)의 변환을 완료할 수 있다. 또는, 캐시(130)에 논리 블록 주소 1(LBA 1)에 대한 데이터(Data#2)가 기록되어 있으므로, 캐시(130)를 이용하여 데이터(Data#2)를 리드할 수 있다(①, cache hit).
반면, 호스트로부터 논리 블록 주소 3(LBA 3)의 리드 명령을 수신할 수 있다(Read LBA 1). 이때, 캐시(130)에 논리 블록 주소 3(LBA 3)에 대한 데이터는 기록되어 있지 않으므로(②, cache miss), 컨트롤러(110)는 버퍼(120)에 접근하여 매핑 테이블을 이용할 수 있다(③, using mapping table).
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 데이터 저장 장치 110: 컨트롤러
120: 버퍼 130: 캐시
140: 비휘발성 메모리 150: 데이터 버스

Claims (10)

  1. 논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 버퍼;
    데이터가 저장되는 비휘발성 메모리; 및
    상기 버퍼 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는,
    외부로부터 제1 논리 블록 주소에 대응하는 데이터의 리드 명령을 수신하면, 상기 매핑 테이블을 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하되,
    상기 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 상기 제1 논리 블록 주소가 다른 경우, 상기 비휘발성 메모리에서 상기 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도하는 데이터 저장 장치.
  2. 제 1항에 있어서,
    상기 컨트롤러는,
    상기 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 상기 제1 논리 블록 주소가 다른 경우, 상기 버퍼에 저장된 매핑 테이블을 갱신한 후, 상기 비휘발성 메모리에서 상기 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도하는 데이터 저장 장치.
  3. 제 1항에 있어서,
    상기 컨트롤러는,
    미리 정한 횟수내에서 리드를 재시도하고, 상기 미리 정한 횟수를 초과하는 경우, 상기 리드된 데이터를 상기 외부로 전송하는 데이터 저장 장치.
  4. 제 1항에 있어서,
    상기 컨트롤러는,
    상기 리드된 데이터가 부존재하는 경우, 미리 정한 횟수내에서 상기 데이터의 리드를 재시도하는 데이터 저장 장치.
  5. 버퍼;
    논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 비휘발성 메모리; 및
    상기 버퍼 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는,
    외부로부터 전원이 공급되면, 상기 비휘발성 메모리에 저장된 매핑 테이블을 상기 버퍼에 저장하고,
    외부로부터 제1 논리 블록 주소에 대응하는 데이터의 리드 명령을 수신하면, 상기 버퍼에 저장된 매핑 테이블을 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하되,
    상기 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 상기 제1 논리 블록 주소가 다른 경우, 상기 비휘발성 메모리에서 상기 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도하고,
    외부로부터 전원이 차단될 때, 상기 버퍼에 저장된 매핑 테이블을 상기 비휘발성 메모리에 저장하는 데이터 저장 장치.
  6. 제 5항에 있어서,
    상기 컨트롤러는,
    상기 비휘발성 메모리로부터 리드한 데이터에 포함된 제2 논리 블록 주소와 상기 제1 논리 블록 주소가 다른 경우, 상기 버퍼에 저장된 매핑 테이블을 갱신한 후, 상기 비휘발성 메모리에서 상기 제1 논리 블록 주소에 대응하는 데이터의 리드를 재시도하는 데이터 저장 장치.
  7. 제 5항에 있어서,
    상기 데이터 저장 장치는 상기 데이터 저장 장치의 작업 내역이 기록되는 캐시(cache)를 더 포함하고,
    상기 컨트롤러는,
    외부로부터 제1 논리 블록 주소에 대응하는 데이터의 리드 명령을 수신하면, 상기 캐시에 접근(access)하고,
    상기 캐시가 상기 제1 논리 블록 주소를 포함하는 경우, 상기 캐시를 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하고,
    상기 캐시가 상기 제1 논리 블록 주소를 비포함하는 경우, 상기 매핑 테이블을 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하는 데이터 저장 장치.
  8. 논리 블록 주소(LBA: Logical Block Address)에 대응되는 물리 블록 주소(PBA: Physical Block Address)를 포함하는 매핑 테이블(mapping table)이 저장된 버퍼;
    비휘발성 메모리; 및
    상기 버퍼 및 상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는,
    외부로부터 제1 논리 블록 주소와 제1 유저 데이터를 포함하는 제1 데이터를 제공받고, 상기 매핑 테이블을 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 물리 블록 주소에 상기 제1 논리 블록 주소와 제1 유저 데이터를 저장하고,
    외부로부터 제2 논리 블록 주소를 포함하는 제2 데이터의 리드 명령을 수신하면, 상기 비휘발성 메모리로부터 상기 제2 논리 블록 주소를 포함하는 제2 데이터가 리드될 때까지 리드 동작을 반복하는 데이터 저장 장치.
  9. 제 8항에 있어서,
    상기 데이터 저장 장치는 상기 데이터 저장 장치의 작업 내역이 기록되는 캐시(cache)를 더 포함하고,
    상기 컨트롤러는,
    외부로부터 제2 논리 블록 주소를 포함하는 제2 데이터의 리드 명령을 수신하면, 상기 캐시에 접근(access)하고,
    상기 캐시가 상기 제1 논리 블록 주소를 포함하는 경우, 상기 캐시를 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하고,
    상기 캐시가 상기 제1 논리 블록 주소를 비포함하는 경우, 상기 매핑 테이블을 참조하여 상기 제1 논리 블록 주소에 대응되는 상기 비휘발성 메모리의 제1 물리 블록 주소에 저장된 데이터를 리드하는 데이터 저장 장치.
  10. 제 8항에 있어서,
    상기 컨트롤러는,
    상기 리드된 데이터가 부존재하는 경우, 미리 정한 횟수내에서 상기 리드 동작을 반복하는 데이터 저장 장치.
KR1020170145397A 2017-11-02 2017-11-02 데이터 저장 장치 KR102418856B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170145397A KR102418856B1 (ko) 2017-11-02 2017-11-02 데이터 저장 장치
US15/994,247 US11074171B2 (en) 2017-11-02 2018-05-31 Data storage device for recovering read errors
CN201811199834.4A CN109753441B (zh) 2017-11-02 2018-10-15 数据存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170145397A KR102418856B1 (ko) 2017-11-02 2017-11-02 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20190050154A true KR20190050154A (ko) 2019-05-10
KR102418856B1 KR102418856B1 (ko) 2022-07-07

Family

ID=66242983

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170145397A KR102418856B1 (ko) 2017-11-02 2017-11-02 데이터 저장 장치

Country Status (3)

Country Link
US (1) US11074171B2 (ko)
KR (1) KR102418856B1 (ko)
CN (1) CN109753441B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113467705A (zh) * 2020-03-31 2021-10-01 西部数据技术公司 数据组块的增强读取

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200019513A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그 동작 방법
US11886741B2 (en) * 2021-04-16 2024-01-30 Samsung Electronics Co., Ltd. Method and storage device for improving NAND flash memory performance for intensive read workloads

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100031000A1 (en) * 2007-12-06 2010-02-04 David Flynn Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US20160266970A1 (en) * 2015-03-09 2016-09-15 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
US20170269873A1 (en) * 2016-03-16 2017-09-21 Phison Electronics Corp. Memory management method, memory control circuit unit and memory storage device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080071973A1 (en) * 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
JP3459225B2 (ja) * 2000-06-08 2003-10-20 松下電器産業株式会社 バッファメモリアドレス変換装置、光ディスク再生装置、及び媒体
US7599220B2 (en) 2007-05-25 2009-10-06 Macronix International Co., Ltd. Charge trapping memory and accessing method thereof
CN102449610B (zh) * 2009-03-27 2014-07-16 Lsi公司 用于提供存储系统逻辑块地址的释放管理的方法及设备
CN102576333B (zh) * 2009-10-05 2016-01-13 马维尔国际贸易有限公司 非易失性存储器中的数据高速缓存
CN101782875B (zh) * 2010-01-29 2012-01-04 成都市华为赛门铁克科技有限公司 存储设备和数据存储方法
JP2012203957A (ja) 2011-03-25 2012-10-22 Toshiba Corp メモリシステム
CN103699491B (zh) * 2012-09-28 2017-05-10 群联电子股份有限公司 数据储存方法、存储器控制器与存储器储存装置
JP5870901B2 (ja) 2012-11-02 2016-03-01 ソニー株式会社 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9209835B2 (en) 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
KR102188061B1 (ko) 2014-07-29 2020-12-07 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작방법
CN104317753B (zh) * 2014-10-21 2017-09-22 中国科学院上海微系统与信息技术研究所 存储设备及其数据读写方法
CN105005536B (zh) * 2015-07-01 2019-08-06 忆正科技(武汉)有限公司 固态存储设备、主机的工作方法及固态存储设备、主机
US9524790B1 (en) 2015-08-02 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory cells wear reduction
KR102378541B1 (ko) 2015-11-27 2022-03-25 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102420588B1 (ko) 2015-12-04 2022-07-13 삼성전자주식회사 비휘발성 메모리 장치, 메모리 시스템, 비휘발성 메모리 장치의 동작 방법 및 메모리 시스템의 동작 방법
US10133627B2 (en) 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
US20180349287A1 (en) * 2017-06-02 2018-12-06 Dell Products L.P. Persistent Storage Device Information Cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100031000A1 (en) * 2007-12-06 2010-02-04 David Flynn Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US20160266970A1 (en) * 2015-03-09 2016-09-15 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
US20170269873A1 (en) * 2016-03-16 2017-09-21 Phison Electronics Corp. Memory management method, memory control circuit unit and memory storage device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113467705A (zh) * 2020-03-31 2021-10-01 西部数据技术公司 数据组块的增强读取

Also Published As

Publication number Publication date
CN109753441B (zh) 2024-06-04
CN109753441A (zh) 2019-05-14
KR102418856B1 (ko) 2022-07-07
US11074171B2 (en) 2021-07-27
US20190129839A1 (en) 2019-05-02

Similar Documents

Publication Publication Date Title
US9697116B2 (en) Storage system and writing method thereof
TWI741054B (zh) 儲存裝置及操作儲存裝置的方法
US8166258B2 (en) Skip operations for solid state disks
CN108804023B (zh) 数据存储装置及其操作方法
US8301861B2 (en) Startup reconstruction of logical-to-physical address translation data for solid state disks
TWI679537B (zh) 資料移動方法及儲存控制器
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
US10013307B1 (en) Systems and methods for data storage devices to use external resources
US8166233B2 (en) Garbage collection for solid state disks
TWI515565B (zh) 直接記憶體存取的方法及其固態磁碟機、電腦程式產品
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
EP3633517B1 (en) Storage device and method of operating storage device
KR20170087043A (ko) 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘
US9372741B2 (en) Data storage device and operating method thereof
US20140208044A1 (en) Semiconductor device and method of operating the same
CN109753441B (zh) 数据存储设备
KR20210041158A (ko) 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
TW201935232A (zh) 記憶體管理方法及使用所述方法的儲存控制器
TW201905701A (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器
KR20100111992A (ko) 플래시 메모리 저장 장치 및 그것을 포함한 컴퓨팅 시스템
US20240020226A1 (en) Data storage device, memory controller therefor, and operating method thereof
US20240012564A1 (en) Memory controller and storage device including the same
TWI686698B (zh) 邏輯轉實體表更新方法及儲存控制器
CN110633224A (zh) 逻辑转实体表更新方法及存储控制器
JP2014092973A (ja) メモリシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant