首页> 中国专利> 用以在扩充寄存器模式下存取扩充寄存器集的中央处理单元及其方法

用以在扩充寄存器模式下存取扩充寄存器集的中央处理单元及其方法

摘要

一包括有一寄存器档案及一与该寄存器档案连接的执行核心的中央处理单元。该寄存器档案包括一标准寄存器集及一扩充寄存器集。该标准寄存器集包括多个标准寄存器,且该扩充寄存器集则包括多个扩充寄存器。该执行核心用以提取并执行指令并接收该中央处理单元操作模式的指示讯号。当该指示讯号指示该中央处理单元操作于一扩充寄存器模式下时,该执行核心通过存取至少一之扩充寄存器以响应一指令,该指令包括一前置部份,其中含有用以存取该至少一之扩充寄存器讯息。

著录项

  • 公开/公告号CN1446332A

    专利类型发明专利

  • 公开/公告日2003-10-01

    原文格式PDF

  • 申请/专利权人 先进微装置公司;

    申请/专利号CN01813910.8

  • 发明设计人 D·S·克理斯特尔;

    申请日2001-08-07

  • 分类号G06F9/318;G06F9/30;

  • 代理机构11245 北京纪凯知识产权代理有限公司;

  • 代理人戈泊;程伟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 14:57:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-28

    未缴年费专利权终止 IPC(主分类):G06F9/318 授权公告日:20060222 终止日期:20170807 申请日:20010807

    专利权的终止

  • 2010-08-11

    专利权的转移 IPC(主分类):G06F9/318 变更前: 变更后: 登记生效日:20100702 申请日:20010807

    专利申请权、专利权的转移

  • 2006-02-22

    授权

    授权

  • 2003-12-17

    实质审查的生效

    实质审查的生效

  • 2003-10-01

    公开

    公开

说明书

技术领域

本发明涉及微处理器,尤其涉及在现有的微处理器架构下,扩充寄存器地址空间的机制。

背景技术

多数微处理器制造商持续的开发用以执行X86指令集的产品,用以维持大量在80X86(如8086/8、80286、80386及80486等)时代所开发出的软件的兼容性。然而维持软件的兼容性却也限制新产品的架构,必须被迫妥协于这些旧软件。为保留旧软件的功能,处理器的硬件必须时常作简单的修改或扩充以增强其功能及执行能力。

该X86指令集相对的复杂,而且,其特征在于具有多数可变的位组长度指令。如图1所示的现有X86指令10的格式。在X86指令10,多个可选择前置字节12先于1~2个在作业码(operation code;opcode)字段14中的作业码字节。一可选择寻址模式(Mod R/M)字节16紧接于该作业码字节字段14。一可选择比例索引基址(scale-index-base;SIB)字节18紧接于该可选择寻址模式字节16。一可选择位移字段20紧接于该可选择比例索引基址字节18。一可选择立即数据域位22紧接于该可选择位移字段20。该可选择位移字段20包括一用以计算地址的常数,且该可选择立即数据域位22包括一用以作为操作数的常数。

该作业码字段14中的1~2个作业码字节定义该X86指令10的基本作业。该基本作业通常包括至少一操作数。由于该X86架构并不支持内存对内存的传送,故至少一个操作数必须作为一寄存器(即寄存器操作数)。一作业码字节组至少三个有效位需用以作为寄存器操作数。该最精简的X86指令仅具有一个位组长度且包含一单一作业码字节。须特别说明的是,当该80386及80486均已将X86指令长度增加至15字节时,该80286仍将X86指令的最大长度设定为10个字节。

该X86的指令的操作可以通过该前置字节12加以设定。举例而言,一前置字节12可以变更该X86指令的地址或操作数大小,置换该内存寻址内定区段,或指示一处理器执行该X86指令,用以在一定时间内重复串作业。须注意的是,一指令操作数的大小受操作数的位数或数个位的操作数的宽度(width)所影响。

该可选择寻址模式字节16指定所使用的寄存器及内存寻址模式。图2是用以显示该寻址模式字节16的字段。如图2所示,寻址模式字节16分为三个字段:一模式(MOD)字段,一寄存器/作业码(REG/OP)字段及一寄存器/内存(R/M)字段。该模式字段的内容用以判断该寄存器/内存字段及该位移字段20应如何被解释。该寄存器/作业码字段用以指定一寄存器操作数或保持附加的作业码位其中任一者。该寄存器/内存字段则用以依据该模式位栏的内容指定一寄存器操作数或一内存操作数。

该可选择比例索引基址字节18是通过比例与索引因素作为32位基址相对寻址之用。图3是用以显示该比例索引基址字节18的字段。如图3所示,该比例索引基址字节18分为三个字段:一比例字段、一索引字段及一基址字段。该基址字段指出哪一个寄存器包括有一基址值以作为地址计算之用。该索引字段指出哪一个寄存器包括有一索引值以作为地址计算之用,而且,在伴随着任何位移而将其加至基址值上之前,将该比例字段指定为二次方,也就是说该索引值将被乘上的数目。

参照一X86架构下的特定寄存器在一作业码字节、该可选择寻址模式字节16的寄存器/作业码字段、该可选择寻址模式字节16的寄存器/内存字段或该比例索引基址字节18的基址与索引字段的最少三个有效位中显现出来。因此共有四种关于一X86指令中的寄存器的可能。如前所述,该作业码字节中的至少三个有效位得设定一寄存器操作数。该可选择寻址模式字节16的寄存器/作业码字段与寄存器/内存字段可以设定来源与目的寄存器。该比例索引基址字节18的基址与索引字段可以用以设定包括有在存取内存时用于计算操作数地址的基址值与索引值的寄存器。须特别说明的是,在特定X86指令中仅会显现前述四种寄存器中的其中三种。

该X86架构有一显著的缺点:其只有相对较少数量的通用寄存器。该X86架构目前定义有八个通用的寄存器,即EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等寄存器。相较之下,现有的精简指令集计算(reducedinstruction set computing;RISC)处理器则具有至少32个通用的寄存器。一较大的寄存器集容许储存更多操作数至该相对较快速存取的寄存器档案中,而非储存于相对较慢速存取的内存中。现今的程序编译器能够获得大量寄存器所带来的优点,以显现更大量指令层级平行性一增加超纯量的执行效率。除该X86寄存器有限的数量外,通过程序编译器使用X86寄存器往往相当复杂,因为在不同指令中,大部份均有隐藏地使用这些寄存器。

发明内容

一包括有一寄存器档案与一与该寄存器档案连接的执行核心的中央处理单元,以及包括该中央处理单元的计算机系统。该寄存器档案包括一标准寄存器集及一扩充寄存器集。该标准寄存器集包括多个标准寄存器,且该扩充寄存器集则包括多个扩充寄存器。该执行核心用以提取并执行指令,并接收该中央处理单元操作模式的指示讯号。当该指示讯号指示该中央处理单元操作于一扩充寄存器模式下时,该执行核心通过存取至少一个扩充寄存器以响应一指令,该指令包括一前置部份,其中含有用以存取该至少一个扩充寄存器讯息。

该标准寄存器通过由该指令所组成中央处理器架构被定义为一个通用寄存器。举例而言,该标准寄存器通过86架构被定义为一通用寄存器,且该指令可以为一X86架构的指令集。该标准寄存器数量可以少于或等于通过该中央处理单元所定义的通用寄存器数量,且该扩充寄存器数量可以大于通过该中央处理单元所定义的通用寄存器数量。在此情况下,该指令所缺少的该前置部份可以包括寄存器识别讯息,以充分识别从该多数标准寄存器中所选择的标准寄存器。然而,当该扩充寄存器数量超过通过该中央处理单元所定义的通用寄存器数量时,该寄存器识别讯息可能无法充分的识别从该多数标准寄存器中所选择的扩充寄存器。该指令的前置部份包括附加寄存器识别讯息,用以识别从该多数标准寄存器中所选择的一个扩充寄存器。包括有该前置部份的指令集的编码,可以因而识别该通过执行核心所存取的至少一个扩充寄存器。    

在一个实施例中,该标准寄存器集包括八个通过该X86架构所定义的32位通用寄存器。该八个32位通用寄存器可以包括如EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等寄存器。该扩充寄存器集可以包括该标准寄存器的八个寄存器及未被该X86架构所定义的附加寄存器。该执行核心得设定为用以提取与执行可变长度的X86指令。

该前置部份可以包括一扩充寄存器前置字节,且该扩充寄存器前置字节可以包括一扩充寄存器键字段。而该扩充寄存器键字段的内容用以指示该扩充寄存器前置字节是否包括用以存取该至少一个扩充寄存器所需的讯息。举例而言,该扩充寄存器前置字节,仅在该扩充寄存器键字段包含有一预设扩充寄存器键值(如该二进制值为0100)时,可以包括用以存取该至少一个扩充寄存器所需的讯息。

该中央处理单元可以包括一个控制寄存器,用以储存讯息,以指示该扩充寄存器模式是否为总体激活;一旗标寄存器,用以储存讯息,以指示该扩充寄存器模式是否能通过现行程序设为激活;以及生成单元,用以生成讯号,以指示该中央处理单元的执行模式。当该扩充寄存器模式通过现行程序总体地被设为激活时,该讯号可指示该中央处理单元在该扩充寄存器模式下进行作业。

该标准寄存器集可以包括多个的通过一中央处理器架构(如X86架构)定义的通用寄存器,且该扩充寄存器集的扩充寄存器宽度大于该标准寄存器的宽度。寄存器的宽度是该寄存器中的位数的总合。该执行核心可以在:(1)该讯号指示该中央处理单元在一扩充寄存器模式下作业,(2)该指令包括一含有存取该至少一个扩充寄存器所需的讯息的前置部份,以及(3)该前置部份包括一该至少一个扩充寄存器的全部内容被存取的指示等情况下,通过存取该至少一个扩充寄存器以响应该指令。如此,指令操作数大小可以在该中央处理单元在一扩充寄存器模式下作业时选择性的被增加。该标准寄存器集可以为该扩充寄存器集的一子集,且该标准寄存器可以形成该扩充寄存器的较低有序(如最少有效)部份。

