BookSim2.0 教程

本文是yz关于BookSim2.0的个人学习经验与教程。

1.介绍

什么是BookSim2.0

BookSim2.0 是周期正确的互联网络模拟器(A Cycle-Accurate Interconnection Network Simulator),被设计用来伴随William James Dally 等人出版的的书籍 Principles and Practices of INterconnection on Networks使用。
此后其功能不断得到扩展。当前的主要版本 BookSim 2.0 支持广泛的拓扑结构,例如网状、环面和扁平蝴蝶网络,提供多种路由算法并包括用于自定义网络路由器微架构的众多选项。1
对于片上网络(NoC)的初学者,阅读学习该书并用BookSim模拟器实践是一种很好的学习方式。本教程的深入程度限定在BookSim的安装,复现书中的图片以及完成章节后的习题。

相关文献资料

模拟器开发作者Nan Jiang等人2013年发表了一篇关于BookSim的文章2。Github库中中也有latex格式的用户手册,没有latex编辑器的朋友可以查看pdf版本用户手册。

2.安装BookSim

下载BookSim2.0库,进入booksim2-master/src目录,命令行输入make来构建模拟器。对于Windows用户,模拟器作者已经在Cygwin 1.7.18测试过了。linux用户应该对命令行更熟悉,本文在ubuntu20.04lts上进行测试。

3.使用BookSim与HelloWorld

第三章介绍BookSim的HelloWorld,让模拟器简单跑起来并输出结果。
src目录下,命令行输入 ./booksim [configfile] 即可运行模拟器,其中configfile是带有路径的配置文件,例如src/examples/torus88这个文件,是一个配置文件的示例。
运行Helloworld:我们先进入到booksim2-master/src 目录,命令行输入 ./booksim examples/torus88,即可看到一串输出。证明BookSim-2安装无误并且可以使用。
BookSim2.0 教程_第1张图片

使用BookSim并复现部分结果

对8-ary 2-mesh拓扑结构的网络进行DOM,ROMM,VAL,MAD路由算法的仿真。

网络结构

Torus/Mesh Networks

Torus 和 Mesh 网络可以由 k-ary和n-cubes定义,总共有N=kn个点。网络有n个维度(dimension),每个维度有k个节点。n=1时,则是环(rings);k=2(注意是k不是n),则是超方形(hypercubes)。
PPIN一书中图5.1展示了一些简单的网络结构。
BookSim2.0 教程_第2张图片
Mesh网络相比Torus,则是取消了每侧最远的两个节点之间的连线。
BookSim2.0 教程_第3张图片

路由算法

一个简单路由例子

即使以简单的8节点环状路由为例,每个packer只能选择2个方向中的一个,也有不少路由算法:
BookSim2.0 教程_第4张图片

1.贪婪:选最短路径的方向,如果路径长度相同,随机选一个。
2.均匀随机:相同概率,随机选一个、
3.加权随机:随机选择,但是概率的权重不是相同的:最短路径长度为 Δ \Delta Δ,选择短路径方向概率为1- Δ \Delta Δ/8,选择长路径概率为 Δ \Delta Δ. 以最短路径长度3为例,选择短路径方向概率为5/8,选择长路径方向概率为3/8。
4.自适应:选择信道负载最小的那个方向。

一个有意思的事情是,在tornado traffic pattern下,环状网络的最大吞吐量不是贪婪路由算法。PPIN书中提到2002年的博士资格测试中,90%的人选择了贪婪算法。实际的吞吐量表现见下表。BookSim2.0 教程_第5张图片

路由算法分类

确定性路由(Determinstic routing algorithms)

对于从出发点x到目的地y,总是选择同一条路径。该类路由算法忽视了路径的多样性,在负载均衡方面表现很差。但是实际情况中这类算法很常见,因为实现简单而且容易做到无死锁。

遗忘路由(Oblivious algorithms)

遗忘路由,或许也可以叫无记忆性路由(具体中文译名不清楚,欢迎指正),指的是选择路由策略与当下网络状态无关。例子:随机的路由算法。
此外,需要指出,确定性路由是遗忘路由的一个子集。

自适应路由

根据网络当前状态信息做出路由决策。信息可能包括节点或连接的状态,网络资源排队队列的长度,历史信道负载。

此外,还可以把贪婪路由称作最短(minimal/shortest path)路由算法,随机路由和自适应路由因为包含了非最短路径,称作非最短路由。

BookSim 2.0支持的路由

在routefunction.cpp中有支持的路由算法,也可以自定义。
原生支持的路由算法和网络如下图。可以看出,有的路由算法不支持(至少booksim不原生支持)部分拓扑结构。而大部分路由算法都支持mesh拓扑结构。例如,没有"romm_torus"。
BookSim2.0 教程_第6张图片

  • [1] BookSim2.0Github库
  • [2] Nan Jiang, Daniel U. Becker, George Michelogiannakis, James Balfour, Brian Towles, John Kim and William J. Dally. A Detailed and Flexible Cycle-Accurate Network-on-Chip Simulator. In Proceedings of the 2013 IEEE International Symposium on Performance Analysis of Systems and Software, 2013.

你可能感兴趣的:(片上网络NoC,算法,网络)