|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
! L/ q# V8 Z9 {/ N* G
& _7 K7 k! ], y: k" v% OCPU在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工作时间的占空比)的方式
* y! y1 w- ?9 L' I,影响系统的功耗和温度。
( v( E+ o0 d; n( x. Q
% q* T0 ^$ ^( f2 R( O% w0 J8 a2. T-state Control
- f/ B' B$ k4 s, c4 H2 A7 [0 T
- e: _( `; Z) r4 v }, b# c1)2 d! N2 K1 c# c% Y2 z
MSR Based Control
) A& u* @7 R$ q; M6 \( S' }
: J! x4 ? [9 |8 j/ g# t: j6 e7 cBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
: m+ T t( l0 A6 s5 w% _# Q' a1 l
4 Z; H4 R" e0 o. W- x/ H: }, i/ F2)9 M; i/ z) x4 z( _8 Q
I/O Based Control
) p5 \* Y [$ m+ }
8 y& a8 @; |! F& ]除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
% r" f5 \: S7 k C
8 O) i. t2 E' B; U3): z( a$ T- [! C$ q2 ^
ACPI Structure For P-state
# w2 \) n, B1 C: o+ c: v/ c3 d! @' wl
$ V3 ~+ m- O- ^_PTC1 M& Y' `! n0 B. X- @5 R* N) {
' z6 Z) G: }# C6 H/ m: H, iProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
7 g/ A% V K/ t( ~2 P 1 ]9 D+ |. j: ]) k$ J0 _6 W% ?1 {
Name (_PTC, Package()
& k$ Z' m. d8 ~7 |6 M1 _{ 3 U1 r! ]9 A5 S- s6 N6 w
- n6 g1 d# e6 J" _/ d; g! h9 CResourceTemplate(){Throttling_Control_Register},0 I* }- o, n+ K# L( ~$ }! t/ V% K
//Generic Register Descriptor / x% d; l- x; O
8 Q% P" j- I3 F9 g7 c7 \4 L l( NResourceTemplate(){Throttling_Status_Register}
h( C- C: X9 E9 C( K6 q- G4 z//Generic Register Descriptor 5 F/ T- U4 K4 X) {' E5 O
}) // End of _PTC2 G V2 h7 {. k- B6 a4 x. O) F
4 {, E; [: X3 Q3 a0 U) g" v
下述是一个sample code:3 z2 O8 G0 Z. z, ^6 L8 c
- V# l5 X T: s
4 W6 \ B- a! `1 }6 p//, [* I. \6 s" w' l/ z8 ?
! p( [# M; {& Y) ?4 G7 M& z0 n8 Z4 A// T-State Control/Status interface
, a4 V3 R2 C; y& ~' W4 s
/ Z( S, n: p' j( m" g- \// k; e* k j2 N& J1 v6 G! H
* D9 \1 Y/ E9 z9 ^
Method(_PTC, 0)
1 H3 ] k6 u- V+ }& R! U8 f- L0 R: N3 @! j( w
{. Y0 A: x6 Y4 L! [. g* z- [: w4 p6 D
) @* d B/ j% f5 m3 L. m5 U9 |8 i( l//
% X0 v* o4 [2 i
% `7 h/ T" N+ S// IF OSPM is capable of direct access to MSR- A7 s' v: a8 v8 ]
# n- |4 F( O+ I* r; C/ E% B6 t' A//; a7 X4 Z1 p6 E8 `
Report MSR interface/ w+ ?8 F( s$ V0 n& F
- X8 q5 [$ M# L+ S4 H* y// ELSE2 \ ?& h$ i+ y; S/ r+ E
2 H, c- R1 s, Q& P: A: L9 H: R# b
//
: c( p" H) O: a/ X+ E7 fReport I/O interface/ N7 {7 b3 | E8 G9 g
3 A, `) Y- C1 U6 ^, U4 P//
9 V' ?3 D5 J4 z9 g. g p& P$ g9 ]3 ^8 F) z( ]
//
+ F, @1 C& ? e$ \: g& `PDCx[2] = OSPM is capable of direct access to On
+ p& o6 F. R# N, O
9 Y& d# o2 U$ d" @" L//
/ G* s8 ^5 Q" H1 J! G( v& h3 PDemand throttling MSR/ p' O0 P) p1 D2 @& r
# K' E& x, R9 J; U( ?3 |/ |
//
3 s! n5 b3 W" u a, P/ }9 @* r- a( {
If(And(PDC0, 0x0004)) {
& M$ ~- a0 u5 x# |
4 A% I6 D7 X. A" _! cReturn(Package() {
+ W( p: n3 T" r; X& E8 F4 K+ M% l% D
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},0 j& D5 Q h/ x' E6 d( k
3 S+ g8 {- R, l, oResourceTemplate(){Register(FFixedHW, 0, 0, 0)}9 c' I: G$ W/ E+ J
' t3 I4 Q' D: F) S2 H9 v})
+ Z" a. Q# Y3 q4 W2 P8 }$ H6 r& y) ^3 t m* F6 ~
}) H/ d$ ^ [) E: d$ K0 f
! g( ]! L3 J7 ^; {6 a0 L) c) L) v7 v
Return(Package() {" v" P! ]( l6 d0 ?2 y/ o* ?
7 s$ ?5 e7 }' i- p' i
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},' F4 ~& w! o% L8 ~" q
( e0 W* k) g& p" ?6 j. X6 u
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
% S% O4 h O8 N1 H' _4 L* ~. ^' e) \6 i5 r
})+ ?' {: h8 E. b4 w A+ c, J2 ?
2 Y: V6 q {2 [4 b/ d n' P
}0 V/ y/ X5 l: g+ w* O2 q
7 ~% M6 T8 r$ s$ J9 k
' Q' s% V$ w9 u: {2 r5 U0 `9 \5 f2 ^& P6 k4 ~! L
l
6 \, j. u" d& b4 g$ ?_TSS7 P& s, T2 A% F
" f1 k) ?2 L' e XThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:- ~ t* U3 g, j [6 z
Name (_TSS, Package() 8 Q5 d( q0 ]1 W: s1 h; }; z- J+ p
{; ^+ C: s/ g+ g; _# b
// Field Name
6 [6 g8 w0 u0 o4 Z# u9 GField Type 4 O' W- B g3 Q7 _
5 h$ t x n% }2 I3 s4 |" s. E0 x+ W4 ? W" [% ]* h8 ]
6 [ q- E8 n" v1 z5 a
Package ()5 @# x) d0 ]2 N! N& z L# F
// Throttle State 0 Definition – T0
9 x+ Y6 _5 q+ p/ I- |6 @+ ?+ C, E: X' F# O- S$ ]2 |! m
{* `" L% N# y$ z5 [$ k$ H! d
; r7 C7 X. D& Z3 f6 r# S* o
' B4 G1 c( |$ o( w
FreqPercentageOfMaximum,
- d2 f5 g" R* v7 [- @// DWordConst 7 {/ \3 a3 ` ~+ o, G- j" i
4 d0 N9 |+ @7 W4 o A& X" C7 L
Power,
/ T' }, |; N9 ]7 w// DWordConst 6 f' _/ X; \" ~' V
. u# b) W2 D w6 H* }) Q8 b
TransitionLatency,+ _& L' K! q9 v5 X! T
// DWordConst
' K) B. ~; H' h3 i! q6 Y, ]+ X& \3 ?. {+ d
Control,, W) l2 A8 J8 u7 e. z
// DWordConst - C3 b' v( A, ]( _7 B+ [- b+ f
; W. c/ F) k& l. J. N0 F
Status8 e& ]2 P4 t/ P8 v: L
// DWordConst
+ ]. m5 V8 o" h, {},
% q% D# P, A: |9 C# ~2 s……
, e, ?0 ~+ w9 e2 q* Q$ F" @& ]}
8 }/ n8 _, _2 Y9 V/ a
! v- ^9 y: m# L, ZExample code 如下所示:
: g, o) y' c0 H1 q% S
) C; F8 S% ?( s; S1 U. o: [Method(_TSS, 0)
; d8 S5 }& j0 Y o' x# b8 f; }- {, T/ K- E2 T0 \+ @
{" d2 ?" `6 ?, A. V2 P
& ~0 p) O2 J# _* G) t# ^
Package(){100, 1000, 0, 0x00, 0},
; I. t- M" v* j, H b5 {
: d& m1 [6 n* E4 a' XPackage(){ 88,! T& G% k$ k1 G- K9 ?' |% V8 D
875, 0, 0x1E, 0},/ I' y( U' g( F/ O+ S+ B
7 e7 N* n! |3 W
Package(){ 75,9 E* x4 L! k. l) W! P
750, 0, 0x1C, 0},
# Q+ M0 `2 }4 I" p8 X5 e- F' g6 O4 B& \8 ^" Z Y
Package(){ 63,* e5 `. j' s4 z0 U4 f
625, 0, 0x1A, 0},
- m( Y# ~* p3 N" k- R1 g4 i1 R7 O0 M& {: L8 T6 z: z d
Package(){ 50,
8 r8 Y' D$ ^: \( Z T/ T: c, m2 I500, 0, 0x18, 0},
2 M8 w, N p. a( o8 s5 z/ |+ L8 o4 y% ?, K/ Y" `. g
Package(){ 38,/ ?) _, o. [0 Z- ^
375, 0, 0x16, 0},
* S. X5 r0 N- O/ `! i% a
, \( D) F, z$ T6 i: H0 f3 EPackage(){ 25,
& ~# g2 k2 E( \/ M250, 0, 0x14, 0},
/ T* @+ J8 D* ~- \; X% j! D
( L& {# T. d+ m$ R3 o- KPackage(){ 13,' a9 ^) ^8 q% L! t+ v% ?
125, 0, 0x12, 0}
" B$ J, g. f3 Y# c! \/ y& A) z& B0 k) h0 O( Y7 \
}9 s. I- D6 N0 w2 s
, f5 _( m0 _; M! N4 `$ l$ D) ^
- t0 ]! h2 F, A+ @) m# jl
4 S( J. o0 S6 Z9 m; P9 u1 ~0 v x_TPC. U7 `, o. V0 V1 |8 ~5 o
# ^4 O4 o6 j Z/ k* oThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。5 _% d' i2 ^3 R2 x/ n
& Y! ]4 ^! } ]; f4 K! S6 C
l+ I5 i: ]! \5 b) K( ?1 V: Y9 J! R
_TSD
6 l7 N$ U! I1 ?
% |3 }$ L# \7 `( t- mT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
: H8 b- P0 ?2 h! K. ]
' r. g% P! p) `" v) |" f- @Name (_TSD, Package()
! W1 D* L0 e* y. D! d) O( _8 a* \! y' [* p! G! H
{
0 e1 |$ T4 e* V8 m
0 s: W* X! {% q7 ^: p7 q: o7 nPackage(){5, 0, 0, 0xFD, 2}
: U3 h% ^, I; r3 }// 5 entries, Revision 0, Domain 0, OSPM 9 |, l5 j* l) B( j* Z3 d
Coordinate, 2 Procs
% t7 t) T7 V& X, F+ i& ]! K* A- Q e5 T: {. V* D g' W
. c3 z9 V. @) |. [}) // End of _TSD object) c$ c, f' w' m* V) X3 Y
' Q& @" I, p" t6 vREFF:) o: O! p& S- \/ @% ^5 L
1.
3 |+ z/ c; E- H3 u# i$ gACPI Spec 3.0/ r# [% L0 v1 s" Q* a
2.
+ w" ^ D& h. W c% x$ e0 P( fIntel Processor vendor-Specific ACPI
: Z# H9 P% K% P* g, h6 k0 M
" x3 Q; j( k- Q" O g. r: v; i
: X/ y6 f2 I* q" PThat’s all!
, |9 U9 W$ }+ [7 _
~- B$ g" E! B/ }Peter$ l5 F$ b5 o* v9 Y
! X& _4 C' C+ x- F! D' V. U& a
2010/10/01 |
|