|
|
楼主 |
发表于 2010-10-1 20:46:32
|
显示全部楼层
T-state
1. Overview
; k* Q" G$ z: Q$ y; a' ~& X 0 a f) S. p& R6 L0 S+ _! [
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工作时间的占空比)的方式
# j+ ^2 K8 M) V,影响系统的功耗和温度。
# _! T7 Q2 y3 q. T* \' v 5 Q1 O' s0 m* S' l/ b
2. T-state Control! r9 D; F" c `4 n6 B6 J# P8 @2 k
, n+ q, h$ Z F$ [+ x% J1). a" `4 _0 j$ ?, E3 H
MSR Based Control5 S' k, d# x+ L W8 W
1 @8 h2 y$ k/ V1 }) I$ k6 o* ~
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 a; d! Q8 d8 b8 o) O8 b, M
! D' C, _# u5 Z2)
7 Y; @1 z: t8 e. w* i; S( n* ^I/O Based Control
' ?# c. ^0 P6 r # j/ u0 x. H8 P: K+ d7 E# g, C; a; m. n- ~
除了基于MSR的Clock Modulation,新的CPU也支持IO emulation 的Clock Modulation如果系统没有宣告 _PTC,则OSPM将会使用SystemIO 的方式支持Clock Modulation,OSPM将会通过PROC_CNT register bit4:0做T-state的转换。
9 `1 U; q4 X) p; z7 g 9 C; T; X( Q$ _4 N/ J2 Q& b
3)
# N* j9 _. x- O( d6 R+ k; [" EACPI Structure For P-state+ \( n# `6 m {9 {
l
; S1 v7 |# P3 W! d6 s; z0 N_PTC! A. p0 |% C. A3 W9 g7 | I+ X2 z- j
) u, S) G/ _, [$ o( y8 i! g' g
Processor Throttling Control,该method用于告知OSPM使SystemIo还是MSR的方式调整 Clock Modulation的方式。它的格式如下所示:
* V1 Y5 b9 [% j2 i/ ? " Z o( X* x3 [% u" j6 A e
Name (_PTC, Package() 2 k9 k& T( j, @' M) H1 L
{ 0 v& K9 n' Q; D" v
, A: \, g0 E$ u$ S. \
ResourceTemplate(){Throttling_Control_Register},
6 ?# a5 V5 B+ k$ m" F$ {5 B- c: M2 ?//Generic Register Descriptor & x( `5 P8 z7 G3 G6 ?% D
; F0 v' ^* k5 G: S3 J
ResourceTemplate(){Throttling_Status_Register}4 k& h0 d% R' B$ f2 A$ N
//Generic Register Descriptor - r8 V( }: Z2 A- ^ b$ K
}) // End of _PTC
' f ~( w8 r; m$ Z + Z/ C6 b9 Q" t6 \1 s6 @
下述是一个sample code:
, d6 |2 o1 _. l5 B
& J& B! s* @% C8 B% Z( k4 T. W4 f! X* j$ E$ `
//
+ M C; h- u' b0 z0 y" u1 j9 l+ P4 n( Q# l) ? h
// T-State Control/Status interface
. w [4 p( S0 g1 Z" J1 R6 ~# w# D; k) k4 F1 P2 h4 N6 D) m
//
0 H ~" F+ ]; P5 M; [* y0 s4 S6 y. C& ~, p
Method(_PTC, 0)
& [. ?8 Y" b! S* J% v$ h8 a' M5 V1 `
{* Y1 S4 {2 N7 x0 Y6 T
. {/ D% j* W$ z" o. ~1 z2 k0 B- f# }
//" F& X7 c* S4 w
8 c2 a7 M$ b( j( [5 s
// IF OSPM is capable of direct access to MSR
0 G/ {! g- w' {) o' ]# n% i! K4 a9 k. e' f& H- W& @
//
+ L5 @ g& w) V% a t' GReport MSR interface
# }- B" t; C$ e8 r$ H( S Q( }4 u6 n, R# M( v' _
// ELSE: w- q2 Y# i( O6 f" l
7 T' T% F" w& c5 v4 M" r9 b% @//
6 w# L5 a/ _ \ I( Y* d; R/ yReport I/O interface3 O1 A8 {- H0 }# r, Y" J1 c4 F
9 W1 {7 r# e0 v2 M; e
//
5 \2 }9 s l* y }, z* x* D+ V0 D; Y7 X- t2 S$ X9 _3 `: o
//
5 E! f* w$ o9 M# A0 z# X0 |PDCx[2] = OSPM is capable of direct access to On* c3 J1 }. ^) B( j. {& @8 j
6 B4 f2 U& l! Y: g" W9 m4 { D1 y
//
" h D5 R1 a7 pDemand throttling MSR5 ]1 q$ y& D9 r. @3 x
! d0 M1 w- S O4 D8 ]0 ?& o//
1 A7 n4 f( H4 e! Q/ q% [6 g8 T( _$ `0 b
If(And(PDC0, 0x0004)) {
& @9 v% Y' m( v& s
. D, O. C. W8 Y+ | Z& hReturn(Package() {- n1 B& m8 T/ }7 ^8 E% P/ V
! L1 Y5 L5 n7 s, x) M1 T+ E% c( QResourceTemplate(){Register(FFixedHW, 0, 0, 0)},( Q7 |5 R" y/ Y3 b4 r- M" m9 J
, C9 j/ e/ _5 {$ ^5 R9 SResourceTemplate(){Register(FFixedHW, 0, 0, 0)}" m8 W) g9 p1 L4 ^% p7 g
5 {4 i$ G9 |" }+ r: g6 a
})
. W% g6 a* k, J2 V1 u
2 v9 o n, D& ]5 Q3 d3 h}
) v# O, y0 Y) |7 B# E6 z
) b1 S$ m1 H' P' nReturn(Package() { f) ]: U9 b: G# s
C B6 w3 @$ {4 @& \$ \ResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}," p8 c- Y5 {/ I
$ U) c& @2 _ rResourceTemplate(){Register(SystemIO, 4, 1, 0x410)}
1 v9 I1 P, j8 V. m+ }6 V9 c2 A; i. O7 r8 V
})
" N( q; `1 M" y0 {
" ]& K+ z8 V- K4 |- Z+ C" g}
' `2 a a% l6 ?$ g4 g/ V8 {& _5 i5 S' k" u: A# r6 T
4 {( A8 Z9 A- o
# x& e& U' k8 q5 Il
; P& T* j9 H9 I, p_TSS) Z* E' G2 w+ F
' g6 _, d A; ^# i% h! OThrottling Supported States用于告知OSPM该平台所支持的所有的T-sates,格式如下所示:1 N2 r% K$ w) {. t! w& ]
Name (_TSS, Package()
3 t) p4 O% I$ S4 [8 k# s1 S% f{3 A7 g# L$ R! z; e D r: a1 Y( _
// Field Name7 K6 T- ] H6 a( M$ L& N
Field Type
, C* u7 ]* M# P. f
1 W1 k- J# |8 U/ S2 u6 X/ n
/ H& M% U, G; `* |6 N4 T I! ?5 \$ q0 R- M9 m
Package (), O- g, b$ Y! _) q4 m% p
// Throttle State 0 Definition – T0
1 L0 {; L# A9 o( Y5 y$ |9 d! y B& K' h* c( o
{
% i, ~% V2 Z- i
. O; A2 k2 `* X% T7 j$ ~* ~- [: x1 X3 S7 T8 ]2 \4 Z' H+ E6 I
FreqPercentageOfMaximum,
1 S$ e1 z3 F% j9 H// DWordConst
( x, I1 j2 G" {# n0 U! d, }3 T% r: Q* Z ]( q( ~7 X
Power,
6 B1 [! r, u8 t+ [7 q8 j6 `' |* I( j4 m// DWordConst
: @+ F' f. ]* t7 o. X4 @& @7 U
* Q% x& J7 {* CTransitionLatency,( _. D+ a! F" s" d6 ~0 }/ H
// DWordConst
|! G, c( \& H; v% h0 D) t9 ^* r7 R T& i
Control,. Q7 S. L ^/ H
// DWordConst : W" `+ |, M: y. x
% f6 X3 S" d' B: F9 M+ A' Z2 ^6 L
Status" K( e! s% e* r, R# ~
// DWordConst
. R m, ]! _' e" x8 K},/ [7 h9 C5 T( W6 a3 @" w& G
……
- D& _( {( `/ _! ?7 q' y! U}) F, E* M# F9 C( n
, ~7 d! o+ t* J5 C! |* eExample code 如下所示:
T6 R$ {, k2 l& s: i/ Y# W+ q$ r6 }5 J8 E, {5 S
Method(_TSS, 0)% x. l3 h0 z/ X2 ^+ c" K
3 J# U, P" z8 A2 f0 J{/ N! Q# ~9 g. X3 _( i8 j3 s( x: u7 c
6 r- h- a3 O6 @! ?1 LPackage(){100, 1000, 0, 0x00, 0},2 i. Z# Z# I& {" b( U8 S
. n, P l- o9 ?! V7 i* r" u6 R7 k
Package(){ 88,
3 N. W6 N) y0 I/ P875, 0, 0x1E, 0},1 X; B7 W+ d- d
+ ?4 d2 p. J# V5 w9 N8 M- g
Package(){ 75,
& t2 @2 g' r# B+ i" g750, 0, 0x1C, 0},# G& q* }/ Q, n- a" F0 U
. n* d; U- q( v6 v8 h8 nPackage(){ 63, L9 _7 o: O2 S* }- |/ Q. H' F
625, 0, 0x1A, 0},2 i4 B* T6 E. l" B" b
7 u4 e ^7 j# _7 i
Package(){ 50,
% c* ~. U; d4 e500, 0, 0x18, 0},1 C H. i3 ] t) i: W6 `
, m9 L3 r1 L; q+ m" e" T3 e% B
Package(){ 38,
7 x% a" G8 E" w4 }, u/ D375, 0, 0x16, 0},) j: X! Q# D1 g8 l6 x
$ T; n( v) R/ z1 v3 o
Package(){ 25,
7 I$ ?3 g' N2 ~4 J250, 0, 0x14, 0},* i5 Y; j* B+ P/ l
% ~' D& L/ e1 i6 i6 |
Package(){ 13,
3 n! G4 n0 H2 [+ y( T; y125, 0, 0x12, 0}
" \, N* p% m% t/ |- Y4 \
3 }- z9 u6 Z: c& b5 _* v6 [$ Y5 Q; d}
) F( b9 e/ O4 b; J4 W
. ~. R* [" Q2 N5 B6 C& m! G& Z8 c H) Q2 B1 O. Z; }* M9 T; T
l
1 e4 W5 \, ?( S) j5 E+ P8 W" p- x8 C1 [_TPC9 C. ~& c0 ^, s+ b }
( ~' V- L% p3 ^, O! JThrottling Present Capabilities,用于动态的通知OSPM该平台所支持的T-states,0表示支持所有的T-state,1表示支持[1,n],2表示支持[2,n]依此类推。为支持动态通知OSPM,当某些条件满足时可以通过通知Processor Object 0x82的方式促使OSPM重新评估_TPC。
- f, a/ l* m9 s# ^7 M$ e 6 V. V% Q/ P: ]+ z( P$ _
l
3 Y6 T$ X: n! F, C_TSD
; g" |& j: X8 h1 K 1 m% U, ^+ d8 V$ Q3 K" {/ s
T-state Dependency用于告知OSPM 该平台的logical processor之间的依赖信息,简单来讲就是当其中的一个核进入某一级的T-state,其它的核需要进行的动作等,下述是sample code:
. c) m- o h4 z3 ~$ \% _ L5 ~7 G( h+ Q7 t# k( k- l" |% M5 ~ Q/ @
Name (_TSD, Package()
( C4 y* d- j; ?; j1 i8 {/ |8 A! b7 h/ e. E: U8 E5 M
{
2 I% Z1 k4 z; y( o. {
# O& c9 Z3 F- U9 [$ h3 E' x* j+ C0 YPackage(){5, 0, 0, 0xFD, 2}
" V( O0 G: E& J* x0 K// 5 entries, Revision 0, Domain 0, OSPM
( g7 l9 p7 o$ [( i" YCoordinate, 2 Procs
f& P1 A; Y Q7 u8 X/ }. g- h3 V0 a6 G# f; E
7 I+ g; K8 N1 @7 I1 H}) // End of _TSD object
1 B# i: k8 K+ y5 G# ~) N- J% M& f# N
p5 A% X* B: Z. \; SREFF:
/ }3 N4 O' I6 H3 ~% C2 g1.
0 `+ V$ C3 _" jACPI Spec 3.0
% q8 V+ C. [% I, |3 g* n* e2.
$ U' g7 r4 q+ a, l1 [Intel Processor vendor-Specific ACPI1 F4 G7 {6 Z; H: {0 N# v
}, d2 @2 P, I' n; `* Y 6 s& M" @) h' t' e% r0 m( h
That’s all!
9 h# y$ N; v7 l% M# W% L ~ # j9 u7 d4 ]* x6 J. Y
Peter! Y6 {8 N& _% ^- d6 g
1 F# F* {4 C r& e3 L
2010/10/01 |
|