片上网络NoC(6)——路由算法

news2024/12/27 5:29:47

目录

一、概述

二、路由算法的类型

三、避免死锁

四、实现

4.1 源路由实现

4.2 基于节点查找表的路由实现

4.3 组合电路实现

五、总结


一、概述

        路由算法(routing algorithm),即决定数据包在网络拓扑中从起点到终点路径的算法。路由算法的目标是尽可能地在网络拓扑中均匀分配网络流量,以避免出现热点(hotspot)并最小化竞争(contention),从而降低网络延迟并提高吞吐量。

二、路由算法的类型

        路由算法总体上可以分成三大类:确定性路由(deterministic routing)、无关路由(oblivious routing)和自适应路由(adaptive routing)

        尽管目前已经提出了各种各样的路由算法,但是在片上网络中应用最广泛的路由算法是简单的维序路由(dimension-order routing,DOR)。维序路由是一种确定性路由算法:所有从节点A向节点B移动的数据包都通过相同的路径。在DOR中,数据包在网络拓扑中按照确定的顺序移动:先在一个维度下移动到与目的节点相匹配的位置,然后在下一个维度下移动到与目的节点相匹配的位置,以此类推,最终抵达终点。

        另一类路由算法是无关路由(oblivious routing):数据包从节点A向节点B移动时可以有多种不同的路径选择,然而路径的选择不考虑网络的拥塞(congestion)。例如,一个路由器能够预先随机挑选一条可选路径然后发送数据包。

        第三类路由算法是更为复杂的自适应路由(adaptive routing):一个数据包从节点A移动到节点B的路径取决于当前的网络流量(traffic)情况。

        路由算法也可以按照最短路由与非最短路由进行分类。最短路由仅选择跳数最小的路径。非最短路由可以选择跳数非最小的路径。在没有拥塞的情况下,采用非最短路由的数据包会通过额外的节点和链路,因此增加延迟与功耗。但是,选择非最短路径来避免或减少拥塞,往往会比选择存在拥塞的最短路径具有更低的传输延迟。

三、避免死锁

        在选择或设计路由算法时,不仅需要考虑延迟、功耗、吞吐量和可靠性,大多数应用也要求网络能够保证无死锁。简单来说,死锁是由多个数据包在传输路径上形成了打结的环路(knotted cycle)造成的"。下图展示了一个由4个数据包的路径形成的死锁,A、B、C和D分别代表有路由器的网络节点,有箭头的折线代表数据包的流动方向。其中,每个数据包都等待着当前被其他数据包所占据的路径释放,因此每个数据包都无法移动,从而形成死锁。可以看到,数据包之间的依赖和占用关系形成了一个环路,每个数据包都无法进一步向自己的目的节点传输。

        死锁可以通过以下两种方式避免:

  • 设计路由算法以避免在网络中形成打结的环路
  • 设计数据流控制协议(flow control protocol)以避免路由器缓冲器(buffer)的占用和请求构成循环依赖。

四、实现

        本节讨论各种路由算法的实现选择。路由算法可以通过在源节点或在路径上每个节点的路由器中使用查找表来实现,另外还可以使用组合电路来替代基于查找表的方式实现。具体实现时,会有各种各样的权衡取舍,并且不是所有的路由算法都能被每一种实现方式所支持。

4.1 源路由实现

        路由算法能够采用很多种方式实现。首先,路由信息可以在源节点处集成到数据包的报头中,这种方式叫作源路由。例如,对于2×3的mesh结构,从左下角到右上角的路由可以编码为<EENNNX>[其中的符号含义:E 表示东(east),N 表示北(north),S表示南(south),W 表示西(west),X 表示弹出(eject)],在数据包的路由过程中,每一跳的路由器将会从路由报头中读取上述编码中最左边的方向信息,并根据这个方向信息将数据包发送到具体的输出链路上,同时去除报头中当前路由器所使用过的方向信息。

4.2 基于节点查找表的路由实现

        许多复杂的算法都是使用路由表来实现的,其中每个节点的路由器都维护了一张表来记录数据包为抵达某个特定的目的地而需采用的输出链路。在这个机制下,数据包在每一跳的路由器处获取路由信息,而不是在起点处获取所有的路由信息。这个机制也支持自适应路由算法,因为每一跳都可以利用网络的拥塞信息进行相应的自适应决策。

4.3 组合电路实现

        数据包可以编码目的节点的坐标,并且在路径上每个节点的路由器中使用比较器来决定是否接收(即从本节点弹出)或传递这个数据包。因为其开销小,简单的路由算法在路由器中一般都以组合电路的形式实现。
        对源路由而言,数据包必须有足够的空间以携带用来指定整条路径的所有数据位。组合电路实现的路由仅要求数据包携带目的节点标识符。实现路由算法的整个电路非常简单,并且具有非常低的延迟。下图展示了一个在2D mesh 拓扑中基于当前缓冲区占用情况计算下一跳的组合电路。其中,路由选择也可以采用维序路由,而不考虑缓冲区中的队列长度。

五、总结

        本文介绍了片上网络的路由设计与实现,路由可以分成确定性路由(deterministic routing)、无关路由(oblivious routing)和自适应路由(adaptive routing)。实现方式可以大体上分成源路由实现、基于节点查找表的路由实现和组合电路实现。

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

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

相关文章

作为国产大模型之光的智谱AI,究竟推出了多少模型?一篇文章带你详细了解!

虽然OpenAI发布了一系列基于GPT模型的产品,在不同领域取得了很高的成就。但是作为LLM领域绝对的领头羊,OpenAI没有按照其最初的Open初衷行事。无论是ChatGPT早期采用的GPT3,还是后来推出的GPT3.5和GPT4模型,OpenAI都因为担心被滥用…

人工智能时代

一、人工智能发展历史:从概念到现实 人工智能(Artificial Intelligence,简称AI)是计算机科学领域中一门旨在构建能够执行人类智能任务的系统的分支。其发展历程充满曲折,从概念的提出到如今的广泛应用,是技术、理论和实践相互交织的产物。 1. 起源(20世纪中期) 人工智…

OWASP TOP10

OWASP TOP10 OWASP网址:http://ww.owasp.org.cn A01:失效的访问控制 例如:越权漏洞 案例1: 正常:每个人登录教务系统,只能查询自己的成绩信息 漏洞:张三登录后可以查看自己的成绩 例如&…

WebSocket 通信流程,注解和Spring实现WebSocket ,实战多人聊天室系统

一、前言 实现即时通信常见的有四种方式-分别是:轮询、长轮询(comet)、长连接(SSE)、WebSocket。 ①短轮询 很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由客户端浏览器对服务…

JavaScript中的querySelector()方法是什么,它是如何工作的?

在JavaScript中,有时您需要访问HTML元素。querySelector方法是一个Web API,它选择与传入的指定CSS选择器匹配的第一个元素。 但是,更详细地说,这是如何工作的呢?在本文中,我们将看一些如何使用querySelect…

2022年12月电子学会青少年软件编程 中小学生Python编程等级考试二级真题解析(判断题)

2022年12月Python编程等级考试二级真题解析 判断题(共10题,每题2分,共20分) 26、字典的元素可以通过键来访问,也可以通过索引(下标)来访问 答案:错 考点分析:考查字典相关知识,字…

Java与JavaScript的区别与联系

Java是目前编程领域使用非常广泛的编程语言,相较于JavaScript,Java更被人们熟知。很多Java程序员想学门脚本语言,一看JavaScript和Java这么像,很有亲切感,那干脆就学它了,这也间接的帮助了JavaScript的发展…

vivado Shift Registers、Dynamic Shift Registers

移位寄存器是一个触发器链,允许数据在固定(静态)数字上传播延迟阶段。相反,在动态移位寄存器中,传播链的长度在电路操作期间动态变化。从“coding”下载编码示例文件示例。 静态移位寄存器元件 静态移位寄存器通常包…

收藏:不错的讲座《拆解成功领导者的三重底层思维逻辑》

在B 站看到个不错的讲座《拆解成功领导者的三重底层思维逻辑》,地址:第145期-拆解成功领导者的三重底层思维逻辑_哔哩哔哩_bilibili 演讲内容文章摘要在这里:《直播精华 | 拆解成功领导者的思维逻辑》(直播精华 | 拆解成功领导者的…

揭秘 2024 春晚刘谦魔术——代码还原

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、魔术大概流程 二、代码实现各个步骤 2.1 partition(对半撕牌) 2.2 bottom(将 n 张牌置底…

力扣1732. 找到最高海拔(前缀和)

Problem: 1732. 找到最高海拔 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.求取数组gain的大小 n n n; 2.定义一个大小为 n 1 n 1 n1的数组preSum; 3.先求取前 n n n个元素的前缀和,再最后单独处理preSum[n];其中preSum[n] preSum[n - 1] gai…

使用playwright进行自动化端到端测试

项目希望能接入自动化端到端测试提高可靠性,发现微软的 playwright 还挺好用的,推荐一下,顺便说下遇到的一些难点以及最佳实践。 难点 登录 项目不能帐号密码登录,只能扫二维码 临时方案是先自己扫码保存 cookie 用于测试&#…

寒假思维训练day22 D. Divisible Pairs

更新一道赛时想了很久才想通的题。 链接:Problem - 1931D - Codeforces Part1 题意: 给定一个长度为n的数组a, 再给定两个整数x, y, 其中, 定义取两个不同索引i, j, 满足, 的为美丽对,问数组中有几个这样的美丽对。 Part2 题解: …

高中信息技术—数据采集与编码(一)

计算机技术的应用,使得数据的处理方式发生了巨大的转变,要用计算机处理这些数据,需要对采集到的数据进行一定的转换。 采集方式 1.人工采集—观察、实验 2.机器采集 互联网—网络爬虫 传感器—自然信源 数字化 信息可用模拟信号或数字信号表…

2.11:递归操作

1.递归实现n! 程序代码&#xff1a; 1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int fun(int n);5 int main(int argc, const char *argv[])6 {7 int n;8 printf("please enter n:");9 scanf("%d",&am…

嵌入式C语言学习——基于Linux与GCC(二)

系列文章目录 一.C语言常用关键字及运算符操作 文章目录 系列文章目录内存四区指针指针概述指针 修饰符constvoliatiletypedef 指针运算符多级指针 数组数组空间字符空间及地址 结构体、共用体定义、字节对齐位域 内存分布图段错误分析 内存四区 C/C语言的内存四区&#xff…

LabVIEW伺服阀动静态测试系统

LabVIEW伺服阀动静态测试系统 基于LabVIEW开发了一套伺服阀动静态测试系统&#xff0c;提高伺服阀在电液伺服控制系统中的性能测试精度和效率。通过设计合理的液压系统、电控系统及软件系统&#xff0c;实现了伺服阀的动态和静态特性测试&#xff0c;采用流量-压力双闭环稳态控…

CSS之BFC

BFC概念 BFC&#xff08;Block Formatting Context&#xff09;即块级格式化上下文&#xff0c;是Web页面的可视CSS渲染的一部分。它是一个独立的渲染区域&#xff0c;让其中的元素在布局上与外部的元素互不影响。简单来说&#xff0c;BFC提供了一个环境&#xff0c;允许内部的…

【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

AI工具导航网站介绍

给大家介绍一个AI工具导航网站&#xff1a;https://www.ainav.net/&#xff0c;里面有多种AI工具及开源AI应用。