展示了不同的命令行与结果,作为初步的了解.
./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py
–num-cpus=16
–num-dirs=16
–network=garnet
–topology=Mesh_XY
–mesh-rows=4
–sim-cycles=1000000 --inj-vnet=-1
–synthetic=uniform_random
–injectionrate=1
这里我们设为1000000.太小了可能收到的flit太少了.
源代码: src/mem/ruby/network/garnet/GarnetNetwork.cc
m_flits_received
.init(m_virtual_networks)
.name(name() + ".flits_received")
.flags(statistics::pdf | statistics::total | statistics::nozero |
statistics::oneline)
;
for (int i = 0; i < m_virtual_networks; i++) {
m_flits_received.subname(i, csprintf("vnet-%i", i));
m_flits_injected.subname(i, csprintf("vnet-%i", i));
m_flit_network_latency.subname(i, csprintf("vnet-%i", i));
m_flit_queueing_latency.subname(i, csprintf("vnet-%i", i));
}
统计结果里就有三个包的结果
例如–inj-vnet=0
命令行如下.
./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py \
--num-cpus=16 \
--num-dirs=16 \
--network=garnet \
--topology=Mesh_XY \
--mesh-rows=4 \
--sim-cycles=1000000 --inj-vnet=0 \
--synthetic=uniform_random \
--injectionrate=1
可以看出, 三列里只有第一列有值15897也是全部的 fltis数了,说明所有的flit都从vnet 0 走,也符合我们的命令行–inj-vnet=0 的设定.
然而, 下面的代码似乎并没有实现,这个分三列更像是 statistics::pdf的结果.
m_flits_received.subname(i, csprintf("vnet-%i", i));
但是这个latency很大
flags | Descriptions |
---|---|
Stats::none | Nothing extra to print. |
Stats::total | Print the total. |
Stats::pdf | Print the percent of the total that this entry represents. |
Stats::cdf | Print the cumulative percentage of total upto this entry. |
Stats::dist | Print the distribution. |
Stats::nozero | Don’t print if this is zero. |
Stats::nonan | Don’t print if this is NAN |
Stats::oneline | Print all values on a single line. Useful only for histograms. |
官网给的参考配置 --injectionrate=0.01 太小了,10万个cycles数,发的包很少.
./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py \
--num-cpus=16 \
--num-dirs=16 \
--network=garnet \
--topology=Mesh_XY \
--mesh-rows=4 \
--sim-cycles=1000000 --inj-vnet=0 \
--synthetic=uniform_random \
--injectionrate=0.01
比如我们看统计结果: 一共只有145个flit.
原因
发现: clock不是1 tick而是1000,也就是一个cycle不是 1 ps 而是1ns, latency 5000多,意味着 就是5000 ps,也就是 5 ns,相当于5 cycles.
system.clk_domain.clock 1000 # Clock period in ticks (Tick)
Fuzzy Flow Regulation for Network-on-Chip based
Chip Multiprocessors Systems 使用了 0.02 packet/cycle,注意,他还假设都是 1个packet =5 个flit,也就是 用vn2
他使用的设置如下:
uniform random
bit permutation traffic
总packets数大概是 2万个包.没有表或数字,但是有个图.
运行是10e6 的cycles,注入率从0.012 packet/flit慢慢增加, 2*10e4的packet数, 默认的delay是3个cycle queueing, 79的network delay.