用于系统总线的防死锁方法及装置的利记博彩app

文档序号:6584022阅读:261来源:国知局
专利名称:用于系统总线的防死锁方法及装置的利记博彩app
技术领域
本发明涉及通讯领域,尤其涉及一种用于系统总线的防死锁方法及装置。
背景技术
目前,较为成熟的SoC(System on Chip,片上系统)内部总线的互联协议有 AXI (Advanced extensible Interface,先进可扩展接口)、OCP (开放核协议)等。在基于 AXI总线协议的SoC架构中,通过Interconnect (总线互连模块)的Bus Matrix (总线矩 阵)实现多Master (主设备)对多Slave (从设备)的数据流交换。AXI协议通过数据携带 的ID号进行数据跟踪,AXI的htercormect根据地址控制信号判断目的出口,但是数据是 按照其携带的序号来顺序传输的,即对于同一个Master的同一个ID号的数据必须按顺序 传输。同时,AXI协议支持Outstanding (挂起)、Out-of-Order (乱序)的传输模式。所以,对于不同的Master来说,如果它们采用相同的ID号发送数据,为了区别 不同的Master,一般都将ID号被修改成Master的编号和原ID号的组合。这样,对于 Interconnect来说,不同Master发出的相同的ID号的数据,由于ID号被修改了,是可以乱 序传输的。而对于Slave来说,接收到不同Master的相同ID号的数据,也可以按照乱序传 输。但是,由于Slave对于来自不同Master的相同ID号的数据的传输处理方式,使得 在AXI总线运用过程中,可能出现死锁,图1是现有技术中AXI总线原理图,在图1中,mi_x_sj是表示Masteri到Slave j的读命令,χ表示ID号。如图所示,Masterl发送了两个ID号均为O的命令,第一个发送 给Slavel,第二个发送给Slave2,由于ID相同,所以要按照顺序传输,这里的顺序传输是由 与Masterl直接连接的Slave接口 1来保证的,Slave接口 1需要先将Slavel返回的数据 传输给Master 1,再将Slave2返回的数据传输给Master 1,先传输所有发送给Slavel数据, 再传输发送给Slave2的数据,也就是说,先传输图中的ml_0_sl命令,再传输图中ml_0_S2 命令。同理,图中Master2也发送了两个ID号均为O的命令,需要先传输图中的m2_0_s2命 令,再传输图中的m2_0_sl命令,图中的Slave接口 1和Slave接口 2均需要修改数据ID, 以区分不同Master以相同ID传输的命令,即产生ml_00_sl、ml_00_s2、m2_10_s2、m2_10_ si。所以,在htercormect内部,以及Slave均会以不同ID号的方式来处理所接收的命令, 也就是可以乱序传输。此时,如果Slavel乱序优先处理了第二个命令m2_10_sl,而Slave2 也乱序优先处理了第二个命令ml_00_s2,这样就造成了 Slavel和Slave2返回的数据互相 等待,并且Slavel和Slave2的数据总线都得不到释放,造成系统死锁。目前,主要有以下两种方法解决上述原因造成的系统总线死锁1、连接 Interconnect 的 Master 不进行 Outstanding 传输机制,也就是说,Master 本身发起第二个访问操作之前,必须等到前一个访问操作完成。2、单一 Slave传输机制,也就是说,在hterconnect连接的Slave接口上增加判 断逻辑,如果一个Master访问不同的Slave,那么hterconnect在内部把该Master的第二个操作访问挂起,也就是不接收该访问,直到前一个访问完成才接收第二个访问。由于同 一个Master在同一个时刻不能同时访问不同的Slave,所以可以防止AXI系统出现死锁问题。但是,上述两种都存在系统的性能损失问题,而且灵活性也不高。例如,对于第 一种防死锁方法,由于一个Master本身不支持Outstanding传输机制,这样影响了 AXI 协议本身的传输性能;而对于第二种方法,图2所示为一个Master访问不同Slave的情 况,Master2前面的一个idO的操作访问Slave2,而后一个idl操作要访问Slavel,可是 hterconnect将后面的idl操作给阻止了,这时Master2后面的idl、id2操作都发不出来, 而如果此时idO操作对应在Slave2的操作队列很深,且优先级很低,这样Master2后面的 操作就会阻塞很久,它的Outstanding特性也发挥不出来。综上所述,可知现有技术中长期以来一直存在防止系统发生死锁的技术影响系统 总线性能的问题,因此有必要提出改进的技术手段,来解决上述问题。

发明内容
有鉴于现有技术中存在防止系统发生死锁的技术影响系统总线性能的问题,本发 明的主要目的在于提供一种用于系统总线的防死锁方法及装置。根据本发明实施例的用于系统总线的防死锁方法包括总线互联模块接收来自主 设备的操作命令;总线互联模块判断已下发但未完成的操作命令的参数与接收的操作命令 的参数之间是否存在造成系统死锁的条件,若判断的结果为是,则阻塞接收的操作命令。优选地,在总线互联模块接收来自主设备的操作命令之前,该方法进一步包括总 线互联模块存储已下发但未完成的操作命令的参数。优选地,操作命令的参数至少包括传输序号和访问的从设备。优选地,造成系统死锁的条件进一步包括已下发但未完成的操作命令的传输序 号与接收的操作命令的传输序号相同;和已下发但未完成的操作命令访问的从设备与接收 的操作命令访问的从设备不同。优选地,总线互联模块阻塞接收的操作命令进一步包括总线互联模块不向相应 的从设备发送接收的操作命令,并缓存该接收的操作命令。优选地,系统总线为支持先进可扩展接口总线协议的系统总线。根据本发明实施例的用于系统总线的防死锁装置包括接收模块,用于接收来自 主设备的操作命令;判断模块,用于判断已下发但未完成的操作命令的参数与接收模块接 收的操作命令的参数之间是否存在造成系统死锁的条件;阻塞模块,用于若判断模块的判 断结果为是,则阻塞接收模块接收的操作命令。优选地,该装置进一步包括存储模块,其与判断模块连接,用于存储已下发但未 完成的操作命令的参数。优选地,操作命令的参数包括传输序号和访问的从设备。优选地,判断模块进一步包括第一判断子模块,用于判断存储模块存储的已下发 但未完成的操作命令的传输序号与接收模块接收的操作命令的传输序号是否相同;和第二 判断子模块,用于判断存储模块存储的已下发但未完成的操作命令访问的从设备与接收模 块接收的操作命令访问的从设备是否不同。
与现有技术相比,根据本发明的上述技术方案,判断存在可能发生系统死锁的条 件时,阻塞刚接收到的操作命令,有效地防止了系统总线死锁现象的发生,较好地保证了系 统总线的性能。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是现有技术中AXI总线原理图;图2是现有技术中防死锁方法运用示意图;图3是根据本发明实施例的防死锁方法的示意图;图4是根据本发明实施例的防死锁方法的优选处理流程的示意图;图5是根据本发明的实施例的防死锁装置的框图;图6是根据本发明的实施例的防死锁装置的优选结构的框图。
具体实施例方式本发明的主要思想主要在于,本发明通过在接收到一个操作命令时,首先判断该 操作命令是否会与之前已经发出但尚未完成的目标操作命令之间发生死锁,如果上述的两 个操作命令存在死锁的条件,就认为可能发生死锁,则需要将刚接收到的操作命令阻塞,以 截断可能发生死锁的条件。因此,防止了死锁现象的产生。本发明技术方案通过灵活的判 断机制,可以灵活处理死锁发生的条件,一方面能够有效防止系统总线死锁现象发生;同时 在整体上保证操作命令的处理速度,能够较好的保证系统总线的性能,在实际应用中,该系 统总线优选地为支持AXI总线协议的系统总线。为使本发明的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本 发明作进一步地详细说明。根据本发明的实施例,提供了 一种用于系统总线的防死锁方法。图3是根据本发明实施例的用于系统总线的防死锁方法的示意图,如图3所示,该 方法包括步骤S302,总线互联模块接收来自主设备的操作命令;操作命令的参数至少包 括传输序号和访问的从设备。步骤S304,总线互联模块判断已下发但未完成的操作命令的参数与接收的操作命 令的参数之间是否存在造成系统死锁的条件,若判断的结果为是,则阻塞接收的操作命令。总线互联模块在接收到来自主设备的操作命令后,不进行下发至与该操作命令对 应的从设备的处理,而先进行步骤S304的处理,S卩,判断已下发但未完成的操作命令的参 数与接收的操作命令的参数之间是否存在造成系统死锁的条件,也就是说,判断该新接收 的操作命令与之前已下发但未完成的操作命令之间是否会造成系统死锁。若判断结果为是 (即,会造成系统死锁),则阻塞该新接收的操作命令,不向相应的从设备发送该操作命令, 而缓存该操作命令,直到与该操作命令会造成系统死锁的操作命令(即上文的已下发但未 完成的操作命令)完成,才执行发送该操作命令到相应的从设备的处理;若判断结果为否 (即,不会造成系统死锁),则直接执行发送该操作命令到相应的从设备的处理。
上述的判断功能是本发明的重要内容,存在造成系统死锁的条件是已下发但未 完成的操作命令的传输序号与接收的操作命令的传输序号相同,并且访问的从设备不同, 即,同一主设备采用同一序号的操作命令访问不同的从设备。当判断满足上述条件时,判断 存在造成系统死锁的条件,从而执行阻塞该新接收的操作命令的处理。需要说明的是,总线互联模块存储已下发到从设备的操作命令的参数,当从设备 完成该操作命令时,则删除存储的该操作命令或者将该完成的操作命令设置为无效,保证 不影响系统的正常运行。因此,根据上述处理,本发明实施例通过灵活的判断机制判断存在可能发生系统 死锁的条件时,阻塞刚接收到的操作命令,使得死锁不会发生。下面结合图4详细描述本发明实施例。图4是根据本发明实施例的防死锁方法的 优选处理流程的示意图,如图4所示,该方法包括以下步骤步骤S402,总线互联模块接收到主设备发送给从设备的操作命令,该操作命令可 以包括但不限于以下信息序号、访问的从设备、操作命令对应的地址、操作命令的具体操作。步骤S404,获取总线互联模块新下放的目标操作命令的序号及访问的从设备。总线互联模块判断所接收到的操作命令与已下发但未完成的目标操作命令是否 会造成系统死锁。本实施例中判断是否会造成系统死锁的具体技术为步骤S406,首先通过从存储模块获取已下发目标操作命令的序号及访问的从设 备,以判断主设备是否已有下发但未完成的目标操作命令,如果是,则执行步骤S408 ;否则 执行步骤S414,并结束流程。步骤S408,接着,再判断主设备新下发的传输是否与已有下发但未完成的目标操 作命令传输序号相同,如果相同,则进一步执行步骤S410,否则执行步骤S414,并结束流程。步骤S410,继续判断主设备新下发的传输是否与已有下发但未完成的目标操作命 令所访问的从设备不同,如果不同,则存在可能发生死锁的条件,执行步骤S412,否则执行 步骤S414,并结束流程。步骤S412,总线互联模块阻塞所接收到的操作命令,包括但不限于以下实现方式 将总线互联模块中发送该操作命令到相应从设备准备信号(axready)置为无效,并将接收 到的操作命令进行缓存。步骤S414,总线互联模块通过通道接口将操作命令发送到相应的从设备,并结束 流程。根据本发明的实施例,还提供了一种用于系统总线的防死锁装置。该装置可以设 置在总线互联模块中,也可以单独设置。图5是根据本发明的实施例的用于系统总线的防死锁装置的框图,图6是根据本 发明的实施例的用于系统总线的防死锁装置的优选结构的框图。如图5所示,根据本发明的实施例的装置包括接收模块10,判断模块20,阻塞模 块30。其中,接收模块10,用于接收来自主设备的操作命令;判断模块20,用于判断接收 模块10接收的操作命令的参数与已下发但未完成的操作命令的参数是否相同,操作命令的参数包括但不限于传输序号和访问的从设备;阻塞模块30,用于若判断模块20的判断 结果为是,则阻塞接收模块接收的操作命令。如图6所示,在图5所示结构的基础上,该装置进一步包括存储模块40,其与判 断模块20连接,用于存储已下发但未完成的操作命令的参数供判断模块20调用。判断模 块20进一步包括第一判断子模块210,用于判断存储模块40存储的已下发但未完成的操 作命令的传输序号与接收模块10接收的操作命令的传输序号是否相同;和第二判断子模 块220,用于判断存储模块40存储的已下发但未完成的操作命令访问的从设备与接收模块 10接收的操作命令访问的从设备是否相同。另外,基于完整性考虑,根据本发明实施例的装置还可以包括发生模块50,其与 判断模块20连接,用于将操作命令发送到相应的从设备。综上所示,根据本发明上述技术方案,通过判断存在可能发生系统死锁的条件时, 阻塞刚接收到的操作命令,有效地防止了系统总线死锁现象的发生,较好地保证了系统总 线的性能。以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人 员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、 等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种用于系统总线的防死锁方法,其特征在于,包括 总线互联模块接收来自主设备的操作命令;所述总线互联模块判断已下发但未完成的操作命令的参数与接收的操作命令的参数 之间是否存在造成系统死锁的条件,若判断的结果为是,则阻塞接收的所述操作命令。
2.根据权利要求1所述的方法,其特征在于,在所述总线互联模块接收来自所述主设 备的操作命令之前,所述方法进一步包括所述总线互联模块存储已下发但未完成的操作命令的参数。
3.根据权利要求1或2所述的方法,其特征在于,所述操作命令的参数至少包括传输 序号和访问的从设备。
4.根据权利要求3所述的方法,其特征在于,所述造成系统死锁的条件进一步包括 已下发但未完成的操作命令的传输序号与接收的操作命令的传输序号相同;和已下发但未完成的操作命令访问的从设备与接收的操作命令访问的从设备不同。
5.根据权利要求1所述的方法,其特征在于,所述总线互联模块阻塞接收的所述操作 命令,进一步包括所述总线互联模块不向相应的从设备发送接收的操作命令,并缓存该接收的操作命令。
6.根据权利要求1所述的方法,其特征在于,所述系统总线为支持先进可扩展接口总 线协议的系统总线。
7.一种用于系统总线的防死锁装置,其特征在于,包括 接收模块,用于接收来自主设备的操作命令;判断模块,用于判断已下发但未完成的操作命令的参数与所述接收模块接收的操作命 令的参数之间是否存在造成系统死锁的条件;阻塞模块,用于若所述判断模块的判断结果为是,则阻塞所述接收模块接收的操作命令。
8.根据权利要求6所述的装置,其特征在于,进一步包括存储模块,其与所述判断模块连接,用于存储已下发但未完成的操作命令的参数。
9.根据权利要求7或8所述的装置,其特征在于,所述操作命令的参数包括传输序号 和访问的从设备。
10.根据权利要求9所述的装置,其特征在于,所述判断模块进一步包括第一判断子模块,用于判断所述存储模块存储的已下发但未完成的操作命令的传输序 号与所述接收模块接收的操作命令的传输序号是否相同;和第二判断子模块,用于判断所述存储模块存储的已下发但未完成的操作命令访问的从 设备与所述接收模块接收的操作命令访问的从设备是否不同。
全文摘要
本发明公开了一种用于系统总线的防死锁方法及装置,其中,该方法包括总线互联模块接收来自主设备的操作命令;总线互联模块判断已下发但未完成的操作命令的参数与接收的操作命令的参数之间是否存在造成系统死锁的条件,若判断的结果为是,则阻塞接收的操作命令。通过本发明,能够有效地防止系统总线死锁现象的发生,较好地保证系统总线的性能。
文档编号G06F13/36GK102103560SQ200910225470
公开日2011年6月22日 申请日期2009年12月16日 优先权日2009年12月16日
发明者李正卫 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1