Short: Patch CopyMem/Quick for 68060(040) v1.1 Uploader: dbusse@metronet.de (Dirk Busse) Author: dbusse@metronet.de (Dirk Busse) Type: util/boot Requires: 68060 or 68040 Description: This is a small patch which replace the CopyMem and CopyMemQuick funtions of exec.library. These functions are optimized for the 68060 processor. They should also work with the 68040 processor. The patch tests for a 68040 or 060 processor. If it can't find one, it doesn't install the patch and exits with a return code of 20 (=fail). It also fails, if it can't allocate the necessary memory. In some cases these new functions are four times faster than the original functions. Installation: Just copy CMQ060 into c: And insert CMQ060 in your s:Startup-Sequence The source code is also in the archive. Author: Dirk Busse Speed comparision: There are already two similar patches available on the Aminet: CopyMemQuicker V2.8 from 1994 -> Aminet:util/boot/COPMQR28.lha PCM V1.0 from 1996 -> Aminet:util/boot/PCM_1.0.lha CopyMemQuicker is optimized for a 68000,010 and 020 processor. But on a 68060 (I think also on a 68040) you could get some more speed improvement. PCM is optimized for the 68040 and 060 processor. But some copy modes like Long to Even aren't optimized. And the copy mode Long+1 to Even+1 needs twice the time as the original exec function. Here are some test results. All results are measured on the same AMIGA 2000 with DKB WildFire060-50MHz. TestIt from CopyMemQuicker V2.8 original CopyMemQuicker PCM CMQ060 Kickstart3.1 V2.8 V1.0 V1.0 CopyMem routines 565×64kB L->L 1.85 1.85 1.35 1.31 147×64kB L->L+1 1.33 1.14 1.07 0.47 413×64kB L->E 2.21 2.21 2.23 1.29 147×64kB L->E+1 1.35 1.15 1.07 0.47 147×64kB L+1->L 1.35 1.15 0.47 0.45 382×64kB L+1->L+1 2.11 1.23 0.91 0.87 147×64kB L+1->E 1.33 1.15 0.79 0.47 501×64kB L+1->E+1 1.71 1.70 3.71 1.57 501×64kB E->L 1.71 1.71 1.59 1.57 147×64kB E->L+1 1.33 1.15 1.07 0.45 382×64kB E->E 2.11 1.23 0.91 0.89 147×64kB E->E+1 1.35 1.13 1.09 0.45 147×64kB E+1->L 1.33 1.15 0.45 0.47 413×64kB E+1->L+1 2.19 2.19 3.05 1.31 147×64kB E+1->E 1.33 1.15 0.79 0.47 564×64kB E+1->E+1 1.81 1.81 1.35 1.31 33900×1kB L->L 1.10 1.11 1.31 1.03 9400×1kB L->L+1 1.17 0.93 0.86 0.29 24000×1kB E->E 1.70 0.80 0.92 0.74 196000×128B L->L 1.02 0.73 1.04 0.75 155000×128B E->E 1.61 0.63 1.05 0.59 588000×19B L->L 0.83 0.60 0.74 0.50 622000×18B L->L 0.81 0.51 0.77 0.47 663000×17B L->L 0.75 0.70 0.73 0.52 956000×16B L->L 0.79 0.71 1.00 0.69 1060000×8B L->L 0.85 0.79 1.01 0.52 1430000×4B L->L 0.73 0.61 1.14 0.38 2190000×1B L->L 0.67 0.61 0.84 0.56 CopyMemQuick 565×64kB L->L 1.85 1.87 1.33 1.31 33900×1kB L->L 1.09 1.11 0.89 1.03 196000×128B L->L 0.99 0.71 0.81 0.71 956000×16B L->L 0.69 0.63 0.94 0.56 1060000×8B L->L 0.47 0.57 0.60 0.40 1430000×4B L->L 0.35 0.51 0.52 0.23 Test from PCM V1.0 Fast->Fast CopyMem 0.26 0.26 0.18 0.18 CopyMemQuick 0.26 0.26 0.20 0.18 Chip->Fast CopyMem 1.98 1.98 2.16 2.14 CopyMemQuick 1.98 1.98 2.16 2.14 Fast->Chip CopyMem 1.92 1.91 1.90 1.90 CopyMemQuick 1.92 1.92 1.90 1.88 Chip->Chip CopyMem 3.64 3.62 3.70 3.68 CopyMemQuick 3.62 3.62 3.70 3.68 History: 1.0 (12.Sep.1998) - First public version. 1.1 (15.Sep.1998) - V1.0 exits with a return code of 10 (=error), if it can't find a 68040 or 68060 or can't get the necessary memory. V1.1 exits, in this cases, with a return code of 20 (=fail). - Fixed a mistake in the readme.