|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview2 ?' t2 u$ y% {! M/ W) j
3 z" {( Q: n" c2 k- C* b8 S OCPU在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工作时间的占空比)的方式
; i% _7 S+ p$ q' A) d( y,影响系统的功耗和温度。
5 \5 I$ m3 n* G6 I! F 3 q5 w" c* R% K7 L! ~% V
2. T-state Control+ L$ p* H6 A& U, I$ Q& D
+ n/ T* `- J8 Y( r
1)
, ?6 ^- ^3 i( r. x/ p' `' G$ W" M5 YMSR Based Control
6 c6 b2 g1 e' Y- n& a5 m & e+ _9 h" G& f6 q& h K
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 $ _5 ?+ M+ m8 c) L6 ^7 l0 u* T$ O
) A0 e! K9 U r2)2 l! o. `* A7 R
I/O Based Control4 o9 ~- p* o% B1 |
2 ]3 B" R: L( ^2 w: ]
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。5 d+ ?# U" g! y+ g2 L5 X- f
: o3 s- ` H4 j5 E, E3)+ }/ a2 n9 ]5 v4 n2 Z2 @: C3 p' e
ACPI Structure For P-state1 w9 {- ~9 S8 @4 |0 f
l
0 _9 C6 N/ F8 s: L2 __PTC
# A' W0 m2 N7 {9 ~3 x' B % k r6 p; `3 _5 ?4 X# ~
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
0 e& l6 o. w& \% r& g3 S
* `6 e, }9 o* y6 s7 y8 LName (_PTC, Package() 5 o2 L/ }$ K# d' }5 d3 t
{ ! F7 |9 w5 o1 P# N
6 H# r0 m0 p9 f# M L. _2 n: H" n) v
ResourceTemplate(){Throttling_Control_Register},
9 h! w# G+ R& K- V& c* U1 W//Generic Register Descriptor # N4 a- s! x7 l8 E: D
6 E* K7 ]( K* g2 _# n2 b0 d
ResourceTemplate(){Throttling_Status_Register}5 {; a& W8 H+ G/ T. R
//Generic Register Descriptor
, u, ]: Q' P+ k7 l" S2 M}) // End of _PTC
: _2 }; V9 ]. J2 A+ j ) K" E% A3 x; B9 d" A- y- z# D1 u0 W
下述是一个sample code:9 I/ w2 v; t5 T
( `2 u' f6 [$ z$ i* S7 d1 P
6 W }3 y" [. _/ i& G' ]: a# M
//
3 ~% E- W' Q, T _' y! T6 C
: |6 z: q2 ]/ [7 [// T-State Control/Status interface* i) A1 e( Q+ n8 v$ {) z. m5 g
4 T& d, d' ]9 k8 s: e
//2 y/ J5 G+ R+ M( [; ~0 f8 _
1 o8 y3 c1 P6 T: LMethod(_PTC, 0): g; V# x3 u- m* ~/ q
8 e. C- s G( E9 J$ c{7 d* M3 M- L! S0 ?, k* L
8 |; @# K! { t
//
5 J1 |/ K* V9 H4 y7 w
; D$ L0 k3 b. n3 ]4 T8 C1 `// IF OSPM is capable of direct access to MSR
, x# u, S9 b: q8 |( [' D
' ~# {+ C- d" F- b//0 O k% X* d7 O9 o; C* i
Report MSR interface s; }) Q1 ]/ ?4 ~5 u& ?
B- u7 \% O6 }! H" v; S& Y
// ELSE8 D1 h( ?8 d: H$ y) [) X( e. C
5 l, j- v- p% O+ x" q$ |! Q# }
//1 d1 t/ M) z. A& U/ Y$ b- |( G" Q
Report I/O interface
! f; N& p( v3 Y7 K# d
4 ?$ F& r# Q8 |2 z7 O3 u//
: _7 O- N( _7 R- t& c
: K$ H( H$ ^& U7 b1 ]$ f. u, \//+ W$ Q6 S' F6 d" ?% y9 Y
PDCx[2] = OSPM is capable of direct access to On/ q. J. P* I U: I, m- u& _& W: k
& B- x+ e- R4 Y6 x0 V& I- F//
: u, W3 V& z. i xDemand throttling MSR
, L6 u I0 W" `& {3 P/ j
. k- C0 A* B k+ t" \' B8 d. ~//# K$ j, }& B% E2 e2 M' i3 @
- g! f; p' Z4 E9 _2 \/ j
If(And(PDC0, 0x0004)) {
# g2 m0 C4 Y% f M/ s, E1 B5 k/ L7 d5 T1 ]5 C3 N+ F& E+ @
Return(Package() {
a+ f+ e0 N% A, b# F7 `$ Z* \% ?8 F& W0 L9 {
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
3 Q0 {: L& m7 I; x9 x
" l5 i6 T0 W0 qResourceTemplate(){Register(FFixedHW, 0, 0, 0)}/ a0 R0 h$ t, t3 H
- V/ W; u+ R8 y})/ r% _! z) @" ]) P6 S& e4 E
4 y4 x% d, R$ X4 W}' g( Q7 R/ Z( L( j! t3 u d
' h' G' D* P) b9 Q) t4 _+ f
Return(Package() {
8 C- |( v3 b8 ]$ O! C! A
3 u/ g' V3 g; \ X) y3 v9 HResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},& \$ E& t0 M4 R; v! l& s& O7 y8 B
, z7 s" Z: z- s% N3 x) wResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}1 ]3 u) x1 g1 ]7 {/ }5 }, h; V! ?: W
, `2 _9 q) @; z9 \2 A})! G5 N% ?! X+ V, H5 ?3 V+ X
' ?$ W. T3 Z- O% ?/ E}
0 }; v4 a+ X0 O" I4 i0 s/ P* @2 c* l2 j6 ]/ t; Z) U
+ h8 o& K# }' u7 Y
0 @/ A( K$ c9 ]1 zl
E3 w/ t0 r4 N' t7 H_TSS) E$ ]0 d. l) y" S
. u7 d# x( T/ ^/ y6 N: W
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
* ]2 [) G. M! C& B: UName (_TSS, Package() $ P* o6 v! ]7 A
{
/ u! Q9 r* u1 x9 t# _6 q+ B1 P// Field Name3 Y4 i, a3 }, O2 z1 ~
Field Type
3 ?0 X. W9 q p; B1 B2 `* r9 D0 V4 o6 W/ K: k
% ~! m$ u1 V v) L: k# R7 o0 A8 t
L5 V( ~1 L E' m' t$ @Package (), v( ~( e6 P: T* ]8 t% I) Y
// Throttle State 0 Definition – T0
" l2 B) o8 b% a& j: g b
7 ` [6 y1 {9 N: x7 y0 m{# w. O& b, q1 D0 ^& m
! Y7 f z4 }( |; h" V9 r
7 A9 ?! c8 a1 u! T7 e* F, {FreqPercentageOfMaximum,% y: A `: B2 L# |4 n# |
// DWordConst
' _. S/ ^; B- D, m( C5 R# ~
$ H6 v5 O M/ @- Y; LPower,/ l+ q" @4 c. ~# R3 M9 i
// DWordConst
) n7 e/ W1 {5 ~; c& P% Z8 B
% p+ I I: E3 ]& D% MTransitionLatency,
I7 w c; l/ V// DWordConst 3 n+ e/ \/ }$ |4 T' c
, S) E3 h3 w6 N! b, Q7 |1 K% W# XControl,/ M4 k. \$ v$ [3 ~* {; I
// DWordConst ( P) Z, q: O- F
$ n' i- l9 G, ^) oStatus5 |+ ]! {3 w5 D7 w/ Y) _+ A
// DWordConst # O8 x% _( d9 U+ r+ F0 @; d- u' R
},$ F7 t$ m2 j2 R7 e$ m2 w' K' O
……
8 }9 Q( P9 c8 I7 p3 a$ e7 m}
5 }6 z3 W( M3 }1 c5 y! Y
- K! |4 V6 b- |1 zExample code 如下所示:5 p6 E+ S4 V( t6 V1 o1 W1 G
0 d% X1 h$ o D SMethod(_TSS, 0)8 s) t3 ^4 v9 m+ W$ z/ ~! S
. i. D3 C+ ?/ g4 j# [4 K8 n
{2 |* b; W; E9 J2 ]& q
1 ` S3 \$ C8 o2 ]' W) F: zPackage(){100, 1000, 0, 0x00, 0},' S- [* n: G2 M4 ]& Q+ a, @1 z
" l2 ?) ^: ~0 @# g6 N7 j, R
Package(){ 88,
' [5 p) L0 ` w$ H1 ^! o7 r% ^875, 0, 0x1E, 0},
/ W+ Q( j. W% u0 U% B5 s7 t
' U) c- l, I$ \3 yPackage(){ 75,
! R& S% ~0 @+ d7 B* j750, 0, 0x1C, 0},
1 c% b0 W5 n, z
7 l3 i4 f" y, RPackage(){ 63,5 \6 v6 `% B- e6 L$ |8 F5 C+ c# P. k
625, 0, 0x1A, 0},5 V3 E6 H. ~& t, [. l7 w
- O) J% S, N. `# O
Package(){ 50,( G7 I" ]& i+ x1 {' D S
500, 0, 0x18, 0},
/ T! \/ x q7 ?& t2 F9 ~# x( c% f8 K$ h+ l
Package(){ 38,
J4 I c) ]5 [$ q$ V375, 0, 0x16, 0},
- |! H: s2 b& |, m3 ^" G9 D; ]- Z" s$ \, X' j* V* |$ Y
Package(){ 25,6 j6 z5 l/ N6 f0 W
250, 0, 0x14, 0},, ~6 ^1 u: x9 \* q( H
- P) K# l7 o: x f1 P" |Package(){ 13,
) B1 j& ?; N6 P+ ?4 M6 v' ~125, 0, 0x12, 0}* d8 v& i" {* h) X; N
# [' p; c+ g7 m, u1 O}
) b3 k# R6 I. Z! t3 J/ I$ c5 _5 l# S1 N( K
0 U9 D# I2 J3 y; Vl
! S: D& I% K! M" c) F( M0 ^# _) h_TPC
' E. S7 g2 f3 i- U3 t* H( l7 k4 R8 y2 X
1 ^% l4 ]$ P8 LThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
, g* q! V' I* a0 U3 X. H0 {
/ C0 L% M8 n( b% d7 E$ ?6 |& Q, wl0 D( A( O) F9 r! l1 C
_TSD- B' V6 h3 e/ v" k! y
1 x& v/ x2 p( m* t5 a. B8 l; b
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
: w- K1 P: Y7 ] 7 V; q N) D$ T# k0 p1 z3 \
Name (_TSD, Package() 5 G/ A1 t# E* R: H) L0 l: Z2 }) {4 c4 K
3 d6 q) Y3 ? v* ]6 j{
9 t6 V1 i0 j: ^2 y) b& |. Q! y; U' J5 e) E2 G4 T% c
Package(){5, 0, 0, 0xFD, 2}" J# R3 i8 F: X7 g
// 5 entries, Revision 0, Domain 0, OSPM . ?4 X% I6 |1 P( b4 K# M! T
Coordinate, 2 Procs
k; ]5 \; F; N+ Q( o8 k4 S: _% J4 H
' j3 T5 k+ k0 L" y8 H2 j# F}) // End of _TSD object
2 H' p# g9 g0 D) R0 I
/ x9 l6 O2 U; |9 S* B/ rREFF:
/ G# }4 H) {" G1.
" N2 O3 V6 v1 @' U4 l5 j1 ]+ u2 UACPI Spec 3.07 x/ K6 g S0 }# Q$ ~5 K, {; w d7 U s
2.) H I& H' a$ a6 y
Intel Processor vendor-Specific ACPI
8 [/ |3 Z6 |: w$ H5 K! O% A " b( n4 @+ [( i8 R% L
* |6 W! A# P3 C! s, z& r
That’s all!8 E* x8 Z' U3 R: e
7 ?9 t2 k5 C$ W# P, \& u
Peter
0 @' I9 T+ M- I: ^9 U5 {" D
1 f' l$ f5 p; O9 w2010/10/01 |
|