和z位是用于条件指令中的可选字段。 这些位用于条件指令以识别断言寄存器和条件。z位(位28)指示断言是否基于断言寄存器 中的零或非零。如果z = l,则对等于零测试。如果z = 0,则对非零测试。creg = 0和z = 0的情 况被视为总为真,以允许非条件指令执行。如表2中所示在指令中对creg字段和z字段编码。
[0065]表 2
[0066]注意,z位列中的"z"是指以上提到的零/非零比较选择,并且"X"为无关紧要状态。 该编码仅能将16个全局标量寄存器的子集指定为断言寄存器。该选择被作出用于保留指令 编码中的位。注意,非条件指令不具有这些可选位。对于非条件指令,这些位(28到31)被优 选地用作附加操作码位。然而,如果需要,则执行分组能够包含独特的32位条件码扩展槽, 其包含在相同执行分组中的指令的4位creg/z字段。表3示出该种条件码扩展槽的编码。
[0068] 表 3
[0069] 因此,条件码扩展槽指定以与creg/z位被分配到相同执行分组中的具体功能单元 的相同方式编码的位。
[0070] 特殊矢量断言指令使用指定的断言寄存器以控制矢量操作。在当前实施例中,所 有这些矢量断言指令操作字节(8位)数据。断言寄存器的每位控制snm操作是否在数据的 相应字节上执行。断言单元517的操作基于一个以上的矢量比较允许多种复合矢量SMD操 作。例如,能够使用两次比较作出范围确定。候选矢量与第一矢量参考比较,所述第一矢量 参考具有在第一数据寄存器内打包的范围的最小值。通过第二参考矢量作出候选矢量的第 二比较,所述第二参考矢量具有在第二数据寄存器内打包的范围的最大值。两个结果断言 寄存器的逻辑组合将允许矢量条件操作确定候选矢量的每个数据部分是在范围内还是范 围外。
[0071] dst字段将相应寄存器文件中的寄存器指定为指令结果的目的地。
[0072] src2字段将相应寄存器文件中的寄存器指定为第二源操作数。
[0073] srcl/cst字段具有若干意义,这取决于指令操作码字段(位2到12以及附加地非条 件指令的位28到31)。第一意义将相应寄存器文件的寄存器指定为第一操作数。第二意义为 立即常量。根据指令类型,这被视为被扩展为指定数据长度的无符号整数和零,或者被视为 被扩展到指定数据长度的有符号整数和符号。
[0074] 操作码字段(所有指令的位2到12以及附加地非条件指令的位28到31)指定指令的 类型并指派合适的指令选择。这包括功能单元和所执行的操作的指派。操作码的详细说明 超出该发明的范围,除下面详细描述的指令选择之外。
[0075] p位(位0)标记执行分组。p位确定指令是否与跟随的指令并行执行。从较低地址到 较高地址扫描P位。如果对于当前指令,P = l,那么下一个指令与当前指令并行执行。如果对 于当前指令,P = 〇,那么下一个指令在当前指令之后的周期中执行。并行执行的所有指令构 成执行分组。执行分组能够包含多达八个指令。执行分组中的每个指令必须使用不同的功 能单元。
[0076]相关单元512以及算术单元513和514通常以单指令多数据(SMD)模式操作。在该 SIMD模式中,相同的指令应用到来自两个操作数的分组数据。每个操作数保存设置在预定 槽中的多个数据元素。通过数据边界处的进位控制使能SIMD操作。该种进位控制使能不同 数据宽度上的操作。
[0077]图14示出进位控制。"与(AND)"门1401接收操作数宽算术逻辑单元内的位N(算术 单元513和514的256位,相关单元512的512位)的进位输出。"与"门1401还接收将在下面进 一步说明的进位控制信号。"与"门1401的输出被供应到操作数宽算术逻辑单元的位N+1的 进位输入。诸如"与"门1401的"与"门设置在可能的数据边界处的每对位之间。例如,对于8 位数据,该种"与"门将在位7和位8、位15和16、位23和24等等之间。每个该种"与"门接收相 应进位控制信号。如果数据尺寸具有最小值,那么每个进位控制信号为0,从而有效地阻碍 相邻位之间的进位传送。如果所选择的数据尺寸要求两个算术逻辑单元部分,则相应进位 控制信号为1。下面的表4示出诸如用于算术单元513和514中的256位宽操作数的实例的示 例进位控制信号,所述算术单元513和514可被划分为8位、16位、32位、64位或128位的部分。 由于不需要最高有效位的进位输出的控制,因此仅要求31个进位控制信号。
[0079]表 4
[0080]在本领域中,通常在为2(2N)的整数幂的数据尺寸上操作。然而,该进位控制技术 不限于2的整数幂。本领域技术人员将了解如何将该技术应用于其他数据尺寸和其他操作 数宽度。
[0081]图15示出该发明的主要部分。为简化说明,图15采用来自图1的标量单核示例的附 图标记。本领域技术人员将了解到可通过图1到图4中示出的示例中的任一个实践该发明。 具体地,能够通过图2和图4中示出的双处理器示例实践该发明,其中在双处理器之间共享 二级统一高速缓存。中央处理单元(CPU)llO耦合到一级指令高速缓存(Lll)lll。一级指令 高速缓存111进一步连接到对应于图1中示出的存储器控制器131的存储器管理单元(MMU) 131,并连接到L2高速缓存113。图15示出被包括作为L1I高速缓存111的部分的微表后备缓 冲器(yTLB) 1501。图15示出在CPU 110和L1I高速缓存111之间穿过的以下信号:虚拟地址 1511;获取分组计数1512;以及获取分组1513。图15示出LII高速缓存111和MMU 131之间的 双向数据流,包括:页面转换请求1521;以及页面转换条目。图15示出在L1I高速缓存111和 L2高速缓存113之间穿过的以下信号:物理地址1531;以及数据1532。
[0082]图16示出L1I高速缓存111的一些部分。在该示例中,CPU 110采用虚拟地址进行操 作。L1I高速缓存111也采用虚拟地址。L2高速缓存113采用物理地址。从CPU 110对L2高速缓 存113的访问必须经历从虚拟地址到物理地址的地址转换。注意,为清晰地说明,省略了 L1I 高速缓存111的一些部分。
[0083]以下示例说明本发明。假设顺序指令地址A0、A1、A2……属于相同页面。最初,将A0 的虚拟地址1511从CPU 110供应到L1I高速缓存111儿11高速缓存111确定其是否存储地址 A0处的指令。该发明处理其中存在L1I高速缓存未命中以及L1I高速缓存111不存储请求的 指令的情况。该请求被传递到L2高速缓存113以用于服务。该请求要求以上提到的地址转 换。
[0084]通常使用虚拟地址的最高有效位以及物理地址的相应最高有效位的表格执行地 址转换。在检测到正确的地址对后,所述转换用最高有效物理地址位替换最高有效虚拟地 址位。通常情况下,虚拟地址的最低有效位与物理地址的最低有效位相同。在该发明中,在 MMU 131中存储虚拟地址/物理地址转换表。存储在MMU 131中的页面转换表通常包括:虚拟 地址;相应物理地址;以及页面尺寸的指示;以及该存储器页面的访问许可。
[0085] L1I高速缓存111包括yTLB 1501,其以类似高速缓存的方式存储转换表条目中的 一些。当提供地址转换时,请求的虚拟地址1511与存储在yTLB 1501中的转换表条目比较。 如果虚拟地址1511匹配iiTLB 1501中的表条目(命中),则匹配表条目用于地址转换。多路复 用器1601经由到L2单元1603的请求物理地址将转换后的物理地址供应到L2高速缓存113。 注意,该请求以L1I高速缓存111中的高速缓存未命中为条件。L1I高速缓存命中上不要求物 理地址到L2高速缓存113的供应,这是因为该命中指示能够从L1I高速缓存111提供存储器 访问。作出高速缓存命中/未命中确定的标签RAM以及存储高速缓存数据的数据RAM未在图 16中示出,并且是常规的。在该种yTLB命中之后,在单个周期中执行地址转换。
[0086] 如果虚拟地址1511不匹配yTLB 1501中的任何表条目,那么必须从MMU 131获取转 换参数。可能需要几十或几百个周期来执行该获取,这取决于MMU 131中的页面转换和页表 遍历延迟。MMU 131寻找相应地址转换条目并将该条目1522返回到yTLB 1501 wTLB 1501存 储该最新获取的转换条目,通常逐出当前存储在yTLB 1501中的一个条目以腾出空间。