CN115374032B - 存储器中非对齐数据传输方法、写入方法和装置 - Google Patents
存储器中非对齐数据传输方法、写入方法和装置 Download PDFInfo
- Publication number
- CN115374032B CN115374032B CN202211304565.XA CN202211304565A CN115374032B CN 115374032 B CN115374032 B CN 115374032B CN 202211304565 A CN202211304565 A CN 202211304565A CN 115374032 B CN115374032 B CN 115374032B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- double
- word
- bytes
- 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.)
- Active
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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本公开涉及计算机技术领域,具体涉及一种存储器中非对齐数据传输方法、写入方法和装置,所述存储器基于AHB总线进行数据传输,所述方法包括:获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;将所述待传输数据传输至目标地址,实现了使不满足双字对齐的源地址中的数据也可在使用了DMA控制器的存储器中采用AHB总线进行双字传输,提高了数据传输的效率。
Description
技术领域
本公开涉及计算机技术领域,具体涉及一种存储器中非对齐数据传输方法、写入方法和装置。
背景技术
直接存储器访问(Direct Memory Access,DMA)是一种允许在外部设备和存储器、存储器与存储器之间直接读写数据的高速传输操作,该传输过程既不通过CPU,也不需要CPU干预,整个数据传输操作在一个称为“DMA控制器”的控制下进行。
在芯片设计中,DMA主接口控制电路一般使用高级微控制器总线架构(AdvancedMicrocontroller Bus Architecture,AMBA)系列中的高级高性能总线(Advanced Highperformance Bus,AHB)对数据进行搬移操作。由于AHB总线在传统的DMA控制器实现中,按照双字进行数据的搬移操作,因此数据需要将源地址与目的地址按照4的倍数进行配置,且所述源地址与目标地址需要满足双字对齐才能够正确执行DMA传输。在源地址与目标地址需要不满足双字对齐时,使用传统的DMA控制器只能按照字节进行数据搬移,这样的处理方式相比按照双字进行数据搬移花费的时间会更长,AHB总线带宽的效率会明显降低。
发明内容
为了解决相关技术中的问题,本公开实施例提供一种存储器中非对齐数据传输方法、写入方法和装置。
第一方面,本公开实施例中提供了一种存储器中非对齐数据传输方法,所述存储器基于AHB总线进行数据传输,所述方法包括:
获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;
获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;
基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;
将所述待传输数据传输至目标地址。
根据本公开的实施例,所述非对齐数据包括:
数据的源地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
根据本公开的实施例,所述获取源地址与第一地址之间的第一字节差p1,包括:
获取所述源地址的首地址与所述第一地址之间相差的字节数作为所述第一字节差p1。
根据本公开的实施例,所述基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,包括:
自所述第一地址起,读取两个双字的数据;
将自所述第一地址起第一个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第二个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第一个双字的数据。
根据本公开的实施例,所述方法还包括:
将自所述第一地址起第二个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第三个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第二个双字的数据;
重复执行上述操作直至完成第N-1个双字的拼接。
根据本公开的实施例,所述方法还包括:
将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据;
对其余高位字节进行补位处理,得到拼接后的第N个双字的数据。
根据本公开的实施例,所述对其余高位字节进行补位处理,包括:
对所述高位字节赋零;或者
对所述高位字节赋无效值。
根据本公开的实施例,所述方法还包括:
将所述待传输数据存入数据通道缓存;
自所述数据通道缓存传输所述待传输数据至目标地址。
第二方面,本公开实施例中提供了一种存储器中非对齐数据写入方法,所述存储器基于AHB总线进行数据写入,包括:
获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址;
获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;
接收自源地址传输的数据,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据, M=[L2/4]+1,[]为向下取整运算;
将所述待写入数据写入所述目标地址。
根据本公开的实施例,所述非对齐数据包括:
数据的目标地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
根据本公开的实施例,所述获取目标地址与第二地址之间的第二字节差p2,包括:
获取所述目标地址的首地址与所述第二地址之间相差的字节数作为所述第二字节差p2。
根据本公开的实施例,所述基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,包括:
自第二地址起,读取一个双字的数据;
将读取的所述双字中前p2个字节中的数据作为低位数据,接收到的数据中的前(4-p2)个字节中的数据作为高位数据,得到拼接后的第一个双字的数据。
根据本公开的实施例,所述方法还包括:
将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接。
根据本公开的实施例,所述方法还包括:
将所述接收到的数据中未进行拼接的剩余数据的有效数据作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,得到拼接后的第M个双字的数据。
根据本公开的实施例,所述接收自源地址传输的数据还包括:
接收自数据通道缓存传输的数据,所述数据通道缓存中的数据自源地址传输得到。
第三方面,本公开实施例中提供了一种存储器中非对齐数据传输装置,所述存储器基于AHB总线进行数据传输,所述装置包括:
第一获取模块,被配置为获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;
第二获取模块,被配置为获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;
第一拼接模块,被配置为基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;
传输模块,被配置为将所述待传输数据传输至目标地址。
根据本公开的实施例,所述非对齐数据包括:
数据的源地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
根据本公开的实施例,所述获取源地址与第一地址之间的第一字节差p1,包括:
获取所述源地址的首地址与所述第一地址之间相差的字节数作为所述第一字节差p1。
根据本公开的实施例,所述基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,包括:
自所述第一地址起,读取两个双字的数据;
将自所述第一地址起第一个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第二个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第一个双字的数据。
根据本公开的实施例,还包括:
将自所述第一地址起第二个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第三个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第二个双字的数据;
重复执行上述操作直至完成第N-1个双字的拼接。
根据本公开的实施例,还包括:
将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据;
对其余高位字节进行补位处理,得到拼接后的第N个双字的数据。
根据本公开的实施例,所述对其余高位字节进行补位处理,包括:
对所述高位字节赋零;或者
对所述高位字节赋无效值。
根据本公开的实施例,所述传输模块还被配置为:
将所述待传输数据存入数据通道缓存;
自所述数据通道缓存传输所述待传输数据至目标地址。
第四方面,本公开实施例中提供了一种存储器中非对齐数据写入装置,所述存储器基于AHB总线进行数据写入,包括:
第三获取模块,被配置为获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址;
第四获取模块,被配置为获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;
第二拼接模块,被配置为接收自源地址传输的数据,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据, M=[L2/4]+1,[]为向下取整运算;
写入模块,被配置为将所述待写入数据写入所述目标地址。
根据本公开的实施例,所述非对齐数据包括:
数据的目标地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
根据本公开的实施例,所述获取目标地址与第二地址之间的第二字节差p2,包括:
获取所述目标地址的首地址与所述第二地址之间相差的字节数作为所述第二字节差p2。
根据本公开的实施例,所述基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,包括:
自第二地址起,读取一个双字的数据;
将读取的所述双字中前p2个字节中的数据作为低位数据,接收到的数据中的前(4-p2)个字节中的数据作为高位数据,得到拼接后的第一个双字的数据。
根据本公开的实施例,还包括:
将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接。
根据本公开的实施例,还包括:
将所述接收到的数据中未进行拼接的剩余数据的有效数据作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,得到拼接后的第M个双字的数据。
根据本公开的实施例,所述接收自源地址传输的数据还包括:
接收自数据通道缓存传输的数据,所述数据通道缓存中的数据自源地址传输得到。
第五方面,本公开实施例提供了一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如上所述的方法。
第六方面,本公开实施例提供了一种芯片,所述芯片包括如第三方面和第四方面中任一实施例所述的装置。
第七方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如上所述的方法。
根据本公开实施例提供的技术方案,通过将源地址中的数据进行拼接后传输至目标地址,使得不满足双字对齐的源地址中的数据也可在诸如使用了DMA控制器的存储器中采用AHB总线进行双字传输,大幅提高了数据传输的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中。
图1示出DMA中基于AHB进行数据搬移时源地址和目标地址的示意图。
图2示出根据本公开实施例的存储器中非对齐数据传输方法的流程图。
图3示出根据本公开实施例的存储器中非对齐数据写入方法的流程图。
图4示出根据本公开实施例的存储器中非对齐数据传输装置的结构框图。
图5示出根据本公开实施例的存储器中非对齐数据写入装置的结构框图。
图6示出根据本公开实施例的DMA控制器的结构框图。
图7示出根据本公开的实施例的电子设备的结构框图。
图8示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
在本公开中,如涉及对用户信息或用户数据的获取操作或向他人展示用户信息或用户数据的操作,则所述操作均为经用户授权、确认,或由用户主动选择的操作。
上文提及,在芯片设计中,DMA主接口控制电路一般使用高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)系列中的高级高性能总线(Advanced High performance Bus,AHB)对数据进行搬移操作。由于AHB总线在传统的DMA控制器实现中,按照双字进行数据的搬移操作,因此数据需要将源地址与目的地址按照4的倍数进行配置,且所述源地址与目标地址需要满足双字对齐才能够正确执行DMA传输。在源地址与目标地址需要不满足双字对齐时,使用传统的DMA控制器只能按照字节进行数据搬移,这样的处理方式相比按照双字进行数据搬移花费的时间会更长,AHB总线带宽的效率会明显降低。
相关技术中,DMA控制器主要包括仲裁器、主接口控制电路、从接口控制电路、数据通道缓存、硬件请求接口等模块。仲裁器按照配置要求决定哪个通道获取数据传输功能;主接口控制电路实现对源地址空间数据的读取与对目的地址空间的数据写入功能;从接口控制电路实现DMA控制器的配置接收与状态上送;数据通道缓存一般由先入先出(FirstInput First Output,FIFO)构成,实现数据的存储;硬件请求接口则是外部设备主动发起数据传输的要求处理模块。
DMA控制器实现数据传输,需要配置如下功能:
(1)源地址:用于存放待读取数据的地址;
(2)目的地址:用于存放待传送数据的地址;
(3)源传输宽度:源数据位宽;
(4)目的传输宽度:目的数据位宽;
(5)传输长度:用于存放待传输数据块的总字节数;
(6)控制寄存器:用于中央处理器(Central Processing Unit,CPU)在初始化DMA模块时配置其工作方式;
(7)状态寄存器:保存外设的准备就绪状态,指示DMA内部的工作状态;
(8)逻辑控制电路:修改各寄存器的值,完成与CPU之间的交互工作。
在使用AHB总线实现数据搬移时,如图1所示,源地址与目标地址均需要满足双字对齐且为4的倍数,即以十六进制为例,源地址与目标地址的首地址的尾数需要满足为0、4、8和C,源地址与目标地址的尾地址的尾数需要满足为3、7、B和F。此时,若需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A,由于源地址与目标地址均不满足双字对齐且为4的倍数,因此需要按照字节进行数据搬移,降低了AHB总线的处理效率。
鉴于此,本公开实施例提供了一种存储器中非对齐数据传输方法,所述存储器基于AHB总线进行数据传输,所述方法包括:获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;将所述待传输数据传输至目标地址。根据本公开实施例的技术方案,通过将源地址中的数据进行拼接后传输至目标地址,使得不满足双字对齐的源地址中的数据也可在诸如使用了DMA控制器的存储器中采用AHB总线进行双字传输,大幅提高了数据传输的效率。
图2示出根据本公开实施例的存储器中非对齐数据传输方法的流程图。
如图2所示,所述存储器中非对齐数据传输方法包括步骤S201-步骤S204:
在步骤S201中,获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;
在步骤S202中,获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;
在步骤S203中,基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;
在步骤S204中,将所述待传输数据传输至目标地址。
在本公开实施例中,所述存储器可以是使用了DMA控制器的存储器,所述DMA控制器基于AHB总线进行数据传输,所述AHB总线按照双字进行数据的搬移操作,因此,首先需要判断待传输数据是否为双字对齐数据。在本公开的一个具体实施方式中,可以通过判断所述待传输的源地址的首地址是否满足双字对齐,和/或判断所述待传输数据的数据长度是否为4的整数倍来判断所述待传输数据是否为双字对齐数据。需要说明的是,本公开实施例中处理的非对齐数据的数据长度至少需要大于1个双字即4个字节,若待传输数据的位宽小于1个双字则只能按照字节进行数据传输,而无法根据本公开实施例的方法进行数据传输。因而,可以在判断所述待传输的源地址的首地址不满足双字对齐,和/或所述待传输数据的数据长度大于4且不为4的整数倍时,确定所述待传输数据为非对齐数据。
在本公开实施例中,在进行数据传输时,首先需要获取所述源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址。其中,所述双字对齐首地址是指,双字对齐的地址中,每一个双字中第一个字节的地址。
以上述需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A的数据传输操作为例,此时源地址的首地址0x1为非双字对齐首地址,因此可以获取该源地址的首地址0x1与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址0x1的上一个双字对齐首地址,即0x0,所述源地址的首地址与所述第一地址之间相差的字节数,即可得到的第一字节差p1=1。需要说明的是,当所述源地址的首地址为双字对齐首地址时,可以设所述第一字节差p1=4。
在本公开实施例中,还需要获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数。仍然以上述需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A的数据传输操作为例,此时所述源地址的位宽L1为9。
在本公开实施例中,在获取了所述第一字节差p1和源地址的位宽L1后,可以基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算。
在本公开实施例中,所述基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,包括:自所述第一地址起,读取两个双字的数据;将自所述第一地址起第一个双字中的后(4-p1)个数据作为低位数据,自所述第一地址起第二个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第一个双字的数据;将自所述第一地址起第二个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第三个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第二个双字的数据;重复执行上述操作直至完成第N-1个双字的拼接,其中,N=[L1/4]+1,[]为向下取整运算;将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据;对其余高位字节进行补位处理,得到拼接后的第N个双字的数据。
具体地,仍然以上述需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A的数据传输操作为例,假设所述源地址中,从地址0x0至0xB的数据如表1所示:
表1
0x0 | 0x1 | 0x2 | 0x3 | 0x4 | 0x5 | 0x6 | 0x7 | 0x8 | 0x9 | 0xA | 0xB |
12 | 34 | 56 | 78 | 9A | BC | DE | F0 | 11 | 22 | 33 | 44 |
可以知道,在本次操作中,待传输的数据为3456789ABCDEF1122。如前所述,第一地址为0x0,第一字节差p1=0x1-0x0=1。在进行数据传输时,首先读取自第一地址0x0起的两个双字的数据,读取时可以遵循先入先出的原则,此时得到的数据为12345678和9ABCDEF0;然后将第一个双字中后(4-p1)个数据作为低位数据,即将第一个双字中后4-1=3个数据345678作为低位数据,将第二个双字中的前p1个字节的数据作为高位数据与所述低位数据进行拼接,即将第二个双字中的前1个字节的数据9A作为高位数据与所述第一个双字中的作为低位数据的345678进行拼接,得到拼接后的第一个双字的数据3456789A。
接下来,将自所述第一地址起第二个双字中剩余的(4-p1)个字节的数据作为低位数据,即将自所述第一地址0x0起第二个双字中剩余的3个字节的数据BCDEF0作为低位数据,将自所述第一地址起第三个双字中前p1个字节的数据作为高位数据,即将自所述第一地址0x0起第三个双字44332211中的前1个数据11作为高位数据,进行拼接,得到拼接后的第二个双字的数据BCDEF011。
在该例中,由于源地址中包含的字节数为9,即源地址的位宽L1=9,因此需要拼接N=[9/4]+1=3个双字。因而,在完成上述第二个双字的拼接后,还需要进行第三个即最后一个双字的拼接。此时,将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据,对其余高位字节进行补位处理,即可得到拼接后的第N个双字的数据。也就是说,将所述源地址中剩余的9-4*2=1个字节的数据作为低位数据,对其余高位字节进行补位处理,所述补位处理可以是赋零或赋无效值处理,以赋零为例,可以得到拼接后的第3个双字的数据00000022。至此,完成了对所述源地址0x1至0x9中数据的拼接,拼接后的数据为由N=[9/4]+1=3个双字组成的数据,为3456789A BCDEF011000000022,能够使用AHB总线进行处理。
在本公开实施例中,在完成上述待传输数据的拼接后,即可将所述待传输数据传输至目标地址。
根据本公开实施例的技术方案,通过将源地址中的数据进行拼接后传输至目标地址,使得不满足双字对齐的源地址中的数据也可在诸如使用了DMA控制器的存储器中采用AHB总线进行双字传输,大幅提高了数据传输的效率。
在本公开实施例中,对待传输数据的读取和写入操作均是遵循先入先出原则进行的。本领域技术人员可以理解,如果不采用先入先出原则进行,则在进行数据拼接时需要对各字节的排列顺序进行相应的修改,此处不再赘述。
在本公开实施例中,所述待传输数据可以先存入数据通道缓存,例如FIFO,然后自所述数据通道缓存传输所述待传输数据至目标地址,也可以不经过数据通道缓存,直接由所述源地址传输至所述目标地址。
图3示出根据本公开实施例的存储器中非对齐数据写入方法的流程图。
如图3所示,所述存储器中非对齐数据写入方法包括步骤S301-步骤S304:
在步骤S301中,获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址;
在步骤S302中,获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;
在步骤S303中,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据,其中,M=[L2/4]+1,[]为向下取整运算;
在步骤S304中,将所述待写入数据写入所述目标地址。
在本公开实施例中,所述存储器可以是使用了DMA控制器的存储器,所述DMA控制器基于AHB总线进行数据写入,所述AHB总线按照双字进行数据的搬移操作,因此,首先需要判断接收到的数据是否为双字对齐数据。在本公开的一个具体实施方式中,可以通过判断所述接收到的数据的目标地址的首地址是否满足双字对齐,和/或判断所述接收到的数据的数据长度是否为4的整数倍来判断所述接收到的数据是否为双字对齐数据。需要说明的是,本公开实施例中处理的非对齐数据的数据长度至少需要大于1个双字即4个字节,若接收到的数据的位宽小于1个双字则只能按照字节进行数据写入,而无法根据本公开实施例的方法进行数据写入。因而,可以在判断所述接收到的数据的目标地址的首地址不满足双字对齐,和/或所述接收到的数据的数据长度大于4且不为4的整数倍时,确定所述接收到的数据为非对齐数据。
在本公开实施例中,在进行数据写入时,首先需要获取所述目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址。以上述需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A的数据传输操作为例,此时目标地址的首地址0x12为非双字对齐首地址,因此可以获取该目标地址的首地址0x12与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址0x12的上一个双字对齐首地址,即0x10,所述目标地址的首地址与所述第二地址之间相差的字节数,即可得到的第二字节差p2=2。需要说明的是,当所述目标地址的首地址为双字对齐首地址时,同样可以设所述第二字节差p2=4。
在本公开实施例中,还需要获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数。仍然以上述需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A的数据传输操作为例,此时所述目标地址的位宽L2也为9。
在本公开实施例中,在获取了所述第二字节差p2和目标地址的位宽L2后,可以基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据,其中,M=[L2/4]+1,[]为向下取整运算。
在本公开实施例中,所述基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,包括:自所述第二地址起,读取一个双字的数据;将读取的所述双字中前p2个字节中的数据作为低位数据,接收到的数据中的前(4-p2)个字节中的数据作为高位数据,得到拼接后的第一个双字的数据;将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接,其中,M=[L2/4]+1,[]为向下取整运算;将所述接收到的数据中未进行拼接的剩余数据的有效数据作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,得到拼接后的第M个双字的数据。
具体地,仍然以上述需要将源地址为0x1至0x9的数据搬移到目标地址0x12至0x1A的数据写入操作为例,假设所述目标地址中,从地址0x12至0x1A的数据如表2所示:
表2
0x10 | 0x11 | 0x12 | 0x13 | 0x14 | 0x15 | 0x16 | 0x17 | 0x18 | 0x19 | 0x1A | 0x1B |
AA | BB | CC | DD | EE | FF | GG | HH | 66 | 77 | 88 | 99 |
可以知道,在本次操作中,接收到的数据为3456789ABCDEF011000000022。如前所述,第二地址为0x10,第二字节差p2=0x12-0x10=2。在进行数据写入时,首先读取自第二地址0x10起的一个双字的数据,读取时可以遵循先入先出的原则,此时得到的数据为AABBCCDD;然后将读取的所述双字中前p2个字节中的数据作为低位数据,即将后2个字节中的数据AABB作为低位数据,将接收到的数据中的前(4-p2)个字节中的数据作为高位数据,即将接收到的数据中的前4-2=2个字节中的数据3456作为高位数据,得到拼接后的第一个双字的数据AABB3456。
接下来,将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接,即将所述接收到的数据自第3个字节开始进行双字拼接,每4个字节中的数据组成一个双字,直至完成第M-1=9/4+1-1=2个双字的拼接,得到拼接后的第二个双字的数据789ABCDE。
在完成上述第二个双字的拼接(在其他实施方式中,可以是第M-1个双字的,M=[L2/4]+1)后,将所述接收到的数据中未进行拼接的剩余数据中的有效数据作为低位数据,即将所述接收到的数据中未进行拼接的剩余数据中的有效数据F01122作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,即从目标地址的尾地址0x1A到所述目标地址的尾地址的下一个双字对齐地址0x1B中的数据99作为高位数据,得到拼接后的第M=3个双字的数据F0112299。至此,采用双字写入的方式,在由三个双字组成的地址0x10至0x1B上,完成对目标地址0x12至0x1A的数据写入,其中目标地址0x12至0x1A中写入的正是源地址0x1至0x9的数据,而地址0x10、0x11和0x1B中的数据则进行了保留。
根据本公开实施例的技术方案,通过将接收到数据进行拼接后写入目标地址,使得不满足双字对齐的目标地址中也可在诸如使用了DMA控制器的存储器中采用AHB总线进行双字写入,大幅提高了数据写入的效率。
在本公开实施例中,对接收到的数据和待写入数据的读取和写入操作均是遵循先入先出原则进行的。本领域技术人员可以理解,如果不采用先入先出原则进行,则在进行数据拼接时需要对各字节的排列顺序进行相应的修改,此处不再赘述。
在本公开实施例中,所述接收到的数据可以自数据通道缓存,例如FIFO,接收得到,也可以直接由所述源地址接收得到。
表3示出部分情况下是否需要进行数据拼接示例。如表3所示,在源地址低2位值和目的地址低2位值分别对应双字中不同位时,第一笔数据和最后一笔数据针对源地址和目的地址具有不同的拼接要求。
表3
图4示出根据本公开实施例的存储器中非对齐数据传输装置的结构框图。
如图4所示,所述存储器中非对齐数据传输装置400包括:
第一获取模块410,被配置为获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;
第二获取模块420,被配置为获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;
第一拼接模块430,被配置为基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;
传输模块440,被配置为将所述待传输数据传输至目标地址。
在本公开实施例中,所述非对齐数据包括:数据的源地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
在本公开实施例中,所述获取源地址与第一地址之间的第一字节差p1,包括:
获取所述源地址的首地址与所述第一地址之间相差的字节数作为所述第一字节差p1。
在本公开实施例中,所述基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,包括:自所述第一地址起,读取两个双字的数据;将自所述第一地址起第一个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第二个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第一个双字的数据;将自所述第一地址起第二个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第三个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第二个双字的数据;重复执行上述操作直至完成第N-1个双字的拼接;将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据;对其余高位字节进行补位处理,得到拼接后的第N个双字的数据。
在本公开实施例中,所述对其余高位字节进行补位处理,包括:对所述高位字节赋零;或者对所述高位字节赋无效值。
根据本公开实施例的技术方案,通过将源地址中的数据进行拼接后传输至目标地址,使得不满足双字对齐的源地址中的数据也可在诸如使用了DMA控制器的存储器中采用AHB总线进行双字传输,大幅提高了数据传输的效率。
图5示出根据本公开实施例的存储器中非对齐数据写入装置的结构框图。
如图5所示,所述存储器中非对齐数据写入装置500包括:
第三获取模块510,被配置为获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址;
第四获取模块520,被配置为获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;
第二拼接模块530,被配置为接收自源地址传输的数据,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据, M=[L2/4]+1,[]为向下取整运算;
写入模块540,被配置为将所述待写入数据写入所述目标地址。
在本公开实施例中,所述非对齐数据包括:数据的目标地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
在本公开实施例中,所述获取目标地址与第二地址之间的第二字节差p2,包括:获取所述目标地址的首地址与所述第二地址之间相差的字节数作为所述第二字节差p2。
在本公开实施例中,所述基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,包括:自第二地址起,读取一个双字的数据;将读取的所述双字中前p2个字节中的数据作为低位数据,接收到的数据中的前(4-p2)个字节中的数据作为高位数据,得到拼接后的第一个双字的数据;将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接;将所述接收到的数据中未进行拼接的剩余数据的有效数据作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,得到拼接后的第M个双字的数据。
在本公开实施例中,所述接收自源地址传输的数据还包括:接收自数据通道缓存传输的数据,所述数据通道缓存中的数据自源地址传输得到。
根据本公开实施例的技术方案,通过将接收到数据进行拼接后写入目标地址,使得不满足双字对齐的目标地址中也可在诸如使用了DMA控制器的存储器中采用AHB总线进行双字写入,大幅提高了数据写入的效率。
图6示出根据本公开实施例的DMA控制器的结构框图。
如图6所示,所述DMA控制器包括硬件请求处理模块、仲裁处理模块、状态机管理模块、AHB主接口管理模块、AHB从接口控制模块和n个通道的数据缓存处理单元,其中,n为正整数。其中,所述状态机管理模块用于实现数据的读、写控制功能,即,在DMA控制器中,所述状态机管理模块可被配置为执行本公开实施例的存储器中非对齐数据传输方法和/或存储器中非对齐数据写入方法。
本公开实施例还提供一种芯片,所述芯片包括上述存储器中非对齐数据传输装置和/或存储器中非对齐数据写入装置,所述装置可以通过软件、硬件或者两者的结合实现成为芯片的部分或者全部。
本公开还公开了一种电子设备,图7示出根据本公开的实施例的电子设备的结构框图。
如图7所示,所述电子设备包括存储器和处理器,其中,存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现根据本公开的实施例的存储器中非对齐数据传输方法和/或存储器中非对齐数据写入方法。
其中,所述存储器可以是使用了DMA控制器的存储器,所述DMA控制器基于AHB总线进行数据传输,所述存储器中非对齐数据传输方法包括:获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;将所述待传输数据传输至目标地址。
或者,所述存储器可以是使用了DMA控制器的存储器,所述DMA控制器基于AHB总线进行数据写入,所述存储器中非对齐数据写入方法包括:获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址; 获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;接收自源地址传输的数据,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据, M=[L2/4]+1,[]为向下取整运算;将所述待写入数据写入所述目标地址。
图8示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
如图8所示,计算机系统包括处理单元,其可以根据存储在只读存储器(ROM)中的程序或者从存储部分加载到随机访问存储器(RAM)中的程序而执行上述实施例中的各种方法。在RAM中,还存储有计算机系统操作所需的各种程序和数据。处理单元、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
以下部件连接至I/O接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信过程。驱动器也根据需要连接至I/O接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。其中,所述处理单元可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (25)
1.一种存储器中非对齐数据传输方法,所述存储器基于AHB总线进行数据传输,其特征在于,包括:
获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;
获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;
基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;
将所述待传输数据传输至目标地址;
其中,所述基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,包括:
自所述第一地址起,读取两个双字的数据;
将自所述第一地址起第一个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第二个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第一个双字的数据;
将自所述第一地址起第二个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第三个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第二个双字的数据;
重复执行上述低位数据和高位数据的拼接操作直至完成第N-1个双字的拼接。
2.根据权利要求1所述的方法,其特征在于,所述非对齐数据包括:
数据的源地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
3.根据权利要求1所述的方法,其特征在于,所述获取源地址与第一地址之间的第一字节差p1,包括:
获取所述源地址的首地址与所述第一地址之间相差的字节数作为所述第一字节差p1。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据;
对其余高位字节进行补位处理,得到拼接后的第N个双字的数据。
5.根据权利要求4所述的方法,其特征在于,所述对其余高位字节进行补位处理,包括:
对所述高位字节赋零;或者
对所述高位字节赋无效值。
6.根据权利要求1-5中任一项所述的方法,其特征在于,还包括:
将所述待传输数据存入数据通道缓存;
自所述数据通道缓存传输所述待传输数据至目标地址。
7.一种存储器中非对齐数据写入方法,所述存储器基于AHB总线进行数据写入,其特征在于,包括:
获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址;
获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;
接收自源地址传输的数据,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据, M=[L2/4]+1,[]为向下取整运算;
将所述待写入数据写入所述目标地址;
其中,所述基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,包括:
自第二地址起,读取一个双字的数据;
将读取的所述双字中前p2个字节中的数据作为低位数据,接收到的数据中的前(4-p2)个字节中的数据作为高位数据,得到拼接后的第一个双字的数据;
将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接。
8.根据权利要求7所述的方法,其特征在于,所述非对齐数据包括:
数据的目标地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
9.根据权利要求7所述的方法,其特征在于,所述获取目标地址与第二地址之间的第二字节差p2,包括:
获取所述目标地址的首地址与所述第二地址之间相差的字节数作为所述第二字节差p2。
10.根据权利要求7所述的方法,其特征在于,还包括:
将所述接收到的数据中未进行拼接的剩余数据的有效数据作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,得到拼接后的第M个双字的数据。
11.根据权利要求7-10中任一项所述的方法,其特征在于,所述接收自源地址传输的数据还包括:
接收自数据通道缓存传输的数据,所述数据通道缓存中的数据自源地址传输得到。
12.一种存储器中非对齐数据传输装置,所述存储器基于AHB总线进行数据传输,其特征在于,所述装置包括:
第一获取模块,被配置为获取源地址与第一地址之间的第一字节差p1,所述第一地址为所述源地址的首地址的上一个双字对齐首地址;
第二获取模块,被配置为获取所述源地址的位宽L1,所述源地址的位宽为源地址中包含的字节数;
第一拼接模块,被配置为基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,得到包括N个双字的待传输数据,其中,N=[L1/4]+1,[]为向下取整运算;
传输模块,被配置为将所述待传输数据传输至目标地址;
其中,所述基于所述第一字节差p1和源地址的位宽L1对所述源地址中的数据进行拼接,包括:
自所述第一地址起,读取两个双字的数据;
将自所述第一地址起第一个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第二个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第一个双字的数据;
将自所述第一地址起第二个双字中的后(4-p1)个字节的数据作为低位数据,自所述第一地址起第三个双字中前p1个字节的数据作为高位数据进行拼接,得到拼接后的第二个双字的数据;
重复执行上述低位数据和高位数据的拼接操作直至完成第N-1个双字的拼接。
13.根据权利要求12所述的装置,其特征在于,所述非对齐数据包括:
数据的源地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
14.根据权利要求12所述的装置,其特征在于,所述获取源地址与第一地址之间的第一字节差p1,包括:
获取所述源地址的首地址与所述第一地址之间相差的字节数作为所述第一字节差p1。
15.根据权利要求12所述的装置,其特征在于,还包括:
将所述源地址中剩余的L1-4*(N-1)个字节的数据作为低位数据;
对其余高位字节进行补位处理,得到拼接后的第N个双字的数据。
16.根据权利要求15所述的装置,其特征在于,所述对其余高位字节进行补位处理,包括:
对所述高位字节赋零;或者
对所述高位字节赋无效值。
17.根据权利要求12-16中任一项所述的装置,其特征在于,所述传输模块还被配置为:
将所述待传输数据存入数据通道缓存;
自所述数据通道缓存传输所述待传输数据至目标地址。
18.一种存储器中非对齐数据写入装置,存储器基于AHB总线进行数据写入,其特征在于,包括:
第三获取模块,被配置为获取目标地址与第二地址之间的第二字节差p2,所述第二地址为所述目标地址的首地址的上一个双字对齐首地址;
第四获取模块,被配置为获取所述目标地址的位宽L2,所述目标地址的位宽为目标地址中包含的字节数;
第二拼接模块,被配置为接收自源地址传输的数据,基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,得到包括M个双字的待写入数据, M= [L2/4]+1,[]为向下取整运算;
写入模块,被配置为将所述待写入数据写入所述目标地址;
其中,所述基于所述第二字节差p2和目标地址的位宽L2对接收到的数据进行拼接,包括:
自第二地址起,读取一个双字的数据;
将读取的所述双字中前p2个字节中的数据作为低位数据,接收到的数据中的前(4-p2)个字节中的数据作为高位数据,得到拼接后的第一个双字的数据;
将所述接收到的数据自第(4-p2+1)个字节开始进行双字拼接,直至完成第M-1个双字的拼接。
19.根据权利要求18所述的装置,其特征在于,所述非对齐数据包括:
数据的目标地址的首地址不满足双字对齐,和/或数据长度大于4且不为4的整数倍的数据。
20.根据权利要求18所述的装置,其特征在于,所述获取目标地址与第二地址之间的第二字节差p2,包括:
获取所述目标地址的首地址与所述第二地址之间相差的字节数作为所述第二字节差p2。
21.根据权利要求18所述的装置,其特征在于,还包括:
将所述接收到的数据中未进行拼接的剩余数据的有效数据作为低位数据,从所述目标地址的尾地址的下一个字节到所述目标地址的尾地址的下一个双字对齐尾地址中的数据作为高位数据,得到拼接后的第M个双字的数据。
22.根据权利要求18-21中任一项所述的装置,其特征在于,所述接收自源地址传输的数据还包括:
接收自数据通道缓存传输的数据,所述数据通道缓存中的数据自源地址传输得到。
23.一种电子设备,其特征在于,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1到11中任一项所述的方法步骤。
24.一种芯片,其特征在于,
所述芯片包括如权利要求12-22中任一项所述的装置。
25.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1到11中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211304565.XA CN115374032B (zh) | 2022-10-24 | 2022-10-24 | 存储器中非对齐数据传输方法、写入方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211304565.XA CN115374032B (zh) | 2022-10-24 | 2022-10-24 | 存储器中非对齐数据传输方法、写入方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115374032A CN115374032A (zh) | 2022-11-22 |
CN115374032B true CN115374032B (zh) | 2023-02-17 |
Family
ID=84073703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211304565.XA Active CN115374032B (zh) | 2022-10-24 | 2022-10-24 | 存储器中非对齐数据传输方法、写入方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115374032B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010170164A (ja) * | 2009-01-20 | 2010-08-05 | Nec Engineering Ltd | Dma転送制御装置 |
CN102103740A (zh) * | 2010-12-20 | 2011-06-22 | 福州瑞芯微电子有限公司 | 一种写入地址和宽度不对齐图像的处理方法和处理电路 |
CN102521793A (zh) * | 2011-12-01 | 2012-06-27 | 福州瑞芯微电子有限公司 | 实现节省图像存储空间的存储控制装置和方法 |
CN104407880A (zh) * | 2014-10-27 | 2015-03-11 | 杭州中天微系统有限公司 | 支持硬件非对齐存储访问的risc处理器加载/存储单元 |
WO2018133414A1 (zh) * | 2017-01-20 | 2018-07-26 | 深圳市中兴微电子技术有限公司 | 切包方法、请求处理方法、装置和计算机存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821475A (zh) * | 2021-11-22 | 2021-12-21 | 湖北芯擎科技有限公司 | 数据传输方法、装置、电子设备及存储介质 |
-
2022
- 2022-10-24 CN CN202211304565.XA patent/CN115374032B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010170164A (ja) * | 2009-01-20 | 2010-08-05 | Nec Engineering Ltd | Dma転送制御装置 |
CN102103740A (zh) * | 2010-12-20 | 2011-06-22 | 福州瑞芯微电子有限公司 | 一种写入地址和宽度不对齐图像的处理方法和处理电路 |
CN102521793A (zh) * | 2011-12-01 | 2012-06-27 | 福州瑞芯微电子有限公司 | 实现节省图像存储空间的存储控制装置和方法 |
CN104407880A (zh) * | 2014-10-27 | 2015-03-11 | 杭州中天微系统有限公司 | 支持硬件非对齐存储访问的risc处理器加载/存储单元 |
WO2018133414A1 (zh) * | 2017-01-20 | 2018-07-26 | 深圳市中兴微电子技术有限公司 | 切包方法、请求处理方法、装置和计算机存储介质 |
Non-Patent Citations (2)
Title |
---|
Optimizing Compiler for a CELL Processor;Alexandre E. Eichenberger等;《14th International Conference on Parallel Architectures and Compilation Techniques》;20051011;全文 * |
即时加速非对齐数据传输的dma设计方法;张彤等;《电子测量技术》;20171231;第40卷(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115374032A (zh) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7412554B2 (en) | Bus interface controller for cost-effective high performance graphics system with two or more graphics processing units | |
US7487302B2 (en) | Service layer architecture for memory access system and method | |
US7433977B2 (en) | DMAC to handle transfers of unknown lengths | |
CN106021141B (zh) | 半导体设备 | |
KR100943574B1 (ko) | 서브-디바이스 상태 정보를 전달하기 위한 시스템, 방법,및 컴퓨터 프로그램 제품 | |
JP2017525065A (ja) | Sfenceを用いずに最適化されたpio書込みシーケンスを用いるパケット送信 | |
EP3037977B1 (en) | Optical module availability detection method and apparatus | |
US10885115B2 (en) | Accessing an N-way linked list | |
KR20070012845A (ko) | 개발 인터페이스에 대한 적용성을 가진 데이터 처리 시스템내의 마스킹 | |
US7827343B2 (en) | Method and apparatus for providing accelerator support in a bus protocol | |
US6185633B1 (en) | DMA configurable receive channel with memory width N and with steering logic compressing N multiplexors | |
CN111159075A (zh) | 数据传输方法和数据传输装置 | |
US20210019261A1 (en) | Memory cache-line bounce reduction for pointer ring structures | |
CN115168260A (zh) | 直接内存存取装置、数据传输方法及集成电路系统 | |
JP5443586B2 (ja) | 回路構成におけるデータ交換を制御するための回路構成、および方法 | |
CN115374032B (zh) | 存储器中非对齐数据传输方法、写入方法和装置 | |
CN113254073B (zh) | 数据处理方法及装置 | |
WO2007083197A1 (en) | Device having data sharing capabilities and a method for sharing data | |
US8756356B2 (en) | Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size | |
US8938561B2 (en) | Time-sharing buffer access system | |
CN109240979A (zh) | 数据处理芯片及led显示系统 | |
US9395982B1 (en) | Atomic memory operations on an N-way linked list | |
US7451254B2 (en) | System and method for adaptive buffer allocation in a memory device interface | |
US10936515B2 (en) | Information processing system including data classification unit for reconstructing transfer data based on defined transfer codes | |
US10521374B2 (en) | Semiconductor integrated circuit device and method for comparing data |
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 |