CN105453030A - 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 - Google Patents
向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 Download PDFInfo
- Publication number
- CN105453030A CN105453030A CN201480030091.1A CN201480030091A CN105453030A CN 105453030 A CN105453030 A CN 105453030A CN 201480030091 A CN201480030091 A CN 201480030091A CN 105453030 A CN105453030 A CN 105453030A
- Authority
- CN
- China
- Prior art keywords
- processor
- partial width
- register
- loading mode
- width
- 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 99
- 230000001419 dependent effect Effects 0.000 title 1
- 238000011068 loading method Methods 0.000 claims abstract description 229
- 230000004044 response Effects 0.000 claims abstract description 29
- 238000003860 storage Methods 0.000 claims description 41
- 230000008859 change Effects 0.000 claims description 18
- 230000001052 transient effect Effects 0.000 claims description 9
- 230000007704 transition Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 40
- 238000012545 processing Methods 0.000 description 20
- 210000004027 cell Anatomy 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 210000004940 nucleus Anatomy 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 244000045947 parasite Species 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000036755 cellular response Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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
Abstract
一方面的方法由处理器执行。该方法包括接收部分宽度加载指令。部分宽度加载指令将存储器的存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。该方法包括:响应于部分宽度加载指令而将数据从所指示的存储器位置加载到处理器。该方法包括:响应于部分宽度加载指令而将所加载数据的至少部分写入到寄存器的部分宽度。该方法包括:利用存储在寄存器的其余宽度中的、具有依赖于处理器的部分宽度加载模式的位值的位组来完成向寄存器写入。部分宽度加载指令不指示部分宽度加载模式。还公开了其他方法、处理器以及系统。
Description
背景
技术领域
本文中所描述的各实施例一般涉及处理器。具体而言,本文中所描述的各实施例一般涉及从处理器中的存储器加载数据。
背景技术
处理器的指令集通常包括处理器能够实行或执行的各种不同类型的指令。例如,通常这些指令集可包括各种算术指令、各种逻辑指令、用于将数据从存储器加载到处理器中的各种加载指令,等等。
一个挑战在于,可以被包括在指令集中的指令的数量一般是有限的。指令中的每一条指令都可包括操作代码或操作码。操作码可以表示指令的用于指定要被执行的特定指令和/或操作的诸部分。例如,给定的从存储器中加载数据的指令可以具有给定的唯一操作码,以便区别该指令与其他类型的指令,并允许处理器识别该指令。操作码可以表示指令格式中的一个或更多字段或位置中的给定长度的位组。通常,期望试图保持操作码的位数相对短,同时提供期望数量的指令/操作。长操作码倾向于增加解码器的尺寸和/或复杂度。另外,长操作码倾向于增加总指令长度,这会使指令使用更多程序空间并占据高速缓存中的更多空间。可以利用给定的操作码长度和/或指令长度来唯一地标识的不同指令的数量通常比所期望的更受限。在不最终耗尽可用的操作码或增加可变指令长度架构中的指令的长度的情况下,通常不能够连续地将附加的指令添加到指令集中。
在某些情况下,不同的指令和/或操作可以具有相同操作码(或操作码的相同部分),但包括一个或多个用于在不同版本的指令和/或操作之间进行区分的附加位。此方法的潜在的缺点在于,它可能倾向于增加指令长度,或者在某些情况下,在指令长度内可能会没有可用的空间来容纳用于在不同版本的指令/操作之间进行区分的这些附加位。
附图说明
通过参照以下描述以及用于示出实施例的附图,可最佳地理解本发明。在附图中:
图1是具有用于执行部分宽度加载指令的处理器的计算机系统的实施例的框图。
图2是可以根据符号扩展的部分宽度加载模式或零扩展的部分宽度加载模式来执行的部分宽度加载操作的第一示例实施例的框图。
图3是可以根据合并的部分宽度加载模式或者零扩的展部分宽度加载模式来执行的部分宽度加载操作的第二示例实施例的框图。
图4是可由处理器在处理部分宽度加载指令的实施例时执行的方法的实施例的流程框图。
图5是包括用于执行零扩展的32位存储器寻址的64位架构处理器的计算机系统的实施例的框图。
图6是为改变部分宽度加载模式而在用户级软件模块与操作系统模块之间的交互的实施例的框图。
图7是可以由操作系统模块、特许模块或其他系统级模块执行的方法的实施例的框图。
图8A是示出根据本发明的各实施例的示例性有序流水线和示例性寄存器重命名的无序发布/执行流水线的框图。
图8B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名的无序发布/执行架构核两者的框图。
图9A是根据本发明的各实施例的单个处理器核以及其与管芯上互连网络的连接以及其第2级(L2)高速缓存的本地子集的框图。
图9B是根据本发明的各实施例的图9A中的处理器核的部分的展开图。
图10是根据本发明的各实施例的可以具有多于一个的核、可以具有集成、存储器控制器、并可以具有集成图形设备的处理器的框图。
图11所示为根据本发明的一个实施例的系统的框图。
图12所示为根据本发明的实施例的第一更具体的示例性系统的框图。
图13所示为根据本发明的实施例的第二更具体的示例性系统的框图。
图14所示为根据本发明的实施例的SoC的框图。
图15是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在某些实施例中,处理器可以具有用于以两种或更多种不同的对应方式来处理给定的指令和/或给定的操作码的两种或更多种模式,例如,用于以两种或更多不同的对应方式来处理从存储器进行部分宽度加载的指令的两种或更多种模式。在以下描述中,阐述多个特定细节(例如,特定的指令操作、处理器配置、微架构细节、操作序列等)。然而,在没有这些具体细节的情况下也可实践诸实施例。在其他实例中,未详细示出公知的电路、结构和技术,以避免混淆对本描述的理解。
图1是计算机系统100的实施例的框图。在各实施例中,计算机系统可以表示台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、个人数字助理、蜂窝电话、服务器、网络设备(例如,路由器或交换机)、移动互联网设备(MID)、媒体播放器、智能电视、机顶盒、视频游戏控制器,或其他类型的电子设备。
计算机系统包括处理器101的实施例。在某些实施例中,处理器可以是通用处理器。例如,处理器可以是通常被用作中央处理单元(CPU)类型的通用处理器。在其他实施例中,处理器可以是专用处理器。合适的专用处理器的示例包括但不仅限于,协处理器、图形处理器、通信处理器、网络处理器、加密处理器、嵌入式处理器、以及数字信号处理器(DSP),仅举数例。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何一种,上述处理器的各种混合,或完全是其他类型的处理器。
计算机系统还包括存储器110的实施例。存储器通过耦合或互连机制109与处理器101耦合。合适的耦合或互连机制的示例包括但不仅限于,一个或多个互连、总线、中枢、存储器控制器、芯片组、芯片组组件等,以及上述各项的各种组合。存储器可包括相同或者不同类型的一个或多个存储器设备。适用于各实施例的一种常用类型的存储器是动态随机存取存储器(DRAM),但是可替代选地使用其他类型的存储器(例如,闪存)。存储器可以具有存储在其中的软件,例如,一个或多个操作系统(OS)以及一个或多个应用(未示出)。在操作期间,软件的指令可以被提供给处理器,并且可在处理器上运行。
如图所示,可以将部分宽度加载指令102提供给处理器101。例如,取出单元(未示出)可以取出部分宽度加载指令。部分宽度加载指令可表示机器代码指令、汇编语言指令、宏指令、或设备的ISA的控制信号。部分宽度加载指令可以显式地将存储器110中的存储器位置111指定(例如,通过一个或多个字段或位组)指定为源操作数,或以其他方式将存储器110中的存储器位置111指示(例如,隐式地指示)为源操作数,并且可将目的地寄存器115指定或以其他方式指示为将存储从存储器加载的部分宽度数据112的目的地操作数。在本文中使用术语“部分宽度数据”来指填充将存储数据的目的地寄存器115的仅部分宽度的数据,或作为将存储数据的目的地寄存器115的仅部分宽度的数据。
处理器包括解码单元103。解码单元还可以被称为解码器或解码逻辑。解码单元可以接收部分宽度加载指令。解码单元可操作用于对相对较高层级的指令(例如,机器代码指令、汇编语言指令、宏指令,等等)进行解码,并输出一个或多个对应的相对较低层级的指令或控制信号(例如,一个或多个微指令、微操作、微代码入口点,等等)。较低层级的指令或控制信号可以反映、表示相对较高层级的指令,和/或可从相对较高层级指令导出,并可以通过较低层级的操作(例如,电路级或硬件级操作)来实现较高层级的指令。解码单元可以使用各种不同的机制来实现,各种不同的机制包括但不限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA),本领域已知的用于实现解码单元的其他机制,以及上述各项的组合。
在其他实施例中,可替代解码单元103而使用或除解码单元103之外还使用指令仿真器、变换器、变形器、解释器或转换器。指令转换器可将指令仿真、变换、变形、解释,或以其他方式转换为一个或多个对应的导出的指令或控制信号。各种不同类型的此类指令转换器是本领域中已知的,并可在硬件、固件、软件或它们的组合中实现。在某些实施例中,指令转换器可以将接收到的较高层级的指令转换为一个或多个中等层级指令,并且解码单元可以将这一个或多个中等层级指令解码为能够由处理器的原生逻辑执行的一个或多个较低层级的指令或控制信号。
如图所示,解码单元是处理器的依赖于模式的部分宽度加载系统113的部分。在某些实施例中,可以使用两种或更多种模式来以两种或更多种不同的对应方式来处理部分宽度加载指令和/或其操作码。有利的是,这可有助于在不需要利用进一步的操作码的情况下就允许执行不同的操作,在某些情况下,如背景技术部分所讨论,不利用进一步的操作码就允许执行不同的操作会具有挑战性。解码单元可以与部分宽度加载模式105耦合,或以其他方式与部分宽度加载模式105通信。在某些实施例中,部分宽度加载模式可包括用于指示多种不同的部分宽度加载模式中的一种的一个或多个位。一方面,可以使用单个位来指示两种不同的部分宽度加载模式中的任何一种。另一方面,可以使用两个或更多位来指示两种、至少三种、至少四种,或可任选地多于四种的不同的部分宽度加载模式中的任何一种。在某些实施例中,这一个或多个位可以存储在寄存器(例如,控制寄存器、状态寄存器或配置寄存器)106中或另一个管芯上存储位置。或者,可以任选地将部分宽度加载模式包括在不一定在控制寄存器、状态寄存器或配置寄存器中的一个或多个分开的或隔离的位中。如将在下文中进一步解释的那样,软件模块(例如,用户级应用模块、操作系统模块、虚拟机监视器模块、特许的软件模块等)可以将部分宽度加载模式105改变(例如,通过改变这一个或多个位)为对于部分宽度加载指令102(例如,利用部分宽度加载指令的软件)合适的、期望的或计划的一种部分宽度加载模式。
解码单元和/或处理器可以访问部分宽度加载模式来确定要使用的当前的部分宽度加载模式,而解码单元可以根据所确定的部分宽度加载模式来对部分宽度加载指令解码。在某些实施例中,可以使用部分宽度加载模式来为部分宽度加载指令和/或其操作码提供不同的含义、解释,和/或操作。在某些实施例中,解码单元可包括依赖于部分宽度加载模式的解码逻辑104,该依赖于部分宽度加载模式的解码逻辑104用于以依赖于、基于和/或符合与指令相关联的当前的部分宽度加载模式(例如,当指令被解码时的模式)来对部分宽度加载指令解码。例如,可以在第一部分宽度加载模式中从部分宽度加载指令中解码出第一组一个或多个指令或控制信号,而在不同的第二组部分宽度加载模式中从部分宽度加载指令(例如,相同的操作码)中解码出不同的第二组一个或多个指令或控制信号。可从与当前模式105一致的解码单元输出依赖于模式的指令或控制信号107。
在某些实施例中,部分宽度加载指令可以不指定或以其他方式指示部分宽度加载模式105(例如,可以没有用于在多种不同风格的指令/操作之间进行选择或区分或以其他方式指定模式的指令位)。这一般有助于避免增加指令长度,可以潜在地允许使用指令长度不准许此类附加位的技术,可以潜在地减少或限制要解码的位的数量,或提供其他潜在的优点。在某些实施例中,通过检查部分宽度加载指令的任何位或全部位来辨别要使用哪一种部分宽度加载模式也许是不可能的。
再次参考图1,存储器子系统108与解码单元103耦合,并与存储器110耦合。本领域中已知的各种常规存储器子系统都是合适的。响应于和/或由于部分宽度加载指令102(例如,响应于对应于当前的部分宽度加载模式105的一个或多个经解码的指令或控制信号),存储器子系统可操作以将数据从所指示的存储器位置111加载到处理器中。如先前所述,部分宽度加载指令可以指定或以其他方式指示具有部分宽度数据112的存储器位置111。部分宽度加载指令还可以指定或以其他方式指示将存储部分宽度数据的目的地寄存器115。
依赖于部分宽度加载模式的寄存器写入单元114的实施例与解码单元103、与存储器子系统108,以及与目的地寄存器115耦合。为简明起见,也可将依赖于部分宽度加载模式的寄存器写入单元简称为依赖于模式的寄存器写入单元或寄存器写入单元。响应于和/或由于部分宽度加载指令102(例如,响应于对应于当前的部分宽度加载模式105的一个或多个经解码的指令或控制信号107),依赖于模式的寄存器写入单元可操作以写入或以其他方式访问寄存器115,从而使结果被存储在其中,该结果依赖于和/或符合部分宽度加载模式。在某些实施例中,依赖于模式的寄存器写入单元可操作以将所加载的部分宽度数据112的至少部分写入到寄存器的部分宽度,并可操作以利用存储在寄存器的其余宽度中的、具有依赖于和/或符合对应的部分宽度加载模式的位值的位组117,118来结束或完成对寄存器的写入。依赖于模式的寄存器写入单元和/或处理器可包括响应于部分宽度加载指令的特定或具体的逻辑(例如,潜在地与固件和/或软件中的一个或多个组合的电路或其他硬件)。
不同类型的部分宽度加载模式的各种组合适合于不同的实施例。示例包括但不仅限于,符号扩展的部分宽度加载模式、零扩展的部分宽度加载模式、合并的部分宽度加载模式以及本领域中已知的其他部分宽度加载模式。在符号扩展的部分宽度加载模式中,可将部分宽度数据的符号位(例如,具有二进制零或二进制一的值的最高有效位)复制、扩展,或以其他方式存储或写入到未被部分宽度数据占据的寄存器的其余宽度中。在零扩展的部分宽度加载模式中,可将二进制零插入、扩展,或以其他方式存储或写入到未被部分宽度数据占据的寄存器的其余宽度中。在合并的部分宽度加载模式中,可将部分宽度数据与在寄存器写入时已经存储在寄存器中的初始的或预先存在的位或数据合并。此初始的或预先存在的数据不必被修改或覆写。例如,合并部分宽度加载模式可将覆写初始的或预先存在的数据的最低阶部分的部分宽度存储在该最低阶的部分中,并且可将初始的或预先存在的数据保留在寄存器的其余的最高阶部分中。在各实施例中,可以使用两个或更多这些或其他类型的部分宽度加载模式的组合。可以在不同的模式下将不同的对应值116写入到目的地寄存器。在所示示例中,在零扩展的部分宽度加载模式中,可将部分宽度数据112包括在目的地寄存器的部分(例如,最低阶的一半或其他部分)中,并且可将全零117存储在目的地寄存器的另一部分(例如,最高阶部分)中。在符号扩展的部分宽度加载模式中,可将部分宽度数据112包括在目的地寄存器的部分(例如,最低阶的一半或其他部分)中,并且可将符号位118(例如,基于部分宽度数据112的最高有效位)存储在目的地寄存器的另一部分(例如,最高阶的一半或其他部分)中。在其他实施例中,可以使用其他类型的不同的部分宽度加载或不同的部分宽度加载的组合。例如,在另一个实施例中,可替代所示模式中的一种模式或作为附加的第三种类型的部分宽度加载模式来使用合并扩展式部分宽度加载模式(参见例如图3)(或其他类型的部分宽度加载模式)。
为了避免混淆本描述和概念,已示出并描述了简化的处理器101。设备可包括通常在处理器中发现的各种其他公知的组件。此类组件的示例包括但不仅限于,分支预测单元、指令取出单元、指令和数据高速缓存、第二级或更高层级的高速缓存、指令和数据转换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、寄存器重命名单元、指令调度单元、总线接口单元、引退单元、处理器中所包括的其他组件,以及上述各项的各种组合。实际上在处理器中存在众多不同组合和配置的组件,并且各实施例不限于任何特定的组合或配置。
图2是可以根据符号扩展的部分宽度加载模式220或者零扩展的部分宽度加载模式221来执行的部分宽度加载操作219的第一示例实施例的框图。可以响应于部分宽度加载指令202和相关联的部分宽度加载模式205(例如,当对部分宽度加载指令解码时的部分宽度加载模式)来执行部分宽度加载操作。
部分宽度加载指令可以将存储器位置211指定或以其他方式指示为源操作数,并可以将目的地寄存器215指定或以其他方式指示为目的地操作数。存储器位置存储响应于部分宽度加载指令而将被加载到目的地寄存器中的部分宽度数据。为简化说明,示出了8位宽的部分宽度数据212。在所示示例中,8位的部分宽度数据从左边的最高有效位的位置到右边的最低有效位的位置具有值“11110000”。然而,应当理解,这些值仅是示例,并且可另选地使用任何其他可能的位值。此外,在其他实施例中,部分宽度数据可以具有其他宽度(例如,16位、32位、64位等),而不是8位宽的部分宽度数据。类似地,为简化说明,所示出的目的地寄存器具有16位的宽度。在其他实施例中,目的地寄存器可以具有其他宽度(例如,32位、64位、128位等)。在某些实施例中,与在此示例中相同,部分宽度数据的宽度可以是目的地寄存器宽度的一半,但是这不是必需的。在其他实施例中,例如,部分宽度数据可以是16位,并且目的地寄存器可以是64位,或者部分宽度数据可以是8位,并且目的地寄存器可以是32位,等等。作为另一个示例,部分宽度数据可以是64位,并且目的地寄存器可以是128位。
依赖于模式的寄存器写入单元214与目的地寄存器215耦合,与存储器位置211耦合,并与部分宽度加载指令202(例如,解码单元)耦合。响应于部分宽度加载指令,寄存器写入单元可操作以执行向目的地寄存器的写入或存储。执行写入或存储的方式可以依赖于或基于与部分宽度加载指令相关联的部分宽度加载模式。在此第一示例实施例中,部分宽度加载模式可以指示符号扩展的部分宽度加载模式220(在示图中的左边)或零扩展的部分宽度加载模式221(在示图中的右边)中的任何一个。在这两种不同类型的部分宽度加载中,可将部分宽度数据212(例如,在此示例中的8位的部分宽度)写入或存储在目的地寄存器中。在所示实施例中,将所加载的部分宽度数据写入到目的地寄存器的最低阶部分,但是这不是必需的。如图所示,在符号扩展的部分宽度加载模式220或零扩展的部分宽度加载模式221中,可将8位的部分宽度数据值“11110000”存储在目的地寄存器215-1、215-2的位[7:0]中。在其他实施例中,可以使用部分宽度数据的其他尺寸和/或部分宽度数据可以被写入到目的地寄存器的其他部分/位置(例如,最高有效部分等)中。
在所示实施例中,对于这两种不同类型的部分宽度加载操作/模式,以不同方式来处理目的地寄存器的最高阶部分(例如,在此示例中的8位的最高阶部分)。对于符号扩展的部分宽度加载模式220,控制依赖于模式的寄存器写入单元以将符号位218(例如,部分宽度数据的最高有效位的符号位)写入或存储到目的地寄存器215-1的、未被用于存储部分宽度数据的所有其余的较高的有效位。在所示示例中,位7是部分宽度数据的符号位或最高有效位。在此示例中,符号位是二进制一,并且相应地将二进制一218存储在目的地寄存器215-1的位[15:8]中的每一个位中。对于零扩展的部分宽度加载模式221,控制依赖于模式的寄存器写入单元以将全零217写入或存储到目的地寄存器215-2的、未被用于存储部分宽度数据的其余的较高的有效位。如图所示,可将二进制零217存储在目的地寄存器215-2的位[15:8]中的每一个位中。相应地,依赖于模式的寄存器写入单元和/或处理器可以利用被存储在目的地寄存器215中未被用于存储部分宽度数据的部分(例如,用于存储部分宽度数据的最低阶部分之外的所有较高的有效位)中的、具有依赖于部分宽度加载模式的位(例如,217或218)来完成向目的地寄存器215写入。
图3是可以根据合并的部分宽度加载模式322或零扩展的部分宽度加载模式321来执行的部分宽度加载操作319的第二示例实施例的框图。此第二示例实施例具有与先前所描述的图2的第一示例实施例的某些相似性。为避免使本描述模糊,将主要描述此第二示例实施例的不同或附加特征和特性,而不重复所有的类似性。然而,应当理解,上文中针对于图2的第一示例实施例所描述的特征和特性还可以任选地应用于此第二示例实施例。
可以响应于部分宽度加载指令302和相关联的部分宽度加载模式305来执行部分宽度加载操作319。部分宽度加载指令可以将存储器位置311指定或以其他方式指示为源操作数,并且可以目的地寄存器315指定或以其他方式指示为目的地操作数。存储器位置存储响应于部分宽度加载指令而将被加载到目的地寄存器中的部分宽度数据312。为简化说明,在此示例中,示出了8位的部分宽度数据和16位的目的地寄存器,但是本发明的范围不如此受限。
响应于部分宽度加载指令,依赖于模式的寄存器写入单元314可操作以执行向目的地寄存器的写入或存储。执行写入或存储的方式可以依赖于或基于与部分宽度加载指令相关联的部分宽度加载模式。在此第二示例实施例中,部分宽度加载模式可以指示合并的或经合并的部分宽度加载模式322(在示图中左边)或者零扩展的部分宽度加载模式321(在示图中的右边)中的任何一个。在这两种不同类型的部分宽度加载中,部分宽度数据312(例如,在此示例中的8位的部分宽度)可以被写入或存储在目的地寄存器中。在所示实施例中,所加载的部分宽度数据被写入到目的地寄存器的最低阶部分,但是这不是必需的。如图所示,在合并的或经合并的扩展部分宽度加载模式322中,或者在零扩展的部分宽度加载模式321中,8位的部分宽度数据值“11110000”可以存储在目的地寄存器315-1、315-2的位[7:0]中。在其他实施例中,可以使用部分宽度数据的其他尺寸和/或部分宽度数据可以被写入到目的地寄存器的其他部分/位置(例如,最高有效部分等)。
在所示实施例中,对于两种不同类型的部分宽度加载操作/模式,以不同的方式来处理目的地寄存器215的最高阶部分(例如,在此示例中的8位最高阶部分)。对于合并的或经合并的扩展部分宽度加载模式322,控制依赖于模式的寄存器写入单元以利用存储在目的地寄存器315-1中的、未被用于存储部分宽度数据的部分(例如,用于存储8位的部分宽度数据的最低阶8位之外的所有较高的有效位)中的、具有依赖于部分宽度加载模式的位323-1来完成向目的地寄存器315-1写入。例如,如图所示,寄存器写入单元可以利用保留在目的地寄存器315-1中的最高有效的其余8位部分的初始位组(即,在部分宽度加载指令之前最初就在目的地寄存器315-1中的那些位)来完成向目的地寄存器315-1写入。作为参考,示出了在执行部分寄存器写入指令之前就存在的预先存在的位组值323-2。预先存在的位值323-2的位[15:8]具有值“01010101”。注意,在执行了部分寄存器写入指令之后,执行该部分寄存器写入指令之前就存在的预先存在的位值323-2的位[15:8]中的这些相同的值“01010101”在目的地寄存器315-2的位[15:8]中表现为相同的位值“01010101”。可将部分宽度数据合并或插入到目的地寄存器中,从而替换某些位,同时使其他位保持不变。对于零扩展的部分宽度加载模式321,控制依赖于模式的寄存器写入单元以将全零317写入或存储到目的地寄存器315-2的、未被用于存储部分宽度数据的所有其余的更高有效位。如图所示,二进制零317可以存储在目的地寄存器315-2的位[15:8]中的每一个位中。
应当理解,这些仅是合适类型的部分宽度加载模式的几个说明性示例实施例。构想了第一模式使用符号扩展的部分宽度加载模式而第二模式使用经合并的部分宽度加载模式的另一实施例。构想了图2的实施例添加进一步的第三模式以包括经合并的部分宽度加载模式的又一实施例。构想了图3的实施例添加进一步的第三模式以包括符号扩展的部分宽度加载模式的进一步的实施例。其他实施例可以基于其他类型的部分宽度加载模式(例如,“一”扩展等)。此外,如先前所述,在其他实施例中,部分宽度数据和/或目的地寄存器的位宽度可以各自更宽或更窄,并且部分宽度数据的宽度不必是目的地寄存器宽度的一半。
在某些实施例中,可由图1的处理器和/或在图1的处理器内执行图2和/或图3的操作。上文中针对图1的处理器所描述的细节和任选细节还可以任选地应用于图2和/或图3的操作,在各实施例中,可由此类处理器执行这些操作和/或可在此类处理器内执行这些操作。或者,可由类似或不同的处理器执行图2和/或图3的操作和/或可在类似或不同的处理器内执行图2和/或图3的操作。此外,图1的处理器可以执行与图2和/或图3的那些操作相同、类似或不同的操作。
图4是方法430的实施例的流程框图,当处理部分宽度加载指令的实施例时,可以由处理器来执行方法430。在某些实施例中,可由图1的处理器执行图4的操作和/或方法和/或可在图1的处理器内执行图4的操作和/或方法。针对图1的处理器所描述的组件、特征和特定的任选细节还可以任选地应用于图4的操作和/或方法,可由此类处理器执行这些操作和/或方法,和/或可在此类处理器内执行这些操作和/或方法。或者,可由类似或不同的处理器执行图4的操作和/或方法和/或可在类似或不同的处理器内执行图4的操作和/或方法。此外,图1的处理器可以执行与图4的那些操作和/或方法相同、类似或不同的操作和/或方法。
该方法包括:在框431处,接收部分宽度加载指令。在各个方面,该指令可在处理器、指令处理装置或者其部分(例如,指令取出单元、解码单元等)处接收。在各个方面,该指令可从管芯外的源(例如,从主存储器、互连等)或者从管芯上的源(例如,从取出单元、指令高速缓存等)接收。在某些实施例中,部分宽度加载指令可以将存储器位置指定或以其他方式指示为源操作数,并可以将寄存器指定或以其他方式指示为目的地操作数。在某些实施例中,部分宽度加载指令可以不指定或以其他方式指示部分宽度加载模式(例如,可以不具有用于指定模式或选择预定模式的(诸个)位)。
该方法可任选地包括:在框432处,检查或以其他方式确定部分宽度加载模式。或者,可以自动地强加部分宽度加载模式,而无需检查或确定它。该方法还包括:在框433处,响应于部分宽度加载指令而将数据从所指示的存储器位置加载到处理器。
该方法包括:在框434处,响应于部分宽度加载指令而将所加载数据的至少部分写入到目的地寄存器的部分宽度。依赖于指令的实现,可以写入所加载数据的全部或者仅部分。在一个示例实施例中,可将所加载数据的32位可以写入到64位目的地寄存器的最低阶32位的那一半。在其他实施例中,可以任选地使用其他尺寸的部分宽度数据和/或目的地寄存器。
该方法还包括:在框435处,利用存储在目的地寄存器的其余宽度中的、具有依赖于处理器的部分宽度加载模式的位值的位组来完成向目的地寄存器写入。那些位从一种模式到另一种种模式可以是不同的(即,具有不同的位值)。在某些实施例中,在第一模式436中,这可以任选地包括,在框437处,将符号位(例如,部分宽度数据的符号位的副本)复制、写入或以其他方式存储到目的地寄存器的其余宽度中。在某些实施例中,在第二模式438中,这可以任选地包括,在框439处,将全零写入到目的地寄存器的所有的其余宽度中。在另一个实施例中,这第一和第二模式中的任何一种模式都可以被替换为使用合并或经合并的部分宽度加载模式或某种其他类型的部分宽度加载模式的模式。
以相对基本的形式描述了如前所述的方法,但是可以任选地向方法中添加操作和/或从方法中去除操作。例如,如上文所述,确定部分宽度加载模式是任选的(例如,替代地,可强加部分宽度加载模式)。作为另一个示例,可以任选地添加附加操作以例如解码指令,取出指令,在总线上传输位,从总线接收位等。作为另一个示例,可以任选地将与使用目的地寄存器中的结果相关联的操作添加到该方法中。例如,可以由原本以64位处理模式操作的64位处理器使用目的地寄存器中的零扩展的部分宽度加载结果,以便将存储器作为零扩展的32位存储器地址来访问。作为另一个示例,可以由原本以128位(或其他相对较宽的宽度)处理模式操作的128位(或其他相对较宽宽度的)处理器使用目的地寄存器中的零扩展的部分宽度加载结果,以便将存储器作为零扩展的64位(或其他相对较小宽度的)存储器地址来访问。另外,尽管流程图示出根据各示例实施例的操作的特定顺序,但是该特定顺序是示例性的。替换实施例可以任选地以不同顺序来执行这些操作,组合某些操作,使某些操作重叠,等等。例如,可同时或并行地,而非串行地来执行框434和435处的操作。
本文中所公开的依赖于模式的部分宽度加载指令和部分宽度加载模式是通用的,并可以用于各种不同的目的。例如,可以使用它们来为相同的操作码提供不同类型的部分宽度加载操作。然而,为进一步说明某些概念,下文中将进一步描述将依赖于模式的部分宽度加载指令和部分宽度加载模式用于不同的或更高效的存储器寻址的特定示例。在某些实施例中,可以在相对较大的地址空间中使用相对较小的存储器地址或指针。作为一个示例,可以在64位架构处理器和/或64位地址空间中使用64位长的零扩展的32位指针。作为另一个示例,可以在128位架构处理器和/或128位地址空间中使用128位长的零扩展的64位指针。
大多数现代的通用处理器具有32位架构或者64位架构。将来,很可能128位架构处理器会变得流行。各种专用处理器可以使用32位或64位架构,或各种其他宽度,诸如,8位、9位、12位、18位、24位、36位、39位、40位、48位,或者60位的架构。这些位宽度一般是指处理器的架构内的各种属性的位宽度。例如,这些位宽度可以是指受支持的存储器地址尺寸、整数尺寸、整数寄存器尺寸等,或上述各项的组合。例如,64位架构处理器可以支持64位整数格式,可以具有64位整数通用寄存器,可以支持使用64位存储器地址来访问存储器,等等。某些处理器并不对所有此类参数使用相同的位宽度。64位宽度有时被称为处理器的“字”尺寸。也就是说,64位架构处理器可以使用64位“字”,32位架构处理器可以使用32位“字”,以此类推。
相比32位架构处理器,64位架构处理器可以倾向于具有某些增强的特征或优点。例如,在某些实施例中,64位处理器可以具有更大数量的处理器寄存器、更强大的通用处理能力,或具有用于帮助改善性能的各种其他机制或特点,等等。然而,64位架构操作的某些方面通常会涉及比32位架构操作相对更高的开销。一个此类潜在的方面可以涉及使用64位存储器地址或指针。如上文所述,在某些情况下,64位架构处理器通常可以使用64位的存储器地址或指针来访问存储器。此类64位的存储器地址或指针一般允许从存储器中的任何地方访问数据。连续的或顺序的64位存储器地址值可以指定存储器的对应的连续单元。这些单元可以表示地址解析的单元(例如,字、字节,等等)。
然而,许多用户级应用模块或其他软件模块不需要足够频繁地使用64位存储器指针和/或不需要足够频繁地从存储器中的任何地方访问数据,从而无法证明与使用64位存储器指针相关联的额外的开销是正当的。例如,当整个用户级应用模块或其他软件模块能够容纳在存储器的有限的连续范围内时,这通常可能是事实。作为具体示例,许多常用的用户级软件模块和其他模块能够被包含在存储器的四千兆字节内。32位的存储器地址足以对存储器的连续的四千兆字节中的任何地方进行寻址。当软件模块(例如,要被最频繁地访问的代码和数据)容纳在可由32位的存储器地址或指针寻址的四千兆字节内时,使用较小的32位存储器地址可以比使用较大的64位存储器地址更高效和/或更有效。有利的是,在64位架构处理器中使用较小的32位存储器地址可有助于利用一般与64位架构相关联的增强的特征,同时在合适时(例如,当软件模块容纳在四千兆字节内时)有选择地帮助降低与使用64位存储器地址和/或使用较大的存储器占用空间相关联的不需要的或不必要的开销。
相比使用较大的指针(例如,64位指针),当使用较小的指针(例如,32位指针)时,程序易于更快运行和/或使用更少的存储器。一方面,通常需要较少的存储器来存储较小的指针。另外,较小的指针一般占据处理器中所使用的高速缓存中的较少空间,从而加速对频繁使用的数据的访问。结果,当使用小指针时,高速缓存可能能够保存较大数量的此类较小的指针和/或较多的数据。另外,在高速缓存中发现数据或指针的可能性将倾向于增大,此类指针或数据中的更多指针或数据被保存在高速缓存中(例如,当使用较小的指针时),这可以有助于实现增加的程序性能。此外,使用较少数据的程序倾向于使系统更快地运行。在某些系统中,使用中的程序的所有代码和数据的集合可能无法都容纳在存储器中。可以临时地将程序的诸部分存储在盘中,并在需要时(例如,在请求分页(demandpaging)的情况下)将这些部分带入存储器中。然而,当程序较小时(诸如,当使用较小的指针时,可能是这种情况),这些程序可能倾向于为当前不运行的其他程序留下更多空间以留在存储器中,使得不需要为了在存储器中腾出空间而对此类程序进行页面移出(pageout)。一般而言,当较少的分页(paging)发生时,系统性能倾向于改善,因为这样的分页倾向于延迟程序执行,并可能倾向于延迟其他程序的输入/输出。相比64位存储器地址,使用32位存储器地址的其他潜在优点包括降低的功耗。
图5是计算机系统500的实施例的框图,该计算机系统500包括用于执行零扩展的32位存储器寻址的64位架构处理器501。64位架构处理器通过互连机制509与存储器510耦合。存储器具有64位的可寻址范围550。64位的可寻址范围包括,作为其子集的较小的连续32位的可寻址范围552。32位的可寻址范围可以具有约四千兆字节。软件模块554(例如,用户级应用或其他软件)存储在该32位的可寻址范围内。该软件模块具有32位的存储器地址512。
64位处理器可以任选地具有本文中所公开的其他处理器(例如,图1的处理器101)的特性或特征。该64位架构处理器包括依赖于模式的部分宽度加载系统513。依赖于模式的部分宽度加载系统可以任选地具有与图1的依赖于模式的部分宽度加载系统113的那些特征和特性类似或相同的特征和特性。依赖于模式的部分宽度加载系统支持零扩展的32位加载模式505。处理器还具有64位寄存器515。在某些实施例中,寄存器可以是可用于存储器寻址的寄存器,诸如,某些处理器中的通用寄存器,或其他处理器中的用于存储器寻址的专用寄存器。
可以将32位加载指令502提供给依赖于模式的部分宽度加载系统。该32位加载指令可以将32位存储器地址512中的一个(表示部分宽度数据)指定或以其他方式指示为源操作数,并可以将64位寄存器515指定或以其他方式指示为目的地操作数。响应于32位加载指令502和零扩展的32位加载模式505,依赖于模式的部分宽度加载系统可以执行零扩展的32位加载操作519,该操作519包括:将所指示的32位存储器地址512存储到64位目的地寄存器515的最低阶的32位中;以及将零存储在64位目的地寄存器515的最高阶的32位中。
随后,可以将存储器访问指令556提供给处理器。该存储器访问指令可指示作为32位加载指令502和/或操作519的结果的64位的零扩展的32位存储器地址。例如,存储器访问指令可指示目的地寄存器515,或可以将结果从目的地寄存器移到由该存储器访问指令指示的另一个寄存器。响应于存储器访问指令556,处理器可以使用或基于64位的零扩展的32位存储器地址来提供存储器访问558(例如,从存储器加载,向存储器写入,等等)。
这仅仅是一个说明性示例。在其他实施例中,可以任选地使用具有除64位以外的架构的处理器。此外,在其他实施例中,还可以任选地使用具有除32位以外的尺寸的存储器地址。例如,在某些实施例中,可对128位架构处理器和/或128位地址空间或寻址模式使用128位的零扩展的64位存储器地址。作为另一个示例,可以任选地对64位架构处理器或64位地址空间使用64位的零扩展的16位或48位指针。一般而言,可对较大架构处理器或地址空间使用零扩展的较小的指针或存储器地址。
用户级应用模块或其他无特权软件模块在适合改变部分宽度加载模式时(例如,当它们计划使用与当前存在的模式不同的模式时)一般需要具有改变部分宽度加载模式的方式。这能以不同的方式来完成。在某些实施例中,部分宽度加载模式可以是可直接由用户级或无特权软件模块改变的。在其他实施例中,用户级或无特权软件模块可能无法直接改变部分宽度加载模式。相反,在某些实施例中,可以为特许软件模块(例如,操作系统模块、虚拟机监视器模块,等等)预留对部分宽度加载模式的改变。在此类实施例中,特许软件模块可以提供接口(例如,服务、接口等)以允许用户级或无特权软件模块来请求特许软件模块改变部分宽度加载模式。
图6是示出用户级软件模块670(或其他无特权软件模块)与操作系统模块660(或其他特许软件模块)之间的、用于改变部分宽度加载模式的交互的实施例的框图。用户级软件模块包括元数据672,该元数据672包括使用给定的部分宽度加载模式的指示674。给定的部分宽度加载模式可以是软件模块期望或计划使用的部分宽度加载模式。作为一个示例,元数据可包括由用户级软件模块用来将关于其自身的信息传递给操作系统模块660的目标模块格式或其他数据结构。例如,元数据模块可包括用于指示所期望的部分宽度加载模式的标志或一个或多个位。操作系统模块包括程序加载器模块662。程序加载器模块和/或操作系统模块可操作以检查元数据,包括检查指示674。操作系统模块可包括部分宽度加载模式变化器模块664,该部分宽度加载模式变化器模块664可操作以将处理器的部分宽度加载模式605改变为所指示的部分宽度加载模式674。例如,可以在处理器的配置或控制寄存器中改变部分宽度加载模式。
在某些实施例中,处理器可以具有包括用于改变部分宽度加载模式的指令的指令集。在此示例中,该指令将是为操作系统模块或类似的特许级软件模块预留的特许级指令,但是在其他实施例中,该指令可以是能够由用户级软件模块使用的用户级指令。当将改变部分宽度加载模式时,可由部分宽度加载模式变化器模块664使用使用该指令。可由处理器解码并实行或以其他方式执行该指令,以便将模式从起始模式改变为另一种不同的模式。在某些实施例中,在此类模式改变之后,可以任选地执行跳转以在已更新的不同模式下取出并解码指令,而不是使用已经在流水线中的、在当执行该执行指令之前就存在的过时的模式下已经解码的那些指令。在某些实施例中,指令集还可以具有用于读取部分宽度加载模式的指令。此指令可以是能够由用户级软件模块使用的用户级指令,或为操作系统模块或者类似的特许级软件模块预留的特许级指令。指令可以是经解码的,并且在实行或以其他方式执行时可以读取部分宽度加载模式(例如,读取寄存器中的一个或多个位)。作为示例,用户级代码模块或其他软件模块可以使用此类指令来获悉部分宽度加载模式。
上文讨论了支持对64位处理器进行的32位寻址的一种部分宽度加载模式的可能的使用。操作系统模块、中断处理程序模块以及潜在的其他软件可以主要使用64位存储器寻址,而不是零扩展的32位存储器寻址。结果,操作系统模块、中断处理程序模块等可以不需要使用提供零扩展的32位加载的部分宽度加载模式,但相反可以使用针对相同指令或操作码提供替换类型的32位加载的部分宽度加载模式,诸如,符号扩展的32位加载或合并的32位加载。如图所示,在某些实施例中,处理器可包括在某些条件下用于导致或引起自动回退到默认部分宽度加载模式的默认部分宽度加载模式回退逻辑或单元676。此类条件的示例可包括:从执行用户级代码到操作系统代码的切换或过渡;在检测到中断678之后或当向中断处理程序模块668报告中断678时;在由中断处理程序模块进行中断处理的开始时,等等。单元或逻辑可在硬件或在潜在地与某个固件和/或可能某个软件组合的硬件中实现。在默认部分宽度加载模式中,可将指令或操作码视为例如符号扩展的32位加载或合并的32位加载,而不是零扩展的32位加载。在某些实施例中,默认部分宽度加载模式回退逻辑或单元还可以使部分宽度加载模式自动地从默认部分宽度加载模式往回恢复到在切换到操作系统代码或中断处理之前(例如,在从中断679的返回之后)就存在的部分宽度加载模式。返回指令可以在返回时读取部分宽度加载模式来确定如何解码部分宽度加载指令。
图7是可以由操作系统模块、特许模块、或其他系统级模块执行的方法780的实施例的框图。该方法包括:在框781处,检查软件模块的元数据。这包括检查将由处理器用来执行部分宽度加载指令的处理器的部分宽度加载模式的指示。部分宽度加载指令用于将存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。
该方法包括:在框782处,将处理器的部分宽度加载模式改变为所指示的部分宽度加载模式。在某些实施例中,改变部分宽度加载模式可用于控制将由处理器存储在所指示的寄存器的、不用于存储从存储器加载的数据的部分宽度的部分中的位值的改变。在某些实施例中,操作系统模块或其他系统级模块可以维护元数据组以记录或跟踪哪些程序使用哪些部分宽度加载模式。某些程序在执行部分宽度加载指令(例如,给定的操作码)时,可以使用一种部分宽度加载模式,而其他程序在执行该部分宽度加载指令(例如,相同的给定操作码)时,可以使用另一种不同的部分宽度加载模式。当在多个程序之间切换和/或当从中断返回时,操作系统模块或其他模块可以访问元数据来确定要将处理器置于哪种适用于程序的部分宽度加载模式。作为示例,在某些实施例中,当切换到期望使用不同模式的程序时,操作系统可以使用指令来改变模式。作为示例,在某些实施例中,操作系统可以使用不同的指令来读取当前模式以获悉在切换程序时是否需要改变模式。
在某些实施例中,用户级应用模块或其他无特权软件模块可包括用于向调试器模块传递软件模块期望或计划使用哪种部分宽度加载模式的调试信息模块或其他元数据模块。调试器模块可以访问并检查此调试信息模块或其他元数据模块来确定将由软件使用的部分宽度加载模式。这可以允许调试器模块正确地解释处理器将如何处理指令。
为描述简明起见,在本文中通常描述操作码的两种不同的模式和/或含义。然而,应当理解,对于给定的操作码,其他实施例可以使用三种、四种或更多种不同的模式和/或含义。作为示例,处理器可以具有两个或更多位以指示对于给定的操作码应当使用多个此类不同的含义中的哪个含义。
在本文中已强调了对部分宽度加载指令的不同解释。在其他实施例中,可将除部分宽度加载指令之外的另一种类型的指令解释为另一模式中的部分宽度加载指令(例如,零扩展的部分宽度加载指令)。
示例性核架构、处理器和计算机架构
能以不同的方式,出于不同目的,以及在不同的处理器中实现处理器核。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,不同的计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但分开的管芯上的协处理器;3)在与CPU相同的管芯上的协处理器(在该情况下,有时将此类协处理器称为诸如集成图形和/或科学(吞吐量)逻辑之类的专用逻辑,或被称为专用核);以及4)可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和无序核框图
图8A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图8B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图8A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。考虑到有序方面是无序方面的子集,将描述无序方面。
在图8A中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处理级822以及提交级824。
图8B示出了处理器核890,该处理器核890包括耦合到执行引擎单元850的前端单元830,执行引擎单元850和前端单元830两者都耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核890可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、图形核,等等。
前端单元830包括耦合到指令高速缓存单元834的分支预测单元832,指令高速缓存单元834耦合到指令转换后备缓冲器(TLB)836,指令转换后备缓冲器836耦合到指令取出单元838,指令取出单元838耦合到解码单元840。解码单元840(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括(例如,在解码单元840中或以其他方式在前端单元830内的)存储某些宏指令的微代码的微代码ROM或其他介质。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括耦合到引退单元852和一个或多个调度器单元的集合856的的重命名/分配器单元854。调度器单元856表示任意数量的不同调度器,包括预留站、中央指令窗等。调度器单元856耦合到物理寄存器组单元858。物理寄存器组单元858中的每一个都表示一个或多个物理寄存器组,这些物理寄存器组中的不同的物理寄存器组存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,物理寄存器组单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器组单元858由引退单元854重叠以示出可实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用未来文件(futurefile)、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池,等等)。引退单元854和物理寄存器组单元858耦合到执行群集860。执行群集860包括一个或多个执行单元的集合862和一个或多个存储器访问单元的集合864。执行单元862可以执行各种操作(例如,移位、加法、减法、乘法),并且可对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)来执行各种。尽管一些实施例可以包括专用于特定功能或功能集的数个执行单元,但是其他实施例可以仅包括一个执行单元或全都执行所有功能的多个执行单元。调度器单元856、物理寄存器组单元858和执行群集860示出为可能是多个,因为某些实施例对于某些类型的数据/操作创建单独的流水线(例如,各自具有它们自身的调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线——并且在单独的存储器访问流水线的情况下,实现了其中仅仅该流水线的执行群集具有存储器访问单元864的某些实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行的,而其余的是有序的。
存储器访问单元的集合864耦合到存储器单元870,该存储器单元870包括耦合到数据高速缓存单元874的数据TLB单元872,数据高速缓存单元874耦合到第2级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个都耦合到存储器单元870中的数据TLB单元872。指令高速缓存单元834进一步耦合到存储器单元870中的第2级(L2)高速缓存单元876。L2高速缓存单元876耦合到一个或多个其他层级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可按如下方式来实现流水线800:1)指令取出838执行取出和长度解码级802和804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)调度器单元856执行调度级812;5)物理寄存器组单元858和存储器单元870执行寄存器读取/存储器读取级814;执行群集860执行执行级816;6)存储器单元870和物理寄存器组单元858执行写回/存储器写入级818;7)各单元可牵涉到异常处理级822;以及8)引退单元854和物理寄存器组单元858执行提交级824。
核890可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON之类的可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核890包括用于支持紧缩数据指令集合扩展(例如,AVX1、AVX2)的逻辑,进而允许将使用紧缩数据来执行由许多的多媒体应用使用的操作。
应当理解,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术中的同步多线程操作)。
尽管寄存器重命名是在无序执行的上下文中描述的,但是应当理解,寄存器重命名可以用于有序架构中。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元834/874以及共享L2高速缓存单元876,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个层级的内部高速缓存。在某些实施例中,系统可以包括内部高速缓存以及核和/或处理器外部的外部高速缓存的组合。或者,所有的高速缓存都可以在核和/或处理器的外部。
特定的示例性有序核架构
图9A-B示出更具体的示例性有序核架构的框图,在该有序核架构中,核将是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他核)中的一个。依赖于应用,这些逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图9A是根据本发明的各实施例的单个处理器核以及它到管芯上互连网络902的连接以及其第2级(L2)高速缓存的本地子集904的框图。在一个实施例中,指令解码器900支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存906允许对进入标量和向量单元的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间转移的数据被写入到存储器并随后从第一级(L1)高速缓存906读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合,或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2缓存的本地子集904是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自身的L2高速缓存的本地子集904的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存的子集904中,并且可以与其他处理器核访问那些处理器核自身的本地L2高速缓存的子集并行地被快速访问。如有必要,将由处理器核写入的数据存储在其自身的L2高速缓存的子集904中,并且从其他子集转储清除(flush)。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形的数据路径为每个方向上1012位宽。
图9B是根据本发明的实施例的图9A中的处理器核的部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分,以及关于向量单元910和向量寄存器914的更多细节。具体地说,向量单元910是16宽向量处理单元(VPU)(见16宽ALU928),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU支持利用混合单元920来混合寄存器输入、利用数值转换单元922A-B进行数值转换、并利用复制单元924来复制存储器输入。写掩码寄存器926允许预测所产生的向量写入。
具有集成存储器控制器和图形器件的处理器
图10是根据本发明的各实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器1000的框图。图10中的实线框示出具有单个核1002A、系统代理1010、一个或多个总线控制器单元的集合1016的处理器1000,而虚线框的可选附加示出具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元的集合1014以及专用逻辑1008的处理器1000。
因此,处理器1000的不同实现可包括:1)CPU,其中,专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1002A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合);2)协处理器,其中,核1002A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中,核1002A-N是大量通用有序核。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以实现在一个或多个芯片上。处理器1000可以是一个或多个基板的部分,和/或可使用诸如例如BiCMOS、CMOS或NMOS之类的多个工艺技术中的任何一中技术将处理器1000实现在一个或多个基板上。
存储器层次结构包括核内的一级或多级的高速缓存,一组或一个或多个共享高速缓存器单元1006,以及耦合到集成的存储器控制器单元的集合1014的外部存储器(未示出)。共享高速缓存器单元的集合1006可以包括一个或多个中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4),或其他层级的高速缓存,末级高速缓存(LLC),和/或上述各项的组合。尽管在一个实施例中,基于环的互连单元1012将集成图形逻辑1008、共享高速缓存单元的集合1006以及系统代理单元1010/集成存储器控制器单元1014互连,但替代实施例可使用任何数量的公知技术来将此类单元互连。在一个实施例中,在一个或多个高速缓存单元1006与核1002-A-N之间维持一致性(coherency)。
在某些实施例中,核1002A-N中的一个或多个能够进行多线程操作。系统代理1010包括协调并操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括调节核1002A-N和集成图形逻辑1008的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核1002A-N在架构指令集方面可以是同构的或异构的;也就是说,这些核1002A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图11-14是示例性计算机架构的框图。本领域已知的、用于膝上型计算机、台式计算机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的大量种类的系统或电子设备通常都是合适的。
现在参见图11,所示是根据本发明的一个实施例的系统1100的框图。系统1100可以包括耦合到控制器中枢1120的一个或多个处理器1110、1115。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190和输入/输出中枢(IOH)1150(其可以在分开的芯片上);GMCH1190包括存储器和图形控制器,存储器1140和协处理器1145耦合到该存储器和图形控制器;IOH1150将输入/输出(I/O)设备1160耦合到GMCH1190。或者,存储器和图形控制器中的一者或两者都集成在处理器内(如本文中所描述),存储器1140和协处理器1145处理器1110和单个芯片中的控制器中枢1120,该控制器中枢1120与IOH1150处于单个芯片中。
在图11中以虚线表示附加处理器1115的可任选的本质。每一个处理器1110、1115可包括本文中描述的处理核中的一个或多个,并且可以是处理器1000的某一版本。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1120经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1195与处理器1110、1115进行通信。
在一个实施例中,协处理器1145是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器,等等。在一个实施例中,控制器中枢1120可以包括集成图形加速器。
就包括架构、微架构、热、功耗特性等的一系列优点度量方面而言,在物理资源1110、1115之间可能会有各种差异。
在一个实施例中,处理器1110执行控制通用类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1110将这些协处理器指令识别为应当由附连的协处理器1145执行的类型。因此,处理器1110在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布给协处理器1145。协处理器1145接受并执行所接收的协处理器指令。
现在参见图12,所示是根据本发明的一个实施例的第一更具体的示例性系统1200的框图。如图12所示,多处理器系统1200是点对点互连系统,并包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个处理器都可以是处理器1000的某一版本。在本发明的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
处理器1270和1280示出为分别包括集成存储器控制器(IMC)单元1272和1282。处理器1270还包括点对点(P-P)接口1276和1278作为其总线控制器单元的部分;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以经由使用点对点(P-P)接口电路1278、1288的P-P接口1250来交换信息。如图12所示,IMC1272和1282将处理器耦合到相应的存储器,即,存储器1232和存储器1234,它们可以是本地附连到相应的处理器的主存储器的部分。
处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、1298的单独的P-P接口1252、1254来与芯片组1290交换信息。芯片组1290可以可选地经由高性能接口1239与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器,等等。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,使得如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1290可经由接口1296耦合至第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线,或诸如PCI快速(PCIExpress)之类的总线或另一第三代I/O互连总线,但本发明的范围并不受此限制。
如图12所示,各种I/O设备1214连同第一总线1216一起可以耦合到第一总线1220,总线桥1216将第一总线1216耦合到第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如,图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1215被耦合到第一总线1216。在一个实施例中,第二总线1220可以是低管脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1220,各种设备包括例如,键盘和/或鼠标1222、通信设备1227以及存储单元1228,存储单元1228诸如,可包括指令/代码和数据1230的磁盘驱动器或其他大容量存储设备。此外,音频I/O1224可以被耦合至第二总线1220。注意,其他架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图12中的点对点架构。
现在参见图13,所示是根据本发明的一个实施例的第二更具体的示例性系统1300的框图。图12和13中同样的元件具有同样的附图标记,并且从图13中省略了图12的某些方面,以便不至于使图13的其他方面变得模糊。
图13示出处理器1270、1280可以分别包括集成的存储器和I/O控制逻辑(“CL”)1272和1282。因此,CL1272、1282包括集成存储器控制器单元并包括I/O控制逻辑。图13示出不仅存储器1232,1234耦合到CL1272,1282,而且I/O设备1314也耦合到控制逻辑1272,1282。传统I/O设备1315被耦合至芯片组1290。
现在参见图14,所示是根据本发明的实施例的SoC1400的框图。图10中的同样的元件具有相同的附图标记。另外,虚线框是更先进的SoC的可选特征。在图14中,互连单元1402耦合到:应用处理器1410,其包括一个或多个核的集合202A-N以及共享高速缓存单元1006;系统代理单元1010;总线控制器单元1016;集成存储器控制器单元1014;一组或一个或多个协处理器1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及用于耦合至一个或多个外部显示器的显示单元1440。在一个实施例中,协处理器1420包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文中公开的机制的各实施例可以在硬件、软件、固件或此类实现方法的组合中实现。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可以将诸如图12中所示的代码1230之类的程序代码应用于输入指令,以执行本文中所描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任何情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在由机器读取时使得该机器制造用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质中,并将其提供给各种客户或生产设施以加载到实际制造逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于,由机器或设备制造或形成的制品的非暂态的有形安排,包括:诸如硬盘之类的存储介质;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的各实施例还包括含指令或含设计数据的非暂态的有形机器可读介质,设计数据诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。此类实施例还可以被称为程序产品。
仿真(包括二进制变换、代码变形等)
在某些情况下,可以使用指令转换器来将指令从源指令集转换为目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、模仿,或以其他方式转换为要由核处理的一条或多条其他指令。指令转换器可以在软件、硬件、固件,或上述各项的组合中实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图15是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以在软件、固件、硬件或上述各项的各种组合中实现。图15示出可以使用x86编译器1504来编译高级语言1502的程序以生成x86二进制代码1506,该x86二进制代码1506可由具有至少一个x86指令集核的处理器1516原生地执行。具有至少一个x86指令集核的处理器1516表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1504表示用于生成x86二进制代码1506(例如,目标代码)的编译器,该x86二进制代码1506可通过或不通过附加的链接处理而在具有至少一个x86指令集核的处理器1516上执行。类似地,图15示出可以使用替代指令集编译器1508来编译高级语言1502的程序以生成替代指令集二进制代码1510,该替代指令集二进制代码1510可由不具有至少一个x86指令集核1514的处理器(例如,具有执行加利佛尼亚州桑尼威尔市的MIPS技术公司的MIPS指令集和/或执行加利佛尼亚州桑尼威尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行。指令转换器1512被用来将x86二进制代码1506转换成可以由不具有x86指令集核的处理器1514原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1506的软件、固件、硬件或上述各项的组合。
针对图2-3和图5中的任一图所描述的组件、特征和细节还可任选地用于图1和图4中的任一图中。此外,本文中针对装置中的任一装置所描述的组件、特征和细节还可任选地用于本文中所描述的方法中的任一方法中,在各实施例中,可由此类装置和/或利用此类装置来执行这些方法中的任一方法。
在说明书和权利要求书中,可能已使用了术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接的”来指示两个或更多个元件彼此直接物理和/或电接触。“耦合的”可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作或彼此相互作用。例如,存储器子系统可以通过一个或多个中间单元或逻辑来与解码器耦合,或者寄存器写入单元可以通过一个或多个中间单元或逻辑来与寄存器耦合。在附图中,使用双向箭头示出双向的连接和耦合。
在说明书和权利要求书中,可能已使用了术语“逻辑”。如本文中所使用,逻辑可以包括硬件、固件、软件,或上述各项的组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、可编程逻辑器件、包括指令的存储器设备,等等。在某些实施例中,硬件逻辑可以包括潜在地与其他电路组件一起的包括晶体管和/或门。逻辑可以表示模块、组件、单元、处理器元件,等等。
在上文的描述中,为了进行解释,已阐述了很多特定细节以提供对本发明的各实施例的全面理解。然而,对本领域技术人员将显而易见的是,没有这些特定细节中的某些也可实施一个或多个其他实施例。提供所描述的特定实施例不是为了限制本发明而是为了通过示例实施例来进行说明。本发明的范围不是由特定示例确定,而仅由权利要求确定。在其他实例中,以框图形式或不带有细节地示出公知的电路、结构、设备和操作,以避免使对描述的理解变得模糊。
在认为合适的地方,已在诸附图之间重复了附图标记或附图标记的结尾部分以指示可能可选地具有类似或相同特性的对应或类似的元件,除非另外指定或是显而易见的。在已描述了多个组件的情况下,它们一般可被结合进单个组件。在已描述了单个组件的其他情况下,一般可将该单个组件分割为多个组件。
已描述了各种操作和方法。已经以流程图方式以相对基本的方式描述了方法中的一些,但可任选地将操作添加到这些方法中和/或从这些方法中去除操作。另外,尽管流程图示出根据各示例实施例的操作的特定顺序,但该特定顺序是示例性的。替换实施例可以任选地以不同的顺序来执行这些操作,组合某些操作,使某些操作重叠,等等。
某些实施例包括制品(例如,计算机程序产品),所述制品包括机器可读介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可提供或者在其上已存储有一条或多条指令,这些指令如果和/或当由机器执行时,用于使该机器执行和/或导致该机器执行本文中公开的一个或多个操作、方法或技术。合适机器的示例包括但不限于,处理器、指令处理装置、数字逻辑电路、集成电路等。合适的机器的其他示例包括合并了此类处理器、指令处理装置、数字逻辑电路或集成电路的计算设备和其他电子设备。此类计算设备和电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动互联网设备(MID)、媒体播放器、智能电视、迷你桌上型设备、机顶盒和视频游戏控制器。
在某些实施例中,机器可读介质可包括有形的和/或非暂态机器可读存储介质。例如,有形的和/或非暂态机器可读存储介质可包括软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、非暂态数据存储设备,等等。非暂态机器可读存储介质不是仅由暂态传播的信号组成。
还应当理解,贯穿本说明书,提及例如“一个实施例”、“实施例”或“一个或多个实施例”意味着特定特征可以被包括在本发明的实施中。类似地,应当理解,在描述中有时将各种特点一起组合在单个实施例、附图或对它们的描述中,以便使公开流畅,并有助于对各个发明性方面的理解。然而,不应当将这种公开方法解释成反映本发明需要比每项权利要求中明确记载的更多特征的意图。相反,如所附权利要求所反映,发明性方面可以在于少于单个公开的实施例的所有特征。因此,遵循具体实施方式的权利要求进而被明确地合并进此具体实施方式中,每一项权利要求作为本发明的单独实施例而独立存在。
示例实施例
以下示例关于进一步的实施例。这些示例中的细节可以在一个或多个实施例中的任何地方被使用。
示例1是处理器,该处理器包括具有宽度的寄存器以及用于接收部分宽度加载指令的解码单元。部分宽度加载指令用于将存储器的存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。处理器还包括与解码单元耦合的存储器子系统。存储器子系统用于响应于部分宽度加载指令而将数据从所指示的存储器位置加载到处理器。处理器还包括与存储器子系统以及寄存器耦合的寄存器写入单元。寄存器写入单元响应于部分宽度加载指令而用于将所加载数据的至少部分写入到寄存器的部分宽度,并且用于利用存储在寄存器的其余宽度中的、具有依赖于处理器的部分宽度加载模式的位值的位组来完成向寄存器写入,部分宽度加载指令不指示部分宽度加载模式。
示例2包括示例1的处理器,并且可任选地在其中,寄存器写入单元用于:在所述部分宽度加载模式中,将全零作为所述位组写入到寄存器的其余宽度;以及在第二部分宽度加载模式中,不将全零作为所述位组写入到寄存器的其余宽度。
示例3包括示例2的处理器,并且可任选地在其中,寄存器写入单元用于:在第二部分宽度加载模式中,将符号扩展位作为所述位组写入到寄存器的其余宽度。
示例4包括示例2的处理器,并且可任选地在其中,寄存器写入单元用于:在第二部分宽度加载模式中,利用在解码器接收到部分宽度加载指令之前被存储为寄存器的其余宽度中的所述位组的、最初位于其余宽度中的位组来完成向寄存器写入。
示例5包括任一前述示例的处理器,并且可任选地进一步包括用于指示部分宽度加载模式的至少一个位,其中,处理器用于访问该至少一个位以确定部分宽度加载模式,并且用于选择确定位组的位值的对应方法。
示例6包括任一前述示例的处理器,并且可任选地在其中,所述至少一个位在处理器的寄存器中,并且是应用可见的。
示例7包括任一前述示例的处理器,并且可任选地在其中,寄存器的宽度至少与由该处理器用来访问存储器的存储器地址一样宽,并且其中,寄存器的部分宽度仅是寄存器宽度的部分(例如,一半)。
示例8包括任一前述示例的处理器,并且可任选地在其中,符合如下一种情况:处理器中是使用64位存储器地址的64位架构处理器,并且其中,寄存器的部分宽度为32位;或者处理器是使用128位存储器地址的128位架构处理器,并且其中,寄存器的部分宽度为64位。
示例9包括任一前述示例的处理器,并且可任选地在其中,处理器允许用户级应用改变部分宽度加载模式。
示例10包括任一前述示例的处理器,并且可任选地在其中,处理器允许操作系统和虚拟机监视器中的至少一者改变部分宽度加载模式,但是不允许用户级应用改变部分宽度加载模式。
示例11包括任一前述示例的处理器,并且可任选地在其中,处理器具有包括用于改变部分宽度加载模式的指令的指令集。
示例12包括示例1的处理器,并且可任选地在其中,寄存器写入单元用于:在所述部分宽度加载模式中,将零作为所述位组写入到寄存器的其余宽度,并且处理器任选地进一步包括处理器的单元,所述处理器的单元用于在中断以及从应用向操作系统过渡中的一者时将所述部分宽度加载模式改变为第二部分宽度加载模式。
示例13是由处理器执行的方法。该方法包括接收部分宽度加载指令。部分宽度加载指令将存储器的存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。该方法包括:响应于部分宽度加载指令而将数据从所指示的存储器位置加载到处理器。该方法包括:响应于部分宽度加载指令而将所加载数据的至少部分写入到寄存器的部分宽度。该方法包括:利用存储在寄存器的其余宽度中的、具有依赖于处理器的部分宽度加载模式的位值的位组来完成向寄存器写入。部分宽度加载指令不指示部分宽度加载模式。
示例14包括示例13的方法,并且可任选地在其中,完成向寄存器写入包括:在所述部分宽度加载模式中,将零作为所述位组写入到寄存器的其余宽度。可任选地,在第二不同的部分宽度加载模式中,将符号扩展位而非所述零写入到寄存器的其余宽度。
示例15包括示例13的方法,并且可任选地在其中,完成向寄存器写入包括:在所述部分宽度加载模式中,将零作为所述位组写入到寄存器的其余宽度。可任选地,在第二不同的部分宽度加载模式中,将最初位于其余宽度中的位组存储在寄存器的其余宽度中。
示例16包括任一前述示例的方法,并且可任选地进一步包括访问至少一个位以确定部分宽度加载模式。该方法还可以任选地包括选择对应于确定位组的位值的部分宽度加载模式的方法。
示例17包括任一前述示例的方法,并且可任选地在其中,访问至少一个位包括:访问处理器的应用可见的寄存器中的至少一个位。
示例18包括任一前述示例的方法,并且可任选地在其中,向寄存器的部分宽度写入包括:向寄存器的宽度的仅子集(例如,一半)写入。可任选地,寄存器至少与由处理器用来访问存储器的存储器地址一样宽。
示例19包括任一前述示例的方法,并且可任选地在其中,向寄存器的部分宽度写入包括下列各项中的一项:可任选地,在寄存器的其余部分,利用零写入到寄存器的32位,并且其中,由处理器用来访问存储器的存储器地址为64位;或可任选地,在寄存器的其余部分,利用零写入到寄存器的64位,并且其中,由处理器用来访问存储器的存储器地址为128位。
示例20包括任一前述示例的方法,并且可任选地进一步包括:接收来自用户级应用的、用于改变所述部分宽度加载模式的控制信号;以及在接收到所述控制信号之后,改变所述部分宽度加载模式。
示例21包括任一前述示例的方法,并且可任选地进一步包括:接收来自操作系统和虚拟机监视器中的一者的、用于改变所述部分宽度加载模式的控制信号;以及在接收到来自操作系统和虚拟机监视器中的所述一者的控制信号之后,改变所述部分宽度加载模式。该方法还可以任选地包括:防止用户级应用改变所述部分宽度加载模式。
示例22包括任一前述示例的方法,并且可任选地进一步包括:响应于处理器的指令集的用户级指令而改变所述部分宽度加载模式。
示例23是制品,该制品包括存储一组指令的非暂态机器可读存储介质,所述一组指令如果由机器执行,则可操作以使所述机器执行操作。这些操作包括检查软件模块的元数据,其中包括,检查将由处理器用来执行部分宽度加载指令的处理器的部分宽度加载模式的指示。部分宽度加载指令用于将存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。操作还包括:将处理器的所述部分宽度加载模式改变为所指示的部分宽度加载模式。其中,改变部分宽度加载模式以便控制将由处理器存储在所指示的寄存器的、不被用于存储从存储器加载的数据的部分宽度的部分中的位值的改变。
示例24包括示例23的制品,并且可任选地在其中,所述一组指令进一步包括指令,所述指令如果由所述机器执行,则可操作以使所述机器执行操作,所述操作包括:维护元数据,所述元数据指示哪些不同的软件模块将使用哪些不同的部分宽度加载模式,其中包括,所述软件模块将使用所述部分宽度加载模式,以及在处理了中断之后,结合往回过渡到对来自软件模块的代码的执行而将处理器的所述部分宽度加载模式改变为所指示的部分宽度加载模式。
示例25是用于处理指令的系统,该系统包括互连、与该互连耦合的动态随机存取存储器(DRAM),以及与该互连耦合的处理器。处理器包括具有宽度的寄存器、用于接收指令的解码单元。指令用于将DRAM的存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。处理器还包括与解码单元耦合的存储器子系统。存储器子系统用于:响应于该指令而从所指示的存储器位置加载数据。处理器还包括与存储器子系统以及寄存器耦合的单元。该单元响应于该指令而用于将所加载数据的至少部分写入到寄存器的部分宽度,并且用于利用存储在寄存器的其余宽度中的、具有依赖于处理器的模式的位值的位组来完成向寄存器写入。可任选地,指令不指示模式。
示例26包括示例25的系统,并且可任选地在其中,所述单元用于:在所述部分宽度加载模式中,将零作为所述位组写入到寄存器的其余宽度。可任选地,在第二部分宽度加载模式中,该单元不将零作为所述位组写入到寄存器的其余宽度。
示例27是处理器,该处理器包括用于接收部分宽度加载指令的装置。部分宽度加载指令用于将存储器的存储器位置指示为源操作数,并且将寄存器指示为目的地操作数。该处理器还包括用于响应于部分宽度加载指令而将数据从所指示的存储器位置加载到处理器的装置。该处理器还包括用于响应于部分宽度加载指令而将所加载数据的至少部分写入到寄存器的部分宽度的装置。该处理器还包括用于利用存储在寄存器的其余宽度中的、具有依赖于处理器的部分宽度加载模式的位值的位组来完成向寄存器写入的装置。可任选地,部分宽度加载指令不指示部分宽度加载模式。
示例28包括示例27的处理器,并且可任选地在其中,用于完成向寄存器写入的装置包括:用于在所述部分宽度加载模式中将零作为所述位组写入到寄存器的其余宽度的装置。
示例29是存储指令的机器可读存储介质,所述指令如果由机器执行,则使该机器执行示例13-22中任一项的方法。
示例30是用于执行示例13-22中的任一项的方法的处理器。
示例31是处理器,该处理器包括用于执行示例13-22中的任一项的方法的装置。
示例32是处理器,该处理器包括用于执行示例13-22中的任一项的方法的集成电路和/或逻辑和/或单元和/或组件和/或模块,或上述各项的任何组合。
示例33是计算机系统,该计算机系统包括动态随机存取存储器(DRAM)和处理器,所述计算机系统用于执行示例13-22中的任一项的方法。
示例34是用于执行基本上如本文中所描述的至少一个操作或方法的处理器。
示例35是处理器,该处理器包括用于执行基本上如本文中所描述的至少一个操作或方法的装置。
示例36是用于实行或执行基本上如本文中所描述的指令的处理器。
示例37是处理器,该处理器包括用于执行基本上如本文中所描述的指令的装置。
Claims (25)
1.一种处理器,包括:
寄存器,所述寄存器具有宽度;
解码单元,所述解码单元用于接收部分宽度加载指令,所述部分宽度加载指令用于将存储器的存储器位置指示为源操作数,并且将所述寄存器指示为目的地操作数;
存储器子系统,所述存储器子系统与所述解码单元耦合,所述存储器子系统用于响应于所述部分宽度加载指令而将数据从所指示的存储器位置加载到所述处理器;以及
寄存器写入单元,所述寄存器写入单元与所述存储器子系统和所述寄存器耦合,所述寄存器写入单元响应于所述部分宽度加载指令而用于将所加载数据的至少部分写入到所述寄存器的部分宽度,并且用于利用存储在所述寄存器的其余宽度中的、具有依赖于所述处理器的部分宽度加载模式的位值的位组来完成向所述寄存器写入,所述部分宽度加载指令不指示所述部分宽度加载模式。
2.如权利要求1所述的处理器,其特征在于,所述寄存器写入单元用于:在所述部分宽度加载模式中,将全零作为所述位组写入到所述寄存器的所述其余宽度;以及在第二部分宽度加载模式中,不将全零作为所述位组写入到所述寄存器的所述其余宽度。
3.如权利要求2所述的处理器,其特征在于,所述寄存器写入单元用于:在所述第二部分宽度加载模式中,将符号扩展位作为所述位组写入到所述寄存器的所述其余宽度。
4.如权利要求2所述的处理器,其特征在于,所述寄存器写入单元用于:在所述第二部分宽度加载模式中,利用在所述解码器接收到所述部分宽度加载指令之前被存储为所述寄存器的所述其余宽度中的所述位组的、最初位于所述其余宽度中的位组来完成向所述寄存器写入。
5.如权利要求1所述的处理器,进一步包括用于指示所述部分宽度加载模式的至少一个位,其中,所述处理器用于访问所述至少一个位以确定所述部分宽度加载模式,从而选择确定所述位组的所述位值的对应方法。
6.如权利要求5所述的处理器,其特征在于,所述至少一个位在所述处理器的寄存器中,并且是应用可见的。
7.如权利要求1所述的处理器,其特征在于,所述寄存器的所述宽度至少与所述处理器用来访问存储器的存储器地址一样宽,并且其中,所述寄存器的所述部分宽度仅是所述寄存器的所述宽度的部分。
8.如权利要求7所述的处理器,其特征在于,从下列各项中选择一项:
所述处理器是使用64位存储器地址的64位架构处理器,并且其中,所述寄存器的部分宽度为32位;以及
所述处理器是使用128位存储器地址的128位架构处理器,并且其中,所述寄存器的部分宽度为64位。
9.如权利要求1-8中任一项所述的处理器,其特征在于,所述处理器允许用户级应用改变所述部分宽度加载模式。
10.如权利要求1-8中任一项所述的处理器,其特征在于,所述处理器允许操作系统和虚拟机监视器中的至少一者改变所述部分宽度加载模式,但是不允许用户级应用改变所述部分宽度加载模式。
11.如权利要求1-8中任一项所述的处理器,其特征在于,所述处理器具有包括用于改变所述部分宽度加载模式的指令的指令集。
12.如权利要求1所述的处理器,其特征在于,所述寄存器写入单元用于:在所述部分宽度加载模式中,将全零作为所述位组写入到所述寄存器的所述其余宽度,并且所述处理器进一步包括:
所述处理器的单元,所述处理器的单元用于在中断以及从应用向操作系统过渡中的一者时将所述部分宽度加载模式改变为第二部分宽度加载模式。
13.一种由处理器执行的方法,包括:
接收部分宽度加载指令,所述部分宽度加载指令将存储器的存储器位置指示为源操作数,并且将寄存器指示为目的地操作数;
响应于所述部分宽度加载指令,将数据从所指示的存储器位置加载到所述处理器;
响应于所述部分宽度加载指令,将所加载数据的至少部分写入到所述寄存器的部分宽度;以及
利用存储在所述寄存器的其余宽度中的、具有依赖于所述处理器的部分宽度加载模式的位值的位组来完成向所述寄存器写入,所述部分宽度加载指令不指示所述部分宽度加载模式。
14.如权利要求13所述的方法,其特征在于,完成向所述寄存器写入包括:在所述部分宽度加载模式中,将零作为所述位组写入到所述寄存器的所述其余宽度,并且其中,在第二不同的部分宽度加载模式种,将符号扩展位而非所述零写入到所述寄存器的所述其余宽度。
15.如权利要求13所述的方法,其特征在于,完成向所述寄存器写入包括:在所述部分宽度加载模式中,将零作为所述位组写入到所述寄存器的所述其余宽度,并且其中,在第二不同的部分宽度加载模式中,将最初位于所述其余宽度中的位组存储在所述寄存器的所述其余宽度中。
16.如权利要求13所述的方法,进一步包括:
访问至少一个位以确定所述部分宽度加载模式;以及
选择对应于确定所述位组的所述位值的所述部分宽度加载模式的方法。
17.如权利要求16所述的方法,其特征在于,访问所述至少一个位包括:访问所述处理器的应用可见的寄存器中的至少一个位。
18.如权利要求13所述的方法,其特征在于,向所述寄存器的所述部分宽度写入包括:向所述寄存器的宽度的仅子集写入,并且其中,所述寄存器至少与所述处理器用来访问所述存储器的存储器地址一样宽。
19.如权利要求18所述的方法,其特征在于,向所述寄存器的所述部分宽度写入包括下列各项中的一项:
在所述寄存器的其余部分,利用零向所述寄存器的32位写入,并且其中,由所述处理器用来访问所述存储器的所述存储器地址为64位;以及
在所述寄存器的其余部分,利用零向所述寄存器的64位写入,并且其中,由所述处理器用来访问所述存储器的所述存储器地址为128位。
20.如权利要求13所述的方法,进一步包括:
接收来自用户级应用的、用于改变所述部分宽度加载模式的控制信号;以及
在接收到所述控制信号之后,改变所述部分宽度加载模式。
21.如权利要求13所述的方法,进一步包括:
接收来自操作系统和虚拟机监视器中的一者的、用于改变所述部分宽度加载模式的控制信号;
在接收到来自所述操作系统和所述虚拟机监视器中的所述一者的所述控制信号之后,改变所述部分宽度加载模式;以及
防止用户级应用改变所述部分宽度加载模式。
22.一种制品,所述制品包括存储一组指令的非暂态机器可读存储介质,所述指令如果由机器执行,则可操作以使所述机器执行包括下列各项的操作:
检查软件模块的元数据,包括检查要由处理器用来执行部分宽度加载指令的处理器的部分宽度加载模式的指示,所述部分宽度加载指令用于将存储器位置指示为源操作数,并且将寄存器指示为目的地操作数;以及
将所述处理器的所述部分宽度加载模式改变为所指示的部分宽度加载模式,其中,改变所述部分宽度加载模式以便控制将由所述处理器存储在所指示的寄存器的、不被用于存储从存储器加载的数据的部分宽度的部分中的位值的改变。
23.如权利要求23所述的制品,其特征在于,所述一组指令进一步包括指令,所述指令如果由所述机器执行时,可操作以使所述机器执行包括下列各项的操作:
维护元数据,所述元数据指示哪些不同的软件模块将使用哪些不同的部分宽度加载模式,其中包括所述软件模块将使用所述部分宽度加载模式;以及
在处理了中断之后,结合往回过渡到对来自所述软件模块的代码的执行而将所述处理器的所述部分宽度加载模式改变为所指示的部分宽度加载模式。
24.一种存储指令的机器可读存储介质,所述指令如果由机器执行,则使所述机器执行如权利要求13-21中任一项所述的方法。
25.一种处理器,所述处理器包括用于执行如权利要求13-21中的任一项所述的方法的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910081033.6A CN109508206B (zh) | 2013-06-28 | 2014-06-19 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,070 | 2013-06-28 | ||
US13/931,070 US9395990B2 (en) | 2013-06-28 | 2013-06-28 | Mode dependent partial width load to wider register processors, methods, and systems |
PCT/US2014/043159 WO2014209747A1 (en) | 2013-06-28 | 2014-06-19 | Mode dependent partial width load to wider register processors, methods, and systems |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910081033.6A Division CN109508206B (zh) | 2013-06-28 | 2014-06-19 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105453030A true CN105453030A (zh) | 2016-03-30 |
CN105453030B CN105453030B (zh) | 2019-02-15 |
Family
ID=52116848
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910081033.6A Active CN109508206B (zh) | 2013-06-28 | 2014-06-19 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN201480030091.1A Expired - Fee Related CN105453030B (zh) | 2013-06-28 | 2014-06-19 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910081033.6A Active CN109508206B (zh) | 2013-06-28 | 2014-06-19 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9395990B2 (zh) |
EP (1) | EP3014422B1 (zh) |
KR (1) | KR101839479B1 (zh) |
CN (2) | CN109508206B (zh) |
BR (1) | BR112015029955A2 (zh) |
RU (1) | RU2638641C2 (zh) |
TW (1) | TWI524271B (zh) |
WO (1) | WO2014209747A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108701027A (zh) * | 2016-04-02 | 2018-10-23 | 英特尔公司 | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
CN109508206A (zh) * | 2013-06-28 | 2019-03-22 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN111737186A (zh) * | 2016-10-10 | 2020-10-02 | 英特尔公司 | 多管芯硬件处理器和方法 |
CN112346783A (zh) * | 2020-11-05 | 2021-02-09 | 海光信息技术股份有限公司 | 一种处理器及其操作方法、装置、设备和介质 |
CN113287098A (zh) * | 2019-03-26 | 2021-08-20 | 拉姆伯斯公司 | 多精度存储器系统 |
CN114527953A (zh) * | 2022-04-24 | 2022-05-24 | 深圳云豹智能有限公司 | 存储器数据处理系统、方法、装置、计算机设备和介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539040B (en) * | 2015-06-05 | 2021-08-25 | Advanced Risc Mach Ltd | Issue policy control |
US10248423B2 (en) * | 2016-07-22 | 2019-04-02 | International Business Machines Corporation | Executing short pointer mode applications |
EP3971711A1 (en) | 2016-10-20 | 2022-03-23 | INTEL Corporation | Systems, apparatuses, and methods for fused multiply add |
GB2591788B (en) * | 2020-02-06 | 2022-06-01 | Advanced Risc Mach Ltd | Saving and restoring registers |
US20220350570A1 (en) * | 2021-04-28 | 2022-11-03 | International Business Machines Corporation | Pipelined hardware to accelerate modular arithmetic operations |
CN114020332B (zh) * | 2022-01-05 | 2022-09-23 | 北京微核芯科技有限公司 | 指令处理方法及其装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020129224A1 (en) * | 2000-12-23 | 2002-09-12 | Ibm | Method for handling 32 bit results for an out-of-order processor with A 64 bit architecture |
US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
CN101044450A (zh) * | 2004-10-19 | 2007-09-26 | 松下电器产业株式会社 | 处理器 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2288521B (en) * | 1994-03-24 | 1998-10-14 | Discovision Ass | Reconfigurable process stage |
US5446912A (en) * | 1993-09-30 | 1995-08-29 | Intel Corporation | Partial width stalls within register alias table |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6542988B1 (en) | 1999-10-01 | 2003-04-01 | Sun Microsystems, Inc. | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file |
US6871273B1 (en) * | 2000-06-22 | 2005-03-22 | International Business Machines Corporation | Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations |
EP1217513A3 (en) * | 2000-12-23 | 2003-08-13 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
US6995756B2 (en) * | 2003-03-31 | 2006-02-07 | Intel Corporation | Methods and apparatus for driving pixels in a microdisplay |
US7376817B2 (en) | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US20070186210A1 (en) | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US8566568B2 (en) * | 2006-08-16 | 2013-10-22 | Qualcomm Incorporated | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
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 |
US8977790B2 (en) * | 2008-02-15 | 2015-03-10 | Freescale Semiconductor, Inc. | Peripheral module register access methods and apparatus |
US8392693B2 (en) | 2009-08-28 | 2013-03-05 | Via Technologies, Inc. | Fast REP STOS using grabline operations |
US8627044B2 (en) * | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
US20120254588A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
US8918626B2 (en) * | 2011-11-10 | 2014-12-23 | Oracle International Corporation | Prefetching load data in lookahead mode and invalidating architectural registers instead of writing results for retiring instructions |
WO2013095604A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing mask bit compression |
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
-
2013
- 2013-06-28 US US13/931,070 patent/US9395990B2/en active Active
-
2014
- 2014-06-18 TW TW103121018A patent/TWI524271B/zh not_active IP Right Cessation
- 2014-06-19 CN CN201910081033.6A patent/CN109508206B/zh active Active
- 2014-06-19 BR BR112015029955A patent/BR112015029955A2/pt active Search and Examination
- 2014-06-19 KR KR1020157031766A patent/KR101839479B1/ko active IP Right Grant
- 2014-06-19 EP EP14816582.2A patent/EP3014422B1/en active Active
- 2014-06-19 WO PCT/US2014/043159 patent/WO2014209747A1/en active Application Filing
- 2014-06-19 CN CN201480030091.1A patent/CN105453030B/zh not_active Expired - Fee Related
- 2014-06-19 RU RU2015151131A patent/RU2638641C2/ru not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020129224A1 (en) * | 2000-12-23 | 2002-09-12 | Ibm | Method for handling 32 bit results for an out-of-order processor with A 64 bit architecture |
US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
CN101044450A (zh) * | 2004-10-19 | 2007-09-26 | 松下电器产业株式会社 | 处理器 |
Non-Patent Citations (1)
Title |
---|
ARTHUR GRIFFITH: "《GCC技术参考大全》", 31 July 2004 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508206A (zh) * | 2013-06-28 | 2019-03-22 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN109508206B (zh) * | 2013-06-28 | 2023-08-29 | 英特尔公司 | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 |
CN108701027A (zh) * | 2016-04-02 | 2018-10-23 | 英特尔公司 | 用于将比原生支持的数据宽度更宽的数据原子地存储到存储器的处理器、方法、系统和指令 |
CN111737186A (zh) * | 2016-10-10 | 2020-10-02 | 英特尔公司 | 多管芯硬件处理器和方法 |
US11899615B2 (en) | 2016-10-10 | 2024-02-13 | Intel Corporation | Multiple dies hardware processors and methods |
CN113287098A (zh) * | 2019-03-26 | 2021-08-20 | 拉姆伯斯公司 | 多精度存储器系统 |
CN112346783A (zh) * | 2020-11-05 | 2021-02-09 | 海光信息技术股份有限公司 | 一种处理器及其操作方法、装置、设备和介质 |
CN112346783B (zh) * | 2020-11-05 | 2022-11-22 | 海光信息技术股份有限公司 | 一种处理器及其操作方法、装置、设备和介质 |
CN114527953A (zh) * | 2022-04-24 | 2022-05-24 | 深圳云豹智能有限公司 | 存储器数据处理系统、方法、装置、计算机设备和介质 |
CN114527953B (zh) * | 2022-04-24 | 2022-07-08 | 深圳云豹智能有限公司 | 存储器数据处理系统、方法、装置、计算机设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
TW201523439A (zh) | 2015-06-16 |
WO2014209747A1 (en) | 2014-12-31 |
US9395990B2 (en) | 2016-07-19 |
TWI524271B (zh) | 2016-03-01 |
CN109508206A (zh) | 2019-03-22 |
US20150006856A1 (en) | 2015-01-01 |
EP3014422A4 (en) | 2017-03-01 |
RU2638641C2 (ru) | 2017-12-14 |
BR112015029955A2 (pt) | 2017-07-25 |
CN105453030B (zh) | 2019-02-15 |
KR20150139931A (ko) | 2015-12-14 |
CN109508206B (zh) | 2023-08-29 |
RU2015151131A (ru) | 2017-05-31 |
KR101839479B1 (ko) | 2018-03-19 |
EP3014422A1 (en) | 2016-05-04 |
EP3014422B1 (en) | 2021-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105453030A (zh) | 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统 | |
CN108351830B (zh) | 用于存储器损坏检测的硬件装置和方法 | |
CN109375949B (zh) | 一种具有多个核的处理器 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
CN114356417A (zh) | 实行16位浮点矩阵点积指令的系统和方法 | |
CN104951296A (zh) | 允许一种架构的代码模块使用另一种架构的库模块的架构间兼容模块 | |
TWI536187B (zh) | 緊縮資料元件預測處理器、方法、系統及指令 | |
CN104050012A (zh) | 指令模拟处理器、方法和系统 | |
CN104484284A (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN104951697A (zh) | 来自过程指令的返回-目标限制性返回、处理器、方法及系统 | |
CN104756090A (zh) | 提供扩展的缓存替换状态信息 | |
CN104077107A (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN104050026A (zh) | 使对共享存储器存取的同步松弛的处理器、方法及系统 | |
TWI733760B (zh) | 記憶體複製指令、處理器、方法及系統 | |
KR101787851B1 (ko) | 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 | |
CN104205088A (zh) | 用于实现页级自动二进制转换的硬件剖析机制 | |
RU2639695C2 (ru) | Процессоры, способы и системы для осуществления доступа к набору регистров либо как к множеству малых регистров, либо как к объединенному большому регистру | |
CN108228234B (zh) | 用于聚集-更新-分散操作的加速器 | |
CN104050415B (zh) | 用于系统调用的稳健且高性能的指令 | |
TW201732550A (zh) | 用於載入索引和散佈運算之指令和邏輯 | |
CN104603746A (zh) | 由读和写掩码控制的向量移动指令 | |
CN104969199A (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
KR20190129702A (ko) | 부동 소수점 데이터를 압축하기 위한 시스템 | |
CN104246694A (zh) | 聚集页错误信令和处理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190215 Termination date: 20210619 |
|
CF01 | Termination of patent right due to non-payment of annual fee |