《电子技术应用》

基于交点队列型Crossbar的多层AXI总线设计

2017年电子技术应用第3期 作者:胡春林1,2,王 镇2,王申卓1,2,汪 健2,徐大诚1
2017/4/6 10:58:00

胡春林1,2,王  镇2,王申卓1,2,汪  健2,徐大诚1

(1.苏州大学 电子信息学院,江苏 苏州215006;

2.中国兵器工业集团北方电子研究院有限公司微电子部,江苏 苏州215163)


    摘  要: AXI总线内部传统的核间通信结构对处理器核之间的通信存在多方面的限制,已难以满足多核SoC(System on Chip)日益发展的性能需求。提出以交点队列(Crosspiont-Queued,CQ)型Crossbar代替传统的核间通信结构,设计一种多层AXI总线。通过Simulink工具对交点队列型核间通信结构进行建模与仿真,确定其交点缓存的最佳深度。并结合VCS仿真工具对所设计的RTL代码进行了全方面的仿真,结果表明,所设计的通信架构能够完整地实现读写功能。

    关键词: AXI总线;多核SoC;交点队列;多层总线

    中图分类号: TP302

    文献标识码: A

    DOI:10.16157/j.issn.0258-7998.2017.03.006


    中文引用格式: 胡春林,王镇,王申卓,等. 基于交点队列型Crossbar的多层AXI总线设计[J].电子技术应用,2017,43(3):29-32.

    英文引用格式: Hu Chunlin,Wang Zhen,Wang Shenzhuo,et al. Design of a multi-layer AXI bus based on the crosspiont-queued crossbar[J].Application of Electronic Technique,2017,43(3):29-32.

0 引言

    多核时代的到来,使得对片内通信效率的要求越来越高,因而通信架构成为了设计的重点和难点,直接影响着SoC最终的性能、面积、功耗等因素。国内外已有多家研究机构发布了各自的总线标准,其中ARM公司发布的AXI总线结构具有高性能、低延迟等优点,能够使 SoC以更低的功耗、更小的面积获得更加优异的性能[1],成为当前主流的片上通信架构,在实际SoC中应用最多。AXI总线将读、写地址通道和读、写数据通道完全分离,支持burst传输和乱序传输,具有很好的并行性。

    AXI总线结构中,处理器核(主设备)之间通常采用共享存储的方式来实现核间的数据交互,这种核间通信方式结构虽简单,但由于通信效率低,且存在数据一致性等问题,使其难以满足日益发展的多核SoC内部核间通信的性能要求。

    基于此,本文提出一种基于交点队列型Crossbar结构的多层AXI总线,并实现内部集成4个处理器核的多核SoC片内通信。在AXI总线结构的基础上,核间采用交点队列结构代替传统的共享存储结构,实现4个处理器核之间点对点的分布式连接,处理器核可以同时工作而不受制约,且核间无数据共享,从结构上避免了数据一致性问题。同时,AXI的多层总线结构可充分利用总线的带宽,提高模块的并行性,能进一步提升总体架构的通信效率。

1 多层总线通信结构

1.1 整体结构

    根据系统需求,本设计将外设从设备分为4类,Slave0用于配置寄存器,Slave1用于连接UART、CAN等串口外设,Slave2用于连接片上SRAM,Slave3用于连接外部存储器接口。系统总体的片上通信结构如图1所示。采用交点队列型Crossbar的核间通信结构如图1上半部分全阵列,每个处理器核都与其他3个处理器核点对点互联,在交点处内置异步FIFO缓存,实现局部同步,整体异步。在与外设通信时,处理器核通过AXI总线可单独与任一从设备进行数据交互。核间交点队列型Crossbar作为系统的第一层总线结构,时钟频率与处理器核同步,实现处理器核之间的高速通信;AXI总线的交叉网络作为第二层总线结构,实现各处理器核与片上外设模块之间的连接,在保证高速传输的同时,方便各处理器核与各功能模块直接通讯;slave接口可直接连接高速设备,也可作为转接器,连接串口外设等多路低速设备,构成本设计的第三层总线结构。

wdz2-t1.gif

1.2 队列深度的仿真与验证

    交点队列型Crossbar的内部结构中,每对处理器核的连线中间都有一个缓存队列,发送端处理器核根据数据的目标将数据发送至对应的缓存队列,接收端处理器核则根据仲裁结果读取其中一路缓存队列中的数据。若节点缓存队列满,则将后继到来的数据丢包[2]。对于丢包的问题,本设计通过保留输入端与队列之间的握手信号来解决,数据一旦丢包则再次请求输入端发送丢失的数据。缓存队列的深度和调度算法是影响核间交点队列型Crossbar结构通信效率的关键因素,队列过小则会导致握手请求过于频繁,影响通信效率,队列过大则会导致资源的浪费,因而必须找到队列吞吐量与缓冲队列深度之间的平衡点。文献[3~4]结合不同的调度算法,通过建模仿真,找出了不同调度算法和队列深度对平均延迟、丢包率产生的影响,并指出轮询算法(Round Robin,RR)为最佳的仲裁方案。

    为进一步验证队列深度对丢包的影响,本文根据M/M/1排队理论的知识[5],利用Simulink工具构建了交点队列型Crossbar的仿真模型。如图2所示,模型设立了3个相互独立的信源以及1个信宿,3个信源分别代表core0、core1、core2,信宿代表core3,“队列0-3”表示core0到core3的缓存队列,以此类推。模型主要模拟core0、core1、core2向core3发送数据,并观察它们之间缓存队列中数据包的个数。信源端调度器代表解码器,将来自信源的数据随机分配给3个深度足够大的缓存队列。信宿端调度器按照轮询算法接收core3与其他core之间交点缓存队列中的数据,并发送给core3。缓存队列用于存放未被轮询调度器接收的数据,通过信号观察器可查看队列在每个时刻存储的数据包的数量。

wdz2-t2.gif

    对模型进行了2 500个时序的仿真后,结果如图3所示,图3(a)~图3(c)分别记录着3个交点缓存队列中存放数据包的个数,图3(d)记录信宿接收数据包的个数。从仿真结果可看出,3个缓存队列中数据包的数量在绝大多数时序内都小于32。文献[6]推导出了在RR调度机制下,交点队列型Crossbar节点吞吐量的计算公式,对于本设计的4×4交叉网络,在负载设为1的情况下,当队列深度设为32时,节点的吞吐量将达0.98。由此,本文将交叉节点缓存队列的深度设为32。

wdz2-t3.gif

2 主要模块的设计与实现

2.1 核间互连结构

    本设计的核间互连结构如图4所示,其中queue即为核间交点队列型Crossbar结构中的缓存队列。数据在送至缓存队列之前,w_addr信号根据此数据的目标核,选通对应的核间交点缓存队列。当交点缓存队列中有数据时,队列就会向目标核发出请求读取的信号,随后仲裁器根据调度算法从3路请求信号中选择一路;得到仲裁器的允许后,目标核就会选通该队列,并形成一条链路进行数据传输。此外,每个缓存队列与发送端处理器核之间都有一个response回路信号,用于监视数据是否已经送至缓存队列中,若发生丢包,则通知发送端处理器,令其再次发送丢失的数据。

wdz2-t4.gif

2.2 Slave接口模块

    Slave接口模块主要实现AXI总线到从模块之间的协议转换以及时序转换。图5为Slave接口模块的结构图,两个FIFO分别用于缓存总线发送给从模块的数据和从模块发送给总线的数据,写返回逻辑主要用于通知总线此次写事务是否成功,last返回逻辑产生的rlast信号则用于通知总线此次读取的数据为从模块发送的最后一个数据。根据AXI协议,总线端信号主要包括写地址通道信号、写数据通道信号、写应答通道信号、读数据通道信号、读地址通道信号。Slave接口模块一方面将这些将基于AXI的协议包解码出通用的写使能信号、写地址信号、写数据信号等基本信号;另一方面将来自从模块的读使能信号、读地址信号、读数据信号转换成AXI协议信号。

wdz2-t5.gif

2.3 仲裁器模块的设计

    设计的仲裁器结构如图6所示,由优先编码器、屏蔽优先级编码器、屏蔽优先级解码器以及指针控制电路组成。仲裁开始后,请求信号一方面进入固定优先级仲裁器仲裁;另一方面与优先级寄存器中经取反后的信号做与运算,可编程优先编码器将此结果编码后得到屏蔽信号。屏蔽信号主要用于和固定优先级编码器编码后的结果做与运算,实现屏蔽功能。屏蔽编码后的结果再与可编程优先级编码器的结果做或运算即得输出结果,该结果即为仲裁器对仲裁请求做出的应答信号。同时,将此结果送至指针更新控制电路,对优先级指针进行更新。

wdz2-t6.gif

3 仿真

    本文设计的四核SoC片上通信结构主要包括交点队列型核间通信模块、仲裁器、译码器、Master与Slave接口模块等。采用Verilog HDL语言对交点队列核间通信模块进行RTL设计,并结合Testbench,使用Synopsys VCS仿真工具对交点队列型核间通信结构进行了功能仿真,仿真后的波形如图7所示。图中INTM0_M1置高,表示核0发数据给核1。按照AXI协议,信息源通过VALID信号来指示通道中的数据和控制信息何时有效,目地源则用READY信号来表示何时能够接收数据。当SOIN_ARREADY与SOIN_ARV-ALID同时为高电平时,表示传输的地址有效;SOIN_RREADY与SOIN_ RVALID同时为高,表示传输的数据有效。只有当传输的地址有效后,且SOIN_RREADY与SOIN_RVALID同时为高时,core1才会读取来自core0的数据。从图可看出,所设计的交点队列结构能完整地实现数据交换,且读写过程与AXI协议一致。

wdz2-t7.gif

4 结论

    多核SoC设计中,采用传统共享存储的核间通信方式存在硬件资源浪费、效率低等问题,已经难以满足多核SoC日益发展的性能需求。针对这些问题,本文结合交点队列型交叉开关结构,设计并实现一种交点队列型Crossbar结构的多层AXI总线。核间点对点的分布式连接可使处理器核同时工作而不受约束,极大地提高了核间通信效率。通过对4×4交叉网络的建模仿真,确定了交点缓存队列的最佳深度为32,并结合公式计算,得出其内部节点的吞吐量高达0.98。四路Slave接口既能连接高速设备,又能作为转接器,连接多路低速设备,这种AXI的多层结构有利于总线带宽的充分利用。

参考文献

[1] 胡景华.基于AXI总线的SoC架构设计与分析[D].上海:上海交通大学.2013:21-29.

[2] RADONJIC M,RADUSINOVIC I.Average latency and loss probability analysis of cross-point queued crossbar switch[C]//ELMA-R,2010 PROCEEDINGS.IEEE,2010:203-206.

[3] DIVANOVIC S,KOVACEVIC V,RADONJIC M,et al.Crosspoint queued switch performance analysis under multicast traffic[C]//Telecommunications Forum(TELFOR),2012 20th.IEEE,2012:226-229.

[4] RADONJIC M,RADUSINOVIC I.CQ switch performance analysis from the point of buffer size and scheduling algorithms[C]//Telecommunications Froum(TELEFOR),2012 20th.IEEE,2012:210-217.

[5] 张霖,刘建明,李宏周.基于M/M/m队列的通信网络排队模型化研究[J].科学技术工程,2013(5).

[6] KANIZO Y,HAY D,KESLASSY I.The cross-piont-queued switch[C]//INFOCOM 2009,IEEE.IEEE,2009:729-737.

继续阅读>>