CN105264489B - 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 - Google Patents
访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 Download PDFInfo
- Publication number
- CN105264489B CN105264489B CN201480030775.1A CN201480030775A CN105264489B CN 105264489 B CN105264489 B CN 105264489B CN 201480030775 A CN201480030775 A CN 201480030775A CN 105264489 B CN105264489 B CN 105264489B
- Authority
- CN
- China
- Prior art keywords
- register
- register group
- processor
- access
- instruction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 153
- 230000004044 response Effects 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 48
- 238000012545 processing Methods 0.000 description 20
- 238000012856 packing Methods 0.000 description 15
- 210000004027 cell Anatomy 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 210000004940 nucleus Anatomy 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 210000000262 cochlear duct Anatomy 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 235000009470 Theobroma cacao Nutrition 0.000 description 1
- 238000010009 beating Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 244000240602 cacao Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 201000006549 dyspepsia Diseases 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 125000000524 functional group Chemical group 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 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
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000003756 stirring Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一方面的处理器包括能够存储组装数据的寄存器组。执行单元与该寄存器组耦合。执行单元响应于指令采用至少两个不同方式访问寄存器组。该至少两个不同方式包括寄存器组代表多个N位寄存器的第一方式。至少两个不同方式还包括寄存器组代表具有至少2N个位的寄存器组的第二方式。在一个方面中,至少2N个位是至少256个位。
Description
技术领域
本文描述的实施例大体涉及处理器。特别地,本文描述的实施例大体涉及处理器中寄存器的使用。
背景技术
许多处理器具有单指令多数据(SIMD)架构。在SIMD架构中,打包数据指令、向量指令或SIMD指令可并发(例如,并行)对多个数据元素(例如,多对数据元素)起作用。处理器可具有响应于打包数据指令(packed data instruction)的并行指令硬件来并发(例如,并行)执行多个操作。
多个数据元素可在寄存器内或存储器位点内打包以作为打包数据。在打包数据中,寄存器或其他存储位点的位可在逻辑上分成数据元素序列。例如,64位宽打包数据寄存器可具有两个打包32位数据元素、四个打包16位数据元素或八个打包8位数据元素。
在一些处理器中,多年来打包数据操作数的宽度在递增。打包数据操作数宽度的增加大体允许并发(例如,并行)处理更多数据元素,这大体趋于提高性能。例如,在使用128位打包数据时,可并发处理八个16位数据元素来代替在64位打包数据情况下仅仅四个16位数据元素。
然而,这样的更宽打包数据使用的一个可能缺点是寄存器和寄存器文件大小的可能对应增加。例如,扩大一组64位寄存器中的每个寄存器使得它们每个是128位寄存器,这将可能使寄存器的大小(例如,晶片(die)上的寄存器所占据的占用空间的面积)近似加倍。该影响在比架构寄存器存在有更多物理寄存器的实现中将可能甚至更大,因为更大数量寄存器的大小近似加倍。这样的寄存器和寄存器文件大小增加的另一个可能缺点是在上下文切换、功率模式状态保存和类似转换时需要移到寄存器和从寄存器移动的数据量(例如,状态或上下文)的对应增加。例如,对于每个寄存器,在128位宽寄存器情况下128个位(而不是在64位宽寄存器情况下仅仅64个位)可需要移到寄存器和从寄存器移动。
附图说明
本发明通过参考下列描述和附图而最好地理解,这些附图用于图示本发明的实施例。在图中:
图1是处理器的实施例的框图。
图2是在处理器中和/或由处理器执行的方法的实施例的方框流程图。
图3是其中一组寄存器在第一视图中作为128位打包数据寄存器被查看或访问并且在第二视图中作为256位打包数据寄存器被查看或访问的实施例的框图。
图4是其中一组寄存器在第一视图中作为64位打包数据寄存器被查看或访问、在第二视图中作为128位打包数据寄存器被查看或访问并且在第三视图中作为256位打包数据寄存器被查看或访问的实施例的框图。
图5是其中一组寄存器在第一视图中作为128位打包数据寄存器被查看或访问、在第二视图中作为256位打包数据寄存器被查看或访问并且在第三视图中作为512位打包数据寄存器被查看或访问的实施例的框图。
图6是其中一组寄存器在第一视图中作为255位打包数据寄存器被查看或访问并且在第二视图中作为512位打包数据寄存器被查看或访问的实施例的框图。
图7A-C是利用一组寄存器的不同视图的适合指令格式的实施例的框图。
图7D是适合的打包数据格式的示例的框图。
图8A是图示根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、无序发出/执行流水线两者的框图。
图8B是图示根据本发明的实施例要在处理器中包括的有序架构核的示范性实施例和示范性寄存器重命名、无序发出/执行架构核两者的框图。
图9A是根据本发明的实施例的单个处理器核连同它到片上互连网络的连接以及它的 2级(L2)高速缓存的本地子集的框图。
图9B是根据本发明的实施例在图9A中的处理器核的部分的展开图。
图10是根据本发明的实施例可具有超过一个核、可具有集成存储器控制器且可具有集成图形的处理器的框图。
图11示出根据本发明的一个实施例的系统的框图。
图12示出根据本发明的实施例的第一更特定示范性系统的框图。
图13示出根据本发明的实施例的第二更特定示范性系统的框图。
图14示出根据本发明的实施例的SoC的框图。
图15是根据本发明的实施例对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器使用框图。
具体实施方式
本文公开处理器、方法和系统,其允许将一组寄存器作为多个相对较小的寄存器或作为多个相对较小寄存器被访问或查看。在下列描述中,阐述许多具体细节(例如,特定寄存器大小、寄存器数量、指令和格式、逻辑实现、处理器配置、微架构细节、操作顺序、逻辑划分/集成细节、系统部件的类型和相互关系及类似物)。然而,理解可在没有这些具体细节的情况下实践本发明的实施例。在其他实例中,为了不混淆对本描述的理解,未详细地示出众所周知的电路、结构和技术。
图1是处理器100的实施例的框图。该处理器代表能操作成处理指令的指令处理装置。在一些实施例中,处理器可以是通用处理器(例如,通常用作台式机、便携式电脑和类似计算机中的中央处理单元(CPU)的那类通用微处理器)。备选地,处理器可以是专用处理器。仅举几例,适合的专用处理器的示例包括但不限于网络处理器、通信处理器、密码处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)和控制器(例如,微控制器)。处理器可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算 (RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合或完全是其他类型的处理器中的任一个。
处理器还包括一组寄存器108。这些寄存器中的每个可代表处理器上和/或片上存储位点。在一些实施例中,该组寄存器可代表打包数据寄存器,或可另外能够存储打包数据、向量数据或SIMD数据。打包数据寄存器可采用不同方式在不同微架构中使用众所周知的技术实现,并且不限于任何特定类型的电路或机构。各种不同类型的寄存器是适合的。适合类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器及其组合。
处理器可接收指令102,其指示在寄存器组108上实现或另外与之关联的至少一个寄存器。指令可代表机器代码指令、汇编语言指令、宏指令或处理器指令集的控制信号。指令可显式规定(例如,通过一组位或一个或多个字段)或另外指示(或隐式指示)至少一个寄存器(例如,作为至少一个源和/或目的操作数)。作为一个示例,指令可规定用作源操作数的单个寄存器,并且该单个寄存器也可用作目的操作数,或指令可额外规定不同目的操作数。作为另一个示例,指令可规定用作第一源操作数的第一寄存器,和用作第二源操作数的第二寄存器,并且对源操作数规定的寄存器中的一个也可用作目的操作数,或指令可额外规定不同目的操作数。这些仅仅是几个说明性示例。本发明的范围不受特定类型指令的限制,只要指令指示与寄存器组关联的至少一个寄存器即可。仅举几例,适合类型的指令的示例包括但不限于打包算术指令(例如,打包加法指令、打包乘法指令,等)、打包逻辑指令(例如,打包循环指令、打包移位指令、打包比较指令、打包逻辑OR指令,等)、打包存储器访问指令(例如,收集指令、分散指令等)。
处理器包括指令解码单元104。该指令解码单元也可称为解码单元、解码器或解码逻辑。解码单元可接收相对更高级指令(例如,机器代码指令、汇编语言指令、宏指令)并且对其解码,并且输出一个或多个相对更低级指令或控制信号(例如,微指令、微操作、微代码入口点),其反映、代表更高级指令和/或从其得到。一个或多个更低级指令或控制信号可通过一个或多个更低级(例如,电路级或硬件级)操作来实现更高级指令。解码单元可使用各种不同机构实现,其包括但不限于微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和用于实现本领域内已知的解码单元的其他机构。在其他实施例中,代替解码单元或作为解码单元的补充,可使用指令仿真器、转译器、变形器、解释器或其他指令转换逻辑。
再次参考图1,执行单元106与解码单元104并且与寄存器组108耦合。通过示例,执行单元可包括算术单元、逻辑单元、算术逻辑单元(ALU)、执行算术和逻辑操作的数字电路或逻辑、存储器执行单元或类似物。执行单元可接收一个或多个解码或另外转换的指令或控制信号,其代表指令102和/或从指令102得到。执行单元和/或处理器可包括具体或特定逻辑(例如,晶体管、电路或潜在地与固件(例如,存储在非易失性存储器中的指令)和 /或软件组合的其他硬件),其能操作成响应于指令102(例如,响应于解码或另外从指令 102得到的一个或多个指令或控制信号)执行操作。
在一些实施例中,执行单元可响应于和/或由于指令102而能操作成采用寄存器的至少两个不同方式或视图中的任一个或两个来访问寄存器组108。在一些实施例中,该至少两个不同方式或视图可包括第一方式或视图110,其中寄存器组108要视为或另外代表多个N 位寄存器。在一些实施例中,至少两个不同方式或视图可包括第二方式或视图112,其中寄存器组要视为或另外代表具有至少2N个位的单个寄存器。在一些实施例中,至少2N个位可以是至少256个位。在其他实施例中,寄存器组可以是N位寄存器(例如,128位寄存器、256位寄存器等)。在一些实施例中,寄存器组可以是N/2位寄存器(例如,64位寄存器、128位寄存器等)。
作为一个具体示例,寄存器组108可由两个N位寄存器(例如,128位寄存器)组成。在第一方式或视图110中,两个N位寄存器(例如,128位寄存器)可视为或另外代表两个N位(例如,128位)寄存器。在第二方式或视图112中,两个N位寄存器(例如, 128位寄存器)可视为或另外代表具有至少2N个位(例如,256个位、512个位,等)的单个寄存器。在一些实施例中,可存在访问一组寄存器108的不止两个不同视图或方式。例如,在一些实施例中,可存在三个、四个或超过四个访问或查看寄存器组108的不同方式。例如,在一些实施例中,该示例可额外支持访问作为四个N/2位寄存器(例如,64位寄存器)的寄存器组。
作为另一个具体示例,寄存器组108可由四个N/2位寄存器(例如,64位寄存器) 组成。在第一方式或视图110中,该四个N/2位寄存器(例如,64位寄存器)可视为或另外代表两个N位(例如,128位)寄存器。在第二方式或视图112中,四个N/2位寄存器 (例如,64位寄存器)可视为或另外代表具有至少2N个位(例如,256个位、512个位、 1024个位等)的单个寄存器。在一些实施例中,可存在访问寄存器组108的至少第三个方式。例如,在一些实施例中,在第二视图112中,执行单元可将四个N/2位寄存器(例如, 64位寄存器)作为具有至少4N个位(例如,512个位、1024个位,等)的单个寄存器来查看或访问,并且处理器可额外支持访问或查看作为多个2N位寄存器(例如,256个位)的寄存器组108。
在一些实施例中,在寄存器组108的视图和/或访问寄存器108组的方式中的每个中,被查看或访问的打包数据寄存器对于软件和/或编程者可是可见的并且/或可由指令集的指令(例如,宏指令、机器语言指令、汇编语言指令等)规定来识别操作数。有时由指令集的指令规定的寄存器在现有领域中称为架构可见寄存器或架构寄存器,其与指定微架构中的其他非架构或非架构可见寄存器(例如,用于实现指令的暂时寄存器,等)形成对比。
如在这些详细示例中示出的,在一些实施例中,处理器可能操作成识别、查看和/或访问作为多个相对较小寄存器(例如,N位寄存器)或作为单个相对较大寄存器(例如,具有至少2N个位的寄存器)的寄存器组108。例如,在一些实施例中,相邻寄存器对可独立作为128位寄存器来查看或可逻辑“组合”在一起并且统一作为单个256位寄存器来查看。在两个128位寄存器和单个256位寄存器两者中都可牵涉相同的物理寄存器和相同物理总量的位,但它们可采用不同方式来查看。有利地,在一些实施例中,这样的方法可用于避免需要扩大寄存器的位宽,同时仍允许打包数据寄存器宽度和/或打包数据操作数宽度增加。避免扩大寄存器位宽可有助于避免或至少减少背景章节中提到的可能缺点中的一些,例如晶片上增加的寄存器面积或占用空间和/或在上下文切换时需要移入和移出寄存器的增加数量的数据。在一些实施例中,这样的方法可用于实现具有至少256个位(例如,256个位、512 个位、1024个位,等)的打包数据寄存器或操作数,对此前面提到的可能缺点趋于变得甚至更加明显。
为了避免难以理解描述,示出并且描述相对简单的处理器100。在其他实施例中,处理器可以可选地包括在处理器中找到的其他众所周知的部件。这样的部件的示例包括但不限于分支预测单元、指令提取单元、指令和数据转换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、寄存器重命名单元、指令调度单元、引退单元、处理器中包括的其他部件及其各种组合。在处理器中从字面上存在很多不同的部件组合和配置,并且实施例不限于任何特定组合或配置。实施例可包括在具有多个核的处理器、逻辑处理器或执行引擎中,其中的至少一个包括或利用本文公开的实施例。
图2是在处理器中和/或由处理器执行的方法214的实施例的方框流程图。在一些实施例中,图2的操作和/或方法可由图1的处理器和/或在其内执行。上文描述的对于图1的处理器的细节和可选特征也可选地适用于图2的操作和/或方法,其可由这样的处理器和/或在这样的处理器内执行。备选地,图2的操作和/或方法可由相似或不同处理器和/或在相似或不同处理器内执行。此外,图1的处理器可执行与图2的那些相同、相似或不同的操作和/或方法。
方法包括在框216处采用第一方式访问一组寄存器。在一些实施例中,在第一方式中,寄存器组可代表多个N位寄存器。访问可以是从多个N位寄存器中的每个检索对应的 N位打包数据(或对于多个N位寄存器中的每个存储对应N位打包数据)。
方法包括在框218处采用第二不同方式访问寄存器组。在一些实施例中,在第二方式中,寄存器组可代表具有至少2N个位的单个寄存器。访问可以是从单个寄存器检索具有至少2N个位的对应打包数据(或对于单个寄存器存储具有至少2N个位的对应打包数据)。在一些实施例中,至少2N个位可以是至少256个位。
在其他实施例中,方法可以可选地包括采用至少第三不同的方式并且在一些情况下也采用第四不同方式访问寄存器组。在一些实施例中,方式中的一个可将寄存器视为具有至少512个位宽的单个寄存器。
图3是图示其中在第一视图310中一组寄存器作为128位打包数据寄存器被查看或访问并且在第二视图312中作为256位打包数据寄存器被查看或访问的实施例的框图。在第一视图310中,寄存器(例如,物理寄存器)组在逻辑上作为八个128位打包数据寄存器 (标记为X0-X7)来查看或访问。在第二视图312中,相同一组寄存器(例如,物理寄存器)在逻辑上作为四个(即,一半)256位打包数据寄存器(标记为Y0-Y3)来查看或访问。在第二视图312中,256位寄存器Y0的最低阶128个位(即,位127:0)映射到或对应于128位寄存器X0,而256位寄存器Y0的最高阶128个位(即,位255:128)映射到或对应于128位寄存器X1。相似地,其他256位寄存器Y1-Y3中的每个包括不同对的128位寄存器X2-X7。多个(在该情况下两个)较小(在该情况下128位)寄存器在逻辑上组合或分组来形成单个较大(在该情况下256位)寄存器。在一些实施例中,用于实现视图的实际物理寄存器可以是64位寄存器或128位寄存器。备选地,可以可选地使用其他宽度。
预想图示实施例上的许多变化。在图示实施例中,相邻128位寄存器在逻辑上组合或分组(例如,X0与X1组合,X2与X3组合,等)。在其他实施例中,非相邻寄存器可组合(例如,不同组中的非相邻寄存器、交替寄存器可组合,等)。在图示的实施例中,示出八个128位寄存器(X0-X7)和四个256位寄存器(Y0-Y3),但可根据期望可选地使用更少或更多的寄存器。在一个示例实施例中,可存在足够寄存器以在第一视图310中查看至少十六个128位寄存器(或至少三十二个128位寄存器)和/或存在足够寄存器以在第二视图312 中查看至少八个256位寄存器(或至少十六个128位寄存器)。此外,在其他实施例中,可支持三个或以上视图,其中寄存器组作为64位寄存器、512位寄存器、1024位寄存器、其他大小或其组合来查看。
图4是图示其中一组寄存器在第一视图410中作为64位打包数据寄存器被查看或访问、在第二视图412中作为128位打包数据寄存器被查看或访问并且在第三视图420中作为 256位打包数据寄存器被查看或访问的实施例的框图。在第一视图410中,寄存器(例如,物理寄存器)组在逻辑上作为十六个64位打包数据寄存器(标记为W0-W15)来查看或访问。
在第二视图412中,相同寄存器(例如,物理寄存器)组在逻辑上作为八个(即,一半)128位打包数据寄存器(标记为X0-X7)来查看或访问。在第二视图412中,128位寄存器X0的最低阶64个位(即,位63:0)对应于64位寄存器W0,而128位寄存器X0 的最高阶64个位(即,位127:64)对应于64位寄存器W1。此外,在第二视图412中, 128位寄存器X1的最低阶64个位(即,位63:0)对应于64位寄存器W2,而128位寄存器X1的最高阶64个位(即,位127:64)对应于64位寄存器W3。
在第三视图420中,相同寄存器(例如,物理寄存器)组在逻辑上作为四个256位打包数据寄存器(标记为Y0-Y3)来查看或访问。在第三视图420中,256位寄存器Y0的最低阶64个位(即,位63:0)对应于64位寄存器W0,256位寄存器Y0的最低中间阶64 个位(即,位127:64)对应于64位寄存器W1,256位寄存器Y0的最高中间阶64个位 (即,位191:128)对应于64位寄存器W2,并且256位寄存器Y0的最高阶64个位(即,位255:192)对应于64位寄存器W3。从另一方面来看,在第三视图420中,256位寄存器 Y0的最低阶128个位(即,位127:0)对应于128位寄存器X0,并且256位寄存器Y0的最高阶128个位(即,位255:128)对应于128位寄存器X0。
在一些实施例中,用于实现视图的实际物理寄存器可以是64位寄存器或128位寄存器。备选地,可以可选地使用其他宽度。与之前一样,预想图示实施例上的许多变化。例如,非相邻寄存器可组合(例如,不同组中的非相邻寄存器、交替寄存器可组合,等)。作为另一个示例,可使用其他数量的寄存器。此外,在其他实施例中,可支持其他视图,其中寄存器组视为512位寄存器、1024位寄存器、其他大小或其组合。
图5是图示其中一组寄存器在第一视图中510作为128位打包数据寄存器被查看或访问、在第二视图512中作为256位打包数据寄存器被查看或访问并且在第三视图522中作为512位打包数据寄存器被查看或访问的实施例的框图。在第一视图510中,寄存器(例如,物理寄存器)组在逻辑上作为八个128位打包数据寄存器(标记为X0-X7)来查看或访问。在第二视图512中,相同寄存器(例如,物理寄存器)组在逻辑上作为四个(即,一半)256位打包数据寄存器(标记为Y0-Y3)来查看或访问。该配置可与对图3示出和描述的方法相似。
在第三视图522中,相同寄存器(例如,物理寄存器)组在逻辑上作为两个512位打包数据寄存器(标记为Z0-Z1)来查看或访问。在第三视图522中,512位寄存器Z0的最低阶128个位(即,位127:0)对应于128位寄存器X0,512位寄存器Z0的最低中间阶 128个位(即,位255:128)对应于128位寄存器X1,512位寄存器Z0的最高中间阶128个位(即,位383:256)对应于128位寄存器X2,并且512位寄存器Z0的最高阶128个位 (即,位511:384)对应于128位寄存器X3。从另一个方面来看,在第三视图522中,512 位寄存器Z0的最低阶256个位(即,位255:0)对应于256位寄存器,512位寄存器Z0的最高阶256个位(即,位511:256)对应于256位寄存器Y1。相似地,其他寄存器中的每个具有如由位标记示出的相似对应性。
在一些实施例中,用于实现视图的实际物理寄存器可以是64位寄存器或128位寄存器。备选地,可以可选地使用其他宽度。与之前一样,预想图示实施例上的许多变化。例如,非相邻寄存器可组合(例如,不同组中的非相邻寄存器、交替寄存器可组合,等)。作为另一个示例,可使用其他数量的寄存器。此外,在其他实施例中,可支持其他视图,其中寄存器组作为512位寄存器、1024位寄存器、其他大小或其组合被查看。
图6是图示其中一组寄存器在第一视图610中作为255位打包数据寄存器被查看或访问并且在第二视图612中作为512位打包数据寄存器被查看或访问的实施例的框图。在第一视图610中,寄存器(例如,物理寄存器)组在逻辑上作为四个255位打包数据寄存器(标记为Y0-Y3)来查看或访问。在第二视图612中,相同寄存器(例如,物理寄存器)组在逻辑上作为两个(即,一半)512位打包数据寄存器(标记为Z0-Z3)来查看或访问。在第二视图612中,512位打包数据寄存器Z0的最低阶255个位(即,位255:0)对应于255 位寄存器Y0,并且512位寄存器Z0的最高阶255个位(即,位511:256)对应于256位寄存器Y1。相似地,其他寄存器中的每个具有如由位标记示出的相似对应性。
在一些实施例中,用于实现视图的实际物理寄存器可以是64位寄存器、128位寄存器或255位寄存器。备选地,可以可选地使用其他宽度。与之前一样,预想图示实施例上的许多变化。例如,非相邻寄存器可组合(例如,不同组中的非相邻寄存器、交替寄存器可组合,等)。作为另一个示例,可使用其他数量的寄存器。此外,在其他实施例中,可支持其他视图,其中寄存器组视为64位寄存器、128位寄存器、1024位寄存器、其他大小或其组合。
图7A-C是利用一组寄存器的不同视图的适合指令格式的实施例的框图。图7A是适合指令格式730A的第一实施例的框图。在该实施例中,指令格式具有操作代码或操作码732A,其能操作成指示在处理指令时要如何查看或访问一组寄存器。常规地,操作码可代表多个位或一个或多个字段,其能操作成识别要执行的指令和/或操作。在一些实施例中,操作码也可显式规定或隐式指示在处理指令时要如何查看或访问寄存器组。例如,某些操作码和/或操作可隐式地采用指定方式利用寄存器组。例如,对于对128位源寄存器执行的打包乘法操作的操作码可隐式指示目的地要视为256位寄存器来存储全产品,其是源数据元素大小的两倍。
根据特定类型的指令,指令格式还包括各种常规字段734A中的任一个。这样的常规字段的示例包括但不限于规定一个或多个源操作数的一个或多个字段和/或规定一个或多个目的操作数的一个或多个字段。这些操作数可代表如本文描述的寄存器、存储器位点或其他存储位点。源和/或目的操作数也可由指令隐式指示而不是显式规定。此外,对于源操作数的寄存器或其他存储位点可重新用于目的操作数。常规字段的其他示例包括但不限于一个或多个立即数、指示打包数据操作掩码(例如,用于预测的掩码)的字段、预测或屏蔽控制的字段、广播控制的字段、浮点舍入控制的字段和本领域内已知的其他常规字段。
图7B是适合指令格式730B的第二实施例的框图。在该实施例中,指令格式具有操作代码或操作码732B。在一些实施例中,指令格式还具有专用字段738,用于指示在处理指令时要如何查看或访问一组寄存器。在该实施例中,字段738可与操作码分开或不同。在一些实施例中,字段可包括在寄存器组的两个不同视图中的任一个之间选择的单个位。备选地,字段可具有在寄存器的超过两个不同视图之间选择的两个或以上位。允许指令指示视图 (例如,通过操作码或独立专用字段)可允许指令指示视图并且可有助于避免需要执行模式改变。备选地,软件(例如,操作系统、管理程序,等)可对于逻辑处理器改变操作模式来指示视图。根据特定类型的指令,指令格式还包括各种常规字段734B中的任一个。之前描述的常规字段是适合的。
图7C是适合指令格式730C的第三实施例的框图。如示出的,在一些实施例中,指令格式可具有操作码732C,其能操作成指示在处理指令时要如何查看或访问一组寄存器。备选地,指令格式可具有与图7B的第二指令格式中的一个相似的专用字段。指令格式还包括指示组中的哪些寄存器要组合来制成相对较大寄存器的一个或多个字段。这可在不同实施例中采用各种不同方式进行。在一个实施例中,可包括显式规定两个128位寄存器或四个64位寄存器的字段,这些寄存器要组合来制成单个256位寄存器。在其他实施例中,一个或多个字段可用于在使寄存器组合的不同预定方式之间选择。例如,一个方式将是使用相邻寄存器,另一个方式将是使用每隔一个寄存器,并且再另一个方式将是在不同寄存器组中使用序列寄存器。根据特定类型的指令,指令格式还包括各种常规字段734C中的任一个。之前描述的常规字段是适合的。
这些仅仅是适合指令格式的几个示例。要意识到额外字段可以可选地添加到这些指令格式中的任一个。此外,如提到的,内容可被隐式指示而不是显式规定。尽管上文的论述指字段,要意识到资源不必包括位序列而相反可以可选地由非邻接位形成。字段也可可选地重叠。另外,图示的字段的顺序/设置仅仅是说明性的并且在其他实施例中可移动或重新设置字段。
图7D是图示适合的打包数据格式的示例的框图。在图示中,盒上面的数字代表位的位置。128位打包字格式842是128位宽并且包括八个16位宽的字数据元素,其在图示中从最低到最高有效位位置地标记为WORD0至WORD7。128位打包双字格式844是128个位并且包括四个32位双字数据元素,其从最低到最高有效位位置地标记为DWORD0至 DWORD3。128位打包四字格式846是128个位并且包括两个64位四字数据元素,其从最低到最高有效位位置地标记为QWORD0至QWORD1。
256位打包字格式848是256位宽并且包括十六个16位宽字数据元素,其在图示中从最低到最高有效位位置地标记为WORD0至WORD15。256位打包双字格式850是256个位并且包括八个32位双字数据元素,其从最低到最高有效位地标记为DWORD0至 DWORD7。256位打包四字格式852是256个位并且包括四个64位四字数据元素,其从最低到最高有效位位置地标记为QWORD0至QWORD3。
其他打包数据格式也是适合的。例如,其他适合的128位和256位打包数据格式包括打包8位字节格式、打包32位单精度浮点格式和打包64位双精度浮点格式。打包字节格式可具有是打包字格式的两倍多的数据元素并且每个数据元素可是一半宽。单和双精度浮点格式可分别看起来与图示的双字和四字格式相似,但数据元素内位的意思/解释可是不同的。此外,更宽或更窄的打包数据宽度也是适合的,例如64位打包数据、512位打包数据、1024位打包数据等。字节、字、双字、四字或其他格式中的任一个是适合的。一般,打包数据元素的数量等于打包数据的以位计的大小除以打包数据元素的以位计的大小。
对图3-6中的任一个描述的视图或寄存器属性的可选细节可可选地适用于图1的处理器和/或图2的方法。图7A-D的指令格式的可选细节可可选地适用于图1的处理器和/或图2 的方法。此外,本文对于装置中的任一个描述的部件、特征和细节也可可选地在本文描述的方法中的任一个中使用,这些方法在实施例中可由这样的装置和/或用这样的装置执行。
示范性核架构、处理器和计算机架构
处理器核可采用不同方式、对于不同目的以及在不同处理器中实现。例如,这样的核的实现可包括: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,其包括耦合于执行引擎单元850的前端单元830,并且这两者都耦合于存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选核类型。作为再另一个选项,核890可以是专用核,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元 (GPGPU)核、图形核或类似物。
前端单元830包括耦合于指令高速缓存单元834的分支预测单元832,该指令高速缓存单元834耦合于指令转换后备缓冲器(TLB)836,其耦合于指令提取单元838,该指令提取单元838耦合于解码单元840。解码单元840(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,其从原始指令解码或另外反映原始指令或从原始指令得到。解码单元840可使用各种不同的机构实现。适合机构的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括微代码ROM或存储对于某些宏指令(例如,在解码单元840中或另外在前端单元830内)的微代码的其他介质。解码单元840耦合于执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,其耦合于引退单元854和一组一个或多个调度器单元856。调度器单元856代表任何数量的不同调度器,其包括保留站、中央指令窗口等。调度器单元856耦合于物理寄存器文件单元858。物理寄存器文件单元858中的每个代表一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同数据类型,例如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,是要执行的下一个指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元 858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元858与引退单元854重叠来说明可实现寄存器重命名和无序执行所采用的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等)。引退单元854和物理寄存器文件单元858耦合于执行集群860。执行集群860包括一组一个或多个执行单元862和一组一个或多个存储器访问单元864。执行单元862可对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可包括专用于特定功能或功能组的许多执行单元,其他实施例可仅包括一个执行单元或多个执行单元,其全部执行所有功能。调度器单元856、物理寄存器单元858和执行集群860示出为可能是复数个,因为某些实施例对某些类型的数据/操作创建独立流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每个具有它们自己的调度器单元、物理寄存器文件单元和/或执行集群-并且在独立存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元864的某些实施例)。还应理解在使用独立流水线的地方,这些流水线中的一个或多个可以是无序发出/执行并且余下的是有序的。
存储器访问单元组864耦合于存储器单元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指令集(具有添加有较新版本的一些扩展);加利福尼亚州Sunnyvale市的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale市的ARM Holdings的ARM指令集(其具有可选的额外扩展,例如NEON)),其包括本文描述的指令。在一个实施例中,核890包括支持打包数据指令集扩展(例如, AVX1、AVX2)的逻辑,由此允许由许多多媒体应用使用的操作使用打包数据来执行。
应理解核可支持多线程(执行两个或以上并行操作或线程集),并且可采用多种方式来这样做,其包括时间分片多线程、同时多线程(其中单个物理核对线程中的每个提供逻辑核,该物理核是同时多线程的)或其组合(例如,时间分片提取和解码以及之后的同时多线程,例如在Hyperthreading技术中)。
尽管在无序执行的上下文中描述寄存器重命名,应理解寄存器重命名可在有序架构中使用。尽管图示的处理器的实施例还包括独立指令和数据高速缓存单元834/874和共享L2 高速缓存单元876,备选实施例可对于指令和数据两者具有单个内部高速缓存,例如1级 (L1)内部高速缓存,或多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选地,高速缓存中的全部可在核和/或处理器外部。
具体示范性有序核架构
图9A-B图示更具体的示范性有序核架构的框图,该核将是芯片中的若干逻辑块(其包括具有相同类型和/或不同类型的其他核)中的一个。逻辑块通过根据应用具有一些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑的高带宽互连网络(例如,环型网络)来通信。
图9A是根据本发明的实施例的单个处理器核连同它到片上互连网络902的连接以及它的2级(L2)高速缓存904的本地子集的框图。在一个实施例中,指令解码器900支持具有打包数据指令集扩展的x86指令集。L1高速缓存906允许对高速缓存存储器对于标量和向量单元的低延迟访问。尽管在一个实施例中(为了简化设计),标量单元908和向量单元 910使用独立寄存器组(分别地,标量寄存器912和向量寄存器914)并且在它们之间传输的数据被写入存储器并且然后从1级(L1)高速缓存906读回,本发明的备选实施例可使用不同的方法(例如,使用单个寄存器组或包括通信路径,其允许数据在两个寄存器文件直接传输而不被写回和读回)。
L2高速缓存904的本地子集是全局L2高速缓存的部分,其分成独立本地子集,每个处理器核一个。每个处理器核具有到它自己的L2高速缓存904的本地子集的直接访问路径。处理器核读取的数据存储在它的L2高速缓存子集904中并且可以与其他处理器核访问它们自己的本地L2高速缓存子集并行地被快速访问。处理器核写入的数据存储在它自己的 L2高速缓存子集904中并且如必要的话从其他子集清理。环型网络对共享数据确保一致性。环型网络是双向的,以允许例如处理器核、L2高速缓存和其他逻辑块等代理在芯片内彼此通信。每个环型数据路径每个方向是1012位宽。
图9B是根据本发明的实施例的图9A中的处理器核的部分的展开图。图9B包括L1高速缓存904的L1数据高速缓存906A部分,以及关于向量单元910和向量寄存器914的更多细节。具体地,向量单元910是16宽向量处理单元(VPU)(参见16宽ALU 928),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持用搅合单元920搅合寄存器输入、利用数值转换单元922A-B的数值转换以及对存储器输入用复制单元924复制。写入掩码寄存器926允许预测所得的向量写入。
具有集成存储器控制器和图形的处理器
图10是根据本发明的实施例可具有超过一个核、可具有集成存储器控制器并且可具有集成图形的处理器1000的框图。图10中的实线框图示处理器1000,其具有单核1002A、系统代理1010、一组一个或多个总线控制器单元1016,而虚线框的可选添加图示备选处理器 1000,其具有多个核1002A-N、系统代理单元1010中的一组一个或多个集成存储器控制器单元组1014和专用逻辑1008。
从而,处理器1000的不同实现可包括:1)CPU,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1002A-N是一个或多个通用核 (例如,通用有序核、通用无序核、两者的组合);2)协处理器,其中核1002A-N是主要针对图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1002A-N是大量通用有序核。从而,处理器1000可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的许多集成核(MIC)协处理器(其包括30个或以上的核)、嵌入式处理器或类似物。处理器可在一个或多个芯片上实现。处理器1000可以是一个或多个衬底的一部分和/或可在一个或多个衬底上使用许多工艺技术中的任一个来实现,例如BiCMOS、CMOS或NMOS。
存储器层级包括在核内的一个或多个级别的高速缓存、一组一个或多个共享高速缓存单元1006和耦合于该组集成存储器控制器单元1014的外部存储器(未示出)。共享高速缓存单元组1006可包括一个或多个中间级别的高速缓存,例如2级(L2)、3级(L3)、4 级(L4)或其他级别的高速缓存、最后级别的高速缓存(LLC)和/或其组合。尽管在一个实施例中基于环的互连单元1012使集成图形逻辑1008、共享高速缓存单元组1006和系统代理单元1010/集成存储器控制器单元1014互连,备选实施例可使用任何数量的众所周知的技术用于互连这样的单元。在一个实施例中,维持一个或多个高速缓存单元1006与核1002- A-N之间的一致性。
在一些实施例中,核1002A-N中的一个或多个能够多线程。系统代理1010包括协调并且操作核1002A-N的那些部件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节核1002A-N和集成图形逻辑1008的功率状态所需要的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N从架构指令集方面来看可以是同构或异构的;即,核1002A-N中的两个或以上可能够执行相同指令集,而其他可仅能够执行该指令集的子集或不同指令集。
示范性计算机架构
图11-14是示范性计算机架构的框图。本领域内已知的对于便携式电脑、台式机、手持 PC、个人数字助理、工程化工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持设备和各种其他电子设备的其他系统设计和配置也是适合的。一般,能够包含如本文公开的处理器和/或其他执行逻辑的很多种系统或电子设备一般是适合的。
现在参考图11,示出根据本发明的一个实施例的系统1100的框图。该系统1100可包括一个或多个处理器1110、1115,其耦合于控制器集线器1120。在一个实施例中,控制器集线器1120包括图形存储器控制器集线器(GMCH)1190和输入/输出集线器(IOH) 1150(其可在独立芯片上);GMCH 1190包括存储器和图形控制器,存储器1140和协处理器1145耦合于这些图形控制器;IOH 1150使输入/输出(I/O)设备1160耦合于GMCH 1190。备选地,存储器和图形控制器中的一个或两个在处理器内集成(如本文描述的),存储器1140和协处理器1145直接耦合于处理器1110和在具有IOH 1150的单芯片中的控制器集线器1120。
额外处理器1115的可选性质在图11中用折线指示。每个处理器1110、1115可包括本文描述的处理核中的一个或多个并且可以是某一版本的处理器1000。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器1120经由多点总线(例如前端总线 (FSB))、点到点接口(例如QuickPath互连(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)接口1250使用P-P接口电路1278、1288交换信息。如在图12中示出的,IMC 1272和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 Express总线或另一个第三代I/O互连总线等总线,但本发明的范围不受此限制。
如在图12中示出的,各种I/O设备1214连同总线桥1218可耦合于第一总线1216,该总线桥1218使第一总线1216耦合于第二总线1220。在一个实施例中,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器等一个或多个额外处理器1215耦合于第一总线 1216。在一个实施例中,第二总线1220可以是低引脚计数(LPC)总线。各种设备可耦合第二总线1220,其包括例如键盘和/或鼠标1222、通信设备1227和存储单元1228,例如盘驱动器或其他大容量存储设备,其在一个实施例中可包括指令/代码和数据1230。此外,音频I/O 1224可耦合于第二总线1220。注意其他架构是可能的。例如,代替图12的点到点架构,系统可实现多点总线或其他这样的架构。
现在参考图13,示出根据本发明的实施例的第二更具体的示范性系统1300的框图。图12和图13中的类似元件承载类似的标号,并且图12的某些方面已经从图13省略以避免混淆图13的其他方面。
图13图示处理器1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272 和1282。从而,CL 1272、1282包括集成存储器控制器单元并且包括I/O控制逻辑。图13 图示不仅存储器1232、1234耦合于CL 1272、1282,而且I/O设备1314也耦合于控制逻辑 1272、1282。遗留I/O设备1315耦合于芯片集1290。
现在参考图14,示出根据本发明的实施例的SoC 1400的框图。图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)、随机存取存储器(RAM)(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁或光卡等,或适合于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其限定本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可称作程序产品。
仿真(其包括二进制翻译、代码变形等)
在一些情况下,指令转换器可用于将来自源指令集的指令转换成目标指令集。例如,指令转换器可将指令翻译(例如,使用静态二进制翻译、动态二进制翻译,其包括动态编译)、变形、仿真或用别的方式转换成要由核处理的一个或多个其他指令。指令转换器可在软件、硬件、固件或其组合中实现。指令转换器可以在处理器上、离开处理器或部分在处理器上且部分离开处理器。
图15是根据本发明的实施例对比将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器使用的框图。在图示的实施例中,指令转换器是软件指令转换器,但备选地,指令转换器可在软件、固件、硬件或其各种组合中实现。图15示出采用高级语言1502的程序可使用x86编译器1504编译来生成x86二进制代码1506,其可由具有至少一个x86指令集核1516的处理器本机执行。具有至少一个x86指令集核1516的处理器代表这样的任何处理器,其可以通过以下而执行与具有至少一个x86指令集核的Intel处理器大致相同的功能以便实现与具有至少一个x86指令集核的Intel处理器大致相同的结果:兼容地执行或另外处理(1)Intel x86指令集核的指令集的相当大一部分或(2)以在具有至少一个x86指令集核的Intel处理器上运行为目标的应用或其他软件的目标代码版本。x86编译器1504代表能操作成生成x86二进制代码1506(例如,目标代码)的编译器,这些x86 二进制代码1506可以在具有或没有额外链接处理的情况下在具有至少一个x86指令集核 1516的处理器上执行。相似地,图15示出采用高级语言1502的程序可使用备选指令集编译器1508编译来生成备选指令集二进制代码1510,其可由没有至少一个x86指令集核1514 的处理器(例如,具有执行加利福尼亚州Sunnyvale市的MIPS Technologies的MIPS指令集和/或执行加利福尼亚州Sunnyvale市的ARM Holdings的ARM指令集的核的处理器)本机执行。指令转换器1512用于将x86二进制代码1506转换成可由没有x86指令集核1514的处理器本机执行的代码。该转换代码不可能与备选指令集二进制代码1510相同,因为有此能力的指令转换器难以制造;然而,转换代码将完成一般操作并且由来自备选指令集的指令构成。从而,指令转换器1512代表软件、固件、硬件或其组合,其通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码 1506。
在描述和权利要求中,可使用术语“耦合”和“连接”连同它们的派生词。要理解这些术语不规定为是彼此的同义词。相反,在特定实施例中,“连接”可用于指示两个或以上的元件彼此直接物理或电接触。“耦合”可意指两个或以上的元件彼此直接物理或电接触。然而,“耦合”还可意指两个或以上的元件彼此不直接接触,但彼此仍共同操作或相互作用。例如,执行单元可通过一个或多个介入部件而与寄存器耦合。在图中,箭头用于示出连接和耦合。
在描述和权利要求中,可使用术语“逻辑”。如本文使用的,逻辑可包括硬件、固件、软件或其组合。逻辑的示例包括集成电路、专用集成电路、模拟电路、数字电路、编程逻辑设备、存储器设备(其包括指令)等。在一些实施例中,硬件逻辑可包括晶体管和/或门,潜在地连同其他电路部件。
可使用术语“和/或”。如本文使用的,术语“和/或”意指一个或另一个或两者(例如,A和/或B意指A或B或A和B两者)。
在上文的描述中,为了解释,阐述许多具体细节以便提供对本发明的实施例的全面理解。然而,本领域内技术人员将意识到一个或多个其他实施例可在没有这些具体细节中的一些的情况下实践。描述的特定实施例未提供成限制本发明而是通过示例实施例来说明它。本发明的范围不是由具体示例而仅仅由权利要求确定。在其他实例中,采用框图形式或未详细示出众所周知的电路、结构、设备和操作以避免混淆对本描述的理解。
在认为适当的地方,标号或标号的端部在图之中重复来指示对应或类似元件,其可以可选地具有相似或相同特性,除非另外规定或显而易见。在一些情况下,在描述多个部件的地方,它们可并入单个部件内。在其他情况下,在描述单个部件的地方,它可分成多个部件。
描述各种操作和方法。这些方法中的一些在流程图中采用相对基本的形式描述,但操作可可选地添加到方法和/或从方法移除。另外,尽管流程图示出根据示例实施例的操作的特定顺序,该特定顺序是示范性的。备选实施例可以可选地按不同顺序执行操作、使某些操作组合、使某些操作重叠等。
一些实施例包括制造物品(例如,计算机程序产品),其包括机器可读介质。介质可包括采用由机器可读形式提供(例如存储)信息的机构。机器可读介质可提供或具有存储在其上的一个或多个或一系列指令,其如果由机器执行和/或在由机器执行时促使机器执行和/ 或导致机器执行本文公开的一个或多个操作、方法或技术。在一些实施例中,机器可读介质可包括有形和/或非暂时性机器可读存储介质。例如,有形的非暂时性机器可读存储介质可包括软盘、光存储介质、光盘、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程 ROM(PROM)、可擦除且可编程ROM(EPROM)、电可擦除且可编程ROM (EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪速存储器、相变存储器或类似物。有形介质可包括一个或多个固体或有形的物理数据存储材料,例如半导体材料、相变材料、磁性材料等。数据存储介质未由暂时性传播信号组成。在一些实施例中,存储介质是非易失性的。适合的机器的示例包括但不限于服务器、台式机、便携式电脑、笔记本、上网本、平板、智能电话、蜂窝电话、移动互联网设备(MID)、媒体播放器、智能电视、上网机、网络元件(例如,路由器、交换机等)上网本、机顶盒、视频游戏控制器和具有一个或多个处理器的其他计算机系统或电子设备。
还应意识到在该整个说明书中对例如“一个实施例”、“实施例”、或“一个或多个实施例”的引用意指特定特征可包括在本发明的实践中。相似地,应意识到在描述中,为了使本公开通顺并且有助于理解各种发明性方面,各种特征有时在单个实施例、图或其描述中组合在一起。然而,公开的该方法不解释为反映本发明需要比在每个权利要求中专门列举的更多特征这一意向。相反,如下面的权利要求所反映的,发明性方面在于比单个公开实施例的所有特征要少。从而,伴随本详细描述的权利要求由此特别并入该详细描述,其中每个权利要求立足于它自身作为本发明的独立实施例。
示例实施例
下列示例关于另外的实施例。示例中的细节在一个或多个实施例中可在任何地方使用。
示例1是处理器,其包括能够存储打包数据的寄存器组。该处理器还包括执行单元,其与该寄存器组耦合。执行单元响应于指令采用至少两个不同方式访问寄存器组。该至少两个不同方式包括寄存器组代表多个N位寄存器的第一方式和寄存器组代表具有至少2N个位的单个寄存器并且其中该至少2N个位是至少256个位的第二方式。
示例2包括示例1的处理器,并且可选地,其中寄存器组采用第二方式代表具有4N个位的单个寄存器,并且其中执行单元也采用寄存器组代表多个2N位寄存器的第三方式来访问寄存器组。
示例3包括示例2的处理器,并且可选地,其中寄存器组采用第二方式代表具有至少 512个位的单个寄存器。
示例4包括示例1的处理器,并且可选地,其中执行单元也采用寄存器组代表多个N/2位寄存器的第三方式来访问寄存器组。
示例5包括示例1的处理器,并且可选地,其中寄存器组采用第一方式代表多个256位寄存器并且寄存器组采用第二方式代表具有512个位的单个寄存器。
示例6包括示例1的处理器,并且可选地,其中寄存器组采用第二方式代表具有至少 512个位的单个寄存器。
示例7包括示例1的处理器,并且可选地,其中寄存器组采用第一方式代表多个128位寄存器并且寄存器组采用第二方式代表具有256个位的单个寄存器。
示例8包括示例1-7中的任一个的处理器,并且可选地,其中执行单元要响应于指令,其具有操作码来指示执行单元对该指令访问寄存器组所采用的方式。
示例9包括示例1-7中的任一个的处理器,并且可选地,其中执行单元要响应于指令,其具有除操作码以外的字段来指示执行单元对该指令访问寄存器组所采用的方式。
示例10包括示例1-7中的任一个的处理器,并且可选地,其中处理器包括精简指令集计算(RISC)处理器,并且其中寄存器组是N/2位寄存器。
示例11包括示例1-7中的任一个的处理器,并且可选地,其中处理器包括精简指令集计算(RISC)处理器,并且其中寄存器组是N位寄存器。
示例12包括示例1-7中的任一个处理器,并且可选地,其中执行单元响应于指令,其具有一个或多个字段来规定寄存器组采用第二方式代表单个寄存器。
示例13是由处理器执行的方法,其包括采用寄存器组代表多个N位寄存器的第一方式访问该寄存器组以从多个N位寄存器中的每个检索对应的N位打包数据。方法还包括采用寄存器组代表具有至少2N个位的单个寄存器的第二方式访问寄存器组以从单个寄存器检索具有至少2N个位的对应打包数据,该至少2N个位是至少256个位。
示例14包括示例13的方法,并且可选地,其中采用第二方式访问包括访问代表具有4N个位的单个寄存器的寄存器组,并且进一步包括采用寄存器组代表多个2N位寄存器的第三方式来访问寄存器组。
示例15包括示例13的方法,并且可选地,其中采用第二方式访问包括访问代表具有至少512个位的单个寄存器的寄存器组。
示例16包括示例13的方法,并且可选地,其进一步包括采用寄存器组代表多个N/2位寄存器的第三方式来访问寄存器组。
示例17包括示例13的方法,并且可选地,其中采用第一方式访问包括访问代表多个256位寄存器的寄存器组,并且其中采用第二方式访问包括访问代表具有512个位的单个寄存器的寄存器组。
示例18包括示例13的方法,并且可选地,其中采用第一方式访问包括访问代表多个128位寄存器的寄存器组,并且其中采用第二方式访问包括访问代表具有256个位的单个寄存器的寄存器组。
示例19包括示例13-18中的任一个的方法,并且可选地,其中采用第二方式访问响应于指令,其具有操作码来指示要采用第二方式来访问寄存器组。
示例20包括示例13-18中的任一个的方法,并且可选地,其中采用第二方式访问响应于指令,其具有除操作码以外的字段来指示要采用第二方式来访问寄存器组。
示例21包括示例13-18中的任一个的方法,并且可选地,其中采用第二方式访问包括访问是N/2位寄存器的寄存器组。
示例22包括示例13-18中的任一个的方法,并且可选地,其中采用第二方式访问包括访问是N位寄存器的寄存器组。
示例23是处理指令的系统,其包括互连和与该互连耦合的处理器。该处理器包括寄存器组,和与该寄存器组耦合的执行单元。该执行单元响应于打包数据指令采用至少三个不同方式来访问寄存器组。该至少三个不同方式包括寄存器组代表存储打包数据的多个N位寄存器的第一方式。同样,寄存器组代表存储打包数据的具有至少2N个位的单个寄存器的第二方式。同样,寄存器组代表具有除N个位以外并且小于至少2N个位的宽度的多个寄存器的第三方式。系统还包括与互连耦合的动态随机存取存储器(DRAM)。
示例24包括示例23的系统,并且可选地,其中寄存器组采用第二方式代表具有至少256个位的单个寄存器。
示例25是制造物品,其包括存储指令的非暂时性机器可读存储介质,这些指令如果由机器执行将促使机器执行操作,其包括采用寄存器组代表多个N位寄存器的第一方式访问该寄存器组以从多个N位寄存器组中的每个检索对应N位打包数据。操作还包括采用寄存器组代表具有至少2N个位的单个寄存器的第二方式访问寄存器组以从单个寄存器检索具有至少2N个位的对应打包数据,该至少2N个位是至少256个位。操作还包括采用寄存器组代表多个寄存器的第三方式访问寄存器组,该多个寄存器每个具有与采用第一和第二方式不同数量的位。
示例26包括示例25的制造物品,并且可选地,其中机器可读存储介质进一步存储指令,其如果由机器执行将促使机器执行操作,这些操作包括采用寄存器组代表具有至少256个位的单个寄存器的第二方式来访问寄存器组。
示例27是处理器,其包括用于采用寄存器组代表多个N位寄存器的第一方式访问该寄存器组以从多个N位寄存器中的每个检索对应N位打包数据的部件。处理器还包括用于采用寄存器组代表具有至少2N个位的单个寄存器的第二方式来访问寄存器组以从单个寄存器检索具有至少2N个位的对应打包数据的部件,该至少2N个位是至少256个位。
示例28包括示例27的处理器,并且可选地,其中用于采用第二方式访问的部件包括访问代表具有4N个位的单个寄存器的寄存器组的部件,并且进一步包括用于采用寄存器组代表多个2N位寄存器的第三方式来访问寄存器组的部件。
示例29是存储指令的机器可读存储介质,这些指令如果由机器执行则促使机器执行示例13-22中的任一个的方法。
示例30是执行示例13-22中的任一个的方法的处理器。
示例31是处理器,其包括用于执行示例13-22中的任一个的方法的部件。
示例32是处理器,其包括集成电路和/或逻辑和/或单元和/或部件和/或模块,或其任何组合,用于执行示例13-22中的任一个的方法。
示例33是执行示例13-22中的任一个的方法的计算机系统。
示例34是执行大致如本文描述的一个或多个操作或方法的处理器。
示例35是处理器,其包括用于执行大致如本文描述的一个或多个操作或方法的部件。
Claims (34)
1.一种处理器,其包括:
寄存器组,能够存储打包数据;
执行单元,其与所述寄存器组耦合,所述执行单元要响应于指令采用至少两个不同方式访问所述寄存器组,所述至少两个不同方式包括
第一方式,其中所述寄存器组要代表多个N位寄存器;以及
第二方式,其中所述寄存器组要代表具有至少2N个位的单个寄存器,并且其中所述至少2N个位是至少256个位,
其中所述指令中的至少一个指令包括一个或多个字段,用于指示所述寄存器组中的哪些寄存器被组合而构成相对较大的寄存器。
2.如权利要求1所述的处理器,其中所述寄存器组采用所述第二方式代表具有4N个位的单个寄存器,并且其中所述执行单元还采用所述寄存器组代表多个2N位寄存器的第三方式来访问所述寄存器组。
3.如权利要求2所述的处理器,其中所述寄存器组采用所述第二方式代表具有至少512个位的单个寄存器。
4.如权利要求1所述的处理器,其中所述执行单元还采用所述寄存器组代表多个N/2位寄存器的第三方式来访问所述寄存器组。
5.如权利要求1所述的处理器,其中所述寄存器组采用所述第一方式代表多个256位寄存器并且所述寄存器组采用所述第二方式代表具有512个位的单个寄存器。
6.如权利要求1所述的处理器,其中所述寄存器组采用所述第二方式代表具有至少512个位的单个寄存器。
7.如权利要求1所述的处理器,其中所述寄存器组采用所述第一方式代表多个128位寄存器并且所述寄存器组采用所述第二方式代表具有256个位的单个寄存器。
8.如权利要求1-7中任一项所述的处理器,其中所述执行单元要响应于指令,其具有操作码来指示所述执行单元对该指令访问所述寄存器组的方式。
9.如权利要求1-7中任一项所述的处理器,其中所述执行单元要响应于指令,其具有除操作码以外的字段来指示所述执行单元对该指令访问所述寄存器组的方式。
10.如权利要求1-7中任一项所述的处理器,其中所述处理器包括精简指令集计算(RISC)处理器,并且其中所述寄存器组是N/2位寄存器。
11.如权利要求1-7中任一项所述的处理器,其中所述处理器包括精简指令集计算(RISC)处理器,并且其中所述寄存器组是N位寄存器。
12.如权利要求1-7中任一项所述的处理器,其中所述执行单元响应于指令,其具有一个或多个字段来规定所述寄存器组采用所述第二方式代表所述单个寄存器。
13.一种由处理器执行的方法,其包括:
采用寄存器组代表多个N位寄存器的第一方式访问所述寄存器组以从所述多个N位寄存器中的每个检索对应的N位打包数据;
采用所述寄存器组代表具有至少2N个位的单个寄存器的第二方式访问所述寄存器组以从所述单个寄存器检索具有至少2N个位的对应打包数据,所述至少2N个位是至少256个位,
其中至少一个指令包括一个或多个字段,用于指示所述寄存器组中的哪些寄存器被组合而构成相对较大的寄存器。
14.如权利要求13所述的方法,其中采用所述第二方式访问包括访问代表具有4N个位的单个寄存器的寄存器组,并且进一步包括采用所述寄存器组代表多个2N位寄存器的第三方式来访问所述寄存器组。
15.如权利要求13所述的方法,其中采用所述第二方式访问包括访问代表具有至少512个位的单个寄存器的寄存器组。
16.如权利要求13所述的方法,其进一步包括采用所述寄存器组代表多个N/2位寄存器的第三方式来访问所述寄存器组。
17.如权利要求13所述的方法,其中采用所述第一方式访问包括访问代表多个256位寄存器的寄存器组,并且其中采用所述第二方式访问包括访问代表具有512个位的单个寄存器的寄存器组。
18.如权利要求13所述的方法,其中采用所述第一方式访问包括访问代表多个128位寄存器的寄存器组,并且其中采用所述第二方式访问包括访问代表具有256个位的单个寄存器的寄存器组。
19.如权利要求13所述的方法,其中采用所述第二方式访问响应于指令,其具有操作码来指示要采用所述第二方式来访问所述寄存器组。
20.如权利要求13所述的方法,其中采用所述第二方式访问响应于指令,其具有除操作码以外的字段来指示要采用所述第二方式来访问所述寄存器组。
21.如权利要求13所述的方法,其中采用所述第二方式访问包括访问是N/2位寄存器的寄存器组。
22.一种处理指令的系统,其包括:
互连;
处理器,其与所述互连耦合,所述处理器包括:
寄存器组;
执行单元,其与所述寄存器组耦合,所述执行单元响应于打包数据指令采用至少三个不同方式来访问所述寄存器组,其中所述指令中的至少一个指令包括一个或多个字段,用于指示所述寄存器组中的哪些寄存器被组合而构成相对较大的寄存器,所述至少三个不同方式包括:
第一方式,其中所述寄存器组代表存储打包数据的多个N位寄存器;
第二方式,其中所述寄存器组代表存储打包数据的具有至少2N个位的单个寄存器;以及
第三方式,其中所述寄存器组代表具有除N个位以外并且小于至少2N个位的宽度的多个寄存器;以及
动态随机存取存储器(DRAM),其与所述互连耦合。
23.如权利要求22所述的系统,其中所述寄存器组采用所述第二方式代表具有至少256个位的单个寄存器。
24.一种机器可读存储介质,其存储指令,所述指令如果由机器执行则促使所述机器执行如权利要求13-21中任一项所述的方法。
25.一种处理器,其包括用于执行如权利要求13-21中任一项所述的方法的部件。
26.一种要由处理器使用的装置,其包括:
用于采用寄存器组代表多个N位寄存器的第一方式访问所述寄存器组以从所述多个N位寄存器中的每个检索对应的N位打包数据的部件;
用于采用所述寄存器组代表具有至少2N个位的单个寄存器的第二方式访问所述寄存器组以从所述单个寄存器检索具有至少2N个位的对应打包数据的部件,所述至少2N个位是至少256个位,
其中至少一个指令包括一个或多个字段,用于指示所述寄存器组中的哪些寄存器被组合而构成相对较大的寄存器。
27.如权利要求26所述的装置,其中采用所述第二方式访问包括访问代表具有4N个位的单个寄存器的寄存器组,并且进一步包括采用所述寄存器组代表多个2N位寄存器的第三方式来访问所述寄存器组。
28.如权利要求26所述的装置,其中采用所述第二方式访问包括访问代表具有至少512个位的单个寄存器的寄存器组。
29.如权利要求26所述的装置,其进一步包括用于采用所述寄存器组代表多个N/2位寄存器的第三方式来访问所述寄存器组的部件。
30.如权利要求26所述的装置,其中采用所述第一方式访问包括访问代表多个256位寄存器的寄存器组,并且其中采用所述第二方式访问包括访问代表具有512个位的单个寄存器的寄存器组。
31.如权利要求26所述的装置,其中采用所述第一方式访问包括访问代表多个128位寄存器的寄存器组,并且其中采用所述第二方式访问包括访问代表具有256个位的单个寄存器的寄存器组。
32.如权利要求26所述的装置,其中采用所述第二方式访问响应于指令,其具有操作码来指示要采用所述第二方式来访问所述寄存器组。
33.如权利要求26所述的装置,其中采用所述第二方式访问响应于指令,其具有除操作码以外的字段来指示要采用所述第二方式来访问所述寄存器组。
34.如权利要求26所述的装置,其中采用所述第二方式访问包括访问是N/2位寄存器的寄存器组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,047 US10228941B2 (en) | 2013-06-28 | 2013-06-28 | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US13/931047 | 2013-06-28 | ||
PCT/US2014/044389 WO2014210345A1 (en) | 2013-06-28 | 2014-06-26 | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105264489A CN105264489A (zh) | 2016-01-20 |
CN105264489B true CN105264489B (zh) | 2019-06-25 |
Family
ID=52116854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480030775.1A Active CN105264489B (zh) | 2013-06-28 | 2014-06-26 | 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10228941B2 (zh) |
EP (1) | EP3014419A4 (zh) |
KR (1) | KR101856833B1 (zh) |
CN (1) | CN105264489B (zh) |
BR (1) | BR112015030066A2 (zh) |
RU (1) | RU2639695C2 (zh) |
TW (1) | TWI599948B (zh) |
WO (1) | WO2014210345A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US10228941B2 (en) | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US10802866B2 (en) * | 2015-04-30 | 2020-10-13 | Microchip Technology Incorporated | Central processing unit with DSP engine and enhanced context switch capabilities |
US10503502B2 (en) * | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
US20170192789A1 (en) * | 2015-12-30 | 2017-07-06 | Rama Kishnan V. Malladi | Systems, Methods, and Apparatuses for Improving Vector Throughput |
US9977677B2 (en) * | 2016-04-07 | 2018-05-22 | International Business Machines Corporation | Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port |
KR102461090B1 (ko) | 2016-07-11 | 2022-11-02 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 |
CN108416431B (zh) * | 2018-01-19 | 2021-06-01 | 上海兆芯集成电路有限公司 | 神经网络微处理器与宏指令处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US6192467B1 (en) * | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
CN1595389A (zh) * | 1998-03-31 | 2005-03-16 | 英特尔公司 | 执行部分宽度压缩数据指令 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
CN101211255B (zh) * | 1994-12-02 | 2012-07-04 | 英特尔公司 | 对复合操作数进行压缩操作的处理器、设备和计算系统 |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
TW343318B (en) | 1996-09-23 | 1998-10-21 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
US5991531A (en) * | 1997-02-24 | 1999-11-23 | Samsung Electronics Co., Ltd. | Scalable width vector processor architecture for efficient emulation |
US6014684A (en) * | 1997-03-24 | 2000-01-11 | Intel Corporation | Method and apparatus for performing N bit by 2*N-1 bit signed multiplication |
US6260137B1 (en) * | 1997-09-12 | 2001-07-10 | Siemens Aktiengesellschaft | Data processing unit with digital signal processing capabilities |
US6014739A (en) * | 1997-10-27 | 2000-01-11 | Advanced Micro Devices, Inc. | Increasing general registers in X86 processors |
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6230257B1 (en) * | 1998-03-31 | 2001-05-08 | Intel Corporation | Method and apparatus for staggering execution of a single packed data instruction using the same circuit |
US6233671B1 (en) * | 1998-03-31 | 2001-05-15 | Intel Corporation | Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions |
US7853778B2 (en) * | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
US7249350B2 (en) * | 2002-09-30 | 2007-07-24 | Intel Corporation | Optimized translation of scalar type SIMD instructions into non-scalar SIMD instructions |
JP2004152049A (ja) * | 2002-10-31 | 2004-05-27 | Renesas Technology Corp | データ処理装置 |
US7668897B2 (en) * | 2003-06-16 | 2010-02-23 | Arm Limited | Result partitioning within SIMD data processing systems |
US7899855B2 (en) * | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
US7383427B2 (en) * | 2004-04-22 | 2008-06-03 | Sony Computer Entertainment Inc. | Multi-scalar extension for SIMD instruction set processors |
US7398347B1 (en) * | 2004-07-14 | 2008-07-08 | Altera Corporation | Methods and apparatus for dynamic instruction controlled reconfigurable register file |
EP1873627B1 (en) | 2006-06-28 | 2009-05-27 | STMicroelectronics S.r.l. | A clustered SIMD processor architecture |
US8417922B2 (en) * | 2006-08-02 | 2013-04-09 | Qualcomm Incorporated | Method and system to combine multiple register units within a microprocessor |
US7882325B2 (en) * | 2007-12-21 | 2011-02-01 | Intel Corporation | Method and apparatus for a double width load using a single width load port |
US8694758B2 (en) * | 2007-12-27 | 2014-04-08 | Intel Corporation | Mixing instructions with different register sizes |
US8103858B2 (en) | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US20100100692A1 (en) * | 2008-10-21 | 2010-04-22 | International Business Machines Corporation | Exploiting Register High-Words |
GB2478726B (en) * | 2010-03-15 | 2013-12-25 | Advanced Risc Mach Ltd | Mapping between registers used by multiple instruction sets |
GB2478731B (en) * | 2010-03-15 | 2013-08-21 | Advanced Risc Mach Ltd | Operand size control |
US20110320765A1 (en) | 2010-06-28 | 2011-12-29 | International Business Machines Corporation | Variable width vector instruction processor |
WO2013089791A1 (en) * | 2011-12-16 | 2013-06-20 | Intel Corporation | Instruction and logic to provide vector linear interpolation functionality |
EP2798466B1 (en) * | 2011-12-30 | 2017-12-13 | Intel Corporation | Floating point round-off amount determination processors, methods, systems, and instructions |
US10228941B2 (en) | 2013-06-28 | 2019-03-12 | Intel Corporation | Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register |
US10203955B2 (en) * | 2014-12-31 | 2019-02-12 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality |
-
2013
- 2013-06-28 US US13/931,047 patent/US10228941B2/en active Active
-
2014
- 2014-06-19 TW TW103121215A patent/TWI599948B/zh not_active IP Right Cessation
- 2014-06-26 RU RU2015151125A patent/RU2639695C2/ru not_active IP Right Cessation
- 2014-06-26 EP EP14818729.7A patent/EP3014419A4/en not_active Ceased
- 2014-06-26 BR BR112015030066A patent/BR112015030066A2/pt not_active Application Discontinuation
- 2014-06-26 WO PCT/US2014/044389 patent/WO2014210345A1/en active Application Filing
- 2014-06-26 CN CN201480030775.1A patent/CN105264489B/zh active Active
- 2014-06-26 KR KR1020157031786A patent/KR101856833B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US6192467B1 (en) * | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
CN1595389A (zh) * | 1998-03-31 | 2005-03-16 | 英特尔公司 | 执行部分宽度压缩数据指令 |
Also Published As
Publication number | Publication date |
---|---|
WO2014210345A1 (en) | 2014-12-31 |
RU2015151125A (ru) | 2017-06-01 |
TW201523437A (zh) | 2015-06-16 |
BR112015030066A2 (pt) | 2017-07-25 |
US20150006865A1 (en) | 2015-01-01 |
RU2639695C2 (ru) | 2017-12-21 |
TWI599948B (zh) | 2017-09-21 |
EP3014419A4 (en) | 2017-02-22 |
EP3014419A1 (en) | 2016-05-04 |
KR101856833B1 (ko) | 2018-05-10 |
CN105264489A (zh) | 2016-01-20 |
KR20150141994A (ko) | 2015-12-21 |
US10228941B2 (en) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105264489B (zh) | 访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统 | |
CN104077107B (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN105247477B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
CN104049953B (zh) | 用于合并操作掩码的未经掩码元素的装置、方法、系统和制品 | |
CN104049943B (zh) | 有限范围向量存储器访问指令、处理器、方法和系统 | |
CN105278917B (zh) | 无局部性提示的向量存储器访问处理器、方法、设备、制品和电子设备 | |
CN104484284B (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN104937539B (zh) | 用于提供推入缓冲器复制和存储功能的指令和逻辑 | |
CN103562856B (zh) | 用于数据元素的跨步图案聚集及数据元素的跨步图案分散的系统、装置及方法 | |
CN103793201B (zh) | 提供向量压缩和旋转功能的指令和逻辑 | |
CN104025020B (zh) | 用于执行掩码位压缩的系统、装置以及方法 | |
CN104603766B (zh) | 经加速的通道间的向量归约指令 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
CN107250993A (zh) | 向量缓存行写回处理器、方法、系统和指令 | |
CN104603746B (zh) | 由读和写掩码控制的向量移动指令 | |
CN107003844A (zh) | 用于矢量广播和xorand逻辑指令的装置和方法 | |
CN106575216A (zh) | 数据元素选择和合并处理器、方法、系统和指令 | |
CN106575218A (zh) | 持久性存储屏障处理器、方法、系统和指令 | |
CN107077334A (zh) | 从多维阵列预取多维元素块的硬件装置和方法 | |
CN104011663B (zh) | 掩码寄存器上的广播操作 | |
CN104049954B (zh) | 多数据元素与多数据元素比较处理器、方法、系统和指令 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN107667345A (zh) | 打包数据对齐加计算指令、处理器、方法和系统 | |
CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
CN104050415B (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 |