|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
) N$ o2 ~5 e6 y3 X* \5 F. `" p0 U
0 x7 L4 x( `+ z7 z' N3 DCPU在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工作时间的占空比)的方式
7 K; ?3 V, b+ i; P,影响系统的功耗和温度。$ D9 B) Z" U$ y# W( x! v% N8 `
. K+ G$ b) z$ @# N6 X* m* l. y) j8 o: v
2. T-state Control
; x( ~" d& b* q, g" y " d9 M4 X, Z9 p" R" ~
1)
3 E% G* j* ]1 DMSR Based Control( I+ J, M( r: { M+ |" ~1 z
: t* X' g- M+ P$ N3 O
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 u n0 I' C+ E0 b$ F$ t+ U # F$ {* {" Z0 ~! w* V" X
2)0 d. |' f6 D. G4 d6 Z% j
I/O Based Control& }; ` _- w! j6 c0 O
, Z7 @ O2 u& B5 M1 R* F5 P" K
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
& k9 W1 P( e' P* S D
x2 p3 }6 _* E& x0 L, g; S! U3)4 w. O; p8 y) \, M
ACPI Structure For P-state2 ~" q. o% \, \7 l: G+ A0 o+ A. K
l$ q2 b0 ~; c( {/ }* |5 v$ I" {2 @
_PTC% k; F0 d' W4 ~, \
9 G5 N, t+ P+ I, N9 j
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:/ B; c0 \/ s* j6 \
: J: E9 k" P/ p4 G+ w/ aName (_PTC, Package() - k2 S# }/ B8 G- g4 o
{
4 {, H4 ~; n, s. u. H# R" G
. ]9 h) T; n8 V4 OResourceTemplate(){Throttling_Control_Register},, @8 x) G4 p* I( Q' v5 o
//Generic Register Descriptor
5 f, [' M$ q) F* A2 [ q
! t# L1 k6 k. i+ {' yResourceTemplate(){Throttling_Status_Register}
) o: ~+ f. K; r! V# V4 }6 I//Generic Register Descriptor
) w- H( n3 l& c" Q}) // End of _PTC
) J4 n% ~- I8 _- ^) i# q+ s3 g
8 z) G* N. S4 h$ e9 B: b7 w下述是一个sample code:
6 n3 h* P% g; e; E; h6 r+ Z" `( u
0 i; z& U0 E6 [" Z p( C, {; r
: ^0 u* K* X! t/ v//0 L, t% x; J+ W: c
) E: H/ r( [) n9 G; M5 U
// T-State Control/Status interface& Y( Q) x. ?' v( h) i" a* L
3 V9 F& _- ]$ @; I
//2 \; t6 k( c$ L; j8 ^; L
6 O" n0 U+ ]/ f! ~- z
Method(_PTC, 0)
B6 e5 Q# b4 Q! X( r* [8 b, T4 a8 y i" a
{
1 r# q1 ^5 o0 ?! b8 ~$ Q4 `% \- v2 m( X
( }) C& L8 | K9 }- ? \//
) A; o/ m! Q/ y% |+ A
0 x/ P4 ?3 O. h V// IF OSPM is capable of direct access to MSR0 A: ^. h# s* V% b
) K0 [: f. N' b7 M4 ]0 \
//- S5 l( o% t/ X3 T4 z0 M
Report MSR interface
1 Y1 X* B8 t" @* j: G1 ~( s
5 ]# r5 P2 D( N1 @+ |& M; L// ELSE
, W7 v& g$ Z, F
- z2 R+ g# H( e" }, ^8 A, N//- W. Y+ b4 y+ o0 S- E8 U
Report I/O interface
1 I, O% @6 p( ?, `1 A) y G: d6 I
//
) b* ^9 {+ V Z: B* o% Y6 T# u
( b. x. @! ~& ~7 _; Z//
( ^" @0 @- ?4 r$ ~" J1 ` k3 NPDCx[2] = OSPM is capable of direct access to On
2 c! j# ^6 z' v: [( Y; g3 R0 `" q! y2 T1 j
//
% m, O0 c0 f: y) E1 WDemand throttling MSR
) U) r( D v( b* g" Q- z) W
+ b5 y; k" N" H# g; j3 i& ?# v# h//
# Z1 R( b. f3 q7 }
0 ]1 C/ |/ x' C1 D; ` M3 gIf(And(PDC0, 0x0004)) {
2 T: y9 Y3 i, e" k3 r; ]* `2 V" F! j5 l( j- O1 M
Return(Package() {/ r" L7 w2 @( H( P/ U
( Z- b; s3 h- {7 Q5 W5 d
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
( ]2 V: Q( }0 o5 q9 h2 T( }3 h" }6 V
6 E' Z! F$ ~: t+ b: Z6 S* c8 {ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}( a* [3 V) c# }- l5 e
. ^4 j/ W5 t% K2 Q: p4 {# S
})
) w. k$ `# E+ f; \) I9 x/ e L8 W# h% H3 x$ S+ g% B
}2 w2 z4 [' N- E9 L
$ _& ~) a, H( w
Return(Package() {
) ~* [) j2 g+ S/ Y
0 a) |" ^; i3 B1 AResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
; {) n, N3 [) H. `; Q. X# C1 P" }: J% B0 ^% G. U6 |
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
5 F- A3 ~6 ^0 v3 m! U4 C- r8 Y6 N
}); H6 g7 }4 D0 ]/ l
" B& I4 e2 L% f4 E2 v4 N+ p7 Q1 \/ X
}
' K, N: J6 f$ f1 P, A J/ u! z+ a) i
2 A- {* Z# `- l2 o4 D% p6 A. c0 u
" h) w4 Z2 p- s: c7 g2 ll! Y4 F: D, P. x2 D0 q
_TSS1 G! Y. h( U$ Y8 Y& u+ r
J. j, l7 h" X+ y" a# s
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:) X4 X! O( }: Q4 E6 u
Name (_TSS, Package()
7 |8 `% C! B9 @# m ] v{
+ I4 H D# w+ \// Field Name$ N3 r3 Q1 E5 L% C6 O+ P3 G J, G" D
Field Type 7 w: n# Z4 t* l& F& H; k3 @- G
1 l6 k. Q J9 B6 k
7 Y! m, @* k i, W5 {# `
, o1 h$ U0 p, uPackage ()
/ I* x& y1 }$ {# u: C% s// Throttle State 0 Definition – T0 - ^+ W& o8 G2 O6 ]
/ `4 j# \, j7 Q0 n{5 ~) ]! M2 ] H- h
# s7 r- S$ U$ \% q7 s" g6 ? T: e9 B
: t: f+ I# @: @& D8 V; E" bFreqPercentageOfMaximum,
8 _" N' p; V7 }: Q% e5 a& T// DWordConst # L. A" K. f5 O5 o# B
8 R& N) u0 j1 R1 n$ I7 GPower,0 u% _2 m' U4 |& ]( I
// DWordConst 0 ~( b) d$ d* h' }
/ W5 j* z2 [- d$ l) e) b1 WTransitionLatency,; U- M/ I0 S- D1 S: e
// DWordConst 5 U$ F9 i8 O4 Z! Y
2 J9 j5 q5 a) C `/ pControl,
" O/ V1 @; Z* I- A// DWordConst
9 h2 A& }* Q8 A: }6 l
3 q$ F/ x( Q% J2 H# B7 BStatus+ B- w$ }: p# s
// DWordConst
6 ~6 ^" z: q" ?7 a" r! c) w},
4 h6 [ _8 N/ v: j……
# o/ p; W# p6 g2 v8 z9 p" s}
8 u+ v- j5 t; B5 N' X/ \; K
" N0 b: b( i. B, Z/ S! yExample code 如下所示:; ]! `5 Z" c: \/ f
& Y1 Z. T- E2 `9 H5 ZMethod(_TSS, 0)) `' s; A: ~5 d
, X) Y/ \; X/ `8 R{8 o x: e( }. U) I; V5 S
: D c9 s% B8 x5 NPackage(){100, 1000, 0, 0x00, 0},1 r$ z" _* W2 Q S- I2 k
$ W0 N. L$ H4 |" s
Package(){ 88,
! p2 d# E. W& H! ~/ f8 d+ y" H875, 0, 0x1E, 0},' L4 }4 w, h. H+ _$ a1 F
) p% C0 G8 N4 G6 m7 q$ e
Package(){ 75,! c! P+ @; W) P7 p
750, 0, 0x1C, 0},
& f! _; z5 e b3 n& [# T2 b9 P$ V
) |3 Y' H! [3 c. APackage(){ 63, j- N- o. X6 {! b6 h) u, c2 }& f
625, 0, 0x1A, 0},
4 V% v4 }2 b5 V" Y& i# n
; l6 ]+ q2 _- M; W. G8 g DPackage(){ 50,7 K q0 g6 M8 t
500, 0, 0x18, 0},0 k! w# U& S! J w! y1 z1 z; m) ~1 d
- v5 @* T/ C# Z5 B7 H. NPackage(){ 38,
! S8 D9 \( j- f# r% E& H375, 0, 0x16, 0},8 r6 i w" a( w
1 t+ T! P% e3 ~6 J( j6 S* V+ g& w$ TPackage(){ 25,
) U0 F" h- B% I! n; m' |( _! i250, 0, 0x14, 0}, J7 e; ?! i3 i2 @: y/ S9 f: u
) _: P) |* s2 r7 G! z$ |4 ]! mPackage(){ 13,' A! e- u, N* ~, O l9 w7 q
125, 0, 0x12, 0}
/ ]; c+ c, p H+ t. y5 q) d+ E. ?; D, m
}( X0 Z# p; \. l& Z" b% q# S7 p+ b; s' J
) y2 ]4 y3 B. U; n/ Q& l* v: F% D$ U% m/ ?, L5 \) W( a- ?! r$ S! A
l
' I; A9 R1 a$ Y6 g( G_TPC. `9 J& S" F8 z* ] M
- w7 ?3 Z. M' ^, L# c" N% U
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。! K% g1 y% g# x! u: ]
: U" B' T* Z, v% z# T3 P
l
3 R$ m% W. |, l& Q_TSD Z2 U6 ?4 Z0 g& `2 z! Z
+ T4 [( B+ R1 }' t8 L8 C1 gT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:, q9 |0 v# a+ r( I& O2 ]
" \. ~) W1 q* T! H6 A
Name (_TSD, Package()
$ i6 m$ y5 `3 e |& ]: ^1 _8 V: }9 V& k1 h0 K# y9 [
{
( l2 [0 L A$ a* I1 W: _
6 E6 A6 t, G( m. Q3 A6 E1 GPackage(){5, 0, 0, 0xFD, 2}
2 H W2 e0 w$ }$ I( h// 5 entries, Revision 0, Domain 0, OSPM % o$ p, X3 @7 q! A
Coordinate, 2 Procs 9 y5 m! L9 A' K9 f# O
+ i5 z8 W5 Z! m/ L
8 i( x E4 j& z- A7 ]0 D}) // End of _TSD object4 d2 r( f. Y4 ?
5 d( ?' {+ d; \. E% Z! X
REFF:5 V2 [, O6 N' [0 [3 {. U
1.
" S4 | G5 [, F# Q. BACPI Spec 3.06 E- I: F3 w. _
2.4 t/ m8 h3 B8 Z) j
Intel Processor vendor-Specific ACPI
3 |5 n/ ?, @& ?/ x6 p" U 1 ]$ Z, F6 f, T% d' F" I
' H5 c) |. a! S/ b" w
That’s all!% F) E: {" R$ ~
/ I, W$ g# S: wPeter) r/ {3 Q1 d- G% s' ^( D
2 @7 Z; b: d( b! X2010/10/01 |
|