|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview" R M; B1 _* p
* r# |* Y* X2 b/ w& {" `
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工作时间的占空比)的方式
D4 A7 {) l! H5 {/ ~1 Y5 ]6 k,影响系统的功耗和温度。
- `- y" O; J! L& E2 S
3 L: I+ E, ^: }2 `2. T-state Control4 a- X$ Z9 j1 y9 |6 I1 Q
! ^3 @9 w9 I6 M" ~( D
1)3 Y$ c$ {. C- h
MSR Based Control( a5 G! y) Z/ }$ {% X' e3 O
1 K% g( q" `* \9 \8 P
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 ! z8 ~% S6 S( V1 r1 c# e
3 i. a8 [& ?% D8 N3 ~+ a( b! s" L; v! j
2)
$ ]$ R+ R, O6 l2 G; t6 aI/O Based Control
" W. F# i R. e( F: v" F& E& Q
3 A' C4 G- |; ~7 Y5 h除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
/ b7 t2 r+ l" ~: c7 E/ W6 z: V
# v, j8 g' K3 `8 p9 c- ~2 i3)
* m% `6 x/ J) m, OACPI Structure For P-state; S2 k1 L0 P2 U8 }: d
l- {: ~+ V; x3 M9 d9 X+ l% }& h
_PTC
7 {3 E# l: b" h6 n9 o) T/ j- b
* a" ?4 ~% b6 u1 X- V% e* v" KProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:% K' E. B$ `; S9 u& [
' U( \( z! M% y% f3 }( ^Name (_PTC, Package() 9 Z' `+ D+ J, m9 D* G& p( `- M
{
* O' A) Y* F' K# Q9 m' \; i
! q: E( H6 ]( F3 c9 Y& y' _' h2 N# @$ ~ResourceTemplate(){Throttling_Control_Register},1 \4 b8 H. }) q$ P: A/ l
//Generic Register Descriptor
; k# B; e7 C3 w+ f# }
" P0 S$ c t8 [9 t e0 R- T9 f8 pResourceTemplate(){Throttling_Status_Register}) B* A/ t3 f# h1 u( G4 t+ {$ [
//Generic Register Descriptor
; Z2 y! _4 n& X) e& ?}) // End of _PTC
" V/ z8 G) w& M # N# w \: @5 d5 G
下述是一个sample code:. q$ k4 s+ W7 {( X: X
% [, a8 g% Q$ n9 U% c# |+ h: u
( A# x% a0 b+ { c1 R! ]# y& j$ P
//
0 _! X7 x# M3 z/ d5 d# V# q* V1 _( n5 e# b* r% Z
// T-State Control/Status interface4 b: o4 |/ k& _6 |0 ~5 w# b
1 H* p# q( s2 l/ {9 p- D
//
9 t* D6 y0 o1 v4 j Z R
- j- N) D+ Z& x/ tMethod(_PTC, 0)
; p6 _" `' a c, c6 l% c" O# y
6 N. q) z% C+ z- o! ?: _{# _+ k9 P2 d. ]& T+ d
. l- F7 j. |# h% v3 p7 ]//# \: j2 K; i0 }1 \% K+ m* x+ _# U* k
; T7 p( h+ h# R, u
// IF OSPM is capable of direct access to MSR0 F4 F6 q2 D% l* k9 Q: U. O
, x! x) O3 [& i0 S0 W3 H! f' C! O
//
* b0 ?3 z }1 }" k0 J+ A; }Report MSR interface' g" W0 p+ E) s$ \4 h% a
* ]" Y, b. `! b V
// ELSE6 O J& j: j5 w
& E$ o! n( O( L& i" g5 u8 i$ m
//5 i4 ~. N8 c6 r, G/ Y5 ?
Report I/O interface2 z9 G" ]- B6 q
( N& |5 y% H( ]. e8 {( N//
/ _: k7 e7 _( S. C3 x
" ~+ ~4 \" o0 B# B' J' J, {1 I: Y//" F, [- C% {) r5 r, Q3 Q
PDCx[2] = OSPM is capable of direct access to On
6 a& R6 D: E! H1 L; P: i8 U l, D8 [# O( l/ ]
// Y/ Q: \; ?1 u6 Z% s4 t# L
Demand throttling MSR/ ?0 y5 n: ~9 }
% A J! O) I, ?, X2 I8 R, g" y/// c! |3 h2 o/ W7 `
; K1 _$ ?) O. e4 C& c( AIf(And(PDC0, 0x0004)) {
- _& ^$ _2 m( V3 K% Q! I3 z9 k" J, ^1 E/ k* B6 R
Return(Package() {
' `& E5 w- X( x) z& a* B2 ]% m. Z M3 B/ A( W
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
j. j2 v1 }/ ]
4 s, M- F/ S3 c3 s& v, FResourceTemplate(){Register(FFixedHW, 0, 0, 0)}) }% [* A$ I$ ^
, j- o/ |" F% S: d
})
6 r# x4 O5 @: i9 ^( u
* X" i2 t8 w; e: v; u$ c. v}6 k$ S+ |3 _% o4 h+ e
9 C" z5 Q+ x" b7 A k( S9 rReturn(Package() {
! d8 O. \* {+ d/ @! U- @/ _. {$ P7 Y3 c& }4 o# E
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
$ m2 b$ z: G- r6 K- E
; j) `7 f C9 K; d3 K) FResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
" O1 O9 Y; g/ [5 j4 c g: {- d3 L) f8 L6 p9 F! ]' \
})
8 G$ r: F0 D: z' r
) M3 K6 I5 t% [# a" i. q3 K1 Y( N. k}, C( C) K7 a; j
0 t) r" J2 J$ g# a' V1 z4 j+ a1 l; Z3 p2 P" U; E
" e2 x& h( R0 z# Il
+ E6 E3 y* e5 I4 Y_TSS. P7 S7 ^$ b, ~. }3 h% V `
$ c$ \/ n# B- BThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:: H3 \1 j5 ?5 S6 G( g7 |. i
Name (_TSS, Package() ' f- |+ E' H% U
{
9 Y6 p6 y7 W' n; S// Field Name
, h& n+ c" v( z1 BField Type
# S6 t" Z" f: Q* F3 q4 Z
) x" G0 q. i! t% {+ z$ x5 t& K7 I: f" b; L) p
- d/ `6 V$ S9 {7 j- ]Package ()
# r! g- z0 k/ \3 J9 |6 P( W// Throttle State 0 Definition – T0 - h1 j$ \7 U, ~
: t4 V* Y' A8 M5 l{
! i, B1 {. n' x7 ~5 R2 a" N2 s4 x7 P
" e* \: k+ b8 v' @# _
FreqPercentageOfMaximum,
- `; _7 R1 k( j% N) i p// DWordConst
7 W# O7 L* g) K5 p- q& r# r& p/ I
Power,% G4 K; L7 g2 Z! H( ]$ h
// DWordConst
3 C2 V# y. L7 R0 j6 K) |* f2 S
! k: k0 R k( j4 E j9 E9 aTransitionLatency,9 K% r+ ?0 ~9 a, f9 e
// DWordConst
6 ?5 X. |1 l& l( r& Z$ X; `
' Q/ D) a) G7 D- p7 T* ^5 r. NControl,
4 ~% q+ S& u* T1 F6 G. c// DWordConst
; q; R" ^" i% l5 ? R2 J# a/ V4 Q+ T0 S
Status
4 s, G' p3 t1 w# A// DWordConst
) I4 M, _% Y/ q2 u},1 S) G1 _2 h y; @" X2 q* T/ x
……' ]7 V4 ~/ @' B. {8 I0 [; v1 z
}# }5 F A0 s5 z! Y3 w8 t8 z
/ k: M% T' T" ~) A( H' ~4 `Example code 如下所示:
0 m8 l8 c6 M9 n) a7 S; h
+ D S! ~. r4 DMethod(_TSS, 0)5 n* X) K1 @4 _& ]- R
w3 {8 B% w4 c+ |( e% ]+ I8 L{
$ V ]7 w" P- S7 G1 Z' g& B& h3 G5 E5 j; f( ?9 L5 s9 y& ?
Package(){100, 1000, 0, 0x00, 0},
- a& a5 X* m+ q9 e
: W* S) P" } w. {Package(){ 88,$ P7 Y+ Y( l% G" m/ [) r
875, 0, 0x1E, 0},
6 T: A1 G2 D8 k' ?! s
6 I! \; a' W* C4 @Package(){ 75,
; e7 {& @% n3 E+ z M# R3 U750, 0, 0x1C, 0},
0 K4 }' R$ z% z; x( b) v! |; A# O+ F4 O: O. p
Package(){ 63,$ U# ` R" l& I, P& k- z7 U
625, 0, 0x1A, 0},
' G& Z& {* T0 `7 S/ Y. w: ~: i
' e* K' [' S3 v2 z+ [Package(){ 50,/ o' V0 ]2 X+ c! {& w
500, 0, 0x18, 0},
* L5 T( j* @# E8 G, R7 j" o: X7 N! a0 z
Package(){ 38,
: e5 z+ M% r& w/ G, {+ U375, 0, 0x16, 0},
( R3 s+ B2 [: N6 m/ d% H, f8 Z p3 |- }- K+ N
Package(){ 25,
3 n3 V5 I9 v8 D. D4 }( I8 A250, 0, 0x14, 0},
5 J2 }" K5 V/ F+ r' M+ k
* x- f" H0 ~" C: h! P# vPackage(){ 13,
" x4 q5 G9 @ ]9 C3 T125, 0, 0x12, 0}6 R$ Y0 Z/ d) Z# ~4 C% J
3 @+ L; a2 Y/ ^6 ]* [& Q- R. n}1 p9 {7 D) m U- Q
, C* G) Y4 p0 k& @8 k1 L) n- ~9 ^
$ l* w$ E8 \% fl0 p) y% z7 s0 f4 `- f( o- H3 [
_TPC
! j( Y ^1 T% ^8 H
3 j5 O C8 r4 W9 f+ f! GThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。$ s$ A J j( H
; H2 d( i6 r4 j6 V1 K6 Nl& `, b, D3 ~' J) B
_TSD
# C0 b$ ^5 h7 S p3 G# Y
% {9 l8 S- R4 B: f- X b+ cT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:5 |7 f# w9 n0 C/ S8 v& c
6 {& w2 y+ ^( \/ P- {
Name (_TSD, Package()
& D1 H( O- C7 x. a
z5 C" _8 v- x6 C{
: |2 T8 u: C" h9 `$ |
: N3 R; o. V% B/ k7 JPackage(){5, 0, 0, 0xFD, 2}
4 G4 R+ H; C/ C( Q4 n( v z// 5 entries, Revision 0, Domain 0, OSPM + a* p# L* R D, } y
Coordinate, 2 Procs
# C" B% k8 Z u' n) \# P4 ~
% n- W2 |& T1 F& e1 J X: t8 R# k6 t" V% c/ S- Y) A
}) // End of _TSD object
2 ^3 ]" S2 I( I5 A/ N0 k9 S5 j8 I ( H/ v5 Q; ?4 D" ]* y) D9 |/ H9 E
REFF:
, V: o* }# Z6 }# a' g1.
. u- l5 l- I! H' C8 ~9 uACPI Spec 3.0
+ K1 r) H/ e# g2.: e% r- A/ e3 ? m( e
Intel Processor vendor-Specific ACPI, @) _1 j1 T ]$ v: L! [
3 X" X3 l9 s. C" H4 L! S" ~: ~
3 `3 q7 y7 T0 E! E8 M. x2 H
That’s all!
; K( Z b7 w0 ]' K 0 N: t' Z; o9 M1 ]" e4 g
Peter
. L. N- ]% G# ?: R2 {9 W 8 n% W# L* H0 B
2010/10/01 |
|