当前位置: 首页 > news >正文

noc多核芯片设计:booksim仿真从入门到精通2Router 类型及路由算法修改

Router::NewRouter 函数中所有支持的路由器类型(type)及其含义的详细解释表格。

这些类型决定了在 NoC 仿真器(如 BookSim)中使用哪种具体的路由策略和架构实现。


🧩 BookSim 中支持的 Router 类型一览表

type 字符串值路由器类名英文全称 / 简介特点说明
"iq"IQRouterInput-Queued Router基础输入队列路由器,每个输入端口有独立的缓冲区,适合模拟传统交换结构
"event"EventRouterEvent-driven Router基于事件驱动机制的路由器,用于更细粒度的时间控制
"chaos"ChaosRouterChaos-based Routing使用混沌理论进行路径选择,具有随机性以避免拥塞
"vct"VCTRouterVirtual Cut-Through Router支持虚拟直通(Virtual Cut-Through),减少延迟
"fbfcl"FBFCLRouterFlit Bubble Flow Control Localized使用 flit bubble 流控技术,局部流控优化
"bypass_no_arb"BypassNoArbRouterBypass without Arbitration绕过仲裁机制的快速旁路路由器
"bypass_no_arb_fbfcl"BypassNoArbFBFCLRouterBypass + FBFCL结合 bypass 和 FBFCL 的特性
"bypass_arb"BypassArbRouterBypass with Arbitration带仲裁机制的旁路路由器
"bypass_arb_fbfcl"BypassArbFBFCLRouterBypass + FBFCL + Arb加入仲裁机制的混合式旁路路由器
"bypass_vct"BypassVCTRouterBypass + VCT在 VCT 模式下启用旁路机制
"bypass_vct_bubble"BypassVCTBubbleRouterBypass + VCT + Bubble在 VCT 基础上加入 bubble 技术优化
"hybrid"HybridRouterHybrid Router混合架构,结合多种路由方式提高性能
"hybrid_fbfcl"HybridFBFCLRouterHybrid + FBFCL混合架构 + FBFCL 流控
"hybrid_simplified"BypassArbRouterSimplified Hybrid简化的混合旁路架构(实际复用 BypassArb)
"hybrid_simplified_fbfcl"BypassArbFBFCLRouterSimplified Hybrid + FBFCL同上,但加入 FBFCL 流控
"smart"——(子类型决定)SMART (Smart Multi-hop Adaptive Routing)智能多跳自适应路由架构

📌 SMART 子类型(当 type == “smart” 时)

SMART 是一种智能多跳绕道路由机制,旨在通过 lookahead 预测网络状态并提前决策路径,从而降低延迟、提升吞吐量。

smart_type 字符串值路由器类名描述
"classic"SMARTRouter最初的 SMART 架构,基于 lookahead 决策是否绕行
"not_empty_realocation"SMARTNotEmptyRealocationRouterSMART 变体,在非空状态下重新分配资源
"nebb_wh"SMARTNEBBWHRouterNEBB_WH:带 lookahead 的高效绕道策略
"nebb_wh_fbfcl"SMARTNEBBWHFBFCLRouterNEBB_WH + FBFCL
"nebb_vct"SMARTNEBBVCTRouterNEBB_VCT:使用 VCT 的 SMART 实现(未优化信用)
"nebb_vct_opt"SMARTNEBBVCTOPTRouterNEBB_VCT_OPT:SMART++,带信用优化
"nebb_vct_opt_bubble"SMARTNEBBVCTOPTBubbleRouterSMART++ + bubble 技术
"s-smart"SMARTLARouterS-SMART++:进一步优化的 lookahead 自适应路由
"nebb_vct_la"SMARTNEBBVCTLARouterNEBB_VCT_LA:结合 lookahead 的 VCT SMART
"nebb_vct_la_bubble"SMARTNEBBVCTLABubbleRouterNEBB_VCT_LA + bubble,适用于 Torus 网络

🔍 术语解释(名词对照)

