|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview2 V. K2 v+ d: C
; q) h2 t3 S3 |7 r" ^: S7 i }" {, ECPU在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工作时间的占空比)的方式
6 o! T" e' A* D6 o, I0 s,影响系统的功耗和温度。
) A% i: u0 M1 u4 c* U2 L
9 V+ g- [) G3 _: Z; [2. T-state Control5 B3 B0 C; b3 f4 {/ ^
: q, @- j3 Z. ]5 d+ {1 Y5 a8 K
1)
& U& s7 u* W9 f- b' g- f4 s" B) EMSR Based Control* L- Q7 Y/ ~) ~
' } Q& \. M4 m: QBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 8 S$ D4 y! [. y; V& ~$ q
; w( D2 ~; X: M# @+ k
2)
) M) T+ B0 I8 s* W1 y' r& l3 |/ ]I/O Based Control
# L4 |4 q! w+ F% }6 K' [ ( R# o* D: O& J1 }
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。, C9 @$ |: w1 u
$ c6 i7 z6 Y3 o4 {
3)" e( H& v) Q. g2 u. `9 r) H* a- J
ACPI Structure For P-state5 M3 B( D8 Y) ~9 [) E
l
0 k) \3 `/ e" B$ a! x_PTC: F- ~/ E; g3 C6 d( c' \+ A
3 ?% j6 O: ?+ n6 s* G. ~: NProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
+ s9 j! _8 L3 _$ v# R % C j& G+ { A3 _# Q6 R
Name (_PTC, Package() 4 w' w( V& H1 b- t3 q
{ / T ~ h' l* m2 P( W" S8 q/ S' D. J
# B' {6 _& Y7 g! Q" y
ResourceTemplate(){Throttling_Control_Register},
# e: U2 U4 E8 x3 B//Generic Register Descriptor 1 E8 r9 z8 c/ v: ]" T! j8 |: ^
9 y; I* A6 e, \, U: o0 E) M
ResourceTemplate(){Throttling_Status_Register}
: i( z& O! d" e3 D7 z6 Z5 f1 H2 }//Generic Register Descriptor
0 M% Z' ]; ?4 [ |5 w4 g3 \}) // End of _PTC
: P9 c' a& Q' G1 I$ _. v/ j5 B& } . ^/ |5 Z/ H, \' E
下述是一个sample code:* ]; Q$ z/ W! a/ B
' A' S# z. J- J
8 N. [1 g+ p; j2 V" q) r; Q, [, ]
//! X( r+ x( X. Q' w) h# R) V
) w) w2 I( {1 q* p/ P& d// T-State Control/Status interface5 ~) m- x" G5 [; V' [8 q
1 W l5 h& [! Y//
. m5 I4 p( D5 k2 Y+ W
( G- r+ g; ^3 x/ O, FMethod(_PTC, 0)7 m7 `" u8 K- |* d, p) K+ g
3 b. ]: C" ~8 E% Z6 }{8 o( L1 J7 r' N5 k
- W+ D6 d* V! d% K: V
//- h) Z j& S" J4 c% t; z/ K
2 c, d6 t2 p, P. o2 M// IF OSPM is capable of direct access to MSR* q" K; O- A u! N6 j/ c* `
' k& M$ o) s& g0 v
//
. ~+ C" d2 G& p+ I' C9 J" y8 tReport MSR interface4 a; v7 Y4 y8 r w# d B+ W
) C8 i5 }, \' D& u1 u// ELSE
# c7 e- {% C g2 o0 B0 s
m. t0 S: t0 s! T( a s: [//
- m4 _+ O( K9 e3 @; b- v+ W1 m, UReport I/O interface
& L9 `9 e9 g# L( o$ V) y( Y1 _1 f$ W3 y) u% |) Y& ?/ M+ t
//# v! `- C& W# g" W1 N
3 H) k' m! [* c6 \5 T& C+ N: G! a
//
7 M6 g9 o# Z. J+ F( @* z! t0 ~2 mPDCx[2] = OSPM is capable of direct access to On I* `7 s" ^7 v# q9 H5 w
) C4 b* w. x2 t+ u6 b//) U0 z& G; y0 @! L; d) M
Demand throttling MSR
' _2 y- D! Y# j& V* _! z6 h
( w. |6 f `- s' [//. x- U: |* t2 L; ?* h( g
) \3 ?6 b+ P u5 `4 b, }If(And(PDC0, 0x0004)) {
2 n, i w' G( V/ X7 f' l/ {6 C: |2 A5 {/ f5 V& F, {: B) c9 o
Return(Package() {- r9 L& Y8 `. i/ s% ]
% P9 Y. ]1 {1 q5 i* Y9 IResourceTemplate(){Register(FFixedHW, 0, 0, 0)},4 z* a- [8 V9 w* }+ U$ P
# ^) _$ h; g9 W' _
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}8 e- Z+ {, Z" `
. z# ^5 I. S. {1 I
})2 f' K) Z* y& x1 v( d
& i7 F3 b" a) ^1 E: V: Y! }* r
}# |" _! O; ?( E
( i, J6 L; [) K8 I J# l5 h
Return(Package() {
5 M- T: `# ?+ b, @5 n5 J
& t9 Q+ x; G6 Q9 @% uResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},6 y& @2 U1 z8 _6 |2 E6 G; H1 ?5 o
s0 F: T' v8 p3 h) mResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}+ u- l7 Q0 t' |9 Q
* _9 d5 q" s7 L/ ]5 z/ I})
. R' a8 U1 U4 V5 W+ B) D2 a, h3 c6 P' x/ t# w
}
+ M) s5 T& ?2 Z: n% S& E' z9 k3 ~% e' D" ]. [% {9 M
. X, v: G* b' u9 Q E% @
4 V/ U$ A" O5 Y/ ol1 d( q* U) l* N8 l1 H. W
_TSS- q6 K1 V) S8 S4 a* D
6 l$ V* {$ X$ zThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:) F8 ]( N* P+ b
Name (_TSS, Package() " O3 S( S9 ?' Z' [ p0 K
{6 C- X5 i, I. H, p3 i3 \
// Field Name; a! ^" i1 F2 [( P3 B0 Q
Field Type
' C3 w8 Y1 ?% j/ {4 _% p" M3 B1 p' }; [: o/ L
# m3 e' W. F+ q; z
5 c" K4 @7 I- U" p, G% m& f1 XPackage ()
2 s& a! q7 o) x9 T// Throttle State 0 Definition – T0
+ M$ K1 y0 Z9 B8 z/ p* f @
& z+ A+ n$ |5 W9 X1 j{9 K- f! s0 b" i& t0 k
+ `, B4 }1 e: m0 B, B+ o7 U7 l1 M7 J5 ^- X
FreqPercentageOfMaximum,
& C- C4 R7 R9 N// DWordConst
1 i1 [0 k( S" c. |0 v+ p" v$ b
# }/ _; K: x3 l/ _Power,7 m' @0 e z) J' m6 @& u2 ^
// DWordConst * B1 d. b+ _7 U
) U& {+ V+ Z# K4 Z& B% {0 rTransitionLatency,3 ^4 E( r% I: A/ r/ B1 n+ l
// DWordConst
& Y/ k3 k {7 H# X% v
! V$ ~9 Y* W7 E5 V; H2 f; {Control,/ E6 N. R% U7 T+ P
// DWordConst
6 z, {. k$ B( V [5 }, L- C
4 i$ d" D3 v+ EStatus: Y, x: m1 v" W5 D6 J5 |# E
// DWordConst % i! w6 S7 {3 N
}," S, v+ C) @- _5 ]$ K; [& f. b) B6 T2 e
……
6 V5 }, d$ {' |}! N M0 E5 _. _( B2 ?% B$ {, G
- c/ y1 E. L! D" Y
Example code 如下所示:. n- f+ u; c& j U
7 k. L$ z' F6 Q: Y8 hMethod(_TSS, 0)+ ], n/ X5 o4 G$ H, D: g
& {! V0 v6 W' g7 t* D{
0 w# u) C( R9 I5 y: w" ]2 C T7 N$ a" K+ }
Package(){100, 1000, 0, 0x00, 0},
. N# l& X( z7 W1 i6 c
/ _+ G4 e1 f. l, ]' [- u, B- tPackage(){ 88,, Z; f0 L# c6 _8 _# }) ^' k
875, 0, 0x1E, 0},9 L& ]$ r7 B8 l+ q" x- V2 `6 F
& O* \ [6 P" qPackage(){ 75,6 B( t$ A$ {" |9 B
750, 0, 0x1C, 0},- x0 r2 V. B; Z/ l* ]% A1 `
W- C; r: I9 V: x# D+ LPackage(){ 63,
+ p1 X* e& a4 H, |+ \' q N/ X# E625, 0, 0x1A, 0},6 j4 s0 e5 ^1 e p/ Z$ p' t3 Y
2 A8 {# s9 t& T1 HPackage(){ 50,
7 T0 ?+ j- W* `/ h. a500, 0, 0x18, 0},% Y: b4 Z3 z! W8 G! L4 l. g- G
0 n7 K# D2 o& G: q
Package(){ 38,
! ~5 s1 s; S( P% \% \0 |375, 0, 0x16, 0},# f2 V$ l6 Y7 Q! s
5 \/ r. i7 d9 B
Package(){ 25,; ^ E% Y. H7 N; {- }4 h5 J
250, 0, 0x14, 0},8 ?+ A) j* P/ P0 N
7 u& U6 x3 `, `6 ^% g1 ~' }Package(){ 13,
7 h$ q+ F0 ]) D3 G125, 0, 0x12, 0}
, x2 Q7 l, a/ `
9 O k, |: Y; Z* p# c) M4 J' n}
+ d) P# A) X" I9 P2 T d
, q* Y3 E% B/ M- o' H" M9 d! ]8 j( w) S
l8 ]. s: P5 q' K+ O# \
_TPC8 B U2 F$ M: c( _% Y
( G4 t+ }% ^! g% k# ?* B, s$ PThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。3 q8 }0 b' E9 i8 D" ~/ a
/ ^( {+ E' w, K4 Tl
! n" k% Y# h4 \_TSD
' I. Q9 O/ ]5 T1 k % D2 d$ {) D1 L" }" ~" r: x
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:$ I" K! S! ?+ A
/ g8 N5 q, h4 D. yName (_TSD, Package() - \4 v. F7 |& \! g
' d3 g4 ?* O5 ]. z8 H4 ~# T# F
{
- ^8 P4 K0 X7 D p8 R P7 a- [/ b ~4 [7 _( [
Package(){5, 0, 0, 0xFD, 2}
5 P2 _) M' ]1 W& O3 B i0 c// 5 entries, Revision 0, Domain 0, OSPM 2 T( A' O0 a4 S* m
Coordinate, 2 Procs
7 C4 w( O9 l2 \* x2 `) l: O( w) l& Z) J* F& |
! O3 W- u+ E( r ^3 Y- B( I
}) // End of _TSD object K7 i: `0 ^, d/ O5 u% V" y
9 { \; w, Z6 j# N t! Y V) Q
REFF: @- ~3 X2 N8 w
1.! e9 V* j1 W" S4 O5 c
ACPI Spec 3.0
- Q% l/ l/ R3 G+ K2.
" E& S: u; ~- G3 B s* W4 @- J5 m7 JIntel Processor vendor-Specific ACPI
9 ~$ L4 w- `: g5 C+ H# `- o " R5 u" r& Q) U& r- @- y: K
8 W5 l2 M9 @/ k. fThat’s all!
. v' ~# Z8 B. K
\9 u8 X# J8 D$ hPeter
" T# R2 g! C6 a* [: |6 u# l8 H & V9 r5 c& ^. J3 m- I
2010/10/01 |
|