CN117591023A - 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 - Google Patents
一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 Download PDFInfo
- Publication number
- CN117591023A CN117591023A CN202311569298.3A CN202311569298A CN117591023A CN 117591023 A CN117591023 A CN 117591023A CN 202311569298 A CN202311569298 A CN 202311569298A CN 117591023 A CN117591023 A CN 117591023A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- address
- sgl
- pointer
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000002776 aggregation Effects 0.000 title claims abstract description 18
- 238000004220 aggregation Methods 0.000 title claims abstract description 18
- 239000011159 matrix material Substances 0.000 claims description 38
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于硬件卸载的分散聚集列表查询写入读取方法及装置,通过构建NVMe子系统,独立于主机进行对分散聚集列表的查询、解析和读写,在大数据量传输时无需软件干预,极大的减少了系统延时和软件负荷;通过建立动态缓存管理方式,极大的减少了分散聚集列表存储所需的缓存空间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于硬件卸载的分散聚集列表查询写入读取方法及装置。
背景技术
非易失性高速传输总线(NVMe,Non-Volatile Memory express)协议基于外设部件互连标准和接口(PCIe,Peripheral Component Interconnect express)定义了主机与非易失存储子系统之间交互的接口。它既包含了驱动软件与非易失存储子系统之间交互的命令集、队列和寄存器的接口,也定义了NVMe子系统的基本命令集。
基于网络的非易失性高速传输总线(NVMe oF,Non-Volatile Memory expressover Fabrics)协议定义了使用各种通用的事务层协议来实现NVMe功能的方式。在协议中所指的事务层包括了RDMA、FibreChannel、PCIe Fabrics等实现方式。
NVMe协议通过本地PCIe接口将固态硬盘(SSD,Solid State Drives)等非易失存储设备接入到主机系统,可以充分发挥SSD带宽性能,NVMe oF协议通过网络将非易失存储设备的访问扩展到分布式系统中,以实现存储的共享和远程访问。
NVMe支持2种类型的数据指针,物理区域页(PRP,Physical Region Page)和分散聚集列表(SGL,Scatter Gather List),而NVMe oF仅支持SGL类型。虽然SGL数据指针可以描述任意位置及大小的数据内存空间,使用上更灵活,但由于内存空间的非连续性,在数据传输过程中需要软件频繁介入,是制约延时的一个重要因素。
可见,NVMe oF与NVMe协议的转换处理流程较为复杂,对主机中央处理器消耗较高,在高速且海量的数据读写过程中,会对主机的中央处理器带来极大的负荷,因此亟需一种新的NVMe读写处理方案。
发明内容
鉴于此,本发明实施例提供了一种基于硬件卸载的分散聚集列表查询写入读取方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决基于NVMe进行数据读写时主机中央处理器负载较高导致延迟的问题。
本发明的一个方面提供了一种基于硬件卸载的分散聚集列表查询写入方法,所述方法用于在NVMe子系统上执行,所述NVMe子系统通过PCIe总线连接主机以及通过网络连接存储控制器,该方法包括以下步骤:
读取和查询提交队列门铃的先进先出队列,获取待处理提交队列条目指令的位置信息,并根据所述位置信息从所述主机中读取所述待处理提交队列条目指令;所述待处理提交队列条目指令为写命令;
判断所述待处理提交队列条目指令的数据指针类型,按照相应数据指针的类型读取和解析出第一数据指针;所述第一数据指针指向所述主机内存中的目标数据;
在本地建立缓存管理向量,并申请多个本地缓存空间,所述缓存管理向量中的每个要素分别标注对应缓存空间是否被占用;
将所述第一数据指针完全读取,转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第二数据指针,存入所述本地缓存空间,并标记缓存空间编号和相应缓存空间中存储的数据块描述符个数,并通过所述缓存管理向量标记存储位置;
建立所述待处理提交队列条目指令与所述第二数据指针的缓存索引矩阵,以所述待处理提交队列条目指令的队列号和命令编号为地址,并将所述缓存空间编号及其对应的数据块描述符个数写入所述缓存索引矩阵中;
接收存储控制器基于所述待处理提交队列条目指令反馈的当前可接收数据量,并向网络发送端口申请相应的数据缓存;
从所述缓存索引矩阵中查询所述第二数据指针对应的缓存空间编号,并读取所述第二数据指针以发起对所述目标数据的数据读请求;
将读取到的所述目标数据写入所述数据缓存,并记录已使用的第二指针的信息;若第二指针全部读取完毕,则清除对应的缓存管理向量。
在一些实施例中,所述方法还包括:在所述数据缓存大于所述第二数据指针当前的数据块描述符对应目标数据的情况下,连续自动更新到下一个数据块描述符,进行数据读取并写入所述数据缓存;根据所述第二数据指针中已完成数据读出的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次申请新的数据缓存时重新从记录位置开始继续读取。
在一些实施例中,所述方法还包括:
在所述数据缓存小于所述第二数据指针当前的数据块描述符对应目标数据的情况下,写入停止后,根据已完成数据读出的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次申请新的数据缓存时重新从记录位置开始继续读取。
在一些实施例中,所述数据指针类型为PRP地址类型,其中PRP字段的数值用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL数据块描述符,其中地址字段用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL段描述符或SGL末段描述符,其中地址字段用于指示SGL数据块描述符在所述主机内存中的地址。
在一些实施例中,所述缓存管理向量中的每个要素分别标注对应缓存空间是否被占用,包括:当所述要素为1时,表示对应的缓存空间被占用,当所述要素为0时表示对应的缓存空间未被占用。
另一方面,本发明还提供一种基于硬件卸载的分散聚集列表查询读取方法,所述方法用于在NVMe子系统上执行,所述NVMe子系统通过PCIe总线连接主机以及通过网络连接存储控制器,该方法包括以下步骤:
读取和查询提交队列门铃的先进先出队列,获取待处理提交队列条目指令的位置信息,并从所述主机中读取所述待处理提交队列条目指令;所述待处理提交队列条目指令为读命令;
判断所述待处理提交队列条目指令的数据指针类型,按照相应数据指针的类型读取和解析出第三数据指针;所述第三数据指针指向所述主机内存中的目标存储地址;
在本地建立缓存管理向量,并申请多个本地缓存空间,所述缓存管理向量中的每个要素分别标注对应缓存空间是否被占用;
将所述第三数据指针完全读取,转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第四数据指针,存入所述本地缓存空间,并标记缓存空间编号和相应缓存空间中存储的数据块描述符个数,并通过所述缓存管理向量标记存储位置;
建立所述待处理提交队列条目指令与所述第四数据指针的缓存索引矩阵,以所述待处理提交队列条目指令的队列号和命令编号为地址,并将所述缓存空间编号及其对应的数据块描述符个数写入所述缓存索引矩阵中;
向所述存储控制器转发所述待处理提交队列条目指令,接收返回的目标数据,存入数据缓存;
从所述缓存索引矩阵中查询所述第四数据指针对应的缓存空间编号,读取所述第四数据指针,对所述主机发起数据写请求,将数据缓存的数据写入第四指针指向的主机地址;
记录已使用的第四指针的信息,若第四指针指向的数据块全部写入完毕,则清除所述缓存管理向量。
在一些实施例中,所述数据指针类型为PRP地址类型,其中PRP字段的数值用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL数据块描述符,其中地址字段用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL段描述符或SGL末段描述符,其中地址字段用于指示SGL数据块描述符在所述主机内存中的地址。
在一些实施例中,所述方法还包括:当所述目标存储地址的容量小于所述目标数据的数据量时,则在所述目标存储地址写满后自动更新到所述第四数据指针中下一个数据块描述符对应的地址继续存储;根据当前已完成数据写入的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次新数据从记录位置开始继续写入。
所述方法还包括:
当所述目标存储地址的容量大于所述目标数据的数据量时,根据所述第四数据指针中当前已完成数据写入的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次新数据从记录位置开始继续写入。
另一方面,本发明还提供一种基于硬件卸载的分散聚集列表查询读写装置,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现上述方法的步骤。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述方法的步骤。
本发明的有益效果至少是:
本发明所述基于硬件卸载的分散聚集列表查询写入读取方法及装置,通过构建NVMe子系统,独立于主机进行对分散聚集列表的查询、解析和读写,在大数据量传输时无需软件干预,极大的减少了系统延时和软件负荷;通过建立动态缓存管理方式,极大的减少了分散聚集列表存储所需的缓存空间。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例所述基于硬件卸载的分散聚集列表查询写入读取装置的连接结构图。
图2为本发明另一实施例基于硬件实现的SGL查询、解析和存储方法的逻辑示意图。
图3为本发明一实施例所述基于硬件实现的SGL查询、解析和存储方法中SQE查询、解析和建立索引的逻辑示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
现有技术中基于NVMe和NVMe oF的数据存取过程中,均涉及到SGL(ScatterGather List,分散聚集列表)数据指针,虽然SGL数据指针可以描述任意位置及大小的数据内存空间,使用上更灵活,但由于内存空间的非连续性,在数据传输过程中需要软件频繁介入,是制约延时降低的一个重要因素,同时会对主机的中央处理器(CPU)带来极大的负荷。
具体的,本发明提供一种基于硬件卸载的分散聚集列表查询写入方法,参照图1,所述方法用于在NVMe子系统上执行,NVMe子系统通过PCIe总线连接主机以及通过网络连接存储控制器,该方法包括以下步骤S101~S108:
步骤S101:读取和查询提交队列门铃的先进先出队列,获取待处理提交队列条目指令的位置信息,并根据位置信息从主机中读取所述待处理提交队列条目指令;待处理提交队列条目指令为写命令。
步骤S102:判断待处理提交队列条目指令的数据指针类型,按照相应数据指针的类型读取和解析出第一数据指针;第一数据指针指向主机内存中的目标数据。
步骤S103:在本地建立缓存管理向量,并申请多个本地缓存空间,缓存管理向量中的每个要素分别标注对应缓存空间是否被占用。
步骤S104:将第一数据指针完全读取,转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第二数据指针,存入本地缓存空间,并标记缓存空间编号和相应缓存空间中存储的数据块描述符个数,并通过缓存管理向量标记存储位置。
步骤S105:建立待处理提交队列条目指令与第二数据指针的缓存索引矩阵,以待处理提交队列条目指令的队列号和命令编号(CID)为地址,并将缓存空间编号及其对应的数据块描述符个数写入缓存索引矩阵中。
步骤S106:接收存储控制器基于待处理提交队列条目指令反馈的当前可接收数据量,并向网络发送端口申请相应的数据缓存。
步骤S107:从缓存索引矩阵中查询第二数据指针对应的缓存空间编号,并读取第二数据指针以发起对目标数据的数据读请求。
步骤S108:将读取到的目标数据写入数据缓存,并记录已使用的第二指针的信息;若第二指针全部读取完毕,则清除对应的缓存管理向量。
在步骤S101中,“提交队列门铃的先进先出队列”是指NVMe(Non-Volatile MemoryExpress)存储协议中的Submission Queue,其中包含用于触发操作的门铃(Doorbell),以及按照先进先出(FIFO)的原则排列的命令队列。“提交入口队列”(Submission Queue)用于将命令或请求发送给NVMe SSD以执行各种操作,如读取、写入、擦除等。它的作用是允许主机系统将命令异步提交到SSD,以提高I/O性能和降低延迟。提交入口队列中的每个元素通常被称为Submission Queue Entry(SQE),即本申请提及的待处理提交队列条目指令,每个SQE包含一个特定的NVMe命令(例如,读取某个扇区的数据)和相关的参数。在本实施例中,待处理提交队列条目指令为写命令,即由主机向外写数据。
在步骤S102中,在对SQE中的数据指针进行解析时,首先区分数据指针类型,数据指针类型可以包括PRP地址类型、SGL数据块描述符、SGL段描述符或SGL末段描述符。
PRP地址类型中PRP字段的数值用于指示目标数据在主机内存中的地址。SGL数据块描述符中地址字段用于指示目标数据在主机内存中的地址。SGL段描述符或SGL末段描述符中,地址字段用于指示SGL数据块描述符在主机内存中的地址。解析得到的第一数据指针,可以是以上类型中的一种,对于写命令,第一数据指针指向主机内存中的目标数据。
具体的,在SGL中,常常使用不同类型的描述符来管理数据块。这些描述符包括SGL数据块描述符、SGL数据段描述符和SGL末段描述符,数据块描述符通常用于表示单个数据块的信息,包括数据块的起始内存地址、数据块的长度以及其他相关信息。数据段描述符通常用于表示多个数据块组成的数据段,这些数据块在逻辑上是相邻的,并且可以一起传输或处理。末段描述符通常用于指示SGL的结尾,即SGL的末尾,以便操作系统和驱动程序知道SGL的结束位置。
在步骤S103中,建立缓存管理向量,在得到一个待处理提交队列条目指令时,申请一个本地缓存空间,编号为n,将n对应的向量标志位置1,表示该空间被占用。也即在缓存管理向量中,当要素为1时,表示对应的缓存空间被占用,当要素为0时表示对应的缓存空间未被占用。
在步骤S104中,NVMe子系统在完全读取第一数据指针的情况下,将第一数据指针转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第二数据指针。
具体的,如果第一数据指针是PRP地址类型或SGL数据块描述符,则转换为由一个或多个SGL数据块描述符组成的SGL末段描述符写入本地缓存空间;如果第一数据指针是SGL段描述符或SGL末段描述符,则根据段描述符或末段描述符指向的地址向主机发起读请求,将全部SGL描述符读取完毕,再将读到的所有SGL数据块描述符组成一个新的SGL末段描述符存入本地缓存空间。
进一步的,标记相应缓存空间编号,并记录存储的数据块描述符的个数。
在步骤S105中,建立缓存索引矩阵关联待处理提交队列条目指令与第二数据指针,以方便管理。
在步骤S106~S108中,基于写命令,NVMe子系统先接收存储控制器反馈当前可用数据量,并向网络发送端申请缓存。从缓存索引矩阵中查询第二数据指针对应的缓存空间编号,并读取第二数据指针以发起对目标数据的数据读请求,并将目标数据写入从网络发送端申请的数据缓存。
在一些实施例中,所述方法还包括:在数据缓存大于第二数据指针当前的数据块描述符对应目标数据的情况下,连续自动更新到下一个数据块描述符,进行数据读取并写入数据缓存。根据所述第二数据指针中已完成数据读出的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次申请新的数据缓存时重新从记录位置开始继续读取。
在一些实施例中,所述方法还包括:在数据缓存小于第二数据指针当前的数据块描述符对应目标数据的情况下,写入停止后,根据已完成数据读出的数据块描述符对应的序号及地址更新缓存索引矩阵,待下一次申请新的数据缓存时重新从记录位置开始继续读取。
另一方面,本发明还提供一种基于硬件卸载的分散聚集列表查询读取方法,参照图1,所述方法用于在NVMe子系统上执行,NVMe子系统通过PCIe总线连接主机以及通过网络连接存储控制器,该方法包括以下步骤S201~S208:
步骤S201:读取和查询提交队列门铃的先进先出队列,获取待处理提交队列条目指令的位置信息,并从主机中读取待处理提交队列条目指令;待处理提交队列条目指令为读命令。
步骤S202:判断待处理提交队列条目指令的数据指针类型,按照相应数据指针的类型读取和解析出第三数据指针;第三数据指针指向主机内存中的目标存储地址。
步骤S203:在本地建立缓存管理向量,并申请多个本地缓存空间,缓存管理向量中的每个要素分别标注对应缓存空间是否被占用。
步骤S204:将第三数据指针完全读取,转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第四数据指针,存入本地缓存空间,并标记缓存空间编号和相应缓存空间中存储的数据块描述符个数,并通过缓存管理向量标记存储位置。
步骤S205:建立待处理提交队列条目指令与第四数据指针的缓存索引矩阵,以待处理提交队列条目指令的队列号和命令编号为地址,并将缓存空间编号及其对应的数据块描述符个数写入缓存索引矩阵中。
步骤S206:向存储控制器转发待处理提交队列条目指令,接收返回的目标数据,存入数据缓存。
步骤S207:从缓存索引矩阵中查询第四数据指针对应的缓存空间编号,读取第四数据指针,对主机发起数据写请求,将数据缓存的数据写入第四指针指向的主机地址。
步骤S208:记录已使用的第四指针的信息,若第四指针指向的数据块全部写入完毕,则清除缓存管理向量。
在步骤S201~S205中,相应步骤的说明可以参照步骤S101~S105,其中,本申请中待处理提交队列条目指令为读命令,需要向主机写入数据。这里待处理提交队列条目指令包含的数据指针指向的是主机内从中需要写入的位置。
在一些实施例中,数据指针类型为PRP地址类型,其中PRP字段的数值用于指示所述目标数据在主机内存中的地址。或,数据指针类型为SGL数据块描述符,其中地址字段用于指示目标数据在所述主机内存中的地址。或,数据指针类型为SGL段描述符或SGL末段描述符,其中地址字段用于指示SGL数据块描述符在主机内存中的地址。
在步骤S206~S208中,基于待处理提交队列条目指令中所要求的数据,获取后经内存写入主机内存的目标存储地址中。
在一些实施例中,所述方法还包括:当目标存储地址的容量小于目标数据的数据量时,则在目标存储地址写满后自动更新到第二数据指针中下一个数据块描述符对应的地址继续存储。根据当前已完成数据写入的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次新数据从记录位置开始继续写入。
所述方法还包括:当目标存储地址的容量大于目标数据的数据量时,根据第四数据指针中当前已完成数据写入的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次新数据从记录位置开始继续写入。
另一方面,本发明还提供一种基于硬件卸载的分散聚集列表查询读写装置,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现上述方法的步骤。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述方法的步骤。
下面结合一具体实施例对本发明进行说明:
本实施例提供了一种基于硬件实现的SGL查询、解析和存储方法。
所述方法的第一步骤是SQE查询,其主要操作包括:读取提交队列DB FIFO,解析SQE存储地址信息,从主机内存读取SQE。
NVMe oF系统的组成示意图如图1所示,NVMe子系统通过PCIe与主机连接,与存储控制器通过网络连接。NVMe子系统提供多路复用器MUX对外连接。当主机端有新的SQE命令时会更新DB队列,NVMe子系统通过读取DB FIFO,并查询队列RAM得到待处理的SQE位置信息。由于SQE存放于主机内存中,需要向主机发起读请求获取SQE数据,包括解析SQE存储地址信息和队列号,从主机内存读取SQE,SQE中包含命令编号(CID,Command Identity)。
所述方法的第二步骤为SGL解析,其主要操作包括:判断SQE中的数据指针类型,如果是PRP地址类型或SGL数据块描述符,则PRP字段的数值或SGL数据块描述符中的地址字段即为数据在主机内存中的地址;如果是SGL段描述符或SGL末段描述符,则该描述符中的地址为SGL数据块描述符在内存中的地址。
所述方法的第三步骤为SGL存储,其主要操作包括:基于硬件的SGL方案组成示意图如图2所示,SGL是从主机SQE数据结构中的字段解析而来,它既可以是某一个数据块的地址,也可以是一个SGL段描述符的地址,而这个段描述符又指向主机内存中的一个或多个数据块地址。
如图3所示,建立SGL缓存管理向量,在得到一个SQE时,申请一个SGL缓存空间(缓存编号为n),即将n对应的向量标志位置1,表示该空间被占用。
由于SGL数据块在主机内存中被存放在多个SGL段中,每一个SGL段访问结束后需要根据段描述符去查询下一个SGL段,在查询到SGL段后才能进行该段内数据块的访问。为了降低NVMe子系统与主机之间的访问频率,需要将主机端的SGL所有描述符一次性读出,提取其中的数据块描述符存入RAM,并根据这些SGL数据块描述符组成一个新的SGL末段描述符,写入RAM。
SGL即将存入的RAM地址,由申请的SGL缓存空间向量n决定。如果数据指针是PRP或SGL数据块描述符,则转换为由一个或多个SGL数据块描述符组成的SGL末段描述符写入RAM;如果数据指针是SGL段描述符或SGL末段描述符,则根据段描述符或末段描述符指向的地址向主机发起读请求,将全部SGL描述符读取完毕,再将所有读到的SGL数据块描述符组成一个新的SGL末段描述符存入RAM。存储期间统计当前缓存空间n中写入的SGL数据块描述符的总数。
建立SQE-SGL缓存索引矩阵,以SQE所属的队列号和CID为地址,将申请到的SGL缓存空间编号和缓存空间n中的描述符个数写入矩阵中。
所述方法的第四步骤为SGL数据传输。所述任务操作包括:根据SQE命令将数据在主机内存与NVMe子系统之间传输。如果SQE命令为写命令,存储控制器在接收到NVMe子系统转发的写命令后,会反馈当前可接收的数据量。
NVMe子系统根据存储控制器可接收数据量向网络发送端口申请缓存,同时从SQE-SGL索引矩阵得到SGL在数据块描述符缓存RAM中存储的地址。再从数据块描述符缓存RAM中读取SGL数据块描述符,以该描述符指向的地址向主机发起SGL数据读请求,然后将读到的数据写入到从网络发送端申请的RAM缓存中;如果存储控制器及网络发送端可接收的数据量需要多个SGL的数据填充,在读完一个SGL数据后需自动更新到下一个SGL地址。
如果从网络发送端口申请到的缓存空间不足以消耗所有的SGL描述符指定的空间时,记录当前已使用空间位置(包含SGL描述符个数和单个描述符已使用的地址位置)并更新到SQE-SGL缓存索引矩阵,待下一次申请时继续从记录的位置开始。
如果SQE命令为读命令,存储控制器在接收到NVMe子系统转发的读命令后,会返回相应数量的数据。
NVMe子系统将存储控制器经过网络收到的数据存入RAM,同时从SQE-SGL索引矩阵得到SGL在数据块描述符缓存RAM中存储的地址。再从数据块描述符缓存RAM中读取SGL数据块描述符,以该描述指向的地址向主机发起SGL数据写请求。如果控制器发送的数据量需要多个SGL才能存放,在写完一个SGL数据后需自动更新到下一个SGL地址。
如果当前从控制器发送的数据量不足以消耗所有的SGL描述符指定的空间时,记录当前已使用空间位置(包含SGL描述符个数和单个描述符已使用的地址位置)并更新到SQE-SGL缓存索引矩阵,待下一次收到同一队列同一命令的数据时继续从记录的位置开始。
当SQE中SGL指向内容全部传输完毕后,清除当前使用的SGL缓存管理向量标志。
本发明实施例还提供了一种计算机设备,该计算机设备可以包括处理器、存储器,其中处理器和存储器可以通过总线或者其他方式连接。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的车载显示装置按键屏蔽方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行本实施例中所述的方法。
综上所述,本发明所述基于硬件卸载的分散聚集列表查询写入读取方法及装置,通过构建NVMe子系统,独立于主机进行对分散聚集列表的查询、解析和读写,在大数据量传输时无需软件干预,极大的减少了系统延时和软件负荷;通过建立动态缓存管理方式,极大的减少了分散聚集列表存储所需的缓存空间。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于硬件卸载的分散聚集列表查询写入方法,其特征在于,所述方法用于在NVMe子系统上执行,所述NVMe子系统通过PCIe总线连接主机以及通过网络连接存储控制器,该方法包括以下步骤:
读取和查询提交队列门铃的先进先出队列,获取待处理提交队列条目指令的位置信息,并根据所述位置信息从所述主机中读取所述待处理提交队列条目指令;所述待处理提交队列条目指令为写命令;
判断所述待处理提交队列条目指令的数据指针类型,按照相应数据指针的类型读取和解析出第一数据指针;所述第一数据指针指向所述主机内存中的目标数据;
在本地建立缓存管理向量,并申请多个本地缓存空间,所述缓存管理向量中的每个要素分别标注对应缓存空间是否被占用;
将所述第一数据指针完全读取,转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第二数据指针,存入所述本地缓存空间,并标记缓存空间编号和相应缓存空间中存储的数据块描述符个数,并通过所述缓存管理向量标记存储位置;
建立所述待处理提交队列条目指令与所述第二数据指针的缓存索引矩阵,以所述待处理提交队列条目指令的队列号和命令编号为地址,并将所述缓存空间编号及其对应的数据块描述符个数写入所述缓存索引矩阵中;
接收存储控制器基于所述待处理提交队列条目指令反馈的当前可接收数据量,并向网络发送端口申请相应的数据缓存;
从所述缓存索引矩阵中查询所述第二数据指针对应的缓存空间编号,并读取所述第二数据指针以发起对所述目标数据的数据读请求;
将读取到的所述目标数据写入所述数据缓存,并记录已使用的第二指针的信息;若第二指针指向的数据块全部读取完毕,则清除对应的缓存管理向量。
2.根据权利要求1所述的基于硬件卸载的分散聚集列表查询写入方法,其特征在于,所述方法还包括:
在所述数据缓存大于所述第二数据指针当前的数据块描述符对应目标数据的情况下,连续自动更新到下一个数据块描述符,进行数据读取并写入所述数据缓存;根据所述第二数据指针中已完成数据读出的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次申请新的数据缓存时重新从记录位置开始继续读取。
3.根据权利要求1所述的基于硬件卸载的分散聚集列表查询写入方法,其特征在于,所述方法还包括:
在所述数据缓存小于所述第二数据指针当前的数据块描述符对应目标数据的情况下,写入停止后,根据已完成数据读出的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次申请新的数据缓存时重新从记录位置开始继续读取。
4.根据权利要求1所述的基于硬件卸载的分散聚集列表查询写入方法,其特征在于,所述数据指针类型为PRP地址类型,其中PRP字段的数值用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL数据块描述符,其中地址字段用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL段描述符或SGL末段描述符,其中地址字段用于指示SGL数据块描述符在所述主机内存中的地址。
5.根据权利要求1所述的基于硬件卸载的分散聚集列表查询写入方法,其特征在于,所述缓存管理向量中的每个要素分别标注对应缓存空间是否被占用,包括:当所述要素为1时,表示对应的缓存空间被占用,当所述要素为0时表示对应的缓存空间未被占用。
6.一种基于硬件卸载的分散聚集列表查询读取方法,其特征在于,所述方法用于在NVMe子系统上执行,所述NVMe子系统通过PCIe总线连接主机以及通过网络连接存储控制器,该方法包括以下步骤:
读取和查询提交队列门铃的先进先出队列,获取待处理提交队列条目指令的位置信息,并从所述主机中读取所述待处理提交队列条目指令;所述待处理提交队列条目指令为读命令;
判断所述待处理提交队列条目指令的数据指针类型,按照相应数据指针的类型读取和解析出第三数据指针;所述第三数据指针指向所述主机内存中的目标存储地址;
在本地建立缓存管理向量,并申请多个本地缓存空间,所述缓存管理向量中的每个要素分别标注对应缓存空间是否被占用;
将所述第三数据指针完全读取,转换为由一个或多个SGL数据块描述符组成的SGL末段描述符作为第四数据指针,存入所述本地缓存空间,并标记缓存空间编号和相应缓存空间中存储的描述符个数,并通过所述缓存管理向量标记存储位置;
建立所述待处理提交队列条目指令与所述第四数据指针的缓存索引矩阵,以所述待处理提交队列条目指令的队列号和命令编号为地址,并将所述缓存空间编号及其对应的数据块描述符个数写入所述缓存索引矩阵中;
向所述存储控制器转发所述待处理提交队列条目指令,接收返回的目标数据,存入数据缓存;
从所述缓存索引矩阵中查询所述第四数据指针对应的缓存空间编号,读取所述第四数据指针,对所述主机发起数据写请求,将数据缓存的数据写入第四指针指向的主机地址;
记录已使用的第四指针的信息,若第四指针指向的数据块全部写入完毕,则清除所述缓存管理向量。
7.根据权利要求6所述基于硬件卸载的分散聚集列表查询读取方法,其特征在于,所述数据指针类型为PRP地址类型,其中PRP字段的数值用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL数据块描述符,其中地址字段用于指示所述目标数据在所述主机内存中的地址;
或,所述数据指针类型为SGL段描述符或SGL末段描述符,其中地址字段用于指示SGL数据块描述符在所述主机内存中的地址。
8.根据权利要求6所述基于硬件卸载的分散聚集列表查询读取方法,其特征在于,所述方法还包括:
当所述目标存储地址的容量小于所述目标数据的数据量时,则在所述目标存储地址写满后自动更新到所述第四数据指针中下一个数据块描述符对应的地址继续存储;根据当前已完成数据写入的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次新数据从记录位置开始继续写入;
所述方法还包括:
当所述目标存储地址的容量大于所述目标数据的数据量时,根据所述第四数据指针中当前已完成数据写入的数据块描述符对应的序号及地址更新所述缓存索引矩阵,待下一次新数据从记录位置开始继续写入。
9.一种基于硬件卸载的分散聚集列表查询读写装置,包括处理器和存储器,其特征在于,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如权利要求1至8中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311569298.3A CN117591023A (zh) | 2023-11-22 | 2023-11-22 | 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311569298.3A CN117591023A (zh) | 2023-11-22 | 2023-11-22 | 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117591023A true CN117591023A (zh) | 2024-02-23 |
Family
ID=89909464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311569298.3A Pending CN117591023A (zh) | 2023-11-22 | 2023-11-22 | 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117591023A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117834570A (zh) * | 2024-03-04 | 2024-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
-
2023
- 2023-11-22 CN CN202311569298.3A patent/CN117591023A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117834570A (zh) * | 2024-03-04 | 2024-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
CN117834570B (zh) * | 2024-03-04 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11042302B2 (en) | Accessing non-volatile memory express controller memory manager | |
US9116800B2 (en) | Block-based storage device with a memory-mapped interface | |
US20180113615A1 (en) | Storage device generating adaptive interrupt and operating method thereof | |
US9785545B2 (en) | Method and apparatus for providing dual memory access to non-volatile memory | |
CN108363620B (zh) | 提供虚拟内存容量的内存模块及其操作方法 | |
US7886110B2 (en) | Dynamically adjusting cache policy based on device load in a mass storage system | |
EP3647932B1 (en) | Storage device processing stream data, system including the same, and operation method thereof | |
US20130238582A1 (en) | Method for operating file system and communication device | |
WO2021068567A1 (zh) | 区块链的区块分发方法、装置、计算机设备和存储介质 | |
EP4220419B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
CN111338561B (zh) | 存储器控制器与存储器页面管理方法 | |
US20190035445A1 (en) | Method and Apparatus for Providing Low Latency Solid State Memory Access | |
CN117591023A (zh) | 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置 | |
CN112416250A (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
US11762590B2 (en) | Memory system and data processing system including multi-core controller for classified commands | |
US11494318B2 (en) | Controller and operation method thereof | |
CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
CN116414735A (zh) | 数据存储方法、系统、存储访问配置方法及相关设备 | |
CN113986137A (zh) | 存储装置和存储系统 | |
US10733118B2 (en) | Computer system, communication device, and storage control method with DMA transfer of data | |
KR20080101636A (ko) | 모바일 폰의 두 개의 상이한 프로세서들 간의 파일시스템들을 브릿징하기 위한 시스템 및 방법 | |
CN110737397B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
CN106919487B (zh) | NVMe门铃处理方法及其装置 |
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 |