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

目录

一、概述

二、路由算法的类型

三、避免死锁

四、实现

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.rhkb.cn/news/257160.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【医学大模型 知识增强】SMedBERT:结构化语义知识 + 医学大模型 = 显著提升大模型医学文本挖掘性能

SMedBERT:结构化语义知识 医学大模型 显著提升医学文本挖掘任务性能 名词解释结构化语义知识预训练语言模型医学文本挖掘任务 提出背景具体步骤提及-邻居混合注意力机制实体嵌入增强实体描述增强三元组句子增强 提及-邻居上下文建模域内词汇权重学习领域自监督任务…

网络渗透测试:Wireshark抓取qq图片

Wireshark Wireshark Downloadhttps://www.wireshark.org/download.html 简介 WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括: 1、Wireshar…

安装Centos系统

1.镜像安装 镜像安装:Centos7安装 2.安装过程(直接以图的形式呈现) 选择你已经下载好的镜像 回车即可,等待安装 等待安装即可

单片机学习笔记---串口通信(1)

目录 通信的基本概念 通信的方式 1.按照数据传送的方式,可分为串行通信和并行通信。 1.1串行通信 1.2并行通信 2.按照通信的数据同步方式,又可以分为异步通信和同步通信。 2.1 异步通信 2.2同步通信 3.按照数据的传输方向,又可以分为…

unity 点击事件

目录 点击按钮,显示图片功能教程 第1步添加ui button,添加ui RawImage 第2步 添加脚本: 第3步,把脚本拖拽到button,点击button,设置脚本的变量, GameObject添加 Component组件 点击按钮&am…

Leetcode 452. 用最少数量的箭引爆气球435. 无重叠区间

class Solution {public int findMinArrowShots(int[][] points) {Arrays.sort(points,(o1,o2)->Integer.compare(o1[0], o2[0]));int count1;//箭的数量for(int i1;i<points.length;i) {if(points[i][0]>points[i-1][1]) {count;//边界没重合&#xff0c;又需要一支箭…

高斯伪谱C++封装库开源!

Windows x64/86 C无依赖运行高斯伪谱法求解最优控制问题&#xff0c;你只需要ElegantGP! Author: Y. F. Zhang His Github: https://github.com/ZYunfeii 写在前面 这个库在你下载它的那一时刻起不再依赖任何其他代码&#xff0c;直接可用来构建C的最优控制问题并进行求解。…

jvm垃圾收集器之七种武器

目录 1.回收算法 1.1 标记-清除算法(Mark-Sweep) 1.2 复制算法(Copying) 1.3 标记-整理算法(Mark-Compact) 2.HotSpot虚拟机的垃圾收集器 2.1 新生代的收集器 Serial 收集器&#xff08;复制算法&#xff09; ParNew 收集器 (复制算法) Parallel Scavenge 收集器 (复制…

LeetCode.145. 二叉树的后序遍历

题目 145. 二叉树的后序遍历 分析 上篇文章我们讲了前序遍历&#xff0c;这道题目是后序遍历。 首先要知道二叉树的后序遍历是什么&#xff1f;【左 右 根】 然后利用递归的思想&#xff0c;就可以得到这道题的答案&#xff0c;任何的递归都可以采用 栈 的结构来实现&#…

【Java程序设计】【C00270】基于Springboot的moba类游戏攻略分享平台(有论文)

基于Springboot的moba类游戏攻略分享平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏攻略分享平台 本系统分为系统功能模块、管理员功能模块、以及用户后台功能模块。 系统功能模块&#xff1a;在平台首…

CVE-2023-22602 漏洞复现

CVE-2023-22602 简述&#xff1a; 由于 1.11.0 及之前版本的 Shiro 只兼容 Spring 的ant-style路径匹配模式&#xff08;pattern matching&#xff09;&#xff0c;且 2.6 及之后版本的 Spring Boot 将 Spring MVC 处理请求的路径匹配模式从AntPathMatcher更改为了PathPatter…

React官网摘抄

https://react.dev/learn 1、组件名称大写 2、变量&#xff0c;用{} vue中用{{}} react中用{}3、遍历 4、state使用

OpenCV基础:用Python生成一幅随机的噪声图像

使用Python&#xff1a;生成一幅随机数值的灰度图像&#xff0c;图像大小为1616像素。借助OpenCV库。输出数值&#xff0c;并显示图像。 # -*- coding: utf-8 -*- """ Created on Wed Feb 14 21:49:09 2024author: 李立宗公众号&#xff1a;计算机视觉之光知识…

【开源图床】使用Typora+PicGo+Gitee搭建个人博客图床

准备工作&#xff1a; 首先电脑得提前完成安装如下&#xff1a; 1. nodejs环境(node ,npm):【安装指南】nodejs下载、安装与配置详细教程 2. Picgo:【安装指南】图床神器之Picgo下载、安装与配置详细教程 3. Typora:【安装指南】markdown神器之Typora下载、安装与无限使用详细教…

docker常用容器命令

首先说下容器&#xff1a; 它是指当docker运行镜像时&#xff0c;创建了一个隔离环境&#xff0c;称之为 容器。 这种方式优点&#xff1a;可以开启多个服务&#xff0c;服务之前是互相隔离的&#xff08;比如&#xff1a;在一台服务器上可以开启多个mysql&#xff0c;可以是…

【Android】使用Android Studio打包APK文件

文章目录 1. 新建项目2. 打包生成APK3. 安装APK 1. 新建项目 打包APK之前&#xff0c;首先需要新建项目&#xff0c;有基础的可以跳过。 无基础的可以参考&#xff1a;使用Android Studio运行Hello World项目 2. 打包生成APK 1.找到Build -> Generate Signed Bundle or …

【Zigbee课程设计系列文章】Zigbee开发环境搭建

【Zigbee课程设计系列文章】Zigbee开发环境搭建 前言IAR 下载安装Z-Stack协议栈安装 &#x1f38a;项目专栏&#xff1a;【Zigbee课程设计系列文章】&#xff08;附详细使用教程完整代码原理图完整课设报告&#xff09; 前言 &#x1f451;由于无线传感器网络&#xff08;也即…

ctfshow——命令执行

文章目录 web 29——通配符*绕过web30——调用其他命令执行函数web 31——参数逃逸web 32-web 36——配合文件包含伪协议web 37-web 39——文件包含web 40—— web 29——通配符*绕过 i不区分大小写&#xff0c;直接?csystem(tac fl*.php); web30——调用其他命令执行函数 调用…

【RL】Bellman Equation (贝尔曼等式)

Lecture2: Bellman Equation State value 考虑grid-world的单步过程&#xff1a; S t → A t R t 1 , S t 1 S_t \xrightarrow[]{A_t} R_{t 1}, S_{t 1} St​At​ ​Rt1​,St1​ t t t, t 1 t 1 t1&#xff1a;时间戳 S t S_t St​&#xff1a;时间 t t t时所处的sta…

idea:如何连接数据库

1、在idea中打开database: 2、点击 ‘’ ---> Data Source ---> MySQL 3、输入自己的账号和密码其他空白处可以不填&#xff0c;用户和密码可以在自己的mysql数据库中查看 4、最后选择自己需要用的数据库&#xff0c;点击运用ok&#xff0c;等待刷新即可 最后&#xff1a…