除上述扩充寄存器键字段外,该扩充寄存器前置字节可以包括一操作数大小置换位。该操作数大小置换位值可以做为该至少一个扩充寄存器的全部内容是否被存取的指示。须特别说明的是,一指令操作数大小乃与该操作数的位数量或该多个位中的操作数宽度有关。

附图说明

图1为一现有X86指令10的格式,其中该X86架构包括一可选择寻址模式(Mod R/M)字节及一可选择比例索引基址(scale-index-base;SIB)字节;

图2用以显示图1中的该x86架构的可选择寻址模式字节字段;

图3用以显示图1中的该x86架构的可选择比例索引基址字节字段;

图4用以显示一包含有中央处理单元的计算机系统的一实施例;

图5用以显示图4的该中央处理单元的一实施例,其中该中央处理单元包括一连接至一寄存器档案的执行核心;

图6用以显示图5的中央处理单元的一「32位兼容」模式与该中央处理单元的一「32位寄存器扩充(REX32)」模式间的变迁;

图7用以显示图5的该执行核心与该寄存器档案的一实施例,其中该执行核心包括一连接至一执行单元与该寄存器档案的译码单元,且其中该寄存器档案包括一标准寄存器集与一扩充寄存器集,该译码单元用以显示接收一代表性指令,而该指令则可以包括一可选择前置字节;

图8用以显示图7的该指令的可选择前置部份的一实施例,其中该前置部份为一包括有一扩充寄存器键字段的扩充寄存器前置字节,一64位操作数大小的置换位以及三个字段扩充位;

图9用以显示图7的该寄存器档案的一实施例,其中该标准寄存器集为该扩充寄存器集的一个子集;

图10用以显示图7的该寄存器档案的另一实施例,其中该寄存器档案包括该标准寄存器集与该扩充寄存器集,且还包括一标准多媒体扩充(multimedia extensions;MMX)寄存器集、一扩充多媒体扩充寄存器集、一标准数据流单指令多数据(single-instruction-multiple-data;SIMD)扩充或一数据流单指令多数据扩充(Streaming SIMDExtensions;SSE)寄存器集,以及一扩充数据流单指令多数据扩充寄存器集;以及

图11用以显示内存中数据结构用以于上下文交换时储存寄存器内容的一个实施例,其中该数据结构用以储存该标准多媒体扩充寄存器集、该扩充多媒体扩充寄存器集、该标准数据流单指令多数据扩充寄存器集、该扩充数据流单指令多数据扩充寄存器集的内容,且其中一先前数据结构中未使用的部分则用以储存该扩充寄存器集的内容。

须特别说明的是,本发明容许多种态样的设定与形式存在,以下的实施例乃配合图式作更详细的揭露,然并非用以限定本发明的范围,在不超脱本发明在权利要求书中所界定的精神与范围下所作的等效变更均为本发明所涵盖。

10  X86指令

12  前置字节

14  作业码字段

16  寻址模式字节

18  比例索引基址字节

20  位移字段

22  立即数据域位

30  计算机系统

32  中央处理单元

34  北桥电路

36  内存

38  外围装置组件互连总线

40  南侨电路

42  工业标准架构总线

44A 第一装置

44B 第二装置

50  指令快取单元

52  执行核心

54  数据快取单元56  接口单元58  译码控制单元60  寄存器档案62  该控制寄存器63  32位寄存器扩充位64  旗标寄存器66  寄存器扩充位70  变迁图72  32位兼容模式74  32位寄存器扩充模式76  译码单元78  执行单元80  指令82  前置部份84  标准寄存器集86  扩充寄存器集90  扩充寄存器前置字节92  扩充寄存器键字段94  64位操作数大小置换位96  字段扩充位98  字段扩充位100 字段扩充位110 标准多媒体扩充寄存器集112 扩充寄存器集114 标准数据流单指令多数据扩充寄存器集116 扩充寄存器集120 数据结构122 已使用部分124 预先未使用部分126 标准多媒体扩充寄存器集数据部分130 标准数据流单指令多数据扩充寄存器集数据部分

134  储存区域

135  储存区域

136  储存区域

具体实施方式

如图4所示,其用以显示一包含有中央处理单元32、一北桥电路34、一内存36、一外围装置组件互连(peripheral componentinterconnect;PCI)总线38、一南侨电路40以及一工业标准架构(industry standard architecture;ISA)总线42的计算机系统30的实施例。该中央处理单元32执行储存于一内存36中的指令(如X86指令)。该北桥电路34形成一介于该中央处理单元32、该内存36与该外围装置组件互连总线38间的接口。该内存36则可以包括有半导体只读记忆单元及/或半导体随机存取内存。该南侨电路40则形成一介于该外围装置组件互连总线38与该工业标准架构总线42间的接口。

该计算机系统30还包括一连接至该外围装置组件互连总线38的第一装置44A,以及一连接至该工业标准架构总线42的一第二装置44B。该装置44A例如为一调制解调器、一卡或一网络配接卡等的输出入装置。如图4所示,该装置44A连接至该工业标准架构总线42而非该外围装置组件互连总线38。该装置44B例如为一硬盘、一软盘机或一只读光驱等外围装置。如图4所示,其连接至该外围装置组件互连总线38而非该工业标准架构总线42。

