KR20180010951A - 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 - Google Patents

데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 Download PDF

Info

Publication number
KR20180010951A
KR20180010951A KR1020170019763A KR20170019763A KR20180010951A KR 20180010951 A KR20180010951 A KR 20180010951A KR 1020170019763 A KR1020170019763 A KR 1020170019763A KR 20170019763 A KR20170019763 A KR 20170019763A KR 20180010951 A KR20180010951 A KR 20180010951A
Authority
KR
South Korea
Prior art keywords
data
host
write command
memory area
driver
Prior art date
Application number
KR1020170019763A
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 삼성전자주식회사
Publication of KR20180010951A publication Critical patent/KR20180010951A/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
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0638Organizing or formatting or addressing of data
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)

Abstract

데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 및 이를 이용하는 시스템이 제공된다. 데이터 스토리지 시스템은, 스토리지 장치, 및 호스트를 포함하되, 상기 호스트는 드라이버를 포함하고, 상기 드라이버는, 상기 호스트의 쓰기 버퍼로부터 데이터를 읽고, 상기 호스트의 애플리케이션으로부터 수신한 쓰기 명령에 응답하여 데이터를 읽고, 상기 데이터를 상기 호스트의 메모리 영역으로 전송하고, 상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고, 상기 호스트의 제출 큐(submission queue)로 상기 쓰기 명령을 전송하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함한다.

Description

데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법{METHOD OF ACHIEVING LOW WRITE LATENCY IN A DATA STARAGE SYSTEM}
본 발명은 일반적으로 데이터 스토리지 시스템에 관련된 것이며, 더욱 구체적으로는 데이터 스토리지 시스템에서 낮은 쓰기 레이턴시(latency)를 얻는 방법에 관련된 것이다.
종래의 PCIe 비휘발성 메모리 익스프레스(Non-Volatile Memory express; NVMe)에서, 쓰기 명령을 처리하는 데 수반되는 레이턴시가 존재한다. 처음에, 쓰기(WR) 명령의 데이터는 애플리케이션(호스트에서 실행되는)에 의하여 준비되고, 호스트 내의 쓰기 버퍼(write buffer)로 전송된다. 애플리케이션은 호스트의 드라이버로 쓰기 명령을 알린다. 드라이버는 제출 큐(submission queue)로 쓰기 명령을 전송한다. 그 후 드라이버는 제출 큐 내의 쓰기 명령에 대하여 SSD에 알린다. SSD는 제출 큐로부터 쓰기 명령을 인출(fetch)한 다음 쓰기 버퍼로부터 SSD의 내부 버퍼로 쓰기 명령 데이터를 인출한다. 또한, 드라이버는 드라이버가 SSD로부터 쓰기 명령의 완료 지시(indication)을 수신한 후, 애플리케이션으로 쓰기 명령의 완료를 통지한다.
상술한 단계에서, 애플리케이션이 쓰기 명령을 준비하고 드라이버로부터 쓰기 명령 완료 지시를 수신하는 시간 간격의 차이는 쓰기 명령 레이턴시를 나타낸다. 종래의 PCIe NVMe 기반 SSD에서 쓰기 명령의 완료는, 장치에 의해 쓰기 명령의 데이터가 인출되고 SSD로부터 쓰기 명령의 완료 지시가 수신된 때에만 드라이버에 의해 애플리케이션으로 지시된다.
종래의 PCIe NVMe 기반 SSD에서의 쓰기 명령 관리는 PCIe가 다른 부품(component)들 사이에서 공유되기 때문에 애플리케이션에 대한 결정적 레이턴시(deterministic latency)를 보장할 수 없다.
상기 정보는 읽는 사람으로 하여금 본 발명을 이해할 수 있도록 배경 지식으로 제공된다. 출원인은 위의 사항 중 어떠한 것도 본 출원과 관련하여 선행 기술로 적용될 수 있는지 여부에 대하여 아무런 결정도 내리지 않았으며 어떠한 주장도 하지 않았다.
본 발명이 해결하고자 하는 기술적 과제는 데이터 스토리지 시스템에서 낮은 쓰기 레이턴시를 얻는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 PCIe 기반 NVMe SSD에서 결정적 쓰기 레이턴시를 얻는 방법 및 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 PCIe 기반 NVMe SSD의 낮은 쓰기 레이턴시를 얻는 방법 및 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 스토리지 시스템은, 스토리지 장치, 및 호스트를 포함하되, 상기 호스트는 드라이버를 포함하고, 상기 드라이버는, 상기 호스트의 쓰기 버퍼로부터 데이터를 읽고, 상기 호스트의 애플리케이션으로부터 수신한 쓰기 명령에 응답하여 데이터를 읽고, 상기 데이터를 상기 호스트의 메모리 영역으로 전송하고, 상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고, 상기 호스트의 제출 큐(submission queue)로 상기 쓰기 명령을 전송하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함한다.
본 발명의 몇몇 실시예에서, 상기 드라이버는, PCI 익스프레스(Peripheral Component Interconnect Express) 버스를 통해 상기 제출 큐 내에 상기 스토리지 장치로의 상기 쓰기 명령의 존재를 지시(indicate)하고, 상기 스토리지 장치는, 상기 메모리 영역으로부터 상기 데이터를 획득하고, 상기 드라이버로 상기 쓰기 명령의 완료를 지시할 수 있다.
본 발명의 몇몇 실시예에서, 상기 드라이버는 상기 스토리지 장치에 의한 데이터의 획득을 결정하는 것에 응답하여 상기 호스트 내의 메모리 영역을 해제(release)할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 스토리지 시스템의 쓰기 명령 관리 방법은, 드라이버에 의하여, 호스트 내의 애플리케이션으로부터 수신한 쓰기 명령에 응답하여 상기 호스트 내의 쓰기 버퍼로부터 데이터를 읽고, 상기 드라이버에 의하여, 상기 데이터를 상기 호스트의 메모리 영역으로 전송하고, 상기 드라이버에 의하여, 상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고, 상기 드라이버에 의하여, 상기 호스트의 제출 큐로 상기 쓰기 명령을 전송하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함한다.
본 발명의 몇몇 실시예에서, PCI 익스프레스 버스를 통해 스토리지 장치로 상기 제출 큐 내에 스토리지 장치로의 상기 쓰기 명령의 존재를 지시하고, 상기 스토리지 장치가 상기 메모리 영역으로부터 상기 데이터를 획득하는 것을 결정하는 것에 응답하여 상기 호스트의 상기 메모리 영역을 해제하는 것을 더 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 컴퓨터 프로그램 제품은, 호스트 내의 애플리케이션으로부터 수신된 쓰기 명령에 응답하여 상기 호스트 내의 쓰기 버퍼로부터 데이터를 읽고, 상기 호스트의 메모리 영역으로 상기 데이터를 전송하고, 상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고, 상기 호스트의 제출 큐로 쓰기 명령을 전송하는 것을 포함하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함한다.
본 발명의 몇몇 실시예에서, 상기 스토리지 장치가 상기 메모리 영역으로부터 상기 데이터를 획득하는 것을 결정하는 것에 응답하여 상기 호스트의 상기 메모리 영역을 해제하는 것을 더 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 쓰기 명령을 관리하기 위한 데이터 스토리지 시스템을 도시한다.
도 2는 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 쓰기 명령을 관리하기 위한 흐름도이다.
도 3은 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 쓰기 명령을 관리하기 위한 순서도이다.
도 4는 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 쓰기 명령을 관리하기 위한 방법을 구현하는 컴퓨팅 환경의 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명의 실시예들은 메모리 액세스 관리 시스템을 사용하는 공유 분산 메모리 액세스 메커니즘을 개시한다. 도면들 더욱 구체적으로 도 1 내지 도 3을 참조하면, 유사한 도면 부호는 도면 전체에 걸쳐 일관되어 대응하는 특징을 나타내고, 실시예들이 도시된다.
본 발명의 실시예들은 데이터 스토리지 시스템에서 낮은 쓰기 레이턴시를 얻는 방법을 제공한다. 이 방법은 호스트 내의 애플리케이션으로부터 수신된 쓰기 명령에 응답하여 호스트 내의 쓰기 버퍼로부터 데이터를 읽는 단계를 포함한다. 이 방법은 데이터를 호스트의 메모리 영역으로 전송하는 단계를 포함한다. 이 방법은 애플리케이션에 쓰기 명령의 완료를 전송하는 단계를 포함한다. 또한, 이 방법은 호스트의 제출 큐에 쓰기 명령을 전송하는 것을 포함한다. 본 발명의 일 실시예에서, 쓰기 명령은 메모리 영역의 데이터의 주소를 포함한다. 또한, 본 방법은 저장 장치에 의하여 데이터가 획득되었다는 결정에 응답하여 호스트에서 메모리 영역을 해제하는 단계를 포함한다.
종래의 PCIe SSD 시스템 및 이의 동작 방법과 달리, 제안된 방법은 DIMM(Dual In Line Memory Module) 슬롯에 장착된 SSD와 동일한 방식으로 PCIe NVMe SSD의 매우 낮은 쓰기 레이턴시를 얻을 수 있다. 또한, 제안된 방법은 공유된 PCIe 트래픽에 관계없이 결정적 쓰기 레이턴시(deterministic write latency)를 얻는다.
도면, 특히 도 1 내지 도 4를 참조하면, 유사한 도면 부호가 도면 전체에 걸쳐 일관되게 대응하는 특징을 나타내며, 본 발명의 실시예들이 도시된다.
도 1은 본 발명의 실시예에 따른 쓰기 명령을 관리하기 위한 데이터 스토리지 시스템(100)을 도시한다. 도 1에 도시된 것과 같이, 데이터 스토리지 시스템(100)은 호스트(102), 스토리지 장치(104), 및 PCIe 버스(106)를 포함한다. 호스트(102)는 스마트폰과 같은 어떠한 형태의 모바일 또는 휴대용 장치, 랩톱 컴퓨터, 서버 컴퓨터, PDA(Personal Digital Assistant) 등이 될 수 있다. 스토리지 장치(104)는 PCIe NVMe SSD 또는 PCIe 기반 SATAe SSD, 플래시 스토리지 등이 될 수 있다.
본 발명의 일 실시예에서, 호스트(102)는 애플리케이션, 쓰기 버퍼(102a), 드라이버(102b), 메모리 영역(102c) 및 제출 큐(102d)를 포함한다. 쓰기 버퍼(102a)는 스토리지 장치(104)에 기록될 데이터를 저장한다. 드라이버(102b)는 PCIe 버스(106)를 통해 스토리지 장치(104)로의 쓰기 명령 데이터 전송을 관리한다. 제출 큐(102d)는 쓰기 명령 또는 읽기 명령과 같은 명령들을 포함한다. 쓰기 명령은 드라이버(102b)에 의하여 제출 큐(102d)로 전송된다.
본 발명의 일 실시예에서, 메모리 영역(102c)는 호스트(102)의 메모리 내에 위치할 수 있다.
본 발명의 일 실시예에서, 스토리지 장치(104)는 제출 큐(102d)의 쓰기 명령(즉, 명령 필드에서)에 특정된 데이터의 주소를 읽음으로써 메모리 영역으로부터 데이터를 획득한다.
도 2는 본 발명의 실시예에 따른 데이터 스토리지 시스템(100)에서 쓰기 명령을 관리하기 위한 다양한 단계들을 도시하는 흐름도이다. 단계 1에서, 호스트(102)에서 동작하는 애플리케이션은 스토리지 장치(104)에 기록될 쓰기 버퍼(102a) 내의 데이터 및 데이터의 주소를 포함하는 쓰기 명령을 준비하고, 쓰기 버퍼(102a)에 쓰기 명령의 데이터를 전송한다. 단계 2에서, 애플리케이션은 쓰기 버퍼(102a)에 저장된 데이터의 주소로 쓰기 명령에 관하여 드라이버(102b)에 알린다. 단계 3에서, 드라이버(102b)는 쓰기 버퍼로부터 데이터를 읽는다. 단계 4에서, 드라이버(102b)는 데이터를 메모리 영역(102c)으로 전송한다. 단계 5에서, 드라이버(102b)는 쓰기 명령의 완료를 애플리케이션에 알린다. 단계 6에서, 드라이버(102b)는 메모리 영역(102c)에 있는 데이터의 어드레스를 포함하는 쓰기 명령을 제출 큐(102d)로 전송한다.
스토리지 장치(104)에 의하여 데이터가 인출(fetch)되고 쓰기 명령의 완료가 스토리지 장치(104)에 의하여 드라이버(102b)에 통지(post)된 후에만 쓰기 명령의 완료가 애플리케이션으로 전송되는 것과 달리, 본 발명의 몇몇 실시예들에 따른 방법에서, 드라이버(102b)는 메모리 영역(102c)에 데이터를 전송한 후에 애플리케이션에 쓰기 명령의 완료를 알린다. 따라서, 제안된 방법으로, 쓰기 명령의 레이턴시는 데이터를 메모리 영역(102c)에 전송한 후에 드라이버(102b)에 의해 애플리케이션에 쓰기 명령의 완료를 전송함으로써 감소될 수 있다.
단계 7에서, 드라이버(102b)는 스토리지 장치(104)로 쓰기 명령에 관하여 지시한다. 예를 들어, NVMe의 경우, 드라이버(102b)는 제출 큐(102d) 내의 처리되어야 할 쓰기 명령에 관하여 스토리지 장치(104)로 알린다. 본 발명의 몇몇 실시예에서, 드라이버(102b)로부터 스토리지 장치(104)로 알리는 것은 하나의 쓰기 트리거(trigger) 레지스터인 도어 벨(door bell)일 수 있다. 단계 8에서, 스토리지 장치(104)는 제출 큐(102d)로부터 쓰기 명령을 얻는다. 단계 9에서, 스토리지 장치(104)는 메모리 영역(102c)으로부터 쓰기 데이터를 스토리지 장치(104)의 내부 버퍼로 획득한다. 단계 10에서, 스토리지 장치(104)는 쓰기 명령의 완료를 드라이버(102b)에 전송하고, 이에 응답하여 드라이버(102b)는 다른 쓰기 명령에 관한 데이터가 메모리 영역(102c)에 기록될 수 있도록 메모리 영역(102c)을 해제한다.
도 3은 본 발명의 실시예에 따른 데이터 스토리지 시스템(100)에서 쓰기 명령을 관리하기 위한 방법(300)의 순서도이다. 본 발명의 일 실시예에서, 단계(302)에서 방법(300)은 호스트(102)의 애플리케이션으로부터 쓰기 명령을 수신하는 것을 포함한다. 방법(300)은 드라이버(102)가 애플리케이션으로부터 쓰기 명령을 수신하도록 한다. 쓰기 명령은 쓰기 버퍼(102a)의 스토리지 장치(104)로 쓰여질 데이터의 주소를 포함한다.
단계(304)에서, 방법(300)은 쓰기 버퍼(102a)로부터 쓰기 명령의 데이터를 읽는 것을 포함한다. 방법(300)은 드라이버(102b)가 쓰기 버퍼(102a)로부터 쓰기 명령의 데이터를 읽도록 한다. 쓰기 명령은 쓰기 버퍼(102a) 내의 쓰기 데이터의 주소를 포함한다.
단계(306)에서, 방법(300)은 호스트(102)의 메모리 영역(102c)으로 쓰기 데이터를 전송하는 것을 포함한다. 방법(300)은 드라이버(102a)가 메모리 영역(102c)으로 쓰기 데이터를 전송하게 한다.
본 발명의 일 실시예에서, 메모리 영역(102c)은 호스트(102) 메모리 내에 있을 수 있다.
메모리 영역(102c)은 제출 큐(102d) 내의 쓰기 명령에 대응하는 데이터를 포함한다.
단계(308)에서, 방법은 애플리케이션으로 쓰기 명령의 완료를 전송하는 것을 포함한다. 방법(300)은 드라이버(102b)가 애플리케이션에 쓰기 명령의 완료를 전송하게 한다.
단계(310)에서, 방법(300)은 쓰기 명령을 호스트의 제출 큐(102d)로 전송하는 것을 포함한다. 방법(300)은 드라이버(102b)가 쓰기 명령을 제출 큐(102d)로 전송하게 한다. 제출 큐(102d) 내의 쓰기 명령은 메모리 영역(102c)에 쓰기 데이터의 주소를 포함한다.
단계(312)에서, 방법(300)은 제출 큐(102d)에서 쓰기 명령의 존재를 저장 장치(104)에 알리는 것을 포함한다. 방법(300)은 드라이버(102b)가 PCIe 버스(106b)로 제출 큐(102d) 내에 쓰기 명령의 존재를 알리도록 한다.
단계(314)에서, 방법(300)은 제출 큐(102d)로부터 쓰기 명령을 인출하는 것을 포함한다. 방법(300)은 스토리지 장치(104)가 제출 큐(102d)로부터 쓰기 명령을 인출하도록 한다.
단계(316)에서, 방법(300)은 쓰기 버퍼(102a)의 메모리 영역(102c)으로부터 데이터를 획득하는 것을 포함한다. 방법(300)은 스토리지 장치(104)가 쓰기 버퍼(102a)의 메모리 영역(102c)으로부터 데이터를 얻도록 한다.
단계(318)에서, 방법(300)은 드라이버(102b)로 쓰기 명령의 완료 엔트리(completion entry)를 전송하는 것을 포함한다. 방법(300)은 스토리지 장치(104)가 쓰기 명령의 완료 엔트리를 드라이버로 전송하게 한다.
단계(320)에서, 방법(300)은 메모리 영역(102c)로부터 데이터를 해제(release)하는 것을 포함한다. 방법(300)은, 스토리지 장치(104)가 PCIe 버스(106)를 통해 메모리 영역(102c)으로부터 스토리지 장치(104)의 내부 버퍼로 데이터를 획득하고, 드라이버(102b)가 스토리지 장치(104)로부터 쓰기 명령의 완료를 수신한 다음에, 드라이버(102b)가 메모리 영역(102c)을 해제하도록 한다.
방법(300)에서의 다양한 동작, 행동, 블록, 단계 등은 다른 순서 또는 동시에 제시된 순서로 수행될 수 있다. 또한, 본 발명의 몇몇 실시예에서, 본 발명의 범위를 벗어나지 않으면서, 동작, 행동, 블록, 단계 등의 일부는 생략되거나, 추가되거나, 수정되거나, 스킵될 수 있다.
도 4는 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 낮은 쓰기 레이턴시를 얻는 방법을 구현하는 컴퓨팅 환경의 블록도이다. 도 4에 도시된 것과 같이, 컴퓨팅 환경(400)은 컨트롤 유닛(402), 산술 논리 유닛(Arithmetic Logic Unit, 404), 메모리(408), 스토리지 유닛(410), 복수의 네트워킹 장치(414) 및 복수의 입출력(I/O) 장치(412)를 포함하는 적어도 하나의 프로세싱 유닛(406)를 포함한다. 프로세싱 유닛(406)은 알고리즘의 명령들을 처리하는 역할을 한다. 프로세싱 유닛(406)은 처리를 수행하기 위해 컨트롤 유닛(402)으로부터 명령을 수신한다. 또한, 명령들의 실행과 관련된 임의의 논리 및 산술 연산들은 ALU(404)의 도움으로 계산된다.
전체 컴퓨팅 환경(400)은 다수의 동질(homogeneous) 및/또는 이종(heterogeneous) 코어, 다른 종류의 복수의 CPU, 특수 매체(special media) 및 다른 가속기(accelerator)들로 구성될 수 있다. 프로세싱 유닛(406)은 알고리즘의 명령들을 처리하는 역할을 한다. 또한, 복수의 처리 유닛(406)은 단일 칩 또는 복수의 칩 상에 배치될 수 있다.
구현에 필요한 명령들 및 코드들을 포함하는 알고리즘은 메모리 유닛(408) 또는 저장 장치(410) 또는 둘 모두에 저장된다. 실행 시, 명령들은 대응하는 메모리(408) 또는 스토리지 장치(410)로부터 인출될 수 있고 프로세싱 유닛(406)에 의해 실행될 수 있다.
임의의 하드웨어로 구현되는 경우, 네트워킹 장치(441) 또는 외부의 입출력 장치(412)는 컴퓨팅 환경에 접속되어 네트워킹 유닛 또는 입출력 장치 유닛을 통한 구현을 지원할 수 있다.
본 명세서에 기재된 실시예들은 적어도 하나의 하드웨어 장치 상에서 실행되는 적어도 하나의 소프트웨어 프로그램을 통해 구현될 수 있고, 구성 요소를 제어하기 위해 네트워크 관리 기능을 수행할 수 있다. 도 1 내지 도 4에 도시된 구성 요소들은 하드웨어 장치와 소프트웨어 모듈의 조합 중 적어도 하나일 수 있는 블록을 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 데이터 스토리지 시스템 102: 호스트
102a: 쓰기 버퍼 102b: 드라이버
102c: 메모리 영역 102d: 제출 큐
104: 스토리지 장치 106: PCIe 버스
400: 컴퓨팅 환경 402: 컨트롤 유닛
404: ALU 406: 프로세싱 유닛
408: 메모리 410; 스토리지
412: I/O 장치 414: 네트워킹 장치

