|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview1 R; D0 P9 r2 I; ^8 T& g
) j4 F6 C8 ~# t' \1 pCPU在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工作时间的占空比)的方式2 u5 G# s, _% x1 C: X- @
,影响系统的功耗和温度。
5 y. V2 F( [: U . m# |: h% k* d g- E
2. T-state Control6 p2 V1 Y. i/ R& ]9 z. ?
3 R! Q0 A, X! I$ l1)
3 f. |1 z: @4 l. S) I# [MSR Based Control8 O* b" _ ~) I* U2 d" M* a9 b+ g
+ D% i' |2 `9 q6 Y0 N- `
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。 9 C3 l+ O' W# V# a
9 [8 H& \- y1 L. V( s2)
, p- }7 c9 C; v5 {# j& WI/O Based Control) J3 b% a- Q$ |) j# \. l8 {
7 T" u+ a. T& P6 Z除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。7 B- }. T6 L- X ^6 k
i# W6 s; V+ B$ B' @8 }0 ^& }3)
R# |: _8 @, V( o- LACPI Structure For P-state
9 [2 c5 `0 ^; B6 x0 \% Rl
2 Q" l. y8 w* m; g. J_PTC
, {8 s( C0 g* M; H- `* | $ p* l. G, n' }; S
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:* p& Y6 H# S" q1 C8 |' [' O I
7 Y+ R+ {& B$ G! J( ], @Name (_PTC, Package() * C6 s( I( v( n5 p
{
! s2 C9 J% N) X9 t7 J* d7 ?" b/ e
ResourceTemplate(){Throttling_Control_Register},
4 W4 C' E5 d" A% U+ ?5 |2 m$ d2 `//Generic Register Descriptor
- O5 b- f2 F D: i* s2 M% @6 d V2 V1 p" \& F- [
ResourceTemplate(){Throttling_Status_Register}& p7 S- f9 u1 Z: D
//Generic Register Descriptor $ a0 v: ?" l3 e3 F$ n3 M# i
}) // End of _PTC" S p( k( j% \
4 n' L( Q6 g. r7 p% p3 f下述是一个sample code:
' }. H3 q1 G. i! t" p7 Z# L
0 D+ r' k; e+ h
& g% u+ Z! }1 `5 D- d- J+ {5 S//
# {" b! j; R2 H3 x
# d. f5 d1 E; }; N* ^// T-State Control/Status interface
" `- d# s* b2 y& M
- E9 b. Q2 h! z& w% Y- h i- ^//7 R6 d8 R# m; h$ \7 \
* Y/ E, o" d; D h- uMethod(_PTC, 0)
; r! ~( n4 Y, J. O. m/ k! s% {% j2 Y
{/ v! B/ ~# d- \* S$ ~- H
3 @( l! @& F# D4 U
//% T/ k8 Q7 G. w( S. Y f( H- _5 ^/ y
; l/ N+ p/ E! q* |0 u! E: |
// IF OSPM is capable of direct access to MSR
3 T& _$ Q9 p8 i# y8 k1 j1 g2 W) W, o3 D6 p
//& b' J% H. Q% F7 _0 @; M
Report MSR interface3 ]7 ?: F) j1 H4 P3 _
. g6 K, s8 N/ L8 Y4 T8 j# Q8 W// ELSE9 ?: T; \3 l2 y% Y8 T0 `2 n4 H& i
- L7 x# N4 f& z: G7 i+ a% _. j! a//
: R( g5 S$ O, iReport I/O interface# c- U, z5 j1 S7 w
5 c, d- X( b% J7 K, j" [5 g//
) \. M; N: B- X* [
0 o2 {; m" r5 F6 w$ t$ |$ K( q6 }8 [4 E//
1 Q8 V. z( r' _# o# KPDCx[2] = OSPM is capable of direct access to On
4 Y* s/ s7 Z X8 Y) ~2 z0 q: d) r- k7 T! ^) o
//
7 ^8 C6 U+ c0 p$ r! G4 kDemand throttling MSR
, o% H' K, U1 z- m- p4 x7 R) r/ c) t! j/ a& D/ `/ ~
//! F0 z/ @/ s) H
- V. F, L; x$ V* K. P- f
If(And(PDC0, 0x0004)) {
6 p9 y5 M( S7 p1 A* v4 I0 H1 `$ T1 D; n: [ x+ c3 c6 k' O8 x# N5 [
Return(Package() {
0 r2 m# G A. o$ W4 Z, }1 L3 L
# L) {, [0 I1 p$ }- a8 UResourceTemplate(){Register(FFixedHW, 0, 0, 0)},
9 i' b" `" o3 [7 D/ P- A4 n6 t' \+ Q4 q: P2 h# l4 }( h+ k
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
5 j. |( p& O/ b3 G
3 I6 x" q' `. F5 P}) |+ V& I% c+ [* P- \
- L5 ?5 y3 p- t4 X' z `* z# m! V}
% ^6 p% s T: {/ N. j0 u0 |1 t: ~9 o6 k- O
Return(Package() {
( k) w9 y* }& S1 ?! ?0 \$ h! d* C5 [0 P8 S3 O- M
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},$ _' R& g7 C1 r$ L- B/ j: l
" V0 b. b9 l- c' v0 p- p7 q& }& r! @ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}' o! E1 M) S+ T" A' T$ Q
9 ]5 E, U, L1 Y6 R' v' O}) x7 X; _& P# d9 N- X) G
h+ w" Q/ t3 C; c2 P6 M}
' `+ E5 W! D' q8 P$ @5 J- I1 @
4 Z( Z: J i3 m6 B2 K
) \2 j( {9 m& p
, c& s6 q: R# f: U6 [; Ol
; } F% i5 n+ h2 I2 _ v' [& P! e_TSS
8 T' U% ?. u- W# p
, N8 l3 W( Y' w$ l- X+ m5 vThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
) m2 T. r5 T! [6 ]" dName (_TSS, Package()
, `4 m. h5 K2 R& h. N$ d6 B- d{
1 [& x# Y. N1 v' ~2 ^6 j// Field Name2 z& K- [, |& i' a! F3 u
Field Type 0 x }* V; P' f7 B
6 k1 I0 \ F4 k0 J8 b
1 T; k1 H5 S p" @; `8 s3 d& ?" {+ p6 a5 h" P4 u9 |
Package ()
4 U# |8 F- [' p; y3 b' h% X// Throttle State 0 Definition – T0 " a4 \, R \! |; K- n* r
# |/ Q* q9 t0 D1 @# o% g+ x
{4 ?. B- m5 Y; E1 \
1 Q7 f1 k9 h% J+ A9 v5 u* Y6 Q% G U |- @# K" J1 M3 H
FreqPercentageOfMaximum,
2 p" @! P7 H/ g& I* z3 @// DWordConst
; P* V1 y/ V; O) T, \6 E$ @3 i; o+ }" C( h: b
Power,
8 P& ~5 ~6 t1 C/ [. X' L: L// DWordConst
2 v ?+ l% S9 ]/ C; {
7 ?; p3 o/ w. x" I2 B& iTransitionLatency,
% ~; O8 t* [; k$ ]! f// DWordConst
" U* {" I u% A: W
" F$ r5 P) m7 Z8 k q! `Control,( s( `7 w0 i, T# t' _. \
// DWordConst
& s u' Z4 I$ w3 z; Y3 g: U7 Q, E0 ]; [+ `/ C- L9 v
Status
. ]$ z. O+ ]* f2 v+ e7 a// DWordConst
7 E' d' |# Z' ?7 z' B! p- z- P- i% U},
. e7 G: {. V9 K3 `2 e……
5 y" K# {3 U/ y& }7 a5 y5 F8 _}
1 s# ?: y1 q8 P. z" ?6 }4 m+ k {" {' |" D. u7 O% g
Example code 如下所示:
1 y; ?* a7 W2 v9 N/ z( y* ?* X
7 k' C9 F) U% X7 g5 \/ h, RMethod(_TSS, 0)
( O" }; N/ \; g- v$ d) I
9 k; E0 M Y9 t8 u) ~7 u{4 q1 L6 D3 o5 t" v3 ?
6 D* U9 D5 ?; F4 @: p: \
Package(){100, 1000, 0, 0x00, 0},
0 U( M$ w7 w4 ]% U$ r- J7 D4 C2 ~) s1 \% T2 R; y
Package(){ 88,
, P! T1 p+ S6 n9 D4 ~% e$ r% }875, 0, 0x1E, 0},
0 e* r2 H u+ k$ w
7 V% ~" |+ [) U& Z6 h* X; f( \8 MPackage(){ 75,
$ L. S: G0 }: v7 a, Q# l+ \750, 0, 0x1C, 0},
9 u6 r4 x, j( V- H. w: c& L' w" U( q1 X! H
Package(){ 63,
# i% ?2 I1 h K" c625, 0, 0x1A, 0},
5 A- V9 l: y z3 M& o- N }5 ~/ x7 E* T! p" D) w5 f/ M2 z
Package(){ 50,
" z- W6 }1 {) l500, 0, 0x18, 0},
- a1 f+ b: `7 O
7 p# b; ]1 f: C8 J/ M2 {Package(){ 38,' p6 [/ p' i. u3 \# v
375, 0, 0x16, 0},
: A. k& O3 U& L9 h8 ]4 i- T' U
! I1 y4 r" u ~% H- zPackage(){ 25,8 m( K- ?# ?+ y; a
250, 0, 0x14, 0},& m, y) o5 b- z
" Z- T8 S3 G# T, Y5 OPackage(){ 13,7 U, u2 l: |) p
125, 0, 0x12, 0}. L5 B7 k( l2 ? F9 ~1 h6 v$ i
$ j7 I4 P+ R% p# W7 m9 p}, u/ Z- ~% G0 o9 i
1 v% c/ s$ d$ \/ r O/ _/ a1 L6 u; H$ u, w5 a4 S- \
l A4 N% V9 }5 ?4 u
_TPC
/ A0 J$ f/ F! Q0 d+ n: N8 ^: ~2 [9 G
/ N9 U3 R% j! j2 U9 mThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
a2 h2 A% B) b+ ?( n9 \
$ q7 p7 }4 R7 ?4 y1 ]7 z- K) ?l- ~" R" X+ b5 Z: _: I
_TSD
1 A4 f- t- G T2 j8 @ * y, c! K' v, Z- d: n1 [* e( W
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:9 Z# e8 D* M1 b9 z
3 D# O; E0 [6 x* ], D' o
Name (_TSD, Package() / b( Y( Q4 f6 ^% ~! ^% D$ ^
+ p5 \0 f4 P, X9 F5 o f
{
, s- Y* h1 V8 b+ |& x) L5 o. D( m# z7 T" P% X( s
Package(){5, 0, 0, 0xFD, 2} V, e( ~2 J* p
// 5 entries, Revision 0, Domain 0, OSPM
! X6 d5 Z4 ]6 ZCoordinate, 2 Procs
+ e/ I+ d7 B0 c/ E( C
- P1 {; `& n) d2 t, z/ v2 e
5 f& g1 _( D9 k2 X4 B}) // End of _TSD object
3 n" k- r; }0 m& R- S" e7 Q4 Q; N
9 L9 L" m+ w' U- j: iREFF:
7 M9 Y. {. j- F$ { l0 Z9 e" E5 N1.% c" g8 ~0 V/ i2 D# f
ACPI Spec 3.0
; K8 ~! E; I& k+ y; u `2.- P- [+ o8 t0 _( t4 u+ l! }, o
Intel Processor vendor-Specific ACPI' R% j3 Z8 L- E
" ]9 F% x b/ S& M* A; a, Z
0 k- u( f7 |. R% H MThat’s all!
# }7 |* w9 j. q# R+ D
4 C" ?9 ~; C5 w. I3 ?8 qPeter3 z7 t2 n6 N. S1 [& M; k
# M1 Z7 c" R4 T" @2010/10/01 |
|