KR20190066466A - 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법 - Google Patents

기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR20190066466A
KR20190066466A KR1020170166192A KR20170166192A KR20190066466A KR 20190066466 A KR20190066466 A KR 20190066466A KR 1020170166192 A KR1020170166192 A KR 1020170166192A KR 20170166192 A KR20170166192 A KR 20170166192A KR 20190066466 A KR20190066466 A KR 20190066466A
Authority
KR
South Korea
Prior art keywords
cmb
write
host
storage device
command
Prior art date
Application number
KR1020170166192A
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 KR1020170166192A priority Critical patent/KR20190066466A/ko
Priority to US16/020,581 priority patent/US20190171392A1/en
Priority to CN201810827534.XA priority patent/CN109871182A/zh
Publication of KR20190066466A publication Critical patent/KR20190066466A/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/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]

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

Abstract

기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법이 개시된다. 저장 장치는 호스트에서 발행되는 기입 데이터 지원(WDS) 여부를 판별하고, WDS가 지원되면 인스턴트 기입 플래그를 선택적으로 포함하는 기입 커맨드를 패치하고, 패치된 기입 커맨드에 응답하여 호스트 DMA 동작(HDMA) 없이 콘트롤러 메모리 버퍼(CMB)에 대한 어드레스 맵핑 테이블을 업데이트하고, 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생한다. 저장 장치는 호스트로부터 CMB 내 프리 버퍼 영역의 문턱값을 기입 버퍼 문턱값으로 입력 받고, CMB 내 프리 버퍼 영역을 기입 버퍼 문턱값으로 설정한다. 저장 장치는 CMB 내 프리 버퍼 영역이 기입 버퍼 문턱값 미만임을 호스트에 통지한다.

Description

