概述
link
# NoC-Interconnect Application:
如今,尤其Logic IC的产业链规则普遍是外购模块IP+NRE的生产模式,这其中PHY/Interconnect类IP厂商的核心产品就是用来将CPU、GPU、AI/NPU、Interface等这些模块串接起来,演进到后来就是Network_on_Chip(片上网络)。因此我们解读很多SoC项目都是从其如何licensed了ARM/Imagination、Synopsys/Cadence/Arteris等等IP House的模块的视角;5%专精电路+95%外购IP/RTL,甚至还会外包design_services;那么最终的硬件层设计将会趋向于同质化,被寄予期望和赋予故事的软件栈比拼 —— 其实优化空间有限且面临生态妥协。那么实现SoC硬件差异化设计的途径之一,就是在于为各IP模块绘制-建立高性能片上I/O connectivity的方案,从而在系统级达到更优效能。
NoC算是目前在Interconnect高性能领域比较突出的设计方法学;如上图,NoC结构在这里可以理解为一个运行在PE与PE、PE与存储、PE与Tile和外围之间的微观通讯网络;其实NoC网络与宏观的OSI模型有些相似,借鉴了以太网的分层和路由思想(比如:支持报文交换、路由协议、任务均衡/调度、QoS等扩展功能等)。但相比之下,微观的NoC网络更加敏感于交换电路和cache的面积占用以及电源管理问题,这是设计难点。上图是一个简单逻辑示意,基本的NoC组成可以包括:IP核、路由控制模块及其Switch_Fabric、网络接口以及传输链路(channels);按物理节点划分也可以看到资源节点(计算/存储)、通信节点(Router/Switcher)、接口和通道。除此多外还有其它的研究方向和优化途径,比如有基于光纤信号/光互连的设计概念。
经典的SoC设计是需要充分计算总线拓扑和模块间最短绕行路径的(以及相应的带宽/电源/时钟域/底层Fabric信号完整性/功耗/面积等等考量),因此那些Star/Ring/Mesh网格拓扑的设计和仿真十分复杂。传统片上总线就是各子系统/模块之间的高速互连与协同工作的技术,NoC的用途同样如此,但它是相较于传统总线有更高通信维度的、没有苛刻带宽限制的互连系统。那么NoC作为全新的设计方法学就是旨在解决SoC单一总线通信瓶颈问题。
# Why NoC ?
主要缘于SoC设计的局限性:如今SoC芯片搭载的IP模块数量和设备不断增加,这就让片上微观网络的QoS、仲裁和data_flow优化要求的复杂性更高,传统总线和Crossbar设计都有局限。【比如:1、平均通信效率低:早期传统总线是共享通信资源(互连处理器/存储/外围控制器等模块最多20个,彼此是竞争/独占的机制,争夺优先级和带宽),对于复杂SoC系统,传统总线无法提供所需带宽、地址解码逻辑和时钟仲裁管理,同时当一个模块取得仲裁通信权时,其它模块等待总闲空闲的时钟是浪费的;2、单一时钟同步问题:总线结构要求全局同步,然而随着工艺特征尺寸越来越小,工作频率迅速上升,达到10GHz+以后,连线延时造成的影响将严重到无法设计全局时钟树的程度,而且由于时钟网络庞大,其功耗将占据芯片总功耗的大部分;】。再比如,支持同时多个主从设备数据传输的Crossbar虽然可以提供足够带宽,但其尺寸也随着所连接的模块数量和互连线数量而成倍增长,并且大型的Crossbar基本无法构建,是数字后端设计的极大挑战;所以这两种方案都不能很好的利用布线(布线是很昂贵的资源)。相比较下,理论上NoC可以极大减少裸片面积(尤其更少的布线),功耗可以控制更低,而且可以设计针对片上数据流及其QoS微调优化的扩展功能,甚至是数据保护/访问控制功能(可包装独立IP)。可以推测NoC会取代传统总线和Crossbar成为片上互连的标准。
此外还有面对更微缩的制程节点,当SoC系统包含很多IP模块,连接的金属线数量随之增加,并且数据在片上传输的距离也会增加;这是一个很难优化的物理瓶颈,比如5年前的SoC项目,NoC可能占裸片面积的10%,但在当下的高性能项目中,NoC所占面积比例更大,同时还要满足高时钟频率和高电压下运行,功耗也更大;不过好处是,NoC工况是可以释放带宽和能耗的,这是一个优化杠杆,那么架构师可以针对任务类型的性能要求、整机功耗和面积限制进行有限的平衡优化。
参考ARM总线到NoC的发展为例:早期ARM总线是NIC,没有固定拓扑结构,通过简单Crossbar互联,只有简单交换/调度,交织能力很有限,适用于简单场景;另一类是CCI,固定拓扑,也是Crossbar结构,支持一致性,适合少量处理器;再往后一类是CCN,环状结构,通过固定交叉点连成环,延迟大但频率有所提高,适合16个+的处理器;再后来一类是CMN,网状结构,也是固定交叉点,形成NxN网络,支持更多的CPUcore互联;最后是NoC,节点自身是个router角色,连线更少+频率更高,可以连接任意多的设备,无固定拓扑结构(NoC主要是路由和包交换,可以自由拓展)。
ARM著名的AXI、AHB、APB等互联协议就是典型的总线型片上互联。
因此NoC架构的优势就体现出来了:
一方面是扩展性,不受限于经典总线架构,理论上可以扩展任意数量的计算节点;同时若需要二次扩展SoC的IP模块,仅需将设计完成的模块通过NoC接口植入网络,无需重新设计网络架构甚至重新设计整个SoC,不会造成IP复用和向后兼容的麻烦,尤其对于那些任务和算法上解耦,但仍需要不断迭代和增改IP集成的异构芯片项目。
二则是通信效率,NoC将原有IPcore之间的数据传输转变为router之间的转发(配合routing_algorithm),IPcore因此节约了一部分计算资源;同时避免了总线架构的独占仲裁权问题,可以同时多对节点通信。
三则是功耗,NoC中采用全局异步-局部同步的时钟机制,功耗开销远低于SoC;其中局部模块运用同步时钟域,而全局上采用异步时钟,也降低了由于全局时钟同步带来的动态开销,同时NoC的时钟树设计复杂度也低于SoC。
以及还有一点,是信号可靠性,这是因为IC特征尺寸的缩小+电路规模的增大,互连金属线的宽度和间距也在减小,那么线间耦合电容也会相应增大,传统那种长距离的全局并行总线会引起较大的串扰噪声,从而Signal_integrity/信号准确性/信号延迟等问题大到不可想象,尤其传统结构的全局互连线上的延迟会大于1个clock_cycle,时钟的偏移很难管理。
BTW:Signal integirty是在silicon proven的时候就做的,倘若是做SoC的时候,都是外购hard IP凑的话还是需要调校模块之间的SI,模块内部的SI是不用调的;而Hard IP就几乎是个mask了;比如:两块电路,有个32位总线连接,每个连接的长短,过孔数都会影响整个总线的信号同步对吧?高频电路600Mhz以上的,连PCB都要做SI的,何况on die?SoC里包含mixed signal,那么自然要重做,每换一个工艺都可能重做。
虽然,NoC结构为了实现扩展性,也需要负担router/switcher逻辑之类的额外开销,而一旦片上互连模块数量增加时(如大于30个模块),NoC的优势就会体现,此时路由器逻辑和网络协议的开销就可以忽略不计,因此在互联模块数量较多时NoC可以实现更高的性能,同时面积却更小;在互连模块的数量较少时(低于20个),那么片上总线和Crossbar因为设计简单会更加适合。
# Why Arteris ?
当下,Arteris NoC是普及度较高的商用IP之一,被高通在2013年收购后独立上市;包括华为、QCom、INTC/Mobieye、Samsung以及众多Startups都有采用,半数收入都来自中国市场;优点是有很高的模块集成度、扩展功能、开发工具和库以及物美价廉。
从官网信息上看到,Arteris产品线可分为Ncore和FlexNoC两类:Ncore是缓存一致性互连IP,连接CPUs、加速器和内存子系统,是在2016年推出的针对异构计算芯片的IP;FlexNoC则用于连接外围模块,包括D2D或C2C的并行接口以及一些扩展功能(如针对车规的安全扩展),财报显示FlexNoC的芯片出货量超过15亿片。
Mobileye自创业之初就选定了要使用NoC,早在2010年,Mobileye就选定了Arteris的NoC IP,直到现在,Mobileye的每一代产品都使用了Arteris的NoCIP,主要用来减少Die的面积(节约5%-15%面积),降低成本,Mobileye不仅使用了Arteris的NoC IP还使用Netspeed的NoCIP(Netspeed在2019年被Intel收购),不过是通过MIPS使用的,EyeQ5使用了8核MIPS的I6500 CPU,8核的连接使用NetSpeed的GeminiIP。
# Independent-developed NoC:
我主观对于Arteris NoC IP是有些偏见的,实际开发有掣肘;比如我们在项目上最常要改的:1. 面积大,冗余高;2. 没有为AI Pattern提供任何优化;3. Power Mgmt优化不理想,等等。此外还有个担忧的问题,就是Arteris如今仅仅算是唯一的半独立NoC IP提供商(高通2013年收购后独立上市了),其它的角色或者被收购后控制或者沉入历史了,其实等同于IC设计厂商都需要妥协于QCom/Intel/Facebook/Broadcom/Marvell等上游的生态,或是直接采用套件,或者基于工具库再作修改,包括华为在内。
这类Interconnect IP要做到PPA优异而且configuration灵活是比较攻关的;因此自研PHY是核心实力,除了华为在自研路上,国内Startup某厂的第三代也已经弃用Arteris,过去两年自研的私有NoC IP已接近完成了。当然往远讲还有一个比较难的计算pod池化互连问题,on board:)
NoC及其底层PHY的自研设计才能发挥出计算和存储单元的潜能。比如Intel AgilexM里面专门为存储设计了NoC;这样一来FPGA和各种内存之间的数据搬运就不用经过FPGA的路由资源了;HBM2e就通过UIB I/O连接NoC网络、DDR和Optain这些片外内存则通过IO96子系统连接NoC,这样就能实现7.52Tbps的总带宽【可以看看Agilex最新的框图,芯片布局做了大修,各种I/O接口和storage cell都移到了芯片的上下两端,把各种高速收发器放在了芯片的左右两侧,这样芯片中间就成了一个平整的结构,不用路由绕过各种模块单元了,一马平川,数据带宽高效多了】。
# Last_comments:
最后要讲的是,NoC是多核系统/异构系统的最佳互连方案,它的优点不仅是单纯的路由选择,还可以设计很多扩展功能,比如flow control和QoS(以及performance isolation)、比如利用多个virtual channel和route algorithms解决deadlock free、比如设计出容错机制、比如全局时钟域的同步,尤其存在异步时钟的单元时(还能动态调节每个模块的频率/电压)。不过实际设计中有一个显性壁垒是NoC带宽,带宽不足的话就意味着短脚累赘,上述功能实现下来,性能受局限,以及增加面积和功耗(更多的内存搬运),通常的补偿做法是需要L2共享私有双模,这仅仅是权宜之计。总之立意很多,想象力丰富,只要找对方向,还是有很多研究可以出成果的;当然NoC的底层实现很复杂,但想想经典的10几种topology不是更加复杂么。
参考资料:
semiengineering.com/noc-experiences-from-the-trenches/
www.sec.gov/Archives/edgar/data/1667011/000119312521289866/d52087ds1.htm
www.arteris.com/download-free-springer-tech-paper-about-arteris-flexnoc-new?hsCtaTracking=5040d15d-add4-4fb9-b9b6-62ec69f4fb27%7Cb8a9e6cb-3d9a-420d-a613-c4e14f05a873
mp.weixin.qq.com/s/wJ87UEq3zKHBYX08JUybsQ
最后
以上就是迷人铃铛为你收集整理的谈谈NoC Interconnect在复杂SoC设计中的应用 - 多核/异构系统的最佳互连方法的全部内容,希望文章能够帮你解决谈谈NoC Interconnect在复杂SoC设计中的应用 - 多核/异构系统的最佳互连方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复