|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview, D$ R; [1 s) z" P2 R! H
( Y& _; ]6 z- F$ T9 F$ k5 UCPU在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工作时间的占空比)的方式
3 B$ h) F" z% X9 K! F; h+ w* f; F,影响系统的功耗和温度。
, P* w: U' J. t; a1 \
a0 U1 j9 ~+ [/ R2. T-state Control
5 M2 D: W7 n, m. X1 I6 j ! J( Q. C& i$ P7 l( {5 S
1)
5 F9 r) i8 e: h& }MSR Based Control ?) x5 l; W( L* j8 l
8 E6 n: O6 L R$ ]$ f' wBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 1 }2 h L' q# P f$ d1 d( N) o
6 ~6 c) q. b3 D5 f
2)- Y3 T" ?0 W0 n* j/ l( m7 O- ~# v: Y
I/O Based Control' O5 c- c3 `( V- H5 R
1 `( q: x5 x- P: ~
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
; c* d; x' u" w5 s) I & h- J3 T- v: z7 |+ s( B
3)
- W4 Z6 b y. O5 r# HACPI Structure For P-state3 i" m; I- z0 B& g
l' h8 S# J" _ s0 x7 s7 h+ Q
_PTC' T+ c% D) Z# J% B% A3 q
7 n8 w9 [$ R0 T2 e! `2 q" g. W
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
Y# P+ G1 _9 a) g
7 r' @6 `3 \! ^/ pName (_PTC, Package() 8 q* ~, t- @! T% p1 G/ u
{ ( H0 }6 F ^$ u
. ]) Q- ]% C0 zResourceTemplate(){Throttling_Control_Register},
/ w" i$ H' {9 L+ @0 @3 Y+ {, m//Generic Register Descriptor
' S$ ]. E$ r, B3 y8 n' e$ z6 f
5 j2 Q" [" M6 yResourceTemplate(){Throttling_Status_Register}
; L; ~+ w8 ~, c//Generic Register Descriptor , D# t3 Q' m! A
}) // End of _PTC
: c$ _4 v2 w. ` H1 j: g* ~ , Q1 D( L. L5 L0 ?# R I
下述是一个sample code:& b& Q/ Z5 l) B& F3 U! Y
I+ u" A: k/ [4 t
# `! v* y5 k( M//
3 b! b( B9 P9 O
% `* Q" s# m- R/ j4 I0 U// T-State Control/Status interface
0 ~4 ^$ D% v$ y. R7 [- h. ?6 F9 f' C5 B
//
' k& T# K+ W0 J; D) `
9 U7 u- ]; h: e* G1 _& cMethod(_PTC, 0), \, @9 @' T9 P l! T
1 o6 k+ A% w: q0 t{5 ^0 N" m! W. S3 w
; J) S1 W/ S+ N% z( Z; |: H! j
//
: h: Q& ]4 U- h( E4 s/ \- Q
0 Z/ T% x, I. |& N2 m// IF OSPM is capable of direct access to MSR3 T# R# S# }* L6 u ~2 e+ D8 A9 B
0 ~/ {# D2 M) v! H( S
//' {; T4 Z( D7 f8 }3 r: \5 h
Report MSR interface5 B+ u6 v: }, F( ~2 `
0 Y+ W$ D6 o( h: y- K7 m
// ELSE- k& |) z6 w! S& y2 q, W. c3 I' ]% N
5 N$ U2 S% @! f0 W* m
//
/ O7 U' Y, P- W+ T5 M- b3 }/ ], MReport I/O interface( u) l; z! m5 U" A/ d4 Q
1 t# p7 O+ R) h" G4 k//
5 ]# |" E! C& G9 o7 X6 f2 I
# H9 n' L" F' i" Z( c; D4 \+ O//0 e8 [+ T. b5 Y. z# H5 f$ q
PDCx[2] = OSPM is capable of direct access to On3 O" K! @ \$ h, I0 ]5 \9 ~3 K. }
' i% ^% q2 l- W& H: J//
/ W% |9 \& r& \8 w. l" I2 k4 iDemand throttling MSR
& Q# t" C" T0 l7 t8 M7 Z+ c3 q0 ^1 T' y
//8 _7 x t9 R8 Z( i) ^2 \1 Y
# |: p& `/ K8 ^ x7 K: a6 p
If(And(PDC0, 0x0004)) {' j. B1 Z+ A4 Y3 R; H/ n" q, [% J
* X2 N' x8 u5 z5 X# ZReturn(Package() { J- U5 U `( B! f4 R6 \) m/ d
8 S+ V2 I$ U* N& ]8 bResourceTemplate(){Register(FFixedHW, 0, 0, 0)},) s! w6 ^' Y( ?( J }' Z' R9 M* k
; v1 R$ N& r/ l) a4 W1 _
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
, r/ B9 ?4 S# X7 k" p
# ~" y6 U- ^( L" p})
5 @: @9 x0 m. l' D+ k- T2 Y
! \/ w. o8 C( n( z# z}$ b- E# r" y9 u
! }% v# U5 ]0 G# y F) I2 ]Return(Package() {
2 I. p: G" r9 q1 |$ h
% Y5 T4 S) I) l$ f! ^" Z/ y. Q( tResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
, w" |% w/ M" W; ]! U& P
! O( i+ f* P2 m6 G5 N" U4 ?ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
" v0 N" n }; m$ ]% t. o. g% b' @6 {: e1 [" n( a* |
}): I ^% ]# @( k# X* k
# {4 }; ^6 w9 ^* q} Y: D X* p( q: L) L
% | y2 i$ E, k Y D, U& W3 I8 f3 e. P- j( T
( x5 w m3 G, _. ~8 h- R& @
l* Y8 X g( u) O7 x
_TSS
2 V4 t8 y0 V; V
! |4 X) i& |- D, `3 U G' ?Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:, s2 O$ x" O) R/ |' _) s8 |; v
Name (_TSS, Package()
: M o) r, M- l8 O, Z{
/ W+ v, d0 V# S4 y* X7 t// Field Name
( J& h6 M" f xField Type ) ?: Y, V5 I7 M: f& m y
) Q6 i9 [5 I5 w" X! r& z+ c7 x. _ ^7 i% o9 H
& [5 N. ~/ q# u, d4 P9 TPackage ()1 H. e1 u4 L( D$ u. g
// Throttle State 0 Definition – T0 / F3 f3 Z$ F' @ x R6 d) U9 j
V7 K+ ]- Z& d: ? h& z* H
{
( h" m5 k8 ?6 G2 Z, T
6 H9 l9 \- b9 x- A, Z% }. _7 z' J
# W/ h# C3 E$ P+ s/ e# vFreqPercentageOfMaximum,
* d0 h9 x. i9 ^9 G h9 q8 K; x// DWordConst
x' M9 @5 G7 N
& G/ Z# q! r! e5 n7 {- `Power, q* e: O& N* L$ T: P
// DWordConst
3 |( v5 O! |0 t6 a2 ]: B: Z% ?- M; B6 V0 J- A0 W
TransitionLatency,1 G1 d( }! w0 {% r6 c
// DWordConst , g& l+ ~$ ^1 e
0 {+ B K Y* ^1 z7 ^6 K5 u
Control,
, U; @; s$ a, L4 _& u# v1 r5 Q( w0 v// DWordConst
' g0 t* {) s. J q5 y+ R& `* F9 d' n* j! n7 r+ v3 X- b
Status
. x' H+ I5 k/ l5 _, W8 r// DWordConst
8 i+ X5 ]: _" Q X4 O) H6 y+ y, ^- y},1 Z8 b4 c% Y# I) }; o; H; s6 ?
……
# g2 H$ y6 t) D p; I! _' A$ Y}
6 @% M1 T0 _6 F* Q: u+ Y# R
& m, ~8 f8 ^1 S }1 lExample code 如下所示:$ V& p9 g! \" P
" c* B) |7 G* w' K+ ?. N2 OMethod(_TSS, 0)
3 d* }) V( s6 ~/ o' q6 `* Q' {0 w: t' ~* I3 ?' p4 j) Q& z
{2 h) d- K: z7 b) W
3 B- k6 f# U. q$ B' CPackage(){100, 1000, 0, 0x00, 0},+ f" z" e7 s7 z) N- _' c9 D
. S# j9 U' _" W2 _Package(){ 88,0 [2 a6 \' e3 I7 o
875, 0, 0x1E, 0},5 j/ v$ i' ?' S5 N
* n$ u% i/ U7 f. TPackage(){ 75,
: Q v. Y' @( Y4 r4 A, r750, 0, 0x1C, 0},
+ j- K2 O |4 D# Y0 X2 R3 J1 X% S' R
Package(){ 63,8 R1 L Q* G& x1 G1 p4 q, h
625, 0, 0x1A, 0},1 c6 h# a+ i" D* f) a
) g( k% f" v& h3 |" q, ~- tPackage(){ 50,
8 L7 e% t7 K- _/ A1 N500, 0, 0x18, 0},
/ d# ^3 |' T' O$ ]% U" l. f; I( R* T
Package(){ 38,) p# U O: q+ M3 W7 P& f
375, 0, 0x16, 0},, J. ~" @0 y, A& R o
) d$ Y: K/ E6 E4 Q( ^4 x. k, l( p
Package(){ 25,0 F2 B1 V; I$ v j' w6 M: m. `- o
250, 0, 0x14, 0},
1 H. m) e. f$ U- b8 E" _3 T" M, a
9 A& v9 k( A d) fPackage(){ 13,; r) }* [7 o( @' N* f- M
125, 0, 0x12, 0}
, g/ Y0 A a* Z1 r/ b; ]2 A+ K1 p! K
}, Z1 u! m& d2 m) B. k7 u
7 E9 \$ q) r4 D
; D( b5 w# O0 l5 ^: k' j& F4 Vl
9 ~$ Z' H7 H5 E) W. k_TPC; {% A. A; P- L5 d0 ~4 C
8 c4 t# c% s& h' OThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
7 d; e2 Z# o) D" i, ^
# z% k# m/ G" @) Hl
: G# z- R: L% r$ Y* f& Q: w_TSD
9 \/ A$ @2 E! x1 X! r
2 A3 r* e l. d5 tT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
) E0 y! Q% ^! t& @3 w ; R# {+ x% G) R: h* [
Name (_TSD, Package() 4 ^+ T! Z! s f- a4 o0 ?
0 |: E1 F5 K6 r& y3 D5 V{
0 _: K) P4 D- X4 q! z# A
7 [ F' H9 [9 t% LPackage(){5, 0, 0, 0xFD, 2}
4 G0 F/ U ?% b! M// 5 entries, Revision 0, Domain 0, OSPM
4 X& k/ C8 _. K! ?# gCoordinate, 2 Procs
' c7 [: b* l1 [- ?3 x, m
* a; H R+ o) s9 q% c
3 o. u4 y; M3 B$ n& X}) // End of _TSD object+ o- }. Q% U' s/ h
- Q H7 n) ^/ hREFF:
, _ }( U6 z# s4 R- l: d1.
6 g+ o6 g5 D$ j+ v. l6 cACPI Spec 3.02 c' J7 u: f' M- |# {) L, K( j
2.
7 Q+ F0 r6 J" W) W9 D$ O7 }Intel Processor vendor-Specific ACPI
( f0 r7 b. E. K2 Q$ g
1 k: _+ m9 \. V$ F6 Y5 y
4 T( S7 F/ [: w* a. U6 k5 IThat’s all!
4 p, d* ^" [2 z4 s+ y3 W
8 f |. W2 ?0 A( W1 T* DPeter, N6 W$ }+ V! b% b* `) e
: W5 g& g) A5 C6 q B2010/10/01 |
|