|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
3 l) w. w4 P0 A
- e# b3 @: m% x2 U" M+ c- oCPU在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工作时间的占空比)的方式 [$ d; m4 ]/ {2 e0 F2 }
,影响系统的功耗和温度。* [" }! K( r9 D$ N6 ^( H; J
+ g/ ]) ^6 _+ ^, s8 p0 d
2. T-state Control
, \1 L7 C/ A( C$ Z8 [, O * t" j: [) U: L- ^: ^
1)
$ w0 v6 [8 b+ m0 E3 c. d( u# VMSR Based Control' ] \3 l8 @* f$ |+ a; Y
7 ~- Y; L3 ?$ u" Z+ j t3 f0 sBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 M8 o: m! k% O. G$ @
% } ]9 E0 g7 Q6 Y( _! z0 z2)& R6 p1 _0 G! E H6 ^
I/O Based Control
6 e+ Y$ m1 q: a# l % u3 G' X" c9 a8 {6 a7 Z* L5 ?: ^
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
% \" v4 h) r) c& u6 Z
+ J4 B* F3 u( I3)$ J+ m: y4 E M! w5 Z, ?! _; M7 {- k
ACPI Structure For P-state: ~. p' c9 X R5 ~; T& a6 Y
l
, Q) }) M7 i5 x1 q0 O_PTC9 R4 n! c' z. }# t4 v# B
+ c6 b) s5 G" L; T( FProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
8 b2 W! ~4 M$ ], L$ q
# D, I7 r7 f3 u% ^) g5 Y: s. OName (_PTC, Package() * _9 E: R( [) G g, K3 Q% X
{
# _; ^- ^! h. k; x! W) r8 h& ~& ^% @+ u
ResourceTemplate(){Throttling_Control_Register},
2 r& i( c6 I6 X7 v//Generic Register Descriptor
- |: n; o6 Y" n W( C. i, L
! I, X9 h" b& U, C0 g% Q0 LResourceTemplate(){Throttling_Status_Register}: r0 G8 c- Q+ f+ `; J' P
//Generic Register Descriptor 5 W J! `0 p0 a$ F5 [
}) // End of _PTC+ T& k* Y, o' B3 D3 D* b
\5 N! M3 k( }7 I, y" R6 c1 f+ o下述是一个sample code:' B! J4 p4 i% P/ [! f0 R
$ K0 T5 F4 ?( ?6 }& C
. N3 X- m; D7 j, ?//
6 }3 E8 q0 z H( z1 D+ O5 D1 y+ X+ W) k# {, ?
// T-State Control/Status interface3 v4 ^5 }0 }3 l
5 f' m1 c. ` d$ }* I
//( q0 ?" u: @1 G+ c' d, `: M4 w' a% S
- Q& v6 N: L# @. ~* @/ s
Method(_PTC, 0)7 Y( @) P% m4 e8 p
9 v3 W) p2 d# z/ I5 K5 k8 Z
{% Y; U0 e* Y6 `, H# Y/ F
8 {5 Q7 H" T" {" ?/ j9 z//; ?- N, g" `, U1 Z0 c. W
6 ~8 T. e0 M n: U2 k4 [* H f$ O
// IF OSPM is capable of direct access to MSR* `9 j$ h6 [1 s$ _+ C7 @9 h" G: h
9 U( W* ^% }& k# d' |//$ Y$ s# o0 S4 H7 P+ b1 n- O
Report MSR interface
* ` n, b q% }0 L3 M
# p3 \$ H) t& m$ q% y: C// ELSE) B9 ` N2 I) k+ U8 O4 `! q
* F+ D9 s" Y' ]; W( i& U6 L" m' i
//, t. e# ^8 E& c1 V
Report I/O interface
$ \) G$ e6 d" j$ n1 O; I" O& T" `, k* R) i1 U8 B% Q& l/ \0 P0 b( J
//
$ F8 D: i0 G/ N' C1 u# }. Y/ t m7 F( q& f5 m, x
//8 p) v( n. l4 P6 [+ j2 U0 a
PDCx[2] = OSPM is capable of direct access to On
+ p3 A: o9 X4 }: V- }9 z7 n. B7 m& T% p! z" }1 p# |/ K
//
6 ]) `8 F8 q- V$ lDemand throttling MSR4 f8 I" C! ]' t1 V
! w8 S! w3 U( n9 P9 ^/ L6 [: O
//3 f5 E7 k* r; b5 h% f
) D! X+ Y; a7 r# S9 `6 J) a
If(And(PDC0, 0x0004)) {. ]3 n% f8 A, {: T, o# i
6 y! M3 v3 l2 V9 Q% v, d. w
Return(Package() {; `8 @! y3 y- Q1 M
! M3 T% d& b6 B* l' F
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
1 v' x9 Y4 ? h- u" s1 U) B( e" m' B" A7 ~; ~( H
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
) d# c) B. j9 H4 [2 i; G" ~- O0 Q3 H) z3 r, Z6 }& K) A! U3 G
})5 D1 b( [- s. w$ I$ W
" J# @6 `5 Z% Q; ^
}4 z; s0 B. W1 q* r6 K M% [
: Z- V2 Z8 L6 X1 V% v" x) RReturn(Package() {
0 b9 ]: Q1 }+ d8 \3 X) v5 f3 [4 G. j; P
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},) Z" ~! x* c$ @% I5 U4 i
4 z7 j9 D' ]# g7 k: ^1 m
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
; u; E4 L& T. N& `# v( r1 q) z% H8 n4 L% y4 ~; v+ F5 Q+ {
})0 z5 `# x4 O$ b8 @5 {& \# W0 D
1 g" ~: G6 @# x! q2 H}
: _! `7 n. s8 F* O8 ?/ B. l- g
* d" @4 ~' L/ ~- V- U/ l) L+ i7 t
. D6 W: F0 d; Z) wl9 Z4 h- ~% M% c3 F3 X
_TSS
+ ^# _7 N4 [! y, S ! ~4 _' J i, K- s* X% S- y; j, f
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:' u0 F V0 V3 C! Z! _; t$ g, P- W
Name (_TSS, Package() ) F# g( q+ C* d/ c9 H7 L
{
/ n; U" Q0 ?7 q// Field Name1 v5 P- B" |( D* h E8 X
Field Type
0 G, S- d: a8 w$ i! \: B
9 [8 N8 g4 X2 x N: h8 L
; X3 v; n2 |: ? E/ Q" A4 c, j1 r5 l# e6 n% p! w1 S s
Package ()
" x/ N7 K/ @: I, k/ A// Throttle State 0 Definition – T0 $ V1 ?' i# K [$ U
+ S+ I% Y4 D' ]% U. d{
+ ^7 O; f$ v9 F# Q9 q! _
0 n7 m4 p( b4 `6 J, C. g' t6 W$ ?3 Y: c: [- e
FreqPercentageOfMaximum,8 p7 s2 M3 ~# n! a
// DWordConst
0 ~# X; L6 H: Y4 i. r+ f
! \/ I% H2 L8 o, K( x6 @ K# G1 }Power,
* V4 D: ^# j. P' g0 o; U1 @; y, W) B// DWordConst e! `: _, W5 {8 W7 F" s U
5 T: a: l# o- x- ~1 Y
TransitionLatency,1 c' Z1 g6 J& z; \5 y
// DWordConst 8 W1 ]" G. D5 [7 M( L! p
" T8 Z( r5 z/ \: W2 ]+ Y
Control,# c- S/ T. t5 w: M% d
// DWordConst
+ t, b1 S1 F) Z* ]& N [5 G9 R6 z1 X/ W$ W8 a4 M
Status% x! M4 A6 \0 N) D d
// DWordConst
( k' Y3 [% S0 l% M},2 V9 x6 n3 R9 W' Z/ R
……
" Y" t9 B0 i# H}
/ g" p0 a/ {2 N
9 r( q) V: y, PExample code 如下所示:& x! r' ]& } E. w, H; F. `
* H2 J$ A. P0 o& a0 N& kMethod(_TSS, 0)3 r& d) F* G7 {
2 T2 o7 |7 M) F; a/ `7 b: _& }) H{
, p% c; L6 f* u g7 H/ S- ^ p! Y' ^ _3 q S
Package(){100, 1000, 0, 0x00, 0},9 z; S* ^- q0 @0 Y3 d3 ^
- g; } }' n \2 ^: DPackage(){ 88,
9 K( ]2 T3 s; ]+ j+ a- }! L875, 0, 0x1E, 0},
, m/ f" B/ Z! b0 a1 M4 s* b7 X- ?$ ~$ c- s( E7 g) B
Package(){ 75,
( E% H o2 n0 b7 J1 e4 N750, 0, 0x1C, 0},
0 z+ y* b) J7 _7 a/ `9 o! K
3 S" t; S; E1 T8 ZPackage(){ 63,/ c; o7 @" j* E3 T! w
625, 0, 0x1A, 0},; `0 ^- |: F7 u, x' q" s( D
0 j9 P& a5 l+ |8 q: G" }Package(){ 50,* q2 B- @4 N' ?: B2 s, }
500, 0, 0x18, 0},
/ z4 P' u: U2 J& I8 P9 H5 t! l( E d1 Z" N1 [+ Z% i& u9 c- t
Package(){ 38,
' N( R) U: F) Z4 G6 i# S) }375, 0, 0x16, 0},# E/ l! {" }/ q: v
3 ^1 c2 R" v( H3 V+ yPackage(){ 25,/ q4 W: F. J; y% G
250, 0, 0x14, 0},
8 x& y& c( [9 w7 M: g$ z1 A/ W% R* d
Package(){ 13,
# R8 A/ K$ m/ c. ?$ h125, 0, 0x12, 0}+ f. G5 J) A2 b9 ~9 h
4 S1 i) S8 W( [' o
}
6 W7 O& i* s2 l5 K. t: I
0 ~! R2 W3 l0 N Y, }3 N- q: Z: f
# P# n: b5 @, G( w4 Ol
; z3 X% O7 y- a/ `' f1 L_TPC
% N& l4 B u8 }6 q
! D3 Y% g+ y, A% c4 _Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
) G( \& u. g2 h: ^/ ]
& j$ U c* D( u9 p: S& N0 b1 Ml
* ? D7 ~! q! G' }6 C_TSD
! I: F0 X2 u7 u& k: p
f' k. H2 ^; B h8 U4 wT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:! x2 V1 ^) X: s ~1 Q
+ Q& s0 s6 E' L- j7 W' ]2 W) E, CName (_TSD, Package() & m% H2 o/ o' m7 u, t/ i+ j: z
3 J% a7 b5 R9 y" `1 L- J{ ( D$ e8 b" A+ {) [3 v2 f3 z
6 F- g9 n5 c. S7 L# l% oPackage(){5, 0, 0, 0xFD, 2}
/ }& W( \$ m7 ^// 5 entries, Revision 0, Domain 0, OSPM
0 z/ Z& x9 ]4 V9 T+ ^0 WCoordinate, 2 Procs 7 h: D' z o; O" [0 G$ D2 F2 ]4 H
; N- {: H% [3 M' f9 p! E; n
5 z% u. C, i6 V7 K7 h5 D}) // End of _TSD object+ v- J2 N. L; z) W& a6 ~) _
, R: F8 {! A0 s! d8 m [
REFF:8 g" _9 {5 ~) k
1.
( }5 f8 p% y' F+ S: j& L2 }9 [ACPI Spec 3.04 a7 w+ P( ^% e7 b
2.
5 E5 K1 {: ]. h" L- \9 j5 X6 n7 ?3 F# pIntel Processor vendor-Specific ACPI
, M0 }* r2 M$ A7 ^ " b- s2 \1 N. F2 O% L* t) ?% I- o
3 B/ U7 g% V7 p y( q5 c
That’s all!3 A& E7 q& _4 v4 i+ b
5 K7 j# G/ h; [" cPeter' B, {+ T1 J! t9 _. b" R
. b6 l/ T2 g$ S6 J+ g) j2010/10/01 |
|