|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview: e) d: R+ u# x: A, z! E e
" b6 s& k9 Y' B$ V6 c+ n' cCPU在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工作时间的占空比)的方式
$ s( e* U! k/ Y' K,影响系统的功耗和温度。- q' V4 j y5 d. k# |1 B
6 g4 t0 C/ G' y$ |& ]/ [( W2 c2. T-state Control
7 A8 E/ e- E8 a1 d/ G9 P& j 5 R \( b, d3 ^8 | Y
1)
- [3 v( \: R2 u! rMSR Based Control( Q3 V$ N2 c# A; q
4 L6 J1 d! L2 s/ XBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
3 o2 j2 }/ {6 Y B. c8 t) m% a
* _! ?6 K. ~9 F, [& q$ @2)4 x8 z6 q+ E. F6 g
I/O Based Control
, I- m3 o4 d5 L/ F. @2 |
2 F& L( Q* Y' ]9 o8 |3 n除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。1 L4 d& e7 _; h* R4 u
4 b! s8 ]6 c# Q% w2 _/ \1 x3)( W' H# _" E. o; y- M6 A& o8 F
ACPI Structure For P-state6 k. _& D! O- f7 l% \
l
8 H* c# J5 ^ s& I; J) t% `_PTC
# M) N0 u3 P5 t7 H 3 x7 c9 `; T8 ^9 ^9 o7 L) r
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
+ Q& @: a6 N9 A 1 l: c9 t+ h( q% h! z8 o# x
Name (_PTC, Package()
/ h7 S9 E% h: I" |& a4 ?- b V{
% k$ [2 F. Y: C1 h
3 x/ a0 m; ^$ k# S1 j+ v& \ResourceTemplate(){Throttling_Control_Register},
( K3 @/ L; R) x$ d* l0 o& h: a5 [//Generic Register Descriptor ; |, r' A$ [; u7 }
P# G2 o2 o' v" i5 H* _7 o) J8 T2 |
ResourceTemplate(){Throttling_Status_Register}- k5 [7 M7 ?$ e/ @! C2 I
//Generic Register Descriptor
. b j9 y, U* y0 J1 c, x}) // End of _PTC
/ u2 x: g- @: W
; U- u8 T% S" P0 A0 S* K' c# P下述是一个sample code:( p7 L0 @7 m' y, A) N; t$ [
" l+ V2 e& A: q
6 _/ l; R( I6 i m+ Z//
% f4 e4 W9 d O
8 M5 C1 c, y; I7 h# N! r// T-State Control/Status interface
- C/ S8 i2 W; t+ }& y* w% [
. Z( A' B# z# J# c8 m//# H) u. W$ |/ ~! T8 Q+ N# h2 E c
+ ?! S; V* y1 G2 V# }! K
Method(_PTC, 0)
1 z/ t3 ^8 W% L7 d2 ?& N- o
: N; _9 Y' ]1 \8 H% A3 Q{
- |2 k7 ]5 E: K V+ f; ~
6 v! ^; A( {. d7 w//
6 @9 K; J: p' N; m" D' v" U7 B- j( T" M- A
// IF OSPM is capable of direct access to MSR8 H% B* Q8 v! P- ^2 ^
) L, C E$ g2 V& w( X7 S; x
//5 l+ q1 J3 R' y/ |+ h u
Report MSR interface' m5 r/ v# o/ Z
3 n. a* b$ V+ Y' }% e2 H( n
// ELSE
+ n% ^' s/ o# g5 x2 E5 w; ^
5 W' W3 {$ Q% w3 l//5 n7 H* M# a4 n# A- k% m. V5 N
Report I/O interface
5 G$ l1 x7 [0 t) C( `) ~7 L( M- \8 j; Z0 q. N% Z4 R
//" u8 f6 [+ b/ C
]7 J( y3 g8 d6 d//0 A$ _ m- L2 d! d' c; L: L
PDCx[2] = OSPM is capable of direct access to On, L% R/ h! h; W! m! ~
4 }+ P2 o# S0 S! {
/// r$ M1 z* k8 O( l0 T
Demand throttling MSR
" H B8 [" S) O6 K+ d Z l( o" Y' e z# M1 f9 `+ d+ o. {! ~! w. y
//5 ?/ {5 |# E1 d. a! D' P2 U2 K9 j
/ Q5 m5 x9 b& b' F/ l- k+ k, IIf(And(PDC0, 0x0004)) {
; W) m( Q) B! T/ i% `5 H
8 W/ I- [2 ?. N3 b0 l9 V8 hReturn(Package() {
+ K" K1 v: Y) y4 }, j& T- z: V& X
7 F5 ~8 ? A$ GResourceTemplate(){Register(FFixedHW, 0, 0, 0)},( K+ |, A' `8 S. `) _
2 v/ g& m# q' T1 e4 c, H
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}( _' s8 K- J7 z @# Q
7 o/ i6 V+ Y" `* i* O, P" L
})
2 b. G& ~$ a; l( C% e5 i8 ~, G' Q$ W% ]2 S0 t# k0 q* S4 {
}( C" B) b7 G) t+ v+ p/ m+ G
3 `: C( w5 `5 _
Return(Package() {
' j, n( g7 h8 \# Z* E" E5 t. Q
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},% P) e0 t" ~, y6 B5 B
; s; O* c) i2 S
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
# y) l. O0 |* Q" I3 [
8 e+ ^+ |/ X! [9 s' ?})" @! ~+ E+ \; |9 W- \
1 I2 u0 m& G* S0 \. p) r6 {+ I
}
y+ ^! L3 f% ~" Y% B( H K5 m2 R; T2 a
/ G" }; l6 J4 F9 ^5 H& m! ~
8 r# S* f. T1 @) ?$ wl* G: ?' ]& z' x/ ~$ i0 B
_TSS. }0 e/ w: F8 n, G7 R# J# C
8 ?3 E% H% c4 t/ j2 KThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:& f+ n7 W1 t$ ]8 `, x
Name (_TSS, Package()
" F2 G" h/ s4 f1 Q8 z{/ U& \: ?: Y9 |* X" A. u: t
// Field Name
, ~5 P# H* `9 rField Type
! `+ p2 `( W) [! p M( M; Y2 g# D
9 A5 {7 _1 w* r0 S7 s) z
9 ]* S- u/ _, q8 j+ d2 L+ B" l
4 T, V: G/ S# a9 [' QPackage ()4 _1 |! o; Q" e/ u& z& h/ o
// Throttle State 0 Definition – T0 & W E# }1 ^& k$ F+ e$ L
% j! B. I- L9 [) }" }{
( i4 W. R) F/ t" w
% t( E9 a9 z- _2 c j) o0 g
3 S) L; t4 V6 d( V+ X. _1 NFreqPercentageOfMaximum,
# M- W& J5 V' v, O0 z, a! [4 R5 H; |// DWordConst
6 O& q) [ H* H' {& [3 {+ f: s$ W$ e; k& B& F) v+ x+ G
Power,0 l# q3 c2 T s9 h2 ?' f
// DWordConst ' E5 Z) D/ K0 `
! T/ y6 N" Y8 w8 b1 ?) MTransitionLatency, B; R( p2 z$ P E9 h8 G" m
// DWordConst
) {+ B0 W7 i/ n9 I" m% t: q r0 T8 \# I/ s$ f
Control,2 a% P4 s/ n, p" T- b. Q7 [9 ~8 C( n
// DWordConst 0 F6 O% j% v0 h z$ C' m: i
& `1 q+ \, d+ }2 F
Status
; h$ ?& a! ~4 L+ g5 j* X4 T// DWordConst
+ k1 j* z+ D* d& {},
' R9 F4 @3 k$ V8 M* D……
, W0 c) o% Y( L0 Q: I}
$ f# M5 d( I$ v5 m+ t% [2 x3 T5 y4 V7 S/ O/ z2 ~
Example code 如下所示:
+ T" R, y; m, ~$ H7 X& i! Z' Z8 G# M3 a" e: S' @- p9 _
Method(_TSS, 0)( b2 K- o( i7 ^* Z- \( U
. H( r7 X- l, I- ]" B
{! k+ {( X7 Q" o$ N
! Z% I* t: W3 D1 {Package(){100, 1000, 0, 0x00, 0},# h) y9 Z4 A/ [0 J2 v
/ Y( H2 s0 c: u- H1 U, Q! iPackage(){ 88,) L/ }: ^1 `6 E8 t# G& [
875, 0, 0x1E, 0},
& m! q) F" `& A8 @7 U' \- `# Z# P% k, {7 [
Package(){ 75,
1 l5 t: V2 S# H% F) O8 J750, 0, 0x1C, 0},( h+ H+ V, r0 g- d( a- e' R% P
3 }1 S4 o% `( ^( m9 S
Package(){ 63,
6 J. R/ j2 e9 t8 w625, 0, 0x1A, 0}," s+ K8 Y" y" q: W) J
* i2 p m* y: O* B) P
Package(){ 50,
3 {$ n" o: u2 _: r500, 0, 0x18, 0},+ C$ j$ \0 N+ c4 ^* O, ^. {
) p9 |, d$ S3 N1 L" g [) H2 @
Package(){ 38,3 l* U7 m8 [- {0 i# o- L: ~
375, 0, 0x16, 0},
4 B) x5 J g7 G* ~' Z. r6 w S4 @* P; \+ F! u3 s5 Z/ m4 B
Package(){ 25,$ X8 ~/ j3 A! g. k L3 S8 W4 B
250, 0, 0x14, 0},
; r* i; U- ~* O# D1 ?7 s5 q% U3 _% h7 _9 O0 b; L
Package(){ 13,
0 q Y1 ~" W! I# n5 t; c) Z125, 0, 0x12, 0}3 o% y6 @) P2 E5 R
; d; p1 v8 {- L' {; B) i$ g
}
; H& z5 H: D) S9 @7 K4 n/ Z$ R( X- X8 o2 r3 @2 z- M
9 ~9 [7 w5 @3 |" K8 l+ A i: }
l
% S1 l0 a% A6 s4 X+ p_TPC
* g! g& Q' @, h8 Y" }* Z7 u1 q# ]
" w, t0 Y* w' P- @$ U7 M3 sThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
& x2 ~3 y9 O/ O6 n ( \3 ]7 w1 Z, t' c: N6 t
l
7 r6 S0 o/ \1 u2 A# i2 \6 `. z_TSD
5 u: ?0 a* n) k
3 H# b ~, z- NT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
# X1 h* n2 j# B2 s- C( X % T/ |) {% m/ C& z0 H7 Z5 E
Name (_TSD, Package()
3 ]; {2 D. y! d/ |
9 N! [& g0 l2 F! k6 Z{
w/ \4 ~. I7 d# Y% Y$ y7 R6 C$ e5 v* a
Package(){5, 0, 0, 0xFD, 2}2 f- s- c% G! u; ?7 Y/ y
// 5 entries, Revision 0, Domain 0, OSPM ) H( r, p) Z" a! [& V
Coordinate, 2 Procs
1 p' C4 E* V; Z9 B& ^" c$ \+ A
6 \7 G' i! v0 \0 Q- @* i0 i# ~# n. K! |) `- `
}) // End of _TSD object _: `% a1 }$ L7 v
* q! j) u) i+ V. }) s& E
REFF:
; t, H. C/ k% R1 b7 t6 Q1.* d. y- p! p7 [! `& }
ACPI Spec 3.0
, r# g3 S, R( B/ J: l2. \& h+ k7 `1 l' `5 O. r: A
Intel Processor vendor-Specific ACPI
. ]# q3 I# p; \+ ?4 G$ _+ S2 K
4 j) t7 E4 {2 n, C2 U+ J " d* v C- {% F. y; y) E; x2 A6 J
That’s all!7 g: e! Q5 a' \7 U
( O* P: e* c+ v; n: y4 h0 JPeter
9 O- E9 ^7 ]# V) @
4 T- F2 a( F7 o2010/10/01 |
|