|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
6 h2 j5 c/ z$ }$ {
+ N+ o- L( [; ?) {: LCPU在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 Q; K) ?$ {# F,影响系统的功耗和温度。
8 i, m7 [" Z9 L: B3 U% W
+ W# K- e- k2 b! c% p2. T-state Control
$ F7 j& K# }% Y, T# p ! {) [4 a% O; j* O: Y" G
1)
5 K: F5 q! C( i( a8 G8 ]MSR Based Control
: p7 K% l, c+ x- ]3 |
5 |0 W! P" z8 S& }- K% CBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 + h. G' Z3 b" Q' U4 M$ r k8 u
0 b, h Y! u' H" N" ?7 j# a' _2)
' h1 s& ]( I, i) b* i8 VI/O Based Control
% p; W" `2 O- ^0 t( x l . G z% T/ q2 w. u, F b
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
6 s6 |+ h2 u% a 6 ^$ _% k1 Y& N$ g* f! _; g
3). y$ y) C( A* d2 F. H) s
ACPI Structure For P-state
0 z: ^6 B0 \+ {l
y6 W9 _& W0 r | |' D1 E_PTC: ~3 D, G7 C1 } F" _ l. U3 l
$ O, a( W: L5 ~+ j! l
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:# D3 h, f- d8 ^
) U5 R+ n0 P3 [' o
Name (_PTC, Package() ( L5 b& L$ V! F7 m) o( F
{
8 C# m4 I/ |6 ~8 K
, ?# e: @6 p# r4 K' Y. sResourceTemplate(){Throttling_Control_Register},
4 x% m1 L; A7 R+ I//Generic Register Descriptor
7 s S" C/ a" h* O2 \- _+ l. B- S' F0 Z+ C4 E
ResourceTemplate(){Throttling_Status_Register}
2 k9 J. f( e3 @* ]4 y& t//Generic Register Descriptor % [2 j/ o$ u. \5 b1 g" P3 _
}) // End of _PTC
+ {: \' X$ `- U" i7 Y4 S5 s p + h: W- g$ V8 Q, @) x
下述是一个sample code:+ a7 g5 V+ S" C- u5 @$ k! W3 Y
- K0 K1 {0 X0 ^8 v7 l: J. }3 D2 W
+ Y! _ i) C; u- o {' c1 a( \
//! J0 y) c7 T% I3 v
; N- |. s+ s/ Y$ [// T-State Control/Status interface
, N2 U, y y2 a& L( D3 F9 T+ u/ K+ t
//9 B' u% c0 d- l0 S5 z" U
% I$ d! R1 E* }5 y4 |7 e# X- v
Method(_PTC, 0)
' G4 O7 `4 T4 R |9 P7 [# K2 k0 l( M' q S E" s# k8 [' p
{. j, I+ q9 q8 r1 E2 l
' f5 v4 H% _) V/ t//4 U+ a% ?5 z. z- ~5 X, ^; z) u
0 n% S" G* Z7 L' N
// IF OSPM is capable of direct access to MSR
0 G$ \8 ^! p% I+ I" Y2 N4 Z7 C. U
2 s4 @, ]! H. m& @* C# |, x' c3 @//
/ P6 J6 q0 [! U- ?% p3 p _* S1 C( [Report MSR interface4 d2 T/ N- S# q2 d3 B& s% h
- S) {7 [- e6 c) q/ Y2 T `
// ELSE& T! l5 J& S& _% I% e+ h
5 f) D8 C/ H# ~6 C% d+ B( c# v//
. m9 O8 l2 d$ _$ l9 iReport I/O interface1 o: z" M7 X0 K2 T# A& ^) e
" Z; U9 o1 z+ t! k
//& }1 s5 Y" S) ~6 ?
, {5 X7 B. n9 v4 }* s
//
$ A5 K! ?$ I0 n5 ^# `7 a' F6 S! OPDCx[2] = OSPM is capable of direct access to On
9 v, W& G; h- d- T7 S- |+ K
8 J3 g4 u. D4 d//! h" q' w8 ]0 p$ T
Demand throttling MSR
+ o8 P" w3 E& P& t5 n/ ]8 Q, {
) c* V% f W/ u5 W: \5 n4 {//) B$ S# T" Q+ k/ h# U
7 S# y: f' e5 x. a( ]$ b ]; gIf(And(PDC0, 0x0004)) {
* [( K5 p# J7 k; L/ X8 D+ a. V( O. Z
Return(Package() {
) Y2 k2 a T1 S6 c, |# u6 I" f% T1 l+ W( u/ T1 g
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},3 V4 o6 T( i1 N' n; @
4 A+ w& ?3 z" T* x; C* m! R: L- T7 E
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}6 X4 h/ a- Q' S+ {3 y) N
7 d5 h5 Z4 `1 ]- O% s4 E' }9 L})' k' A0 \: y9 o/ V. _2 q6 W
1 s. W1 V9 K" T& h1 a1 O) n}) ~6 @& V9 w& c! e& W2 d
) C( T$ _5 w1 N, l# a
Return(Package() {/ C7 e1 A% \- {. h$ N" o. E1 ?
$ ~+ o# U4 ?. j$ t2 m. R
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
- S, F9 d6 i1 @8 i6 F; M4 \4 J& f8 F& y9 w
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}8 Z; E* I% x( a. D
# \# R, i1 Q: ~/ a8 e. U
})
; j4 @! U6 x- ?( P h8 m6 o2 }( M
}
/ b+ A; J6 N, }/ c
3 A- o( @" I% S6 J {/ Z6 T# o# R+ j" k9 s& D
# N" ]* Z' m. P1 R: Y. i6 i0 g
l
) t9 y7 u+ V8 `) W+ \. o_TSS
2 _- C- R U; K. u
& j i# j' p2 n& fThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:" O$ g5 b7 i, ]7 _/ F* c# C
Name (_TSS, Package() ' Y! u0 t" q0 O8 i; b- S* k
{# c& l- p) Q' I! g
// Field Name5 O7 t* y! W+ g! ^ [6 M4 ^. I
Field Type
* E V' U9 ]4 K
! d" ?! V/ A3 G% M9 G3 n# x" O2 N7 g$ P7 K: g
; D+ g. U i) N7 V; ]Package ()/ q( G& b @5 J2 l0 P
// Throttle State 0 Definition – T0
, I4 q0 A+ b; }) |; B: l8 ?: y' \2 d! ~- V; L
{
$ t: c1 C. H1 N6 {! Y7 `, f! k) J, d" V- F
9 W+ N8 R @ q! M! {FreqPercentageOfMaximum,
/ y, u5 w! u4 {/ D6 d* c// DWordConst
0 a/ R' V$ m% M ^" \
: j7 w8 c8 g E6 P4 \Power,
3 @$ h8 ]; e- h) y" K v( K2 ?7 i// DWordConst : ]1 M1 p d6 E! A! R+ D
1 C9 O6 D. S3 [7 DTransitionLatency,& K4 m" |' ^2 q4 O
// DWordConst
. u3 k" z a7 Z9 B* d. r" F- x# x/ I. N( v; O6 k1 K f
Control,. M% V7 {9 _6 g8 X P( [$ k
// DWordConst
4 m8 E. ~& J! j. {
# e" M e- t$ lStatus, K% Q1 C4 s7 h' f
// DWordConst ; T$ I# _# l4 L# P* M$ J
},( c5 x5 c! I* |7 f8 h
……+ G4 M; k; D( S3 J: w4 g7 F- n8 c
}
$ S r4 X+ v: w1 L$ U- x1 N9 J6 u _3 ^
Example code 如下所示:
: Z/ M: t7 a4 Q, C+ I6 ?6 d7 X3 i' b/ f& R7 F2 `5 u
Method(_TSS, 0)
5 V" e/ D& j- \# Y( A0 Y
; z. {& C @/ ~" b1 N8 M{9 B3 b4 x& Y. P4 C& q9 G
. z7 q$ W" G. ^; Y6 v9 e0 m
Package(){100, 1000, 0, 0x00, 0},
5 e" J1 I7 n4 }# K6 F/ v1 O6 D. c5 `2 `& W3 n8 u$ J
Package(){ 88,
?+ c7 e7 q' o2 ~' ?- \7 a875, 0, 0x1E, 0}," e2 W+ \1 l( M6 L4 S, j
A; ^. }5 b- V( K5 {$ XPackage(){ 75," ~, i+ _' K( e. V6 G% o9 _
750, 0, 0x1C, 0},
% g* p/ p* K4 s; A# z- q# u# T/ v) M2 Q+ M
Package(){ 63,$ K; Z& }6 m* r8 P* B4 H
625, 0, 0x1A, 0}," w( ^+ m7 U+ ~* r! k
& B5 s9 b6 F) X: Y" DPackage(){ 50,2 \+ Y# O! l. \, @' F, q2 s) v9 F
500, 0, 0x18, 0},
# P, d8 o1 [+ f8 W5 I* c% r
6 X t: T X ?5 k z$ Y7 tPackage(){ 38,% w0 Y n; N5 l8 m9 T( i
375, 0, 0x16, 0},
, v! v, A4 ]1 g6 u
% u1 y7 `& q# O) PPackage(){ 25,
( j0 M9 [9 n$ `* A250, 0, 0x14, 0},
2 ?, N. O3 G. k- D
! H( F- ~/ U5 g- ]+ r4 zPackage(){ 13,
5 L. _0 ]1 R" a0 {0 |: o$ x125, 0, 0x12, 0}
: a+ @% s+ _ L+ p6 x+ Z% b4 j% e* M, n8 n0 s. y
}
" t7 M% X* ]5 L4 v3 ~1 _
7 K( [9 Q! J, g# f
* n- f* r7 Z$ R" X' A" d# Vl
+ W8 [& {, G* Z0 A5 o_TPC4 ^, k: q+ h0 t _8 G) W) l9 `& t
6 |, I) Y+ ^1 [0 p( u2 |$ c
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。$ E# p. E* D# c- @
1 G; T# @) J! B) d4 P2 X: Ml
. k$ p8 v' G9 b& D; n( l) @# Q_TSD$ Z( x2 n, |$ D! w/ `; q
/ u `0 a6 `! H! ~T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:! z4 l8 p' h! g, X$ b$ h# D+ Q
- n% L5 d/ J0 f
Name (_TSD, Package() . y$ e: J/ e0 Y$ E2 E
9 H; c$ @: k( H{ : ?0 n6 H0 }0 M n3 _* ]. [3 t
5 p& k2 \0 |0 [4 k: u; J+ T/ JPackage(){5, 0, 0, 0xFD, 2}
0 j9 s( J6 a, }2 B4 V. x// 5 entries, Revision 0, Domain 0, OSPM
6 b2 w1 J% g9 Q) X* gCoordinate, 2 Procs
+ n2 Y4 {' n" g: C2 ^$ p% Q9 |& W( x' u) h/ S7 t
3 A' w$ Q# @ G! x$ G; G0 s}) // End of _TSD object
0 W) r) z" k c8 } J1 W9 F$ _ ! h2 c+ n! @2 \" V) L. A" Z
REFF:# c3 J" _: O2 L- U8 N
1.3 L9 a* u8 ]% A1 U
ACPI Spec 3.0, Q5 K3 o. s0 }- N \5 U+ ]+ R8 Q
2.; C$ M9 a$ t: e" `
Intel Processor vendor-Specific ACPI
: D& e2 p$ P1 Z7 L( r3 p 5 y/ y* q) c/ }# A6 f+ \& x8 E: x
( g: h% ~, I' Y( _" P' F( N4 c, J% r: lThat’s all!8 i+ ]' m0 S* k3 l+ K' ^7 D6 W8 I
6 Q2 J9 Q7 K, L( h y
Peter. A5 V# {- j/ y5 s* O
7 Z) Q: t. a$ F" ]2010/10/01 |
|