名家专栏 | 详说片上网络之五:网络分层模型在片上网络上的实现

2019-09-03 14:00:15 来源: 半导体行业观察

来源:内容来自「知乎」,作者:黄乐天,谢谢。

说的网络分层模型,想必现在但凡有点网络常识的学生都应该知道。 多年来通信专业的教育给我留下的最深刻的烙印就是我可以对ISO提出的OSI七层模型倒背如流: 从底层到上层依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 当然,正着也可以背下来: 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。 大家看,多么的顺畅。


玩笑开过,书归正文。 网络分层的思想是一个非常伟大的思想,可以说这是对通信这个过程的完美总结。 人类自从开始有了烽火狼烟、驿路快骑其实就在不自觉的实践分层模型。 而无论是OSI七层模型,还是后来TCP/IP的五层(四层)模型,其思想都是把网络通信的过程划分为不同的阶段,每个阶段在有一个对应的“操作”。 而“现代通信技术”只是把这些操作“电子化”和“计算机化”而已。

分层的模型中有两个基本的概念: “对等”和“服务” 所谓“对等”的概念是指一个通信实体中的某一层可以认为是和另外一个实体中的“对等”层在进行交互。 比如,A机器的传输层是在和B机器的传输层交互。 如果还不理解这一点可以把TCP协议的“三次握手”再拿出来复习复习。 而“服务”则是同一个实体内部不同层之间的交互过程,下层通过为上层提供“服务”来让上层获得一种“能力”,而上层基于下层提供的服务来完成本层的操作,进而为更上一层提供“服务”。

在我读本科那会,由于互联网方兴未艾,学校在专业设置上有意无意增加了很多“网络”方面的课程。 虽然我的本科专业叫“通信工程”,但学了很多名字带网络二字的课程。 有什么计算机通信网、局域网与城域网、宽带通信网、移动通信技术与网络、接入网技术、网络系统工程之类的。 如果加上不带网络而实际上就是在讲网络的什么交换原理、TCP/IP协议等,我上过的“网络”相关的课程估计有接近10门。 然而,这些课程的内容和质量……说实话,乏善可陈。 大部分课程热衷于讲解技术细节,而没有把网络架构、交换方式、分层设计思想这些真正的讲清楚。 上面我谈到的“对等”和“服务”的理解以及分层的意义,还是上研究生之后做了一个基于单片机的多路数据采集系统给搞明白了。 当年学完了这些课我就一个念头,最好这辈子别再碰这些鬼玩意,做做集成电路设计和信号处理多好。

所以读研究生的时候我选择了一个搞通信集成电路的实验室,研究生期间做的课题也是尽量和网络没有关系。 然而人生的际遇就是这样飘忽不定,机缘巧合之下我又开始搞片上网络了。 而且这还成为了我这些年来的主要研究方向。 这些课程对我后面的研究产生了有利和有害两方面的影响。 有利的影响在于多门课程反复熏陶构建出来的对于网络的“感觉”,不利的影响在于由于当年学习时候理解程度比较浅(总不能说是老师教学水平不行吧……)导致很多概念模糊不清甚至是错的。 2016年我还没有转到微电子来之前参加了通信学院的一次研究生复试面试,当有学生回答网络层的作用就是把数据封装好了给数据链路层,数据链路层的作用就是把数据封装好了给物理层并且其他同学(当时是群面)以后我就觉得至少到了2016网络与交换技术的教与学的问题依然很大。

上面扯了两段并不是为了凑字数,而是为了说明对于大部分人甚至就是学习通信/网络相关专业的人来说,对于网络和交换技术的掌握也是很成问题的。 而很多大部分集成电路设计方向的从业者并没有接受过比较完整和全面的网络与交换技术方面的学习,甚至连一门专门的课程都没有。 只是在学习微机原理这类课程的时候在讲到总线这部分的内容时接触到了一点点和传输有关的知识,并且还不是以通信/网络的视角去讲的。 因此大部分的从业者对于理解片上网络时存在非常严重的困难的。 在这里我们就需要简要的分析一下一个完整的网络中每一层到底需要干什么,但要理解到更加清晰还需要去学习更为详细的网络与交换技术方面的知识。

