一、什么是NoC

NOC(Network on Chip)是一种用于片上系统(SoC, System on Chip)中的通信架构,它在芯片内为处理器、存储器、I/O 设备和其他硬件模块之间提供数据通信。NOC 的目的是提高片内通信的效率,尤其是在多核处理器架构和大规模集成电路中。

在传统的片上系统中,不同的硬件模块通常通过共享总线进行通信。然而,随着芯片上核心数量和模块的增加,传统总线架构面临带宽、延迟和功耗问题。NOC 通过引入网络化通信方式,使用多个路由器和互连,来减少这些瓶颈。

NOC 的主要特点和功能包括:

  1. 并行通信:多个模块可以同时通过网络通信,从而提高了带宽利用率。

  2. 可扩展性:相比传统总线架构,NOC 更易于扩展,适合高性能和大规模的多核系统。

  3. 降低功耗:通过优化数据路由和通信,NOC 可以减少片内通信的功耗。

  4. 灵活性:不同的模块可以通过配置进行优化通信,以满足不同应用的需求。

NOC 在现代智能手机、平板、嵌入式系统等设备的 SoC 中广泛使用,比如高通、联发科等公司的芯片中都采用了这种架构,用于处理 CPU、GPU、DSP、内存控制器等之间的高速通信。

NoC(network on chip),片上网络

想要了解NoC,首先需要知道什么是SoC

SoC(System on Chip)片上系统,具有集成度高、功耗低、成本低、体积小等优点,已经成为超大规模集成电路系统设计的主流方向。

SoC整体架构图如下:

目前,SoC通讯架构的设计相对比较成熟。大部分芯片公司芯片制造都采用SoC架构。然而,随着商业应用开始不断追求指令运行并存性和预测性,芯片中集成的核数目将不断增多,基于总线架构的SoC将逐渐难以不断增长的计算需求。

二、NoC的优势

1、可扩展性和设计成本。SoC系统设计是从系统需求分析开始,确定硬件系统中的模块。为了使系统能够正确工作,SoC中各物理模块在芯片上的位置是相对固定的。一旦在物理设计完毕后,要进行修改,实际上就有可能是一次重新设计的过程。另一方面,基于总线架构的SoC,由于总线架构固有的仲裁通信机制,即同一时刻只能有一对处理器核心进行通信,限制了可以在其上扩展的处理器核心的数量。

2、平均通信效率。SoC中采用基于独占机制的总线架构,其各个功能模块只有在获得总线控制权后才能和系统中其他模块进行通信。从整体来看,一个模块取得总线仲裁权进行通信时,系统中的其他模块必须等待,直到总线空闲。

片上网络具有非常丰富的信道资源,为系统提供了一个网络化的通信平台。网络中的多个节点可以同时利用网络中的不同物理链路进行信息交换,支持多个IP 核并发地进行数据通信。随着网络规模的增大,网络上的信道资源也相应增多。因此,NoC 技术相对于Bus 互连技术具有较高的带宽,以及更高的通信效率。当并发进行数据通信时网络会产生竞争,即会存在请求同一条物理链路的节点对。NoC 的路由节点通过分时复用物理链路来解决竞争,与Bus 结构相比,NoC 能够降低竞争发生的概率。

3、单一时钟同步问题。总线结构采用全局同步时钟,随着芯片集成度的提高,芯片的工作频率也在不断提高,在芯片内会形成很庞大的时钟树,因此很难实现片上各个模块的全局同步时钟。采用时钟树(Clock Tree)优化的方法可以改善由时钟翻转引起的时钟偏差和时钟抖动,但同步时钟网络所产生的动态功耗甚至可达总功耗的40%以上。为了提高系统的时钟频率,只能对全局互连线采用分布式流水线结构,或者采用全局异步局部同步(Global Asynchronous Local Synchronous,GALS)的时钟策略。

4、功耗。随着SoC 规模的不断增大,总线上每次信息交互都需要驱动全局互连线,因此总线结构所消耗的功耗将显著增加,并且随着集成电路工艺的不断发展,想要保证全局时钟同步也将变得难以实现。而在NoC 中,信息交互消耗的功耗与进行通讯的路由节点之间的距离密切相关,距离较近的两个节点进行通讯时消耗的功耗就比较低。

三、什么是路由

NoC的主题思想是将宏观网络的通讯措施应用于芯片上,每个核当做一个独立的单元,IP核经过网络接口与特定的路由器相连。由此,将IP核之间的通信转换为路由器与路由器的通信。通常情况下的NoC架构如下图所示:

R为路由节点,IP为计算节点。

那么,什么是路由呢?

路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。

让我们试着通过一个类比来理解路由。想象一个场景,你下班后正准备从公司开车回家,此时路上塞满了车辆,你将在手机地图上查找道路和交通状况。根据路况,你将选择最通畅的那条路回家。

类似地,在路由中,有关数据包移动的决策是根据网络的状态做出的,路由器负责做出这些逻辑数据决策。

设置路由器的主要目的是找到数据包从源到目的地的最有效路径. 使用非常复杂的算法,路由器决定当前数据包必须通过哪个路由器或设备发送。重复此过程,直到数据包最终到达目的地。

路由可以分为两类:静态路由和动态路由。在静态路由中,所有路由都是在一个路由器中手动设置的。因此,如果网络有任何变化,路由也不会有任何变化,除非有人手动更正它。

在动态路由中,路由是由软件根据网络的当前状态来设置的。

网络变化,如链路故障、流量变化等,将在每一个离散时间步更新。根据这些信息,将在每个时间步长确定新路线。动态路由优于静态路由,因为路由器会根据网络中的变化进行实时更新。

举个例子,将上图的NoC架构图中的路由节点编号,如图所示:

若00要将数据发送到21,需经过10、20,后到21

四、NoC的种类

NoC的属性:

1、节点度:一个节点与相邻节点连接链路的数目。

2、网络直径:网络中任意两个节点之间的最短路径的长度的最大值,与网络的通信延迟成线性正比关系。

3、平均最短距离:网络中任意两IP节点之间的最小距离的和与该和所包含的路径数之比。

4、网络规模:网络中节点的数目。

5、可扩展性:网络模块的可扩展能力,扩展必须伴随着所期望的性能按比例地提高。

NoC常见的拓扑结构

NoC常见的拓扑结构包括规则拓扑和不规则拓扑两种。规则拓扑主要包括2D Mesh、2D Torus、3D Mesh、Octagon、Cluster Mesh、Spidergon、超立方、蜂窝式、树形和蝶形等拓扑结构。不规则拓扑包括专用网络、分层网络、网络总线混合拓扑以及由规则拓扑组合而成的拓扑结构。

2D Mesh

2D Mesh结构为二维网格架构,路由器节点按二维网格的方式排列,每个节点上再连接网络适配器和IP核。下图所示为一个4×4的2D Mesh结构。

在 N×N 的2D Mesh中,每个节点与相邻的节点连接(边界节点除外)。该结构具有结构简单,易于实现,可扩展性好等优点,较为广泛使用。

2D Torus

将2D Mesh结构的每行首尾节点连接起来,每列的首位节点也连接起来,便是2D Torus结构,该结构每个节点在几何上都是等价的,缩短了节点间的平均距离,减小了网络直径,同时该结构可能因为过长的环形链路而产生额外的延迟。

3D Mesh

3D Mesh为三维的网格结构,将多个2D Mesh叠加并对应节点连接起来,这样做进一步降低了网络直径和平均距离,但物理实现难度比较大。

Octagon/Spidergon结构

Octagon为八边形结构,共包含8个IP核,每个节点与三个节点相连,分别是序号相邻的节点和最远的节点。该结构也可以扩展为8个以上节点,变为Spidergon结构。

Cluster Mesh结构

Cluster Mesh 结构改变了传统的一个IP核连接一个路由器,将4个IP核连接1个路由器。这样做减少了路由器数量,简化了拓扑结构,但更容易造成数据拥塞。

树状结构

