CN115617718A - 一种基于AXI总线的读写保序方法及SoC系统 - Google Patents
一种基于AXI总线的读写保序方法及SoC系统 Download PDFInfo
- Publication number
- CN115617718A CN115617718A CN202211630639.9A CN202211630639A CN115617718A CN 115617718 A CN115617718 A CN 115617718A CN 202211630639 A CN202211630639 A CN 202211630639A CN 115617718 A CN115617718 A CN 115617718A
- Authority
- CN
- China
- Prior art keywords
- target
- packet
- write
- control module
- read
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种基于AXI总线的读写保序方法及SoC系统,包括:在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包;确定目标控制模块是否接收到目标从机的完成信号;根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对预定数据操作所对应的存储区域执行的操作类型。在本发明中,从机把之前收到的同一个主机的所有请求真正执行完后,再发送完成信号,保证读写数据保序,避免系统异常。
Description
技术领域
本发明属于数据传输领域,更具体地,涉及一种基于AXI总线的读写保序方法及SoC系统。
背景技术
AXI(Advanced eXtensible Interface,总线协议)总线作为一种高速片上总线,在当前的片上系统(System on Chip,SoC)中被广泛应用,其本身规定的outstanding传输(即不需要等待前一笔操作传输完成就可以发送下一笔操作)特性显著提高了总线带宽的利用率。然而数据传输的实际完成时间却不可确定,即数据在存储系统中真正被完成的时间和实际产生AXI响应的时间不一致,因此在基于AXI总线的SOC系统中,处理单元间对共享存储的操作便存在数据乱序的可能,例如,存在一种情况,某master(主机)对存储器某段地址发起写数据操作,slave(从机)侧收到该写数据操作的最后一次传输的写数据后,会立即进行AXI响应,但是数据并不会立即被写进存储器中,而master在接收到AXI响应后会认为该写数据操作所对应的数据已被存储完成,此时若有其他处理单元发起对该段存储空间的读取,就会取到旧的数据,而真正期望的数据还没被写入,从而造成数据错乱,系统行为异常。还存在另一种情况,某master对存储器某段地址发起读数据操作,在读数据的过程中,若有其他处理单元发起对该段存储空间的重写操作,就会覆盖原来的数据,导致传输给master的数据是重写之后的数据,并不是master所期望得到的数据,从而造成数据错乱,系统行为异常。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于AXI总线的读写保序方法及相应的SoC系统,其目的在于从机把之前收到的同一个主机的所有请求真正执行完后,再发送完成信号,保证读写数据保序,避免系统异常,由此解决在基于AXI总线的SOC系统中,AXI总线的数据完成时间不确定而可能造成数据乱序的技术问题。
为实现上述目的,按照本发明的第一个方面,提供了一种基于AXI总线的读写保序方法,包括:
在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包;
确定所述目标控制模块是否接收到所述目标从机的完成信号,其中,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号;
根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
进一步地,所述根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型包括:
当所述预定数据操作为写操作时,在所述目标控制模块接收到全部所述目标从机的完成信号之后,通知其他处理单元能够从所述预定数据操作所对应的存储区域提取数据;
当所述预定数据操作为读操作时,在所述目标控制模块接收到全部所述目标从机的完成信号之后,通知其他处理单元能够重新使用所述预定数据操作所对应的存储区域。
进一步地,所述预定数据操作为写操作,所述在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包包括:
按照设定查询周期开启所述目标控制模块的raw功能,先通过所述目标控制模块关闭所述目标主机的写地址通道,待已发送至所述目标从机的写地址所对应的写数据发送完成后,再通过所述目标控制模块关闭所述目标主机的写数据通道;
控制目标控制模块向选定的目标从机发送包含预定字符的写地址虚拟包和写数据虚拟包。
进一步地,所述预定数据操作为读操作,所述在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包包括:
按照设定查询周期开启所述目标控制模块的raw功能,通过所述目标控制模块关闭所述目标主机的读地址通道;
控制目标控制模块向选定的目标从机发送包含预定字符的读地址虚拟包。
进一步地,当所述预定数据操作为写操作时,所述虚拟包包括写地址虚拟包和写数据虚拟包,写地址虚拟包的数据格式与正常的写地址通道信号的数据格式相同,写数据虚拟包的数据格式与正常的写数据通道信号的数据格式相同,写地址虚拟包的AWID或者AWUSER中设置有预定字符,写数据虚拟包的WID或WUSER中设置有预定字符,以通过预定字符来区分虚拟包和正常包;
当所述预定数据操作为读操作时,所述虚拟包包括读地址虚拟包,读地址虚拟包的数据格式与正常的读地址通道信号的数据格式相同,读地址虚拟包的ARID或者ARUSER中设置有预定字符,以通过预定字符来区分虚拟包和正常包。
为实现上述目的,按照本发明的第二个方面,提供了一种基于AXI总线的读写保序方法,包括:
在目标主机完成预定数据操作的传输后,目标控制模块向选定的目标从机发送虚拟包;
所述目标控制模块接收所述目标从机的完成信号,其中,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号;
在所述目标控制模块接收到全部所述目标从机的完成信号后,上报处理器,以便于处理器根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
进一步地,所述读写保序方法还包括:
所述目标控制模块还接收来自于所述目标从机的响应信号;
判断所述响应信号中是否存在预定字符;
若所述响应信号中存在预定字符,则过滤该响应信号;
若所述响应信号中不存在预定字符,则将该响应信号传输至所述目标主机。
为实现上述目的,按照本发明的第三个方面,提供了一种基于AXI总线的读写保序方法,包括:目标从机按照次序对来自于目标主机的业务包进行检测,判断当前业务包的类型;
如果所述当前业务包为正常包,则将该正常包存储在相应的存储区域,或,将与该正常包相应的数据发送至目标主机;
如果所述当前业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号,以便于处理器根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
进一步地,所述目标从机按照次序对来自于目标主机的业务包进行检测,判断当前业务包的类型包括:
所述目标从机按照次序对来自于目标主机的业务包进行检测;
如果当前业务包中没有包含预定字符,则当前业务包为正常包;
如果当前业务包中包含预定字符,则当前业务包为虚拟包。
进一步地,所述响应模块内设置有计数器,所述正常包包括正常写操作包和正常读操作包;
所述如果所述当前业务包为正常包,则将该正常包存储在相应的存储区域,或,将与该正常包相应的数据发送至目标主机包括:
如果所述当前业务包为正常写操作包,则在接收到正常写操作包后,计数器加1,在该正常写操作包所对应的数据存储在相应的存储区域后,计数器减1;
如果所述当前业务包为正常读操作包,则在接收到正常读操作包后,计数器加1,在该正常读操作包所对应的数据发送至目标主机后,计数器减1。
进一步地,所述虚拟包包括虚拟写操作包和虚拟读数据包;
所述如果所述当前业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号包括:
如果所述当前业务包为虚拟写操作包,监测计数器的计数值;
当计数值为0时,写操作执行完成,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号;
如果所述当前业务包为虚拟读操作包,监测计数器的计数值;
当计数值为0时,读操作执行完成,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号。
为实现上述目的,按照本发明的第四个方面,提供了一种基于AXI总线的SoC系统,如第一方面、第二方面或第三方面所述的读写保序方法应用在所述SoC系统上,所述SoC系统包括:处理器、至少一个主机、BUS总线和至少一个从机,每个所述主机通过所述BUS总线与至少一个所述从机连接,其中,每个所述主机侧均设置有控制模块,每个所述从机侧均设置有响应模块;
目标主机用于向目标从机传输数据操作;
所述处理器用于根据预定数据操作的传输情况,选择性开启相应的目标控制模块;
目标控制模块用于向选定的目标从机发送虚拟包;
所述目标从机侧的目标响应模块用于按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标响应模块向所述目标控制模块发送完成信号;
所述目标控制模块用于接收所述目标从机的完成信号;
所述处理器还用于根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
进一步地,控制模块设置在相应主机与BUS总线之间,响应模块集成在相应从机内部;
每个控制模块与相应的响应模块通过BUS总线连接,以通过BUS总线传输预定数据操作;
每个控制模块与相应的响应模块还通过独立信号线连接,以通过独立信号线传输完成信号。
进一步地,所述基于AXI总线的SoC系统包括m个控制模块和n个响应模块,每个控制模块均分别与n个响应模块通过独立信号线连接,形成m×n的信号线阵列;
在目标响应模块向相应的目标控制模块发送完成信号后,目标响应模块首次接收到来自于主机的数据操作后,通过m根独立信号线向所有的控制模块发送自身被访问的反馈信号;
根据反馈信号确定继续进行访问的主机,暂停其他主机的访问请求。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:从机在识别到虚拟包后,监测预定数据操作的执行情况,从机把之前收到的同一个主机的所有请求真正执行完后,再发送完成信号,在接收到全部的完成信号后,才通知其他处理单元对共享存储区域进行相应的操作,可以避免期望的旧数据被新的数据覆盖,也可以避免取出不期望的旧数据(新的数据还未写入),实现读写数据保序,避免系统异常。
附图说明
图1是本发明实施例提供的一种基于AXI总线的写操作的数据交互过程示意图;
图2是本发明实施例提供的一种基于AXI总线的读操作的数据交互过程示意图;
图3是本发明实施例提供的一种基于AXI总线的SoC系统的结构示意图;
图4是本发明实施例提供的另一种基于AXI总线的SoC系统的结构示意图;
图5是本发明实施例提供的又一种基于AXI总线的SoC系统的结构示意图;
图6是本发明实施例提供的一种基于AXI总线的读写保序方法的流程示意图;
图7是本发明实施例提供的另一种基于AXI总线的读写保序方法的流程示意图;
图8是本发明实施例提供的又一种基于AXI总线的读写保序方法的流程示意图;
图9是本发明实施例提供的一种用于实现读写保序的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了更清楚的阐释本发明的方案,在介绍本发明的方案之前,先介绍一下AXI总线的数据传输机制。
AXI协议是基于burst的传输,并且定义了以下5个独立的传输通道:读地址通道、读数据通道、写地址通道、写数据通道和写响应通道;地址通道携带控制消息,控制消息用于描述被传输的数据属性,数据传输使用写通道来实现主机到从机的传输,从机使用写响应通道来完成一次写传输;读通道用来实现数据由从机到主机的传输。
读/写地址通道:读、写传输每个都有自己的地址通道,对应的地址通道承载着对应传输的地址控制信息。
读数据通道:读数据通道承载着读数据和指示读传输完成的读响应信号。
写数据通道:写数据通道的数据信息被认为是缓冲(buffered)了的,主机无需等待从机对上次写传输的确认即可发起一次新的写传输。
写响应通道:从机使用写响应通道对写传输进行响应,从机接收到写地址对应的最后一次传输的写数据后,就向主机发送写响应信号。
前面主要接收了AXI协议5个通道的作用,下面简单介绍一下各个通道对应的数据格式:
写地址通道信号包括如下字段:
AWID,写地址ID,用来标志一组写信号;AWADDR,写地址,定义一次写突发传输的写地址;AWLEN,突发长度,定义突发传输的次数;AWSIZE,突发大小,定义每次突发传输的字节数;AWBURST,突发类型;AWUSER,用户自定义信号。
写数据通道信号包括如下字段:
WID,一次写传输的ID tag;WDATA,写数据;WLAST,表明此次传输是最后一个突发传输;WUSER,用户自定义信号。
写响应通道信号包括如下字段:
BID,写响应ID tag;BRESP,写响应,表明写传输的状态;BUSER,用户自定义。
读地址通道信号包括如下字段:
ARID,读地址ID,用来标志一组写信号;ARADDR,读地址,定义一次写突发传输的读地址;ARLEN,突发长度,定义突发传输的次数;ARSIZE,突发大小,定义每次突发传输的字节数;ARUSER,用户自定义信号。
读数据通道信号包括如下字段:
RID,读ID tag;RDATA,读数据;RRESP,读响应,表明读传输的状态;RLAST,表明读突发的最后一次传输;RUSER,用户自定义。
如图1,基于AXI总线的写操作,通过写地址(AWADDR)访问从机,通过突发长度(AWLEN)定义突发传输的次数,通过突发大小(AWSIZE)定义每次突发传输的字节数,每个写地址指令之后会紧随相应的写数据,从机在接收到最后一个突发传输后,会向主机发送写响应信号,从机按照次序写入相应的数据。此种机制,会存在部分数据可能还挂在总线上,没有被写入到存储区域中,从机已经向主机发送了写响应信号,主机在接收到写响应信号后,会认为数据已经全部写入到存储区域中。
如图2,基于AXI总线的读操作,通过读地址(ARADDR)定义需要访问的从机,以由从机中获取相应的数据,但是在数据还没有完全读取完成时,若有其他处理单元发起对该段存储空间的重写操作,就会覆盖原来的数据。
为了解决前述问题,本发明实施例提供了一种基于AXI总线的SoC系统,该系统可以在任意计算设备中集成,包括但不限于个人计算机、移动设备、便携式计算机、服务器、显卡或人工智能计算设备等。
如图3和图4所示,所述SoC系统包括:处理器、至少一个主机、BUS总线和至少一个从机,每个所述主机通过所述BUS总线与至少一个所述从机连接,其中,每个所述主机侧均设置有控制模块,每个所述从机侧均设置有响应模块。其中,控制模块和响应模块均为基于raw(read after write,先写后读)的控制模块,控制模块具体如图4的raw_ctrl模块,响应模块具体如图4的raw_rsp模块。例如,所述SoC系统包括主机1、主机2......主机m,主机1侧设置有控制模块1、主机2侧设置有控制模块2......主机m侧设置有控制模块m,所述SoC系统包括从机1、从机2......从机n,从机1侧设置有响应模块1、从机2侧设置有响应模块2......从机n侧设置有响应模块n,其中,m和n的取值可以依据实际情况而定,本发明对此不做限制。
其中,控制模块可以集成在对应的主机中,也可以设置在主机和BUS总线之间,在优选的实施例中,控制模块设置在主机和BUS总线之间,将控制模块与主机解耦,部署的灵活性更高。
其中,响应模块可以集成在对应的从机中,也可以设置在从机与BUS总线之间,在优选的实施例中,响应模块集成在从机内,以保证数据响应的及时性。
其中,所述主机可以为GPU(Graphics Processing Unit,简写为图形处理器)、DMA(Direct Memory Access,直接存储器访问)或PCIE(Peripheral Component InterconnectExpress,高速串行计算机扩展总线标准)等,所述从机可以为存储器。
在本实施例中,每个控制模块与相应的响应模块通过BUS总线连接,以通过BUS总线传输预定数据操作;具体地,BUS总线包括多个IF(Interface)接口,每个控制模块与相应的响应模块通过BUS总线的IF接口连接。
进一步地,每个控制模块与相应的响应模块还通过独立信号线连接(如图4所示),以通过独立信号线传输完成信号。具体地,所述基于AXI总线的SoC系统包括m个控制模块和n个响应模块,每个控制模块均分别与n个响应模块通过独立信号线连接,形成m×n的信号线阵列。
在本实施例中,为了提高完成信号传输的稳定性,每个控制模块与相应的响应模块还通过独立信号线连接,即,在控制模块与响应模块之间设置有信号线,假设该系统有m个主机(AXI_MST_1~AXI_MST_m),n个从机(AXI_SLV_1~AXI_SLV_n),每个AXI_MST均配套设置有控制模块,则该系统具有m个控制模块(raw_ctrl_1、raw_ctrl_2......raw_ctrl_m),n个响应模块(raw_rsp_1、raw_rsp_2......raw_rsp_n),每个控制模块均分别与n个响应模块通过BUS总线连接,则每个控制模块与每个响应模块之间设置有独立的信号线,即具有m×n个信号线。
参阅图5,该SoC系统还包括raw_top模块,raw_top模块负责接收处理器的指令,将指令分发给需要控制的控制模块,同时对各响应模块的完成状态进行收集和记录上报。
在本实施例中,SoC系统包括一个或多个主机(AXI_MST_1~ AXI_MST_m),在主机和片上总线BUS间是具有虚拟包收发功能的控制模块(IF是总线和各挂载单元的接口模块);在从机侧(AXI_SLV_1~AXI_SLV_n),则将具有raw虚拟包响应功能的响应模块集成在从机的内部;另外,从机侧的完成信号通过旁路done信号进行传递,各个主机和从机之间分别独立拉线,如图4共m×n根done信号(完成信号)。
前文主要介绍了系统的构架,下面介绍每个模块的功能以及模块间的信号交互过程。
在本实施例中,目标主机用于向目标从机传输数据操作,其中,数据操作包括写数据操作和读数据操作,该写数据操作包括写地址指令和写数据指令,读数据操作包括读地址指令。
所述处理器用于根据预定数据操作的传输情况,选择性开启相应的目标控制模块;目标控制模块用于向选定的目标从机发送虚拟包;其中,虚拟包中设置有特殊字符,以通过特殊字符区分正常包和虚拟包。
所述目标响应模块用于按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号;
所述目标控制模块还用于接收所述目标从机的完成信号;
所述处理器用于根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。具体地,当所述预定数据操作为写操作时,在所述目标控制模块接收到全部所述目标从机的完成信号,通知其他处理单元能够从所述预定数据操作所对应的存储区域提取数据;当所述预定数据操作为读操作时,在所述目标控制模块接收到全部所述目标从机的完成信号,通知其他处理单元能够重新使用所述预定数据操作所对应的存储区域。
在可选的实施例中,响应模块中设置有计数器,通过计数器对写操作计数或者对读操作计数,通过监测计数器的计数值确定预定数据操作的完成状态,以触发响应模块发送完成信号。
具体地,响应模块在收到每个主机的正常包后,通过计数器对正常包进行计数,每收到一个正常包进队列,则计数器加1,每完成一个正常包的处理,则计数器减1;待收到虚拟包后,对计数器的计数值进行监测,当计数器的计数值为0时,响应模块向所述目标控制模块发送完成信号。
举例来讲,当预定数据操作为写操作时,每收到一个正常的写地址包,则计数器加1,每完成一个写地址包对应的写数据的写入后,计数器减1;待接收到虚拟的写地址包时,对计数器的计数值进行监测,当计数器的计数值为0时,响应模块向所述目标控制模块发送完成信号。
当预定数据操作为读操作时,每收到一个正常的读地址包,则计数器加1,每完成一个读地址包对应的读数据的读取后,计数器减1;待接收到虚拟的读地址包时,对计数器的计数值进行监测,当计数器的计数值为0时,响应模块向所述目标控制模块发送完成信号。
在其他实施例中,对于读操作的计数,也可以将计数器设置在主机侧,即,可以将计数器设置在控制模块中,具体可以依据实际情况而定,在此不做具体限定。
在本实施例中,在每个主机和总线之间、从机内部增加raw模块,当主机对从机进行数据存储时,在发送完写地址和写数据后,主机侧raw模块对从机侧进行一次虚拟的数据存储操作,当从机侧接收到虚拟包时,会等待之前收到的该主机所有的正常包被真正写入存储器后再响应虚拟包(数据在从机侧会先进行AXI写响应处理,然后再进行真正的写数据操作,虚拟包和正常包通过预定USER或ID进行区分),并通过生成旁路完成信号的方式反馈给主机侧的raw模块,以表示该主机之前的写业务操作已被存储器真正完成,然后主机侧raw模块会生成完成的状态和中断信号。处理器通过中断检测或者状态轮训的方式获取操作的完成状态,再告知其他主机该笔数据已操作完成,即可保证数据被正确取用,避免前后操作间数据的误取。同时,从机侧通过USER或ID对每个主机进行标记,亦可实现对每个主机虚拟包的独立响应。
通过在AXI链路增加raw虚拟包收发机制来确定读写数据操作的真正完成时刻,可避免AXI时间上的不确定性而引起系统数据的乱序,保证主机间数据交互的正确性。
在本实施例中,各个模块相互配合实现了读写保序的功能,下面分别从处理器侧、控制模块侧和响应模块侧解释说明读写保序方法的实现机制。
参阅图6,本发明实施例提供了一种基于AXI总线的读写保序方法,下文从处理器的角度介绍读写保序方法,具体包括如下步骤:
步骤101:在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包。
以图4为例,目标主机指的是与至少一个从机进行交互的主机,例如目标主机为AXI_MST_1、AXI_MST_2......AXI_MST_n中的一个主机。
其中,预定数据操作包括写数据操作和读数据操作,该写数据操作包括写地址指令和写数据指令,读数据操作包括读地址指令。预定数据操作指的是在一段时间内发送到从机,且完成状态不明确的数据操作,可能包含多组写地址指令和写数据指令。
在其中的一个实施例中,当预定数据操作为写数据操作时,可以按照设定查询周期开启所述目标控制模块的raw功能,先通过所述目标控制模块关闭所述目标主机的写地址通道,待已发送至所述目标从机的写地址所对应的写数据发送完成后,再通过所述目标控制模块关闭所述目标主机的写数据通道。具体的可以依次将写地址通道的ready信号拉低和写数据通道的ready信号拉低,以关闭对应的写地址通道和写数据通道,阻止目标主机继续向从机发送写地址和写数据。
在关闭了写地址通道和写数据通道后,控制目标控制模块向选定的目标从机发送包含预定字符的写地址虚拟包和写数据虚拟包。其中,写地址虚拟包的数据格式与正常的写地址通道信号的数据格式相同,写数据虚拟包的数据格式与正常的写数据通道信号的数据格式相同,但是,写地址虚拟包的AWID或者AWUSER中设置有预定字符,其中,根据AXI协议的版本适应性选择是设置AWID为预定字符,还是设置AWUSER为预定字符。写数据虚拟包的WID或WUSER中设置有预定字符,通过预定字符来区分虚拟包和正常包。其中,根据AXI协议的版本适应性选择是设置WID为预定字符,还是设置WUSER为预定字符。
在另一个实施例中,当预定数据操作为读数据操作时,可以按照设定查询周期开启所述目标控制模块的raw功能,通过所述目标控制模块关闭所述目标主机的读地址通道;具体地,可以将读地址通道的ready信号拉低,阻止目标主机继续向从机发送读地址。
在关闭了读地址通道后,控制目标控制模块向选定的目标从机发送包含预定字符的读地址虚拟包。
其中,选定的目标从机指的是前述预定数据操作所对应访问的目标从机,目标从机的数目可以为一个,也可以为多个,具体依据实际情况而定。其中,写地址或读地址均分别包含基地址和偏移地址,不同的基地址代表不同的从机,可以依据基地址确定要访问的从机,偏移地址是针对某个从机而言的,可以通过偏移地址确定要访问的存储区域。因此,可以根据预定数据操作所包括的写地址确定该预定数据操作所对应的从机,将该从机作为选定的目标从机。
其中,预设查询周期依据实际情况而定,例如,可以依据数据传输的情况动态调整预设查询周期的大小,如果数据访问比较频繁,则可以缩短查询周期。或者,在其他实施例中,也可以由主机根据自身的数据传输情况向处理器发起查询请求,处理器接收到查询请求后,开启对应控制模块的raw功能。
步骤102:确定所述目标控制模块是否接收到所述目标从机的完成信号,其中,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号。
本实施例并不以写响应或读响应作为数据写完或读完的标志,而是以接收到完成信号作为数据写完或读完的标志,可以避免数据错乱。
所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当业务包中没有包含预定字符,则当前处理的业务包为正常包,执行正常的写数据操作或读数据操作;当业务包中包含预定字符,则当前处理的业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号,在优选的实施例中,通过目标响应模块与目标控制模块之间的信号线传输完成信号。
其中,若当前处理的业务包为虚拟包,则不会对该虚拟包发起真实的读写操作,而是会等待该虚拟包对应master的包被真正写进存储器再响应。
在接收到全部目标从机的目标响应模块发送的完成信号之后,才认定预定数据操作所对应的数据已经写完或者读完。
步骤103:根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
在本实施例中,当所述预定数据操作为写操作时,在所述目标控制模块接收到全部所述目标从机的完成信号,通知其他处理单元可以从所述预定数据操作所对应的存储区域提取数据;当所述预定数据操作为读操作时,在所述目标控制模块接收到全部所述目标从机的完成信号,通知其他处理单元可以重新使用所述预定数据操作所对应的存储区域。
参阅图7,本实施例提供了另一种基于AXI总线的读写保序方法,下文从控制模块的角度介绍读写保序方法,具体包括如下步骤:
步骤201:在目标主机完成预定数据操作的传输后,目标控制模块向选定的目标从机发送虚拟包。
以图4为例,目标主机指的是与至少一个从机进行交互的主机,例如目标主机为AXI_MST_1、AXI_MST_2......AXI_MST_n中的一个主机。
其中,预定数据操作包括写数据操作和读数据操作,该写数据操作包括写地址指令和写数据指令,读数据操作包括读地址指令。预定数据操作指的是在一段时间内发送到从机,且完成状态不明确的数据操作,可能包含多组写地址指令和写数据指令。
在其中的一个实施例中,当预定数据操作为写数据操作时,所述目标控制模块先通过所述目标控制模块关闭所述目标主机的写地址通道,待已发送至所述目标从机的写地址所对应的写数据发送完成后,所述目标控制模块再关闭所述目标主机的写数据通道。具体的可以依次将写地址通道的ready信号拉低和写数据通道的ready信号拉低,以关闭对应的写地址通道和写数据通道,阻止目标主机继续向从机发送写地址和写数据。
在关闭了写地址通道和写数据通道后,目标控制模块向选定的目标从机发送包含预定字符的写地址虚拟包和写数据虚拟包。其中,写地址虚拟包的数据格式与正常的写地址通道信号的数据格式相同,写数据虚拟包的数据格式与正常的写数据通道信号的数据格式相同,但是,写地址虚拟包的AWID或者AWUSER中设置有预定字符,其中,根据AXI协议的版本适应性选择是设置AWID为预定字符,还是设置AWUSER为预定字符。写数据虚拟包的WID或WUSER中设置有预定字符,通过预定字符来区分虚拟包和正常包。其中,根据AXI协议的版本适应性选择是设置WID为预定字符,还是设置WUSER为预定字符。
在另一个实施例中,当预定数据操作为读数据操作时,可以按照设定查询周期开启所述目标控制模块的raw功能,通过所述目标控制模块关闭所述目标主机的读地址通道;具体地,可以将读地址通道的ready信号拉低,阻止目标主机继续向从机发送读地址。
在关闭了读地址通道后,目标控制模块向选定的目标从机发送包含预定字符的读地址虚拟包。其中,所述虚拟包包括读地址虚拟包,读地址虚拟包的数据格式与正常的读地址通道信号的数据格式相同,读地址虚拟包的ARID或者ARUSER中设置有预定字符,其中,根据AXI协议的版本适应性选择是设置ARID为预定字符,以通过预定字符来区分虚拟包和正常包。
步骤202:所述目标控制模块接收所述目标从机的完成信号,其中,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号。
在接收到全部目标从机的目标响应模块发送的完成信号之后,才认定预定数据操作所对应的数据已经写完或者读完。
在接收到全部的目标响应模块发送的完成信号之后,开启相应的写地址通道、写数据通道;或者开启相应的读地址通道,以继续传输数据。
步骤203:在所述目标控制模块接收到全部所述目标从机的完成信号后,上报处理器,以便于处理器根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
在本实施例中,目标控制模块可以产生中断信号,以上报处理器。
在具体应用场景下,所述目标控制模块还接收来自于所述目标从机的响应信号,该响应信号为通过AXI总线传输的写响应信号或读响应信号,该响应信号包含正常包的响应信号,也包含虚拟包的响应信号,目标控制模块只将正常包的响应信号发送至目标主机。具体地,在接收到响应信号后,判断所述响应信号中是否存在预定字符;若所述响应信号中存在预定字符,则过滤该响应信号;若所述响应信号中不存在预定字符,则将该响应信号传输至所述目标主机。
参阅图8,本实施例提供了另一种基于AXI总线的读写保序方法,下文从响应模块的角度介绍读写保序方法,具体包括如下步骤:
步骤301:目标从机按照次序对来自于目标主机的业务包进行检测,判断当前业务包的类型。
在本实施例中,所述目标从机按照次序对来自于目标主机的业务包进行检测;如果当前业务包中没有包含预定字符,则当前业务包为正常包;如果当前业务包中包含预定字符,则当前业务包为虚拟包。
步骤302:如果所述当前业务包为正常包,则将该正常包存储在相应的存储区域,或,将与该正常包相应的数据发送至目标主机。
即,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当业务包中没有包含预定字符,则当前处理的业务包为正常包,执行正常的写数据操作或读数据操作;当业务包中包含预定字符,则当前处理的业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号,在优选的实施例中,通过目标响应模块与目标控制模块之间的信号线传输完成信号。
步骤303:如果所述当前业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号,以便于处理器根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
在可选的实施例中,响应模块中设置有计数器,通过计数器对写操作计数或者对读操作计数,通过监测计数器的计数值确定预定数据操作的完成状态,以触发响应模块发送完成信号。
所述正常包包括正常写操作包和正常读操作包;如果所述当前业务包为正常写操作包,则在接收到正常写操作包后,计数器加1,在该正常写操作包所对应的数据存储在相应的存储区域后,计数器减1;如果所述当前业务包为正常读操作包,则在接收到正常读操作包后,计数器加1,在该正常读操作包所对应的数据发送至目标主机后,计数器减1。
所述虚拟包包括虚拟写操作包和虚拟读数据包;如果所述当前业务包为虚拟写操作包,监测计数器的计数值;当计数值为0时,写操作执行完成,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号;如果所述当前业务包为虚拟读操作包,监测计数器的计数值;当计数值为0时,读操作执行完成,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号。
具体地,响应模块在收到每个主机的正常包后,通过计数器对正常包进行计数,每收到一个正常包进队列,则计数器加1,每完成一个正常包的处理,则计数器减1;待收到虚拟包后,对计数器的计数值进行监测,当计数器的计数值为0时,响应模块向所述目标控制模块发送完成信号。
举例来讲,当预定数据操作为写操作时,每收到一个正常的写地址包,则计数器加1,每完成一个写地址包对应的写数据的写入后,计数器减1;待接收到虚拟的写地址包时,对计数器的计数值进行监测,当计数器的计数值为0时,响应模块向所述目标控制模块发送完成信号。
当预定数据操作为读操作时,每收到一个正常的读地址包,则计数器加1,每完成一个读地址包对应的读数据的读取后,计数器减1;待接收到虚拟的读地址包时,对计数器的计数值进行监测,当计数器的计数值为0时,响应模块向所述目标控制模块发送完成信号。
在其他实施例中,对于读操作的计数,也可以将计数器设置在主机侧,即,可以将计数器设置在控制模块中,具体可以依据实际情况而定,在此不做具体限定。
在本实施例中,从机在识别到虚拟包后,才向主机发送完成信号,可以保证目标从机把之前收到的同一个主机的所有请求真正执行完后,再发送完成信号,保证读写数据保序,避免系统异常。
进一步地,虚拟包采用符合AXI协议的读/写通道数据格式,通过正常的AXI传输通道传输的请求,但区别于正常的AXI读写请求,虚拟包并不会被从机作为数据的读/写请求而被执行。
采用控制ready信号的方法,暂停某个主机的读写请求,以达到保序目的方法。采用了特殊的USER/ID做标识,区分AXI虚拟请求和正常AXI业务请求,并由从机来进行区分和过滤的方法。
在实际应用场景下,为了便于各个主机获取到各个从机的存储区域的状态,所述处理器中设置有多个状态映射表,一个该状态映射表对应一个从机,该状态映射表中存储有该从机各个存储区域的操作状态,具体地,初始状态下,各个存储区域的操作状态均为空,当存在一个主机向某一个存储区域进行数据操作时,更新相应存储区域的操作状态为访问中,在接收到该存储区域对应的完成信号后,更新该存储区域的操作状态为已完成,在主机需要访问某个从机时,处理器将该从机的状态映射表下发至主机侧,主机侧根据该状态映射表确定可以访问的存储区域,对于状态为空或者已完成的存储区域,主机可以进行相应的数据操作。
在实际应用场景下,结合图5,会存在不同的主机先后访问同一个从机的情况,为了避免不同的主机对同一个从机进行操作,从机侧的数据处理量过大,从机可以根据自身的数据处理情况反向调控并行访问的主机的数量。
在可选的实施例中,当从机侧的数据量大于预设数据量阈值时,在目标响应模块向相应的目标控制模块发送完成信号后,目标响应模块首次接收到来自于主机的数据操作后,通过m根独立信号线向所有的控制模块发送自身被访问的反馈信号,根据反馈信号确定继续进行访问的主机,暂停其他主机的访问请求。其中,所有的控制模块将反馈信号发送至raw_top模块,再由raw_top模块将反馈信号发送至处理器,处理器根据反馈信号的类型调控同时访问从机的主机数量,其中,反馈信号的类型与主机数量是一一对应关系,处理器根据主机数量确定可以继续访问的主机。
当允许并行访问的主机数量为N个时,按照数据操作到达至从机的先后顺序,对主机进行排序,其中,前N个主机可以继续访问。例如,当主机数量为一时,可以优先允许数据操作最先到达从机侧的主机继续进行访问,暂停其他主机的访问请求。
在优选的实施例中,应该考虑到主机的优选级或者数据操作的优先级,基于优先级确定可以继续访问的主机,具体地,所有的控制模块将反馈信号发送至各自对应的主机,所有的主机进行选举,允许优先级较高的主机访问该目标响应模块所对应的从机,前述优先级可以为主机的优选级或者数据操作的优先级,基于实际情况而定。此种方式,可以先保证优先级较高的主机先进行访问,避免数据滞后。
在本实施例中,从机通过反馈机制上报自身的数据处理情况,以便于动态调节并行访问从机的主机数量,避免过多的数据挂在总线上,且被暂停访问的主机,也可以根据数据操作确定是否可以选择替代从机,如果可以选择替代从机,则更换被访问的从机,可以平衡各个从机的数据处理量,避免一个从机过于繁忙,而其他从机过于空闲,从整体上提高效率。
下面基于写操作保序实例和读操作保序实例,结合图5具体阐述读写保序方法:
1、写操作保序实例:
(1)AXI_MST_*向AXI_SLV_*发送写操作;
(2)处理器在目标AXI_MST完成预定写数据传输后通过配置raw_top的控制寄存器来启动选定raw_ctrl模块的raw功能;
(3)被启动的raw_ctrl模块,通过将目标AXI_MST的写地址通道ready拉低,阻断写地址的继续传播;然后待相应的通道数据发送完毕,将写数据通道的ready拉低,阻止该目标AXI_MST继续向BUS总线发包;
(4)被启动的raw_ctrl模块,向选定AXI_SLV发送虚拟的写地址和写数据包(虚拟包通过AWUSER/WUSER或者AWID/WID和正常业务报文区分,通过写地址选定相应的AXI_SLV);
(5)AXI_SLV在收到普通业务包后,会立即生成AXI响应,但是此时写数据存储在队列里,并没有真正写入存储器;前述描述可以理解为,当多笔写数据依次进入时,此时它们的数据域段会依次存储在队列里,并没有真正写进存储器,但是响应在进入队列的时候便会生成。当raw_rsp检测到虚拟包时,会对该目标MST之前的写操作进行监测,等它们全部被写入存储器后,raw_rsp会生成完成信号,然后生成完成信号mst*_slv*_done旁路传递给该目标AXI_MST的raw_ctrl模块,其中虚拟包的AXI响应通过BUSER或者BID标识;具体地,可以按照如下方式对写操作进行监测,存储器对收到的每个master的正常业务报文分别进行counter计数,每收到一个业务包进队列按照计数器加1,出队进入存储器计数器减1;待收到虚拟包后且counter回0,进行完成响应。
(6)当raw_ctrl模块收到来自AXI_SLV侧的AXI写数据响应后,会根据BUSER或者BID将虚拟包的响应过滤掉,防止虚拟包的响应发送至目标AXI_MST,导致目标AXI_MST处理异常(因为这些包的发起源头是raw_ctrl模块,所以需要在raw_ctrl模块处终结);
(7)raw_ctrl模块收齐指定的AXI_SLV的完成信号后,表明该目标AXI_MST的指定的写数据传输已经完成,此时raw_ctrl模块会生成写完成信号给raw_top模块,由raw_top模块生成该目标AXI_MST的写操作完成状态给处理器,并生成中断信号;
(8)处理器通过寄存器轮询或者中断上报的方式得到写操作完成状态,然后调控其他处理单元对从机该段存储区域进行数据取用,避免数据未写完就被其他处理单元读取,保证读数据正确性。
2、读操作保序实例:
(1)AXI_MST_*向AXI_SLV_*发送读操作;
(2)处理器在目标AXI_MST发送完预定读数据请求后,通过配置raw_top的控制寄存器来启动选定raw_ctrl模块的raw功能;
(3)被启动的raw_ctrl模块,通过将目标AXI_MST的读地址通道的ready拉低,阻止该master继续向BUS总线发起新的读数据请求;
(4)被启动的raw_ctrl模块,向选定AXI_SLV发送虚拟的读地址包(虚拟包通过ARUSER或者ARID和正常业务报文区分);
(5)AXI_SLV会按照次序对收到的目标AXI_MST的读地址包进行处理,当通过ARUSER或者ARID识别出当前处理的是虚拟包时,则对读操作进行监测,等数据全部返回给主机后,raw_rsp会生成完成信号,表明该master的正常包已经被处理完成,此时会生成一个不带数据内容的虚拟包响应,同时生成该目标AXI_MST在该AXI_SLV的读完成信号给相应的raw_ctrl模块;具体地,可以按照如下方式对写操作进行监测,存储器对收到的每个master的正常业务报文分别进行counter计数,每收到一个业务包进队列按照计数器加1,出队进入存储器计数器减1;待收到虚拟包后且counter回0,进行完成响应。
(6)当raw_ctrl模块收到来自AXI_SLV侧的读数据响应后,会根据ARUSER或者ARID将虚拟包响应过滤掉,防止虚拟包的响应发送至目标AXI_MST,导致目标AXI_MST处理异常(因为这些包的发起源头是raw_ctrl模块,所以需要在raw_ctrl模块处终结);
(7)待raw_ctrl模块收齐指定的AXI_SLV的读完成信号,则表明该目标AXI_MST的所有读数据传输工作已经完成,此时raw_ctrl模块会生成该目标AXI_MST的读完成信号给raw_top模块,由raw_top模块生成读操作完成状态,并生成中断信号;
(8)处理器通过寄存器轮询或者中断上报的方式得到读操作完成状态,然后调控其他处理单元对从机该段存储区域进行重新使用,避免数据未读完被其他处理单元写数据覆盖,保证读数据正确性。
在前文提供的读写保序方法的基础上,本发明还提供了一种用于实现读写保序的装置,如图9所示,是本发明实施例的装置架构示意图。本实施例的装置包括一个或多个处理器21以及存储器22。其中,图9中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图9中以通过总线连接为例。
所述存储器22作为一种基于AXI总线的读写保序方法的非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如前文的基于AXI总线的读写保序方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现前文的基于AXI总线的读写保序方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例中的基于AXI总线的读写保序方法,例如,执行以上描述的图6或图7或图8所示的各个步骤。当该装置执行如图6所示的读写保序方法的各个步骤时,该装置具体可以为控制器;当该装置执行如图7所示的读写保序方法的各个步骤时,该装置具体可以为raw_ctrl模块;当该装置执行如图8所示的读写保序方法的各个步骤时,该装置具体可以为raw_rsp模块。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种基于AXI总线的读写保序方法,其特征在于,包括:
在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包;
确定所述目标控制模块是否接收到所述目标从机的完成信号,其中,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号;
根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
2.根据权利要求1所述的基于AXI总线的读写保序方法,其特征在于,所述根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型包括:
当所述预定数据操作为写操作时,在所述目标控制模块接收到全部所述目标从机的完成信号之后,通知其他处理单元能够从所述预定数据操作所对应的存储区域提取数据;
当所述预定数据操作为读操作时,在所述目标控制模块接收到全部所述目标从机的完成信号之后,通知其他处理单元能够重新使用所述预定数据操作所对应的存储区域。
3.根据权利要求1所述的基于AXI总线的读写保序方法,其特征在于,所述预定数据操作为写操作,所述在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包包括:
按照设定查询周期开启所述目标控制模块的raw功能,先通过所述目标控制模块关闭所述目标主机的写地址通道,待已发送至所述目标从机的写地址所对应的写数据发送完成后,再通过所述目标控制模块关闭所述目标主机的写数据通道;
控制所述目标控制模块向选定的目标从机发送包含预定字符的写地址虚拟包和写数据虚拟包。
4.根据权利要求1所述的基于AXI总线的读写保序方法,其特征在于,所述预定数据操作为读操作,所述在目标主机完成预定数据操作的传输后,控制目标控制模块向选定的目标从机发送虚拟包包括:
按照设定查询周期开启所述目标控制模块的raw功能,通过所述目标控制模块关闭所述目标主机的读地址通道;
控制目标控制模块向选定的目标从机发送包含预定字符的读地址虚拟包。
5.根据权利要求1所述的基于AXI总线的读写保序方法,其特征在于,当所述预定数据操作为写操作时,所述虚拟包包括写地址虚拟包和写数据虚拟包,写地址虚拟包的数据格式与正常的写地址通道信号的数据格式相同,写数据虚拟包的数据格式与正常的写数据通道信号的数据格式相同,写地址虚拟包的AWID或者AWUSER中设置有预定字符,写数据虚拟包的WID或WUSER中设置有预定字符,以通过预定字符来区分虚拟包和正常包;
当所述预定数据操作为读操作时,所述虚拟包包括读地址虚拟包,读地址虚拟包的数据格式与正常的读地址通道信号的数据格式相同,读地址虚拟包的ARID或者ARUSER中设置有预定字符,以通过预定字符来区分虚拟包和正常包。
6.一种基于AXI总线的读写保序方法,其特征在于,包括:
在目标主机完成预定数据操作的传输后,目标控制模块向选定的目标从机发送虚拟包;
所述目标控制模块接收所述目标从机的完成信号,其中,所述目标从机按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标控制模块发送完成信号;
在所述目标控制模块接收到全部所述目标从机的完成信号后,上报处理器,以便于处理器根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
7.根据权利要求6所述的基于AXI总线的读写保序方法,其特征在于,还包括:
所述目标控制模块还接收来自于所述目标从机的响应信号;
判断所述响应信号中是否存在预定字符;
若所述响应信号中存在预定字符,则过滤所述响应信号;
若所述响应信号中不存在预定字符,则将所述响应信号传输至所述目标主机。
8.一种基于AXI总线的读写保序方法,其特征在于,包括:
目标从机按照次序对来自于目标主机的业务包进行检测,判断当前业务包的类型;
如果所述当前业务包为正常包,则将该正常包存储在相应的存储区域,或,将与该正常包相应的数据发送至目标主机;
如果所述当前业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号,以便于处理器根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
9.根据权利要求8所述的基于AXI总线的读写保序方法,其特征在于,所述目标从机按照次序对来自于目标主机的业务包进行检测,判断当前业务包的类型包括:
所述目标从机按照次序对来自于目标主机的业务包进行检测;
如果当前业务包中没有包含预定字符,则确定当前业务包为正常包;
如果当前业务包中包含预定字符,则确定当前业务包为虚拟包。
10.根据权利要求8所述的基于AXI总线的读写保序方法,其特征在于,所述响应模块内设置有计数器,所述正常包包括正常写操作包和正常读操作包;
所述如果所述当前业务包为正常包,则将该正常包存储在相应的存储区域,或,将与该正常包相应的数据发送至目标主机包括:
如果所述当前业务包为正常写操作包,则在接收到正常写操作包后,计数器加1,在所述正常写操作包所对应的数据存储在相应的存储区域后,计数器减1;
如果所述当前业务包为正常读操作包,则在接收到正常读操作包后,计数器加1,在所述正常读操作包所对应的数据发送至目标主机后,计数器减1。
11.根据权利要求10所述的基于AXI总线的读写保序方法,其特征在于,所述虚拟包包括虚拟写操作包和虚拟读数据包;
所述如果所述当前业务包为虚拟包,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号包括:
如果所述当前业务包为虚拟写操作包,监测计数器的计数值;
当计数值为0时,写操作执行完成,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号;
如果所述当前业务包为虚拟读操作包,监测计数器的计数值;
当计数值为0时,读操作执行完成,所述目标从机侧的目标响应模块向所述目标主机侧的目标控制模块发送完成信号。
12.一种基于AXI总线的SoC系统,其特征在于,如权利要求1至11中任一项权利要求所述的基于AXI总线的读写保序方法应用在所述SoC系统上,所述SoC系统包括:处理器、至少一个主机、BUS总线和至少一个从机,每个主机通过所述BUS总线与至少一个从机连接,其中,每个主机侧均设置有控制模块,每个从机侧均设置有响应模块;
目标主机用于向目标从机传输数据操作;
所述处理器用于根据预定数据操作的传输情况,选择性开启相应的目标控制模块;
目标控制模块用于向选定的目标从机发送虚拟包;
所述目标从机侧的目标响应模块用于按照次序对来自于所述目标主机的业务包进行处理,当识别出当前处理的业务包为虚拟包时,监测预定数据操作的执行情况,在预定数据操作执行完成后,所述目标响应模块向所述目标控制模块发送完成信号;
所述目标控制模块用于接收所述目标从机的完成信号;
所述处理器还用于根据完成信号确定预定数据操作的完成状态,进而确定其他处理单元能够对所述预定数据操作所对应的存储区域执行的操作类型。
13.根据权利要求12所述的基于AXI总线的SoC系统,其特征在于,控制模块设置在相应主机与BUS总线之间,响应模块集成在相应从机内部;
每个控制模块与相应的响应模块通过BUS总线连接,以通过BUS总线传输预定数据操作;
每个控制模块与相应的响应模块还通过独立信号线连接,以通过独立信号线传输完成信号。
14.根据权利要求13所述的基于AXI总线的SoC系统,其特征在于,所述基于AXI总线的SoC系统包括m个控制模块和n个响应模块,每个控制模块均分别与n个响应模块通过独立信号线连接,形成m×n的信号线阵列;
在目标响应模块向相应的目标控制模块发送完成信号后,目标响应模块首次接收到来自于主机的数据操作后,通过m根独立信号线向所有的控制模块发送自身被访问的反馈信号;
根据反馈信号确定继续进行访问的主机,暂停其他主机的访问请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211630639.9A CN115617718B (zh) | 2022-12-19 | 2022-12-19 | 一种基于AXI总线的读写保序方法及SoC系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211630639.9A CN115617718B (zh) | 2022-12-19 | 2022-12-19 | 一种基于AXI总线的读写保序方法及SoC系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115617718A true CN115617718A (zh) | 2023-01-17 |
CN115617718B CN115617718B (zh) | 2023-03-21 |
Family
ID=84880454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211630639.9A Active CN115617718B (zh) | 2022-12-19 | 2022-12-19 | 一种基于AXI总线的读写保序方法及SoC系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617718B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431558A (zh) * | 2023-06-12 | 2023-07-14 | 太初(无锡)电子科技有限公司 | 一种基于axi协议的请求响应方法、装置、系统及介质 |
CN116561056A (zh) * | 2023-07-07 | 2023-08-08 | 芯动微电子科技(珠海)有限公司 | 一种片上系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149736A (zh) * | 1995-06-05 | 1997-05-14 | 北京航空航天大学 | 一种分布式存储器共享管理方法 |
US6195748B1 (en) * | 1997-11-26 | 2001-02-27 | Compaq Computer Corporation | Apparatus for sampling instruction execution information in a processor pipeline |
CN101477505A (zh) * | 2008-12-23 | 2009-07-08 | 北京中星微电子有限公司 | 一种主、从设备之间通过总线传输数据的方法 |
CN101855622A (zh) * | 2007-11-09 | 2010-10-06 | 多数有限公司 | 用于紧密耦合多处理器的共享存储器系统 |
US20120079148A1 (en) * | 2010-09-29 | 2012-03-29 | Stmicroelectronics S.R.L. | Reordering arrangement |
CN105005546A (zh) * | 2015-06-23 | 2015-10-28 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种内置交点队列的异步axi总线结构 |
CN110865769A (zh) * | 2018-08-28 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 处理读/写请求的方法、网络存储系统及电子设备 |
CN113490927A (zh) * | 2019-02-22 | 2021-10-08 | 微软技术许可有限责任公司 | 具有硬件集成和乱序放置的rdma输送 |
CN113760792A (zh) * | 2021-09-10 | 2021-12-07 | 西安电子科技大学重庆集成电路创新研究院 | 基于fpga的图像存取的axi4总线控制电路及其数据传输方法 |
CN114490463A (zh) * | 2020-11-13 | 2022-05-13 | 华为技术有限公司 | 一种保序执行写请求的方法及网络设备 |
CN114564420A (zh) * | 2022-01-19 | 2022-05-31 | 中国电子科技集团公司第十研究所 | 多核处理器共享并行总线的方法 |
-
2022
- 2022-12-19 CN CN202211630639.9A patent/CN115617718B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149736A (zh) * | 1995-06-05 | 1997-05-14 | 北京航空航天大学 | 一种分布式存储器共享管理方法 |
US6195748B1 (en) * | 1997-11-26 | 2001-02-27 | Compaq Computer Corporation | Apparatus for sampling instruction execution information in a processor pipeline |
CN101855622A (zh) * | 2007-11-09 | 2010-10-06 | 多数有限公司 | 用于紧密耦合多处理器的共享存储器系统 |
CN101477505A (zh) * | 2008-12-23 | 2009-07-08 | 北京中星微电子有限公司 | 一种主、从设备之间通过总线传输数据的方法 |
US20120079148A1 (en) * | 2010-09-29 | 2012-03-29 | Stmicroelectronics S.R.L. | Reordering arrangement |
CN105005546A (zh) * | 2015-06-23 | 2015-10-28 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种内置交点队列的异步axi总线结构 |
CN110865769A (zh) * | 2018-08-28 | 2020-03-06 | 阿里巴巴集团控股有限公司 | 处理读/写请求的方法、网络存储系统及电子设备 |
CN113490927A (zh) * | 2019-02-22 | 2021-10-08 | 微软技术许可有限责任公司 | 具有硬件集成和乱序放置的rdma输送 |
CN114490463A (zh) * | 2020-11-13 | 2022-05-13 | 华为技术有限公司 | 一种保序执行写请求的方法及网络设备 |
WO2022100116A1 (zh) * | 2020-11-13 | 2022-05-19 | 华为技术有限公司 | 一种保序执行写请求的方法及网络设备 |
CN113760792A (zh) * | 2021-09-10 | 2021-12-07 | 西安电子科技大学重庆集成电路创新研究院 | 基于fpga的图像存取的axi4总线控制电路及其数据传输方法 |
CN114564420A (zh) * | 2022-01-19 | 2022-05-31 | 中国电子科技集团公司第十研究所 | 多核处理器共享并行总线的方法 |
Non-Patent Citations (1)
Title |
---|
陶亮: "基于AXIS的Clos结构高速交换网络的设计与实现" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431558A (zh) * | 2023-06-12 | 2023-07-14 | 太初(无锡)电子科技有限公司 | 一种基于axi协议的请求响应方法、装置、系统及介质 |
CN116431558B (zh) * | 2023-06-12 | 2023-09-29 | 太初(无锡)电子科技有限公司 | 一种基于axi协议的请求响应方法、装置、系统及介质 |
CN116561056A (zh) * | 2023-07-07 | 2023-08-08 | 芯动微电子科技(珠海)有限公司 | 一种片上系统 |
CN116561056B (zh) * | 2023-07-07 | 2024-02-20 | 芯动微电子科技(珠海)有限公司 | 一种片上系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115617718B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115617718B (zh) | 一种基于AXI总线的读写保序方法及SoC系统 | |
US11169938B2 (en) | Non-volatile memory (NVM) express (NVMe) data processing method and system | |
US10649815B2 (en) | Apparatus and method of managing shared resources in achieving IO virtualization in a storage device | |
EP3462326A1 (en) | Nvme device, and methods for reading and writing nvme data | |
CN100481043C (zh) | 用于处理输入/输出命令的方法、系统和程序 | |
US7069373B2 (en) | USB endpoint controller flexible memory management | |
WO2016127552A1 (zh) | 一种直接内存存取dma控制器及数据传输的方法 | |
EP3608790B1 (en) | Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests | |
US6345345B1 (en) | Data communications device and associated method for arbitrating access using dynamically programmable arbitration scheme and limits on data transfers | |
US11983136B2 (en) | PCIe device and operating method thereof | |
US7809068B2 (en) | Integrated circuit capable of independently operating a plurality of communication channels | |
US11928070B2 (en) | PCIe device | |
US9734102B2 (en) | Data transfer | |
CN112214157A (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
CN105681222A (zh) | 一种数据接收缓存方法、装置及通信系统 | |
US20030172203A1 (en) | Automated transfer of a data unit comprising a plurality of fundamental data units between a host device and a storage medium | |
EP3321809B1 (en) | Memory access method, apparatus and system | |
CN1705929B (zh) | 用于将数据返回给通过总线接收的读请求的方法和系统 | |
US6516343B1 (en) | Computer system and method for enhancing memory-to-memory copy transactions by utilizing multiple system control units | |
JP2014167818A (ja) | データ転送装置およびデータ転送方法 | |
US10977201B1 (en) | Per IO direct memory access redirection | |
CN116226021B (zh) | 数据收发方法、装置以及图形处理器 | |
CN113934671B (zh) | 一种接口控制芯片及网络设备 | |
CN114662162B (zh) | 实现动态分配vf的多算法核高性能sr-iov加解密系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |