KR20190028217A - PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 - Google Patents

PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 Download PDF

Info

Publication number
KR20190028217A
KR20190028217A KR1020170115404A KR20170115404A KR20190028217A KR 20190028217 A KR20190028217 A KR 20190028217A KR 1020170115404 A KR1020170115404 A KR 1020170115404A KR 20170115404 A KR20170115404 A KR 20170115404A KR 20190028217 A KR20190028217 A KR 20190028217A
Authority
KR
South Korea
Prior art keywords
payload size
maximum
bandwidth
rnic
size
Prior art date
Application number
KR1020170115404A
Other languages
English (en)
Other versions
KR102429904B1 (ko
Inventor
김동욱
김한준
민재홍
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170115404A priority Critical patent/KR102429904B1/ko
Priority to US15/950,908 priority patent/US10642777B2/en
Priority to SG10201805213RA priority patent/SG10201805213RA/en
Priority to CN201810764962.2A priority patent/CN109471833B/zh
Publication of KR20190028217A publication Critical patent/KR20190028217A/ko
Application granted granted Critical
Publication of KR102429904B1 publication Critical patent/KR102429904B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • G06F13/4278Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템이 개시된다. 방법은, 제1 디바이스의 최대 밴드위스 및 최대 독출 요청 사이즈를 결정하고, 제2 디바이스의 최대 밴드위스 및 최소 페이로드 사이즈를 결정하고, 제1 디바이스의 최대 독출 요청 사이즈와 제1 및 제2 디바이스들의 밴드위스 비율을 이용하여 제2 디바이스의 최대 페이로드 사이즈를 계산하고, 제2 디바이스의 최소 페이로드 사이즈와 계산된 최대 페이로드 사이즈를 비교하고, 비교 결과, 계산된 최대 페이로드 사이즈가 최소 페이로드 사이즈 보다 크거나 같은 경우, 제2 디바이스의 페이로드 사이즈를 계산된 최대 페이로드 사이즈로 셋팅한다.

Description

PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 {Method and system for maximizing PCI-express bandwidth of peer-to-peer(P2P) connections}
본 발명은 데이터 프로세싱 시스템에 관한 것으로서, 특히 PCIe P2P 접속된 디바이스들 사이의 데이터 전송을 최대 밴드위스 성능으로 수행할 수 있는 방법 및 시스템에 관한 것이다.
솔리드 스테이트 드라이브(Solid State Driver: SSD)는 고성능 및 고속 스토리지 디바이스이다. SSD들을 억세스하도록 최적화된 초고속 데이터 전송 규격인 비휘발성 메모리 익스프레스(Non Volatile Memory Express: NVMe)가 적용되고 있다. NVMe는 PCIe(Peripheral Component Interconnect Express) 인터페이스에 장착되는 스토리지 디바이스들(또는 비휘발성 메모리들)에 대하여 직접 입출력(I/O) 억세스를 제공한다. 대용량 스토리지와 상호 작용하는 NVMe에서 특정 스토리지 디바이스에 포커싱되는 경우, PCIe 밴드위스 성능이 제한되는 문제점이 발생할 수 있다.
본 발명의 목적은 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 데이터 프로세싱 시스템을 제공하는 데 있다.
본 발명의 실시예들에 따른 PCIe P2P 접속된 디바이스들 사이의 데이터 전송 밴드위스를 최대화하는 방법은, 제1 디바이스의 최대 밴드위스 및 최대 독출 요청 사이즈를 결정하는 단계, 제2 디바이스의 최대 밴드위스를 결정하는 단계, 제1 디바이스의 최대 독출 요청 사이즈, 제1 디바이스의 최대 밴드위스 및 제2 디바이스의 최대 밴드위스에 기초하여 제2 디바이스의 제1 최대 페이로드 사이즈를 계산하는 단계, 그리고 계산된 제1 최대 페이로드 사이즈에 기초하여 제2 디바이스의 페이로드 사이즈를 셋팅하는 단계를 포함한다.
본 발명의 실시예들에 따른 데이터 프로세싱 시스템은, 호스트에 의해 발행된 요청들에 응답하는 인터페이스 디바이스와, 호스트에 의한 억세스를 위한 복수개의 스토리지 요소들로 구성되는 스토리지 디바이스를 포함한다. 인터페이스 디바이스 또는 복수개의 스토리지 요소들은, 인터페이스 디바이스의 최대 독출 요청 사이즈, 인터페이스 디바이스의 최대 밴드위스 및 복수개의 스토리지 요소들 각각의 최대 밴드위스에 기초하여 복수개의 스토리지 요소들 각각의 최대 페이로드 사이즈를 계산하고, 계산된 최대 페이로드 사이즈에 기초하여 복수개의 스토리지 요소들(SSDs) 각각의 페이로드 사이즈를 셋팅한다.
본 발명의 실시예들에 따른 PCIe P2P 접속된 디바이스들 사이의 데이터 전송 밴드위스를 최대화하기 위한 컴퓨터 판독 가능 프로그램 코드가 구현되어 있는 컴퓨터 사용 가능 매체를 포함하는 컴퓨터 프로그램 제품은, 제1 디바이스의 최대 밴드위스 및 최대 독출 요청 사이즈를 결정하고 제2 디바이스의 최대 밴드위스 및 최소 페이로드 사이즈를 결정하도록 구성되어 있는 프로그램 코드, 제1 디바이스의 최대 독출 요청 사이즈와 제1 및 제2 디바이스들의 밴드위스 비율을 이용하여 제2 디바이스의 최대 페이로드 사이즈를 계산하도록 구성되어 있는 프로그램 코드, 제2 디바이스의 최소 페이로드 사이즈와 계산된 최대 페이로드 사이즈를 비교하도록 구성되어 있는 프로그램 코드, 비교 결과, 계산된 최대 페이로드 사이즈가 최소 페이로드 사이즈 보다 크거나 같은 경우에 제2 디바이스의 페이로드 사이즈를 계산된 최대 페이로드 사이즈로 셋팅하고, 계산된 최대 페이로드 사이즈가 최소 페이로드 사이즈 보다 작은 경우에 제2 디바이스의 페이로드 사이즈를 최소 페이로드 사이즈로 셋팅하도록 구성되어 있는 프로그램 코드를 포함한다.
본 발명의 실시예들에 따른 데이터 프로세싱 시스템은, PCIe P2P 접속된 디바이스들 사이에 계산된 최대 페이로드 사이즈를 이용하여 데이터 전송함에 따라 PCIe 밴드위스를 최대화할 수 있다. 그리고, 최대 밴드위스로 데이터 전송함에 따라 스토리지 요소들의 접속들에 의해 스토리지 디바이스 NVMe-oF의 확장성(scalability)을 보장하고, 데이터 전송의 QoS(Quality of Service)를 향상시킬 수 있다. 또한, NVMe-oF 프로토콜에 맞게 스토리지 요소들 각각이 독립적으로 동작하는 분산(offloading)이 가능하다.
도 1은 본 발명의 일실시예에 따른 RNIC(RDMA-enabled Network Interface Controller)를 이용하기에 적합한 데이터 프로세싱 시스템을 보여준다.
도 2는 도 1의 데이터 프로세싱 시스템의 동작을 설명하는 플로우챠트이다.
도 3은 도 1의 RNIC에서 이루어지는 RDMA 메시지 데이터 전송들에 대한 핸들링을 설명하는 도면이다.
도 4a 및 도 4b는 도 1의 RNIC에서 수행되는 RDMA Read 메시지에 따른 데이터 전송을 설명하는 도면들이다.
도 5는 본 발명의 일실시예에 따른 PCIe P2P 접속의 밴드위스를 최대 밴드위스로 동작시키는 RNIC를 설명하는 도면이다.
도 6은 본 발명의 일실시예에 따른 도 5의 요청 매니저의 동작을 설명하는 플로우챠트이다.
도 7은 본 발명의 일실시예에 따른 도 5의 RNIC 내 요청 매니저의 동작을 설명하는 플로우챠트이다.
도 8a 및 도 8b는 도 6 및 도 7의 RNIC 동작에 따른 데이터 전송을 설명하는 도면들이다.
도 9는 본 발명의 일실시예에 따른 PCIe P2P 접속의 밴드위스를 최대 밴드위스로 동작시키는 스토리지 디바이스를 설명하는 도면이다.
도 10a 및 도 10b는 본 발명의 실시예들에 따른 요청 매니저들의 동작에 따른 RNIC의 성능을 설명하는 그래프들이다.
도 11은 본 발명의 실시예에 따른 서버 시스템을 보여주는 블록 다이어그램이다.
도 12는 본 발명의 실시예에 따른 데이터 센터를 보여주는 블록 다이어그램이다.
도 1은 본 발명의 일실시예에 따른 RNIC(RDMA-enabled Network Interface Controller)를 이용하기에 적합한 데이터 프로세싱 시스템을 보여준다.
도 1을 참조하면, 데이터 프로세싱 시스템(100)은 RDMA(Remote Direct Memory Access) 프로토콜을 이용하여 서로 통신할 수 있는 피어들(110, 120)을 포함한다. 피어들(110, 120)은 네트워크(130)를 통하여 데이터를 송신 또는 수신할 수 있는 스토리지 시스템 또는 컴퓨터 시스템일 수 있다. 이러한 피어들(110, 120)은 예로서 제공되는 것이고, RDMA 접속들(connections)이 예컨대, 여러 클라이언트들, 여러 서버들, 서버 팜(들), 서버 클러스터(들), 어플리케이션 서버(들), 또는 메시지 서버(들) 사이에 있을 수 있다.
피어들(110, 120)은 도 1에서 서버(110)와 클라이언트(120)로서 도시된다. 서버(110)는 네트워크(130)을 통하여 클라이언트(120)의 요청을 받고 서비스를 수행하고 그 결과를 클라이언트(120)에게 전송하는 피어를 나타내고, 클라이언트(120)는 서버(110)에게 요청을 하고 응답을 기다리는 피어를 나타낸다. 클라이언트(12)는 호스트로 지칭될 수 있다.
RDMA는 한 메모리에서 다른 장치나 시스템의 메모리로의 데이터 전송을 수행한다. 이러한 데이터 전송은 중앙 처리 장치(CPU, 또는 프로세서)나 운영 체제 개입 없이 네트워크(130)를 통하여 직접 메모리 억세스(DMA)하는 것으로, 고 처리량, 저 레이턴시 및 저 오버헤드 데이터 전송을 가능하게 한다.
네트워크(130)는 개별적인 단일 네트워크로서 도시되지만, 당업자에 의해 일반적으로 이해되는 어떤 유형의 네트워크라도 될 수 있다. 네트워크(130)는 개인용 또는 공용이거나, 유선 또는 무선이거나, 전체 또는 부분 네트워크일 수 있다. 실시예에 따라, 네트워크(130)는 인터넷이나 월드 와이드 웹 (줄여서 "웹")과 같은 글로벌 네트워크, WAN(Wide Area Network) 또는 LAN(Local Area Network) 일 수 있다.
서버(110)는 PCIe 버스(111)에 연결되는 RNIC(112)와 스토리지 디바이스(114)를 포함할 수 있다. RNIC(112)는 네트워크 인터페이스 카드, 네트워크 어댑터 및/또는 RDMA를 지원하는 네트워크 인터페이스 제어기일 수 있다. RNIC(112)에 접속된 스토리지 디바이스(114)는 RDMA를 이용하는 NVMe 스토리지 프로토콜로 구현될 수 있다. NVMe 스토리지 프로토콜은 예시적으로, iWARP(internet Wide Area RDMA protocol), Infiniband, RoCE(RDMA over Converged Ethernet) 중 하나를 포함할 수 있다. 스토리지 디바이스(114)는 복수의 스토리지 요소들(115-118)을 포함하고, 스토리지 요소들(115-118)은 NVMe SSD들 또는 PCIe SSD들로 구성될 수 있다. 스토리지 디바이스(114)는 NVMe-oF(NVMe-over Fabrics)로 구현될 수 있다.
NVMe는 SSD들을 이용할 수 있는 기업, 데이터 센터 및 클라이언트 시스템들의 필요성들을 처리하도록 설계된 스케일링 가능한 호스트 콘트롤러 인터페이스이다. NVMe는 호스트에 스토리지 엔티티 인터페이스를 제시하기 위한 SSD 디바이스 인터페이스로서 이용된다.
PCIe는 PCI, PCI-X 및 AGP(Accelerated Graphics Port) 버스 표준들을 대체하도록 설계된 고속 직렬 컴퓨터 확장 버스 표준이다. PCIe는 더 높은 최대 시스템 버스 스루풋, 더 낮은 I/O 핀 카운트 및 더 작은 물리적 풋프린트, 버스 디바이스들에 대한 양호한 성능-스케일링, 및 더 상세한 에러 검출 및 보고 메커니즘을 포함한다.
NVMe는 PCIe SSD들에 대한 최적화된 레지스터 인터페이스, 커맨드 세트 및 특징 세트를 정의하고, PCIe SSD들의 기능성(functionality)을 이용하며 PCIe SSD 인터페이스를 표준화하기 위한 위치에 있다. NVMe-oF는 PCIe NVMe SSD 기반의 플래시 스토리지 어레이로서, 대규모 병렬 방식으로 통신할 수 있는 패브릭으로 확장할 수 있다.
클라이언트(120)는 RNIC(122), 메모리(124) 및 프로세서(또는 CPU(Central Processing Unit), 126)를 포함할 수 있다. 메모리(124)는 시스템 메모리, 메인 메모리, 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. 메모리(124)는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈이나 기타 데이터 같은 정보의 저장을 위해 어떤 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈형 및 비착탈형 컴퓨터 저장 매체일 수 있다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학적 저장부, 마그네틱 카세트, 마그네틱 테이프, 마그네틱 디스크 저장부 또는 다른 마그네틱 저장부, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터 시스템에 의해 억세스될 수 있는 어떤 다른 매체를 포함하나, 이에 국한되지 않는다.
프로세서(126)는 데이터 프로세싱 시스템(100)의 전반적인 동작을 제어할 수 있다. 프로세서(126)은 복수의 프로세싱 코어들을 포함하고, 각 프로세싱 코어들은 복수의 프로세싱 엔트리를 포함할 수 있다. 프로세서(126)는 프로세싱 엔트리에 따라 서버(110)의 스토리지 디바이스(114)로/로부터 데이터 기입 또는 독출 동작들을 명령할 수 있다. 예를 들면, 프로세서(126)는 네트워크(130)을 통하여 서버(110)로 데이터 전송을 개시하라는 커맨드를 전송할 수 있다.
RNIC(122)는 서버(110)의 RNIC(112)와 유사한 네트워크 인터페이스 카드, 네트워크 어댑터 및/또는 RDMA를 지원하는 네트워크 인터페이스 제어기일 수 있다. RNIC들(112, 122)은 RDMA 프로토콜을 지원한다.
RNIC들(112, 122)은 스토리지 디바이스(114)에서 메모리(124)까지 그리고 그 반대로 데이터의 직접 전송을 허용하는 RDMA 프로토콜을 지원할 수 있다. 이러한 데이터 전송에는 프로세서(126)의 감독을 요하거나 포함하지 않는다. 이에 따라, RDMA 프로토콜은 고 대역폭, 저 레이턴시 및 저 오버헤드의 이점들이 있다.
RDMA 프로토콜은 데이터 전송에 관하여 RDMA 메시지들, 즉 Send, Write, Read 등을 정의한다. RNIC들(112, 122)은 RNIC 리소스들을 할당하고 할당 해제하기 위한 관리 동작과 작업 요청(Work Request, 이하 "WR"이라 칭한다)을 포스팅하기 위한 동작을 수행할 수 있다. RNIC들(112, 122)의 관리 동작은 큐 쌍(Queue Pair: 이하 "QP"라고 칭한다) 할당 및 할당 해제, 완결 큐(Completion Queue, 이하 "CQ"라고 칭한다) 할당 및 할당 해제, 또는 메모리 할당 및 할당 해제를 포함할 수 있다. 이하, 설명의 편의를 위하여, RNIC(112)의 기능에 대하여 구체적으로 설명된다. RNIC(112)의 기능은 RNIC(122)에도 동일하게 적용될 수 있다.
RNIC(112)는 WR들이 포스팅되는 QP를 할당할 수 있다. QP는 한 쌍의 작업 큐들(예, 송신 및 수신)을 포함하고, 각각의 큐를 위한 포스팅 메커니즘도 포함할 수 있다. RNIC(112)는 포스팅된 WR들을 실행하기 위하여 WR들을 작업 큐들로 포스팅할 수 있다. 각각의 작업 큐는 작업 큐 요소들(Work Queue Element, 이하 "WQE"라고 칭한다)의 리스트이다. WQE는 하나의 작업 요청을 설명하는 약간의 제어 정보를 보유하고, RNIC(112)의 버퍼들을 참조할 수 있다(또는 포인팅할 수 있다).
WQE에 의해 보유될 수 있는 정보는 WR 타입과 수신 데이터를 위한 위치를 전송하거나 표현하기 위한 데이터를 전달하는 버퍼들의 기술(description of buffers) 일 수 있다. WR 타입에는 RDMA Send, RDMA Write, RDMA Read 등일 수 있는 Send WR와 RDMA Receive 일 수 있는 Receive WR로 분류될 수 있다. WQE는 단일 RDMA 메시지로 기술/대응(describes/corresponds)된다. RDMA Write 타입의 Send WR을 포스팅할 때, RNIC(112)는 RDMA Write 메시지를 이용하여 데이터가 취해져야 하고 응답자(예, 스토리지 디바이스(114))에게 송신되어야 하는 버퍼들을 설명하는 WQE를 SQ(Send Queue)에 구축할 수 있다. 다른 예로서, Receive WR을 포스팅할 때, RNIC(112)는 수신된 Send 메시지의 페이로드를 배치하는데 사용될 버퍼를 보유하는 RQ(Receive Queue)에 WQE를 추가할 수 있다.
RNIC(112)는 WQE가 SQ(Send Queue) 또는 RQ(Receive Queue)에 추가될 때 마다 도어벨 울리기(doorbell ring) 동작으로 통지될 수 있다. 도어벨 울리기 동작은 RNIC(112)의 하드웨어에 의해 검출되고 디코딩되는 RNIC(112)의 메모리 공간으로의 기입이다. 따라서, 도어벨 울리기는 특정된 SQ/RQ를 위해 수행될 필요가 있는 새로운 작업이 존재한다는 것을 RNIC(112)에 통지한다.
RNIC(112)는 클라이언트(120)에서 발행된 요청들에 응답하여 PCIe 버스(111)를 통하여 접속되는 스토리지 디바이스(114)에 포함된 복수개의 스토리지 요소들(115-118)과 데이터 전송할 수 있다.
RNIC(112)는 RNIC(112)와 스토리지 요소들(115-118) 사이의 데이터 전송 밴드위스를 최대화하기 위하여, RNIC(112)의 최대 독출 요청 사이즈(Maximum Read Request Size, 이하 "MRRS"라고 칭한다)와 최대 밴드위스(BWRNIC) 및 스토리지 요소들(115-118) 각각의 최대 밴드위스(BWSSD)와 최소 페이로드 사이즈를 결정할 수 있다. RNIC(112)는 RNIC(112)의 최대 독출 요청 사이즈(MRRS)에다가 스토리지 요소들(115-118) 각각의 밴드위스 비율(BWSSD/BWRNIC)을 곱하는 연산을 수행하여 스토리지 요소들(115-118) 각각의 최대 페이로드 사이즈를 계산하고, 스토리지 요소들(115-118) 각각에 대하여 해당 최소 페이로드 사이즈와 해당 계산된 최대 페이로드 사이즈를 비교할 수 있다. RNIC(112)는 스토리지 요소들(115-118) 각각의 계산된 최대 페이로드 사이즈가 해당 최소 페이로드 사이즈 보다 크거나 같은 경우, 스토리지 요소들(115-118) 각각의 페이로드 사이즈를 해당 계산된 최대 페이로드 사이즈로 셋팅할 수 있다. RNIC(112)는 스토리지 요소들(115-118) 각각의 계산된 최대 페이로드 사이즈가 해당 최소 페이로드 사이즈 보다 작은 경우, 스토리지 요소들(115-118) 각각의 페이로드 사이즈를 해당 최소 페이로드 사이즈로 셋팅할 수 있다.
실시예에 따라, 스토리지 요소들(115-118) 각각은, RNIC(112)와 스토리지 요소들(115-118) 사이의 데이터 전송 밴드위스를 최대화하기 위하여, RNIC(112)의 최대 독출 요청 사이즈(MRRS)와 최대 밴드위스(BWRNIC) 및 스토리지 요소들(115-118) 각각의 최대 밴드위스(BWSSD)와 최소 페이로드 사이즈를 결정할 수 있다. 스토리지 요소들(115-118) 각각은, RNIC(112)의 최대 독출 요청 사이즈(MRRS)에다가 스토리지 요소들(115-118) 각각의 밴드위스 비율(BWSSD/BWRNIC)을 곱하는 연산을 수행하여 스토리지 요소들(115-118) 각각의 최대 페이로드 사이즈를 계산하고, 스토리지 요소들(115-118) 각각에 대하여 해당 최소 페이로드 사이즈와 해당 계산된 최대 페이로드 사이즈를 비교할 수 있다. 스토리지 요소들(115-118) 각각은, 스토리지 요소들(115-118) 각각의 계산된 최대 페이로드 사이즈가 해당 최소 페이로드 사이즈 보다 크거나 같은 경우, 스토리지 요소들(115-118) 각각의 페이로드 사이즈를 해당 계산된 최대 페이로드 사이즈로 셋팅할 수 있다. 스토리지 요소들(115-118) 각각은, 스토리지 요소들(115-118) 각각의 계산된 최대 페이로드 사이즈가 해당 최소 페이로드 사이즈 보다 작은 경우, 스토리지 요소들(115-118) 각각의 페이로드 사이즈를 해당 최소 페이로드 사이즈로 셋팅할 수 있다.
도 2는 도 1의 데이터 프로세싱 시스템의 전형적인 동작을 설명하는 플로우챠트이다.
도 2를 참조하면, S11 단계에서, 클라이언트(120)의 프로세서(126)는 네트워크(130)을 통하여 서버(110)로 데이터 전송을 개시하라는 커맨드를 전송할 수 있다.
S12 단계에서, 서버(110)는 네트워크(130)를 통하여 커맨드를 수신하고, 수신된 커맨드는 데이터 전송에 관한 커맨드로 해석될 수 있다.
S13 단계에서, 서버(110)는 RNIC(112)에 링크 리스트 전송 모드를 셋팅할 수 있다.
S14 단계에서, 링크 리스트 전송 모드로 셋팅된 RNIC(112)는 네트워크(130)를 통하여 클라이언트(120)에게 링크 리스트 내 1 개 엔트리를 요청할 수 있다.
S15 단계에서, 클라이언트(120)는 링크 리스트 내 1 개 엔트리에 대한 요청을 받아들이고, 링크 리스트 내 1 개 엔트리를 네트워크(130)를 통하여 서버(110)로 보낼 수 있다. 서버(110)로 보내진 링크 리스트 내 1 개 엔트리는 RDMA 메시지를 나타내는 작업 요청(WR)일 수 있다.
S16 단계에서, 서버(110)는 엔트리의 작업 요청을 획득하여 RNIC(112)에 포스팅할 수 있다. S17 단계에서, 서버(110)의 RNIC(112)는 포스팅된 작업 요청(WR)에 따라 스토리지 디바이스(114)로/로부터 데이터 기입 또는 독출 동작들을 수행할 수 있다. 예를 들면, RNIC(112)는 스토리지 디바이스(114)에서 전송하는 데이터 페이로드를 판독하고, 판독된 데이터를 직접적으로 배치하고 패킷화하도록 제어할 수 있다. RNIC(11)에서 이루어지는 데이터 전송에 대한 핸들링은 도 3에서 구체적으로 설명될 것이다.
S18 및 S19 단계들에서, 서버(110)와 클라이언트(120)는 데이터 전송 프로세스를 수행할 수 있다.
S20 단계에서, 서버(110)의 RNIC(112)는 S16 단계에서 획득된 엔트리에 EOT(End Of Transmission)가 기술되었는지 여부를 판별할 수 있다. S20 단계에서 EOT가 기술되지 않은 것으로 판별되면, S14 단계로 이동하여 후속 순서들을 반복할 수 있다.
한편, S20 단계에서 EOT가 기술된 것으로 판별되면, 서버(110)와 클라이언트(120) 사이의 동작이 S21 단계에서 종료된다.
도 3은 도 1의 RNIC에서 이루어지는 RDMA 메시지 데이터 전송들(RDMA message data transfers)에 대한 핸들링을 설명하는 도면이다. 도 3은 도 2에서 설명된 S17 단계에서 수행되는 RNIC(112)의 동작 환경을 설명한다.
도 3을 참조하면, RNIC(112)는 특정 SQ(Send Queue)를 서빙할 것(to serve)을 선택할 수 있다. 설명을 위하여, 데이터 전송을 개시하는 엔티티를 여기서는 "요청자"라고 할 것이고, 데이터 전송에 응답하는 엔티티를 여기서는 "응답자"라고 할 것이다. 마찬가지로, 데이터를 전송하는 엔티티를 "전송자"라고 하고, 데이터를 수신하는 엔티티를 "수신자"라고 지칭할 수도 있다.
RNIC(112) 요청자 측은 SQ(310)로부터 SQE(Send Queue Element, 312)를 판독(read)할 수 있다. SQE(312)는 SQ(310)에 포스팅된 WQE를 가리킨다. SQE(312)가 RDMA Send 요청에 대응되면, RNIC(112)는 Send 메시지를 발생시키고, 이 메시지를 RNIC(112) 응답자 측으로 송신할 수 있다. RNIC(112) 응답자 측이 Send 메시지를 수신할 때, RNIC(112)는 RQ(Receive Queue, 320)로부터 RQE(Receive Queue Element, 322)를 판독하고, 수신된 메시지의 페이로드를 RQE(322)에 의해 참조되는 버퍼들(330, 응답자 Rx 버퍼)에 배치할 수 있다. RQE(322)는 RQ(320)에 포스팅된 WQE를 가리킨다.
RNIC(112) 요청자 측은 RNIC(112) 응답자 측의 메모리 영역(350)에 억세스하기를 원할 때 RDMA Write 또는 RDMA Read 유형의 Send WR을 포스팅할 수 있다. RNIC(112) 요청자 측은 RDMA Write 또는 RDMA Read에 대응하는 SQE들(312)을 SQ(310)에 추가하고, RNIC(112)에 통지할 수 있다. RNIC(112)는 SQ(310)로부터 SQE(312)를 판독하고 RDMA Write 메시지 또는 RDMA Read 메시지를 발생시킬 수 있다.
RDMA Write 메시지가 RNIC(112)에 수신되고, RNIC(112)는 RDMA Write 메시지에 포함된 DDP(Direct Data Placement) 세그먼트들을 이용하여 메모리 영역(350)을 찾아내고, RDMA Write 메시지의 페이로드를 메모리 영역(350)에 배치할 수 있다.
RDMA Read 메시지가 RNIC(112)에 수신될 때, RNIC(112)는 RDMA Read Response 메시지를 발생시키고, RDMA Read Response 메시지를 RNIC(112) 요청자 측으로 역송신할 수 있다. 이 경우, RQ(320)는 판독 큐로서 참조될 수 있다. RDMA Read Response 메시지가 수신될 때, RNIC(112)는 RDMA Read Response 메시지를 RDMA Write 메시지의 핸들링과 유사하게 핸들링할 수 있다. 즉, RDMA Read Response 메시지의 페이로드를 RNIC(112) 요청자 측의 메모리 영역(360)에 배치할 수 있다.
도 3에서, WR들을 핸들링하는 것 이외에, RNIC(112)는 WR들의 완결을 통지할 수 있다. 완결 통지는 RNIC(112)에 의해 제공되는 전용 기능(dedicated function)을 통해 할당되는 CQ(340)를 사용하는 것에 의해 이루어진다. CQ(340)는 CQE(Completion Queue Element, 342)를 포함한다. CQE들(342)은 RNIC(112)가 WR의 완결을 보고할 때, RNIC(112)에 의해 CQ(340)에 배치된다. 각각의 작업 큐 즉, SQ(310), RQ(320)는 연관된 CQ(340)를 갖는다. 연관은 QP 할당 시에 수행된다.
RNIC(112)는 WR을 SQ(310)에 포스팅할 때, 이 WR이 완결될 때 통지 받기를 원하는지 여부를 특정할 수 있다. 완결 통지를 요청했다면, RNIC(112)는 WR 완결 시에 CQE(342)를 SQ(310)와 연관되어 있는 CQ(340)에 배치할 수 있다. RDMA Send WR 및 RDMA Write WR은 이들이 안전하게 전송되었을 때 완결된다. RDMA Read WR은 대응하는 RDMA Read Responde 메시지가 수신되어 메모리 영역(360)에 배치되었을 때 완결된다. WR들은 SQ(310)에 포스팅된 순서로 완결된다. RQ(320)에 포스팅된 WR 각각도 완결 통지를 요한다. 따라서, RNIC(112)는 수신된 Send 메시지의 배치를 마쳤을 때 RQ(320)와 연관된 CQ(340)에 CQE(342)를 배치한다.
도 4a 및 도 4b는 도 1의 RNIC에서 수행되는 RDMA Read 메시지에 따른 데이터 전송을 설명하는 도면들이다. 도 4a 및 도 4b는 RDMA Read 메시지에 따른 데이터 전송 시, RNIC(112)가 NVMe-oF 스토리지 디바이스(114) 내 복수개의 스토리지 요소들(115-118, 도 1)로 데이터 전송을 분산시킬 수 있는 데, 하나의 스토리지 요소(115)에 포커싱되어 데이터 전송하는 경우를 보여준다. 도 4a에서는, 설명의 편의를 위하여, 스토리지 디바이스(114)에 포함된 복수개의 스토리지 요소들(115-118) 중 2 개의 스토리지 요소들, 예를 들어, 제1 SSD(115)와 제2 SSD(116)를 중심으로 설명된다. 그리고, 도 4a는 RNIC(112)의 NVMe-oF Read 작업 요청(WR)을 이용하여 데이터 전송을 설명하는데, NVMe-oF Read 작업 요청(WR)은 도 3에서 설명된 RDMA Read 유형의 작업 요청(WR)에 상응하는 것으로 해석될 수 있다.
도 4a를 참조하면, RNIC(112)는 NVMe-oF Read 작업 요청(WR)을 수신하고(402), NVMe-oF Read 작업 요청(WR)을 SQ(310, 도 3)에 SQE(312, 도 3)로 포스팅하고 판독하여, SQE(312)의 Read 메시지를 스토리지 디바이스(114)의 제1 및 제2 SSD들(115, 116)로 전송할 수 있다(410a, 410b).
RNIC(112)는 스토리지 디바이스(114)의 제1 및 제2 SSD들(115, 116)로 Read 메시지 전송을 완료하고, 제1 및 제2 SSD들(115, 116)로 통지할 수 있다(411a, 411b).
제1 및 제2 SSD(115, 116) 각각은, 수신된 Read 메시지의 커맨드 포맷에 맞게 커맨드 버퍼들(422a, 422b)에 커맨드 엔트리들(#0~#5)을 작성할 수 있다. 제1 및 제2 SSD(115, 116) 각각은, 커맨드 엔트리들(#0~#5)에 따라 NAND 시스템(425a, 425b)에서 데이터를 독출하여 데이터 버퍼(423a, 423b)에 저장할 수 있다. 제1 및 제2 SSD(115, 116) 각각은 데이터 버퍼(423a, 423b)에 NAND 시스템(425a, 425b)의 독출 데이터를 저장하고, RNIC(112)로 통지할 수 있다(412a, 412b)
RNIC(112)는 제1 및 제2 SSD(115, 116) 각각의 데이터 버퍼(423a, 423b)의 데이터를 읽어갈 수 있다. 데이터 버퍼들(423a, 423b)의 데이터는 낸드(NAND) 플래시 메모리 셀들을 포함하는 NAND 시스템(425a)에서 독출된 데이터로서, 페이로드들(424a, 424b)이 실린 데이터 패킷들로 구성된다. 이와 같이, 제1 및 제2 SSD들(115, 116)은 NVMe-oF 프로토콜에 맞게 독립적으로 동작할 수 있기 때문에, 분산(offloading)이 가능한 이점에 있다.
그런데, RNIC(112)의 최대 독출 요청 사이즈(Maximum Read Request Size, 이하 "MRRS"라고 칭한다)가 데이터 버퍼들(423a, 423b)의 페이로드 사이즈 보다 작을 경우, 제1 및 제2 SSD들(115, 116)의 동작은 분산되지 않고 하나의 SSD에 포커싱될 수 있다. 예시적으로, RNIC(112)의 MRRS는 2KB이고 최대 밴드위스는 5GB/s라고 가정하고, 제1 및 제2 SSD들(115, 116) 각각은 최소 페이로드 사이즈가 1KB이고, 최대 밴드위스는 2.5GB/s라고 가정하자. 그리고 제1 및 제2 SSD들(115, 116) 각각의 데이터 버퍼(423a, 423b)에 실린 페이로드 사이즈가 128KB라고 가정하자.
RNIC(112)는 제1 및 제2 SSD들(115, 116)에 대하여 NVMe-oF Read 작업 요청(WR)을 처리할 수 있다. 만약 RNIC(112)가 제1 SSD(115)의 NVMe-oF Read 작업 요청(WR)을 먼저 처리 중에 있다면, RNIC(112)는 DMA 전송 처리를 이용하여 제1 SSD(115)의 데이터 버퍼(423a)의 페이로드(424a)를 읽어오고 난 후, 제2 SSD(116)의 데이터 버퍼(423b)의 페이로드(424b)를 읽어올 것이다. 제1 SSD(115)의 데이터 버퍼(423a)의 128KB 페이로드(424a)를 읽는 동작(413a)은 최소 페이로드 사이즈 1KB씩 128번 수행될 것이다. 이러한 제1 SSD(115)에 대한 읽기 동작(413a) 동안, RNIC(112)는 제2 SSD(116)의 데이터 버퍼(423b)의 페이로드(424b)에 대해 읽기 동작(413b)을 수행할 수 없다. RNIC(112)는, 도 4b에 도시된 바와 같이, 제1 SSD(115)에 포커싱됨을 볼 수 있다. 제2 SSD(116)의 데이터 버퍼(423b)의 페이로드(424b)에 대해 읽기 동작(413b)은 제1 SSD(115)에 대한 DMA 전송 처리가 끝날 때까지 기다렸다가 수행될 수 있다.
도 4b에서, RNIC(112)의 최대 성능은 5GB/s 밴드위스로 읽기 동작을 수행할 수 있지만, RNIC(112)가 포커싱된 제1 SSD(115)의 NVMe-oF Read 작업 요청(WR)을 수행하는 동안에는 제1 SSD(115)의 2.5Gb/s 밴드위스로 제한될 수 있다. 즉, RNIC(112)의 최대 성능이 하나의 SSD(예, 제1 SSD(115))의 DMA 전송 밴드위스로 제한되는 문제점이 나타난다.
도 5는 본 발명의 일실시예에 따른 PCIe P2P 접속의 밴드위스를 최대 밴드위스로 동작시키는 RNIC를 설명하는 도면이다. 도 5는 하드웨어 복잡도를 증가시키지 않으면서 도 4에서 설명된 RNIC(112)의 밴드위스가 제한되는 문제점을 해결하기 위하여, RNIC(112)가 최대 밴드위스로 동작하도록 하는 요청 매니저(510)에 대하여 설명될 것이다.
도 5를 참조하면, 요청 매니저(510)는 DMA 읽기 모듈(512), 스플릿 페이로드 모듈(514), 그리고 패킷 발생 모듈(516)을 포함할 수 있다. DMA 읽기 모듈(512)은 스토리지 디바이스(114)의 제1 내지 제4 SSD들(115~118)에서 전송되는 데이터를 수신할 수 있다.
스플릿 페이로드 모듈(514)은 RNIC(112)의 최대 밴드위스(BWRNIC) 및 최대 독출 요청 사이즈(MRRS)를 결정할 수 있다. 스플릿 페이로드 모듈(514)은 제1 내지 제4 SSD들(115~118) 각각의 최대 밴드위스(BWSSD) 및 최소 페이로드 사이즈를 결정할 수 있다. 스플릿 페이로드 모듈(514)은 제1 내지 제4 SSD들(115~118) 각각의 최대 밴드위스(BWSSD)와 RNIC(112)의 최대 밴드위스(BWRNIC) 사이의 밴드위스 비율을 계산할 수 있다.
스플릿 페이로드 모듈(514)은 RNIC(112)의 최대 독출 요청 사이즈(MRRS)와 제1 내지 제4 SSD들(115~118) 각각과 RNIC(112)의 밴드위스 비율(BWSSD/BWRNIC)을 이용하여, 제1 내지 제4 SSD들(115~118) 각각의 최대 페이로드 사이즈를 계산할 수 있다.
스플릿 페이로드 모듈(514)은 제1 내지 제4 SSD들(115~118) 각각의 최대 밴드위스(BWSSD)를 RNIC(112)의 최대 밴드위스(BWRNIC)로 나누는 연산을 수행하여 밴드위스 비율(BWSSD/BWRNIC)을 계산할 수 있다.
스플릿 페이로드 모듈(514)은 RNIC(112)의 최대 독출 요청 사이즈(MRRS)에다가 제1 내지 제4 SSD들(115~118) 각각의 밴드위스 비율(BWSSD/BWRNIC)을 곱하는 연산을 수행하여 제1 내지 제4 SSD들(115~118) 각각의 최대 페이로드 사이즈를 계산할 수 있다.
스플릿 페이로드 모듈(514)은 제1 내지 제4 SSD들(115~118) 각각에 대하여 해당 최소 페이로드 사이즈와 해당 계산된 최대 페이로드 사이즈를 비교할 수 있다.
스플릿 페이로드 모듈(514)은 제1 내지 제4 SSD들(115~118) 각각의 계산된 최대 페이로드 사이즈가 해당 최소 페이로드 사이즈 보다 크거나 같은 경우, 제1 내지 제4 SSD들(115~118) 각각의 페이로드 사이즈를 해당 계산된 최대 페이로드 사이즈로 셋팅할 수 있다.
스플릿 페이로드 모듈(514)은 제1 내지 제4 SSD들(115~118) 각각의 계산된 최대 페이로드 사이즈가 해당 최소 페이로드 사이즈 보다 작은 경우, 제1 내지 제4 SSD들(115~118) 각각의 페이로드 사이즈를 해당 최소 페이로드 사이즈로 셋팅할 수 있다.
제1 내지 제4 SSD들(115~118) 각각은, RNIC(112)의 작업 요청에 따라 커맨드 엔트리들을 작성할 수 있다. 제1 내지 제4 SSD들(115~118) 각각은, 작업 요청에 따른 제1 내지 제4 SSD들(115~118) 각각의 데이터를 커맨드 엔트리들 각각에 대응되며 계산된 최대 페이로드 사이즈를 갖는 데이터 여러 개로 분산할 수 있다. 제1 내지 제4 SSD들(115~118) 각각은, RNIC(112)의 작업 요청에 응답하는 분산된 여러 개의 데이터를 RNIC(112)로 전송할 수 있다.
DMA 읽기 모듈(512)은 스플릿 페이로드 모듈(514)에 의해 셋팅된 제1 내지 제4 SSD들(115~118) 각각의 해당 페이로드 사이즈(예, 계산된 최대 페이로드 사이즈)로 제1 내지 제4 SSD들(115~118)의 데이터를 DMA 읽기할 수 있다. 이 후, 제1 내지 제4 SSD들(115~118) 각각은, RNIC(112)의 작업 요청에 응답하는 분산된 여러 개의 데이터가 전송되었음을 RNIC(112)에게 완료 통지할 수 있다(CQ notify).
패킷 발생 모듈(516)은 제1 내지 제4 SSD들(115~118)의 완료 통지에 따라, 제1 내지 제4 SSD들(115~118) 각각의 분산된 여러 개의 데이터를 하나로 합하여 데이터 패킷을 생성할 수 있다. 패킷 발생 모듈(516)은 생성된 데이터 패킷을 네트워크(130, 도 1)를 통하여 클라이언트(또는 호스트, 120)로 제공할 수 있다.
RNIC(112)가 최대 밴드위스로 동작하도록 하는 요청 매니저(510) 내 DMA 읽기 모듈(512), 스플릿 페이로드 모듈(514), 그리고 패킷 발생 모듈(516)의 기능들은 소프트웨어에 의해 제어되거나 하드웨어 자동화될 수 있다.
도 6은 본 발명의 실시예에 따른 도 5의 요청 매니저의 동작을 설명하는 플로우챠트이다. 도 6에서는 도 4에서 RNIC(112)에 포커싱된 제1 SSD(115)에 대하여 페이로드 사이즈를 변경하는 방법을 설명할 것이다.
도 6을 참조하면, S610 단계에서, 요청 매니저(510)는 RNIC(112)의 최대 밴드위스(BWRNIC)를 결정할 수 있다. 예시적으로, RNIC(112)의 최대 밴드위스(BWRNIC)는 5GB/s 일 수 있다.
S620 단계에서, 요청 매니저(510)는 RNIC(112)의 최대 독출 요청 사이즈(MRRS)를 결정할 수 있다. 예시적으로, RNIC(112)의 최대 독출 요청 사이즈(MRRS)는 2KB 일 수 있다.
S630 단계에서, 요청 매니저(510)는 제1 SSD(115)의 최대 밴드위스(BWSSD)를 수신할 수 있다. 예시적으로, 제1 SSD(115)의 최대 밴드위스(BWSSD)는 2.5GB/s 일 수 있다.
S640 단계에서, 요청 매니저(510)는 제1 SSD(115)의 최소 페이로드 사이즈를 수신할 수 있다. 예시적으로, 제1 SSD(115)의 최소 페이로드 사이즈는 1KB 일 수 있다.
S650 단계에서, 요청 매니저(510)는 제1 SSD(115)의 최대 페이로드 사이즈를 계산할 수 있다. 제1 SSD(115)의 최대 페이로드 사이즈는 RNIC(112)의 최대 독출 요청 사이즈(MRRS)에다가 밴드위스 비율(BW RATIO)을 곱하는 연산을 수행하여 계산될 수 있다. 밴드위스 비율(BW RATIO)은 제1 SSD(115)의 최대 밴드위스와 RNIC(112)의 최대 밴스위스의 비로 결정될 수 있다.
예시적으로, 밴드위스 비율(BW RATIO)은 제1 SSD(115)의 최대 밴드위스 2.5GB/s 와 RNIC(112)의 최대 밴스위스 5GB/s의 비, 즉 2.5/5=1/2로 나타날 수 있다. 제1 SSD(115)의 최대 페이로드 사이즈는 RNIC(112)의 최대 독출 요청 사이즈(MRRS) 2KB와 밴드위스 비율(BW RATIO) 1/2을 곱하여 1KB로 계산될 수 있다.
여기에서, 밴드위스 비율(BW RATIO)이 1 보다 작다는 것은, 제1 SSD(115) 하나로는 RNIC(112)의 최대 밴드위스 성능을 달성하기에 부족하다는 것을 의미한다. 이 경우, RNIC(112)에 제1 SSD(115) 이외에 다른 SSD(예, 제2 SSD(116))를 연결하여 병렬적으로 DMA하도록 설정하는 것이 필요하다. 반면에, 밴드위스 비율(BW RATIO)이 1과 같거나 크다는 것은, 제1 SSD(115)의 밴드위스가 RNIC(112)의 밴드위스보다 충분히 커서 제1 SSD(115) 하나로도 RNIC(112)의 최대 밴드위스 성능을 달성할 수 있다는 것을 의미한다.
S660 단계에서, 요청 매니저(510)는 S650 단계에서 계산된 제1 SSD(115)의 최대 페이로드 사이즈와 제1 SSD(115)의 최소 페이로드 사이즈를 비교할 수 있다. 만약 계산된 제1 SSD(115)의 최대 페이로드 사이즈가 제1 SSD(115)의 최소 페이로드 사이즈보다 크거나 같다면, 요청 매니저(510)는 최대 페이로드 사이즈로 제1 SSD(115)의 페이로드 사이즈를 셋팅할 수 있다(S670). S670 단계에서, 제1 SSD(115)의 최대 페이로드 사이즈 1KB는 제1 SSD(115)의 최소 페이로드 사이즈 1KB와 같기 때문에, 제1 SSD(115)의 페이로드 사이즈는 최대 페이로드 사이즈 1KB로 셋팅될 수 있다.
S660 단계에서, 만약 계산된 제1 SSD(115)의 최대 페이로드 사이즈가 제1 SSD(115)의 최소 페이로드 사이즈보다 작다면, 요청 매니저(510)는 최소 페이로드 사이즈로 제1 SSD(115)의 페이로드 사이즈를 셋팅할 수 있다(S680). 예시적으로, 제1 SSD(115)의 최소 페이로드 사이즈가 4KB라고 가정하자. 계산된 제1 SSD(115)의 최대 페이로드 사이즈 1KB 는 최소 페이로드 사이즈 4KB 보다 작기 때문에, 요청 매니저(510)는 제1 SSD(115)의 페이로드 사이즈를 최소 페이로드 사이즈 4KB로 셋팅할 수 있다.
상술한 S650 단계에서, 밴드위스 비율(BW RATIO)이 1 보다 작아서, RNIC(112)의 최대 밴드위스 성능을 달성하기 위해 제1 SSD(115) 이외에 다른 SSD(예, 제2 SSD(116))를 RNIC(112)에 접속하여 병렬적으로 DMA하는 방법이 제안되었다. RNIC(112)에 제2 SSD(116)와 같은 새로운 P2P 디바이스를 접속하여 RNIC(112)의 최대 밴드위스 성능을 달성하는 방법이 도 7에서 설명된다.
도 7은 본 발명의 일실시예에 따른 도 5의 요청 매니저의 동작을 설명하는 플로우챠트이다.
도 7을 참조하면, S710 단계에서, 요청 매니저(510)는 RNIC(112)의 최대 밴드위스(BWRNIC)를 결정할 수 있다. S720 단계에서, 요청 매니저(510)는 RNIC(112)의 최대 독출 요청 사이즈(MRRS)를 결정할 수 있다. 예시적으로, RNIC(112)는 최대 밴드위스(BWRNIC) 5GB/s, 최대 독출 요청 사이즈(MRRS) 2KB의 동작 특징을 갖는다고 가정하자.
S725 단계에서, 요청 매니저(510)는 RNIC(112)에 새로운 P2P 디바이스가 접속되었는지 판단할 수 있다. 새로운 P2P 디바이스는 예컨대, 제2 SSD(116)라고 가정하자. RNIC(112)에 제2 SSD(116)가 접속되면, S730 단계로 이동한다.
S730 단계에서, 요청 매니저(510)는 제2 SSD(116)의 최대 밴드위스(BWNEWP2P)를 수신할 수 있다. 예시적으로, 제2 SSD(116)의 최대 밴드위스(BWNEWP2P)는 2.5GB/s 일 수 있다.
S740 단계에서, 요청 매니저(510)는 제2 SSD(116)의 최소 페이로드 사이즈를 수신할 수 있다. 예시적으로, 제2 SSD(116)의 최소 페이로드 사이즈는 1KB 일 수 있다.
S750 단계에서, 요청 매니저(510)는 제2 SSD(116)의 최대 페이로드 사이즈를 계산할 수 있다. 제2 SSD(116)의 최대 페이로드 사이즈는 RNIC(112)의 최대 독출 요청 사이즈(MRRS)에다가 밴드위스 비율(BW RATIO)을 곱하는 연산을 수행하여 계산될 수 있다. 밴드위스 비율(BW RATIO)은 제2 SSD(116)의 최대 밴드위스와 RNIC(112)의 최대 밴스위스의 비로 결정될 수 있다. 예시적으로, 밴드위스 비율(BW RATIO)은 제2 SSD(116)의 최대 밴드위스 2.5GB/s 와 RNIC(112)의 최대 밴스위스 5GB/s의 비, 즉 1/2로 나타날 수 있다. 제2 SSD(116)의 최대 페이로드 사이즈는 RNIC(112)의 최대 독출 요청 사이즈(MRRS) 2KB와 밴드위스 비율(BW RATIO) 1/2을 곱하여 1KB로 계산될 수 있다.
S760 단계에서, 요청 매니저(510)는 S750 단계에서 계산된 제2 SSD(116)의 최대 페이로드 사이즈와 제2 SSD(116)의 최소 페이로드 사이즈를 비교할 수 있다. 만약 계산된 제2 SSD(116)의 최대 페이로드 사이즈가 제2 SSD(116)의 최소 페이로드 사이즈보다 크거나 같다면, 요청 매니저(510)는 최대 페이로드 사이즈로 제2 SSD(116)의 페이로드 사이즈를 셋팅할 수 있다(S770). S770 단계에서, 제2 SSD(116)의 최대 페이로드 사이즈 1KB는 제2 SSD(116)의 최소 페이로드 사이즈 1KB와 같기 때문에, 제2 SSD(116)의 페이로드 사이즈는 최대 페이로드 사이즈 1KB로 셋팅될 수 있다.
S760 단계에서, 계산된 제2 SSD(116)의 최대 페이로드 사이즈가 제2 SSD(116)의 최소 페이로드 사이즈보다 작다면, 요청 매니저(510)는 최소 페이로드 사이즈로 제2 SSD(116)의 페이로드 사이즈를 셋팅할 수 있다(S780).
도 6 및 도 7에서, 제1 및 제2 SSD들(115, 116) 둘 다는 동일한 동작 사양들, 최대 밴드위스 2.5GB/s와 최소 페이로드 사이즈 2KB로 구성된 동종의 SSD들이다. 이에 따라, RNIC(112)는 제1 SSD(115)와 제2 SSD(116) 각각에 대하여 동일하게 계산된 최대 페이로드 사이즈 1KB를 해당 페이로드 사이즈로 셋팅할 수 있다.
실시예에 따라, 제1 및 제2 SSD들(115, 116)은 서로 다른 동작 사양들을 갖는 이종의 SSD들일 수 있다. 예시적으로, 제2 SSD(116)는 제1 SSD(115)의 최대 밴드위스 2.5GB/s와 최소 페이로드 사이즈 2KB와 다르게, 최대 밴드위스 2.5GB/s와 최소 페이로드 사이즈 4KB로 구성된다고 가정하자.
이 경우, RNIC(112)는 RNIC(112)의 최대 독출 요청 사이즈(MRRS) 2KB와 밴드위스 비율(BW RATIO) 1/2을 곱하여 제2 SSD(116)의 최대 페이로드 사이즈 1KB를 계산할 수 있다. 그런데, 계산된 최대 페이로드 사이즈 1KB 보다 제2 SSD(116)의 최소 페이로드 사이즈 4KB 보다 작기 때문에, RNIC(112)는 최소 페이로드 사이즈 4KB를 제2 SSD(116)의 페이로드 사이즈로 셋팅할 수 있다. 이에 따라, RNIC(112)는 제1 SSD(115)의 페이로드 사이즈는 계산된 최대 페이로드 사이즈 1KB로 셋팅하고, 제2 SSD(116)의 페이로드 사이즈는 최소 페이로드 사이즈 4KB로 셋팅할 수 있다.
도 8a 및 도 8b는 도 6 및 도 7의 RNIC 동작에 따른 데이터 전송을 설명하는 도면들이다. 도 8a 및 도 8b는 도 4a 및 도 4b의 데이터 전송에 대비되는 것으로, 설명의 편의를 위하여, 도 4a 및 도 4b의 데이터 전송과의 차이점을 중심으로 설명된다.
도 8a를 참조하면, RNIC(112)는 제1 및 제2 SSD(115, 116) 각각의 데이터 버퍼(423a, 423b)의 데이터를 읽어갈 수 있다(813a, 813b).
RNIC(112)는 도 6의 동작을 수행하여 제1 SSD(115)의 페이로드 사이즈를 계산된 최대 페이로드 사이즈 1KB로 셋팅할 수 있다. 그리고, RNIC(112)는 도 7의 동작을 수행하여 제2 SSD(116)의 페이로드 사이즈를 계산된 최대 페이로드 사이즈 1KB로 셋팅할 수 있다.
RNIC(112)는 제1 SSD(115)의 데이터 버퍼(423a)의 128KB 페이로드(424a)를 계산된 최대 페이로드 사이즈 1KB씩 DMA할 수 있다(813a). 이와 동시에, RNIC(112)는 제2 SSD(116)의 데이터 버퍼(423b)의 128KB 페이로드(424b)를 계산된 최대 페이로드 사이즈 1KB씩 DMA할 수 있다(813b).
도 8b를 참조하면, T1 시점에서, RNIC(112)는 제1 및 제2 SSD(115, 116) 각각으로부터 1KB 데이터를 DMA 이용하여 읽어 갈 수 있다. T2 시점에서, RNIC(112)는 제1 및 제2 SSD(115, 116) 각각으로부터 1KB 데이터를 DMA 이용하여 읽어 갈 수 있다. 그리고, T128 시점에서, RNIC(112)는 제1 및 제2 SSD(115, 116) 각각으로부터 1KB 데이터를 DMA 이용하여 읽어 갈 수 있다. RNIC(112)는 DMA 시점들(T1-T128) 마다 제1 및 제2 SSD들(115, 116)에서 2KB 데이터를 읽어간다.
도 8a 및 도 8b의 데이터 전송은 제1 및 제2 SSD들(115, 116)의 접속들에 의해 NVMe-oF의 확장성(scalability)을 보장할 수 있다. 그리고, 제1 및 제2 SSD들(115, 116)의 페이로드 사이즈를 1KB로 제한함에 따라, RNIC(112)의 최대 독출 요청 사이즈(MRRS) 2KB에 잘 부합하고, RNIC(112)의 밴드위스 5.0GB/s를 최대화하여 데이터 전송의 QoS(Quality of Service)를 향상시킬 수 있다. 또한, NVMe-oF 프로토콜에 맞게 제1 및 제2 SSD(115, 116) 각각이 독립적으로 동작하는 분산(offloading)이 가능하다.
도 9는 본 발명의 일실시예에 따른 PCIe P2P 접속의 밴드위스를 최대 밴드위스로 동작시키는 스토리지 디바이스를 설명하는 도면이다. 도 9는 도 5에서 설명된 RNIC(112)의 요청 매니저(510)의 동작 일부가 스토리지 디바이스(114)에서 수행되도록 하여, RNIC(112)가 최대 밴드위스로 동작하도록 하는 요청 매니저(910)에 대하여 설명될 것이다.
도 9를 참조하면, 제1 내지 제4 SSD들(115~118) 각각은 요청 매니저(910)를 포함할 수 있다. 제1 내지 제4 SSD들(115~118) 중에서 제1 SSD(115)의 요청 매니저(910)에 대하여 구체적으로 설명될 것이다. 제1 SSD(115)의 요청 매니저(910)의 동작은 제2 내지 제4 SSD들(116~118)의 요청 매니저에 동일하게 적용될 수 있다.
요청 매니저(910)는 스플릿 페이로드 모듈(914)과 패킷 발생 모듈(916)을 포함할 수 있다. 스플릿 페이로드 모듈(914)은 RNIC(112)의 최대 밴드위스(BWRNIC) 및 최대 독출 요청 사이즈(MRRS)를 결정하고, 제1 SSD(115)의 최대 밴드위스(BWSSD) 및 최소 페이로드 사이즈를 결정할 수 있다.
스플릿 페이로드 모듈(914)은 제1 SSD(115)의 최대 밴드위스(BWSSD)와 RNIC(112)의 최대 밴드위스(BWRNIC) 사이의 밴드위스 비율을 계산할 수 있다. 스플릿 페이로드 모듈(914)은 제1 SSD(115)의 최대 밴드위스(BWSSD)를 RNIC(112)의 최대 밴드위스(BWRNIC)로 나누는 연산을 수행하여 밴드위스 비율(BWSSD/BWRNIC)을 계산할 수 있다.
스플릿 페이로드 모듈(914)은 RNIC(112)의 최대 독출 요청 사이즈(MRRS) 및 제1 SSD(115)와 RNIC(112)의 밴드위스 비율(BWSSD/BWRNIC)을 이용하여, 제1 SSD(115)의 최대 페이로드 사이즈를 계산할 수 있다. 스플릿 페이로드 모듈(914)은 RNIC(112)의 최대 독출 요청 사이즈(MRRS)에다가 밴드위스 비율(BWSSD/BWRNIC)을 곱하는 연산을 수행하여 제1 SSD(115)의 최대 페이로드 사이즈를 계산할 수 있다.
스플릿 페이로드 모듈(914)은 제1 SSD(115)의 최소 페이로드 사이즈와 계산된 최대 페이로드 사이즈를 비교할 수 있다. 스플릿 페이로드 모듈(914)은 제1 SSD(115)의 계산된 최대 페이로드 사이즈가 최소 페이로드 사이즈 보다 크거나 같은 경우, 제1 SSD(115)의 페이로드 사이즈를 계산된 최대 페이로드 사이즈로 셋팅할 수 있다. 스플릿 페이로드 모듈(914)은 제1 SSD(115)의 계산된 최대 페이로드 사이즈가 최소 페이로드 사이즈 보다 작은 경우, 제1 SSD(115)의 페이로드 사이즈를 해당 최소 페이로드 사이즈로 셋팅할 수 있다.
제1 SSD(115)는, RNIC(112)의 작업 요청에 따라 커맨드 엔트리들을 작성할 수 있다. 스플릿 페이로드 모듈(914)은 작업 요청에 따라 NAND 시스템(425a)에서 독출된 데이터(R_DATA)를 커맨드 엔트리들 각각에 대응되며 계산된 최대 페이로드 사이즈를 갖는 데이터 여러 개로 분산할 수 있다.
패킷 발생 모듈(916)은 스플릿 페이로드 모듈(914)에 의해 분산된 여러 개의 데이터를 하나로 합하여 데이터 패킷을 생성할 수 있다. 패킷 발생 모듈(916)은 장치 드라이버(920)를 통하여 데이터 패킷을 RNIC(112)로 제공할 수 있다. 장치 드라이버(920)는 RNIC(112)가 제1 SSD(115)의 데이터 패킷을 DMA 읽기할 때 마다 도어벨 울리기(doorbell ring) 동작으로 통지할 수 있다.
제1 SSD(115)의 요청 매니저(910)의 기능들은 소프트웨어에 의해 제어되거나 하드웨어 자동화될 수 있다. 이와 마찬가지로, 제2 내지 제4 SSD(116~118)의 요청 매니저들의 기능들도 소프트웨어에 의해 제어되거나 하드웨어 자동화될 수 있다. 제1 내지 제4 SSD들(115~118) 각각의 요청 매니저의 동작에 의해, RNIC(112)는 제1 내지 제4 SSD들(115~118)과 최대 밴드위스로 데이터 전송할 수 있다.
도 5 내지 도 9에서 설명된 요청 매니저들(510, 910)의 동작 방법들은, ROM 디바이스들과 같은 기록 불가능 저장 매체 상에 영구적으로 저장된 프로그램 코드들이거나, 플로피 디스크, 자기 테이프, CD들, RAM 디바이스들 및/또는 다른 자기 및 광학 매체와 같은 비일시적인 기록 가능 저장 매체 상에 변경 가능한 프로그램 코드이거나, 또는 인터넷 또는 전화 모뎀 라인들과 같은 전자 네트워크에서와 같이 통신 매체를 통해 컴퓨터로 전달된 프로그램 코드들과 같은 형태로 인식될 수 있다.
실시예에 따라, 요청 매니저들(510, 910)의 동작 방법들은 소프트웨어 실행 가능 객체에서 또는 명령어들에 응답하는 프로세서에 의한 실행을 위해 인코딩된 명령어들의 세트로서 구현된 컴퓨터 프로그램 제품으로 제공될 수 있다.
실시예에 따라, 요청 매니저들(510, 910)의 동작 방법들은 주문형 집적 회로들(ASICs), 필드 프로그래머블 게이트 어레이들(FPGAs), 상태 머신들, 제어기들, 또는 다른 하드웨어 컴포넌트들 또는 디바이스들과 같은 하드웨어 컴포넌트들, 또는 하드웨어, 소프트웨어 및 펌웨어 컴포넌트들의 조합을 사용하여 전제적으로 또는 부분적으로 구현될 수 있다.
도 10a 및 도 10b는 본 발명의 실시예들에 따른 요청 매니저들의 동작에 따른 RNIC의 성능을 설명하는 그래프들이다. 도 10a는 본 발명의 요청 매니저를 실행하지 않았을 때의 RNIC의 성능을 보여주고, 도 10b는 도 5 내지 도 9의 요청 매니저를 실행하였을 때의 RNIC의 성능을 보여준다. 도 10a 및 도 10b의 가로축은 페이로드 사이즈를 나타내고, 세로축은 RNIC의 최대 밴드위스를 나타낸다. 도 10a 및 도 10b에서는 RNIC(112, 도 4a 및 도 8a)의 최대 밴드위스 5.0GB/s이고, 제1 및 제2 SSD들(115, 116, 도 4a 및 도 8a)의 최대 밴드위스 2.5GB/s이고, RNIC의 최대 독출 요청 사이즈 2KB, 8KB, 32KB 각각에 대한 RNIC의 성능을 보여준다.
도 4a 및 도 10a를 참조하면, 최대 독출 요청 사이즈 2KB의 경우, 페이로드 사이즈가 최대 독출 요청 사이즈 2KB 보다 작은 영역(A 영역)까지 RNIC는 최대 밴드위스 5.0GB/s 성능을 보여주지만, 페이로드 사이즈가 최대 독출 요청 사이즈 2KB 보다 큰 영역(B, C, D 영역들)에서 RNIC의 밴드위스는 2.5GB/s 정도로 저하됨을 볼 수 있다.
최대 독출 요청 사이즈 8KB의 경우, 페이로드 사이즈가 최대 독출 요청 사이즈 8KB 보다 작은 영역(B 영역)까지 RNIC는 최대 밴드위스 5.0GB/s 성능을 보여주지만, 페이로드 사이즈가 최대 독출 요청 사이즈 8KB 보다 큰 영역(C, D 영역들)에서 RNIC의 밴드위스는 2.5.0GB/s 정도로 저하됨을 볼 수 있다.
그리고, 최대 독출 요청 사이즈 32KB의 경우, 페이로드 사이즈가 최대 독출 요청 사이즈 32KB 보다 작은 영역(C 영역)까지 RNIC는 최대 밴드위스 5.0GB/s 성능을 보여주지만, 페이로드 사이즈가 최대 독출 요청 사이즈 32KB 보다 큰 영역(D 영역)에서 RNIC의 밴드위스는 2.5.0GB/s 정도로 저하됨을 볼 수 있다.
도 10a는 제1 및 제2 SSD들(115, 116)의 페이로드 사이즈가 RNIC(112)의 최대 독출 요청 사이즈 보다 큰 경우, RNIC(112)가 하나의 SSD(예, 제1 SSD(115))에 포커싱되어, RNIC(112)의 최대 밴드위스 성능이 제1 SSD(115)의 2.5Gb/s 밴드위스로 제한됨을 보여준다. 이를 해결하기 위하여, 도 5 내지 도 9의 요청 매니저를 이용하여 제1 및 제2 SSD들(115, 116)의 페이로드 사이즈를 변경할 수 있다.
도 8a 및 도 10b을 참조하면, RNIC의 최대 독출 요청 사이즈 2KB, 8KB, 32KB 각각에 대하여 RNIC(112)의 최대 밴드위스 5.0Gb/s 성능을 보여준다. RNIC의 최대 독출 요청 사이즈 2KB, 8KB, 32KB 각각에다가 제1 및 제2 SSD들(115, 116)과 RNIC(112)의 밴드위스 비율 2.5/5=1/2가 곱해져서 최대 페이로드 사이즈 1KB, 4KB, 16KB가 계산되고, 제1 및 제2 SSD들(115, 116)의 페이로드 사이즈가 계산된 최대 페이로드 사이즈 1KB, 4KB, 16KB으로 셋팅되어, RNIC(112)의 최대 밴드위스 성능이 5.0GB/s로 유지됨을 볼 수 있다.
도 11은 본 발명의 실시예에 따른 서버 시스템을 보여주는 블록 다이어그램이다.
도 11을 참조하면, 서버 시스템(1100)은 복수의 서버들(110_1, 110_2, … , 110_N)을 포함할 수 있다. 복수의 서버들(110_1, 110_2, … , 110_N)은 관리자(1110)와 연결될 수 있다. 복수의 서버들(110_1, 110_2, … , 110_N)은 상술된 서버(110)와 동일 또는 유사할 수 있다. 복수의 서버들(110_1, 110_2, … , 110_N) 각각은, RNIC(112)와 복수개의 스토리지 요소들(115-118)로 구성되는 스토리지 디바이스(114)를 포함하고, RNIC(112)는 PCIe 버스를 통하여 접속되는 복수개의 스토리지 요소들(115-118)을 RNIC(112)의 최대 밴드위스로 DMA 억세스할 수 있다.
도 12는 본 발명의 실시예에 따른 데이터 센터를 보여주는 블록 다이어그램이다.
도 12를 참조하면, 데이터 센터(1200)는 복수의 서버 시스템들(1100_1, 1100_2, … , 1100_N)을 포함할 수 있다. 복수의 서버 시스템들(1100_1, 1100_2, … , 1100_N) 각각은 도 11에 도시된 서버 시스템(1100)과 유사하거나 동일할 수 있다. 복수의 서버 시스템들(1100_1, 1100_2, … , 1100_N)은 인터넷과 같은 네트워크(130)를 통하여 다양한 노드들(1210_1, 1210_2, … , 1210_M)과 통신할 수 있다. 예를 들어, 노드들(1210_1, 1210_2, … , 1210_M)은 클라이언트 컴퓨터들, 다른 서버들, 원격 데이터 센터들, 스토리지 시스템들 중 어느 하나일 수 있다.
본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (20)

  1. PCIe P2P(peer-to-peer) 접속된 디바이스들사이의 데이터 전송 밴드위스를 최대화하는 방법에 있어서,
    제1 디바이스의 최대 밴드위스 및 최대 독출 요청 사이즈를 결정하는 단계;
    제2 디바이스의 최대 밴드위스를 결정하는 단계;
    상기 제1 디바이스의 상기 최대 독출 요청 사이즈, 상기 제1 디바이스의 상기 최대 밴드위스 및 상기 제2 디바이스의 상기 최대 밴드위스에 기초하여, 상기 제2 디바이스의 제1 최대 페이로드 사이즈를 계산하는 단계; 및
    상기 계산된 제1 최대 페이로드 사이즈에 기초하여, 상기 제2 디바이스의 페이로드 사이즈를 셋팅하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 제2 디바이스의 상기 제1 최대 페이로드 사이즈를 계산하는 단계는,
    상기 제2 디바이스의 상기 최대 밴드위스를 상기 제1 디바이스의 상기 최대 밴드위스로 나누는 연산을 수행하여 제1 밴드위스 비율을 계산하는 단계; 및
    상기 제1 디바이스의 최대 독출 요청 사이즈에다가 상기 제1 밴드위스 비율을 곱하는 연산을 수행하여 상기 제2 디바이스의 상기 제1 최대 페이로드 사이즈를 계산하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 방법은
    상기 제2 디바이스의 최소 페이로드 사이즈와 상기 계산된 제1 최대 페이로드 사이즈를 비교하는 단계를 더 포함하고,
    상기 제2 디바이스의 페이로드 사이즈를 결정하는 단계는,
    상기 비교 결과, 상기 계산된 제1 최대 페이로드 사이즈가 상기 제2 디바이스의 상기 최소 페이로드 사이즈 보다 크거나 같은 경우, 상기 제2 디바이스의 페이로드 사이즈를 상기 계산된 제1 최대 페이로드 사이즈로 셋팅하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 제2 디바이스의 페이로드 사이즈를 결정하는 단계는,
    상기 비교 결과, 상기 계산된 제1 최대 페이로드 사이즈가 상기 제2 디바이스의 상기 최소 페이로드 사이즈 보다 작은 경우, 상기 제2 디바이스의 페이로드 사이즈를 상기 최소 페이로드 사이즈로 셋팅하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 방법은,
    상기 제1 디바이스의 작업 요청에 따라 상기 제2 디바이스 내 커맨드 엔트리들을 작성하는 단계; 및
    상기 작업 요청에 따른 상기 제2 디바이스의 데이터를 상기 커맨드 엔트리들 각각에 대응되도록 상기 계산된 제1 최대 페이로드 사이즈를 갖는 데이터 여러 개로 분산시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서, 상기 방법은,
    상기 제2 디바이스에서, 상기 커맨드 엔트리들에 따라 분산된 상기 여러 개의 데이터를 하나로 합하여 데이터 패킷을 생성하는 단계; 및
    상기 제2 디바이스에서, 상기 데이터 패킷을 상기 제1 디바이스로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제5항에 있어서, 상기 방법은,
    상기 제2 디바이스에서, 상기 커맨드 엔트리들에 따라 분산된 상기 여러 개의 데이터를 상기 제1 디바이스로 전송하고 완결 통지하는 단계; 및
    상기 제1 디바이스에서 상기 여러 개의 데이터를 하나로 합하여 데이터 패킷을 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서, 상기 방법은
    상기 제1 디바이스에 제3 디바이스가 접속되었는지 판단하는 단계;
    상기 제3 디바이스의 최대 밴드위스 및 최소 페이로드 사이즈를 결정하는 단계;
    상기 제1 디바이스의 상기 최대 독출 요청 사이즈, 상기 제1 디바이스의 상기 최대 밴드위스, 및 상기 제3 디바이스의 상기 최대 밴드위스에 기초하여, 상기 제3 디바이스의 제2 최대 페이로드 사이즈를 계산하는 단계; 및
    상기 계산된 제2 최대 페이로드 사이즈에 기초하여, 상기 제3 디바이스의 페이로드 사이즈를 셋팅하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 제3 디바이스의 상기 제2 최대 페이로드 사이즈를 계산하는 단계는,
    상기 제3 디바이스의 상기 최대 밴드위스를 상기 제1 디바이스의 상기 최대 밴드위스로 나누는 연산을 수행하여 제2 밴드위스 비율을 계산하는 단계; 및
    상기 제1 디바이스의 최대 독출 요청 사이즈에다가 상기 제2 밴드위스 비율을 곱하는 연산을 수행하여 상기 제3 디바이스의 상기 제2 최대 페이로드 사이즈를 계산하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 제8항에 있어서, 상기 방법은
    상기 제3 디바이스의 최소 페이로드 사이즈와 상기 계산된 제2 최대 페이로드 사이즈를 비교하는 단계를 더 포함하고,
    상기 제3 디바이스의 페이로드 사이즈를 셋팅하는 단계는,
    상기 비교 결과, 상기 계산된 제2 최대 페이로드 사이즈가 상기 제3 디바이스의 상기 최소 페이로드 사이즈 보다 크거나 같은 경우, 상기 제3 디바이스의 페이로드 사이즈를 상기 계산된 제2 최대 페이로드 사이즈로 셋팅하는 단계; 및
    상기 비교 결과, 상기 계산된 제2 최대 페이로드 사이즈가 상기 제3 디바이스의 상기 최소 페이로드 사이즈 보다 작은 경우, 상기 제3 디바이스의 페이로드 사이즈를 상기 제3 디바이스의 상기 최소 페이로드 사이즈로 셋팅하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제1항에 있어서,
    상기 방법은 상기 제1 디바이스에서 수행되는 것을 특징으로 하는 방법.
  12. 제1항에 있어서,
    상기 방법은 상기 제2 디바이스에서 수행되는 것을 특징으로 하는 방법.
  13. 호스트에 의해 발행된 요청들에 응답하는 인터페이스 디바이스; 및
    상기 호스트에 의한 억세스를 위한 복수개의 스토리지 요소들로 구성되는 스토리지 디바이스를 포함하고,
    상기 인터페이스 디바이스 또는 상기 복수개의 스토리지 요소들은, 상기 인터페이스 디바이스의 최대 독출 요청 사이즈, 상기 인터페이스 디바이스의 최대 밴드위스 및 상기 복수개의 스토리지 요소들 각각의 최대 밴드위스에 기초하여 상기 복수개의 스토리지 요소들 각각의 최대 페이로드 사이즈를 계산하고, 상기 계산된 최대 페이로드 사이즈에 기초하여 상기 복수개의 스토리지 요소들 각각의 페이로드 사이즈를 셋팅하는 데이터 프로세싱 시스템.
  14. 제13항에 있어서, 상기 인터페이스 디바이스 또는 상기 복수개의 스토리지 요소들은,
    상기 복수개의 스토리지 요소들 각각의 상기 최대 밴드위스를 상기 인터페이스 디바이스의 상기 최대 밴드위스로 나누는 연산을 수행하여 밴드위스 비율들을 계산하고, 상기 인터페이스 디바이스의 최대 독출 요청 사이즈에다가 상기 밴드위스 비율들 각각을 곱하는 연산을 수행하여 상기 복수개의 스토리지 요소들 각각의 상기 최대 페이로드 사이즈를 계산하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  15. 제13항에 있어서, 상기 인터페이스 디바이스 또는 상기 복수개의 스토리지 요소들은,
    상기 복수개의 스토리지 요소들 각각의 최소 페이로드 사이즈와 해당 스토리지 요소의 상기 계산된 최대 페이로드 사이즈를 비교하여, 상기 해당 스토리지 요소의 상기 계산된 최대 페이로드 사이즈가 상기 해당 스토리지 요소의 상기 최소 페이로드 사이즈 보다 크거나 같은 경우, 상기 해당 스토리지 요소의 페이로드 사이즈를 상기 계산된 최대 페이로드 사이즈로 셋팅하고, 상기 해당 스토리지 요소의 상기 계산된 최대 페이로드 사이즈가 상기 해당 스토리지 요소의 상기 최소 페이로드 사이즈 보다 작은 경우, 상기 해당 스토리지 요소의 페이로드 사이즈를 상기 최소 페이로드 사이즈로 셋팅하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  16. 제13항에 있어서, 상기 인터페이스 디바이스는,
    상기 복수개의 스토리지 요소들 각각의 데이터를 상기 해당 스토리지 요소의 상기 계산된 최대 페이로드 사이즈를 갖는 데이터 여러 개로 분산하기 위하여, 상기 복수개의 스토리지 요소들 각각의 커맨드 엔트리들을 분할하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  17. 제16항에 있어서, 상기 복수개의 스토리지 요소들 각각은,
    상기 분할된 커맨드 엔트리들에 따라 분산된 상기 여러 개의 데이터를 하나로 합하여 데이터 패킷을 생성하고, 상기 데이터 패킷을 상기 인터페이스 디바이스로 전송하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  18. 제16항에 있어서, 상기 복수개의 스토리지 요소들 각각은,
    상기 커맨드 엔트리들에 따라 분산된 상기 여러 개의 데이터를 상기 인터페이스 디바이스로 전송하고 완결 통지하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  19. 제18항에 있어서, 상기 인터페이스 디바이스는,
    상기 복수개의 스토리지 요소들 각각에서 수신된 상기 여러 개의 데이터를 하나로 합하여 데이터 패킷을 생성하고, 상기 데이터 패킷을 상기 호스토로 전송하는 것을 특징으로 하는 데이터 프로세싱 시스템.
  20. PCIe P2P(peer-to-peer) 접속된 디바이스들 사이의 데이터 전송 밴드위스를 최대화하기 위한 컴퓨터 판독 가능 프로그램 코드가 구현되어 있는 컴퓨터 사용 가능 매체를 포함하는 컴퓨터 프로그램 제품에 있어서,
    제1 디바이스의 최대 밴드위스 및 최대 독출 요청 사이즈를 결정하고, 제2 디바이스의 최대 밴드위스 및 최소 페이로드 사이즈를 결정하도록 구성되어 있는 프로그램 코드;
    상기 제1 디바이스의 상기 최대 독출 요청 사이즈와 상기 제1 및 제2 디바이스들의 밴드위스 비율을 이용하여, 상기 제2 디바이스의 최대 페이로드 사이즈를 계산하도록 구성되어 있는 프로그램 코드;
    상기 제2 디바이스의 상기 최소 페이로드 사이즈와 상기 계산된 최대 페이로드 사이즈를 비교하도록 구성되어 있는 프로그램 코드; 및
    상기 비교 결과, 상기 계산된 최대 페이로드 사이즈가 상기 최소 페이로드 사이즈 보다 크거나 같은 경우에 상기 계산된 최대 페이로드 사이즈로 상기 제2 디바이스의 페이로드 사이즈를 셋팅하고, 상기 계산된 최대 페이로드 사이즈가 상기 최소 페이로드 사이즈 보다 작은 경우에 상기 최소 페이로드 사이즈로 상기 제2 디바이스의 페이로드 사이즈를 셋팅하도록 구성되어 있는 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
KR1020170115404A 2017-09-08 2017-09-08 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 KR102429904B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170115404A KR102429904B1 (ko) 2017-09-08 2017-09-08 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
US15/950,908 US10642777B2 (en) 2017-09-08 2018-04-11 System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection
SG10201805213RA SG10201805213RA (en) 2017-09-08 2018-06-19 SYSTEM AND METHOD FOR MAXIMIZING BANDWIDTH OF PCI EXPRESS (PCIe) PEER-TO-PEER (P2P) CONNECTION
CN201810764962.2A CN109471833B (zh) 2017-09-08 2018-07-12 用于最大化PCIe对等连接的带宽的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170115404A KR102429904B1 (ko) 2017-09-08 2017-09-08 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20190028217A true KR20190028217A (ko) 2019-03-18
KR102429904B1 KR102429904B1 (ko) 2022-08-05

Family

ID=65631392

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170115404A KR102429904B1 (ko) 2017-09-08 2017-09-08 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템

Country Status (4)

Country Link
US (1) US10642777B2 (ko)
KR (1) KR102429904B1 (ko)
CN (1) CN109471833B (ko)
SG (1) SG10201805213RA (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102429904B1 (ko) * 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
US20190102287A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Remote persistent memory access device
TWI636366B (zh) * 2017-11-22 2018-09-21 緯穎科技服務股份有限公司 資料冗餘的處理方法及其相關電腦系統
KR20200008483A (ko) * 2018-07-16 2020-01-28 삼성전자주식회사 PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법
US11403253B2 (en) * 2018-09-13 2022-08-02 Microsoft Technology Licensing, Llc Transport protocol and interface for efficient data transfer over RDMA fabric
US10942881B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Parallel operations in aggregated and virtualized solid state drives
US11768613B2 (en) * 2019-06-25 2023-09-26 Micron Technology, Inc. Aggregation and virtualization of solid state drives
US11573708B2 (en) 2019-06-25 2023-02-07 Micron Technology, Inc. Fail-safe redundancy in aggregated and virtualized solid state drives
US11762798B2 (en) * 2019-06-25 2023-09-19 Micron Technology, Inc. Aggregated and virtualized solid state drives with multiple host interfaces
US10942846B2 (en) 2019-06-25 2021-03-09 Micron Technology, Inc. Aggregated and virtualized solid state drives accessed via multiple logical address spaces
US11513923B2 (en) 2019-06-25 2022-11-29 Micron Technology, Inc. Dynamic fail-safe redundancy in aggregated and virtualized solid state drives
US11055249B2 (en) 2019-06-25 2021-07-06 Micron Technology, Inc. Access optimization in aggregated and virtualized solid state drives
CN112579311B (zh) * 2019-09-30 2023-11-10 华为技术有限公司 访问固态硬盘的方法及存储设备
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
CN112799982A (zh) * 2021-03-02 2021-05-14 井芯微电子技术(天津)有限公司 一种集总式rdma链接管理的方法
US11899935B2 (en) * 2021-04-16 2024-02-13 EMC IP Holding Company, LLC System and method for user space NVMe-over-RDMA host library

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060106955A1 (en) * 2004-11-12 2006-05-18 Jing-Rung Wang Method for dynamically adjusting the data transfer order of PCI express root ports
US20080263246A1 (en) * 2007-04-17 2008-10-23 Larson Chad J System and Method for Balancing PCI-Express Bandwidth

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09130389A (ja) * 1995-10-30 1997-05-16 Fujitsu Ltd Atm交換機
US5987479A (en) * 1997-09-24 1999-11-16 Sony Corporation, Inc. Large block allocation for disk-based file systems
US6397258B1 (en) * 1998-09-14 2002-05-28 Matsushita Electric Industrial, Co., Ltd. File system
US7796519B2 (en) * 2001-09-10 2010-09-14 Nippon Telegraph And Telephone Corporation Dynamic bandwidth allocation circuit, dynamic bandwidth allocation method, optical network unit, PON system, dynamic bandwidth allocation program and recording medium
US7917903B2 (en) * 2003-03-27 2011-03-29 Hewlett-Packard Development Company, L.P. Quality of service controller and method for a data storage system
WO2005006673A1 (ja) * 2003-07-15 2005-01-20 Fujitsu Limited 帯域制御装置
US8533379B2 (en) 2003-12-18 2013-09-10 Nxp B.V. Serial communication device configurable to operate in root mode or endpoint mode
US7580406B2 (en) * 2004-12-31 2009-08-25 Intel Corporation Remote direct memory access segment generation by a network controller
CN100524266C (zh) 2005-07-11 2009-08-05 辉达公司 在总线上以包的形式传输数据传输请求的方法及设备
US8516165B2 (en) * 2005-10-19 2013-08-20 Nvidia Corporation System and method for encoding packet header to enable higher bandwidth efficiency across bus links
US20080034147A1 (en) 2006-08-01 2008-02-07 Robert Stubbs Method and system for transferring packets between devices connected to a PCI-Express bus
JP4356765B2 (ja) 2007-04-20 2009-11-04 ソニー株式会社 情報処理装置および方法、並びにプログラム
US8045472B2 (en) * 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity
JP5237841B2 (ja) * 2009-01-27 2013-07-17 アラクサラネットワークス株式会社 帯域制御装置および通信制御半導体
US20110246686A1 (en) 2010-04-01 2011-10-06 Cavanagh Jr Edward T Apparatus and system having pci root port and direct memory access device functionality
JP2013250775A (ja) * 2012-05-31 2013-12-12 Fujitsu Ltd 仮想マシン管理装置、仮想マシン管理プログラム、仮想マシン管理方法及びネットワークシステム
US20140129741A1 (en) 2012-11-07 2014-05-08 Mellanox Technologies Ltd. Pci-express device serving multiple hosts
US9058453B2 (en) 2013-05-24 2015-06-16 Nvidia Corporation System and method for configuring a channel
US20160092117A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Reduction of performance impact of uneven channel loading in solid state drives
US11036533B2 (en) * 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
JP6558090B2 (ja) * 2015-06-15 2019-08-14 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム
US10067900B2 (en) 2015-08-25 2018-09-04 Oracle International Corporation Virtualized I/O device sharing within a distributed processing node system
US9684461B1 (en) * 2016-10-31 2017-06-20 International Business Machines Corporation Dynamically adjusting read data return sizes based on memory interface bus utilization
KR102429904B1 (ko) * 2017-09-08 2022-08-05 삼성전자주식회사 PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060106955A1 (en) * 2004-11-12 2006-05-18 Jing-Rung Wang Method for dynamically adjusting the data transfer order of PCI express root ports
US20080263246A1 (en) * 2007-04-17 2008-10-23 Larson Chad J System and Method for Balancing PCI-Express Bandwidth

Also Published As

Publication number Publication date
CN109471833A (zh) 2019-03-15
KR102429904B1 (ko) 2022-08-05
CN109471833B (zh) 2023-10-31
US10642777B2 (en) 2020-05-05
US20190079895A1 (en) 2019-03-14
SG10201805213RA (en) 2019-04-29

Similar Documents

Publication Publication Date Title
KR102429904B1 (ko) PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템
US11159454B2 (en) Technologies for accelerating edge device workloads
US11036669B2 (en) Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
CN110888827B (zh) 数据传输方法、装置、设备及存储介质
JP6490310B2 (ja) ネットワーキング技術
US11025564B2 (en) RDMA transport with hardware integration and out of order placement
US20180285294A1 (en) Quality of service based handling of input/output requests method and apparatus
US11068412B2 (en) RDMA transport with hardware integration
EP3441878B1 (en) Method and device for data transmission in virtual switch technique
CN112130748B (zh) 一种数据访问方法、网卡及服务器
US20190044879A1 (en) Technologies for reordering network packets on egress
US20230259284A1 (en) Network interface card, controller, storage apparatus, and packet sending method
WO2021063160A1 (zh) 访问固态硬盘的方法及存储设备
JP2016531372A (ja) メモリモジュールアクセス方法および装置
CN111404842B (zh) 数据传输方法、装置及计算机存储介质
US20140289307A1 (en) Method for transmitting data between electronic devices
CN110611622B (zh) 用于负载均衡的方法、网络接口卡以及计算机可读介质
KR20200051196A (ko) 추가의 네트워크 주소 변환 테이블을 참조하여 빠른 패킷 포워딩을 제공하는 전자 장치
US11507441B2 (en) Asymmetric fulfillment of remote procedure calls by multi-core systems
US20240069754A1 (en) Computing system and associated method
EP4080851A1 (en) System of and method for reducing congestion in a network

Legal Events

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