기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법{Storage method and apparatus for reducing write latency}
본 발명은 저장 장치에 관한 것으로서, 더욱 상세하게는 기입 컴플리션 레이턴시를 줄이는 저장 장치의 동작 방법 및 호스트의 커맨드 발행 방법에 관한 것이다.
반도체 제조 기술이 발전되면서, 저장 장치와 통신하는 컴퓨터, 스마트 폰, 스마트 패드 등과 같은 호스트의 동작 속도가 향상되고 있다. 또한, 호스트 및 저장 장치에서 사용되는 콘텐츠의 용량이 증가하고 있다. 이에 따라, 더 향상된 성능의 저장 장치에 대한 요구가 지속적으로 제기되고 있다.
본 발명의 목적은 기입 컴플리션 레이턴시를 줄이는 저장 장치의 동작 방법 및 호스트의 커맨드 발행 방법을 제공하는 데 있다.
본 발명의 실시예들에 따른 저장 장치의 동작 방법은, 호스트로부터 기입 데이터 지원(WDS)을 지시받는 단계, 호스트에서 발행되는 기입 커맨드를 입력 받는 단계, 기입 커맨드에 응답하여 저장 장치의 콘트롤러 메모리 버퍼(CMB)에 대한 어드레스 맵핑 테이블을 업데이트하는 단계, 그리고 CMB에서 호스트 DMA 동작 없이 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생하는 단계를 포함한다.
본 발명의 실시예들에 따른 저장 장치의 동작 방법은, 호스트로부터 제공되는 기입 데이터 지원(WDS) 여부를 판별하는 단계, 판별 결과, WDS가 지원되는 경우, 저장 장치의 콘트롤러 메모리 버퍼(CMB)에서 호스트 DMA 동작 없이 호스트에서 발행된 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생하는 단계, 그리고 판별 결과, WDS가 지원되지 않는 경우, 호스트에서 발행된 기입 커맨드에 대응하여 CMB에서 호스트 DMA 동작을 수행한 후 기입 커맨드 컴플리션을 발생하는 단계를 포함한다.
본 발명의 실시예들에 따른 호스트의 커맨드 발행 방법은, 저장 장치로 기입 데이터 지원(WDS)을 포함하는 기입 커맨드를 발행하는 단계, 그리고 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 입력 받는 단계를 포함한다.
본 발명의 실시예들에 따른 저장 장치는, 불휘발성 메모리 장치들과 불휘발성 메모리 장치들을 제어하는 콘트롤러를 포함한다. 콘트롤러는 호스트로부터 제공되는 기입 데이터 지원(WDS)을 포함하는 기입 커맨드에 응답하여, 콘트롤러 메모리 버퍼(CMB) 내 프리 버퍼 영역을 이용하여 CMB에 대한 어드레스 맵핑 테이블을 업데이트하는 CMB 어드레스 스왑 모듈을 포함한다.
본 발명의 실시예들에 따른 저장 장치는, 호스트로부터 수신되는 기입 커맨드에 대응하여 기입 커맨드 컴플리션을 발생할 때 호스트 DMA 동작을 생략함에 따라 기입 컴플리션 레이턴시를 줄일 수 있다.
도 1은 본 발명의 개념을 설명하는 호스트 시스템을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시예에 따른 커맨드 처리를 위한 큐 인터페이스 방법을 예시적으로 보여주는 도면이다.
도 3, 도 4a 내지 도 4c는 도 1의 호스트 시스템에서 수행되는 제1 예의 기입 동작을 설명하는 도면들이다.
도 5 내지 도 8c는 도 1의 호스트 시스템에서 수행되는 제2 예의 기입 동작을 설명하는 도면들이다.
도 9는 본 발명의 실시예에 따른 콘트롤러 메모리 버퍼 사이즈를 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시예에 따른 인스턴트 기입 플래그를 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시예에 따른 기입 버퍼 문턱값을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시예에 따른 기입 버퍼 문턱값 요청 방법을 설명하는 도면이다.
도 13은 본 발명의 실시예에 따른 비동기 이벤트 정보 통지를 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시예에 따른 비동기 이벤트 정보 통지 요청 방법을 설명하는 도면이다.
도 15는 본 발명의 실시예에 따른 기입 버퍼 문턱값 설정 방법을 설명하는 플로우챠트이다.
도 16은 본 발명의 실시예에 따른 도 1의 호스트 시스템에서 수행되는 제3 예의 기입 동작을 설명하는 도면이다.
도 17은 본 발명의 실시예에 따른 서버 시스템을 보여주는 블록 다이어그램이다.
도 18은 본 발명의 실시예에 따른 데이터 센터를 보여주는 블록 다이어그램이다.
도 1은 본 발명의 개념을 설명하는 호스트 시스템(10)을 예시적으로 보여주는 도면이다.
도 1을 참조하면, 호스트 시스템(10)은 호스트(100) 및 저장 장치(NVMe, 200)를 포함할 수 있다. 호스트 시스템(10)은 컴퓨터, 휴대용 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션(Workstation), 데이터 서버, 넷북, PDA, 웹 태블릿, 무선 폰, 모바일 폰, 스마트 폰, 전자북, PMP(Portable Multimedia Player), 디지털 카메라, 디지털 오디오 녹음기/재생기, 디지털 사진기/비디오 기록기/재생기, 휴대용 게임 머신, 네비게이션 시스템, 블록 박스, 3D 텔레비전, 무선 환경에서 정보를 수집 및 송신하는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, RFID, 또는 컴퓨팅 시스템을 구성하는 다양한 전자 장치들 중 어느 하나로 사용될 수 있다.
호스트(100)는 CPU(Central Processing Unit, 110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트(100)는 운영 시스템(OS), 드라이버 및 어플리케이션 중 하나 또는 그 초과의 것을 실행할 수 있다. 호스트(100)와 저장 장치(200)에 의한 통신은 임의선택적으로 및/또는 선택적으로 드라이버 및/또는 어플리케이션을 통한다.
CPU(110)는 호스트 시스템(10)의 전반적인 동작을 제어할 수 있다. CPU(110)는 복수의 프로세싱 코어들을 포함하고, 각 프로세싱 코어들은 복수의 프로세싱 엔트리를 포함할 수 있다. CPU(110)는 프로세싱 엔트리에 따라 저장 장치(200)로/로부터 데이터 기입 또는 독출 동작들을 명령할 수 있다.
호스트 메모리(120)는 CPU(110)의 프로세싱 엔트리와 상관하여 생성되는 데이터를 저장할 수 있다. 호스트 메모리(120)는 시스템 메모리, 메인 메모리, 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. 호스트 메모리(120)는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈이나 기타 데이터 같은 정보의 저장을 위해 어떤 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈형 및 비착탈형 컴퓨터 저장 매체일 수 있다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학적 저장부, 마그네틱 카세트, 마그네틱 테이프, 마그네틱 디스크 저장부 또는 다른 마그네틱 저장부, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터 시스템에 의해 억세스될 수 있는 어떤 다른 매체를 포함하나, 이에 국한되지 않는다.
저장 장치(200)는 콘트롤러(210) 및 복수의 NVM(Non-Volatile Memory) 요소들(예를 들어, 플래시 메모리들) 기반의 불휘발성 스토리지(220, 본 명세서에서 "NVM(220)"으로 지칭됨)을 포함할 수 있다. NVM 요소들은 복수의 메모리 셀들을 포함할 수 있는데, 예를 들어, 복수의 메모리 셀들은 플래쉬 메모리 셀들일 수 있다. 복수의 메모리 셀들이 낸드(NAND) 플래쉬 메모리 셀들인 경우, 메모리 셀 어레이는 복수의 낸드 스트링들을 포함하는 3차원 메모리 셀 어레이를 포함할 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다.
본 발명의 기술적 사상에 의한 일 실시예에서, 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 낸드 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다. 미국 특허공개공보 제7,679,133호, 미국 특허공개공보 제8,553,466호, 미국 특허공개공보 제8,654,587호, 미국 특허공개공보 제8,559,235호, 및 미국 특허출원공개공보 제2011/0233648호는 3차원 메모리 어레이가 복수 레벨로 구성되고 워드 라인들 및/또는 비트 라인들이 레벨들 간에 공유되어 있는 3차원 메모리 어레이에 대한 적절한 구성들을 상술하는 것들로서, 본 명세서에 인용 형식으로 결합된다.
저장 장치(200)는 SSD(Solid State Driver: SSD), NVMe SSD 또는 PCIe SSD로 구성될 수 있다. SSD는 고성능 및 고속 스토리지 디바이스이다. SSD들을 억세스하도록 최적화된 초고속 데이터 전송 규격인 비휘발성 메모리 익스프레스(Non Volatile Memory Express: NVMe)가 적용되고 있다. NVMe는 PCIe(Peripheral Component Interconnect Express) 인터페이스에 장착되는 NVM(220)에 대하여 직접 입출력(I/O) 억세스를 제공한다. NVM(220)은 NVMe-oF(NVMe-over Fabrics)로 구현될 수 있다. NVMe-oF는 PCIe NVMe SSD 기반의 플래시 스토리지 어레이로서, 대규모 병렬 방식으로 통신할 수 있는 패브릭으로 확장할 수 있다.
NVMe는 SSD들을 이용할 수 있는 기업, 데이터 센터 및 클라이언트 시스템들의 필요성들을 처리하도록 설계된 스케일링 가능한 호스트 콘트롤러 인터페이스이다. NVMe는 호스트에 스토리지 엔티티 인터페이스를 제시하기 위한 SSD 디바이스 인터페이스로서 이용된다. PCIe는 고속 직렬 컴퓨터 확장 버스 표준이며, 더 높은 최대 시스템 버스 스루풋, 더 낮은 I/O 핀 카운트 및 더 작은 물리적 풋프린트, 버스 디바이스들에 대한 양호한 성능-스케일링, 및 더 상세한 에러 검출 및 보고 메커니즘(notification mechanism)을 포함한다. NVMe는 PCIe SSD들에 대한 최적화된 레지스터 인터페이스, 커맨드 세트 및 특징 세트를 정의하고, PCIe SSD들의 기능성(functionality)을 이용하며 PCIe SSD 인터페이스를 표준화하기 위한 위치에 있다.
콘트롤러(210)는 호스트(100)와 저장 장치(220) 사이의 브릿지로서 동작하며 호스트(100)로부터 송신되는 커맨드들을 실행할 수 있다. 커맨드들의 적어도 일부는 호스트(100)로부터 그리고 호스트(100)에 각각 송신되는 데이터로 저장 장치(200)를 기록하고 판독할 것을 콘트롤러(210)에 지시할 수 있다. 콘트롤러(210)는 CPU(110)와 데이터 기록/판독 트랜잭션을 통신할 수 있다. 콘트롤러(210)는 NVM 인터페이스(230)을 통하여 NVM(220)에 대한 데이터 처리 동작들(예, 기입 동작들 또는 독출 동작들 등)을 제어할 수 있다. 콘트롤러(210)는 호스트 인터페이스(211), 프로세서(212), 내부 메모리(214), 그리고 콘트롤러 메모리 버퍼(CMB, 216)를 포함할 수 있다.
호스트 인터페이스(211)는 호스트(100)와 인터페이싱을 제공하며, 외부 인터페이스(300)를 통해 커맨드들 및/또는 데이터를 송신하고 수신할 수 있다. 실시예에 따라, 호스트 인터페이스(211)는 PCIe 인터페이스 표준, USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페이스 표준, 선더볼트 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스틱 인터페이스 표준, xD-픽쳐 카드 인터페이스 표준, IDE 인터페이스, SATA 인터페이스 표준, SCSI 인터페이스 표준, SAS 인터페이스 표준 중 하나 또는 그 초과와 호환 가능할 수 있다.
프로세서(212)는 콘트롤러(210)의 전반적인 동작을 제어한다. 프로세서(212)는 CMB(126)와 외부 인터페이스(300) 사이에 송신되는 일부 또는 모든 데이터를 프로세싱하거나, CMB(126)에 저장되는 데이터를 프로세싱할 수 있다.
프로세서(212)는 호스트(100)로부터 제공되는 기입 데이터 지원(WDS) 여부를 판별할 수 있다. 판별 결과, WDS가 지원되는 경우, 프로세서(212)는 CMB(126)에서 호스트 DMA 동작(HDMA) 없이 호스트(100)에서 발행된 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생하도록 제어할 수 있다. 판별 결과, WDS가 지원되지 않는 경우, 프로세서(212)는 호스트(100)에서 발행된 기입 커맨드에 대응하여 CMB(126)에서 호스트 DMA 동작(HDMA)을 수행한 후 기입 커맨드 컴플리션을 발생하도록 제어할 수 있다.
프로세서(212)는 호스트(100)로부터 제공되는 기입 데이터 지원(WDS) 및 인스턴트 기입 플래그를 포함하는 기입 커맨드에 응답하여, CMB(126) 내 프리 버퍼 영역을 이용하여 CMB(126)에 대한 어드레스 맵핑 테이블을 업데이트하도록 제어할 수 있다. 실시예에 따라, 인스턴트 기입 플래그는 기입 커맨드에 선택적으로 포함되는 옵션 항목일 수 있다.
프로세서(212)는 호스트(100)로부터 CMB(126) 내 프리 버퍼 영역의 문턱값을 기입 버퍼 문턱값으로 입력 받고, CMB(126) 내 프리 버퍼 영역을 기입 버퍼 문턱값으로 설정할 수 있다. 프로세서(212)는 CMB(126) 내 프리 버퍼 영역이 기입 버퍼 문턱값 미만임을 호스트(100)에 통지할 수 있다.
내부 메모리(214)는 콘트롤러(210)의 동작에 필요한 데이터 또는 콘트롤러(210)에 의해 수행된 데이터 처리 동작(예, 기입 동작 또는 독출 동작)에 따라 생성된 데이터를 저장할 수 있다. 내부 메모리(214)는 CMB(126)에 대한 어드레스 맵핑 테이블을 저장할 수 있다.
실시예에 따라, 내부 메모리(214)는 CMB(126)에 대한 어드레스 맵핑 테이블 전체에서 호스트(100)가 타겟팅하는 CMB 어드레스와 상관되는 CMB 어드레스 맵핑 테이블 일부를 저장할 수 있다. 이 때, CMB(126)에 대한 어드레스 맵핑 테이블 전체는 내부 메모리(214)와는 별개인 다른 메모리 장치에 저장될 수 있다.
실시예들에 따라, 내부 메모리(214)는 RAM(Random Access Memory), DRAM(Dynamic RAM), SRAM(Static RAM), 캐시(Cache), 또는 강하게 결합된 메모리(Tightly Coupled Memory: TCM)로 구현될 수 있으며, 내부 메모리(214)의 종류가 이에 제한되지 아니하는 점은 인정될 것이다.
CMB(216)는 외부 인터페이스(300)에/로부터 또는 NVM 인터페이스(230)로부터/에 송신되는 데이터를 저장할 수 있다. CMB(216)는 데이터의 일시적인 스토리지를 위해 이용되는 메모리 기능 또는 CMB(216)에 및/또는 그로부터 데이터 이동을 제어하기 위해 이용되는 DMA(Direct Memory Access) 기능을 가질 수 있다. 실시예에 따라, CMB(216)는 상위 레벨의 에러 정정 기능 및/또는 리던던시 기능을 제공하기 위하여 이용될 수도 있다.
도 2는 본 발명의 실시예에 따른 커맨드 처리를 위한 큐 인터페이스 방법을 예시적으로 보여주는 도면이다.
도 2를 참조하면, 커맨드 큐 인터페이스는 커맨드 요청을 위한 서브미션 큐(Submission Queue: SQ, 1110)와, 대응하는 커맨드의 처리 완료를 위한 컴플리션 큐(Completion Queue: CQ, 1120)로 구성되는 큐 쌍(Queue Pair)에 근거하여 수행될 수 있다. 호스트(100)의 호스트 메모리(120)는 링 버퍼 타입의 SQ(1110)와 CQ(1120)를 포함할 수 있다.
SQ(1110)는 저장 장치(200, 도 1)에서 처리될 커맨드들을 저장할 수 있다. SQ(1110)는 타임-아웃(time-out)이 있는 동기식 커맨드(synchronous CMD)와 타임-아웃이 없는 비동기식 커맨드(asynchronous CMD)를 포함할 수 있다.
예시적으로, 동기식 커맨드는 저장 장치(200)에 저장된 데이터의 입출력을 위한 읽기/쓰기 커맨드, 저장 장치(200)의 설정을 위한 셋 피쳐스 커맨드(Set Features CMD) 등을 포함할 수 있다. 셋 피쳐스 커맨드는 기입 버퍼 문턱값(write buffer threshold), 중재(arbitration), 전력 관리(power management), 논리 어드레스 범위 종류(LBA Range Type), 온도 문턱값(temperature threshold), 에러 회복(error recovery), 휘발성 쓰기 캐시(volatile write cache), 인터럽트 콜레싱(interrupt coalescing), 인터럽트 벡터 구조(interrupt vector configuration), 쓰기 오토미씨티 노멀(write atomicity normal), 비동기 이벤트 구조(asynchronous event configuration), 자치 전력 상태 천이(autonomous power state transition), 호스트 메모리 버퍼(host memory buffer), 커맨드 셋 스페시픽(command set specific), 벤더 스페시픽(vender specific), 지원되는 프로토콜 버전(protocol version) 등을 포함할 수 있다.
예시적으로, 비동기 커맨드는 비동기 이벤트 요청 커맨드(asynchronous event request CMD)를 포함할 수 있다. 비동기 이벤트들은 저장 장치(200)의 상태(status), 에러(error), 헬스(health) 정보 등을 호스트(100)의 소프트웨어에 알리는데 이용될 수 있다. 저장 장치(200)는 CMB(126)의 프리 버퍼 영역이 설정된 기입 버퍼 문턱값 아래로 떨어졌음을 알리는 기입 버퍼 문턱값 미만을 호스트(100)에 알릴 수 있다. 저장 장치(200)는 비동기 이벤트 요청 커맨드에 대응하는 비동기 커맨드 컴플리션에 기입 버퍼 문턱값 미만을 삽입하여 호스트(100)로 통지할 수 있다.
커맨드 큐 인터페이스는 다음과 같이 수행될 수 있다. 호스트(100)는 SQ(1110)에 큐 커맨드를 발행한다(1). 호스트(100)는 SQ 테일 포인터를 콘트롤러(210)에 테일 도어벨 울리기 동작으로 통지한다(2). 도어벨 울리기는 특정된 SQ(1110)를 위해 수행될 필요가 있는 새로운 작업이 존재한다는 것을 콘트롤러(210)에 통지하는 동작을 말한다. 콘트롤러(210)는 SQ(1110)로부터 커맨드를 패치할 수 있다(3). 콘트롤러(210)는 패치된 커맨드를 처리할 수 있다(4). 콘트롤러(210)는 커맨드 처리 후에 CQ(1120)에 커맨드 컴플리션을 통지할 수 있다(5).
도 3, 도 4a 내지 도 4c는 도 1의 호스트 시스템에서 수행되는 제1 예의 기입 동작을 설명하는 도면들이다. 도 1 내지 도 4c를 참조하면, 기입 동작(S300)은 호스트 DMA(Direct Memory Access) 동작을 포함하며 다음과 같이 진행될 수 있다.
호스트(100)는 프로세싱 엔트리에 따라 저장 장치(200)로 기입될 데이터를 생성할 수 있다(S310). 호스트(100)는 저장 장치(200)로 기입 커맨드를 발행할 수 있다(S320). 저장 장치(200)는 SQ(1110)의 기입 커맨드를 패치하고, 패치된 기입 커맨드를 처리할 수 있다. 저장 장치(200)는 호스트 DMA 동작(HDMA)을 트리거하여 기입 커맨드를 처리할 수 있다(S330). 저장 장치(200)는 기입 커맨드 처리 후에 기입 커맨드 컴플리션을 호스트(100)로 전송할 수 있다. 호스트 DMA 동작(HDMA)은 도 4a를 참조하여 설명될 것이다.
도 4a를 참조하면, 호스트(100)에서 CPU(110)의 제1 프로세싱에 의해 생성된 제1 데이터(WData1)가 호스트 메모리(120)에 저장되고, 호스트 메모리(120)의 제1 데이터(WData1)는 콘트롤러(210)로 전송될 수 있다. 콘트롤러(210)는 제1 데이터(WData1)를 CMB(216)의 제1 메모리 영역(420)에 저장하고, 제1 메모리 영역(420)에 저장된 제1 데이터(Wdata1)를 CMB(216)의 제2 메모리 영역(422)으로 복사할 수 있다. CMB(216)에서, 제1 메모리 영역(420)의 제1 데이터(WData1)를 제2 메모리 영역(422)으로 복사하는 메모리 카피 동작(mem2mem copy)이 호스트 DMA 동작(HDMA)의 대부분을 차지할 수 있다.
호스트 DMA 동작(HDMA)에서, 콘트롤러(210)가 메모리 카피 동작(mem2mem copy)을 수행하지 않고 기입 커맨드 컴플리션을 호스트(100)로 전송하면, 호스트(100)에서 CMB(216)의 제1 메모리 영역(420) 주소를 재사용할 수 있는데, 이 경우 제1 메모리 영역(420)에서 데이터 충돌이 발생할 수 있다. 이러한 데이터 충돌을 방지하기 위하여, 제1 메모리 영역(420)의 제1 데이터(WData1)를 제2 메모리 영역(422)으로 복사하는 메모리 카피 동작(mem2mem copy)이 호스트 DMA 동작(HDMA)에 필요하다. 콘트롤러(210)는 메모리 카피 동작(mem2mem copy) 수행 후, 기입 커맨드 컴플리션을 호스트(100)로 전송할 수 있다.
호스트(100)는 기입 커맨드 컴플리션(S340)을 수신하고 나서, 제2 프로세싱에 의해 생성된 제2 데이터(WData2)를 호스트 메모리(120)에 저장하고, 호스트 메모리(120)의 제2 데이터(410)를 콘트롤러(210)로 전송할 수 있다. 콘트롤러(210)는 제2 데이터(WData2)를 CMB(216)의 제1 메모리 영역(420)에 저장할 수 있다. 여기에서, CMB(216)의 제1 메모리 영역(420)에 저장되었던 제1 데이터(WData1)는 제2 메모리 영역(422)으로 옮겨졌기 때문에, 제2 데이터(WData2)가 제1 메모리 영역(420)에 저장되더라도 제1 메모리 영역(420)에서의 데이터 충돌은 발생되지 않는다.
호스트 DMA 동작(HDMA)은, 도 4b에 도시된 바와 같이, 기입 커맨드의 작업 요청 후 메모리 카피 동작(mem2mem copy)이 완료될 때까지 상당히 긴 시간이 소요될 수 있다. 호스트 DMA 동작(HDMA)에 따른 긴 지연 시간이 기입 커맨드 컴플리션의 레이턴시로 반영될 것이다. 기입 커맨드 컴플리션의 긴 레이턴시(long latency)는 호스트 시스템(10)의 고속 성능을 저해하는 요인이 될 수 있다.
호스트(100)의 기입 커맨드에 따른 제1 데이터(WData1)의 기입 동작이, 예를 들어 3.2GB/s 밴드위스로 수행된다고 가정하자. 제1 데이터(WData1)에 대한 기입 동작은, 도 4c에 도시된 바와 같이, 외부 인터페이스(300)를 통해 호스트 메모리(120)에서 CMB(216)의 제1 메모리 영역(420)으로 3.2GB/s 밴드위스로 전송하는 동작, 호스트 DMA 동작(HDMA)에 의해 CMB(216)의 제1 메모리 영역(420)에서 3.2GB/s 밴드위스로 출력하는 동작과 CMB(216)의 제2 메모리 영역(422)으로 3.2GB/s 밴드위스로 입력하는 동작, 그리고 NVM 인터페이스(230)를 통해 CMB(216)의 제2 메모리 영역(422)에서 NVM(220)으로 3.2GB/s 밴드위스로 전송하는 동작으로 구성될 수 있다. 이에 따라, CMB(216)에서 요구되는 버퍼 밴드위스는 12.8GB/s(=3.2GB/s*4)가 된다. 즉, 호스트 DMA 동작(HDMA)이 수행됨에 따라 CMB(216)의 밴드위스 요구량이 증가하는데, 이는 CMB(216)의 메모리 기능에 비효율적일 수 있다.
도 3 내지 도 4c에서 설명된 기입 동작에서 호스트 DMA 동작(HDMA)을 생략할 수 있다면, 기입 커맨드 컴플리션 레이턴시를 줄이고 CMB(126)를 보다 효율적으로 사용할 수 있을 것이다. 호스트 DMA 동작을 생략할 수 있는 저장 장치(200)의 동작 방법들이 도 5 내지 도 8c에서 예시된다.
도 5 내지 도 8c는 도 1의 호스트 시스템에서 수행되는 제2 예의 기입 동작을 설명하는 도면들이다. 도 5 내지 도 8c를 참조하면, 기입 동작은 호스트 DMA 동작(HDMA) 없이 다음과 같이 진행될 수 있다.
도 1 및 도 2와 연계하여 도 5를 참조하면, 호스트 DMA 동작을 생략할 수 있는 저장 장치(200)의 기입 동작은 다음과 같이 진행될 수 있다.
저장 장치(200)는 호스트(100)와 과거에 수행되었던 데이터 통신들에 의해 저장 장치(200)로 기입될 데이터를 CMB(216)에 저장하고 있을 수 있다(S510). S510 단계 이전에, 저장 장치(200)는 호스트(100)에서 제공된 제1 기입 데이터(WData1)를 CMB(216)에 저장하고 있을 수 있다.
호스트(100)는 저장 장치(200)로 인스턴트 기입 플래그를 포함하는 기입 커맨드를 발행할 수 있다(S520). 호스트(100)는 저장 장치(200)로 기입될 데이터가 CMB(216)에 저장되어 있는지 여부를 판단하고, 기입 데이터 지원(WDS) 및 인스턴트 기입 플래그를 발행할 수 있다. 예시적으로, 로직 "1"의 인스턴트 기입 플래그는 저장 장치(200)로 기입될 데이터가 CMB(216)에 저장되어 있다는 것을 나타내고, 로직 "0"의 인스턴트 기입 플래그는 저장 장치(200)로 기입될 데이터가 CMB(216)에 저장되어 있지 않다는 것을 나타낼 수 있다.
저장 장치(200)는 WDS 지원 여부를 판별하고, WDS가 지원되면 인스턴트 기입 플래그에 응답하여 CMB(216)의 프리 버퍼 영역의 어드레스를 할당하고, 할당된 프리 버퍼 영역의 어드레스를 CMB 어드레스 맵핑 테이블에 업데이트할 수 있다(S530). 저장 장치(200)는 CMB 어드레스 맵핑 테이블을 업데이트한 후에 기입 커맨드 컴플리션을 호스트(100)로 전송할 수 있다(S540). CMB 어드레스 맵핑 테이블을 업데이트하는 동작은 도 6을 참조하여 설명될 것이다.
도 6을 참조하면, 저장 장치(200)는 호스트(100)와 과거에 수행되었던 데이터 통신들에 의해 저장 장치(200)로 기입될 사용자 데이터를 제1 CMB 어드레스(0x1000)의 메모리 영역에 저장하고 있을 수 있다(S510). 저장 장치(200)는 제1 CMB 어드레스(0x1000)에 맵핑되는 CMB(216) 내부의 제1 디바이스 어드레스(0x7000)의 메모리 영역에 사용자 데이터를 저장하고 있다. 호스트(100)는 WDS 및 인스턴트 기입 플래그를 포함하는 기입 커맨드를 콘트롤러(210)로 발행할 수 있다(S520).
콘트롤러(210)는 인스턴트 기입 플래그에 응답하여 SRAM(214)에 저장되어 있는 CMB 어드레스 맵핑 테이블을 참조할 수 있다. 콘트롤러(210)는 호스트(100)에서 타겟팅하는 제1 CMB 어드레스(0x1000)가 CMB(216) 내부의 제1 디바이스 어드레스(0x7000)로 할당되어 있음을 알 수 있다. 콘트롤러(210)는 프로세서(212)의 플래시 변환 테이블(211)을 이용하여 CMB(216)의 프리 버퍼 영역의 어드레스들을 저장하고 있는 버퍼 풀(215)에서 새로운 어드레스(예, 0x5000)를 패치할 수 있다(S530). 콘트롤러(210)는 패치된 새로운 어드레스를 제2 디바이스 어드레스(0x5000)로 할당하고, 제2 디바이스 어드레스(0x5000)가 제1 CMB 어드레스(0x1000)에 포인팅되도록 CMB 어드레스 맵핑 테이블을 업데이트할 수 있다(S530). 이 후에, 호스트(100)가 타겟팅하는 제1 CMB 어드레스(0x1000)는 CMB(216) 내부의 제2 디바이스 어드레스(0x5000)로 변환될 것이다.
콘트롤러(210)는 CMB 어드레스 맵핑 테이블을 업데이트한 후, 기입 커맨드 컴플리션을 호스트(100)로 전송할 수 있다(S540). 콘트롤러(210)는 호스트 DMA 동작(HDMA)을 수행하지 않고 기입 커맨드 컴플리션을 호스트(100)로 전송할 수 있다.
SRAM(214)에 저장된 CMB 어드레스 맵핑 테이블과 프로세서(212)에 내재된 버퍼 풀(215)은 CMB 어드레스 스왑 모듈(600)을 구성할 수 있다. CMB 어드레스 스왑 모듈(600)은 저장 장치(200)에서 호스트 DMA 동작(HDMA) 없이 기입 커맨드 컴플리션을 호스트(100)로 즉시 발생하도록 하기 위하여, 호스트(100)가 타겟팅하는 CMB 어드레스를 CMB(126)에 할당된 새로운 디바이스 어드레스로 변환하는 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등을 포함하도록 펌웨어나 소프트웨어로 구현될 수 있다. CMB 어드레스 스왑 모듈(600)의 기능들은 소프트웨어에 의해 제어되거나 하드웨어 자동화될 수 있다.
도 7을 참조하면, CMD 어드레스 스왑 모듈(600)의 동작에 사용되는 CMB 어드레스 맵핑 테이블은 메모리 장치(700)에 저장될 수 있다. 메모리 장치(700)는 DRAM으로 구현될 수 있다. 메모리 장치(700)는 CMB 어드레스 맵핑 테이블 전체를 저장할 수 있다. CMD 어드레스 스왑 모듈(600)은 메모리 장치(700)에 저장된 전체 CMB 어드레스 맵핑 테이블에서 호스트(100)가 타겟팅하는 CMB 어드레스와 상관되는 CMB 어드레스 맵핑 테이블 일부를 SRAM(214)에 저장할 수 있다. 이에 따라, SRAM(214)은 CMB 어드레스 맵핑 테이블을 캐싱하는 용도로 이용될 수 있다.
도 8a를 참조하면, 호스트(100)에서 CPU(110)의 제1 프로세싱에 의해 생성된 제1 데이터(WData1)가 호스트 메모리(120)에 저장되고, 호스트 메모리(120)의 제1 데이터(WData1)는 제1 CMB 어드레스(0x1000)와 함께 콘트롤러(210)로 전송될 수 있다. 콘트롤러(210)는 제1 데이터(WData1)를 제1 CMB 어드레스(0x1000)에 매칭되는 CMB(216)의 제1 디바이스 어드레스(0x7000)의 메모리 영역(420)에 저장할 수 있다.
콘트롤러(210)는 CMB(216)의 프리 버퍼 영역의 제2 다바이스 어드레스(0x5000)를 할당하고, 제2 디바이스 어드레스(0x5000)가 제1 CMB 어드레스(0x1000)에 포인팅되도록 CMB 어드레스 맵핑 테이블을 업데이트할 수 있다. 콘트롤러(210)는 CMB 어드레스 맵핑 테이블을 업데이트한 후에 기입 커맨드 컴플리션을 호스트(100)로 즉시 전송할 수 있다.
호스트(100)는 기입 커맨드 컴플리션을 수신하고 나서, 제2 프로세싱에 의해 생성된 제2 데이터(WData2)를 호스트 메모리(120)에 저장하고, 호스트 메모리(120)의 제2 데이터(410)를 제1 CMB 어드레스(0x1000)와 함께 콘트롤러(210)로 전송될 수 있다. 즉, 호스트(100)는 제1 CMB 어드레스(0x1000)를 즉시 사용할 수 있다. 콘트롤러(210)는 제2 데이터(WData2)를 제1 CMB 어드레스(0x1000)에 매칭되는 CMB(216)의 제2 디바이스 어드레스(0x5000)의 메모리 영역(420)에 저장할 수 있다.
도 8b를 참조하면, 기입 커맨드 컴플리션은 CMB 어드레스 맵핑 테이블을 업데이트하는 어드레스 스왑에 따른 지연 시간 정도, 예컨대 거의 제로의 레이턴시를 갖는다. 기입 커맨드 컴플리션의 짧은 레이턴시는 호스트 시스템(10)의 고속 성능에 유익할 수 있다.
도 8c에서, 호스트(100)의 기입 커맨드에 따른 제1 데이터(WData1)의 기입 동작이, 예를 들어 3.2GB/s 밴드위스로 수행된다고 가정하자. 제1 데이터(WData1)에 대한 기입 동작은, 외부 인터페이스(300)를 통해 호스트 메모리(120)에서 CMB(216)의 제1 디바이스 어드레스(0x7000)의 메모리 영역으로 3.2GB/s 밴드위스로 전송하는 동작과, NVM 인터페이스(230)를 통해 CMB(216)의 제1 디바이스 어드레스(0x7000)의 메모리 영역에서 NVM(220)으로 3.2GB/s 밴드위스로 전송하는 동작으로 구성될 수 있다. 이에 따라, CMB(216)에서 요구되는 버퍼 밴드위스는 6.4GB/s(=3.2GB/s*2)가 된다. CMB(216)에서 요구되는 버퍼 밴드위스는 도 4c의 호스트 DMA 동작(HDMA) 수행에 따른 CMB(216)의 밴드위스 (12.8GB/s) 보다 감소된다. 이에 따라, CMB(216)의 메모리 기능이 보다 효율적일 수 있다.
도 9는 본 발명의 실시예에 따른 콘트롤러 메모리 버퍼 사이즈를 예시적으로 보여주는 도면이다.
도 9를 참조하면, 콘트롤러 메모리 버퍼 사이즈는 제1 예비 영역의 4 비트(00~03), 기입 데이터 지원(WDS)을 지시하는 1 비트(04), 인스턴트 기입 지원(IWS)을 지시하는 1 비트(05), 그리고 제2 예비 영역의 26 비트(06~31)를 포함할 수 있다. WDS를 지원하는 비트가 로직 "1" 이면, 콘트롤러(210, 도 1)는 호스트(100)에서 콘트롤러(210)로 데이터를 전송하라는 커맨드에 대한 데이터로서 CMB(216) 내부의 데이터를 지원할 수 있다. WDS를 지원하는 비트가 로직 "0" 이면, 호스트(100)에서 콘트롤러(210)로 데이터를 전송하라는 커맨드에 대한 데이터는 호스트 메모리(120)로부터 전송된다. IDS를 지원하는 비트가 로직 "1"로 셋팅되면, 콘트롤러(210)는 CMB(216)가 기입 버퍼로 사용될 때 인스턴트 기입 컴플리션을 지원할 수 있다.
도 10은 본 발명의 실시예에 따른 인스턴트 기입 플래그를 예시적으로 보여주는 도면이다.
도 10을 참조하면, 인스턴트 기입 플래그는 논리 블록의 수(NLB)는 16 비트(00~15), 인스턴트 기입을 지시하는 1 비트(16), 그리고 예비 영역의 15 비트(17~31)를 포함할 수 있다. NLB를 지시하는 필드는 기입될 논리 블록의 수를 나타낸다. 인스턴트 기입을 지시하는 비트가 로직 "1"이면, 기입 데이터는 CMB 영역에 저장된다. 인스턴트 기입을 지시하는 비트는 임의선택적으로 추가될 수 있다.
도 11은 본 발명의 실시예에 따른 기입 버퍼 문턱값을 예시적으로 보여주는 도면이다.
도 11을 참조하면, 기입 버퍼 문턱값은 기입 버퍼 문턱값(WT)을 설정하는 16 비트(00~15), 그리고 예비 영역의 16 비트(16~31)를 포함할 수 있다. WT를 설정하는 필드는 CMB(126) 내 프리 버퍼 영역의 문턱값을 0~99 백분위수(percentile)로 나타낼 수 있다.
도 12는 본 발명의 실시예에 따른 기입 버퍼 문턱값 요청 방법을 설명하는 도면이다. 도 12를 참조하면, CMB(126)의 기입 버퍼 문턱값 요청 방법(S1200)은 다음과 같이 진행될 수 있다.
호스트(100)는 기입 버퍼 문턱값을 가진 셋 피쳐스 커맨드를 저장 장치(200)로 전송할 수 있다(S1210). 저장 장치(200)는 CMB(126)의 프리 버퍼 영역을 기입 버퍼 문턱값으로 설정하여 동작될 수 있다(S1220).
도 13은 본 발명의 실시예에 따른 비동기 이벤트 정보 통지를 예시적으로 보여주는 도면이다.
도 13을 참조하면, 비동기 이벤트 정보 통지는 제1 예비 영역의 8 비트(00~07), 기입 버퍼 문턱값 미만을 알리는 8 비트(08~15), 그리고 제2 예비 영역의 26 비트(06~31)를 포함할 수 있다. 기입 버퍼 문턱값 미만을 알리는 필드는 이용할 수 있는(available) CMB(126)의 프리 버퍼 영역이 설정된 기입 버퍼 문턱값 아래로 떨어졌음을 나타내는 비트들을 포함할 수 있다. 기입 버퍼 문턱값 미만을 알리는 필드는 비동기 커맨드 컴플리션에 삽입될 수 있다.
도 14는 본 발명의 실시예에 따른 비동기 이벤트 정보 통지 요청 방법을 설명하는 도면이다. 도 14를 참조하면, 비동기 이벤트 정보 통지 요청 방법(S1400)은 다음과 같이 진행될 수 있다.
저장 장치(200)는 호스트(100)의 SQ(1110)에 발행된 비동기 이벤트 요청 커맨드를 패치할 수 있다(S1410). 저장 장치(200)는 CMB(126)의 프리 버퍼 영역을 알 필요가 있는 지를 판별할 수 있다(S1420). 만일, CMB(126)의 프리 버퍼 영역이 설정된 기입 버퍼 문턱값 아래로 떨어져 있다고 판단되면, 저장 장치(200)는 비동기 커맨드 컴플리션에 기입 버퍼 문턱값 미만을 삽입할 수 있다. 저장 장치(200)는 기입 버퍼 문턱값 미만을 가진 비동기 커맨드 컴플리션을 호스트(100)로 전송할 수 있다(S1430).
도 15는 본 발명의 실시예에 따른 기입 버퍼 문턱값 설정 방법을 설명하는 플로우챠트이다.
도 15를 참조하면, 기입 버퍼 문턱값 설정 방법은, 도 12에서 설명된 CMB(126)의 기입 버퍼 문턱값 요청 방법(S1200)을 수행하고, 도 14에서 설명된 비동기 이벤트 정보 통지 요청 방법(S1400)을 수행할 수 있다. 기입 버퍼 문턱값 요청 방법(S1200)은, 호스트(100)에서 기입 버퍼 문턱값을 가진 셋 피쳐스 커맨드를 저장 장치(200)로 전송하고(S1210), 저장 장치(200)는 CMB(126)의 프리 버퍼 영역을 기입 버퍼 문턱값으로 설정하여 동작할 수 있다(S1220). 비동기 이벤트 정보 통지 요청 방법(S1400)은, 저장 장치(200)에서 호스트(100)의 SQ(1110)에 발행된 비동기 이벤트 요청 커맨드를 패치하고(S1410), 저장 장치(200)는 CMB(126)의 프리 버퍼 영역이 설정된 기입 버퍼 문턱값 아래로 떨어져 있다고 판단되면, 기입 버퍼 문턱값 미만을 가진 비동기 커맨드 컴플리션을 호스트(100)로 전송할 수 있다(S1430).
도 16은 본 발명의 실시예에 따른 도 1의 호스트 시스템에서 수행되는 제3 예의 기입 동작을 설명하는 도면이다.
도 16을 참조하면, 호스트 시스템(10)은 기입 데이터 지원(WDS) 여부를 판별할 수 있다(S1600). 판별 결과, WDS를 지시하는 비트가 로직 "0"으로 WDS를 지원하지 않는 경우(아니오), S300 단계로 이동한다. 판별 결과, WDS를 지시하는 비트가 로직 "1"로 WDS를 지원하는 경우(예), S500 단계로 이동한다. S300 단계는 도 3에서 설명된 호스트 DMA 동작(HDMA)을 포함하는 기입 동작을 수행할 수 있다. S300 단계는 호스트(100)에서 저장 장치(200)로 기입될 데이터를 생성하는 동작(S310), 호스트(100)가 저장 장치(200)로 기입 커맨드를 발행하는 동작(S320), 저장 장치(200)에서 SQ(1110)의 기입 커맨드를 패치하고, 호스트 DMA 동작(HDMA)을 트리거하는 동작(S330), 그리고 기입 커맨드 컴플리션을 호스트(100)로 전송하는 동작(S340)을 포함할 수 있다.
S500 단계는 도 5에서 설명된 호스트 DMA 동작(HDMA) 없이 기입 동작을 수행할 수 있다. S500 단계는 호스트(100)에서 저장 장치(200)로 인스턴트 기입 플래그를 포함하는 기입 커맨드를 발행하는 동작(S520), 저장 장치(200)에서 인스턴트 기입 플래그에 응답하여 CMB(216)의 프리 버퍼 영역의 어드레스를 할당하고, 할당된 프리 버퍼 영역의 어드레스를 CMB 어드레스 맵핑 테이블에 업데이트하는 동작(S530), 그리고 저장 장치(200)에서 기입 커맨드 컴플리션을 호스트(100)로 전송하는 동작(S540)을 포함할 수 있다.
도 17은 본 발명의 실시예에 따른 서버 시스템을 보여주는 블록 다이어그램이다.
도 17을 참조하면, 서버 시스템(1700)은 복수의 서버들(170_1, 170_2, … , 170_N)을 포함할 수 있다. 복수의 서버들(170_1, 170_2, … , 170_N)은 관리자(1710)와 연결될 수 있다. 복수의 서버들(170_1, 170_2, … , 170_N)은 상술된 호스트 시스템(10)과 동일 또는 유사할 수 있다. 복수의 서버들(170_1, 170_2, … , 170_N) 각각에서, 호스트는 기입 데이터 지원(WDS), 인스턴트 기입 플래그, 기입 버퍼 문턱값 및/또는 기입 커맨드를 발행할 수 있다. 저장 장치는 WDS 지원 여부를 판별하고, WDS가 지원되면 인스턴트 기입 플래그를 포함하는 기입 커맨드를 패치하고, 패치된 기입 커맨드에 응답하여 호스트 DMA 동작(HDMA) 없이 콘트롤러 메모리 버퍼(CMB)에 대한 어드레스 맵핑 테이블을 업데이트하고, 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생할 수 있다. 저장 장치는 WDS가 지원되지 않는 경우, 호스트에서 발행된 기입 커맨드에 대응하여 CMB에서 호스트 DMA 동작을 수행한 후 기입 커맨드 컴플리션을 발생할 수 있다. 저장 장치는 호스트로부터 CMB 내 프리 버퍼 영역의 문턱값을 기입 버퍼 문턱값으로 입력 받고, CMB 내 프리 버퍼 영역을 기입 버퍼 문턱값으로 설정할 수 있다. 저장 장치는 CMB 내 프리 버퍼 영역이 기입 버퍼 문턱값 미만임을 호스트에 통지할 수 있다.
도 18은 본 발명의 실시예에 따른 데이터 센터를 보여주는 블록 다이어그램이다.
도 18을 참조하면, 데이터 센터(1800)는 복수의 서버 시스템들(1800_1, 1800_2, … , 1800_N)을 포함할 수 있다. 복수의 서버 시스템들(1800_1, 1800_2, … , 1800_N) 각각은 도 17에 도시된 서버 시스템(1700)과 유사하거나 동일할 수 있다. 복수의 서버 시스템들(1800_1, 1800_2, … , 1800_N)은 인터넷과 같은 네트워크(1830)를 통하여 다양한 노드들(1810_1, 1810_2, … , 1810_M)과 통신할 수 있다. 예를 들어, 노드들(1810_1, 1810_2, … , 1810_M)은 클라이언트 컴퓨터들, 다른 서버들, 원격 데이터 센터들, 스토리지 시스템들 중 어느 하나일 수 있다.
복수의 서버 시스템들(1800_1, 1800_2, … , 1800_N) 및/또는 노드들(1810_1, 1810_2, … , 1810_M) 각각에서, 호스트는 기입 데이터 지원(WDS), 인스턴트 기입 플래그, 기입 버퍼 문턱값 및/또는 기입 커맨드를 발행할 수 있다. 저장 장치는 WDS 지원 여부를 판별하고, WDS가 지원되면 인스턴트 기입 플래그를 포함하는 기입 커맨드를 패치하고, 패치된 기입 커맨드에 응답하여 호스트 DMA 동작(HDMA) 없이 콘트롤러 메모리 버퍼(CMB)에 대한 어드레스 맵핑 테이블을 업데이트하고, 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생할 수 있다. 저장 장치는 WDS가 지원되지 않는 경우, 호스트에서 발행된 기입 커맨드에 대응하여 CMB에서 호스트 DMA 동작을 수행한 후 기입 커맨드 컴플리션을 발생할 수 있다. 저장 장치는 호스트로부터 CMB 내 프리 버퍼 영역의 문턱값을 기입 버퍼 문턱값으로 입력 받고, CMB 내 프리 버퍼 영역을 기입 버퍼 문턱값으로 설정할 수 있다. 저장 장치는 CMB 내 프리 버퍼 영역이 기입 버퍼 문턱값 미만임을 호스트에 통지할 수 있다.
본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (20)

  1. 저장 장치의 동작 방법에 있어서,
    호스트로부터 기입 데이터 지원(WDS)을 지시받는 단계;
    상기 호스트에서 발행되는 기입 커맨드를 입력 받는 단계;
    상기 기입 커맨드에 응답하여 상기 저장 장치의 콘트롤러 메모리 버퍼(CMB)에 대한 어드레스 맵핑 테이블을 업데이트하는 단계; 및
    상기 CMB에서 호스트 DMA 동작 없이 상기 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 호스트에서 발행되는 기입 커맨드를 입력 받는 단계는,
    상기 기입 커맨드에 선택적으로 포함되는 인스턴트 기입 플래그를 입력 받는 동작을 포함하는 동작.
  3. 제1항에 있어서, 상기 호스트로부터 기입 데이터 지원(WDS)을 지시받는 단계는,
    상기 호스트에서 타겟팅하는 제1 CMB 어드레스의 데이터가 상기 CMB 내부의 제1 디바이스 어드레스에 저장되어 있다고 판단하는 동작을 포함하는 방법.
  4. 제3항에 있어서, 상기 기입 커맨드에 응답하여 상기 저장 장치의 상기 CMB에 대한 어드레스 맵핑 테이블을 업데이트하는 단계는,
    상기 CMB의 프리 버퍼 영역의 제2 디바이스 어드레스를 할당하는 단계; 및
    상기 제1 CMB 어드레스가 상기 제2 디바이스 어드레스를 포인팅하도록 상기 어드레스 맵핑 테이블을 업데이트하는 단계를 포함하는 방법.
  5. 제1항에 있어서, 상기 방법은,
    상기 호스트로부터 상기 CMB 내 프리 버퍼 영역의 문턱값을 기입 버퍼 문턱값으로 입력 받는 단계를 더 포함하는 방법.
  6. 제5항에 있어서, 상기 방법은,
    상기 호스트로부터 상기 기입 버퍼 문턱값을 가진 셋 피쳐스 커맨드를 수신받는 단계; 및
    상기 CMB 내 상기 프리 버퍼 영역을 상기 기입 버퍼 문턱값으로 설정하여 동작하는 단계를 더 포함하는 방법.
  7. 제5항에 있어서, 상기 방법은,
    상기 CMB 내 상기 프리 버퍼 영역이 상기 기입 버퍼 문턱값 미만임을 상기 호스트에 통지하는 단계를 더 포함하고,
    상기 CMB 내 상기 프리 버퍼 영역이 상기 기입 버퍼 문턱값 미만임을 상기 호스트에 통지하는 단계는,
    상기 호스트에서 발행된 비동기 이벤트 요청 커맨드에 대응하며 상기 기입 버퍼 문턱값 미만을 가진 비동기 커맨드 컴플리션을 발생하는 단계를 포함하는 방법.
  8. 저장 장치의 동작 방법에 있어서,
    호스트로부터 제공되는 기입 데이터 지원(WDS) 여부를 판단하는 단계;
    상기 판단 결과, 상기 WDS가 지원되는 경우, 상기 저장 장치의 콘트롤러 메모리 버퍼(CMB)에서 호스트 DMA 동작 없이 상기 호스트에서 발행된 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생하는 단계; 및
    상기 판단 결과, 상기 WDS가 지원되지 않는 경우, 상기 호스트에서 발행된 기입 커맨드에 대응하여 상기 CMB에서 상기 호스트 DMA 동작을 수행한 후 상기 기입 커맨드 컴플리션을 발생하는 단계를 포함하는 방법.
  9. 제8항에 있어서, 상기 방법은,
    상기 WDS가 지원되는 경우, 상기 콘트롤러 메모리 버퍼 내 프리 버퍼 영역을 이용하여 상기 CMB에 대한 어드레스 맵핑 테이블을 업데이트하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서, 상기 방법은,
    상기 호스트로부터 상기 CMB 내 프리 버퍼 영역의 문턱값을 기입 버퍼 문턱값으로 입력 받는 단계를 더 포함하는 방법.
  11. 제10항에 있어서, 상기 방법은,
    상기 CMB 내 상기 프리 버퍼 영역을 상기 기입 버퍼 문턱값으로 설정하여 동작하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서, 상기 방법은,
    상기 CMB 내 프리 버퍼 영역이 상기 기입 버퍼 문턱값 미만임을 상기 호스트에 통지하는 단계를 더 포함하는 방법.
  13. 제8항에 있어서, 상기 호스트 DMA 동작은,
    상기 호스트로부터 상기 기입 커맨드를 패치하는 동작;
    상기 호스트로부터 상기 저장 장치에 기입될 데이터를 상기 CMB의 제1 메모리 영역에 저장하는 동작; 및
    상기 CMB의 상기 제1 메모리 영역에 저장된 데이터를 상기 CMB의 제2 메모리 영역으로 복사하는 동작을 포함하는 방법.
  14. 호스트의 커맨드 발행 방법에 있어서,
    저장 장치로 기입 데이터 지원(WDS)을 발행하는 단계;
    상기 저장 장치로 인스턴트 기입 플래그를 선택적으로 포함하는 기입 커맨드를 발행하는 단계; 및
    상기 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 입력 받는 단계를 포함하는 방법.
  15. 제14항에 있어서, 상기 방법은,
    상기 저장 장치가 상기 기입 커맨드에 응답하여 콘트롤러 메모리 버퍼(CMB) 내 프리 버퍼 영역을 이용하여 상기 CMB에 대한 어드레스 맵핑 테이블을 업데이트하도록 상기 프리 버퍼 영역에 대한 기입 버퍼 문턱값을 가진 셋 피쳐스 커맨드를 발행하는 단계를 포함하는 방법.
  16. 제15항에 있어서, 상기 방법은
    상기 저장 장치로 비동기 이벤트 요청 커맨드를 발행하는 단계; 및
    상기 비동기 이벤트 요청 커맨드에 대응하며 기입 버퍼 문턱값 미만을 가진 비동기 커맨드 컴플리션을 입력 받는 단계를 더 포함하는 방법.
  17. 불휘발성 메모리 장치들; 및
    상기 불휘발성 메모리 장치들을 제어하는 콘트롤러를 포함하고,
    상기 콘트롤러는
    호스트로부터 제공되는 기입 데이터 지원(WDS)를 포함하는 기입 커맨드에 응답하여, 콘트롤러 메모리 버퍼(CMB) 내 프리 버퍼 영역을 이용하여 상기 CMB에 대한 어드레스 맵핑 테이블을 업데이트하는 CMB 어드레스 스왑 모듈을 포함하는 저장 장치.
  18. 제17항에 있어서, 상기 콘트롤러는,
    상기 CMB에 대한 상기 어드레스 맵핑 테이블 업데이트 후, 상기 기입 커맨드에 대응하는 기입 커맨드 컴플리션을 발생하는 저장 장치.
  19. 제17항에 있어서, 상기 저장 장치는
    상기 CMB에 대한 어드레스 맵핑 테이블을 저장하는 SRAM을 더 포함하는 저장 장치.
  20. 제17항에 있어서, 상기 저장 장치는
    상기 CMB에 대한 어드레스 맵핑 테이블 전체를 저장하는 DRAM; 및
    상기 어드레스 맵핑 테이블 전체에서 상기 호스트가 타겟팅하는 CMB 어드레스와 상관되는 CMB 어드레스 맵핑 테이블 일부를 저장하는 SRAM을 더 포함하는 저장 장치.
KR1020170166192A 2017-12-05 2017-12-05 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법 KR20190066466A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170166192A KR20190066466A (ko) 2017-12-05 2017-12-05 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법
US16/020,581 US20190171392A1 (en) 2017-12-05 2018-06-27 Method of operating storage device capable of reducing write latency
CN201810827534.XA CN109871182A (zh) 2017-12-05 2018-07-25 存储装置及其操作方法及发出命令的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170166192A KR20190066466A (ko) 2017-12-05 2017-12-05 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20190066466A true KR20190066466A (ko) 2019-06-13

Family

ID=66657683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170166192A KR20190066466A (ko) 2017-12-05 2017-12-05 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법

Country Status (3)

Country Link
US (1) US20190171392A1 (ko)
KR (1) KR20190066466A (ko)
CN (1) CN109871182A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11355210B2 (en) 2020-09-02 2022-06-07 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309077B (zh) * 2019-06-28 2021-06-11 清华大学 主机与设备协同工作的闪存转换层构建方法及装置
JP7408357B2 (ja) 2019-11-15 2024-01-05 キオクシア株式会社 メモリシステム及びその制御方法
CN111176566B (zh) * 2019-12-25 2023-09-19 山东方寸微电子科技有限公司 一种支持queue命令的eMMC读写控制方法及存储介质
US11194503B2 (en) 2020-03-11 2021-12-07 Samsung Electronics Co., Ltd. Storage device having a configurable command response trigger
US11321017B2 (en) * 2020-06-29 2022-05-03 SK Hynix Inc. Systems and methods for controlling completion rate of commands
US11822816B2 (en) * 2021-09-29 2023-11-21 Dell Products L.P. Networking device/storage device direct read/write system
US11842069B2 (en) * 2022-01-14 2023-12-12 Western Digital Technologies, Inc. Storage system and method for delaying flushing of a write buffer based on a host-provided threshold
US20240094911A1 (en) * 2022-09-20 2024-03-21 Western Digital Technologies, Inc. Dynamic And Shared CMB And HMB Allocation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11355210B2 (en) 2020-09-02 2022-06-07 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
US20190171392A1 (en) 2019-06-06
CN109871182A (zh) 2019-06-11

Similar Documents

Publication Publication Date Title
KR20190066466A (ko) 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법
US10970235B2 (en) Computing system with a nonvolatile storage and operating method thereof
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US9910786B2 (en) Efficient redundant array of independent disks (RAID) write hole solutions
KR102336443B1 (ko) 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치
KR102367982B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
CN105549898A (zh) 操作数据存储装置和主机及移动计算装置的方法
US9164804B2 (en) Virtual memory module
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
CN110114762B (zh) 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备
US20150347016A1 (en) Input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device
US20220121581A1 (en) Controller and operation method thereof
CN112445423A (zh) 存储器系统、计算机系统及其数据管理方法
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US20190026029A1 (en) Storage device, storage system and method of operating the same
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US20230169022A1 (en) Operating method of an electronic device
KR20220127076A (ko) 컨트롤러 및 컨트롤러의 동작 방법
US11868270B2 (en) Storage system and storage device, and operating method thereof
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
CN113885783B (zh) 存储器系统及其操作方法
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device

Legal Events

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