CN116049069A - 数据读取方法及相关装置 - Google Patents

数据读取方法及相关装置 Download PDF

Info

Publication number
CN116049069A
CN116049069A CN202111679322.XA CN202111679322A CN116049069A CN 116049069 A CN116049069 A CN 116049069A CN 202111679322 A CN202111679322 A CN 202111679322A CN 116049069 A CN116049069 A CN 116049069A
Authority
CN
China
Prior art keywords
data
address
aligned
read
read request
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.)
Pending
Application number
CN202111679322.XA
Other languages
English (en)
Inventor
谌博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202111679322.XA priority Critical patent/CN116049069A/zh
Publication of CN116049069A publication Critical patent/CN116049069A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Bus Control (AREA)

Abstract

本申请实施例提供一种数据读取方法及相关装置,适用于AXI总线协议的读数据访问,包括:获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息;当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址;发送所述第二读取请求。本申请实施例所提供的数据读取方法及相关装置,可解决AXI总线协议的读数据访问中非对齐地址的读访问的不适配问题。

Description

数据读取方法及相关装置
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据读取方法及相关装置。
背景技术
随着片上系统设计复杂性的增加和处理器能力的提升,总线结构对系统所要求的达到的性能越来越重要。其中,AXI(Advanced eXtensible Interface)总线协议具有高性能、高带宽、低延时的特点,能够满足超高性能和复杂的片上系统设计需求,得到了广泛的应用。
AXI总线协议中,将读地址、写地址、读数据、写数据、握手信号在不同的通道中发送。AXI总线能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,将延时降到最低,并且支持非对齐数据传输,也就是数据访问的第一个字节的地址可以跟地址边界不对齐。
但是,在非对齐的读访问中,由于AXI总线协议没有做详细说明,因此对于AXI总线协议返回的非对齐读数据,会出现两种理解,各个第三方IP和处理器对于AXI总线协议的理解不同,就可能会造成不能相互适配的情况,造成数据丢失,导致软件程序出现严重错误的情况。
因此,如何解决AXI总线协议中非对齐读访问的不适配问题,就成为亟需解决的技术问题。
发明内容
本申请实施例解决的技术问题是如何提高AXI总线协议中非对齐读访问的适配度。
为解决上述问题,本申请实施例提供一种数据读取方法及相关装置,包括:
第一方面,本申请实施例提供一种数据读取方法,适用于AXI总线协议的读数据访问,包括:
获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息;
当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址;
发送所述第二读取请求。
第二方面,本申请实施例还提供一种数据读取装置,所述装置包括:
获取模块,适于获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息;
调整模块,适于当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址;
发送模块,适于发送所述第二读取请求。
第三方面,本申请实施例还提供一种存储介质,所述存储介质存储有适于数据读取的程序,以实现如第一方面任一项所述的数据读取方法。
第四方面,本申请实施例还提供一种电子设备,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如第一方面任一项所述的数据读取方法。
与现有技术相比,本申请实施例的技术方案具有以下优点:
在本申请实施例所提供的数据读取方法,通过对获取到的满足AXI总线协议的第一读取请求进行数据地址的判断,确定数据地址是否为AXI总线协议处理中会出现读取错误的非对齐数据地址,并将包含非对齐地址的第一读取请求调整转换为包含AXI总线协议处理中不会出现读取错误的对齐地址的第二读取请求,且第二读取请求至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据。这样,通过将非对齐的数据地址调整为对齐的数据地址的第二读取请求,在返回基于第二读取请求的数据时,能够返回所述非对齐地址的数据和所述非对齐地址的后一地址的数据,保证即使满足AXI总线协议的第一读取请求中的数据地址为非对齐地址,请求发送端仍然能够得到所需要的数据。可以看出,本申请实施例所提供的数据读取方法,即使请求发送端和请求接收端对于满足AXI总线协议的非对齐地址的第一读取请求有不同的理解,经过调整后得到的第二读取请求,可以同时满足请求发送端和请求接收端的需要,最终使得请求发送端能够读取到满足要求的数据,从而能够提高利用AXI总线协议进行数据传输的请求发送端和请求接收端的适配度,可以解决AXI总线协议中非对齐读访问的不适配问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是AXI总线协议中读数据访问的一架构示意图;
图2是AXI总线协议对于非对齐写数据访问的一结构示意图;
图3是AXI总线协议中非对齐读数据访问的一处理结果示意图;
图4是本申请实施例所提供的数据读取方法的一流程示意图;
图5是本申请实施例提供的数据读取方法的另一流程示意图;
图6是本申请实施例所提供的数据读取方法的一实现结果示意图;
图7是本申请实施例所提供的数据读取装置的一可选结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
AXI总线共有5个独立的传输通道来处理数据的读写请求,且根据AXI总线协议,AXI总线支持非对齐数据传输,也就是经过AXI总线转换后的数据访问的第一个字节的地址可以跟传输通道的地址边界不对齐。
为了方便理解非对齐地址,现举例如下:
比如:32位宽的传输通道对应的地址边界为0x00、0x04、0x08等,而一个32位宽的数据经AXI总线转换后,该数据访问的第一个字节的地址从传输通道的地址0x01开始,0x01地址并非是前述的地址边界,因此,0x01地址就跟32位宽的地址边界不对齐,为非对齐地址。
为了方便理解AXI总线协议中数据读写的处理,本申请以AXI总线协议中读数据访问为例进行说明,请参考图1,图1是AXI总线协议中读数据访问的一架构示意图。
如图中所示,AXI总线协议处理读数据访问时,主设备(Masterinterface)102发送满足AXI总线协议的第一读取请求,AXI总线将第一读取请求对应的读取数据地址的地址信息和控制信息104(Addressandcontrol)通过读地址通道(Readaddresschannel)100传送至从设备(Slaveinterface)103,从设备(Slaveinterface)103接收到地址信息和控制信息104(Addressandcontrol)之后,获取地址信息和控制信息104(Addressandcontrol)对应的数据,将对应的读数据(Readdata)105通过AXI总线的读数据通道(Read datachannel)101返回至主设备(Masterinterface)102,这样就完成了一次AXI总线协议下的读数据访问。
可以看到,AXI总线的地读地址通道100和读数据通道101是分离的;同时基于突发(burst)的传输中,读地址通道100的地址信息和控制信息104表示为需要传输的读取数据在经过AXI总线转换后的起始访问地址的信息和用于传输数据的字节通路的信息,这样,当与AXI总线连接的另一端接收到数据请求信息后,就可以根据地址信息中的首地址利用控制信息中包括的后续数据地址的信息得到数据请求需要的实际数据。
其中,突发传输一般表示的是两个设备比如图1所示的主设备102和从设备103之间进行数据传送的一种模式,也可将其称为突发模式下的数据传输;字节通路是数据总线上用来传输数据的字节,一个字节通路为8个位宽,前述AXI总线协议支持非对齐数据传输就是通过字节通路选通的方式实现的。
基于上述内容,对非对齐数据传输的实现做进一步解释说明,请参考图2,图2是AXI总线协议对于非对齐写数据访问的一结构示意图。
如图中所示,需要传输的写数据201的位宽为32bit,一次突发传输burst的长度为5(图2所示第1拍-第5拍),经AXI总线协议转换的写数据对应的起始写地址202为0x01,并不是地址0x00,因此该32位宽的写数据的传输为非对齐地址数据传输。这样,主设备就会从地址0x01开始写出19字节的数据,其中,每一个写地址包括8bit即一个字节,图2所示的非对齐传输中从地址0x01开始写数据,一共写5拍,因此一共可写3(字节)+4(拍)*4(字节)即19字节的数据,而非20字节(起始写地址为0x00时的字节)的数据。
在图2中写数据时,由于是顺序写入,因此不会造成数据写入有误,从设备103存储数据时也不会存储错误的写数据。
但是,在AXI总线协议中,对于非对齐的读数据访问,会有不同的理解:
例如当读地址通道传输如下所示的读数据请求时:
ARSIZE=0x1(数据传输宽度,用于计算一拍中数据可传输的字节数量),ARADDR=0x1(非对齐传输),
ARLEN=0x0(burst长度为1)
从设备103根据经AXI总线协议转换后的非对齐地址获取数据,并将读数据105返回至主设备102的时候,对于返回的读数据105会出现两种理解:
(1)理解1:将地址0x1对应的1byte读数据认为有效;
(2)理解2:将地址0x1和0x2对应的2byte数据认为有效。
这样,在对返回的读数据105进行读取时,由于对于AXI总线协议的理解不同,就有可能会造成不能互相适配的情况。
下面,以A5处理器作为图1中主设备102,总线IP Nic400作为图1中从设备103为例对非对齐传输进行介绍。
总线IP Nic400是ARM公司的一个interconnect IP,可以通过EDA工具AMBADesigner或ARM Socrates,根据用户自定义需求,自动化产生。
总线IP nic400,对于AXI总线协议的非对齐读访问,是前述介绍中的第1种理解,即只将0x01对应的1字节读数据105认为有效,且会将读数据105的其余字节做mask屏蔽操作,均mask成0,然后再将数据返回至主设备102,即图1中通过读数据通道101返回的读数据105时,只有0x01读地址对应的读数据105有效。
ARM Cortex A5处理器是ARM V7-A架构的处理器,在访问normal non-cacheable的memory空间时,可以支持非对齐传输。
在实际使用时,A5处理器对于AXI总线协议的非对齐读访问,是前述介绍中的第2种理解,即将0x01和0x02对应的2字节读数据认为有效。
这样,当A5处理器和总线IP nic400配合使用,获取非对齐地址的读数据时,会导致总线IP nic400返回的读数据,并不是A5处理器所需要的读数据,并不满足A5处理器的需要。
为方便理解,继续结合图2和图3进行说明,图3是AXI总线协议中非对齐读数据访问的一处理结果示意图。
如图中所示,其中:
读请求地址表示为:A5处理器获取的读取请求对应的读地址。
AXI总线行为表示为:A5处理器发出的经过AXI总线协议转换后的满足AXI总线协议的第一读取请求。
可以看到满足AXI总线协议的第一读取请求中包含了:
读数据的起始访问地址araddr,比如:0x1;
数据传输宽度arsize,比如:0x1;
数据传输长度arlen,比如:0x0。
经AXI总线行为转换后的信息的含义表示为:
从起始访问地址0x1开始,根据数据传输长度0x0确定仅传输一拍数据,每拍传输的数据字节数量为2^arsize。
其中,一拍可以为图2中的一拍,在一拍的传输通道上根据数据传输宽度arsize确定可选字节通路,即在一拍的传输通道上哪几个字节可以传输数据,其中,如图2所示,一个字节通路包括8比特位宽,如图2中[7:0]、[8:15]、[16:23]、[24:31]分别表示一个字节通路,具体可选字节通路的计算公式为:2^arsize即21为2个字节通路。
综上所述,图3中第一个AXI总线行为(序号为0)获得的读数据信息内容为:
根据A5处理器对AXI总线协议中非对齐数据传输的理解,从起始访问地址0x1开始,读取一拍可传输通道的2个可选字节通路的数据,即字节通路[15:8]对应的地址0x1和字节通路[23:16]对应的地址0x2包含的读数据。
但是,根据总线IP nic400对AXI总线协议中非对齐数据传输的理解,返回的读数据包括有效的0x1地址的读数据和被无效(mask)的其他地址的读数据。
可见,总线IP nic400返回的有效的地址0x1的读数据,与A5处理器需要的地址0x1和0x2地址的读数据不匹配,造成数据读取错误。
因此,将A5处理器和总线IP nic400结合使用时,就会发生传输的读数据不匹配而出现A5处理器和总线IP nic400不适配的情况,造成数据丢失,导致软件程序出现严重错误。
为了解决上述由于对AXI总线协议中非对齐读访问理解不同而造成的设备不适配问题,本申请实施例提供了一种数据读取方法,请参考图4,图4是本申请实施例所提供的数据读取方法的一流程示意图。
如图4所示,该流程可以包括以下步骤:
步骤S10,获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息。
根据前述内容可知,与AXI总线连接的主设备会发出符合AXI总线协议的第一读取请求,本申请实施例所提供的数据读取方法首先获取满足AXI总线协议的第一读取请求。
满足AXI总线协议的第一读取请求中包含的数据地址为读数据对应的起始访问地址,数据传输控制信息为需要传输的数据的具体信息,例如每一拍通过几个字节通路进行数据的传输。
需要说明的是,本文所述满足AXI总线协议的第一读取请求是指使用AXI总线协议进行数据传输的访问请求(包括读取请求和写入请求,本申请文件针对AXI总线协议下的非对齐地址读取请求,即为所述第一读取请求),而对非AXI总线协议下进行的数据传输操作则不在本申请文件范围内。
在一种具体实施方式中,数据传输控制信息可以包括每拍数据字节数量,每拍数据字节数量表示每一次数据传输所能传送的数据字节的最大数量,即图2所示的每一拍中能够传输的数据字节的最大数量(即可选字节通路的数量),也可以理解为从读数据的起始地址开始,能够传输的读地址的数量。
根据前述内容可知,由于对于AXI总线协议的非对齐读数据访问的理解不同,从而造成与AXI总线连接的两端设备使用不适配,数据丢失,软件程序出现严重错误的问题。
因此,本申请实施例所提供的数据读取方法,在获取到满足AXI总线协议的第一读取请求之后,可以首先对该第一读取请求包括的数据地址进行判断。
具体的可以包括以下步骤:
步骤S11,确定所述数据地址是否为非对齐地址,若是,则执行步骤S13,若否,则执行步骤S12。
基于前述描述可知,只有当数据地址为非对齐地址时,才会发生不匹配的情况,因此,在得到第一读取请求后,首先判断第一读取请求中的数据地址是否为非对齐地址。
当然,根据对于非对齐地址的描述可知,可以利用数据地址和数据传输控制信息进行确定。
当数据地址为对齐读数据地址时(即步骤S11确定为否时),此时,可以直接执行步骤S12,发送第一读取请求,返回满足第一读取请求发送端需要的读数据,当数据地址为非对齐读数据地址时,此时会出现返回的读数据与发送端需要的读数据不匹配的情况,可以根据本申请实施例提供的数据读取方法对非对齐读数据地址进行调整,得到不会发生错误理解的对齐读数据地址。
具体地,所述数据传输控制信息可以包括每拍数据字节数量,每拍数据字节数量表示为一拍中能够传输的读数据的最大字节数量,当然,每拍数据字节数量可以直接包含在数据传输控制信息中,也可以间接包含在数据传输控制信息中。
基于目前的AXI总线协议可知,数据传输控制信息直接包括的是数据传输宽度,通过数据传输宽度表示每拍数据字节数量,即每拍数据字节数量可以包括数据传输宽度ARSIZE,每拍数据字节数量基于数据传输宽度获取,具体可以通过以下公式获取:
每拍数据字节数量=2^ARSIZE。
当然,不论数据传输控制信息直接包括的每拍数据字节数量,还是间接包括每拍数据字节数量,均属于本文所述的“数据传输控制信息包括每拍数据字节数量”。
具体地,确定所述数据地址是否为非对齐地址的步骤可以包括:
判断所述数据地址是否能被所述每拍数据字节数量整除,当所述数据地址能被所述每拍数据字节数量整除时,表示为数据地址是对齐数据地址,当所述数据地址不能被所述每拍数据字节数量整除时,表示为数据地址是非对齐数据地址。
当每拍数据字节数量不能够整除数据地址时,确定为AXI总线协议中非对齐读数据地址,例如图3所示的满足AXI总线协议的数据地址为0x1、0x5,其每拍数据字节数量为2^1=2,不能整除,因此为AXI总线协议中的非对齐地址。此时,使用本申请实施例提供的数据读取方法的非对齐地址转换步骤,即步骤S13,将非对齐地址读数据传输转换为对齐地址读数据传输,接着执行转换后的对齐的读数据地址。
具体的,确定所述第一读取请求的数据地址为非对齐地址的判断公式可以表示为:
ARADDR%(2^ARSIZE)!=0,
其中,ARADDR表示数据地址,ARSIZE表示数据传输控制信息的数据传输宽度,2^ARSIZE表示每拍数据字节数量,%表示取余。
上述判断条件公式表示为数据地址不能够整除数据传输宽度时,为非对齐地址,能够整除时数据地址为对齐地址。如上述满足AXI总线协议的数据地址为0x1、0x5时,其每拍数据字节数量为2^1=2,不能整除,因此为AXI总线协议中的非对齐地址。当然,在一些实施例方式中,可以根据需要确定是否进行数据地址是否为非对齐地址的确定,因此,可以通过获取执行确定所述数据地址是否为非对齐地址的使能信号来控制是否执行本申请实施例所提供的数据读取方法,以执行第一读取请求的数据地址的调整步骤。
这样,可以实现对于程序执行的灵活性,即当需要执行本申请实施例提供的数据读方法时,通过使能信号控制程序进入本申请实施例提供的数据读方法进行非对齐地址的转换。而在不需要进行非对齐地址转换时,按照原有的AXI总线协议程序流程顺序执行,减少不必要的程序转换功耗。
步骤S12,发送所述第一读取请求。
如果数据地址不是非对齐地址,那么直接发送第一读取请求即可。
步骤S13,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址。
当确定数据地址为非对齐地址时,执行步骤S13,对第一读取请求进行调整,使得调整后的第二读取请求的数据地址为对齐地址,并且所请求的数据需要包括调整前的非对齐地址的数据,以及非对齐地址的后一地址的数据,从而,基于第二读取请求,能够返回正确的请求发送端所需要的数据。
在一种具体实施方式中,为了方便进行第一读取请求的调整,请参考图5,图5为本申请实施例提供的数据读取方法的另一流程示意图。
如图5所示,本申请实施例所提供的数据读取方法,进行第一读取请求调整具体可以包括以下步骤:
步骤S13,调整所述第一读取请求的所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址,具体可以包括以下步骤:
步骤S130,调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址。
为了保证所得到的第二读取请求能够最终获取到非对齐地址对应的读数据,在进行数据地址的调整时,只能将数据地址向前调整,进一步为了减少调整量,并减少所传输的不需要的数据量,避免功耗过大,可以调整数据地址至位于非对齐地址之前,且与所述非对齐地址最接近的对齐地址。
比如:当非对齐地址为0x01时,可以调整为0x00。
步骤S131,调整所述每拍数据字节数量至少一次扩大2倍,得到所述第二读取请求。
如果只调整数据地址为对齐地址,但仍保持原有的每拍数据字节数量,那么最终所得到的数据肯定不能满足要求,为了保证所得到的数据包括非对齐地址的数据和所述非对齐地址的后一地址的数据,还需要对每拍所传输的字节数量进行调整,调整所述每拍数据字节数量至少一次扩大2倍,具体可以为扩大2倍,或者4倍。
如前所述,如果每拍数据字节数量直接表达,那么可以直接进行每拍数据字节数量的扩大。
而基于现有的AXI总线协议,每拍数据字节数量通过数据传输宽度ARSIZE表达,为此所述调整所述每拍数据字节数量至少一次2倍的步骤包括:
通过调整所述数据传输宽度至少一次加一,使得调整所述每拍数据字节数量至少一次扩大2倍。
比如,调整前,ARSIZE为1,调整后ARSIZE为2,那么调整前每拍数据字节数量为2^1=2,调整后每拍数据字节数量为2^2=4。
当然,容易理解的是调整后的每拍数据字节数量最大为数据宽度。
即在AXI总线协议中,数据传输宽度为可变量,可以通过数据传输宽度的改变从而调整每拍数据字节数量,扩大每一拍能够传输的数据的字节数量,使得第三方IP在理解AXI总线协议中的经本申请所提供的数据读取方法所得到的所述第二读取请求时,增大每一拍的有效读数据,这样,可以不会无效掉因每拍数据字节数量过少而在非对齐读访问时传输的其他地址对应的读数据。
在一种具体实施方式中,为了方便对于数据地址的调整,所述调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址的步骤可以包括:调整所述数据地址的低两位赋值为0。
这样,就可以非常简单方便地将非对齐地址调整为对齐地址。
继续以上述判断非对齐地址的条件公式为例,对应的非对齐地址的调整步骤可以表示为:
(1)ARADDR_new=ARADDR;
(2)ARADDR_new[ARSIZE:0]=0;
(3)ARSIZE_new=ARSIZE+1。
其中,步骤(1)表示将确定为非对齐地址的第一读取请求的数据地址ARADDR赋值为新的地址ARADDR_new;
步骤(2)表示将新的数据地址ARADDR_new的低位赋值为0,这样就可以使得新的数据地址ARADDR_new为对齐地址(能够整除2^ARSIZE的地址),即表示上述“所述调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址的步骤:调整所述数据地址的低两位赋值为0”;
步骤(3)表示扩大用于传输数据的可选字节通路(对应于上述步骤S131),根据最小改动原则,可以将原始ARSIZE的值增加1得到ARSIZE_new,相应的每拍数据字节数量扩大一倍。
这样,就实现了将非对齐数据地址调整为对齐数据地址,在读取数据时不会出现数据返回错误的情况,提高AXI总线协议中对非对齐读访问的适配度。
为了方便理解本申请实施例提供的数据读取方法的实现结构,请结合图3参考图6,图6是本申请实施例所提供的数据读取方法的一实现结果示意图。
图3所示AXI总线行为转换后的读请求信息为满足AXI总线协议的第一读取请求,相应的图6所示结果为针对于图3中第一读取请求根据本申请实施例提供的数据读取方法所做的对照处理。
根据图3中所示结果,AXI总线对A5处理器发出的满足AXI总线协议的第一读取请求中:
(1)只有当A5处理器发出读半字HALF WORD(一个半字等于2个字节,即每拍数据字节数量为2个字节或arsize=0x1),且地址偏移量即起始访问地址为:0x1,0x5(即经AXI总线协议转换后的地址为非对齐地址读请求)时,经过总线IP nic400处理经由AXI总线转换后的读请求并返回相应的读数据后,会造成部分读数据被总线IP nic400屏蔽掉,仅返回1字节读数据,导致读数据丢失,发生错误。
当然,经过实验发现,读请求地址为0x9,0xd,0x11,0x15,0x19,0x1d时,经AXI总线协议转换后的地址也为非对齐地址,如果每拍数据字节数量也为2个字节,那么也将导致读数据丢失,发生错误。
(2)如下情况不会发生错误:
1)A5处理器发送非对齐读半字,且读起始访问地址为:0x3,0x7,0xb,0xf,0x13,0x17,0x1b,0x1f的读请求地址,在经过AXI总线行为转换后的地址会自动转换成对齐地址发送至与AXI总线连接的另一端,其中,0xb,0xf,0x13,0x17,0x1b未在图中展示;
2)A5处理器发送非对齐读全字WORD(一个全字等于4个字节),经AXI总线转换后的读起始访问地址都是对齐的地址;
3)A5处理器发送非对齐读双字DWORD(一个双字等于8个字节),经AXI总线行为转换后读起始访问地址不会有对齐问题。
因此,对于A5处理器的非对齐地址转换的处理问题,根据本申请实施例提供的数据读取方法,其具体处理过程具体为:
如图6中所示,对于图3中序号为0、读请求地址为0x1的读取请求,经AXI总线转换后的第一读取请求的表示为:读地址araddr=0x0,数据传输宽度arsize=0x2,数据传输长度arlen=0x0。
具体的,根据本申请实施例所提供数据读取方法,对图3所示序号为0(即第一个)的读数据请求进行转换:
首先,调整图3中原AXI总线行为下的读起始访问地址:araddr=0x1的低两位赋值为0,得到图6所示AXI总线行为下的起始访问读地址:araddr=0x0,这样就可以将原非对齐读数据地址调整为对齐读数据地址;
然后,将数据传输宽度原图3的arsize=0x1加一,调整为图6所示的arsize=0x2。
由于每拍数据字节数量=2^数据传输宽度,因此,当数据传输宽度为图6所示的0x2时,每拍数据字节数量则为22即4个字节数量。
步骤S14,发送所述第二读取请求。
经过调整后,发出调整后的第二读取请求。
此时,可以得到满足请求发送端所需要的数据,当然,容易理解的是,所述第二读取请求包括调整后的对齐的起始访问数据地址以及扩大后得到的数据传输控制信息。
结合前述案例,这样,可以看出扩大了第一拍可传输数据通道中可选字节通路的数量,IP nic400接收到经过转换后的对齐地址的读数据请求时,返回的读数据包括0x0--0x3的数据,能够包括A5处理器原本需要的0x1和0x2地址对应的数据,并且不会屏蔽掉,这样,从IP nic400返回的读数据即为符合A5处理器需要的读数据,与AXI总线连接的A5处理器和IP nic400发送和返回的数据就可以相适配,解决了AXI总线协议中非对齐访问的不适配问题。
这样,本申请实施例所提供的数据读取方法,通过对获取到的满足AXI总线协议的第一读取请求进行数据地址的判断,确定数据地址是否为AXI总线协议处理中会出现读取错误的非对齐数据地址,并将包含非对齐地址的第一读取请求调整转换为包含AXI总线协议处理中不会出现读取错误的对齐地址的第二读取请求,且第二读取请求至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据。这样,通过将非对齐的数据地址调整为对齐的数据地址的第二读取请求,在返回基于第二读取请求的数据时,能够返回所述非对齐地址的数据和所述非对齐地址的后一地址的数据,保证即使满足AXI总线协议的第一读取请求中的数据地址为非对齐地址,请求发送端仍然能够得到所需要的数据。
可以看出,本申请实施例所提供的数据读取方法,即使请求发送端和请求接收端对于满足AXI总线协议的非对齐地址的第一读取请求有不同的理解,经过调整后得到的第二读取请求,可以同时满足请求发送端和请求接收端的需要,最终使得请求发送端能够读取到满足要求的数据,从而能够提高利用AXI总线协议进行数据传输的请求发送端和请求接收端的适配度,可以解决AXI总线协议中非对齐读访问的不适配问题。
为了解决前述问题,本申请实施例还提供一种数据传读取装置,该装置可以认为是实现本申请实施例提供的数据读取方法所需设置的功能模块。下文描述的装置内容可与上文描述的方法内容相互对应参照。
作为一种可选实现中,图7示出了本申请实施例所提供的数据读取装置的一可选结构框图。
如图7所示,该数据读取装置可以包括:
获取模块70,适于获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息;
调整模块73,适于当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址;
发送模块74,适于发送所述第二读取请求。
这样,本申请实施例提供的数据读取装置,首先,通过对获取到的第一读取请求判断其数据地址是否为对齐地址,然后对非对齐的数据地址进行调整转换为对齐地址,使得对于AXI总线协议中对非对齐理解不同的两个设备能够适配,从而能够获取到正确的读数据。
在一种具体实施方式中,所述获取模块70获取的所述数据传输控制信息包括每拍数据字节数量,所述调整模块73适于调整所述第一读取请求的所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址,包括:
调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址,并调整所述每拍数据字节数量至少一次扩大2倍,得到所述第二读取请求。
在另一种具体实施方式中,所述每拍数据字节数量包括根据数据传输宽度进行确定;
例如,当数据传输宽度为0x1时,每拍数据字节数量=2^1即2个字节数量。
此时,所述调整模块73还适于:
通过调整所述数据传输宽度至少一次加一,使得调整所述每拍数据字节数量至少一次扩大2倍。
根据非对齐地址确定模块72的确定结果执行所述调整模块73,所述非对齐地址确定模块适于确定所述数据地址为非对齐地址,包括:
当所述数据地址不能被所述每拍数据字节数量整除时,确定所述数据地址为非对齐地址。
在一些具体实施方式中,所述非对齐地址确定模块72的执行可以根据使能信号获取模块71来实现,使能信号获取模块71适于获取执行确定所述数据地址是否为非对齐地址的使能信号。
为了能够实现非对齐读地址转换为对齐读地址,在一种具体实施方式中,所述调整模块73适于调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址包括:
调整所述数据地址的低两位赋值为0。
本申请实施例还提供一种存储介质,所述存储介质存储有适于数据分析的程序,以实现如前述所述的数据读取方法。
本申请实施例还提供一种电子设备,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如前述所述的数据读取方法。
本申请实施例所提供的存储介质和电子设备,能够执行本申请实施例所提供的数据读取方法,使得即使请求发送端和请求接收端对于满足AXI总线协议的非对齐地址的第一读取请求有不同的理解,经过调整后得到的第二读取请求,可以同时满足请求发送端和请求接收端的需要,最终使得请求发送端能够读取到满足要求的数据,从而能够提高利用AXI总线协议进行数据传输的请求发送端和请求接收端的适配度,可以解决AXI总线协议中非对齐读访问的不适配问题。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (14)

1.一种数据读取方法,其特征在于,适用于AXI总线协议的读数据访问,包括:
获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息;
当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址;
发送所述第二读取请求。
2.如权利要求1所述的数据读取方法,其特征在于,所述数据传输控制信息包括每拍数据字节数量,所述调整所述第一读取请求的所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址的步骤包括:
调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址,并调整所述每拍数据字节数量至少一次扩大2倍,得到所述第二读取请求。
3.如权利要求2所述的数据读取方法,其特征在于,所述确定所述数据地址为非对齐地址的步骤包括:
当所述数据地址不能被所述每拍数据字节数量整除时,确定所述数据地址为非对齐地址。
4.如权利要求2所述的数据读取方法,其特征在于,所述每拍数据字节数量包括数据传输宽度,所述调整所述每拍数据字节数量至少一次2倍的步骤包括:
通过调整所述数据传输宽度至少一次加一,使得调整所述每拍数据字节数量至少一次扩大2倍。
5.如权利要求2所述的数据读取方法,其特征在于,所述调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址的步骤包括:
调整所述数据地址的低两位赋值为0。
6.如权利要求1所述的数据读取方法,其特征在于,所述当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息的步骤之前,还包括:
获取执行确定所述数据地址是否为非对齐地址的使能信号。
7.一种数据读取装置,其特征在于,包括:
获取模块,适于获取满足AXI总线协议的第一读取请求,所述第一读取请求包括待读取数据的数据地址和数据传输控制信息;
调整模块,适于当确定所述数据地址为非对齐地址时,调整所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址;
发送模块,适于发送所述第二读取请求。
8.如权利要求7所述的数据读取装置,其特征在于,所述数据传输控制信息包括每拍数据字节数量,所述调整模块,适于调整所述第一读取请求的所述数据地址和所述数据传输控制信息,得到至少请求所述非对齐地址的数据和所述非对齐地址的后一地址的数据的第二读取请求,且所述第二读取请求的数据地址为对齐地址,包括:
调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址,并调整所述每拍数据字节数量至少一次扩大2倍,得到所述第二读取请求。
9.如权利要求8所述的数据读取装置,其特征在于,还包括:
非对齐地址确定模块,适于确定所述数据地址为非对齐地址,包括:
当所述数据地址不能被所述每拍数据字节数量整除时,确定所述数据地址为非对齐地址。
10.如权利要求8所述的数据读取装置,其特征在于,所述每拍数据字节数量包括数据传输宽度,所述调整模块,适于调整所述每拍数据字节数量至少一次2倍,包括:
通过调整所述数据传输宽度至少一次加一,使得调整所述每拍数据字节数量至少一次扩大2倍。
11.如权利要求7所述的数据读取装置,其特征在于,所述调整模块,适于调整所述数据地址至位于所述非对齐地址之前,且与所述非对齐地址最接近的对齐地址包括:
调整所述数据地址的低两位赋值为0。
12.如权利要求7所述的数据读取装置,其特征在于,还包括:
使能信号获取模块,适于获取执行确定所述数据地址是否为非对齐地址的使能信号。
13.一种存储介质,其特征在于,所述存储介质存储有适于数据读取的程序,以实现如权利要求1-6任一项所述的数据读取方法。
14.一种电子设备,其特征在于,包括至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以执行如权利要求1-6任一项所述的数据读取方法。
CN202111679322.XA 2021-12-31 2021-12-31 数据读取方法及相关装置 Pending CN116049069A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111679322.XA CN116049069A (zh) 2021-12-31 2021-12-31 数据读取方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111679322.XA CN116049069A (zh) 2021-12-31 2021-12-31 数据读取方法及相关装置

Publications (1)

Publication Number Publication Date
CN116049069A true CN116049069A (zh) 2023-05-02

Family

ID=86116929

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111679322.XA Pending CN116049069A (zh) 2021-12-31 2021-12-31 数据读取方法及相关装置

Country Status (1)

Country Link
CN (1) CN116049069A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591380A (zh) * 2024-01-18 2024-02-23 芯动微电子科技(武汉)有限公司 一种总线性能监测的方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591380A (zh) * 2024-01-18 2024-02-23 芯动微电子科技(武汉)有限公司 一种总线性能监测的方法和装置
CN117591380B (zh) * 2024-01-18 2024-05-03 芯动微电子科技(武汉)有限公司 一种总线性能监测的方法和装置

Similar Documents

Publication Publication Date Title
CN110196824B (zh) 实现数据传输的方法及装置、电子设备
US20240028525A1 (en) Method for writing data from axi bus to opb and method for reading data from axi bus to opb bus
JP4194274B2 (ja) クアド・ポンプ・バス・アーキテクチャおよびプロトコル
US6226700B1 (en) Computer system with bridge logic that includes an internal modular expansion bus and a common master interface for internal master devices
CN108268414B (zh) 基于spi模式的sd卡驱动器及其控制方法
US5564114A (en) Method and an arrangement for handshaking on a bus to transfer information between devices in a computer system
EP1032880B1 (en) Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple agent processing system
CN111090221B (zh) 用于直写式光刻系统中的PCIe DMA数据传输系统及其传输方法
US11899612B2 (en) Online upgrading method and system for multi-core embedded system
CN112035389B (zh) 一种plb-axi总线转换桥及其工作方法
US5280623A (en) Versatile peripheral bus
CN109800193B (zh) 一种ahb总线访问片上sram的桥接装置
US20110106991A1 (en) Bus system and bus control method
US6101566A (en) Computer system with bridge logic that includes an internal modular expansion bus and a common target interface for internal target devices
CN114265872B (zh) 一种用于总线的互联装置
CN112988647B (zh) 一种TileLink总线到AXI4总线转换系统及方法
JPH1069455A (ja) コンピュータ・システム・バス上でスレーブdmaエミュレーションを行う方法
US6366973B1 (en) Slave interface circuit for providing communication between a peripheral component interconnect (PCI) domain and an advanced system bus (ASB)
CN116049069A (zh) 数据读取方法及相关装置
US7096290B2 (en) On-chip high speed data interface
CN109783933B (zh) 一种ahb总线访问片上sram的桥接方法
US6425071B1 (en) Subsystem bridge of AMBA's ASB bus to peripheral component interconnect (PCI) bus
US6519670B1 (en) Method and system for optimizing a host bus that directly interfaces to a 16-bit PCMCIA host bus adapter
US10489319B2 (en) Automatic transmission of dummy bits in bus master
CN113196254A (zh) 增强速度模式下的数据通信

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