名词缩写全称含义简述
IQInput-Queued输入队列,每个输入通道有自己的缓冲队列
VCTVirtual Cut-Through虚拟直通,flit 到达后立即转发,不等待整个 packet 缓存
FBFCLFlit Bubble Flow Control Localized局部化 flit 泡沫流控,优化链路利用率
Bypass——快速通道绕过主路由逻辑,缩短关键路径
SMARTSmart Multi-hop Adaptive Routing Technique智能多跳自适应路由技术,利用 lookahead 提前决策路径
NEBBNon-Empty Buffer Based基于非空缓冲区的状态判断绕道
LALookahead预读机制,提前查看下一跳状态以优化路由决策

建议配置示例

[general]
router = smart
smart_type = nebb_vct_opt
use_noc_latency = 1

这表示使用 SMART++ 架构,结合 lookahead 和 credit 优化,适合高性能片上网络场景。


逐个函数进行解释

  • 函数名称;
  • 所属类(主要是 IQRouter);
  • 函数作用说明;
  • 是否与 信道(channel)相关
  • 是否与 跳数(hop count)追踪或统计相关
  • 是否参与 仲裁(arbitration)流程
  • 是否涉及 输入/输出处理、路由决策、VC 分配等关键步骤

🧾 表格:IQRouter 类中所有函数详解

函数名所属类含义说明信道相关跳数相关仲裁相关输入/输出/路由相关
IQRouter(...)IQRouter构造函数,初始化路由器参数
~IORouter()IORouter析构函数,释放资源
AddOutputChannel(FlitChannel* channel, CreditChannel* backchannel)IORouter添加一个输出通道及其反向信用通道
ReadInputs()IORouter从输入通道读取 flits(数据包片段)
InternalStep()IORouter内部逻辑执行一步(如更新 VC 状态)
WriteOutputs()IORouter将 flits 写入输出通道
ReceiveFlits()IORouter接收来自输入通道的 flits
ReceiveCredits()IORouter接收信用(Credit),用于流控
InputQueuing()IQRouter将输入的 flits 放入相应的输入队列(VC)
RouteEvaluate()IORouter根据当前 flit 计算路由路径(调用路由函数)
RouteUpdate()IORouter更新路由结果(保存到 VC 中)
VCAllocEvaluate()IORouterVC 分配评估阶段,决定哪些 VC 可以发送 flit
VCAllocUpdate()IORouter更新 VC 分配结果
SWHoldEvaluate()IORouter判断是否需要保持当前开关状态
SWHoldUpdate()IORouter更新开关保持状态
SWAllocAddReg(int input, int vc, int output)IORouter注册某个输入 VC 到输出端口的请求
SWAllocEvaluate()IORouter开关仲裁评估阶段,收集所有输入对输出的请求
SWAllocUpdate()IORouter更新开关仲裁结果,确定哪个输入被选中
SwitchEvaluate()IORouter检查开关是否准备好传输 flit
SwitchUpdate()IORouter实际完成 flit 的转发操作
OutputQueuing()IORouter处理输出队列,准备发送 flits
SendCredits()IORouter向上游节点发送信用反馈
Display(ostream&)IORouter显示路由器状态(调试用)
GetUsedCredit(int o) constIORouter获取某个输出端口已使用的信用数
GetUsedCreditVc(int o, int vc) constIORouter获取某个输出端口特定 VC 的已使用信用数
GetBufferOccupancy(int i) constIORouter获取某个输入缓冲区的占用情况
UsedCredits()IORouter返回每个输出端口的已使用信用数
FreeCredits()IORouter返回每个输出端口的剩余信用数
MaxCredits()IORouter返回每个输出端口的最大信用数
UpdateNoQ(int input, int vc, Flit const *f)IQRouter不使用 QoS 时更新统计数据(包括 hop count)

🔍 重点功能分类说明

📡 1. 信道相关函数

这些函数负责读写输入输出通道(FlitChannel 和 CreditChannel):

  • AddOutputChannel
  • ReadInputs
  • WriteOutputs
  • ReceiveFlits
  • ReceiveCredits
  • SendCredits

