RISC-V架构的SoC系统、全栈协同架构及图像压缩方法

摘要: 本发明涉及一种risc-v架构的soc系统、全栈协同架构及图像压缩方法,属于图像数据处理、硬件加速和嵌入式系统。背景技术:1、随着人工智能视觉技术与边缘智能设备...
RISC-V架构的SoC系统、全栈协同架构及图像压缩方法

本发明涉及一种risc-v架构的soc系统、全栈协同架构及图像压缩方法,属于图像数据处理、硬件加速和嵌入式系统。

背景技术:

1、随着人工智能视觉技术与边缘智能设备的快速发展,嵌入式系统所需处理的图像数据量急剧增加。在图像采集、缓存、视觉预处理及边缘ai推理等场景中,图像数据需在处理器、存储器及外部设备之间进行高频传输。由于原始图像数据体量庞大,上述传输过程极易导致存储带宽占用过高、数据搬运频繁以及cpu负载过重等问题。

2、目前主流的图像压缩与解压方案多采用软件实现,即由cpu执行压缩与解压算法。该类方案虽实现简单、灵活性较高,但在嵌入式应用场景下,面对大规模图像数据或高实时性需求时,cpu需承担大量的像素比对、差分计算、码流拼接及解码恢复等操作,导致执行周期延长、系统响应迟滞,严重挤占cpu对其他任务的处理资源。

3、虽然硬件加速方案可利用并行计算架构提升处理效率,但现有的图像压缩硬件模块多仅实现孤立的电路功能,缺乏与处理器、操作系统、设备驱动及用户应用程序之间的全栈协同调用链路,难以直接适配运行嵌入式linux系统的soc平台。

4、risc-v架构凭借其开源、精简及强可扩展性的优势,适宜构建面向特定领域的专用soc平台。然而,通用risc-v处理器在执行图像压缩与解压任务时,仍存在计算效率低下及数据搬运开销过大等瓶颈。因此,亟需一种能够适配risc-v soc平台,并融合linux软件生态与专用硬件协处理能力的图像无损压缩与解压技术方案。

技术实现思路

1、有鉴于此,本发明提供了一种risc-v架构的soc系统、全栈协同架构及图像压缩方法,其旨在解决现有嵌入式平台中图像压缩与解压任务主要依赖cpu执行而导致的计算开销大、存储带宽压力高、数据搬运频繁以及软硬件协同调用不完整的技术问题。

2、本发明的第一个目的在于提供一种risc-v架构的soc系统。

3、本发明的第二个目的在于提供一种全栈协同架构。

4、本发明的第三个目的在于提供一种图像压缩方法。

5、本发明的第一个目的可以通过采取如下技术方案达到:

6、一种risc-v架构的soc系统,所述soc系统包括:

7、risc-v处理器;

8、ioi协处理器,与所述risc-v处理器连接,用于执行图像压缩和解压操作;

9、存储模块,通过系统总线与所述risc-v处理器和所述ioi协处理器耦合;

10、外设接口模块,通过外设总线与所述risc-v处理器耦合;

11、直接内存访问控制器,用于在存储模块与外设之间执行数据搬移,所述risc-v处理器通过总线接口配置所述直接内存访问控制器的数据源地址、目的地址、传输长度及传输模式,以由所述直接内存访问控制器独立完成数据传输;

12、其中,所述risc-v处理器通过自定义扩展指令与所述ioi协处理器交互,所述自定义扩展指令包括模式配置指令、任务启动指令和结果读取指令,所述ioi协处理器根据所述自定义扩展指令完成相应的操作;

13、其中,所述ioi协处理器采用的压缩算法在qoi编码的基础上新增a通道差分编码模式,用以适配argb图像数据特征,所述a通道差分编码模式根据标志位和差分数值进行编码,所述差分数值根据前一像素的通道数据和当前像素的通道数据计算而得。

14、进一步的,所述ioi协处理器包括:

15、中央处理器接口,用于接收所述risc-v处理器发送的自定义扩展指令;

16、指令译码与配置寄存器,用于解析所述自定义扩展指令,并存储任务类型、输入数据地址、输入数据长度和图像块规模;

17、状态机控制模块,用于根据所述指令译码与配置寄存器中的配置参数,控制所述ioi协处理器在压缩状态、解压状态、读写数据状态和空闲状态之间切换;

18、输入静态随机存取存储器,用于缓存待处理数据,在所述压缩状态下缓存原始图像块数据,在所述解压状态下缓存待解压码流;

19、ioi编码器,用于在所述压缩状态下对所述原始图像块数据执行压缩编码;

20、ioi解码器,用于在所述解压状态下对所述待解压码流执行解码恢复;

21、输出静态随机存取存储器,用于缓存所述ioi编码器输出的压缩码流或所述ioi解码器恢复的图像数据;

22、数据格式转换模块,用于完成ioi协处理器内部数据格式与系统存储访问格式之间的转换;

23、内部总线接口,用于连接所述系统总线,实现输入数据的读取和输出结果的写回。

24、进一步的,所述ioi编码器包括:

25、差值计算单元,用于计算当前像素a、r、g、b四通道相对于前一像素的差值δa、δr、δg、δb;

26、模式决策单元,用于根据δa、δr、δg、δb与预设范围的比较结果,从多种a通道差分编码模式中选定最优编码模式;

27、码流拼接单元,用于根据所述最优编码模式将模式标识与编码模式对应的编码参数打包为符合格式定义的压缩码流。

28、进一步的,所述多种a通道差分编码模式包括adiff1模式、adiff2模式、adiff3模式、adiff4模式、adiff5模式、adiff6模式、adiff7模式和adiff8模式;

29、所述根据δa、δr、δg、δb与预设范围的比较结果,从多种a通道差分编码模式中选定最优编码模式,包括:

30、当当前像素的四通道差值均处于第一预设范围时,选择所述adiff1模式进行编码;

31、当当前像素的四通道差值均处于第二预设范围且不处于第一预设范围时,选择所述adiff2模式进行编码;

32、当不满足adiff1模式和adiff2模式的选择条件时,确定r、g、b、a四个通道中差分值处于第二预设范围内的两个通道,对所述两个通道采用4位差分数据编码、对其余两个通道采用8位差分数据编码,并根据编码组合选择adiff3至adiff8模式中的对应模式;

33、当不满足所述多种a通道差分编码模式的条件时,回退至rgb模式或rgba模式。

34、进一步的,所述ioi编码器的编码模式包括index模式、diff模式、luma模式、rgb模式、rgba模式、run模式和adiff模式,其中,所述adiff模式为针对a通道设置的差分编码模式。

35、进一步的,所述ioi解码器在解压过程中根据压缩码流中的编码标志位识别当前编码模式,并按照对应规则恢复像素数据:

36、对于所述index模式,从历史像素表中读取对应像素;

37、对于所述run模式,重复输出前一像素;

38、对于所述diff模式、所述luma模式和所述adiff模式,根据码流中解析出的各通道差分值恢复当前像素;

39、对于所述rgb模式或所述rgba模式,读取完整通道数据。

40、进一步的,所述risc-v处理器为nuclei e603处理器,所述ioi协处理器通过专用协处理器通道与所述nuclei e603处理器连接。

41、进一步的,所述risc-v处理器用于运行嵌入式linux系统。

42、本发明的第二个目的可以通过采取如下技术方案达到:

43、一种根据所述soc系统实现的全栈协同架构,所述架构包括:

44、用户态层,包括应用程序,所述应用程序负责准备不同规模的图像块数据,并通过系统调用向内核态层提交任务请求,以传递任务类型、图像块规模、输入数据地址、输入数据长度和输出数据地址,所述任务类型包括压缩任务和解压任务;

45、内核态层,负责接收用户态层的传递参数,完成地址转换、任务检查和硬件调用,所述地址转换将用户缓冲区对应的数据地址转换为硬件可访问的物理地址;

46、指令接口层,设置于所述内核态层与所述硬件层之间,包括模式配置指令、任务启动指令和结果读取指令;所述内核态层通过所述模式配置指令向所述ioi协处理器配置任务类型和图像块规模,通过所述任务启动指令传入待处理数据的物理地址和数据长度并启动任务,以及通过所述结果读取指令传入结果写回地址并获取处理结果长度;

47、硬件层,包括所述risc-v处理器、所述ioi协处理器、所述外设接口模块、所述存储模块和所述直接内存访问控制器。

48、本发明的第三个目的可以通过采取如下技术方案达到:

49、一种根据所述soc系统实现的图像压缩方法,所述方法包括:

50、所述risc-v处理器通过模式配置指令,向所述ioi协处理器配置压缩模式和图像块规模;

51、所述risc-v处理器通过任务启动指令,将原始图像块数据的物理地址发送至所述ioi协处理器,并启动压缩任务;

52、所述ioi协处理器从多种编码模式中选择码流长度最短的编码模式进行编码;

53、所述ioi协处理器将编码后的压缩码流通过内部总线接口写回存储模块;

54、所述risc-v处理器通过结果读取指令,向所述ioi协处理器传入压缩码流的写回地址,并获取所述压缩码流的长度。

55、本发明相对于现有技术具有如下的有益效果:

56、(1)本发明实施例定义了一种基于risc-v处理器构建的图像无损压缩与解压soc平台,支持在嵌入式linux环境下完成图像数据处理,提升了系统集成度与架构完整性;

57、(2)本发明实施例采用ioi协处理器执行图像压缩与解压核心计算,规避了cpu逐像素处理的性能瓶颈,显著提升了图像数据处理效率;

58、(3)本发明实施例在qoi编码模式的基础上,扩展了面向argb图像的a通道差分编码模式(adiff),增强了算法对多通道图像数据的适配性;

59、(4)本发明实施例通过linux内核驱动结合risc-v自定义扩展指令集调用ioi协处理器,实现了软硬件协同的全栈调用机制,构建了完整的系统调用链路。