CN109117386A - 一种网络远程读写二级存储的系统及方法 - Google Patents

一种网络远程读写二级存储的系统及方法 Download PDF

Info

Publication number
CN109117386A
CN109117386A CN201810761324.5A CN201810761324A CN109117386A CN 109117386 A CN109117386 A CN 109117386A CN 201810761324 A CN201810761324 A CN 201810761324A CN 109117386 A CN109117386 A CN 109117386A
Authority
CN
China
Prior art keywords
secondary storage
storage devices
read
data
write
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.)
Granted
Application number
CN201810761324.5A
Other languages
English (en)
Other versions
CN109117386B (zh
Inventor
许晶
杨帆
王展
安仲奇
谭光明
孙凝晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201810761324.5A priority Critical patent/CN109117386B/zh
Publication of CN109117386A publication Critical patent/CN109117386A/zh
Application granted granted Critical
Publication of CN109117386B publication Critical patent/CN109117386B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Abstract

本发明提供一种网络远程读写二级存储的系统和方法。该系统包括控制模块、内存模块、缓存模块、二级存储设备、系统总线模块和网络接口设备,其中网络接口设备被配置为将接收到的针对二级存储设备的读写请求命令发送至内存模块;缓存模块被配置为存储与写请求相关的接收数据和与读请求相关的待发送数据;二级存储设备被配置为执行内存模块中的二级存储设备命令,经由系统总线模块实现与所述缓存模块的数据交互,以将写请求相关的数据从缓存模块经由系统总线模块转发至二级存储设备或将读请求相关的数据从二级存储设备转发至所述缓存模块。本发明的系统和方法能够提高远程数据读写的效率并降低处理器的负担。

Description

一种网络远程读写二级存储的系统及方法
技术领域
本发明涉及网络存储技术领域,特别是涉及一种网络远程读写二级存储的系统及方法。
背景技术
互联网业务丰富多样,大数据、机器学习、图计算等应用,都需要通过网络读写系统中不同节点上二级存储设备中的数据。远程数据的读写性能(例如带宽和延迟)对应用的整体性能有重要影响。
在现有技术中,网络远程读写系统中存在数据处理效率低和资源利用率不高的问题,典型地,现有技术中的网络读写系统包括用于接收网络远程读写的网络接口设备、由CPU实现的控制模块、内存空间和二级存储设备等,不论对于读命令还是写命令,数据都需要先暂存在内存的“读写数据缓存空间”,这增加了网络接口设备和二级存储设备在数据交换过程中的拷贝次数,从而增加了数据读写延时,并且还浪费了宝贵CPU的处理时间和内存空间。此外,在现有的远程网络读写系统中,控制信息通路与数据通路重合,均由控制模块处理(即CPU),从而导致控制模块的任务繁多,处理流程复杂,在较高的数据流速率下,会对处理器产生巨大压力,并增加处理时长。
目前,提升远程数据读写性能的方法主要有两类:一类是通过提高节点内通用处理器的计算能力,进而减少远程读写命令的处理时间,其主要优势是对现有系统的改动较小,前向兼容性好,但是成本和功耗较高;另一类是在数据通路上嵌入专用部件,提高网络接口设备和二级存储设备间的数据搬运效率,例如,现有的Mellanox InfiniBand卡设置有nvme over fabrics卸载引擎,能够实现高带宽、低延迟的二级存储设备的远程读写,但其数据通路与控制通路完全由Mellanox InfiniBand卡来实现,硬件设计复杂,实现成本高。
因此,需要对现有技术进行改进,以提供效率高并能够减轻处理器负担的远程网络读写系统和方法。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种网络远程读写二级存储的系统及方法。
根据本发明的第一方面,提供了一种网络远程读写二级存储的系统,该系统包括控制模块、内存模块、缓存模块、二级存储设备、系统总线模块和网络接口设备,其中:
所述网络接口设备被配置为将接收到的针对所述二级存储设备的读写请求命令发送至所述内存模块;
所述控制模块被配置为解析所述内存模块中的读写请求命令并生成用于由所述二级存储设备执行的二级存储设备命令;
所述缓存模块被配置为存储与写请求相关的接收数据和与读请求相关的待发送数据;
所述二级存储设备被配置为执行所述内存模块中的二级存储设备命令,经由所述系统总线模块实现与所述缓存模块的数据交互,以将写请求相关的数据从所述缓存模块经由所述系统总线模块转发至所述二级存储设备或将读请求相关的数据从所述二级存储设备转发至所述缓存模块。
在本发明的一个实施例中,所述缓存模块包括接收缓冲区和发送缓冲区,所述接收缓存区用于存储与写请求相关的接收数据,所述发送缓存区用于存储与读请求相关的待发送数据。
在本发明的一个实施例中,所述网络接口设备被配置用于:
当接收到针对所述二级存储设备的写请求命令时,将与该写请求相关的数据存储到所述缓存模块的接收缓冲区,并将该写请求命令发送到所述内存模块;或者
当接收到针对所述二级存储设备的读请求命令时,将该读请求命令发送到所述内存模块并且当所述缓存模块的发送缓冲区中有与所述读请求命令相关的读完成数据时,将该数据发送至互联网络。
在本发明的一个实施例中,对于所述二级存储设备命令,其中,写数据的存放地址字段为所述缓存模块的接收缓冲区地址在所述系统总线模块地址空间上的映射地址,读数据存放地址字段为所述缓存模块的发送缓冲区在所述系统总线模块地址空间的映射地址。
在本发明的一个实施例中,所述二级存储设备读取相关的写请求命令时,执行以下操作:
生成读事务包,经由所述系统总线模块将该读事务包转发至所述缓存模块,其中,该读事务包的地址为所述缓存模块的接收缓冲区地址;
接收经由所述系统总线模块转发的响应于该读事务包的读完成事务包;
将该读完成事务包中的数据写入到二级存储设备的存储介质中。
在本发明的一个实施例中,所述二级存储设备读取到相关的读请求命令时,执行以下操作:
将相关数据从所述二级存储设备的存储介质读出;
将读出的数据封装成写事务包并经由所述系统总线模块将该写事务包中的数据直接写入到所述缓存模块的发送缓冲区。
在本发明的一个实施例中,所述内存模块包括用于存储所述网络接口设备发送的读写请求命令的网络接口设备命令队列和用于存储由所述二级存储设备执行的二级存储设备命令队列。
在本发明的一个实施例中,所述缓存模块是所述网络接口设备自带的存储器或独立于所述网络接口设备的存储器。
根据本发明的第二方面,提供了一种基于本发明系统的网络远程读写方法,包括以下步骤:
所述网络接口设备将接收到的针对所述二级存储设备的读写请求命令发送至所述内存模块;
所述控制模块解析所述内存模块中的读写请求命令并生成用于由所述二级存储设备执行的二级存储设备命令;
所述二级存储设备读取并执行所述内存模块中的二级存储设备命令,经由所述系统总线模块实现与所述缓存模块的数据交互,以将写请求相关数据从所述缓存模块经由所述系统总线模块转发至所述二级存储设备和/或将读请求相关数据从所述二级存储设备转发至所述缓存模块。
与现有技术相比,本发明的优点在于:在提供的网络远程数据读写系统架构中,将控制平面与数据平面分离,CPU只负责控制平面,不需要参与大块存储数据搬运时的设备读写和内存空间调度,简化了CPU处理逻辑,节省了CPU资源,从而降低了系统的整体功耗和成本;利用所提供的远程数据读写系统,存储数据能够直接通过系统总线模块在网络接口设备与二级存储设备之间传输,不需要转发至内存,简化了数据通路,从而减少了数据传输时延,提高了数据处理速率,并且节省了内存空间并提高了内存利用率。
附图说明
以下附图仅对本发明作示意性的说明和解释,并不用于限定本发明的范围,其中:
图1示出了根据本发明一个实施例的网络远程数据读写系统的框架示意图;
图2示出了根据本发明一个实施例的网络远程数据读写系统中控制平面的处理过程示意图;
图3示出了根据本发明一个实施例的网络远程数据读写系统中数据平面的处理过程实施图;
图4示出了根据本发明另一实施例的网络远程读写系统的框架示意图。
具体实施方式
为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1示出了根据本发明一个实施例的网络远程读写系统的示意图。该系统包括缓存模块210、网络接口设备220、系统总线模块230、控制模块240、内存模块250、二级存储设备260;其中,缓存模块210包括接收缓冲区211和发送缓冲区212,内存模块250包含网络接口设备命令队列251和二级存储设备命令队列252,二级存储设备260包括控制单元261和存储介质262。
缓存模块210位于网络接口设备220和二级存储设备260之间,是独立于主机内存模块250之外的存储模块,该缓存模块210可以是网络接口设备220上附带的缓存,也可以是一个独立的新增的存储模块。缓存模块210包含接收缓冲区211和发送缓冲区212,接收缓冲区211用于缓存网络接口设备220接收到的针对二级存储设备260的写数据,并且当缓存模块接收到来自于二级存储设备260指令将接收缓冲区的数据发送到二级存储设备260,发送缓冲区212用于缓存针对二级存储设备260的读数据,所缓存的读数据是由二级存储设备260的控制单元261从存储介质262中读出来的数据,并且当缓存模块210接收到网络接口设备220的读命令时,将其发送缓冲区212中的数据交由网络接口设备220发送到互联网络。
网络接口设备220用于将节点接入到网络中,实现网络数据包的接收和发送。在网络接收方向上,网络接口设备220将收到的写二级存储设备请求中包含的数据写入到缓存模块210的接收缓冲区211,在网络发送方向上,网络接口设备220从缓存模块210的发送缓冲区212读出数据,以相应的格式打包,发送到互连网络中。网络接口设备220可以是任意类型,例如Ethernet、Infiniband、Fibre Channel等。
系统总线模块230用于连接节点内部的各个功能模块,其自身具备路由功能,能够根据所承载数据包中相关的总线协议字段,转发系统中不同模块之间的控制信息和数据信息。系统总线可以是PCI、PCI-X、PCIe、HT(Hyper Transport)等任意类型的总线。
控制模块240,也称为控制程序,运行在CPU及内存之上,其用于解析并处理网络接口设备命令队列251中的读写命令,并按照二级存储设备260的控制单元261使用的协议格式,生成新的命令,写进二级存储设备命令队列251中,其中,新的命令若为读命令,则携带的读完成数据存放地址字段应为缓存模块210的发送缓冲区212在系统总线地址空间的映射地址,新的命令若为写命令,则携带的写数据存放地址字段应为缓存模块210的接收缓冲区211在系统总线地址空间的映射地址。
内存模块250用于存储网络接口设备命令队列251、二级存储设备命令队列252以及运行在CPU上的控制模块240的代码指令,本文中所述的网络接口设备命令是指由网络接口设备220从互联网络接收的远端节点针对二级存储设备260的读写请求命令,二级存储设备命令是指控制模块240基于网络接口设备命令按照二级存储设备260的控制单元261所使用的格式生成的新命令,这些新命令可由二级存储设备260的控制单元261读取和解析,因此称为二级存储设备命令。
二级存储设备260由控制单元261和存储介质262组成,控制单元261用于解析并执行内存模块250中的二级存储设备命令队列251中的读写请求,若为读命令,控制单元261根据读命令中的读地址、读长度等信息将数据从存储介质262中读出,并生成写事务包经由系统总线模块230将数据发送至缓存模块210的发送缓冲区212中,若为写命令,控制单元261根据写命令中写长度等信息生成读事务包经由系统总线模块230,从缓存模块210的接收缓冲区211中读取数据,并将该数据写进对应的存储介质262中。
需要说明的是,本发明不对存储介质262以及控制单元261遵循的协议类型进行限定,可以是SCSI HDD、SATA HDD、SATA SSD、NVMe PCIe SSD、3D XPoint等任意类型。此外,为了简化,图1仅示出了一个二级存储设备260,但二级存储设备的数量可以为多个,本发明不对二级存储设备的数量进行限定。
在图1示出的网络远程读写系统中,控制平面与数据平面是分离的,其中,虚线表示读写数据传输通路,实线为控制信息传输通路,控制平面包括控制模块240、CPU以及内存模块250,数据平面包括缓存模块210、网络接口设备220和二级存储设备260。通过将控制平面与数据平面分离,网络和二级存储设备260之间的数据传输不再经过CPU和内存模块250所在的控制平面,而是经由系统总线模块230进行数据搬移,可见本发明的系统不仅简化了控制平面的CPU执行控制信息逻辑,也省去了内存模块250中存放读写数据的空间,从而减少了内存占用和内存拷贝次数,同时也直接降低了网络读写二级存储设备的整体处理时间。
为了进一步理解本发明,下面结合图1分别说明控制平面和数据平面的处理过程,参见图2所示,控制平面的处理过程包括:
步骤S310,判断网络接口设备是否接收到读写二级存储请求。
如果网络接口设备接收到远端节点通过互联网络发送来的读写二级存储设备的请求命令,则执行步骤S320,否则仍执行步骤S310,继续等待接收读写请求命令,其中,读写请求命令中包含读写所针对的二级存储设备的地址或标识,以及读写数据长度等信息,对于写请求还包括写数据。
步骤S320,将接收到的请求命令发送到内存模块的网络接口设备命令队列。
网络接口设备将接收的请求命令从网络数据包中解析出来并发送至内存模块的网络接口设备命令队列中。
步骤S330,判断是否为写二级存储请求。
网络接口设备判断远端节点通过网络发送来的二级存储请求命令的类型,如果是写二级存储请求,则执行步骤S340,将写数据存入缓存模块的接收缓冲区,如果判断是读二级存储命令,则执行步骤S350;
步骤S340,网络接口设备将写数据存入接收缓冲区。
步骤S350,控制模块解析网络接口设备命令队列中的命令。
步骤S360,判断相关请求是否有二级存储地址的读写权限。
控制模块判断相关请求是否有对相关二级存储设备地址块的读写权限,若有则执行步骤S370以进一步判断请求命令的类型,若没有,则跳转至步骤S310,继续等待接收读写请求命令。
步骤S370,判断是否为读二级存储请求
如果远端节点发送的是读二级存储请求,则执行步骤S380,如果是写二级存储请求,则执行步骤S390;
步骤S380,控制模块生成二级存储设备命令,读完成数据存放地址字段为缓存模块地址。
控制模块按照二级存储设备控制单元使用的协议格式,生成新的命令,写进二级存储设备命令队列中,其中读完成数据存放地址字段为缓存模块发送缓冲区在系统总线模块地址空间的映射地址。
步骤S390,控制模块生成二级存储设备命令,写数据存放地址字段为缓存模块地址。
控制模块按照二级存储设备控制单元使用的协议格式,生成新的命令,写进二级存储设备命令队列中,写数据的存放地址字段为缓存模块接收缓冲区地址在系统总线模块地址空间上的映射地址,其中写命令完成后,控制模块通知二级存储设备中的控制单元。
步骤S400,二级存储设备的控制单元读取并执行命令。
在此步骤中,二级存储设备的控制单元读取并解析内存模块的二级存储设备命令队列并执行相应的命令。
参见图3所示,数据平面的处理过程包括:
步骤S410,判断二级存储设备接收到的是否为读命令。
在此步骤中,判断二级存储设备接收到的命令类型,如果二级存储设备的控制单元从内存模块的命令队列中读取到的命令为读命令,则依次执行步骤S420至S440,如果为写命令,则跳转至步骤S450;
步骤S420,二级存储设备的控制单元解析并执行读命令,将数据从存储介质中读出。
步骤S430,二级存储设备的控制单元将数据封装成写事务包,经由系统总线模块转发至缓存模块的发送缓冲区。
在此步骤中,二级存储设备的控制单元将从存储介质中读出的数据封装成总线写事务包,通过系统总线模块直接写入到缓存模块的发送缓冲区中;
步骤S440,网络接口设备将数据打包发送到互联网络中。
网络接口设备将缓存模块的发送缓冲区中数据打包并发送至互联网络。
步骤S450,二级存储设备的控制单元解析并执行写命令,从接收缓冲区读取写数据,生成读事务包,经由系统总线模块转发至缓存模块。
当二级存储设备的控制单元从内存模块的命令队列中读取到写命令时,生成读事务包,读事务包地址为缓存模块的接收缓冲区地址在系统总线模块地址空间的映射,经由系统总线模块转发该读事务包至缓存模块。
步骤S460,缓存模块将接收缓冲区的数据读出,生成读完成事务包,并通过系统总线模块发送至二级存储设备。
步骤S470,二级存储设备的控制单元将读完成事务包中的数据写入存储介质。
图4示出了基于图1的远程网络读写系统一个实例,其中,网络接口设备由RoCE网卡实现,是PCIe设备,该RoCE网卡由RDMA(Remote Direct Memory Access,远程直接数据存取)和Ethernet组成;缓存模块由网络接口设备RoCE网卡上自带的DRAM缓存实现,并映射到网络接口设备PCIe配置空间的BAR地址空间,BAR0作为接收缓冲区,BAR1作为发送缓冲区;系统总线模块采用PCIe总线;对于内存模块,与网络接口设备命令和二级存储设备命令对应的队列分别是RoCE命令队列和NVMe(非易失性内存主机控制器接口规范)命令队列;二级存储设备使用NVMe PCIe SSD,其控制单元使用NVMe协议,存储介质使用Flash颗粒。
在图4的实施例中,控制模块用于解析并处理RoCE命令队列中的读写命令,并按照二级存储设备的控制单元所使用的协议格式NVMe,生成新的命令,写入到NVMe命令队列中,若为读命令,则携带的读完成数据存放地址字段为RoCE网卡的BAR1地址(即发送缓冲区),若新的命令写命令,则携带的写数据存放地址字段为RoCE网卡的BAR0地址(即接收缓冲区的地址)。
下面将结合图4分别说明执行写请求的过程和执行读请求的过程。
为了清楚说明下文的写请求过程,下表1列出了从网络接口设备接收到写请求到完成写数据的过程中各模块与写请求相关的字段。
表1:写请求相关的字段
需要说明的是,在表1中,编号3中写数据的存放地址与编号4中的数据存放地址是同一个地址,即接收缓存区BAR0在系统总线地址空间的映射地址,并且编号3中的写长度与编号4中的读长度是同一个数据。
关于总线地址映射,如果网络接口设备是PCIe设备,会有PCIe配置空间,配置空间中例如包含六个BAR寄存器,BAR0至BAR5,每个寄存器都分别对应不同的PCIe地址空间,以使用BAR0对应的空间为接收缓冲区、BAR1对应的空间为发送缓冲区为例,在系统开机时,内核会枚举各个PCIe设备,然后为PCIe设备分配对应的总线地址空间,当其他设备想要从接收缓冲区中读数据时,只需要将读地址设置为BAR0对应的总线地址即可,同理,当其他设备想要向发送缓冲区中写数据时,只需要将写地址设置为BAR1对应的总线地址即可。
结合图4和表1,本发明的实施中,执行写请求的过程包括:
步骤S510,网络接口设备RoCE网卡接收到远端节点通过网络发来的针对二级存储设备NVMe PCIe SSD的写请求;
步骤S520,网络接口设备RoCE网卡将写请求命令从以太网帧中解析出来,将以太网帧中的写数据写入到网卡的BAR0缓冲区并将写请求命令发送到内存模块的RoCE命令队列;
步骤S530,控制模块解析RoCE命令队列中的写请求命令并判断针对相关的二级存储设备NVMe PCIe SSD是否有读写权限,若有,则控制模块按照二级存储设备的控制单元使用的协议(即此实施例中的NVMe)生成新的命令,写入到NVMe命令队列中,其中写数据的存放地址字段为RoCE设备的BAR0地址,完成后,控制模块通知二级存储设备NVMe PCIe SSD的控制单元从内存模块的NVMe命令队列读取写命令;
步骤S540,二级存储设备NVMe PCIe SSD的控制单元从内存模块的NVMe命令队列解析并执行写命令,生成PCIe读事务包,PCIe读事务包的读地址为RoCE网卡的BAR0缓冲区地址,经由系统总线模块转发读事务包至RoCE网卡;
步骤S550,RoCE网卡将接收缓冲区BAR0的数据取出,生成PCIe读完成事务包并经由系统总线模块转发至二级存储设备NVMe PCIe SSD的控制单元(即NVMe控制单元),二级存储设备的控制单元将PCIe读完成事务包中的数据写入到存储介质Flash中。
接下来,将结合图4和下表2列出的从网络接口设备接收到读请求到完成读数据的过程各模块上与读请求相关的字段说明系统执行读请求的过程。
表2:读请求相关字段
需要说明的是,在表2中,编号3中的读完成数据存放地址与编号4中的数据存放地址是同一个地址,即发送缓存区BAR1的地址系统总线地址空间的映射地址,并且编号3中的读长度与编号4中的写长度是同一个数据。
本发明的实施中,执行读请求的过程包括:
步骤S610,网络接口设备RoCE网卡将读请求命令从以太网帧中解析出来,将读请求命令发送到内存模块的RoCE命令队列;
步骤620,控制模块解析RoCE命令队列中的读请求命令并判断针对相关的二级存储设备NVMe PCIe SSD是否有读写权限,若有,则控制模块按照二级存储设备的控制单元使用的协议(即此实施例中的NVMe)生成新的命令,写入到NVMe命令队列中,其中读完成数据的存放地址字段为RoCE设备的BAR1地址,完成后,控制模块通知二级存储设备NVMe PCIeSSD的控制单元从内存模块的NVMe命令队列读取读命令;
步骤S630,二级存储设备NVMe PCIe SSD的控制单元从内存模块的NVMe命令队列解析并执行读命令,将数据从存储介质Flash中读出,NVMe PCIe SSD控制单元将读出的数据封装成PCIe写事务包,通过系统总线模块直接写入到RoCE网卡的BAR1缓冲区;
步骤S640,网络接口设备RoCE将BAR1的数据打包成以太网帧发送至网络中。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (11)

1.一种网络远程读写二级存储的系统,包括控制模块、内存模块、缓存模块、二级存储设备、系统总线模块和网络接口设备,其中:
所述网络接口设备被配置为将接收到的针对所述二级存储设备的读写请求命令发送至所述内存模块;
所述控制模块被配置为解析所述内存模块中的读写请求命令并生成用于由所述二级存储设备执行的二级存储设备命令;
所述缓存模块被配置为存储与写请求相关的接收数据和与读请求相关的待发送数据;
所述二级存储设备被配置为执行所述内存模块中的二级存储设备命令,经由所述系统总线模块实现与所述缓存模块的数据交互,以将写请求相关的数据从所述缓存模块经由所述系统总线模块转发至所述二级存储设备或将读请求相关的数据从所述二级存储设备转发至所述缓存模块。
2.根据权利要求1所述的系统,其特征在于,所述缓存模块包括接收缓冲区和发送缓冲区,所述接收缓存区用于存储与写请求相关的接收数据,所述发送缓存区用于存储与读请求相关的待发送数据。
3.根据权利要求2所述的系统,其特征在于,所述网络接口设备被配置用于:
当接收到针对所述二级存储设备的写请求命令时,将与该写请求相关的数据存储到所述缓存模块的接收缓冲区,并将该写请求命令发送到所述内存模块;或者
当接收到针对所述二级存储设备的读请求命令时,将该读请求命令发送到所述内存模块,并且当所述缓存模块的发送缓冲区中有与该读请求命令相关的读完成数据时将该数据发送至互联网络。
4.根据权利要求3所述的系统,其特征在于,对于所述二级存储设备命令,其中,写数据的存放地址字段为所述缓存模块的接收缓冲区地址在所述系统总线模块地址空间上的映射地址,读数据存放地址字段为所述缓存模块的发送缓冲区在所述系统总线模块地址空间的映射地址。
5.根据权利要求3所述的系统,其特征在于,所述二级存储设备读取相关的写请求命令时,执行以下操作:
生成读事务包,经由所述系统总线模块将该读事务包转发至所述缓存模块,其中,该读事务包的地址为所述缓存模块的接收缓冲区地址;
接收经由所述系统总线模块转发的响应于该读事务包的读完成事务包;
将该读完成事务包中的数据写入到二级存储设备的存储介质中。
6.根据权利要求3所述的系统,其特征在于,所述二级存储设备读取到相关的读请求命令时,执行以下操作:
将相关数据从所述二级存储设备的存储介质读出;
将读出的数据封装成写事务包并经由所述系统总线模块将该写事务包中的数据直接写入到所述缓存模块的发送缓冲区。
7.根据权利要求1所述的系统,其特征在于,所述内存模块包括用于存储所述网络接口设备发送的读写请求命令的网络接口设备命令队列和用于存储由所述二级存储设备执行的二级存储设备命令队列。
8.根据权利要求1所述的系统,其特征在于,所述缓存模块是所述网络接口设备自带的存储器或独立于所述网络接口设备的存储器。
9.一种基于权利要求1至8任一项所述系统的网络远程读写二级存储的方法,包括以下步骤:
所述网络接口设备将接收到的针对所述二级存储设备的读写请求命令发送至所述内存模块;
所述控制模块解析所述内存模块中的读写请求命令并生成用于由所述二级存储设备执行的二级存储设备命令;
所述二级存储设备读取并执行所述内存模块中的二级存储设备命令,经由所述系统总线模块实现与所述缓存模块的数据交互,以将写请求相关数据从所述缓存模块经由所述系统总线模块转发至所述二级存储设备和/或将读请求相关数据从所述二级存储设备转发至所述缓存模块。
10.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现根据权利要求9所述的方法的步骤。
11.一种计算机设备,包括存储器和处理器,在所述存储器上存储有能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求9所述的方法的步骤。
CN201810761324.5A 2018-07-12 2018-07-12 一种网络远程读写二级存储的系统及方法 Active CN109117386B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810761324.5A CN109117386B (zh) 2018-07-12 2018-07-12 一种网络远程读写二级存储的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810761324.5A CN109117386B (zh) 2018-07-12 2018-07-12 一种网络远程读写二级存储的系统及方法

Publications (2)

Publication Number Publication Date
CN109117386A true CN109117386A (zh) 2019-01-01
CN109117386B CN109117386B (zh) 2021-03-09

Family

ID=64862098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810761324.5A Active CN109117386B (zh) 2018-07-12 2018-07-12 一种网络远程读写二级存储的系统及方法

Country Status (1)

Country Link
CN (1) CN109117386B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399314A (zh) * 2019-06-25 2019-11-01 苏州浪潮智能科技有限公司 一种cpu、一种电子设备以及一种cpu缓存控制方法
CN112732166A (zh) * 2019-10-28 2021-04-30 华为技术有限公司 访问固态硬盘的方法及装置
CN113572582A (zh) * 2021-07-15 2021-10-29 中国科学院计算技术研究所 数据发送、重传控制方法及系统、存储介质及电子设备
CN114036096A (zh) * 2021-11-04 2022-02-11 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN115643318A (zh) * 2022-09-29 2023-01-24 中科驭数(北京)科技有限公司 命令执行方法、装置、设备及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1945537A (zh) * 2006-07-27 2007-04-11 清华大学 基于存储区域网络的高速固态存储设备的实现方法
CN105556930A (zh) * 2013-06-26 2016-05-04 科内克斯实验室公司 针对远程存储器访问的nvm express控制器
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
CN107077426A (zh) * 2016-12-05 2017-08-18 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
CN107608627A (zh) * 2017-08-21 2018-01-19 云宏信息科技股份有限公司 一种远端数据分级存储方法、电子设备及存储介质
CN107608909A (zh) * 2017-09-19 2018-01-19 记忆科技(深圳)有限公司 一种NVMe固态硬盘写加速的方法
US20180081558A1 (en) * 2016-09-20 2018-03-22 Seagate Technology Llc Asynchronous Discovery of Initiators and Targets in a Storage Fabric
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1945537A (zh) * 2006-07-27 2007-04-11 清华大学 基于存储区域网络的高速固态存储设备的实现方法
CN105556930A (zh) * 2013-06-26 2016-05-04 科内克斯实验室公司 针对远程存储器访问的nvm express控制器
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡
US20180081558A1 (en) * 2016-09-20 2018-03-22 Seagate Technology Llc Asynchronous Discovery of Initiators and Targets in a Storage Fabric
CN107992436A (zh) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 一种NVMe数据读写方法及NVMe设备
CN107077426A (zh) * 2016-12-05 2017-08-18 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和系统
CN107608627A (zh) * 2017-08-21 2018-01-19 云宏信息科技股份有限公司 一种远端数据分级存储方法、电子设备及存储介质
CN107608909A (zh) * 2017-09-19 2018-01-19 记忆科技(深圳)有限公司 一种NVMe固态硬盘写加速的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谭光明,孙凝晖等: ""RNA二级结构预测中动态规划的优化和有效并行"", 《软件学报》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399314A (zh) * 2019-06-25 2019-11-01 苏州浪潮智能科技有限公司 一种cpu、一种电子设备以及一种cpu缓存控制方法
CN110399314B (zh) * 2019-06-25 2021-10-15 苏州浪潮智能科技有限公司 一种cpu、一种电子设备以及一种cpu缓存控制方法
CN112732166A (zh) * 2019-10-28 2021-04-30 华为技术有限公司 访问固态硬盘的方法及装置
CN113572582A (zh) * 2021-07-15 2021-10-29 中国科学院计算技术研究所 数据发送、重传控制方法及系统、存储介质及电子设备
CN114036096A (zh) * 2021-11-04 2022-02-11 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN115643318A (zh) * 2022-09-29 2023-01-24 中科驭数(北京)科技有限公司 命令执行方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN109117386B (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN109117386A (zh) 一种网络远程读写二级存储的系统及方法
CN103703441B (zh) 一种硬盘和数据处理方法
CN103902486B (zh) 一种远端直接内存访问实现方法、装置及系统
TWI777072B (zh) 主機、非揮發性記憶體快速固態驅動器及儲存服務的方法
US20140122769A1 (en) Method, Device, System and Storage Medium for Implementing Packet Transmission in PCIE Switching Network
US8788726B2 (en) Data transmission system, storage medium and data transmission program
US9747233B2 (en) Facilitating routing by selectively aggregating contiguous data units
CN103064807A (zh) 多通道直接存储器存取控制器
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
US9015380B2 (en) Exchanging message data in a distributed computer system
US9239796B2 (en) Methods, systems, and computer readable media for caching and using scatter list metadata to control direct memory access (DMA) receiving of network protocol data
US10489322B2 (en) Apparatus and method to improve performance in DMA transfer of data
US20150199298A1 (en) Storage and network interface memory share
CN106372013B (zh) 远程内存访问方法、装置和系统
US20140164553A1 (en) Host ethernet adapter frame forwarding
EP1780976A1 (en) Methods and system to offload data processing tasks
CN109861967A (zh) 基于Spark Shuffle的远程直接内存访问系统
US20230409506A1 (en) Data transmission method, device, network system, and storage medium
EP3926482A1 (en) System and method for performing transaction aggregation in a network-on-chip (noc)
US7840643B2 (en) System and method for movement of non-aligned data in network buffer model
CN115529275B (zh) 一种报文处理系统及方法
US20120036217A1 (en) Data conversion device and data conversion method
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
US20170295237A1 (en) Parallel processing apparatus and communication control method
US11487695B1 (en) Scalable peer to peer data routing for servers

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