一种基于FPGA的NVMeSSDPCIe数据包解析方法与流程

文档序号:18464432发布日期:2019-08-17 02:19阅读:911来源:国知局
一种基于FPGA的NVMe SSD PCIe数据包解析方法与流程
本发明属于存储
技术领域
,具体涉及一种基于fpga的nvmessdpcie数据包解析方法。
背景技术
:高速数据存储设备在雷达测试等领域应用广泛。为了提高存储设备的读写速度,减小设备的体积和功耗,适应小型化、紧凑化的发展趋势,可以利用存储领域新兴的nvme(non-volatilememoryexpress,非易失性内存主机控制器接口规范)ssd(固态硬盘)来构建便携式高速存储设备,这种ssd的读写速度可高达2gb/s以上。由zynq(arm+fpga)和nvmessd实现的存储设备的性能受到arm核主频和线程的限制,而由fpga和nvmessd实现的存储设备借助fpga的并行特性,能够更好地发挥nvmessd的读写速度。fpga控制nvmessd的核心技术在于控制软件的设计和实现,包括数据接收及解析模块、数据发送模块、控制流程模块等。由于nvmessd借助pcie(peripheralcomponentinterconnectexpress,高速串行计算机扩展总线)总线进行数据传输,因此数据解析模块需要解析从pcie硬核的axi-stream接口返回的pcie数据包。数据解析模块的作用在于解析pcie数据包的信息,为后续模块提供具体的操作指令。传统的pcie数据包解析过程比较复杂,且解析后的信息需要缓存在fifo中,导致占用的逻辑资源过多,增加了nvme控制模块的开发难度。技术实现要素:本发明的目的是为解决传统的pcie数据包解析过程复杂,且需要占用的逻辑资源过多的问题,而提出了一种基于fpga的nvmessdpcie数据包解析方法。本发明为解决上述技术问题采取的技术方案是:一种基于fpga的nvmessdpcie数据包解析方法,所述基于fpga的nvmessdpcie数据包解析方法中需要解析的tlp包括读内存tlp和写内存tlp;且对于每个tlp均需要解析出其对应的格式信息、类型信息和长度信息;其中:格式信息和类型信息用于确定对应的tlp的类型,长度信息用于确定对应的tlp的作用;每个tlp的tlp参数均为一个16位2进制数,tlp参数的高8位为对应tlp的格式信息和类型信息,tlp参数的低8位为对应tlp的长度信息的低8位。进一步地,所述tlp参数包括5种类型;类型1的tlp参数表示为0x0010,类型2的tlp参数表示为0x0010或0x0004,类型3的tlp参数表示为0x0040,类型4的tlp参数表示为0x4020,类型5的tlp参数表示为0x4004;进一步地,所述类型2的tlp参数表示替换为0xad04/0xad10,0xad04/0xad10用于与类型1的tlp参数进行区分;更进一步地,所述基于fpga的nvmessdpcie数据包解析方法,其具体包括以下步骤:步骤一、fpga接收到新的tlp后,将接收到的新tlp的编号(tag)信息缓存,并跳转至步骤二;步骤二、判断当前tlp的格式和类型信息是否为0x00,若是,则跳转至步骤三,否则,跳转至步骤五;步骤三、判断当前tlp的rxuser[2]是否为1,若是,则跳转至步骤四,否则,跳转至步骤五;其中:rxuser[2]代表接收总线用户自定义信号(共22位)的第2位;步骤四、生成当前tlp的tlp参数为0xad04或0xad10,并跳转至步骤八;步骤五、根据当前tlp的格式信息、类型信息和长度信息生成tlp参数,tlp参数为fmt+type+length[7:0],跳转至步骤六;步骤六、判断当前tlp的tlp参数的类型是否为类型4或类型5,若是,跳转至步骤七,否则,跳转至步骤八;步骤七、缓存当前tlp中的数据载荷,并跳转至步骤十;步骤八、将当前tlp的tlp参数缓存在先进先出存储器(fifo)中,跳转至步骤九;步骤九、fpga获取先进先出存储器中缓存的类型1,2或3的tlp参数,读取fpga获取的tlp参数对应的数据,并向nvmessd发送完成报文,跳转至步骤十;步骤十、结束。本发明的有益效果是:本发明提出了一种基于fpga的nvmessdpcie数据包解析方法,本发明借助接收的nvme数据包的tlp参数的特征以及地址的变化规律,简化了数据包解析过程,在不解析tlp地址的情况下能够准确判断出tlp包的类型及作用;而且由fpga内部的blockram构成的fifo缓存模块只需记录tlp参数及编号字段,不用记录tlp的地址,与传统的数据解析方法相比,本发明提出的简化方法在保证数据解析模块功能完整的同时,可以节省57%的逻辑资源。附图说明图1是tlp包头结构的示意图;其中:0dw代表第0个双字(doubleword,32位2进制数),1dw代表第1个双字,2dw代表第2个双字,r代表保留(reserved),没有使用,0byte代表第0个byte(8位二进制数),1byte代表第1个byte,2byte代表第2个byte,3byte代表第3个byte,0dw、1dw、2dw、0byte、1byte、2byte和3byte均是用来方便表示数据位的方式;图2是本发明的流程图。具体实施方式具体实施方式一:本实施方式所述的一种基于fpga的nvmessdpcie数据包解析方法,所述基于fpga的nvmessdpcie数据包解析方法中需要解析的tlp(事务层数据包)包括读内存(memoryread)tlp和写内存(memorywrite)tlp;且对于每个tlp均需要解析出其对应的格式(format)信息、类型(type)信息和长度(length)信息;其中:格式信息和类型信息用于确定对应的tlp的类型,长度信息用于确定对应的tlp的作用;每个tlp的tlp参数均为一个16位2进制数,tlp参数的高8位为对应tlp的格式信息和类型信息,tlp参数的低8位为对应tlp的长度信息的低8位。每个tlp的长度信息是10位二进制数,表述为length[9:0],本发明中长度信息的高2位始终为0,因此,只记录和分析长度信息的低8位,即length[7:0]。length[7:0]是length信息的一部分。nvme(non-volatilememoryexpress,非易失性内存主机控制器接口规范)ssd(固态硬盘)借助pcie(peripheralcomponentinterconnectexpress,高速串行计算机扩展总线)总线进行数据传输。pcie链路的数据包结构分为物理层、数据链路层和事务层。xilinxvirtex-7系列fpga集成的pcie硬核提供现成的pcie物理层和数据链路层解析功能,并通过axi-stream接口输出事务层数据包(tlp),因此只需解析tlp即可实现pcie数据包的解析。fpga控制nvmessd过程中需要解析的tlp分为两种:读内存(memrd)和写内存(memwr)tlp。fpga接收到memwrtlp后,解析tlp包头中的地址信息,将tlp的数据载荷写入对应地址的寄存器中;fpga接收memrdtlp后,解析tlp包头中的地址信息和tag字段,读取fpga中对应地址的寄存器内容,并返回相同tag字段的完成报文。这两种tlp通过包头中的fmt+type区分,其包头结构如图1所示:tlp包头中参数的具体定义及作用如表1所示:表1tlp包头中的参数及作用参数名作用fmt+typetlp的类型(读/写)lengthtlp申请读写的数据长度requesteridssd在pcie拓扑结构中的位置,本发明中该字段为固定值0x0100tagfpga返回的完成报文需要与接收的memrdtlp的tag对应lastdwbetlp起始有效位,本发明中该字段为固定值0xf1stdwbetlp终止有效位,本发明中该字段为固定值0xfaddresstlp申请读写的寄存器地址数据包解析模块的作用在于解析tlp包头的信息,为后续执行流程提供tlp的具体操作类型及操作地址以及tag信息。在nvme控制流程中,需要通过解析tlp的fmt+type信息来确定tlp的类型,解析tlp的length+address信息来确定tlp读写请求对应的寄存器地址,结合寄存器中存储的内容判断该tlp的作用。解析后的fmt+type+length+address信息以及tlp的tag信息首先缓存在blockram构成的fifo中,再由控制流程状态机逐个读出并进行相应的处理,以保证每一个接收到的读写请求都能按照顺序执行。抓取fpga控制nvmessd过程中的tlp接收情况,对照nvme协议,统计出在nvmessd执行命令的过程中fpga接收的tlp种类。这些tlp按照功能分为5类,分别对应不同的作用,如表2所示:表2不同类型tlp对应的参数及作用为了提高开发效率,节省blockram资源,本发明提出了简化的解析方法,只需要解析tlp的fmt+type+length信息即可确定该tlp的类型及作用。具体实施方式二:本实施方式与具体实施方式一不同的是:所述tlp参数包括5种类型;类型1的tlp参数表示为0x0010,类型2的tlp参数表示为0x0010或0x0004,类型3的tlp参数表示为0x0040,类型4的tlp参数表示为0x4020,类型5的tlp参数表示为0x4004。本实施方式中每种类型的tlp参数均是利用格式、类型和长度的低8位信息相结合产生的。具体实施方式三:本实施方式与具体实施方式二不同的是:所述类型2的tlp参数表示替换为0xad04/0xad10,0xad04/0xad10用于与类型1的tlp参数进行区分。本发明定义“tlp参数”如下:(1)参数为16位2进制数;(2)参数的高8位为tlp的fmt+type,参数的低8位为tlp的length[7:0];(3)特殊定义类型2的tlp参数为0xad04/0xad10。本发明对类型2的tlp参数进行了特殊定义,其原因如下:tlp类型1、3、4和5分别对应一种tlp参数,而类型2对应两种fmt+type+length参数,其中一种参数0x0010与类型1的tlp参数相同。为了简化解析过程,本发明在不解析地址信息的前提下,提出了以下区分tlp类型1和2的方法。xilinxpcie硬核在接收到tlp时,axi-stream接收总线的rxuser信号会产生变换:当接收的tlp的地址信息在pciebar0地址区间范围内时,rxuser[2]=1,否则rxuser[2]=0。本发明利用这种特性,定义“命令提交队列”的地址在pciebar0地址区间范围外,“地址列表”的地址在bar0地址区间范围内,即可在fmt+type+length参数为0x0010时通过判断rxuser[2]是否为0来区分接收的tlp的作用。具体地说,当接收到的tlp的fmt+type+length为0x0010时,若rxuser[2]=0,则该tlp的作用是读取命令提交队列;若rxuser[2]=1,则该tlp的作用是读取地址列表。本发明将类型2的tlp参数定义为0xad04/0xad10,以区分类型1的tlp参数。最终定义的tlp类型与参数对照表如表3所示:表3tlp类型及参数对照表类型12345参数0x00100xad04/0xad100x00400x40200x4004具体实施方式四:结合图2说明本实施方式。本实施方式与具体实施方式三不同的是:所述基于fpga的nvmessdpcie数据包解析方法,其具体包括以下步骤:步骤一、fpga接收到新的tlp后,将接收到的新tlp的编号信息缓存,并跳转至步骤二;步骤二、判断当前tlp的格式和类型信息是否为0x00,若是,则跳转至步骤三,否则,跳转至步骤五;步骤三、判断当前tlp的rxuser[2]是否为1,若是,则跳转至步骤四,否则,跳转至步骤五;其中:rxuser[2]代表接收总线用户自定义信号的第2位;步骤四、生成当前tlp的tlp参数为0xad04或0xad10,并跳转至步骤八;步骤五、根据当前tlp的格式信息、类型信息和长度信息生成tlp参数,跳转至步骤六;步骤六、判断当前tlp的tlp参数的类型是否为类型4或类型5,若是,跳转至步骤七,否则,跳转至步骤八;步骤七、缓存当前tlp中的数据载荷,并跳转至步骤十;步骤八、将当前tlp的tlp参数缓存在先进先出存储器中,跳转至步骤九;步骤九、fpga获取先进先出存储器中缓存的类型1,2或3的tlp参数,读取fpga获取的tlp参数对应的数据,并向nvmessd发送完成报文,跳转至步骤十;步骤十、结束。利用rxuser[2]信号区分接收到的tlp请求读取的内容,并结合tlp参数,省略地址解析过程,简化nvme-pcie数据包解析模块设计的方法。具体实施方式五:本实施方式与具体实施方式四不同的是:所述rxuser[2]为1时,代表当前tlp的地址信息在pciebar0(pcie基地址寄存器)地址区间范围内,否则,当前tlp的地址信息不在pciebar0地址区间范围内。具体实施方式六:本实施方式与具体实施方式五不同的是:所述当前tlp的地址信息通过当前tlp的长度信息和前一个tlp的地址信息计算得到,具体为:address(n+1)=4×length(n+1)+address(n)其中:address(n+1)代表当前tlp的地址信息,length(n+1)代表当前tlp的长度信息,address(n)代表前一个tlp的地址信息。表2中的5类tlp的地址信息的范围是固定的,每一类tlp都是由nvmessd严格按照地址从小到大的顺序产生的。这些tlp的起始地址信息由fpga本地定义,每个tlp的地址信息可以由当前tlp的length乘以4加上前一个tlp的地址信息得到,即address(n+1)=4×length(n+1)+address(n)。这些地址信息不用缓存在fifo中,因此由fpga内部由blockram构成的fifo缓存模块只需记录tlp参数(16位)及tag字段(8位),不用记录tlp的地址(32位)。本发明提出的简化方法(每个tlp缓存24位数据)与解析并记录地址信息的方法(每个tlp缓存56位数据)相比节省57%的blockram资源。综上所述,本发明提出的简化的解析模块通过解析tlp包头的fmt+type+length得出tlp参数,该参数与tlp的操作类型及操作地址一一对应,能够实现解析模块全部的功能,且省略了地址信息的解析及缓存,简化了开发过程并节省了blockram资源。本发明的上述算例仅为详细地说明本发明的计算模型和计算流程,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1