|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
2 |4 R; q+ ~$ |0 T
0 _$ W# }; j: @6 x9 g" g& Q" 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工作时间的占空比)的方式
4 S6 ~ l7 p# m# k [,影响系统的功耗和温度。) f8 I' z9 [$ _) _/ a E' g2 z
% P& Y7 m. c& A p2. T-state Control
; G$ l4 J- ?8 ^4 X* Z
% w+ |5 H; ]1 v: S2 W1)
$ N% }; T+ Y& \0 Z. e( Q. s/ JMSR Based Control; W$ _, _1 a0 h$ G
5 e- n" L: l" IBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 4 G0 l9 L' g+ d7 r' \4 ~
2 V' a. n4 @% d2); }; N- p$ l# r* v
I/O Based Control- j. U8 B0 N6 v) g
- y1 q% d- M# b! f除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。' _( w. n! W8 f: B7 w I
' T/ i: L6 C2 U3 P& O. i/ f
3)
/ X" B- R5 {1 f1 F/ e- _( rACPI Structure For P-state
6 [! q& k' e! s( T; t/ l6 F1 Cl
& B4 C" k! y% e. @" J8 a_PTC5 G+ {1 ^ Z- Y8 l, t2 H
L+ ?7 X- i4 M- E- _' a) g
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:- s* r% u2 w' c7 G" y, Z& F
$ B* w y5 t8 X; n% ZName (_PTC, Package() 6 I% {. V M1 J. \ p) C
{ * k2 m, O2 }3 \) `/ K
1 `: @$ L, ~% M2 p! j
ResourceTemplate(){Throttling_Control_Register},2 M% _8 \' T1 G ~+ J+ t ^) Z
//Generic Register Descriptor
) x/ ]5 V/ D: |$ t, w
8 e6 u9 p; g, ], b( _" BResourceTemplate(){Throttling_Status_Register}$ J; X8 W6 A3 G! {4 R7 [
//Generic Register Descriptor 6 v4 ?+ r+ ?5 I, ^
}) // End of _PTC
: U) |9 V, Y3 P9 u
6 X1 D. ?6 d' E, w% n下述是一个sample code:: m g" z* Q- U9 {+ ?
h& O( S' B7 J0 n+ G' X3 |3 F& ~/ z6 f4 K; `6 f0 P
//( k5 n- e. {9 ?( H
; A. a3 P9 A: l Q) E/ g// T-State Control/Status interface; x9 T$ C& L+ l: X# J$ H. k( h2 E5 N
0 G- Q# n# _! I7 i+ j3 n4 R% B) n( V//
1 J$ p& {* R: d& g* Y& s; P
5 U! u0 V% K& t" E2 G" u5 OMethod(_PTC, 0)' B& ]7 E/ P9 B0 w8 F9 h s
' s+ T) L1 K$ k. q' r{
$ b% H" t# @2 g2 B) z3 x- f7 s
! v( d# g6 _5 {) q' C4 a/ G//5 [8 K; V; `$ C6 k
d' |" y7 W1 o9 C% C" v0 C! I
// IF OSPM is capable of direct access to MSR& A2 b" u- U- @+ b: L
7 I; z8 N: C5 c7 [# Z- M
//* w+ t8 j' a0 f& W; B1 C8 H7 w3 J
Report MSR interface0 ^) F7 o, q4 C, M* r
# s; j$ d7 |+ S3 k6 [; U# Q// ELSE! p2 a9 m0 E& M6 \7 D
& ?# \! ^2 n9 D1 _1 ?- g//
6 u5 t' x7 t( v' `Report I/O interface
+ E4 M* u0 f6 q5 n* v. h8 G5 A% h5 ^
//
' s- c6 F8 v$ T1 }# r
" a8 T& T8 U# b) }4 Y1 y7 T9 ^//
: u, M! V& u" MPDCx[2] = OSPM is capable of direct access to On- q0 f1 u/ \1 t( M' M2 `
1 D6 Y+ }% j8 g x$ j8 N& n7 K
//
, q5 m! H( v8 |4 s" F7 d6 X. NDemand throttling MSR/ E+ m/ O; y% m% ~! V& Z
6 a) i7 S, A4 S/ R8 u( b/ B
//
2 S$ b. M6 O" w( E: C2 j5 h7 C
. S0 l: c* q1 T/ H. C( CIf(And(PDC0, 0x0004)) {0 G% e% c! a; t
- n8 l3 {. j. Q2 B% RReturn(Package() {9 F+ s" J% C3 D1 _7 K# H4 z8 j6 R
( k V* J7 p: A/ e2 Q5 c9 B
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},3 }. k G: l9 Q: M& n+ s
; b" j# R6 S: Y" _% wResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
: I$ O8 `5 [) C' W% {! m/ J
/ j1 \8 F8 k( r, N" n y})
% W" ~" u1 i5 _, c0 u- F% H
! X! ], c* @! f9 \}5 C# B' n7 U8 v$ U0 ?4 o
+ J( n2 l, ]9 F: p* Y+ JReturn(Package() {
' p8 [/ y! @5 { o2 M9 l
" U* b$ b; T' f4 _; Z& AResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},0 j4 e( c. ^; @5 @% b, i
4 }0 W a3 ?* e7 LResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
& C4 J @2 } D/ B6 V, H5 e6 G% @* M3 E! R0 E
})& Z' w/ ^2 \' p. M9 \$ d
6 r+ W$ b, K% v! p9 H8 W6 i}
J& n; B! y& J) L' a* V: |4 e" L- ^$ W
8 q" G) V4 P5 j) Y8 d: i, h' l9 ^- p4 W8 K1 s
l* Y( X5 j$ a4 W2 ~# [, P3 M7 u) l9 z
_TSS: j# E M( d! m% a; T9 t8 @
6 @" M( ?5 l. F% Q) D% k2 B p. T
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
: J' f @; G: z0 Y0 |- K$ |: c: _Name (_TSS, Package()
3 `8 x( u# K% i, p( b{
, ?% \1 T" v% x* }0 a// Field Name
5 j6 b, }' v' b+ R; XField Type
4 D1 V; U. y- V6 u+ T+ \; o+ Y! O3 d. |* W! W& ~
8 b. e! L" h4 s9 o4 p
$ r* H; k: h: K P/ r. o4 R# UPackage ()4 @4 y1 k3 t& z% M7 T$ s
// Throttle State 0 Definition – T0
8 `: j$ i0 x2 _. a2 F( r2 t& w
3 C6 z: Y' S" X$ S{3 ]- J' t. h5 q* t6 n( `9 h; Z" m; `
% @$ _* \' h8 k( s, p$ z! ~
/ W" M7 o% S, M6 `0 dFreqPercentageOfMaximum,) X5 ?& F7 K. b: @' n' R. ^
// DWordConst
# b2 B; y7 n( `4 W, @0 G' D
9 i% X, [+ r5 W$ pPower,
* H- O/ V& h+ [+ Y' v1 u: e* d// DWordConst % x, z7 \2 F m# d+ g5 q, i
& U) H/ N3 ?6 A. }TransitionLatency,/ h, W a2 _4 g& `! L* C! }
// DWordConst
0 b5 a* E6 g5 z6 ?; N" v# ?* `
# _2 N; T. F5 ~5 a* ?Control,
4 g7 f( r# S( s' D+ M// DWordConst
8 z) q) H- R( W: [/ }8 P) I& H; S
; v4 [; g) U4 b* PStatus
- g3 }# N: [, h6 q: t// DWordConst , n# B7 N7 |# \" G$ G, u
},
8 G6 A; K8 y% s% T……
, f5 f T6 _( F/ p+ T0 g* n}; N! \6 z% U% I' ]% m c" M9 S5 C7 E
- F8 g ~* Z2 ^" x3 |3 @+ f- A
Example code 如下所示:
: @. N3 Z% I$ W. u9 W/ @- a6 E: x, S) M; g
Method(_TSS, 0)4 y, r; H- z2 j8 J
8 R6 e% d# H3 ]* Z" p
{
% ~" Z- C8 n+ s4 ^ p1 ^
( [; }/ K1 e/ c; e5 i/ MPackage(){100, 1000, 0, 0x00, 0},9 i! V' F9 M; X) ^
3 ?8 v& J5 @% R, Y% n
Package(){ 88,
9 D( {* E, \# n( T7 |875, 0, 0x1E, 0},2 @' T7 L+ B9 N8 R( J+ I0 Q( F
. U7 w: ^( e& C
Package(){ 75,1 ~' C6 k7 Q" ?* K* f
750, 0, 0x1C, 0},( m! o7 c Y2 u3 r4 n7 Q
2 L( r7 V$ D/ S
Package(){ 63,/ ~; w; m3 P5 E; F5 P
625, 0, 0x1A, 0},
. J8 R* s% e' D' _- D
6 ~$ m& b5 R. a0 JPackage(){ 50,
o, d7 L G, r; X* v% q! |; D& e500, 0, 0x18, 0},/ ~0 ^2 e m' x4 d9 w
. _8 \9 a( |+ Q8 s6 i2 L9 ~5 \
Package(){ 38,( T( }0 `- e- @: I( q4 ?
375, 0, 0x16, 0},
: R8 G+ n$ ?! ^: A
2 `2 Z( c; g+ \" c* k- N9 \Package(){ 25,
+ W( U3 X! G: M1 Q Y; k! e250, 0, 0x14, 0},$ O' F& v1 S+ N/ J: F( Q( S
6 `& Q! I2 B# x$ U: _# xPackage(){ 13,' F/ x5 I5 Y: \% k k
125, 0, 0x12, 0}0 _7 ~1 i4 J% m) x
% z1 s2 _2 O6 A" a& e, t* a}$ H! a* w0 O6 c& K% W
6 _% D+ j9 b( d6 B/ ^
8 [/ J) L% X7 ? Ul$ G% z$ ?* w9 g- d! A( L
_TPC
* j8 f& w# C6 y8 R( d2 V5 M
* l/ F6 C! |4 H1 u4 @. ^/ l; d3 oThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。) m! J2 B0 [, c: t a
) V4 u* P5 m" ^% l
l/ e7 T7 L& z' T% |5 v* m$ U
_TSD0 k& h, p) J" \8 M$ y
5 H! |" S8 j* c* j; _& J# v
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
, T t2 |: j) T& s6 x( \ 4 J& M; t" v) @7 P3 x6 f; s( A
Name (_TSD, Package()
% L' Y' R5 d3 X3 T: {( ?
2 U3 h; p! U1 y2 T{
) G: \ ^/ W, h' [' I: ?0 H& {7 e4 U/ c
Package(){5, 0, 0, 0xFD, 2} H0 w, w. I8 I( S9 n5 A: d$ N
// 5 entries, Revision 0, Domain 0, OSPM E' F( ]: s. B/ q
Coordinate, 2 Procs , K$ k, p' `% l; c' i' t
% V8 w X$ @% r% u+ `! M Z
$ a6 }' q" v- Z}) // End of _TSD object
3 L4 L; F3 g$ a ' [7 `9 {4 I# G4 ^8 v- ?: P
REFF:
% j& W& v% C; N T- _, ?1.5 u* x/ g5 D2 o2 T- a' F* E9 o4 \
ACPI Spec 3.0
: t8 I( w/ E" C. u% Y- |2.' M, |* d& ?# f
Intel Processor vendor-Specific ACPI
4 d( `$ I/ p3 N$ J/ q; | + _% ]; G: c: e2 P5 I$ r( L- S/ `
+ F# X+ r# m% }* p/ p! v% kThat’s all!( q- a9 f" c3 N. K }
4 e$ l0 x- B% m+ S! d2 f0 YPeter
" L' I- w% |9 Y9 R7 X" d
+ h { `) g0 T& S2010/10/01 |
|