|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
; Q+ `( N. V9 m- l ! V' x) O, |4 A% a" d& u
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工作时间的占空比)的方式
E7 W5 V( z3 p,影响系统的功耗和温度。+ e# m* X/ Q7 Y- o6 m! i
# B' p# W8 C1 S4 i( l2. T-state Control& d9 e: u# `. D9 |: @
* o5 O% s: R7 y& W1)
# ^- \; ^- S$ u* C0 fMSR Based Control2 P6 S! a# n! J+ c# c) _: Y1 ]
$ }9 d& h2 p1 s/ a9 x8 L4 s; g2 ]3 g
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 A9 j1 b6 o8 u6 x
( L7 B8 F( |6 h' \! l
2)
) D" y6 ]2 m: C! ^; QI/O Based Control
, x' \6 J/ a* x& o" L m, m* P
, a% p" z: c/ B! c6 |* J1 F除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
6 \6 r! R S3 W
^& S8 T$ x: A' F0 O" O5 m3)
}5 M& |2 b2 ~% M3 T/ @3 kACPI Structure For P-state8 K: V: F0 ?$ g' W7 R
l3 o- U3 v; H C' Y) C. X, r
_PTC& A' x8 L4 _8 y' z1 E* g
! w" {6 n7 s" \Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:+ ~9 i0 q5 ^3 f; D# c
% B. @( K" i( Z$ a5 O) NName (_PTC, Package()
" D; R# y' o( `" F% a{ - K/ i. B- n- N8 n: l- \
) m6 T# F# U; p9 l8 l X
ResourceTemplate(){Throttling_Control_Register},5 s0 ^# Q5 M3 s4 i/ o) R q# x
//Generic Register Descriptor & C1 r5 D" U( _7 t4 y7 Z/ s" y! g
4 S2 r$ b- W$ g7 r! L @. jResourceTemplate(){Throttling_Status_Register}
! g2 k: L y/ t5 W4 Q- A4 Z7 |//Generic Register Descriptor
: \! u# q2 ^. S% x# f}) // End of _PTC/ l! c7 L9 M. t8 @
% O$ W3 C1 T5 _; j下述是一个sample code:
" B W( z- o$ o0 h# e % b2 e6 u, l N
! k8 C0 a+ i' E* e; b
//
2 t4 z* v. m4 q0 k2 r( i( q
5 ^+ J" d; q, J$ w- `: C# U' ?// T-State Control/Status interface" U: L H( \6 U% |7 ]' a1 P
6 k, \1 l: ?& F/ S; r7 x8 R
//
' J5 \& _6 p' I' i6 g. w! X/ r5 f- ^ D
Method(_PTC, 0)
9 T. A1 `/ }2 U; n! ^; x, _4 p. c3 E0 P" |, a( C! x9 k) t
{5 `) k# a2 o/ d* ~4 i/ x: V
; ]+ }" a% N; y+ l% M( y
//7 @) a! b& N% T
4 A; m4 j2 u. C! D# a. w7 n
// IF OSPM is capable of direct access to MSR4 V9 P$ \" K/ A" U4 p" g: A& [
* ~, A# {7 g7 k) a5 O, J/ l) c8 c//
1 e+ w# e+ [: ^2 k( [. sReport MSR interface' h/ |6 R2 J# G6 D2 J: Z
0 ] N0 t$ Y6 K' U// ELSE
8 d0 |2 d3 ~$ J2 t; ^6 n) L/ c$ H& z
//0 E% f0 x9 Y/ _( F) O' S& j
Report I/O interface
4 x6 }9 d- N$ \ }9 i
8 W* z) m) U5 t* {# }, o; g//
% h5 _' p$ D8 l! p0 r0 F$ O1 t: t4 A" e8 }! p v( m
//# O( _# {+ K1 C
PDCx[2] = OSPM is capable of direct access to On- {1 b) M3 |) R, v8 g' L
5 N! n+ p9 w/ s0 t$ K9 |//* E# V) I, w l! }0 k, _- g$ k
Demand throttling MSR
. C0 h) Q( I- Z8 `3 k/ t$ N' ], Z
//
( b0 B4 _4 ^. o6 A/ K; h
9 ^0 B$ h( U% o, m9 D$ O0 WIf(And(PDC0, 0x0004)) {
$ `) `7 `8 H. H# i2 o' \# D2 q% d; { }1 c; W
Return(Package() {
# R/ ?8 e/ Z. P, ]: q+ C: T, p. }3 q
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},- [3 g) \/ B; I* y8 W
" [* E5 R. v& gResourceTemplate(){Register(FFixedHW, 0, 0, 0)}/ e5 `$ k" k1 A% M
/ J+ L5 v6 D4 _
})
, E1 @6 ^2 e! O7 v
7 s. U( d7 L3 h+ @$ {}
; l, [$ s" t, t* d3 j+ D
: i/ m7 g% M5 w8 kReturn(Package() {
' i/ z& o1 C r! b" e( O1 i3 P4 t D% Y! K
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
* p2 o5 k6 p$ v" e& M) Q0 r5 I. r' t( M
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
0 Q, Z" w! P. w( H9 S1 A/ r% R8 l- E% b9 U, O5 }3 g( J; W+ I5 G
})
. r( Y- U$ G: B$ o1 a( U+ L% t! o+ A' k
}5 o( W+ K7 P. ^9 z3 s' x- G, {0 Z
# O1 R O' J- D, Q$ E: G8 P
2 c- C# _" X( J# A
- S9 e! H3 e" f- {& ql) \3 J" V3 m7 c: V+ [) t
_TSS1 U" ~# y3 E+ W+ e& }% i
0 \* v" {2 A% TThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
) g+ V# W; i, H; bName (_TSS, Package() * Y/ ?1 d5 Q& w8 ~
{
# `! }5 O1 U2 F$ o; U+ d// Field Name# t2 ~3 [! [, P* A+ P
Field Type % K, j6 g" E2 j. `
# \1 x) H2 ~2 G U# s: K) R* F e$ X+ C `5 ^0 e
" p7 F: Y$ C7 K4 B9 I, TPackage ()) [1 S, K( w# i* `4 N. m
// Throttle State 0 Definition – T0 % j6 f2 _, \2 Q1 z
6 V$ x# a' | _6 h, D" o* [ u{
! H* l! n1 v6 T5 w- }- @ s Z& f
5 q: [6 j3 l' P0 `$ Q8 c* ]% c: k* P0 k/ A! E9 j
FreqPercentageOfMaximum,
8 l& s2 R# F {7 z2 _1 Q" B// DWordConst 9 o8 i+ S) Y/ O* @& |1 m$ k
. x* _0 f* v% w# J# `! [
Power,& L- r' Y) u4 e
// DWordConst 3 P! j: W c, f9 H' ]# p( k
0 s5 R) G% D/ I- m4 c& ZTransitionLatency,
! l. @" E& @* U0 L$ `: ]// DWordConst 1 [+ U; V/ W! g7 m4 S$ o
z! c7 u; p2 ~( b5 c
Control,7 Q6 a* E9 o! P4 t# D
// DWordConst
5 [: u( N& }9 r x3 k, T/ m" ]' c1 r7 }, e. u- S+ H
Status0 K2 [4 C. [9 I: A, u G; d
// DWordConst & C# [4 u N+ r) |9 t, f- B; L
},
. }! D: K/ r- I# C d……
5 m6 j% P2 i2 `" V3 w* h6 W" D, e9 T}! z3 b/ D0 _! M* e- T! q& k h% m
1 X4 q9 Y* ?/ }8 @( hExample code 如下所示:
3 r! g: N1 c9 j7 k: U' U1 y, y; U4 ]( `7 h9 J. s$ l
Method(_TSS, 0)
8 K& a) ?+ x9 m. W
$ b" P5 I1 |7 M2 e" Q; _/ Z! v{8 l! p! P% h0 Q+ P( P' k- }
7 ? j& ]' l! u* R- m& j1 lPackage(){100, 1000, 0, 0x00, 0},
' {- ~- h& \6 Q$ V- |! {# r9 f: j- N/ B! G- ~
Package(){ 88,
! }1 ^, E/ I: S, _" ]* q+ m: ^875, 0, 0x1E, 0},
7 A; v# e% } \6 Q b) p. G' D" U! D5 w( F: U) N1 ]
Package(){ 75,2 i7 H4 s- N+ C
750, 0, 0x1C, 0},: O) \. C- g2 W5 Q$ p. W
1 Z4 T% L X# {
Package(){ 63,1 h5 @+ R. ~. q" p8 }2 m9 w+ a
625, 0, 0x1A, 0},1 n8 J2 w( T, t$ S" l
- S. M) I+ }+ v# x% M
Package(){ 50,
# U! {3 k8 [$ O3 d8 a500, 0, 0x18, 0},
1 J7 j; [! D9 y3 b' D: k7 t: F7 ~4 t" T* _4 @- y
Package(){ 38,
5 U/ h2 {1 E# g" d/ x375, 0, 0x16, 0},0 Q) H \1 W: g: Q' b. `) J. ]
1 U( e8 ^! Z! W2 D5 Z, M5 F. j0 dPackage(){ 25,% R4 b, P* c( I2 l. T& d- A4 i7 A/ K
250, 0, 0x14, 0},( X7 d$ @/ H4 c* d* @
5 A# n/ T ^ l6 q
Package(){ 13,
) o$ a1 h, F8 z! i9 s125, 0, 0x12, 0} O8 a- C" h- U! P M
' d- O+ f/ c$ X0 Z2 I# Z( a}
/ O0 v5 [2 M4 C5 z! Q6 V( H5 D2 ^- [/ n" T( {
3 |! R% c5 z6 M4 O& J$ S5 q! i; Q
l( l0 B& A4 w9 _
_TPC
" x' y- {9 H' J
" [# ]0 N/ v% t( Z4 U- {/ qThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
( p( I x7 m" r+ P- r ' p9 R/ {1 J8 s% O/ H, g$ m
l
& l; w B# c8 ^9 \4 l) v) Z I_TSD% x7 X! a% _8 K+ a5 Z& N* r
' ?. p( @+ B% H$ X( c4 ~T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:9 G! J& ~/ `( D% w+ T( D
- A, q/ B$ f" ?# L2 c; _2 o5 |5 y5 n- O; E
Name (_TSD, Package() & B# d) }# s' c) Z
8 G! V9 Y# z0 @( ?
{
0 b+ f" c3 G7 o$ W
7 C0 b5 J4 X- ZPackage(){5, 0, 0, 0xFD, 2}
/ E$ {; `5 C' @# N// 5 entries, Revision 0, Domain 0, OSPM . c [3 C1 V) q. ?$ d
Coordinate, 2 Procs
9 {+ s. a% J+ x% m9 z, m5 J7 R3 F0 ^$ L
' _( @, y; c; a7 q}) // End of _TSD object
$ `0 Y w; h. n& |8 Q 9 ^3 O* j9 \ k; `3 x- j* }/ V
REFF:/ n( _; n, _7 z4 p
1.
5 I- R: d5 w! L0 v# EACPI Spec 3.0. H" b% O+ z) _7 a+ F* H5 E* {' C
2.
% A, y, \% a8 c4 s D+ dIntel Processor vendor-Specific ACPI
! c8 E3 E& S- H' x4 I" U8 S 1 M8 C5 J- t4 f7 D
8 B/ T3 T1 [- r' E1 i! {$ P4 T
That’s all!
5 E5 F, B5 f D/ L7 w & ]3 O- P& f. m, q4 c/ n: Q9 i
Peter
6 @+ O: p7 y2 v' `( W a4 n0 y0 v ! o6 `5 o' I5 f% @0 m" F
2010/10/01 |
|