|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview0 ?/ S- Q) B! ]3 c: H9 ]! g p
" Z$ f o x, W5 F9 \3 P8 t4 ]
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工作时间的占空比)的方式
) b+ D- e0 z2 w* n* n# n/ ]/ j,影响系统的功耗和温度。
4 i" u( T, J' V" R) V . L/ ~" q s' c0 J/ H( b
2. T-state Control. a, i7 ?7 m$ A; @6 _( v$ I, h
: u4 V) A' F6 {# i$ v6 k' m1)2 N1 P1 c( W8 Q3 ~5 a0 h) O
MSR Based Control
0 [ E7 a5 S: k3 A6 R: w / Y: C, O; |& F0 P; S W
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
+ O1 D0 a; u, j. @+ O ' G% ~% A% ~: ~- }) ^+ c/ x$ B
2)+ u% R% O8 n0 f5 y8 k
I/O Based Control
# Y8 t+ ^$ l' `: Y+ y4 M( V! Y, v) p
) b% K/ K% e4 Q) p; V6 w除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
) S8 O3 `/ [ ^8 o$ Y1 A - M; Q9 o7 Z4 s8 j3 J6 O% K
3)
- i# n- G0 G( Q/ J% I# IACPI Structure For P-state
/ c. ~3 V* {9 el) H. Z# p/ w7 M5 [6 }! X E- }
_PTC
+ g6 Y0 d2 l8 g' G9 g. D' D " v. ?) ]0 s; W/ V0 O" d& ]/ D
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
! v/ ]. a0 ~7 T. g! A( U
, ?0 N. N. d3 p+ t( `( G& Y7 N% NName (_PTC, Package()
! @6 h1 L0 }7 H. d{
1 M/ `% e" o2 [- D- z, G2 b; S2 @5 T! l4 y3 ~0 i9 D: j# x& I2 Q
ResourceTemplate(){Throttling_Control_Register},
+ J0 d' m" v# n//Generic Register Descriptor + z. d7 S7 ^* g" f
" m: G5 Z7 R4 V4 M. m9 e& Z
ResourceTemplate(){Throttling_Status_Register}3 k. b A0 c5 |2 S* M
//Generic Register Descriptor H. H, N, u& |, A7 d7 J. _
}) // End of _PTC
/ u. c0 i. d) T8 v
. ~6 L0 \0 _: v' W A" p下述是一个sample code:0 k+ E; W) x% n8 b' s
! \9 S7 a; T- N- j# F6 }: I( D0 K) m9 Q, V; u5 }8 M
//
( G+ M- H- n" ~9 {
0 {( d |2 t5 m// T-State Control/Status interface9 @! j6 Z# @7 M8 c. V0 ^1 r5 `
6 G4 ]( w& K9 W5 ?
//
* f0 ?$ g4 W' G2 x* p3 M6 m5 B; }6 f! n0 F1 m/ j, R7 S
Method(_PTC, 0)5 t8 D2 U C* K# t% ?) O0 k4 V
& Y5 R* p& m7 @ b& h
{3 g. D \7 b1 F/ Z2 z9 i8 t6 v
$ h3 r) O& F& {0 O4 _1 _, G//
! [( g& F( c# N9 P7 s2 H2 G
" |4 r- f* f5 @. }/ S// IF OSPM is capable of direct access to MSR
# x6 j Z: w0 g3 n9 S- `$ R: f6 n- ^4 \: l( H& P
//6 T8 v' ~3 r) S* V- N v
Report MSR interface1 a6 }. D$ |1 Q$ }2 w
; S% U6 F+ x$ h6 y- z) m, I// ELSE
+ Q8 g: n# M2 {& [: J: x" K/ H0 K
! V2 z* D4 Y3 x6 ]- A7 S2 t//9 V% a5 S6 d% b. I
Report I/O interface
0 N( S8 z: K- R; n% ?. [
r0 D# A7 L. I9 E, C//
/ ^$ G4 ^* g# I( l" N& O* j
: W+ s" P( o0 L- D//: t7 i1 ], M9 X# ^9 O: O9 d# `
PDCx[2] = OSPM is capable of direct access to On! s8 ^* q1 s. _$ a8 _( E& v+ `' e
( U6 c* E% c$ Z1 F R) {7 s
//
1 a/ N/ n$ }' z# w% |Demand throttling MSR
; f# h4 z9 v7 @3 ^0 K2 z+ N* a6 K3 j; @/ N \; {( J$ d
//: Q% o0 l2 X9 P
9 {: S' I5 a$ }6 G
If(And(PDC0, 0x0004)) {
0 l, [* [' c' ^ P* ~% j* c& w2 ?' A, u) P+ e0 G
Return(Package() {
- a0 m1 C# r0 ?
# {# g. Z1 [, L9 x% LResourceTemplate(){Register(FFixedHW, 0, 0, 0)},2 U/ D+ Z4 \1 ]; h4 {
( I1 C. @% T$ E; t
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
1 ^ F& @3 n( d9 z8 ^
2 l8 ^, ]. w6 A$ E+ B# q})7 m1 `% P0 R! w4 f9 S
: J, O" ?" y2 }, w+ O0 l}, C8 r: \& m/ q; p, ` y' C
, {+ k" C V! k" e( w( M
Return(Package() {4 y1 a! A+ `% K/ W/ H" P! W9 w
4 m |6 g$ j+ {/ G2 l; n0 K. Q* ?
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}," ^% j n, C0 H4 d! u9 I( B& ~
4 w' ?2 f! Z% ~8 GResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
1 S. O2 f: e' m8 C# _( V( z$ @" i4 c- U& J
})7 I+ y5 c* A4 Z, K6 v
0 Q- r& |. E5 c- A}
. G C7 n/ h0 i3 Q& ~
' D5 T& P" a+ h& ~6 R
* \% y7 o* I+ \$ t4 |
, G0 g9 B: `" b& ]l
8 b1 ~; F% C, W4 g+ I' T_TSS! a7 t- o4 ^" g. W& ^
0 a( y& @8 K% f4 Q4 f8 o* aThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
" k& C0 H& U$ lName (_TSS, Package()
5 L) e' ?, k( i; }, p{
8 A9 s2 b( q& E' O7 @! O* n// Field Name0 p, D6 [" c1 a0 W7 @) \
Field Type $ z8 H6 t8 C- ?# S
+ l' {3 z J1 q6 I5 p6 w
) @- G5 f% \' |9 O$ \5 b
6 }, l, H9 r) PPackage ()( N& c: U2 x% O3 N
// Throttle State 0 Definition – T0
% p* Z/ R. V* r$ V
0 X$ x4 Z. Z$ D9 c& v9 T' K% A/ B{
& {) U6 i1 J0 w
g8 f0 \5 u2 l! H4 z- f, ~, W! @: A. h3 h, w9 O
FreqPercentageOfMaximum,+ F0 m2 w" G% l R/ {; k T
// DWordConst
_0 t5 Y! T, L, L" w. \- Z+ W1 f! z I
Power,6 ]" |8 h) b7 V8 }+ C b
// DWordConst
& C3 T& P, \+ I; q: K8 H6 }5 ~; }. I
TransitionLatency,5 B4 p/ \* Z! I
// DWordConst
. ] t/ l& ^( G7 I% {7 i3 `3 k) J& ], o" \$ t1 h$ |. V# `5 z
Control,
" v5 M& P. D5 @7 p( N4 a) s* V// DWordConst
. S* s% h" z/ v( X4 X0 L6 \
) {* I0 a) @( G$ l) \' K. XStatus' U3 @, F- w4 o
// DWordConst
, h) }1 {$ u; H+ x( W},; W$ ?! Z' ~3 t
……
0 O1 |. D( W k8 E' B3 U2 {}1 h& T/ g% ^9 o9 q. V, n
V0 V) {( r+ U3 A. j' X% F
Example code 如下所示:1 ]5 {$ I! p/ @9 f
# x+ |2 H. u6 P$ B# {! k
Method(_TSS, 0)" a! b* D) `: |3 m' a
6 H& [4 p1 d. w7 Z
{
/ E; [" ?8 O, p& W* m
0 R* n! j2 R5 E8 ]3 y. K1 KPackage(){100, 1000, 0, 0x00, 0}," u/ }9 O/ ~+ X
, Q% V }4 Y. _8 t6 T
Package(){ 88,( E+ H4 A9 w$ i* ^) }" Z3 p. K
875, 0, 0x1E, 0},; X2 m& k" M- O) a9 y$ k
" l+ W+ ~; Q' {4 y! B9 t6 x
Package(){ 75,
G! x/ e- s, \0 T8 t750, 0, 0x1C, 0},
V* r) p8 a) x" j% r
) B- c5 _8 I) D" g. d _Package(){ 63,
5 N" J& j2 w6 U* f; f6 o& _625, 0, 0x1A, 0},$ A; s. b3 l: p1 f8 u2 P6 ]
( i% K3 P; s+ w/ O
Package(){ 50,
6 o; q8 R$ k/ o/ |) D. L4 u500, 0, 0x18, 0},
+ _2 B: k5 W" C& A& |6 f) M. r6 l& J/ j" k/ E; v! n
Package(){ 38,: O% Z1 ?6 p/ B0 M
375, 0, 0x16, 0},7 _5 L4 z2 Y! C9 f; m4 F3 X
- X- Q$ F3 `" l' V- Z6 T' p; FPackage(){ 25,$ E [0 E2 {9 v
250, 0, 0x14, 0},
' h4 @9 X! V8 N+ [0 F2 l' p6 v) q, v0 l- b3 a8 J( p! G
Package(){ 13,8 X9 u- \0 ?0 P4 [0 K
125, 0, 0x12, 0}& O" L/ E& J9 B- s6 I% X
3 o" H( o7 d6 U% b" p* w}
. E6 M' @0 x7 X1 S6 c5 f* t
3 C, _0 Z( [1 i6 b) M
1 [8 N( C; v, v2 P. A+ I- gl
* _7 ?8 y* D9 I9 E% L6 d7 V_TPC7 c1 A( O+ ^* Q2 M; m& x
3 r) R+ t" y- b3 t
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
% }, O( o9 M: k% l4 I0 l2 {* g
0 }! m, X2 L1 Tl
0 H/ p: K, D1 E& l p_TSD
; @2 J* s* M+ [' o9 F& P; P9 |
8 B- _2 ?1 h: n8 }+ Q- [& \T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
- |9 X g. ^$ [ * g# U& N- ~8 M
Name (_TSD, Package() : y" U. A/ x7 A5 I; `5 G/ R
1 v6 ?5 F' A3 R' d
{ # O6 p4 k' d1 W8 h1 h
8 H( w& ~( E3 K' t8 o
Package(){5, 0, 0, 0xFD, 2}
% U6 M7 D9 r% N" s" u// 5 entries, Revision 0, Domain 0, OSPM
/ O, s( E! Q- G* U ^$ d5 n4 bCoordinate, 2 Procs
- q2 t7 }3 V; |4 ~& B$ u' M+ j% |3 s+ U- D( s, R4 L
8 F2 A5 R4 G% E( O: p
}) // End of _TSD object
+ @- I+ y' m7 g. \- u f5 }
/ a2 K% ?- t. r2 D$ {, CREFF:# L, f+ w9 r! t4 X5 }; ^
1.$ w& P# U' \4 n! \1 z3 V
ACPI Spec 3.0" f" W7 r9 g3 }: l4 ]9 z
2.
* F6 z% G. }1 PIntel Processor vendor-Specific ACPI. ^0 q8 B1 H' x# n
6 Y: g3 B% S0 @% @3 Q; { * G* P5 y3 ?5 K& I% t
That’s all!
5 v+ x5 Y/ X5 M$ s
" \+ N' P* W a oPeter
$ f" F& E9 r' V" }3 t
' i/ ~+ v1 G w# Q2010/10/01 |
|