|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
5 P# g2 a3 c# c0 u) E8 {
5 H m# u% a, g* S' B% o( iCPU在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工作时间的占空比)的方式
. Y4 R0 K& S; M: o1 @4 Z$ L1 N,影响系统的功耗和温度。( B- I8 K/ f. q# `/ d+ b' d
" c7 u' g# r/ H2. T-state Control
$ x$ O' {# H+ T# _8 w
# |9 Z' z# f! R4 D1)! M* @5 V# F' n5 D4 D
MSR Based Control
" s/ ?3 F5 I/ N0 X( }6 r: U) j / V9 l% t4 w& c2 k$ 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的转换。
1 [8 p4 o i! f6 G$ _1 a, ^ : ?5 f- H/ d3 t; X/ k, v
2)0 E) P9 o0 r) i
I/O Based Control) H0 W: v$ M- B8 d* D2 `7 X
! M9 ^6 R; a; {% k, T: {除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。9 i6 M5 w2 B' i+ _' G
8 s+ V* o" u [ Y' K
3)! Y, P* U9 |8 N. R! b
ACPI Structure For P-state$ s1 R3 z/ n! }2 M8 U }
l/ c/ E. ?& y: `& _! p' L* c$ T
_PTC
5 r# C8 K/ W& }) Z7 D* g
5 n. J( r& \. k$ c) |8 aProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
% `+ p1 N; U1 {; U 9 y5 I }4 E% u
Name (_PTC, Package() e, U3 D A3 Y V9 r" \& g; j) ?
{ 4 \) C7 W. b' Q6 v
; [0 ?* S2 S7 } B- jResourceTemplate(){Throttling_Control_Register},6 _/ C! G$ g0 e! U
//Generic Register Descriptor
1 d' Y' {% \& ^, r9 f, a8 U0 I/ h! h: k, y/ R9 T
ResourceTemplate(){Throttling_Status_Register}
" }+ W) ]; Z5 U% p% u, f5 A' L//Generic Register Descriptor f" x9 [# i. k6 Q: p2 }8 x8 n
}) // End of _PTC# C" S z2 V7 c; u
6 U; I/ o8 Z! H: {: {/ o+ D: r v
下述是一个sample code:
! ]: a$ A5 U$ \$ r2 {
0 w2 w- G C, }& W9 C( x
) }: I' W. O# B5 u//, P( k4 M; @7 j1 F% R
" @9 }/ x* }3 P
// T-State Control/Status interface8 g0 S. f1 w" k5 B% L; g/ z3 n
0 g; \1 ^: ]7 l/ d' p6 g//
, D8 ^" \6 J+ R( c
* U& B* W7 ]! qMethod(_PTC, 0)6 m, u: Z$ a- @
7 B: _. V7 o# B; a$ k
{, A8 S3 V9 ]8 k( v* M0 j- J
5 Z/ L$ J6 Z# m! v7 K0 _( O
//
# k( F: \6 T8 B) G2 }8 m
) S: J" d$ J6 w" J# e// IF OSPM is capable of direct access to MSR
+ H( R1 i- H2 Z( \. q% t
8 h3 |$ i( h8 t5 ]9 e' j, a! f//
" o$ `2 W/ ~" [$ W3 GReport MSR interface8 X/ a; c' ]5 c! J( v
3 m5 B: f* [* m1 I e9 B( i y// ELSE
% o2 `7 l) t( S8 J4 e6 d3 Y
: w9 \+ W# }' x0 C* M i0 w//- d0 F1 [( t1 l4 D
Report I/O interface
0 Q4 d3 K- R4 }8 `( n+ {; x# u8 z
) U2 v& v& r' K( e$ D+ P+ n//( [& E' M ?- c H g; ]; _$ ~
' }+ e' m0 ^ h
//( I+ }0 p+ ?0 r% k$ c
PDCx[2] = OSPM is capable of direct access to On
1 e; C6 O, [: B0 u- p7 k* Z5 i: ?) Z
//
0 u3 f. D5 ^' A" Z1 r; a" a {& Q2 ^Demand throttling MSR& C4 V) l& L. |' Q7 P3 U
) {; R% v K# W N/ J, {//
% I* X; l: W9 |4 F$ E$ L
! T# ~+ V$ Q% N; g- p! J/ j* J4 ~If(And(PDC0, 0x0004)) {8 M: u" g8 g' z+ e: p
, S6 n+ {/ @0 u) _% M
Return(Package() {
% w9 ]7 r! F* C" I. t- V7 Z# H4 ?9 V* x8 L* x- D) ^; l
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
7 ~4 P2 e9 i$ M+ n/ q" r+ F2 K/ q) |1 K
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}6 w6 H5 y4 `4 B* A" G
. T8 O# k8 h9 R})# |! V; o6 | E* S) f( J1 t
0 d) ~* t4 B6 e
}1 _$ N. w7 {. v: r$ k$ i
% o7 O# |) {2 x3 ]# ?% z) T; p. |
Return(Package() {
, U* Q: r1 n n: w% }9 @& P1 [3 j
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
8 n' i1 r4 w2 W' t8 Q& b/ I" _0 b5 |& p+ t% E8 T2 T
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
, a. d' Y( m8 ?: \% R- ]
* l6 Q& o: F, E9 p})
k$ J, a% d! R1 b5 a" l. ^3 \2 e* B" P( Q0 G
}
- K0 z2 i: g, \) s* j0 { B5 }9 x" Z+ ?. @5 J1 \9 [
* ~$ ^/ q0 G# @2 Z' C: s' f/ y6 c6 S$ X% I4 K& b
l+ K5 S& @- f( W- L; j5 _
_TSS
% C# k0 x# a3 `% Y- A/ a
, P5 a; M. I& v T8 E) L8 z" eThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
$ W/ C# x3 F& v, g" }Name (_TSS, Package() ! m! j$ Y; {) y5 E
{
6 V( i0 G; e. | Q6 |, l// Field Name
" m% ^ L. K6 SField Type
1 ?& h/ T; e4 P# o3 m1 \" x+ t7 V8 E Q( k( R" N
5 @$ ?1 l, U8 e0 P/ I) M! B4 b7 s5 N: ]2 R4 v
Package (), ^4 g9 j+ D% }! a* d' `' ~
// Throttle State 0 Definition – T0 . e$ F6 B1 V6 e1 w5 j
7 e4 W. C7 d. {% D9 R{ F X9 C9 H! |- g% K0 r
1 r: a: `' u/ K! g: d% L
9 X" `3 V. _6 s6 Y# S: o
FreqPercentageOfMaximum,. L. h0 ^7 P2 i+ z* Z" z0 ]
// DWordConst ) b- {( ~& r0 D( P. c" ?% A
1 E/ r/ A6 b& X; z
Power,
1 n. A5 R$ A7 J8 b! v// DWordConst
' _- f! O$ ~! {
* @$ {; c: s1 {4 `) r* TTransitionLatency,
$ n( ]( ?+ a2 g/ E1 M// DWordConst 8 d, x. Q, n3 p; ?
6 o! o* X Q7 ]. `2 s$ Y
Control,) j$ i, f' ?5 w$ H4 e1 s6 | E
// DWordConst . J, h: \0 x3 ?) T
4 W z& Y6 _2 R& W; S8 V4 nStatus' }- a) \; a0 G( q9 B
// DWordConst - R! c; T1 ~( J4 _- ^/ q, u
},
! r/ a9 D* X7 N. I4 R1 b……
3 w" P( e: A6 C; _}# r+ ]! k; F0 L9 O9 t1 \. g& n
, E! E& }5 w9 \ J q. T: H! fExample code 如下所示:
6 a0 Y3 D) K" M$ r2 u
+ ~9 ~2 [& s, ]5 B4 { U% G5 a1 F+ KMethod(_TSS, 0)
* c# D: x2 y2 C o( a
( X' m! _: V I* v- f; f2 g: e{8 C% b" S. A+ ~# V/ g
5 d. V7 {. q* r7 q; @Package(){100, 1000, 0, 0x00, 0},
2 w' T" L y/ |* |
6 j7 D9 f5 h8 P# ?2 lPackage(){ 88,
3 ?& {" q( D( Y e875, 0, 0x1E, 0},* V7 O% B* M% J, Z/ L& L" y
' T" `- C1 Z4 n. V T9 YPackage(){ 75,, y9 y7 D: |) y7 C$ @. `) e, q
750, 0, 0x1C, 0},
5 @1 P5 O; H: ~" X' Q9 y9 { }2 R
u( i* R0 E' k# c6 s6 s. LPackage(){ 63,
7 v% e2 j. I* r- ]" q625, 0, 0x1A, 0},
' B Y; m0 A/ g9 }+ w$ f0 H, u* \) t
Package(){ 50,
x1 x3 O4 v( l5 ^' g500, 0, 0x18, 0},% l* Y) P$ ?& m. W1 e
6 j& m' B4 k ]1 W. m# mPackage(){ 38,
@" v, A9 A7 ?9 L2 n375, 0, 0x16, 0},
5 [9 r, ?2 p; h4 Z! u- x* I
- M$ L, x- h9 CPackage(){ 25,
6 |( ?4 ]5 K [7 s5 O1 c0 }' s250, 0, 0x14, 0},- i& W9 S3 o1 F/ B/ u- o
& ~7 r$ V9 `' D# Q% J0 PPackage(){ 13,
; X: U- n5 R0 U) w/ D125, 0, 0x12, 0}/ H, \7 z' s, m
' Z6 W$ D: y- L( H$ i" x- a" e
}. c6 r! p; D0 B( p( R! s/ Q3 z) R
) q$ i+ }1 B4 r. e" s
- [6 I- W% n& b7 o- Nl
2 `- ^7 |6 k- D& Z4 }6 M2 m_TPC# [- y3 d7 \+ V" c2 V+ i9 c" _
- A) o3 L6 l S5 F6 ~% |Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
7 y$ h4 ^9 J) o2 `/ G* X% g- j: y 9 F# k+ M. B; N. B& B7 M! k
l
& @. P+ O, P! `. p_TSD O" `+ D5 f# z/ m( O b; n4 ?2 S# \
\' R. U q! i. i" t( ]7 m1 y. c
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:6 }/ g* {& u) ~! e# X! g
' l/ I( H# V3 C1 V2 {/ D+ U( dName (_TSD, Package() / y' | R, I$ d" H4 A
1 f. z( z, _: W- F' O( \6 @8 q{
- r: Q: `. t h( l8 M& E/ V3 j7 k/ G- g
Package(){5, 0, 0, 0xFD, 2}6 ~# U! J, o# l3 `6 b' `9 L* y
// 5 entries, Revision 0, Domain 0, OSPM & s! d& P9 s, x/ f
Coordinate, 2 Procs 2 S3 }0 d/ d( r# C2 E6 U
; Y7 L0 A5 b# U- `
1 r. Q9 y6 y) ]( L: k
}) // End of _TSD object" u9 }1 `% P" d. d' M
& M; ^1 ?) T9 K* }
REFF:/ D1 H# A; s3 ?. o# j( l" Q' B
1.& ?" `6 F' c2 [' S+ T9 P
ACPI Spec 3.0
6 X8 E8 c( j% q& u+ @2.8 U9 c% q _! Y7 c$ d
Intel Processor vendor-Specific ACPI3 E, M2 ]* H K. z) V5 _
( v3 @$ I* ?/ v0 F3 M; O 5 ~4 z' b ^" F# H& [
That’s all!
7 G, o" s) |4 L# m) `' D( w 9 T$ o+ N% \' c
Peter
% C+ Z8 k' r) L8 W ) U$ m# h" v4 ~- u! V
2010/10/01 |
|