|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
3 Z7 f# m" `2 V3 g r8 T% z$ d ( {- F4 n2 k |$ 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工作时间的占空比)的方式! d1 _$ f* R" z7 n' Y" u
,影响系统的功耗和温度。$ e. c. {! F: I2 h
; [( z. D& B2 q8 Y3 M2. T-state Control2 v( _; U9 q# D; s
) _8 M( b Z3 W4 B4 K' g* Y0 L1)- H( e6 u7 J0 W7 g3 L
MSR Based Control; s7 N% k1 i' J3 y9 j
' d- z8 c' ?7 D' S) `- ^0 L6 {BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 " V0 T- p. L! d7 y: k% q. L) j
1 d$ F# W( Y- e& s" D% N+ q- |
2)
: a. b$ z2 O' N5 j: r4 [I/O Based Control5 F2 w: a7 m, ?4 O! z
3 F( r7 U* U2 }4 N6 b6 M
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。0 D1 j, E1 M: o% I$ v+ f% b3 {
$ l/ I9 n# U+ Q- v7 w/ `4 T
3)$ T5 v5 o% l/ m7 C, M% w5 v
ACPI Structure For P-state
7 N4 J7 v3 d* V4 Pl7 M) _4 L1 o: d. [: N6 a
_PTC
2 s! j; |9 k. q
8 f2 p* J7 f+ h. E/ O4 YProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
1 J7 R6 \/ Z) k * m. m: }; ] f# ]0 _8 p$ l
Name (_PTC, Package() + e+ f8 n5 g( f0 c# O. O
{ / w! s7 r1 W& L, [
) [3 W1 N) Z6 y+ z' qResourceTemplate(){Throttling_Control_Register},$ j3 H/ H5 `- p
//Generic Register Descriptor # G; m8 H# n1 v+ d1 D, x$ {! j5 j
5 x' Y: E" `4 U" Q* l
ResourceTemplate(){Throttling_Status_Register}/ c* ]/ u: q' M# r/ C7 A: S
//Generic Register Descriptor
3 J" n. b6 A/ T4 [0 h; x}) // End of _PTC
! r. X- U/ C9 R) z, ^; s 0 N( U6 \" _8 S y* {: f
下述是一个sample code:5 E% V/ J- B8 [& S" a2 D
9 Y9 _$ t+ ~' q* h* K5 j. J
$ V; Z) W [; }7 t7 b0 x//
6 @+ L8 l M0 L( ~6 K: ?) S9 m8 v% n" b4 A0 L! T: J
// T-State Control/Status interface8 W5 Z: v2 ]7 j! E6 f
8 C, L& L1 s w- J; |, [. {5 s
//8 N6 i/ d: l) V+ A% R
1 [/ y. Y2 C- M' y: A; I" @7 e
Method(_PTC, 0)2 t' @$ x) W7 O6 C
% j. ?0 S9 \# v3 V
{
: m- w: p4 ?. x6 _4 M) G6 ^8 n4 t4 E4 K8 h+ Y
//: N* D }' W( h+ k' |9 u/ Z" v% Z
% e% ~: G) F( i// IF OSPM is capable of direct access to MSR
( j& x1 O3 `/ w, ]! O% ~
1 K& B% F3 s5 K//
7 d- ]5 f$ m7 ?Report MSR interface0 q& N+ Z* t7 D- M$ P2 X) @. u* l1 E
' g$ l2 ~9 m& [6 W
// ELSE
' ?* T& k. y0 ?9 b! \+ {
. Z1 j" q5 U" c0 T" \# D/ f d//2 B( B7 i2 ~) _1 d1 X$ E( u3 B
Report I/O interface
3 _0 u6 a4 [+ x3 U7 t6 Y7 Z: P9 W( e/ H, l' d4 v% }
//$ C0 k8 u) ?& O% Q
+ B4 ~& N4 Y+ e, p, ? I//& o( p O. M4 \2 ^6 |
PDCx[2] = OSPM is capable of direct access to On
# L( I) f7 [: a" L. ?) s% m$ J4 P: N/ S, G( h3 [8 s. J
//
5 ~6 D6 x' [5 N6 w; \ n5 CDemand throttling MSR4 A! i9 D7 m+ M" t
' a# [& }9 W$ o3 e. b# M u3 l2 g
//- A% b8 u7 D; ?/ B2 ^; }
r" U, {1 A9 q+ J
If(And(PDC0, 0x0004)) {& S) ^# d2 v9 j. h8 q' T) {% S; K5 O
' ]& q2 @. \3 z
Return(Package() {, D4 |. c5 J+ W& m
+ Z2 b' _+ T% X# D0 Y% LResourceTemplate(){Register(FFixedHW, 0, 0, 0)},8 g* E3 }2 l8 y8 E# w( R; H- g
% D# C5 o# B$ j4 Z
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}. S W* `" h. ~, j
7 ~. t. ?! m1 V) D- Q( ^% v
})
( h8 ]; o/ a! `( \/ g8 `! ~+ l8 k1 @, i7 Y/ v
}
. q- ~' s* H& e6 P8 h N+ w" ^0 F- O. k) x+ _! L/ p& J
Return(Package() {
+ l$ J, S7 I2 Z' ~* X! V. X6 N
X& ^) C6 y! Q$ H; M- `; YResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},4 N, N7 Z4 {- D0 {& ^
# G5 v) o! O* W0 B! ?ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}) V* W9 O; w$ U9 K- j1 h
2 Y O% h; u* C& {: k9 V( }
})
; H0 M5 ? p9 Y: y+ r# ?; E, q7 t, W) c7 G |2 {
}
( o5 p) y% @1 {! ^+ M0 F, y" V+ }" m+ Q' e: Y6 Y
8 a( l" [* q3 X
+ D T6 j3 _. u, N( L
l
% V& ?# m/ p" y, g" w) |_TSS8 P5 W4 p6 \, x+ U& B* L
/ D" u% s. r1 iThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
, c9 H. J0 F, {* O3 x; M ]; sName (_TSS, Package()
) T' t8 I; O" h% h2 r{
; m% C# I) p8 l* I$ Z! p// Field Name
" {! e [' S. H" N& V0 J, B% OField Type 0 A9 L1 m5 E! V% c" V
" ~( _ d" A6 ?' [+ X# O9 p
1 f* O! c$ W# s0 R* v- g% c- D' i# m; i5 X8 w! j% o, v3 p# m1 Y) w
Package ()$ m0 x6 Q! I0 R1 |7 B; H# S
// Throttle State 0 Definition – T0 2 M" C8 f+ R0 \5 r! F2 f
) M, F+ E8 \8 f7 P' L- v3 G{
g7 C2 y3 q% W- I1 f
4 F; r# |& V7 v( p# \7 i. O" w
FreqPercentageOfMaximum, Z- o: \/ R8 T# X5 ~
// DWordConst * }8 @4 L% ~1 v
' F' M d* q. E. `7 G7 lPower,1 R' x4 {1 P3 g( B7 D, N! V% N, R
// DWordConst
' ^9 i8 T' f% x4 m
0 M6 ^9 H) W( C; U9 A' ?& oTransitionLatency,
! j: O7 F8 w& n// DWordConst
# n) M" `3 |8 W
* Q6 l9 {3 @3 l, Z7 |! {Control,. ]. p. p; t- k) b6 }, T- Y* Q
// DWordConst ' O& w1 H$ o9 Q( \1 Z
) {7 I3 F+ r+ b2 h. t, m" T, s* G
Status
) d: z, W: ~! W: \) D# y. Z* v// DWordConst 1 k6 }+ ^4 S" v& |9 V
},+ i" O6 W3 L& D F+ Q h
……, x' ~( i6 d3 q0 n, Q! W* v# ], D
}% g% o+ v% S1 ]4 e; T$ |; r, k+ k
% m2 x, S2 I' U' m9 {9 ?6 i
Example code 如下所示:3 I% y& E; Q; L U0 ]$ X
3 {( F& H' k3 |7 t
Method(_TSS, 0)
: ^+ B5 J5 f; w' {. ?" e* ?/ f, @
3 D4 T/ n8 T5 _% s$ _{
9 f2 y8 F8 q" W$ f0 Z
/ [7 ~2 D) x7 o) ePackage(){100, 1000, 0, 0x00, 0},) y% x" o/ h! V/ F2 ~
/ ?5 X3 h% {) s: h8 U9 H! `$ L5 k
Package(){ 88,
9 m- f' G" ?, z9 _: M875, 0, 0x1E, 0},
- k; U5 c/ i5 o" J* x+ `$ q
( G! x+ [) L' e2 _6 Y; nPackage(){ 75,: f8 h/ p. u1 H' P/ T! G
750, 0, 0x1C, 0},7 Y. d1 l6 B; W- C$ |
& ? `, ~7 J0 V
Package(){ 63,8 E; @# G8 z) x& q+ S
625, 0, 0x1A, 0},4 p! |. Y4 K# u7 Y. u v
. Z7 H3 x* F, [# F9 d3 [
Package(){ 50,9 [; h+ F0 l6 r- A) c
500, 0, 0x18, 0},& O8 P; F6 A2 G% Y3 V, q' W3 V
/ V, {7 L2 t( q: q+ t3 L8 O2 t
Package(){ 38,
8 b1 u! ?/ P( @' y. R& f375, 0, 0x16, 0}," X. p. j% b9 S" Y) I: B) c. }# ~
! P1 Q. R7 U2 ~9 m
Package(){ 25,
0 W3 ~3 r4 ^ y. d; e250, 0, 0x14, 0},8 l; D- t# G6 \# X& z* O
* D3 I) w4 ]) r4 N* K/ n
Package(){ 13,
. \% Z3 b2 m9 G/ _' s( x$ p125, 0, 0x12, 0}
* p9 z$ ]* q! X8 ^; o3 m) m* L8 b T. {! f# G0 ~; E
}
* k8 A+ c: q5 t# n, c! T4 G; q3 \5 L2 D+ i
' g' o) ]# c0 }' q6 pl
. [/ s; _9 k& P/ Z" N5 L6 \_TPC* f0 p% n# Z |6 v6 `! u* }
5 F7 _8 m. R$ Z4 J$ NThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
- \* u" I% M& h , x* h5 Z% n' O+ V0 C3 Y9 X
l! {, H" [; t9 |- l/ S0 O/ F
_TSD, k8 ~" I/ Y- s, l, f( w) u
( C3 e1 r9 k5 O+ CT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
8 |6 w% l# F4 \6 x ) b4 ]( n! j! h* o; J
Name (_TSD, Package()
?; {% H0 L+ m! @( Y4 }7 C7 k" |6 ^; d
{ $ d e b1 `0 k; O
# a! N: D0 [4 M. zPackage(){5, 0, 0, 0xFD, 2}! q+ w' z. q$ F) ?, ^$ ?- |
// 5 entries, Revision 0, Domain 0, OSPM 3 L3 u2 g+ k: ?; L! d* N
Coordinate, 2 Procs , G! @% a/ J1 X
5 K8 V A. B& w; p) y( @" b4 @' H0 Q4 ~5 ^: U3 J4 Z
}) // End of _TSD object. l5 x, F( C& X
$ ^) D8 V N5 a; w ]6 E" ~8 t
REFF:
# a- N7 B' D7 L8 _1., V; S: H5 v( Q2 e1 K
ACPI Spec 3.0
, k. S$ I- u3 A% Y+ V2 i2.7 y2 ? @8 Q# c# \7 H" J
Intel Processor vendor-Specific ACPI
: b0 p; X3 ?0 r2 | ) p8 L, Q2 Q9 |0 c" ^0 }5 \
8 S; ^# T; H gThat’s all!
/ x4 O, q% F5 a: u+ f0 o1 \6 Y* y
$ P* c# j; |: t; _8 t- w) K+ UPeter
. G" H2 G1 K( C7 d7 S
+ f4 G Y/ @2 I2 |8 J0 A1 Q2010/10/01 |
|