|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview& X4 t |2 H, B4 \8 s: Q
m( v' E/ Y5 x3 x0 H& UCPU在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工作时间的占空比)的方式, `' p+ \# ~5 }& m" }1 T) b
,影响系统的功耗和温度。
8 D$ N& H* f3 _* ~7 { N% m # U w5 _: }' J `0 W) S
2. T-state Control2 W. J9 c+ p- I
0 V) b/ F! F* v2 \5 U$ f
1)
( T @8 _5 D5 _/ q, w- nMSR Based Control) z( ~# d/ ~# q
0 b+ s4 p. ?. M7 g/ v+ D& `BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
4 g; J6 {5 X: j! N+ k4 r
+ i. v2 V) b$ Q- O2 R a" O5 X2)* {7 `+ ?5 S1 K# Y) f4 }9 W5 i
I/O Based Control
: `, h( V! _1 H& h: M" J
9 i, H% `6 q/ Z: I: h+ t$ S$ v除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。: X+ o7 n4 `+ Y' p" d U
- j4 m8 F( I% Y: i, B" |6 o3)( B7 z% n* v( N0 H* e7 V
ACPI Structure For P-state
Z! K7 o4 F# X8 ?l
3 d( f0 O4 B1 E+ a9 b1 d_PTC
; `5 a7 E$ o: J0 U( v" c. l7 @
& b* C* l7 e* k, w, T# B8 }6 JProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:# ]6 H; t* s" L" n6 @+ R9 O8 x
- Y5 i( N, [6 j4 b( i* J1 |
Name (_PTC, Package() 7 {6 K0 N* M# N9 K4 ]3 ?7 ?) d( {% T
{ ) [9 a( ?5 Z2 w4 k6 G2 p3 v( z
$ I* R0 p' W, O- i: Q2 EResourceTemplate(){Throttling_Control_Register},
5 V5 |# _8 M& `" N$ }//Generic Register Descriptor 5 O% ^. X& ~& a0 V2 Y
) C# M/ B* |" ^! Z& c& N2 X% GResourceTemplate(){Throttling_Status_Register}
' s( Q7 o9 ]. u7 e5 `% r//Generic Register Descriptor ; N O4 K) h2 M% t4 O& N- Z( b* O
}) // End of _PTC0 Q( j, k' A3 z% g
0 }; D( e. \' D下述是一个sample code:
1 t/ L" [! V1 F+ k+ b# U8 f ; |: J3 X7 M, x1 J/ N
9 A, ?( Q. s0 q' U( D3 Y//
/ F& P" ]; D- _) O# n* O
0 e2 d/ n5 }4 Y' p" j6 l// T-State Control/Status interface
. J- H1 M m6 D* f0 p/ _3 ]- K3 w$ t- ^* n0 s" W
//
$ L' V/ H5 | g. F0 c6 \
. P1 c& ~2 P9 \Method(_PTC, 0)
( W$ _5 ^; h6 c9 |2 W- L' S# T& A6 `+ b. y
{
5 [) k' T# e$ F) {3 b p. z/ f# }- m0 Q# V+ x4 \6 q. ~
//! A( v4 S$ i0 M; L
6 H' b9 W8 X* s8 S
// IF OSPM is capable of direct access to MSR7 k$ C0 \3 c' q& j* h
* n" {$ _4 G3 S4 b( {8 ^//
$ V: j- H2 f1 l, \8 mReport MSR interface
& \( W% o: |5 y% T- M, t
' c# Q0 ~; x! h* e. S' k! w// ELSE
2 j3 ?* n& c5 I1 _) v, X! J4 [3 \6 Y- K, p( J; X# W; ]3 d! E8 L
//
2 S7 C; @/ `6 U' E \Report I/O interface6 ?" H/ }. m9 w* Z$ `3 n
% N* P+ U/ g0 ]- N) B0 U" ?
//
: y2 Z0 m" M7 W, }/ d9 [5 U2 Z9 G4 H. m" p7 m
//
- |% I& d) l, `% J' [. }PDCx[2] = OSPM is capable of direct access to On
: ^3 e& m& x3 N( H1 v' k, Q3 C, y4 a
" T) W7 m, n5 W//
1 Z8 h" G4 K$ r( x \5 e, cDemand throttling MSR
% O7 g( u% v; t4 T5 ?# x
# a% f" G% }& N5 z//' \6 I7 t7 A) ~. c' z" U* r( }' I
?7 H* Q3 S4 J7 Y5 T2 ~" w9 g
If(And(PDC0, 0x0004)) {% F& ?1 t4 ~" B2 \- c3 i2 u1 O5 s! O
! x. `4 I4 y/ t4 M0 h3 }/ jReturn(Package() {: j* o' I2 D* n. }8 k& n
+ `7 y- p* g! g# H5 ]! \1 {
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},7 U: ?6 c9 n1 U. ^9 k' _
# m; q9 f3 f4 k/ U# T3 S
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
+ Z1 D7 ~# g2 r/ F o, s2 f- M, v
& A n' { D6 |})
" V' g* e7 S4 T& Z! h V1 U
8 E, E) C# n0 x. ~8 O3 t/ l' L}' _# P% \8 k2 p& ^. e- y
- }1 @; ^7 Q/ k8 J) F
Return(Package() {
% N+ o9 T; D' H! T" c7 y+ F5 t9 R( V) `9 _, G# Q }. G
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},7 N$ D) A `( F5 Q: P! V r/ s
* G/ i7 _. { i' A' FResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}+ r5 A* h- e9 a3 T9 P
. V! z# w, s( L* m( N})
0 @& \6 o% k4 O1 e7 A. }2 L" j! ]* I- V
}: p" a% C+ I. w6 W& ^) l
" |- t, t6 u# A' L' a5 ]) b" \/ d) l/ \8 i: ^% z/ v/ Y
( M) U. X$ n# U8 V5 k
l
6 g* r8 m( L5 t8 E; j_TSS
A/ j: ^1 ^. x/ o+ d7 v " C0 |5 L* l6 L* y& x
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
1 [0 v' j4 y$ V9 f: M1 q$ MName (_TSS, Package()
' Z- N* @" b8 L# j2 e% x{1 A* U- I5 Y1 E/ o& j6 [
// Field Name
* u2 y$ M. _: M' ?7 hField Type
4 }! ]* D0 B4 L* P+ A8 m; E
; e2 Z: M( y# ^6 E, n: x" C: e2 O: H. s, Z) x
6 b/ l h+ h/ {9 iPackage ()
R' r3 f1 I3 k) X// Throttle State 0 Definition – T0 / D7 O8 N1 \$ x8 {
1 o5 u% }9 {# g4 o$ h I
{
; x! o% |+ d; l
( Y7 f4 O/ T0 t; D }7 a- h- e9 Z
9 \5 q, M: \9 z9 OFreqPercentageOfMaximum,2 u+ L" \2 z4 D8 a6 M3 `
// DWordConst 2 `* k1 X4 u4 L- M* ^" A: X# K
6 R: _3 P3 |: X: N
Power,7 N. c' P1 q+ Y' K( l
// DWordConst
! O" J' H6 W( T" Y! T
, q( M- b4 {+ @9 D& \TransitionLatency,
i8 m3 ^8 n, G! p// DWordConst 6 _6 {! N% v6 l* H6 ]
0 Z& D8 {6 c9 F9 }
Control,
- w9 x0 I# M$ D// DWordConst
$ t! Z& ]' e% B0 ?2 }- Q1 h: a& T% g9 w
Status
9 }$ q3 y: [5 O5 X* P$ q// DWordConst
T' M+ n3 c7 e7 U _},2 i! A) u& P: f) _1 v
……
/ m: n8 S u2 J4 @1 w8 k1 f4 I}/ Y* q$ `. _) d" X; W
# ^# P; D, p; ^
Example code 如下所示:9 T4 H: w2 K+ Z+ U; o0 `/ w
/ Y/ X- B' M9 N% [# SMethod(_TSS, 0)
# ~' `: \6 B- D/ W% w8 c$ G& O3 q! h& B3 ?1 w/ D# h2 d f
{
- ^% K! s- X" {2 `8 C9 O/ p) @' G
Package(){100, 1000, 0, 0x00, 0},! C+ o4 ]1 g* w" l& t( z
+ v9 t& I' z. {) Z) rPackage(){ 88,8 R5 P9 X1 O1 f! f* x8 S
875, 0, 0x1E, 0},
' `# }2 E: F3 w* I; J- y. v6 N h4 V( K: V0 }% j$ A, }
Package(){ 75,3 Z8 Q ^* y. F
750, 0, 0x1C, 0},3 S' Y5 H# k( b
+ R" H+ D# C7 u- T
Package(){ 63,
3 i2 L- ^. \! e$ L625, 0, 0x1A, 0},: I$ S/ R9 h7 h' b3 ?: V4 a8 [
" N z: @- z" l$ K7 m& B
Package(){ 50,4 R( o, G. V# n" [: Z2 p- V# o
500, 0, 0x18, 0},
4 P0 m. S6 E3 l5 h/ \* H7 v4 j
Package(){ 38,: b+ Z4 X( G" z) M
375, 0, 0x16, 0},2 i7 O* |1 z2 r6 [/ R5 c9 [
& N7 l, I% a: }1 l9 S: g, X7 i7 s
Package(){ 25,1 b- R$ z# F2 z" P, k9 S2 _/ h
250, 0, 0x14, 0},* l5 V- l! {# v/ H( A
6 s2 ~. `: E) }! a' R# ePackage(){ 13,
9 F) H k+ a0 g J) d3 c9 \& y125, 0, 0x12, 0}
. X V( s9 H- @+ c
7 \; j3 U8 q4 q1 Y; E% l}& z6 S2 P8 _1 s
5 W. k0 O$ Q- r2 z! }& E
% ?! c7 J; y( x: z/ C8 k, Z
l
+ U/ `. C; w- h _5 p_TPC
" w3 ^$ [5 |/ X0 ~ " e& v' v- G& i" ^" Q5 b* j
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。" Y9 b( }6 I& @
, C8 `+ U6 V: J9 x" w: B( A1 u
l
4 P' Z; n/ \0 b9 N; g9 ]: L0 V_TSD& R$ G" Z+ z- E: d, [7 O9 J6 f3 l& K
: R, t% _7 L2 n6 a GT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
% [/ ?0 [2 m+ g7 ?- V0 M ! E) ]6 Y- p; u0 C( p
Name (_TSD, Package() ) L; I" V6 Q* [2 L; D" G/ j7 M
5 j4 ~ s) w1 I! e# ^) {% |3 S
{ ; E+ B2 r$ K0 _
' L" a3 C7 D3 O5 K4 C
Package(){5, 0, 0, 0xFD, 2}
% K" K/ V7 @& \+ b- ~) B Q// 5 entries, Revision 0, Domain 0, OSPM
5 B6 A: @4 n' I8 g1 W' VCoordinate, 2 Procs
) K0 v+ d2 d$ C
/ ?# n; p/ n& |: n2 ?& A4 U) B! d" N0 B# z9 o( h
}) // End of _TSD object
2 s2 @# L( s% i7 y : n+ A7 T- I- X1 @3 P
REFF:
2 {& \: g8 t: L! i6 S1.
; d- ^8 N# e$ ]* J1 h0 M7 ~( aACPI Spec 3.0
0 r$ }! w4 g# p- r! G4 }6 n2 l; |2.1 u6 G* u5 \4 Y7 R. `2 y$ r
Intel Processor vendor-Specific ACPI
+ D' S0 C$ b1 n$ f2 t6 x & p/ f& K& J3 v; v& C
. @! s, ^' L! g4 t @: ?7 O8 o6 MThat’s all!
9 i+ j% |. `1 Z0 M4 L/ M7 n
% o+ f; f& j# c) v( l zPeter
: C G' a0 [) B# t$ H! [ " Y0 R. o# M- f' M9 [# @
2010/10/01 |
|