CN101488084A - 执行屏蔽加载和存储操作的指令和逻辑 - Google Patents
执行屏蔽加载和存储操作的指令和逻辑 Download PDFInfo
- Publication number
- CN101488084A CN101488084A CNA2008101898632A CN200810189863A CN101488084A CN 101488084 A CN101488084 A CN 101488084A CN A2008101898632 A CNA2008101898632 A CN A2008101898632A CN 200810189863 A CN200810189863 A CN 200810189863A CN 101488084 A CN101488084 A CN 101488084A
- Authority
- CN
- China
- Prior art keywords
- shielding
- vector
- destination
- instruction
- storage
- 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
- 239000013598 vector Substances 0.000 claims abstract description 89
- 238000003860 storage Methods 0.000 claims description 78
- 238000000034 method Methods 0.000 claims description 55
- 230000005055 memory storage Effects 0.000 claims description 38
- 238000011068 loading method Methods 0.000 claims description 29
- 238000013500 data storage Methods 0.000 claims description 10
- 230000000873 masking effect Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 abstract description 4
- 230000006835 compression Effects 0.000 description 22
- 238000007906 compression Methods 0.000 description 22
- 229910003460 diamond Inorganic materials 0.000 description 17
- 239000010432 diamond Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
Images
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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
-
- 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
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
在一个实施例中,提供逻辑以用于接收和执行屏蔽移动指令以根据针对该指令的屏蔽信息将矢量数据元素从源位置传送到目的地位置,该矢量数据元素包含多个压缩数据元素。还描述了其他实施例并且要求保护这些其他实施例。
Description
技术领域
本发明涉及支持屏蔽(mask)操作的逻辑、处理器及系统。
背景技术
随着处理器技术的进步,也不断生成新代码在具有这些处理器的机器上运行。用户一般对他们的计算机,不管其在用的软件类型,期望和需要更高性能。可能问题产生自实际在处理器内执行的这些类型的指令和操作。基于所需要的电路的类型和/或操作的复杂性,某些类型的操作会需要更多时间才能完成。这提供了优化某些复杂操作在处理器内执行的方式的机会。
媒体应用是微处理器开发的驱动力。因此,显示图像和播放音频和视频数据(通称为内容)已成为目前的计算装置越来越流行的应用。此类操作是计算密集的,但是提供高级别的数据并行性,可以通过采用多种数据存储装置(例如单指令多数据(SIMD)寄存器)的有效的实现来利用这种高级别的数据并行性。许多目前的体系结构还需要多个操作、指令或子指令(常常称为“微操作”或“μops”)来对多个操作数执行多种数学运算或数据传输操作,从而减小了吞吐量并增加了执行这些操作所需的时钟周期数。
在SIMD或矢量化操作中常常使用屏蔽,以使得程序员能够屏蔽矢量的某个部分。它广泛地应用于条件操作、矢量化循环的开始/结束或短矢量支持。矢量数据的屏蔽加载和存储是非常复杂的操作,通常需要许多单独指令和时钟周期以用于执行。在此类操作期间,完全不得执行矢量化加载/存储操作的一些部分(“被屏蔽”部分)。因为存储器操作通常以块(例如加载128位、存储128位)来执行,所以支持屏蔽操作以合理性能进行,不需要参考屏蔽来进行块加载,变得非常棘手。
发明内容
根据本发明的一个方面,提供一种设备,包括:逻辑,其用于接收和执行屏蔽移动指令以将矢量数据元素从源位置传送到目的地位置,所述矢量数据元素包含多个压缩数据元素,其中所述屏蔽移动指令要根据矢量屏蔽寄存器中的屏蔽信息来执行。
根据本发明的另一个方面,提供一种方法,包括:响应系统的处理器中执行矢量屏蔽移动指令,从所述系统的第一存储装置获取包含多个压缩值的数据,以及将所述数据存储在所述系统的目的地存储装置中。
根据本发明的又一个方面,提供一种其上存储有指令的机器可读媒体,所述指令在被机器执行时使得所述机器执行一种方法,所述方法包括:响应所述指令的执行,择机性地执行全宽度移动操作以从第一存储装置获取包含多个压缩值的矢量数据元素,以及将所述矢量数据元素存储在目的地存储装置中,其中所述指令是根据屏蔽的矢量屏蔽移动指令。
根据本发明的又一个方面,提供一种系统,包括:处理器,其包括执行单元,所述执行单元用于执行屏蔽移动指令以根据矢量屏蔽寄存器中的屏蔽信息来将矢量数据元素从源存储装置传送到目的地存储装置中,所述矢量数据元素包含多个压缩数据元素;寄存器文件,其包含多个各用于存储矢量数据元素的矢量寄存器和用于存储针对所述屏蔽移动指令的屏蔽的控制寄存器;以及存储缓冲器,其包含多个项目,所述多个项目各用于存储待处理指令、目的地标识符、源标识符以及在所述待处理指令是屏蔽存储指令的情况下的来自所述屏蔽的屏蔽数据;以及耦合到所述处理器的动态随机存取存储器(DRAM)。
附图说明
图1是根据本发明的一个实施例的、用包括用于执行屏蔽加载和存储操作的指令的逻辑的处理器而形成的示范计算机系统的框图。
图2是根据本发明的一个实施例的、执行屏蔽加载操作的方法的流程图。
图3是根据本发明的另一个实施例的、用于执行屏蔽加载操作的方法的流程图。
图4是根据本发明的一个实施例的、执行屏蔽存储操作的方法的流程图。
图5是根据本发明的另一个实施例的、执行屏蔽存储操作的方法的流程图。
图6是根据本发明的一个实施例的处理器的框图。
图7是根据本发明的一个实施例的系统的框图。
具体实施方式
在现代处理器中,使用许多不同的执行单元来处理和执行多种代码和指令。并非所有指令被创建成均等的,一些指令完成的比较快,而另一些指令可能花费非常多的时钟周期。指令的吞吐越快,处理器的整体性能越好。但是,有某些指令存在更大的复杂性,并且在执行时间和处理器资源方面要求更多。例如有浮点指令、加载/存储操作、数据移动等。
由于越来越多的计算机系统用于因特网和多媒体应用,所以日趋引入了额外的处理器支持。例如,单指令多数据(SIMD)整数/浮点指令和流式SIMD扩展(SSE)是减少执行特定程序任务所需指令的总数的指令,从而又可以减少功耗。这些指令可以通过并行地对多个数据元素进行操作来加速软件性能。因此,可以在包括视频、语音和图像/照片处理的广泛范围的应用中实现性能增益。
在多种实施例中,可以提供指令集中的单独指令来使得屏蔽加载和存储操作能够更有效地执行。更确切地来说,实施例可以提供屏蔽加载和存储指令的多种风格,每种风格能够将压缩的SIMD数据从存储器加载到所选的存储位置或将压缩SIMD数据从所选的源位置存储到存储器中。实施例可以提供这些指令的多种风格,以便能够往返于系统内的不同大小的源和目的地存储装置加载和存储具有不同位宽的压缩值。总之,这些指令可以被视为是有条件的SIMD压缩加载和存储指令,使得能够基于与压缩数据元素关联的屏蔽值来有条件地加载或存储压缩数据元素。
图1是根据本发明的实施例的、以包括用于执行屏蔽移动指令的指令单元的处理器来形成的示范计算机系统的框图。系统100包括诸如处理器102的组件,其利用如本发明的(例如本文描述的实施例中的)包括用于执行算法以处理屏蔽移动操作的逻辑的执行单元。系统100是基于可从英特尔公司(Santa Clara,California)获得的 4、 Dual-Core、CoreTM 2 Duo and Quad、XeonTM、XScaleTM和/或StrongARMTM微处理器的处理系统的代表,但是也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,系统100可以执行可从微软公司(Redmond,Washington)获得的WindowsTM操作系统版本,但是也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或和图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。本发明的备选实施例可以用于例如手持装置和嵌入式应用的其他装置中。
处理器102包括一个或多个根据本发明实施例的执行算法以对SIMD数据元素执行屏蔽加载和存储操作的执行单元108。系统100是集线器体系结构的示例。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或举例如数字信号处理器等的任何其他处理器装置。处理器102耦合到处理器总线110,处理器总线110可在处理器102与系统100中的其他组件之间传送数据信号。
在一个实施例中,处理器102包括1级(L1)内部高速缓存存储器104。视体系结构而定,处理器102可以具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可以驻留在处理器102外部。其他实施例还可包括内部和外部高速缓存的组合,视具体的实现和需求而定。寄存器文件106可以将不同类型的数据存储在多种寄存器中,包括整数寄存器、浮点寄存器、矢量或扩展的寄存器、状态寄存器和指令指针寄存器。
执行单元108(包括用于执行整数和浮点运算的逻辑)也驻留在处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)只读存储器(ROM)。对于此实施例,执行单元108包括用于处理压缩指令集109的逻辑。在一个实施例中,压缩指令集109包括多种屏蔽加载和存储指令的实例以用于有效处理此类操作。通过在通用处理器102的指令集中包括压缩指令集109、且具有用于执行这些指令的关联电路,可以在通用处理器102中使用压缩数据来执行许多多媒体应用所用的操作。因此,可以通过使用处理器的全宽度的数据总线来用于对压缩数据执行那些屏蔽加载和存储操作,可加速并更有效地执行许多多媒体应用。这可以不需要在处理器的数据总线上传送更小单元的数据来一次一个数据元素地执行一个或多个操作。
执行单元108的备选实施例还可用在微控制器、嵌入式处理器、图形装置、数字信号处理器(DSP)和其他类型的逻辑电路中。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置或其他存储器装置。存储器120可以存储处理器102可执行的由数据信号所表示的指令和/或数据。
系统逻辑芯片116耦合到处理器总线110和存储器120。图示实施例中的系统逻辑芯片116是存储器控制器集线器(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118以用于指令和数据存储以及用于存储图形命令、数据和纹理。MCH 116用于在处理器102、存储器120与系统100中的其他组件之间引导数据信号,以及用于在处理器总线110、存储器120和集线器接口总线122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可以提供用于耦合到图形控制器112的图形端口。MCH 116通过存储器接口耦合到存储器120。图形卡112通过加速图形端口(AGP)互连114耦合到MCH 116。
系统100使用集线器接口总线122来将MCH 116耦合到I/O控制器集线器(ICH)130。ICH 130通过本地I/O总线提供至一些I/O装置的直接连接。本地I/O总线是用于将外设连接到存储器120、芯片组和处理器102的高速I/O总线。一些示例是音频控制器、固件集线器(闪速BIOS)128、无线收发器126、数据存储装置124、包含用户输入和键盘接口的传统I/O控制器、串行扩展端口(例如通用串行总线(USB))和网络控制器134。数据存储装置124可以是硬盘驱动器、软盘驱动器、CD-ROM装置、闪存装置或其他大容量存储装置。
本发明的范围不限于此方面,屏蔽移动指令还可以应用于不同的数据宽度。例如,可以获取不同位宽的压缩值并将其加载或存储。例如,可以从与源指示符对应的初始存储器位置获取128位或256位的值。在这些矢量数据值内,可存在多个压缩数据元素或字段。例如,较大矢量数据元素内的这些单独数据元素可以采用双字(dword)、四字(qword)的形式,当然更小和更大数据元素也是可以的。此外,还可以使用不同的数据类型,例如单精度和双精度整数和浮点数据类型。因此,在一些实现中,可存在压缩单精度(PS)值,而其他实现可以对压缩双精度(PD)值进行操作。
术语“寄存器”在本文中是指用作微指令的一部分以标识操作数的板上处理器存储位置。换言之,本文中引述的寄存器是从处理器外部可见的寄存器(例如,编程员的角度来看)。但是,实施例的寄存器不应限于表示特定类型的电路。相反,实施例的寄存器只需能够存储和提供数据,并执行本文描述的其功能即可。本文描述的寄存器可以是使用任何数量的不同技术通过处理器内的电路来实现,例如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用物理寄存器与动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位或64位整数数据。一个实施例的寄存器文件还包含用于压缩数据的扩展多媒体SIMD寄存器(例如XMM)。此类寄存器可以包括与SSE2、SSE3、SSE4、GSSE以及以外的(一般指的是“SSEx”)技术相关的以用于保存此类压缩数据操作数的128位宽XMM寄存器和256位宽寄存器(可以将XMM寄存器结合在它们的低阶位)。
一般来说,数据元素是数据的单独片段,其与相同长度的其他数据元素一起存储在单个寄存器或存储器位置中。在与SSEx技术相关的压缩数据序列中,XMM寄存器中存储的数据元素的数量是128位(可以扩展到更大宽度,例如256位或512位)除以单独数据元素的以位算的长度。例如,128位宽操作数可以包括16个压缩字节数据元素。字节这里定义为数据的8位。每个字节数据元素的信息存储在位7到位0对应于字节0,存储在位15至位8对应于字节1,存储在位23至位16对应于字节2,以及最后位120至位127对应于字节15。相似地,在与MMX和SSE技术相关的压缩数据序列中,MMX寄存器中存储的数据元素的数量是64位除以单独数据元素的以位算的长度。压缩字矢量可以是128位长,并且包含8个压缩字数据元素,其中每个压缩字包含16位的信息。压缩双字可以是128位长,并且包含4个压缩双字数据元素,其中每个矢量压缩双字数据元素包含32位的信息。压缩四字矢量可以是128位长,并且包含2个压缩四字数据元素。当然,对于256位矢量,可存在这些数据类型的数量的两倍。要认识到此类压缩数据格式可以进一步扩展到其他寄存器长度,例如扩展到96位、160位、192位、224位、256位或更多位。此外,要理解,根据本发明的实施例,可以将多种带符号和不带符号的压缩数据类型表示存储在多媒体寄存器中。
在一些实现中,可以例如使用从(例如存储在XMM0中的)矢量屏蔽寄存器获取的屏蔽值,以使用有条件的SIMD数据传输指令的加载形式来从例如128位(对于XMM形式)或256位存储器位置将压缩值加载到给定宽度的目的地XMM寄存器中。在一个实施例中,可以由屏蔽寄存器的每个双字(dword)(PS形式)的最高有效位或每个四字(qword)(PS形式)的最高有效位来计算此屏蔽。该屏蔽可以作为SIMD比较指令的结果来得到。此指令将目的地寄存器子操作数设置成全“1”或“0”。一些实现可以使用比较目的地的一个位(例如最高有效位(MSB))作为屏蔽位。对于该屏蔽中的位的每个,如果设置为“0”,则将不发生对应的加载,则对应目的地位置的字段设置为零。
在一些实现中,可以使用从(例如存储在XMM0中的)矢量屏蔽寄存器获取的值,以使用有条件的SIMD数据传输指令的存储形式来从例如XMM寄存器的源存储装置将压缩值存储到目的地位置(例如128位(XMM形式)存储器位置)。在一个实施例中,也可以由屏蔽寄存器的每个dword(PS形式)的最高有效位或每个qword(PS形式)的最高有效位来计算此屏蔽。对于屏蔽的位的每个,如果设置为“0”,则将不发生对应的存储,对应目的地位置的字段将不改变。
现在参考表1,其中示出根据本发明的一个实施例的矢量屏蔽加载和存储指令的多种风格的列表。如表1所示,其中示出多个单独指令,其每个用于对特定数据类型执行给定的条件的SIMD压缩加载或存储操作。每个指令还对应有操作码(opcode)。指令各有指令名称(例如VMASKMOVPS)后跟目的地指示符和源指示符的形式。例如,表1的第一个指令(即VMASKMOVPS)能够从源位置(即存储器的128位(m128))将压缩单精度值加载到目的地位置(即XMM1寄存器)。此外,此加载操作要使用预定的可用作矢量屏蔽寄存器的位置(例如XMM0)中的屏蔽来执行。注意术语YMM用于标识较宽宽度的寄存器,例如256位。
表1
操作码 | 指令 | 描述 |
VEX 128.6638A6/r | VMASKMOVPSXMM1,m128 | 使用XMM0中的屏蔽从存储器加载压缩单精度值 |
VEX 256.6638A6/r | VMASKMOVPSYMM1,m256 | 使用YMM0中的屏蔽从存储器加载压缩单精度值 |
VEX 128.6638A7/r | VMASKMOVPDXMM1,m128 | 使用XMM0中的屏蔽从存储器加载压缩双精度值 |
VEX 256.6638A7/r | VMASKMOVPDYMM1,m256 | 使用YMM0中的屏蔽从存储器加载压缩双精度值 |
VEX 128.6638A8/r | VMASKMOVPSm128,XMM1 | 使用XMM0中的屏蔽将压缩单精度值存储到存储器中 |
VEX 256.6638A8/r | VMASKMOVPSm256,YMM1 | 使用YMM0中的屏蔽将压缩单精度值存储到存储器中 |
VEX 128.6638A9/r | VMASKMOVPDm128,YMM1 | 使用XMM0中的屏蔽将压缩双精度值存储到存储器中 |
VEX 256.6638A9/r | VMASKMOVPDm256,YMM1 | 使用YMM0中的屏蔽将压缩双精度值存储到存储器中 |
因为从存储器单独地加载矢量内的每个单独压缩数据元素或其他SIMD数据元素的屏蔽加载操作可能由于需要检查、分支和许多小(例如32位)加载操作而实现起来相对欠缺效率,所以实施例可以择机性地执行全宽度加载。更确切地来说,为了避免压缩数据元素的多个单独加载,可以例如从常规回写(WB)存储器择机性地执行全加载(例如,128位(B)或256B),即使其中的一部分被屏蔽(这在体系结构上视为不执行的)。因为从WB存储器位置加载常常可以采用择机性方式(包括预提取等)来实现,所以这样是可行。但是为了避免由于从屏蔽位置读取数据而带来的副作用,可采取附加的步骤。从屏蔽位置读取数据的副作用的示例包括安全性问题、非确定性行为等。因此,屏蔽加载将返回零于被屏蔽位置中。因此,屏蔽加载操作的基本流程是全加载(128B,256B)、跟着是与屏蔽寄存器(例如,YMM0/XMM0符号位)执行AND运算以将所有屏蔽位置置零。
屏蔽加载/存储操作可以使用微代码(ucode)处理来以非择机性方式实现。但是为了获得性能好处,硬件可以发出择机性的全宽度加载(或存储)。如果发生故障(真实的或其他),则可以执行ucode处理程序。例如,如果加载跨页末(或分段末),则只要该部分未被屏蔽就可能产生异常,或者因对不可高速缓存的数据的操作可产生异常。在此类情况中,可能产生故障(页故障、分段违规、数据断点等),因此硬件生成ucode异常。Ucode异常处理程序来检查是否发生由屏蔽加载指令的异常。如果是另外的指令中发生异常,则处理程序可以执行标准的异常流程。否则,它使用慢ucode重新开始屏蔽加载指令的执行,跳过屏蔽位置。相似地,如果硬件检查到存储器类型是不可高速缓存的(UC),并由此无法执行择机性加载,则也会经过异常处理程序来慢速执行它。
现在参考图2,其中示出根据本发明的一个实施例的,执行屏蔽加载操作的方法的流程图。方法200可以由在处理器中接收矢量屏蔽加载指令开始(框220)。例如,在许多实现中,可在处理器中接收用户级指令(例如给定处理器指令集体系结构(ISA)的指令集中的指令)。除了此指令外,与该指令一起的还可有源和目的地指示符被接收。
再次参考图2,在框225处,可以设置与该指令关联的标志。更确切地来说,可以设置屏蔽加载标志以指示对应的指令是矢量屏蔽加载指令。下文将进一步论述此标志的使用。然后在框230处,可以执行全宽度加载操作,并可将加载的数据存储到临时存储装置中。更确切地来说,全宽度加载操作可以是择机性加载操作,其中可对应于存储器中的位置的源位置处的数据可被择机性地加载到处理器的临时存储装置中。例如,该数据可以被加载到不可见临时寄存器中。
再次参考图2,接下来可确定该操作执行期间是否发生异常(菱形框235)。例如,如果操作期间应该发生了故障(例如页故障、分段违规、数据断点等),则可生成异常。如果没有,则控制传递到框240,其中可实现优化的屏蔽加载操作。
再次参考图2,如果未检测到异常,则控制传递到框240,其中可以在加载的数据和与矢量屏蔽加载指令关联的屏蔽值之间执行传播AND运算。更确切来说,在一些实施例中,屏蔽值可以对应多个位,每个位与加载的数据中不同压缩数据元素关联。在一个实施例中,可以由屏蔽寄存器的每个dword(PS形式)的最高有效位或每个qword(PD形式)的最高有效位来计算包含屏蔽值的屏蔽。对于该屏蔽中的位的每个,如果设置为“0”,则将不发生对应的加载,且对应目的地的字段设置为0。或者,在一些实现中,对于被屏蔽的操作数,可保持不接触目的地。通过执行传播AND,如果对应的位具有“1”值,则结果与数据元素相同。然后可将此传播AND运算的结果存储在目的地存储装置中(框245)。例如,在一些实施例中,目的地存储装置可以是矢量屏蔽加载指令的目的地指示符中所指示的扩展寄存器。目的地寄存器可以对应可见寄存器,例如扩展多媒体寄存器(例如128位或更大的256位寄存器)。
再次参考图2,如果检测到异常,则控制传递到菱形框250,其中可确定是否设置了屏蔽标志(上文参考框225论述的)。如果没有设置,即该异常是对另外的指令所生成的,则由此利用适合的异常处理程序来处理该异常(框255)。例如,硬件或软件异常处理程序可以处理给定的故障。
相反如果设置了屏蔽标志,则控制传递到框260,其中可以执行对所请求的数据的非优化(即,非择机性)加载。更确切地来说,对源内的每个单独数据元素独立地执行此非优化加载操作。因此,在框260处,可以使用微代码慢序列处理程序来重新开始加载操作。以此方式,可以单个地将源的未屏蔽部分加载到目的地存储装置中。下文将结合图3进一步论述执行此微代码处理程序的一个具体实现。
因此,使用图2的实施例中提出的方法,可以执行有条件的SIMD压缩加载以将屏蔽下的矢量数据元素加载到目的地存储位置。如上所述,可以使用一些实现来将例如压缩单精度或压缩双精度值的压缩数据元素从如存储器(例如128位块的存储器或256位块的存储器)加载到如一个或多个体系结构寄存器的目的地存储装置中,该一个或多个体系结构寄存器诸如扩展的多媒体寄存器(例如256位寄存器的低阶部分或256位寄存器的全部)。虽然是结合图2的实施例中的特定实现来描述的,但是本发明的范围并不局限于此方面。
现在参考图3,其中示出根据本发明的一个实施例的,用于执行非优化矢量屏蔽加载操作的方法的流程图。注意,图3所示的方法270可以对应于上文在图2的框260处描述的非优化加载操作。
如图3所示,方法270可以由获取与屏蔽加载操作关联的屏蔽指示符开始(框272)。如上所述,在一个实施例中,屏蔽指示符分别可以是与要加载的矢量数据的不同压缩数据元素关联的单个位。从框272,控制传递到菱形框274,其中可确定所有屏蔽指示符是否是第二值的。在一个实施例中,第二值可以对应逻辑零值,换言之,对给定的对应数据元素设置屏蔽。如果所有屏蔽指示符是第二值的,则控制传递到框275,其中可将全零写入到目的地存储装置。因为这些数据元素全部要被屏蔽,所以可以直接全写入零,并且方法270可以结束,由此在所有数据都要被屏蔽时能够有效地完成加载操作。
如果菱形框274处确定不是所有指示符都是第二值的,则控制传递到框276,其中可以将源和目的地位置设置为最低有效字段。例如,假定矢量屏蔽加载指令的目的地指示符是指向目的地寄存器XMM1的,所以目的地位置可以设置为该寄存器内的最低数据元素字段,例如位[31:0]。相似地,源位置可以是存储器分段的低阶位置,例如mem0。
控制传递到菱形框278,其中可确定该压缩数据元素的对应屏蔽指示符是否具有第一值。例如,第一值可以对应1值,以指示给定的数据元素将不被屏蔽。如果不具有第一值,且相反与该对应字段关联的屏蔽指示符具有零值,则可以对其目的地寄存器的这些位全写入零(框280)。相反如果在菱形框278处确定屏蔽指示符是第一值的(例如,1值),则执行加载操作以将压缩值从源位置加载到目的地字段中(框285)。因此,可以发出加载操作以能够从源位置读取给定的压缩数据元素,并将其加载到目的地位置的给定部分中。
从框280和285,控制可传递到菱形框290,其中可确定加载到目的地位置是否已完成。如果是如此,则方法270结束。否则,控制传递到框295,其中可递增源位置和目的地位置。然后控制传递回菱形框278以进行后续执行,从而能够将矢量数据元素的其他压缩数据元素加载到目的地位置(如果这些压缩数据元素未被屏蔽的话)。虽然是结合图3的实施例中的此特定实现来示出的,但是本发明的范围并不局限于此方面。
现在参考表2,其中示出根据本发明的一个实施例的,用于执行屏蔽加载操作的伪代码。更确切来说,表2示出用于执行压缩单精度数据元素从存储器位置(即可mem-mem+28)至目的地位置(即DEST[255:0])的256位加载的伪代码。
表2
DEST[31:0]=IF(YMM0[31])Load_32(mem)ELSE 0
DEST[63:32]=IF(YMM0[63])Load_32(mem+4)ELSE 0
DEST[95:64]=IF(YMM0[95])Load_32(mem+8)ELSE 0
DEST[127:96]=IF(YMM0[127])Load_32(mem+12)ELSE 0
DEST[159:128]=IF(YMM0[159])Load_32(mem+16)ELSE 0
DEST[195:160]=IF(YMM0[195])Load_32(mem+20)ELSE 0
DEST[223:196]=IF(YMM0[224])Load_32(mem+24)ELSE 0
DEST[255:224]=IF(YMM0[255])Load_32(mem+28)ELSE 0
因此如表2所示,慢伪代码序列可以对应于仅在给定的压缩数据元素的对应屏蔽位被设为1的情况下才执行的多个单独加载操作。否则,不执行加载且以0填充目的地字段。因此,此加载操作序列从低地址到高地址排序。注意,任何故障可能导致从开始位置重新开始的序列,从而相同的地址可能被读或写多次。
屏蔽存储指令的基本操作与上文描述的屏蔽加载相似。总之,可假定存储将不发生故障,全宽度存储操作的执行可根据屏蔽继续进行。在有故障(例如页故障,包括伪故障和UC存储)的情况中,可以激活ucode来慢速地处理它。屏蔽加载与屏蔽存储操作之间的差异在于,为处理器的存储器子系统提供屏蔽值,以使得执行结束(即,“高级存储引退”)时,仅在未屏蔽的区域中更新高速缓存存储器或其他目的地存储装置。这通过在存储器子系统中移动屏蔽位的μop流来实现。此外,因为存储在存储器子系统中的数据的部分潜在地不是有效的(即,受到屏蔽的),所以在等待屏蔽存储操作的执行时该数据无法使用(例如由于加载存储正向操作)。
现在参考图4,其中示出根据本发明的一个实施例的,用于执行屏蔽存储操作的方法的流程图。方法300可以由在处理器中接收矢量屏蔽存储指令开始(框320)。例如,在许多实现中,可以在处理器中接收用户级指令。除了此指令外,与该指令一起的还可有源和目的地指示符被接收。
仍参考图4,在框325处,可以从屏蔽寄存器提取与该指令关联的屏蔽。例如,如上所述,可以提取各与矢量数据元素的给定数据元素关联的特定位。此外,还可以设置与该指令关联的标志。更确切地来说,可以设置屏蔽存储标志以指示对应的指令是矢量屏蔽存储指令。下文将进一步论述此标志的使用。然后在框330处,可以执行全宽度存储操作。更确切来说,全宽度存储操作可以在处理器的存储器子系统(例如存储缓冲器、存储器排序缓冲器或其他此类存储器子系统组件)中生成项目。该项目可以包括微操作(即,存储操作),还有要将数据存储在的目的地地址和源地址,以及提取的屏蔽值。
仍参考图4,接下来可确定该操作执行期间是否发生异常。例如,如果操作期间应该发生了故障(例如页故障、分段违规、数据断点等),则可生成异常。因此,在菱形框335处,可以确定是否发生异常。如果没有,则控制传递到框340,其中可实现优化的屏蔽存储操作。
更确切来说,可以使用屏蔽值将矢量数据元素的未屏蔽部分的部分数据写入到目的地存储装置(框340)。即,对于存储器子系统中的矢量屏蔽信息的具有第一值(例如逻辑1值)的每个位,可以将对应矢量数据元素从其源位置写入到目的地位置,目的地位置可以是耦合到存储器子系统的高速缓存存储器,然后正好可以将其再发送到最终的目的地位置(例如,主存储器)。
仍参考图4,如果检测到异常,则控制传递到菱形框350,其中可确定是否设置了屏蔽标志(上文参考框325论述的)。如果没有设置,即该异常是对另外的指令而生成的,则由此利用适合的异常处理程序来处理该异常(框355)。例如,硬件或软件异常处理程序可以处理给定的故障。
相反如果设置了屏蔽标志,则控制传递到框360,其中可以执行对所请求的数据的非优化(即,非择机性)存储。更确切地来说,对源内的每个单独数据元素可独立地执行此非优化存储操作。因此,在框360处,可以使用微代码慢序列处理程序来重新开始加载操作。以此方式,可以单个地将源的未屏蔽部分存储到目的地存储装置中。下文将结合图5进一步论述执行此微代码处理程序的一个具体实现。
因此,使用图4的实施例中提出的方法,可以执行有条件的SIMD压缩存储以将屏蔽下的矢量数据元素存储到目的地存储位置中。如上所述,可以使用一些实现来将例如压缩单精度或压缩双精度值的压缩数据元素从如一个或多个体系结构寄存器的源存储到如存储器(例如128位块的存储器或256位块的存储器)的目的地存储装置中,该一个或多个体系结构寄存器诸如扩展的多媒体寄存器(例如256位寄存器的低阶部分或256位寄存器的全部)。虽然是结合图4的实施例中的特定实现来描述的,但是本发明的范围并不局限于此方面。
现在参考图5,其中示出根据本发明的一个实施例的,用于执行非优化矢量屏蔽存储操作的方法的流程图。注意,图5所示的方法370可以对应于上文在图4的框360处描述的非优化存储操作。
如图5所示,方法370可以由获取与屏蔽存储指令关联的屏蔽指示符开始(框372)。如上所述,在一个实施例中,屏蔽指示符可以各是与要存储的矢量数据的不同压缩数据元素关联的单个位。从框372,控制传递到菱形框374,其中可确定是否所有屏蔽指示符是第二值的,例如逻辑零值。如果所有屏蔽指示符都是第二值的,则无需存储操作,并且方法370可以结束,从而在所有数据要被屏蔽时能够有效完成存储操作。
如果菱形框374处确定不是所有指示符都是第二值的,则控制传递到框376,其中可以将源和目的地位置设置为最低有效字段。例如,假定矢量屏蔽存储指令的目的地指示符是指向存储器分段的,所以目的地位置可以设置为该分段内的最低数据元素字段,例如位mem0。相似地,源位置可以是源寄存器(例如寄存器XMM1)的低阶,例如[31:0]。
控制然后传递到菱形框378,其中可确定该压缩数据元素的对应屏蔽指示符是否具有第一值(例如具有零值),控制可传递到菱形框390。相反如果在菱形框378处确定屏蔽指示符是第一值的(例如,1值),则执行存储操作以将压缩值从源位置存储到目的地字段中(框385)。因此,可以发出存储操作以能够将来自源位置的给定压缩数据元素写以及存储入到目的地位置的给定部分中。
在菱形框390处,可以确定存储到目的地位置是否完成。如果是如此,则方法370结束。否则,控制传递到框395,其中可递增源位置和目的地位置。然后控制传递回菱形框378以进行后续执行,从而能够将矢量数据元素的其他压缩数据元素存储到目的地位置(如果这些压缩数据元素未被屏蔽的话)。虽然是结合图5的实施例中的此特定实现来描述的,但是本发明的范围并不局限于此方面。
现在参考表3,其中示出根据本发明的一个实施例的示例矢量屏蔽存储操作的伪代码实现。更确切来说,表3中所示的伪代码可以对应执行256位存储操作的VMASKMOVPS指令。如表所示,对于对应于压缩单精度数据元素的各单独压缩元素,如果对应的屏蔽位是第一值的(即“1”值),则将源位置中的数据存储到目的地位置的对应部分中。
否则,对给定的数据元素不执行进一步动作。
表3
IF(YMM0[31])DEST[31:0]=SRC[31:0]
IF(YMM0[63])DEST[63:32]=SRC[63:32]
IF(YMM0[95])DEST[95:64]=SRC[95:64]
IF(YMM0[127])DEST[127:96]=SRC[127:96]
IF(YMM0[159])DEST[159:128]=SRC[159:128]
IF(YMM0[I91])DEST[I91:160]=SRC[191:160]
IF(YMM0[223])DEST[223:192]=SRC[223:192]
IF(YMM0[255])DEST[255:224]=SRC[255:224]
现在参考图6,其中示出根据本发明的一个实施例的处理器的框图。如图6所示,处理器400可以是多级流水线式乱序处理器。处理器400通过图6中的相对简化视图来示出,以图示结合上文描述的屏蔽加载和存储操作使用的多种特征。
如图6所示,处理器400包括前端单元410,前端单元410可用于提取要执行的宏指令,并为在处理器中后来的使用对它们进行准备。例如,前端单元410可以包括指令预提取器、指令解码器和跟踪高速缓存,连同微代码存储装置以及μop存储装置。指令预提取器可以从存储器提取宏指令,并将它们馈送到指令解码器以将它们解码成基元,即供处理器执行的μop。跟踪高速缓存可以取得解码的μop,并将它们汇编成程序排序的序列,以便存储到宏代码存储装置中。但是,在复杂宏指令的情况中,微代码存储装置可以提供操作执行所需的μop。当然,还可以在前端单元410中实现其他组件和特征。
耦合于前端单元410与执行单元420之间的是乱序(OOO)引擎415,乱序(OOO)引擎415可用于接收微指令并为执行对它们进行准备。更确切来说,OOO引擎415可以包括多种缓冲器以对微指令流重新排序并分配执行所需的多种资源,以及将逻辑寄存器重命名到多种寄存器文件(例如寄存器文件430和扩展的寄存器文件435)内的存储位置上。寄存器文件430可以包括用于整数和浮点运算的独立寄存器文件。扩展的寄存器文件435可以包括扩展的寄存器,例如XMM寄存器(例如,128位寄存器)和/或YMM寄存器(例如,256位寄存器),当然在一些实现中,可以将XMM寄存器提供在YMM寄存器的低阶位中。此外,控制寄存器436可以存在于扩展的寄存器文件435中,其可用于存储多种屏蔽信息。例如,对于一些屏蔽加载和存储操作,控制寄存器436可以对应XMM0或YMM0寄存器,其可以存储可从其中获取屏蔽来执行屏蔽加载和存储操作的屏蔽信息。
多种资源可以存在于执行单元420中,包括例如多种整数、浮点和SIMD逻辑单元,以及其他专门的硬件。在执行单元420中执行微指令之后,将结果提供到处理器的存储器子系统,其包括存储器排序缓冲器(MOB)440,存储器排序缓冲器(MOB)440可包括控制逻辑442以及加载缓冲器444和存储缓冲器446。可以作为控制器等的MOB控制逻辑442用于控制MOB 440内的缓冲器。加载缓冲器444可以用于在加载μop执行之前存储加载μop,以及跟踪先前加载或其他必须完成之后才能完成给定存储器操作本身的存储器操作。相似地,存储缓冲器446可以用于存储存储器操作(例如存储操作),并跟踪必须完成之后才能完成给定存储器操作本身的先前存储器操作(常常为加载)。加载缓冲器444可以存储与加载指令(例如μop)关联的多种信息,以及源和目的地位置的标识符。存储缓冲器446可以包括类似的信息,以及扩展的信息,包括要用于根据本发明实施例的屏蔽存储操作的屏蔽信息。图6中所示的有来自存储缓冲器446的项目445,项目445包含多种字段,包括μop字段A、目的地标识符字段B、源标识符字段C以及屏蔽字段D。屏蔽字段D可以包含在存储操作执行期间确定是否要将对应的压缩数据元素存储到存储器而要使用的对应屏蔽位。如图6所示,MOB 440耦合到高速缓存450,在一个实施例中,高速缓存450可以是低级高速缓存(例如,L1高速缓存),当然本发明的范围并不局限于此方面。从高速缓存450,可以利用较高级高速缓存、系统存储器等来进行数据通信。虽然是结合图6的实施例中的此特定实现来描述的,但是本发明的范围并不局限于此方面。
因此,如图6所示,处理器400的多种组件(包括例如,执行单元420和MOB 440)可以包括用于执行根据本发明实施例的矢量屏蔽移动操作的逻辑。以此方式,为屏蔽加载和存储操作都可以提供指令集支持。此ISA定义,组合了新的择机性屏蔽加载和存储操作能够使编译器利用屏蔽加载和存储执行更多的矢量化而相对于常规未屏蔽加载和存储不会有性能损失。
可以采用许多不同系统类型来实施实施例。现在参考图7,其中示出根据本发明实施例的系统的框图。如图7所示,多处理器系统500是点到点互连系统,并且包括经由点到点互连550耦合的第一处理器570和第二处理器580。如图7所示,处理器570和580的每个处理器可以是多核处理器,包括第一和第二处理器核(即处理器核574a和574b和处理器核584a和584b)。每个处理器核可以包括例如图6所示用于能够执行根据本发明实施例的单个指令矢量屏蔽移动操作的逻辑。以此方式,可以择机性地执行全宽度移动操作,然后如果发生异常,则处理器中存储的微代码处理程序可以对每个未屏蔽的数据元素单个地执行移动操作。
仍参考图7,第一处理器570还包括存储器控制器集线器(MCH)572和点到点(P-P)接口576和578。相似地,第二处理器580包括MCH 582和P-P接口586和588。如图4所示,MCH 572和582将处理器耦合到各自相应存储器,即存储器532和存储器534,它们可以是本地附属于各自相应处理器的主存储器(例如,动态随机存取存储器(DRAM))的一部分。可以经由P-P互连552和554分别将第一处理器570和第二处理器580耦合到芯片组590。如图7所示,芯片组590包括P-P接口594和598。
此外,芯片组590还包括将芯片组590与高性能图形引擎538耦合的接口592。接着可以经由接口596将芯片组590耦合到第一总线516。如图7所示,可以将多种I/O装置514和总线桥518一起耦合到第一总线516,以及总线桥518将第一总线516耦合到第二总线520。在一个实施例中,可以将多种装置耦合到第二总线520,包括有例如,键盘/鼠标522、通信装置526和诸如可以包含代码530的盘驱或其他大容量存储装置等的数据存储单元528。此外,还可以将音频I/O 524耦合到第二总线520。
可以用代码来实现实施例,并且可以将实施例存储在存储媒体上,存储媒体上存储有可用于对系统编程以执行指令的指令。该存储媒体可以包括但不限于,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、压缩盘可写的(CD-RW)和磁光盘的任何类型的盘、诸如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、磁卡或光卡的半导体装置、或者适用于存储电子指令的任何其他类型的媒体。
虽然结合有限数量的实施例描述了本发明,但是本领域技术人员将认识到据此有许多修改和变化。应认为所附权利要求涵盖落在本发明的真实精神和范围内的所有此类修改和变化。
Claims (25)
1.一种设备,包括:
逻辑,其用于接收和执行屏蔽移动指令以将矢量数据元素从源位置传送到目的地位置,所述矢量数据元素包含多个压缩数据元素,其中所述屏蔽移动指令要根据矢量屏蔽寄存器中的屏蔽信息来执行。
2.如权利要求1所述的设备,还包括寄存器文件和用于存储所述屏蔽信息的控制寄存器,所述寄存器文件包含多个扩展的寄存器,所述多个扩展的寄存器各用于存储包含多个压缩数据元素的矢量数据元素。
3.如权利要求2所述的设备,其中所述设备包括处理器,所述处理器还包括具有存储缓冲器的存储器子系统,所述存储缓冲器包含多个项目,所述多个项目各用于存储待处理指令、目的地标识符、源标识符以及在所述待处理指令是屏蔽存储指令的情况下的所述屏蔽信息。
4.如权利要求1所述的设备,其中所述屏蔽移动指令是屏蔽加载指令,所述屏蔽加载指令包含操作码、源标识符和目的地标识符,以及所述逻辑用于响应所述屏蔽加载指令而访问所述矢量屏蔽寄存器以获取所述屏蔽信息。
5.如权利要求4所述的设备,其中所述逻辑用于访问所述矢量屏蔽寄存器中多个字段的每个字段的第一位以获取所述屏蔽信息,其中每个第一位是针对矢量数据元素中所述多个压缩数据元素中对应的压缩数据元素的屏蔽值。
6.如权利要求1所述的设备,其中所述屏蔽移动指令是屏蔽加载指令,以及所述逻辑用于执行择机性全宽度加载操作以获取所述矢量数据元素并将其存储到临时存储装置中,然后确定在所述执行期间是否发生异常。
7.如权利要求6所述的设备,其中如果未发生异常,则所述逻辑执行在所述多个压缩数据元素其中之一与所述屏蔽信息的对应部分的每个之间的传播AND运算,并将所得数据存储在所述目的地位置中。
8.如权利要求6所述的设备,其中如果发生异常,则所述逻辑使用微代码处理程序对所述矢量数据元素中未屏蔽的部分单个地执行加载操作以将其加载到所述目的地位置。
9.如权利要求8所述的设备,其中所述微代码处理程序用于确定是否全部所述屏蔽信息是第二值的,以及如果不是则将未屏蔽的部分单个地加载,否则所述微代码处理程序对所述目的地位置写入零值。
10.一种方法,包括:
响应系统的处理器中执行矢量屏蔽移动指令,从所述系统的第一存储装置获取包含多个压缩值的数据,以及将所述数据存储在所述系统的目的地存储装置中。
11.如权利要求10所述的方法,还包括择机性地以全宽度加载操作获取所述数据并将其存储到临时存储装置中。
12.如权利要求11所述的方法,还包括确定在所述全宽度加载操作期间是否发生异常,如果是则执行处理程序以独立地获取所述多个压缩值的每个并将其存储在所述目的地存储装置中。
13.如权利要求12所述的方法,还包括仅对所述多个压缩值中其具有的关联于所述矢量屏蔽移动指令的屏蔽信息的相应部分具有第一值的每个压缩值进行独立地获取以及存储,而其他地则对相应压缩值的目的地存储装置写零值。
14.如权利要求10所述的方法,还包括响应所述矢量屏蔽移动指令,择机性地执行全宽度存储操作,所述全宽度存储操作包括在存储缓冲器中存储指令字段值、源标识符、目的地标识符以及与所述矢量屏蔽移动指令关联的屏蔽信息,其中所述矢量屏蔽移动指令是矢量屏蔽存储指令。
15.如权利要求14所述的方法,还包括确定在所述全宽度存储操作期间是否发生异常,以及如果是则执行处理程序以对所述多个压缩值的每个独立地获取并将其存储在所述目的地存储装置中。
16.如权利要求15所述的方法,还包括仅对所述多个压缩值中其具有的所述屏蔽信息的相应部分具有第一值的每个压缩值进行独立地获取和存储。
17.一种其上存储有指令的机器可读媒体,所述指令在被机器执行时使得所述机器执行一种方法,所述方法包括:
响应所述指令的执行,择机性地执行全宽度移动操作以从第一存储装置获取包含多个压缩值的矢量数据元素,以及将所述矢量数据元素存储在目的地存储装置中,其中所述指令是根据屏蔽的矢量屏蔽移动指令。
18.如权利要求17所述的机器可读媒体,其中,所述指令是矢量屏蔽加载指令以将所述矢量数据元素从由关联于所述矢量屏蔽加载指令的源标识符所指示的存储器位置加载到由关联于所述矢量屏蔽加载指令的目的地标识符所指示的存储装置中,其中所述屏蔽被存储在矢量屏蔽寄存器中。
19.如权利要求18所述的机器可读媒体,其中所述矢量加载指令使处理器从所述第一存储装置择机性地将所述矢量数据元素加载到临时存储装置中,以及确定在所述择机性加载期间是否发生异常,以及如果未发生异常,则将所述矢量数据元素的未屏蔽部分加载到所述目的地存储装置中。
20.如权利要求19所述的机器可读媒体,其中所述矢量屏蔽加载指令使得所述处理器能够在发生异常的情况下将所述压缩值中未屏蔽的压缩值单个地从所述第一存储装置加载到所述目的地存储装置。
21.一种系统,包括:
处理器,其包括执行单元,所述执行单元用于执行屏蔽移动指令以根据矢量屏蔽寄存器中的屏蔽信息来将矢量数据元素从源存储装置传送到目的地存储装置中,所述矢量数据元素包含多个压缩数据元素;寄存器文件,其包含多个各用于存储矢量数据元素的矢量寄存器和用于存储针对所述屏蔽移动指令的屏蔽的控制寄存器;以及存储缓冲器,其包含多个项目,所述多个项目各用于存储待处理指令、目的地标识符、源标识符以及在所述待处理指令是屏蔽存储指令的情况下的来自所述屏蔽的屏蔽数据;以及
耦合到所述处理器的动态随机存取存储器(DRAM)。
22.如权利要求21所述的系统,其中所述处理器用于执行择机性全宽度加载操作以获取所述矢量数据元素并将其存储到临时存储装置,然后确定在所述执行期间是否发生异常。
23.如权利要求22所述的系统,其中所述处理器用于在未发生异常的情况下,执行在所述多个压缩数据元素其中之一与所述屏蔽的对应部分的每个之间的传播AND运算,并将所得数据存储在所述目的地存储装置中,否则使用微代码处理程序将所述矢量数据元素的未屏蔽部分单个地从所述源存储装置加载到所述目的地存储装置中。
24.如权利要求21所述的系统,其中所述处理器用于择机性地执行全宽度存储操作以将所述待处理指令、所述源标识符、所述目的地标识符和所述屏蔽数据存储到所述存储缓冲器。
25.如权利要求25所述的系统,其中所述处理器用于确定在所述全宽度存储操作期间是否发生异常,以及如果是则执行处理程序以对所述多个压缩值中其具有的屏蔽数据的相应部分具有第一值的每个压缩值进行独立地获取并将其存储在所述目的地存储装置中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210457442.XA CN102937890B (zh) | 2007-12-27 | 2008-12-26 | 执行屏蔽加载和存储操作的设备和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/005,575 | 2007-12-27 | ||
US12/005575 | 2007-12-27 | ||
US12/005,575 US9529592B2 (en) | 2007-12-27 | 2007-12-27 | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210457442.XA Division CN102937890B (zh) | 2007-12-27 | 2008-12-26 | 执行屏蔽加载和存储操作的设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101488084A true CN101488084A (zh) | 2009-07-22 |
CN101488084B CN101488084B (zh) | 2013-01-02 |
Family
ID=40758613
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101898632A Expired - Fee Related CN101488084B (zh) | 2007-12-27 | 2008-12-26 | 用于执行屏蔽加载和存储操作的设备、方法和系统 |
CN201210457442.XA Expired - Fee Related CN102937890B (zh) | 2007-12-27 | 2008-12-26 | 执行屏蔽加载和存储操作的设备和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210457442.XA Expired - Fee Related CN102937890B (zh) | 2007-12-27 | 2008-12-26 | 执行屏蔽加载和存储操作的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9529592B2 (zh) |
CN (2) | CN101488084B (zh) |
DE (1) | DE102008061062A1 (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103718157A (zh) * | 2011-04-01 | 2014-04-09 | 英特尔公司 | 使用掩码寄存器跳转的系统、装置和方法 |
CN103827813A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
CN104008021A (zh) * | 2013-02-22 | 2014-08-27 | Mips技术公司 | 针对多数据体系结构的精确的异常信号发送 |
CN104011670A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
CN104011653A (zh) * | 2011-12-29 | 2014-08-27 | 英特尔公司 | 打包数据操作掩码比较处理器、方法、系统及指令 |
CN104011647A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 浮点舍入处理器、方法、系统和指令 |
CN104115114A (zh) * | 2011-12-23 | 2014-10-22 | 英特尔公司 | 经改进的提取指令的装置和方法 |
CN104603746A (zh) * | 2012-09-28 | 2015-05-06 | 英特尔公司 | 由读和写掩码控制的向量移动指令 |
CN104937538A (zh) * | 2013-01-23 | 2015-09-23 | 国际商业机器公司 | 向量生成掩码指令 |
US9513917B2 (en) | 2011-04-01 | 2016-12-06 | Intel Corporation | Vector friendly instruction format and execution thereof |
CN106293631A (zh) * | 2011-09-26 | 2017-01-04 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
US9619236B2 (en) | 2011-12-23 | 2017-04-11 | Intel Corporation | Apparatus and method of improved insert instructions |
US9632980B2 (en) | 2011-12-23 | 2017-04-25 | Intel Corporation | Apparatus and method of mask permute instructions |
US9658850B2 (en) | 2011-12-23 | 2017-05-23 | Intel Corporation | Apparatus and method of improved permute instructions |
CN106951214A (zh) * | 2011-09-26 | 2017-07-14 | 英特尔公司 | 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑 |
CN107168679A (zh) * | 2011-05-03 | 2017-09-15 | 高通股份有限公司 | 用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备 |
CN107220027A (zh) * | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN107851012A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 偶发加载抑制 |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
CN109508206A (zh) * | 2013-06-28 | 2019-03-22 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN109697506A (zh) * | 2017-10-20 | 2019-04-30 | 图核有限公司 | 神经网络中的处理 |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6484255B1 (en) * | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
US9513905B2 (en) * | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
US8356159B2 (en) * | 2008-08-15 | 2013-01-15 | Apple Inc. | Break, pre-break, and remaining instructions for processing vectors |
US9110802B2 (en) * | 2010-11-05 | 2015-08-18 | Advanced Micro Devices, Inc. | Processor and method implemented by a processor to implement mask load and store instructions |
US8725989B2 (en) * | 2010-12-09 | 2014-05-13 | Intel Corporation | Performing function calls using single instruction multiple data (SIMD) registers |
US8688957B2 (en) | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
US20120185670A1 (en) * | 2011-01-14 | 2012-07-19 | Toll Bret L | Scalar integer instructions capable of execution with three registers |
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
WO2013095515A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
US9513918B2 (en) * | 2011-12-22 | 2016-12-06 | Intel Corporation | Apparatus and method for performing permute operations |
CN116414459A (zh) * | 2011-12-23 | 2023-07-11 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
WO2013095668A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing vector packed compression and repeat |
WO2013095611A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for performing a permute operation |
WO2013095661A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value |
CN104011650B (zh) * | 2011-12-23 | 2017-09-19 | 英特尔公司 | 使用输入写掩码和立即数从源写掩码寄存器在目的地写掩码寄存器中设置输出掩码的系统、装置和方法 |
CN114721721A (zh) * | 2011-12-23 | 2022-07-08 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
US9448765B2 (en) * | 2011-12-28 | 2016-09-20 | Intel Corporation | Floating point scaling processors, methods, systems, and instructions |
US9665368B2 (en) * | 2012-09-28 | 2017-05-30 | Intel Corporation | Systems, apparatuses, and methods for performing conflict detection and broadcasting contents of a register to data element positions of another register |
US9411584B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
US9411592B2 (en) * | 2012-12-29 | 2016-08-09 | Intel Corporation | Vector address conflict resolution with vector population count functionality |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9990202B2 (en) | 2013-06-28 | 2018-06-05 | Intel Corporation | Packed data element predication processors, methods, systems, and instructions |
US9645820B2 (en) * | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
GB2519107B (en) * | 2013-10-09 | 2020-05-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing speculative vector access operations |
GB2523823B (en) * | 2014-03-07 | 2021-06-16 | Advanced Risc Mach Ltd | Data processing apparatus and method for processing vector operands |
GB2528115B (en) * | 2014-07-11 | 2021-05-19 | Advanced Risc Mach Ltd | Dynamic saving of registers in transactions |
US10324768B2 (en) * | 2014-12-17 | 2019-06-18 | Intel Corporation | Lightweight restricted transactional memory for speculative compiler optimization |
US9569127B2 (en) | 2014-12-29 | 2017-02-14 | International Business Machines Corporation | Computer instructions for limiting access violation reporting when accessing strings and similar data structures |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US20170109093A1 (en) * | 2015-10-14 | 2017-04-20 | International Business Machines Corporation | Method and apparatus for writing a portion of a register in a microprocessor |
US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
US10019262B2 (en) * | 2015-12-22 | 2018-07-10 | Intel Corporation | Vector store/load instructions for array of structures |
US20170192782A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Aggregate Gather and Stride |
EP3602278B1 (en) | 2017-03-20 | 2022-09-28 | Intel Corporation | Systems, methods, and apparatuses for tile matrix multiplication and accumulation |
WO2018186763A1 (en) * | 2017-04-06 | 2018-10-11 | Intel Corporation | Vector compress2 and expand2 instructions with two memory locations |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US11789734B2 (en) * | 2018-08-30 | 2023-10-17 | Advanced Micro Devices, Inc. | Padded vectorization with compile time known masks |
CN111381876B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | move指令译码方法、数据移动方法、译码器及数据存取装置 |
US11847463B2 (en) * | 2019-09-27 | 2023-12-19 | Advanced Micro Devices, Inc. | Masked multi-lane instruction memory fault handling using fast and slow execution paths |
US11842200B2 (en) * | 2019-09-27 | 2023-12-12 | Advanced Micro Devices, Inc. | Multi-modal gather operation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511210A (en) * | 1992-06-18 | 1996-04-23 | Nec Corporation | Vector processing device using address data and mask information to generate signal that indicates which addresses are to be accessed from the main memory |
US20040054879A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for parallel table lookup using SIMD instructions |
CN1983235A (zh) * | 2005-11-22 | 2007-06-20 | 英特尔公司 | 设置向量屏蔽的技术 |
US20070143575A1 (en) * | 2005-12-21 | 2007-06-21 | Stephen Jourdan | Flow optimization and prediction for VSSE memory operations |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
US5185871A (en) * | 1989-12-26 | 1993-02-09 | International Business Machines Corporation | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions |
US5577200A (en) * | 1994-02-28 | 1996-11-19 | Intel Corporation | Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system |
US6076153A (en) * | 1997-12-24 | 2000-06-13 | Intel Corporation | Processor pipeline including partial replay |
US6052769A (en) * | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6173393B1 (en) | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
US6484255B1 (en) | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
US6446198B1 (en) | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
US6523108B1 (en) * | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
EP1230589A4 (en) | 2000-05-05 | 2008-03-19 | Ruby B Lee | METHOD AND SYSTEM FOR PERFORMING PERMUTATIONS USING MODIFIED OMEGA AND EXCHANGE BASED PERMUTATION INSTRUCTIONS |
WO2001089098A2 (en) | 2000-05-05 | 2001-11-22 | Lee Ruby B | A method and system for performing permutations with bit permutation instructions |
CN1253786C (zh) | 2002-10-18 | 2006-04-26 | 华为技术有限公司 | 一种数字信号处理器程序的加载方法 |
US7043518B2 (en) * | 2003-07-31 | 2006-05-09 | Cradle Technologies, Inc. | Method and system for performing parallel integer multiply accumulate operations on packed data |
GB2409061B (en) | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | Table lookup operation within a data processing system |
US7464255B1 (en) * | 2005-07-28 | 2008-12-09 | Advanced Micro Devices, Inc. | Using a shuffle unit to implement shift operations in a processor |
US8700884B2 (en) | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
US20090172348A1 (en) * | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
-
2007
- 2007-12-27 US US12/005,575 patent/US9529592B2/en not_active Expired - Fee Related
-
2008
- 2008-12-08 DE DE102008061062A patent/DE102008061062A1/de not_active Ceased
- 2008-12-26 CN CN2008101898632A patent/CN101488084B/zh not_active Expired - Fee Related
- 2008-12-26 CN CN201210457442.XA patent/CN102937890B/zh not_active Expired - Fee Related
-
2013
- 2013-03-11 US US13/793,529 patent/US10120684B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511210A (en) * | 1992-06-18 | 1996-04-23 | Nec Corporation | Vector processing device using address data and mask information to generate signal that indicates which addresses are to be accessed from the main memory |
US20040054879A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for parallel table lookup using SIMD instructions |
CN1983235A (zh) * | 2005-11-22 | 2007-06-20 | 英特尔公司 | 设置向量屏蔽的技术 |
US20070143575A1 (en) * | 2005-12-21 | 2007-06-21 | Stephen Jourdan | Flow optimization and prediction for VSSE memory operations |
Cited By (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9513917B2 (en) | 2011-04-01 | 2016-12-06 | Intel Corporation | Vector friendly instruction format and execution thereof |
US11740904B2 (en) | 2011-04-01 | 2023-08-29 | Intel Corporation | Vector friendly instruction format and execution thereof |
US11210096B2 (en) | 2011-04-01 | 2021-12-28 | Intel Corporation | Vector friendly instruction format and execution thereof |
US10795680B2 (en) | 2011-04-01 | 2020-10-06 | Intel Corporation | Vector friendly instruction format and execution thereof |
CN103718157A (zh) * | 2011-04-01 | 2014-04-09 | 英特尔公司 | 使用掩码寄存器跳转的系统、装置和方法 |
CN103718157B (zh) * | 2011-04-01 | 2017-05-24 | 英特尔公司 | 使用掩码寄存器跳转的系统、装置和方法 |
US10754653B2 (en) | 2011-05-03 | 2020-08-25 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
CN107168679A (zh) * | 2011-05-03 | 2017-09-15 | 高通股份有限公司 | 用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备 |
CN106293631B (zh) * | 2011-09-26 | 2020-04-10 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
CN106951214A (zh) * | 2011-09-26 | 2017-07-14 | 英特尔公司 | 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑 |
CN103827813A (zh) * | 2011-09-26 | 2014-05-28 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
CN103827813B (zh) * | 2011-09-26 | 2016-09-21 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
CN106293631A (zh) * | 2011-09-26 | 2017-01-04 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
CN106951214B (zh) * | 2011-09-26 | 2019-07-19 | 英特尔公司 | 用于向量加载/存储操作的处理器、系统、介质和方法 |
US9747101B2 (en) | 2011-09-26 | 2017-08-29 | Intel Corporation | Gather-op instruction to duplicate a mask and perform an operation on vector elements gathered via tracked offset-based gathering |
CN104011647A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 浮点舍入处理器、方法、系统和指令 |
CN104011647B (zh) * | 2011-12-22 | 2018-06-15 | 英特尔公司 | 浮点舍入处理器、方法、系统和指令 |
CN104011670A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
CN104011670B (zh) * | 2011-12-22 | 2016-12-28 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
US10209986B2 (en) | 2011-12-22 | 2019-02-19 | Intel Corporation | Floating point rounding processors, methods, systems, and instructions |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
CN107220027A (zh) * | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
US11354124B2 (en) | 2011-12-23 | 2022-06-07 | Intel Corporation | Apparatus and method of improved insert instructions |
US9658850B2 (en) | 2011-12-23 | 2017-05-23 | Intel Corporation | Apparatus and method of improved permute instructions |
US10719316B2 (en) | 2011-12-23 | 2020-07-21 | Intel Corporation | Apparatus and method of improved packed integer permute instruction |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
CN104115114A (zh) * | 2011-12-23 | 2014-10-22 | 英特尔公司 | 经改进的提取指令的装置和方法 |
US9632980B2 (en) | 2011-12-23 | 2017-04-25 | Intel Corporation | Apparatus and method of mask permute instructions |
US10474459B2 (en) | 2011-12-23 | 2019-11-12 | Intel Corporation | Apparatus and method of improved permute instructions |
US9619236B2 (en) | 2011-12-23 | 2017-04-11 | Intel Corporation | Apparatus and method of improved insert instructions |
US11275583B2 (en) | 2011-12-23 | 2022-03-15 | Intel Corporation | Apparatus and method of improved insert instructions |
US11347502B2 (en) | 2011-12-23 | 2022-05-31 | Intel Corporation | Apparatus and method of improved insert instructions |
US9588764B2 (en) | 2011-12-23 | 2017-03-07 | Intel Corporation | Apparatus and method of improved extract instructions |
US10459728B2 (en) | 2011-12-23 | 2019-10-29 | Intel Corporation | Apparatus and method of improved insert instructions |
US10467185B2 (en) | 2011-12-23 | 2019-11-05 | Intel Corporation | Apparatus and method of mask permute instructions |
CN104011653B (zh) * | 2011-12-29 | 2017-09-15 | 英特尔公司 | 打包数据操作掩码比较处理器、方法、系统 |
CN104011653A (zh) * | 2011-12-29 | 2014-08-27 | 英特尔公司 | 打包数据操作掩码比较处理器、方法、系统及指令 |
CN104603746A (zh) * | 2012-09-28 | 2015-05-06 | 英特尔公司 | 由读和写掩码控制的向量移动指令 |
CN104603746B (zh) * | 2012-09-28 | 2018-03-02 | 英特尔公司 | 由读和写掩码控制的向量移动指令 |
CN104937538B (zh) * | 2013-01-23 | 2018-09-14 | 国际商业机器公司 | 向量生成掩码指令 |
CN104937538A (zh) * | 2013-01-23 | 2015-09-23 | 国际商业机器公司 | 向量生成掩码指令 |
CN104008021A (zh) * | 2013-02-22 | 2014-08-27 | Mips技术公司 | 针对多数据体系结构的精确的异常信号发送 |
CN109508206A (zh) * | 2013-06-28 | 2019-03-22 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN109508206B (zh) * | 2013-06-28 | 2023-08-29 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN107851012B (zh) * | 2015-07-31 | 2022-06-10 | Arm 有限公司 | 偶发加载抑制 |
CN107851012A (zh) * | 2015-07-31 | 2018-03-27 | Arm 有限公司 | 偶发加载抑制 |
CN109697506A (zh) * | 2017-10-20 | 2019-04-30 | 图核有限公司 | 神经网络中的处理 |
CN109697506B (zh) * | 2017-10-20 | 2023-07-14 | 图核有限公司 | 神经网络中的处理 |
Also Published As
Publication number | Publication date |
---|---|
US20130191615A1 (en) | 2013-07-25 |
CN102937890A (zh) | 2013-02-20 |
CN102937890B (zh) | 2016-01-20 |
US20090172365A1 (en) | 2009-07-02 |
US9529592B2 (en) | 2016-12-27 |
CN101488084B (zh) | 2013-01-02 |
US10120684B2 (en) | 2018-11-06 |
DE102008061062A1 (de) | 2009-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101488084B (zh) | 用于执行屏蔽加载和存储操作的设备、方法和系统 | |
US9600281B2 (en) | Matrix multiplication operations using pair-wise load and splat operations | |
US8650240B2 (en) | Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture | |
US10514912B2 (en) | Vector multiplication with accumulation in large register space | |
US7340495B2 (en) | Superior misaligned memory load and copy using merge hardware | |
KR101300431B1 (ko) | 내적 연산을 수행하기 위한 명령 및 논리 | |
KR101166611B1 (ko) | 프로세서에서의 효율적인 병렬 부동 소수점 예외 처리 | |
RU2656730C2 (ru) | Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой | |
US8577950B2 (en) | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture | |
CN104919416A (zh) | 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑 | |
US20130151822A1 (en) | Efficient Enqueuing of Values in SIMD Engines with Permute Unit | |
CN104915181A (zh) | 条件存储器错误帮助抑制 | |
US9965276B2 (en) | Vector operations with operand base system conversion and re-conversion | |
EP3757769B1 (en) | Systems and methods to skip inconsequential matrix operations | |
CN107003854B (zh) | 提供向量包装元组交叉比较功能的方法、装置、指令和逻辑 | |
CN102999315A (zh) | 用于处理文本串的指令和逻辑 | |
KR20120099236A (ko) | 단일 명령어에서 시프트 및 배타적 or 연산을 수행하는 방법 및 장치 | |
TW201331828A (zh) | 降低於一處理器之積和熔加運算(fma)單元中之功率消耗的技術 | |
US7945766B2 (en) | Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file | |
EP4020169A1 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130102 Termination date: 20191226 |
|
CF01 | Termination of patent right due to non-payment of annual fee |