KR20180053027A - 스토리지 장치 및 그 동작 방법 - Google Patents

스토리지 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20180053027A
KR20180053027A KR1020160150332A KR20160150332A KR20180053027A KR 20180053027 A KR20180053027 A KR 20180053027A KR 1020160150332 A KR1020160150332 A KR 1020160150332A KR 20160150332 A KR20160150332 A KR 20160150332A KR 20180053027 A KR20180053027 A KR 20180053027A
Authority
KR
South Korea
Prior art keywords
block
task
command
page
read
Prior art date
Application number
KR1020160150332A
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 KR1020160150332A priority Critical patent/KR20180053027A/ko
Priority to US15/624,892 priority patent/US10445252B2/en
Publication of KR20180053027A publication Critical patent/KR20180053027A/ko

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/12Replacement control
    • 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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/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
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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

Landscapes

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

Abstract

본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 스토리지 장치의 커맨드 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하고, 스토리지 장치에 로딩된 맵핑 테이블을 기초로 제1 태스크가 접근할 제1 블록을 확인하며, 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 판단하고, 판단 결과에 따라 제1 태스크의 실행 순서를 결정한다.

Description

스토리지 장치 및 그 동작 방법{Storage device and method of operating the same}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 커맨드 큐(command queue) 기능을 지원하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 스토리지 장치의 신뢰성을 향상시킬 수 있는 방법 및 장치에 대한 요구가 지속적으로 제기되고 있다.
본 개시의 기술적 사상은 스토리지 장치의 신뢰도를 향상시킬 수 있는 스토리지 장치 및 상기 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 커맨드 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하는 단계, 상기 스토리지 장치에 로딩된 맵핑 테이블을 기초로 상기 제1 태스크가 접근할 제1 블록을 확인하는 단계, 상기 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 판단하는 단계, 및 상기 판단 결과에 따라 상기 제1 태스크의 실행 순서를 결정하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 커맨드 큐에 큐잉된 복수의 커맨드들 중 제1 커맨드를 선택하는 단계, 상기 스토리지 장치에 로딩된 맵핑 테이블을 기초로 상기 제1 커맨드가 접근할 제1 블록을 확인하는 단계, 및 상기 제1 블록에 대한 열화 정보를 기초로 상기 제1 커맨드의 실행 스케쥴을 조절하는 단계를 포함한다.
본 개시의 기술적 사상에 따르면, 태스크가 접근할 블록에 대한 열화 정보를 기초로 태스크의 실행 순서를 조절함으로써, 신뢰도가 떨어진 블록에 대한 접근을 지연시킬 수 있다. 이에 따라, 스토리지 장치에서 리드 동작의 수행 결과, 정정 불가능한 에러가 발생하는 것을 예방할 수 있고, 결과적으로, 스토리지 장치의 신뢰도를 향상시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 도 1의 스토리지 장치에 포함된 컨트롤러를 상세하게 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이다.
도 5는 본 개시의 일 실시예에 따라, 도 4의 커맨드 레지스터를 상세하게 나타내는 블록도이다.
도 6은 본 개시의 일 실시예에 따라, 도 4의 상태 레지스터를 상세하게 나타내는 블록도이다.
도 7은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다.
도 8은 본 개시의 일 실시예에 따른 리드 리클레임 동작을 나타낸다.
도 9a 및 도 9b는 본 개시의 일 실시예에 따라, 도 8의 리드/리클레임 큐의 구현 예들을 나타낸다.
도 10은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 11은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치의 동작을 나타내는 흐름도이다.
도 12는 도 11의 실시예에 따른, 스토리지 장치의 동작을 나타낸다.
도 13은 본 개시의 일 실시예에 따라, 도 2의 제2 구간에서, 호스트, 컨트롤러 및 비휘발성 메모리의 동작을 나타내는 흐름도이다.
도 14는 본 개시의 일 실시예에 따라, 도 13의 단계 S560 내지 S590에 따른 리드 리클레임 동작을 나타낸다.
도 15는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 16은 도 15의 실시예에 따른, 스토리지 장치의 동작을 나타낸다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 18a 및 도 18b는 도 17의 실시예에 따른, 스토리지 장치의 동작을 나타낸다.
도 19는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 20은 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템(10)을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(10)은 스토리지 장치(100) 및 호스트(200)를 포함하고, 스토리지 장치(100)는 컨트롤러(110) 및 비휘발성 메모리(120)를 포함할 수 있다. 커맨드 채널(101)을 통해, 커맨드(CMD)는 호스트(200)로부터 스토리지 장치(100)로 전송되고, 커맨드(CMD)에 대한 응답(RES)은 스토리지 장치(100)로부터 호스트(200)로 전송될 수 있다. 또한, 복수의 데이터 채널들(102)을 통해, 라이트 동작을 위한 데이터는 호스트(200)로부터 스토리지 장치(100)에 전송되고, 리드 동작을 위한 데이터는 스토리지 장치(100)로부터 호스트(200)에 전송될 수 있다.
컨트롤러(110)는 스케쥴러(111) 및 커맨드 큐(112a)를 포함할 수 있다. 컨트롤러(110)는 커맨드 채널(101)을 통해 호스트(200)로부터 복수의 커맨드들(CMD)을 순차적으로 수신할 수 있고, 수신된 복수의 커맨드들(CMD)은 커맨드 큐(112a)에 큐잉될 수 있다. 이에 따라, 스토리지 장치(100)는 이전에 수신된 커맨드(CMD)에 따른 동작의 실행 중에 신규 커맨드(CMD)를 수신하는 비동기식(asynchronous) 입출력 동작을 수행할 수 있고, 이로써, 스토리지 장치(100)의 동작 속도가 크게 향상될 수 있다. 이러한 스토리지 장치(100)는 큐잉 디바이스(queuing device)라고 지칭할 수 있으며, 이하에서 상술되는 본 개시의 실시예들은 커맨드 큐 기능을 지원하는 스토리지 장치들, 즉, 큐잉 디바이스들에 적용될 수 있다.
스케쥴러(111)는 커맨드 큐(112a)에 큐잉된 복수의 커맨드들(CMD)의 실행 순서를 결정할 수 있다. 구체적으로, 스케쥴러(111)는 복수의 커맨드들(CMD)이 접근할 블록들에 대한 열화 정보를 기초로, 복수의 커맨드들(CMD)의 실행 순서를 결정할 수 있다. 이와 같이, 스케쥴러(111)는 아웃오브오더 스케쥴링(out-of-order scheduling) 동작을 수행할 수 있고, 이에 따라, 복수의 커맨드들(CMD)은 커맨드 큐(112a)에 큐잉된 순서가 아니고, 스케쥴러(111)에서 결정된 순서에 따라 실행될 수 있다.
여기서, 커맨드(CMD)가 접근할 블록은, 비휘발성 메모리(120)에 포함된 복수의 메모리 블록들 중, 커맨드(CMD)에 따른 물리 어드레스가 가리키는 블록을 나타낸다. 일부 실시예들에서, 열화 정보는 블록 별로, 페이지 별로 또는 블록 및 페이지 별로 저장될 수 있다. 예를 들어, 열화 정보는 리드 횟수, 프로그램/소거 횟수, 리드된 데이터의 에러 비트 개수, 프로그램 경과 시간 정보, 및 동작 온도 정보 중 적어도 하나를 포함할 수 있다.
일 실시예에서, 컨트롤러(110)는 리드 리클레임(read reclaim, RR)/리플레이스먼트(replacement, RPM) 큐(112b)를 더 포함할 수 있다. 리드 리클레임/리플레이스먼트 큐(112b)는 블록 별로 및/또는 페이지 별로, 리드 리클레임 또는 리플레이스먼트 대상인지 여부를 나타내는 열화 정보를 저장할 수 있다. 스케쥴러(111)는 리드 리클레임/리플레이스먼트 큐(112b)를 기초로, 커맨드 큐(112a)에 큐잉된 복수의 커맨드들(CMD)의 실행 순서를 결정할 수 있다. 리드 리클레임/리플레이스먼트에 대한 상세한 설명은 도 8 내지 도 9b를 참조하여 후술하기로 한다.
비휘발성 메모리(120)는 메모리 셀 어레이(MCA)를 포함할 수 있다. 일 실시예에서, 메모리 셀 어레이(MCA)는 복수의 플래쉬 메모리 셀들을 포함할 수 있고, 예를 들어, 복수의 플래쉬 메모리 셀들은 낸드(NAND) 플래쉬 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 메모리 셀들은 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
일 실시예에서, 메모리 셀 어레이(MCA)는 3 차원(3D) 메모리 어레이일 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 본 개시의 기술적 사상에 의한 일 실시예에서, 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 버티칼 NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
미국 특허공개공보 제7,679,133호, 동 제8,553,466호, 동 제8,654,587호, 동 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3D 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들간에 공유되어 있는 3D 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있고, 스토리지 장치(100)의 데이터 처리 동작, 예를 들어, 데이터 리드 동작 또는 데이터 라이트 동작 등을 제어할 수 있다. 일 실시예에서, 호스트(200)는 CPU, 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP)일 수 있다. 일 실시예에서, 호스트(200)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다.
스토리지 시스템(10)은 예를 들어, PC(personal computer), 데이터 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT (Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 휴대용 전자 기기는, 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다.
일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는(embedded) 내부(internal) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 eMMC, SSD, 임베디드 UFS 메모리 장치일 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 착탈 가능한 외장(external) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 UFS 메모리 카드, CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick)일 수 있다.
도 2는 도 1의 스토리지 장치(100)에 포함된 컨트롤러(110)를 상세하게 나타내는 블록도이다.
도 2를 참조하면, 컨트롤러(110)는 스케쥴러(111), 메모리(112), 프로세서(113), 호스트 인터페이스(114) 및 비휘발성 메모리 인터페이스(115)를 포함할 수 있고, 이들은 버스(116)를 통해 서로 통신할 수 있다. 프로세서(113)은 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 컨트롤러(110)의 전반적인 동작을 제어할 수 있다.
스케쥴러(111)는 하드웨어, 소프트웨어 또는 펌웨어로 구현될 수 있다. 스케쥴러(111)가 소프트웨어 또는 펌웨어로 구현되는 경우, 스케쥴러(111)는 메모리(112)에 로딩될 수 있고, 프로세서(113)의 제어에 따라 동작할 수 있다. 메모리(112)는 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있고, 예를 들어, 메모리(112)는 DRAM, SRAM, PRAM 또는 플래시 메모리로 구현될 수 있다. 메모리(112)에는 커맨드 큐(112a), 리드 리클레임/리플레이스먼트 큐(112b) 및 맵핑 테이블(112c)이 로딩될 수 있다.
호스트 인터페이스(114)는 호스트(200)와 컨트롤러(110) 사이의 인터페이스를 제공할 수 있고, 예를 들어, USB(Universal Serial Bus), MMC, PCI-E(PCIExpress), ATA(AT Attachment), SATA(Serial AT Attachment), PATA(Parallel AT Attachment), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등에 따른 인터페이스를 제공할 수 있다. 비휘발성 메모리 인터페이스(115)는 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 열화 정보, 맵핑 테이블, 라이트 데이터 및 리드 데이터가 비휘발성 메모리 인터페이스(115)를 통해 컨트롤러(110)와 비휘발성 메모리(120) 사이에서 송수신될 수 있다.
도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 이하에서는, 도 1 내지 도 3을 함께 참조하여 스토리지 장치의 동작 방법을 설명하기로 한다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 커맨드의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 1의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 1 및 도 2를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있으며, 중복된 설명은 생략하기로 한다.
단계 S110에서, 커맨드 큐에 큐잉된 복수의 커맨드들 중 제1 커맨드를 선택한다. 예를 들어, 스케쥴러(111)는 커맨드 큐(112a)에 큐잉된 복수의 커맨드들 중 제1 커맨드를 선택할 수 있다. 일 실시예에서, 제1 커맨드는 리드 커맨드일 수 있다. 예를 들어, 스케쥴러(111)는 맵핑 테이블(112c)을 기초로 제1 커맨드를 선택할 수 있다. 비휘발성 메모리(120)는 복수의 맵핑 테이블들은 저장할 수 있고, 스토리지 장치(100)에 전원이 인가되면, 비휘발성 메모리(120)에 저장된 복수의 맵핑 테이블들 중 일부 맵핑 테이블이 메모리(112)에 로딩될 수 있다. 스케쥴러(111)는 커맨드 큐(112a)에 큐잉된 커맨드들 중, 커맨드에 따른 어드레스에 대응하는 맵핑 테이블이 메모리(112)에 로딩된 커맨드를 선택할 수 있다. 한편, 제1 커맨드는 라이트 커맨드일 수 있고, 스케쥴러(111)는 커맨드 큐(112a)에 큐잉된 복수의 라이트 커맨드들에 대해 큐잉된 순서에 따라 제1 커맨드를 선택할 수 있다.
단계 S130에서, 제1 커맨드가 접근할 제1 블록을 확인한다. 여기서, 제1 블록은 제1 커맨드가 접근할 물리 블록이며, 예를 들어, 스케쥴러(111)는 맵핑 테이블(112c)을 참조하여, 제1 커맨드가 접근할 물리 블록인 제1 블록을 확인할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 스케쥴러(111)는 맵핑 테이블(112c)을 참조하여, 제1 커맨드가 접근할 제1 페이지를 더 확인할 수 있다.
단계 S150에서, 제1 블록에 대한 열화 정보를 기초로 제1 커맨드의 실행 스케쥴을 조절한다. 일 실시예에서, 열화 정보는 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 여부를 나타내는 정보일 수 있다. 예를 들어, 스케쥴러(111)는 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상인 경우, 스케쥴러(111)는 제1 커맨드의 실행 순서를 지연시킬 수 있고, 커맨드 큐(112a)에 큐잉된 커맨드들 중 다른 커맨드를 선택할 수 있다. 한편, 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우, 스케쥴러(111)는 제1 커맨드에 대한 실행 요청을 호스트(200)에 전송할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 일 실시예에서, 열화 정보는 제1 블록이 소거 대상인지 여부를 나타내는 정보일 수 있다. 또한, 일 실시예에서, 열화 정보는 제1 블록에 대한 독출 횟수, 프로그램/소거 사이클, 에러 비트 정보 등을 포함할 수도 있다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치(100a)를 상세하게 나타내는 블록도이다.
도 4를 참조하면, 스토리지 장치(100a)는 컨트롤러(110a) 및 비휘발성 메모리(120)를 포함할 수 있고, 컨트롤러(110a)는 플래시 변환 계층(Flash Translation Layer, 이하 'FTL'로 지칭)(111a), 메모리(112), 호스트 인터페이스(114) 및 비휘발성 메모리 인터페이스(115)를 포함할 수 있다. 스토리지 장치(100a)는 도 1의 스토리지 장치(100)의 일 구현예에 대응하며, 컨트롤러(110a)는 도 2의 컨트롤러(110)의 일 구현예에 대응할 수 있다. 따라서, 도 1 및 도 2를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 본 실시예에서, 스토리지 장치(100a)는 eMMC 장치일 수 있다. 그러나, 본 발명은 이에 한정되지 않는다.
호스트 인터페이스(114)는 커맨드 디코더(114a), 태스크 매니저(114b), 커맨드 레지스터(114c) 및 상태 레지스터(114d)를 포함할 수 있다. 커맨드 디코더(114a)는 호스트(200)로부터 수신한 커맨드(CMD)를 디코딩하고, 디코딩된 커맨드 중 일부를 태스크 매니저(114b)에서 전달할 수 있다. 일 실시예에서, 커맨드 디코더(114a)는 디코딩된 커맨드가 태스크 설정/어드레스 커맨드인 경우, 디코딩된 커맨드를 태스크 매니저(114b)에 전달할 수 있다. 한편, 커맨드 디코더(114a)는 디코딩된 커맨드가 태스크 실행 커맨드인 경우, 디코딩된 커맨드를 FTL(111a)에 전달할 수 있다.
태스크 매니저(114b)는 커맨드 디코더(114a)로부터 커맨드(CMD)를 수신하고, 태스크 아이디 단위로 커맨드 레지스터(114c) 및 상태 레지스터(114d)를 관리할 수 있다. 커맨드 레지스터(114c)는 태스크 아이디 단위로 커맨드를 저장하고, 상태 레지스터(114d)는 커맨드 레지스터(114c)에 저장된 태스크의 상태를 저장한다. 또한, 태스크 매니저(114b)는 상태 레지스터(114d)를 통해 태스크 별 상태를 관리함으로써, 실행 준비가 완료된 태스크, 즉, 레디(ready)된 태스크에 대한 정보를 호스트(200)의 요청에 따라 또는 호스트(200)의 요청과 무관하게 호스트(200)에 알려줄 수 있다.
도 5는 본 개시의 일 실시예에 따라, 도 4의 커맨드 레지스터(114c)를 상세하게 나타내는 블록도이다.
도 4 및 도 5를 참조하면, 커맨드 레지스터(114c)는 제1 내지 제N 커맨드 레지스터들(CRa 내지 CRn)을 포함할 수 있고, 제1 내지 제N 커맨드 레지스터들(CRa 내지 CRn)은 제1 내지 제N 태스크들을 각각 저장할 수 있다. 여기서, N은 커맨드 레지스터들의 개수를 나타내며, 2 이상의 자연수이다. N은 멀티 큐 뎁쓰라고 정의할 수 있고, 컨트롤러(110a)는 멀티 큐 뎁쓰(N)만큼의 멀티 큐 커맨드를 호스트(200)로부터 수신하여 커맨드 레지스터들(CRa 내지 CRn)에 저장할 수 있다. 각 커맨드 레지스터(CRa 내지 CRn)는 태스크 아이디, 전송 방향 정보, 데이트 크기, 우선 순위 및 시작 어드레스를 포함하는 태스크 정보가 저장될 수 있다.
호스트(200)로부터 수신되는 커맨드는 순차적으로 커맨드 레지스터(114c)에 저장될 수 있으나, 저장되는 순서대로 태스크가 실행되는 것은 아니며, 스토리지 장치(100a)가 태스크의 실행 순서를 결정할 수 있다. 예를 들어, 태스크 정보에 포함된 우선 순위에 따라 태스크의 실행 순서가 변경될 수 있다. 본 실시예에 따르면, 태스크가 접근할 블록에 대한 열화 정보를 기초로 태스크의 실행 순서가 변경될 수 있다. 일 실시예예서, 스토리지 장치(100a)는 결정된 실행 순서에 따라 특정 태스크에 대한 실행을 호스트(200)에 요청할 수 있다. 일 실시예에서, 스토리지 장치(100a)는 결정된 실행 순서에 따라 특정 태스크가 레디 상태임을 호스트(200)에 알려줄 수 있다.
도 6은 본 개시의 일 실시예에 따라, 도 4의 상태 레지스터(114d)를 상세하게 나타내는 블록도이다.
도 4 내지 도 6을 참조하면, 상태 레지스터(114d)는 제1 내지 제N 커맨드 레지스터들(CRa 내지 CRn)에 저장된 제1 내지 제N 태스크들의 상태들을 저장할 수 있다. 구체적으로, 상태 레지스터(114d)는 각각 제1 내지 제N 태스크들의 상태를 나타내는 N비트의 상태 정보를 저장할 수 있다. 예를 들어, 제1 비트(예를 들어, LSB(Least Significant Bit))는 제1 태스크가 실행 준비가 완료된 상태(이하, "레디 상태"라고 지칭함)인지 또는 실행 준비가 완료되지 않은 상태(이하, "낫 레디 상태"라고 지칭함)인지 나타낼 수 있다. 예를 들어, 제N 비트(예를 들어, MSB(Most Significant Bit))는 제N 태스크가 레디 상태인지 또는 낫 레디 상태인지 나타낼 수 있다.
일 실시예에서, 상태 레지스터(114d)의 초기값은 모두 "0"일 수 있다. 제1 내지 제N 태스크들 중 어느 하나의 태스크가 레디 상태가 되면, 상태 레지스터(114d)의 해당 비트는 "1"로 변경될 수 있다. 일 실시예에서, FTL(111a)의 큐 매니저(1111)는 커맨드 큐(112a)에서 선택한 태스크를 레디 상태로 결정한 경우, 상태 레지스터(114d)의 해당 비트를 업데이트할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 태스크 매니저(114b)가 커맨드 레지스터(114c)에 저장된 태스크의 상태를 확인하여, 상태 레지스터(114d)의 해당 비트를 업데이트할 수도 있다.
도 7은 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100a) 사이의 동작을 나타내는 흐름도이다. 이하에서는, 도 4 내지 도 7을 함께 참조하여 스토리지 장치(100a)와 호스트(200)의 동작을 설명하기로 한다.
단계 S210에서, 호스트(200)는 제1 태스트(TASK1)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송한다. 예를 들어, 제1 태스크(TASK1)는 라이트 태스크일 수 있다. 데이터 채널(102)을 통해 이전 태스크에 대한 데이터가 전송되는 도중에도, 호스트(200)는 제1 태스트(TASK1)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 스토리지 장치(100a)의 커맨드 디코더(114a)는 제1 태스트(TASK1)에 대한 태스크 설정/어드레스 커맨드를 태스크 매니저(114b)에 전달하고, 태스크 매니저(114b)는 제1 태스트(TASK1)에 대한 태스크 정보를 커맨드 레지스터(114c)에 저장할 수 있다. 예를 들어, 제1 태스트(TASK1)에 대한 태스크 정보는 제1 커맨드 레지스터(CRa)에 저장될 수 있다.
예를 들어, 호스트(200)는 제1 태스크(TASK1)에 대한 태스크 설정 커맨드(예를 들어, CMD44)를 스토리지 장치(100a)로 전송하고, 이어서, 제1 태스크(TASK1)에 대한 어드레스 커맨드(예를 들어, CMD45)를 스토리지 장치(100a)로 전송한다. 그러나, 본 발명은 이에 한정되지 않으며, 하나의 커맨드, 예를 들어, 태스크 설정 커맨드(CMD44)에 어드레스 정보가 함께 포함될 수도 있다.
태스크 설정 커맨드(예를 들어, CMD44)는 태스크의 아이디 및 태스크의 동작 방향을 설정하는 커맨드이며, 동작 방향은 데이터의 전송 방향을 의미한다. 구체적으로, 태스크 설정 커맨드(예를 들어, CMD44)는 태스크 아이디, 데이터의 전송 방향을 나타내는 전송 방향 정보, 비휘발성 메모리(120)에 라이트할 데이터 또는 비휘발성 메모리(120)로부터 리드할 데이터의 사이즈를 지정하기 위한 사이즈 정보, 및 우선순위 정보 등을 포함할 수 있다.
태스크 어드레스 커맨드(예를 들어, CMD45)는 해당 태스크의 데이터의 시작 어드레스 정보를 포함할 수 있고, 시작 어드레스는 논리 어드레스일 수 있다. 예를 들어, 태스크가 "라이트 태스크"인 경우, 시작 어드레스 정보는 비휘발성 메모리(120)에 라이트할 데이터의 시작 어드레스를 지정하기 위한 정보일 수 있다. 또한, 예를 들어, 태스크가 "리드 태스크"인 경우 시작 어드레스 정보는 비휘발성 메모리로부터 리드할 데이터의 시작 어드레스를 지정하기 위한 정보일 수 있다.
단계 S215에서, 호스트(200)는 제2 태스트(TASK2)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송한다. 예를 들어, 제2 태스크(TASK2)는 리드 태스크일 수 있다. 스토리지 장치(100a)의 커맨드 디코더(114a)는 제2 태스트(TASK2)에 대한 태스크 설정/어드레스 커맨드를 태스크 매니저(114b)에 전달하고, 태스크 매니저(114b)는 제2 태스트(TASK2)에 대한 태스크 정보를 커맨드 레지스터(114c)에 저장할 수 있다. 예를 들어, 제2 태스트(TASK2)에 대한 태스크 정보는 제2 커맨드 레지스터(CRb)에 저장될 수 있다. 이와 같이, 호스트(200)는 제1 태스크(TASK1)에 대한 데이터를 스토리지 장치(100a)에 전송하거나 스토리지 장치(100a)로부터 전송 받기 전에, 다른 태스크인 제2 태스크(TASK2)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송할 수 있다.
단계 S220에서, 호스트(200)는 상태 레지스터(114d)에 저장된 상태를 체크하기 위한 상태 확인 커맨드(Q_CHECK)를 스토리지 장치(100a)에 전송한다. 상태 확인 커맨드는 커맨드 레지스터(114c)에 저장된 각 태스크의 준비 상태를 확인하기 위해 정의된 커맨드이다. 예를 들어, 상태 확인 커맨드는 SEND_STATUS 커맨드(CMD13)일 수 있다. 단계 S230에서, 스토리지 장치(100a)는 상태 확인 커맨드(Q_CHECK)에 응답하여 상태 응답 메시지(Q_STATUS)를 호스트(200)에 전송한다. 예를 들어, 상태 응답 메시지(Q_STATUS)는 제1 태스크(TASK1)가 레디 상태임을 나타낼 수 있다.
단계 S240에서, 호스트(200)는 제1 태스크(TASK1)에 대한 라이트 실행 커맨드(WCMD)를 스토리지 장치(100a)에 전송할 수 있다. 단계 S250에서, 호스트(200)는 제1 태스크(TASK1)에 관련된 라이트 데이터(WDATA)를 스토리지 장치(100a)에 전송할 수 있다. 스토리지 장치(100a)는 라이트 데이터(WDATA)를 수신하여 데이터 버퍼(112d)에 저장하고, 저장된 라이트 데이터(WDATA)를 비휘발성 메모리(120)에 프로그램할 수 있다.
단계 S260에서, 호스트(200)는 상태 레지스터(114d)에 저장된 상태를 체크하기 위한 상태 확인 커맨드(Q_CHECK)를 스토리지 장치(100a)에 전송한다. 단계 S260은 주기적 또는 비주기적으로 수행될 수 있다. 단계 S270에서, 스토리지 장치(100a)는 상태 확인 커맨드(Q_CHECK)에 응답하여 상태 응답 메시지(Q_STATUS)를 호스트(200)에 전송한다. 예를 들어, 상태 응답 메시지(Q_STATUS)는 제2 태스크(TASK2)가 레디 상태임을 나타낼 수 있다.
단계 S280에서, 호스트(200)는 제2 태스크(TASK2)에 대한 리드 실행 커맨드(RCMD)를 스토리지 장치(100a)에 전송할 수 있다. 단계 S290에서, 스토리지 장치(100a)는 제2 태스크(TASK2)에 관련된 리드 데이터(RDATA)를 호스트(200)에 전송할 수 있다. 구체적으로, 스토리지 장치(100a)는 비휘발성 메모리(120)로부터 리드 데이터(RDATA)를 리드하여 데이터 버퍼(112d)에 저장하고, 저장된 리드 데이터(RDATA)를 호스트(200)에 전송할 수 있다.
다시 도 4를 참조하면, FTL(111a)은 큐 매니저(1111), 리드 리클레임/리플레이스먼트 매니저(1112), 맵핑 매니저(1113) 및 입출력 매니저(1114)를 포함할 수 있다. 이와 같이, 도 1의 스케쥴러(111)는 FTL(111a)에 구현될 수 있다. 메모리(112)에는 커맨드 큐(112a), 리드 리클레임/리플레이스먼트 큐(112b), 맵핑 테이블(112c)이 로딩될 수 있고, 메모리(112)는 데이터 버퍼(112d)를 더 포함할 수 있다. 일 실시예에서, FTL(111a)은 메모리(112)에 로딩되어 프로세서(예를 들어, 도 2의 113)에 의해 실행될 수 있다. 일 실시예에서, FTL(111a)은 제1 메모리 칩에 로딩될 수 있고, 메모리(112)는 제2 메모리 칩일 수 있다.
큐 매니저(1111)는 커맨드 레지스터(114c)에 저장된 복수의 태스크들을, 메모리(112)의 커맨드 큐(112a)에 저장할 수 있다. 또한, 큐 매니저(1111)는 커맨드 큐(112a)에 큐잉된 복수의 태스크들 중 하나를 선택하고 선택된 태스크의 레디 여부를 결정할 수 있다. 일 실시예에서, 큐 매니저(1111)는 선택된 태스크가 접근할 블록에 대한 열화 정보를 기초로 선택된 태스크의 레디 여부를 결정할 수 있다. 나아가, 큐 매니저(1111)는 선택된 태스크를 레디 상태로 결정한 경우 상태 레지스터(114d)를 업데이트할 수 있다.
리드 리클레임/리플레이스먼트 매니저(1112)는 리드 리클레임/리플레이스먼트 큐(112b)를 관리할 수 있다. 일 실시예에서, 리드 리클레임/리플레이스먼트 큐(112b)는 블록 별로 리드 리클레임 또는 리플레이스먼트 대상인지 나타내는 정보를 저장할 수 있다. 일 실시예에서, 리드 리클레임/리플레이스먼트 큐(112b)는 블록 및 페이지 별로 리드 리클레임 또는 리플레이스먼트 대상인지 나타내는 정보를 저장할 수 있다. 리드 리클레임/리플레이스먼트 동작에 대해서는 도 8을 참조하여 후술하기로 한다.
맵핑 매니저(1112)는 맵핑 테이블(112c)을 관리할 수 있다. 맵핑 테이블(112c)은 호스트(200)로부터 수신한 논리 어드레스와 비휘발성 메모리(120)의 물리 어드레스에 대한 맵핑 정보를 저장할 수 있다. 일 실시예예서, 비휘발성 메모리(120)는 복수의 맵핑 테이블들을 저장하고, 스토리지 장치(100a)에 전원이 인가되면 비휘발성 메모리(120)에 저장된 복수의 맵핑 테이블들 중 일부가 매모리(112)에 로딩될 수 있다.
입출력 매니저(1114)는 라이트 태스크 실행 커맨드(예를 들어, CMD47)에 응답하여, 비휘발성 메모리(120)에 제공할 라이트 커맨드를 이슈할 수 있다. 또한, 입출력 매니저(1114)는 리드 태스크 실행 커맨드(예를 들어, CMD46)에 응답하여, 비휘발성 메모리(120)에 제공할 리드 커맨드를 이슈할 수 있다. 이때, 입출력 매니저(1114)는 맵핑 테이블(112c)을 참조하여 라이트 커맨드/리드 커맨드에 대응하는 물리 어드레스를 획득할 수 있다.
비휘발성 메모리 인터페이스(115)는 예를 들어, FIL(Flash Interface Layer)로 구현될 수 있다. 일 실시예에서, 비휘발성 메모리 인터페이스(115)는 ECC(Error Correction Code) 엔진(115a)을 포함할 수 있다. ECC 엔진(115a)은 비휘발성 메모리(120)로부터 리드된 데이터에 대해 에러 검출 및 정정을 수행할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, ECC 엔진(115a)은 비휘발성 메모리 인터페이스(115)에 포함되지 않고, 별도의 블록으로 구현될 수도 있다.
도 8은 본 개시의 일 실시예에 따른 리드 리클레임 동작을 나타낸다.
도 8을 참조하면, 컨트롤러(110a)는 예를 들어, 비휘발성 메모리(120)에 포함된 제1 블록(BLK0)의 제3 워드라인(WL2)에 해당하는 제3 페이지(PAGE2)로부터 데이터(DATA)를 읽을 수 있다. ECC 엔진(115a)은 데이터(DATA)의 에러 비트를 검출하고, 검출된 에러 비트에 대한 에러 비트 정보(Error Bit Information)(EBI)를 리드 리클레임/리플레이스먼트 매니저(1113)에 제공할 수 있다. 또한, ECC 엔진(115a)는 검출된 에러 비트의 개수가 제1 기준 값 미만인 경우 에러 비트를 정정할 수 있고, 에러가 정정된 데이터(DATA_cor)를 데이터 버퍼(112d)에 제공할 수 있다. 한편, ECC 엔진(115a)은 검출된 에러 비트의 개수가 제1 기준 값 이상인 경우 정정 불가능한 에러(Uncorrectable Error, 이하 "UNCOR"로 지칭함)가 발생한 것으로 판단할 수 있다. 리드 디스터브 현상에 기인하여 메모리 셀들의 문턱 전압이 변화되면, 검출된 에러 비트의 개수가 제1 기준 값 이상일 수 있고, 이에 따라, 정정 불가능한 에러(UNCOR)가 발생할 수 있다.
리드 리클레임/리플레이스먼트 매니저(1113)는 검출된 에러 비트의 개수가 제1 기준 값 이상인 경우 제1 블록(BLK0)을 리플레이스먼트 대상으로 결정할 수 있다. 검출된 에러 비트의 개수가 제1 기준 값 이상인 경우 제1 블록(BLK0)은 정정 불가능한 에러(UNCOR)가 발생한 블록으로 볼 수 있다. 여기서, "리플레이스먼트"는 제1 블록(BLK0)에 저장된 데이터를 예비(reserved) 블록(또는 spare 블록)으로 옮기고, 데이터가 옮겨진 예비 블록을 제1 블록(BLK0) 대신 사용하는 동작을 지칭한다. 구체적으로, 제1 블록(BLK0)에 저장된 유효 페이지들을 리드하고, 리드된 유효 페이지들을 예비 블록에 프로그램할 수 있다. 이에 따라, 맵핑 테이블에서 블록 주소는 변경되지 않지만, 제1 블록(BLK0) 내의 유효 페이지의 개수에 따라 페이지 주소가 변경될 수 있다.
또한, 리드 리클레임/리플레이스먼트 매니저(1113)는 검출된 에러 비트의 개수가 제1 기준 값 미만이지만 제2 기준 값 이상인 경우, 제1 블록(BLK0)을 리드 리클레임 대상으로 결정할 수 있다. 이때, 제2 기준 값은 제1 기준 값보다 작은 임의의 자연수일 수 있다. 검출된 에러 비트의 개수가 제1 기준 값 미만이지만 제2 기준 값 이상인 경우 제1 블록(BLK0)은 정정 불가능한 에러(UNCOR)는 아니지만, 정정이 필요할 정도로 신뢰도가 떨어진 블록으로 볼 수 있다. 여기서, "리드 리클레임"은 제1 블록(BLK0)의 데이터를 다른 블록으로 옮기고, 제1 블록(BLK0)을 삭제하여 재사용하는 동작을 지칭한다. 구체적으로, 제1 블록(BLK0)에 저장된 유효 페이지들을 리드하고, 리드된 유효 페이지들을 다른 블록인 제2 블록에 프로그램할 수 있다. 이에 따라, 맵핑 테이블에서 블록 주소는 제2 블록으로 변경되고, 제1 블록(BLK0) 내의 유효 페이지의 개수에 따라 페이지 주소도 변경될 수 있다.
그러나, 본 발명은 이에 한정되지 않으며, 일부 실시예들에서, 컨트롤러(110a)는 리드 리클레임/리플레이스먼트 매니저(1113) 대신 리드 리클레임 매니저를 포함할 수 있고, 리드 리클레임 매니저는 에러 비트 정보(EBI)에 따라 리드 리클레임 동작만을 관리할 수 있다. 또한, 일부 실시예들에서, 컨트롤러(110a)는 리드 리클레임/리플레이스먼트 매니저(1113) 대신 리플레이스먼트 매니저를 포함할 수 있고, 리플레이스먼트 매니저는 에러 비트 정보(EBI)에 따라 리플레이스먼트 동작만을 관리할 수 있다.
이러한 리드 리클레임/리플레이스먼트 동작의 수행을 위해서는 데이터 이동 과정이 필수적이며, 소스 블록, 즉, 제1 블록(BLK0)의 유효 페이지 개수에 따라 데이터 이동 시간이 길어질 수 있다. 제1 블록(BLK0)에 저장된 유효 페이지들을 한번에 이동할 경우, 데이터 이동 중에 이슈된 커맨드에 대한 응답 시간이 길어질 수 있기 때문에, 제1 블록(BLK0)에 저장된 유효 페이지들을 하나씩 이동하는 인크리멘털(incremental) 리드 리클레임/리플레이스먼트를 수행할 수 있다. 이에 따라, 리드 리클레임/리플레이스먼트 중에 복수의 리드 커맨드들이 이슈될 수 있고, 복수의 리드 커맨드들 중 적어도 하나가 제1 블록(BLK0)에 대한 것이면, 제1 블록(BLK0)이 계속해서 리드 스트레스를 받아서 제1 블록(BLK0)에 정정 불가능한 오류(UNCOR)가 발생할 수 있다.
도 9a 및 도 9b는 본 개시의 일 실시예에 따라, 도 8의 리드 리클레임/리플레이스먼트 큐(112b)의 구현 예들(112b', 112b")을 나타낸다.
도 9a를 참조하면, 리드 리클레임/리플레이스먼트 큐(112b')는 물리 블록 별로 리드 리클레임 또는 리플레이스먼트 대상인지 여부를 나타내는 정보를 저장할 수 있다. 예를 들어, 리드 리클레임/리플레이스먼트 큐(112b')는 물리 블록 별로 2비트 정보를 관리할 수 있고, 이때, LSB는 리플레이스먼트 여부를 나타내고, MSB는 리드 리클레임 여부를 나타낼 수 있다. 예를 들어, 제1 물리 블록(PBN0)에 대응하는 비트 정보는 "10"일 수 있고, 이에 따라, 제1 물리 블록(PBN0)은 리드 리클레임 대상이고, 리플레이스먼트 대상이 아닐 수 있다.
도 9b를 참조하면, 리드 리클레임/리플레이스먼트 큐(112b")는 물리 블록 및 페이지를 포함하는 물리 주소 별로 리드 리클레임 또는 리플레이스먼트 대상인지 여부를 나타내는 정보를 저장할 수 있다. 예를 들어, 리드 리클레임/리플레이스먼트 큐(112b")는 각 페이지 별로 2비트 정보를 관리할 수 있고, 이때, LSB는 리플레이스먼트 여부를 나타내고, MSB는 리드 리클레임 여부를 나타낼 수 있다. 예를 들어, 제1 블록의 제1 페이지를 나타내는 물리 주소 (0, 0)에 대응하는 비트 정보는 "10"일 수 있고, 이에 따라, 제1 블록의 제1 페이지는 리드 리클레임 대상이고, 리플레이스먼트 대상이 아닐 수 있다.
그러나, 본 발명은 도 9a 및 도 9b에 예시된 실시예에 한정되지 않으며, 일부 실시예들에서, 컨트롤러(110a)는 리드 리클레임 큐와 리플레이스먼트 큐를 각각 포함할 수 있고, 일부 실시예들에서, 컨트롤러(110a)는 리드 리클레임 큐 또는 리플레이스먼트 큐만을 포함할 수도 있다. 리드 리클레임 큐는 물리 블록 별로 또는 페이지 별로 리드 리클레임 대상인지 여부를 나타내는 1 비트 정보를 저장하고, 리플레이스먼트 큐는 물리 블록 별로 또는 페이지 별로 리플레이스먼트 대상인지 여부를 나타내는 1 비트 정보를 저장할 수 있다.
도 10은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 10을 참조하면, 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 4 내지 도 9b를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
단계 S310에서, 커맨드 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택한다. 예를 들어, 큐 매니저(1111)는 커맨드 큐(112a)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택할 수 있다. 일 실시예에서, 제1 태스크는 리드 태스크일 수 있다. 구체적으로, 큐 매니저(1111)는 태스크 정보에 포함된 우선 순위, 맵핑 테이블(112c)에 대응하는 맵핑 정보가 포함되었는지 여부 등을 기초로 제1 태스크를 선택할 수 있다.
단계 S330에서, 제1 태스크가 접근할 제1 블록을 확인한다. 예를 들어, 큐 매니저(1111)는 맵핑 테이블(112c)를 참조하여, 제1 태스크가 접근할 논리 주소에 맵핑되는 물리 주소를 확인할 수 있다. 일 실시예에서, 물리 주소는 물리 블록 번호를 포함할 수 있고, 이에 따라, 제1 블록을 확인할 수 있다. 일 실시예에서, 물리 주소는 물리 블록 번호 및 페이지 번호를 포함할 수 있고, 이에 따라, 제1 블록 및 제1 페이지를 확인할 수 있다.
단계 S350에서, 제1 블록에 대한 열화 정보를 기초로 제1 태스크의 레디 여부를 결정한다. 예를 들어, 큐 매니저(1111)는 리드 리클레임/리플레이스먼트 큐(112c)를 참조하여, 제1 태스크의 레디 여부를 결정할 수 있다. 구체적으로, 큐 매니저(1111)는 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상이면 제1 태스크의 실행을 지연시키고 제2 태스크를 선택할 수 있다. 한편, 큐 매니저(1111)는 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상이 아니면 제1 태스크를 레디 상태로 결정하고, 상태 레지스터(114d)를 업데이트할 수 있다.
도 11은 본 개시의 일 실시예에 따른 호스트(200)와 스토리지 장치(100a)의 동작을 나타내는 흐름도이다.
도 4 및 도 11을 참조하면, 단계 S400에서, 호스트(200)는 신규 태스크(TASK_new)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송한다. 스토리지 장치(100a)의 커맨드 디코더(114a)는 신규 태스크(TASK_new)에 대한 태스크 설정/어드레스 커맨드를 태스크 매니저(114b)에 전달하고, 태스크 매니저(114b)는 신규 태스크(TASK_new)에 대한 태스크 정보를 커맨드 레지스터(114c)에 저장할 수 있다.
단계 S410에서, 스토리지 장치(100a)는 새로 큐잉된 태스크를 확인한다. 구체적으로, 큐 매니저(1111)는 커맨드 레지스터(114c)에 새로 큐잉된 태스크 또는 커맨드 큐(112a)에 새로 큐잉된 태스크, 예를 들어, 신규 태스크(TASK_new)를 확인할 수 있다. 단계 S420에서, 스토리지 장치(100a)는 복수의 태스크들 중 하나를 선택한다. 구체적으로, 큐 매니저(1111)는 커맨드 큐(112a)에 큐잉된 복수의 태스크들 또는 커맨드 레지스터(114c)에 저장된 복수의 태스크들 중 하나를 선택할 수 있다. 단계 S430에서, 스토리지 장치(100a)는 선택된 태스크가 접근할 블록을 확인한다. 구체적으로, 큐 매니저(1111)는 맵핑 테이블(112c)을 참조하여 선택된 태스크가 접근할 물리 블록을 확인할 수 있다.
단계 S440에서, 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 판단한다. 구체적으로, 큐 매니저(1111)는 리드 리클레임/리플레이스먼트 큐(112b)을 참조하여 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 판단할 수 있다. 판단 결과, 블록이 리드 리클레임 또는 리플레이스먼트 대상인 경우 단계 S450을 수행한다. 단계 S450에서, 다른 태스크를 선택한다. 구체적으로, 큐 매니저(1111)는 커맨드 큐(112a)에 큐잉된 복수의 태스크들 또는 커맨드 레지스터(114c)에 저장된 복수의 태스크들 중 다른 태스크를 선택하고, 단계 S430을 수행할 수 있다.
한편, 블록이 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우 단계 S460을 수행한다. 단계 S460에서, 선택된 태스크를 레디 상태로 결정한다. 단계 S470에서, 상태 레지스터를 업데이트한다. 구체적으로, 큐 매니저(1111)는 선택된 태스크를 레디 상태로 결정하고, 상태 레지스터(114d)에서 선택된 태스크에 대응하는 비트를 0에서 1로 변경할 수 있다.
단계 S480에서, 호스트(200)는 상태 레지스터(114d)에 저장된 상태를 체크하기 위한 상태 확인 커맨드(Q_CHECK)를 스토리지 장치(100a)에 전송한다. 단계 S480의 수행 시점은 단계 S470 이후로 한정되지 않으며, 단계 S480은 단계 S400과 단계 S490 사이의 임의의 시점에 수행될 수 있다. 단계 S490에서, 스토리지 장치(100a)는 상태 확인 커맨드(Q_CHECK)에 응답하여 상태 응답 메시지(Q_STATUS)를 호스트(200)에 전송한다. 예를 들어, 상태 응답 메시지(Q_STATUS)는 선택된 태스크(TASK_sel)가 레디 상태임을 나타낼 수 있다.
도 12는 도 11의 실시예에 따른, 스토리지 장치(100a)의 동작을 나타낸다.
도 4, 도 11 및 도 12를 참조하면, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들은 리드 태스크들일 수 있다. 예를 들어, 태스크 A 내지 태스크 D는 비휘발성 메모리(NVM)의 제1 블록(BLK0)에 접근할 태스크들이고, 태스크 H 내지 태스크 K는 비휘발성 메모리(NVM)의 제2 블록(BLK1)에 접근할 태스크들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 커맨드 큐(CQ)에는 리드 태스크들 및 라이트 태스트들이 큐잉될 수 있다. 본 실시예에 따르면, 스토리지 장치(100a)는, 태스크가 접근할 블록 및 상기 블록의 열화 정보를 기초로, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 하나를 선택하고, 선택된 태스크를 레디 상태로 결정할 수 있다.
커맨드(CMD)는 스토리지 장치(100a)의 컨트롤러(110a)에서 비휘발성 메모리(NVM)에 제공되는 커맨드일 수 있다. 구체적으로, 호스트(200)는 레디 상태의 태스크에 대한 실행 커맨드를 스토리지 장치(100a)에 전송하고, 컨트롤러(110a)는 실행 커맨드에 응답하여 커맨드(CMD)를 비휘발성 메모리(NVM)에 제공함으로써 스토리지 장치(100a)는 태스크를 실행할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 커맨드(CMD)는 호스트(200)에서 스토리지 장치(100a)에 제공되는 커맨드일 수도 있다. 이하에서는, 각 구간 별 동작에 대해 상세하게 설명하기로 한다.
제1 구간(121)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 A를 선택할 수 있다. 스토리지 장치(100a)는 선택된 태스크 A를 레디 상태로 결정할 수 있고, 호스트(200)는 태스크 A에 대한 실행 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 스토리지 장치(100a)는 태스크 A에 대한 실행 커맨드에 응답하여, 태스크 A에 대한 리드 동작을 수행할 수 있다.
페이지 A에 대한 리드 동작의 수행 결과, 페이지 A에서 리드 리클레임이 발생할 수 있다. 이때, 페이지 A에 인접한 페이지 B 및 페이지 C도 리드 스트레스를 받은 상황일 수 있다. 따라서, 제1 블록(BLK0)은 리드 리클레임 대상이 되고, 제1 블록(BLK0)에 포함된 유효 페이지들을 프리 블록인 제3 블록(BLK2)으로 순차적으로 이동하는 인크리멘털 리드 리클레임을 수행해야 한다. 제1 블록(BLK0)은 네 개의 유효 페이지들(즉, 페이지 A 내지 페이지 D)을 포함하므로, 제1 블록(BLK0)에 대한 인크리멘털 리드 리클레임은 제2 내지 제5 구간들(122 내지 125)에 걸쳐 수행될 수 있다.
만약 제2 구간(122)에서 페이지 A를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하는 도중에, 태스크 B를 선택하여 페이지 B에 대한 리드 동작을 수행하면, 페이지 D도 리드 스트레스를 받을 수 있다. 이어서, 제3 구간(123)에서 페이지 B를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하는 도중에, 태스크 C를 선택하여 페이지 C에 대한 리드 동작을 수행하면, 페이지 C 및 페이지 D에서 리드 리클레임이 발생할 수 있다. 이어서, 제4 구간(124)에서 페이지 C를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하는 도중에, 태스크 D를 선택하여 페이지 D에 대한 리드 동작을 수행하면, 페이지 D를 제3 블록(BLK2)으로 옮기기 전에 페이지 D에 대해 정정 불가능한 에러(UNCOR)가 발생할 수 있다.
따라서, 본 실시예에 따르면, 스토리지 장치(100a)는 페이지 A에서 리드 리클레임이 발생하면 페이지 A를 포함하는 제1 블록(BLK0)을 리드 리클레임 대상 또는 리플레이스먼트 대상으로 결정하고, 리드 리클레임/리플레이스먼트 큐(112b)를 업데이트할 수 있다. 또한, 본 실시예에 따르면, 스토리지 장치(100a)는 리드 리클레임 또는 리플레이스먼트 대상인 블록에 접근할 태스크의 실행 순서를 지연시키고, 리드 리클레임 또는 리플레이스먼트 대상이 아닌 블록에 접근할 태스크가 먼저 실행되도록, 상태 레지스터(114d)를 업데이트할 수 있다. 그러므로, 제1 블록(BLK0)에 접근할 태스크 B 내지 태스크 D의 실행 순서를 지연시키고, 제2 블록(BLK1)에 접근할 태스크 H 내지 태스크 K가 먼저 실행되도록, 태스크 H 내지 태스크 K를 먼저 레디 상태로 결정할 수 있다.
본 실시예에 따르면, 제2 구간(122)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 H를 선택할 수 있다. 태스크 H가 접근할 블록은 리드 리클레임 대상이 아닌 제2 블록(BLK1)이므로, 스토리지 장치(100a)는 선택된 태스크 H를 레디 상태로 결정할 수 있고, 호스트(200)는 태스크 H에 대한 실행 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 스토리지 장치(100a)는 태스크 H에 대한 실행 커맨드에 응답하여, 페이지 H에 대한 리드 동작을 수행할 수 있다. 이에 따라, 제2 구간(122)에서, 페이지 A는 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 H가 리드될 수 있다. 이하에서는 도 13 및 도 14를 참조하여 제2 구간(122)에서의 스토리지 장치(100a)의 동작에 대해 더욱 상세하게 설명하기로 한다.
도 13은 본 개시의 일 실시예에 따라, 도 12의 제2 구간(122)에서, 호스트(200), 컨트롤러(110a) 및 비휘발성 메모리(120)의 동작을 나타내는 흐름도이다. 이하에서는, 도 4, 도 11 내지 도 13을 함께 참조하여 설명하기로 한다.
단계 S510에서, 호스트(200)는 컨트롤러(110a)에 상태 확인 커맨드(Q_CHECK)를 전송한다. 실시예에 따라, 단계 S510은 제2 구간(122)이 시작되기 전에 수행될 수도 있다. 단계 S515에서, 컨트롤러(110a)는 호스트(200)에 태스크 H가 레디 상태임을 나타내는 레디 신호(READY) 또는 상태 응답 메시지를 전송한다. 구체적으로, 큐 매니저(1111)는 태스크 H를 레디 상태로 결정하고, 상태 레지스터(114d)를 업데이트할 수 있다. 태스크 매니저(114b)는 상태 레지스터(114d)의 업데이트된 상태를 확인하고, 태스크 H가 레디 상태임을 상태 응답 메시지를 제공할 수 있다. 단계 S520에서, 호스트(200)는 컨트롤러(110a)에 태스크 H에 대한 리드 태스크 실행 커맨드(RCMD)를 전송한다. 단계 S525에서, 컨트롤러(110a)는 호스트(200)에 응답 메시지를 전송한다.
단계 S530에서, 컨트롤러(110a)는 비휘발성 메모리(120)에 페이지 H에 대한 리드 커맨드를 전송한다. 구체적으로, 입출력 매니저(1114)는 리드 태스크 실행 커맨드(RCMD)에 응답하여, 페이지 H에 대한 리드 커맨드를 이슈할 수 있다. 단계 S540에서, 비휘발성 메모리(120)는 페이지 H에 대한 리드 동작을 수행한다. 단계 S545에서, 비휘발성 메모리(120)는 리드 데이터(RDATA)를 컨트롤러(110a)에 전송한다. 이때, ECC 엔진(115a)은 리드 데이터(RDATA)에 대해 에러 검출 및 정정을 수행할 수 있고, 리드 데이터(RDATA) 또는 정정된 데이터를 데이터 버퍼(112d)에 제공할 수 있다. 단계 S550에서, 컨트롤러(110a)는 리드 데이터(RDATA)를 호스트(200)에 전송한다.
이어서, 단계 S560 내지 단계 S590에서, 페이지 A에 대한 리드 리클레임 동작을 수행한다. 이때, 리드 리클레임 동작은 백그라운드 동작으로 수행될 수 있다. 실시예에 따라, 단계 S560 내지 단계 S590이 먼저 수행되고, 이어서, 단계 S530 내지 단계 S550이 수행될 수도 있다. 또한, 실시예에 따라, 단계 S560 내지 단계 S575가 먼저 수행되고, 이어서, 단계 S530 내지 단계 S545가 수행되고, 이어서, 단계 S580 및 S590이 수행될 수도 있다.
도 14는 본 개시의 일 실시예에 따라, 도 13의 단계 S560 내지 S590에 따른 리드 리클레임 동작을 나타낸다. 이하에서는, 도 13 및 도 14를 함께 참조하여 단계 S560 내지 S590을 설명하기로 한다.
단계 S560에서, 컨트롤러(110a)는 페이지 A에 대한 리드 커맨드를 전송한다. 페이지 A의 리드를 위한 물리 주소는 제1 블록(BLK0)의 제4 워드라인(WL3)일 수 있다. 이때, 컨트롤러(110a)는 페이지 A의 물리 주소를 비휘발성 메모리(120)에 전송할 수 있다. 단계 S570에서, 비휘발성 메모리(120)는 제1 블록(BLK0)의 제4 워드라인(WL3)으로부터 데이터 리드 동작을 수행한다. 단계 S575에서, 비휘발성 메모리(120)는 리드된 데이터를 컨트롤러(110a)에 전송한다. 이때, 리드된 데이터는 컨트롤러(110a) 내의 데이터 버퍼(112d)에 저장될 수 있다.
단계 S580에서, 컨트롤러(110a)는 페이지 A에 대한 라이트 커맨드를 전송한다. 페이지 A의 라이트를 위한 물리 주소는 제3 블록(BLK2)의 제4 워드라인(WL3)일 수 있다. 이때, 컨트롤러(110a)는 페이지 A의 물리 주소 및 데이터 버퍼(112d)에 저장된 데이터를 비휘발성 메모리(120)에 전송할 수 있다. 단계 S590에서, 비휘발성 메모리(120)는 데이터를 제3 블록(BLK2)의 제4 워드라인(WL3)에 데이터 라이트 동작을 수행한다.
다시 도 12를 참조하면, 제3 구간(123)에서, 커맨드 큐(CQ)에 큐잉된 태스크들 중 태스크 I를 선택할 수 있고, 이에 따라, 제3 구간(123)에서, 페이지 B는 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 I가 리드될 수 있다. 제4 구간(124)에서, 커맨드 큐(CQ)에 큐잉된 태스크들 중 태스크 J를 선택할 수 있고, 이에 따라, 제4 구간(124)에서, 페이지 C는 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 J가 리드될 수 있다. 제5 구간(125)에서, 커맨드 큐(CQ)에 큐잉된 태스크들 중 태스크 K를 선택할 수 있고, 이에 따라, 제5 구간(125)에서, 페이지 D는 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 K가 리드될 수 있다.
제2 내지 제5 구간들(122 내지 125)에 걸쳐 제1 블록(BLK0)에 대한 인크리멘털 리드 리클레임이 완료되면, 맵핑 테이블(122c)이 업데이트될 수 있다. 구체적으로, 맵핑 테이블(122c)에서, 태스크 B 내지 태스크 D가 접근할 블록의 물리 주소는 제3 블록(BLK2)으로 변경될 수 있다. 제6 내지 제8 구간들(126 내지 128)에서는, 태스크 B 내지 태스크 D가 순차적으로 선택될 수 있고, 이에 따라, 제3 블록(BLK2)의 페이지 B 내지 페이지 D가 순차적으로 리드될 수 있다.
이와 같이, 본 실시예에 따르면, 제1 블록(BLK0)에 대한 리드 리클레임 도중에 제1 블록(BLK0)에 대한 접근할 태스크들의 실행 순서를 지연시킴으로써, 제1 블록(BLK0)에 대한 리드 동작이 수행되지 않을 수 있다. 이로써, 제1 블록(BLK0)에 포함된 페이지들은 더 이상 리드 스트레스를 받지 않을 수 있고, 이에 따라, 정정 불가능한 에러가 발생하지 않을 수 있다. 결과적으로, 스토리지 장치(100a)의 신뢰도가 향상될 수 있다.
도 15는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 15를 참조하면, 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 또한, 본 실시예는 도 11의 변형 실시예에 대응할 수 있고, 도 11 내지 도 14를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
단계 S610에서, 새로 큐잉된 태스크들을 확인한다. 예를 들어, 큐 매니저(1111)는 커맨드 레지스터(114c)에 새로 큐잉된 태스크들 또는 커맨드 큐(112a)에 새로 큐잉된 태스크들을 확인할 수 있다. 단계 S620에서, 커맨드 큐에 큐잉된 복수의 태스크들 중 하나를 선택한다. 예를 들어, 큐 매니저(1111)는 커맨드 큐(112a)에 큐잉된 복수의 태스크들 또는 커맨드 레지스터(114c)에 저장된 복수의 태스크들 중 하나를 선택할 수 있다. 단계 S630에서, 선택된 태스크가 접근할 블록 및 페이지를 확인한다. 예를 들어, 큐 매니저(1111)는 맵핑 테이블(112c)을 참조하여 선택된 태스크가 접근할 물리 블록 및 물리 페이지를 확인할 수 있다.
단계 S640에서, 블록이 소거 또는 리플레이스먼트 대상인지 확인한다. 큐 매니저(1111)는 리드 리클레임/리플레이스먼트 큐(112b)을 참조하여 블록이 소거 또는 리플레이스먼트 대상인지 판단할 수 있다. 판단 결과, 블록이 소거 또는 리플레이스먼트 대상인 경우 단계 S650을 수행한다. 한편, 블록이 소거 또는 리플레이스먼트 대상이 아닌 경우 단계 S670을 수행한다.
단계 S660에서, 접근할 페이지가 다른 블록에 프로그램되었는지 확인한다. 판단 결과, 접근할 페이지가 이미 다른 블록에 프로그램된 경우 단계 S670을 수행한다. 단계 S670에서, 선택된 태스크를 레디 상태로 결정한다. 예를 들어, 큐 매니저(1111)는 선택된 태스크를 레디 상태로 결정하고, 상태 레지스터(114d)에서 선택된 태스크에 대응하는 비트를 0에서 1로 변경할 수 있다.
한편, 접근할 페이지가 아직 다른 블록에 프로그램되지 않은 경우 단계 S660을 수행한다. 단계 S660에서, 다른 태스크를 선택한다. 예를 들어, 큐 매니저(1111)는 커맨드 큐(112a)에 큐잉된 복수의 태스크들 또는 커맨드 레지스터(114c)에 저장된 복수의 태스크들 중 다른 태스크를 선택하고, 단계 S630을 수행할 수 있다.
본 실시예에 따르면, 커맨드 큐(1111)에 선택된 태스크가 접근할 페이지가 이미 다른 블록에 프로그램되었으면, 선택된 태스크를 레디 상태로 결정할 수 있다. 이에 따라, 먼저 큐잉된 태스크에 대한 실행 순서가 지나치게 지연되는 것을 방지할 수 있고, 결과적으로, 스토리지 장치(100a)에 대한 동작 성능을 향상시킬 수 있다.
도 16은 도 15의 실시예에 따른, 스토리지 장치(100a)의 동작을 나타낸다. 이하에서는 도 4, 도 15 및 도 16을 참조하여 상술하기로 한다. 도 16은 도 12의 변형 예에 대응하므로, 중복된 설명은 생략하기로 한다.
제1 구간(161)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 A를 선택할 수 있고, 태스크 A에 해당하는 페이지 A에 대한 리드 동작을 수행할 수 있다. 페이지 A에 대한 리드 동작의 수행 결과, 페이지 A에서 리드 리클레임이 발생할 수 있다. 따라서, 제1 블록(BLK0)은 리드 리클레임 대상이 되고, 제1 블록(BLK0)에 포함된 유효 페이지들을 프리 블록인 제3 블록(BLK2)으로 순차적으로 이동하는 인크리멘털 리드 리클레임을 수행해야 한다. 제1 블록(BLK0)은 네 개의 유효 페이지들(즉, 페이지 A 내지 페이지 D)을 포함하므로, 제1 블록(BLK0)에 대한 인크리멘털 리드 리클레임은 제2 내지 제5 구간들(162 내지 165)에 걸쳐 수행될 수 있다.
본 실시예에 따르면, 제2 구간(162)에서, 커맨드 큐(CQ)에 큐잉된 태스크들 중 태스크 H를 선택할 수 있다. 이에 따라, 제2 구간(162)에서, 페이지 A를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 H가 리드될 수 있고, 이때, 제1 블록(BLK0)에 포함된 페이지들이 리드 스트레스를 받지 않을 수 있다. 이어서, 제3 구간(163)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 I를 선택할 수 있다. 이에 따라, 제3 구간(163)에서, 페이지 B를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 I가 리드될 수 있고, 이때, 제1 블록(BLK0)에 포함된 페이지들이 리드 스트레스를 받지 않을 수 있다.
페이지 B가 제3 블록(BLK2)으로 이동함에 따라, 맵핑 테이블(112c)에서 페이지 B에 대응하는 물리 주소는 제3 블록(BLK2)의 제3 워드라인으로 변경될 수 있다. 이와 같이, 페이지 B가 제3 블록(BLK2)에 프로그램됨에 따라 페이지 B는 더 이상 소거 대상 또는 리플레이스먼트 대상 블록인 제1 블록(BLK0)에 포함되지 않을 수 있다. 따라서, 본 실시예에 따르면, 제4 구간(164)에서, 커맨드 큐(CQ)에 큐잉된 태스크들 중 태스크 B를 선택할 수 있다. 이에 따라, 제4 구간(164)에서, 페이지 C를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 B가 제3 블록(BLK2)으로부터 리드될 수 있고, 이때, 제1 블록(BLK0)에 포함된 페이지들이 리드 스트레스를 받지 않을 수 있다.
또한, 페이지 C가 제3 블록(BLK2)으로 이동함에 따라, 맵핑 테이블(112c)에서 페이지 C에 대응하는 물리 주소는 제3 블록(BLK2)의 제2 워드라인으로 변경될 수 있다. 이와 같이, 페이지 C가 제3 블록(BLK2)에 프로그램됨에 따라 페이지 C는 더 이상 소거 대상 또는 리플레이스먼트 대상 블록인 제1 블록(BLK0)에 포함되지 않을 수 있다. 따라서, 본 실시예에 따르면, 제5 구간(165)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 C를 선택할 수 있다. 이에 따라, 제5 구간(165)에서, 페이지 D를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동하고, 페이지 C가 제3 블록(BLK2)으로부터 리드될 수 있고, 이때, 제1 블록(BLK0)에 포함된 페이지들이 리드 스트레스를 받지 않을 수 있다.
또한, 페이지 D가 제3 블록(BLK2)으로 이동함에 따라, 맵핑 테이블(112c)에서 페이지 D에 대응하는 물리 주소는 제3 블록(BLK2)의 제1 워드라인으로 변경될 수 있다. 이와 같이, 페이지 D가 제3 블록(BLK2)에 프로그램됨에 따라 페이지 D는 더 이상 소거 대상 또는 리플레이스먼트 대상 블록인 제1 블록(BLK0)에 포함되지 않을 수 있다. 따라서, 본 실시예에 따르면, 제6 구간(166)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 D를 선택할 수 있고, 이에 따라, 제6 구간(166)에서, 페이지 D가 제3 블록(BLK2)으로부터 리드될 수 있다.
이어서, 제7 및 제8 구간들(167, 168)에서는, 커맨드 큐(CQ)에 큐잉된 태스크들 중 태스크 J 및 태스크 K를 순차적으로 선택할 수 있고, 이에 따라, 제7 및 제8 구간들(167, 168)에서, 페이지 J 및 페이지 K가 제2 블록(BLK1)으로부터 순차적으로 리드될 수 있다.
이와 같이, 본 실시예에 따르면, 스토리지 장치(100a)는 태스크가 접근할 물리 블록 및 페이지 번호를 확인하고, 물리 블록이 소거 또는 리플레이스먼트 대상인 경우라도 해당 페이지가 이미 다른 블록으로 이동한 경우 선택된 태스크를 레디 상태로 결정할 수 있다. 구체적으로, 본 실시예에 따르면, 태스크 B, 태스크 C 및 태스크 D에 대한 실행 순서는 도 12에 비해 빠를 수 있다. 따라서, 선택된 태스크의 레디가 지연되는 것을 방지할 수 있고, 호스트(200)에 대한 응답 속도를 향상시킬 수 있다.
도 17은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 17을 참조하면, 본 실시예에 따른 방법은 도 15의 변형 실시예에 해당하며, 도 15 및 도 16을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 단계 S610에서, 새로 큐잉된 태스크들을 확인한다. 단계 S620에서, 커맨드 큐에 큐에 큐잉된 복수의 태스크들 중 하나를 선택한다. 단계 S630에서, 선택된 태스크가 접근할 블록 및 페이지를 확인한다. 단계 S640에서, 블록이 소거 또는 리플레이스먼트 대상인지 확인한다.
판단 결과, 블록이 소거 또는 리플레이스먼트 대상이면 단계 S680을 수행한다. 단계 S680에서, 문제 발생 페이지를 다른 블록에 프로그램한다. 여기서, 문제 발생 페이지는 리드 리클레임이 발생한 페이지를 지칭한다. 한편, 블록이 소거 또는 리플레이스먼트 대상이 아니면 단계 S670을 선택한다. 단계 S670에서, 선택된 태스크를 레디 상태로 결정한다.
본 실시예에 따르면, 커맨드 큐(1111)에 선택된 태스크가 소거 또는 리플레이스먼트 대상인 경우에도, 리드 리클레임이 발생한 페이지를 다른 블록에 먼저 이동하고, 그 후에, 선택된 태스크를 레디 상태로 결정할 수 있다. 이에 따라, 먼저 큐잉된 태스크에 대한 실행 순서가 지나치게 지연되는 것을 방지할 수 있고, 결과적으로, 스토리지 장치(100a)에 대한 동작 성능을 향상시킬 수 있다.
도 18a 및 도 18b는 도 17의 실시예에 따른, 스토리지 장치의 동작들을 나타낸다. 이하에서는 도 4, 도 17, 도 18a 및 도 18b를 참조하여 상술하기로 한다. 도 18a 및 도 18b은 도 16의 변형 예에 대응하므로, 중복된 설명은 생략하기로 한다.
도 18a를 참조하면, 제1 구간(181)에서, 커맨드 큐(CQ)에 큐잉된 복수의 태스크들 중 태스크 A를 선택할 수 있다. 페이지 A에 대한 리드 동작의 수행 결과, 페이지 A에서 리드 리클레임이 발생할 수 있다. 이때, 페이지 A에 인접한 페이지 B 및 페이지 C도 리드 스트레스를 받은 상황일 수 있다. 따라서, 제1 블록(BLK0)은 리드 리클레임 대상이 된다.
본 실시예에 따르면, 제2 구간(182)에서 문제가 발생한 페이지, 즉, 리드 리클레임이 발생한 페이지에 해당하는 페이지 A를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 먼저 이동한다. 이때, 스토리지 장치(100a)는 커맨드 큐(Q)에 큐잉된 복수의 태스크들 중 태스크 B를 선택하고, 태스크 B를 레디 상태로 결정할 수 있다. 제3 구간(183)에서, 스토리지 장치(100a)는 태스크 B에 해당하는 페이지 B에 대한 리드 동작을 수행할 수 있다.
제4 구간(184)에서, 스토리지 장치(100a)는 태스크 C를 선택하고, 태스크 C에 해당하는 페이지 C에 대한 리드 동작을 수행할 수 있다. 또한, 스토리지 장치(100a)는 페이지 B를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동할 수 있다. 제5 구간(185)에서, 스토리지 장치(100a)는 태스크 D를 선택하고, 태스크 D에 해당하는 페이지 D에 대한 리드 동작을 수행할 수 있다. 또한, 스토리지 장치(100a)는 페이지 C를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동할 수 있다. 제6 구간(186)에서, 스토리지 장치(100a)는 태스크 H를 선택하고, 태스크 H에 해당하는 페이지 H에 대한 리드 동작을 수행할 수 있다. 또한, 스토리지 장치(100a)는 페이지 D를 제1 블록(BLK0)에서 제3 블록(BLK2)으로 이동할 수 있다. 이어서, 제7 내지 제9 구간들(187 내지 189)에서, 스토리지 장치(100a)는 태스크 I 내지 태스크 K를 순차적으로 선택하고, 페이지 I 내지 페이지 K에 대한 리드 동작들을 순차적으로 수행할 수 있다.
도 18b를 참조하면, 본 실시예는 도 18a의 변형 실시예로서, 제3 내지 제6 구간들(183' 내지 186')에서 도 18a와 다를 수 있다. 본 실시예에 따르면, 제3 구간(183')에서, 스토리지 장치(100a)는 페이지 B를 제1 블록(BLK0)에서 제2 블록(BLK2)으로 이동하고, 그 후에, 제2 블록(BLK2)으로부터 페이지 B를 리드할 수 있다. 이어서, 제4 구간(184')에서, 스토리지 장치(100a)는 페이지 C를 제1 블록(BLK0)에서 제2 블록(BLK2)으로 이동하고, 그 후에, 제2 블록(BLK2)으로부터 페이지 C를 리드할 수 있다. 이어서, 제5 구간(185')에서, 스토리지 장치(100a)는 페이지 D를 제1 블록(BLK0)에서 제2 블록(BLK2)으로 이동하고, 그 후에, 제2 블록(BLK2)으로부터 페이지 D를 리드할 수 있다. 이어서, 제6 내지 제9 구간들(186' 내지 189)에서, 스토리지 장치(100a)는 태스크 H 내지 태스크 K를 순차적으로 선택하고, 페이지 H 내지 페이지 K에 대한 리드 동작들을 순차적으로 수행할 수 있다.
도 19는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 19를 참조하면, 본 실시예에 따른 방법은 도 15 및 도 17의 변형 실시예에 해당하며, 도 15 내지 도 18b을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 단계 S610에서, 새로 큐잉된 태스크들을 확인한다. 단계 S620에서, 커맨드 큐에 큐에 큐잉된 복수의 태스크들 중 하나를 선택한다. 단계 S630a에서, 선택된 태스크가 접근할 블록을 확인한다. 단계 S640에서, 블록이 소거 또는 리플레이스먼트 대상인지 확인한다. 판단 결과, 블록이 소거 또는 리플레이스먼트 대상이 아닌 경우 단계 S670을 수행한다. 단계 S670에서, 선택된 태스크를 레디 상태로 결정한다.
한편, 판단 결과, 블록이 소거 또는 리플레이스먼트 대상이면 단계 S690을 수행한다. 단계 S690에서, 태스크가 큐잉된 이후 경과된 시간이 기준 시간 이상인지 판단한다. 판단 결과, 경과된 시간이 기준 미만이면 단계 S695를 수행한다. 단계 S695에서, 다른 태스크를 선택한다. 한편, 경과된 시간이 기준 이상이면 단계 S670을 수행한다.
본 실시예에 따르면, 커맨드 큐(1111)에 선택된 태스크가 소거 또는 리플레이스먼트 대상인 경우에도, 선택된 태스크가 일정 기간 이상 레디 상태가 되지 못한 경우에는 선택된 태스크를 레디 상태로 결정할 수 있다. 이에 따라, 먼저 큐잉된 태스크에 대한 실행 순서가 지나치게 지연되는 것을 방지할 수 있고, 결과적으로, 스토리지 장치(100a)에 대한 동작 성능을 향상시킬 수 있다.
도 20은 본 개시의 일 실시예에 따른 전자 장치(1000)를 나타내는 블록도이다.
도 20을 참조하면, 전자 장치(1000)는 프로세서(1100), 메모리 장치(1200), 스토리지 장치(1300), 모뎀(1400), 입출력 장치(1500) 및 파워 서플라이(1600)를 포함할 수 있다. 본 실시예에서, 스토리지 장치(1300)는 커맨드 큐 기능을 지원할 수 있고, 블록의 열화 정보를 기초로 태스크의 실행 순서를 결정할 수 있다. 구체적으로, 스토리지 장치(1300)는 커맨드 큐에 큐잉된 복수의 태스크들 중 하나를 선택하고, 선택된 태스크가 접근할 블록을 확인하고, 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 판단할 수 있다. 판단 결과, 블록이 리드 리클레임 또는 리플레이스먼트 대상이면 다른 태스크를 선택하고, 그렇지 않으면 선택된 태스크를 레디 상태로 결정할 수 있다. 도 1 내지 도 19를 참조하여 상술된 내용은 스토리지 장치(1300)에 적용될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 스토리지 시스템, 100, 100a: 스토리지 장치, 200: 호스트
110, 110a: 컨트롤러, 120: 비휘발성 메모리
111: 스케쥴러, 111a: FTL, 112: 메모리, 113: 프로세서
114: 호스트 인터페이스, 115: 비휘발성 메모리 인터페이스
1111: 큐 매니저, 1112: 리드 리클레임/리플레이스먼트 매니저
1113: 맵핑 매니저, 1114: 입출력 매니저
112a: 커맨드 큐, 112b: 리드 리클레임/리플레이스먼트 큐
112c: 맵핑 테이블, 112d: 데이터 버퍼
114a: 커맨드 디코더, 114b: 태스크 디코더, 114c: 커맨드 레지스터
114d: 상태 레지스터, 115a: ECC 엔진

Claims (10)

  1. 스토리지 장치의 동작 방법으로서,
    상기 스토리지 장치의 커맨드 큐(command queue)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하는 단계;
    상기 스토리지 장치에 로딩된 맵핑 테이블을 기초로 상기 제1 태스크가 접근할 제1 블록을 확인하는 단계;
    상기 제1 블록이 리드 리클레임(read reclaim) 또는 리플레이스먼트(replacement) 대상인지 판단하는 단계; 및
    상기 판단 결과에 따라, 상기 제1 태스크의 실행 순서를 결정하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 결정하는 단계는,
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상인 경우, 상기 제1 태스크의 실행 순서를 지연시키는 단계; 및
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우, 상기 제1 태스크를 레디(ready) 상태로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 지연시키는 단계는, 상기 복수의 태스크들 중 제2 태스크를 선택하고,
    상기 제2 태스크는 제2 블록에 접근할 태스크이고,
    상기 방법은,
    상기 제2 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 판단하는 단계; 및
    상기 판단 결과에 따라, 상기 제2 태스크의 실행 순서를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 확인하는 단계는, 상기 맵핑 테이블을 기초로, 상기 제1 태스크가 접근할 제1 페이지를 더 확인하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 결정하는 단계는,
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상인 경우, 상기 맵핑 테이블을 기초로, 상기 제1 페이지가 상기 제1 블록이 아닌 다른 블록에 프로그램되었는지 판단하는 단계;
    상기 제1 페이지가 상기 다른 블록에 프로그램되지 않은 경우, 상기 복수의 태스크들 중 제2 태스크를 선택하는 단계; 및
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우 또는 상기 제1 페이지가 상기 다른 블록에 프로그램된 경우, 상기 제1 태스크를 레디 상태로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제4항에 있어서,
    상기 결정하는 단계는,
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상인 경우, 상기 제1 블록의 페이지들 중 리드 리클레임이 발생한 페이지를 상기 제1 블록이 아닌 다른 블록에 프로그램하는 단계; 및
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우 또는 상기 프로그램하는 단계 이후, 상기 제1 태스크를 레디 상태로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 결정하는 단계는,
    상기 제1 태스크가 상기 커맨드 큐에 큐잉된 이후 경과된 제1 시간이 기준 시간 이상인지 판단하는 단계;
    상기 제1 시간이 상기 기준 시간 미만인 경우, 상기 복수의 태스크들 중 제2 태스크를 선택하는 단계; 및
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우 또는 상기 제1 시간이 상기 기준 시간 이상인 경우, 상기 제1 태스크를 레디 상태로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    리드 횟수, 프로그램/소거 횟수, 리드된 데이터의 에러 비트 개수, 프로그램 경과 시간 정보, 및 동작 온도 정보 중 적어도 하나를 포함하는 열화 정보를 기초로, 상기 제1 태스크의 실행 순서를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 스토리지 장치의 동작 방법으로서,
    상기 스토리지 장치의 커맨드 큐에 큐잉된 복수의 커맨드들 중 제1 커맨드를 선택하는 단계;
    상기 스토리지 장치에 로딩된 맵핑 테이블을 기초로 상기 제1 커맨드가 접근할 제1 블록을 확인하는 단계; 및
    상기 제1 블록에 대한 열화 정보를 기초로 상기 제1 커맨드의 실행 스케쥴을 조절하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 열화 정보는, 상기 제1 블록이 리드 리클레임 또는 리플레이스먼트 대상인지 나타내는 정보이고,
    상기 조절하는 단계는,
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상인지 판단하는 단계;
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상인 경우, 상기 제1 커맨드의 실행 순서를 지연시키는 단계; 및
    상기 제1 블록이 상기 리드 리클레임 또는 리플레이스먼트 대상이 아닌 경우, 상기 제1 커맨드의 실행을 상기 호스트에 요청하는 단계를 포함하는 것을 특징으로 하는 방법.
KR1020160150332A 2016-11-11 2016-11-11 스토리지 장치 및 그 동작 방법 KR20180053027A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160150332A KR20180053027A (ko) 2016-11-11 2016-11-11 스토리지 장치 및 그 동작 방법
US15/624,892 US10445252B2 (en) 2016-11-11 2017-06-16 Storage device and operating method performed by the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160150332A KR20180053027A (ko) 2016-11-11 2016-11-11 스토리지 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20180053027A true KR20180053027A (ko) 2018-05-21

Family

ID=62106344

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160150332A KR20180053027A (ko) 2016-11-11 2016-11-11 스토리지 장치 및 그 동작 방법

Country Status (2)

Country Link
US (1) US10445252B2 (ko)
KR (1) KR20180053027A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018120448A (ja) * 2017-01-26 2018-08-02 ソニーセミコンダクタソリューションズ株式会社 演算処理装置および情報処理システム
KR102532563B1 (ko) * 2018-03-28 2023-05-17 에스케이하이닉스 주식회사 메모리 장치 및 그것의 동작방법
KR20200014135A (ko) * 2018-07-31 2020-02-10 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
KR20200073122A (ko) * 2018-12-13 2020-06-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20200141212A (ko) * 2019-06-10 2020-12-18 에스케이하이닉스 주식회사 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
KR20210018615A (ko) * 2019-08-06 2021-02-18 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037234B2 (en) 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7525986B2 (en) 2004-10-28 2009-04-28 Intel Corporation Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US8504784B2 (en) 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
KR101486987B1 (ko) 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9075712B2 (en) 2011-11-30 2015-07-07 International Business Machines Corporation Scheduling requests in a solid state memory device
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9058208B2 (en) 2012-11-12 2015-06-16 Skymedi Corporation Method of scheduling tasks for memories and memory system thereof
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
KR20160049200A (ko) 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법

Also Published As

Publication number Publication date
US10445252B2 (en) 2019-10-15
US20180137060A1 (en) 2018-05-17

Similar Documents

Publication Publication Date Title
KR102347184B1 (ko) 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10248592B2 (en) Interrupted write operation in a serial interface memory with a portion of a memory address
KR20180053027A (ko) 스토리지 장치 및 그 동작 방법
EP3568768A1 (en) Directed sanitization of memory
CN110678852B (zh) 控制对缓冲器的存储器操作的设备和方法
TWI759686B (zh) 記憶體系統及用於控制該記憶體系統的方法
US11037639B2 (en) Memory controller and method of operating the same for processing the failed read operation
US10957411B2 (en) Apparatus and method for managing valid data in memory system
US11656785B2 (en) Apparatus and method for erasing data programmed in a non-volatile memory block in a memory system
KR20120120795A (ko) 데이터 저장 시스템 및 그의 데이터 리텐션 방법
JP2021034116A (ja) メモリシステム及びその動作方法
TW202006530A (zh) 用於計數器更新操作之設備及方法
US11048625B2 (en) Memory system and operating method thereof
KR20170033480A (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
US11977735B2 (en) Memory device, storage device including the same, and method of operating the storage device
US20220091993A1 (en) Controller including map cache and memory system including controller
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
US11194510B2 (en) Storage device and method of operating the same
US20140149646A1 (en) Memory systems including flash memories, first buffer memories, second buffer memories and memory controllers and methods for operating the same
KR20210054396A (ko) 저장 장치 및 그 동작 방법
US11941294B2 (en) Memory controller for controlling suspension of operation and method of operating the same
KR20230094565A (ko) 복수의 서브 회로들의 상태를 기초로 활성화 모드 또는 저전력 모드로 동작하는 컨트롤러 및 그 방법
KR20240065770A (ko) 메모리 다이들의 온도 및 온도 변화량을 기초로 우선 순위를 결정하는 스토리지 장치 및 그 동작 방법
KR20230018873A (ko) 메모리 시스템 및 그 동작 방법

Legal Events

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