微处理器以及微处理器微码修补方法.pdf

上传人:柴****2 文档编号:5782180 上传时间:2019-03-19 格式:PDF 页数:16 大小:1.02MB
返回 下载 相关 举报
摘要
申请专利号:

CN200910261228.5

申请日:

2009.12.17

公开号:

CN101710379A

公开日:

2010.05.19

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 21/22申请日:20091217|||公开

IPC分类号:

G06F21/22; G06F9/22

主分类号:

G06F21/22

申请人:

威盛电子股份有限公司

发明人:

G·葛兰·亨利; 泰瑞·派克斯

地址:

中国台湾台北县

优先权:

2009.01.15 US 61/144,808; 2009.03.13 US 12/403,769

专利代理机构:

北京林达刘知识产权代理事务所 11277

代理人:

刘新宇;王璐

PDF下载: PDF下载
内容摘要

一种微处理器以及微处理器微码修补方法,微处理器包括一非公开随机存取存储器,根据原始微码指令和替代微码指令来定址;微处理器亦包括修补文件硬件,当替代微码指令实施至修补文件硬件时,微处理器执行替代微码指令;微处理器用以从外部存储器载入微码修补文件至非公开随机存取存储器,并判断微码修补文件是否有效,当微码修补文件为有效时,从非公开随机存取存储器实施替代微码指令至修补文件硬件,当微码修补文件为无效时,不实施替代微码指令至修补文件硬件。本发明不仅能够减少微处理器载入坏掉或损坏的修补文件而危害已载入的良好修补文件的可能性,还可避免不具有完整性的后续的修补文件影响先前已载入的良好的修补文件。

权利要求书

1: 一种微处理器,其特征在于,具有一微码存储器,该微码存储器用以储存上述微处理器所执行的一原始微码指令以执行一使用者程序指令,上述微处理器亦具有耦接至上述微处理器外部的一外部存储器的接口,上述外部存储器用以储存一微码修补文件,上述微码修补文件包括一替代微码指令和一验证信息,上述微处理器包括: 一非公开随机存取存储器,根据上述原始微码指令和上述替代微码指令定址;以及 一修补文件硬件,耦接上述非公开随机存取存储器,其中当上述微处理器实施上述替代微码指令至上述修补文件硬件时,上述微处理器执行上述替代微码指令; 其中上述微处理器用以: 从上述外部存储器载入上述微码修补文件至上述非公开随机存取存储器; 通过上述验证信息判断上述非公开随机存取存储器中的上述微码修补文件是否有效; 当上述非公开随机存取存储器中的上述微码修补文件为有效时,则从上述非公开随机存取存储器实施上述替代微码指令至上述修补文件硬件;以及 当上述非公开随机存取存储器中的上述微码修补文件为无效时,则不实施上述替代微码指令至上述修补文件硬件。
2: 根据权利要求1所述的微处理器,其特征在于,当上述微处理器执行上述使用者程序指令的至少一个,且所执行的上述使用者程序指令命令上述微处理器载入上述微码修补文件时,上述微处理器从上述外部存储器载入上述微码修补文件至上述非公开随机存取存储器;其中命令上述微处理器载入上述微码修补文件的上述使用者程序指令的至少一个指令包括存取上述微处理器的一特别模块暂存器的至少一指令;其中命令上述微处理器载入上述微码修补文件的上述使用者程序指令的至少一个指令包括载入一地址至上述微处理器的上述特别模块暂存器的至少一指令,其中上述地址为在上述外部存储器中的上述微码修补文件的一初始地址。
3: 根据权利要求1所述的微处理器,其特征在于,上述验证信息包括一微码修补文件校验和,其中上述微处理器运算上述非公开随机存取存储器中的上述微码修补文件的校验和且比较所运算的校验和与上述微码修补文件校验和,以判断上述非公开随机存取存储器中的上述微码修补文件是否有效。
4: 根据权利要求1所述的微处理器,其特征在于,上述验证信息包括一微码修补文件循环冗余码,其中上述微处理器运算上述非公开随机存取存储器中的上述微码修补文件的循环冗余码且比较所运算的循环冗余码与上述微码修补文件循环冗余码,以判断上述非公开随机存取存储器中的上述微码修补文件是否有效。
5: 根据权利要求1所述的微处理器,其特征在于,上述验证信息包括一微码修补文件签章,其中上述微处理器比较上述微处理器中所制造的一已知签章与上述微码修补文件签章,以判断上述非公开随机存取存储器中的上述微码修补文件是否有效。
6: 根据权利要求1所述的微处理器,其特征在于,上述微处理器用以: 在实施一第一微码修补文件的上述替代微码指令至上述修补文件硬件之后,从上述外部存储器载入一第二微码修补文件至上述非公开随机存取存储器; 通过上述第二微码修补文件的上述验证信息判断上述非公开随机存取存储器中的上述第二微码修补文件是否有效; 当上述非公开随机存取存储器中的上述第二微码修补文件为有效时,则从上述非公开随机存取存储器实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件中;以及 当上述非公开随机存取存储器中的上述第二微码修补文件为无效时,则不实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件中。
7: 根据权利要求6所述的微处理器,其特征在于,上述第一微码修补文件的上述验证信息包括在上述外部存储器中上述第二微码修补文件的一初始地址。
8: 根据权利要求6所述的微处理器,其特征在于,从上述非公开随机存取存储器实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件的步骤包括清除在上述微处理器中的一错误旗标。
9: 根据权利要求6所述的微处理器,其特征在于,不实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件的步骤包括在上述微处理器中设定一错误旗标。
10: 一种微处理器微码修补方法,其特征在于,适用于一微处理器,上述微处理器具有一微码存储器,该微码存储器用以储存上述微处理器所执行的一原始微码指令以执行一使用者程序指令,上述微处理器亦具有耦接至上述微处理器外部的一外部存储器的接口,上述外部存储器用以储存一微码修补文件,上述微码修补文件包括一替代微码指令和一验证信息,上述微处理器亦具有一修补文件硬件,其中当上述微处理器实施上述替代微码指令至上述修补文件硬件时,上述微处理器执行上述替代微码指令,上述微处理器微码修补方法包括: 从上述外部存储器载入上述微码修补文件至一非公开随机存取存储器,其中上述非公开随机存取存储器根据上述原始微码指令和上述替代微码指令定址; 通过上述验证信息判断上述非公开随机存取存储器中的上述微码修补文件是否有效; 当上述非公开随机存取存储器中的上述微码修补文件为有效时,则从上述非公开随机存取存储器实施上述替代微码指令至上述修补文件硬件;以及 当上述非公开随机存取存储器中的上述微码修补文件为无效时,则不实施上述替代微码指令至上述修补文件硬件。
11: 根据权利要求10所述的微处理器微码修补方法,其特征在于,当上述微处理器执行上述使用者程序指令的至少一个,且所执行的上述使用者程序指令命令上述微处理器载入上述微码修补文件时,上述微处理器从上述外部存储器载入上述微码修补文件至上述非公开随机存取存储器;其中命令上述微处理器载入上述微码修补文件的上述使用者程序指令的至少一个指令包括存取上述微处理器的一特别模块暂存器的至少一指令;其中命令上述微处理器载入上述微码修补文件的上述使用者程序指令的至少一个指令包括载入一地址至上述微处理器的上述特别模块暂存器的至少一指令,其中上述地址为在上述外部存储器中上述微码修补文件的一初始地址。
12: 根据权利要求10所述的微处理器微码修补方法,其特征在于,上述验证信息包括一微码修补文件校验和,其中通过上述验证信息判断上述非公开随机存取存储器中的上述微码修补文件是否有效的方法,包括运算上述非公开随机存取存储器中的上述微码修补文件的校验和以及比较所运算的校验和与上述微码修补文件校验和。
13: 根据权利要求10所述的微处理器微码修补方法,其特征在于,上述验证信息包括一微码修补文件循环冗余码,其中通过上述验证信息来判断上述非公开随机存取存储器中的上述微码修补文件是否有效的方法,包括运算上述非公开随机存取存储器中的上述微码修补文件的循环冗余码以及比较所运算的循环冗余码与上述微码修补文件循环冗余码。
14: 根据权利要求10所述的微处理器微码修补方法,其特征在于,上述验证信息包括一微码修补文件签章,其中通过上述验证信息判断上述非公开随机存取存储器中的上述微码修补文件是否有效的方法,包括比较上述微处理器中所制造的一已知签章与上述微码修补文件签章。
15: 根据权利要求10所述的微处理器微码修补方法,其特征在于,还包括: 在实施一第一微码修补文件的上述替代微码指令至上述修补文件硬件之后,从上述外部存储器载入一第二微码修补文件至上述非公开随机存取存储器; 通过上述第二微码修补文件的上述验证信息判断上述非公开随机存取存储器中的上述第二微码修补文件是否有效; 当上述非公开随机存取存储器中的上述第二微码修补文件为有效时,则从上述非公开随机存取存储器实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件中;以及 当上述非公开随机存取存储器中的上述第二微码修补文件为无效时,则不实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件中。
16: 根据权利要求15所述的微处理器微码修补方法,其特征在于,从上述非公开随机存取存储器实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件的步骤包括清除在上述微处理器中的一错误旗标。
17: 根据权利要求15所述的微处理器微码修补方法,其特征在于,不实施上述第二微码修补文件的上述替代微码指令至上述修补文件硬件的步骤包括在上述微处理器中设定一错误旗标。

说明书


微处理器以及微处理器微码修补方法

    【技术领域】

    本发明主要关于一种微处理器(microprocessors),特别有关于一种载入外部存储器的微码修补文件(microcode patches)至微处理器的安全装置。

    背景技术

    微处理器通常包括微码或微程序(microprograms),一般微码的使用是在一重置程序之后执行微处理器的初始功能,另外一般微码的使用是处理微异常(micro-exceptions)情况,例如,微处理器中的异常情况由微处理器本身处理而不是将此异常情况由操作系统(operating system)处理。另外一般微码的使用是在微处理器的指令集结构(instruction set architecture)中执行复杂或非频繁执行的指令,当微处理器将指令集的多个可执行微码指令(microcode-implemented instructions)之一解码时,微处理器转移控制(transfer control)至适当的微码例行程序(microcode routine),而不是直接传送指令给微处理器的执行单元去执行。接着微处理器传送微码指令至执行指令的执行单元以执行复杂且/或非频繁执行的指令。这使得执行单元(以及微处理器的其他单元,例如一附属的检查单元(checking unit)或引退单元(retire unit))相较于必须能执行微处理器指令集的所有指令(包括复杂且/或非频繁执行的指令)的执行单元来说,具有较低的复杂度。

    如同其他程序,微码可能具有错误(bugs)且必须被修正。此外,增加一特征(feature)至微码,实为所希望的。一般微码程序指令储存于微处理器的只读存储器中,其中只读存储器并不能根据使用者程序直接定址(addressable),因此,传统修正(fixing)或特征增强(feature-enhancing)微码只读存储器的方法是通过修补该微码只读存储器,微处理器包括可利用专用软件(通常为BIOS或操作系统)写入的修补文件硬件,并有一修补文件可有效地取代微码只读存储器的个别项目(指令或数据)。一般来说,专用软件载入修补文件至微处理器的外部的一存储器,例如,BIOS存储器或系统存储器,接着命令微处理器实施外部存储器的修补文件至微处理器的修补文件硬件中。

    因为修补文件是从微处理器外部的存储器载入,并且该外部存储器为可写入的,在修补文件载入微处理器以及实施至修补文件硬件前,可能存在黑客修改上述修补文件的风险。例如,黑客可以从硬盘控制器启动直接存储器存取(DMA)操作至外部存储器的一位置,其中外部存储器的位置为修补文件的位置,因此,微处理器实施一被黑客入侵(hacked)或损坏的修补文件,这可能导致微处理器执行写入修补文件的微处理器制造者所预期之外的操作,例如,损坏数据、破坏微处理器或执行其他恶意的行为。

    针对微处理器的上述问题的解决方法为借着从外部存储器以一个字(word)为单位依序读取修补文件指令以在修补文件中执行校验和(checksum)运算,而不用将修补文件实施至微处理器的修补文件硬件中,如果校验和检查通过,则微处理器重读取外部存储器的修补文件并实施该修补文件。亦即,解决方法分为两个步骤:1)当修补文件依旧在外部存储器时,确认该修补文件;以及2)当在第一步骤该修补文件确认正确时,则实施该修补文件至微处理器的修补文件硬件中。

    然而,这样的解决方法依旧具有安全上的风险,因为当微处理器执行第一步骤和第二步骤时会具有一空窗期(window oftime),黑客可在该空窗期间内改修补文件。实际上,该空窗期甚至更长,因为只要黑客写入在微处理器目前读取以执行校验和运算的位置之后的位置,则可在微处理器执行校验和运算的时间内更改修补文件。

    第一种可减少黑客利用上述空窗期入侵的可能性的解决方法为微处理器连续执行多次校验和运算,假如微处理器执行所有的校验和运算且所有校验和检查皆通过,则微处理器可较有把握地确定修补文件未被黑客修改。

    然而,对于有些应用,即使将可能性降低至一相对小的范围依旧是不够的。

    第二种避免黑客利用上述空窗期入侵的风险的解决方法,是通过相反步骤进行顺序。亦即,先进行上述第二步骤:微处理器读取修补文件至微处理器且实施该修补文件至修补文件硬件,接着进行上述第一步骤:当修补文件在黑客无法存取修补文件的微处理器的修补文件硬件内时,微处理器对修补文件执行校验和运算,如果修补文件是损坏的,则微处理器不使用该修补文件。

    然而,当必须连续实施多个修补文件至微处理器时,例如,修补一修补文件,或在已经实施一第一修补文件之后实施后续的修补文件时,第二种方法是不可行的。亦即,在微处理器实施修补文件至修补文件硬件时,新的修补文件重写(clobber)了之前所实施良好的修补文件地部分,因此,当微处理器判定目前的修补文件损坏时,微处理器无法修复被损坏的修补文件重写的良好的修补文件。

    因此,需要一更安全的实施修补文件至微处理器的微码的解决方法。

    【发明内容】

    一方面,本发明的一实施例提供一种微处理器,具有一微码存储器,该微码存储器用以储存上述微处理器所执行的原始微码指令以执行使用者程序指令,上述微处理器亦具有耦接至微处理器外部的外部存储器的接口,外部存储器用以储存一微码修补文件,上述微码修补文件包括替代微码指令和验证信息,上述微处理器包括:一非公开随机存取存储器,根据上述原始微码指令和上述替代微码指令定址;以及一修补文件硬件,耦接上述非公开随机存取存储器,其中当上述微处理器实施上述替代微码指令至上述修补文件硬件时,上述微处理器执行上述替代微码指令;其中上述微处理器用以:从上述外部存储器载入上述微码修补文件至上述非公开随机存取存储器;通过上述验证信息来判断上述非公开随机存取存储器中的上述微码修补文件是否有效;当上述非公开随机存取存储器中的上述微码修补文件为有效时,则从上述非公开随机存取存储器实施上述替代微码指令至上述修补文件硬件;以及当上述非公开随机存取存储器中的上述微码修补文件为无效时,则不实施上述替代微码指令至上述修补文件硬件。

    另一方面,本发明的一实施例提供一种微处理器微码修补方法,适用于一微处理器,上述微处理器具有一微码存储器,该微码存储器用以储存上述微处理器所执行的原始微码指令以执行使用者程序指令,上述微处理器亦具有耦接至微处理器外部的外部存储器的接口,外部存储器用以储存一微码修补文件,上述微码修补文件包括替代微码指令和验证信息,上述微处理器亦具有一修补文件硬件,其中当上述微处理器实施上述替代微码指令至上述修补文件硬件时,上述微处理器执行上述替代微码指令,上述微处理器微码修补方法包括:从上述外部存储器载入上述微码修补文件至一非公开随机存取存储器,其中上述非公开随机存取存储器根据上述原始微码指令和上述替代微码指令来定址;通过上述验证信息来判断上述非公开随机存取存储器中的上述微码修补文件是否有效;当上述非公开随机存取存储器中的上述微码修补文件为有效时,则从上述非公开随机存取存储器实施上述替代微码指令至上述修补文件硬件;以及当上述非公开随机存取存储器中的上述微码修补文件为无效时,不实施上述替代微码指令至上述修补文件硬件。

    本发明的优点在于减少微处理器载入一坏掉或损坏的修补文件而危害已载入的良好修补文件的可能性。本发明提供一种针对微处理器的方法,在实施后续的修补文件之前,为了避免不具有完整性的后续的修补文件影响先前已载入的良好的修补文件,检查后续的修补文件的完整性与相容性。

    【附图说明】

    图1显示载入修补文件至一微处理器的一相关技术系统100的方块图。

    图2是根据本发明一实施例所述的载入修补文件至微处理器的系统的方块图。

    图3显示在修补文件中的验证信息的方块图。

    图4显示一修补文件内的一修补文件记录的方块图。

    图5显示在修补文件记录和修补文件硬件间的关系的方块图。

    图6是根据本发明实施例所述的图2中载入微码修补文件至微处理器204的方法流程图。

    【具体实施方式】

    本发明的实施例所述的一微处理器,用以提供微处理器内受保护的储存区域以暂时储存和检查所载入的修补文件。使用者程序无法存取受保护区域以避免修补文件受到有意或无意更改。于实施(即,应用(apply))修补文件至修补文件硬件之前,微处理器载入修补文件至受保护储存区域,并且在修补文件存入微处理器内部受保护的储存区域时检查修补文件的完整性和相容性(compatibility),接着只当修补文件的完整性检查和相容性检查通过时,则实施修补文件至修补文件硬件中。因此,有助益地,当在外部存储器中的修补文件受到更改时,则微处理器会侦测到并且避免用其重写任何之前所实施的良好的修补文件。

    在描述本发明的实施例之前,在此先描述一传统的微处理器。

    图1显示载入修补文件108至微处理器104的一相关技术的系统100的方块图。系统100包括微处理器104以及外部存储器106,其中有一总线(例如处理器总线且/或存储器总线)耦接微处理器104和外部存储器106。外部存储器106包括多个修补文件108,其中每一个修补文件108包括替代微码指令(substitutemicrocode instructions)132以及验证信息(validationinformation)134。为了简化,图1中只显示了一个修补文件108。

    在一实施例中,外部存储器106可为一非易失性(non-volatile)储存装置,例如,用以储存一基本输出输入系统(BIOS)的快闪存储器。根据微处理器104制造者的要求,系统100或主机板制造者可针对修补文件108分配非易失性储存装置的空间用以储存修补文件108。在另一实施例中,外部存储器106可为一易失性(volatile)储存装置,例如动态随机存取存储器(dynamic RAM memory),而系统软件可自磁盘储存装置(diskstorage)载入修补文件108至易失性储存装置。

    微处理器104的执行单元122执行通过一多工器(mux)118所提供的微指令以执行一使用者程序指令,其中多工器118可选择提供来自微码只读存储器112(以下简称为微码ROM 112)的原始微码指令124或来自修补文件硬件114的微指令126至执行单元122。修补文件硬件114包括了用以储存修补文件108的易失性存储器。一般来说,多工器118选择提供来自微码只读存储器112的原始微码指令124至执行单元122,然而当修补文件108存在于修补文件硬件114中以修补微码只读存储器112的原始微码指令124的特定一个时,多工器118因为这些特定需修补的原始微码指令124选择来自修补文件硬件114的微指令126。在一实施例中,专用的系统软件,例如BIOS或操作系统,读取和写入微处理器104的特别模块暂存器(model-specific register,以下简称MSR)116以命令微处理器104从外部存储器106载入修补文件108至修补文件硬件114。在一实施例中,例如,IA-32Architecture Software Developer’s Manual,Volume 3A的section9.11:第一部分,系统程序指南,2006年1月,其中描述了专用软件命令公知的微处理器以修补其微码的方法,在此结合其所有目的的完整内容以供参考。

    很不幸的,以上所讨论的图1的传统系统100遇到了前述安全性且/或良好修补文件被重写(good-patch-clobbering)的问题,在此本发明的实施例中描述了这些问题的解决方法。

    图2是根据本发明一实施例的载入修补文件108至微处理器204的系统200的方块图。图2中的修补文件108与图1的修补文件108相似,且如同图1中的系统100储存修补文件108于外部存储器106中,图2中的微处理器204包括相似于图1中的元件,其包括一微码只读存储器112、修补文件硬件114、MSR 116、多工器118以及执行单元122。但是,图2中的微处理器204相对于图1中的微处理器104有不同之处,并在此描述。

    不同于图1中的微处理器104,图2中的微处理器204包括一非公开随机存取存储器(另可称为专用随机存取存储器或私用随机存取存储器)(private RAM,以下简称PRAM)202,其为一易失性存储器,用以储存微处理器204从外部存储器106载入的修补文件108。当微处理器204所执行的一使用者程序指令命令微处理器204载入修补文件108时,微处理器204从外部存储器106载入修补文件108至PRAM 202。在一实施例中,微处理器204从外部存储器106的初始地址(starting address)载入修补文件108至PRAM 202,而外部存储器106的初始地址由多个MSR116之一所指定。在另一实施例中,命令微处理器204载入修补文件108的使用者程序指令的至少一个包括存取MSR 116的至少一指令,而且命令微处理器204载入修补文件108的使用者程序指令的至少一个亦包括载入在外部存储器106中的修补文件108的初始地址至MSR 116的至少一指令。

    接着,根据修补文件108是否通过验证检查(validitychecks),微处理器204选择是否从PRAM 202载入修补文件108至修补文件硬件114中,其选择方法将在后面说明。PRAM 202属于微处理器204中非使用者可存取(non-user-accessible)的地址空间,其不同于微处理器204的使用者存储器地址空间。PRAM 202不能通过使用者码指令(user code instructions)来定址,只能通过微处理器204来定址,例如通过储存于微码只读存储器112中的原始微码指令124。在一实施例中,微处理器204的微指令集中包括特殊的微指令可用以存取PRAM 202。

    在微处理器204载入修补文件108至PRAM 202之后,且在载入PRAM 202中的修补文件108至修补文件硬件114之前,微处理器204对修补文件108执行验证检查。修补文件硬件114可包括描述于以下共同受让且申请中的美国专利说明书中的实施例,在此结合其所有目的的完整内容以供参考,分别为申请案号:11/782,062,11/782,072,11/782,081,11/782,088,11/782,094,11/782,099,11/782,105(CNTR.2292,2407-2412),各申请案号皆于2007年7月24日提出申请。

    在PRAM 202中执行这些验证检查至少具有两个优点,第一,在微处理器204中执行验证检查,则外部软件无法窜改修补文件108,因此,一旦微处理器204对修补文件108执行验证检查且判断修补文件108是良好的,在微处理器204实施修补文件108之前,不可修改修补文件108。第二,借着在PRAM 202中执行验证检查,修补文件108可从修补文件硬件114中分离开来,即当验证检查失败时,微处理器204不实施修补文件108至修补文件硬件114,从而避免重写修补文件硬件114中先前所实施的良好的修补文件。在图1所述的传统方法中,坏掉的修补文件108可能会损坏储存在修补文件硬件114中的修补文件108,而且很难或几乎不可能使其恢复成先前所载入的良好的修补文件108。根据本发明,因为在从PRAM 202中实施修补文件108至修补文件硬件114之前,可在PRAM 202中侦测出损坏的修补文件108,因此损坏的修补文件108不会实施至修补文件硬件114。此外,因PRAM 202在微处理器204的内部,所以在PRAM 202中执行验证检查的速度可能比在外部存储器106中执行来的快。

    图3显示图2中的修补文件108的验证信息134的方块图。在一实施例中,验证信息134包括所储存的完整性信息(integrityinformation)304,例如:奇偶校验(parity)、循环冗余码(cyclicredundancy code,CRC)、签章(signature)且/或校验和等信息。微处理器204从图2中的PRAM 202读取修补文件108中的所有字节,以及运算整个修补文件108的完整性信息,接着将所运算的完整性信息与储存于验证信息134的完整性信息304作比较。在一实施例中,微处理器204运算PRAM 202中的修补文件108的校验和,且比较所运算的校验和与验证信息134中的校验和,以判断PRAM 202中的修补文件108是否有效。在另一实施例中,微处理器204运算PRAM 202中的修补文件108的循环冗余码,且比较所运算的循环冗余码与验证信息134中的循环冗余码,以判断PRAM 202中的修补文件108是否有效。在另一实施例中,微处理器204比较微处理器204中所制造的一已知签章与验证信息134中的签章,以判断PRAM 202中的修补文件108是否有效。

    当所运算的完整性信息符合所储存的完整性信息304时,则修补文件108为一良好的修补文件108,其他情况则修补文件108为损坏的修补文件108。微处理器204可执行多次且可能为不同种类的完整性检查。在一实施例中,微处理器204引动(invoke)微码例行程序以执行完整性检查。

    在一实施例中,验证信息134包括相容性信息306,例如:微处理器204的种类和步进(stepping)、修补文件108的版本(version)、修补文件108的日期码(date code)或任何用以检查微处理器204中的修补文件108的相容性的其他种类信息。微处理器204从PRAM 202读取修补文件108的相容性信息306,且将其与储存在微码只读存储器112或微处理器204的其他非易失性储存器中的相容性信息做比较。当修补文件108的相容性信息306无法符合所存储的相容性信息306时,则修补文件108不是一个良好的修补文件108。微处理器204可执行多次且可能为不同种类的相容性检测。

    在一实施例中,验证信息134包括多个修补文件信息308,多个修补文件信息308指示微处理器204在目前的修补文件108之后载入至少一额外的修补文件108。多个修补文件信息308亦包括指出在外部存储器106中下一个载入的修补文件108的初始地址。

    图4显示在图2所示的修补文件108内的修补文件记录402的方块图。修补文件108包括至少一修补文件记录402,且在修补文件108中每一替代微码指令132对应一个修补文件记录402。修补文件记录402包括一内容可定址存储器(content addressablememory,以下简称CAM)/随机存取存储器(以下简称RAM)旗标404,CAM/RAM旗标404用以指示修补文件记录402提供给修补文件硬件114中的修补文件CAM 504或修补文件RAM 506使用(如图5所示)。修补文件记录402亦包括一替代微码指令(substitute microcode instruction)132,该替代微码指令132包括要替代储存于微码只读存储器112里的微指令或数据的微指令或数据。修补文件记录402亦包括一微指令只读存储器地址408(以下简称为微指令ROM地址),该微指令ROM地址408为将要被替代微码指令132替代的微指令在微码只读存储器112中的地址。同时参考图4与图5,修补文件记录402亦包括一修补文件CAM/RAM地址区域406。在一实施例中,修补文件CAM/RAM地址区域406可为一个或多个地址或地址范围。当CAM/RAM旗标404指到修补文件RAM 506时,则微处理器204将替代微码指令132写入到修补文件CAM/RAM地址区域406所指定的修补文件RAM 506中的一地址。当CAM/RAM旗标404指到修补文件CAM 504时,则微处理器204将微指令ROM地址408和替代微码指令132写入到修补文件CAM/RAM地址区域406所指定的修补文件CAM 504中的一地址。

    图5显示在修补文件记录402和修补文件硬件114间的相互关系的方块图。修补文件108包括图4中的至少一修补文件记录402,修补文件硬件114包括一修补文件CAM 504和修补文件RAM 506,修补文件CAM 504为一内容可定址存储器(content-addressable memory),修补文件CAM 504的每一项(entry)储存微码只读存储器112的地址和相关的替代微码指令132。修补文件RAM 506为一易失性存储器,修补文件RAM 506的每一项储存一替代微码指令132。修补文件RAM 506可被映射至相邻的微码地址空间中的微码只读存储器112,换句话说,修补文件RAM 506的位置被当作在微码地址空间内的微码只读存储器112的延伸。根据以上所描述的CAM/RAM旗标404的状态,所给定的修补文件记录402储存于修补文件CAM 504或修补文件RAM 506的任一个中。在一实施例中,修补文件CAM 504具有32个项,而修补文件RAM 506具有256个项。

    微处理器204产生一提取地址(fetch address)至微码只读存储器112和修补文件RAM 506,以从上述两者之一中提取一微码指令。同时地,修补文件CAM 504查询该提取地址,修补文件CAM 504的每一项可被映射至微码只读存储器112中的任何位置。假如提取地址刚好在修补文件CAM 504中(例如提取地址与在修补文件CAM 504中的有效项(valid entries)之一为相同的),则修补文件CAM 504提供相关的微指令126,且图2中的多工器118选择提供来自修补文件CAM 504的微指令126至执行单元122,而不是选择提供来自微码只读存储器112的原始微码指令124或来自修补文件RAM 506的微指令126。除此之外,当提取地址指定在相关于微码只读存储器112或修补文件RAM 506的地址范围中的位置时,则多工器118选择提供来自微码只读存储器112的原始微码指令124或修补文件RAM 506的微指令126至执行单元122。

    在本发明另一实施例中,在实施第一个修补文件108的替代微码指令132至修补文件硬件114之后,可从外部存储器106载入第二个修补文件108至PRAM 202,然后通过第二个修补文件108的验证信息134判断PRAM 202中的第二个修补文件108是否有效,当PRAM 202中的上述第二个修补文件108为无效时,则不实施第二个修补文件108的替代微码指令132至修补文件硬件中114,并且在微处理器204中设定一错误旗标;当PRAM 202中的第二个修补文件108为有效时,则从PRAM 202实施第二个修补文件108的替代微码指令132至修补文件硬件114中,即,将PRAM 202中第二个修补文件108的替代微码指令132应用至修补文件硬件114中,并且清除在微处理器204中的错误旗标(若在微处理器204中曾设有错误旗标的情形下)。

    图6是根据本发明所述的载入微码修补文件至图2中的微处理器204的方法流程图。载入修补文件108至微处理器204之前,将修补文件108安装或载入至图2中的系统200的外部存储器106中,修补文件108在外部存储器106中被安装为维修程序(maintenance procedure)的一部分,用以修正错误或增加功能至微处理器204。流程图开始于步骤604。

    在步骤604中,专用软件执行至少一指令以命令微处理器204从外部存储器106载入修补文件108。在一实施例中,根据这些指令,微处理器204执行一微码序列(sequence)以载入修补文件108。在一实施例中,系统软件以类似于IA-32Architecture Software Developer’s Manual,Volume 3A的9.11部分所述的程序来读取和写入图2中的MSR 116。在一实施例中,微处理器204根据一微处理器204的重新启动程序(而非专用软件指令)来执行与图6有关的修补文件载入程序,以从外部存储器106的既定位置载入修补文件108。接下来,流程进入步骤606。

    在步骤606中,微处理器204从外部存储器106载入修补文件108至PRAM 202中。在一实施例中,微处理器204从外部存储器106的初始地址载入修补文件108至PRAM 202中,其中外部存储器106的初始地址由MSR 116之一所指定。在一实施例中,通过微处理器204中的临时暂存器(temporary register),微处理器204的微码载入外部存储器106的修补文件108至PRAM 202,亦即,微码载入指令从外部存储器106载入修补文件108的字节(byte)或字(word)至微处理器204的临时暂存器,接着微码储存指令将修补文件108的字节(byte)或字(word)从临时暂存器储存至PRAM 202,然后微码持续执行这些载入/储存操作直到载入完整的修补文件108至PRAM 202中。流程进入步骤608。

    在步骤608中,微处理器204使用图3中的修补文件108的验证信息134来判断PRAM 202中的修补文件108是否有效。流程则进入步骤612。

    在判断步骤612中,根据步骤608中的判断,如果微处理器204判定修补文件108为有效,则流程进入步骤614,若为无效,则进入步骤616。

    在步骤614中,必须完成通过验证信息134运算而执行的所有检查,且微处理器204判定修补文件108为一良好的修补文件,微处理器204从PRAM 202实施修补文件108至修补文件硬件114中,即,微处理器204将PRAM 202中的修补文件108应用至修补文件硬件114中,且回报一良好状态以及清除微处理器204中的错误旗标(若在微处理器204中曾设有错误旗标的情形下)。在一实施例中,回报良好状态包括在微处理器204的暂存器中设定一旗标,其指出修补文件108已成功载入至修补文件硬件114中。在另一实施例中,回报良好状态包括在微处理器204的暂存器中设定第一旗标用以指示已验证的完整性信息、在微处理器204的暂存器中设定第二旗标用以指示已验证的相容性信息,以及在微处理器204的暂存器中设定第三旗标用以指示修补文件108已成功载入至修补文件硬件114中。一旦PRAM 202的修补文件108载入至修补文件硬件114中且回报一良好状态,当提取微码指令时,则微处理器204可使用修补文件108。流程结束于步骤614。

    在步骤616中,完成通过验证信息134而执行的所有检查,且微处理器204判定修补文件108为损坏的修补文件108,因此微处理器204不实施修补文件108至修补文件硬件114中,且微处理器204回报一错误状态。在一实施例中,回报错误状态包括在微处理器204的暂存器中设定一错误旗标,其指出修补文件108未载入至修补文件硬件114中。这可能对避免重写修补文件CAM504且/或修补文件RAM 506中的一良好的修补文件108为有助益的。流程结束于步骤616。

    这里描述了本发明的许多实施例,借着举例方式的呈现让大家可了解,但举例方式并非限制本发明。本领域普通技术人员在不脱离本发明的精神与范围的情形下,可有各种形式上或细节上的修改。例如,软件可实现在这里所描述的装置和方法的功能、制造、模块化、模拟、描述且/或测试,这可通过一般程序语言(例如C、C++)、Verilog HDL、VHDL等硬件描述语言(HDL)或其他有效程序来实现。这样的软件可被配置在任何已知的计算机可使用介质中,例如半导体、磁盘或光盘(例如,CD-ROM,DVD-ROM等)。这里所描述的方法或装置的实施例被包括在半导体知识产权核(semiconductor intellectual propertycore),例如一微处理器核心(利用HDL具体化)以及在整合电路上转换成硬件。此外,这里所描述的方法或装置以硬件和软件的结合具体化实现,因此,本发明不限制在这里所描述的实施例,应该根据权利要求书和其等效物来定义。特别地,本发明执行于使用在一般用途的计算机的微处理器装置上。

    附图中符号的简单说明说明如下:

    100、200:系统

    104、204:微处理器

    106:外部存储器

    108:修补文件

    112:微码只读存储器(微码ROM)

    114:修补文件硬件

    116:特别模块暂存器(MSR)

    118:多工器

    122:执行单元

    124:原始微码指令

    126:微指令

    132:替代微码指令

    134:验证信息

    202:非公开随机存取存储器(PRAM)

    304:完整性信息

    306:相容性信息

    308:多个修补文件信息

    402:修补文件记录

    404:内容可定址存储器/随机存取存储器旗标(CAM/RAM旗标)

    406:修补文件内容可定址存储器/随机存取存储器地址区域(修补文件CAM/RAM地址区域)

    408:微指令只读存储器地址(微指令ROM地址)

    504:修补文件内容可定址存储器(修补文件CAM)

    506:修补文件随机存取存储器(修补文件RAM)。

微处理器以及微处理器微码修补方法.pdf_第1页
第1页 / 共16页
微处理器以及微处理器微码修补方法.pdf_第2页
第2页 / 共16页
微处理器以及微处理器微码修补方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《微处理器以及微处理器微码修补方法.pdf》由会员分享,可在线阅读,更多相关《微处理器以及微处理器微码修补方法.pdf(16页珍藏版)》请在专利查询网上搜索。

一种微处理器以及微处理器微码修补方法,微处理器包括一非公开随机存取存储器,根据原始微码指令和替代微码指令来定址;微处理器亦包括修补文件硬件,当替代微码指令实施至修补文件硬件时,微处理器执行替代微码指令;微处理器用以从外部存储器载入微码修补文件至非公开随机存取存储器,并判断微码修补文件是否有效,当微码修补文件为有效时,从非公开随机存取存储器实施替代微码指令至修补文件硬件,当微码修补文件为无效时,不实。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1