如果你要添加新的 channel,必须在构造路由器时通过 AddOutputChannel 添加,并确保其被正确连接。


🔄 2. 跳数(Hop Count)相关函数

跳数通常在 UpdateNoQ 中更新,该函数会在每次 flit 发送前被调用:

  • UpdateNoQ(...)

这个函数会检查 flit 的 hop count 并递增,用于统计网络延迟和路径长度。


⚖️ 3. 仲裁相关函数

这些函数负责在多个输入之间竞争同一个输出时进行仲裁:

  • SWAllocAddReg
  • SWAllocEvaluate
  • SWAllocUpdate

它们构成了开关仲裁的核心逻辑,通常使用 Round Robin 或其他策略实现。


🧭 4. 路由相关函数

这些函数负责决定 flit 应该发往哪个方向:

  • RouteEvaluate
  • RouteUpdate

路由函数(如 dim_order_route)在这里被调用。


🛠️ 如果你要添加新的 Channel:

步骤如下:

  1. 创建 FlitChannel 和 CreditChannel 对象

    • 在拓扑构建代码中为每个新连接创建两个对象(flit 和 credit)。
  2. 调用 AddOutputChannel(flit_chan, credit_chan)

    • 将它们添加到对应的路由器中。
  3. 确保在路由函数中支持新方向

    • 修改路由函数(如 route_func.cpp 中的函数),使其能处理新增的方向编号。
  4. 修改仲裁逻辑(如有必要)

    • 如果新增方向影响仲裁器(如 RoundRobinArb),需确保其能处理更多输入/输出。
  5. 在配置文件中设置拓扑和路由器类型

    • .cfg 文件中指定正确的拓扑结构和 router 类型。

✅ 总结建议

功能建议位置
新增信道使用 AddOutputChannel 添加
读取输入ReadInputs, ReceiveFlits
输出处理WriteOutputs, SwitchUpdate
路由计算RouteEvaluate, RouteUpdate
仲裁处理SWAllocEvaluate, SWAllocUpdate
跳数统计UpdateNoQ
流控信用SendCredits, ReceiveCredits

相关文章:

  • MPI与多线程(如OpenMP)混合编程注意事项与性能优化
  • 【运维】Zerotier删除节点后的恢复操作指南
  • 【登录优化】redis删除旧token
  • PLC 与变频器通讯接线与控制技巧
  • 深入Linux网络栈:套接字接口工作机制与端到端通信开发
  • 无法访问Docker官网,国内如何合规高效安装Docker软件
  • 质检LIMS系统优化检测资源调度 节省设备采购成本策略
  • 鸿蒙OSUniApp 制作自定义的进度条组件#三方框架 #Uniapp
  • Trae中使用mcp连接MariaDB
  • adb.exe: more than one device/emulator
  • Python pandas 将列索引(A,B,C)转为(1,2,3)
  • IP 网段
  • UE5 C++动态调用函数方法、按键输入绑定 ,地址前加修饰符
  • SmartSoftHelp 图片资源技术保护可执行添加水印方案---深度优化版:SmartSoftHelp DeepCore XSuite
  • LSTM+Transformer混合模型架构文档
  • 精益数据分析(85/126):营收阶段的核心指标与盈利模型优化——从数据到商业决策的落地
  • 右键打开 pycharm 右键 pycharm
  • gpu_data_manager_impl_private.cc(436)] GPU process isn‘t usable. postman
  • 物理机和虚拟机有什么区别
  • 多模态大语言模型arxiv论文略读(九十二)
  • 手机网站底部漂浮代码/千锋教育培训多少钱
  • 工业信息化部网站备查询/教育培训机构招生方案
  • 淄博网站建设 招聘/郑州seo方案
  • 做网站广告联盟/上海还能推seo吗
  • 政府网站建设管理意见/百度搜索引擎排名规则
  • 通信建设资质管理信息系统网站/广东东莞疫情最新情况