微处理器及其可复写非易失性状态的新值写入方法转让专利

申请号 : CN200910202822.7

文献号 : CN101561796B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·葛兰·亨利泰瑞·派克斯弟尼斯·K·詹

申请人 : 威盛电子股份有限公司

摘要 :

一种微处理器,执行用来寻址可复写非易失性状态的指令,用以使该微处理器将一新值写入该可复写非易失性状态中。多个熔丝,分别由该微处理器读取来判断每一熔丝为已熔断或未熔断,用以响应该微处理器所解码的该指令。布尔逻辑单元,对从该多个熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值。当该新值不同于该目前值时,熔丝熔断装置用以熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该新值。响应于该微处理器所执行的程序且多次执行的该指令,该微处理器可多次读取该多个熔丝、执行布尔运算、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值。

权利要求 :

1.一种微处理器,执行用来寻址可复写非易失性状态的指令,用以使该微处理器将一新值写入该可复写非易失性状态中,该微处理器包括:多个熔丝,分别由该微处理器读取来判断每一熔丝为已熔断或未熔断,用以响应该微处理器所解码的该指令,其中,每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值,其中,该多个熔丝初始为未熔断;

布尔逻辑单元,耦接于该多个熔丝,被配置用以对从该多个熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值;以及熔丝熔断装置,耦接于该多个熔丝,当该新值不同于该可复写非易失性状态的目前值时,被配置用以从该多个熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该指令所指定的新值,其中,响应于该微处理器所执行的程序且多次执行的该指令,该微处理器被配置用以多次读取该多个熔丝、执行布尔运算、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值。

2.根据权利要求1所述的微处理器,还包括:

指令解码器,被配置用以解码该指令;以及

微码单元,可被呼叫以响应解码该指令的该指令解码器,被配置用以:读取该多个熔丝的数值;

指示该布尔逻辑单元对从该多个熔丝所读取的数值执行布尔运算;

决定该可复写非易失性状态的目前值;以及

指示该熔丝熔断装置从该多个熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该指令所指定的新值。

3.根据权利要求1所述的微处理器,其中,每一熔丝为一虚拟熔丝,包括多个实体熔丝,其中,该虚拟熔丝的数值为该虚拟熔丝所包括的每一实体熔丝的读取数值的布尔或运算,若该虚拟熔丝所包括的实体熔丝至少其中之一为已熔断,则该虚拟熔丝为已熔断,若该虚拟熔丝所包括的实体熔丝均不为已熔断,则该虚拟熔丝为未熔断。

4.根据权利要求1所述的微处理器,其中,该布尔逻辑单元对从该多个熔丝所读取的数值执行布尔异或运算,用以决定该可复写非易失性状态的目前值。

5.根据权利要求1所述的微处理器,其中,于熔断该多个熔丝其中之一前,该熔丝熔断装置的充电时间为可配置,该熔丝熔断装置用来熔断该多个熔丝其中之一所需的放电时间为可配置,该微处理器熔断一熔丝的再试次数为可配置。

6.根据权利要求1所述的微处理器,其中,该多个熔丝包括多个第一数据熔丝、及对应于该多个第一数据熔丝的多个第二时钟熔丝,其中,配置该微处理器用以依序熔断该等数据熔丝,以及依序熔断该等时钟熔丝。

7.根据权利要求6所述的微处理器,其中,最近熔断的时钟熔丝所对应数据熔丝的数值为该可复写非易失性状态的目前值。

8.根据权利要求6所述的微处理器,其中,若该新值为第一布尔值,则该熔丝熔断装置依序熔断最近熔断的时钟熔丝所对应数据熔丝,其中,若该新值为第二布尔值,则该熔丝熔断装置依序熔断下一个时钟熔丝。

9.根据权利要求1所述的微处理器,其中,该多个熔丝被群组为多个单元,其中,每一单元包括数据熔丝及指针熔丝,其中,该熔丝熔断装置被配置用以熔断该指针熔丝,用以产生一数值,是指向该多个单元中的一闲置单元,并于该多个单元中,产生连结两个或多个单元的一串行窗体,其中,于连结该两个或多个单元的串行窗体中,该布尔逻辑单元对从该数据熔丝所读取的数值执行布尔运算,用以决定该可复写非易失性状态的目前值。

10.根据权利要求9所述的微处理器,其中,于连结该两个或多个单元的串行窗体中,该布尔逻辑单元对从该数据熔丝所读取的数值执行布尔异或运算,用以决定该可复写非易失性状态的目前值。

11.根据权利要求9所述的微处理器,其中,在该多个单元中第一单元的所有数据熔丝均熔断之后,该熔丝熔断装置被配置用以熔断该指针熔丝,用以产生该数值,是指向该多个单元中的该闲置单元,并于该多个单元中,产生连结两个或多个单元的该串行窗体。

12.根据权利要求1所述的微处理器,其中,响应于一重置,若该微处理器决定将一既定数值写入至该可复写非易失性状态,则该微处理器停止读取及执行外部程序指令。

13.一种可复写非易失性状态的新值写入方法,适用于微处理器,该可复写非易失性状态由该微处理器所执行的指令寻址,该方法包括:通过该微处理器读取多个熔丝来判断每一熔丝为已熔断或未熔断,用以响应该微处理器所解码的该指令,其中,每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值,其中,该多个熔丝初始为未熔断;

利用布尔逻辑单元,对从该多个熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值;

当该新值不同于该可复写非易失性状态的目前值时,利用熔丝熔断装置,从该多个熔丝中熔断至少一个未熔断熔丝,用以将该可复写非易失性状态的目前值改变为该指令所指定的新值;以及响应于该微处理器所执行的程序且多次执行的该指令,多次执行上述读取的步骤、执行布尔运算的步骤、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为一新值的步骤。

14.根据权利要求13所述的方法,还包括:

当需要熔断该多个熔丝中至少一个未熔断熔丝,但是该多个熔丝的未熔断熔丝数量不足以将该可复写非易失性状态的目前值改变为该新值时,向包含该指令的该程序指示该情形。

15.根据权利要求13所述的方法,还包括:

通过指令解码器解码该指令;以及

响应于该指令解码器的解码该指令,呼叫及配置微码单元用以:

读取该多个熔丝的数值;

指示该布尔逻辑单元对从该多个熔丝所读取的数值执行布尔运算;

决定该可复写非易失性状态的目前值;以及

指示该熔丝熔断装置从该多个熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该指令所指定的新值。

16.一种微处理器,具有可复写非易失性状态,包括:

多个熔丝,分别由该微处理器读取来判断每一熔丝为已熔断或未熔断,用以响应检测到既定条件,其中,每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值,其中,该多个熔丝初始为未熔断;

布尔逻辑单元,耦接于该多个熔丝,被配置用以对从该多个熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值;以及熔丝熔断装置,耦接于该多个熔丝,当一新值不同于该可复写非易失性状态的目前值时,被配置用以从该多个熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该新值,其中,响应于检测到既定条件,当该新值多次不同于该可复写非易失性状态的目前值时,该微处理器被配置用以多次读取该多个熔丝、执行布尔运算、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值。

17.根据权利要求16所述的微处理器,还包括:

微码单元,可被呼叫以响应检测到该既定条件,被配置用以:

读取该多个熔丝的数值;

指示该布尔逻辑单元对从该多个熔丝所读取的数值执行布尔运算;

决定该可复写非易失性状态的目前值;以及

指示该熔丝熔断装置从该多个熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该新值。

18.一种可复写非易失性状态的新值写入方法,适用于微处理器,该可复写非易失性状态由该微处理器寻址,该方法包括:通过该微处理器读取多个熔丝来判断每一熔丝为已熔断或未熔断,用以响应检测到一既定条件,其中,每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值,其中,该多个熔丝初始为未熔断;

利用布尔逻辑单元,对从该多个熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值;

当该新值不同于该可复写非易失性状态的目前值时,利用熔丝熔断装置,从该多个熔丝中熔断至少一个未熔断熔丝,用以将该可复写非易失性状态的目前值改变为该新值;以及响应于检测到既定条件,多次执行上述读取的步骤、执行布尔运算的步骤、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值的步骤。

19.根据权利要求18所述的方法,还包括:

响应于检测到该既定条件,呼叫及配置微码单元用以:

读取该多个熔丝的数值;

指示该布尔逻辑单元对从该多个熔丝所读取的数值执行布尔运算;

决定该可复写非易失性状态的目前值;以及

指示该熔丝熔断装置从该多个熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该新值。

20.一种微处理器,执行用来寻址可复写非易失性状态的指令,用以使该微处理器将一新值写入该可复写非易失性状态中,该微处理器包括:多个虚拟熔丝,每一虚拟熔丝包括多个实体熔丝,其中,每一实体熔丝分别由该微处理器读取来判断每一实体熔丝为已熔断或未熔断,用以响应该微处理器所解码的该指令,其中,该微处理器计算该多个实体熔丝的布尔或运算,当该多个实体熔丝至少其中之一被读取为已熔断,用以产生该虚拟熔丝的第一布尔值,而当该多个实体熔丝被读取均不为已熔断时,则产生第二布尔值,其中,该多个实体熔丝初始为未熔断;

多个虚拟位,每一虚拟位包括多个虚拟熔丝,其中,该微处理器计算该多个虚拟熔丝的布尔异或运算,用以产生该虚拟位的数值;以及虚拟字,包括该多个虚拟位,其中,该微处理器被配置用以对从该多个实体熔丝所读取的数值执行布尔运算,用以决定该虚拟字的目前值,比较该虚拟字的每一位及由该指令所写入新值的每一位,以及当该新值不同于该虚拟字的目前值时,从该多个实体熔丝中熔断至少一个未熔断熔丝,以将该虚拟字的目前值改变为该指令所指定的新值。

说明书 :

微处理器及其可复写非易失性状态的新值写入方法

技术领域

[0001] 本发明是有关于微处理器,特别是有关于将非易失性状态储存于一微处理器中。

背景技术

[0002] 已知上,计算机系统包括多种形式的可复写非易失性(non-volatile)存储器,例如:磁带、盘片、互补金属氧化物半导体、电池或闪存。然而,这些资源通常由系统软件管理,像是基本输入输出系统(BIOS)或操作系统,因此并没有办法通过一些应用软件或微处理器作为微处理器内部使用。再者,这些存储器位于系统的微处理器外部。
[0003] 为了提供序号或其它芯片特定信息,微处理器会具备少量的非易失性随机存取存储器(non-volatile random access memory,NVRAM),位于同一封装但不同于该微处理器核心的另一晶粒(die)上。其中,两个晶粒之间是以键线(bond wire)耦接。举例而言,如Lee et al所揭露的美国第5,790,783与5,946,497号专利。然而,此解决方式将增加封装的成本。有另外一种解决方式,可将该非易失性随机存取存储器与该微处理器制造于同一晶粒上,例如可建立于同一微控制器之中。然而,为包括该易失性随机存取存储器,晶粒上需要额外的氧化层,因而亦会增加封装的成本。
[0004] 在许多情况下,微处理器内部具有可通过程序(例如系统软件)进行多次读取及写入的非易失性状态(non-volatile state)是有帮助的。然而,如上所述,在微处理器上制造非易失性随机存取存储器(像是闪存)所费不赀,而且与微处理器相同封装内增加独立的非易失性随机存取存储器亦颇昂贵。更进一步,对于许多应用而言,所需的非易失性状态数量较小。因此,需要一种具有非易失性状态的微处理器,其中上述非易失性状态是可通过系统软件重复写入(re-writable)。

发明内容

[0005] 本发明揭露一种微处理器,用以提供一或多个非易失性状态位,是以多个熔丝实现。每一非易失性位于该微处理器运作时,可利用程控下进行多次写入,且通过程序读取回来,因此,该等熔丝对于程序而言,即为一可复写非易失性状态(re-writeable non-volatile state,RNS)。如此一来,该非易失性位的功能相似于具有允许写入有限次数的闪存。
[0006] 一方面,本发明是揭露一种微处理器,执行用来寻址可复写非易失性状态的指令,用以使该微处理器将一新值写入该可复写非易失性状态中。于该微处理器解码该指令后,多个熔丝,分别由该微处理器读取来判断每一熔丝为已熔断或未熔断。每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值。该等熔丝初始为未熔断。布尔逻辑单元耦接于该等熔丝,被配置用以对从该等熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值。熔丝熔断装置耦接于该等熔丝,当该新值不同于该可复写非易失性状态的目前值时,被配置用以从该等熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该指令所指定的新值。响应于该微处理器所执行的程序且多次执行的该指令,该微处理器被配置用以多次读取该等熔丝、执行布尔运算、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值。
[0007] 另一方面,本发明提供一种可复写非易失性状态的新值写入方法,适用于微处理器,该可复写非易失性状态由该微处理器所执行的指令寻址。该方法包括通过该微处理器读取多个熔丝来判断每一熔丝为已熔断或未熔断,用以响应该微处理器所解码的该指令。每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值。该等熔丝初始为未熔断。该方法亦包括利用布尔逻辑单元,对从该等熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值。该方法亦包括当该新值不同于该可复写非易失性状态的目前值时,利用熔丝熔断装置,从该等熔丝中熔断至少一个未熔断熔丝,用以将该可复写非易失性状态的目前值改变为该指令所指定的新值。该方法亦包括响应于该微处理器所执行的程序且多次执行的该指令,多次执行上述读取的步骤、执行布尔运算的步骤、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为一新值的步骤。
[0008] 另一方面,本发明提供一种微处理器,具有可复写非易失性状态。为响应检测到一既定条件,由该微处理器读取来判断每一熔丝为已熔断或未熔断。每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值。该等熔丝初始为未熔断。布尔逻辑单元耦接于该等熔丝,被配置用以对从该等熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值。熔丝熔断装置耦接于该等熔丝,当一新值不同于该可复写非易失性状态的目前值时,被配置用以从该等熔丝中熔断至少一个未熔断熔丝,以将该可复写非易失性状态的目前值改变为该新值。为响应多次检测到既定条件,当该新值不同于该可复写非易失性状态的目前值时,该微处理器被配置用以多次读取该等熔丝、执行布尔运算、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值。
[0009] 另一方面,本发明提供一种可复写非易失性状态的新值写入方法,适用于一微处理器,该可复写非易失性状态由该微处理器寻址。该方法包括为响应检测到一既定条件,响应检测到一既定条件,通过该微处理器读取多个熔丝来判断每一熔丝为已熔断或未熔断。每一熔丝被读取为已熔断时提供第一布尔值,而被读取为未熔断时提供第二布尔值。该等熔丝初始为未熔断。该方法亦包括利用布尔逻辑单元,对从该等熔丝所读取的数值执行布尔运算,以决定该可复写非易失性状态的目前值。该方法亦包括当该新值不同于该可复写非易失性状态的目前值时,利用熔丝熔断装置,从该等熔丝中熔断至少一个未熔断熔丝,用以将该可复写非易失性状态的目前值改变为该新值。该方法亦包括为回应多次检测到既定条件,多次执行上述读取的步骤、执行布尔运算的步骤、以及熔断至少一个未熔断熔丝以将该可复写非易失性状态的目前值改变为该新值的步骤。
[0010] 另一方面,本发明提供一种微处理器,执行用来寻址可复写非易失性状态的指令,用以使该微处理器将一新值写入该可复写非易失性状态中。该微处理器包括多个虚拟熔丝,每一虚拟熔丝包括多个实体熔丝。每一实体熔丝分别由该微处理器读取来判断每一实体熔丝为已熔断或未熔断。该微处理器计算该等实体熔丝的布尔或运算,当该等实体熔丝至少其中之一被读取为已熔断,用以产生该虚拟熔丝的第一布尔值,而当该等实体熔丝被读取均不为已熔断时,则产生第二布尔值。该等实体熔丝初始为未熔断。该微处理器包括多个虚拟位,每一虚拟位包括多个虚拟熔丝。该微处理器计算该等虚拟熔丝的布尔异或运算,用以产生该虚拟位的数值。该微处理器被配置用以对从该等实体熔丝所读取的数值执行布尔运算,用以决定该虚拟字的目前值,比较该虚拟字的每一位及由该指令所写入新值的每一位,以及当该新值不同于该虚拟字的目前值时,从该等实体熔丝中熔断至少一个未熔断熔丝,以将该虚拟字的目前值改变为该指令所指定的新值。
[0011] 本发明所揭露的微处理器,具有以熔丝实现的可复写非易失性状态,成本远低于将闪存制造于微处理器芯片上的成本,以及与微处理器处同一封装内但位于另一晶粒的闪存。另一项优点为微处理器封装外,并不需要容易成为安全漏洞的外部非易失性随机存取存储器,例如:从一印刷电路板解焊、重新编程并重焊回印刷电路板上。另一方面,于微处理器内部中,利用熔丝实现的可复写非易失性状态,在微处理器读取及执行任一程序码之前,将有助于微处理器存取以熔丝实现的状态,用以判断微处理器是否需进入一降级效能状态,甚至通过完全限制读取及执行外部程序码,使微处理器本身除能(disable)。
[0012] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附图示,详细说明如下。

附图说明

[0013] 图1是显示依据本发明的一微处理器方块图。
[0014] 图2是显示图1的熔丝模块方块图。
[0015] 图3是显示于图2的实体熔丝模块中,包括多个实体熔丝(PF)的一虚拟熔丝(VF)示意方块图。
[0016] 图4是显示于图3中,包括多个虚拟熔丝(VF)的一虚拟位(VB)示意方块图。
[0017] 图5a及5b是显示由FERNS特征所提供的编程接口数据类型方块图。
[0018] 图6是显示于图1的该等熔丝模块中,配置该等实体熔丝的一固定架构实施例所提供一FERNS子系统方块图。
[0019] 图7是显示于图2中,实体熔丝模块的接口方块图。
[0020] 图8是显示于特定模块寄存器(MSR)地址空间的FERNS范围内,微处理器于一位置执行WRMSR指令的操作流程图。
[0021] 图9是显示依据本发明的另一实施例,将虚拟熔丝(VF)配置至一FERNS虚拟位(VB)的一固定架构方块图。
[0022] 图10a是显示依据图9固定配置架构的第一实施例的操作时序图。
[0023] 图10b是显示依据图9固定配置架构的第二实施例的操作时序图。
[0024] 图11是显示利用图9及10b的实施例,于特定模块寄存器(MSR)地址空间的FERNS范围内,微处理器于一位置执行WRMSR指令的操作流程图。
[0025] 图12是显示依据本发明实施例,配置该等虚拟熔丝(VF)302的可变架构方块图,用以提供一FERNS子系统。
[0026] 图13a及13b是显示利用图12可变虚拟熔丝(VF)302配置架构的微处理器操作方块图。
[0027] 图14是显于特定模块寄存器(MSR)地址空间的FERNS范围内,微处理器于一位置执行RDMSR指令的操作流程图。
[0028] [主要元件标号说明]
[0029] 100~微处理器; 102~指令高速缓存;
[0030] 104~指令解码器; 106~微码只读存储器;
[0031] 108~通用寄存器; 112~执行单元;
[0032] 114~熔丝模块; 116~熔丝熔断装置;
[0033] 204~实体熔丝模块;
[0034] 202、PF~实体熔丝;
[0035] 302、VF~虚拟熔丝;
[0036] 402、VB~虚拟位;
[0037] 502、V-byte~虚拟字节;
[0038] 504、V-qword~虚拟四字组;
[0039] 304~布尔或运算; 404~布尔异或运算;
[0040] 706~控制寄存器; 704~与门;
[0041] 904~数据虚拟熔丝; 908~时钟虚拟熔丝;
[0042] 912~时钟-数据对; 1202~单元;
[0043] 1204~数据虚拟熔丝; 1206~指针虚拟熔丝;
[0044] 1304~根单元;以及
[0045] 1312、1312a、1312b~扩充单元。

具体实施方式

[0046] 参考图1,是显示依据本发明的微处理器100方块图。如图所示,该微处理器100包括指令高速缓存102、指令解码器104、微码只读存储器106、通用寄存器(general purpose)108与执行单元112,以及其它未显示的功能性单元。除此之外,该微处理器100包括熔丝模块114、以及耦接于该熔丝模块114的熔丝熔断装置116,能够分别寻址与熔断该熔丝模块114内的每一熔丝。该微处理器100的执行单元112提供写入地址及写入数据给该熔丝熔断装置116,而该熔丝熔断装置116将该写入地址及写入数据缓冲于该熔丝模块
114。该熔丝熔断装置116亦将一充电输出提供至该熔丝模块114,用以熔断熔丝。由该熔丝模块114将读取数据传送给该执行单元112,用以响应该执行单元112传送至该熔丝模块
114的一读取地址。于此实施例中,该熔丝模块114及该熔丝熔断装置116用以将利用熔丝实现的可复写非易失性状态(fuse-embodied re-writable non-volatile state,FERNS),供给该微处理器100上所执行的程序使用。
[0047] 该熔丝模块114的熔丝是与存储器单元有所区别。虽然一熔丝与一存储器单元均可储存一个二进制状态,不过一熔丝与一存储器单元相异处在于,一熔丝从一预设状态(未熔断,意即导电中)改变至另一状态后(已熔断,意即未导电),该熔丝无法回复至该预设状态(由已熔断至未熔断)。相对地,一存储器单元可于一预设状态及另一状态间切换,并多次回复至该预设状态。举例来讲,可抹除可编程只读存储器(erasable programmable read onlymemory,EPROM)或 电子 可 抹 除可 编 程只 读 存 储器 (electronically erasableprogrammable read only memory,EEPROM)单元可从一预设状态改变至另一状态,然后同一个实体单元可通过紫外线或电场再各自回复至该预设状态,因此,从预设到另一状态再到预设这样的状态循环可以多次执行。相反地,一实体熔丝一旦被熔断,那同样的熔丝无法为未熔断。依据熔丝内部的连接与熔丝的设计,一已熔断的熔丝可被读取为二进制的“0”或二进制的“1”,则一未熔断的熔丝可分别被读取为二进制的“1”或“0”。
[0048] 该指令高速缓存102快速存取(cache)程序的指令。于一实施例中,该程序指令包括具有WRMSR及RDMSR指令的x86结构指令,用以读写该微处理器100的特定模块寄存器(model specific register,MSR)。于该特定模块寄存器中,该WRMSR及RDMSR指令通过ECX寄存器指定该特定模块寄存器地址空间内用来写入或读取的地址。如此一来,该WRMSR及RDMSR指令使用它们自己的地址空间(于此为特定模块寄存器的地址空间)。于一实施例中,FERNS于特定模块寄存器的地址空间中占一地址范围。
[0049] 通过EDX:EAX寄存器的WRMSR指令,该程序加载欲写入寻址特定模块寄存器的数据,并通过EDX:EAX寄存器的RDMSR指令,接收从寻址特定模块寄存器所读取的数据。该指令解码器104对从该指令高速缓存102所撷取的程序指令进行解码。特别是当该指令解码器104处理到一WRMSR或RDMSR指令时,则呼叫该微码只读存储器106的一微码例程(routine)执行该指令。于此实施例中,若该WRMSR或RDMSR指令于FERNS地址范围内寻址一特定模块寄存器,则该微码例程执行读取以及/或者熔断该等熔丝114的步骤,并使该执行单元112读取该等熔丝114的数值。于一实施例中,于FERNS地址范围内指定一地址的WRMSR指令,与已知的WRMSR指令些许差异处在于,若该微处理器100并没有成功执行该指令,像是该熔丝模块114中没有可以用来更新FERNS新值而进行熔断的熔丝,则前者的WRMSR指令产生一例外(exception)(例如:x86机器检查例外,#MC)。
[0050] 于一实施例中,该熔丝熔断装置116为电荷泵(charge pump),用以累加电容上的电荷,并将足以熔断熔丝的电荷释放至熔丝输入端。然而,需注意的是,该熔丝熔断装置包含该处理器内部其它能够熔断熔丝的实施方式。
[0051] 于另一实施例中,响应于检测到一既定条件或事件,该微处理器100自己更新FERNS,而不是由一程序指令写入。举例而言,该微处理器100可持续监视一内部条件,诸如微处理器100的芯片温度,或者一错误次数,像是一存储器错误次数,而当温度或错误次数超过一临界值时,该微处理器100熔断FERNS的一或多个熔丝,用以更新FERNS的数值,或许是增加FERNS的数值。以此方式,则FERNS的功能为一非易失性计数器,用以储存超过临界值的次数。若该非易失性计数超过一既定临界值,该微处理器100可采取一适当措施,例如传送消息、或者将该微处理器100全部或部分除能。
[0052] 参考图2,是显示图1的熔丝模块114方块图。于图2的实施例中,该微处理器100包括64个实体熔丝模块204,每一实体熔丝模块204具有64个实体熔丝(physical fuse,PF)202,而每一实体熔丝(PF)202可由该熔丝熔断装置116各自熔断。于一实施例中,一微指令能够由实体熔丝模块204读取所有64个实体熔丝202的数值,然后将该数值写入至该微处理器100的临时寄存器(temporary register)中,用以供其它微码指令操作。图7详细说明该等实体熔丝模块204的接口。在功能性单元的布局处理完之后,可将该等实体熔丝202放置于芯片脚位的未使用空间中,就集成电路的芯片面积而言,成本相对地较少。于一实施例中,当该微处理器100所读取的未熔断实体熔丝的数值为二进制的0时,此即为默认值,而当该微处理器100读取一已熔断实体熔丝时,其值则为另一数值,即为二进制的1。
[0053] 参考图3,是显示于图2的实体熔丝模块204中,包括多个实体熔丝(PF)202的一虚拟熔丝(virtual fuse,VF)302示意方块图。熔断该等实体熔丝(PF)202也许相对不可靠。因此,依据一实施例,万一实体熔丝202的熔断不成功时,可利用虚拟熔丝(VF)302合并多余的实体熔丝202。虚拟熔丝302的数值,为该虚拟熔丝302相关的该等实体熔丝202所读取数值的布尔逻辑或运算(Boolean OR)304。于一实施例中,该逻辑或运算由处理器的硬件执行。于另一实施例中,该逻辑或运算由微码指令执行。意即,首先该微码先将一或多个实体熔丝模块204的实体熔丝202的数值读取至一临时寄存器中。接下来,该微码对相关于该虚拟熔丝302的该等实体熔丝202数值进行逻辑或运算,用以产生该虚拟熔丝302的数值。由于一实体熔丝202的默认值为二进制的0,因此虚拟熔丝302的默认值为二进制的0。于一实施例中,当该微处理器100欲“熔断”虚拟熔丝302时,该微处理器100实际上熔断所有与该虚拟熔丝302相关的实体熔丝202。如此一来,由于与该虚拟熔丝302相关的实体熔丝202的布尔或运算,只要成功熔断至少一个实体熔丝202,则可正确读取该虚拟熔丝302的数值(例如:二进制的1)。
[0054] 于一实施例中,当该微处理器100欲熔断虚拟熔丝302时,便指示该熔丝熔断装置116依序熔断该等实体熔丝202,用以产生虚拟熔丝302。于另一实施例中,该微处理器100指示该熔丝熔断装置116同时熔断该等实体熔丝202,用以产生虚拟熔丝302。于一实施例中,该微处理器100仅熔断单一个实体熔丝202,然后再确认该实体熔丝202是否已成功熔断,而非熔断所有实体熔丝202来产生虚拟熔丝302。若已成功熔断,则该微处理器100毋需熔断虚拟熔丝302所剩余的实体熔丝202;否则,该微处理器100会试图熔断虚拟熔丝
302的下一个实体熔丝202,并且重复该流程直到确认一实体熔丝202已成功熔断为止。相较于该微处理器100完全熔断虚拟熔丝302的所有实体熔丝202,此实施例具有更快速且耗电量较少的优点。
[0055] 参考图4,是显示于图3中,包括多个虚拟熔丝(VF)302的虚拟位(virtualbit,VB)402示意方块图。该虚拟位(VB)402具备FERNS的可复写特性。虚拟位402的数值,为该虚拟位402相关的该等虚拟熔丝302所读取数值的布尔逻辑异或运算(Boolean XOR)404。于一实施例中,该逻辑异或运算由硬件执行。于另一实施例中,该逻辑异或运算由微码指令执行。意即,该微码将该虚拟位402相关的该等虚拟熔丝302的数值进行布尔异或运算,用以产生该虚拟位402的数值。因此,一虚拟位402的默认值为二进制的0。当一程序指令指示该微处理器100将一个二进制数值写入至一虚拟位402时,该微处理器100首先读取该虚拟位402,用以判断目前值是否不同于欲写入的数值。若不相同,则该微处理器100将与该虚拟位402相关的下一个未熔断虚拟熔丝302熔断,用以切换(toggle)其数值。由于异或运算的特性,此操作将会切换该虚拟位402的数值。若目前的数值与欲写入的数值相同,则该微处理器100不熔断任何实体熔丝202。当不必要时不熔断该等实体熔丝202,该等实体熔丝202便可被保留下来,而可增加一FERNS虚拟位(VB)402的写入次数。对于FERNS而言,一虚拟位(VB)402的一写入(例如:WRMSR指令于该特定模块寄存器地址空间的FERNS范围中指定一地址、或是由该微处理器100本身内部所开始的写入,用以响应检测到事件或既定条件),需要改变其位值(意即,将“1”写入至目前具有“0”值的FERNS的一位中、或者将“0”写入至目前具有“1”值的FERNS的一位中),于此称为一切换写入(togglingwrite)。由此可知,通过切换写入,该虚拟位402的写入次数与相关于虚拟位402的该等虚拟熔丝302的数量相等(或者,于可变配置的情况下,如图12及13的实施例,数据虚拟熔丝1204的数量是与一虚拟位402相关)。以下将说明与一虚拟位402相关的虚拟熔丝302的数量可为固定、或者可变。
[0056] 参考图5a及5b,是显示由FERNS特征所提供的编程接口数据类型方块图。图4的虚拟位402,于程序所提供的FERNS数据类型中,为基本的构建区块(building block)。根据不同的实施例,FERNS可提供编程(program)单一虚拟位402(如图4所示),以及/或者多个虚拟位402,举例来讲,像是由8个虚拟位402所形成的一虚拟字节(V-byte,如图5a所示)502、由16个虚拟位402所形成的一虚拟字(V-word,未图标)、由32个虚拟位402所形成的一虚拟双字(V-dword,未图标)、以及由64个虚拟位402所形成的一虚拟四字组(V-qword,如图5b的504所示)。然而,需注意的是,如果需要的话,可使用任意数量的虚拟位402来建构FERNS的编程接口。举例来讲,对于编程接口所提供的一虚拟字节(V-byte)502数据类型而言,由该8个虚拟位所读取的数值可以二进制编码,用以表示从0至256的一无号(unsigned)十进制数值,或者从-128至127的一有号(signed)十进制数值。
[0057] 有一些可配置参数是与FERNS子系统相关。其一为组成一虚拟熔丝(VF)302的实体熔丝(PF)202的数量,将影响熔断一虚拟熔丝302的可靠度。其二为组成一虚拟位(VB)402的虚拟熔丝302的数量,将影响一虚拟位402的可复写次数。其三为该熔丝熔断装置116(例如电荷泵)欲熔断一实体熔丝202前的充电时间,这将影响到熔断一实体熔丝202的可靠度。其四为当该实体熔丝202进行熔断时,允许该熔丝熔断装置116对该实体熔丝202输入端进行放电的时间,此亦将影响到熔断一实体熔丝202的可靠度。其五为熔断实体熔丝202的最大重试次数。其六为该微处理器100每一次想要熔断的实体熔丝202的最大数量。
[0058] 该等实体熔丝202的一特性为,若一实体熔丝202被读取为已熔断,则它已被熔断,也就是,其二进制的数值已被改变。换句话说,若一实体熔丝202显示为未熔断,则该微处理器100可以熔断或不熔断该实体熔丝202。进一步,随后于另一时间读取该实体熔丝202时则可能为已熔断。于上述的实施例中,与一虚拟熔丝302相关的实体熔丝202数量并非固定,为可变的。意味着每次需要切换一虚拟熔丝302时,该微处理器100试着熔断与该虚拟熔丝302相关的一实体熔丝202。若该单一实体熔丝202的熔断被确认为成功,则完成该操作;然而,若该单一实体熔丝202的熔断未被确认为成功(在重试可配置次数之后),该微处理器100配置另一实体熔丝202,用以联结(associate with)该虚拟熔丝302,并试图熔断该新配置的实体熔丝202。
[0059] 参考图6,是显示于图1的该熔丝模块114中,配置该等实体熔丝(PF)202的一固定架构实施例所提供一FERNS子系统方块图。每一虚拟熔丝(VF)302由固定数量的实体熔丝202组成,且每一虚拟位(VB)402由固定数量的虚拟熔丝302组成。特别是每一虚拟熔丝302是由2个实体熔丝202组成,而每一虚拟位402由32个虚拟熔丝302组成,因此允许每一虚拟位402进行32次的切换写入。如图所示,总共有2048个虚拟熔丝302。于图6的实施例中,将实体熔丝模块0的实体熔丝PF[0]与实体熔丝模块1的实体熔丝PF[0]进行布尔或运算,用以产生虚拟熔丝VF[0];将实体熔丝模块2的实体熔丝PF[0]与实体熔丝模块3的实体熔丝PF[0]进行布尔或运算,用以产生虚拟熔丝VF[1];以此类推到将实体熔丝模块62的实体熔丝PF[0]与实体熔丝模块63的实体熔丝PF[0]进行布尔或运算,用以产生虚拟熔丝VF[31];持续此操作将实体熔丝模块0的实体熔丝PF[63]与实体熔丝模块1的实体熔丝PF[63]进行布尔或运算,用以产生虚拟熔丝VF[2016];将实体熔丝模块2的实体熔丝PF[63]与实体熔丝模块3的实体熔丝PF[63]进行布尔或运算,用以产生虚拟熔丝VF[2017];并以此类推将实体熔丝模块62的实体熔丝PF[63]与实体熔丝模块63的实体熔丝PF[63]进行布尔或运算,用以产生虚拟熔丝VF[2047]。虚拟位VB[0]为VF[31:0]的布尔异或运算;VB[1]为VF[63:32]的布尔异或运算;并以此类推至VB[63],为VF[2047:2016]的布尔异或运算。因此,于图6的实施例中,2048个虚拟熔丝(VF)302是由4096个实体熔丝(PF)202所提供,并进一步提供了64个虚拟位(VB)402。相对于其它架构而言,由于微码所需为相对少量的移位操作,于图6的实施例中,实体熔丝202与虚拟熔丝302的分组特别有助于微码的执行。然而,根据该编程接口所表示的64个虚拟位402,此实施例需要读取全部64个实体熔丝模块204,相对而言会比其它实施例多(如下所述)。当可考虑实体熔丝202与虚拟熔丝302的其它分类方式。举例而言,于一实例中,一熔丝模块114内部的相邻实体熔丝202进行布尔或运算,用以产生虚拟熔丝302,而一熔丝模块114内部的该等虚拟熔丝302进行布尔异或运算,用以产生一虚拟位402。此实施例具有读取熔丝模块114次数较少的优点(取决于所表示的编程接口),但相对地需要较多的移位操作,用以执行布尔或运算及布尔异或运算。
[0060] 于图6中,64个虚拟位402所表示的编程界面是以各种的实施方式加以考虑。举例来讲,该微处理器100可将该64个虚拟位402作为具有64位宽度的单一特定模块寄存器;2个具有32位宽度的特定模块寄存器;4个具有16位宽度的特定模块寄存器;8个具有8位宽度的特定模块寄存器;或者,64个单一位的特定模块寄存器。无论如何,每一个特定模块寄存器可进行32次的切换写入。于其它实施例中,该微处理器100可将该64个虚拟位402作为具有不同宽度及数据类型的特定模块寄存器的组合。
[0061] 参考图7,是显示于图2中,实体熔丝模块204的接口方块图。每一个实体熔丝202的输入端,连接于一与门704的输出端,该与门704具有两个输入端。当一实体熔丝202被读取时,将该熔丝熔断装置116的输出端接地。当一实体熔丝202被写入时,该与门704的一输入端,接收图1的熔丝熔断装置116的输出。该与门704的另一输入端,接收一控制寄存器706的一位。该控制寄存器706具有一实体熔丝模块204的宽度,而该与门704所接收的该位为该控制寄存器706的位,其是对应于该实体熔丝模块204内部中该实体熔丝202的位位置。因此,当该实体熔丝202被写入时,即进行熔断时,对应于欲熔断的该实体熔丝202,通过将二进制的1写入至该控制寄存器706的一特定位,微码可于一实体熔丝模块204内选择特定实体熔丝202进行熔断。
[0062] 于一实施例中,该微处理器100亦包括其它可写的控制寄存器,其由微码控制写入以控制选择逻辑单元(selection logic)使微码选择哪些实体熔丝模块204将被读取或进行写入。除此之外,该微处理器100包括一可写的控制寄存器,由微码控制该熔丝熔断装置116的充电,以及该熔丝熔断装置116所累积电荷的释放,用以熔断一实体熔丝202。因此,通过写入该控制寄存器,微码可单独熔断任一实体熔丝202,并能够读取整个实体熔丝模块204。于其它实施例中,若该熔丝熔断装置116的电量足够,微码将二进制的1写入至该控制寄存器706的多个位中,即可对该实体熔丝202进行多次熔断。于一实施例中,该控制寄存器使用一序列扫描机制,例如:一JTAG机制。
[0063] 参考图8,是显示于特定模块寄存器(MSR)地址空间的FERNS范围内,微处理器100于一位置执行一WRMSR指令的操作流程图。于图8的说明中,假设程序是以一虚拟字节(V-byte)502的数据类型表示之,也就是说,于FERNS范围的一地址进行存取的每一个WRMSR指令,是存取单一字节的数据。流程始于步骤802。
[0064] 于步骤802中,该微处理器100从该指令高速缓存102撷取一WRMSR指令,而该指令解码器104解码该WRMSR指令并呼叫该WRMSR微码例程。在一实施例中,该指令解码器104解码该WRMSR指令至一特定模块寄存器地址空间的FERNS范围内的一虚拟字节位置。
流程进行至步骤804。
[0065] 于步骤804中,WRMSR微码例程读取与特定FERNS虚拟字节相关的实体熔丝模块,并执行所需的布尔或运算及布尔异或运算,以决定该虚拟字节的目前值。于该特定模块寄存器地址空间的FERNS范围内,该WRMSR微码例程决定该特定模块寄存器地址(指定于ECX寄存器中)所指定的一位置,并适当地对该控制寄存器进行写入,用以读取一或多个实体熔丝模块204,实体熔丝模块204包括与FERNS的虚拟字节(V-byte)502相关的实体熔丝202。该WRMSR微码例程随即执行必要的布尔或运算操作,用以产生该虚拟熔丝302的数值,是相关于该特定模块寄存器地址所指定的虚拟字节502。该WRMSR微码例程接着执行必要的布尔异或运算操作,用以产生该虚拟字节502的虚拟位402,以决定该虚拟字节502的目前值。流程进行至步骤806。
[0066] 于步骤806中,该WRMSR微码例程比较虚拟字节502的目前值及由WRMSR指令所指定的欲写入数值,意即,EDX:EAX寄存器的低字节所指定的数值。若任一位不相同,则该微码例程对该控制寄存器进行适当的写入操作,将每一不相同位的下一个可取得虚拟熔丝302(例如:未熔断)相关联的实体熔丝202熔断,用以于该虚拟字节502中,切换(toggle)相关的不相同虚拟位402。该微码允许该熔丝熔断装置116充电一段时间,上述充电时间是由一相关可配置数值指定,该微码并允许该熔丝熔断装置116对实体熔丝202输入端放电一段时间,上述放电时间是由该相关可配置数值指定。于一实施例中,该微处理器100能够在多种操作电压电平(通常称为P-state状态)下进行操作。在熔断实体熔丝202之前,将该微处理器100转移至最高的P-state状态(意即,最高的操作电压电平),用以于该熔丝熔断装置116欲熔断实体熔丝202时,减少为了累积足够电荷所需的时间。在实体熔丝
202被熔断之后,该微处理器100回复至先前的P-state状态。流程进行至步骤808。
[0067] 于步骤808中,该WRMSR微码例程再次读取该虚拟位502的值,并与新值比较,用以判断是否成功写入该新值,若该熔断未成功,重试一实体熔丝202的熔断操作至一可配置重试次数。流程于步骤808结束。
[0068] 参考图9,是显示依据本发明的另一实施例,将虚拟熔丝(VF)302配置至一FERNS虚拟位(VB)402的一固定架构方块图。该等虚拟熔丝302分为两组:第一组为数据虚拟熔丝904,而第二组为时钟虚拟熔丝908。数据虚拟熔丝904的数量与时钟虚拟熔丝908的数量相同。在同一位置的一数据虚拟熔丝904与一时钟虚拟熔丝908组成一时钟-数据对912。于图9的实施例中,由0到31的32个时钟-数据对912组成一虚拟位402。根据图
9的时钟-数据实施例,于一时钟-数据对912中,数据虚拟熔丝904的数值用以表示虚拟位402的目前值,且根据图10a另一实施例的时钟-数据对912,时钟虚拟熔丝908为最后连续未熔断的时钟虚拟熔丝908(或者,根据图10b的另一实施例,为已熔断的时钟虚拟熔丝908),用以组成虚拟位402。图9实施例的优点在于,该虚拟位402的数值直接由单一虚拟熔丝302表示,因此,该微处理器100不需对多个虚拟熔丝302执行布尔异或运算,如图6实施例所示用以产生该虚拟位402的数值所需的操作。不过,该微处理器100需要判断最后连续未熔断的时钟虚拟熔丝908(或者,根据图10b的另一实施例,判断已熔断的时钟虚拟熔丝908)。于一些实施例中,如下所述,该虚拟位402的切换写入次数,可与组成该虚拟位402的该等虚拟熔丝302的数量相等。于图9的实施例中,因此该虚拟位402切换写入的次数可达64次,而于图10a及10b的实施例中,该虚拟位402切换写入的次数可达6次。
依据其它实施例,该虚拟位402切换写入的次数可以相等于组成该虚拟位402的该等虚拟熔丝302的数量,是说明如下。于图9的实施例中,因此该虚拟位402切换写入的次数可达
63次,而于图10a及10b的实施例中,该虚拟位402切换写入的次数可达5次。
[0069] 参考图10a,是显示依据图9固定配置架构的第一实施例的操作时序图。该时序图包括由0到5所示的6个时序。时序0至5仅表示时序点,而非用以表示每一时序之间所存在的一段固定时间。更确切地说,所显示的每一个不同时序,是表示所组成的该虚拟位402中的一改变,用以响应于一切换写入。如图所示,对每一时间槽来讲,每一时钟虚拟熔丝
908与数据虚拟熔丝904的状态(已熔断-“B”或未熔断-“U”),和该二进制虚拟位402的数值一样。于此实施例中,该微处理器100将时钟-数据对912中,由位置0开始依序熔断该等虚拟熔丝302,直到位置31为止。然而,为简化说明,图10a仅显示3个时钟虚拟熔丝908及3个数据虚拟熔丝904,是对应于图9时钟-数据对912的位置0-2,并假设所有其它虚拟熔丝302(意味着从位置3至31)的状态为未熔断。
[0070] 于初始制造(initially fabricated)时,意即,当时序为0(time=0)时,所有虚拟熔丝302为未熔断。于图10a的实施例中,于一时钟-数据对912中,数据虚拟熔丝904的数值用以表示虚拟位402的目前值,而时钟虚拟熔丝908为最后连续未熔断的时钟虚拟熔丝908。(相对于图10b的实施例,于时钟-数据对912中,数据虚拟熔丝904的数值用以表示虚拟位402的目前值,而时钟虚拟熔丝908为最后连续已熔断的时钟虚拟熔丝908。)也就是说,该微处理器100对该等时钟虚拟熔丝908进行扫描,从位置0开始,直到找出一未熔断的时钟虚拟熔丝908,然后读取该时钟-数据对912的数据虚拟熔丝904的数值,用以作为该虚拟位402的数值。参考图10a的实施例,于时序为0(time=0)时,最后连续未熔断的时钟虚拟熔丝908是位于位置0,则位置0的数据虚拟熔丝904用以表示该虚拟位402的目前状态。于此实施例中,所选择位置上的数据虚拟熔丝904为未熔断,因此,该虚拟位402的数值为0。
[0071] 一指令随后请求将“1”写入至该虚拟位402的状态。回应于上述请求,当时序为1(time=1)时,该熔丝熔断装置116熔断位置0的数据虚拟熔丝904(VF[0]),也将该虚拟位402的数值改变为1。之后,一指令请求将“0”写入至该虚拟位402的状态。回应于上述请求,当时序为2(time=2)时,该熔丝熔断装置116熔断位置0的时钟虚拟熔丝908(VF[0]),也将该虚拟位402的数值改变为0。从位置0开始,找出最后连续未熔断的时钟虚拟熔丝908后,如上所述,所对应时钟-数据对912的数据虚拟熔丝904的数值即为该虚拟位402。当时序为2(time=2)时,由于位置0的时钟虚拟熔丝908为已熔断,而位置
1的时钟虚拟熔丝908为未熔断,则位置1的数据虚拟熔丝904的数值,即为该虚拟位402的数值。因为位置1的数据虚拟熔丝904为未熔断,程序所读取的该虚拟位402将为0。
[0072] 接下来,一指令请求将“1”写入至该虚拟位402的状态。回应于上述请求,当时序为3(time=3)时,该熔丝熔断装置116熔断位置1(VF[1])的数据虚拟熔丝904,将该虚拟位402的数值改变为1。以此方式继续进行熔丝熔断,分别如时序4及5所示,直到没有其它时钟-数据对912可用来改变该虚拟位402的所请求的状态为止,此时,便利用一例外(exception)或其它条件(condition)来通知处理器。
[0073] 参考图10b,是显示依据图9固定配置架构的第二实施例的操作时序图。图10b所示的操作时序图类似于图10a所示的操作时序图。然而,于图10b的实施例中,时钟-数据对912的数据虚拟熔丝904的数值用来表示该虚拟位402的目前值,其时钟虚拟熔丝908为最后连续已熔断的时钟虚拟熔丝908。意即,该微处理器100对该等时钟虚拟熔丝908进行扫描,从位置0开始,直到找出一已熔断的时钟虚拟熔丝908,然后读取该时钟-数据对912的数据虚拟熔丝904的数值,用以作为该虚拟位402的数值。参考图10b的实施例,于时序为0(time=0)时,最后连续已熔断的时钟虚拟熔丝908是位于位置0,则位置0的数据虚拟熔丝904用以表示该虚拟位402的目前状态。于此实施例中,所选择位置上的数据虚拟熔丝904为未熔断,因此,该虚拟位402的数值为0。
[0074] 由于所有虚拟熔丝302初始为未熔断,为使图10b的实施例正确操作,在程序尝试对该虚拟位402进行第一次写入操作前,需熔断位置0的时钟虚拟熔丝908。依据一实施例,于制造时,位置0的时钟虚拟熔丝为已熔断。或者,于制造后,该微处理器100检测该初始条件,并将熔断位置0的时钟虚拟熔丝908作为第1个开机(power-up)程序。因此,于图10b中,当时序为0(time=0)时,位置0的时钟虚拟熔丝908(VF[0])为已熔断,而其它虚拟熔丝302为未熔断。时序为0时,由于最后连续已熔断的时钟虚拟熔丝908位于位置0上,因此位置0的数据虚拟熔丝904为该虚拟位402的目前状态。于此实施例中,因为所选择位置上的数据虚拟熔丝904为未熔断,因此,该虚拟位402的数值为0。
[0075] 之后,一指令请求将“1”写入至该虚拟位402的状态。回应于上述请求,当时序为1(time=1)时,该熔丝熔断装置116熔断位置0的数据虚拟熔丝904(VF[0]),该虚拟位402的数值被改变为1。一指令接着请求将“0”写入至该虚拟位402的状态。回应于上述请求,当时序为2(time=2)时,该熔丝熔断装置116熔断位置1的时钟虚拟熔丝908(VF[1]),该虚拟位402的数值被改变为0。从位置0开始,找出最后连续已熔断的时钟虚拟熔丝908后,如前所述,所对应时钟-数据对912的数据虚拟熔丝904的数值即为该虚拟位402。由于位置0的时钟虚拟熔丝908为已熔断,而位置1的时钟虚拟熔丝908为已熔断,因此位置
1的数据虚拟熔丝904的数值,即为该虚拟位402的数值。因为位置1的数据虚拟熔丝904为未熔断,程序所读取的该虚拟位402将为0。
[0076] 接下来,一指令请求将“1”写入至该虚拟位402的状态。回应于上述请求,当时序为3(time=3)时,该熔丝熔断装置116熔断位置1(VF[1])的数据虚拟熔丝904,将该虚拟位402的数值改变为1。以此方式继续进行熔丝熔断,分别如时序4及5所示,直到没有其它时钟-数据对912可用来改变该虚拟位402的所请求的状态为止,此时,便利用一例外或其它条件来通知处理器。
[0077] 参考图11,是显示利用图9及10b的实施例,于特定模块寄存器(MSR)地址空间的FERNS范围内,该微处理器100于一位置执行一WRMSR指令的操作流程图。意即,于一时钟-数据对912中,其时钟虚拟熔丝908为最后连续已熔断的时钟虚拟熔丝908,而其数据虚拟熔丝904的数值用以表示一虚拟位402的目前值。于图11的说明中,假设程序是以一虚拟字节(V-byte)502的数据类型表示之,意即,于FERNS范围的一地址进行存取的每一个WRMSR指令,系存取单一字节的数据。流程始于步骤1102。
[0078] 于步骤1102中,该微处理器100从该指令高速缓存102撷取一WRMSR指令,而该指令解码器104解码该WRMSR指令并呼叫该WRMSR微码例程。在一实施例中,该指令解码器104解码该WRMSR指令至一特定模块寄存器地址空间的FERNS范围内的一虚拟字节位置。流程进行至步骤1104。
[0079] 于步骤1104中,WRMSR微码例程读取与特定FERNS虚拟字节相关的实体熔丝模块,并读取最近熔断的时钟熔丝所对应的数据熔丝,用以决定该虚拟字节的目前值。于该特定模块寄存器地址空间的FERNS范围内,该WRMSR微码例程决定该特定模块寄存器地址(指定于ECX寄存器中)所指定的一位置,并适当地对该控制寄存器进行写入,用以读取一或多个实体熔丝模块204,实体熔丝模块204包括与FERNS的虚拟字节(V-byte)502相关的实体熔丝202。该WRMSR微码例程随即执行必要的布尔或运算操作,用以产生该虚拟熔丝302的数值,是相关于该特定模块寄存器地址所指定的虚拟字节502。对于组成虚拟字节502的每一虚拟位402而言,该WRMSR微码例程接着依序对该等时钟-数据对912的时钟虚拟熔丝908进行扫描,从位置0开始,直到找出第一个已熔断的时钟虚拟熔丝908。该WRMSR微码例程接着读取与该第一个连续已熔断时钟虚拟熔丝908相关的数据虚拟熔丝904的数值,用以作为该虚拟位402的数值。该WRMSR微码例程对虚拟字节502的每一虚拟位402进行此步骤,用以决定该虚拟字节的目前值。流程进行至步骤1106。
[0080] 于步骤1106中,该WRMSR微码例程比较虚拟字节502的目前值及由WRMSR指令所指定的欲写入数值,意即,EDX:EAX寄存器的低字节所指定的数值。若任一位不相同,针对每一个不相同的位,该WRMSR微码例程对该控制寄存器进行适当的写入操作,用以:(1)若该不相同虚拟位402所对应的新位值为1,则依序熔断最近熔断的时钟虚拟熔丝908所对应的数据虚拟熔丝904;或者(2)若该不相同的虚拟位402所对应的新位值为0,则依序熔断下一个时钟虚拟熔丝908。需注意,若该新位值与目前虚拟位402的数值相等,该微处理器100不熔断任何虚拟熔丝302。流程进行至步骤1108。
[0081] 于步骤1108中,该WRMSR微码例程再次读取该虚拟位502的值,并与新值比较,用以判断是否成功写入该新值,若该熔断未成功,重试一实体熔丝202的熔断操作至一可配置重试次数。流程于步骤1108结束。
[0082] 由图10a可知,位置2的时钟虚拟熔丝908(VF[2])从未被熔断。换句话说,依据图10a实施例所示的时钟-数据对912,最高位置的时钟虚拟熔丝908一直为未熔断。因此,于一实施例中,最高位置的时钟虚拟熔丝908并不需要实体熔丝202。如此一来,对该实体熔丝模块204的位而言,用来组成虚拟熔丝302的正常实体熔丝202中,若与最高位置的时钟虚拟熔丝908相关联,由于该等实体熔丝202从未被熔断,因此以固线(hardwire)连接至用以表示未熔断状态的电压值(例如:GND),而不是用一实体熔丝202表示该些位。以此方式,该虚拟位402切换写入的次数相等于组成该虚拟位402的该等虚拟熔丝302的数量。举例而言,于图9的实施例中,有63个虚拟熔丝302(是显示64个虚拟熔丝302,但最高位置的时钟虚拟熔丝908是以固线连接),因此,该虚拟位402切换写入的次数可达63次。依据另一实施例,于图10a中,位置2的时钟虚拟熔丝908是以固线连接,而该虚拟位
402具有5个虚拟熔丝302,因此切换写入的次数可达5次。同样地,由图10b可知,位置0的时钟虚拟熔丝908(VF[0])一直为已熔断。换句话说,依据一实施例,于该实体熔丝模块
204中,对相关于最低位置时钟虚拟熔丝908的位来讲,由于所显示的实体熔丝202一直为已熔断,因此,以固线连接至用以表示已熔断状态的电压值(例如Vcc),而不是用一实体熔丝202表示该些位。
[0083] 参考图10a,依据另一实施例,于该实体熔丝模块204中,与最高位置时钟虚拟熔丝908相关的位包括该等实体熔丝202,而当一虚拟位402的所有时钟虚拟熔丝908为已熔断时,该微处理器100(例如微码)将此情况视为一特例。举例来讲,图10a是说明具有6个虚拟熔丝302所进行的5次切换写入。然而,依据另一实施例,该微码通过熔断位置2的时钟虚拟熔丝908,来执行第6次的切换写入,而当一虚拟位402的所有时钟虚拟熔丝908为已熔断时,其值为一布尔零值(Boolean zero)。因此,于此实施例中,该虚拟位402切换写入的次数与组成该虚拟位402的该等虚拟熔丝302的数量相等,在图10a的例子中为6。类似地,与图10b相关的另一实例中,当一虚拟位402的所有时钟虚拟熔丝908为未熔断时,该微码将此情况视为一特例。因此,该虚拟位402的初始条件并未示于图10b的时序0,或者,当所有时钟虚拟熔丝908为未熔断时,即为该虚拟位402的初始条件,且该虚拟位402具有一布尔值(Boolean one value)。如图10b所示的时序0,当该微处理器100接收第一次切换写入的请求时,该微处理器100熔断位置0的时钟虚拟熔丝908,以此类推。因此,于此实施例中,该虚拟位402切换写入的次数与组成该虚拟位402的该等虚拟熔丝302的数量相等,在图10b的例子中为6。
[0084] 如上所述,于其它实施例中,部分虚拟熔丝302不以固线连接,而该微码将其视为一特例,则该虚拟位402切换写入的次数可相等于或少于组成该虚拟位402的虚拟熔丝302的数量。
[0085] 如上所述,于图6及9的一固定配置架构中,该FERNS子系统显示一数据类型,比单一虚拟位402更宽(如一虚拟字节502),其缺点在于统计上实体熔丝202可能会被浪费,这是因为,于该虚拟字节502中,部分虚拟位402的切换写入次数,将与该虚拟字节502中其它虚拟位402的切换写入次数不相同。意思是,统计上来讲,一虚拟字节502内部的一虚拟位402,在同一个虚拟字节502内部的其它虚拟位402用完它们的实体熔丝202之前,就先用完自己的实体熔丝202。因此,亦考虑可变的配置架构。一可变配置架构试着解决浪费实体熔丝202的问题,然而,本身亦有相关的浪费,意即,利用部分实体熔丝202来实现该可变配置架构(例如:如图12实施例的一指针1206),而非作为实际的数据位(例如:如图12实施例的一数据虚拟熔丝1204)。
[0086] 参考图12,是显示依据本发明实施例,配置该等虚拟熔丝(VF)302的一可变架构方块图,用以提供一FERNS子系统。将该等虚拟熔丝302分为多个单元(cell)1202。一单元1202包括M个“数据”虚拟熔丝1204及N个“指针”虚拟熔丝1206。于图12的实施例中,M为9且N为7。该等数据虚拟熔丝1204类似于第4及6图(或者图9)的虚拟熔丝302,用以储存数值并产生一虚拟位402的数值。该等指针虚拟熔丝1206用以指向另一单元1202。以此方式,于该等单元1202中,一串行窗体(linked list)的该等数据虚拟熔丝
1204是由对应的指针虚拟熔丝1206连结而成,用以决定一虚拟位402的数值。
[0087] 于图12的实施例中,2048个虚拟熔丝302分为128个单元1202,以0到127表示。每一指针虚拟熔丝1206具有7个位,因此能够指向128个不同单元1202。举例来讲,指针值为53的指针虚拟熔丝1206指向第53个单元。一开始,每一虚拟熔丝302具有二进制的
0,因此每一指针虚拟熔丝1206的初始值为0。若一指针虚拟熔丝1206的数值为0,则该微码将该指针虚拟熔丝1206视为一空指针(null pointer),用以表示于单元1202的串行窗体中,该单元1202为最后一个单元1202。因此,参考图8的流程图,于步骤804、806及808中,该微码必须依序连结该等单元1202的指针虚拟熔丝1206,以决定对哪些数据虚拟熔丝
1204进行异或运算,用以产生该虚拟位402的数值(步骤804及808),并决定下一个可用来熔断的数据虚拟熔丝1204(步骤806)。
[0088] 如图13b所示,每一单元1202可分为一根单元(root cell)1304或一扩充单元(expansion cell)1312。于一特定虚拟位402中,一或多个单元1202所连结而成的一串行窗体的第一个单元1202,即为一根单元1304。因此,一根单元1304不会指向另一单元1202。每一虚拟位402具有单一相关的根单元1304。该等根单元1304,是以固定的一对一方式,与该等虚拟位402相关。因此,该等根单元1304为静态地预先配置,于程序操作期间并无法动态配置。于一实施例中,通过该微码,该等根单元1304为静态地预先配置,且以固定方式相关于该等虚拟位402。反之,至少一开始时,扩充单元1312并没有与一特定虚拟位402相关。扩充单元1312反而位于可用(available)单元(或称闲置单元)1202的一储存库(free pool)中,当需要执行程序写入FERNS时,可为一虚拟位402进行动态配置,并合并到该虚拟位402的串行窗体中。于FERNS子系统中,根单元1304的数量与虚拟位402的数量相等,而可用单元1202的储存库(free pool)包含剩余的单元1202。于一实施例中,若虚拟位402的数量为N,则该微码静态地将单元1202配置于位置0到N-1,作为与该N个虚拟位402相关的根单元1304。
[0089] 依据图12的实施例,当该微码需要熔断一数据虚拟熔丝1204来切换一虚拟位402的数值时,不过,目前的单元1202中并没有其它可用的数据虚拟熔丝1204(意即,该单元1202位于串行窗体的最后),该微码检查该等扩充单元1312(于一实施例中,为依序检查),以搜寻下一个可用的扩充单元1312,直到找出所有数据虚拟熔丝1204为未熔断的一扩充单元1312为止。接着,该微码将目前单元1202(也就是说,没有其它可供该单元使用的数据虚拟熔丝1204)的指针1206熔断成一数值,是指向所找到的下一个可用的扩充单元1312,用以将扩充单元1312加到该串行窗体中。该微码随后熔断新连结扩充单元1312的一数据虚拟熔丝1204,用以切换该虚拟位402的数值。
[0090] 每次该微码必须搜寻出一个可用的扩充单元1312,因为没有非易失性储存装置可以用来指出下一个可用的扩充单元1312。然而,于另一实施例中,当该微处理器100启动(boot up)时,该微码扫描所有的扩充单元1312,并于该微处理器100内部设置一易失性(volatile)存储器位置,用来指出下一个可用的扩充单元1312。如此一来,寻找下一个可用扩充单元1312的扫描,仅需于该微处理器100每次重置时执行一次,取代每次需要一个新扩充单元1312的扫描,进而改善效能。
[0091] 参考图13a,是显示该微处理器100的第一操作方块图,该微处理器100是利用图12虚拟熔丝(VF)302的可变配置架构。于图13a及13b中,一已熔断的虚拟熔丝302是由“X”表示。于图13a中,一虚拟位402的状态仅包括一根单元1304,意味着一串行窗体包括单一的根单元1304。图13a是说明在该微处理器100对该虚拟位402执行完4次切换写入后,该虚拟位402的状态。为了说明,于图13a的实施例中,数据虚拟熔丝1204及指针虚拟熔丝1206的数量比图12少。具体地,参考图12,该根单元1304包括8个虚拟熔丝302。
位置0到4的虚拟熔丝302为数据虚拟熔丝1204,而位置5到7的虚拟熔丝302为指针虚拟熔丝1206。因此,于FERNS子系统中,由该指针虚拟熔丝1206所指向的扩充单元1312的可能数量为8。于此实施例中,该微处理器100已熔断位置0到3的数据虚拟熔丝1204,用以响应于4次的切换写入。位置4的数据虚拟熔丝1204为未熔断。除此之外,由于该根单元1304的数据虚拟熔丝1204尚未用完,因此该指针虚拟熔丝1206为未熔断,用以表示该根单元1304位于该串行窗体的最后,且为该串行窗体中的唯一单元1202。
[0092] 参考图13b,是显示该微处理器100的第二操作方块图,该微处理器100是利用图12虚拟熔丝(VF)302的可变配置架构。于图13b中,一虚拟位402的状态包括图13a的根单元1304及2个扩充单元1312,分别以1312a及1312b表示,并与根单元1304连结,用以形成一串行窗体。图13b是说明在该微处理器100对该虚拟位402执行完13次切换写入后,该虚拟位402的状态。具体地,该根单元1304的5个数据虚拟熔丝1204及第一扩充单元1312a的5个数据虚拟熔丝1204均为已熔断,而下面的第二扩充单元1312b中,前3个数据虚拟熔丝1204为已熔断。
[0093] 为响应该虚拟位402的第5次切换写入,该微处理器100熔断该根单元1304中位置4上的数据虚拟熔丝1204。为响应该虚拟位402的第6次切换写入,该微处理器100搜寻下一个可用的扩充单元1312,并在位置4上找到扩充单元1312a。因此,该微处理器100将该根单元1304的该等指针虚拟熔丝1206熔断为4,用以指向位置4的扩充单元1312a,如图13b的箭头1308所示。于扩充单元1312a中,该微处理器100接着熔断位置0的数据虚拟熔丝1204。为响应该虚拟位402的第7、8、9及10次切换写入,于扩充单元1312a中,该微处理器100分别熔断位置1到4的数据虚拟熔丝1204。为响应该虚拟位402的第11次切换写入,该微处理器100搜寻下一个可用的扩充单元1312,并在位置6上找到扩充单元1312b。该微处理器100于是将该第一扩充单元1312a的该等指针虚拟熔丝1206熔断为6,用以指向位置6的该第二扩充单元1312b,如图13b的箭头1316所示。于该第二扩充单元
1312b中,该微处理器100随即熔断位置0的数据虚拟熔丝1204。为响应该虚拟位402的第12及13次切换写入,于该第二扩充单元1312b中,该微处理器100分别熔断位置1到2的数据虚拟熔丝1204。该第二扩充单元1312b的指针虚拟熔丝1206为0,用以表示该第二扩充单元1312b位于该虚拟位402相关的串行窗体的最后。
[0094] 尽管图12的可变配置架构,已于图6中,利用虚拟熔丝302的异或运算,来产生一虚拟位402数值的实施例加以说明,该可变配置架构亦可以图9利用时钟-数据对912,来产生一虚拟位402数值的实施例加以说明。后者的每一单元1202包括偶数个数据虚拟熔丝1204,使得时钟虚拟熔丝908及数据虚拟熔丝904的数量相等。也就是说数据虚拟熔丝1204中,一半为时钟虚拟熔丝908,另一半为数据虚拟熔丝904。
[0095] 比较图6及12可知,假设实体熔丝202的数量相同,且该微处理器100为每一个虚拟熔丝302配置2个实体熔丝202,总计为4096个实体熔丝202。程序能够执行的虚拟位402切换写入次数,图6的固定配置实施例为2048次,而图12的可变配置实施例为1152次(128个单元中,每一单元具有9个虚拟熔丝302)。然而,于其它实施例中,可提供一使用者接口,使得于FERNS空间中,每一个特定模块寄存器(MSR)视为宽度大于单一位的数据类型(例如:一虚拟字节V-byte、虚拟字V-word、虚拟双字V-dword或虚拟四字组V-qword数据类型),于FERNS子系统中,对较宽数据类型而言,可变配置架构的切换写入次数大于固定配置架构。
[0096] 依据一实施例,该程序系以4个虚拟字节(V-byte)502表示,分别具有4个不同的特定模块寄存器(MSR)地址。因此,32个单元1202(由0至31),是以固定方式静态地被预先配置为32个虚拟位402所各自对应的根单元1202,用以形成4个虚拟字节502。于一实施例中,该微码将4组8个根单元与FERNS特定模块寄存器的地址范围中的4个特定模块寄存器联系在一起。剩余96个单元1202(由32至127)一开始未被配置,且组成可用单元1202的一储存库,供该微码动态配置,并依据程序欲写入FERNS的二进制数值特性,于FERNS特定模块寄存器的地址范围中,将4个特定模块寄存器的该等虚拟位402联系在一起。相较于固定配置架构,可变配置架构能更有效率地利用虚拟熔丝302,因为配置到较多虚拟熔丝302的虚拟位402,相对地具有较多的切换写入次数,反之,配置到较少虚拟熔丝302的虚拟位402,相对地具有较少的切换写入次数。
[0097] 于固定及可变配置架构中,该微处理器100的制造商可指定每一个FERNS位置所保证的最少写入次数。于图6的实施例中,每一个虚拟位402可写入至少32次,而于图12的实施例中,每一个虚拟位402可写入至少9次。不过,如上所述,每一个FERNS位置的成功写入次数可能大于指定的最少次数,是取决于欲写入的数值。然而,当FERNS的写入超过指定的最少次数时,程序被要求准备处理由该微处理器100所产生的一例外或其它错误指示(如上所述),用以表示写入失败。
[0098] 参考图14,是显于特定模块寄存器(MSR)地址空间的FERNS范围内,微处理器100于一位置执行一RDMSR指令的操作流程图。于图14的说明中,假设程序是以一虚拟字节(V-byte)502的数据类型表示之,意即,于FERNS范围的一地址进行存取的每一个RDMSR指令,是存取单一字节的数据。流程始于步骤1402。
[0099] 于步骤1402中,该微处理器100从该指令高速缓存102撷取一RDMSR指令,而该指令解码器104解码该RDMSR指令并呼叫该RDMSR微码例程。在一实施例中,该指令解码器104解码该RDMSR指令至一特定模块寄存器地址空间的FERNS范围内的一虚拟字节位置。流程进行至步骤1404。
[0100] 于步骤1404中,RDMSR微码例程读取与特定FERNS虚拟字节相关的实体熔丝模块,并执行所需的布尔或运算及布尔异或运算,以决定该虚拟字节的目前值。于该特定模块寄存器地址空间的FERNS范围内,该RDMSR微码例程决定该特定模块寄存器地址(指定于ECX寄存器中)所指定的一位置,并适当地对该控制寄存器进行写入,用以读取一或多个实体熔丝模块204,实体熔丝模块204包括与FERNS的虚拟字节(V-byte)502相关的实体熔丝202。该RDMSR微码例程随即执行必要的布尔或运算操作,用以产生该虚拟熔丝302的数值,是相关于该特定模块寄存器地址所指定的虚拟字节502。该RDMSR微码例程接着执行必要的布尔异或运算操作,用以产生该虚拟字节502的虚拟位402的数值,以决定该虚拟字节502的目前值。或者,于图9的时钟-数据对912实施例中,利用最近已熔断(或未熔断)时钟虚拟熔丝908所对应的数据虚拟熔丝904的数值,该RDMSR微码例程产生该虚拟字节
502的虚拟位402的数值,是详述于图9、10a及10b的相关说明中。流程进行至步骤1406。
[0101] 于步骤1406中,该RDMSR微码例程将虚拟字节502的目前值加载EDX:EAX寄存器的低字节中。流程于步骤1406结束。
[0102] 如上所述,于一些情况下,部分应用程序无法使用已知的非易失性存储器资源(例如:磁带、盘片、互补金属氧化物半导体、电池或闪存),且微处理器本身可能无法通过操作系统进行存取(换言之,与微处理器外部的程序指令分开,程序指令由微处理器撷取及执行,即基本输入输出系统、操作系统、应用程序及公用程序)。举例而言,于某些情况下,在执行任何基本输入输出系统或操作系统指令前,微处理器需采取一些措施。FERNS所考虑的某些应用表示如下:(1)储存与软件安装有关的信息;(2)储存微处理器可见的故障次数(例如:例如:一机器检查或错误校正码所回应的错误故障或超过温度临界值),当每次进行重置后,可由微处理器进行检查,若故障次数超过一临界值,则微处理器可以决定不要启动,或是停止读取及执行外部程序指令;(3)储存微处理器的安全已被破坏且微处理器必须关闭的指示,当每次进行重置后,可由微处理器进行检查,若微处理器已变得不安全,则微处理器可以决定不要启动,或是停止读取及执行外部程序指令;(4)储存用户订购(所执行的硬件或软件或两者)已过期的指示,当每次进行重置后,微处理器可决定以较少功能启动,直到用户付费订购为止(例如:微处理器于屏幕上显示一消息,提醒使用需付费订购);(5)储存用以验证微处理器所执行软件没有被影响(contaminated)的信息;(6)储存用以判断系统配置是否已更改的信息,特别是,判断已更改的系统配置是否有权拒绝特定软件应用的存取。
[0103] 尽管已以实施例说明在程控下,像是系统软件,来写入及读取FERNS,于其它实施例中,可考虑将FERNS的一部分,保留给微处理器用以进行自身的内部读写,与程控无关。于这些实施例中,该微码写入及读取FERNS,系响应于其它事件,而不是响应于一程序指令。
举例来讲,微处理器可自行检测必须关闭的一存储器检查条件(像是错误校正码的错误)或超过一既定温度临界值的条件。于关闭前,将FERNS增加一数值,用以记录此条件的发生次数。再者,若该次数超过另一既定临界值,则该微码采取进一步的措施,例如:将一除能熔丝熔断,用以将微处理器除能,无法再启动,进而避免可能的数据错误或实体损坏。
[0104] 尽管已以实施例说明利用x86WRMSR及RDMSR指令来寻址FERNS,于其它实施例中,可考虑利用其它指令,像是微处理器的指令集架构所补充的新指令。
[0105] 尽管已以实施例说明,当微处理器未成功执行一WRMSR指令时(例如:该熔丝模块内部没有可以用来写入新值的熔丝,或是当熔断该些熔丝中至少一个未熔断熔丝时,该些熔丝的未熔断熔丝数量不足以将可复写非易失性状态FERNS的目前值改变为新值),微处理器产生该指令的一例外,WRMSR指令是指定FERNS地址范围的一地址。可考虑用其它方法表示程序写入失败,像是回传通用寄存器或特定模块寄存器的一既定值,或者于x86EFLAGS寄存器的旗标中设定一既定旗标。于其它实施例中,如上所述,由微码所执行的某些功能,亦可考虑将由硬件逻辑单元执行。
[0106] 尽管本发明的各种实施例已说明如上,然而应了解的是这些实施例是以范例的方式呈现,而并非为限制。对于计算机相关技术领域中具有通常知识者而言,在没有脱离本发明的精神与范畴所为的形式或细节的修改,为显而易知。举例而言,除了使用硬件(例如:耦接至一中央处理单元或在其内部、微处理器、微控制器、数字信号处理器、处理器核心、系统单芯片或其它装置)之外,亦可以软件配置实现(例如:任何形式配置的计算机可读取码、程序码、指令,像是原始码、目的码或机械语言),例如:在一计算机可使用(例如:可读取)媒体中,被配置用以储存软件。此类软件可致能上述装置及方法,诸如功能、制造、模型化、仿真、描述以及/或者测试。举例来讲,可通过使用一般程序语言(像是C、C++)、包含Verilog HDL、VHDL等的硬件描述语言(HDL)、或其它可用的程序来完成。此类软件可被配置在任何已知计算机可使用的媒体内,包含半导体、磁盘、或光盘(例如:CR-ROM、DVD-ROM等)。如上所述,本发明实施例可包括提供一微处理器的方法,通过提供用来描述微处理器设计的软件,并且将该软件当成一计算机数据信号,通过包含因特网(internet)及内部网络(intranet)的通信网路随后进行传输。所应了解的是,在此所述的装置与方法可被包含在一半导体智慧财产权核心,例如:一微处理器核心(像是以HDL实现),以及在集成电路的产品中被转换成硬件。除此之外,在此所述的装置与方法可以硬件与软件的组合实现。因此,本发明不应受限于上述的示范实施例,其应以下列的权利范围与其等效为准。本发明可执行于一通用计算机所使用的一微处理器装置内部。
[0107] 虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。