|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
1 \; D4 P7 p$ k# e & T% u- U( o4 t( k# {5 i) B
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工作时间的占空比)的方式7 |& |& C+ l( x1 ?4 c* _0 t
,影响系统的功耗和温度。
& R/ ~8 M* i$ i
$ J" V$ d1 x4 E6 J1 o/ p2. T-state Control
% K! X) ?& n( V; Y9 B+ ~! \ % ~0 P' v# h3 Q: h2 C( R
1)
Y2 h: g) ] ^5 v7 KMSR Based Control0 R4 L' L% `2 |! e. r
# _: d8 s9 h4 c9 L& vBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
. g" V' G9 q. u' ?! \9 B* O# P
7 g/ k8 c. C2 B/ u1 x( J5 C N2 F4 V. k( Y2)& j1 m) f' j# ]6 H
I/O Based Control4 A% b' _9 E( E9 H( |& B: e) B
9 X, h. O/ R/ S- h1 s( y, ]- }
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
0 |5 q- V& x) Y) h& q0 O5 o1 Q+ q3 J ( t2 x9 q- {3 j* N6 v
3)
4 Y/ C4 N+ J ]2 l: E" gACPI Structure For P-state9 l) F2 I' j1 ^. i
l7 D! [& I* e8 N" z" x( x1 ~: }
_PTC
# c9 x- G3 t* k" w9 v5 O$ C- C& z
7 n$ P* K& v# ]3 U1 `* O8 F$ xProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:! q% y7 }' T$ N: n7 j0 O9 S
% j9 S7 e8 R$ Y7 o$ h
Name (_PTC, Package()
( }! A, i( E& c% F/ @% u* \{ 9 x2 m# i% ]% K2 Q% F/ ^
& L" w1 T& H- M% W' _3 p ?+ I; _
ResourceTemplate(){Throttling_Control_Register},. e3 z, O9 j# `/ D
//Generic Register Descriptor " L" k# w! \# A: r) F! t
, G6 e& X. D8 P& wResourceTemplate(){Throttling_Status_Register}, a' w6 R+ t, B8 e: v1 B
//Generic Register Descriptor ; X" g0 b! Q1 l+ y# k
}) // End of _PTC
1 A5 x1 g' z- I( Q" W1 a _2 p4 c 3 r& Z' q- v7 C! x/ T% i% p
下述是一个sample code:
5 z+ h1 ?* z' f. t
8 m% s: d( d. Y! G) i4 Y. N! o7 Z
$ i* u: S' t" ~5 a8 i/ c3 t//5 {+ C' d7 F7 x6 q+ W& N
/ Z2 @% v/ I8 i3 Y8 N
// T-State Control/Status interface5 _, N R# Y7 [$ d$ w( g2 s# T h) w
' m; r: `' W4 {0 T" g
//( R% _0 b C9 X9 m$ s9 X
6 H, k; \8 O) k. WMethod(_PTC, 0)0 f0 ~7 Z4 q; M* R+ K* I
. }- B7 t M4 w% z' M
{ M+ I1 M* {6 Y, t3 V) n' E
3 V7 Y4 g7 |; l! x//8 I& C2 ?- k4 H% J
# `. N' p4 X( j3 H// IF OSPM is capable of direct access to MSR
2 h2 \9 _# t) X/ C6 B5 g" q3 i
' [2 S) ?* T1 @& C: l3 w//5 ]1 k& w/ @3 d4 n( p& m% u* p
Report MSR interface
( `& f) }" ] D ]
1 A' t5 A7 {9 b( q5 r& ?// ELSE
0 g( [# u1 Q+ l) Z y% g& {! Z7 C' I! ?2 C/ u
//$ v6 d, J$ ~5 f* Y T5 m K
Report I/O interface
' O% @" E$ {* }2 Y
, n" m: U0 _7 F2 t//
( y; s8 S* o9 t c9 }8 J' s1 c: c6 X
//. y/ Q2 N. n6 s6 W% g) Z9 v3 `
PDCx[2] = OSPM is capable of direct access to On
' u4 z$ o) I" a8 ^; a# \+ T! F [8 U) Y8 C& c* U4 U1 o5 ^
//% Q! g3 U& u/ T: S/ B9 ?
Demand throttling MSR* @5 t6 |# ^$ S; y; V1 a& z
0 S4 A9 h% m: p8 p- _# Q( o
//
0 Q0 W% }" R# m) `5 e, ?9 v
) N$ h$ t+ a* f( h8 T6 l% KIf(And(PDC0, 0x0004)) {
+ J- T2 B* b& Z* A) G# K
# U& N0 K( F9 FReturn(Package() {
) k$ a8 ?, I4 j5 g2 D8 E+ g$ X2 P( f( {- b& v/ W8 s. h
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
% B7 O9 d+ _" |- W- ^, Q0 w# A
0 A8 n6 v; i0 m' SResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
! Y6 v6 b8 K, B' V
7 x- A1 N# s' R5 r; x})
% Y0 ?, U+ V3 c7 V1 u% ^
& W8 k% x8 O4 F# H}
+ Q, X) F5 ~7 J( s
4 _9 Y5 a0 J, c, ~0 R8 ZReturn(Package() {/ t N& h" I1 b7 f+ y
8 Q- L' u, b' k2 I, D( F# w5 Z
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
5 V/ v+ L' G7 z
# Z" d# T, L% `, d) WResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
! K- G! h, I& s' ~; Y/ m! n2 f& V
! s% P( B8 F4 r) A( L+ z* D0 w})0 I' L" e2 r: Z b5 O/ `& F, G
3 @. x, m/ l2 E m* [7 V$ ~}
. ~3 G. K; R! f: E1 E c5 t+ i6 [
4 p8 V: ] O- r0 d% P f' t' ~" W1 n1 Y0 F$ ^( H' {( T
& f- S. q4 I4 P" Y, `5 s4 b' i
l: z/ |' P4 R9 K l3 F3 M
_TSS; G+ C" h; B$ |1 D
# x# U ?3 E7 A& LThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:5 ?! `/ c* [+ s f$ G; ~1 H) [
Name (_TSS, Package()
% \. L* O6 P1 F2 [2 s5 w$ T9 a0 V{
" R) {: q' g- y4 b/ {( r( O% W// Field Name
1 D& f! _: T) x: D' {1 WField Type " A0 [, s4 V& k" Q
1 U; y1 t6 n2 Y# Q' v7 r
9 B; l- {. D" C) o2 P- e8 Y0 ?4 m) q; V0 K) ?/ O* c; |
Package () I8 |# k3 ?6 z1 x& P3 @7 X
// Throttle State 0 Definition – T0 ) z/ }6 y1 n+ M3 ^6 @% W3 Y* t% G6 @
( X- q5 u1 t3 O" x: Y, M{
2 s7 V, Y8 j! s8 |+ x
4 D- C! L% O" l
% b5 n* U8 K, x n& A) ~FreqPercentageOfMaximum,8 a: ]( D5 I+ _
// DWordConst 6 A2 I( z+ g5 S0 |- y: E
" W/ M( F$ C1 E4 X) Y2 KPower,* @, i# a7 x2 g) d0 \
// DWordConst
: D2 B' I | R/ X" g9 J4 q$ {2 I( `0 A( H& A
TransitionLatency,
& f) x5 Z( G1 y9 G! F// DWordConst
- Y4 S" J; d/ ~2 S7 i+ d$ z5 k) o0 ?; C: ^& E4 Y
Control,
6 z2 F: y3 _! r! @) p// DWordConst " f1 u5 g+ G6 w, r$ h' \/ \
/ E3 I1 \6 P/ f9 H* ?* [3 ]4 w, I
Status
1 i, q/ S+ {' n$ m/ Q$ N/ N. Z// DWordConst
( ^1 ?& w$ o% K3 \6 l& ]},5 p1 Z5 X7 X$ g$ e
……
- d- x1 ]4 o: V/ [& D1 M* ~! a/ `}
- n: ?/ C1 E; k: [
7 d) e3 V9 O, Q4 t% f/ W) f EExample code 如下所示:
' v6 D) }' I4 B. J
" b% S r) u/ e8 y" q v9 J& BMethod(_TSS, 0)
K" J2 y$ ]; ~( L9 G/ D3 J. F7 X. \2 J0 k# u' [3 Z
{
; p$ K& l4 I+ a/ J1 |- t# \5 l0 o/ n2 j- b- E
Package(){100, 1000, 0, 0x00, 0},
/ j3 ^8 g) d6 p4 r0 I
/ V. c9 j; j9 ~7 ]5 k. L$ [Package(){ 88,
5 O; g0 g/ e2 H* x7 Z. S! p875, 0, 0x1E, 0},
* z6 F2 r/ P9 s3 L. J. d) N" D( x- x' z! y+ `6 t
Package(){ 75,
( Y- e) C2 {8 w" l3 H9 O& c, o! i750, 0, 0x1C, 0},
( ^. p$ u) i7 r/ ]# v
$ b- g$ N% A {Package(){ 63,
( c& W, x: e; p' E- s6 f \' V, l3 h625, 0, 0x1A, 0},
' M8 v& D4 V2 p- K$ N3 p1 _, g5 B- ?
Package(){ 50,5 _* \& I/ M6 K$ s; `1 h0 k0 w& `
500, 0, 0x18, 0},
, s* J2 V& c+ W+ p1 z" ~( Y0 l# X4 \# r7 Q n: k4 d8 h4 j* B7 r0 G8 ?1 x* q
Package(){ 38,
3 [! s7 ?" E7 B- W% R- V375, 0, 0x16, 0},
% E9 H6 _# ]" y7 a, {6 c8 H# X* ?, S
1 s2 T: q; O. T0 P- |# M1 qPackage(){ 25,
- d1 _, o. ^' u2 O250, 0, 0x14, 0},
5 s& u- P5 R2 `% }" M2 \! e- b2 B3 p2 x3 f
Package(){ 13,
5 e* R% f3 ]: @7 t2 b' k. @; a/ o125, 0, 0x12, 0}8 K. A J0 L% V& p2 k; y
. M6 D* K2 O4 |6 P, ?}
. e+ {0 O: G$ i; k( [ K- h( Q( o' B9 m
, H7 P; R9 r" B4 ^0 s- vl+ x" V+ v: i: ]7 [6 M
_TPC
# B# P* t* L; Y' ?( l. o- `
9 ?- Y1 E3 L, j, J6 cThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。4 S* A% ^2 y) p: [* x5 t
" e6 @0 z1 l" A ~l) f/ P C/ p/ `7 W' j B- T- l
_TSD/ d# G/ \3 ]& B& f) h% q+ J
* K: ]6 \( ?! U3 ^: u: MT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:7 Z* p/ B' y# N+ C" d1 r
) K0 N+ J* J& Q# Q% j
Name (_TSD, Package() 1 I3 i, w% g1 S$ V$ @
4 v6 y" i5 W* L6 s
{
& q& m5 Z1 P) s0 ?- b0 R, s: m5 W- {/ ?0 }& N/ U8 V& V3 D! n& ]( @
Package(){5, 0, 0, 0xFD, 2}
, W% K6 \, ~: p# d# g// 5 entries, Revision 0, Domain 0, OSPM
! R9 k' F. G1 k9 ?Coordinate, 2 Procs % }. u: M; i4 ]$ K |& t
4 X; n) G% [1 V- H% S$ b. ^. y* j: ~
^7 A1 X/ `# O! k3 I% N+ W}) // End of _TSD object. A" L' N* O+ t" s! W# s
0 L' b3 p" E( r }: L8 C! D2 VREFF:- O; d+ e( R6 {1 X: O
1.
8 U0 r* N7 z! T! ]0 cACPI Spec 3.02 w, z( F4 P# {6 I5 v
2.+ U4 z- R" R+ g# K
Intel Processor vendor-Specific ACPI5 [/ @6 K9 X5 h( B& y
, p4 d& k+ H7 v6 ~. S; D8 n0 ^
9 O" u! Q: J$ D0 [5 Z- e0 ^: V
That’s all!4 d7 N( y' E0 o
6 G8 `3 U% J6 T. B$ M; ^Peter
; I T( \( v h7 O : a. ]" l' u# h9 ?, }8 |
2010/10/01 |
|