|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
2 F3 t) }4 p' j# ?5 o8 u
* v7 X* ^5 `" P; k$ 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工作时间的占空比)的方式
; O# R; o2 k Y+ x, }& w6 c) Y,影响系统的功耗和温度。. H7 X8 t7 Q$ [; E% z) j1 n
- c, U3 A/ A/ m& d$ B
2. T-state Control
' \* \0 r# M9 h, o
( p4 J |* p" h; ]; z" X' j5 O: }1)
# U- @* J4 A+ a1 C: xMSR Based Control
" V$ a7 N7 Y# N2 I" B( s$ f+ { 3 Z# {9 A9 s$ K1 n1 _
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 - y) e" ~0 O# c+ U; D
0 P/ O9 Q# l% J. @
2)
* Q% y9 j' E& i* s6 d- n: m/ p! uI/O Based Control
. P! o% o# ]0 s: y i- M4 L9 D5 j" H* N" h; m1 o$ D
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。3 F- c8 A- f! _' J# g" U
+ M* Z, b" X# ?* l
3)0 r/ g B3 ~" E; \7 t9 X
ACPI Structure For P-state5 ?% O( ~7 ~3 `1 L l$ Q5 u
l3 `( _4 A) @* |6 P
_PTC3 ]% ~9 d, u1 z8 x6 X* P
8 y4 Z% c# n6 P e1 }; `Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:" h. p4 I3 S N; A
/ e- |; a# H- T F
Name (_PTC, Package()
7 I0 o9 J% u: g9 Z& h) u0 p' Z{
& V' t9 t: W1 W2 @9 q& y
0 S' n! n* J* z% M$ iResourceTemplate(){Throttling_Control_Register},8 S9 P7 E$ I0 U# N7 N! y4 N1 L* ~
//Generic Register Descriptor ; M3 E8 x! I& q' d$ \, q! f1 i; ]: _
; Q1 a( E# A x* z# n8 |3 X/ @ResourceTemplate(){Throttling_Status_Register}
7 U& e! i: \. b/ X6 j//Generic Register Descriptor
4 ^' ? n. A& L/ X8 Q}) // End of _PTC
" E1 r* @! f$ \) L 1 }# c; d% n- g8 p: o F y) `# |' s: m
下述是一个sample code:
# t/ \1 t( m4 M! p4 \ & [- T: F5 B- i
! q. M0 C; e2 l+ a8 K8 }//8 M( ?5 F0 E5 ?: G9 Q2 }
4 K3 H7 h0 f% P" u. x// T-State Control/Status interface, p/ P' l6 a% h9 V) `
7 U' g6 B5 l& O& {( j4 ?7 n//# {, M i- o* h3 E# u" J! W- \
7 J: w( `5 J; f7 v9 P# T! V
Method(_PTC, 0)+ a( M- N- A8 ~
8 K9 M/ H. u" g. M: Z2 W{
9 s# G6 ?0 J+ _ }4 l
1 Z3 `8 k. E- z4 G) V/ b% m; v2 W( u//
/ [+ k' k/ p+ F, \
5 z0 u% e( ~# x/ d% {/ u// IF OSPM is capable of direct access to MSR
$ V3 S1 k6 F1 u: G% v- b
1 R+ U) ~% D0 I) X( b% Y N: ?//
, y% R. w$ X% g. |. jReport MSR interface! l% F9 H! `* D6 O" ?! }5 D! g' S
1 y8 c Y; `# l8 l// ELSE* @4 r* G7 T0 g# w+ \/ U+ w
" @ X6 n3 o% ?+ s$ w//, d+ {1 x" g q2 F9 Q( a) F7 W5 O
Report I/O interface' N* P( F, X* P2 q7 E0 P
/ J) c$ X! K+ U
//% B, s7 `7 c U) z% c
0 y) F) P& y6 m4 {; B" y. J% q//
% m& o- J$ I5 K8 Y. S& MPDCx[2] = OSPM is capable of direct access to On6 o2 E+ O! l4 R, {' b, G0 @' h
5 t1 O3 P8 K2 f$ Q3 W% z' o% \' W
//5 O& J: ?& r3 z: H$ d0 m5 h& B
Demand throttling MSR
% `* o; ]) F. H5 ]# i& P2 l
. [, y- n6 q0 j5 `* E//
4 }) q( m- M4 [! j3 n
: C8 J0 Z2 q8 P& [) \, YIf(And(PDC0, 0x0004)) {8 T: U. E5 m& T! z
/ f1 P0 C- w# Y, w
Return(Package() {
4 p) J% Y. n* v0 h D
- _3 y; w- r5 M4 h# mResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
7 [0 [8 \$ W2 L& r: G$ E
& @# |, U: V/ Z1 W& {! F( UResourceTemplate(){Register(FFixedHW, 0, 0, 0)}8 f; I& P1 `' C& m2 i' A
v+ ]) m; r2 f/ C}) C, H; @, H+ `: z3 T1 a% D
! e. i+ t( `# B) B$ {
}5 ~5 C2 o1 _* Q. k. C
/ Z2 ^/ P' S7 tReturn(Package() {
' t" N y2 {/ E0 \4 B& y+ U5 N# X) R @$ z+ v/ Q- i- l9 u# ]. K; D
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
- Y8 T, T0 V& k' e; G4 b E, i" S
# c- S; a% L- }9 DResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}# Z$ T+ l4 T( w/ s9 B; e: j, M
2 }0 D s1 ^! ]
})" A; M# @; U9 n% v" n$ ?$ p2 F
! U7 Y9 c" m2 G. L}- v% ?/ c; F) l. f% Q) |
& _; o0 L. a; [* v t* s. u. k
2 _4 L6 r. D J! n
: n" j7 d1 z" _l
: Q& u+ T1 }; k4 i0 ^% r_TSS- I7 A; @9 B6 o8 A0 E
/ _# X& ]# O7 ^
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
$ @ U5 O! J2 u; @0 pName (_TSS, Package() + ]% ?+ k7 `# V1 s) U$ P& c( S% _
{
# T3 y% v! ?! F& x: _// Field Name
# e3 B9 h7 Q2 s+ eField Type
( t. ^. Y8 t& {1 X" ~
! M9 j2 R2 E: ^
- U B- ^5 j: |' z
4 n. P/ }8 V9 l1 t, VPackage ()2 }+ n9 i+ T( d! _' x( N2 G
// Throttle State 0 Definition – T0
+ N- |) k+ o' j! \
, x) E2 R+ o8 O ?" U{
! _8 R4 M! J3 ]' d; L0 z: j& u# M, ]* C2 v
! x" k$ z5 m" _4 z* d6 x- RFreqPercentageOfMaximum,& s" N0 Q" p/ Q
// DWordConst ; | o6 S) b/ N+ t
" P( g% _4 L+ g. e# t9 m- o5 C# c# KPower,# Y- Y1 q# ^! g' z! I/ p
// DWordConst
" `8 B& }) T" [$ F% y
. Q: B( t+ U' x( lTransitionLatency,! C% t. }6 n4 `2 m
// DWordConst
: V) `) E7 r$ ~( _" W$ y5 T2 C" L
Control,
3 y: @! n, a9 [( b// DWordConst ' b! c. ^' H. F8 r
9 V! a) \0 |& O! L4 J' L( vStatus
* E Y+ @! B& {& L1 T// DWordConst ; c; S5 X) H7 j5 l: b/ `
},8 U t% J# z" k" K# A" u
……
: t7 N; |5 `# S( H}
* y2 ]0 _6 Y p" Y+ z$ [ f9 J% F4 |) H
Example code 如下所示:
& p2 j. y; @3 d3 j- o. e" |' m; m( j8 ~1 ]1 e1 d3 b1 F
Method(_TSS, 0)
- K" k/ ^+ X+ M) ]. D, Z( q6 t- t g1 E) d% f8 d7 _
{9 F) ^/ d k% d, d
& r8 k2 p$ U; B2 N/ J
Package(){100, 1000, 0, 0x00, 0},
' b$ s( A, t' ]; s) _, U" J" m* _4 e1 a4 g
Package(){ 88,
( t4 O9 ?. }- g/ F5 y875, 0, 0x1E, 0},
% G% W3 r) P$ l1 R2 Z* ?% N
3 _, }. Z. b4 P) wPackage(){ 75,& n. s- C9 \2 ~
750, 0, 0x1C, 0},
! C' N+ ^- F3 w: f5 Z& L- f! G" u8 J
Package(){ 63,
% Z( x* J% m( | |* w625, 0, 0x1A, 0},
) v `) |5 x4 j' q( ]1 k
' R! x) i% m( L, g) o. TPackage(){ 50,
) N) Z+ K- J+ @" r. Q+ O' a$ R- O500, 0, 0x18, 0},
V4 j: ]$ v8 _" n4 }
' U0 s& z ]- @* y0 W6 i2 Y- OPackage(){ 38,
) C" Z9 \% V" B3 j1 x) q& B& Z375, 0, 0x16, 0},
0 {& V2 r1 v* \
) D% j" h7 g( d5 _' d! U4 ^Package(){ 25,
: F& r3 E* ?% x; }# L2 p250, 0, 0x14, 0},! W" j# T- w; \( V2 C8 t
" p: O g( T& F, ?
Package(){ 13,
' k# S1 F' l2 Q$ u/ {6 a125, 0, 0x12, 0} q8 S4 o. @0 {: I0 q
' k9 ~8 W) w+ s' c8 H) j}5 V' y" E; e, c( |+ I+ H
" @$ c" c+ g: |- m, k& z3 e5 K, `6 A2 F+ J9 D3 V
l4 G% p( a* K0 e2 A9 F) C
_TPC% v& b2 j7 D8 s* w. W9 j0 F
( t' L7 ]. z5 ]# Z+ A' |. CThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
1 L* f ?! }& l5 R 3 x* a6 f" I, }
l
: f4 s4 ]8 [( z+ b1 a_TSD `; e& r1 ]3 c$ f5 [9 o
* F8 W- K7 k* D" j0 J9 G# V
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:5 |4 F/ b% O) t9 ]9 s6 \9 g0 H
, W3 M' u2 K5 yName (_TSD, Package() . z0 \% w0 M! G8 \# j& a/ O
7 Q% ?( a" I: l2 v; v0 _8 X{
. {0 L! G+ B3 M" _7 E( H) n8 R$ G* z3 G4 A# F
Package(){5, 0, 0, 0xFD, 2}
( M9 h- z0 E+ I3 B: J5 P// 5 entries, Revision 0, Domain 0, OSPM 8 x8 y1 l" Z* @' @6 _
Coordinate, 2 Procs
8 Q0 L1 n/ C7 _4 U- B, c! w" Q- m5 `6 \% ?# b4 N" p
+ ^4 W- N: u! V7 {4 l}) // End of _TSD object
2 l' \6 r% z3 J' z7 v O- ~
' |8 k' |" K- V: _, UREFF:
) G, B! e5 X3 E9 i* v* a9 Q" j9 e1.( [% b9 C" O/ I* j4 L0 D# T) [
ACPI Spec 3.0
* |. B( }, w k0 W0 z& C2.- d4 _6 T6 u. E+ _, \& g( @ f8 W" ~2 M
Intel Processor vendor-Specific ACPI
l7 L! e% q1 W8 a
w2 d$ z" I. l! C 1 D. `1 T# A7 S0 Y7 r
That’s all!3 J! L$ x0 ?- T$ \- m
* g. x4 n; j+ K4 ~. D9 w( F" Y1 TPeter
9 J% D# ?' C# d% q$ s
% S! B5 R) e9 W. @& K0 z' O( r2010/10/01 |
|