一种防止总线死锁的方法及装置制造方法及图纸

技术编号:18350175 阅读:66 留言:0更新日期:2018-07-01 23:13
本发明专利技术实施例提供一种防止总线死锁的方法,该方法包括建立动态路由表;根据动态路由表判断总线是否会产生死锁;若总线会产生死锁,确定并阻塞造成死锁的写地址命令。本发明专利技术实施例同时还提供一种防止总线死锁的装置。

【技术实现步骤摘要】
一种防止总线死锁的方法及装置
本专利技术涉及高性能芯片设计领域,尤其涉及一种防止总线死锁的方法及装置。
技术介绍
AXI(AdvancedeXtensibleInterface)总线协议是由ARM公司提出一种高性能高带宽的片上总线协议,在片上系统(system-on-chip,SOC)中被广泛采用。AXI总线采取读-写分离,地址/控制与数据分离的传输机制,通过定义读地址通道(AR),读数据通道(R),写地址通道(AW),写数据通道(W),写响应通道(B)五个独立的传输通道,很大程度上提高了传输效率。在基于AXI总线协议的SOC中,多主设备(Master)和多从设备(Slave)之间常通过总线互联Interconnect模块(也称为总线矩阵,即BusMatrix)实现数据交换。SOC常常由多个Interconnect模块级联构成。Interconnect模块兼容AXI协议所支持的Outstanding传输访问和乱序(Out-of-Order,OoO)访问机制,这在一方面提升了传输吞吐率,但在另一方面,也增加了总线死锁的风险,尤其是在多级Interconnect模块级联的总线系统中。在AXI传输中,Master用ID号来标记每一次传输,Interconnect模块通过扩展每一个Master的ID号以区分不同的Master,对于同一个Master用同一个ID号发出不同的传输,不同的传输必须按照顺序进行,而Slave可以以OoO的方式返回不同ID号的传输。这种机制在多Master同时访问多Slave时可能形成握手信号之间的循环依赖(CyclicDependence),从而造成死锁,由于这类死锁是由于Slave在响应通道的乱序机制引起的,故将这类死锁称为“反向通道死锁”。在现有的Interconnect模块级联组成的系统中,反向通道死锁可以通过单Slave(SingleSlave)或相同ID仅可用于单一Slave(SingleSlavePerID)的机制进行规避,其中,SingleSlavePerID机制在CN102103560A中有相应的描述。同时,而在Interconnect模块级联组成的系统中,虽然AXI协议的outstanding传输访问机制允许Master无需等待上一笔写数据命令完成,就可以发出下一笔写数据命令;但实际中的绝大多数Slave并不支持写间插(writeinterleave)操作(事实上,AXI4.0协议也取消了对writeinterleave的支持),即对于同一个slave,只有当一次传输的写数据接收完毕后,才被允许接收下一次传输的写数据。换句话说,尽管一个Master可以同时在AW通道发起多个地址/控制命令来协商对多个Slave的访问权,但在一个传输周期内,一个Slave只允许和唯一的,被赋予了访问权的Master在W通道进行数据交换。由于以上机制的作用,在多Master多Slave数据交换中,还存在着另一种死锁的风险,即“前向通道死锁”。图1为现有技术一种典型的“前向通道死锁”示意图。在起始时刻T0,Master0向Slave1和Slave0依次并连续发出了AW01和AW00两笔写地址命令;同时,Master1向Slave0和Slave1依次并连续发出了AW10和AW11两笔写地址命令;由于Slave接口0和Master接口0之间的路径延迟小于SLAVE接口1和Master接口0之间的路径延迟,所以,AW00后发先至,先于AW10抵达Slave0,并获得对Master接口0的访问权,此时,Master接口0打开W通道,等待写数据命令W00;同理,由于Slave接口1和Master接口1之间的路径延迟小于Slave接口0和Master接口1之间的路径延迟,AW11后发先至,先于AW01到达Slave1,并获得对Master接口1的访问权,此时Master接口1打开W通道,等待W11;因为在时间顺序上晚于W01,W00必须等待W01发送完毕才可以发往Master接口0;而此时,由于AW11占据了对Slave1的访问权,W01却只能等待W11发送完毕,才可以发往目的地Master接口1;同理,因为在时间顺序上晚于W10,W11必须等待W10发送完毕才可以发往目的地Master接口1;而此时由于AW00仍然占据对Slave0的访问权(W00一直处于等待状态),W10只能等待W00发送完毕才可以发往目的地Master接口0,于是,循环等待的局面形成。图2为图1产生死锁的循环依赖关系示意图,如图2所示,W00等待W01,W01等待W11,W11等待W10,W10等待W00,总线传输陷入死锁。为了防止AXI总线前向通道死锁,Interconnect模块采取了单一有效Slave(SingleActiveSlave,SAS)的机制。SAS机制规定interconnect模块的Slave接口只有当前一笔传输的写数据全部发送完毕之后,才能发起下一笔的写地址命令,从而避免了“当后一笔写传输的写地址命令抵达目的地后,前一笔的写数据仍然阻塞在Slave接口”这一形成前向死锁的必要条件。因此,在多级Switch结构的Interconnect模块以及多个Interconnect模块级联构成的系统中,常常采用单/每从设备ID(SingleProviderID,SPI)+SAS的机制,用来同时防止可能出现的前向与反向AXI总线死锁。SAS机制是以牺牲outstanding传输访问机制中AW通道的传输效率为代价的;对于某些Slave设备而言,更早的收到AW写地址命令(即使此时写数据并未抵达),可以将写响应操作的开销流程提前进行,比如双倍速率同步动态随机存储器(DoubleDataRate,DDR)控制器,更早的收到AW写地址命令后可以提前进行行/列交错计算,从而减少写数据在W通道握手的时间。从这个意义上来讲,SAS防死锁机制在一定程度上减少了总线传输的数据吞吐量并且降低了总线传输的数据效率。而对于常常需要将多个Interconnect模块进行级联来建构完整的总线互联的SOC,这无疑增加了各个主从设备路径延迟的差异性,也增加了前向总线死锁发生的概率。而增加这种前向总线死锁发生概率的路径延迟差异,往往并不体现在各Interconnect模块的内部通路上,而是体现在多个Interconnect模块的连接关系上;为了能够完全避免前向死锁,采取的办法常是在所有的Interconnect模块的Slave接口上添加SAS机制。而在实际的应用场景中,大量主从设备之间的数据交换是不存在死锁风险的,而分布式SAS节点的总线互联,由于无法识别出正在发生的访问是否具有潜在死锁风险,只是不加区分的对AW命令进行多次阻塞-放行-阻塞的操作,更加降低了总线的传输效率。因此,如何有效地识别出正在发生的具有潜在死锁风险的写命令,从而及时阻塞造成死锁的写命令是现如今亟待解决的技术问题。
技术实现思路
有鉴于此,本专利技术实施例提供一种防止总线死锁的方法及装置,以能够有效地识别出正在发生的具有潜在死锁风险的写命令,从而及时阻塞造成死锁的写命令。本专利技术实施例的技术方案是这样实现的:一种防止总线死锁的方法,包括:建立动态路由表,其中,所述动态路由表用来记录主设本文档来自技高网
...
一种防止总线死锁的方法及装置

