|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview5 e& H. q' }( }" v1 D
! P, P( c" a# _
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工作时间的占空比)的方式
# z D( ]6 M% q& m; V& r( l* @,影响系统的功耗和温度。. Q* B8 Z' L. L7 A2 G* Z
6 }6 Z* J2 d/ P2. T-state Control1 L: _ j" `1 {: m1 U$ q
6 H4 E$ j9 k5 n& q8 {
1)2 u9 o( ]1 o% r2 |! Q6 G5 `9 [
MSR Based Control
( e7 L5 q# C) L( a/ \' s1 B
, C0 G+ _* T( m5 m' C5 [BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 1 g( l* p Q7 x( Q; [3 O
8 W, ?# \9 z+ u& _. \2)
& c2 c6 G& A5 a N, x# kI/O Based Control
& J, Q( c( u8 \6 [4 B0 l1 b
3 ?" x$ ]8 U6 b* R9 U/ B除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。: L$ ]8 U( x4 o7 s8 j+ W X* V2 h
# n2 D% s5 W) E7 Q) C3) [% U3 B( m, W, @. h6 F: D0 L
ACPI Structure For P-state
7 M8 G& b# M8 Y( L+ Fl" F4 P! n' p1 ~2 A* q
_PTC! @0 c9 z7 L5 w L4 Z, f
1 w& `: L. ]; E
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
! N g4 Z3 m2 D5 g; w$ j7 I9 {
\7 `% \8 v# G8 ~( B3 BName (_PTC, Package() " m- J' W' K0 q8 s7 l# X) {% A& ~
{ , e8 a8 t7 o" P$ H
9 M0 _: p$ Y, v3 hResourceTemplate(){Throttling_Control_Register},
) e0 D7 s: p! g) w7 Z% q+ X//Generic Register Descriptor ' C5 {: H. z2 j9 `' p" H ~& G X. N- e
5 A% E$ t/ |( z/ \0 C
ResourceTemplate(){Throttling_Status_Register}
; R |6 G2 }/ U- ?$ d+ L* n//Generic Register Descriptor
8 W* U9 F& W3 T9 l5 a) c}) // End of _PTC5 Q9 f! Q, v: P |
" {% @ Q" n ^9 ~) @" }3 }, r' ]
下述是一个sample code:8 H: i9 C% @$ `& D2 T
- _9 Z' r- c" r) J
+ X5 g3 L# u$ s6 r |//
4 h# ?1 N) z2 ^! \
) M. Z) D+ F9 Y" i// T-State Control/Status interface
3 ^: Y0 g( u' S( T! i; p
# ?4 @. s' e& h( ~$ ~6 x' C0 a//" a* X g% ?; g1 u
/ S/ ?* s$ _3 I1 h9 C: ~
Method(_PTC, 0)1 B& v* @- B5 ?0 }& W4 m
( p0 X( r) X! f0 L) ^$ O$ K
{
: F. z* F v2 ~# m5 c. K `& ^4 ~( W* I& b" T
//
* h# s2 j+ ^( R4 o+ k
3 w, w8 g8 S( N0 B0 {4 A+ c8 ]/ c// IF OSPM is capable of direct access to MSR$ u: j+ b% I: l, U* r
( e; b* P3 J9 v; l% t" y0 M& K//7 H" i4 d6 t( w9 m3 O8 x
Report MSR interface8 h6 h9 S! ` p) g& N
' a# n" y2 D" _
// ELSE
0 ^/ \- p& a/ F b Z* t) _+ {1 a4 k" b1 C
//
0 C8 _( C3 Z1 vReport I/O interface9 g2 L( z7 @( S3 N8 @
3 b0 Z e" @' K/ \' b' f
//& J2 A, E$ E+ q! [
9 B( o) r: S. q$ p- z& r) Z' F2 H//* ~7 ?8 t3 B9 Z1 H
PDCx[2] = OSPM is capable of direct access to On6 J# Q' B! j& I* Y, M% k7 }9 Q$ ?
( i( i0 X9 ~# M, @9 z) V# |//1 W0 h6 P' n8 X6 ]. ^4 X
Demand throttling MSR n2 s7 p G u$ g! o5 o5 ]/ ~
. x7 X7 R6 P1 r9 [4 ^' j' D$ m
//
4 w4 i$ C" S* o. V) U$ ^0 t8 f6 D3 R, _ D
If(And(PDC0, 0x0004)) {
6 @9 p/ T0 d& }4 w
6 Z* Z7 f- A( v3 p( BReturn(Package() {
3 ~& i+ e2 z/ l7 v
) @8 D/ c- A) T/ i. HResourceTemplate(){Register(FFixedHW, 0, 0, 0)},4 M5 `4 s1 ~" W; q0 H/ a
. q. D. }; G9 s/ ~) m
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}0 I4 g% v O6 k
: X% x. y) i, y: |3 b1 U})
. m, w) \+ k/ ~- x4 C( ?# `. y: O ^6 l% Q2 D% V
}! }, m3 ?0 A/ r6 b6 ^
& @' y6 {; `0 W2 r: t
Return(Package() {6 A0 V/ _! n2 \- L0 t r
7 V7 {" o( Z [
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
; o3 I7 X& s) |: R$ S* `4 V" U' t' ^$ I% z& G
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
. G7 w9 b; r: y( @
0 c3 E# l' [3 I' S$ K0 M}): Q2 K k+ g. V. p7 W( ?1 }
) G& u0 ~' x& f4 Q5 f% k}# t8 v$ [) B3 ^, V5 M6 F. `3 p
9 ]/ Q/ B) G1 Z+ ~1 E5 o
1 p- ?" h" o- X f, C$ ^3 y+ Z" e) Z' O; E
l
+ G9 ?+ u* @. j6 w" j_TSS
8 C; c3 P$ j; y h! O# @: l % P3 p4 g8 b! P/ m
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
0 T' j3 J7 d5 r V& NName (_TSS, Package()
1 ^) r" K* w& [# @- o/ l{
. N8 D* {. Y3 z// Field Name$ F, w; { G" X8 N0 E8 d" T3 d' W
Field Type - R! z, w$ f( w, _
* g' s& D/ h7 a a: D8 c4 v& Q
e+ E# a" l- ~! Y7 G! I A! m# z' L' n% U. v" o1 E) W
Package ()0 `3 C2 y4 ~; Z; @! G! ~2 s; P, W
// Throttle State 0 Definition – T0 / K7 S% u! A1 h3 x
; V. R+ ]5 h) N% O6 Z
{
* J" |* d. O p8 g& n2 x4 ?1 t1 c( @, r- j4 N
! S% F; u" Z0 ]( I* j
FreqPercentageOfMaximum,3 v; L) |+ U2 A8 Q
// DWordConst S# q4 p* C2 a! d/ E. ?9 ?; [! Y
0 t! X9 _4 E2 Z; E) k4 V' D0 }. o8 v
Power,
r9 X. o$ s# q5 r* p// DWordConst . Z+ Y @7 s. b) X8 e) F/ @& B
1 x/ u# d9 y7 X3 z" B
TransitionLatency,/ L7 b# N% Z" e- j5 x( E1 I
// DWordConst 2 }1 i5 W0 r! l* i/ G% M- m4 v) R9 u
7 M0 k, h$ M( E- r8 f8 |- IControl,: r7 Z) T- J; c: p! F
// DWordConst # j' l- y4 V2 i
3 X" z. p$ d& Y! ^6 q. h- K4 A
Status8 |0 ^9 d* m6 K( R2 e& s0 g+ m
// DWordConst
+ e7 Y- F. D! ]5 B. C},
0 D. n+ i c* p& n$ J……, v, x) W: B K+ f8 Q
}
; K, z8 V. @6 w
: L) l/ V+ t' H" s$ ^Example code 如下所示:3 O6 q, Z; |# G- F
( M5 I, r5 q$ \9 J) t8 Y6 j
Method(_TSS, 0)( Q+ B1 K" G' F H& j1 h n$ R
6 h3 p0 f9 z# j- T{$ q- h" M4 ~" w" `" T+ j
: z5 B$ O# {; Z6 s5 t% UPackage(){100, 1000, 0, 0x00, 0},
0 z4 S/ _2 P) S; y6 C
9 e6 y! I* F) |+ H' l/ D* L' ]Package(){ 88,/ J: B4 H; Y. n8 m
875, 0, 0x1E, 0}, D/ J+ F8 V w& x- p
' Y# G$ V/ q6 z
Package(){ 75,# k# }8 x- A, T) l
750, 0, 0x1C, 0},9 u# S* ]& @9 X" |
$ k/ Q3 M( \ y6 Z
Package(){ 63,
w, W1 d: N# T4 l% n625, 0, 0x1A, 0},% K ]$ k2 r6 a6 r# j0 }* ]
$ g" F ~; ^1 e0 b' X
Package(){ 50,
) O! F' J, a; _/ w8 y- a1 B500, 0, 0x18, 0},
) t; o8 i' `9 Y: s" U: S' w }2 {: b8 S9 k( }* J
Package(){ 38,
/ L/ c+ s9 @) ?7 c3 Y375, 0, 0x16, 0},
9 J0 d2 i; F# X0 b
& ]/ r" m" C- H9 @: uPackage(){ 25,' S; g; h& |. P: g: U
250, 0, 0x14, 0},
$ p& ~5 P3 d' V& a% ^1 f( S7 r8 x0 q: J
Package(){ 13,0 u" ^9 Z1 a# w4 K9 f5 _
125, 0, 0x12, 0}
7 ^6 g; z& k8 I" ^ k) V3 W; G6 f& k6 t# t( l- X; G# S) q: b! s' j
}7 K# S) n# ]: j/ c( l' O) s/ I3 N1 A
6 [% A% M! a/ O7 B. O
2 |3 K' `1 C$ W3 X3 El
l7 e, ]; ~- t3 g& i2 t_TPC, D5 H8 a5 R8 v/ S! l
3 d# P1 _9 Q# L8 v! Y8 |Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
+ p- D ~& I e+ ~
6 [+ T0 J. i4 m3 K; u: U* ^: yl9 s0 U4 d" s8 K, O
_TSD2 O( T$ J- b, M% K+ h+ M5 j
2 s7 e% ^7 \0 H5 V
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
, U; e: w& q1 s8 P* D$ ]# k2 J
h2 I8 ~- I# t2 d( d. ~. tName (_TSD, Package() * c2 X V" }5 ^1 x/ V/ W1 O
/ Q5 F* E' U7 w; _( b5 t
{ / \# m+ l( q6 t1 A2 ^
# K' K9 V$ N1 V6 Z9 L$ p
Package(){5, 0, 0, 0xFD, 2}
5 e# Z4 l3 \+ ?$ k! d: f// 5 entries, Revision 0, Domain 0, OSPM
8 M4 t+ A$ l* G! s7 V1 ]Coordinate, 2 Procs
6 P* `: C3 W+ S% H: L/ f+ _! f$ }8 Z
' c. ^0 W4 U- b1 d' [# {, |/ K3 ?0 H6 W6 `: V+ G) `9 o
}) // End of _TSD object. G& m% T( ?/ S$ Q
& [+ _" l4 @$ z& T8 f9 ?; LREFF:
. e& Q$ l4 y( ]1.
2 j# i0 j8 D. h, U' `1 M2 wACPI Spec 3.08 J: p. ^) J: h" ^4 O
2.
3 C/ `3 _0 g" m$ hIntel Processor vendor-Specific ACPI
. r) h; m$ s. ^8 Y2 O8 R
" j- S j8 b: k4 H, m. i6 j8 \
- z% J& |( Z( k* f8 _That’s all!/ M& ^2 k0 ^" G; f, z3 f
, q2 l6 f% }; C
Peter
6 n; ]7 P. z7 }. n+ s, d( h5 i: w1 J
1 o+ L9 t( _. N. U. R/ [2010/10/01 |
|