|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
g5 R% o8 k7 F# ~4 q, A" _, J' b
B/ D! M9 Z n/ LCPU在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工作时间的占空比)的方式4 ~1 y0 S3 [2 t& Y: T
,影响系统的功耗和温度。
3 ?0 O% G8 @ }* `9 K
. k$ {" [7 B+ B" b( ]5 W2. T-state Control! F3 n4 m7 x. r3 L/ v
' u1 n8 s3 K% X1 B" b( P
1)# q3 q! T, l; Q3 B+ k) |
MSR Based Control
# D; o8 I" \. r Z% x 3 F9 ?* `" B* Y: B9 Z3 o9 Z, g. h
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
: J. Q: R+ X: U) Z% ^2 Y
7 w1 g* y( ?0 Y& h2)7 Q% w( B5 P9 h6 d* b- \
I/O Based Control
7 p3 j# A; u) n, l * D( b% p1 l! G: b' L; L
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。/ d# x( J* g3 O' m! X) Z) |" A! \
' U3 E; |( E; l/ W6 e6 E3)$ Z4 q3 }# M, }$ U3 x& |3 ?7 K. P4 H
ACPI Structure For P-state6 i% e: I m& a+ B& v, j
l
, u4 Q# M2 Z+ j4 S5 a_PTC
* b( O/ x2 w5 M" h9 U
2 i2 ]3 G. G' ]2 T; k; u+ \Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:8 F0 `# L' r w% g, H, o* h* k% C
0 h# G, L* _' ?/ I
Name (_PTC, Package() - o, }" {% v" R! P- ^( [
{ ) d- m# s, R$ x, \/ f6 u
, D; Z" e; y/ |9 z* aResourceTemplate(){Throttling_Control_Register},
3 x/ d L+ Q) m+ G. l7 O- q r' |//Generic Register Descriptor + |; \' v; r3 a/ G2 n
4 n4 {1 |9 r; R3 ^ResourceTemplate(){Throttling_Status_Register}, q3 G" \% U* V1 X3 w! T# q
//Generic Register Descriptor
9 l9 _$ j1 E- V6 C' M}) // End of _PTC
, ~0 e3 e& q' k , U6 S7 ^7 e! X; A# T- W
下述是一个sample code:
6 _" i; ? v6 a5 u 8 q# l& v: R+ S1 c7 `! S* c
7 ~6 n% @8 v. L8 f" w//
% ~5 Y) _. T% S
! J1 \# X) L/ q f0 X4 \// T-State Control/Status interface
L5 }7 L+ V/ R( E8 n+ j! e- m, b4 U+ b
//
! D' a2 a- G" l
) j5 b1 Y/ x# ~' Z8 f* v9 q7 ?# Q& t0 pMethod(_PTC, 0)" \+ f6 M* j: d/ `
! `& v$ Y, o' N% D& h O! W
{, K* ]' X: N; p3 T/ G- }4 ]
1 ]9 S W7 T7 d+ A- s
//' N1 o9 L+ j7 ?8 J K) v
1 R: V7 k" z' Z0 N, X" I// IF OSPM is capable of direct access to MSR
% ?" u- H& U0 B) O' {! Z; M( D( r: k
//7 ?9 O( V# E8 y; }7 r. U$ x
Report MSR interface
+ {" t7 {1 R! E( c2 L
j- n$ `6 L" e2 D _* @6 p// ELSE
5 T2 D7 G) r9 e t) g
# X; g% j* X4 T; ~3 l0 U" u//$ f4 O8 X# K: |; ~% [
Report I/O interface
F! U$ @/ ]2 z: {% W# A/ r& c
" b' h, F2 r/ y& ~//
; W N- [. z2 u) L5 P# G8 w; B A1 o% f) H- @
//
! m9 i$ `" N3 P# h9 B& c2 m6 Q1 bPDCx[2] = OSPM is capable of direct access to On
, Y8 S. f Q4 v2 R" y# r( ~! x1 V: m0 n% z6 X) _, E2 f
//
, U: h/ L: z% a( KDemand throttling MSR
6 b/ X5 x; Q6 F( i* a( h
6 g# m. K. b+ Z) s//
# `0 P6 O! F- M3 @6 p) G$ A! o; b7 E2 y
If(And(PDC0, 0x0004)) {' a( q- U' e; U! U: i' L
1 R& s6 Y' ~, I# o. G
Return(Package() {
5 m. J, t/ i U6 G" A
( \5 f# M9 r8 {1 ]+ Y$ UResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
2 ^) @& L: X- D1 Q7 q8 i3 @8 i3 \5 [9 U
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}9 u; i$ t5 I: T w# j. V
; u% o& h; a! l% k3 f3 V& ?8 t
}). o. e* |. ?5 [, \& D, i
$ r$ X$ G/ R/ E; P1 @/ ^}
; X" o1 w5 o: c9 d
) t4 i s8 ]/ p3 o; b$ Z; `3 mReturn(Package() {% A: ^4 _1 d2 f! R1 n# ~
1 ?6 ]' w7 m! m2 |
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},
4 [0 L @3 i4 Q& b" m' R9 |4 g* J1 [0 M) e( g1 z) O( z' H: h
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
N+ Z% R6 i4 _; w* f( N4 [, H6 n+ @& |8 H; Z5 `4 ^" X$ d
})
9 O! x2 ?: J* ^3 C2 k: _6 B7 p; a+ j! w7 D
}7 e3 \; h( p `) `7 e! q6 s" @
5 H; Y8 X: X8 y9 b8 Q8 u( T2 |+ M# K! H
0 C, U! B7 V: @8 T2 | xl
+ h# D2 x% N. J) G# p_TSS
9 A: G+ B: ^& C/ N5 Q- A$ p% S( }% C
3 u0 ^: N$ H: A! gThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
6 j1 G F( i+ ^1 O/ ^0 N$ {3 eName (_TSS, Package()
( v7 _: I7 J/ ? \{
$ e- {) T& H j: U! I// Field Name
" j/ k# V5 `9 jField Type ' ]! d3 s- a& ~9 _$ p( M) |
! t, c" C: X4 n3 K0 A6 T
) L, ^4 H2 H/ {
# a- J+ u, X, C& X7 e( u# T) j1 iPackage ()( A" {5 Y8 m) h5 D) B
// Throttle State 0 Definition – T0 8 ?- o5 b, r& u+ ^3 R+ Y0 l
1 S0 g4 D5 w+ f: b& @
{
1 A F1 h! e! ` ]/ |- ]: \
9 H2 P! K: q) j7 d% q& j6 E2 x3 ]- J. \' t
FreqPercentageOfMaximum,
2 l* Y. _5 t7 P0 ?; J// DWordConst $ h4 @% u3 u* Y( z
0 {, [( Q- h8 G+ D1 o# ~: j7 IPower,
* |! V2 A; h! L8 z// DWordConst : p+ R* {" o" N2 V8 T, T, ^( ~# s
3 r5 G+ m+ O' j
TransitionLatency,5 K4 `/ Q4 Z9 ]3 K: n
// DWordConst - D# n; Z: w7 C( H8 r6 B1 Q7 s: E
: C4 W8 `! {) H# fControl,
/ h) f! M9 J8 H0 L5 r7 L// DWordConst
0 Z8 h/ j/ R/ y6 Z1 s: r9 i1 ]/ C, R7 P4 ?& |8 J! n# |
Status
* a" }) c2 e6 M2 n// DWordConst ! w/ |: ?8 i2 k5 {5 c
},
6 R2 @: M2 R* b( Z. _ T……
# X \4 }4 k! S) R}
4 v/ Z9 t& { x/ |9 e2 F/ ~% S- F( L4 E7 P0 W8 B: q
Example code 如下所示:
/ L) [7 f0 @4 ~5 h+ [( x; j
4 ]! n1 x# h+ K7 N+ B+ |Method(_TSS, 0)# E8 @+ R6 p8 x- h9 G" z
1 `$ c) U- \6 F1 n8 u5 Z{
: H; _7 T2 \+ D8 ^8 Z
; E7 j2 C4 o5 L7 sPackage(){100, 1000, 0, 0x00, 0},( o- i' n+ q* V4 \' Z& n) f
1 k' o, G# b" ]) ?. H- H+ E. HPackage(){ 88,
' _4 r9 U0 O, B3 [1 T: k. C875, 0, 0x1E, 0},
1 `7 U6 Z& ~5 M7 r
. r- B: A( }' |; E8 s: DPackage(){ 75,
3 {1 Z( p7 h3 ]$ }6 b750, 0, 0x1C, 0},
; p- i& H ~0 x. Z
. A0 | d1 x: H9 U; o1 {Package(){ 63,' t. {1 F4 u5 y! l- y D3 d
625, 0, 0x1A, 0},
3 T& e9 f: l# L& G& c2 G4 u' [# f- D( j y# j
Package(){ 50,
4 \. D& X% Y0 W8 \) \500, 0, 0x18, 0},$ M+ r0 k1 K% R6 Q4 v
. g* `. ~. f. J N4 `1 q; j
Package(){ 38,
- w$ `' U6 J; W6 P9 C$ d375, 0, 0x16, 0},
* ^, L4 @- L" [/ ~
& n/ C" [( E, X1 ~9 `Package(){ 25,2 w6 B# u3 N4 B$ a" C5 M$ F: |
250, 0, 0x14, 0},
! k/ F' a! \# e7 [& C: D u& K$ X( f) ?8 X- m g! o! G
Package(){ 13,
1 y: @4 T: e; D# N6 c9 V125, 0, 0x12, 0}" c7 J; b. m% W1 w
6 R& E. Y( T/ |' ~0 k
}! M5 u- w0 S5 h! ?( I
' s% i. M) F2 ]" U1 O5 B/ V* F5 O7 O) v' u
l. T6 I2 L! K' C6 ]# ^( P. i
_TPC) K5 v* L8 {; {) T
5 l% p# m0 x8 d7 s1 g& u C, W/ m
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。& g. }! O0 a# @# B: `
+ I8 O1 X8 ?0 |& Wl8 R8 n) T/ F2 G
_TSD
8 k) C* J' y! R: s
6 Z! Q8 u; c) Z( PT-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
1 d/ s% U1 M, j6 l8 f5 x8 P( o: p- N
" w% L. W7 x1 b$ i# w$ dName (_TSD, Package() 6 Y" ]! V, C( G- t) n Z! G
. S6 F$ w; E% K. o) f{ ) k, j, J( g/ u5 k' G& ?
2 F$ B) V' O5 z* B; pPackage(){5, 0, 0, 0xFD, 2}
1 i$ _' {- S4 o7 D// 5 entries, Revision 0, Domain 0, OSPM + |% d" _; ], h0 O! J' G( H
Coordinate, 2 Procs
; c0 [/ v8 k* q9 J7 `
1 t) c. B9 o+ v8 w9 f
$ R' h. d$ \+ z}) // End of _TSD object T/ t" G+ g; d4 I$ n
" O* y4 s0 W% v) r& L
REFF:8 N# `$ E" R" @) n
1.4 A* Y/ q$ U$ N0 B8 l
ACPI Spec 3.0
% H9 L* \5 B2 b/ E2.
9 ]$ f) h% Z8 TIntel Processor vendor-Specific ACPI
}4 u" `3 x4 i# {6 b" o1 \
8 O" Z) b6 n D$ Q7 N' X
4 q; }% _! ^- _That’s all!4 j- @$ m/ ?1 R, [
# n# t* B1 W- |4 b, _. FPeter) N3 N# K4 \; P, x+ q. T
0 o7 _# c# a3 D& ^9 n
2010/10/01 |
|