CN112783555A - 基于risc-v向量扩展指令的编码处理方法及装置、存储介质 - Google Patents

基于risc-v向量扩展指令的编码处理方法及装置、存储介质 Download PDF

Info

Publication number
CN112783555A
CN112783555A CN201911096194.9A CN201911096194A CN112783555A CN 112783555 A CN112783555 A CN 112783555A CN 201911096194 A CN201911096194 A CN 201911096194A CN 112783555 A CN112783555 A CN 112783555A
Authority
CN
China
Prior art keywords
instruction
image processing
vector
processing acceleration
acceleration instruction
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
Application number
CN201911096194.9A
Other languages
English (en)
Inventor
寇楠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanechips Technology Co Ltd
Original Assignee
Sanechips Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sanechips Technology Co Ltd filed Critical Sanechips Technology Co Ltd
Priority to CN201911096194.9A priority Critical patent/CN112783555A/zh
Priority to PCT/CN2020/124142 priority patent/WO2021093582A1/zh
Publication of CN112783555A publication Critical patent/CN112783555A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明提供了一种基于RISC‑V向量扩展指令的编码处理方法及装置、存储介质,其中,上述方法包括:将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC‑V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;根据所述基本操作函数确定图像处理加速指令;根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。采用上述技术方案,解决了相关技术中,RISC‑V指令集中缺少OpenVX计算机视觉应用底层加速标准中的相关指令等问题。

Description

基于RISC-V向量扩展指令的编码处理方法及装置、存储介质
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种基于RISC-V向量扩展指令的编码处理方法及装置、存储介质。
背景技术
RISC-V指令集(RISC-V instruction set architecture,简称RISC-V)是一种开放的精简指令集架构,它秉承RISC设计哲学以及计算机体系结构几十年发展积累的经验和教训,设计了一套精巧的指令集架构,基本整数指令只有40多条,模块化的标准扩展指令子集有M/A/F/D/C/B/P/V等,可面向不同的应用领域,另外预留编码空间custom0-3组,供用户自定义指令,加速和增强设计。
目前RISC-V标准向量Vector扩展包括向量加,减,乘,乘累加,按位逻辑与,或,异或,比较,移位,min/max,permutation等向量指令,指令长度固定为32bit,32个通用向量寄存器,条件屏蔽寄存器Predicate以及相关控制状态寄存器CSR,支持指令条件执行,多种访存模式单步unit-stride,跨步strided,索引scatter/gather等,另外,比较显著地是支持动态类型dynamic typing,通过vselvl/vselvli设置向量长度和元素位宽,节省编码空间,支持混合精度,并保持不同向量长度下软件的兼容性。
OpenVX是由Khronos国际标准组织发布的,开放的,跨平台的计算机视觉应用底层加速标准,其中定义了基本的视觉函数API。OpenVX的函数算子按照所要处理的数据对象的不同,大致分为:
1、按像素处理,如逻辑操作与,或,异或,取反,算术操作加,减,乘,加权累加,绝对差,查找表,阈值,位深转换等;
2、窗口处理,如BOX滤波,膨胀Dilate,腐蚀Erode,高斯滤波,Sobel滤波,中值滤波等;
3、按图像处理,如直方图,直方图均衡,通道合并/抽取,图像缩放,积分图像,仿射变换,透视变换等;
以及在边缘和角点检测中常用到的梯度和相位计算,非极大值限制等。
这些函数算子的底层硬件架构由各厂商确定和实现,常见的实现方式有专用DSP和专用硬件加速模块。
专用数字信号处理器(digital signal processor,简称DSP),如CEVA XM系列、Cadence Tensilica Vision系列等,这种基于软件的处理方式,虽然编程应用灵活,但面临不菲的商用IP使用成本,并且随着标准演进以及应用升级,不易进行扩展和增强。
专用硬件加速模块,针对特定的应用和平台在面积和性能方面可以做到较好的优化,但通用性差,不具备可编程性,不易于移植和复用。
针对相关技术中,RISC-V指令集中缺少OpenVX计算机视觉应用底层加速标准中的相关指令等问题,尚未提出有效的技术方案。
发明内容
本发明实施例提供了一种基于RISC-V向量扩展指令的编码处理方法及装置、存储介质,以至少解决相关技术中,RISC-V指令集中缺少OpenVX计算机视觉应用底层加速标准中的相关指令等问题。
根据本发明的一个实施例,提供了一种基于RISC-V向量扩展指令的编码处理方法,包括:将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;根据所述基本操作函数确定图像处理加速指令;根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
可选地,所述根据预设编码规则对所述图像处理加速指令的编码格式进行处理,包括:获取所述图像处理加速指令的编码格式;根据预设编码规则在向量处理器中对所述图像处理加速指令的编码格式进行处理。
可选地,在所述根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致之后,所述方法还包括:在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能;根据所述图像处理加速指令对应的功能执行图像处理任务。
可选地,所述向量处理器包括:程序控制单元PCU,标量处理单元SPU,向量处理单元VPU,所述在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能,包括:在通过所述程序控制单元PCU根据所述预设编码规则识别出所述图像处理加速指令之后,向所述标量处理单元SPU和/或所述向量处理单元VPU发送所述图像处理加速指令;通过所述标量处理单元SPU和/或所述向量处理单元VPU确定所述图像处理加速指令对应的指令类型;在确定所述图像处理加速指令对应的指令类型之后,根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能。
可选地,所述图像处理加速指令的指令类型至少包括以下之一:运算类指令、访存类指令,所述根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能至少包括以下之一:在所述图像处理加速指令的指令类型为所述运算类指令的情况下,根据所述运算类指令使所述图像处理加速指令实现所述图像处理加速指令对应的运算功能;在所述图像处理加速指令的指令类型为所述访存类指令的情况下,根据所述访存类指令使所述图像处理加速指令实现所述图像处理加速指令对应的访存功能。
可选地,所述图像处理加速指令至少包括以下之一:直方图指令,阈值指令,中值指令,滑窗乘累加指令。
根据本发明的另一个实施例,还提供了一种基于RISC-V向量扩展指令的编码处理装置,包括:第一处理模块,用于将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;确定模块,用于根据所述基本操作函数确定图像处理加速指令;第二处理模块,用于根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
可选地,所述第二处理模块,还用于获取所述图像处理加速指令的编码格式;根据预设编码规则在向量处理器中对所述图像处理加速指令的编码格式进行处理。
根据本发明的另一个实施例,还提供了一种计算机可读的存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行以上任一项所述的基于RISC-V向量扩展指令的编码处理方法。
根据本发明的另一个实施例,还提供了一种电子装置,所述存储介质包括存储的程序,其中,所述程序运行时执行以上任一项所述的基于RISC-V向量扩展指令的编码处理方法。
通过本发明,向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;根据所述基本操作函数确定图像处理加速指令;根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。采用上述技术方案,解决了相关技术中,RISC-V指令集中缺少OpenVX计算机视觉应用底层加速标准中的相关指令等问题。通过上述技术方案,在向量扩展指令包括:RISC-V指令集的操作指令,标准函数算子包括:OpenVX计算机视觉应用底层加速标准的操作指令的情况下,通过将向量扩展指令和标准函数算子进行对比,可以确定向量扩展指令和标准函数算子之间不一致的操作指令(即向量扩展指令在标准函数算子中所缺少的操作指令),从而得到图像处理加速指令,进而通过预设编码规则对图像处理加速指令的编码格式进行处理,最终使图像处理加速指令的编码格式与向量扩展指令的编码格式一致,能够达到在OpenVX的标准下扩展RISC-V指令集中的操作指令的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的基于RISC-V向量扩展指令的编码处理方法的终端的硬件结构框图;
图2是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理方法的流程图;
图3是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理方法的另一流程图;
图4是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理方法的整体结构框图;
图5是本发明实施例提供的一种可选的vhist指令编码的示意图;
图6是本发明实施例提供的一种可选的vthrsh指令编码的示意图;
图7是本发明实施例提供的一种可选的vmed指令编码的示意图;
图8是本发明实施例提供的一种可选的滑窗操作示意图;
图9是本发明实施例提供的一种可选的vswmac指令编码的示意图;
图10是本发明实施例提供的一种可选的vswmac指令执行的示意图;
图11是本发明实施例提供的一种可选的基于滑窗指令的5x5滤波汇编程序示例的示意图;
图12是本发明实施例提供的一种可选的主协处理器结构示意图;
图13是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理装置的结构框图;
图14是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理装置的另一结构框图;
图15是根据本发明实施例一种可选的第三处理模块的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是根据本发明实施例的一种可选的基于RISC-V向量扩展指令的编码处理方法的终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的基于RISC-V向量扩展指令的编码处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述图1所示的终端的基于RISC-V向量扩展指令的编码处理方法,图2是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理方法的流程图,如图2所示,该方法包括如下步骤:
步骤S202,将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子:OpenVX计算机视觉应用底层加速标准的常用函数算子;
步骤S204,根据所述基本操作函数确定图像处理加速指令;
步骤S206,根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
通过本发明,向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;根据所述基本操作函数确定图像处理加速指令;根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。采用上述技术方案,解决了相关技术中,RISC-V指令集中缺少OpenVX计算机视觉应用底层加速标准中的相关指令等问题。通过上述技术方案,在向量扩展指令包括:RISC-V指令集的操作指令,标准函数算子包括:OpenVX计算机视觉应用底层加速标准的操作指令的情况下,通过将向量扩展指令和标准函数算子进行对比,可以确定向量扩展指令和标准函数算子之间不一致的操作指令(即向量扩展指令在标准函数算子中所缺少的操作指令),从而得到图像处理加速指令,进而通过预设编码规则对图像处理加速指令的编码格式进行处理,最终使图像处理加速指令的编码格式与向量扩展指令的编码格式一致,能够达到在OpenVX的标准下扩展RISC-V指令集中的操作指令的技术效果。
本发明实施例中,对于上述步骤S204可以通过以下方式实现,所述根据预设编码规则对所述图像处理加速指令的编码格式进行处理,包括:获取所述图像处理加速指令的编码格式;根据预设编码规则在向量处理器中对所述图像处理加速指令的编码格式进行处理。
可选地,在上述步骤S204之后,还可以执行以下操作:即在所述根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致之后,所述方法还包括:在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能;根据所述图像处理加速指令对应的功能执行图像处理任务。
本发明实施例中,所述向量处理器包括:程序控制单元PCU,标量处理单元SPU,向量处理单元VPU,所述在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能,包括:在通过所述程序控制单元PCU根据所述预设编码规则识别出所述图像处理加速指令之后,向所述标量处理单元SPU和/或所述向量处理单元VPU发送所述图像处理加速指令;通过所述标量处理单元SPU和/或所述向量处理单元VPU确定所述图像处理加速指令对应的指令类型;在确定所述图像处理加速指令对应的指令类型之后,根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能。
进一步地,所述图像处理加速指令的指令类型至少包括以下之一:运算类指令、访存类指令,所述根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能至少包括以下之一:在所述图像处理加速指令的指令类型为所述运算类指令的情况下,根据所述运算类指令使所述图像处理加速指令实现所述图像处理加速指令对应的运算功能;在所述图像处理加速指令的指令类型为所述访存类指令的情况下,根据所述访存类指令使所述图像处理加速指令实现所述图像处理加速指令对应的访存功能。
本发明实施例中,为了更清楚的说明所述图像处理加速指令是什么,所述图像处理加速指令至少包括以下之一:直方图指令,阈值指令,中值指令,滑窗乘累加指令。
以下结合一示例对基于RISC-V向量扩展指令的编码处理过程进行解释说明,但不用于限定本发明实施例的技术方案,本发明示例的技术方案如下:
图3是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理方法的另一流程图,如图3所示:
本发明实施例是基于RISC-V向量扩展的OpenVX图像处理加速的方法,具体步骤如下:
需要说明的是,OpenVX函数算子的底层硬件架构是由各厂商确定和实现的,常见的实现方式有专用数字信号处理器DSP和专用硬件加速模块。专用数字信号处理器DSP,如CEVA XM系列、Cadence Tensilica Vision系列等,这种基于软件的处理方式,虽然编程应用灵活,但面临不菲的商用IP使用成本,并且随着标准演进以及应用升级,不易进行扩展和增强。专用硬件加速模块,针对特定的应用和平台在面积和性能方面可以做到较好的优化,但通用性差,不具备可编程性,不易于移植和复用。
步骤S301,对比OpenVX函数算子和RISC-V标准向量扩展指令,提取RISC-V向量指令中缺少的OpenVX基本操作,这些操作将通过专用加速指令来实现。
RISC-V标准向量扩展指令已经包含基本的向量算术和逻辑操作,也有vrgather指令可以实现查找表操作,在此基础上自定义图像处理加速指令(即上述图像处理加速指令),包括直方图指令vhist,阈值指令vthrsh,中值指令vmed,滑窗乘累加指令vswmac等。
步骤S302,利用custom指令组,定义上述加速指令的编码格式和语义方法,尽量与RISC-V向量指令的编码格式保持一致。
步骤S303,在通用RISC-V向量处理器的基础上,根据自定义加速指令的编码格式和语义,硬件上,通过对加速指令的译码和执行实现相应功能。软件上,在gcc工具链中添加自定义指令,包括汇编器,调试器,模拟器等。
步骤S304,在上述软硬件支持下,编写OpenVX函数算子的底层程序,进而实现图像处理算法和应用程序。
以下结合另一示例对基于RISC-V向量扩展指令的编码处理过程进行解释说明,但不用于限定本发明实施例的技术方案,本发明示例的技术方案如下:
图4是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理方法的整体结构框图,如图4所示:
典型向量处理器包括程序控制单元PCU,标量处理单元SPU,向量处理单元VPU和访存单元LSU。其中PCU包括取值,主译码,分发,以及中断和分支预测等,将主译码得到的指令根据标量/向量类型送给SPU或VPU执行。LSU负责标量和向量访存指令对存储空间的读写。
本发明实施例在已有RISC-V向量处理器的基础上,扩展向量处理单元VPU功能,包括对向量译码模块,向量执行模块,地址生成单元的扩展增强,以及在数据访存控制器中增加直方图加速模块。
PCU根据custom编码识别出自定义加速指令,分发给VPU。VPU进一步译码得到指令类型,发送给对应单元执行。阈值指令vthrsh,中值指令vmed,滑窗乘累加vswmac等属于运算类操作,在运算单元执行相应操作。直方图指令vhist属于访存类指令,地址生成单元产生vhist访存地址,直方图加速模块读出该地址的值,加1后再写入该地址,并且保证该操作的原子性,避免在这个过程中其它操作对该地址的访问。
综上,利用RISC-V的指令简洁性,模块化和可扩展性以及开放的生态,扩展RISC-V的操作指令,并将扩展的操作指令应用于图像处理中,能够加速图像处理执行效率,适用于不同的图像处理应用场景,并且避免商用IP成本和风险。
为了更清楚的说明对图像处理加速指令的设计,编码和实现,以下结合一示例对图像处理加速指令的设计,编码和实现过程进行解释说明,但不用于限定本发明实施例的技术方案,本发明示例的技术方案如下:
对照OpenVX常用函数算子以及RISC-V标准向量扩展指令,定义了直方图指令vhist,阈值指令vthrsh,中值指令vmed,滑窗乘累加指令vswmac等几种加速指令,可使用custom 0-3指令组任意一个,这里vswmac采用custom-1指令组,vhist,vthrsh,vmed采用custom-0指令组为例。在对指令进行编码时尽量与RISC-V标准向量指令编码保持一致,降低对原有架构的译码,寄存器访问等变动。这些加速指令也都支持条件执行。以下是对每条加速指令的详细描述:
1.直方图指令vhist:用于统计像素分量在区间bins出现的次数,计算结果可用于直方图均衡算法等。图5是本发明实施例提供的一种可选的vhist指令编码的示意图,对照向量访存指令,vhist指令编码如图5所示,vhist指令定义如下:
vhist rs1,vs2,mod,vm#(rs1+((vs2[i]>>mod)<<2))++;
rs1保存memory基址,vs2保存待统计分量的向量值,mod值用于设置区间大小,这里分量即元素大小考虑8b和16b的情况,所以mod采用4位,对应每个bin大小(1<<mod),比如元素类型为u8,取值范围是0-255,mod取值范围是0-7,当mod=5时,每个bin大小为32,总共有8个bins,统计各向量元素值落在0-31,32-63,64-95,96-127,128-158,...,224-255各区间的次数,当mod=0时,统计向量元素值分别为0,1,2,...,255的次数。vhist指令将基址和元素移位后的值相加作为memory地址,读出该地址的值,加1后,再写入该地址。这组read-modify-write的原子操作通过在数据访存控制模块中加入hist_accel模块来实现。
当mod=5时,向量元素值vs2[i]=65=8’b1000001,rs1=0x100,((8’b1000001>>5)<<2)=(8’b10<<2)=8’b1000,则该元素值落在64-95区间,地址0x108的值加1。
vhist指令也支持条件执行,当vm有效时,如果元素对应的predicate寄存器位为1’b1时,执行上述操作,否则不会向memory更新结果。
2.阈值指令vthrsh:用于对图像的阈值操作或canny边缘检测中的双阈值检测。图6是本发明实施例提供的一种可选的vthrsh指令编码的示意图,vthrsh指令编码如图6所示,指令定义如下:
vthrsh.vx{gt|lt}rs1,vs2,vd,mod,vm#单阈值,type=binary,阈值和true_value保存在rs1中。
vthrsh.vi{gt|lt,limit|truc}vs2,imm0,vd,mod,vm#单阈值,type=binary,imm0为阈值。
vthrshr.vx rs1,vs2,rs3,vd,vm#双阈值,type=range。Upper阈值和对应的true_value保存在rs1中,lower阈值和对应的true_value保存在rs3中。其中,关于vthrsh指令mod位说明,如下表1所示:
Figure BDA0002268416290000131
表1vthrsh指令条件为假时,false_value=vd[i],即保持原目的向量寄存器的值,这样做如果需要false_value为0,源向量寄存器值vs2或其它值,可以在vthrsh指令前,提前对vd赋值或初始化,满足不同应用需要求,比如对于图像的truncation处理,先执行赋值指令vd=vs2,再执行阈值指令,当条件为真时,vd[i]等于阈值,当条件为假时,等于源向量寄存器的值。
3.中值指令vmed,用于中值滤波median3x3,对三个源向量寄存器的对应元素比较得出中间值。RISC-V标准向量扩展指令中仅支持两个元素间的min/max比较,同vmed也可以定义三个元素间加速min/max指令vmin3/vmax3。图7是本发明实施例提供的一种可选的vmed指令编码的示意图,vmed指令编码如图7所示,指令定义如下:
vmed vs1,vs2,vs3,vd,vm#vd[i]=median(vs1[i],vs2[i],vs3[i])
4.滑窗乘累加指令vswmac,sobel滤波,高斯滤波等这类滤波器或卷积核在图像处理应该非常广泛。常见的滤波器大小为3x3/5x5/7x7等。图8是本发明实施例提供的可选的一种滑窗操作示意图,如图8所示,可以看出随着5x5窗口向右滑动,计算出对应元素的滤波值,如黑色、黄色,蓝色,紫色,绿色虚线框,分别计算出第66,67,68,69,70个元素的滤波值。vswmac指令利用滑窗操作,重复利用像素和滤波系数,通过多个并行的乘加运算,减少访存次数,提高运算效率。图9是本发明实施例提供的一种可选的vswmac指令编码的示意图,vswmac指令编码如图9所示,指令定义如下:
vswmac vs1,vs2,rs3,vd,vm;
vswmac中vs1保存输入图像向量,vs2保存滤波系数向量,rs3是配置寄存器,定义如下,其余位保留。通过对rs3的灵活配置,适应不同的窗口大小,运算需求和硬件资源。rs3的定义如下:
rs3[7:0]:vs1的起始偏移input_offset;
rs3[3:0]:滑窗计算次数slide。
rs3[23:16]:vs2的起始偏移coff_offset;
rs3[27:24]:滑窗大小window_size,如3/5/7等;
图10是本发明实施例提供的一种可选的vswmac指令执行的示意图,下面结合图10对vswmac的操作进行说明。
步骤1,通过vld读取输入图像向量和滤波系数,配置滑窗大小,起始偏移,滑动次数,这里为5。
步骤2,从输入向量中选择计算所需的元素,从input_offset到(input_offset+(window_size-1)+slide-1),滤波系数选择从coff_offset到(coff_offset+(window_size-1))
步骤3,对各元素完成相应运算,这里为乘法,也可以扩展成绝对差,减法等。总共包含window_size*slide个乘法运算,这里为25个乘法。
步骤4,对第三步的运算结果进行累加,还可以再进行后处理,比如移位,饱和,阈值等处理,最后写入到目的向量寄存器中。这里以5个为一组对乘法结果累加,总共有5个累加结果,mac00到mac04,写入到vd中。
图11是本发明实施例提供的一种可选的基于滑窗指令的5x5滤波汇编程序示例的示意图,如图11所示,通过5条vswmac计算第0行到第4行,然后对5个目的向量寄存器执行加法操作后,得出mac00-mac40,mac01-mac41,...,mac40-mac44的累加结果,对应第66,67,68,69,70个元素的滤波值。
按照上述方法还可以定义绝对差vabssub,绝对差累加vsad,滑窗绝对差累加vswsad等扩展指令,不再赘述。
以下结合一示例对如何实现图像处理加速过程进行解释说明,但不用于限定本发明实施例的技术方案,本发明示例的技术方案如下:
硬件上在原有RISC-V向量处理器的基础上通过添加或增强以下功能模块实现图像处理加速,具体步骤如下:
步骤1,主译码根据inst[6:0]识别出custom0-1指令组,分发给VPU执行。
步骤2,VPU对coustom0-1指令组进一步译码得出加速指令,送到对应的运算模块执行,如vmed读取源操作数,通过比较运算得出向量间元素的中间值。又如可以利用现有乘/加/绝对值求和等运算资源完成滑窗操作。
步骤3,vhist的寻址方式类似索引式,在索引寻址的基础上增加移位处理,产生相应的地址。
步骤4,vhist指令需要对memory地址对应的数值加1后再更新回该地址,通过对数据访存控制模块中增加直方图加速模块hist_accel来实现。在hist_accel中完成先读,加1,再写,并保证原子执行。
以下结合一示例对如何实现图像处理加速过程进行解释说明,但不用于限定本发明实施例的技术方案,本发明示例的技术方案如下:
为了避免对现有RISC-V处理器的修改,可以通过协处理器的方式实现图像处理加速指令。图12是本发明实施例提供的一种可选的主协处理器结构示意图,如图12所示。主处理器和协处理器间的接口可以采用RoCC(Rocket Custom Co-Processor Interface)或者自定义协处理器接口,通常包括请求和响应通道,请求通道包括指令码,控制字,源寄存器值以及通道握手,响应通道包括目的寄存器值,访存请求以及通道握手等。
前面定义的图像加速指令使用操作数个数和类型不同,如vthrsh使用一个源向量寄存器,一个源标量寄存器和一个目的向量寄存器;vswmac使用两个源向量寄存器,一个源标量寄存器和一个目的向量寄存器。主处理器中通过对inst[14:12]和inst[6:0]进行译码,根据不同的加速指令类型,读取源操作数,将指令码,控制字和源操作数通过协处理器接口的请求通道发送给协处理器执行,完成相应的运算,将结果通过响应通道返回给主处理器,写回到目的寄存器中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种基于RISC-V向量扩展指令的编码处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图13是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理装置的结构框图,如图13所示,该装置包括:
第一处理模块130,用于将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子:OpenVX计算机视觉应用底层加速标准的常用函数算子;
确定模块,132用于根据所述基本操作函数确定图像处理加速指令;
第二处理模块134,用于根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
通过本发明,向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;根据所述基本操作函数确定图像处理加速指令;根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。采用上述技术方案,解决了相关技术中,RISC-V指令集中缺少OpenVX计算机视觉应用底层加速标准中的相关指令等问题。通过上述技术方案,在向量扩展指令包括:RISC-V指令集的操作指令,标准函数算子包括:OpenVX计算机视觉应用底层加速标准的操作指令的情况下,通过将向量扩展指令和标准函数算子进行对比,可以确定向量扩展指令和标准函数算子之间不一致的操作指令(即向量扩展指令在标准函数算子中所缺少的操作指令),从而得到图像处理加速指令,进而通过预设编码规则对图像处理加速指令的编码格式进行处理,最终使图像处理加速指令的编码格式与向量扩展指令的编码格式一致,能够达到在OpenVX的标准下扩展RISC-V指令集中的操作指令的技术效果。
本发明实施例中,如图13所示,所述第二处理模块134,还用于获取所述图像处理加速指令的编码格式;根据预设编码规则在向量处理器中对所述图像处理加速指令的编码格式进行处理。
本发明实施例中,图14是根据本发明实施例一种可选的基于RISC-V向量扩展指令的编码处理装置的另一结构框图,如图14所示,所述装置还包括:第三处理模块136,用于在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能;根据所述图像处理加速指令对应的功能执行图像处理任务。
本发明实施例中,图15是根据本发明实施例一种可选的第三处理模块的结构框图,如图15所示,所述向量处理器包括:程序控制单元PCU,标量处理单元SPU,向量处理单元VPU,所述第三处理模块136,包括:第一处理单元1360,用于在通过所述程序控制单元PCU根据所述预设编码规则识别出所述图像处理加速指令之后,向所述标量处理单元SPU和/或所述向量处理单元VPU发送所述图像处理加速指令;确定单元1362,通过所述标量处理单元SPU和/或所述向量处理单元VPU确定所述图像处理加速指令对应的指令类型;第二处理单元1364,在确定所述图像处理加速指令对应的指令类型之后,根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能。
本发明实施例中,如图14所示,所述图像处理加速指令的指令类型至少包括以下之一:运算类指令、访存类指令,所述第二处理单元1364还用于至少以下步骤之一:在所述图像处理加速指令的指令类型为所述运算类指令的情况下,根据所述运算类指令使所述图像处理加速指令实现所述图像处理加速指令对应的运算功能;在所述图像处理加速指令的指令类型为所述访存类指令的情况下,根据所述访存类指令使所述图像处理加速指令实现所述图像处理加速指令对应的访存功能。
本发明实施例中,如图13所示,所述图像处理加速指令至少包括以下之一:直方图指令,阈值指令,中值指令,滑窗乘累加指令。
本发明的实施例还提供了一种计算机可读的存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项所述的方法。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子:OpenVX计算机视觉应用底层加速标准的常用函数算子;
S2,根据所述基本操作函数确定图像处理加速指令;
S3,根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;
S2,根据所述基本操作函数确定图像处理加速指令;
S3,根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于RISC-V向量扩展指令的编码处理方法,其特征在于,包括:
将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;
根据所述基本操作函数确定图像处理加速指令;
根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
2.根据权利要求1所述的方法,其特征在于,根据预设编码规则对所述图像处理加速指令的编码格式进行处理,包括:
获取所述图像处理加速指令的编码格式;
根据预设编码规则在向量处理器中对所述图像处理加速指令的编码格式进行处理。
3.根据权利要求1所述的方法,其特征在于,根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致之后,所述方法还包括:
在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能;
根据所述图像处理加速指令对应的功能执行图像处理任务。
4.根据权利要求3所述的方法,其特征在于,所述向量处理器包括:程序控制单元PCU,标量处理单元SPU,向量处理单元VPU,所述在向量处理器上对所述图像处理加速指令进行译码以使所述图像处理加速指令实现所述图像处理加速指令对应的功能,包括:
在通过所述程序控制单元PCU根据所述预设编码规则识别出所述图像处理加速指令之后,向所述标量处理单元SPU和/或所述向量处理单元VPU发送所述图像处理加速指令;
通过所述标量处理单元SPU和/或所述向量处理单元VPU确定所述图像处理加速指令对应的指令类型;
在确定所述图像处理加速指令对应的指令类型之后,根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能。
5.根据权利要求4所述的方法,其特征在于,所述图像处理加速指令的指令类型至少包括以下之一:运算类指令、访存类指令,所述根据所述图像处理加速指令对应的指令类型使所述图像处理加速指令实现所述图像处理加速指令对应的功能至少包括以下之一:
在所述图像处理加速指令的指令类型为所述运算类指令的情况下,根据所述运算类指令使所述图像处理加速指令实现所述图像处理加速指令对应的运算功能;
在所述图像处理加速指令的指令类型为所述访存类指令的情况下,根据所述访存类指令使所述图像处理加速指令实现所述图像处理加速指令对应的访存功能。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述图像处理加速指令至少包括以下之一:直方图指令,阈值指令,中值指令,滑窗乘累加指令。
7.一种基于RISC-V向量扩展指令的编码处理装置,其特征在于,包括:
第一处理模块,用于将向量扩展指令和标准函数算子进行对比,确定所述向量扩展指令和所述标准函数算子之间不一致的基本操作函数;其中,所述向量扩展指令包括:RISC-V指令集的向量扩展指令,所述标准函数算子包括:OpenVX计算机视觉应用底层加速标准的常用函数算子;
确定模块,用于根据所述基本操作函数确定图像处理加速指令;
第二处理模块,用于根据预设编码规则对所述图像处理加速指令的编码格式进行处理,使得所述图像处理加速指令的编码格式与所述向量扩展指令的编码格式一致。
8.根据权利要求7所述的装置,其特征在于,所述第二处理模块,还用于获取所述图像处理加速指令的编码格式;根据预设编码规则在向量处理器中对所述图像处理加速指令的编码格式进行处理。
9.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6任一项中所述的方法。
CN201911096194.9A 2019-11-11 2019-11-11 基于risc-v向量扩展指令的编码处理方法及装置、存储介质 Pending CN112783555A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911096194.9A CN112783555A (zh) 2019-11-11 2019-11-11 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
PCT/CN2020/124142 WO2021093582A1 (zh) 2019-11-11 2020-10-27 基于risc-v向量扩展指令的编码处理方法及装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911096194.9A CN112783555A (zh) 2019-11-11 2019-11-11 基于risc-v向量扩展指令的编码处理方法及装置、存储介质

Publications (1)

Publication Number Publication Date
CN112783555A true CN112783555A (zh) 2021-05-11

Family

ID=75749815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911096194.9A Pending CN112783555A (zh) 2019-11-11 2019-11-11 基于risc-v向量扩展指令的编码处理方法及装置、存储介质

Country Status (2)

Country Link
CN (1) CN112783555A (zh)
WO (1) WO2021093582A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794671A (zh) * 2023-02-07 2023-03-14 成都申威科技有限责任公司 一种兼容向量数据的访存系统及方法
CN117313803A (zh) * 2023-11-28 2023-12-29 进迭时空(杭州)科技有限公司 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1438574A (zh) * 2003-02-21 2003-08-27 中国航天科技集团公司第九研究院七七一研究所 一种16位微处理器指令集
CN101916180B (zh) * 2010-08-11 2013-05-29 中国科学院计算技术研究所 Risc处理器中执行寄存器类型指令的方法和其系统
JP7242634B2 (ja) * 2017-07-30 2023-03-20 ニューロブレード リミテッド メモリチップ
CN109857460B (zh) * 2019-02-20 2021-09-21 南京华捷艾米软件科技有限公司 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794671A (zh) * 2023-02-07 2023-03-14 成都申威科技有限责任公司 一种兼容向量数据的访存系统及方法
CN117313803A (zh) * 2023-11-28 2023-12-29 进迭时空(杭州)科技有限公司 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法
CN117313803B (zh) * 2023-11-28 2024-02-02 进迭时空(杭州)科技有限公司 基于risc-v向量处理器架构的滑动窗口2d卷积计算方法

Also Published As

Publication number Publication date
WO2021093582A1 (zh) 2021-05-20

Similar Documents

Publication Publication Date Title
US20140304493A1 (en) Methods and systems for performing a binary translation
KR101105474B1 (ko) 범위 검출을 수행하기 위한 명령어 및 로직
KR20010075320A (ko) 구성 가능한 하드웨어 블록을 구성하기 위한 방법
CN112783555A (zh) 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
CN110168548B (zh) 编译设备和方法
US20020002666A1 (en) Conditional operand selection using mask operations
US9436465B2 (en) Moving average processing in processor and processor
WO2014051459A1 (en) Loop vectorization methods and apparatus
US9354893B2 (en) Device for offloading instructions and data from primary to secondary data path
JP2015527642A (ja) 算術及び論理ユニットを伴わないコンピュータプロセッサ及びシステム
US20120144304A1 (en) System and method for reducing artifacts in images
CN109146765B (zh) 一种图像处理方法、主处理器、协处理器及电子设备
CN114119964A (zh) 一种网络训练的方法及装置、目标检测的方法及装置
US6889242B1 (en) Rounding operations in computer processor
CN113704689A (zh) 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置
US10963265B2 (en) Apparatus and method to switch configurable logic units
JP2006107532A (ja) 情報処理システムおよび情報処理方法
US6895056B2 (en) Data processing apparatus and method for performing an adaptive filter operation on an input data sample
JP5894614B2 (ja) 画像処理用の記述子ベースストリームプロセッサおよびそれに関連する方法
CN108762720B (zh) 数据处理方法、数据处理装置以及电子设备
CN114090466A (zh) 一种指令处理装置、方法、计算机设备及存储介质
US9606798B2 (en) VLIW processor, instruction structure, and instruction execution method
US20180196668A1 (en) Signal processing device and method
CN112181496A (zh) 一种基于开源指令集处理器的ai扩展指令执行方法、装置、存储介质及电子设备
CN112882753A (zh) 程序运行方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210511

WD01 Invention patent application deemed withdrawn after publication