|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
; ?6 B- ]6 @& {7 }+ l& D% F 4 P8 j, p/ D4 M( g0 g$ ^# T
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工作时间的占空比)的方式! z( M4 _* \' N: [; F1 n
,影响系统的功耗和温度。3 d# k+ j! b5 _+ R- A
. }: F0 O- x- I7 d% ~
2. T-state Control; c7 A+ O7 a& o' Z4 \
1 u- @. L! C e9 `& a/ a1)4 o8 Y G3 C2 `- f& Z4 v, }& C
MSR Based Control
* q9 j! D. R0 u* a1 j
& E! x3 y! P5 u8 L J+ a. i! A7 BBIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 ( b; U$ E. u+ `$ |
1 a# u8 r4 m; {2 v/ O: {! P
2): o# r" r1 I9 i4 S
I/O Based Control
- F9 h3 r5 X6 z0 l ) X7 l) R; P' j, x7 R; o7 }! W3 u& z
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。3 ^4 j! A( H$ _( x! \
+ H# e+ l0 H6 }/ ]! w3)7 o6 z- m3 z4 h$ b
ACPI Structure For P-state
- [8 T7 `7 h% p# |l, G7 v2 g# r5 c9 J, q& u+ s
_PTC; \9 B8 ?" n0 ?. p
) f/ [( N% |1 I( _' lProcessor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:& a/ ^2 H- s2 Z A
0 J# g) V! g/ _ ~
Name (_PTC, Package()
+ _4 Q# m9 E3 ~! G2 S, y! r+ w# Q- E{
) e5 a, u# n: Y4 s: f) \& r9 J3 P- g: \0 G8 c
ResourceTemplate(){Throttling_Control_Register},
( y; _$ L W* \, M% s7 [- {//Generic Register Descriptor 8 z! J+ r* F3 U
& K( Z7 e1 n8 B S- S& N/ I% j
ResourceTemplate(){Throttling_Status_Register}
+ Q5 C6 r* e1 `+ |4 u( G& C8 J4 ?, I//Generic Register Descriptor 0 ?. G' _+ q! ~$ i5 q
}) // End of _PTC
4 }' e( }$ r. h. }5 K* b& U 6 o# x& M D) i F) D' g+ b. ?# T
下述是一个sample code:
/ b( b0 a2 R: {5 R V8 S+ d8 b6 o8 i; |5 l: o
+ B7 s4 V) u2 ]' v, P//: y `1 K# _/ m; [6 p
& v) l; O0 f; w9 J1 ^. w
// T-State Control/Status interface
# E/ f+ g7 ?8 W4 P) ~: m. F, N l6 c- X. T. g$ o3 n
//+ I- H. `* k; C) w
5 i, Q; B8 a6 ?( Y& X0 KMethod(_PTC, 0)4 |& e1 f$ S! t+ R! b
0 v: X8 ?+ H: N; Q* ]
{3 S) {* j3 j' d) N" K2 o( q
. }6 S; s) O9 z& g% p7 `
//( K3 {! W9 ]: n% @* x
4 [9 z4 Q8 F+ {3 c" J; p
// IF OSPM is capable of direct access to MSR
0 S/ U5 o- b7 [7 y3 v" H, S1 ]
9 i9 M" g- T. `, J! h$ G//
' T* T3 X: ]4 S' i% K, ?Report MSR interface
; |& O5 u2 e- S: ?8 B' j, M. c$ [; {; s* Q
// ELSE# j4 }8 `6 O- ^4 \. g4 L H
3 Y$ x: |0 P: Y3 {$ O" Y
//
& N* a0 \$ M) M# O' |: O: a% LReport I/O interface+ }3 o# P L- Q4 z j
& B1 l3 n5 h8 d3 j. x4 A* W//
. x4 n9 g* ~" K- U8 j& U- K" i8 @7 a& Y6 a
//
% y# l# [; F, @# |5 iPDCx[2] = OSPM is capable of direct access to On
+ L; `( o. d- o8 |' M- b2 u2 X+ c0 Z6 @( ~5 {
//% B7 I# O' T$ P
Demand throttling MSR7 \" A5 G8 e3 K: ]/ t7 e
/ W q7 o1 U3 i//9 B. a4 z ~- F7 j3 ]- n/ b' w& N
5 H* N0 p, A! M% O7 tIf(And(PDC0, 0x0004)) {
* e& x* J) U7 ]* h: R
1 m n; h7 ~- t7 }& K; oReturn(Package() {0 }+ o* ~$ F. ]$ G% g% d- Y
3 p- m% P3 E6 L3 z
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
! Q$ F% S' B% h0 M6 m/ i) g
6 O+ r$ r' z# m( V6 IResourceTemplate(){Register(FFixedHW, 0, 0, 0)}7 `3 R# M+ ~4 h, E% |. G& o; t
! ~* s) |+ t0 \: w
})) ` x% `6 Y% x. H5 ?6 C2 w/ b
! e8 F0 f- t# J% a" P5 T
}
]' y; U) ]3 _ l- \& F4 L6 `+ e' {4 a& R8 t
Return(Package() {) z; h/ Z8 s0 m: G$ A
" Y. E7 [, s5 qResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},- P& i" J, l8 H% X
1 c6 r- @/ x1 t4 kResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}1 q, ^9 v6 C; J8 M1 z
! R# P# K* x+ k/ T
})
+ k5 _( o. v- H
: s/ f$ _# c% g}
9 [# ~, E: `3 w9 C+ G: P( P6 O' q: q9 D ]
. t% N7 h( f" V M, x+ y" s1 b
! F( a+ v- `) u( S3 V" il+ F9 |- L \& X: Y# Y1 }
_TSS
- k7 h( V& u" \% P& T9 d
- u9 U; R" b# TThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:) c6 V/ _: |5 ?; K8 O5 u* h" V# Z
Name (_TSS, Package()
% C# A3 X" _2 e! H. d4 A{5 U2 j0 j" Y* k+ V- F, v; K2 n
// Field Name) p8 @* o4 k7 U. ?* c1 ]
Field Type
, Z! w' k) |" j$ O$ M
8 Z' F: F0 I$ R( z* r8 Y
& V* d$ W$ e3 e" P/ p4 i
+ e* F) ?5 b+ g/ h( ]) yPackage ()& s% ~; w# n, r
// Throttle State 0 Definition – T0
1 w; v3 ^, m* I1 ^$ D( J8 c3 v
`1 n6 U2 J4 t7 J- A I) }- }{
' q4 D! P( J$ S* @ k0 J* G- u* R1 t% f8 E X/ w: W
1 f% \% Y3 o% ?* H/ [
FreqPercentageOfMaximum,
W) K: U: C& a, J// DWordConst
0 c( J: i. M' u/ A- j c
0 Q1 p+ f: b2 [- p/ {- nPower,
2 r! l0 W R3 z9 R// DWordConst & ~& z6 a1 Y7 B+ j; ]* d7 ~
4 F# C$ m, K: ?+ }. U
TransitionLatency,
@! S. U' T$ C# k- \; ~2 X$ \% ~& P- e// DWordConst 6 o* h/ Y) |5 ~
& M+ ^* w# D. v0 Q7 R, e8 ?; p3 m5 P
Control,; \6 I; f$ p' k: F ?+ S! @
// DWordConst ! g- t7 L& n N* m# T8 [$ W
6 t3 s. S y7 q3 g: Q5 d3 t& O! x
Status9 a" e- x9 N1 _
// DWordConst
0 ^7 d/ ~( I1 V4 F0 ]},- I" A2 V0 E+ q# `
……
3 \: z% u9 c6 O1 ^# H}
& c9 Y* [ T( U) j( ~/ \. f% M% C
Example code 如下所示:
+ v: w* a i8 p X
: t& e6 @9 E) S- O- UMethod(_TSS, 0)! y1 q, h8 h& s& a: K& N. ^# _" M
# l" f0 P5 n5 `# l9 A* L- W0 e+ I{
4 W D( X7 v- c6 b: D% _* H, R+ T3 t" ]
Package(){100, 1000, 0, 0x00, 0},9 _. E' l( C4 u3 G& d
" r* P& t' c2 a* z# S, _7 YPackage(){ 88,
8 ~( F3 I: L$ d! `" E875, 0, 0x1E, 0},6 i0 h% H- K* B4 R0 }$ ?( X
8 p+ b3 \# g( z& n m
Package(){ 75,, H3 ]# ^$ k8 T
750, 0, 0x1C, 0},
4 w& Q: \7 B+ C9 U
& I! D( M! E4 Y" F0 g! O5 dPackage(){ 63,) z5 a) C1 |( S% D C9 L) Q$ O
625, 0, 0x1A, 0},
1 k" K* `* ^2 y' S* |/ `2 V5 y# q
Package(){ 50,; d& |1 v' w/ ^; {
500, 0, 0x18, 0},1 N5 Q- L* Y' u$ T* M3 e& C- X
/ Y \' Q7 F" c6 M* t7 }
Package(){ 38,3 Q% s$ X$ N T# f: ?/ E
375, 0, 0x16, 0},7 T- Q' w. Q4 w" d
" \. e H2 v. Y: A6 JPackage(){ 25,
/ x! g* ?3 y7 {1 m' ?250, 0, 0x14, 0},
9 H+ e# r/ b! N6 E. g$ \) V; D/ P( c% U, i; B
Package(){ 13,+ |% c$ r# L9 v7 q4 J, b( t
125, 0, 0x12, 0}
6 |. `) ]# Z1 S( \5 V8 ?! H, V# i y
7 D; v5 _$ W& y& v1 O}& i: ?% E% x3 S. p
; ~5 J2 ^9 Z n# a- [
4 a. U: L5 t7 N8 K( Jl
& D& L0 H- z7 C- z4 l7 R_TPC0 m: k5 J+ e; _
" {) E/ E8 c" S
Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
* S; Q$ L6 E+ E# [5 q( \" Y
& k9 P& b' ]. J+ _l4 T+ H. U& c. N' U- \) x% j4 s
_TSD$ _" q! z2 F+ M
9 w0 n* t$ n7 o) {
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
8 M7 _' U" U( u, }7 e / p* d/ n# e' P& B
Name (_TSD, Package() & ?" b( s" N" q- Q
8 o0 w% E3 g$ w: k+ ^, w1 E
{ 8 K) z6 o% q- {2 a( T; V
1 s4 i! w1 e( O* p
Package(){5, 0, 0, 0xFD, 2}' ~/ s* g4 j) q9 J6 ~
// 5 entries, Revision 0, Domain 0, OSPM
+ m! O/ v- p+ D5 L3 nCoordinate, 2 Procs + R- N- M# A! r
0 s" p# z/ ~6 Z% E( M2 N% s2 W, `
" ]& H- b( J- C, u- b' k. \}) // End of _TSD object
9 f5 S4 s9 j, K
, O" r1 o# R, c2 BREFF:
/ G/ E1 k, @) P9 N1.* g& D9 d( K8 C e5 k/ l+ ]
ACPI Spec 3.0
7 x# j5 x; g; Y1 l" ^ ~2.
2 B2 h1 O" c" u D8 o1 z6 s6 IIntel Processor vendor-Specific ACPI n: F) h2 f* H
8 `" T1 c; _, h1 h% }
; I; u9 h1 D% i) ^
That’s all!7 B5 @6 Z( a1 o% w! q n" }+ I# b6 q: q
& u! r4 ]' M/ l* _* k$ l+ r7 N+ ~Peter
- s$ M6 ~/ }/ K( j+ N
3 q7 q6 [3 R* J# _5 t7 k2010/10/01 |
|