NOC总线(2)

news2024/9/24 21:19:50

1. NoC的路由

        在NoC交换信息时,需要确定从源节点到目标节点所经过的路径,这时就需要路由算法来确定该路径。路由算法分为静态路由算法动态路由算法两种。
        静态路由算法对于两节点之间的路径是固定的,结构简单,便于硬件实现,也便于保持传输数据的顺序,所以在NoC系统中被广泛的使用。但是静态路由算法在路径发生拥塞时,无法进行调整传输路径,降低数据传输效率。
        动态路由算法又被称为自适应路由算法,可以根据网络流量和链路负载的变化调整路径,动态选择路径进行通信,避免了高数据传输密度下的网络拥塞。但这种算法结构复杂,不便于实现,同时在低拥塞时电路开销大,而且会出现死锁(循环等待)问题。

1.1 确定性XY路由算法

        确定性XY路由算法是最简单的路由算法,该算法的路径取决于源节点和目标节点的地址,是一种静态的路由算法。以2D Mesh结构为例,数据首先在X方向传输,当数据到达目的节点的同一列时,沿Y方向传输,最后到达目的节点。

1.2 odd_even路由算法

        odd_even路由算法是一种适用于mesh结构的部分自适应路由算法,对信号发生转弯的位置进行约束来防止死锁的产生。如果节点所在的Y坐标为奇数,该列称为奇数列;如果该列的Y坐标为偶数,该列称为偶数列。用E/S/W/N分别代表东南西北,NW表示从北到西的转弯。为了避免死锁发生,这种算法约束了一些转弯。例如:

  • 奇数列转弯目的禁止向西
  • 偶数列起始方向禁止向东
  • 禁止180度转向

1.3 DyAD路由算法

        CMU的Hu等提出了将Odd_even算法和确定性路由算法相结合的DyAD算法,可以根据网络的负载不同而采取不同的路由方式。在网络处于低负载情况下采用确定性路由算法,而当网络处于高负载时,采用odd_even自适应路由算法。路由器的每个输入端都在监控各自的信道占用率。当信道占用率超过拥塞阈值,拥塞标志位变为1,否则为0。如果标志位为1,路由器的工作模式变为odd_even路由模式。这种算法在网络低负载情况下拥有较好的时延和吞吐性能,并且在网络拥塞情况下具有较高的吞吐量

1.4 DyXY路由算法

        DyXY路由算法是一种全自适应算法,通过监视其相邻节点的拥塞状况来选择路由路径的下一跳。路由器每个端口的即时队列长度作为压力值,然后用压力值来表征相邻节点的拥塞状况。算法规定数据采用最短路径进行传输,如果存在多条最短路径,则选择拥塞压力最小的一条路径
        每个路由器时刻更新所保存的相邻节点的即时压力值,在确定源节点和目的节点之后,数据沿压力值最小的一条路径传输。这也是自适应算法最基本的思路,由于节点数据实时更新,所以可能会出现死锁或活锁的情况。

1.5 Weight-based Table routing

        这是一种更复杂的路由方法,其中每个可能的路径或链接都分配有一个权重值。路由决策基于这些权重值,数据包倾向于选择权重最高(或最低)的路径。权重可以根据许多因素进行分配,例如路径长度、拥塞状况或能耗。这种方法可以提供比XY routing更好的性能,但设计和实现更复杂,且可能需要更多的硬件资源。

1.6 NoC失效的一些情况

        死锁(Deadlock): 死锁是指在多任务系统中,两个或多个任务相互等待对方释放资源,导致任务无法继续进行的现象。可以通过控制流量来解决

        活锁:是指一个数据包在其目的节点周围环绕传输,但无法到达目的节点。可以通过采用最短路径的方法解决
        饥饿(Starvation): 在NoC系统中,饥饿是指某些任务或数据包由于其他高优先级的任务或数据包不断占用资源,导致无法获得足够的资源来完成它们的操作。可以通过合理的资源分配策略解决
        拥塞(Congestion): 当数据包在NoC中的流量超过网络的处理能力,就可能会发生拥塞。这可能会导致数据包的延迟增加,甚至可能导致数据丢失。
        路由问题(Routing Issues): 不正确或低效的路由策略可能会导致数据包在到达目的地之前需要经过更多的跳数,从而增加了传输延迟并降低了网络性能。
        在实际应用中,还需要根据特定的NoC结构来选择适合的路由算法。

2. NoC的交换

        NoC的交换技术是动态分配传输线路和接口资源的方式,主要包括电路交换包交换两种方式。

2.1 电路交换

        电路交换是指在发送数据前,需要先在源节点与目的节点之间建立物理链路,然后进行数据传输,数据可以利用物理信道的整个带宽进行传送,而其它设备将无法使用这些物理链路,直到数据传输结束后链路才被释放。

        优点:由于路径确定,并且独占物理通道,具有较高的数据传输效率和通信质量
        缺点:无法适应网络的实际变化情况,缺乏灵活性,链路利用率低,建立和释放连接浪费时间,不适合突发数据传输。电路交换方式适合于数据传输频繁,或者通信模式相对静态的场合。

2.2 包交换

        包交换模式是将数据封装成包,每个数据由包头和数据部分组合而成。根据包头的信息,通过路选择策略,一级一级的可以将数据转发到目的地
        优点:不需要建立和释放链路花费附加时间;在数据传输过程中可以动态分配带宽,逻辑上属于同一连接的数据包可能通过不同的路径进行传输,信道利用率高,吞吐量高;而且链路故障具有容错能力,适合突发数据的传输。

        缺点:交换结点中存储整个数据包需要很大的缓存器,这会增加的面积成本;另外假如路由策略的选择不当,可能出现不同的数据包同时征用链路,会造成拥塞和死锁。
        目前主要有三种包交换技术:存储转发(store and forward,SAF)、虚直通(virtual cut through,VCT)和虫孔(Wormhole)交换技术。

2.2.1 存储转发交换技术SAF

        SAF交换技术是最简单的包交换方式,需要足够的缓存空间存储整个数据包,当且仅当路由器收到整个数据包后才能将其转发出去,增大了数据包的延迟。SAF需要较大的缓存空间,需要更大的数据带宽,并且延时较大。改进的办法是不需要等待数据包完整收到就将其转发出去。

2.2.2 虚直通交换技术VCT

        VCT交换技术与SAF技术不同之处在于,VCT交换时,数据包头部一旦到达即可被转发,无需等待数据包完全到达。一旦做出路由决策并且输出通道是空闲的,路由器就可以马上转发随后的数据部分。当网络不存在延迟时,VCT交换技术效率很高,可以及时转发,但当网络拥塞时,路由器需要缓存整个数据包,缓存空间要占用很大的片上系统面积。

2.2.3 虫孔交换技术

        虫孔交换中,数据被分为若干流控单元flits。第一个流控单元成为Head flits,带有数据包的目的地址等控制性信息,最后一个称为Tail flits。当路由器收到Head flits时,路由器根据其中的目标地址计算输出端口,端口空闲则将数据按流控单元依次转发出去,数据传输结束则释放端口。当Head flits被阻塞时,后面的数据也依次被阻塞,分别缓存在相邻的几个路由器中。相比之前的两种策略,虫孔交换技术的路由器志向需要几个flits的缓存空间,不需要缓存整个数据包的缓存空间。但分段存储数据更容易造成链路阻塞,更容易出现死锁

        综上,不同的NoC路由算法和交换技术各有优劣,我们需要根据特定的NoC结构,综合考虑多种因素选择合适的交换方式以提高传输质量,降低传输延迟。

3. 数据包packets格式:message -> packets -> flit -> phits

        message是一组连续的比特流,想从源router传送到目的地router。将一个message分为若干packets,每个packets是routing路由和sequencing排序的基本单位。packet分为具有固定格式的flit组,包含header、body、tail。

  • message:从程序员的角度来看,message是一个信息单元,通信的目的是要完整传递这个message。 大小仅受用户内存空间的限制。
  • packet:是最小的通信单元,控制状态被分配给一个数据包。包含路由信息(例如,目标地址)和其标头中的排序信息。 它的大小是数百或数千字节或单词的数量级。 它由header flit和data flit迁移组成。数据包可能被分成小段。
  • Flit:是bandwidth 和storage allocation的基本单位。flit没有任何路由或序列信息,必须沿着整个所在的packet顺序传播。根据 NoC 链路宽度,packets被分解为一个或多个flits。
  • Head flit, body flit, tail flit, head/tail flit.
  • Head flit allocates channel state for a packet,and tail flit deallocates it,tail标记数据包的结尾。
  • header flit里有destination adderss和sequence number。
  • Phit: (physical transfer digits) 是在一个时钟周期内通过通道传输的单位。

4. Router architecture

        NoC中的路由器是一种专门为芯片级通信而设计的高度优化组件。它们基于特定的路由算法,使用多个输入/输出端口和缓冲区来实现数据传输和路由选择。路由器的设计目标是提供高性能、低延迟和可靠的通信,在大规模集成电路中支持高度并行的处理单元间的通信需求。

4.1 Router的内部结构

        一个典型的基于“Message Passing” Systems的NoC路由器Router的结构如图所示,他由InputUnit(输入单元)、OutputUnit(输出单元)、Routing Computation(路由计算器)、Switch Allocator(开关分配器)、Virtual Channel Allocator(虚拟通道分配器)、Crossbar(横梁交叉开关矩阵)组成。

4.1.1 Input Unit(输入单元)

        输入单元主要负责接收来自其他节点的数据。这里面可能包括多个虚拟通道(Virtual Channels),每一个VC都有独立的缓存队列。输入单元由输入缓冲器(input buffer)和相关的链路控制逻辑组成。输入缓冲器由 SRAM 单元或寄存器构建。缓冲槽被组织成若干个队列,每个队列是一个VC。

4.1.1.1 VC 虚拟通道

        VC(Virtual Channel,虚拟通道),是用于在同一物理连接中复用传输的技术,它可以有效地减少网络阻塞,提高带宽利用率。

  1. 一个VC里存了一组flit吗?还是一个flit的一部分?

答:一个虚拟通道(Virtual Channel, VC)可以存储一个或多个完整的flit(flow control digit)。

  1. 增加虚拟通道的数量会有以下一些可能的影响

增加硬件复杂性和成本:每个虚拟通道都需要其自身的缓冲区和状态机来处理存储和转发数据包。因此,增加虚拟通道的数量将会增加设计的复杂性和硬件成本。
提高并行性和带宽:更多的虚拟通道意味着可以同时处理更多的数据包,从而提高系统的并行性和带宽。
改善网络性能:更多的虚拟通道可以提供更多的路由选择,从而改善网络的性能,特别是在网络拥塞的情况下。
可能会增加功耗:由于每个虚拟通道都需要处理和转发数据包,增加虚拟通道的数量可能会增加系统的功耗。
延迟可能会有所增加:虚拟通道分配器在决定哪个数据包使用哪个虚拟通道时可能需要更多的时间,这可能会增加数据包的传输延迟。


4.1.2 Output Unit(输出单元)

        每个路由器的Output Unit都会维护一个credit计数器或寄存器,用于记录每个目标路由器Input Unit的剩余credit。当一个数据包从Output Unit发送并被目标路由器的Input Unit成功接收和处理后,目标路由器会返回一个credit给源路由器,源路由器的Output Unit会相应地更新credit寄存器,增加对应目标路由器Input Unit的credit计数。输出单元会根据虚拟通道的调度策略,如循环调度或优先级调度,来决定下一个从哪个虚拟通道中取出数据。输出单元通过多个寄存器跟踪下游 VC 的状态。
        “input_vc”寄存器是下游VC被分配到的输入VC,VC进到从这个地方后出去到后续的Router。
