|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview3 r) R( ?; ?( U. H" E
: b/ g/ D9 Q) S- K C$ RCPU在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工作时间的占空比)的方式
0 L+ A5 f% ~! ~& V,影响系统的功耗和温度。
5 t% K% \, o) J0 j- j5 z% j y* m$ ~: }! D" K4 X" W3 W3 ^ `
2. T-state Control1 }; x- E/ J; Q) Q" i
# W, q( T7 ?, l; i1)
$ E' C7 |; |8 p/ K uMSR Based Control4 L ^8 H; b. R: w$ k& J
- z1 |/ X- n6 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的转换。 ( ?& q) r* ^3 b; c! e( ~" n. |6 y2 R2 T
: }& A3 `+ u3 n* h0 c$ c, }2)6 }) Y( x; n, P1 R% a( C% i/ A( X2 C
I/O Based Control
' U7 c" G; W- i8 d
1 _9 F- e; x3 q9 {. X除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
, O" Z8 M! Q7 F" U9 } " b9 f5 l. Z$ a& x# g
3)
; o3 X" j' ]& p* f7 i9 nACPI Structure For P-state
- p6 ? |6 I1 V4 W0 Q* M2 nl
& j: B" F5 J6 f_PTC$ _/ @8 ?! O$ L
0 j* E8 ?' m& j. S: n cProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:2 P$ `1 s' J- h+ V
; Z; I. {& Q& v" ~9 G) E
Name (_PTC, Package() % y) q4 q3 |7 i6 H4 p4 Z! Y
{
! R/ F/ d+ E4 w; D; m4 \* E4 l; a- O1 h3 O4 M3 u: _+ x1 a* [
ResourceTemplate(){Throttling_Control_Register},
6 o/ h5 a; ^6 G$ U//Generic Register Descriptor + S7 z7 N$ r5 o$ W
3 v! S% V0 n1 D6 R$ ]6 c: `
ResourceTemplate(){Throttling_Status_Register}
9 p6 \' j; e9 a" u3 k: v2 S9 Z3 e//Generic Register Descriptor 8 l% a, | ~: N, R" ~* P
}) // End of _PTC
! B5 J. a# x. o1 l* P# D ! i' r9 a/ D% M5 W. ]4 W1 C
下述是一个sample code:
: V% i% i& L4 X$ q/ U I/ H: w& u' D# v+ }' A
! U; g: E- L/ |- y- K; i/ L//6 p; ~% z4 h: Y, Y. l
' U* Y2 I M) \/ R& D( J0 f// T-State Control/Status interface: V# U" ~/ s0 s5 l! C% i5 Z
( Y1 w. H4 E( F
//
% o% }# E' ]' A( a/ z8 d# w( m6 z( @ Y3 i
Method(_PTC, 0)
7 z. a& |4 B1 s
5 F( T9 _8 w4 Z1 q+ {1 g{
& _; z0 U) t/ s& F. Y& x9 h% [7 l! W" P7 B0 m/ S' g. ?" B$ \$ r1 a4 @
//
$ a3 v( i% U$ }' A- H4 Z" j
$ a6 }" B: r9 {& {& q// IF OSPM is capable of direct access to MSR
4 H7 X5 c7 [% P: _$ {
; ~, Q" \6 y" A+ U9 a//
3 `$ h3 M- t& ?/ m4 u- IReport MSR interface m& a2 s& G' D5 H
: [3 e, Q" P1 l* N2 K' J8 d9 j// ELSE; `2 B# X! L, S5 F
& D) `4 Y" H# @- m1 O
//
- L: @; d/ `$ q! ~; ]Report I/O interface; r$ b# d/ v1 Q: v$ [8 _/ b Z3 Q
[5 }( ^# y0 C- P' S1 @//7 i7 b$ W3 F. J/ h7 F K- }. S4 ?
. Q3 ?1 m8 W; R+ V" w3 ^/ C/ C
//
, o5 U* h1 J$ yPDCx[2] = OSPM is capable of direct access to On
) x! E% p# F: z6 |. A" S( h0 {( ~* _. L& m
//# m& e9 i( o* C+ ?7 s
Demand throttling MSR- _. G$ G+ n. p' _1 ~' ?2 z5 ^- k# z
6 \2 D$ o/ ], ~8 h
//( k1 G0 _- x, q
! ~, Q: z$ k2 EIf(And(PDC0, 0x0004)) {
1 ` c3 L, ~3 ]: v6 I2 M5 N) F* d/ M4 {" C
Return(Package() {, U' B# q k2 {
: f/ d$ f- @( p+ Z/ ` y
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
8 }6 f+ Q7 {0 c0 b, z
( D& o" q& `+ Z, W& \6 ~ A' DResourceTemplate(){Register(FFixedHW, 0, 0, 0)}4 x, O5 L% l" u+ A( D/ F. I
9 Q _& W! _ I. ^! p3 H: s% y})
( c9 P# b/ n& M; ?; D5 x" ~
( J* B( k; e. k9 o: l}( N1 u! F2 j* A4 w* |# Z
( \/ [4 N3 Y2 _. o; JReturn(Package() {! t: f# r* H" e* K, {
2 C% A+ L1 B% @ @8 M3 WResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
7 p, V) E7 Z/ Z& c
4 n; z7 [* G( l. W, r% h! |" [* N. RResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}6 N! _# X$ k& w9 E- p
7 M7 E: o7 R' C
})
4 `- X9 ~* R% O- u* z/ u( f v. _* M; r" n. l6 \
}
: h4 l# N: r$ I- X& Q/ S
: Q3 _$ j- R# X9 A, U6 _: k. b, c5 E+ \: W
5 b* b! x' F8 Yl: L; A& f! A. n- P
_TSS
6 \6 v6 B# _, H% D
7 o. F. n) B7 x* V2 tThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
% T& }0 o! J% t1 P" n+ Z8 ^Name (_TSS, Package()
" D/ M& E+ Z3 ]/ V; E. B{: J: R$ `7 w; f; Z3 ~ B
// Field Name
, Q) v8 u; x" a2 |" f9 eField Type
1 X' ~) W I8 ~0 {1 L& A; y) w/ z7 w6 _2 W) Q) ?5 D
# ? u/ |! V( _ e7 N s$ ?
+ J2 p) n0 e M/ J; g# n b2 f
Package ()1 }" }, G* [: k7 {8 z5 _! O" Z) l2 r1 Z
// Throttle State 0 Definition – T0 6 D6 h' X6 j$ V4 m, p- D# O1 Y# U) U
% T3 `) [2 [# r, w9 s{
) k! B+ p3 P1 h: h$ @! Z$ L+ e: n0 I3 j1 H1 C% c* J. v
1 v* T: o1 ]3 a3 O1 dFreqPercentageOfMaximum,. C- O# i" [0 t9 M9 o5 X+ A
// DWordConst
1 n5 I1 b- s: {/ n1 N
% {3 ~2 {7 P9 f+ OPower," M6 L' x4 \1 w) H, F3 j8 r
// DWordConst
* j8 A2 o% b& R" N* N) o
0 h) w3 M2 v' ZTransitionLatency,
6 e- p3 b, ^* @7 W// DWordConst
1 j+ N( t, z; I% |$ @" f' K
' d: K" @2 [7 i- BControl,$ W) v" g8 I% {" @$ \( X# F
// DWordConst 5 h. u5 C: g$ |) B6 Y7 {
$ i3 d4 ^0 _3 L' a7 A4 z" PStatus
; q+ k) z1 J* z1 V7 p// DWordConst ) @5 i J* A" k8 v/ |
},
' y3 w; `& l& N% n……5 Z2 \! ?6 x- M- i# x6 w
}" I; ^6 {5 P) _% q, d+ g2 u
( w9 W; M3 T. ]' P$ q
Example code 如下所示:
8 T9 \' E5 @' ?- d
: ?) K5 c6 f) G3 p8 E+ ~Method(_TSS, 0)4 V" H9 r* W. b6 `) d: g! l3 @
. O, Z3 S3 g$ ^9 T. {
{
" l" M9 L4 g5 u' {' @# J |& ^' q$ d& `
Package(){100, 1000, 0, 0x00, 0},* P, L) Z0 i: V" k( s
; a* ~ w4 M+ H! iPackage(){ 88,8 m* Q1 x7 h$ S6 z$ q
875, 0, 0x1E, 0},
2 Z0 I N0 d2 }8 P; l d, g3 y7 F6 Y1 u& a+ O7 m
Package(){ 75,
6 K3 _# |9 @, n750, 0, 0x1C, 0},
, q9 L8 g4 g% u) |$ q: Y* ^/ [3 N) ~- P
Package(){ 63,
0 S! ^; t% p. @9 L% C625, 0, 0x1A, 0},& u' ]/ B1 w Y! ?+ A
) }5 Y8 m3 N! }/ A
Package(){ 50,8 {: f+ P! z% ]5 _4 R. A
500, 0, 0x18, 0},
, @# O5 x7 i9 g1 q( e- O, I( G$ p" O
Package(){ 38,
6 P9 T; V8 X3 g5 }! E x7 z375, 0, 0x16, 0},
7 e* I2 l3 g/ M5 X8 S- c& }3 ?' T, k6 E
Package(){ 25,
- b- [. Z r: R! o: o( y. Y$ v250, 0, 0x14, 0},
' @- F' i; q" j* \4 g+ e
+ k! ]! P3 }8 BPackage(){ 13,
5 |9 k8 B4 h5 z' Q125, 0, 0x12, 0}8 ~% G1 ?" [) S9 H+ g
/ T6 v% n: \ v0 _+ M! C' @
}
: I/ G) Q, R% \# K) m5 X
' k0 W( L: a7 |* _ \
7 _ R0 k5 f0 t# al* w% O) \; s0 I; n! c$ W
_TPC5 p7 }0 x) I. o, C! B. j2 S
- g4 C6 ]$ [2 Z% r* q9 w# A
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
& K0 p: I x# o: P5 z0 p
5 L: c. m( u* _$ S% b6 H; vl! h3 ^; c1 u: J0 ]
_TSD& I' f0 M; ^: k2 J6 o8 q
( L/ G& B H9 E: C3 l6 {( E
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
2 ]) c3 N! z* j7 f2 z) |' y
$ m) o# ?. y- t0 c5 WName (_TSD, Package() & w1 S' w+ A2 E+ M3 i$ W; H) ?1 R: n
6 k7 U4 R& O0 M/ M! \$ F
{ % e. w3 z5 Y* [, W/ M
* V( |% N4 B# i/ B2 h5 m
Package(){5, 0, 0, 0xFD, 2}$ B8 y/ t |$ C: X, K4 ?$ H
// 5 entries, Revision 0, Domain 0, OSPM . v, `5 V2 V- j1 _% P
Coordinate, 2 Procs 3 [( }* V+ y4 `9 W3 o+ J7 m
0 Z, ~0 A8 Y+ Z
7 v. g3 O L/ [}) // End of _TSD object. I. M" m' h6 p
7 h' I L6 b+ [1 }' A: zREFF:
1 }4 q) y* k. Y, `# A' w1.
e+ H: p7 C. KACPI Spec 3.0
9 U( E4 _+ V- h ^( f2./ j. ~: o! y, a" v3 m# K
Intel Processor vendor-Specific ACPI1 I' K( ]& f0 ^4 ?. ~
4 s) R7 g; g+ `. q
' P/ _* H' A a- r* F
That’s all!% |2 c) h2 V% Y h* J
% I- J6 y1 x3 t/ e/ i6 G% c2 H6 ^Peter4 f4 N1 @# d) h+ \' s2 U1 V
) ], n: q# m, l; O0 j2010/10/01 |
|