|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
. u2 r+ ~% c* _# l% D
3 P9 J; [: K6 z/ sCPU在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工作时间的占空比)的方式
9 f, \4 b- _8 g/ K,影响系统的功耗和温度。: e6 A! N9 n, w0 Y
' T7 c' X5 u' j; t9 A q; q( G! A* T" B2. T-state Control. m( R8 m4 I# _, d
9 D, W2 a. P$ Y+ ]
1)
1 @+ t# ^6 B, n. c9 tMSR Based Control
2 M- T6 J- c. } ( a/ T% ~ ~6 v$ Y0 Q7 d/ O$ C
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 - {2 W' g7 B" o' h# C
; A" B+ ^& }: M+ I& k
2)
/ u. {& O3 l3 @! K& j$ R) Q0 f3 sI/O Based Control
# g/ w& D6 \* t
3 M6 ] v+ F" i1 P除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
2 p. N8 Q8 u8 S4 y0 _ + o3 i4 _- V# M7 v; o
3), P3 N) \" g' G- ?( Q4 C
ACPI Structure For P-state
" H/ H) `; _) _- ^, a7 [2 jl
3 T2 D+ M- l' v, m_PTC. e5 V! Q" e5 K3 z6 D# `
( p. h4 j$ B- s' y
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
7 _4 C5 x+ @5 Z
9 e _9 D0 }* F3 XName (_PTC, Package()
# }8 _ S5 ^3 T0 T; ^/ W$ b{
p* [0 Y$ T0 C/ H
4 I; o. C" c m4 `ResourceTemplate(){Throttling_Control_Register},: [$ r# o0 @/ p& ]: t, X C! `
//Generic Register Descriptor # u [7 m m% V3 i( v# i2 c
& V3 E) f& o% ]6 fResourceTemplate(){Throttling_Status_Register}1 i- s/ Q: O' e6 ^, [% k0 G
//Generic Register Descriptor / G6 {8 n c: r/ e$ W! k& j
}) // End of _PTC
. u6 a( m3 {- {9 F, ^ 4 l9 u# p* [ o) Z
下述是一个sample code:
! {3 b, S2 n7 V( y
! U) u6 ` Y0 u+ x2 a4 e2 V. ^8 s# T! F! D. X
//+ n$ ^+ B& j" P: \
# u9 `9 _9 n5 T4 `! ^// T-State Control/Status interface
, t' w; L, z1 v$ A' N4 U# @% M' h4 J# w/ z {" W6 o2 T+ l
//
$ d1 p$ |) m1 D0 l& t2 L6 h1 o R; ~5 q6 ?6 e
Method(_PTC, 0)
+ _" n7 C& F& A! h
Q" m' Q* T* ~# t7 ?6 T3 `$ V. f{" c! ^0 S5 r4 a4 {8 t
7 g x" E0 ]2 L- I//
# s/ f( m3 i* L R( w9 r; T
+ N- v! U _& S- z5 V i// IF OSPM is capable of direct access to MSR6 d+ G' x* c- e
7 j ^/ W0 K. q r* D f//
+ t& A7 q' X8 j7 f6 i" e7 WReport MSR interface
9 e/ d" Y [' R# }* f7 J6 C* X9 f( F' m1 G& i
// ELSE
& l2 r- m2 v. w; s3 k! O O
( y/ X6 V6 t# A, F//# h |* `" {3 r* F1 n2 p. _7 `( N
Report I/O interface
2 F3 ]6 k. H$ N$ V. ~- ?) E. a! Q3 ^1 w5 I2 e( i5 y" g5 h5 {
//
# b7 a7 b& O, I1 l% H3 t( [* Q' c
: a( o! X% ^( s# G# T//
8 l- J& t' l8 _PDCx[2] = OSPM is capable of direct access to On
/ Y; n( S8 r ] _$ c/ [1 f, ?; g m* R; K9 ^% B8 E
//( q1 U6 i" y g& V& p# u9 Z0 `
Demand throttling MSR
# O& {( w' O' l/ w" z& c% z# z. }9 n k2 ~0 H# V9 I
//. C# g, z1 |% t- G
/ S0 {9 n6 u7 y9 I0 N
If(And(PDC0, 0x0004)) {1 ]1 l4 _6 c* E2 o; j
+ `+ q. q S V! X3 ]# MReturn(Package() {+ F( |- |7 k- l1 _3 M$ @
# v( a$ Z* h q H$ A1 |* ]) {
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},& f4 \, j/ B: ^" N3 l. ~
4 \0 W* z" _# P9 P' u9 j
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}$ ]% d6 t+ \4 t8 o& c
, S, V3 g8 c! o$ t* ], V" g
})
" f9 U+ | _* F$ u2 N
, j n6 o+ `3 H0 u# k+ ?}
6 Z' Q& o! Q& l$ m/ L1 ~9 z9 j" T7 @9 P
Return(Package() {
+ @$ [3 T5 T" [: Q2 ]8 D& x O- Y
4 I! q2 s$ k6 s- x+ U) i: }ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},, P D' }. W: O) g1 m# x/ z
: N, U! m+ u4 _3 `! [) D# i" _
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}: G2 T. M8 ?& o2 w& C- f; R$ P
& V! i. S+ }& z: E# J- V& p+ ~ c
})
" o5 d4 T; `8 y0 k; |
: ^. h5 m& @3 V}- ?* j1 h6 V: f4 x+ `$ n, p
6 W8 c& V$ X8 r/ w4 L
* u4 H1 l4 K! A
6 h3 b% P' i7 D5 ]2 @0 z) W% H
l2 [) B; F0 U+ F9 _! y
_TSS9 E, l f8 H& q1 e, k6 N9 ~
$ `" ~% Q; T5 QThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:1 K2 B5 T, T) }
Name (_TSS, Package()
9 W9 ^0 x4 Y7 Y& z{
) x' p* T- C3 i// Field Name
+ P# X+ d* V( G2 l4 i% z5 v: GField Type
4 ?1 n" l, d9 N
# F' @- _9 _1 T9 c6 g/ K; Y% X8 M/ S5 W; @- J
# G! I" W1 ^# E; D& p
Package ()
4 L6 _. _3 i+ d5 ]% `// Throttle State 0 Definition – T0
) t3 U7 N. \' W# B- X+ S. x* y _6 @: C- t3 P: N
{
6 h) b n+ m- |1 P( A7 R0 Z6 r; Z" F$ T' J* w1 J! r# R. o# r8 T
9 S) e9 j, i6 gFreqPercentageOfMaximum,
8 H8 h3 E' O' Z; g/ d. W" Z' I! X// DWordConst 4 z% S' M" e8 }" Q
4 A0 p2 e; H! }8 E! X$ `) YPower,
; O# \6 R' U m5 b t4 i// DWordConst
: v/ B8 ^( N. d2 P7 M. Y; P( }( l3 _6 T* I
TransitionLatency,
5 i0 a3 i u& H// DWordConst / z6 p* J6 T/ J7 d
6 C; U# K S9 s! o) s v1 f+ X, b( i6 J
Control,6 H& o* s2 O2 W. v8 }
// DWordConst $ @* |2 x, V9 M9 u# H
7 [% A) l4 w# b! x3 y0 |( ^1 ?Status
, w+ R3 q) K3 |8 [! R& A// DWordConst
2 d" t: A; y: K" ]0 [; M! K},
) N% P9 ^$ X, ]' x8 e$ @# T( Q……
+ P$ r$ Q% G$ ~' y$ g* [}
/ e) _* Z! b# ^+ Z9 h
9 j7 M0 g# Z8 ^" {& \+ {. U4 _7 j! LExample code 如下所示:& h Y! e+ f+ R ~5 R2 \) `# z$ K' b C
/ U. h+ p% m% e' r: x; \
Method(_TSS, 0)
! ~) J6 L/ |2 D1 W y: _: x$ z( P' _0 O5 W# p' z2 D7 I4 @+ K
{: I/ J' ]. S+ X8 g( i8 L8 b
& @* f1 u+ s# e7 vPackage(){100, 1000, 0, 0x00, 0},
' ?1 G- S6 A% [# B: L$ v3 Z; J( S0 l& J$ s3 O
Package(){ 88,
k& W# z0 v) ]875, 0, 0x1E, 0},
# O! H9 F6 y% ~4 f: ^/ h2 E" J; ~1 l5 i% j% H' ?
Package(){ 75,0 s7 Q# U. i& d5 L2 b
750, 0, 0x1C, 0},
: T3 ^/ E; Y$ {
1 \5 o% n* M/ | c6 ?, ?" W& W7 APackage(){ 63,
3 i9 X9 O* Z' }% X$ _625, 0, 0x1A, 0},3 E4 D( i+ W: X. a, A- C, Z+ Z/ C* y
3 P+ j8 @* s( t9 e; I
Package(){ 50,
; t4 v0 k8 Z! E500, 0, 0x18, 0},
* i# y; R; Q! X+ P7 l7 q* D0 b9 i ^7 \! b/ p+ a5 d6 R" y5 a
Package(){ 38,
+ p2 d2 m0 Y! G) N* s+ K/ [! p9 H375, 0, 0x16, 0},
2 F3 |2 m _2 w6 c7 S/ f6 m1 J8 P- L X
Package(){ 25,5 l% l3 m: _, V* G3 r; b. q
250, 0, 0x14, 0},
% u8 Z) h6 G9 H- u' }' d/ X5 i9 T a2 O5 Y. e- @( u
Package(){ 13,6 ^; M( U; H) n! i
125, 0, 0x12, 0}
7 [, @* w' N# j. T
, x- x, y# P& T* d7 q}
7 \7 H: w) }' b) g
- [% F$ Q3 v; A# `/ J0 H! v1 ~. Q: W2 I' d& `& Y6 t+ E1 r
l- i1 N; ^* y% Y5 c0 X; F0 ^
_TPC! W5 L O8 p6 M5 p" q) v
1 ]* b* [9 t+ I2 E4 lThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
4 H2 U: k7 X; v4 |; Y: B) E ! Y; K' F2 j4 v, {# a; q6 S" b" h8 \6 w
l
2 p) ~9 o+ F6 c: L" | q* w_TSD7 H$ L- P' _8 o1 G, J( h% o t
7 p: u1 V2 H9 T
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
; u! ]$ [' E" W) n `7 u- G0 F+ o& T
Name (_TSD, Package()
( D1 i \' G. M& ~5 H" C1 c& p6 |) Y$ M+ Y) v
{
! C) s: u, A) C. o# S+ q7 ?+ w& F% n# W1 q
Package(){5, 0, 0, 0xFD, 2}1 ?; H: ?: |/ W9 a! r
// 5 entries, Revision 0, Domain 0, OSPM
& J5 B; r4 V! k+ H+ dCoordinate, 2 Procs
1 R5 W3 E# m- o, m
0 ^( F& @# e$ m; u2 I, o# q
r$ O. |( r6 n& v5 g) S2 M. S}) // End of _TSD object3 D9 T1 T' \+ c0 q' P
4 \2 \1 b, b1 P3 P ~) ~$ tREFF:: h4 t. C/ ], {" S. @" y
1.
3 k) }9 w/ ?1 e8 C! Q' b$ XACPI Spec 3.0# i9 r1 w* k; I# I
2.; G4 d; L3 _" @4 }' y( Y/ s
Intel Processor vendor-Specific ACPI
# I: p t# `6 [( h/ T" Y& ~: N
3 v" x0 u0 K1 H . f! A/ W2 x9 D% ?* ~/ s
That’s all!# l; s' F! _ \# ]
! r5 z8 P. ^5 x3 m) ^; ]: ?
Peter! l+ d1 ~/ G8 w
0 I: z" K6 m+ ?, Y+ C
2010/10/01 |
|