CN109471833B - 用于最大化PCIe对等连接的带宽的系统和方法 - Google Patents
用于最大化PCIe对等连接的带宽的系统和方法 Download PDFInfo
- Publication number
- CN109471833B CN109471833B CN201810764962.2A CN201810764962A CN109471833B CN 109471833 B CN109471833 B CN 109471833B CN 201810764962 A CN201810764962 A CN 201810764962A CN 109471833 B CN109471833 B CN 109471833B
- Authority
- CN
- China
- Prior art keywords
- payload size
- pcie
- maximum
- data
- rnic
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000002093 peripheral effect Effects 0.000 claims abstract description 11
- 239000007787 solid Substances 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000004044 response Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
- G06F13/4278—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using an embedded synchronisation
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
一种最大化外围设备互连(PCIe)对等(P2P)连接的带宽的方法和系统确定第一装置的最大带宽和最大读请求大小、确定第二装置的最大带宽和最小有效载荷大小、通过利用第一装置的最大读请求大小和第一装置与第二装置之间的带宽比率计算第二装置的计算的最大有效载荷大小、将第二装置的最小有效载荷大小与计算的最大有效载荷大小进行比较以及当计算的最大有效载荷大小等于或大于最小有效载荷大小时将第二装置的工作有效载荷大小设置为计算的最大有效载荷大小。
Description
相关申请的交叉引用
本申请要求于2017年9月8日在韩国知识产权局提交的韩国专利申请No.10-2017-0115404的权益,该申请的公开内容通过引用方式整体并入本文中。
技术领域
本发明构思涉及一种数据处理系统,并且更具体地说,涉及一种用于利用最大带宽在外围设备互连(PCIe)对等(P2P)连接的装置之间执行数据传递的方法和系统。
背景技术
固态驱动器(SSD)是高性能、高速度的存储装置。已经使用并且当前还在使用非易失性快速存储器(NVMe),所述NVMe是针对访问SSD而优化的高速数据传输标准。NVMe针对安装在PCIe接口上的存储装置(或非易失性存储器)提供直接输入/输出(I/O)访问。然而,在特定的存储装置上进行海量存储的情况下,使用NVMe可减小PCIe带宽。
发明内容
本发明构思提供了一种最大化外围设备互连(PCIe)对等(P2P)连接的带宽的方法。
本发明构思还提供了一种用于最大化PCIe P2P连接的带宽的数据处理系统。
根据本发明构思的一方面,提供了一种最大化外围设备互连(PCIe)对等(P2P)连接的装置之间的数据传递带宽的方法,该方法包括以下步骤:确定第一装置的最大带宽和最大读请求大小;确定第二装置的最大带宽;基于第一装置的最大读请求大小、第一装置的最大带宽和第二装置的最大带宽来计算第二装置的计算的最大有效载荷大小;以及基于计算的第一最大有效载荷大小来设置第二装置的工作有效载荷大小。
根据本发明构思的另一方面,提供了一种数据处理系统,该数据处理系统包括:接口装置,其被构造为响应于由主机发出的请求;以及存储装置,其包括由所述主机可访问的多个存储元件,其中,所述接口装置或所述多个存储元件中的每一个被构造为基于接口装置的最大读请求大小、接口装置的最大带宽和存储元件的最大带宽来计算存储元件的计算的最大有效载荷大小,以及基于计算的最大有效载荷大小来设置存储元件的工作有效载荷大小。
根据本发明构思的另一方面,提供了一种计算机程序产品,其包括非暂时性计算机可读记录介质,所述非暂时性计算机可读记录介质上体现有用于最大化外围设备互连(PCIe)对等(P2P)连接的装置之间的数据传递带宽的计算机可读程序代码,所述计算机程序产品包括:被构造为确定第一装置的最大带宽和最大读请求大小以及确定第二装置的最大带宽和最小有效载荷大小的程序代码;被构造为通过利用第一装置的最大读请求大小和第一装置与第二装置之间的带宽比率来计算第二装置的计算的最大有效载荷大小的程序代码;被构造为将第二装置的最小有效载荷大小与计算的最大有效载荷大小进行比较的程序代码;以及被构造为当计算的最大有效载荷大小等于或大于最小有效载荷大小时将第二装置的工作有效载荷大小设置为计算的最大有效载荷大小以及当计算的最大有效载荷大小小于最小有效载荷大小时将第二装置的工作有效载荷大小设置为最小有效载荷大小的程序代码。
根据本发明构思的又一方面,提供了一种数据处理系统,该数据处理系统包括第一外围设备互连(PCIe)对等(P2P)连接的装置和第二PCIe P2P连接的装置,其中所述第一PCIe P2P连接的装置和第二PCIe P2P连接的装置彼此连接,其中所述第一PCIe P2P连接的装置和第二PCIe P2P连接的装置中的一个包括请求管理器。所述请求管理器被构造为:确定第一PCIe P2P连接的装置的最大带宽和最大读请求大小;确定第二PCIe P2P连接的装置的最大带宽;基于第一PCIe P2P连接的装置的最大读请求大小、第一PCIe P2P连接的装置的最大带宽和第二PCIe P2P连接的装置的最大带宽来计算第二PCIe P2P连接的装置的计算的最大有效载荷大小;将第二PCIe P2P连接的装置的最小有效载荷大小与第二PCIe P2P连接的装置的计算的最大有效载荷大小进行比较;以及基于所述比较的结果,针对涉及第二PCIe P2P连接的装置的数据传递来设置第二PCIe P2P连接的装置的工作有效载荷大小。所述请求管理器还被构造为使得:当第二PCIe P2P连接的装置的计算的最大有效载荷大小大于或等于第二PCIe P2P连接的装置的最小有效载荷大小时,所述请求管理器将第二装置的工作有效载荷大小设置为第二装置的计算的最大有效载荷大小,并且当第二PCIe P2P连接的装置的计算的最大有效载荷大小小于第二PCIe P2P连接的装置的最小有效载荷大小时,所述请求管理器将第二装置的工作有效载荷大小设置为第二PCIe P2P连接的装置的最小有效载荷大小。
附图说明
根据下面结合附图来理解的详细描述,将更清楚地理解本发明构思的实施例。
图1示出了适用于使用启用远程直接存储器存取(RDMA)的网络接口控制器(RNIC)的数据处理系统。
图2是示出图1的数据处理系统的操作的流程图。
图3是示出在图1的RNIC中执行的对RDMA消息数据传递的处理的示图。
图4A和图4B是示出在图1的RNIC中执行的根据RDMA读消息的数据传递的示图。
图5是示出RNIC操作为使得PCIe P2P连接的带宽具有最大带宽的示例性实施例的示图。
图6是示出图5的请求管理器的操作的示例性实施例的流程图。
图7是示出图5的RNIC中的请求管理器的操作的另一示例性实施例的流程图。
图8A和图8B是示出根据图6和图7的RNIC操作的数据传递的示图。
图9是示出存储装置操作为使得PCIe P2P连接的带宽具有最大带宽的示例性实施例的示图。
图10A和图10B是示出根据请求管理器的操作的RNIC的示例性实施例的性能的曲线图。
图11是服务器系统的示例性实施例的框图。
图12是示出数据中心的示例性实施例的框图。
具体实施方式
图1示出了适用于使用启用远程直接存储器存取(RDMA)的网络接口控制器(RNIC)的数据处理系统100。
参照图1,数据处理系统100包括可利用RDMA协议来彼此通信的对等方110和120。对等方110和120可为能够在网络130上发送或接收数据的存储系统或计算机系统。对等方110和120是通过举例的方式提供的,并且RDMA连接可在多个客户端、多个服务器、服务器群、服务器集群、应用服务器或者消息服务器之间。
图1中将对等方110和120显示为服务器110和客户端120。服务器110表示通过网络130从客户端120接收请求并且执行服务和将结果发送至客户端120的对等方,并且客户端120表示向服务器110提出请求并且等待响应的对等方。客户端120可被称作主机。
RDMA执行从一个存储器至另一设备或系统的存储器的数据传递。该数据传递能够通过网络130进行直接存储器存取(DMA)而不需要中央处理单元(CPU或处理器)或操作系统介入,从而能够实现高吞吐量、低延时和低开销的数据传递。
网络130被示为分离的单个网络,但是其可为本领域技术通常理解的任何类型的网络。网络130可为个人或公共网络、有线或无线网络或者全网络或局部网络。根据实施例,网络130可为诸如互联网或万维网(“Web”)的全球网络、广域网(WAN)或局域网(LAN)。
服务器110可包括RNIC 112和存储装置114,所述二者均连接至外围设备互连(PCIe)总线111。RNIC 112可为支持网络接口卡、网络适配器和/或RDMA的网络接口控制器。连接至RNIC 112的存储装置114可利用使用RDMA的非易失性快速存储器(NVMe)存储协议来实现。例如,NVMe存储协议可包括从互联网广域RDMA协议(iWARP)、Infiniband协议或者融合以太网上的RDMA(RoCE)协议中选择的一种协议。存储装置114可包括多个存储元件115至118,存储元件115至118可包括NVMe SSD或PCIe SSD。存储装置114可利用结构上NVMe(NVMe-oF)来实现。
NVMe是一种可扩展主机控制器接口,其被设计为处理能够使用SSD的企业、数据中心和客户端系统的需要。NVMe用作用于为主机提供存储实体接口的SSD装置接口。
PCIe是一种被设计为取代PCI、PCI-X和加速图形端口(AGP)总线标准的高速串行计算机扩展总线标准。PCIe标准包括较高的最大系统总线吞吐量、较低的I/O引脚数和较小的物理空间、针对总线装置的较好的性能缩放以及更详细的错误检测和报告机制。
NVMe标准的定位是定义优化的寄存器接口、命令集和PCIe SSD的特征集,以及利用PCIe SSD的功能和标准化PCIe SSD接口。NVMe-oF是一种基于PCIe NVMe SSD的闪速存储阵列,并且可扩展为可按照大规模并行方式进行通信的结构。
客户端120可包括RNIC 122、存储器124和处理器(或CPU)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可支持RDMA协议,所述RDMA协议允许从存储装置114向存储器124直接传递数据,反之亦然。这种数据传递不要求或不包括对处理器126的监管。因此,RDMA协议具有高带宽、低延时和低开销的优势。
RDMA协议针对数据传递定义了RDMA消息,即“发送”、“写”和“读”。RNIC 112和122可执行用于分配和解除分配RNIC资源的管理操作和发布工作请求(WR)的操作。RNIC 112和122的管理操作可包括队列对(QP)的分配和解除分配、完成队列(CQ)的分配和解除分配、或存储器分配和解除分配。下文中,为方便解释,将详细描述RNIC 112的功能。RNIC 112的功能可与RNIC 122的功能相同。
RNIC 112可分配针对其已发布了WR的QP。QP可包括工作队列对(例如,发送和接收)和针对每个队列的发布机制。RNIC 112可向工作队列发布WR以执行发布的WR。工作队列中的每一个是工作队列元素(WQE)的列表。WQE中的每一个可保持用于描述工作要求的一些控制信息,并且可参照(或指向)的RNIC 112的缓冲器。
可由WQE保持的信息可为缓冲器的描述,所述缓冲器传递用于发送或代表WR类型的数据和用于接收数据的位置。WR类型可分为发送WR(发送WR)和接收WR(Receive WR),所述发送WR可为“RDMA发送”、“RDMA写”、“RDMA读”等,所述接收WR可为“RDMA接收”。WQE利用单个RDMA消息来描述或对应于单个RDMA消息。当发布RDMA写类型的发送WR时,RNIC 112可在发送队列(SQ)中构建用于描述缓存器的WQE,在所述缓存器中,需要通过利用RDMA写消息来采用数据并随后需要将其发送至响应器(例如,存储装置114)的数据的缓冲器。作为另一示例,当发布接收WR时,RNIC 112可将WQE加至接收队列(RQ),所述接收队列保持将用于承担接收到的发送消息的有效载荷的缓冲器。
每当将WQE加至SQ或RQ时,RNIC 112可以获悉门铃响(doorbell ring)操作。门铃响操作是针对RNIC 112的存储器空间的写入,由RNIC 112的硬件检测和解码。因此,门铃向RNIC 112通知针对特定SQ/RQ有需要执行的新任务。
RNIC 112可响应于从客户端120发出的请求,将数据传递至存储装置114中的经PCIe总线111连接的所述多个存储元件115至118。
为了最大化RNIC 112与存储元件115至118之间的数据传递带宽,RNIC 112可确定RNIC 112的最大读请求大小(MRRS)和最大带宽(BWRNIC)以及存储元件115至118中的每一个的最大带宽(BWSSD)和最小有效载荷大小。RNIC 112可执行将RNIC 112的MRRS乘以存储元件115至118中的每一个的带宽比率(BWSSD/BWRNIC)的操作以计算存储元件115至118中的每一个的最大有效载荷大小,并且可将存储元件115至118中的每一个的计算的最大有效载荷大小与最小有效载荷大小进行比较。当存储元件115至118中的每一个的计算的最大有效载荷大小大于或等于所述最小有效载荷大小时,RNIC 112可将存储元件115至118中的每一个的工作有效载荷大小设置为所述计算的最大有效载荷大小。当存储元件115至118中的每一个的计算的最大有效载荷大小小于所述最小有效载荷大小时,RNIC 112可将存储元件115至118中的每一个的工作有效载荷大小设置为所述最小有效载荷大小。
根据实施例,为了最大化RNIC 112与存储元件115至118之间的数据传递带宽,存储元件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请求链路列表中的一个条目。
在操作S15中,客户端120可经由网络130接受对链路列表中的一个条目的请求并且将链路列表中的一个条目发送至服务器110。链路列表中的被发送至服务器110的一个条目可为指示RDMA消息的WR。
在操作S16中,服务器110可获取所述条目的WR并且向RNIC 112发布所获取的WR。
在操作S17中,服务器110的RNIC 112可根据发布的WR来执行将数据写入存储装置114或者从其读数据的操作。例如,RNIC 112可读取从存储装置114发送的数据有效载荷,并且将所读取的数据控制为被直接布置并打包。将参照图3来详细描述RNIC 112中的数据传递的处理。
在操作S18和操作S19中,服务器110和客户端120可执行数据传递处理。
在操作S20中,服务器110的RNIC 112可确定在操作S16中获取的条目中是否描述了传输终止(EOT)。如果在操作S20中确定未描述EOT,则处理可前进至操作S14以重复后续操作。
如果在操作S20中确定描述了EOT,则服务器110与客户端120之间的操作在操作S21中终止。
图3是示出针对在图1的RNIC 112中执行的RDMA消息数据传递的处理的示图。图3示出了在图2中所示的操作S17中执行的RNIC112的操作的环境。
参照图3,RNIC 112可选择为特定的SQ服务。出于该描述的目的,发起数据传递的实体在本文中将被称作“请求器”,而响应于数据传递的实体在本文中将被称作“响应器”。相似地,传递数据的实体可被称作“发送器”,而接收数据的实体可被称作“接收器”。
RNIC 112的请求器可从SQ 310读取发送队列元素(SQE)312。SQE 312指示向SQ310发布的WQE。当SQE 312对应于RDMA发送请求时,RNIC 112可产生发送消息并且将所述发送消息发送至RNIC 112的响应器。当RNIC 112的响应器接收到所述发送消息时,RNIC 112可从RQ 320读取接收队列元素(RQE)322并且将RQE 322所参照的、接收到的消息的有效载荷布置在缓冲器330(响应器Rx缓冲器)中。RQE 322指示针对RQ 320发布的WQE。
当RNIC 112的请求器想要访问RNIC 112的响应器的存储器区350时,RNIC 112的请求器可发布RDMA写或RDMA读类型的发送WR。RNIC 112的请求器可将对应于RDMA写或RDMA读的SQE 312添加至SQ 310并且通知RNIC 112。RNIC 112可从SQ 310读SQE 312并且产生RDMA写消息或RDMA读消息。
RDMA写消息可被RNIC 112接收,并且RNIC 112可通过利用RDMA写消息中的直接数据配置(DDP)区段来定位存储器区350,并且将RDMA写消息的有效载荷布置在存储器区350中。
当在RNIC 112接收到RDMA读消息时,RNIC 112可产生RDMA读响应消息,并且可将RDMA读响应消息发送至RNIC 112的请求器。在这种情况下,RQ 320可被称作读队列。当接收到RDMA读响应消息时,RNIC 112可类似于处理RDMA写消息那样来处理RDMA读响应消息。也就是说,RDMA读响应消息的有效载荷可布置在RNIC 112的请求器的存储器区360中。
在图3中,除了处理WR之外,RNIC 112可通知WR的完成。完成通知是通过利用通过由RNIC 112提供的专用功能分配的CQ 340来进行的。CQ 340包括完成队列元素(CQE)342。当RNIC 112报告WR的完成时,CQE 342由RNIC 112布置在CQ 340中。各个工作队列(即,SQ310或RQ 320)具有与其关联的CQ 340。在QP分配时执行所述关联。
当针对SQ 310发布WR时,RNIC 112可指定当完成WR时是否期望通知RNIC 112。当请求完成通知时,RNIC 112可在WR完成时将CQE 342布置在与SQ 310关联的CQ 340中。当RDMA发送WR和RDMA写WR被安全发送时,RDMA发送WR和RDMA写WR均完成。当接收到与RDMA读WR对应的RDMA读响应消息并将其布置在存储器区360中时,RDMA读WR完成。WR是按照在SQ310中发布的次序完成的。针对RQ 320发布的各个WR还要求完成通知。因此,当接收到的发送消息的布置结束时,RNIC 112将CQE 342布置在与RQ 320关联的CQ 340中。
图4A和图4B是示出在图1的RNIC 112中执行的根据RDMA读消息的数据传递的示图。在根据RDMA读消息的数据传递中,RNIC 112可将数据传递分布至存储装置114(即,NVMe-oF存储装置)中的所述多个存储元件115至118(见图1),并且图4A和图4B示出了例如通过集中于一个存储元件115来传递数据的情况。在图4A中,为了便于描述,主要示出了存储装置114中的所述多个存储元件115至118中的两个,所述两个例如存储元件115和116(下文中,分别称作第一SSD 115和第二SSD 116或者SSD#0和SSD#1))。图4A示出了利用RNIC112的NVMe-oF读工作请求(WR)的数据传递。参照图3的描述,NVMe-oF读WR可对应于RDMA读类型的WR。
参照图4A,RNIC 112可接收NVMe-oF读WR(操作402),针对SQ 310发布NVMe-oF读WR(见图3)以作为SQE 312(见图3),并随后读针对SQ 310发布的NVMe-oF读WR,并且将SQE 312的读消息传递至存储装置114的第一SSD 115和第二SSD 116(操作410a和410b)。
RNIC 112可完成针对存储装置114的第一SSD 115和第二SSD 116的读消息传递,并通知第一SSD 115和第二SSD 116(操作411a和411b)。
第一SSD 115和第二SSD 116可根据接收到的读消息的命令格式将命令条目#0至#5分别写至命令缓冲器422a和422b中。第一SSD 115和第二SSD 116可根据命令条目#0至#5分别从NAND系统425a和425b中读数据,并且将读取的数据分别存储在数据缓冲器423a和423b中。第一SSD 115和第二SSD 116可将NAND系统425a和425b的读数据分别存储在数据缓冲器423a和423b中,并随后通知RNIC 112(操作412a和412b)。
RNIC 112可分别读取第一SSD 115和第二SSD 116的数据缓冲器423a和423b中的数据。数据缓冲器423a和423b中的数据是从包括NAND闪速存储器单元的NAND系统425a和NAND系统425b中读取的数据,并且包括其中装载有有效载荷424a和424b的数据分组。这样,由于第一SSD 115和第二SSD 116可根据NVMe-oF协议独立地操作,因此优点在于可能降低负载。
然而,当RNIC 112的MRRS小于数据缓冲器423a和423b的有效载荷大小时,第一SSD115和第二SSD 116的操作可集中于一个SSD上而不分布。作为示例,假设RNIC 112的MRRS为2千字节(KB)并且最大带宽为5吉字节/秒(GB/s),并且假设第一SSD 115和第二SSD 116中的每一个的最小有效载荷大小为1KB并且最大带宽为2.5GB/s。另外,假设在第一SSD 115和第二SSD 116的数据缓冲器423a和423b中加载的有效载荷大小为128KB。
RNIC 112可处理针对第一SSD 115和第二SSD 116的NVMe-oF读WR。如果RNIC 112首先在处理第一SSD 115的NVMe-oF读WR的过程中,则RNIC 112可通过利用DMA传递处理来读取第一SSD 115的数据缓冲器423a的有效载荷424a,并且随后读取第二SSD 116的数据缓冲器423b的有效载荷424b。在1KB的最小有效载荷大小的情况下,读取第一SSD 115的数据缓冲器423a中的128KB有效载荷424a的操作(操作413a)将执行128次。在针对第一SSD 115的读操作(操作413a)中,RNIC 112可不对第二SSD 116的数据缓冲器423b的有效载荷424b执行读操作(操作413b)。RNIC 112可集中于第一SSD 115,如图4B所示。在等待完成针对第一SSD 115的DMA传递处理之后,可执行针对第二SSD 116的数据缓冲器423b的有效载荷424b的读操作(操作413b)。
在图4B中,RNIC 112具有可在5GB/s带宽的情况下执行读操作的最大性能。然而,在RNIC 112对集中的第一SSD 115执行NVMe-oF读WR时,RNIC 112的最大性能可限于第一SSD 115的2.5Gb/s带宽。也就是说,存在RNIC 112的最大性能限于一个SSD(例如,第一SSD115)的DMA传递带宽的问题。
图5是示出RNIC操作为使得PCIe P2P连接的带宽具有最大带宽的示例性实施例的示图。参照图5,RNIC 112包括请求管理器510,所述请求管理器510用于在不增加硬件复杂度的情况下允许RNIC 112以最大带宽操作,以解决参照图4A和图4B描述的RNIC 112的带宽受限的问题。
请求管理器510可包括DMA读模块512、分割有效载荷模块514和分组产生模块516。DMA读模块512可接收从存储装置114的第一SSD 115至第四SSD 118传递的数据。
分割有效载荷模块514可确定RNIC 112的最大带宽(BWRNIC)和MRRS。分割有效载荷模块514可确定第一SSD 115至第四SSD 118中的每一个的最大带宽(BWSSD)和最小有效载荷大小。分割有效载荷模块514可计算第一SSD 115至第四SSD 118中的每一个的最大带宽(BWSSD)与RNIC 112的最大带宽(BWRNIC)之间的带宽比率(BWSSD/BWRNIC)。
分割有效载荷模块514可通过利用RNIC 112的MRRS和第一SSD 115至第四SSD 118中的每一个的最大带宽(BWSSD)与RNIC 112的最大带宽(BWRNIC)之间的带宽比率(BWSSD/BWRNIC),来计算第一SSD 115至第四SSD 118中的每一个的最大有效载荷大小。
分割有效载荷模块514可执行通过将第一SSD 115至第四SSD 118中的每一个的最大带宽(BWSSD)除以RNIC 112的最大带宽(BWRNIC)以获得所述带宽比率(BWSSD/BWRNIC)的操作。
分割有效载荷模块514可针对第一SSD 115至第四SSD 118中的每一个执行将RNIC112的MRRS乘以带宽比率(BWSSD/BWRNIC)的操作,以计算第一SSD 115至第四SSD 118中的每一个的计算的最大有效载荷大小。
分割有效载荷模块514可将第一SSD 115至第四SSD 118中的每一个的最小有效载荷大小与第一SSD 115至第四SSD 118中的每一个的所述计算的最大有效载荷大小进行比较。
当第一SSD 115至第四SSD 118中的每一个的所述计算的最大有效载荷大小等于或大于所述最小有效载荷大小时,分割有效载荷模块514可将第一SSD 115至第四SSD 118中的每一个的工作有效载荷大小设置为所述计算的最大有效载荷大小。这里,工作有效载荷大小是指在涉及第一SSD 115至第四SSD 118中的每一个的数据传递的操作中使用的实际有效载荷大小。
当第一SSD 115至第四SSD 118中的每一个的计算的最大有效载荷大小小于所述最小有效载荷大小时,分割有效载荷模块514可将第一SSD 115至第四SSD 118中的每一个的工作有效载荷大小设置为所述最小有效载荷大小。
第一SSD 115至第四SSD 118中的每一个可根据RNIC 112的WR产生命令条目。第一SSD 115至第四SSD 118中的每一个可根据所述WR将第一SSD 115至第四SSD 118中的每一个的数据分布至对应于命令条目中的每一个并且具有所述计算的最大有效载荷大小的多条数据中。第一SSD 115至第四SSD 118中的每一个可响应于RNIC 112的所述WR,将所述多条数据传递至RNIC 112。
DMA读模块512可利用DMA方法,以由分割有效载荷模块514设置的第一SSD 115至第四SSD 118中的每一个的工作有效载荷大小(例如,计算的最大有效载荷大小)来读第一SSD 115至第四SSD 118的数据。然后,第一SSD 115至第四SSD 118中的每一个可向RNIC112通知完成,也就是说,已经传递了响应于RNIC 112的WR的所述多条数据(CQ通知操作)。
分组产生模块516可根据第一SSD 115至第四SSD 118的完成通知,将第一SSD 115至第四SSD 118中的每一个的所述多条数据组合,以产生数据分组。分组产生模块516可经由网络130(见图1)将产生的数据分组提供至客户端(或主机)120。
使得RNIC 112以最大带宽操作的请求管理器510中的DMA读模块512、分割有效载荷模块514和分组产生模块516的功能可由软件控制或者可为硬件自主的、或者两者的组合。
图6是示出图5的请求管理器的操作的示例性实施例的流程图。将参照图6来描述改变图4中的第一SSD 115的集中于RNIC 112的工作有效载荷大小方法。
参照图6,在操作S610中,请求管理器510可确定RNIC 112的最大带宽(BWRNIC)。例如,RNIC 112的最大带宽(BWRNIC)可为5GB/s。
在操作S620中,请求管理器510可确定RNIC 112的MRRS。例如,RNIC 112的MRRS可为2KB。
在操作S630中,请求管理器510可接收第一SSD 115的最大带宽(BWSSD)。例如,第一SSD 115的最大带宽(BWSSD)可为2.5GB/s。
在操作S640中,请求管理器510可接收第一SSD 115的最小有效载荷大小。例如,第一SSD 115的最小有效载荷大小可为1KB。
在操作S650中,请求管理器510可计算第一SSD 115的最大有效载荷大小。可通过将RNIC 112的MRRS乘以带宽比率BW RATIO来计算第一SSD 115的计算的最大有效载荷大小。可通过第一SSD 115的最大带宽与RNIC 112的最大带宽的比率来确定带宽比率BWRATIO。
例如,带宽比率BW RATIO是第一SSD 115的最大带宽2.5GB/s与RNIC 112的最大带宽5GB/s的比率(即,2.5/5=1/2)。可通过将RNIC 112的MRRS(即,2KB)乘以带宽比率BWRATIO(即,1/2),将第一SSD 115的计算的最大有效载荷大小计算为1KB。
这里,如果带宽比率BW RATIO小于1,则第一SSD 115不足以实现RNIC 112的最大带宽性能。在这种情况下,有必要将除第一SSD 115以外的另一SSD(例如,第二SSD 116)连接至RNIC 112,以平行地执行DMA。另一方面,如果带宽比率BW RATIO等于或大于1,则第一SSD 115的带宽足够大于RNIC 112的带宽,并因此,可仅通过一个SSD(即,第一SSD 115)来实现RNIC 112的最大带宽性能。
在操作S660中,请求管理器510可将在操作S650中计算的第一SSD 115的所述计算的最大有效载荷大小与第一SSD 115的最小有效载荷大小进行比较。如果第一SSD 115的所述计算的最大有效载荷大小大于或等于第一SSD 115的最小有效载荷大小,则请求管理器510可将第一SSD 115的工作有效载荷大小设置为所述计算的最大有效载荷大小(操作S670)。在操作S670中,由于第一SSD 115的所述计算的最大有效载荷大小1KB等于第一SSD115的最小有效载荷大小1KB,因此可将第一SSD 115的工作有效载荷大小设置为所述计算的最大有效载荷大小1KB。
在操作S660中,如果第一SSD 115的计算的最大有效载荷大小小于第一SSD 115的最小有效载荷大小,则请求管理器510可将第一SSD 115的工作有效载荷大小设置为所述最小有效载荷大小(操作S680)。作为示例,假设第一SSD 115的最小有效载荷大小为4KB。由于第一SSD 115的所述计算的最大有效载荷大小1KB小于所述最小有效载荷大小4KB,因此请求管理器510可将第一SSD 115的工作有效载荷大小设置为所述最小有效载荷大小4KB。
在上面描述的操作S650中,提出了以下方法,在所述方法中:带宽比率BW RATIO小于1,因此将除第一SSD 115之外的另一SSD(例如,第二SSD 116)连接至RNIC 112以实现RNIC 112的最大带宽性能。参照图7描述了将诸如第二SSD 116的新P2P装置连接至RNIC112以实现RNIC 112的最大带宽性能的方法。
图7是示出图5的请求管理器的操作的另一示例性实施例的流程图。
参照图7,在操作S710中,请求管理器510可确定RNIC 112的最大带宽(BWRNIC)。
在操作S720中,请求管理器510可确定RNIC 112的MRRS。例如,假设RNIC 112具有最大带宽(BWRNIC)为5GB/s并且MRRS为2KB的操作特性。
在操作S725中,请求管理器510可确定新P2P装置是否连接至RNIC 112。在下面的讨论中,作为示例,假设新P2P装置为例如第二SSD 116。如果确定第二SSD 116连接至RNIC112,则执行操作S730。
在操作S730中,请求管理器510可接收第二SSD 116的最大带宽(BWNEWP2P)。例如,第二SSD 116的最大带宽(BWNEWP2P)可为2.5GB/s。
在操作S740中,请求管理器510可接收第二SSD 116的最小有效载荷大小。例如,第二SSD 116的最小有效载荷大小可为1KB。
在操作S750中,请求管理器510可计算第二SSD 116的计算的最大有效载荷大小。可通过将RNIC 112的MRRS乘以带宽比率BW RATIO来计算第二SSD 116的计算的最大有效载荷大小。可通过第二SSD 116的最大带宽与RNIC 112的最大带宽的比率来确定带宽比率BWRATIO。例如,带宽比率BW RATIO是第二SSD 116的最大带宽2.5GB/s与RNIC 112的最大带宽5GB/s的比率(即,1/2)。可通过将RNIC 112的MRRS(即,2KB)乘以带宽比率BW RATIO(即,1/2),将第二SSD 116的所述计算的最大有效载荷大小计算为1KB。
在操作S760中,请求管理器510可将在操作S750中计算的第二SSD 116的所述计算的最大有效载荷大小与第二SSD 116的最小有效载荷大小进行比较。如果第二SSD 116的所述计算的最大有效载荷大小大于或等于第二SSD 116的所述最小有效载荷大小,则请求管理器510可将第二SSD 116的工作有效载荷大小设置为所述计算的最大有效载荷大小(操作S770)。在操作S770中,由于第二SSD 116的计算的最大有效载荷大小1KB等于第二SSD 116的所述最小有效载荷大小1KB,因此可将第二SSD 116的工作有效载荷大小设置为所述计算的最大有效载荷大小1KB。
在操作S760中,当第二SSD 116的计算的最大有效载荷大小小于第二SSD 116的所述最小有效载荷大小时,请求管理器510可将第二SSD 116的工作有效载荷大小设置为所述最小有效载荷大小(操作S780)。
在图6和图7中,第一SSD 115和第二SSD 116二者是具有相同操作规格的相同类型的SSD,所述二者的最大带宽为2.5GB/s,最小有效载荷大小为2KB。因此,RNIC 112可将针对第一SSD 115和第二SSD 116中的每一个等同地计算的1KB最大有效载荷大小设置为对应的工作有效载荷大小。
根据实施例,第一SSD 115和第二SSD 116二者可为具有不同操作规格的不同类型的SSD。
作为示例,假设在第一SSD 115的最大带宽为2.5GB/s并且最小有效载荷大小为2KB的同时,第二SSD 116的最大带宽为2.5GB/s并且最小有效载荷大小为4KB。在这种情况下,RNIC 112可通过将RNIC 112的MRRS(即,2KB)乘以RNIC 112的带宽比率BW RATIO(即,1/2)来计算第二SSD 116的计算的最大有效载荷大小1KB。由于第二SSD 116的4KB的最小有效载荷大小小于1KB的所述计算的最大有效载荷大小,因此RNIC 112可将4KB的所述最小有效载荷大小设置为第二SSD 116的工作有效载荷大小。因此,RNIC 112可将第一SSD 115的工作有效载荷大小设置为1KB的所述计算的最大有效载荷大小,并且将第二SSD 116的工作有效载荷大小设置为4KB的所述最小有效载荷大小。
图8A和图8B是示出根据图6和图7的RNIC操作的数据传递的示图。将图8A和图8B所示的数据传递与图4A和图4B所示的数据传递进行比较,并且为了便于解释,将主要描述与图4A和图4B所示的数据传递的不同。
参照图8A,RNIC 112可读第一SSD 115和第二SSD 116的数据缓冲器423a和423b的数据(操作813a和813b)。
RNIC 112可执行图6的操作以将第一SSD 115的工作有效载荷大小设置为1KB的计算的最大有效载荷大小。RNIC 112可执行图7的操作,以将第二SSD 116的工作有效载荷大小设置为1KB的计算的最大有效载荷大小。
RNIC 112可通过1KB的计算的最大有效载荷大小对第一SSD 115的数据缓冲器423a中的128KB有效载荷424a执行DMA(操作813a)。此时,RNIC 112可通过1KB的计算的最大有效载荷大小对第二SSD 116的数据缓冲器423b中的128KB有效载荷424b执行DMA(操作813b)。
参照图8B,在时间T1,RNIC 112可通过利用DMA,从第一SSD 115和第二SSD 116中的每一个中读1KB数据。在时间T2,RNIC 112可通过利用DMA,从第一SSD 115和第二SSD 116中的每一个中读1KB数据。然后,在时间T128,RNIC 112可通过利用DMA,从第一SSD 115和第二SSD 116中的每一个中读1KB数据。RNIC 112在DMA时间T1至T128从第一SSD 115和第二SSD 116中读2KB数据。
图8A和图8B的数据传递可通过第一SSD 115和第二SSD 116的连接来确保NVMe-oF的可扩展性。另外,可通过将第一SSD 115和第二SSD 116的工作有效载荷大小限于1KB,来满足RNIC 112的2KB的MRRS,并且可通过将RNIC 112的带宽最大化为5.0GB/s,来提高数据传递的服务质量(QoS)。另外,其中第一SSD 115和第二SSD 116根据NVMe-oF协议来独立地操作的降低负载是可能的。
图9是示出存储装置114操作为使得PCIe P2P连接的带宽具有最大带宽的示例性实施例的示图。在图9中,在存储装置114中执行参照图5描述的RNIC 112中的请求管理器510的操作的一部分,并因此,请求管理器910允许RNIC 112以最大带宽操作。将参照图9来详细描述请求管理器910。
参照图9,第一SSD 115至第四SSD 118中的每一个可包括请求管理器910。将详细描述第一SSD 115至第四SSD 118中的第一SSD 115的请求管理器910。可将第一SSD 115的请求管理器910的操作等同地应用于第二SSD 116至第四SSD 118的请求管理器。
请求管理器910可包括分割有效载荷模块914和分组产生模块916。分割有效载荷模块914可确定RNIC 112的最大带宽(BWRNIC)和MRRS以及第一SSD 115的最大带宽(BWSSD)和最小有效载荷大小。
分割有效载荷模块914可计算第一SSD 115的最大带宽(BWSSD)与RNIC 112的最大带宽(BWRNIC)之间的带宽比率(BWSSD/BWRNIC)。分割有效载荷模块914可通过执行将第一SSD115的最大带宽(BWSSD)除以RNIC 112的最大带宽(BWRNIC)的操作来计算所述带宽比率(BWSSD/BWRNIC)。
分割有效载荷模块914可通过利用RNIC 112的MRRS和第一SSD 115的最大带宽(BWSSD)与RNIC 112的最大带宽(BWRNIC)之间的带宽比率(BWSSD/BWRNIC),来计算第一SSD 115的计算的最大有效载荷大小。分割有效载荷模块914可通过执行将RNIC 112的MRRS乘以带宽比率(BWSSD/BWRNIC)的操作来计算第一SSD 115的计算的最大有效载荷大小。
分割有效载荷模块914可将第一SSD 115的最小有效载荷大小与计算的最大有效载荷大小进行比较。当第一SSD 115的计算的最大有效载荷大小等于或大于所述最小有效载荷大小时,分割有效载荷模块914可将第一SSD 115的工作有效载荷大小设置为所述计算的最大有效载荷大小。
当第一SSD 115的计算的最大有效载荷大小小于所述最小有效载荷大小时,分割有效载荷模块914可将第一SSD 115的工作有效载荷大小设置为所述最小有效载荷大小。
第一SSD 115可根据RNIC 112的读WR来产生命令条目。分割有效载荷模块914可将根据所述读WR从NAND系统425a读取的数据R_DATA分布至对应于所述命令条目中的每一个并且具有所述计算的最大有效载荷大小的多条数据。
分组产生模块916可组合通过由分割有效载荷模块914的分布而获得的所述多条数据,以产生数据分组。分组产生模块916可将所述数据分组经由装置驱动器920提供至RNIC 112。每当RNIC 112读第一SSD 115的数据分组时,装置驱动器920可用门铃响操作来通知RNIC 112。每当RNIC 112利用DMA方法来读第一SSD 115的数据分组时,装置驱动器920可用门铃响操作来通知RNIC 112。
第一SSD 115的请求管理器910的功能可由软件控制或者可为硬件自主的、或者两者的组合。相似地,第二SSD 116至第四SSD 118的请求管理器的功能可由软件控制或者可为硬件自主的、或者两者的组合。RNIC 112可通过第一SSD 115至第四SSD 118中的每一个的请求管理器的操作,利用最大带宽将数据传递至第一SSD 115至第四SSD 118。
可利用永久地存储在诸如ROM装置的任何不可写存储介质上的程序代码,存储在诸如软盘、磁带、CD、RAM装置和/或其它磁介质和光介质的任何非暂时性可记录存储介质上的可变程序代码,或者经由诸如互联网或电话调制解调器线的电子网络中的通信介质传递至计算机的程序代码,来实现参照图5至图9描述的请求管理器510和910的操作方法。
根据实施例,可将请求管理器510和910的操作方法提供为作为指令集而实现的计算机程序产品,所述指令集被编码用于在软件可执行对象中执行或用于由响应于所述指令的处理器执行。
根据实施例,可利用专用集成电路(ASIC)、现场可编程门阵列(FPGA)、状态机、控制器、诸如装置或者硬件、软件和固件的组合等其它硬件组件,来整体或部分地实现请求管理器510和910的操作方法。
图10A和图10B是示出根据请求管理器的操作的RNIC的示例性实施例的性能的曲线图。图10A显示了当未执行请求管理器时RNIC的性能,并且图10B显示了当执行图5至图9的请求管理器时RNIC的性能。图10A和图10B的曲线图中的每一个的水平轴指示工作有效载荷大小,而曲线图中的每一个的竖直轴指示RNIC的最大带宽。在图10A和图10B中,RNIC(即,图4A和图8A中的RNIC 112)的最大带宽是5.0GB/s,并且第一SSD和第二SSD(即,图4A和图8A中的第一SSD 115和第二SSD 116)的最大带宽是2.5GB/s,并且相对于当RNIC的MRRS为2KB时,示出了当RNIC的MRRS为8KB时以及当RNIC的MRRS是32KB时中的每一种的RNIC的性能。
参照图4A和图10A,当MRRS为2KB时,在工作有效载荷大小小于2KB的MRRS的区域(区域A),RNIC表现出最大带宽5.0GB/s。然而,在工作有效载荷大小大于2KB的MRRS的区域(区域B、C和D),RNIC的带宽减小至约2.5GB/s。
当MRRS为8KB时,在工作有效载荷大小小于8KB的MRRS的区域(区域B),RNIC表现出最大带宽5.0GB/s。然而,在工作有效载荷大小大于8KB的MRRS的区域(区域C和D),RNIC的带宽减小至约2.5GB/s。
当MRRS为32KB时,在工作有效载荷大小小于32KB的MRRS的区域(区域C),RNIC表现出最大带宽5.0GB/s。然而,在工作有效载荷大小大于32KB的MRRS的区域(区域D),RNIC的带宽减小至约2.5GB/s。
图10A显示了当第一SSD 115和第二SSD 116的工作有效载荷大小大于RNIC 112的MRRS时,RNIC 112集中于一个SSD(例如,第一SSD 115),并因此RNIC 112的最大带宽性能限于第一SSD 115的2.5Gb/s带宽。为了解决该问题,利用图5至图9的请求管理器,可改变涉及第一SSD 115和第二SSD 116的数据传递的工作有效载荷大小。
参照图8A和图10B,对于2KB、8KB和32KB的MRRS中的每一个,RNIC 112的最大带宽是5.0Gb/s。将第一SSD 115和第二SSD 118中的每一个与RNIC 112之间的带宽比率(2.5/5=1/2)乘以2KB、8KB和32KB的MRRS,并因此计算出1KB、4KB和16KB的最大有效载荷大小,并且将涉及第一SSD 115和第二SSD 116的数据传递的工作有效载荷大小设置为1KB、4KB和16KB的计算的最大有效载荷大小,并因此保持RNIC的最大带宽性能。
图11是一种服务器系统1100的实施例的框图。
参照图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可利用RNIC 112的最大带宽对经由PCIe总线彼此连接的所述多个存储元件115至118进行DMA访问。
图12是示出数据中心1200的示例性实施例的框图。
参照图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 (25)
1.一种数据处理方法,包括以下步骤:
确定外围设备互连(PCIe)对等(P2P)连接的装置中的第一装置的最大带宽和最大读请求大小;
确定所述PCIe P2P连接的装置中的第二装置的最大带宽;
基于所述第一装置的最大读请求大小、所述第一装置的最大带宽和所述第二装置的最大带宽来计算所述第二装置的计算的最大有效载荷大小;以及
基于所述计算的最大有效载荷大小,针对涉及所述第二装置的数据传递来设置所述第二装置的工作有效载荷大小。
2.根据权利要求1所述的方法,其中,计算所述第二装置的计算的最大有效载荷大小的步骤包括以下步骤:
通过将所述第二装置的最大带宽除以所述第一装置的最大带宽来计算第一带宽比率;以及
通过将所述第一装置的最大读请求大小乘以所述第一带宽比率来计算所述第二装置的计算的最大有效载荷大小。
3.根据权利要求1所述的方法,还包括以下步骤:
将所述第二装置的最小有效载荷大小与所述第二装置的计算的最大有效载荷大小进行比较,
其中,设置所述第二装置的工作有效载荷大小的步骤包括:
当所述第二装置的计算的最大有效载荷大小大于或等于所述第二装置的最小有效载荷大小作为比较结果时,将所述第二装置的工作有效载荷大小设置为所述第二装置的计算的最大有效载荷大小。
4.根据权利要求3所述的方法,其中,设置所述第二装置的工作有效载荷大小的步骤包括:
当所述计算的最大有效载荷大小小于所述第二装置的最小有效载荷大小时,将所述第二装置的工作有效载荷大小设置为所述最小有效载荷大小。
5.根据权利要求1所述的方法,还包括以下步骤:
根据所述第一装置的工作请求来在所述第二装置中产生命令条目;以及
将根据所述工作请求读取的所述第二装置的数据分布至具有所述计算的最大有效载荷大小的多条数据,以对应于所述命令条目中的每一个。
6.根据权利要求5所述的方法,还包括以下步骤:
由所述第二装置将通过根据所述命令条目来分布所述数据而获得的多条数据进行组合,从而产生数据分组;
由所述第二装置将所述数据分组传递至所述第一装置。
7.根据权利要求5所述的方法,还包括以下步骤:
由所述第二装置将通过根据所述命令条目来分布所述数据而获得的多条数据传递至所述第一装置并且向所述第一装置通知传递完成;
由所述第一装置来组合所述多条数据,从而产生数据分组。
8.根据权利要求1所述的方法,还包括以下步骤:
确定第三装置是否连接至所述第一装置;
确定所述第三装置的最大带宽和最小有效载荷大小;
基于所述第一装置的最大读请求大小、所述第一装置的最大带宽和所述第三装置的最大带宽来计算所述第三装置的计算的最大有效载荷大小;以及
基于所述第三装置的计算的最大有效载荷大小,针对涉及所述第三装置的数据传递来设置所述第三装置的工作有效载荷大小。
9.根据权利要求8所述的方法,其中,计算所述第三装置的计算的最大有效载荷大小的步骤包括以下步骤:
通过将所述第三装置的最大带宽除以所述第一装置的最大带宽来计算第二带宽比率;以及
通过将所述第一装置的最大读请求大小乘以所述第二带宽比率来计算所述第三装置的计算的最大有效载荷大小。
10.根据权利要求8所述的方法,还包括以下步骤:
将所述第三装置的最小有效载荷大小与所述第三装置的计算的最大有效载荷大小进行比较,
其中,设置所述第三装置的工作有效载荷大小的步骤包括:
当所述第三装置的计算的最大有效载荷大小大于或等于所述第三装置的最小有效载荷大小时,将所述第三装置的工作有效载荷大小设置为所述第三装置的计算的最大有效载荷大小;以及
当所述第三装置的计算的最大有效载荷大小小于所述第三装置的最小有效载荷大小时,将所述第三装置的工作有效载荷大小设置为所述第三装置的最小有效载荷大小。
11.根据权利要求1所述的方法,其中,所述方法在所述第一装置中执行。
12.根据权利要求1所述的方法,其中,所述方法在所述第二装置中执行。
13.一种在装置之间执行数据传递的数据处理系统,包括:
接口装置,其为外围设备互连(PCIe)对等(P2P)连接的装置,并且被构造为响应于由主机发出的请求;以及
存储装置,其包括所述主机可访问的多个存储元件,所述多个存储元件是PCIe P2P连接的装置,
其中,所述接口装置或所述多个存储元件中的每一个被构造为:基于所述接口装置的最大读请求大小、所述接口装置的最大带宽和所述存储元件的最大带宽来计算所述存储元件的计算的最大有效载荷大小,以及基于所述计算的最大有效载荷大小针对涉及所述存储元件的数据传递来设置所述存储元件的工作有效载荷大小。
14.根据权利要求13所述的数据处理系统,其中,所述接口装置或者所述多个存储元件中的每一个被构造为通过将所述存储元件的最大带宽除以所述接口装置的最大带宽来计算带宽比率,以及通过将所述接口装置的最大读请求大小乘以所述带宽比率来计算所述存储元件的计算的最大有效载荷大小。
15.根据权利要求13所述的数据处理系统,其中,所述接口装置或者所述多个存储元件中的每一个被构造为将所述存储元件的最小有效载荷大与所述存储元件的计算的最大有效载荷大小进行比较,以当所述存储元件的计算的最大有效载荷大小大于或等于所述存储元件的最小有效载荷大小时,将所述存储元件的工作有效载荷大小设置为所述计算的最大有效载荷大小,以及当所述存储元件的计算的最大有效载荷大小小于所述存储元件的最小有效载荷大小时,将所述存储元件的工作有效载荷大小设置为所述最小有效载荷大小。
16.根据权利要求13所述的数据处理系统,其中,所述接口装置被构造为划分所述多个存储元件中的每一个的命令条目,以将所述多个存储元件中的每一个的数据分布为具有所述存储元件的计算的最大有效载荷大小的多条数据。
17.根据权利要求16所述的数据处理系统,其中,所述多个存储元件中的每一个被构造为将通过根据所划分的命令条目来分布所述数据而获得的多条数据进行组合,以产生数据分组,并且将所述数据分组传递至所述接口装置。
18.根据权利要求16所述的数据处理系统,其中,所述多个存储元件中的每一个被构造为将通过根据所述命令条目来分布所述数据而获得的多条数据传递至所述接口装置,并且向所述接口装置通知传递完成。
19.根据权利要求18所述的数据处理系统,其中,所述接口装置被构造为组合从所述多个存储元件中的每一个接收到的多条数据,并产生数据分组,以及将所述数据分组传递至所述主机。
20.根据权利要求13所述的数据处理系统,其中,所述接口装置包括启用远程直接存储器存取的网络接口控制器,并且所述存储装置包括非易失性快速存储器装置。
21.根据权利要求13所述的数据处理系统,其中,所述多个存储元件中的每一个包括外围设备互连固态驱动器、非易失性快速存储器固态驱动器、闪速存储器或一种基于NAND的介质。
22.一种数据处理系统,包括:
第一外围设备互连(PCIe)对等(P2P)连接的装置和第二PCIe P2P连接的装置,其中,所述第一PCIe P2P连接的装置和所述第二PCIe P2P连接的装置彼此连接,
其中,所述第一PCIe P2P连接的装置和所述第二PCIe P2P连接的装置中的一个包括请求管理器,所述请求管理器被构造为:
确定所述第一PCIe P2P连接的装置的最大带宽和最大读请求大小;
确定所述第二PCIe P2P连接的装置的最大带宽;
基于所述第一PCIe P2P连接的装置的最大读请求大小、所述第一PCIe P2P连接的装置的最大带宽和所述第二PCIe P2P连接的装置的最大带宽来计算所述第二PCIe P2P连接的装置的计算的最大有效载荷大小;
将所述第二PCIe P2P连接的装置的最小有效载荷大小与所述第二PCIe P2P连接的装置的计算的最大有效载荷大小进行比较;以及
基于所述比较的结果,针对涉及所述第二PCIe P2P连接的装置的数据传递来设置所述第二PCIe P2P连接的装置的工作有效载荷大小,
其中,所述请求管理器还被构造为使得:当所述第二PCIe P2P连接的装置的计算的最大有效载荷大小大于或等于所述第二PCIe P2P连接的装置的最小有效载荷大小时,所述请求管理器将所述第二PCIe P2P连接的装置的工作有效载荷大小设置为所述第二PCIe P2P连接的装置的计算的最大有效载荷大小,并且当所述第二PCIe P2P连接的装置的计算的最大有效载荷大小小于所述第二PCIe P2P连接的装置的最小有效载荷大小时,所述请求管理器将所述第二PCIe P2P连接的装置的工作有效载荷大小设置为所述第二PCIe P2P连接的装置的最小有效载荷大小。
23.根据权利要求22所述的系统,其中,所述第一PCIe P2P连接的装置是启用远程直接存储器存取(RDMA)的网络接口控制器(RNIC),第二PCIe P2P连接的装置是存储装置,并且所述RNIC包括所述请求管理器。
24.根据权利要求22所述的系统,其中,所述第一PCIe P2P连接的装置是启用远程直接存储器存取(RDMA)的网络接口控制器(RNIC),所述第二PCIe P2P连接的装置是存储装置,并且所述存储装置包括所述请求管理器。
25.根据权利要求24所述的系统,其中,所述存储装置还包括:
存储器;
装置驱动器;以及
分组产生器,
其中,所述存储装置被构造为根据所述RNIC的读工作请求来产生命令条目,
其中,所述请求管理器被构造为将根据所述读工作请求而从所述存储器读取的数据分布为对应于所述命令条目中的每一个并且具有所述工作有效载荷大小的多条数据,
其中,所述分组产生器被构造为将通过由所述请求管理器的所述分布而获得的多条数据组合以产生数据分组,并且
其中,所述装置驱动器被构造为将所述数据分组提供至所述RNIC。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170115404A KR102429904B1 (ko) | 2017-09-08 | 2017-09-08 | PCIe P2P 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 |
KR10-2017-0115404 | 2017-09-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471833A CN109471833A (zh) | 2019-03-15 |
CN109471833B true CN109471833B (zh) | 2023-10-31 |
Family
ID=65631392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810764962.2A Active CN109471833B (zh) | 2017-09-08 | 2018-07-12 | 用于最大化PCIe对等连接的带宽的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10642777B2 (zh) |
KR (1) | KR102429904B1 (zh) |
CN (1) | CN109471833B (zh) |
SG (1) | SG10201805213RA (zh) |
Families Citing this family (16)
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 |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11762798B2 (en) * | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization 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 |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy 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 |
Family Cites Families (26)
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 |
EP1292054B1 (en) * | 2001-09-10 | 2012-02-29 | Nippon Telegraph And Telephone Corporation | Dynamic bandwidth allocation circuit, dynamic bandwidth allocation method, 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 |
TWI286693B (en) * | 2004-11-12 | 2007-09-11 | Via Tech Inc | Method for dynamically adjusting the data transfer order of PCI Express root ports |
US7580406B2 (en) * | 2004-12-31 | 2009-08-25 | Intel Corporation | Remote direct memory access segment generation by a network controller |
TWI416334B (zh) | 2005-07-11 | 2013-11-21 | Nvidia Corp | 在匯流排上以封包形式傳送來自複數個客戶的資料傳送請求之方法、匯流排介面裝置及處理器 |
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 |
US7660925B2 (en) * | 2007-04-17 | 2010-02-09 | International Business Machines Corporation | Balancing PCI-express bandwidth |
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 접속의 밴드위스를 최대화할 수 있는 방법 및 시스템 |
-
2017
- 2017-09-08 KR KR1020170115404A patent/KR102429904B1/ko active IP Right Grant
-
2018
- 2018-04-11 US US15/950,908 patent/US10642777B2/en active Active
- 2018-06-19 SG SG10201805213RA patent/SG10201805213RA/en unknown
- 2018-07-12 CN CN201810764962.2A patent/CN109471833B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
KR20190028217A (ko) | 2019-03-18 |
US10642777B2 (en) | 2020-05-05 |
US20190079895A1 (en) | 2019-03-14 |
KR102429904B1 (ko) | 2022-08-05 |
CN109471833A (zh) | 2019-03-15 |
SG10201805213RA (en) | 2019-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471833B (zh) | 用于最大化PCIe对等连接的带宽的系统和方法 | |
CN110888827B (zh) | 数据传输方法、装置、设备及存储介质 | |
US11706158B2 (en) | Technologies for accelerating edge device workloads | |
US11036669B2 (en) | Scalable direct inter-node communication over peripheral component interconnect-express (PCIe) | |
US9557922B2 (en) | System and method for peer-to-peer PCIe storage transfers | |
JP2018509674A (ja) | ネットワーク・マップド・ストレージを用いたホスト・ベースの不揮発性メモリのクラスタ化 | |
CN112130748B (zh) | 一种数据访问方法、网卡及服务器 | |
WO2023098031A1 (zh) | 数据访问方法及计算设备 | |
US10951741B2 (en) | Computer device and method for reading or writing data by computer device | |
WO2021063160A1 (zh) | 访问固态硬盘的方法及存储设备 | |
CN110471627B (zh) | 一种共享存储的方法、系统及装置 | |
CN115643321A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
WO2022141250A1 (zh) | 数据传输方法和相关装置 | |
Ahn | Implementation of Light-weight I/O Stack for NVMe-over-Fabrics | |
US11507441B2 (en) | Asymmetric fulfillment of remote procedure calls by multi-core systems | |
US10938875B2 (en) | Multi-processor/endpoint data duplicating system | |
CN118057793A (zh) | 一种数据读写方法及相关装置 | |
CN116644022A (zh) | 一种数据处理节点和方法 | |
US20160275038A1 (en) | Method for communication using pci express dedicated communication module and network device including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |