|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
1 U% F: q5 [. `- T8 ]! D . t: D; B0 b/ K" c# \
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工作时间的占空比)的方式/ K; R' X J3 G1 @2 k4 p
,影响系统的功耗和温度。7 ?* m8 ~' W9 B
7 O U) K: C% h& o& g5 n2. T-state Control
6 }# ~( _7 ~2 M$ ]
( t, w; r. J' I% u1)
0 K% J: E- t/ v* M& f# X. [MSR Based Control8 k; i0 i* x% S3 U" c1 k
+ v: b8 s2 `8 v% s5 T! t
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+ _4 d! B4 [8 t( j" Y
4 ^9 W5 n; T& d9 ~1 [( j ?' H4 \2). r% F5 }) f) @: l! N# }& S6 M
I/O Based Control4 z' `! k+ T6 w6 I$ i/ H
8 n% C4 B1 u- c3 z6 H/ ^9 w5 \. K除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。0 f* K% }) s# E+ m3 i
' B, @, S0 q3 [, u3) p# a( x! S& B% }/ p* J9 V
ACPI Structure For P-state3 o' b( H0 _! V" K6 S, ^! h, x5 s
l5 j) u0 |( u6 B2 m8 r) W
_PTC
* f! C( y9 B% M, ^" Y9 S: y 9 y4 i5 s- m! @0 C& R' b
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:6 k. x& \/ e; ?7 I
1 i+ I. m8 `! D D
Name (_PTC, Package() , G* Q! p1 N9 P
{
* L; Z# r' z9 I0 C/ l! H, f/ b( _/ A8 z% Y& p! n- B& F! b% r
ResourceTemplate(){Throttling_Control_Register},
$ A1 S( C& d& ]9 [# B* V//Generic Register Descriptor
: X$ r) k/ m4 g# b+ | ~, b5 M ^" M5 \* i1 s+ G
ResourceTemplate(){Throttling_Status_Register}8 w: j4 I% a3 Y; W
//Generic Register Descriptor
* N! y' y) w+ _}) // End of _PTC4 P, ^+ ?4 j7 ?4 [3 b
* o" f/ T, ~5 r0 T0 A. O
下述是一个sample code:0 c9 p/ R* A6 M+ ~
2 x; ?4 A2 l* m1 l' n6 G
! f9 \) r4 Z1 o4 J) A5 y( B" [) j//3 z& w6 U: }: y3 r" E
. ]1 S7 h2 _8 n9 i) l! j. p
// T-State Control/Status interface/ t2 e1 y; ~, ?% I
D% Y* J- [ s/ e: e//
$ z7 S- k8 _# d
/ \2 L# Q$ q3 v' E8 C1 _4 D0 Z( `Method(_PTC, 0)
# T8 L4 ~7 x. Z. u9 Q) V5 C) D. i
{
( F7 \( X2 p2 m0 G1 u& l0 \( g6 m- {
//
* z$ w* v, \! t1 G5 ?8 z+ }. g+ ?' k: A
// IF OSPM is capable of direct access to MSR
1 u* A: d' B1 f/ ]! e0 P( @7 E$ P( I2 J( N
//2 ~. s7 C! K/ H5 R( _
Report MSR interface2 D, `6 B' `, `: Q' L
9 {" x* _; W& |" q5 E$ o: a. {! z% e
// ELSE
. _5 c; d7 Y$ N3 k2 s; \" B& D+ S
$ E& N, |2 J" t; g//
0 E6 N% ]4 Z3 C3 I% zReport I/O interface
3 r; S1 H- R( P7 k7 K0 }
5 b/ D$ N! l& d D7 h D" d//4 m- g. z3 ~) D* k( d, a
9 t; S! R2 @7 B
//
A: j& o/ Z6 Z+ }% SPDCx[2] = OSPM is capable of direct access to On6 U5 t- f D1 s/ `8 e
. _' \" b- `! w, H. R7 Q( u8 {( A7 b//
( c' {& }! T, |( a- A# F' Y3 EDemand throttling MSR
1 W* u- {+ V3 S- D+ v H" X
( @8 B6 W: i" g! l) f, m E//
* s% H# H/ R+ D) q. v! H
, g1 X C/ B3 @; O0 P) \2 m3 mIf(And(PDC0, 0x0004)) {
' w" M P. A) \7 u* r) J. k+ F; M, |
Return(Package() {. _& [; }) l5 ?6 h- \& k2 R
9 d1 O' }& B* C5 \ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},2 f! I" `3 n0 I# p0 q
5 D" c' |$ @3 e: E# X
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
" ~- A6 l1 l7 G' [! \
0 e! R: h8 j- B})
# F" @* s( ~- A
j# F: {4 X- |}9 ]0 C8 N m2 y; Y5 P5 B
4 [- K* ]1 ?9 [2 P9 d/ a. Q; m
Return(Package() {
) ?1 i6 O! B: h- q" U% }# V, R: O6 a. w8 @ y" i
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
- f7 k1 l5 c+ p8 Q f
, o. _' p7 _+ H$ W/ x: IResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
2 S- Q1 r3 e, U5 G/ ^# V. t# s" y# I6 ]7 Q5 L
})
! |2 N3 I8 \) C$ C% W) `* r4 Z+ P J) }! w# A
}
4 [6 |3 r+ ] _9 o( t3 w
; H# M& E. s) p! ^
+ v" F8 ^% h; N; g7 n. a# n8 Z: P' F" r0 u6 ^# S, E
l
5 c. l$ t+ V7 w/ C5 t; G8 F_TSS% e& G. r- o7 V+ y4 m! Y/ g* s$ J
4 G/ L5 U6 v$ d* {, R2 q, VThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
$ ~3 b/ o5 j" E" N* `# yName (_TSS, Package()
6 |2 ~4 F* |# _! d2 a' t( w7 e, B{
. C; `1 z$ }5 e: Y// Field Name& I p2 v1 g0 l% G
Field Type / H, g4 X5 d9 Q
' l% K, _7 j# E
' S4 z. k; p! R- G+ F! s- I5 e9 h3 M) L
Package ()
/ ]( d! U4 \0 Q$ f// Throttle State 0 Definition – T0
j2 h$ q5 q4 v) t5 k3 |5 O7 y5 \: Q0 s9 q
{
/ {8 H3 l; [* B0 k2 y2 `6 n5 e1 W' _$ ^7 a# m, c/ J
Y) I7 t! w: _& O* p# l- H
FreqPercentageOfMaximum,9 h6 ^9 Y# a/ ~% |# P) ?
// DWordConst ! K, r+ A; y" C( [4 n) |
4 i; f" f4 t* h0 R3 {. @4 G1 R
Power,; I0 j/ U) {( ?3 E- o
// DWordConst
3 r8 h _' C8 V* K# X/ W, v" [* w# v
TransitionLatency,
8 Q. |4 ^3 e$ X" J! s// DWordConst + }6 r/ L1 t; }9 e
$ ^. q7 p+ }, j& N) b2 v2 J
Control,8 Y- k* k, t0 h+ f# r% L$ Q3 Z
// DWordConst & e; ?6 g# |" g+ M6 U3 y
7 Y$ ]' c/ z# B8 j5 [" GStatus
& R* ~( b( d3 z* h$ b$ v2 j// DWordConst
& q g" b) K3 g},/ c) V1 [6 E5 K' Z# H0 g. ~
……
8 F" q u6 M9 [$ W# }% Y}
4 ]( r- x: o' L! Q1 m( G8 C$ l& m4 R* z4 ~
Example code 如下所示:5 ^/ L: p" {# }% R* F' ~
! a$ ?. t( v1 [% P# Q8 `
Method(_TSS, 0)
8 S) C; H% |7 ^& ?+ E( m. k- ` g
3 E+ u2 w$ n1 ^" K{9 `) ]# D" D$ |
5 K. T- E2 `( C$ H0 ?) X4 `
Package(){100, 1000, 0, 0x00, 0},
& N6 i9 X& k+ S# m5 d( N, U6 S+ ]' }2 k* [ c8 x$ d% L
Package(){ 88,2 o" F* D9 m4 n+ ]) `
875, 0, 0x1E, 0},, v0 b" d% c+ p4 e* i4 U) ^ @
# \/ _5 i N0 n
Package(){ 75,
3 O) L$ o+ \ J* g' [# U+ E% W4 @750, 0, 0x1C, 0},6 \4 s# E& z2 W* j$ a$ x. f
% E1 c1 [5 } d& F) Q; A0 _
Package(){ 63,
8 I8 D8 r4 G! k9 Y9 F625, 0, 0x1A, 0},
) N1 R8 T8 Z* c% t8 ?) W W& w W# X0 E8 U l2 c5 w
Package(){ 50,
& _9 Q+ ^5 ?' ^9 [500, 0, 0x18, 0},
6 Z' p' t- M6 ^+ i0 z/ d/ j# X v7 O
) P7 p0 P6 v0 F1 i4 _2 ~6 iPackage(){ 38,
- {' l/ i( G5 d0 ^- c& \375, 0, 0x16, 0},9 Z( A7 [- h2 c. a+ H
4 q3 A- R0 s7 u( N+ [$ w4 WPackage(){ 25,
7 _4 S; K( v, H250, 0, 0x14, 0},
5 ^1 E' i$ c( F4 |$ G( k# `. r P8 q% z7 I' A6 ?+ q( u( k
Package(){ 13,
( |; F. X) ^$ L* n- ?125, 0, 0x12, 0}5 q/ V b. E& Q$ O! |: k# i d' O7 ~
! k" r1 r& Y0 U$ R0 L) X) ^8 B+ f
}8 k( ~* [$ p( P4 k) l6 r6 Q
/ N k5 E7 L) m7 T' p' C8 a
1 d: C! k9 |( Y8 [l
K7 s" y6 X$ G4 v, _, u_TPC7 F7 o$ {# z! `( Z9 E3 s) X
2 V& `4 Z+ u! k% e, nThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。- J5 P1 L/ n8 c' S2 D
; j* {1 ?! k1 F2 nl
" F3 H1 J; i2 U! H+ v" {$ I_TSD/ [/ o1 d' \! b2 G
; d5 w7 v) ~8 B. m
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:" X/ ?* h; ^( }0 S8 q
! F+ W6 e' H' uName (_TSD, Package()
% h: }' D* ?" k
; R D, P, f: @8 y{ 3 G8 y6 b+ E# o' r/ @9 D& a
" }( h9 b( L2 I4 d- _( w6 q& ~$ P
Package(){5, 0, 0, 0xFD, 2}
6 ]; [$ j5 r! I* _// 5 entries, Revision 0, Domain 0, OSPM
; d$ U7 n" K: q8 sCoordinate, 2 Procs 5 F1 D7 j$ x0 N3 w
6 u3 Z% K: }- I: d$ M
7 a9 ]: R2 _/ d# Z" i) G5 x' A F1 @: E}) // End of _TSD object% ?- p+ ^( C" }
" d2 E3 S4 a% r9 ] O) B5 T5 y2 `REFF:% h! f h' g3 Y1 G. M
1.
- N/ P' r) t; ^3 I. cACPI Spec 3.0
. E `, n/ V4 j6 S6 u9 w- B2.* N0 i6 g! E0 y: M; ]$ v! I2 q
Intel Processor vendor-Specific ACPI6 Q+ ~1 k/ n( \" i6 u0 L- h6 n
) }6 i, q9 O+ q, Y( A & _3 _: d( Z. i
That’s all!" e4 F5 a1 ?8 P* K
2 ~9 K0 | W6 H% uPeter
: F. i% a, P5 q, r/ A+ ^
$ g v2 q" ]9 x2010/10/01 |
|