基于特殊空槽的片上网络防死锁方法、装置及芯片与流程
本技术实施例涉及半导体领域,更具体地涉及一种基于特殊空槽的片上网络防死锁方法、装置及芯片。
背景技术:
1、随着chiplet与多裸片(die)架构的发展,片上系统多采用片上互联网络(networkon chip,noc)实现各功能模块之间的互连。环形(ring)总线是noc的常用拓扑结构,其通过环形链路连接多个环站(ring stop,rs)节点,在走线复杂度与访问延迟之间取得折中,常用作中等规模系统的总线互联网络。多die架构下,不同die内部可分别采用独立的ring总线,并经由环站上的桥接端口(bridge port)通过裸片间互联(die-to-die,d2d)首尾桥接,形成由多条ring总线构成的互联环。
2、在无缓存(bufferless)ring总线结构中,环站主通路不设缓存,仅在发送与接收方向设置临时缓存,环上传输的流控单元(flow control unit,flit)借助空槽(slot)逐拍向前传递。当flit到达目的节点而该节点当拍无法接收时,该flit继续沿环向前绕行(即偏转,deflect)。由于环上slot资源高度共享,一旦slot被某一类flit长期占满,发送侧flit便无法上环,由此埋下死锁隐患。当多条ring总线通过bridge port桥接形成互联环时,跨ring访问的flit存在两类死锁风险:其一,任意两条ring总线彼此对向发送时,双方跨ringflit分别占满各自ring的slot,形成跨ring对冲死锁。其二,多条ring总线同向流动形成环路时,各ring的跨 ring flit沿环依次占满对应ring的slot,形成首尾相接的环路死锁。两类死锁的实质均是跨ring flit之间形成资源循环等待,任何一方均无法率先获得可用的slot。针对上述死锁问题,现有处理方式通常通过增加主通路缓存、增设虚拟通道或引入复杂仲裁逻辑来打破循环等待,但会引入较大的硬件面积与逻辑开销,并可能造成正常工作时的带宽与延迟损失。而依赖整体复位或丢弃flit的方式则会影响系统可用性与数据完整性。
3、综上,如何在较小硬件代价下解除多ring互联环中的noc死锁,同时不丢失flit、不影响正常工作性能,是亟待解决的技术问题。
技术实现思路
1、本技术实施例提供一种基于特殊空槽的片上网络防死锁方法、装置及芯片,用于在环形总线的每个传输方向上保留仅允许目的节点不是桥接端口的流控单元占用的特殊空槽,使桥接端口的发送缓存在有限时间内获得上环机会,在不增加环站主通路缓存和虚拟通道的前提下,解除多条环形总线经桥接端口首尾桥接形成的总线互联环中的跨环对冲死锁与环路死锁。
2、第一方面,本技术实施例提供一种基于特殊空槽的片上网络防死锁方法,所述方法应用于由多条环形总线通过桥接端口首尾桥接形成的总线互联环,所述方法包括:
3、在每条所述环形总线的每个传输方向上,将至少一个用于暂存流控单元的空槽标记为特殊空槽,使标识所述特殊空槽的标志位随所述空槽在所述环形总线上流动;所述特殊空槽允许目的节点不属于所述桥接端口的流控单元占用;
4、获取待上环的流控单元的目的节点标识,根据所述目的节点标识与当前环形总线所连接的各环站节点的对应关系,确定所述流控单元在当前环形总线上的下环节点,并在所述下环节点为所述桥接端口的情况下,确定所述流控单元的目的节点为桥接端口;
5、读取经过所述流控单元所在环站节点的空槽的标志位,根据所述标志位确定当前空槽是否为所述特殊空槽;
6、在当前空槽为所述特殊空槽、且所述流控单元的目的节点为所述桥接端口的情况下,禁止所述流控单元占用当前空槽,使所述流控单元在发送缓存中等待,直至经过的空槽为非特殊空槽或所述目的节点不是所述桥接端口;
7、在所述特殊空槽处于空闲状态的情况下,将所述桥接端口的发送缓存中的流控单元注入所述特殊空槽,使所述桥接端口的发送缓存释放出空闲表项,并通过所述空闲表项接收相邻环形总线经所述桥接端口转发的跨环流控单元,解除各条环形总线之间的资源循环等待,所述资源循环等待包括跨环对冲死锁与环路死锁。
8、在一个实施方式中,所述确定所述流控单元的目的节点为桥接端口,包括:
9、解析所述流控单元的报文头,从所述报文头中获取所述目的节点标识;
10、将所述目的节点标识与当前环形总线的本环节点标识范围进行比较;
11、在所述目的节点标识属于所述本环节点标识范围的情况下,确定所述流控单元的目的节点为本环内的环站节点,所述流控单元在当前环形总线上的下环节点为所述本环内的环站节点;
12、在所述目的节点标识不属于所述本环节点标识范围的情况下,确定所述流控单元为跨环流控单元,将所述跨环流控单元在当前环形总线上的下环节点确定为所述桥接端口,并确定所述跨环流控单元的目的节点为桥接端口;其中,所述本环节点标识范围由所述当前环形总线所连接的各环站节点的节点标识构成。
13、在一个实施方式中,所述禁止所述流控单元占用当前空槽,包括:
14、确定待上环的流控单元所在的环站节点是否为挂接所述桥接端口的环站节点;
15、在所述环站节点不是挂接所述桥接端口的环站节点的情况下,将当前空槽为所述特殊空槽的第一条件与所述流控单元的目的节点为所述桥接端口的第二条件进行逻辑与运算,在第一条件和第二条件同时成立的情况下禁止所述流控单元占用当前特殊空槽;
16、在所述环站节点为挂接所述桥接端口的环站节点的情况下,不判断当前空槽是否为所述特殊空槽,在当前空槽处于空闲状态的情况下,允许所述流控单元占用当前空槽并上环。
17、在一个实施方式中,所述将至少一个用于暂存流控单元的空槽标记为特殊空槽,包括:
18、确定当前环形总线上挂接所述桥接端口的环站节点的位置;
19、在当前环形总线的第一传输方向上,选择与挂接所述桥接端口的环站节点相隔预设跳数的空槽作为目标空槽,并将所述目标空槽的标志位置为有效;
20、在当前环形总线的第二传输方向上,按照与所述第一传输方向上已标记的特殊空槽在所述环形总线上位置相对的原则确定目标空槽,并将所述目标空槽的标志位置为有效,使所述第一传输方向的桥接端口与所述第二传输方向的桥接端口在时间上获得均匀的上环机会,其中,所述第二传输方向与所述第一传输方向相反,所述预设跳数根据所述环形总线上空槽的分布设定。
21、在一个实施方式中,所述使标识所述特殊空槽的标志位随所述空槽在所述环形总线上流动,包括:
22、在所述片上网络的复位阶段或初始化阶段,通过配置寄存器写入所述特殊空槽在所述环形总线上的位置信息,或者按照硬件固化的预设规则确定所述位置信息;
23、根据所述位置信息,在所述环形总线开始传输流控单元之前,将对应位置的空槽的标志位置为有效;
24、在所述环形总线的每一传输拍次,使所述标志位与所述空槽同步向前传递一个环站节点,并将所述标志位提供至当前经过的环站节点,作为所述环站节点执行上环判断的输入;
25、在所述片上网络再次复位后,重新获取所述位置信息并重新将对应位置的空槽的标志位置为有效,所述标志位用一位有效状态表示。
26、在一个实施方式中,所述解除各条环形总线之间的资源循环等待,包括:
27、在各条所述环形总线上的非特殊空槽均被跨环流控单元占用的情况下,使所述跨环流控单元因目的节点为本环的桥接端口而无法占用本环的特殊空槽,使本环的特殊空槽保持空闲状态或仅承载目的节点为本环内环站节点的流控单元;其中,占用本环的特殊空槽的流控单元的目的节点位于本环内,在有限拍次内下环,使本环的特殊空槽在有限时间内恢复空闲状态;
28、在本环的特殊空槽所承载的流控单元下环之后,将本环的桥接端口的发送缓存中队头的流控单元注入本环的特殊空槽,使本环的桥接端口的发送缓存释放出空闲表项;
29、通过所述空闲表项接收相邻环形总线经所述桥接端口转发的跨环流控单元,使所述相邻环形总线的接收缓存释放出空闲表项,并使所述相邻环形总线上的跨环流控单元下环;
30、沿所述总线互联环的桥接方向,逐条所述环形总线重复执行所述注入与所述接收,直至各条所述环形总线上的跨环流控单元均到达各自的目的节点。
31、在一个实施方式中,所述在所述下环节点为所述桥接端口的情况下,确定所述流控单元的目的节点为桥接端口之后,还包括:
32、统计所述桥接端口的发送缓存中流控单元的等待拍次,以及跨环流控单元在当前环形总线的当前传输方向上所占用的空槽比例;
33、在所述等待拍次大于第一阈值、或所述空槽比例大于第二阈值的情况下,增加当前传输方向上标记为所述特殊空槽的空槽数量;
34、在所述等待拍次小于第三阈值且所述空槽比例小于第四阈值的情况下,减少当前传输方向上标记为所述特殊空槽的空槽数量,并使当前传输方向上标记为所述特殊空槽的空槽数量不小于一;
35、按照调整后的空槽数量,更新对应空槽的标志位。
36、在一个实施方式中,所述总线互联环由三条所述环形总线通过三个所述桥接端口首尾桥接形成,每条所述环形总线上挂接两个所述桥接端口;所述确定所述流控单元的目的节点为桥接端口,包括:
37、确定当前环形总线上挂接的所述桥接端口的数量以及各所述桥接端口所在的环站节点;
38、在所述流控单元的下环节点为所述两个桥接端口中任一桥接端口的情况下,确定所述流控单元的目的节点为桥接端口,并禁止所述流控单元占用当前环形总线上的特殊空槽。
39、第二方面,本技术实施例提供一种基于特殊空槽的片上网络防死锁装置,具有实现对应于上述第一方面提供的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。
40、在一个实施方式中,所述基于特殊空槽的片上网络防死锁装置包括:
41、标记模块,用于在每条所述环形总线的每个传输方向上,将至少一个用于暂存流控单元的空槽标记为特殊空槽,并使标识所述特殊空槽的标志位随所述空槽在所述环形总线上流动;所述特殊空槽允许目的节点不属于所述桥接端口的流控单元占用;
42、确定模块,用于获取待上环的流控单元的目的节点标识,根据所述目的节点标识与当前环形总线所连接的各环站节点的对应关系,确定所述流控单元在当前环形总线上的下环节点,并在所述下环节点为所述桥接端口的情况下,确定所述流控单元的目的节点为桥接端口;
43、识别模块,用于读取经过所述流控单元所在环站节点的空槽的标志位,根据所述标志位确定当前空槽是否为所述特殊空槽;
44、注入控制模块,用于在当前空槽为所述特殊空槽、且所述流控单元的目的节点为所述桥接端口的情况下,禁止所述流控单元占用当前空槽,并使所述流控单元在发送缓存中等待;以及在所述特殊空槽处于空闲状态的情况下,将所述桥接端口的发送缓存中的流控单元注入所述特殊空槽,使所述桥接端口的发送缓存释放出空闲表项,并通过所述空闲表项接收相邻环形总线经所述桥接端口转发的跨环流控单元,解除各条环形总线之间的资源循环等待,所述资源循环等待包括跨环对冲死锁与环路死锁。
45、第三方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括指令,当所述指令在计算设备上运行时,使得所述计算设备执行如第一方面所述的基于特殊空槽的片上网络防死锁方法。
46、第四方面,本技术实施例提供一种计算设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现第一方面所述的基于特殊空槽的片上网络防死锁方法。
47、第五方面,本技术实施例提供一种芯片,所述芯片包括多条环形总线、设置于各所述环形总线上的多个环站节点、以及将相邻的所述环形总线首尾桥接的桥接端口,所述多条环形总线通过所述桥接端口形成总线互联环;
48、每条所述环形总线的每个传输方向上设置有至少一个标记为特殊空槽的空槽,标识所述特殊空槽的标志位随所述空槽在所述环形总线上流动;
49、所述环站节点用于在当前经过的空槽为所述特殊空槽、且待上环的流控单元的目的节点为所述桥接端口的情况下,禁止所述流控单元占用当前空槽,使所述特殊空槽保持可供所述桥接端口的发送缓存中的流控单元占用的状态;
50、所述芯片被配置为执行第一方面所述的基于特殊空槽的片上网络防死锁方法。
51、相较于现有技术,本技术实施例不通过增加环站主通路缓存、增设虚拟通道或引入复杂仲裁逻辑来打破跨环流控单元之间的循环等待,而是在每条环形总线的每个传输方向上保留一个准入受限的特殊空槽。由于目的节点为桥接端口的流控单元被禁止占用特殊空槽,占用特殊空槽的流控单元的目的节点均位于本环内,在有限拍次内即可下环,特殊空槽由此在有限时间内恢复空闲状态。桥接端口的发送缓存中的流控单元不受特殊空槽的准入限制,能够占用恢复空闲的特殊空槽上环,发送缓存随之释放出空闲表项,可以接收相邻环形总线经桥接端口转发的跨环流控单元,相邻环形总线的接收缓存也随之释放出表项。沿总线互联环的桥接方向逐条环形总线重复上述过程,两条环形总线彼此对向发送形成的对冲死锁与多条环形总线同向流动形成的环路死锁均被逐段打通,全部流控单元在有限时间内到达各自的目的节点,既不需要整体复位,也不丢弃流控单元。并且,每条环形总线每个传输方向上受到准入限制的空槽仅为一个或少量,本环内访问的流控单元以及目的节点不是桥接端口的流控单元仍可占用特殊空槽,因此正常工作时的带宽与访问延迟基本不受影响。标记特殊空槽仅需在空槽上增加随空槽流动的标志位,上环判断仅需在原有的空槽空闲判断基础上增加标志位比较、目的节点比较及两者的逻辑与运算,硬件面积与时序开销较小,便于在无缓存环形总线的既有流控逻辑上实现。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com