CN1983235A - 设置向量屏蔽的技术 - Google Patents
设置向量屏蔽的技术 Download PDFInfo
- Publication number
- CN1983235A CN1983235A CNA2006100640836A CN200610064083A CN1983235A CN 1983235 A CN1983235 A CN 1983235A CN A2006100640836 A CNA2006100640836 A CN A2006100640836A CN 200610064083 A CN200610064083 A CN 200610064083A CN 1983235 A CN1983235 A CN 1983235A
- Authority
- CN
- China
- Prior art keywords
- vector mask
- instruction
- vector
- value
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000015572 biosynthetic process Effects 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims description 2
- 230000000873 masking effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000032696 parturition Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30181—Instruction operation extension or modification
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Image Analysis (AREA)
Abstract
一种生成向量屏蔽的技术。特别是,本发明的至少一个实施例匹配至少两个指令,该至少两个指令被用于生成向量屏蔽,以及如果发现相关性,则阻止这两个指令中的至少一个被执行。
Description
技术领域
本发明的实施例涉及微处理器结构。更特别地,本发明的实施例涉及设置由指令集结构使用的向量屏蔽。
背景技术
在不同处理器中的不同指令集结构(ISA)中所使用的指令可包括涉及任一或二者都生成屏蔽值的操作,该屏蔽值在逻辑上与另一值组合来产生合成值。屏蔽值可被存储在存储单元中,诸如被存储在寄存器(“向量屏蔽”)中,并且屏蔽值可包含多个位,这些位与另一值的相对应数量的位被用于布尔逻辑运算(例如:“与”运算)。例如,图1示出了向量屏蔽101,该向量屏蔽101的位将经由布尔“与”运算与被存储在另一寄存器105中的另一值的多个位进行逻辑组合,以产生被存储在合成寄存器110中的合成值。
在一些ISA中,指令可以被指定为使用屏蔽值来生成结果的指令。例如,如果指令被指定为“在屏蔽之下”被执行,则由该指令所使用或所产生的数据值可被存储在处理器寄存器(诸如“向量寄存器”)中。对被存储在向量寄存器元件中的数据所执行的操作又可检查向量屏蔽中的相对应的位,该向量屏蔽可被存储到“向量屏蔽寄存器”中。如果相对应的位被设置为某个值,则该操作可被实现,而不考虑该向量屏蔽。在另一方面,如果该位被设置为另一值,则例如该操作可被忽略,并且针对该操作不产生例外和/或结果。向量屏蔽内的位的数量和向量屏蔽中的每个位的意义可以根据其中实施该向量屏蔽的处理器结构而变化。
向量屏蔽能够通过不同的技术被初始化或被“设置”,这些技术包括使用操作或操作序列,诸如从指令(“微指令”)中解码得到的操作,以设置来自其它寄存器(诸如标量寄存器)的向量屏蔽。可替换地,一些现有技术隐含地通过执行其它操作来设置向量屏蔽,这些操作诸如“比较”操作。在一种现有技术中,使用第一操作来设置向量屏蔽,以将屏蔽值与诸如“零”值向量的另一值进行比较(例如:“veq”操作),从而产生随后通过执行第二操作能够被存储到向量屏蔽中的值,以设置该向量屏蔽(例如:“setvm”操作)。
一些现有技术已经使用一次或多次操作来生成向量屏蔽值,并使用其它一次或多次操作来将该向量屏蔽存储到诸如寄存器的存储单元中,来自该存储单元的向量屏蔽可被应用到使用该向量屏蔽的不同的指令中。
现有技术的一个不足(诸如上面所描述的不足)是,在该向量屏蔽能够被使用之前,必须执行两次或更多次的操作来最终设置该向量屏蔽,这需要额外的处理周期,从而影响了处理性能。
发明内容
本发明说明一种处理器,该处理器包括:第一逻辑,用于检测存储向量屏蔽的第一操作;第二逻辑,用于识别最新的第二操作,以生成早于第一操作的向量屏蔽值;第三逻辑,如果第二操作被识别,则该第三逻辑阻止第一操作被执行。
本发明说明一种系统,该系统包括:存储器,用于存储第一指令和第二指令,该第一指令用于生成向量屏蔽值,并且该第二指令用于将该向量屏蔽值存储到向量屏蔽寄存器中;处理器,如果第一指令对应于与第二指令相同的向量屏蔽寄存器,则该处理器阻止该第二指令被执行。
本发明说明一种方法,该方法包括:在队列中存储用于存储向量屏蔽值的第一操作;对队列搜索生成向量屏蔽值的最新的第二操作,该第一操作早于第二操作;如果发现第二操作,则从队列中去除该第一操作。
本发明还说明一种设备,该设备包括:向量寄存器文件,该向量寄存器文件包括至少两个源寄存器,以存储至少两个源操作数;被耦合到向量寄存器文件的向量屏蔽寄存器文件,该向量屏蔽寄存器文件包括至少一个向量屏蔽寄存器,以存储至少一个向量屏蔽值;被耦合到向量寄存器文件和向量屏蔽寄存器文件的算术逻辑单元(ALU),以对至少两个源操作数执行布尔“与”运算,如果该布尔“与”运算的结果包含的并不都是零,则该结果将被存储到向量屏蔽寄存器中。
附图说明
本发明的实施例通过例子来说明并且不限于附图中的图,在附图中,相同的参考符号表示相同的元件,并且其中:
图1示出了一种用于生成向量屏蔽值的现有技术。
图2示出了一种根据一个实施例来设置向量屏蔽的技术。
图3是说明本发明的至少一个实施例的至少一个方面的流程图。
图4示出了能够被用来实施参考本发明的至少一个实施例所讨论的至少一些操作的硬件逻辑。
图5示出了其中可使用本发明的一个实施例的前端总线(FSB)计算机系统。
图6示出了以点对点(PtP)配置来布置的计算机系统。
具体实施方式
本发明的实施例属于微处理器结构。更特别地,本发明的实施例属于设置向量屏蔽的技术,该向量屏蔽由处理器或处理系统内的一个或多个指令操作所使用。
在本发明的至少一个实施例中,配置(“设置”)向量屏蔽,以便通过将设置屏蔽值的至少一个指令与设置向量屏蔽的至少一个指令相匹配来允许或禁止与在处理器或处理系统内操作的一个或多个指令相关联的不同的功能。在至少一个实施例中,通过在操作列表中搜寻要被执行的最早的(“最新的”)操作来执行匹配,该最早的操作是在执行用向量屏蔽值设置向量屏蔽的操作之前设置向量屏蔽值。此外,本发明的至少一个实施例省却(或至少忽略)执行设置向量屏蔽的指令(多个指令),而是执行设置屏蔽值的指令,以便将向量屏蔽设置为相对应的值。
例如,图2示出了根据一个实施例的设置向量屏蔽的技术。在图2中示出了指令队列200(诸如调度程序),以存储要由处理逻辑所执行的指令或微指令。在图2中所示的例子中,各种中指令/微指令在不同时刻被存储在队列中,并且按照这些指令/微指令进入队列的顺序进行存储(也就是从“最早的”到“最新的”)。例如,在图2中,通过操作码(“opcode”)“vadd”来标识的指令或微指令已首先进入该队列,并且因此被存储在条目201处,其后是被存储在条目203处的、由操作码“vand”标识的指令/微指令和在条目205处的、由操作码“vmul”所标识的指令/微指令。在其它实施例中,指令/微指令可以或可以不按照它们到达队列中的顺序进行存储,或者可替换地,这些指令/微指令可被存储在不同的位置,诸如从队列的“顶部”到“底部”。
图2的队列中的每条指令/微指令具有相对应的操作码207,如上面所讨论的那样,以及具有相对应的源位置标识符209,该源位置标识符209标识的存储单元内的位置(诸如寄存器),将要由指令/微指令操作的数据被定位在该位置。类似地,图2的队列中的每条指令/微指令具有相对应的目的地位置标识符211,该目的地位置标识符211标识存储区内的位置(诸如寄存器),通过执行相对应的指令/微指令所产生的数据将被存储在该位置。在至少一个实施例中,队列内的每个条目也存储相对应的目的地位置标识符213,该目的地位置标识符213标识存储区内的位置(诸如寄存器),通过指令/微指令所产生的向量屏蔽将被存储在该位置。特别是如果相对应的微指令/指令在其被执行之后并不产生向量屏蔽值,则一些微指令/指令可以不具有在其队列条目的向量屏蔽域内所存储的任何信息。
在图2中,例如vand指令/微指令要在对应于该指令/微指令条目的源域和目的地域的数据之间执行布尔“与”运算,并将该结果存储到由该指令/微指令的队列条目的目的地域所标识的位置中。也在图2中,第四指令/微指令已进入到队列的条目215处,由操作码“setvm”标识。该setvm指令/微指令是一种操作,当执行该操作时,该操作将其位置由向量屏蔽标识符域所标识的向量屏蔽值存储到由源标识符域所标识的向量屏蔽中。
在图2中所示的例子中,对应于该setvm指令/微指令的屏蔽值的位置与对应于vand指令/微指令的屏蔽值的位置相同。本发明的至少一个实施例将图2中的setvm与vand之间的关系识别为对应于相同的向量屏蔽值,并然后或者从队列中去除该setvm指令/微指令,或者否则并不执行该setvm指令/微指令,并且将该vand指令/微指令的目的地标识符用作要由指令/微指令所使用的向量屏蔽的位置。
在一个实施例中,当在图2的队列内检测到图2中所示的setvm指令/微指令时,搜索逻辑或搜索软件或是其某些组合通过查找一组内容可寻址存储器(CAM)能够在队列中定位相对应的vand操作,例如,对应于队列的每个条目。在一个实施例中,被设置到第一值(例如,逻辑“1”)的CAM可以指示vand指令/微指令队列中的位置,该vand指令/微指令生成和存储将由该setvm指令/微指令使用的向量屏蔽值。在其它实施例中,可使用其它的技术来识别vand指令/微指令的队列内的位置。
图3是示出本发明的至少一个实施例的至少一个方面的流程图。特别是,图3示出了要被执行的操作,以检测队列(诸如调度程序)内的setvm指令/微指令的存在,并且定位相对应的生成屏蔽的指令/微指令(例如,在一个实施例中是vand),以致该setvm指令/微指令不必被执行。在操作301,setvm指令/微指令被存储在要由处理逻辑所执行的指令/微指令队列中。在操作303,搜索比setvm指令/微指令更早的队列条目,以在对应于与setvm指令/微指令相同的向量屏蔽值的队列中找到最新的vand指令/微指令。在操作305,在定位了最新的相对应的vand指令之后,从队列中去除setvm或者否则标记setvm,以致不执行setvm,并且该vand操作的结果将被用作其它指令/微指令的向量屏蔽。
在一个实施例中,该队列是处理器中的调度程序,而在其它实施例中,该队列可以是位于处理器内部或外部的另一队列,以存储要由处理逻辑所执行的指令或微指令。此外,虽然迄今为止已经参考了setvm和vand指令/微指令,但是在其它实施例中,取决于其中使用本发明的实施例的指令集结构,其它指令/微指令可被用来生成向量屏蔽值和利用该值来设置向量屏蔽。
本发明的实施例可以用不同的方式来实施,这些方式包括软件、硬件、或其某种组合。例如,图4示出了能被用来实施参考本发明的至少一个实施例所讨论的至少一些操作的硬件逻辑。特别是,图4示出了向量寄存器文件401,该向量寄存器文件401包括被用来存储对应于诸如setvm和vand的指令/微指令的操作数和结果的源和目的地寄存器。另外,图4示出了向量屏蔽寄存器文件405,以存储由本发明的一个或多个实施例所生成的向量屏蔽。例如,vand指令/微指令可使得算术逻辑单元(ALU)410在被存储在向量寄存器文件中的两个或更多个源寄存器中的数据之间执行布尔“与”运算,并且将结果存储在向量寄存器文件内的目的地寄存器中和/或向量屏蔽寄存器文件内的向量屏蔽寄存器中。
在一个实施例中,如果向量屏蔽值包含的并不都是零,则通过利用比较逻辑403执行比较操作,该vand指令/微指令的结果是只将结果存储到向量屏蔽寄存器文件中。在一些实施例中,如通过从向量屏蔽寄存器文件到ALU的连接来推动的那样,被存储在向量屏蔽寄存器文件中的向量屏蔽值可被用于在ALU中所执行的其它逻辑运算中。在一个实施例中,由vand操作所使用的源寄存器之一包括至少一个非零位,该至少一个非零位与包括全零的源寄存器值进行“与”操作,以致所生成的向量屏蔽值将反映被存储在第一源寄存器中的非零位的寄存器位置。通过存取来自该向量屏蔽寄存器文件的屏蔽,随后的指令能够使用这个屏蔽值。
图5示出前端总线(FSB)计算机系统,本发明的一个实施例可被用于该前端总线计算机系统中。处理器505存取来自一级(L1)超高速缓冲存储器510和主存储器515的数据。在本发明的其它实施例中,超高速缓冲存储器可以是计算机系统存储器分层结构内的二级(L2)高速缓冲存储器或其它存储器。此外,在一些实施例中,图5的计算机系统可包含L1高速缓冲存储器和L2高速缓冲存储器。
在图5的处理器内示出针对机器状态的存储区506。在一个实施例中,存储区可以是寄存器集合,而在其它实施例中,该存储区可以是其它的存储器结构。根据一个实施例,在图5中也示出了针对保存区段的存储区507。在其它实施例中,该保存区段可以在其它装置或存储器结构中。处理器可具有任意数量的处理核。然而,本发明的其它实施例可在系统内的其它装置内被实施,诸如在独立的总线代理内被实施,或者遍及用硬件、软件、或者硬件和软件的某种组合形成的系统分布。
主存储器可以用不同的存储源来实施,这些存储源诸如动态随机存取存储器(DRAM)、硬盘驱动器(HDD)520或者经由网络接口530而远离该计算机系统所定位的存储源,该网络接口530包含不同的存储装置和技术。超高速缓冲存储器可位于处理器内部或者接近处理器,诸如位于处理器的本地总线507上。
此外,超高速缓冲存储器可以包含诸如六晶体管(6T)单元相对快速的存储单元或者包含具有近似等于或更快的存取速度的存其它储单元。图5的计算机系统可以是总线代理的点对点(PtP)网络(诸如微处理器),这些微处理器经由专用于PtP网络上的每个代理的总线信号进行通信。图6示出了用点对点(PtP)配置来布置的计算机系统。特别地,图6示出了一系统,其中,处理器、存储器和输入/输出装置通过多个点对点接口互连。
图6的系统也可包括几个处理器,为了清楚起见,只示出了其中的两个处理器670、680。处理器670、680中的每一个都可以包括与存储器22、24连接的本地存储器控制器中枢(MCH)672、682。处理器670、680可经由点对点(PtP)接口650使用PtP接口电路678、688来交换数据。处理器670、680可以分别经由单独的PtP接口652、654使用点对点接口电路676、694、686、698来与芯片集690交换数据。芯片集690也可经由高性能图形接口639与高生能图形电路638交换数据。本发明的实施例可位于具有任意数量处理核的任何处理器之内,或者位于图6的每个PtP总线代理之内。
然而,本发明的其它实施例可存在于图6的系统内的其它电路、逻辑单元或装置中。而且,在本发明的其它实施例中,可以遍及图6中所示的几个电路、逻辑单元或装置分布。
本发明实施例的各种方面可以使用互补金属氧化物半导体(CMOS)电路和逻辑装置(硬件)来实施,而其它方面可以使用被存储在机器可读介质(软件)上的指令来实施,如果处理器执行这些指令,则这些指令将导致处理器执行方法来实现本发明的实施例。而且,本发明的一些实施例可单独用硬件来执行,而其它实施例可单独用软件来执行。
虽然已经参照所示的实施例对本发明进行了说明,但是本说明书并不意图在限制的意义上来构造。该说明性实施例的各种修改方案以及对于本发明所属技术领域的技术人员来说是显而易见的其它实施例被认为位于本发明的精神和范围之内。
Claims (30)
1、一种处理器,其包括:
第一逻辑,用于检测存储向量屏蔽的第一操作;
第二逻辑,用于识别最新的第二操作,以生成早于第一操作的向量屏蔽值;
第三逻辑,如果第二操作被识别,则该第三逻辑阻止第一操作被执行。
2、根据权利要求1所述的处理器,其中,所述第二操作将向量屏蔽值存储到向量屏蔽中。
3、根据权利要求2所述的处理器,其中,所述第二操作包括布尔“与”运算,该布尔“与”运算的操作数通过两个源寄存器标识符来识别,并且该布尔“与”运算的结果被存储在向量屏蔽寄存器中。
4、根据权利要求3所述的处理器,其中,所述第一操作将向量屏蔽存储到向量屏蔽寄存器中。
5、根据权利要求4所述的处理器,其中,所述第二逻辑包括内容可寻址存储器(CAM),用于存储将第二操作标识为最新的操作的位,以生成早于第一操作的向量屏蔽值。
6、根据权利要求5所述的处理器,包括调度程序,用于以要被执行的顺序来存储第一和第二操作。
7、根据权利要求6所述的处理器,其中,所述调度程序的每个条目包括存储向量屏蔽寄存器标识符的域。
8、根据权利要求7所述的处理器,其中,如果第二操作被识别出,则第一操作将从调度程序中被去除。
9、一种系统,其包括:
存储器,用于存储第一指令和第二指令,该第一指令用于生成向量屏蔽值,并且该第二指令用于将该向量屏蔽值存储到向量屏蔽寄存器中;
处理器,如果第一指令对应于与第二指令相同的向量屏蔽寄存器,则该处理器阻止该第二指令被执行。
10、根据权利要求9所述的系统,其中,所述处理器包括调度程序,用于调度第一和第二指令用于执行,其中该调度程序包含先进先出(FIFO)队列,该队列用于按照第一和第二指令要被执行的顺序存储对应于该第一和第二指令的信息。
11、根据权利要求10所述的系统,其中,所述第一指令要在第二指令之前被执行。
12、根据权利要求11所述的系统,其中,对应于第一和第二指令的信息包括操作码(opcode)、源操作数寄存器指示符、目的地寄存器指示符和向量屏蔽寄存器指示符。
13、根据权利要求12所述的系统,其中,所述第一指令的操作码对应于布尔“与”运算。
14、根据权利要求13所述的系统,其中,所述第二指令的操作码对应于向量屏蔽存储操作。
15、根据权利要求14所述的系统,其中,所述第一和第二指令中的每一个都对应于相同的向量屏蔽寄存器指示符。
16、根据权利要求15所述的系统,其中,所述第一指令对应于生成向量屏蔽的操作,该向量屏蔽在对应于第一指令的操作之后最近被存储在调度程序中。
17、根据权利要求9所述的系统,其进一步包括搜索逻辑,用于在第一指令被存储到处理器之后找到该第一指令。
18、一种方法,其包括:
在队列中存储用于存储向量屏蔽值的第一操作;
对队列搜索生成向量屏蔽值的最新的第二操作,该第一操作早于第二操作;
如果发现第二操作,则从队列中去除该第一操作。
19、根据权利要求18所述的方法,其中,所述第一操作对应于setvm操作码(opcode),用于将向量屏蔽值存储到向量屏蔽寄存器文件中。
20、根据权利要求19所述的方法,其中,所述第二操作对应于vand操作码(opcode),用于生成向量屏蔽值。
21、根据权利要求18所述的方法,进一步包括在两个操作数之间执行布尔“与”运算,以生成要被存储到第一向量屏蔽寄存器中的向量屏蔽值。
22、根据权利要求21所述的方法,进一步包括将向量屏蔽值存储到第一向量屏蔽寄存器中。
23、根据权利要求18所述的方法,其中,搜索包括读取多个内容可寻址存储器(CAM),每个CAM对应于队列中的条目。
24、根据权利要求23所述的方法,其中,所述最新的第二操作通过被存储在CAM中的第一值来指示,该CAM对应于包含最新的第二操作的条目。
25、一种设备,其包括:
向量寄存器文件,该向量寄存器文件包括至少两个源寄存器,以存储至少两个源操作数;
被耦合到向量寄存器文件的向量屏蔽寄存器文件,该向量屏蔽寄存器文件包括至少一个向量屏蔽寄存器,以存储至少一个向量屏蔽值;
被耦合到向量寄存器文件和向量屏蔽寄存器文件的算术逻辑单元(ALU),以对至少两个源操作数执行布尔“与”运算,如果该布尔“与”运算的结果包含的并不都是零,则该结果将被存储到向量屏蔽寄存器中。
26、根据权利要求25所述的设备,进一步包括被耦合到ALU和向量屏蔽寄存器文件的比较器逻辑,用于将由ALU所生成的向量屏蔽值和零值向量进行比较,每个零值对应于向量屏蔽值内的位的位置。
27、根据权利要求25所述的设备,进一步包括存储第一指令的队列,以生成向量屏蔽值。
28、根据权利要求27所述的设备,其中,所述队列存储第二指令,以将向量屏蔽值存储到向量屏蔽寄存器文件中。
29、根据权利要求28所述的设备,其中,所述第一指令要在第二指令之前被执行。
30、根据权利要求29所述的设备,其中,如果所述第一和第二指令对应于相同的向量屏蔽寄存器,则所述第二指令不被执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/286735 | 2005-11-22 | ||
US11/286,735 US9436468B2 (en) | 2005-11-22 | 2005-11-22 | Technique for setting a vector mask |
US11/286,735 | 2005-11-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1983235A true CN1983235A (zh) | 2007-06-20 |
CN1983235B CN1983235B (zh) | 2010-06-16 |
Family
ID=38054829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100640836A Expired - Fee Related CN1983235B (zh) | 2005-11-22 | 2006-11-22 | 设置向量屏蔽的方法、设备、系统和处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9436468B2 (zh) |
JP (2) | JP2007141246A (zh) |
CN (1) | CN1983235B (zh) |
TW (1) | TWI395136B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488084A (zh) * | 2007-12-27 | 2009-07-22 | 英特尔公司 | 执行屏蔽加载和存储操作的指令和逻辑 |
CN102262205A (zh) * | 2010-05-31 | 2011-11-30 | 无锡中星微电子有限公司 | 一种测试向量源文件的测试点的屏蔽方法和屏蔽装置 |
CN104137054A (zh) * | 2011-12-23 | 2014-11-05 | 英特尔公司 | 用于执行从索引值列表向掩码值的转换的系统、装置和方法 |
CN104937538A (zh) * | 2013-01-23 | 2015-09-23 | 国际商业机器公司 | 向量生成掩码指令 |
CN110471699A (zh) * | 2011-12-23 | 2019-11-19 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
TWI720056B (zh) * | 2015-12-18 | 2021-03-01 | 美商英特爾公司 | 用於設置多重向量元素操作之指令及邏輯 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8938642B2 (en) * | 2008-08-15 | 2015-01-20 | Apple Inc. | Confirm instruction for processing vectors |
US8862932B2 (en) * | 2008-08-15 | 2014-10-14 | Apple Inc. | Read XF instruction for processing vectors |
US9009528B2 (en) * | 2008-08-15 | 2015-04-14 | Apple Inc. | Scalar readXF instruction for processing vectors |
US8271832B2 (en) * | 2008-08-15 | 2012-09-18 | Apple Inc. | Non-faulting and first-faulting instructions for processing vectors |
US20140068227A1 (en) * | 2011-12-22 | 2014-03-06 | Bret L. Toll | Systems, apparatuses, and methods for extracting a writemask from a register |
CN108519921B (zh) * | 2011-12-23 | 2022-07-12 | 英特尔公司 | 用于从通用寄存器向向量寄存器进行广播的装置和方法 |
CN104011616B (zh) * | 2011-12-23 | 2017-08-29 | 英特尔公司 | 改进置换指令的装置和方法 |
CN111831335A (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 经改进的插入指令的装置和方法 |
US9489196B2 (en) | 2011-12-23 | 2016-11-08 | Intel Corporation | Multi-element instruction with different read and write masks |
CN107220029B (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 掩码置换指令的装置和方法 |
US9507593B2 (en) | 2011-12-23 | 2016-11-29 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
CN104115114B (zh) | 2011-12-23 | 2018-06-12 | 英特尔公司 | 经改进的提取指令的装置和方法 |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
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 |
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 |
US9645820B2 (en) * | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
US20150186137A1 (en) * | 2013-12-27 | 2015-07-02 | Tal Uliel | Systems, apparatuses, and methods for vector bit test |
US9996350B2 (en) | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US10203955B2 (en) * | 2014-12-31 | 2019-02-12 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality |
US10977033B2 (en) * | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US20240111526A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Methods and apparatus for providing mask register optimization for vector operations |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
US5761476A (en) * | 1993-12-30 | 1998-06-02 | Intel Corporation | Non-clocked early read for back-to-back scheduling of instructions |
US5634118A (en) * | 1995-04-10 | 1997-05-27 | Exponential Technology, Inc. | Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation |
US5940625A (en) * | 1996-09-03 | 1999-08-17 | Cray Research, Inc. | Density dependent vector mask operation control apparatus and method |
US5925124A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Dynamic conversion between different instruction codes by recombination of instruction elements |
US5903769A (en) * | 1997-03-31 | 1999-05-11 | Sun Microsystems, Inc. | Conditional vector processing |
JPH10301791A (ja) | 1997-04-30 | 1998-11-13 | Toshiba Corp | オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ |
US6366999B1 (en) | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
US6237086B1 (en) * | 1998-04-22 | 2001-05-22 | Sun Microsystems, Inc. | 1 Method to prevent pipeline stalls in superscalar stack based computing systems |
-
2005
- 2005-11-22 US US11/286,735 patent/US9436468B2/en not_active Expired - Fee Related
-
2006
- 2006-11-16 TW TW095142370A patent/TWI395136B/zh not_active IP Right Cessation
- 2006-11-20 JP JP2006313121A patent/JP2007141246A/ja active Pending
- 2006-11-22 CN CN2006100640836A patent/CN1983235B/zh not_active Expired - Fee Related
-
2012
- 2012-04-06 JP JP2012087415A patent/JP5539432B2/ja not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488084B (zh) * | 2007-12-27 | 2013-01-02 | 英特尔公司 | 用于执行屏蔽加载和存储操作的设备、方法和系统 |
CN102937890A (zh) * | 2007-12-27 | 2013-02-20 | 英特尔公司 | 执行屏蔽加载和存储操作的指令和逻辑 |
CN101488084A (zh) * | 2007-12-27 | 2009-07-22 | 英特尔公司 | 执行屏蔽加载和存储操作的指令和逻辑 |
CN102937890B (zh) * | 2007-12-27 | 2016-01-20 | 英特尔公司 | 执行屏蔽加载和存储操作的设备和方法 |
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US10120684B2 (en) | 2007-12-27 | 2018-11-06 | Intel Corporation | Instructions and logic to perform mask load and store operations as sequential or one-at-a-time operations after exceptions and for un-cacheable type memory |
CN102262205A (zh) * | 2010-05-31 | 2011-11-30 | 无锡中星微电子有限公司 | 一种测试向量源文件的测试点的屏蔽方法和屏蔽装置 |
CN102262205B (zh) * | 2010-05-31 | 2015-08-26 | 无锡中星微电子有限公司 | 一种测试向量源文件的测试点的屏蔽方法和屏蔽装置 |
US11709961B2 (en) | 2011-12-23 | 2023-07-25 | Intel Corporation | Instruction execution that broadcasts and masks data values at different levels of granularity |
CN104137054A (zh) * | 2011-12-23 | 2014-11-05 | 英特尔公司 | 用于执行从索引值列表向掩码值的转换的系统、装置和方法 |
CN110471699B (zh) * | 2011-12-23 | 2023-07-28 | 英特尔公司 | 用于指令处理的处理器核、方法和系统 |
CN110471699A (zh) * | 2011-12-23 | 2019-11-19 | 英特尔公司 | 在不同的粒度水平下对数据值进行广播和掩码的指令执行 |
CN104937538A (zh) * | 2013-01-23 | 2015-09-23 | 国际商业机器公司 | 向量生成掩码指令 |
CN104937538B (zh) * | 2013-01-23 | 2018-09-14 | 国际商业机器公司 | 向量生成掩码指令 |
TWI720056B (zh) * | 2015-12-18 | 2021-03-01 | 美商英特爾公司 | 用於設置多重向量元素操作之指令及邏輯 |
Also Published As
Publication number | Publication date |
---|---|
TW200802083A (en) | 2008-01-01 |
JP2007141246A (ja) | 2007-06-07 |
JP5539432B2 (ja) | 2014-07-02 |
US20070118720A1 (en) | 2007-05-24 |
CN1983235B (zh) | 2010-06-16 |
TWI395136B (zh) | 2013-05-01 |
JP2012142021A (ja) | 2012-07-26 |
US9436468B2 (en) | 2016-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1983235B (zh) | 设置向量屏蔽的方法、设备、系统和处理器 | |
EP3449359B1 (en) | Out-of-order block-based processors and instruction schedulers | |
US6862677B1 (en) | System and method for eliminating write back to register using dead field indicator | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
US9304774B2 (en) | Processor with a coprocessor having early access to not-yet issued instructions | |
CN104205042A (zh) | 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制 | |
US5864689A (en) | Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction | |
CN104937541A (zh) | 用于调用多线程加速器的装置和方法 | |
US6301654B1 (en) | System and method for permitting out-of-order execution of load and store instructions | |
WO2017223004A1 (en) | Load-store queue for block-based processor | |
US11726912B2 (en) | Coupling wide memory interface to wide write back paths | |
US5053986A (en) | Circuit for preservation of sign information in operations for comparison of the absolute value of operands | |
US6862676B1 (en) | Superscalar processor having content addressable memory structures for determining dependencies | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
CN108182082A (zh) | 一种流水处理双发射处理器记分板电路 | |
CN104516726A (zh) | 一种指令处理的方法及装置 | |
Biswas et al. | Introduction of architecturally visible storage in instruction set extensions | |
JP2008269114A (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
KR19980079726A (ko) | 프로세서에 저장 인스트럭션을 전송하는 시스템 및 방법 | |
CN109683959B (zh) | 处理器的指令执行方法及其处理器 | |
CN112540789B (zh) | 一种指令处理装置、处理器及其处理方法 | |
US20180046463A1 (en) | System and method for load and store queue allocations at address generation time | |
US20140365751A1 (en) | Operand generation in at least one processing pipeline | |
CN111857830A (zh) | 一种提前转发指令数据的通路设计方法、系统及存储介质 | |
US5983341A (en) | Data processing system and method for extending the time for execution of an instruction |
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: 20100616 Termination date: 20181122 |
|
CF01 | Termination of patent right due to non-payment of annual fee |