所有提交的EM系统将被重定向到网上投稿系统.作者被要求将文章直接提交给网上投稿系统各自的日志。

FPGA在自适应可重构IOH中的应用

斯里达尔·拉贾1印度金奈600073巴拉特大学能源与信息科学系助理教授
有关文章载于Pubmed谷歌学者

更多相关文章请访问国际电气、电子和仪器工程高级研究杂志

摘要

数据流量已经极大地增加,并且在连接的世界中仍在增加,这推动了IO技术的发展。随着技术的进步,简单高速的统一互连成为现实,以支持许多不同的协议。Light Peak (LPK)是英特尔为此目的开发的一种高带宽、廉价的光学互连技术。此外,为了满足多功能和不断变化的I/O需求,自适应IOH (I/O Hub)体系结构可以提供令人满意的灵活性。本文提出了一种基于FPGA实现的高带宽、灵活的嵌入式系统IOH架构。该平台拥有2个10Gbps光LPK链路,以及多个SATA、以太网和显示端口接口。除了硬件之外,我们还提出了一个软件堆栈框架,利用LPK的多功能主控制器,为协议映射提供了统一的接口,取代了众多单独的硬件控制器。因此,它降低了成本和开发工作量,并提高了IOH的灵活性。我们还在设备端描述了一个可配置的硬件协议适配器,它可以直接连接到任何设备。基于IOH的FPGA上的IO计和Iperf显示了SATA、以太网的性能,与传统的FPGA相比具有一定的竞争力。

介绍

在嵌入式系统中,数据流量近年来急剧增长。随着技术的进步,简单而高速的互连提供了低成本、统一的互连,并将其他不同的协议映射到它上,已经成为现实。为了通过这些嵌入式系统的统一互连满足多功能和不断变化的I/O需求,高速和高度自适应的IOH (I/O集线器)架构将提供令人满意的灵活性。一些嵌入式系统提供了各种ioh来满足不同的应用需求,例如Intel为客户[1]提供了大约20种embedded Intel®Architecture芯片组。NXP生产87种平台,支持64种IOs[2]。Light Peak[4]是英特尔公司开发的一种高带宽、廉价的光互连技术。协议本身提供了非常适合不同应用的特性[5]:
•使用小数据包大小来实现低延迟。
•在公共链路上复用多个I/O协议的能力,具有高带宽效率。
•使用优先级和带宽预留机制分配链路带宽的能力。
另一方面,FPGA固有的灵活性使其能够支持不同的应用。此外,最新的FPGA采用了先进的收发技术,以支持未来的通信系统。本文基于FPGA和LPK技术,提出了一种高带宽、支持多协议的嵌入式系统IO HUB解决方案。该解决方案提供了统一的协议映射接口,利用LPK的多功能主控制器取代了众多单独的硬件控制器,从而降低了嵌入式系统的成本和开发工作量,并提高了IOH的灵活性。该平台实现了SATA、以太网和显示端口。
基准测试的结果显示,每种协议的性能都与原生协议具有竞争力。该平台采用Xilinx FPGA V5系列和10Gbps x2光PHY模块实现。我们在上面映射SATA,显示端口和以太网。

系统架构

该平台由上位机、FPGA板和终端设备组成,如图1所示。该单板由aFPGA模块、LPK光模块和SATA、Display、以太网等多个连接器组成。在主机端,FPGA既可以附着在PCIe总线上访问主存的数据,也可以附着在本机硬件控制器(如Display Port)上接收数据,如图1所示。在设备端,FPGA连接端设备并将端设备的数据传输到光纤上。
当应用程序通过提出的光IOH在某种协议上传输数据时,主机可能具有本机协议的硬件控制器,也可能没有。在第一种情况下,即DisplayPort, FPGA接收到的协议数据是主机本机硬件控制器生成的真实数据包流。FPGA中的硬件IN适配器对数据包进行重组,封装成LPK包。然后LPK硬件对报文进行处理,并通过光纤发送出去。在第二种情况下,即SATA和以太网,我们提供了一个软堆栈框架来代替本机硬件控制器。软件栈直接按照LPK要求组织协议格式数据,CHCI取数据到LPK底层硬件,最后以LPK包的形式发送出去。在设备端,LPK报文由FPGA接收并转换回本机协议格式。交换机将数据分发给相应的硬件协议引擎,由硬件协议引擎将协议格式头和数据进行解包,最后传输到终端设备。
图2所示为平台架构堆栈,包括:
•与操作系统绑定的软件界面。OS定义了需要为一类设备实现的标准接口API。
软件协议处理层,它维护某些协议状态,并将操作系统原语转换为产品设计中预定义的语义。该层提取了到OS块设备层的统一接口,这对于低级驱动程序开发人员来说是一种极大的解脱。
CHCI接口层,管理主机内存和底层硬件之间的实际数据传输。
•硬件CHCI接口层,提供硬件队列处理、DMA操作等。•硬件协议处理层通常包含事务跟踪、数据接口和主机数据到设备协议数据单元转换。具体的设计和工作流程将在下面介绍。

硬件体系结构

硬件平台可以配置为主机侧设备,也可以配置为设备侧设备。在主机侧配置中,所有本机协议报文通过LPK主机控制器或In适配器转换为LPK报文;在设备侧配置中,所有从光链路接收到的LPK报文都被转换回本机协议报文,并分配给相应的OUT适配器。该平台由光模块和FPGA两大部分组成。光模块提供高达10Gbps的高带宽PHY层,并将来自10Gig收发器的电信号转换为光脉冲馈送到连接器[6]。FPGA设计提供如下组件,如图3所示:
•LPK逻辑PHY和传输层:LPK链路训练,时钟差补偿,数据包验证和分类。
•LPK开关:将每个LPK报文发送到目的地。提供基于报文头信息的流量控制和QoS调度。
LPK主机控制器(CHCI): LPK主机控制器定义用于在FPGA的主机内存和LPK fabric之间交换帧。它的DMA引擎通过标准的PCIe事务以高效率和低延迟的方式移动数据。在TX方向上,来自主机内存的帧被分割成LPK包,然后通过LPK网络转发。在RX方向,LPK包被重新组装成软件需要的帧,并由DMA引擎上传到主机内存中。
•IN适配器:将本机协议报文和数据流封装成LPK报文。
•协议引擎:通用协议引擎,可定制成各种OUT适配器,满足DisplayPort、SATA、以太网等不同接口协议需求。下面给出协议引擎的详细设计。
协议引擎的详细架构如图4所示。
在我们的设计中,它由四层组成:协议无关的SAR (Segmentation & reassembly)层、协议适配层、协议依赖的链路层和PHY层。
•协议独立的SAR层
这一层的功能是分组分割和重组(SAR)。LPK协议报文最大负载大小为256字节,远远低于许多原生协议。本机数据包在LPK光纤上传输之前需要经过处理。分割是指从一个帧生成多个LPK包的过程,重组是指从相反方向的多个LPK包生成单个帧的过程。
协议适配层
该层实现LPK和本机协议之间的协议转换。协议适应层根据LPK包头中的信息将报文分为两类:数据报文和协议报文。数据包将直接转发到链路层。协议数据包将被终止或用于控制链路层,以满足本机协议的要求。例如,该数据包是来自主机端的MDIO数据包,用于读取当前以太网链路状态,协议适应层将终止该数据包,读取相应的链路状态寄存器,并准备以太网所需格式的应答数据包,然后将应答数据包作为LPK负载向SAR层提出请求,并在LPK包报头中指出数据包类型为MDIO。
如上所述,用户可以配置该层来支持不同的原生协议,只是协议部分不同,
数据路径和相邻层接口相同。协议相关链路层每个协议都有自己的链路训练流程,这里我们对每个协议使用离散状态机。将来,我们将考虑将公共部分合并到一个状态机中。•参数化PHY层
针对不同的原生协议PHY直接配置FPGA嵌入式收发器。我们在收发器配置中设置了许多参数,如链路速度、编码方法、逗号集、信道绑定、电气特性等。

