|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
: g: B& U- E1 x; N
9 ~3 g4 I- B: N( B7 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工作时间的占空比)的方式/ x; p% d1 D' w: t* i+ I9 N* v x8 G
,影响系统的功耗和温度。' j- o8 H& ^. ]: Q; ]
7 x0 ~8 y7 @; s# \! W/ F
2. T-state Control
3 z: _1 l! X; m- D. J
% R5 t3 r9 ?2 P6 P" t$ g: D1)
" A0 e7 G( f4 JMSR Based Control
& k( A$ j. t: H& w- V ; Y6 S1 ?' w& W9 C2 ^
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 ( I' J5 ? B K. K& n+ F
9 k$ U2 U; |4 `7 G! O
2)/ S; z- P4 Y/ s" c: R
I/O Based Control
2 L4 `+ s5 S# I9 D8 R8 ^ . n! F9 Q1 n' f: f
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。0 c1 M& ^0 g6 w& M& \/ Y
3 r8 W! c& j) x( H2 R6 f
3)
: b) e+ W1 Q2 L) V0 CACPI Structure For P-state4 L& q' y+ j& o! a' a
l
' g; `' e/ a* h( m6 L; G_PTC; a6 p% b/ T6 P* y1 H; J
6 Z" W0 O8 J& k* {4 O& R' SProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:1 J5 }9 r: b* z6 |# O. h8 H; W
, o4 Z v/ c/ x5 V* Z
Name (_PTC, Package() 7 k( s2 M' t7 @# h
{ 1 k/ @* r1 L0 Z, \+ \
7 y) _& K8 g1 P, z2 I NResourceTemplate(){Throttling_Control_Register},
$ W& g5 @% D4 K) D4 t$ R" C//Generic Register Descriptor
( \3 O* b1 H- e$ @6 k* {* j& r# b" m' M: _4 J3 _6 e! K* w2 h! a
ResourceTemplate(){Throttling_Status_Register}1 @6 u3 x! f* q& P, i6 w: w
//Generic Register Descriptor
" y; h: }) e. v) Q}) // End of _PTC3 \/ _0 Q4 d! S6 N4 x" }
! L1 w4 }4 R) s9 N3 ~* g下述是一个sample code:
$ |1 u: k S* V! G! I, A9 S2 R
2 V3 i9 I1 |+ m' y$ u" U5 I! O% u& _% _
//6 P. z- O. L6 G) ?2 ?
6 k! ]# K. C8 G1 n8 L4 C/ s9 N
// T-State Control/Status interface8 g' L) a+ ]) P$ B, f! @: V
* P2 E a+ _; Z( V1 a, i
//2 [& ~3 i& r/ v. \2 }
( y; ^3 w8 u8 z& u$ e
Method(_PTC, 0)
6 p2 T; b) ?! P1 k9 Y. B. O" t" M0 N% N' H& p+ l4 T, z& k: M. N
{
0 t# ? V; c$ Y7 b6 Z
5 U8 k7 o( ]' w) X5 Y//
! V; k+ c9 R$ X9 c1 N( X% J* @
: G; Z+ q4 [3 T* G1 `) y, T, e/ o2 S. N& D// IF OSPM is capable of direct access to MSR) r; ]; U" J% S' ~& ]
+ [0 z# i7 N- f2 _! C' @& J$ M
//( a9 b6 J+ C$ t- K
Report MSR interface
* ]' ]' w/ T( Y, _
% }5 ]$ I1 N) \$ `4 V e9 e1 t// ELSE, t. s# {! R6 i
' S# G$ z& p& V. t7 \
//- I, @" l. \4 N/ g/ [; j. {+ D# ~
Report I/O interface( s+ l- v" b q8 z& \' M
# j9 ]; `3 I+ Q1 H
//
. _5 i+ {( f# S- S3 a, D, p! w( C! x i7 E$ Z9 J7 \) ?
//
/ Q$ X! D+ M0 {" L WPDCx[2] = OSPM is capable of direct access to On
* D* `1 e6 W% E) u' @
/ ?6 O" L) e8 s9 z F//4 V4 d6 m% p1 J* w& W3 z) X
Demand throttling MSR, l; Z( w5 _/ E* N6 b
" E' H, F' S! O2 R( @
//% K1 X3 U: r7 M0 ^9 }& m1 k6 [
) n: p7 L3 P5 n# b, C0 y) C; _9 C$ X
If(And(PDC0, 0x0004)) {( R. p- N0 { i& ?* N2 B
: ]" m; C: i+ x2 Q" E
Return(Package() {& j6 [2 o {) c% s
2 y: b6 U7 ?0 |! O( W" R9 b2 T1 WResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
( Z1 Z; j6 s9 a/ H/ o/ k8 ?9 S" A# o) z3 w" K) h0 T* C* j
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
3 e& P m+ q+ q. a
, _8 s6 ?2 J8 Y. ]- V" v3 \})
, Z m3 w! J" B" ?: L+ H# u% v# Z( C6 t9 l
}
1 Z, u5 I/ U; Y- M+ l
* A: j* a8 C- e5 c7 JReturn(Package() {) S) M- p4 Q3 F/ L1 S
2 n; d, N8 z. b! ^ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
! q0 s) J" c, q: ?- H, s
. q I: a9 [" E- v2 u7 X1 ]ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}6 ` i+ [& M5 g5 f8 m; H& O
, y1 t5 d, ]' y0 b+ |; D})* y4 E2 b5 l4 A5 U5 }
0 F `# V3 C0 R# A$ x) C. u8 s}
" O+ q% b9 g' J0 j$ t! H
' G' {" ?( Q8 t- ^
8 F7 Z6 q, b9 @* B. l# U2 K+ `& d( g7 Y+ j+ v _
l% d. A7 ^+ K! \) R$ f3 o
_TSS) S8 g1 V" J# U1 D6 o
" y) E4 [4 M# p' b
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
( @; W( Z1 V7 p# i2 dName (_TSS, Package()
3 X2 o5 s% \* s$ z+ v{
3 n$ J4 n% U3 a8 v( z. q// Field Name$ i/ d3 F' X- y1 \
Field Type
0 A$ \; E: o2 D% f5 {9 Z+ X8 `2 G. J; W. |
+ z7 M+ n" g- d; F
8 C$ N }, N0 k v7 \+ gPackage ()! ?. n& p6 S1 W+ t1 G
// Throttle State 0 Definition – T0
% z1 t0 {, }4 q% R. K6 s; @' Q7 D& \/ w0 O
{( k: g; p ?' b
4 m, |. C+ [) a4 x3 ]. F2 l$ ]
* C4 {/ x% x7 y2 u0 V$ I$ f" NFreqPercentageOfMaximum,. h5 H; r* u/ J5 U5 G3 U) Z
// DWordConst
/ u& F, P. T% G# g) e* f) n2 C# R9 U: P3 ~
Power,
! u9 j$ ]- I! X, A$ P6 v+ J// DWordConst ) d' X y. a# p9 y4 s& l, F' a
- _$ {/ Z; s9 p
TransitionLatency,2 d2 C' E3 q$ j0 [+ D
// DWordConst - u* X3 K- }! {7 m! N+ q T- J
+ K8 k4 W& |: M) `. \0 m$ \Control,4 b. M1 d4 I0 o- h4 @
// DWordConst
6 Z* f8 y" u' j
. i6 ?+ g* o8 b# ~" `3 SStatus
, N) p5 V: {' H* Q// DWordConst
3 k) K$ f% ?( H},# |0 E0 z" [& j1 @
……
6 I r( l* i. W X7 y) p. _* w}, H5 F G8 e2 ~( T
- [$ Y: O& K- H6 G7 W7 I O5 FExample code 如下所示:( ~) P$ c) {: a O! p5 p# w
, b. o$ k$ l7 n3 gMethod(_TSS, 0)" {; ]- S- Y7 n9 O# R
: A) N( w5 `, K0 T{
* z! H- a; v! f9 f" c) S
. `4 U! h: [! a* l4 U$ D5 A: a" MPackage(){100, 1000, 0, 0x00, 0},
) i# @8 p: w/ x& I$ i( z( A- k9 S5 P6 M" T! [
Package(){ 88,0 A8 Q- J) N; Q1 Q, P3 S
875, 0, 0x1E, 0},
" W8 @: v* j4 ?2 Q; Q
0 P/ `+ m7 ^4 J/ g, VPackage(){ 75,! r% R4 i0 T. c# Y
750, 0, 0x1C, 0},& W; u8 g6 o+ y" ^* p% z
. j2 G* k0 O) c, _' U+ V' l3 ]' GPackage(){ 63,
9 f& x8 v, D. x# r. J/ F625, 0, 0x1A, 0},
5 t$ s$ E9 e3 L
1 `% Z5 `7 B& D6 z V( VPackage(){ 50,
: Z+ ~1 s6 F( T2 z7 N500, 0, 0x18, 0},
5 b8 w5 Y* Y( {: P, g1 e- p. d" \3 S! Q( u' i4 J1 w4 s- B; E
Package(){ 38,
- u8 w+ _2 w; X& i$ K+ f375, 0, 0x16, 0},) s8 }( j8 |) r1 Q9 I H6 k
) O& l1 ^ k. x3 w$ T! lPackage(){ 25,
9 i! l3 J! u7 T7 O# J250, 0, 0x14, 0},$ Y1 p. b) A/ }
( \( ]$ q! I8 b& }: i; m. w z! [
Package(){ 13,$ q2 f; C& j: Y9 l- Z
125, 0, 0x12, 0}. W: @. p4 u a0 @% N+ Q& }; O+ E: Y" I
( x5 R5 d' Y. J" \4 k}/ R9 I9 r- c% @7 I. _. T
( H% l( J8 i4 i! h9 h8 a1 Q8 t5 D+ l9 y: v% x
l I) B e; y1 O% ]) M# D9 g
_TPC( H$ G% B. }- C3 v; L% S8 z! R
0 J+ N8 l% ?0 M1 s* M s
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
, x ?! `0 X8 B6 [$ O+ z8 m+ Q- Y5 [ 7 w: H, n `8 u- s0 P3 s
l
/ N4 e$ M2 P0 {5 V_TSD5 V% i ^( B9 f9 a, h. n
) L& R; X$ q, W6 C0 D; m8 ~. @T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:# ^' E) J! W9 g) A
6 h( C7 i4 H+ a% bName (_TSD, Package()
6 O7 \1 c* c3 Q/ w8 g, H! d4 N6 y+ }. Z$ k6 o
{
$ G, y3 g9 A) H
4 h* d4 X7 e8 PPackage(){5, 0, 0, 0xFD, 2}
& `! s+ J2 g! P& a3 W3 Q! B6 ?// 5 entries, Revision 0, Domain 0, OSPM 7 F- q& ?' e7 A; A. n
Coordinate, 2 Procs % {1 \- c, g3 w& \% R! e4 f0 J
8 A* o/ s' q% G r( [3 o/ f8 B* f2 U: r- ]- E8 c
}) // End of _TSD object2 E/ `; {. D6 d& [- b. B
$ u; B# U- q0 l/ [# e x {
REFF:
! S6 s5 k1 x8 u) G3 d" C1.
+ }, ^# ]) j; V. Z! h6 f8 P: _2 v( }ACPI Spec 3.0
9 J1 c+ W3 ^* @* R% }$ v- p2.2 a4 Z+ ?/ k4 v1 y( M
Intel Processor vendor-Specific ACPI
4 O, A H* X2 T4 |. ?+ r
4 l* P/ f" g# n4 L5 k6 i , j! J" n; f9 b2 V/ w
That’s all!
- u8 a" {- w2 E4 l, Q% y2 w4 O! x
$ o; W! U3 l2 Y) b4 SPeter
7 `8 C3 m7 n2 ^, T$ t - O( ?4 W7 V) ?0 Y/ [4 y2 \
2010/10/01 |
|