- 相關(guān)推薦
CPU微碼升級(jí)與補(bǔ)丁
cpu微碼是指一個(gè) CPU 的指令集作為一微碼指令(微指令)的序列。其中每個(gè)典型地由很多位域和下一個(gè)微指令執(zhí)行的地址組成。那么,CPU微碼怎么升級(jí)?CPU微碼怎么進(jìn)行補(bǔ)丁呢?歡迎大家閱讀!更多相關(guān)信息請(qǐng)關(guān)注相關(guān)欄目!
在十多年前的Pentium時(shí)代,INTEL曾經(jīng)發(fā)布過(guò)有缺陷的CPU,因?yàn)楦↑c(diǎn)運(yùn)算表邊界上有幾個(gè)數(shù)據(jù)錯(cuò)誤,導(dǎo)致在某些應(yīng)用會(huì)出現(xiàn)錯(cuò)誤,這個(gè)錯(cuò)誤概率很小,出錯(cuò)幾率小于千萬(wàn)分之一,但在還是被捅出來(lái)了。INTEL為此召回CPU。
從PentiumPro起,INTEL決定給CPU留出一個(gè)補(bǔ)丁接口,當(dāng)CPU內(nèi)部有缺陷的時(shí)候,通過(guò)加載微碼(Microcode),可以修復(fù)CPU的部分缺陷。
INTEL說(shuō),他們只測(cè)試過(guò)的CPU都是加載了微碼的,如果沒(méi)有加載微碼,INTEL不保證會(huì)出現(xiàn)什么問(wèn)題。
現(xiàn)在的CPU有一個(gè)CPUID,通過(guò)執(zhí)行CPUID指令,可以知道當(dāng)前CPU的版本和Stepping。根據(jù)這個(gè)信息,再給CPU打相應(yīng)的補(bǔ)丁。
就是CPUID=06D2,Rev.A2
何時(shí)給CPU打補(bǔ)丁?
在給CPU初始化的時(shí)候,就需要把INTEL提供的微碼寫(xiě)進(jìn)CPU去,因此,加載CPU微碼就是系統(tǒng)BIOS的任務(wù)。
如果系統(tǒng)的CPU是可更換的,那么其微碼也需要更換。因此,在BIOD里,一般要包進(jìn)若干個(gè)ID的CPU微碼,以便工廠安排不同的SKU出貨。如果BIOS發(fā)布是在CPU發(fā)布之前,那么BIOS里很可能就沒(méi)有包進(jìn)最新的微碼,這個(gè)系統(tǒng)要使用新CPU的時(shí)候,CPU微碼是無(wú)法加載的。
另外,BIOSROM容量有限,一個(gè)微碼補(bǔ)丁最小有2K,如果平臺(tái)兼容的CPU很多,則微碼數(shù)量是十分巨大的,臺(tái)式機(jī)某些主板可能兼容20多個(gè)CPU版本,那么微碼的體積很大,BIOS里根本包不下這么多東西,于是,廠商不得不縮水,去掉一些不常用的微碼。這些不常用的微碼一般都是早期的CPU,如DOTHAN早期的ASTEPPING就很可能沒(méi)有對(duì)應(yīng)的微碼包進(jìn)你的本本中去。
不打補(bǔ)丁會(huì)有什么問(wèn)題?
INTEL說(shuō)他們沒(méi)測(cè)過(guò)不打補(bǔ)丁的CPU,也就不知道會(huì)出什么問(wèn)題。呵呵,這顯然,他們不想說(shuō)太多技術(shù)細(xì)節(jié)而已。以俺的經(jīng)驗(yàn),如果不打補(bǔ)丁,99.99%的時(shí)候,用戶(hù)是感覺(jué)不到的,除非問(wèn)題特別突出。只是俺遇到過(guò)幾個(gè)明顯的例子,為此出了幾身汗。有幾個(gè)案例:
1,某PrescottCPU,在臺(tái)式機(jī)上發(fā)熱量特別大,超出DesignPoint,后來(lái)發(fā)現(xiàn)沒(méi)加載微碼,加上微碼就正常了;
2,某PentiumDCPU,進(jìn)WINDOWSXP會(huì)藍(lán)屏,以安全模式進(jìn)去后,安裝一個(gè)SP2補(bǔ)丁,就正常了。后來(lái)查出,也是微碼沒(méi)加載;
3,某PentiumM架構(gòu)CPU,在使用CPU內(nèi)部TSC時(shí),發(fā)現(xiàn)測(cè)出的CPU內(nèi)部頻率高出實(shí)現(xiàn)的4倍,如2GHzCPU測(cè)出卻有8GHz,后查,也是沒(méi)加載微碼造成的.異常。
此類(lèi)案例很多,特別是Core架構(gòu)CPU,不但微碼必須加載,而且要求盡早加載,否則,連BIOS都跑不完,系統(tǒng)就掛了。但是INTEL但至今沒(méi)有任何官方對(duì)每個(gè)CPU微碼版本進(jìn)行描述的文件。
怎么檢查CPU微碼是否加載?
加載微碼后,在CPU的MSR(機(jī)器特定寄存器)里可以讀出版本號(hào)。INTELIA-32編程手冊(cè)上給出標(biāo)準(zhǔn)檢查方法:
MOVECX,008bh
XOREAX,EAX
XOREDX,EDX
WRMSR;向MSR8BH寫(xiě)0,清除MSR中的信息。
MOVEAX,0001
CPUID;讀CPUID,讓CPU查看微碼版本,并把微碼版本送到MSR8B中。
MOVECX,008bh
RDMSR;讀出當(dāng)前CPU微碼版本。
執(zhí)行上面的代碼后,如果EDX的值為0,則說(shuō)明你的CPU微碼是沒(méi)有沒(méi)加載的,你的CPU運(yùn)行在有缺陷的狀態(tài)。如果不為0,則顯示的是當(dāng)前微碼版本號(hào)。
以上代碼可以在DOS環(huán)境下,用DEBUG32調(diào)試界面執(zhí)行。
我很郁悶……
我有一個(gè)雜牌的本本,上的是DothanCPU,某一天,俺升級(jí)CPU,卻發(fā)現(xiàn)發(fā)熱水平異常,于是檢查微碼加載情況,果然,BIOS里沒(méi)有這種CPU版本的微碼。
換回原來(lái)的原廠CPU繼續(xù)一測(cè),竟然也沒(méi)有加載微碼。
后來(lái)?yè)Q了BaniasCPU才測(cè)到CPU微碼加載上了。也就是說(shuō),廠商在升級(jí)CPU的時(shí)候,居然沒(méi)有升級(jí)BIOS,這就是某些小品牌電腦廠商的水平,郁悶。
你的CPU升了么?
很多同學(xué)把低配的T4X本本換了CPU,不知道這些同學(xué)用得怎么樣,呵呵,你檢查過(guò)你的CPU微碼么?BIOS有升級(jí)支持么?
【CPU微碼升級(jí)與補(bǔ)丁】相關(guān)文章:
成長(zhǎng)的補(bǔ)丁作文02-25
美麗的補(bǔ)丁的作文04-06
生命的補(bǔ)丁作文12-17
CPU經(jīng)常超頻對(duì)CPU的壞處02-06
生命的補(bǔ)丁初中作文02-11
打補(bǔ)丁小學(xué)作文12-09
補(bǔ)丁高一作文11-20
cpu的運(yùn)算09-07