网络的最底层时物理层,物理层顾名思义就是和物理世界打交道的一层。 这一层的主要功能实现信息在“物理世界”的正常传输。 其主要的技术原理是利用多种物理现象(声、光、电、磁)来实现信号的发射与接收。 在正常通信系统中,一般依靠电和光两种物理现象作为载体,利用多种信号处理的手段把药传输的信息用物理信号表示出来并经过传输后再接受端加以提取和检测。 在经典的便是网络中,由于信号就是在正常的互联线上传输,传输的方式就是芯片内部的标准数字信号。 因此在经典片上网络中的物理层并不被大家关心。 但随着一些“新技术”如片上光传输、传输线调制、TSV/3D集成、片上无线通信的发展,也有很多新的信号传输的方法被运用到片上网络中。 这些新的传输方法由于使用到了特定的物理介质,因此必须要做相应的信号处理。 但由于片上这个特殊环境是高度集成化切资源有限的,目前很多新技术并解决不了微型化、集成化的问题。 而很多片上网络的研究者由于其自身知识体系的限制(通常为做通信、信号处理出身的研究者,上不知计算机体系结构,下不明集成电路原理与微电子器件),对于这些新兴的通信技术的理解往往是错的或者是不全面的。 这些人炮制出了大量的“水”文,由于这些文章的审稿人也不熟悉这些新技术的具体实现,所以导致了“水”文被大量发表。 这种现象过早的透支了大家对于片上网络中使用新传输技术的热情,最后落得一地鸡毛。

数据链路层则主要负责实现两个通信实体之间的“点对点”传输,在片上网络中就要解决NI到路由器之间,路由器和路由器之间的传输过程。 其本质上是对传输链路的利用和管理。 这中间就需要涉及到两个实体之间传输过程设计、流量控制方案设计、握手信号设计、数据缓存设计以及控制状态机设计等等。 当传输过程对端口、链路、缓存这样的资源产生竞争时,还需要设计仲裁机制和方案,这和传统通信网络中的MAC子层的设计道理时一样的。 这中间有大量的设计细节,而这些设计细节却一般又发不出论文(仲裁方案可以勉强发一发),所以很多人经常忽略这一层。 但实际上这一层的很多设计细节将严重影响电路性能,而这部分写得比较好的论文只能在JSSC上看到(ISSCC由于篇幅太短无法展开)。

网络层的主要“选路”的问题,也就是数据包从哪条路径传输的问题。 在片上网络中具体的事要解决数据包进入路由器以后从哪个输出端口出去的问题。 在网络层,片上网络已经足够抽象,具体的内部实现交换、传输的电路细节被很好的屏蔽了。 大家把大量的精力都集中到了选路的决策方法上,而这些方法依靠一些简单的算法过程就可以描述。 以我在通信学院多年的任教经验,通信专业的本科生是最“迷”路由算法的。 因为这个东西很好懂,又没有什么技术细节,通过自己的“想象”就可以“创造”出无数的“路由算法”。 虽然这些多半是没有用或者已经被人想过或者就是错的。 同样,片上网络的初学者也最喜欢“研究”路由算法。 每次有新的学生参加到研究里来,最喜欢和我聊的事就是他们又想出了“新的”路由算法。 每次都搞得我不堪其扰,最后只能在每次新人进组时粗暴的明确宣布作为新人不允许研究、讨论和片上网络路由算法有关的问题,不建议阅读和片上网络路由算法有关的文章。 到目前为止,片上网络的路由算法发表了很多,毕业了N多博士。 堪大用的却太少了。 一个基本的X-Y路由,即先让数据包沿着X方向走到目的地的同列再让数据包沿Y方向传输到目的地,在考虑到真实的电路性能和设计复杂度的情况下表现实际上超过大部分的路由算法。

传输层是为了保证信息能够被端到端的正确收发,在这点和数据链路层有点类似。 但是传输层是关注数据包从进入网络到离开网络的过程,把整个网络视为一个整体来加以运用。 在片上网络中,传输层的功能基本是在NI这个环节完成的。 包括了数据格式的转换、流量控制、差错控制等。

需要指出的是,在片上网络中,所有这些网络的功能实际上都是由具体的电路来实现的。 而片上网络和通信网络的区别也在于此: 片上网络具有“片上”属性。 对于用于通信网络的仿真器通常只是对于每一层的功能/过程进行仿真,因此只能算是一种“协议仿真器”。 对于片上网络的仿真则是需要有“电路仿真器”的特征才可以。 在片上网络设计中我们不但需要抽象的“协议分析”,还需要有具体的“电路设计”。 只有把网络中每一层的功能都合理的分配和映射到片上网络的具体功能电路中,才能真正的实现有意义的片上网络。

一张Intel公司早年发表的论文“SalihundamP , Jain S , Jacob T , et al. A 2 tb/s 64 mesh network for a single-chip cloud computer with dvfsin 45 nm cmos[J]. IEEE Journal of Solid-State Circuits, 2011, 46(4):757-766.”中的一个路由器架构和流水线抽象的图镇楼。 下面就先从这张图谈起。


继续谈谈网络分层模型与片上网络的映射关系,以便各位更好的理解片上网络。


在网络模型中,物理层是信息传输的基础和载体,主要作用是实现信号在物理介质上的可靠传输。 而要实现信号在物理介质上的可靠传输就涉及到了信号处理、编码原理、电子技术、电磁场与电磁波等多个领域的知识。 这部分知识其实挺庞杂的,可以说通信工程这个专业四年大半时间都在搞懂这个问题。 而剩下一小半时间则是在学习网络和交换技术。 由于这部分内容涉及太多,在这里就不详细展开了。 有兴趣的朋友可以去看看这本书: 《数字传输工程(第2版) (美)安德森 著,任品毅,冯兴乐 译》。

对于经典片上网络而言,其传输的是标准CMOS数字信号。 因此并不需要有太特殊的信号处理、编码技术以及器件技术。 使用普通的CMOS电路就可以完成对于信号的传输。 唯一需要考虑的就是在传输过程中由于电路本身的问题、信号的干扰、噪声等问题引入信号错误,因而需要引入纠错编码等容错设计技术。 当然,片上网络中引入错误的物理因素和普通的通信网络不同,纠错的方法和传统通信网络有非常大的区别。 我们小组在近5年来就是深入分析片上网络和传统通信网络纠错技术的不同,发表了一系列比较高水平的论文。 这个问题后面回专门开一期甚至几期来介绍。

而上面说到,一些“新技术”的片上网络使用了类似与光、无线、传输线、电磁耦合等传输方法。 在物理介质上就有了新的变化,因此这类片上网络就需要关注物理层,如何用物理载体和信号处理技术。 然后结合片上网络的特点做一些特定的网络架构、交换方法之类的。 这类技术我研究得比较少,所以我就不详细说了。

经典片上网络一般是从数据链路层开始研究的,而在片上网络中数据链路层是指两个实体之间的数据传送过程。 在这个层面已经脱离了“信号”的范畴,而进入了“数据”的范畴。 在片上网络中数据链路层是指如何把数据从某个实体(路由器/网络接口)中传送到另外一个实体中。 所以主要定义的是两个实体之间的交互过程和定义的信号时序。

经典路由器的流水级分析

先来看这个图,分成了多个流水级。 那么数据链路层对应到哪里呢? 对应了从第4级的输出到下一级的输入,这一级被称为Link Transfer。 那么就需要定义包传输的数据格式,两个路由器之间的握手信号以及其时序。 对于传统的通信网络而言,无论是无线/有线网络,在两个通信实体之间传递信号的延迟比较大。 但在经典片上网络中Link上的延迟实际上就是互连线延迟。 由于使用片上网络的目的就是“打断”长的互连走线,因此这部分的延迟其实并不突出(在错误注入方面也有类似的现象)。 而在这一环节引入延迟最大的因素在于输入缓冲的buffer的写入控制。 而片上网络中数据链路层的设计难点,其实也是围绕着输入缓冲的读写控制来展开的。 因此在片上网络中的“链路”这一概念是指从输出到输入缓冲这一部分硬件。

正如在网络分层模型中,在数据链路层一般被分为两个子层 : 逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议。 而对应在片上网络中则分别是对应两个功能: 流量控制和链路资源分配。 而这一切的根源又在于如何合理的利用好“链路”这一硬件资源。 在片上网络中,控制对于链路这一资源的使用是靠“仲裁电路”来实现的。 在经典的计算机/通信网络中,链路资源的分配很多时候是依靠“竞争-回退”这一机制来实现的。 当年学习N个网络类课程的时候,学了无数的协议。 但其实核心的这一点是很久以后才领悟到的。 在这一点上看,片上网络沿袭的并非经典的计算机/通信网络的那套机制而是继承了计算机系统内部总线的“请求-仲裁”机制。 这其实是因为经典的计算机/通信网络要面临一个“灵活组网”的问题。 在网络中需要考虑到新的网络节点/终端加入或者离开网络的情况。 这种灵活性在“无线自组织网络”中达到了最高要求。 而片上网络则是用于芯片内部互联的,在设计阶段可以有足够多的先验信息来实现定制化。

具体来说,片上网络对于链路控制是依靠Switch Arbiter这样一个仲裁电路来实现的。 在很多片上网络的论文里面,路由器的原理图是这样画的:

图1 常见的片上网络路由器原理图

图1是很多论文里都出现的一种介绍片上网络路由器的图。 这种图如果不是出现在综述类论文里,一般这个论文就不用怎么看了,对于真正的电路设计的参考意义太小。 长期受这种图的“毒害”会产生两个错误印象: 1.Crossbar是一个完整的整体,对于路由器的控制主要是“施加”在Crossbar上面的。 2.在路由器中Routing Computation 、 VC arbiter、Switch arbiter分别都是一个,通过他们来控制整个路由器的路由以及资源分配。 其实这种观念是对于硬件设计是极其错误的。

让我们回头来看Intel的这篇经典的论文“SalihundamP , Jain S , Jacob T , et al. A 2 tb/s 64 mesh network for a single-chip cloud computer with dvfsin 45 nm cmos[J]. IEEE Journal of Solid-State Circuits, 2011, 46(4):757-766.”

图2 A 2 tb/s 64 mesh network for a single-chip cloud computer with dvfsin 45 nm cmos中的路由器内部结构示意图

图2所展示的路由器内部结构图就比图1更加接近与真实的硬件电路结构,起码从图中可以看出来Routing Computing、VC Allocation这些控制单元是每个端口上独立有一个。 另外也把Crossbar内部给拆开了,是多个多路复用器而已。 独立的来看每一个多路复用器与一个输出端口寄存器相连,通过多路复用器来选择到底哪一个输入端口的可以数据可以被存入输入端口。 而多路复用器的控制端是和Switch Arbitration的输出连接在一起的。 换言之,是由Switch Arbitration的结果来断定哪个输入端口有权使用当前的输出端口。 从图2可以看出多个输入端口有信号线与Switch Arbitration连接,通过“请求-仲裁”的模式来分配输出端口的使用权。 而分配了输出端口的使用权,实际上也分配了整个从输出到下一个路由器输入端口的“链路”的使用权。 当然,这个图比较不好的一点是没有表现出来实际上witch Arbitration也是有多个的。 一个输出端口一个,对链路的使用权独立的仲裁。

如果单看Switch Arbitration这一块,把问题说的比较清楚的是MPSoC领域宗师级人物Luca Benini小组发的一篇论文“M. Kakoee, V. Bertacco, and L. Benini, “At-speed distributedfunctional testing to detect logic and delay faults in nocs,” IEEETransactions on Computers, vol. 63, no. 3, pp. 703–717, 2014.”:

图3 MPSoC一代宗师Luca Benini的论文中给出的控制通路和数据通路的示意图

请大家看看图3,请透过这张用word制作出来的简陋图片朴素外表下体验直击灵魂的震撼。 这张图深刻的反应了片上网络路由器中输入端口和输出端口之间、控制通路和数据通路之间的交互关系。 真正的大师,是不屑于用华丽的图片来装饰自己的论文(Luca Benini组很多论文的配图都惨不忍睹,但最近几年有所改善)。 输入端口(图中为West端口)通过RC(Routing Computing)来计算被存储在输入缓冲器里的包要发往哪个输出端口,计算完毕以后向对应端口(图中为East 端口)的East Arbiter发出请求信号。 East Arbiter根据当前的请求信号,判定到底哪个输入端口有权使用East端口把数据包发出去。 从而通过自身的输出作为East Output Mux的选择端控制信号,来选择到底哪个输入端口的数据可以被存到输出寄存器中。 这里仅仅以了一组输入到输出的通路为例,其它的通路其实都按照类似的模式工作。 当然,East Arbiter的输出还会作为一个反馈信号给到输入端口的控制状态机。

这篇论文绝对是一篇值得所有有志于研究片上网络的同学仔细阅读的论文。 当年我看到这篇论文以后有一种醍醐灌顶,瞬间被打通了任督二脉的感觉。 这篇论文对我有两点颠覆性的作用: 首先,我在头脑中真正的形成了片上网络路由器硬件结构的概念,此前由于受通信网络影响太深,一直想不清楚片上网络硬件应该是怎么样的; 其次,我发现了这篇论文一个不足,而恰恰我那时候的研究已经进入到死胡同,但如果将我们当时提的路由算法反用到这篇论文提到的测试/可测性设计场景中,却又柳暗花明又一村。 于是,从那时起,我就误打误撞的进入到了可靠性/可测性设计这个领域,并且形成了近年来我看家的学术研究方向。

前面絮絮叨叨的讲了这么多,就是讲了一个数据链路层中的介质访问控制如何对应到片上网络中。 而数据链路层还有逻辑链路控制的功能,包括了传输可靠性保障和控制、 数据包的分段与重组、 数据包的顺序传输。 在片上网络中这三点其实都有所实现,但核心是控制包的传送过程,确保数据包在链路阻塞的时候不会被继续传送而导致数据/控制错误等。 这个问题是依靠在路由器之间传递握手信号/信令来实现的。 同时在片上网络中的数据包也存在分段传送的控制问题。 但这部分的内容比较复杂,涉及到很多协议和电路协同设计的思想。 而在具体设计协议的时候,又大量参考了并行计算机内部互联网络的一些设计思想。 所以这部分内容很多,完全可以单开一讲来说。 今天就先不谈了。

那么网络层的功能在片上网络上映射就简单多了。 网络层主要做的作用是“寻路”,也就是确定数据包应该发往哪个输出端口。 继续从图3可以看出,网络层的功能其实就是通过一个叫RC(Routing Computing)的硬件单元就可以实现。 这个硬件单元根据数据包中所包含的一些信息(通常存子啊包头里),根据路由规则/算法计算得出接下来的数据包需要发往。 和计算机网络/通信网络不同,由于片上网络的结构相对固定且对于资源消耗敏感。 因此并不适用于过于复杂和自适应的路由规则/算法。 片上网络的路由规则/算法一般要求可以写成逻辑表达式和基本的算术运算的组合。

当RC按照路由规则计算出包要往哪里发以后,会产生一个请求信号送到对应的输出端口的Switch Arbiter中。 后面的过程上面已经说过一遍了,在这里就不重复了。

由于网络层或者说路由算法仅仅和片上网络的一个功能模块对应,因此成为“研究人员”尤其是是新手研究人员的“最爱”。 在如果有一个成熟的片上网络仿真器,那么如果研究网络层或者说路由就只需要修改RC这一个模块所对应的规则。 而路由规则嘛,是可以根据不同情况相出各种各样的花样的。 所以很多新手研究人员对此“乐此不疲”,但很多研究几乎没有实际的价值。

最后就到了传输层,传输层的目的是保证数据端到端的可靠传输。 在片上网络中传输层是依靠片上网络接口和及其驱动程序来完成的。 从主机这一侧看过去,完成了对于某一个特定接口的访问和读写。 网络接口将整个片上网络抽象为了一个面向本地总线的特定接口,而驱动程序则是完成了对于这个接口的读写过程。

一个片上网络接口的基本抽象如下图所示:

图4 片上网络接口功能示意图

