|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview0 x+ _# {$ u" ~5 P2 q! e
9 e" n) |3 g& v4 [
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工作时间的占空比)的方式
2 ~" k5 o1 w# b4 G$ U1 ^3 C,影响系统的功耗和温度。
! k/ a* H- q. O3 p" ~ # {/ s; v' x" ?+ o2 M- [
2. T-state Control
Z: \3 ]) a2 Z! T6 S1 @ ' Z4 A! H( ?( ^
1)+ l1 X( S' \' o0 }9 [! r2 A
MSR Based Control
) ~4 E5 d5 N8 g% N- ]& r " o; P; h1 o- w, r1 U: c, |+ l) Z8 a
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
+ d! j0 `: y* g3 V6 d3 x/ R' V
. ]. I. W+ I2 L2 Q* y5 B: [2); M! e) ~2 k8 j0 ]$ s* z4 I
I/O Based Control! _+ i; }) ~4 z' z
; O( Y- M5 z# `) w
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
~# Z$ W' G- ]) _# F2 U: ?4 j
' H5 b) h! g2 S1 h& U. V1 G5 K9 ^3)
a0 M3 T( c+ m9 _3 O- AACPI Structure For P-state, ]0 o9 z) U+ v7 X& N1 q2 r
l/ y8 Z3 P1 M4 k$ n6 \# U
_PTC
# H. }, S. k5 l$ i. |) X9 ~
8 J6 _; O+ x9 O0 zProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:8 F. I/ k% L0 }/ n/ {, j
: M! A2 Y/ I2 U& I. v' v- l; _6 P2 n
Name (_PTC, Package() + Y9 w: g5 Y, \7 s
{
9 |* {( p) B: h! C* w# B4 @( |9 w# t _* h/ m/ @* S" N
ResourceTemplate(){Throttling_Control_Register},
4 [" D+ J! A: K0 X//Generic Register Descriptor 9 E) o0 C& u; D0 f6 V5 `& J
$ X$ l! W" g7 G& R, f, {+ RResourceTemplate(){Throttling_Status_Register}
: o+ x* d/ {/ C: }% |: {( u5 G//Generic Register Descriptor
8 V, U& h% E$ ~3 O}) // End of _PTC5 V! l/ p/ e9 O1 p" W1 l
' c! o8 U7 Y1 p: e下述是一个sample code:$ d/ Y/ R! q8 F; [
; X, }; X* M4 S! @
7 t! r+ ~3 w1 I* r//
8 f/ h- R6 X, S; _* h& X9 b& `0 E" V7 W$ e+ t
// T-State Control/Status interface6 x4 H/ M/ [! [* ?) e
" q5 B0 p; k' v) S5 J+ Q! i
//
0 P. {9 c5 c% O; | X
4 q1 Z2 J! v( Z2 B, AMethod(_PTC, 0)
# ?: x6 z2 Q7 u/ V; R- W
& _5 [( v! L @4 k, |: N) \$ j{
9 \" Y# z F$ a8 q+ `0 R- f2 G; I/ c; r+ I6 u
//
9 p6 ?8 H1 ?( o: q, T) }+ w
, ?" a# Y7 R, S. h0 W" T- Y" r// IF OSPM is capable of direct access to MSR
& k8 {0 R2 F# o2 K% u8 y- }- ~) j2 H' [; Q6 T5 ?' L N# l1 E) K
//
. n7 i7 y& o9 Y; Q; [. zReport MSR interface
/ C! e; j6 I9 F5 \: T
9 E0 ^: @' \+ w6 Z$ B// ELSE
/ D) }8 P3 i7 H% V" J
, E j9 F" _, k: Z Q7 i: K3 s//0 t( t2 Z/ X! W0 o9 b$ ~- s# o
Report I/O interface3 f- a6 x' l: _1 M
- B/ l* j! t4 {* L//7 O. j9 N4 n* Q; {7 T! ^) W
3 |& M+ u- F/ F% i/ p2 X7 D//
8 i6 c5 T J; R) {+ H% }* {! tPDCx[2] = OSPM is capable of direct access to On
2 a3 y8 ?. k" F* {, V' v2 j' E8 n% f7 X$ V( k: u) T
//
- @ x0 v$ u+ Y/ Y9 }1 ODemand throttling MSR* ^4 Q- _* \: ]$ Z% z
$ \# f# Z+ S1 c7 p4 m$ o' v' s/ W3 E- z// P% C- j+ Q. ~+ f& V
7 w8 T# _# f( \/ xIf(And(PDC0, 0x0004)) {) w9 Y6 J2 E1 C' q, g( t
: X- [ l2 r: e0 EReturn(Package() {
* k' o: a) A; F) B q$ J# T- Q; E7 ~5 F, K- ?) Q8 B! h0 _
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
6 e# f2 Z: n2 U& }" g# M5 H8 m$ K2 R6 @
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
, f1 s, ^7 A2 `; I$ X& V( R( `7 `+ _& w3 G) ^+ D. P
})4 R2 K9 o2 H, I/ e* G4 ]
1 {$ J( \ K. E# w3 M}; [! ~( o h0 J
) [2 N$ h3 H) A; EReturn(Package() {
. Y$ c9 m9 X# }( I
: M K) H3 l$ Y5 D- d7 K( nResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
2 ^+ ^/ p% f2 D! | T8 _* t& N$ F5 i# ]6 O' R0 ~* }8 ]
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
) Z8 Q% S( g( \% ]% R) e5 w a% ?- A, d" y0 j. x1 f8 [7 ^" [
})$ q2 {4 U7 X! @
( F# S# F, y6 b5 a4 [% a. ?
}; F0 P0 i% X" u! c
1 c- x, A A( i8 x3 j! x
' b8 l" L* B. f
2 o) d* f( x9 K) x7 al. g; F, u5 b. H
_TSS
8 _+ n& I7 H5 K2 x+ _+ M Z% W5 Z & X( v+ H+ q6 |
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:$ G! K2 f3 a8 e& l2 A1 J
Name (_TSS, Package() ! c7 {) y' S2 D5 Z) w7 M
{
$ i0 ~% J/ Y; N0 t. h+ C// Field Name
* i5 z6 U, ]" Q1 eField Type
3 D- Y, j1 w4 Z" M& [
1 X$ g2 M1 @& |: u2 h" C! {9 @% X9 S) p5 I
" u: B3 q. \4 Y# h; T
Package ()
. k+ U9 `/ y: g// Throttle State 0 Definition – T0
3 }# P6 k; K7 `3 m' S* R& |1 o
5 O2 \; ~. |+ S6 i{, e2 t& J8 L/ c4 T+ Y
& O: @: E- y( F5 A+ E* S" s# n7 ^& V0 Z3 |1 A: F
FreqPercentageOfMaximum,' P+ A* s& \' e! Q0 }8 N$ m
// DWordConst 3 x0 S7 g0 k4 [5 T0 f1 O
1 C( f3 L1 H( n; n
Power,
2 s! B; ]' C9 i7 K3 S& n3 m// DWordConst " i r/ E- L* A- i1 e9 [+ Y
0 Q; I( }' t x bTransitionLatency,
+ o3 }: K/ B5 }- U, V+ ]( |// DWordConst
0 K1 W' l! G% S8 ]1 B7 ~7 J j6 M
0 S% r L4 g. [% c; P0 o1 _Control,) x% L/ v6 R: p
// DWordConst
4 U5 C% [; l3 \1 f6 H
5 }" z- c9 b( A0 L, A; XStatus
# Y1 c! P& ^5 I5 x// DWordConst
' w. e0 U/ u7 m. I0 e},
5 K8 Z4 K$ M$ W* K* I……4 b. k# t, X7 o4 [9 ^
}
0 F& b' h e. ^4 c, m- E7 y d/ x* o; U
Example code 如下所示:; K) u, d7 Z; s8 \) c2 c1 Z
4 R- Y m) e% u- lMethod(_TSS, 0)6 k) j6 |( M, M" }" n
& G4 ^2 d2 y5 Y1 e0 x8 g
{; c4 Y- k& |9 v3 M* Z+ Y6 |4 Y/ {. Q
' ^& {: ?, y. T% {8 x5 _0 T ^
Package(){100, 1000, 0, 0x00, 0},$ \! p e/ @ a4 ^- J
$ _8 A5 Y* D. t) K4 L5 J) J) h
Package(){ 88,; E3 w: u( Q9 u, w( h: m9 V
875, 0, 0x1E, 0},
2 H$ u P5 l: w% n8 { `/ s& s: F. Y. M
Package(){ 75,
. e, X8 X/ y4 L) p0 [. M& S U750, 0, 0x1C, 0},
3 A" I* b, o8 o& s) J1 L) T9 F0 c; I. Y5 W u
Package(){ 63,0 C7 L) ~: Z2 k; {4 j; S
625, 0, 0x1A, 0},6 Z3 D) F; D9 [7 {6 o; l6 D
6 W2 r3 z2 `" sPackage(){ 50,* K' f5 A( Q& @3 f0 D& S! e7 o
500, 0, 0x18, 0},7 S9 `* {- f- m
" t% `2 q' O" I
Package(){ 38,
, ~$ p r: z0 @6 V! a9 o375, 0, 0x16, 0},/ f1 i1 \; O. ` [
* F" S7 H- Y* |! @7 \# L9 mPackage(){ 25,$ U! ]% F1 [" L" Q' t
250, 0, 0x14, 0},
U, l/ v3 k* Y. |$ Z, `
- d' L! ~$ m9 h; i- cPackage(){ 13,2 j7 n& a; G- d( Q
125, 0, 0x12, 0}7 j3 K* _3 t( G# _; {( l
+ v8 O( ~# Y2 o y# z4 T}9 u3 i* c$ l0 R& p% T
/ Z O0 W. |$ G" |: `# Z6 j; v, C' f4 S
l
) L( v, c+ W% i_TPC9 Y& R% Q% M: v' }! u, f
* ~8 N" x- r# m+ d e/ k( @6 h' dThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。 w* f, K& f2 W# V
0 E4 R6 Y: }) r- Xl+ y& l6 c0 k/ ]; e, `% H3 m
_TSD7 }% ? d# z% B2 H/ z, _
9 t( M. r, b9 ~) f4 }T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
6 M* {8 g# j9 m" L% e- X
7 C" m6 c: v/ F& o! u9 CName (_TSD, Package() 9 c# d# \3 p& ]: D d
# d9 o( ^# l4 q ?6 Y6 F" P0 Q4 L{
# r" P0 l$ \6 L
' T( f& N. I; JPackage(){5, 0, 0, 0xFD, 2}
- w4 @' g$ l! `0 v+ z2 l// 5 entries, Revision 0, Domain 0, OSPM
1 A0 G" K9 O! J2 e5 A5 TCoordinate, 2 Procs ) Z, d0 v! c% C) k6 v
3 p* S6 `) h& M) I+ ?7 ^
5 T7 w. c1 V" s( z- c9 G}) // End of _TSD object
* R- ] h4 L- w5 |5 \- e0 d( ]' i
# Z) t; k- c) R/ |+ G5 `1 tREFF:
9 |0 N: t( P/ U/ i1.: V, W+ K# M) I# z3 J/ g
ACPI Spec 3.0
- W1 S8 u6 t- i$ Q1 l2.: L6 x' I1 D# N+ v+ u, g
Intel Processor vendor-Specific ACPI J) L% P( `) _8 P% v B D
( s; B! ^- V2 w9 a4 J; c # ?& f3 o* G1 {' o/ v
That’s all!
9 m- J: I. O& J/ G4 y4 `; e. y
- ]+ C9 v& i5 R# e K: ^Peter: I- o+ |% \! w( g! K1 g
' R; ~8 N2 v8 u+ `( k6 I9 ~) [
2010/10/01 |
|