CN116166185A - 缓存方法、图像传输方法、电子设备及存储介质 - Google Patents
缓存方法、图像传输方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116166185A CN116166185A CN202211542749.XA CN202211542749A CN116166185A CN 116166185 A CN116166185 A CN 116166185A CN 202211542749 A CN202211542749 A CN 202211542749A CN 116166185 A CN116166185 A CN 116166185A
- Authority
- CN
- China
- Prior art keywords
- data
- bit width
- row
- cache
- sub
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000005540 biological transmission Effects 0.000 title claims abstract description 27
- 238000006243 chemical reaction Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开实施例提供一种缓存方法、图像传输方法、电子设备及存储介质。该方法包括:获取位宽为字节指数倍的目标数据;基于所述目标数据的数据位宽,确定所述目标数据的缓存结构的缓存块位宽,其中,所述数据位宽为所述缓存块位宽的整数倍;基于所述缓存块位宽,以及所述缓存结构配置的接口数据位宽,确定所述缓存结构的并行存储数据长度;基于所述并行存储数据长度和所述缓存块位宽,确定所述缓存结构中的并行缓存块数量;根据所述缓存结构的缓存块位宽、接口数据位宽以及并行缓存块数量,对所述目标数据进行缓存。本公开实施例,可以提高数据缓存的效率。
Description
技术领域
本公开涉及人工智能技术领域,尤其涉及一种缓存方法、图像传输方法、电子设备及存储介质。
背景技术
在SOC(System on Chip,片上***)中,存储(memory)空间内的数据搬移可由CPU(central processing unit,中央处理器)或其他处理器通过寄存器方式直接读取或写入,该数据搬移方式操作简单、直观,适合临时处理小数据块,大数据块由于搬移时间较长,不适合处理器长时间介入。常规的带有缓存结构的数据搬移器件,虽然支持AXI接口,但是并没有针对缓存进行优化使其适应AXI总线的特点,数据搬运效率低,无法单个时钟周期对任意地址进行字节级别的数据读取。
发明内容
本公开实施例提供一种缓存方法、图像传输方法、电子设备及存储介质,以解决或缓解现有技术中的一项或更多项技术问题。
作为本公开实施例的第一个方面,本公开实施例提供一种缓存方法,包括:
获取位宽为字节指数倍的目标数据;
基于所述目标数据的数据位宽,确定所述目标数据的缓存结构的缓存块位宽,其中,所述数据位宽为所述缓存块位宽的整数倍;
基于所述缓存块位宽,以及所述缓存结构配置的接口数据位宽,确定所述缓存结构的并行存储数据长度;
基于所述并行存储数据长度和所述缓存块位宽,确定所述缓存结构中的并行缓存块数量;
根据所述缓存结构的缓存块位宽、接口数据位宽以及并行缓存块数量,对所述目标数据进行缓存。
作为本公开实施例的第二个方面,本公开实施例提供一种图像传输方法,包括:
确定目标数据的缓存结构为本公开任一实施例提供的缓存结构,其中,所述目标数据为目标图像;
基于所述目标图像的转换方式和所述缓存结构,确定所述目标图像的像素读取模式;
基于所述像素读取模式,将所述目标图像缓存至所述缓存结构中。
作为本公开实施例的第三个方面,本公开实施例提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开实施例提供的方法。
作为本公开实施例的第四个方面,本公开实施例提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行本公开实施例提供的方法。
作为本公开实施例的第五个方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现本公开实施例提供的方法。
本公开实施例提供的技术方案,在确定目标数据的位宽为字节指数倍时,基于该数据的数据位宽确定缓存结构的缓存块位宽,且,数据位宽为缓存块位宽的整数倍。然后,基于缓存块位宽以及数据总线接口配置的接口数据位宽,确定缓存结构的并行存储数据长度。进而,基于缓存结构的并行存储数据长度以及缓存块位宽,可以得到缓存结构的并行缓存块数量。从而,基于该缓存结构进行数据存储时,可以实现数据总线接口可以满带宽传输,提高数据传输的效率。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本公开进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本公开的一些实施方式,而不应将其视为是对本公开范围的限制。
图1是本公开一实施例的缓存方法的流程图;
图2是本公开一实施例的图像传输方法的流程图;
图3是本公开一实施例缓存结构的缓存结构示意图;
图4是本公开一实施例的图像传输方法的DMA结构示意图;
图5是本公开一实施例的图像缓存的示意图;
图6是本公开另一实施例的图像缓存的示意图;
图7是本公开另一实施例的图像缓存的示意图;
图8是本公开另一实施例的图像缓存的示意图;
图9是本公开另一实施例的图像缓存的示意图;
图10是本公开另一实施例的图像缓存的示意图;
图11是本公开一实施例的电子设备的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本公开的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
对于SOC***内的数据搬运,通常由DMA(Direct Memory Access,直接存储器访问)控制器来完成搬移工作。
DMA控制器是一种常见的数据搬移工具,主要应用于***内memory与memory之间、memory与外设之间的数据搬移,只需在启动前由处理器对其进行参数化配置即可完成指定的数据搬移工作。它的存在极大地减轻了处理器在数据搬移方面的工作负担,提高了***的工作效率。
作为一种通用的数据搬移工具,常规的DMA控制器从结构上一般包括配置模块、读数据通道与写数据通道,通道间FIFO接口缓存等。常规的DMA控制器虽然支持AXI接口,但是其内部并没有针对AXI总线的特点做深度优化,AXI总线的高带宽低延时特点很难发挥出来。
为此,本申请提供一种缓存方法,能够对缓存结构进行配置以及对缓存结构所对应的AXI总线的接口参数,例如接口位宽、突发长度等进行配置,实现数据的高速搬运,并且能够实现单个时钟周期内对任意地址进行字节级别的数据读写。
图1是本公开一实施例的缓存方法的流程图。如图1所示,该缓存方法可以包括:
S110,获取位宽为字节指数倍的目标数据;
S120,基于目标数据的数据位宽,确定所述目标数据对应的缓存结构的缓存块位宽,其中,数据位宽为缓存块位宽的整数倍;
S130,基于缓存块位宽,以及缓存结构配置的接口数据位宽,确定缓存结构的并行存储数据长度;
S140,基于并行存储数据长度和缓存块位宽,确定缓存结构中的并行缓存块数量;
S150,根据缓存结构的缓存块位宽、接口数据位宽以及并行缓存块数量,对目标数据进行缓存。
在本示例中,在传输数据为字节指数倍时采用上述缓存结构的缓存结构可以实现数据总线接口能够满带宽传输,提高数据传输的效率。
示例性地,位宽为字节指数倍,是指单个字节与2的指数倍之间的乘积。例如,1byte,2byte,8byte,16byte,32byte等。如果位宽为1byte,即8bit,则其为字节指数倍。
在一些实施例中,数据位宽与缓存块位宽一致。
例如,如果数据位宽为8bit,则缓存块位宽为8bit。如果数据位宽为16bit,则缓存块位宽为16bit。
在本示例中,由于数据位宽是缓存块位宽的整数倍,例如,两者的位宽是一样的,这样,目标数据的数据位宽能被一个或多个缓存块位宽完全占满,从而实现缓存块位宽存储目标数据的完全利用。
利用目标数据的数据结构特征来确定缓存结构特征。缓存块位宽采用的标准通常为8bit、16bit、32bit,此时需要目标数据的数据位宽能被一个或多个缓存块位宽完全占满,如此实现缓存块位宽存储目标数据的完全利用。
在得到缓存结构的缓存块位宽之后,可以进一步地确定缓存结构的并行缓存块数量。在确定并行缓存块数量的过程中,需要先确定数据的并行存储数据长度。而最小并行存储数据长度与接口数据位宽相关。
在一些实施例中,在上述步骤S120中,基于缓存块位宽及缓存结构对应的数据总线接口配置的接口数据位宽,确定缓存结构的并行存储数据长度,包括:
基于缓存块位宽与接口数据位宽的公倍数,确定缓存结构的并行存储数据长度。
其目的为,基于接口数据位宽并行存储数据时,存储的一个或多个目标数据的数据位宽要将并行存储数据长度完全占满,如此实现接口数据位宽即带宽的完全利用。
本申请SOC***中,由于其数据传输方法是基于AXI总线,所以缓存结构对应的数据总线接口配置的接口数据位宽为64bit,当然基于其他AXI总线协议或者其他总线协议,接口数据位宽还可为128bit,32bit等。
示例性地,该公倍数为最小公倍数。
示例性地,如果缓存块位宽为8bit,接口数据位宽为64bit,8bit和64bit之间的最小公倍数为64bit,则缓存一次并行写入数据的并行存储数据长度为64bit。这样,一个带宽的数据,可以一次并行地写入8个缓存块中。当然采用其他公倍数如128bit,则缓存一次并行写入数据的并行存储数据长度为128bit。这样,两个带宽的数据,可以一次并行地写入16个缓存块中。
示例性地,如果缓存块位宽为16bit,接口数据位宽为64bit,16bit和64bit之间的最小公倍数是64bit,则缓存一次并行写入数据的并行存储数据长度为64bit。这样,一个带宽的数据,可以一次并行地写入4个缓存块中。
在一些实施例中,上述步骤S130,基于并行存储数据长度和缓存块位宽,确定缓存结构中的并行缓存块数量,包括:
基于并行存储数据长度与缓存块位宽之间的比值,确定并行缓存块数量。
示例性地,如果并行存储数据长度为64bit,缓存块位宽为8bit,则并行缓存块数量为8个。
示例性地,如果并行存储数据长度为64bit,缓存块位宽为16bit,则并行缓存块数量为4个。
示例性地,如果并行存储数据长度为128bit,缓存块位宽为8bit,则并行缓存块数量为16个。
在一些实施例中,在为目标数据确定缓存结构的缓存块位宽以及并行缓存块数量之后,还可以为缓存结构所对应的数据总线接口的突发长度进行配置。
示例性地,基于并行存储数据长度与接口数据位宽之间的比值,确定数据总线接口配置的突发长度。
示例性地,数据位宽为8bit,缓存块位宽为8bit,接口数据位宽为64bit。
如果并行存储数据长度为64bit,接口数据位宽为64bit,则64bit/64bit=1,数据总线接口配置的突发长度至少为1的整数倍,例如8倍,即突发长度为8。
如果并行存储数据长度为128bit,接口数据位宽为64bit,则128bit/64bit=2,数据总线接口配置的突发长度至少为2的整数倍,例如4倍,即突发长度为8。
如下表1和表2,对于字节指数倍的目标数据,其缓存结构以及缓存结构对应的数据总线接口参数,可以设置类似表1和表2的方案。
表1:带宽为64bit的不同数据位宽的缓存特征
表2:带宽为32bit的不同数据位宽的缓存特征
其中,以上述带宽64bit,数据的位宽为8bit为例,描述缓存结构的缓存结构的设计方案,具体如下:
如图3所示,单组buffer缓存(本公开实施例的缓存结构)配置是,由8个8bit位宽、512深度的ram块拼接而成,ram块执行并行操作。并行ram块的设计优点在于不仅可以实现每个工作时钟完成读或写8*8bit共64bit数据宽度,与接口数据位宽一致,而且对任一ram块均可以实现任意地址的选取,从而在用于特殊数据转换时依然可以实现高效的单拍满数据位宽读写,这是采用fifo(First Input First Output,先进先出)缓存方式无法实现的优势。
对于上述表1和表2中的其他位宽数据也可类似这样进行设置,实现AXI接口满带宽高速传输,提高数据缓存的效率。
图2是本公开一实施例的图像传输方法的流程图,如图2所示,该方法可以包括如下步骤:
S210,确定目标数据的缓存结构为本公开实施例提供的缓存结构,其中,目标数据为目标图像;
S220,基于目标图像的转换方式和缓存结构,确定目标图像的像素读取模式;
S230,基于像素读取模式,将目标图像缓存至缓存结构中。
在本示例中,基于图像的转换方式以及缓存结构,确定目标图像的像素读取顺序,然后按照这个读取顺序,将目标图像的像素读取至缓存结构中。从而,在传输图像的过程中,实现对目标图像的翻转,例如水平翻转、垂直翻转等操作。
如图4所示,本申请图像传输方法涉及的DMA控制器从结构上一般包括配置模块、读数据通道与写数据通道,通道间FIFO接口缓存等。设计DMA控制器的同时充分结合AXI总线的特征(配置的接口数据位宽),如数据位宽,burst(突发)长度,outstanding值等;合理设置DMA读通道与写通道之间的buffer(本公开实施例的缓存结构)大小,并设置乒乓buffer使读写通道同时工作;使用ram块拼接作为buffer缓存,实现了fifo方式缓存无法做到的单拍对任意地址进行字节级别的数据读写。
其中一实施例,数据总线接口采用AXI3协议,接口数据位宽64bit,burst_lentgh(突发长度)设置为8,内部支持outstanding值为8,buffer(本公开实施例的缓存结构)缓存分为两组,用作DMA读写乒乓缓存。
在本示例中,通过设置两组缓存,每当一组缓存写满,可以写入下一组缓存中,每当一组缓存读取,可以读取下一组缓存,如此两组缓存不断循环,可以使并行读取和写入的效率更高。
其中一实施例,对于上述AXI3协议,可以替换为更新版本的AXI4.0以及AXI5.0协议。在某些应用场景亦可将axi_stream接口参与进来。与axi接口协议相比,axi_stream接口去除了地址控制逻辑、取消了突发长度限制,更适合***内高速大数据流传输,如高速视频流的传输。
示例性地,在上述步骤S220中,对于不同位宽的图像数据,其对应的缓存结构是不同的。
示例性地,目标图像的数据位宽为字节指数倍,例如,其位宽为8bit,16bit,32bit等。
示例性地,目标图像的数据位宽为8bit,其可以采用的缓存结构为由8组8bit位宽,128深度的ram块拼接而成的缓存。
示例性地,转换方式可以包括旋转和翻转。其中,翻转可以包括水平翻转和垂直翻转,即水平镜像和垂直镜像。旋转可以包括旋转90度、180度和270度。
在一些实施例中,如果目标图像的转换方式为未变化,其可以直接按照常规的读取顺序进行读取即中。也可以切分成多个子图像进行读取。
在一些实施例中,如果目标图像的转换方式为旋转90度、180度,270度等,水平翻转和垂直翻转等,则可以基于缓存结构,将目标图像拆分成多个子图像。
示例性地,在上述步骤S220中,基于目标图像的转换方式和缓存结构,确定目标图像的像素读取顺序,可以包括:
基于缓存结构,对目标图像进行拆分,得到至少一个子图像;
基于目标图像的转换方式,确定子图像的像素读取顺序;
基于像素读取顺序,将目标图像的像素读取至缓存结构中,包括:
基于子图像的像素读取顺序,将子图像的像素缓存至缓存结构中。
在本示例中,基于缓存结构,将目标图像拆分成多个子图像并确定每个子图像的像素读取顺序,可以实现图像的快速搬动以及方便其在缓存过程实现翻转,从而图像从源地址搬移目的地址时即实现图像的转换,不必在搬移目的地址后再进行图像转换,提高图像转换效率。
示例性地,上述基于缓存结构,对目标图像进行拆分,得到至少一个子图像,可以包括:
基于缓存结构的并行缓存块数量和目标图像的单数据缓存块数量,确定针对目标图像的并行存储像素数量;
基于并行存储像素数量,确定子图像的行像素量和宽像素量。
其中,单数据缓存块数量可以依据所述缓存结构的缓存位宽和目标图像的数据位宽确定。例如,缓存结构的缓存位宽为8bit,目标图像的数据位宽为8bit,则单数据缓存块数量为1。由于单数据缓存块数量为1,则并行缓存块数量与图像的并行存储像素数量相同。例如,并行缓存块数量为8,则图像的并行存储像素数量为8,每个存储块存储一个像素。从而,子图像的行像素量可以为8的正整数倍,子图像的列像素量为8的正整数倍。例如子图像为8个像素*8个素像,16个像素*16个像素等。
在本示例中,将目标图像拆分成多个子图像,逐个子图像地进行读取。
示例性地,缓存结构的并行缓存块数量为8,缓存块位宽为8bit,目标数据为8bit,则其并行存储像素数量为8,则子图像的行像素量可以为8的整数倍,宽像素量也可以是8的整数倍。
示例性地,子图像的行像素量与宽像素量相同。
示例性地,如缓存结构的并行缓存块数量为24,目标图像的单数据缓存块数量3,则其并行存储像素数量为8,则子图像的行像素量和宽像素量均为32。
示例性地,如缓存结果的并行缓存块数量为8,目标图像的单数据缓存块数量1,则其并行存储像素数量为8,则子图像的行像素量和宽像素量均为8。
对于不同的图像转换方式,子图像的像素读取顺序是不相同的,以下针对未转换、水平翻转、垂直翻转、旋转90度以及旋转180度进行相应的描述:
示例性地,目标图像的转换方式为未转换,子图像的像素读取顺序包括以下之一:
从行开始读取,子图像的行读取顺序为从首行至末行,每一行像素的行像素读取顺序为从行首至行尾;
从列开始读取,子图像的列读取顺序为从首列至末列,每一列像素的列像素读取顺序为从行首至行尾。
然后,在读取上述子图像并写入缓存时,由于其为未转换,可以按读取顺序写入到缓存中,其缓存地址为:在所述目标图像的翻转方式为未转换的情况下,针对第i个像素块的第j个像素单元的第k个像素子单元,确定所述第k个像素子单元的写入缓存块为第k个缓存块,以及确定所述k个像素子单元在所述k个缓存块中的缓存地址为i*N+j;
其中,i为整数,j为整数,k为整数,j的取值范围为[0,N-1],k的取值范围为[0,M-1]。
其中,像素块为上述子图像(8个像素*8个素像)。例如,以突发长度为基准获取一个突发长度的像素块,即8*64bit,即可获取到一个上述子图像。按行进行像素单元的切分,切分成8个像素单元,即每个像素单元为64bit,可以分成8*8bit,即8个子像素单元(8个像素)。从而每次并行写入一个像素单元,即8个子像素单元。这样,分成8次并行写入,即可将一个突发长度的像素块完全写入到缓存当中。
如图5所示,使用DMA控制器将存放在源地址为src_addr的原图像搬移到目的地址dst_addr,DMA首先按行操作模式以burst(突发长度)为单位从源地址读取数据R1、R2、R3、R4依次放入缓存buffer,buffer缓存状态位拉起后按行操作模式以burst为单位将W1、W2、W3、W4数据写入目的地址,按此动作依次将整幅图像数据搬移完成。
如图6所示,搬移过程中数据放入buffer缓存的次序如图所示,单burst读取的数据量R1以字节为单位拆分,这样每拍的64bit数据单拍即可全部写入各ram块的对应地址,如此8拍即可完成burst数据的写入。由于这是逐行copy(复制)模式,数据的读取和写入顺序上一致,因此,本公开实施例配置了乒乓缓存。这样,数据的读和写可以并行操作,极大的缩短了相互等待的时间。
示例性地,目标图像的转换方式为水平翻转,子图像的像素读取顺序包括以下之一:
从行开始读取,子图像的行读取顺序为从首行至末行,每一行像素的行像素读取顺序为从行尾至行首;
从列开始读取,子图像的列读取顺序为从首列至末列,每一列像素的列像素读取顺序为从列尾至列首。
然后,在读取上述子图像后,按照指定的写入缓存方式进行缓存写入,其写入地址为:在所述目标图像的翻转方式为水平翻转的情况下,针对第i个像素块的第j个像素单元的第k个像素子单元,确定所述第k个像素子单元的写入缓存块为第M-k-1个缓存块,以及确定所述第k个像素子单元在所述第M-k-1个缓存块中的缓存地址为i*N+N-j-1;
其中,i为整数,j为整数,k为整数,j的取值范围为[0,N-1],k的取值范围为[0,M-1]。
其中,像素块为上述子图像。例如,以突发长度为基准获取一个突发长度的像素块,即8*64bit,即可获取到一个上述子图像。按行进行像素单元的切分,切分成8个像素单元,即每个像素单元包括8个像素,即8*8bit。从而,每次并行写入一个像素单元,即8个像素。这样,分成8次并行写入,即可将一个突发长度的像素块(子图像)完全写入到缓存当中。
如图7所示,为图像数据的水平翻转模式:使用DMA控制器将存放在源地址为src_addr的源图像搬移到目的地址dst_addr,图像存放在目的地址的同时实现了水平翻转。DMA首先按行操作模式以burst为单位从首行的行尾依次读取数据R1、R2、R3、R4并放入缓存buffer,buffer缓存状态位拉起后按行操作模式以burst为单位将W1、W2、W3、W4数据写入对应的目的地址,按此动作依次将整幅图像数据搬移完成。
如图8所示,在搬移过程中,数据放入buffer缓存的次序如图所示,单burst读取的数据量R1(8*64bit)分成8拍数据,每拍数据为64bit。这样,只需用8拍的时间即可完成单个burst的数据量的buffer写入。假设拼成buffer的各ram块初始地址均为addr0,根据水平翻转的特点,将R1的第1拍数据(64bit)按字节拆分成8byte,即8*8bit,并分别放入各ram块的addr0+7地址中,将第2拍的数据放入各ram块的addr0+6地址中,依此类推将第8拍的数据放入各ram块的addr0地址中。如此对R2、R3以及R4等数据均可以这样写入。此外,对buffer的读取与图像数据copy模式一致,从buffer中按照copy模式读取数据并写入目的地址后即实现了图像数据的水平翻转。
其中,图8中的ram块中同一列的0至7数字表示1拍数据中的第几个字节。各ram块中位于同一列的地址相同,起始地址为addr0,图中未具体标识出。
如此,DMA接收到子图像数据,并经过DMA(本申请的缓存结构)按照像素读取顺序缓存后,最终再将数据写入目的地址,实现子图像水平翻转的传输。
示例性地,目标图像的转换方式为垂直翻转,子图像的像素读取顺序包括以下之一:
从行开始读取,目标图像的行读取顺序为从末行至首行,每一行像素的行像素读取顺序为从行首至行尾;
从列开始读取,目标图像的列读取顺序为从末列至首列,每一列像素的列像素读取顺序为从列首至列尾。
然后,在读取上述子图像后,按照指定的写入缓存方式进行缓存写入,其写入地址为:在所述目标图像的翻转方式为水平翻转的情况下,针对第i个像素块的第j个像素单元的第k个像素子单元,确定所述第k个像素子单元的写入缓存块为第M-k-1个缓存块,以及确定所述第k个像素子单元在所述第M-k-1个缓存块中的缓存地址为i*N+N-j-1;
其中,i为整数,j为整数,k为整数,j的取值范围为[0,N-1],k的取值范围为[0,M-1]。
其中,像素块为上述子图像。例如,以突发长度为基准获取一个突发长度的像素块,即8*64bit,即可获取到一个上述子图像。按行进行像素单元的切分,切分成8个像素单元,即每个像素单元包括8个像素,即8*8bit。从而,每次并行写入一个像素单元,即8个像素。这样,分成8次并行写入,即可将一个突发长度的像素块(子图像)完全写入到缓存当中。
对于转换方式为垂直翻转的图像,在读取子图像之后就会写入缓存,其写入缓存的方式与转换方式为未变化的写入缓存的方式相同。因此,对于其写入地址,可以参考前述转换方式为未变化的写入地址的确认过程。
示例性地,转换方式为旋转90度,子图像的像素读取顺序为以下之一:
从行开始读取,行读取顺序为从首行至末行,每一行像素的行像素读取顺序为不同行像素错位读取;
从列开始读取,列读取顺序为从首列至末列,每一列像素的列像素读取顺序为不同列像素错位读取。
此错位读取实际就是错位写入到缓存中。
示例性地,如图9所示,子图像为8*8,放入缓存前,将读取的像素以8个像素为单位分组,依次按组将数据循环移位放入缓存内,循环移位的单位为一个像素,这样可以实现源图像每行同一位置像素(如虚线框内p0)的并行读取。
具体的,如图10所示,将存放在源地址为src_addr的子图像传输到目的地址dst_addr。首先读取子图像时,从行开始读取,行读取顺序为从首行至末行,每一行像素的行像素读取顺序为不同行像素错位读取,将其缓存至缓存buffer(采用本申请的缓存结构),每一行8个像素占用一列并行缓存块,实现并行存储数据。如此的目的在于,如图9所示,在访问缓存buffer读取数据时需要:
读取第一行像素的p0、第二行像素的p0、第三行像素的p0……第八行像素的p0,分别作为向右旋转90度后的子图像的第一行像素的p7、p6、p5……p0;
读取第一行像素的p1、第二行像素的p1、第三行像素的p1……第八行像素的p1,分别作为向右旋转90度后的子图像的第二行像素的p7、p6、p5……p0;
……
读取第一行像素的p2、第二行像素的p2、第三行像素的p2……第八行像素的p2,分别作为向右旋转90度后的子图像的第八行像素的p7、p6、p5……p0。向右旋转90度的像素读取顺序,与上述原理一致,在此不再赘述。
上述旋转90度,子图像的像素读取顺序为错位读取的目的在于,利用缓存buffer的缓存块能并行缓存和读出的特点,直接将旋转90度前的一行像素并行缓存,和直接将旋转90度后的一行像素并行取出至目的地址。
数据从buffer取出的格式如图9中虚框及虚线标示,即AXI写数据接口的第一个burst数据,要实现小框数据连续写入目的地址的操作,只需以burst方式依次读取出源图像小框内每行的p0~p7像素即可。按此方式,结合图像的分辨率,设置合理的参数,将整幅图像分解成合适的小框,即可实现整幅图像90度旋转模式的高效传输。
如此,DMA从源地址中接收到子图像数据,并经过buffer(本公开的缓存结构)按照像素读取顺序缓存后,最终再将数据写入目的地址,实现子图像旋转180度的传输。
子图像为32*32时,也是与上述原理一致,子图像的每一行像素为32,将每一行像素拆分为4组8个像素,采用4列并行缓存块(即缓存深度4)存储一行像素,每一行像素的对应组的像素进行错位读取。
示例性地,转换方式为旋转180度,子图像的像素读取顺序为以下之一:
从行开始读取,行读取顺序为末行至首行,每一行像素的行像素读取顺序为从行尾至行首;
从列开始读取,列读取顺序为末列至首列,每一列像素的列像素读取顺序为从列尾至列首。
如此,DMA接收到子图像数据,并经过DMA(本申请的缓存结构)按照像素读取顺序缓存后,最终再将数据写入目的地址,实现子图像旋转180度的传输。
因此,通过上述示例,DMA针对对目标图像,按照缓存结构和转换方式从源地址中读取并写入缓存中,同时并行地按照指定的模式从缓存中读取数据并写入到目的地址中,从而实现图像的快速搬运以及在快速搬运过程中实现图像转换。
基于同样的发明构思,本申请的缓存方法和涉及的缓存结构,也可适用于master和slave中的缓存结构中。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图11示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或要求的本公开的实现。
如图11所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序来执行各种适当的动作和处理。在RAM 803中,还可存储电子设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入输出(I/O)接口805也连接至总线804。
电子设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如缓存方法或图像传输方法。例如,在一些实施例中,缓存方法或图像传输方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到电子设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的缓存方法或图像传输方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行缓存方法或图像传输方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程氛围灯调节装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式***的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (16)
1.一种缓存方法,其特征在于,包括:
获取位宽为字节指数倍的目标数据;
基于所述目标数据的数据位宽,确定所述目标数据的缓存结构的缓存块位宽,其中,所述数据位宽为所述缓存块位宽的整数倍;
基于所述缓存块位宽,以及所述缓存结构配置的接口数据位宽,确定所述缓存结构的并行存储数据长度;
基于所述并行存储数据长度和所述缓存块位宽,确定所述缓存结构中的并行缓存块数量;
根据所述缓存结构的缓存块位宽、接口数据位宽以及并行缓存块数量,对所述目标数据进行缓存。
2.根据权利要求1所述的缓存方法,其特征在于,所述数据位宽与所述缓存块位宽一致。
3.根据权利要求1所述的缓存方法,其特征在于,所述基于所述缓存块位宽,以及所述缓存结构配置的接口数据位宽,确定所述缓存结构的并行存储数据长度,包括:
基于所述缓存块位宽与所述接口数据位宽的公倍数,确定所述缓存结构的并行存储数据长度。
4.根据权利要求3所述的缓存方法,其特征在于,所述公倍数为最小公倍数。
5.根据权利要求1所述的缓存方法,其特征在于,所述基于所述并行存储数据长度和所述缓存块位宽,确定所述缓存结构中的并行缓存块数量,包括:
基于所述并行存储数据长度与缓存块位宽之间的比值,确定所述并行缓存块数量。
6.根据权利要求1所述的缓存方法,其特征在于,还包括:
基于所述并行存储数据长度与所述接口数据位宽之间的比值,确定所述数据总线接口配置的突发长度。
7.根据权利要求1所述的缓存方法,其特征在于,所述数据的位宽为8bit,所述缓存块位宽为8bit,所述接口数据位宽为64bit。
8.一种图像传输方法,其特征在于,包括:
确定目标数据的缓存结构为权利要求1至7任一项所述的缓存结构,其中,所述目标数据为目标图像;
基于所述目标图像的转换方式和所述缓存结构,确定所述目标图像的像素读取模式;
基于所述像素读取模式,将所述目标图像缓存至所述缓存结构中。
9.根据权利要求8所述的方法,其特征在于,所述基于所述目标图像的转换方式和所述缓存结构,确定所述目标图像的像素读取模式,包括:
基于所述缓存结构,对所述目标图像进行拆分,得到至少一个子图像;
基于所述目标图像的转换方式,确定所述子图像的像素读取顺序;
所述基于所述像素读取顺序,将所述目标图像的像素缓存至所述缓存结构中,包括:
基于所述子图像的像素读取顺序,将所述子图像的像素缓存至所述缓存结构中。
10.根据权利要求9所述的方法,其特征在于,所述基于所述缓存结构,对所述目标图像进行拆分,得到至少一个子图像,包括:
基于所述缓存结构的并行缓存块数量和所述目标图像的单数据缓存块数量,确定针对所述目标图像的并行存储像素数量;其中,所述单数据缓存块数据依据所述缓存结构的缓存位宽和所述目标图像的数据位宽确定的;
基于所述并行存储像素数量,确定所述子图像的行像素量和宽像素量。
11.根据权利要求9所述的方法,其特征在于,所述转换方式为水平翻转,所述子图像的像素读取顺序包括以下之一:
从行开始读取,所述子图像的行读取顺序为从首行至末行,每一行像素的行像素读取顺序为从行尾至行首;
从列开始读取,所述子图像的列读取顺序为从首列至末列,每一列像素的列像素读取顺序为从列尾至列首。
12.根据权利要求9所述的方法,其特征在于,所述转换方式为未翻转,所述子图像的像素读取顺序包括以下之一:
从行开始读取,所述子图像的行读取顺序为从首行至末行,每一行像素的行像素读取顺序为从行首至行尾;
从列开始读取,所述子图像的列读取顺序为从首列至末列,每一列像素的列像素读取顺序为从行首至行尾。
13.根据权利要求9所述的方法,其特征在于,所述转换方式为垂直翻转,所述目标图像的读取顺序包括以下之一:
从行开始读取,所述子图像的行读取顺序为从末行至首行,每一行像素的行像素读取顺序为从行首至行尾;
从列开始读取,所述子图像的列读取顺序为从末列至首列,每一列像素的列像素读取顺序为从列首至列尾。
14.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-13中任一项所述的方法。
15.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行权利要求1-13中任一项所述的方法。
16.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序在被处理器执行时实现根据权利要求1-13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211542749.XA CN116166185A (zh) | 2022-12-02 | 2022-12-02 | 缓存方法、图像传输方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211542749.XA CN116166185A (zh) | 2022-12-02 | 2022-12-02 | 缓存方法、图像传输方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116166185A true CN116166185A (zh) | 2023-05-26 |
Family
ID=86417126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211542749.XA Pending CN116166185A (zh) | 2022-12-02 | 2022-12-02 | 缓存方法、图像传输方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116166185A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149092A (zh) * | 2023-10-24 | 2023-12-01 | 湖南高至科技有限公司 | Fpga自适应位宽数据传输方法、装置、设备和介质 |
-
2022
- 2022-12-02 CN CN202211542749.XA patent/CN116166185A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149092A (zh) * | 2023-10-24 | 2023-12-01 | 湖南高至科技有限公司 | Fpga自适应位宽数据传输方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11593594B2 (en) | Data processing method and apparatus for convolutional neural network | |
EP1741089B1 (en) | Gpu rendering to system memory | |
CN108681984B (zh) | 一种3*3卷积算法的加速电路 | |
KR102147356B1 (ko) | 캐시 메모리 시스템 및 그 동작방법 | |
CN101958112B (zh) | 手持设备屏幕画面同时实现90度和270度旋转的方法 | |
US20050280652A1 (en) | System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories | |
CN102044062B (zh) | 基于图像块处理实现图像xy轴镜像和180度旋转*** | |
WO2021128776A1 (zh) | 数据处理方法、装置、设备、***、存储介质和程序产品 | |
JP5196239B2 (ja) | 情報処理装置及び方法 | |
CN105243399B (zh) | 一种实现图像卷积的方法和装置、实现缓存的方法和装置 | |
US10043234B2 (en) | System and method for frame buffer decompression and/or compression | |
CN112068739A (zh) | 一种红外触摸响应方法、装置及存储介质 | |
US11635904B2 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
CN116166185A (zh) | 缓存方法、图像传输方法、电子设备及存储介质 | |
CN107766021B (zh) | 图像处理方法、设备、显示***及存储介质 | |
WO2022095439A1 (zh) | 一种用于数据处理的硬件加速***及芯片 | |
WO2021179289A1 (zh) | 卷积神经网络的运算方法、装置、设备和存储介质 | |
US20140164553A1 (en) | Host ethernet adapter frame forwarding | |
US20190324909A1 (en) | Information processing apparatus and information processing method | |
WO2023184754A1 (zh) | 可配置实时视差点云计算装置及方法 | |
CN115860080A (zh) | 计算核、加速器、计算方法、装置、设备、介质及*** | |
KR100853912B1 (ko) | 초기 메모리에 저장된 화상 데이타를 처리하는 방법, 컴퓨터 판독가능 기록매체 및 장치 | |
CN116107959A (zh) | 缓存方法、图像传输方法、电子设备及存储介质 | |
US8035647B1 (en) | Raster operations unit with interleaving of read and write requests using PCI express | |
CN113658049A (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 |