【技术保护点】
1.一种防止总线死锁的方法,其特征在于,所述方法包括:建立动态路由表,其中,所述动态路由表用来记录主设备Master发出的但未到达从设备Slave的写地址命令的状态信息;根据所述动态路由表判断总线是否会产生死锁;若所述总线会产生死锁,确定并阻塞造成死锁的所述写地址命令。

【技术特征摘要】
1.一种防止总线死锁的方法,其特征在于,所述方法包括:建立动态路由表,其中,所述动态路由表用来记录主设备Master发出的但未到达从设备Slave的写地址命令的状态信息;根据所述动态路由表判断总线是否会产生死锁;若所述总线会产生死锁,确定并阻塞造成死锁的所述写地址命令。2.根据权利要求1所述的方法,其特征在于,所述根据所述动态路由表判断总线是否会产生死锁包括:根据Master与Slave之间的关系生成关系矩阵;其中,若所述Master向所述Slave发送写地址命令,所述关系矩阵的对应位置为第一标识,若所述Master不向所述Slave发送所述写地址命令,所述关系矩阵的对应位置为第二标识;根据所述动态路由表和所述关系矩阵判断总线是否会产生死锁。3.根据权利要求2所述的方法,其特征在于,所述根据所述动态路由表和所述关系矩阵判断总线是否会产生死锁,包括:判断所述关系矩阵是否是死锁矩阵;其中,所述死锁矩阵为所述关系矩阵中能够使所述总线产生死锁的矩阵;若所述关系矩阵是所述死锁矩阵,判断所述死锁矩阵是否是最简死锁矩阵;其中,所述最简死锁矩阵为所述死锁矩阵中能够使所述总线产生死锁,并且形式最简单的矩阵;若所述死锁矩阵不是所述最简死锁矩阵,将所述死锁矩阵转换成所述最简死锁矩阵;根据所述动态路由表和所述最简死锁矩阵判断所述总线是否会产生死锁。4.根据权利要求3所述的方法,其特征在于,所述判断所述关系矩阵是否是死锁矩阵,包括:判断所述关系矩阵的每一行和每一列是否分别存在至少2个所述第一标识;若所述关系矩阵的每一行和每一列分别存在至少2个所述第一标识,确定所述关系矩阵是所述死锁矩阵;若所述关系矩阵的一行或一列不存在至少2个所述第一标识,确定所述关系矩阵不是所述死锁矩阵。5.根据权利要求4所述的方法,其特征在于,所述若所述关系矩阵是所述死锁矩阵,判断所述死锁矩阵是否是最简死锁矩阵,包括:若所述关系矩阵是所述死锁矩阵,判断所述死锁矩阵的每一行和每一列是否均存在2个所述第一标识;若所述关系矩阵的每一行和每一列均存在2个所述第一标识,确定所述死锁矩阵是所述最简死锁矩阵;若所述关系矩阵的一行或一列存在多于2个所述第一标识,确定所述死锁矩阵不是所述最简死锁矩阵。6.根据权利要求5所述的方法,其特征在于,所述若所述死锁矩阵不是所述最简死锁矩阵,将所述死锁矩阵转换成所述最简死锁矩阵,包括:若m×k阶死锁矩阵不是所述最简死锁矩阵,根据所述m×k阶死锁矩阵得到个i×i阶子矩阵;其中,m、k均为大于1的整数,l=min(m,k),i=2、3…l;从所述个i×i阶子矩阵中筛选出i×i阶死锁矩阵;判断所述i×i阶死锁矩阵是否是所述最简死锁矩阵;若所述i×i阶死锁矩阵不是所述最简死锁矩阵,将所述i×i阶死锁矩阵转换成所述最简死锁矩阵。7.根据权利要求6所述的方法,其特征在于,所述若m×k阶死锁矩阵不是所述最简死锁矩阵,根据所述m×k阶死锁矩阵得到个i×i阶子矩阵,包括:若m×k阶死锁矩阵不是最简死锁矩阵,在所述m×k阶死锁矩阵中选择i行和i列的数,从所选择的i行和i列的数中选取同时包含在所述i行和i列中的数并生成所述i×i阶矩阵;选取个所述i×i阶矩阵,得到所述个i×i阶矩阵。8.根据权利要求6所述的方法,其特征在于,所述若所述i×i阶死锁矩阵不是所述最简死锁矩阵,将所述i×i阶死锁矩阵转换成所述最简死锁矩阵,包括:若所述i×i阶死锁矩阵不是所述最简死锁矩阵,将所述i×i阶死锁矩阵中存在多于2个所述第一标识的行或列中多余的所述第一标识置位成所述第二标识,使所述i×i阶死锁矩阵的每一行和每一列均存在2个所述第一标识,得到所述最简死锁矩阵。9.根据权利要求3所述的方法,其特征在于,所述写地址命令的状态信息包括源接口的接口名、目的接口的接口名、第一时序收敛寄存器片的信息和第二时序收敛寄存器片的信息,其中,所述第一时序收敛寄存器片的信息为所述写地址命令从所述源接口到达所述目的接口的传输路径中需经过的时序收敛寄存器片的信息,所述第二时序收敛寄存器片的信息为当前时刻所述写地址命令已经过的时序收敛寄存器片的信息,所述源接口是与发送所述写地址命令的所述Master连接的Slave接口,所述目的接口是与接收所述写地址命令的所述Slave相连接的Master接口。10.根据权利要求9所述的方法,其特征在于,所述根据所述动态路由表和所述最简死锁矩阵判断所述总线是否会产生死锁,包括:根据所述最简死锁矩阵和所述动态路由表获取所述Master向所述Slave发送所述写地址命令的发送时刻;根据所述最简死锁矩阵和所述动态路由表获取所述Master发送的所述写地址命令到达所述Slave的路径中的延时;根据所述写地址命令的发送时刻和所述路径中的延时判断所述Master与所述Slave之间的关系是否满足死锁特征;其中,所述死锁特征为第一Master先向第一Slave发送第一写地址命令,后向第二Slave发送第二写地址命令;第二Master先向所述第二Slave发送第三写地址命令,后向所述第一slave发送第四写地址命令;并且所述第二写地址命令先于所述第三写地址命令到达所述第二Slave;所述第四写地址命令先于所述第一写地址命令到达所述第一Slave。若所述Master与Slave之间的关系满足死锁特征,确定所述总线会产生死锁。11.根据权利要求10所述的方法,其特征在于,所述根据所述最简死锁矩阵和所述动态路由表获取所述Master向所述Slave发送写地址命令的发送时刻,包括:根据所述最简死锁矩阵在所述动态路由表中获取所述写地址命令的第二时序收敛寄存器片的信息;获取当前时刻的时刻信息;根据所述当前时刻的时刻信息和所述第二时序收敛寄存器片的信息,计算所述Master向所述Slave发送写地址命令的发送时刻。12.根据权利要求10所述的方法,其特征在于,所述根据所述最简死锁矩阵和所述动态路由表获取所述Master发送的所述写地址命令到达所述Slave的路径中的延时,包括:根据所述最简死锁矩阵在所述动态路由表中获取第一时序收敛寄存器片的信息;根据所述第一时序收敛寄存器片的信息计算所述Master发送的所述写地址命令到达所述Slave的传输路径中的延时。13.根据权利要求12所述的方法,其特征在于,所述根据所述写地址命令的发送时刻和所述路径中的延时判断所述Master与所述Slave之间的关系是否满足死锁特征,包括:判断所述第一Master向所述第一Slave发送所述第一写地址命令的发送时刻是否小于所述第一Master向所述第二Slave发送所述第二写地址命令的发送时刻;判断所述第二Master向所述第二Slave发送所述第三写地址命令的发送时刻是否小于所述第二Master向所述第一Slave发送的所述第四写地址命令的发送时刻;判断所述第二写地址命令到达所述第二Slave的到达时刻是否小于所述第三写地址命令到达所述第二Slave的到达时刻;判断所述第四写地址命令到达所述第一Slave的到达时刻是否小于所述第一写地址命令到达所述第一Slave的到达时刻;若所述第一Master向所述第二Slave发送所述第二写地址命令的发送时刻大于所述第一Master向所述第一Slave发送所述第一写地址命令的发送时刻,且所述第二写地址命令到达所述第二Slave的到达时刻小于所述第三写地址命令到达所述第二Slave的到达时刻;并且,所述第二Master向所述第一Slave发送所述第四写地址命令的发送时刻大于所述第二Master向所述第二Slave发送所述第三写地址命令的时刻,且所述第四写地址命令到达所述第一Slave的时刻小于所述第一写地址命令到达所述第一Slave的时刻;确定所述Master与Slave之间的关系满足死锁特征。14.根据权利要求1所述的方法,其特征在于,所述方法根据所述动态路由表判断总线是否会产生死锁,包括:根据所述动态路由表判断Mast...

【专利技术属性】
技术研发人员:刘毅
申请(专利权)人:深圳市中兴微电子技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1