|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview1 E; O; E d5 a0 S. D/ @
9 s* N5 @4 y1 |( |/ N( uCPU在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: K* \$ d& |8 c$ y,影响系统的功耗和温度。
& q! |; t, ]# f0 _# @; K0 H
4 j- B) U, [* D/ f9 }2. T-state Control8 f% Q- @; j6 N: e: j8 k
: F0 X: v# u: R1)
2 t; c8 ~, J- E' O% X: p. K; n1 \MSR Based Control
4 \1 f, i4 P8 Z! A
5 [: K) l( P3 w6 C1 sBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 $ ?7 C3 c! R2 J% e" y8 N. M
9 f# r' d0 r2 ?9 V/ _2)
- H" x7 d$ H/ l- {9 w! V* PI/O Based Control
% |5 r+ ^0 Y+ {2 Z( v# x : z3 F p7 F' J9 m5 f+ f
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。* S2 H: b& ]; B; @8 f
* L& t r! A/ t
3)
1 w3 U+ y% p, v5 a! X: R6 X7 nACPI Structure For P-state- i' \5 m- |6 k4 O6 D2 I, ~
l
3 J" ~' C0 U4 D8 b: S_PTC9 i3 M7 U8 E( L- G/ g P* K3 g
1 g5 g [9 F _" n7 i# P3 i
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:6 h. h& \# E* b. q" n/ K
5 _, e" I- m8 H" j$ k$ XName (_PTC, Package() % b4 _# w3 }0 z
{
" Z3 }8 v" n; k
# @. A. }- @" B8 `8 DResourceTemplate(){Throttling_Control_Register},0 P- {" }0 N1 @7 i6 ~* }4 l; K! v
//Generic Register Descriptor 5 W+ S) ?; u0 w# Q: P' y
5 U8 |: `# e- n5 |" \4 A: ~0 [' d0 X
ResourceTemplate(){Throttling_Status_Register} }- ~; l! c9 I: l/ l& ^+ p/ d6 a
//Generic Register Descriptor
; ?2 }' h3 T% X# K) Q a}) // End of _PTC
( o8 b m2 S. y ( b( X, S" @% h" x
下述是一个sample code:) i/ j8 X. V6 F6 f0 I6 P
0 [9 }1 a, C6 B# \9 v" C6 _1 a& M- K
, p, M8 Z" i/ z8 w* W6 f" u2 _
// ]2 }1 A; T$ i" a: i9 ~
$ i$ q+ Y) J6 g8 J// T-State Control/Status interface4 i* z8 S) j/ O2 C% Q
. C1 R& ^4 S, q) L6 U5 i//
+ E! V$ p& T; I0 A' o! i0 |$ p9 f' O+ ~+ g
Method(_PTC, 0)
7 I3 A, q" W& l+ {( H) {6 Q( P; R5 @7 R$ e& B* d+ [
{
# H6 ?8 ?7 N( q2 J5 @# c6 o
2 \/ I3 h7 w2 y3 k% G+ Q5 }* p//
6 n/ t6 p( `1 a+ g4 }/ B8 T* G) A: T: X/ @" a
// IF OSPM is capable of direct access to MSR0 o V4 \: M! J: ^2 ^8 z3 D) E$ o
+ m. _' {* g& R' k% E- |//5 U/ n5 F/ |) W/ e
Report MSR interface6 v0 d$ L _. I3 a2 ^
& n& {6 V5 N# ?& ~// ELSE5 v$ o% u+ W8 |6 z' E: c+ M4 l
2 Q0 V& j+ f6 J
//
& h" h& Z$ A/ E& r D- o! \$ fReport I/O interface( U0 {8 Q2 Z* L! x2 O) s( G* I0 J; Z
4 q' Y% Y8 }! e; S7 n# u//9 Y3 K0 a2 s, Z+ O+ F8 c$ Q
4 A h n R9 H+ A! ~0 G//
$ b9 m% t0 m7 c) t& h; rPDCx[2] = OSPM is capable of direct access to On$ s0 A/ w3 t# {) }5 b, n
$ @ M N; x$ U. G7 ?! @
//
2 b+ f% q: O2 L% B6 e: ?Demand throttling MSR2 @( ]9 ^; s9 P
1 w/ u5 u1 @( T: N! V' Y
//! l. t& S# l* o
% C5 p( \ i3 P; r8 s. I p
If(And(PDC0, 0x0004)) {
" A1 d- W1 Q: M; J: u6 ^ `# Y0 y: y# ^& F# k! o+ k
Return(Package() {
) d( `8 R5 B% S5 s" ^" o
/ E9 N4 [4 e+ z* u$ aResourceTemplate(){Register(FFixedHW, 0, 0, 0)},) k( K3 ?8 @3 `2 A
/ F. @0 q+ K% i) F3 l* f
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}5 L/ V! e5 ?8 {3 z4 j% o
$ K& a- ~7 M! e8 a9 g, S: C1 P})+ ?! `7 x4 X9 T
) T L9 K9 l8 [+ A
}
% ^1 ?5 C. U0 V! a4 t- V7 Z% q* S, k0 x4 @4 H! g* b
Return(Package() {
- _0 t( ^+ C# O6 w; I0 C: A( s
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
+ m1 Y2 U! }: ^" E1 Q3 s
$ Q, c7 j4 N, }6 K6 }ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
# g9 ^9 d8 A d. h$ k! ^4 @, d7 `8 ^4 y! K/ z
})
. t: O: { ]1 J/ z7 _! ]4 u' ?
& D( y2 @1 k# O0 v9 y' v}
, ~3 F/ n* u( F8 f9 M" R8 C1 ]" ^+ ~" |& r1 F
! {3 V! n+ P& ^; g0 o* R; q( b) L4 m! n1 {' x9 x5 _
l, K# f0 E9 a0 K( l& q4 I( S
_TSS0 U% @: q# b" s% ?6 ?
, G- q1 p7 A& r( w( i$ a& cThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
' ~' w* i& b5 SName (_TSS, Package()
7 N' E! C2 r5 O+ @2 v{+ b' S; E; i* o- ^/ o; @0 a
// Field Name
; L. V' d1 L) m6 c' ^Field Type
; ? S4 J* g) |) x! d, d* l0 H n% u
9 o% C6 n2 i& f- N2 B4 u+ ], d- D) [0 x
Package ()( P* v" S6 z) m1 t
// Throttle State 0 Definition – T0 3 h. m' j5 S' g4 ]- H+ \5 E; L5 ~
0 p8 I, g: @ M6 d& ^
{ y; G. A6 h5 p# n2 ^
w9 r4 r9 Q/ D
4 r5 c2 c2 u1 z' ]. I# m
FreqPercentageOfMaximum,( v" c( h4 z- z& ?+ R0 N
// DWordConst
& E, G0 ~; P' N. Y/ h
0 m) F) |: p, S! _) ?' Q B# KPower,
2 c0 z. g+ [6 b; a' L1 W5 Z// DWordConst
# [0 ~. T- j* p/ @2 m/ e
. x. l+ F0 s9 o7 w) a: lTransitionLatency," G2 t% F& D8 l% z% O7 V+ `0 P
// DWordConst 0 k4 }' |$ z& K, Y o3 [
" c, b5 }1 w5 \' i7 h( G1 |& }Control,/ Z4 P, A$ U$ `: H4 @, D$ p7 q* X; l
// DWordConst / p: y: K1 A9 d" y; q( |7 L2 V
4 o) n( S- i3 D6 ^' o0 PStatus9 p% n; q, P8 K5 n' ^8 J
// DWordConst
3 L- M7 C) Y8 ?" L},+ R9 Q6 [* K1 u8 ^ S
……
' \3 O3 M/ I) ?& Z1 S1 ^5 j}
9 g3 X7 S4 n0 B( j: S
% X, l& n& ] ^0 o" Y. ], s4 b) tExample code 如下所示:" B! y- _! W- e# }! ?
8 V& e! P# f! P, QMethod(_TSS, 0)6 a' _/ }$ a* u# h+ o! c2 m- ?
! C# L/ ]. F, V- k{
9 Y/ T( L$ O$ W& U8 _2 G8 o, ^% @
# \7 c7 ^( y3 L4 M2 H( e1 d$ |Package(){100, 1000, 0, 0x00, 0},
: W, n0 ^- d2 _& C! O" y9 M/ k* V4 e' F) G# P: C% A6 ]
Package(){ 88,' L4 f' h$ @& J' ]) v: M
875, 0, 0x1E, 0},
. M7 _# U0 Z/ A2 F' ^6 G2 @3 {$ n
3 N5 P8 k4 @( n( q0 ~2 `Package(){ 75,
0 j+ |" a' B+ h1 V; y, T750, 0, 0x1C, 0},
& }) Z6 {5 |: f T1 a) ~6 T) B
5 @9 |# V/ k3 b9 x' kPackage(){ 63,
9 z6 A5 U# C' ?! c+ y+ @625, 0, 0x1A, 0},
/ s$ G7 b! L& q' W% I, n+ V
9 y- A1 C6 S$ [+ hPackage(){ 50,
: j( }1 J. X) q1 n; I500, 0, 0x18, 0},+ r E8 T2 Y7 B# \
0 W- {0 F% D( QPackage(){ 38,
- a. o0 y( Q# s' i& m375, 0, 0x16, 0},
( k4 G; c3 A( J: ?$ X, q, Y! ^$ k. Q4 G
Package(){ 25,% e1 T) r9 R3 l& N) u
250, 0, 0x14, 0},
# p; ^3 D7 T4 z: J1 h. i. j
0 P1 @( |; t. x( @% G& ?Package(){ 13,5 K7 u* {1 p: ~5 `) K
125, 0, 0x12, 0}/ i& `) C2 Z9 G) V. Y
; c# H, \! ^. {; P) Z; i5 C0 E! J9 U}
1 }+ ~ \1 b5 }; J9 H* F K5 `' G' \; F$ w
7 j) d# W' K j5 e# u
l
& y5 H) p9 U* x/ |& q_TPC) P% Z' m# k3 K' @6 `
9 \" M" l& G+ g4 F# }- g- w' O
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。0 J1 \5 H: |) N* s, q) w: p k
) Q; b+ n1 c. _* Y8 M @. p* T! b* vl9 C0 m1 f: B0 a" d- V
_TSD% o. l8 q8 I6 t) x* o# j
m! X5 O4 _- M' ?5 N
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:# l) T' J; q% v# a
8 G9 B# L" W8 y: X2 u* e
Name (_TSD, Package()
7 Y" B. p, F+ u3 R* Z, [+ M# r% E0 E. p: P; ^: F. Q! e' Y
{
+ ~' V. B: g W7 o0 O5 k# s
% I. [ ?0 Z- X S! NPackage(){5, 0, 0, 0xFD, 2}$ @/ O3 `: _. y I; l8 a! h0 ]4 p
// 5 entries, Revision 0, Domain 0, OSPM # C% @1 f7 e4 R
Coordinate, 2 Procs " G5 Y; V6 @8 h5 K) O7 J( h
7 f2 I, j' h: } ~' A7 ?2 q' X6 e
& x2 {0 t' _* D& @}) // End of _TSD object$ n3 `/ @8 ]$ @4 s
( |4 l: r4 {6 b' U- ZREFF:
6 O. j5 H5 z+ Z6 Z1.
9 Q5 C6 ]9 O' R8 n3 rACPI Spec 3.0
& y0 w6 J9 u: I( k# H+ t+ R7 @2.. b4 P) h4 E3 Z& _8 R- i5 C6 ?
Intel Processor vendor-Specific ACPI
: u. b+ D* U X3 p5 t' ]0 s# { . \1 e3 q$ f8 Q! b! \4 k4 z
& h. f9 v9 r i1 m. f; H
That’s all!4 I2 v5 k2 J& [( \& b% `# g+ t" F+ ?
1 ~* z# T7 k# ]4 i/ s1 z* m
Peter- p& V- _% ~1 |# x
# L/ k% `% ^# W2010/10/01 |
|