KR20190112446A - 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 - Google Patents
네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 Download PDFInfo
- Publication number
- KR20190112446A KR20190112446A KR1020180034453A KR20180034453A KR20190112446A KR 20190112446 A KR20190112446 A KR 20190112446A KR 1020180034453 A KR1020180034453 A KR 1020180034453A KR 20180034453 A KR20180034453 A KR 20180034453A KR 20190112446 A KR20190112446 A KR 20190112446A
- Authority
- KR
- South Korea
- Prior art keywords
- command
- data
- queue
- write
- nonvolatile memory
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0656—Data buffering arrangements
-
- 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]
-
- 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
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
Abstract
네트워크 페브릭에 연결되며, 복수의 불휘발성 메모리 장치들을 포함하는 스토리지 장치의 큐(Queue) 관리 방법은, 상기 네트워크 페브릭을 경유하여 호스트로부터 제공되는 쓰기 명령어 및 쓰기 데이터를 수신하는 단계, 상기 쓰기 명령어를 명령어 제출 큐에 기입하고, 상기 쓰기 데이터는 상기 명령어 제출 큐와는 별도로 관리되는 데이터 제출 큐에 기입하는 단계, 그리고 상기 명령어 제출 큐에 기입된 상기 쓰기 명령어를 실행하여 상기 데이터 제출 큐에 기입된 상기 쓰기 데이터를 상기 복수의 불휘발성 메모리 장치들 중 제 1 타깃 장치에 기입하는 단계를 포함한다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법에 관한 것이다.
플래시 메모리 기반의 대용량 스토리지 장치의 대표적인 예로 솔리드 스테이트 드라이브(이하, SSD)가 있다. SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 SATA, SAS, PCIe 기반의 NVMe가 활발히 연구 및 적용되고 있다.
최근에는 대용량 데이터 센터와 같은 시스템에서 확장의 용이성을 제공하기 위한 SSD 인터페이스들이 활발히 개발되고 있다. 특히, 이더넷 스위치와 같은 네트워크 페브릭(Network Fabric)에 SSD를 장착하기 위한 표준으로 NVMe-oF(NVMe over Fabrics)가 활발히 연구되고 있다. NVMe-oF는 광범위한 스토리지 네트워킹 페브릭들(예컨대, 이더넷(Ethernet), 파이버 채널(Fibre Channel), InfiniBand 등)을 통해 NVMe 스토리지 프로토콜을 지원한다.
NVMe-oF 스토리지 프로토콜에서도 결국에는 NVMe SSD를 사용한다. 따라서, NVMe SSD를 포함하는 스토리지에서 네트워크 페브릭에 연결된 적어도 하나 이상의 인터페이스 블록은 네트워크 페브릭의 프로토콜을 NVMe-oF 프로토콜로 변환하거나 버퍼의 기능만을 가진다. 하지만, 이 경우 복수의 프로토콜 계층에 대응하는 프로토콜 변환을 수행해야 하기 때문에 레이턴시 증가는 불가피하게 된다. 더불어, 각각의 프로토콜에 대응하는 하드웨어 인터페이스에서는 일관된 제출 큐(Submission Queue: 이하, SQ)와 완료 큐(Completion Queue: 이하, CQ) 구조가 유지되어야 한다. 따라서, NVMe-oF와 같은 네트워크 스토리지에서는 효율적인 큐(Queue) 관리가 어려운 실정이다.
본 발명의 목적은 네트워크 페브릭에 연결되는 스토리지 장치의 컨트롤러 구조를 간략화시키고 효율적으로 큐를 관리하는 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 네트워크 페브릭에 연결되며 복수의 불휘발성 메모리 장치들을 포함하는 스토리지 장치의 큐(Queue) 관리 방법은, 상기 네트워크 페브릭을 경유하여 호스트로부터 제공되는 쓰기 명령어 및 쓰기 데이터를 수신하는 단계, 상기 쓰기 명령어를 명령어 제출 큐에 기입하고, 상기 쓰기 데이터는 상기 명령어 제출 큐와는 별도로 관리되는 데이터 제출 큐에 기입하는 단계, 그리고 상기 명령어 제출 큐에 기입된 상기 쓰기 명령어를 실행하여 상기 데이터 제출 큐에 기입된 상기 쓰기 데이터를 상기 복수의 불휘발성 메모리 장치들 중 제 1 타깃 장치에 기입하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 스토리지 장치는, 복수의 불휘발성 메모리 장치, 그리고 상기 복수의 불휘발성 메모리 장치와 네트워크 페브릭 사이에서 인터페이싱을 제공하는 스토리지 컨트롤러를 포함하며, 상기 스토리지 컨트롤러는, 상기 네트워크 페브릭과의 인터페이싱을 제공하는 호스트 인터페이스, 단일 계층의 상기 큐가 형성되는 메모리, 그리고 상기 단일 계층의 상기 큐를 관리하고, 상기 복수의 불휘발성 메모리 장치들을 제어하는 스토리지 매니저를 포함하되, 상기 스토리지 매니저는 호스트로부터 제공되는 명령어 및 데이터를 관리하기 위한 단일 계층의 큐를 구성 및 관리하고, 상기 단일 계층의 상기 큐는, 상기 호스트로부터 제공되는 쓰기 명령어 또는 읽기 명령어를 기입하기 위한 명령어 제출 큐, 상기 명령어 제출 큐와는 분리되어 관리되며, 상기 쓰기 명령어와 함께 제공된 쓰기 데이터를 기입하기 위한 데이터 제출 큐, 그리고 상기 읽기 명령어에 응답하여 상기 복수의 불휘발성 메모리 장치들 중 적어도 하나로부터 출력되는 읽기 데이터가 기입되는 완료 큐를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 불휘발성 메모리 장치들과 네트워크 페브릭 사이에서 인터페이싱을 제공하는 네트워크 스토리지 컨트롤러는, 상기 네트워크 페브릭과의 인터페이싱을 제공하는 호스트 인터페이스, 상기 복수의 불휘발성 메모리 장치들을 제어하는 플래시 인터페이스, 호스트로부터 제공된 명령어 또는 데이터를 처리하기 위한 큐(Queue)가 구성되는 워킹 메모리, 그리고 호스트로부터 상기 네트워크 페브릭을 경유하여 제공되는 다중 프로토콜 포맷의 전송 프레임을 상기 명령어 또는 상기 데이터로 변환하는 스토리지 매니저 모듈을 실행하는 프로세서를 포함하되, 상기 대기열은 단일 프로토콜 계층에 대응하고, 명령어 제출 큐와 데이터 제출 큐가 분리된다.
이상과 같은 본 발명의 실시 예에 따르면, 네트워크 페브릭으로부터 제공되는 명령어/데이터의 프로토콜을 효율적으로 처리할 수 있는 스토리지 컨트롤러가 제공된다. 더불어, 간략화된 제출 큐(SQ)와 완료 큐(CQ)를 사용하여 동시 또는 연속적으로 입력되는 명령어들을 동시에 처리할 수 있는 큐 관리 방법이 제공된다. 이러한 구조를 통해서 네트워크 페브릭에 장착되는 스토리지 장치에서 발생하는 레이턴시를 획기적으로 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 네트워크 스토리지를 간략히 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러의 예시적인 구성을 간략히 보여주는 블록도이다.
도 3은 도 1에 도시된 불휘발성 메모리 장치들을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 큐 관리 방법을 간략히 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 큐 관리 방법을 보여주는 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 큐 관리 방법을 보여주는 순서도이다.
도 7은 도 6에서 설명된 동일한 아이디를 갖는 읽기 명령어와 쓰기 명령어를 수행하는 방법을 간략히 보여주는 도면이다.
도 8은 본 발명의 스토리지 컨트롤러에 의해서 처리되는 전송 프레임의 구조를 간략히 보여주는 도면이다.
도 9는 본 발명의 스토리지 컨트롤러의 특징을 보여주는 도면이다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템을 간략히 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러의 예시적인 구성을 간략히 보여주는 블록도이다.
도 3은 도 1에 도시된 불휘발성 메모리 장치들을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 큐 관리 방법을 간략히 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 큐 관리 방법을 보여주는 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 큐 관리 방법을 보여주는 순서도이다.
도 7은 도 6에서 설명된 동일한 아이디를 갖는 읽기 명령어와 쓰기 명령어를 수행하는 방법을 간략히 보여주는 도면이다.
도 8은 본 발명의 스토리지 컨트롤러에 의해서 처리되는 전송 프레임의 구조를 간략히 보여주는 도면이다.
도 9는 본 발명의 스토리지 컨트롤러의 특징을 보여주는 도면이다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 11은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템을 간략히 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이버(SSD)가 본 발명의 특징 및 기능을 설명하기 위한 스토리지 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 네트워크 스토리지를 간략히 보여주는 블록도이다. 도 1을 참조하면, 네트워크 스토리지는 호스트(100)와 스토리지 장치(200)를 포함한다. 호스트(100)는 스토리지 장치(200)에 이더넷 프로토콜의 명령어와 데이터를 전달한다. 그러면, 스토리지 장치(200)는 이더넷 프로토콜 포맷을 중간 단계의 변환없이 직접 플래시 메모리에 전달되는 명령어 및 데이터로 변환할 수 있다. 좀더 자세히 설명하면 다음과 같다.
호스트(100)는 스토리지 장치(200)에 데이터를 쓰거나, 스토리지 장치(200)에 저장된 데이터를 읽어낸다. 즉, 호스트(100)는 이더넷 프로토콜(Ethernet Protocol)을 사용하는 네트워크 페브릭이나 스위치, 또는 네트워크 페브릭에 연결되어 스토리지 장치(200)를 제어하는 서버(Server)일 수 있다. 호스트(100)는 스토리지 장치(200)에 명령어나 데이터를 전송할 때, NVMe-oF 스토리지 프로토콜을 포함하는 이더넷 프로토콜에 따라 전송할 것이다. 또한, 호스트(100)는 스토리지 장치(200)로부터 응답이나 데이터를 제공받을 때, 이더넷 프로토콜에 따라 제공받을 것이다.
스토리지 장치(200)는 호스트(100)로부터 제공되는 명령어(CMD)나 데이터에 응답하여 불휘발성 메모리 장치(230, 240, 250)에 접근하거나, 다양한 요청된 동작을 수행할 수 있다. 스토리지 장치(200)는 호스트(100)에서 제공되는 명령어나 데이터 포맷을 불휘발성 메모리 장치(230, 240, 250)를 제어하기 위한 명령어나 데이터 포맷으로 직접 변환할 수 있다. 이러한 기능을 수행하기 위해 스토리지 장치(200)는 스토리지 컨트롤러(210)를 포함한다. 스토리지 컨트롤러(210)에서는 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 계층에서 처리할 수 있다. 스토리지 컨트롤러(210)는 바람직하게는 싱글 칩으로 구현될 수 있다. 이러한 동작을 위해 스토리지 장치(200)는 스토리지 컨트롤러(210), 버퍼 메모리(220), 그리고 복수의 불휘발성 메모리 장치(230, 240, 250)를 포함할 수 있다.
스토리지 컨트롤러(210)는 호스트(100)와 스토리지 장치(200) 사이에서 인터페이싱을 제공한다. 스토리지 컨트롤러(210)는 호스트(100)에서 제공되는 이더넷 프로토콜 포맷(예를 들면, 패킷)의 명령어나 데이터를 불휘발성 메모리 장치(230, 240, 250)에 적용되는 명령어나 데이터 포맷으로 직접 변환할 수 있다. 스토리지 컨트롤러(210)에서는 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 계층에서 처리할 수 있다. 스토리지 컨트롤러(210)의 좀더 구체적인 동작은 후술하는 도면들에서 상세히 설명될 것이다.
상술한 설명에 따르면, 본 발명의 스토리지 장치(200)는 네트워크 프로토콜을 직접 불휘발성 메모리 장치로 변환할 수 있는 스토리지 컨트롤러(210)를 포함한다. 따라서, 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 불휘발성 메모리 장치(230, 240, 250)에 로드/스토어(Load/Store)할 수 있다. 이 경우, 동일한 ID의 불휘발성 메모리 장치를 타깃으로 하는 연속되는 접근 명령어들이 동시에 처리될 수 있다.
도 2는 도 1의 스토리지 컨트롤러의 예시적인 구성을 간략히 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 스토리지 컨트롤러(210)는 프로세서(211), 워킹 메모리(213), 호스트 인터페이스(215), 버퍼 매니저(217) 및 플래시 인터페이스(219)를 포함한다.
프로세서(211)는 불휘발성 메모리 장치들(230, 240, 250)에 대한 읽기/쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스(215) 및 플래시 인터페이스(219)의 레지스터들에 전달한다. 프로세서(211)는 스토리지 컨트롤러(210)의 다양한 제어 동작을 위해 제공되는 펌웨어 또는 운영체제(OS)에 따라 동작할 수 있다. 예를 들면, 프로세서(211)는 불휘발성 메모리 장치들(230, 240, 250)을 관리하기 위한 가비지 컬렉션(Garbage collection)이나, 주소 맵핑, 웨어 레벨링 등을 수행하기 위한 플래시 변환 계층(FTL)을 실행할 수 있다. 특히, 프로세서(211)는 워킹 메모리(213)에 로드되는 스토리지 매니저(212)를 호출하여 실행할 수 있다. 스토리지 매니저(212)의 실행에 따라, 프로세서(211)는 호스트(100, 또는 네트워크 페브릭)에서 제공되는 명령어나 데이터에 대해 이더넷 프로토콜, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 레이어(Layer)에서 처리할 수 있다. 더불어, 프로세서(211)는 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 불휘발성 메모리 장치(230, 240, 250)에 로드/스토어(Load/Store)할 수 있다.
워킹 메모리(213)는 프로세서(211)의 동작 메모리, 캐시 메모리 또는 버퍼 메모리로 사용될 수 있다. 워킹 메모리(213)는 프로세서(211)가 실행하는 코드들 및 명령들을 저장할 수 있다. 워킹 메모리(213)는 프로세서(211)에 의해 처리되는 데이터를 저장할 수 있다. 워킹 메모리(213)는 예시적으로 SRAM(Static RAM)으로 구현될 수 있다. 특히, 워킹 메모리(213)에는 스토리지 매니저(212)가 로드될 수 있다. 스토리지 매니저(212)는 프로세서(211)에 의해서 실행됨에 따라, 호스트(100)에서 제공되는 명령어나 데이터의 전송 포맷 변환을 단일 레이어에서 처리할 수 있다. 더불어, 스토리지 매니저(212)는 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리할 수 있다. 더불어, 워킹 메모리(213)에는 플래시 변환 계층(FTL)이나 다양한 메모리 관리 모듈이 저장될 수 있다. 또한, 명령어 제출 큐(CMD SQ)와 데이터 제출 큐(DATA SQ)가 분리되어 관리되는 큐(214)가 워킹 메모리(213) 상에서 구성될 수 있다.
스토리지 매니저(212)는 불휘발성 메모리 장치들(230, 240, 250)에 대한 제반 정보들을 수집하고 조정할 수 있다. 즉, 스토리지 매니저(212)는 불휘발성 메모리 장치들(230, 240, 250)에 저장되는 데이터의 상태나 맵핑 정보를 유지, 업데이트할 수 있다. 따라서, 네트워크 페브릭으로부터 접근 요청이 발생하더라도, 고속으로 요청한 데이터를 네트워크 페브릭에 제공하거나, 쓰기 요청된 데이터를 기입할 수 있다. 더불어, 데이터의 어드레스를 관리하기 위한 맵핑 테이블(Mapping table)에 대한 관리 권한을 가지기 때문에, 필요시 불휘발성 메모리 장치들(230, 240, 250) 간의 데이터 이동(Data migration)이나 맵핑 정보의 정정을 수행할 수 있다.
호스트 인터페이스(215)는 네트워크 페브릭과 같은 이더넷 기반의 스위치에 연결되는 호스트(100)와의 통신을 수행할 수 있다. 예를 들면, 호스트 인터페이스(215)는 파이버 채널(Fibre channel), 인피니밴드(InfiniBand) 등의 고속 이더넷 시스템과 스토리지 장치(200) 간의 인터페이싱을 제공한다. 호스트 인터페이스(215)는 네트워크 페브릭에 연결되기 위한 적어도 하나의 이더넷 포트를 포함할 수 있다.
버퍼 매니저(217)는 버퍼 메모리(220, 도 1 참조)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(217)는 쓰기 데이터(Write data)나 읽기 데이터(Read data)를 버퍼 메모리(220)에 일시 저장한다. 버퍼 매니저(217)는 프로세서(211)의 제어에 따라 버퍼 메모리(220)의 메모리 영역을 스트림 단위로 구분하여 관리할 수 있다.
플래시 인터페이스(219)는 불휘발성 메모리 장치들(230, 240, 250)과 데이터를 교환한다. 플래시 인터페이스(219)는 버퍼 메모리(220)로부터 전달되는 데이터를 각각의 메모리 채널들(CH1, CH2,…, CHn)을 경유하여 불휘발성 메모리 장치들(230, 240, 250)에 기입한다. 그리고 메모리 채널을 통하여 제공되는 불휘발성 메모리 장치들(230, 240, 250)로부터의 읽기 데이터(Read data)는 플래시 인터페이스(219)에 의해서 취합된다. 취합된 데이터는 이후 버퍼 메모리(220)에 저장될 것이다.
상술한 구조의 스토리지 컨트롤러(210)는 이더넷 포트를 통해서 호스트(100)와의 통신을 위한 네트워크 프로토콜을 직접 플래시 메모리 레벨의 명령어나 데이터 변환할 수 있다. 따라서, 네트워크 페브릭을 통해서 제공되는 명령어나 데이터는 이더넷 네트워크 인터페이스 카드(Ethernet NIC), TCP/IP 오프로드 엔진, PCIe 스위치와 같은 순차적인 복수 단계의 변환(Translation) 과정을 거치지 않아도 된다. 이러한 특징에 따라, 호스트(100)에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 불휘발성 메모리 장치들(230, 240, 250)에 로드/스토어(Load/Store)할 수 있다. 이 경우, 동일한 ID의 불휘발성 메모리 장치를 타깃으로 하는 연속되는 접근 명령어들이 동시에 처리될 수 있다.
특히, 스토리지 컨트롤러(210)는 싱글 칩으로 구현 가능하다. 싱글 칩으로 구현되는 스토리지 컨트롤러(210)에 의해서, 본 발명의 스토리지 장치(200)는 경박단소화된 사이즈로 제공될 수 있다. 따라서, 본 발명의 스토리지 장치(200)는 네트워크 페브릭 상에서 낮은 레이턴시, 경제성, 그리고 높은 확장성을 제공할 수 있다.
도 3은 도 1에 도시된 불휘발성 메모리 장치들을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치들(230, 240, 250)은 스토리지 컨트롤러(210)에 직접 연결되어 데이터를 교환할 수 있다.
예시적으로, 불휘발성 메모리 장치들(230, 240, 250)은 채널 단위로 구분될 수 있다. 예를 들면, 하나의 채널은 동일한 데이터 라인(DQ)을 공유하는 불휘발성 메모리 장치들과 스토리지 컨트롤러(210) 사이의 데이터 경로일 수 있다. 즉, 제 1 채널(CH1)에 연결되는 불휘발성 메모리 장치들(NVM_11, NVM_12, NVM_13, NVM_14)은 동일한 데이터 라인을 공유할 수 있다. 그리고 제 2 채널(CH2)에 연결되는 불휘발성 메모리 장치들(NVM_21, NVM_22, NVM_23, NVM_24)은 동일한 데이터 라인을 공유할 수 있다. 제 n 채널(CHn)에 연결되는 불휘발성 메모리 장치들(NVM_n1, NVM_n2, NVM_n3, NVM_n4)도 동일한 데이터 라인을 공유할 수 있다.
하지만, 불휘발성 메모리 장치들(230, 240, 250)과 플래시 인터페이스(219)와의 연결 방법은 상술한 채널 공유 방식에만 국한되지 않는다. 플래시 메모리 장치를 직접 확장 연결할 수 있는 플래시 스위치를 사용하여 캐스케이드 방식으로도 불휘발성 메모리 장치들이 플래시 인터페이스(219)에 연결될 수 있을 것이다.
도 4는 본 발명의 큐 관리 방법을 간략히 보여주는 도면이다. 도 4를 참조하면, 본 발명의 스토리지 컨트롤러(210)는 제출 큐(Submission Queue: 이하, SQ)와 완료 큐(Completion Queue: 이하, CQ)를 사용하여 명령어와 데이터를 관리할 수 있다. 특히, 본 발명의 제출 큐(SQ)는 명령어 제출 큐(CMD SQ)와 데이터 제출 큐(DATA SQ)로 분리되어 관리될 수 있다. 따라서, 스토리지 컨트롤러(210)는 네트워크 페브릭을 통해서 연속적으로 제공되는 명령어들을 지연없이 처리할 수 있다. 이러한 제출 큐(SQ)의 분리는 스토리지 컨트롤러(210)에서 수행되는 변환 연산의 단계 축소에 따라서 가능하게 된다.
네트워크 페브릭(100)으로부터 스토리지 컨트롤러(210)에 쓰기 명령어(WCMD) 및 쓰기 데이터가 전달될 것이다. 더불어, 읽기 명령어(WCMD)도 전달되는 것으로 가정하기로 한다. 그러면, 스토리지 컨트롤러(210)는 이더넷 프로토콜, NVMe-oF 프로토콜, PCIe 프로토콜의 변환 과정을 생략하고 전송 프레임의 페이로드(Payload)에 대응하는 명령어와 데이터를 불휘발성 메모리 장치(230)에서 인식할 수 있는 명령어와 데이터로 직접 변환할 수 있다.
이어서, 스토리지 컨트롤러(210)는 변환된 쓰기 명령어(WCMD)와 쓰기 데이터(WDATA)를 분리한다. 스토리지 컨트롤러(210)는 분리된 쓰기 명령어(WCMD)를 명령어 제출 큐(214a)에 기입하여 관리한다. 스토리지 컨트롤러(210)는 분리된 쓰기 데이터(WDATA)를 데이터 제출 큐(214b)에 기입하여 관리한다. 더불어, 쓰기 데이터(WDATA)와 함께 입력된 읽기 명령어(RCMD)도 명령어 제출 큐(214a)에 기입될 것이다.
명령어 제출 큐(214a)에 기입된 쓰기 명령어(WCMD)의 실행에 따라, 데이터 제출 큐(214b)에 기입된 쓰기 데이터(WDATA)가 스토리지 컨트롤러(210)에서 선택된 불휘발성 메모리 장치들(230) 중 어느 하나에 프로그램될 것이다. 즉, 쓰기 명령어(WCMD)에 의해서 쓰기 요청된 쓰기 데이터(WDATA)는 데이터 제출 큐(214b)를 경유하여 불휘발성 메모리 장치(230)의 제 1 타깃 디바이스(231)에 기입될 수 있다.
동시에, 명령어 제출 큐(214a)에 기입된 읽기 명령어(RCMD)의 실행에 따라, 스토리지 매니저(212)는 접근 요청된 제 2 타깃 디바이스(232)로부터 읽기 데이터(RDATA)를 독출하도록 플래시 인터페이스(219)를 제어할 것이다. 그러면, 플래시 인터페이스(219)는 선택된 제 2 타깃 디바이스(232)에 저장된 읽기 데이터(RDATA)를 센싱하여 스토리지 컨트롤러(210)로 출력하도록 제 2 타깃 디바이스(232)를 제어할 것이다. 제 2 타깃 디바이스(232)로부터 출력되는 읽기 데이터(RDATA)는 완료 큐(214c)에 기입된다. 이후, 완료 큐(214c)에 저장된 읽기 데이터(RDATA)는 읽기 명령어(RCMD)와 동일한 다중 프로토콜의 전송 프레임으로 변환되어 호스트(100)로 전송될 것이다.
여기서, 명령어 제출 큐(214a), 데이터 제출 큐(214b), 완료 큐(CQ)는 도 2의 워킹 메모리(213)의 특정 영역에서 구성될 수 있음이 설명되었다. 하지만, 이들 명령어 제출 큐(214a), 데이터 제출 큐(214b), 그리고 완료 큐(CQ)는 필요시 버퍼 메모리(220)나, 다양한 메모리 상에서도 구현될 수 있음은 잘 이해될 것이다.
이상에서 설명된 바에 따르면, 본 발명의 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(230, 240, 250)에 데이터를 기입할 때, 명령어 엔트리가 기입되는 명령어 제출 큐(CMD SQ)와 데이터가 기입되는 데이터 제출 큐(DATA SQ)가 분리되어 관리된다. 따라서, 동일한 아이디(ID)를 갖는 타깃 디바이스에 쓰기와 읽기가 동시에 요청되더라도 쓰기 명령어와 읽기 명령어를 명령어 제출 큐(214a)에서 연속적으로 패치하여 실행할 수 있다. 따라서, 연속된 쓰기 명령어와 읽기 명령어를 지연없이 신속하게 처리할 수 있다.
도 5는 본 발명의 실시 예에 따른 큐 관리 방법을 예시적으로 보여주는 순서도이다. 도 5를 참조하면, 스토리지 장치(200)는 호스트(100)로부터 읽기 명령어 또는 쓰기 명령어를 수신하면, 명령어 엔트리와 데이터 엔트리를 분리하여 관리한다.
S110 단계에서, 스토리지 장치(200)는 호스트(100)로부터의 명령어를 수신한다. 네트워크 페브릭을 통해서 호스트(100)로부터 수신한 명령어는 다중 프로토콜에 대응하는 프로토콜 필드들을 포함한다. 이들 다중 프로토콜 필드들 중에서 이더넷 프로토콜에 관련된 필드는 데이터의 수신이나 송신을 위해서 변환(Translation) 연산을 통해서 처리될 것이다. 그러나 실질적으로 스토리지 컨트롤러(210) 내에 하드웨어로 포함되지 않는 NVMe-oF 프로토콜, PCIe 프로토콜에 대응하는 필드들은 별도의 변환 과정없이 제거할 수 있다. 그러면, 실질적으로 명령어 또는 데이터 필드만 남게 된다.
S120 단계에서, 스토리지 컨트롤러(210)는 명령어 타입을 검출한다. 스토리지 컨트롤러(210)는 명령어 타입에 따라 동반되는 데이터의 처리를 다른 방식으로 관리한다. 즉, 검출된 명령어 타입이 읽기 명령어(RCMD)에 대응하면, 절차는 S130 단계로 이동한다. 반면, 검출된 명령어 타입이 쓰기 명령어(WCMD)에 대응하면, 절차는 S140 단계로 이동할 것이다.
S130 단계에서, 스토리지 컨트롤러(210)는 읽기 명령어 엔트리를 명령어 제출 큐(CMD SQ)에 기입할 것이다.
S132 단계에서, 스토리지 컨트롤러(210)는 명령어 제출 큐(CMD SQ)에 기입된 명령어 엔트리를 참조하여 읽기 명령어를 실행할 것이다. 즉, 스토리지 컨트롤러(210)는 읽기 명령어에 포함된 어드레스를 참조하여 제 2 타깃 디바이스(232)에 접근할 것이다. 그리고 스토리지 컨트롤러(210)는 읽기 요청된 읽기 데이터(RDATA)를 제 2 타깃 디바이스(232)로부터 제공받을 것이다.
S134 단계에서, 스토리지 컨트롤러(210)는 제 2 타깃 디바이스(232)로부터 출력된 읽기 데이터(RDATA)를 완료 큐(CQ)에 기입한다.
S136 단계에서, 스토리지 컨트롤러(210)는 완료 큐(CQ)에 기입된 읽기 데이터(RDATA)를 네트워크 페브릭을 통해서 호스트(100)로 전달할 수 있다. 이때, 스토리지 컨트롤러(210)는 이전에 제거된 프로토콜 필드들과 이더넷 프로토콜 필드를 읽기 데이터에 추가하여 전송 프레임을 구성한다. 그리고 스토리지 컨트롤러(210)는 구성이 완료된 전송 프레임을 네트워크 페브릭을 경유하여 호스트(100)로 전송할 것이다.
S140 단계에서, 스토리지 컨트롤러(210)는 쓰기 명령어(WCMD)와 쓰기 데이터(WDATA)를 분리한다. 스토리지 컨트롤러(210)는 분리된 쓰기 명령어(WCMD)를 명령어 제출 큐(CMD SQ)에 기입한다. 스토리지 컨트롤러(210)는 분리된 쓰기 데이터(WDATA)를 데이터 제출 큐(DATA SQ)에 기입한다.
S145 단계에서, 스토리지 컨트롤러(210)는 명령어 제출 큐(CMD SQ)에 기입된 쓰기 명령어(WCMD)를 실행한다. 쓰기 명령어(WCMD)가 실행되면, 데이터 제출 큐(DATA SQ)에 기입된 쓰기 데이터(WDATA)는 스토리지 컨트롤러(210)에서 선택된 불휘발성 메모리 장치들(230) 중 어느 하나에 프로그램될 것이다. 즉, 쓰기 명령어(WCMD)에 의해서 쓰기 요청된 쓰기 데이터(WDATA)는 데이터 제출 큐(DATA SQ)를 경유하여 불휘발성 메모리 장치(230)의 제 1 타깃 디바이스(231)에 기입될 수 있다.
이상에서는, 본 발명의 큐 관리 방법이 간략하게 설명되었다. 본 발명의 스토리지 컨트롤러(210)는 제출 큐(SQ)를 명령어 엔트리를 기입하기 위한 명령어 제출 큐(CMD SQ)와 쓰기 데이터를 기입하기 위한 데이터 제출 큐(DATA SQ)를 별도로 관리할 수 있다. 명령어 제출 큐(CMD SQ)에 연속된 명령어들이 순차적으로 공급됨에 따라 연속된 읽기 명령어 및 쓰기 명령어가 레이턴시 없이 실행될 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 큐 관리 방법을 예시적으로 보여주는 순서도이다. 도 6을 참조하면, 스토리지 장치(200)는 호스트(100)로부터 동일한 아이디(ID)의 불휘발성 메모리 장치를 타깃으로 하는 읽기 명령어와 쓰기 명령어를 연속하여 수신하더라도, 레이턴시 없이 읽기 명령어와 쓰기 명령어를 처리할 수 있다.
S210 단계에서, 스토리지 컨트롤러(210)는 호스트(100)로부터의 명령어를 수신한다. 네트워크 페브릭을 경유하여 호스트(100)로부터 수신한 명령어의 다중 프로토콜 필드들을 제거하면, 명령어와 데이터가 추출될 수 있다.
S220 단계에서, 스토리지 컨트롤러(210)는 명령어 제출 큐(CMD SQ)에 연속적으로 입력되는 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)들이 존재하는지 검출한다. 연속적으로 입력되는 명령어들의 존재는 명령어 제출 큐(CMD SQ)에 연속된 명령어 엔트리들을 검출하는 것으로 구현될 수 있다. 만일, 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)가 검출되면(Yes 방향), 절차는 S230 단계로 이동한다. 반면, 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)가 검출되지 않으면(No 방향), 절차는 S260 단계로 이동한다.
S230 단계에서, 스토리지 컨트롤러(210)는 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)가 동일한 아이디(ID)를 갖는지 검출한다. 즉, 스토리지 컨트롤러(210)는 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)가 각각 접근 요청하는 타깃 디바이스가 동일한지를 판단한다. 만일, 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)가 동일한 타깃 디바이스 값을 갖는 경우(Yes 방향), 절차는 S240 단계로 이동한다. 반면, 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)가 서로 다른 타깃 디바이스 값을 갖는 경우(No 방향), 절차는 S260 단계로 이동한다.
S240 단계에서, 스토리지 컨트롤러(210)는 쓰기 명령어(WCMD)의 실행을 위해 쓰기 데이터(WDATA)를 예비 영역(Reserved area)에 기입한다. 이때, 스토리지 컨트롤러(210)는 예비 영역(Reserved area)의 어드레스 맵핑 정보를 보관한다. 그리고 읽기 명령어(RCMD)의 실행에 따라, 읽기 데이터(RDATA)를 타깃 디바이스로부터 읽어온다. 이상의 동작을 통해서 스토리지 컨트롤러(210)는 연속된 읽기 명령어(RCMD) 및 쓰기 명령어(WCMD)를 레이턴시 없이 실행하게 된다.
S250 단계에서, 스토리지 컨트롤러(210)는 예비 영역(Reserved area)에 기입된 쓰기 데이터(WDATA)를 타깃 디바이스에 프로그램할 것이다. 이러한 타깃 디바이스로의 프로그램은 백그라운드 동작으로 수행될 수 있다. 또는, 스토리지 컨트롤러(210)는 예비 영역의 어드레스가 타깃 디바이스의 어드레스로 보이도록 예비 영역(Reserved area)의 어드레스 맵핑 정보를 정정할 수도 있을 것이다.
S260 단계에서, 스토리지 컨트롤러(210)는 명령어 제출 큐(CMD SQ)에 기입된 명령어들을 각각 실행할 것이다. 읽기 명령어(RCMD)들이 각각 연속적으로 제공되는 경우나, 쓰기 명령어(WCMD)가 연속되는 경우, 이들 명령어들은 동일한 ID를 갖지 않는 경우에는 동시에 실행될 수도 있을 것이다.
이상에서 설명된 본 발명의 불휘발성 메모리 장치로의 접근 방법에 따르면, 동일한 아이디를 갖는 경우에도 분리된 제출 큐를 사용하여 동시에 읽기와 쓰기 동작을 수행할 수 있다. 본 발명의 스토리지 컨트롤러(210)는 네트워크 페브릭으로부터 제공되는 어드레스와 불휘발성 메모리 장치(230, 240. 250)의 어드레스의 맵핑을 자유롭게 조정하고 관리할 수 있기 때문이다.
도 7은 도 6에서 설명된 동일한 아이디를 갖는 읽기 명령어와 쓰기 명령어를 수행하는 방법을 간략히 보여주는 도면이다. 도 7을 참조하면, 스토리지 컨트롤러(210)는 동일한 타깃 아이디를 갖는 쓰기 명령어(WCMD)와 읽기 명령어(RCMD)라 하더라도 예비 불휘발성 메모리 장치(233)를 사용하여 동시에 처리할 수 있다.
먼저, 스토리지 컨트롤러(210)는 읽기 명령어(RCMD)를 실행하여 타깃 디바이스(231)로부터 읽기 데이터(RDATA)를 독출한다. 독출된 읽기 데이터(RDATA)는 완료 큐(214c)에 기입된다. 이러한 절차는 식별번호 ①로 표시되어 있다. 또한, 스토리지 컨트롤러(210)는 쓰기 명령어(WCMD)를 실행하여 예비 디바이스(233)에 쓰기 데이터(WDATA)를 기입할 수 있다. 이러한 절차는 식별번호 ②로 표시되어 있다. 여기서, 식별번호 ① 및 식별번호 ②로 표시된 타깃 디바이스(231)에 대한 읽기 동작과 예비 디바이스(233)로의 쓰기 동작은 동시에 발생할 수도 있음은 잘 이해될 것이다.
타깃 디바이스(231)에 대한 읽기 동작과 예비 디바이스(233)로의 쓰기 동작이 완료되면, 스토리지 컨트롤러(210)는 예비 디바이스(233)에 저장된 쓰기 데이터(WDATA)를 타깃 디바이스(231)로 이동(Migration)시킨다. 이러한 쓰기 데이터(WDATA)의 이동은 식별번호 ③으로 표시되어 있다. 쓰기 데이터(WDATA)의 예비 디바이스(233)로부터 타깃 디바이스(231)로의 이동(Migration)은 명령어 제출 큐(214a)에 명령어 엔트리들이 비어 있는 타임에 실행될 수 있을 것이다.
이상에서는 본 발명의 스토리지 장치(200)에서 동일한 타깃 아이디를 갖는 쓰기 명령어(CMD)와 읽기 명령어(RCMD)를 실행하는 경우에 지연없이 처리 가능함이 설명되었다. 여기서, 쓰기 데이터(WDATA)의 이동(Migration) 방식을 사용하여 본 발명의 특징이 설명되었으나, 본 발명은 여기의 설명에만 국한되지 않는다. 다양한 맵핑의 조정을 통해서 쓰기 데이터(WDATA)의 이동없이도 데이터의 이동과 동일한 효과를 구현할 수 있음은 잘 이해될 것이다.
도 8은 본 발명의 스토리지 컨트롤러에 의해서 처리되는 전송 프레임의 구조를 간략히 보여주는 도면이다. 도 8을 참조하면, 호스트(100, 또는 네트워크 페브릭)로부터 제공되는 프레임(또는 패킷)은 다중의 프로토콜들에 대응하는 헤더 또는 필드들을 포함할 수 있다.
호스트(100)에서 본 발명의 스토리지 장치(200)에 전달되는 전송 프레임에는 이더넷 필드(310), TCP 또는 UDP 필드(320), 인터넷 프로토콜(IP) 필드(330), NVMe-oF 필드(340), NVMe 필드(350), 그리고 명령어/데이터 필드(360)를 포함할 수 있다. 본 발명의 다중 프로토콜을 지원하는 스토리지 장치(200)는 각 프로토콜의 변환 단계들에서의 제출 큐(SQ)/완료 큐(CQ)의 구비없이 이더넷 프로토콜을 불휘발성 메모리 장치의 인터페이스 포맷으로 직접 변환시킬 수 있다.
예를 들면, 호스트(100)에서 다중 프로토콜에 대응하는 전송 프레임이 본 발명의 스토리지 장치(200)에 전달될 수 있다. 본 발명의 스토리지 컨트롤러(210)는 이더넷 필드(310) 및 TCP 또는 UDP 필드(320)를 사용하여 전송 프레임 또는 패킷을 수신한다. 이더넷 필드(310)는 기본적으로 MAC 어드레스와 이더넷 종류를 정의한다. 그리고 TCP 또는 UDP 필드(320)는 전송 프레임의 목적 포트 넘버(Destination Port Number)를 포함하고 있다. 스토리지 컨트롤러(210)는 이더넷 필드(310) 및 TCP 또는 UDP 필드(320)를 사용하여 이더넷 타입이나 네트워크상에서의 송신 및 수신 포트의 위치를 인지할 수 있다.
반면, 스토리지 장치(200)는 NVMe-oF 스토리지를 위하여 구비된 인터넷 프로토콜(IP) 필드(330), NVMe-oF 필드(340), NVMe 필드(350)에 대해서는 별도의 프로토콜 변환을 수행하지 않을 것이다. 이들 필드들은 전송 프레임을 다중의 프로토콜에 대해서 인식하기 위해 제공되는 값들이다. 본 발명의 스토리지 장치(200)는 네트워크 인터페이스 카드(NIC)나 NVMe 프로토콜을 처리하기 위한 하드웨어 인터페이스를 갖지 않는다. 즉, 이더넷 계층에서 수신된 데이터를 플래시 인터페이스로 직접 전달하기 때문에 다중 프로토콜들 각각에 대응하는 큐를 구비할 필요가 없다.
본 발명의 스토리지 컨트롤러(210)는 인터넷 프로토콜(IP) 필드(330), NVMe-oF 필드(340), NVMe 필드(350)에 대한 프로토콜 변환없이 명령어/데이터 필드(360)를 복원할 수 있다. 프로토콜의 변환 동작의 생략(Skip)은 본 발명의 스토리지 매니저(212, 도 2 참조)의 기능에 의해서 가능하다.
도 9는 본 발명의 스토리지 컨트롤러의 특징을 예시적으로 보여주는 도면이다. 도 9를 참조하면, 스토리지 컨트롤러(210)는 호스트(100)에서 전달되는 전송 포맷으로부터 명령어나 데이터만을 추출하여 불휘발성 메모리 장치(230)를 직접 제어할 수 있다. 본 발명의 스토리지 컨트롤러(210)는 순차적으로 변환되어야 하는 프로토콜의 제약을 받지 않는다. 따라서, 각 프로토콜 계층에서 구성 및 수행되어야 하는 큐 관리를 단일 계층에서 수행할 수 있다. 더불어, 단일 계층에서 구성 및 수행 가능한 큐 관리로 인해서, 명령어 제출 큐와 데이터 제출 큐의 분리가 가능하다.
호스트(100)는 네트워크 페브릭을 통해서 불휘발성 메모리 장치(230)에 접근하기 위해 복수의 프로토콜 계층에 대응하는 필드(또는 헤더)를 갖는 명령어나 데이터를 스토리지 컨트롤러(210)에 전달할 것이다. 이때, 복수의 프로토콜에는 예를 들면, 이더넷 프로토콜, NVMe-oF 프로토콜, NVMe 프로토콜이 포함되는 것으로 가정하기로 한다. 그러면, 호스트(100)에서 스토리지 컨트롤러(210)에 전달되는 전송 프레임(302)은 이더넷 필드(E), TCP 필드(TCP), 인터넷 프로토콜 필드(IP), NVMe-oF 필드(NVMe-oF), NVMe 필드(NVMe), 그리고 명령어/데이터 필드(CMD/WDATA)를 포함할 수 있다.
스토리지 컨트롤러(210)는 인터넷 프로토콜 필드(IP), NVMe-oF 필드(NVMe-oF), NVMe 필드(NVMe)에 대한 변환없이, 명령어/데이터 필드(CMD/WDATA) 만을 사용하여 불휘발성 메모리 장치(230)에 접근할 수 있다. 스토리지 컨트롤러(210)는 불휘발성 메모리 장치(230)의 어드레스와 호스트(100)로부터 제공된 이더넷 상에서의 어드레스에 대한 제반 맵핑 정보를 생성, 유지, 업데이트할 수 있다.
명령어/데이터 필드(CMD/WDATA)를 사용하여 플래시 인터페이스(219, 도 2 참조)는 불휘발성 메모리 장치(230)에 읽기 명령어를 전달하거나, 쓰기 데이터(WDATA)를 프로그램할 수 있다. 이러한 과정은 쓰기/읽기(305)로 나타내었다.
만일, 불휘발성 메모리 장치(230)에 전달된 명령어가 읽기 명령어인 경우, 불휘발성 메모리 장치(230)는 요청된 읽기 데이터(RDATA, 306)를 스토리지 컨트롤러(210)에 출력할 것이다. 그러면, 스토리지 컨트롤러(210)는 읽기 데이터(306)를 완료 큐(CQ)에 기입한다. 이후, 완료 큐에 기입된 읽기 데이터(RDATA)는 네트워크에서의 전송 프레임(308)으로 변환되어 호스트(100)로 전송될 것이다.
이상에서는 본 발명의 스토리지 장치(200)에서 복수의 프로토콜 변환 연산을 스킵하는 인터페이싱 동작이 설명되었다. 본 발명의 스토리지 장치(200)는 이러한 복수의 프로토콜 변환 연산을 스킵할 수 있어 레이턴시를 최소화할 수 있다.
도 10은 본 발명의 다른 실시 예에 따른 스토리지 장치를 보여주는 블록도이다. 도 10을 참조하면, 스토리지 장치(400)는 스토리지 컨트롤러(410) 및 복수의 불휘발성 메모리 장치들(430, 440, 450)을 포함한다.
스토리지 장치(400)는 네트워크 페브릭(Network fabric)을 경유하여 제공되는 명령어(CMD)나 데이터에 응답하여 불휘발성 메모리 장치들(430, 440, 450)에 접근하거나, 다양한 요청된 동작을 수행할 수 있다. 스토리지 장치(400)는 네트워크 페브릭(Network fabric)을 통하여 제공되는 명령어나 데이터 포맷을 불휘발성 메모리 장치들(430, 440, 450)을 제어하기 위한 명령어나 데이터 포맷으로 직접 변환할 수 있다. 이러한 기능을 수행하기 위해 스토리지 장치(400)는 스토리지 컨트롤러(410)를 포함한다. 스토리지 컨트롤러(410)에서는 이더넷, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 레이어에서 처리할 수 있다. 스토리지 컨트롤러(410)는 바람직하게는 싱글 칩(Single chip)으로 구현될 수 있다.
스토리지 컨트롤러(410)는 네트워크 페브릭(Network fabric)과 스토리지 장치(400) 사이에서 인터페이싱을 제공한다. 스토리지 컨트롤러(410)는 네트워크 페브릭(Network fabric)에서 제공되는 이더넷 프로토콜의 명령어나 데이터 포맷을 불휘발성 메모리 장치들(430, 440, 450)에 적용되는 명령어나 데이터 포맷으로 직접 변환할 수 있다. 스토리지 컨트롤러(410)에서는 이더넷, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 전송 포맷들을 단일 레이어에서 처리할 수 있다.
스토리지 컨트롤러(410)는 스토리지 매니저(412), 호스트 인터페이스(414), 그리고 큐(Queue)를 구성하기 위한 메모리(416)를 포함한다. 호스트 인터페이스(414)는 도 2에 도시된 호스트 인터페이스(215)와 실질적으로 동일하게 구성될 수 있다. 즉, 호스트 인터페이스(414)는 네트워크 페브릭과의 통신을 수행할 수 있다. 예를 들면, 호스트 인터페이스(414)는 파이버 채널(Fibre channel), 인피니밴드(InfiniBand) 등의 고속 이더넷 시스템과 스토리지 장치(400) 간의 인터페이싱을 제공한다. 호스트 인터페이스(414)는 네트워크 페브릭에 연결되기 위한 적어도 하나의 이더넷 포트를 포함할 수 있다.
메모리(416)는 명령어 제출 큐(411), 데이터 제출 큐(413), 그리고 완료 큐(415)를 구성하기 위해서 제공된다. 즉, 메모리(416) 상에서 명령어 제출 큐(411)와 데이터 제출 큐(413)가 분리되어 관리됨에 따라 효율적인 관리가 가능하다.
스토리지 매니저(412)는 호스트 인터페이스(414), 메모리(416), 그리고 불휘발성 메모리 장치들(430, 440, 450)을 관리할 수 있다. 스토리지 매니저(412)는 네트워크 페브릭으로부터 제공된 명령어나 데이터에 대해 이더넷, NVMe-oF 프로토콜, 그리고 NVMe 프로토콜을 지원하기 위한 다중의 전송 포맷들을 단일 레이어에서 처리할 수 있다. 더불어, 스토리지 매니저(412)는 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 불휘발성 메모리 장치들(430, 440, 450)에 로드/스토어(Load/Store)할 수 있다.
더불어, 스토리지 매니저(412)는 불휘발성 메모리 장치들(430, 440, 450)을 관리하기 위한 가비지 컬렉션(Garbage collection)이나, 주소 맵핑, 웨어 레벨링 등을 수행하기 위한 플래시 변환 계층(FTL)을 포함할 수 있다. 특히, 스토리지 매니저(412)는 스토리지 매니저(412)는 불휘발성 메모리 장치들(430, 440, 450)에 대한 제반 정보들을 수집하고 조정할 수 있다. 즉, 스토리지 매니저(412)는 불휘발성 메모리 장치들(430, 440, 450)에 저장되는 데이터의 상태나 맵핑 정보를 유지, 업데이트할 수 있다. 따라서, 네트워크 페브릭으로부터 접근 요청이 발생하더라도, 고속으로 요청한 데이터를 네트워크 페브릭에 제공하거나, 쓰기 요청된 데이터를 기입할 수 있다. 더불어, 스토리지 매니저(412)는 데이터의 맵핑 테이블에 대한 관리 권한을 가지기 때문에, 필요시 불휘발성 메모리 장치들(430, 440, 450) 간의 데이터 이동(Migration)이나 맵핑 정보의 정정을 수행할 수 있다.
상술한 구조의 스토리지 컨트롤러(410)는 이더넷 포트에 연결되어, 네트워크 프로토콜을 직접 플래시 메모리 레벨의 명령어나 데이터 변환할 수 있다. 따라서, 이더넷 페브릭에서 제공되는 명령어나 데이터는 이더넷 네트워크 인터페이스 카드(Ethernet NIC), TCP/IP 오프로드 엔진, PCIe 스위치와 같은 순차적으로 진행되는 복수 단계의 변환(Translation) 과정이 생략될 수 있다. 이러한 특징에 따라, 네트워크 페브릭에서 전송되는 명령어나 데이터를 명령어 경로와 데이터 경로를 분리하여 처리하여 불휘발성 메모리 장치들(430, 440, 450)에 로드/스토어(Load/Store)할 수 있다. 이 경우, 동일한 ID의 불휘발성 메모리 장치를 타깃으로 하는 연속되는 접근 명령어들을 동시에 처리할 수 있다.
특히, 스토리지 컨트롤러(410)는 하나의 싱글 칩으로 구현 가능하다. 싱글 칩으로 구현되는 스토리지 컨트롤러(410)에 의해서, 본 발명의 스토리지 장치(400)는 경박단소화된 사이즈로 제공될 수 있다.
도 11은 본 발명의 실시 예에 따른 네트워크 스토리지 시스템을 간략히 보여주는 블록도이다. 도 11을 참조하면, 본 발명의 네트워크 스토리지 시스템(1000)은 서버(1100), 네트워크 페브릭(1200), 그리고 복수의 이더넷 SSD들(1300, 1400, 1500)을 포함할 수 있다.
서버(1100)는 네트워크 페브릭(1200)을 통해서 복수의 이더넷 SSD들(1300, 1400, 1500)과 연결된다. 서버(1100)는 복수의 이더넷 SSD(1300, 1400, 1500)에 명령어와 데이터를 이더넷 프로토콜을 사용하여 전송할 수 있다. 그리고 서버(1100)는 복수의 이더넷 SSD들(1300, 1400, 1500) 중 적어도 하나로부터 제공되는 이더넷 프로토콜의 데이터를 수신할 수 있다. 네트워크 페브릭(1200)은 네트워크 스위치나 또는 PCIe 스위치일 수 있다.
복수의 이더넷 SSD(1300, 1400, 1500) 각각은 앞서 설명된 도 1 또는 도 10의 스토리지 장치로 제공될 수 있다. 즉, 복수의 이더넷 SSD(1300, 1400, 1500)에 포함되는 이더넷 SSD 컨트롤러들(1310, 1410, 1510)은 단일 계층의 큐를 구성하여 불휘발성 메모리 장치들(1320, 1420, 1520)을 제어할 수 있다. 단일 계층의 큐는 명령어 제출 큐(CMD SQ), 데이터 제출 큐(DATA SQ), 그리고 완료 큐(CQ)가 개별적으로 분리되어 구성된다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (10)
- 네트워크 페브릭에 연결되며, 복수의 불휘발성 메모리 장치들을 포함하는 스토리지 장치의 큐(Queue) 관리 방법에 있어서:
상기 네트워크 페브릭을 경유하여 호스트로부터 제공되는 쓰기 명령어 및 쓰기 데이터를 수신하는 단계;
상기 쓰기 명령어를 명령어 제출 큐에 기입하고, 상기 쓰기 데이터는 상기 명령어 제출 큐와는 별도로 관리되는 데이터 제출 큐에 기입하는 단계; 그리고
상기 명령어 제출 큐에 기입된 상기 쓰기 명령어를 실행하여 상기 데이터 제출 큐에 기입된 상기 쓰기 데이터를 상기 복수의 불휘발성 메모리 장치들 중 제 1 타깃 장치에 기입하는 단계를 포함하는 큐 관리 방법. - 제 1 항에 있어서,
상기 쓰기 명령어에 연속되는 읽기 명령어를 수신하는 단계; 그리고
수신된 상기 읽기 명령어를 상기 명령어 제출 큐에 기입하는 단계를 더 포함하는 큐 관리 방법. - 제 2 항에 있어서,
상기 읽기 명령어에 응답하여 상기 복수의 불휘발성 메모리 장치들 중 제 2 타깃 장치에 접근하여 읽기 데이터를 독출하는 단계를 더 포함하는 큐 관리 방법. - 제 3 항에 있어서,
상기 읽기 명령어에 따른 상기 제 2 타깃 장치가 상기 제 1 타깃 장치를 지시하는 경우, 상기 쓰기 데이터는 상기 제 1 타깃 장치에 기입되기 이전에 상기 복수의 불휘발성 메모리 장치들 중에 지정된 예비 장치에 우선 기입되는 단계를 더 포함하는 큐 관리 방법. - 제 4 항에 있어서,
상기 지정된 예비 장치에 기입된 상기 쓰기 데이터는 상기 읽기 데이터가 독출된 이후에 상기 제 1 타깃 장치로 기입되는 큐 관리 방법. - 제 1 항에 있어서,
상기 쓰기 명령어 또는 상기 쓰기 데이터는 상기 네트워크 페브릭과의 인터페이싱을 위해 이더넷 필드, NVMe-oF(NVMe over Fabrics) 필드, 그리고 NVMe 필드를 포함하는 큐 관리 방법. - 제 6 항에 있어서,
상기 스토리지 장치는 상기 NVMe-oF(NVMe over Fabrics) 필드, 그리고 상기 NVMe 필드에 대한 프로토콜 변환의 수행없이 상기 쓰기 명령어 또는 상기 쓰기 데이터를 추출하는 큐 관리 방법. - 복수의 불휘발성 메모리 장치; 그리고
상기 복수의 불휘발성 메모리 장치와 네트워크 페브릭 사이에서 인터페이싱을 제공하는 스토리지 컨트롤러를 포함하며,
상기 스토리지 컨트롤러는:
상기 네트워크 페브릭과의 인터페이싱을 제공하는 호스트 인터페이스;
단일 계층의 상기 큐가 형성되는 메모리; 그리고
상기 단일 계층의 상기 큐를 관리하고, 상기 복수의 불휘발성 메모리 장치들을 제어하는 스토리지 매니저를 포함하되,
상기 스토리지 매니저는 호스트로부터 제공되는 명령어 및 데이터를 관리하기 위한 상기 단일 계층의 큐(Queue)를 구성 및 관리하되,
상기 단일 계층의 상기 큐는:
상기 호스트로부터 제공되는 쓰기 명령어 또는 읽기 명령어를 기입하기 위한 명령어 제출 큐;
상기 명령어 제출 큐와는 분리되어 관리되며, 상기 쓰기 명령어와 함께 제공된 쓰기 데이터를 기입하기 위한 데이터 제출 큐; 그리고
상기 읽기 명령어에 응답하여 상기 복수의 불휘발성 메모리 장치들 중 적어도 하나로부터 출력되는 읽기 데이터가 기입되는 완료 큐를 포함하는 스토리지 장치. - 제 8 항에 있어서,
상기 스토리지 매니저는 상기 쓰기 명령어와 상기 읽기 명령어가 연속되어 입력되는 경우에, 상기 쓰기 명령어와 상기 읽기 명령어를 연속적으로 처리하는 스토리지 장치. - 복수의 불휘발성 메모리 장치들과 네트워크 페브릭 사이에서 인터페이싱을 제공하는 네트워크 스토리지 컨트롤러에 있어서;
상기 네트워크 페브릭과의 인터페이싱을 제공하는 호스트 인터페이스;
상기 복수의 불휘발성 메모리 장치들을 제어하는 플래시 인터페이스;
호스트로부터 제공된 명령어 또는 데이터를 처리하기 위한 큐(Queue)가 구성되는 워킹 메모리; 그리고
상기 호스트로부터 상기 네트워크 페브릭을 경유하여 제공되는 다중 프로토콜 포맷의 전송 프레임을 상기 명령어 또는 상기 데이터로 변환하는 스토리지 매니저 모듈을 실행하는 프로세서를 포함하되,
상기 대기열은 단일 프로토콜 계층에 대응하고, 명령어 제출 큐와 데이터 제출 큐가 분리되는 네트워크 스토리지 컨트롤러.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180034453A KR20190112446A (ko) | 2018-03-26 | 2018-03-26 | 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 |
US16/193,907 US20190294373A1 (en) | 2018-03-26 | 2018-11-16 | Storage device mounted on network fabric and queue management method thereof |
DE102019102276.2A DE102019102276A1 (de) | 2018-03-26 | 2019-01-30 | Speichervorrichtung, die auf einer netzwerkstruktur vorgesehen ist, und verfahren zur warteschlangenverwaltung hierfür |
CN201910226468.5A CN110365604A (zh) | 2018-03-26 | 2019-03-25 | 储存设备及其队列管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180034453A KR20190112446A (ko) | 2018-03-26 | 2018-03-26 | 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190112446A true KR20190112446A (ko) | 2019-10-07 |
Family
ID=67848449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180034453A KR20190112446A (ko) | 2018-03-26 | 2018-03-26 | 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190294373A1 (ko) |
KR (1) | KR20190112446A (ko) |
CN (1) | CN110365604A (ko) |
DE (1) | DE102019102276A1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110428858B (zh) * | 2019-07-11 | 2021-09-24 | 清华大学 | 基于具有滞回特性器件的静态存储器 |
CN113268358B (zh) * | 2020-02-17 | 2023-03-14 | 西安诺瓦星云科技股份有限公司 | 数据通信方法、装置和系统及多设备级联系统 |
US11252232B2 (en) | 2020-02-21 | 2022-02-15 | International Business Machines Corporation | NVME-of queue management in host clusters |
US11079968B1 (en) | 2020-02-21 | 2021-08-03 | International Business Machines Corporation | Queue management in multi-site storage systems |
US11372586B2 (en) * | 2020-05-19 | 2022-06-28 | Hewlett Packard Enterprise Development Lp | System and method for regulating NVMe-oF command requests and data flow across a network with mismatched rates |
TWI758745B (zh) * | 2020-06-10 | 2022-03-21 | 慧榮科技股份有限公司 | 排程主機命令執行的電腦程式產品及方法及裝置 |
CN113778317A (zh) | 2020-06-10 | 2021-12-10 | 慧荣科技股份有限公司 | 计算机可读取存储介质、调度主机命令的方法及装置 |
CN113296691B (zh) * | 2020-07-27 | 2024-05-03 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法、装置以及电子设备 |
US11221972B1 (en) * | 2020-09-23 | 2022-01-11 | Pensando Systems, Inc. | Methods and systems for increasing fairness for small vs large NVMe IO commands |
US20220171572A1 (en) * | 2020-12-01 | 2022-06-02 | Micron Technology, Inc. | Queue configuration for host interface |
US11687365B2 (en) * | 2020-12-21 | 2023-06-27 | Eidetic Communications Inc. | Method and apparatus for controlling a computational storage processor |
US11573718B2 (en) | 2021-02-12 | 2023-02-07 | Western Digital Technologies, Inc. | Disaggregation of control path and data path |
CN114691049B (zh) * | 2022-04-29 | 2023-03-17 | 无锡众星微系统技术有限公司 | 一种存储设备的i/o控制方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8499201B1 (en) * | 2010-07-22 | 2013-07-30 | Altera Corporation | Methods and systems for measuring and presenting performance data of a memory controller system |
US10003648B2 (en) * | 2014-10-02 | 2018-06-19 | Samsung Electronics Co., Ltd. | Mechanism for universal parallel information access |
US9934177B2 (en) * | 2014-11-04 | 2018-04-03 | Cavium, Inc. | Methods and systems for accessing storage using a network interface card |
US10061743B2 (en) * | 2015-01-27 | 2018-08-28 | International Business Machines Corporation | Host based non-volatile memory clustering using network mapped storage |
TWI769137B (zh) | 2015-06-30 | 2022-07-01 | 蘇普利亞 傑西瓦爾 | 一種用於紫外、極紫外和軟x射線光學元件的塗層及其製備方法 |
CN106547480B (zh) * | 2015-09-17 | 2019-04-12 | 慧荣科技股份有限公司 | 数据储存装置及其数据读取方法 |
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 |
JP2019046321A (ja) * | 2017-09-05 | 2019-03-22 | 東芝メモリ株式会社 | メモリシステム |
-
2018
- 2018-03-26 KR KR1020180034453A patent/KR20190112446A/ko unknown
- 2018-11-16 US US16/193,907 patent/US20190294373A1/en not_active Abandoned
-
2019
- 2019-01-30 DE DE102019102276.2A patent/DE102019102276A1/de not_active Withdrawn
- 2019-03-25 CN CN201910226468.5A patent/CN110365604A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102019102276A1 (de) | 2019-09-26 |
CN110365604A (zh) | 2019-10-22 |
US20190294373A1 (en) | 2019-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190112446A (ko) | 네트워크 페브릭에 장착되는 스토리지 장치 및 그것의 큐 관리 방법 | |
JP7210353B2 (ja) | 大容量データを格納するネットワークストレージデバイス | |
US8644139B2 (en) | Priority based flow control within a virtual distributed bridge environment | |
JP4908017B2 (ja) | Dmaデータ転送装置及びdmaデータ転送方法 | |
CN110109852B (zh) | 硬件实现tcp_ip协议的方法 | |
US7702742B2 (en) | Mechanism for enabling memory transactions to be conducted across a lossy network | |
US9973351B2 (en) | Data processing method and apparatus, storage controller, and cabinet | |
US8615586B2 (en) | Discovery of logical images at storage area network endpoints | |
US10599600B2 (en) | Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments | |
US10353857B2 (en) | Parallel processing apparatus and method for controlling communication | |
US7043603B2 (en) | Storage device control unit and method of controlling the same | |
US9219696B2 (en) | Increased efficiency of data payloads to data arrays accessed through registers in a distributed virtual bridge | |
US20240192884A1 (en) | Hub for multi-chip sensor systems | |
EP4002139B1 (en) | Memory expander, host device using memory expander, and operation method of server system including memory expander | |
US20180121138A1 (en) | System and Method for Reliably Persisting Storage Writes at High Speed | |
EP3826244B1 (en) | Congestion control method and related device | |
WO2022267909A1 (zh) | 一种数据读写方法以及相关装置 | |
US9247032B2 (en) | Method for offloading packet segmentations and device using the same | |
US11966634B2 (en) | Information processing system and memory system | |
US11683371B2 (en) | Automotive network with centralized storage | |
CN114866534B (zh) | 一种图像处理方法、装置、设备及介质 |