当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑制造技术

技术编号:10102367 阅读:187 留言:0更新日期:2014-05-30 23:22
指令和逻辑提供利用跨越功能的向量加载操作和/或存储操作。在一些实施例中,响应于指定加载的集合、第二操作、目的地寄存器、操作数寄存器、存储器地址以及跨越长度的指令,执行单元读取掩码寄存器中的值,其中掩码寄存器中的字段对应于从该存储器地址到存储器中的数据元素的跨越长度倍数。第一掩码值指示该元素尚未从存储器中被加载,而第二值指示该元素无需被加载或已经被加载。对于具有第一值的每个数据元素,将该数据元素从存储器加载到相应的目的地寄存器位置中,并且将掩码寄存器中的相应值改成第二值。然后利用目的地和操作数寄存器中的相应数据来执行第二操作以产生结果。可在错误之后重启该指令。

【技术实现步骤摘要】
【国外来华专利技术】用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
本公开涉及处理逻辑、微处理器以及相关的指令集体系结构的领域,这些指令集体系结构在被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。具体而言,本公开涉及用于提供利用跨越功能的向量加载操作和/或存储操作的指令和逻辑。
技术介绍
目前的诸多处理器通常包括用于提供计算密集型操作但提供高度数据并行性的指令,这些指令可通过使用多种数据存储设备的高效实现来使用,这些数据存储设备诸如:单指令多数据(SIMD)向量寄存器。将应用或软件代码向量化可包括使该应用在特定系统或指令集体系结构(诸如例如宽或大宽度向量体系结构)上编译、安装和/或运行。对于一些应用,由于向量宽度增加(例如用于诸如三维(3D)图像渲染之类的操作),存储器访问可能是复杂的、不一致的或不连续的。用于向量化进程的存储器可能被存储在不连续或不邻近的存储器位置中。多种体系结构可能需要额外的指令,这些额外的指令最小化了指令吞吐量,并显著增加在执行任何算术操作之前对寄存器中的数据进行排序所需的时钟周期的数量。用于改善存储器访问和对去往和来自更宽向量的数据进行排序的机制可包括实现聚集和分散操作,以针对来自其他非本地和/或不连续的存储器位置的数据产生本地连续的存储器访问。聚集操作可从存储装置中的一组不连续或随机的存储器位置收集数据,并将不同的数据组合到打包结构中。分散操作可将打包结构中的元素散开至一组不连续或随机的存储器位置。其他机制可包括利用常规跨越的加载和存储,用于从存储设备中的不连续存储器位置的集合中收集数据并将数据组合到打包结构中,或将打包结构中的元素分散到存储设备中的不连续存储器位置的集合中。这些存储器位置中的一些可能未被高速缓存,或已经被移出物理存储器的分页。如果这些操作由于页面错误或一些其他原因而中断,在一些体系结构下,机器的状态可能未保存,从而需要重复整个操作,而不是在该操作中断的位置处重新开始。由于在任一重复操作上可能需要多次存储器访问,所以可能需要许多时钟周期来完成,任何后续的依赖算术操作必须等待该重复操作完成。这样的延迟代表瓶颈,该瓶颈会限制例如从宽或大宽度向量体系结构原本预期的性能优势。到目前为止,尚未充分探索针对这样的性能受限问题和瓶颈的潜在解决方案。附图说明在附图的各图中通过示例而非限制地示出本专利技术。图1A是执行用于提供利用跨越功能的向量加载操作和/或存储操作的指令的系统的一个实施例的框图。图1B是执行用于提供利用跨越功能的向量加载操作和/或存储操作的指令的系统的另一实施例的框图。图1C是执行用于提供利用跨越功能的向量加载操作和/或存储操作的指令的系统的另一实施例的框图。图2是执行用于提供利用跨越功能的向量加载操作和/或存储操作的指令的处理器的一个实施例的框图。图3A示出根据一个实施例的打包数据类型。图3B示出根据一个实施例的打包数据类型。图3C示出根据一个实施例的打包数据类型。图3D示出根据一个实施例的编码成用于提供利用跨越功能的向量加载操作和/或存储操作的指令。图3E示出根据另一实施例的编码成用于提供利用跨越功能的向量加载操作和/或存储操作的指令。图3F示出根据另一实施例的编码成用于提供利用跨越功能的向量加载操作和/或存储操作的指令。图3G示出根据另一实施例的编码成用于提供利用跨越功能的向量加载操作和/或存储操作的指令。图3H示出根据另一实施例的编码成用于提供利用跨越功能的向量加载操作和/或存储操作的指令。图4A示出用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的处理器微体系结构的一个实施例的要素。图4B示出用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的处理器微体系结构的另一实施例的要素。图5是用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的处理器的一个实施例的框图。图6是用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的计算机系统的一个实施例的框图。图7是用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的计算机系统的另一实施例的框图。图8是用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的计算机系统的另一实施例的框图。图9是用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的芯片上系统的一个实施例的框图。图10是用于执行提供利用跨越功能的向量加载操作和/或存储操作的指令的处理器的实施例的框图。图11是提供利用跨越功能的向量加载操作和/或存储操作的IP核开发系统的一个实施例的框图。图12示出提供利用跨越功能的向量加载操作和/或存储操作的体系结构仿真系统的一个实施例。图13示出用于转换提供利用跨越功能的向量加载操作和/或存储操作的指令的系统的一个实施例。图14示出用于提供利用跨越功能的向量加载操作的过程的一个实施例的流程图。图15示出用于提供利用跨越功能的向量加载操作的过程的另一实施例的流程图。图16示出用于提供利用跨越功能的向量存储操作的过程的一个实施例的流程图。图17示出用于提供利用跨越功能的向量存储操作的过程的另一实施例的流程图。具体实施方式以下描述公开了在处理器、计算机系统或其他处理设备之内或与处理器、计算机系统或其他处理设备相关联的用于提供利用跨越功能的向量加载操作和/或存储操作的指令和处理逻辑。在一些实施例中,响应于指定加载的集合、第二操作、目的地寄存器、操作数寄存器、存储器地址以及跨越长度的指令,执行单元读取掩码寄存器中的值,其中掩码寄存器中的字段对应于从该存储器地址到存储器中的数据元素的跨越长度倍数。第一掩码值指示该元素尚未从存储器中被加载,而第二值指示该元素无需被加载或已经被加载。对于具有第一值的每个数据元素,将该数据元素从存储器加载到相应的目的地寄存器位置中,并且将掩码寄存器中的相应值改成第二值。当发生错误或所有的掩码寄存器字段具有第二值时,利用目的地和操作数寄存器中的相应数据来执行第二操作以产生结果。在一些替代实施例中,响应于指定例如第一操作之后的存储的集合、目的地寄存器、操作数寄存器、存储器地址以及跨越长度的指令,执行单元可在使用或不使用掩码寄存器的情况下执行第一操作,并且掩码值可用来指示所得的元素是否已被存储至存储器,或者指示该元素无需被存储至存储器或已经被存储至存储器。在以下描述中,陈述了诸如处理逻辑、处理器类型、微体系结构状况、事件、启用机制等多种特定细节,以提供对本专利技术实施例的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实践本专利技术。此外,没有详细示出一些公知的结构、电路等等,以避免不必要地模糊本专利技术的实施例。虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本专利技术的实施例的类似技术和教导可应用于其它类型的电路或半导体器件,这些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。本专利技术的诸个实施例的教示适用于执行数据操纵的任何处理器或机器。然而,本专利技术不限于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并适用于执行数据操纵或管理的任何处理器和机器。此外,下述描述提供了示例,并且附图出于示意性目的示出了多个示例。然而,这些示例不应该被理解为具有本文档来自技高网...
用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑

【技术保护点】
一种处理器,包括:第一寄存器,包括第一多个数据字段,其中上述第一寄存器中的第一多个数据字段中的每个数据字段对应于存储器中的相应数据元素的与起始地址相距的跨越长度的倍数,其中对于所述第一寄存器中的每个数据字段,第一值指示相应的元素尚未从所述存储器被加载,而第二值指示所述相应的数据元素无需被加载或已经从所述存储器被加载;解码级,用于解码第一指令,所述第一指令指定所述第一寄存器和与所述第一多个数据字段中的一个或多个数据字段相对应的加载操作的集合,并且指定第二单指令多数据(SIMD)操作;以及一个或多个执行单元,用于响应于经解码的第一指令:读取第一寄存器中的每个数据字段的值;对于所述第一寄存器中的所述多个数据字段中的具有第一值的每个数据字段,从所述存储器中加载相应的数据元素并将所述相应的数据元素存储在第二寄存器中,所述第二寄存器具有第二多个数据字段,所述第二多个数据字段的一部分用于存储被加载的数据元素,并且将第一寄存器中的相应的数据字段的值从所述第一值改变成所述第二值;以及利用所述第二多个数据字段中的所述一部分中存储的数据元素来执行所述第二SIMD操作,以产生相应的结果数据元素。

【技术特征摘要】
【国外来华专利技术】1.一种处理器,包括:第一寄存器,包括第一多个数据字段,其中所述第一寄存器中的第一多个数据字段中的每个数据字段要对应于要被存储在存储器中的相应数据元素的与起始地址相距的跨越长度的倍数,其中对于所述第一寄存器中的每个数据字段,第一值要指示相应的数据元素尚未从所述存储器被加载,而第二值要指示所述相应的数据元素无需被加载或已经从所述存储器被加载;解码级,用于解码第一指令,所述第一指令要指定所述第一寄存器和要与所述第一多个数据字段中的一个或多个数据字段相对应的加载操作的集合,并且要指定第二单指令多数据(SIMD)操作;以及一个或多个执行单元,用于响应于经解码的第一指令执行以下操作:读取第一寄存器中的每个数据字段的值;对于所述第一寄存器中的所述第一多个数据字段中的要具有第一值的每个数据字段,从所述存储器中加载相应的数据元素并将所述相应的数据元素存储在第二寄存器中,所述第二寄存器具有第二多个数据字段,所述第二多个数据字段的一部分用于存储被加载的数据元素;将第一寄存器中的相应的数据字段从所述第一值改变成所述第二值;以及利用所述第二多个数据字段中的所述一部分中存储的数据元素来执行所述第二SIMD操作,以产生相应的结果数据元素,其中所述第二SIMD操作是一元的、二元的、或三元的。2.如权利要求1所述的处理器,其特征在于,所述第一值是1。3.如权利要求1所述的处理器,其特征在于,所述第二值是0。4.如权利要求1所述的处理器,其特征在于,所述一个或多个执行单元用于响应于经解码的第一指令复制第一寄存器中的所述第一多个数据字段的值。5.如权利要求4所述的处理器,其特征在于,所述一个或多个执行单元用于响应于经解码的第一指令,当第一寄存器中的所述第一多个数据字段的值中具有第一值的每个数据字段的值从第一值被改变成第二值时,复制第一寄存器中的所述第一多个数据字段的值中具有第一值的每个数据字段。6.如权利要求5所述的处理器,其特征在于,所述一个或多个执行单元用于在发生错误时或在所述第一寄存器中的第一多个数据字段的每个数据字段具有所述第二值之后,使用来自所述第一寄存器的多个复制的数据字段来执行所述第二SIMD操作。7.如权利要求1所述的处理器,其特征在于,要被存储到所述第二寄存器中的数据元素会是32位数据元素。8.如权利要求1所述的处理器,其特征在于,要被存储到所述第二寄存器中的数据元素会是64位数据元素。9.如权利要求1所述的处理器,其特征在于,所述第二寄存器是512位向量寄存器。10.一种用于执行第一可执行指令的方法,包括:读取第一寄存器中的第一多个数据字段中的每个数据字段的值,其中第一寄存器中的第一多个数据字段中的每个数据字段对应于存储器中的相应数据元素的与起始地址相距的跨越长度的倍数,其中对于第一寄存器中的每个数据字段,第一值指示相应的数据元素尚未从所述存储器被加载,而第二值指示所述相应的数据元素无需被加载或已经从所述存储器被加载;对于第一寄存器中的所述第一多个数据字段中的具有第一值的每个数据字段,从所述存储器中加载相应的数据元素并将所述相应的数据元素存储在第二寄存器中,并且将第一寄存器中的相应数据字段从所述第一值改变成所述第二值,所述第二寄存器具有第二多个数据字段,所述第二多个数据字段的一部分用于存储被加载的数据元素;以及然后利用所述第二多个数据字段的所述部分中存储的数据元素来执行第二单指令多数据(SIMD)操作,以产生相应的结果数据元素,其中所述第二SIMD操作是一元的、二元的、或三元的。11.如权利要求10所述的方法,其特征在于,还包括:复制所述第一寄存器中的所述第一多个数据字段。12.如权利要求10所述的方法,其特征在于,还包括:当第一寄存器中的所述第一多个数据字段中具有第一值的每个数据字段的值从第一值被改变成第二值时,复制所述第一寄存器中的所述第一多个数据字段中具有第一值的每个数据字段。13.如权利要求12所述的方法,其特征在于,还包括:在发生错误时或在所述第一寄存器中的所述第一多个数据字段中的每个数据字段具有第二值之后,使用来自第一寄存器的多个复制的数据字段来执行所述第二SIMD操作。14.如权利要求10所述的方法,其特征在于,被存储到所述第二寄存器中的数据元素是32位数据元素。15.如权利要求10所述的方法,其特征在于,被存储到所述第二寄存器中的数据元素是64位...

【专利技术属性】
技术研发人员:E·乌尔德阿迈德瓦尔K·A·杜什S·赛尔C·R·扬特
申请(专利权)人:英特尔公司
类型:
国别省市:

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

1