|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
4 T9 b1 b- G2 z% w; t
% E8 r3 l2 d* K% y3 n* ~9 }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工作时间的占空比)的方式
& g' J4 _5 u8 E; e. ~. Q* _3 n,影响系统的功耗和温度。
s' D3 Z+ }+ L# V9 j: ?4 \0 g 6 A" u+ o6 X* } J
2. T-state Control
6 R; ^) z2 `% s8 p
' d7 n" m, E' K4 `1 s1)
1 Q" \6 Z/ K; k7 p: ], GMSR Based Control
9 S* |% q( a6 z# H
: L1 k; }' z% Q: u: q* o0 J; O1 sBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
) _) Z6 o/ f; O% ^! f
8 L% j! t3 x3 Q" d, w( f2)
8 h% l, m! ~" M* e$ rI/O Based Control
3 M2 o a1 _) S: U$ l 7 v, r: p5 f* W. F( H6 \
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。" p9 _8 n0 H8 N% k) `) C
0 Z/ ^) O0 O/ N$ h0 M3 Y4 a3)6 X+ m1 l$ ?; H4 {, [
ACPI Structure For P-state: r6 k' _" W. G( I+ C
l6 l/ N0 o. w% {+ O
_PTC
+ O2 h% f) {/ L+ d & y5 g- I X, X1 d
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
( Y: P; S R" T3 M/ p( o, A6 B
! F5 b7 C- ] j+ I" U" WName (_PTC, Package() 3 r. F7 f4 {3 K$ D1 O
{ 3 {* C( Q. o% F9 c9 K2 A2 U
; w o' j" T# p
ResourceTemplate(){Throttling_Control_Register},
& G' |3 m+ Z+ X3 t: a$ s$ a+ f8 v/ |' h//Generic Register Descriptor
1 }& ~3 v" i# u/ T
3 h$ `9 A8 k# z% vResourceTemplate(){Throttling_Status_Register}$ A! T9 n+ o/ {" P7 N
//Generic Register Descriptor 3 E; P1 U, W4 b+ L1 V$ b; w
}) // End of _PTC* K/ l+ x- r$ r0 @! c
$ h4 C6 N0 g% H0 ?+ m1 {) {" L& a下述是一个sample code:. j# c9 M- P% a" H
# X' p) x& b" L# I8 V: s+ D+ }, [4 Z* _% g' Q2 M5 ]; b
//
4 J! O0 B/ b+ @/ g9 A* R
: h' k1 O! W/ c5 E1 \// T-State Control/Status interface! Q# V3 P5 r0 `/ M
; G6 K3 t/ ^' @; q; w) v0 `6 M, n
//3 [: u& d% I" ?
: ]5 z9 N' C1 [5 G' s0 R$ c; |# BMethod(_PTC, 0)4 D! a7 r2 O# ?
% |# B2 d) ?( G4 R) c
{
; ~( g; _3 ^/ ^8 a% [6 U& V0 B/ f6 U/ l, n8 w0 P2 d$ n( \1 [
//1 k( F: b7 R* j# C' }& ]; y" t
/ T% k$ t. }. J: |// IF OSPM is capable of direct access to MSR) j& I3 |+ g: S9 l9 H
. x/ g- I( H- \7 h* h! V1 p
//
7 {, K3 Q! M' ZReport MSR interface! p0 w% U4 |9 v h) J
7 I6 u0 P2 B2 d# C+ G @& t// ELSE7 Z; e" v0 N; V
) G5 H( _/ p" Y7 ]8 q( Q
//
! c5 T1 \3 J# P9 \* t$ U1 ]. DReport I/O interface
$ x' U5 K0 G& E: `4 ?
2 x0 ]9 C' y: g. @3 h' _//- X) ^5 l9 P. ^3 W; T" q
. N7 \9 Q4 ?4 R$ H
//
4 v1 |2 R% W3 m% kPDCx[2] = OSPM is capable of direct access to On
7 }( b0 ]' Z" g( f9 C( Y9 q2 Y- i1 T
//. L( [+ @$ f: v; |+ K& ?3 C6 ~
Demand throttling MSR- b5 V$ h; G( X. g# H2 N6 K
2 l1 S* }9 `4 h, N: A+ _2 n$ j' @
//: |5 ^! Q5 a8 H0 Z6 R8 @/ d9 t7 `
7 ~1 O8 {# M ?& u- r1 q
If(And(PDC0, 0x0004)) {+ ?) {& [1 b) ?, a: E
( \9 y9 C/ V; U9 B, U
Return(Package() {7 W0 w; d: U' e# S6 U5 y
8 F' P; I+ u ~& t4 K% W+ f
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},: K' u' n/ s3 F" u/ _
/ R# j- W) @5 g) H0 ?* ^
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
( o' j! x' M4 j/ X: Q: `0 D w
& s) q" ?" Z+ y})
$ [2 F# W9 ?( A. w0 |. G5 H, F7 u0 l1 O7 I* ?
}" m1 F' y1 o8 p" D7 v1 p0 [( [
' y1 b8 s/ A5 m. i
Return(Package() {8 `6 z: }, z7 x+ r! F( i
# C/ j6 W: ^ {; U0 F+ \+ l
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
0 V% {$ g& F7 @) O( e7 W1 X) {9 [0 Z% Q. D" \. j
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}- F6 ^+ t' O5 s; U1 n
1 n8 f+ ^% j m}): J% z. r; m, Z4 L
+ U9 q5 z: W- U}
# K* q4 n- |, {2 {. S1 j4 O4 u
4 A( _# I+ V, N6 ]8 K' G* [+ X$ Y
4 B1 o- `9 ]$ f" Z# F5 @$ R
9 k& W( O; s& U. s4 G4 b1 jl
2 c" [. A2 z4 E; E. D( r_TSS( p) |5 ^: d) k. F( e7 P% A+ n
, J# {# M6 H' L& c. YThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
1 s3 [7 K E9 ~; gName (_TSS, Package()
+ A) d6 |( `" k; p- ~{
* F: n$ }9 N! Q1 ^// Field Name8 P: ~& b9 _1 n8 U- }
Field Type
. R+ ^# l5 m! ?( z. g9 J( n. @4 k5 Y/ _, O2 f/ _( X2 }
) O7 I: }3 h$ b; D' ~2 n8 p, a+ J% }9 H) } y, i2 @. N
Package ()
) \/ W, y- p) P5 F& e3 x// Throttle State 0 Definition – T0
, T* g/ |" p) I3 D. u' W
5 c) Y( N+ I5 r. W3 j$ O& D; @{" i' L" t: k+ e. {: U5 ^
1 Y9 a$ D7 O% y) `6 X. I( A: T7 }
+ _0 M. t. \- y# Z K6 P. `FreqPercentageOfMaximum, f2 j/ F4 v, `- a! Z
// DWordConst
9 G% m6 u7 B3 w! M" d) v7 b8 Y& Z8 l, C4 ?& e
Power,' }2 s9 K* y- `: E
// DWordConst
; H4 a2 W; R0 P' i5 l) ~# V8 X" e
& S) ^1 a. ]2 D$ ATransitionLatency,- P, n6 D( E: e
// DWordConst
6 B2 O' m1 c; ?0 s8 j3 R. J: d9 G, w: d* \7 I* }& U4 O! W
Control,/ }! `+ O4 E7 R7 K* k
// DWordConst
0 x- F; d3 ^& y! [3 d3 R" O3 j% A' z3 I
Status' m- P& T% `2 J( t7 d
// DWordConst $ Z; F; Q4 q( `& @& r3 O
},8 ?5 c6 @* T6 R' F
……
# K3 V: X, K5 S3 v. f# N}
9 S4 Y. m9 h S( B, Q
, P4 A& K1 p1 l) f' X& t, C# kExample code 如下所示:* g" I7 r' e3 M/ v$ @
" |/ b0 d- t* Q _, ^, W
Method(_TSS, 0)
2 \* d: E# `# W z2 I2 U7 V: a7 e( y3 X
{8 d5 l* w, u1 E/ s
- h0 V. S& Q- @: o- s- UPackage(){100, 1000, 0, 0x00, 0},
5 N* n8 H& U/ V3 ~ p5 V: b
4 ]# }; e3 }8 l5 J5 n# U7 ^Package(){ 88,
, w0 h" p0 z) B( O875, 0, 0x1E, 0},
( h0 i- |6 `2 c2 B
+ \0 h, P& n& S. h( Z: SPackage(){ 75,0 O8 I& X, ^- S) D0 n
750, 0, 0x1C, 0},8 g' A: s: F; q2 H" r
, S! y5 H; W( _1 G0 R u
Package(){ 63,8 A4 N' q% @+ f" l% f/ X- a
625, 0, 0x1A, 0},
; i8 Q! E0 ]( A& s! ?8 M/ @
8 C. W5 e9 O* R! c4 tPackage(){ 50,
+ P& X0 x* t# j; P7 l500, 0, 0x18, 0},. i+ Z' Q& o+ m
# H( n) U6 @+ U
Package(){ 38,
& g# Z( Q4 V6 q8 K( v375, 0, 0x16, 0},0 C6 }$ a. o: Q. O5 L& C
; h2 n- ^6 N+ K- U3 v0 y; I0 P1 W. qPackage(){ 25,
, w# ? p8 D: O( `+ [3 F* c3 b' |250, 0, 0x14, 0},( A$ ^7 E% d7 F1 y4 d# [( p
* C' h F- E. S0 h7 c; ?; i
Package(){ 13,
; b/ _ H5 M2 \. K7 u125, 0, 0x12, 0}7 A8 W5 M; r3 U1 q# Z ]( \
* t' m/ h* U1 v, P2 j# x$ c5 n
}
6 e4 ]( ^9 q2 N/ {! c" f* O: H9 s! J. s5 U* }1 j Q% M6 I
8 F, d7 L# R) R8 ?' Wl" f, p1 Z4 ~' H' h
_TPC" D$ v2 R' x# j2 R4 n
; F, y* D. ~* H5 _) G9 F
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。 |3 a' f5 ~% P) M, x8 W) i- ~
9 t( N6 y: u6 M% R% H% s
l
2 P: j" u- E' |" y- V_TSD
, Y$ ~3 G' R& G7 d 5 O5 g* Z; F9 T" g# Z
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
9 x7 }* S4 z# k _9 z# ?, b, @
6 Q$ @7 [7 ^% y' s* tName (_TSD, Package() * t3 d! p1 `, p9 ~8 s2 A% d
* B4 d# P% ]) P% U% _{ / d# ~; j) x! I. Z C# B/ q
) @4 ^( J7 X1 F; t# R
Package(){5, 0, 0, 0xFD, 2}3 q5 X- S5 w9 r/ N0 E4 \, B
// 5 entries, Revision 0, Domain 0, OSPM V1 \1 ^: H2 O' p, E" b5 S
Coordinate, 2 Procs
6 J {/ g& o0 w3 |( D
8 O+ U& D% F) a9 w8 U
4 T4 G3 D) R! s" G; Q- G}) // End of _TSD object
, W' w- Z% M+ _0 y% j. Q( d. b 7 O9 u* Q0 I6 \# t$ |# e8 |6 E: ]
REFF:
7 M, q% v" P/ R! ~0 |4 \9 Y1.
: o+ j$ _6 |/ O8 rACPI Spec 3.0
8 A7 q9 o; Z8 x7 @2.
1 T0 e7 [+ @7 H: BIntel Processor vendor-Specific ACPI: Z. g0 ]6 ]8 I6 i2 w6 V8 c8 \
' M5 x' K# }: x! V' t+ s: Z3 d* T & z; x. S! t# ?6 V% ~( U
That’s all!
3 b: C6 `; d# c O- [+ c : e: v" K6 x0 w& f I0 A
Peter
2 ^+ u9 ] X/ J# y% O& k3 a
0 i5 r2 o+ H* }; [2 X4 M! F2010/10/01 |
|