一种SLAM硬件加速器的装置,包括存储部分,用于存储输入数据、临时运算结果数据、最终运算结果数据、运算过程所需的指令集和/或算法参数数据;运算部分,与所述存储部分连接,用于完成对SLAM相关算法和应用的计算;控制部分,连接所述存储部分和运算部分,用于控制和协调存储部分和运算部分。本技术还提供了一种完成SLAM运算的方法,该方法通过指令来控制数据的运输、数据的运算、程序的运行等。本技术的装置和方法能够有效根据不同的需求对SLAM算法进行加速,满足不同需求的运算,具有灵活性强、可配置程度高、运算速度快、功耗低等优点。
技术要求
1.一种处理器,其特征在于,所述处理器包括控制部分和运算部分,所述运算部分包括多
维运算单元,所述多维运算单元包括多个基本运算单元,其中,
所述控制部分,用于从存储部分中目标数据起始地址读取第一数据,将所述第一数据传输至所述多维运算单元中的每个基本运算单元;
所述多维运算单元,所述多维运算单元包括多个基本运算单元,所述多维运算单元用于将所述多维运算单元中的每个基本运算单元的寄存器值初始化为预设数值;
所述多维运算单元中的每个基本运算单元,用于对所述参考数据与对应的寄存器中的预设数值进行比较运算,得到较大/小值,将所述较大/小值存储至所述对应的寄存器,直至将所述参考数据比较完成,每个基本运算单元得到第一数据的最大/小值;
所述控制部分,用于根据运算指令从存储部分中读取第二数据,以及将所述第二数据传输至所述多维运算单元的每个基本运算单元;
所述多维运算单元的每个基本运算单元,还用于比较传入的第二数据与所述每个基本运算单元的寄存器中的最大/小值是否相同,若相同,则确定第二数据为最大/小值。
2.根据权利要求1所述的处理器,其特征在于,所述控制部分,还用于连接所述存储部分
和所述运算部分,用于对所述存储部分和所述运算部分进行控制。
3.根据权利要求1所述的处理器,其特征在于,所述处理器还包括存储部分,所述存储部
分包括:
输入存储模块,用于存储输入和/或输出数据;中间结果存储模块,用于存储临时运算结果数据;最终结果存储模块,用于存储最终运算结果数据;指令存储模块,用于存储运算过程中的指令集;和/或缓冲存储模块,用于对数据的缓冲存储。
4.根据权利要求1所述的处理器,其特征在于,所述运算部分包括:
加速运算装置,用于执行SLAM相关算法和应用中的目标运算,所述目标运算包括加速和处理SLAM的运算;
其他运算装置,用于执行SLAM相关算法和应用中的其他运算,所述其他运算为所述
SLAM相关算法和应用中除所述目标运算之外的运算。
5.根据权利要求4所述的处理器,其特征在于,所述加速运算装置包含向量运算单元和矩
阵运算单元。
6.根据权利要求1所述的处理器,其特征在于,所述控制部分还用于对所述存储部分中的
每个模块和所述运算部分进行连接,控制部分包括先进先出队列和控制处理器,其中,所述先进先出队列用于存储控制信号;
所述控制处理器用于取出待执行的控制信号,对所述待执行的控制信号进行解析,得到控制逻辑,根据所述控制逻辑对所述存储部分和所述运算部分进行控制和协调。
7.根据权利要求3所述的处理器,其特征在于,所述指令集包括:
控制操作指令类,用于选取待执行的运行指令的控制,所述控制操作指令类包括跳转指令和分支指令,跳转指令包括直接跳转指令和间接跳转指令,分支指令包括条件分支指令;
数据操作指令类,用于控制数据的传输;所述数据操作类指令包括以下中至少一种:
LD/ST指令,用于DRAM与SRAM中传输数据;MOV指令,用于在SRAM之间传输数据;RD/WR指令,用于表示在SRAM与BUFFER之间传输数据;
宏运算指令类,用于完整的运算操作;
所述宏运算指令包括一下至少一种:卷积运算指令、卷积操作指令、图像累加操作指令、图像BOX滤波操作指令、局部极值操作指令、计数器比较操作指令和/或池化运算指令;
或者,所述宏运算指令类包括以下至少一种:
矩阵与矩阵乘法指令、矩阵与矩阵加法指令、矩阵与向量乘法指令、矩阵与向量加法指令、矩阵与标量乘法指令、矩阵与标量加法矩阵、向量与向量乘法指令和向量与向量外积指令;
或者,所述宏运算指令类包括以下至少一种:
向量与向量乘法指令、向量与向量加法指令、向量与标量乘法指令、向量与标量加法指令、标量开方指令、标量取随机指令和移动指令;
多维数据运算指令类,用于控制多维数据的运算操作,所述多维数据的运算操作包括多维数据与多维数据间的运算操作,多维数据与一维向量数据间的运算操作以及多维数据与一维标量数据之间的运算操作;和/或
一维数据运算指令类,用于控制一维数据的运算操作,所述一维数据包括:一维向量和一维标量。
8.根据权利要求7所述的处理器,其特征在于,所述处理器还包括汇编器,用于在运算过
程中,从指令集中选取指令类型,以及执行所从指令集中选取指令类型。
9.一种运算方法,其特征在于,应用于处理器,所述处理器包括控制部分和运算部分,所
述运算部分包括多维运算单元,所述多维运算单元包括多个基本运算单元,所述方法包括:
所述多维运算单元将所述多维运算单元中的每个基本运算单元的寄存器值初始化为预设数值;
所述控制部分从存储部分中目标数据起始地址读取第一数据,将所述第一数据传输至所述多维运算单元中的每个基本运算单元;
所述多维运算单元中的每个运算元素对所述参考数据与对应的寄存器中的预设数值进行比较运算,得到较大/小值,将所述较大/小值存储至所述对应的寄存器,直至将所述参考数据比较完成,每个基本运算单元得到第一数据的最大/小值;
所述控制部分根据运算指令从存储部分中读取第二数据,以及将所述第二数据传输至所述多维运算单元的每个基本运算单元;
所述多维运算单元的每个运算元素,比较传入的第二数据与所述每个基本运算单元的寄存器中的最大/小值是否相同,若相同,则确定第二数据为最大/小值。
10.根据权利要求9所述的方法,其特征在于,所述处理器还包括存储部分,所述存储部分
包括输入存储模块、中间结果存储模块、最终结果存储模块、指令存储模块和缓冲存储模块,所述方法还包括:
输入存储模块存储输入和/或输出数据;中间结果存储模块存储临时运算结果数据;最终结果存储模块存储最终运算结果数据;
指令存储模块存储运算过程中的指令集;和/或缓冲存储模块对数据进行缓冲存储。
11.根据权利要求10所述的方法,其特征在于,所述指令集包括:
控制操作指令类,用于选取待执行的运行指令的控制,所述控制操作指令类包括跳转指令和分支指令,跳转指令包括直接跳转指令和间接跳转指令,分支指令包括条件分支指令;
数据操作指令类,用于控制数据的传输;所述数据操作类指令包括以下中至少一种:
LD/ST指令,用于DRAM与SRAM中传输数据;MOV指令,用于在SRAM之间传输数据;RD/WR指令,用于表示在SRAM与BUFFER之间传输数据;
宏运算指令类,用于完整的运算操作;
所述宏运算指令包括以下至少一种:卷积运算指令、卷积操作指令、图像累加操作指令、图像BOX滤波操作指令、局部极值操作指令、计数器比较操作指令和/或池化运算指令;
或者,所述宏运算指令类包括以下至少一种:
矩阵与矩阵乘法指令、矩阵与矩阵加法指令、矩阵与向量乘法指令、矩阵与向量加法指令、矩阵与标量乘法指令、矩阵与标量加法矩阵、向量与向量乘法指令和向量与向量外积指令;
或者,所述宏运算指令类包括以下至少一种:
向量与向量乘法指令、向量与向量加法指令、向量与标量乘法指令、向量与标量加法指令、标量开方指令、标量取随机指令和移动指令;
多维数据运算指令类,用于控制多维数据的运算操作,所述多维数据的运算操作包括多维数据与多维数据间的运算操作,多维数据与一维向量数据间的运算操作以及多维数据与一维标量数据之间的运算操作;和/或