|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
# ?/ T1 ^' v# |/ q1 X$ O $ p5 i o4 t; G# l9 ]$ r& g
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工作时间的占空比)的方式1 d5 k3 P2 c# w; F6 Q3 N; o3 |
,影响系统的功耗和温度。1 y3 f( S3 ^1 o# T {5 ~+ P
6 J% o, D( M3 u# v: a
2. T-state Control
6 O- s7 ]- I3 _' J; K* q / E/ u |$ d% _
1)
& W* Q/ r2 U- e2 J7 g9 o1 z/ p: FMSR Based Control X3 y P" j5 W4 D6 x0 Z
9 \: B4 m- S% v, Z+ n* F
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 ( I; F" z' f- y. l9 `% ?
* k: @" j( d$ R5 M; B `2)
# b! V* r, R+ H1 {I/O Based Control
9 w& j$ w9 x9 r5 c9 I. [9 } & f% e- r9 n2 D8 t5 {
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
) O7 Z1 `7 n) R! I \2 S
' G' \! i7 w! A0 o4 |2 n, A1 {8 E: S3)
% d0 O8 {! l8 I3 H+ |% U1 RACPI Structure For P-state
$ \2 d9 a k- ~* L* I6 b9 Ul
6 | h+ }5 {: y% z# e_PTC
7 |: E0 Q: d* H7 s. J% s- _( g3 v
m% }$ {0 w- _/ {3 `# e$ h4 RProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
6 s0 P1 h2 {: \
+ L) D( l4 `- _0 n7 f2 V; I/ [Name (_PTC, Package() ( j$ w \+ S' t
{ 0 b1 {6 _) Q& T2 ^. @9 G
3 G' O" }8 ?6 T
ResourceTemplate(){Throttling_Control_Register},3 p# N N' _( T5 n4 o/ C, F, u O
//Generic Register Descriptor
1 d6 x$ b' c' }% F6 I4 q9 \5 x8 _
ResourceTemplate(){Throttling_Status_Register}! g6 c5 P, Z! x( K
//Generic Register Descriptor
: q) _+ H; B- t8 [" a6 B}) // End of _PTC0 s8 O9 G6 Q w* u* R
0 B8 |; V. `( |- B3 x
下述是一个sample code:
: P8 Y# U7 Q7 z0 {5 R * T5 W2 F5 h5 k
: J* S# B* {# d: {1 S# h
//
( B- q, ~( d, _# u
/ o1 @7 u. T+ ^' K9 g, y6 {- v// T-State Control/Status interface
+ w7 [# m. {' p) `5 a" s5 K( Q0 a' @1 U$ I
//
+ M p& ^( `; E0 v a6 s1 G
L8 }2 A( z' M* d1 ~3 c3 W& nMethod(_PTC, 0)- _- v1 C9 C& V6 o2 _4 N8 B
! n" m7 ^% M) m# q8 d* H* ]2 X{4 e6 b$ s+ j2 v6 {5 v2 H
) Z- {: r0 p! Y$ f5 A( r. V1 G O
// _$ j; p7 W% A5 Z* ]& v# P
0 t& o0 f" E, m N- W+ U// IF OSPM is capable of direct access to MSR0 o# B! F+ F: E5 P3 m2 m, K9 Y
+ j4 K+ s& M/ L/ j; b//1 ?0 ^9 O2 ?; D( S* ]. |* E/ b
Report MSR interface* y, [6 I) d9 h$ _/ C
) j! g, h3 [* P( b( [6 C" Q% ~; K
// ELSE
6 x& {$ |6 t4 L5 s0 N' L0 y9 k) a) T U7 Y
//
i9 p7 T4 @+ W8 ^Report I/O interface, _- B) O d& X
8 f* @* r/ X% M: e8 o1 y- V6 E//& `5 e* q/ V$ q/ s& G9 t8 p! T' K+ m
" p* G9 e5 R/ z) O. k; g5 m+ R//7 B# W1 @! b: @2 g$ z
PDCx[2] = OSPM is capable of direct access to On
) {* \1 ]! ]5 a+ K) q/ G8 v
' {0 W4 p0 V/ C' }+ ]& {//
A% x8 O# m7 C- F2 v2 o' {+ ` cDemand throttling MSR( E% I: D3 B, m" V9 o; r( s% a( k
, W1 x; R- } B3 E I S: X! K//
' l) g& H [9 D& {# v4 l9 v7 b u# X1 [6 L* L; D" @ L4 E0 q. } o
If(And(PDC0, 0x0004)) {
6 v# }, @, b% N( @# g- w2 T& x6 t4 i
Return(Package() {
/ Q$ x. k; Z' J
- e+ s" T. b( |& r/ F" tResourceTemplate(){Register(FFixedHW, 0, 0, 0)},! J9 a% o c+ H/ B
& W# ~7 A$ y, L" ]! l6 P. Y
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}8 }5 A" d [7 k8 ^5 b. B q
3 q# S; q6 M2 f; F( @: J
})
r+ _9 z! v7 |# y
8 m) B& b' P. h; |1 s9 x% \}( w! H) O; V& X1 {) E8 Z9 c
7 U" M! c" Z) Z8 V% vReturn(Package() {* i9 v1 n5 N4 K% ?0 o; y
5 L9 w: C) j4 I& d
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
% k$ K5 X9 [/ m# ?4 c7 [, W+ q4 K0 I, R% u6 t
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}2 h/ h' E7 b1 {1 m
( s" _5 U9 K2 h' ?5 _5 E})
0 |7 X/ l& ^1 n# W2 N
' t7 P3 c7 R/ x+ T1 L}" m& p+ ?2 p: z. P2 ?- T; r
7 f, Q; h/ S% Z, b) y- s
! q; @# y! e( p0 Z1 y; ^$ U }
# X; d3 `! C3 s% \7 e( Q" H4 D
l
3 k1 _$ e( @* d- J. V7 t_TSS
- S" H7 ?& y4 }, j
' r2 \: D# ^, h4 @# ]) O5 AThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
/ O5 {. Q; H+ N5 z* u# b8 CName (_TSS, Package()
9 H. X' T2 A, A: G0 `{
& q0 z* D z# M/ c6 V& o// Field Name
& k) P9 _: z2 T1 V; wField Type - D3 {9 b3 L# s5 Y3 a
/ Z# H! B5 A5 @$ ]7 t2 v3 R# V" d4 ^0 ~6 H
# l# W$ L& [% j: r% T8 ?8 R0 L- T
Package ()/ O3 V! l( h3 \' f
// Throttle State 0 Definition – T0 6 T7 a7 R# X. S
$ s% e- l0 x) i: i, t
{% n, h. e0 Z; G$ k6 n6 F
2 L: c! V% S7 P* p
# e. U$ r0 V9 q" P' nFreqPercentageOfMaximum,
; D3 r2 n2 p! J+ F! ?0 p// DWordConst
2 z1 d4 l+ h: [4 F( u+ L# O; g. e1 w. {, \2 v$ G1 k
Power, e3 R, I P/ K$ J" R# R, p
// DWordConst ' {# X+ S8 `9 M
/ A' M& K3 S8 C {TransitionLatency,* X+ b% e. g3 v; p3 l) j/ i% {# ~
// DWordConst
2 Z$ q5 b- s- O
/ k1 E8 B/ i& ?' {: }) z1 `, \Control,
" D& W1 @, [3 z// DWordConst ' C& X$ r! a: b* o
9 H! y v) q" |Status
6 u% ~) _$ \4 |! u$ k- |9 Y// DWordConst
! H9 S" V$ k( C9 d) h/ n0 Z},
8 z+ i% }& T8 N1 |/ {0 s) _+ i……
: ?4 x1 e8 H* C0 X* |}# S% T$ l7 ?. o# j0 a0 M
: g& v# p- Q& t8 R. ^2 ^ mExample code 如下所示:
! g% i0 i8 m6 c, o3 O
; z2 q& k2 r; O P, c' ]' FMethod(_TSS, 0)' u- j& W1 y/ @7 G( s+ K
7 Z V& c9 p1 c) W7 c{
# X0 f4 x( M. _ P& o; d, W, d# Q
1 D7 I$ e# Q: H% F5 y2 jPackage(){100, 1000, 0, 0x00, 0},
+ B. T" j, a- {! O: c* H) X/ D, W
2 \( P( F" v8 s8 M7 mPackage(){ 88,
# P0 E( `& |2 c! b/ s875, 0, 0x1E, 0},* }4 B" c/ G# _4 }6 o+ T8 {
" K5 Z9 J0 Y7 Z$ p- s; F
Package(){ 75,
5 O7 H+ @; c# D7 @" q% L750, 0, 0x1C, 0},
" L( S' o: h" f6 e) P/ ~& T
& R) a$ D4 {/ n# R* R& [0 {Package(){ 63,. F$ N/ I, {+ W9 u+ R' V
625, 0, 0x1A, 0},, N% y/ n8 \' H/ G+ ]1 v! g+ T
7 f- R% [; Q" }2 ?. K5 H8 uPackage(){ 50,
3 v0 N! D- i' [. Q4 n" K500, 0, 0x18, 0},
) D: a3 n1 d* S, |% x7 H8 k3 r! c
: K6 z! r, m& R/ |3 PPackage(){ 38,* i4 Z5 A/ A& q i* m- m8 b3 s9 I
375, 0, 0x16, 0},( V U+ Q" ?" k
; ^$ L4 f/ C# \* }( F! ?
Package(){ 25,, V- I! X3 x f" K8 ^
250, 0, 0x14, 0},. ?2 ^6 S" z; Z$ ]" a9 H" b6 i
* x7 I/ z: c% b' HPackage(){ 13,
2 g6 x% ~& [) B# F* c125, 0, 0x12, 0}2 W& a2 u2 B7 K9 e# ?
; N( A% q! Q t" K
}2 S9 i1 \& {: U: V) p: P
7 z `8 M6 A" Y6 I3 `. p: y
1 o) S$ V2 {; \: N4 q7 Wl
0 c' h+ D) o" o8 I, H0 k7 H' ?_TPC4 b8 w' b& W- n% M
* l- c' R4 R7 |' m; ?Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
& N2 Z* n. h; \' M ( `6 \- Y( Q; u4 P# z5 p' {$ O
l6 l6 s/ n: a0 e1 _' L1 x
_TSD
- L7 }# Q. {7 w" b' d5 M) H' X% W3 P9 q: I
: y0 B% C. H% ~, @2 d4 H6 VT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:) c2 ~) }% d% v
% r) L9 @4 g$ C$ t2 m6 VName (_TSD, Package() 4 q ^7 }" H$ x1 {+ m6 t, j
$ l5 e! b0 w& F+ \2 O) Y{ 0 i& E0 O$ _: R' m3 V% j, w* h
S- G( p& i- P1 G, c/ x5 v2 WPackage(){5, 0, 0, 0xFD, 2}8 q5 F5 x" {$ W
// 5 entries, Revision 0, Domain 0, OSPM c3 X3 J; W8 r. q) B, w" a
Coordinate, 2 Procs
- M- J& ^! i' [, T7 B" f/ D; \7 Q/ s3 ~5 c# s" ~
* V+ w7 A2 Q, ]' ~5 {3 F
}) // End of _TSD object) R( S! {" G8 H; C: @- A
( |( G7 K' [7 yREFF:% c8 Q1 h) ^5 E! X2 j% X: q
1.8 ~% E% H; _; p3 N
ACPI Spec 3.09 [' T7 W& ^; h3 ? ~1 c5 L
2.: X6 S1 |: x( {
Intel Processor vendor-Specific ACPI/ X' y+ R' Y+ @* A
! |( [" @: a$ D7 {% _: h
" n% q! N' b5 F! ^# c; s |That’s all!4 F' p$ N+ y8 @4 i) t- e" O
! V; H" T5 ^3 C) q9 VPeter0 s, ^$ M8 u3 G9 j# X
$ G% a! R3 ~/ e: d$ {2010/10/01 |
|