|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview, y8 E/ a* b. Y6 q7 c
- G: o2 a' L( C0 X @3 o
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工作时间的占空比)的方式5 a6 l. m. e. a) v$ |% ]' o
,影响系统的功耗和温度。 o- N1 D4 y# o1 g( p
6 I& V9 N* r; ^! T( {' b* x
2. T-state Control1 O' z: c9 v+ d- D+ J
1 n" X' {/ b0 I7 ^* [1)
+ q2 F G, D- GMSR Based Control1 A5 t+ h' C2 I9 ? H9 O8 N
: U* Y; G6 v0 b2 F& r$ r' O
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 s- F! m$ ~5 O) P/ ?8 ~$ H 2 A$ B( n. e+ S' c( Q: `
2)* }% k1 E" r# M0 {+ \% @$ n6 T
I/O Based Control0 v, t- d Y0 ?8 t3 x! v/ J
3 j8 I' Q3 M% d
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。1 \# B- C$ v% W5 A- B: ~2 [, ]4 O% L
( u+ p( d- h+ a* }+ f
3)2 w) e, f( P* h8 ^' A
ACPI Structure For P-state: l: l6 h: y P
l
1 W9 Y, n( }3 P7 a7 q' V. \, @, M_PTC1 C' E6 m# k5 u# P% p
; K# G. ~* L* _. ~
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:( t4 B/ W0 N/ ~: |' m4 n* ^
! G; A1 I8 G/ e/ eName (_PTC, Package() 3 M9 d4 E4 n8 E3 W
{ 9 g. d4 M4 e+ k [% c
5 N1 x; i- \$ G( D' [' ?
ResourceTemplate(){Throttling_Control_Register}," Q+ v7 y2 k9 J# H
//Generic Register Descriptor
4 }7 c) S f; H" `, e9 [' u b4 k- b4 M8 Z. G
ResourceTemplate(){Throttling_Status_Register}
, a+ q$ ~: O4 ]$ F1 k: [- _8 Y//Generic Register Descriptor
5 b9 E2 V& N$ ?& t, H# {3 M}) // End of _PTC' e2 \- l0 |6 [
7 s# e; u z9 q3 S下述是一个sample code:
4 G# o( Q& T" _. Q" X
) |/ d% I+ f- C; N( q. h$ g r- o" v
//; y" | H$ n! }1 I$ z; ^6 f. [1 N
7 i' i* g6 q" W% z& O// T-State Control/Status interface$ e: M, G( J* M0 [4 x/ e4 W
8 O, ]6 J( D) d4 S5 H& G//
9 h3 Y' y" U$ C1 t5 t6 s. t: b) l% g# y5 M5 A2 w# M
Method(_PTC, 0)6 ~0 @" A8 c l. w
% r8 R' S( a7 m- P/ l
{/ x2 f/ o* R5 g: N% z
( {4 [7 A' x6 Z" \" g
//8 H ~1 _4 }6 B% E8 r: l0 t( N: o
5 p3 u6 ]3 I6 ]; a4 r1 u
// IF OSPM is capable of direct access to MSR
- F% q6 L3 D; b8 }3 ]: U" c
2 U7 |& s2 P& O" j3 B/ G. i; m//
2 z3 a3 Y: t& E! f$ V( ]6 V) j4 VReport MSR interface
; A/ r/ A$ n/ p! O) e- ^% R" z' D
9 Y& D' J4 E* u' k/ {. Y: o7 d// ELSE
1 l/ r$ J6 G" T5 |) _3 [" c$ {9 T% D3 [- V9 H2 B& N% T: u( Z2 K4 y
//
5 r6 v# u# K* b6 e1 `1 z: j% q( }/ hReport I/O interface! w7 ~* a( D+ G/ x
! c$ z m8 _3 q0 h! D5 G//
7 `( [4 d0 u1 Q) G
5 o8 }) t- u; n//
) [! {: Y( S# y2 ~& qPDCx[2] = OSPM is capable of direct access to On
4 h- l; b. `( ]/ Z
1 d( V8 w% W7 b# w//5 H E. I- _, i' x/ E
Demand throttling MSR* d/ e! C6 w- m
" c3 ?* y9 F' V% Q* Y//0 F- i8 j3 i( u$ |* X( K/ O
! w$ P& ^2 \5 {3 V# m
If(And(PDC0, 0x0004)) {8 _) ~! Z4 `7 R
7 o7 b. t J7 l. d. p0 D7 YReturn(Package() {+ J" w4 a. t5 X/ \, G8 _- `; l
( V6 o' I7 [5 |+ J% ~, pResourceTemplate(){Register(FFixedHW, 0, 0, 0)},# J; I# L0 O; _: v
3 C" f$ O: x4 [ S
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
: ]' L0 s9 ^0 v& o7 w
7 H& c3 S I* \: T0 S7 ?8 A})5 S3 K* s4 W% v! o
) w# _6 b7 k- W3 n, s* Z}
2 a5 i% y5 p% O1 M1 |
* \$ Z4 F5 [" [" MReturn(Package() {* h. E, K$ V! O+ V: ]' k
1 j8 R E2 j/ N0 p' DResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},9 }1 L4 j6 K! P7 I* U8 L9 X* F
' ]/ e3 _: q2 b# j; D" |' {
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
$ y3 P% ], g$ F7 z5 K4 Z$ h1 @; E$ Z1 |
})/ E2 H( T2 {1 Z3 V4 s
/ {" T) t9 ]% O$ X
}
+ j" y1 h& Z9 [8 P0 m; ^; J6 d# ~+ b; R& e' |( S- ^! M
3 q& ?3 {8 l! l' A* h( y j
1 G4 C* E9 n$ P9 {6 ?
l
3 X$ X$ |+ ~# Y7 `) N2 g. B_TSS
( k6 q0 ]% P3 h9 e2 G% U7 M, Y/ c
* f* Q3 U& v' n/ Z" OThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:; U6 X1 `1 c3 |+ q( |9 o/ e: v$ K
Name (_TSS, Package()
. ?+ j6 `) l @7 h{
2 I/ J7 k; ?3 u7 K5 ]// Field Name
9 l) G* q7 Y" v8 }6 ^Field Type
* R7 j. @/ ~% _9 s6 Z$ Z( j4 c, k1 |/ G1 y2 x" p3 k
0 i8 B. ]2 y! |" Y( ~# M, z
* o& j$ Y! t/ {+ S5 Q; i" B- ~Package ()! F, b& p, |; O5 z& N( u) C
// Throttle State 0 Definition – T0 & r: A. |0 e2 n. e& \2 {0 C! d; k- H
% R; p5 ]- Z9 V1 c* K{4 \! q' n: `% z/ V
/ [+ n) i/ W6 e4 s! `9 G% Z
; ]! p$ ?7 C) i2 x! zFreqPercentageOfMaximum,6 \6 B' {- o+ |& S0 N+ Z0 ?$ R2 { b3 Q
// DWordConst & y/ B4 @- i2 E+ E
- L3 h' P( M' U. d$ ~4 S' M% yPower,
4 {2 l1 Q Q4 I% {// DWordConst " K3 m F, a2 O4 R$ R0 ^; i5 m
; M' W+ b) c4 ?0 [TransitionLatency,
: _0 u% q2 u4 G5 _) O, |; t// DWordConst
& v1 t' D. [) C( `% h3 V8 G: S. N8 A% d- N) |3 C3 f7 r
Control,
2 |/ j5 B" K+ k/ ~* o: W// DWordConst * O. K+ q" @6 N$ K
$ A: f% x* D2 X+ D$ OStatus
- T4 R5 J R, V// DWordConst 2 b9 z5 f' j9 w* L. b: g9 E
},3 a2 z8 n5 b% M5 y* ^
……
5 o) a1 A0 M- t; X3 l$ P! @}
0 Q2 w, Q7 Z9 j) Z0 A: \
: n6 F7 h, B N( H5 wExample code 如下所示: z( e* p6 `( |# e7 [1 x+ s. W
: G. p M$ V0 {, B
Method(_TSS, 0)0 b' X. ]. A: V/ }( ?* O
, i3 g: V4 H V' H/ ~+ a
{
, |% ?7 {7 k P
3 o1 l6 U; B% C+ H6 Y0 i( Y+ W/ OPackage(){100, 1000, 0, 0x00, 0},* V/ I! b& y0 _, V1 F' @8 j; O a4 r
. a* r, ~# B% S7 _
Package(){ 88,! R" z. O- T" h: ~) [4 M& Y
875, 0, 0x1E, 0},
- R" }6 S: u; R+ G' I8 e2 k% t: A+ c! \, p: e1 T
Package(){ 75,
- Q# D# ^0 M* L: \9 A! f750, 0, 0x1C, 0},& y& f) G7 V- {8 j
2 S) W) s+ p& m' G- VPackage(){ 63,) O1 q$ Q! t4 D% `/ j
625, 0, 0x1A, 0},
* _, n9 Z5 v* x- e0 D$ S+ G& {- p; G+ M" r: K9 H% I( \% p
Package(){ 50,
) c- `5 e" V, y3 I6 n500, 0, 0x18, 0},
5 P# {3 H j6 p1 t& C S
" y! S/ S2 G) h$ i+ [& H+ V9 y" i/ I/ X) EPackage(){ 38,
# |+ _1 u/ \& {; p375, 0, 0x16, 0},
, ^* v6 \1 |) g- U) @4 {
. { |2 l- A: ?Package(){ 25,7 d! b2 d! x2 k& T. Z/ Y u0 c
250, 0, 0x14, 0},
4 Y' b0 Q$ c1 `# p1 x5 W4 S# }/ G1 j, N9 M* a
Package(){ 13,6 O' [! b* I) ]: m
125, 0, 0x12, 0}
) r! n. l, X* L* u3 L) s6 d, G- j
\* b$ _- P# R7 e}
6 o8 P2 f# A# M( O
- ], q; A# C! V$ n8 d9 R0 w, K& G# w& R( O4 q# m, ?
l
& h9 t. X4 U. l( `( E2 u+ S! E_TPC
3 l+ ^& @" t" S U4 L
5 k0 m: f" H: p5 T" i3 F. N1 @+ PThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。; g. p0 `1 \7 J2 r
0 W- X/ {$ |7 w( ^1 }" B6 W8 Kl
5 U% P+ i0 E1 Z/ i! ~_TSD1 b7 X8 r4 Y7 ~. g7 C; x7 U- _; `
/ R! ~1 z( {9 I+ B# ?9 R* D
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
$ H- h$ \( V& [ & V6 b, I" p u' {0 o: l+ H
Name (_TSD, Package() ' b" Y- }* g( j2 o3 L+ ?
/ l$ N0 e$ n+ Z' i7 y8 C' v( W6 ?2 j
{
' t! b. p* H; l( b' O8 v1 v4 `. G) h
4 f1 l$ ^- S( m* `4 O) O4 @Package(){5, 0, 0, 0xFD, 2}
1 C8 R1 N$ R9 g1 g) h$ U4 Y8 N// 5 entries, Revision 0, Domain 0, OSPM ; u# ~6 O* y+ l
Coordinate, 2 Procs
1 U& S- l3 h+ ~( ^) W' o7 f9 h1 s% s9 Y; k" W
7 B9 h% F6 b, ?; T$ T}) // End of _TSD object* y% `; H$ k/ L/ y. y+ K$ B7 n
) r: k; x9 t K) a' K% y g
REFF:- {% d+ o, [" l' |
1.
7 N) O6 [+ X& t- T5 b/ h$ |3 \+ ZACPI Spec 3.0; x! y! d! a0 M* g- [( w
2.
! g5 x( q. [/ @' }5 \ MIntel Processor vendor-Specific ACPI5 K6 z% ?5 p+ G( Q: j' R% o8 _. k2 N. D
4 f# p# S$ [( P& g6 l
" x+ s1 B0 G1 b1 L+ w
That’s all!6 h% _% w4 w% P
, W- [ w5 W" g4 A$ A3 yPeter: o/ k8 a8 J5 }/ O
9 h1 i, J' u& z7 q) m8 X# ~2010/10/01 |
|