KR102238652B1 - 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 - Google Patents
데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 Download PDFInfo
- Publication number
- KR102238652B1 KR102238652B1 KR1020140157400A KR20140157400A KR102238652B1 KR 102238652 B1 KR102238652 B1 KR 102238652B1 KR 1020140157400 A KR1020140157400 A KR 1020140157400A KR 20140157400 A KR20140157400 A KR 20140157400A KR 102238652 B1 KR102238652 B1 KR 102238652B1
- Authority
- KR
- South Korea
- Prior art keywords
- host
- completion
- commands
- write
- buffer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은 명령들 각각에 상응하는 데이터 처리 작동이 완료될 때마다 완료 패킷을 생성하고 생성된 완료 패킷을 버퍼에 저장하는 단계와, 상기 버퍼에 저장된 완료 패킷들을 한 번의 트랜잭션으로 호스트로 전송하는 단계를 포함한다. 상기 명령들에 상응하는 어드레스들은 연속적이고, 상기 데이터 처리 작동은 라이트 작동과 리드 작동 중에서 어느 하나를 포함할 수 있다.
Description
본 발명의 개념에 따른 실시 예는 데이터 처리 장치에 관한 것으로, 특히 복수의 명령들에 상응하는 완료 패킷들(completion packets)을 버퍼에 저장한 후, 한 번의 트랙잭션(single transaction)으로 상기 버퍼에 저장된 상기 완료 패킷들을 연속적으로 호스트로 전송할 수 있는 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법에 관한 것이다.
라이트 작동을 수행하기 위해, 메모리 장치는 호스트로부터 전송된 명령과 페이로드 데이터(payload data)를 수신하고, 상기 명령에 따라 상기 페이로드 데이터를 상기 메모리 장치의 메모리 영역에 라이트한다. 상기 메모리 장치는 상기 메모리 영역에 상기 페이로드 데이터가 라이트 완료되면, 라이트 완료(write completion) 또는 라이트 완료 응답을 즉각적으로 전송한다.
즉, 데이터 저장 장치는 호스트로부터 전송된 라이트 명령 또는 리드 명령에 대한 처리가 완료된 후, 곧바로 상기 라이트 명령 또는 상기 리드 명령의 완료 (completion)를 지시하는 완료 또는 완료 응답(completion response)을 호스트로 전송한다.
상기 데이터 저장 장치가 복수의 페이로드 데이터를 버스트(burst)로 처리할 때에도, 상기 데이터 저장 장치는 상기 복수의 페이로드 데이터 각각에 대한 처리가 완료될 때마다 곧바로 상기 처리의 완료를 지시하는 완료 또는 완료 응답을 호스트로 전송한다. 따라서, 복수의 페이로드 데이터를 포함하는 버스트는, 상기 호스트로 전송되는 상기 완료에 의해, 끊기게(즉, 연속적이지 않게) 되므로, 호스트의 성능이 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는, 성능 향상을 위해 복수의 명령들 각각이 완료될 때마다 완료(또는 완료 신호)를 호스트로 곧바로 전송하지 않고, 상기 복수의 명령들에 상응하는 완료들을 큐(queue) 형태로 버퍼에 저장한 후, 한 번의 트랙잭션(single transaction)으로 상기 버퍼에 저장된 상기 완료들을 연속적으로 상기 호스트로 전송할 수 있는 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은 호스트로부터 출력된 명령들 각각에 상응하는 데이터 처리 작동이 완료될 때마다 완료 패킷을 생성하고 생성된 완료 패킷을 버퍼에 저장하는 단계와, 상기 버퍼에 저장된 완료 패킷들을 한 번의 트랜잭션으로 상기 호스트로 전송하는 단계를 포함한다.
상기 명령들에 상응하는 어드레스들은 연속적일 수 있다. 상기 데이터 처리 작동은 라이트 작동과 리드 작동 중에서 어느 하나를 포함할 수 있다.
실시 예에 따라, 상기 명령들 각각에 상응하는 상기 데이터 처리 작동이 라이트(write) 작동일 때, 상기 저장하는 단계는 상기 호스트의 큐(queue)에 저장된 상기 명령들의 개수를 나타내는 데이터를 상기 호스트로부터 수신하는 단계와, 상기 데이터에 기초하여 상기 명령들을 상기 큐로부터 페치(fetch)하는 단계와, 페치된 명령들 각각에 상응하는 라이트 데이터를 상기 호스트의 메모리로부터 페치하는 단계와, 패치된 각각의 라이트 데이터를 불휘발성 메모리에 저장하는 단계와, 상기 페치된 명령들 각각에 상응하는 상기 라이트 작동이 완료될 때마다 상기 완료 패킷을 생성하고, 상기 생성된 완료 패킷을 상기 버퍼에 저장하는 단계를 포함한다.
본 발명의 다른 실시 예에 따라, 상기 명령들 각각에 상응하는 상기 데이터 처리 작동이 리드(read) 작동일 때, 상기 저장하는 단계는 상기 호스트의 큐(queue)에 저장된 상기 명령들의 개수를 나타내는 데이터를 상기 호스트로부터 수신하는 단계와, 상기 데이터에 기초하여 상기 명령들을 상기 큐로부터 페치(fetch)하는 단계와, 페치된 명령들 각각에 상응하는 리드 데이터를 불휘발성 메모리로부터 페치하는 단계와, 페치된 각각의 리드 데이터를 상기 호스트로 전송하는 단계와, 상기 페치된 명령들 각각에 상응하는 상기 리드 작동이 완료될 때마다 상기 완료 패킷을 생성하고, 상기 생성된 완료 패킷을 상기 버퍼에 저장하는 단계를 포함한다.
상기 버퍼에 저장된 상기 완료 패킷들은, 상기 데이터 저장 장치에 포함된 NVMe(Non-Volatile Memory (NVM) Express) 컨트롤러의 제어에 따라, 버스트(burst)로 연속적으로 상기 호스트로 전송된다.
실시 예에 따라, 상기 호스트로 전송하는 단계는, 조건 정보에 상응하는 조건이 만족될 때, 상기 버퍼로부터 상기 완료 패킷들을 페치하고, 페치된 완료 패킷들을 상기 한 번의 트랜잭션으로 상기 호스트로 전송한다.
다른 실시 예에 따라, 상기 호스트로 전송하는 단계는 상기 버퍼에 저장되는 상기 완료 패킷들의 개수를 카운트하고, 카운트 값을 생성하는 단계와, 상기 카운트 값이 기준 카운트 값과 동일 할 때, 상기 버퍼로부터 상기 기준 카운트 값에 상응하는 상기 완료 패킷들을 페치하고, 페치된 완료 패킷들을 상기 한 번의 트랜잭션으로 상기 호스트로 전송하는 단계를 포함한다.
또 다른 실시 예에 따라, 상기 호스트로 전송하는 단계는 클락 신호에 응답하여 시간을 카운트하고, 카운트 값을 생성하는 단계와, 상기 카운트 값이 기준 카운트 값과 동일 할 때, 상기 버퍼에 저장된 상기 완료 패킷들을 페치하고, 페치된 완료 패킷들을 상기 한 번의 트랜잭션으로 상기 호스트로 전송하는 단계를 포함한다.
상기 저장하는 단계와 상기 전송하는 단계는 상기 데이터 저장 장치에 포함된 NVMe(Non-Volatile Memory (NVM) Express) 컨트롤러의 제어에 따라 수행되고, 상기 완료 패킷들은 큐 형태로 상기 버퍼에 저장되고, 상기 데이터 저장 장치는 솔리드-스테이트 드라이브(solid-state drive(SSD))일 수 있다.
상기 호스트로 전송하는 단계는 상기 버퍼에 저장된 제1완료 패킷들 중에서 상기 호스트에 포함된 큐들 중에서 어느 하나의 큐에 저장될 제2완료 패킷들을 추출하는 단계와, 추출된 제2완료 패킷들을 상기 완료 패킷들로서 상기 한 번의 트랜잭션으로 상기 호스트로 전송하는 단계를 포함한다.
본 발명의 실시 예에 따른 호스트와 데이터 저장 장치를 포함하는 데이터 처리 시스템의 작동 방법은 상기 데이터 저장 장치가, 상기 호스트로부터 페치된 명령들 각각에 상응하는 데이터 처리 작동이 완료될 때마다 완료 패킷을 생성하고 생성된 완료 패킷을 버퍼에 저장하는 단계와, 상기 데이터 저장 장치가, 상기 버퍼에 저장된 완료 패킷들을 한 번의 트랜잭션으로 상기 호스트로 전송하는 단계를 포함한다.
실시 예에 따라, 상기 명령들 각각에 상응하는 상기 데이터 처리 작동이 라이트(write) 작동일 때, 상기 저장하는 단계는 상기 호스트의 큐(queue)에 저장된 상기 명령들의 개수를 나타내는 데이터를 상기 호스트로부터 수신하는 단계와, 상기 데이터에 기초하여 상기 명령들을 상기 큐로부터 페치(fetch)하는 단계와, 페치된 명령들 각각에 상응하는 라이트 데이터를 상기 호스트의 메모리로부터 페치하는 단계와, 패치된 각각의 라이트 데이터를 불휘발성 메모리에 저장하는 단계와, 상기 페치된 명령들 각각에 상응하는 상기 라이트 작동이 완료될 때마다 상기 완료 패킷을 생성하고, 상기 생성된 완료 패킷을 상기 버퍼에 저장하는 단계를 포함한다.
다른 실시 예에 따라, 상기 명령들 각각에 상응하는 상기 데이터 처리 작동이 리드(read) 작동일 때, 상기 저장하는 단계는 상기 호스트의 큐(queue)에 저장된 상기 명령들의 개수를 나타내는 데이터를 상기 호스트로부터 수신하는 단계와, 상기 데이터에 기초하여 상기 명령들을 상기 큐로부터 페치(fetch)하는 단계와, 페치된 명령들 각각에 상응하는 리드 데이터를 불휘발성 메모리로부터 페치하는 단계와, 페치된 각각의 리드 데이터를 상기 호스트로 전송하는 단계와, 상기 페치된 명령들 각각에 상응하는 상기 리드 작동이 완료될 때마다 상기 완료 패킷을 생성하고, 상기 생성된 완료 패킷을 상기 버퍼에 저장하는 단계를 포함한다.
상기 버퍼에 저장된 상기 완료 패킷들은, 상기 데이터 저장 장치에 포함된 NVMe(Non-Volatile Memory (NVM) Express) 컨트롤러의 제어에 따라, 버스트(burst)로 연속적으로 상기 호스트로 전송된다.
상기 호스트로 전송하는 단계는 조건 정보에 기초하여 상기 버퍼로부터 상기 완료 패킷들을 페치하고, 페치된 완료 패킷들을 상기 한 번의 트랜잭션으로 상기 호스트로 전송한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 버퍼와, 불휘발성 메모리와, 상기 불휘발성 메모리의 작동을 제어하는 메모리 컨트롤러와, 호스트로부터 페치된 명령들 각각에 상응하는 데이터 처리 작동이 완료될 때마다 완료 패킷을 생성하고, 생성된 완료 패킷을 상기 버퍼에 저장하고, 상기 버퍼에 저장된 완료 패킷들을 한 번의 트랜잭션으로 상기 호스트로 전송하는 NVMe(Non-Volatile Memory(NVM) Express) 컨트롤러를 포함한다.
상기 명령들에 상응하는 어드레스들은 연속적이고, 상기 데이터 처리 작동은 라이트 작동과 리드 작동 중에서 어느 하나이고, 상기 NVMe 컨트롤러는 상기 데이터 처리 작동이 완료될 때마다 생성된 상기 완료 패킷을 상기 호스트로 곧바로 전송하지 않는다.
상기 NVMe 컨트롤러는 조건 정보를 저장하는 레지스터와, 상기 레지스터에 저장된 상기 조건 정보를 수신하고 상기 조건 정보에 상응하는 조건이 만족될 때 지시 신호를 출력하는 조건 판단 회로와, 상기 지시 신호에 응답하여 상기 버퍼로부터 상기 완료 패킷들을 페치하고, 페치된 완료 패킷들을 상기 한 번의 트랜잭션으로 상기 호스트로 전송하는 완료 DMA 컨트롤러를 포함한다.
상기 명령들에 상응하는 어드레스들은 연속적일 수 있다.
상기 명령들 각각에 상응하는 상기 데이터 처리 작동이 라이트(write) 작동일 때, 상기 NVMe 컨트롤러는 상기 호스트의 큐(queue)에 저장된 상기 명령들의 개수를 나타내는 데이터를 상기 호스트로부터 수신하고, 상기 데이터에 기초하여 상기 명령들을 상기 큐로부터 페치하고, 페치된 명령들 각각에 상응하는 라이트 데이터를 상기 호스트의 메모리로부터 페치하고, 상기 메모리 컨트롤러는 상기 NVMe 컨트롤러에 의해 패치된 각각의 라이트 데이터를 상기 불휘발성 메모리에 저장하고, 상기 NVMe 컨트롤러는 상기 페치된 명령들 각각에 상응하는 상기 라이트 작동이 완료될 때마다 상기 완료 패킷을 생성하고, 상기 생성된 완료 패킷을 상기 버퍼에 저장한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 성능 향상을 위해 복수의 명령들 각각이 완료될 때마다 완료(또는 완료 신호)를 호스트로 곧바로 전송하지 않고, 상기 복수의 명령들에 상응하는 완료들을 큐(queue) 형태로 버퍼에 저장한 후, 한 번의 트랙잭션(single transaction)으로 상기 버퍼에 저장된 상기 완료들을 연속적으로 상기 호스트로 전송할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 NVMe 컨트롤러의 개략적인 블록도를 나타낸다.
도 3은 도 1에 도시된 데이터 처리 시스템에서 수행되는 라이트 작동들을 설명하기 위한 데이터 흐름을 나타낸다.
도 4는 도 1에 도시된 데이터 처리 시스템에 구현된 AXI 버스를 이용한 라이트 트랜잭션 타이밍 플로우를 나타낸다.
도 5는 도 1에 도시된 데이터 처리 시스템에서 수행되는 리드 작동들을 설명하기 위한 데이터 흐름을 나타낸다.
도 6은 도 1에 도시된 데이터 처리 시스템에 구현된 AXI 버스를 이용한 리드 트랜잭션 타이밍 플로우를 나타낸다.
도 7은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 8은 도 1에 도시된 데이터 처리 시스템에서 수행되는 라이트 작동들을 설명하기 위한 플로우 차트이다.
도 9는 도 1에 도시된 데이터 처리 시스템에서 수행되는 리드 작동들을 설명하기 위한 플로우 차트이다.
도 10은 시간 조건 또는 카운트 조건에 따라 도 1에 도시된 데이터 처리 시스템의 설명하기 위한 플로우 차트이다.
도 11은 도 1에 도시된 데이터 처리 시스템에서 수행되는 작동을 설명하기 위한 개략적인 블록도를 나타낸다.
도 12는 도 1에 도시된 데이터 처리 시스템을 포함하는 검색 시스템의 블락도를 나타낸다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 NVMe 컨트롤러의 개략적인 블록도를 나타낸다.
도 3은 도 1에 도시된 데이터 처리 시스템에서 수행되는 라이트 작동들을 설명하기 위한 데이터 흐름을 나타낸다.
도 4는 도 1에 도시된 데이터 처리 시스템에 구현된 AXI 버스를 이용한 라이트 트랜잭션 타이밍 플로우를 나타낸다.
도 5는 도 1에 도시된 데이터 처리 시스템에서 수행되는 리드 작동들을 설명하기 위한 데이터 흐름을 나타낸다.
도 6은 도 1에 도시된 데이터 처리 시스템에 구현된 AXI 버스를 이용한 리드 트랜잭션 타이밍 플로우를 나타낸다.
도 7은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 8은 도 1에 도시된 데이터 처리 시스템에서 수행되는 라이트 작동들을 설명하기 위한 플로우 차트이다.
도 9는 도 1에 도시된 데이터 처리 시스템에서 수행되는 리드 작동들을 설명하기 위한 플로우 차트이다.
도 10은 시간 조건 또는 카운트 조건에 따라 도 1에 도시된 데이터 처리 시스템의 설명하기 위한 플로우 차트이다.
도 11은 도 1에 도시된 데이터 처리 시스템에서 수행되는 작동을 설명하기 위한 개략적인 블록도를 나타낸다.
도 12는 도 1에 도시된 데이터 처리 시스템을 포함하는 검색 시스템의 블락도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
NVMe(NVM Express, NVMe, or Non-Volatile Memory Host Controller Interface Specification(NVMHCI))는 PCI 익스프레스(Peripheral Component Interconnect Express(PCIe)) 버스를 통해 부착된 솔리드-스테이트 드라이브들 (solid-state drives or solid state disks(SSDs))을 접근(accessing)하기 위한 설명서(specification)이다. NVM은 솔리드-스테이트 드라이브들에서 사용되는 불휘발성 메모리(non-volatile memory)에 대한 두문자어(acronym)이다.
본 명세서는 http://www.nvmexpress.org에서 2014.07.02.자로 공개된 NVM Express Revision 1.1b를 참조로서 포함한다. 예컨대, NVMe 장치는 멀티플 아웃스텐딩 명령들(multiple outstanding commands)을 지원하기 때문에 복수의 명령들을 한번에 이슈잉(issuing)할 수 있다. 즉, 멀티플 아웃스텐딩 명령들을 지원하는 NVMe 장치는 복수의 명령들을 이슈잉할 때 현재 명령에 대한 완료(completion)를 기다리지 않고 다음 명령을 이슈잉할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(100)은 인터페이스(110)를 통해 접속된 호스트(200)와 데이터 저장 장치(300)를 포함할 수 있다.
데이터 처리 시스템(100)은 서버 컴퓨터, PC(personal computer), 데스크 탑 컴퓨터, 랩-탑(lap-top) 컴퓨터, 워크스테이션(workstation) 컴퓨터, NAS(network-attached storage(NAS)), 데이터 센터(data center), 인터넷 데이터 센터(internet data center(IDC)) 또는 모바일 컴퓨팅 장치로 구현될 수 있다. 예컨대, 상기 모바일 컴퓨팅 장치는 스마트폰, 태블릿(tablet) PC, 또는 모바일 인터넷 장치(mobile internet device(MID))로 구현될 수 있다.
호스트(200)는 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있다.
호스트(200)는 CPU(220), 버퍼(230), 메모리 컨트롤러(240), 메모리(250), 및 제1인터페이스(260)를 포함할 수 있다. 도 1에 도시된 호스트(200)의 블록도는 설명의 편의를 위해 예시적으로 도시된 것으로서, 본 발명의 기술적 사상이 도 1에 도시된 블록도에 한정되는 것은 아니다.
호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 또는 시스템 온 칩(system on chip(SoC))으로 구현될 수 있다. 실시 예에 따라, 호스트(200)는 애플리케이션 프로세서(application processor) 또는 모바일(mobile) 애플리케이션 프로세서로 구현될 수 있다.
CPU(220)는 버스 구조(bus architecture; 210)를 통해 버퍼(230), 메모리 컨트롤러(240), 및 제1인터페이스(260)와 명령 및/또는 데이터를 주거나 받을 수 있다. 예컨대, 버스 구조(210)는 AMBA(Advanced Microcontroller Bus Architecture), AHB(Advanced High-performance Bus), APB(Advanced Peripheral Bus), AXI (Advanced eXtensible Interface) 또는 ASB(Advanced System Bus)로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 본 명세서에서 설명될 명령(command), 예컨대 라이트 명령 또는 리드 명령을 생성할 수 있다. CPU(220)는 본 발명의 실시 예에 따른 작동들을 수행할 수 있는 프로그램(들)을 실행할 수 있는 프로세서를 의미할 수 있다.
버퍼(230)는 제1큐(queue; 231)와 제2큐(233)를 저장할 수 있다. 실시 예에 따라, 버퍼(230)는 레지스터 또는 SRAM(static random access memory)으로 구현될 수 있다.
실시 예들에 따라, 제1큐(231)는 서브미션 큐(submission queue)를 의미할 수 있고, 제2큐(233)는 완료 큐(completion queue)를 의미할 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 제1큐(231)는 명령들(예컨대, 라이트 명령들 또는 리드 명령들)을 저장할 수 있다.
메모리 컨트롤러(240)는, CPU(220)의 제어에 따라, 메모리(250)에 데이터를 라이트하거나 메모리(250)에 저장된 데이터를 리드할 수 있다. 실시 예에 따라, 메모리 컨트롤러(240)는 DMA(direct memory access) 컨트롤러의 기능을 포함할 수 있다.
메모리(250)는 휘발성 메모리 및/또는 불휘발성 메모리로 구현될 수 있다. 상기 휘발성 메모리는 RAM(random access memory), SRAM, 또는 DRAM(dynamic RAM)으로 구현될 수 있다. 상기 불휘발성 메모리는 하드 디스크 드라이브(hard disk drive(HDD), NAND 플래시 메모리, NOR 플래시 메모리, PRAM(phase change RAM), MRAM(magnetoresistive RAM), STT-MRAM(spin-transfer torque magnetic random-access memory), FRAM(ferroelectric RAM) 또는 RRAM(resistive RAM)으로 구현될 수 있다.
도 1에는 하나의 메모리 컨트롤러(240)와 하나의 메모리(250)가 도시되어 있으나, 메모리 컨트롤러(240)는 복수의 메모리 컨트롤러들을 포함하는 집합적 의미로 사용될 수 있고, 메모리(250)는 복수의 메모리들을 포함하는 집합적 의미로 사용될 수 있다. 이때, 상기 복수의 메모리들은 서로 다른 종류의 메모리들을 의미할 수도 있다. 예컨대, 상기 복수의 메모리들이 DRAM과 NAND 플래시 메모리를 포함할 때, 상기 복수의 메모리 컨트롤러는 DRAM 컨트롤러와 NAND 플래시 메모리를 포함할 수 있다.
도 1에서는 설명의 편의를 위해, 버퍼(230)가 큐들(231과 233)을 저장하는 버퍼 영역들을 포함하는 것으로 도시되어 있으나, 실시 예에 따라 큐들(231과 233)은 메모리(250)에 저장될 수도 있다.
제1인터페이스(260)는 인터페이스(110)를 통해 데이터 저장 장치(300)의 제2인터페이스(312)에 접속될 수 있다.
실시 예에 따라, 각 인터페이스(110, 260, 및 312)는 PCIe(peripheral component interconnect express) 프로토콜을 지원할 수 있는 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
다른 실시 예에 따라, 인터페이스(110)는 SATA(Serial ATA) 인터페이스이고, 각 인터페이스(260과 312)는 PCIe 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 이때, 각 인터페이스(260과 312)는 SATA 인터페이스와 PCIe 인터페이스 사이에서 프로토콜 변환을 수행할 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 메모리(340), 및 불휘발성 메모리 (350)를 포함할 수 있다.
데이터 저장 장치(300)는 플래시-기반 메모리 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(300)는 SSD(solid-state drive), 임베디드 SSD(embedded SSD (eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 또는 임베디드 MMC(embedded MMC(eMMC))로 구현될 수 있다.
다른 실시 예에 따라, 데이터 저장 장치(300)는 하드 디스크 드라이브(HDD)로 구현될 수도 있다. 데이터 저장 장치(300)는 호스트(200)에 접속되거나 분리될 수 있다. 실시 예에 따라, 데이터 저장 장치(300)는 메모리 모듈의 형태로 구현될 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치(300)는 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)이 완료될 때마다 완료 패킷을 생성하고, 생성된 완료 패킷을 버퍼에 저장할 수 있다.
즉, 데이터 저장 장치(300)는, 종래의 데이터 저장 장치와 달리, 상기 데이터 처리 작동이 완료될 때마다 생성된 완료 패킷을 곧바로 호스트(200)로 전송하지 않고 생성된 완료 패킷을 상기 버퍼에 저장할 수 있다. 여기서, 완료 패킷은 완료 (completion), 완료 응답(completion response), 또는 완료 엔트리(completion entry)를 의미할 수 있다.
데이터 저장 장치(300)는 상기 버퍼에 저장된 완료 패킷들을 한 번의 트랜잭션 (또는 한 번의 데이터 처리)으로 호스트(200)로 전송할 수 있다.
컨트롤러(310)는 호스트(200), 메모리(340), 및 불휘발성 메모리(350) 사이에서 주고받는 명령 및/또는 데이터의 전송을 제어할 수 있다.
컨트롤러(310)는 제2인터페이스(312), CPU(313), 메모리 컨트롤러(314), NVMe 컨트롤러(315), 및 RAM(316)을 포함할 수 있으나 이에 한정되는 것은 아니다.
제2인터페이스(312)는 인터페이스(110)를 통해 호스트(200)의 제1인터페이스 (260)와 명령 및/또는 데이터를 주거나 받을 수 있다.
CPU(313)는 버스 구조(311)를 통해 제2인터페이스(312), 메모리 컨트롤러 (314), NVMe 컨트롤러(315), 및 RAM(316)의 작동들을 제어할 수 있다. 도 1에는 하나의 CPU(313)가 도시되어 있으나, CPU(313)는 호스트(200)와의 상호 작동을 제어하는 제1CPU와, 불휘발성 메모리(350)와의 상호 작동을 제어하는 제2CPU를 포함하는 CPU 세트를 의미할 수도 있다. 이때, 제1CPU는 제2인터페이스(312)의 작동을 제어할 수 있고, 제2CPU는 메모리 컨트롤러(314) 및/또는 NVMe 컨트롤러(315)의 작동을 제어할 수 있다.
예컨대, 제2인터페이스(312), CPU(313), 메모리 컨트롤러(314), NVMe 컨트롤러(315), 및 RAM(316)은 버스 구조(311)를 통해 명령 및/또는 데이터를 주거나 받을 수 있다. 예컨대, 버스 구조(311)는 상술한 바와 같이 AMBA, AHB, APB, AXI, 또는 ASB일 수 있으나 이에 한정되는 것은 아니다.
메모리 컨트롤러(314)는, CPU(313)의 제어에 따라, 메모리(340)에 데이터를 라이트하거나 메모리(340)로부터 데이터를 리드할 수 있다. 또한, 메모리 컨트롤러 (314)는, CPU(313)의 제어에 따라, 불휘발성 메모리(350)에 데이터를 라이트하거나 불휘발성 메모리(350)로부터 데이터를 리드할 수 있다. 예컨대, 불휘발성 메모리 (350)가 플래시 메모리로 구현될 때, 메모리 컨트롤러(314)는 플래시 메모리 컨트롤러의 기능을 수행할 수 있다. 상기 플래시 메모리는 NAND 플래시 메모리 또는 NOR 플래시 메모리일 수 있다.
실시 예에 따라, NVMe 컨트롤러(315)는, CPU(313)의 제어에 따라, 메모리 (340)에 데이터를 라이트하거나 메모리(340)로부터 데이터를 리드할 수 있다. 또한, NVMe 컨트롤러(315)는 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)이 완료될 때마다 완료 패킷을 생성하고 생성된 완료 패킷을 RAM(316) 또는 메모리(340)에 저장할 수 있다.
RAM(316)은 큐(queue)를 저장하는 버퍼의 기능을 수행할 수 있다. 예컨대, RAM(316)은 SRAM으로 구현될 수 있다. 상기 큐는 복수의 완료 패킷들을 포함할 수 있다.
메모리(340)는 DRAM과 같은 휘발성 메모리로 구현될 수 있다. 도 1에서는 RAM(316)과 메모리(340)가 서로 분리된 실시 예가 도시되어 있으나, 실시 예에 따라 RAM(316)과 메모리(340)는 하나의 메모리를 의미할 수도 있고, RAM(316)은 메모리(340)의 일부를 의미할 수도 있다.
불휘발성 메모리(350)는 플래시 메모리(예컨대, NAND 플래시 메모리 또는 NOR 플래시 메모리)로 구현될 수 있으나 이에 한정되는 것은 아니다. 불휘발성 메모리(350)는 복수의 플래시 메모리 칩들을 포함할 수 있다.
도 2는 도 1에 도시된 NVMe 컨트롤러의 개략적인 블록도를 나타낸다.
도 1과 도 2를 참조하면, NVMe 컨트롤러(315)는 큐 매니저(317), 환경설정 레지스터(configuration register; 325), 및 조건 판단 회로(327)를 포함할 수 있다. 예컨대, 조건 판단 회로(327)는 시간 체킹 회로(329)와 카운트 체킹 회로(331)를 포함할 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, NVMe 컨트롤러(315)는 라이트 작동을 제어하는 리드 제어 회로(333)와, 리드 작동을 제어하는 라이트 제어 회로(335)를 더 포함할 수 있다.
여기서, 라이트 작동은 데이터 저장 장치(300)가, 호스트(200)로부터 출력된 라이트 명령에 응답하여, 상기 라이트 명령에 따라 정의된 크기만큼의 페이로드 데이터를 호스트(200)의 메모리(250)로부터 리드하고, 리드된 페이로드 데이터를 저장 매체, 예컨대 불휘발성 메모리(350)에 라이트하는 작동을 의미할 수 있다.
여기서, 리드 작동은 데이터 저장 장치(300)가, 호스트(200)로부터 출력된 리드 명령에 응답하여, 상기 리드 명령에 따라 정의된 크기만큼의 페이로드 데이터를 저장 매체, 예컨대 불휘발성 메모리(350)로부터 리드하고, 리드된 페이로드 데이터를 호스트(200)의 메모리(250)에 라이트하는 작동을 의미할 수 있다.
도 2에서는 설명의 편의를 위해 NVMe 컨트롤러(315)와 RAM(316)을 함께 도시한다. 이때, RAM(316)은 완료 패킷들을 저장하는 버퍼 또는 완료 큐로서의 기능을 수행할 수 있다.
실시 예들에 따라 큐 매니저(317)는 하드웨어로 구현되거나, 상기 하드웨어를 구동할 수 있는 펌웨어(또는 소프트웨어)로 구현될 수 있다.
큐 매니저(317)는 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)이 완료될 때마다 완료 패킷을 생성하고, 생성된 완료 패킷을 RAM(316, 이하, '버퍼'라고 한다)에 저장할 수 있다. 예컨대, 완료 패킷은 완료 패킷 생성 엔진(321)에 의해 생성될 수 있다.
큐 매니저(317)는, 조건 판단 회로(327)로부터 출력된 적어도 하나의 지시 신호(ARM1 및/또는 ARM2)에 응답하여, 버퍼(316)에 저장된 완료 패킷(CP1~CPm, m은 1 또는 2 이상의 자연수) 중에서 적어도 하나의 완료 패킷을 페치(fetch)하고, 페치된 적어도 하나의 완료 패킷을 구성 요소들(311, 312, 및 110)을 통해 호스트(200)로 전송할 수 있다.
조건 판단 회로(327)는 환경설정 레지스터(325)에 저장된 조건 정보를 수신하고, 상기 조건 정보에 상응하는 조건이 만족될 때 적어도 하나의 지시 신호(ARM1 및/또는 ARM2)를 생성할 수 있다. NVMe 컨트롤러(315), 예컨대, 완료 DMA 컨트롤러 (323)는 적어도 하나의 지시 신호(ARM1 및/또는 ARM2)에 응답하여 버퍼(316)로부터 완료 패킷들(CP1~CPm)을 페치하고, 페치된 완료 패킷들(CP1~CPm)을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다.
조건 판단 회로(327)가 시간 체킹 회로(329) 및/또는 카운트 체킹 회로(331)를 포함할 때, 큐 매니저(317)는, 시간 체킹 회로(329)로부터 출력된 제1지시 신호 (ARM1) 및/또는 카운트 체킹 회로(331)로부터 출력된 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 완료 패킷(CP1~CPm, m은 1 또는 2 이상의 자연수) 중에서 적어도 하나의 완료 패킷을 페치하고, 페치된 적어도 하나의 완료 패킷을 구성 요소들(311, 312, 및 110)을 통해 호스트(200)로 전송할 수 있다.
상기 적어도 하나의 완료 패킷에 대한 페치 작동(fetch operation)은 완료 DMA 컨트롤러(323)에 의해 수행될 수 있다.
실시 예에 따라, 명령 매니저(319)는 호스트(200)의 버퍼(230)의 제1큐(231)에 저장된 명령들의 개수를 나타내는 지시 데이터(또는 정보; NCI)를 호스트(200)로부터 수신하고, 수신된 지시 데이터(NCI)에 기초하여 상기 개수에 상응하는 명령들을 호스트(200)로부터 페치하고, 페치된 명령들을 CPU(313)로 전송하는 기능을 수행할 수 있다.
CPU(313)에 의해 실행되는 펌웨어는, 환경설정 레지스터(325)에 저장된 인에이블 정보(EN)를 이용하여, NVMe 컨트롤러(315)의 작동들을 제어할 수 있다. 따라서, 상기 펌웨어에 의해 제어되는 NVMe 컨트롤러(315)는 버퍼(316)에 저장된 복수의 완료 패킷들(CP1~CPm)을 한 번의 트랜잭션으로 호스트(200)로 전송하는 기능을 수행할 수 있다. 예컨대, 인에이블 정보(EN)는 하나 또는 그 이상의 비트들을 포함할 수 있다.
실시 예에 따라, 버퍼(316)에 저장된 복수의 완료 패킷들(CP1~CPm)이 한 번의 트랜잭션으로 호스트(200)로 전송되면, 복수의 완료 패킷들(CP1~CPm)은 제2큐 (233)에 저장될 수 있다.
복수의 완료 패킷들(CP1~CPm)이 한 번의 트랜잭션으로 호스트(200)로 전송된 후, 데이터 저장 장치(300)는 상기 전송의 완료를 지시하는 인터럽트(interrupt)를 호스트(200)로 전송할 수 있다. 호스트(200)는, 상기 인터럽트에 응답하여, 제2큐 (233)에 저장된 복수의 완료 패킷들(CP1~CPm)을 리드하고, 명령들(예컨대, 라이트 명령들 또는 리드 명령들)에 대한 처리를 완료할 수 있다.
환경설정 레지스터(325)는 SFR(Special Function Register)로 구현될 수 있다. 환경설정 레지스터(325)는 인에이블 정보(EN)를 저장하는 영역과 조건 정보를 저장하는 영역을 포함할 수 있다. 상기 조건 정보를 저장하는 영역은 기준 시간 카운트 값(Tref)을 저장하는 영역, 및 기준 카운트 값(Cref)을 저장하는 영역을 포함할 수 있다.
실시 예들에 따라, 인에이블 정보(EN)와 조건 정보(예컨대, 기준 시간 카운트 값(Tref)과 기준 카운트 값(Cref))은 호스트(200)의 CPU(220)에 의해 설정될 수 있다.
본 명세서에서 조건 정보는 기준 시간 카운트 값(Tref)과 기준 카운트 값 (Cref)을 포함하나 복수의 완료 패킷들(CP1~CPm)의 리드에 관련된 조건 정보가 이에 한정되는 것은 아니다.
시간 체킹 회로(329)는 클락 신호(CLK)와 제3지시 신호(IS1)를 이용하여 작동 시간을 카운트하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 비교의 결과에 따라 제1지시 신호(ARM1)를 생성할 수 있다.
카운트 체킹 회로(331)는, 클락 신호(CLK)에 응답하여, 버퍼(316)에 저장되는 완료 패킷의 개수를 카운트하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교하고, 비교의 결과에 따라 제2지시 신호(ARM2)를 생성할 수 있다. 실시 예에 따라, 기준 카운트 값(Cref)은 완료 DMA(direct memory access) 컨트롤러(323)로 제공될 수 있다.
실시 예에 따라, 시간 체킹 회로(329) 및/또는 카운트 체킹 회로(331)는 완료 패킷 생성 엔진(321)의 작동(예컨대, 완료 패킷 생성 작동)을 명령 세트마다 모니터하여 작동 시간 및/또는 완료 패킷의 생성 개수를 카운트할 수 있다. 여기서, 명령 세트는 하나 또는 그 이상의 명령들을 포함할 수 있다.
다른 실시 예에 따라, 완료 패킷 생성 엔진(321)은 명령 세트마다 완료 패킷이 처음으로 생성됨을 지시하는 제3지시 신호(IS1)를 시간 체킹 회로(329)로 전송할 수 있다. 이때, 시간 체킹 회로(329)는 제3지시 신호(IS1)와 클락 신호(CLK)를 이용하여 상기 명령 세트별로 작동 시간을 카운트하고, 카운트 값을 생성할 수 있다.
카운트 체킹 회로(331)는 명령 세트마다 완료 패킷이 생성됨을 지시하는 제4지시 신호(IS2)를 클락 신호(CLK)를 이용하여 카운트하고, 카운트 값을 생성할 수 있다.
큐 매니저(317)에 의해 페치된 완료 패킷들이 한번에 호스트(200)로 전송이 완료되면, 시간 체킹 회로(329) 및/또는 카운트 체킹 회로(331)는 초기화될 수 있다. 따라서, 시간 체킹 회로(329)는 다음 명령 세트에 대한 작동 시간을 새롭게 카운트할 수 있고, 카운트 체킹 회로(331)는 상기 다음 명령 세트에 의해 생성된 완료 패킷의 개수를 새롭게 카운트할 수 있다.
리드 제어 회로(333)는 메모리(340)로부터 출력된 리드 데이터를 제2인터페이스(312)로 전송할 수 있다. 실시 예에 따라, 상기 리드 데이터는 메모리 컨트롤러(314)의 제어에 따라 불휘발성 메모리(350)로부터 리드된 데이터일 수 있다. 다른 실시 예에 따라, 리드 제어 회로(333)는 메모리 컨트롤러(314)와 연동하여 리드 작동을 수행할 수 있다.
라이트 제어 회로(335)는 제2인터페이스(312)로부터 전송된 라이트 데이터를 메모리(340)에 저장할 수 있다. 실시 예에 따라, 메모리(340)에 저장된 상기 라이트 데이터는 메모리 컨트롤러(314)의 제어에 따라 불휘발성 메모리(350)에 라이트될 수 있다. 다른 실시 예에 따라, 라이트 제어 회로(335)는 메모리 컨트롤러(314)와 연동하여 라이트 작동을 수행할 수 있다.
도 2의 데이터 인터페이스(DI)는 버스 구조(311)를 의미할 수도 있고 메모리(340)에 데이터를 라이트하거나 메모리(340)로부터 데이터를 리드할 수 있는 인터페이스를 의미할 수 있다.
도 3은 도 1에 도시된 데이터 처리 시스템에서 수행되는 라이트 작동들을 설명하기 위한 데이터 흐름을 나타낸다.
데이터 처리 시스템(100)에서 수행되는 라이트 작동들은 도 1부터 도 3을 참조하여 상세히 설명된다.
m개의 라이트 명령들(WCMD1~WCMDm; m은 2 이상의 자연수)이 하나의 명령 세트를 구성하고, 기준 카운트 값(Cref)은 m이라고 가정한다. 또한, m개의 라이트 명령들(WCMD1~WCMDm)을 처리하는 시간 또는 m개의 라이트 완료 패킷들(WCP1~WCPm)이 버퍼(316)에 저장되는 시간은 기준 시간 카운트 값(Tref)보다 작다고 가정한다. 따라서, 시간 체킹 회로(329)는 제1레벨을 갖는 제1지시 신호(ARM1)를 출력할 수 있다.
호스트(200)의 CPU(220)는 복수의 라이트 명령들(WCMD1~WCMDm)을 생성하고, 복수의 라이트 명령들(WCMD1~WCMDm)을 포함하는 제1큐(231)를 버퍼(230)에 저장할 수 있다. 실시 예에 따라, CPU(220)는 제1큐(231)에 포함된(또는 쌓인) 명령들의 개수를 나타내는 지시 데이터(NCI)를 생성하고, 지시 데이터(NCI)를 구성 요소들 (210, 260, 및 110)을 통해 데이터 저장 장치(300)로 전송할 수 있다(S110).
NVMe 컨트롤러(315)는, 지시 데이터(NCI)에 응답하여, 버퍼(230)에 저장된 제1큐(231)에 포함된 라이트 명령들(WCMD1~WCMDm)을 페치할 수 있다(S112와 S114).
NVMe 컨트롤러(315)는 페치된 라이트 명령들(WCMD1~WCMDm) 각각에 상응하는 라이트 데이터(WDATA1~WDATAm)를 호스트(200)의 메모리(250)로부터 페치할 수 있다 (S116과 S118). 실시 예에 따라, 라이트 데이터(WDATA1~WDATAm)는 버스트(burst)로 페치될 수 있다. 각 라이트 데이터(WDATA1~WDATAm) 페이로드 데이터(payload data)를 의미할 수 있다.
실시 예에 따라, NVMe 컨트롤러(315)는 페치된 각 라이트 데이터 (WDATA1~WDATAm)를 불휘발성 메모리(350)에 저장할 수 있다.
다른 실시 예에 따라, 메모리 컨트롤러(314)는 페치된 각 라이트 데이터 (WDATA1~WDATAm)를 불휘발성 메모리(350)에 저장할 수 있다.
또 다른 실시 예에 따라, NVMe 컨트롤러(315)가 페치된 각 라이트 데이터 (WDATA1~WDATAm)를 메모리(340)에 라이트하면, 메모리 컨트롤러(314)는 메모리 (340)에 라이트된 각 라이트 데이터(WDATA1~WDATAm)를 불휘발성 메모리(350)에 라이트할 수 있다.
예컨대, 제1라이트 명령(WCMD1)에 상응하는 제1라이트 데이터(WDATA1)가 불휘발성 메모리(350)에 저장이 완료되면(S120), NVMe 컨트롤러(315)는 제1라이트 완료 패킷(WCP1)을 생성하고, 제1라이트 완료 패킷(WCP1)을 버퍼(316)에 저장할 수 있다(S121).
이때, NVMe 컨트롤러(315)의 완료 패킷 생성 엔진(321)은 제1라이트 완료 패킷(WCP1)이 생성됨을 지시하는 제4지시 신호(IS2)를 카운트 체킹 회로(331)로 전송할 수 있다. 카운트 체킹 회로(331)는 클락 신호(CLK)와 제4지시 신호(IS2)에 응답하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교한다.
생성된 카운트 값이 기준 카운트 값(Cref)보다 작을 때, 카운트 체킹 회로 (331)는 제1레벨(예컨대, 로우 레벨 또는 로직 0)을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 제1라이트 완료 패킷(WCP1)을 곧바로 호스트 (200)로 전송하지 않는다. 즉, 완료 DMA 컨트롤러(323)는 제1라이트 완료 패킷 (WCP1)을 버퍼(316)로부터 페치하지 않는다.
제2라이트 명령(WCMD2)에 상응하는 제2라이트 데이터(WDATA2)가 불휘발성 메모리(350)에 저장이 완료되면(S122), NVMe 컨트롤러(315)는 제2라이트 완료 패킷 (WCP2)을 생성하고, 제2라이트 완료 패킷(WCP2)을 버퍼(316)에 저장할 수 있다 (S123).
이때, NVMe 컨트롤러(315)의 완료 패킷 생성 엔진(321)은 제2라이트 완료 패킷(WCP2)이 생성됨을 지시하는 제4지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다. 카운트 체킹 회로(331)는 클락 신호(CLK)와 제4지시 신호(IS2)에 응답하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교한다.
생성된 카운트 값이 기준 카운트 값(Cref)보다 작을 때, 카운트 체킹 회로 (331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 제2라이트 완료 패킷(WCP2)을 곧바로 호스트 (200)로 전송하지 않는다. 즉, 완료 DMA 컨트롤러(323)는 제2라이트 완료 패킷 (WCP2)을 버퍼(316)로부터 페치하지 않는다.
제m라이트 명령(WCMDm)에 상응하는 제m라이트 데이터(WDATAm)가 불휘발성 메모리(350)에 저장이 완료되면(S124), NVMe 컨트롤러(315)는 제m라이트 완료 패킷 (WCPm)을 생성하고, 제m라이트 완료 패킷(WCPm)을 버퍼(316)에 저장할 수 있다 (S125).
이때, NVMe 컨트롤러(315)의 완료 패킷 생성 엔진(321)은 제m라이트 완료 패킷(WCPm)이 생성됨을 지시하는 제4지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다. 카운트 체킹 회로(331)는 클락 신호(CLK)와 제4지시 신호(IS2)에 응답하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교한다.
생성된 카운트 값이 기준 카운트 값(Cref)과 같을 때, 카운트 체킹 회로 (331)는 제2레벨(예컨대, 하이 레벨 또는 로직 1)을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제2레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 라이트 완료 패킷들 (WCP1~WCPm)을 페치하고, 페치된 라이트 완료 패킷들(WCP1~WCPm)을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다(S127). 예컨대, 완료 DMA 컨트롤러(323)는 기준 카운트 값(Cref)을 참조하여 버퍼(316)에 저장된 라이트 완료 패킷들 (WCP1~WCPm)을 페치할 수 있다.
페치된 라이트 완료 패킷들(WCP1~WCPm)이 한 번의 트랜잭션으로 호스트(200)로 전송되면, 카운트 체킹 회로(331)에 의해 카운트된 카운트 값은 리셋될 수 있다. 예컨대, 완료 DMA 컨트롤러(323)는 라이트 완료 패킷들(WCP1~WCPm)이 한 번의 트랜잭션으로 호스트(200)로 전송됨을 지시하는 지시 신호를 시간 체킹 회로(329)와 카운트 체킹 회로(331)로 전송할 수 있다. 상기 지시 신호는 리셋 신호로서 사용될 수 있다.
호스트(200)는 페치된 라이트 완료 패킷들(WCP1~WCPm)을 포함하는 제2큐 (233)를 버퍼(230)에 저장할 수 있다(S129). 데이터 저장 장치(300), 예컨대, CPU (313) 또는 큐 매니저(317)는 페치된 라이트 완료 패킷들(WCP1~WCPm)이 한 번의 트랜잭션으로 호스트(200)로 전송됨을 지시하는 인터럽트를 생성하고, 생성된 인터럽트를 호스트(200)로 전송할 수 있다. 호스트(200), 예컨대 CPU(220)는, 수신된 인터럽트에 응답하여, 제2큐(233)에 저장된 완료 패킷들(WCP1~WCPm)을 리드하고, 라이트 명령들(WCMD1~WCMDm)에 대한 처리 절차를 완료할 수 있다.
도 4는 도 1에 도시된 데이터 처리 시스템에 구현된 AXI 버스를 이용한 라이트 트랜잭션 타이밍 플로우를 나타낸다.
데이터 저장 장치(300)의 버스 구조(311)가 AXI 버스 프로토콜을 사용한다고 가정하면, 연속적인 어드레스들(ADD1~ADDm)에 해당하는 연속적인 라이트 데이터 (WDATA1~WDATAm)는 버스트로 호스트(200)로 전송될 수 있다.
즉, 본 발명의 실시 예에 따른 NMVe 컨트롤러(315)는 각 라이트 완료 패킷 (WCP1~WCPm)이 생성될 때마다 곧바로 각 라이트 완료 패킷(WCP1~WCPm)을 호스트 (200)로 전송하지 않고, 기준 카운트 값(Cref)만큼의 라이트 완료 패킷들 (WCP1~WCPm)이 버퍼(316)에 쌓이면, 기준 카운트 값(Cref)만큼의 라이트 완료 패킷들(WCP1~WCPm)을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다(S127).
종래의 데이터 저장 장치에서 연속적인 라이트 데이터(WDATA1~WDATAm)를 포함하는 버스트(burst)가 끊기면, 각 어드레스(ADD1~ADDm)를 계산하는 시간 및/또는 각 라이트 완료 패킷(WCP1~WCPm)을 기다리는 시간이 각 라이트 명령(WCMD1~WCMDm)마다 필요하기 때문에 상기 종래의 데이터 처리 시스템의 성능이 저하될 수 있다.
그러나, 본 발명의 실시 예에 따른 데이터 처리 시스템(100)에서, 페치된 라이트 완료 패킷들(WCP1~WCPm)은 한 번의 트랜잭션(또는 한 번의 전송 작동)으로 호스트(200)로 전송되므로, 연속적인 라이트 데이터(WDATA1~WDATAm)를 포함하는 버스트는 끊기지 않는다. 따라서, 데이터 처리 시스템(100)의 성능이 개선될 수 있는 효과가 있다.
도 5는 도 1에 도시된 데이터 처리 시스템에서 수행되는 리드 작동들을 설명하기 위한 데이터 흐름을 나타낸다.
데이터 처리 시스템(100)에서 수행되는 리드 작동들은 도 1, 도 2, 도 5, 및 도 6을 참조하여 상세히 설명된다.
m개의 리드 명령들(RCMD1~RCMDm; m은 2 이상의 자연수)이 하나의 명령 세트를 구성하고, 기준 카운트 값(Cref)은 m이라고 가정한다. 또한, m개의 리드 명령들 (RCMD1~RCMDm)을 처리하는 시간 또는 m개의 리드 완료 패킷들(RCP1~RCPm)이 버퍼 (316)에 저장되는 시간은 기준 시간 카운트 값(Tref)보다 작다고 가정한다. 따라서, 조건 판단 회로(327), 예컨대 시간 체킹 회로(329)는 제1레벨을 갖는 제1지시 신호(ARM1)를 출력할 수 있다.
호스트(200)의 CPU(220)는 복수의 리드 명령들(RCMD1~RCMDm)을 생성하고, 복수의 리드 명령들(RCMD1~RCMDm)을 포함하는 제1큐(231)를 버퍼(230)에 저장할 수 있다. 실시 예에 따라, CPU(220)는 제1큐(231)에 포함된(또는 쌓인) 명령들의 개수를 나타내는 지시 데이터(NCI)를 생성하고, 지시 데이터(NCI)를 구성 요소들(210, 260, 및 110)을 통해 데이터 저장 장치(300)로 전송할 수 있다(S210).
NVMe 컨트롤러(315)는, 지시 데이터(NCI)에 응답하여, 버퍼(230)에 저장된 제1큐(231)에 포함된 리드 명령들(RCMD1~RCMDm)을 페치할 수 있다(S212와 S214).
NVMe 컨트롤러(315)는 페치된 리드 명령들(RCMD1~RCMDm) 각각에 상응하는 리드 데이터(RDATA1~RDATAm)를 불휘발성 메모리(550)로부터 페치할 수 있다(S216, S218, ..., S220). 각 리드 데이터(RDATA1~RDATAm)는 페이로드 데이터를 의미할 수 있다.
실시 예에 따라, 메모리 컨트롤러(314)는 페치된 각 리드 데이터 (RDATA1~RDATAm)를 메모리(340)에 저장할 수 있다.
다른 실시 예에 따라, 메모리 컨트롤러(314)는 페치된 각 리드 데이터 (RDATA1~RDATAm)를 버스 구조(311)를 통해 NVMe 컨트롤러(315)로 전송할 수 있다.
예컨대, 제1리드 명령(RCMD1)에 상응하는 제1리드 데이터(RDATA1)가 호스트 (200)의 메모리(250)에 저장이 완료되면(S216-1), NVMe 컨트롤러(315)는 제1리드 완료 패킷(RCP1)을 생성하고, 제1리드 완료 패킷(RCP1)을 버퍼(316)에 저장할 수 있다(S217).
이때, NVMe 컨트롤러(315)의 완료 패킷 생성 엔진(321)은 제1리드 완료 패킷 (RCP1)이 생성됨을 지시하는 제4지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 제4지시 신호(IS2)에 응답하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교한다. 생성된 카운트 값이 기준 카운트 값(Cref)보다 작을 때, 카운트 체킹 회로(331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다. 완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 제1리드 완료 패킷(RCP1)을 곧바로 호스트(200)로 전송하지 않는다. 즉, 완료 DMA 컨트롤러(323)는 제1리드 완료 패킷(RCP1)을 버퍼(316)로부터 페치하지 않는다.
제2리드 명령(RCMD2)에 상응하는 제2리드 데이터(RDATA2)가 호스트(200)의 메모리(250)에 저장이 완료되면(S216-1), NVMe 컨트롤러(315)는 제2리드 완료 패킷 (RCP2)을 생성하고, 제2리드 완료 패킷(RCP2)을 버퍼(316)에 저장할 수 있다 (S219).
이때, NVMe 컨트롤러(315)의 완료 패킷 생성 엔진(321)은 제2리드 완료 패킷 (RCP2)이 생성됨을 지시하는 제4지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다. 카운트 체킹 회로(331)는 클락 신호(CLK)와 제4지시 신호(IS2)에 응답하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교한다.
생성된 카운트 값이 기준 카운트 값(Cref)보다 작을 때, 카운트 체킹 회로 (331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 제2리드 완료 패킷(RCP2)을 곧바로 호스트 (200)로 전송하지 않는다. 즉, 완료 DMA 컨트롤러(323)는 제2리드 완료 패킷(RCP2)을 버퍼(316)로부터 페치하지 않는다.
제m리드 명령(RCMDm)에 상응하는 제m리드 데이터(RDATAm)가 호스트(200)의 메모리(250)에 저장이 완료되면(S216-1), NVMe 컨트롤러(315)는 제m리드 완료 패킷 (RCPm)을 생성하고, 제m리드 완료 패킷(RCPm)을 버퍼(316)에 저장할 수 있다 (S221).
이때, NVMe 컨트롤러(315)의 완료 패킷 생성 엔진(321)은 제m리드 완료 패킷(RCPm)이 생성됨을 지시하는 제4지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다. 카운트 체킹 회로(331)는 클락 신호(CLK)와 제4지시 신호(IS2)에 응답하여 카운트 값을 생성하고, 생성된 카운트 값과 기준 카운트 값(Cref)을 비교한다.
생성된 카운트 값이 기준 카운트 값(Cref)과 동일할 때, 카운트 체킹 회로 (331)는 제2레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제2레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 리드 완료 패킷들 (RCP1~RCPm)을 페치하고, 페치된 리드 완료 패킷들(RCP1~RCPm)을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다(S223). 예컨대, 완료 DMA 컨트롤러(323)는 기준 카운트 값(Cref)을 참조하여 버퍼(316)에 저장된 리드 완료 패킷들(RCP1~RCPm)을 페치할 수 있다.
페치된 리드 완료 패킷들(RCP1~RCPm)이 한 번의 트랜잭션으로 호스트(200)로 전송되면, 카운트 체킹 회로(331)에 의해 카운트된 카운트 값은 리셋될 수 있다. 예컨대, 완료 DMA 컨트롤러(323)는 리드 완료 패킷들이 한 번의 트랜잭션으로 호스트(200)로 전송됨을 지시하는 지시 신호를 시간 체킹 회로(329)와 카운트 체킹 회로(331)로 전송할 수 있다. 상기 지시 신호는 리셋 신호로서 사용될 수 있다.
호스트(200)는 페치된 리드 완료 패킷들(RCP1~RCPm)을 포함하는 제2큐(233)를 버퍼(230)에 저장할 수 있다(S225). 데이터 저장 장치(300), 예컨대, CPU(313) 또는 큐 매니저(317)는 페치된 리드 완료 패킷들(RCP1~RCPm)이 한 번의 트랜잭션으로 호스트(200)로 전송됨을 지시하는 인터럽트를 생성하고, 생성된 인터럽트를 호스트(200)로 전송할 수 있다. 호스트(200), 예컨대 CPU(220)는, 수신된 인터럽트에 응답하여, 제2큐(233)에 저장된 리드 완료 패킷들(RCP1~RCPm)을 리드하고, 리드 명령들(RCMD1~RCMDm)에 대한 처리 절차를 완료할 수 있다.
도 6은 도 1에 도시된 데이터 처리 시스템에 구현된 AXI 버스를 이용한 리드 트랜잭션 타이밍 플로우를 나타낸다.
데이터 저장 장치(300)의 버스 구조(311)가 AXI 버스 프로토콜을 사용한다고 가정하면, 연속적인 어드레스들(ADD1~ADDm)에 해당하는 연속적인 리드 데이터 (RDATA1~RDATAm)는 버스트로 호스트(200)로 전송될 수 있다.
즉, 본 발명의 실시 예에 따른 NMVe 컨트롤러(315)는 각 리드 완료 패킷 (RCP1~RCPm)이 생성될 때마다 곧바로 각 리드 완료 패킷(RCP1~RCPm)을 호스트 (200)로 전송하지 않고, 기준 카운트 값(Cref)만큼의 리드 완료 패킷들(RCP1~RCPm)이 버퍼(316)에 쌓이면, 기준 카운트 값(Cref)만큼의 리드 완료 패킷들(RCP1~RCPm)을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다(S223).
종래의 데이터 저장 장치에서 연속적인 리드 데이터(RDATA1~RDATAm)를 포함하는 버스트가 끊기면, 각 어드레스(ADD1~ADDm)를 계산하는 시간 및/또는 각 리드 완료 패킷(RCP1~RCPm)을 기다리는 시간이 각 리드 명령(RCMD1~RCMDm)마다 필요하기 때문에 상기 종래의 데이터 처리 시스템의 성능이 저하될 수 있다.
그러나, 본 발명의 실시 예에 따른 데이터 처리 시스템(100)에서, 페치된 리드 완료 패킷들(RCP1~RCPm)은 한 번의 트랜잭션으로 호스트(200)로 전송되므로, 연속적인 리드 데이터(RDATA1~RDATAm)를 포함하는 버스트는 끊기지 않는다. 따라서, 데이터 처리 시스템(100)의 성능이 개선될 수 있는 효과가 있다.
도 7은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 1, 도 2, 및 도 7을 참조하면, 데이터 저장 장치(300)는 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)이 완료될 때마다 완료 패킷(예컨대, 라이트 완료 패킷 또는 리드 완료 패킷)을 생성하고, 생성된 완료 패킷을 버퍼(316)에 저장할 수 있다 (S310).
데이터 저장 장치(300)는 버퍼(316)에 저장된 완료 패킷들을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다(S320).
도 8은 도 1에 도시된 데이터 처리 시스템에서 수행되는 라이트 작동들을 설명하기 위한 플로우 차트이다.
도 1부터 도 4, 및 도 8을 참조하면, 데이터 저장 장치(300)는 호스트(200)의 제1큐(231)에 포함된(또는 저장된) 라이트 명령들(WCMD1~WCMDm)의 개수를 나타내는 지시 데이터(NCI)를 호스트(200)로부터 수신할 수 있다(S410).
데이터 저장 장치(300)는, 지시 데이터(NCI)에 응답하여, 제1큐(231)에 포함된(또는 저장된) 라이트 명령들(WCMD1~WCMDm)을 페치할 수 있다(S412).
데이터 저장 장치(300)는 페치된 라이트 명령들(WCMD1~WCMDm) 각각에 상응하는 라이트 데이터(WDATA1~WDATAm)를 호스트(200)의 메모리(250)로부터 페치할 수 있다(S414).
데이터 저장 장치(300)는 페치된 각 라이트 명령(WCMD1~WCMDm)에 해당하는 각 라이트 데이터(WDATA1~WDATAm)가 불휘발성 메모리(350)에 저장 완료될 때마다 라이트 완료 패킷을 생성하고, 생성된 라이트 완료 패킷을 버퍼(316)에 저장할 수 있다(S416). 즉, 데이터 저장 장치(300)는 각 라이트 데이터(WDATA1~WDATAm)가 불휘발성 메모리(350)에 저장 완료될 때마다 생성된 라이트 완료 패킷을 곧바로 호스트(200)로 전송하지 않는다.
데이터 저장 장치(300)는, 조건 판단 회로(327)의 제어에 따라, 버퍼(316)에 저장된 하나 또는 그 이상의 라이트 완료 패킷들을 페치하고, 페치된 하나 또는 그 이상의 라이트 완료 패킷들을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다.
좀 더 구체적으로, 데이터 저장 장치(300)는, 시간 체킹 회로(329) 또는 카운트 체킹 회로(331)의 제어에 따라, 버퍼(316)에 저장된 하나 또는 그 이상의 라이트 완료 패킷들을 페치하고, 페치된 하나 또는 그 이상의 라이트 완료 패킷들을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다.
상술한 바와 같이, 데이터 저장 장치(300)가 하나의 라이트 완료 패킷을 호스트(200)로 전송할 때에도, 데이터 저장 장치(300)는 상기 라이트 완료 패킷을 생성 즉시 호스트(200)로 전송하지 않고 상기 라이트 완료 패킷을 버퍼(316)에 저장하고, 기준 시간 카운트 값에 상응하는 시간이 지난 후에 버퍼(316)에 저장된 상기 라이트 완료 패킷을 호스트(200)로 전송할 수 있다.
도 9는 도 1에 도시된 데이터 처리 시스템에서 수행되는 리드 작동들을 설명하기 위한 플로우 차트이다.
도 1, 도 2, 도 5, 도 6, 및 도 9를 참조하면, 데이터 저장 장치(300)는 호스트(200)의 제1큐(231)에 포함된(또는 저장된) 리드 명령들(RCMD1~RCMDm)의 개수를 나타내는 지시 데이터(NCI)를 호스트(200)로부터 수신할 수 있다(S510).
데이터 저장 장치(300)는, 지시 데이터(NCI)에 응답하여, 제1큐(231)에 포함된(또는 저장된) 리드 명령들(RCMD1~RCMDm)을 페치할 수 있다(S512).
데이터 저장 장치(300)는 페치된 리드 명령들(RCMD1~RCMDm) 각각에 상응하는 리드 데이터(RDATA1~RDATAm)를 불휘발성 메모리(550)로부터 페치할 수 있다(S514).
데이터 저장 장치(300)는 페치된 각 리드 명령(RCMD1~RCMDm)에 해당하는 각 리드 데이터(RDATA1~RDATAm)가 호스트(200)의 메모리(250)에 저장 완료될 때마다 리드 완료 패킷을 생성하고 상기 리드 완료 패킷을 버퍼(316)에 저장할 수 있다 (S516). 즉, 데이터 저장 장치(300)는 각 리드 데이터(RDATA1~RDATAm)가 호스트 (200)의 메모리(250)에 저장 완료될 때마다 생성된 리드 완료 패킷을 곧바로 호스트(200)로 전송하지 않는다.
데이터 저장 장치(300)는, 시간 체킹 회로(329) 또는 카운트 체킹 회로(331)의 제어에 따라, 버퍼(316)에 저장된 하나 또는 그 이상의 리드 완료 패킷들을 페치하고, 페치된 하나 또는 그 이상의 리드 완료 패킷들을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다(S518).
상술한 바와 같이, 데이터 저장 장치(300)가 하나의 리드 완료 패킷을 호스트(200)로 전송할 때에도, 데이터 저장 장치(300)는 상기 리드 완료 패킷을 생성 즉시 호스트(200)로 전송하지 않고 상기 리드 완료 패킷을 버퍼(316)에 저장하고, 기준 시간 카운트 값에 상응하는 시간이 지난 후에 버퍼(316)에 저장된 상기 리드 완료 패킷을 호스트(200)로 전송할 수 있다.
도 10은 시간 조건 또는 카운트 조건에 따라 도 1에 도시된 데이터 처리 시스템의 설명하기 위한 플로우 차트이다.
도 1, 도 2, 및 도 10을 참조하면, 데이터 저장 장치(300), 특히 NVMe 컨트롤러(315)는 조건 정보, 예컨대 기준 카운트 값(Cref)과 기준 시간 카운트 값 (Tref)을 이용하여 버퍼(316)에 저장된 하나 또는 그 이상의 완료 패킷들을 한 번의 트랜잭션으로 호스트(200)로 전송할 수 있다.
설명의 편의를 위해, 기준 카운트 값(Cref)이 3이고, 기준 시간 카운트 값 (Tref)에 상응하는 시간이 2초이고, 제1큐(231)에 저장된 명령들의 개수(m)는 3이고, 2초 이내에 3개의 라이트 완료 패킷들(WCP1, WCP2, 및 WCP3)이 버퍼(316)에 저장된다고 가정한다.
제1라이트 데이터(WDATA1)가 불휘발성 메모리(350)에 저장이 완료되면, 완료 패킷 생성 엔진(321)은 제1라이트 완료 패킷(WCP1)을 생성하고 제1라이트 완료 패킷(WCP1)을 버퍼(316)에 저장할 수 있다. 이때, 완료 패킷 생성 엔진(321)은 제1라이트 완료 패킷(WCP1)의 생성을 지시하는 지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 지시 신호(IS2)에 응답하여 카운트 값(예컨대, 1)을 생성하고, 생성된 카운트 값(예컨대, 1)과 기준 카운트 값 (Cref=3)을 비교한다(S610).
생성된 카운트 값(예컨대, 1)이 기준 카운트 값(Cref=3)보다 작으므로, 카운트 체킹 회로(331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러 (323)로 전송한다.
또한, 시간 체킹 회로(329)는 시간 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 작을 때 (S612) 제1레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 제1라이트 완료 패킷(WCP1)을 페치하지 않는다.
제2라이트 데이터(WDATA2)가 불휘발성 메모리(350)에 저장이 완료되면, 완료 패킷 생성 엔진(321)은 제2라이트 완료 패킷(WCP2)을 생성하고 제2라이트 완료 패킷(WCP2)을 버퍼(316)에 저장할 수 있다. 이때, 완료 패킷 생성 엔진(321)은 제2라이트 완료 패킷(WCP2)의 생성을 지시하는 지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 지시 신호(IS2)에 응답하여 카운트 값(예컨대, 2)을 생성하고, 생성된 카운트 값(예컨대, 2)과 기준 카운트 값 (Cref=3)을 비교한다(S610).
생성된 카운트 값(예컨대, 2)이 기준 카운트 값(Cref=3)보다 작으므로, 카운트 체킹 회로(331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러 (323)로 전송한다.
또한, 시간 체킹 회로(329)는 시간 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 작을 때 (S612) 제1레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 각 라이트 완료 패킷 (WCP1과 WCP2)을 페치하지 않는다.
제3라이트 데이터(WDATA3)가 불휘발성 메모리(350)에 저장이 완료되면, 완료 패킷 생성 엔진(321)은 제3라이트 완료 패킷(WCP3)을 생성하고 제3라이트 완료 패킷(WCP3)을 버퍼(316)에 저장할 수 있다. 이때, 완료 패킷 생성 엔진(321)은 제3라이트 완료 패킷(WCP3)의 생성을 지시하는 지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 지시 신호(IS2)에 응답하여 카운트 값(예컨대, 3)을 생성하고, 생성된 카운트 값(예컨대, 3)과 기준 카운트 값 (Cref=3)을 비교한다(S610).
생성된 카운트 값(예컨대, 3)이 기준 카운트 값(Cref=3)과 같으므로, 카운트 체킹 회로(331)는 제2레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
또한, 시간 체킹 회로(329)는 시간 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 작을 때 (S612) 제1레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제2레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 라이트 완료 패킷들 (WCP1, WCP2, 및 WCP3)을 페치하고(S614), 페치된 라이트 완료 패킷들(WCP1, WCP2, 및 WCP3)을 한 번에 버스트로 호스트(200)로 전송할 수 있다(S616).
페치된 라이트 완료 패킷들((WCP1, WCP2, 및 WCP3)이 호스트(200)로 전송되면, 카운트 체킹 회로(331)에 의해 카운트된 카운트 값을 초기화된다.
설명의 편의를 위해, 기준 카운트 값(Cref)이 2이고, 기준 시간 카운트 값 (Tref)에 상응하는 시간이 2초이고, 제1큐(231)에 저장된 명령들의 개수(m)는 3이고, 2초 이내에 2개의 라이트 완료 패킷들(WCP1과 WCP2)이 버퍼(316)에 저장된다고 가정한다.
제1라이트 데이터(WDATA1)가 불휘발성 메모리(350)에 저장이 완료되면, 완료 패킷 생성 엔진(321)은 제1라이트 완료 패킷(WCP1)을 생성하고 제1라이트 완료 패킷(WCP1)을 버퍼(316)에 저장할 수 있다. 이때, 완료 패킷 생성 엔진(321)은 제1라이트 완료 패킷(WCP1)의 생성을 지시하는 지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 지시 신호(IS2)에 응답하여 카운트 값(예컨대, 1)을 생성하고, 생성된 카운트 값(예컨대, 1)과 기준 카운트 값 (Cref=3)을 비교한다(S610).
생성된 카운트 값(예컨대, 1)이 기준 카운트 값(Cref=2)보다 작으므로, 카운트 체킹 회로(331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러 (323)로 전송한다.
또한, 시간 체킹 회로(329)는 시간 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 작을 때 (S612) 제1레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 제1라이트 완료 패킷(WCP1)을 페치하지 않는다.
제2라이트 데이터(WDATA2)가 불휘발성 메모리(350)에 저장이 완료되면, 완료 패킷 생성 엔진(321)은 제2라이트 완료 패킷(WCP2)을 생성하고 제2라이트 완료 패킷(WCP2)을 버퍼(316)에 저장할 수 있다. 이때, 완료 패킷 생성 엔진(321)은 제2라이트 완료 패킷(WCP2)의 생성을 지시하는 지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 지시 신호(IS2)에 응답하여 카운트 값(예컨대, 2)을 생성하고, 생성된 카운트 값(예컨대, 2)과 기준 카운트 값 (Cref=2)을 비교한다(S610).
생성된 카운트 값(예컨대, 2)이 기준 카운트 값(Cref=2)과 같으므로, 카운트 체킹 회로(331)는 제2레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러(323)로 전송한다.
또한, 시간 체킹 회로(329)는 시간 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 작을 때 (S612) 제1레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제2레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 라이트 완료 패킷들 (WCP1과 WCP2)을 페치하고(S614), 페치된 라이트 완료 패킷들(WCP1과 WCP2)을 한 번에 버스트로 호스트(200)로 전송할 수 있다(S616).
페치된 라이트 완료 패킷들(WCP1과 WCP2)이 호스트(200)로 전송되면, 카운트 체킹 회로(331)에 의해 카운트된 카운트 값을 초기화된다.
제3라이트 데이터(WDATA3)가 불휘발성 메모리(350)에 저장이 완료되면, 완료 패킷 생성 엔진(321)은 제3라이트 완료 패킷(WCP3)을 생성하고 제3라이트 완료 패킷(WCP3)을 버퍼(316)에 저장할 수 있다. 이때, 완료 패킷 생성 엔진(321)은 제3라이트 완료 패킷(WCP3)의 생성을 지시하는 지시 신호(IS2)를 카운트 체킹 회로(331)로 전송한다.
카운트 체킹 회로(331)는 클락 신호(CLK)와 지시 신호(IS2)에 응답하여 카운트 값(예컨대, 1)을 생성하고, 생성된 카운트 값(예컨대, 1)과 기준 카운트 값 (Cref=3)을 비교한다(S610).
생성된 카운트 값(예컨대, 1)이 기준 카운트 값(Cref=2)보다 작으므로, 카운트 체킹 회로(331)는 제1레벨을 갖는 제2지시 신호(ARM2)를 완료 DMA 컨트롤러 (323)로 전송한다.
또한, 시간 체킹 회로(329)는 시간 카운트 값과 기준 시간 카운트 값(Tref)을 비교하고, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 작을 때 (S612) 제1레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제1레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 제1라이트 완료 패킷 (WCP1)을 페치하지 않는다.
그러나, 시간이 지남에 따라 설정된 2초가 지나면, 즉, 상기 시간 카운트 값이 기준 시간 카운트 값(Tref)보다 클 때, 시간 체킹 회로(329)는 제2레벨을 갖는 제1지시 신호(ARM1)를 완료 DMA 컨트롤러(323)로 전송한다.
완료 DMA 컨트롤러(323)는, 제2레벨을 갖는 제1지시 신호(ARM1)와 제1레벨을 갖는 제2지시 신호(ARM2)에 응답하여, 버퍼(316)에 저장된 라이트 완료 패킷(WCP3)을 페치하고(S614), 페치된 라이트 완료 패킷(WCP3)을 호스트(200)로 전송할 수 있다(S616). 따라서, 버퍼(316)는 비게(empty) 된다.
도 11은 도 1에 도시된 데이터 처리 시스템에서 수행되는 작동을 설명하기 위한 개략적인 블록도를 나타낸다.
도 1, 도 2, 및 도 11을 참조하면, NVMe 컨트롤러(315)는 버퍼(316)의 제1큐 (PCQ1)에 저장된(또는 포함된) 복수의 완료 패킷들(CP11, CP12, CP21, 및 CP22) 중에서 호스트(200)의 버퍼(230)의 제1큐(HCQ1)에 저장될 복수의 완료 패킷들(CP11과 CP12)을 추출할 수 있다.
또한, NVMe 컨트롤러(315)는 버퍼(316)의 제2큐(PCQ2)에 저장된(또는 포함된) 복수의 완료 패킷들(CP13, CP23, CP14, 및 CP24) 중에서 호스트(200)의 버퍼 (230)의 제1큐(HCQ1)에 저장될 복수의 완료 패킷들(CP13과 CP14)을 추출할 수 있다.
NVMe 컨트롤러(315)가 추출된 완료 패킷들(CP11, CP12, CP13, 및 CP14)을 한 번의 트랜잭션으로 연속적으로 호스트(200)로 전송하면, 호스트(200)는 데이터 저장 장치(300)로부터 전송된 완료 패킷들(CP11, CP12, CP13, 및 CP14)을 제1큐(HCQ1)에 저장할 수 있다.
NVMe 컨트롤러(315)는 버퍼(316)의 제1큐(PCQ1)에 저장된(또는 포함된) 복수의 완료 패킷들(CP11, CP12, CP21, 및 CP22) 중에서 호스트(200)의 버퍼(230)의 제2큐(HCQ2)에 저장될 복수의 완료 패킷들(CP21과 CP22)을 추출할 수 있다.
또한, NVMe 컨트롤러(315)는 버퍼(316)의 제2큐(PCQ2)에 저장된(또는 포함된) 복수의 완료 패킷들(CP13, CP23, CP14, 및 CP24) 중에서 호스트(200)의 버퍼 (230)의 제2큐(HCQ2)에 저장될 복수의 완료 패킷들(CP23과 CP24)을 추출할 수 있다.
NVMe 컨트롤러(315)가 추출된 완료 패킷들(CP21, CP22, CP23, 및 CP24)을 한 번의 트랜잭션으로 연속적으로 호스트(200)로 전송하면, 호스트(200)는 데이터 저장 장치(300)로부터 전송된 완료 패킷들(CP21, CP22, CP23, 및 CP24)을 제2큐 (HCQ2)에 저장할 수 있다.
데이터 저장 장치(300)의 제1큐(PCQ1)에 저장된 완료 패킷들(CP11, CP12, CP21, 및 CP22)은 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)이 완료될 때마다 NVMe 컨트롤러(315)에 의해 생성된 완료 패킷들일 수 있다.
또한, 데이터 저장 장치(300)의 제2큐(PCQ2)에 저장된 완료 패킷들(CP13, CP23, CP14, 및 CP24)은 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)이 완료될 때마다 NVMe 컨트롤러(315)에 의해 생성된 완료 패킷들일 수 있다.
도 12는 도 1에 도시된 데이터 처리 시스템을 포함하는 검색 시스템의 블락도를 나타낸다.
도 1부터 도 12를 참조하면, 검색 시스템(400)은 클라이언트 컴퓨터(410), 네트워크(420), 웹 서버(430), 및 데이터 처리 시스템(100')을 포함할 수 있다.
실시 예에 따라, 검색 시스템(400)은 인터넷 포털 서비스(internet portal service) 또는 웹 포탈(web portal) 서비스를 제공할 수 있는 시스템으로 구현될 수 있다. 다른 실시 예에 따라, 검색 시스템(400)은 데이터 센터, 인터넷 데이터 센터를 의미할 수 있다.
클라이언트 컴퓨터(410)는 네트워크(420)를 통해 웹 서버(430)에 접속될 수 있다. 네트워크(420)는 무선 인터넷, 유선 인터넷, 또는 WiFi를 지원하는 네트워크를 의미할 수 있다.
웹 서버(430)는 네트워크를 통해 데이터 처리 시스템(100')에 접속될 수 있다. 데이터 처리 시스템(100')은 호스트(200)와 복수의 데이터 저장 장치들(300-1~300-n)을 포함할 수 있다. 복수의 데이터 저장 장치들(300-1~300-n) 각각의 구조와 작동은 도 1부터 도 11을 참조하여 설명된 데이터 저장 장치(300)의 구조와 작동과 실질적으로 동일 또는 유사하다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 데이터 저장 장치
110; 인터페이스
200; 호스트
220; CPU
230; 버퍼
231; 제1큐
233; 제2큐
260; 제1인터페이스
300; 데이터 저장 장치
310; 컨트롤러
312; 제2인터페이스
313; CPU
314; 메모리 컨트롤러
315; NVMe 컨트롤러
317; 큐 매니저
319; 명령 매니저
321; 완료 패킷 생성 엔진
323; 완료 DMA 컨트롤러
325; 환경설정 레지시터
329; 시간 체킹 회로
331; 카운트 체킹 회로
110; 인터페이스
200; 호스트
220; CPU
230; 버퍼
231; 제1큐
233; 제2큐
260; 제1인터페이스
300; 데이터 저장 장치
310; 컨트롤러
312; 제2인터페이스
313; CPU
314; 메모리 컨트롤러
315; NVMe 컨트롤러
317; 큐 매니저
319; 명령 매니저
321; 완료 패킷 생성 엔진
323; 완료 DMA 컨트롤러
325; 환경설정 레지시터
329; 시간 체킹 회로
331; 카운트 체킹 회로
Claims (20)
- 호스트의 큐(queue)로부터 복수의 명령(command)들을 포함하는 커맨드 셋을 수신하는 SSD(solid-state drive)의 작동 방법에 있어서,
상기 호스트의 상기 큐로부터 수신되는 상기 커맨드 셋의 상기 복수의 명령들 각각에 대해, 해당 명령에 상응하는 데이터 처리 작동이 완료될 때마다 완료 응답을 생성하고, 상기 SSD의 비휘발성 메모리로부터 분리된 상기 SSD의 버퍼에 상기 복수의 명령들에 대한 각각의 완료 응답을 누적 및 저장하는 단계;
상기 커맨드 셋의 상기 복수의 명령들에 대한 각각의 완료 응답을 포함하는 완료 패킷을 생성하는 단계; 및
상기 커맨드 셋의 상기 복수의 명령들에 대한 데이터 처리 작동들이 완료된 후 단일 트랜잭션 동안 상기 버퍼에 저장된 상기 완료 패킷을 상기 호스트로 전송하는 단계를 포함하는 SSD의 작동 방법. - 제1항에 있어서,
상기 SSD는 프로세서, 상기 버퍼 및 상기 복수의 명령들에 대응되는 데이터 처리 작동들이 저장되는 상기 비휘발성 메모리를 포함하고,
상기 완료 패킷의 전송은 상기 복수의 명령들에 대응되는 데이터 처리 작동들의 완료 후의 딜레이 이후에 수행되는 것을 특징으로 하는 SSD의 작동 방법. - 제2항에 있어서,
상기 SSD는 상기 비휘발성 메모리와 인터페이스 하는 메모리 컨트롤러 및 상기 버퍼와 상기 메모리 컨트롤러를 연결하는 버스를 더 포함하고,
상기 딜레이의 시간격은 상기 SSD의 시간 체킹 회로에 의해 생성된 제1 지시 신호 및 상기 SSD의 카운트 체킹 회로에 의해 생성된 제2 지시 신호 중 적어도 하나에 의해 제어되는 것을 특징으로 하는 SSD의 작동 방법. - 제1항에 있어서,
상기 복수의 명령들 각각은 순차적으로 배열된 복수의 어드레스들을 포함하는 것을 특징으로 하는 SSD의 작동 방법. - 제1항에 있어서,
상기 호스트로부터 수신된 상기 커맨드 셋의 상기 복수의 명령들은 복수의 기입 명령들을 포함하고,
상기 SSD의 작동 방법은,
상기 호스트의 상기 큐에 저장된 상기 복수의 기입 명령들의 수를 나타내는 지시 정보를 상기 호스트로부터 수신하는 단계;
상기 지시 정보에 응답하여 상기 큐로부터 상기 복수의 기입 명령들을 페치(fetch)하는 단계; 및
상기 복수의 기입 명령들 각각에 대해,
상기 호스트의 메모리로부터 대응되는 기입 데이터를 페치된 기입 데이터로서 페치하는 단계;
상기 페치된 기입 데이터를 상기 SSD의 상기 비휘발성 메모리에 저장하는 단계;
상기 비휘발성 메모리에 상기 페치된 기입 데이터를 저장한 후에 대응되는 완료 응답을 생성하는 단계; 및
상기 버퍼에 상기 생성된 완료 응답을 저장하는 단계를 더 포함하는 것을 특징으로 하는 SSD의 작동 방법. - 제1항에 있어서,
상기 호스트로부터 수신된 상기 커맨드 셋의 상기 복수의 명령들은 복수의 독출 명령들을 포함하고,
상기 SSD의 작동 방법은,
상기 호스트의 상기 큐에 저장된 상기 복수의 독출 명령들의 수를 나타내는 지시 정보를 상기 호스트로부터 수신하는 단계;
상기 지시 정보에 응답하여 상기 큐로부터 상기 복수의 독출 명령들을 페치(fetch)하는 단계; 및
상기 복수의 독출 명령들 각각에 대해,
상기 SSD의 상기 비휘발성 메모리로부터 독출 명령에 의해 지시되는 독출 데이터를 검색 독출 데이터로서 검색하는 단계;
상기 검색 독출 데이터를 상기 SSD로부터 상기 호스트로 전송하는 단계;
상기 검색 독출 데이터의 상기 호스트로의 전송이 성공적으로 수행된 이후 대응되는 완료 응답을 생성하는 단계; 및
상기 생성된 완료 응답을 상기 버퍼에 저장하는 단계를 더 포함하는 것을 특징으로 하는 SSD의 작동 방법. - 제1항에 있어서, 상기 SSD의 NVMe(Non-Volatile Memory Express) 컨트롤러의 제어 하에 버스트에서 상기 SSD로부터 상기 호스트로 각각의 완료 응답을 순차적으로 전송하는 단계를 더 포함하는 것을 특징으로 하는 SSD의 작동 방법.
- 제1항에 있어서,
상기 완료 패킷의 전송은 관련된 조건의 이행을 지시하는 지시 신호의 수신에 응답하여 개시되는 것을 특징으로 하는 SSD의 작동 방법. - 제8항에 있어서,
상기 지시 신호는 기준 시간 기간이 경과했음을 나타내는 제1 지시 신호 및 상기 커맨드 셋의 상기 복수의 명령들의 개수와 동일한 개수의 완료 응답들이 상기 버퍼에 저장되었음을 지시하는 제2 지시 신호 중 하나인 것을 특징으로 하는 SSD의 작동 방법. - 호스트의 큐(queue)로부터 복수의 명령들을 수신하는 SSD(solid-state drive)의 작동 방법에 있어서,
상기 호스트로부터 수신되는 명령들 각각에 대해, 해당 명령에 상응하는 데이터 처리 작동이 완료될 때마다 완료 응답을 생성하고, 상기 SSD의 비휘발성 메모리로부터 분리된 상기 SSD의 버퍼에 각각의 완료 응답을 누적 및 저장하는 단계;
상기 SSD의 NVMe(Non-Volatile Memory Express) 컨트롤러를 이용해, 상기 버퍼에 저장된 각각의 완료 응답을 추출하는 단계;
상기 버퍼로부터 추출된 각각의 완료 응답을 포함하는 적어도 하나의 완료 패킷을 생성하는 단계; 및
상기 복수의 명령들에 대한 데이터 처리 작동들이 완료된 후 단일 트랜잭션 동안 상기 적어도 하나의 완료 패킷 중 하나의 완료 패킷을 상기 호스트로 전송하는 단계를 포함하는 SSD의 작동 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140157400A KR102238652B1 (ko) | 2014-11-12 | 2014-11-12 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US14/873,665 US10496281B2 (en) | 2014-11-12 | 2015-10-02 | Data storage device, data processing system and method of operation |
CN201510763404.0A CN105589661B (zh) | 2014-11-12 | 2015-11-10 | 数据存储装置、数据处理系统和操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140157400A KR102238652B1 (ko) | 2014-11-12 | 2014-11-12 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160056723A KR20160056723A (ko) | 2016-05-20 |
KR102238652B1 true KR102238652B1 (ko) | 2021-04-09 |
Family
ID=55912242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140157400A KR102238652B1 (ko) | 2014-11-12 | 2014-11-12 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10496281B2 (ko) |
KR (1) | KR102238652B1 (ko) |
CN (1) | CN105589661B (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220130518A (ko) * | 2021-03-18 | 2022-09-27 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US11841819B2 (en) | 2021-03-23 | 2023-12-12 | SK Hynix Inc. | Peripheral component interconnect express interface device and method of operating the same |
US12007918B2 (en) | 2021-03-23 | 2024-06-11 | SK Hynix Inc. | Peripheral component interconnect express interface device and method of operating the same |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170032502A (ko) * | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 인터럽트 발생 방법 |
US10459634B2 (en) * | 2015-10-31 | 2019-10-29 | Sandisk Technologies Llc | Methods, systems, and computer readable media for aggregating completion entries in a nonvolatile storage device |
US10423568B2 (en) * | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
US9971545B1 (en) * | 2016-03-23 | 2018-05-15 | Crossbar, Inc. | Non-volatile write and read cache for storage media |
CN111352873B (zh) * | 2016-06-30 | 2021-10-08 | 北京忆芯科技有限公司 | NVMe协议命令处理方法与装置 |
US10521118B2 (en) * | 2016-07-13 | 2019-12-31 | Sandisk Technologies Llc | Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB) |
CN107817943B (zh) * | 2016-09-13 | 2020-12-15 | 深圳大心电子科技有限公司 | 数据传输方法、存储器存储装置及存储器控制电路单元 |
KR20180043451A (ko) * | 2016-10-19 | 2018-04-30 | 삼성전자주식회사 | 컴퓨팅 시스템 및 그것의 동작 방법 |
KR20180045103A (ko) * | 2016-10-24 | 2018-05-04 | 삼성전자주식회사 | 적응형 인터럽트를 생성하는 데이터 저장 장치 및 그것의 동작 방법 |
CN107992436B (zh) * | 2016-10-26 | 2021-04-09 | 华为技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
ES2800064T3 (es) * | 2016-12-28 | 2020-12-23 | Huawei Tech Co Ltd | Procedimiento, dispositivo y sistema para transferencia de paquetes en NVME sobre tejido |
US10466904B2 (en) * | 2017-03-24 | 2019-11-05 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10452278B2 (en) | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
US10296473B2 (en) * | 2017-03-24 | 2019-05-21 | Western Digital Technologies, Inc. | System and method for fast execution of in-capsule commands |
US10509569B2 (en) | 2017-03-24 | 2019-12-17 | Western Digital Technologies, Inc. | System and method for adaptive command fetch aggregation |
US10282094B2 (en) * | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
KR102395190B1 (ko) * | 2017-07-31 | 2022-05-06 | 삼성전자주식회사 | 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법 |
KR102444606B1 (ko) * | 2017-08-28 | 2022-09-20 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190023433A (ko) * | 2017-08-29 | 2019-03-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102430209B1 (ko) * | 2017-09-07 | 2022-08-05 | 삼성전자주식회사 | 저장 장치 및 저장 장치에 포함된 컨트롤러들 |
CN107861894B (zh) * | 2017-11-03 | 2021-08-31 | 郑州云海信息技术有限公司 | NVMe协议的队列命令的执行方法、装置及存储介质 |
KR102446733B1 (ko) * | 2017-11-30 | 2022-09-23 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치를 포함하는 전자 장치 |
KR102493964B1 (ko) | 2017-12-18 | 2023-02-01 | 삼성전자주식회사 | 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법 |
US11048645B2 (en) * | 2018-02-01 | 2021-06-29 | Samsung Electronics Co., Ltd. | Memory module, operation method therof, and operation method of host |
US10761775B2 (en) * | 2018-02-09 | 2020-09-01 | Samsung Electronics Co., Ltd. | System and method for NVMe inter command association in SSD storage using a bridge device |
CN108804035A (zh) * | 2018-05-22 | 2018-11-13 | 深圳忆联信息系统有限公司 | 降低io延时的方法、装置、计算机设备及存储介质 |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
CN111902804B (zh) | 2018-06-25 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 用于管理存储设备的资源并量化i/o请求成本的系统和方法 |
US10678478B2 (en) | 2018-08-24 | 2020-06-09 | Apple Inc. | Ordering memory requests based on access efficiency |
KR102541897B1 (ko) | 2018-08-27 | 2023-06-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
CN110879794B (zh) * | 2018-09-05 | 2023-01-17 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
KR102564774B1 (ko) * | 2018-09-18 | 2023-08-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법 |
KR20200066893A (ko) * | 2018-12-03 | 2020-06-11 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
KR20210016684A (ko) * | 2019-08-05 | 2021-02-17 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 동작 방법 |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
TWI718858B (zh) * | 2020-02-03 | 2021-02-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
US11379447B2 (en) | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
US11449386B2 (en) | 2020-03-20 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory |
US11301173B2 (en) | 2020-04-20 | 2022-04-12 | Alibaba Group Holding Limited | Method and system for facilitating evaluation of data access frequency and allocation of storage device resources |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
IT202000009364A1 (it) * | 2020-04-29 | 2021-10-29 | St Microelectronics Srl | Procedimento per accedere a una memoria e circuito corrispondente |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US12061562B2 (en) * | 2020-05-29 | 2024-08-13 | Netlist, Inc. | Computer memory expansion device and method of operation |
CN111752484B (zh) * | 2020-06-08 | 2024-04-12 | 深圳大普微电子科技有限公司 | 一种ssd控制器、固态硬盘及数据写入方法 |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11321017B2 (en) | 2020-06-29 | 2022-05-03 | SK Hynix Inc. | Systems and methods for controlling completion rate of commands |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
KR20220047443A (ko) * | 2020-10-08 | 2022-04-18 | 삼성전자주식회사 | 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러 |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
KR20220127076A (ko) | 2021-03-10 | 2022-09-19 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작 방법 |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
CN114936173B (zh) * | 2022-06-16 | 2023-03-31 | 科东(广州)软件科技有限公司 | 一种eMMC器件的读写方法、装置、设备和存储介质 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2734563B2 (ja) * | 1988-10-20 | 1998-03-30 | 日本電気株式会社 | ダイレクトメモリアクセス監視回路 |
US6134631A (en) * | 1996-08-19 | 2000-10-17 | Hyundai Electronics America, Inc. | Non-volatile memory with embedded programmable controller |
US5903733A (en) * | 1997-02-13 | 1999-05-11 | Toshiba America Information Systems, Inc. | Multifunction peripheral controller |
US7096252B1 (en) * | 2000-10-05 | 2006-08-22 | Stmicroelectronics, Inc. | System and method for interfacing network station subsystems |
US6549977B1 (en) | 2001-05-23 | 2003-04-15 | 3Ware, Inc. | Use of deferred write completion interrupts to increase the performance of disk operations |
US7185151B2 (en) * | 2002-09-19 | 2007-02-27 | Ricoh Company, Ltd. | Data processing device characterized in its data transfer method, program for executing on a computer to perform functions of the device, and computer readable recording medium storing such a program |
WO2006078914A1 (en) * | 2005-01-21 | 2006-07-27 | Washington University In St. Louis | Compounds having rd targeting motifs |
US8019929B2 (en) * | 2006-09-13 | 2011-09-13 | Rohm Co., Ltd. | Data processing apparatus and data control circuit for use therein |
JP2008217855A (ja) | 2007-02-28 | 2008-09-18 | Fujitsu Ltd | 記憶装置用制御装置、記憶装置およびそのデータ記憶制御方法 |
TWI461909B (zh) * | 2007-08-31 | 2014-11-21 | Thomson Licensing | 大量儲存系統及在其中之資料轉移方法 |
JP2010003396A (ja) | 2008-05-19 | 2010-01-07 | Nec Electronics Corp | 半導体記憶装置及びそのデータ入出力方法 |
US8478924B2 (en) | 2009-04-24 | 2013-07-02 | Vmware, Inc. | Interrupt coalescing for outstanding input/output completions |
US8244946B2 (en) | 2009-10-16 | 2012-08-14 | Brocade Communications Systems, Inc. | Interrupt moderation |
US8812889B2 (en) | 2010-05-05 | 2014-08-19 | Broadcom Corporation | Memory power manager |
US8588228B1 (en) * | 2010-08-16 | 2013-11-19 | Pmc-Sierra Us, Inc. | Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner |
JP2013062683A (ja) * | 2011-09-13 | 2013-04-04 | Toshiba Corp | データ転送装置、データ送信システム、データ送信方法およびプログラム |
US10037272B2 (en) | 2012-08-08 | 2018-07-31 | Avalanche Technology, Inc. | Storage system employing MRAM and array of solid state disks with integrated switch |
EP3438839A1 (en) | 2011-09-30 | 2019-02-06 | Intel Corporation | Presentation of direct accessed storage under a logical drive model |
KR20130040486A (ko) | 2011-10-14 | 2013-04-24 | 삼성전자주식회사 | 저장 장치 및 그것을 이용하는 사용자 장치 |
US9274937B2 (en) * | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US9467512B2 (en) | 2012-01-17 | 2016-10-11 | Intel Corporation | Techniques for remote client access to a storage medium coupled with a server |
KR101888009B1 (ko) | 2012-02-28 | 2018-09-07 | 삼성전자주식회사 | 저장 장치 |
US20160232811A9 (en) * | 2012-06-14 | 2016-08-11 | Robert A. Connor | Eyewear System for Monitoring and Modifying Nutritional Intake |
KR20140034333A (ko) | 2012-08-16 | 2014-03-20 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 이를 포함하는 메모리 장치 |
KR102025263B1 (ko) | 2012-10-05 | 2019-09-25 | 삼성전자주식회사 | 메모리 시스템 및 그것의 읽기 교정 방법 |
US8959265B2 (en) * | 2012-11-21 | 2015-02-17 | Mellanox Technologies Ltd. | Reducing size of completion notifications |
US8966164B1 (en) * | 2013-09-27 | 2015-02-24 | Avalanche Technology, Inc. | Storage processor managing NVME logically addressed solid state disk array |
CN103248467B (zh) | 2013-05-14 | 2015-10-28 | 中国人民解放军国防科学技术大学 | 基于片内连接管理的rdma通信方法 |
US9317204B2 (en) * | 2013-11-14 | 2016-04-19 | Sandisk Technologies Inc. | System and method for I/O optimization in a multi-queued environment |
US20150261446A1 (en) * | 2014-03-12 | 2015-09-17 | Futurewei Technologies, Inc. | Ddr4-onfi ssd 1-to-n bus adaptation and expansion controller |
US20170228173A9 (en) * | 2014-05-02 | 2017-08-10 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
US9720860B2 (en) * | 2014-06-06 | 2017-08-01 | Toshiba Corporation | System and method for efficient processing of queued read commands in a memory system |
US20160124874A1 (en) * | 2014-10-30 | 2016-05-05 | Sandisk Technologies Inc. | Method and apparatus for interrupt coalescing |
US9378049B1 (en) * | 2015-02-12 | 2016-06-28 | Amazon Technologies, Inc. | Servicing I/O requests in an I/O adapter device |
-
2014
- 2014-11-12 KR KR1020140157400A patent/KR102238652B1/ko active IP Right Grant
-
2015
- 2015-10-02 US US14/873,665 patent/US10496281B2/en active Active
- 2015-11-10 CN CN201510763404.0A patent/CN105589661B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220130518A (ko) * | 2021-03-18 | 2022-09-27 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US11741039B2 (en) | 2021-03-18 | 2023-08-29 | SK Hynix Inc. | Peripheral component interconnect express device and method of operating the same |
US11841819B2 (en) | 2021-03-23 | 2023-12-12 | SK Hynix Inc. | Peripheral component interconnect express interface device and method of operating the same |
US12007918B2 (en) | 2021-03-23 | 2024-06-11 | SK Hynix Inc. | Peripheral component interconnect express interface device and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
CN105589661B (zh) | 2020-09-22 |
US10496281B2 (en) | 2019-12-03 |
KR20160056723A (ko) | 2016-05-20 |
US20160132237A1 (en) | 2016-05-12 |
CN105589661A (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102238652B1 (ko) | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 | |
US11550477B2 (en) | Processing host write transactions using a non-volatile memory express controller memory manager | |
US10303366B2 (en) | Data storage device that divides and processes a command and data processing system including the same | |
CN109947362B (zh) | 管理闪存存储器读取操作 | |
KR20160049200A (ko) | 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법 | |
US10146718B2 (en) | Mechanism to boot multiple hosts from a shared PCIe device | |
US10817440B2 (en) | Storage device including reconfigurable logic and method of operating the storage device | |
TW201131368A (en) | Command queue for peripheral component | |
KR20160060119A (ko) | 데이터를 저장하기 위한 방법 및 장치 | |
US9881680B2 (en) | Multi-host power controller (MHPC) of a flash-memory-based storage device | |
US20150347017A1 (en) | Command trapping in an input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
US20170031632A1 (en) | Data storage device, method of operating the same, and data processing system including the same | |
US20190026220A1 (en) | Storage device that stores latency information, processor and computing system | |
KR20130107070A (ko) | Ssd 콘트롤러 및 그의 제어 방법 | |
JP2017518574A5 (ko) | ||
US20190354483A1 (en) | Controller and memory system including the same | |
US9910771B2 (en) | Non-volatile memory interface | |
KR102634776B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TWI564809B (zh) | 單一中斷服務常式執行緒中處理關連於多個請求的返回實體的方法以及使用該方法的裝置 | |
US8745282B2 (en) | Concurrent response for device information during an initialization process for a storage device | |
US11822816B2 (en) | Networking device/storage device direct read/write system | |
KR20190033921A (ko) | 스토리지 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |