|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview4 o/ q0 C$ F$ u2 u- b3 p7 X( F
% F% [4 Z& w# C0 Y4 z) TCPU在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工作时间的占空比)的方式8 b4 H/ R- p: L
,影响系统的功耗和温度。
5 U1 B0 W& W8 L% ~; U* y- [ 8 t' o ^# t! _5 C2 w; S- j, w& x
2. T-state Control
* k! O+ t6 v3 L
) U; ^& D5 a5 D4 o' ~4 t1) U1 y( L% L) u H
MSR Based Control% g8 u6 g$ E- J4 n
g0 S0 h6 J, x0 OBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 , |, z+ P( H* _9 N4 U
+ `5 G* [+ @, Z- T* I7 K
2)
- }3 f9 W0 R$ }/ u9 E+ mI/O Based Control
$ G+ r( s. ~0 m5 k1 S ) G i( c$ ] x* y$ \
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。, q) O I' b3 u' I& V+ E
' m- Q; f, q5 u0 v* k
3)
' \3 W& S# N" e4 uACPI Structure For P-state3 K# T$ [- \( a0 B
l
+ O" ?% F- j6 ^_PTC0 m8 D$ Y7 I! ~
3 f. v/ z+ e2 g% J C! Y* CProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:8 G- z R- q' ]) |- E: ~% ?( G3 n# W6 P
2 t" M4 k! e- u: I# m( B
Name (_PTC, Package()
0 a q- ^+ s0 z1 i @4 p{ . v, F/ _0 v" V* D/ G* `5 h( K$ c" Z
( W4 ]+ X* ^" i' E1 F. d+ J- uResourceTemplate(){Throttling_Control_Register},* j" F! `/ W4 @, P% |$ a; M
//Generic Register Descriptor 3 |2 t9 h' R3 `$ D
N8 b0 P! T$ B+ E
ResourceTemplate(){Throttling_Status_Register}% p- g$ a, |8 d/ P& x' s
//Generic Register Descriptor
8 J l2 `) r" j; Y}) // End of _PTC
/ Y! ?9 c3 y( _, @; G! {0 c! u L % q# e2 |% A" s# y' o) W$ S
下述是一个sample code:
; @3 X8 V2 M* S2 g3 [ 7 L* }, P* o6 { I9 r
+ W t4 i5 m% ^( Q# A
//
* T+ C: ~1 N9 p) U8 O
) M/ e x+ r: @1 t8 m. D// T-State Control/Status interface' ]6 ^7 l L; P
3 j" @' \. J* P& ^ Q" J8 N//8 |3 K4 a& s. [7 c& W5 O; n
+ e7 S% R( ~- \5 l0 JMethod(_PTC, 0)& z6 S/ e9 |% f3 ]) L# B; F
- G' ^: o t* j# y4 ]7 K0 j
{% M; f7 H# c/ t# u) x0 [
5 D/ W* T; P; ~% b, T7 {//7 c, Z0 I ^& _0 G1 E8 `
4 n A2 x$ y" D/ W! g3 D, }: o! R% K0 k
// IF OSPM is capable of direct access to MSR0 s5 l9 D& c* Y4 o1 a7 N0 K9 C
- _* c+ H4 f: D2 y3 @
//
" k8 P/ U6 q- i5 _; d5 X, t' uReport MSR interface7 |( U0 g# R7 t; V
4 [$ t/ L; e: _# o
// ELSE; x! l& X; Q6 D5 }; X7 _
1 e$ s* { C" G1 e3 {
//
, q, P L T; m. Z% @* N. M. }5 hReport I/O interface
J9 M( p* Q+ k6 ^0 R N% l
~3 k+ b; _( b5 r. @) j//7 e- E6 w' a0 |2 d2 i' w. ]
. M. d- r+ y% r4 w4 H
//0 X( q! V) U/ G
PDCx[2] = OSPM is capable of direct access to On
H/ X# d+ D" d3 j. t
C3 u1 r5 r3 [% v1 c( h3 e9 U//
3 _" k7 {9 e5 I2 u; BDemand throttling MSR
+ l+ W/ B4 D& Z5 u
$ C: o8 s9 S0 V4 u4 ?//. E3 @" V$ {/ t, \
+ G1 E% _8 @- q- _; G- OIf(And(PDC0, 0x0004)) {) W" `: f8 t; ?4 ?
+ D" C0 `5 l' ?' vReturn(Package() {- ?9 Y4 Q0 G% x3 d4 n9 Y; m
: c5 w+ k. `) _ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},/ x5 t: h! p0 i' Y
& B6 t0 H- Y2 c7 G* y, z6 F% \
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}$ D' ^# v+ ]; S7 h- Z3 r
7 Z' Z; I: w O: K; X5 @6 R; _})
% ~" P$ S- Y. K; ]5 |' f! [
8 M6 x+ w `* I/ d3 F0 `$ E}& O% `$ y# D. _7 \' {7 y H
8 v j3 M; e* P/ b/ V' H# u
Return(Package() {$ o+ k: l( q. R! v
& N" f( [# s: A* l& \5 l z3 ~ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
# G& V! D( V8 V# w4 `
. s- @! T8 p; g7 N* X* lResourceTemplate(){Register(SystemIO, 4, 1, 0x410)} w) K+ \3 S1 U. h0 m- U0 _
1 }" E$ }6 [$ Y
})5 b' i9 x- D. z* v) U0 d" F/ \2 S
2 v6 J: x. H8 Y: h}! I* R1 w4 _5 Q7 q
3 ~0 l2 H$ P: P; u2 e8 ?
% _$ p/ S4 M' P: r: V
) `' Y" I; ~7 c5 i H
l2 e9 x; B( |6 X3 ?5 \1 z0 L% Q! |
_TSS' F$ s# i( Z# i ?
2 }; i) {* P( {! S: L9 \! P H2 BThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:0 L4 { M; f$ Z' p* w y
Name (_TSS, Package()
% t! x. |; n, W+ n{7 \' X# B$ `( m$ J) I( i
// Field Name
5 Z7 W9 Y9 U- A! U2 W$ g- SField Type
0 g6 Y& T4 y6 O( c K
( Q, J8 e/ b& l! Q
; |9 I$ E' Y/ C0 _) I
. T+ H+ V. P) o& R v0 gPackage ()( Z: s# z, Y+ P3 n! m3 H! x
// Throttle State 0 Definition – T0 ) h$ f b7 t& \% D# W
# Y) i8 f- b |0 G9 D{
, O) E) s/ U4 J/ _2 M7 [6 W
+ E2 G3 p4 [8 V( G5 N; N( F9 Z2 {6 E+ ~& m
FreqPercentageOfMaximum,
0 b# H% h" _' m0 ^' v// DWordConst
2 K$ ?/ ~1 \$ O3 Q9 ~! l; S3 e' y8 ]/ R
Power,: e- ], F! k9 n
// DWordConst
( k9 W& x# g5 `" k4 o: ]3 \" u1 ~) y$ ]
TransitionLatency,. r, P9 r' S- H3 n$ E6 y8 F
// DWordConst
; l# I; S1 e5 D/ q
$ ~% ]. q8 C6 YControl,- ~' Z+ T% x6 ^
// DWordConst
; j/ F4 g! M) o
' l: A7 X* N( P+ NStatus
/ P' F) U& N) }. z3 F+ }4 k( w// DWordConst
8 T A/ Q) Z, @) C6 @& A},
/ z, Y6 B7 L2 p1 W7 ]/ ]+ ^……* U8 i: j( Q0 C" _/ r/ U
}7 @4 Y0 r* e0 q+ [6 n( ?1 s5 U B# v( z
4 H+ J2 [5 C' D5 _: J
Example code 如下所示:$ D; m; ^2 e. d( g
3 u/ ?7 W+ L2 a. }1 b& o- mMethod(_TSS, 0)' T" R8 t I" k4 d. s, i" {
; U5 R, d- z( h* X{6 R, {& }# w! X* S1 Y
9 p G$ C1 [+ V( _2 ]# k" {Package(){100, 1000, 0, 0x00, 0},
% j! {8 E9 F' Q0 ^8 O1 [# _( V
: h& I; }' ?9 Z `Package(){ 88,& t2 ^1 P; i1 c
875, 0, 0x1E, 0},6 k# F! o4 z4 O, B- g! ?* w
1 `+ M$ ]0 L5 h ~
Package(){ 75, a" M& z& j0 d3 C7 [
750, 0, 0x1C, 0},
7 a( X9 ]0 u+ e6 O$ C4 t
+ t) I( {- {9 y/ n, h8 D. JPackage(){ 63,
! d/ _6 l: m; M2 }( v625, 0, 0x1A, 0},
$ O; `( o" s9 v5 I% q
; j G- J+ R+ X1 ^8 hPackage(){ 50,& P U4 T5 c* i0 ^5 L# D
500, 0, 0x18, 0},
+ W2 O0 c# d+ B' v
/ o. n) s. c9 a& X |' k0 oPackage(){ 38, _ d5 S9 |6 l1 R2 O2 S3 Q% n$ N
375, 0, 0x16, 0},
/ [# }" i9 i0 o& [% d6 U$ W/ K
6 \0 L$ v) _2 f% T/ Q1 X% IPackage(){ 25,$ z4 c% G3 e" T ~0 k1 ?' L0 S0 T
250, 0, 0x14, 0},
* T; E) d- R. R! J! `, |
& F/ H* F p$ C; t# p4 O1 kPackage(){ 13,; {/ f1 w9 k0 f0 Q; P
125, 0, 0x12, 0}1 H8 b1 y4 E& }2 u# ?
5 y9 V# ]( S5 t' S}
( t5 B1 D4 S0 c# \. P
8 s7 I7 l, H9 C s. C; `7 D) _2 ~4 T" b% T
l. g7 S% b- ~# B& t# T
_TPC
6 d; [# ^$ T( `! f q3 Q 0 J& b: J% ~7 _" F+ m$ l7 Q
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
8 o0 U) B; @' P' u
3 u9 ?0 H& f- E# ql) d: @6 P+ V% C0 g) ]3 @
_TSD2 K& E& l+ ^7 Z5 r" f+ b4 e
1 w) l: e, I+ I* g& ^" w4 y- q9 V! pT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:5 L6 ~# R8 H9 v! d/ d; M4 E
+ }' f1 z$ p- x& C. X0 OName (_TSD, Package()
]1 U! E" M; v7 ~8 a2 q7 u. n7 M; b3 i# m
{ 4 @$ x N( j0 u7 O
# w' z: v! }: T& _8 R& T( pPackage(){5, 0, 0, 0xFD, 2}
* K0 _) q! a" I, }8 |3 x1 c// 5 entries, Revision 0, Domain 0, OSPM
* S {+ r+ i0 {" \. R( x; L0 WCoordinate, 2 Procs 4 }5 P. H5 B. e( \- O" T) J: m
& i0 l3 \, p# M; z2 N, R- f) B% w4 ~3 U1 {: R' ^: [2 v
}) // End of _TSD object
7 z2 D, @ V) Y) P ]# J ( ]. w2 o% j; S# E9 @- x
REFF:
' M7 p1 G0 g+ {+ G1.1 a+ m$ r0 L6 Q5 R& V
ACPI Spec 3.0
) B( Y3 d# P, X0 m& y2 J8 g- J0 Z2.( Q$ `% G5 \1 ~- \9 a& w
Intel Processor vendor-Specific ACPI5 D3 b/ O( u: W6 ~* m4 y) x8 u1 z
( l2 t3 @8 x$ S6 D1 S/ L
8 W, n) f! Y7 ZThat’s all!$ b2 Y2 [+ z% i7 d4 d: O$ w
. D6 ~$ I" n' e; y9 v0 F# O, }
Peter8 c! Q$ F+ N3 Y: |& e& e& R- G
; s4 w4 {; g- r, {. j4 }
2010/10/01 |
|