本系列的文章是我在学习NoC经典书籍:Principles and Practices of Interconnection Networks 以及相关的论文过程中所作的总结和归纳。在敦促自己建立更全面知识体系的同时,希望也能够帮助到对这一领域想作快速了解的同学。
文章目录
背景介绍
随着数字电路规模的不断增大,传统的总线型数据交换方式导致的数据传输速率低下,越来越成为限制性能提升的瓶颈。通过互联的片上网络进行各部件的数据交流开始普遍。
数字电路由三个基本部分组成:
- 逻辑(logic)
- 存储(memory)
- 通信(communication)
片上网络是什么
片上网络是数字电路中各子系统之间进行通信的一种手段。即在硬件层面上搭建类似于“计算机网络”的电路结构,进行各组成部分之间的数据交换。发展相对悠久的“计算机网络”中的诸多概念在片上网络中也能找到对应:如拓扑、路由、流控制等等。
可以先这样简单的理解:片上网络就是在数字电路中一个简化版的“网络”
连接网络的各组件抽象为terminal,互联网络负责各terminal之间通过channel传递数据。与更高维度的“计算机网络”相比,信道距离短、数据传输速率快是硬件层面的片上网络的根本特点。
在片上网络中,各terminal多为processor、memory这一级别的组件。
设计NoC时的考虑因素
和“计算机网路”类似,我们要根据用户实际场景来设计对应的片上网络。可以考虑的点如下:
- 连接网络的终端数(Terminal)
- 终端所需的峰值带宽(peak bandwidth)和平均带宽(average bandwidth)
- 延迟的要求(latency)
- 单条信息的长度的分布(message size)
- 交通模式(traffic pattern):指每个terminal发送数据的目标terminal的分布(就朝着一个目标terminal使劲发 还是 这个发几条那个发几条)
- 服务质量(quality of service):是否考虑信息优先级设置
- 可靠性(reliability):指消息能否正确可靠的发送到目的地。一般情况下要求100%的可靠性。
- 可用性(availability):指网络的可用且操作正确的时间占比。
一个典型的应用场景:Processor-Memory Interconnect
以下展示了两种连接processor和memory的互联网络。
- Dance-hall architecture
- Integrated-node architecture
其中第二种架构在现代的机器中更为常见。它将单个processor和单个memory通过communication swtich组成一个节点。这样processor既可以快速访问local memory,同时也能够通过互联网络访问其他memory。
在这种互联网络中传递的消息类型有以下四种:
- Read request
- Read reply
- Write request
- Write reply
根据他们各自的功能要求,将message格式分为如下两种。
在这里有必要区分message和packet的不同。message是在各接入网络的terminal 视角的数据格式,而packet是数据在网络中实际传输时的包格式。单个message可以切分为多个packet,加上协议的包头在网络中传输。这取决于互联网络中采用的协议。(比如为了简化网络中对于不等长message的数据交换,将它们切分为固定长度的packet在网络中传输,到达目的地之后再拼装起来)
NoC的组成部分
为了满足上述所提的各实际场景的不同需求,对NoC各部分的设计均要有所考虑。
为了提升通信质量(时延、带宽、能耗、电路面积),通信资源的共享可以作为互联网络的出发点。就和“计算机网络”一样,我们不会对任意两个Terminal进行点到点的连接,我们通过一系列共享channel和一系列共享的router完成互联。
拓扑结构(Topology)
拓扑结构即是指,一系列共享的router和channel的排列组合形式。
Torus topology:
Ring topology:
路由算法 (Routing)
路由算法决定了从出发地到目的地packet传递的路径。因此路由算法一定建立在Topology的基础上。
一个好的路由算法,能够适应可能面对的 traffic pattern,均衡各个channel的压力,保证通信质量。
流控制(Flow Control)
流控制指的是,当packet从源地址到目的地址的过程中,所经过路径上各种资源的分配过程。其中最关键的资源有两个:
- Channel:就是node之间通信的信道。
- Buffer:使用register或memory,让packet能暂存在node中。
一条很恰当的比喻:The topology determines the roadmap, the routing method steers the car, and the flow control controls the traffic lights, determining when a car can advance over the next stretch of road (channels) or when it must pull off into a parking lot (buffer) to allow other cars to pass.
流控制算法应该要做到,在分配buffer资源时,尽量避免因资源冲突导致的channel资源闲置。
比如当一个packet希望通过一条空闲的channel发走时,他却由于buffer占用被迫等待,这个buffer中的packet此时在等待另一条非空闲的channel。这便是flow control不希望看到的情景。
一个简单且有效的解决方法是,为将要选择从不同channel发走的packets,各自分配不同的buffer。这就好像在红绿灯路口分别设置左转、直行、右转车道,直行车辆和右转车辆不必因为向左走的路堵死了而无法直行和右转。
一个好的流控制策略应该做到公平且无死锁。它不应该造成一个packet无休止的等待下去。
以下列举了两种流控制策略的time-space图。
- Store-and-forward flow control
- Cut-through flow control
Cut-through方法因为将packet划分为flits,作为流控制的最小单位。因此对于Channel的利用率更高。
下一篇:NoC (Network on chip) 基础知识 (2) :片上网络的拓扑结构(Topology) 将从网络拓扑的基本概念开始介绍 NoC。