CN101488084A - 执行屏蔽加载和存储操作的指令和逻辑 - Google Patents

执行屏蔽加载和存储操作的指令和逻辑 Download PDF

Info

Publication number
CN101488084A
CN101488084A CN 200810189863 CN200810189863A CN101488084A CN 101488084 A CN101488084 A CN 101488084A CN 200810189863 CN200810189863 CN 200810189863 CN 200810189863 A CN200810189863 A CN 200810189863A CN 101488084 A CN101488084 A CN 101488084A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
vector
data
mask
instruction
plurality
Prior art date
Application number
CN 200810189863
Other languages
English (en)
Other versions
CN101488084B (zh )
Inventor
B·瓦伦丁
B·艾特顿
D·奥伦斯蒂恩
Z·斯佩伯
Original Assignee
英特尔公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions; instructions using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using guard
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

在一个实施例中,提供逻辑以用于接收和执行屏蔽移动指令以根据针对该指令的屏蔽信息将矢量数据元素从源位置传送到目的地位置,该矢量数据元素包含多个压缩数据元素。还描述了其他实施例并且要求保护这些其他实施例。

Description

执行屏蔽加载和存储操作的指令和逻辑

技术领域

本发明涉及支持屏蔽(mask)操作的逻辑、处理器及系统。背景技术

随着处理器技术的进步,也不断生成新代码在具有这些处理器的机器上运行。用户一般对他们的计算机,不管其在用的软件类型,期望和需要更高性能。可能问题产生自实际在处理器内执行的这些类型的指令和操作。基于所需要的电路的类型和/或操作的复杂性,某些类型的操作会需要更多时间才能完成。这提供了优化某些复杂操作在处理器内执行的方式的机会。

媒体应用是微处理器开发的驱动力。因此,显示图像和播放音频和视频数据(通称为内容)已成为目前的计算装置越来越流行的应用。此类操作是计算密集的,但是提供高级别的数据并行性,可以通过采用多种数据存储装置(例如单指令多数据(SIMD)寄存器)的有效的实现来利用这种高级别的数据并行性。许多目前的体系结构还需要多个操作、指令或子指令(常常称为"微操作"或"Mops")来对多个操作数执行多种数学运算或数据传输操作,从而减小了吞吐量并增加了执行这些操作所需的时钟周期数。

在SIMD或矢量化操作中常常使用屏蔽,以使得程序员能够屏蔽矢量的某个部分。它广泛地应用于条件4喿作、矢量化循环的开始/结束或短矢量支持。矢量数据的屏蔽加载和存储是非常复杂的操作,通常需要许多单独指令和时钟周期以用于执行。在此类操作期间,完全不

得执行矢量化加载/存储操作的一些部分("被屏蔽"部分)。因为存储器操作通常以块(例如加载128位、存储128位)来执行,所以支持屏蔽操作以合理性能进行,不需要参考屏蔽来进行块加载,变得非常棘手。

由于未对准的加载、页/分段故障、数据断点支持等,使得使用例

如基于Intel⑧体系结构(IA-32)的处理器的处理器体系结构来执行屏蔽加载和存储甚为更加棘手。例如,当执行128位屏蔽加载时,可能是该数据的一部分位于一个页中而另一部分位于另 一页中。如果这些页其中之一不存在,而恰好属于此页的部分未被屏蔽,则会产生页故障。因此,目前的体系结构不足以解决有效执行屏蔽加载和存储操作。相反此类技术需要很多处理周期,并且可能导致处理器或系统为执行这些被屏蔽的操作而耗费不必要的功率。

发明内容

根据本发明的一个方面,提供一种设备,包括:逻辑,其用于接收和执行屏蔽移动指令以将矢量数据元素从源位置传送到目的地位置,所述矢量数据元素包含多个压缩数据元素,其中所述屏蔽移动指令要根据矢量屏蔽寄存器中的屏蔽信息来执行。

根据本发明的另一个方面,提供一种方法,包括:响应系统的处理器中执行矢量屏蔽移动指令,从所述系统的第一存储装置获取包含多个压缩值的数据,以及将所述数据存储在所述系统的目的地存储装置中。

根据本发明的又一个方面,提供一种其上存储有指令的机器可读媒体,所述指令在被机器执行时使得所述机器执行一种方法,所述方法包括:响应所述指令的执行,择机性地执行全宽度移动操作以从第一存储装置获取包含多个压缩值的矢量数据元素,以及将所述矢量数据元素存储在目的地存储装置中,其中所述指令是根据屏蔽的矢量屏蔽移动指令。

根据本发明的又一个方面,提供一种系统,包括:处理器,其包括执行单元,所述执行单元用于执行屏蔽移动指令以根据矢量屏蔽寄

7存器中的屏蔽信息来将矢量数据元素从源存储装置传送到目的地存

储装置中,所述矢量数据元素包含多个压缩数据元素;寄存器文件,其包含多个各用于存储矢量数据元素的矢量寄存器和用于存储针对所述屏蔽移动指令的屏蔽的控制寄存器;以及存储緩冲器,其包含多个项目,所述多个项目各用于存储待处理指令、目的地标识符、源标识符以及在所述待处理指令是屏蔽存储指令的情况下的来自所述屏蔽的屏蔽数据;以及耦合到所述处理器的动态随机存取存储器(DRAM )。

附图说明

图l是根据本发明的一个实施例的、用包括用于执行屏蔽加载和存储操作的指令的逻辑的处理器而形成的示范计算机系统的框图。

图2是根据本发明的一个实施例的、执行屏蔽加载操作的方法的流程图。

图3是根据本发明的另一个实施例的、用于执行屏蔽加载操作的方法的流程图。

图4是根据本发明的一个实施例的、执行屏蔽存储操作的方法的流程图。

图5是根据本发明的另一个实施例的、执行屏蔽存储操作的方法的流程图。

图6是根据本发明的一个实施例的处理器的框图。图7是根据本发明的一个实施例的系统的框图。

具体实施方式

在现代处理器中,使用许多不同的执行单元来处理和执行多种代码和指令。并非所有指令被创建成均等的, 一些指令完成的比较快,而另一些指令可能花费非常多的时钟周期。指令的吞吐越快,处理器的整体性能越好。但是,有某些指令存在更大的复杂性,并且在执行时间和处理器资源方面要求更多。例如有浮点指令、加载/存储操作、数据移动等。

由于越来越多的计算机系统用于因特网和多媒体应用,所以日趋

引入了额外的处理器支持。例如,单指令多数据(SIMD)整衍浮点指令和流式SIMD扩展(SSE)是减少执行特定程序任务所需指令的总数的指令,从而又可以减少功耗。这些指令可以通过并行地对多个数据元素进行操作来加速软件性能。因此,可以在包括视频、语音和图<象/照片处理的广泛范围的应用中实现性能增益。

在多种实施例中,可以提供指令集中的单独指令来使得屏蔽加载和存储操作能够更有效地执行。更确切地来说,实施例可以提供屏蔽加载和存储指令的多种风格,每种风格能够将压缩的SIMD数据从存

储器加载到所选的存储位置或将压缩SIMD数据从所选的源位置存储到存储器中。实施例可以提供这些指令的多种风格,以便能够往返于系统内的不同大小的源和目的地存储装置加载和存储具有不同位宽的压缩值。总之,这些指令可以被视为是有条件的SIMD压缩加载和存储指令,使得能够基于与压缩数据元素关联的屏蔽值来有条件地加载或存储压缩数据元素。

图l是根据本发明的实施例的、以包括用于执行屏蔽移动指令的指令单元的处理器来形成的示范计算机系统的框图。系统100包括诸

如处理器102的组件,其利用如本发明的(例如本文描述的实施例中的)包括用于执行算法以处理屏蔽移动操作的逻辑的执行单元。系统100是基于可从英特尔公司(Santa Clara, California)获得的PENTIUM® 4、 PENTIUM® Dual画Core、 CoreTM 2 Duo and Quad、XeonTM、 Itanium®, XScaleTM和/或StrongARMTM微处理器的处理系统的代表,但是也可以使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,系统100可以执行可从微软公司(Redmond, Washington)获得的WindowsTM操作系统版本,但是也可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或和图形用户界面。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。本发明的备选实施例可以用于例如手持装置和嵌入式应用的其他装置中。

处理器102包括一个或多个根据本发明实施例的执行算法以对SIMD数据元素执行屏蔽加载和存储操作的执行单元108。系统100是集线器体系结构的示例。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或举例如数字信号处理器等的任何其他处理器装置。处理器102耦合到处理器总线110,处理器总线IIO可在处理器102与系统100中的其他组件之间传送数据信号。

在一个实施例中,处理器102包括1级(Ll )内部高速緩存存储器104。 3见体系结构而定,处理器102可以具有单个内部高速緩存或多级内部高速緩存。或者,在另一个实施例中,高速緩存存储器可以驻留在处理器102外部。其他实施例还可包括内部和外部高速緩存的组合,视具体的实现和需求而定。寄存器文件106可以将不同类型的数据存储在多种寄存器中,包括整数寄存器、浮点寄存器、矢量或扩展的寄存器、状态寄存器和指令指针寄存器。

执行单元108 (包括用于执行整数和浮点运算的逻辑)也驻留在处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)只读存储器(ROM)。对于此实施例,执行单元108包括用于处理压缩指令集109的逻辑。在一个实施例中,压缩指令集109包括多种屏蔽加载和存储指令的实例以用于有效处理此类操作。通过在通用处理器102的指令集中包括压缩指令集109、且具有用于执行这些指令的关联电路,可以在通用处理器102中使用压缩数据来执行许多多媒体应用所用的操作。因此,可以通过使用处理器的全宽度的数据总线来用于对压缩数据执行那些屏蔽加载和存储操作,可加速并更有效地执行许多多媒体应用。这可以不需要在处理器的数据总线上传送更小单元的数据来一次一个数据元素地执行一个或多个操作。

执行单元108的备选实施例还可用在微控制器、嵌入式处理器、 图形装置、数字信号处理器(DSP)和其他类型的逻辑电路中。系统 100包括存储器120。存储器120可以是动态随机存取存储器(DRAM) 装置、静态随机存取存储器(SRAM)装置、闪存装置或其他存储器 装置。存储器120可以存储处理器102可执行的由数据信号所表示的 指令和/或数据。

系统逻辑芯片116耦合到处理器总线IIO和存储器120。图示实 施例中的系统逻辑芯片116是存储器控制器集线器(MCH)。处理器 102可以经由处理器总线110与MCH 116通信。MCH 116提供至存储 器120的高带宽存储器路径118以用于指令和数据存储以及用于存储 图形命令、数据和紋理。MCH116用于在处理器102、存储器120与 系统100中的其他组件之间引导数据信号,以及用于在处理器总线 110、存储器120和集线器接口总线122之间桥接数据信号。在一些实 施例中,系统逻辑芯片116可以提供用于耦合到图形控制器112的图 形端口。 MCH116通过存储器接口耦合到存储器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/0总线。 一些示例是音频控制器、固件集 线器(闪速BIOS) 128、无线收发器126、数据存储装置124、包含

用户输入和键盘接口的传统i/o控制器、串行扩展端口 (例如通用串

行总线(USB))和网络控制器134。数据存储装置124可以是硬盘驱 动器、软盘驱动器、CD-ROM装置、闪存装置或其他大容量存储装置。 本发明的范围不限于此方面,屏蔽移动指令还可以应用于不同的 数据宽度。例如,可以获取不同位宽的压缩值并将其加载或存储。例 如,可以从与源指示符对应的初始存储器位置获取128位或256位的

ii值。在这些矢量数据值内,可存在多个压缩数据元素或字段。例如,

较大矢量数据元素内的这些单独数据元素可以采用双字(dword)、四 字(qword)的形式,当然更小和更大数据元素也是可以的。此外, 还可以使用不同的数据类型,例如单精度和双精度整数和浮点数据类 型。因此,在一些实现中,可存在压缩单并fr度(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位矢量,可存在这些凄t据类型的数量的两倍。 要认识到此类压缩数据格式可以进一步扩展到其他寄存器长度,例如 扩展到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,其中示出根据本发明的一个实施例的矢量屏蔽加 载和存储指令的多种风格的列表。如表l所示,其中示出多个单独指

令,其每个用于对特定数据类型执行给定的条件的SIMD压缩加载或 存储操作。每个指令还对应有操作码(opcode )。指令各有指令名称(例 如VMASKMOVPS)后跟目的地指示符和源指示符的形式。例如,表 1的第一个指令(即VMASKMOVPS )能够从源位置(即存储器的128 位(m128 ))将压缩单精度值加载到目的地位置(即XMM1寄存器)。 此外,此加载操作要使用预定的可用作矢量屏蔽寄存器的位置(例如 XMM0)中的屏蔽来执行。注意术语YMM用于标识较宽宽度的寄存 器,例如256位。

表1

<table>table see original document page 14</column></row> <table>因为从存储器单独地加载矢量内的每个单独压缩数据元素或其

他SIMD数据元素的屏蔽力。载操作可能由于需要检查、分支和许多小(例如32位)加载操作而实现起来相对欠缺效率,所以实施例可以 择机性地执行全宽度加载。更确切地来说,为了避免压缩数据元素的 多个单独加载,可以例如从常规回写(WB )存储器择机性地执行全 加载(例如,128位(B )或256B ),即4吏其中的一部分净皮屏蔽(这在 体系结构上视为不执行的)。因为从WB存储器位置加载常常可以采 用择机性方式(包括预提取等)来实现,所以这样是可行。但是为了 避免由于从屏蔽位置读取数据而带来的副作用,可釆取附加的步骤。 从屏蔽位置读取数据的副作用的示例包括安全性问题、非确定性行为 等。因此,屏蔽加载将返回零于被屏蔽位置中。因此,屏蔽加载操作 的基本流程是全加载(128B, 256B)、跟着是与屏蔽寄存器(例如, YMMO/XMMO符号位)执行AND运算以将所有屏蔽位置置零。

屏蔽加载/存储操作可以使用微代码(ucode)处理来以非择机性 方式实现。但是为了获得性能好处,硬件可以发出择机性的全宽度加 载(或存储)。如果发生故障(真实的或其他),则可以执行ucode处 理程序。例如,如果加载跨页末(或分段末),则只要该部分未被屏 蔽就可能产生异常,或者因对不可高速緩存的数据的操作可产生异 常。在此类情况中,可能产生故障(页故障、分段违规、数据断点等), 因此硬件生成ucode异常。Ucode异常处理程序来检查是否发生由屏 蔽加载指令的异常。如果是另外的指令中发生异常,则处理程序可以 执行标准的异常流程。否则,它使用慢ucode重新开始屏蔽加载指令 的执行,跳过屏蔽位置。相似地,如果硬件检查到存储器类型是不可 高速緩存的(UC),并由此无法执行择机性加载,则也会经过异常处 理程序来慢速执行它。

现在参考图2,其中示出根据本发明的一个实施例的,执行屏蔽 加载操作的方法的流程图。方法200可以由在处理器中接收矢量屏蔽 加载指令开始(框220)。例如,在许多实现中,可在处理器中接收用 户级指令(例如给定处理器指令集体系结构(ISA)的指令集中的指 令)。除了此指令外,与该指令一起的还可有源和目的地指示符被接

15收。

再次参考图2,在框225处,可以设置与该指令关联的标志。更 确切地来说,可以设置屏蔽加载标志以指示对应的指令是矢量屏蔽加 载指令。下文将进一步论述此标志的使用。然后在框230处,可以执 行全宽度加载操作,并可将加载的数据存储到临时存储装置中。更确 切地来说,全宽度加载操作可以是择机性加载操作,其中可对应于存 储器中的位置的源位置处的数据可被择机性地加载到处理器的临时 存储装置中。例如,该数据可以被加载到不可见临时寄存器中。

再次参考图2,接下来可确定该操作执行期间是否发生异常(菱 形框235)。例如,如果操作期间应该发生了故障(例如页故障、分#爻 违规、数据断点等),则可生成异常。如果没有,则控制传递到框240, 其中可实现优化的屏蔽加载操作。

再次参考图2,如果未检测到异常,则控制传递到框240,其中 可以在加载的数据和与矢量屏蔽加载指令关联的屏蔽值之间执行传 播AND运算。更确切来说,在一些实施例中,屏蔽值可以对应多个 位,每个位与加载的数据中不同压缩数据元素关联。在一个实施例中, 可以由屏蔽寄存器的每个dword( PS形式)的最高有效位或每个qword (PD形式)的最高有效位来计算包含屏蔽值的屏蔽。对于该屏蔽中 的位的每个,如果设置为"0",则将不发生对应的加载,且对应目的 地的字段设置为0。或者,在一些实现中,对于被屏蔽的操作数,可 保持不接触目的地。通过执行传播AND,如果对应的位具有"1"值, 则结果与数据元素相同。然后可将此传播AND运算的结果存储在目 的地存储装置中(框245)。例如,在一些实施例中,目的地存储装置 可以是矢量屏蔽加载指令的目的地指示符中所指示的扩展寄存器。目 的地寄存器可以对应可见寄存器,例如扩展多媒体寄存器(例如128 位或更大的256位寄存器)。

再次参考图2,如果4企测到异常,则控制传递到菱形框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]。相似地,源位置可以是存储器分段的低阶位置,例如 mcm(K

控制传递到菱形框278,其中可确定该压缩数据元素的对应屏蔽 指示符是否具有第一值。例如,第一值可以对应l值,以指示给定的 数据元素将不被屏蔽。如果不具有第一值,且相反与该对应字段关联 的屏蔽指示符具有零值,则可以对其目的地寄存器的这些位全写入零

(框280)。相反如果在菱形框278处确定屏蔽指示符是第一值的(例 如,1值),则执行加载操作以将压缩值从源位置加载到目的地字段中

(框285 )。因此,可以发出加载操作以能够从源位置读取给定的压缩 数据元素,并将其加载到目的地位置的给定部分中。

从框280和285,控制可传递到菱形框290,其中可确定加载到 目的地位置是否已完成。如果是如此,则方法270结束。否则,控制 传递到框295,其中可递增源位置和目的地位置。然后控制传递回菱 形框278以进行后续执行,从而能够将矢量数据元素的其他压缩数据 元素加载到目的地位置(如果这些压缩数据元素未被屏蔽的话)。虽 然是结合图3的实施例中的此特定实现来示出的,但是本发明的范围 并不局限于此方面。

现在参考表2,其中示出根据本发明的一个实施例的,用于执行 屏蔽加载操作的伪代码。更确切来说,表2示出用于执行压缩单精度 凄t据元素从存储器位置(即可mem-mem+28)至目的地位置(即DEST [255:0])的256位加载的伪代码。

表2

DEST[31:0] = IF (YMM0[31]) Load—32(mem) ELSE 0

18DEST[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的情况下才执行的多个单独加载操作。否 则,不执行加载且以O填充目的地字段。因此,此加载操作序列从低 地址到高地址排序。注意,任何故障可能导致从开始位置重新开始的 序列,从而相同的地址可能被读或写多次。

屏蔽存储指令的基本操作与上文描述的屏蔽加载相似。总之,可 假定存储将不发生故障,全宽度存储操作的执行可根据屏蔽继续进 行。在有故障(例如页故障,包括伪故障和UC存储)的情况中,可 以激活ucode来慢速地处理它。屏蔽加载与屏蔽存储操作之间的差异 在于,为处理器的存储器子系统提供屏蔽值,以使得执行结束(即,

"高级存储引退")时,仅在未屏蔽的区域中更新高速緩存存储器或 其他目的地存储装置。这通过在存储器子系统中移动屏蔽位的)iop流 来实现。此外,因为存储在存储器子系统中的数据的部分潜在地不是 有效的(即,受到屏蔽的),所以在等待屏蔽存储操作的执行时该数 据无法使用(例如由于加载存储正向操作)。

现在参考图4,其中示出根据本发明的一个实施例的,用于执行 屏蔽存储操作的方法的流程图。方法300可以由在处理器中接收矢量 屏蔽存储指令开始(框320)。例如,在许多实现中,可以在处理器中 接收用户级指令。除了此指令外,与该指令一起的还可有源和目的地 指示符被接收。

仍参考图4,在框325处,可以从屏蔽寄存器提取与该指令关联的屏蔽。例如,如上所述,可以提取各与矢量数据元素的给定数据元 素关联的特定位。此外,还可以设置与该指令关联的标志。更确切地 来说,可以设置屏蔽存储标志以指示对应的指令是矢量屏蔽存储指

令。下文将进一步论述此标志的使用。然后在框330处,可以执行全 宽度存储操作。更确切来说,全宽度存储操作可以在处理器的存储器 子系统(例如存储緩沖器、存储器排序緩沖器或其他此类存储器子系 统组件)中生成项目。该项目可以包括微操作(即,存储操作),还 有要将数据存储在的目的地地址和源地址,以及提取的屏蔽值。

仍参考图4,接下来可确定该操作执行期间是否发生异常。例如, 如果操作期间应该发生了故障(例如页故障、分段违规、数据断点等), 则可生成异常。因此,在菱形框335处,可以确定是否发生异常。如 果没有,则控制传递到框340,其中可实现优化的屏蔽存储操作。

更确切来说,可以使用屏蔽值将矢量数据元素的未屏蔽部分的部 分数据写入到目的地存储装置(框340X即,对于存储器子系统中的 矢量屏蔽信息的具有第一值(例如逻辑l值)的每个位,可以将对应 矢量数据元素从其源位置写入到目的地位置,目的地位置可以是耦合 到存储器子系统的高速緩存存储器,然后正好可以将其再发送到最终 的目的地位置(例如,主存储器)。

仍参考图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,其中可以将源和目的地位置设置为最低有效字段。例如, 假定矢量屏蔽存储指令的目的地指示符是指向存储器分段的,所以目 的地位置可以设置为该分段内的最低数据元素字段,例如位memO。 相似地,源位置可以是源寄存器(例如寄存器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中的相对筒化-现图来示出,以图示结合上文描述的屏

22蔽加载和存储操作使用的多种特征。

如图6所示,处理器400包括前端单元410,前端单元410可用于提取要执行的宏指令,并为在处理器中后来的使用对它们进行准备。例如,前端单元410可以包括指令预提取器、指令解码器和跟踪高速緩存,连同微代码存储装置以及juop存储装置。指令预提取器可以从存储器提取宏指令,并将它们馈送到指令解码器以将它们解码成基元,即供处理器执行的jiop。跟踪高速缓存可以取得解码的)iop,并将它们汇编成程序排序的序列,以便存储到宏代码存储装置中。但是,在复杂宏指令的情况中,微代码存储装置可以提供操作执行所需的juop。当然,还可以在前端单元410中实现其他组件和特征。

耦合于前端单元410与执行单元420之间的是乱序(OOO )引擎415,乱序(OOO)引擎415可用于接收微指令并为执行对它们进行准备。更确切来说,OOO引擎415可以包括多种緩沖器以对微指令流重新排序并分配执行所需的多种资源,以及将逻辑寄存器重命名到多种寄存器文件(例如寄存器文件430和扩展的寄存器文件435 )内的存储位置上。寄存器文件430可以包括用于整数和浮点运算的独立寄存器文件。扩展的寄存器文件435可以包括扩展的寄存器,例如XMM寄存器(例如,128位寄存器)和/或YMM寄存器(例如,256位寄存器),当然在一些实现中,可以将XMM寄存器提供在YMM寄存器的低阶位中。此外,控制寄存器436可以存在于扩展的寄存器文件435中,其可用于存储多种屏蔽信息。例如,对于一些屏蔽加载和存储操作,控制寄存器436可以对应XMM0或YMMO寄存器,其可以存储可从其中获取屏蔽来执行屏蔽加载和存储操作的屏蔽信息。

多种资源可以存在于执行单元420中,包括例如多种整数、浮点和SIMD逻辑单元,以及其他专门的硬件。在执行单元420中执行微指令之后,将结果提供到处理器的存储器子系统,其包括存储器排序緩冲器(MOB) 440,存储器排序緩冲器(MOB) 440可包括控制逻辑442以及力口载緩沖器444和存储緩冲器446。可以作为控制器等的MOB控制逻辑442用于控制MOB 440内的緩冲器。加载緩沖器444可以用于在加载ju op执行之前存储加载in op,以及跟踪先前加载或其他必须完成之后才能完成给定存储器操作本身的存储器操作。相似地,存储緩沖器446可以用于存储存储器操作(例如存储操作),并跟踪必须完成之后才能完成给定存储器操作本身的先前存储器操作(常常为加载)。加载緩冲器444可以存储与加载指令(例如nop)关联的多种信息,以及源和目的地位置的标识符。存储緩冲器446可以包括类似的信息,以及扩展的信息,包括要用于根据本发明实施例的屏蔽存储操作的屏蔽信息。图6中所示的有来自存储緩冲器446的项目445,项目445包含多种字段,包括juop字段A、目的地标识符字段B、源标识符字段C以及屏蔽字段D。屏蔽字段D可以包含在存储操作执行期间确定是否要将对应的压缩数据元素存储到存储器而要使用的对应屏蔽位。如图6所示,MOB440耦合到高速緩存450,在一个实施例中,高速緩存450可以是低级高速緩存(例如,Ll高速緩存),当然本发明的范围并不局限于此方面。从高速緩存450,可以利用较高级高速緩存、系统存储器等来进行数据通信。虽然是结合图6的实施例中的此特定实现来描述的,但是本发明的范围并不局限于

因此,如图6所示,处理器400的多种组件(包括例如,执行单元420和MOB 440 )可以包括用于扭^f亍根据本发明实施例的矢量屏蔽移动操作的逻辑。以此方式,为屏蔽加载和存储操作都可以提供指令集支持。此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 4妄口 594和598。

此外,芯片组590还包括将芯片组590与高性能图形引擎538耦合的接口 592。接着可以经由接口 596将芯片组590耦合到第一总线516。如图7所示,可以将多种I/0装置514和总线桥518—起耦合到第一总线516,以及总线桥518将第一总线516耦合到第二总线520。在一个实施例中,可以将多种装置耦合到第二总线520,包括有例如,键盘/鼠标522、通信装置526和诸如可以包含代码530的盘驱或其他大容量存储装置等的数据存储单元528。此外,还可以将音频I/0 524耦合到第二总线520。

可以用代码来实现实施例,并且可以将实施例存储在存储々某体上,存储々某体上存储有可用于对系统编程以执行指令的指令。该存储媒体可以包括但不限于,包括软盘、光盘、压缩盘只读存储器

(CD-ROM )、压缩盘可写的(CD-RW)和^f兹光盘的任何类型的盘、诸如只读存储器(ROM)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦可编程

25只读存储器(EPROM)、闪存、电可擦可编程只读存储器(EEPROM)、^磁卡或光卡的半导体装置、或者适用于存储电子指令的任何其他类型的媒体。

虽然结合有限数量的实施例描述了本发明,但是本领域技术人员将认识到据此有许多修改和变化。应认为所附权利要求涵盖落在本发明的真实精神和范围内的所有此类修改和变化。

Claims (25)

1. 一种设备,包括:逻辑,其用于接收和执行屏蔽移动指令以将矢量数据元素从源位置传送到目的地位置,所述矢量数据元素包含多个压缩数据元素,其中所述屏蔽移动指令要根据矢量屏蔽寄存器中的屏蔽信息来执行。
2. 如权利要求1所述的设备,还包括寄存器文件和用于存储所述屏蔽信息的控制寄存器,所述寄存器文件包含多个扩展的寄存器,所述多个扩展的寄存器各用于存储包含多个压缩数据元素的矢量数据元素。
3. 如权利要求2所述的设备,其中所述设备包括处理器,所述处理器还包括具有存储緩冲器的存储器子系统,所述存储緩冲器包含多个项目,所述多个项目各用于存储待处理指令、目的地标识符、源标识符以及在所述待处理指令是屏蔽存储指令的情况下的所述屏蔽信自
4. 如权利要求1所述的设备,其中所述屏蔽移动指令是屏蔽加载指令,所述屏蔽加载指令包含操作码、源标识符和目的地标识符,以及所述逻辑用于响应所述屏蔽加载指令而访问所述矢量屏蔽寄存器以获取所述屏蔽信息。
5. 如权利要求4所述的设备,其中所述逻辑用于访问所述矢量屏蔽寄存器中多个字段的每个字段的第一位以获取所述屏蔽信息,其中每个第 一位是针对矢量数据元素中所述多个压缩数据元素中对应的压缩数据元素的屏蔽值。
6. 如权利要求1所述的设备,其中所述屏蔽移动指令是屏蔽加载指令,以及所述逻辑用于执行择机性全宽度加载操作以获取所述矢量数据元素并将其存储到临时存储装置中,然后确定在所述执行期间是否发生异常。
7. 如权利要求6所述的设备,其中如果未发生异常,则所述逻辑执行在所述多个压缩数据元素其中之一与所述屏蔽信息的对应部分的每个之间的传播AND运算,并将所得数据存储在所述目的地位置中。
8. 如权利要求6所述的设备,其中如果发生异常,则所述逻辑使用微代码处理程序对所述矢量数据元素中未屏蔽的部分单个地执行加载梯:作以将其加载到所述目的地位置。
9. 如权利要求8所述的设备,其中所述微代码处理程序用于确定是否全部所述屏蔽信息是第二值的,以及如果不是则将未屏蔽的部分单个地加载,否则所述孩炎代码处理程序对所述目的地位置写入零值。
10. —种方法,包括:响应系统的处理器中执行矢量屏蔽移动指令,从所述系统的第一存储装置获取包含多个压缩值的数据,以及将所述数据存储在所述系统的目的地存储装置中。
11. 如权利要求IO所述的方法,还包括择机性地以全宽度加载操作获取所述数据并将其存储到临时存储装置中。
12. 如权利要求11所述的方法,还包括确定在所述全宽度加栽操作期间是否发生异常,如果是则执行处理程序以独立地获取所述多个压缩值的每个并将其存储在所述目的地存储装置中。
13. 如权利要求12所述的方法,还包括仅对所述多个压缩值中其具有的关联于所述矢量屏蔽移动指令的屏蔽信息的相应部分具有第一值的每个压缩值进行独立地获取以及存储,而其他地则对相应压缩值的目的地存储装置写零值。
14. 如权利要求IO所述的方法,还包括响应所述矢量屏蔽移动指令,择机性地执行全宽度存储操作,所述全宽度存储操作包括在存储緩沖器中存储指令字段值、源标识符、目的地标识符以及与所述矢量屏蔽移动指令关联的屏蔽信息,其中所述矢量屏蔽移动指令是矢量屏蔽存储指令。
15. 如权利要求14所述的方法,还包括确定在所述全宽度存储操作期间是否发生异常,以及如果是则执行处理程序以对所述多个压縮值的每个独立地获取并将其存储在所述目的地存储装置中。
16. 如权利要求15所述的方法,还包括仅对所述多个压缩值中其具有的所述屏蔽信息的相应部分具有第 一值的每个压缩值进行独立地获取和存储。
17. —种其上存储有指令的机器可读纟某体,所述指令在被机器执行时使得所述机器执行一种方法,所述方法包括:响应所述指令的执行,择机性地执行全宽度移动操作以从第一存储装置获取包含多个压缩值的矢量数据元素,以及将所述矢量数据元素存储在目的地存储装置中,其中所述指令是^L据屏蔽的矢量屏蔽移动指令。
18. 如权利要求17所述的机器可读媒体,其中,所述指令是矢量屏蔽加载指令以将所述矢量数据元素从由关联于所述矢量屏蔽加载指令的源标识符所指示的存储器位置加载到由关联于所述矢量屏蔽加载指令的目的地标识符所指示的存储装置中,其中所述屏蔽被存储在矢量屏蔽寄存器中。
19. 如权利要求18所述的机器可读媒体,其中所述矢量加载指令使处理器从所述第一存储装置择机性地将所述矢量数据元素加载到临时存储装置中,以及确定在所述择机性加载期间是否发生异常,以及如果未发生异常,则将所述矢量数据元素的未屏蔽部分加载到所述目的地存储装置中。
20. 如权利要求19所述的机器可读媒体,其中所述矢量屏蔽加载指令使得所述处理器能够在发生异常的情况下将所述压缩值中未屏蔽的压缩值单个地从所述第一存储装置加载到所述目的地存储装置。
21. —种系统,包括:处理器,其包括执行单元,所述执行单元用于执行屏蔽移动指令以根据矢量屏蔽寄存器中的屏蔽信息来将矢量数据元素从源存储装置传送到目的地存储装置中,所述矢量数据元素包含多个压缩数据元素;寄存器文件,其包含多个各用于存储矢量数据元素的矢量寄存器和用于存储针对所述屏蔽移动指令的屏蔽的控制寄存器;以及存储緩沖器,其包含多个项目,所述多个项目各用于存储待处理指令、目的地标识符、源标识符以及在所述待处理指令是屏蔽存储指令的情况下的来自所述屏蔽的屏蔽数据;以及耦合到所述处理器的动态随机存取存储器(DRAM)。
22. 如权利要求21所述的系统,其中所述处理器用于执行择机性全宽度加载操作以获取所述矢量数据元素并将其存储到临时存储装置,然后确定在所述执行期间是否发生异常。
23. 如权利要求22所述的系统,其中所述处理器用于在未发生异常的情况下,执行在所述多个压缩数据元素其中之一与所述屏蔽的对应部分的每个之间的传播AND运算,并将所得数据存储在所述目的地存储装置中,否则使用微代码处理程序将所述矢量数据元素的未屏蔽部分单个地从所述源存储装置加载到所述目的地存储装置中。
24. 如权利要求21所述的系统,其中所述处理器用于择机性地执行全宽度存储操作以将所述待处理指令、所述源标识符、所述目的地标识符和所述屏蔽数据存储到所述存储緩冲器。
25. 如权利要求25所述的系统,其中所述处理器用于确定在所述全宽度存储操作期间是否发生异常,以及如果是则执行处理程序以对所述多个压缩值中其具有的屏蔽数据的相应部分具有第一值的每个压缩值进行独立地获取并将其存储在所述目的地存储装置中。
CN 200810189863 2007-12-27 2008-12-26 用于执行屏蔽加载和存储操作的设备、方法和系统 CN101488084B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12005575 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
US12/005,575 2007-12-27
US12/005575 2007-12-27

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201210457442 CN102937890B (zh) 2007-12-27 2008-12-26 执行屏蔽加载和存储操作的设备和方法

Publications (2)

Publication Number Publication Date
CN101488084A true 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
CN 200810189863 CN101488084B (zh) 2007-12-27 2008-12-26 用于执行屏蔽加载和存储操作的设备、方法和系统
CN 201210457442 CN102937890B (zh) 2007-12-27 2008-12-26 执行屏蔽加载和存储操作的设备和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN 201210457442 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 (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103718157A (zh) * 2011-04-01 2014-04-09 英特尔公司 使用掩码寄存器跳转的系统、装置和方法
CN103827813A (zh) * 2011-09-26 2014-05-28 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN104011653A (zh) * 2011-12-29 2014-08-27 英特尔公司 打包数据操作掩码比较处理器、方法、系统及指令
CN104011647A (zh) * 2011-12-22 2014-08-27 英特尔公司 浮点舍入处理器、方法、系统和指令
CN104008021A (zh) * 2013-02-22 2014-08-27 Mips技术公司 针对多数据体系结构的精确的异常信号发送
CN104011670A (zh) * 2011-12-22 2014-08-27 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
CN104115114A (zh) * 2011-12-23 2014-10-22 英特尔公司 经改进的提取指令的装置和方法
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 英特尔公司 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
CN104603746B (zh) * 2012-09-28 2018-03-02 英特尔公司 由读和写掩码控制的向量移动指令
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities

Families Citing this family (32)

* Cited by examiner, † Cited by third party
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
US8131979B2 (en) * 2008-08-15 2012-03-06 Apple Inc. Check-hazard 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
CN106371804A (zh) * 2011-12-22 2017-02-01 英特尔公司 用于执行置换操作的设备和方法
CN104126170B (zh) * 2011-12-22 2018-05-18 英特尔公司 打包数据操作掩码寄存器算术组合处理器、方法、系统及指令
WO2013095611A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for performing a permute operation
US9703558B2 (en) * 2011-12-23 2017-07-11 Intel Corporation Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate
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
CN104025040B (zh) * 2011-12-23 2017-11-21 英特尔公司 用于混洗浮点或整数值的装置和方法
WO2013095668A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing vector packed compression and repeat
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
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
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
GB201317874D0 (en) * 2013-10-09 2013-11-20 Advanced Risc Mach Ltd A data processing apparatus and method for performing speculative vector access operations
GB201404037D0 (en) * 2014-03-07 2014-04-23 Advanced Risc Mach Ltd Data processing apparatus and method for processing vector operands
US20160179586A1 (en) * 2014-12-17 2016-06-23 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
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
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
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

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
JP2665111B2 (ja) * 1992-06-18 1997-10-22 日本電気株式会社 ベクトル処理装置
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
WO2001089131A3 (en) 2000-05-05 2002-06-13 Ruby B Lee A method and system for performing permutations using permutation instructions based on modified omega and flip stages
WO2001089098A3 (en) 2000-05-05 2002-06-13 Ruby B Lee A method and system for performing permutations with bit permutation instructions
US7739319B2 (en) * 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD 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
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US7404065B2 (en) 2005-12-21 2008-07-22 Intel Corporation Flow optimization and prediction for VSSE memory operations
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

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103718157A (zh) * 2011-04-01 2014-04-09 英特尔公司 使用掩码寄存器跳转的系统、装置和方法
US9513917B2 (en) 2011-04-01 2016-12-06 Intel Corporation Vector friendly instruction format and execution thereof
CN103718157B (zh) * 2011-04-01 2017-05-24 英特尔公司 使用掩码寄存器跳转的系统、装置和方法
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
CN103827813A (zh) * 2011-09-26 2014-05-28 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN106293631A (zh) * 2011-09-26 2017-01-04 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN103827813B (zh) * 2011-09-26 2016-09-21 英特尔公司 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN106951214A (zh) * 2011-09-26 2017-07-14 英特尔公司 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
CN104011670A (zh) * 2011-12-22 2014-08-27 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
CN104011647A (zh) * 2011-12-22 2014-08-27 英特尔公司 浮点舍入处理器、方法、系统和指令
CN104011647B (zh) * 2011-12-22 2018-06-15 英特尔公司 浮点舍入处理器、方法、系统和指令
CN104011670B (zh) * 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
CN104115114A (zh) * 2011-12-23 2014-10-22 英特尔公司 经改进的提取指令的装置和方法
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
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
US9588764B2 (en) 2011-12-23 2017-03-07 Intel Corporation Apparatus and method of improved extract instructions
CN104011653B (zh) * 2011-12-29 2017-09-15 英特尔公司 打包数据操作掩码比较处理器、方法、系统
CN104011653A (zh) * 2011-12-29 2014-08-27 英特尔公司 打包数据操作掩码比较处理器、方法、系统及指令
CN104603746B (zh) * 2012-09-28 2018-03-02 英特尔公司 由读和写掩码控制的向量移动指令
CN104937538A (zh) * 2013-01-23 2015-09-23 国际商业机器公司 向量生成掩码指令
CN104937538B (zh) * 2013-01-23 2018-09-14 国际商业机器公司 向量生成掩码指令
CN104008021A (zh) * 2013-02-22 2014-08-27 Mips技术公司 针对多数据体系结构的精确的异常信号发送

Also Published As

Publication number Publication date Type
US20090172365A1 (en) 2009-07-02 application
US9529592B2 (en) 2016-12-27 grant
CN102937890A (zh) 2013-02-20 application
CN102937890B (zh) 2016-01-20 grant
DE102008061062A1 (de) 2009-07-16 application
US20130191615A1 (en) 2013-07-25 application
CN101488084B (zh) 2013-01-02 grant

Similar Documents

Publication Publication Date Title
US6721866B2 (en) Unaligned memory operands
US7853778B2 (en) Load/move and duplicate instructions for a processor
US20050108312A1 (en) Bitstream buffer manipulation with a SIMD merge instruction
US20040098556A1 (en) Superior misaligned memory load and copy using merge hardware
US20140281389A1 (en) Methods and apparatus for fusing instructions to provide or-test and and-test functionality on multiple test sources
US20110153993A1 (en) Add Instructions to Add Three Source Operands
US20140095842A1 (en) Accelerated interlane vector reduction instructions
US20120011348A1 (en) Matrix Multiplication Operations Using Pair-Wise Load and Splat Operations
US20090172366A1 (en) Enabling permute operations with flexible zero control
US20090172365A1 (en) Instructions and logic to perform mask load and store operations
US20140189309A1 (en) Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US20130339649A1 (en) Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
US20140372727A1 (en) Instruction and logic to provide vector blend and permute functionality
US20140122831A1 (en) Instruction and logic to provide vector compress and rotate functionality
US20140189307A1 (en) Methods, apparatus, instructions, and logic to provide vector address conflict resolution with vector population count functionality
US20140095779A1 (en) Processing memory access instructions that have duplicate memory indices
US20150095627A1 (en) Two level re-order buffer
US20140006467A1 (en) Double rounded combined floating-point multiply and add
US20150046671A1 (en) Methods, apparatus, instructions and logic to provide vector population count functionality
US20150046672A1 (en) Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US20140189308A1 (en) Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US20140149718A1 (en) Instruction and logic to provide pushing buffer copy and store functionality
US20150261590A1 (en) Conditional memory fault assist suppression
US20140189321A1 (en) Instructions and logic to vectorize conditional loops
US20140189322A1 (en) Systems, Apparatuses, and Methods for Masking Usage Counting

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
C14 Grant of patent or utility model