打包数据操作掩码寄存器算术组合处理器、方法、系统及指令的制作方法

文档序号:6485518阅读:157来源:国知局
打包数据操作掩码寄存器算术组合处理器、方法、系统及指令的制作方法
【专利摘要】一方面的方法包括接收打包数据操作掩码寄存器算术组合指令。打包数据操作掩码寄存器算术组合指令指示第一打包数据操作掩码寄存器,指示第二打包数据操作掩码寄存器,并指示目的地存储位置。响应于打包数据操作掩码寄存器算术组合指令,第一打包数据操作掩码寄存器的至少部分位和第二打包数据操作掩码寄存器的至少对应部分位的算术组合被存储在目的地存储位置中。公开了其它方法、装置、系统和指令。
【专利说明】打包数据操作掩码寄存器算术组合处理器、方法、系统及指 令
[0001] 背景

【技术领域】
[0002] 实施例涉及处理器。具体地,实施例涉及用于响应于打包数据操作掩码寄存器算 术组合指令而算术地组合打包数据操作掩码寄存器的至少部分的处理器。
[0003] 背景信息
[0004] 许多处理器具有单指令多数据(SMD)架构。该SMD架构通常有助于显著提高处 理速度。在SIMD架构中,与仅在一个数据元素或一对数据元素上操作的标量指令不同,打 包数据指令、向量指令、或SIMD指令可在多个数据元素、或多对数据元素上同时或并行地 操作。处理器可具有并行执行硬件,该并行执行硬件响应于打包数据指令来同时或并行地 执行多个操作。
[0005] 在SMD架构中,可将多个数据元素打包在一个寄存器或存储器位置内作为打包 数据或向量数据。在打包数据中,寄存器或者其他存储位置的位可被逻辑地分成多个固定 尺寸的数据元素的序列。数据元素中的每一个可表示个体数据片,该个体数据片连同通常 具有相同尺寸的其他数据元素一起被存储在寄存器或存储位置中。例如,256位宽寄存器可 具有四个64位宽打包数据元素,八个32位宽打包数据元素,十六个16位宽打包数据元素, 或三十二个8位宽打包数据元素。每一打包数据元素可表示单独的个体数据片(例如,像 素颜色等),该数据片可单独地操作或与其他数据独立地操作。
[0006] 代表性地,一种类型的打包数据指令、向量指令或SMD指令(例如,打包加法指 令)可指定在来自两个源打包数据操作数的所有相应数据元素对上以垂直方式执行单个 打包数据操作(例如,加法)以生成目的地或结果打包数据。这些源打包数据操作数是相 同尺寸,可包含相同宽度的数据元素,并因此可各自包含相同数量的数据元素。两个源打包 数据操作数中的相同的位位置中的源数据元素可表示相应的数据元素对。可单独地或独立 地对这些相应的源数据元素对中的每一个执行打包数据操作,以便生成匹配数量的结果数 据元素,且因而每一对相应的源数据元素可以具有相应的结果数据元素。通常,这种指令的 结果数据元素呈相同的次序,且它们常常具有相同的尺寸。
[0007] 除这种示例性类型的打包数据指令之外,还有各种其它类型的打包数据指令。例 如,存在仅具有一个源打包数据操作数或具有两个以上的源打包数据操作数的打包数据指 令、以水平方式而不是垂直方式操作的打包数据指令、生成不同尺寸的结果打包数据操作 数的打包数据指令、具有不同尺寸的数据元素的打包数据指令和/或具有不同的数据元素 次序的打包数据指令。
[0008] 附图的若干视图的简要说明
[0009] 通过参考用来说明本发明的实施例的以下描述和附图,可最好地理解本发明。在 附图中:
[0010] 图1是具有含一个或多个打包数据操作掩码寄存器算术组合指令的指令集的处 理器的示例实施例的框图。
[0011] 图2A是示出采取合并的依掩码的打包数据操作的第一代表性示例实施例的框 图。
[0012] 图2B是示出采取归零的依掩码的打包数据操作的第二代表性示例实施例的框 图。
[0013] 图3是包括存储有打包数据操作掩码寄存器算术组合指令的机器可读的存储介 质的制品(例如,计算机程序产品)的框图。
[0014] 图4是具有可操作用于执行指令的执行单元的指令处理装置的示例实施例的框 图,所述指令包括打包数据操作掩码寄存器算术组合指令的示例实施例。
[0015] 图5是打包数据操作掩码寄存器算术组合指令的示例实施例的处理方法的示例 实施例的流程框图。
[0016] 图6是一组合适的打包数据寄存器的示例实施例的框图。
[0017] 图7是示出合适打包数据格式的若干示例实施例的框图。
[0018] 图8是示出打包数据操作掩码位的数量依赖于打包数据宽度和打包数据元素宽 度的表格。
[0019] 图9是一组合适的打包数据操作掩码寄存器的示例实施例的框图。
[0020] 图10是示出在打包数据操作掩码寄存器的示例实施例中可被用作打包数据操作 掩码和/或用于掩码操作的位的数量依赖于打包数据宽度和数据元素宽度的示图。
[0021] 图11A-11D示出打包数据操作掩码寄存器加法指令和其操作的多种特定示例实 施例。
[0022] 图12A示出示例性AVX指令格式,包括VEX前缀、实操作码字段、MoDR/M字节、SIB 字节、位移字段以及IMM8。
[0023] 图12B示出来自图12A的哪些字段构成完整操作码字段和基础操作字段。
[0024] 图12C示出来自图12A的哪些字段构成寄存器索引字段。
[0025] 图13是根据本发明的一个实施例的寄存器架构的框图。
[0026] 图14A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重 命名的无序发布/执行流水线的框图。
[0027] 图14B示出了包括耦合到执行引擎单元的前端单元的处理器核,且执行引擎单元 和前端单元两者都耦合到存储器单元。
[0028] 图15A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络的连 接及其二级(L2)高速缓存的本地子集的框图。
[0029] 图15B是根据本发明的各实施例的图15A中的处理器核的一部分的展开图。
[0030] 图16是根据本发明的实施例的可具有超过一个的核、可具有集成的存储器控制 器、并且可具有集成图形的处理器的框图。
[0031] 图17所示的是根据本发明的一个实施例的系统的框图。
[0032] 图18所示的是根据本发明的实施例的第一更具体的示例性系统的框图。
[0033] 图19所示的是根据本发明的实施例的第二更具体的示例性系统的框图。
[0034] 图20所示的是根据本发明的实施例的SoC的框图。
[0035] 图21是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进 制指令转换成目标指令集中的二进制指令的框图。

【具体实施方式】
[0036] 本文中公开的是打包数据操作掩码寄存器算术组合指令、用于执行打包数据操作 掩码寄存器算术组合指令的处理器、该处理器在处理或执行打包数据操作掩码寄存器算术 组合指令时执行的方法、以及包含用于处理或执行打包数据操作掩码寄存器算术组合指令 的一个或多个处理器的系统。在以下描述中,陈述了多个具体细节。然而,应当理解的是, 可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结 构以及技术,以免模糊对本描述的理解。
[0037] 图1是具有指令集的处理器100的示例实施例的框图,所述指令集包括一个或 多个打包数据操作掩码寄存器算术组合指令105。该处理器可以是各种复杂指令集计算 (CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各 种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,处理器可以是通用处 理器(例如,具有在台式、膝上型等计算机中使用的类型的通用微处理器),但这不是必须 的。替换地,指令处理处理装置可以是专用处理器。合适的专用处理器的示例包括但不限 于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号 处理器(DSP)以及控制器(例如,微控制器),此处仅是列举数例。
[0038] 处理器具有指令集架构(ISA) 101。ISA表示处理器的架构中涉及编程的那部分。 ISA通常包括原生指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以 及处理器的外部输入和输出(I/O)。ISA与微架构不同,微架构通常表示选择用于实现指令 集架构的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的指令集架构。.
[0039] ISA包括架构寄存器(例如,架构寄存器组)106。所示出的架构寄存器包括打包 数据寄存器107。每个打包数据寄存器可操作用于存储打包数据、向量数据或者SIMD数据。 所示出的架构寄存器还包括打包的数据操作掩码寄存器108。打包数据操作掩码寄存器中 的每一个都可操作用于存储打包数据操作掩码。
[0040] 架构寄存器表示板载处理器存储位置。架构寄存器此处也可以被简称为寄存器。 短语架构寄存器、寄存器组、以及寄存器在本申请中用于表示对软件和/或编程者可见(例 如,软件可见的)的寄存器和/或由宏指令指定用来标识操作数的寄存器,除非另外指定或 明显可知。这些寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重 排序缓冲器、引退寄存器等)。
[0041] 所示出的ISA还包括处理器支持的指令集102。指令集包括若干不同类型的指令。 指令集的这些指令表示宏指令(例如,提供给处理器以供执行的指令),与微指令或微操作 (例如,处理器的解码器解码宏指令而得到的微指令或微操作)相对。
[0042] 指令集包括一个或多个依掩码的(masked)打包数据指令103。依掩码的打包数据 指令可类似于在背景部分中提及的打包数据指令,且具有几项显著的差别。类似于前述打 包数据指令,依掩码的打包数据指令中的每一个指令可操作用于致使或导致处理器在该打 包数据指令所指示的一个或多个打包操作数的数据元素上执行打包数据操作。打包数据操 作数可被存储在打包数据寄存器107中。然而,依掩码的打包数据指令中的每一个指令可 使用一个或多个打包数据操作掩码寄存器108和/或打包数据操作掩码,从而对打包数据 处理进行掩码、断言或有条件地控制。打包数据操作掩码和/或掩码寄存器可表示掩码操 作数、断言操作数或条件操作控制操作数。
[0043] 打包数据操作掩码和/或掩码寄存器可操作用于在逐数据元素的粒度下对打包 数据处理进行掩码或有条件地控制。例如,打包数据操作掩码可操作用于掩码控制:是否要 将在来自单个源打包数据操作数的各个数据元素或在来自两个源打包数据操作数的各个 相应数据元素对上所执行的、依掩码的打包数据指令的打包数据操作的结果存储到打包数 据结果中。依掩码的打包数据指令可允许单独地且与数据元素相独立地断言或有条件地控 制对每个数据元素或每对相对应数据元素的打包数据处理。依掩码的打包数据指令、操作 和掩码可提供某些优点,诸如增加的代码密度和/或较高的指令吞吐量。
[0044] 再次参考图1,指令集还包括一个或多个打包数据操作掩码和/或掩码寄存器操 纵指令104。打包数据操作掩码和/或掩码寄存器操纵指令中的每一个可操作用于致使或 导致处理器对一个或多个打包数据操作掩码寄存器108和/或掩码进行操纵或操作。如所 示,打包数据操作掩码和/或掩码寄存器操纵指令可包括一个或多个打包数据操作掩码寄 存器算术组合指令105。打包数据操作掩码寄存器算术组合指令105中的每一个指令可操 作用于致使或导致处理器将两个或更多打包数据操作掩码寄存器108的至少部分算术地 组合。以下进一步公开打包数据操作掩码寄存器算术组合指令的各不同实施例。
[0045] 处理器还包括执行逻辑109。执行逻辑可操作用于执行或处理指令集的指令(例 如,依掩码的打包数据指令和打包数据操作掩码算术组合指令)。执行逻辑可包括执行单 元、功能单元、算术单元、加法器、算术逻辑单元等。
[0046] 为了进一步说明打包数据操作掩码,考虑它们的使用的代表示例可能是有用的。 图2A是示出采取合并的依掩码的打包数据操作203A的第一代表性示例实施例的框图。可 响应于依掩码的打包数据指令(例如,图1的依掩码的打包数据指令103)或者作为该指令 的结果来执行依掩码的打包数据操作。
[0047] 用于所说明的依掩码的打包数据操作的指令指示第一源打包数据210-1和第二 源打包数据210-2。其他依掩码的打包数据指令可指示仅单个源打包数据,或多于两个源打 包数据。在例示中,第一和第二源打包数据具有相同尺寸,包含相同宽度的数据元素,且因 此各自包含相同数量的数据元素。在例示中,第一和第二源打包数据中的每一个具有十六 个数据元素。作为示例,第一和第二源打包数据可各自为512位宽,并且可各自包括十六个 32位双字数据元素。两个源打包数据中相同位位置中(例如,在相同垂直位置中)的源数 据元素表示相对应数据元素的对。数据元素中的每一个具有在方框内示出的表示该数据元 素的数值。例如,第一源打包数据的最低位数据元素(右侧)具有值3,第一源打包数据的 次最低位数据元素具有值7,第一源打包数据的最高位数据元素(左侧)具有值12,依此类 推。
[0048] 依掩码的打包数据操作的指令还指示打包数据操作掩码211。打包数据操作掩码 包括多个掩码元素、断言元素、条件控制元素或标志。可包括元素或标志,使其与一个或多 个相对应源数据元素有一对一的对应关系。例如,如图示所示,在操作涉及两个源打包数据 操作数的情况下,对于每对相应源数据元素,可以有一个这样的元素或标志。打包数据操作 掩码的每个元素或标志可操作用于对一个或多个相应的源打包数据元素上的独立打包数 据操作进行掩码。例如,在该示例中,每个元素或标志可对相应源打包数据元素对上的独立 打包数据操作进行掩码。
[0049] 如图示中所示的,通常每个元素或标志可以是单个位。单个位可允许指定两个不 同可能性(例如,执行操作或不执行操作,存储操作的结果或不存储操作的结果,等等)中 的任一个。替代地,如果需要在多于两个的不同选项中进行选择,则可对每个标志或元素使 用两个或更多个位。在图示中,打包数据操作掩码包括十六个位(即,0011100001101011)。 十六个位中的每一个与第一和第二打包数据的十六个相应数据元素对之一具有有序对应 关系。例如,掩码的最低位的位对应于第一和第二打包数据的相应最低位数据元素对,掩码 的最高位的位对应于相应最高位数据元素对,依次类推。在替换实施例中,其中源打包数据 具有更少或更多的数据元素,打包数据操作掩码可类似地具有更少或更多的数据元素。
[0050] 具体示出的依掩码的打包数据操作是依掩码的打包数据加法操作,其可操作用于 根据打包数据操作掩码211的相应位提供的条件操作控制或断言,将来自第一和第二源打 包数据210-U210-2的相应数据元素对之和有条件地存储在打包数据结果212中。该具体 的依掩码的打包数据加法操作指定:在每对相应的数据元素上单独地或与其它对独立地、 以垂直方式、有条件地执行单个操作(在这种情况下是加法)。目的地操作数或打包数据结 果与源打包数据的尺寸相同且具有与源打包数据相同数量的数据元素。因此,每对相应的 源数据元素在打包数据结果中的与它们的相应源数据元素对在源打包数据中的位置相同 的位位置中具有相应结果数据元素。
[0051] 再次参考打包数据操作掩码211。打包数据操作掩码的十六个位中的每一个被置 位(即,具有二进制值1)或者被清零(即,具有二进制值〇)。根据所例示的协定,每个位被 分别置位(即,1)或清零(即,〇),以允许或不允许将在第一和第二源打包数据的相应数据 元素对上执行的打包数据操作的结果存储在打包数据结果的相应数据元素中。例如,打包 数据操作掩码中的次最低位的位被置位(即,1),且表示在相应的次最低位数据元素对上 执行的打包数据加法操作(即,7+1)的结果的和(即,8)被存储在打包数据结果的相应次 最低位的数据元素中。在例示中,和被标以下划线。
[0052] 相反,当给定的位被清零(即,0)时,则不允许对相应数据元素对的打包数据操作 的结果被存储在打包数据结果的对应数据元素中。相反,可将另一个值存储在结果数据元 素中。例如,如图示所示,来自第二源打包数据的相应数据元素的值可被存储在打包数据结 果的相应数据元素中。例如,打包数据操作掩码中最高位的位被清零(即,〇),且来自第二 源打包数据的最高位数据元素的数值(即,15)被存储在打包数据结果的最高位结果数据 元素中。这称为合并-掩码。与所示相反的协定也是可能的,其中位被清零(即,0)以允许 存储结果,或被置位(即,1)以不允许存储结果。
[0053] 在一些实施例中,打包数据操作可任选地在第一和第二源打包数据的所有相应数 据元素对上执行,而不管打包数据操作掩码的相应位被置位还是清零,但是打包数据操作 的结果可被存储或可不被存储在打包数据结果中,这取决于打包数据操作掩码的相应位被 置位还是清零。替代地,在另一实施例中,如果打包数据操作掩码的相应位指定操作的结 果将不被存储在打包数据结果操作中,则打包数据操作可被任选地略去(即,不被执行)。 在一些实施例中,异常(例如,异常标志)或违例(violation)可被可任选地抑制,或者 在被掩码掉(masked-off)元素上的打包数据操作不引起异常(例如,异常标志)或违例 (violation)。在一些实施例中,对于具有存储器操作数的依掩码的打包数据指令,可任选 地,为被掩码掉的数据元素抑制存储器错误。该特征可有助于实现控制流断言,因为掩码可 实际上提供合并行为打包数据寄存器,但不是必须的。
[0054] 图2B是示出采取归零(zeroing)的依掩码的打包数据操作203B的第二代表性示 例实施例的框图。采取归零的依掩码的打包数据操作类似于前述的采取合并的依掩码打包 数据操作。为了避免使描述变得模糊,不再重复相似之处,而是将主要提及不同之处。一个 显著的不同之处在于,与将源打包数据(例如,图2A中的第二源打包数据210-2)的数据元 素的值合并或存储到打包数据结果的相应数据元素中不同,在打包数据结果的相应位被掩 码掉(例如,清除为〇)时打包数据结果的相应数据元素被归零。例如,双字结果打包数据 元素的所有32个位可具有零值。这称为归零-掩码。替换地,也可任选地使用除零之外的 其他预定值。
[0055] 这些仅仅是依掩码打包数据操作的几个示例性示例。应当理解,处理器可支持宽 泛的各种不同类型的依掩码的打包数据操作。例如,这些操作可包括仅具有一个源打包数 据或具有两个以上的源打包数据的操作、生成不同尺寸的结果打包数据的操作、具有不同 尺寸的数据元素的操作和/或具有不同的结果数据元素顺序的操作、及其组合。
[0056] 图3是包括存储有打包数据操作掩码寄存器算术组合指令305的机器可读的存储 介质314的制品(例如,计算机程序产品)313的框图。在一些实施例中,机器可读存储介质 可为有形的和/或非瞬态的机器可读存储介质。在各示例实施例中,机器可读存储介质314 可包括软盘、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM (PR0M)、可擦除可 编程ROM (EPR0M)、电可擦除可编程ROM (EEPR0M)、随机存取存储器(RAM)、静态RAM (SRAM)、 动态RAM (DRAM)、闪存、相变存储器、半导体存储器、其它类型的存储器或它们的组合。在一 些实施例中,介质可包括一个或多个固态材料,例如半导体材料、相变材料、磁性材料、光学 透明固体材料等等。
[0057] 打包数据操作掩码寄存器算术组合指令305可操作用于指定或以其它方式指示 第一打包数据操作掩码寄存器,用于指定或以其它方式指示第二打包数据操作掩码寄存 器,并用于指定或以其它方式指示目的地存储位置。在一些实施例中,该指令可操作用于明 确指定第一打包数据操作掩码寄存器、第二打包数据操作掩码寄存器、和目的地存储位置 (其在某些方面也可以是打包数据操作掩码寄存器)中的每一个。该指令可具有由指令格 式或指令的编码所定义的一个或多个字段,以明确指定寄存器和存储位置。在一些实施例 中,指令可遵循VEX编码方案,但这不是必须的。VEX编码方案的进一步的细节(如果需要 的话,但对于理解本发明而言不是必须的)可在以下文件中获得:加利福尼亚州圣克拉拉 市的英特尔公司,英特尔? 64和IA-32架构软件开发者手册,序号:253666-039US,2011年 5月。替代地,指令可隐含地指示寄存器或存储位置中的一个或多个。在一些实施例中,目 的地存储位置可不同于第一和第二源打包数据操作掩码寄存器。在其他实施例中,第一和 第二源打包数据操作掩码寄存器中的一个可被用作目的地存储位置(例如,可被算术组合 至少部分地盖写)。
[0058] 打包数据操作掩码寄存器算术组合指令,若被机器(例如,处理器或指令处理装 置)所执行,可操作用于致使机器将所述第一打包数据操作掩码寄存器的至少部分位和所 述第二打包数据操作掩码寄存器的至少对应部分位的算数组合存储在目的地存储位置中。 应意识到的是,也可将用于执行本文公开的一个或多个操作或方法的其他指令或指令序列 (例如,利用打包数据操作掩码寄存器算术组合指令的例程或算法)存储在存储介质上。
[0059] 不同类型的机器的示例包括但不限于指令处理装置、指令执行装置、处理器(例 如,通用处理器和专用处理器)以及具有一个或多个指令处理装置、指令执行装置和/或处 理器的各种电子设备。这种电子设备的几个代表示例包括但不限于计算机系统、台式机、膝 上型计算机、笔记本、服务器、网络路由器、网络交换机、上网计算机、机顶盒、蜂窝电话、视 频游戏控制器等。
[0060] 图4是具有可操作用于执行指令的执行单元417的指令处理装置415的示例实施 例的框图,该指令包含打包数据操作掩码寄存器算术组合指令405的示例实施例。在一些 实施例中,指令处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例 中,指令处理装置可以是图1的处理器100或类似设备,或者可以被包括在图1的处理器 100或类似设备中。替代地,指令处理装置可被包括在不同的处理器或电子系统中。
[0061] 指令处理装置415可接收打包数据操作掩码寄存器算术组合指令405。打包数 据操作掩码寄存器算术组合指令可表示由指令处理装置识别的机器指令、宏指令或控制信 号。指令处理装置可具有专用的或特定的电路或其它逻辑(例如,与硬件和/或固件相结 合的软件),该专用的或特定的电路或其它逻辑可操作用于处理指令,和/或存储响应于该 指令或作为该指令结果的结果。
[0062] 指令处理装置的所示实施例包括指令解码器416。解码器可接收并解码较高级的 机器指令或宏指令,诸如所接收的打包数据操作掩码寄存器算术组合指令。解码器可以生 成并输出一个或多个较低级的微操作、微代码进入点、微指令、或其他较低级的指令或控制 信号,它们反映和/或衍生于原始较高级的指令。该一个或多个较低级指令或控制信号可 通过一个或多个较低级(例如,电路级或硬件级)操作来实现较高级指令的操作。解码器 可以使用各种不同的机制来实现。合适机制的示例包括但不限于微代码只读存储器(ROM)、 查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。
[0063] 替换地,代替具有解码器416,在一个或多个其它实施例中,该装置可具有指令仿 真器、转换器、变形器(morpher)、解释器或者其他指令变换逻辑。各种不同类型的指令变换 逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可 接收打包数据操作掩码寄存器算术组合指令,仿真、翻译、变形、解释、或者以其他方式将该 指令转换成一个或多个对应的衍生指令或控制信号。在又一个其它实施例中,指令处理装 置可具有解码器和附加的指令变换逻辑二者。例如,指令处理装置可具有:指令变换逻辑, 用于将打包数据操作掩码寄存器算术组合指令变换成第二指令;以及解码器,用于将该第 二指令解码成可由指令处理装置的原生硬件执行的一个或多个较低级的指令或控制信号。 指令变换逻辑中的一些或全部可位于其余指令处理装置的管芯外,诸如在单独的管芯上或 在管芯外的存储器中。
[0064] 再次参考附图4,指令处理装置还包括第一打包数据操作掩码寄存器408-1和第 二打包数据操作掩码寄存器408-2。如前所述,该指令可明确地指定(例如,通过一个或 多个字段)或以其它方式指示第一打包数据操作掩码寄存器、第二打包数据操作掩码寄存 器、和目的地存储位置419。在一些实施例中,目的地存储位置可以是第三打包数据操作掩 码寄存器408-3。替换地,目的地存储位置可以是另一个寄存器或存储器位置。在一些实施 例中,第一、第二和第三打包数据操作掩码寄存器可在一组打包数据操作掩码寄存器(例 如,寄存器组)408中。
[0065] 打包数据操作掩码寄存器可各自表示板载处理器存储位置。打包数据操作掩码寄 存器可表示架构寄存器。打包数据操作掩码寄存器可对于软件和/或编程器可见(例如, 软件可见),和/或可以是宏指令(例如,打包数据操作掩码算术组合指令)所指示或指定 的用以标识操作数的寄存器。打包数据操作掩码寄存器可通过使用公知技术以不同方式实 现于不同的微架构中,并且不限于任何已知的特定类型的电路。各种不同类型的寄存器是 适用的,只要它们能够存储并提供在本申请中描述的数据。合适类型的寄存器的示例包括 但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、及其组合。
[0066] 指令处理装置还包括执行单元417。执行单元与第一、第二、和第三打包数据操作 掩码寄存器相耦合。执行单元还与解码器耦合。执行单元可从解码器接收一个或多个微操 作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了打包数据操作掩码寄存 器算术组合指令或者是从打包数据操作掩码寄存器算术组合指令衍生出的。
[0067] 执行单元可操作用于,响应于打包数据操作掩码寄存器算术组合指令和/或作为 该指令的结果,将第一打包数据操作掩码寄存器的至少部分位和第二打包数据操作掩码寄 存器的至少对应部分位存储在目的地存储位置中。作为示例,执行单元可包括算术单元、算 术逻辑单元、加法单元,加法器单元、减法单元、减法器单元、功能单元等。执行单元可包括 可操作用于执行算术组合的算术组合逻辑(例如,集成电路)418。执行单元和/或算术组 合逻辑可包括可操作用于实现指令的操作(例如,执行一个或多个微指令)的电路或其它 执行逻辑(例如,软件、固件、硬件或组合)。
[0068] 在一些实施例中,指令405可以是打包数据操作掩码寄存器加法指令,且执行单 元可操作用于对第一和第二掩码寄存器的至少对应部分位做加法和/或求和。在其它实施 例中,指令405可以是打包数据操作掩码寄存器减法指令,且执行单元可操作用于对第一 和第二掩码寄存器的至少对应部分位做减法和/或求差。应注意,通过使用负/求反操作, 加法可由减法指令来执行,且通过使用负/求反操作,减法可由加法指令来执行。
[0069] 在一些实施例中,第一和第二掩码寄存器的对应部分位可以是相同尺寸的部分, 且依赖于和该相同尺寸的部分相关联的打包数据宽度和数据元素宽度,每个部分的尺寸可 为8位、16位、32位、或64位(例如,一个部分中的每个位可对应于不同的打包数据元素)。 在一些情况下,指令处理装置的指令集可包括用于这些不同的8位、16位、32位、64位尺寸 部分的每一种的不同指令,且部分的尺寸可对于指令是隐含的(例如,对于指令的操作码 是隐含的),但这不是必须的。打包数据操作掩码寄存器可至少与所支持的打包数据操作掩 码的最大尺寸一样大或任选地比该最大尺寸更大。在一个示例中,打包数据操作掩码寄存 器可以为64位宽,但这不是必须的。
[0070] 在一些实施例中,执行单元417可操作用于将第一和第二打包数据操作寄存器的 对应最低位(或最低有效)的部分位的和或差存储在目的地存储位置的对应最低位(或最 低有效)的部分位中,且执行单元可操作用于对目的地存储位置的最高位(或最高有效) 的部分位归零(或替代地,将最高有效的部分位设为另一预定值)。被操作的部分可表示有 效位、被使用位,或寄存器中的有意义位,而寄存器中的剩余最高位的位可表示非有效位、 未被使用位、无意义位、或多余位。替代地,可在最高位的部分上求和和/或求差,且目的地 存储器位置的最低位的部分位被归零。
[0071] 为了避免混淆描述,已示出和描述了相对简单的指令处理装置。在其他实施例中, 该指令处理装置或处理器可任选地包括其他公知组件,诸如举例而言,指令取出单元、指令 调度单元、分支预测单元、指令和数据高速缓存、指令和数据转换后备缓冲器、预取缓冲器、 微指令队列、微指令序列发生器、总线接口单元、二级或更高级高速缓存、引退单元、寄存器 重命名单元、或其各种不同的组合。此外其它实施例可具有多种不同类型的执行单元,这些 执行单元中的至少一个响应于本文公开的指令的实施例。再其它的实施例可具有多个核、 逻辑处理器、或执行引擎。可操作用于执行本文公开的指令的实施例的执行单元可被包含 在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。实际上在处理器 和其它指令处理装置中存在这些组件的多种不同的可能组合和配置。本发明的范围不仅限 于任何已知的这样的组合或配置。
[0072] 图5是打包数据操作掩码寄存器算术组合指令的示例实施例的处理方法520的示 例实施例的流程框图。在各实施例中,方法可由通用处理器、专用处理器(例如,图形处理 器或数字信号处理器)、或其他类型的数字逻辑设备或指令处理装置执行。在一些实施例 中,方法520可由图1的处理器100、图4的指令处理装置415或类似的处理器或指令处理 装置执行。替代地,方法520可由处理器或指令处理装置的不同实施例执行。此外,图1的 处理器100和图4的指令处理装置415可执行与图5的方法520的实施例相同、类似或不 同的操作和方法的实施例。
[0073] 方法包括在框521处接收打包数据操作掩码算术组合指令。打包数据操作掩码 寄存器算术组合指令指定或以其它方式指示第一打包数据操作掩码寄存器,指定或以其它 方式指示第二打包数据操作掩码寄存器,并指定或以其它方式指示目的地存储位置。在一 些实施例中,指令格式或指令的编码可具有用于明确指定这些操作数的位或一个或多个字 段。在各个方面,该指令可在处理器、指令处理装置或者其一部分(例如,解码器、指令变换 器等)处接收。在各个方面,指令可从处理器外的源(例如,从主存储器、盘、或总线或互 连)或者从处理器上的源(例如,从指令高速缓存)接收。
[0074] 随后,在框522,响应于打包数据操作掩码寄存器算术组合指令,第一打包数据操 作掩码寄存器的至少部分位和第二打包数据操作掩码寄存器的至少对应部分位的算术组 合被存储在目的地存储位置中。作为示例,执行单元、指令处理装置或处理器可生成或计算 算术组合。
[0075] 在一些实施例中,所接收的指令可以是打包数据操作掩码寄存器加法指令,且算 术组合可为第一和第二掩码寄存器的至少对应部分位的求和和/或相加。在其他实施例 中,所接收的指令可以是打包数据操作掩码寄存器减法指令,且算术组合可以是第一和第 二掩码寄存器的至少对应部分位的求差和/或相减。
[0076] 在一些实施例中,第一和第二掩码寄存器的对应部分位可以是相同尺寸的部分, 且依赖于和该相同尺寸的部分相关联的打包数据宽度和数据元素宽度,每个部分的尺寸可 为8位、16位、32位、或64位(例如,一个部分中的每个位可对应于不同的打包数据元素)。 在一些情况下,指令处理装置的指令集可包括用于这些不同的8位、16位、32位、64位尺寸 部分的每一种的不同指令,且部分的尺寸可对于指令是隐含的(例如,对于指令的操作码 是隐含的),但这不是必须的。打包数据操作掩码寄存器可至少与所支持的打包数据操作掩 码的最大尺寸一样大或任选地比该最大尺寸更大。在一个示例中,打包数据操作掩码寄存 器可以为64位宽,但这不是必须的。
[0077] 在一些实施例中,方法可包括:将第一和第二打包数据操作寄存器的对应最低位 (或最低有效)的部分位的和或差存储在目的地存储位置的对应最低位(或最低有效)的 部分位中,并对目的地存储位置的最高位(或最高有效)的部分位归零(或替代地,将最高 有效的部分位设为另一预定值)。替代地,可在最高位的部分上求和和/或求差,且目的地 存储器的最低位的部分位被归零(或设为另一预定值)。
[0078] 所示的方法包括从处理器或指令处理装置外部可见的操作(例如,从软件视角)。 在其它实施例中,该方法可任选地包括一个或多个其它操作(例如,在处理器或指令处理 器装置内部发生的一个或多个操作)。作为示例,在接收到指令之后,可将指令解码、转换、 仿真或以其它方式变换成一个或多个其它指令或控制信号。可访问和/或接收第一和第二 打包数据操作掩码。可启用执行单元以根据指令生成或计算算术组合,并可生成或计算算 术组合。
[0079] 然而,该方法还可与其它操作和/或方法一起使用。例如,如下文将进一步讨论 的,该方法可任选地作为算法或指令序列的部分,用于相加大数(例如,大整数),且与序列 的其他指令相关的操作可被添加至该方法。例如,另一指令可存储第一打包数据操作掩码 寄存器的部分位,且这些位可表示和两个打包数据操作数的对应打包数据元素的加法相关 联的进位输出信息,如下文将进一步解释的。
[0080] 图6是一组合适的打包数据寄存器607的示例实施例的框图。所示打包数据 寄存器包括三十二个512位宽打包数据或矢量寄存器。这些三十二个512位宽寄存器 被标记为ΖΜΜ0至ZMM31。在所示实施例中,这些寄存器中的较低十六个的较低阶256 位(S卩,ZMM0-ZMM15)被混叠或者覆盖在相应256位宽打包数据或矢量寄存器(标记为 YMM0-YMM15)上,但是这不是必须的。同样,在所示实施例中,YMM0-YMM15的较低阶128位 被混叠或者覆盖在相应128位打包数据或向量寄存器(标记为XMM0-XMM1)上,但是这也不 是必须的。512位宽寄存器ΖΜΜ0至ZMM31可操作用于保持512位打包数据、256位打包数 据、或者128位打包数据。256位宽寄存器YMM0-YMM15可操作用于保持256位打包数据或 者128位打包数据。128位宽寄存器XMM0-XMM1可操作用于保持128位打包数据。每一寄 存器可用于存储打包浮点数据或打包整数数据。支持不同数据元素尺寸,包括至少8位字 节数据、16位字数据、32位双字或单精度浮点数据、以及64位四字或双精度浮点数据。打 包数据寄存器的替代实施例可包括不同数量的寄存器、不同尺寸的寄存器,并且可以或者 可以不将较大寄存器混叠(alias)在较小寄存器上。
[0081] 图7是示出具有合适打包数据格式的若干示例实施例的框图。256位打包字格式 710-1是256位宽,并且包括十六个16位字数据元素。在图示中十六个16位字数据元素从 最低有效位位置至最高有效位位置标记为字〇至字15。256位打包双字格式710-2是256 位宽,并且包括八个32位双字(dword)数据元素。在图示中八个32位双字数据元素从最 低有效位位置至最高有效位位置标记为双字0至双字7。256位打包四字格式710-3是256 位宽,并且包括四个64位四字数据元素。在图示中四个64位四字数据元素从最低有效位 位置至最高有效位位置标记为四字〇至四字3。
[0082] 其他打包数据结果也是合适的。例如,其他合适的256位打包数据格式包括256位 打包8位字节格式,256位打包32位单精度浮点格式,以及256位打包64位双精度浮点格 式。单精度浮点格式和双精度浮点格式可分别看起来类似于所示的双字格式710-2和四字 格式710-3,然而数据元素内的位的含义/解释可不同。此外,大于和/或小于256位的打 包数据格式也是合适的。例如,前述数据类型的512位(或更大)打包数据格式和/或128 位(或更小)打包数据格式也是合适的。通常,对于相同数据类型而言,512位打包数据格 式可具有为256位打包数据格式的两倍之多的数据元素,而对于相同数据类型而言,128位 打包数据格式可具有为256位打包数据格式的一半那么多的数据元素。通常,打包数据元 素的数量等于以位计的打包数据的尺寸除以以位计的打包数据元素的尺寸。
[0083] 图8是示出打包数据操作掩码位823的数量依赖于打包数据宽度和打包数据元素 宽度的表格。示出了 128位、256位和512位的打包数据宽度,但是其它宽度也是可能的。 考虑了 8位字节、16位字、32位双字(dwords)或单精度浮点、以及64位四字(Qwords)或 双精度浮点的打包数据元素宽度,然而其它宽度也是可能的。
[0084] 如所示,当打包数据宽度是128位时,当打包数据元素宽度是8位时可将16位用 于掩码,当打包数据元素宽度是16位时可将8位用于掩码,当打包数据元素宽度是32位时 可将4位用于掩码,当打包数据元素宽度是64位时可将2位用于掩码。当打包数据宽度是 256位时,当打包数据元素宽度是8位时可将32位用于掩码,当打包数据元素宽度是16位 时可将16位用于掩码,当打包数据元素宽度是32位时可将8位用于掩码,当打包数据元素 宽度是64位时可将4位用于掩码。当打包数据宽度是512位时,当打包数据元素宽度是8 位时可将64位用于掩码,当打包数据元素宽度是16位时可将32位用于掩码,当打包数据 元素宽度是32位时可将16位用于掩码,当打包数据元素宽度是64位时可将8位用于掩码。
[0085] 图9是一组合适的打包数据操作掩码寄存器908的示例实施例的方框图。打包数 据操作掩码寄存器中的每一个可用于存储打包数据操作掩码。在所例示的实施例中,该组 包括标示为K0至k7的八个打包数据操作掩码寄存器。替代的实施例可包括比八个更少 (例如,两个、四个、六个等)或比八个更多(例如,十六个、二十个、三十二个等)的打包数 据操作掩码寄存器。在所例示的实施例中,打包数据操作掩码寄存器中的每一个为64位 宽。在替代实施例中,打包数据操作掩码寄存器的宽度可以比64位更宽(例如,80位,128 位等)或比64位更窄(例如,8位、16位、32位等)。打包数据操作掩码寄存器可通过使用 公知技术以不同方式实现,并且不限于任何已知的特定类型的电路。各种不同类型的寄存 器是适用的,只要它们能够存储并提供在本申请中描述的数据。合适类型的寄存器的示例 包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、及其组合。
[0086] 在一些实施例中,打包数据操作掩码寄存器908可以是架构寄存器的单独、专用 的集合。在一些实施例中,与用于编码或指定其它类型的寄存器(例如,图1的打包数据 寄存器108)的位或字段相比,指令可使用指令格式的不同位或一个或多个不同字段组合 来编码或指定打包数据操作掩码寄存器。作为示例,依掩码的打包数据指令可使用三个位 (例如,3位字段)来编码或指定八个打包数据操作掩码寄存器k0至k7中的任一个。在替 代实施例中,在有更少或更多打包数据操作掩码寄存器时,可分别使用更少或更多位。在一 个特定实现中,仅打包数据操作掩码寄存器kl至k7 (而非k0)可被寻址作为断言操作数以 用于断言依掩码打包数据操作。寄存器k0可被用作常规源或目的地,但是可不被编码为断 言操作数(例如,如果k0被指定,则其具有全一或"无掩码"编码)。在其他实施例中,寄存 器中的全部或仅一些可被编码为断言操作数。
[0087] 图10是例示打包数据操作掩码寄存器1008的示例实施例并且示出可被用作打包 数据操作掩码和/或用于掩码操作的位的数量依赖于打包数据宽度和数据元素宽度的示 图。所例示的打包数据操作掩码寄存器的示例实施例为64位宽,但这并不是必须的。依赖 于打包数据宽度和数据元素宽度的组合,可将全部64位或仅64位的子集用作用来进行掩 码操作的打包数据操作掩码。一般而言,当单个、逐元素的掩码控制位被使用时,打包数据 操作掩码寄存器中用于掩码操作的位的数量等于以位计的打包数据宽度除以以位计的打 包数据元素宽度。
[0088] 示出若干示例性示例。即,当打包数据宽度为512位而打包数据元素宽度为64位 时,则仅寄存器的最低位8位被用作打包数据操作掩码。当打包数据宽度为512位而打包 数据元素宽度为32位时,则仅寄存器的最低位16位被用作打包数据操作掩码。当打包数 据宽度为512位而打包数据元素宽度为16位时,则仅寄存器的最低位32位被用作打包数 据操作掩码。当打包数据宽度为512位而打包数据元素宽度为8位时,则寄存器的全部64 位被用作打包数据操作掩码。根据所例示的实施例,依掩码的打包数据指令可基于该指令 的相关联打包数据宽度和数据元素宽度而仅访问和/或利用寄存器中所述数量的被用于 打包数据操作掩码的最低位或最低有效位。
[0089] 在所例示的实施例中,寄存器的最低位的子集或部分被用于掩码操作,但是这不 是必须的。在替代实施例中,可任选地使用最高位的子集或某一其他子集。此外,在所例示 的实施例中,仅考虑了 512位打包数据宽度,然而,相同的原理适用于其他打包数据宽度, 诸如例如256位和128位宽度。如先前提及的,并非必须使用64位打包数据操作掩码寄存 器。
[0090] 图11A-11D示出打包数据操作掩码寄存器加法指令和其操作的多种特定示例实 施例。在这些图中,SRC1是第一源,SRC2是第二源,DEST是目的地,MAX_KL表示DEST的 位数,符号一表示存储。在一些实施例中,SRCUSRC2和DEST各自是打包数据操作掩码寄 存器,且在一些实施例中MAX_KL是64位,但这不是必须的。在其他实施例中,不是将DEST 的最高位部分归零,而是可给予其另一预定值(例如,全为1,或保持、或合并来自SRC1或 SRC2中一个的值)。再其他的实施例包括打包数据操作掩码寄存器减法指令,其和每个所 例示的指令相同,区别在于以减法操作替换加法操作。
[0091] 本文公开的打包数据操作掩码寄存器算术组合指令具有一般用途。例如,它们可 用于以对于特定应用、算法、代码或实现而言有用且期望的方式来相加、相减、或算术地组 合打包数据操作掩码和/或掩码寄存器。本领域技术人员将将会在不同算法(例如,组合 掩码)中以多种不同方式来使用这些通用的指令。
[0092] 在某些实施例中,打包数据操作掩码寄存器算术组合指令可被用于在掩码寄存器 中的掩码上执行位操纵(例如,和其他指令一同使用以创建具有特定属性的掩码寄存器)。 作为一个具体的示例,所述指令可被用作算法的一部分,以在第一掩码中定位最低有效设 定位的位置,并创建第二掩码,该掩码从所定位的位置往下至最低有效位的所有位被设定 (即1),并且在所定位位置以上所有位被清零(即0)。在一个方面,还可使用异或或(xor) 型操作。
[0093] 在其他实施例中,打包数据操作掩码寄存器算术组合指令和/或本文所公开的操 作可与执行大整数加法和/或减法相协同使用,这对于多种不同的应用是有用的。大整数 加法和/或减法可牵涉到相加或相减两个或更多个大整数(例如,具有至少128位、至少 256位、或至少512位的整数)。处理器通常不支持诸如128位或256位之类大尺寸的数据 元素,而是通常支持具有例如64位或32位的更小最大尺寸的数据元素。大整数的每一个 可跨越打包数据寄存器中的多个较小数据元素(例如,32位或64位数据元素)。例如,两 个512位整数的每一个可跨越512位打包数据或寄存器内的十六个32位数据元素或八个 64位数据元素。
[0094] 为了进一步说明特定的概念,考虑通过十六次单独的32位加法进行的两个512位 整数的加法。最初,可在包括大整数的两个打包数据上执行打包数据加法指令/操作,所述 大整数各自跨越十六个32位数据元素。打包数据加法指令可将相应位置中的相应的32位 数据元素对的每一对相加,并在目的地中存储和。相应32位数据元素对的每次相加会可能 地(依赖于被相加的32位数据元素的值)牵涉到进位输出。当和的大小过大以致不能在 可用于结果数据元素的数量的位(例如32位)中被表示时,可发生进位输出。任何来自该 十六个加法的进位输出将会丢失。
[0095] 接下来,可确定加法中的哪个牵涉到丢失的进位输出。这可以用不同的方式来完 成。作为一个示例,打包数据比较指令可被用于执行比较,从而确定加法中的哪个牵涉到进 位输出。打包数据比较指令可将每个和的大小和被相加的一个或多个源的对应数据元素的 大小进行比较。当相加无符号整数时,如果和小于任一个源,则可推断存在进位输出。当和 的大小小于任一个源的对应数据元素的大小时,加法可被确定为牵涉到进位输出。相反,当 和的大小大于或等于任一个源的对应数据元素的大小时,加法可被确定为不牵涉到进位输 出。当加法被确定为牵涉到进位输出时,第一打包数据操作掩码(即,暂且称为K1)的打包 数据操作掩码位可被设定(即1),或当加法被确定为不牵涉到进位输出时,其被清零(即 〇)。第一打包数据操作掩码(K1)中每个被设定的位表示进位输出信息,其指示对应的32 位数据元素对的对应加法产生了进位输出,而K1中每个被清零的位指示对应的32位数据 元素对的对应加法没有产生进位输出。
[0096] 存在一种可能,即与相邻较低位数据元素对的和的进位输出相对应的进位输入可 引发进入较高位数据元素的进一步进位输出。因为进位输入仅是二进制的1,仅当进位输入 所被相加的和最初具有全为二进制1的值(即,11··· 11)时,所引发的进位输出才会发生。 当进位输入被相加到具有全二进制1的元素时,则所引发的进位输出会发生。由此,在将进 位输入加至较高位的和时,可首先执行检查以查看是否该进位输入会引发进位输出。这可 以用不同的方式来执行。在一个示例中,可将和与另一个包括全二进制1(即11…11)的源 进行打包比较。依赖于该第二比较的结果,第二打包数据操作掩码(暂且称为K2)中的位 可被设定或清零。具体地,当任何和等于全二进制1时,第二打包数据操作掩码(K2)的位 可被设定(即1),否则其被清零(即〇)。因此,K2指示哪些进位输入会引发附加的进位输 出。
[0097] 随后,第一打包数据操作掩码(K1)的位可被移位,以使得所设定的进位输出位被 移到它们将被作为进位输入而相加的和/数据元素(例如,向右移动1位)。K1中的被设 定位现在表示准备好被加到和上的进位输入。
[0098] 接下去,可使用本文所公开的打包数据操作掩码寄存器加法指令和/或操作来将 被移位的第一打包数据操作掩码寄存器(K1)和第二打包数据操作掩码寄存器(K2)相加。 例如,该操作可由Kaddw kl,kl,k2表示。这可有助于将所引发的进位输出考虑在内。所产 生的打包数据操作掩码寄存器K1现在包含来自于原始加法的、且与所引发的进位相组合 的进位输入。这可有助于针对所丢失的中间进位来调节大整数和。
[0099] 接下去,可执行X0R来进行一些调整和/或校正。首先,X0R可有助于校正可能已 有二级进位但没有进位输入的情况。如果在原始求和之后,元素是全二进制1,但没有进位 输入,则这些进位可被移除。当二级进位确实将具有对应的进位输入时,X0R可仅允许二级 进位。因为K1和K2都具有1,这些二级进位被移除。其次,X0R校正其中二级进位的相加 抬高原始进位从而在中间元素中留下不正确的"〇"的情况。这些中间元素将利用X0R将它 们的值设置回"1",确保对应数据元素将具有正确的进位调节。K1现在具有全部正确的进 位以对被分成32个位元素/段的原始加法进行完全地校正。
[0100] 随后,在经调节的第一打包数据操作掩码(K1)中所反映的经调节的进位输入可 被加到和上,以产生最终期望的大整数加法和。可执行打包数据加法指令/操作,其中当被 第一打包数据操作掩码(K1)所断言时,加上进位。
[0101] 这只是一个说明性示例。也可执行更大或更小整数的加法,还可执行大整数减法。 可使用该算法的多次迭代来执行更大的加法。当在其中实现算法以对打包数据操作掩码寄 存器进行操作的给定ISA中所述指令不可用时,掩码可被移到通用寄存器并在该处操纵, 且随后被移回打包数据操作掩码寄存器以用于Kadd指令。
[0102] 指令集包括一个或多个指令格式。给定指令格式定义各个字段(位的数量、位的 位置)以指定要执行的操作(操作码)以及对其要执行该操作的操作数等。通过指令模板 (或子格式)的定义来进一步分解一些指令格式。例如,给定指令格式的指令模板可被定 义为具有指令格式的字段(所包括的字段通常按照相同的顺序,但是至少一些字段具有不 同的位位置,因为包括更少的字段)的不同子集,和/或被定义为对给定字段不同地进行解 释。由此,ISA的每一指令使用给定指令格式(并且如果定义,则在该指令格式的指令模板 的给定一个中)来表达,并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具 有专用操作码以及包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目 的地以及源2)的指令格式;并且该ADD指令在指令流中的出现将具有选择专用操作数的操 作数字段中的专用内容。已经发布和/或公布了被称为高级向量扩展(AVX) (AVX1和AVX2) 且使用向量扩展(VEX)编码方案的SMD扩展集(例如,参见2011年10月的Intel? 64和 IA-32架构软件开发者手册,并且参见2011年6月的Intel?高级向量扩展编程参考)。
[0103] 示例性指令格式
[0104] 本文中所描述的指令的实施例可以不同的格式体现。另外,在下文中详述示例性 系统、架构、以及流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限 于详述的系统、架构、以及流水线。
[0105] VEX指令格式
[0106] VEX编码允许指令具有两个以上操作数,并且允许SMD向量寄存器比128位长。 VEX前缀的使用提供了三操作数(或者更多)句法。例如,先前的两操作数指令执行改写源 操作数的操作(诸如A = A+B)。VEX前缀的使用使操作数能执行非破坏性操作,诸如A = B+C。
[0107] 图12A示出示例性AVX指令格式,包括VEX前缀1202、实操作码字段1230、M〇D R/ Μ字节1240、SIB字节1250、位移字段1262以及IMM81272。图12B示出来自图12A的哪些 字段构成完整操作码字段1274和基础操作字段1242。图12C示出来自图12A的哪些字段 构成寄存器索引字段1244。
[0108] VEX前缀(字节0-2) 1202以三字节形式进行编码。第一字节是格式字段1240 (VEX 字节0,位[7:0]),该格式字段1240包含明确的C4字节值(用于区分C4指令格式的唯一 值)。第二-第三字节(VEX字节1-2)包括提供专用能力的多个位字段。具体地,REX字段 1205 (VEX 字节 1,位[7-5])由 VEX. R 位字段(VEX 字节 1,位[7] - R)、VEX. X 位字段(VEX 字 节1,位[6] - X)以及VEX. B位字段(VEX字节1,位[5] - B)组成。这些指令的其他字段对如 在本领域中已知的寄存器索引的较低三个位(rrr、XXX以及bbb)进行编码,由此可通过增 加 VEX. R、VEX. X以及VEX. B来形成Rrrr、Xxxx以及Bbbb。操作码映射字段1215 (VEX字节 1,位[4:0] -mmmmm)包括对隐含的前导操作码字节进行编码的内容。W字段1264 (VEX字节 2,位[7] -W)由记号VEX. W表示,并且提供取决于该指令而不同的功能。VEX. WW1220 (VEX 字节2,位[6:3]-vvvv)的作用可包括如下:1) VEX. vvvv编码第一源寄存器操作数且对具有 两个或两个以上源操作数的指令有效,第一源寄存器操作数以反转(1补码)形式被指定; 2) VEX. vvvv编码目的地寄存器操作数,目的地寄存器操作数针对特定向量位移以1补码的 形式被指定;或者3)VEX. vvvv不编码任何操作数,保留该字段,并且应当包含1111b。如果 VEX. L1268尺寸字段(VEX字节2,位[2]-L) =0,则它指示128位向量;如果VEX. L= 1,则 它指示256位向量。前缀编码字段1225(VEX字节2,位[1:0]-ρρ)提供了用于基础操作字 段的附加位。
[0109] 实操作码字段1230(字节3)还被称为操作码字节。操作码的一部分在该字段中 被指定。
[0110] MOD R/Μ 字段 1240(字节 4)包括 MOD 字段 1242(位[7-6])、Reg 字段 1244(位 [5-3])、以及R/Μ字段1246(位[2-0])。Reg字段1244的作用可包括如下:对目的地寄存 器操作数或源寄存器操作数(Rrrr中的rrr)进行编码;或者被视为操作码扩展且不用于对 任何指令操作数进行编码。R/Μ字段1246的作用可包括如下:对引用存储器地址的指令操 作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
[0111] 比例、索弓丨、基址(SIB) -比例字段1250(字节5)的内容包括用于存储器地址生 成的SS1252(位[7-6])。先前已经针对寄存器索引Xxxx和Bbbb参考了 SIB. xxxl254(位 [5-3])和 SIB.bbbl256(位[2-0])的内容。
[0112] 位移字段1262和立即数字段(IMM8) 1272包含地址数据。
[0113] 示例性寄存器架构
[0114] 图13是根据本发明的一个实施例的寄存器架构1300的框图。在所示出的实施 例中,有32个512位宽的向量寄存器1310 ;这些寄存器被引用为zmmO到zmm31。较低的 16zmm寄存器的较低阶256个位覆盖在寄存器ymm〇-16上。较低的16zmm寄存器的较低阶 128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmmO-15上。
[0115] 写掩码寄存器1315 -在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一 写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器1315的尺寸是16位。如先 前所述的,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当正常指示k0 的编码用作写掩码时,它选择硬连线的写掩码OxFFFF,从而有效地停用该指令的写掩码操 作。
[0116] 通用寄存器1325--在所示出的实施例中,有十六个64位通用寄存器,这些寄存 器与现有的x86寻址模式一起使用来寻址存储器操作数。这些寄存器通过名称RAX、RBX、 RCX、RDX、RBP、RSI、RDI、RSP 以及 R8 到 R15 来引用。
[0117] 标量浮点堆栈寄存器组(x87堆栈)1345,在其上面使用了别名MMX打包整数 平坦寄存器组1350--在所示出的实施例中,x87堆栈是用于使用x87指令集扩展来对 32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用MMX寄存器来对64位打包 整数数据执行操作,以及为在MMX和XMM寄存器之间执行的一些操作保存操作数。
[0118] 本发明的替代实施例可以使用较宽的或较窄的寄存器。另外,本发明的替代实施 例可以使用更多、更少或不同的寄存器组和寄存器。
[0119] 示例性核架构、处理器和计算机架构
[0120] 处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的 核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通 用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现 可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一 个或多个通用无序核的CPU;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个 或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1) 在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理 器;3)与CPU在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集 成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述 的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管 芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
[0121] 示例性核架构
[0122] 有序和无序核框图
[0123] 图14A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重 命名的无序发布/执行流水线的框图。图14B是示出根据本发明的各实施例的要包括在处 理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核 的框图。图14A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄 存器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将 描述无序方面。
[0124] 在图14A中,处理器流水线1400包括取出级1402、长度解码级1404、解码级1406、 分配级1408、重命名级1410、调度(也称为分派或发布)级1412、寄存器读取/存储器读取 级1414、执行级1416、写回/存储器写入级1418、异常处理级1422和提交级1424。
[0125] 图14B示出了包括耦合到执行引擎单元1450的前端单元1430的处理器核1490, 且执行引擎单元和前端单元两者都耦合到存储器单元1470。核1490可以是精简指令集计 算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作 为又一选项,核1490可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用 计算图形处理器单元(GPGPU)核、或图形核等等。
[0126] 前端单元1430包括耦合到指令高速缓存单元1434的分支预测单元1432,该指令 高速缓存单元耦合到指令转换后备缓冲器(TLB) 1436,该指令转换后备缓冲器耦合到指令 取出单元1438,该指令取出单元耦合到解码单元1440。解码单元1440 (或解码器)可解码 指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一 个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元 1440可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可 编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1490包括(例如, 在解码单元1440中或否则在前端单元1430内的)用于存储某些宏指令的微代码的微代码 ROM或其他介质。解码单元1440耦合到执行引擎单元1450中的重命名/分配单元1452。
[0127] 执行引擎单元1450包括重命名/分配器单元1452,该重命名/分配器单元耦合至 引退单元1454和一个或多个调度器单元1456的集合。调度器单元1456表示任何数目的 不同调度器,包括预留站、中央指令窗等。调度器单元1456耦合到物理寄存器组单元1458。 每个物理寄存器组单元1458表示一个或多个物理寄存器组,其中不同的物理寄存器组存 储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、 向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中, 物理寄存器组单元1458包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些 寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元 1458与引退单元1454重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例 如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组; 使用寄存器映射和寄存器池等等)。引退单元1454和物理寄存器组单元1458耦合到执行 群集1460。执行群集1460包括一个或多个执行单元1462的集合和一个或多个存储器访 问单元1464的集合。执行单元1462可以对各种类型的数据(例如,标量浮点、打包整数、 打包浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些 实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执 行所有功能的仅一个执行单元或多个执行单元。调度器单元1456、物理寄存器组单元1458 和执行群集1460被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的 流水线(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流 水线,和/或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访 问流水线--以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集 具有存储器访问单元1464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这 些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
[0128] 存储器访问单元1464的集合耦合到存储器单元1470,该存储器单元包括耦合到 数据高速缓存单元1474的数据TLB单元1472,其中所述数据高速缓存单元耦合到二级 (L2)高速缓存单元1476。在一个示例性实施例中,存储器访问单元1464可以包括加载单 元、存储地址单元和存储数据单元,这些单元中的每一个单元稱合到存储器单元1470中的 数据TLB单元1472。指令高速缓存单元1434还耦合到存储器单元1470中的二级(L2)高 速缓存单元1476。L2高速缓存单元1476耦合到一个或多个其他级的高速缓存,并最终耦 合到主存储器。
[0129] 作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线 1400 :1)指令取出1438执行取出和长度解码级1402和1404 ;2)解码单元1440执行解码 级1406 ;3)重命名/分配器单元1452执行分配级1408和重命名级1410 ;4)调度器单元 1456执行调度级1412 ;5)物理寄存器组单元1458和存储器单元1470执行寄存器读取/存 储器读取级1414 ;执行群集1460执行执行级1416 ;6)存储器单元1470和物理寄存器组单 元1458执行写回/存储器写入级1418 ;7)各单元可牵涉到异常处理级1422 ;以及8)引退 单元1454和物理寄存器组单元1458执行提交级1424。
[0130] 核1490可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加 的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼 维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述 的各指令。在一个实施例中,核1490包括用于支持打包数据指令集扩展(例如AVX1,AVX2) 的逻辑,藉此允许使用打包数据来执行被许多多媒体应用所使用的操作。
[0131] 应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并 且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其 中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组 合(例如,时分取出和解码以及此后诸如用Intel?超线程化技术来同步多线程化)。
[0132] 尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构 中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单 元1434/1474以及共享L2高速缓存单元1476,但替代实施例可以具有用于指令和数据两 者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在 一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组 合。或者,所有高速缓存都可以在核和/或处理器的外部。
[0133] 具体的示例性有序核架构
[0134] 图15A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑 块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互 连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑 通信。
[0135] 图15A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1502 的连接及其二级(L2)高速缓存的本地子集1504的框图。在一个实施例中,指令解码器1500 支持具有打包数据指令集扩展的x86指令集。L1高速缓存1506允许对进入标量和向量单 元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量 单元1508和向量单元1510使用分开的寄存器集合(分别为标量寄存器1512和向量寄存 器1514),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存 1506读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包 括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
[0136] L2高速缓存的本地子集1504是全局L2高速缓存的一部分,该全局L2高速缓存被 划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己 的L2高速缓存的本地子集1504的直接访问路径。被处理器核读出的数据被存储在其L2 高速缓存子集1504中,并且可以与其他处理器核访问其自己的本地L2高速缓存子集并行 地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集1504中,并在 必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以 允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数 据路径为每个方向1012位宽。
[0137] 图15B是根据本发明的各实施例的图15A中的处理器核的一部分的展开图。图 15B包括L1高速缓存1504的L1数据高速缓存1506A部分,以及关于向量单元1510和向 量寄存器1514的更多细节。具体地说,向量单元1510是16宽向量处理单元(VPU)(见16 宽ALU1528),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通 过混合单元1520支持对寄存器输入的混合、通过数值转换单元1522A-B支持数值转换、并 通过复制单元1524支持对存储器输入的复制。写掩码寄存器1526允许断言所得的向量写 入。
[0138] 具有集成存储器控制器和图形器件的处理器
[0139] 图16是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制 器、以及可能具有集成图形器件的处理器1600的框图。图16中的实线框示出处理器1600, 该处理器具有单个核1602A、系统代理1610、一个或多个总线控制器单元1616的集合,而虚 线框的可选附加示出替代处理器1600,该替代处理器具有多个核1602A-N、系统代理单元 1610中的一个或多个集成存储器控制器单元1614的集合以及专用逻辑1608。
[0140] 因此,处理器1600的不同实现可包括:1)CPU,其中专用逻辑1608是集成图形和/ 或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1602A-N是一个或多个通用核 (例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1602A-N是旨 在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1602A-N 是多个通用有序核。因此,处理器1600可以是通用处理器、协处理器或专用处理器,诸如例 如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集 成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现 在一个或多个芯片上。处理器1600可以是一个或多个衬底的一部分,和/或可以使用诸如 例如BiCM0S、CM0S或NM0S等的多个加工技术中的任何一个技术将处理器1600实现在一个 或多个衬底上。
[0141] 存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高 速缓存单元1606的集合、以及耦合至集成存储器控制器单元1614的集合的外部存储器 (未示出)。该共享高速缓存单元1606的集合可以包括一个或多个中间级高速缓存,诸如 二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组 合。尽管在一个实施例中,基于环的互连单元1612将集成图形逻辑1608、共享高速缓存单 元1606的集合以及系统代理单元1610/集成存储器控制器单元1614互连,但替代实施例 可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高 速缓存单元1606和核1602-A-N之间的一致性(coherency)。
[0142] 在一些实施例中,核1602A-N中的一个或多个核能够多线程化。系统代理1610包 括协调和操作核1602A-N的那些组件。系统代理单元1610可包括例如功率控制单元(PCU) 和显示单元。P⑶可以是或包括用于调整核1602A-N和集成图形逻辑1608的功率状态所需 的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
[0143] 核1602A-N在架构指令集方面可以是同构的或异构的;S卩,这些核1602A-N中的两 个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或 不同的指令集。
[0144] 示例性计算机架构
[0145] 图17-20是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持 PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数 字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播 放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包 含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
[0146] 现在参见图17,所示为根据本发明的一个实施例的系统1700的框图。系统1700 可以包括一个或多个处理器1710、1715,这些处理器耦合到控制器中枢1720。在一个实 施例中,控制器中枢1720包括图形存储器控制器中枢(GMCH) 1790和输入/输出中枢 (Ι0Η) 1750 (其可以在分开的芯片上);GMCH1790包括存储器和图形控制器,存储器1740和 协处理器1745耦合到该存储器和图形控制器;I0H1750将输入/输出(I/O)设备1760耦合 到GMCH1790。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文 中所描述的),存储器1740和协处理器1745直接耦合到处理器1710以及控制器中枢1720, 该控制器中枢1720与I0H1750处于单个芯片中。
[0147] 附加处理器1715的任选性质用虚线表示在图17中。每一处理器1710、1715可包 括本文中描述的处理核中的一个或多个,并且可以是处理器1600的某一版本。
[0148] 存储器1740可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者 的组合。对于至少一个实施例,控制器中枢1720经由诸如前端总线(FSB)之类的多分支总 线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1795与处理器1710、1715 进行通信。
[0149] 在一个实施例中,协处理器1745是专用处理器,诸如例如高吞吐量MIC处理器、网 络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控 制器中枢1720可以包括集成图形加速器。
[0150] 在物理资源1710、2715之间可以存在包括架构、微架构、热、和功耗特征等的一系 列品质度量方面的各种差异。
[0151] 在一个实施例中,处理器1710执行控制一般类型的数据处理操作的指令。协处理 器指令可嵌入在这些指令中。处理器1710将这些协处理器指令识别为应当由附连的协处 理器1745执行的类型。因此,处理器1710在协处理器总线或者其他互连上将这些协处理 器指令(或者表示协处理器指令的控制信号)发布到协处理器1745。协处理器1745接受 并执行所接收的协处理器指令。
[0152] 现在参考图18,所示为根据本发明的一实施例的更具体的第一示例性系统1800 的框图。如图18所示,多处理器系统1800是点对点互连系统,并包括经由点对点互连1850 耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每一个都可以是处 理器1600的某一版本。在本发明的一个实施例中,处理器1870和1880分别是处理器1710 和1715,而协处理器1838是协处理器1745。在另一实施例中,处理器1870和1880分别是 处理器1710和协处理器1745。
[0153] 处理器1870和1880被示为分别包括集成存储器控制器(MC)单元1872和1882。 处理器1870还包括作为其总线控制器单元的一部分的点对点(P-P)接口 1876和1878 ;类 似地,第二处理器1880包括点对点接口 1886和1888。处理器1870、1880可以使用点对点 (P-P)电路1878、1888经由P-P接口 1850来交换信息。如图18所示,頂C1872和1882将 各处理器耦合至相应的存储器,即存储器1832和存储器1834,这些存储器可以是本地附连 至相应的处理器的主存储器的部分。
[0154] 处理器1870、1880可各自经由使用点对点接口电路1876、1894、1886、1898的各个 P-P接口 1852U854与芯片组1890交换信息。芯片组1890可以可选地经由高性能接口 1838 与协处理器1839交换信息。在一个实施例中,协处理器1838是专用处理器,诸如例如高吞 吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
[0155] 共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器 外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将 任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
[0156] 芯片组1890可经由接口 1896耦合至第一总线1816。在一个实施例中,第一总线 1816可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总 线之类的总线,但本发明的范围并不受此限制。
[0157] 如图18所示,各种I/O设备1814可以连同总线桥1818耦合到第一总线1816,总 线桥1818将第一总线1816耦合至第二总线1820。在一个实施例中,诸如协处理器、高吞吐 量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单 元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1815耦合到第一总线 1816。在一个实施例中,第二总线1820可以是低引脚计数(LPC)总线。各种设备可以被耦 合至第二总线1820,在一个实施例中这些设备包括例如键盘/鼠标1822、通信设备1827以 及诸如可包括指令/代码和数据1828的盘驱动器或其它大容量存储设备的存储单元1830。 此外,音频1/01824可以被耦合至第二总线1820。注意,其它架构是可能的。例如,代替图 18的点对点架构,系统可以实现多分支总线或其它这类架构。
[0158] 现在参考图19,所示为根据本发明的实施例的更具体的第二示例性系统1900的 框图。图18和图19中的相同部件用相同附图标记表示,并从图19中省去了图18中的某 些方面,以避免使图19的其它方面变得模糊。
[0159] 图19示出处理器1870、1880可分别包括集成存储器和I/O控制逻辑("CL") 1872 和1882。因此,CL1872、1882包括集成存储器控制器单元并包括I/O控制逻辑。图19不仅 示出存储器1832、1834耦合至CL1872、1882,而且还示出I/O设备1914也耦合至控制逻辑 1872、1882。传统I/O设备1915被耦合至芯片组1890。
[0160] 现在参考图20,所示为根据本发明的一实施例的S〇C2000的框图。在图16中,相 似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图20中,互 连单元2002被耦合至:应用处理器2010,该应用处理器包括一个或多个核202A-N的集合 以及共享高速缓存单元1606 ;系统代理单元1610 ;总线控制器单元1616 ;集成存储器控制 器单元1614 ;-组或一个或多个协处理器2020,其可包括集成图形逻辑、图像处理器、音频 处理器和视频处理器;静态随机存取存储器(SRAM)单元2030 ;直接存储器存取(DMA)单元 2032 ;以及用于耦合至一个或多个外部显示器的显示单元2040。在一个实施例中,协处理 器2020包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理 器、或嵌入式处理器等等。
[0161] 本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组 合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程 系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至 少一个输入设备以及至少一个输出设备。
[0162] 可将程序代码(诸如图18中示出的代码1830)应用于输入指令,以执行本文描述 的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了 本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电 路(ASIC)或微处理器之类的处理器的任何系统。
[0163] 程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统 通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制 不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
[0164] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令 来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本 文所述的技术的逻辑。被称为"IP核"的这些表示可以被存储在有形的机器可读介质上,并 被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0165] 这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品 的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、 紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存 储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机 存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器 (EEPR0M);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
[0166] 因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或 包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和 /或系统特征。这些实施例也被称为程序产品。
[0167] 仿真(包括二进制变换、代码变形等)
[0168] 在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指 令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、 仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用 软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处 理器上且部分在处理器外。
[0169] 图21是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进 制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件 指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图21 示出可以使用x86编译器2104来编译利用高级语言2102的程序,以生成可以由具有至少 一个x86指令集核的处理器2116原生执行的x86二进制代码2106。具有至少一个x86指 令集核的处理器2116表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理 以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔 x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处 理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的 英特尔处理器基本相同的结果。x86编译器2104表示用于生成x86二进制代码2106 (例 如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个 x86指令集核的处理器2116上执行。类似地,图21示出可以使用替代的指令集编译器2108 来编译利用高级语言2102的程序,以生成可以由不具有至少一个x86指令集核的处理器 2114 (例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行 加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指 令集二进制代码2110。指令转换器2112被用来将x86二进制代码2106转换成可以由不具 有x86指令集核的处理器2114原生执行的代码。该转换后的代码不大可能与替代性指令 集二进制代码2110相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将 完成一般操作并由来自替代指令集的指令构成。因此,指令转换器2112通过仿真、模拟或 任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86 二进制代码2106的软件、固件、硬件或其组合。
[0170] 在本申请中可能使用术语"耦合的"和"连接的"以及其衍生词。应当理解,这些 术语并不旨在作为彼此的同义词。相反,在具体实施例中,"连接的"用于指示两个或更多 个要素彼此直接物理或电接触。"耦合的"可表示两个或多个元件直接物理或电气接触。然 而,"耦合的"也可表示两个或更多个要素可能并未彼此直接接触,但是仍然彼此协作、彼此 作用。例如,执行单元可通过一个或多个中间组件与寄存器耦合。
[0171] 在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透 彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或 多个其他实施例。所描述的具体实施例不是为了限制本发明而是为了说明本发明。本发明 的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在其它实例中,以方框 图形式而非以细节地示出了公知的电路、结构、设备和操作以避免使说明书的理解变得晦 涩。
[0172] 本领域的技术人员还将意识到可对本文公开的实施例做出修改,诸如对实施例的 各组件的配置、形式、功能和操作方式和使用进行修改。在附图中显示且在说明书中描述的 关系的所有等效关系都被涵盖在本发明的实施例内。为说明的简单和清楚起见,在附图中 示出的元素不一定按比例绘制。例如,为清楚起见,一些元件的尺寸相对其它元件被夸大。 在附图中,箭头用于示出耦合。
[0173] 已描述了各种操作和方法。已经以流程图方式以基本形式对一些方法进行了描 述,但操作可任选地被添加至这些方法和/或从这些方法中移去。另外,根据示例性实施 例,可能已描述操作的特定顺序,但要理解该特定顺序是示例性的。替换实施例可任选地以 不同方式执行这些操作、组合某些操作、交错某些操作等。可对于所描述的方法做出很多修 改和适应,且应构想到这些修改和适应。
[0174] 某些操作可由硬件组件执行,或者可体现为机器可执行或电路可执行的指令中, 它们可被用于致使,或至少导致,用执行这些操作的指令编程的电路或硬件。电路可包括通 用或专用处理器、或逻辑电路,此处仅是列举数例。这些操作还可任选地由硬件和软件的组 合执行。执行单元和/或处理器可包括专门或特定电路,或者其它逻辑,它们对指令或微指 令或者衍生自机器指令的一个或多个控制信号作出响应,以执行某些操作。
[0175] 还应当理解,贯穿说明书全文的对"一个实施例"、"一实施例"或"一个或多个实施 例"的引用例如表示特定特征可包含在本发明实施例的实践中。类似地,应当理解,在本说 明书中,为了使本公开变得流畅并帮助理解各个创新性方面,各个特征有时被一起编组在 单个实施例、附图或其描述中。然而,该公开方法不应被解释成反映出如下意图,即本发明 需要比每项权利要求中所明确记载的特征更多的特征。相反,如随附的权利要求反映的,各 创新性方面可体现于比单个所公开的实施例的全部特征更少的特征。因此,在详细说明书 之后所附的权利要求据此被明确纳入该详细说明书中,每一项权利要求独自作为本发明的 单独的实施例。
【权利要求】
1. 一种方法,包括: 接收打包数据操作掩码寄存器算术组合指令,所述打包数据操作掩码寄存器算术组合 指令指示第一打包数据操作掩码寄存器、指示第二打包数据操作掩码寄存器、并指示目的 地存储位置;以及 响应于所述打包数据操作掩码寄存器算术组合指令,将所述第一打包数据操作掩码寄 存器的至少部分位和所述第二打包数据操作掩码寄存器的至少对应部分位的算术组合存 储在所述目的地存储位置中。
2. 如权利要求1所述的方法,其特征在于,接收所述指令包括接收打包数据操作掩码 寄存器加法指令,并且存储所述算术组合包括存储所述第一和第二打包数据操作掩码寄存 器的至少对应部分位的和。
3. 如权利要求1所述的方法,其特征在于,接收所述指令包括接收打包数据操作掩码 寄存器减法指令,并且存储所述算术组合包括存储所述第一和第二打包数据操作掩码寄存 器的至少对应部分位的差。
4. 如权利要求1所述的方法,其特征在于,存储所述算术组合包括将所述第一和第二 打包数据操作掩码寄存器的对应最低位的部分位的和存储在所述目的地存储位置的对应 最低位的部分位,并对所述目的地存储位置的最高位的部分位归零,所述目的地存储位置 是打包数据操作掩码寄存器。
5. 如权利要求1所述的方法,其特征在于,存储所述算术组合包括存储所述第一和第 二打包数据操作掩码寄存器的对应相同尺寸部分位的算术组合,并且所述相同尺寸部分选 自于8位、16位、32位和64位。
6. 如权利要求1所述的方法,其特征在于,所述第一打包数据操作掩码寄存器的所述 部分位中每个位对应于第一打包数据的至少不同数据元素。
7. 如权利要求1所述的方法,其特征在于,所述第一打包数据操作掩码寄存器的所述 部分位中每个位包括进位输出信息以用于指示:作为第一打包数据和第二打包数据的不同 的对应数据元素对相加的结果,是否已产生进位输出。
8. 如权利要求1所述的方法,其特征在于,还包括接收第二指令,所述第二指令指示打 包数据寄存器,且指示所述第一打包数据操作掩码寄存器作为掩码以断言所述第二指令的 操作。
9. 如权利要求1所述的方法,其特征在于,所述算术组合包括和,并且所述方法还包括 使用所述和来相加各自为128位或更宽的大整数。
10. -种装置,包括: 第一打包数据操作掩码寄存器; 第二打包数据操作掩码寄存器;以及 与所述第一和第二打包数据操作掩码寄存器相耦合的执行单元,所述执行单元可操作 用于,响应于指示第一打包数据操作掩码寄存器、指示第二打包数据操作掩码寄存器、且指 示目的地存储位置的打包数据操作掩码寄存器算术组合指令,将所述第一打包数据操作掩 码寄存器的至少部分位和所述第二打包数据操作掩码寄存器的至少对应部分位的算术组 合存储在所述目的地存储位置中。
11. 如权利要求10所述的装置,其特征在于,所述指令包括打包数据操作掩码寄存器 加法指令,并且所述执行单元可操作用于,作为所述指令的结果,将所述第一和第二打包数 据操作掩码寄存器的至少对应部分位的和存储在所述目的地存储位置中。
12. 如权利要求10所述的装置,其特征在于,所述指令包括打包数据操作掩码寄存器 减法指令,并且所述执行单元可操作用于,作为所述指令的结果,将所述第一和第二打包数 据操作掩码寄存器的至少对应部分位的差存储在所述目的地存储位置中。
13. 如权利要求10所述的装置,其特征在于,所述执行单元可操作用于,作为所述指令 的结果,将所述第一和第二打包数据操作掩码寄存器的对应最低位的部分位的和存储在所 述目的地存储位置的对应最低位的部分位中,并对所述目的地存储位置的最高位的部分位 归零,所述目的地存储位置是打包数据操作掩码寄存器。
14. 如权利要求10所述的装置,其特征在于,所述执行单元可操作用于,作为所述指 令的结果,存储所述第一和第二打包数据操作掩码寄存器的对应相同尺寸部分位的算术组 合,并且所述相同尺寸部分选自于8位、16位、32位和64位。
15. 如权利要求10所述的装置,其特征在于,所述第一打包数据操作掩码寄存器的所 述部分位中每个位对应于第一打包数据的至少不同数据元素。
16. 如权利要求10所述的装置,其特征在于,所述第一打包数据操作掩码寄存器的所 述部分位中每个位包括进位输出信息以用于指示:作为第一打包数据和第二打包数据的不 同的对应数据元素对相加的结果,是否已产生进位输出。
17. 如权利要求10所述的装置,其特征在于,所述打包数据操作掩码寄存器算术组合 指令可操作用于明确地指定所述第一打包数据操作掩码寄存器,可操作用于明确地指定所 述第二打包数据操作掩码寄存器,且可操作用于明确地指定同样为打包数据操作掩码寄存 器的所述目的地存储位置。
18. 如权利要求10所述的装置,其特征在于,所述第一和第二打包数据操作掩码寄存 器各自是64位寄存器,并且其中所述第一和第二打包数据操作掩码寄存器的对应部分位 是选自8位、16位、32位和64位的相同尺寸部分。
19. 如权利要求10所述的装置,其特征在于,还包括具有所述第一和第二打包数据操 作掩码寄存器的打包数据操作掩码寄存器组。
20. -种系统,包括: 互连; 与所述互连耦合的处理器,所述处理器包括第一打包数据操作掩码寄存器和第二打包 数据操作掩码寄存器,并且所述处理器可操作用于,响应于指示所述第一打包数据操作掩 码寄存器、指示所述第二打包数据操作掩码寄存器、且指示目的地存储位置的打包数据操 作掩码寄存器算术组合指令,将所述第一打包数据操作掩码寄存器的至少部分位和所述第 二打包数据操作掩码寄存器的至少对应部分位的算数组合存储在所述目的地存储位置中; 以及 与所述互连耦合的动态随机存取存储器(DRAM)。
21. 如权利要求20所述的系统,其特征在于,所述第一打包数据操作掩码寄存器的所 述部分位中每个位对应于第一打包数据的至少不同数据元素。
22. 如权利要求20所述的系统,其特征在于,所述指令包括打包数据操作掩码寄存器 加法指令,其中所述处理器可操作用于,响应于所述指令,将所述第一和第二打包数据操作 掩码寄存器的对应相同尺寸的、最低位的部分位的和存储在所述目的地存储位置的对应相 同尺寸、最低位的部分位中,并且所述相同尺寸的部分选自8位、16位、32位、和64位。
23. 一种制品,包括: 包括一种或多种固体材料的机器可读存储介质,所述机器可读存储介质存储打包数据 操作掩码寄存器算术组合指令, 所述打包数据操作掩码寄存器算术组合指令指示第一打包数据操作掩码寄存器,指示 第二打包数据操作掩码寄存器,且指示目的地存储位置,且所述打包数据操作掩码算术组 合指令如果被机器执行则可操作用于致使所述机器执行操作,包括: 将所述第一打包数据操作掩码寄存器的至少部分位和所述第二打包数据操作掩码寄 存器的至少对应部分位的算术组合存储在所述目的地存储位置中。
24. 如权利要求23所述的制品,其特征在于,所述第一打包数据操作掩码寄存器的所 述部分位中每个位对应于第一打包数据的至少不同数据元素。
25. 如权利要求23所述的制品,其特征在于,所述指令包括打包数据操作掩码寄存器 加法指令,其中所述执行单元可操作用于,作为所述指令的结果,将所述第一和第二打包数 据操作掩码寄存器的对应相同尺寸的、最低位的部分位的和存储在所述目的地存储位置的 对应相同尺寸、最低位的部分位中,并且所述相同尺寸的部分选自8位、16位、32位、和64 位。
【文档编号】G06F9/06GK104126170SQ201180076445
【公开日】2014年10月29日 申请日期:2011年12月22日 优先权日:2011年12月22日
【发明者】B·L·托尔, R·凡伦天, J·C·圣阿德里安, E·乌尔德-阿迈德-瓦尔, M·J·查尼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1