当 1 位“idle”寄存器的值为“真”时,下游 VC 收到最后分配的数据包的尾部迁移,现在可以重新分配给其他数据包。
        “credits”寄存器记录credits数额


 4.1.3 Routing Computation(路由计算器)

        路由计算器根据预先定义的路由算法(如XY路由或者自适应路由等)来决定每一个数据包的下一个路由路径。这个过程通常依赖于数据包的目的地址和当前的网络状况。计算是根据head flit携带的目的地位置进行的,它为数据包产生输出端口和输出VC


4.1.4 Switch Allocator(开关分配器)

        开关分配器用于决定在下一个时钟周期中,哪个输入单元的数据包将被分配到哪个输出单元。它需要协调可能的冲突,例如,当多个输入单元想要发送数据到同一个输出单元的时候。他控制着Crossbar。


4.1.5 Virtual Channel Allocator(虚拟通道分配器)

        虚拟通道分配器用于管理输入单元中虚拟通道的使用。当一个数据包从一个输入单元的虚拟通道准备转移到另一个输出单元的虚拟通道时,需要虚拟通道分配器进行协调和分配。开关分配器(Switch Allocator)在决定给某个输出端口分配哪个输入端口的数据包时,就需要考虑这个输出端口剩余的信用(Credit)。只有当输出端口有足够的信用来接收新的数据包,开关分配器才会分配数据包到这个输出端口。Routing Computation 完成后,head flit 请求输出 VC。VC 分配器收集来自所有输入 VC 的请求,然后将输出 VC 分配给请求输入 VC。它保证一个输出VC最多分配给一个输入VC,并且每个输入VC最多被授予一个输出VC。


4.1.6 Crossbar(横梁交叉开关矩阵)

        交叉开关一般用多个多路复用器来实现。这些多路复用器的控制信号由开关分配器生成。交叉开关矩阵是路由器的核心,它连接了所有的输入单元和输出单元,在每一个时钟周期中,根据Switch Allocator的决定,会建立或断开特定的输入单元到输出单元的连接。

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

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

相关文章

mysql 导入数据 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘

前言: mysql 导入数据 遇到这个错误 1273 - Unknown collation: utf8mb4_0900_ai_ci 具体原因没有深究 但应该是设计数据库的 字符集类型会出现这个问题 例如: char varchar text..... utf8mb4 类型可以存储表情 在现在这个时代会用很多 以后会用的更多 所以不建议改…

基于LLaMA Factory,单卡3小时训练专属大模型 Agent

大家好,今天给大家带来一篇 Agent 微调实战文章 Agent(智能体)是当今 LLM(大模型)应用的热门话题 [1],通过任务分解(task planning)、工具调用(tool using)和…

多维时序 | Matlab实现CNN-GRU-Mutilhead-Attention卷积门控循环单元融合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现CNN-GRU-Mutilhead-Attention卷积门控循环单元融合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现CNN-GRU-Mutilhead-Attention卷积门控循环单元融合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍…

从CNN ,LSTM 到Transformer的综述

前情提要:文本大量参照了以下的博客,本文创作的初衷是为了分享博主自己的学习和理解。对于刚开始接触NLP的同学来说,可以结合唐宇迪老师的B站视频【【NLP精华版教程】强推!不愧是的最完整的NLP教程和学习路线图从原理构成开始学&a…

k8s--helm

什么是helm?在没有这个helm之前,deployment service ingress helm的作用 通过打包的方式,把deployment service ingress等打包在一块,一键式的部署服务,类似yum安装 官方提供的一个类似与安装仓库额功能,…

详解APQC流程分级分类框架PCF13个高阶分类和5级业务流程

一:什么是APQC 美国生产力与质量中心(American Productivity and Quality Center,简称为APQC),创立于1977年是一个会员制的非营利机构,使命是“发现有效的改进方法,广泛地传播其发现成果,实现个人之间及其…

MySQL函数—字符串函数

