具体实施方式
以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
AXI:AXI(Advanced eXtensible Interface)是一种总线协议,是一种面向高性能、高带宽、低延迟的片内总线,它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。
中断:中断(Interrupt)指处理器(例如CPU等)处理程序运行中出现的紧急事件的整个过程,程序运行过程中,***外部、***内部或者现行程序本身若出现紧急事件,处理器立即中止现行程序的运行,自动转入相应的中断服务程序,待处理完后再返回原来的程序运行。
内存:内存(Memory)是计算机的重要部件之一,也称内存储器和主存储器,可以用于暂时存放处理器(例如CPU等)等存放的运算数据、与硬盘等外部存储器交换的数据,内存是与外存与处理器进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作***就会把需要运算的数据从内存调到处理器中进行运算,当运算完成,处理器将结果传送出来。
静态随机存取存储器:静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种,这类存储器在保持通电的情况下其内部存储的数据可以恒常保持,因此不需要刷新电路就能保存它内部存储的数据。SRAM相对于DRAM(DynamicRandom Access Memory,动态随机存取存储器),一般来说在相同体积下,SRAM可被设计的存储容量远小于DRAM。
双倍速率同步动态随机存储器:双倍速率同步动态随机存储器(Double DataRate,DDR)是从SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存取存储器)的基础上发展而来,其在一个时钟周期内传输两次数据,即在时钟的上升期和下降期各传输一次数据。DDR相对于SRAM,一般来说在相同体积下,SRAM可被设计的存储容量远小于DDR。
加速单元:针对传统处理单元在一些专门用途的领域(例如,图像数据访存、处理图像数据等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,在本公开实施例中主要是为了提高图像数据访存速率而设计的专门处理单元。
调度单元:对加速单元进行调度、向加速单元分配要执行的待执行指令序列的处理单元,它可以采用处理器(例如CPU等)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
电子设备
图1示出本申请一个实施例的电子设备100内部的结构框图,如图1所示,电子设备100包括有总线连接的存储器110、调度单元集群140和加速单元集群150。调度单元集群140包括多个调度单元120。加速单元集群150包括多个加速单元130。加速单元130在本申请实施例中主要是为了加速图像数据访存而设计的专门处理单元,可以体现为专门为图像数据访存设计的处理单元、图形处理单元(例如GPU)、图像显示单元(例如DPU)、专用集成电路(ASIC)和现场可编程门阵列(FPGA)等。调度单元是对加速单元进行调度、向各加速单元分配要执行的待执行指令序列的单元,其可以采用处理器(例如CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
传统的处理单元的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速单元,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。
本申请提出的加速单元130是专用于加速图像数据访存的处理单元。在对图像数据进行访存时,加速单元包括的图像数据访存单元中的转换单元对接收的第一图像数据进行格式转换,获得适用于AXI接口的第二图像数据,并通过AXI接口将第二图像数据写入存储单元,中断单元当每N行第二图像数据被写入存储单元,向处理单元发送第一中断信号,以指示处理单元从存储单元读取被写入存储单元中的N行第二图像数据,其中,N为正整数,第一图像数据所对应的行数大于N。
由于该加速单元130的图像数据访存单元通过以“行”为单位将第二图像数据写入存储单元,而不再将一帧或者多帧为单位将图像数据写入存储单元(即内存),因此该图像数据访存单元可以很好地适应小存储容量或者大存储容量的存储单元的图像数据访存任务,对于不同芯片内存存储架构下的图像数据访存均具备较好的兼容性,可以有效保证图像数据不会丢失,提高图像数据写入存储单元(即内存)的效率。本申请中的加速单元,可以在调度单元120的调度下加速图像数据访存任务。对于本申请中的图像数据访存单元,后文中将进行具体的说明。
调度单元和加速单元的内部结构
下面结合图2的调度单元120与加速单元130的内部结构,具体说明调度单元120是如何调度加速单元130进行工作的。
如图2所示,调度单元120内包含多个处理器核121和被多个处理器核121共享的高速缓存122。每个处理器核121包括取指令单元123、指令译码单元124、指令发射单元125、指令执行单元126和存储控制单元127。
取指令单元123用于通过存储控制单元127,将要执行的指令从存储器110搬运到指令寄存器(可以是图2示出的寄存器堆128中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,调度单元120进入指令译码阶段,指令译码单元124按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元126的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元125位于指令译码单元124与指令执行单元126之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元126,使得多个指令的并行操作成为可能。
指令发射单元125将指令发射到指令执行单元126后,指令执行单元126开始执行指令。但如果该指令执行单元126判断该指令应该是加速单元执行的,则将其转发到相应的加速单元执行。例如,如果该指令是一条图像数据访存的指令,指令执行单元126不再执行该指令,而是将该指令通过总线发送到加速单元130,由加速单元130执行。调度单元120调度加速单元130执行图像数据访存。
加速单元130包括控制器131和图像数据访存单元132。控制器131从调度单元120接收第一图像数据,将第一图像数据发送给图像数据访存单元132。图像数据访存单元132对图像数据进行处理,对接收的第一图像数据进行格式转换,获得适用于AXI接口的第二图像数据,并通过AXI接口将第二图像数据写入存储单元,当每N行第二图像数据被写入存储单元,向处理单元发送第一中断信号,以指示处理单元从存储单元读取被写入存储单元中的N行第二图像数据,其中,N为正整数,第一图像数据所对应的行数大于N。
片上***
本申请实施例还提供了一种片上***,该片上***包括上述任一实施例中的加速单元130。
图像数据访存单元
为了便于说明本申请实施例的图像数据访存单元132的优势,先对相关技术中的图像数据访存方案进行简单介绍。
在现在一些电子设备的应用场景中,电子设备需要对多路摄像装置作为多个视频源输入的图像数据进行处理,而由于电子设备中芯片的视频处理单元的数量有限,因此往往需要芯片能够将多个摄像装置拍摄的未经处理的原始视频的图像数据直接实时写入内存中,再借由芯片其他计算电路对图像数据进行进一步实时处理,以保证芯片在视频处理单元少于视频源时能够对摄像装置输入的图像数据进行实时接收和处理。现在的芯片的内存的存储架构往往不同,例如不同类型的内存的种类、存储容量、写入速度都可能不同,例如,SRAM与DDR之间种类不同、存储容量差异较大、写入速度差异也较大,因此适用于DDR的图像数据访存方案应用于SRAM时常常无法起到很好的效果。例如,由于DDR的存储容量较大,因此相关技术中的图像数据访存方案一般是直接将一帧或者多帧图像数据直接写入DDR内,这种方案应用于SRAM时,由于SRAM的存储容量相对于DDR来说很小,因此容易导致在后写入SRAM的图像数据,将还未被读取的在前写入SRAM的图像数据覆盖,导致图像数据丢失,因此可见相关技术中的图像数据访存方案不能很好地适应各种存储架构的内存,兼容性较差。
图3是本申请一个实施例的图像数据访存单元的结构图。如图3所示,图像数据访存单元132包括转换单元133、中断单元134、存储单元135、处理单元136,转换单元133用于对接收的第一图像数据进行格式转换,获得适用于AXI接口的第二图像数据,并通过AXI接口将第二图像数据写入存储单元135;中断单元134用于当每N行第二图像数据被写入存储单元135,向处理单元136发送第一中断信号,以指示处理单元136从存储单元135读取被写入存储单元135中的N行第二图像数据,其中,N为正整数,第一图像数据所对应的行数大于N。
在本申请中,转换单元133接收的第一图像数据可以是来自多个相同或者不同的视频源(例如多个相同类型或者不同类型的摄像装置,摄像装置可以是摄像头)所输入的图像数据,通过转换单元133完成由视频源的输入接口输入的第一图像数据的格式转换为适用于AXI接口的数据格式的第二图像数据。具体地,本申请中的转换单元133对第一图像数据进行格式转换,可以是对第一图像数据的像素进行拼接,以获得第二图像数据,第二图像数据与AXI接口适配,从而可以通过AXI接口将第二图像数据写入存储单元135。可以理解的是,本实施例中的存储单元135也即内存。
例如,在一个可选的实施例中,视频源的输入接口可以为DVP(Digital VideoPort,标准数字视频传输接口)接口,转换单元133可以通过将由DVP接口输入的第一图像数据进行格式转换,以获得适用于AXI接口的第二图像数据,从而方便通过AXI接口将第二图像数据写入存储单元135,本申请实施例中不进行限制。或者,在其他的一些可选实施例中,视频源的输入接口也可以是其他类型的接口(例如MIPI接口、CSI接口等)。
举例对第一图像数据的像素进行拼接进行便于理解地说明,可以是指将多个视频源输入的每一帧第一图像数据的像素进行拼接,例如共有两帧第一图像数据,其中第一帧第一图像数据为a1行b1列(即像素总数为a1*b1),第二帧第一图像数据为a2行b2列(即像素总数为a2*b2),则对第一图像数据的像素进行拼接时,可以将第二帧的第一行拼接在第一帧图像数据最后一行(即第a1行)之后,从而转换为与AXI接口适配的第二图像数据。这样显然便于通过AXI接口将第二图像数据按照每一行写入存储单元135,从而便于后续中断单元134根据N行第二图像数据发出第一中断信号。可以理解的是,上述举例并不作为对本申请实施例中的任何限制。
而本公开实施例中,将第二图像数据以“行”为单位写入存储单元135,具体来说,“N行图像数据”也即是指“N行第二图像数据的像素”,“每N行第二图像数据被写入存储单元135”也即是指,在转换单元133将第二图像数据通过AXI接口将第二图像数据写入存储单元135时,将第二图像数据的N行像素依次写入存储单元135中,之后中断单元134可以生成第一中断信号,处理单元136可以根据第一中断信号执行用于从存储单元135读取被写入存储单元135中的N行第二图像数据的中断服务程序,从而完成对N行第二图像数据的访问,便于进一步对第二图像数据进行处理。
由于本申请中的图像数据访存单元通过以“行”为单位将第二图像数据写入存储单元135,而不再将一帧或者多帧为单位将图像数据写入存储单元135,因此该图像数据访存单元可以很好地适应小存储容量或者大存储容量的存储单元135的图像数据访存任务,对于不同芯片内存存储架构下的图像数据访存均具备较好的兼容性,可以有效保证图像数据不会丢失,提高图像数据写入存储单元135(即内存)的效率。
本申请实施例中,N的大小可以依据实际需要进行设置,例如在处理单元136进行配置,在此其具体数值不进行特别限定。显然,通过调整N的值,可以动态调整将第二图像数据写入存储单元135内以及处理单元136从存储单元135中读取出数据的数据量的颗粒度,显然使得本申请的图像数据访存单元在实现图像数据访存任务时的灵活度更高。
本申请实施例中,第一图像数据所对应的行数大于N,例如,可以是一帧第一图像数据对应于多个N行第二图像数据。
在本申请实施例中,存储单元135可以是任意的类型,例如,存储单元135可以是静态随机存取存储器(SRAM),该SRAM可以是片内SRAM,例如存储单元135也可以是双倍速率同步动态随机存储器(DDR),该DDR可以是片外DDR。
由于SRAM的存储容量一般较小,按照相关技术中的将一帧或者多帧图像数据依次写入SRAM,容易导致输入顺序靠前的图像数据还未被处理单元136读取,SRAM中为存储图像数据分配的存储空间就已被写满,使得写入顺序靠后的图像数据将写入顺序靠前但还未被读取的图像数据覆盖,从而导致图像数据的丢失。而通过本申请中的图像数据访存单元以“行”为单位向SRAM内写入第二图像数据则能够避免这个问题。另外,针对对访存延时要求较高的场景而言,由于SRAM相对于DDR而言其访存延时可控,本申请通过以“行”为单位将第二图像数据写入SRAM(即存储单元135),其能够有效地降低访存延时。
对于存储单元135而言,不管其是任何类型或者容量的内存(例如SRAM或者DDR),其容量都是一个有限值,因此,本申请实施例的图像数据访存单元中为了更好地利用存储单元135的存储资源,可以将存储单元135中用于存储第二图像数据的存储容量总共配置为K行第二图像数据的存储空间,使存储单元135中最多支持存储K行第二图像数据,在这基础上,在其中一个可选的实施例中,该图像数据访存单元中,中断单元134还用于在第i+1个K行第二图像数据写入存储单元135时,使第i+1个K行第二图像数据中的第j行第二图像数据覆盖存储单元135中的第i个K行第二图像数据中的第j行第二图像数据,其中,K为正整数,且K为N的整数倍,i为正整数,j为正整数,且j≤K。这样就完成了存储单元135的K行第二图像数据的存储空间的循环覆盖和利用,有利于更好地进行图像数据访存任务,提高存储空间利用率。
本申请实施例中,K与N相似,其大小也可以依据实际需要进行设置,只需K为N的整数倍即可,在此其具体数值不进行特别限定。
本申请实施例中,对于上述存储单元135共配置有K行第二图像数据的存储空间,在使用该图像数据访存单元时,可以利用第二图像数据按行将存储单元135中K行第二图像数据的存储空间循环覆盖,K行第二图像数据的存储空间每存够N行第二图像数据,中断单元134发出第一中断信号,处理单元136从存储单元135中读取被写入存储单元135中的N行第二图像数据。
如前述,本申请实施例中的图像数据访存单元可以支持任意存储架构的存储单元135,即可以应用于存储单元135为小存储容量的SRAM(例如该SRAM为片上SRAM)的情况下,也可以应用于存储单元135为大存储容量的双倍速率同步动态随机存储器(DDR)的情况下。在其中一个实施例中,该图像数据访存单元中,若存储单元135为双倍速率同步动态随机存储器(DDR),中断单元134还用于当每一帧第一图像数据所对应的第二图像数据被写入存储单元135,向所述处理单元136发送第二中断信号。
本申请中,第二中断信号可以是指示一帧第一图像数据在存储单元135中存储完毕的中断信号,当中断单元134发出第二中断信号,处理单元136可以根据第二中断信号,执行第二中断信号对应的中断服务程序,从存储单元135读取被写入所述存储单元135中的一帧第一图像数据所对应的第二图像数据。由前述,一帧第一图像数据可以对应于多个N行第二图像数据,因此存储单元135可以是读取存储单元135中的该一帧第一图像数据所对应的多个N行第二图像数据,其中N为正整数。
通过这样的图像数据访存单元,在存储单元135为双倍速率同步动态随机存储器(DDR)时,能够有效保证图像数据不会丢失,由此可见该图像数据访存单元对于不同芯片内存存储架构下的图像数据访存均具备较好的兼容性,还能更具效率地向存储单元135(即DDR)写入图像数据。
在其中一个可选的实施例中,参照图4是本申请另一个实施例的图像数据访存单元的结构图,该图像数据访存单元中,还包括中心控制单元137,中心控制单元137用于将第一中断信号所对应的执行状态传送至处理单元136。
中心控制单元137将第一中断信号所对应的执行状态传送至处理单元136,可以使得处理单元136能对图像数据访存的过程进行有效把控,便于根据该执行状态进一步地提升图像数据的访存效率。
可选地,中心控制单元137也可以将第二中断信号所对应的执行状态传送至处理单元136,从而进一步使得处理单元136能对图像数据访存的过程进行有效把控,便于根据该执行状态进一步地提升图像数据的访存效率。
在其中一个可选的实施例中,由于DDR的存储容量一般较大,因此实际上以帧为单位将图像数据写入存储单元135也不会导致写入顺序在前的图像数据因被写入顺序在后的图像数据覆盖而丢失,因此,本申请实施例中的图像数据访存单元也可以配置多个工作模式,针对性地对不同存储架构的存储单元135进行图像数据访存任务。具体地,下面进行简单说明。
例如,其中一个工作模式下,是以“行”为单位通过AXI接口将第二图像数据输入存储单元135,即每写入N行第二图像数据的像素,中断单元134发送第一中断信号,之后中断单元134也可以每一帧第一图像数据所对应的所述第二图像数据被写入所述存储单元135,向处理单元136发送第二中断信号,在第i+1个K行第二图像数据写入存储单元135时,使第i+1个K行第二图像数据中的第j行第二图像数据覆盖存储单元135中的第i个K行第二图像数据中的第j行第二图像数据,其中,K为正整数,且K为N的整数倍,i为正整数,j为正整数,且j≤K,这些内容可以参考前面的内容进行理解因此不再赘述,在这一工作模式下,存储单元135可以是任意的内存类型,既可以是SRAM,也可以是DDR,因此兼容性强。
例如,其中另一个工作模式下,可以不以“行”为单位存储第二图像数据,仍直接以“帧”为单位写入存储单元135,即直接以每一帧第一图像数据所对应的第二图像数据写入存储单元135,这一工作模式下,存储单元135中存储第二图像数据的存储空间可以被配置为M帧(M为正整数)第一图像数据所对应的第二图像数据的存储空间,每次将第二图像数据写入存储单元135,将一帧第一图像数据所对应的第二图像数据一并写入M帧存储空间中的一帧存储空间内,中断单元134也可向处理单元136发送第二中断信号,当每M帧第一图像数据所对应的第二图像数据被写入存储单元135,使第M+1帧第一图像数据所对应的第二图像数据覆盖存储单元135中的第一帧第一图像数据所对应的第二图像数据,如此循环覆盖M帧访存空间,实现图像数据访存任务,在这一工作模式下,存储单元135可以是较大存储容量的内存类型,例如DDR。
本申请实施例中的图像数据访存单元的多种工作模式可以使得该图像数据访存单元的使用灵活性更好,可以更好地且针对性地满足不同存储单元135的存储架构的需求,因此兼容性较好。
在以上基础上,处理单元136可以通过中心控制单元137对本申请中的图像数据访存单元的工作模式进行配置,以使图像数据访存单元被配置成不同的工作模式,以灵活地且针对性地满足不同存储单元135的存储架构的需求。
因此,综合以上内容可以看出,本申请实施例中的图像数据访存单元,由于其转换单元可以对接收的第一图像数据进行格式转换,获得适用于AXI接口的第二图像数据,并通过AXI接口将第二图像数据写入存储单元,中断单元可以当每N行第二图像数据被写入存储单元,向处理单元发送第一中断信号,以指示处理单元从存储单元读取被写入存储单元中的N行第二图像数据,N为正整数,第一图像数据所对应的行数大于N。该图像数据访存单元以“行”为单位将第二图像数据写入存储单元,而不再将一帧或者多帧为单位将图像数据写入存储单元,因此该图像数据访存单元可以很好地适应小存储容量或者大存储容量的存储单元的图像数据访存任务,对于不同芯片内存存储架构下的图像数据访存的具备较好的兼容性,可以有效保证图像数据不会丢失,提高图像数据写入存储单元(即内存)的效率。
图像数据访存方法
图5是本申请一个实施例的图像数据访存方法的流程图,该图像数据访存方法用于上述任一实施例中的图像数据访存单元,如图5所示,该图像数据访存方法包括:
S501、对接收的第一图像数据进行格式转换,获得适用于AXI接口的第二图像数据,并通过AXI接口将第二图像数据写入存储单元;
S502、当每N行第二图像数据被写入存储单元,向处理单元发送第一中断信号,以指示处理单元从存储单元读取被写入存储单元中的N行第二图像数据,其中,N为正整数,第一图像数据所对应的行数大于N。
在一个可选的实施方式中,该图像数据访存方法,还包括:在第i+1个K行第二图像数据写入存储单元时,使第i+1个K行第二图像数据中的第j行第二图像数据覆盖存储单元中的第i个K行第二图像数据中的第j行第二图像数据,其中,K为正整数,且K为N的整数倍,i为正整数,j为正整数,且j≤K。
在一个可选的实施方式中,该图像数据访存方法,还包括:若存储单元为双倍速率同步动态随机存储器,当每一帧第一图像数据所对应的第二图像数据被写入存储单元,向处理单元发送第二中断信号。
在一个可选的实施方式中,该图像数据访存方法中,存储单元为静态随机存取存储器。
在一个可选的实施方式中,该图像数据访存方法,还包括:将第一中断信号所对应的执行状态传送至处理单元。
由于以上各可选的图像数据访存方法的细节在上述实施例的图像数据访存单元部分,已经结合结构示意图进行了详细说明,具体过程可参见前述图像数据访存单元实施例中的描述,在此不再进行赘述。
本申请实施例的商业价值
本申请实施例中的图像数据访存单元,由于其转换单元可以对接收的第一图像数据进行格式转换,获得适用于AXI接口的第二图像数据,并通过AXI接口将第二图像数据写入存储单元,中断单元可以当每N行第二图像数据被写入存储单元,向处理单元发送第一中断信号,以指示处理单元从存储单元读取被写入存储单元中的N行第二图像数据,N为正整数,第一图像数据所对应的行数大于N。该图像数据访存单元以“行”为单位将第二图像数据写入存储单元,而不再将一帧或者多帧为单位将图像数据写入存储单元,因此该图像数据访存单元可以很好地适应小存储容量或者大存储容量的存储单元的图像数据访存任务,对于不同芯片内存存储架构下的图像数据访存的具备较好的兼容性,可以有效保证图像数据不会丢失,提高图像数据写入存储单元(即内存)的效率,并且由于其高兼容性,使得该图像数据访存单元可以应用的范围更广。
本申请实施例中的图像数据访存单元可以应用在包括但不限于刷脸支付等需要进行图像数据访存任务的具体场景中,具有较高的商业价值,在此不进行限制。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和***实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。