片上网络NoC

news2024/9/29 11:39:40

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

一、概述

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

片上网络的结构

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

输入单元

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

计算单元

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

虚通道分配器

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

交叉开关分配器

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

交叉开关

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

输出单元

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

片上网络的设计空间

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

拓扑结构

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

路由算法

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

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

流控机制

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

片上网络的死锁和堵塞

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

死锁的定义和原因

死锁指在系统中的多个资源彼此等待对方释放资源而无法继续执行的状态。
无死锁要求网格资源之间没有循环依赖,这些资源包括缓存和链路。

死锁产生的条件:

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

解决死锁的方法

通过虚通道将请求分流

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

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

知乎中的死锁描述博客

参考文献

  1. Jieming Yin, Zhifeng Lin, “Modular Routing Design for Chiplet-based Systems” ISCA.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 实现页面导出A4标准大小的PDF文件,以及处理图片跨域不能正常展示的问题等

效果预览: 代码流程:首先在utils文件夹下创建htmlToPdf的js工具文件,然后在main.js中注册引用 htmlToPdf.js // 导出页面为PDF格式 import html2Canvas from html2canvas import JsPDF from jspdfexport default {install(Vue, options) {V…

el-table样式问题:如何修改element-ui表格中按钮悬浮显示但是被el-table溢出隐藏的问题?

最近在写elment-ui样式表格中遇到了溢出隐藏的问题 修改前 修改后 是由于el-table__body-wrapper为 overflow:hidden导致的 解决方式: .el-table__body-wrapper {overflow: visible !important; } //或者 /deep/.el-table__body-wrapper {overflow: v…

更换个人开发环境后,pycharm连接服务器报错Authentication failed

原因:服务器中更换个人开发环境后,密码变了。 解决:在pycharm中修改服务器开发环境密码即可。 1 找到Tools-Depolyment-Configuration 2 点击SSH Configuration后的省略号 3 修改这里面的Password即可

刷题日记 | 字符串扩容和增强型for循环

for(char c:s)遍历字符串 增强型for循环 C for(char c:s)遍历字符串 增强型for循环_c for (char c : s)-CSDN博客 字符串使用前要进行扩容 reserve函数 【CString类成员函数辨析】resize(),size(),capacity(),reserve()函数的解析与对比_c reserve函数-CSDN博客 a.size() 用来…

鲲鹏arm64架构下安装KubeSphere

鲲鹏arm64架构下安装KubeSphere 官方参考文档: https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/ 在Kubernetes基础上最小化安装 KubeSphere 前提条件 官方参考文档: https://kubesphere.io/zh/docs/installing-on-kubernetes/introduction/prerequi…

SIMON 32/64加密电路的实现(System Verilog)

关于SIMON加密电路的原理,参考之前发布的博文【SIMON加密算法的原理】 1.总览与电路介绍 1.1 电路总体结构图 1.2 模式配置介绍 SIMON加密算法的分组长度、密钥长度以及必要的参数配置如下图: 本次需要实现的是SIMON 32/64,即分组长度2n3…

【LeetCode每日一题】938. 二叉搜索树的范围和

