|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview# ?$ @$ j" r9 N! w# L, P
! `/ _5 |2 G m/ r' 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工作时间的占空比)的方式
& j: t$ J- A' H6 K; R( r,影响系统的功耗和温度。3 }! O$ w7 N% I% R* }4 d: r y
6 C$ @+ F7 v" z+ K3 r
2. T-state Control
& J/ L$ F. `' ]) n% v8 p2 s/ B 4 M; [/ R" e- @- k- x
1)
4 I! Y, G0 U1 x: x: gMSR Based Control) K1 K$ f% A, _ v$ Z
8 J& Z0 ^* @" z/ `3 yBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 : X ~+ {7 M. B0 f- l2 v9 c
7 z. J! ?+ x' z h5 c' }7 B
2)
' w, t1 Z8 b1 hI/O Based Control5 d$ T9 \) _; A; x
! L+ x9 a+ `& e N$ M5 Z; R& s
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
9 q, m( t& k7 M" A9 w; C 1 h6 n. V8 ~- L5 n7 L# @% r
3)% x+ i" D9 x; z5 Q* }
ACPI Structure For P-state- c3 q6 N$ w; j/ H0 n6 O
l% }" f' E2 O, N, y3 H% L8 C
_PTC6 A5 t3 l% N" @$ f# t+ x* Q6 v$ a
) n3 L# a- O5 @+ a0 u( V" V2 }: VProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
$ [& ~6 B, l# o3 Z3 S# g 3 z4 e' y1 ~4 x" P( ]6 k u9 j
Name (_PTC, Package() + A0 |- l" R# w6 S+ H7 T1 y4 I
{
- i4 |+ m5 w' P4 D9 @/ |8 v
$ ~ v. p+ e9 K0 }ResourceTemplate(){Throttling_Control_Register},
& B" j0 O9 I$ W, v//Generic Register Descriptor
7 B5 U" |( V& h- ~& ^$ _% [$ p4 P" l0 {
ResourceTemplate(){Throttling_Status_Register}
; J! q- G1 j0 y" N2 J& m# C) F//Generic Register Descriptor
& u5 H |9 O% y! c$ r}) // End of _PTC1 k! ^% A4 u7 p3 y9 X) u
% w' Y! a0 l2 n下述是一个sample code:
1 u1 g+ Y# Q# G0 ^) Y* U 8 e: M7 E" i& [
. z. j4 o- T3 ~+ v
//1 K; b) Q/ N4 y* Q, d; ` V
2 ?0 V" Z: X+ C6 E4 L
// T-State Control/Status interface9 i6 t, X0 |+ a3 ^/ ^: c" X6 T: Z
! d; P2 w% b6 i% A
//
& O5 Z: B8 d2 l4 e5 ~, [3 I' W
+ p1 b6 G7 D$ Z, WMethod(_PTC, 0)* B& c, f, \7 M) f) s4 S% q7 b
$ G# h6 D3 a0 \8 q: p( o{5 X# f% t( _" r* a6 ]3 a
. W* o" o+ D7 Q7 p* _//
( j/ G, `% P# U0 w6 f* c4 z! n8 e3 u* a: t' c
// IF OSPM is capable of direct access to MSR/ h9 b6 n$ M/ Z$ v: c H8 A5 X7 D
, F$ S* B& Q6 X
//
( ]0 e- k, U: r: D, AReport MSR interface
; e3 J2 G" Q; r/ t. N; V
- {0 |& D; Y* P% U, W$ ~) F+ o: v// ELSE
6 F+ W+ c O9 Y+ U4 O0 V( s2 e X/ J2 J
//+ I, Z* z% ^( t8 ]/ `
Report I/O interface# G/ [* m* A/ y; F3 u
. h3 V. V0 K* o2 D* L" f
//
7 x8 T) w; a9 d8 {! _$ |0 Y& M$ ^
//
+ d8 F/ [5 c+ g# E) h8 I6 e: D7 aPDCx[2] = OSPM is capable of direct access to On
9 E$ }, k% T; x4 P5 q+ G) ]$ B
E x# l' Z6 @3 C8 ~$ E//$ i. I% j* X# `) \% f
Demand throttling MSR3 `- B4 n2 t( j& `
2 v- D* p+ [/ n! c
//5 n* v( |% N! R. }; E
( |; l: v6 a \+ P. L0 c8 b: GIf(And(PDC0, 0x0004)) {
# ^- Q9 p3 O& p- n0 I. i; P4 o J: d
Return(Package() {# z2 |3 S6 u9 |1 C: A
! i: B7 y8 i! A7 d; y* jResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
% Z1 v4 f/ q3 X4 W" t' H; |- ]. i, Z0 p a+ P
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}& S* l5 C4 V- }7 }! Q' ~$ z$ L
" c7 g! l/ U' o4 `$ ~& {9 u})7 v! O3 P% y6 H' Y) u& T; T
# _$ ~; D4 J: q; B1 G( I}4 }; I$ m: X1 w! e, ~$ Y+ P4 h: Y$ q
' N& Z9 s! x2 C+ @/ e7 G- J
Return(Package() {2 Y, Z* V J# k, \: @8 H
+ K1 u1 D2 v% W* z6 yResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},& J: `( B3 S9 S4 T+ W
# H" ^5 |; F" I7 i `$ z! D- G
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}7 l/ B# P% `' L0 \* T
" ]" \8 T! C4 h1 h
})
* d' U# S8 J0 }: {' t& a& t! c4 G6 _9 o+ x. N% t
}& o' |( h) q* s) z. B% ?" X3 ~1 C& R
Z9 p6 k' x) J: w' M+ F& p w/ \
6 L- h4 ~3 e5 _/ n9 y) G
8 z6 W- Y) g# O( A& S7 x, M0 ol
& |3 G% @+ D* a, n' m_TSS
9 j9 ]: a' d9 r: b
2 }" I, p' n$ xThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
$ y& n9 A& Q" I) |4 t- W5 dName (_TSS, Package()
" x: e2 E1 _3 l- y1 |: g. ^{
+ ^+ p: u. I- d$ e, \$ g- X// Field Name
* [1 x" ^! X, {+ _( LField Type , R3 n2 |. S+ T, v* O, ]7 V
# C2 ~3 Y: f5 d5 H% v, h
1 i& }2 ]! q1 a4 W* S0 t4 D& x! M4 r9 [
Package (): X7 j8 c5 v$ E) U5 ?- G
// Throttle State 0 Definition – T0 # O4 v7 i% w- A9 i$ R0 m% ^: M
5 N$ V, D8 s3 J# ^
{
2 }% t6 T7 D' M8 S/ U
$ H5 f9 j9 T* T- C8 [" h! Z3 k5 D$ N
" k: f% `( u/ r( fFreqPercentageOfMaximum,
8 x) Q+ y) n0 d& l+ f7 l& Z f" Y// DWordConst
8 u- Q8 J- ~$ s; K7 I
: b) Y: S) }7 }6 p- D* N9 Z! ZPower,5 [4 s( Y* C4 s7 G" o6 P
// DWordConst 9 v- d v7 `! ^. H1 b# A
" F6 k$ a! \0 ]8 w0 TTransitionLatency,
. j n0 h( Y9 e% B4 E// DWordConst 9 P( d. L: T( z$ t- _# W
# y0 Z% u8 ]$ `
Control,) Y3 w( x u7 P$ r/ {% l2 M
// DWordConst , x; l+ Q7 R Z
! Z. ]& C1 ^8 V. V3 K
Status* E" X% }6 ]6 W# C, i( |( t
// DWordConst # i. H2 b- S# t" x7 @! U3 I7 ]3 Y
},8 d* `/ D' M7 y2 `2 e
……
- e: u; A- t* s" \$ V' Z: v}
3 a" H! l6 s% a- t$ U! f
" P s% o% K- w* e+ n1 LExample code 如下所示:
' K$ i/ z6 _( D8 K2 E3 w' X
9 Z4 p2 ^+ t3 q7 h. f( F8 N. E, L( i4 kMethod(_TSS, 0)3 I& N( e* Y" x# n4 Q/ T
. t+ p: j- D3 R2 X: v7 `0 r, [
{, ]9 U+ _ N A% c
5 `# @7 w& J2 v+ n2 Q
Package(){100, 1000, 0, 0x00, 0},5 ?$ j8 L+ Q$ w) F
2 B& S( t9 @7 B3 u3 jPackage(){ 88,( [7 |% E" S1 W) j0 b
875, 0, 0x1E, 0},
* M6 [! p2 l% }: l" Q& V e3 d. z5 M$ Y3 d4 Q( d! l4 Z
Package(){ 75,
0 J h) w7 E3 n750, 0, 0x1C, 0},
; Y/ e( ^5 p l+ m7 {, T7 ?4 W: |& J, O8 }* `9 |7 A' b
Package(){ 63,
6 v$ M8 ?, X. |9 y8 i: ~625, 0, 0x1A, 0},
; H+ W+ W9 G0 l, q ^; P3 s+ m) F; d+ d: N0 P# s, u4 F3 H
Package(){ 50,- n7 `) s0 o! {* O0 \" g2 Z! F0 Z
500, 0, 0x18, 0},- R$ x$ m" d2 B" [/ M
4 X& f8 O; B: T* |$ S
Package(){ 38,0 [% m9 z, O& T6 D) L
375, 0, 0x16, 0},
0 C; ?2 t* ?8 e+ |
7 s% G0 V% P; cPackage(){ 25,
$ ^" e$ z& y* x( m* S# K+ g, F250, 0, 0x14, 0},4 i) ~' d; P: T( P; ?! u
/ x6 V/ H8 h J$ `( Y4 gPackage(){ 13,
- h5 j5 \0 N/ x' z125, 0, 0x12, 0}$ `, V8 E5 u/ B( N' F! `9 E$ a% v
. H- J% o- x8 L9 ^
}+ C5 B$ e5 H9 T4 @( F* o# Y) d7 _* N
0 e% n( A: `( a1 U8 m8 S" E$ r: ], l: Y/ W2 H& P$ B
l
, n+ h+ a1 Y f b) G8 _3 e_TPC2 J8 u( {+ p/ h! }7 O7 ^2 i$ [8 U
8 P j: o2 `5 v' I3 Z
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。0 }8 S+ j; J q1 f5 g
& r6 u/ p9 U: m' N! C/ y- ?l
# G) o' M& a( L; X_TSD
# w% I4 c9 N g
& ?+ b- a$ l- j9 z: Z- vT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:8 H4 `. S- j2 W4 @5 V% Y: x
" Z0 [& C6 b/ M5 K. @, p C h
Name (_TSD, Package() 2 L) \* ?, |7 K5 N) t
# s0 |2 ~% g- }+ ^; Z, Z, k( d{ % V% |+ a; P* w$ W, @3 I
4 m9 ]) j, l6 _4 Q0 X2 R
Package(){5, 0, 0, 0xFD, 2}
- K9 j/ N" V3 V// 5 entries, Revision 0, Domain 0, OSPM
+ p2 L, e. ]: P& m- _* k8 eCoordinate, 2 Procs
d. o; X" y. j4 [8 D2 d7 S
( l3 d! i- X) f: Q
- S3 H; U* \3 Y2 i; F f8 e}) // End of _TSD object
9 H" y0 i9 @. q5 h3 N 9 o* W" F7 s. v* \ u2 |
REFF:
+ e+ C! W5 n0 K$ a1.
3 m7 H7 p- C# [( f7 ?) MACPI Spec 3.0& g& Q- c) w4 Y- j
2.$ H* i- X! X1 `6 s
Intel Processor vendor-Specific ACPI
, _( a; d* M8 ~/ I / l6 n0 X X2 }9 F( m* Q
% i- H1 ^* @* S F1 c$ ]: A( k
That’s all!
8 G z1 P/ T' }5 k. f# f
X4 F4 G' r7 ^- ^6 Z/ U% P8 a8 ^Peter7 l+ S/ u, Q3 m8 t" P
- I! G; J% q& l( h! r. k
2010/10/01 |
|