|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
- F* Y t; S. N
1 C5 n8 B+ z ^2 p* I7 }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工作时间的占空比)的方式# I# o8 }$ o! j& z
,影响系统的功耗和温度。
; S4 c. }- s# i/ V5 y3 _ $ `3 D1 m# ?/ U* I' T' w6 O
2. T-state Control
, z2 Y" y7 N5 z3 s
, e- H6 A. |- Q% G1 C1)
0 X; K. }+ V6 l0 D2 t8 g" OMSR Based Control
0 b5 f, Z8 Q% M
) U0 Y5 r+ y5 A- ?$ O8 lBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
) b7 E# }% v4 r& s+ n5 o
% g8 _+ F7 N4 i7 x2)- U2 B: O9 K7 k V5 p- [
I/O Based Control0 n p+ }* u8 E8 M ^/ \
; [! x4 k1 S2 v2 d; U/ L
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。0 X( x5 h# ]) o2 B5 h/ e
) b. e/ G# b5 h5 f- [) {2 Q( g3)
6 z2 o+ F: C* q$ i* SACPI Structure For P-state
0 e' k+ M# G$ z3 U' d1 fl. A k& N3 Q. S5 q; [
_PTC) s1 |' r. L3 K Q# K/ t4 f
; x1 T b) i/ S3 X" |Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
& G' @/ P. M0 o4 o Y9 Q 6 O- M. Q% m) t+ A; P
Name (_PTC, Package() 4 @5 K+ {4 H3 R; x# m
{
6 a2 q9 V; M+ S5 V
4 N }4 `+ C L3 } `- W$ I) AResourceTemplate(){Throttling_Control_Register},
- q9 E. q5 d+ C- f" }) E$ ]5 O) f//Generic Register Descriptor 1 H. @( U4 D& W0 c
/ b+ H" _5 [4 F `1 C) I. CResourceTemplate(){Throttling_Status_Register}
! P6 I+ A, |& V% ?0 U- s//Generic Register Descriptor
9 u6 O; s, |# K' a8 h}) // End of _PTC
5 b( U* q5 w7 ~. Z
2 d2 c0 |0 y3 w下述是一个sample code:7 [- X, k' V% |0 t3 U O8 q2 P+ L, Q
8 i" }: R- m/ y% S6 d6 d5 `3 Q- }1 w6 E# O
//4 x1 I" r/ c W3 V3 o: b* Q0 U9 P
- \, _* y9 `0 K6 D& E- k' @. T// T-State Control/Status interface
$ l. U9 z |6 `3 X$ M" {: {5 t$ [! f! B& A* o& F
//( Q2 U( a* ^/ j# B, w2 l, p$ g
, t% F/ d, Q% @3 R8 W' V# L C! PMethod(_PTC, 0)
$ g8 ?9 S) |" F9 ^: U% C, Z7 ^- R. j* p
- N! b0 B# X* v% V7 p% C{
- M7 w$ C2 X* u; o" s8 Y) O% S i2 \ }! u6 J: W, ?) P
//
; {. o, G( H8 p; x! T% U1 I+ Q: F5 X E8 L m+ H/ ?
// IF OSPM is capable of direct access to MSR
* S8 G" H7 x0 }7 K
/ v% O6 h' w8 {7 }9 H//
& n3 ?1 d* R% X% i4 d$ nReport MSR interface
" Q& p) D* Y7 Q. Y, p. p& h0 U1 U/ `5 n: N$ }! M# o
// ELSE' D r1 K7 |- a9 v, J* `" c) `1 W
' J J' g1 z: s$ j4 q, `9 Z( o
//
5 M& n8 S7 r# _, k2 f. I1 RReport I/O interface- J6 e( u$ v# e7 S4 B; Q6 L
^4 y+ f1 |" {* H% w9 `& l//" A/ P/ O. z C# \& X
9 g. J# a6 Z+ h) x3 d* L T
/// l" j+ V" @! u
PDCx[2] = OSPM is capable of direct access to On
( g! o a- Q( ^) D& e2 R7 c/ q! a
/ ^! C7 C# `6 z" `& j4 u K//+ ~4 B* P, N% x! w8 B2 b [0 f* J1 K
Demand throttling MSR% S. W% V7 A3 X1 o6 @1 k
& D6 @$ s( w- H) c6 Y- A' t//
) q. f! r0 h- F0 R6 m5 p' g8 w! v5 b2 }9 {( P
If(And(PDC0, 0x0004)) {
( R4 s/ l7 {* L9 s' W4 C9 P g5 X' l, |+ B5 x9 F: D
Return(Package() {3 {- Z6 M/ ^& c5 B9 D/ v, P
+ W: o, E/ t2 C% E0 kResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
* L6 a9 G1 C6 }" D
; z; s6 a8 ^6 M9 _& OResourceTemplate(){Register(FFixedHW, 0, 0, 0)}8 I( ^! T0 D# ?( _; M/ T& |
. s) ~+ E% Q5 ^0 _) d& r})
2 J* m/ k- t- d! c
$ ^- I& n1 K+ M+ j6 R- Y}1 S- o! j, R9 {! \6 p
/ p" T7 R" x% m; XReturn(Package() {( O8 C( x" E2 A5 ?1 K
& @" u0 c2 s" A$ f0 ? t
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},3 ^* `; }5 j5 e) X2 e5 m( r6 e3 B
) m8 |9 N9 w7 ~" A, |" D0 N% Y: t* mResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}2 g8 w' \, A9 }' J! v
/ c1 L1 u3 ^: H; C& w0 _})
j; x) p5 O1 w+ |2 |
6 g( @9 i$ J& d/ R( q& k}% u6 L! Q8 G1 G* G! Q
# J: F9 B7 } I
8 _$ N# b* Z% S+ J7 O2 K+ k+ |. R3 P4 y9 a2 E
l! L2 s/ s9 Z- H$ d+ Q' o
_TSS8 _3 t& O9 t0 M4 k* v- u
& y* E0 ?4 c9 v; [: G0 m+ m
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:4 [, J D" D5 @9 S* n4 l
Name (_TSS, Package() ( \4 N" y! W. l- c1 ^: d
{8 j: H1 h5 f; R3 h2 A+ o- i
// Field Name
. d; Q1 y1 k' s- ?0 X- ^9 `" eField Type $ ~$ c h% M( R) _) ~7 m& ?5 V I! w
. t C6 g) U. H# v/ p
' r U& j, a0 Z3 p6 j5 W
% y. I0 J3 |( ^- Q3 ~9 j1 p; v2 xPackage ()9 _. H; Q# X7 T3 `+ a6 p/ r4 Y. e+ I
// Throttle State 0 Definition – T0
) o+ }0 B a5 |. L" d
' I& X& d, _4 p{" A- z1 d6 b; K+ A' L6 [% J) i" s0 S
& o. H* ^ c* [
8 _9 f- d/ k5 Q$ M v+ y( f, OFreqPercentageOfMaximum,7 Q8 w# r, h8 V& T, S
// DWordConst
6 S' q, D+ _2 ]3 z$ @& S! G: C, h4 r; w
Power,1 Y0 B' N# s. o4 z
// DWordConst , j" a. ^8 x+ J+ X( i$ ^& k" l3 |
8 i' W1 k4 u) T2 [) W5 |# \TransitionLatency,
3 T" `+ R6 L5 h% z8 H0 J// DWordConst
# m' d O& j* R/ N# t
6 I2 X# `( l0 _" x XControl,
2 J9 q9 b/ g3 T1 T; R- d// DWordConst 4 `# M% v) n8 \; s
3 Z% }1 J" V8 J# _5 I
Status
2 g5 G, t/ I( ~+ T: X// DWordConst 0 r2 p8 q* @0 T& M5 e0 V; r2 q
},
# `/ k+ L {+ k9 C7 S, N' }……' I6 V3 M# Z+ @6 ~7 U) S( ^
}
; M5 i0 k: Q3 j, J' l" S4 P
3 l$ Z2 ?/ M3 U7 z9 d: B. }8 QExample code 如下所示:$ V" E. n. M( [# H8 S- B. f
2 s* v* r1 ^3 ~$ z3 DMethod(_TSS, 0). s3 x' R7 A9 t/ k, N
0 ]: k7 n5 y. b; I! l/ f
{
! J! e) g9 f/ |* X. p- Z2 h3 ?8 D0 N1 B) }0 _
Package(){100, 1000, 0, 0x00, 0},
$ Z( y2 h5 x9 k& r0 w$ v: ~7 W: e5 m9 m# U
Package(){ 88,
) l2 V3 x) e7 k1 f" p875, 0, 0x1E, 0},
6 s3 q( I; i" K) M9 P! B! O
$ R: A) B+ @4 W2 [; n6 kPackage(){ 75,8 g" }) q. r* O! V" k5 ^- {4 J1 n
750, 0, 0x1C, 0},; N# }9 K: {% h8 k5 S2 {
% M! K7 W7 {" ]( ^8 L, r
Package(){ 63,
( {( A6 b6 ?% Z$ d# u625, 0, 0x1A, 0},* ^% e- I1 x5 t! c: r, G) o
1 W# `9 J2 K5 a) h2 z# J8 m* O$ y
Package(){ 50,
# R* |' W! m+ o/ Q500, 0, 0x18, 0},% t! b, H4 u5 ]; k4 W3 Q/ e; E
7 U; b1 z2 `. O3 b! u* V
Package(){ 38,
" z' r+ p7 `. B7 l& b# r375, 0, 0x16, 0},
, K1 }6 c; A# G3 x& E) F: k' Z+ T/ n
Package(){ 25,3 {1 z- {# ~- `) @
250, 0, 0x14, 0},
; B/ }5 g! z k5 e2 r/ N; K0 u, x- _& N. h* M
Package(){ 13,
, _# E9 b; ^/ b125, 0, 0x12, 0}
c# G$ N: d2 \% @& i% V' p a C% J
}
+ Q2 @ P! w5 }. N+ @0 a: y, m+ e+ ]; I0 i
6 B- i4 Z( u: }: m
l; T0 r7 y+ M$ B
_TPC
4 b& \* H/ B( |1 u: Z* l 2 y# H2 W- o: I. o% K
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。/ m$ [0 v' d' t, T5 I5 }4 B
) B1 i) Z# l3 X2 p( u
l
/ C& r2 k! q; U$ D7 h_TSD3 w# x6 L" M7 s1 a
# Q2 K/ t& n$ P# }& ^/ O8 F n, h
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:1 ~; P, T4 [& s1 ~' |) }
! i1 d- K# c# ]6 h9 b7 H# B, tName (_TSD, Package()
9 Y! I/ n2 W4 O# F# a, E3 K. J+ s+ s' S$ t/ y* w h5 V' c
{
. q2 |- {; W ? Z# z& q7 X# [# M. u: v6 ~* g4 j
Package(){5, 0, 0, 0xFD, 2}& B1 R& R3 z, j: ~6 N+ W
// 5 entries, Revision 0, Domain 0, OSPM
7 j9 U7 s) L1 K# {! z; v/ YCoordinate, 2 Procs
8 m! o' t7 @& E3 r/ p
4 K& r. h$ w# |% L2 P+ T& e! V5 G; B. i5 b r0 i
}) // End of _TSD object
5 ^- Y2 S" M- Q$ i & @; c7 Z' \3 } _* T' X/ D7 O
REFF:
2 o2 @4 w8 w5 `% ^( S1.
+ j6 }& B2 t9 h4 r! AACPI Spec 3.0: U* P# Y# N2 V3 E2 Z1 @/ I
2.
* M9 G: j5 U- Z* p1 A) AIntel Processor vendor-Specific ACPI( \0 m" l" o M' ]6 R
, `+ e' u: C% y' U5 c; G* W$ B
) M% a* O$ Z5 WThat’s all!
) S9 C% ~8 u- ^8 Y
) d! y4 Z) \3 f7 J! xPeter
* J/ Q. s$ v7 G& i4 l( s 5 Y8 C+ y3 M( I% k# o/ _
2010/10/01 |
|