CN101308477A - 系统总线的防死锁方法、装置及片上系统 - Google Patents
系统总线的防死锁方法、装置及片上系统 Download PDFInfo
- Publication number
- CN101308477A CN101308477A CNA2008101106760A CN200810110676A CN101308477A CN 101308477 A CN101308477 A CN 101308477A CN A2008101106760 A CNA2008101106760 A CN A2008101106760A CN 200810110676 A CN200810110676 A CN 200810110676A CN 101308477 A CN101308477 A CN 101308477A
- Authority
- CN
- China
- Prior art keywords
- order
- operational order
- deadlock
- object run
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明的实施例公开了一种系统总线的防死锁方法、装置及片上系统,涉及片上系统技术领域,解决了现有防死锁技术会较大程度地影响系统总线的性能的问题。本发明实施例将可能产生死锁的操作命令阻塞,并且通过发送一个提高优先级命令,加快从设备对之前发出的并且引起死锁根源的操作命令的处理速度。本发明实施例主要用在需要总线的系统或设备中,如AXI系统总线等。
Description
技术领域
本发明涉及系统总线技术领域,特别涉及防止片上系统内部的互联总线死锁的方法及装置,以及片上系统。
背景技术
较为成熟的SoC(SoC,System on Chip,片上系统)内部总线的互联协议有AXI(先进可扩展接口)、OCP(开放核协议)等。在基于AXI总线协议的SoC架构中,通过Interconnect(总线互联模块)的Bus Matrix(总线矩阵)实现多Master(主设备)对多Slave(从设备)的数据流交换。AXI协议通过数据携带的ID号进行数据跟踪,AXI的Interconnect根据地址控制信号判断目的出口,但是数据是按照其携带的序号来顺序传输的,即:对于同一个Master的同一个ID号的数据必须按顺序传输。同时,AXI协议支持Outstanding(挂起)和Out-of-Order(乱序)的传输模式。其中,Out-of-Order包括读数据乱序(Out-of-Order Read)、写数据间插(Write Interleave)、以及读和写操作交互。
不论是读数据还是写数据,对于Slave来说,都需要向Master返回一个数据(或者是读数据,或者是写响应)。上述的乱序传输是指对于同一个Slave不同ID号的数据可按照乱序返回。
所以,对于不同的Master来说,如果它们采用相同的ID号发送数据,为了区分,一般都在将ID号修改成Master的编号和原ID的组合,这样,对于Interconnect来说,不同的Master发出的相同的ID号的数据,由于ID号被修改了,是可以乱序传输的。而对于Slave来说,接收到不同Master的相同ID的数据,也可以按照乱序传输。
由于上述Slave对于不同Master的相同ID数据的处理方式,使得在AXI总线运用过程中,可能出现死锁,如图1所示,其中,mi_x_sj是表示Master i到Slave j的读命令,x表示ID号。
图1中,Master1发送了两个ID号均为0的命令,第一个命令发给Slave1,第二个命令发给Slave2。由于ID号相同,所以要按照顺序传输,这里的顺序传输是指有与Master1的直接连接的Slave接口1来保证的,slave接口1需要先将Slave1返回的数据传输给Master1,再将Slave2返回的数据传输给Master1,所以先传输发送给Slave1数据,再传输发送给Slave2的数据。也就是说,先传输图中的m1_0_s1命令,再传输m1_0_s2。同理,图中的Master2发送的两个ID号均为0的命令,需要先传输m2_0_s2命令,再传输m2_0_s1。
图1中的Slave接口1和Slave接口2均需要修改数据的ID,以区分不同Master以相同ID传输的命令。即:slave接口1将ID为0的命令修改成ID为00的命令,slave接口2将ID为0的命令修改成ID为10的命令。即生成如下四个命令:m1_00_s1、m1_00_s2、m2_10_s2、m2_10_s1。所以,在interconnect内部,以及Slave均会以ID不同的方式来处理接收到的命令,也就是可以乱序传输。
由于Slave1从interconnect内部的master1的接口接收到两个ID号不同的命令m1_00_s1和m2_10_s1,Slave1可以乱序处理接收到的命令。
假设slave1乱序优先处理了第二个命令m2_10_s1,优先返回根据m2_10_s1得到的数据给master2。但由于Master2与interconnect连接的slave2的接口连接,使得Slave1的根据m2_10_s1得到的数据在通过slave2的接口返回给Master2之前,需要等到Slave2已经根据m2_10_s2得到的数据先返回给Master2。
如果此时的情况是Slave2乱序处理后,优先返回根据m1_00_s2得到数据给Master1,那么在Slave2无法成功返回根据m1_00_s2得到数据给Masterl之前,暂时不能返回根据m2_10_s2得到数据给Master2。但是Slave2要成功通过slave1的接口返回根据m1_00_s2得到的数据给Master1,也需要等到slave1已经根据m2_10_s1得到的数据返回完成后才可以达到,及需要完成前面的假设目标的完成。这样就造成了Slave1和Slave2返回的数据互相等待,并且slave1和slave2的数据总线都得不到释放,造成系统死锁。
目前,解决上述原因造成的系统死锁的方法,主要有如下两种:
1、在Interconnect连接Master的Slave口上增加判断逻辑,如果一个Master使用同一个ID号访问不同的Slave,那么它在内部把该Master的第二个访问挂起,也就是不接收该访问,直到前一个访问完成才接收第二个访问。
2、如果同时有两个Master使用相同的ID号同时访问不同的Slave,那么它将阻塞后一个Master的操作。直到前一个Master的操作完成,才启动后一个Master的操作。
上述第一种防死锁方法,由于同一个Master在同一时间不能通过同一ID访问不同的Slave,所以可以有效的防止AXI系统出现死锁问题。但是,这将损失系统性能。图2表示的是一个Master发出相同ID号访问不同Slave的情况,Master2前面的一个id0的操作访问Slave2,而后面的一个id0的操作要访问的Slave1,可是Interconnect把后面的id0操作给阻止了,以防死锁的发生。这时,Master2后面的id1,id2的操作都不可能发出来了。而如果Slave2处理Master2的优先级很低,那么Master2发送的id0的操作就会被Slave2放在它的处理队列的下面,如图2所示,id0的操作在Slave2中队列的最下面。如果Slave2的队列很深,Master2就将被阻塞很久。这样,Master2就相当于给冻结了,它的outstanding特性也发挥不出来。
上述第二种防死锁方法也存在性能损失的问题。如图3所示,Master2分别发送两个id0的操作到Slave1和Slave2,id0到Slave2的操作是在前面的,而id0到Slave1的操作是在后面的。而这时Master1也有两个id0操作需要分别发送到Slave1和Slave2。Interconnect根据判断死锁规避原则,将把Master1的操作阻塞,直到Master2发送到Slave2所有id0操作完成。而Master2发送到Slave2的id0操作可能在Slave2中阻塞很久,使得Master1就被阻塞很久,所以这里就严重限制了Master1的处理速度。
第二种防死锁方法还有可能出现如下缺陷:如图4所示,Master2先发出id0的操作给Slave2,然后再发出id0的操作给Slave1,因为优先级的关系,Slave2暂时没有处理Master2发来的id0的操作,而Slave1已经处理了Master2发来的id0的操作,但是,需要等到Slave2的数据返回到Master2,才能将Slave1的数据返回Master2。造成其他Master,如Master1,Master0都不能正常访问Slave1。
发明内容
本发明实施例提供了一种系统总线的防死锁方法、装置及片上系统,在防止系统发生死锁的同时,能够较好的保证总线的性能。
为达到上述目的,本发明的实施例采用如下技术方案:
一种系统总线的防死锁方法,包括:
接收操作命令;
判断所接收到的操作命令与已下发但未完成的目标操作命令是否会造成系统死锁;
若会造成系统死锁,则阻塞向从设备下发所接收到的操作命令;
下发提高优先级命令,以加快所述目标操作命令的处理。
一种系统总线的防死锁装置,包括:
存储模块,用于存储已下发的目标操作命令;
接收模块,用于接收操作命令;
判断模块,用于判断接收模块接收到的操作命令与存储模块中的目标操作命令是否会造成系统死锁;
阻塞模块,用于在所述判断模块判断会造成系统死锁时,阻塞下发所接收到的操作命令;
发送模块,用于在所述判断模块判断会造成系统死锁时,下发提高优先级命令,以加快所述目标操作命令的处理。
一种片上系统,包括用于与总线互联模块连接的从设备,所述从设备包括:
存储单元,用于存储未完成的操作命令;
接收单元,用于接收提高优先级命令,所述提高优先级命令中包括操作命令的序号;
查找单元,用于在所述存储单元中根据提高优先级命令中的序号查找未完成的目标操作命令;
优先级修改单元,用于提高查找单元在存储单元中查找到的目标操作命令的优先级。
由上述技术方案所描述的本发明的实施例,在接收到一个操作命令时,首先去判断该操作命令,是否会于之前已经发出但尚未完成的目标操作命令发生死锁,如果上述的两个操作命令存在发生死锁的条件,就认为可能发生死锁,则需要将刚接收到的操作命令阻塞,以截断可能发生死锁的条件,防止了死锁现象的产生,同时本发明实施例还需要发送一个提高优先级命令,以加快目标操作命令的处理速度。这样可以加快解除发生死锁的条件,以减少刚接收到的命令被阻塞的时间,从而在整体上保证操作命令的处理速度,能够较好地保证片上系统总线的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中AXI总线的原理图;
图2为现有技术中第一种防死锁方法应用的示意图;
图3为现有技术中第二种防死锁方法运用的示意图;
图4为现有技术中第二种防死锁方法另一种运用的示意图;
图5为本发明实施例1中防死锁方法的流程图;
图6为本发明实施例1中防死锁装置的框图;
图7为本发明实施例1中系统的从设备示意图;
图8为本发明实施例2中防死锁方法的流程图;
图9为本发明实施例2中防死锁装置的框图;
图10为本发明实施例2中传输Dummy操作命令的时序图;
图11为本发明实施例2中系统的从设备示意图;
图12为本发明实施例2中DDRC的结构示意图。
具体实施方式
本发明实施例在存在可能发生死锁的条件时,阻塞刚接收到的操作命令,并发送提高优先级命令,加快已发出但未完成的目标操作命令的处理速度,在截断发生死锁条件的同时,充分利用系统总线的性能。
下面结合附图对本发明系统总线的防死锁方法、装置及从设备的实施例进行详细描述。
实施例1:
如图5所示,本实施例中系统总线的防死锁方法包括如下步骤:
501、总线互联模块接收到主设备发送的操作命令,在本实施例中,该操作命令可以包括序号、访问的从设备、操作命令对应的地址以及操作命令的具体操作。
502、总线互联模块判断所接收到的操作命令与已下发但未完成的目标操作命令是否会造成系统死锁。本步骤中判断是否会造成系统死锁的具体技术为:当同一个主设备采用同一个序号的操作命令访问不同的从设备,或者不同的主设备采用同一个序号的操作命令分别访问不同的从设备时,则在后续从设备对操作命令进行处理时,可能造成系统死锁。
本步骤中,如果判断得出不存在可能发生死锁的条件,则执行步骤503;否则执行步骤504。
503、如果上述步骤502中不存在可能发生死锁的条件,则通过相应的接口将操作命令发送到相应的从设备中,并结束流程。
504、如果上述步骤502中存在可能发生死锁的条件,则总线互联模块阻塞所接收到的操作命令,本实施例中实现方式为:将总线互联模块中发送该操作命令到相应从设备准备信号(axready)置为无效,并将接收到操作命令进行缓存。
505、总线互联模块通过地址通道向目标操作命令对应的从设备下发提高优先级命令,以加快该从设备对所述目标操作命令的处理速度。
本实施例还提供一种系统总线的防死锁装置,如图6所示,该装置包括:存储模块61、接收模块62、判断模块63、阻塞模块64和发送模块65。
在存储模块61存储了已下发到从设备的操作命令,当从设备完成了操作命令时,需要将已完成的操作命令置为无效,或者删除。接收模块62用于接收主设备发送的操作命令,该操作命令中至少包括序号和访问的从设备。判断模块63根据所述的序号和访问的从设备,判断所接收到的操作命令与存储模块61中有效的操作命令是否会造成系统死锁,具体造成系统死锁的条件为:同一个主设备采用同一个序号的操作命令访问不同的从设备,或者不同的主设备采用同一个序号的操作命令分别访问不同的从设备。
当判断模块63判断得出存在可能发生死锁的条件时,通过阻塞模块64阻塞所接收到的操作命令;即不将接收到的操作命令发送到对应的从设备。还需要获取存储模块61可能发生死锁条件对应的目标操作命令,通过发送模块65向所述目标操作命令对应的从设备下发提高优先级命令,以加快该从设备所述目标操作命令的处理速度。
对应于上述防死锁方法,本实施例还提供一种片上系统,包括总线互联模块以及连接到总线互联模块的从设备,如图7所示,该总线互联模块的从设备包括:存储单元71、接收单元72、查找单元73和优先级修改单元74。
在存储单元71中存储了该从设备所有已经接收但未完成的操作命令;当接收单元72接收到总线互联模块发来的提高优先级命令时,查找单元73在存储单元71中查找对应的未完成操作命令,在提高优先级命令中需要携带操作命令的序号,这样查找单元73就可以根据所述的序号来查找未完成的操作命令。在查找到对应的未完成操作命令后,通过优先级修改单元74查找到的操作命令的优先级修改为当前最高,以使得该从设备能够优先处理所查找到的操作命令,从而能够快速地解除总线发生死锁的条件,以充分利用片上系统内部总线的性能。
本实施例中,在阻塞可能发生死锁的操作命令的同时,发送一个提高优先级命令,以使得之前已发出但未完成,并且会和刚接收到的操作命令发生死锁操作命令能够快速被处理,快速解除发生死锁的条件,以减少刚接收到的命令被阻塞的时间,从而在整体上保证操作命令的处理速度,能够较好地保证片上系统总线的性能。
实施例2:
本实施例是在AXI总线中实现的系统内部总线的防死锁技术,在其他总线中也可以采用本实施例类似的技术方案。如图8所示,本实施例中系统总线的防死锁方法包括如下步骤:
801、AXI总线的interconnect将每个发送到从设备的操作命令均保存下来,并且记录所保存操作命令的序号和对应的从设备,在完成该操作命令后,可以将其置为无效,或者直接删除,本实施例中采用置为无效的方式。interconnect中保存的有效目标操作命令表示该操作命令是已经发出,但是并没有完成的。
802、AXI总线的interconnect接收到Master1(主设备1)发送的操作命令,假定该操作命令的序号为0,需要访问的Slave1(从设备1),并且要求读取Slave1中特定地址的数据。
803、获取interconnect中保存的所有有效目标操作命令的序号,以及访问的从设备。
804、判断所获取到的序号是否和接收到的操作命令序号相同,即获取到的序号是否为0;并判断所获取到访问的从设备与接收到的操作命令访问的从设备是否相同,即获取到访问的从设备是否为Slave1。若所获取的序号为0,且访问的设备不是Slave1,则执行步骤806;否则执行步骤805。
805、所接受到的操作命令与之前已发出但未完成的操作命令不会造成系统死锁,所以可以直接将接收到的操作命令发送到对应的从设备中。
806、所接受到的操作命令与之前已发出但未完成的操作命令可能造成系统死锁,所以需要阻塞所接收到的操作命令,即将该操作命令的地址信号和序号进行缓存。本步骤中,在阻塞刚接收到的操作命令的同时,可以将刚接收到的操作命令缓存。
807、假定目标操作命令访问的从设备是Slave2,则本步骤中需要向Slave2发送一个提高优先级命令,以加快Slave2对目标操作命令的处理速度。一般情况下,所述提高优先级命令至少包括目标操作命令的序号,还应该包括目标操作命令对应的从设备编号,以便将该提高优先级命令发送到对应编号的从设备中。
808、从设备Slave2接收到提高优先级命令后,根据提高优先级命令中目标操作命令的序号,查找到未完成的操作命令,如果没有查找到相应的操作命令,则可以不进行任何操作,如果查找到了相关的操作命令,则执行步骤809。
809、将查找到的操作命令的优先级置为当前最高,由于在从设备中,将接收到的操作命令按照先进先出的方式排列,本实施例中可以将所查找到的操作命令修改到先进先出队列的队首,以实现将优先级置为当前最高的效果。
810、在将提高优先级命令发出后,本实施例中的interconnect还需要时刻检测目标操作命令是否已经完成;并在目标操作命令完成后,将刚刚接收到并被阻塞的操作命令发送到对应的从设备,即发送给Slave1。
对应于上述防死锁方法,本实施例还提供一种片上系统内部总线的防死锁装置,该装置是基于现有AXI总线的interconnect实现的,如图9所示,该装置具体包括:存储模块91、接收模块92、判断模块93、阻塞模块94和发送模块95。
在存储模块91存储了已下发到从设备的操作命令,当从设备完成了操作命令时,需要将已完成的操作命令置为无效。接收模块92用于接收主设备发送的操作命令,该操作命令中至少包括序号和访问的从设备。
判断模块93根据所述的序号和访问的从设备编号,分析所接收到的操作命令与存储模块91中有效的操作命令是否会造成系统死锁,可能发生死锁的条件为:同一个主设备采用同一个序号的操作命令访问不同的从设备,或者不同的主设备采用同一个序号的操作命令分别访问不同的从设备。
本实施例中,所述判断模块93的具体实现如下:
通过获取模块931获取存储模块91中目标操作命令的序号和访问的从设备;然后通过判断子模块932判断所述接收到的操作命令序号与所获取的序号是否相同,并且判断接收到的操作命令访问的从设备与目标操作命令访问的从设备是否相同;如果所述的序号相同,但访问的从设备不同,则通过输出模块933输出表示存在造成系统死锁条件的信号,否则输出模块933输出表示不会造成系统死锁的信号。
当判断模块93中的输出模块933输出表示存在可能发生死锁的条件时,通过阻塞模块94阻塞所接收到的操作命令;即不将接收到的操作命令发送到对应的从设备。同时需要获取存储模块91可能发生死锁条件对应的目标操作命令,通过发送模块95向目标操作命令对应的从设备下发提高优先级命令,以加快该从设备对所述目标操作命令的处理速度。
本实施例中的防死锁装置还包括检测模块96和操作命令发送模块97。检测模块96周期性地检测目标操作命令是否已经完成;当检测到所述目标操作命令完成时,通过操作命令发送模块97将刚刚接收到并被阻塞的操作命令发送到对应的从设备。
本实施例中发送提高优先级命令的具体实现如下:
在Interconnect上相应的Master口发出一个Dummy(内部)操作命令,用来表示提高优先级命令,在该Dummy操作命令中包含了需要提高优先级的操作命令的序号。所述的Dummy操作命令是Slave可以认识的,Slave接收到该Dummy操作命令后,查找Dummy操作命令中序号所对应的操作命令,并将查找到的操作命令的优先级置为当前最高,这样Slave就能把相应的操作立刻完成。
对于Dummy操作命令的传输,必须符合AXI协议的传输,而且必须能够指示出Dummy操作命令的特殊操作。本实施例中通过AXI总线的地址通道中Burst(缺口)信号来指示出Dummy操作命令的特殊操作。在AXI总线的地址通道中Burst信号中的一个值没有使用,而且Burst信号是在地址通道中作为控制信号进行传输的信号,基本上所有的AXI总线的从设备都会使用Burst信号。
所以本实施例中的Dummy操作命令包括有效的地址信号、序号和Burst信号,并且不需要接收Slave的响应信号,这使得命令就简单,使得Interconnect和Slave上所需要增加的逻辑减少。
如图10所示,在地址通道传输Dummy操作命令的时候,地址信号和序号是由分析模块传输过来,而Burst信号需要固定为2’b11(以表示该信号为Dummy操作命令),其他信号都可以固定为0。
对应于上述防死锁方法,以及在interconnec t中设计的防死锁装置,本实施例还提供一种片上系统的从设备,该从设备主要运用在上述的AXI总线中。如图11所示,该从设备包括:存储单元111、接收单元112、查找单元113和优先级修改单元114。
在存储单元111中存储了该从设备所有已经接收但未完成的操作命令;当接收单元112接收到总线互联模块发来的提高优先级命令时,查找单元113在存储单元111中查找对应的未完成操作命令,在提高优先级命令中需要携带操作命令的序号,这样查找单元113就可以根据所述的序号来查找未完成的操作命令。在查找到对应的未完成操作命令后,通过优先级修改单元114查找到的操作命令的优先级修改为当前最高,以使得该从设备能够优先处理所查找到的操作命令,从而能够快速地解除总线发生死锁的条件,以充分利用片上系统内部总线的性能。为了方便对该从设备所有已经接收但未完成的操作命令进行管理,本实施例片上系统的从设备中的存储单元111为先进先出队列,每个先到达从设备的操作命令将被优先处理,通过将操作命令修改到先进先出队列的队首,即可将该操作命令的优先级提高到当前最高。
除了采用FIFO(先进先出)队列管理操作命令的优先级以外,在具体实现时,还可以采用其他的方式对操作命令的优先级进行管理,此处不再赘述。
上述的提高优先级命令就是interconnec t发出的Dummy操作命令,Slave接收到该Dummy操作命令后,查找Dummy操作命令中序号所对应的操作命令,并将查找到的操作命令的优先级置为当前最高,即将查找到的操作命令修改到先进先出队列的队首,这样Slave就能把相应的操作立刻完成。通过上述方法把阻塞的源条件解除了,该Slave的处理优先级被临时打断了一下,对于该Slave需要满足的QoS(服务质量)影响不大,但却比较好的满足了AXI总线的QoS。
上述描述从设备的对于Dummy操作命令的响应,对于AXI系统总线的所有Slave都是可用的。由于SoC系统的一般架构中,DDRC(双速率动态随机访问存储控制器)是SoC系统的整个带宽决定点。很多master的大部份操作都是访问DDRC。所以AXI系统总线中连接的DDRC控制器Outstanding(请求挂起)一般是比较深的,而且支持Out-of-Order。下面就Slave是DDRC的情况进行描述。
如图12所示,在从设备DDRC中,新增的逻辑单元(LU)通过AXI传输的命令通道接收到信号,LU对接收到进行判断,如果不是Dummy操作命令,则进行正常的传输;如果接收到的信号是Dummy操作命令,那么LU给出Ready信号,并且把Dummy操作命令中的ID号存储下来,然后在命令FIFO里面查找ID号与Dummy操作命令中的ID号相符操作命令,如果找到符合要求的操作命令,则把该操作命令的优先级设置为当前最高,下一次DDRC就会马上执行,而如果没有发现符合要求的操作命令命令,可以不做任何操作,那是因为所述的操作命令可能是DDRC刚刚执行完成或正在执行。
在上述实施例中,接收到操作命令后,如果会与之前已发送的操作命令发生死锁,则阻塞刚接收到的操作命令,并通过提高优先级命令请求加快之前已发送的操作命令的处理,这个提高优先级命令通过Dummy操作命令实现,只需要用到AXI中的一个写地址通道,将其中的Burst信号设为2’b11,来表时该写地址通道传输的是Dummy操作命令。Slave接收到Dummy操作命令后,提高对应操作命令的优先级,即将对应操作命令修改到先进先出队列的队首,这样Slave就会马上处理对应的操作命令,从而解除发生死锁的条件,使得被阻塞的操作命令能够较快地被发送到相应的Slave。
以上所述实施例主要用在各种需要对总线的系统中,以防止发生死锁,并能够充分利用总线的性能,特别是用在容易发生死锁的AXI总线系统,以及AXI总线系统中所用的从设备中。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台设备(可以是服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1、一种系统总线的防死锁方法,其特征在于包括:
接收操作命令;
判断所接收到的操作命令与已下发但未完成的目标操作命令是否会造成系统死锁;
若会造成系统死锁,则阻塞向从设备下发所接收到的操作命令;
下发提高优先级命令,以加快所述目标操作命令的处理。
2、根据权利要求1所述的系统总线的防死锁方法,其特征在于,所述判断所接收到的操作命令与已下发但未完成的目标操作命令是否会造成系统死锁具体为:
获取已下发但未完成的目标操作命令的序号和访问的从设备编号;
判断所述接收到的操作命令序号与所获取的序号是否相同,所述接收到的操作命令访问的从设备与已下发但未完成的操作命令访问的从设备是否相同;
若所述序号相同,并且所访问的从设备不同,则判断会造成系统死锁。
3、根据权利要求1所述的系统总线的防死锁方法,其特征在于,所述提高优先级命令包括:所述目标操作命令的序号。
4、根据权利要求3所述的系统总线的防死锁方法,其特征在于,所述加快目标操作命令的处理具体为:
根据提高优先级命令中目标操作命令的序号,查找已下发但未完成的目标操作命令;
提高所述查找到的目标操作命令的优先级。
5、根据权利要求1所述的系统总线的防死锁方法,其特征在于还包括:
检测所述目标操作命令是否已经完成;
若所述目标操作命令已经完成,则向从设备下发所接收到的操作命令。
6、一种系统总线的防死锁装置,其特征在于包括:
存储模块,用于存储已下发的目标操作命令;
接收模块,用于接收操作命令;
判断模块,用于判断接收模块接收到的操作命令与存储模块中的目标操作命令是否会造成系统死锁;
阻塞模块,用于在所述判断模块判断会造成系统死锁时,阻塞下发所接收到的操作命令;
发送模块,用于在所述判断模块判断会造成系统死锁时,下发提高优先级命令,以加快所述目标操作命令的处理。
7、根据权利要求6所述的系统总线的防死锁装置,其特征在于,所述判断模块包括:
获取模块,用于获取所述存储模块中目标操作命令的序号,以及对应访问的从设备编号;
判断子模块,用于判断接收模块接收到的操作命令序号与所获取的序号是否相同,接收模块接收到的操作命令访问的从设备编号与目标操作命令访问的从设备编号是否相同;
输出模块,用于在判断模块判断所述序号相同,并且所访问的从设备编号不同时,输出表示会造成系统死锁的信号。
8、根据权利要求6所述的系统总线的防死锁装置,其特征在于还包括:
检测模块,用于检测所述目标操作命令是否已经完成;
操作命令发送模块,用于在检所述测模块检测到所述目标操作命令完成时,下发所接收到的操作命令。
9、一种片上系统,包括用于与总线互联模块连接的从设备,其特征在于,所述从设备包括:
存储单元,用于存储未完成的操作命令;
接收单元,用于接收提高优先级命令,所述提高优先级命令中包括操作命令的序号;
查找单元,用于在所述存储单元中根据提高优先级命令中的序号查找未完成的目标操作命令;
优先级修改单元,用于提高查找单元在存储单元中查找到的目标操作命令的优先级。
10、根据权利要求9所述的片上系统,其特征在于,所述存储单元为先进先出队列,所述优先级修改单元将查找到的操作命令修改到所述先进先出队列的队首。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810110676A CN100585578C (zh) | 2008-06-13 | 2008-06-13 | 系统总线的防死锁方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810110676A CN100585578C (zh) | 2008-06-13 | 2008-06-13 | 系统总线的防死锁方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101308477A true CN101308477A (zh) | 2008-11-19 |
CN100585578C CN100585578C (zh) | 2010-01-27 |
Family
ID=40124941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810110676A Active CN100585578C (zh) | 2008-06-13 | 2008-06-13 | 系统总线的防死锁方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100585578C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447931B (zh) * | 2008-12-26 | 2011-05-11 | 华为技术有限公司 | 一种排他操作的实现方法和装置 |
CN102103560A (zh) * | 2009-12-16 | 2011-06-22 | 中兴通讯股份有限公司 | 用于系统总线的防死锁方法及装置 |
CN103399832A (zh) * | 2013-08-21 | 2013-11-20 | 中国人民解放军国防科学技术大学 | 总线间的乱序返回数据的归序方法 |
CN103684961A (zh) * | 2012-08-30 | 2014-03-26 | 网速系统公司 | 自动构建无死锁互连 |
CN105589821A (zh) * | 2014-10-20 | 2016-05-18 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的装置及方法 |
WO2018107658A1 (zh) * | 2016-12-15 | 2018-06-21 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的方法、装置及存储介质 |
CN110196826A (zh) * | 2018-02-24 | 2019-09-03 | 深圳市中兴微电子技术有限公司 | 一种死锁判断方法及装置 |
CN110727636A (zh) * | 2019-10-10 | 2020-01-24 | 天津飞腾信息技术有限公司 | 片上系统及片上系统的设备隔离方法 |
CN113821470A (zh) * | 2020-06-19 | 2021-12-21 | 平头哥(上海)半导体技术有限公司 | 总线设备、嵌入式系统和片上系统 |
-
2008
- 2008-06-13 CN CN200810110676A patent/CN100585578C/zh active Active
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447931B (zh) * | 2008-12-26 | 2011-05-11 | 华为技术有限公司 | 一种排他操作的实现方法和装置 |
CN102103560A (zh) * | 2009-12-16 | 2011-06-22 | 中兴通讯股份有限公司 | 用于系统总线的防死锁方法及装置 |
WO2011072533A1 (zh) * | 2009-12-16 | 2011-06-23 | 中兴通讯股份有限公司 | 用于系统总线的防死锁方法及装置 |
CN103684961A (zh) * | 2012-08-30 | 2014-03-26 | 网速系统公司 | 自动构建无死锁互连 |
CN103684961B (zh) * | 2012-08-30 | 2018-03-27 | 网速系统公司 | 自动构建无死锁互连 |
CN103399832A (zh) * | 2013-08-21 | 2013-11-20 | 中国人民解放军国防科学技术大学 | 总线间的乱序返回数据的归序方法 |
CN103399832B (zh) * | 2013-08-21 | 2016-09-14 | 中国人民解放军国防科学技术大学 | 总线间的乱序返回数据的归序方法 |
CN105589821B (zh) * | 2014-10-20 | 2019-03-12 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的装置及方法 |
CN105589821A (zh) * | 2014-10-20 | 2016-05-18 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的装置及方法 |
WO2018107658A1 (zh) * | 2016-12-15 | 2018-06-21 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的方法、装置及存储介质 |
CN108228503A (zh) * | 2016-12-15 | 2018-06-29 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的方法及装置 |
CN108228503B (zh) * | 2016-12-15 | 2020-11-10 | 深圳市中兴微电子技术有限公司 | 一种防止总线死锁的方法及装置 |
CN110196826A (zh) * | 2018-02-24 | 2019-09-03 | 深圳市中兴微电子技术有限公司 | 一种死锁判断方法及装置 |
CN110196826B (zh) * | 2018-02-24 | 2021-06-18 | 深圳市中兴微电子技术有限公司 | 一种死锁判断方法及装置 |
CN110727636A (zh) * | 2019-10-10 | 2020-01-24 | 天津飞腾信息技术有限公司 | 片上系统及片上系统的设备隔离方法 |
CN110727636B (zh) * | 2019-10-10 | 2024-02-06 | 飞腾信息技术有限公司 | 片上系统的设备隔离方法 |
CN113821470A (zh) * | 2020-06-19 | 2021-12-21 | 平头哥(上海)半导体技术有限公司 | 总线设备、嵌入式系统和片上系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100585578C (zh) | 2010-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100585578C (zh) | 系统总线的防死锁方法、装置 | |
CN101267361B (zh) | 一种基于零拷贝技术的高速网络数据包捕获方法 | |
RU2487401C2 (ru) | Способ обработки данных, узел-маршрутизатор и носитель информации | |
CN100595720C (zh) | 用于基于集线器的存储系统中直接存储器访问的设备和方法 | |
JP4124491B2 (ja) | 異なるデータ転送速度での共用メモリへのアクセスを制御するパケット・ルーティング・スイッチ | |
US6772237B2 (en) | Host controller interface descriptor fetching unit | |
EP1738267B1 (en) | System and method for organizing data transfers with memory hub memory modules | |
CN101867511B (zh) | 流控帧发送方法、相关设备及系统 | |
US7043579B2 (en) | Ring-topology based multiprocessor data access bus | |
CN102866971A (zh) | 传输数据的装置、系统及方法 | |
EP0991999A1 (en) | Method and apparatus for arbitrating access to a shared memory by network ports operating at different data rates | |
CN103198856A (zh) | 一种ddr控制器及请求调度方法 | |
CN104657308A (zh) | 一种用fpga实现的服务器硬件加速的方法 | |
US9424193B2 (en) | Flexible arbitration scheme for multi endpoint atomic accesses in multicore systems | |
CN101616174A (zh) | 一种存储系统io处理路径动态跟踪实现优化系统性能的方法 | |
CN102841869A (zh) | 一种基于fpga的多通道i2c控制器 | |
CN102103565A (zh) | 先进高性能系统总线连接装置及连接方法 | |
CN110716691B (zh) | 调度方法、装置、闪存设备和系统 | |
CN101447931B (zh) | 一种排他操作的实现方法和装置 | |
CN1936873A (zh) | 一种控制两种不同速度总线间数据传送的方法 | |
CN115905086A (zh) | 基于axi同步读写单口sram的控制方法及控制器 | |
CN104252416A (zh) | 一种加速器以及数据处理方法 | |
CN106815176B (zh) | 用于经由柔性寄存器访问总线传输访问请求的系统和方法 | |
US6957273B2 (en) | Packet transmitting/receiving method and apparatus for computer system | |
CN109145397A (zh) | 一种支持并行流水访问的外存仲裁结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210421 Address after: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Patentee after: Honor Device Co.,Ltd. Address before: 518129 headquarters building of Bantian HUAWEI base, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |