|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview3 v# V4 E# v# E/ @2 R
) i$ e! w3 Z( z) H5 s8 R) [! F
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工作时间的占空比)的方式
# c& }8 b! r0 [6 \5 y,影响系统的功耗和温度。
, D n; g, A6 P- w
' P8 @7 F% e1 A( A* r2. T-state Control9 G9 Z c R' u0 J
! N) \. u s8 w9 C
1)+ G8 U; z3 l/ t% F
MSR Based Control: E) b! ]8 g' c, w: s
# C. B4 w- d+ b, N
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 + |* @( Q3 E6 u3 [) Y& A" d& b0 s7 S: L n
: ~, h) w$ \% d3 ^$ }, g9 ]% U2)$ `, N/ {5 Q3 w4 X, q
I/O Based Control
1 j# K$ j7 _. t* E' n$ H
# N! ?8 ~/ n: O1 O# W& A8 [除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。- s. [0 Z- t- x% n0 E# X- L
% t4 U/ B1 J- W* e& p/ k( z3): e- y4 f& Y, _$ c9 p3 {) V
ACPI Structure For P-state
! d2 @" `4 g8 V* ll
1 M. S/ `6 i% a' a! t# E, e S_PTC
4 t+ G6 B/ I% T$ t$ L
1 p7 X2 m, X/ |Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
* x# w$ C) z! W
/ v) _0 x8 U% y( k5 d0 uName (_PTC, Package()
% Q H4 A& M6 ?{
4 h7 r# g$ `+ c' O! z" k6 E3 M$ X8 N8 `
ResourceTemplate(){Throttling_Control_Register},
2 @( Z6 d( W. `" h; ?//Generic Register Descriptor 1 F( p9 q. k/ m$ `# D0 O- T& Q
( w; ?" U6 s* I% @
ResourceTemplate(){Throttling_Status_Register}* w1 d$ b! N$ ]; D" }, M, D4 H
//Generic Register Descriptor , B4 {4 `: T, @$ ^ b
}) // End of _PTC
, ?) y5 B9 {0 n1 o' V. D 3 d6 F% p5 ?; D( C8 v, V$ Z0 t
下述是一个sample code:
( J0 l& E' f* s1 Z2 u& ]6 V 0 X3 o! E( v; T1 a: Z. c
! m% c- F0 `, B, v6 r% o/ }- b- H
//
0 t$ D* {) K2 }* C+ e+ @ m5 L3 D l$ F' @+ _1 L r2 A( o
// T-State Control/Status interface
$ H9 ?3 @# P. h5 D7 E7 a
) A$ C' [: ~3 i; D% p//
* ^8 \* Q( H I2 G& K* w2 y* ^; m7 E5 S& G
Method(_PTC, 0)2 t8 j+ F1 A, C% S. [; p
- P8 S6 ]) f j! l; X0 J{; {& ?2 a, w' B" \
5 L+ {. s/ L/ M: u" X/ h//
+ \6 [% E0 Q2 @0 D" A7 G; O5 p! n& F/ H: D, p: O4 ~9 @
// IF OSPM is capable of direct access to MSR
) H% I' _$ q: j+ Z/ W1 J' K
7 ^. c7 g% J6 E( H' f1 v. x2 h//4 H0 k9 |8 c. [0 A6 o- N
Report MSR interface
0 I z1 L& O7 c9 o9 I+ y% c2 ^- u6 {3 o- Q7 ~
// ELSE
! _8 _6 Q/ ~; y7 t* L! ~1 C
1 L$ L/ l) M! s3 k+ J$ n- L0 Q// }5 x% L" S/ h' a+ d( J" w
Report I/O interface
! i+ O# P8 [/ M) Q' j, r
e& _5 ?3 p( U$ O//* }- w- z' v, |! N5 P
% b7 T [1 \8 q2 r* Y/ b
//+ ~! I/ V+ `+ I4 D
PDCx[2] = OSPM is capable of direct access to On
- W, D0 c8 n' B
; `% T$ V2 C- Z//! m- q3 j( l h f
Demand throttling MSR
; f( O6 a8 n* E4 S% Y& }6 N4 x" n# h1 E
//
3 i* m/ G. C: w5 a* v! T3 |/ t8 E+ S0 ]0 ~- }/ l/ T$ K, X
If(And(PDC0, 0x0004)) {5 J# V3 [! Z8 m/ y
# m9 _: G$ O, D# t ^4 [- ^2 P( nReturn(Package() {# j& g, ?1 L0 u7 l! u) e5 {
/ I* k" E) V$ Y) y' g9 S; G, J
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
i& c5 |6 g# B5 R, H) }
5 b. |) Y6 y' D% RResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
9 E% J% D' Z% i7 G; }: Y$ n% d
! Q7 y: [1 E$ {* K8 P})
, k; o) r, I5 ?# U
3 k4 m# P% N1 G1 ?& f" k}3 L! d: b6 x. g. T7 m* D6 S! @
! t! {8 y3 t1 Q: m- SReturn(Package() {& h ?) s E. }; K, S2 n2 C
+ ^7 L* w) N7 @& ~7 G
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},9 b" F. M2 e7 n/ k
C& L, e' V4 R+ d* f- AResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
- O1 Q, t# o4 D7 e2 d* I1 B$ ~: F" C7 x
})) N" p# T4 Q% |% [
% y2 Q7 Q5 W2 Y# a}4 L1 y8 i8 b. [$ \0 D' ~% ~6 F
5 H3 v1 `4 r1 a, C" J5 o3 d: a- [
8 x8 R9 g3 S. F5 n
) p5 a+ t$ E* g$ N
l. a* J. T4 I% U" v" |
_TSS: p0 `) y& O7 l2 J0 P' G
6 W1 d; Q: q7 _4 d
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:) N$ r9 O: t' I3 v1 Y6 F
Name (_TSS, Package()
6 s; }& |: k3 E& a/ L' o{9 S' R E6 Y4 r9 U2 C# o" G2 U
// Field Name, ]. S' _5 L z" j2 G
Field Type
% L ~5 T" ]# W' g6 b# Q1 W6 A/ X5 z7 n( |/ x( u
, C4 U% a2 D7 |3 ]0 Q
* s, M7 w& T# z, I( h" [
Package ()6 R, D6 \# n J) j" N1 c& {
// Throttle State 0 Definition – T0 / x* O, b% z) G1 }
/ K7 m3 g! L9 V' V# k, \
{. s; m$ c9 ] u+ N" S; g. {
# ?. D( w( P) O
4 r" X' L- v. ]
FreqPercentageOfMaximum,
- b# N, {4 V" P9 r9 |" u: i) y) J// DWordConst 1 @3 z i7 q9 \5 t+ Y2 ^
+ C/ `+ w& H2 C& R, B d$ T
Power,8 F+ Z1 T: M& Q6 H- o3 p1 G
// DWordConst 5 W$ g" O% m0 [1 s' z
$ X8 A/ A( M4 ^5 B- P! eTransitionLatency,
) e" J: O5 r' k2 b+ G3 J// DWordConst
3 L0 L4 V" E; l$ p: W% R# A2 I7 t8 ~- A
Control,- U I7 Y9 m7 [% X. b
// DWordConst ) B+ ]3 O) _# B8 |9 }
0 H; X; Q& R4 Y/ p/ e" B" FStatus
$ Q4 [6 N4 H# d9 s+ _: a- o// DWordConst
2 T2 O' m. V* _* U3 O& L! R% j},( s/ o: e9 Z: d' L( W& q4 a
……" d/ N9 U" ~) @+ }$ W2 E0 {- _
}( h9 H9 M1 J! {4 ~8 {$ T; j) c9 W
; P; Y- g* O8 a+ |' WExample code 如下所示:
2 o6 w4 L) X5 g4 ~9 p- s5 x9 n. n# i* s& V8 V6 }3 D
Method(_TSS, 0)2 F+ b" r- W1 z) E1 Z, v
" i6 f& {# E3 Z. ] B& `( W/ n7 b
{: Q, \ S- a) Z
% Y+ m1 a {4 uPackage(){100, 1000, 0, 0x00, 0},
; _2 l6 p) N5 _3 z, {: G! U p; S$ t& S; |1 G
Package(){ 88,
8 _& I, Y7 q- H9 g. I875, 0, 0x1E, 0},
: [) k4 d* `# C6 x
6 h; `; V; H3 D7 c* v. t' qPackage(){ 75,
3 H* ]1 p, _- f. g% U* v) n! b750, 0, 0x1C, 0},8 i' _; Z) S: x: s" V$ u
/ v# x/ ~% r, l3 W7 |& LPackage(){ 63,% c- z. C3 I) \) R3 g
625, 0, 0x1A, 0},
' R% j" o1 Q1 j0 _+ W/ F9 ]" X) N/ h- p4 V
Package(){ 50,
2 j _+ P3 a4 ~. c500, 0, 0x18, 0},
. `8 k: X1 E* y
: F" T! x O$ P" c4 e/ zPackage(){ 38,% ]3 Y3 }8 T, Z+ m) @% r+ @. l# j
375, 0, 0x16, 0},1 x8 L/ A U. c8 m. i
0 k0 f; e4 u" \8 F, ?" v5 P4 Z, O2 mPackage(){ 25,
9 ]1 U) ?6 L$ r! \, m5 c3 M250, 0, 0x14, 0},
$ X A" }: B- P; k( J1 n' ]4 X: L( x7 c6 [& ?) `8 J% d# i
Package(){ 13,
2 x1 u8 @3 |' B2 Z" W. K i125, 0, 0x12, 0}
- ^* U R$ f6 @% \ X8 n
$ S+ T( o+ f: E* K}) x; ~6 o8 r% n1 ]0 ~
3 G! |2 |8 a) D1 {7 Y
. n! T' `" L9 A* u1 z$ [l0 ]: Z. C+ f% ~8 K( d# g
_TPC) x" T; Y2 ? P2 B4 |
: W8 }7 }, K& ~$ m: {% H% FThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
5 |2 J) V G/ c7 W 3 g |; t7 ^+ H, R' _
l
2 T+ ?* U9 H$ u+ m_TSD
v" K7 A3 K# v- b* Q # f; k4 Z+ X( q) ~
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:! q$ [6 g1 R. f( f1 [' V
% w# t4 X% `/ s; z/ u: ?7 L
Name (_TSD, Package()
2 u! N$ G7 H; x9 j+ U2 o
& p. x7 R* |1 c{ ) x2 E+ ^! D" I: K; b# r1 C
( V4 s# k0 d/ |0 t6 E4 l. _$ w
Package(){5, 0, 0, 0xFD, 2}) N l' n4 s I0 B: Z
// 5 entries, Revision 0, Domain 0, OSPM
% A# E- @: z( N8 a! C" UCoordinate, 2 Procs / \" q% L8 M7 \: Q$ X7 ^
5 ~" p$ C# F- c+ z& Z4 C/ R [
. R1 V6 c4 y( V: [}) // End of _TSD object
$ S& L) R( U0 G7 @& Y& f8 u J( G, h& }7 K' Z
REFF:
0 ~; m; P- l2 d; z1.
9 d( e3 x& r( ?& T7 KACPI Spec 3.07 I" I. T5 J7 k2 E$ J# l
2./ s* _/ ?6 J9 a
Intel Processor vendor-Specific ACPI
3 K- c4 v& v3 C2 B# p! z$ E/ I" R
/ L% l( m7 p0 J y3 U2 i- V6 } . e4 I( S1 n+ H+ t
That’s all!
! J/ s( w. i) k6 [5 Y# p
0 X: e# T. O) }# T- J: cPeter) L: s% w* u" \; m7 s5 ?
* x6 O9 G) u: d% o
2010/10/01 |
|