|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview* i( w( u$ x1 H: p9 \3 f( Q
: g$ O, _! w& F( f) T* wCPU在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工作时间的占空比)的方式
g7 V4 v( U' [7 ]8 o,影响系统的功耗和温度。
) b" C( k: v+ z+ x; N4 x
( C( N* Y! R4 Q0 X: H |& x2. T-state Control" T* t( x# T( E" N
; K. q* J- i$ o4 P1 }1)+ c) Z+ \: A S5 ]
MSR Based Control$ V* N% q0 @% F8 K2 C) W
8 V7 I- j7 E$ f" X9 z: oBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 J; r$ P) e8 e6 b4 F- y
+ T8 h( B; c% x; j2)
2 y; B9 Q f6 _I/O Based Control1 U' s8 S7 M* l: r/ Q( j
- {$ f3 E) F/ s
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。% N; X( l3 H: D$ v* b
1 Y6 ~4 ]4 l y+ D: e% w/ w
3)
3 U2 B+ e% P$ y* iACPI Structure For P-state
7 z' H% @& w* S+ n5 Vl
6 G9 h4 \4 V$ K; ^: l1 ~" \_PTC
& g$ ~3 L# F& `
; d3 W) C3 Z$ @- C* s* TProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:8 C1 M0 Q# u" Y) p( U$ T E
) k/ \( {6 d# e9 ^& O, ]8 U
Name (_PTC, Package() " G" W7 {: u9 F. y: E
{
" W# m$ t+ L( m2 c
, N4 p/ X& t" ?& g3 B. lResourceTemplate(){Throttling_Control_Register},
0 c4 i: u2 ~# S# f( w3 a//Generic Register Descriptor
0 l+ u7 S. s* E0 p% i6 ^- ]8 w2 C8 g1 F& \, o, d- H
ResourceTemplate(){Throttling_Status_Register}: @% c8 @( Q! P
//Generic Register Descriptor . K* d& @: P) v( q3 e
}) // End of _PTC' K& X' e+ F% v7 v. |. P6 Q
5 r2 r( a. D+ }% a
下述是一个sample code:7 e* F1 I5 ?# E2 w0 ]
! Q @$ h' L( @+ p% M9 [% A3 k
b2 x: s9 z& T9 S& h1 h0 H//
4 @6 O) c8 O$ w* {& I3 W. r; K! m7 ? _% ^' Q3 i
// T-State Control/Status interface
* B. k& d4 ?( [& [' D# c7 z$ G
. |6 K& }% G2 A' v& A' g% ^- h' ?//
9 s3 z0 F$ j# K! i
" h1 w5 P+ s/ B& nMethod(_PTC, 0)
. y( w. T$ u8 F6 R. }
! A3 i( ~; J( J$ n! l" N% z{) r' x% A8 ?3 ?3 l5 O
; e4 V- q' r2 _! {
//
4 j' W, f/ |) s6 b( V' D1 y8 @# `' v6 t7 u
// IF OSPM is capable of direct access to MSR, p! I. e! N0 y. y" D: i
, j- E `* Y6 R! I6 u5 V' V//! x8 J6 x5 F+ L
Report MSR interface8 g1 _# T: ]9 m2 C6 z
3 z1 X( B f# ]- c2 R$ Z2 s// ELSE" O" L, `3 c8 z& `: _ d
1 z# F, E3 j2 A U//
+ S$ [/ h1 Y! e4 A0 M& S( CReport I/O interface6 o# T& U1 r; ^' @! A% \
8 s. z/ x, d% ]$ k( ?- [
//
( F' f6 a5 e& T2 ]7 \( g) _/ y
2 ]2 q& c5 E& a& O//
; y% b- M& ^; _( ^PDCx[2] = OSPM is capable of direct access to On* C4 v, E1 i6 l4 Z
) X# z* v) ~/ _, Q- v& r
//1 X" G, w! Z4 D2 z5 M. h
Demand throttling MSR
7 o. t; N+ M- c6 O/ @! x! k( x3 V# r# F2 D! T, z7 n% u2 j& a
//
1 C2 @+ a$ N" v" w* v! ~( r8 R
, Y. ]: H1 u$ |3 aIf(And(PDC0, 0x0004)) {
: o7 a4 P' R0 f, J
* i8 g9 Q2 T" s1 W* i& R7 e4 u# r/ cReturn(Package() {+ A- v' Y [7 W3 H# l9 C
3 k! V* I* f; B* s: {
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},, `. n: ]3 p, z& _$ d
2 D5 n* B+ ^0 \0 S1 iResourceTemplate(){Register(FFixedHW, 0, 0, 0)}( p- D! F, w0 R+ i8 H4 a# H; F, t
+ I; }8 M& \% G0 m- r1 M& q})
o: _! q4 O! C" k( h$ }2 ?! `, ^" b7 Y0 I) O: o3 v
}
7 Y0 c$ ?5 w: u" K8 V. k% M/ a) V& p7 Q# X4 }; T
Return(Package() {
( E# F/ v& e% ]/ }9 P' _; d
3 N p7 S9 A7 O# m% JResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},% A9 t' w& o9 F" F
4 @4 g' v- R/ Z$ tResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
) U, r9 @" B) ?) y% D" ?* n+ E! D
})
9 b& L; f+ W$ R; m% g( G$ u
' O9 p) x% Y% \}# [2 Y2 g# z" O
7 H" f- z" g2 s9 p. Y' c" y* ^& U
( q% N3 n1 d+ s# q! e5 X& S7 y+ P/ b% J: q4 o9 \& O# s( @7 B& _' ?
l- o' P" S# E' f Z
_TSS* n4 k$ T5 ^! ~1 q* w6 b
; k5 m; ?/ R9 x
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
( A4 V8 l" _5 w* W" m9 PName (_TSS, Package()
$ |/ o" c4 F- I6 S' n2 C{
) A; D- w9 B, M* S" m. D: A. m// Field Name0 w8 m& ^* K0 |( G3 Y
Field Type
$ c3 e" e5 W( c& u* `
( O# ?0 G- K6 O' w" _( y0 P, g3 s# |8 U# F/ L) {
9 X, E% {1 w5 @1 `. h7 O0 T* XPackage ()/ J$ P5 A; T. t) i
// Throttle State 0 Definition – T0
! l3 O0 Y9 @ Y7 Q/ B7 R3 M: K
1 F9 [0 W# w: X9 f{/ a! G8 e6 `) o- s: B
) K( ]7 m7 W: P5 \3 r3 R, W" L9 N2 C- K% B r! X& D
FreqPercentageOfMaximum,
2 k. U. w+ |4 `) x// DWordConst
4 \3 y8 u1 z2 q3 K, |; b; Z6 w9 I& d8 ?0 {# @7 C" w- s0 u" v, a" u
Power,
2 P. D- ~* w0 D( e) l4 n// DWordConst
: Y% Y& ~' D8 t2 Z0 d! `& ?9 o8 w
1 [" F& _9 ?: p( S* v1 }TransitionLatency,/ e! J- ~$ F% O' V* C% _
// DWordConst " T' v! d3 q e, x9 b- p. y2 s
3 H% M' ~" M5 |( K& y3 u3 Q' }Control,
0 j* c& c( R8 Q U. ^, Z// DWordConst * A- i/ ?9 p! F* l
) X( `$ x9 Y% KStatus) G% {6 i* Y; N- G4 `: A( V
// DWordConst
! Q( b; \* `4 l4 d9 V6 Z0 ?},
' k2 ]/ A# s5 _, S……
1 C6 m& j/ H, I. t/ V}
* j) z: U+ M0 E% p- S' Q% i# y. W: u
Example code 如下所示:
" Q6 m3 q( n1 W. @$ B* S& }
6 q# p H4 {+ C3 A1 n6 Y5 tMethod(_TSS, 0)* y" G- G# N0 j2 K$ ?
+ z/ X2 ]. t! r/ h
{
& P" o) x, T( D9 `5 p! D& c0 ]" M7 j+ Y
Package(){100, 1000, 0, 0x00, 0},) V% Q$ [3 r4 \! G6 D0 h
, R1 S% Q$ [! U! u0 Y. q! D5 EPackage(){ 88,1 }" Q8 ?5 ?# W7 O0 B4 t2 Z
875, 0, 0x1E, 0},: z5 E* {: }7 d) f
; r9 _2 O* X4 k1 S9 B4 i5 f- P
Package(){ 75,
$ ^# \# e) a+ ^! s6 X) P! u3 w750, 0, 0x1C, 0},9 h- a& ~7 k5 K! c4 T/ Y
. c2 p" ]; M% E. @Package(){ 63,9 h2 V. j/ q, z% ~- `
625, 0, 0x1A, 0},: I9 T7 M" g( |! n! D
( ~7 g/ J K+ QPackage(){ 50,
1 t; _# Q9 r( z% Z# f1 Q; H500, 0, 0x18, 0},- E. S+ C; l1 R
8 X* T) O6 c) I* F4 c
Package(){ 38,
8 `/ ?% p* T" }4 q" I; G375, 0, 0x16, 0},; W) r2 c" n5 O
& I+ F3 r K; C2 z" BPackage(){ 25,
! H. U$ P. r0 w+ P7 o5 Z250, 0, 0x14, 0},- l4 B# H" z3 B+ Q0 U# g# z
5 o4 H" @% j/ U" e3 U. i& m Q
Package(){ 13,
0 j; L. O1 `* W" R4 \+ ?" U6 z125, 0, 0x12, 0}: I* r# y' u& j* x! p
/ A# b) Z" w; }, ?% _! r9 o}
* M" `6 v3 b8 `9 d( J3 n) [4 ?) G
, j1 U( z# j7 Q2 k9 o5 E) p; o
( p0 L W3 v2 b( B9 b+ Cl' _( \- z$ Y! e( w/ `0 H0 E
_TPC$ O4 Q w* J0 G, d7 E
8 v/ w7 O) b! V4 @* e' x( _( c. O
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。: p' K4 g- C" W9 ]& _
. w4 s1 Z! o: x8 W5 yl
" H0 {( T2 B$ k4 O8 }4 o_TSD4 O! B/ Z5 a% N7 b6 t7 x7 [
% a3 m7 B/ q' H( D$ m- r# j
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:& W I/ k6 H: i
. E6 O; b5 n$ y3 H, D( I! k1 G
Name (_TSD, Package()
* x. z% p& _1 o' z3 O: `7 Y! d8 @7 {6 s2 P
{ 9 n% X0 o' P) ~- \! q6 I. ?: a
* ], Q, J: H9 W; z0 c% U7 m, j6 s4 xPackage(){5, 0, 0, 0xFD, 2}
0 I# |: w+ N' ], o- ], C// 5 entries, Revision 0, Domain 0, OSPM 9 P9 [; s. @ c! \: V. c8 `
Coordinate, 2 Procs , Y) F5 k5 ]" g& s Z u# G4 K( f
" o a. D6 B+ M! D% {& Y4 r* `; C$ G& c% u! T5 ^7 H2 U
}) // End of _TSD object+ m# \) Q J' N- M$ q1 B
. X! k% A, u, Q9 ~
REFF: x: R, l7 c; ]4 @2 ^9 x" E
1.
9 A+ v1 J( Z- y/ [8 d, X0 Y4 RACPI Spec 3.0# @: f# ]+ s2 ~7 s5 O
2.
/ [- }# H2 M l4 H1 ^Intel Processor vendor-Specific ACPI
& a" k* c' X, ~( o' n6 z- `( E
- ~! D% e- f2 A0 P4 e# @9 Q0 f + E2 h8 |# Y8 t
That’s all!6 K Z2 v+ @9 e# q$ z! ]! M
+ K+ m+ r! `$ K0 @* ^2 |! S( K7 tPeter
4 z. ~) z3 V5 g/ ~0 o
5 z! ]2 I# T' a; L8 e2010/10/01 |
|