用于混合等待时间-吞吐量处理器的装置和方法_5

文档序号:8476684阅读:来源:国知局
[0162] 修饰符(modifier)字段1146 -其内容将指定存储器访问的以通用向量指令格式 出现的指令与不指定存储器访问的以通用向量指令格式出现的指令区分开;即在无存储器 访问1105的指令模板与存储器访问1120的指令模板之间进行区分。存储器访问操作读取 和/或写入到存储器层次结构(在一些情况下,使用寄存器中的值来指定源和/或目的地 地址),而非存储器访问操作不这样(例如,源和/或目的地是寄存器)。尽管在一个实施 例中,该字段还在三种不同的方式之间选择以执行存储器地址计算,但是替代实施例可支 持更多、更少或不同的方式来执行存储器地址计算。
[0163] 扩充操作字段1150 -其内容区分除基础操作以外还要执行各种不同操作中的哪 一个操作。该字段是针对上下文的。在本发明的一个实施例中,该字段被划分成类字段 1168、a字段1152、以及0字段1154。扩充操作字段1150允许在单条指令而非2、3或4 条指令中执行多组共同的操作。
[0164] 比例字段1160 -其内容允许用于存储器地址生成(例如,用于使用2tw *索引+ 基址的地址生成)的索引字段的内容的按比例缩放。
[0165] 位移字段1162A-其内容用作存储器地址生成的一部分(例如,用于使用2tw * 索引+基址+位移的地址生成)。
[0166] 位移因数字段1162B(注意,位移字段1162A直接在位移因数字段1162B上的并置 指示使用一个或另一个)一其内容用作地址生成的一部分,它指定通过存储器访问的尺寸 (N)按比例缩放的位移因数,其中N是存储器访问中的字节数量(例如,用于使用2tw*索引 +基址+按比例缩放的位移的地址生成)。忽略冗余的低阶位,并且因此将位移因数字段的 内容乘以存储器操作数总尺寸(N)以生成在计算有效地址中使用的最终位移。N的值由处 理器硬件在运行时基于完整操作码字段1174(在本文中描述的)和数据操纵字段1154C确 定。位移字段1162A和位移因数字段1162B可以不用于无存储器访问1105的指令模板,并 且/或者不同的实施例可实现两者中的仅一个或不实现两者中的任一个,在这个意义上, 位移字段1162A和位移因数字段1162B是可选的。
[0167] 数据元素宽度字段1164 -其内容区分将使用多个数据元素宽度中的哪一个(在 一些实施例中用于所有指令,在其他实施例中仅用于指令中的一些)。如果支持仅一个数据 元素宽度,并且/或者使用操作码的某一方面来支持数据元素宽度,则该字段是不需要的, 在这个意义上该字段是可选的。
[0168] 写掩码字段1170 -其内容在每一数据元素位置的基础上控制目的地向量操作数 中的数据元素位置是否反映基础操作和扩充操作的结果。A类指令模板支持合并-写掩码 操作,而B类指令模板支持合并写掩码操作和归零写掩码操作两者。当合并时,向量掩码允 许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于 更新;在其他实施例中,保持其中对应掩码位具有〇的目的地的每一元素的旧值。相反,当 归零时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间,使目的地中 的任何元素集归零;在一个实施例中,当对应掩码位具有O值时,将目的地的元素设置为0。 该功能的子集是控制正在被执行的操作的向量长度的能力(即,从第一个到最后一个被修 改的元素的跨度),然而,被修改的元素不一定要是连续的。由此,写掩码字段1170允许部 分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段1170的内容选 择了多个写掩码寄存器中的包含要使用的写掩码的一个写掩码寄存器(并且由此写掩码 字段1170的内容间接地标识了要执行的掩码操作)的本发明的实施例,但是替代实施例相 反或另外允许掩码写字段1170的内容直接地指定要执行的掩码操作。
[0169] 立即数字段1172 -其内容允许对立即数的指定。该字段在不支持立即数的通用 向量友好格式的实现中不存在,并且在不使用立即数的指令中不存在,在这个意义上该字 段是可选的。
[0170] 类字段1168 -其内容在不同类的指令之间进行区分。参考图11A-B,该字段的内 容在A类和B类指令之间进行选择。在图IlA-B中,圆角方形用于指示专用值存在于字段 中(例如,在图IlA-B中分别用于类字段1168的A类1168A和B类1168B)。
[0171] A类指令模板
[0172] 在A类非存储器访问1105的指令模板的情况下,a字段1152被解释为其内容 区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的舍入型操作1110 和无存储器访问的数据变换型操作1115的指令模板,分别指定舍入1152A. 1和数据变换 1152A. 2)的RS字段1152A,而0字段1154区分要执行指定类型的操作中的哪一种。在无 存储器访问1105指令模板中,比例字段1160、位移字段1162A以及位移比例字段1162B不 存在。
[0173] 无存储器访问的指令模板一完全舍入控制型操作
[0174] 在无存储器访问的完全舍入控制型操作1110的指令模板中,0字段1154被解释 为其内容提供静态舍入的舍入控制字段1154A。尽管在本发明的所述实施例中,舍入控制字 段1154A包括抑制所有浮点异常(SAE)字段1156和舍入操作控制字段1158,但是替代实 施例可支持这两个概念,并且可将这两个概念都编码成相同的字段,或者仅具有这些概念/ 字段中的一个或另一个(例如,可仅具有舍入操作控制字段1158)。
[0175] SAE字段1156 -其内容区分是否禁用异常事件报告;当SAE字段1156的内容指 示启用抑制时,给定的指令不报告任何种类的浮点异常标志,并且不唤起任何浮点异常处 理程序。
[0176] 舍入操作控制字段1158 -其内容区分执行一组舍入操作中的哪一个(例如,向上 舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段1158允许逐指令地 改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例 中,舍入操作控制字段1150的内容覆盖该寄存器值。
[0177] 无存储器访尚的指令樽板一数据夺换塑橾作
[0178] 在无存储器访问的数据变换型操作1115的指令模板中,0字段1154被解释为数 据变换字段1154B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混合、 广播)。
[0179] 在A类存储器访问1120的指令模板的情况下,a字段1152被解释为驱逐提示 字段1152B,其内容区分要使用驱逐提示中的哪一个(在图12A中,对于存储器访问时效性 1125的指令模板和存储器访问非时效性1130的指令模板分别指定时效性的1152B. 1和非 时效性的1152B. 2),而0字段1154被解释为数据操纵字段1154C,其内容区分要执行多个 数据操纵操作(也称为基元(primitive))中的哪一个(例如,无操纵、广播、源的向上转换 以及目的地的向下转换)。存储器访问1120的指令模板包括比例字段1160,并可选地包括 位移字段1162A或位移比例字段1162B。
[0180] 向量存储器指令使用转换支持来执行来自存储器的向量加载和去往存储器的向 量存储。如同寻常的向量指令,向量存储器指令以数据元素式的方式往返于存储器传输数 据,其中,实际传输的元素由被选为写掩码的向量掩码的内容规定。
[0181] 存储器访问的指令模板一时效性的
[0182] 时效性的数据是可能足够快地被重新使用以从高速缓存操作中受益的数据。然 而,这是提示,且不同的处理器能以不同的方式实现它,包括完全忽略该提示。
[0183] 存储器访问的指令樽板一非时效件的
[0184] 非时效性的数据是不可能被足够快地重新使用以从第一级高速缓存中的高速缓 存操作中受益且应当被给予驱逐优先级的数据。然而,这是提示,且不同的处理器可以不同 的方式实现它,包括完全忽略该提示。
[0185] B类指令模板
[0186] 在B类指令模板的情况下,a字段1152被解释为写掩码控制(Z)字段1152C,其 内容区分由写掩码字段1170控制的写掩码操作应当是合并还是归零。
[0187] 在B类非存储器访问1105的指令模板的情况下,0字段1154的部分被解释为RL 字段1157A,其内容区分要执行不同扩充操作类型中的哪一种(例如,针对无存储器访问的 写掩码控制部分舍入控制类型操作1112的指令模板和无存储器访问的写掩码控制VSIZE 型操作1117的指令模板,分别指定舍入1157A. 1和向量长度(VSIZE) 1157A. 2),而0字段 1154的其余部分区分要执行指定类型的操作中的哪一种。在无存储器访问1105指令模板 中,比例字段1160、位移字段1162A以及位移比例字段1162B不存在。
[0188] 在无存储器访问的写掩码控制的部分舍入控制型操作1110的指令模板中,0字 段1154的其余部分被解释为舍入操作字段1159A,并且禁用异常事件报告(给定的指令不 报告任何种类的浮点异常标志,并且不唤起任何浮点异常处理程序)。
[0189] 舍入操作控制字段1159A-就如同舍入操作控制字段1158,其内容区分一组舍入 操作中的哪一个(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)要执行。由此,舍 入操作控制字段1159A允许逐指令地改变舍入模式。在其中处理器包括用于指定舍入模式 的控制寄存器的本发明的一个实施例中,舍入操作控制字段1150的内容覆盖该寄存器值。
[0190] 在无存储器访问的写掩码控制VSIZE型操作1117的指令模板中,0字段1154的 其余部分被解释为向量长度字段1159B,其内容区分要执行多个数据向量长度中的哪一个 (例如,128字节、256字节或512字节)。
[0191] 在B类存储器访问1120的指令模板的情况下,0字段1154的部分被解释为广播 字段1157B,其内容区分是否要执行广播型数据操纵操作,而0字段1154的其余部分被解 释为向量长度字段1159B。存储器访问1120的指令模板包括比例字段1160,并可选地包括 位移字段1162A或位移比例字段1162B。
[0192] 针对通用向量友好指令格式1100,示出完整操作码字段1174包括格式字段1140、 基础操作字段1142以及数据元素宽度字段1164。尽管示出了其中完整操作码字段1174包 括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中,完整操作码字段 1174包括少于所有这些字段的字段。完整操作码字段1174提供操作码(opcode)。
[0193] 扩充操作字段1150、数据元素宽度字段1164以及写掩码字段1170允许以通用向 量友好指令格式逐指令地指定这些特征。
[0194] 写掩码字段和数据元素宽度字段的组合创建类型化的指令,因为它们允许基于不 同的数据元素宽度应用该掩码。
[0195] 在A类和B类内出现的各种指令模板在不同的情形下是有益的。在本发明的一些 实施例中,不同处理器或者处理器内的不同核可支持仅A类、仅B类或者可支持两类。举例 而言,旨在用于通用计算的高性能通用无序核可仅支持B类,旨在主要用于图形和/或科 学(吞吐量)计算的核可仅支持A类,并且旨在用于两者的核可支持两者(当然,具有来自 两类的模板和指令的一些混合、但是并非来自两类的所有模板和指令的核在本发明的范围 内)。同样,单一处理器可包括多个核,所有核支持相同的类或者其中不同的核支持不同的 类。举例而言,在具有单独的图形和通用核的处理器中,旨在主要用于图形和/或科学计算 的图形核中的一个核可仅支持A类,而通用核中的一个或多个可以是具有旨在用于通用计 算的、仅支持B类的无序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另 一处理器可包括既支持A类又支持B类的一个或多个通用有序或无序核。当然,在本发明 的不同实施例中,来自一类的特征也可在其他类中实现。可使以高级语言撰写的程序成为 (例如,恰被及时编译或静态编译)各种不同的可执行形式,包括:1)仅具有由用于执行的 目标处理器支持的类的指令的形式;或者2)具有使用所有类的指令的不同组合而编写的 替代例程且具有选择这些例程以基于由当前正在执行代码的处理器支持的指令而执行的 控制流代码的形式。
[0196] 图13是示出根据本发明的多个实施例的示例性专用向量友好指令格式的框图。 图13示出专用向量友好指令格式1200,其指定位置、尺寸、解释和字段的次序以及那些字 段中的一些字段的值,在这个意义上向量友好指令格式1200是专用的。专用向量友好指令 格式1200可用于扩展x86指令集,并且由此这些字段中的一些与现有x86指令集及其扩展 (例如,AVX)中使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的 前缀编码字段、实操作码字节字段、MODR/M字段、SIB字段、位移字段、以及立即数字段一 致。示出来自图12的、将来自图13的字段映射到其的字段。
[0197] 应当理解,虽然出于说明的目的,在通用向量友好指令格式1100的上下文中参考 专用向量友好指令格式1200描述了本发明的多个实施例,但是本发明不限于专用向量友 好指令格式1200,除非另有声明。例如,通用向量友好指令格式1100构想各种字段的各种 可能的尺寸,而专用向量友好指令格式1200被示出为具有特定尺寸的字段。作为具体示 例,尽管在专用向量友好指令格式1200中,数据元素宽度字段1164被示出为一位的字段, 但是本发明不限于此(也就是说,通用向量友好指令格式1100构想数据元素宽度字段1164 的其他尺寸)。
[0198] 通用向量友好指令格式1100包括以下按照图13A中示出的顺序列出的下列字段。
[0199] EVEX前缀(字节0-3) 1202 -以四字节形式进行编码。
[0200] 格式字段1140(EVEX字节0,位[7:0]) -第一字节(EVEX字节0)是格式字段 1140,并且它包含0x62(在本发明的一个实施例中用于区分向量友好指令格式的唯一值)。
[0201] 第二一第四字节(EVEX字节1-3)包括提供专用能力的多个位字段。
[0202] REX字段 1205(EVEX字节 1,位[7-5]) -由EVEX.R位字段(EVEX字节 1,位[7]-R)、EVEX.X位字段(EVEX字节 1,位[6] -X)以及(1157BEX字节 1,位[5] -B)组成。EVEX. R、EVEX.X和EVEX.B位字段提供与对应VEX位字段相同的功能,并且使用1补码的形式进行 编码,S卩ZMMO被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域 中已知的寄存器索引的较低三个位(rrr、XXX以及bbb)进行编码,由此可通过增加EVEX. R、EVEX.X以及EVEX.B来形成Rrrr、Xxxx以及Bbbb。
[0203] REX'字段1110 -这是REX'字段1110的第一部分,并且是用于对扩展的32个 寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R'位字段(EVEX字节1,位 [4] -R')。在本发明的一个实施例中,该位与以下指示的其他位一起以位反转的格式被存 储以(在公知x86的32位模式下)与实操作码字节是62的BOUND指令进行区分,但是在 MODR/M字段
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1