|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview3 A; e Z# O$ n# g4 z0 T B8 D1 r2 |
1 c2 G* W6 _9 N7 n5 U+ K& C# d0 C v
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工作时间的占空比)的方式, Y0 q% W6 V- j; F
,影响系统的功耗和温度。1 S# g1 P, X* a; e! e( K3 n
1 [: b0 k% v; O- e0 u: y- ~& ?
2. T-state Control
4 c! [8 X8 |* q; X& B2 H) ?" R
: ^6 b P6 m5 G8 W7 _$ f. t1)
, O1 u+ s4 |) A, N( O7 l. NMSR Based Control6 d* c; X8 B! t3 s
: ]( ~8 R7 ~, g) M" N6 @BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
3 ?3 g+ Q0 f) F- y$ O # C6 a5 j- {7 B: b: |- `7 Q' v. v
2)
7 J" _, B1 J1 ?" CI/O Based Control4 T; t4 c- H; q# `
" S4 r% K! U5 d% s
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
* C' [% U2 d+ L, L
) D; _* J) g; {6 D/ N$ d; \3)
' w' a% G0 r; o# e; QACPI Structure For P-state
3 o4 j' k; | `, O' T2 v7 ol5 s% V! J7 J" a. B* P: ]- Y9 I
_PTC$ }) U: ]9 v4 E& B" l% S
% G7 G$ y* D( E
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:- U9 O, _3 A& h
) U% s: ?. _; d7 V+ F% W8 N& [7 u
Name (_PTC, Package() $ T6 g/ C2 \4 u% \" s8 h4 E) g1 U. K
{
. T, e; e# i* _+ |! }5 O$ A% Q) r% K T9 t6 C
ResourceTemplate(){Throttling_Control_Register},
* _8 w( ~0 Q' Q p//Generic Register Descriptor 0 ?, p8 a- H2 I2 Z$ p. x
& p# v, W+ P% e& G
ResourceTemplate(){Throttling_Status_Register}& r2 H8 Q7 c3 q! Y' L" y2 Q) C
//Generic Register Descriptor
^+ X5 }- H3 @) f}) // End of _PTC2 r: V+ z" u, ~$ _) t
2 W6 z B8 ?) Y# w- W
下述是一个sample code:
" J [5 B$ d% ~/ R
8 {. }* e& P7 D- L0 C. T1 S
/ L, x' m! W/ V//* {4 S/ ~3 {( Q" j' L& \
) H+ b) {) L/ Z1 y( A5 {( A
// T-State Control/Status interface+ R- [3 F& L4 s5 h+ P
U0 L9 [& D* p$ r \//
( V) J) q2 O. E1 `" C3 P. T
5 R4 q& I% U& p+ r8 O! O# p; P; zMethod(_PTC, 0)
0 E1 n7 |; P" |( S% y6 ]/ t
) Y) Q7 y0 g& Z" k1 h( M{
2 [+ e. E4 O4 r6 J5 s3 l$ {3 M3 B+ M& c2 t: M4 H) _& _' E' F# E1 t1 M: C
//
) c6 f. ^4 Y1 s7 v; w6 L
% i, y' Q9 u" _; P5 c// IF OSPM is capable of direct access to MSR4 T' p7 ?2 S* v
/ d! ]! Y F: n# n$ e
//5 k8 E! @0 P5 I- w+ k( C5 V4 k0 e- x
Report MSR interface
7 e2 t. Q( U/ L H# h7 q* [; X5 A* ^, c: ^! w) ~
// ELSE2 r `; g: `' a6 |. j/ y
6 d; \3 }' a4 w//7 x* Y( k U X3 d, l
Report I/O interface
: E. r* m* C! t- y1 q" h2 ^
2 _5 n! h/ r/ K# g+ v6 Q0 X//+ Z* ^) C# M1 f. [
3 P9 V9 _) u8 q* Z( V
//9 v+ w$ H* d3 t; Z7 I# t. f4 m
PDCx[2] = OSPM is capable of direct access to On
( Z( j% f# h5 | F
2 h2 _" S. ]; G1 K! G//
|5 D- Z2 o+ {' g1 }& EDemand throttling MSR
5 U* O% c0 I0 l1 n" Q7 x
( H7 V" q q) T+ A8 m: T//! @& L4 Z# ~0 u5 i% i" Q9 B& i; T
# I n5 h9 L$ C( C5 }; q( xIf(And(PDC0, 0x0004)) {
; z' o2 T5 V0 E. ?6 h
9 D: O! A: R. X* e. PReturn(Package() {
- z. W1 g6 y3 c0 }5 [* _' ~" q, F- \: s5 f( L. M
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
+ Q. W6 N5 C8 R" t6 j* Y1 K* f2 B9 j- L) j7 T: X
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
& U9 Y; K; K9 j* N1 q5 y
* E% e1 o* L2 e- V})$ I( j+ a( P" g9 x* q. n; e: V7 f
8 D2 b) O2 U2 _, x& P
}
8 r W# S" [/ x, t- q# _( k- O3 t0 y
8 b7 w6 h$ x# X; s3 S/ FReturn(Package() {* k5 ?/ b2 n6 j' R9 P) R
+ q- @" H- S1 L. H' YResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}, U% j0 y6 e5 k- Z S* X [7 q$ z
B2 q6 V6 a" FResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}( f/ X2 }" I+ K, j) c( I
, h f1 S7 N# R, A. ?- U
})
6 O% @1 H* M2 e: t8 u- K2 j+ L l2 Q; j
}
" u6 ]( C1 D. M0 H( i' ~# D! ^3 r: s; K2 w. P: k. A+ K1 N
P/ F5 v0 ?1 w% | e2 P0 Y" n
3 E7 g0 R4 \) N
l
7 p, t4 s" o6 U% |" ?0 Y_TSS
9 y- x# Z# n9 T3 _ + O3 u% E' _" Y7 Y& K/ ~3 ]: o
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:0 @$ `5 V" c- z X
Name (_TSS, Package() 1 E& T1 K! W* X/ f' A
{% F- v1 V& N3 [6 w9 [" h
// Field Name1 h% ]) d4 Y$ z$ O \0 q% v
Field Type & ]+ f) Y; q: w: C
4 F6 ?- Z4 [7 f
7 p7 O9 C5 f# _2 a" [. t7 G8 C0 @- }. X: i: z
Package ()8 ?+ O: N; s( ]* \" {% K
// Throttle State 0 Definition – T0 4 w1 z9 N, ~' _2 s( o0 m
$ V# k& w& n. Z- E7 J E{
R* ^2 j1 W# l( G( f) A& p
; E- U! m! r- o# Q7 U. T
) y% d" ~, b1 \1 k! S9 R9 dFreqPercentageOfMaximum,
$ J0 ~% x2 Y; F* ?- d5 ]# j/ G! X% _6 m// DWordConst
\* Y$ ]! }# y4 u
?, }, p! R$ |( E9 }% w# J( U; M/ {, wPower,$ H; a2 R2 ~- V; W- z
// DWordConst ( S* ?% p- X/ B3 y! n" N) k- C$ y7 Z
; v0 v& ?) `* y7 n' cTransitionLatency,
$ ?& l! o/ D- h' ?& E// DWordConst : ]! y) L0 `+ h1 n3 S% J n
" c) ~/ R9 j( Z
Control,& X: E9 X |$ ^" |# P0 H# B
// DWordConst - r: A2 i6 P+ h1 o* v; D2 i
8 M5 ?9 o! P/ o+ W& d, X
Status
0 C, S! K9 C9 k! r, R" `// DWordConst
( @: J5 o+ Q; }5 W},9 E) ?# p8 X1 v5 D& k; ?
……
6 c1 B Z5 l0 Q: C0 L) t}& B5 W$ S: ~2 ]) d# X
G- x7 _8 Y6 b; k
Example code 如下所示:
3 w) K3 b8 Z+ E8 I: _+ c2 }& L
0 x$ \2 X. S' H2 P- d JMethod(_TSS, 0)
0 l) w2 Y. A2 M+ F+ R, C8 N- n
5 m6 ^9 C/ S! {8 b& u{& R4 S5 g3 B0 t0 g4 d: \3 S
, j2 ?+ G3 ]9 kPackage(){100, 1000, 0, 0x00, 0},/ N+ [ n o5 n
4 B6 l. K- v( w {Package(){ 88,' Y/ e _; s% h% m* S) s9 R3 L
875, 0, 0x1E, 0},
/ _( w0 f V) l+ M. Y' c0 c+ p) s, D5 b( E1 Z
Package(){ 75,+ l. ~8 h- {! i- D# O
750, 0, 0x1C, 0},/ G; @4 _( C( z9 f
3 \1 z: e" q% O4 Q
Package(){ 63,
: D2 B6 ~5 _ c3 x: g625, 0, 0x1A, 0}," K2 A5 W: N+ r4 z& l' o
( i8 Y! X+ u' H+ b( s9 u
Package(){ 50,
. j; h5 S) m- z/ ?( z- e500, 0, 0x18, 0},& U+ x4 J8 w6 F# k3 M4 m' ]+ }
: R3 i. m; ^' N6 q7 N& |8 R0 sPackage(){ 38,) F7 k2 ]6 z3 @/ J+ V
375, 0, 0x16, 0},
+ V" j- m+ m* B" N( L% c; i) ?( R! ^- a- _
Package(){ 25,5 `; z( [6 y: }* C
250, 0, 0x14, 0},
, a5 s0 W2 \6 W! J, f5 j9 j0 ]( F- I; m8 P) T# h! v2 Z
Package(){ 13,
_+ B- K& W. X& |125, 0, 0x12, 0}
: d5 s6 \2 E( Z9 c3 b, u
7 j* f7 q# S, {2 u8 C! l! g}6 Y: n% s6 ^ o
- T! @1 I$ c$ I% u! n
& ^) j, i& @% @, [' {9 c: X/ V
l2 W7 S1 \- S. l) ~+ M9 v K) D
_TPC# o3 x$ c7 q2 A* B- F) Y# S7 w3 Y
# \0 ?3 j( l# c. ~, k* L/ s9 b xThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
# z/ |$ c; d5 D ( s, }4 A, X6 ^6 o; ~ X* } p
l. I! r: W, |, U; j' ], L6 Q
_TSD# L" W5 G3 B# A$ l9 @
; ?5 f# E" G$ ?. W2 X
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:4 m+ K8 o# T2 J. [3 O0 h Q
0 q0 ^( m' a4 q& E% X1 t- ^) R
Name (_TSD, Package()
% @/ j$ U3 w9 T& h' `/ C. l+ {( z9 t+ \
{ 5 {4 D+ k" N$ a+ v2 W$ w; g$ f# Y; o
' D( Z6 Z j2 V' wPackage(){5, 0, 0, 0xFD, 2}6 n% @1 k, I$ W- P5 ^
// 5 entries, Revision 0, Domain 0, OSPM 9 p( M6 N, @% j, m7 }# p; Q5 R b7 Y
Coordinate, 2 Procs q3 t9 s8 X0 ?& s* |9 |8 Z) t+ k
$ s. j4 T- C: K' m% \' S0 p1 t. ]' J3 r f
}) // End of _TSD object
" E! d$ U5 E4 j) N8 d9 g g
, }3 [, P- t8 zREFF:
/ D+ ^8 h5 D7 e9 L' K1.
; k+ }" A' c; g a1 k; B/ TACPI Spec 3.02 e3 h* E3 g& C, X' \+ P
2.. O" m7 v: Q% s6 l& T z7 i
Intel Processor vendor-Specific ACPI" x2 ]- \0 U- O6 ~( C- B
# G6 M% a& ^# W) U; r0 T: x8 {/ ~8 ` $ e9 J V3 s# t( H& w
That’s all!
' O' E0 r1 M$ n
* Z6 x2 h- ], D; a( JPeter R9 M$ o! D0 [+ p1 D# b. J" r
1 j, i3 Y* A0 p
2010/10/01 |
|