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

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

Info

Publication number
KR102549540B1
KR102549540B1 KR1020170122665A KR20170122665A KR102549540B1 KR 102549540 B1 KR102549540 B1 KR 102549540B1 KR 1020170122665 A KR1020170122665 A KR 1020170122665A KR 20170122665 A KR20170122665 A KR 20170122665A KR 102549540 B1 KR102549540 B1 KR 102549540B1
Authority
KR
South Korea
Prior art keywords
task
mode
storage device
command
address
Prior art date
Application number
KR1020170122665A
Other languages
English (en)
Other versions
KR20190033921A (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 KR1020170122665A priority Critical patent/KR102549540B1/ko
Priority to CN201811105439.5A priority patent/CN109542336B/zh
Priority to US16/138,272 priority patent/US11194510B2/en
Publication of KR20190033921A publication Critical patent/KR20190033921A/ko
Application granted granted Critical
Publication of KR102549540B1 publication Critical patent/KR102549540B1/ko

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/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]

Abstract

본 개시의 기술적 사상에 따른 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 태스크 큐(task queue)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하는 단계; 상기 제1 태스크가 이전 수행된 태스크와 동일 모드인지 판단하는 단계; 및 상기 판단 결과에 따라, 상기 제1 태스크의 실행 순서를 결정하는 단계를 포함한다.

Description

스토리지 장치 및 그 동작 방법{Storage device and method of operating the same}
본 개시의 기술적 사상은 스토리지 장치에 관한 것이며, 더욱 상세하게는, 태스크 큐(task queue) 기능을 지원하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다. 스토리지 장치의 기입 신뢰성과 기입 성능을 향상시킬 수 있는 방법 및 장치에 대한 요구가 지속적으로 제기되고 있다.
본 개시의 기술적 사상은 기입 성능이 향상되는 스토리지 장치 및 상기 스토리지 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 태스크 큐(task queue)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하는 단계; 상기 제1 태스크가 이전 수행된 태스크와 동일 모드인지 판단하는 단계; 및 상기 판단 결과에 따라, 상기 제1 태스크의 실행 순서를 결정하는 단계를 포함한다.
또한, 본 개시의 기술적 사상에 따른 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법은, 상기 스토리지 장치의 태스크 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하는 단계; 상기 제1 태스크에 대응하는 제1 커맨드 변수(argument)와 이전 실행된 태스크에 대응하는 제2 커맨드 변수를 비교하는 단계; 및 상기 비교의 결과에 따라, 상기 제1 태스크의 실행 순서를 결정하는 단계를 포함할 수 있다.
또한, 본 개시의 기술적 사상에 따른 eMMC(embedded Multi-Media Card)는,복수의 태스크들이 큐잉되는 태스크 큐; 및 상기 태스크 큐에 큐잉된 복수의 태스크들 각각에 설정된 모드를 기초로 상기 복수의 태스크들 중 동일한 모드로 설정된 태스크들이 연속적으로 실행되도록 상기 복수의 태스크들의 실행 순서를 결정하는 스케쥴러를 포함할 수 있다.
본 개시의 기술적 사상에 따른 스토리지 장치 및 스토리지 장치의 동작 방법에 따르면, 태스크의 커맨드 변수를 기초로, 동일한 모드의 태스크들 또는 동일한 어드레스 영역에 접근하는 태스크들이 연속적으로 실행될 수 있도록 태스크 실행 순서를 결정함으로써, 스토리지 장치의 성능을 향상시킬 수 있다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 2는 도 1의 스토리지 장치에 포함된 디바이스 컨트롤러를 상세하게 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이고, 5는 본 개시의 일 실시예에 따른 스토리지 장치가 수신하는 커맨드의 구성을 나타내는 도면이다.
도 6은 본 개시의 일 실시예에 따라, 태스크 큐를 상세하게 나타내는 블록도이다.
도 7은 본 개시의 일 실시예에 따라, 상태 레지스터를 상세하게 나타내는 블록도이다.
도 8은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다.
도 9는 본 개시의 일 실시예에 따른 스토리지 장치의 태스크 처리 방법을 나타내는 흐름도이다.
도 10은 본 개시의 일 실시예에 따른 스토리지 장치의 태스크 인큐 방법을나타내는 흐름도이다.
도 11은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 12는 본 개시의 일 실시예에 따른 호스트와 스토리지 장치의 동작을 나타내는 흐름도이다.
도 13은 본 개시의 실시예에 따른, 스토리지 장치의 동작을 나타낸다.
도 14a 및 도 14b는 본 개시의 실시예에 다른 스토리지 장치의 동작에 대한 비교예이다.
도 15는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
도 17은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치의 동작을 나타내는 흐름도이다.
도 18은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 19는 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 스토리지 시스템을 나타내는 블록도이다.
도 1을 참조하면, 스토리지 시스템(1000)은 스토리지 장치(100) 및 호스트(200)를 포함할 수 있다.
호스트(200)는 CPU(Central Processing Unit), 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등과 같이 데이터를 처리할 수 있는 데이터 처리 장치를 의미할 수 있고, 전자 장치에 내장(embedded) 또는 구현될 수 있다. 전자 장치는 예를 들어, 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), 웨어러블 기기 등일 수 있다. 일 실시예에서, 호스트(200)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다.
호스트(200)는 다양한 인터페이스를 통하여 스토리지 장치(100)와 통신할 수 있고, 스토리지 장치(100)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다.
커맨드 채널(101)을 통해, 커맨드(CMD)는 호스트(200)로부터 스토리지 장치(100)로 전송되고, 커맨드(CMD)에 대한 응답(RES)은 스토리지 장치(100)로부터 호스트(200)로 전송될 수 있다. 또한, 복수의 데이터 채널들(102)을 통해, 기입 동작을 위한 데이터는 호스트(200)로부터 스토리지 장치(100)에 전송되고, 독출 동작을 위한 데이터는 스토리지 장치(100)로부터 호스트(200)에 전송될 수 있다.
스토리지 장치(100)는 디바이스 컨트롤러(110) 및 비휘발성 메모리(120)를 포함할 수 있다. 일부 실시예들에서, 스토리지 장치(100)는 전자 장치에 내장되는(embedded) 내부(internal) 메모리일 수 있다. 예를 들어, 스토리지 장치(100)는 eMMC(embedded Multimedia Card), SSD(Solide state Drive), 임베디드 UFS(Ununival Flash Storage) 메모리 장치일 수 있다. 일부 실시예들에서, 스토리지 장치(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)일 수 있다. 이하, 본 개시에서, 스토리지 장치(100)는 eMMC인 것을 가정하여 설명하기로 한다.
디바이스 컨트롤러(110)는 호스트(200)와 비휘발성 메모리(120) 사이에서 데이터 통신을 제어한다. 스토리지 장치(100)의 비동기식(asynchronous) 입출력 동작을 위하여 디바이스 컨트롤러(110)는 캐시 기능을 지원할 수 있다. 호스트(200)로부터 제공되는 캐시 온 커맨드를 기초로 캐시 기능이 활성화되는 캐시 온 모드가 설정되고, 캐시 오프 커맨드를 기초로 캐시 기능이 비활성화되는 캐시 오프 모드가 설정될 수 있다. 실시예에 있어서, 캐시 오프 모드가 디폴트로 설정될 수 있다.
디바이스 컨트롤러(110)는 스케쥴러(11) 및 태스크 큐(21)(또는 태스크 큐라고 함)를 포함할 수 있다. 디바이스 컨트롤러(110)는 커맨드 채널(101)을 통해 호스트(200)로부터 복수의 커맨드들(CMD)을 순차적으로 수신할 수 있고, 수신된 복수의 커맨드들(CMD)에 따른 태스크들이 태스크 큐(21)에 큐잉될 수 있다. 이에 따라, 스토리지 장치(100)는 이전에 수신된 커맨드(CMD)에 따른 태스크 실행 중에 신규 커맨드(CMD)를 수신하는 비동기식(asynchronous) 입출력 동작을 수행할 수 있고, 이로써, 스토리지 장치(100)의 동작 속도가 크게 향상될 수 있다. 이러한 스토리지 장치(100)는 큐잉 디바이스(queuing device)라고 지칭할 수 있으며, 이하에서 상술되는 본 개시의 실시예들은 태스크 큐 기능(또는 태스크 큐 기능, 멀티 큐 기능이라고 함)을 지원하는 스토리지 장치들, 즉, 큐잉 디바이스들에 적용될 수 있다.
스케쥴러(11)는 태스크 큐(21)에 큐잉된 복수의 태스크들의 실행 순서를 결정할 수 있다. 구체적으로, 스케쥴러(11)는 복수의 태스크들에 대응하는 커맨드들(CMD)의 커맨드 변수(argument)를 기초로, 복수의 태스크들의 실행 순서를 결정할 수 있다.
일 실시예에서, 스케쥴러(11)는 태스크의 커맨드 변수로부터 태스크의 모드를 확인하고, 동일한 모드의 태스크들이 연속하여 실행될 수 있도록 복수의 태스크들의 실행 순서를 결정할 수 있다. 스케쥴러(11)는 커맨드 변수에 포함된 모드 정보, 예컨대, 신뢰성 기입(reliable write), 강제 기입(forced write), 데이터 태그 모드(data tag mode) 등을 기초로 대응하는 태스크의 모드를 확인할 수 있다.
스케쥴러(11)는 아웃오브오더 스케쥴링(out-of-order scheduling) 동작을 수행할 수 있고, 이에 따라, 복수의 태스크들은 태스크 큐(21)에 큐잉된 순서가 아니고, 스케쥴러(11)에서 결정된 순서에 따라 실행될 수 있다.
일 실시예에서, 스케쥴러(11)는 동일한 모드의 태스크들을 실행하면서 데이터 버퍼에 프로그램 단위의 데이터가 저장되면, 이후 다른 모드의 태스크를 실행시킬 수 있다.
일 실시예에서, 스토리지 장치(100)가 캐시 온 모드로 동작할 때, 스케쥴러(11)는 커맨드 변수에 보통기입(regular write)이 설정된 태스크의 기입 모드를 제1 모드(예컨대 성능 기입 모드)로 판단하고 커맨드 변수에 신뢰 기입(reliable write)이 설정된 태스크의 기입 모드를 제2 모드(예컨대 신뢰 기입 모드)로 판단할 수 있다. 스케쥴러(11)는 제1 모드의 태스크들이 제2 모드의 태스크들보다 우선하여 실행되도록 복수의 태스크들의 실행 순서를 결정할 수 있다. 제1 모드의 태스크들의 데이터는 데이터 버퍼에 저장될 수 있으며, 데이터 버퍼에 프로그램 단위의 데이터가 저장되면, 이후 스케쥴러(11)는 제2 모드의 태스크들을 실행시킬 수 있다.
일 실시예에서, 스케쥴러(11)는 태스크의 커맨드 변수로부터 태스크가 접근할 어드레스를 확인하고, 동일한 어드레스 영역에 접근할 태스크들이 연속하여 실행될 수 있도록 복수의 태스크들의 실행 순서를 결정할 수 있다.
비휘발성 메모리(120)는 복수의 메모리 디바이스(CE0~CEm)(예컨대 메모리 칩)를 포함할 수 있다. 복수의 메모리 디바이스(CE0~CEm)는 서로 다른 채널 또는 웨이(way)를 구성할 수 있다. 복수의 메모리 디바이스(CE0~CEm) 각각은 메모리 셀 어레이(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 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
도 2는 도 1의 스토리지 장치에 포함된 디바이스 컨트롤러를 상세하게 나타내는 블록도이다.
도 2를 참조하면, 디바이스 컨트롤러(110)는 프로세서(10), 스케쥴러(11), 메모리(20), 호스트 인터페이스(30) 및 비휘발성 메모리 인터페이스(40)를 포함할 수 있다. 이들은 버스를 통해 통신할 수 있다.
프로세서(10)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 디바이스 컨트롤러(110)의 전반적인 동작을 제어할 수 있다.
스케쥴러(11)는 하드웨어, 소프트웨어 또는 펌웨어로 구현될 수 있다. 스케쥴러(11)가 소프트웨어 또는 펌웨어로 구현되는 경우, 스케쥴러(11)는 메모리(20)에 로딩될 수 있고, 프로세서(10)의 제어에 따라 동작할 수 있다.
메모리(20)는 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있고, 예를 들어, 메모리(20)는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM), 플래시 메모리 등과 같은 비휘발성 메모리로 구현될 수 있다. 메모리(20)에는 태스크 큐(태스크 큐(21) 및 펌웨어(22)가 로딩될 수 있다. 또한, 메모리(20)에는 맵핑 테이블, 메타 데이터 등이 로딩될 수 있다.
호스트 인터페이스(30)는 호스트(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) 등에 따른 인터페이스를 제공할 수 있다.
비휘발성 메모리 인터페이스(40)는 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있다. 기입 수행 시, 비휘발성 메모리 인터페이스(40)는 프로세서(10)의 제어 하에 메모리(20)에 저장된 데이터를 독출하고 독출된 데이터를 비휘발성 메모리(120)에 저장할 수 있다. 독출 수행 시, 비휘발성 메모리 인터페이스(40)는 프로세서(10)의 제어 하에 비휘발성 메모리(120)로부터 데이터를 독출하고, 독출된 데이터를 메모리(20)에 임시로 저장할 수 있다.
도 3은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 이하에서는, 도 1 내지 도 3을 함께 참조하여 스토리지 장치의 동작 방법을 설명하기로 한다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 1의 스토리지 장치(100)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 1 및 도 2를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있으며, 중복된 설명은 생략하기로 한다.
도 3을 참조하면, 태스크 큐에 큐잉된 복수의 커맨드들 중 제1 태스크를 선택한다(S110). 예를 들어, 스케쥴러(11)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택할 수 있다. 일 실시예에서, 제1 태스크는 기입 태스크일 수 있다. 예를 들어, 스케쥴러(11)는 태스크 큐(21)에 큐잉된 복수의 기입 태스크들에 대하여 큐잉된 순서에 따라 제1 태스크를 선택할 수 있다. 한편, 제1 태스크는 독출 태스크일 수 있으며, 스케쥴러(11)는 태스크 큐(21)에 큐잉된 독출 태스크들 중, 접근할 어드레스에 대응하는 맵핑 테이블이 메모리(20)에 로딩된 독출 태스크를 선택할 수 있다.
제1 태스크의 모드와 이전 태스크의 모드의 동일성을 판단한다(S120). 이때이전 태스크는 가장 최근에 실행된 태스크를 의미한다. 예를 들어, 스케쥴러(11)는 태스크의 커맨드 변수를 기초로 태스크의 모드를 확인하고, 제1 태스크의 모드와 이전 태스크의 모드가 동일한지 판단할 수 있다. 전술한 바와 같이, 스케쥴러(11)는 커맨드 변수에 포함된 모드 정보, 예컨대, 신뢰성 기입(reliable write), 강제 기입(forced write), 데이터 태그 모드(data tag mode) 등을 기초로 대응하는 태스크의 모드를 확인할 수 있다
모드의 동일성 판단 결과를 기초로 제1 태스크의 실행 순서를 결정한다(S130). 예를 들어, 스케쥴러(11)는 제1 태스크의 모드가 이전 태스크의 모드와 동일하지 않다고 판단되면, 제1 커맨드의 실행 순서를 지연시킬 수 있고, 태스크 큐(21)에 큐잉된 태스크들 중 다른 태스크를 선택할 수 있다. 스케쥴러(11)는 제1 태스크의 모드가 이전 태스크의 모드와 동일하다고 판단되면, 제1 태스크에 대한 실행 요청을 호스트(200)에 전송할 수 있다.
도 4는 본 개시의 일 실시예에 따른 스토리지 장치를 상세하게 나타내는 블록도이고, 5는 본 개시의 일 실시예에 따른 스토리지 장치가 수신하는 커맨드의 구성을 나타내는 도면이다.
도 4를 참조하면, 스토리지 장치(100a)는 디바이스 컨트롤러(110a) 및 비휘발성 메모리(120)를 포함할 수 있고, 디바이스 컨트롤러(110a)는, 메모리(20a), 호스트 인터페이스(30a), 플래시 변환 계층(Flash Translation Layer, 이하 'FTL'로 지칭)(70a) 및 비휘발성 메모리 인터페이스(40)를 포함할 수 있다. 스토리지 장치(100a)는 도 1의 스토리지 장치(100)의 일 구현예에 대응하며, 디바이스 컨트롤러(110a)는 도 2의 컨트롤러(110)의 일 구현예에 대응할 수 있다. 따라서, 도 1 및 도 2를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 본 실시예에서, 스토리지 장치(100a)는 eMMC 장치일 수 있다. 그러나, 본 발명은 이에 한정되지 않는다.
호스트 인터페이스(30a)는 커맨드 디코더(31), 및 태스크 매니저(32)를 포함할 수 있다. 커맨드 디코더(31)는 호스트(200)로부터 수신한 커맨드(CMD)를 디코딩하고, 디코딩된 커맨드를 FTL(70a)의 커맨드 파서(71)에 전달할 수 있다.
태스크 매니저(32)는 상태 레지스터(도 7의 32a)를 포함할 수 있으며, 태스크 아이디 단위로 상태 레지스터(32a)를 관리할 수 있다. 실시예에 있어서, 태스크 매니저(32)는 태스크 레지스터를 포함할 수 있으며, 태스크 레지스터가 태스크 큐로서 동작할 수 있다.
상태 레지스터(32a)는 태스크 큐(21)에 저장된 태스크의 상태, 예컨대 레디 여부를 저장할 수 있다. 태스크 매니저(32)는 상태 레지스터(32a)를 통해 태스크 별 상태를 관리함으로써, 실행 준비가 완료된 태스크, 즉, 레디(ready)된 태스크에 대한 정보를 호스트(200)의 요청에 따라 또는 호스트(200)의 요청과 무관하게 호스트(200)에 알려줄 수 있다.
메모리(20a)는 데이터 버퍼(23)를 포함할 수 있으며, 메모리(20a)에는 태스크 큐(21) 및 맵핑 테이블(22)이 로딩될 수 있다. 예컨대, 메모리(20a)의 일 영역(또는 메모리 칩)은 데이터 버퍼(23)로서 동작할 수 있고, 다른 영역(또는 다른 메모리 칩)에는 태스크 큐(21) 및 맵핑 테이블(22)이 로딩될 수 있다.
태스크 큐(21)는 복수의 레지스터들을 포함할 수 있으며, 복수의 레지스터들 각각이 복수의 태스크들 각각에 대한 태스크 정보를 포함할 수 있다. 호스트(200)로부터 수신되는 커맨드(CMD), 예컨대 태스크 설정 커맨드에 따른 태스크는 순차적으로 태스크 큐(21)에 저장될 수 있으나, 저장되는 순서대로 태스크가 실행되는 것은 아니며, 태스크 매니저(72)가 태스크의 실행 순서를 결정할 수 있다. 일 실시예에서, 태스크 매니저(32)는 결정된 실행 순서에 따라 특정 태스크가 레디 상태임을 호스트(200)에 알려줄 수 있다.
맵핑 테이블(22)은 호스트(200)로부터 수신한 논리 어드레스와 비휘발성 메모리(120)의 물리 어드레스에 대한 맵핑 정보를 저장할 수 있다. 일 실시예예서, 비휘발성 메모리(120)는 복수의 맵핑 테이블들을 저장하고, 스토리지 장치(100a)에 전원이 인가되면 비휘발성 메모리(120)에 저장된 복수의 맵핑 테이블들 중 일부가 메모리(20a)에 로딩될 수 있다.
데이터 버퍼(23)는 수신된 데이터(DATA)(기입 데이터 또는 독출 데이터)를 임시로 저장할 수 있으며, 호스트 인터페이스(30a)의 제어 하에 호스트(200)로부터 기입 데이터를 수신하거나 또는 호스트(200)로 독출 데이터를 전송할 수 있다.
FTL(70a)은 커맨드 파서(71), 큐 매니저(72), 맵핑 매니저(73) 및 입출력 매니저(74)를 포함할 수 있다. 도 1 및 도 2의 스케쥴러(11)는 FTL(70a)에 구현될 수 있다. 메모리(20a)에는 태스크 큐(21), 맵핑 테이블(22)이 로딩될 수 있고, 메모리(20a)는 데이터 버퍼(23)를 더 포함할 수 있다. 일 실시예에서, FTL(70a)은 메모리(20a)에 로딩되어 프로세서(예를 들어, 도 2의 10)에 의해 실행될 수 있다. 일 실시예에서, FTL(70a)은 제1 메모리 칩에 로딩될 수 있고, 메모리(20a)는 제2 메모리 칩일 수 있다.
커맨드 파서(71)는 커맨드 디코더(31)로부터 커맨드(CMD)를 수신하고, 수신된 커맨드(CMD)의 커맨드 변수를 확인할 수 있다.
도 5를 참조하면, 커맨드(CMD)는 복수의 비트들을 포함할 수 있으며, 시작 비트(start bit), 전송 비트(transmission bit), 커맨드 인덱스(command index), 명령 인자(argument), CRC(Cyclical Redundancy Check), 종료 비트(end bit)등을 포함할 수 있다.
시작 비트는 커맨드(CMD)의 시작을 알리는 비트로서 예컨대, 0으로 고정될 수 있다. 전송 비트는 커맨드(CMD)를 생성한 주체를 나타내는 비트로서 예컨대, 1일 경우 호스트(200)에 의해 생성된 커맨드임을 나타낼 수 있다. 커맨드 인덱스는 커맨드의 종류를 나타내는 복수의 비트들로서 스토리지 장치(100)가 수행할 수 있는 복수의 커맨드들 중 특정 커맨드임을 나타낼 수 있다. 예컨대, 커맨드 인덱스가 CMD 1일 경우 커맨드(CMD)가 기입 커맨드임을, 커맨드 인덱스가 CMD 2일 경우 커맨드(CMD)가 독출 커맨드임을 각각 나타낼 수 있다. 따라서, 스토리지 장치(100)는 커맨드 인덱스에 따라 어떠한 커맨드가 입력되는지 인식할 수 있고 해당 커맨드 인덱스에 따른 동작을 수행할수 있다.
커맨드 변수는 커맨드(CMD)에 따른 동작을 수행함에 있어 필요한 정보들을 포함할 수 있다. 예컨대, 커맨드(CMD)가 독출 커맨드 또는 기입 커맨드일 경우 커맨드 변수는 독출 또는 기입할 비휘발성 메모리(도 1의 120)의 메모리 셀 어레이의 어드레스, 예컨대 시작 주소 정보와 독출 데이터 또는 기입 데이터의 데이터 사이즈 정보를 포함할 수 있다. 또한, 커맨드(CMD)가 기입 커맨드일 경우, 커맨드 변수는 신뢰성 기입(reliable write), 강제 기입(forced write), 데이터 태그 모드(data tag mode) 등의 모드 정보를 포함할 수 있다.
CRC는 커맨드(CMD)의 전송 시에 발생할 수 있는 에러를 검출하기 위한 것으로 예컨대, 7 비트로 구현될 수 있다. 종료 비트는 커맨드(CMD)의 종료를 알리는 비트로서 예컨대, 1로 고정될 수 있다.
커맨드 파서(71)는 커맨드 변수로부터, 어드레스, 데이터 사이즈, 모드 정보 등을 추출하고, 이를 태스크 정보로서, 태스크 큐(21)에 저장할 수 있다.
큐 매니저(72)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 하나를 선택하고 선택된 태스크의 레디 여부를 결정할 수 있다. 일 실시예에서, 큐 매니저(72)는 선택된 태스크의 모드가, 이전 태스크, 즉 가장 최근에 실행된 태스크의 모드와 동일한지 판단하고, 동일성을 기초로 선택된 태스크의 레디 여부를 결정할 수 있다. 나아가, 큐 매니저(72)는 선택된 태스크를 레디 상태로 결정한 경우 상태 레지스터(32a)를 업데이트할 수 있다.
맵핑 매니저(73)는 맵핑 테이블(22)을 관리할 수 있다. 예컨대, 맵핑 매니저(73)는 논리 어드레스에 대한 물리 어드레스가 변경되면, 변경된 논리 어드레스에 대한 물리 어드레스의 맵핑 정보를 맵핑 테이블(22)에 저장함으로써, 맵핑 테이블(22)을 업데이트할 수 있다.
입출력 매니저(74)는 기입 태스크 실행 커맨드(예를 들어, CMD47)에 응답하여, 비휘발성 메모리(120)에 제공할 기입 커맨드를 이슈(issue)할 수 있다. 또한, 입출력 매니저(74)는 독출 태스크 실행 커맨드(예를 들어, CMD46)에 응답하여, 비휘발성 메모리(120)에 제공할 독출 커맨드를 이슈할 수 있다. 이때, 입출력 매니저(74)는 맵핑 테이블(22)을 참조하여 기입 커맨드/독출 커맨드에 대응하는 물리 어드레스를 획득할 수 있다.
비휘발성 메모리 인터페이스(40)는 디바이스 컨트롤러(110)와 비휘발성 메모리(120) 사이의 인터페이스를 제공할 수 있으며, 예를 들어, FIL(Flash Interface Layer)로 구현될 수 있다. 비휘발성 메모리 인터페이스(40)는 호스트(200)로부터 수신된 커맨드(CMD)를 기초로 생성된 내부 커맨드(CMD_I) 및 어드레스(ADDR), 예컨대 물리 어드레스를 비휘발성 메모리(120)에 제공함으로써, 비휘발성 메모리(120)에 데이터(DATA)를 기입하거나 또는 비휘발성 메모리(120)로부터 데이터(DATA)를 독출할 수 있다.
도 6은 본 개시의 일 실시예에 따라, 태스크 큐를 상세하게 나타내는 블록도이다.
도 6을 참조하면, 태스크 큐(21)는 제1 내지 제N 태스크 레지스터들(TR1 내지 TRN)을 포함할 수 있고, 제1 내지 제N 태스크 레지스터들(TR1 내지 TRN)은 제1 내지 제N 태스크들 각각에 대한 정보를 저장할 수 있다. 여기서, N은 태스크 레지스터들의 개수를 나타내며, 2 이상의 자연수이다. N은 멀티 큐 뎁쓰라고 정의할 수 있고, 컨트롤러(도 4의 110a)는 멀티 큐 뎁쓰(N)만큼의 멀티 큐 커맨드를 호스트(200)로부터 수신하여 제1 내지 제N 태스크 레지스터들(TR1 내지 TRN)에 저장할 수 있다. 제1 내지 제N 태스크 레지스터들(TR1 내지 TRN) 각각에는 태스크 아이디, 전송 방향 정보, 데이터 크기, 우선 순위, 모드 정보 및 어드레스를 포함하는 태스크 정보가 저장될 수 있다.
도 7은 본 개시의 일 실시예에 따라, 상태 레지스터를 상세하게 나타내는 블록도이다.
도 4 내지 도 7을 참조하면, 상태 레지스터(32a)는 커맨드 큐(21)의 제1 내지 제N 태스크 레지스터들(TR1 내지 TRN)에 저장된 제1 내지 제N 태스크들의 상태들을 저장할 수 있다. 구체적으로, 상태 레지스터(32a)는 각각 제1 내지 제N 태스크들의 상태를 나타내는 N비트의 상태 정보를 저장할 수 있다. 예를 들어, 제1 비트(예를 들어, LSB(Least Significant Bit))는 제1 태스크가 실행 준비가 완료된 상태(이하, "레디 상태"라고 지칭함)인지 또는 실행 준비가 완료되지 않은 상태(이하, "낫 레디 상태"라고 지칭함)인지 나타낼 수 있다. 예를 들어, 제N 비트(예를 들어, MSB(Most Significant Bit))는 제N 태스크가 레디 상태인지 또는 낫 레디 상태인지 나타낼 수 있다.
일 실시예에서, 상태 레지스터(32a)의 초기값은 모두 "0"일 수 있다. 제1 내지 제N 태스크들 중 어느 하나의 태스크가 레디 상태가 되면, 상태 레지스터(32a)의 해당 비트는 "1"로 변경될 수 있다. 일 실시예에서, FTL(70a)의 큐 매니저(72)는 커맨드 큐(21)에서 선택한 태스크를 레디 상태로 결정한 경우, 상태 레지스터(32a))의 해당 비트를 업데이트할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 태스크 매니저(32)가 커맨드 큐(21)에 저장된 태스크의 상태를 확인하여, 상태 레지스터(32a)의 해당 비트를 업데이트할 수도 있다.
도 8은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치 사이의 동작을 나타내는 흐름도이다. 이하에서는, 도 4 내지 도 8을 함께 참조하여 스토리지 장치(100a)와 호스트(200)의 동작을 설명하기로 한다.
호스트(200)는 제1 태스트(TASK1)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송한다(S10). 예를 들어, 제1 태스크(TASK1)는 기입 태스크일 수 있다. 데이터 채널(102)을 통해 이전 태스크에 대한 데이터가 전송되는 도중에도, 호스트(200)는 제1 태스트(TASK1)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송할 수 있다. 스토리지 장치(100a)의 커맨드 디코더(31)는 제1 태스트(TASK1)에 대한 태스크 설정/어드레스 커맨드를 커맨드 파서(71)에 전달하고, 커맨드 파서(71)는 제1 태스트(TASK1)에 대한 태스크 정보를 태스크 큐(21)에 저장할 수 있다. 예를 들어, 제1 태스트(TASK1)에 대한 태스크 정보는 제1 태스크 레지스터(TR1)에 저장될 수 있다. 이로써, 제1 태스크(TASK)가 인큐(Enqueue) 된다.
예를 들어, 호스트(200)는 제1 태스크(TASK1)에 대한 태스크 설정 커맨드(예를 들어, CMD44)를 스토리지 장치(100a)로 전송하고, 이어서, 제1 태스크(TASK1)에 대한 어드레스 커맨드(예를 들어, CMD45)를 스토리지 장치(100a)로 전송한다. 그러나, 본 발명은 이에 한정되지 않으며, 하나의 커맨드, 예를 들어, 태스크 설정 커맨드(CMD44)에 어드레스 정보가 함께 포함될 수도 있다.
태스크 설정 커맨드(예를 들어, CMD44)는 태스크의 아이디 및 태스크의 동작 방향을 설정하는 커맨드이며, 동작 방향은 데이터의 전송 방향을 의미한다. 구체적으로, 태스크 설정 커맨드(예를 들어, CMD44)는 태스크 아이디, 데이터의 전송 방향을 나타내는 전송 방향 정보, 비휘발성 메모리(120)에 기입할 데이터 또는 비휘발성 메모리(120)로부터 리드할 데이터의 사이즈를 지정하기 위한 사이즈 정보, 우선 순위 정보 및 모드 정보 등을 포함할 수 있다.
태스크 어드레스 커맨드(예를 들어, CMD45)는 해당 태스크의 데이터의 시작 어드레스 정보를 포함할 수 있고, 시작 어드레스는 논리 어드레스일 수 있다. 예를 들어, 태스크가 "기입 태스크"인 경우, 시작 어드레스 정보는 비휘발성 메모리(120)에 기입할 데이터의 시작 어드레스를 지정하기 위한 정보일 수 있다. 또한, 예를 들어, 태스크가 "리드 태스크"인 경우 시작 어드레스 정보는 비휘발성 메모리로부터 리드할 데이터의 시작 어드레스를 지정하기 위한 정보일 수 있다.
호스트(200)는 제2 태스트(TASK2)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송한다(S15). 예를 들어, 제2 태스크(TASK2) 또한 기입 태스크일 수 있다. 스토리지 장치(100a)의 커맨드 디코더(31)는 제2 태스트(TASK2)에 대한 태스크 설정/어드레스 커맨드를 커맨드 파서(71)에 전달하고, 커맨드 파서(71)는 제2 태스트(TASK2)에 대한 태스크 정보를 태스크 큐(21)에 저장할 수 있다. 예를 들어, 제2 태스트(TASK2)에 대한 태스크 정보는 제2 태스크 레지스터(TR2)에 저장될 수 있다. 이와 같이, 호스트(200)는 제1 태스크(TASK1)에 대한 데이터를 스토리지 장치(100a)에 전송하기 전에, 다른 태스크인 제2 태스크(TASK2)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송할 수 있다.
호스트(200)는 상태 레지스터(32a)에 저장된 상태를 체크하기 위한 상태 확인 커맨드(Q_CHECK)를 스토리지 장치(100a)에 전송한다(S20). 상태 확인 커맨드는 태스크 큐(21)에 저장된 각 태스크의 준비 상태를 확인하기 위해 정의된 커맨드이다. 예를 들어, 상태 확인 커맨드는 SEND_STATUS 커맨드(CMD13)일 수 있다. 스토리지 장치(100a)는 상태 확인 커맨드(Q_CHECK)에 응답하여 상태 응답 메시지(Q_STATUS)를 호스트(200)에 전송한다(S30). 예를 들어, 상태 응답 메시지(Q_STATUS)는 제1 태스크(TASK1)가 레디 상태임을 나타낼 수 있다.
호스트(200)는 제1 태스크(TASK1)에 대한 기입 실행 커맨드(WCMD)를 스토리지 장치(100a)에 전송할 수 있다(S40). 호스트(200)는 제1 태스크(TASK1)에 관련된 기입 데이터(WDATA)를 스토리지 장치(100a)에 전송할 수 있다(S50). 스토리지 장치(100a)는 기입 데이터(WDATA)를 수신하여 데이터 버퍼(23)에 저장하고, 저장된 기입 데이터(WDATA)를 비휘발성 메모리(120)에 프로그램할 수 있다. 실시예에 있어서, 호스트(200)는 데이터 버퍼(23)에 프로그램 단위의 데이터가 저장되었을 때, 데이터를 비휘발성 메모리(120)에 프로그램할 수 있다.
호스트(200)는 상태 레지스터(32a)에 저장된 상태를 체크하기 위한 상태 확인 커맨드(Q_CHECK)를 스토리지 장치(100a)에 전송한다(S60). S60 단계는 주기적 또는 비주기적으로 수행될 수 있다. 스토리지 장치(100a)는 상태 확인 커맨드(Q_CHECK)에 응답하여 상태 응답 메시지(Q_STATUS)를 호스트(200)에 전송한다(S70). 예를 들어, 상태 응답 메시지(Q_STATUS)는 제2 태스크(TASK2)가 레디 상태임을 나타낼 수 있다.
호스트(200)는 제2 태스크(TASK2)에 대한 기입 실행 커맨드(WCMD)를 스토리지 장치(100a)에 전송할 수 있다(S80). 호스트(200)는 제2 태스크(TASK2)에 관련된 기입 데이터(WDATA)를 스토리지 장치(100a)에 전송할 수 있다(S90).
이와 같이, 호스트(200)는 제1 태스크(TASK1) 및 제2 태스크(TASK2)가 레디 상태일 때, 각각의 태스크에 대한 실행 커맨드 및 데이터를 스토리지 장치(100a)에 전송할 수 있다.
태스크는 인큐, 레디, 및 실행 의 3 단계로 수행될 수 있다. 전술한 바와 같이, 호스트(200)가 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송함으로써, 태스크가 인큐될 수 있으며, 호스트(200)가 실행 커맨드를 스토리지 장치(100a)에 전송함으로써, 태스크가 실행될 수 있다. 다만, 태스크의 레디는 스토리지 장치(100a)가 내부적으로 결정할 수 있으며, 전술한 바와 같이, 스토리지 장치(100a), 예컨대 큐 매니저(72)는 태스크의 커맨드 변수로부터 추출되는 태스크의 모드 또는 어드레스를 기초로 태스크들의 레디 여부, 즉 태스크들의 실행 순서를 결정할 수 있다.
한편, 본 실시예에서, 제1 태스크(TASK1) 및 제2 태스크(TASK2)가 기입 태스크인 경우를 가정하여 설명하였으나, 제1 태스크(TASK1) 및 제2 태스크(TASK2)는 독출 태스크일 수 있으며, 또는 제1 태스크(TASK1) 및 제2 태스크(TASK2) 중 하나가 기입 태스크이고, 다른 하나는 독출 태스크일 수 있다.
도 9는 본 개시의 일 실시예에 따른 스토리지 장치의 태스크 처리 방법을 나타내는 흐름도이다. 본 실시예에 따른 입출력 프로세스는 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 4 를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
도 9를 참조하면, 태스크 큐에 태스크가 있는지 확인할 수 있다(S11). 예를 들어, 큐 매니저(72)는 태스크 큐(21)에 낫 레디 상태의 태스크가 존재하는지 확인할 수 있다. 예컨대, 큐 매니저(72)가 태스크 큐(21) 또는 상태 레지스터(32a)를 확인하여 낫 레디 상태의 태스크가 존재하는지 판단할 수 있다.
태스크 큐에 낫 레디 상태의 태스크가 존재하면 태스크 스케쥴링을 수행하여, 태스크 레디 상태를 결정할 수 있다(S12). 큐 매니저(72)는 본 개시의 실시예들에 따른 태스크 스케쥴링 방법에 따라 태스크들의 실행 순서를 결정하고, 실행 순서에 따라 태스크의 레디 상태를 결정할 수 있다.
이후, 레디 상태의 태스크가 존재하는지 확인하고(S13), 레디 상태의 태스크가 존재하면 레디 상태의 태스크를 실행할 수 있다(S14). 예를 들어, 태스크 매니저(32)가 상태 레지스터(32a)를 확인함으로써 레디 상태의 태스크가 존재하는지 확인할 수 있으며, 레디 상태의 태스크가 존재하면, 태스크 매니저(32)가 레디(ready)된 태스크에 대한 정보를 호스트(200)에 알려줄 수 있다. 호스트(200)로부터 레디된 태스크에 대한 실행 커맨드가 수신되면, FTL(70a)이 레디 상태의 태스크를 실행할 수 있다.
도 10은 본 개시의 일 실시예에 따른 스토리지 장치의 태스크 인큐 방법을나타내는 흐름도이다.
본 실시예에 따른 태스크 인큐 방법은 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 따라서, 도 4 를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
도 10을 참조하면, 호스트로부터 수신된 태스크를 확인할 수 있다(S21). 예를 들어, 호스트(200)로부터 태스크 설정/어드래스 커맨드가 수신되면, 커맨드 디코더(31)가 태스크 설정/어드래스 커맨드를 FTL(70a)에 전달할 수 있으며, FTL(70a) 태스크 설정/어드래스 커맨드를 확인할 수 있다.
커맨드의 커맨드 변수에서 태스크 정보를 추출하고(S22) 태스크 큐에 태스크 정보를 저장할 수 있다(S23). 예를 들어, 커맨드 파서(71)가 커맨드 변수로부터, 어드레스, 데이터 사이즈, 모드 정보 등을 추출하고, 이를 태스크 정보로서, 태스크 큐(21)에 저장할 수 있다.
실시예에 있어서, 스토리지 장치(40a)의 FTL(70a)는 도 9의 태스크 처리 방법을 반복적으로 수행할 수 있으며, 호스트(200)로부터 태스크 설정/어드래스 커맨드가 수신되면, 호스트 인터페이스(30a)가 인터럽트 처리를 통하여, FTL(70a)에 태스크가 수신되었음을 알릴 수 있다. FTL(70a)은 태스크 처리 동작을 중단하고, 도 10을 참조로 설명한 인큐 방법에 따라 태스크를 인큐할 수 있다. 이후, FTL(70a)은 태스크 처리 동작을 재개할 수 있다.
도 11은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 11을 참조하면, 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 도 4 를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
태스크 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택한다(S210). 예를 들어, 큐 매니저(72)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택할 수 있다. 일 실시예에서, 제1 태스크는 기입 태스크일 수 있다. 일 실시예로서, 큐 매니저(72)는 큐잉 순서, 우선 순위 등을 기초로 제1 태스크를 선택할 수 있다. 예컨대, 큐 매니저(72)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 태스크 큐(21)에 가장 먼저 인큐된 태스크를 선택할 수 있다.
제1 태스크의 모드가 이전 태스크의 모드와 동일한지 판단한다(S220). 예를 들어, 큐 매니저(72)는 태스크 큐(21)에 저장된 제1 태스크 및 이전 태스크의 태스크 정보를 기초로 모드 동일성을 판단할 수 있다. 전술한 바와 같이, 태스크에 대응하는 커맨드 변수로부터 추출된 모드 정보는 태스크 정보로서, 태스크 큐(21)에 저장된다. 따라서, 큐 매니저(72)는 태스크 큐(21)에 저장된 제1 태스크의 모드 정보를 이전 태스크의 모드 정보와 비교하여 모드 동일성을 판단할 수 있다.
예를 들어, 이전 태스크는 커맨드 변수에 보통기입(regular write)이 설정되고, 선택된 태스크는 커맨드 변수에 신뢰 기입(reliable write) 또는 강제 기입(forced write)이 설정된 경우, 큐 매니저(72)는 이전 태스크의 기입 모드는 성능 기입 모드이고, 선택된 태스크의 기입 모드는 신뢰 기입 모드이므로, 선택된 태스크의 모드가 이전 태스크의 모드와 동일하지 않다고 판단할 수 있다.
제1 태스크의 모드가 이전 태스크의 모드와 동일하면, 제1 태스크를 레디 상태로 결정할 수 있다(S230). 제1 태스크가 실행 준비가 완료된 상태로 결정됨에 따라 이전 태스크에 이어서 제1 태스크가 실행될 수 있다.
반대로, 제1 태스크의 모드가 이전 태스크의 모드와 동일하지 않다면, 제1 태스크의 실행을 지연시킬 수 있다(S240). 예를 들어, 큐 매니저(72)는 태스크 큐(21)에 낫 레디 상태의 다른 태스크들이 존재한다면, 다른 태스크들의 실행 여부를 결정할 수 있다.
도 12는 본 개시의 일 실시예에 따른 호스트와 스토리지 장치의 동작을 나타내는 흐름도이다.
도 4 및 도 12를 참조하면, 호스트(200)는 신규 태스크(TASK_new)에 대한 태스크 설정/어드레스 커맨드를 스토리지 장치(100a)에 전송한다(S300). 스토리지 장치(100a)의 커맨드 디코더(31)는 신규 태스크(TASK_new)에 대한 태스크 설정/어드레스 커맨드를 커맨드 파서(71)에 전달하고, 커맨드 파서(71)는 신규 태스크(TASK_new)에 대한 태스크 정보를 태스크 큐(21)에 저장할 수 있다.
스토리지 장치(100a)는 새로 큐잉된 태스크를 확인한다(S310). 구체적으로, 큐 매니저(72)는 태스크 큐(21)에 인큐된 태스크, 예를 들어, 신규 태스크(TASK_new)를 확인할 수 있다. 스토리지 장치(100a)는 복수의 태스크들 중 하나를 선택한다(S320). 구체적으로, 큐 매니저(72)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 하나를 선택할 수 있다.
스토리지 장치(100a)는 선택된 태스크의 모드가 이전 태스크의 모드와 동일한지 판단한다(S330). 큐 매니저(72)는 태스크 큐(21)에 저장된 태스크 정보, 구체적으로 커맨드 변수로부터 추출된 모드 정보를 기초로 선택된 태스크의 모드가 이전 태스크의 모드와 동일한지 판단할 수 있다.
판단 결과, 선택된 태스크의 모드가 이전 태스크의 모드와 동일하지 않은 경우, 다른 태스크를 선택한다(S340). 구체적으로, 큐 매니저(72)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 다른 태스크를 선택하고, S330 단계를 다시 수행할 수 있다.
판단 결과, 선택된 태스크의 모드가 이전 태스크의 모드와 동일하면, 선택된 태스크를 레디 상태로 결정하고(S350), 상태 레지스터를 업데이트한다(S360). 예를 들어, 큐 매니저(72)는 선택된 태스크를 레디 상태로 결정하고, 상태 레지스터(32a)에서 선택된 태스크에 대응하는 비트를 0에서 1로 변경할 수 있다.
호스트(200)는 상태 레지스터(32a)에 저장된 상태를 체크하기 위한 상태 확인 커맨드(Q_CHECK)를 스토리지 장치(100a)에 전송한다(S370). S370 단계의 수행 시점은 S360 단계 이후로 한정되지 않으며, S370 단계는 단계 S300 단계와 S380 단계의 임의의 시점에 수행될 수 있다. 스토리지 장치(100a)는 상태 확인 커맨드(Q_CHECK)에 응답하여 상태 응답 메시지(Q_STATUS)를 호스트(200)에 전송한다(S280). 예를 들어, 상태 응답 메시지(Q_STATUS)는 선택된 태스크(TASK_sel)가 레디 상태임을 나타낼 수 있다.
도 13은 본 개시의 실시예에 따른, 스토리지 장치의 동작을 나타낸다.
도 13에서, 스토리지 장치(100a)는 캐시 온 모드 및 태스크 큐 기능을 지원하는 것을 가정하기로 한다. 또한, 태스크들(T1 내지 T9)은 기입 태스크이며, 태스크들(T1 내지 T9)중 제2 태스크(T2)의 기입 모드가 신뢰성 기입 모드이고, 다른 태스크들(T1, T3 내지 T9)의 기입 모드는 성능 기입 모드인 것을 예를 들어 설명하기로 한다.
도 4 및 도 13을 참조하면, 스토리지 장치(100a)의 태스크 큐(21)에 태스크들(T1 내지 T9)이 큐잉될 수 있다. 큐잉된 태스크들(T1 내지 T9) 중 가장 먼저 인큐된 제1 태스크(T1)가 레디 상태가 되고, 이에 따라 호스트(200)로부터 제1 태스크(T1)에 대응하는 기입 실행 커맨드(C1) 및 제1 데이터(D1)가 수신될 수 있다. 제1 태스크(T1)는 성능 기입 모드이므로, 스토리지 장치(100a)는 제1 데이터(D1)를 데이터 버퍼(23)에 저장할 수 있으며, 데이터 버퍼(23)에 프로그램 단위의 데이터가 저장될 때까지 프로그램을 수행하지 않을 수 있다.
제1 태스크(T1)가 실행된 후, 큐잉된 제2 내지 제9 태스크들 중 하나가 선택될 수 있다. 인큐 시점에 따르면, 제2 태스크(T2)가 실행되어야 하지만, 제2 태스크(T2)의 기입 모드는 이전 태스크, 즉 제1 태스크(T1)의 기입 모드와 상이한 바, 제2 태스크(T2)의 실행이 지연될 수 있다. 제1 태스크(T1)와 동일한 성능 기입 모드의 제3 내지 제9 태스크(T3 내지 T9)가 차례로 실행될 수 있다.
한편, 제1 태스크(T1)에 대응하는 제1 데이터(D1) 및 제3 내지 제8 태스크(T3 내지 T8) 태스크에 대응하는 제3 내지 제9 데이터(D3 내지 D9)가 데이터 버퍼(23)에 저장됨으로써, 프로그램 단위의 데이터가 저장될 수 있다. 이에 따라, 스토리지 장치(100a)는 데이터 버퍼(23)에 저장된 데이터를 비휘발성 메모리(120)에 프로그램할 수 있다. 스토리지 장치(100a)는 프로그램 준비를 할 수 있으며, 또한 제2 태스크(T2)를 실행시킬 수 있다. 제2 태스크(T2)가 레디 상태가 되고, 호스트(200)로부터 제2 태스크(T2)에 대응하는 기입 실행 커맨드(C2) 및 제2 데이터(D2)가 수신될 수 있다. 제2 태스크(T2)는 신뢰 기입 모드이므로, 수신된 제2 데이터(D2)는 비휘발성 메모리(120)에 프로그램되어야 한다.
스토리지 장치(100a)는 제2 데이터(D2) 및 데이터 버퍼(23)에 저장된 데이터, 즉 제1 데이터(D1) 및 제3 내지 제9 데이터(D3 내지 D9)를 서로 다른 메모리 디바이스, 예컨대, 제1 메모리 디바이스(CE0) 및 제2 메모리 디바이스(CE1)에 인터리빙 방식으로 프로그램할 수 있다. 제1 메모리 디바이스(CE0) 및 제2 메모리 디바이스(CE1)는 서로 다른 채널 또는 웨이에 연결될 수 있다. 예컨대, 제1 메모리 디바이스(CE0)는 싱글 레벨 셀들을 포함할 수 있으며, 제2 데이터(D2)는 제1 메모리 디바이스(CE0)에 싱글 레벨 프로그램되고, 제2 메모리 디바이스(CEO)는 멀티 레벨 셀들을 포함할 수 있으며, 데이터 버퍼(23)에 저장된 데이터는 제2 메모리 디바이스(CEO)에 멀티 레벨 프로그램될 수 있다.
이와 같이, 본 개시의 실시예에 따른 스토리지 장치(100a)는 태스크 스케쥴링을 통해 성능 기입 모드의 태스크들을 우선 실행시키고, 신뢰 기입 모드의 태스크를 지연 실행시킴으로써, 인터리빙하게 데이터를 프로그램할 수 있다. 이에 따라서 스토리지 장치(100a)의 성능이 향상될 수 있다.
도 14a 및 도 14b는 본 개시의 실시예에 따른 스토리지 장치의 동작에 대한 비교예이다.
도 14a 및 도 14b를 참조하면, 스토리지 장치는 큐잉된 태스크들을 큐잉된 순서에 따라 차례로 실행시킬 수 있다.
도 14a를 참조하면, 신뢰성 기입 모드의 제2 태스크(T2)가 실행되기 전, 성능 기입 모드인 제1 태스크(T1)에 해당하는 제1 데이터(D1)가 데이터 버퍼(23)에서플러시(flush)되어 비휘발성 메모리(120)에 프로그램될 수 있다. 이때, 제1 데이터(D1)가 비휘발성 메모리(120)에 프로그램완료 된 후, 호스트(200)가 제2 데이터(D2)를 스토리지 장치에 전송할 수 있어, 제1 데이터(D1) 및 제2 데이터(D2)의 인터리빙한 프로그램이 불가능하다.
도 14b를 참조하면, 제1 태스크(T1)의 제1 데이터(D1)를 비휘발성 메모리(120)에 프로그램하지 않은 상태에서, 제2 태스크(T2)가 실행될 수 있다. 제2 태스크(T2)는 신뢰성 기입 모드이므로, 제2 데이터(D2)의 프로그램이 완료된 후, 다음 태스크가 실행될 수 있다. 이로 인해, 다음 프로그램 커맨드의 이슈가 지연될 수 있다.
도 14a 및 도 14b를 참조하여 설명한 바와 같이, 신뢰성 기입 모드의 태스크가 성능 기입 모드의 태스크들의 실행 중간에 실행될 경우, 인터리빙한 프로그램이 불가능하며 스토리지 장치의 성능이 하락하게 된다. 그러나, 도 13을 참조하여 설명한 바와 같이, 본 개시의 실시예에 따른 스토리지 장치(100a)는 동일한 모드의 태스크들이 연이어 실행되도록 태스크 스케쥴링하여, 신뢰성 기입 모드의 태스크를 지연 실행시킴으로써, 인터리빙한 프로그램이 가능하며, 스토리지 장치(100a)의 성능이 향상될 수 있다.
도 15는 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다.
본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다. 또한, 본 실시예는 도 12의 변형 실시예에 대응할 수 있고, 도 12를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있고, 중복된 설명은 생략하기로 한다.
도 15를 참조하면, 우선, 복수의 태스크들 중 하나를 선택하고(S410), 선택된 태스크의 모드가 이전 태스크의 모드와 동일한지 판단할 수 있다(S420). 큐 매니저(72)는 태스크 큐(21)에 저장된 태스크 정보를 기초로 태스크의 모드가 이전 태스크의 모드와 동일한지 판단할 수 있다.
판단 결과, 선택된 태스크의 모드가 이전 태스크의 모드와 동일하지 않으며, 데이터 버퍼에 프로그램 단위의 데이터가 저장되었는지 판단할 수 있다(S430). 데이터 버퍼(23)에 프로그램 단위의 데이터가 저장되지 않은 경우, 다른 태스크를 선택하고(S440), S420 단계를 수행할 수 있다.
선택된 태스크의 모드가 이전 태스크의 모드와 동일하거나, 또는 데이터 버퍼에 프로그램 단위의 데이터가 저장된 경우, 선택된 태스크를 레디 상태로 결정한다(S450).
프로그램 수행 시, 효율적인 기입을 위해서, 데이터 버퍼(23)에 프로그램 단위의 데이터가 저장된 경우 프로그램을 수행할 수 있다. 본 실시예에 따르면, 전술한 바와 같이, 스토리지 장치(100a)의 성능 향상을 위하여 동일한 모드의 태스크가 연속하여 실행될 수 있도록 스케쥴링하되, 데이터 버퍼(23)에 프로그램 단위의 데이터가 저장된 경우, 다른 모드의 태스크를 실행함으로써, 다른 모드의 태스크의 실행이 지나치게 지연되는 것을 방지할 수 있다.
도 16은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타낸다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
도 16을 참조하면, 태스크 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하고(S510), 제1 태스크의 어드레스가 이전 태스크의 어드레스와 동일 어드레스 영역에 속하는지 판단할 수 있다(S520). 예컨대, 큐 매니저(72)는 태스크 큐(21)에 저장된 태스크 정보에서 제1 태스크의 어드레스와 이전 태스크의 어드레스를 확인하고, 제1 태스크의 어드레스와 이전 태스크의 어드레스가 동일한 어드레스 영역에 속하는지 판단할 수 있다. 이때, 어드레스 영역은 디바이스 컨트롤러(110)가 내부적으로 비휘발성 메모리(120)를 복수의 구역(Zone) 단위로 나누어 관리하거나 또는 호스트(200)가 설정한 파티션 단위로 나누어 관리하는 단위 어드레스 영역일 수 있다. 단위 어드레스 영역에 대한 메타 데이터는 함께 관리될 수 있다.
예컨대, 특정 비휘발성 메모리(120)의 제1 구역에 프로그램이 수행되는 경우, 제1 구역에 대한 메타 데이터가 비휘발성 메모리(120)에서 메모리(20)로 로딩되고, 이후, 제2 구역에 프로그램이 수행되면, 제1 구역에 대한 메타 데이터는 비휘발성 메모리(120)에 기입되어 업데이트되고, 제2 구역에 대한 메타 데이터가 메모리(20)로 로딩될 수 있다.
제1 태스크의 어드레스가 이전 태스크의 어드레스와 동일 어드레스 영역에 속하면, 제1 태스크를 레디 상태로 결정할 수 있다(S530). 제1 태스크가 실행 준비가 완료된 상태로 결정됨에 따라 이전 태스크에 이어서 제1 태스크가 실행될 수 있다.
반대로, 제1 태스크의 어드레스가 이전 태스크의 어드레스와 동일 어드레스 영역에 속하지 않는다면, 제1 태스크의 실행을 지연시킬 수 있다(S540). 예를 들어, 큐 매니저(72)는 태스크 큐(21)에 낫 레디 상태의 다른 태스크들이 존재한다면, 다른 태스크들의 실행 여부를 결정할 수 있다. 실시예에 있어서, 태스크 큐(21)에 낫 레디 상태의 다른 태스크들이 존재하지 않는다면, 큐 매니저(72)는 제1 태스크를 레디 상태로 결정할 수 있다.
본 개시의 실시예에 따르면, 동일한 어드레스 영역에 접근하는 태스크들이 연속적으로 실행될 수 있다. 따라서, 메타 데이터를 메모리(20)에 로딩하고, 다시 메타 데이터를 비휘발성 메모리(120)에 업데이트하는데 소요되는 시간이 감소될 수 있다.
도 17은 본 개시의 일 실시예에 따른 호스트와 스토리지 장치의 동작을 나타내는 흐름도이다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 도 4의 스토리지 장치(100a)에서 시계열적으로 수행되는 단계들을 포함할 수 있다.
도 17을 참조하면, 우선, 태스크 큐에 큐잉된 복수의 태스크들 중 제1 태스크를 선택하고(S610), 선택된 태스크의 모드가 이전 태스크의 모드와 동일한지 판단할 수 있다(S620). 큐 매니저(72)는 태스크 큐(21)에 저장된 태스크 정보, 즉 모드 정보를 기초로 태스크의 모드가 이전 태스크의 모드와 동일한지 판단할 수 있다.
판단 결과, 선택된 태스크의 모드가 이전 태스크의 모드와 동일하지 않으며, 다른 태스크를 선택하고(S630), 선택된 다른 태스크에 대하여 S620 단계를 수행한다.
선택된 태스크의 모드가 이전 태스크의 모드와 동일하면, 선택된 태스크의 어드레스가 이전 태스크의 어드레스와 동일 어드레스 영역에 속하는지 판단할 수 잇다(S640). 큐 매니저(72)는 태스크 큐(21)에 저장된 태스크 정보, 즉 어드레스를기초로 태스크의 모드가 이전 태스크의 모드와 동일한지 판단할 수 있다.
선택된 태스크의 어드레스가 이전 태스크의 어드레스와 동일 어드레스 영역에 속하지 않으면, 다른 태스크를 선택하고(S630), 선택된 다른 태스크에 대하여 S720 단계를 수행한다. 선택된 태스크의 어드레스가 이전 태스크의 어드레스와 동일 어드레스 영역에 속하면, 선택된 태스크를 레디 상태로 결정한다(S650).
도 18은 본 개시의 일 실시예에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다. 본 실시예에 따른 동작 방법은 스토리지 장치에서 태스크의 실행 순서를 결정하는 방법으로서, 예를 들어, 전술한 본 개시의 실시예들에 따른 스토리지 장치(도 1 및 도 2의 100, 도 4의 100a)에서 수행될 수 있다. 따라서, 도 1 내지 도 17을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 이하, 도 1을 함께 참조하여 설명하기로 한다.
도 18을 참조하면, 태스크 큐에 큐잉된 복수의 커맨드들 중 제1 태스크를 선택한다(S710). 예를 들어, 스케쥴러(11)는 태스크 큐(21)에 큐잉된 복수의 태스크들 중 제1 태스크를 선택할 수 있다. 일 실시예에서, 제1 태스크는 기입 태스크일 수 있다. 예를 들어, 스케쥴러(11)는 태스크 큐(21)에 큐잉된 복수의 기입 태스크들에 대하여 큐잉된 순서에 따라 제1 태스크를 선택할 수 있다. 한편, 제1 태스크는 독출 태스크일 수 있으며, 스케쥴러(11)는 태스크 큐(21)에 큐잉된 독출 태스크들 중, 접근할 어드레스에 대응하는 맵핑 테이블이 메모리(20)에 로딩된 독출 태스크를 선택할 수 있다.
제1 태스크의 변수와 이전 태스크의 변수를 비교한다(S720). 이때 이전 태스크는 가장 최근에 실행된 태스크를 의미한다. 예를 들어, 스케쥴러(11)는 제1 태스크의 변수에 포함된 모드와 이전 태스크의 변수에 포함된 모드를 비교하여, 동일성을 판단할 수 있다. 다른 예로서, 스케쥴러(11)는 제1 태스크의 변수에 포함된 어드레스와 이전 태스크의 변수에 포함된 어드레스를 비교하여, 제1 태스크의 어드레스와 제2 태스크의 어드레스가 동일한 어드레스 영역에 속하는지 판단할 수 있다.
이후, 비교 결과에 따라, 제1 태스크의 실행 순서를 결정할 수 있다(S730).
예를 들어, 비교 결과, 스케쥴러(11)는 제1 태스크의 모드가 이전 태스크의 모드와 동일하지 않다고 판단되면, 제1 커맨드의 실행 순서를 지연시킬 수 있고, 태스크 큐(21)에 큐잉된 태스크들 중 다른 태스크를 선택할 수 있다. 스케쥴러(11)는 제1 태스크의 모드가 이전 태스크의 모드와 동일하다고 판단되면, 제1 태스크에 대한 실행 요청을 호스트(200)에 전송할 수 있다.
다른 예로서, 비교 결과, 스케쥴러(11)는 제1 태스크의 어드레스와 이전 태스크의 어드레스가 동일한 어드레스 영역에 속한다고 판단되지 않으면, 제1 커맨드의 실행 순서를 지연시키고 태스크 큐(21)에 큐잉된 다른 태스크를 선택할 수 이다. 스케쥴러(11)는 제1 태스크의 어드레스와 이전 태스크의 어드레스가 동일한 어드레스 영역에 속한다고 판단되면, 제1 태스크에 대한 실행 요청을 호스트(200)에 전송할 수 있다.
이와 같이, 본 개시의 실시예에 따른 스토리지 장치(100)에서, 스케쥴러(11)가 복수의 태스크들에 대응하는 커맨드들(CMD)의 커맨드 변수(argument)를 기초로, 스토리지 장치(100)의 성능이 향상될 수 있도록 복수의 태스크들의 실행 순서를 결정할 수 있다. 스케쥴러(11)는 동일한 모드의 태스크들이 연속하여 실행되거나, 또는 동일한 어드레스 영역에 접근하는 태스크들이 연속하여 실행되도록 복수의 태스크들의 실행 순서를 결정할 수 있다.
도 19는 본 개시의 일 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 19를 참조하면, 전자 장치(2000)는 프로세서(2100), 메모리 장치(2200), 스토리지 장치(2300), 모뎀(2400), 입출력 장치(2500) 및 파워 서플라이(2600)를 포함할 수 있다. 본 실시예에서, 스토리지 장치(2300)는 캐시 기능 및 커맨드 큐 기능을 지원할 수 있고, 태스크의 커맨드 변수를 기초로 태스크의 실행 순서를 결정할 수 있다. 스토리지 장치(2300)는 태스크의 커맨드 변수를 기초로 동일한 모드의 태스크들이 연속하여 실행될 수 있도록 태스크의 실행 순서를 결정하거나, 또는 동일한 어드레스 영역에 속하는 어드레스에 접근하는 태스크들이 연속하여 실행될 수 있드록 태스크의 실행 순서를 결정할 수 있다. 도 1 내지 도 18을 참조하여 상술된 내용은 스토리지 장치(2300)에 적용될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000: 스토리지 시스템, 100, 100a: 스토리지 장치, 200: 호스트
110, 110a: 디바이스 컨트롤러, 120: 비휘발성 메모리
11: 스케쥴러, 21: 태스크 큐

