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安装无误并且可以使用。
BookSim2Helloworld

使用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展示了一些简单的网络结构。
PPIN一书的图5.1
Mesh网络相比Torus,则是取消了每侧最远的两个节点之间的连线。
PPIN一书的图5.2

路由算法

一个简单路由例子

即使以简单的8节点环状路由为例,每个packer只能选择2个方向中的一个,也有不少路由算法:
在这里插入图片描述

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

一个有意思的事情是,在tornado traffic pattern下,环状网络的最大吞吐量不是贪婪路由算法。PPIN书中提到2002年的博士资格测试中,90%的人选择了贪婪算法。实际的吞吐量表现见下表。在这里插入图片描述

路由算法分类

确定性路由(Determinstic routing algorithms)

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

遗忘路由(Oblivious algorithms)

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

自适应路由

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

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

BookSim 2.0支持的路由

在routefunction.cpp中有支持的路由算法,也可以自定义。
原生支持的路由算法和网络如下图。可以看出,有的路由算法不支持(至少booksim不原生支持)部分拓扑结构。而大部分路由算法都支持mesh拓扑结构。例如,没有"romm_torus"。
在这里插入图片描述

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值