论文研究-面向帧结构的计算机与FPGA间PCIe通信库设计与实现 .pdf

所需积分/C币:10 2019-08-22 18:12:39 622KB .PDF
6
收藏 收藏
举报

面向帧结构的计算机与FPGA间PCIe通信库设计与实现,李志伟,丁博岩,随着技术的发展,FPGA作为计算机系统的加速器被越来越多的研究者和开发人员使用。很多FPGA应用所处理的数据具有帧结构的特点,但由�
山国武技记文在 间帧结构数据的高速传输 是款支持流式数据传输的通信斥,该通信库支持奇存器读写、 数据传输以及用户自定义中断三种基本功能,最髙支持 模式。然而在传输帧 结构数据时,每次过程中数据量都不大,并且每一个唢通常会对应着一块控制信息以 及相应的状态信息。由于每一个帧数据都需要反馈状态信息,如果直接在 上完成 唢数据的传输,帧与帧之间无法有效地进行链式 从而造成每次数据量过小, 性能较低。同时, 是针对于流式数据处理的加速器所设计和实现的,如果在此基 础上将数据交互方式封装为面向帧结构的,也会耗费更多的资源,所以本文冋时提岀 了一套新的 硬件结构和交互过程,不但能够很好的支持帧结构数据传输,同时具备简 洁易维护的特点。 通信库需求分析 与计算机之间的通信主要需求包括:数据传输 数据传输、复位和 中断,下面分别进行说明。 数据传输 软件通常需要通过寄存器操作米读取硬件的状态或是对硬件进行控制,例如需要査询硬 件是否正在忙碌或者对硬件进行复位捰作等。因此需要支持开发者在软件端读写硬件中的寄 存器 数据传输 为了达到较高的性能,计算机与 之间的帜数据传输通常通过完成。而这种 数据传输分为计算机到 和 到计算机两个方向。对于计算机到方向的数 据传输,通常软件向硬件提父一帧数据的同时,还需要给岀硬件处理该帧的控制信息,当硬 件处理完成这帧之后,还会向软件反馈相应的状态信息,以告知该帧处理的结果。对于 到计算机方向的数据传输,迸常软件在获得硬件传输过来的帧数据的同时,还需要获取对应 于帧数据的一些状态信息 中断 在软硬件系统进行协同L作的过程中,硬件中可能会产生需要告知软件的事件,这吋就 需要通过中断来通知软件了。在面向帧结构的计算机 通信库中,计算机向 及 向计算机方向的帧数据传输都有可能产生中断事件 其他需求 ()在系统中硬件设置版木号寄存器,软件驱动会比对这个寄存器是否和软件的版木 致。如果不一致将给出提示,以免因为版木号不一致而导致问题。 系统需要考虑多平台的支持,在设计吋需要将和核紧密相关的模块独立出来, 方便在多个平台间进行移植。 ()考虑到用户程序的时钟与 通信库内部的时钟可能不同,所以需要完成两 个时钟域之间的时钟域转换。 通信库功能设计 基J上节需求,木文提出的与计算机之问的通信库 包括 引擎 山国武技记文在 )、引擎( 数据交互引擎( 中断处理模块( )和 核,其中 又由 等个子模块构成,系统功能划分如下图所示: MWr DMA U Data DMA B2H ENGINE NGINE MRd Statues DMA_DSI Data DMA_H28_ FNGINE K言 CplD ENGINE CpID PIO ENGINE INTR NTF 图 通信库硬件结构图 引擎 引擎包括 和 个了模块,其中, () 用于完成计算机到 方向的传输,并完成时钟域 转换、提供用户接口,该方冋的也叫读。该模块的内部结构如下图所示。当软 件向硬件发送一个链的帧数据请求时,请求所对应的链的第一个描述符的 地址将被存放在 中的相应队列中当加速器硬什请求对该链 进行 时,请求将通过 传递到 中 向 请求链首描述符地址,之后请求第一个描述符。在获取第 描述符后, 会请求下一个描述符,同时依据描述符给出的信息让 模块请求数据、让 模块进行状态描述符的发送。 对后续的描述符重复上述过程,最终完成链中所有帧的数据传输。 DMA request for data H2B DATA h2b data Host to board data FSM Data dma DMA request for descriptor request Host to board descriptor h2b desc fifo DMA H2B 「SM H2B DESC H2B REQ reques ADDR BUF FSM Stat desc 冂 MA rea for status desc DMA req H2B STAT h2b stat Status descriptor FSM desc fifo 图 模块结杓图 山国武技记文在 模块用于完成 到计算机方向的 传输,并完成吋 钟域转换、提供用广接∏,该方向的也叫写。该模块的内部结构如下图所示。 该模块的工作从软件将准备好的空闲帧数据缓冲区提交给硬件开始。空闲帧缓冲区的提父是 通过软件写入 向计算机方向的控制描述符完成的,这些控制描述符将被缓存于硬件中 的 中。当加速器需要传递帧数据时,首先通过 获取相应 队列的一个帧数据缓冲区的描述符,然后将帧数据以及对应的状态描述符发送给 模块 会将帧数据以及对应的状态描述符变成请求, 发送给后续模块并最终完成过程。 b2h slat DMA request for status desc fifo descriptor and data bah data fifo DMA B2H b2h dcsc fi B2HB2H DESC B2H REQ BUF 图 模块结构图 () 模块负责计算机到 方向的传输控制,完成了存储器读请求 报文()的打包和带有数据的完成报文()的解包、数据分流等功能。 () 模块负责到计算机方向的传输控制,完成了存储器写请求 报文()的打包。为了避免用户提交不完整的帧数据导致 程序卡死, 模块同时完成对帧数据完整性的检査,确认该帧数据完整后提父给 模块。 引擎 引擎对的请求进行处理,对于读请求,引擎将向寄存器组给出读 地址,当寄存器组返回读取的数据时,引擎通过报文控制器和 核向总线上 回复读取到的数据:对」写请求,引擎向寄存器组给出写地垃和数据,以使 数据被写入寄存器中;同时,引擎亢成与用户时钟的时钟域转换并提供用户接l 中断处理模块 中断处理模块( )负责将加速器硬件的中断请求通过总线发送到计算 机端,并完成与用户时钟的时钟域转换、提供用户接口 提供种关型的中断 包括计算机向 帧数据传输中断( 向计算机端帧数据传输中断( 以及自定义的其它中断(),这种中断具有相同的优先级 与 的使用具有固定要求,分别在完成·次计算机向-数据传输与 向计算机帧数据传输后,由用户控制端程序向计算机发送中断,以告知计算机 此次传输宄成。 数据交互引擎 数据交互引擎由 两个模块组成,用于完成与 核的 直接交互,将 核提供的较难使用的接口转化为更易于进行报文处理的接口,简化了 山国武技记文在 后续模块对报文的相关处理。 核 核用于和总线进行交互,将总线信号中的数据提取出来。 通信库功能实现 中断接口实现 系统中存在三种中淅: ()计算机向 帧传输中断 当用户硬件读取完计算机向 方向帧 数据并反馈状态信息后,即请求该中断,以告知用户软件完成∫此次传输,用户软件在收到 此中断后可查收状态信息、。 () 向计算机唢传输中断 :当用户硬件完成帧数据和状态信息写入后, 即请求该中断,以告知用户软件完成了此次传输,用户在收到此中断后可查收帧数据和状态 息 ()用户自定义中断:此中断由用户自定义控制,可根据用户硬件的需要请求该中断。 计算机向 方向传输实现 在计算机向 方向的帧数据交互的过程中,加速器对应的软件首先将需要 传输给的帧数据以及对应的帧控制描述符以链表的肜式组织好,并通过通信库的软件 接凵提交给通信库。通信库会将帧数据与对应的控制描述符传输到相应的通道中,并 通过硬件接口通知加速器硬件有新的数据到来。加速器硬件按照优先级顺序从硬件接口请求 某一通道的帧数据,并对帧数据进行处理,当一帧的数据被处理完成之后,硬件需要将帧处 理的状态通过状态描述符反馈给软作端,从而完成计算机向方向的帧数据交互过程。 计算机向 方向的帧数据传输过程所需传递的信息如下表所示。 在计算机与 之间帧数据传输过程中,所使用的描述符全都是固定长度的。固定长 度的描述符会方便用户使件的实现,并且描述符的长度也足够保存用户所需要的控制信息与 状态信息。 在计算札与之间帧数据传输过程中,所使用的描述符全都是固定长度的。固定长 度的描述符会方便用户硬件的实现,并且描述符的长度也足够保存用户所需要的控制信息与 状态信息 表计算机向 方向帧数据传输的交互信息 息 方向 描述 帧数据 计算机到 主机向 传递的帧数据,长度不同定 帧(控制)描述符 计算机到 帧对应的控制描述符,描述符中用户自定义的字段可 以被用于存放帧的控制信恳,如帧的长度、处理完该 帧之后是否需要发送中断等。长度固定为 帧状态描述符 到计算机硬件处理帧数之后向软件的反馈信息(如软件发来 的帧是否被硬件成功处理等信息),长度固定为 向计算机方向传输实现 向计算机方向帧数据的交互过程中,首先需要由加速器的软件部分准备用于存放 帧数据的缓冲区,并将这些缓冲区通过通信库的软件接口提交。通信框架的软件端将通知硬 山国武技记文在 件端有新的缓冲区被提交。当加速器的硬件部分需要向计算机中的软件发送数据吋,它需要 按照优先级顺序通过通信库的硬件接∏获取·个空闲的缓冲区,并将帧数据以及相应的状态 描述符提交给硬件接口。通信库将负责把帧数据以及对应的状态描述符传输到计算机端,并 通知加速器的软件程序,完成 向计算机方向帧数据交互的整个过程。 向计算 机方向帧数据的传输所涉及到的信息如下表所示。 表 向计算机方向帧数据传输的交互信息 信息 描述 帧数据 到计算机向计算机传输的帧数据,长度不固定 帧(控制)描述符 计算机到 帧对应的控制描述符,该描述符包含计算机端的缓冲 区大小等信息。长度为,但不包含用户自定义字 段 帧状态描述符 到计算机与硬件向软件传递帧数据对应的帧的状态描述符,长 度为 并包含的用户自定义字段。 驱动程序 驱动程序中完成了计算机中对 与中断报文的处理,并提供了核心态接口 过程的驱动支持 操作的为 和 ,它们分别负责对硬件中的用户自定 义的寄存器进行读写操作。寄存器的操作是以为单位的 过程的驱动支持 过程涉及到的如下所示,其中“”表示该用于计算机向方向的 帧数据传输,而“”表示该用于 向计算机方向的帧数据传输: 在计算机向方向的帧数据传输过程中,加速器的软件可以通过以下的步骤将帧数 据以及相应的控制信息传递给硬件: 构建需要传递的帧链表。为了达到更扃的效率,用户软件可以将多个帧或者有·定 联系的帧通过结构体 连接成为链衣 调用 函数进行 映射 调用 向硬件提交描述符。 当硬件处理完帧数据之后,软件需要获取硬件处理的反馈信息,也就是状态描述符。这 个过程可以通过下面步骤完成 调用函数 查看硬件反馈的状态描述符,并从状态描述符中获取该 山国武技记文在 描述符所对应的通道; 从记录该通道提交数据的队列的头部获得硬件处理完成之后的帧,调用函数 解除映射,释放资源; 描述符或者的数据进行下一步的处理。 向计算机方向的帧数据传输过程中,加速器的软件可以通过以下的步骤将帧数 据缓冲区以及相应的控制信息传递给硬件: 准备好空的帧数据缓冲区,并填充对应的描述符结构体 调用 函数进行 玦射 调用 函数提交向硬件提交这个帧数据缓冲区。 当硬件将帧数据传递到软件之后,软件需要获取反馈的状态描述符并获取帧数据,该过 程可以通过下面步骤完成: 调用 来解除块射; 调用函数 获取状态信息,并获耿该帧所在通道的编号; 对数据进行下一步的处理。 在加速器驱动程序开发者使用的核心态软件接口过程中,软件端存放帧的数据结 构由开发者在自己的驱动中实现的,并目映射和解映射过程也是由开发者完成的 中断过程的驱动支持 中断处理程序的注册和注销涉及到的是 两个函数 两个函数的定义如下: 两个函数都需要传入描述设备的 结构体。用」中断注册的 数还需要中断处理函数的函数指针以及作为中断处坦函数被调用时的参数的 指针作为参数。中断注册函数 在中断注册成功时将返回,如果中断注册出 现问题则会返回。 中断处理函数如下 中断处理函数是加速器开发者定义,并通过 函数进行注册的。中断处 理函数有两个参数,第一个参数是加速器开发者在注册中断处理函数时指定的指针,它可以 是加速器中断处理程序的私有数据( 第二个参数是表示中断类型的一个枚举变 量,分别对应 与三种类型的中断。 性能评估 测试使用了一台带有插槽的计算机和一块 开发板。测试所 使用的计算机配备了一块华硕 主板 处理器以及 主存。测 试所使用的软件环境为位 操作系统, 内核版本为 本文对 在带有内存拷贝的模式下进行了性能测试,在测试过程中,所有数据 山国武技记文在 会被从缓冲区拷贝到另外个内存区域中。 Performance/Mbps 20000 18000 16000 一H2B1KB HHH2B KB 14000 12000 一B2H1KB 10000 --B2H 8KB 一B2H64KB 8000 V2 H 6000 -v2 B2H 4000 frames in one DMA chain 图 帧数据传输性能 带有内存考贝的帧数据传输性能如图所示,其中”表示从计算机到 开发板方向(即 方向),而“”表示从开发板到计算机方向(即 是针对与帧结构数据进行 数据传输的,我们对 在不冋帧长度和不同链长的情况下进行了测试。我们对帧长为 种情况进行了测试,分别由由线 以及 所示。除上述条曲线以外 和 两条曲线展示了 的性能,该曲线中每一个点与 和 曲线具有相同的数 据总量 依据性能测试的结果,可以看出 在单帧长度为时,可以达到 的 计算机向 方向性能以及 的 向计算机方向性能,分别是理论最大值的 和 而在帧长的情况下,达到了 和 的性能,分别是理 论最大值的和 而 在这种模式下的最大性能为理论最大值的和 由于 在帧数据传翰过程中,除∫传输唢数据本身,还需要传输状态描述符和 控制描述符,而这些描述符并没有包含在图所小的数据总量中。因此, 在满足 了帧数据传输交互模式的前提下,还在带内存拷贝模式的数据传输性能上达到比 更高的性能。 结论 本文提出了一套面向帧结构的计算机 通信厍,通过对典型系统诖行调研 并结合帧数据传输特祉进行分析,设计了面向帧结构的通信库硬件架构和交互方式 能够支持帧结构数据在计算机与 间的高速传输,弥补了 对于结构数据传 输的不足,同吋优化了 的硬件结构,提升了用户友好性,使丌发者能够更快地将 加速器集成在计算机系统中 山国武技记文在 参考文献

...展开详情
试读 10P 论文研究-面向帧结构的计算机与FPGA间PCIe通信库设计与实现 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
weixin_39840650 你的留言是对我莫大的支持
2019-08-22
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 至尊王者

    成功上传501个资源即可获取
关注 私信
上传资源赚积分or赚钱
最新推荐
论文研究-面向帧结构的计算机与FPGA间PCIe通信库设计与实现 .pdf 10积分/C币 立即下载
1/10
论文研究-面向帧结构的计算机与FPGA间PCIe通信库设计与实现 .pdf第1页
论文研究-面向帧结构的计算机与FPGA间PCIe通信库设计与实现 .pdf第2页

试读结束, 可继续读1页

10积分/C币 立即下载 >