访问作为多个较小寄存器或组合的较大寄存器的寄存器组的处理器、方法和系统的制作方法_3

文档序号:9510124阅读:来源:国知局
0053]图7B是适合指令格式730B的第二实施例的框图。在该实施例中,指令格式具有操作代码或操作码732B。在一些实施例中,指令格式还具有专用字段738,用于指示在处理指令时要如何查看或访问一组寄存器。在该实施例中,字段738可与操作码分开或不同。在一些实施例中,字段可包括在寄存器组的两个不同视图中的任一个之间选择的单个位。备选地,字段可具有在寄存器的超过两个不同视图之间选择的两个或以上位。允许指令指示视图(例如,通过操作码或独立专用字段)可允许指令指示视图并且可有助于避免需要执行模式改变。备选地,软件(例如,操作系统、管理程序,等)可对于逻辑处理器改变操作模式来指示视图。根据特定类型的指令,指令格式还包括各种常规字段734B中的任一个。之前描述的常规字段是适合的。
[0054]图7C是适合指令格式730C的第三实施例的框图。如示出的,在一些实施例中,指令格式可具有操作码732C,其能操作成指示在处理指令时要如何查看或访问一组寄存器。备选地,指令格式可具有与图7B的第二指令格式中的一个相似的专用字段。指令格式还包括指示组中的哪些寄存器要组合来制成相对较大寄存器的一个或多个字段。这可在不同实施例中采用各种不同方式进行。在一个实施例中,可包括显式规定两个128位寄存器或四个64位寄存器的字段,这些寄存器要组合来制成单个256位寄存器。在其他实施例中,一个或多个字段可用于在使寄存器组合的不同预定方式之间选择。例如,一个方式将是使用相邻寄存器,另一个方式将是使用每隔一个寄存器,并且再另一个方式将是在不同寄存器组中使用序列寄存器。根据特定类型的指令,指令格式还包括各种常规字段734C中的任一个。之前描述的常规字段是适合的。
[0055]这些仅仅是适合指令格式的几个示例。要意识到额外字段可以可选地添加到这些指令格式中的任一个。此外,如提到的,内容可被隐式指示而不是显式规定。尽管上文的论述指字段,要意识到资源不必包括位序列而相反可以可选地由非邻接位形成。字段也可可选地重叠。另外,图示的字段的顺序/设置仅仅是说明性的并且在其他实施例中可移动或重新设置字段。
[0056]图7D是图示适合的组装数据格式的示例的框图。在图示中,盒上面的数字代表位的位置。128位组装字格式842是128位宽并且包括八个16位宽的字数据元素,其在图示中从最低到最高有效位位置地标记为WORDO至W0RD7。128位组装双字格式844是128个位并且包括四个32位双字数据元素,其从最低到最高有效位位置地标记为DWORDO至DW0RD3。128位组装四字格式846是128个位并且包括两个64位四字数据元素,其从最低到最高有效位位置地标记为QWORDO至QWORDI。
[0057]256位组装字格式848是256位宽并且包括十六个16位宽字数据元素,其在图示中从最低到最高有效位位置地标记为WORDO至W0RD15。256位组装双字格式850是256个位并且包括八个32位双字数据元素,其从最低到最高有效位地标记为DWORDO至DW0RD7。256位组装四字格式852是256个位并且包括四个64位四字数据元素,其从最低到最高有效位位置地标记为QWORDO至QW0RD3。
[0058]其他组装数据格式也是适合的。例如,其他适合的128位和256位组装数据格式包括组装8位字节格式、组装32位单精度浮点格式和组装64位双精度浮点格式。组装字节格式可具有是组装字格式的两倍多的数据元素并且每个数据元素可是一半宽。单和双精度浮点格式可分别看起来与图示的双字和四字格式相似,但数据元素内位的意思/解释可是不同的。此外,更宽或更窄的组装数据宽度也是适合的,例如64位组装数据、512位组装数据、1024位组装数据等。字节、字、双字、四字或其他格式中的任一个是适合的。一般,组装数据元素的数量等于组装数据的以位计的大小除以组装数据元素的以位计的大小。
[0059]对图3-6中的任一个描述的视图或寄存器属性的可选细节可可选地适用于图1的处理器和/或图2的方法。图7A-D的指令格式的可选细节可可选地适用于图1的处理器和/或图2的方法。此外,本文对于装置中的任一个描述的部件、特征和细节也可可选地在本文描述的方法中的任一个中使用,这些方法在实施例中可由这样的装置和/或用这样的装置执行。
[0060]
示范性核架构、处理器和计算机架构
处理器核可采用不同方式、对于不同目的以及在不同处理器中实现。例如,这样的核的实现可包括:1)针对通用计算的通用有序核;2)针对通用计算的高性能通用无序核;3)主要针对图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括针对通用计算的一个或多个通用有序核和/或针对通用计算的一个或多个通用无序核;以及2)协处理器,其包括主要针对图形和/或科学(吞吐量)的一个或多个专用核。这样的不同处理器导致不同的计算机系统架构,其可包括:1)来自CPU的独立芯片上的协处理器;2)处于与CPU相同封装中的独立晶片上的协处理器;3)与CPU相同的晶片上的协处理器(在该情况下,这样的协处理器有时称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或称为专用核);以及4)片上系统,其在相同晶片上可包括描述的CPU (有时称为应用核或应用处理器)、上文描述的协处理器和额外功能性。接着描述示范性核架构,后跟示范性处理器和计算机架构的描述。
[0061]
示范性核架构有序和无序核框图
图8A是图示根据本发明的实施例的示范性有序流水线和示范性寄存器重命名、无序发出/执行流水线两者的框图。图SB是图示根据本发明的实施例要在处理器中包括的有序架构核的示范性实施例和示范性寄存器重命名、无序发出/执行架构核两者的框图。图8A-B中的实线框图示有序流水线和有序核,而虚线框的可选添加图示寄存器重命名、无序发出/执行流水线和核。考虑到有序方面是无序方面的子集,将描述无序方面。
[0062]在图8A中,处理器流水线800包括提取段802、长度解码段804、解码段806、分配段808、重命名段810、调度(也称为调派或发出)段812、寄存器读取/存储器读取段814、执行段816、写回/存储器写入段818、异常处理段822和提交段824。
[0063]图SB示出处理器核890,其包括耦合于执行引擎单元850的前端单元830,并且这两者都耦合于存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或备选核类型。作为再另一个选项,核890可以是专用核,例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核或类似物。
[0064]前端单元830包括親合于指令高速缓存单元834的分支预测单元832,该指令高速缓存单元834耦合于指令转换后备缓冲器(TLB)836,其耦合于指令提取单元838,该指令提取单元838耦合于解码单元840。解码单元840 (或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,其从原始指令解码或另外反映原始指令或从原始指令得到。解码单元840可使用各种不同的机构实现。适合机构的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括微代码ROM或存储对于某些宏指令(例如,在解码单元840中或另外在前端单元830内)的微代码的其他介质。解码单元840親合于执行引擎单元850中的重命名/分配器单元852。
[0065]执行引擎单元850包括重命名/分配器单元852,其耦合于引退单元854和一组一个或多个调度器单元856。调度器单元856代表任何数量的不同调度器,其包括保留站、中央指令窗口等。调度器单元856耦合于物理寄存器文件单元858。物理寄存器文件单元858中的每个代表一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同数据类型,例如标量整数、标量浮点、组装整数、组装浮点、向量整数、向量浮点、状态(例如,是要执行的下一个指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器文件单元858与引退单元854重叠来说明可实现寄存器重命名和无序执行所采用的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等)。引退单元854和物理寄存器文件单元858耦合于执行集群860。执行集群860包括一组一个或多个执行单元862和一组一个或多个存储器访问单元864。执行单元862可对各种类型的数据(例如,标量浮点、组装整数、组装浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可包括专用于特定功能或功能组的许多执行单元,其他实施例可仅包括一个执行单元或多个执行单元,其全部执行所有功能。调度器单元856、物理寄存器单元858和执行集群860示出为可能是复数个,因为某些实施例对某些类型的数据/操作创建独立流水线(例如,标量整数流水线、标量浮点/组装整数/组装浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每个具有它们自己的调度器单元、物理寄存器文件单元和/或执行集群-并且在独立存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元864的某些实施例)。还应理解在使用独立流水线的地方,这些流水线中的一个或多个可以是无序发出/执行并且余下的是有序的。
[0066]存储器访问单元组864耦合于存储器单元870,其包括耦合于数据高速缓存单元874的数据TLB单元872,该数据高速缓存单元874耦合于2级(L2)高速缓存单元876。在一个示范性实施例中,存储器访问单元864可包括负载单元、存储地址单元和存储数据单元,其中的每个親合于存储器单元870中的数据TLB单元872。指令高速缓存单元834进一步耦合于存储器单元870中的2级(L2)高速缓存单元876。L2高速缓存单元876耦合于一个或多个其他级别的高速缓存并且最终耦合于主存储器。
[0067]通过示例,示范性寄存器重命名、无序发出/执行核架构可如下实现流水线800:O指令提取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。
[0068]核890可支持一个或多个指令集(例如,x86指令集(具有添加有较新版本的一些扩展);加利福尼亚州Sunnyvale市的MIPS Technologies的MIPS指令集;加利福尼亚州Sunnyvale市的ARM Holdings的ARM指令集(其具有可选的额外扩展,例如ΝΕ0Ν)),其包括本文描述的指令。在一个实施例中,核890包括支持组装数据指令集扩展(例如,AVXl、AVX2)的逻辑,由此允许由许多多媒体应用使用的操作使用组装数据来执行。
[0069]应理解核可支持多线程(执行两个或以上并行操作或线程集),并且可采用多种方式来这样做,其包括时间分片多线程、同时多线程(其中单个物理核对线程中的每个提供逻辑核,该物理核是同时多线程的)或其组合(例如,时间分片提取和解码以及之后的同时多线程,例如在Intel? Hyperthreading技术中)。
[0070]尽管在无序执行的上下文中描述寄存器重命名,应理解寄存器重命名可在有序架构中使用。尽管图示的处理器的实施例还包括独立指
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1