软件架构

最初的LPK硬件解决方案将I/O协议映射为成对的IN和OUT LPK适配器。它不需要改变当前的内核。IN口的IN适配器将本机硬件控制器连接到LPK交换机,OUT口的OUT适配器将设备连接到LPK交换机。该机制不需要额外的软件工作,但需要系统支持多种不同的本机协议硬件控制器。
本文提出了一种不需要本机硬件控制器和IN适配器的I/O协议映射解决方案。如图4所示,该解决方案将主机端协议处理逻辑从硬件转移到软件。软件架构设计如下:
•操作系统接口API——操作系统内核定义了需要为一类设备实现的标准接口API。
协议处理层——维护协议状态,并将上层原语转换为用于出现在本机硬件控制器中的语义。
CHCI接口软件-管理主机内存和底层硬件之间的数据传输,报告传输完成情况,并向协议处理层提供通用协议处理功能。我们已经成功地将SATA和NIC协议映射到这个解决方案中。Linux 2.6.25中实现了CHCI驱动、SATA驱动和NIC驱动来支持这种映射。其他上层,如SCSI,块,核心网络,VFS层是不变的。

ERFORMANCE

我们做了几个实验来测量架构的开销。我们分别在本机环境和平台环境下运行SATA和NIC。这里的“本机”指的是数据在其原始协议连接上传输的环境。
A. SATA测试设置和性能
已部署IO meter对SATA硬盘进行测试。为了分析架构对SATA性能的影响,我们让客户端在两个环境中用不同的块大小执行读/写磁盘操作,并收集吞吐量和CPU利用率数据。
图5.(a)和图5.(b)分别显示了SATA在本机环境和我们的环境下的读写性能。在我们的平台上读/写的吞吐量非常接近Native的吞吐量。值得注意的是,我们的读吞吐量相对要高一些。原因是在我们的SATA驱动程序的数据包接收中有一个内存副本,导致更多的缓存命中和更高的吞吐量,但代价是更高的CPU利用率。B. NIC测试设置和性能
我们已经部署了测试工具Iperf来测试网卡。在Native环境中,客户端和服务器直接通过网线连接,而在我们的环境中,它们通过光纤通过LPK织物连接。在实验中,为了分析我们的架构对NIC性能的影响,我们让客户端以不同的MSS (Maximum Segment Size)执行TCP传输/接收操作,并收集吞吐量和CPU利用率。
图6.(a)和图6.(b)显示了网卡在本机环境和我们的环境下的TCP接收/传输性能。LPK的吞吐量非常接近本地的。但有一些分歧我们需要解释。请看图6.(a),我们在50和100字节时的吞吐量要高得多。这是由于我们的网卡驱动没有实现本机环境网卡驱动中实现的控制中断率的动态算法。所以两种环境下网卡的中断率是不同的。环境中较高的中断率可以降低TCP事务的延迟,但代价是更高的CPU利用率。图6 (b)中也发生了类似的情况。
c .结论
从这些测试中,我们看到我们所提议的体系结构带来了我们所期望的一些开销,但是它非常小。通过进一步优化我们的软件和硬件实现,我们可以实现更小的开销。

总结

本文提出了一种基于FPGA和LPK技术的高带宽、多协议支持的嵌入式系统IO HUB解决方案。该解决方案考虑有或没有本机设备控制器的各种连接环境,涵盖主机端和设备端,并覆盖系统。我们提出了一种软件堆栈框架,利用LPK的多用途主控制器,提供统一的协议映射接口,取代大量的本地硬件控制器,从而降低成本和开发工作量,并提高IOH的灵活性。在该平台上实现了SATA、以太网和显示。基准测试结果显示,每种协议的性能都与原生协议具有竞争力。

数字一览

图1 图2 图3
图1 图2 图3
图4 图5 图6
图4 图5 图6

参考文献






全球科技峰会