CN111435332B - 数据处理方法及设备 - Google Patents
数据处理方法及设备 Download PDFInfo
- Publication number
- CN111435332B CN111435332B CN201910032621.0A CN201910032621A CN111435332B CN 111435332 B CN111435332 B CN 111435332B CN 201910032621 A CN201910032621 A CN 201910032621A CN 111435332 B CN111435332 B CN 111435332B
- Authority
- CN
- China
- Prior art keywords
- read
- data
- pointer
- buffer
- unit
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 230000001133 acceleration Effects 0.000 claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 81
- 230000005540 biological transmission Effects 0.000 abstract description 20
- 239000000243 solution Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供一种数据处理方法及设备。其中,方法包括如下的步骤:基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;根据所述第一可用空间的位置信息,更新所述第一写指针,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据。本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种数据处理方法及设备。
背景技术
目前,面向海量数据在线处理的分布式数据库,涉及到大量的压缩(compaction)操作,该压缩操作非常消耗处理器(例如:CPU)的资源,而且性能也比较低。为了提升此类数据库产品的性能,需要将压缩操作移到硬件加速单元上来操作。
现有技术中,当处理器存在有待处理数据时,处理器需先将待处理数据全部存放在一个存储空间,再将该存储空间的地址发送给硬件加速单元,硬件加速单元再从该存储空间读取待处理数据,并进行处理。
发明内容
现有技术中,软硬件完成一次操作需要的数据量通常较少,其方案具体为:处理器把待处理数据全部存放在一个存储空间;处理器将数据索引信息传给硬件加速单元,数据索引信息包括:该存储空间的地址、待处理数据的长度;硬件加速单元提取数据索引信息,并根据数据索引信息在存储空间中读取待处理数据,对待处理数据进行处理;类似处理器传输待处理数据给硬件加速单元的方法,硬件加速单元将已处理数据传输给处理器;这样一次操作完成。
发明人通过分析发现:现有的软硬件之间传输待处理数据的方案只适合于那些数据量较小的待处理数据。一旦待处理数据的数据量为几百Mbyte或者超过1Gbyte,甚至待处理数据的大小未知(即流式数据),若继续采用现有技术中的数据传输方案,就需要消耗大量的存储空间,甚至需要用专用的存储服务器。这样一来不仅成本高,还会因将待处理数据存储至存储服务器,致使数据传递的性能相对较低,延时也较大。
鉴于上述问题,提出了本申请以提供一种解决上述问题或至少部分地解决上述问题的数据处理方法及设备。
于是,在本申请的一个实施例中,提供了一种数据处理方法。所述方法适用于处理器;所述方法,包括:基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;根据所述第一可用空间的位置信息,更新所述第一写指针,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据。
在本申请的另一实施例中,提供了一种数据处理方法。所述方法适用于硬件加速单元;所述方法,包括:基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针,以使所述处理器根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据。
在本申请的又一实施例中,提供了一种电子设备。该设备,包括:处理器和硬件加速单元;其中,
所述处理器,用于基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;根据所述第一可用空间的位置信息,更新所述第一写指针;
所述硬件加速单元,用于基于所述第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针。
在本申请的又一实施例中,提供了一种数据处理方法。所述方法适用于硬件加速单元;所述方法,包括:基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间;根据所述第二可用空间的位置信息,更新所述第二写指针以使所述处理器根据所述第二读指针和更新后的所述第二写指针从所述第二缓存区内读取数据。
在本申请的又一实施例中,提供了一种数据处理方法。所述方法适用于处理器;所述方法,包括:基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针,以使所述硬件加速单元根据所述第二写指针及更新后的所述第二读指针向所述第二缓存区内写入其处理完的数据。
在本申请的又一实施例中,提供了一种电子设备。该设备,包括:处理器和硬件加速单元;其中,
所述硬件加速单元,用于基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间;根据所述可用空间的位置信息,更新所述第二写指针;
所述处理器,用于基于所述第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针。
本申请实施例提供的技术方案中,处理器根据第一缓存区的第一读指针和第一写指针向第一缓存区写入数据;在第一可用空间写入数据后,处理器会及时更新第一缓存区的第一写指针,这样硬件加速单元即可根据第一缓存区的第一读指针及更新后的第一写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第一缓存区的读写指针的变化,能重复利用第一缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的电子设备的结构框图;
图2为本申请一实施例提供的数据处理方法的流程示意图;
图3为本申请一实施例提供的第一缓存区的示意图;
图4为本申请又一实施例提供的数据处理方法的流程示意图;
图5为本申请另一实施例提供的数据处理方法的流程示意图;
图6为本申请一实施例提供的第二缓存区的示意图;
图7为本申请又一实施例提供的数据处理方法的流程示意图;
图8为本申请又一实施例提供的数据处理方法的流程示意图;
图9为本申请又一实施例提供的数据处理方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本申请一实施例提供的电子设备的结构框图。如图1所示,该设备包括:处理器11和硬件加速单元12;其中,
所述处理器11,用于基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;根据所述第一可用空间的位置信息,更新所述第一写指针;
所述硬件加速单元12,用于基于所述第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针。
其中,第一缓存区可位于处理器11内部或硬件加速单元12内部;或者,第一缓存区位于电子设备的存储器中。
本申请实施例提供的技术方案中,处理器根据第一缓存区的第一读指针和第一写指针向第一缓存区写入数据;在第一可用空间写入数据后,处理器会及时更新第一缓存区的第一写指针,这样硬件加速单元即可根据第一缓存区的第一读指针及更新后的第一写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第一缓存区的读写指针的变化,能重复利用第一缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
处理器11在开始向第一缓存区写入待传输数据之前,可向硬件加速单元发送一开工通知信号,该开工通知信号中可携带有数据索引,其中,数据索引中包括第一缓存区的地址。这样,硬件加速单元后续即可根据第一缓存区的地址从第一缓存区进行数据读取。
此外,数据索引中还可包括第二缓存区的地址。这样,可指示硬件加速单元在对从第一缓存区读取出的数据进行处理后,按照第二缓存区的地址将处理后的数据存储第二缓存区。
为了提高传输效率,处理器和硬件加速单元之间可采用多通道并行处理,这样可以同时传输多份数据,能充分利用处理器和硬件加速单元之间的带宽。上述第一缓存区对应的通道为多通道中的一个。需要补充的是,多通道中每一通道对应一个用于处理器写入数据的缓存区。
本申请实施例提供的电子设备中各组成单元,如处理器、硬件加速单元的具体工作流程及之间的信令交互将在以下各实施例中作进一步的说明。
图2示出了本申请一实施例提供的数据处理方法的流程示意图。所述方法适用于处理器。其中,处理器包括但不限于:CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)。如图2所示,该方法,包括:
101、基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据。
102、根据所述第一可用空间的位置信息,更新所述第一写指针,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据。
上述101中,第一读指针可指向第一缓存区中下一次读操作所要读取的第一个缓存单元;第一写指针可指向第一缓存区中下一次写操作所要写入的第一个缓存单元。基于第一缓存区的第一读指针和第一写指针,可确定出第一缓存区是否有空闲空间,空闲空间指的是没有缓存待读取数据的空间。具体应用时,可将该第一空闲空间全部作为上述第一可用空间,或者将第一空闲空间中的部分空间作为上述第一可用空间。其中,第一缓存区可以为一缓存队列。
需要补充的是,在另一种可实现的方案中,第一读指针可指向第一缓存区中最后一个读取的数据在读取前所在的缓存单元;第一写指针可指向第一缓存区中最后一个写入的数据在写入后所在的缓存单元。
在实际应用中,第一读指针和第一写指针具体指向哪个缓存单元,可根据实际情况来配置。本实施例对此不做具体限定,只要能够根据第一读指针和第一写指针判断出第一缓存区内是否有空闲空间以及第一缓存区内是否有待读取数据即可。
上述102中,当第一可用空间包括单元地址连续的两个以上缓存单元时,确定在本次写入过程中,第一可用空间中最后一个写入数据的第一缓存单元;根据第一缓存单元的位置信息,更新第一写指针。
当第一可用空间仅包括一个缓存单元时,可直接将该缓存单元作为上述第一缓存单元;根据第一缓存单元的位置信息,更新第一写指针。
当配置第一读指针指向第一缓存区中下一次读操作所要读取的第一个缓存单元以及第一写指针指向第一缓存区中下一次写操作所要写入的第一个缓存单元,则更新第一写指针以使更新后的第一写指针指向第一缓存区中第一缓存单元的下一个缓存单元。
当配置第一读指针指向第一缓存区中最后一个读取的数据在读取前所在的缓存单元以及第一写指针指向第一缓存区中最后一个写入的数据在写入后所在的缓存单元,则更新第一写指针以使更新后的第一写指针指向第一缓存区中第一缓存单元。
需要补充的是,第一缓存区内包括多个单元地址连续的缓存单元,多个地址连续的缓存单元按照地址顺序排列。第一缓存区中第一缓存单元的下一个缓存单元指的是第一缓存区中紧跟在第一缓存单元后的缓存单元。如图3所示,单元地址F紧跟在单元地址E的后面,则单元地址为F的缓存单元为单元地址为E的缓存单元的下一个缓存单元。
硬件加速单元可以为FPGA(Field-Programmable Gate Array,现场可编程门阵列)或ASIC(Application Specific Integrated Circuits,专用集成电路)。
在一种可实现的方案中,处理器可将更新后的第一写指针直接同步至硬件加速单元,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据。
在另一种可实现的方案中,硬件加速单元在每次从第一缓存区内读取数据之前,向处理器发送写指针获取请求,处理器可在接收到硬件加速单元发送来的写指针获取请求后,将更新后的第一写指针发送至硬件加速单元,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据。
其中,所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据的具体实现将在下述各实施例中进行详细介绍。
本申请实施例提供的技术方案中,处理器根据第一缓存区的第一读指针和第一写指针向第一缓存区写入数据;在第一可用空间写入数据后,处理器会及时更新第一缓存区的第一写指针,这样硬件加速单元即可根据第一缓存区的第一读指针及更新后的第一写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第一缓存区的读写指针的变化,能重复利用第一缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
进一步的,上述方法还可包括:
103、基于所述第一读指针和所述第一写指针,确定所述第一缓存区中是否存在第一空闲空间。
其中,第一缓存区中包括多个单元地址连续的缓存单元,多个缓存单元按照单元地址顺序进行排列。
在一种可实现的方案中,第一读指针的值为第一缓存区中下一次读操作所要读取的第一个缓存单元的单元地址;第一写指针的值为第一缓存区中下一次写操作所要写入的第一个缓存单元的单元地址。故上述104具体为:根据第一缓存区中下一次读操作所要读取的第一个缓存单元的单元地址以及第一缓存区中下一次写操作所要写入的第一个缓存单元的单元地址,确定第一缓存区中是否存在第一空闲空间。
举例来说:如图3所示,第一缓存区包括单元地址连续且按序排列的七个缓存单元,按序排列的这七个缓存单元的单元地址依次为A、B、C、D、E、F、G。第一读指针为C时,第一写指针为F时,可确定出单元地址为F、G、A和B这四个缓存单元是空闲的,即第一空闲空间包括:单元地址为F、G、A和B这四个缓存单元,且这四个缓存单元的单元地址连续。
注:缓存区(可以为上述提及的第一缓存区或下述将要提及的第二缓存区)包括单元地址连续的n个缓存单元,这n个缓存单元按照单元地址顺序排列,排在第一的缓存单元和排在最后的缓存单元的地址也可认为是连续的。在写操作中,当向排在最后的缓存单元写入数据后,可继续从排在第一的缓存单元开始依次向缓存区写入数据;在读操作中,当从排在最后的缓存单元中读取出数据后,可继续从排在第一的缓存单元开始依次从缓存区读取数据。
在另一种可实现的方案中,第一读指针的值为第一缓存区中下一次读操作所要读取的第一个缓存单元在第一缓存区内的位置编号;第一写指针的值可为第一缓存区中下一次写操作所要写入的第一个缓存单元在第一缓存区内的位置编号。
可根据第一缓存区内多个缓存单元的排序信息,为各缓存单元分配位置编号,如图3所示,排在第一的缓存单元的位置编号为“00”,排在第二的缓存单元的位置编号为“01”…排在第7的缓存单元的位置标号为“06”。
举例来说:如图3所示,第一读指针为02且第一写指针为05时,可确定出位置编号为05、06、00和01的缓存单元是空闲的。即第一空闲空间包括:位置编号为05、06、00和01这四个缓存单元,这四个缓存单元的单元地址是连续的。
进一步的,上述方法,还可包括:
104、所述第一缓存区中存在第一空闲空间时,在所述第一空闲空间中,确定出所述第一可用空间。
其中,所述第一可用空间的大小小于所述第一空闲空间的大小。所述第一可用空间中包括单元地址连续的至少一个缓存单元;所述第一可用空间中包括所述第一写指针指向的缓存单元。
第一可用空间的大小小于第一空闲空间的大小,这样可确保第一缓存区在任一时刻都不会被写满。这样,即可避免处理器在向第一缓存区写入数据时不会覆盖写以及硬件加速单元从第一缓存区读取数据时不会重复读等情况。覆盖写指的是待读取的数据被新写入的数据覆盖;重复读指的是已读取的数据被再一次读取。
这是因为:若不能避免第一缓存区被写满的情况,那么,第一读指针和第一写指针同时指向同一缓存单元时,将无法确定该缓存单元中是否缓存待读取的数据,这就会导致重复读和覆盖写的问题;若第一缓存区在任意时刻都不会被写满,那么,第一读指针和第一写指针同时指向同一缓存单元时,即可准确确定该缓存单元中没有缓存待读取的数据。
在本实施例中,当第一空闲空间仅包括一个缓存单元时,则可确定第一缓存区中没有第一可用空间。因此,不能向第一缓存区写入数据,需要等待硬件加速单元从第一缓存区中读取数据以空闲出更多的缓存单元。
进一步的,上述102中“根据所述第一可用空间的位置信息,更新所述第一写指针”,具体可采用如下步骤来实现:
1021、确定在本次写入过程中,所述第一可用空间中最后一个写入数据的第一缓存单元。
1022、根据所述第一缓存单元的位置信息,更新所述第一写指针。
举例来说:如图3所示,第一可用空间包括:单元地址为C、D、E这三个缓存单元。由于在本次写入过程中,会按照单元地址的顺序或位置编号的顺序依次将数据写入至单元地址为C、D和E这三个缓存单元中,即单元地址为C的缓存单元为本次写入过程中第一个写入数据的缓存单元,单元地址为E的缓存单元为本次写入过程中最后一个写入数据的缓存单元。
上述1022中,当第一缓存单元的位置信息为第一缓存单元的单元地址时,将第一缓存区中第一缓存单元的单元地址的下一个单元地址作为更新后的第一写指针。例如:如图3所示,第一缓存单元的单元地址为E,单元地址E的下一个单元地址为F,则更新后的第一写指针的值为F。
当第一缓存单元的位置信息为第一缓存单元在第一缓存区内的位置编号N,将N+1作为更新后的第一写指针。其中,所述N为大于等于零的整数。例如:如图3所示,第一缓存单元的位置编号为04,则更新后的第一写指针的值为05。
为了提高传输效率,处理器和硬件加速单元之间可采用多通道并行处理,这样可以同时传输多份数据,能充分利用处理器和硬件加速单元之间的带宽。上述第一缓存区对应的通道为多通道中的一个。需要补充的是,多通道中每一通道对应一个用于处理器写入数据的缓存区。
图4示出了本申请又一实施例提供的数据处理方法的流程示意图。该方法适用于硬件加速单元。硬件加速单元可以为FPGA(Field-Programmable Gate Array,现场可编程门阵列)或ASIC(Application Specific Integrated Circuits,专用集成电路)。该方法包括:
201、基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据。
202、根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针,以使所述处理器根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据。
上述201中,第一读指针可指向第一缓存区中下一次读操作所要读取的第一个缓存单元;第一写指针可指向第一缓存区中下一次写操作所要写入的第一个缓存单元。其中,第一缓存区可以为一缓存队列。基于第一缓存区的第一读指针和第一写指针,可确定出第一缓存区是否有待读取的数据。
需要补充的是,在另一种可实现的方案中,第一读指针可指向第一缓存区中最后一个读取的数据在读取前所在的缓存单元;第一写指针可指向第一缓存区中最后一个写入的数据在写入后所在的缓存单元。
在实际应用中,第一读指针和第一写指针具体指向哪个缓存单元,可根据实际情况来配置。本实施例对此不做具体限定,只要能够根据第一读指针和第一写指针判断出第一缓存区内是否有空闲空间以及第一缓存区内是否有待读取数据即可。
上述202中,若本次读取过程(即上述201的读取过程)中,读取出两个以上缓存单元的待读取数据,则确定本次读取过程中,最后一个读取出的数据在读取前所在的第三缓存单元;根据第三缓存单元的位置信息,更新第一读指针。
若本次读取过程中,仅读取出一个缓存单元的待读取数据,则将该缓存单元确定为上述第三缓存单元;根据第三缓存单元的位置信息,更新第一读指针。
当配置第一读指针指向第一缓存区中下一次读操作所要读取的第一个缓存单元以及第一写指针指向第一缓存区中下一次写操作所要写入的第一个缓存单元,则更新第一读指针以使更新后的第一读指针指向第一缓存区中第三缓存单元的下一个缓存单元。
当配置第一读指针指向第一缓存区中最后一个读取的数据在读取前所在的缓存单元以及第一写指针指向第一缓存区中最后一个写入的数据在写入后所在的缓存单元,则更新第一读指针以使更新后的第一读指针指向第一缓存区中第三缓存单元。
需要补充的是,第一缓存区内包括多个单元地址连续的缓存单元,多个地址连续的缓存单元按照地址顺序排列。第一缓存区中第三缓存单元的下一个缓存单元指的是第一缓存区中紧跟在第三缓存单元后的缓存单元。如图3所示,单元地址F紧跟在单元地址E的后面,则单元地址为F的缓存单元为单元地址为E的缓存单元的下一个缓存单元。
处理器包括但不限于:CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)。
在一种可实现的方案中,处理器可将更新后的第一读指针同步至处理器,以使所述处理器根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据。
在另一种可实现的方案中,处理器在每次从第一缓存区内写入数据之前,可向硬件加速单元发送读指针获取请求,硬件加速单元可在接收到处理器发送来的读指针获取请求后,将更新后的第一读指针发送至处理器,以使所述处理器单元根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据。
其中,处理器根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据的具体实现可参见上述各实施例中相应内容,在此不再赘述。
本申请实施例提供的技术方案中,处理器根据第一缓存区的第一读指针和第一写指针向第一缓存区写入数据;在第一可用空间写入数据后,处理器会及时更新第一缓存区的第一写指针,这样硬件加速单元即可根据第一缓存区的第一读指针及更新后的第一写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第一缓存区的读写指针的变化,能重复利用第一缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
当处理器按照不写满策略(即确保在任意时刻第一缓存区都不会被写满)向第一缓存区写数据时,上述方法,还包括:
203、所述第一读指针的值不等于所述第一写指针的值时,确定所述第一缓存区内有待读取的数据。
所述第一读指针的值等于第一写指针的值时,即可确定第一缓存区内没有待读取的数据。
在一种可实现的方案中,第一读指针的值为第一缓存区中下一次读操作所要读取的第一个缓存单元的单元地址;第一写指针的值为第一缓存区中下一次写操作所要写入的第一个缓存单元的单元地址。
举例来说:如图3所示,第一读指针为C时,第一写指针为F时,可确定出单元地址为C、D、E这三个缓存单元中有待读取的数据。
在另一种可实现的方案中,第一读指针的值为第一缓存区中下一次读操作所要读取的第一个缓存单元在第一缓存区内的位置编号;第一写指针的值可为第一缓存区中下一次写操作所要写入的第一个缓存单元在第一缓存区内的位置编号。
举例来说:如图3所示,第一读指针为02且第一写指针为05时,可确定出位置编号为02、、03和04这三个缓存单元有待读取的数据。
进一步的,上述202中“根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针”,具体可采用如下步骤来实现:
2021、确定本次读取过程中,最后一个读取出的数据在读取前所在的第三缓存单元。
2022、根据所述第三缓存单元的位置信息,更新所述第一读指针。
举例来说,如图3所示,本次读取过程中,读取出单元地址为C、D、E这三个缓存单元内缓存的待读取数据。由于在读取过程中,会按照单元地址的顺序或位置编号的顺序依次从多个缓存单元(即单元地址为C、D、E这三个缓存单元)内读取出待读取的数据,即单元地址为C的缓存单元内的数据是第一个读取出的数据,单元地址为E的缓存单元的数据是最后一个读取出的数据。
上述2022中,当第三缓存单元的位置信息为第三缓存单元的单元地址时,将第一缓存区中第三缓存单元的单元地址的下一个单元地址作为更新后的第一读指针。例如:如图3所示,第三缓存单元的单元地址为E,单元地址F是单元地址E的下一个单元地址,则更新后的第一读指针的值为F。
当第三缓存单元的位置信息为第三缓存单元在第一缓存区内的位置编号M时,将M+1作为更新后的所述第一读指针。其中,M为大于等于零的整数。例如:如图3所示,第三缓存单元的位置编号为04,则更新后的第一读指针的值为05。
这里需要说明的是:本申请实施例提供的所述方法中未尽详述的内容可参见上述实施例中的相应内容,此处不再赘述。
图1示出了本申请一实施例提供的电子设备的结构框图。如图1所示,该电子设备包括:处理器11和硬件加速单元12。其中,
所述硬件加速单元12,用于基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间;根据所述第二可用空间的位置信息,更新所述第二写指针;
所述处理器11,用于基于所述第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针。
其中,第二缓存区可位于处理器11内部或硬件加速单元12内部;或者,第二缓存区位于电子设备的存储器中。
本申请实施例提供的技术方案中,硬件加速单元根据第二缓存区的第二读指针和第二写指针向第二缓存区写入数据;在第二可用空间写入数据后,硬件加速单元会及时更新第二缓存区的第二写指针,这样处理器即可根据第二缓存区的第二读指针及更新后的第二写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第二缓存区的读写指针的变化,能重复利用第二缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
处理器11在开始向第一缓存区写入待传输数据之前,可向硬件加速单元发送一开工通知信号,该开工通知信号中可携带有数据索引,其中,数据索引中包括第一缓存区的地址。这样,硬件加速单元后续即可根据第一缓存区的地址从第一缓存区进行数据读取。
此外,数据索引中还可包括第二缓存区的地址。这样,可指示硬件加速单元在对从第一缓存区读取出的数据进行处理后,按照第二缓存区的地址将处理完的数据存储在第二缓存区。
为了提高传输效率,处理器和硬件加速单元之间可采用多通道并行处理,这样可以同时传输多份数据,能充分利用处理器和硬件加速单元之间的带宽。上述第二缓存区对应的通道为多通道中的一个。需要补充的是,多通道中每一通道对应一个用于硬件加速单元写入处理后数据的缓存区。
本申请实施例提供的电子设备中各组成单元,如处理器、硬件加速单元的具体工作流程及之间的信令交互将在以下各实施例中作进一步的说明。
图5示出了本申请又一实施例提供的数据处理方法的流程示意图。所述方法适用于硬件加速单元。其中,硬件加速单元可以为FPGA(Field-Programmable Gate Array,现场可编程门阵列)或ASIC(Application Specific Integrated Circuits,专用集成电路)。如图5所示,
301、基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间。
302、根据所述第二可用空间的位置信息,更新所述第二写指针,以使所述处理器根据所述第二读指针和更新后的所述第二写指针从所述第二缓存区内读取数据。
上述301中,第二读指针可指向第二缓存区中下一次读操作所要读取的第一个缓存单元;第二写指针可指向第二缓存区中下一次写操作所要写入的第一个缓存单元。基于第二缓存区的第二读指针和第二写指针,可确定出第二缓存区是否有第二空闲空间,第二空闲空间指的是没有缓存待读取数据的空间。具体应用时,可将该第二空闲空间全部作为上述第二可用空间,或者将第二空闲空间中的部分空间作为上述第二可用空间。其中,第二缓存区可以为一缓存队列。
在一种应用场景中,处理完的数据可以为硬件加速单元对处理器传输来的数据进行压缩得到的数据。
需要补充的是,在另一种可实现的方案中,第二读指针可指向第二缓存区中最后一个读取的数据在读取前所在的缓存单元;第二写指针可指向第二缓存区中最后一个写入的数据在写入后所在的缓存单元。
在实际应用中,第二读指针和第二写指针具体指向哪个缓存单元,可根据实际情况来配置。本实施例对此不做具体限定,只要能够根据第二读指针和第二写指针判断出第二缓存区内是否有空闲空间以及第二缓存区内是否有待读取数据即可。
上述302中,当第二可用空间包括单元地址连续的两个以上缓存单元时,确定在本次写入过程(即上述301的过程)中,第二可用空间中最后一个写入数据的第二缓存单元;根据第二缓存单元的位置信息,更新第二写指针
当第二可用空间仅包括一个缓存单元时,可直接将该缓存单元作为上述第二缓存单元;根据第二缓存单元的位置信息,更新第二写指针。
当配置第二读指针指向第二缓存区中下一次读操作所要读取的第一个缓存单元以及第二写指针指向第二缓存区中下一次写操作所要写入的第一个缓存单元,则更新第二写指针以使更新后的第二写指针指向第二缓存区中第二缓存单元的下一个缓存单元。
当配置第二读指针指向第二缓存区中最后一个读取的数据在读取前所在的缓存单元以及第二写指针指向第二缓存区中最后一个写入的数据在写入后所在的缓存单元,则更新第二写指针以使更新后的第二写指针指向第二缓存区中第二缓存单元。
需要补充的是,第二缓存区内包括多个单元地址连续的缓存单元,多个地址连续的缓存单元按照地址顺序排列。第二缓存区中第二缓存单元的下一个缓存单元指的是第二缓存区中紧跟在第二缓存单元后的缓存单元。如图6所示,缓存单元F1为缓存单元E1的下一个缓存单元。
处理器包括但不限于:CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)。
在一种可实现的方案中,硬件加速单元可将更新后的第二写指针同步至处理器,以使所述处理器根据所述第二读指针及更新后的所述第二写指针从所述第二缓存区内读取数据。
在另一种可实现的方案中,处理器在每次从第二缓存区内读取数据之前,向硬件加速单元发送写指针获取请求,硬件加速单元可在接收到处理器发送来的写指针获取请求后,将更新后的第二写指针发送至处理器,以使所述处理器根据所述第二读指针及更新后的所述第二写指针从所述第二缓存区内读取数据。
其中,所述处理器根据所述第二读指针及更新后的所述第二写指针从所述第二缓存区内读取数据的具体实现将在下述各实施例中进行详细介绍。
本申请实施例提供的技术方案中,硬件加速单元根据第二缓存区的第二读指针和第二写指针向第二缓存区写入数据;在第二可用空间写入数据后,硬件加速单元会及时更新第二缓存区的第二写指针并发送至处理器,这样处理器即可根据第二缓存区的第二读指针及更新后的第二写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第二缓存区的读写指针的变化,能重复利用第二缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
进一步的,上述方法还可包括:
303、基于所述第二读指针和所述第二写指针,确定所述第二缓存区中是否存在第二空闲空间。
其中,第二缓存区中包括多个单元地址连续的缓存单元,多个缓存单元按照单元地址顺序进行排列。
在一种可实现的方案中,第二读指针的值为第二缓存区中下一次读操作所要读取的第一个缓存单元的单元地址;第二写指针的值为第二缓存区中下一次写操作所要写入的第一个缓存单元的单元地址。故上述304具体为:根据第二缓存区中下一次读操作所要读取的第一个缓存单元的单元地址以及第二缓存区中下一次写操作所要写入的第一个缓存单元的单元地址,确定第二缓存区中是否存在第二空闲空间。
举例来说:如图6所示,第二缓存区包括单元地址连续且按序排列的七个缓存单元,按序排列的这七个缓存单元的单元地址依次为A1、B1、C1、D1、E1、F1、G1。第二读指针为C1时,第二写指针为F1时,可确定出单元地址为F1、G1、A1和B1这四个缓存单元是空闲的,即第二空闲空间包括:单元地址为F1、G1、A1和B1这四个缓存单元。
在另一种可实现的方案中,第二读指针的值为第二缓存区中下一次读操作所要读取的第一个缓存单元在第二缓存区内的位置编号;第二写指针的值可为第二缓存区中下一次写操作所要写入的第一个缓存单元在第二缓存区内的位置编号。
可根据第二缓存区内多个缓存单元的排序信息,为各缓存单元分配位置编号,如图6所示,排在第一的缓存单元的位置编号为“00”,排在第二的缓存单元的位置编号为“01”…排在第7的缓存单元的位置标号为“06”。
举例来说:第二读指针为02且第二写指针为05时,可确定出位置编号为05、06、00和01的缓存单元是空闲的。即第二空闲空间包括:位置编号为05、06、00和01的缓存单元。
进一步的,上述方法,还可包括:
304、所述第二缓存区中存在所述第二空闲空间时,在所述第二空闲空间中,确定出所述第二可用空间。
其中,所述第二可用空间的大小小于所述第二空闲空间的大小。所述第二可用空间中包括单元地址连续的至少一个缓存单元;所述第二可用空间包括所述第二写指针指向的缓存单元。
第二可用空间的大小小于第二空闲空间的大小,这样可确保第二缓存区在任一时刻都不会被写满。这样,即可避免硬件加速单元在向第二缓存区写入数据时不会覆盖写以及处理器从第二缓存区读取数据时不会重复读等情况。覆盖写指的是待读取的数据被新写入的数据覆盖;重复读指的是已读取的数据被再一次读取。
这是因为:若不能避免第二缓存区被写满的情况,那么,第二读指针和第二写指针同时指向同一缓存单元时,将无法确定该缓存单元中是否缓存待读取的数据,这就会导致重复读和覆盖写的问题;若第二缓存区在任意时刻都不会被写满,那么,第二读指针和第二写指针同时指向同一缓存单元时,即可准确确定该缓存单元中没有缓存待读取的数据。
在本实施例中,当第二空闲空间仅包括一个缓存单元时,则可确定第二缓存区中没有第二可用空间。因此,不能向第二缓存区写入数据,需要等待处理器从第二缓存区中读取数据以空闲出更多的缓存单元。
进一步的,上述302中“根据所述第二可用空间的位置信息,更新所述第二写指针”,具体可采用如下步骤来实现:
3021、确定在本次写入过程中,所述第二可用空间中最后一个写入数据的第二缓存单元。
3022、根据所述第二缓存单元的位置信息,更新所述第二写指针。
举例来说:如图6所示,第二可用空间包括:单元地址为C1、D1、E1这三个缓存单元。由于在本次写入过程中,会按照单元地址的顺序或位置编号的顺序依次将数据写入至单元地址为C1、D1和E1这三个缓存单元中,即单元地址为C1的缓存单元为本次写入过程中第一个写入数据的缓存单元,单元地址为E1的缓存单元为本次写入过程中最后一个写入数据的缓存单元。
上述3022中,当第二缓存单元的位置信息为第二缓存单元的单元地址时,将第二缓存区中第二缓存单元的单元地址的下一个单元地址作为更新后的第二写指针。例如:如图6所示,第二缓存单元的单元地址为E1,第二缓存单元的单元地址E1的下一个单元地址为F1,则更新后的第二写指针的值为F1。
当第二缓存单元的位置信息为第二缓存单元在第二缓存区内的位置编号Q,将Q+1作为更新后的第二写指针。其中,所述Q为大于等于零的整数。例如:如图6所示,第二缓存单元的位置编号为04,则更新后的第二写指针的值为05。
图7示出了本申请又一实施例提供的数据处理方法的流程示意图。所述方法适用于处理器。其中,处理器包括但不限于:CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)。该方法包括:
401、基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据。
402、根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针,以使所述硬件加速单元根据所述第二写指针及更新后的所述第二读指针向所述第二缓存区内写入其处理完的数据。
上述401中,第二读指针可指向第二缓存区中下一次读操作所要读取的第一个缓存单元;第二写指针可指向第二缓存区中下一次写操作所要写入的第一个缓存单元。其中,第二缓存区可以为一缓存队列。基于第二缓存区的第二读指针和第二写指针,可确定出第二缓存区是否有待读取的数据。
需要补充的是,在另一种可实现的方案中,第二读指针可指向第二缓存区中最后一个读取的数据在读取前所在的缓存单元;第二写指针可指向第二缓存区中最后一个写入的数据在写入后所在的缓存单元。
在实际应用中,第二读指针和第二写指针具体指向哪个缓存单元,可根据实际情况来配置。本实施例对此不做具体限定,只要能够根据第二读指针和第二写指针判断出第二缓存区内是否有空闲空间以及第二缓存区内是否有待读取数据即可。
上述402中,若本次读取过程中,读取出两个以上缓存单元的待读取数据,则确定本次读取过程中,最后一个读取出的数据在读取前所在的第四缓存单元;根据第四缓存单元的位置信息,更新第二读指针。
若本次读取过程中,仅读取出一个缓存单元的待读取数据,则将该缓存单元确定为上述第四缓存单元;根据第四缓存单元的位置信息,更新第二读指针
当配置第二读指针指向第二缓存区中下一次读操作所要读取的第一个缓存单元以及第二写指针指向第二缓存区中下一次写操作所要写入的第一个缓存单元,则更新第二读指针以使更新后的第二读指针指向第二缓存区中第四缓存单元的下一个缓存单元。
当配置第二读指针指向第二缓存区中最后一个读取的数据在读取前所在的缓存单元以及第二写指针指向第二缓存区中最后一个写入的数据在写入后所在的缓存单元,则更新第二读指针以使更新后的第二读指针指向第二缓存区中第四缓存单元。
需要补充的是,第二缓存区内包括单元地址连续的缓存单元,多个地址连续的缓存单元按照地址顺序排列。第二缓存区中第四缓存单元的下一个缓存单元指的是第二缓存区中紧跟在第四缓存单元后的缓存单元。如图6所示,缓存单元F1为缓存单元E1的下一个缓存单元。
硬件加速单元可以为FPGA(Field-Programmable Gate Array,现场可编程门阵列)或ASIC(Application Specific Integrated Circuits,专用集成电路)。
在一种可实现的方案中,处理器可将更新后的第二读指针发送至硬件加速单元,以使所述硬件加速单元根据所述第二缓存区的第二写指针及更新后的所述第二读指针向所述第二缓存区内写入数据。
在另一种可实现的方案中,硬件加速单元在每次向第二缓存区内写入数据之前,向处理器发送读指针获取请求,处理器可在接收到硬件加速单元发送来的读指针获取请求后,将更新后的第二读指针发送至硬件加速单元,以使所述硬件加速单元根据所述第二缓存区的第二写指针及更新后的所述第二读指针向所述第二缓存区内写入数据。
其中,处理器根据所述第二缓存区的第二写指针及更新后的所述第二读指针向所述第二缓存区内写入数据的具体实现可参见上述各实施例中相应内容,在此不在赘述。
本申请实施例提供的技术方案中,硬件加速单元根据第二缓存区的第二读指针和第二写指针向第二缓存区写入数据;在第二可用空间写入数据后,硬件加速单元会及时更新第二缓存区的第二写指针,这样处理器即可根据第二缓存区的第二读指针及更新后的第二写指针进行数据读取。采用本申请实施例提供的技术方案进行软硬件之间大量数据或流式数据的传输时,根据第二缓存区的读写指针的变化,能重复利用第二缓存区以实现大量数据或流式数据在软硬件之间的传输。可见,本申请实施例提供的技术方案能够用有限的空间来传输大量数据,节省了传输过程中所需要的缓存空间。
当硬件加速单元按照不写满策略(即确保在任意时刻第二缓存区都不会被写满)向第二缓存区写数据时,上述方法,还包括:
403、所述第二读指针的值不等于所述第二写指针的值时,确定所述第二缓存区内有待读取的数据。
所述第二读指针的值等于所述第二写指针的值时,即可确定所述第二缓存区内没有待读取的数据。
在一种可实现的方案中,第二读指针的值为第二缓存区中下一次读操作所要读取的第一个缓存单元的单元地址;第二写指针的值为第二缓存区中下一次写操作所要写入的第一个缓存单元的单元地址。
举例来说:如图6所示,第二读指针为C1时,第二写指针为F1时,可确定出单元地址为C1、D1、E1这三个缓存单元中有待读取的数据。
在另一种可实现的方案中,第二读指针的值为第二缓存区中下一次读操作所要读取的第一个缓存单元在第二缓存区内的位置编号;第二写指针的值可为第二缓存区中下一次写操作所要写入的第一个缓存单元在第二缓存区内的位置编号。
举例来说:如图6所示,第二读指针为02且第二写指针为05时,可确定出位置编号为02、、03和04这三个缓存单元有待读取的数据。
进一步的,上述402中“根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针”,具体可采用如下步骤来实现:
4021、确定本次读取过程中,最后一个读取出的数据在读取前所在的第四缓存单元。
4022、根据所述第四缓存单元的位置信息,更新所述第二读指针。
举例来说,如图6所示,本次读取过程中,读取出单元地址为C1、D1、E1这三个缓存单元内缓存的待读取数据。由于在读取过程中,会按照单元地址的顺序或位置编号的顺序依次从单元地址为C1、D1、E1这三个缓存单元内读取出待读取的数据,即单元地址为C1的缓存单元内的数据是第一个读取出的数据,单元地址为E1的缓存单元的数据是最后一个读取出的数据。
上述4022中,当第四缓存单元的位置信息为第四缓存单元的单元地址时,将第二缓存区中第四缓存单元的单元地址的下一个单元地址作为更新后的第二读指针。例如:如图6所示,第四缓存单元的单元地址为E1,单元地址E1的下一个单元地址为F1,则更新后的第二读指针的值为F1。
当第四缓存单元的位置信息为第四缓存单元在第二缓存区内的位置编号P时,将P+1作为更新后的所述第一读指针。其中,P为大于等于零的整数。例如:如图6所示,第四缓存单元的位置编号为04,则更新后的第二读指针的值为05。
这里需要说明的是:本申请实施例提供的所述方法中未尽详述的内容可参见上述实施例中的相应内容,此处不再赘述。
此外,需要补充说明的是,图3和图6中所示的第一缓存区和第二缓存区仅为示例,并非第一缓存区和第二缓存区仅包括7个缓存单元,第一缓存区和第二缓存内的缓存单元的数量可根据实际需要进行设置,本申请对此不做具体限定。
下面将结合图8和图9对本申请实施例进行详细介绍:
步骤501、处理器发送数据索引给硬件加速单元。其中,数据索引中包括第一缓存区的地址以及第二缓存区的地址。
步骤502、处理器接收到将数据传输给硬件加速单元进行处理的任务时,处理器向硬件加速单元发送开工通知信息。
步骤503、处理器从硬件加速单元处获取第一缓存区的第一读指针。
步骤504、处理器基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据。
步骤505、根据所述第一可用空间的位置信息,更新所述第一写指针。
步骤506、硬件加速单元从处理器处获取第一缓存区的第一写指针。
步骤507、硬件加速单元基于所述第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据。
步骤508、硬件加速单元根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针。
重复上述步骤503至508,直至处理器通过第一缓存区将待传输的所有数据全部传输至硬件加速单元。
在上述步骤503至508的重复过程中,硬件加速单元将从第一缓存区中读取到的数据进行处理后,需将处理后的数据返回给处理器。这一过程下面将结合图9来介绍:
步骤601、硬件加速单元从处理器测获取第二缓存区的第二读指针。
步骤602、硬件加速单元基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间。
步骤603、硬件加速单元根据所述可用空间的位置信息,更新所述第二写指针。
步骤604、处理器获取第二缓存区的第二写指针。
步骤605、处理器基于所述第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据。
步骤606、处理器根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针。
重复上述步骤601至606,直至硬件加速单元将所有处理后的数据全部返回给处理器。
需要补充说明的是:硬件加速单元从第一缓存区读取出部分数据后,即可对该部分数据进行处理,无需等到处理器传输来的所有数据全部读取完才进行处理。这样,可缩短处理器得到处理后数据的等待时长,相当于提高了产品的处理速度。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法适于处理器;所述方法,包括:
基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;
根据所述第一可用空间的位置信息,更新所述第一写指针;
将更新后的所述第一写指针同步至硬件加速单元,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据;
其中,所述硬件加速单元用于:基于所述第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针;将更新后的所述第一读指针同步至所述处理器,以使所述处理器根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
基于所述第一读指针和所述第一写指针,确定所述第一缓存区中是否存在第一空闲空间;
所述第一缓存区中存在所述第一空闲空间时,在所述第一空闲空间中,确定出所述第一可用空间,其中,所述第一可用空间的大小小于所述第一空闲空间的大小。
3.根据权利要求2所述的方法,其特征在于,所述第一可用空间中包括单元地址连续的至少一个缓存单元;
所述第一可用空间中包括所述第一写指针指向的缓存单元。
4.根据权利要求1至3中任一项所述的方法,其特征在于,根据所述第一可用空间的位置信息,更新所述第一写指针,包括:
确定在本次写入过程中,所述第一可用空间中最后一个写入数据的第一缓存单元;
根据所述第一缓存单元的位置信息,更新所述第一写指针。
5.根据权利要求4所述的方法,其特征在于,所述第一缓存单元的位置信息为所述第一缓存单元在所述第一缓存区内的位置编号N;其中,所述N为大于等于零的整数;
根据所述第一缓存单元的位置信息,更新所述第一写指针,包括:
将N+1作为更新后的所述第一写指针。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述处理器与所述硬件加速单元之间采用多通道并行处理;
所述第一缓存区对应的通道为所述多通道中的一个。
7.一种数据处理方法,其特征在于,所述方法适于硬件加速单元;所述方法,包括:
基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据;
根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针;
将更新后的所述第一读指针同步至处理器,以使所述处理器根据所述第一缓存区的第一写指针及更新后的所述第一读指针向所述第一缓存区内写入数据;
其中,所述处理器具体用于:基于所述第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;根据所述第一可用空间的位置信息,更新所述第一写指针;将更新后的所述第一写指针同步至所述硬件加速单元,以使所述硬件加速单元根据所述第一读指针及更新后的所述第一写指针从所述第一缓存区内读取数据。
8.根据权利要求7所述的方法,其特征在于,还包括:
所述第一读指针的值不等于所述第一写指针的值时,确定所述第一缓存区内有待读取的数据。
9.根据权利要求7或8所述的方法,其特征在于,根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针,包括:
确定本次读取过程中,最后一个读取出的数据在读取前所在的第三缓存单元;
根据所述第三缓存单元的位置信息,更新所述第一读指针。
10.根据权利要求9所述的方法,其特征在于,所述第三缓存单元的位置信息为所述第三缓存单元在所述第一缓存区内的位置编号M;其中,M为大于等于零的整数;
根据所述第三缓存单元的位置信息,更新所述第一读指针,包括:
将M+1作为更新后的所述第一读指针。
11.一种电子设备,其特征在于,包括:处理器和硬件加速单元;其中,
所述处理器,用于基于第一缓存区的第一读指针和第一写指针确定所述第一缓存区有第一可用空间时,在所述第一可用空间内写入数据;根据所述第一可用空间的位置信息,更新所述第一写指针;将更新后的所述第一写指针同步至所述硬件加速单元;
所述硬件加速单元,用于基于所述第一缓存区的第一读指针和第一写指针确定所述第一缓存区内有待读取的数据时,从所述第一缓存区内读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第一读指针;将更新后的所述第一读指针同步至所述处理器。
12.一种数据处理方法,其特征在于,所述方法适于硬件加速单元;所述方法,包括:
基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间;
根据所述第二可用空间的位置信息,更新所述第二写指针;
将更新后的所述第二写指针同步至处理器,以使所述处理器根据所述第二读指针和更新后的所述第二写指针从所述第二缓存区内读取数据;
其中,所述处理器,具体用于:基于所述第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针;将更新后的所述第二读指针发送至所述硬件加速单元,以使所述硬件加速单元根据所述第二写指针及更新后的所述第二读指针向所述第二缓存区内写入其处理完的数据。
13.根据权利要求12所述的方法,其特征在于,还包括:
基于所述第二读指针和所述第二写指针,确定所述第二缓存区中是否存在第二空闲空间;
所述第二缓存区中存在所述第二空闲空间时,在所述第二空闲空间中,确定出所述第二可用空间,其中,所述第二可用空间的大小小于所述第二空闲空间的大小。
14.根据权利要求13所述的方法,其特征在于,所述第二可用空间中包括单元地址连续的至少一个缓存单元;
所述第二可用空间包括所述第二写指针指向的缓存单元。
15.根据权利要求12至14中任一项所述的方法,其特征在于,根据所述第二可用空间的位置信息,更新所述第二写指针,包括:
确定在本次写入过程中,所述第二可用空间中最后一个写入数据的第二缓存单元;
根据所述第二缓存单元的位置信息,更新所述第二写指针。
16.根据权利要求15所述的方法,其特征在于,所述第二缓存单元的位置信息为所述第二缓存单元在所述第二缓存区内的位置编号Q;其中,Q为大于等于零的整数;
根据所述第二缓存单元的位置信息,更新所述第二写指针,包括:
将Q+1作为更新后的所述第二写指针。
17.一种数据处理方法,其特征在于,所述方法适于处理器;所述方法,包括:
基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据;
根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针;
将更新后的所述第二读指针发送至硬件加速单元,以使所述硬件加速单元根据所述第二写指针及更新后的所述第二读指针向所述第二缓存区内写入其处理完的数据;
其中,所述硬件加速单元,具体用于:基于所述第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间;根据所述第二可用空间的位置信息,更新所述第二写指针;将更新后的所述第二写指针同步至所述处理器,以使所述处理器根据所述第二读指针和更新后的所述第二写指针从所述第二缓存区内读取数据。
18.根据权利要求17所述的方法,其特征在于,还包括:
所述第二读指针的值不等于所述第二写指针的值时,确定所述第二缓存区内有待读取的数据。
19.根据权利要求17或18所述的方法,其特征在于,根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针,包括:
确定本次读取过程中,最后一个读取出的数据在读取前所在的第四缓存单元;
根据所述第四缓存单元的位置信息,更新所述第二读指针。
20.一种电子设备,其特征在于,包括:硬件加速单元和处理器;其中,
所述硬件加速单元,用于基于第二缓存区的第二读指针和第二写指针确定所述第二缓存区有第二可用空间时,将处理完的数据写入所述第二可用空间;根据所述可用空间的位置信息,更新所述第二写指针;将更新后的所述第二写指针同步至所述处理器;
所述处理器,用于基于所述第二缓存区的第二读指针和第二写指针确定所述第二缓存区内有待读取的数据时,读取待读取的数据;根据本次读取出的数据在读取前所在的缓存位置,更新所述第二读指针;将更新后的所述第二读指针发送至所述硬件加速单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910032621.0A CN111435332B (zh) | 2019-01-14 | 2019-01-14 | 数据处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910032621.0A CN111435332B (zh) | 2019-01-14 | 2019-01-14 | 数据处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111435332A CN111435332A (zh) | 2020-07-21 |
CN111435332B true CN111435332B (zh) | 2024-03-29 |
Family
ID=71580740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910032621.0A Active CN111435332B (zh) | 2019-01-14 | 2019-01-14 | 数据处理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111435332B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113848454A (zh) * | 2021-09-09 | 2021-12-28 | 海光信息技术股份有限公司 | 一种芯片测试方法及芯片测试机 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591815A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种用环形数据缓冲区读写批量数据的方法及装置 |
CN103902471A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 数据缓存处理方法和装置 |
CN105183665A (zh) * | 2015-09-08 | 2015-12-23 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
CN108959117A (zh) * | 2018-06-22 | 2018-12-07 | 深圳忆联信息系统有限公司 | H2d写操作加速方法、装置、计算机设备及存储介质 |
-
2019
- 2019-01-14 CN CN201910032621.0A patent/CN111435332B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591815A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种用环形数据缓冲区读写批量数据的方法及装置 |
CN103902471A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 数据缓存处理方法和装置 |
CN105183665A (zh) * | 2015-09-08 | 2015-12-23 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
CN108959117A (zh) * | 2018-06-22 | 2018-12-07 | 深圳忆联信息系统有限公司 | H2d写操作加速方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111435332A (zh) | 2020-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11307769B2 (en) | Data storage method, apparatus and storage medium | |
CN111159436A (zh) | 一种推荐多媒体内容的方法、装置及计算设备 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN112148736B (zh) | 缓存数据的方法、设备及存储介质 | |
CN117573574B (zh) | 一种预取方法、装置、电子设备及可读存储介质 | |
CN114817651B (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN111435332B (zh) | 数据处理方法及设备 | |
US9292456B2 (en) | System and method for data synchronization across digital device interfaces | |
CN106254270A (zh) | 一种队列管理方法及装置 | |
CN111625600B (zh) | 数据存储的处理方法、系统、计算机设备及存储介质 | |
CN115840654B (zh) | 消息的处理方法、系统、计算设备及可读存储介质 | |
CN111984198A (zh) | 消息队列实现方法、装置及电子设备 | |
CN116610262A (zh) | 降低ssd顺序读延时的方法、装置、设备及介质 | |
JP2010128812A (ja) | データ管理システム及びデータ管理方法及びデータ管理プログラム | |
CN113326020A (zh) | 缓存器件、缓存器、系统、数据处理方法、装置及介质 | |
CN110909062A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN115970295A (zh) | 请求处理方法、装置和电子设备 | |
CN115981867A (zh) | 分片数据的处理方法及装置 | |
CN111290700A (zh) | 分布式数据读写方法和系统 | |
CN113076067B (zh) | 淘汰缓存数据的方法和装置 | |
CN112306413B (zh) | 用于访问内存的方法、装置、设备以及存储介质 | |
CN114489770A (zh) | 灰度发布方法、装置、计算机设备和存储介质 | |
CN104850548A (zh) | 一种实现大数据平台输入/输出处理的方法及系统 | |
CN112818166A (zh) | 一种视频信息查询方法、装置、电子设备和存储介质 | |
CN108959302B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |