数据处理方法、系统、电子设备和存储介质转让专利

申请号 : CN202211075504.0

文献号 : CN115145864B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王忠平万红星吕永志杨作兴

申请人 : 深圳比特微电子科技有限公司

摘要 :

本公开涉及一种数据处理方法、系统、电子设备和存储介质,该方法包括:在存储单元中分配存储空间,包括离线数据缓存区域、输入队列和输出队列;将每次从数据处理模块相关联的输入队列和输出队列分别获取的预处理信息和结果存储地址信息封装为数据包,并通过数据处理模块的接口将数据包发送给数据处理模块;通过数据处理模块的接口,接收来自数据处理模块的数据处理完成状态报告,根据数据处理完成状态报告,从离线数据缓存区域中获取结果数据。本公开实现了多个数据处理模块对存储单元中的流水线数据的离线数据存取标准的统一,有利于芯片软件驱动编写,有利于减少或消除潜在的数据处理过程中的bug,提升了片上系统运行的稳定性。

权利要求 :

1.一种数据处理方法,包括:

在存储单元中分配存储空间,所述存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列,其中,每个所述输入队列分别与至少两个数据处理模块中的每个数据处理模块相关联,每个输出队列分别与所述至少两个数据处理模块中的每个数据处理模块相关联,所述至少两个数据处理模块的接口标准相同,所述输入队列被配置为以队列形式保存至少一条预处理信息,每条所述预处理信息均包括参数信息和预处理存储地址信息,所述输出队列被配置为以队列形式保存至少一条结果存储地址信息,所述离线数据缓存区域被配置为存储预处理数据和结果数据,所述预处理存储地址信息用于指示所述预处理数据在所述离线数据缓存区域中的存储地址,所述结果存储地址信息用于指示所述结果数据在所述离线数据缓存区域中的存储地址;

将每次从与所述至少两个数据处理模块中的任意一个数据处理模块相关联的所述输入队列和所述输出队列分别获取的所述预处理信息和所述结果存储地址信息封装为数据包,并通过所述任意一个数据处理模块的接口将所述数据包发送给所述任意一个数据处理模块;

通过所述任意一个数据处理模块的接口,接收来自所述数据处理模块的数据处理完成状态报告,根据所述数据处理完成状态报告,从所述离线数据缓存区域中获取所述结果数据。

2.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法进一步包括:根据所述数据处理完成状态报告,将与所述数据处理完成状态报告相关联的预处理信息从与所述数据处理模块相关联的所述输入队列删除,并释放所删除的预处理信息中的预处理存储地址信息指示的存储地址的存储空间。

3.根据权利要求1所述的数据处理方法,其特征在于,所述接收来自所述数据处理模块的数据处理完成状态报告,包括:响应于来自所述任意一个数据处理模块的中断信号,进入中断处理服务进程;

通过所述中断处理服务进程,获取所述任意一个数据处理模块发送的所述数据处理完成状态报告。

4.根据权利要求1所述的数据处理方法,其特征在于,所述任意一个数据处理模块被配置为:根据接收的所述预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;

根据接收的所述参数信息,对所获取所述预处理数据进行数据处理以得到所述结果数据;

根据接收的所述结果存储地址信息,将所述结果数据输出至所述离线数据缓存区域存储,并发出所述数据处理完成状态报告。

5.根据权利要求4所述的数据处理方法,其特征在于,所述任意一个数据处理模块进一步被配置为:利用第一先进先出队列保存所接收的所述预处理信息,利用第二先进先出队列保存所接收的所述结果存储地址信息;

从所述第一先进先出队列取出最早保存的预处理信息;

根据从所述第一先进先出队列取出的预处理信息中的预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;

利用从所述第一先进先出队列取出的预处理信息中的参数信息,对所述预处理数据进行数据处理,得到所述结果数据;

从所述第二先进先出队列取出最早保存的结果存储地址信息;

根据从所述第二先进先出队列取出的结果存储地址信息,将所述结果数据存储于所述离线数据缓存区域。

6.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法进一步包括:响应于所述离线数据缓存区域中的存储地址的入列调用,将所述存储地址置于列队等待状态,其中,处于列队等待状态的所述存储地址中存储有所述预处理数据,所述列队等待状态用于指示存储地址中的数据可被所述任意一个数据处理模块获取;

响应于数据包的发送,将所发送的数据包中的所述预处理存储地址信息指示的所述存储地址,由所述列队等待状态置为激活状态,使得所述存储地址存储的所述预处理数据可被所述任意一个数据处理模块获取;

响应于处于所述激活状态的所述存储地址中的所述预处理数据被所述任意一个数据处理模块获取完成,将所述存储地址由所述激活状态置于完成状态;

响应于第一释放指示,将处于所述完成状态的所述存储地址由所述完成状态置于出列状态,其中,处于所述出列状态的所述存储地址可存储新的预处理数据,处于所述出列状态的所述存储地址的存储空间处于释放状态。

7.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法进一步包括:响应于所述离线数据缓存区域中的存储地址的入列调用,将所述存储地址置于列队等待状态,其中,处于列队等待状态的所述存储地址中尚未存储所述结果数据,所述列队等待状态用于指示存储地址可存储所述结果数据;

响应于所述任意一个数据处理模块发出的数据输出请求,将置于所述列队等待状态的所述存储地址,由所述列队等待状态置为激活状态,使得所述任意一个数据处理模块输出的所述结果数据可被存储于所述存储地址;

响应于处于所述激活状态的所述存储地址的所述结果数据的存储完成,将所述存储地址由所述激活状态置于完成状态;

响应于第二释放指示,将处于所述完成状态的所述存储地址由所述完成状态置于出列状态,其中,处于所述出列状态的所述存储地址中的所述结果数据可被获取,处于所述出列状态的所述存储地址的存储空间处于释放状态。

8.根据权利要求1至7任一项所述的数据处理方法,其特征在于:

在由所述至少两个数据处理模块组成对数据进行流水线处理的流水线结构的情况下,在所述流水线结构中的相邻两个数据处理模块之间,前级数据处理模块输出的结果数据为后级数据处理模块的预处理数据,所述前级数据处理模块的结果存储地址信息为所述后级数据处理模块的预处理存储地址信息。

9.一种数据处理系统,其特征在于,包括:

存储空间分配模块,被配置为执行在存储单元中分配存储空间,所述存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列,其中,每个所述输入队列分别与至少两个数据处理模块中的每个数据处理模块相关联,每个输出队列分别与所述至少两个数据处理模块中的每个数据处理模块相关联,所述至少两个数据处理模块的接口标准相同,所述输入队列被配置为以队列形式保存至少一条预处理信息,每条所述预处理信息均包括参数信息和预处理存储地址信息,所述输出队列被配置为以队列形式保存至少一条结果存储地址信息,所述离线数据缓存区域被配置为存储预处理数据和结果数据,所述预处理存储地址信息用于指示所述预处理数据在所述离线数据缓存区域中的存储地址,所述结果存储地址信息用于指示所述结果数据在所述离线数据缓存区域中的存储地址;

数据发送模块,被配置为执行将每次从与所述至少两个数据处理模块中的任意一个数据处理模块相关联的所述输入队列和所述输出队列分别获取的所述预处理信息和所述结果存储地址信息封装为数据包,并通过所述任意一个数据处理模块的接口将所述数据包发送给所述任意一个数据处理模块;

状态报告接收模块,被配置为执行通过所述任意一个数据处理模块的接口,接收来自所述任意一个数据处理模块的数据处理完成状态报告;

结果数据获取模块,被配置为执行根据所述数据处理完成状态报告,从所述离线数据缓存区域中获取所述结果数据。

10.根据权利要求9所述的数据处理系统,其特征在于,所述任意一个数据处理模块被配置为执行:根据接收的所述预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;

根据接收的所述参数信息,对所获取所述预处理数据进行数据处理以得到所述结果数据;

根据接收的所述结果存储地址信息,将所述结果数据输出至所述离线数据缓存区域存储,并发出所述数据处理完成状态报告。

11.根据权利要求9所述的数据处理系统,其特征在于,所述任意一个数据处理模块进一步被配置为执行:利用第一先进先出队列保存所接收的所述预处理信息,利用第二先进先出队列保存所接收的所述结果存储地址信息;

从所述第一先进先出队列取出最早保存的预处理信息;

根据从所述第一先进先出队列取出的预处理信息中的预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;

利用从所述第一先进先出队列取出的预处理信息中的参数信息,对所述预处理数据进行数据处理,得到所述结果数据;

从所述第二先进先出队列取出最早保存的结果存储地址信息;

根据从所述第二先进先出队列取出的结果存储地址信息,将所述结果数据存储于所述离线数据缓存区域。

12.根据权利要求9至11任一项所述的数据处理系统,其特征在于:

所述至少两个数据处理模块组成对数据进行流水线处理的流水线结构,其中,在所述流水线结构中的相邻两个数据处理模块之间,前级数据处理模块输出的结果数据为后级数据处理模块的预处理数据,所述前级数据处理模块的结果存储地址信息为所述后级数据处理模块的预处理存储地址信息。

13.一种电子设备,其特征在于,包括:

处理器;

用于存储所述处理器的可执行指令的存储器;

其中,所述处理器被配置为执行所述可执行指令,以实现如权利要求1至8任一项所述的数据处理方法。

14.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的至少一条指令被电子设备的处理器执行时,使得所述电子设备能够实现如权利要求1至8任一项所述的数据处理方法。

说明书 :

数据处理方法、系统、电子设备和存储介质

技术领域

[0001] 本公开涉及数据处理领域,特别涉及一种数据处理方法、系统、电子设备和存储介质。

背景技术

[0002] 片上系统(SoC,System‑on‑a‑chip)是在单个芯片上集成一套完整的系统,对所有或部分必要的电子电路进行包分组的技术,其中,包分组是指传送的任一数据单位,一个数据单位的容量可大可小。片上系统内部包括多个电路模块,为了设计开发效率的提高,事先已经完成设计的具有特定功能的电路模块会被封装成IP核,并在片上系统的开发中直接使用这些已设计完成的IP核(Intellectual Property core,知识产权核),从而节省了大量相同电路模块的设计工作,缩短了设计时间。其中,IP核是指知识产权核或知识产权模块,用于ASIC(Application Specific Integrated Circuit,专用集成电路)或FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)中的预先设计好的电路功能模块,IP核把一些在数字电路中常用,但比较复杂的功能块,如FIR(Finite Impulse Response,有限脉冲响应)滤波器、SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存取内存)控制器等设计成可修改参数的模块。
[0003] 数据传输的离线模式是片上系统中的各个功能模块之间进行数据传输的一种方式,离线模式是先将前级模块的输出数据缓存至独立的存储单元,后级模块再将存储单元中的前级模块的输出数据作为输入数据进行读取并处理。片上系统中的各个功能模块往往采用IP核的形式,各种IP核的开发都是由不同的开发主体执行,因此,片上系统中的各个功能模块之间的输入、输出模式存在差异,造成片上系统集成复杂、软件驱动编写复杂,以及潜在的bug难以及时发现造成片上系统运行稳定性差的问题。

发明内容

[0004] 有鉴于此,本公开提供一种数据处理方法、系统、电子设备和存储介质,实现存储单元中针对多个数据处理模块的数据的存取的标准的统一,提升片上系统运行的稳定性。
[0005] 本公开的技术方案是这样实现的:
[0006] 一种数据处理方法,包括:
[0007] 在存储单元中分配存储空间,所述存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列,其中,每个所述输入队列分别与至少两个数据处理模块中的每个数据处理模块相关联,每个输出队列分别与所述至少两个数据处理模块中的每个数据处理模块相关联,所述至少两个数据处理模块的接口标准相同,所述输入队列被配置为以队列形式保存至少一条预处理信息,每条所述预处理信息均包括参数信息和预处理存储地址信息,所述输出队列被配置为以队列形式保存至少一条结果存储地址信息,所述离线数据缓存区域被配置为存储预处理数据和结果数据,所述预处理存储地址信息用于指示所述预处理数据在所述离线数据缓存区域中的存储地址,所述结果存储地址信息用于指示所述结果数据在所述离线数据缓存区域中的存储地址;
[0008] 将每次从与所述至少两个数据处理模块中的任意一个数据处理模块相关联的所述输入队列和所述输出队列分别获取的所述预处理信息和所述结果存储地址信息封装为数据包,并通过所述任意一个数据处理模块的接口将所述数据包发送给所述任意一个数据处理模块;
[0009] 通过所述任意一个数据处理模块的接口,接收来自所述任意一个数据处理模块的数据处理完成状态报告,根据所述数据处理完成状态报告,从所述离线数据缓存区域中获取所述结果数据。
[0010] 在一种可能的实施方式中,所述数据处理方法进一步包括:
[0011] 根据所述数据处理完成状态报告,将与所述数据处理完成状态报告相关联的预处理信息从与所述任意一个数据处理模块相关联的所述输入队列删除,并释放所删除的预处理信息中的预处理存储地址信息指示的存储地址的存储空间。
[0012] 在一种可能的实施方式中,所述接收来自所述任意一个数据处理模块的数据处理完成状态报告,包括:
[0013] 响应于来自所述任意一个数据处理模块的中断信号,进入中断处理服务进程;
[0014] 通过所述中断处理服务进程,获取所述任意一个数据处理模块发送的所述数据处理完成状态报告。
[0015] 在一种可能的实施方式中,所述任意一个数据处理模块被配置为:
[0016] 根据接收的所述预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;
[0017] 根据接收的所述参数信息,对所获取所述预处理数据进行数据处理以得到所述结果数据;
[0018] 根据接收的所述结果存储地址信息,将所述结果数据输出至所述离线数据缓存区域存储,并发出所述数据处理完成状态报告。
[0019] 在一种可能的实施方式中,所述任意一个数据处理模块进一步被配置为:
[0020] 利用第一先进先出队列保存所接收的所述预处理信息,利用第二先进先出队列保存所接收的所述结果存储地址信息;
[0021] 从所述第一先进先出队列取出最早保存的预处理信息;
[0022] 根据从所述第一先进先出队列取出的预处理信息中的预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;
[0023] 利用从所述第一先进先出队列取出的预处理信息中的参数信息,对所述预处理数据进行数据处理,得到所述结果数据;
[0024] 从所述第二先进先出队列取出最早保存的结果存储地址信息;
[0025] 根据从所述第二先进先出队列取出的结果存储地址信息,将所述结果数据存储于所述离线数据缓存区域。
[0026] 在一种可能的实施方式中,所述数据处理方法进一步包括:
[0027] 响应于所述离线数据缓存区域中的存储地址的入列调用,将所述存储地址置于列队等待状态,其中,处于列队等待状态的所述存储地址中存储有所述预处理数据,所述列队等待状态用于指示存储地址中的数据可被所述任意一个数据处理模块获取;
[0028] 响应于数据包的发送,将所发送的数据包中的所述预处理存储地址信息指示的所述存储地址,由所述列队等待状态置为激活状态,使得所述存储地址存储的所述预处理数据可被所述任意一个数据处理模块获取;
[0029] 响应于处于所述激活状态的所述存储地址中的所述预处理数据被所述任意一个数据处理模块获取完成,将所述存储地址由所述激活状态置于完成状态;
[0030] 响应于第一释放指示,将处于所述完成状态的所述存储地址由所述完成状态置于出列状态,其中,处于所述出列状态的所述存储地址可存储新的预处理数据,处于所述出列状态的所述存储地址的存储空间处于释放状态。
[0031] 在一种可能的实施方式中,所述数据处理方法进一步包括:
[0032] 响应于所述离线数据缓存区域中的存储地址的入列调用,将所述存储地址置于列队等待状态,其中,处于列队等待状态的所述存储地址中尚未存储所述结果数据,所述列队等待状态用于指示存储地址可存储所述结果数据;
[0033] 响应于所述任意一个数据处理模块发出的数据输出请求,将置于所述列队等待状态的所述存储地址,由所述列队等待状态置为激活状态,使得所述任意一个数据处理模块输出的所述结果数据可被存储于所述存储地址;
[0034] 响应于处于所述激活状态的所述存储地址的所述结果数据的存储完成,将所述存储地址由所述激活状态置于完成状态;
[0035] 响应于第二释放指示,将处于所述完成状态的所述存储地址由所述完成状态置于出列状态,其中,处于所述出列状态的所述存储地址中的所述结果数据可被获取,处于所述出列状态的所述存储地址的存储空间处于释放状态。
[0036] 在一种可能的实施方式中,在由所述至少两个数据处理模块组成对数据进行流水线处理的流水线结构的情况下,在所述流水线结构中的相邻两个数据处理模块之间,前级数据处理模块输出的结果数据为后级数据处理模块的预处理数据,所述前级数据处理模块的结果存储地址信息为所述后级数据处理模块的预处理存储地址信息。
[0037] 一种数据处理系统,包括:
[0038] 存储空间分配模块,被配置为执行在存储单元中分配存储空间,所述存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列,其中,每个所述输入队列分别与至少两个数据处理模块中的每个数据处理模块相关联,每个输出队列分别与所述至少两个数据处理模块中的每个数据处理模块相关联,所述至少两个数据处理模块的接口标准相同,所述输入队列被配置为以队列形式保存至少一条预处理信息,每条所述预处理信息均包括参数信息和预处理存储地址信息,所述输出队列被配置为以队列形式保存至少一条结果存储地址信息,所述离线数据缓存区域被配置为存储预处理数据和结果数据,所述预处理存储地址信息用于指示所述预处理数据在所述离线数据缓存区域中的存储地址,所述结果存储地址信息用于指示所述结果数据在所述离线数据缓存区域中的存储地址;
[0039] 数据发送模块,被配置为执行将每次从与所述至少两个数据处理模块中的任意一个数据处理模块相关联的所述输入队列和所述输出队列分别获取的所述预处理信息和所述结果存储地址信息封装为数据包,并通过所述任意一个数据处理模块的接口将所述数据包发送给所述任意一个数据处理模块;
[0040] 状态报告接收模块,被配置为执行通过所述任意一个数据处理模块的接口,接收来自所述任意一个数据处理模块的数据处理完成状态报告;
[0041] 结果数据获取模块,被配置为执行根据所述数据处理完成状态报告,从所述离线数据缓存区域中获取所述结果数据。
[0042] 在一种可能的实施方式中,所述任意一个数据处理模块被配置为执行:
[0043] 根据接收的所述预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;
[0044] 根据接收的所述参数信息,对所获取所述预处理数据进行数据处理以得到所述结果数据;
[0045] 根据接收的所述结果存储地址信息,将所述结果数据输出至所述离线数据缓存区域存储,并发出所述数据处理完成状态报告。
[0046] 在一种可能的实施方式中,所述任意一个数据处理模块进一步被配置为执行:
[0047] 利用第一先进先出队列保存所接收的所述预处理信息,利用第二先进先出队列保存所接收的所述结果存储地址信息;
[0048] 从所述第一先进先出队列取出最早保存的预处理信息;
[0049] 根据从所述第一先进先出队列取出的预处理信息中的预处理存储地址信息,从所述离线数据缓存区域获取所述预处理数据;
[0050] 利用从所述第一先进先出队列取出的预处理信息中的参数信息,对所述预处理数据进行数据处理,得到所述结果数据;
[0051] 从所述第二先进先出队列取出最早保存的结果存储地址信息;
[0052] 根据从所述第二先进先出队列取出的结果存储地址信息,将所述结果数据存储于所述离线数据缓存区域。
[0053] 在一种可能的实施方式中,所述至少两个数据处理模块组成对数据进行流水线处理的流水线结构,其中,在所述流水线结构中的相邻两个数据处理模块之间,前级数据处理模块输出的结果数据为后级数据处理模块的预处理数据,所述前级数据处理模块的结果存储地址信息为所述后级数据处理模块的预处理存储地址信息。
[0054] 一种电子设备,包括:
[0055] 处理器;
[0056] 用于存储所述处理器的可执行指令的存储器;
[0057] 其中,所述处理器被配置为执行所述可执行指令,以实现如上任一项所述的数据存取方法。
[0058] 一种计算机可读存储介质,当所述计算机可读存储介质中的至少一条指令被电子设备的处理器执行时,使得所述电子设备能够实现如上任一项所述的数据存取方法。
[0059] 从上述方案可以看出,本公开提供一种数据处理方法、系统、电子设备和存储介质,在存储单元中分配分别与每个数据处理模块相关联的输入队列和输出队列,并且所有数据处理模块的接口标准相同,配合任意一个数据处理模块的数据处理,将每次从任意一个数据处理模块相关联的输入队列和输出队列分别获取的预处理信息和结果存储地址信息,并通过该任意一个数据处理模块的接口发送给该任意一个数据处理模块,通过该任意一个数据处理模块的接口接收来自该任意一个数据处理模块的数据处理完成状态报告,根据该数据处理完成状态报告,从离线数据缓存区域中获取结果数据,实现了采用相同过程实现与接口标准相同的不同数据处理模块之间的数据交互,实现了针对多个数据处理模块的数据的交互标准的统一,实现了与多个数据处理模块交互的简化控制,在多个数据处理模块组成对数据进行流水线处理的流水线结构时,实现了多个数据处理模块对存储单元中的流水线数据的离线数据存取标准的统一,有利于芯片软件驱动编写,有利于减少或消除潜在的数据处理过程中的bug,提升了片上系统运行的稳定性。

附图说明

[0060] 图1是一种多媒体视频采集系统芯片的数据处理流水线结构示意图;
[0061] 图2是根据一示意性实施例示出的一种数据处理方法流程图;
[0062] 图3是根据一示意性实施例示出的接收数据处理完成状态报告的流程图;
[0063] 图4是根据一示意性实施例示出的关于预处理数据的存储地址置状态管理的流程图;
[0064] 图5是根据一示意性实施例示出的关于结果数据的存储地址置状态管理的流程图;
[0065] 图6是根据一示意性实施例示出的一种数据处理系统的逻辑结构示意图;
[0066] 图7是根据一示意性实施例示出的另一种数据处理系统的逻辑结构示意图;
[0067] 图8是根据一示意性实施例示出的又一种数据处理系统的逻辑结构示意图;
[0068] 图9是本公开实施例提供的一种电子设备的结构示意图;
[0069] 图10是根据一示意性实施例示出的一种数据存取方法流程图;
[0070] 图11是根据一示意性实施例示出的根据预处理信息处理预处理数据得到结果数据的流程图;
[0071] 图12是根据一示意性实施例示出的根据结果存储地址信息进行数据输出的流程图;
[0072] 图13是根据一示意性实施例示出的对存储单元中的存储地址状态管理的第一实施例流程图;
[0073] 图14是根据一示意性实施例示出的对存储单元中的存储地址状态管理的第二实施例流程图;
[0074] 图15是根据一示意性实施例示出的一种数据存取装置逻辑结构示意图;
[0075] 图16是根据一示意性实施例示出的一种数据存取系统逻辑结构示意图;
[0076] 图17是根据一示意性实施例示出的先进先出队列的结构示意图;
[0077] 图18是根据一示意性实施例示出的配合于先进先出队列对存储单元中存储地址的状态进行管理的示意图。

具体实施方式

[0078] 为了使本公开的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本公开作进一步详细说明。
[0079] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0080] 随着信息产业不断增长,尤其通信、计算机与互联网、数字视听、人工智能等业务的需求增长,半导体芯片处理能力不断增强,超大规模集成电路设计集成度和复杂度也越来越高。芯片或FPGA可以构成功能强大的片上系统,包括中央处理单元(CPU,Central Processing Unit)、片上存储系统,各种信号处理电路等。片上系统结构复杂,在设计和使用中,其内部划分多个电路模块,开发人员一般将已经设计好的、具有某种特定功能的电路模块封装成IP核,并在设计中重复使用简化芯片设计,缩短设计时间,便于协同设计,提高设计效率。
[0081] 在集成电路内部各模块之间,例如多媒体处理芯片、数字处理芯片或者通信处理芯片中的各个模块之间,通常会有数据前后级的继承性传递处理,执行数据前后级的继承性传递处理的各个模块形成流水线(pipeline)结构。即前级模块产生的数据结果,会成为后级模块的输入数据来源。依次类推形成一个大的流水线。
[0082] 图1是一种多媒体视频采集系统芯片的数据处理流水线结构示意图,如图1所示,多媒体视频采集系统芯片中除外设模块以外,在其图像处理流水线通路中包括图像传感器接收模块、图像信号前处理模块、图像信号合成模块、图像弯曲矫正模块、图像编码模块、图像显示输出接口模块。在图像处理流水线通路中,在图像传感器接收模块和图像信号前处理模块之间,图像传感器接收模块是前级模块,图像信号前处理模块是后级模块,图像传感器接收模块的输出数据会成为图像信号前处理模块的输入数据;在图像信号前处理模块和图像信号合成模块之间,图像信号前处理模块是前级模块,图像信号合成模块是后级模块,图像信号前处理模块的输出数据会成为图像信号合成模块的输入数据,以此类推。
[0083] 在前级模块和后级模块之间数据的传输通常有两种方式,一种是直通模式,另一种是离线模式。
[0084] 直通模式也称为在线传输模式,直通模式中,前级模块和后级模块间通过硬件握手,使用前级模块和后级模块本身的缓冲(Buffer)进行数据的缓存,直接进行模块间的数据传输,直通模式一般不需要软件的参与,其中,模块本身的缓冲的介质为片上或片外静态随机存取存储器(SRAM,Static Random Access Memory)或者双倍速率同步动态随机存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)。
[0085] 离线模式中,前级模块和后级模块间的数据传输方式是:首先,前级模块的输出数据(结果数据)预先写入存储内存,然后,后级模块再从存储内存中将前级模块的输出数据(结果数据)作为后级模块的输入数据(预处理数据)读出使用,离线模式一般需要软件参与传输,其中,存储内存可以是片上或片外静态随机存取存储器或双倍速率同步动态随机存储器,其中,软件例如驱动程序,用于对存储内存的空间进行分配和管理、对前级模块和后级模块的参数进行配置等。
[0086] 直通模式的优势在于处理速度快、实时性高、出错率小,不需要软件参与即可完成数据传输。但直通模式中,前级模块和后级模块之间因为需要算法和协议的流水线同步而设计大量硬件缓存,才能达到预期的流水线效果。例如图1所示中,图像信号前处理模块包括三个图像信号前处理子模块,三个图像信号前处理子模块分别执行图像的三个通道的图像信号前处理,三个图像信号前处理子模块与一个图像信号合成模块之间数据传输过程中,三个图像信号前处理子模块的输出数据(前处理图像数据)分时依次进入图像信号合成模块,每一个图像信号前处理子模块的输出数据为1帧图像,图像信号合成模块经过将三个图像信号前处理子模块的3帧图像按行对齐同步后才能够启动融合3帧图像到1帧图像的合成操作。因此采用直通模式的情况下,为了对齐数据,图像信号合成模块的硬件要缓存大量的前处理图像数据,增大了芯片设计和实现中硬件缓存代价,并增加了芯片面积和成本以及运行功耗。因此直通模式适用于传输的数据量较小的情况,例如图像尺寸较小时采用直通模式。在传输的数据量较大的情况下,例如输入图像宽度超过一定值时,采用离线传输模式,先将前级模块的输出数据(前级模块的结果数据)存进作为离线缓存的双倍速率同步动态随机存储器或者片外静态随机存取存储器,然后再作为后级模块的输入数据(后级模块的预处理数据)送入后级模块。
[0087] 在集成电路的模块设计时,由于IP核(例如图像信号处理(ISP,Image Signal Processing)单元,视频编码(VENC,Video Encode)单元等)本身就是一个复杂的逻辑模块,并且,不同IP核通常是由不同的IP供应商(Vendor)厂家或团队所设计,再者,不同IP模块运行所需要的环境不同,不同IP模块所需的参数结构,不同IP模块与软件的交互频次、交互的实时性不同,因此不同IP核模块所设计的离线数据输入输出接口可能各不相同。在整个芯片设计的系统集成过程中,需要集成这些不同输入和输出接口的模块(IP核),同时在设计和编写软件驱动时,也需要针对不同输入和输出接口的模块分配不同形式的缓冲(buffer),并使用不同频次、不同方式的中断响应,控制不同模块间的数据传送。造成各种模块之间驱动的不统一,不利于软件维护。
[0088] 基于上述原因:集成电路内部数据处理流水线中由若干单独模块构成,而各个模块通常由不同的设计开发者或IP制造商单独设计,并且前级模块和后级模块之间需要传输大量数据,前级模块和后级模块的离线数据的输入和输出的处理模式各不相同,同时各个模块所需要的实时性响应需求以及缓冲数量也不同。因此造成了整个芯片设计时的集成复杂,集成难度高,针对芯片的软件开发者也需要根据每种模块各自的输入和数据输出模式进行模块间数据交互方面针对性的驱动开发,从而增加了芯片软件的整体设计复杂度和开发难度,也增加了芯片验证和设计风险。
[0089] 有鉴于此,本公开实施例提供了数据处理方法、系统、电子设备和存储介质,在存储单元中分配分别与每个数据处理模块相关联的输入队列和输出队列,并且所有数据处理模块的接口标准相同,配合任意一个数据处理模块的数据处理,每次从任意一个数据处理模块相关联的输入队列和输出队列分别获取预处理信息和结果存储地址信息,并通过该任意一个数据处理模块的接口发送给该任意一个数据处理模块,通过该任意一个数据处理模块的接口接收来自该任意一个数据处理模块的数据处理完成状态报告,根据该数据处理完成状态报告,从离线数据缓存区域中获取结果数据,实现了采用相同过程实现与接口标准相同的不同数据处理模块之间的数据交互,实现了针对多个数据处理模块的数据的交互标准的统一,实现了与多个数据处理模块交互的简化控制,在多个数据处理模块组成对数据进行流水线处理的流水线结构时,实现了多个数据处理模块对存储单元中的流水线数据的离线数据存取标准的统一,有利于芯片软件驱动编写,有利于减少或消除潜在的数据处理过程中的bug,提升了片上系统运行的稳定性。
[0090] 图2是根据一示意性实施例示出的一种数据处理方法流程图,如图2所示,该数据处理方法主要包括以下步骤201至步骤203的内容。
[0091] 步骤201、在存储单元中分配存储空间,存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列,其中,每个输入队列分别与至少两个数据处理模块中的每个数据处理模块相关联,每个输出队列分别与至少两个数据处理模块中的每个数据处理模块相关联,至少两个数据处理模块的接口标准相同,输入队列被配置为以队列形式保存至少一条预处理信息,每条预处理信息均包括参数信息和预处理存储地址信息,输出队列被配置为以队列形式保存至少一条结果存储地址信息,离线数据缓存区域被配置为存储预处理数据和结果数据,预处理存储地址信息用于指示预处理数据在离线数据缓存区域中的存储地址,结果存储地址信息用于指示结果数据在离线数据缓存区域中的存储地址。
[0092] 作为示意性举例,至少两个数据处理模块包括模块A和模块B,在步骤201中,在存储单元中分配存储空间中包括离线数据缓存区域、输入队列A、输入队列B、输出队列A和输出队列B,其中,输入队列A与模块A相关联,输入队列B与模块B相关联,输出队列A与模块A相关联,输出队列B与模块B相关联。模块A和模块B的接口标准相同,也就是说,可以采用相同的方式(例如相同的协议标准)访问模块A和/或模块B。输入队列A被配置为以队列形式保存至少一条预处理信息,由于输入队列A与模块A相关联,所以输入队列A保存的预处理信息关联于模块A;输入队列B被配置为以队列形式保存至少一条预处理信息,由于输入队列B与模块B相关联,所以输入队列B保存的预处理信息关联于模块B。输入队列A中的每条预处理信息均包括关联于模块A的参数信息和预处理存储地址信息,其中,每条预处理信息中包括的参数信息和预处理存储地址信息均关联于模块A;输入队列B中的每条预处理信息均包括关联于模块B的参数信息和预处理存储地址信息,其中,每条预处理信息中包括的参数信息和预处理存储地址信息均关联于模块B。输出队列A被配置为以队列形式保存至少一条结果存储地址信息,由于输出队列A与模块A相关联,所以输出队列A保存的结果存储地址信息关联于模块A;输出队列B被配置为以队列形式保存至少一条结果存储地址信息,由于输出队列B与模块B相关联,所以输出队列B保存的结果存储地址信息关联于模块B。离线数据缓存区域存储的预处理数据和结果数据,包括关联于模块A的预处理数据和结果数据、以及关联于模块B的预处理数据和结果数据;其中,关联于模块A的预处理存储地址信息用于指示关联于模块A预处理数据在离线数据缓存区域中的存储地址,关联于模块B的预处理存储地址信息用于指示关联于模块B预处理数据在离线数据缓存区域中的存储地址;关联于模块A的结果存储地址信息用于指示关联于模块A的结果数据在离线数据缓存区域中的存储地址,关联于模块B的结果存储地址信息用于指示关联于模块B的结果数据在离线数据缓存区域中的存储地址。
[0093] 步骤202、将每次从与至少两个数据处理模块中的任意一个数据处理模块相关联的输入队列和输出队列分别获取的预处理信息和结果存储地址信息封装为数据包,并通过任意一个数据处理模块的接口将数据包发送给任意一个数据处理模块。
[0094] 作为示意性举例,步骤202可以包括:将每次从与模块A相关联的输入队列A和输出队列A分别获取的预处理信息和结果存储地址信息封装为数据包,并通过模块A的接口将数据包发送给模块A;将每次从与模块B相关联的输入队列B和输出队列B分别获取的预处理信息和结果存储地址信息封装为数据包,并通过模块B的接口将数据包发送给模块B。
[0095] 步骤203、通过任意一个数据处理模块的接口,接收来自任意一个数据处理模块的数据处理完成状态报告,根据数据处理完成状态报告,从离线数据缓存区域中获取结果数据。
[0096] 作为示意性举例,步骤203可以包括:通过模块A的接口,接收来自模块A的数据处理完成状态报告,根据模块A的数据处理完成状态报告,从离线数据缓存区域中获取关联于模块A的结果数据;通过模块B的接口,接收来自模块B的数据处理完成状态报告,根据模块B的数据处理完成状态报告,从离线数据缓存区域中获取关联于模块B的结果数据。
[0097] 在一些实施例中,虽未被附图所示例,本公开实施例的数据处理方法还可以进一步包括如下步骤204:
[0098] 步骤204、根据数据处理完成状态报告,将与数据处理完成状态报告相关联的预处理信息从与任意一个数据处理模块相关联的输入队列删除,并释放所删除的预处理信息中的预处理存储地址信息指示的存储地址的存储空间。
[0099] 作为示意性举例,步骤204可以包括:
[0100] 根据模块A的数据处理完成状态报告,将与模块A的数据处理完成状态报告相关联的预处理信息从与模块A相关联的输入队列A删除,并释放所删除的预处理信息中的预处理存储地址信息指示的存储地址的存储空间。
[0101] 例如,数据处理完成状态报告为模块A的数据处理完成状态报告A1,其中的内容指示其与模块A相关联的一条预处理信息A1(包括参数信息A1和预处理存储地址信息A1),该模块A的数据处理完成状态报告表示了模块A针对包括参数信息A1和预处理存储地址信息A1组成的预处理信息A1的数据处理完成。则在步骤204中,根据模块A的数据处理完成状态报告A1,将数据处理完成状态报告A1相关联的预处理信息A1从输入队列A删除,并释放所删除的预处理信息A1中的预处理存储地址信息A1指示的存储地址的存储空间。这样,由于模块A1完成了针对预处理信息A1的数据处理,进而将完成数据处理的预处理信息A1从输入队列A删除并释放预处理存储地址信息A1所指示的存储地址的存储空间,使得删除预处理信息A1后的输入队列A可以用于存储新的预处理信息,并使得释放的空间能够存储新的数据。
[0102] 图3是根据一示意性实施例示出的接收数据处理完成状态报告的流程图,如图3所示,步骤203中的接收来自任意一个数据处理模块的数据处理完成状态报告,包括:
[0103] 步骤301、响应于来自任意一个数据处理模块的中断信号,进入中断处理服务进程;
[0104] 步骤302、通过中断处理服务进程,获取任意一个数据处理模块发送的数据处理完成状态报告。
[0105] 采用上述中断信号的方式,无需实时监控数据处理模块是否完成数据处理,减少与数据处理模块的交互频次,提升数据处理模块的工作效率,并且实现了对数据处理模块的数据处理完成的及时响应和处理。
[0106] 作为示意性举例,步骤301可以包括:响应于来自模块A的中断信号,进入中断处理服务进程;步骤302可以包括:通过中断处理服务进程,获取模块A发送的数据处理完成状态报告。
[0107] 作为示意性举例,步骤301可以包括:响应于来自模块B的中断信号,进入中断处理服务进程;步骤302可以包括:通过中断处理服务进程,获取模块B发送的数据处理完成状态报告。
[0108] 在一些实施例中,任意一个数据处理模块被配置为:
[0109] 根据接收的预处理存储地址信息,从离线数据缓存区域获取预处理数据;
[0110] 根据接收的参数信息,对所获取预处理数据进行数据处理以得到结果数据;
[0111] 根据接收的结果存储地址信息,将结果数据输出至离线数据缓存区域存储,并发出数据处理完成状态报告。
[0112] 采用上述方式,数据处理模块在得到结果数据后,直接将结果输出至离线数据缓存区域存储,实现了数据处理模块直接向存储单元进行数据输出,减少了数据处理模块为了输出保存离线数据而与相关的中央处理单元进行频繁交互的次数,提升了数据传输效率。
[0113] 作为示意性举例,模块A被配置为:根据接收的预处理存储地址信息A1,从离线数据缓存区域获取预处理数据A1;根据接收的参数信息A1,对所获取预处理数据A1进行数据处理以得到结果数据A1;根据接收的结果存储地址信息A1,将结果数据A1输出至离线数据缓存区域存储,并发出数据处理完成状态报告A1。
[0114] 作为示意性举例,模块A被配置为:根据接收的预处理存储地址信息A2,从离线数据缓存区域获取预处理数据A2;根据接收的参数信息A2,对所获取预处理数据A2进行数据处理以得到结果数据A2;根据接收的结果存储地址信息A2,将结果数据A2输出至离线数据缓存区域存储,并发出数据处理完成状态报告A2。
[0115] 其中,预处理存储地址信息A1和预处理存储地址信息A2表示关联于模块A不同的预处理存储地址信息;预处理数据A1和预处理数据A2表示模块A处理的不同的预处理数据;参数信息A1和参数信息A2表示模块A接收的不同的参数信息;结果数据A1和结果数据A2表示由模块A处理得到的不同的结果数据,其中,结果数据A1是模块A根据参数信息A1和预处理存储地址信息A1进行数据处理得到的结果数据,结果数据A2是模块A根据参数信息A2和预处理存储地址信息A2进行数据处理得到的结果数据;结果存储地址信息A1和结果存储地址信息A2为不同的结果存储地址信息;数据处理完成状态报告A1和数据处理完成状态报告A2为不同的数据处理完成状态报告。
[0116] 作为示意性举例,模块B被配置为:根据接收的预处理存储地址信息B1,从离线数据缓存区域获取预处理数据B1;根据接收的参数信息B1,对所获取预处理数据B1进行数据处理以得到结果数据B1;根据接收的结果存储地址信息B1,将结果数据B1输出至离线数据缓存区域存储,并发出数据处理完成状态报告B1。
[0117] 作为示意性举例,模块B被配置为:根据接收的预处理存储地址信息B2,从离线数据缓存区域获取预处理数据B2;根据接收的参数信息B2,对所获取预处理数据B2进行数据处理以得到结果数据B2;根据接收的结果存储地址信息B2,将结果数据B2输出至离线数据缓存区域存储,并发出数据处理完成状态报告B2。
[0118] 其中,预处理存储地址信息B1和预处理存储地址信息B2表示关联于模块B不同的预处理存储地址信息;预处理数据B1和预处理数据B2表示模块B处理的不同的预处理数据;参数信息B1和参数信息B2表示模块B接收的不同的参数信息;结果数据B1和结果数据B2表示由模块B处理得到的不同的结果数据,其中,结果数据B1是模块B根据参数信息B1和预处理存储地址信息B1进行数据处理得到的结果数据,结果数据B2是模块B根据参数信息B2和预处理存储地址信息B2进行数据处理得到的结果数据;结果存储地址信息B1和结果存储地址信息B2为不同的结果存储地址信息;数据处理完成状态报告B1和数据处理完成状态报告B2为不同的数据处理完成状态报告。
[0119] 在一些实施例中,任意一个数据处理模块进一步被配置为:
[0120] 利用第一先进先出队列保存所接收的预处理信息,利用第二先进先出队列保存所接收的结果存储地址信息;
[0121] 从第一先进先出队列取出最早保存的预处理信息;
[0122] 根据从第一先进先出队列取出的预处理信息中的预处理存储地址信息,从离线数据缓存区域获取预处理数据;
[0123] 利用从第一先进先出队列取出的预处理信息中的参数信息,对预处理数据进行数据处理,得到结果数据;
[0124] 从第二先进先出队列取出最早保存的结果存储地址信息;
[0125] 根据从第二先进先出队列取出的结果存储地址信息,将结果数据存储于离线数据缓存区域。
[0126] 其中,每个数据处理模块都包含属于其自己的第一先进先出队列和第二先进先出队列。
[0127] 关于数据处理模块的进一步说明,详见本公开后续部分的内容。
[0128] 在对离线数据缓存区域进行数据存取调用的过程中,需要对相关的存储地址执行状态设定,以配合数据处理模块对存储单元的操作。
[0129] 图4是根据一示意性实施例示出的关于预处理数据的存储地址置状态管理的流程图,如图4所示,包括如下步骤401至步骤404。
[0130] 步骤401、响应于离线数据缓存区域中的存储地址的入列调用,将存储地址置于列队等待状态,其中,处于列队等待状态的存储地址中存储有预处理数据,列队等待状态用于指示存储地址中的数据可被任意一个数据处理模块获取;
[0131] 步骤402、响应于数据包的发送,将所发送的数据包中的预处理存储地址信息指示的存储地址,由列队等待状态置为激活状态,使得存储地址存储的预处理数据可被任意一个数据处理模块获取;
[0132] 步骤403、响应于处于激活状态的存储地址中的预处理数据被任意一个数据处理模块获取完成,将存储地址由激活状态置于完成状态;
[0133] 步骤404、响应于第一释放指示,将处于完成状态的存储地址由完成状态置于出列状态,其中,处于出列状态的存储地址可存储新的预处理数据,处于出列状态的存储地址的存储空间处于释放状态。
[0134] 图5是根据一示意性实施例示出的关于结果数据的存储地址置状态管理的流程图,如图5所示,包括如下步骤501至步骤504。
[0135] 步骤501、响应于离线数据缓存区域中的存储地址的入列调用,将存储地址置于列队等待状态,其中,处于列队等待状态的存储地址中尚未存储结果数据,列队等待状态用于指示存储地址可存储结果数据;
[0136] 步骤502、响应于任意一个数据处理模块发出的数据输出请求,将置于列队等待状态的存储地址,由列队等待状态置为激活状态,使得任意一个数据处理模块输出的结果数据可被存储于存储地址;
[0137] 步骤503、响应于处于激活状态的存储地址的结果数据的存储完成,将存储地址由激活状态置于完成状态;
[0138] 步骤504、响应于第二释放指示,将处于完成状态的存储地址由完成状态置于出列状态,其中,处于出列状态的存储地址中的结果数据可被获取,处于出列状态的存储地址的存储空间处于释放状态。
[0139] 在一些实施例中,在由至少两个数据处理模块组成对数据进行流水线处理的流水线结构的情况下,在流水线结构中的相邻两个数据处理模块之间,前级数据处理模块输出的结果数据为后级数据处理模块的预处理数据,前级数据处理模块的结果存储地址信息为后级数据处理模块的预处理存储地址信息。
[0140] 由至少两个数据处理模块组成对数据进行流水线处理的流水线结构,例如多媒体处理芯片、数字处理芯片或者通信处理芯片中的执行数据前后级的继承性传递处理的各个模块形成的流水线结构。本公开实施例的数据处理方法应用于流水线结构时,在存储单元中分配分别与流水线结构中的每个数据处理模块相关联的输入队列和输出队列,并且流水线中的所有数据处理模块的接口标准相同,实现了采用相同过程实现与接口标准相同的流水线中的不同数据处理模块之间的数据交互,实现了针对流水线中多个数据处理模块的数据的交互标准的统一,实现了与流水线中多个数据处理模块交互的简化控制,实现了多个数据处理模块对存储单元中的流水线数据的离线数据存取标准的统一,有利于针对流水线结构芯片的软件驱动编写,有利于减少或消除潜在的数据处理过程中的bug,提升了片上系统运行的稳定性。
[0141] 图6是根据一示意性实施例示出的一种数据处理系统的逻辑结构示意图,如图6所示,该数据处理系统600主要包括存储空间分配模块601、数据发送模块602、状态报告接收模块603和结果数据获取模块604。
[0142] 存储空间分配模块601,被配置为执行在存储单元中分配存储空间,存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列,其中,每个输入队列分别与至少两个数据处理模块中的每个数据处理模块相关联,每个输出队列分别与至少两个数据处理模块中的每个数据处理模块相关联,至少两个数据处理模块的接口标准相同,输入队列被配置为以队列形式保存至少一条预处理信息,每条预处理信息均包括参数信息和预处理存储地址信息,输出队列被配置为以队列形式保存至少一条结果存储地址信息,离线数据缓存区域被配置为存储预处理数据和结果数据,预处理存储地址信息用于指示预处理数据在离线数据缓存区域中的存储地址,结果存储地址信息用于指示结果数据在离线数据缓存区域中的存储地址。
[0143] 数据发送模块602,被配置为执行将每次从与至少两个数据处理模块中的任意一个数据处理模块相关联的输入队列和输出队列分别获取的预处理信息和结果存储地址信息封装为数据包,并通过任意一个数据处理模块的接口将数据包发送给任意一个数据处理模块。
[0144] 状态报告接收模块603,被配置为执行通过任意一个数据处理模块的接口,接收来自任意一个数据处理模块的数据处理完成状态报告。
[0145] 结果数据获取模块604,被配置为执行根据数据处理完成状态报告,从离线数据缓存区域中获取结果数据。
[0146] 图7是根据一示意性实施例示出的另一种数据处理系统的逻辑结构示意图,如图7所示,该数据处理系统600在图6所示结构的基础上进一步包括预处理信息删除模块701。
[0147] 预处理信息删除模块701,被配置为执行根据数据处理完成状态报告,将与数据处理完成状态报告相关联的预处理信息从与任意一个数据处理模块相关联的输入队列删除,并释放所删除的预处理信息中的预处理存储地址信息指示的存储地址的存储空间。
[0148] 在一些实施例中,状态报告接收模块603包括中断响应子模块和状态报告获取子模块。
[0149] 中断响应子模块,被配置为执行响应于来自任意一个数据处理模块的中断信号,进入中断处理服务进程。
[0150] 状态报告获取子模块,被配置为执行通过中断处理服务进程,获取任意一个数据处理模块发送的数据处理完成状态报告。
[0151] 在一些实施例中,本公开的数据处理系统中的任意一个数据处理模块被配置为执行:
[0152] 根据接收的预处理存储地址信息,从离线数据缓存区域获取预处理数据;
[0153] 根据接收的参数信息,对所获取预处理数据进行数据处理以得到结果数据;
[0154] 根据接收的结果存储地址信息,将结果数据输出至离线数据缓存区域存储,并发出数据处理完成状态报告。
[0155] 在一些实施例中,本公开的数据处理系统中的任意一个数据处理模块被配置为执行:
[0156] 利用第一先进先出队列保存所接收的预处理信息,利用第二先进先出队列保存所接收的结果存储地址信息;
[0157] 从第一先进先出队列取出最早保存的预处理信息;
[0158] 根据从第一先进先出队列取出的预处理信息中的预处理存储地址信息,从离线数据缓存区域获取预处理数据;
[0159] 利用从第一先进先出队列取出的预处理信息中的参数信息,对预处理数据进行数据处理,得到结果数据;
[0160] 从第二先进先出队列取出最早保存的结果存储地址信息;
[0161] 根据从第二先进先出队列取出的结果存储地址信息,将结果数据存储于离线数据缓存区域。
[0162] 图8是根据一示意性实施例示出的又一种数据处理系统的逻辑结构示意图,如图8所示,该数据处理系统600在图6或者图7所示结构的基础上进一步包括第一列队等待设置模块801、第一激活状态设置模块802、第一完成状态设置模块803、第一出列状态设置模块804。
[0163] 第一列队等待设置模块801,被配置为执行响应于离线数据缓存区域中的存储地址的入列调用,将存储地址置于列队等待状态,其中,处于列队等待状态的存储地址中存储有预处理数据,列队等待状态用于指示存储地址中的数据可被任意一个数据处理模块获取。
[0164] 第一激活状态设置模块802,被配置为执行响应于数据包的发送,将所发送的数据包中的预处理存储地址信息指示的存储地址,由列队等待状态置为激活状态,使得存储地址存储的预处理数据可被任意一个数据处理模块获取。
[0165] 第一完成状态设置模块803,被配置为执行响应于处于激活状态的存储地址中的预处理数据被任意一个数据处理模块获取完成,将存储地址由激活状态置于完成状态。
[0166] 第一出列状态设置模块804,被配置为执行响应于第一释放指示,将处于完成状态的存储地址由完成状态置于出列状态,其中,处于出列状态的存储地址可存储新的预处理数据,处于出列状态的存储地址的存储空间处于释放状态。
[0167] 如图8所示,该数据处理系统600在图6或者图7所示结构的基础上进一步包括第二列队等待设置模块805、第二激活状态设置模块806、第二完成状态设置模块807、第二出列状态设置模块808。
[0168] 第二列队等待设置模块805,被配置为执行响应于离线数据缓存区域中的存储地址的入列调用,将存储地址置于列队等待状态,其中,处于列队等待状态的存储地址中尚未存储结果数据,列队等待状态用于指示存储地址可存储结果数据。
[0169] 第二激活状态设置模块806,被配置为执行响应于任意一个数据处理模块发出的数据输出请求,将置于列队等待状态的存储地址,由列队等待状态置为激活状态,使得任意一个数据处理模块输出的结果数据可被存储于存储地址。
[0170] 第二完成状态设置模块807,被配置为执行响应于处于激活状态的存储地址的结果数据的存储完成,将存储地址由激活状态置于完成状态。
[0171] 第二出列状态设置模块808,被配置为执行响应于第二释放指示,将处于完成状态的存储地址由完成状态置于出列状态,其中,处于出列状态的存储地址中的结果数据可被获取,处于出列状态的存储地址的存储空间处于释放状态。
[0172] 在一些实施例中,该数据处理系统中的至少两个数据处理模块组成对数据进行流水线处理的流水线结构,其中,在流水线结构中的相邻两个数据处理模块之间,前级数据处理模块输出的结果数据为后级数据处理模块的预处理数据,前级数据处理模块的结果存储地址信息为后级数据处理模块的预处理存储地址信息。
[0173] 图9是本公开实施例提供的一种电子设备的结构示意图。在一些实施例中,该电子设备为服务器。该电子设备900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)901和一个或一个以上的存储器902,其中,该存储器902中存储有至少一条程序代码,该至少一条程序代码由该处理器901加载并执行以实现上述各个实施例提供的数据处理方法。当然,该电子设备900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该电子设备900还可以包括其他用于实现设备功能的部件,在此不做赘述。
[0174] 在示例性实施例中,还提供了一种包括至少一条指令的计算机可读存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由计算机设备中的处理器执行以完成上述实施例中的数据处理方法。
[0175] 可选地,上述计算机可读存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以包括ROM(Read‑Only Memory,只读存储器)、RAM(Random‑Access Memory,随机存取存储器)、CD‑ROM(Compact Disc Read‑Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
[0176] 本公开实施例还提供了一种数据存取方法,图10是根据一示意性实施例示出的该数据存取方法流程图,如图10所示,该数据存取方法主要包括以下步骤1001至步骤1004。
[0177] 步骤1001、分别获取预处理数据的预处理信息和结果数据的结果存储地址信息;
[0178] 步骤1002、将预处理信息和结果存储地址信息分别输入第三先进先出队列和第四先进先出队列;
[0179] 步骤1003、根据从第三先进先出队列获取的预处理信息,从预处理信息指示的存储单元中的存储地址获取预处理数据并对预处理数据进行处理得到结果数据;
[0180] 步骤1004、根据从第四先进先出队列获取的结果存储地址信息,将结果数据输出至结果存储地址信息指示的存储单元中的存储地址。
[0181] 其中,先进先出队列(FIFO,First Input First Output)是一种按序执行方法,在本公开实施例中,先输入第三先进先出队列的预处理信息先被获取,后输入第三先进先出队列的预处理信息后被获取,同样地,先输入第四先进先出队列的结果存储地址信息先被获取,后输入第四先进先出队列的结果存储地址信息后被获取。
[0182] 本公开实施例提供的数据存取方法,利用第三先进先出队列和第四先进先出队列分别缓冲预处理数据的预处理信息和结果数据在存储单元中的结果存储地址信息,再根据第三先进先出队列中的预处理信息从存储单元获取预处理数据以及根据第四先进先出队列中的结果存储地址信息将结果数据输出至存储单元,实现了多个数据处理模块对存储单元中的流水线数据的存取的标准的统一,有利于芯片集成的简化,有利于降低集成难度,有利于芯片软件驱动编写,有利于减少或消除潜在的bug,提升了片上系统运行的稳定性。
[0183] 本公开实施例的数据存取方法中,利用第三先进先出队列和第四先进先出队列分别对预处理数据的预处理信息和结果数据的结果存储地址信息进行缓冲,可使得使用本公开实施例的数据存取方法的芯片或集成电路中的IP核或硬件电路模块的相应驱动程序不必实时配置IP核或硬件电路模块所要处理数据的相关参数和离线数据的存储地址,以先进先出队列形式进行缓冲,驱动程序只要预先配置好离线数据的处理参数和存储地址供先进先出队列进行缓冲,再由IP核或硬件电路模块从先进先出队列中进行获取,可见利用先进先出队列作为软件驱动与IP核或硬件电路模块之间关于离线数据存取的配置调度的缓冲,降低了软件驱动和IP核或硬件电路模块之间在时间配合上的耦合度,有利于降低驱动程序的复杂度,并且,若芯片或集成电路中的多个IP核或硬件电路模块均采用本公开实施例的数据存取方法的先进先出队列的方式,则因为多个IP核或硬件电路模块之间具有同样的先进先出队列的方式从而能够降低集成难度以及驱动程序的复杂度,有利于芯片或集成电路运行的稳定。
[0184] 在一些实施例中,步骤1001中获取的预处理信息包括预处理数据的预处理存储地址信息和参数信息,其中,参数信息用于对预处理数据进行处理,其中,预处理存储地址信息包括用于执行处理的至少一路预处理数据的所有存储地址。
[0185] 在一些实施例中,步骤1001中在获取结果数据的结果存储地址信息的同时,还可进一步包括获取结果数据的类型信息,其中,类型信息包括至少一种输出类型,不同输出类型分别关联于不同的结果存储地址信息,输出类型包括结果类型、日志类型、排错类型的至少其中之一。
[0186] 其中,预处理存储地址信息和结果存储地址信息用于指示预处理数据和结果数据在存储单元中的存储地址,存储单元用于在数据离线传递模式中存储数据处理单元之间传递的数据,其中,数据处理单元例如图1中所示的各个模块。
[0187] 对于IP核或硬件电路模块来说,一次处理一定量的数据,例如图1所示中,图像信号合成模块需要将三个图像信号前处理子模块的3帧图像按行对齐同步后才能够启动融合3帧图像到1帧图像的合成操作,也就是说,图像信号合成模块一次处理的数据为三个图像信号前处理子模块的3帧图像。
[0188] 在这种情况下,采用本公开实施例的数据存取方法,对于图像信号合成模块来说,其预处理数据为三个图像信号前处理子模块输出的3帧图像数据,即3路预处理数据,该3路预处理数据存储于用于存储离线数据的存储单元中,该3路预处理数据在存储单元中的存储地址即为本公开实施例的预处理存储地址指示的存储地址。在一些实施例中,该3路预处理数据为同一批次预处理数据,该3路预处理数据的全部存储地址为同一批次预处理数据的所有存储地址,即3路预处理数据的所有存储地址。可见本公开实施例综合考虑了多路预处理数据的情况,将多路预处理数据的多个地址打包成预处理存储地址信息供IP核或硬件电路模块对预处理存储地址信息中的多个地址对应的多路预处理数据的同时获取。
[0189] 其中,预处理存储地址信息由驱动程序进行管理和维护,驱动程序由中央处理单元执行,中央处理单元、存储单元、IP核或硬件电路模块通过总线连接并进行通信和数据交互。对于图像信号合成模块来说,参数信息为将3帧图像按行对齐同步融合到1帧图像的合成操作所需要的相关参数,在一些实施例中,参数信息由驱动程序进行配置和维护。
[0190] 采用本公开实施例的数据存取方法,对于图像信号合成模块来说,其结果数据包括经过其合成操作而得到的合成为1帧的图像数据,在本公开实施例中,将数据处理模块输出的并作为后级模块的预处理数据的结果数据的输出类型称为结果类型,例如对于图像信号合成模块来说,经过其合成操作而得到的合成为1帧的图像数据的输出类型为结果类型,除此以外,结果数据还可以进一步包括其它类型,例如日志类型、排错(debug)类型,其中,日志类型对应于日志类的结果数据,排错类型对应于排错类的结果数据,这些结果数据均需要输出存储至存储单元中,结果类型的结果数据作为后级模块的预处理数据,日志类型和排错类型的结果数据用于记录模块的运行状态,供技术人员在需要时进行调用检查,所有结果数据均需要在存储单元中分配的存储地址区域进行存储,其中,结果数据在存储单元中的存储地址区域是由驱动程序进行分配,进而在本公开实施例中,结果数据的类型信息和结果存储地址信息由驱动程序分配和维护。
[0191] 其中,各种类型的结果数据构成了多路结果数据,由此,本公开实施例还综合考虑了多路结果数据的情况,将多路结果数据的多个地址用结果存储地址信息进行指示以供IP核或硬件电路模块对多路结果数据分别在不同地址进行存储。
[0192] 在一些实施例中,预处理数据的预处理存储地址信息和参数信息、以及结果数据的类型信息和结果存储地址信息,均是通过总线从运行驱动程序的中央处理单元获取。
[0193] 图11是根据一示意性实施例示出的根据预处理信息处理预处理数据得到结果数据的流程图,如图11所示,步骤1003的根据从第三先进先出队列获取的预处理信息,从预处理信息指示的存储单元中的存储地址获取预处理数据并对预处理数据进行处理得到结果数据,可以包括以下步骤1101至步骤1103。
[0194] 步骤1101、从第三先进先出队列获取预处理信息;
[0195] 步骤1102、从预处理信息中的预处理存储地址信息所指示的存储单元中的存储地址位置获取预处理数据;
[0196] 步骤1103、基于预处理信息中的参数信息,对所获取的预处理数据进行处理,得到结果数据。
[0197] 在一些实施例中,步骤1101至步骤1103由IP核或硬件电路模块执行。
[0198] 关于步骤1101,在第三先进先出队列满载的情况下,在从第三先进先出队列获取预处理信息后,根据先进先出队列的原理,从第三先进先出队列获取的预处理信息会从第三先进先出队列中删除,使得第三先进先出队列出现空位,从而后续新的预处理信息便可以输入第三先进先出队列。在第三先进先出队列未满载的情况下,后续新的预处理信息便可以输入第三先进先出队列直到第三先进先出队列满载。
[0199] 在步骤1102中,IP核或硬件电路模块根据预处理信息中的预处理存储地址信息所指示的存储单元中的存储地址获取数据,作为IP核或硬件电路模块的预处理数据。
[0200] 在步骤1103中,IP核或硬件电路模块对从存储单元中获取的预处理数据执行处理,执行处理所使用的参数信息同样来源于预处理信息。
[0201] 在一些实施例中,类型信息和结果存储地址信息相关联,类型信息与结果存储地址信息一起封装在数据包中。图12是根据一示意性实施例示出的根据结果存储地址信息进行数据输出的流程图,如图12所示,步骤1004的根据从第四先进先出队列获取的结果存储地址信息,将结果数据输出至结果存储地址信息指示的存储单元中的存储地址位置,可以包括以下步骤1201至步骤1202。
[0202] 步骤1201、从第四先进先出队列获取结果存储地址信息和类型信息。
[0203] 其中,类型信息和结果存储地址信息关联地存储于第四先进先出队列。
[0204] 步骤1202、依据结果存储地址信息和与其关联的类型信息,将不同输出类型的结果数据分别输出至不同结果存储地址信息所指示的存储单元中的不同存储地址。
[0205] 在一些实施例中,步骤1201和步骤1202由IP核或硬件电路模块执行。
[0206] 关于步骤1201,在第四先进先出队列满载的情况下,在从第四先进先出队列获取结果存储地址信息后,根据先进先出队列的原理,从第四先进先出队列获取的结果存储地址信息会从第四先进先出队列中删除,使得第四先进先出队列出现空位,从而后续新的结果存储地址信息便可以输入第四先进先出队列。在第四先进先出队列未满载的情况下,后续新的预处理信息便可以输入第四先进先出队列直到第四先进先出队列满载。
[0207] 在步骤1202中,由于不同输出类型分别关联于不同的结果存储地址信息,这样输出的结果类型、日志类型、排错类型便可以存储在存储单元中的各个指定的不同存储地址。
[0208] 上述步骤1101至步骤1104的执行可以由软件的方式实现,也可以由硬件的方式实现。在优选实施例中,上述步骤1101至步骤1104的执行由硬件方式实现,其中,硬件方式例如连接于用于执行数据处理的IP核或硬件电路模块的小型集成电路模块,该小型集成电路模块可以是独立的IP核或电路,该小型集成电路模块也可以集成于用于执行数据处理的IP核或硬件电路模块中。
[0209] 图13是根据一示意性实施例示出的对存储单元中的存储地址状态管理的第一实施例流程图,为了配合在IP核或硬件电路模块一侧执行的对预处理数据的获取过程,本公开实施例的数据存取方法还进一步包括了对存储单元中的存储地址针对预处理数据的状态管理流程,如图13所示,该流程主要包括以下步骤:
[0210] 步骤1301、响应于存储有预处理数据的存储地址的入列调用,将存储单元中的存储有预处理数据的存储地址,置于列队等待状态;
[0211] 步骤1302、将输入第三先进先出队列的预处理信息指示的存储地址,由列队等待状态置为激活状态,使得处于激活状态的存储地址位置存储的预处理数据可被获取;
[0212] 步骤1303、响应于处于激活状态的存储地址所存储的预处理数据的获取完成,将该处于激活状态的存储地址由激活状态置于完成状态;
[0213] 步骤1304、响应于第一释放指示,将处于完成状态的存储地址位置由完成状态置于出列状态,其中,处于出列状态的存储地址位置可存储新的预处理数据;
[0214] 步骤1305、响应于处于出列状态的存储地址位置的入列调用,将该处于出列状态的存储地址由出列状态置于列队等待状态。
[0215] 其中,在步骤1301和步骤1305中,列队等待状态表示处于该列队等待状态的存储地址的预处理数据将要由IP核或硬件电路模块进行处理,此时,该存储地址位置的预处理数据处于等待由IP核或硬件电路模块读取的状态,在一些实施例中,该存储地址位置的预处理数据此时禁止修改或删除。
[0216] 在步骤1302中,激活状态表示处于该激活状态的存储地址中的预处理数据所关联的预处理信息已经输入第三先进先出队列并且该存储地址中的预处理数据可供IP核或硬件电路模块获取。
[0217] 在步骤1303中,完成状态表示IP核或硬件电路模块已经完成对该存储地址的预处理数据的获取。
[0218] 在步骤1304中,出列状态表示处于出列状态的存储地址中的预处理数据不再需要供IP核或硬件电路模块获取,对于IP核或硬件电路模块而言,处于出列状态的存储地址位置处于释放状态,此时该存储地址中的预处理数据可以被删除并存储新的数据,例如可以存储新的预处理数据或者存储其它IP核或硬件电路模块的预处理数据或者存储除预处理数据以外的其他数据,具体该存储地址位置后续的用途可以由驱动程序进行配置管理。其中,第一释放指示,例如可以是IP核或硬件电路模块向执行驱动程序的中央处理单元发送的中断信号。
[0219] 在步骤1305中,入列调用表示存储地址中的数据将作为预处理数据由IP核或硬件电路模块获取并处理。
[0220] 图14是根据一示意性实施例示出的对存储单元中的存储地址状态管理的第二实施例流程图,为了配合在IP核或硬件电路模块一侧执行的对结果数据的输出过程,本公开实施例的数据存取方法还进一步包括了对存储单元中的存储地址针对结果数据的状态管理流程,如图14所示,该流程主要包括以下步骤:
[0221] 步骤1401、响应于存储单元中的预存储结果数据的存储地址的入列调用,将预存储结果数据的存储地址,置于列队等待状态;
[0222] 步骤1402、将输入第四先进先出队列的结果存储地址信息指示的存储地址,由列队等待状态置为激活状态,使得结果数据可被输出至处于激活状态的存储地址进行存储;
[0223] 步骤1403、响应于处于激活状态的存储地址的结果数据的存储完成,将处于激活状态的存储地址由激活状态置于完成状态;
[0224] 步骤1404、响应于第二释放指示,将处于完成状态的存储地址位置由完成状态置于出列状态;
[0225] 步骤1405、响应于处于出列状态的存储地址位置的入列调用,将该处于出列状态的存储地址位置由出列状态置于列队等待状态。
[0226] 其中,在步骤1401和步骤1405中,列队等待状态表示IP核或硬件电路模块的结果数据将要存储至处于列队等待状态的存储地址,此时,该存储地址位置处于等待IP核或硬件电路模块写入数据的状态,在一些实施例中,该处于列队等待状态的存储地址位置的此时禁止数据的写入操作。
[0227] 在步骤1402中,激活状态表示将要存储至该激活状态的存储地址的结果数据的结果存储地址信息已经输入第四先进先出队列,此时该存储地址位置可供IP核或硬件电路模块的结果数据进行存储。
[0228] 在步骤1403中,完成状态表示IP核或硬件电路模块已经完成对该存储地址位置的结果数据的存储。
[0229] 在步骤1404中,出列状态表示处于出列状态的存储地址的预处理数据不再需要供IP核或硬件电路模块进行结果数据的存储,对于IP核或硬件电路模块而言,处于出列状态的存储地址处于释放状态,此时该存储地址中的结果数据可以被其它IP核或硬件电路模块作为预处理数据进行获取,此时该存储地址中的结果数据也可以被删除并存储新的数据,具体该存储地址后续的用途可以由驱动程序进行配置管理。其中,第二释放指示,例如可以是IP核或硬件电路模块向执行驱动程序的中央处理单元发送的中断信号。
[0230] 在步骤1405中,入列调用表示该存储地址位置将作为IP核或硬件电路模块的结果数据的存储位置而被使用。
[0231] 本公开实施例的数据存取方法中,步骤1301至步骤1305、步骤1401至步骤1405结合于步骤1001至步骤1004,实现了在IP核或硬件电路模块一侧的数据存取和存储单元一侧存储地址分配管理的协调统一,有利于多个IP核或硬件电路模块的硬件标准的统一,有利于针对多个IP核或硬件电路模块的接口驱动程序的一致性开发,有利于芯片集成的简化,有利于降低集成难度,有利于芯片软件驱动编写,有利于减少或消除潜在的bug,有利于片上系统运行的稳定性的提升。
[0232] 图15是根据一示意性实施例示出的一种数据存取装置逻辑结构示意图,如图15所示,该数据存取装置包括离线输入模块1501、离线输出模块1502、处理模块1503和数据接口模块1504。
[0233] 其中,离线输入模块1501用于获取预处理数据的预处理信息并将预处理信息输入第三先进先出队列。离线输出模块1502用于获取结果数据的结果存储地址信息并将结果存储地址信息输入第四先进先出队列。处理模块1503用于从第三先进先出队列获取预处理信息,根据预处理信息从预处理信息指示的存储单元中的存储地址获取预处理数据并对预处理数据进行处理得到结果数据,从第四先进先出队列获取结果存储地址信息,根据结果存储地址信息将结果数据输出至结果存储地址信息指示的存储单元中的存储地址。数据接口模块1504用于提供离线输入模块1501、离线输出模块1502、处理模块1503与数据总线之间的数据收发接口,其中,存储单元连接于数据总线。
[0234] 其中,离线输入模块1501包括输入处理模块15011和第三先进先出队列模块15012。其中,输入处理模块15011用于获取预处理信息。第三先进先出队列模块15012用于保存第三先进先出队列,并向处理模块1503提供第三先进先出队列中的预处理信息。
[0235] 其中,离线输出模块1502包括输出处理模块15021和第四先进先出队列模块15022。其中,输出处理模块15021用于获取结果存储地址信息。第四先进先出队列模块
15022用于保存结果存储地址信息,并向处理模块1503提供第四先进先出队列中的结果存储地址信息。
[0236] 图16是根据一示意性实施例示出的一种数据存取系统逻辑结构示意图,如图16所示,该数据存取系统包括存储单元1601、中央处理单元1602和数据存取装置1603。
[0237] 其中,存储单元1601、中央处理单元1602和数据存取装置1603通过数据总线连接。其中,数据存取装置1603为上述实施例以及图8所示的数据存取装置,数据存取装置1603的数量为至少一个,例如图16所示中的至少两个。存储单元1601用于在数据离线传递模式中存储至少两个数据处理单元之间传递的数据,其中,至少两个数据处理单元中包括至少一个数据存取装置1603。中央处理单元1602用于对存储单元1601中的存储地址进行管理,向数据存取装置1603提供预处理信息和结果存储地址信息。
[0238] 其中,处理单元1503为对预处理数据进行处理而获得结果数据,以实现设计功能的模块,例如图1所示中的各个功能模块。
[0239] 在一些实施例中,中央处理单元1602还用于:
[0240] 响应于存储有预处理数据的存储地址的入列调用,将存储单元中的存储有预处理数据的存储地址,置于列队等待状态;
[0241] 将输入第三先进先出队列的预处理信息指示的存储地址,由列队等待状态置为激活状态,使得处于激活状态的存储地址位置存储的预处理数据可被获取;
[0242] 响应于处于激活状态的存储地址所存储的预处理数据的获取完成,将该处于激活状态的存储地址由激活状态置于完成状态;
[0243] 响应于第一释放指示,将处于完成状态的存储地址位置由完成状态置于出列状态,其中,处于出列状态的存储地址位置可存储新的预处理数据;
[0244] 响应于处于出列状态的存储地址位置的入列调用,将该处于出列状态的存储地址由出列状态置于列队等待状态。
[0245] 在一些实施例中,中央处理单元1602还用于:
[0246] 响应于存储单元中的预存储结果数据的存储地址的入列调用,将预存储结果数据的存储地址,置于列队等待状态;
[0247] 将输入第四先进先出队列的结果存储地址信息指示的存储地址,由列队等待状态置为激活状态,使得结果数据可被输出至处于激活状态的存储地址进行存储;
[0248] 响应于处于激活状态的存储地址的结果数据的存储完成,将处于激活状态的存储地址由激活状态置于完成状态;
[0249] 响应于第二释放指示,将处于完成状态的存储地址位置由完成状态置于出列状态;
[0250] 响应于处于出列状态的存储地址位置的入列调用,将该处于出列状态的存储地址位置由出列状态置于列队等待状态。
[0251] 上述中央处理单元1602的功能,通过软件管理驱动完成。
[0252] 其中,存储单元1601中分配存储空间,所述存储空间中包括离线数据缓存区域、至少两个输入队列和至少两个输出队列。
[0253] 关于上述实施例中的数据存取装置、数据存取系统,其中各个单元执行操作的具体方式已经在有关该数据存取方法的实施例中进行了详细描述,此处将不作详细阐述说明。
[0254] 本公开实施例的数据存取方法、装置和系统,针对集成电路内部各模块之间离线数据传输设计接口不统一,导致设计中整体集成、验证以及软件驱动编写复杂进而导致风险和成本增加的问题,做出了相应的改进,统一了集成电路内部各模块之间离线数据的传输方式。本公开实施例还对多路预处理数据和多路结果数据进行了综合考虑,将用于执行处理的多路预处理数据的所有存储地址打包成预处理存储地址信息,将不同类型的结果数据的所有存储地址打包成结果存储地址信息。另外,使用了先进先出队列的方式,配合驱动程序对存储地址的管理,使得先进先出队列能够灵活分配离线缓冲、更灵活地调整软硬件的交互频次。
[0255] 在本公开实施例中,参见图15、图16所示,每一个数据存取装置1603可以是独立IP核或硬件电路模块,按照数据处理的流水线的流程,数据先后经过的两个相邻的数据存取装置1603之间,前一个数据存取装置1603可称为前级模块,后一个数据存取装置1603可称为后级模块,如图16所示中,可将左侧的数据存取装置1603称为前级模块,并将右侧的数据存取装置1603称为后级模块。
[0256] 在一些实施例中,在所有模块均采用本公开的数据存取装置1603的方案的情况下,所有模块内均含有同样的离线输入模块1501和离线输出模块1502,离线输入模块1501和离线输出模块1502为硬件电路模块或IP核的形式。离线输入模块1501中包括输入处理模块15011和第三先进先出队列模块15012;离线输出模块1502包括输出处理模块15021和第四先进先出队列模块15022。
[0257] 图17是根据一示意性实施例示出的先进先出队列的结构示意图,其中,参数配置模块1701对应于输入处理模块15011和/或输出处理模块15021,先进先出模块1702对应于第三先进先出队列模块15012和/或第四先进先出队列模块15022,以下关于先进先出队列的说明可结合图15、图16和图17所示。
[0258] 输入处理模块15011可用于通过数据接口模块1504从中央处理单元1602获取一次批量处理的所有预处理数据在存储单元1601中的预处理存储地址信息和该一次批量处理所需要的参数信息,该一次批量处理的预处理数据可以是多个前级模块提供的多路结果数据,也可以是单个前级模块提供的单路结果数据,输入处理模块15011将预处理存储地址信息和参数信息汇总成预处理数据的预处理信息给第三先进先出队列模块15012,由第三先进先出队列模块15012存入第三先进先出队列。
[0259] 第三先进先出队列模块15012用于将预处理数据的预处理信息压入第三先进先出队列的尾部,在处理模块1503开启一次新的数据处理过程时,第三先进先出队列模块15012将第三先进先出队列的队头的早先压入第三先进先出队列的预处理信息取出,解析出预处理信息中的预处理存储地址信息和参数信息并提供给处理模块1503,处理模块1503根据获得的预处理存储地址信息从存储单元1601中获取预处理数据并执行新一次的数据处理过程。
[0260] 输出处理模块15021可用于通过数据接口模块1504从中央处理单元1602获取一次批量处理得到的所有结果数据在存储单元1601中的结果存储地址信息和该一次批量处理得到的结果数据的类型信息,该一次批量处理的得到的结果数据可以是向多个后级模块提供的多路结果数据,也可以是向单个后级模块提供的单路结果数据,对于多路结果数据的结果存储地址信息包括每路结果数据各自对应的存储地址,输出处理模块15021将结果存储地址信息和类型信息汇总成结果数据的结果存储地址信息给第四先进先出队列模块15022,由第四先进先出队列模块15022存入第四先进先出队列。
[0261] 第四先进先出队列模块15022用于将结果数据的结果存储地址信息压入第四先进先出队列的尾部,在处理模块1503完成一次数据处理过程时,从第四先进先出队列的队头的早先压入第四先进先出队列的结果存储地址信息取出,将结果数据输出至结果存储地址信息中指定的存储单元1601中的存储地址。
[0262] 在处理模块1503需要的预处理数据的存储地址不止一个(预处理数据来源于多路前级模块)的情况下,在输入处理模块15011获取的预处理信息中的预处理存储地址信息可以同时包括存储本次处理模块1503处理的所有预处理数据的存储地址,在处理模块1503的结果数据的存储地址不止一个(输出多路结果数据给多路后级模块)时,在输出处理模块15021获取的结果存储地址信息的存储地址信息中的结果存储地址信息可以同时包括存储本次处理模块1503处理得到的所有结果数据的存储地址。基于此,本公开实施例不仅适用流水线中单模块到单模块间的离线数据传输,同时也适用于单模块到多模块、多模块到单模块的离线数据传输。
[0263] 存储单元1601通常可以是片内或片外的静态随机存取存储器或者双倍速率同步动态随机存储器,存储单元1601可以保存数据存取装置1603处理所需要或产生的离线数据,其中数据存取装置1603处理所需要的离线数据为预处理数据,数据存取装置1603处理产生的离线数据为结果数据。
[0264] 中央处理单元1602在数据存取装置1603初始化时,对关于预处理数据和结果数据的第三先进先出队列和第四先进先出队列初始化,写入预设的参数和离线地址。当处理模块1503从第三先进先出队列或者第四先进先出队列读出一次预处理信息或者结果存储地址信息时,数据存取装置1603会产生中断信号给中央处理单元1602。中央处理单元1603收到中断信号后进入中断处理服务进程,将下一次数据存取装置1603处理需要的预处理数据的预处理信息和结果数据的结果存储地址信息送入第三先进先出队列和第四先进先出队列中。
[0265] 本公开实施例在数据存取装置1603中利用第三先进先出队列和第四先进先出队列对预处理数据的预处理信息和结果数据的结果存储地址信息,能够解决软件(如驱动程序)不能每次传输都实时配置参数和地址的需求,本公开实施例将预处理数据的预处理信息和结果数据的结果存储地址信息以先进先出队列形式在数据存取装置1603侧保存能够降低软硬件交互的实时性,从而可辅助降低驱动程序对高实时性要求的需求,降低驱动程序的实现难度,并降低芯片或集成电路运行过程中的出错率。
[0266] 图18是根据一示意性实施例示出的配合于先进先出队列对存储单元中存储地址的状态进行管理的示意图,如图18所示,配合于数据存取装置中的硬件形式的先进先出队列(例如第三先进先出队列),可以预先通过软件(如驱动程序)分配对应于先进先出队列(例如第三先进先出队列)的离线数据(例如预处理数据)的缓冲(Buffer)的个数。可根据数据存取装置的实时性需求和系统整体内存使用情况考虑,动态增加和减少相关内存配置,为应用提供了灵活便利性。同时配置给数据存取装置中的硬件形式的先进先出队列的缓冲的个数也可以是灵活可配的,根据不同IP核或硬件电路模块(数据存取装置)设计缓冲(Buffer)的个数和实时性需求,软件(驱动程序)可以在不修改通用驱动框架情况下仅调整关于数据存取装置中硬件先进先出队列的上限参数以满足适配各种硬件模块的需求。
[0267] 如图18、图13、图14所示,并结合上述对存储单元中的存储地址状态管理的第一实施例流程和第二实施例流程,在“硬件先进先出队列”区域部分中的缓冲(Buffer)是当前配置给硬件先进先出队列的缓冲(Buffer),此时在“硬件先进先出队列”中的缓冲(Buffer)的存储地址存储在了数据存取装置的第三先进先出队列(对于缓冲(Buffer)用于存储预处理数据的情况)或者第四先进先出队列(对于缓冲(Buffer)用于存储结果数据的情况)。而在整个缓冲(Buffer)队列中,包含出列状态(dequeued)、列队等待状态(queued)、激活状态(active)、完成状态(done),所有软件(驱动程序)将这些状态预先分配给各个缓冲(Buffer),这些缓冲(Buffer)均是软件(驱动程序)从系统内存中预先申请的,并在软硬件交互过程中实现不同的作用。
[0268] 本公开实施例的数据存取方法、装置和系统,针对集成电路内部各模块之间离线数据传输设计接口不统一,导致设计中整体集成、验证以及软件驱动编写复杂进而导致风险和成本增加的问题,将离线数据的多个地址打包统一发送给作为数据存取装置的集成电路内部的离线数据处理模块进行。同时,作为数据存取装置的集成电路内部的离线数据处理模块的输入接口和输出接口使用统一的硬件形式的先进先出队列,配合软件驱动对存储单元中缓冲(Buffer)的调度,实现了离线数据缓冲(Buffer)的分配、大小、调度的灵活配置,并优化了软硬件的交互频次。并且本公开还能够支持模块间的多路离线数据的输入和输出。
[0269] 本公开实施例还提供了一种电子设备,其结构参见图9所示,其中,该存储器902中存储有至少一条程序代码,该至少一条程序代码由该处理器901加载并执行以实现上述各个实施例提供的数据存取方法。
[0270] 在示例性实施例中,还提供了一种包括至少一条指令的计算机可读存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由计算机设备中的处理器执行以完成上述实施例中的数据存取方法。
[0271] 可选地,上述计算机可读存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以包括ROM(Read‑Only Memory,只读存储器)、RAM(Random‑Access Memory,随机存取存储器)、CD‑ROM(Compact Disc Read‑Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
[0272] 以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。