每个多核芯片都有两个主要的片上组件:处理元件(核心)和其他非处理元件,如通信和内存架构(非核心)[27]。尽管高晶体管密度使计算机架构师能够在一个芯片中集成数十到数百个核心,但主要挑战是实现如此大量的片上组件之间的高效通信。片上通信架构负责所有内存事务和I/O 流量,并为处理器间数据共享提供可靠的介质。片上通信的性能在多核架构的整体性能中起着关键作用。性能不佳的片上通信介质很容易抵消多个高性能片上处理器的优势。因此,提供可扩展的高性能片上通信是多核架构设计人员的关键研究领域 [17]。互连设计人员面临的主要挑战是:
- 数十个内核的可扩展通信:可以公平地说,多核芯片中处理单元的性能可能受到通信限制 [17]。由于处理能力的不断提高,数据通信速率和数据消耗速率之间很可能存在很大差距。由于片上组件数量众多,位于芯片远端的组件之间不可能存在单周期通信延迟。此外,由于片上组件数量众多,预计片上互连将支持多个并行通信流。
- 有限的功率预算:1974 年,Dennard 预测,随着我们转向更小的节点尺寸,晶体管的功率密度将保持不变。这被称为 Dennard 缩放定律 [37]。然而,在过去十年左右的时间里,研究人员发现晶体管的功率不能以与面积相同的速率降低。因此,我们面临的情况是,我们拥有大量片上晶体管,但由于功率和热限制,没有足够的功率来同时切换所有这些晶体管。因此,提高所有片上组件的功率效率已成为继续实现摩尔定律的主要前提。片上通信架构可消耗现代多核芯片中大约 19% 的总芯片功率 [35]。因此,设计一种节能的片上互连,同时又能满足当前和未来应用的延迟和带宽要求是一项具有挑战性的任务。
- 异构应用程序:现代多核芯片有望执行大量不同的应用程序。每个应用程序都可以以独特的方式与计算架构交互;因此,不同应用程序的通信延迟和带宽要求可能有所不同 [32]。例如,具有较大内存占用的应用程序预计会定期生成缓存未命中,因此可以归类为通信绑定应用程序。此类应用程序的性能与互连效率高度相关。另一方面,具有较小内存占用的应用程序预计受处理器限制,并且与片上互连属性无关。因此,片上互连通常是为最坏情况(在这种情况下是内存绑定应用程序)设计的,因此对于处理器绑定应用程序来说效率低下。当同时执行内存绑定和处理器绑定的应用程序时,情况会更加严重。
- 选择互连性能指标:先前研究的主要缺点是将片上互连性能分类为与应用无关的指标,例如事务延迟和内存带宽,而不是应用级性能指标,例如执行时间和吞吐量 [31,70]。因此,一个主要的挑战是提取正确的指标来评估给定一组应用程序的不同可能的互连架构设计点。
- 互连可靠性:随着节点尺寸的减小,人们对数字电路可靠性的担忧日益增加。任何意外的工作条件变化,例如电源电压波动、温度峰值或随机的阿尔法粒子碰撞,都可能导致电路输出不稳定。如果控制数据损坏,片上互连中的软错误可能会导致错误的应用程序输出或系统死锁。多核系统正在进入可靠性至关重要的应用,例如自动驾驶汽车和医疗设备。因此,设计人员需要在给定的功率和面积约束下,在片上互连中集成不同级别的可靠性功能。
- 内存层次结构和片上互连的协同设计:在现代多核架构中,片上内存层次结构与片上互连架构紧密结合。事实上,对于共享内存架构,片上通信是决定内存层次结构(缓存、动态随机存取存储器 (DRAM) 控制器等)性能的主要因素。因此,互连设计人员经常面临探索内存层次结构和片上互连的组合设计空间的挑战。
1 基于总线的 SoC 架构
传统上,片上系统(SoC) 设计使用非常简单的片上互连,例如临时点对点连接或总线。基于总线的架构可能是计算机行业中最古老的片上互连标准,并且仍在许多片上系统 (SoC) 应用中使用 [87]。协议简单且因此门成本低可能是基于总线的架构主导所有其他可用片上互连选项的主要原因。对于少量片上组件,由于协议设计简单,总线互连更易于集成,并且在功耗和硅成本方面都很高效。在基于总线的架构中,多个组件使用单个数据和控制总线进行交互,从而提供简单的主从连接。当多个主设备尝试与单个从设备通信时,需要进行仲裁,从而导致资源争用。因此,在大型基于 SoC 的设计中,基于总线的架构在性能方面的可扩展性值得怀疑 [61]。 [34, 41] 中提出的一些基于总线的 SoC 的经典设计技术使用最坏情况总线流量来设计最佳架构。Kumar 等人 [57] 对共享总线型芯片多处理器 (CMP) 架构的可扩展性和性能进行了详细研究。他们得出结论,基于总线的互连网络可以显著影响缓存一致性 CMP 的性能。
已经提出了几种对传统总线互连架构的改进。ARM Ltd.、AMBA架构 [1]、IBM CoreConnect 架构 [3] 和 Tensilica PIF 接口 [5] 是广泛使用的先进总线通信介质的几个例子。所有这些架构都提供了多种高级功能,如突发数据传输、多主仲裁、多个未完成事务、总线锁定以及同时异步和同步通信。然而,Rashid 等人 [91] 通过分析表明,即使是像 AMBA 这样的先进总线架构,在性能方面也不如现代基于片上网络 (NoC) 的通信架构。然而,同一项研究表明,由于现代 NoC 设计的面积和能源开销,设计人员仍然倾向于基于 AMBA 的片上互连。SoC 设计人员对各种商用总线架构的公平比较非常感兴趣;然而,片上互连的性能在很大程度上取决于每个应用程序的流量模式、总线微架构和系统参数 [67]。
基于总线的架构设计简单、可预测的访问延迟和低面积开销是主要卖点。然而,除了少数核心外,总线互连的性能会显著下降[83]。
2 交叉开关式片上互连
单共享总线架构在多个主从数据事务的情况下显然速度较慢。主要瓶颈是单个共享介质和由于多个主接口之间的仲裁而导致的延迟(图 15.1)。因此,设计可扩展片上互连的第一种方法是采用交叉开关拓扑。交叉开关是一种矩阵交换结构,可将所有输入与所有输出连接起来,从而实现多个通信连接(图 15.1)。这个想法借鉴了电信行业,这种架构已在电话应用中成功使用了四十年 [82]。
相同的多通信通道概念在SoC 设计行业中也已实现,即通过组合多条共享总线形成全输入全输出连接矩阵。该概念也称为分层总线或多层总线。STBus [53] 可能是最著名的商用总线架构,它本身就支持交叉开关架构。Yoo [104] 提供了一种基于 AMBA 的级联总线架构的设计方法。Yoo 等人尝试在单个基于交叉开关的 SoC 设计中集成 90 个 IP 块。同样,[72] 中的作者提供了一种使用 STBus 协议设计特定于应用程序的交叉开关架构的完整设计方法。他们声称与标准单总线架构相比,其性能有显著提升。最有趣的交叉开关实现是 IBM Cyclops64 架构的互连系统。每个 Cyclops64 交叉开关连接 80 个定制处理器和大约 160 个内存条。 Cyclops64 互连的单次事务延迟为 7 个周期,带宽可与最先进的 NoC 架构相媲美,可能是 SoC 领域最先进的实用交叉开关设计。
由于端口数量与延迟和线路成本之间存在非线性关系,研究人员一直在争论基于交叉开关的互连架构的可扩展性[107]。然而,[82] 的最新实验表明,采用 90 nm 技术实现 128 端口交叉开关是可行的。他们将其交叉开关设计与最先进的基于网格的 NoC 设计进行了对比,并得出结论,交叉开关设计在延迟、带宽和功耗方面与 NoC 架构相匹配。然而,由于线路布局复杂,设计复杂度过高。
<3>3 片上网络互连遵循摩尔定律,片上晶体管资源越来越丰富,我们的目标不再仅限于在单个芯片上安装数千个内核。据预测,这种千核多处理器片上系统(MPSoC) 的性能将取决于通信架构 [16]。传统的基于总线的架构无法扩展到几十个 IP 块以外,因此需要提供更具可扩展性和协议不变性的通信架构。
片上网络架构[29, 58] 是解决基于总线的架构可扩展性问题的解决方案。NoC 本身就支持高度集成的 SoC 设计的总体趋势,并提供了新的片上通信设计事实标准。NoC 的基本思想改编自成熟的计算机网络结构。特别是,计算机网络的分层服务架构已在 NoC 中得到很好的改编,可提供可扩展的解决方案。在 NoC 架构中,数据被转换成数据包,这些数据包根据预定义的路由技术穿越多个跳数(交换机或路由器)。使用 NoC 作为片上互连的主要优势包括:
- NoC 本身通过物理分布的路由器和链路的组合支持多条通信路径,这大大增加了可用的片上数据带宽。这使得不同的内核能够并行交换数据,而无需任何中央仲裁。这使得 NoC 成为支持具有数十和数百个内核的多核芯片日益增长的通信需求的理想候选互连。给定源和目标内核之间的多条通信路径使 NoC 具有固有的容错能力。如果给定路径上的路由器或链路出现永久性错误,则可以通过源和目标内核之间的备用路径重新路由数据。
- NoC 架构使用具有高度可预测电气特性的短电线。与总线互连相比,在路由器之间切换短线需要更小的驱动晶体管。这有助于提高互连的能量/位指标。此外,由于线路延迟更短,NoC 可以在比总线和交叉开关更高的频率下切换,而不会显着增加功率。深亚微米半导体制造引入了线路的完整性问题。使用较短的线路可以降低制造故障的概率,从而提高生产良率。短线的可预测电气特性也有助于降低设计验证成本。
- NoC 遵循模块化设计范式,允许重用现有的硬件知识产权 (IP) 块。对于大多数设计,只需实例化现有设计和验证的路由器 IP 的多个副本,即可轻松将 NoC 扩展到不同数量的内核和应用程序。这降低了芯片设计过程的整体复杂性。
- NoC 在计算和通信之间提供了明确的界限。片上组件(内存控制器、处理核心、硬件 IP 等)可以具有不同的通信协议(AXI、AHB 等),这些协议通过协议转换器转换为标准数据包格式。因此,片上组件之间的数据通信与不同组件使用的通信协议无关。这对于使用来自不同 IP 供应商的硬件组件设计异构 SoC 非常有用。
0 comments:
Post a Comment