[发明专利]一种用于执行向量循环移位运算的装置和方法有效
申请号: | 201610266747.0 | 申请日: | 2016-04-26 |
公开(公告)号: | CN107315566B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 刘道福;张潇;刘少礼;陈天石;陈云霁 | 申请(专利权)人: | 中科寒武纪科技股份有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/355 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 钟文芳 |
地址: | 100190 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 执行 向量 循环 移位 运算 装置 方法 | ||
本公开提供了一种用于执行向量循环移位运算的装置和方法。所述装置包括:存储单元,用于存储向量循环位移运算指令相关的向量数据;寄存器单元,用于存储向量循环位移运算指令相关的标量数据;控制单元,用于对向量循环移位运算指令进行译码,并控制向量循环位移运算指令的运算过程;循环移位单元,用于根据译码后的向量循环移位运算指令,对输入向量数据进行循环移位操作;其中,所述循环移位单元为定制的硬件电路。本公开提供的用于执行向量循环移位运算的装置和方法,通过定制的硬件电路实现了向量循环移位运算指令的完整过程,即通过一条的循环移位指令即可实现向量循环移位运算。
技术领域
本公开涉及计算机领域,尤其涉及一种用于执行向量循环移位运算的装置和方法。
背景技术
向量循环移位,即将一列向量中的每个元素按照一定步长向一定方向移动,对于移动范围超出向量一端的元素,可以将整个向量视作是一个环形,从而将其移至向量另一端。向量的循环位移如图1所示,对于长度为 l的向量,向右循环移位m,则左侧l-m个元素均向右移动m步长,而右侧m个元素会移至左侧。
在现有技术中,最常用的实现向量移位的方法是采用通用处理器对一列向量中的元素进行逐个移动,在向量规模很大的情况下,这种实现方法的效率极低。
除此之外,现有技术中也可以在图形处理器或其他面向图像处理的装置上进行,该类方法涉及到不同的流处理单元之间的通信,当进行大规模向量位移时需要频繁地进行数据搬运,因此也不具有十分明显的优势。
这些现有方法在实现大规模的向量移位时并不具有明显的优势,同时需要较多的指令来配合执行,在解决这种问题上可以寻找更好的方法。
发明 内容
基于此,本公开提供了一种执行向量循环移位的装置和方法,根据指令可以支持任意长度和任意移动步长的向量循环位移。
根据本公开一方面,提供了一种用于执行向量循环移位运算的装置,其特征在于,包括:
存储单元,用于存储向量循环位移运算指令相关的向量数据;
寄存器单元,用于存储向量循环位移运算指令相关的标量数据;
控制单元,用于对向量循环移位运算指令进行译码,并控制向量循环位移运算指令的运算过程;
循环移位单元,用于根据译码后的向量循环移位运算指令,对输入向量数据进行循环移位操作;
其中,所述循环移位单元为定制的硬件电路。优选地,所述寄存器单元所存储的标量数据包括向量循环位移运算指令相关的输入向量数据起始地址、输出向量数据存储地址、输入向量数据长度;其中,所述输入向量数据的起始地址以及输出向量数据存储地址为所述存储单元中的地址。
优选地,所述控制单元包括:
指令队列模块,用于对译码后的向量循环移位运算指令进行顺序存储,并获取向量循环移位运算指令相关的标量数据。
优选地,所述控制单元包括:
依赖关系处理单元,用于在循环移位单元获取当前向量循环移位运算指令前,判断当前向量循环移位运算指令与之前未执行完的运算指令是否存在依赖关系。
优选地,所述控制单元包括:
存储队列模块,用于在当前向量循环移位运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量循环移位运算指令,并且在该依赖关系消除时,将暂存的向量循环移位运算指令送往循环移位单元。
优选地,所述装置还包括:
指令缓存单元,用于存储待执行的向量运算指令;
输入输出单元,用于将向量运算指令相关的向量数据存储于存储单元,或者,从存储单元中获取向量运算指令的运算结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科寒武纪科技股份有限公司,未经中科寒武纪科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610266747.0/2.html,转载请声明来源钻瓜专利网。