该中央处理单元32通过该北桥电路34从该内存36中提取(或传送)并执行该指令。储存于该内存36的数据依据该指令作业。该指令与数据常驻于该内存36的地址中,其中每一地址均为一值,用以识别该内存36中的一或多个储存区块。该指令与数据的地址在提供至该北桥电路34之前,通过该中央处理单元32加以转换。在此情况下,该中央处理单元32包括地址转换硬件,且该内存通过该中央处理单元32以转换虚拟地址置实体地址。

如以下所揭露者,该中央处理单元32包括一设定用以储存曾经被该中央处理单元32存取过的指令与数据的内部高速缓存(如内部快取单元等)。该计算机系统30还可以包括一设定用以储存曾经被该中央处理单元32存取过的指令与数据的外部快取单元。我们知道,该储存于内存36的讯息可以储存于该中央处理单元32的内部快取单元或该计算机系统30的外部快取单元。

如图5所示,其中显示图4的该中央处理单元32的一个实施例。该中央处理单元32还可以有其它的实施例。如图5所示,该中央处理单元32包括一指令快取单元50、一执行核心52、一数据快取单元54、一接口单元56、一译码控制单元58及一寄存器档案60。该指令快取单元50连接至该执行核心52、该译码控制单元58及该接口单元56。该执行核心52连接至该译码控制单元58、该寄存器档案60及该数据快取单元54。该数据快取单元54连接至该执行核心52、该译码控制单元58及该接口单元56。该接口单元56连接至该指令快取单元50、该数据快取单元54、该译码控制单元58及该图4中所示的北桥电路34。

该译码控制单元58包括一控制寄存器62。该译码控制单元58还包括一用以报告与控制该中央处理单元32状态的旗标寄存器64。该旗标寄存器64可以为一X86旗标寄存器。现今的X86处理单元均包括一32位扩充旗标或扩充旗标(EFLA6S)寄存器。现今的X86处理单元均采用该32位扩充旗标寄存器做为该旗标寄存器64。

一般而言,该中央处理单元32使用与该X86架构兼容的处理单元架构,且还包括一用以支持64位处理的附加架构。该中央处理单元32设定为用以建立一执行模式并以储存于该控制寄存器62与该旗标寄存器64中的指令设为激活作为响应。

在以下所述的内容中,一中央处理单元32的操作模式设有内定值用以支持不同的可程序选择的处理单元属性。在本实施例中,该中央处理单元32的操作模式设有一内定操作数大小。须特别注意的是,一指令操作数大小受该操作数中位数或该位中操作数宽度的影响。在以下的详细说明中,一指令的编码得置换该内定操作数大小。

如图5所示,该译码控制单元58生成一操作模式讯号,用以指示该中央处理单元32处于一操作模式,并提供该操作模式讯号给该执行核心52。该执行核心52依据该操作模式讯号(如该中央处理单元32的操作模式)执行指令。该中央处理单元32的操作模式包括一32位兼容模式与一32位寄存器扩充模式。在该32位兼容模式与该32位寄存器扩充模式中,该内定操作数大小为32位。在该32位寄存器扩充模式中,指令可以依据指令编码置换该内定32位操作数大小为一64位操作数大小并将在后面详述说明。此外,在以下的详细说明中,字段扩充位包括在该32位寄存器扩充模式74的指令编码中用以增加寄存器的数量。

该32位寄存器扩充模式通过一在该控制寄存器62中的「32位寄存器扩充」位63及一在该旗标寄存器64中的寄存器扩充位66设为激活。该32位寄存器扩充位63提供一32位寄存器扩充模式设为整体激活。举例而言,该32位寄存器扩充模式于储存在该32位寄存器扩充位63中的逻辑值为「1」时为激活,且该32位寄存器扩充模式于储存在该32位寄存器扩充位63中的逻辑值为「0」时为未激活。该32位寄存器扩充位63最好通过具有相对高速存取或特权等级的程序(如操作系统、基本输出入系统或管理者模式公用程序等)所编写。

须特别注意的是,该控制寄存器62在现今的X86架构下所定义的多数个控制寄存器其中之一,故其存取是利用现有的技术。举例而言,该32位寄存器扩充位63为现今所定义的32位控制寄存器CRO-CR4中任一个的一位。此外,该控制寄存器32通过现今X86架构的状态所定义的特定模型(model-specific)其中之一,且可以通过现存的读取特定模型寄存器(read model-specific register;RDMSR)及写入特定模型寄存器(write model-specific register;WRMSR)指令存取之。

该寄存器扩充位66提供该32位寄存器扩充模式的特定处理激活。一应用程序通过该中央处理单元32被现行的执行(如现行处理程序)得通过该寄存器扩充位66激活该32位寄存器扩充模式。该32位寄存器扩充模式须在该处理程序通过设定该寄存器扩充位66进入该32位寄存器扩充模式前通过该32位寄存器扩充位63激活。当该32位寄存器扩充模式通过该32位寄存器扩充位63激活时,该现行处理程序可以通过储存一逻辑值进入「1」至该寄存器扩充位66以进入该32位寄存器扩充模式。只有当该32位寄存器扩充位63与该寄存器扩充位66均设定为译码控制单元58生成该执行模式讯号用以指示该32位寄存器扩充模式时。该现行处理程序通过储存一逻辑值「0」至该寄存器扩充位66中以跳出该32位寄存器扩充模式。

以下所揭露的二个新X86指令通过应用程序用以设定与消除该旗标寄存器64中的寄存器扩充位66。一新的「STX」指令储存一逻辑值「1」至该32位寄存器扩充位63中,以及一新的「CLX」指令储存一逻辑值「0」至该32位寄存器扩充位63中。该「STX」及该「CLX」随着该指令的执行得实时的取得效果。当该32位寄存器扩充模式未被该32位寄存器扩充位63激活(如于未激活状态)该「STX」及该「CLX」指令的使用会例外的导致一未定义作业码。

承前所述,该操作模式定义一内定操作数大小。若该特定指令的编码未置换该内定操作数大小,该执行核心52则执行包含该内定操作数大小的操作数。另一方面,若该特定指令的编码置换该内定操作数大小,则该执行核心52执行包含该置换后操作数大小的操作数。

该执行核心52从该寄存器档案60中提取寄存器操作数,且从该数据快取单元54中提取内存操作数。若该操作数可以提取且存在于该数据快取单元54中,该数据快取单元54提供该内存操作数给该执行核心52。若该操作数不得提取或不存在于该数据快取单元54中,该数据快取单元54通过该接口单元56与该北桥电路34的该内存36中取得该内存操作数并提供该内存操作数给该执行核心52。

如图6所示,其用以显示图5的中央处理单元32的该32位兼容模式72与该中央处理单元32的该32位寄存器扩充模式74间的变迁图70。承前所述,在该32位兼容模式72与该32位寄存器扩充模式74中的内定操作数大小为32位。然而,在该32位寄存器扩充模式中,指令可以依据指令编码置换该内定32位操作数大小为一64位操作数大小。此外,在以下的详细说明中,字段扩充位包括在该32位寄存器扩充模式74的指令编码中用以增加寄存器的数量。

如图6所示,当该中央处理单元32在该32位兼容模式72下进行操作,该中央处理单元32在总体激活该32位寄存器扩充位63与特定处理激活该寄存器扩充位66均具有一逻辑值「1」时,转换至该32位寄存器扩充模式74。承前所述,如操作系统、基本输出入系统或管理者模式公用程序等特权程序可以储存一逻辑值「1」至该总体激活32位寄存器扩充位63中。正通过该中央处理单元32被执行的一应用程序可储存一逻辑值「1」至该寄存器扩充位66,以进入该32位存器扩充模式74。当该总体激活32位寄存器扩充位63或该特定处理激活该寄存器扩充位66都具有一逻辑值「0」,该中央处理单元32转换该32位寄存器扩充模式74至该32位兼容模式72。举例而言,该通过在该32位寄存器扩充模式74下执行的中央处理单元32的现行处理程序可以储存一逻辑值「0」至该寄存器扩充位66中,以离开该32位寄存器扩充模式74而回到该32位兼容模式72。

如图5所示,须特别说明的是,该中央处理单元32还可以包括一具有传呼硬件以执行从虚拟地址传呼地址转换至实体地址的内存管理单元。虚拟地址先在通过一地址转换机制(如一传呼机制)转换至用以实际存取内存的实体地址所生成的地址。该传呼硬件包括有一转换后备缓冲区(translation look-aside buffer;TLB),用以储存传呼转换数据。

该指令快取单元50为一用以储存指令的高速缓存。该执行核心52从该指令快取单元50提取指令以执行之。该指令快取单元50得使用任何包括有直接对映、丛集结合及完全结合等设定的适当快取结构。若一被请求指令为存在于该指令快取单元50中,该指令快取单元50可以通过与该接口模块56的沟通而取得该被请求指令。如此的通讯会导致该指令快取单元50中的快取行的填充/替换。此外,该指令快取单元50可以通过与该内存管理单元的沟通用以接收从该指令快取单元50所提取的虚拟地址转换的实体地址。

该执行核心52执行从该指令快取单元50所提取的指令。该执行核心52还从该寄存器档案60处取得寄存器操作数,且储存该寄存器档案60的寄存器结果值。该操作数大小依据该中央处理单元32的操作模式而定,且可以通过如下所述的指令加以置换。该执行核心52从该数据快取单元54处取得内存操作数,且如以下所述的提供内存结果值给该数据快取单元54。

该执行核心52可以使用任何适当的架构。举例而言,该执行核心52可以为一超管线核心(superpipelined core)、超纯量核心(superscalar core)或这些核心的组合体。该执行核心52可以依据设计时的选择使用顺序紊乱的推测执行或依序的执行。

该数据快取54设定为用以储存数据的一高速高速缓存。该数据快取单元54可以使用任何包括有直接对映、丛集结合及完全结合等设定的适当快取结构。若该内存操作数值并未存在于该数据快取单元54中,该数据快取单元54可以通过与该接口单元56的沟通而存取该内存作数。如此的通讯会导致该数据快取单元54中的快取行的填充/替换。此外,若该数据快取单元54使用写回快取单元策略,被置换的更新快取行会通过与该接口单元56的沟通写回至内存中。该数据快取单元54可以与该通过与该内存管理单元的沟通用以接收从该数据快取单元54所提取的虚拟地址转换的实体地址。

