|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
( H" Y X: p2 K5 B" ~ % @2 W! x0 e) W& S; z3 C- a0 N4 ^
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工作时间的占空比)的方式9 Q# q2 X5 E/ K& b( d& |
,影响系统的功耗和温度。. u! e) k2 T( c! C( O0 j6 `8 G! T
" \: J! \3 U1 _6 X
2. T-state Control0 C( M7 y, W1 [, ]% y; ^
6 V, q Z6 U% }0 G
1)
! h0 x- m6 j' y' p% gMSR Based Control6 A( k! u1 ~ ? Y9 o8 O
7 t- @+ A8 E3 X/ O0 H' X
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
8 F8 b- \, W$ P$ R; |& S: m: T " g! P# ?$ E7 X- b6 ?3 z5 ?; ^, C
2)
( h0 i* d, s$ cI/O Based Control' _- R# ?+ p8 [; p! K1 ]* p
& Y. z, \% i1 x3 m' P5 s9 S# y
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
5 f3 B- r( x4 { [3 E 7 W: y0 _4 p2 ]
3)# O8 Q o% s4 ]8 [, I# W" N( H
ACPI Structure For P-state/ x: M+ F1 v- c8 p& m
l
y e# b% x: L2 V/ d_PTC
0 B C' t3 e, r x2 [; u( k
! ^ y+ ^# ]* Q! s. F+ qProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:# a8 N4 {& ^$ c6 R. ?) ~' D
/ F/ A3 ^6 Y: {2 s! u( |1 ?+ ~Name (_PTC, Package() : X$ X( C6 @* @6 A+ e% F
{ ; k: |6 R, T$ L/ Y1 f" ~
, i9 [" o" u+ a1 ]
ResourceTemplate(){Throttling_Control_Register},3 v: e6 W4 f& B) l7 k3 X
//Generic Register Descriptor
9 [# N- G3 ~5 s9 }& \
0 W9 z4 D. D# h/ x# a0 KResourceTemplate(){Throttling_Status_Register}
# Z8 w+ i. o, V; d8 ^//Generic Register Descriptor 8 J, z0 B P# g7 T; w
}) // End of _PTC( I* v7 ?8 ^) w! f4 v+ v
7 S% {+ j3 X1 Q下述是一个sample code:8 ]; v- X' [8 B, s
" N* F3 Y% f1 h
: e" ?; k P' _7 k
//6 _7 J( z4 H. P, x
; L1 t7 E) r' R+ J4 p4 c" @// T-State Control/Status interface
: z3 u* j. x) i! o( S m8 b) }; L% h/ ?( \+ Z
//
0 l+ D% ?4 {& n1 U
" n( u% a! I3 Z$ ?' v0 eMethod(_PTC, 0)5 ~2 l6 z/ A: [# c9 G! J" u
9 J0 J4 e5 n2 [7 @1 \
{& E6 E3 n- [$ z8 |8 L7 N
* h* a/ B% l9 r. a$ t/ E9 z
//
' x+ K- B( g1 P r7 U- b" f- Y4 ^- b% M3 p1 n* W1 i
// IF OSPM is capable of direct access to MSR, p( g# f5 W3 V, E/ k6 C. v
4 S1 {* D% G; N* g; q+ M) b//( ~/ q6 j1 E& d6 r
Report MSR interface
. Z5 r- i C1 g: s% J* ^1 Q
9 H7 m5 n. z4 r1 O* ^7 T. m// ELSE
' M4 x3 O" ^3 N; ^ a! X9 K' W! R5 s
//- O% W P& Z$ a5 ?; ]# u
Report I/O interface. }1 |- O$ P3 K
M {0 T' [! s3 Z//
4 S/ k" f! d$ \5 N9 j. k# t" G1 l/ l* S$ Q/ \- ~
//
9 y& E* v- i4 `% W* P, IPDCx[2] = OSPM is capable of direct access to On
) L; V. T$ y5 M3 J& o3 g3 {! f1 A' R7 X
//
) `& W$ @3 _% L5 ^Demand throttling MSR& M4 o# g1 O! W6 S3 c* Q
$ w! N6 O) }' U( Z- W3 x//1 N/ k( t7 r& P7 @! y$ f
/ O- `; `. E" ~1 \- V
If(And(PDC0, 0x0004)) {% F6 l1 V( t, |; z
6 E3 H( u$ T6 xReturn(Package() {1 x4 \0 u! J: Y x+ x3 o
# S# w0 J- F7 W3 u6 O7 w
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},% R2 w# a0 `* ^, G; b# H
' Z( I0 k% Q: u D( w& b! U
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
' J9 s" ~5 E1 O6 {) i) |9 \3 c0 m8 A
})
8 b7 U$ ?' _- h0 T$ d! S6 z
; H0 L) Q5 f1 T0 \& l}
9 P) _; v5 q, @# Q
( Z7 c% r5 J7 QReturn(Package() {
" @3 l) y: G; K; {, Z. A7 _4 T
& y( F% j; X; KResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},2 Q, I0 R' D* {+ {
% z5 P( ^9 W& _
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}5 Q" A `4 x. M
% e% X1 A. s0 w* d% ?}), t, F$ x) ?7 M9 Y6 J8 Y; ]+ h
/ D+ s( B9 U/ K9 p6 j( b
}, e% @, L; s: p
|" K5 P9 B& w$ _) \! F( o9 A+ s4 j& U+ v* G0 X3 K
! O+ |9 y, \4 T. }/ f
l
: |8 C2 h! |# o7 Z, C_TSS
8 x: n' [& f# C+ s7 x; Z ; x; A0 Z8 n; q( M& q/ [' m4 r
Throttling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
/ N% c7 z& `8 |$ }- L. u( I+ p) [Name (_TSS, Package()
$ A' {% b3 }; y! e- Q{6 w! R5 P1 q% Q9 a
// Field Name
( E1 w* X- B G4 Q5 UField Type 8 k) X) X( K$ A7 b0 y* _; C. t! S
$ R; Y. G; Z% P& y8 g. f
- U7 p* f7 b) ?+ Z0 E% D$ k
* F8 X" X; k9 @2 n% B8 bPackage ()# g6 _4 h8 R+ G5 D# ~+ q2 ]
// Throttle State 0 Definition – T0 4 k' h; J+ h. Y8 ^# |/ ^1 `1 K
& c2 K: z0 X0 h* l) k{2 T6 \# t4 q" j; N. W. D7 V
2 z" t$ m3 i7 m6 w6 V! q6 L0 Q% }1 T9 o8 z s8 Z
FreqPercentageOfMaximum,
& {$ H% t& Q# B- v* l// DWordConst
2 f$ K% ?/ j$ U) R" d0 G0 L7 M) i5 o; I. ~9 U7 x9 A: @
Power,: \( c: A' h' `7 y: N
// DWordConst
. |! u1 X' U' B: i
; S4 [) T: v% i0 g5 @6 UTransitionLatency,) k; M/ m& @( v! r0 K' N
// DWordConst
/ B! K8 m" d/ i7 c% K. |8 d3 C
+ M3 u0 \# u) i4 W6 y2 U4 `Control,
+ j# G% V- W. t* H4 s% a+ L// DWordConst
# c+ U3 r( v; E1 A) K' L: u; z2 N1 H' U- d7 R- X
Status
. U8 m1 H4 N+ z l) U// DWordConst
x2 h5 ~5 D8 ~6 I. @},( z6 z" \+ X# g s8 S5 H& r
……
% l; F! S7 a. E" P1 q5 ~1 e% F, a}7 u) s! x' }+ ]: | r' S4 R. a/ b+ I
( d, |' Y$ h( v$ p
Example code 如下所示:
+ Z0 R% q6 p3 r4 Q- |! A
1 O1 h+ n6 q& V" v# {. }' I* ?Method(_TSS, 0)
7 a: w+ v0 n+ R+ W/ [
& [# W6 @9 A, _3 ?7 D: J4 {{: C/ x) v) y' z+ w* I0 q
: R" ^6 r f8 s5 bPackage(){100, 1000, 0, 0x00, 0},3 L' R% e" z2 `* @% w
" m/ p0 a5 p' x& uPackage(){ 88,6 q" W( U% f0 L+ g4 {: d
875, 0, 0x1E, 0},
+ R& ~$ S7 L( L% ?. u) Y
8 {. f$ E6 A; K7 d( [2 O7 R3 `3 lPackage(){ 75,
6 S k; T- `6 V8 B750, 0, 0x1C, 0},% h# Y9 ]* W4 {4 ^' b% x9 [
$ Q1 w" U/ V; \: t1 C: {; VPackage(){ 63,* q" q5 }0 D1 h
625, 0, 0x1A, 0},1 _ L9 Q9 e; \* L3 e: B. E; a
* ]% x) g' N& W- B0 }" oPackage(){ 50,' s& q9 p' ^/ O+ R( F
500, 0, 0x18, 0},
. F2 a/ E1 Q# j0 R; w0 J* ?: |) I+ Q# U* w6 a; x. r
Package(){ 38,
' ^ j% u8 o+ k( G375, 0, 0x16, 0},4 B7 N7 t: `+ B, Y) D1 B8 h, b
* {3 A7 ]* f7 W2 p" lPackage(){ 25,# `9 t) v) B" C2 f( `
250, 0, 0x14, 0},
- [. i8 e5 ` J/ q, P# \9 ?5 G# y0 D
Package(){ 13,
/ I1 Q4 h- O" E) B- k# N; P125, 0, 0x12, 0}( Q* N0 c& f: h( _
9 g C9 |- j [; X" J n* o4 r+ C! H}# `) A7 V7 A: M0 |6 O0 x+ Y) B
5 k' `$ q5 q# Z8 L$ J# q
7 ]& F" F4 i1 e- a8 ?l" I9 L/ M7 A5 V' |: T2 `2 M, p/ a
_TPC% |1 s$ o! \1 @" V; J! I% A
3 Q: s9 E g6 I& A2 {/ r7 X
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
& {% P# d w, I1 W' R x
/ n8 A1 e, N6 ul+ N8 k* B& N: S
_TSD1 u' U/ l% }, s" J1 a$ x9 A
2 H1 l- S9 p, H2 M2 t+ y9 y6 zT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
, Z" R: k" _" F+ G
' s( ^0 V! A3 E! a+ U9 P$ JName (_TSD, Package() ( @ H3 P- i# B) x
* }: l7 _, B9 c: i9 R" l5 _* F8 }
{ 0 K- @9 G/ y5 b% N9 ~0 P9 x
: i! H6 F8 J( W" i. P' Q" c: T) v" ?) pPackage(){5, 0, 0, 0xFD, 2}
# N/ Q8 h. r0 h- h% L" F5 | m// 5 entries, Revision 0, Domain 0, OSPM
) E0 E% j' D9 j8 Y2 @7 M. L l$ A3 jCoordinate, 2 Procs
- p% |9 O! j' L+ C6 j' p
_9 j. l& ~ s" Q/ ` g7 \4 r- A1 L; Q8 l
}) // End of _TSD object/ d! P7 j; [$ Y
9 _' x1 i- e) g6 E; FREFF:, E: x( b# g4 ?( v _' V% n
1.
8 x* b$ k0 S: u6 g0 q `9 tACPI Spec 3.0: d: ?* w- v# R. \+ j8 K
2./ _2 Z5 I0 I ~4 Z7 z/ T& x3 f! r W
Intel Processor vendor-Specific ACPI
$ `7 n; k7 y3 _! l, n/ ]* Z* S 3 ? N2 N! \0 ]$ J' Y1 z$ j
* H# i3 z% }2 ^3 m
That’s all!, \+ C: `3 I& V9 Q Y+ g6 _1 i" w
P- d$ l2 q: {& X' R8 U+ o9 Z
Peter
+ }9 s! b2 J- i/ [* Z
" j1 T$ E2 G& c- C2010/10/01 |
|