Claims (10)

  1. 비휘발성 메모리를 포함하는 스토리지 장치의 동작 방법으로서,
    프로세서로부터 상기 스토리지 장치를 실행시키기 위한 커맨드를 수신하는 단계;
    상기 스토리지 장치의 태스크 큐(task queue)에 복수의 태스크들을 큐잉하는 단계;
    스케쥴러를 이용하여 복수의 태스크들 중 제1 태스크의 모드가 이전 수행된 태스크의 모드와 동일한지 여부를 판단하는 단계; 및
    상기 판단의 결과에 따라, 상기 제1 태스크의 실행 순서를 결정하는 단계를 포함하고,
    상기 큐잉하는 단계는
    상기 스케쥴러를 이용하여 상기 커맨드로부터 실행될 태스크의 모드를 추출하는 단계; 및
    추출된 상기 모드의 정보를 태스크 큐에 저장하는 단계를 포함하고,
    상기 커맨드는 상기 태스크에 대응되는 명령이고 복수의 실행 모드 중 하나의 모드를 가지며,
    상기 제 1 태스크 및 상기 이전 수행된 태스크 각각은 기입 동작과 관련되고, 상기 복수의 실행 모드는 제1 기입 모드 및 제2 기입 모드를 포함하고,
    상기 제1 기입 모드는 기입 데이터가 상기 비휘발성 메모리에 즉시 프로그램될 것을 요구하지 않으며, 상기 제2 기입 모드는 상기 기입 데이터가 상기 비휘발성 메모리에 즉시 프로그램될 것을 요구하는 것을 특징으로 하는 방법.
  2. 제1 항에 있어서, 상기 제1 태스크의 실행 순서를 결정하는 단계는,
    상기 제1 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일하지 않으면, 상기 제1 태스크의 실행 순서를 지연시키는 단계; 및
    상기 제1 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일하면, 상기 제1 태스크를 레디(ready) 상태로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제2 항에 있어서,
    상기 제1 태스크의 실행 순서를 지연시키는 단계는, 상기 복수의 태스크들 중 제2 태스크를 선택하는 단계를 포함하고,
    상기 방법은,
    상기 제2 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일한지 여부를 판단하는 단계; 및
    상기 판단 결과에 따라, 상기 제2 태스크의 실행 순서를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제1 항에 있어서, 상기 제1 태스크의 실행 순서를 결정하는 단계는,
    상기 제1 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일하지 않으면, 프로그램 버퍼에 프로그램 단위의 데이터가 저장되었는지 확인하는 단계;
    상기 프로그램 버퍼에 상기 프로그램 단위의 데이터가 저장되지 않은 경우, 상기 복수의 태스크들 중 제2 태스크를 선택하는 단계; 및
    상기 제1 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일하거나 또는 상기 프로그램 버퍼에 상기 프로그램 단위의 데이터가 저장된 경우, 상기 제1 태스크를 레디 상태로 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 제1 태스크의 실행 순서를 결정하는 단계는,
    상기 제1 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일하면, 상기 제1 태스크에 의해 엑세스되는 제1 어드레스가 상기 이전 수행된 태스크에 의해 엑세스되는 제2 어드레스와 동일한 어드레스 영역에 포함되는지 확인하는 단계;
    상기 제1 어드레스가 상기 제2 어드레스와 동일한 어드레스 영역에 속하는 경우, 상기 제1 태스크를 레디(ready) 상태로 결정하는 단계;
    상기 제1 태스크의 모드가 상기 이전 수행된 태스크의 모드와 동일하지 않거나, 또는 상기 제1 어드레스가 상기 제2 어드레스와 동일한 어드레스 영역에 속하지 않는 경우, 상기 제1 태스크의 실행 순서를 지연시키는 단계를 포함하는 방법.
  6. 제5 항에 있어서, 상기 비휘발성 메모리는 복수의 논리 어드레스 영역으로구분되며, 상기 어드레스 영역은 상기 복수의 논리 어드레스 영역 중 하나인 것을 특징으로 하는 방법.
  7. 제1 항에 있어서, 상기 모드는 태스크에 대응하는 커맨드의 커맨드 변수(argument)에 포함된 모드 정보에 따라 설정되는 것을 특징으로 하는 방법.
  8. 제7 항에 있어서, 상기 모드 정보는,
    상기 제1 기입 모드 또는 상기 제2 기입 모드를 결정하는, 신뢰성 기입, 포스 기입 및 데이터 태그 모드 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서, 상기 스토리지 장치는 캐시 기능이 활성화된 캐시 온 모드로 동작하는 것을 특징으로 하는 방법. ,
  10. 제1 항에 있어서,
    상기 스토리지 장치는 eMMC(embedded Multi-Media Card)인 것을 특징으로 하는 방법.
KR1020170122665A 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법 KR102549540B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170122665A KR102549540B1 (ko) 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법
CN201811105439.5A CN109542336B (zh) 2017-09-22 2018-09-20 存储设备及其操作方法
US16/138,272 US11194510B2 (en) 2017-09-22 2018-09-21 Storage device and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170122665A KR102549540B1 (ko) 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20190033921A KR20190033921A (ko) 2019-04-01
KR102549540B1 true KR102549540B1 (ko) 2023-06-29

Family

ID=65809009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170122665A KR102549540B1 (ko) 2017-09-22 2017-09-22 스토리지 장치 및 그 동작 방법

Country Status (3)

Country Link
US (1) US11194510B2 (ko)
KR (1) KR102549540B1 (ko)
CN (1) CN109542336B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111679945A (zh) * 2020-06-12 2020-09-18 地平线(上海)人工智能技术有限公司 处理器的检测方法、装置及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040066700A1 (en) * 2002-10-07 2004-04-08 Jung-Bae Lee Circuits and methods for providing page mode operation in semiconductor memory device having partial activation architecture
US20110238933A1 (en) * 2008-12-11 2011-09-29 Akihisa Fujimoto Memory device and controlling method of the same
US20170083264A1 (en) * 2015-09-17 2017-03-23 SK Hynix Inc. Semiconductor system and operating method thereof

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301278A (en) * 1988-04-29 1994-04-05 International Business Machines Corporation Flexible dynamic memory controller
US5274772A (en) * 1989-06-28 1993-12-28 International Business Machines Corporation Data processing systems having means for selectively combining records into signal blocks for recording in a record medium
US5440752A (en) * 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5845271A (en) * 1996-01-26 1998-12-01 Thaler; Stephen L. Non-algorithmically implemented artificial neural networks and components thereof
TW561396B (en) * 2001-11-02 2003-11-11 Via Tech Inc Arbitration device and method for reading and writing operation of memory
US8214844B2 (en) * 2005-04-29 2012-07-03 Hewlett-Packard Development Company, L.P. Systems and methods for adjusting service queue capacity
US8032885B2 (en) * 2005-10-11 2011-10-04 Oracle International Corporation Method and medium for combining operation commands into database submission groups
US7516301B1 (en) * 2005-12-16 2009-04-07 Nvidia Corporation Multiprocessor computing systems with heterogeneous processors
KR101486987B1 (ko) 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US20100052862A1 (en) * 2008-08-28 2010-03-04 Mitac Technology Corp. Method for preventing signal collision in radio frequency identification system and radio frequency identification tag used thereof
CN101859256B (zh) * 2009-11-25 2013-03-06 北京航空航天大学 一种硬件虚拟机中精简模式切换的i/o虚拟化方法
US8325531B2 (en) * 2010-01-07 2012-12-04 Spansion Llc Memory device
JP2011175615A (ja) 2010-01-27 2011-09-08 Toshiba Corp ホスト装置およびメモリデバイス
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US20120137093A1 (en) * 2010-11-30 2012-05-31 Micron Technology, Inc. Reliable write for non-volatile memory
JP5672199B2 (ja) * 2011-09-01 2015-02-18 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
KR101989850B1 (ko) * 2012-04-03 2019-06-18 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
CN102693159B (zh) * 2012-05-09 2015-07-01 上海晨思电子科技有限公司 基于用户模式多任务下控制硬件设备的方法及其装置
US9122401B2 (en) 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
KR101988260B1 (ko) 2012-09-14 2019-06-12 삼성전자주식회사 임베디드 멀티미디어 카드, 및 이의 동작 방법
KR101363422B1 (ko) 2012-10-04 2014-02-14 주식회사 디에이아이오 비휘발성 메모리 시스템
TWI526838B (zh) * 2013-02-27 2016-03-21 東芝股份有限公司 記憶體裝置
KR102039537B1 (ko) * 2013-03-15 2019-11-01 삼성전자주식회사 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법
KR102025240B1 (ko) * 2013-04-01 2019-11-04 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9646705B2 (en) * 2013-06-12 2017-05-09 Samsung Electronics Co., Ltd. Memory systems including nonvolatile memory devices and dynamic access methods thereof
KR102210961B1 (ko) * 2013-06-12 2021-02-03 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법
KR102111741B1 (ko) 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
KR102254099B1 (ko) * 2014-05-19 2021-05-20 삼성전자주식회사 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
KR102308777B1 (ko) * 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
US9483187B2 (en) * 2014-09-30 2016-11-01 Nimble Storage, Inc. Quality of service implementation in a networked storage system with hierarchical schedulers
KR20160049200A (ko) 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
KR102367982B1 (ko) * 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR102356523B1 (ko) * 2015-08-04 2022-02-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20170068480A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Power Saving Methodology for Storage Device Equipped with Task Queues
US20180018610A1 (en) * 2016-07-14 2018-01-18 Lendinghome Corp. Systems and methods for optimizing parallel task completion
CN106257893A (zh) * 2016-08-11 2016-12-28 浪潮(北京)电子信息产业有限公司 存储服务器任务响应方法、客户端、服务器及系统
KR102430983B1 (ko) * 2017-09-22 2022-08-09 삼성전자주식회사 스토리지 장치 및 그 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040066700A1 (en) * 2002-10-07 2004-04-08 Jung-Bae Lee Circuits and methods for providing page mode operation in semiconductor memory device having partial activation architecture
US20110238933A1 (en) * 2008-12-11 2011-09-29 Akihisa Fujimoto Memory device and controlling method of the same
US20170083264A1 (en) * 2015-09-17 2017-03-23 SK Hynix Inc. Semiconductor system and operating method thereof

