noxim 安装 与 使用教程

标签: NOC  网络  算法

noxim : https://github.com/davidepatti/noxim

bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/davidepatti/noxim/master/other/setup/ubuntu.sh)

可以看出是按照文件夹other/setup/ubuntu.sh的过程安装的

sudo apt-get -y install build-essential linux-headers-$(uname -r) wget tar libboost-dev cmake 

if [ $(dpkg -s git 2>/dev/null | grep "ok installed" | wc -l) -eq 0 ]
then 
    sudo apt-get -y install git || \
        sudo apt-get -y install python-software-properties && \
        sudo add-apt-repository ppa:git-core/ppa && \
        sudo apt-get update && \
        sudo apt-get -y install git
fi

git clone https://github.com/davidepatti/noxim
cd noxim/bin
mkdir -p libs
cd libs

git clone https://github.com/jbeder/yaml-cpp
cd yaml-cpp/
git checkout -b r0.5.3 release-0.5.3
mkdir -p lib
cd lib
cmake ..
make
cd ../..

wget http://www.accellera.org/images/downloads/standards/systemc/systemc-2.3.1.tgz
tar -xzf systemc-2.3.1.tgz
cd systemc-2.3.1
mkdir -p objdir
cd objdir
export CXX=g++
export CC=gcc
../configure 
make
make install
cd ..
echo `pwd`/lib-* > systemc.conf
sudo ln -s `pwd`/systemc.conf /etc/ld.so.conf.d/noxim_systemc.conf
sudo ldconfig
cd ../..

make

./noxim -config ../config_examples/default_config.yaml

 1. Noxim简介

在本实验中,我们将介绍3D片上网络(NoC)仿真工具– Noxim!
A.SystemC

SystemC是一组C ++类和宏,它们提供C ++中事件驱动的仿真内核(另请参见离散事件仿真)。 这些功能使设计人员能够模拟并发进程,每个进程均使用纯C ++语法描述。  SystemC进程可以使用C ++提供的所有数据类型的信号,SystemC库提供的一些其他信号以及用户定义的信号,在模拟的实时环境中进行通信。
   在某些方面,SystemC故意模仿硬件描述语言VHDL和Verilog,但更恰当地描述为系统级建模语言。Wikipedia,“ SystemC”,http://en.wikipedia.org/wiki/SystemC B.Noxim 卡塔尼亚大学(意大利)开发的片上网络模拟器Noxim是使用SystemC开发的。

B.Noxim

 Noxim有一个命令行界面,用于定义NoC的多个参数。 特别是,用户可以自定义网络大小,缓冲区大小,数据包大小分布,路由算法,选择策略,数据包注入率,流量时间分布,流量模式,热点流量分布。network size, buffer size,packet size distribution, routing algorithm, selection strategy, packet injection rate, traffic time distribution, traffic pattern, hot-spot traffic distribution.
   该模拟器允许在吞吐量,延迟和功耗方面进行NoC评估throughput, delay and power consumption 。该信息以平均和每次通信结果的形式传递给用户。 详细地说,允许用户收集不同的评估指标,包括接收到的数据包/数据块的总数,全局平均吞吐量,最大/最小全局延迟,总能耗,每次通信延迟/吞吐量/能量等。(packets/flits, global average throughput, max/min global delay, total energy consumption, per-communications delay/throughput/energy ) NoC Simulator”,http://noxim.sourceforge.net/

C.热点HotSpot

热点是适用于architectural研究的准确而快速的热模型。
   它基于热电阻和电容的等效电路,该电路对应于微体系结构模块和热封装的基本方面。 该模型已使用有限元模拟进行了验证。  HotSpot具有一组简单的接口,因此可以与大多数功率性能模拟器(如Wattch)集成。  HotSpot的主要优点是,它与计算机体系结构社区中使用的各种功率/性能模型兼容,不需要详细的设计或综合描述。 通过HotSpot,可以研究长时间的实际全长应用中的热演化。“ Hotspot”,http://lava.cs.virginia.edu/HotSpot/

D.Access Noxim

Access Noxim是3D NoC系统的联合仿真平台,它将网络模型,功率模型和热模型耦合在一起。 我们将Noxim和HotSpot集成在一起,并采用英特尔80核处理器的功耗模型。  Noxim是周期精确的SystemC NoC仿真器,而HotSpot提供了体系结构级的热模型。 为了与HotSpot结合使用,NoC仿真器应将其架构级别的布局和电源跟踪转换为芯片级的物理布局和电源跟踪。 我们首先添加了基本3D路由器和垂直交叉路由器的模型,然后扩展了Noxim以能够基于用户定义的尺寸参数生成NoC的3D架构。 然后插入一个模块,用于自动将体系结构级平面图转换为物理平面图。
   在网络流量仿真期间,将基于NoC的功率模型生成功率跟踪。 功率迹线和物理平面图用作热仿真的输入。 在拟议的模拟器中,图块的几何形状和功率模型基于Intel的80核芯片。郑开元,赵智豪,王浩宇和吴安业,“交通热互耦合协同仿真平台 用于三维片上网络”,在Proc。 诠释 象征 VLSI设计自动化和测试(VLSI-DAT),第135-138页,2010年4月

2. Installation of Access Noxim 

3. 执行

执行“ make”命令后,/ bin目录中有一个名为“ noxim”的可执行文件。 使用默认参数直接执行Noxim

 在Access Noxim中可以设置很多参数。 您可以在下面键入命令显示所有参数 -h

 -verbose N 详细级别(1 =低,2 =中,3 =高,默认为关闭)

# Verbosity level:
#   VERBOSE_OFF
#   VERBOSE_LOW
#   VERBOSE_MEDIUM
#   VERBOSE_HIGH

-trace FILENAME 将信号跟踪到名为“ FILENAME.vcd”的VCD文件(默认关闭)trace_mode: false

-dimx N 将网格X尺寸设置为指定的整数值(默认为8)

-dimy N 将网格Y尺寸设置为指定的整数值(默认为8)

-dimz N 将网格Z尺寸设置为指定的整数值(默认为4)

-buffer N将路由器每个通道的缓冲区深度设置为指定的整数值[flits](默认值为16)

-size Nmin Nmax将最小和最大数据包大小设置为指定的整数值[flits](默认min = 8,max = 8)

-routing TYPE 将路由算法设置为TYPE,其中TYPE是以下值之一(默认值为0):

# Routing algorithms:
#   XY
#   WEST_FIRST
#   NORTH_LAST
#   NEGATIVE_FIRST
#   ODD_EVEN
#   DYAD
#   TABLE_BASED
#   MORTAZAVI -- find nearest hub for wireless and uses XY for wired

-sel TYPE将选择策略设置为TYPE,其中TYPE是以下值之一(默认值为0):

# Selection Strategies:
#   RANDOM
#   BUFFER_LEVEL
#   NOP
# Each of the above labels should match a corresponding
# implementation in the selectionStrategies source code directory

-pir R TYPE将数据包注入速率设置为指定的实际值[0..1](默认值为0.01),并将流量的时间分布设置为TYPE,其中TYPE是以下之一:packet_injection_rate

-traffic TYPE将流量的空间分布设置为TYPE,其中TYPE为以下值之一(默认值为0'):

# Traffic distribution:
#   TRAFFIC_RANDOM
#   TRAFFIC_TRANSPOSE1
#   TRAFFIC_TRANSPOSE2
#   TRAFFIC_HOTSPOT
#   TRAFFIC_TABLE_BASED
#   TRAFFIC_BIT_REVERSAL
#   TRAFFIC_SHUFFLE
#   TRAFFIC_BUTTERFLY

-hs ID P将节点ID添加到热点节点,百分比为P(0..1)(仅适用于“随机”流量)

-warmup N N个周期后开始收集统计信息(默认为1)

-seed N 设置随机数生成器的种子(默认时间())

-detailed 显示详细的统计数据 一般false

-volume N 当达到最大循环次数或已交付N flits时,停止仿真

-sim N运行指定的仿真时间[周期](默认为10000)

现在,尝试运行一个模拟,其NoC拓扑为6 x 6 x 4(H)。 路由器缓冲区大小为8,数据包大小为(2,8)。 将模拟周期设置为50,000,预热周期为20,000。
   保持其他参数为默认值

% noxim –dimx 6 –dimy 6 –dimz 4 –buffer 8 –size 2 8 –sim 50000 –warmup 20000

 

 

版权声明:本文为AS7062031原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AS7062031/article/details/108146952

智能推荐

26_Python基础_继承

面向对象三大特性: 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用, 相同的代码不需要重复的编写 多态 不同的对象调用相同的方法,  产生不同的执行结果,  增加代码的灵活度 1.  单继承 1.1 概念 继承的概念:&...

循环

与任何程序设计语言一样Java利用条件语句与循环结构确定流程控制,一下总结一下Java中的循环语句: while do while for switch 对于golang来说: switch非常灵活。从第一个expr为true的case开始执行,如果case带有fallthrough,程序会继续执行下一条case,不会再判断下一条case的expr,如果之后的case都有fallthrough,d...

1638 统计只差一个字符的子串数目(动态规划)

1. 问题描述: 给你两个字符串 s 和 t ,请你找出 s 中的非空子串的数目,这些子串满足替换一个不同字符以后,是 t 串的子串。换言之,请你找到 s 和 t 串中恰好只有一个字符不同的子字符串对的数目。比方说, "computer" 和 "computation"...

websocket基本原理

HTTP中一个request只能有一个response。而且这个response也是被动的,不能主动发起 因此过去的服务端推送信息是通过客户端不停的轮询实现的 websocket是双向通信协议,提供了服务端主动推送信息的能力 需要客户端(浏览器)和服务端同时支持 如果经过代理的话,还需要代理支持,否则有些代理在长时间无通信时会自动切断连接 因此WS为了保证连接不被断掉,会发心跳 WebSocket...

mybatis+ehcache二级缓存

导入jar包 mapper.xml文件开启二级缓存 pojo类实现序列化接口 配置ehcache.xml 测试...

猜你喜欢

python+opencv实现图像拼接

任务 拍摄两张图片去除相同部分,拼接在一起 原图 结果 步骤 读取两张图片 使用sift检测关键点及描述因子 匹配关键点 处理并保存关键点 得到变换矩阵 图像变换并拼接 代码实现 扩展 这里对右边图像进行变换,右边变得模糊,可以修改代码对左边图像变换 这里只有两张图片拼接,可以封装实现多张图片拼接 可以修改代码实现上下图片的拼接...

python_sklearn机器学习算法系列之AdaBoost------人脸识别(PCA,决策树)

          注:在读本文之前建议读一下之前的一片文章python_sklearn机器学习算法系列之PCA(主成分分析)------人脸识别(k-NearestNeighbor,KNN)         本文主要目的是通过一个简单的小...

memmove函数与memcpy函数的模拟实现

memmove函数和memcpy函数都是在内存复制任意类型的,但是它俩也有区别。当源区域和目标区域有重复的,memmove函数会复制缓冲区重叠的部分,而memcpy相反,会报出未知错误。 下面给出两个函数的实现 首先,memmove函数。 实现的基本原理如下图。 具体代码如下: memcpy函数的实现很简单,就直接给出源代码了...

SpringFramework核心 - IOC容器的实现 - 总结

1. 概述 把Spring技术内幕第一章和第二章过了一遍,也做了一些笔记, 对IOC容器的实现有了一定皮毛理解,现在跟着源码再过一遍总结一下IOC容器的初始化,Bean的初始化的过程,做一下总结 ① IOC容器和简单工厂模式 在开始之前,先想想我们平时是怎么使用IOC容器为我们管理Bean的,假设我们要把下面的User类交给IOC容器管理 我们不想关心如何创建一个User对象实例的,仅仅在需要他的...