|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
W/ {" r9 v; Q8 L8 M( W! m
! K, n& l# z n' Y8 ]CPU在C0状态下有两种手段降低功耗的方法,其一是之前介绍过的P-state,另一个就是T-state。T-sate全称就是Processor Throttling States,它为OSPM提供了一种通过降低Processor Performance进而降低系统负载和温度的能力,听上去可能和P-state很像,其实是有区别的,P-state通过调整CPU VID电压进而影响CPU的工作频率的方式调整系统系能,而T-state则是通过调整单位时间内CPU Clock On /(Clock On + Clock Off)的时间(也即Clock On工作占整个CPU工作时间的占空比)的方式$ o; t+ b% L! { p9 k
,影响系统的功耗和温度。
5 s' n3 N! X. {* c; t6 B
" ^1 _4 h$ v2 g2. T-state Control6 e! D/ r5 T$ Q5 I
2 n5 O/ Z6 f% B( s5 B1 g8 D& v: ~
1)" _4 d: Y1 ^$ [+ _' L
MSR Based Control
4 s# Q3 ?- M, k: M# u $ P" R! W& c* o6 T2 K; y( k# z
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 / k7 s, r9 \* A/ Z }6 |
1 j; C0 h. q. i4 l. B1 t" \
2)
$ J; p) k6 l1 N. e9 v. M! x- t+ gI/O Based Control
8 S# R& G& q b& i " O2 m9 c* Q! Y$ n. D# w1 y
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
$ i: l9 B) ^: N; i- A8 D3 @" b6 ]7 v
: |! D2 L6 ^ b. C* _3)
& K; Z% ^- o7 i9 k/ ZACPI Structure For P-state* f+ }1 p' r! s, @5 v0 G
l/ t9 n9 n& p2 c( y
_PTC, N* o0 O! W% s1 |0 Z
4 u8 C- [ t" _+ B, g% S" G
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
) a' V8 p# Y, A
# r0 k& Q: l3 ]& U8 w1 P: gName (_PTC, Package() ! \$ ]# q5 |' ?6 R- p
{ , R: o$ Y4 @& W0 I* e4 T
. S# t$ m* t0 J ?% _. j3 h
ResourceTemplate(){Throttling_Control_Register},2 C0 U+ \$ t2 x: U
//Generic Register Descriptor
$ ?# i# X2 V9 @# ~7 r H. H) O
- c/ Q- y {. B% d& uResourceTemplate(){Throttling_Status_Register}) T0 R+ j% i& U' k8 P; S
//Generic Register Descriptor
" k1 u' d. L/ J}) // End of _PTC+ b, |' N W3 w2 I R
: [9 |1 [+ @6 r: p% ^' [下述是一个sample code:
' ^5 x% R% h G* b; [ 0 x! i t9 K/ b8 j; ~' r3 v8 W
0 t% j+ z, M& L' f* \//
* ?0 d9 [1 v c9 m- \7 I: L* e! E( F) V. V
// T-State Control/Status interface
7 h2 J, W5 b# R7 w: K0 t9 a- U( g) R# x$ f8 m* X$ O! L
//5 K) l# p W* R
! L. `, I$ J( b1 a4 X' y! O. N
Method(_PTC, 0)
5 O2 {4 n1 T- L, P0 [0 k% b8 f; g+ v+ `8 F
{0 W1 j/ G% k5 ]$ J/ C$ {, q3 w
9 O; k! g- M2 ^+ e( I
//
, v, d$ v$ X1 N) d4 y# t, z; y& @! u+ M% e0 X3 `4 T5 d
// IF OSPM is capable of direct access to MSR
+ t: B! E; i& a- d; C0 \. l5 o5 n# ]# ] D; |8 `' ` w
//1 m- F9 S$ K ?" U* L
Report MSR interface
# ^. S; a2 g: O% x- N% ~) O
) C- |3 P F% J r+ l// ELSE
1 q+ T0 x+ d7 `& k5 D1 ?% }- q, @9 K% y5 Z/ \
//
" t3 [" z3 y% _& GReport I/O interface
! K( z" J% d5 |8 K$ J5 w1 W& L/ _' Z# x: q
//$ r$ F9 s/ i, U/ d! _6 k
" U: Y# ?# v! ]% n' Z5 O3 t
//& _: G. G7 v' N) A4 i
PDCx[2] = OSPM is capable of direct access to On
0 }+ m m0 B, a3 o; \9 m8 k, v7 z3 ?5 Z6 ]% H+ e' [5 e' ^- w4 ~0 T
//( K( }; @4 _6 b/ s0 y$ D$ s
Demand throttling MSR/ c8 C: a7 \4 n1 H8 Q& g0 j x
0 m z1 p! @/ ~" U; @' S
//
+ b; I: I; {4 Y. j) T
1 U( V& h# Z& x4 YIf(And(PDC0, 0x0004)) {
) @0 F8 c" }8 l( E+ g H/ y' @* C+ E; p! v9 t" ~% w1 _
Return(Package() {
' |0 k& Y0 y! w" i( @1 m/ H8 ?8 B, |8 N) Y6 {$ r$ V% G) b
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},' W0 |2 m- s- i7 ~* X
# p2 Y2 h$ {* q) ?ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
* p! L D; j# E& ]/ U8 s& `& G$ D3 I# p9 K t. v6 d. t
})1 j9 g/ t+ v9 m# ^
: W$ a6 G" Y5 h: d+ }5 \
}
, _( s0 k3 \9 g1 r0 o8 z9 c0 I) S4 Q& t' n! ?8 i& {2 n+ ]5 P- B
Return(Package() {
0 |1 c% l# _+ D; |4 y# {- p& b j! |. T F3 e5 I
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},$ Z0 Q _8 _# {1 s8 C8 t9 d
0 _8 k, V6 _' @0 p8 RResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}& D, ]9 F- b# C. m6 D
/ \# Y/ z+ l% T/ j: e K! P
}), w/ w6 v L% N2 l
# M! E0 e+ C0 h2 m& K4 ]
}! V" N! o% h+ q0 S& j$ r8 K
) Q" i1 u$ V* R1 Z- j% j- G: N
3 B8 @# c2 U7 U: Y) V
2 H8 ~+ A! B: j9 z5 p5 l: r
l
. Q3 a" d+ C- H_TSS7 N7 G$ ~2 L. v) x
8 V* y# H) Z# z( `" ]! [Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
: `: _# }! t: AName (_TSS, Package()
, i1 x3 O, c5 N) G& R% F8 D{
+ E, c( W. O/ D2 L! j// Field Name
7 Y; ~5 K, B' ?6 P. \6 e9 B. lField Type ' h/ g# K* s# x& u x6 Q
, o6 K) U! ?1 \
3 D4 ~5 w# @. R- R- ?9 J
. [' D% D% x; w4 S f' g+ j) H) d! MPackage ()
8 D: _" B: g* S, c/ _// Throttle State 0 Definition – T0
4 f M, A' p1 B2 k; g5 h7 N3 t
{! d* k, x+ A/ O5 s- n
. s/ I) _. m. M( H
; `% ^3 ~ X) i' r) V% S$ UFreqPercentageOfMaximum,
0 t% O- Q! {& X' |* B8 x// DWordConst 3 U' _" n) l7 w& i
+ m4 ]% w/ m2 t0 j7 GPower,
# w8 k, ~9 d, H! N9 b2 P3 j3 y/ L// DWordConst - ]: Q% s; k$ N$ ~
. s& l( n+ c2 j. ?
TransitionLatency,* V R8 Z& [5 T
// DWordConst
6 U* p1 G0 `1 Y9 }: i9 ^$ D$ e1 p/ ]* I+ d+ T K
Control,
! F& F* D7 ]/ H// DWordConst 5 n/ X4 ^# [4 R: ?7 Y1 g) S0 W
* E, Z$ v% N- s0 x% W$ X( |
Status3 \ ~/ z5 J7 \" m( I; P" B
// DWordConst
, P6 N8 ^" Y3 E- U2 G},- L& S( H$ h2 q
……
1 \4 Z# t% O+ b1 D}% ?) h* {8 w5 C- l
2 ]9 w" Z* L; A+ l; ?+ g6 E' u z9 MExample code 如下所示:9 f8 Z. |2 p" }. Y- f
5 n$ J. h3 ~7 E4 Q% }3 p5 {Method(_TSS, 0)
! S8 u6 |$ h+ O$ q, I
) p6 o s; \9 h1 L {4 a{
7 d% A, u: R5 y; v8 O# \ B# ~1 |, a) D l) s
Package(){100, 1000, 0, 0x00, 0},4 k0 g7 c0 s+ s8 t
- Y# t- O: u% i' A" UPackage(){ 88,1 f. Y0 t5 S: s8 R8 I0 P
875, 0, 0x1E, 0},6 j0 Y8 t0 u$ n1 F) y# t4 x
9 ^- o, S; S; C! H, V6 u
Package(){ 75,
* k* S' M+ |) q5 B3 O( Y! C7 q750, 0, 0x1C, 0}," D1 E) m* [& H- o+ j, P
4 _; X8 x- ?) y$ b3 z0 l! e9 D2 HPackage(){ 63,
. k! t6 n. o/ Z, E$ R* h625, 0, 0x1A, 0},
* |2 B: Q" K8 N8 u+ r: J4 H2 n9 b0 @7 w. K Z
Package(){ 50,
! \ G& \4 q+ W# \500, 0, 0x18, 0},8 Q+ z4 m; W( x
5 b% q: A0 O! N- l4 FPackage(){ 38,
, m/ G# T: y6 k D375, 0, 0x16, 0},
7 A3 \- }0 I/ q* W+ `! Q' f9 c5 l) N i
Package(){ 25,/ K0 m# Y& S) y6 p, l
250, 0, 0x14, 0},
; I5 }' i* L# ^/ T
3 A0 v% w4 _8 B0 U0 @7 G3 F: q' sPackage(){ 13,$ W4 a }: W* T, d7 H
125, 0, 0x12, 0}
2 Q$ `6 y1 \+ @6 V8 h' ]; X9 _: U a4 p, d; n6 A
}
Z- ]7 O9 i/ S1 M" c' a: J) s
; l% M1 Q. d! y' z$ \2 A$ s- n) q7 p W# ^' }+ c, R
l
, f' M1 R- l# u6 s' D+ i( ^_TPC0 q# x6 t% E+ x# q4 O7 Y
( U H5 j9 Y# V$ Z6 m- `$ o" |* e( p
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。8 c" B( J- i; s; R/ s8 p
+ L6 m* E l9 X/ {8 A4 G8 z, rl6 q _* Z1 {+ [ K/ V9 y( _
_TSD
0 L1 _4 W2 U% j% W0 n9 j% M % O% {3 w4 Z, b4 E" Y4 _0 w
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
8 w' t) P6 ]: |& ^
6 S3 f3 j- Q. Y2 \/ IName (_TSD, Package() 7 F% }" D, s" {
& c7 F; D: P" |* G+ M2 r8 L
{ & X' F5 n5 t- S8 A
1 B F3 I+ Q; h& ]
Package(){5, 0, 0, 0xFD, 2}4 b; T* @6 ]) ] W3 h! K
// 5 entries, Revision 0, Domain 0, OSPM ( D8 S9 U: I4 N" _* Y: H& c
Coordinate, 2 Procs 2 M/ T* L# ~& }# n8 o
8 V, D, F. ?' e5 v
; N$ h+ e8 t- h% G+ |9 W& F
}) // End of _TSD object& c- J G+ d5 b9 s3 ~( @5 A2 z
* U% {% `5 D9 |9 a* C' v9 F
REFF:
" L8 t$ a& _ p/ g6 K' y( F& t& i2 p1.; k; N4 @% G! h
ACPI Spec 3.0/ y3 D6 m2 M) Z) ?& G
2.
F5 z' j G" x, u3 OIntel Processor vendor-Specific ACPI
$ H0 o! F0 F: E; W0 _ ' y/ u+ b4 e) ^7 H7 }
I2 O3 D! J+ F" y& H% ^; bThat’s all!
! u' _, P* r% d4 D( I( t; D) X
7 V3 g3 S6 ]. Z* LPeter- }' D; d4 }8 n' m8 q
C# q' k/ b* H; |" m! {2010/10/01 |
|