CN120086029A 一种基于axi总线数据重排序的防死锁方法和装置 (南京感动科技有限公司)_第1页
CN120086029A 一种基于axi总线数据重排序的防死锁方法和装置 (南京感动科技有限公司)_第2页
CN120086029A 一种基于axi总线数据重排序的防死锁方法和装置 (南京感动科技有限公司)_第3页
CN120086029A 一种基于axi总线数据重排序的防死锁方法和装置 (南京感动科技有限公司)_第4页
CN120086029A 一种基于axi总线数据重排序的防死锁方法和装置 (南京感动科技有限公司)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局地址210004江苏省南京市秦淮区菱角市(74)专利代理机构江苏致邦律师事务所32230专利代理师樊文红尹妍GO6F9/52(2006.01)判断阈值还未发生响应的情况,如果有则启的写数据判断传输数据对应的地址信息,并将数据存多个主设备与多个从设备之间的通信能够避免21.一种基于AXI总线数据重排序的防死锁方监测主从设备交互的响应时间;当所述响应时间超出预设阈值时,构建虚拟握手信号完成对主设备或从设备的响应,读取总线传输的来自主设备的写数据或来自从设备的读数据;将所述写数据或读数据存储至缓存模块;将缓存模块中的数据按读请求命令或写请求命令的地址顺序重新排序后,按顺序将数据发送至主设备或从设备。2.根据权利要求1所述的方法,其特征在于,所述监测主从设备交互的响应时间包括监测主设备对从设备发送写数据的响应时间,以及监测从设备对主设备返回读数据的响应时3.根据权利要求1所述的方法,其特征在于,所述监测主从设备交互的响应时间的方式出所述预设阈值,则进行后续的构建虚拟握手信号处理。4.根据权利要求1所述的方法,其特征在于,所述缓存模块在主设备发送读请求命令或写请求命令时,按顺序缓存读请求命令的发送地址或写请求命令的发送地址作为标签;所述来自主设备的写数据或来自从设备的读数据存储至对应的标签下。5.根据权利要求1所述的方法,其特征在于,所述虚拟握手信号包括模拟从设备的应答机制的从设备握手信号,以及模拟主设备的应答机制的主设备握手信号;根据发生死锁的设备,触发对应的虚拟握手信号进行设备死锁状态解除。6.一种基于AXI总线数据重排序的防死锁装死锁监控单元,监测主从设备交互的响应时间,当所述响应时间超出预设阈值时,启动虚拟握手单元;数据缓存单元,按顺序缓存读请求命令或写请求命令的发送地址作为标签;虚拟握手单元,包括主机握手单元、从机握手单元和总线通道判断模块;所述主机握手单元或从机握手单元根据发生死锁的通道,向主设备或从设备发送模拟的响应信号,并从总线接收数据.所述总线通道判断模块根据总线互连通道信息判断从总线接收的数据的通道ID,并将其存入数据缓冲模块对应的地址标签中,按地址标签顺序将数据发送至主设备或从设备。7.根据权利要求6所述的防死锁装置,其特征在于,所述防死锁装置集成至总线互联通道与主设备或从设备的AXI总线接口。8.一种计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1~5任一项所述方法的步骤。9.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1~5任一项所述方法的步骤。10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1~5任一项所述方法的步骤。3技术领域[0001]本发明属于芯片技术领域,具体涉及一种基于AXI总线数据重排序的防死锁方法和装置。背景技术活性和扩展性,支持多主设备和多从设备的并行数据传输,广泛应用于需要高效数据交换数据通道(R通道)、写地址通道(AW通道)、写数据通道(W通道)和写响应通道(B通道)。其核心设计理念是通过多个独立的通道来提高数据传输效率,形成全双工的工作机制。[0003]AXI4.0协议是ARM公司提出的AMBA(AdvancedMicrocontrollerBusArchitecture)协议的一种,该协议通过ID标志进行数据传输的顺序控制。对于数据传输来设备与主设备Master之间的数据传输,可以通过带有ID标志的多个响应来完成。这些响应将携带有ID标志的请求,R通道携带响应读请求的读数据ID标志RID,B通道携带响应写请求的写数据已写完ID标志BID。[0004]AXI协议中的Outstanding机制是指主机在没有收到响应时可以发起多个读写请求的能力。这种机制允许主机在等待响应的同时继续发送新的请求,从而提高数据传输的效率。如果没有Outstanding机制,则总线Master在读操作上的行为就会是通过AR通道发送读地址命令,等待R通道读数据返回;在写操作上的行为就会是通过AW通道发送写地址命么总线就可以在没等到响应时,连续发多个读或写的命令,然后再逐个等待命令的返回。总线Master在读操作上会通过AR通道连续发送多个读地址命令,然后等待R通道多个对于不同读请求的读数据返回;在写操作上的行为就会通过AW通道连续发送多个写地址命令,同时准备好数据后通过W通道发送多个对于不同写请求的写数据,最后等待B通道返回多个不同写命令的数据已写入完毕的响应。[0005]AXI协议中ID的一个用途就在于我们可以把数据传输的顺序打乱,由于在一个复杂的SOC系统中,有不同类型的Slave空间地址,有些Slave空间地址对应的memory响应速度比较快,而有些相应则相对缓慢。以读请求为例,总线Master去读取一个响应速度比较慢的memory的数据会比读取响应速度比较快的memory的数据晚到达总线Master,如果总线Master先发出来对于慢速memory数据的读请求,后发送对于快速memory数据的读请求,如果Master要一直等待慢速memory的数据回应的话会堵塞住快速memory的数据回应,总线性能就会降低。所以AXI总线的Outoforder(乱序传输)机制就是为了解决这样的一个问题,Outoforder是在0utstanding机制的基础上进行的,在读乱序的实现中,总线Master可以发多个相同ARID的读命令,相同ARID读请求下的读数据必须按照Master读地址命令的发送顺序回来,对于不同ARID的读地址命令,读数据可以不按照读地址命令发送的顺序传回总4赖引起的。例如在两个总线Master读访问两个slave,若Master1先后分别发送ARID均为0Slavel,在设计的互联结构中,Slave会给来源不同的ARID增加一些位以区分不同的结构由0变为了20。这对于Slave来说就是不同的ARID号,可以进行乱序传输。对于两个响应顺序,先响应Master1还是先响应Master2都可以。若此时Slave1先应答Master2,[0007]AXI协议的Outstanding传输访问机制允许总线Master无需等待上一笔写数据地被赋予了访问权的Master在W通道进行数据交换。由于以上机制的作用,在多Master多和Master1之间的路径延迟小于Slave2和Master1之间的路径延迟,所以,Master1向Slavel发送的写地址命令后发先至,先于Master2向Slave1发送的写地址命令抵达由于Slave2和Master2之间的路径延迟小于Slave2和Master1之间的路径Master2向Slave2发送的写地址命令后发先至,先于Master1向Slave2发送的写地址命令对于Master来说,写数据必须按照写地址命令发送的顺序传输,Master1要先Slave2,Master2要先发送数据给Slave1,但是现在Slave1等待Master1的数据,不接受设备会发生死锁状态,当一个主从设备影响到多个主从5写地址命令是发往不同的Slave设备,则暂停后续读写地址命令的连续发送,确保当前读写地址请求完成后再发送下一个请求,防止死锁的发生。这种方法简单易懂,易于实现,但它的主要问题是会导致数据带宽的降低,因为主设备在等待前一个请求完成时无法发起新的请求,造成数据传输的延迟,只能实现相同设备的Outstanding传输机制。Outstanding机制发送的读写地址命令的相应ID不一致或者ID是相同的但是是发往相同的Slave设备,则继续支持Outstanding机制,如果是相同ID且发往不同的Slave设备,则暂停后续读写地址命令的连续发送,确保当前读写地址请求完成后再发送下一个请求,防止死锁的发生。这种方法对于读请求乱序传输有着更好的支持性,但是不能够解决在写数据时面临的死锁问题。发明内容[0011]本发明的目的在于针对现有方法的不足,提供基于AXI总线数据重排序的防死锁方法和装置。一种基于AXI总线数据重排序的防死锁方法,所述方法包括:监测主从设备交互的响应时间;当所述响应时间超出预设阈值时,构建虚拟握手信号完成对主设备或从设备的响应,读取总线传输的来自主设备的写数据或来自从设备的读数据;将所述写数据或读数据存储至缓存模块;将缓存模块中的数据按读请求命令或写请求命令的地址顺序重新排序后,按顺序将数据发送至主设备或从设备。[0013]作为一种优选的实施方式,所述监测主从设备交互的响应时间包括监测主设备对从设备发送写数据的响应时间,以及监测从设备对主设备返回读数据的响应时间。[0014]作为一种优选的实施方式,所述监测主从设备交互的响应时间的方式为:间超出所述预设阈值,则进行后续的构建虚拟握手信号处理。[0015]作为一种优选的实施方式,所述缓存模块在主设备发送读请求命令或写请求命令时,按顺序缓存读请求命令的发送地址或写请求命令的发送地址作为标签;所述来自主设备的写数据或来自从设备的读数据存储至对应的标签下。[0016]作为一种优选的实施方式,所述虚拟握手信号包括模拟从设备的应答机制的从设备握手信号,以及模拟主设备的应答机制的主设备握手信号;根据发生死锁的设备,触发对应的虚拟握手信号进行设备死锁状态解除。[0017]本发明的第二目的在于提供一种基于AXI总线数据重排序的防死锁装置,所述装置包括:死锁监控单元,监测主从设备交互的响应时间,当所述响应时间超出预设阈值时,启动虚拟握手单元;数据缓存单元,按顺序缓存读请求命令或写请求命令的发送地址作为标签;6虚拟握手单元,包括主机握手单元、从机握手单元和总线通道判断模块;所述主机握手单元或从机握手单元根据发生死锁的通道,向主设备或从设备发送模拟的响应信号,并从总线接收数据,所述总线通道判断模块根据总线互连通道信息判断从总线接收的数据的通道ID,并将其存入数据缓冲模块对应的地址标签中,按地址标签顺序将数据发送至主设备或从设备。[0018]作为一种优选的实施方式,所述防死锁装置集成至总线互联通道与主设备或从设备的AXI总线接口。[0019]作为一种优选的实施方式,所述数据缓存单元选用缓存采用BRAM[0020]本发明的第三目的在于提供一种计算机设备,其包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现上述方法的步骤。[0021]本发明的第四目的在于提供一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现上述方法的步骤。[0022]本发明的第五目的在于提供一种计算机程序产品,其包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述方法的步骤。[0023]本发明具有如下有益效果:(1)本发明的方法通过在数据传输过程中引入数据缓存、重排序和虚拟握手机制,确保数据能够按照正确的顺序进行传输,避免死锁现象的发生,同时尽可能多的保持系统的高吞吐量和灵活性。通过动态调整数据的传输顺序和响应顺序,本发明能够有效提高系统的数据传输效率,保障AXI总线在复杂多主设备、多从设备系统中的稳定性与可靠性。[0024](2)本发明装置适用于对实时性要求较高的主设备,对总线延迟容忍度比较低,如线延迟或乱序传输导致的死锁问题,确保了高帧率显示设备的数据传输稳定性和实时性。同时,本发明装置能够在复杂的多主设备、多从设备环境中保持较高的吞吐量,满足类似场景对高性能和低延迟的严苛需求。[0025](3)本发明不同于挂起请求放弃AXI总线Outstanding特性的解决死锁的方法,可根据设备对延迟的要求配置数据缓存单元的数据深度,一定程度上恢复总线Outstanding传输机制的传输能力。附图说明[0026]图1为读数据情况下不同情形的数据传输示意图。[0027]图2为写数据状态下不同情形的数据传输示意图。[0028]图3为本发明装置结构示意图。[0029]图4为本发明装置接入AXI互联装置的示意图。[0030]图5为本发明方法的流程图。具体实施方式[0031]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。7[0032]图1、图2阐明了本发明与现有技术中在读数据、写数据时,不同情形下的数据传输情况,以说明本发明方法的作用机制。[0033]在读死锁情况下,多个主设备向多个从设备发起读请求,当AR通道ID相同时,主设备期望按照发出请求的地址顺序接收响应,然而由于从设备的乱序传输或者传输路径延迟,主设备无法接受到按传输地址发送顺序的数据响应从而发生死锁,导致多个主设备等待多个从设备的情况,造成系统的死锁。数据重排序机制能在多个读请求的响应数据没有按照读地址命令顺序到达造成死锁时,接受从总线上传来的读数据进行重排序,将排序好的数据发往主设备,确保按照正确的读地址命令顺序接收数据,避免死锁的发生,如图1所[0034]在写死锁情况下,多个主设备向多个从设备发起写请求,由于路径延迟、寄存器插入打拍缓解时序紧张或其他硬件因素,从设备接收到的写请求可能不会按照主设备发送的写地址命令顺序到达,从而错误的打开对主设备的写数据通道,主设备需要按写地址命令发送写数据,但是发送的写数据不符合从设备接受写地址命令的顺序,则会造成单个主从设备的写死锁,从而也导致多个主从设备相互等待的情况,造成系统的死锁。数据重排序机制在主设备发送写数据从设备不接受发生死锁时,接受从总线上传来的写数据进行重排序,将排序好的数据发往从设备,确保按照从设备接受的写地址命令顺序接收数据,避免死[0035]本发明基于上述原理设计了基于AXI总线数据重排序的防死锁装置,如图3所示,该装置一共有三个模块:数据缓存单元、虚拟握手单元、死锁监控单元。所述防死锁装置集成到主从设备的总线接口上,如图4所示。[0036]所述死锁监控单元监测主从设备交互的响应时间,当所述响应时间超出预设阈值[0037]所述数据缓存单元按顺序缓存读地址命令或写地址命令的发送地址作为标签;所述虚拟握手单元,包括主机握手单元、从机握手单元和总线通道判断模块;所述主机握手单元或从机握手单元根据发生死锁的通道,向主设备或从设备发送模拟的响应信号,并从总线接收数据,所述总线通道判断模块根据总线互连通道信息判断从总线接收的数据的通道所对应的地址,并将其存入数据缓冲模块对应的地址标签中,按地址标签顺序将数据发送至主设备/从设备。[0038]在一个实施例中,死锁监控单元对于现在主从设备是否进入死锁状态进行监测,如果在数据到来境况下,主设备或从设备没有接受数据的响应,且响应时间超过监测判断阈值则判断发生死锁,不再发给相应主从设备,由虚拟握手单元接收数据。[0039]在一个实施例中,死锁监控单元通过监控R通道和W通道的响应情况进行死锁监会一直保持,本实施例中通过设置时间上限阈值判断该笔数据的有效标志的保持时间是否正常,如果超出阈值设置的正常保持上限,则会判断为发生死锁。然后激活虚拟握手单元进行应答解除死锁。[0040]在读数据的过程中,通过R通道响应读请求并返回数据。R通道中,如果主设备无法保持有效数据和该数据有效位,因此会导致死锁。8备无法接受写数据则WREADY不会处在有效位。主设备在W通道上,WDATA和WVALID会一直保持有效数据和该数据有效位,因此会导致死锁。[0042]基于上述死锁形成机制,我们通过对R通道和W通道的响应情况进行监控,以判断是否发生死锁。[0043]在一个实施例中,数据缓存单元采用BRAM存储地址标签和读写数据。根据数据深度将BRAM配置为多个独立的存储块,块的数量由数据缓存深度决定。如图3所示,数据缓存输数据包。[0044]对于读死锁,数据缓存单元缓存主设备发送读请求命令的地址作为标签,而按照这个标签对不同AXI通道返回来的不同从设备数据进行重排,最终的结果能够符合主设备在相同ID下返回的读数据一定要和发送的读请求命令顺序一致的要求。[0045]对于写死锁,数据缓存单元缓存了主设备发送写请求命令的地址作为标签,而按照这个标签对向不同AXI通道发出去却陷入写死锁的主设备数据进行缓存,如果按照缓存的地址顺序向从设备发送写数据,是不能够符合从设备所接受的写请求地址顺序的,因为缓存单元中写数据的顺序是主设备发出写请求的地址顺序。由于路径延迟、寄存器插入打拍等其他硬件原因,从设备接受的写请求顺序对于主设备来说是未知的,所以只能将数据缓存单元的数据进行重排序发出看是否符合从设备的接受地址的顺序(在本专利中是采用选择数据缓存单元中下一个地址标签下的缓存写数据,由虚拟握手单元模拟主设备再一次发送写数据到相应地址标签下的从设备,看从设备是否接收)。[0046]具体的,在读数据情况下,数据缓存单元按顺序缓存读地址命令的发送地址作为在最后一块存储块存储的标签移动到上一存储块中,新的读命令地址存入到最后一块存储块当中,以此类推。当已经有读命令地址移动到第一块存储块,并且还有新的读地址命令发送地址时,移出第一块存储块的地址,将新的读地址命令存入最后一块存储块当中。如果发生读死锁,通过总线互连通道判断回应读请求发回读数据的从模块的地址,并将读数据存入数据缓存单元的相应标签下,进行读数据的重排序。在读死锁的情况下,由于读数据不符合主设备发起的读地址顺序,主设备无法接受,虚拟握手单元进行对从设备的握手回应并接受读数据,根据总线互连通道信息存入相应标签下的数据缓存单元中,完成重排序。当符合主设备发起读请求的地址顺序,由虚拟握手单元模拟从设备发送符合地址顺序的读数[0047]在写数据情况下,数据缓存单元按顺序缓存写地址命令的发送地址作为标签。其方式和读数据情况下的存储方式一致。如果发生写死锁,通过总线互连通道判断没有回应写请求写入写数据的从模块的地址,并将写数据存入数据缓存单元的相应标签下,以便后续进行W通道的选择。在写死锁情况下,由于写数据不符合从设备接受的写地址命令顺序,从设备无法接受,虚拟握手单元进行对主设备的握手回应并接受写数据,根据总线互连通道信息存入相应标签下的数据缓存单元中。虚拟握手单元能够模拟主设备发送写数据到从设备,如果没有监测到从设备响应,选择数据缓存单元中下一个地址标签下的缓存写数据,由虚拟握手单元模拟主设备再一次发送写数据到从设备。9[0048]在一个实施例中,对虚拟握手单元各单元的执行流程说明如下:虚拟握手单元包括主机握手单元、从机握手单元和总线通道判断模块。[0049]主机握手单元用于模仿从设备的应答机制解除主设备的死锁状态,或者向主设备发送排序好的读数据,其执行流程分别如下:(1)解除主设备死锁状态:主设备陷入死锁状态是因为写数据无法写入从设备,在会一直保持有效数据和该数据有效位。主机握手单元负责拉高解除主设备死锁。[0050](2)向主设备发送数据:在读数据过程中,相同ID的情况下,主设备需要按照主设备发送读地址的顺序接受从设备发送过来的数据。在R通道上,主机握手单元在RDATA发送数据并拉高RVAILD,当检测到RREADY和RRESP同时拉高则发送下一批数据直到发送完最后[0051]从机握手单元用于模仿主设备的应答机制解除从设备的死锁状态,或者向从设备发送排序过后的写数据,其执行流程分别如下:(1)解除从设备死锁状态:从设备陷入死锁状态是因为读数据无法写入主设备,在R通道上RDATA和RVALID会一直保持有效数据和该数据有效位。从机握手单元负责拉高[0052](2)向从设备发送数据:向从设备发送数据是因为在写数据过程中,从设备需要按照从设备接受写地址的顺序去接受主设备发送过来的数据。在W通道上,从机握手单元在批数据,在发送最后一批数据时拉高WLAST,之后恢复WDATA、WVAILD信并拉高B通道的[0053]总线通道判断模块根据总线互联通道传输数据过来的AXI通道来判断其高位的地址信息,从而将传输的数据存入数据缓存单元的相应地址标签下。[0054]具体的,在读死锁的情况下,由于从设备在接受相同主设备相同id发送过来的读请求时,不会乱序传输,会按照接受请求的顺序传输读数据,总线通道判断模块根据在总线互联通道中读数据传输过来的通道,判读该从设备发送的读数据的高位地址信息,之后可按照数据缓存单元中已经缓存的地址标签的顺序进行缓存。[0055]在写死锁的情况下,主设备是根据自己发送写请求的地址的顺序发送写数据,总线通道判断模块根据在总线互联通道中写数据传输过去的通道,判读该主设备发送的写数据的高位地址信息,之后可按照数据缓存单元中已经缓存的地址标签的顺序进行缓存。[0056]基于如上所示的流程,在读死锁的情况下,由从机握手单元模拟主设备的应答解除从设备的死锁状态,由主机握手单元向主设备发送排序好的读数据。在写死锁的情况下,由主机握手单元模拟从设备的应答解除主设备的死锁状态,由从机握手单元向从设备发送排序过后的写数据。[0057]使用时,将所述防死锁装置所述防死锁装置至主从设备的总线接口。[0058]在一个实施例中,防死锁装置到主从设备的总线接口上,如图4所示。由于从设备的不稳定性,本实施例中选择将防死锁装置集成至主设备端。[0059]在一个实施例中,防死锁装置中各模块的执行流程如图5所示步骤一:死锁监控单元监测主从设备数据交互时,是否出现超过检测判断阈值还未发生响应的情况,如果有则启动虚拟握手单元。[0060]步骤二:虚拟握手单元的主机握手单元或从机握手单元模拟从设备或者主设备的应答,接受来自从设备的读数据或者来自主设备的写数据。[0061]步骤三:总线通道判断模块根据总线互连通道的信息将接收到的数据,判断传输数据对应的地址信息,并将数据存储到数据缓存单元中对应的地址标签下,每个进入到该单元的数据都有着地址标签进行数据识别。[0062]步骤四:主机握手单元或从机握手单元模拟主设备向从设备发送数据,或模拟从设备向主设备发送数据,解决死锁问题。---Outstanding延迟---地址:01读数据B成功传输读数据读数据B成功传输读数据A成功传输成功传输读地址命令A地址:01读地址命令A地址:01读地址命令C地址:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论