|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview( N6 d1 Z5 v4 L
+ P1 G! ]) S: @2 a; a: jCPU在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工作时间的占空比)的方式
% e2 O0 e5 `$ l; e,影响系统的功耗和温度。
7 `5 s0 ~, h- L9 ]7 S
6 J- {* d; ]: Z+ A$ g& u8 |0 D- E4 E2. T-state Control
7 r7 c/ h3 Y" E' l2 r
! u9 v4 A2 `0 j" ?( h# \3 X1)
' F2 _( V- l7 `5 O G4 d; b% C: ]MSR Based Control
2 l) P& b( \" G1 y+ e5 f; s # F9 i) d1 V, x& B
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 " N& a9 T6 N( V* A8 _
3 @5 H/ l: n+ g1 M: f- I2)
1 ^$ X9 I0 o/ z6 H4 H% MI/O Based Control* i5 `; N& ]$ O/ X
7 G9 }2 `# S/ p8 v) W8 Q3 G/ r除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
. s# ^5 E5 |6 m( ?1 F) t6 y! {
4 U/ A# ?6 p' I- U& w3)
, g7 i& R- G. }- t/ K2 T; Z+ gACPI Structure For P-state: s* Y' y( ` k8 a- |& ]
l
) O8 h3 g& @' w( c2 v: [# E_PTC# g6 ^2 j3 Q( N. y- L# Q
$ s4 |2 I' _, ^! v0 T+ f8 z
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
8 _# l! p" t& d/ i! ?( ^- j * S7 ^8 D6 g1 y3 {
Name (_PTC, Package() 2 ?" _8 V+ U& T
{ / Y( ^5 N }# I7 S# U. w
; }" f5 a# g7 h) eResourceTemplate(){Throttling_Control_Register},
; e7 @5 D! v* M//Generic Register Descriptor 0 a* p1 q) b% t* Z4 B
% @6 I2 K+ P+ @ResourceTemplate(){Throttling_Status_Register}
4 n( f" k+ g" ~//Generic Register Descriptor
6 Y: z1 p6 F' H, G% n. |4 \}) // End of _PTC. ~+ X8 q9 K) _. o- g
/ ?# ?) l1 E" d% t9 |1 ~$ t
下述是一个sample code:. s; U1 \8 ?; w2 N( e- N5 I
9 G% h h( m# U* V4 R
6 G' i5 B7 S3 \% r- p9 Q
//. L; a9 h; l2 N8 X
( n T% r* K# v9 M, j2 ~// T-State Control/Status interface: y* c! Z8 _7 l& Y y6 k# L' ~
* W1 ^/ k" l& M6 c//1 i4 v* U4 ^7 c7 K' X
* q! B4 N3 o" {* {3 W2 ?# t8 z$ V
Method(_PTC, 0)! j6 L( {: L9 T$ c/ T% D
$ v/ K k0 G. p! _& `( w{
3 D: y! b5 P) |& W8 q: _ }2 F+ P6 c+ ^9 J
//% ]1 @5 P2 d( v" c7 q8 u- d0 _# o
1 b* U! N7 Z' v// IF OSPM is capable of direct access to MSR7 f' v- w5 E, O/ c& P5 ?
- a6 S4 ]7 A, N& z//- F3 L7 H9 y2 A7 Q! W
Report MSR interface; B" w h' K6 @1 D( h
! s' }3 k" [. j$ e$ U: S// ELSE' ^2 j4 l$ V% j+ \( O9 H% q
: ^4 n, W$ n$ k% M6 d- r
//) Y n7 M5 D$ ]+ [2 p
Report I/O interface, n! W3 X4 B9 c5 g5 r7 u
6 @" p+ Z9 }) @. E) z) w
//
- X1 J+ a" @% _2 O! J& |" U6 g2 W" t p3 V$ T, y" I
//! E0 t6 v" n/ \6 }7 e. A4 U
PDCx[2] = OSPM is capable of direct access to On
; m# P+ @3 |9 z* r% Q
9 ?6 [( ^$ A/ B! z# i" N//
% ^* i! l4 p% b* g$ ^% ]Demand throttling MSR1 k/ C( _9 t! z$ Y; J0 \
* o9 b9 y1 H# f, H//5 C5 [1 h4 N! D: u8 G
2 Z i t4 \7 J8 X6 DIf(And(PDC0, 0x0004)) {6 E; A! D& j$ Z* k. j, V0 u) t
: a$ \8 z* A( m
Return(Package() {
e+ x: U8 s8 d+ c J# h% v# E
# W! ?; F8 I2 p7 fResourceTemplate(){Register(FFixedHW, 0, 0, 0)}," V0 j. _7 u+ y; J/ Z; L
" V5 H' i7 v" t t6 V z( IResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
- h6 {* i6 l1 [, t- Z3 J: @! N& I% ]% }
})
; K, E6 }, B* l$ M7 o7 [
4 j' l) p9 p. D9 a' B/ i* G}* q# G/ }7 M; I8 V% T4 `# E% H
: G" z% ~ @% _; X+ @
Return(Package() {
) e3 e7 B- o. D1 u; R# t6 I
d! N# `5 R$ v( r; rResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},5 `) Y! _! q; C% H
/ q- n. x1 O# z( f, i" X1 r
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}% s3 w7 e. r- A/ [
8 h4 }9 t" {8 A+ t: j( v8 L
})
5 s" M! r6 \# i+ m' d( F, o. J% e" Q1 _6 h$ @$ h
}
+ V5 Y; u# x9 I0 p# U+ @6 ]2 E3 U
/ g- {: T( T6 d
, ?) e/ s- o6 q$ x
l0 Y( y" h3 j3 E& c
_TSS" \+ S, g- m1 M8 d; H* M K
8 ~+ ]0 N: g+ Q; b1 I. O
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:) G f4 K9 c8 g6 ^5 \1 p9 c+ m
Name (_TSS, Package() ! r4 L1 T9 Y" N- F
{+ t$ m8 S! E4 P% L: l( }
// Field Name
" T, |1 x R$ G" f+ W( OField Type ! n" q/ p+ j/ i/ d, s3 G
2 Y* n p3 y# e2 r0 Z' I( [- v1 E; y2 I
6 T0 m, `0 \( a: M% q' K! ?9 Q% G
Package ()
; T2 ?2 e0 q) b8 w// Throttle State 0 Definition – T0 X: c2 v- }( ?! l1 u
) E7 D4 D( ?1 p: l' F
{
& L# f3 ]5 k3 e) c7 E1 \3 F4 x- N ^
2 N! B3 N% B. s/ _& O8 Q
FreqPercentageOfMaximum,
) Z: m1 i( O" V$ p6 q! ~: W x# W// DWordConst - \& n |9 K/ m5 s7 e3 Z( |6 o2 q1 c
2 p7 E6 C5 L9 f9 }% H% vPower,( b0 e/ r- T2 b4 G% u( M, `! Y
// DWordConst / \9 i& B! E6 H
1 \; _) Q# Z- C% }6 Q
TransitionLatency,
! o7 h; M' |0 O, ]: R' {, o& @// DWordConst + X0 T" v) V1 H" \
* G6 [2 d3 j5 C# U+ w1 t# w4 j
Control,
4 E e* o7 J6 D N+ n// DWordConst 9 n) ~* R: B# e0 p
8 ?! A6 G4 @7 x; }% l/ sStatus
9 Z& V) f+ w6 z% }/ L+ \// DWordConst 3 D% j; E ^4 d: p# r d; t" f
},
; J& B; O/ Q, I……
8 a' j3 G# \2 f/ u& q+ D1 `}
1 s4 e/ l3 ?; }( j; T/ A
6 g9 [8 C& H8 d- L9 A p5 aExample code 如下所示:1 q, C7 ?) Y, B( a2 e# A
4 [9 o1 y& u5 R' C- [
Method(_TSS, 0)
+ a* F5 S5 i7 t$ y8 h+ X- Y3 f9 X' s& K( n7 r# {; V Q6 o7 k
{& b& Y6 H2 A0 s* q9 ^! F- U
" b9 [. U% v) A$ h3 bPackage(){100, 1000, 0, 0x00, 0},
, u7 t. F& `" ?7 B+ P; \( S/ I7 X& X+ f7 [! q
Package(){ 88,
- x v' _2 n. |+ F. @875, 0, 0x1E, 0},
! D+ m, ]& x9 ^2 W5 }1 ]
+ A4 W; o6 ^1 n1 ?; {% lPackage(){ 75,5 U% m2 z( _0 A) G5 b
750, 0, 0x1C, 0},
. j/ v4 A$ f% O/ y z5 y( {" @' N$ U, W j( x
Package(){ 63,6 a3 j9 ?) z1 M) n6 X) \. |/ g
625, 0, 0x1A, 0},
2 l5 R* p8 x* E9 _" J: @' `: l3 l8 e8 ?$ S
Package(){ 50,
# x0 u% L1 M+ M) u500, 0, 0x18, 0},
- c- {1 E3 |( h# h; f
3 x0 R4 J& |( C0 k9 a& g1 FPackage(){ 38,
$ Y4 n) q/ X( n8 q2 t: Y% h375, 0, 0x16, 0},
4 q" j3 h# d) _5 k0 f4 ?( {/ [/ S% _5 @: P4 W3 Y+ r
Package(){ 25,
; X1 M3 G/ o% P# W9 A1 |250, 0, 0x14, 0},2 s8 j' H; I5 H$ } p
1 r# R% q' c& O# v
Package(){ 13,# u3 s+ v7 T* }( ^4 X
125, 0, 0x12, 0}: _. f1 v0 F! v: [% D
7 L5 p) r4 S! S2 P0 v}! t7 P' ^1 k4 k& P, e$ V
4 r/ O4 O p* U, m, z8 w: D' V5 k
! n/ O# y3 h' k5 H p3 s
l) f; o- l3 s' ^1 r$ B
_TPC! t" |0 z' y8 W1 W8 \& T* x/ J
6 Y+ W) F; z: GThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
0 f3 J. n3 ]( `9 ~0 P
8 _3 J4 p% I6 W9 L& R gl6 a- B m# o/ x3 u1 d8 {9 a
_TSD5 R& _3 d9 Y# s0 r' P0 k
: o4 O9 @9 Z1 D$ p6 ?/ d# }# O6 s
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:; V4 c3 e \' k
( n/ f5 n/ n. D
Name (_TSD, Package() 2 ?6 b, Z3 @& u0 k+ \9 o* Z0 p! P8 ^
8 v7 ]+ I8 f3 o
{
7 L/ V' q$ o% Q! e4 _$ K% N$ J. n4 I+ m9 y
Package(){5, 0, 0, 0xFD, 2}
3 n0 m* [6 b9 P ?; f) X" S// 5 entries, Revision 0, Domain 0, OSPM
9 `( o H9 C; ?Coordinate, 2 Procs
% m- t& D1 X7 z$ I* K- n/ Z% ^0 X+ A# F/ m- Z2 E
7 R/ S# A9 d' [) }; b& Q
}) // End of _TSD object
2 V; `& ?6 i2 h/ ?# n# q% s . G) l& d: V! P6 M- C& R9 b' t7 j
REFF:
+ L+ v/ Z: K( K0 t& j, O' t1.
- a" N5 u) P9 ?' `ACPI Spec 3.03 [& f3 @5 E1 J% `3 q. k3 w, c
2.* l# K" p$ ~1 f" `# D: }
Intel Processor vendor-Specific ACPI/ |( i ^$ c* e1 z1 ?# c) b
& s! v2 L0 x: ]. Q- L/ l
2 B* \" H8 b: N8 k: N
That’s all!1 v- T7 k* A' r2 i$ E. c" W: Q
" D* `1 v0 G; b
Peter- N! H% t% A/ c2 Y v1 ]
+ S' p) {3 i( M1 w6 i# P
2010/10/01 |
|