|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
8 v3 J& H" x) V4 F& N! r 1 x8 K) @, i9 Z$ {1 @1 ?( l7 {* ^
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工作时间的占空比)的方式! m5 G5 y5 O. w
,影响系统的功耗和温度。1 @% _/ s% n3 Q% A
! w( m. c5 L6 W' L- M3 S
2. T-state Control
/ N) V1 o/ P" d- \4 F
+ x: r! C6 X; n; k/ ]; `1)& A0 _- ^" S0 G6 x9 g1 t
MSR Based Control
" Y) H, \9 o8 r6 L, x 5 V) t1 C. k- |2 v" 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的转换。 0 Q$ H) [4 _' Y
) y2 `1 l% C o6 w) j+ C% v9 N2)
8 z3 Z$ [$ P+ l' C, ^" s8 a2 oI/O Based Control
3 r: G. K3 |8 m0 Y3 @8 i7 K% t
. u+ \" E/ Y; b( ^除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
: i. q1 U2 C! g 6 F) s/ i8 c2 [$ }8 l2 B
3)3 x+ Z! Y& p3 d
ACPI Structure For P-state9 B; t: A5 u/ ^8 s
l- D7 X9 i$ _9 A, l( P/ b
_PTC
6 G( y6 A3 h/ a5 E
, C, a' `0 B( V: d2 \) \Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:. g3 J. O2 n( E" ~/ f9 z6 Y4 g z0 j
. ~8 c- w; F2 p, M) Q
Name (_PTC, Package()
5 W$ ~* B0 h6 R8 B{
% M1 R% V8 w `, u
8 t$ ?. u- | l# _+ }0 g) W- I: FResourceTemplate(){Throttling_Control_Register},# ]% D4 k: Q/ I8 u8 [
//Generic Register Descriptor ! m6 o$ w! Y8 E
. ]2 \1 L! ~% g* [8 PResourceTemplate(){Throttling_Status_Register}
8 f, D0 Q% _5 x6 R//Generic Register Descriptor ' E' v7 Y6 B- O* F& W
}) // End of _PTC) y( ?8 \' B J) Q; | }9 B7 ?$ F
% J; z( m6 B( y# Q" h" g
下述是一个sample code:
: A0 V2 ]8 E* u, U1 i- d + y: D* w, i" S( R) p' t' f2 m$ g) A C
; w/ D7 v5 k' a+ F% _+ w8 P$ G, m//0 d2 D6 t) R( c" L* E! }
. V' k! z* e" M/ m/ V' X// T-State Control/Status interface
$ V1 U T% N: v a% r$ `6 @4 L# |
+ U! f8 X3 [2 h% O: Q, F//
5 M2 h0 g$ l, [, G, m
* O. |, v1 |# }: S, NMethod(_PTC, 0)
# K x. [4 X( K% K; e/ I8 G8 M& h( C. S
{
6 a; P6 V& n1 |) M& {: Z+ B; _7 r4 \+ h. J. E0 V
//" E7 C1 H& G0 [$ L% o$ e! p" g
; S3 V9 o: ]9 b3 m// IF OSPM is capable of direct access to MSR
1 u0 A' M `9 g5 f1 b
, Z# H& y" x4 H& E! H, n f2 Z8 w- `//
" K7 t4 D& F1 y$ v# hReport MSR interface
: Y$ y3 `) C; Y2 f$ ~+ N1 ~8 r+ l$ e4 j+ d7 I0 {
// ELSE
3 ?$ s' ?# |0 I4 W; A! W) t/ ^+ c0 |3 D; [" j* |" I9 E! z$ F" x
//. i; R! W: g6 W+ f' K( m$ a- \
Report I/O interface9 S* ], H/ W+ U# V4 a; J0 G0 ?
9 n2 |$ S0 r/ \) q/ P0 `+ Y P
//
6 R0 f6 Q. h1 r2 r: l1 C( o3 _$ b' U9 W
//
1 C: G+ t8 H% f0 F4 QPDCx[2] = OSPM is capable of direct access to On
3 M# H# F* v3 ]+ y& u/ y
4 p- p0 K, a( a& ^& ]//
- |0 V0 O3 z; S+ U% O" |Demand throttling MSR
6 n" j8 k5 D, D
9 g$ V- C u& m4 L//
% J& d7 q; _2 p6 v) j2 Y
C% o4 g$ V# S6 O3 \If(And(PDC0, 0x0004)) {
& `' I# W4 n w/ v$ d+ |* T6 M8 \/ B0 L$ i- h! p
Return(Package() {
' f5 N3 k0 f' H, r
- Q& _ T3 _+ q* T5 zResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
8 ~, J! ~+ R* @7 s+ M
) [) {) Z& m8 |4 J* D4 T' jResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
1 y% O3 D, T& S' H& w! c' w# ^+ {$ x" q) E5 r- M4 k* Z
})
3 R. L9 D6 a: P' v! r, F
# `+ I n) Y- c5 [3 M8 E# i& s}
! o g" G! X! M
. j, k* ]$ B9 t" u! RReturn(Package() {( C/ W# N; ]+ a" P. f
3 W2 u/ W% Z8 q8 Y; |/ |ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},3 W7 p* Y9 u% H5 n. n) `
2 y; h9 e3 p! ^9 h" {
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}- W5 B# L) ^" W& m
' q) ~! L( h; I/ ?: `
})& y" P% B% A. S3 Y7 c# Y0 k7 v
) N) T7 L+ f) f}' W) O; |: h( f
4 ]9 [$ A; C3 E5 ?# W8 c; E7 Z1 g
( b9 e0 R- h2 q, J, F; R
l* @' ~! \. n1 D) r; x, T0 c
_TSS
. e9 o* f$ ]. q' T3 K
. n' Q' J& v3 p! l7 Z1 gThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
+ z' {, i [# q/ d- G0 j- HName (_TSS, Package() 6 j; t N6 |+ W
{
4 \( D% o; d" E, `// Field Name3 ^2 m- V6 l# v r
Field Type * L3 u1 B' u0 x+ g. i
4 }3 ]2 `( T5 ], f) l
. X+ \4 n, R6 q$ Q: j# D* K# n
5 u' B W1 b5 k/ g3 m& `5 S( R, N/ kPackage ()# _% p ~( w" r$ y. R- _, s
// Throttle State 0 Definition – T0 0 C8 ^- M( |- Z1 J4 i8 r! |
/ m& r, K! R1 i! m+ c{1 R3 Z: L7 _8 k# |
& x: f1 Q) f4 D" y# D0 S
) n1 M) Z+ N0 ?* d. uFreqPercentageOfMaximum,
6 D" z9 K: ^ h1 H// DWordConst
: S7 e. ~9 u, D8 u6 ^+ i. Q7 d( k3 H5 g- @7 r: V
Power,
0 a% Q1 C( G* i, v3 {4 @// DWordConst
. W" _7 B: t/ k; h
5 K+ `- W0 \. [' g- k* V3 O9 oTransitionLatency,
2 i( @# O { K& v( g% R// DWordConst
3 x9 K7 u @$ C* u% T" a* e- u) B2 X6 a3 ?# D
Control,5 s7 G8 V/ }, F% ^8 g6 ~
// DWordConst 7 @+ [% o& V. Z @, x9 s
" h5 J/ [; G$ J4 E* }* I- T$ DStatus
! b7 l6 ?8 M/ E. {// DWordConst , m3 R! A% T4 H) L, Y6 O& n
},, P. z3 ~2 t/ [ \2 X9 U
……) c! U' P H3 B# a8 H9 k
}3 V1 ^: @& m5 X2 ?! k1 F. U
" t) ^! I* L- [+ ]% }4 ~, B, z! @Example code 如下所示:0 o" A& {1 X0 {0 U$ T- {
6 m1 S1 `" S) K% _9 B( X4 o
Method(_TSS, 0)' c; _) X: q: U8 r. S
$ o8 y$ O; {" m Q
{
1 m4 J K' I8 ]" o7 w
0 y5 U$ J O9 `. hPackage(){100, 1000, 0, 0x00, 0},
1 P6 W% | Q( A7 U/ C
n( _. }% k" d: B/ C6 l, _Package(){ 88,
0 {! x" ^ q, X$ ?875, 0, 0x1E, 0},4 l( R* N5 r8 q/ u/ A) }% i) h
2 S4 m3 B: O4 `: B8 w& fPackage(){ 75,( |0 v& g7 K7 d) F6 a
750, 0, 0x1C, 0},- a$ B# @1 S- U7 Q
9 [' K0 q, n5 a' y* m" W1 ^
Package(){ 63,
# T9 J5 a) S8 o! ?% n4 F625, 0, 0x1A, 0},. `2 Z. i% n6 E( a; {
# V7 V/ |/ X) i8 U
Package(){ 50,1 P9 Y+ B e. D( q2 a2 e
500, 0, 0x18, 0},
' F# q5 s1 w' W$ V" I, R. P; V- C! p. ?$ `1 Z
Package(){ 38,
* t) P, p1 g0 o7 N3 M1 B; o; b375, 0, 0x16, 0},
3 o/ N1 b8 V: u0 [! X# ~9 O% C' d3 h+ ]* T) Q
Package(){ 25,
/ E+ s5 F* B6 [# p, @) H250, 0, 0x14, 0},
! f$ t& A8 T1 k7 k* Z- m0 `% |% R1 l3 t- @# M& g! b6 Z
Package(){ 13,4 u" C! a2 ?+ _
125, 0, 0x12, 0}8 u9 m! c: M+ C% ~/ i
; b8 c( k+ {) L( Q9 a4 W}6 |6 M8 d5 B- H1 `/ m9 L+ e
" Y. F, g1 Q; z
; H) j/ Q; L" v% O3 l& d/ R1 xl- b8 G8 d1 s0 K$ m G1 X
_TPC7 P: i5 V% L; M
0 m+ j, l0 w$ c& H$ Q& s9 ^3 x3 Z
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。9 v. G7 l- m+ l: z/ G! u( P% ?. c
; ?! B8 J* I. Ml
@. U; A, i4 E2 H_TSD
% S6 `; n( j$ t: G+ Z G
, g d% T* p2 P8 n6 JT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
( }0 O- s$ S# | B4 m, Y2 D$ f 2 g- }) e" B$ @
Name (_TSD, Package() % M7 D( K, }8 a: |+ w) `8 j
$ I4 k1 n7 M+ r1 C/ c$ @" A{ 0 i. i4 n; Q, N- Z! g) Q
2 r2 [9 t* C" w& z" u2 QPackage(){5, 0, 0, 0xFD, 2}
7 [) d4 j2 o; ?+ \7 Y6 D// 5 entries, Revision 0, Domain 0, OSPM
+ c+ S9 ~: o i: l6 D2 y- uCoordinate, 2 Procs
" c0 \! J7 d& \* A3 b- V
/ H4 Q0 Z4 L8 Q/ s5 a% x
0 e+ F9 b- r; s' n& o% W% b}) // End of _TSD object
1 s4 U; ]6 `8 W" W, Z6 l
8 _) p6 ?5 a7 R# `; \) v5 S+ {REFF:% I! @6 ^% t2 i e5 @
1.- M6 b, {, n, Q+ p4 n$ P0 P
ACPI Spec 3.0% B/ i& P% H$ Y
2.
& J* C- q" c1 k8 XIntel Processor vendor-Specific ACPI
* z o, S5 j1 m9 m
8 K m8 t- i" C' d+ P+ \
/ d% C/ j0 N, Z/ N/ b8 VThat’s all!
5 N8 ?# u' ] G5 t" {! p 6 ~! V5 w2 O6 `3 C
Peter7 ? D- K- o1 y3 n3 R4 Q% M O9 q
5 o. d* u9 i9 R! |- y; [1 g
2010/10/01 |
|