|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview8 P. m* A% A: E' g! _( [5 c
- J1 C( }9 n- {; K2 FCPU在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工作时间的占空比)的方式# q- V2 i& d7 H7 `& v
,影响系统的功耗和温度。
l1 e9 h' f/ C6 c* a( T( D! A
/ ^( i$ j) d% T1 |6 n2. T-state Control2 U0 \2 c- H7 W6 }- W u
6 P C. N1 F+ R
1)
; R+ }$ v& p# P2 sMSR Based Control
- x F! B2 ?0 z! Z
2 \6 v- c- g4 h' R6 p% S4 e, nBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
0 O# e" D' u# d* }
& w# O% |* D- v2 V: U7 v; \2)
! O/ ~( z& _) r1 UI/O Based Control
6 S0 }) i, v) i
, U- n# A( m) F# v, Y- r- u/ T5 N除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。* k. Q* `: X6 ^2 h; j
1 A% e9 e6 z) S3 n! P3 V
3)
7 v# j& x% e5 V# G. }/ KACPI Structure For P-state6 Q0 d( n4 t! H6 R0 K
l1 ?% B0 R# ~( L" T6 o; ?, n
_PTC
$ @! M/ s6 {+ N# {- V
. p9 r7 {! Q+ X( h h! CProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:- h5 u1 f' l. x& s
6 F) e8 i# @$ r$ f" P
Name (_PTC, Package()
0 s! y( I( T; d" X5 S. Y{ " f9 l/ X7 ]2 r$ G- q
( M9 d- [ A6 Q! ~
ResourceTemplate(){Throttling_Control_Register},
R8 W9 b7 \9 y0 Z//Generic Register Descriptor * H& ^7 I. s' ] ?( G
2 r7 x2 M8 F% A! hResourceTemplate(){Throttling_Status_Register}
9 T( d# p- w2 {) |# Q- L//Generic Register Descriptor . P+ ~) U+ c1 Q! `7 o
}) // End of _PTC }- b; g( K( F* R& D
) m2 n- A# ], F3 q0 S4 Y
下述是一个sample code:
0 F" K% y# H- f
4 N* W9 b2 a3 f) S
; r' G, _* A7 d' w) G8 Q% I//
{% n) x- t: S; N* z$ ]& \2 D/ T7 C. J
// T-State Control/Status interface& z! A& }/ k* v, K
2 B6 q6 T6 q6 {, M, u. p//
+ ]) D" E0 g5 z: g8 h3 G+ N7 f% |3 T5 B B; y
Method(_PTC, 0)5 P5 ?. q/ a$ E& ?; O p
' d! @5 x2 p6 ?" p+ o: r, T
{, ?; T& A* Y# D6 e% M
5 d9 ` Q- _, |8 r% P6 U
//
% r0 L( i4 J9 d8 u' y- n& ~% B2 `$ t# W2 U0 s, C7 i0 g2 D
// IF OSPM is capable of direct access to MSR
9 w, u" c; n( Z, b3 I/ F% }- E" v( j; H$ y* Z" K- @: L
//
& u: I' s1 H; L1 t! y8 ~Report MSR interface5 A) d7 c* ^4 z3 B3 i% F! e
, @% P. _9 h' ?$ [% W// ELSE
$ b1 {2 E; f$ S# m, l; `. C/ a* S5 t' F' d) G/ j
//
- r% U' F/ I; Z5 K6 L1 P& K' B2 rReport I/O interface
S) V# H/ B5 f4 g4 t: s2 v+ k$ X1 ^6 \3 A7 P& d
//
2 R+ p" ]3 K5 j5 c* r1 ^, _2 o/ p# |1 U4 C4 ?, H
//
, G/ f7 c% S; V4 ?) |PDCx[2] = OSPM is capable of direct access to On" M) A h& H- b9 B
8 f ]/ O0 w+ r" t
//
. O9 I4 U9 ~$ M. G3 h' U gDemand throttling MSR/ P3 n" D# l) _& m2 [3 p) M$ v3 |
$ r( f+ M6 L& L" Y! A) x//% ]/ P4 U) I- b3 p; A. ~8 J
$ G$ N7 X, P* d, u! ?4 ~If(And(PDC0, 0x0004)) {; U8 @1 r2 ~ m+ m; T* Y4 k# i
; c5 J Q; C$ [) T# y* V; O: zReturn(Package() {
# d P- w* d8 @( b e/ ?! ~% k3 Z9 e1 c& L) G
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
! `* t8 N7 V5 m) c$ G* K
% O4 T, {" A' _9 a* C" {4 N; V9 O" WResourceTemplate(){Register(FFixedHW, 0, 0, 0)}6 J% U! @3 R) b. T4 p. h
, n$ _) m+ l; _+ \})4 H2 \% ~* I. `; d+ U
2 b2 K3 m6 Q5 p4 v# @! L5 s. \1 n
}
/ R/ X% x+ K k0 G8 D8 s3 W$ Z0 G- @. `5 @
Return(Package() {
7 b: i& Z, }6 k3 L, C7 ~5 X" Q8 C+ F0 g$ k2 P& G
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
4 ~9 X6 |) \- b" _* y
; O$ y5 p: { ZResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
. t5 ~! k5 x5 u) k
" Z7 K: C' ]) o% o8 c! a% n7 Z})+ {5 l | U4 u( E
/ p2 B# \ P& {" M0 H}
- n; e' f: l7 t4 f
+ Z# j" o% G4 \% c. Y! R: W5 c2 H
( v. A; C# b" a# e9 |; Y$ C: E* v% i/ s" B2 T! @! j0 `' f
l
! e! U+ `, z) C9 B$ J% T_TSS: ~; f7 i* |- J8 {7 P& [; E1 Y2 C- t
! M$ W N4 \( o! `
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
- X0 {- x/ d8 \. a8 l: DName (_TSS, Package()
+ L, ~7 E* p* g{
; ]" V( O% I; [// Field Name
0 [4 L. Y# u6 o+ u% @# z" QField Type % y# M$ k- G7 c) ~# ?; ^* P) L1 g
& ` q7 h1 u- P/ e
3 z/ Z% c b q& b& @: ]. N! a1 ?0 y) r
& ~; p9 Q- ~# `+ ?
Package ()
1 e* `: O1 S! v m7 X) P! V7 P// Throttle State 0 Definition – T0 $ A, ^: S5 g; `& E0 O- c
2 a4 ?( l7 y1 \' o/ f S a{: N' h x5 ?4 O7 F8 R) ^% H
! ?1 [) |+ l o. H" R8 [
; q( k3 k) R- B5 I% q/ ZFreqPercentageOfMaximum,
/ F: ^% E7 F) `1 I O* a- r4 N// DWordConst 9 ?7 ]2 V9 D; Y2 }: N
5 c1 `* x( G2 M
Power,
6 [* _9 v' J; c7 }8 v9 e// DWordConst ( k9 H, o+ S f* z0 p2 r
* ^/ Z- ~5 Q3 K' Q
TransitionLatency,
5 q6 T0 B/ r4 F# v- \// DWordConst
& W/ ]* t2 V# S( e8 e% q3 E+ u. P. M2 p( |; S
Control,
, @( I2 P3 I8 D" u0 w// DWordConst ! `* Y* l2 k! s# S
5 q$ j% R$ g' ^" \- }
Status
( p! w5 `8 K1 o2 x// DWordConst ' [& z. c+ P! O' A0 v0 E6 s5 ]- k) p
},0 c1 ]% i# V7 m5 g
……6 s$ [, F ^" r
}. ~4 B: p0 o' M. s9 W; V/ V7 A! r! v
3 m( d/ o( V: I3 V W1 c% y
Example code 如下所示:( V1 v7 [7 ]! Y* v: Z
! P) M) F- Y* G$ B- PMethod(_TSS, 0)0 @" T3 }% E$ ]
# v' ~ [2 E9 r! q{
6 R$ ]) j+ {* @) C, L
8 s0 m, u8 d2 n# @% WPackage(){100, 1000, 0, 0x00, 0},
( ^5 z# x9 b9 H: X
- c3 q; t3 ]1 sPackage(){ 88,; v. E ^ P( s7 B
875, 0, 0x1E, 0},3 l0 ?+ x8 r7 Q1 c F
4 e5 g+ Q* w& q- L+ {# I _: F
Package(){ 75,, w: m4 g5 J' G" W: H9 K2 w
750, 0, 0x1C, 0},+ x3 D0 l- @5 V+ M! R6 }5 v2 q+ q
) d) t) s6 @) ?9 nPackage(){ 63,, T( }* o$ A8 \1 \( N" Z
625, 0, 0x1A, 0},
- K- @; b6 k- y% S2 o$ ~" O( [- O
c4 Y5 I* |7 O0 A' t- o/ r3 E+ ~& Q6 @Package(){ 50,; ^4 @! R3 c+ g/ g& M( d
500, 0, 0x18, 0},
+ R a' |- }# Y& a% p7 d8 o
% t6 R" |( _' P& ]: a+ ^" }/ MPackage(){ 38,. H3 ~% E( L3 W4 L, K% n
375, 0, 0x16, 0},
# E+ |3 H ^7 T* H! ^& l* Q$ ]5 x7 M. F; H
Package(){ 25,
# X4 | d* e- k4 [250, 0, 0x14, 0},
+ X0 m* ?# w# S% S1 t# \
2 y6 }7 t8 h1 U" T( B0 g* d, `Package(){ 13,
4 F' z# }5 R* B% a4 w6 J125, 0, 0x12, 0}
0 J+ s# B! f, D: Q7 I9 F/ b; J
6 Y7 e _* }/ G0 |8 P}' K; { I# f [* y5 _. e
. F3 ?' c1 Z9 }
5 X5 Y% Z Z( c/ ?* } b! }5 El
, G* d! n& q* N" l% @$ G% R_TPC
' @; D8 T% E8 s0 e& U, w
+ |, P% U) {* X+ @ q6 I' VThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。& V( g" {( ?& L. N
, p7 g- @. f9 Y# H3 |& @
l. D, U4 r1 ^/ w
_TSD0 Q3 _1 e2 u7 U0 _6 L& E
1 t" g& a$ }5 ]" d9 p( bT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
4 `) |9 c* @- l& R4 v8 o
: t5 B' E% {* t0 g* YName (_TSD, Package()
2 D3 ? l. D6 W
+ Y$ w- L$ z& Q. N8 N{
" a. k$ _# ^, o! e; L/ Q2 R5 Q1 {) x( V( ^
Package(){5, 0, 0, 0xFD, 2}
' }6 ~6 `6 r" Y- Z// 5 entries, Revision 0, Domain 0, OSPM
( `; q0 Y9 V o8 V) _ H$ ]" KCoordinate, 2 Procs
7 j6 _. }7 [: n# ^' h' @/ g0 w- g' n! K$ k6 o3 Y' n( [
$ O: T4 x# D3 J* u; ?}) // End of _TSD object) T. S1 ^ ^* S7 d, z
/ ~' K4 A: s: r' k6 n/ R: v
REFF:! i1 W7 d/ _7 f9 H. Q. G
1.
3 a% S: F* ^2 n# aACPI Spec 3.0
' T* I7 U9 x+ J; c2.& w5 h0 X1 B: w. {3 e# y |
Intel Processor vendor-Specific ACPI
# c; h3 k5 g P
6 [, c, _8 V8 h! _1 [
# z. ]6 g3 [" L/ q3 A4 [That’s all!- x1 @+ C+ a& e1 s
8 i* J' R2 h! g5 r+ @Peter; H' k0 m( k# n9 p
$ \3 }0 T% d1 E; G/ z9 m x2010/10/01 |
|