片上网络NoC

本文大部分内容来源于王志英老师主编的《片上网络原理与设计》以及网络,部分内容是本人理解所得,若有不当之处请指教

一、概述

片上网络将报文交换的思想引入芯片内部通信机制中,尽管片上网络和片外网络具有一定相似性,但二者在延迟、功耗和面积等方面有本质区别。片上网络要与计算核一起竞争芯片宝贵的功耗和面积资源。为了在有限的功耗和面积开销下获得较高的性能,设计者更应关注片上网络的优化,包括底层逻辑实现的优化,网络层路由和流控的优化,以及面向高层编程模式的优化。

片上网络的结构

众核处理器中各节点通过某种互联拓扑构成的网络系统即为片上系统。
每个网络节点包含一个计算核和一个路由器,计算核也可以是加速器或者存储控制器等其他硬件;路由器包括输入单元、交叉开关、交叉开关分配器、虚通道分配器和路由计算单元。
在这里插入图片描述

输入单元

输入单元由输入缓存和对应的控制逻辑组成。
缓存单元被组织成多个队列,每个队列是一条虚通道。

计算单元

根据报文携带的目的节点信息,计算出输出端口和输出虚通道

虚通道分配器

完成路由计算后,报文头申请输出虚通道,虚通道分配器手机所有输入虚通道的请求,并将输出虚通道分配给提出请求的输入虚通道。
虚通道分配器和交叉开关分配器都有多个仲裁器组成。

交叉开关分配器

当输入虚通道获得输出虚通道的授权后,路由器会检查授权的输出虚通道是否由空闲的缓存单元;
如果有,报文会向交叉开关分配器提出交叉开关传输的请求。

交叉开关

交叉开关通常由多个多路选择器组成,这些堕落选择器的控制信号由交叉开关分配器生成。
一旦一个报文传输到交叉开关的输出端口,交叉开关就向上有路由器反馈一个信元消息,通知已经释放了一个缓存单元。

输出单元

输出单元使用多个寄存器记录下游虚通道状态

片上网络的设计空间

片上网络的设计空间包括拓扑结构、路由算法、流控机制和路由器结构的设计。

拓扑结构

拓扑结构决定了网络节点和链路的物理分布以及它们之间的连接关系,也决定了消息的传输跳数和每跳链路长度,因此拓扑结构对延迟和功耗影响很大;同时由于拓扑结构决定了节点之间的可用传输路径条数,因此还影响了网络流量的分布,以及网络带宽和传输性能。

路由算法

一旦确定了片上网络的拓扑结构,路由算法便负责为报文计算源节点到目的节点之间的传输路径。好的路由算法有更高的饱和吞吐率,可以降低报文传输延迟,实现全局负载均衡和网络容错,在一定程度上可以避免网络拥塞和死锁。

路由算法可以根据传输路径长度分为最短路由和非最短路由,也可以根据路径条数分为确定性路由算法和非确定性路由算法,非确定性路由算法又可以根据是否考虑网络状态分为非感知路由算法和自适应路由算法。

流控机制

流控为报文分配网络资源,包括链路带宽、路由器缓存和控制状态

片上网络的死锁和堵塞

死锁、活锁、饥饿锁、无锁在多线程、片上网络等领域概念基本一样,可参考这篇文章的描述。
多线程中死锁、活锁、饥饿锁、无锁问题

网络的拥塞问题

片上网络的报文户通过时分复用和空分复用等方式共享使用片上资源,当网络处于重负载情况是,有限的片上资源无法为大量的报文提供服务,从而导致拥塞现象。

此时需通过拥塞管理机制来优化网络性能。即根据网络复杂情况动态调整报文优先级与网络资源分配方式,将网络资源有限分配给一些特殊报文使用,避免或者延迟网络进入饱和状态,达到提高网络性能的目的。

死锁的定义和原因

死锁指在系统中的多个资源彼此等待对方释放资源而无法继续执行的状态。当网络中的路由依赖形成一个环时,互相阻塞而无法前进,就发生了路由死锁。在没有死锁回复机制的情况下,死锁会导致网络瘫痪。
无死锁要求网格资源之间没有循环依赖,这些资源包括缓存和链路。

死锁产生的条件:

  1. 互斥条件:所谓互斥就是节点在某一时间内独占资源。
  2. 请求与保持条件:一个节点因请求资源而阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:节点已获得资源,在末使用完之前,不能强行剥夺。
  4. 循环等待条件:若干节点之间形成一种头尾相接的循环等待资源关系。

解决死锁的方法

通过虚通道将请求分流

完全自适应算法允许报文使用源节点和目标节点间的所有传输路径,通过虚通道消除路由子函数内部的资源循环依赖,从而消除网络死锁。
通过虚通道解除死锁除了需要一个虚拟网络,还需要协议级的避免死锁方法1

限制报文传输的部分转向消除资源循环依赖

即设计路由函数打破CDG中所有环

知乎中的死锁描述博客

参考文献

  1. Jieming Yin, Zhifeng Lin, “Modular Routing Design for Chiplet-based Systems” ISCA.
  2. 片上网络之Channel Dependency Graph(一)
  3. 片上网络之Channel Dependency Graph(二)
  4. 片上网络之Channel Dependency Graph(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/413477.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ethernet/IP转Modbus TCP网关

产品功能 1 YC-EIP-TCP工业级EtherNet/IP 网关 2 Modbus TCP 转 EtherNet/IP 3支持ModBus主从站 4 即插即用 无需编程 轻松组态 ,即实现数据交互 5导轨安装 支持提供EDS文件 6 EtherNET/IP与ModBus互转数据透明传输可接入PLC组态 支持CodeSys/支持欧姆龙PLC 支持罗克韦尔(AB) 典…

RISC-V SoC + AI | 在全志 D1「哪吒」开发板上,跑个 ncnn 神经网络推理框架的 demo

引言 D1 是全志科技首款基于 RISC-V 指令集的 SoC,主核是来自阿里平头哥的 64 位的 玄铁 C906。「哪吒」开发板 是全志在线基于全志科技 D1 芯片定制的 AIoT 开发板,是目前还比较罕见的使用 RISC-V SoC 且可运行 GNU/Linux 操作系统的可量产开发板。 n…

代码随想录算法训练营第25天—回溯算法05 | *491.递增子序列 *46.全排列 47.全排列 II

*491.递增子序列 https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v 考点 回溯子集去重 我的思路 暴力法,不进行去重,仅在最后加入结果时判断当…

探索比特币现货 ETF 对加密货币价格的潜在影响

撰文:Sean,Techub News 文章来源Techub News,搜Tehub News下载查看更多Web3资讯。 自美国比特币现货交易所交易基金(ETF)上市以来,比特币现货 ETF 的相关信息无疑成为了影响比特币价格及加密货币市场走向…

提升 Node.js 服务端性能:Fastify 框架

微信搜索“好朋友乐平”关注公众号。 1. fastify Fastify 是一个高效且快速的 Node.js web 框架,专为提供最佳的性能而设计。它是相对较新的,但已经因其高性能和低开销而受到许多开发者的欢迎。Fastify 提供了一个简洁的开发体验,同时支持快…

【基于Ubuntu20.04的Autoware.universe安装过程】方案一:虚拟机 | 详细记录 | Vmware | 全过程图文 by.Akaxi

目录 一、Autoware.universe背景 二、虚拟机配置 三、Ubuntu20.04安装 四、GPU显卡安装 五、ROS2-Galactic安装 六、ROS2-dev-tools安装 七、rmw-implementation安装 八、pacmod安装 九、autoware-core安装 十、autoware universe dependencies安装 十一、安装pre-c…

光速入门spark(待续)

目录 Spark概述Spark 是什么Spark VS Hadoop (MapReduce)Spark or HadoopSpark四大特点速度快易于使用通用性强运行方式 Spark 框架模块(架构)Spark的运行模式Spark的架构角色 Spark环境搭建LocalStandaloneSpark程序运行层次结构 Spark on YARN部署模式…

有适合短视频剪辑软件的吗?分享4款热门软件!

在数字时代,短视频已成为人们获取信息、娱乐消遣的重要形式。随着短视频行业的蓬勃发展,市场上涌现出众多短视频剪辑软件,它们功能各异,各具特色。本文将为您详细介绍几款热门短视频剪辑软件,助您轻松掌握短视频剪辑技…

Linux拉取SVN服务器代码

1. window10系统上安装了Ubuntu,然后在Ubuntu上拉去SVN服务器的代码,我这是用VScode连接的ubuntu 终端Terminal,我这里相当于有三台电脑了,公司的服务器上windows的,svn代码就是在这台服务器里面,然后我又在…

idea集成git(实用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下载git Git - Downloads 一路傻瓜式安装即可(NEXT) 2.软件测试 在Windows桌面空白处,点击鼠标右键,弹出右键菜单 Git软件安装后,会在右键菜单中增加两个菜单 Git GUI He…

ClickHouse 指南(三)最佳实践 -- 跳数索引

Data Skipping Indexes Data Skipping Indexes 2 1、简介 影响ClickHouse查询性能的因素很多。在大多数情况下,关键因素是ClickHouse在计算查询WHERE子句条件时是否可以使用主键。因此,选择适用于最常见查询模式的主键对于有效的表设计至关重要。 然…

华为OD机试真题-靠谱的车-2023年OD统一考试(C卷)---Python3-开源

题目: 考察内容: 思维转化,进制转化,9进制转为10进制,在4的位置1,需要判断是否大于4 代码: """ 题目分析: 9进制转化为10进制23-25 39-50 399-500输入&#xff1a…

系统性能提升70%!华润万家某核心系统数据库升级实践

华润万家是华润集团旗下优秀零售连锁企业,业务覆盖中国内地及香港市场,面对万家众多业务需求和互相关联的业务环境,亟需加强各业务耦合性,以适应线上、线下、物流、财务等各个业务环境的快速发展。 随着信息技术的快速发展和数字化…

blender bvh显示关节名称

导入bvh,菜单选择布局,右边出现属性窗口, 在下图红色框依次点击选中,就可以查看bvh关节名称了。

ReentrantLock详解-可重入锁-默认非公平

ReentrantLock是Java中的一个可重入锁,也被称为“独占锁”。它基于AQS(AbstractQueuedSynchronizer)框架实现,是JDK中提供的一种线程并发访问的同步手段,与synchronized类似,但具有更多特性。 ReentrantLo…

【Linux】进程优先级和Linux内核进程调度队列的简要介绍

进程优先级 基本概念查看系统进程修改进程的优先级Linux2.6内核进程调度队列的简要介绍和进程优先级有关的概念进程切换 基本概念 为什么会存在进程优先级?   进程优先级用于确定在资源竞争的情况下,哪个进程将被操作系统调度为下一个运行的进程。进程…

【java】15:抽象类

当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。 //我们看看如何把Animal做成抽象类,并让子类Cat类实现。 abstract class Animal{ String name; int age; abstract p…

【C++精简版回顾】12.友元函数

1.友元函数 1.class class MM { public:MM(int age,string name):age(age),name(name){}friend void print(MM mm); private:int age;string name;void print() {cout << age << "岁的" << name << "喜欢你" << endl;} }; f…

k8s 进阶实战笔记 | NFS 动态存储类的部署与使用

文章目录 NFS 动态存储类的部署与使用演示环境说明NFS subdir external provisioner准备 NFS 服务器手动部署 NFS Subdir External Provisioner部署 StorageClass验证使用更多信息 NFS 动态存储类的部署与使用 演示环境说明 演示环境信息&#xff1a;单机K3s 1.28.2 操作系统…

Ansible 简介安装

1、概念介绍 Ansible 是一款为类 Unix 系统开发的自由开源的配置和自动化工具。由 Red Hat 公司使用 python 研发&#xff0c;类似于 saltstack 和 Puppet&#xff0c;但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用 SSH 来和节点进行通信。Ansible 基于 Py…