
芯片互连技术(二)—片上网络NoC总线
总线是芯片架构中非常核心的概念。例如,一个SoC芯片分为很多模块或子系统,如处理器、内存控制器、GPU、ISP等,通过总线把它们连接在一起,此即芯片架构。
芯片内的总线互连常见的有:处理器核之间的互连、处理器核与内存的互连、处理器与缓存的互连、缓存与缓存之间的互连、处理器和I/O之间的互连、处理器与各种专有硬件加速模块之间的互连、DMA和内存的互连等。狭义的总线互连仅仅指通过简单总线接口连接多个组件,简单总线是一种临界资源,组件需要抢占到总线才能发起访问;而广义的总线互连泛指用于组件之间的互连结构。
芯片间的总线互连有:两个CPU之间的互连、CPU和异构GPU等加速器之间的互连、CPU和NIC等I/O设备之间的互连、加速器之间的互连、加速器和I/O设备之间的互连等。
下面介绍几种芯片互联结构。
片上网络NoC总线
随着芯片的集成度越来越高,芯片内连接的处理器核及其他硬件模块的数量越来越多,模块间的通信带宽也越来越大,芯片内总线上的访问变得非常拥挤。NoC是一种扩展性很好的互连结构,相比于传统的交叉开关,NoC可以连接更多的组件。NoC从计算机网络中获取灵感,在芯片上实现类似网络的架构,每个模块都连接到片上路由器,而组件传输的数据则是一个一个的数据包,这些数据包通过路由器送达到目标模块。
如图所示,IP Core为NoC互连的组件,NI为接入NoC的接口,R为NoC中的路由器,物理链接(Physical link)为路由器之间的连接总线。
典型的2D mesh的4X4 NOC网络拓扑结构图
NoC的优势主要体现在如下两个方面。
·高可扩展性。NoC类似计算机网络的结构,当互连的组件增加时,NoC的互连复杂度并不会增加很多。而传统的简单总线和交叉开关随着互连模块的增多,其互连复杂度呈指数级增加。
·分层设计。NoC的物理层、传输层和接口是分开的,用户可以在传输层方便地自定义传输规则,而无须修改模块接口,传输层的更改对物理层互连的影响也不大,因此不会对NoC的时钟频率造成显著影响。
AMBA 5 CHI协议可提供网络和数据中心等基础设施应用所需的性能和规模。AMBA 5 CHI协议可在单个片上系统扩展32个或更多处理器。
AMBA 5 CHI协议随着组件数量和流量增加依然能够保持性能。CHI分层架构如图所示,CHI提供了高频率、无阻塞的数据传输,并且是一种分层架构,非常适用于打包的NoC。AMBA 5 CHI协议提供了流控制和服务质量(QoS)机制,可以控制分配由许多处理器共享的系统资源,不需要详细了解每个组件及其交互方式。
CHI分层架构
CHI拓扑如下图所示,由于CHI规范将协议层和传输层分开,因此它允许不同的实现方式,以在性能、功率和面积之间实现最佳折中。设计人员可以从任何范围的Noc拓扑中进行选择,从交叉开关到高性能的大规模网状网络。CHI规范中包含了某些与拓扑相关的优化,以使电路实现更有效。目前常用的SoC互连有三种方式:
交叉开关(crossbar),这种结构相对简单,互连部分延时小,多用于数量不多的组件互连,缺点是如果互连组件太多,这种结构的内部走线会非常多,不利于物理实现,比较常见的crossbar类型IP如ARM公司的NIC-400。
环形网络(ring),折中考虑了互连组件数量和延时,有利于中等规模的SoC设计,比较常见的ring类型IP如ARM公司的CCN。
二维网格(mesh),这种拓扑结构可以提供更大的带宽,而且是可以模块化,通过增加网格的行或列来增加更多的节点,ARM的CMN-600就是基于mesh的互连IP。
CHI拓扑
在构建CHI系统时,将有不同类型的节点(如处理器、加速器、I/O和内存)连接到NoC络。CHI系统中的节点如下图所示。在较高级别上,CHI系统存在如下三种基本节点。
·RN(Request Node,请求节点):生成协议事务的节点,包括对互连的读取和写入,这些节点可以是完全一致的处理器或I/O一致的设备。
·HN(Home Node,主节点):位于互连中的节点,用于从RN接收协议事务。HN是系统的一致性点,可以包括系统级缓存和/或探听过滤器,以减少冗余探听。
·SN(Slave Node,响应节点):接收并完成来自HN请求的节点。SN可以在外围或主存储器中使用。
CHI系统中的节点
NoC只是一种总线架构,而不是一种总线标准,各公司的NoC总线都有自己独特的实现。很多公司的NoC总线都只用于自己的芯片产品,把NoC总线作为IP对外出售的主要供应商是Arteris,国内外很多公司都采用Arteris的FlexNoC系列IP。
Arteris FlexNoC如图所示。Arteris FlexNoC系列NoC具有很好的扩展性,支持10~100个节点的连接,并且广泛支持和AMBA系列总线的互连及互操作性。此外,FlexNoC总线支持硬件的缓存一致性,能够在不同组件的缓存之间高效地共享数据。FlexNoC支持灵活的总线拓扑,如Tree、Ring和Mesh等。
Arteris FlexNoC系列NoC互连IP
文章转载自公众号:智车Robot