MySQL函数—字符串函数 函数功能CONCAT(s1,s2,...sn)字符串拼接,将s1,s2,...sn拼接成一个字符串LOWER(str)将字符串全部转为小写UPPER(str)将字符串全部转为大写LPAD(str,n,pad)左填充,用字符串pad对str左边进行填充,达到n个字符串长度RPAD(s…

Leetcode—19.删除链表的倒数第 N 个结点【中等】

2023每日刷题(七十五) Leetcode—19.删除链表的倒数第 N 个结点 算法思想 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int…

EHS管理系统为何需要物联网的加持?

EHS是Environment、Health、Safety的缩写,是从欧美企业引进的管理体系,在国外也被称为HSE。EHS是指健康、安全与环境一体化的管理。 而在国内,整个EHS市场一共被分成三类; 一类是EHS管培体系,由专门的EHS机构去为公司…

使用AFPN渐近特征金字塔网络优化YOLOv8改进小目标检测效果(不适合新手)

目录 简单概述 算法概述 优化效果 参考文献 文献地址:paper 废话少说,上demo源码链接: 简单概述 AFPN的核心思想:AFPN主要通过引入渐近的特征融合策略,逐步整合底层、高层和顶层的特征到目标检测过程中。这种融合…

架构篇08:架构设计三原则

文章目录 合适原则简单原则演化原则小结 成为架构师是每个程序员的梦想,但并不意味着把编程做好就能够自然而然地成为一个架构师,优秀程序员和架构师之间还有一个明显的鸿沟需要跨越,这个鸿沟就是“不确定性”。 对于编程来说,本…

高效构建Java应用:Maven的使用总结

一、Maven简介和快速入门 1.1 Maven介绍 Maven-Introduction Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。 总结:Maven…

用ChatGPT教学、科研!大学与OpenAI合作

亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…

mysql生成最近24小时整点时间临时表

文章目录 生成最近24小时整点生成最近30天生成12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT 1 A…

vulhub之redis篇

CVE-2022-0543 | redis的远程代码执行漏洞 简介 CVE-2022-0543 该 Redis 沙盒逃逸漏洞影响 Debian 系的 Linux 发行版本,并非 Redis 本身漏洞, 漏洞形成原因在于系统补丁加载了一些redis源码注释了的代码 原理分析 redis一直有一个攻击面,就是在用户连接redis后,可以通过ev…

芯驰E3340软件编译以及更新步骤

打开已有工程File->Open Solution: 东南项目:e3340\boards\e3_324_ref_display\proj\jetour-t1n-fl3\sf\SES 编译:build->build sf 增加头文件和宏定义: 编译完成sf后,进行编译bootloader 东南项目:e3340\boa…

matlab appdesigner系列-常用15-滑块、微调器

滑块,以左右拖动的方式在一定范围内改变数值 此示例,滑块显示微调器的数值,微调器也可以显示滑块的数值 操作步骤为: 1)将滑块和微调器拖拽到画布上 2)分别设置这两个组件的回调函数 回调函数有两个选项…

excel统计分析——S-N-K法多重比较

参考资料:生物统计学 S-N-K法全称Newman-Keuls或Student-Newman-Keuls法,又称复极差检验法或q检验法。最小显著极差的计算与Tukey法相同,只是将第一自由度换成了秩次距m,即计算临界值时,df1m,df2df&#xf…

141基于matlab的齿轮系统非线性动力学特性分析

基于matlab的齿轮系统非线性动力学特性分析,综合考虑齿侧间隙、时变啮合刚度、综合啮合误差等因素下,参数阻尼比变化调节下,输出位移、相图、载荷、频率幅值结果。程序已调通,可直接运行。 141 matlab齿轮非线性动力学 (xiaohongs…

FOR XML PATH 函数与同一分组下的字符串拼接

FOR XML PATH 简单介绍 FOR XML PATH 语句是将查询结果集以XML形式展现,通常情况下最常见的用法就是将多行的结果,拼接展示在同一行。 首先新建一张测试表并插入数据: CREATE TABLE #Test (Name varchar(70),Hobby varchar(70) );insert #T…