CN104461461B - 位范围隔离指令、方法和装置 - Google Patents
位范围隔离指令、方法和装置 Download PDFInfo
- Publication number
- CN104461461B CN104461461B CN201410674064.XA CN201410674064A CN104461461B CN 104461461 B CN104461461 B CN 104461461B CN 201410674064 A CN201410674064 A CN 201410674064A CN 104461461 B CN104461461 B CN 104461461B
- Authority
- CN
- China
- Prior art keywords
- range
- instruction
- value
- source operand
- logic unit
- 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.)
- Active
Links
- 238000002955 isolation Methods 0.000 title claims description 109
- 238000000034 method Methods 0.000 title description 15
- 229910002056 binary alloy Inorganic materials 0.000 claims 3
- 238000012545 processing Methods 0.000 abstract description 27
- 238000003860 storage Methods 0.000 abstract description 12
- 230000004044 response Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 241000209094 Oryza Species 0.000 description 3
- 235000007164 Oryza sativa Nutrition 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 235000009566 rice Nutrition 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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/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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
揭示了一种处理元件和芯片组***。所述处理元件接收指示源操作数和目标操作数的指令。响应于该指令将结果储存在目标操作数中。该结果操作数可具有:(1)第一位范围,具有由该指令显式指定的第一端,其中各个位的值与源操作数在相应位置中的位的值相同;以及(2)第二位范围,不管源操作数在相应位置中的位的值如何,其所有位都具有相同值。在不在源操作数的相应位置中相对于这些有相同值的位来移动结果的第一范围的情况下,可完成该指令的执行,而不管第一位范围在结果中的位置如何。还揭示了用于执行这种指令的执行单元、具有用于执行这种指令的处理器的计算机***、以及储存这种指令的机器可读介质。
Description
本申请是美国优先权号US12/645,307、中国申请号为201010620155.7、题为“位范围隔离指令、方法和装置”的申请的分案申请。
技术领域
各个不同实施例涉及位操作指令、执行位操作指令的方法、用于执行位操作指令的执行单元、或者结合有这种执行单元的设备。具体而言,各个不同实施例涉及用于隔离位范围范围隔离指令、执行位范围隔离指令的方法、用于执行位范围隔离指令的执行单元、或者结合有这种执行单元的设备。
背景技术
通用处理器、专用处理器、控制器和其它设备执行如由指令集架构(ISA)指定的指令。这些指令使得设备能执行各种各样不同类型的操作。一种通用类型的操作是位操作操作。
已知各种不同的位操作指令。一种已知的位操作指令是EXTR-提取指令。EXTR指令在体系结构软件开发人员手册卷3:指令集参考,修订2.2,2006年1月,文件编号:245319-005中描述。
EXTR指令提取由两个立即值指定的位字段,并将所提取的位字段右移位以便于在目的文件中使所提取的位字段右对齐。这种在单个指令中除提取位字段之外还将所提取的位字段移位会倾向于限制特定数据处理操作的速度和/或效率。其它位操作指令依赖于倾向于具有长等待时间的查表。
由于快速和/或高效处理数据的重要性,新的和不同的数据操作指令将是有用的。
附图说明
通过参照以下描述和用来例示本发明诸实施例的附图,本发明可得到最佳的理解。在附图中:
图1是处理位范围隔离指令的一个实施例的方法实施例的流程框图。
图2是指令处理装置的一示例实施例的框图。
图3示出根据位范围隔离指令的第一示例实施例的位范围隔离操作的第一示例实施例。
图4示出根据位范围隔离指令的第二示例实施例的位范围隔离操作的第二示例实施例。
图5示出根据位范围隔离指令的第三示例实施例的位范围隔离操作的第三示例实施例。
图6示出对BZHI——将以指定位位置开始的高位归零——指令的描述,该指令表示位范围隔离指令的一具体示例实施例。
图7示出BZHI——将以指定位位置开始的高位归零——指令的伪代码中的操作,该指令表示位范围隔离指令的一具体示例实施例。
图8是位范围隔离逻辑的一示例实施例的框图。
图9示出适当的32位通用寄存器集合的一个具体示例实施例。
图10示出适当的64位通用寄存器集合的另一个具体示例实施例。
图11示出表示状态或标志寄存器的一个适当示例实施例的EFLAGS寄存器。
图12是适当计算机***的第一示例实施例的框图。
图13是适当计算机***的第二示例实施例的框图。
具体实施例
在以下描述中,阐述了诸如处理器类型、指令实现细节、数据类型、寄存器类型、寄存器排列、***配置等的许多具体细节。然而,可以理解,可在没有这些具体细节的情况下实践各实施例。在其它实例中,为了不混淆对本说明书的理解,没有具体示出公知电路、结构和技术。
存在其中储存在寄存器或其它存储位置中的位可包括感兴趣位串或位范围、以及目前不感兴趣或者至少不是感兴趣位范围的一部分的一个或多个其它位串或位范围的不同情况。代表性地,感兴趣的位范围可表示要对其作进一步处理的数字或值。目前不感兴趣的位可被视为是不想要的位或不关心的位。在一个或多个实施例中,感兴趣的位范围可通过归零或以其他方式弃用不想要的位、同时保留感兴趣位范围中位的值来隔离。这可有助于促进对感兴趣位范围的进一步处理。
诸实施例涉及新且有用的位范围隔离指令。其它实施例涉及用于执行位范围隔离指令的执行单元。另外的实施例涉及具有这种执行单元或能够执行这些指令的通用处理器、专用处理器、控制器、或其它逻辑设备或指令处理装置。再有一些实施例涉及储存在盘、存储器、或其它有形机器可读介质上的位范围隔离指令。
图1是处理位范围隔离指令的一个实施例的方法100的实施例的流程框图。在各个实施例中,该方法可在使用期间由通用处理器、专用处理器(例如图形处理器或数字信号处理器)、硬件加速器(例如密码加速器)、或另一类型的逻辑器件或指令处理装置执行。
在框101,位范围隔离指令可在处理器或其它装置处被接收。在一个或多个实施例中,位范围隔离指令可指示源操作数和目标操作数。
在框102,结果可响应于位范围隔离指令被储存在目标操作数中。该结果操作数可具有第一位范围和第二位范围。第一位范围可以使其每个位的值与源操作数在相应位置中的位的值相同。不管源操作数在相应位置中的位的值如何,第二位范围都可具有相同值。在一个或多个实施例中,第二范围的所有位都可以是0。或者,第二范围的所有位都可以是1。
在框103,在不在源操作数的相应位置中相对于这些有相同值的位来移位或以其它方式移动结果的第一范围的情况下,可完成该位范围隔离指令的执行。无论第一位范围在结果中的位置如何(例如,即使第一位范围是结果内的中间位范围),可能都是如此。在一个或多个实施例中,位范围隔离指令的执行可能不涉及倾向于具有长等待时间的查表。
从位范围隔离指令中略去这种移位或位移动操作存在若干可能优点。首先,并非总是需要移位操作。并且,移位操作可能倾向于增加指令执行的时间,和/或可能倾向于增加逻辑区域/成本。此外,许多ISA已具有可与位范围隔离指令分开使用的专用移位操作。其它优点将在以下进一步讨论。
图2是指令处理装置110的一示例实施例的框图。在一个或多个实施例中,指令处理装置可以是通用处理器。该处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其它类型的处理器中的任一种。在一个或多个实施例中,处理器可以是由美国加利福尼亚州圣克拉拉的英特尔公司制造的类型的通用处理器,但这不是必需的。可从英特尔公司购买到的通用处理器的具体示例包括但不限于:CoreTM i7处理器终极版、CoreTM i7处理器、CoreTM i5处理器、CoreTM2终极处理器、CoreTM2四核处理器、CoreTM2双核处理器、处理器、以及处理器。
或者,指令处理装置可以是专用处理器。适当的专用处理器的代表性示例包括但不限于:网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、以及数字信号处理器(DSP),在此仅举数例。这些处理器还可以基于CISC、RISC、VLIW、其混合、或完全其它类型的处理器。
在另外的实施例中,指令处理装置可以是控制器(例如微控制器)、或者其它类型的能够处理指令的逻辑电路。
仍然参照图2,在使用期间,指令处理装置可接收位范围隔离指令112的一个实施例。作为示例,可从存储器或从软件接收位范围隔离指令。该位范围隔离指令可表示由指令处理装置标识的机器指令或控制信号。位范围隔离指令可包括操作码或其它指令标识符。该指令处理装置可具有能用于响应于位范围隔离指令和/或由其指定地储存结果的特定或具体电路***或其它逻辑(例如软件结合硬件和/或固件)。
指令处理装置的所示实施例包括指令解码器114。该解码器可接收和解码位范围隔离指令。该解码器可生成和输出反映原始位范围隔离指令或由其生成的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号。该解码器可利用各种不同机制实现。适当机制的示例包括但不限于微代码只读存储器(ROM)、查寻表、硬件实现、可编程逻辑阵列(PLA)等。
解码器不是该装置的必要组件。在一个或多个其它实施例中,该装置替代地可具有指令仿真器、指令翻译器、指令变形器、指令解释器、或其它指令转换逻辑。各种不同类型的指令仿真器、指令变形器、指令翻译器等是本领域中已知的。指令转换逻辑可接收位范围隔离指令,仿真、翻译、变形、解释或以其它方式转换位范围隔离指令,并且输出与原始位范围隔离指令相对应的一个或多个指令或控制信号。指令转换逻辑可以用软件、硬件、固件、或其组合来实现。在一些情形中,指令转换逻辑的部分或全部可位于具有指令处理装置的其余部分的管芯外,诸如单独的管芯,或者可在***存储器中。在一些情形中,指令处理装置可具有解码器和指令转换逻辑两者。
再参看图2,指令处理装置包括执行单元116。作为示例,执行单元可包括算术逻辑单元、逻辑单元、有位操作能力的功能单元等。
在所示实施例中,执行单元与解码器的输出端耦合,或以其它方式与之通信。术语“耦合”可表示两个或多个元件直接电接触或电连接。然而,“耦合”也可表示两个或多个元件彼此不直接连接,但仍然(例如通过居间组件)彼此协作或交互或通信。作为一个示例,解码器和执行单元可通过居间可任选缓冲器或本领域中已知可能用来耦合在解码器和执行单元之间的其它组件来相互耦合。
作为解码器解码位范围隔离指令的结果,执行单元可接收反映该位范围隔离指令或由其生成的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号。或者,执行单元可接收和执行来自前述指令转换逻辑的指令或控制信号。该执行单元可包括可用于执行由位范围隔离指令生成的这些指令或其它控制信号的电路或其它执行逻辑(例如硬件、软件、和/或固件的某组合)。
作为位范围隔离指令的结果,执行单元可用于将结果储存在位范围隔离指令所指示的目标操作数处。该结果可具有第一位范围和第二位范围。在一个或多个实施例中,在第一位范围中,每个位的值可与由该指令指示的源操作数在相应位置中的位相同。不管源操作数在相应位置中的位的值如何,在第二位范围中,所有的位都可具有相同值。在一个或多个实施例中,在不在源操作数的相应位置中相对于这些有相同值的位来移动结果的第一范围的情况下,执行单元可完成对该位范围隔离指令的执行,无论第一位范围在结果中的位置如何(例如即使第一位范围是结果中的中间位范围)。在位范围隔离指令的执行期间避免对第一位范围的这种移位或移动可有助于提高特定数据处理操作的速度和/或效率。
该位范围隔离指令可隐式地标识或显式地指定至少一个源操作数和目标操作数。在一个或多个实施例中,位范围隔离指令可具有用于显式地指定源操作数、目标操作数或两者的专用位字段或集合。在一个或多个实施例中,位范围隔离指令可隐式或隐含地标识源操作数、目标操作数或两者的一个或多个固定寄存器或其它存储位置。在一个或多个实施例中,用于源操作数的存储位置还可任选地用于目标操作数以使该结果可盖写源数据。
在一个或多个实施例中,源和目标操作数的部分或全部可被储存在寄存器集合118的寄存器中。该寄存器集合可以是寄存器文件的一部分以及可能其它寄存器,诸如控制寄存器、状态寄存器、标志寄存器等。这些寄存器可以是可用来储存数据的存储位置或设备。该寄存器集合常常可物理地位于具有执行单元的管芯上。这些寄存器可以是从处理器的外部可见的,或者从编程人员的角度看这些寄存器可以是可见的。例如,指令可指定储存在寄存器中的操作数。各种不同类型的寄存器是适当的,只要它们能够如本文中所述地储存和提供数据即可。寄存器可以重命名,或者可以不重命名。适当寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。或者,源操作数和目标操作数的一个或多个可被储存在不同于寄存器的存储位置中,诸如举例而言***存储器中的位置(未在本图中示出)。
再参看图2,示出位范围隔离操作的示例实施例。位范围隔离指令指示或指定源操作数(SRC),在该具体情形中指示或指定在寄存器集合的一个或多个寄存器中的源操作数(SRC)。为了简化附图,所示源操作数(SRC)被示为仅具有8位,即“10101010”,但是操作数常常可具有更多个位,诸如16位、32位、64位、128位、或某其它数目的位。
执行单元可接收源操作数(SRC)。作为位范围隔离指令的结果,执行单元可被实现为对源操作数(SRC)执行位范围隔离操作、以及将相应结果储存在该指令指示或指定的目标操作数(DEST)中。在此特定情形中,目标操作数被储存在寄存器集合的一个或多个寄存器中。
该结果可具有第一位范围122和第二位范围120。在此特定示例中,第一位范围122是三个最低有效(最右侧)位,而第二位范围120是五个最高有效(最左侧)位,尽管这仅仅是示例。
在该第一位范围122中,每个位的值与源操作数(SRC)在相应位置中的位的值相同。源操作数(SRC)的三个最低有效或最右侧位具有位值“010”,同样目标操作数(DEST)中的第一位范围的三个最低有效或最右侧位也具有相同位值“010”。
不管源操作数在相应位置中的位的值如何,在第二位范围120中,所有的位都具有相同值,在此特定情形中均为0。即使源操作数(SRC)的五个最高有效或最左侧位具有位值“10101”,目标操作数(DEST)中的结果的五个最高有效位都具有位值“00000”。在一替代实施例中,第二范围中所有的位都可具有相同值1,即“11111”。注意,在此特定情形中,第二位范围中的三个位各自具有与源操作数在相应位置中的位不同的值。
为了避免混淆本说明书,示出并描述了相对简单的指令处理装置。可以理解,其它实施例可具有多个执行单元。例如,该装置可包括多个不同类型的执行单元,诸如举例而言算术单元、算术逻辑单元(ALU)、整数单元等。这些单元的至少之一可对本文中所揭示的位范围隔离指令的一个实施例作出响应。其它实施例可具有多个核、逻辑处理器或执行引擎。本文中所揭示的可用于执行位范围隔离指令的执行单元可被包括在这些核、逻辑处理器或执行引擎的至少一个、至少两个、大部分或全部内。
指令处理装置还可任选地包括一个或多个其它公知组件。例如,其它实施例可任选地包括指令读取逻辑、预解码逻辑、调度逻辑、重排序缓冲器、分支预测逻辑、回退逻辑、寄存器重命名逻辑等、或其某些组合。这些组件可常规地实现,或者有本领域技术人员基于本公开内容将显而易见的最少调整地实现。为了理解本文中的实施例不需要对这些组件作进一步描述,进一步描述在需要时可容易地从公开文献中获得。存在本领域中已知的这些组件的许多不同组合和配置。该范围不限于任何已知的此类组合或配置。各个实施例可在有这些附加组件或没有这些附加组件的情况下实现。
在一个或多个实施例中,位范围隔离指令的实施例可隐式或隐含地指示要隔离的感兴趣位范围的第一端。该隐式或隐含指示的端点尽管未通过显式值表达但可以被理解。处理器或其它指令处理装置可通过操作码或其它唯一指令标识符来识别位范围归零指令,并且理解位范围的端点是固有的。
图3示出根据位范围隔离指令的第一示例实施例的位范围隔离操作的第一示例实施例,该位范围隔离指令隐式或隐含地将感兴趣位范围的第一端指示为最低有效位(LSB)。在该示图中,最低有效位是标示为“0”的最右位。
位范围隔离指令可隐式地指示或显式地指定源操作数(SRC)。在所示实施例中,源操作数具有32位。替代地,该操作数可具有16位、64位、128位、或某其它数目的位。具体示出的32位源操作数(SRC)从左向右地储存以下位:“10100110100110110101100111010110”。这些具***值仅仅用作例示目的,且不是必需的。
位范围隔离指令也可隐式地指示或显式地指定目标操作数(DEST)。目标操作数(DEST)具有表示根据位范围隔离指令对源操作数(SRC)执行的位范围隔离操作的一示例实施例的结果。该结果具有感兴趣的第一位范围322和被清零或弃用的第二位范围320。
该第一位范围322始于隐式LSB第一端、且在此具体情形中终于第19位。在此具体情形中,第二位范围始于第20位,且终于最高有效位(MSB)。第一范围与第二范围之间的边界可替代地处于任何其它位置。
在一个或多个实施例中,位范围隔离指令还可诸如通过源操作数或与该指令相关联的常数或中间值显式地指定指示感兴趣的第一位范围的端点的值(例如表示数字的多个位)。例如,显式值可表示如从隐式、显式、或以其它方式理解的点(例如隐式最低有效位端点、最高有效位、或中央位)起测量的与端点相对应的位的位置。作为另一示例,该值可表示从隐式、显式、或以其它方式理解的点(例如隐式最低有效位端点、最高有效位、中央位、或感兴趣位范围的起点)起以位计量的正或负长度。
在该第一位范围322中,每个位的值与源操作数在相应位置中的位的值相同。在该具体示例中,源操作数(SRC)的19个最低有效或最右侧位具有位值“10110101100111010110”,同样目标操作数(DEST)中的第一位范围322的19个最低有效或最右侧位也具有位值“10110101100111010110”。
在该第二位范围320中,所有位都具有相同值,在本特定情形中为0。在该具体示例中,源操作数(SRC)的12个最高有效或最左侧位具有位值“101001101001”,而目标操作数(DEST)中的第二位范围的12个最高有效位都具有位值“000000000000”。或者,第二范围的所有位可都具有相同值1(例如111111111111)。
可以理解,由指令指示的位可包括在要保留的第一位范围中,或可包括在要归零或以其它方式弃用的第二位范围中。指令可采用任一种约定。
作为另一种选择,在一个或多个实施例中,位范围隔离指令可隐式或隐含地将要隔离的感兴趣位范围的第一端指示为最高有效位(MSB)。在示图中,最高有效位是最左侧位。
图4示出根据位范围隔离指令的第二示例实施例的位范围隔离操作的第二示例实施例,该位范围隔离指令隐式或隐含地将感兴趣位范围的一端指示为最高有效位(LSB)。在示图中,最高有效位是标示为“31”的最左侧位。
该第二示例实施例相对于就在前面描述的第一示例实施例具有某些相似性。为简短起见,讨论将倾向于集中在差异上,而不重复相似之处。
与前面一样,位范围隔离指令可指示或指定源操作数(SRC)和目标操作数(DEST)。目标操作数(DEST)具有包括感兴趣的第一位范围422和被归零或以其它方式弃用的第二位范围420。
该第一位范围322终于隐式MSB,且在此具体情形中始于第17位。第二位范围始于最低有效位(LSB),且在此具体情形中终于第16位。第一范围与第二范围之间的边界可替代地处于任何其它位置。
在一个或多个实施例中,位范围隔离指令可诸如通过该指令的第二源操作数或中间值隐式地指示或显式地指定指示第一位范围的起始处的值。作为示例,该值可表示与第二端相对应的位的位置、或以位计量的长度,其中该长度的末尾对应于第二端。
在该第一位范围422中,每个位的值与源操作数在相应位置中的位的值相同。在该具体示例中,源操作数(SRC)的15个最高有效或最左侧位具有位值“101001101001101”,同样目标操作数(DEST)中的第一位范围422的15个最高有效或最左侧位也具有位值“101001101001101”。
在该第二位范围420中,所有位都具有相同值,在本特定情形中为0。在该具体示例中,源操作数(SRC)的16个最低有效或最右侧位具有位值“10101100111010110”,而目标操作数(DEST)中的第二位范围的16个最低有效位都具有位值“00000000000000000”。或者,第二范围的所有位可都具有相同值1(例如11111111111111111)。
作为又一操作,在一个或多个实施例中,位范围隔离指令可诸如通过该指令的第二源操作数和/或中间值显式地指定指示感兴趣位范围的两端的值。
图5示出根据指示或指定感兴趣位范围的两端的位范围隔离指令的第三示例实施例的位范围隔离操作的第三示例实施例。为简短起见,讨论将倾向于集中在相对于先前示例实施例的差异上,而不重复相似之处。
与前面一样,位范围隔离指令可指示或指定源操作数(SRC)和目标操作数(DEST)。目标操作数(DEST)具有包括感兴趣的第一位范围522、不想要的第二位范围520、以及附加的不想要的第三位范围521。
如前所述,在该第一位范围522中,每个位的值与源操作数在相应位置中的位的值相同。在该第二位范围520中,所有位都具有相同值,在本特定情形中为0。替代地,可使用1来替代0。
同样,在该第三位范围521中,所有位都具有相同值,在本特定情形中为0。或者,位范围隔离指令可归零或以其它方式弃用第二范围的最高有效位,而不归零或弃用第三范围中不想要的最低有效位。随后第三范围中这些不想要的最低有效位可按需用例如后续右移位指令来弃用。
指定端点的值可分别表示如从隐式、或以其它方式理解的点(例如隐式最低有效位、最高有效位、或中央位)起测量的位的位置,或者表示从隐式、或以其它方式理解的点(例如最低有效位、最高有效位、中央位、或感兴趣位范围的端点)起以位计量的正或负长度。在一具体示例实施例中,第一值可表示感兴趣第一位范围的起点的位位置,而第二值可表示从由第一值表示的起始位位置起以位计量的长度。
注意,在图3-5中,在不在源操作数的相应位置中相对于有相同值的位来移位或以其它方式移动结果的第一位范围的情况下,可完成对位范围隔离指令的执行,而不管第一位范围在结果中的位置如何。也就是说,不执行移位操作或其它改变相对位位置的操作。如果需要将第一位范围移位,诸如将第一位范围与最低有效位对齐或对准,则这可由后续指令(例如右移位指令)执行。许多ISA具有用于执行这种操作的适当的右移位指令。
图3-5示出适当的位范围隔离操作和指令的若干示例。其它实施例将对本领域技术人员显而易见,且具有本发明的益处。
根据一具体示例实施例的位范围隔离指令是BZHI-以指定位位置起始的零高位指令。该BZHI指令可具有标准3字节x86操作码,该操作码可任选地具有用于寻址更多寄存器和更宽数据空间的REX前缀。该BZHI指令的指令操作数编码在表1中示出。
表1
操作数1 | 操作数2 | 操作数3 | 操作数4 | |
A | ModRM:reg(R,W) | ModRM:r/m(R) | 不适用 | 不适用 |
操作数1被显式指定,并且对于32位模式可在32位通用寄存器(reg)中,或者对于64位模式可在64位通用寄存器中。对操作数1允许读取(R)和写入(W)。
操作数2被显式指定,并且对于32位模式可在32位通用寄存器(r)或存储器(m)中,或者对于64位模式可在64位通用寄存器或存储器中。对操作数2允许读取(R)。
图6示出表示位范围隔离或归零指令的一具体示例实施例的BZHI指令的描述。BZHI指令将第二操作数的位复制到目标操作数中,并将从由第一操作数的8个低位中所包含的数字所指定的位位置起直到操作数大小的最大值的所有高阶位置0。对于BZHI指令而言,第一操作数也被用作目标操作数,且结果盖写第一操作数。
基于该结果更新零标志(ZF)、进位标志(CF)以及符号标志(SF)。如果第一操作数的8个低位中所包含的数字大于操作数大小,则进位标志(CF)被置位。在一方面中,这些情形中的位位置可被取作第一操作数的8个低位中所包含的数字与操作数大小之间的差。溢出标志(OF)被清零。辅助进位标志(CF)和奇偶标志(PF)未被定义。这些标志在图11中示出。
缺省操作数大小为32位。64位操作数大小是可编码的。指令之前的66H前缀字节将导致#UD。
图7示出表示位范围隔离或归零指令的一具体示例实施例的BZHI指令的伪码中的操作。SRC指具有数据的显式指定的第二源操作数,DEST指目标操作数,其也被用作用于储存位位置的第一源操作数。操作数大小在32位模式中为32位,或者在64位模式中为64位。CF指进位标志。
也可构想其它指令。例如,用目标操作数来盖写源操作数并非是必需的。对操作码、编码、REX和VEX前缀的进一步描述在需要时可在64和IA-32体系结构软件开发人员手册,卷2A:指令集参考A-M,序号:253666-032US,2009年9月中获得。
为了进一步说明特定观念,考虑BZHI如何结合提取位字段起效。这种位字段的提取在例如各种数据解压缩、压缩和解码算法中有用,这些算法诸如举例而言霍夫曼(Huffman)、赖斯(Rice)和格玛(Gamma)编码(仅举数例)。通常感兴趣位范围的起点和终点、或起点和长度可在运行时期间由解码算法确定。在一些情形中,感兴趣位范围可具有预定义和固定的长度(例如长度10:10:10:2)。在其它情形中,感兴趣位范围在诸如举例而言霍夫曼、赖斯和格玛编码的情形中可具有可变长度。在任何事件中,常规方法可被用来确定感兴趣位范围的起点和终点、或者起点和长度。
在一些算法中,BZHI可结合右移位指令使用以隔离感兴趣位字段,并将该感兴趣位字段与最低有效位对准或对齐。作为一个示例,当解码算法计算感兴趣位范围的起点和终点时,可执行BZHI指令以将从端点开始的数据位归零并储存结果,随后可执行右移位指令以将BZHI指令的结果右移位起始量,并将移入的最高有效位零扩展。这可如下所示:
结果1=BZHI数据,端点
结果2=右移位结果1,起点
作为另一示例,当解码算法计算感兴趣位范围的起点和长度时,可执行右移位指令以将数据右移位,将移入的最高有效位零扩展,且储存结果,随后可对右移位指令的结果执行BZHI指令以将结果的比长度更高的有效位归零并存储结果。这可如下所示:
结果1=右移位数据,起点
结果2=BZHI结果1,长度
有利地,这可对每个位字段提取过程消除一个或多个指令,因为如果解码算法提供了感兴趣位范围的起点则可能不需要计算长度。
当在运行时确定了感兴趣位范围的起点和终点或起点和长度时,立即使用这些值并仅用两个指令来提取位字段的能力可提供一优点。一些ISA是对单个指令仅允许显式指定两个操作数的2-源指令集体系结构。具有可变起点和可变终点的通用位字段提取指令可能需要三个输入,即起始数据、起点以及一端点和长度之一。在一些实例中,位范围的可变起点和可变终点(或长度)可通过不同计算提供,和/或在不同时间知道。在2-源ISA中,可在单个输入中预先组合起点与端点或长度。然而,在一些实例中,预先组合这些输入可能会花至少两个附加指令,并且可倾向于增大总体等待时间。可执行位范围归零操作而不需要指定可变起点和可变终点(或长度)两者的指令可提供性能优点。因此,用位范围隔离指令隐式地指定起点,并从位范围隔离指令略去移位操作可各自提供性能优点。
所隔离和提取的位字段可被用于各种用途,诸如举例而言将所提取的位字段置为机器的数据字大小以供进一步处理,执行并行散布或存入操作等。各个实施例的范围不限于任何已知的这种处理。
图8是位范围隔离逻辑830的一示例实施例的框图。该位范围隔离逻辑可被包括在执行单元中,并且可对位范围隔离指令作出响应。
所示位范围隔离逻辑用于32位操作。该逻辑可被容易地扩展以执行64位或更大的操作。此外,所示逻辑假设感兴趣位范围的隐式起点在最低有效位(LSB)。因此,所示逻辑与图3所示操作接近相像。
位范围隔离逻辑接收32位源操作数832和表示感兴趣位范围的另一端的位位置的8位位置值834作为输入。
位范围隔离逻辑包括掩码生成逻辑836。该掩码生成逻辑包括4个2:3饱和解码器838A-D。2:3饱和解码器各自耦合成接收8位位置值。第一对饱和解码器838A-B的输出端与第一6:16饱和解码器840A的输入端耦合。第二对饱和解码器838C-D的输出端与第二6:16饱和解码器840B的输入端耦合。掩码生成逻辑可用于基于该8位位置值生成掩码。在一个实施例中,掩码生成逻辑可生成具有以下的掩码:(1)第一位范围,每个位与感兴趣位范围在相应位置中的位相对应且各自具有值1;以及(2)第二位范围,每个位与不感兴趣的不想要位范围在相应位置中的位相对应且各自具有值0。例如,从感兴趣位范围的隐式最低有效位(LSB)开始直到由该8位位置值指定的感兴趣位范围的终点,掩码可具有1,而对于所有更高有效位则为0。
32位掩码寄存器842与第一和第二6:16饱和解码器的输出端耦合以接收掩码。作为示例,该32位掩码在逻辑上可包括临时寄存器。
位范围隔离逻辑还包括逐位运算逻辑844。在一个或多个实施例中,逐位运算逻辑可包括与(AND)运算。替代地,逐位运算逻辑可包括或(OR)逻辑、异或(XOR)逻辑等。逐位运算逻辑被耦合成从32位掩码寄存器接收32位掩码。逐位运算逻辑还被耦合成接收32位源操作数。逐位运算逻辑可用于对该32位源操作数和32位掩码执行逐位运算。
在与运算逻辑的情形中,32位源操作数的被掩码中的1掩码的位在结果中被相同地再现,而32位源操作数的被掩码中的0掩码的位可被全部清零或被置零。这种与运算逻辑可被示为归零逻辑。
在或运算逻辑的情形中,32位源操作数的被掩码中的1掩码的位在结果中被相同地再现,而32位源操作数的被掩码中的0掩码的位可被全部置1。通常用与运算逻辑将不想要的位清零比用或运算逻辑将它们置1更为有用,但是存在或运算逻辑提供优点的实例。
所示位范围隔离逻辑830的轻微变化可允许显式灵活起始位置,而非隐式最低有效位(LSB)起始。可任选地,解码器838A-D和解码器840A-B可以不是饱和解码器,并且显式起始位置可被添加至非饱和解码器作为附加输入。这可允许与图5中所示接近相像的位范围隔离操作。
在一个或多个实施例中,通用寄存器集合的寄存器可被用来储存一个或多个源和/或目标操作数。为了进一步说明特定概念,将讨论在各种英特尔体系结构处理器中可用的适当通用寄存器的示例实施例,但是这些具体寄存器当然并非是必需的。
图9示出适当的32位通用寄存器集合950的一个具体示例实施例。32位寄存器集合包括8个32位或双字通用寄存器。这些寄存器被称为EAX、EBX、ECX、EDX、ESI、EDI、EBP以及ESP。这些32位寄存器也可以16位和8位模式寻址。EAX、EBX、ECX和EDX寄存器的低16位被分别称为AX、BX、CX和DX。作为示例,具有16位的字无符号整数可被分别储存在寄存器BX、CX和DX中。具有32位的双字无符号整数可被储存在寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP、R8D-R15D中。
图10示出适当的64位通用寄存器集合1052的另一个具体示例实施例。64位寄存器集合包括16个64位或四字通用寄存器。这些寄存器被称为RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、R8、R9、R10、R11、R12、R13、R14和R15。这些寄存器对32位操作数可用32位模式操作,而对64位操作数可用64位模式操作。RAX、RBX、RCX、RDX、RSI、RDI、RBP和RSP寄存器的低32位分别对应于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP寄存器。寄存器R8-R15的低32位在32位模式中也可寻址,且称为R8D-R15D。作为示例,具有64位的四字无符号整数可被储存在寄存器RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP或R8-R15寄存器中。
此外,如有需要可在64和IA-32架构软件开发人员手册卷1:基础架构,序号:253665-032US,2009年9月中获得对通用寄存器的其它描述。这些特定寄存器只是示例的而非必要的。
图11示出表示状态或标志寄存器的一适当示例实施例的EFLAGS寄存器。该特定寄存器和这些特定标志不是必要的。
EFLAGS寄存器是包括一组状态标志、一控制标志和一组***标志的32位寄存器。状态标志包括进位标志(CF,位0)、奇偶标志(PF,位2)、辅助进位标志(AF,位4)、零标志(ZF,位6)、符号标志(SF,位7)、以及溢出标志(OF,位11)。
***标志包括陷阱标志(TF,位8)、中断启用标志(IF,位9)、I/O优先级(IOPL,位12-13)、嵌套任务(NT,位14)、恢复标志(RF,位16)、虚拟-8086模式(VM,位17)、对齐校验(AC,位18)、虚拟中断标志(VIF,位19)、虚拟中断待定(VIP,位20)、以及ID标志(ID,位21)。控制标志包括方向标志(DF,位10)。EFLAGS的位22-31被预留。
EFLAGS寄存器是之前的16位FLAGS寄存器的后继者。另外,64位模式处理器中的EFLAGS寄存器已通过RFLAGS寄存器后继并扩展至64位。RFLAGS的低32位与EFLAGS相同。在FLAGS、EFLAGS和RFLAGS寄存器的每一个中,进位标志(CF)是位0。对EFLAGS/RFLAGS寄存器以及进位标志的额外说明必要时可从64and IA-32架构软件开发者手册卷1:基础架构,序号:253665-032US,2009年9月中获得。
一个或多个实施例包括一制品,该制品包括其上存储有位范围隔离指令的有形机器可访问和/或机器可读介质,所述位范围隔离指令在由机器(例如执行单元)执行时引起如在本文中其它地方描述的位范围隔离操作。有形介质可包括一种或多种固体材料。介质可包括以可由机器访问的形式提供——例如存储——信息的机构。例如,介质可选地包括可记录介质,例如软盘、光学存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除和可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存及其组合形式。
合适的机器包括,但不局限于,执行单元、通用处理器、专用处理器(例如图形处理器和密码处理器)、密码加速器、网络通信处理器、计算机***、网络设备、调制解调器、个人数字助理(PDA)、蜂窝电话以及具有一个或多个执行单元的众多其它电子设备,这里仅给出很少一些例子。
又一些其它实施例涉及计算机***、嵌入式***或具有执行单元和/或执行如本文所述方法的其它电子设备。
图12是合适的计算机***1201的第一示例性实施例的框图。
该计算机***包括处理器1200。该处理器包括能够执行至少一个位范围隔离指令1202的至少一个执行单元1206。
该处理器经由总线(例如前侧总线)或其它互连1280耦合于芯片组1281。该互连可用来经由芯片组在处理器和***中的其它组件之间传输数据信号。
芯片组包括已知为存储器控制器中枢(MCH)1282的***逻辑芯片。MCH耦合于前侧总线或其它互连1280。
存储器1286耦合于MCH。在各实施例中,存储器可包括随机存取存储器(RAM)。DRAM是用于一些但非全部计算机***的一类RAM的示例。如图所示,存储器可用来存储例如一个或多个位范围隔离指令之类的指令1287以及数据1288。
组件互连1285也与MCH耦合。在一个或多个实施例中,组件互连可包括一个或多个外设部件互连快速(PCIe)接口。组件互连可允许其它组件通过芯片组耦合于***的其余部分。这些组件的一个示例是图形芯片或其它图形设备,尽管这是可任选的而非必需的。
芯片组还包括输入/输出(I/O)控制器中枢(ICH)1284。ICH通过中枢接口总线或其它互连1283耦合于MCH。在一个或多个实施例中,该总线或其它互连1283可包括直接媒体接口(DMI)。
数据存储1289耦合于ICH。在各个实施例中,数据存储可包括硬盘驱动、软盘驱动、CD-ROM设备、闪存设备等,或其组合。
第二组件互连1290也与ICH耦合。在一个或多个实施例中,第二组件互连可包括一个或多个外设部件互连快速(PCIe)接口。第二组件互连可允许多种类型的组件通过芯片组耦合于***的其余部分。
串行扩展端口1291也与ICH耦合。在一个或多个实施例中,串行扩展端口可包括一个或多个通用串行总线(USB)端口。串行扩展端口可允许多种其它类型的输入/输出设备通过芯片组耦合于***的其余部分。
可任选地耦合于ICH的其它组件的少量说明性示例包括但不限于音频控制器、无线收发机以及用户输入设备(例如键盘、鼠标)。
网络控制器也耦合于ICH。网络控制器可允许***与网络耦合。
在一个或多个实施例中,计算机***可执行从美国华盛顿州雷蒙德的微软公司获得的WINDOWSTM操作***版本。替代地,可使用例如UNIX、Linux或嵌入式***之类的其它操作***。
这只是合用计算机***的一个具体示例。例如,在一个或多个可选实施例中,处理器可具有多个内核。又如,在一个或多个替代实施例中,MCH 1282可与处理器1200一起物理地集成在管芯上,并且处理器可通过集成的MCH与存储器1286直接耦合。作为另一示例,在一个或多个替代实施例中,其它组件可与处理器一起集成在管芯上,从而提供片上***(SoC)设计。作为又一示例,在一个或多个替代实施例中,计算机***可具有多个处理器。
图13是适当计算机***1301的第二示例性实施例的框图。该第二示例性实施例与前面描述的第一示例性计算机***具有某些相似之处。为简明起见,讨论将倾向于突出其不同点而不对所有的相似点予以重复。
类似于前述的第一示例性实施例,计算机***包括处理器1300以及具有I/O控制器中枢(ICH)1384的芯片组1381。另外与第一示例性实施例相似,计算机***包括耦合于芯片组的第一组件互连1385、耦合于ICH的第二组件互连1390、耦合于ICH的串行扩展端口1391、耦合于ICH的网络控制器1392以及耦合于ICH的数据存储1389。
在该第二实施例中,处理器1300是多核处理器。多核处理器包括处理器内核1394-1至1394-M,其中M可以是大于或等于2的整数(例如2、4、7或更大的整数)。每个内核可包括能执行如本文揭示的指令的至少一个实施例的至少一个执行单元。如图所示,内核-1包括高速缓存1395(例如L1高速缓存)。每个其它内核可相似地包括专用的高速缓存。处理器内核可在单个集成电路(IC)芯片上实现。
处理器也包括至少一个共享高速缓存1396。该共享高速缓存可存储由处理器的一个或多个组件(诸如内核)利用的数据(例如指令)。例如,共享高速缓存可在本地对存储在存储器1386中的数据进行高速缓存,以便于处理器组件的更快速访问。在一个或多个实施例中,共享高速缓存可包括一个或多个中级高速缓存,诸如级2(L2)、级3(L3)、级4(L4)或其它级的高速缓存、最末级高速缓存(LLC)和/或其组合。
处理器内核和共享高速缓存分别耦合于总线或其它互连1397。该总线或其它互连可耦合内核和共享高速缓存并允许通信。
处理器还包括存储器控制器中枢(MCH)1382。如该示例性实施例所示,MCH与处理器1300集成。例如MCH可与处理器内核一起位于管芯上。处理器通过MCH耦合于存储器1386。在一个或多个实施例中,存储器可包括DRAM,尽管这不是必需的。
芯片组包括输入/输出(I/O)中枢1393。I/O中枢通过总线(例如快速路径互连(QPI))或其它互连1380耦合于处理器。第一组件互连1385耦合于I/O中枢1393。
这只是适当***的一个具体示例。对膝上机、台式机、手持PC、个人数字助理、作业站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微型控制器、蜂窝电话、便携式媒体播放器、手持设备以及多种其它电子设备的业内已知的其它***设计和配置也是适用的。总地来说,能够包含如本文揭示的处理器和/或执行单元的众多的***或电子设备一般都是适用的。
在以上描述中,出于说明目的阐述了众多具体细节以便提供对各个实施例的透彻理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的一些也可实践一个或多个其它实施例。所描述的各具体实施例不是为了限制本发明的范围而是为了说明本发明的各个实施例而提供的。本发明的范围不是由以上提供的各具体示例来确定的,而是仅由所附的权利要求书来确定。在其它情况下,公知的电路、结构、设备和操作以方框图形式示出而不示出其细节以避免对本说明书理解的混淆。只要认为合适,附图标记或附图标记的尾部在各附图中重复以表示相应或相似的部件,它们可选择地具有相似的特性。
某些操作可通过硬件组件来实现,或可体现为机器可执行指令,所述机器可执行指令用来使或至少导致用该指令编程的电路或硬件执行这些操作。电路可包括通用或专用处理器或逻辑电路,这里仅列举出一些示例。这些操作也可选择地由硬件和软件的组合来执行。执行单元和/或处理器可包括专用或特定电路或其它逻辑,它们响应机器指令或源自机器指令的一个或多个控制信号来存储由指令指定的结果操作数。
还要理解,本说明书全文对“一个实施例”、“实施例”或“一个或多个实施例”的引用例如表示具体特征可包含在各实施例的实践中。同样要理解,在本说明书中,多个特征有时在一个实施例、一张附图或其描述中编为一组,以将本公开内容连成一体并帮助各创新性方面的理解。然而,这种公开方法不应被解释为反映各个实施例需要比在每一权利要求中明确表述的特征更多的特征的意图。相反,如所附权利要求书所反映的,各创新性方面可在于比单个所公开实施例的所有特征更少的特征。因此,详细说明所附的权利要求书据此明确被并入详细说明中,每一项权利要求都独立作为本发明的一个单独实施例。
Claims (15)
1.一种处理器,包括:
指令获取逻辑单元;
分支预测逻辑单元;
多个寄存器,包括控制寄存器、状态寄存器以及64位通用寄存器,所述64位通用寄存器的低32位是可寻址的用于操作在32位操作数上,所述状态寄存器包括32位寄存器,所述32位寄存器具有与一组状态标志相关联的多个位,所述状态标志包括:进位标志、零标志、符号标志、以及溢出标志;
指令解码器,用于接收并解码位范围隔离指令,该指令隐式地指示感兴趣位范围的第一端,并且通过与该指令相关联的立即值来显式地指示感兴趣位范围的第二端作为位位置;以及
执行单元,用于在该指令的源操作数上执行位范围隔离操作,对该指令的编码指示多个源操作数大小之一,包括32位操作数大小和64位操作数大小,所述执行单元包括:
掩码生成逻辑单元,用于生成掩码;以及
逐位操作逻辑单元,用于接收所述源操作数和所述掩码,并在所述源操作数和所述掩码上执行逐位运算以生成一结果,所述结果包括第一位范围和第二位范围,所述第一位范围中的各个位的值与所述源操作数在相应位置中的位的值相同;在所述第二位范围中,不管所述源操作数在相应位置中的位的值如何,所述第二位范围都具有相同值,
其中对所述位范围隔离指令隐式的是所述结果的第一位范围相对于所述源操作数的相同值的位在位位置上没有移动,并且
其中该指令允许所述相同值为二进制一。
2.如权利要求1所述的处理器,其特征在于,还包括:寄存器重命名逻辑单元、调度逻辑单元、重排序逻辑单元、以及回退逻辑单元。
3.如权利要求1所述的处理器,其特征在于,所述掩码包括:第一位范围,其各个位与所述感兴趣位范围在相应位置中的位相对应且各自具有值一(1);以及,第二位范围,其各个位与不感兴趣的位范围在相应位置中的位相对应且各自具有值零(0)。
4.一种处理器,包括:
指令获取逻辑单元;
分支预测逻辑单元;
多个寄存器,包括控制寄存器、状态寄存器以及64位通用寄存器,所述64位通用寄存器的低32位是可寻址的用于操作在32位操作数上,所述状态寄存器包括32位寄存器,所述32位寄存器具有与一组状态标志相关联的多个位,所述状态标志包括:进位标志、零标志、符号标志、以及溢出标志;
指令解码器,用于接收并解码位范围隔离指令,该指令隐式地指示感兴趣位范围的第一端,并且通过与该指令相关联的立即值来显式地指示感兴趣位范围的第二端作为位位置;以及
执行单元,用于在该指令的源操作数上执行位范围隔离操作,对该指令的编码指示多个源操作数大小之一,包括32位操作数大小和64位操作数大小,所述执行单元包括:
掩码生成逻辑单元,用于生成掩码;以及
逐位操作逻辑单元,用于接收所述源操作数和所述掩码,并在所述源操作数和所述掩码上执行逐位与运算以生成一结果,所述结果包括第一位范围和第二位范围,所述第一位范围中的各个位的值与所述源操作数在相应位置中的位的值相同;在所述第二位范围中,不管所述源操作数在相应位置中的位的值如何,所述第二位范围都具有相同值,
其中,对所述位范围隔离指令的执行被完成且不对所述结果的第一范围进行移位,
其中,所述位范围隔离指令不显式地指示要存储在所述结果中的所述第一位范围的开始处的位位置。
5.一种片上***(SoC),包括:
网络控制器,用于将所述SoC耦合到网络;
存储器控制器,用于提供对动态随机存取存储器的访问;
共享高速缓存,用于存储数据;以及
多个处理器核,耦合到所述存储器控制器和所述共享高速缓存,所述多个处理器核中的至少一个包括:
L1高速缓存;
指令获取逻辑单元;
分支预测逻辑单元;
多个寄存器,包括控制寄存器、状态寄存器以及64位通用寄存器,所述64位通用寄存器的低32位是可寻址的用于操作在32位操作数上,所述状态寄存器包括32位寄存器,所述32位寄存器具有与一组状态标志相关联的多个位,所述状态标志包括:进位标志、零标志、符号标志、以及溢出标志;
指令解码器,用于接收并解码位范围隔离指令,该指令隐式地指示感兴趣位范围的第一端,并且通过与该指令相关联的立即值来显式地指示感兴趣位范围的第二端作为位位置;以及
执行单元,用于在该指令的源操作数上执行位范围隔离操作,对该指令的编码指示多个源操作数大小之一,包括32位操作数大小和64位操作数大小,所述执行单元包括:
掩码生成逻辑单元,用于生成掩码;以及
逐位操作逻辑单元,用于接收所述源操作数和所述掩码,并在所述源操作数和所述掩码上执行逐位与运算以生成一结果,所述结果包括第一位范围和第二位范围,所述第一位范围中的各个位的值与所述源操作数在相应位置中的位的值相同;在所述第二位范围中不管所述源操作数在相应位置中的位的值如何,所述第二位范围都具有相同值,
其中对所述位范围隔离指令隐式的是所述结果的第一位范围相对于所述源操作数的相同值的位在位位置上没有移动。
6.如权利要求5所述的SoC,其特征在于,所述多个处理器核中的至少一个还包括:寄存器重命名逻辑单元、调度逻辑单元、重排序逻辑单元、以及回退逻辑单元。
7.如权利要求5所述的SoC,其特征在于,所述掩码包括:第一位范围,其各个位与所述感兴趣位范围在相应位置中的位相对应且各自具有值一(1);以及,第二位范围,其各个位与不感兴趣的位范围在相应位置中的位相对应且各自具有值零(0)。
8.如权利要求5所述的SoC,其特征在于,所述相同值是比特值零(0)。
9.如权利要求5所述的SoC,其特征在于,所述相同值是比特值一(1)。
10.一种片上***(SoC),包括:
网络控制器,用于将所述SoC耦合到网络;
存储器控制器,用于提供对动态随机存取存储器的访问;
共享高速缓存,用于存储数据;以及
多个处理器核,耦合到所述存储器控制器和所述共享高速缓存,所述多个处理器核中的至少一个包括:
L1高速缓存;
指令获取逻辑单元;
分支预测逻辑单元;
多个寄存器,包括控制寄存器、状态寄存器以及64位通用寄存器,所述64位通用寄存器的低32位是可寻址的用于操作在32位操作数上,所述状态寄存器包括32位寄存器,所述32位寄存器具有与一组状态标志相关联的多个位,所述状态标志包括:进位标志、零标志、符号标志、以及溢出标志;
指令解码器,用于接收并解码位范围隔离指令,该指令隐式地指示感兴趣位范围的第一端,并且通过与该指令相关联的立即值来显式地指示感兴趣位范围的第二端作为位位置;以及
执行单元,用于在该指令的源操作数上执行位范围隔离操作,对该指令的编码指示多个源操作数大小之一,包括32位操作数大小和64位操作数大小,所述执行单元包括:
掩码生成逻辑单元,用于生成掩码;以及
逐位操作逻辑单元,用于接收所述源操作数和所述掩码,并在所述源操作数和所述掩码上执行逐位运算以生成一结果,所述结果包括第一位范围和第二位范围,所述第一位范围中的各个位的值与所述源操作数在相应位置中的位的值相同;在所述第二位范围中不管所述源操作数在相应位置中的位的值如何,所述第二位范围都具有相同值,
其中,对所述位范围隔离指令的执行被完成且不对所述结果的第一位范围进行移位,
其中,所述位范围隔离指令不显式地指示要存储在所述结果中的所述第一位范围的开始处的位位置,并且
其中该指令允许所述相同值为二进制一。
11.一种手持式设备,包括:
动态随机存取存储器;
存储器控制器,耦合到所述动态随机存取存储器;
闪存存储器设备,用于存储数据;
无线收发机;
用户输入设备;
网络控制器,用于将所述手持式设备耦合到网络;
共享高速缓存,用于存储数据;以及
多个处理器核,耦合到所述存储器控制器和所述共享高速缓存,所述多个处理器核中的至少一个包括:
L1高速缓存;
指令获取逻辑单元;
分支预测逻辑单元;
多个寄存器,包括控制寄存器、状态寄存器以及64位通用寄存器,所述64位通用寄存器的低32位是可寻址的用于操作在32位操作数上,所述状态寄存器包括32位寄存器,所述32位寄存器具有与一组状态标志相关联的多个位,所述状态标志包括:进位标志、零标志、符号标志、以及溢出标志;
指令解码器,用于接收并解码位范围隔离指令,该指令隐式地指示感兴趣位范围的第一端,并且通过与该指令相关联的立即值来显式地指示感兴趣位范围的第二端作为位位置;以及
执行单元,用于在该指令的源操作数上执行位范围隔离操作,对该指令的编码指示多个源操作数大小之一,包括32位操作数大小和64位操作数大小,所述执行单元包括:
掩码生成逻辑单元,用于生成掩码;以及
逐位操作逻辑单元,用于接收所述源操作数和所述掩码,并在所述源操作数和所述掩码上执行逐位运算以生成一结果,所述结果包括第一位范围和第二位范围,所述第一位范围中的各个位的值与所述源操作数在相应位置中的位的值相同;在所述第二位范围中不管所述源操作数在相应位置中的位的值如何,所述第二位范围都具有相同值,
其中对所述位范围隔离指令隐式的是所述结果的第一位范围相对于所述源操作数的相同值的位在位位置上没有移动,并且
其中该指令允许所述相同值为二进制一。
12.如权利要求11所述的手持式设备,其特征在于,所述多个处理器核中的至少一个还包括:寄存器重命名逻辑单元、调度逻辑单元、重排序逻辑单元、以及回退逻辑单元。
13.如权利要求11所述的手持式设备,其特征在于,所述掩码包括:第一位范围,其各个位与所述感兴趣位范围在相应位置中的位相对应且各自具有值一(1);以及,第二位范围,其各个位与不感兴趣的位范围在相应位置中的位相对应且各自具有值零(0)。
14.如权利要求11所述的手持式设备,其特征在于,对所述位范围隔离指令的执行被完成且不对所述结果的第一范围进行移位。
15.一种手持式设备,包括:
动态随机存取存储器;
存储器控制器,耦合到所述动态随机存取存储器;
闪存存储器设备,用于存储数据;
无线收发机;
用户输入设备;
网络控制器,用于将所述手持式设备耦合到网络;
USB端口,用于将所述手持式设备耦合到输入/输出设备;
共享高速缓存,用于存储数据;以及
多个处理器核,耦合到所述存储器控制器和所述共享高速缓存,所述多个处理器核中的至少一个包括:
L1高速缓存;
指令获取逻辑单元;
分支预测逻辑单元;
多个寄存器,包括控制寄存器、状态寄存器以及64位通用寄存器,所述64位通用寄存器的低32位是可寻址的用于操作在32位操作数上,所述状态寄存器包括32位寄存器,所述32位寄存器具有与一组状态标志相关联的多个位,所述状态标志包括:进位标志、零标志、符号标志、以及溢出标志;
指令解码器,用于接收并解码位范围隔离指令,该指令隐式地指示感兴趣位范围的第一端,并且通过与该指令相关联的立即值来显式地指示感兴趣位范围的第二端作为位位置;以及
执行单元,用于在该指令的源操作数上执行位范围隔离操作,对该指令的编码指示多个源操作数大小之一,包括32位操作数大小和64位操作数大小,所述执行单元包括:
掩码生成逻辑单元,用于生成掩码;以及
逐位操作逻辑单元,用于接收所述源操作数和所述掩码,并在所述源操作数和所述掩码上执行逐位与运算以生成一结果,所述结果包括第一位范围和第二位范围,所述第一位范围中的各个位的值与所述源操作数在相应位置中的位的值相同;在所述第二位范围中不管所述源操作数在相应位置中的位的值如何,所述第二位范围都具有相同值,
其中,所述位范围隔离指令不显式地指示要存储在所述结果中的所述第一位范围的开始处的位位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/645,307 US9003170B2 (en) | 2009-12-22 | 2009-12-22 | Bit range isolation instructions, methods, and apparatus |
US12/645,307 | 2009-12-22 | ||
CN201010620155.7A CN102109977B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010620155.7A Division CN102109977B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461461A CN104461461A (zh) | 2015-03-25 |
CN104461461B true CN104461461B (zh) | 2018-10-09 |
Family
ID=44152791
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811018767.1A Active CN109375950B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
CN201010620155.7A Active CN102109977B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
CN201410674064.XA Active CN104461461B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811018767.1A Active CN109375950B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
CN201010620155.7A Active CN102109977B (zh) | 2009-12-22 | 2010-12-21 | 位范围隔离指令、方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (5) | US9003170B2 (zh) |
JP (4) | JP5456643B2 (zh) |
CN (3) | CN109375950B (zh) |
DE (1) | DE102010053967A1 (zh) |
TW (1) | TWI502493B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
CN103946795B (zh) * | 2011-12-14 | 2018-05-15 | 英特尔公司 | 用于生成循环对齐计数或循环对齐掩码的***、装置和方法 |
WO2013095555A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data rearrangement control indexes generation processors, methods, systems, and instructions |
WO2013095554A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
US10223112B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
CN104011644B (zh) | 2011-12-22 | 2017-12-08 | 英特尔公司 | 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、***和指令 |
CN104126168B (zh) * | 2011-12-22 | 2019-01-08 | 英特尔公司 | 打包数据重新安排控制索引前体生成处理器、方法、***及指令 |
CN104011668B (zh) * | 2011-12-22 | 2017-03-22 | 英特尔公司 | 用于将源操作数映射到不同范围的***、装置和方法 |
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
US9778932B2 (en) * | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9207942B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses,and methods for zeroing of bits in a data element |
CN104346208B (zh) * | 2013-07-31 | 2017-09-15 | 上海华虹集成电路有限责任公司 | 仿真器***及仿真芯片 |
US9706228B2 (en) * | 2013-10-15 | 2017-07-11 | Qualcomm Incorporated | Support for large numbers of views in multi-layer coding |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
US9952987B2 (en) * | 2014-11-25 | 2018-04-24 | Intel Corporation | Posted interrupt architecture |
US9904548B2 (en) | 2014-12-22 | 2018-02-27 | Intel Corporation | Instruction and logic to perform a centrifuge operation |
US9727353B2 (en) | 2015-10-30 | 2017-08-08 | International Business Machines Corporation | Simultaneously capturing status information for multiple operating modes |
US10761849B2 (en) | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
CN107193530B (zh) * | 2017-04-28 | 2020-04-24 | 广州酷狗计算机科技有限公司 | 一种生成随机数的方法和装置 |
DE102018208851A1 (de) * | 2018-06-05 | 2019-12-05 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Umwandeln von Eingangsbitfolgen |
CN110968347B (zh) * | 2019-12-02 | 2021-09-17 | 秒针信息技术有限公司 | 一种数据处理的方法及装置 |
CN111209041B (zh) * | 2019-12-31 | 2022-05-17 | Oppo广东移动通信有限公司 | 神经网络处理器、片上***及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526296A (en) * | 1991-05-08 | 1996-06-11 | Hitachi, Ltd. | Bit field operating system and method with two barrel shifters for high speed operations |
US5651121A (en) * | 1992-12-18 | 1997-07-22 | Xerox Corporation | Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand |
Family Cites Families (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1587656A (zh) * | 1968-08-01 | 1970-03-27 | ||
FR1590660A (zh) | 1968-08-02 | 1970-04-20 | ||
JPS512771A (zh) | 1974-06-27 | 1976-01-10 | Kanegafuchi Chemical Ind | |
US3982229A (en) * | 1975-01-08 | 1976-09-21 | Bell Telephone Laboratories, Incorporated | Combinational logic arrangement |
US4569016A (en) | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
US4785393A (en) | 1984-07-09 | 1988-11-15 | Advanced Micro Devices, Inc. | 32-Bit extended function arithmetic-logic unit on a single chip |
JPS61103241A (ja) | 1984-10-27 | 1986-05-21 | Nec Corp | 情報処理装置 |
JPS6491228A (en) | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
US5129066A (en) * | 1987-09-17 | 1992-07-07 | International Business Machines Corporation | Bit mask generator circuit using multiple logic units for generating a bit mask sequence |
JPH02299082A (ja) | 1989-05-12 | 1990-12-11 | Fujitsu Ltd | 可変長データを処理するプロセッサ |
US5201056A (en) | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
US5193167A (en) | 1990-06-29 | 1993-03-09 | Digital Equipment Corporation | Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system |
JP3247724B2 (ja) | 1991-05-08 | 2002-01-21 | 株式会社日立製作所 | ビットフィールド操作演算装置及びマイクロプロセッサ |
JP2984463B2 (ja) | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
JP3215085B2 (ja) | 1991-06-24 | 2001-10-02 | 株式会社日立製作所 | 中央処理装置及びマイクロコンピュータ |
JPH0512771A (ja) | 1991-07-08 | 1993-01-22 | Matsushita Electric Ind Co Ltd | 磁気記録再生装置 |
US5414821A (en) * | 1991-12-17 | 1995-05-09 | Unisys Corporation | Method of and apparatus for rapidly loading addressing environment by checking and loading multiple registers using a specialized instruction |
JP3155835B2 (ja) | 1992-09-30 | 2001-04-16 | キヤノン株式会社 | 画像形成方法及び装置ユニット |
US5497493A (en) * | 1993-09-30 | 1996-03-05 | Intel Corporation | High byte right-shift apparatus with a register alias table |
US5564056A (en) * | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
US5598546A (en) * | 1994-08-31 | 1997-01-28 | Exponential Technology, Inc. | Dual-architecture super-scalar pipeline |
US5704052A (en) * | 1994-11-06 | 1997-12-30 | Unisys Corporation | Bit processing unit for performing complex logical operations within a single clock cycle |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
JP3433588B2 (ja) * | 1995-10-19 | 2003-08-04 | 株式会社デンソー | マスクデータ生成回路及びビットフィールド操作回路 |
US5696711A (en) * | 1995-12-22 | 1997-12-09 | Intel Corporation | Apparatus and method for performing variable precision floating point rounding operations |
US6128725A (en) * | 1997-01-24 | 2000-10-03 | Texas Instruments Incorporated | Microprocessor with an instruction for setting or clearing a bit field |
US5930492A (en) | 1997-03-19 | 1999-07-27 | Advanced Micro Devices, Inc. | Rapid pipeline control using a control word and a steering word |
US6052522A (en) * | 1997-10-30 | 2000-04-18 | Infineon Technologies North America Corporation | Method and apparatus for extracting data stored in concatenated registers |
US7133040B1 (en) * | 1998-03-31 | 2006-11-07 | Intel Corporation | System and method for performing an insert-extract instruction |
US6266769B1 (en) * | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6263426B1 (en) * | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US5995122A (en) * | 1998-04-30 | 1999-11-30 | Intel Corporation | Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format |
US6356951B1 (en) * | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
US6754687B1 (en) | 1999-11-12 | 2004-06-22 | Pts Corporation | Methods and apparatus for efficient cosine transform implementations |
US6801625B1 (en) * | 1999-12-08 | 2004-10-05 | Intel Corporation | Apparatus and method for stripping parity bits from an input stream |
US8874882B1 (en) * | 2000-03-30 | 2014-10-28 | Intel Corporation | Compiler-directed sign/zero extension of a first bit size result to overwrite incorrect data before subsequent processing involving the result within an architecture supporting larger second bit size values |
US6757771B2 (en) * | 2000-08-09 | 2004-06-29 | Advanced Micro Devices, Inc. | Stack switching mechanism in a computer system |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US7237097B2 (en) * | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US20020188830A1 (en) | 2001-06-01 | 2002-12-12 | Brian Boles | Bit replacement and extraction instructions |
US6968446B1 (en) * | 2001-08-09 | 2005-11-22 | Advanced Micro Devices, Inc. | Flags handling for system call instructions |
JP3857614B2 (ja) | 2002-06-03 | 2006-12-13 | 松下電器産業株式会社 | プロセッサ |
CN1271523C (zh) * | 2002-08-21 | 2006-08-23 | 先进数字芯片株式会社 | 具有扩展指令的中央处理器 |
US7353371B2 (en) * | 2002-12-05 | 2008-04-01 | Intel Corporation | Circuit to extract nonadjacent bits from data packets |
US7539714B2 (en) * | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
US7321916B2 (en) * | 2003-07-28 | 2008-01-22 | Intel Corporation | Methods and apparatus for extracting integer remainders |
US7428631B2 (en) * | 2003-07-31 | 2008-09-23 | Intel Corporation | Apparatus and method using different size rename registers for partial-bit and bulk-bit writes |
US7095897B2 (en) * | 2003-12-19 | 2006-08-22 | Intel Corporation | Zero length or run length coding decision |
US7529924B2 (en) * | 2003-12-30 | 2009-05-05 | Intel Corporation | Method and apparatus for aligning ciphered data |
JP2006127460A (ja) | 2004-06-09 | 2006-05-18 | Renesas Technology Corp | 半導体装置、半導体信号処理装置、およびクロスバースイッチ |
US7315937B2 (en) * | 2004-10-01 | 2008-01-01 | Mips Technologies, Inc. | Microprocessor instructions for efficient bit stream extractions |
US7334116B2 (en) * | 2004-10-06 | 2008-02-19 | Sony Computer Entertainment Inc. | Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length |
US7558724B2 (en) * | 2005-04-19 | 2009-07-07 | Hewlett-Packard Development Company, L.P. | Operation region describing a virtual device |
US20060259737A1 (en) | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Vector processor with special purpose registers and high speed memory access |
US20090006822A1 (en) | 2006-01-27 | 2009-01-01 | Freescale Semiconductor , Inc. | Device and Method for Adding and Subtracting Two Variables and a Constant |
US7529918B2 (en) * | 2006-07-21 | 2009-05-05 | Broadcom Corporation | System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor |
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US8538012B2 (en) * | 2007-03-14 | 2013-09-17 | Intel Corporation | Performing AES encryption or decryption in multiple modes with a single instruction |
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
CN101446891A (zh) * | 2007-11-27 | 2009-06-03 | 上海高性能集成电路设计中心 | 一种高性能微处理器结构寄存器保留恢复指令的实现方法 |
JP2010255319A (ja) | 2009-04-27 | 2010-11-11 | Ym Kogyo Kk | 手摺装置 |
US8230172B2 (en) * | 2009-12-03 | 2012-07-24 | Intel Corporation | Gather and scatter operations in multi-level memory hierarchy |
US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
WO2013095554A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
WO2013095613A2 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of mask permute instructions |
-
2009
- 2009-12-22 US US12/645,307 patent/US9003170B2/en active Active
-
2010
- 2010-11-15 JP JP2010255319A patent/JP5456643B2/ja active Active
- 2010-11-17 TW TW099139490A patent/TWI502493B/zh active
- 2010-12-09 DE DE102010053967A patent/DE102010053967A1/de not_active Withdrawn
- 2010-12-21 CN CN201811018767.1A patent/CN109375950B/zh active Active
- 2010-12-21 CN CN201010620155.7A patent/CN102109977B/zh active Active
- 2010-12-21 CN CN201410674064.XA patent/CN104461461B/zh active Active
-
2014
- 2014-01-08 JP JP2014001946A patent/JP6134947B2/ja active Active
- 2014-12-12 US US14/568,812 patent/US10372455B2/en active Active
- 2014-12-12 US US14/568,754 patent/US10579380B2/en active Active
- 2014-12-12 US US14/568,725 patent/US10579379B2/en active Active
-
2015
- 2015-11-09 JP JP2015219702A patent/JP6375280B2/ja active Active
-
2018
- 2018-03-14 US US15/921,134 patent/US10656947B2/en active Active
- 2018-07-23 JP JP2018138039A patent/JP6569969B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526296A (en) * | 1991-05-08 | 1996-06-11 | Hitachi, Ltd. | Bit field operating system and method with two barrel shifters for high speed operations |
US5651121A (en) * | 1992-12-18 | 1997-07-22 | Xerox Corporation | Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand |
Also Published As
Publication number | Publication date |
---|---|
CN102109977B (zh) | 2015-06-24 |
US10372455B2 (en) | 2019-08-06 |
US20150100760A1 (en) | 2015-04-09 |
JP6375280B2 (ja) | 2018-08-15 |
JP6569969B2 (ja) | 2019-09-04 |
US10579379B2 (en) | 2020-03-03 |
US20110153997A1 (en) | 2011-06-23 |
JP2018160288A (ja) | 2018-10-11 |
US20180203698A1 (en) | 2018-07-19 |
CN104461461A (zh) | 2015-03-25 |
JP2014081953A (ja) | 2014-05-08 |
CN109375950A (zh) | 2019-02-22 |
US20150143084A1 (en) | 2015-05-21 |
US9003170B2 (en) | 2015-04-07 |
JP2016026365A (ja) | 2016-02-12 |
CN102109977A (zh) | 2011-06-29 |
JP2011134304A (ja) | 2011-07-07 |
JP5456643B2 (ja) | 2014-04-02 |
TW201137741A (en) | 2011-11-01 |
US20150100761A1 (en) | 2015-04-09 |
US10579380B2 (en) | 2020-03-03 |
TWI502493B (zh) | 2015-10-01 |
JP6134947B2 (ja) | 2017-05-31 |
DE102010053967A1 (de) | 2011-07-14 |
CN109375950B (zh) | 2023-06-20 |
US10656947B2 (en) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461461B (zh) | 位范围隔离指令、方法和装置 | |
US20210357217A1 (en) | Systems and methods for executing a fused multiply-add instruction for complex numbers | |
JP6699845B2 (ja) | 方法及びプロセッサ | |
CN108958799B (zh) | 用于确定直方图的指令 | |
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
TWI517034B (zh) | 不讀取進位旗標地完成執行之旋轉指令 | |
US20130290685A1 (en) | Floating point rounding processors, methods, systems, and instructions | |
US9733935B2 (en) | Super multiply add (super madd) instruction | |
US10719317B2 (en) | Hardware apparatuses and methods relating to elemental register accesses | |
US20170242697A1 (en) | System and Method for Executing an Instruction to Permute a Mask | |
US10649774B2 (en) | Multiplication instruction for which execution completes without writing a carry flag | |
KR20170099873A (ko) | 벡터 비트 셔플을 수행하기 위한 방법 및 장치 | |
JP2019208203A (ja) | 浮動小数点データを圧縮するためのシステム | |
CN108292228B (zh) | 用于基于通道的步进收集的***、设备和方法 | |
JP2017539016A (ja) | 結合した乗算−乗算命令のための装置および方法 | |
WO2013095616A1 (en) | Apparatus and method for selecting elements of a vector computation | |
US20180088945A1 (en) | Apparatuses, methods, and systems for multiple source blend operations | |
CN109328333B (zh) | 用于累积式乘积的***、装置和方法 | |
CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
TW201810034A (zh) | 用於累和的系統、設備及方法 | |
JP2018506762A (ja) | 結合した加算−加算命令のための装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |