|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview& y7 K6 F9 v1 V/ F! e" d
/ h. e# h( z: r6 `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, O0 a+ L
,影响系统的功耗和温度。* [# G1 h3 t5 x( L, r# B" U+ D4 C
0 N1 s' z) f; a! l* F1 d- i1 I2. T-state Control
?6 E: D3 c1 N3 C3 c
! y2 z% g0 d. H9 r. z9 A: m# W# n2 g1)
7 j! `1 t: }1 Q- V) `( z( k: `MSR Based Control% A4 s. _$ G' b! o
0 g8 j; C% ^$ }% u
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 ]9 w# d3 t7 [" B+ c- x E0 D $ y8 w' d7 u: A% T% B+ Q
2)& `" x$ |# o+ H. s+ z. e' @
I/O Based Control
6 a! W6 A4 g& J7 q0 Z 5 O6 a$ H4 c3 f7 q. Y Z' j- D$ i
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。0 t% S f4 u% a8 M1 Y
, [$ H- ]) I4 S8 \& p
3)" @) w7 Y+ g1 d: f1 r/ f2 v3 g0 F7 ^
ACPI Structure For P-state
$ A+ M8 J$ {4 s% I7 cl
" O ?* N5 P$ A7 o; D_PTC+ D8 D( G* k( s* G" A" U
: O* c- P+ k. c% z" y4 g( F: Z' i
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
) g8 V: G; N) g( O) T1 j S2 Z
: J, T3 f: L. P* n+ C& uName (_PTC, Package()
- ?0 G/ `, O5 [! ^2 O( t% e{
' Q) t' {' \: f5 b6 K, }( P
: d+ B; P1 w, H/ ZResourceTemplate(){Throttling_Control_Register},7 c1 h$ B; o4 [
//Generic Register Descriptor
+ Q; a( K- |4 q8 p9 @( C
% v' \$ Z: v6 [: E; k' EResourceTemplate(){Throttling_Status_Register}
t/ q; s2 D6 A( ^//Generic Register Descriptor
1 x- M* `7 J5 ] @" C}) // End of _PTC
) _' h3 l- ?- d$ p - ~# E9 S% E/ T, C. V0 {& f$ q
下述是一个sample code:
* x- i( F' t# F 5 O4 T9 a" C2 C4 q7 _ G
# z- Z$ b8 h0 B+ g8 }// G" g% `. { b2 d
+ Q% h0 x2 f' }// T-State Control/Status interface
" R! m6 r( p7 o2 K* [/ U
3 w/ I' w: l; L7 d6 [//9 D% S5 `$ Y! C/ k5 ^8 l& b: Q
; ^& \2 ^' e9 ^ }9 j+ iMethod(_PTC, 0)& C! l' b9 Q9 C" L# V% m G+ S
* i' N' P$ @) G2 n{0 K4 Z9 B# P/ f- E
* u1 D5 i. J, B, |% D1 X
//: q3 l: _! v: _+ H3 n, |
/ |* J& ^8 l3 m9 h- P
// IF OSPM is capable of direct access to MSR; F6 T; p$ o: O, M& b1 K' j6 ~" N1 |! ~
, N6 q) n4 X6 g% A1 j; w5 T( c3 E//
+ E9 |4 f' L1 \! xReport MSR interface* u9 Z( c0 A, B/ n3 l
' y2 p ^0 g1 z$ f o3 l% c
// ELSE) _5 Z) l5 Z4 I" x8 h) I/ t
. s; A, j5 u! N% v+ ~7 }
//% T- d$ X! X- v/ H2 p4 F4 F% _
Report I/O interface
0 m, \, }& D3 \; O! I+ a6 y# k. K4 c5 \) I1 |3 \
//* I5 q" g; L2 p* s& U
: P1 G) S* _; T1 T3 g7 q3 ~, I& B//$ v' E$ s2 n. A# Q, t
PDCx[2] = OSPM is capable of direct access to On
6 y' [6 Y6 ^: K V# p) ?8 k& U6 U0 e8 V" G$ ]9 q
//
- d6 {. E' p5 zDemand throttling MSR
0 h9 R' f: \8 B, ?
3 `+ F- }$ d" h//
# P9 m$ o3 t$ T7 f0 T" K2 S" o8 ?( G/ e; y
If(And(PDC0, 0x0004)) {
! t, @6 Q* C) o& [& |
) u) r/ p' |0 ?, }! DReturn(Package() {3 a7 X) X+ t% S3 R! E- n
4 ^; J3 E0 V' H- A4 a
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},( W9 y: }/ `3 _6 a$ f
9 H6 D0 x7 P/ O6 e: b* g, E) ^ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
) z: J$ @/ |( ~" |& A! T" A* ?% k
2 `/ R3 g; W$ T+ m0 X! A& b( m u7 f})0 V8 R; E. y% t/ a* {2 y# P8 e* M0 c
5 A3 L2 K' H Z9 B( {}
4 @4 p1 M- A# J0 P
) g5 z: Z$ x- Z6 ~ W) i% i3 J& \# BReturn(Package() {
! Y7 M, F9 o& Q8 @/ e6 T5 u' r5 W! y2 D1 Q( A, h, ^; k* H$ e
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
3 L& o% }' d* l% p; e9 u( x. H- S) t& a8 Y5 t/ {( ~6 t
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
( h4 l+ A5 o* w3 D# V r' w6 C& w. P3 ^5 h$ v0 P
}); W' f& H8 J, J. W7 N& V0 B$ H# @& _
5 R5 ?0 x R, b& p* T4 W9 B}( i6 _) W4 G) A8 `* D
1 ^5 M% [$ g( s" b0 @; d
- i( y a& t N
' k' x# o" @1 N% U2 G" El3 H- G2 _- O+ T7 A' K# i
_TSS1 K* \5 T5 P1 i& @ j3 ^( M9 F
: M& I* C% [4 h( P; W
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:8 {7 b2 L% X3 c4 q7 g8 N9 R
Name (_TSS, Package()
; D# N: r6 V' \{
: c7 t3 L1 |* ]// Field Name# l: E7 R. l5 x( Y3 }- g1 F
Field Type 0 ~: m+ F+ v6 u+ @/ [4 c1 M
1 z+ X# G/ e+ q6 h g6 n
5 m5 u3 |; W4 O7 u" e6 k$ x( w/ r5 U2 j; R
Package ()
; Z3 y" m: o: U// Throttle State 0 Definition – T0 ) |) W' L5 `& ~6 H" v2 p
u9 p4 ~) J0 K4 ~5 w1 g8 s+ z{0 c# M7 f7 d/ U" U
, Z0 W/ J M4 n( G2 V! ]4 @' ?
* t2 q8 y) R3 \8 U& J/ ]FreqPercentageOfMaximum,
& |! U; I, X8 N5 |// DWordConst . l" Q9 Z! u9 y* o
/ E K1 v( J( o
Power,
2 U% H4 g: b/ y9 M" ?/ U8 v// DWordConst
9 k. b1 q' E- }. V1 i+ c0 I( f: A' \5 T& H1 j
TransitionLatency,( C- G8 i6 w& J
// DWordConst
+ q" s, a0 W/ X/ a* b8 T$ K8 b6 }
( M4 w' K" X0 |6 IControl,
( ~$ u- _3 p/ O0 M6 f4 @// DWordConst
3 ^) l0 {1 `+ W9 D- h% ?+ Y& t; o3 T* e) s
Status
1 F1 }* |4 K% N4 ^) i$ R// DWordConst 6 @3 a% `1 d, N- w! X
},
0 g! A* p! M" C4 }4 c6 c……
8 F3 Y& S+ d* Q+ e! m, T* A}, W9 M- X+ G5 q; p- H! y
' v* c0 \8 y) X( o' e
Example code 如下所示:
7 n* W6 w% s e( M9 e: f& ~6 {" j" P5 q
Method(_TSS, 0)
8 o& Q9 d: Q; h9 k, \- p: ?
$ O( b6 n7 y! o- O{9 G5 J% z% ?4 ]
7 S/ y# v7 B2 D; m% x# ^0 x, @Package(){100, 1000, 0, 0x00, 0},
) G# q' e' k3 _8 V. K
1 O- L" {7 C r% ~- oPackage(){ 88,
- \+ e. i4 N g8 e( Y& H875, 0, 0x1E, 0},
8 C, r- f o* e/ ]: @) R- P$ f+ H( ]* k) p" ?2 p/ [+ |5 m
Package(){ 75,: E. g, e; D4 y3 V" H( ?% v
750, 0, 0x1C, 0},( M' p* V% Y+ T8 t# J
' @* V" l) k2 r& V' @
Package(){ 63,* ^( e# G; c1 [- Y. d
625, 0, 0x1A, 0},8 `0 s0 a- Y7 K. k; l
6 }1 J! c7 h; w* m: i
Package(){ 50,
8 Z8 `$ Z* O% [2 n6 T' W2 b500, 0, 0x18, 0},# l( R- `) ?' K0 u) K
5 g) s7 L1 m" n5 e2 P5 X, C
Package(){ 38,: X8 P+ m# i6 g+ D" X7 \
375, 0, 0x16, 0},
3 p) J8 k- }0 N# d0 D
& M( D# e$ [" V$ ~% FPackage(){ 25,
( T% V) u+ i/ ~250, 0, 0x14, 0},
9 O0 q! F$ `/ q+ V; G3 h R% ?7 ?: T1 Y$ { Q5 i3 T5 f
Package(){ 13,
7 B: V, q# o# U125, 0, 0x12, 0}. b$ a& `: \0 G. K( k) |; O7 ^2 k
, z# r( x! @% V}" _ T- ?4 R6 i
5 z% \- i# m) r; T' E+ S
& s! n, a; k+ y( j W4 g4 G& G* ql- H& H/ K. q+ i# R
_TPC
3 k! _; ]! l, X0 c+ Z9 Z 9 `% W: K7 b- x5 O5 {% W
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
1 H7 X8 R2 w! G : J& S5 |' ^2 B0 K. s5 W
l; J; ] Q3 p! b
_TSD- d) I) k3 q' v# {6 H/ \
5 n7 p. v% O+ \* T2 |1 L
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:7 k4 K, ?, o7 {- w( ]/ b4 a
( o8 |% o# g8 H5 L, Z# g
Name (_TSD, Package() 8 E. |# E' P2 ^$ A" a. p# `
& D3 J, Q& v+ Y: h; [) U; A6 l. k{
6 ^1 T/ R) r$ d2 w+ ^: n3 k: I W3 {0 `1 o. {5 t/ K
Package(){5, 0, 0, 0xFD, 2}7 H% I- X8 u: \9 T& q0 [! E
// 5 entries, Revision 0, Domain 0, OSPM . p# F) ~/ R. m' r8 s6 {' \
Coordinate, 2 Procs
: t* G5 R& [" ?1 G9 g4 ?
- Z' u8 n- P) A8 S
% M0 t7 F3 j9 e8 F( N/ {}) // End of _TSD object
, Q7 p ~! U" e) S6 ~) V - g* Z! G+ ?/ s8 E6 u
REFF:
6 P) e+ S7 k$ Y5 `1.
8 I6 ?1 ?' D3 ]+ RACPI Spec 3.0* z$ t& i' ~ I' Y% U
2.
3 C3 M: {, W- n. m1 L+ EIntel Processor vendor-Specific ACPI; y' \8 O* {' V! N: ]8 X7 r
6 i' o/ ~7 `2 Y
/ i8 o/ L, k9 T5 i1 w0 o/ [ Z8 rThat’s all!
6 G0 _- r" N; n! }; B * B; ]4 A' a, X% Y% Y7 _2 c
Peter% X6 S! V) |. r
}4 @! Q1 z* H
2010/10/01 |
|