KR20190057779A - 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치 - Google Patents

호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치 Download PDF

Info

Publication number
KR20190057779A
KR20190057779A KR1020170155116A KR20170155116A KR20190057779A KR 20190057779 A KR20190057779 A KR 20190057779A KR 1020170155116 A KR1020170155116 A KR 1020170155116A KR 20170155116 A KR20170155116 A KR 20170155116A KR 20190057779 A KR20190057779 A KR 20190057779A
Authority
KR
South Korea
Prior art keywords
data
memory
host
memory access
controller
Prior art date
Application number
KR1020170155116A
Other languages
English (en)
Other versions
KR102395477B1 (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 KR1020170155116A priority Critical patent/KR102395477B1/ko
Priority to US16/058,197 priority patent/US10782915B2/en
Priority to CN201811235057.4A priority patent/CN109815172B/zh
Publication of KR20190057779A publication Critical patent/KR20190057779A/ko
Application granted granted Critical
Publication of KR102395477B1 publication Critical patent/KR102395477B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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]

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)
  • Memory System (AREA)

Abstract

저장 장치에 포함된 장치 컨트롤러는, 호스트 메모리에 연결되고, 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러, 복수의 비휘발성 메모리 장치들에 연결되고, 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러, 호스트 메모리와 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 호스트 컨트롤러를 통하여 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러, 및 비-데이터 영역에 대한 비-데이터 메모리 액세스가, 물리 영역 페이지에 의해 데이터 영역 내에 할당되는 연속된 데이터인 데이터 청크에 대한 데이터 메모리 액세스가 완료된 후 수행되도록, 데이터 메모리 액세스 및 비-데이터 메모리 액세스를 재정렬하는 스케쥴러를 포함한다.

Description

