Messages in this thread | | | Date | Thu, 11 Apr 1996 11:59:41 +0200 (MET DST) | From | Bernd Schmidt <> | Subject | Re: Accessing Pentium MSRs |
| |
Okay, here is the promised patch. It adds the syscalls "rdmsr" and "wrmsr", which are wrappers around the instructions with the same names. Write access is provided for MSRs 0x11, 0x12 and 0x13, which control the event counters, and read access is provided for the same three plus the time stamp counter (0x10), although the last one isn't exactly useful if you can't rely on being the only running task. MSR 0x11 controls the two counters. Bits 0-8 control counter 0, bits 16-24 control counter 1. The bits mean: 7/23: count in user mode 6/22: count in kernel mode (hardly useful) 5-0/21-16: select one of forty-two counters.
MSRs 0x12 and 0x13 are the counters themselves. These are 40-bit registers.
Here are some of the more interesting counters (numbers in hex): 0/1: data read/write 2: data TLB miss 3/4: data cache read/write miss 6: data cache lines written back 9: memory accesses in both pipes A: bank conflicts (both pipes accessing the same cache area at the same time) C: code read D: code TLB miss E: code cache miss 12: branches 13: BTB hits 14: taken branch or BTB hit 15: pipeline flushes 16: total instructions executed 17: instructions executed in second pipe 22: floating point operations 27: hardware interrupt
I found this information in the german computer magazine "c't". It may or may not be accurate, but usually they know what they are talking about. Unfortunately, I neither have a P6 nor documentation about it, or maybe I would have tried to make this more general. I've included a small example program that tests counters 0x16 and 0x17 to show how to use the new syscalls. Run it a few times with or without other processes active at the same time. The counter values should not differ by a large amount between runs, but the cycle count will differ a lot. Comments/suggestions are appreciated.
Bernd
begin 644 diffs.tar.gz M'XL(`"G%;#$``^T::W/;-C)?I5^Q59N.9%$R'[(LRW4:7R+W/!>[&=N7)I=D M.!0)6:SYT!&D927U_?;;!4CJ+<OI)#<WY<:*0.PNL-P7%H!&/H^:CCL8//EZ MH*EJN]6")T"@+GR#UM+5-D!;,PRMI1FZAEWJ?GOO":A?4:8<$AY;$<"3*`SC M370/X?]/@4P/C21R^N"Y07+7T)I&L[.W:T7V<-<U.NW=&Q8%S-ME01Q-FI>2 M:BVZW&@TMANH=!*Y<(:JUP]`,[KJ0==H@W9PT"[7Z_4'9BG]QAPX'D7H**#I M7:W=53N2]_ES:+0[;:4%=?IJP_/G92@UO3"XALMW9W_[]95Y?GS6J_()-[D] M9(X91>8UBTTWB%ET:WFUM>2!%83<8VRTGL2/F&\AOE%J\I%E,ZB>7YB(L"W/ MXPVM;=1V6N7Z&N9QA*%86XN.'$+##.SN@-;>@YU=XEDYWQ[-M[6%1U%H,\Z; M]CKMYP1;6#FG+5U:L;`5H'G5;DOK:MJ#=IYRSUNZM=]M&5-+Z_H^FKA.7WNZ M-'5)O1L@P(\0L6O>>#;@RD+/-:\=EN&^#.6ZQ7T4X,:Z9H#VA]P*57H*(D7T M#MWKH6QYX1CM\QG5[0Z@^EWUKM,V;6MD]5W/C2<X@:'7R("EB,5)%$"C][IW M<79(AO*M29^!!7T6HY\!BZ(P`CMTV,_"?LC$QVYL#Z$:H)%I"MOB#-0[3>O2 MB#C$KX$W`1[Z#,(!Q$.&Z+X;<[`B!@FW^AZ3KB"$(Z&%*%-93L_?'+\ZS`CP M75!@]>ZDIZKT64O<CYAU<S@CD-Z=>3"Z<S0.&UB)%W?GE)"/=4^,211A%#>> MQ6C>A+O!M8D*YW`$&I&8)MK$-,$T;T//BEV/F6:UTNQ/8II./5'P?T.M"&%% M$'3Q7\6N"+TI4+$JXM6HZ512-=1HX%0:%=OWI.\5IA<1EIL^";A[':#WB6C< MZ2>#`8M2\\_CI(/@K#0/L0OKTL-C/44X@O2-([AED3N8F&A>J_JF=W%Z\L[\ M[>+TJJ>`E$4!?8>[GU@XJ)(8\C5I.C'`[.BY/(0-(OB)+*?"'W_@B\(S8<;: M2HMM:Q!]SB"5HQDK'.5FF#&4$'64Q&;"6424V3O-(Z1B)::NK3(CAE898`=. M(L8@=2V,#529`XX56\#C*+&1A7%@L=UL$O6NS!T'M#S4C9:N[,O4,9).V;?L M&Y-\`VV`\^3];.!9U^2H,HVDCQ1#E%YL_!Q2F+KAR`,7P](;6Q..9<X`K6E! MP,:09C62(!_5<V(<TGSU\HH4(UY_16P(.<AZB$0.RA"8ZN0#HJOR-<%AW#9E M>Z<&MSXN`Z%=Q;'-WOG5Q6GO<B=KOS,O3__5HT18FAD7OCN"\W^^>E5;NVBX M@>TE#MM%I\B2=!@UAVD>7X-=7B[6$);.PD#6!'NXM'6U@Z[66EPKUK%N+`FP MH"1CTQ>N/L+:J<IN?0S-M+TCG]Q@$))BYJ.<V^AC@8DI%Y?X9?1MIRT<0J&6 M;_$;V<`,CS9%MWB-GNDF/IQ=7@@'J&>K>#X,90Z86OUP!8F8"9&:MA&K#UU% M-KQP(Z&1$1I$"/?X*</WF,3=@,'I^>F5>79V_!H^PX]NX,:F[V.T4\"W5`D* MO#[^I6=>_OWXHO=2@3=GYD7O^"7\02V1JV2S][;W`A=<80B]A>%6U_0#I2/M M\/D_.,R]`C)T6.2C=N`#(LRKR\NJ6I-3*O@?=7Y&820]_A&/T=G'(+=B)MD: M)?+?E$?\$5%N5DE47R)25E%E>E/G*<6(,^:$*8NH*G(%BN@S946#+H9II2KJ M-RHW!^A,Y@A7G^HO)Z_-?_0NSGM;1AVN5#'S5X9<AMH<;QE5Z2IALC##`KS3 MU8TNA<[Z8,OY-D::T1%9M:.TU+0@*W4K/J;]F-\TGCFLGUQC_GR/'Q>'BS[6 MA%F)R+FK4#XJUS/]<>N6B5`@WMJL13)8O3CYX:T'/U#II#Q]RNR[#\&'N+** M/8-\.3M1:#%[F%[,@&-;=\I3=4MR$DC_%@)IVY,[2+[MZ"2_\2WD-QXG?^M! M\F[E*'=`6EE%`JTIFUA@!0LFTYJRJG_H/GXP8\U@F)%7>GK^+E1%H0DJ6%JA MML27([Y\YH?1A$(H#R`OM)QO$T#2(*HB3+BU0RG"A(_TIJ\2;U)^[5'R/]6_ MNOQ;QYL4R'B<_*VO)#_Z:.7Q`;<FWKXDW-9$VQ<$VX.AMHJ-:@"Y+TDW]68< M5H,:\&&8>`ZD&_T8:T0.<2@:M!$+%!BX$8_3@E45!:O12NLD+"N8Q]FTNI@. M/8K8K1*P.]P6."'61S-O)$I[1"]N*5:^]G2])9;:(:W,:8*HYBY?F3F7,B^O M+JKIKLOD+*Y5,M^`4L7[W1_!='7$'ML?B2!;&L*S>&R2&FC;AQG+BH?3H80V M-%F^[QE9U5BBW":J"?GZAA1WJ;^=]M]_L5:F272JE7L8#S%7`I:G9)<`ZS:T MT#;56Q)@V>.LK-XRU.;J+:-:L54R-E5O.=_F?5+[0"BZG97GF;>9)ITLKCHP M+6EM;8$N/RDM(5)?0,HS4L(8TY5*8,31&R%:"PAQ,$.(/1E:\/;M6VB`.0A# MW%<S1X11GXBQ1TEM(SC[%IVR4=016G8TQ?X[GR`]+E6K\63$E,#R&;G!.EOZ M_NZMCPQ!?DHZT[-LN1GDBG/0O46#S9+/V$E5N_2W-[532Z53B[K\D@'!Q]:( M-D*\.;9N6#+B];K8W:.Z7H9T7@ATL'$=A4G@`.T\PB3NRJ.($AU15-TC]1!< M^`EN:"C'M&.OZ5MW1,H14:_3N7:I%$<33#HK-S!R>R0.,1ZFT\3AP[W<,_VO M;T'^NH"1U8@9CYOVUYMC\_T?[!GJ?G;_I[=:!H"F(4-Q__<MX/MTD8"?<'EP MP^;P67FNRW/[\WW90C)'-^&[8\N-YWME3LOIL3`J8S(Z!D[GDF!QSOR^-X$A MIB51!Z$78IYR.81!LRFR-.4SU\94[@8X&.Y-Q"$9EE]82DRJMZ'KP(Y(^788 M(+/LP!2?7M>PH%;^7!8K/CY22F<15S`/?E(@24:?DG\?"NRJ71!4*SSIBWH% M:(]<*8L#[GSK(DJ;K%-0_J"UL=>8]OYNP_X@?TP[.]V%L:I/L31.R_P%!&XP M)*X_@[L+(['W[=\IL(HM1=&P4TS*8]_-R3W+UEHS789<%G)+05J/E:2S29+. MGY"D\UA)-'V3*(3]8EDD\Y;"8$6;N9?VH-,%-D"GOSC$_HS;S0QG+`[76G)A MT)=\6%OVX?5J^A-*VD9%Z=NT5NEF\65(-=J2:O0EU2SR?8+V8%EX>TGXE,"8 M5T]_1CU];PDE^FUO:?R^M]`OZ$7_5GJA-#RG$X=1QYP^/H&QI(ZVE)XR-6;I M>!AR)M-K9&$6E=?-01C#.'+CF`686F5Q2=E[%'+NTD7TV)K0Q5U<+L$.G&+J M=00/5MR.N,+&-!]<9Y?A\1`KXU]>O("QJ-2Q/L4T'5N!(]8`(54W/4-+<W@M M[XVP$U<`NFFD)N;^K$G9'YM]T?N)FG3Y*-.^O(NTY_?R&U:"BA`@\J>3R8=T M.OE`$XKS.:B@]XKC`GOVU"`[0^#N\KSIM6;Z>H?E^W(YVY@8=".-FQK:'(EU M3=S8I*W\MPGB_AD'R[ATR25V3K-<\C)[YKJU3$NC_-$#/M&#O`8GE"!&2NV] M)JY[/A[F7?JT2S#YZ!Q56FW%!;A<@@_+I8P<YWJO?\PZ8M=G&CXKHJ5+##K< M"]R;8`D0QI8'0>+WT3?"`0HOK^=<=$)`KUB'<@/A;>2,;V#DCL3/(4KRU<19 MIKR[4M6#-G[V\06G2#W?NDS[C+Q/'.J4I%[HYES*31N8=.<D;FC%W@FU(O=* MJ(E25JB0"H7*<1IY8R^T2OSWR^/JU)]W&C.V*HTBU.Z@6KD2*II]^ZZHI)]Z M"7TP@#.N]^K'O*E]G!M97S7RZ;Q&4TUVMQH9+7A%Y=O8Q<1Q:T43L-#?8CIN M"=$J47;_S602B9(@H"Q`5LJF?^&%6`S:$]MCG"9UQ(322]2/N.>7KJ/*-\E_ M"W!?;"`+**"``@HHH(`""BB@@`(***"``@HHH(`""BB@@`(***"``@HHH(`" 3"BB@@`(*^&O!?P'63^+(`%````(* ` end
| |