Claims (7)

  1. 스토리지 장치; 및
    호스트를 포함하되,
    상기 호스트는 드라이버를 포함하고,
    상기 드라이버는,
    상기 호스트의 쓰기 버퍼로부터 데이터를 읽고, 상기 호스트의 애플리케이션으로부터 수신한 쓰기 명령에 응답하여 데이터를 읽고,
    상기 데이터를 상기 호스트의 메모리 영역으로 전송하고,
    상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고,
    상기 호스트의 제출 큐(submission queue)로 상기 쓰기 명령을 전송하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함하는. 데이터 스토리지 시스템.
  2. 제 1항에 있어서,
    상기 드라이버는, PCI 익스프레스(Peripheral Component Interconnect Express) 버스를 통해 상기 제출 큐 내에 상기 스토리지 장치로의 상기 쓰기 명령의 존재를 지시(indicate)하고,
    상기 스토리지 장치는, 상기 메모리 영역으로부터 상기 데이터를 획득하고,
    상기 드라이버로 상기 쓰기 명령의 완료를 지시하는, 데이터 스토리지 시스템.
  3. 제 1항에 있어서,
    상기 드라이버는 상기 스토리지 장치에 의한 데이터의 획득을 결정하는 것에 응답하여 상기 호스트 내의 메모리 영역을 해제(release)하는 데이터 스토리지 시스템.
  4. 드라이버에 의하여, 호스트 내의 애플리케이션으로부터 수신한 쓰기 명령에 응답하여 상기 호스트 내의 쓰기 버퍼로부터 데이터를 읽고,
    상기 드라이버에 의하여, 상기 데이터를 상기 호스트의 메모리 영역으로 전송하고,
    상기 드라이버에 의하여, 상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고,
    상기 드라이버에 의하여, 상기 호스트의 제출 큐로 상기 쓰기 명령을 전송하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함하는, 데이터 스토리지 시스템의 쓰기 명령 관리 방법.
  5. 제 4항에 있어서,
    PCI 익스프레스 버스를 통해 스토리지 장치로 상기 제출 큐 내에 스토리지 장치로의 상기 쓰기 명령의 존재를 지시하고,
    상기 스토리지 장치가 상기 메모리 영역으로부터 상기 데이터를 획득하는 것을 결정하는 것에 응답하여 상기 호스트의 상기 메모리 영역을 해제하는 것을 더 포함하는, 데이터 스토리지 시스템의 쓰기 명령 관리 방법.
  6. 컴퓨터로 판독 가능한 비일시적 스토리지 매체에 기록된 컴퓨터로 실행 가능한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품으로, 상기 컴퓨터로 실행 가능한 프로그램 코드는,
    호스트 내의 애플리케이션으로부터 수신된 쓰기 명령에 응답하여 상기 호스트 내의 쓰기 버퍼로부터 데이터를 읽고,
    상기 호스트의 메모리 영역으로 상기 데이터를 전송하고,
    상기 애플리케이션으로 상기 쓰기 명령의 완료를 전송하고,
    상기 호스트의 제출 큐로 쓰기 명령을 전송하는 것을 포함하되, 상기 쓰기 명령은 상기 메모리 영역의 상기 데이터의 주소를 포함하는, 컴퓨터 프로그램 제품.
  7. 제 6항에 있어서,
    상기 스토리지 장치가 상기 메모리 영역으로부터 상기 데이터를 획득하는 것을 결정하는 것에 응답하여 상기 호스트의 상기 메모리 영역을 해제하는 것을 더 포함하는, 컴퓨터 프로그램 제품.
KR1020170019763A 2016-07-22 2017-02-14 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법 KR20180010951A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641025124 2016-07-22
IN201641025124 2016-07-22

Publications (1)

Publication Number Publication Date
KR20180010951A true KR20180010951A (ko) 2018-01-31

Family

ID=60988627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170019763A KR20180010951A (ko) 2016-07-22 2017-02-14 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법

Country Status (2)

Country Link
US (1) US10102159B2 (ko)
KR (1) KR20180010951A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
CN108984453B (zh) * 2018-07-12 2021-02-02 山东超越数控电子股份有限公司 一种基于申威平台的pcie总线测速系统及方法
CN109933293B (zh) * 2019-03-25 2022-06-07 深圳忆联信息系统有限公司 基于SpiFlash的数据写入方法、装置和计算机设备
KR20210080761A (ko) 2019-12-23 2021-07-01 삼성전자주식회사 컴플리션 타이밍을 관리하는 스토리지 컨트롤러, 및 이의 동작 방법
EP3842952B1 (en) * 2019-12-23 2023-05-10 Samsung Electronics Co., Ltd. Storage controller managing completion timing, and operating method thereof
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688926B2 (en) * 2010-10-10 2014-04-01 Liqid Inc. Systems and methods for optimizing data storage among a plurality of solid state memory subsystems
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9927983B2 (en) * 2015-09-28 2018-03-27 Sandisk Technologies Llc Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues
US9880783B2 (en) * 2015-10-28 2018-01-30 Sandisk Technologies Llc System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller
US20170262191A1 (en) * 2016-03-08 2017-09-14 Netapp, Inc. Reducing write tail latency in storage systems
US9858003B2 (en) * 2016-05-02 2018-01-02 Toshiba Memory Corporation Storage system that reliably stores lower page data
US20170322897A1 (en) * 2016-05-06 2017-11-09 Sandisk Technologies Inc. Systems and methods for processing a submission queue

Also Published As

Publication number Publication date
US20180024949A1 (en) 2018-01-25
US10102159B2 (en) 2018-10-16

Similar Documents

Publication Publication Date Title
KR20180010951A (ko) 데이터 스토리지 시스템의 낮은 쓰기 레이턴시를 얻는 방법
KR102353782B1 (ko) NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법
US9037753B2 (en) Automatic pinning and unpinning of virtual pages for remote direct memory access
US10019181B2 (en) Method of managing input/output(I/O) queues by non-volatile memory express(NVME) controller
TWI690822B (zh) 安全區之平台遷移
US20070174509A1 (en) System for asynchronous dma command completion notification
EP2435919B1 (en) Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
TW201602785A (zh) 用於虛擬機器的安全分享互連
JP6408514B2 (ja) 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
KR101861471B1 (ko) 플래시 메모리 기반의 저장 디바이스의 입/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) 에서의 커맨드 트랩
CN105453043B (zh) 在不受i/o协议或目标设备支持时提供队列屏障
KR20200017364A (ko) PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정
US20070260754A1 (en) Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
US20130275639A1 (en) Method to emulate message signaled interrupts with multiple interrupt vectors
US20160196083A1 (en) Method and device for monitoring data integrity in shared memory environment
US10114774B2 (en) Data transfer method, parallel processing device, and recording medium
US20140337855A1 (en) Termination of Requests in a Distributed Coprocessor System
US10481811B2 (en) Asynchronous copying of data within memory
JP6227151B2 (ja) アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
US10185684B2 (en) System interconnect and operating method of system interconnect
JP6138482B2 (ja) 組み込みシステム
KR20160100183A (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