2024-2-26 文章目录 [938. 二叉搜索树的范围和](https://leetcode.cn/problems/range-sum-of-bst/)思路:写法一:在中间累加写法二:在最后累加 938. 二叉搜索树的范围和 思路: 1.在二叉搜索树中:左子树的结点都小于根节…

LeetCode69. x 的平方根(C++)

LeetCode69. x 的平方根 题目链接代码 题目链接 https://leetcode.cn/problems/sqrtx/description/ 代码 class Solution { public:int mySqrt(int x) {int right x, left 0, ans -1;while(left < right){long long mid left (right - left) / 2;if(mid * mid <…

System V版本的共享内存

在之前的学习中我们学习到了使用匿名和命名管道进行进程间的通信&#xff0c;下面我们再来使用一种新的方式进行进程间的通信。 我们下面要学习的是system V版本的共享内存。 首先我们要知道什么是system V 首先我们要知道我们在之前学习的管道通信的代码并不是一个专门设计…

1995-2021年全国30省能源消费总量(万吨标煤)

1995-2021年全国30省能源消费总量&#xff08;万吨标煤&#xff09; 1、时间&#xff1a;1995-2021年 2、范围&#xff1a;30省市不含西藏 3、来源&#xff1a;能源统计年鉴 各省年鉴 3、指标: 能源消费总量 4、单位&#xff1a;万吨标煤 5、缺失情况&#xff1a;新疆202…

贝叶斯核机器回归拓展R包:bkmrhat

1.摘要 bkmrhat包是用于扩展bkmr包的贝叶斯核机器回归&#xff08;Bayesian Kernel Machine Regression, BKMR&#xff09;分析工具&#xff0c;支持多链推断和诊断。该包利用future, rstan, 和coda包的功能&#xff0c;提供了在贝叶斯半参数广义线性模型下进行identity链接和 …

C# 通过共享内存调用C++ 算法

需求&#xff1a; C#程序调用 C开发的dll. 一种C# 程序调用c 算法方案_算法怎么被c#调用-CSDN博客 上回书说到&#xff0c;将c算法封装为dll 插件&#xff0c;c加载后&#xff0c;暴露C风格接口&#xff0c;然后供C#调用。但是这样有几个问题&#xff1a; 1&#xff0c;一是…

Django后台管理(二)

一、自定义注册管理类介绍 官网:Django 管理站点 | Django 文档 | Django 注册模型除了使用 Django 默认的管理类admin,也可以自定义,比如: class StudentAdmin(admin.ModelAdmin):pass admin.site.register(Student, StudentAdmin)ModelAdmin 类是管理界面中模型的表示。…

Java四大引用详解:强引用、软引用、弱引用、虚引用

在JDK1.2以前的版本中&#xff0c;当一个对象不被任何变量引用&#xff0c;那么程序就无法再使用这个对象。也就是说&#xff0c;只有对象处于可触及状态&#xff0c;程序才能使用它。这就像在商店购买了某样物品后&#xff0c;如果有用就一直保留它&#xff0c;否则就把它扔到…

【深度学习】微调ChatGlm3-6b

1.前言 指令微调ChatGlm3-6b。微调教程在github地址中给出&#xff0c;微调环境是Qwen提供的docker镜像为环境。 镜像获取方式&#xff1a;docker pull qwenllm/qwen:cu117 github地址&#xff1a;https://github.com/liucongg/ChatGLM-Finetuning 2.微调过程 github地址中的教…

网络防御-VPN概述

目录 VPN的概述VPN的分类根据建设的单位不同分类根据组网方式不同分类根据VPN技术实现的层次来进行分类 VPN其他常用技术身份认证技术 --- 身份认证是VPN技术的前提。加解密技术 --- 以此来抵抗网络中的一些被动攻击数据认证技术 --- 验货 --- 保证数据的完整性密钥管理技术 VP…

CS_上线三层跨网段机器(完整过程还原)

以前讲过用cs_smb_beacon上线不出网机器&#xff0c;但是真实的网络拓扑肯定不止这么一层的网络&#xff01; 所以我就来搭建一个复杂一点的网络环境&#xff01;&#xff01; 当然了&#xff0c;这三台电脑之间都是不同的网段&#xff0c;&#xff08;但是同属于一个域环境&a…

C# 学习第二弹

一、变量 存储区&#xff08;内存&#xff09;中的一个存储单元 &#xff08;一&#xff09;变量的声明和初始化 1、声明变量——根据类型分配空间 ①声明变量的方式 —变量类型 变量名 数值&#xff1b; —变量类型 变量名&#xff1b; 变量名 数值&#xff1b; —变…

【Rust】简介、安装和编译

文章目录 一、Rust简介二、Rust 安装三、Rust 程序结构3.1 模块&#xff08;Modules&#xff09;&#xff1a;3.2 函数&#xff08;Functions&#xff09;&#xff1a;3.3 变量&#xff08;Variables&#xff09;&#xff1a;3.4 控制流&#xff08;Control Flow&#xff09;&a…

Coursera吴恩达机器学习专项课程02:Advanced Learning Algorithms 笔记 Week03

Week 03 of Advanced Learning Algorithms 笔者在2022年7月份取得这门课的证书&#xff0c;现在&#xff08;2024年2月25日&#xff09;才想起来将笔记发布到博客上。 Website: https://www.coursera.org/learn/advanced-learning-algorithms?specializationmachine-learnin…