Date: Thu, 2 May 1996 02:35:47 -0700 (PDT) From: asami@cs.berkeley.edu (Satoshi Asami) To: current@freebsd.org Cc: nisha@cs.berkeley.edu Subject: more on fast bcopy Message-ID: <199605020935.CAA06965@silvia.HIP.Berkeley.EDU>
next in thread | raw e-mail | index | archive | help
Looking at Bruce's code, I added some prefetch to the code and got quite a bit of improvement. Extract the following in on your machine, type "make" and then "sh runtests" to see the numbers. Also, "sh runtests -graph" will create files suitable for gnuplot consumption. "load '<hostname>/plot.gp'" will show you how they compare. The FP thing is still by far the fastest for large copies on all the Pentiums we've tried over here, but we can't use that in the kernel. We've got 67MB/s on the 133MHz Pentium + Triton here. Wow. Of the ones using integer registers, unroll size 96 and 128 seem to be the best (from 96 onwards, the height of the plateau is pretty much constant). However, for copies of size 64, unroll size 64 is better (of course, because the size 96 and 128 cases will degenerate into libc). With integer registers, the most we see are about 55MB/s. The program "unroll" is the meat of this package. You can do things like "unroll unrolled 96 32 2" to get a function "unrolled" that copies 96 bytes in one iteration, does a prefetch at intervals 32 and uses 2 scratch registers (this can only be 2 or 3). Look at the shell script "runtests" to see what other things you may want to try. Please send the output of "sh runtests", I would lie to hear especially from people with 486/P6 or Pentium with slow memory systems. Thanks! Satoshi ------- begin 644 bcopy.tar.gz M'XL(`$%_B#$"`^T\:W/;.)+Y2OZ*#F,GDB++)$7)KSBWGHPWE9K$=MG.3N9B MEX8B(8DV16H)RI8SR?WVZP;`EQY.YN8VV;JS:F(1W8U&H]'H!PA-WXLG=YNG MAP<_OSM\]"_Z6*;9=1QX!);=;;?Q&\#J.N*;/I;5V0+H6HYM;CFFU25(>\M\ M!.:C[_"9\M1-`!ZYW!T']]`-$]=_]'_O<WXW86",W6MFP"!(>-H".!\%'&Z# M,`0O'D^"D$$Z8C!-@S!(`\;!C7QP0Q[#D$4L<5.FNS!)XC1.[R:!YX8P9N.> M-VGI^GER!P8?03*-4L93;D`:PTW`;N%VY*:"[8V;!/&4PS1*8APQ9-$P'7'P MW`C\&`9QHM_%4Q3J``=L`CX+5(J,J3<*.&;(VX=XFD(81"@>#D'H*0^B(;3U ME(TG<>(B)&'#@*<LX1!$^.UBIP'838@3<-$B-_IW*<.)L`%+O1'P-`E\EI'J M2-JVA7(89^`'?O0L!<[8F,;K,V"#`?/2X(;!B"6L"7V4)TAA'`Q'*>)U/T"" M!&6%.*)I)#!VO1$*C&J2<RLK"C;0WB8C0R[#!'GA_/"+1,=U"M4J9`L`KCZ, MII,P3H5&"$5$I#Z0ZJNAW*6.W$N"22JY#V.ALA'3^;3O!PE.(T9M1>X8U>H. M4&%2WE&,UE%'#0B3"6/4W[,7!"3*EYLT>FLX>6;HJ#+27"91MN1!VM(?/7S^ MO3Y]X?_?X?XGX_@A_A_:EIGY_[:S92'6MFS[P?]_CX\;AKN9[Y5N6]=ED_FM M.$/IFB+)4&##3A<=(GP&%YU5#&M_TW79?S=S_QX4C'1MK?;J51TVCB4QK+W, MQLG&:'E+B;R0N=&NKB5CV!A4)2WS?]C)?V7_J[#S@_(_TVFK_=_M6IV.V/_M M[L/^_QZ?)X\W^T&TR4>Z/IA&WKZ1[2E#9]XHWC?HKZ'?CBB=^`AK3S`S2<&$ MRSU,SW3`9`RS(6.V9AF8F>BTG,9LXY_3@*5&79?K*_FDR909"K*WEU&.6#@Q M/M-#A1R,*7>';!?63/@HV5W"1Q+P,N/!9D%:9=?(.(B)K%EE+..NAU]\%`Q2 MW8\CINO!?MO6U^1H1,>#3XR^^Y@?W09^.BK-.H`-?$`[-HN9!P/"B/[[(-5$ M.,RCI!Z4C\*^:R00V"^?6O!RTV<WF]$4?=AGN%`2NK?78/PQ28(H'=0N#%C? M\@'6=SB\^VF37T071A.Y-.%BK5/_0M-G(6=_;0AD+OGF/`<!36G_=S:;),3P MH@'V[U)3#T[R_XO_YS_$_]L=IYOE?QW'<LC_M]L/]?_W]O^BXMPW_Z2OEW5J MYGHE#VN%8UYT[8+^\B):Y=67^6WA=T5'=+QFR>=*]F'0]W8-T2DKIX%@.0%& M-NE`L]IU__?L"3;X[]*U/X;Q-=;"L):CR+F6W+ODY;ET#.`EC(KPHG:^,/)^ M%X:<&\T,K,S3SLD&,L;!RV*\38*WL.I':BJC]XUGB[AG<"L//2:&CGQUJO>O MZ(@`,W-G&W"3899NV=M@.8Y8Q"<@S@2NB<:B!%XM;0Y4D"<BCB(P(*`-;457 M!N8@@/GJ@"+2%:Q=Y^5!*5-7AN)Y*L]706Q9T2!)5R]XV:HH?*-171ES<*$> MB;N>Q^4'0H@,"F2Q.'/TN95F`;A*O6P5L]FL7:FUE)^%%:W2%>N*H9]HLY&% M\0"(G:"^Y*Y8K<_!)-<H_^KFD9KJ.H:^J+^V74!+FMN&VM]/ZM4-E^VP^W53 MDFR%G5<IEFI%R/.,(^M9&G@<:@;*"683#)P%6/B-]F_0,9]A=[H&M/&A8R&) M0RC31J(.X4P'J;KXY)@[2+:%3]O6#M)MUY]5I%;G7+DJQ!F7%`=>+B/$-?MW MC_^9L?R0^.]L;>7G/UM.=TO6?YV'^/\]/IL-'1K0O^WE_F(#*Z'Q!#,`A%`L M(P,!Z0P;F_J3(/+"J<\T(PW&032T6YY1`%_P.[Z)"-8:O=3U)SX;X':%\]]. M#J77FO9#5@';"`[C:"C^9!CM[,U_'FKD=.)!C:CJ)5['YP=O"0^.M>.T34?; M;(#S[B>23;^)`U_+/$:MOB<`H+'Q)+VCICYV@ZCF>DUP;^JY+_9&9`"-AGNS MI_^10[%2DJ&-,X\WPSB>R"?`2HQ>%/"]G%3-K\$3Y-SP>;I'YV4\&$88"L7L MTO$$87+^VKB/SQSK82\%TM6-&T**8VLTY!%*J:&71BGA\3ZTZ_"'KFD#5;GQ MU&=)TD2(R+[>RTQJG<OBE;*"SWD,=D,A``+4$V99-/&/YB6J0M,H(:E9]/A% MU\2,,"*X:1S4D,82-"1'+71YJD"POP_/KI_5X?-G6(#_\JQ>1[:24V,?R+>N MXC%>P>/='(\:,4'[I"\2Z`A%S"U@<VX94/V(%@:#*>?8#</8JPF:QA$\1Y?3 MWA9,<(&^B8XD?TQ,4=+'V$DNQ007($YJANQG+*A2UW"QB7_%`NK(9T^BGN\# M!1;5>KH/_X5-BTRB(K\TF:6\I(7=RZLZ1\%KLR%FA(;GC2>D]/8EQCAE&T:= MK,V44[QGT&Q4C*G46C*,]H6VHC9D*=EV//#=N]K3]*8)1^_?OJV+:;J1'X]K MZ4TKO>G1IB(HI96U0.0D>YA?OH!L0;#U_#D:!:UPK9!);-H&J;7^,;C$?HHK M\>I_8DE<0]F:&1?:^^0H6,2G"8-^G(Z$N="K,)J#B\`(PSB_=2<3]3*19B&B M8TWLZSEV6NX1]DUE*X5F;=(L[49#F+52*P6:5`A8FJV<[-$>/'\>2+)BT.=B MN$VR]48@))B#B)9@B%M8$](@3Y[&$YJ]L$>1J_ZIX7/_^;\B`5I=,3+,?>Z5 M0WKM!2$69*B*D"]+10RQF%]665G%QH2_6FEGN$D6D30$(LES*3]M"">Q*]C# MNM_$1#B>ACZ])UXW[1D&$2X>R"4K9TY#-^>9YP,W[QD6IS[NXYSD7#:ETVPU M,I\Y%SO`6!\`QDLTLH"B!$8Y`:"31HP/XS[](RXUH<:-7*%U!(H34--LF?A\ M5"?N"4NG200U$QOH_&0Z\>'#!TPCCA@&-NYB!$[ERWZ<M)>I8>SZ#`8NU1"D M\C?T1AU#5BC>ZM.[94Z,J#;)H;B<">/R?D)T#6Z?=BEQ1=";%+,+QJD8'\4X M`ITVTXMV%SBW6R)SH5Q`SXVJ6>SG^GP@KT3R^7Q`!9TB49#')3*`P,M]*JL; M0+9)=CQO\9)JHT2UN"O((9&+[2ZBR&<I%)HSZEL$4)R!1C:A-81@FI*HP851 M:Z55XA\W[$NQ4M7\/\_E?LCYGVV)\[^V:5G=+4OD_[;M/.3_WR__7WOC[X(T M@I;7O`&KU05K9Z>S:6YOVATPV[MM$_^#<`R'LPFL81_J]@IM)Q$77&I>G3HX M\-9-L&9XY_TCOL-M"8KP`+>PO,`"PUA>T9'NJ%4I*L#HL\@;M49%20$OD#"( MJ9XH@=`/NF$5-HT"I)RCHVKD;H).8Q&<%RG!`$L+C4\CG<W0&T64AE?3%]PP M)53F3Q'ZA$5^,,AYG+X_.WA].#<0NJQXFGB5BD@C?XH)4%U361"V,?,L,J*R MJZT7PZC>T:?:#+OB'Y%=P'^`!;N`S7I.\NXG380!$04$#X7X12$(1A^T_C3P M8*X<$1&[1UD;Q=`>52?*M9\11ID*IDRW)=^JPCQYH!H!ZE!-`@NFM=)PGV*L MZAIUJ`20,QPU&X1R-.6_$HHHU(G.'\>!E\2HJSCRN91B*HI($?6%%/,U%EW! MHD1PA71BHJN%PQS[AD_[F,P2GR84/?*9E0.BH,K6MI$M)ZURAE"I[Q=9M^J2 MNV*>6OC/+"+3W%0:BJQ!=(W4+,<C@=IXJ4;>1U9Y8P-Y9HV])1VFE1[32I=I MI0]E27/]7D!)WJ7";&PTYP>C8"8U(Q3Q\#[NQYS_*;?[8^Y_M.VN6<1_QZ;[ MOUL/YW_?/?XK(Q#AWU'AO[MI6V!;NZ:]:U?"?REHJ\^20)UAEL3FO-/2$)UC M%P-]AL+D(8K+$?SHN'=R?'K^[N#DY/`TCW?GKTYZ'PY>G6OMG:Y=@;XZ/CH_ M/7Y+B'8%\?/!^0%!G7GRHT/)IX,1F=YO+(Q1F_;$68EC.F9[APX<9"6$);5Z M7X(5%ZENB1CEOH[Y;7V%I)6.UC</*B93Z6M_O>_[G^5,H3K5;^Q)XL[U;'^] MYS\.3\^TO)>59T/2<GGL73.ZB!WYF&IY-]"?TCUKB">4/GS"Y":.N%[F=W;\ MZI?CD_,>_>9!,Q?`OYZ^.3_4K$7RGW\]U>P%\-'QT:'FZ!7X3^__KI72KWH% M>79^>(+(KD(IZX6SW\XZ.9T\P,)*/&1171NS,6<I-4T)*>CD25$3?$0(0@_; M=-Q`[9P,\U6?S8C.JU-2E'BC1+864DN10E4/KW/<Z^/>P:\'OVER4];.WKP^ M>'OZKBG>;-?WL$QWDW$-77D#NB)?$J?QXFA4G<07!T%R&)FI*9SK7Z$KSIN) MN"60-_-+63GDNI\_CDN/E!266F$8Y"VRB(*C3+?J>6+[6EVE]V&0Q&,8\V%K M1K6]-Z+#&N5]?'&Y?Q=SP4D28T08`^V&WLGI\6LZM"+'=,,2CC8G$62[XC2+ MRG/\.CUY)?9/C=J8O8,E4RKMBWP6W^V=+<R&2*:3D-&5"S\6AY/,#]0I"EW5 MII27CCUN79[_#,!7/WI()AZ"9%)<*D<07/C:_(U*,8-:MLE(@GJ50,PD)[`* M;#:EE<C##V]*2+NN:BEUBH4R]6:NE_:LHLQ2*"\,6)3VJA0/&=N_(O\KWQ'X M_N<_[?S]K[/5Z>`SIH+.UD/^]ST^K13WG*ZUQ'L@L/76,(S[(?0R>T`4N0RM M@#3_1G=-*:[J.6P7'>*4CT)89_V)KHWC&WKDDZ9L9S@_*)YYH.BV:T14;Y9` MEIW#_!S6S6'>#!VP-YZ$L-9MR[9VU6?YS:%>Z@:AKNE/E"!>8A*G6098VVZB M`.Z,<H]7IV;O_$SD!QHY68+C(X:;4#R+CD1(OT-(*N1JEC[2X`@H$@849&Z9 MVS07G/:`NS<,:M3`0)_KN&G.=LS\1Q8].F#?59-LT\1Y0)-$,22LZRS"=KH5 M&,8#_Y]@2EC6W*XVK6ZU;3O5=C9TUG;FV#ES_#H%OQG&R'6,W5L"R=.)E,6O M(#L%<GL!V2Z00LXJUBJP0FJ)E0`A=AG@F/.`[3E`)Q_!]7&5US:ZCC(BV19- MLL52D\QPWN)<J*PAKO`@H7<4V8JK_KD]9&:UMEVQ1F6>PNSB1%E4;I\)HZM- MRNSDS_0@3H)A@"D8W+CAE%6,T<V,L;(7=O-S&47FS>2(Q1TV''C-EC/+[T6$ M?OZ<L$F9!P_G.8J=4NHL9]JN`N>Y]%%G(9WI;92<`/F+>)*Y"/5(^D?*&R8. MV$K3P_P5-T^+[C^4?509OU%V9IF?>XC\Y?B?_0+KAYS_=+8Z3A;_,?QWQ?L? M\^'^]_>Y_[WXG@4+(@C15=*OH[F'=06ZX>*GT^AM5.;.AOPCW;R01\\&^0"# M7B^C_Y+?_9FA?P$L9>C=J;AZ10]N,O2:*L5O8..FK@ZO"8E,F^(R4U/<]*3. MV7$S]:/W[QUQ/V#AK?8TOPLE;FN3=-FMJ(C)JT\X%EU^0J;9C1V0Y=<777JG M87X#BDCMRPPO^)11[1PEI"RCG!PE-Y6$6I?9M,0,J5=&IEX8F"!.P%4GJ1Z: M25/H1?;--40/@D=)=4$3KLKZHNF@NFQX^A34<WNYZJ+IN$]')H/2,A<7%FSZ M?7P;-;A2<>+R"ZEH'9SE(U!\E%HL^(ZG81K0/4,<U_D:>Z'FU>P)^S]A3Z4_ MW<96MS8NTI;XV?R%L<Y;WH4AS(86(>N1$0X]S^ZI_SF"W]I5[,L4O5YO&$US MFIZ7$^$&*A.*!'P)`Y1%Q:KE2)&G:[UUOE)()!*I^Y+,?9G`ZWSW'E8J;:<H MO50>F0;(G'\E4<[$#^['\S(^,^;]S(`7.D@="(=4;-HORR3$/$,E&G.#S-%1 M!9(3^O<1=DN$WFP9X;*^,I=<]_->TCUL6(ND5-FL<Y''K5Z?^^Q'U!M+*)"I MJ#T6N.:WI*0+%A>EQ.ZBQ^?[RO-H\XOOU]9542+7(U!+8E[>(V[)=TA7FEV7 M^ZJNGK?%EEY4U'A2F=%7Y<S]<B:J-B>G=K].M9)"<?!%?7ZI:I7NGBE-*G]& MF"N%N4)EHRP-1SSG-)FN`HJ[SZ_HHA')78=^PMQKDF+9?EQ8$ME;S?9JT[E4 M]W__@@ADL\,82Q/Z(<HJ07A3RH)E5[%7:?Q<)BE(IB[BM3MGSZI:6S"$1<N7 ME))0[/)O(?3O(_PS^]4%M;/^S'95._P^%YRY6"K>*-E:NNGS2FZ5-TJQK%L* MQ^)LE9OCX;T^WYW=,UQ>"*ZDN&_@_K<Z5%E&2B/+_/LD,[6&LS265"*)J#.7 M!I)YHI61(T.OB!>B?EVA@72Y25!U>U]\%V5OCW87EY5N*1TH_ZU#^<[?P^?A 0\_!Y^-#GOP$1DL6#`%```'2Y ` end
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605020935.CAA06965>
