多寄存器存储器访问指令、处理器、方法和系统的制作方法_3

文档序号:9493648阅读:来源:国知局
10内。在 其它实施例中,操作可以是多寄存器写到存储器操作的实施例,且四个(或多达八个)64位 数据部分714可从四个(或多达八个)64位寄存器710写到或存储到存储器716的512位 线。在所示示例实施例中,使用存储器的512位线的最低位(lowestorder)的一半(即包 括最低位四个数据部分714-1到714-4),虽然这不是需要的。在另一实施例中,可替代地使 用最高位(highestorder)的一半或某个其它部分。
[0065] 存储器的512位线也可存储在高速缓存709的512位高速缓存线622中。在一些 实施例中,可在存储器和处理器(例如高速缓存)之间通过互连724交换数据。在一些实 施例中,互连724可根据时钟速率等具有512位、256位的位宽或某个其它位宽。在一些实 施例中,可在高速缓存和这组四个(或多达八个)64位寄存器之间通过互连734交换数据。 在一些实施例中,互连734可根据时钟速率等具有128位或256位(例如在只有四个寄存 器被使用的情况下)、或256位或512位(例如在多达八个寄存器被使用的情况下)的带宽 或位宽。本发明的范围不限于互连724或734的位宽。
[0066] 应认识到,仅仅有适当操作的几个例证性示例。设想其它示例,其中使用存储器的 更窄(例如256位)或更宽(例如1024位)线。而且,设想其它示例,其中使用其它尺寸 的数据部分和/或寄存器(例如32位寄存器)。
[0067] 在一些实施例中,同一组寄存器可作为更大数量的较小的寄存器或更少数量的较 大寄存器被处理器(例如存储器访问单元、执行单元等)考虑或访问。可在一个视图中作 为单独的更小寄存器被考虑或访问的相同的两个或多个寄存器可在其它视图中作为组合 的更大的单个寄存器被考虑或访问。例如在一些实施例中,相邻的一对寄存器可单独地被 看作两个N/2位寄存器或可被逻辑地组合或聚集在一起并被共同看作单个N位寄存器。可 在两种情形中涉及相同的物理寄存器和相同总数的物理寄存器位,但它们可以用不同的方 式被考虑和访问。这样的布置的一个潜在的优点是存储较大的操作数(例如紧缩数据操作 数)而不需要增加基础物理寄存器的宽度的能力。这可具有潜在的优点,例如避免寄存器 文件在管芯上占据的区域或覆盖区的增加、避免需要在上下文切换或功率模式转变时被换 入和换出寄存器的数据的数量的增加。
[0068] 图8是示出一组寄存器作为在第一视图840中的64位寄存器、在第二视图842中 的128位寄存器和在第三视图844中的256位寄存器被考虑或访问的示例实施例的方框 图。在第一视图840中,这组寄存器(例如物理寄存器)在逻辑上被考虑或访问作为:被标 记为X0-X3的四个64位紧缩数据寄存器。
[0069] 在第二视图842中,相同的一组寄存器(例如物理寄存器)在逻辑上被考虑或访 问作为:被标记为Y0-Y1的两个(即半数)128位寄存器。在第二视图842中,128位寄存 器Y0的最低位64位(即位63:0)映射到或对应于64位寄存器X0,而128位寄存器Y0的 最高位64位(即位127:64)映射到或对应于64位寄存器XI。类似地,128位寄存器Υ1的 最低位64位(即位63:0)映射到或对应于64位寄存器Χ2,而128位寄存器Υ1的最高位 64位(即位127:64)映射到或对应于64位寄存器Χ3。多个(在这种情况下是二个)较小 的(在这种情况下是64位)寄存器在逻辑上组合或聚集以形成单个较大的(在这种情况 下是128位)寄存器。
[0070]在第三视图844中,相同的一组寄存器(例如物理寄存器)在逻辑上被考虑或 访问作为:被标记为Ζ0的单个256位寄存器。在第三视图844中,256位寄存器Ζ0的最 低位64位(即位63:0)映射到或对应于64位寄存器Χ0, 256位寄存器Ζ0的最低中间位 (intermediateorder) 64位(即位127:64)映射到或对应于64位寄存器XI,256位寄存器 Z0的最高中间位64位(即位191:128)映射到或对应于64位寄存器X2,且256位寄存器 Z0的最高位64位(即位255:192)映射到或对应于64位寄存器X3。在第三视图844中, 256位寄存器Z0的最低位128位(即位127:0)映射到或对应于128位寄存器Y0,而256 位寄存器Z0的最高位128位(即位255:128)映射到或对应于128位寄存器Y1。
[0071] 在各种实施例中,用于实现视图的实际物理寄存器可以是64位寄存器、32位寄存 器或128位寄存器,虽然这不是需要的。在所示实施例中,使用相邻或连续的寄存器,虽然 这不是需要的。在其它实施例中,可组合非相邻寄存器(例如在不同的库(bank)中的非相 邻寄存器、交替的寄存器等)。在所示实施例中,支持三个不同的视图,虽然在其它实施例中 可支持更少(例如两个)或更多(例如四个或更多个)不同的视图。
[0072] 此外,在其它实施例中,视图可使用不同数量的位,例如在一些实施例中,可以有 一个视图,其中一组寄存器可在逻辑上被考虑或访问作为:在一个视图中的单个512位寄 存器和在另一视图中的多个较小的寄存器(例如两个256位寄存器、四个128位寄存器、八 个64位寄存器等)。而且,在另一实施例中,可以有一个视图,其中一组寄存器可在逻辑上 被考虑或访问作为:在一个视图中的单个1024位寄存器和在另一视图中的多个较小的寄 存器(例如两个512位寄存器和/或四个256位寄存器和/或八个128位寄存器和/或 十六个64位寄存器等)。
[0073] 图9A是多寄存器存储器访问指令的适当指令格式的第一实施例的方框图。指令 格式具有操作代码或操作码950A。操作码可代表可操作来识别待执行的指令和/或操作 (例如多寄存器从存储器装入操作、多寄存器存储到存储器操作、或其它多寄存器存储器访 问操作)的多个位或一个或多个字段。第一指令格式也包括存储器单元说明符925A以指 定存储器单元。存储器单元说明符可代表多个位或一个或多个字段。指定的存储器单元可 代表在从存储器装入指令的情况下的源,或在写到存储器指令的情况下的目的地。作为示 例,说明符可用于指定待装入的数据的起始位置(例如数据的第一字节)。第一指令格式还 包括可选寄存器说明符954A。寄存器说明符可指定寄存器。寄存器说明符可代表多个位或 一个或多个字段。指定的寄存器可代表在从存储器装入指令的情况下的目的地寄存器,或 在写到存储器指令的情况下的源寄存器。可选地,可以可选地省略寄存器说明符(例如寄 存器可由指令隐含地指示而不是被明确地指定)。在一些实施例中,可基于明确指定或隐含 地指定的寄存器来指示一个或多个其它寄存器。例如,一个或多个预定的寄存器可被隐含 地指示或隐含地与明确指定或隐含地指定的寄存器相关联。例如,一个或多个相邻的、顺序 的、或连续的寄存器可与寄存器相关联。作为另一示例,每一个其它寄存器可与寄存器相关 联。作为又一示例,在不同的寄存器库中的预定顺序寄存器可与寄存器相关联。指令可隐 含地指示寄存器的这样的实施例的一个特定示例是其中装入或存储操作涉及在架构中的 所有在架构上可见的寄存器。可选地,给定寄存器可专用于多个寄存器装入、存储、或其它 操作,且因此可以是隐含的。
[0074]图9B是多寄存器存储器访问指令的适当指令格式的第二实施例的方框图。第二 指令格式具有操作代码或操作码950B、存储器单元说明符952B和寄存器说明符954B。这 些中的每一个可以如前所述。第二指令格式也包括可选的寄存器数量说明符956以指定在 存储器访问操作(例如被用作:在写到存储器操作的情况下的源,或在从存储器装入操作 的情况下的目的地)中涉及的寄存器的数量。作为示例,寄存器数量说明符可用于指定或 指示两个寄存器、三个寄存器、四个寄存器或某个其它数量的寄存器。在其它实施例中,不 指定寄存器的数量,也可能指定与存储器操作相关联的位的数量(例如作为给定寄存器大 小的倍数或位的数量)。这个字段是可选的且不是需要的。在另一实施例中,寄存器的数量 可以是隐含的(例如对寄存器说明符954B隐含、对操作码950B隐含等)。
[0075] 图9C是多寄存器存储器访问指令的适当指令格式的第三实施例的方框图。第三 指令格式具有操作代码或操作码950C和存储器单元说明符952C。这些中的每一个可以如 前所述。第三指令格式也包括多个可选的寄存器说明符958。在所示实施例中,示出四个寄 存器说明符958-1到958-4,虽然更少(例如两个、三个)或多于四个可以可选地被包括。 这些说明符中的每一个可代表多个位或一个或多个字段。这些多个寄存器说明符可允许: 在存储器访问操作中涉及被组合的寄存器的明确说明。在一些情况下,这个可选的特征可 用于优化或至少提高代码的性能、避免或至少减少寄存器到寄存器操作的数量,以四处移 动数据等。这些多个寄存器说明符是可选的且不是需要的。
[0076] 这些仅仅是适当的指令格式的几个示例。应认识到,额外的字段可以可选地被添 加到这些指令格式中的任一个。在其它实施例中,某些明确指定的字段可相反可选地对指 令是隐含的。应认识到,说明符或字段不需要包括位的连续序列,但可以相反可选地由非连 续位形成。说明符或字段可以可选地重叠。此外,说明符或字段的所示顺序/布置仅仅是 例证性的。其它实施例可移动或重新布置字段。
[0077] 示例件核心架构、处理器和计筧机架构
[0078] 可以用不同的方式、为了不同的目的和在不同的处理器中实现处理器核心。例如, 这样的核心的实现可包括:1)为通用计算而设计的通用有序(in-order)核心;2)为通用 计算而设计的高性能通用无序(out-of-order)核心;3)主要为图形和/或科学(吞吐量) 计算而设计的专用核心。不同处理器的实现可包括:1)包括为通用计算而设计的一个或多 个通用有序核心和/或为通用计算而设计的一个或多个通用无序核心的CPU;以及2)包括 主要为图形和/或科学(吞吐量)而设计的一个或多个专用核心的协处理器。这样的不 同处理器导致不同的计算机系统架构,其可包括:1)在与CPU分离的芯片上的协处理器; 2)在与CPU相同的封装中的单独管芯上的协处理器;3)在与CPU相同的管芯上的协处理 器(在这种情况下,这样的协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐 量)逻辑或作为专用核心);以及4)可在同一管芯上包括所述CPU(有时被称为应用核心或 应用处理器)、上面描述的协处理器和额外的功能的片上系统。示例核心架构被接着描述, 后面是示例性处理器和计算机架构的描述。
[0079] 示例性核心架构
[0080] 有序和无序核心方框图
[0081] 图10A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名 无序发布/执行流水线的方框图。图10B是示出根据本发明的实施例的被包括在处理器中 的有序架构核心和示例性寄存器重命名无序发布/执行架构核心的示例性实施例的方框 图。在图10A-B中的实线框示出有序流水线和有序核心,而虚线框的可选添加示出寄存器 重命名无序发布/执行流水线和核心。假定有序方面是无序方面的子集,将描述无序方面。
[0082] 在图10A中,处理器流水线1000包括取出级1002、长度解码级1004、解码级1006、 分配级1008、重命名级1010、调度(也被称为分派或发布)级1012、寄存器读取/存储器读 取级1014、执行级1016、写回/存储器写入级1018、异常处理级1022和提交级1024。
[0083] 图10B示出包括耦合到执行引擎单元1050的前端单元1030的处理器核心1090, 且两者都耦合到存储器单元1070。核心1090可以是精简指令集计算(RISC)核心、复杂指 令集计算(CISC)核心、超长指令字(VLIW)核心、或混合或可选的核心类型。作为又一选择, 核心1090可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形 处理单元(GPGPU)核心、图形核心等。
[0084] 前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,指令高 速缓存单元1034耦合到指令翻译旁视缓冲器(TLB) 1036,指令翻译旁视缓冲器(TLB) 1036 親合到指令取出单元1038,指令取出单元1038親合到解码单元1040。解码单元1040 (或 解码器)可对指令解码,并产生一个或多个微操作、微代码输入点、微指令、其它指令或从 原始指令被解码或反映原始指令或从原始指令得到的其它控制信号作为输出。可使用各种 不同的机制来实现解码单元1040。适当机制的示例包括但不限于查找表、硬件实现、可编 程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心1090包括微代码 ROM或存储某些宏指令的微代码(例如在解码单元1040中或在前端单元1030内)的其它 介质。解码单元1040耦合到在执行引擎单元1050中的重命名/分配器单元1052。
[0085] 执行引擎单元1050包括耦合到引退单元1054的重命名/分配器单元1052和一组 一个或多个调度器单元1056。调度器单元1056代表任何数量的不同调度器,包括预留站、 中央指令窗口等。调度器单元1056耦合到物理寄存器文件单元1058。每一个物理寄存器 文件单元1058代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或 多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点、 状态(例如指令指针,其为待执行的下一指令的地址)等。在一个实施例中,物理寄存器文 件单元1058包括矢量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单 元可提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。物理寄存器文件单元1058由引 退单元1054重叠以示出寄存器重命名和无序执行可被实现(例如使用记录器缓冲器和引 退寄存器文件;使用未来的文件、历史缓冲器和引退寄存器文件;使用寄存器地图和一池 寄存器;等等)的各种方式。引退单元1054和物理寄存器文件单元1058耦合到执行群集 1060。执行群集1060包括一组一个或多个执行单元1062和一组一个或多个存储器访问单 元1064。执行单元1062可对各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、矢量整 数、矢量浮点)执行各种操作(例如移位、加法、减法、乘法)。虽然一些实施例可包括专用 于特定的功能或功能组的多个执行单元,其它实施例可包括仅仅一个执行单元或都执行所 有功能的多个执行单元。调度器单元1056、物理寄存器文件单元1058和执行群集1060被 示为可能多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如标量整 数流水线、标量浮点/
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1