當一個主板芯片被設計出來以后,工程師們就會不斷的開發(fā)新的主板驅(qū)動,不斷的挖掘主板芯片的潛在的性能。那么工程師們調(diào)節(jié)的是哪里呢?同樣的主板芯片,一些主板廠商的獨門絕技中,往往有驚人的調(diào)節(jié)功能,比如降溫,打開PAT等,這些其實都是主板芯片本來就支持的。那么這些主板廠商是如何打開這些隱蔽的功能的呢?這就是寄存器的調(diào)節(jié)。
在這里,我們將會知道通過修改寄存器,我們能優(yōu)化主板哪些方面的性能。
我們知道目前應用的北橋主要負責CPU、內(nèi)存總線、AGP總線和PCI總線部分,這樣我們就可以針對這幾個方面進行相關(guān)的優(yōu)化。
1. 關(guān)于CPU的北橋寄存器修改
A. 通過修改北橋寄存器降溫
這是很多人都關(guān)注的地方,甚至有人把寄存器修改軟件做為降溫軟件來看待。
我們知道,CPU由CMOS電路構(gòu)成。下面的公式顯示了功耗P,CMOS門電容C,開關(guān)頻率f及供電電壓V之間的關(guān)系:P=CfV^2,其中,CMOS門電容C為常量。開關(guān)頻率f和供電電壓V可根據(jù)實際的應用要求而調(diào)整。供電電壓V和開關(guān)頻率f之間的關(guān)系為:V正比于f。即更高的開關(guān)頻率需要更高的供電電壓支持。
我們可以看出:從CMOS的角度來看,執(zhí)行一個指令所需的能耗是相同的,所以降低CMOS頻率不能減少耗電量,因為在高的時鐘頻率下,CPU僅僅是加快了完成工作的速度,但在空閑狀態(tài)下停留的時間會更長。所以空閑狀態(tài)的存在是只降低頻率無法節(jié)約能耗的原因。
如果電壓隨著頻率一起降低,從公式P=CfV^2可以看出,電壓的平方V^2與功耗P成正比,降低一點電壓,功耗便大大減少。這樣,每執(zhí)行一條指令的能耗就隨之降低。為了準確的控制系統(tǒng)運行時與CPU相匹配的電壓及頻率的動態(tài)配比,目前電壓控制技術(shù)都集成到CPU內(nèi)部。同時,CPU廠商指定一些操作電壓與頻率之間的組合配置。
在實際工作中,CPU并非一直處于工作狀態(tài),即滿負荷(full load),大約有40%的情況下空閑(no load),即空閑模式(Idle Mode)。目前,幾乎所有的CPU設計都有空閑模式。當操作系統(tǒng)發(fā)現(xiàn)CPU當前沒有可執(zhí)行的任務時,便將CPU置于空閑狀態(tài)。在空閑模式狀態(tài)下,可以關(guān)閉不需要的時鐘,以減少不必要的功耗。
當系統(tǒng)發(fā)生中斷時,CPU從空閑狀態(tài)被喚醒。大多數(shù)系統(tǒng)都有操作系統(tǒng)計時器中斷,這樣CPU在一秒鐘之內(nèi)可能幾千次地進出空閑狀態(tài)。CPU時鐘的“閑置”通常由“停止”或“閑置”指令觸發(fā),在應用或操作系統(tǒng)閑置時進行調(diào)用。
目前的降溫軟件就是通過在CPU空閑時發(fā)送HLT(halt)指令,CPU將HLT指令插入指令序列,并停止處理指令序列,直到發(fā)生中斷為止。
發(fā)生中斷后,CPU重新回到Normal狀態(tài)處理指令,處理完中斷代碼后繼續(xù)從HLT指令的下一條指令執(zhí)行,進入Halt模式。這個過程實現(xiàn)起來也很簡單,可以做一個最低優(yōu)先級的任務做死循環(huán)處理,系統(tǒng)在空閑時都進入該任務。我然后此任務的循環(huán)中加入一條HLT指令即可,這樣就實現(xiàn)了Auto Halt模式。
處理器在進入Halt模式后功耗將有所下降,我們在CPU的溫度監(jiān)控上可以看到7度左右的降低,這樣在CPU內(nèi)核應該有10度左右的溫降。
提到Halt模式,我們就必須談另一個相關(guān)的概念:S2K。
S2K(S2K,S2K Bus,是源于Alpha 21164/21264的EV6 Bus介面協(xié)定,采用點對點Point to Point設計)時序控制寄存器(S2K Timing Control)。實際上,AMD要求后來的北橋芯片在設計上都要通過S2K總線分離技術(shù)的認證。
在不損失性能的前提下使CPU在空閑時降低功耗,即前面我們提到的利用HLT指令降低功耗。Disconnect Enable When STPGNT Detected寄存器就對應著這部分。通過寄存器開啟S2K Timing Control,當系統(tǒng)總線空閑的時候Disconnect S2K,從而降低CPU功耗。
如下圖:
S2K總線分離技術(shù)需要北橋芯片組和BIOS的支持。但此技術(shù)并不能保證在任何系統(tǒng)上都能正常運行,在早期的主板上可以導致PCI設備不穩(wěn)定。
這可能是由于北橋芯片在設計上存在缺陷或是主板廠商存在設計或是其他方面的問題,于是處于穩(wěn)定的考慮,很多主板的BIOS中并沒有此選項可以設置。我們需要做的,就是通過寄存器設置,打開北橋芯片對S2K總線分離技術(shù)的支持。
B. 通過HALT指令降溫是否對系統(tǒng)的執(zhí)行效率和實時性構(gòu)成影響
處理器空閑模式僅影響處理器本身,但對系統(tǒng)的其他硬件不產(chǎn)生影響。那么對操作系統(tǒng)時候有影響呢?
我們來看下圖:
這是AMD Athlon XP電源管理狀態(tài)(Power Management States)圖。圖中有Halt、Probe State、Stop Grant 、Working、Stop Grant Cache Not Snoopable Sleep 等電源模式。其中,Working為CPU正常運行狀態(tài)。
當系統(tǒng)執(zhí)行HLT指令,CPU進入Halt 狀態(tài),但此時不關(guān)閉SMI#, INTR, NMI, INIT# RESET#偵聽,當CPU收到在RESET#指令后,同時初始化回到Working狀態(tài)。在Halt狀態(tài)下,系統(tǒng)會產(chǎn)生一個 STPCLK#信號,當CPU接收到STPCLK#信號,則進入 Stop-Grant狀態(tài),在Stop-Grant狀態(tài),RESET#信號會讓CPU迅速的初始化。
當 STPCLK#中斷后,CPU返回 Halt狀態(tài)。在 Stop-Grant狀態(tài)和Halt狀態(tài),CPU可以對系統(tǒng)總線發(fā)出的snoop事件做出反應。Halt狀態(tài)對CPU占用率、系統(tǒng)操作的實時性并沒有影響。
在Halt狀態(tài)和非Halt狀態(tài),CPU占用率是一樣的,因為操作系統(tǒng)計算任務的CPU占用時間時是以任務的上下文切換作為統(tǒng)計觸發(fā)條件。當任務在執(zhí)行HLT指令時操作系統(tǒng)并沒有進行任務上下文切換,操作系統(tǒng)把CPU 進入Halt狀態(tài)的這段時間依然認為是被該任務占用的時間。HLT指令對系統(tǒng)的實時性沒有影響,并不會引起系統(tǒng)的延遲。
C.關(guān)于北橋芯片的散熱
目前主板廠商在北橋芯片的散熱上通常采用兩種方式:一是大散熱片,比如ASUS和INTEL的主板。一是風扇加小散熱片,采用這樣散熱方式的廠商很多。
北橋芯片集成的寄存器和晶體管想對于CPU來講少的很多,運行頻率不高,晶體體積也比CPU稍大,裸芯封裝。理論上的耐熱程度要比CPU高。主板在出廠前都要在高溫實驗室做老化測試。保證在極端的溫度下不出現(xiàn)問題。
通過加裝大型散熱片同時有CPU風扇的側(cè)風。在主板供電穩(wěn)定,系統(tǒng)頻率穩(wěn)定的情況下,不會出現(xiàn)過熱問題。在INTEL 、NIVDIA 、VIA等芯片廠商的技術(shù)白皮書里也沒有強調(diào)該芯片必須加裝風扇才正常工作。這和廠商的設計風格有關(guān)。
加裝風扇,限與成本的問題,很少采用大廠的優(yōu)秀的產(chǎn)品。這樣風扇的使用壽命和噪音無法控制。同時加大了供電系統(tǒng)的負擔。有些情況下是主板廠商故意對北橋芯片進行超頻,加壓導致熱量無法控制,不得不采用主動散熱方式。
D.相同散熱條件下的CPU,溫在不同廠商的主板上溫度顯示的巨大差異
我們修改北橋寄存器來控制CPU空閑階段的溫升,并沒有橫向可比性。只是相對于你自己的系統(tǒng)以前的溫度來說。相同的散熱條件指的是風扇和散熱片一樣。同一個CPU(外頻和倍頻不變、CPU電壓不變),在主板的BIOS我們把電壓設置為AUTO,排除了不同主板電壓的差異導致的CPU溫度顯示的不同,大概在2-3度。這樣理論上CPU的溫度是一樣的。
可是我們看BIOS顯示的溫度,不同的主板,溫度相差最多到了10度以上。讓人奇怪的是,某大廠的旗艦KT400主板,CPU為AXDA1800DLT3C JIUHB 0312RPMW OC 2600+,12.5*166=2083MHz電壓1.60V在2500轉(zhuǎn)的風扇下,采用某散熱廠商的塞銅工藝的鋁散熱片,溫度為33度到36度。比該廠商主板監(jiān)控軟件顯示的系統(tǒng)溫度40度都低。在這樣的條件下,這是不可能的。
我們知道,主板的溫度檢測主要有兩種方法,一是通過CPU插座中的溫度探針或熱敏電阻;一是根據(jù)CPU內(nèi)置熱敏電阻針腳的電壓值來確定溫度。對于上面我們提到的情況,這是通過 BIOS 的改動來調(diào)低CPU溫度的顯示,而不是CPU溫度的實際體現(xiàn)。這種情況在業(yè)界是存在的,即使是某些大廠。
我們以常見的Athlon XP來說,在CPU的bottomside view(底部視圖)上,S7、U7這個位置的針腳THERMDA、THERMDC為熱敏二極管。AMD的CPU核心溫度的計算公式為Td=1.029c-0.209Ta-1.3778,其中,Td是核心DIE溫度,Ta是環(huán)境溫度,Tc是主板上的熱敏電阻測得的溫度,就是我們在BIOS中看到的溫度。
我們可以通過主板SocketA上的S7(THERMDA),U7(THERMDC)針腳,接一個電子測溫器來直接讀出核心的實際的溫度。這是最準確的,可以排除廠家在BIOS的溫度監(jiān)測上做的手腳。
E.調(diào)節(jié)CPU倍頻在北橋寄存器上也可以體現(xiàn)出來,但北橋芯片廠商出于穩(wěn)定性考慮,往往把這一項設置為不可調(diào)節(jié)。
關(guān)于CPU方面的調(diào)節(jié)還有電壓和外頻調(diào)節(jié)。目前幾乎所有的主板在BIOS中都可以很方便的調(diào)節(jié),不贅述。
2.關(guān)于內(nèi)存的北橋寄存器的修改
A.關(guān)于內(nèi)存設計的幾個方面
我們以目前應用廣泛的184pin DDR內(nèi)存為例。
DDR一個很重要的方面就是使用了Delay-Locked Loop (DLL,延時鎖定回路即數(shù)據(jù)瑣向環(huán),鎖定和調(diào)整內(nèi)部時鐘)來提供數(shù)據(jù)濾波信號(DataStrobe signal)。
數(shù)據(jù)有效時,存儲控制器使用這個數(shù)據(jù)濾波信號來精確定位數(shù)據(jù)。每16位做一次輸出(內(nèi)存核心中的I/O寄存器在時鐘信號上升沿時輸出8位數(shù)據(jù),在下降沿同樣輸出8位數(shù)據(jù),數(shù)據(jù)在時鐘的上升沿和下降沿都可以讀取),并且同步來自不同的雙存儲器模塊的數(shù)據(jù)。
DQS(Bi-directional Data Strobe雙向數(shù)據(jù)控制引腳)指針在讀周期由DDR發(fā)送,在寫周期由控制器發(fā)送。
輸入輸出數(shù)據(jù)均參照DQS信號,用于數(shù)據(jù)對齊。DDR DRAM以差動時鐘信號工作,使噪音干擾最小。 同時,DDR讓內(nèi)存控制器每一組DQ/DQS/DM與DIMM上的顆粒相接時,維持相同的負載,這樣就減少了對主板的影響。
每個DIMM(DIMM,Dual In-line Memory Module雙面引腳內(nèi)存)槽最大支持的內(nèi)存數(shù)值為尋址空間乘數(shù)據(jù)寬度。理論上,每個DIMM槽支持最大容量:4GB = 214 x 214 x 8 Byte。限于內(nèi)存顆粒制造工藝,目前常用的DIMM槽的內(nèi)存容量最大為1GB。
內(nèi)存引腳分為:地址引腳、數(shù)據(jù)引腳(包含校驗位引腳)、片選等控制信號、時鐘信號。其中REGE引腳即為寄存器 (Registered) 允許信號。
B.SPD
SPD(SPD Serial Presence Detect 內(nèi)存序列存儲芯片),是8針TSSOP(Plastic Thin Small Outline Package)封裝的串行存儲EEPROM,容量2048bit。廠商用于存儲內(nèi)存芯片臨界時鐘參數(shù)、廠商參數(shù)相關(guān)特征參數(shù)。主板芯片組能通過SPD來準確設定內(nèi)存工作狀態(tài)。每個DIMM的SPD數(shù)據(jù)讀寫時鐘線SCL和數(shù)據(jù)線SDA共享一條總線。
在每次讀取該EEPROM的時,北橋芯片先向該芯片發(fā)送3位片選信號和8位地址信息。然后經(jīng)過多條DIMM上的SPD信息協(xié)調(diào),然后所選DIMM上的內(nèi)存SPD芯片的信息就會被記錄在北橋內(nèi)存控制器的寄存器(Register)中。
C.Registered內(nèi)存
標準化協(xié)會定義了兩種DDR內(nèi)存。一種是無緩沖DDR DIMM,主要應用在PC上。另一種是緩沖DDR DIMM,將PCB上PLL(Phase Locked Loop,鎖相環(huán),調(diào)節(jié)時序、增加時鐘驅(qū)動力)與緩存寄存器(Register)結(jié)合在一起,解決了在服務器應用中隨著DIMM槽的增多,內(nèi)存系統(tǒng)各個引腳間的引線長度會產(chǎn)生較大差別,從而導致信號時序會產(chǎn)生錯位的問題。
原理很簡單,通過在內(nèi)存上添加鎖相環(huán)電路和寄存器,這樣內(nèi)存控制信號直接針對寄存器而不必直接針對數(shù)量龐大的內(nèi)存芯片。降低了控制芯片負載,提高信號的質(zhì)量,保證了數(shù)據(jù)同步。增強了系統(tǒng)的穩(wěn)定性,但對于單個的讀寫訪問,會滯后一個時鐘周期。
如下圖,內(nèi)存寄存器和鎖相環(huán)電路:
Register芯片的時鐘信號由PLL提供。PLL有一個時鐘輸入,一個Feedback反饋輸入,數(shù)個時鐘輸出和一個Feedback反饋輸出。通過調(diào)節(jié)FBin和SDRAM的時鐘相位差為零,使PLL時鐘輸入端和SDRAM的時鐘輸入端的相位差為零。PLL的兩個輸入間延遲為零,即FBin、CKin之間的相位差為零。同時所有輸出(包括FBout之間)的相位差都為零。
Register芯片時鐘輸入相位與SDRAM時鐘輸入相位的延遲,可以調(diào)節(jié)PLL到Register的走線長度和輸入電容來確保正常的地址、控制信號采樣。這兩個時鐘間的延遲在設計設計過程中可以根據(jù)實際情況做出控制優(yōu)化。Register芯片的時鐘輸入相位,在Raw card的設計中一般置為與SDRAM的時鐘輸入相位相同。
PLL電路對主板產(chǎn)生的時鐘信號進行跟蹤、鎖定,使主板時鐘電路與內(nèi)存模組保持同步,同時確保信號驅(qū)動寄存器和內(nèi)存芯片不產(chǎn)生時鐘漂移。
例如,在AMD 760MPX芯片組搭建的SMP系統(tǒng)中,可以通過調(diào)節(jié)北橋中內(nèi)存控制電路寄存器關(guān)于ECC的設置,來決定采用普通DDR內(nèi)存還是采用Registered內(nèi)存。
3.關(guān)于AGP的北橋寄存器修改
AGP(Accelerated Graphics Port)加速圖形端口,是PCI技術(shù)標準的擴充,在北橋芯片中包含對應的AGP控制器部分。如下圖分別為AGP顯卡的AGP控制圖示和AGP的與北橋相連的走線圖。
AGP顯卡的AGP控制圖示
我們通過修改北橋寄存器對應的AGP控制部分,可以更改AGP快寫方式、AGP aperture(孔徑)、AGP邊帶尋址等參數(shù),達到優(yōu)化顯示系統(tǒng)的目的。