一种用于执行向量比较运算的装置和方法制造方法及图纸

技术编号:24205119 阅读:53 留言:0更新日期:2020-05-20 14:20
本公开提供了一种用于执行向量比较运算的装置和方法。在本公开的实施例中,在执行向量比较运算时令时,需要确定指令之间的依赖关系。在确定指令的依赖关系后,基于该依赖关系来进行向量的比较运算。利用上述方法,实现了通过定制的硬件电路来进行向量比较运算指令的完整过程,即通过一条向量比较指令即可实现向量比较运算。

A device and method for performing vector comparison operation

【技术实现步骤摘要】
一种用于执行向量比较运算的装置和方法相关申请引用本申请是申请号为201610266782.2、申请日为2016年4月26日、专利技术名称为“一种用于执行向量比较运算的装置和方法”的专利技术专利申请的分案申请。
本公开涉及计算机指令运算领域,尤其涉及一种用于执行向量比较运算的装置和方法。
技术介绍
向量比较,即针对两长度一致的向量,对应的元素之间进行比较,得到的比较结果构成新的输出向量。深度学习领域存在着针对两向量进行大小比较操作的需求,在人工神经网络的受限玻尔兹曼机中,即存在这样的步骤,要求对一组神经元组成的向量进行采样,即将向量中每一个神经元与一个随机数进行比较,神经元的值大于该向量就取1反之取0。又比如将一组32位单精度浮点数转换值16位的半精度浮点数,如果选择随机进位的方法,则需要将截断部分与满足某分布的随机数进行比较,大于该随机数选择进1,这同样要求对两向量数据进行比较操作。在现有技术中,一种最常用的实现向量比较操作的方法是在通用CPU上逐个比较,该方法执行效率低。另一种现有技术是在图形处理器(GPU)上进行向量比较操作,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,GPU片上缓存太小,在进行大规模向量比较运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。综上所述,现有的不管是通用处理器还是图形处理器,均不能高效处理大规模的向量比较运算。
技术实现思路
有鉴于此,本公开提出了一种用于执行向量比较运算的技术方案。根据本公开的一方面,提供了一种用于执行向量比较运算的方法。该方法包括确定获取的第一指令与先前获取的待执行的第二指令之间是否存在依赖关系,所述依赖关系指示指令的处理顺序,所述第一指令和所述第二指令为用于进行向量比较运算的指令。该方法还包括响应于所述第一指令和所述第二指令之间存在所述依赖关系,存储所述第一指令。该方法还包括响应于所述第二指令已被执行,将经存储的所述第一指令提供给所述向量比较单元以用于执行所述向量比较运算。在一些实施例中,其中确定获取的第一指令与先前获取的待执行的第二指令之间是否存在依赖关系包括:确定所述第一指令的操作域中存储的第一向量的第一存储地址;确定所述第二指令的操作域中存储的第二向量的第二存储地址;比较所述第一存储地址和所述第二存储地址;以及响应于所述第一存储地址和所述第二存储地址相同,确定所述第一指令与所述第二指令之间存在依赖关系。在一些实施例中,该方法还包括响应于确定不存在所述依赖关系,将所述第一指令提供给向量比较单元以用于直接执行所述向量比较运算。在一些实施例中,其中所述第一指令或所述第二指令包括操作码和多个操作域,其中所述操作码用于指示向量比较运算的类型,所述多个操作域包括立即数和/或寄存器号,所述立即数和所述寄存器号用于确定向量长度、待比较的两向量的起始地址及、比较结果向量的存储地址。在一些实施例中,其中所述第一指令或所述第二指令为大于等于运算指令,所述大于等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值大于等于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为小于等于运算指令,所述小于等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值小于等于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为大于运算指令,所述大于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值大于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为小于运算指令,所述小于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值小于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为等于运算指令,所述等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值等于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为不等于运算指令,所述不等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值不等于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,该方法还包括从指令缓存单元获取所述第一指令;对所述第一指令进行译码;从经译码的所述第一指令的操作域中获取寄存器号;以及将与所述寄存器号相对应的寄存器单元中存储的标量数据存储在所述第一指令中,所述标量数据包括待比较的两向量的起始地址及向量长度、比较结果向量的存储地址。在一些实施例中,其中所述寄存器单元为标量寄存器堆,包括多个标量寄存器,用于存储与用于所述向量比较运算的指令相关的标量数据。根据本公开的二方面,提供了一种用于执行向量比较运算的装置。该装置包括依赖关系处理单元,被配置为确定获取的第一指令与先前获取的待执行的第二指令之间是否存在依赖关系,所述依赖关系指示指令的处理顺序,所述第一指令和所述第二指令为用于进行向量比较运算的指令;以及存储队列模块,被配置为:响应于所述第一指令和所述第二指令之间存在所述依赖关系,存储所述第一指令;以及响应于所述第二指令已被执行,将经存储的所述第一指令提供给所述向量比较单元以用于执行所述向量比较运算。在一些实施例中,其中所述依赖关系处理单元进一步被配置为:确定所述第一指令的操作域中存储的第一向量的第一存储地址;确定所述第二指令的操作域中存储的第二向量的第二存储地址;比较所述第一存储地址和所述第二存储地址;以及响应于所述第一存储地址和所述第二存储地址相同,确定所述第一指令与所述第二指令之间存在依赖关系。在一些实施例中,其中所述依赖关系处理单元进一步被配置为响应于确定不存在所述依赖关系,将所述第一指令提供给向量比较单元以用于直接执行所述向量比较运算。在一些实施例中,其中所述第一指令或所述第二指令包括操作码和多个操作域,其中所述操作码用于指示向量比较运算的类型,所述多个操作域包括立即数和/或寄存器号,所述立即数和所述寄存器号用于确定向量长度、待比较的两向量的起始地址及、比较结果向量的存储地址。在一些实施例中,其中所述第一指令或所述第二指令为大于等于运算指令,所述大于等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值大于等于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为小于等于运算指令,所述小于等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值小于等于后一向量的值时将比较结果向量在该位置上的值置为1。在一些实施例中,其中所述第一指令或所述第二指令为大于运算指令,所述大于运算指令用于对待比较两向量中所有位置本文档来自技高网...

