片上网络NoC

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

一、概述

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

片上网络的结构

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

输入单元

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

计算单元

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

虚通道分配器

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

交叉开关分配器

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

交叉开关

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

输出单元

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

片上网络的设计空间

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

拓扑结构

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

路由算法

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

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

流控机制

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

片上网络的死锁和堵塞

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

网络的拥塞问题

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

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

死锁的定义和原因

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

死锁产生的条件:

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

解决死锁的方法

通过虚通道将请求分流

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

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

知乎中的死锁描述博客

参考文献

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

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

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

相关文章

选择一款能让墙面生动起来的壁纸!

1、方小童在线工具集 网址: 方小童 该网站是一款在线工具集合的网站,目前包含PDF文件在线转换、随机生成美女图片、精美壁纸、电子书搜索等功能,喜欢的可以赶紧去试试!

Sora专辑|AI界一夜变天

没有丝毫预热和剧透,Open AI深夜直接丢下核弹炸了街,从业者深感要变天。 2月16日凌晨,Open AI发布了首个“文生视频”模型Sora。官方介绍,Sora能根据文字指令创造出包含丰富细节的逼真场景、角色,且能用多角度镜头,生成一镜到底的60秒长视频。 目前官网上已经更新了48个…

k8s节点负载使用情况分析命令kubectl describe node [node-name]

1.到任意安装了kubectl节点命令的节点上执行kubectl describe node [node-name] 上面的Requests最小分配 Limits最大分配是所有pod之和,最小分配之和不能超过服务器实际参数,否则新的pod会因为资源不够起不来,最大分配是预设之和&#xff0…

ConvNext学习

参考: [1] LIU Z, MAO H, WU C Y, et al. A ConvNet for the 2020s[C/OL]//2022 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), New Orleans, LA, USA. 2022. http://dx.doi.org/10.1109/cvpr52688.2022.01167. DOI:10.1109/cvpr52688.2…

计算机设计大赛 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…

python Matplotlib Tkinter--pack 框架案例

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 版本一 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox…

Java设计模式 | 七大原则之依赖倒转原则

依赖倒转原则(Dependence Inversion Principle) 基本介绍 高层模块不应该依赖低层模块,二者都应该依赖其抽象(接口/抽象类)抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的…

2023 re:Invent 用 Amazon Q 打造你的知识库

前言 随着 ChatGPT 的问世,我们迎来了许多创新和变革的机会。一年一度的亚马逊云科技大会 re:Invent 也带来了许多前言的技术,其中 Amazon CEO Adam Selipsky 在 2023 re:Invent 大会中介绍 Amazon Q 让我印象深刻,这预示着生成式 AI 的又一…

使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212,用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:…

Leetcoder Day23| 回溯part03:组合+分割

语言:Java/Go 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的所有不同组合 ,并以列表形式返回。你可以按任意顺序返回这些组合。 candidates 中的同一个…

前端路由与后端路由的区别

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Web APIs 3 事件

Web APIs 3 事件 一、事件流事件捕获事件冒泡阻止冒泡解绑事件鼠标经过事件的区别两种注册事件的区别 二、事件委托阻止默认行为 三、其他事件① 页面加载事件② 元素滚动事件滚动到指定的坐标 ③ 页面尺寸事件 元素尺寸与位置① 元素在页面中的位置② 元素尺寸 一、事件流 事…