|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview. s" [9 A, r. Y
- `" i7 u( P9 T" i6 D9 Z+ WCPU在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工作时间的占空比)的方式" [+ @, C4 g/ W X/ N- Z3 l
,影响系统的功耗和温度。. {- ?& O- _. Y, u1 |' ^0 U) L
6 J) y* f) @! `. w$ g% _- e' N2. T-state Control2 d" N' l6 ^, ]/ D
5 H S8 I, V4 B$ ?5 l9 d+ W
1)
' H* p$ W- z" _MSR Based Control v* n" G8 R+ e* g4 @( O4 T7 M1 ]! e: h
/ ~3 Z( {2 ?1 q- i3 dBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 8 a5 W2 V# A' D" g
$ T) i" N( @0 x7 Z' t4 ?
2)- ]% Y& U# ^$ N7 T9 Z& B8 B
I/O Based Control
$ ]! j7 ~ e+ b+ p u! u, _
/ ]& z% Q6 p f' B. C( F+ I2 b除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。) @8 _/ a& U% \& t8 U
1 m, j" q* J& f& m3)
! }% Z4 K/ |" m# k; x& pACPI Structure For P-state6 Y5 A: x& z' L8 r5 P9 y, M9 C Z
l8 a, j+ i7 {+ k; d
_PTC
& T5 S- i- ` @: `( n
. Y% @! g* {3 k d6 RProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
0 C5 d! J8 D5 k4 D: h3 ? 9 x/ c3 I& a# o
Name (_PTC, Package() 4 f( J& L' M" o2 b% e4 e6 g6 m0 C
{ & @: P& J+ U/ U) p
! z, x- `/ B- `2 v! m' N
ResourceTemplate(){Throttling_Control_Register},
1 H$ e# E- |7 P( M; B$ P$ E) W//Generic Register Descriptor / c" d3 }* G+ `$ t3 G
# X: U1 x' B# W" u3 jResourceTemplate(){Throttling_Status_Register}# b# K, ]$ S$ y
//Generic Register Descriptor 3 ~3 o2 f2 r8 M6 C& G ]" M
}) // End of _PTC! S9 J I M( I6 k: S2 u/ K8 a m
4 A0 ~) H0 w2 n- }
下述是一个sample code:" g' a- d5 s3 ~# U! s
) R* R* }& Q; d, K& E! M) i$ L
6 D% o6 Q& z9 b+ a
//0 m# E6 `" B9 i5 {1 G& x7 n1 @
6 M. Q) ?6 l' @8 Q, E' S& B& {// T-State Control/Status interface3 \# E j! B/ o) S, {( O
; `3 X' V( R& U5 z
//
/ c0 b! F T2 o* m* P$ W
. [3 o7 K4 h/ N- M$ [Method(_PTC, 0)
8 K1 V: L3 [. s) B2 K# `' C& Z4 f9 I* d; x
{) J$ n0 E7 t, h, Q
. Z `( Z5 C, j; X; E
//
# O5 E( R) ^$ {4 ]+ U6 L: r! R5 K2 t0 Y8 b7 y
// IF OSPM is capable of direct access to MSR
% }2 ~; r e( ?2 e1 k9 F5 o' J" u3 V
9 a* V: G, W* O/ B3 v' ~+ L* U//7 S. R9 Y0 D/ I# S0 @
Report MSR interface
6 W3 q8 ^( _! `" R
. j( }) n7 I9 ^, q6 E9 V' m// ELSE
. E' T% J i5 Y ^
7 I3 `6 o6 }# x0 O- B9 f, ~//
8 Q: ?3 i2 h G [' h2 B% S0 CReport I/O interface4 G2 y5 B1 j. @* c6 A1 y
4 j8 ]! I0 v! t8 d0 I6 V//
2 |7 [$ n( M! E- u9 w; H3 U! v6 X3 O9 |$ ]
//
: k8 s6 u0 b" K1 n+ qPDCx[2] = OSPM is capable of direct access to On
5 O/ c% ?0 E* f" {' }/ A6 C6 T/ l: u* k) H: E) W' h2 n5 A! r
//. p+ l5 u& }. L+ H" k
Demand throttling MSR4 w3 ?* l! g, n
N3 F1 m8 ~% m0 r//
" ]" q/ X6 V( v' Y6 n: F, s9 r
. ~: z4 Y( b* y! D) _" GIf(And(PDC0, 0x0004)) {2 m0 e" j, J7 t, l
! G" Y& ~' g1 s/ D& u, i9 u# r
Return(Package() {& r4 z, G2 m/ j7 g
) p$ P5 ], Q1 w* SResourceTemplate(){Register(FFixedHW, 0, 0, 0)},) q( {7 R# v& h2 E4 f! u5 ^
% L# _* g8 U% g9 v
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
' k4 V6 m" T3 S9 j$ L! Y
$ S R. {8 ]$ e+ A})$ p$ m8 c9 Z7 `# a! h! l4 x
4 x8 E, R4 r: b2 h! n* {
}( M% t [7 Z9 Q$ @; _9 y
% j# w0 q1 q/ y% ]- e2 E5 `' |Return(Package() {
+ F; F; t( @: T; O7 G U x, Z
$ l9 t/ T3 _* G! m4 u4 JResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},9 r1 l: V! L1 ~- ~3 M1 ^
: B P/ A5 G3 e: O s
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
! |9 z, G1 l7 t) t6 K- P: c3 a% R$ _9 F: P
})
: Y/ c3 ^( F- l2 [+ W4 D- U8 j+ Q
}$ D$ Y* w0 v6 G# @
* Y0 c, d O+ L D" T# [7 K- G) R. v. z* N
( b4 Q% o+ e& O* C) p. Q
l9 P( g0 s* ~. y
_TSS7 n+ D: U5 j, ?# E( ?& ?5 D
- o* y1 ?$ X7 x% u: I) K# l
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:2 R' A: f3 }$ |8 c3 O. j
Name (_TSS, Package() ) B3 | \+ I& O. i, C u# k' l* r' b
{
0 J" R. l" \4 l8 i// Field Name4 @: @6 C, G- { O" B8 n, u
Field Type
, }- N6 u8 Z. d$ v
/ {: S e6 D( g0 C! u0 l$ z6 }
& J0 K6 I* T$ s- _' t( R
Package ()
3 ?5 ~$ `8 C* i3 o' @- R" h& C7 U// Throttle State 0 Definition – T0
7 K, c6 b' F. u
* [. v4 W; {! E* W4 V" z5 U{
* C4 O$ c: k8 W3 i, R1 H3 c4 r, d! U
: v; Y# F, O$ T3 U& {8 s- k4 K3 R
FreqPercentageOfMaximum,. B+ r' o' J# ~6 t3 R: p, I
// DWordConst 2 R0 Q6 S; @7 b; ~
! `+ l2 b, y, f, tPower,
# ^: m5 u, b' f$ F+ p// DWordConst 9 {( a8 t. x: l( u) Y
3 m' [: x; L; V( R2 P2 V* T/ z
TransitionLatency,) J2 A4 z) J* R9 O
// DWordConst
@$ O# @; |( p9 ?" V& f3 [6 \& w o0 Q- m* i9 g- C
Control,6 M/ D( G# K, D& p* x/ e, Y- n
// DWordConst ! u) J; o) S! T+ o' m G# D0 N
1 N: h+ i. {2 D
Status
$ }* i, Q" L1 ~& e// DWordConst
9 g8 \5 t3 s+ o9 l0 e4 `},: T3 b" R0 J# T, F& f
……0 q% B' a% X1 q
}
( {# G) j9 D; n8 [2 \! U0 ?* g8 f. Y. {" w3 v0 ]! ?- ^% a' h2 z
Example code 如下所示:
4 \5 ^* o0 D+ y6 \+ g7 l5 V: W H; t* A8 T: H/ b2 B, a* d
Method(_TSS, 0)2 }$ G9 E& l' s3 o
( c& {3 e' d% h- f% p1 Y$ b/ m3 U
{2 a: S9 H- C$ k, o' j+ t
2 n+ u% Q# |! W; R5 XPackage(){100, 1000, 0, 0x00, 0},
& l; Z1 w/ }$ @1 w. [( V {, ^2 _+ m4 ~) k
Package(){ 88,
; N% K# V ?" F" }875, 0, 0x1E, 0},
- O* o7 | }! p$ e$ ]+ f6 X4 i
* ]( I! Y9 Q0 D: M9 \9 KPackage(){ 75,
4 G7 f+ N# j$ z3 R750, 0, 0x1C, 0},/ u7 q X0 @3 u) M% O7 l$ Q6 W G$ ]
8 C7 Q* E" E8 p' x
Package(){ 63,) p8 `: V! D# M4 ~8 [
625, 0, 0x1A, 0},
0 W* N/ {4 E" S* s$ g( y9 [
2 P( o) R6 b, r1 X o% u6 {5 fPackage(){ 50,
6 h; c5 `. u3 B5 h' L500, 0, 0x18, 0},
3 E N0 w$ Z5 O" G& P! u5 G: d Y+ x) w5 z6 h
Package(){ 38,
1 n* X6 h: ]& a- w" L, ?375, 0, 0x16, 0},
( u: O! a5 K: |
4 Y+ G% p# X5 ]4 E: \7 \7 WPackage(){ 25,- B! e2 m/ v/ Q
250, 0, 0x14, 0},
% p7 M* }: ^" V' X4 O+ p7 F/ S! D
. Y0 X( c$ ?$ u) i8 y0 RPackage(){ 13,
' E6 g. T$ ^$ r/ X8 L( r2 h125, 0, 0x12, 0}/ ]2 C: }3 s( m2 N, _
7 l4 [, i8 C) Z/ o( E( @5 u4 [) d
}( e5 w- O/ g8 }7 v( {
0 D9 M! _! c) ~3 F4 V* V6 t& ^+ f X! d
l
1 X& M3 O* r3 i0 @_TPC+ {- B6 f: c( X. w* R' Z
8 _- Y+ |3 m) X g0 `! H& NThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。1 x* q, i5 N6 Z! }$ i( r$ u
& U g8 P1 [5 k! ]5 ]9 J
l
7 p/ c- U: ~7 {0 E_TSD* c1 a" B2 X, }) j
/ C: n! ]5 S2 g p2 l' \/ yT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:9 L% C: `- i! g
5 f9 l' k8 \2 VName (_TSD, Package()
, `. g/ I( k* F1 |' q8 M/ n: p5 j$ ~6 b6 s# s+ {, h
{
) m; V1 g& p* }2 b2 ]1 V, i ]# }5 T% H) M3 [ n
Package(){5, 0, 0, 0xFD, 2}$ K/ @, f- J' f( \% Y6 W; B/ v$ V( A
// 5 entries, Revision 0, Domain 0, OSPM 2 g2 k) Z! O2 b4 @. p5 [, W
Coordinate, 2 Procs $ C6 x1 e4 u3 n( P: b
( o, R5 n/ l3 h
) o0 k- C8 V( ?}) // End of _TSD object2 K; r7 @: `9 I! u4 z
( U5 z7 ~" t/ G
REFF:6 W+ Z, U. M" B+ b
1.
; Z' J: D1 f/ {/ g, W4 V" y. Z0 eACPI Spec 3.0: y6 e3 }8 B- m
2.& y$ j/ v( [4 a' H4 s4 H$ f& C% j
Intel Processor vendor-Specific ACPI
/ r* H/ @/ B5 b ^ 2 s# n2 v; B* `6 |3 P/ h, J. s r$ h
- v- g/ L6 [+ w, I! ?$ U. J
That’s all!
' \$ h$ J( i2 K4 @
9 W, g7 n, w2 c' a. W; g0 BPeter
0 g0 e1 _: ^6 q# ^( b4 D( c
8 z5 T6 s( L5 v9 ~7 H2010/10/01 |
|