호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치{DEVICE CONTROLLER THAT SCHEDULES MEMORY ACCESSES TO A HOST MEMORY, AND STORAGE DEVICE INCLUDING THE SAME}
본 발명은 저장 장치에 관한 것으로서, 더욱 상세하게는 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치에 관한 것이다.
종래의 SATA(Serial Advanced Technology Attachment) 또는 SAS(Serial-attached SCSI(Small Computer System Interface)) SSD(Solid State Drive)와 같은 종래의 저장 장치는 호스트 버스 어댑터(Host Bus Adapter; HBA)를 통하여 호스트에 연결되었고, 상기 HBA로부터 커맨드 및 데이터를 수신한다. 한편, SATA 또는 SAS와 같은 인터페이스는 SSD와 같은 저장 장치에 특화된 인터페이스가 아니므로 한계점을 가진다. 최근, SSD에 보다 적합한 인터페이스로서 NVMe(Non-Volatile Memory express) 인터페이스가 개발되었다. NVMe 인터페이스를 채용한 NVMe SSD는 호스트 버스에 직접 연결되고, 커맨드 및 데이터를 송수신하도록 호스트 메모리를 직접 액세스할 수 있다.
본 발명의 일 목적은 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러를 제공하는 것이다.
본 발명의 다른 목적은 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러를 포함하는 저장 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저장 장치에 포함된 장치 컨트롤러는, 호스트 메모리에 연결되고, 상기 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러, 복수의 비휘발성 메모리 장치들에 연결되고, 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러, 상기 호스트 메모리와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 상기 호스트 컨트롤러를 통하여 상기 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러, 및 상기 비-데이터 영역에 대한 상기 비-데이터 메모리 액세스가, 물리 영역 페이지(Physical Region Page; PRP)에 의해 상기 데이터 영역 내에 할당되는 연속된 데이터인 데이터 청크(Chunk)에 대한 상기 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬하는 스케쥴러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저장 장치에 포함된 장치 컨트롤러는, 호스트 메모리에 연결되고, 상기 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러, 복수의 비휘발성 메모리 장치들에 연결되고, 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러, 상기 호스트 메모리와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 상기 호스트 컨트롤러를 통하여 상기 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러, 및 미처리 커맨드들의 수 또는 상기 복수의 비휘발성 메모리 장치들의 처리 효율에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행하는 스케쥴러를 포함한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 저장 장치는 복수의 비휘발성 메모리 장치들, 및 상기 복수의 비휘발성 메모리 장치들을 제어하는 장치 컨트롤러를 포함한다. 상기 장치 컨트롤러는, 호스트 메모리에 연결되고, 상기 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러, 상기 복수의 비휘발성 메모리 장치들에 연결되고, 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러, 상기 호스트 메모리와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 상기 호스트 컨트롤러를 통하여 상기 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러, 및 상기 비-데이터 영역에 대한 상기 비-데이터 메모리 액세스가, 물리 영역 페이지(Physical Region Page; PRP)에 의해 상기 데이터 영역 내에 할당되는 연속된 데이터인 데이터 청크(Chunk)에 대한 상기 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬하는 스케쥴러를 포함한다.
상기와 같은 본 발명의 실시예들에 따른 장치 컨트롤러 및 저장 장치는, 호스트 메모리의 데이터 영역 내의 데이터 청크(Chunk)에 대한 데이터 메모리 액세스가 완료된 후 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스가 수행되도록 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬함으로써 호스트 메모리의 로우 버퍼의 히트율을 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 장치 컨트롤러 및 저장 장치는, 미처리(outstanding) 커맨드들의 수 및/또는 비휘발성 메모리 장치들의 처리 효율에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행함으로써, 저장 장치의 처리 효율을 유지하면서 호스트 메모리의 로우 버퍼의 히트율을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템에서의 커맨드 처리(Command Processing)의 일 예를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 저장 장치의 장치 컨트롤러를 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 장치 컨트롤러에 포함된 스케쥴러를 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 장치 컨트롤러가 호스트 메모리 액세스들을 재정렬하는 일 예를 설명하기 위한 도면이다.
도 6은 본 발명의 다른 실시예에 따른 저장 장치의 장치 컨트롤러를 나타내는 블록도이다.
도 7은 본 발명의 다른 실시예에 따른 장치 컨트롤러에 포함된 스케쥴러의 상태도이다.
도 8은 본 발명의 또 다른 실시예에 따른 저장 장치의 장치 컨트롤러를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이고, 도 2는 본 발명의 실시예들에 따른 저장 장치를 포함하는 컴퓨팅 시스템에서의 커맨드 처리(Command Processing)의 일 예를 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 데이터 독출 및 기입 요청들을 생성하는 호스트(110), 및 상기 데이터 독출 및 기입 요청들에 응답하여 데이터 독출 및 기입 동작들을 수행하는 저장 장치(200)를 포함할 수 있다. 실시예에 따라, 컴퓨팅 시스템(100)은 개인용 컴퓨터(personal computer), 노트북(laptop computer), 서버 컴퓨터(server computer), 워크스테이션(workstation), 핸드폰(cellular phone), 스마트 폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등의 임의의 전자 기기일 수 있다.
호스트(110)는 호스트 프로세서(120) 및 호스트 메모리(130)를 포함할 수 있다. 호스트 프로세서(120)는 호스트(110) 또는 컴퓨팅 시스템(100)의 전체적인 동작을 제어할 수 있다. 실시예에 따라, 호스트 프로세서(120)는 중앙 처리 장치(Central Processing Unit; CPU), 마이크로프로세서, 어플리케이션 프로세서(Application Processor; AP) 등일 수 있다. 또한, 호스트 프로세서(120)(또는 호스트 프로세서(120)에 의해 실행되는 호스트 소프트웨어)는 저장 장치(200)의 데이터 독출 및 기입 동작들을 요청하는 커맨드들을 호스트 메모리(130)(예를 들어, 호스트 메모리(130)의 비-데이터 영역(160))에 기입할 수 있다.
호스트 메모리(130)는 컴퓨팅 시스템(100)의 시스템 메모리로서 호스트 프로세서(120)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 실시예에 따라, 호스트 메모리(130)는 SRAM(static random access memory), DRAM(dynamic random access memory) 등과 같은 휘발성 메모리로 구현될 수 있으나, 이에 한정되지 않는다. 호스트 메모리(130)는 매트릭스 형태로 배치된 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(140), 및 메모리 셀 어레이(140)로부터 독출된 데이터 또는 메모리 셀 어레이(140)에 기입될 데이터를 일시적으로 저장하는 로우 버퍼(170)를 포함할 수 있다. 또한, 메모리 셀 어레이(140)의 일부 영역은 저장 장치(200)를 위한 데이터 영역(150)으로 이용되고, 메모리 셀 어레이(140)의 다른 일부 영역은 저장 장치(200)를 위한 비-데이터 영역(160)으로 이용될 수 있다. 여기서, 데이터 영역(150)은 저장 장치(200)를 위하여 호스트 메모리(130)내에 할당된 영역으로서, 저장 장치(200)로부터 독출될 데이터(예를 들어, 사용자 데이터)가 저장될 영역 또는 저장 장치(200)에 기입될 데이터(예를 들어, 사용자 데이터)가 저장된 영역을 의미한다. 또한, 비-데이터 영역(160)은 저장 장치(200)를 위하여 호스트 메모리(130)내에 할당된 데이터 영역(150)과 다른 영역으로서, 저장 장치(200)에 대한 제어 정보 등을 저장하는 영역일 수 있다. 일 실시예에서, 비-데이터 영역(160)은, 이에 한정되지 않으나, 저장 장치(200)에 의해 실행될 하나 이상의 커맨드들이 저장되는 SQ(Submission Queue) 영역, 데이터 영역(150) 내에 할당된 물리적 메모리 페이지(physical memory page) 또는 데이터 청크(Chunk)의 어드레스 정보가 저장되는 물리 영역 페이지(Physical Region Page; PRP) 영역, 및 상기 커맨드의 실행 완료 여부에 대한 컴플리션 정보가 저장되는 컴플리션 큐(Completion Queue; CQ) 영역을 포함할 수 있다. 한편, 상기 SQ 및 상기 CQ 각각은 순환(circular) 버퍼일 수 있고, 하나 또는 그 이상의 SQ들과 하나의 CQ가 하나의 세트 또는 쌍(pair)을 이룰 수 있으며, 비-데이터 영역(160)에는 하나 또는 그 이상의 SQ 및 CQ의 쌍들이 저장될 수 있다. 또한, 여기서, 상기 데이터 청크는 하나의 PRP에 의해 데이터 영역(150) 내에 할당되는 연속된 데이터 메모리 영역으로서, 각 데이터 청크는 저장 장치(200)로부터 독출될 데이터(예를 들어, 사용자 데이터)가 저장될 데이터 메모리 영역이거나, 저장 장치(200)에 기입될 데이터(예를 들어, 사용자 데이터)가 저장된 데이터 메모리 영역일 수 있다. 일 예에서, 각 데이터 청크는 약 4KB의 크기를 가질 수 있으나, 이에 한정되지 않는다. 다른 실시예에서, 비-데이터 영역(160)은 저장 장치(200)에 의해 사용되는 영역인 호스트 메모리 버퍼(Host Memory Buffer; HMB) 영역을 더 포함할 수 있다.
저장 장치(200)는 복수의 비휘발성 메모리 장치들(280), 및 복수의 비휘발성 메모리 장치들(280)을 제어하는 장치 컨트롤러(210)를 포함할 수 있다. 일 실시예에서, 저장 장치(200)는 장치 컨트롤러(210)의 내부 또는 외부에 위치한 버퍼 메모리(290)를 더 포함할 수 있다. 일 실시예에서, 저장 장치(200)는 솔리드 스테이트 드라이브(Solid State Drive; SSD)일 수 있으나, 이에 한정되지 않는다. 또한, 실시예에 따라, 복수의 비휘발성 메모리 장치들(280)은 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM), 또는 이들의 조합을 포함할 수 있으나, 이에 한정되지 않는다. 장치 컨트롤러(210)는 호스트 메모리(130)로부터 데이터 독출 및 기입 요청들을 포함하는 커맨드들을 독출하고, 호스트 메모리(130)로부터 독출된 상기 커맨드들에 응답하여 데이터 독출 및 기입 동작들을 수행하도록 저장 장치(200)를 제어할 수 있다.
한편, 장치 컨트롤러(210)는, 예를 들어 호스트 메모리(130)로부터 상기 커맨드를 독출하거나, 데이터 영역(150) 내의 데이터 청크의 어드레스 정보를 독출하거나, 호스트 메모리(130)에 컴플리션 정보를 기입하도록, 호스트 메모리(130)의 비-데이터 영역(160)에 대한 비-데이터 메모리 액세스를 수행할 수 있다. 또한, 장치 컨트롤러(210)는, 예를 들어 비휘발성 메모리 장치들(280)로부터 독출된 데이터를 데이터 영역(150) 내의 데이터 청크에 기입하거나, 비휘발성 메모리 장치들(280)에 기입될 데이터를 데이터 영역(150) 내의 데이터 청크로부터 독출하도록, 호스트 메모리(130)의 데이터 영역(150)에 대한 데이터 메모리 액세스를 수행할 수 있다. 한편, 본 발명의 실시예들에 따른 장치 컨트롤러(210)는, 비-데이터 영역(160)에 대한 상기 비-데이터 메모리 액세스가, 상기 PRP에 의해 데이터 영역(150) 내에 할당되는 연속된 데이터인 데이터 청크에 대한 상기 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬(re-ordering)할 수 있다. 즉, 장치 컨트롤러(210)는 상기 비-데이터 메모리 액세스를 연속된 데이터인 데이터 청크에 대한 상기 데이터 메모리 액세스가 완료된 후로 지연시킬 수 있다. 이에 따라, 상기 연속된 데이터인 데이터 청크에 대한 상기 데이터 메모리 액세스가 연속적으로 수행되므로, 호스트 메모리(130)의 캐시 역할을 하는 로우 버퍼(170)의 히트율(hit ratio)이 향상될 수 있다. 또한, 일 실시예에서, 장치 컨트롤러(210)는 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 상기 SQ 영역에 저장된 미처리(outstanding) 커맨드들의 수 및/또는 비휘발성 메모리 장치들(280)의 처리 효율에 따라 선택적으로 수행할 수 있다. 이에 따라, 본 발명의 일 실시예에 따른 장치 컨트롤러(210)는 저장 장치(200)의 처리 효율을 유지하면서 호스트 메모리(130)의 로우 버퍼(170)의 히트율을 향상시킬 수 있다.
이하, 도 1 및 도 2를 참조하여 본 발명의 실시예들에 따른 저장 장치(200)를 포함하는 컴퓨팅 시스템(100)에서의 커맨드 처리(Command Processing)의 일 예를 설명한다.
도 1 및 도 2를 참조하면, 호스트 프로세서(120)(또는 호스트 프로세서(120)에 의해 실행되는 호스트 소프트웨어)는 호스트 메모리(130)에 저장 장치(200)의 데이터 독출 또는 기입 동작을 요청하는 적어도 하나의 커맨드를 기입할 수 있다(S310). 일 실시예에서, 호스트 프로세서(120)는 호스트 메모리(130)의 비-데이터 영역(160) 중 SQ 영역에 저장 장치(200)에 대한 상기 커맨드를 기입할 수 있다.
호스트 프로세서(120)는 상기 SQ 영역에 처리될 커맨드가 기입되었음을 알리도록 저장 장치(200)의 SQ 도어벨(Doorbell)을 업데이트할 수 있다(S320). 일 실시예에서, 저장 장치(200)의 장치 컨트롤러(210)는 순환 버퍼인 상기 SQ 내에 저장된 상기 커맨드들 중 마지막 커맨드의 포인터가 저장되는 SQ 테일(Tail) 도어벨 레지스터를 포함할 수 있고, 호스트 프로세서(120)가 상기 SQ 영역에 상기 적어도 하나의 커맨드를 기입한 후, 호스트 프로세서(120)는 상기 SQ 테일 도어벨 레지스터를 기입된 마지막 커맨드를 지시하는 값으로 업데이트할 수 있다.
저장 장치(200)의 장치 컨트롤러(210)는 호스트 메모리(130)의 상기 SQ 영역으로부터 상기 커맨드를 페치하고(S330), 상기 페치된 커맨드를 실행할 수 있다(S340). 일 예에서, 상기 페치된 커맨드가 데이터 독출 커맨드인 경우, 장치 컨트롤러(210)는 호스트 메모리(130)의 비-데이터 영역(160) 중 PRP 영역으로부터 PRP 엔트리, 즉 비휘발성 메모리 장치(280)로부터 독출된 데이터가 저장될 데이터 청크의 어드레스 정보를 페치하고(S360), 상기 페치된 커맨드에 응답하여 비휘발성 메모리 장치들(280)로부터 데이터를 독출하며, 상기 독출된 데이터를 상기 PRP 엔트리가 지시하는 데이터 영역(150) 내의 상기 데이터 청크에 기입할 수 있다(S360). 다른 예에서, 상기 페치된 커맨드가 데이터 기입 커맨드인 경우, 장치 컨트롤러(210)는 호스트 메모리(130)의 비-데이터 영역(160) 중 PRP 영역으로부터 PRP 엔트리, 즉 비휘발성 메모리 장치들(280)에 기입될 데이터가 저장될 데이터 청크의 어드레스 정보를 페치하고(S360), 상기 페치된 커맨드에 응답하여 상기 PRP 엔트리가 지시하는 데이터 영역(150) 내의 상기 데이터 청크로부터 데이터를 독출하며, 데이터 영역(150) 내의 상기 데이터 청크로부터 독출된 데이터를 비휘발성 메모리 장치들(280)에 기입할 수 있다(S365).
상기 페치된 커맨드에 상응하는 데이터 독출 동작(S360) 또는 데이터 기입 동작(S365)이 완료되면, 저장 장치(200)의 장치 컨트롤러(210)는 호스트 메모리(130)의 CQ 영역에 상기 페치된 커맨드가 완료되었음을 나타내는 컴플리션 정보를 기입할 수 있다(S370). 예를 들어, 장치 컨트롤러(210)는 순환 버퍼인 상기 CQ 내의 다음 빈(free) 슬롯에 상기 컴플리션 정보를 기입할 수 있다. 일 실시예에서, 장치 컨트롤러(210)는 상기 CQ 내에 새로운 컴플리션 정보가 있음을 알리는 인터럽트를 선택적으로(optionally) 생성할 수 있다(S380). 예를 들어, 상기 인터럽트는 MSI(Message Signaled Interrupt)-X(또는 다중 메시지 MSI), 핀-기반(pin-based) 인터럽트, 단일 메시지 MSI 등일 수 있으나, 이에 한정되지 않는다.
상기 CQ에 상기 컴플리션 정보가 기입되면, 또는 상기 컴플리션 정보가 기입된 후 상기 인터럽트가 수신되면, 호스트 프로세서(120)는 상기 컴플리션 정보를 처리(예를 들어, 에러 처리)하고, 상기 컴플리션 정보가 소모되었음(consumed)을 알리도록 저장 장치(200)의 CQ 도어벨을 업데이트할 수 있다(S390). 일 실시예에서, 저장 장치(200)의 장치 컨트롤러(210)는 순환 버퍼인 상기 CQ 내에 저장된 상기 컴플리션 정보들 중 첫 번째 컴플리션 정보의 포인터가 저장되는 CQ 헤드(head) 도어벨 레지스터를 포함할 수 있고, 호스트 프로세서(120)는 상기 CQ 내에 저장된 상기 컴플리션 정보들 중 적어도 하나의 컴플리션 정보를 순차적으로 처리한 후 상기 SQ 테일 도어벨 레지스터를 미처리된 첫 번째 컴플리션 정보를 지시하는 값으로 업데이트할 수 있다.
한편, 종래의 저장 장치는 하나의 커맨드에 응답하여 데이터 영역(150) 내에 하나의 PRP에 의해 할당되는 연속된 데이터인 데이터 청크에 대한 데이터 독출 동작 또는 데이터 기입 동작이 수행되는 도중에, 다른 커맨드에 대한 SQ 페치 또는 CQ 업데이트가 수행되었다. 이에 따라, 상기 데이터 독출 동작 또는 상기 데이터 기입 동작이 수행되는 동안, 메모리 셀 어레이(140)로부터 로우 버퍼(170)로의 독출 동작 또는 로우 버퍼(170)로부터 메모리 셀 어레이(140)로의 기입 동작이 복수 회 수행되어야 한다. 그러나, 본 발명의 실시예들에 따른 저장 장치(200)는, 비-데이터 영역(160)에 대한 비-데이터 메모리 액세스가, 데이터 영역(150) 내에 할당되는 연속된 데이터인 데이터 청크에 대한 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬할 수 있고, 이에 따라 호스트 메모리(130)의 로우 버퍼(170)의 히트율을 향상시킬 수 있다. 또한, 일 실시예에서, 저장 장치(200)는 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 상기 SQ 영역에 저장된 미처리(outstanding) 커맨드들의 수 및/또는 비휘발성 메모리 장치들(280)의 처리 효율에 따라 선택적으로 수행할 수 있고, 이에 따라 저장 장치(200)의 처리 효율을 유지하면서 호스트 메모리(130)의 로우 버퍼(170)의 히트율을 향상시킬 수 있다.
도 3은 본 발명의 일 실시예에 따른 저장 장치의 장치 컨트롤러를 나타내는 블록도이고, 도 4는 본 발명의 일 실시예에 따른 장치 컨트롤러에 포함된 스케쥴러를 나타내는 블록도이며, 도 5는 본 발명의 일 실시예에 따른 장치 컨트롤러가 호스트 메모리 액세스들을 재정렬하는 일 예를 설명하기 위한 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 저장 장치의 장치 컨트롤러(210a)는 장치 컨트롤러(210a)의 전체적인 동작을 제어하는 CPU(Central Processing Unit)(220), 호스트 메모리(130)에 연결된 호스트 컨트롤러(230), 복수의 비휘발성 메모리 장치들에 연결된 메모리 컨트롤러(240), 호스트 메모리(130)와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하는 프로토콜 컨트롤러(250), 및 호스트 메모리(130)의 데이터 영역(150)에 대한 데이터 메모리 액세스 및 호스트 메모리(130)의 비-데이터 영역(160)에 대한 비-데이터 메모리 액세스를 재정렬하는 스케쥴러(260)를 포함할 수 있다.
호스트 컨트롤러(230)는 호스트 메모리(130)와의 통신을 수행할 수 있다. 호스트 컨트롤러(230)는 호스트 버스를 통하여 호스트 메모리(130)에 직접(즉, 상기 저장 장치와 호스트 사이에 호스트 버스 어댑터(Host Bus Adapter; HBA) 없이) 연결될 수 있다. 일 실시예에서, 호스트 컨트롤러(230)는 PCIe(Peripheral Component Interconnect express) 버스를 통하여 호스트 메모리(130)에 연결될 수 있고, 호스트 컨트롤러(230)는 PCIe 컨트롤러일 수 있다.
메모리 컨트롤러(240)는 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행할 수 있다. 일 실시예에서, 상기 복수의 비휘발성 메모리 장치들은 플래시 메모리 장치들이고, 메모리 컨트롤러(240)는 플래시 컨트롤러일 수 있다. 또한, 일 실시예에서, 메모리 컨트롤러(240)는 복수의 메모리 채널들을 통하여 상기 복수의 비휘발성 메모리 장치들과 연결되고, 각 메모리 채널마다 2 이상의 비휘발성 메모리 장치들과 연결될 수 있다. 예를 들어, 메모리 컨트롤러(240)는 8 개의 메모리 채널들을 통하여 상기 복수의 비휘발성 메모리 장치들과 연결되고, 각 메모리 채널마다 8 개의 비휘발성 메모리 장치들과 연결될 수 있으나, 이에 한정되지 않는다.
프로토콜 컨트롤러(250)는 장치 컨트롤러(210a)가 소정의 프로토콜로 호스트와 통신하게 할 수 있다. 일 실시예에서, 프로토콜 컨트롤러(250)는 장치 컨트롤러(210a)가 상기 호스트와 호스트 컨트롤러(230)(예를 들어, PCIe 컨트롤러)를 통하여 NVMe(Non-Volatile Memory express) 프로토콜로 통신하게 하는 NVMe 컨트롤러일 수 있고, 장치 컨트롤러(210a)는 NVMe SSD 컨트롤러일 수 있다. 또한, 프로토콜 컨트롤러(250)는 호스트 컨트롤러(230)를 통하여 호스트 메모리(130)의 데이터 영역(150)에 대한 데이터 메모리 액세스 및 호스트 메모리(130)의 비-데이터 영역(160)에 대한 비-데이터 메모리 액세스를 수행할 수 있다.
일 실시예에서, 프로토콜 컨트롤러(250)는 상기 비-데이터 메모리 액세스로서 SQ 페치를 수행하는 SQ 페치부(251), 상기 비-데이터 메모리 액세스로서 CQ 업데이트를 수행하는 CQ 업데이트부(252), 상기 비-데이터 메모리 액세스로서 PRP 페치를 수행하는 PRP 페치부(253), 및 상기 데이터 메모리 액세스를 수행하는 DMA(Direct Memory Access)부(255)를 포함할 수 있다. SQ 페치부(251)는 비-데이터 영역(160)의 SQ 영역(162)으로부터 커맨드를 페치하는 상기 SQ 페치를 수행할 수 있다. PRP 페치부(253)는 PRP 엔트리, 즉 데이터 영역(150) 내에 할당된 제1 내지 제3 데이터 청크들(152, 154, 156) 중 적어도 하나의 주소 정보를 페치하는 상기 PRP 페치를 수행할 수 있다. DMA부(255)는 상기 페치된 커맨드에 응답하여 상기 비휘발성 메모리 장치들로부터 독출된 데이터를 데이터 청크(152, 154, 156)에 기입하거나, 상기 페치된 커맨드에 응답하여 상기 비휘발성 메모리 장치들에 기입될 데이터를 데이터 청크(152, 154, 156)로부터 독출하는 상기 데이터 메모리 액세스를 수행할 수 있다. 일 예에서, SQ 페치부(251)에 의해 페치된 커맨드가 데이터 독출 커맨드이고, PRP 페치부(253)에 의해 패치된 PRP 엔트리가 제1 데이터 청크(152)를 지시하는 경우, DMA부(255)는 상기 비휘발성 메모리 장치들로부터 독출된 데이터를 제1 데이터 청크(152)에 기입할 수 있다. 다른 예에서, SQ 페치부(251)에 의해 페치된 커맨드가 데이터 기입 커맨드이고, PRP 페치부(253)에 의해 패치된 PRP 엔트리가 제2 데이터 청크(154)를 지시하는 경우, DMA부(255)는 상기 비휘발성 메모리 장치들에 기입될 데이터를 제2 데이터 청크(154)로부터 독출할 수 있다. 상기 페치된 커맨드에 대한 처리가 완료되면, CQ 업데이트부(252)는 비-데이터 영역(160)의 CQ 영역(164)에 상기 페치된 커맨드에 대한 처리가 완료되었음을 나타내는 컴플리션 정보를 기입하는 상기 CQ 업데이트를 수행할 수 있다.
스케쥴러(260)는 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스(예를 들어, 상기 SQ 페치, 상기 PRP 페치 및 상기 CQ 업데이트)를 스케쥴링할 수 있다. 예를 들어, 스케쥴러(260)는, 비-데이터 영역(160)에 대한 상기 비-데이터 메모리 액세스가, PRP에 의해 데이터 영역(150) 내에 할당되는 연속된 데이터인 각 데이터 청크(152, 154, 156))에 대한 상기 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬할 수 있다. 예를 들어, 상기 재정렬이 수행되지 않는 경우, 도 5에서 참조 번호 400으로 표시된 바와 같이, 제1 데이터 청크(152)에 대한 데이터 메모리 액세스가 수행되는 도중 제1 CQ 업데이트 및 제1 SQ 페치가 수행될 수 있고, 제2 데이터 청크(154)에 대한 데이터 메모리 액세스가 수행되는 도중 제2 CQ 업데이트 및 제2 SQ 페치가 수행될 수 있으며, 제3 데이터 청크(154)에 대한 데이터 메모리 액세스가 수행되는 도중 제3 CQ 업데이트 및 제3 SQ 페치가 수행될 수 있다. 본 발명의 일 실시예에 따른 장치 컨트롤러(210a)의 스케쥴러(260)는, 도 5에서 참조 번호 420으로 표시된 바와 같이, 제1 데이터 청크(152)에 대한 상기 데이터 메모리 액세스가 완료된 후 상기 제1 CQ 업데이트 및 상기 제1 SQ 페치가 수행되고, 제2 데이터 청크(154)에 대한 상기 데이터 메모리 액세스가 완료된 후 상기 제2 CQ 업데이트 및 상기 제2 SQ 페치가 수행되며, 제3 데이터 청크(156)에 대한 상기 데이터 메모리 액세스가 완료된 후 상기 제3 CQ 업데이트 및 상기 제3 SQ 페치가 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬할 수 있다.
일 실시예에서, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 수행하도록, 도 4에 도시된 바와 같이, 스케쥴러(260)는 DMA부(255)로부터 수신된 상기 데이터 메모리 액세스를 위한 데이터 메모리 액세스 패킷들(DMAP)을 저장하는 데이터 메모리 액세스 큐(262), 및 SQ 페치부(251), CQ 업데이트부(252) 및 PRP 페치부(253)로부터 수신된 상기 비-데이터 메모리 액세스를 위한 비-데이터 메모리 액세스 패킷들(NDMAP)을 저장하는 비-데이터 메모리 액세스 큐(264)를 포함할 수 있다. 스케쥴러(260)는, 각 데이터 청크(152, 154, 156)에 대한 상기 데이터 메모리 액세스가 완료될 때까지, 비-데이터 메모리 액세스 큐(264)로부터의 비-데이터 메모리 액세스 패킷들(NDMAP)의 출력을 중지하고, 데이터 메모리 액세스 큐(262)로부터의 데이터 메모리 액세스 패킷들(DMAP)만을 출력함으로써, 각 데이터 청크(152, 154, 156)에 대한 상기 데이터 메모리 액세스가 완료된 후 상기 비-데이터 메모리 액세스가 수행되도록 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬할 수 있다. 이에 따라, 연속된 데이터 메모리 영역인 각 데이터 청크(152, 154, 156)에 대한 상기 데이터 메모리 액세스가 연속적으로 수행되므로, 호스트 메모리(130)의 캐시 역할을 하는 로우 버퍼의 히트율이 향상될 수 있다.
도 6은 본 발명의 다른 실시예에 따른 저장 장치의 장치 컨트롤러를 나타내는 블록도이고, 도 7은 본 발명의 다른 실시예에 따른 장치 컨트롤러의 상태도이다.
도 6의 장치 컨트롤러(210b)는, 데이터 메모리 액세스 및 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행하는 것 외에, 도 3의 장치 컨트롤러(210a)와 유사한 구성 및 동작을 가질 수 있다.
도 6을 참조하면, 장치 컨트롤러(210b)의 스케쥴러(260)는 프로토콜 컨트롤러(250)로부터 커맨드 정보를 수신하고, 그리고/또는 메모리 컨트롤러(240)로부터 효율 정보를 수신할 수 있다. 스케쥴러(260)는 프로토콜 컨트롤러(250)로부터의 상기 커맨드 정보 및/또는 메모리 컨트롤러(240)로부터의 상기 효율 정보에 기초하여 데이터 메모리 액세스 및 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행할 수 있다.
일 실시예에서, 스케쥴러(260)는 프로토콜 컨트롤러(250)로부터 미처리(outstanding) 커맨드들의 수를 나타내는 상기 커맨드 정보를 수신하고, 상기 미처리 커맨드들의 수가 커맨드 임계값 이상인지 여부에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행할 수 있다. 예를 들어, 상기 미처리 커맨드들의 수가 상기 커맨드 임계값 미만인 경우, 스케쥴러(260)가 상기 재정렬을 수행하지 않고, 상기 비-데이터 메모리 액세스를 즉시 수행함으로써, 저장 장치의 처리 효율을 향상시킬 수 있다. 또한, 상기 미처리 커맨드들의 수가 상기 커맨드 임계값 이상인 경우, 스케쥴러(260)가 상기 재정렬을 수행함으로써, 호스트 메모리(130)의 로우 버퍼의 히트율을 향상시킬 수 있다. 한편, 상기 커맨드 임계값은 CPU(220)에 의해 설정될 수 있다.
다른 실시예에서, 스케쥴러(260)는 메모리 컨트롤러(240)로부터 복수의 비휘발성 메모리 장치들의 처리 효율에 대한 상기 효율 정보를 수신하고, 상기 복수의 비휘발성 메모리 장치들의 처리 효율이 효율 임계값 이상인지 여부에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행할 수 있다. 여기서, 상기 복수의 비휘발성 메모리 장치들의 처리 효율은 상기 복수의 비휘발성 메모리 장치들 중 동작 중인 비휘발성 메모리 장치들의 비율, 또는 메모리 컨트롤러(240)와 상기 복수의 비휘발성 메모리 장치들 사이의 메모리 채널의 최대 데이터 전송량에 대한 현재 데이터 전송량의 비율일 수 있다. 예를 들어, 상기 복수의 비휘발성 메모리 장치들의 처리 효율이 효율 임계값 미만인 경우, 스케쥴러(260)가 상기 재정렬을 수행하지 않고, 상기 비-데이터 메모리 액세스를 즉시 수행함으로써, 저장 장치의 처리 효율을 향상시킬 수 있다. 또한, 상기 복수의 비휘발성 메모리 장치들의 처리 효율이 효율 임계값 이상인 경우, 스케쥴러(260)가 상기 재정렬을 수행함으로써, 호스트 메모리(130)의 로우 버퍼의 히트율을 향상시킬 수 있다. 한편, 상기 효율 임계값은 CPU(220)에 의해 설정될 수 있다.
또 다른 실시예에서, 스케쥴러(260)는 프로토콜 컨트롤러(250)로부터 상기 커맨드 정보를 수신하고, 메모리 컨트롤러(240)로부터 상기 효율 정보를 수신하며, 상기 커맨드 정보 및 상기 효율 정보에 기초하여 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행할 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 장치 컨트롤러(210b)가 파워-온(500)되면, CPU(220)는 스케쥴러(260)의 상기 커맨드 임계값 및 상기 효율 임계값을 설정할 수 있다. 일 실시예에서, 상기 커맨드 임계값 및 상기 효율 임계값이 설정된 후, 스케쥴러(260)는 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 수행하지 않는 인-오더 상태(520)로 동작할 수 있다. 인-오더 상태(520)로 동작 중, 상기 미처리 커맨드들의 수가 상기 커맨드 임계값 이상이 되거나, 상기 복수의 비휘발성 메모리 장치들의 처리 효율이 상기 효율 임계값 이상이 된 경우, 스케쥴러(260)는 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 수행하는 리-오더 상태(540)로 동작할 수 있다. 인-오더 상태(520)로 동작 중, 상기 미처리 커맨드들의 수가 상기 커맨드 임계값 미만이 되고, 상기 복수의 비휘발성 메모리 장치들의 처리 효율이 상기 효율 임계값 미만이 된 경우, 스케쥴러(260)는 다시 인-오더 상태(520)로 동작할 수 있다. 이에 따라, 본 발명의 다른 실시예에 따른 장치 컨트롤러(210b)는 저장 장치의 처리 효율을 유지하면서 호스트 메모리(130)의 로우 버퍼의 히트율을 향상시킬 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 저장 장치의 장치 컨트롤러를 나타내는 블록도이다.
도 8의 장치 컨트롤러(210c)는, 프로토콜 컨트롤러(250c)가 수행하는 HMB 액세스부(254)를 더 포함하는 것을 제외하고, 도 3의 장치 컨트롤러(210a) 또는 도 6의 장치 컨트롤러(210b)와 유사한 구성 및 동작을 가질 수 있다.
도 8을 참조하면, 장치 컨트롤러(210c)의 프로토콜 컨트롤러(250c)는 SQ 페치부, CQ 업데이트부 및 PRP 페치부와 함께 HMB 액세스부(254)를 포함할 수 있다. HMB 액세스부(254)는, 비-데이터 메모리 액세스로서, 호스트 메모리(130)의 비-데이터 영역(160)에 장치 컨트롤러(210c)의 전용을 위하여 할당된 HMB 영역(168)을 액세스하는 HMB 액세스를 수행할 수 있다. 예를 들어, 장치 컨트롤러(210c)는 HMB 영역(168)에서 논리-물리 맵(Logical-to-Physical(L2P) Map)을 관리할 수 있다. 이 경우, 장치 컨트롤러(210c)를 포함하는 저장 장치는 버퍼 메모리(290) 없이 구현될 수 있다.
본 발명은 임의의 저장 장치에 적용될 수 있다. 예를 들어, 본 발명은 SSD, NVMe SSD, Z-SSD, 옵테인 SSD, MLC(Multi-Level Cell) 기반 SSD, TLC(Triple Level Cell) 기반 SSD, HDD(Hard Disk Drive) 등의 저장 장치에 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 저장 장치에 포함된 장치 컨트롤러에 있어서,
    호스트 메모리에 연결되고, 상기 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러;
    복수의 비휘발성 메모리 장치들에 연결되고, 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러;
    상기 호스트 메모리와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 상기 호스트 컨트롤러를 통하여 상기 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러; 및
    상기 비-데이터 영역에 대한 상기 비-데이터 메모리 액세스가, 물리 영역 페이지(Physical Region Page; PRP)에 의해 상기 데이터 영역 내에 할당되는 연속된 데이터인 데이터 청크(Chunk)에 대한 상기 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬하는 스케쥴러를 포함하는 장치 컨트롤러.
  2. 제1 항에 있어서, 상기 스케쥴러는 상기 데이터 메모리 액세스를 위한 데이터 메모리 액세스 패킷들을 저장하는 데이터 메모리 액세스 큐, 및 상기 비-데이터 메모리 액세스를 위한 비-데이터 메모리 액세스 패킷들을 저장하는 비-데이터 메모리 액세스 큐를 포함하고,
    상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬하도록, 상기 스케쥴러는, 상기 데이터 청크에 대한 상기 데이터 메모리 액세스가 완료될 때까지, 상기 데이터 메모리 액세스 큐로부터 상기 데이터 메모리 액세스 패킷들을 출력하고, 상기 비-데이터 메모리 액세스 큐로부터의 상기 비-데이터 메모리 액세스 패킷들의 출력을 중지하는 장치 컨트롤러.
  3. 제1 항에 있어서, 상기 스케쥴러는 미처리(outstanding) 커맨드들의 수에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행하는 장치 컨트롤러.
  4. 제1 항에 있어서, 상기 스케쥴러는 상기 복수의 비휘발성 메모리 장치들의 처리 효율에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행하는 장치 컨트롤러.
  5. 제1 항에 있어서, 상기 스케쥴러는 상기 프로토콜 컨트롤러로부터 미처리 커맨드들의 수에 대한 정보를 수신하고, 상기 메모리 컨트롤러로부터 상기 복수의 비휘발성 메모리 장치들의 처리 효율에 대한 정보를 수신하며,
    상기 스케쥴러는, 상기 미처리 커맨드들의 수가 커맨드 임계값 이상이거나, 상기 복수의 비휘발성 메모리 장치들의 처리 효율이 효율 임계값 이상인 경우, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 수행하는 장치 컨트롤러.
  6. 제1 항에 있어서, 상기 프로토콜 컨트롤러는,
    상기 데이터 메모리 액세스를 수행하는 직접 메모리 액세스(Direct Memory Access; DMA)부;
    상기 비-데이터 메모리 액세스로서 서브미션 큐(Submission Queue; SQ) 페치를 수행하는 SQ 페치부;
    상기 비-데이터 메모리 액세스로서 PRP 페치를 수행하는 PRP 페치부; 및
    상기 비-데이터 메모리 액세스로서 컴플리션 큐(Completion Queue; CQ) 업데이트를 수행하는 CQ 업데이트부를 포함하는 장치 컨트롤러.
  7. 제6 항에 있어서, 상기 프로토콜 컨트롤러는,
    상기 비-데이터 메모리 액세스로서 호스트 메모리 버퍼(Host Memory Buffer; HMB) 엑세스를 수행하는 HMB 액세스부를 더 포함하는 장치 컨트롤러.
  8. 제1 항에 있어서, 상기 프로토콜 컨트롤러 NVMe(Non-Volatile Memory express) 컨트롤러인 장치 컨트롤러.
  9. 저장 장치에 포함된 장치 컨트롤러에 있어서,
    호스트 메모리에 연결되고, 상기 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러;
    복수의 비휘발성 메모리 장치들에 연결되고, 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러;
    상기 호스트 메모리와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 상기 호스트 컨트롤러를 통하여 상기 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러; 및
    미처리 커맨드들의 수 또는 상기 복수의 비휘발성 메모리 장치들의 처리 효율에 따라 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스의 재정렬을 선택적으로 수행하는 스케쥴러를 포함하는 장치 컨트롤러.
  10. 복수의 비휘발성 메모리 장치들; 및
    상기 복수의 비휘발성 메모리 장치들을 제어하는 장치 컨트롤러를 포함하는 저장 장치에 있어서,
    상기 장치 컨트롤러는,
    호스트 메모리에 연결되고, 상기 호스트 메모리와의 통신을 수행하는 호스트 컨트롤러;
    상기 복수의 비휘발성 메모리 장치들에 연결되고, 상기 복수의 비휘발성 메모리 장치들과의 통신을 수행하는 메모리 컨트롤러;
    상기 호스트 메모리와 상기 복수의 비휘발성 메모리 장치들 사이의 데이터 전송을 제어하고, 상기 호스트 컨트롤러를 통하여 상기 호스트 메모리의 데이터 영역에 대한 데이터 메모리 액세스 및 상기 호스트 메모리의 비-데이터 영역에 대한 비-데이터 메모리 액세스를 수행하는 프로토콜 컨트롤러; 및
    상기 비-데이터 영역에 대한 상기 비-데이터 메모리 액세스가, 물리 영역 페이지(Physical Region Page; PRP)에 의해 상기 데이터 영역 내에 할당되는 연속된 데이터인 데이터 청크(Chunk)에 대한 상기 데이터 메모리 액세스가 완료된 후 수행되도록, 상기 데이터 메모리 액세스 및 상기 비-데이터 메모리 액세스를 재정렬하는 스케쥴러를 포함하는 저장 장치.