该接口单元56用以和该北桥电路34沟通(如图4所示)。为响应来自该指令快取单元50的请求,该接口单元56通过该北桥电路34从该内存36取得指令并提供该指令给该指令快取单元50。该接口单元56还如下所述的在该北桥电路34与该数据快取单元54间传送内存操作数。

如图7所示,为图5的该执行核心52与该寄存器档案60的实施例。在图5的实施例中,该执行核心52包括一连接至一执行单元78与该寄存器档案60的译码单元76。一般而言,该译码单元76就从该指令快取单元50(如图5所示)所提取的指令进行译码。如图7所示,该译码单元76用以显示接收一代表指令80。该指令80最好为一X86架构,且具有一可选择前置部份82。如下所述,该前置部份82包括存取该至少一个扩充寄存器所需的讯息。

该译码单元76用以侦测任何寄存器指令中的原始参考操作数及来自该寄存器档案60的请求的操作数值。该寄存器档案60传送该被请求的原始操作数值至该执行单元78。同时(如在相同的时钟周期间),该被译码的指令可以从该译码单元76传送至该执行单元78。如此,该被译码的指令与该操作数通常在同一时间(如在相同的时钟周期间)提供给该执行单元78。

该执行单元78就该译码单元76所提供的指令进行译码。该执行单元78还可以用以形成内存操作数的地址,且可以提供该内存操作数地址至该数据快取单元54(如图5所示)。承前所述,该数据快取单元54可以负责提供内存操作数给该执行单元78。该数据快取单元54可以提供该内存操作数地址给该内存管理单元中的传呼硬件,用以转换该虚拟地址至该实体地址。若该内存操作数值未存在于该数据快取单元54中,该数据快取单元54可以提供该结果及该内存部分的对应地址给该接口单元56。该接口单元56通过该北桥电路34储存该内存36的对应内存部分。

该执行单元78提供任何指令执行的结果至寄存器档案60或数据快取单元54(如图5所示)。若其结果为一将存入一寄存器的值,则由该执行单元78将结果提供至寄存器档案60。若其结果为一将存入内存位置的值,则由该执行单元78将其结果及对应的内存位置地址提供至数据快取单元54。若该内存位置的内容不存在于数据快取单元54,则该数据快取单元54可将其结果及其对应的内存位置地址提供至接口单元56。该接口单元56可以通过北桥电路34储存其值至对应的内存36的内存位置。

如图7所示的实施例,该寄存器档案60包括一标准寄存器集84与一扩充寄存器集86。该标准寄存器集84包括八个通过该X86架构所定义的32位通用寄存器EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等。该扩充寄存器集86可以包括,如八个附加或扩充寄存器。如以下所述,该扩充寄存器集86的扩充寄存器可以为64位寄存器。

该指令80可以为一包括有用以识别该八个X86通用寄存器的寄存器操作数识别讯息的3个位的X86指令。然而,该扩充寄存器集86的扩充寄存器数量超过该X86架构所定义的八个通用寄存器。因此该指令80中的寄存器操作数识别讯息的3个位(用以识别该八个X86通用寄存器被选择的其中一个)却不足以识别由该扩充寄存器中被选择的其中一个。该指令80的前置部份82因此提供额外的寄存器识别讯息,以供识别由该扩充寄存器中被选择的其中一个。该指令80的编码包括有该前置部份82,可以识别每一个扩充寄存器。

当该中央处理单元32(如图5所示)在该32位寄存器扩充模式下操作,且该指令80识别一寄存器原始操作数,然并不包括可选择前置部份82,该译码单元76请求来自该寄存器集60的标准寄存器集84的一对应标准寄存器内容。该指令80的执行因此通过来自该寄存器档案60的标准寄存器集84而完成。另一方面,当该中央处理单元32在该32位寄存器扩充模式下操作,且该指令80包括该可选择前置部份82且参考一寄存器原始操作数,该译码单元76请求来自该寄存器集60的扩充寄存器集86的一对应标准寄存器内容。该指令80的执行因此通过来自该寄存器档案60的扩充寄存器集86而完成。

该译码单元76可以生成并提供一操作数大小讯号至该执行单元78以供该指令80指示该操作数大小。该译码单元76可以接收该译码控制单元58所生成的操作模式讯号,并指示该中央处理单元32在操作模式中。当该操作模式讯号指示该中央处理单元32是在该32位寄存器扩充模式下进行操作且该指令80包括有该前置部份82,该译码单元76可例如为用以确定指示该指令80的操作数大小讯号为64位。当该操作模式讯号指示该中央处理单元32是在该32位寄存器扩充模式下进行操作,且该指令80不包括有该前置部份82,该译码单元76例如为用以确定指示该指令80的操作数大小讯号为32位。

当该操作数大小讯号确定后,该执行单元78可以执行包含有64位操作数的操作。该执行单元78可以接收从该寄存器档案60所送的64位扩充寄存器操作数,且可以储存64位扩充寄存器结果值至该寄存器档案60。另一方面,当该操作数大小讯号未被确定,该执行单元78可以执行包含有32位操作数的操作。该执行单元78可以接收从该寄存器档案60所送的32位扩充寄存器操作数,且可以储存32位扩充寄存器结果值至该寄存器档案60。

该执行单元78可以通过前置的「0」填补(pad)接收自该数据快取单元54的32位内存操作数值,以形成前方为零的64位操作数。该执行单元78还可以提供该64位内存结果值的较低有序(即最少有效)32位给该数据快取单元54。另外,该执行单元78可以提供该操作数大小讯号给该数据快取单元54,且在该执行核心52与该数据快取单元54间所传送的操作数大小依据该操作数大小讯号而定。举例而言,当该操作数大小讯号被确定,该执行单元78可以从该数据快取单元54取得64位内存作数,且可以提供64位内存结果值给该数据快取单元54。另一方面,当该操作数大小讯号未被确定时,该执行单元78可以从该数据快取单元54取得32位内存操作数,且可以提供32位内存结果值给该数据快取单元54。

该译码单元76还可以依据该操作模式讯号与该指令80中前置部份82的存在与否生成一例外讯号。当该指令80包括该前置部份82且该操作模式讯号指示该中央处理单元32并非在32位寄存器扩充模式下执行操作,该译码单元76例如为确定该例外讯号。该被确定的例外讯号会导致一「装置不存在」的例外情况。

如图8所示,其中显示图7中的该指令80的可选择前置部份82的实施例。在图8所示的实施例中,该前置部份82为一包括有一扩充寄存器键字段92、一64位操作数大小置换位94以及三个字段扩充位96、98与100的扩充寄存器前置字节90。该扩充寄存器键字段92占用该扩充寄存器前置字节90的位4-7字段,且图8中所示的该扩充寄存器键字段92中的一二进制扩充寄存器值「0100」用以识别该扩充寄存器前置字节90。该译码单元76通过该扩充寄存器键字段92中的一二进制扩充寄存器值「0100」用以识别该扩充寄存器前置字节90。当该扩充寄存器键字段92中未包括一二进制扩充寄存器值「0100」时,该译码单元76就无法辨识该前置为一扩充寄存器前置字节。

该64位操作数大小置换位94占用该扩充寄存器前置字节90的位3字段。该64位操作数大小置换位94可用以提供该包括如寄存器档案60(如图7所示)中被存取的64位寄存器操作数的扩充寄存器前置字节90在内的指令80(如图7所示)置换内定32位操作数大小。该字段扩充位96、98与100可用以扩充于一作业码中的3个位字段,该指令80的一可选择寻址模式字节一可选择比例索引基址字节则扩充44个位,因此可替换8个寄存器而允许16个寄存器进行存取。该字段扩充位96、98与100因此可以增加该中央处理单元32(如图4及图5所示)中的通用寄存器数量。

当该该中央处理单元32在32位寄存器扩充模式下执行操作,该指令80包括该该扩充寄存器前置字节90,该扩充寄存器前置字节90的该扩充寄存器键字段92则包括扩充寄存器值「0100」,该扩充寄存器前置字节90的64位操作数大小置换位94为一逻辑值「0」,该指令80中的寄存器操作数大小会包括该内定32个位,通过该指令80该32位操作数可以从该寄存器档案60中被提取。另一方面,当该64位操作数大小置换位94的值为一逻辑值「1」,该内定32位操作数大小则通过该指令80而被置换,且通过该指令80该64位操作数可以从该寄存器档案60中被提取。

该字段扩充位96、98与100分别占用该扩充寄存器前置字节90的特定位字段2、1与0。该字段扩充位96例如为用以扩充该可选择寻址模式字节寄存器字段由3个位到4个位,并因此形成一扩充寄存器字段。该字段扩充位96可以形成该扩充寄存器字段的最有效位。当该3个位的寄存器字段用以存取该寄存器档案60中8个不同寄存器的其中之一时,该4个位的扩充寄存器字段则可用以存取该寄存器档案60中16个不同寄存器的其中之一。

该字段扩充位98例如为用以扩充该可选择比例索引基址字节寄存器字段由3个位到4个位,并因此形成一扩充索引字段。该字段扩充位98可以形成该扩充索引字段的最有效位。当该3个位的索引字段用以存取该寄存器档案60中8个不同寄存器的其中之一时,该4个位的扩充索引字段则可以用以存取该寄存器档案60中16个不同寄存器的其中之

该字段扩充位100例如为用以扩充该可选择寻址模式字节寄存器/内存字段、该可选择比例索引基址字节基址字段或一作业码寄存器参考字段由3个位到4个位,并因此形成一扩充字段。该字段扩充位100可以形成该扩充字段的最有效位。当该3个位的字段用以存取该寄存器档案60中8个不同寄存器的其中之一时,该4个位的扩充字段则可用以存取该寄存器档案60中16个不同寄存器的其中之一。

如图9所示,为图7中的该寄存器档案60的一实施例,其中该标准寄存器集84为该扩充寄存器集86的子集。承前所述,该标准寄存器集84包括有8个编号由0至7的32位X86寄存器EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等。该扩充寄存器集86包括16个编号由0至15的64位寄存器。该标准寄存器集84的编号0至7的32位寄存器分别形成该扩充寄存器集86编号0至7的64位寄存器的较低有序(如最少有效)的32位部份。如图9所示,该扩充寄存器集86为该标准寄存器集84的超集(superset)。

图9同时也显示该扩充寄存器前置字节90在该寄存器档案60中的寄存器上的功效。该扩充寄存器前置字节90的位字段0至2(分别为该字段扩充位100、98与96)用以供该指令80识别该扩充寄存器集86中被选择的寄存器。当该扩充寄存器前置字节90的位字段3(如该64位操作数大小置换位94)被清除(如逻辑值为「0」)时,仅有该扩充寄存器集86中的扩充寄存器的较低有序(如最少有效)32位得被存取。另一方面,当该扩充寄存器前置字节90的位字段3(即该64位操作数大小置换位94)被设定(如逻辑值为「1」)时,所有该扩充寄存器集86中的扩充寄存器的32位均可以被存取。

该扩充寄存器最可能产生的意外是当该中央处理单元32在一32位操作系统下执行该寄存器档案60的扩充寄存器集86时,会因此在上下文交换时无法尝试储存该扩充寄存器。如图10与图11,其中显示当该中央处理单元32(如图5所示)包括一32位操作系统时,在上下文交换过程中储存该扩充寄存器集86的扩充寄存器的内容的系统及方法。须特别注意的是,在图式中该标准多媒体扩充寄存器集110与该标准数据流单指令多数据扩充寄存器集114可以以相似于扩充该标准寄存器集84的方法加以扩充(若有该扩充寄存器集112与116或其中任一时也一样)。在上下文交换期间,该操作系统导致该中央处理单元32停止执行一第一程序或工作的指令并开始执行一第二程序或工作的指令。该操作系统在上下文交换期间储存该中央处理单元32的状态,使得该第一程序或工作只指令执行会在稍后被重新初始化。然而,如前述,该32位操作系统可能没有注意到该扩充寄存器集86中的扩充寄存器,且会因此在上下文交换时无法尝试储存该扩充寄存器。

图10显示图7的该寄存器档案60的另一实施例,其中该寄存器档案60包括前述的该标准寄存器集84与该扩充寄存器集86。在图10的实施例中,该寄存器档案60还包括一个标准多媒体扩充寄存器集110、一扩充多媒体扩充寄存器集112、一标准数据流单指令多数据扩充或一数据流单指令多数据扩充寄存器集114以及一扩充数据流单指令多数据扩充寄存器集116。

在上下文交换期间,一典型的32位操作系统储存该中央处理单元32用以复原在一工作状态区段(task state segment;TSS)中被中断的程序或工作或明确形成于内存36(如图4所示)中程序的堆栈的状态讯息。该工作状态区段包括先于该上下文交换知该EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等寄存器,且因而包括有该标准寄存器集84的标准寄存器内容。承前所述,该32位操作系统最可能没注意到该扩充寄存器集86(该扩充寄存器112与116也一样)的扩充寄存器,且会因此在上下文交换时无法尝试储存该扩充寄存器集86的扩充寄存器。

该32位操作系统最有可能使用该有效的X86「FXSAVE」指令,以在上下文交换期间,将该标准多媒体扩充寄存器集110的标准多媒体扩充寄存器和该数据流单指令多数据扩充寄存器集114的数据流单指令多数据扩充寄存器的内容,存储在该内存36中形成的特殊的512字节数据结构中。该32位操作系统最有可能使用该有效的X86「FXRSTOR」指令,用以通过该「FXSAVE」指令储存在该512字节数据结构中的数据,来回复该标准多媒体扩充寄存器集110的标准多媒体扩充寄存器与该数据流单指令多数据扩充寄存器集114的数据流单指令多数据扩充寄存器的内容。通常情况下,该「FXSAVE」与该「FXRSTOR」指令通过一微码(microcode)在该中央处理单元32中被执行。在一实施例中,该微码被扩充用以储存或回复该扩充寄存器集86、112及/或114的内容。因而该32位操作系统执行该「FXSAVE」与该「FXRSTOR」指令用以在上下文交换期间储存与回复该标准多媒体扩充寄存器集110的标准多媒体扩充寄存器与该数据流单指令多数据扩充寄存器集114的数据流单指令多数据扩充寄存器的内容,以使该扩充寄存器集86、该扩充多媒体扩充寄存器集112及该扩充数据流单指令多数据扩充寄存器集116的内容被储存或回复。

图11用以显示形成于内存中用以储存寄存器内容(传统上,指X86架构下的该标准多媒体扩充寄存器与该标准数据流单指令多数据扩充寄存器的内容)的一特殊512字节数据结构120。该数据结构120包括有一已使用部分122及一预先未使用部分124。一标准多媒体扩充寄存器集数据部分126与一标准数据流单指令多数据扩充寄存器集数据部分130存在于该用以储存该标准多媒体扩充寄存器集110与该标准数据流单指令多数据扩充寄存器集114(如图10所示)的内容的已使用部分122。如图11所示,该数据结构120的该预先未使用部分124用以分别在该储存区域134、135与136上下文交换时,储存该扩充寄存器集86、112与116的内容。如此,该32位操作系统执行该「FXSAVE」与该「FXRSTOR」指令,用以在上下文交换期间储存与回复该标准多媒体扩充寄存器与该数据流单指令多数据扩充寄存器的内容,且还可以储存与回复该扩充寄存器集的内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号