因为写论文需要所以用到了这个NoC仿真器,可惜网上只有教怎么安装。正好写一个介绍文档方便使用这个仿真器,以下内容不带无线通信部分。

Noxim仿真器介绍文档

1. 介绍noxim

2. 工程文件

3. 工程的UML图


1. 介绍noxim

Noxim是一种在 SystemC 中开发的开放、可配置、可扩展、周期精确的 NoC 模拟器,它允许分析传统有线 NoC 和新兴 WiNoC 架构的性能和功率数据。Noxim 还提供了一组有关功耗(动态和泄漏)的细粒度统计数据。

Noxim 模拟器是使用 SystemC 开发的,SystemC 是一个用 C++ 编写的系统描述库。 这一选择的动机是 Noxim 项目背后的基本要求:允许可扩展性和可扩展性能,同时仍支持周期精确模拟。它可以收集不同的评估指标,包括接收的数据包/flits 的总数、全局平均吞吐量、最大/最小全局延迟、总能耗、每次通信延迟/吞吐量/能量等。

如图1所示,对于节点,Noxim 将它们分为两类,即 tile 节点和 radio-hub 节点。 第一组tile 节点包括 NoC 的计算/存储节点,而第二组radio-hub 节点包括网关节点,用于分组区块和缩短网络的远距离区域。


图1.NoC的Mesh结构(Tile包括路由Router以及处理单元PE)

Noxim 提供了几种常用的数据流量模型(参考书:Principles and Practices of Interconnection Networks),包括统一、转置、位反转、蝴蝶、热点,它们抽象了典型的通信模式。
Noxim 提供了一组与性能和功耗指标相关的统计数据。关于性能指标,模拟器的周期精确性可获得以下参数的无错误估计:

—注入/接收的flit/包总数:注入网络的flit和包的总数以及在目的地传递的flit和包的数量。此类信息在全局级别(即,针对整个网络)和本地级别(即,针对特定网络节点)提供。

—平均通信延迟:从产生包的时间到目的节点消耗掉包尾的平均时钟周期数。

—每次通信的平均/最小/最大/方差延迟:对于每个通信对,数据包延迟的平均值、最小值、最大值和方差如注入/接收的flit/包总数所定义。

—全局吞吐量:接收到的总flit与仿真时钟周期数之间的比率。

—每通信吞吐量:对于每个源/目的对,目的节点从源节点接收到的flit数与时钟周期数之间的比率。

—总能耗:网络的总能耗,包括路由器、链路、无线电集线器和网络接口。

—每通信能耗:每个源/目的地通信对的总能耗的比例。

—能量分解:网络不同主要元素及其子元素的能量贡献。这种能量贡献进一步分为静态和动态分量。

2. 工程文件

2.1目录结构

• config_examples:NoC 配置文件,如果你想尝试,只需复制一份 default_config.yaml
• 其他:已弃用的内容,正在进行中,跳过它
• bin:noxim 可执行文件、结果和日志
• doc:安装说明、许可证等。
• src:仅当需要修改 Noxim 时修改这里的文件

2.2 Src中的文件

架构元素:Buffer.h、Router.h、LocalRoutingTable.h、Tile.h、NoC.h、GlobalRoutingTable.h、Power.h、ProcessingElement.h //NoC模块部分,Router.h , Tile.h , NoC.h部分为最关键3部分

模拟器管理和实用程序:ConfigurationManager.h、DataStructs.h、GlobalStats.h、Stats.h、Utils.h、GlobalParams.h,GlobalTrafficTable.h ReservationTable.h //这些主要是用于监测和统计数据

无线通信:Initiator.h、Target.h、Hub.h、TokenRing.h, Channel.h //因为我们不需要无线通信,这部分不需要关注

可以在以下位置找到路由算法:src/routingAlgorithms //如果要修改算法,这部分需要重写

2.3文件对应的模块组成


图2 NoC内部组成模块

如图2所示,NoC内部由Tile模块相互链接,组成Mesh结构,以完成数据的相互通信。从顶级角度来看,特定 NoC 架构的配置实例化了两个主要概念元素:一组节点和一个通信基础设施。每个节点执行一些计算/存储任务,通过通信基础设施与其他节点异步交换数据。架构的实际实例完全由 NoC 配置决定,允许自定义 NoC 的多个参数,每个参数不仅可能影响 NoC 的行为,还可能影响执行仿真所需的时间。

图3 Tile模块的内部结构

如图3所示,每个 Tile 包含一个路由器和一个处理元素,每个 Tile 连接到 4 个邻居,可选地,一些节点可以连接到无线电集线器,允许无线传输。

3.工程的UML图

3.1各文件简介介绍

Main.cpp: 该文件包含Noxim顶层的实现.主要作用:创建了一个NoC,将NoC中参数配置完成。

NoC.h: 此文件代表顶级测试平台,即NoC的声明。可以根据配置生成不同架构的NoC:Mesh型,蝶形等。将每个Tile相连接。

Tile.h:此文件包含Tile的声明。包含了Router和PE(数据包生成模块)

Tile 节点代表 Noxim 架构的主要组件。尽管它们可以在概念上与计算/存储元素相关联,但需要更多功能以支持基于 NoC 的方法典型的数据通信的分布式特性。具体而言,可以区分以下元素:处理元素、路由器和有线连接。

Router.h:该文件包含Router的声明。包含了数据包的接收和发送,仲裁等功能。这是整个设计最重要的部分,
是负责分发数据包、实现流量控制和网络中大多数与通信相关的机制的架构元素。它基本上由实现路由算法所需的组件 “动态行为”部分中指定的选择策略组成。当从给定的输入连接接收到数据包的报头迁移时,路由器应用路由功能并选择合适的输出连接。如果选择的输出尚未被另一个输入保留,则路由器进行保留并设置内部交叉开关 这样所有后续的flit(直到尾部flit)都将遵循虫洞切换的相同路径。
ProcessingElement.h:该文件包含ProcessingElement的声明。主要是数据包的产生,接收和发送。
处理元件 (PE) 是实际执行计算/存储操作的核心组件。它通常映射到整个计算已经被分区的任务之一(例如,解码器或小内存的硬件实现)。PE负责生成和使用数据包,其运行时的行为严格取决于工作负载参数

3.2各模块的信号以及细节

一 . NoC.h

其中包含了带无线(sc_signal_NSWEH)的和不带无线(sc_signal_NSWE)的sc_signal信号模板,只需要看不带无线的信号模板。
NoC中成员变量包含成员有些不用关注。带sc_signal_NSWEH的以及变量名后缀为_hub的变量,因为这说明是带Hub部分。这一部分主要是为了:1.生成Tile之间的req,ack信号,以及数据包Flit类型的信号。2.生成需要的Tile对象。将生成的Tile之间的端口进行连接以及配置。边界Tile节点的信号清除,因为是mesh结构。

二.Tile.h

  1. Tile中有Tile模块之间的数据包Flit输入输出信号,req输入输出信号,ack输入输出信号,同样带hub的信号可以不看。有router与PE相连接的数据包Flit输入输出信号,req输入输出信号,ack输入输出信号。
  2. 包含了2个模块,router模块和PE模块。将模块端口的信号相互连接。

三.Router.h

包含了2部分。第一部分,数据包Flit输入输出信号,req输入输出信号,ack输入输出信号。第二部分,router内部的寄存器(成员变量)和模块(成员函数)。
Router中成员函数的介绍

  1. process()函数中包含txProcess()和rxProcess()。就是输入输出模块。
  2. rxProcess()接受新的flit
  3. txProcess()发送flit
  4. getCurrentNoPData()监测模块
  5. perCycleUpdate()检测模块
  6. configure()用于配置router信息
  7. routingFunction(无线函数不需要看
  8. getNeighborId()得到相邻Tile的id编号
  9. inCongestion()查看是否拥塞
  10. ShowBuffersStats()查看buffer状态
  11. connectedHubs()无线函数不需要看

四.Power.h

主要统计的是数据包交换过程中的能量。因为对仿真器修改的时候不需要修改能量消耗部分所以这部分没注意。

使用总结

这是一个很优秀的NoC仿真器,并且可以进行修改。在使用过程中,我对其的描述可能是片面或错误的,这篇介绍文档只是我在使用过程中总结而来,如果出现错误,请直接指出。


2021.12.4更新
做毕设时,正好有看到一篇15年的毕设论文有用到NoXim。
高滔,片上网络路由算法的设计与性能评估[D].东南大学,2015.
因为是毕业论文介绍的相当详细。介绍了三个路由进程:rxProcess、txProcess、bufferMonitor。
首先介绍路由之间的连接关系,如图所示。

NoximTile[0][0]与NoximTile[1][0]信号连接图,标号中前一维度代表x维,后一维度代表Y维,它们的节点标识号分别为0与3。它们之间联络信号线分为三组:free slot to east[1][0]与free slot to west[1][0]用于传递流控制信息,即各自缓冲区的利用情况。req_to east[1][0]、flit to east[1][0】、ack to west[1l[0]lN于NoximTile[O][0]向NoximTile[1][0]传送flit。req_to_west[1][0]、flit to west[1][0]、ack to east[1][0]用于NoximTile[1][0] NoximTile[0][0]传送flit。

bufferMonitor工作流程如下图,依次向各个方向的free slots信号写入实时的缓冲区空闲空间数,告知上游路由器缓冲区空闲空间数。该进程只在需要根据缓冲区空闲空间数进行路由选择时才工作,即Noxim的路由选择策略设定为bufferlevel或者nop。

rxProcess进程的详细工作流程如图所示,依次扫描各个方向的输入端口将nit读入输入缓冲区。

txProcess进程的详细工作流程如图4—7所示,采用轮询的方式为各个输入缓冲区提供服务。主要分为保留(Reservation)与转发(Forwm’ding)两步:保留步骤根据路由与选择的结果修改保留表为输入端口分配输出端口仲裁冲突;转发步骤则查询分配好的保留表进行转发操作。图左侧为保留步骤,右侧为转发步骤。该进程最为复杂,也是Noxim路由器模型最为核心最为重要的进程。

Noxim仿真器介绍文档相关推荐

  1. rockycapture_RockyCapture航线规划软件介绍文档

    马上注册,享用更多功能,让我们一起,飞遍世界! 您需要 登录 才可以下载或查看,没有帐号?抢先注册 x RockyCapture 航线规划 RockyCapture 航线设计规划是基于大疆无人机,由珞 ...

  2. Live555源码阅读笔记(一):源码介绍文档 及 源码目录结构

    目录 一.Live555介绍 1.Live555项目介绍 2.官网及帮助文档介绍 二.源码目录结构 1.UsageEnvironment 2.BasicUsageEnvironment 3.group ...

  3. 如何写作品的介绍文档

    介绍文档有什么用? 让看你作品的人通过这个文档更好地了解你的作品! 以自己的一次参赛经验来分析(微信小程序应用开发大赛),总结主要是以下几个步骤: 1. 产品定位 (1)应该说清楚这是一个什么小程序, ...

  4. 条码的开发使用介绍文档

    条码的开发使用介绍文档 条码的开发使用介绍文档   第一部分 条码的简介绍 1.介绍条码的生成和使用方法 条码是由一组按一定编码规则排列的条.空符号,用以表示一定的字符.数字及符号组成的信息. 条码系 ...

  5. 【企业微信机器人封装介绍文档】

    企业微信机器人封装介绍文档 概述 本文档介绍了一个功能强大的企业微信机器人封装,旨在简化企业微信机器人的使用和开发过程.该封装提供了以下主要功能: 支持发送PNG图片 支持发送文件 支持定时发送文本消 ...

  6. 群晖nas介绍文档_群晖 NAS 选购 入门指南:动手打造自己的家庭数据中心

    原标题:群晖 NAS 选购 & 入门指南:动手打造自己的家庭数据中心 Matrix 精选 Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考.我们会不定期挑选 ...

  7. 群晖nas介绍文档_手把手带你玩转NAS 篇八:NAS文档随身带——多终端文件同步介绍(群晖drive篇)...

    手把手带你玩转NAS 篇八:NAS文档随身带--多终端文件同步介绍(群晖drive篇) 2020-01-08 15:23:44 24点赞 214收藏 31评论 你是AMD Yes党?还是intel和N ...

  8. Blender Python API中文介绍文档四

    ReferenceAPI Usage Blender有很多内部链接数据类型,这些数据类型需要api,这个文档帮助你了解api API文档范围 涵盖了bpy.types通过bpy.context获取 , ...

  9. GoJs Pictures 官方介绍文档

    图片 使用Picture类显示图像. 最常见的用法是使用URL字符串设置Picture.source属性,以及通过GraphObject.desiredSize(图对象的所需尺寸)获取或通过设置Gra ...

最新文章

  1. 笨办法学python3_笨办法学python3—练习38
  2. SharePoint 2007 Features
  3. java字符串反转方法【全】
  4. SAP Spartacus category navigation按钮之间的间隔问题
  5. 计算机网络【四】数据链路层基本概念+点到点通信(PPP协议)
  6. 在JSP页面中输出JSON格式数据
  7. mysql怎样dao出数据库_mysql怎么导出数据库?
  8. 工作方式~使用寄存的实现方式~
  9. 正则除了几个汉字的其它汉字_理解汉字的几个层次
  10. 大数据小视角1:从行存储到RCFile
  11. mysql隔离性与隔离级别
  12. 微信小程序的模块化开发,提高效率第一篇
  13. 从 HTML 提取文本的 7 个工具
  14. python装逼代码_一行python代码带你装B
  15. 海康ehome协议分析(3):PTZ云台控制
  16. 解决google浏览器自动填充密码问题
  17. centos7.6安装lnmp环境
  18. 腾讯大战360之观战指南
  19. Js函数加括号、不加括号
  20. Android动画+事件处理详解

热门文章

  1. 这篇文章教你怎么解决电脑键盘数字键盘无法使用的问题
  2. MTK平台LCM驱动移植
  3. 虚拟机连网(多台虚拟机互联、虚拟机与真机互联、虚拟机上网)
  4. [神经风格迁移]用卷积神经网络将艺术照进现实(Keras版本,每行代码都解析的那种噢)
  5. 防火墙 VS 路由器,谁才是网络出口比较好的选择?
  6. 可运营的行业云,让云上资源跑起来
  7. 物理DG删除归档测试
  8. 阐释变量 局部变量 实例变量 类变量的用法
  9. SofGAN:更逼真可控的肖像生成器
  10. HLSL着色器原理:(二)高级光照