KR1020170155116A 2017-11-20 2017-11-20 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치 KR102395477B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170155116A KR102395477B1 (ko) 2017-11-20 2017-11-20 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치
US16/058,197 US10782915B2 (en) 2017-11-20 2018-08-08 Device controller that schedules memory access to a host memory, and storage device including the same
CN201811235057.4A CN109815172B (zh) 2017-11-20 2018-10-23 设备控制器以及包括其的储存设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170155116A KR102395477B1 (ko) 2017-11-20 2017-11-20 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치

Publications (2)

Publication Number Publication Date
KR20190057779A true KR20190057779A (ko) 2019-05-29
KR102395477B1 KR102395477B1 (ko) 2022-05-09

Family

ID=66532362

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170155116A KR102395477B1 (ko) 2017-11-20 2017-11-20 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치

Country Status (3)

Country Link
US (1) US10782915B2 (ko)
KR (1) KR102395477B1 (ko)
CN (1) CN109815172B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190104924A (ko) 2019-08-22 2019-09-11 류승문 간섭에 강한 피코캐스트-3 기술
KR20200106434A (ko) 2019-09-24 2020-09-14 류승문 개인 맞춤형 물리계층 사용으로 안전하게 보호되는 통신 및 제어 기술
KR20220012806A (ko) * 2020-07-23 2022-02-04 주식회사 멤레이 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치
US12014080B2 (en) 2021-11-10 2024-06-18 Samsung Electronics Co., Ltd. Memory system using host memory buffer and operation method thereof

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321017B2 (en) * 2020-06-29 2022-05-03 SK Hynix Inc. Systems and methods for controlling completion rate of commands
CN113485643B (zh) * 2021-07-01 2023-10-31 成都忆芯科技有限公司 用于数据存取的方法及数据写入的控制器
US11977783B2 (en) 2021-10-28 2024-05-07 Silicon Motion, Inc. Method and apparatus for performing data access control of memory device with aid of predetermined command
US11656798B1 (en) 2021-12-03 2023-05-23 Western Digital Technologies, Inc. Immediate partial host buffer fetching
US11768606B2 (en) 2021-12-27 2023-09-26 Western Digital Technologies, Inc. Maximizing performance through traffic balancing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060104269A1 (en) * 2004-11-15 2006-05-18 Perozo Angel G Method and system for processing frames in storage controllers
US20100325384A1 (en) * 2009-06-23 2010-12-23 Samsung Electronics Co., Ltd. Data storage medium accessing method, data storage device and recording medium to perform the data storage medium accessing method
US20120260032A1 (en) * 2011-04-08 2012-10-11 Altera Corporation Systems and methods for using memory commands
US20160026388A1 (en) * 2014-07-24 2016-01-28 Samsung Electronics Co., Ltd. Data storage device and method of processing data thereof

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US9413527B2 (en) 2009-04-30 2016-08-09 HGST Netherlands B.V. Optimizing signature computation and sampling for fast adaptive similarity detection based on algorithm-specific performance
KR101662824B1 (ko) 2009-07-08 2016-10-06 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
KR101835604B1 (ko) 2011-06-03 2018-03-07 삼성전자 주식회사 메모리를 위한 스케줄러
US20130339583A1 (en) 2012-06-19 2013-12-19 Marvell World Trade Ltd. Systems and methods for transferring data out of order in next generation solid state drive controllers
CN103514107B (zh) * 2012-06-27 2018-04-06 上海芯豪微电子有限公司 高性能数据缓存***和方法
US9563367B2 (en) 2014-08-26 2017-02-07 HGST Netherlands B.V. Latency command processing for solid state drive interface protocol
US20160162186A1 (en) 2014-12-09 2016-06-09 San Disk Technologies Inc. Re-Ordering NAND Flash Commands for Optimal Throughput and Providing a Specified Quality-of-Service
KR20170032502A (ko) 2015-09-14 2017-03-23 삼성전자주식회사 스토리지 장치 및 그것의 인터럽트 발생 방법
US10296249B2 (en) * 2017-05-03 2019-05-21 Western Digital Technologies, Inc. System and method for processing non-contiguous submission and completion queues

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060104269A1 (en) * 2004-11-15 2006-05-18 Perozo Angel G Method and system for processing frames in storage controllers
US20100325384A1 (en) * 2009-06-23 2010-12-23 Samsung Electronics Co., Ltd. Data storage medium accessing method, data storage device and recording medium to perform the data storage medium accessing method
US20120260032A1 (en) * 2011-04-08 2012-10-11 Altera Corporation Systems and methods for using memory commands
US20160026388A1 (en) * 2014-07-24 2016-01-28 Samsung Electronics Co., Ltd. Data storage device and method of processing data thereof

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190104924A (ko) 2019-08-22 2019-09-11 류승문 간섭에 강한 피코캐스트-3 기술
KR20200106434A (ko) 2019-09-24 2020-09-14 류승문 개인 맞춤형 물리계층 사용으로 안전하게 보호되는 통신 및 제어 기술
KR20220012806A (ko) * 2020-07-23 2022-02-04 주식회사 멤레이 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치
US12014080B2 (en) 2021-11-10 2024-06-18 Samsung Electronics Co., Ltd. Memory system using host memory buffer and operation method thereof

Also Published As

Publication number Publication date
KR102395477B1 (ko) 2022-05-09
US10782915B2 (en) 2020-09-22
CN109815172A (zh) 2019-05-28
US20190155545A1 (en) 2019-05-23
CN109815172B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
KR102395477B1 (ko) 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치
US10891225B2 (en) Host- directed sanitization of memory
US10782910B2 (en) Methods for internal data movements of a flash memory device and apparatuses using the same
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
TWI408556B (zh) 記憶體控制器及用於運作記憶體裝置之方法
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
CN109947362B (zh) 管理闪存存储器读取操作
US10108565B2 (en) Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements
TWI735918B (zh) 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置
US11693774B2 (en) Selectively utilizing a read page cache mode in a memory subsystem
CN113906383A (zh) 主机***和存储器子***之间的定时数据传送
US11360711B2 (en) Storage device temporarily suspending internal operation to provide short read response time for read request from host
US10445252B2 (en) Storage device and operating method performed by the same
WO2020041745A1 (en) Memory sub-system supporting non-deterministic commands
US11861207B2 (en) Management of erase suspend and resume operations in memory devices
US11366770B2 (en) Storage controller managing completion timing, and operating method thereof
JP7445368B2 (ja) プロセッサによるメモリアクセスのための存続時間
US12013796B2 (en) Storage controller managing completion timing, and operating method thereof
KR20170141468A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20180203813A1 (en) Methods for processing return entities associated with multiple requests in single interrupt service routine thread and apparatuses using the same
US20220405206A1 (en) Frozen time cache for multi-host read operations
CN113157205B (zh) 一种nand阵列的控制方法、控制器、电子设备及存储介质
CN108536475B (zh) 完整编程命令处理方法与装置
US20240220116A1 (en) Optimized ssd for game loading and rendering

Legal Events

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