0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么时候片上网络 (NoC) 不够用?

半导体产业纵横 来源:半导体产业纵横 2023-06-11 10:16 次阅读

随着SoC的容量和复杂性不断增加,交叉开关带来了路由拥塞、硅芯片面积过度使用和功耗等挑战。

在不久的过去,片上系统 (SoC) 设备与今天的产品相比相对简单。早期的 SoC 通常由 10 到 20 个IP块组成,每个块通常由大约 10,000 到 50,000 个逻辑门组成。大多数这些 IP,包括处理器和外围功能,都是从第三方供应商处获得许可的。开发人员通常只创建一个或两个 IP,其中包含使他们的 SoC 区别于其他竞争产品的“秘密武器”。

当需要有限数量的 IP 来相互通信的互连相对简单时,会使用经典的总线架构方法。负责极少数启动器 IP 的设计人员使用了这种方法,这些启动器 IP 将数据事务请求与响应这些请求的多个目标 IP 相结合。 随着 IP 数量和规模的增加以及它们承担起发起者的角色,采用交叉开关形式的更复杂的互连架构变得很有必要。

交叉开关是有利的,因为它允许任何发起者 IP 与任何目标 IP 对话。然而,随着 SoC 的容量和复杂性不断增加,交叉开关带来了路由拥塞、硅芯片面积过度使用和功耗等挑战。

输入NoC

今天的 SoC 可以包含数百个 IP 块,每个块都比前几代具有更多的逻辑门。通常,第三方供应商提供大部分 IP。除了数据总线宽度、控制总线功能和工作频率的变化之外,每个 IP 还可以采用多种接口协议中的一种——OCP、APB、AHB、AXI、STBus 和 DTL——这些协议已被 SoC 设计人员定义和采用. 应对当今 SoC 中 IP 数量不断增加的挑战的解决方案是采用片上网络 (NoC)。

每个 IP 都配备了与 NoC 接口的套接字功能。在发起者触发写访问的情况下,套接字序列化和打包由该 IP 生成的数据,并将其传输到其预期目标。反过来,与目标关联的套接字将从数据包中提取要写入的数据,并将其转换为目标协议。可以同时有多个数据包。

什么是NoC?

NoC 可以通过多种拓扑结构实现,包括不规则树、规则环和网状或圆环结构。高维架构也可用于某些设计,包括三维立方体和四维和五维超立方体。

在大多数情况下,单个 NoC 是不够的,设计人员经常将其互连分解为数十个 NoC 的组合。虽然非高速缓存一致的 NoC 可以满足大多数外设的要求,但处理器和加速器等 IP 通常受益于高速缓存一致的 NoC 的功能。此外,SoC 的某些部分,例如人工智能/机器学习 (AI/ML) 处理节点阵列,可能会受益于网状 NoC 架构。

因此,SoC 可以轻松地结合多个 NoC 拓扑以实现最佳结果。 除了用于将 IP 连接到 NoC 的套接字之外,网络还将包括必要的交换机和缓冲区。此外,随着用于实现 SoC 的工艺节点不断缩小,走线的电阻增加,导致信号在通过器件时出现电阻-电容延迟。

因此,信号无法再在单个时钟周期内遍历设备的全部或部分。解决这个问题需要在信号通路中插入流水线寄存器。然而,优化它们的数量和位置是一项艰巨的任务。

45ada072-074e-11ee-962d-dac502259ad0.png

图 1这是典型 NoC 配置和实施流程的概览。来源:Arteris IP

SoC 的开发是双重的——前端(上游)和后端(下游)设计(见图1)。前端设计侧重于逻辑和功能方面,例如使用哪些 IP、如何连接它们以及如何构建网络以确保预期的吞吐量和延迟。另一方面,后端设计处理芯片的物理方面,包括 IP 相对于彼此的放置位置以及时序是否可以满足。只有在这个阶段,设计人员才会知道放置流水线寄存器的数量和位置。

执行完整的物理布局是一个耗时的过程。任何无法在后端解决的问题都必须在前端返工,这将重新启动耗时的物理布局过程(参见图 2)。能够在流程的早期主动插入流水线寄存器对于实现任务的收敛和整个项目的周转时间非常有价值。

45d5022a-074e-11ee-962d-dac502259ad0.png

图 2长时序路径可以跨越整个 SoC。

这给前端设计团队带来了很大压力,他们不一定拥有做出明智决策所需的所有信息。插入太少的流水线寄存器会导致 SoC 无法满足物理布局中的时序要求。这导致通过插入太多流水线阶段来过度设计问题的趋势。

尽管可能会满足时序要求,但级数过多会增加延迟和功耗。 所有这一切的结果是,仅拥有套接字、开关、缓冲区和流水线寄存器形式的原始 NoC。为了验证性能和实现时序,NoC 的实现工具有必要了解它们将服务的环境。

物理感知NoC

在“物理感知”NoC IP 中,前端设计人员可以使用来自物理布局团队的早期 IP 布局信息来预测实现能力并解决任何潜在的时序问题。作为其中的一部分,NoC 工具可以自动定义 RTL 中流水线寄存器的理想数量和位置,并生成相关的实现约束。

当今的 NoC 技术远远超出了许多设计人员的预期。例如,NoC 生成器利用特定于工艺技术节点的几何和延迟信息。此信息使我们能够进一步完善时序估计并确定流水线寄存器要求和位置。 通过以这种方式改进前端设计并向后端工具提供更详细的信息,可以显著改进整个过程,尤其是第一个物理实现。

