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

用于滑动窗口数据收集的设备和方法技术

技术编号:10382615 阅读:96 留言:0更新日期:2014-09-05 10:48
描述了用于获取数据流的多个部分并将其存储到多个寄存器的装置和方法。例如,根据一个实施例的方法包括以下操作:确定N个矢量寄存器的集合,以将存储在系统存储器中的数据流的N个指定部分读取进入所述N个矢量寄存器的集合;对于所述数据流的N个指定部分中的每一个,确定系统存储器地址;在系统存储器地址处从系统存储器获取所述数据流的N个指定部分;以及将所述数据流的N个指定部分存储到N个矢量寄存器。

【技术实现步骤摘要】
【国外来华专利技术】专利
本专利技术的实施例一般涉及计算机系统的领域。本专利技术的实施例尤其涉及。
技术介绍

技术介绍
指令集,或指令集架构(ISA)是涉及编程的计算机架构的一部分,并可以包括本机数据类型、指令、寄存器架构、寻址模式、存储器架构,中断和异常处理,以及外部输入和输出(I/o)。在本文中术语指令一般指宏指令一即被提供给处理器(或指令转换器,该指令转换器(例如使用静态二进制翻译、包括动态编译的动态二进制翻译)翻译、变形、仿真,或以其他方式将指令转换成要由处理器处理的一个或多个指令)的指令)以用于执行的指令一而不是微指令或微操作(miCTo-op)—它们是处理器的解码器解码宏指令的结果。ISA与微架构不同,微架构是实现指令集的处理器的内部设计。带有不同的微架构的处理器可以共享共同的指令集。例如,INTEL?奔腾四(Pentium4)处理器、Intel?酷睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,ISA的相同寄存器架构在不同的微架构中可使用已知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(诸如,使用寄存器别名表RAT、重排序缓冲器R0B、以及隐退寄存器组;使用多映射和寄存器池)的一个或多个动态分配物理寄存器等。除非另作说明,短语寄存器架构、寄存器组,以及寄存器在本文中被用来指代对软件/编程器以及指令指定寄存器的方式可见的东西。在需要特殊性的情况下,形容词逻辑、架构,或软件可见的将用于表示寄存器架构中的寄存器/文件,而不同的形容词将用于指定给定微型架构中的寄存器(例如,物理寄存器、重新排序缓冲器、退役寄存器、寄存器池)。指令集包括一个或多个指令格式。给定指令格式定义各个字段(位的数量、位的位置)以指定要执行的操作(操作码)以及对其要执行该操作的操作码等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,给定指令格式的指令模板可被定义为具有指令格式的字段(所包括的字段通常在相同的阶中,但是至少一些字段具有不同的位位置,因为包括更少的字段)的不同子集,和/或被定义为具有不同解释的给定字段。由此,ISA的每一指令使用给定指令格式(并且如果定义,则在该指令格式的指令模板的给定一个中)来表达,并且包括用于指定操作和操作码的字段。例如,示例性ADD指令具有专用操作码以及包括指定该操作码的操作码字段和选择操作数的操作数字段(源I/目的地以及源2)的指令格式,并且该ADD指令在指令流中的出现将具有选择专用操作数的操作数字段中的专用内容。科学、金融、自动矢量化的通用,RMS(识别、挖掘以及合成),以及可视和多媒体应用程序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常需要对大量的数据项执行相同操作(被称为“数据并行性”)。单指令多数据(SIMD)是指使处理器对多个数据项执行操作的一种指令。SMD技术特别适于能够在逻辑上将寄存器中的比特分割为若干个固定大小的数据元素的处理器,每一个元素都表示单独的值。例如,256比特寄存器中的比特可以被指定为四个单独的64比特打包的数据元素(四字(Q)大小的数据元素),八个单独的32比特打包的数据元素(双字(D)大小的数据元素),十六单独的16比特打包的数据元素(一字(W)大小的数据元素),或三十二个单独的8比特数据元素(字节(B)大小的数据元素)来被操作的源操作数。这种类型的数据被称为打包的数据类型或矢量数据类型,这种数据类型的操作数被称为打包的数据操作数或矢量操作数。换句话说,打包数据项或矢量指的是打包数据元素的序列,并且打包数据操作数或矢量操作数是SIMD指令(也称为打包数据指令或矢量指令)的源操作数或目的地操作数。作为示例,一种类型的SIMD指令指定要以垂直方式对两个源矢量操作数执行的单个矢量操作,以利用相同数量的数据元素,以相同数据元素顺序,生成相同大小的目的地矢量操作数(也称为结果矢量操作数)。源矢量操作数中的数据元素被称为源数据元素,而目的地矢量操作数中的数据元素被称为目的地或结果数据元素。这些源矢量操作数是相同大小,并包含相同宽度的数据元素,如此,它们包含相同数量的数据元素。两个源矢量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置O中的数据元素相对应,每个源操作数的数据元素位置I中的数据元素相对应,等等)。由该SIMD指令所指定的操作分别地对这些源数据元素对中的每一对执行,以生成匹配的数量的结果数据元素,如此,每一对源数据元素都具有对应的结果数据元素。由于操作是垂直的并且由于结果矢量操作数大小相同,具有相同数量的数据元素,并且结果数据元素与源矢量操作数以相同数据元素顺序来存储,因此,结果数据元素与源矢量操作数中的它们的对应的源数据元素对处于结果矢量操作数的相同比特位置。除此示例性类型的SMD指令之外,还有各种其他类型的SMD指令(例如,只有一个或具有两个以上的源矢量操作数的;以水平方式操作的;生成不同大小的结果矢量操作数的,具有不同大小的数据元素的,和/或具有不同的数据元素顺序的)。应该理解,术语目的地矢量操作数(或目的地操作数)被定义为执行由指令所指定的操作的直接结果,包括将该目的地操作数存储在某一位置(寄存器或在由该指令所指定的存储器地址),以便它可以作为源操作数由另一指令访问(由另一指令指定该同一个位置)。诸如由具有包括x86、MMX?、流式 SMD 扩展(SSE)、SSE2、SSE3、SSE4.1 以及 SSE4.2指令的指令集的Intel? Core?处理器使用的技术之类的SMD技术,在应用程序性能方面实现了大大的改善。已经发布和/或公布了涉及高级矢量扩展(AVX) (AVX1和AVX2)且使用矢量扩展(VEX)编码方案的附加SMD扩展集(例如,参见2011年10月的Intel? 64和IA-32架构软件开发手册,并且参见2011年6月的Intel?高级矢量扩展编程参考)。与本专利技术的实施例有关的背景以下描述的本专利技术的实施例解决与当前的连续且重叠的数据流存储器收集操作相关联的低效。正如本文中所使用的,“连续”表示对存储器位置的顺序访问(例如,访问存储在顺序存储器位置中的16个元素)。“重叠”表示相同的数据元素中的一些以相继访问的方式被访问。图8示出其中顺序存储器访问801-804从连续增加的存储器位置(地址0_3)读取数据流815的重叠部分。存储器访问801读取在存储器位置addrO处开始的数据元素a-h ;地址指针然后从addrO移动到addrl,并且存储器访问802读取数据元素b_I ;地址指针然后移动到addr2,并且存储器访问803读取数据元素c_j ;最后地址指针移动到addr3,并且存储器访问804读取数据元素d-k。因此,在当前实现中,诸如图8所示,存在与对数据流815的迭代访问的数量相同的单独存储器请求。这种操作方式的缺点是增加指令数,导致代码膨胀以及花费在合并指令之间的相关性上的潜在可能的增加的循环。另外,这种操作可导本文档来自技高网...

【技术保护点】
一种用于执行指令的处理器,所述指令用于执行以下各项操作:确定N个矢量寄存器的集合,以将存储在系统存储器中始于存储器位置i=0,j=0和k=0处的数据流的N个指定部分读入所述N个矢量寄存器的集合;对于所述数据流的N个指定部分中的每一个,确定系统存储器地址;在系统存储器地址处从系统存储器获取所述数据流的N个指定部分;将所述数据流的N个指定部分存储到N个矢量寄存器;以及对于从i=1至X,j=0至Y以及k=0至Z的所有存储器位置,迭代上述操作,其中X、Y和Z是正整数。

【技术特征摘要】
【国外来华专利技术】1.一种用于执行指令的处理器,所述指令用于执行以下各项操作: 确定N个矢量寄存器的集合,以将存储在系统存储器中始于存储器位置i = O,j = O和k = O处的数据流的N个指定部分读入所述N个矢量寄存器的集合; 对于所述数据流的N个指定部分中的每一个,确定系统存储器地址; 在系统存储器地址处从系统存储器获取所述数据流的N个指定部分; 将所述数据流的N个指定部分存储到N个矢量寄存器;以及 对于从i = l至X,j = 0至Y以及k = 0至Z的所有存储器位置,迭代上述操作,其中X、Y和Z是正整数。2.如权利要求1所述的处理器,其特征在于,确定系统存储器地址包括根据指令直接确定第一系统存储器地址以及通过将滑动值的倍数与第一系统存储器地址相加来计算剩余的N -1个地址。3.如权利要求2所述的处理器,其特征在于,所述滑动值被设定为等于数据流的数据元素的大小。4.如权利要求1所述的处理器,其特征在于,所述数据流的部分包括所述数据流的数据元素。5.如权利要求1所述的处理器,其特征在于,所述指令被指定为形式INSTRUCTIONREGI, COUNT, MEML0CAT10N(指令寄存器1,计数,MEM位置),其中REGl包括用于存储数据流的第一部分的第一矢量寄存器,COUNT包括要从系统存储器获取的数据流的部分的数目,MEML0CAT10N包括数据流的第一部分的存储器位置。6.如权利要求5所述的处理器,其特征在于,对于数据流的16个部分,COUNT被设定为值16。7.如权利要求1所述的处理器,其特征在于,数据流的N个部分中的每一个包括浮点值,且其中N个矢量寄存器中的每一个包括浮点寄存器。8.如权利要求7所述的处理器,其特征在于,浮点值中的每一个包括标量浮点值。9.如权利要求7所述的处理器,其特征在于,浮点值中的每一个包括双浮点值。10.如权利要求1所述的处理器,其特征在于,数据流的N个部分中的每一个包括整数值。11.如权利要求10所述的处理器,其特征在于,整数值中的每一个包括打包双字值。12.如权利要求10所述的处理器,其特征在于,整数值中的每一个包括打包四字值。13.—种方法,包括: 确定N个矢量寄存器的集合,以将存储在系统存储器中的数据流的N个指定部分读入所述N个矢量寄存器的集合; 对于所述数据流的N个指定部分中的每一个,确定系统存储器地址; 在系统存储器地址处从系统存储器获取所述数据流的N个指定部分;以及 将所述数据流的N个指定部分存储到N个矢量寄存器。14.如权利要求13所述的方法,其特征在于,确定系统存储器地址包括根据指令直接确定第一系统存储器地址以及通过将滑动值的倍数与第一系统存储器地址相加来计算剩余的N -1个地址。15.如权利要求14所述的方法,其特征在于,所述滑动值被设定为等于数据流的数据元素的大小。16.如权利要求13所述的方法,其特征在于,所述数据流的部分包括所述数据流的数据元素。17.如权利要求13所述的方法,其特征在于,所述指令被指定为形式INSTRUCTIONREGI, COUNT, MEML0CAT10N(指令寄存器1,计数,MEM位置),,其中REGl包括用于存储数据流的第一部分的第一矢量寄存器,COUNT包括要从系统存储器获取的数据流的部分的数目,MEML0CAT10N包括数据流的第一部分的存储器位置。18.如权利要求17所述的方法,其特征在于,对于数据流的16个部分,COUNT被设定为值16。19.如权利要求13所述的方法,其特征在于,数据流的N个部分中的每一个包括浮点值,且其中N个矢量寄存器中的每一个包括浮点寄存器。20.如权利要求19所述的方法,其特征在于,浮...

【专利技术属性】
技术研发人员:A·杰哈
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

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

1