中文 英语
18lickc新利
的意见

我的SoC设计什么时候需要一个NoC?

使用NoC可以大大简化SoC的开发,但这在很大程度上取决于谁在开发NoC。

受欢迎程度

迈克尔·弗兰克和弗兰克·席尔迈斯特著

除了最简单的产品,几乎每个现代片上系统(SoC)设备都将利用片上网络(NoC)实现其片上通信。一些人质疑是否有必要使用NoC,或者更基本的方法是否足够。

SoC中有什么?

SoC是一种集成电路(IC),它包含计算机或其他电子系统的大部分或所有组件。SoC由称为知识产权(IP)块的多个功能单元组成。其中许多区块将来自第三方供应商;剩下的部分——那些提供“秘密武器”,使SoC与竞争产品区别开来的部分——将由内部开发。

这些IP块可以包括处理器核心,如微处理器单元(mpu)、图形处理单元(gpu)和神经处理单元(npu)。除了各种类型的内存IP,其他IP块可以执行通信、实用程序、外围设备和加速功能。

总线,交叉开关和noc

每个IP块都表示在系统内存空间的某处。术语“事务”是指从系统内存空间的地址中写入或读取数据字节的操作。为了让SoC发挥它的魔力,IP块必须使用事务通过某种形式的互连相互“交谈”。术语“启动器”和“目标”是指生成或响应事务的IP块。

20世纪90年代在soc上使用的主要互连机制是总线。高度简化的表示如图1所示。请注意,标记为“总线”的行将包括实现数据总线、地址总线和相关控制信号的多根电线。

图1:简单的总线互连结构。

在许多早期的SoC设计中,只有一个中央处理单元(CPU)形式的单个启动器IP块。当发起者在地址总线上放置一个地址时,所有的目标IP块都会看到它,其中一个会对自己说:“这是我。”当启动器随后发出读命令,或者当它将数据放在数据总线上并发出写命令时,相应的目标将作出响应。

一些早期的soc可能使用多个启动器。例如,CPU可能带有直接内存访问(DMA)功能,该功能可用于在内存和外设的不同区域之间快速传输大块数据。随着设计中启动器数量的增加,有必要实现某种形式的仲裁方案,允许它们协商总线的控制权。

在21世纪初,随着SoC设计变得越来越复杂——包含越来越多的IP块和使用多个启动器——使用基于交叉开关的互连架构变得越来越普遍(图2)。图中的每条线再次表示由数据、地址和控制信号组成的多线总线。

图2:简单的交叉开关互连结构。

在这种情况下,任何启动器都可以与任何目标通信。当事务从启动器传递到目标器并返回时,交换机对事务进行路由,并且多个事务可以在任何时候“运行中”。每个交换机都有缓冲事务的能力,因此如果许多事务同时到达,它可以决定哪个具有更高的优先级。

SoC设计在规模和复杂性上持续增长。大约20世纪90年代早期的soc可能只包含几十个IP块,整个设备可能只包含2万到5万个逻辑门和寄存器。今天,相比之下,一个SoC可以包含数百个IP块,每个IP块包含数十万,有时甚至数百万个逻辑门和寄存器。

在同一时期,数据总线的宽度从8位到16位,到32位到64位,甚至更高。事实上,目前数据传输的典型大小是64字节(512位)缓存线,这很快就会导致路由拥塞问题。尽管硅芯片工艺的发展已经导致晶体管以数量级缩小,但由于芯片上导线的宽度并没有以同样的速度减小,这些问题变得更加严重。

为了解决这些问题,今天的设计人员采用了片上网络的概念。图3展示了一个简单的NoC示例。在这种情况下,事务涉及传递的信息包。每个包包括反映目的地址的报头和包含数据、指令、请求类型等的正文。

图3:简单的片上网络互连架构。

多个信息包可以在任何特定时间“运行中”,而且,交换机有缓冲事务和优先处理事务的能力。由于每个启动器不需要能够与每个目标通信,这可以反映在体系结构中,从而进一步减少互连需求。

现成的还是“自己卷”?

从一个角度来看,使用NoC大大简化了SoC的设计,但这在很大程度上取决于谁在开发NoC。术语“套接字”指的是IP块和NoC之间的物理接口(例如,数据宽度)和通信协议。SoC行业已经定义并采用了几种套接字协议(OCP, APB, AHB, AXI, STBus, DTL等)。

除了不同的数据宽度外,同一设计中的IP块可能在不同的频率上进行计时。由于SoC设计可能涉及数百个IP块,其中许多来自其他第三方供应商,IP可能使用不同的套接字协议。为了适应这种多样性,可能需要转换启动器和目标套接字之间的事务。

支持多个SoC项目的内部NoC需要在多个维度上的可配置性和灵活性。因此,从头开始开发NoC可能与设计SoC的其余部分一样复杂和耗时。此外,开发人员现在有两件事需要验证和调试——NoC和其余的设计。

补救办法是使用现成的NoC解决方案,如FlexNoCArteris.在这种情况下,一个直观的界面允许设计人员识别构成架构的IP块以及每个块的套接字特征(宽度、协议、频率等)。开发人员还可以指定哪些启动器需要与哪些目标进行对话。在这一点上,它实际上是一个“按钮”操作来生成NoC。

片上系统到底有多复杂?

回到什么时候设计需要片上网络的问题。直观的答案可能是较小的设计可以豁免。但是,在最近与Semico Research的Rich Wawrzyniak的讨论中,他证实了我们在客户中已经看到的情况:即使在工业和物联网领域的小型设计中,用户也经常面临必须组装和协调的10到100个IP块。

如下面的图4所示,Semico定义了四类soc。其中三种——具有100-200个离散块和1+互连的基本soc,具有200-275个块和4+复杂互连的价值多核soc,以及具有>275个块和5+复杂互连的高级性能soc——是片上网络自动化的明确靶心目标。但即使是商品控制器,设计师也要面对10到100个需要交互的离散块。

对于较小的设计,工程师倾向于“自己做NoC”。但通常情况下,他们很快就意识到,他们应该调用Arteris来利用NoC自动化。

图4:Semico的片上系统的四个复杂度类别。

结论

在本专栏的开头,问题“我的SoC设计什么时候需要NoC?”他摆出这样的姿势。简单的答案是,当今日益复杂的SoC设计总是需要一个NoC来优化实现路由和性能目标。实现最先进的NoC最简单的方法是使用FlexNoCArteris

本文作者Frank Schirrmeister是Arteris IP解决方案和业务开发副总裁。



留下回复


(注:此名称将公开显示)

Baidu