|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview6 [2 J! ]% T) _, M" y8 e8 O. }
& v0 v4 I% ?6 ~8 w( N4 @1 b" ]
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工作时间的占空比)的方式
% G; w) ?# S% ],影响系统的功耗和温度。7 Q8 P, {& C7 H3 N( ]7 I% g
H" j0 e) |, y' q9 k) ]* H; s9 i6 k
2. T-state Control& O* p, p$ z' |7 J7 T6 {6 P5 d
0 M* X5 C9 g, b7 O. D
1)
6 x- ~6 B% j6 Y! {MSR Based Control3 S. V& _/ q# Y: D& k. e1 d ]
4 i5 a4 ]8 y3 c2 L* `1 P9 G3 E3 `
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
4 E& ~5 Z7 o' h/ Q3 B # Q+ k% i6 J' R2 }1 J: g+ f
2) o! p5 A1 F$ a
I/O Based Control) @( E9 }' w* r+ B3 L2 |+ T) W9 i
. {4 j8 Y4 g* l2 Y0 C7 a2 M+ g
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。+ q* v# T2 W: y, b9 W. s9 i. {
" J% Q4 ]. Y# B' }7 o0 s; |3); l' C6 s# U/ z
ACPI Structure For P-state
5 L2 Y' Z- g- q. s7 u" w" |4 wl
9 o3 h* K+ N2 u6 E2 ~5 D_PTC
' l: Z) ~' Z6 \ / `9 ^' z8 q7 G& u7 k
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:& N) ]- F6 x* T4 ^
' k7 a8 }! S$ i+ l- BName (_PTC, Package() 1 }& U+ ^/ x; b5 z
{
7 f7 q- X H7 l V7 P
$ h; x. K$ S9 K# V5 S4 l" i% IResourceTemplate(){Throttling_Control_Register},
) `2 [# t" b4 e \0 O//Generic Register Descriptor s, E6 U+ b6 c" W
) G% a3 `9 w% T; I# h5 _ResourceTemplate(){Throttling_Status_Register}
% ^" @5 p+ A4 L% E1 N4 n' j//Generic Register Descriptor 1 _! U. U& M3 B2 Q: z3 B
}) // End of _PTC
- B) |7 X- e2 p: C7 M1 y# ~6 }
4 ? d0 O9 e5 E4 O+ B* w下述是一个sample code:
' B+ {6 _# g1 U0 z+ J0 z C: t6 M! U. b
& p/ @5 Y6 J/ a. T//
( X1 H/ J/ u! Q8 I8 Y/ b) R6 c+ G1 [) b5 \" v3 P) X$ ^0 p! Z
// T-State Control/Status interface+ U, c6 _# d: f' d8 g
. W: I8 E& K. k0 ]' O& a$ x
//3 D: `4 i: N3 C8 w
/ s+ q8 s, \9 c1 T, h) MMethod(_PTC, 0)
: _$ A) l$ Z2 b0 C, l, i3 }4 o% Q. D- \6 n
{
" ~1 X+ _, a( o" N6 _! I ?0 j0 }6 n& v( ]
//
5 m8 l, d0 O5 ?+ v8 W7 `+ G. y! a6 z9 j( y7 a; w+ x$ v2 `" `
// IF OSPM is capable of direct access to MSR: R3 W5 v! i* {' `8 c- x; L: c
) U1 ?& r! e3 Y1 o* J3 ^! H. S
//( ~* g, \3 p. k7 K" \7 w
Report MSR interface
3 G" K# P9 z( ]3 W( [: L2 \
0 g; ^3 `6 ^' O8 U' O& `// ELSE9 U8 Q' M$ M# `! E+ t
7 Z+ {. W o+ |: C1 Z" ?//
, `/ D* t' O* ~- V: |* q; YReport I/O interface
% D5 o+ i0 Q* d, J9 Z
5 |' d5 {0 Q$ v3 e) I//: Y5 s, I: @* V
' y5 p6 j# p4 O. Z4 ?: _//, P3 J& |6 h5 N
PDCx[2] = OSPM is capable of direct access to On4 [9 W# G& W7 C! v- N( a
: D" A! m5 i4 g' T' Q
//5 E8 a, C5 a; L, S8 g% s1 f
Demand throttling MSR
( R% W% F4 B; T8 K0 Q
& a, X" w0 [1 _0 F//5 \; u/ t7 I/ ^# A9 Z
- W- Q4 W+ q" \% Y; ]/ f
If(And(PDC0, 0x0004)) {, N" z5 R1 T8 V
, u7 r, a0 [8 |( T6 r X& V6 yReturn(Package() {" m/ N: R- Z# I- X9 m( h% x9 g! m
n" d( p B' p& x4 m
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
1 b' ~( [( L5 d# X4 E# K9 [: K6 z; u: |' Q
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}+ g; h+ B$ I+ X, g, V3 d
' x% q" c2 {1 v/ v. ?
})7 g) \7 P. b" q4 b& I1 _0 b
/ Z* D+ D& t4 @" Q( l# z' [
}* F! S0 E$ H" [$ H7 U9 o" d
6 W! t& e& B+ w# kReturn(Package() {
3 ?4 L+ p( m. O0 y3 f( ?' W! ?$ h' E. K. _1 ~# {# N
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},( s+ I& j+ T; Z- B( y: F
5 U) ?) k* v( x4 g1 g' v
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}3 o1 H+ L4 I3 N" e! A
# Y( O5 H- P& k; L})
$ ^5 H" |" r. ^' U1 @' x# k5 m0 S# D B5 x* ?1 k! n
}
' O8 z+ I {1 F1 q5 R0 q w& T- v( U- z+ c2 e1 m9 L
0 T0 q" T5 Y* t% }9 z
2 u6 I# _& P$ Z. s, l& gl
1 L' E9 u& U. s8 m2 e! o_TSS$ K# n! V. O1 S* ?
+ H) X- t6 C" G: E2 iThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:( D! {* I$ E; p
Name (_TSS, Package()
$ s% n) F' ?* N, p{
' P2 v! m1 [& c. z$ d/ k4 U! E// Field Name
B! X) w* n' f. p9 GField Type
& C: X4 ^4 U! x, i, t
7 I, ]/ q9 \4 }% n- q/ Y
7 Y9 r# [# \- T2 e. M6 t4 G
# W1 R& R9 V! D! T1 M8 H J0 B7 BPackage ()6 w3 }8 u: G w: i& `1 ^6 j+ t
// Throttle State 0 Definition – T0 5 e8 z4 x! u) U# G+ o
( H9 J) }& p7 T4 t N: o' D% t3 \6 }{/ A8 S% V3 E6 g) U, b. d
' \( e( X9 O3 O6 _0 q) T6 W. Q
FreqPercentageOfMaximum,: P* K1 x0 O! x' K& f7 n5 N
// DWordConst ( f( F6 k4 @+ r7 a, i% t
6 j+ `( M2 E/ y) yPower,$ A+ n- T1 G: z! p8 s' h' e3 W
// DWordConst
* f' R2 I6 V' t, G0 W8 f# J( m& x" v* x; k8 e
TransitionLatency,
7 p( e- ~+ d+ G8 M% s) p// DWordConst 5 L# I" G) ?+ J @7 }; Z8 U
3 g* j3 S7 n2 k
Control,9 H; K% T* L8 K; Z/ }9 J
// DWordConst
g- v1 O4 q8 U+ m- u* e
& Q$ ]2 s" u' R1 ]Status; v. \+ a% _# Y& @$ N
// DWordConst 7 T/ O4 `0 A( T2 _6 v2 y
},, N' d" B9 R7 {; N2 X h
…… h% |% w! \* I$ W/ B3 {+ g6 ~; o
}
' ?2 D9 F; K! O% {9 i) b7 N7 S* L8 f0 \
Example code 如下所示:& l: J- K- l2 ]/ d3 _
5 `6 J6 H4 f( G. ^$ \Method(_TSS, 0)5 P. f7 |" c* C
+ q9 s6 a: _ S4 F) m
{
7 ^1 x; |% W% @0 e
. z6 D% @5 M; g0 _Package(){100, 1000, 0, 0x00, 0},
1 f8 ?/ Q, m- h$ O7 I) z8 E% U3 G8 |" B$ u; m: Y
Package(){ 88,9 `# ~ Z" |" ]3 Y. Q
875, 0, 0x1E, 0},
! s- u- f* X7 q
0 Q7 W* T- s4 d! bPackage(){ 75,
7 M+ `$ X* x0 X. o3 B750, 0, 0x1C, 0},+ d* s; C y [ g
" V6 a! C2 d. J6 `+ b
Package(){ 63,
9 z' t. F( L0 {5 F8 r625, 0, 0x1A, 0},
1 j7 a K5 d. ^$ C- g. K$ {9 W
% l1 P' T' j; V( f. D; I" o3 {. |. wPackage(){ 50,
4 ~& N, q2 s/ i: }- U/ {500, 0, 0x18, 0},1 r7 m2 w7 n3 w5 d
' f: j* m$ \3 W7 FPackage(){ 38,
' ~9 ^( B' Z0 C- a" K: C3 N$ l5 ?: Q375, 0, 0x16, 0},
8 @% z" A3 M, n# G+ Q" w
) A: Q" w( K( z$ f- R0 [+ nPackage(){ 25,
+ S. |, s* N: E( r; u, O5 h [# H250, 0, 0x14, 0},$ w, \1 w4 z" P
- X9 c p8 w1 OPackage(){ 13,
' A6 {/ Z% { a1 E125, 0, 0x12, 0}
% J+ x: m5 G. h& n* p `! h7 ?$ \* p) x9 E0 g8 }
}
7 ~! _% b+ V0 w: C
# r$ @' [ k! w* b2 n* s. l E/ `; [
l
1 c" G2 G# b F- `- A: {_TPC9 Y& K% Q% _. a* i
$ z# I/ s7 P. f2 U; ~; tThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。0 {, u: o# l/ E* i3 F B
- M, P: O9 A) h! d; [+ O
l
% {3 U5 R) q; R, K" Q- [% V, r_TSD3 T9 f, J4 o! O) ^7 F# ^+ ?& u( D
! S: R- w. i5 x% }+ [2 x" I
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
, P4 R% P- w( m: p: B 6 [& ^: W: z! W+ r1 Z' s
Name (_TSD, Package() 5 y5 ]- C. ]0 V; j7 e
" D- O8 `7 Y; b! w! g
{ 5 L# v( B( z; b
) I. j y8 ~, A" iPackage(){5, 0, 0, 0xFD, 2}; e7 R$ _9 o% J* h% x( F
// 5 entries, Revision 0, Domain 0, OSPM ) d6 d. q/ h6 ~1 e5 e" ~& o$ D
Coordinate, 2 Procs
, p/ |6 \! R! e& @ q8 d* F$ N. Y( V' M
" o3 e7 n4 L( Q/ u
}) // End of _TSD object5 l. G5 w4 z m& v ^
( f0 L" ~" ^5 T5 T
REFF:
# A. _/ |3 O l# A: O1.
+ y" x8 c( [' @% [) ^+ `8 KACPI Spec 3.03 b' q! W& i1 X, x3 E! m
2.9 z5 y6 S$ |' j* \" E
Intel Processor vendor-Specific ACPI5 N6 L0 P$ S& k7 U! [& r& L
5 i/ t: U$ F+ m7 Y2 E/ n" r& P 3 ~ m) ?' {9 k8 f* \9 [% Y
That’s all!' r% t [2 }8 a/ H8 x
7 q# a! @- y: ^! b+ |) m
Peter
9 L' h2 p$ c4 {0 s0 R$ T) h. f ( C; `+ ]* j6 Y3 ]/ y
2010/10/01 |
|