|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview3 Z6 x- Q8 {7 }$ I" {, V8 U
& ^3 S4 d& M# H% qCPU在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 M/ r) Z5 {: {9 S
,影响系统的功耗和温度。
% S2 c* W- v9 K: \
L1 |& X/ [' I; {& p4 i F+ O2. T-state Control
/ C& \0 i: s' f- g: R $ r7 } d; R* E7 ` s6 b! W
1)7 J& a1 k% |" m6 D6 |( g. Y5 B
MSR Based Control o" b" Q o2 o; ?! g8 H! I
; i$ M0 q8 B) L! LBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
0 ?; }6 M& n. e; \5 d - S$ q* }7 \$ T* v+ [
2)
7 O5 `9 e/ Q2 ~8 @: W2 NI/O Based Control' ^6 ]) t- }/ ]- I3 x5 [+ I: B
% K2 J- e; |, t1 T; o+ u( A4 I2 s* T除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
: x q0 Y/ h) k5 d5 G4 f( E: ]5 B 8 ?) I( J. ]8 p
3)
* a! _" H7 k( r* Z+ w- L3 UACPI Structure For P-state
- ~0 r7 Q: }+ X4 h' gl
% i* I0 D, Z! q A% F$ l5 w& r_PTC
5 R" w$ z9 }7 M$ q ; g, _/ U2 l0 Z. R7 I, \" i2 \
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
6 B7 ?. I( k. S0 H' p# _: G* G! ]/ L 1 j$ ~$ k8 O& D
Name (_PTC, Package() . C/ k7 g4 l. t U. }! V) G
{ 0 H& `( O* x7 X4 u
6 h1 ]2 e5 c5 y+ S" `/ h
ResourceTemplate(){Throttling_Control_Register},+ |* n1 j4 k: @7 X/ V& h n
//Generic Register Descriptor
, [1 T; Y0 Q. R {1 d
0 Z9 ~, e0 w* |6 M$ IResourceTemplate(){Throttling_Status_Register}
, O) [! t6 T) e$ D; T# W//Generic Register Descriptor
9 x9 }. y& }& y5 {}) // End of _PTC9 }6 P+ Z+ e9 |: O/ z* B
' H/ S' x+ y* x& e0 V下述是一个sample code:
7 t9 s v% h$ Y* s
- E* \) Y/ ] S6 d8 H( ?$ [) n# U+ M2 e. x% I# \
//
p2 P$ c8 x- x$ q5 A' l3 }' z% g' ^1 T5 [7 F( @2 ]
// T-State Control/Status interface0 e3 \1 x/ D* Y- p8 W+ L1 P' O. J
0 f e" X! L6 E) h7 ]& U( u' }//
2 C" _) z4 E* X& x8 F# V
" Z& M" ]- d$ s5 v; f* i/ X9 eMethod(_PTC, 0)
* I3 a) k6 S$ i" m6 s# _' L& x/ E6 q$ l, R& D; R. b
{
# I4 T/ a! n& N1 L* p+ u2 q- L
' b* W6 B4 p D; B. j9 A//
& r7 Q& c4 [# _
$ B5 l: C8 D+ W) |// IF OSPM is capable of direct access to MSR
/ W7 C/ [; r$ K9 s: {& q; s: X5 s/ ? ~9 Q# s1 @5 x/ T2 f
//
, a. ]" _: m1 zReport MSR interface
: V# R; f) \% v. t# Y0 ]# h# G8 V. P/ H3 [! J9 }
// ELSE
7 O2 n" W' o8 @. h$ P% C U+ t8 t3 v0 y# t! Q4 Q
//
2 V$ N5 f, P2 l6 c& v5 xReport I/O interface* O! p. |& Y m5 q. `
7 M' r0 M7 X) D$ A//' f5 ?4 j7 O$ Q7 I- i
7 G3 z( h; p' [* |+ ?4 `
//
) d7 H6 z5 v+ l; f, o6 EPDCx[2] = OSPM is capable of direct access to On
8 {. m# ~4 G; ~: b9 F% t) N" b
3 v/ w; {' j/ i+ k+ j/ H! |//
/ `$ C, E% `/ O( @4 \+ ]Demand throttling MSR$ Z8 z t0 v7 I3 V# k% C# o
2 k+ j5 o2 R7 M6 Q j
//. o6 k$ P2 M, P. B4 X9 g. R
% S9 a! R7 H0 Q' WIf(And(PDC0, 0x0004)) {
/ ]/ {) X- X) b9 j6 E3 F8 N9 f8 J0 v$ j# h% Y* Q9 I, q) x
Return(Package() {. y. i. j: P$ q- a$ c- G7 ~
: l; r; c' s% N/ c. C; R
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},6 _. W, s$ x, u
' a/ [# b# R, G' D8 PResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
' L k1 k; T9 S: N i# r% n$ }# o. s5 u8 ]
}), Z5 H$ t% b! }) x# L* d' K
0 x( K" r' |3 ]$ D p. U$ t
}8 |9 d4 h/ s9 Y) [& ?; j: t4 V
' N* j1 O8 _ |5 M7 q, H; w& SReturn(Package() {
' c8 T, P& b2 ~% m0 m) \! r r) |! t+ V- m/ ]; J, q
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},# q0 t y: W; c5 o- ^- W
" L- F- |( x/ T: ?. aResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}# x3 f2 O; W5 {2 K/ S$ S
. [% q; _. `2 O0 d; o
})
a+ Y8 R0 g8 C* t M8 D8 b; n
1 {; H, D4 [( P3 t9 r/ }}
$ T, |7 h V/ d- Z
8 i5 h" ?6 n: | [. P- Y# W1 Q- j9 w! z1 k2 m: b
% I; o" H, n" y. B& _* el
6 n, N. E: h/ b3 h8 i: p) P0 N6 C_TSS8 ]/ K D' E( y. X3 z$ H( f
$ z2 m, G# S% f/ r! v3 a/ i ZThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:# m: F: Z* f1 L1 U0 q( v/ {
Name (_TSS, Package() # l6 a* ^: B1 C$ W; T
{: ?7 c5 X" q1 X' w+ q& g
// Field Name
8 B' F& r& F, C% Z6 i$ W8 W+ Q& EField Type
9 ]# u" ?$ \/ q" [+ y+ P( J
- O- m \- w. Z t6 g$ x
% G7 s; L" i; [1 f6 B
4 m% `( n$ Q, M% g* r4 RPackage ()& b8 M# X2 u) t' o8 S
// Throttle State 0 Definition – T0
& h5 t/ @+ Z1 e7 I. k2 w% N$ m6 }/ F3 N; N4 @; I& p5 r. C/ v
{9 T) o8 O' b5 I$ n4 d, h
0 E: y5 u, `' _0 j0 z
5 F) L" L0 V c
FreqPercentageOfMaximum,
& Z6 U1 p# @& h7 Q9 F// DWordConst
; j7 Z4 Y$ h8 J% T2 ` c/ ]: M8 _* Z4 V, G% t* J( e) T
Power,+ p- [$ x! L U7 B8 T( [9 T
// DWordConst
: ?# k6 N8 N, ?8 S: F8 r6 f- Y/ K
TransitionLatency,
9 a6 W0 F+ o& |// DWordConst ) K" \" c" I/ Z2 l
3 {" }; E/ e4 l7 e! R3 FControl," c4 D9 E+ ?# t# T0 o# n
// DWordConst & h! v* G) n' v, [( U
9 j8 [. }9 M0 g6 ~! P
Status
( I) f8 N/ s& O) g2 h// DWordConst , Y3 x- K* C% `5 Q1 A6 L; m
},' ^8 z1 j; z( o; G$ u/ t0 }. s8 S
……' i1 Q9 a8 X7 v! P# s+ [
} u) m9 E1 s, n: W; M' `7 S, h1 W* l
% Q7 M0 o' ~1 N
Example code 如下所示:
# w$ J, e- l- l7 u' A1 j9 M- O6 K7 c6 P8 g
Method(_TSS, 0)
& o+ \" x3 C) D% ~1 R+ R! K0 R, T) z
{
& s2 o. \1 ~, A& L0 K4 B- J3 l3 W- t/ p, U, t
Package(){100, 1000, 0, 0x00, 0}, j: Z5 `1 d8 w/ ^$ v h9 N
8 _+ f- f, G3 q
Package(){ 88,
! z/ c# k7 Q" C: q0 y7 ~875, 0, 0x1E, 0},5 L) W& |% b1 B0 ?- {8 Q
% K4 T/ A# x& x0 }
Package(){ 75,& j! h4 g, G6 C# g# a6 \ s+ i; Y
750, 0, 0x1C, 0},
5 r. i4 e/ E3 |1 ~0 I$ L/ t: g" P* B X% G: c' Z- ^$ B
Package(){ 63," U4 H! X6 G L% X# {
625, 0, 0x1A, 0},
/ s8 t2 U' G/ v0 z! X3 s
1 W. G' v; u1 F7 V7 g9 FPackage(){ 50,
6 C+ b+ e6 U$ D# I' Z5 }/ @500, 0, 0x18, 0},
' r* A$ U- t {' J, e4 o/ C! Z- w- s" ]: A
Package(){ 38,
7 W8 A' P; I! j375, 0, 0x16, 0},, m" q, K7 ?$ l k E9 S
% Y& b: }( f7 N
Package(){ 25,
# y/ Q/ U/ n. c250, 0, 0x14, 0},
~+ k1 B2 {" i1 W0 M
- Y$ M5 V! v ?8 k/ bPackage(){ 13,
% N7 W8 t- w/ k# K125, 0, 0x12, 0}
4 q7 |4 E3 f6 p% G) l \ U* T( ~7 C2 W3 B
}
; M6 O3 t0 E% V
6 g( U; }1 }6 ?) _' {$ q2 D" r5 u" V9 t
l# W7 y3 ]$ R- w9 F
_TPC G; D; I9 g+ U
% @0 [3 O" [% `: N3 b
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
& _( z2 B( c: d1 W: @+ z! |
. I; I- t0 K. l9 |# m) V$ ^1 R. vl
% T" {2 h3 }/ p! w_TSD8 w1 L8 y2 G) E" u3 c: v4 P
: w$ Q; u: L$ b/ E5 X* ZT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
. O0 U5 f% h2 |% z U$ S - R/ O( F* d: t# [" ]
Name (_TSD, Package() ( F3 q* s) p+ g5 Z8 Q& r' X
/ P" m+ L2 c+ O8 t1 w{ 9 x+ B" c* Q: a3 t
% I" m& N$ m; S! pPackage(){5, 0, 0, 0xFD, 2}
( }& f3 A. ^7 J- L' G- F// 5 entries, Revision 0, Domain 0, OSPM ; T4 R7 }! M3 ^: j2 l- x, F: K
Coordinate, 2 Procs
7 l: ?; H8 w& b* C; A
7 F* A( ? q9 i4 R8 g0 X, S1 N! a, ], P& t7 j
}) // End of _TSD object, C9 i$ j1 _' m1 J
3 w8 t, Z5 I, \' vREFF:
% y q' g& L- I3 M; N& \ k1.
/ m2 N. D8 d3 b. O! a3 t0 aACPI Spec 3.0
2 L$ }4 U% G: i8 \, a& f1 @. a. `2.
* L/ k" q( Z% t! N& jIntel Processor vendor-Specific ACPI) t* L- c! K; K6 o
& E0 O6 O' t8 }9 F- T2 S
: v V+ Q! J+ K* k' {" b- BThat’s all!# _2 R$ P5 q3 D/ u0 F! H: W
0 N" {9 J) ]) v: W. OPeter
/ Z" o; H! x% C, s9 D8 a* A
8 Q% q# Y: y8 o5 D- Z: J$ \3 Z2010/10/01 |
|