用于执行多个乘法操作的方法和装置的制造方法_5

文档序号:9235256阅读:来源:国知局

[0134] 在B类非存储器访问1505的指令模板的情况下,0字段1554的一部分被解释 为化字段1557A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器 访问的写掩码控制部分舍入控制类型操作1516的指令模板和无存储器访问的写掩码控制 VSIZE型操作1517的指令模板分别指定舍入1557A. 1和向量长度(VSIZE) 1557A. 2),而0 字段1554的其余部分区分要执行指定类型的操作中的哪一种。在无存储器访问1505指令 模板中,比例字段1560、位移字段1562A W及位移比例字段1562B不存在。
[0135] 在无存储器访问的写掩码控制的部分舍入控制型操作1510的指令模板中,0字 段1554的其余部分被解释为舍入操作字段1559A,并且停用异常事件报告(给定指令不报 告任何种类的浮点异常标志且不唤起任何浮点异常处理程序)。
[0136] 舍入操作控制字段1559A-正如舍入操作控制字段1558,其内容区分执行一组舍 入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入、W及就近舍入)。由此,舍入操作 控制字段1559A允许在每一指令的基础上改变舍入模式。在其中处理器包括用于指定舍入 模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段1550的内容优先于该寄 存器值。
[0137] 在无存储器访问的写掩码控制VSIZE型操作1517的指令模板中,0字段1554的 其余部分被解释为向量长度字段1559B,其内容区分要执行多个数据向量长度中的哪一个 (例如,168字节、256字节、或516字节)。
[0138] 在B类存储器访问1520的指令模板的情况下,0字段1554的一部分被解释为广 播字段1557B,其内容区分是否要执行广播型数据操纵操作,而0字段1554的其余部分被 解释为向量长度字段1559B。存储器访问1520的指令模板包括比例字段1560、W及任选的 位移字段1562A或位移比例字段1562B。
[0139] 针对通用向量友好指令格式1500,示出完整操作码字段1574包括格式字段1540、 基础操作字段1542 W及数据元素宽度字段1564。尽管示出了其中完整操作码字段1574包 括所有该些字段的一个实施例,但是在不是支持所有该些字段的实施例中,完整操作码字 段1574包括少于所有的该些字段。完整操作码字段1574提供操作码(opcode)。
[0140] 扩充操作字段1550、数据元素宽度字段1564W及写掩码字段1570允许在每一指 令的基础上W通用向量友好指令格式指定该些特征。
[0141] 写掩码字段和数据元素宽度字段的组合创建各种类型的指令,因为该些指令允许 基于不同的数据元素宽度应用该掩码。
[0142] 在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本发明的一些 实施例中,不同处理器或者处理器内的不同核可支持仅A类、仅B类、或者可支持两类。举 例而言,旨在用于通用计算的高性能通用无序核可仅支持B类,旨在主要用于图形和/或科 学(吞吐量)计算的核可仅支持A类,并且旨在用于两者的核可支持两者(当然,具有来自 两类的模板和指令的一些混合、但是并非来自两类的所有模板和指令的核在本发明的范围 内)。同样,单一处理器可包括多个核,所有核支持相同的类或者其中不同的核支持不同的 类。举例而言,在具有单独的图形和通用核的处理器中,图形核中的旨在主要用于图形和/ 或科学计算的一个核可仅支持A类,而通用核中的一个或多个可W是具有旨在用于通用计 算的仅支持B类的无序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一 处理器可包括既支持A类又支持B类的一个或多个通用有序或无序核。当然,在本发明的不 同实施例中,来自一类的特征也可在其他类中实现。可使W高级语言撰写的程序成为(例 如,及时编译或者静态编译)各种不同的可执行形式,包括;1)仅具有用于执行的目标处理 器支持的类的指令的形式;或者2)具有使用所有类的指令的不同组合而编写的替代例程 且具有选择该些例程W基于由当前正在执行代码的处理器支持的指令而执行的控制流代 码的形式。
[0143] 图12A-D是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。图 12A-D示出专用向量友好指令格式1600,其指定位置、尺寸、解释和字段的次序、W及那些 字段中的一些字段的值,在该个意义上该专用向量友好指令格式是专用的。专用向量友好 指令格式1600可用于扩展x86指令集,并且由此一些字段类似于在现有x86指令集及其扩 展(例如,AV幻中使用的那些字段或与之相同。该格式保持与具有扩展的现有x86指令集 的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段、W及立即数字段一 致。示出来自图11的字段,来自图12的字段映射到来自图11的字段。
[0144] 应当理解,虽然出于说明的目的在通用向量友好指令格式1500的上下文中参考 专用向量友好指令格式1600描述了本发明的实施例,但是本发明不限于专用向量友好指 令格式1600,除非另有声明。例如,通用向量友好指令格式1500构想各种字段的各种可能 的尺寸,而专用向量友好指令格式1600被示为具有特定尺寸的字段。作为具体示例,尽管 在专用向量友好指令格式1600中数据元素宽度字段1564被示为一位字段,但是本发明不 限于此(即,通用向量友好指令格式1500构想数据元素宽度字段1564的其他尺寸)。
[0145] 通用向量友好指令格式1500包括W下列出的按照图12A中示出的顺序的如下字 段。
[0146] EVEX前缀(字节0-3) 1602 四字节形式进行编码。
[0147] 格式字段1640巧VEX字节0,位[7:0])-第一字节巧VEX字节0)是格式字段 1640,并且它包含0x62 (在本发明的一个实施例中用于区分向量友好指令格式的唯一值)。
[0148] 第二一第四字节巧VEX字节1-3)包括提供专用能力的多个位字段。
[0149] REX字段1605巧VEX字节1,位[7-5])-由EVEX.R位字段巧VEX字节1,位[7]-R)、EVEX.X位字段巧VEX字节1,位[6]-幻W及(1557BEX字节1,位[引-B)组成。EVEX. R、EVEX.X和EVEX.B位字段提供与对应VEX位字段相同的功能,并且使用1补码的形式进行 编码,即ZMM0被编码为1611B,ZMM15被编码为0000B。该些指令的其他字段对如在本领域 中已知的寄存器索引的较低S个位(rrr、XXX、W及化b)进行编码,由此可通过增加EVEX. R、EVEX.XW及EVEX.B来形成化rr、XxxxW及化化。
[0150] REX'字段1605 -该是REX'字段1510的第一部分,并且是用于对扩展的32个寄存 器集合的较高16个或较低16个寄存器进行编码的EVEX. R'位字段巧VEX字节1,位[4]-R')。在本发明的一个实施例中,该位与W下指示的其他位一起W位反转的格式存储W (在 公知x86的32位模式下)与实操作码字节是62的BOUND指令进行区分,但是在MOD R/M 字段(在下文中描述)中不接受MOD字段中的值11 ;本发明的替代实施例不W反转的格式 存储该指示的位W及其他指示的位。值1用于对较低16个寄存器进行编码。换句话说,通 过组合EVEX. R'、EVEX. R、W及来自其他字段的其他RRR来形成R'化rr。
[0151] 操作码映射字段1615巧VEX字节1,位巧:0] -mmmm)-其内容对隐含的前导操作 码字节(0F、0F38、或OF3)进行编码。
[0152] 数据元素宽度字段1664巧VEX字节2,位[7] -W)-由记号EVEX.W表示。EVEX.W 用于定义数据类型(32位数据元素或64位数据元素)的粒度(尺寸)。
[0153] EVEX. VVVV 1620 巧VEX 字节 2,位[6:3]-vvvv) - EVEX. VVVV 的作用可包括如下; 1化VEX. VVVV编码第一源寄存器操作数且对具有两个或两个W上源操作数的指令有效,第 一源寄存器操作数W反转(1补码)的形式被指定;2化VEX. VVVV编码目的地寄存器操作 数,目的地寄存器操作数针对特定向量位移补码的形式被指定;或者3化VEX. VVVV不编 码任何操作数,保留该字段。由此,EVEX. VVVV字段1620对W反转(1补码)的形式存储的 第一源寄存器指定符的4个低阶位进行编码。取决于该指令,额外不同的EVEX位字段用于 将指定符尺寸扩展到32个寄存器。
[0154] EVEX.U1668类字段巧VEX字节2,位[2]-U)-如果EVEX.U = 0,则它指示A类或 EVEX.U0 ;如果 EVEX.U= 1,则它指示 B 类或 EVEX.U1。
[0155] 前缀编码字段1625巧VEX字节2,位[l:0]-pp)-提供了用于基础操作字段的附加 位。除了对W EVEX前缀格式的传统SSE指令提供支持W外,该也具有压缩SIMD前缀的益 处巧VEX前缀只需要2位,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支 持使用W传统格式和W EVEX前缀格式的SIMD前缀(6細、巧H、F3H)的传统SSE指令,将该 些传统SIMD前缀编码成SIMD前缀编码字段;并且在运行时在提供给解码器的PLA之前被 扩展成传统SIMD前缀(因此PLA可执行传统和EVEX格式的该些传统指令,而无需修改)。 虽然较新的指令可将EVEX前缀编码字段的内容直接作为操作码扩展,但是为了一致性,特 定实施例W类似的方式扩展,但允许由该些传统SIMD前缀指定不同的含义。替代实施例可 重新设计PLA W支持2位SIMD前缀编码,并且由此不需要扩展。
[0156] a字段1652巧VEX字节3,位[7]-邸,也称为EVEX.邸、EVEX. rs、EVEX.化、EVEX. 写掩码控制、W及EVEX. N;也W a示出)一如先前所述,该字段是针对上下文的。
[0巧7] 0 字段 1654 巧VEX 字节 3,位[6:4]-SSS,也称为 EVEX. S2_。、EVEX. r2-。、EVEX. rrl、 EVEX.化(KEVEx.LLB;也w e e e示出)一如先前所述,该字段是针对上下文的。
[0158] REX'字段1610 -该是REX'字段的其余部分,并且是可用于对扩展的32个寄存 器集合的较高16个或较低16个寄存器进行编码的EVEX. r位字段巧VEX字节3,位[3]-V')。该位W位反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过 组合 EVEX. V'、EVEX. VVVV 来形成 V' VVVV。
[0159] 写掩码字段1670巧VEX字节3,位巧:0]-化k)-其内容指定写掩码寄存器中的寄 存器索引,如先前所述。在本发明的一个实施例中,特定值EVEX. = 000具有暗示没有 写掩码用于特定指令的特殊行为(该可W各种方式实现,包括使用硬连线到所有的写掩码 或者旁路掩码硬件的硬件来实现)。
[0160] 实操作码字段1630 (字节4)还被称为操作码字节。操作码的一部分在该字段中 被指定。
[0161] MOD R/M字段1640 (字节5)包括MOD字段1642、Reg字段1644、W及R/M字段 1646。如先前所述的,MOD字段1642的内容将存储器访问和非存储器访问操作区分开。Reg 字段1644的作用可被归结为两种情形;对目的地寄存器操作数或源寄存器操作数进行编 码;或者被视为操作码扩展且不用于对任何指令操作数进行编码。R/M字段1646的作用可 包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄 存器操作数进行编码。
[01创 比例、索引、基址(SIB)字节(字节6)-如先前所述的,比例字段1650的内容用 于存储器地址生成。SIB. XXX 1654和SIB.化b 1656 -先前已经针对寄存器索引Xxxx和 化化提及了该些字段的内容。
[0163] 位移字段1662A (字节7-10)-当MOD字段1642包含10时,字节7-10是位移字 段1662A,并且它与传统32位位移(disp32) -样地工作,并且W字节粒度工作。
[0164] 位移因数字段1662B (字节7)-当MOD字段1642包含01时,字节7是位移因数 字段1662B。该字段的位置与传统x86指令集8位位移(disp8)的位置相同,它W字节粒 度工作。由于disp8是符号扩展的,因此它仅能在-168和167字节偏移量之间寻址;在64 字节高速缓存行的方面,disp8使用可被设为仅四个真正有用的值-168、-64、0和64的8 位;由于常常需要更大的范围,所W使用disp32 ;然而,disp32需要4个字节。与disp8和 disp32对比,位移因数字段1662B是disp8的重新解释;当使用位移因数字段1662B时,通 过将位移因数字段的内容乘W存储器操作数访问的尺寸(脚来确定实际位移。该类型的位 移被称为disp8*N。该减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。 该种压缩位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移量的冗 余低阶位不需要被编码。换句话说,位移因数字段1662B替代传统x86指令集8位位移。由 此,位移因数字段1662B W与x86指令集8位位移相同的方式(因此在ModRM/SIB编码规 则中没有变化)进行编码,唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规 则或编码长度中没有变化,而仅
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1