|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview4 s' d W+ U" z0 W! ]
6 @5 W+ q8 J& z% B9 K# B8 KCPU在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工作时间的占空比)的方式
6 l9 H2 p- U& [0 o,影响系统的功耗和温度。
- l8 S/ `0 B1 r+ X ) P8 d0 S$ N2 u+ W' M
2. T-state Control$ D, T: j" z. V0 ^
! S; ?3 H# ^# [/ k) |+ d1 v1), a" I( F9 p0 N. r2 R
MSR Based Control
$ J, E5 O4 p, F" |- W- A& Z! [ ]' \* u( w# C; j m, O7 |
BIOS可以通过IA32_CLOCK_MODULATION去Enable/Disable clock modulation,而且也可以通过该register的bit0:3 设置CPU Clock Duty Cycle。当FFH在_PTC中被使用时,OSPM就会使用MSR IA32_CLOCK_MODULATION做T-state的转换。
: |, n+ B' I" I6 D j + B# _% e. z5 \8 ~ b
2)
( ~5 Y+ ?1 y* {+ w- U- dI/O Based Control
! M" c0 M- W8 k/ b7 c7 | 4 `6 g3 P" d5 |! {& c
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
8 G( K5 n5 N7 t, u7 b - S$ U. P2 c9 q& Y' b
3)4 n! B! I) x( h. g' K) q T- d7 R4 q
ACPI Structure For P-state
! ^, {$ a8 ?. _+ l! q c5 N% Fl
3 r3 s |3 ?8 E( V* P8 O_PTC6 _1 ?2 g1 R/ N
) L0 F& ?. ?% {1 F$ }+ N& u O
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
9 S: J B. W1 i! u7 f" I/ e # x2 s; k$ x2 Y& B% y% L7 t
Name (_PTC, Package() ( v" l5 n) V1 T
{ ( Y! F! A- d. l X
- S* T2 z7 _0 K
ResourceTemplate(){Throttling_Control_Register},0 S! S4 ` o3 R0 v L
//Generic Register Descriptor
1 g$ w1 U" V/ ?1 T; h/ s
/ D' Q. u" S# \& L9 S: j- RResourceTemplate(){Throttling_Status_Register}
- L7 X* U9 x5 ^0 o, } M8 u//Generic Register Descriptor ) n. i4 M; d) \3 E' b3 h
}) // End of _PTC' L7 j; J6 u$ A9 V
$ a1 S g3 M$ Q% U
下述是一个sample code:; A' X( H! _& s/ O9 Z
3 \- C2 O1 M: |# p8 I8 |
% y0 C/ V" U- ]//
" |7 T2 G& w4 U8 t4 f$ Y" W( k+ a# F4 [
// T-State Control/Status interface
* y; ~9 z) c) }+ W* g8 `1 \6 p% u: q2 Q2 M4 j/ L
//
g3 |: x. R7 @/ |# v
) X9 t8 \& s( ]! t- F8 p: oMethod(_PTC, 0)
1 I7 I# x" m( K/ I; W. i. X1 [& ]0 W |5 _9 d4 [3 s
{
/ b: p& N" D" d, n+ u$ P5 G, z v! F: H7 H- N
//2 I H. P3 O# A4 `
0 Q% {. ~: p2 T' X
// IF OSPM is capable of direct access to MSR
+ C, ]1 F+ S0 d! f+ _
" @ A! T( p Z( ?0 ~//
2 p) K: }+ d& v5 K) c3 lReport MSR interface6 j @1 C2 ^& [ X5 ?
$ a; u+ l- o! H6 }5 }
// ELSE! V; D" E* \6 s; F0 T, ?
+ u. W* N4 w1 ~) Y( w4 e! L& x2 J//
9 c" Y/ d3 d5 \! \% w/ ? Z3 T% uReport I/O interface
$ \* i' e4 @9 i3 B+ e5 K' X& H3 S7 C& N: ~
//% A& q$ u: i$ P; ^( m* \2 G
! P, \& T+ E+ O: P1 ^# X- F: w4 \//
+ f$ t$ ?6 X# L! o! t2 pPDCx[2] = OSPM is capable of direct access to On
6 _0 B) [5 o0 j0 y- h/ T) u" d" |. z8 A, z
//: {4 K J& a- p: Z3 {# V2 u6 l
Demand throttling MSR2 G) Y- F5 z) S/ X
* _5 P$ g/ w6 p: I& D$ O8 U1 i//
2 @1 y& B0 m' J& J, i% Z. p3 D/ s2 ]" ^8 X7 | W/ U* `8 p
If(And(PDC0, 0x0004)) {+ [* Q0 ?% ], ^
' O8 l B+ c3 }# s" e" d# `7 q
Return(Package() {2 J3 g) D5 l# Y5 G1 ?
" I7 f9 y" _3 }5 F
ResourceTemplate(){Register(FFixedHW, 0, 0, 0)},3 V/ \& w9 K- [' {7 _
* C' L5 c8 A3 Z3 `/ ^ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}
, T4 ]; v+ F5 o% M5 V4 b0 U6 t! B; ^* D( j0 f! @7 O
})
0 b0 }6 m1 I z- g
) `! X* A* L' w}
$ F1 E, ~; N) z+ D9 Y5 ]* P( O- H8 u a! p
Return(Package() { h1 C% X9 N( O8 j3 l6 r; |1 H6 g% N
% }( Q6 W2 Q# V) Y# C% N: N" C: C, A
ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)},4 D4 t4 G4 N! c
! Z5 N; X p; C% D$ W+ M7 GResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
7 f! A3 p' y" g2 l. Y" n; O) U) f5 u* i& G
})' r9 S+ {; |9 Q# N8 N4 D
& {( c( w$ [+ u8 N7 G) S}, ?0 ^, i% S6 f5 y& i# |
! W/ L" ~0 O: _/ `- c0 _9 a' [/ Z: m- p
: s5 X8 G" t' M% I! V
l
m" x: N& L# R. h6 ^- T, w9 `_TSS
5 `" e# {8 C$ A: ]
6 c1 C/ k% \& u: C$ LThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:
% @4 N0 _: ]7 k ] {Name (_TSS, Package()
3 n- c7 k# i/ k; x- }3 y7 h0 J% e0 x( R{2 S* \! D0 Z9 p& i
// Field Name
5 B7 I% V* K; zField Type 9 i5 f N. `& u# S( f& W) b
+ c7 D% b1 [9 J* |
8 x" s' F2 P$ E7 g8 e# z2 X7 B8 B
" z' F7 g0 E: ?( k; E
Package ()2 L, ]# H6 Y e# A0 f
// Throttle State 0 Definition – T0
3 C8 j. p1 N7 i4 ~4 `& g% u- ]; v8 _ c; S; ~6 m$ X" d
{2 B8 ?" r5 t" q" H: R6 ]
" x: e, Y p' |/ @; ?2 b3 Z' _& o6 k+ b" ~
FreqPercentageOfMaximum,. D$ F5 D U: \- x0 _, M% P! d
// DWordConst
- c, f: p4 B7 g: `* z
E# y2 `- o: u! sPower,% I, ]7 N. }9 U: P& @) n0 @
// DWordConst
4 w7 [9 ?6 y1 y; [7 M! d
& f/ p" P0 M( l7 XTransitionLatency,- m3 O* K+ x) h2 g% j- {& F j
// DWordConst ( ?; Q p6 V8 {' n3 y- ?' x* n
# z) ~7 q z3 |
Control,2 P a( v) m8 [: G0 V
// DWordConst ( s& K2 d$ ]$ p% L
. B2 C, r3 x; v; p3 f- H3 VStatus1 w- U9 C% c0 G* p
// DWordConst
7 A f7 b# K% o) B9 g},
" }* _# |2 j# B……
( |6 w8 o9 g8 D5 b9 j1 M}
3 ^: f# G$ o2 W1 m8 M# z7 u" N) v5 K! U0 j& S' n/ l. x
Example code 如下所示:
* {5 p9 P% s7 _6 J9 M5 s7 i3 B0 ?* b' o( L, ~
Method(_TSS, 0)
7 U; p5 k7 }9 G( R/ U$ u% }/ M/ [7 [$ {$ o5 J( R1 s
{
6 l& |% o- W4 t! E2 f# K9 c7 n$ d F+ n+ X7 ^! O6 `
Package(){100, 1000, 0, 0x00, 0},
: L( \8 p5 E O$ l% x: ^; _
7 y7 |: l, `: B5 U1 x: dPackage(){ 88,4 m6 ~$ C5 G5 p( y
875, 0, 0x1E, 0},: J. ^: f% X. L7 w
4 M$ i2 E6 B0 d& kPackage(){ 75,6 V. ~" ]# x/ E5 _+ v% M1 r
750, 0, 0x1C, 0},
# l3 Q; w; A$ D/ z8 V2 `7 \
+ H# `( {& B: z& ]* z4 |- [Package(){ 63,
/ W5 S5 Z4 Y- g3 M# h8 |# s625, 0, 0x1A, 0},2 ?0 p+ g/ G. n8 ~' E5 Y, Z
% J! c# j& }; }) Y! H' W& sPackage(){ 50,( M2 Q/ X! j5 X, v. p- `
500, 0, 0x18, 0},! K, O* Y) o A( a' K9 ?6 R( o
( q) N& G( e7 ]+ q" s8 @Package(){ 38,; Z a7 _8 }" B3 ]
375, 0, 0x16, 0},) Q5 L$ \; O7 V/ @9 u
2 c, v% R: n N. ^ y2 N
Package(){ 25,
4 H! [ x- `$ m/ r7 E K% I250, 0, 0x14, 0},$ {& ?) i* X) C& B
3 W1 { F9 [% \
Package(){ 13,
: e- T5 m- S. N* P- B6 \, x5 P& r125, 0, 0x12, 0}
' E3 P+ C# o2 S9 ]" b- P- W* r; ]4 Q
}
+ B0 E p' g% k3 E9 {
& f3 g2 J. H3 l z$ R* s7 H6 e5 J& S p J& z! U! g. j
l6 G0 A; o& c+ e0 a) j
_TPC
P$ k. ?, q% t8 X5 q& z0 o+ d
1 s" h8 c$ u; m: c0 n1 {Throttling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
8 p7 Z1 a0 N# T1 w0 V7 I+ p; e 9 g% f+ Q; e" ~1 o( k6 x+ Q: E
l
1 V. r1 L3 j& h, g, ~1 q4 q' E$ d_TSD5 n- g( k9 M/ I6 S8 H0 U& v% ]. ?& V
' G3 d" l9 h2 D1 @4 v! R
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
' s" i3 d7 L/ e7 q& q/ K1 ~ / \5 \: L2 {4 n3 u; x6 y l
Name (_TSD, Package() ' Q9 m3 i5 S6 m5 P
5 I; {, g! @; D3 ]1 e f
{
Z8 V Z. A9 O, W
+ {7 l- L8 u; `& ]" G; t/ QPackage(){5, 0, 0, 0xFD, 2}
; Q$ ~- H8 Y7 b& u+ n* k2 Q; O// 5 entries, Revision 0, Domain 0, OSPM ; y, N. I6 K9 x: h9 }/ i; ~
Coordinate, 2 Procs " F, y7 U) G( Z1 c. k5 V: M
6 V( }3 J ]; N" A4 A
* @0 G0 W* s0 i3 f c7 G5 j3 ]}) // End of _TSD object
. M/ i4 X/ i7 w2 y7 d3 d/ G/ H( z
% m" [6 S; M4 ^3 i4 j5 DREFF:
! x6 F E5 A6 H. m# `# c1.
4 z6 o7 L8 m- A# w& W& w! [4 Y& G# DACPI Spec 3.07 ]! [/ V# ]& q/ Z% P- H* O
2.
. A9 Y# `3 H( T/ |$ SIntel Processor vendor-Specific ACPI3 i6 s# S7 j4 Y M
; _. E' a [& A0 o1 ^ : c1 s/ d+ z6 N0 ~
That’s all!+ s( U9 e: Q0 E" U, `5 Z: M
% [% d4 N3 f; M K; Q
Peter
4 C+ u5 g# c ~. ~& c# B
; e$ s5 {. c5 }2 `7 b( T: y2 t+ t3 O2010/10/01 |
|