该结构类似于数据结构中的树结构,IP为叶子节点,路由器节点作为父节点,在父节点之上可以在增加父节点,层层相扣。降低了设计难度,也降低了物理设计的复杂度。

SPIN结构是一种树状结构,具有16个叶子节点以及8个路由器节点。每个节点拥有4个父节点,通过增加路由节点冗余度的方式,增加多路径选择性,提高系统性能。但是该结构的路由节点复杂,芯片实现难度大

碟状结构

该结构有些类似于FFT中的结构,是一种对数结构。一个n维的蝶形拓扑结构由2n个IP核和n×(2n-1)个路由器的节点组成,路由器分为n层,每层有N/2个路由器。

各种结构之间的比较

NoC简介的更多相关文章

  1. Linux集群监控工具简介:Ganglia和Nagios

    11年时候,曾经对 Ganglia 和 Nagios有一定接触,这是两个用于监视数据中心的工具.这两个工具被大量用于高性能计算(HPC)环境中,但是它们对于其他环境也具有很大的吸引力(例如云.呈现集群 ...

  2. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  3. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  4. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  5. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  6. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  7. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  8. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  9. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  10. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. UML各类基础知识总结

    1.UML关系 泛化(也就是我们传统意义上的继承关系) 子类继承父类,关系用extend关键字标识: 关联 可以说是一种属于关系,图中即说的是PhoneNumber类属于Master类,同时,除了一对 ...

  2. 一步一步分析HTTPS加密机制

    一步一步分析HTTPS加密机制 HTTPS(SSL/TLS)的加密机制虽然是大家都应了解的基本知识, 但是更多的时候我们只是在背诵一些概念, 比如: "对称加密", "非 ...

  3. 百度翻译network里没有sug(文章发布时间2022年10月)

    百度翻译已经更新,现在的百度翻译分为两个阶段翻译,第一个阶段识别你的翻译字符是什么类型语言 第二阶段生成随机sign加携带token以post表单方式上传数据,返回json数据 尚硅谷在B站发布的的爬 ...

  4. 为团队配置Linux环境,简单高效的项目共享方案

    前言 最近好久没写博客了,事情太多了,我还搞了个新的好玩的项目,等后续做得差不多了来写篇文章介绍一下. 在我们目前的AI项目中,团队需要共同使用一台GPU服务器来做模型训练和数据处理.为了让每个团队成 ...

  5. 【FTP】小米手机FTP传输

    设置方法 打开[文件管理],右上角按钮选择[远程管理] 点击设置按钮 默认保持唤醒状态 设置FTP账户的用户名密码 Windows访问: 然后开启服务即可: 手机和电脑连接同一个网络内访问 每次接入网 ...

  6. 【Project】原生JavaWeb工程 01 概述,搭建

    一.环境准备: 操作系统:Windows7 或者 Windows10 IDE集成环境:IDEA 2018版本或者更高 数据库:MySQL 5版本或者更高 服务器:Tomcat 8版本或者更高 二.数据 ...

  7. xshell打开vim后颜色异常——xshell连接ubuntu打开vim后界面覆盖一层绿色

    参考原文: https://blog.csdn.net/Blank_Shen/article/details/106527312 =================================== ...

  8. AC自动机 基础篇

    AC 自动机1 前置知识:\(KMP\),字典树. \(AC\) 自动机,不是用来自动 \(AC\) 题目的,而是用来处理字符串问题的(虽然确实可以帮助你 \(AC\)). 这里总结了 \(AC\) ...

  9. 如何判断数据库和对象存储是否被 JuiceFS 使用?

    随着使用 JuiceFS 的时间越来越长,一些用户已经用多种数据库和对象存储创建了很多的 JuiceFS 文件系统.有些是纯云端的,有些是纯本地的,有些则是本地与云端结合的.它们当中有一些是存储了文件 ...

  10. MPTCP(二):MPTCP版本说明

    MPTCP版本说明 简介 参考链接 https://github.com/multipath-tcp/mptcp_net-next/wiki MPTCP的两个版本 MPTCPv0: 在5.6之前的li ...