【技术保护点】
1.一种用于执行向量比较运算的方法,包括:/n确定获取的第一指令与先前获取的待执行的第二指令之间是否存在依赖关系,所述依赖关系指示指令的处理顺序,所述第一指令和所述第二指令为用于进行向量比较运算的指令;/n响应于所述第一指令和所述第二指令之间存在所述依赖关系,存储所述第一指令;以及/n响应于所述第二指令已被执行,将经存储的所述第一指令提供给所述向量比较单元以用于执行所述向量比较运算。/n

【技术特征摘要】
1.一种用于执行向量比较运算的方法,包括:
确定获取的第一指令与先前获取的待执行的第二指令之间是否存在依赖关系,所述依赖关系指示指令的处理顺序,所述第一指令和所述第二指令为用于进行向量比较运算的指令;
响应于所述第一指令和所述第二指令之间存在所述依赖关系,存储所述第一指令;以及
响应于所述第二指令已被执行,将经存储的所述第一指令提供给所述向量比较单元以用于执行所述向量比较运算。


2.根据权利要求1所述的方法,其中确定获取的第一指令与先前获取的待执行的第二指令之间是否存在依赖关系包括:
确定所述第一指令的操作域中存储的第一向量的第一存储地址;
确定所述第二指令的操作域中存储的第二向量的第二存储地址;
比较所述第一存储地址和所述第二存储地址;以及
响应于所述第一存储地址和所述第二存储地址相同,确定所述第一指令与所述第二指令之间存在依赖关系。


3.根据权利要求1所述的方法,还包括:
响应于确定不存在所述依赖关系,将所述第一指令提供给向量比较单元以用于直接执行所述向量比较运算。


4.根据权利要求1所述的方法,其中所述第一指令或所述第二指令包括操作码和多个操作域,其中所述操作码用于指示向量比较运算的类型,所述多个操作域包括立即数和/或寄存器号,所述立即数和所述寄存器号用于确定向量长度、待比较的两向量的起始地址及、比较结果向量的存储地址。


5.根据权利要求4所述的方法,其中所述第一指令或所述第二指令为大于等于运算指令,所述大于等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值大于等于后一向量的值时将比较结果向量在该位置上的值置为1。


6.根据权利要求4所述的方法,其中所述第一指令或所述第二指令为小于等于运算指令,所述小于等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值小于等于后一向量的值时将比较结果向量在该位置上的值置为1。


7.根据权利要求4所述的方法,其中所述第一指令或所述第二指令为大于运算指令,所述大于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值大于后一向量的值时将比较结果向量在该位置上的值置为1。


8.根据权利要求4所述的方法,其中所述第一指令或所述第二指令为小于运算指令,所述小于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值小于后一向量的值时将比较结果向量在该位置上的值置为1。


9.根据权利要求4所述的方法,其中所述第一指令或所述第二指令为等于运算指令,所述等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值等于后一向量的值时将比较结果向量在该位置上的值置为1。


10.根据权利要求4所述的方法,其中所述第一指令或所述第二指令为不等于运算指令,所述不等于运算指令用于对待比较两向量中所有位置上的元素进行比较并且在某位置行前一向量的值不等于后一向量的值时将比较结果向量在该位置上的值置为1。


11.根据权利要求4所述的方法,还包括:
从指令缓存单元获取所述第一指令;
对所述第一指令进行译码;
从经译码的所述第一指令的操作域中获取寄存器号;以及
将与所述寄存器号相对应的寄存器单元中存储的标量数据存储在所述第一指令中,所述标量数据包括待比较的两向量的起始地址及向量长度、比较结果向量的存储地址。


12.根据权利要求11所述的方法,其中所述寄存器单元为标量寄存器堆,包括多个标量寄存器,用于存储与用于所述向量比较运算的指令相关的标量数据。


13.一种用于执行向量比较运算的装置,包括:
依赖关系处理单元,被配置为确定获取的第一指令与先前获取的待执行的第二指令之间是否...

【专利技术属性】
技术研发人员:韩栋张潇刘少礼陈天石陈云霁
申请(专利权)人:中科寒武纪科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1