从图4可以看出,片上网络从处理单元(PE)这一侧看过去,是通过总线对一个特定的接口访问。 依次经过编码、数据打包、异步FIFO缓存、电压变换被传送到便片上网络路由器中。 接收的过程是一个逆过程。 以异步FIFO为界,可以把片上网络和PE划分成不同的电压域。

在基本的片上网络接口上,主要依靠软件来实现传输层的各项功能。 而如果考虑要设计功能更强大的网络接口,也可以考虑把纠错、重传、流量控制等功能做成专门的电路模块放在网络接口里。

继续再往上就是会话层、表示层和应用层,其实都已经脱离了片上网络研究的范畴,本质上已经是在PE上运行的软件。

用一幅图来归纳一下一下片上网络和网络模型的对应关系:

图5 本小组在ISCAS2017上口头报告PPT中的一张示意图

图5是我们在ISCAS2017上做口头报告的用的一张图解释片上网络与网络模型之间的对应关系。 大家可以对照着再回顾本文慢慢体会。 这个图是报道了我们当时设计的一种具备“跨层设计”思想的片上网络纠错电路。 以后有机会我们再来详细介绍一下这篇论文。 顺便说一下,我们这个方向研究的论文的图和设计思想多次被“擦边抄袭”和过度引用。 犯事都是南亚某大国的大学,在此对他们表示强烈的鄙视。

最后,提几个片上网络的特点。

1.数据链路层是片上网络的基础,链路相关的电路设计和链路资源是片上网络的基础。

2.在片上网络中,链路资源本身(互连线、输入缓冲、交换矩阵用的多路复用器)以及针对链路资源的控制电路(Switch Arbiter)占了片上网络路由器的主要面积。

3.链路资源的分配,依靠的是“请求-仲裁”的方式。 因此片上网络路由器本质上应该分为输入和输出两个部分。 链路资源的分配过程其实是由不同的输入在竞争输出。

4.网络层的功能就是对应到片上网络路由器中的一个路由计算单元,主要的目的是计算保存在输入缓冲中的包应该从哪个输出端口被送出去。

5.传输层的功能在片上网络中是由片上网络接口和与之匹配的驱动软件共同承担的。

从以上的总结可以看出,片上网络虽然和网络模型之间有对应关系,但是有自己的特点。 后面我们会对此来做详细分析,并介绍我们如何抓住这些特点做出了自己的研究工作的。

内容回顾:
名家专栏 | 详说片上网络之一:片上多核系统与片上网络的发展
名家专栏 | 详说片上网络之二:片上多核系统的互联需求
名家专栏 |片上互联的需求与片上网络的研究意义——详说片上网络之三
名家专栏 |片上网络研究的难与易——详说片上网络之四

黄乐天
电子科技大学电子科学与工程学院,副教授, 电子科技大学博士。主要研究方向为计算机系统架构与系统级芯片设计,已在IEEE Transactions on Computers (CCF A 类期刊)等高水平期刊和CODE+ISSS、FCCM、ASPDAC、ISCAS等顶级会议上发表高水平论文50 余篇,申请专利11项,出版学术著作1部。参加工作以来主持和参与过国家自然科学基金项目重点项目、装备预研重点项目、国家科技重大专项、国家“863”重点研究计划等国家级重点科研项目,曾荣获Altera公司(Intel PSG)金牌培训师、 第七、第八、第十二届研究生电子设计大赛优秀指导教师、电子科大网络名师等称号。先后担任过国际会议ICICM 2016年Publicity Chair, ISOCC 2016年Session Co-Chair、APCCAS2018 Special Session Chair等学术职务。



*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。


今天是《半导体行业观察》为您分享的第2056期内容,欢迎关注。

推荐阅读

官宣,长江存储64层3D NAND闪存量产

一文看懂ADC芯片,国产如何突围?

大家都在关注的SiC是什么?


半导体行业观察

半导体第一垂直媒体

实时 专业 原创 深度


识别二维码 ,回复下方关键词,阅读更多

射频|台积电| 联发科 |封测 |士兰微| SIC 存储器 |AMD


回复 投稿 ,看《如何成为“半导体行业观察”的一员 》

回复 搜索 ,还能轻松找到其他你感兴趣的文章!

责任编辑:Sophie

相关文章

半导体行业观察
摩尔芯闻

热门评论