|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview5 j- P) K& o! l: t0 U! \
- u; `# E. M$ O# d1 X$ ^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工作时间的占空比)的方式
$ V9 w$ n4 ~- F, z$ W,影响系统的功耗和温度。
5 k7 i) v5 f2 k
, w" L* M' w) R0 v5 F2. T-state Control
' O$ z. t) Q- F4 K1 w3 i& _
5 i; ]+ y$ q( @9 K; J$ v* C1)% ~# a: [0 ?" [/ V7 [3 k
MSR Based Control
. S+ S$ B" y2 C C! v; Z * T4 N. w) N# o/ V
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
8 j7 o5 X. S0 q9 S3 u, M' N R9 m1 g2 l" Q4 c
2)
" V P! ^1 H0 o; N4 c w0 pI/O Based Control
8 ~2 L0 O1 U) w7 u4 q3 W % g0 x- K$ v/ b, j4 c8 ]
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
/ {* i1 W; V4 r9 {; U8 Z 2 b% S# S: B! j/ Y+ s) v' P
3). j3 L9 z: {6 R+ R4 l7 i# W
ACPI Structure For P-state
8 K7 F+ ?' m/ E+ y# Nl
: |3 f* B8 z" w$ l5 O. M_PTC
. j: `# P5 o" H; @+ T: P4 m U8 u- y! ]3 h7 c# j+ V
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:9 p: c+ b! F+ H
$ v/ _! H* ~- ]4 L$ mName (_PTC, Package()
1 J2 R7 Q% L% D5 `9 A: N9 b{
& M* ]( u8 N: h. E0 o7 u0 f& v" H% I3 q; p" H# J" R
ResourceTemplate(){Throttling_Control_Register},
1 z6 ?5 |3 u( q4 R4 Y+ F//Generic Register Descriptor
1 q# q' s9 ^; I: ~$ H1 A& h
" A4 x4 c: h; p/ G) @5 AResourceTemplate(){Throttling_Status_Register}8 q' U2 B7 S& A$ ?
//Generic Register Descriptor
( E, ^3 u5 z+ x+ L& @}) // End of _PTC
% D. K3 j: g f- `1 E( c) b
9 u! u+ k! }4 _0 \下述是一个sample code:
, ^4 R j3 \6 ~" R
. c4 X, E G2 e6 d6 O5 d. X T3 S2 L! H0 Q' h
//
* P0 M6 D* V; N7 `( A K% x' w) z% y" ~# z6 j. v# p
// T-State Control/Status interface
$ h; a$ m; S: c8 N5 I4 ?. @: d! e+ s
//# t- r% ]2 Q4 z. x
5 e: e# @, E" c: w$ `$ XMethod(_PTC, 0)1 y; J$ k; C Y4 k! Q
2 M4 Z' e$ Y8 r) g/ Z{
$ ^& t9 }) I) X$ P2 n% ?
3 c3 b4 S. y5 F% F/// G3 L% P+ ]+ Q* z& j% }/ d) {9 E
5 k) a n8 I# l( J
// IF OSPM is capable of direct access to MSR$ H+ l4 W- i4 z$ E
: f$ p" j$ z; { U+ q5 _$ |+ f
//
+ @# K* Q: @3 ^: @Report MSR interface
, T$ c: q+ {+ s& {, ]7 n& G' I, E- r& k; v
// ELSE
& v2 _' w( j) A( [% `: W* { L, A) M1 }0 Y% a3 q* f0 g5 G6 {0 {( y
//8 b5 ?! U1 |) {, s0 g. A" S3 W
Report I/O interface
5 F% \6 V6 o2 C( z
; |3 Y$ Z0 C1 E \//$ @% y% K$ f' W! d
; z( w. m# h& h; c//( z; D( _ h2 ` u. \( Q. t
PDCx[2] = OSPM is capable of direct access to On
% n- c# o V$ ~ D* R& ~3 @# b$ }( c
//
( a" o7 u' v! L! b' V1 K9 ?3 ^" d% GDemand throttling MSR
; Y" \7 w. P+ x6 o, n J$ {/ x4 f+ D# g6 v8 L
//
T0 {& T% D" z3 y: E3 s5 v2 E4 M7 E* W
If(And(PDC0, 0x0004)) {0 D2 G( l3 o: A8 }) [
* d1 a% d' d/ ]& j
Return(Package() {
* N" A6 C5 j- b% O1 J1 c# \8 e$ w5 v1 e o* O1 j" `8 {
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},2 R& I5 Y1 k1 m6 S
0 ^/ n! L9 U2 P4 z1 v& V/ { c) P; J
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}( `) Q: m; b8 @6 d* i* d1 W
% }; l' m7 l8 p3 [. K& c2 p})
, S+ r: W a: a. I" \
: {) c4 J0 R9 o}
- K* K+ t/ x F8 w5 O
3 i6 J5 D9 @" o" |Return(Package() {( e' F: E+ F) R; S3 H- f% ]
7 X0 [9 R5 F& s$ x' E4 P) kResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
- ~6 c1 \1 f0 w1 g& t5 z4 s' R- d6 Q6 }- f3 C+ J0 t( |
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}" m. k6 M0 Z6 z; A& r6 T
+ f* \* c5 ?3 v})
; a4 U! Q2 h5 I' Z1 p. g% Y( q7 e9 [6 N4 Q9 t$ `
}
" J! `. |. R. T8 _0 K- @9 ^! ]9 U( X3 W3 ~+ C; t- X) X6 ~) S1 i
( Y3 t- Z' J! H6 K9 G" O8 S; X0 M! u+ F; H1 p
l3 m# J5 S' L, E
_TSS5 H k4 ^; _" h( W: R0 P9 R( V4 y
, p/ O3 W! g% v7 ?2 ]2 Y
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:* ~! S' M" ~; a1 I% z$ V
Name (_TSS, Package() ; z1 s% Q7 E" } x* i4 E5 R4 {
{
D6 f! Y4 [9 c, d# U9 s// Field Name- F6 I3 z# `! P; Z7 M O: H
Field Type
2 A7 v5 \ ?2 H
/ y4 v4 Z$ `$ S1 d3 C, I2 }9 [9 c7 l- }
/ D' ^6 Y& j- A' p& N p( \$ }Package ()
3 r" k' ]& R b1 Z1 P% b( z$ b// Throttle State 0 Definition – T0
- d: x2 u' t7 ?2 e$ G, H* j6 i( _2 ~. ]# l% K, [- l
{
5 M: ~3 W# A0 p! u8 t8 u
6 i; V H9 C9 o( I6 H
& {: p1 N/ L6 n3 p3 ?FreqPercentageOfMaximum,9 h) ]' V# d$ u3 }+ @4 I1 O
// DWordConst
o8 T1 n \7 o4 d3 u% r& a, v; a3 g" [8 X4 S% T4 ]
Power,/ \3 x8 w' x1 n% Y
// DWordConst 9 m- I3 X5 d) j) @
/ U( M- B4 {2 j- f2 _TransitionLatency, v" }5 R& _, [) v
// DWordConst
d; I" m# v* j4 i; e1 l+ W
3 I* {+ D7 B( z) ~3 AControl,4 e/ R, b' C3 H6 \
// DWordConst 0 o `6 N. _+ J2 e
7 e$ k* c: o+ RStatus
2 t. o: w- Z3 C I; S% i// DWordConst
' D- s( K* _7 t; |" [) A5 I}, ~7 C4 i' e- |: ` Z# l
……. F( S/ h6 `. k2 \6 i) B
}
+ L" Q* X5 W' [, ?* G$ V! K2 f& ^! T5 m3 P
Example code 如下所示:# S/ U0 o) v# |7 A' ]
7 W5 `9 h+ A3 v. n* d& G
Method(_TSS, 0)
$ S6 N" X$ H/ [" b
9 A" r! \, ~; E& T{! \1 K# E7 q8 h8 S6 L
5 x+ `3 E0 @ Z: Z* zPackage(){100, 1000, 0, 0x00, 0},
3 Z- h4 S4 |& U) P+ P5 N" N% H* V$ M% D5 t5 Q
Package(){ 88,$ R6 z B9 ^2 _+ J; l
875, 0, 0x1E, 0},0 L [6 H8 O- M f
' \$ s X% k- e8 d2 ^' h2 j
Package(){ 75,
4 P: ^7 d, u3 A$ d" N2 a0 \750, 0, 0x1C, 0},7 M- `7 J/ ~( H$ C0 R5 `
- k( E, a& Q D( {Package(){ 63,6 `2 H7 g5 T6 n) K& R# ]& \0 A+ K- ]
625, 0, 0x1A, 0},
$ ]3 V0 ~$ o. C. q9 d$ }" d4 n ^3 K+ h( V6 F/ m
Package(){ 50,
; j8 s' b' P& F3 z- D! x" w500, 0, 0x18, 0},
/ ?, i1 x3 @7 D$ N s# ~3 N( s! G
9 E! j4 l! ~. Z* E2 ^Package(){ 38,! m) \. A: D4 W; N: ~4 v: j
375, 0, 0x16, 0},1 V0 A& |& O& y% C3 _: I) c
+ {2 W& V6 [$ |7 o9 V
Package(){ 25,( p5 X9 R; B8 H" g# n: V% ?1 E
250, 0, 0x14, 0},
# w) m8 q; O: W. J2 k+ n5 B! v8 J! F
Package(){ 13,
* Z- `& C5 {/ |! s$ j125, 0, 0x12, 0}- j* f3 f8 e1 |& C4 }
3 G6 r* y% J+ m; b( E
}
: b# Y4 G2 k% _( c/ v9 v2 i% a
8 b3 y/ G; A# I* O
4 ~- `, F0 I! ~! X1 ?7 S" M5 [l
( p3 v5 V/ V. ^: X I* h_TPC$ b1 y3 ]( p4 D0 X2 k
6 f& ]3 C/ N8 ~3 L. s! ?Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。& t$ O* C% X+ P" v# k i3 H) Y
/ P) R- L4 o7 L8 ^l' Y* a c- ^6 h- A% w, b, w K
_TSD- r( _" Y( e; b: G0 ~3 i
8 P- z; n, r8 c, H1 ]
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
K3 ?, |% B# k/ k z! w! p ( R* z9 B" o2 G3 B" c! K
Name (_TSD, Package() 8 o% h) X3 Q# Y4 _
) Z% p9 d2 x* J6 E7 m* r{
, R5 u3 E0 J1 _' ?- W6 h! ]+ n
9 j$ X" J, p- w. G: d4 M2 @" ]Package(){5, 0, 0, 0xFD, 2}* ~4 q) K v, N
// 5 entries, Revision 0, Domain 0, OSPM
2 L0 w( Y' b" n3 V: XCoordinate, 2 Procs ) V* x h5 j3 x1 ]: w2 p5 s/ r$ Q( y
( W$ K& H$ q* n* b/ O2 p& Z! b; [& U. v
}) // End of _TSD object
& @1 {' ?- e9 a2 h3 j7 C3 U% z 1 z6 P9 n3 P. y' m7 x {6 {( E
REFF:8 b4 t- m& v# L
1.8 b; O# q% W' I: R2 b8 H
ACPI Spec 3.0* M: `6 p5 {: U" p3 h& ]. X Q
2.
7 i, x- L5 D$ R) e. D- SIntel Processor vendor-Specific ACPI" b; h; Q( |) Z
6 Z: i& ^2 f$ v' V- W$ ^
4 t- z; a! c1 _; S* }
That’s all!
- u) W! S3 @- g6 ^1 p
3 j' c- z$ k$ V- OPeter0 K- R5 r$ W5 i
* Z5 `+ U! R7 Y: W" [2010/10/01 |
|