[发明专利]一种用于执行向量比较运算的装置和方法有效
申请号: | 201610266782.2 | 申请日: | 2016-04-26 |
公开(公告)号: | CN107315563B | 公开(公告)日: | 2020-08-07 |
发明(设计)人: | 韩栋;张潇;刘少礼;陈天石;陈云霁 | 申请(专利权)人: | 中科寒武纪科技股份有限公司 |
主分类号: | G06F7/02 | 分类号: | G06F7/02;G06F17/16 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 李坤 |
地址: | 100190 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 执行 向量 比较 运算 装置 方法 | ||
本公开提供了一种用于执行向量比较运算的装置和方法。所述装置包括:存储单元,用于存储向量比较运算指令相关的向量数据;寄存器单元,用于存储向量比较运算指令相关的标量数据;控制单元,用于对向量比较运算指令进行译码,并控制向量比较运算指令的运算过程;向量比较单元,用于根据译码后的向量比较运算指令,对两待比较输入向量数据进行向量比较操作;其中,所述向量比较单元为定制的硬件电路。本公开提供的用于执行向量比较运算的装置和方法,通过定制的硬件电路实现了向量比较运算指令的完整过程,即通过一条向量比较指令即可实现向量比较运算。
技术领域
本公开涉及计算机指令运算领域,尤其涉及一种用于执行向量比较运算的装置和方法。
背景技术
向量比较,即针对两长度一致的向量,对应的元素之间进行比较,得到的比较结果构成新的输出向量。深度学习领域存在着针对两向量进行大小比较操作的需求,在人工神经网络的受限玻尔兹曼机中,即存在这样的步骤,要求对一组神经元组成的向量进行采样,即将向量中每一个神经元与一个随机数进行比较,神经元的值大于该向量就取1反之取0。又比如将一组32位单精度浮点数转换值16位的半精度浮点数,如果选择随机进位的方法,则需要将截断部分与满足某分布的随机数进行比较,大于该随机数选择进1,这同样要求对两向量数据进行比较操作。
在现有技术中,一种最常用的实现向量比较操作的方法是在通用CPU 上逐个比较,该方法执行效率低。
另一种现有技术是在图形处理器(GPU)上进行向量比较操作,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,GPU片上缓存太小,在进行大规模向量比较运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
综上所述,现有的不管是通用处理器还是图形处理器,均不能高效处理大规模的向量比较运算。
发明 内容
有鉴于此,本公开提供了一种执行向量比较运算的装置和方法,根据指令可以支持任意长度的向量比较运算,同时还具有优异的执行性能。该装置根据指令可以执行一系列向量比较运算,包括但不限于大于等于、大于、等于、不等于、小于、小于等于,可以灵活支持不同长度的向量数据。
根据本公开一方面,提供了一种用于执行向量比较运算的装置,包括:
存储单元,用于存储向量比较运算指令相关的向量数据;
寄存器单元,用于存储向量比较运算指令相关的标量数据;
控制单元,用于对向量比较运算指令进行译码,并控制向量比较运算指令的运算过程;
向量比较单元,用于根据译码后的向量比较运算指令,对两待比较输入向量数据进行向量比较操作;
其中,所述向量比较单元为定制的硬件电路。
优选地,所述寄存器单元所存储的标量数据包括向量比较运算指令相关的待比较输入向量起始地址、比较结果输出向量存储地址、待比较输入向量长度;其中,所述待比较输入向量的起始地址以及比较结果输出向量存储地址为所述存储单元中的地址。
优选地,所述控制单元包括:
指令队列模块,用于对译码后的向量比较运算指令进行顺序存储,并获取向量比较运算指令相关的标量数据。
优选地,所述控制单元包括:
依赖关系处理单元,用于在向量比较单元获取当前向量比较运算指令前,判断当前向量比较运算指令与之前未执行完的运算指令是否存在依赖关系。
优选地,所述控制单元包括:
存储队列模块,用于在当前向量比较运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前向量比较运算指令,并且在该依赖关系消除时,将暂存的向量比较运算指令送往向量比较单元。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中科寒武纪科技股份有限公司,未经中科寒武纪科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610266782.2/2.html,转载请声明来源钻瓜专利网。