標籤

2009年10月21日 星期三

Speed Step

關於1A0(IA32_MISC_ENABLE)以及199(IA32_PERF_CTL),198(IA32_PERF_STATUS),自己project的CPU一定有Spec可以看到的,如果沒有就向Intel的FAE要吧。
; R9 m5 }% ^0 u9 q6 D計匠網論壇IA-32 ASDM volume 3也提到一點點,特別是1A0(IA32_MISC_ENABLE).
/ Y' s* D' A7 i+ |www.ufoit.com
! f& c, E/ n- [6 g5 p oBIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,計算機研發,EC資料,EC開發,PS/2,KBC對於Intel speedstep,我這裡摘抄一篇深圳頂星數碼的同志所發表一篇絕好的技術簡介文檔給你做參考。
1 V3 z' r& x1 s' i$ [0 }4 Q7 vBIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,計算機研發,EC資料,EC開發,PS/2,KBC
; S8 u0 |3 ?8 z2 m2 U( o& d* y H計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC

英特爾增強SpeedStep技術簡介BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,計算機研發,EC資料,EC開發,PS/2,KBC; V+ d7 i+ \3 Q6 J' t
來自:http://www.topstardigital.cn/TechIntro-14.htm

www.ufoit.com# g& @1 a# D/ {. u
計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC# |8 ~% h8 i: F0 G' X
對於英特爾的SpeedStep節能技術,很多人可能已不再陌生。SpeedStep技術是一項旨在徹底區分台式機CPU與筆記本電腦專用CPU的性 能,並與系統運行速度有密切關係的新技術,原來的代號是「Geyserville」。簡單地說,採用SpeedStep技術的筆記本電腦,可以根據不同的 使用環境,對CPU的運行速度進行合理調整。SpeedStep技術的基本工作過程是:如果筆記本電腦使用的是外接電源,CPU將按照正常的主頻率及電壓 運行;當專用軟件檢測到筆記本電腦切換到電池電源供電時,將自動切換筆記本電腦CPU的主頻率及電壓至較低運行狀態;當筆記本電腦恢復使用外接電源 時,CPU又自動切換回到最高主頻率及正常電壓下工作,使之全速運行。從技術上分析可知,同一處理器工作時,運行速度越快,工作電壓越高,功耗也越大;相 反,處理器的運行速度降低後,工作電壓會降低,功耗和發熱量也會降低。 BIOS技術網站,BIOS技術論壇,BIOS入門,BIOS開發,計算機研發,EC資料,EC開發,PS/2,KBC, R, j- `: Y1 `, g" @% s

; _0 U4 k, v( R" g1 x8 }1 Z* [# r# m計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC在 去年(2003年),英特爾又推出了內部代號為「Geyserville III」的增強SpeedStep技術,首先在Pentium M處理器實現,支持的平台包括Odem和Motora等855系列芯片組。其與原有的SpeedStep主要有兩點區別:第一點,增強的 SpeedStep(簡稱EIST)使得原有的性能等級從兩階增加到多階,是的性能切換更加靈活,例如,1.4G Pentium 4M的有600M和1.4G兩檔,但是對於支持1.4G Pentium M處理器而言,就有600M、800M、1G、1.2G和1.4G五個頻率檔次。第二點,增強的SpeedStep可以直接通過對處理器的MSR寄存器編 程來實現頻率,大大減少了頻率切換時間,而原來的SpeedStep依賴於對Chipset的IO端口編程實現,所以切換延時較大。計匠網論壇/ L8 } I+ r! x
BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,計算機研發,EC資料,EC開發,PS/2,KBC/ b6 r# g/ m' B3 y. v4 l% ?8 E
下面我們簡單介紹一下對於SpeedStep的支持固件編程相關知識。計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC0 S, L3 M& R0 |) F' y( B I
www.ufoit.com, r, Q+ A4 ]9 K7 `9 u
我們知道,處理器的性能狀態是由離散的電壓和頻率對定義的。在不同的頻率和電壓下,處理器的執行性能也是不同。EIST提供了一個全新的方法來改變 CPU的性能狀態,這種方法本身是基於CPU MSR寄存器,而不是基於Chipset的,所以這種方法具有硬件軟件的轉變過渡時間少、系統設計簡單等特點。Intel的奔騰M處理器提供了兩個MSR 寄存器來實現EIST功能,一個是IA32_PERF_CTL和IA32_PERF_STS,我們通過寫IA32_PERF_CTL來實現CPU性能的狀 態轉變,主要是設置BUS_RATIO_SEL和VID_SEL位域。一旦設置完之後,CPU隨後馬上進行RATIO和VID的切換,如果在切換的過程中 間有新的值更新IA32_PERF_CTL寄存器,那麼,在CPU完成系統狀態切換之後,CPU馬上進行本次新的性能切換。
4 l/ a; U. ~& ]* ^. U計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC
* e3 f$ K9 U) |( W2 u) W: U 如果我們讀取IA32_PERF_CTL,這只表明上次更新所期望的CPU性能置,並不表示CPU的當前性能值,因為,如果CPU處在thermal throttle的過程中,那麼,CPU會暫停性能的切換,直到thermal throttle的結束。& O9 y8 V$ F1 L/ r) }( U

' h) f6 h1 }) _計匠網論壇 如果我們想確定CPU的當前性能狀態,我們可以通過讀取IA32_PERF_STS寄存器的值來確定。這個寄存器包括一些主要信息,如 BUS_RATIO_STS和VID_STS域表明當前的頻率和電壓值,這些信息是動態更新的。這個寄存器同樣也包括了系統BOOT時和系統所支持的最大 性能點。 BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,計算機研發,EC資料,EC開發,PS/2,KBC5 y* h- K: e1 \2 J& z
BIOS技術網站,BIOS技術論壇,BIOS入門,BIOS開發,計算機研發,EC資料,EC開發,PS/2,KBC) y7 P" I1 p' `* L, ]( g8 G
在Windows XP下,OS查找PSS表,找出其想進入的狀態,查找控制值,然後把控制值寫入控制寄存器中間。系統有兩種方式進入實現控制動作,一種是透過SMM模式進 行,一種是OSPM通過G3寄存器直接寫。到底是採用哪種方式依靠_PCT這個對象決定。而在_PCT內部,實際上是根據系統OSPM的性能確定返回哪種 控制方式的,也就是採用SMM Model和Processor Native Mode。BIOS技術網站,BIOS技術論壇,BIOS入門,BIOS開發,計算機研發,EC資料,EC開發,PS/2,KBC" F! L* n! u( ]
BIOS技術網站,BIOS技術論壇,BIOS入門,BIOS開發,計算機研發,EC資料,EC開發,PS/2,KBC9 F9 V3 m7 X6 F6 D5 u! q5 ?7 |
我們知道,OS是這樣實現處理器性能的控制的,首先,OSPM通過ACPI表得知系統支持的處理器狀態,然後OSPM根據其對於系統當前狀態的評估,確 定進入哪種處理器狀態。在確定進入何種狀態之後,OSPM決定這種方法是否是其支持的方法,否則回去調用CPU的驅動程序完成相關動作。一般OSPM直接 支持的方法就是IO之類的傳統方法。 計匠網論壇6 u o! B- @' o7 {

$ x; w2 X: {9 _! v3 M* \BIOS技術網站,BIOS技術論壇,BIOS入門,BIOS開發,計算機研發,EC資料,EC開發,PS/2,KBC 所 以,如果OSPM不是透過SMM去完成對於MSR的IA32_PERF_CTL和IA32_PERF_STS操作,那麼,OSPM必須去調用處理器的驅動 程序,驅動程序的存在必須告知ACPI,使得ACPI的_PCT的返回是直接對於IA32_PERF_CTL和IA32_PERF_STS操作,而這是依 賴於_PDC這個方法完成的,_PDC是OSPM用來告訴ACPI其是否支持直接對於IA32_PERF_CTL和IA32_PERF_STS操作,是 OSPM向ACPI傳遞消息的一種途徑。
# S3 c3 q0 o& R5 hwww.ufoit.com計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC% h' ^" P8 v4 U7 w' o
_FDC是OSPM在進行所有處理器操作之前首先調用的一個方法,這個方法有處理器的驅動程序向ACPI傳送一個DWORD的變量,這個變量包含由處理器 廠商定義的格式,對於不同處理器的能力。根據_FDC傳遞過來系統軟件支持的能力,ACPI調整_PCT和PSS方法。計算機研發論壇,BIOS技術網站,BIOS技術論壇,BIOS SPEC,BIOS手冊,BIOS入門,ACPI,SMBIOS,BIOS技術,EC資料,EC開發,PS/2,KBC5 @6 Y: p4 f' \/ \ e3 Q) V

; f$ E+ u" G" R' Y" X* z 支持Intel EIST的_FDC的工作原理是這樣的,缺省的,系統BIOS是採用IO地址映射的方式提供_PCT和_PSS的,也就是SMM方式操作CPU的MSR寄 存器直接對IA32_PERF_CTL和IA32_PERF_STS操作。如果沒有處理器驅動程序去調用_PDC這樣,通過系統ACPI、SMI服務例程 和處理器的服務程序,我們可以實現EIST所帶來的優點,達到性能和節電的兼顧。

2009年10月14日 星期三

PCI CLKRUN# & PCIE CLKREQ#

http://www.ufoit.com/bbs/thread-103-1-4.html

PCI設備的Pin定義上有CLOCK RUN這個Option信號.
PCI Express設備有定義CLOCK REQUEST這個Option信號.這兩個信號為了省電的目的而設的.

先看PCI的CLKRUN#,如下圖:

如果PCI Deivce A和B,某個或全部設備在工作時,會激活(low) CLKRUN#,HOST會檢測CLKRUN#是否在活動狀態,如果在活動狀態,那麼.就不驅動STOP PCI的信號給時鐘產生器(Clock generator).如果PCI Deivce A和B都不工作,就會不激活(High) CLKRUN#,HOST在檢測CLKRUN#狀態時,發現沒有任何PCI設備在活動當中.當幾個PCI CLK之後(一般四個左右),就會激活STOP PCI#,讓時鐘產生器放慢或停止產生PCI CLOCK給A和B。如果當A或B設備某一個設備需要處理數據,就會再次激活CLKRUN#,HOST檢測到CLKRUN#活動時,立即停止驅動STOP PCI,時鐘產生器就會立即恢復所有PCI的CLOCK。----當然這僅僅是一種平台的情況。

再看PCI Express CLKREQ#,如下圖:

如果A設備有支持CLKREQ#,那麼在A設備在需要時鐘時,就會驅動CLKREQ#,如果不需要,就不會再驅動CLKREQ#,B設備同理。當然PCIE的CLOCK控制多了幾個Option的信號,複雜一點。具體看SPEC。

詳細資料請翻閱PCI SPEC 3.0以及PCIE spec 2.0