这可以显著减少后端到前端的迭代次数,从而降低风险、提高生产率、降低成本并加快上市时间和资金周转时间。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19091

    浏览量

    228776
  • 寄存器
    +关注

    关注

    31

    文章

    5290

    浏览量

    119789
  • 片上网络
    +关注

    关注

    0

    文章

    33

    浏览量

    11788
  • OCP
    OCP
    +关注

    关注

    0

    文章

    76

    浏览量

    16363
  • 硅芯片
    +关注

    关注

    0

    文章

    90

    浏览量

    16935

原文标题:​SoC设计:什么时候片上网络 (NoC) 不够用?

文章出处:【微信号:ICViews,微信公众号:半导体产业纵横】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    esp32c2同时开启wifi蓝牙内存ram会有点不够用,如何能够多节省点ram空间出来吗?

    如题 esp32c2 同时开启wifi蓝牙 内存ram会有点不够用,有大佬知道如何能够多节省点ram空间出来吗
    发表于 06-05 06:48

    stm32f103rbt6加上exfuns_init()函数就空间不够用了,有什么好的建议?

    主芯片用的stm32f103rbt6 加上exfuns_init()函数就空间不够用了,有什么好的建议? 板子已实现u盘功能。我想通过串口使用mf_scan_files(\"0:\")之类的命令。但主函数中加入初始化语句就已经容量不够了。
    发表于 05-17 07:23

    请问stm8s003f3装6050的dmp是不是内存会不够用

    stm8s003f3装6050的dmp是不是内存会不够用啊??
    发表于 05-08 07:35

    怎么解决MCU RAM空间不够用的问题?

    之前使用沁恒公司的一款BLE芯片CH573,随着代码量的增多,开发到后期时遇到了RAM空间不够用的问题,当时吓了我一跳,以为需要重新换更大RAM的芯片。
    的头像 发表于 05-01 09:57 1228次阅读
    怎么解决MCU RAM空间<b class='flag-5'>不够用</b>的问题?

    如果有六个独立的PWM通道都需要测量ADC,是不是单片的STM32H7不够用

    大家好, STM32H7 系列中 由三个ADC, 每个ADC的转换可以由 PWM Timer 触发转换。我的问题是,如果有六个独立的PWM 通道都需要 测量ADC,是不是单片的 STM32H7 不够用 (我的理解是,单个ADC只能设置一个 PWM timer 触发)? 只能用量
    发表于 04-18 07:49

    FANUC外部I/O点数不够用了怎么办?可以扩展I/O点数吗?

    FANUC外部I/O点数不够用了怎么办?可以扩展I/O点数吗? 扩展FANUC的外部I/O点数是一种常见的需求,这可以通过一些方法来实现。 在FANUC控制系统中,I/O模块被用于将外部设备与控制器
    的头像 发表于 02-18 15:21 1615次阅读

    单片机RAM不够用怎么解决?

    来自一位用户的咨询,麻烦帮忙解答。越详细越好,有图有真相。如有相关的视频、文档也可以辅助说明,谢谢。 单片机RAM不够用怎么办? 单片机都有RAM,如果我们一下子定义了一大堆的变量,使得变量占的空间大于RAM,这样单片机还能运行吗?电脑出现这种问题是怎么解决的
    发表于 02-02 07:35

    内存不够用的处理方法

    内存不够用的处理方法 内存不够用是许多计算机用户普遍面临的问题。当我们的计算机内存不足时,会导致系统运行缓慢,应用程序无法正常运行,甚至直接导致计算机崩溃。然而,幸运的是,我们有很多
    的头像 发表于 12-28 11:15 964次阅读

    AD9280三态引脚是否只是控制数据输出端的,和转换过程没有关系?

    AD9280三态引脚是否只是控制数据输出端的,和转换过程没有关系? 现在问题是FPGA引脚不够用了,能否将两AD9280数据D0-D7接在一起,时钟是共用的,两AD同步输出,在数据开始输出后用三态引脚控制取数?
    发表于 12-14 06:49

    局域网IP地址不够用怎么解决

    如果是在一个小型的局域网里可能完全不必要考虑IP地址不够的情况,但是在超过“255台”电脑的大型局域网里,就必须要考虑电脑IP地址不够用该如何解决了。
    的头像 发表于 12-05 10:13 930次阅读
    局域网IP地址<b class='flag-5'>不够用</b>怎么解决

    请问BF592用于做音频处理RAM不够用可以外挂SDRAM或者SRAM吗?

    1:请问下BF592 用于做音频处理RAM不够用可以外挂SDRAM或者SRAM吗?如果可以有没有相关的原理图和软件下载? 2:592是定点DSP,那对音频采样数据存储时要定义成float类型好呢
    发表于 11-30 07:20

    分享一种单片机IO口测量外部电阻的方法

    在以前的有些单片机应用中,有的时候会遇到 AD 端口资源不够用的情况,但又需要测量电阻的大小。
    的头像 发表于 11-24 16:42 2126次阅读
    分享一种单片机IO口测量外部电阻的方法

    linux系统内存不够怎么办

    在嵌入式系统中,内存是比较紧缺的资源,特别是在消费类产品中, 为了节省成本,一般都会将硬件资源应用到极致。在开发过程中,就经常会遇到,运行内存(RAM)就还差一点,但就是不够用的情况。
    发表于 11-10 09:39 1455次阅读
    linux系统内存<b class='flag-5'>不够</b>怎么办

    请问51的P0口什么时候要上拉电阻什么时候不需要?

    求教大神,51的P0口什么时候要上拉电阻什么时候不需要呢?
    发表于 11-09 08:02

    stc51单片机程序存储区不够用,可否在程序存储区写一个bootloader,用户程序放入自身的EEPROM?

    stc51单片机程序存储区不够用,可否在程序存储区写一个bootloader,用户程序放入自身的EEPROM?如何实现?
    发表于 11-09 07:09