用于减少短整数乘法数量的系统、装置和方法

文档序号:6540620阅读:163来源:国知局
用于减少短整数乘法数量的系统、装置和方法
【专利摘要】公开一种用于减少短整数乘法数量的系统、装置和方法。描述用于仅使用一次乘法来计算第一源操作数数据值的平方、第二源操作数数据值的平方以及第一和第二源操作数数据的乘法的系统、方法和装置。
【专利说明】明了本发明,其中类似标记指示相似元素,
里器(处理器核)的示例性实施例的框图。的实施例。
法的实施例。
过華的示例性方法。
?器架构700的框图。
民例性有序流水线以及示例性寄存器重命包括在处理器中的有序架构核示例性实施构核的框图。
I构的框图,该核可以是芯片中的若干逻辑X132所述,使用多个寄存器映射和池)的一指出,否则短语寄存器架构、寄存器文件和?指定寄存器的方式。在期望特殊性的情况字器架构中的寄存器/文件,同时不同的形勿理寄存器、重排序缓冲器、引退寄存器、寄定的指令格式定义多个字段(位数、位的位I操作数。给定的指令利用给定的指令格式3勺指令序列,其中序列中的每个指令是指令
5用、咖3 (识别、挖掘和合成)应用/视觉和:缩/解压缩、语音识别算法和音频处理)通居并行性”)。单指令多数据(3110)指的是卜类型。3頂0技术尤其适用于处理器,这些山分到多个固定大小的数据元素中,每个数可被指定为源操作数,该源操作数作为四个元素,而目的地向量操作数中的数据元素被称为目的地或结果数据元素。这些源向量操作数具有相同尺寸且包含相同宽度的数据元素,因此它们包含相同数量的数据元素。两个源向量操作数中的相同位位置中的源数据元素形成数据元素对(也称为相对应的数据元素;即,每个源操作数的数据元素位置O中的数据元素相对应,每个源操作数的数据元素位置I中的数据元素相对应,等等)。SIMD指令指定的操作在这些源数据元素对中的每对上单独执行,以生成匹配数量的结果数据元素,并且因此每对源数据元素具有相对应的结果数据元素。因为操作是垂直的,且因为结果向量操作数尺寸相同,具有相同数量的数据元素,且结果数据元素以与源向量操作数相同的数据元素顺序存储,结果数据元素在结果向量操作数中的位位置与源向量操作数中的相对应源数据元素对相同。除示例性SMD指令类型外,存在各种其它类型的SMD指令(例如,仅具有一个源向量操作数或具有两个以上的源向量操作数;以水平方式操作;生成不同尺寸的结果向量操作数,具有不同尺寸的数据元素和/或具有不同的数据元素顺序)。应理解,术语目的地向量操作数(或目的地操作数)被定义为执行由指令指定的操作的直接结果,包括该目的地操作数在位置处的存储(在寄存器中或在该指令指定的存储器地址处),使得它可由另一个指令访问作为源操作数(通过另一个指令对该相同位置的指定)。
[0023]例如由丨ntd:?Core?处理器(具有包括x86、MMX?、流SMD扩展(SSE)、SSE2、SSE3、SSE4.USSE4.2指令的指令集)所使用的SMD技术在应用性能上带来了极大的提高(Core?和MMX?是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。另外的SMD扩展集称为高级向量扩展(AVX) (AVX1和AVX2)并且使用VEX编码方案,已经发行和/或出版(例如,参见Intel?) 64和IA-32架构软件开发者手册,2011年10月;以及Intel.?高级向量扩展编程参考,2011年6月)。
[0024]一些常规数学运算,诸如a2+a*b+b2和a [i] =b [i]2,对矩阵和长数字乘法而言十分常见。这种数学运算使用大量乘法指令,这些乘法指令在现代CPU的等待时间方面仍然代价昂贵。例如,令a、b是以B为基的无符号整数。计算a2+a*b+b2的代码是:
1:a—sq=a氺a;
2: a—times—b=a氺b;
3:b—sq=b*b;
4:三个乘法相加
[0025]对于现代CPU,每个乘法耗用约5个循环,因此3个乘法的总等待时间为15个循环。
[0026]以下是指令集中通常被称为平方一乘法(square-multiply, SQRMUL)指令的指令实施例以及可以用于改进等待时间的系统、架构、指令格式等的实施例。SQRMUL的执行计算第一源操作数数据值的平方、第二源操作数数据值的平方、以及第一和第二源操作数数据的乘法,并且将全部三个计算存储在单个目的地操作数中。
[0027]图1示出SQRMUL指令的示例性执行。两个源寄存器101和103分别持有值A和B。这些值由执行逻辑107处理,以产生A2、A*B、以及B2。这些结果被存储在目的地寄存器105中。该寄存器可以是通用寄存器(例如双字尺寸寄存器)或者(具有用于存储所计算值的数据元素位置)打包数据寄存器。虽然示出特定顺序,但是可以使用任何其它顺序来存储所计算的值。
[0028]图2是用于执行一个或多个SQRMUL指令204的处理器(处理器核)200的示例性实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,用在台式机、膝上型计算机、服务器等计算机中的类型)。替换地,处理器可以是专用处理器。合适的专用处理器的例子包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)、以及控制器,这里仅给出几个示例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、上述处理器的各种混合、或者完全其他类型的处理器中的任一个。
[0029]处理器200包括架构上可见的寄存器(例如,架构寄存器文件)205。架构寄存器还可在本文中被简称为寄存器。除非另行指出或显而易见,短语架构寄存器、寄存器文件和寄存器在本文中被用于指代这样的寄存器:该寄存器对于被宏指令或汇编语言指令指定来标识操作数的软件和/或编程器和/或寄存器而言是可见。这些寄存器与给定微架构(例如,由指令使用的临时寄存器、重排序缓冲器、引退(retirement)寄存器等)中的其他非架构或非架构可视的寄存器形成对比。寄存器通常表示管芯上处理器存储位置。所例示的架构寄存器包括打包数据寄存器206。打包数据寄存器中的每一个可操作用于存储打包或向量数据。所例示的架构寄存器还包括打包数据操作掩码寄存器207。打包数据操作掩码寄存器中的每一个可操作用于存储打包数据操作掩码。在本说明书中这些寄存器可被称为写掩码寄存器。打包数据操作数可被存储在打包数据寄存器207中。
[0030]处理器还包括执行逻辑208。执行逻辑可操作用于执行或处理一个或多个SQRMUL指令204。在一些实施例中,执行逻辑可包括特定逻辑(例如,可能与固件组合的特定电路或硬件)以执行这些指令。
[0031]示例件SQRMUL格式
[0032]该指令的示例性格式是“SQRMUL DEST, SOURCE I, SOURCE 2”,其中所有这些操作数是寄存器。在一些实施例中,寄存器是通用寄存器。这些寄存器可以采用任何尺寸,包括但不限于,8位、16位、32位、64位和128位。在其它实施例中,寄存器可以是浮点寄存器或打包数据寄存器。在其它实施例中,源是通用寄存器,且目的地是打包数据寄存器。在大多数实施例中,源寄存器存储无符号的整数。
[0033]执行SQRMUL的示例性方法
[0034]图3示出处理器中SQRMUL指令的执行的实施例。在301,获取具有第一和第二源寄存器操作数、目的地寄存器操作数、和操作码的SQRMUL指令。
[0035]在303,通过解码逻辑解码SQRMUL指令。
[0036]在305,检索/读取源操作数的值。例如,读取源寄存器。
[0037]在307,由执行资源(诸如一个或多个功能单元)执行所解码的SQRMUL指令(或者包括这种指令的操作,诸如微操作),以计算第一源操作数数据值的平方、第二源操作数数据值的平方、以及第一和第二操作数数据的乘法,并且将全部三个计算存储在单个目的地操作数中。
[0038]在309,所计算的值被存储到目的地存储器操作数中。这些值可以以特定顺序存储,诸如从最不重要到最重要(a2,a*b,到B2)或者相反顺序,等等。在一些实施例中,所计算的值被存储在打包数据寄存器的数据元素中。
[0039]尽管已经单独地示出307和309,但在一些实施例中,它们可作为指令执行的一部分一起执行。
[0040]图4和图5示出处理SQRMUL指令的方法的实施例。在这些实施例中,L被定义为以位计的通用寄存器尺寸(32或64),a和b分别是以B为基的第一和第二操作数的无符号整数,N等于以位为单位的log2(B)。在以下示例中,a或A表示存储在第一源中的数据,b或B表示存储在第二源中的数据。在一些实施例中,移位(或类似操作)多个位。
[0041]图4示出处理SQRMUL指令的方法的实施例。这是一般情况,其中L>=6N。在该实施例中,假设之前已经执行操作301-305中的一些或全部,然而未示出它们以免混淆以下给出的细节。例如,未示出获取和解码,也未示出操作数检索。
[0042]在401,构建临时变量t。在一些实施例中,该临时变量通过将A左移位2N并用B对移位的值进行OR (或)运算来构建。换言之,t=(A〈〈2*N) |B。通常,这耗用两个时钟循环。所得的t值为A*22N+B。
[0043]在403,计算临时变量的平方。这创建了第二临时变量t=t*t=A2*24N+2AB*22N+B2。在一些情况下,该乘法耗用5个循环。
[0044]在405,从第二临时变量提取A2、A*B、和B2。通过将第二临时变量右移位4N来提取A2。换言之, A2=t》4N。通过将第二临时变量与((I左移位2N)减I)的值进行AND (与)运算并且右移位2N加1,来提取A*B。换言之,A*B=(t&(l〈〈2N-l))》(2N+l)。最后,通过将第二临时变量与((2左移位N)减I)的值的I (数个I)补码进行AND (与)运算,来提取B2。换言之,B2=t&~(2〈〈N-1)。在一些系统中,这总共耗用2-3个循环。
[0045]在407,存储所提取的值。在一些实施例中,将A2、A*B、和B2分别存储在双字的低、中和高四分之一中。在其它实施例中,将这些值存储在打包数据寄存器的独立数据元素中。
[0046]图5示出处理SQRMUL指令的方法的实施例。这是一般情况,其中4N=L。在该实施例中,假设之前已经执行操作301-305中的一些或全部,然而未示出它们以免混淆以下给出的细节。例如,未示出获取和解码,也未示出操作数检索。
[0047]在501,构建临时变量t。在一些实施例中,该临时变量通过将A左移位2N并用B对移位的值进行OR (或)运算来构建。换言之,t=(A〈〈2*N) |B。通常,这耗用两个时钟循环。所得的t值为A*22N+B。
[0048]在503,计算临时变量的平方并将其存储在第一和第二位置。这创建存储A2*24N+2AB*22N+B2的位置。在一些情况下,该乘法耗用5个循环。在一些实施例中,第一和第二位置是寄存器。
[0049]在505,提取A2、A*B、和B2。A2是存储在第一位置中的值。换言之,A2=位置I。通过将存储在第二位置中的数据右移位(2N加1),提取A*B。换言之,A*B=位置2>>(2N+1).最终,通过将第二位置的内容与(2^减I)的值的I (数个I)补码进行AND (与)运算,提取B2。换言之,B2=位置2&~(2〈〈2N-1)。在一些系统中,这总共耗用I个循环。
[0050]在507,存储所提取的值。在一些实施例中,将A2、A*B、和B2分别存储在双字的低、中和高四分之一中。在其它实施例中,将这些值存储在打包数据寄存器的独立数据元素中。
[0051]图6示出在图4和5的流程之间进行选择的示例性方法。在601,判定4N=L是否成立。如果是,在603,使用图5的流程。如果否,在605,使用图4的流程。
[0052]虽然以上是针对SQRMUL指令进行描述的,但是在不支持SQRMUL的处理器中,以上代码序列可以由乘法指令执行。
[0053]示例性寄存器架构
[0054]图7是根据本发明的一个实施例的寄存器架构700的框图。在所示的实施例中,存在512位宽的32个向量寄存器710,这些寄存器被标注为zmmO至zmm31。较低的16个zmm寄存器的较低阶256位覆盖在寄存器ymmO-16上。较低的16个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)覆盖在寄存器xmmO-15上。
[0055]通用寄存器725 —在所示的实施例中,存在与现有x86寻址模式一起使用以对存储器操作数寻址的十六个64位通用寄存器。通过名称RAX、RBX、RCX、RDX、RBP、RS1、RD1、RSP>以及R8至R15来标注这些寄存器。
[0056]与MMX打包整数平坦寄存器文件750重叠的标量浮点堆栈寄存器文件(x87堆栈)745,在所示的实施例中,x87堆栈是用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作的8元素堆栈,而MMX寄存器用于对64位打包整数数据执行操作、以及保留操作数用于在MMX和XMM寄存器之间执行的一些操作。
[0057]本发明的替换实施例可使用更宽或更窄的寄存器。另外,本发明的替换实施例可使用更多、更少、或不同的寄存器文件和寄存器。
[0058]示例性核架构、处理器、以及计算机架构
[0059]处理器核可以以不同的方式、出于不同的目的、并且在不同的处理器中实现。举例而言,这些核的实现可包括:1)期望用于通用计算的通用有序核;2)期望用于通用计算的高性能通用无序核;3)期望主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括期望用于通用计算的一个或多个通用有序核和/或期望用于通用计算的一个或多个通用无序核的CPU ;以及2)包括期望主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这些不同的处理器导致不同的计算机系统架构,可包括:1)与CPU分开的单独芯片上的协处理器;2)与CPU相同的封装中的单独管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在此情况下,这种协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑、或者专用核);以及4)在相同管芯上可包括所述CPU(有时被称为应用核或应用处理器)、上述协处理器、以及附加功能的芯片上的系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
[0060]示例性核架构
[0061]有序和无序核框图
[0062]图8A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图8B是示出根据本发明的实施例的要包括在处理器中的有序架构核示例性实施例以及示例性寄存器重命名、无序发布/执行架构核的框图。图8A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名、无序发布/执行流水线和核。假设有序方面是无序方面的子集,将描述无序方面。
[0063]在图8A中,处理器流水线800包括获取级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、回写/存储器写入级818、异常处理级822、以及提交级824。
[0064]图SB示出处理器核890,该核包括耦合到执行引擎单元850的前端单元830,并且两者都耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或其他核类型。作为另一选项,核890可以是专用I示任何数量的不同调度器,包括:预约站、里寄存器文件单元858。每个物理寄存器文中不同的物理寄存器文件存储一种或多种.整数、打包浮点、向量整数、向量浮点、状态卜)等。在一个实施例中,物理寄存器文件单这些寄存器单元可提供架构向量寄存器、文件单元858由引退单元854重叠,以示出目重排序缓冲器和引退寄存器文件;使用特寄存器映射和寄存器池等)的各种方式。引\行集群860。执行集群860包括一组一个I访问单元864。执行单元862可执行各种类型的数据(例如,标量浮点、打包整数、打;施例可包括专属于专用功能或功能集的大单元或者全部用于执行所有功能的多个执358、以及执行集群860被示为可能是多个,子离的流水线(例如,标量整数流水线、标量
[0068]作为示例,示例性寄存器命名、无序发布/执行核架构可如下地实现流水线800:I)指令获取838执行获取和长度解码级802和804 ;2)解码单元840执行解码级806 ;3)重命名/分配器单元852执行分配级808和重命名级810 ;4)调度器单元856执行调度级812 ;5)物理寄存器文件单元858和存储器单元870执行寄存器读取/存储器读取级814 ;执行集群860执行执行级816 ;6)存储器单元870和物理寄存器文件单元858执行回写/存储器写入级818 ;7)各个单元可涉及异常处理级822;以及8)引退单元854和物理寄存器文件单元858执行提交级824。
[0069]核890可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维尔市MIPS技术公司的MIPS指令集、加利福尼亚州森尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核890包括支持打包数据指令集扩展(例如,AVXl、AVX2和/或先前描述的一些形式的一般向量友好指令格式(U=O和/或U=I))的逻辑,从而允许很多多媒体应用使用的操作能够使用打包数据来执行。
[0070]应当理解,核可支持多线程(执行两组或两组以上的平行操作或线程集),并且可以通过包括分时多线程、同时多线程(其中单个物理核为每一线程提供物理核,物理核是同时多线程的)、或者其组合(例如,分时获取和解码以及此后诸如在Intel? Hyperthreading技术中的同时多线程)的各种方式实现。
[0071]尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元834/874以及共享的L2高速缓存单元876,但是替换实施例可具有用于指令和数据两者的单个内部高速缓存,诸如举例而言,一级(LI)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存的组合,该外部高速缓存在核和/或处理器外部。替换地,所有高速缓存可在核和/或处理器外部。
[0072]专用示例性有序核架构
[0073]图9A-B示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。依据应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口、以及其他必要的存储器I/O逻辑进行通信。
[0074]图9A是根据本发明的实施例的连接到片上互联网络902且具有二级(L2)高速缓存的本地子集904的单个处理器核的框图。在一个实施例中,指令解码器900支持具有打包数据指令集扩展的x86指令集。LI高速缓存906允许对高速缓存存储器进行低等待时间访问而进入标量和向量单元。尽管在一个实施例中(为了简化设计)标量单元908和向量单元910使用分离的寄存器集合(分别是标量寄存器912和向量寄存器914)并且在两者之间传输的数据被写入存储器且随后读取回到一级(LI)高速缓存906或从LI高速缓存906读取,但是本发明的替换实施例可使用不同的方法(例如,使用单个寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信路径)。
[0075]L2高速缓存的本地子集904是分成分离的本地子集(每个处理器核一个本地子集)的全局L2高速缓存的一部分。每个处理器核具有到L2高速缓存的其自己的本地子集904的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集904中,并且可与访问其自己的本地L2高速缓存子集的其他处理器核并行地快速存取。由处理器核写入的数据被存储在其自己的L2高速缓存子集904中,并且如果必要则从其他子集清除(flush)。环形网络确保共享数据的一致性。环形网络是双向的以允许在芯片内诸如处理器核、L2高速缓存、以及其他逻辑块之类的代理相互通信。每个环形数据路径是每个方向1012位宽。
[0076]图9B是根据本发明的实施例的图9A中的处理器核的一部分的展开图。图9B包括LI高速缓存906的LI数据高速缓存906A部分、以及关于向量单元910和向量寄存器914的更多细节。具体地,向量单元910是16宽向量处理单元(VPU)(参见16宽ALU928),该向量处理单元执行整数、单精度浮动和双精度浮动的指令中的一个或多个。VPU支持在存储器输入上使用拌和(swizzle)单元920拌和寄存器输入、使用数字转换单元922A-B数字转换、以及使用复制单元924复制。
[0077]具有集成存储器控制器和图形器件的处理器
[0078]图10是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形器件的处理器1000的框图。图10的实线框示出了处理器1000,处理器1000具有单个核1002A、系统代理1010、一组一个或多个总线控制器单元1016,而可选附加的虚线框示出了替代的处理器1000,具有多个核1002A-N、系统代理单元1010中的一组一个或多个集成存储器控制器单元1014以及专用逻辑1008。
[0079]由此,处理器1000的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑1008、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1002A-N的CPU ;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核1002A-N的协处理器;以及3)具有作为大量通用有序核的核1002A-N的协处理器。由此,处理器1000可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU (通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或30个以上的核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器1000可以是一个或多个衬底的一部分,和/或在一个或多个衬底上使用大量处理技术(诸如举例而言,BiCM0S、CM0S、或NM0S)中的任一种技术实现。
[0080]存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元1006、以及耦合到一组集成存储器控制器单元1014的外部存储器(未示出)。一组共享高速缓存单元1006可包括一个或多个中级高速缓存(诸如二级(L2)、三级(L3)、四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1012使集成图形逻辑1008、一组共享高速缓存单元1006、以及系统代理单元1010/集成存储器控制器单元1014互连,但是替换实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元1006与核1002A-N之间维持一致性。
[0081]在一些实施例中,核1002A-H中的一个或多个核能够多线程。系统代理1010包括协调和操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(P⑶)和显示单元。PCU可以是或者包括调整核1002A-N的功率状态必需的逻辑和组件、以及集成图形逻辑1008。显示单元用于驱动一个或多个外部连接的显示器。
[0082]核1002A-N在架构指令集方面可以是同质的或者异质的,即核1002A-N中的两个或两个以上核可以能够执行相同的指令集,而其他核可以能够只执行该指令集的子集或者不同的指令集。
[0083]示例性计算机架构
[0084]图11-14是示例性计算机架构的框图。在本领域中已知的用于膝上型计算机、台式计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够结合处理器和/或其他执行逻辑的各种各样系统或电子设备通常是合适的。
[0085]现在参考图11,所示出的是根据本发明一个实施例的系统1100的框图。系统1100可包括一个或多个处理器1110、1115,这些处理器耦合到控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190和输入/输出中枢(10H)1150(它们可在分离的芯片上),GMCHl 190包括耦合到存储器1140和协处理器1145的存储器和图形控制器,10H1150使输入/输出(I/O)设备1160耦合到GMCH1190。替换地,存储器和图形控制器中的一个或两个集成到处理器(如本文中所描述的)中,存储器1140和协处理器1145直接耦合到处理器1110、以及在单个芯片中具有10H1150的控制器中枢1120。
[0086]附加处理器1115的任选特征在图11中用虚线指示。每个处理器1110、1115可包括本文中所描述的处理核中的一个或多个,并且可以是一些版本的处理器1000。
[0087]存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或者两者的组合。对于至少一个实施例,控制器中枢1120经由诸如前侧总线(FSB)之类的多点总线(mult1-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1195与处理器1110、1115进行通信。
[0088]在一个实施例中,协处理器1145是专用处理器,诸如举例而言,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1120可包括集成图形加速器。
[0089]按照包括架构、微架构、热、功耗特征等等优点的度量谱,物理资源1110、1115之间存在多种差别。
[0090]在一个实施例中,处理器1110执行控制通用类型的数据处理操作的指令。协处理器指令可被嵌入这些指令内。处理器1110将这些协处理器指令识别为应由附连的协处理器1145执行的类型。因此,处理器1110在协处理器总线或者其他互连上向协处理器1145发布这些协处理器指令(或者表示协处理器指令的控制信号)。协处理器1145接受和执行接收到的协处理器指令。
[0091]现在参照图12,所示出的是根据本发明实施例的更具体的第一示例性系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,并且包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个可以是某个版本的处理器1000。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
[0092]处理器1270和1280分别被示为包括集成存储器控制器(MC)单元1272和1282。处理器1270还包括作为其总线一部分的控制器单元点对点(P-P)接口 1276和1278 ;类似地,第二处理器1280包括P-P接口 1286和1288。处理器1270、1280可使用P-P接口电路1278、1288经由点对点(P-P)接口 1250交换信息。如图12所示,MC1272和1282使处理器分别耦合到存储器,即存储器1232和存储器1234,这些存储器可以是在本地附连到相应处理器的主存储器的部分。
[0093]处理器1270、1280可各自使用点对点接口电路1276、1294、1286、1298经由各个P-P接口 1252、1254与芯片组1290交换信息。芯片组1290可任选地经由高性能接口 1239与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如举例而言,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
[0094]共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
[0095]芯片组1290可经由接口 1296耦合到第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
[0096]如图12所示,各种I/O设备1214可与总线桥1218 —起耦合到第一总线1216,该总线桥1218使第一总线1216耦合到第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者其他处理器之类的一个或多个附加处理器1215耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1220,包括例如键盘和/或鼠标1222、通信设备1227以及可以包括指令/代码和数据1230的存储单元1228 (诸如盘驱动器或其它海量存储设备)。此夕卜,音频1/01224可耦合到第二总线1220。注意,其他架构是可能的。例如,代替图12的点对点架构,系统可实现多点总线或者其他此类架构。
[0097]现在参考图13,示出了根据本发明的实施例的第二更具体的示例性系统1300的框图。图12和13中的类似元素使用类似附图标记,且在图13中省略了图12的某些方面以避免混淆图13的其它方面。
[0098]图13示出处理器1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL1272和1282包括集成存储器控制器单元且包括I/O控制逻辑。图13示出不仅存储器1232、1234耦合到CL1272、1282,而且I/O设备1314也耦合到控制逻辑1272、1282。传统I/O设备1315耦合到芯片组1290。
[0099]现在参照图14,所示出的是根据本发明实施例的SoC1400的框图。图14中的类似元件具有相似的附图标记。同样,虚线框是更多高级SoC上的任选特征。在图14中,互连单元1402耦合至:应用处理器1410,包括一组一个或多个核202A-N以及共享高速缓存单元1006 ;系统代理单元1010 ;总线控制器单元1016 ;集成存储器控制器单元1014 ;—组一个或多个协处理器1420,可以包括集成图形逻辑、图像处理器、音频处理器、视频处理器;静态随机存取存储器(SRAM)单元1430 ;直接存储器存取(DMA)单元1432 ;以及显示单元1440,用于耦合至一个或多个外部显示器。在一个实施例中,协处理器1420包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理製坐
[0100]本文中所公开的机构的实施例可以在硬件、软件、固件、或者这些实现方法的组合中实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。
[0101]诸如图12所示的代码1230之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
[0102]程序代码可以以高级过程或面向对象编程语言实现,以与处理系统进行通信。如果期望,程序代码则还可以以汇编或机器语言实现。实际上,本文中所描述的机构在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
[0103]至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
[0104]这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPR0M)、闪存、电可擦除可编程只读存储器(EEPROM),相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
[0105]因此,本发明的实施例还包括包含指令或者包含设计数据(诸如硬件描述语言(HDL))的非瞬态有形机器可读介质,该非瞬态有形机器可读介质定义本文中所描述的结构、电路、装置、处理器、和/或系统特征。这些实施例还可被称为程序产品。
[0106]仿真(包括二进制翻译、代码变形等)
[0107]在一些情况下,指令转换器可用于将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或者以其他方式转换成由核处理的一个或多个其他指令。指令转换器可以在软件、硬件、固件、或者其组合中实现。指令转换器可在处理器上、在处理器以外、或者部分在处理器上且部分在处理器以外。
[0108]图15是对比根据本发明实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是替换地指令转换器可以以软件、固件、硬件、或者其各种组合实现。图15示出以高级语言1502的程序可使用x86编译器1504进行编译以生成x86 二进制代码1506,该x86 二进制代码1506可由具有至少一个x86指令集核的处理器1516在本机上执行。具有至少一个x86指令集核1516的处理器表示可通过兼容地执行或者以其他方式处理(I)因特尔x86指令集核的指令集的实质部分或者(2)以在具有至少一个x86指令集核的因特尔处理器上运行为目标的对象代码版本的应用或其他软件来执行与具有至少一个x86指令集核的因特尔处理器基本相同的功能以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的任何处理器。x86编译器1504表示可操作用于生成在具有或者没有附加链接处理的情况下可在具有至少一个x86指令集核1516的处理器上执行的x86 二进制代码1506 (例如,对象代码)的编译器。类似地,图15示出以高级语言1502的程序可使用替换指令集编译器1508进行编译,以生成可由不具有至少一个x86指令集核的处理器1514(例如,具有执行加利福尼亚州森尼维尔市MIPS技术公司的MIPS指令集和/或执行加利福尼亚州森尼维尔市ARM控股公司的ARM指令集的核的处理器)在本机上执行的替换的指令集二进制代码1510。该指令转换器1512被用于将x86 二进制代码1506转换为可由不具有x86指令集核的处理器1514在本机上执行的代码。该经转换的代码不太可能与替换指令集二进制代码1510 —样,因为难以制造能完成这样的指令转换器;然而,经转换的代码将完成通用操作,并由替换指令集的指令所构成。由此,指令转换器1512表示通过仿真、模拟、或者任何其他处理允许不具有x86指令集处理器或核的处理器或者其他电子设备执行x86 二进制代码1506的软件、固件、硬件、或者其组合。
[0109]本发明的实施例包括包含解码平方一乘法(SQRMUL)指令的解码逻辑、执行逻辑的装置,SQRMUL指令包括第一源操作数、第二源操作数和目的地操作数,执行逻辑用于:计算第一源操作数数据值的平方,计算第二源操作数数据值的平方,计算第一和第二操作数数据的乘法,并将结果存储在目的地操作数中,其中计算仅使用一个乘法运算。
[0110]在该装置的一些实施例中,以下的一个或多个彼此结合或彼此独立地实现:i)目的地操作数是通用寄存器;ii)第一源操作数数据值的平方存储在目的地操作数的低阶位上,第二源操作数数据值的平方存储在目的地操作数的高阶位上,并且第一和第二操作数数据的乘法存储在目的地操作数的中阶位上;iii)目的地操作数是打包数据寄存器,且三个计算中的每一个存储在打包数据寄存器的不同数据元素中;iv)执行逻辑通过产生临时变量、对临时变量进行平方以及将临时变量右移位4N位来计算第一源操作数数据值的平方,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR(或)运算来产生的,其中N为1g2 (数据值的基);v)执行逻辑通过产生临时变量、对临时变量进行平方、将平方的临时变量与((2左移位2")减I)的值进行AND(与)、以及右移位2N加I来计算第一源操作数和第二源操作数数据值的乘法,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2 (数据值的基);vi)执行逻辑通过产生临时变量、对临时变量进行平方、将平方的临时变量与((I左移位N)减I)的值的I (数个I)补码进行AND (与)运算来计算第二源操作数数据值的平方,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2 (数据值的基)。
[0111]本发明的实施例包括在计算机处理器中执行平方一乘法(SQRMUL)指令的方法,SQRMUL指令包括第一源操作数、第二源操作数和目的地操作数,该方法包括:计算第一源操作数数据值的平方,计算第二源操作数数据值的平方,计算第一和第二操作数数据的乘法,并将结果存储在目的地操作数中,其中计算仅使用一个乘法运算。
[0112]在该方法的一些实施例中,以下的一个或多个彼此结合或彼此独立地实现:i)目的地操作数是通用寄存器;ii)第一源操作数数据值的平方存储在目的地操作数的低阶位上,第二源操作数数据值的平方存储在目的地操作数的高阶位上,并且第一和第二操作数数据的乘法存储在目的地操作数的中阶位上;iii)目的地操作数是打包数据寄存器,且三个计算中的每一个存储在打包数据寄存器的不同数据元素中;iv)通过产生临时变量、对临时变量进行平方以及将临时变量右移位4N位来计算第一源操作数数据值的平方,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2 (数据值的基);v)通过产生临时变量、对临时变量进行平方、将平方的临时变量与((2左移位2N)减I)的值进行AND (与)运算、以及右移位2N加I来计算第一源操作数和第二源操作数数据值的乘法,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2(数据值的基);vi)通过产生临时变量、对临时变量进行平方、将平方的临时变量与((I左移位N)减I)的值的I (数个I)补码进行AND (与)运算来计算第二源操作数数据值的平方,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2 (数据值的基)。
[0113]本发明的实施例包括有形机器可读存储介质,该存储介质包括由处理器执行时使处理器执行方法的代码,该方法执行平方一乘法(SQRMUL)指令,该SQRMUL指令包括第一源操作数、第二源操作数和目的地操作数,该方法包括:计算第一源操作数数据值的平方,计算第二源操作数数据值的平方,计算第一和第二操作数数据的乘法,并将结果存储在目的地操作数中,其中计算仅使用一个乘法运算。
[0114]在该有形机器可读介质的一些实施例中,以下的一个或多个彼此结合或彼此独立地实现:i)目的地操作数是通用寄存器;ii)第一源操作数数据值的平方存储在目的地操作数的低阶位上,第二源操作数数据值的平方存储在目的地操作数的高阶位上,并且第一和第二操作数数据的乘法存储在目的地操作数的中阶位上;iii)目的地操作数是打包数据寄存器,且三个计算中的每一个存储在打包数据寄存器的不同数据元素中;iv)通过产生临时变量、对临时变量进行平方以及将临时变量右移位4N位来计算第一源操作数数据值的平方,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2 (数据值的基);v)通过产生临时变量、对临时变量进行平方、将平方的临时变量与((2左移位2n)减I)的值进行AND (与)运算、以及右移位2N加I来计算第一源操作数和第二源操作数数据值的乘法,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR(或)运算来产生的,其中N为1g2(数据值的基);vi)通过产生临时变量、对临时变量进行平方、将平方的临时变量与((I左移位N)减I)的值的I (数个I)补码进行AND (与)运算来计算第二源操作数数据值的平方,该临时变量是通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR (或)运算来产生的,其中N为1g2 (数据值的基)。
【权利要求】
1.一种装置,包括: 用于解码平方一乘法(SQRMUL)指令的解码逻辑,所述SQRMUL指令包括第一源操作数、第二源操作数和目的地操作数; 执行逻辑,用于: 计算第一源操作数数据值的平方, 计算第二源操作数数据值的平方, 计算第一和第二操作数数据的乘法,其中所述计算仅使用一个乘法运算;以及 将结果存储在目的地操作数中。
2.如权利要求1所述的装置,其特征在于,目的地操作数是通用寄存器。
3.如权利要求1所述的装置,其特征在于,第一源操作数数据值的平方存储在目的地操作数的低阶位上,第二源操作数数据值的平方存储在目的地操作数的高阶位上,并且第一和第二操作数数据的乘法存储在目的地操作数的中阶位上。
4.如权利要求1所述的装置,其特征在于,目的地操作数是打包数据寄存器,并且三个计算中的每一个被存储在打包数据寄存器的不同数据元素中。
5.如权利要求1所述的装置,其特征在于,执行逻辑用于通过以下来计算第一源操作数数据值的平方, 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方,以及 将临时变量右移位4N位,其中N为1g2 (数据值的基)。
6.如权利要求1所述的装置,其特征在于,执行逻辑用于通过以下来计算第一源操作数和第二源操作数的数据值的乘法, 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方, 将平方的临时变量与((2左移位2n)减I)的值进行AND运算, 右移位2N位加I,其中N为1g2 (数据值的基)。
7.如权利要求1所述的装置,其特征在于,执行逻辑用于通过以下来计算第二源操作数数据值的平方, 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方, 将平方的临时变量与((I左移位N)减I)的值的I补码进行AND运算,其中N为1g2 (数据值的基)。
8.一种在计算机处理器中执行平方一乘法(SQRMUL)指令的方法,SQRMUL指令包括第一源操作数、第二源操作数和目的地操作数,所述方法包括: 计算第一源操作数数据值的平方, 计算第二源操作数数据值的平方, 计算第一和第二操作数数据的乘法,其中所述计算仅使用一个乘法运算;以及将结果存储在目的地操作数中。
9.如权利要求8所述的方法,其特征在于,目的地操作数是通用寄存器。
10.如权利要求8所述的方法,其特征在于,第一源操作数数据值的平方存储在目的地操作数的低阶位上,第二源操作数数据值的平方存储在目的地操作数的高阶位上,并且第一和第二操作数数据的乘法存储在目的地操作数的中阶位上。
11.如权利要求8所述的方法,其特征在于,目的地操作数是打包数据寄存器,并且三个计算中的每一个被存储在打包数据寄存器的不同数据元素中。
12.如权利要求8所述的方法,其特征在于,计算第一源操作数数据值的平方包括: 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方,以及 将临时变量右移位4N位,其中N为1g2 (数据值的基)。
13.如权利要求8所述的方法,其特征在于,计算第一源操作数和第二源操作数数据值的乘法包括: 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量 , 对临时变量进行平方, 将平方的临时变量与((I左移位2N)减I)的值进行AND运算, 右移位2N位加I,其中N为1g2 (数据值的基)。
14.如权利要求8所述的方法,其特征在于,计算第二源操作数数据值的平方包括: 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方, 将平方的临时变量与((2左移位N)减I)的值的I补码进行AND运算,其中N为1g2 (数据值的基)。
15.一种包括代码的有形机器可读存储介质,所述代码由处理器执行时使处理器执行方法,所述方法执行平方一乘法(SQRMUL)指令,SQRMUL指令包括第一源操作数、第二源操作数和目的地操作数,所述方法包括: 计算第一源操作数数据值的平方, 计算第二源操作数数据值的平方, 计算第一和第二操作数数据的乘法,其中所述计算仅使用一个乘法运算;以及 将结果存储在目的地操作数中。
16.如权利要求15所述的方法,其特征在于,目的地操作数是通用寄存器。
17.如权利要求15所述的方法,其特征在于,第一源操作数数据值的平方存储在目的地操作数的低阶位上,第二源操作数数据值的平方存储在目的地操作数的高阶位上,并且第一和第二操作数数据的乘法存储在目的地操作数的中阶位上。
18.如权利要求15所述的方法,其特征在于,计算第一源操作数数据值的平方包括: 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量,对临时变量进行平方,以及 将临时变量右移位4N位,其中N为1g2 (数据值的基)。
19.如权利要求15所述的方法,其特征在于,计算第一源操作数和第二源操作数数据值的乘法包括: 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方, 将平方的临时变量与((I左移位2N)减I)的值进行AND运算, 右移位2N位加I,其中N为1g2 (数据值的基)。
20.如权利要求15所述的方法,其特征在于,计算第二源操作数数据值的平方包括: 通过将第一源操作数的数据值左移位2N并由第二源操作数的数据值对移位的值进行OR运算,产生临时变量, 对临时变量进行平方, 将平方的临时变量与((2左移位N)减I)的值的I补码进行AND运算,其中N为1g2 (数据值的基)。
【文档编号】G06F9/30GK104049940SQ201410095756
【公开日】2014年9月17日 申请日期:2014年3月14日 优先权日:2013年3月15日
【发明者】I·艾尔布瑞克特, E·乌尔德-阿迈德-瓦尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1