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