Also Published As

Publication number Publication date
CN109542336B (zh) 2023-11-03
US20190095137A1 (en) 2019-03-28
US11194510B2 (en) 2021-12-07
KR20190033921A (ko) 2019-04-01
CN109542336A (zh) 2019-03-29

Similar Documents

Publication Publication Date Title
CN110088723B (zh) 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法
CN110088725B (zh) 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法
US10496281B2 (en) Data storage device, data processing system and method of operation
KR102549545B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR101516580B1 (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
CN107621959B (zh) 电子装置及其软件训练方法、计算系统
US11669272B2 (en) Predictive data transfer based on availability of media units in memory sub-systems
US20130326113A1 (en) Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
US10445252B2 (en) Storage device and operating method performed by the same
US20190163623A1 (en) Memory system and operating method thereof
US20130254455A1 (en) Solid state drive interface controller and method of controlling solid state drive interface
US11360706B2 (en) Memory system with program mode switching based on mixed and sequential workloads
US11494318B2 (en) Controller and operation method thereof
CN111796759A (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
CN112445423A (zh) 存储器系统、计算机系统及其数据管理方法
KR20190130831A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
US10466938B2 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
CN111813703A (zh) 数据储存装置及逻辑至物理地址映射表的更新方法
KR20100120518A (ko) 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
US11194507B2 (en) Controller and operation method thereof
KR102549540B1 (ko) 스토리지 장치 및 그 동작 방법
CN117836751A (zh) 使用存储器装置中的存储器存取命令队列提高存储器性能
KR20230060817A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20140149646A1 (en) Memory systems including flash memories, first buffer memories, second buffer memories and memory controllers and methods for operating the same
KR20200034312A (ko) 데이터 저장 장치 및 그것의 동작 방법

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