CN104049953A - 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令 - Google Patents
用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令 Download PDFInfo
- Publication number
- CN104049953A CN104049953A CN201410094949.2A CN201410094949A CN104049953A CN 104049953 A CN104049953 A CN 104049953A CN 201410094949 A CN201410094949 A CN 201410094949A CN 104049953 A CN104049953 A CN 104049953A
- Authority
- CN
- China
- Prior art keywords
- mask
- operation mask
- register
- source
- merge command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 39
- 238000003860 storage Methods 0.000 claims abstract description 28
- 230000004044 response Effects 0.000 claims abstract description 27
- 238000012856 packing Methods 0.000 claims description 225
- 239000013598 vector Substances 0.000 claims description 32
- 230000008878 coupling Effects 0.000 claims description 12
- 238000010168 coupling process Methods 0.000 claims description 12
- 238000005859 coupling reaction Methods 0.000 claims description 12
- 230000001052 transient effect Effects 0.000 claims description 12
- 238000007596 consolidation process Methods 0.000 abstract 3
- 238000010586 diagram Methods 0.000 description 43
- 241001269238 Data Species 0.000 description 18
- 230000008569 process Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 210000004027 cell Anatomy 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000007667 floating Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 7
- 210000004940 nucleus Anatomy 0.000 description 7
- 230000000712 assembly Effects 0.000 description 6
- 238000000429 assembly Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000011049 filling Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- YIWGJFPJRAEKMK-UHFFFAOYSA-N 1-(2H-benzotriazol-5-yl)-3-methyl-8-[2-[[3-(trifluoromethoxy)phenyl]methylamino]pyrimidine-5-carbonyl]-1,3,8-triazaspiro[4.5]decane-2,4-dione Chemical compound CN1C(=O)N(c2ccc3n[nH]nc3c2)C2(CCN(CC2)C(=O)c2cnc(NCc3cccc(OC(F)(F)F)c3)nc2)C1=O YIWGJFPJRAEKMK-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Abstract
用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令。指令处理装置的方面包括多个操作掩码寄存器。装置还包括用于接收操作掩码合并指令的解码单元。操作掩码合并指令用于指示多个操作掩码寄存器的源操作掩码寄存器,以及目的地存储位置。源操作掩码寄存器包括源操作掩码,该源操作掩码包括将被布置在多个未经掩码元素内的多个经掩码元素。与所述解码单元耦合的执行单元。响应于操作掩码合并指令,执行单元将经合并操作掩码存储在目的地存储位置中。经合并操作掩码包括合并在一起的来自源操作掩码的未经掩码元素。还公开了其它装置、方法、系统和指令。
Description
技术领域
本文中描述的实施例一般涉及处理器。具体地,本文中描述的实施例一般涉及用于响应于指令操纵操作掩码的处理器。
背景技术
许多处理器具有单指令、多数据(SIMD)架构。在SIMD架构中,与仅在一个数据元素或一对数据元素上操作标量指令不同,打包数据指令、向量指令、或SIMD指令可在多个数据元素、或多对数据元素上同时和/或并行地操作。例如,可将多个数据元素打包在一个寄存器或存储器位置内作为打包数据或向量数据。在打包数据中,寄存器或其他存储器位置的比特可被逻辑地划分成多个通常固定大小的数据元素的序列。数据元素中的每一个可表示个体数据片,该个体数据片连同通常具有相同大小的其他数据元素一起被存储。例如,256比特打包数据寄存器可具有四个64比特数据元素,八个32比特数据元素,十六个16比特数据元素,或三十二个8比特数据元素。打包数据元素中的每一个可表示单独的个体数据片(例如,像素的颜色、浮点值等),可与其他数据元素分开或独立于其他数据元素在该单独的个体数据片上进行操作。处理器可具并行执行硬件,该并行执行硬件有对打包或SIMD指令作出响应以同时或并行地执行多个操作。此类SIMD架构通常有助于显著改进处理速度。
附图说明
通过参考用来说明实施例的以下描述和附图,可最好地理解本发明。在附图中:
图1是用于处理操作掩码合并指令的一个或多个实施例的处理器的示例实施例的框图。
图2A是融合经掩码打包数据操作的示例实施例的框图。
图2B是对经掩码打包数据操作填零的示例实施例的框图。
图3是用于执行操作掩码合并指令的一个或多个实施例的指令处理装置的示例实施例的框图。
图4A是操作掩码合并操作的第一示例实施例的框图,该操作可响应于操作掩码合并指令的第一示例实施例和/或作为其结果而被执行。
图4B是操作掩码合并操作的第二示例实施例的框图,该操作可响应于操作掩码合并指令的第二示例实施例和/或作为其结果而被执行。
图5是处理操作掩码合并指令的实施例的方法的实施例的流程框图。
图6是操作掩码合并指令的合适格式的实施例的框图。
图7是合适打包数据寄存器的示例实施例的框图。
图8是例示打包数据操作掩码元素的数目依赖于打包数据宽度和打包数据元素宽度的表格。
图9是一组合适的打包数据操作掩码寄存器的示例实施例的框图。
图10是打包数据操作掩码寄存器的示例实施例的框图,其中操作掩码元素的数目依赖于打包数据宽度和打包数据元素宽度。
图11A示出示例性AVX指令格式,包括VEX前缀、实际操作码字段、MoD R/M字节、SIB字节、置换字段、以及IMM8。
图11B示出来自图11A的哪些字段构成完整操作码字段和基础操作字段。
图11C示出来自图11A的哪些字段构成寄存器索引字段。
图12是根据本发明的一个实施例的寄存器架构的框图。
图13A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。
图13B是示出根据本发明的实施例的要包括在处理器中的有序架构核示例性实施例以及示例性寄存器重命名、无序发布/执行架构核的框图。
图14A是根据本发明的实施例的连接到片上(on-die)互联网络且具有二级(L2)高速缓存的本地子集的单一处理器核的框图。
图14B是根据本发明的实施例的图14A中的处理器核的一部分的展开图。
图15是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图。
图16示出根据本发明一个实施例的系统的框图。
图17示出根据本发明的实施例的第一更具体的示例性系统的框图。
图18示出根据本发明的实施例的第二更具体的示例性系统的框图。
图19示出根据本发明的实施例的片上系统(SoC)的框图。
图20是根据本发明的实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施方式
本文中公开的是操作掩码合并指令,用于执行该指令的处理器,在处理或执行该指令时处理器执行的方法,以及包括一个或多个处理器以执行该指令的电子系统。在以下描述中,阐述多个特定细节(例如,特定指令操作、操作掩码、数据格式、处理器配置、微架构细节、操作序列等)。然而,实施例可在没有这些特定细节的情况下实践。在其他情况下,没有详细示出已知的电路、结构,以及技术,以便避免对本描述的理解变得模糊。
图1是用于处理一个或多个操作掩码合并指令104的处理器100的示例实施例的框图。在一些实施例中,处理器可以是通用处理器(例如,在台式机、膝上型计算机、服务器等计算机中所使用的类型)。替代地,处理器可以是专用处理器。合适的专用处理器的例子包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)、以及控制器,这里仅给出几个示例。该处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。
处理器具有指令集架构(ISA)101。ISA表示与编程相关的处理器架构的一部分,并且通常包括处理器的本机指令、架构寄存器、数据类型、寻址模式、存储器架构等。ISA与微架构不同,其一般表示被选择用于实现ISA的特定处理器设计技术。
ISA包括架构上可见寄存器(例如,架构寄存器文件)105。架构寄存器在本文中也可简称为寄存器。除非另外指定或显见地,短语架构寄存器、寄存器文件、和寄存器在本文中被用于指代这样的寄存器:该寄存器对于被微指令或汇编语言指令指定来标识操作数的软件和/或编程器和/或寄存器而言是可见。这些寄存器与给定微架构的非架构或非架构上可见的寄存器(例如,指令所用的临时寄存器、重排缓冲器、引退寄存器等)形成对比。寄存器一般表示片上处理器存储位置。所例示的架构寄存器包括打包数据寄存器106。打包数据寄存器中的每一个可操作用于存储打包或向量数据。所例示的架构寄存器还包括打包数据操作掩码寄存器107。打包数据操作掩码寄存器中的每一个可操作用于存储打包数据操作掩码。
ISA包括指令集102。指令集中的指令表示提供给处理器以供执行的宏指令、汇编语言指令、或机器级指令,其与微指令、微操作、或由于解码宏指令而得到的那些相反。指令集任选地包括一个或多个常规经掩码打包数据指令103。与先前提及的打包数据指令相类似的,经掩码打包数据指令103中的每一个可操作用于引起或导致处理器对一个或多个打包数据操作数的数据元素执行打包数据操作。打包数据操作数可被存储在打包数据寄存器107中。然而,经掩码打包数据指令中的每一个的不同之处在于,每一个经掩码打包数据指令可指示一个或多个打包数据操作掩码(例如,打包数据操作掩码寄存器107中),其掩码、断言、或有条件地控制打包数据处理。打包数据操作掩码可表示操作掩码、断言操作数、或条件操作控制操作数。
指令集还包括一个或多个操作掩码合并指令104。操作掩码合并指令可导致处理器生成并存储经合并的操作掩码。以下将进一步讨论合适指令/操作的特定示例。
处理器还包括执行逻辑108。执行逻辑可操作用于执行或处理一个或多个操作掩码合并指令104。在一些实施例中,执行逻辑可包括用于执行这些指令的特定逻辑(例如,与固件潜在组合的特定电路或硬件)。
在进一步讨论操作掩码合并指令104之前,首先讨论可如何使用打包数据操作掩码的几个示例会是有帮助的。图2A是带有融合的经掩码打包数据操作203A的第一示例的框图。经掩码打包数据操作可响应于经掩码打包数据指令(例如,图1的经掩码打包数据指令103)或者作为该指令的结果来执行。
经掩码打包数据指令可指示第一源打包数据209A和第二源打包数据210A。其它经掩码打包数据指令(例如,打包移位指令)可指示仅单个源打包数据,或两个以上源打包数据。在例示中,第一和第二源打包数据具有相同大小,包含相同宽度的数据元素,并且由此各自包含相同数目的数据元素,但是并不要求是如此。在例示中,第一和第二源打包数据中的每一个具有十六个数据元素。作为一个示例,第一和第二源打包数据可各自为512比特宽,并且可各自包括十六个32比特双字数据元素,但是并不要求是如此。两个源打包数据里相同相对位置中(例如,相同垂直位置中)的源数据元素表示相应数据元素对。数据元素中的每一个具有表示数据元素的块内示出的数值。例如,第一源打包数据(右侧)的最低位数据元素具有值3,第一源打包数据的次最低位数据元素具有值7,依此类推。
指令还指示源打包数据操作掩码211A。操作掩码表示用于断言或有条件地控制打包或向量操作的断言操作数或条件向量操作控制操作数。打包数据操作掩码包括掩码元素、断言元素或条件控制元素。打包数据操作掩码可操作用于在每数据元素粒度下掩码或有条件地控制打包数据处理。可以按与一个或多个相对应源数据元素的一一对应的形式包括掩码元素。例如,如例示中所示的,对于每个相应源数据元素对,可具有一个这样的掩码元素。操作掩码可允许与其他数据元素或相应数据元素对分开地或独立于其他数据元素或相应数据元素对来断言或有条件控制对每个数据元素或每个相应数据元素对的打包数据处理。每个掩码元素可操作用于掩码或不掩码一个或多个相应源打包数据元素上的打包数据操作。例如,在此示例中,每个掩码元素可掩码相应源打包数据元素对上的操作。
如例示中所示的,通常每个掩码元素可以是单个比特。单个比特可允许指定两个不同的可能性(例如,执行操作相对于不执行操作,存储操作的结果相对于不存储操作的结果等)中的任一个。替代地,如果需要在多于两个不同选项中进行选择,则可对每个掩码元素使用两个或更多比特。在例示中,打包数据操作掩码包括十六个比特(即,0011100001101011),并且十六个比特中的每一个具有与第一和第二源打包数据中十六个相应数据元素对中之一的有序对应。例如,(右侧)最低位掩码比特对应于最低位相应数据元素对,(左侧)最高位掩码比特对应于最高位相应数据元素对,依此类推。
所例示的经掩码打包数据操作是经掩码打包数据加法操作,用于根据来自源打包数据操作掩码的掩码、断言或条件控制,有条件地存储打包数据结果212A中来自第一和第二源打包数据的相应数据元素对的和。打包数据操作掩码211A的十六个掩码比特中的每一个被置位(即,具有二进制值1)或者被清除(即,具有二进制值0)。根据所例示的协定,每个掩码比特分别被置位(即,1)或清除(即,0),以允许或不允许将在相应源打包数据元素对上执行的打包数据操作(在此情形中为加法)的结果存储在打包数据结果212A的相应数据元素中。这些置位比特(即,1)表示未经掩码比特或未经掩码元素,而这些清除比特(即,0)表示经掩码比特或经掩码元素。例如,次最低位掩码比特被置位(即,1),且和(即,8=7+1)被存储在打包数据结果的相应次最低位数据元素中。在例示中,和通过下划线标出。
相反,当给定掩码比特被清除(即,0),则相应源数据元素对上的打包数据操作的结果不被存储在相应结果数据元素中。相反地,在例示中,来自第二源打包数据的相应数据元素的值被存储在相应结果数据元素中。例如,打包数据操作掩码中(左侧)最高位比特被清除(即,0),且来自第二源打包数据的最高位数据元素的数值(即,15)被存储在最高位结果数据元素中。此掩码版本被称为融合-掩码。应当理解,相反的协定也是可能的,其中比特被清除(即,0)以允许存储结果,或被置位(即,1)以不允许存储结果。
在一些实施例中,打包数据操作可任选地在第一和第二源打包数据的所有相应数据元素对上执行,而不用管相应掩码比特被置位还是清除,但是打包数据操作的结果可被存储或可不被存储在打包数据结果中,这依赖于掩码比特的值。替代地,在另一实施例中,如果相应掩码比特指定不存储操作的结果,则打包数据操作可被任选地省去(即,不被执行)。在一些实施例中,掩码掉(masked-off)的元素上的打包数据操作可任选地抑制或不引起异常(例如,异常标志)或违例。在一些实施例中,对于具有存储操作数的经掩码打包数据指令,可任选地针对掩码掉的数据元素抑制存储器错误。
图2B是例示带有填零(zeroing)的经掩码打包数据元素203B的第二代表性示例实施例的框图。带有填零的经掩码打包数据操作类似于前述带有融合的经掩码打包数据操作。为了避免使描述变得模糊,不再重复相似之处,相反,将主要提及不同之处。一个明显的不同之处在于,与在相应掩码比特被掩码掉时将源打包数据(例如,图2A中的第二源打包数据210A)的数据元素的值融合或存储到相应结果数据元素中不同,相应结果数据元素被清零。例如,双字结果打包数据元素的所有32比特可具有零值。这称为填零-掩码。替换地,也可任选地使用除零之外的其他预定值。
这些仅仅是经掩码打包数据操作的几个示例性示例。应当理解,处理器可支持宽泛的各种不同类型的经掩码打包数据操作。在其他实施例中,这些可包括仅具有一个源打包数据、两个以上的源打包数据、不同大小的源打包数据、含不同数目的数据元素的源打包数据、以水平或非垂直对准方式执行的操作等。
图3是具有执行单元308的指令处理装置300的实施例的框图,该执行单元308可操作用于执行操作掩码合并指令304的实施例。在一些实施例中,指令处理装置可以是处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置可以是图1的处理器,或者可被包括在该处理器中。替换地,指令处理装置可被包括在类似或不同的处理器中。此外,图1的处理器可包括类似或不同的指令处理装置。
装置300可接收操作掩码合并指令304。例如,可从指令获取单元、指令队列等接收指令。操作掩码合并指令可表示装置的ISA的机器代码指令、汇编语言指令、微指令、或控制信号。操作掩码合并指令304可显式指定(例如,通过一个或多个字段或一组比特)或以其他方式指示(例如,隐式指示)源操作掩码311,并且可指定或以其他方式指示目的地存储位置318。在一些实施例中,指令可显式指定源操作掩码和目的地存储位置,但是并不要求如此。例如,一个实施例的操作掩码合并指令可具有指令格式KConsol K1,K2,其中KConsol指示操作码,K1指定目的地打包数据操作掩码寄存器,K2指定源打包数据操作掩码寄存器。在一些实施例中,源操作掩码311可包括经掩码元素(例如,掩码比特被清除为零),以及未经掩码元素(例如,掩码比特被设置为1),并且经掩码元素中的至少一些可被散布在或以其他方式布置在未经掩码元素的至少一些中。这种情况的示例包括但不限于01010101、00101000、11100111、01100101、以及11000011,这里仅例举几个示例性示例。
在一些实施例中,源操作掩码311可被存储在可由指令指定或其他方式指示的源打包数据操作掩码寄存器316中。打包数据操作掩码寄存器316可以是一组打包数据操作掩码寄存器307中的一个。类似地,在一些实施例中,目的地存储位置317可以在打包数据操作掩码寄存器307中。在一些实施例中,目的地存储位置可以是与源打包数据操作掩码316相同或不同的寄存器。打包数据操作掩码寄存器可通过使用公知技术以不同方式实现于不同的微架构中,并且不限于任何已知的特定类型的电路。示例合适类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、以及其组合。
所例示的指令处理装置包括解码单元或解码器315。指令解码器可接收和解码微指令、机器代码指令、汇编语言指令、或其他相对高级指令,并且输出一个或多个微指令、微操作、伪代码进入点、或其他相对低级指令或者反映、表示、和/或从接收到的高级指令导出的控制信号。一个或多个低级指令或控制信号可通过一个或多个低级(例如,电路级或硬件级)操作来实现高级指令。解码器可通过使用各种不同的机构来实现,包括但不限于,伪代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、以及用于实现本领域已知的解码器的其他机构。
在其他实施例中,可使用指令仿真器、翻译器、变形器(morpher)、解析器、或其他指令转换逻辑。各种不同类型的指令转换逻辑在本领域中是已知的,并且可以软件、硬件、固件、或其组合的形式来实现。指令转换逻辑可接收指令并仿真、翻译、变形、解析或以其他方式将指令转换成一个或多个相应推导出的指令或控制信号。在其他实施例中,可使用指令转换逻辑和解码器两者。例如,装置可具有:指令转换逻辑,用于将接收到的机器代码指令转换成一个或多个中间指令;以及解码器,用于将一个或多个中间指令解码成可由装置的本地硬件(例如,执行单元)执行的一个或多个低级指令或控制信号。指令转换逻辑中的一些或全部可位于指令处理装置的外部,诸如例如分开的管芯上和/或存储器中。
再次参看图3,执行单元308与解码单元315、与源打包数据操作掩码311、以及与目的地存储位置317耦合。执行单元可接收表示和/或从操作掩码合并指令304推导的一个或多个经解码或以其他方式转换的指令或控制信号。如先前所提及的,源操作掩码311可包括经掩码元素,和未经掩码元素,并且经掩码元素中的至少一些可被散布在或以其他方式布置在未经掩码元素的至少一些中。在一些实施例中,执行单元可操作用于响应于操作掩码合并指令304和/或作为其结果,来将经合并的操作掩码318存储在目的地存储位置317中。在一些实施例中,经合并操作掩码可包括被收集在一起、集合在一起、使得彼此相邻、或以其他方式被合并在一起的来自源操作掩码的未经掩码元素。在一些实施例中,在经合并操作掩码中,可能没有经掩码元素被布置或散布在来自源操作掩码的所有未经掩码元素的经合并集合之间。即,可从未经掩码元素之间移走或以其他方式消去经掩码元素。
在一些实施例中,经掩码和未经掩码元素中的每一个可以是不同的单个掩码比特,诸如例如,每个经掩码元素可以是具有二进制零值(即,被清除为0)的单个比特,而每个未经掩码元素可以是具有二进制零1(即,被设置为1)的单个比特。在一些实施例中,执行单元可操作用于将来自经合并操作掩码或寄存器的最低有效部分中的源操作掩码的未经掩码元素合并在一起。替代地,在一些实施例中,执行单元可操作用于将来自经合并操作掩码或寄存器的最高有效部分中的源操作掩码的未经掩码元素合并在一起。在一些实施例中,操作掩码合并指令可操作用于指示是否将来自源操作掩码的未经掩码元素合并到经合并操作掩码或寄存器的最低有效或最高有效部分中。例如,在一些实施例中,操作掩码合并指令可包括一个或多个比特,该一个或多个比特可具有第一值(单比特二进制值零),用以指示将把未经掩码元素一起合并到有效部分中,或者可具有第二值(单比特二进制值一),用以指示将把未经掩码元素一起合并到最高有效部分中。例如,一个实施例的操作掩码合并指令可具有指令格式KConsol K1,K2,位次(order),其中KConsol指示操作码,K1指定目的地打包数据操作掩码寄存器,K2指定源打包数据操作掩码寄存器,并且位次包括用于指示合并是否指向操作掩码中的最低或最高有效位的一个或多个比特。
执行单元和/或指令处理装置可包括特定或具体逻辑(例如,与固件和/或软件潜在相组合的电路或其他硬件),该逻辑可操作用于执行操作掩码合并指令,并且响应于操作掩码合并指令(例如,响应于从操作掩码合并指令解码或以其他方式导出的一个或多个指令或控制信号)存储经合并操作掩码。作为示例,执行单元可包括逻辑单元,算术逻辑单元,用于执行逻辑操作的数字电路,包括操作掩码合并逻辑的执行或功能单元等。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置300。在其他实施例中,该装置可任选地包括在处理器中找到的其他公知组件。这些组件的示例包括但不限于,分支预测单元、指令获取单元、指令和数据的高速缓存、指令和数据的翻译后备缓冲器(translation lookaside buffer)、预取缓冲器、微指令队列、微指令定序器、寄存器重命名单元、指令调度单元、总线接口单元、第二或更高级高速缓存、引退单元、包括在处理器中的其他组件、以及上述的各种组合。实际上,处理器中的组件有大量不同的组合和配置,并且实施例不限于任何特定的组合或配置。实施例可被包括在具有多个核的处理器、逻辑处理器、或者执行引擎中,其中至少一个具有可操作用于执行本文中所公开的指令的一个实施例的执行逻辑。
图4A是可响应于操作掩码合并至最低有效位置指令的示例实施例和/或作为该指令的结果而执行的操作掩码合并至最低有效位置操作404A的示例实施例的框图。指令可显式指定或以其他方式指示(例如,隐式指示)源操作掩码411A和目的地(例如,目的地存储位置)。在所例示的实施例中,源操作掩码为8比特宽。在其他实施例中,源操作掩码可以更窄(例如,4比特)或更宽(例如,16比特,32比特,64比特或甚至更宽)。在一些方面,操作掩码的宽度可依赖于相应打包数据和数据元素宽度(参见,例如,图8和10的讨论)。在一些实施例中,源操作掩码可被包括在操作掩码寄存器中,并且可表示寄存器的比特子集(例如,最低位子集),该子集是活跃、有意义的和/或被用于断言。相比之下,寄存器中的另一比特子集(例如,最高位剩余部分)可以是非活跃、无意义的,和/或不被用于断言。在一些实施例中,源操作掩码可包括布置在多个未经掩码元素内的多个经掩码元素。例如,在例示中,源操作掩码从最低位比特0(右侧)到最高位比特7(左侧)包括比特值0,0,1,1,0,0,1,1。此数据仅是一个示例,并且不管源操作掩码中经掩码和未经掩码元素的布置如何,指令/操作都起作用。实际上,多个可能的布置中的任何其它布置也是可行的。根据所例示的协定,置位或“1”比特值表示未经掩码比特,而清除或“0”比特值表示经掩码比特。在替代实施例中,可替代地使用相反协定。此外,在其他实施例中,可任选地使用多比特掩码元素(例如,具有两比特,或相应打包数据元素的宽度)。
响应于指令和/或作为指令的结果,经合并操作掩码418A的实施例可被存储在目的地中。在一些实施例中,经合并操作掩码可包括来自所收集或以其他方式一起合并在目的地中的源操作掩码411A的未经掩码元素(例如,根据所例示协定的置位比特或“1”比特值)。例如,在此指令/操作的最低有效位置版本中,所有未经掩码元素(例如,根据所例示协定的置位比特或“1”比特值)——在此情形中一共四个,被存储在经合并操作掩码和/或目的地的最低位比特(在此情形中为最低位4比特)中。具体地,经合并操作掩码从最低位比特0(右侧)到最高位比特7(左侧)包括比特值1,1,1,1,0,0,0,0。可设想各种方式以实现这种情形,包括通过路由、拷贝、选择、或其某一组合,或者以其他方式移动或重排这些未经掩码元素。在一些实施例中,来自源操作掩码的经掩码元素(例如,根据所例示协定的清除比特或“0”比特值)可仅仅被丢弃或删除,并且可能无需传递到目的地。源操作掩码中比总未经掩码比特数目更高有效的比特可仅仅在目的地中被清零。即,任何被丢弃的经掩码元素(例如,清除比特或“0”比特值)可用替换经掩码元素(例如,清除比特或“0”比特值)来填充。替换地,在其他实施例中,可将来自源操作掩码的经掩码元素移至或重安排至比未经掩码元素更高位次的位置。
图4B是可响应于操作掩码合并至最高有效位置指令的示例实施例和/或作为该指令的结果而执行的操作掩码合并至最高有效位置操作404B的示例实施例的框图。许多特征和特性与先前针对图4A所描述的那些相类似或相同。为了避免使描述变得模糊,讨论将首先着重于不同或附加特征或特性。如同之前所述的,指令可显式指定或以其他方式指示(例如,隐式指示)源操作掩码411B和目的地(例如,目的地存储位置)。如之前所述的,响应于指令和/或作为指令的结果,经合并操作掩码418B的实施例可被存储在目的地中。与之前相类似的,在一些实施例中,经合并操作掩码可包括来自一起合并在目的地中的源操作掩码411B的未经掩码元素(例如,根据所例示协定的置位比特或1比特值)。然而,在此指令/操作的最高有效位置版本中,所有四个未经掩码元素(例如,根据所例示的协定的置位或“1”比特值)被存储在经合并操作掩码的最高位或最高有效4比特中。具体地,经合并操作掩码从最低位比特0(右侧)到最高位比特7(左侧)包括比特值0,0,0,0,1,1,1,1。
这些仅仅是合适操作掩码合并操作的几个示例性示例。合适的起始8比特操作掩码(左侧)以及结果所得的经合并操作掩码(右侧)——从最低位比特0(右侧)至最高位比特7(左侧)——的其他示例包括但不限于:
10000001→00000011(最低有效版本)
01010100→00000111(最低有效版本)
00101111→00011111(最低有效版本)
10000001→11000000(最高有效版本)
01010100→11100000(最高有效版本)
00101111→11111000(最高有效版本)
其他实施例涉及在16比特操作掩码上操作的操作掩码合并指令/操作。例如,合适的起始16比特操作掩码(左侧)以及结果所得的经合并16比特操作掩码(右侧)——从最低位比特0(右侧)至最高位比特7(左侧)——的其他示例包括但不限于:
1000000001100001→0000000000001111(最低有效版本)
1000000000000001→0000000000000011(最低有效版本)
0001010011001110→1111111000000000(最高有效版本)
0100111110111100→1111111111000000(最高有效版本)
其他实施例涉及在64比特操作掩码或具有其他比特数的那些上操作的操作掩码合并指令/操作。此外,如果需要的话,可任选地合并至中间(例如,中心或中央)位置来替代在最低或最高有效比特处开始。
图5是处理操作掩码合并指令的实施例的方法530的实施例的流程框图。在各种实施例中,该方法由通用、专用处理器、或者其他指令处理装置或数字逻辑设备执行。在一些实施例中,图5的操作和/或方法可由图1的处理器和/或图3的装置执行,和/或在图1的处理器和/或图3的装置内执行。本文中所描述的用于图1的处理器和图3的装置的组件、特征、以及具体的任选细节还任选地应用于图5的操作和/或方法。替换地,图5的操作和/或方法可由类似的或完全不同的处理器或装置执行,和/或在类似的或完全不同的处理器或装置内执行。此外,图1的处理器和/或图3的装置可执行与图5相同、相似、或者不同的操作和/或方法。
方法包括在框531处接收操作掩码合并指令。在各个方面,可在处理器、指令处理装置或其部分(例如,指令获取单元、解码器、指令转换器等)处接收指令。在各个方面,可从管芯外的源(例如,从主存储器、盘、或互连)或者从管芯上的源(例如,从指令获取单元或指令高速缓存)接收指令。操作掩码合并指令可指定或以其他方式指示源操作掩码或目的地存储位置。在一些实施例中,源操作掩码可包括布置在多个未经掩码元素(例如,设置为二进制一的掩码比特)内的多个经掩码元素(例如,清除为二进制零的掩码比特)。
在框532,可响应于操作掩码合并指令或作为该指令的结果,可将经合并操作掩码存储在目的地存储位置中。作为代表,执行单元、指令处理装置、或处理器可执行指令所指定的操作并存储结果。在一些实施例中,经合并操作掩码可包括合并在一起的来自源操作掩码的未经掩码元素。
在一些实施例中,在经合并操作掩码中,可能没有布置在未经掩码元素之间的经掩码元素。在一些实施例中,未经掩码元素可被合并在经合并操作掩码或寄存器的最低有效部分中。替代地,未经掩码元素可被合并在经合并操作掩码或寄存器的最高有效部分中。在一些实施例中,操作掩码合并指令可操作用于指示是否使用最低或更高有效部分(例如,通过一个或多个比特或字段)。
所例示的方法涉及架构上可见的操作(例如,从软件角度而言可见的那些)。在其他实施例中,方法可任选地包括一个或多个微架构操作。作为示例,指令可被获取、解码、无序地调度,源操作数可被访问,可使得执行单元或逻辑能执行或可执行微架构操作以实现指令,结果可被放回到程序命令并被提交等。可设想执行操作的不同微架构方式。
图6是操作掩码合并指令的合适指令格式634的实施例的框图。指令格式包括操作代码或操作码635。操作码可表示可操作用于标识要执行的指令和/或操作的多个比特或一个或多个字段。指令格式还包括用于指定源操作掩码的字段636,以及用于指定目的地存储位置的字段637。作为示例,这些指定器中的每一个可包括用于指定寄存器、存储器位置、或其他存储位置的比特或一个或多个字段。在一些实施例中,这些中的每一个可指示潜在相同或潜在不同的打包数据操作掩码寄存器。在一个特定实施例中,这些中每一个可包括用于选择八个打包数据操作掩码寄存器中的一个的3比特。在其他实施例中,单个字段可被用于指示也被用作目的地的单个源。在其他实施例中,可任选地使用隐式源和/或隐式目的地。在一些实施例中,格式也可任选地包括用于指示最低位或最高位选择的一个或多个比特或字段638。这可指示未经掩码元素是否被合并到掩码的最高或最低位部分。替代的实施例可包括指定器的子集,可添加附加字段,可重叠特定字段等。所例示的字段的次序/安排并非是必须的,相反,字段可被重排。字段无需包括连续比特序列,相反可包括非连续或分开的比特。
本文中公开的操作掩码合并指令是通用指令并且具有一般用途。例如,这些操作掩码操纵指令/操作可被单独使用或结合其他指令使用,以合并或以其他方式通过对于特定应用、算法或代码有用且需要的各种方式操纵操作掩码。
在一些实施例中,操作掩码合并指令/操作可被用于帮助向量化代码。例如,编译器可使用操作掩码合并指令/操作来帮助自动向量化代码,其中底层代码操作仅对操作掩码中的未经掩码值进行。在一些实施例中,操作掩码合并指令/操作可被用来助益条件循环递增代码的自动向量化(例如,针对循环的多次迭代加速或加快计数器值的有条件自动递增)。有条件循环递增操作倾向于对用于自动向量化的编译器造成挑战。作为示例,递增计数可被包括在第一寄存器中,诸如例如值1,2,3,4,5,6,7,8。经合并掩码可被包括在第二寄存器中,包括例如值0,0,0,0,1,1,1,1。经合并掩码中的每一个值可表示循环的不同迭代。四个置位掩码比特的存在性可被用来从第一寄存器高效地选择值4,该第一寄存器可被用于高效地递增循环中的计数器或变量,而无需经历每个递增。此类条件通常发生在高性能计算应用以及更一般的计算应用中。此类改进的向量化可帮助增加宽向量宽度的使用,提高性能,并且减小功耗。这还可帮助提高每线程性能。
替代地,指令/操作可用于除促进提升的向量化之外的其他用途。在一些实施例中,操作掩码合并指令/操作可被用于重排未经掩码元素以便使其更容易或更快地计数或以其他方式进行处理(例如,计数或标识未经掩码的元素的总数)。在其他实施例中,操作掩码合并指令/操作可被用于操纵供其他指令(例如,其他操作掩码操纵指令、经掩码打包数据指令等)使用或消费的操作掩码。然而,本发明的范围不限于调节这些特定使用。其他用途对于基于本公开的本领域技术人员而言是显见的。
图7是一组合适的打包数据寄存器706的示例实施例的框图。所示打包数据寄存器包括三十二个512比特宽打包数据或向量寄存器。这些三十二个512比特宽寄存器被标记为ZMM0至ZMM31。在所示实施例中,这些寄存器中的较低十六个(即,ZMM0-ZMM15)的较低阶256位交叠在或者覆盖在相应256比特宽打包数据或向量寄存器(标记为YMM0-YMM15上,但是这不是必需的。同样,在所示实施例中,YMM0-YMM15的较低阶128位交叠在或者覆盖在相应128位打包数据或向量寄存器(标记为XMM0-XMM1)上,但是这也不是必需的。512比特宽寄存器ZMM0至ZMM31可操作用于保持512位打包数据、256位打包数据、或者128位打包数据。256比特宽寄存器YMM0-YMM15可操作用于保持256位打包数据或者128位打包数据。128比特宽寄存器XMM0-XMM1可操作用于保持128位打包数据。每一寄存器可用于存储打包浮点数据或打包整数数据。支持不同数据元素大小,至少包括8位字节数据、16位字数据、32位双字或单精度浮点数据、以及64位四倍字或双精度浮点数据。打包数据寄存器的替换实施例可包括不同数量的寄存器、不同大小的寄存器,并且可以或者不可以将较大寄存器交叠在较小寄存器上。
合适的打包数据格式的一个示例是256比特打包字格式,其为256比特宽并且包括十六个16比特字数据元素。另一示例为256比特打包双字格式,其为256比特宽并且包括八个32比特双字(dword)数据元素。又一示例为256比特打包四倍字格式,其为256比特宽并且包括四个64比特四倍字(quadword)数据元素。其他打包数据格式也是合适的。例如,其他合适的256比特打包数据格式包括256比特打包8比特字节格式,256比特打包32比特单精度浮点格式,以及256比特打包64比特双精度浮点格式。此外,大于和/或小于256比特的打包数据格式也是合适的。例如,前述数据类型的512比特(或更大)打包数据格式和/或128比特(或更小)打包数据格式也是合适的。通常,对于相同数据类型而言,512比特打包数据格式可具有为256比特打包数据格式的两倍之多的数据元素,而对于相同数据类型而言,128比特数据格式可具有为256比特打包数据格式的一半那么多的数据元素。通常,打包数据元素的数量等于以比特计的打包数据的大小除以以比特计的打包数据元素的大小。
图8是例示打包数据操作掩码比特840的数目依赖于打包数据宽度和打包数据元素宽度的表格。示出128比特、256比特和512比特的打包数据宽度,但是其它宽度也是可能的。8比特字节、16比特字、32比特双字(dword)或单精度浮点、以及64比特四倍字(Qword)或双精度浮点的打包数据元素宽度被考虑,然而其它宽度也是可能的。
如图所示,当打包数据宽度是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比特用于掩码。
图9是一组合适的打包数据操作掩码寄存器907的示例实施例的框图。打包数据操作掩码寄存器中的每一个可用于存储打包数据操作掩码。在所例示的实施例中,该组包括标示为K0至k7的八个打包数据操作掩码寄存器。替代的实施例可包括比八个更少(例如,两个、四个、六个等)或比八个更多(例如,十六个、二十个、三十二个等)打包数据操作掩码寄存器。在所例示的实施例中,打包数据操作掩码寄存器中的每一个为64比特宽。在替代实施例中,打包数据操作掩码寄存器的宽度可以比64比特更宽(例如,80比特,128比特等)或比64比特更窄(例如,8比特、16比特、32比特等)。打包数据操作掩码寄存器可通过使用公知技术以不同方式实现,并且不限于任何已知的特定类型的电路。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及其组合。
在一些实施例中,打包数据操作掩码寄存器1008可以是分开的专用架构寄存器集合。作为示例,经掩码打包数据指令可使用三个比特(例如,3比特字段)来编码或指定八个打包数据操作掩码寄存器k0至k7中的任一个。在替代实施例中,在分别有更少或更多打包数据操作掩码寄存器时,可使用更少或更多比特。在一个特定实现中,仅打包数据操作掩码寄存器k1至k7(而非k0)可被寻址作为用于断言经掩码打包数据操作的断言操作数。寄存器k0可被用作常规源或目的地,但是可能不被编码为断言操作数(例如,如果k0被指定,则其具有全一或“无掩码”编码)。在其他实施例中,寄存器中的全部或仅一些可被编码为断言操作数。
图10是例示打包数据操作掩码寄存器1007的示例实施例并且示出可被用作打包数据操作掩码和/或用于进行掩码的比特的数目依赖于打包数据宽度和数据元素宽度的示图。所例示的打包数据操作掩码寄存器的示例实施例为64比特宽,但是并不要求如此。依赖于打包数据宽度和数据元素宽度的组合,可将全部64比特或仅64比特的子集用作用来进行掩码的打包数据操作掩码。一般而言,当单个每元素掩码控制比特被使用时,打包数据操作掩码寄存器中可用于进行掩码的比特的数目等于以比特计的打包数据宽度除以以比特计的打包数据元素宽度。
示出若干示例性示例。即,当打包数据宽度为512比特而打包数据元素宽度为64比特时,则仅寄存器的最低位8比特被用作打包数据操作掩码。当打包数据宽度为512比特而打包数据元素宽度为32比特时,则仅寄存器的最低位16比特被用作打包数据操作掩码。当打包数据宽度为512比特而打包数据元素宽度为16比特时,则仅寄存器的最低位32比特被用作打包数据操作掩码。当打包数据宽度为512比特而打包数据元素宽度为8比特时,则寄存器的全部64比特被用作打包数据操作掩码。根据所示例的实施例,经掩码打包数据指令可基于该指令相关联打包数据宽度和数据元素宽度仅访问和/或利用寄存器中用于打包数据操作掩码的最低位或最低有效位的数目。
在所例示的实施例中,寄存器的最低位子集或部分被用于进行掩码,但是并不要求如此。在替代实施例中,可任选地使用最高位子集或某一其他子集。此外,在所例示的实施例中,仅512比特打包数据宽度被考虑,然而,类似的原理适用于其他打包数据宽度,诸如例如256比特和128比特宽度。如先前提及的,并不要求使用64比特打包数据操作掩码寄存器。
指令集包括一种或多种指令格式。给定指令格式定义各个字段(比特的数量、比特的位置)以指定要执行的操作(操作码)以及对其要执行该操作的操作码等。通过指令模板(或子格式)的定义来进一步分解这些指令格式。例如,给定指令格式的指令模板可被定义为具有指令格式的字段(所包括的字段通常采用相同的顺序,但是至少一些字段具有不同的比特位置,因为包括更少的字段)的不同子集,和/或被定义为具有不同解释的给定字段。由此,ISA的每一指令使用给定指令格式(并且如果定义,则在该指令格式的指令模板的给定一个中)来表达,并且包括用于指定操作和操作码的字段。例如,示例性ADD指令具有专用操作码以及包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地以及源2)的指令格式,并且该ADD指令在指令流中的出现将具有选择专用操作数的操作数字段中的专用内容。已经发布和/或公布了被称为高级向量扩展(AVX)(AVX1和AVX2)且使用向量扩展(VEX)编码方案的SIMD扩展集(例如,参见1911年10月的64和IA-32架构软件开发手册,并且参见1911年6月的高级向量扩展编程参考)。
示例性指令格式
本文中所描述的指令的实施例可以不同的格式体现。另外,下面详细描述示例性系统、架构和流水线。指令的实施例可在这些系统、架构、以及流水线上执行,但是不限于详述的系统、架构、以及流水线。
VEX指令格式
VEX编码允许指令具有两个以上操作数,并且允许SIMD向量寄存器比118位长。VEX前缀的使用提供了三个操作数(或者更多)句法。例如,先前的两个操作数指令执行盖写源操作数的操作(诸如A=A+B)。VEX前缀的使用使操作数执行非破坏性操作,诸如A=B+C。
图11A示出示例性AVX指令格式,包括VEX前缀1102、实际操作码字段1130、MoD R/M字节1140、SIB字节1150、置换字段1162、以及IMM81172。图11B示出来自图11A的哪些字段构成完整操作码字段1174和基础操作字段1142。图11C示出来自图11A的哪些字段构成寄存器索引字段1144。
VEX前缀(字节0-2)以三字节形式进行编码。第一字节是格式字段1140(VEX字节0,位[7:0]),该格式字段1140包含明确的C4字节值(用于区分C4指令格式的唯一值)。第二-第三字节(VEX字节1-2)包括提供专用能力的大量位字段。具体地,REX字段1105(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)进行编码,由此Rrrr、Xxxx、以及Bbbb可通过增加VEX.R、VEX.X、以及VEX.B来形成。操作码映射字段1114(VEX字节1,位[4:0]-mmmmm)包括对隐含的领先操作码字节进行编码的内容。W字段1164(VEX字节2,位[7]-W)由记号VEX.W表示,并且依赖于该指令提供了不同的功能。VEX.vvvv1119(VEX字节2,位[6:3]-vvvv)的作用可包括如下:1)VEX.vvvv对以颠倒(1s补充)的形式指定的第一源寄存器操作数进行编码且对具有两个或两个以上源操作数的指令有效;2)VEX.vvvv针对特定向量位移对以1s补充的形式指定的目的地寄存器操作数进行编码;或者3)VEX.vvvv不对任何操作数进行编码,保留该字段,并且应当包含1111b。如果VEX.L1168大小的字段(VEX字节2,位[2]-L)=0,则它指示118位向量;如果VEX.L=1,则它指示256位向量。前缀编码字段1125(VEX字节2,位[1:0]-pp)提供了用于基础操作字段的附加位。
实际操作码字段1130(字节3)还被称为操作码字节。在该字段中规定操作码的一部分。
MOD R/M字段1140(字节4)包括MOD字段1142(位[7-6])、Reg字段1144(位[5-3])、以及R/M字段1146(位[2-0])。Reg字段1144的作用可包括如下:对目的地寄存器操作数或源寄存器操作数(rrr中的Rrrr)进行编码;或者被视为操作码扩展且不用于对任何指令操作数进行编码。R/M字段1146的作用可包括如下:对引用存储器地址的指令操作数进行编码;或者对目的地寄存器操作数或源寄存器操作数进行编码。
规模索引基址(SIB)-规模字段1150(字节5)的内容包括用于存储器地址生成的SS1152(位[7-6])。先前已经针对索引Xxxx和Bbbb参考了SIB.xxx1154(位[5-3])和SIB.bbb1156(位[2-0])的内容。
置换字段1162和立即字段(IMM8)1172包含地址数据。
示例性寄存器架构
图12是根据本发明的一个实施例的寄存器架构1200的框图。在所示的实施例中,存在32个511位宽的向量寄存器1210,这些寄存器被引用为zmm0至zmm31。较低15个zmm寄存器的较低阶256位覆盖在寄存器ymm0-15上。较低15个zmm寄存器的较低阶118位(ymm寄存器的较低阶118位)覆盖在寄存器xmm0-14上。
写掩码寄存器1214-在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一写掩码寄存器的大小是64位。在替换实施例中,写掩码寄存器1214的大小是15位。如先前所述的,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当正常可指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地停用该指令的写掩码。
通用寄存器1225-在所示的实施例中,存在与现有x86寻址模式一起使用以对存储器操作数寻址的十六个64位通用寄存器。通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、以及R8至R14来引用这些寄存器。
混叠MMX打包整数平坦寄存器文件1245的标量浮点栈寄存器文件(x87栈)1250-在所示的实施例中,x87栈是用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作的8元素栈;而MMX寄存器用于对64位打包整数数据执行操作、以及保留操作数用于在MMX和XMM寄存器之间执行的一些操作。
本发明的替换实施例可使用更宽或更窄的寄存器。另外,本发明的替换实施例可使用更多、更少、或不同的寄存器文件和寄存器。
示例性核架构、处理器、以及计算机架构
处理器核可以不同的方式、出于不同的目的、并且在不同的处理器中实现。举例而言,这些核的实现可包括:1)期望用于通用计算的通用有序核;2)期望用于通用计算的高性能通用无序核;3)期望主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括期望用于通用计算的一个或多个通用有序核和/或期望用于通用计算的一个或多个通用无序核的CPU;以及2)包括期望主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这些不同的处理器导致不同的计算机系统架构,这些处理器可包括:1)来自CPU的单独芯片上的协处理器;2)与CPU相同的封装中的单独管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在此情况下,这种协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑、或者专用核);以及4)在相同管芯上可包括所述CPU(有时被称为应用核或应用处理器)、上述协处理器、以及附加功能的芯片上的系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核方框图
图13A是示出根据本发明的实施例的示例性有序流水线以及示例性寄存器重命名、无序发布/执行流水线的框图。图13B是示出根据本发明的实施例的要包括在处理器中的有序架构核示例性实施例以及示例性寄存器重命名、无序发布/执行架构核的框图。图13A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发出/执行流水线和核。假设有序方面是无序方面的子集,将描述无序方面。
在图13A中,处理器流水线1300包括提取级1302、长度解码级1304、解码级1306、分配级1308、重命名级1310、调度(也称为分派或发出)级1311、寄存器读取/存储器读取级1313、执行级1315、回写/存储器撰写级1317、异常处理级1322、以及提交级1324。
图13B示出处理器核1390,该核1390包括耦合到执行引擎单元1350的前端单元1330,并且两者耦合到存储器单元1370。核1390可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替换核类型。作为另一选项,核1390可以是专用核,诸如举例而言,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1330包括耦合到指令高速缓存单元1334的分支预测单元1332,该指令高速缓存单元1334耦合到指令翻译后备缓冲器(TLB)1336,该指令TLB1336耦合到指令提取单元1338,该指令提取单元1338耦合到解码单元1340。解码单元1340(或解码器)可对指令进行解码,并且生成一个或多个微操作、微代码输入点、微指令、其他指令、或者从原始指令解码、或以其他方式反映原始指令、或从原始指令派生的其他控制信号作为输出。解码单元1340可使用各种不同的机构来实现。适当机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1390包括微代码ROM或为特定微指令(例如在解码单元1340或以其它方式在前端单元1330中)存储伪代码的其它介质。解码单元1340耦合至执行引擎单元1350中的重命名/分配器单元1352。
执行引擎单元1350包括耦合到引退单元1352的重命名/分配器单元1354、以及一组一个或多个调度器单元1356。调度器单元1356表示任何数量的不同调度器,包括:预约站、中央指令窗口等等。调度器单元1356耦合至物理寄存器文件单元1358。每个物理寄存器文件单元1358表示一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元1358包括向量寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器,向量掩码寄存器以及通用寄存器。物理寄存器文件单元1358与引退单元1354重叠,以示出其中可实现寄存器重命名和无序执行(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器、以及引退寄存器文件;使用寄存器映射和寄存器池等)的各种方式。引退单元1354和物理寄存器文件单元1358耦合到执行集群1360。执行集群1360包括一组一个或多个执行单元1362以及一组一个或多个存储器存取单元1364。执行单元1362可执行各种操作(例如,位移、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。尽管一些实施例可包括专属于专用功能或功能集的大量执行单元,但是其他实施例可包括全部都执行所有功能的仅一个执行单元或者多个执行单元。调度器单元1356、物理寄存器文件单元1358、以及执行集群1360被示为可能是多个单元,因为特定实施例为特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群的存储器存取流水线-并且在单独的寄存器存取流水线的情况下,实现其中仅该流水线的执行集群具有存储器存取单元1364的特定实施例)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,而其他流水线可以是有序的。
一组存储器存取单元1364耦合到存储器单元1370,该存储器单元1370包括耦合到数据高速缓存单元1374的数据TLB单元1372,该数据高速缓存单元1374耦合到二级(L2)高速缓存单元1376。在一个示例性实施例中,存储器访问单元1364可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1370中的数据TLB单元1372。指令高速缓存单元1334还耦合到存储器单元1370中的二级(L2)高速缓存单元1376。L2高速缓存单元1376耦合到一种或多种其他级别的高速缓存,并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发布/执行核架构可如下地实现流水线1300:1)指令获取1338执行获取和长度解码级1302和1304;2)解码单元1340执行解码级1306;3)重命名/分配器单元1352执行分配级1308和重命名级1310;4)调度器单元1356执行调度级1311;5)物理寄存器文件单元1358和存储器单元1370执行寄存器读取/存储器读取级1313;执行集群1360执行执行级1315;6)存储器单元1370和物理寄存器文件单元1358执行回写/存储器写入级1317;7)各个单元可在异常处理级1322中涉及;以及8)引退单元1354和物理寄存器文件单元1358执行提交级1324。
核1390可支持一个或多个指令集(例如,x86指令集(具有已经使用较新版本增加的一些扩展)、加利福尼亚州森尼维耳市MIPS Technologies的MIPS指令集、加利福尼亚州森尼维耳市的ARM holding的ARM指令集(具有诸如NEON之类的任选的附加扩展)),包括本文中所描述的指令。在一个实施例中,核1390包括逻辑以支持打包数据指令集扩展(例如,AVX1、AVX2),由此允许许多多介质应用所使用的操作使用打包数据来执行。
应当理解,该核可支持多线程(执行两组或两组以上的平行操作或线程),并且可以包括分时多线程、同时多线程(其中单一物理核为每一线程提供物理核是同时多线程的逻辑核)、或者其组合(例如,分时获取和解码以及此后诸如在Hyperthreading技术中的同时多线程)的各种方式这样做。
尽管在无序执行的上下文中描述了寄存器重命名,但是应当理解寄存器重命名可在有序架构中使用。尽管处理器的所示实施例还包括单独的指令和数据高速缓存单元1334/1374以及共享的L2高速缓存单元1376,但是替换实施例可具有用于指令和数据两者的单一内部高速缓存,诸如举例而言,第一级(L1)内部高速缓存、或多级内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和外部高速缓存的组合,该外部高速缓存在核和/或处理器外部。替换地,所有高速缓存可在核和/或处理器外部。
专用示例性有序核架构
图14A-B示出更具体的示例性有序核架构的框图,该核可以是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口、以及其他存储器I/O逻辑进行通信。
图14A是根据本发明的实施例的连接到片上互联网络1402且具有第二级(L2)高速缓存1404的本地子集的单一处理器核的方框图。在一个实施例中,指令解码器1400支持具有打包数据指令集扩展的x86指令集。L1高速缓存1406允许对高速缓存存储器进行低延迟存取标量和向量单元。尽管在一个实施例中(为了简化设计)标量单元1408和向量单元1410使用分离的寄存器集合(分别是标量寄存器1411和向量寄存器1413)并且在两者之间传输的数据被写入存储器且随后读取回到第一级(L1)高速缓存1406或从L1高速缓存1406中读取,但是本发明的替换实施例可使用不同的方法(例如,使用单一寄存器集合或者包括允许数据在不写入和读回的情况下在两个寄存器文件之间传输的通信路径)。
L2高速缓存1404的本地子集是分成分离的本地子集(每一处理器核一个本地子集)的全局L2高速缓存的一部分。每一处理器核具有到L2高速缓存1404的其自己的本地子集的直接存取路径。由处理器核读取的数据被存储在其L2高速缓存子集1404中,并且可与存取其自己的本地L2高速缓存子集的其他处理器核平行地快速存取。由处理器核写入的数据被存储在其自己的L2高速缓存子集1404中,并且如果必要则从其他子集清除(flush)。环形网络确保共享数据的一致性。环形网络是双向的以允许在芯片内诸如处理器核、L2高速缓存、以及其他逻辑块之类的代理相互通信。每一环形数据路径是每一方向1011位宽。
图14B是根据本发明的实施例的图14A中的处理器核的一部分的展开图。图14B包括L1高速缓存1404的L1数据高速缓存1406A部分、以及关于向量单元1410和向量寄存器1413的更多细节。具体地,向量单元1410是15宽向量处理单元(VPU)(参见15宽ALU1428),该向量处理单元执行整数、单精度浮动和双精度浮动的指令中的一个或多个。VPU支持使用拌和单元1419拌和寄存器输入、使用数字转换单元1422A-B数字转换、以及使用存储器输入上的复制单元1424复制。写掩码寄存器1426允许断定所得向量撰写。
具有集成存储器控制器和图形的处理器
图15是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理器1500的方框图。图15的实线框示出了处理器1500,处理器1500具有单个核心1502A、系统代理1510、一组一个或多个总线控制器单元1515而可选附加的虚线框示出了替换式的处理器1500,具有多个核心1502A-N、系统代理单元1510中的一组一个或多个集成存储器控制器单元1513以及专用逻辑1508。
由此,处理器1500的不同实现可包括:1)具有作为集成图形和/或科学(吞吐量)逻辑(该逻辑可包括一个或多个核)的专用逻辑1508、以及作为一个或多个通用核(例如,通用有序核、通用无序核、两者的组合)的核1502A-N的CPU;2)具有作为期望主要用于图形和/或科学(吞吐量)的大量专用核的核1502A-N的协处理器;以及3)具有作为大量通用有序核的核1502A-N的协处理器。由此,处理器1500可以是通用处理器、协处理器、或专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量许多集成核(MIC)协处理器(包括30个或30个以上的核)、嵌入式处理器等。处理器可在一个或多个芯片上实现。处理器1500可以是一个或多个基板的一部分,和/或在一个或多个基板上使用大量处理技术(诸如举例而言,BiCMOS、CMOS、或NMOS)中的任一种技术实现。
存储器等级(hierarchy)包括核内的一级或多级高速缓存、一组或者一个或多个共享高速缓存单元1506、以及耦合到一组集成存储器控制器单元1513的外部存储器(未示出)。一组共享高速缓存单元1506可包括一个或多个中级高速缓存(诸如二级(L2)、三级(L3)、四级(L4))或其他级高速缓存、最后一级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环形的互连单元1511使集成图形逻辑1508、一组共享高速缓存单元1506、以及系统代理单元1510/集成存储器控制器单元1513互连,但是替换实施例可使用任意数量的公知技术来互连这些单元。在一个实施例中,在一个或多个高速缓存单元1506与核1502A-N之间维持相干性。
在一些实施例中,核1502A-N中的一个或多个核能够多线程。系统代理1510包括协调和操作核1502A-N的那些组件。系统代理单元1510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或者包括调整核1502A-N的功率状态必需的的逻辑和组件、以及集成图形逻辑1508。显示单元用于驱动一个或多个外部连接的显示器。
核1502A-N在架构指令集方面可以是同质的或者异质的,即核1502A-N中的两个或两个以上核能够执行相同的指令集,而其他核可以能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图16-19是示例性计算机架构的框图。在本领域中已知的用于膝上型个人计算机、台式个人计算机、手持个人计算机(PC)、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够结合本文中公开的处理器和/或其他执行逻辑的各种各样系统或电子设备通常是合适的。
现在参考图16,所示出的是根据本发明一实施例的系统1600的框图。系统1600可包括一个或多个处理器1610、1614,这些处理器耦合到控制器中枢1619。在一个实施例中,控制器中枢1619包括图形存储器控制器中枢(GMCH)1690和输入/输出中枢(IOH)1650(它们可在分离的芯片上);GMCH1690包括耦合到存储器1640和协处理器1645的存储器和图形控制器;IOH1650使输入/输出(I/O)设备1660耦合到GMCH1690。替换地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1640和协处理器1645直接耦合到处理器1610、以及单一芯片中具有IOH1650的控制器中枢1619。
附加的处理器1614的任选性在图16中通过虚线来表示。每一处理器1610、1614可包括本文中所描述的处理核中的一个或多个,并且可以是一些版本的处理器1500。
存储器1640可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或者两者的组合。对于至少一个实施例,控制器中枢1619经由诸如前侧总线(FSB)之类的多点总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1695与处理器1610、1614进行通信。
在一个实施例中,协处理器1645是专用处理器,诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器中枢1619可包括集成图形加速器。
按照包括体系结构、微体系结构、热、功耗特征等等优点的度量谱,物理资源1610、1614之间存在各种差别。
在一个实施例中,处理器1610执行控制具有通用类型的数据处理操作的指令。协处理器指令可被嵌入这些指令内。处理器1610识别如具有应当由附连的协处理器1645执行的类型的这些协处理器指令。因此,处理器1610在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1645。协处理器1645接受和执行接收到的协处理器指令。
现在参照图17,所示出的是根据本发明一个实施例的更具体的第一示例性系统1700的框图。如图17所示,多处理器系统1700是点对点互连系统,且包括经由点对点互连1750耦合的第一处理器1770和第二处理器1780。处理器1770和1780中的每一个可以是某个版本的处理器1500。在本发明的一个实施例中,处理器1770和1780分别是处理器1610和1614,而协处理器1738是协处理器1645。在另一实施例中,处理器1770和1780分别是处理器1610和协处理器1645。
处理器1770和1780分别被示为包括集成存储器控制器(IMC)单元1772和1782。处理器1770还包括点对点(P-P)接口1776和1778作为其总线控制器单元的一部分;类似地,第二处理器1780包括P-P接口1786和1788。处理器1770、1780可使用P-P接口电路1778、1788经由点对点(P-P)接口1750交换信息。如图17所示,IMC1772和1782将处理器耦合到相应的存储器,即存储器1732和存储器1734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1770、1780可各自使用点对点接口电路1776、1794、1786、1798经由各个P-P接口1752、1754与芯片组1790交换信息。芯片组1790可任选地经由高性能接口1739与协处理器1738交换信息。在一个实施例中,协处理器1738是专用处理器,诸如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可被包括在任一处理器中或者在两个处理器外部,但是经由P-P互连与处理器连接,由此如果处理器置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1790可经由接口1796耦合到第一总线1715。在一个实施例中,第一总线1715可以是外围组件互连(PCI)总线、或者诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图17所示,各种I/O设备1713可连同总线桥1717一起耦合到第一总线1715,总线桥1717将第一总线1715耦合到第二总线1719。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的加速器(诸如举例而言,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或者任何其他处理器之类的一个或多个附加处理器1714耦合到第一总线1715。在一个实施例中,第二总线1719可以是低引脚数(LPC)总线。在一个实施例中,多个设备可以耦合到第二总线1719,包括例如键盘和/或鼠标1722、通信设备1727以及可以包括指令/代码和数据1730的存储单元1728(诸如盘驱动器或其它海量存储设备)。此外,音频I/O1724可耦合到第二总线1719。注意,其他架构是可能的。例如,代替图17的点对点架构,系统可实现多点总线或者其他此类架构。
现在参考图18,示出了根据本发明的一个实施例的第二更具体的示例性系统1800的框图。图17和18中的类似元件使用类似附图标记,且在图18中省略了图17的某些方面以避免混淆图18的其它方面。
图18示出处理器1770、1780可分别包括集成存储器和I/O控制逻辑(“CL”)1772和1782。因此,CL1772和1782包括集成存储器控制器单元且包括I/O控制逻辑。图18示出:不仅存储器1732、1734耦合至CL1772、1782,I/O设备1813也耦合至控制逻辑1772、1782。传统I/O设备1814耦合到芯片组1790。
现在参照图19,所示出的是根据本发明一个实施例的SoC1900的框图。图15中的类似元件具有相似的附图标记。同样,虚线框是更高级SoC上的任选的特征。在图19中,互连单元1902耦合至:应用处理器1910,包括一组一个或多个核192A-N以及共享高速缓存单元1506;系统代理单元1510;总线控制器单元1515;集成存储器控制器单元1513;一组一个或多个协处理器1919,可以包括集成图形逻辑、图像处理器、音频处理器、视频处理器;静态随机存取存储器(SRAM)单元1930;直接存储器存取(DMA)单元1932;以及显示单元1940,用于耦合至一个或多个外部显示器。在一个实施例中,协处理器1919包括专用处理器,诸如举例而言,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文中所公开的机构的实施例可以硬件、软件、固件、或者这些实现方法的组合来实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,这些可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图17所示的代码1730之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器(诸如举例而言,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器)的任何系统。
程序代码可以高级过程或面向对象编程语言实现,以与处理系统进行通信。如果期望,程序代码则还可以汇编或机器语言实现。实际上,本文中所描述的机构在范围上不限于任何特定编程语言。在任何情况下,该语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可通过存储在机器可读介质上的代表性指令来实现,该机器可读介质表示处理器内的各种逻辑,这些指令在由机器读取时使得该机器制备逻辑以执行本文中所描述的技术。称为“IP核”的这些表示可被存储在有形的机器可读介质上且供应给各种客户或制造设施以加载到实际上制作逻辑或处理器的制备机器。
这种机器可读存储介质可包括但不限于,由机器或设备制造或形成的制品的非瞬态有形排列,这些非瞬态有形排列包括:诸如硬盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)存储器、以及磁电-光盘的任何其他类型的盘之类的存储介质;诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)之类的半导体器件;磁或光卡;或者适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括包含指令或者包含设计数据的诸如硬件描述语言(HDL)之类的非瞬态有形机器可读介质,该非瞬态有形机器可读介质定义本文中所描述的结构、电路、装置、处理器和/或系统特征。这些实施例还可被称为程序产品。
仿真(包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目的地指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或者以其他方式转换成由核处理的一个或多个其他指令。指令转换器可以软件、硬件、固件、或者其组合实现。指令转换器可在处理器上、在处理器以外、或者部分在处理器上且部分在处理器以外。
图20是对比根据本发明实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是替换的指令转换器可以软件、固件、硬件、或者其各种组合实现。图20以高级语言2002示出了程序,该程序可使用x86编译器2004来编译以生成x86二进制代码2006,该二进制代码可本地地由具有至少一个x86指令集核的处理器2015来执行。具有至少一个x86指令集核的处理器2015表示可通过兼容地执行或者以其他方式处理(1)因特尔x86指令集核的指令集的实质部分或者(2)以在具有至少一个x86指令集核的因特尔处理器上运行为目标的对象代码版本的应用或其他软件来执行与具有至少一个x86指令集核的因特尔处理器基本相同的功能以实现与具有至少一个x86指令集核的因特尔处理器基本相同的结果的任何处理器。x86编译器2004表示可操作用于生成在具有或者没有附加链接处理的情况下可在具有至少一个x86指令集核的处理器2015上执行的x86二进制代码2006(例如,对象代码)的编译器。类似地,图20以高级语言2002示出了程序,该程序可使用替换指令集编译器2008来编译以生成替换指令集二级制代码2010,替换指令集二级制代码2010可由不具有至少一个x86指令集核心的处理器2013(诸如,具有可执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的核的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的核的处理器)来本地地执行。指令转换器2011用于将x86二进制代码2006转换成可由不具有x86指令集核2013的处理器本地地执行的代码。该经转换的代码不可能与替换指令集二进制代码2010相同,因为难以制作能够这样做的指令转换器;然而,经转换的代码将完成一般操作并且由来自替换指令集的指令构成。由此,指令转换器2011表示通过仿真、模拟、或者任何其他处理允许不具有x86指令集处理器或核的处理器或者其他电子设备执行x86二进制代码2006的软件、固件、硬件、或者其组合。
在一些实施例中,可任选地支持操作掩码宽度8比特、16比特、32比特和16比特,或者其某一组合。在一些实施例中,针对每一个所支持的不同的操作掩码宽度,指令集可包括不同操作掩码合并指令。操作掩码合并指令的操作码可隐式地指示操作掩码的宽度。替换地,操作掩码合并指令可被用于多个所支持的不同的操作掩码宽度。例如,操作掩码合并指令可具有用于指示要使用的操作掩码宽度的一个或多个比特或字段。
在一些实施例中,操作掩码合并指令的操作码可指示操作掩码合并操作将被执行,而无需显式地指定特定数据重排操作(例如,通过置换控制数据)以及无需特定的单个或有限的一组数据重排操作。响应于指令的操作码,经合并操作掩码可被存储,而不用管或不用考虑源操作掩码中的经掩码和未经掩码元素的任何特定布置。在一些实施例中,指令不显式地指定将如何移动、重排、或置换经掩码或未经掩码元素以生成经合并操作掩码。在一些实施例中,操作掩码合并指令将依据经掩码或未经掩码元素来不同地移动元素,而无需显式指定将如何移动或重排元素以生成操作掩码。
针对图4A、4B、6和7-10中的任一图所描述的组件、特征、以及细节还可任选地用于图1、3、和5中的任一图中。此外,本文中针对任一装置所描述的组件、特征、以及细节还可任选地用于本文中所描述的在实施例中可由这种装置和/或使用这种装置执行的任一操作和方法中。针对图2A/2B所描述的操作掩码的任选特征和细节还可任选地用于图1、3、4A、4B和5中的任一个中的操作掩码。
示例性实施例
以下示例属于进一步的实施例。这些示例中的细节可用于一个或多个实施例中的任何地方。
示例1是指令处理装置。该指令处理装置包括多个操作掩码寄存器。指令处理装置还包括用于接收操作掩码合并指令的解码单元。操作掩码合并指令指示多个操作掩码寄存器的源操作掩码寄存器,以及目的地存储位置。源操作掩码寄存器包括源操作掩码,该源操作掩码包括将被布置在多个未经掩码元素内的多个经掩码元素。指令处理装置还包括与解码单元耦合的执行单元。响应于操作掩码合并指令,执行单元将经合并操作掩码存储在目的地存储位置中。经合并操作掩码包括合并在一起的来自源操作掩码的未经掩码元素。
示例2包括示例1的主题并且任选地,其中响应于操作掩码合并指令,执行单元将未经掩码元素合并在一起,以使得经掩码元素不被布置在经合并的未经掩码元素内。
示例3包括示例1的主题并且任选地,其中响应于操作掩码合并指令,执行单元将来自源操作掩码的未经掩码元素一起合并到经合并操作掩码的最低有效部分中。
示例4包括示例1的主题并且任选地,其中响应于操作掩码合并指令,执行单元将来自源操作掩码的未经掩码元素一起合并到经合并操作掩码的最高有效部分中。
示例5包括示例1的主题并且任选地,其中解码单元接收操作掩码合并指令。操作掩码合并指令包括一个或多个比特,所述一个或多个比特可操作成具有第一值,所述第一值用于指示来自源操作掩码的未经掩码元素将被一起合并到经合并操作掩码的最低有效部分中。操作掩码合并指令具有第二值,所述第二值用于指示来自源操作掩码的未经掩码元素将被一起合并到经合并操作掩码的最高有效部分中。
示例6包括示例1的主题并且任选地,其中源操作掩码寄存器具有源操作掩码,其中经掩码和未经掩码元素中的每一个具有不同的单个比特。
示例7包括示例6的主题并且任选地,其中每个经掩码元素具有二进制值零,并且每个未经掩码元素具有二进制值一。
示例8包括示例1的主题并且任选地,其中多个操作掩码寄存器包括一组八个操作掩码寄存器,其中八个操作掩码寄存器中的每一个存储具有达至少64比特的操作掩码,并且其中解码单元接收操作掩码合并指令,该操作掩码合并指令具有用于将源操作掩码寄存器指定为八个操作掩码寄存器中的一个的3比特字段。
示例9包括示例1的主题并且任选地,其中解码单元接收操作掩码合并指令,该操作掩码合并指令显式地指定源操作掩码寄存器,以及显式地指定目的地操作掩码寄存器作为目的地存储位置。
示例10包括示例1-9中的任一个的主题并且任选地,其中解码单元接收操作掩码合并指令,该操作掩码合并指令具有操作码,该操作码指示经合并操作掩码将被存储,而不用管源操作掩码中经掩码和未经掩码元素的任何特定布置。
示例11包括示例1-9中的任一个的主题,其中操作掩码寄存器存储将被用来断言打包数据的操作的操作掩码。
示例12是处理器内的方法。方法包括接收操作掩码合并指令。操作掩码合并指令指示源操作掩码和目的地存储位置。源操作掩码包括布置在多个未掩码元素内的多个经掩码元素。方法还包括响应于操作掩码合并指令将经合并操作掩码存储在目的地存储位置中。经合并操作掩码包括合并在一起的来自源操作掩码的未经掩码元素。
示例13包括示例12的主题,其中来自源操作掩码的未经掩码元素被一起合并到经合并操作掩码的最低有效部分中。
示例14包括示例12的主题,其中来自源操作掩码的未经掩码元素被一起合并到经合并操作掩码的最高有效部分中。
示例15包括示例12的主题,其中操作掩码合并指令包括一个或多个比特,所述一个或多个比特具有第一值,所述第一值用于指示来自源操作掩码的未经掩码元素将被一起合并到经合并操作掩码的最低有效部分中。一个或多个比特具有第二值,所述第二值用于指示来自源操作掩码的未经掩码元素将被一起合并到经合并操作掩码的最高有效部分中。
示例16包括示例12的主题,其中接收包括接收指示源操作掩码的指令,其中经掩码和未经掩码元素中的每一个是不同的单个比特,并且其中每个经掩码元素具有二进制值零且每个未经掩码元素具有二进制值一。
示例17包括示例12的主题,其中接收包括接收具有操作码的操作掩码合并指令,该操作码指示经合并操作掩码将被存储,而不用管源操作掩码中的经掩码和未经掩码元素的任何特定布置。
示例18包括示例12的主题,其中经掩码和未经掩码元素中的每一个对应于不同打包数据元素且被用来断言相应打包数据元素上的操作。
示例19包括示例12的主题,还包括使用经合并操作掩码来向量化代码的编译器。
示例20是一种处理指令的系统。该系统包括互连。系统还包括与互连耦合的处理器,以及与互连耦合的动态随机存取存储器(DRAM)。DRAM存储操作掩码合并指令。操作掩码合并指令指示源操作掩码和目的地存储位置。源操作掩码包括多个经掩码元素,该多个经掩码元素将被布置在多个未经掩码元素内。操作掩码合并指令若由处理器执行则可操作用于导致处理器执行包括将经合并操作掩码存储在目的地存储位置中的操作。经合并操作掩码包括合并在一起的来自源操作掩码的未经掩码元素。
示例21包括示例20的主题,其中源操作掩码被用来断言打包数据上的操作。
示例22包括示例20-21中的任一个的主题,其中操作掩码合并指令具有操作码,该操作码指示经合并操作掩码将针对源操作掩码的任何值而被存储。
示例23是制品。该制品包括存储操作掩码合并指令的非瞬态机器可读存储介质。操作掩码合并指令指示源操作掩码和目的地。源操作掩码包括布置在多个未掩码元素内的多个经掩码元素。操作掩码合并指令若由机器执行则可操作用于导致机器执行包括响应于操作掩码合并指令将经合并操作掩码存储在目的地中的操作。经合并操作掩码包括合并在一起的来自源操作掩码的未经掩码元素,且没有经掩码元素被布置在它们之间。
示例24包括示例23的主题,其中接收包括接收具有操作码的操作掩码合并指令,该操作码指示经合并操作掩码将针对源操作掩码中的经掩码和未经掩码元素的许多不同布置而被存储。
示例25包括示例23-24中的任一个的主题,其中操作掩码合并指令若由机器执行则可操作用于导致机器将来自源操作掩码的未经掩码元素一起合并到经合并操作掩码的最低有效部分中,并且其中源操作掩码将被用于预测。
示例26包括存储指令的机器可读存储介质,该指令如果由机器执行则使机器执行示例12-19中的任一个的方法。
示例27包括一种执行示例12-19中的任一个的方法的装置。
示例28包括一种设备,该设备包括用于执行示例12-19中的任一个的方法的装置。
示例29包括一种执行基本如本文中所描述的方法的装置。
示例30包括一种设备,该设备包括用于执行基本如本文中所描述的方法的装置。
示例31包括一种执行基本如本文中所描述的指令的装置。
示例32包括一种包括用于执行基本如本文中所描述的指令的操作的装置的设备。
在该描述和权利要求中,使用了术语“耦合”和/或“连接”、及其派生词。应当理解,这些术语不旨在作为彼此的同义词。相反,在特定实施例中,可使用“连接的”来指示两个或更多元件彼此直接物理或电气接触。“耦合”可意味着两个或两个以上元件直接物理或电接触。然而,“耦合”还可意味着两个或两个以上元件彼此不直接接触,但是仍然彼此协操作或交互。例如,执行单元可通过一个或多个中间组件与寄存器或解码器耦合。在附图中,箭头用于示出连接和耦合。
在该描述和权利要求中,可使用了术语“逻辑”如本文中所使用的,逻辑可包括模块,诸如硬件、固件、软件、或者其各种组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、包括指令的存储器设备等。在一些实施例中,硬件逻辑可包括可能与其他电路组件一起的晶体管和/或门。
在以上描述中,为了提供对实施例的透彻理解阐述了具体的细节。然而,可在没有这些具体细节中的部分的情况下,实践其他实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。在其他实例中,以框图的形式或者在没有细节的情况下,示出了公知电路、结构、设备、以及操作,以避免混淆对该描述的理解。在已示出和描述了多个组件的情况下,在一些情形中,这些多个组件可被结合成一个组件。在示出和描述了单一组件的一些情况下,该单一组件可被分成两个或两个以上组件。
描述了各种操作和方法。在流程图中以相对基础的形式描述了这些方法中的一些方法,但是操作可被任选地增加到这些方法和/或从这些方法移除。另外,尽管流程图示出根据示例实施例的操作的特定次序,但是特定次序是示例性的。替换实施例可任选地以不同的次序执行操作,组合特定操作,重叠特定操作等。
特定操作可由硬件组件执行,或者可以机器可执行或电路可执行指令体现,这些操作可用于使得和/或者导致机器、电路、或硬件组件(例如,处理器、处理器的一部分、电路等)通过执行操作的指令来编程。这些操作还可任选地由硬件和软件的组合执行。处理器、机器、电路、或硬件可包括可操作用于执行和/或处理指令且响应于该指令存储结果的专用或特定电路或者其他逻辑(例如,可能与固件和/或软件组合的硬件)。
一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以可由机器读取的形式提供(例如,存储)信息的机构。机器可读介质可提供指令或指令序列或者在其上存储了指令或者指令序列,该指令如果由机器执行和/或在由机器执行时可操作用于使机器执行和/或导致机器执行本文中所公开的一种或多种操作、方法、或技术。机器可读介质可提供(例如,存储)本文中所公开的指令的一个或多个实施例。
在一些实施例中,机器可读介质可包括有形和/或非瞬态机器可读存储介质。例如,有形和/或非瞬态机器可读存储介质可包括软盘、光学存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁电-光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除和可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储设备、非易失性存储器、非易失性数据存储设备、非瞬态存储器、非瞬态数据存储设备等。非瞬态机器可读存储介质不由瞬态传播信号组成。在另一实施例中,机器可读介质可包括瞬态机器可读通信介质,例如电、光、声、或者其他形式的传播信号,诸如载波、红外信号、数字信号等。
合适的机器的示例包括但不限于,通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。合适的机器的其他示例包括计算设备、以及结合这些处理器、指令处理装置、数字逻辑电路、或集成电路的其他电子设备。这些技术设备和电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动因特网设备(MID)、媒体播放器、智能电视、上网机、机顶盒、以及视频游戏控制器。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实践中,但是不一定需要这样。类似地,在该描述中,出于流线型化本公开和辅助对各个发明性方面的理解的目的,各种特征有时被一起归组在单一实施例、附图、及其描述中。然而,公开的该方法不被解释为反映本发明需要多于在每一权利要求中明确叙述的特征的意图。相反,如所附权利要求反映的,发明性方面在于少于单一公开的实施例的所有特征。因此,该详细描述之后的权利要求由此被明确地结合到该详细描述中,其中,每一权利要求本身代表本发明的单独实施例。
Claims (24)
1.一种指令处理装置,包括:
多个操作掩码寄存器;
用于接收操作掩码合并指令的解码单元,所述操作掩码合并指令用于指示所述多个操作掩码寄存器中的源操作掩码寄存器以及目的地存储位置,所述源操作掩码寄存器包括源操作掩码,所述源操作掩码包括将被布置在多个未经掩码元素内的多个经掩码元素;以及
与所述解码单元耦合的执行单元,响应于所述操作掩码合并指令,所述执行单元将经合并操作掩码存储在所述目的地存储位置中,所述经合并操作掩码包括合并在一起的来自所述源操作掩码的所述未经掩码元素。
2.如权利要求1所述的装置,其特征在于,响应于所述操作掩码合并指令,所述执行单元将所述未经掩码元素合并在一起,以使得所述经掩码元素不被布置在所述经合并的未经掩码元素内。
3.如权利要求1所述的装置,其特征在于,响应于所述操作掩码合并指令,所述执行单元将来自所述源操作掩码的所述未经掩码元素一起合并在所述经合并的操作掩码的最低有效部分中。
4.如权利要求1所述的装置,其特征在于,响应于所述操作掩码合并指令,所述执行单元将来自所述源操作掩码的所述未经掩码元素一起合并在所述经合并的操作掩码的最高有效部分中。
5.如权利要求1所述的装置,其特征在于,所述解码单元接收所述操作掩码合并指令,所述操作掩码合并指令包括一个或多个比特,所述一个或个比特具有:
第一值,用于指示来自所述源操作掩码的所述未经掩码元素将被一起合并到经合并操作掩码的最低有效部分中;以及
第二值,用于指示来自所述源操作掩码的所述未经掩码元素将被一起合并到经合并操作掩码的最高有效部分中。
6.如权利要求1所述的装置,其特征在于,所述源操作掩码寄存器具有所述源操作掩码,其中所述经掩码和所述未经掩码元素中的每一个是不同的单个比特。
7.如权利要求6所述的装置,其特征在于,每个经掩码元素具有二进制值零,而每个未经掩码元素具有二进制值一。
8.如权利要求1所述的装置,其特征在于,所述多个操作掩码寄存器包括一组八个操作掩码寄存器,其中所述八个操作掩码寄存器中的每一个存储具有达至少64比特的操作掩码,并且其中所述解码单元接收所述操作掩码合并指令,所述操作掩码合并指令具有用于将所述源操作掩码寄存器指定为所述八个操作掩码寄存器中的一个的3比特字段。
9.如权利要求1所述的装置,其特征在于,所述解码单元接收所述操作掩码合并指令,所述操作掩码合并指令显式地指定所述源操作掩码寄存器,以及显式地指定目的地操作掩码寄存器作为目的地存储位置。
10.如权利要求1所述的装置,其特征在于,所述解码单元接收所述操作掩码合并指令,所述操作掩码合并指令具有操作码,所述操作码指示所述经合并操作掩码将被存储,而不用管所述源操作掩码中所述经掩码和未经掩码元素的任何特定布置。
11.如权利要求1所述的装置,其特征在于,所述操作掩码寄存器存储将被用来断言打包数据上的操作的操作掩码。
12.一种处理器内的方法,包括:
接收操作掩码合并指令,所述操作掩码合并指令指示源操作掩码和目的地存储位置,所述源操作掩码包括布置在多个未掩码元素内的多个经掩码元素;以及
响应于所述操作掩码合并指令将经合并操作掩码存储在所述目的地存储位置中,所述经合并操作掩码包括合并在一起的来自所述源操作掩码的所述未经掩码元素。
13.如权利要求12所述的方法,其特征在于,来自所述源操作掩码的未经掩码元素被一起合并到所述经合并操作掩码的最低有效部分中。
14.如权利要求12所述的方法,其特征在于,来自所述源操作掩码的未经掩码元素被一起合并到所述经合并操作掩码的最高有效部分中。
15.如权利要求1所述的方法,其特征在于,所述操作掩码合并指令包括一个或多个比特,所述一个或多个比特具有:
第一值,用于指示来自所述源操作掩码的所述未经掩码元素将被一起合并到经合并操作掩码的最低有效部分中;以及
第二值,用于指示来自所述源操作掩码的所述未经掩码元素将被一起合并到经合并操作掩码的最高有效部分中。
16.如权利要求12所述的方法,其特征在于,接收包括接收指示所述源操作掩码的指令,其中所述经掩码和未经掩码元素中的每一个是不同的单个比特,并且其中每个经掩码元素具有二进制零且每个未经掩码元素具有二进制值一。
17.如权利要求12所述的方法,其特征在于,接收包括接收具有操作码的所述操作掩码合并指令,所述操作码指示所述经合并操作掩码将被存储,而不用管所述源操作掩码中的所述经掩码和未经掩码元素的任何特定布置。
18.如权利要求12所述的方法,其特征在于,所述经掩码和未经掩码元素中的每一个对应于不同打包数据元素且被用来断言相应打包数据元素上的操作。
19.如权利要求12所述的方法,其特征在于,还包括使用所述经合并操作掩码来向量化代码的编译器。
20.一种处理指令的系统,包括:
互连;
与所述互连耦合的处理器;以及
与所述互连耦合的动态随机存取存储器(DRAM),所述DRAM存储操作掩码合并指令,所述操作掩码合并指令指示源操作掩码和目的地存储位置,所述源操作掩码包括多个经掩码元素,所述多个经掩码元素将被布置在多个未经掩码元素内,所述操作掩码合并指令若由所述处理器执行则可操作用于导致所述处理器执行包括以下的操作:
将经合并操作掩码存储在目的地存储位置中,所述经合并操作掩码包括合并在一起的来自所述源操作掩码的所述未经掩码元素。
21.如权利要求20所述的系统,其特征在于,所述源操作掩码被用来断言打包数据上的操作。
22.如权利要求20所述的系统,其特征在于,所述操作掩码合并指令具有操作码,所述操作码指示所述经合并操作掩码将针对所述源操作掩码的任何值而被存储。
23.一种制品,包括:
存储操作掩码合并指令的非瞬态机器可读存储介质,所述操作掩码合并指令用于指示源操作掩码和目的地,所述源操作掩码包括布置在多个未掩码元素内的多个经掩码元素,以及所述操作掩码合并指令若由机器执行则可操作用于导致所述机器执行包括以下的操作:
响应于所述操作掩码合并指令将经合并操作掩码存储在所述目的地中,所述经合并操作掩码包括合并在一起的来自所述源操作掩码的所述未经掩码元素,且没有经掩码元素被布置在它们之间。
24.如权利要求23所述的制品,其特征在于,接收包括接收具有操作码的所述操作掩码合并指令,所述操作码指示所述经合并操作掩码将针对所述源操作掩码中的所述经掩码和未经掩码元素的许多不同布置而被存储。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/842,730 US9411593B2 (en) | 2013-03-15 | 2013-03-15 | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US13/842,730 | 2013-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104049953A true CN104049953A (zh) | 2014-09-17 |
CN104049953B CN104049953B (zh) | 2017-11-03 |
Family
ID=50634868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410094949.2A Active CN104049953B (zh) | 2013-03-15 | 2014-03-14 | 用于合并操作掩码的未经掩码元素的装置、方法、系统和制品 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9411593B2 (zh) |
JP (1) | JP5918287B2 (zh) |
KR (1) | KR101679111B1 (zh) |
CN (1) | CN104049953B (zh) |
BR (1) | BR102014006231A2 (zh) |
DE (1) | DE102014003661A1 (zh) |
GB (2) | GB2515147B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951962A (zh) * | 2017-03-22 | 2017-07-14 | 北京地平线信息技术有限公司 | 用于神经网络的复合运算单元、方法和电子设备 |
CN107273205A (zh) * | 2016-04-07 | 2017-10-20 | 国际商业机器公司 | 用于在计算机处理器中调度指令的方法和系统 |
CN108027773A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 存储器访问指令顺序编码的生成和使用 |
CN108885551A (zh) * | 2016-03-31 | 2018-11-23 | 英特尔公司 | 存储器复制指令、处理器、方法和系统 |
CN109643234A (zh) * | 2016-09-22 | 2019-04-16 | 英特尔公司 | 用于合并数据元素并生成索引更新的处理器、方法、系统和指令 |
CN112380806A (zh) * | 2020-12-05 | 2021-02-19 | 浙江大学 | 一种高效多比特寄存器聚类合并方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
US9606961B2 (en) | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
EP3001306A1 (en) * | 2014-09-25 | 2016-03-30 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772850B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US20160188333A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Coporation | Method and apparatus for compressing a mask value |
JP6790646B2 (ja) * | 2016-09-21 | 2020-11-25 | 日本電気株式会社 | コンパイル装置、コンパイル方法、および、コンパイルプログラム |
EP3428792B1 (en) * | 2017-07-10 | 2022-05-04 | Arm Ltd | Testing bit values inside vector elements |
US10901745B2 (en) | 2018-07-10 | 2021-01-26 | International Business Machines Corporation | Method and apparatus for processing storage instructions |
US11789734B2 (en) * | 2018-08-30 | 2023-10-17 | Advanced Micro Devices, Inc. | Padded vectorization with compile time known masks |
KR102370851B1 (ko) * | 2021-08-18 | 2022-03-07 | 주식회사 로그프레소 | 벡터 연산 명령어를 통해 문자열을 고속으로 추출하는 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
CN1926511A (zh) * | 2004-03-10 | 2007-03-07 | Arm有限公司 | 在数据字内插入比特 |
US20090019269A1 (en) * | 2001-11-01 | 2009-01-15 | Altera Corporation | Methods and Apparatus for a Bit Rake Instruction |
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59165147A (ja) | 1983-03-11 | 1984-09-18 | Fujitsu Ltd | コンパイラにおける条件文のベクトル命令化方式 |
JPS6072071A (ja) | 1983-09-28 | 1985-04-24 | Nec Corp | ベクトル処理装置 |
US6697427B1 (en) * | 1998-11-03 | 2004-02-24 | Pts Corporation | Methods and apparatus for improved motion estimation for video encoding |
TW482980B (en) * | 1999-05-31 | 2002-04-11 | Ibm | Hardware device for executing base programmable instructions based upon micro-instructions |
US6735690B1 (en) * | 1999-06-21 | 2004-05-11 | Pts Corporation | Specifying different type generalized event and action pair in a processor |
US7003450B2 (en) * | 2000-10-20 | 2006-02-21 | Pts Corporation | Methods and apparatus for efficient vocoder implementations |
JP2009086870A (ja) | 2007-09-28 | 2009-04-23 | Nec Computertechno Ltd | ベクトル処理装置 |
US8356159B2 (en) | 2008-08-15 | 2013-01-15 | Apple Inc. | Break, pre-break, and remaining instructions for processing vectors |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
-
2013
- 2013-03-15 US US13/842,730 patent/US9411593B2/en active Active
-
2014
- 2014-02-26 JP JP2014034924A patent/JP5918287B2/ja not_active Expired - Fee Related
- 2014-03-14 DE DE102014003661.8A patent/DE102014003661A1/de not_active Withdrawn
- 2014-03-14 CN CN201410094949.2A patent/CN104049953B/zh active Active
- 2014-03-17 BR BR102014006231A patent/BR102014006231A2/pt not_active IP Right Cessation
- 2014-03-17 GB GB1404692.4A patent/GB2515147B/en not_active Expired - Fee Related
- 2014-03-17 KR KR1020140030864A patent/KR101679111B1/ko active IP Right Grant
- 2014-03-17 GB GB1512362.3A patent/GB2527944B/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
US20090019269A1 (en) * | 2001-11-01 | 2009-01-15 | Altera Corporation | Methods and Apparatus for a Bit Rake Instruction |
CN1926511A (zh) * | 2004-03-10 | 2007-03-07 | Arm有限公司 | 在数据字内插入比特 |
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108027773A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 存储器访问指令顺序编码的生成和使用 |
CN108027773B (zh) * | 2015-09-19 | 2022-09-20 | 微软技术许可有限责任公司 | 存储器访问指令顺序编码的生成和使用 |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
CN108885551A (zh) * | 2016-03-31 | 2018-11-23 | 英特尔公司 | 存储器复制指令、处理器、方法和系统 |
CN108885551B (zh) * | 2016-03-31 | 2023-06-06 | 英特尔公司 | 存储器复制指令、处理器、方法和系统 |
CN107273205A (zh) * | 2016-04-07 | 2017-10-20 | 国际商业机器公司 | 用于在计算机处理器中调度指令的方法和系统 |
CN107273205B (zh) * | 2016-04-07 | 2020-06-26 | 国际商业机器公司 | 用于在计算机处理器中调度指令的方法和系统 |
US10838728B2 (en) | 2016-04-07 | 2020-11-17 | International Business Machines Corporation | Parallel slice processor shadowing states of hardware threads across execution slices |
CN109643234A (zh) * | 2016-09-22 | 2019-04-16 | 英特尔公司 | 用于合并数据元素并生成索引更新的处理器、方法、系统和指令 |
CN109643234B (zh) * | 2016-09-22 | 2024-01-23 | 英特尔公司 | 用于合并数据元素并生成索引更新的处理器、方法、系统 |
CN106951962A (zh) * | 2017-03-22 | 2017-07-14 | 北京地平线信息技术有限公司 | 用于神经网络的复合运算单元、方法和电子设备 |
CN112380806A (zh) * | 2020-12-05 | 2021-02-19 | 浙江大学 | 一种高效多比特寄存器聚类合并方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2515147A (en) | 2014-12-17 |
JP2014182802A (ja) | 2014-09-29 |
KR101679111B1 (ko) | 2016-11-23 |
GB2527944A (en) | 2016-01-06 |
CN104049953B (zh) | 2017-11-03 |
GB201512362D0 (en) | 2015-08-19 |
DE102014003661A1 (de) | 2014-09-18 |
US9411593B2 (en) | 2016-08-09 |
GB201404692D0 (en) | 2014-04-30 |
GB2527944B (en) | 2016-06-08 |
KR20140113580A (ko) | 2014-09-24 |
JP5918287B2 (ja) | 2016-05-18 |
GB2515147B (en) | 2015-09-23 |
US20140281396A1 (en) | 2014-09-18 |
BR102014006231A2 (pt) | 2015-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104049953A (zh) | 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令 | |
CN104025039A (zh) | 打包数据操作掩码串接处理器、方法、系统及指令 | |
CN104011657A (zh) | 用于向量计算和累计的装置和方法 | |
CN104781803A (zh) | 用于架构不同核的线程迁移支持 | |
CN104049943A (zh) | 有限范围向量存储器访问指令、处理器、方法和系统 | |
CN104951401A (zh) | 排序加速处理器、方法、系统和指令 | |
CN104756068A (zh) | 合并相邻的聚集/分散操作 | |
CN104011652A (zh) | 打包选择处理器、方法、系统和指令 | |
CN104603745A (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
CN104011647A (zh) | 浮点舍入处理器、方法、系统和指令 | |
CN104025020A (zh) | 用于执行掩码位压缩的系统、装置以及方法 | |
CN103827814A (zh) | 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑 | |
CN104081336A (zh) | 用于检测向量寄存器内的相同元素的装置和方法 | |
CN104011672A (zh) | 转置指令 | |
CN104011667A (zh) | 用于滑动窗口数据访问的设备和方法 | |
CN104011660A (zh) | 用于处理比特流的基于处理器的装置和方法 | |
CN104137059A (zh) | 多寄存器分散指令 | |
CN104025040A (zh) | 用于混洗浮点或整数值的装置和方法 | |
CN104040489A (zh) | 多寄存器收集指令 | |
CN104603746A (zh) | 由读和写掩码控制的向量移动指令 | |
CN105612509A (zh) | 用于提供向量子字节解压缩功能性的方法、设备、指令和逻辑 | |
CN104137060A (zh) | 高速缓存协处理单元 | |
CN104040487A (zh) | 用于合并掩码模式的指令 | |
CN104011653A (zh) | 打包数据操作掩码比较处理器、方法、系统及指令 | |
CN104145245A (zh) | 浮点舍入量确定处理器、方法、系统和指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |