CN101794249B - 微处理器及初始化微处理器的方法 - Google Patents
微处理器及初始化微处理器的方法 Download PDFInfo
- Publication number
- CN101794249B CN101794249B CN2010101275234A CN201010127523A CN101794249B CN 101794249 B CN101794249 B CN 101794249B CN 2010101275234 A CN2010101275234 A CN 2010101275234A CN 201010127523 A CN201010127523 A CN 201010127523A CN 101794249 B CN101794249 B CN 101794249B
- Authority
- CN
- China
- Prior art keywords
- fuse
- microprocessor
- value
- numerical value
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Microcomputers (AREA)
Abstract
本发明提供一种微处理器及初始化微处理器的方法。微处理器包括控制硬件,控制硬件接收与储存至少一控制值以及提供控制值到微处理器的至少一电路以控制微处理器的操作。微处理器还包括根据一既定值选择性地被烧断的第一多条熔线,以及根据一错误校正值选择性地被烧断的第二多条熔线。响应于重置微处理器,微处理器读取第一多条熔线与第二多条熔线;使用读取自第二多条熔线的数值侦测读取自第一多条熔线的数值的错误;使用读取自第二多条熔线的数值将读取自第一多条熔线的数值校正为既定值;以及使用校正后的数值将控制值写入到控制硬件。本发明可以在微处理器中存在再生长熔线时,使得微处理器连续正确地进行操作。
Description
技术领域
本发明有关于微处理器中熔线的利用,特别是有关于其中烧断的熔线的再生长。
背景技术
现代的微处理器包括可以选择性地在微处理器制造期间烧断(blow)的熔线(fuse),借以烧入控制值,根据读取自熔线的控制值可控制微处理器的操作。正常来说,当读取一个未烧断的熔线时,其会回传一个二进制的0,并且当读取一个烧断的熔线时,其会回传一个二进制的1(当然这个规则是可以相反的)。然而发明人观察微处理器的操作并且注意到烧断的熔线可能会改变其回传的数值;也就是说,纵使烧断的熔线在制造期间被测试时会回传正确的1,然而在一些实例中烧断的熔线会间歇性地回传不正确的0。这就称为熔线再生长(fuse re-growth)。也就是说,随着微处理器的连续操作,烧断的熔线可能会改变其数值,以至于当读取熔线时读到非烧断的数值而不是已经烧断的数值。这类熔线再生长的结果可能危害特定的应用这些再生长熔线中的数值的微处理器的后续操作。此外,再生长熔线所引起的问题可能在故障分析期间很难侦测。因此,需要提供当再生长熔线存在时,可以使得微处理器连续正确地操作的方法。
发明内容
本发明提供一种微处理器。该微处理器包括一控制硬件,用于接收与储存至少一控制值以及提供该控制值到该微处理器的至少一电路以控制该微处理器的操作。该微处理器还包括一第一多条熔线,根据一既定值选择性地被烧断。该微处理器又包括一第二多条熔线,根据一错误校正值选择性地被烧断,该 错误校正值计算自烧入该第一多条熔线的该既定值。响应于重置该微处理器,该微处理器用于:读取该第一多条熔线与该第二多条熔线;使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的一错误;使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;使用校正后的数值将该控制值写入该控制硬件;以及当读取自该第一多条熔线的数值的该错误无法校正时,防止该微处理器撷取与执行使用者程序指令。
于另一层面,本发明提供一种初始化微处理器的方法。该方法包括读取一第一多条熔线与一第二多条熔线,其中该第一多条熔线根据一既定值选择性地被烧断,该第二多条熔线根据一错误校正值选择性地被烧断,该错误校正值计算自烧入该第一多条熔线的该既定值。该方法还包括使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的一错误。该方法还包括使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;使用校正后的数值将一控制值写入一控制硬件,其中该控制硬件用于接收与储存该控制值以及提供该控制值到该微处理器的至少一电路用以控制该微处理器的操作;以及当读取自该第一多条熔线的数值的该错误无法校正时,防止该微处理器撷取与执行使用者程序指令。该读取、侦测、校正、使用与防止的步骤响应于该微处理器被重置而执行。
本发明可以在微处理器中存在再生长熔线时,使得微处理器连续正确地进行操作。
附图说明
图1为根据本发明一实施例的微处理器的框图;
图2为根据本发明实施于制造图1的微处理器的步骤的流程图;
图3为根据本发明实施例的图1的微处理器的操作的流程图;
图4为根据本发明的另一实施例的微处理器的框图;以及
图5为根据本发明的另一实施例的图4的微处理器的操作的流程图。
附图中符号的简单说明如下:
100:微处理器 102:指令快取
104:指令转译器 106:指令调度器
114:执行单元 116:微码单元
118:校正的数据熔线值 122:重置微码程序
124:控制硬件 126:数据熔线值
128:EDAC熔线值 134:控制值
144:临时储存器 132:EDAC熔线
136:电压输入端 152:数据熔线
172:熔线 428:不可校正的错误值
438:不可校正的错误指标
442:硬件校正的数据熔线值
456:硬件EDAC单元
202、204、206:方法步骤
302、304、306、308、312、314、316、318:方法步骤
502、504、506、508、514、516、518:方法步骤。
具体实施方式
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
参考图1,图1显示根据本发明一实施例的微处理器100的框图。微处理器100包括多条熔线172。于一实施例中,熔线172 是多晶硅(polysilicon)熔线,然而其他熔线技术,例如金属熔线,亦可用于本发明。熔线172在逻辑上配置为两个不同的群组(尽管实体上是相同的),亦即数据(data)熔线152和错误侦测与校正(error detection and correction,EDAC)熔线132。熔线172被配置为数据熔线152或EDAC熔线132乃根据微处理器100的制造商所使用的特定EDAC演算法来决定。
微处理器100的制造商可以从电压输入端136供应规定电压到微处理器100,以分别选择性地烧断熔线172。于一实施例中,制造商通过JTAG扫描接口以指定哪些熔线172要被烧断。于一实施例中,每个熔线172的一端接地,而另一端连接到主动装置(active device),例如连接到可被微处理器100所读取的晶体管的输入端。因此,假如熔线未烧断,它将会导通且读成低电压(通常为二进制的0);然而,假如熔线被烧断,它将不会导通并且读成高电压(通常为二进制的1)。其他实施例可考虑使用相反的二进制规则。
虽然,熔线172在制造期间可能分别被烧断并且每个熔线172构成单一的二进制码(位),在逻辑上数据熔线152可配置为多个组(bank),每一组具有多个数据熔线且每一组具有一多个位的控制值。相同地,EDAC熔线132可配置为多个组,每一组具有多个EDAC熔线且每一组具有一多个位的EDAC值。制造商使用烧入数据熔线152的控制值作为EDAC演算法的输入以计算烧入EDAC熔线132的EDAC值。
微处理器100也包括控制硬件124。控制硬件124用于接收与储存控制值134以及提供控制值134到微处理器100的各种电路以控制微处理器100的操作。控制硬件124可能包括但不限于:微码修补(patch)硬件、多个特征控制暂存器(feature controlregister)、组态暂存器(configuration register)或结构控制暂存 器。可修补微码的微码修补硬件用于储存微码修补指令,响应于微处理器100产生一撷取地址以撷取微码的指令,修补硬件可提供微码修补指令。微处理器100的多个特征控制暂存器,用于致能或禁能微处理器100对应的特征单元或功能单元,及/或指示微处理器100是否具有对应的特征单元或功能单元,例如浮点单元(floating point unit,FPU)、MMX单元、SSE单元、快取与转译后备缓冲器(translation-lookaside buffer,TLBs)、呼叫/回传堆叠(call/return stack)、乱数产生器、加密引擎、积和熔加(fused-multiply-add)指令特征、微码修补相关特征、虚拟机器延伸(virtual machine extensions,VMX)、效能监控特征、处理器升级(stepping)与家族信息、预撷取(prefetching)特征、分支预测特征、页表查询(page table walking)相关特征以及电源管理特征。微处理器100的多个组态暂存器,用于控制微处理器100中的时脉产生电路(未显示)所产生的一或多个时脉信号的频率,或控制微处理器100中的电压电平。控制硬件124亦包括结构控制暂存器,响应于微处理器100解码命令微处理器100读取结构控制暂存器的一使用者程序指令,重置微码程序(resetmicrocode routine)122从结构控制暂存器中读取一数值以及载入该数值到微处理器100的一通用目的暂存器(general purposeregister)(未显示)。
在现有的微处理器中,不经错误侦测与校正即自熔线读取数值以及写入数值至控制硬件。如上面讨论的,假如烧断的熔线已经再生长以致于导通并且不正确地被读取为0而不是1,因为写入至控制硬件的数值不正确,很有可能导致现有的微处理器不能适当操作。然而,有利的是,根据本发明,微处理器100也包括EDAC熔线132,用于侦测及校正从数据熔线152读取到的因为再生长熔线而造成的不正确数值,所以正确的数值会被 写入控制硬件124,如以下的详细描述。
微处理器100包括指令快取102,用于缓存微处理器100所撷取与执行的多个程序指令。多个程序指令可包括使用者程序指令,例如系统软件或应用程序。
微处理器100还包括自指令快取102接收指令的指令转译器104,在微处理器100的宏指令集的一些指令的例子中,指令转译器104转译该指令(即宏指令)使其成为微处理器100的多个执行单元114所执行的一或多个微指令。微指令比宏指令简化。然而,对于微处理器100的宏指令集的一些指令,指令转译器104转移控制(transfer control)至储存于微码单元116中的微码指令序列(sequence),上述微码单元116可为一微码只读存储器(ROM)。
微码单元116也储存重置微码程序122的多个微码指令序列。当微处理器100重置时,微码单元116开始撷取与执行重置微码程序122的微指令。重置微码程序122执行各种操作以初始化微处理器100以准备开始撷取与执行使用者程序指令。特别地,重置微码程序122以控制值134来编程(program)微处理器100的控制硬件124。微处理器100根据从熔线172读取到的在制造时所烧入的数值以产生控制值134。然而,如上述,熔线172可能在烧断之后再生长以致于其数值由烧断的数值改变为非烧断的数值。有利的是,微处理器100也包括EDAC熔线132,EDAC熔线132致能微处理器100以校正读取自数据熔线152的错误数值。
微处理器100也包括指令调度器(instructiondispatcher)106,指令调度器106由指令转译器104或由微码单元116接收微指令(例如重置微码程序122的指令),以及调度微指令到执行单元114。执行单元114包括一或多个整数单元(integer unit),整数单元包括执行算术与逻辑运算的算术与逻辑单元(arithmetic and logic unit)。特别地,执行单元114用以对输入运算元执行布尔异或(Boolean XOR)运算,重置微码程序122使用输入运算元以执行EDAC演算法运算以侦测与校正读取自熔线172的错误数值。执行单元114也执行自控制硬件124读取数据以及写入数据到控制硬件124的指令。
执行单元114也执行自临时储存器144读取数据以及写入数据到临时储存器144的指令。于一实施例中,临时储存器144是一种随机存取存储器(RAM)。特别的是,如以下参考图3的描述,重置微码程序122读取数据熔线152以及将读取到的数值写入至临时储存器144作为数据熔线值126;并且重置微码程序122读取EDAC熔线132以及将读取到的数值写入至临时储存器144作为EDAC熔线值128;以及重置微码程序122读取数据熔线值126以及EDAC熔线值128以产生校正的数据熔线值118,然后将校正的数据熔线值118写入至临时储存器144,并且接着从临时储存器144读取校正的数据熔线值118并将其写入至控制硬件124。
在微处理器100已经读取熔线172、必要时校正数据熔线值126、写入控制硬件124、并且开始撷取与执行使用者程序指令(如以下参考图3以及图5所描述)之后,微处理器100也响应于要求读取与写入控制硬件124的使用者程序指令而读取与写入控制硬件124的相关部分。于一实施例中,使用者程序指令是x86架构RDMSR与WRMSR指令。
参考图2,图2显示根据本发明实施于制造图1的微处理器100的步骤的流程图。流程图由步骤202开始。
在步骤202,微处理器100的制造商决定要烧入数据熔线152的控制值。根据被烧断与否,每个数据熔线152构成具有0或1的二进制值的一个单一位。读取自每个数据熔线152的位的值将 被直接写入控制硬件124的一个位,或者当发现上述位值因熔线再生长现象而不正确时用以产生一个校正值以写入控制硬件124,如图3的步骤312与316以及图5的步骤516所描述的。因此,在步骤202,制造商决定熔线172的哪些熔线被配置为数据熔线152或是EDAC熔线132,使每个数据熔线152与控制硬件124的一个位相关联(associate),以及决定欲烧入数据熔线152的位值。举例来说,制造商可能决定想要一种特定的数据熔线152以储存用于选择性地栓锁(toggle)内定(default)微码值的一个位,内定微码值控制微处理器100的特定分支预测特征是否被致能或禁能,并且制造商为了提供所需的二进制数值以栓锁内定值,而决定是否要将数据熔线152烧断或不烧断。制造商对每个数据熔线152执行这些步骤。虽然每个数据熔线152构成一个单一的位,在逻辑上数据熔线152可配置为多个组,其中每一组具有多个数据熔线且每一组具有一多个位的控制值,于步骤204将做更详细的说明。在这种情况下,数据熔线152的控制值是在微处理器100制造之前以及在制造后的操作之前预先决定的。流程由步骤202进行到步骤204。
在步骤204,制造商对步骤202决定的控制值执行EDAC演算法运算,以计算要被烧入至EDAC熔线132的EDAC值。于一实施例中,EDAC演算法是公知的单错误校正双错误侦测(singleerror correction double error detection,SECDED)(72,64)汉明码(Hamming code)演算法;然而,其他EDAC演算法亦可能用于本发明。目前将讨论分别用于图1与图3的实施例以及图4与图5的实施例的垂直码(vertical code)演算法与水平码(horizontal code)演算法。
于图3的实施例中,在步骤306中,图1的重置微码程序122在软件中执行EDAC演算法运算以读取熔线172以及侦测与校 正错误。因此,于此实施例中,制造商使用垂直码演算法计算EDAC值,并且在步骤306中重置微码程序122使用垂直码演算法。于一实施例中,熔线172配置成58组,每一组具有64条熔线,亦即每一组是64位宽。前50组熔线172逻辑上配置成数据熔线152,最后8组熔线172逻辑上配置成EDAC熔线132。因此,在步骤202所决定的控制值逻辑上是50个64位的控制值,并且通过EDAC演算法产生8个64位的EDAC值。制造商对50个控制值的同一位置的位执行EDAC演算法运算。亦即,制造商对50个控制值的位置为0的位执行EDAC演算法运算,以产生8个EDAC值的位置为0的位,制造商对50个控制值的位置为1的位执行EDAC演算法运算,以产生8个EDAC值的位置为1的位,以此类推。在一实施例中,EDAC演算法是依据64个输入位以产生8个EDAC位,在仅有50个控制值的情况下,制造商假设缺少的14个控制值的所有位为零。
在图5的另一实施例中,在步骤506中,图4的硬件EDAC单元456在硬件中执行EDAC演算法运算以读取熔线172以及侦测与校正错误。因此,于此实施例中,制造商使用水平码演算法计算EDAC值,并且在步骤506中硬件EDAC单元456使用水平码演算法。于一实施例中,熔线172配置成50组,每组具有72条熔线,亦即每一组是72位宽。每一组的前64个位置的熔线172在逻辑上配置成数据熔线152,每一组的最后8个位置的熔线172在逻辑上配置成EDAC熔线132。因此,如同前段的实施例,在步骤202决定的控制值在逻辑上是50个64位的控制值;然而,在此图5的实施例中,EDAC演算法依据上述50个64位的控制值作为输入以产生50个8位的EDAC值。制造商在组对组的基础上执行EDAC演算法运算。也就是说,制造商对组0的64位的控制值执行EDAC演算法运算以产生组0的8位的EDAC值,制造商对组1 的64位的控制值执行EDAC演算法运算以产生组1的8位的EDAC值,以此类推。流程由步骤204进行到步骤206。
在步骤206,制造商将步骤202决定的控制值烧入数据熔线152以及将步骤204计算的EDAC值烧入EDAC熔线132。流程在步骤206结束。
参考图3,图3显示根据本发明实施例的图1的微处理器100的操作的流程图。流程由步骤302开始。
在步骤302,重置微处理器100并且响应地开始撷取与执行重置微码程序122的指令。流程进行到步骤304。
在步骤304,重置微码程序122读取数据熔线152以及EDAC熔线132,并且写入数据熔线值126与EDAC熔线值128到临时储存器144。于一实施例中,微处理器100的微指令集包括移动一组熔线172的数值到微处理器100的通用目的暂存器(未显示)的指令,以及从通用目的暂存器移动数值到临时储存器144的指令。另外,多个执行单元114的一个适用于执行这些指令。重置微码程序122使用有关于每个熔线172组的微码指令序列,此微码指令序列包括读取每个熔线172组的指令以及写入数据熔线值126与EDAC熔线值128到临时储存器144的指令。流程进行到步骤306。
在步骤306,重置微码程序122对在临时储存器144中的数据熔线值126以及EDAC熔线值128执行EDAC演算法运算,以判断数据熔线值126是否有错误,假如是,并判断它是否可校正。于一实施例中,微处理器100的微指令集包括由临时储存器144移动一数值到通用目的暂存器的指令、对在通用目的暂存器的数值执行演算法与逻辑运算(例如异或、位移或旋转)的指令,以及由通用目的暂存器移动一数值到临时储存器144的指令。另外,多个执行单元114适用于执行这些指令。重置微码程序122 使用微码指令序列去对临时储存器144中的数据熔线值126与EDAC熔线值128执行EDAC演算法运算,以判断数据熔线值126是否有错误,假如是,判断它是否可校正。于一实施例中,重置微码程序122使用垂直码演算法,如上述关于图2的描述。流程进行到步骤308。
在判断步骤308,重置微码程序122基于在步骤306所执行的运算判断数据熔线值126是否有错误。假如是,流程进行到判断步骤314;否则,流程进行到步骤312。
在步骤312,重置微码程序122使用数据熔线值126将控制值134写入到控制硬件124。只要控制值134写入到控制硬件124,微处理器100可以开始执行使用者程序指令。于一实施例中,重置微码程序122将数据熔线值126直接写入控制硬件124。于另一实施例中,重置微码程序122修改(modify)数据熔线值126以产生控制值134用于写入到控制硬件124。举例来说,于一实施例中,重置微码程序122对数据熔线值126与以常数形式储存于重置微码程序122中的内定控制值执行异或运算,并且将运算结果作为控制值134写入控制硬件124,如此可使数据熔线值126作为栓锁机制以栓锁微码内定控制值。此外,因为控制硬件124可能是如上述的多种不同型态的硬件(例如微码修补硬件、特征控制暂存器、组态暂存器或结构控制暂存器),并且数据熔线值126可能具有包括对应多种不同型态的控制值的多种不同部分,重置微码程序122可能将一部分的数据熔线值126直接写入到控制硬件124的相关部分,并且可能在将其他部分的数据熔线值126写入到控制硬件124之前先进行修改。此外,可了解到,重置微码程序122可能执行微码指令序列以从临时储存器144读取数据熔线值126,并且将数据熔线值126的部分(或修改的部分)写入到控制硬件124。流程在步骤312结束。
在判断步骤314,重置微码程序122使用EDAC熔线值128判断在步骤306、308侦测到的错误是否可校正。假如是,流程进行到步骤316;否则,流程进行到步骤318。
在步骤316,重置微码程序122使用EDAC演算法校正错误的数据熔线值126以产生校正的数据熔线值118并且使用校正的数据熔线值118将控制值134写入到控制硬件124。只要控制值134写入到控制硬件124,微处理器100可以开始执行使用者程序指令。如上述关于步骤312的描述,重置微码程序122可能在将校正的数据熔线值118写入控制硬件之前,修改校正的数据熔线值118或其部分。流程在步骤316结束。
在步骤318,重置微码程序122防止微处理器100完成重置,因为在数据熔线值126中的错误的位数目对于微处理器来说太多而无法使用EDAC熔线值128校正。也就是说,重置微码程序122防止微处理器100撷取与执行使用者程序指令。于可替代的实施例中,重置微码程序122允许微处理器100完成重置,亦即撷取与执行使用者程序指令,例如BIOS或其他系统软件;然而,重置微码程序122传送一错误状态到系统软件以指示在数据熔线值126中有一无法校正的错误。流程在步骤318结束。
参考图4,图4显示根据本发明的另一实施例的微处理器100的框图。图4的微处理器100与图1的微处理器100中相关以及相同号码的元件是类似的。然而,图4的微处理器100在以下方面不同于图1的微处理器100。图4的微处理器100包括在执行单元114内的硬件错误侦测与校正(EDAC)单元456。硬件EDAC单元456,响应于微码指令,用以读取熔线172以及对读取自熔线172的数值执行EDAC演算法运算,以产生硬件校正的数据熔线值442。假如硬件EDAC单元456在读取自熔线172的数值中侦测到不可校正的错误,则硬件EDAC单元456也会在不可校正的错误 指标438上产生真值(true value),否则在不可校正的错误指标438上产生假值(false value)。此外,重置微码程序122将硬件EDAC单元456所产生的硬件校正的数据熔线值442储存到临时储存器144当作校正的数据熔线值118,以及将硬件EDAC单元456所产生的不可校正的错误指标438储存到临时储存器144当作不可校正的错误值428。最后,修改重置微码程序122使其执行关于图5所描述的运算。于一实施例中,硬件EDAC单元456也产生第二指标(未显示)以指示可校正的错误已校正,第二指标可能有用于通知系统软件熔线可能已经再生长,以便使用者在需要时可以替换微处理器100。
参考图5,图5显示根据本发明的另一实施例的图4的微处理器100的操作的流程图。流程由步骤502开始。
在步骤502,重置微处理器100并且响应地开始撷取与执行重置微码程序122的指令。流程进行到步骤504。
在步骤504,重置微码程序122执行微码指令,以命令硬件EDAC单元456读取熔线172以及对读取自熔线172的数值执行EDAC演算法运算,以产生硬件校正的数据熔线值442以及不可校正的错误指标438。于一实施例中,重置微码程序122包括命令硬件EDAC单元456读取熔线172与对读取自每一熔线172组的熔线172的数值执行EDAC演算法运算的指令。流程进行到步骤506。
在步骤506,硬件EDAC单元456读取熔线172并且对读取自熔线172的数据熔线值与EDAC熔线值执行EDAC演算法运算,以产生硬件校正的数据熔线值442以及不可校正的错误指标438。于一实施例中,硬件EDAC单元456对每个熔线172组使用水平码演算法,如之前关于图2所描述的。流程进行到步骤508。
在步骤508,重置微码程序122将硬件EDAC单元456所产生 的硬件校正的数据熔线值442储存到临时储存器144作为校正的数据熔线值118以及将硬件EDAC单元456所产生的不可校正的错误指标438储存到临时储存器144作为不可校正的错误值428。流程进行到判断步骤514。
在判断步骤514,重置微码程序122检查在临时储存器144中的不可校正的错误值428以判断读取自数据熔线152的数值是否有不可校正的错误。假如是,流程进行到步骤518;否则流程进行到步骤516。
在步骤516,重置微码程序122使用校正的数据熔线值118将控制值134写入到控制硬件124,如关于图3的步骤312所描述的。只要控制值134写入控制硬件124,微处理器100可以开始执行使用者程序指令。流程在步骤516结束。
在步骤518,重置微码程序122防止微处理器100完成重置(或传送一错误状态到系统软件),因为在数据熔线值126中错误的位数目对于微处理器100而言太多而无法使用EDAC熔线值128校正,如之前关于图3的步骤318所描述。流程在步骤518结束。
虽然已经描述使用特定EDAC演算法与特定熔线172配置作为数据熔线152或EDAC熔线132的各种实施例,然而其他实施例是可预期的,并且本发明不是限制于在此描述的特定演算法与配置。
虽然在此已经描述本发明的各种实施例,然而可了解到他们仅是以实例的方式呈现而不是作限制。对于在计算机领域中具有通常知识者而言,可以在不脱离本发明的范围下,在形式与细节上作各种变更。举例来说,软件可以致能功能、制造、模型化、模拟、描述及/或在此描述的装置与方法的测试。可以通过使用通用程序语言(如C、C++)、包括Verilog HDL、VHDL 等的硬件描述语言(HDL)或其他可利用的程序。这些软件可以配置于任何已知的计算机可使用介质如半导体、磁盘或光盘(如CD-ROM、DVD-ROM等)。在此描述的装置与方法的实施例可能包括于半导体知识产权核心中,例如微处理器核心(如内嵌于HDL)与转换到半导体电路制造的硬件。此外,在此描述的装置与方法可能以硬件与软件的组合具体实施。因此,本发明不应限制于在此描述的例证的实施例,但是应该根据申请专利范围与其等效定义之。特别地是,本发明可能在用于通用目的计算机的微处理器装置之下实施。最后,以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (14)
1.一种微处理器,其特征在于,包括:
一控制硬件,用于接收与储存至少一控制值以及提供该控制值到该微处理器的至少一电路以控制该微处理器的操作;
一第一多条熔线,根据一既定值选择性地被烧断;以及
一第二多条熔线,根据一错误校正值选择性地被烧断,该错误校正值计算自烧入该第一多条熔线的该既定值;
其中,响应于重置该微处理器,该微处理器用于:
读取该第一多条熔线与该第二多条熔线;
使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的一错误;
使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;
使用校正后的数值将该控制值写入该控制硬件;以及
当读取自该第一多条熔线的数值的该错误无法校正时,防止该微处理器撷取与执行使用者程序指令。
2.根据权利要求1所述的微处理器,其特征在于,该微处理器还用于:
利用一错误侦测与校正演算法,使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的该错误,以及使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;以及
在撷取与执行使用者程序指令前,使用该校正后的数值将该控制值写入该控制硬件。
3.根据权利要求1所述的微处理器,其特征在于,还包括:
一错误侦测与校正单元,耦接到该第一多条熔线与该第二多条熔线,用于使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的该错误,以及使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值。
4.根据权利要求1所述的微处理器,其特征在于,还包括一微码单元,用于:
读取该第一多条熔线与该第二多条熔线;
使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的该错误;
使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;
使用该校正后的数值将该控制值写入该控制硬件;以及
当读取自该第一多条熔线的数值的该错误无法校正时,防止该微处理器撷取与执行使用者程序指令。
5.根据权利要求4所述的微处理器,其特征在于,还包括:
一随机存取存储器,通过该微码单元写入与读取该随机存取存储器,其中该微码单元还用于从该第一多条熔线与该第二多条熔线读取数值到该随机存取存储器,以及使用该校正后的数值将该控制值从该随机存取存储器写入到该控制硬件。
6.根据权利要求4所述的微处理器,其特征在于,该控制硬件包括下列之一或其组合:
一结构控制暂存器,其中响应于微处理器解码命令,该微处理器读取该结构控制暂存器的一使用者程序指令,该微码单元还用于从该结构控制暂存器读取一数值以及载入从该结构控制暂存器读取的该数值到该微处理器的一通用目的暂存器;
一修补硬件,用于储存一微码修补指令,其中响应于该微处理器产生一撷取地址以撷取该微码单元的一指令,该修补硬件提供该微码修补指令;
一第一特征控制暂存器,用于提供该控制值的至少一部分到该微处理器的该电路以控制该微处理器的一特征单元禁能或致能;
一第二特征控制暂存器,用于提供该控制值的至少一部分到该微处理器的该电路以控制该微处理器的电源管理;以及
一组态暂存器,用于提供该控制值的至少一部分以控制该微处理器内的至少一时脉产生电路所产生的时脉信号的频率。
7.根据权利要求1所述的微处理器,其特征在于,该微处理器还用于在使用该校正后的数值将该控制值写入到该控制硬件之前,修改该校正后的数值以产生该控制值。
8.一种初始化微处理器的方法,其特征在于,包括:
读取一第一多条熔线与一第二多条熔线,其中该第一多条熔线根据一既定值选择性地被烧断,该第二多条熔线根据一错误校正值选择性地被烧断,该错误校正值计算自烧入该第一多条熔线的该既定值;
使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的一错误;
使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;
使用校正后的数值将一控制值写入一控制硬件,其中该控制硬件用于接收与储存该控制值以及提供该控制值到该微处理器的至少一电路以控制该微处理器的操作;以及
当读取自该第一多条熔线的数值的该错误无法校正时,防止该微处理器撷取与执行使用者程序指令;
其中该读取、侦测、校正、使用与防止的步骤响应于该微处理器被重置而执行。
9.根据权利要求8所述的初始化微处理器的方法,其特征在于,还包括:
利用一错误侦测与校正演算法,使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的该错误,以及使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;以及
在撷取与执行使用者程序指令之前使用该校正后的数值将该控制值写入该控制硬件。
10.根据权利要求8所述的初始化微处理器的方法,其特征在于,该微处理器还包括一错误侦测与校正单元,其中该错误侦测与校正单元使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的该错误,以及使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值。
11.根据权利要求8所述的初始化微处理器的方法,其特征在于,该微处理器包括一微码单元,该初始化微处理器的方法还包括:
通过该微码单元读取该第一多条熔线与该第二多条熔线;
通过该微码单元使用读取自该第二多条熔线的数值侦测读取自该第一多条熔线的数值的该错误;
通过该微码单元使用读取自该第二多条熔线的数值将读取自该第一多条熔线的数值校正为该既定值;
通过该微码单元使用该校正后的数值将该控制值写入该控制硬件;以及
当读取自该第一多条熔线的数值的该错误无法校正时,通过该微码单元防止该微处理器撷取与执行使用者程序指令。
12.根据权利要求11所述的初始化微处理器的方法,其特征在于,该微处理器还包括一随机存取存储器,其中该微码单元从该第一多条熔线与该第二多条熔线读取数值到该随机存取存储器,以及该微码单元使用该校正后的数值将该控制值从该随机存取存储器写入到该控制硬件。
13.根据权利要求11所述的初始化微处理器的方法,其特征在于,更包括下列步骤之一或其组合:
响应于微处理器解码命令,该微处理器读取一结构控制暂存器的一使用者程序指令,该微码单元从该结构控制暂存器读取一数值并且载入从该结构控制暂存器读取的该数值到该微处理器的一通用目的暂存器;
响应于该微处理器产生一撷取地址以撷取该微码单元的一指令,一修补硬件提供一微码修补指令,其中该修补硬件用于储存该微码修补指令;
提供该控制值的至少一部分到该微处理器的该电路以控制该微处理器的一特征单元禁能或致能;
提供该控制值的至少一部分到该微处理器的该电路以控制该微处理器的电源管理;以及
提供该控制值的至少一部分以控制该微处理器内的至少一时脉产生电路所产生的时脉信号的频率。
14.根据权利要求8所述的初始化微处理器的方法,其特征在于,还包括:
在使用该校正后的数值将该控制值写入该控制硬件之前,修改该校正后的数值以产生该控制值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15802609P | 2009-03-06 | 2009-03-06 | |
US61/158,026 | 2009-03-06 | ||
US12/609,207 US8234543B2 (en) | 2009-03-06 | 2009-10-30 | Detection and correction of fuse re-growth in a microprocessor |
US12/609,207 | 2009-10-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101794249A CN101794249A (zh) | 2010-08-04 |
CN101794249B true CN101794249B (zh) | 2012-02-08 |
Family
ID=42586959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101275234A Active CN101794249B (zh) | 2009-03-06 | 2010-03-05 | 微处理器及初始化微处理器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101794249B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106663009B (zh) * | 2014-07-10 | 2021-08-17 | 哈曼国际工业有限公司 | 操作系统启动加速 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5384727A (en) * | 1993-11-08 | 1995-01-24 | Advanced Micro Devices, Inc. | Fuse trimming in plastic package devices |
US7030641B1 (en) * | 2003-09-18 | 2006-04-18 | Analog Devices, Inc. | Programmable fuse state determination system and method |
US7663957B2 (en) * | 2008-05-27 | 2010-02-16 | Via Technologies, Inc. | Microprocessor with program-accessible re-writable non-volatile state embodied in blowable fuses of the microprocessor |
-
2010
- 2010-03-05 CN CN2010101275234A patent/CN101794249B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101794249A (zh) | 2010-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103123597B (zh) | 微处理器及其所适用的测试方法 | |
US8234543B2 (en) | Detection and correction of fuse re-growth in a microprocessor | |
US8051337B2 (en) | System and method for fast cache-hit detection | |
CN101561796B (zh) | 微处理器及其可复写非易失性状态的新值写入方法 | |
EP4012554B1 (en) | Chip patching method and chip | |
CN102609320B (zh) | 微处理器与于微处理器中配置除错逻辑的方法 | |
CN101794249B (zh) | 微处理器及初始化微处理器的方法 | |
US7975182B2 (en) | Method, system and computer program product for generating trace data | |
JP2007087413A (ja) | ルックアップしたエントリーの重複検出方法および装置 | |
JPH10500517A (ja) | 障害を有するマイクロコードを訂正するためのデータ処理装置および方法 | |
US11210188B1 (en) | Systems and methods for processor monitoring and recovery | |
EP3746900A1 (en) | Controlling guard tag checking in memory accesses | |
Papadimitriou et al. | Unveiling difficult bugs in address translation caching arrays for effective post-silicon validation | |
US8069376B2 (en) | On-line testing for decode logic | |
CN101894062B (zh) | 微处理器以及其所适用的操作方法 | |
CN101930390B (zh) | 微处理器及其所适用的操作方法 | |
CN101930391B (zh) | 微处理器及其所适用的测试方法 | |
US20200035319A1 (en) | System and Method for Testing Processor Errors | |
TWI737628B (zh) | 修改資料處理單元的行為 | |
TWI789983B (zh) | 電源管理方法及電源管理裝置 | |
US9645882B2 (en) | Field repairable logic | |
CN101930386A (zh) | 微处理器及其所适用的初始化方法 | |
Kadayif et al. | Reliable address translation for instructions | |
Pflanz | Fault Models and Fault-Behavior of Processor Structures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |