[BACK]Return to README CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / x86 / pentium

Annotation of OpenXM_contrib/gmp/mpn/x86/pentium/README, Revision 1.1

1.1     ! maekawa     1: This directory contains mpn functions optimized for Intel Pentium
        !             2: processors.
        !             3:
        !             4: RELEVANT OPTIMIZATION ISSUES
        !             5:
        !             6: 1. Pentium doesn't allocate cache lines on writes, unlike most other modern
        !             7: processors.  Since the functions in the mpn class do array writes, we have to
        !             8: handle allocating the destination cache lines by reading a word from it in the
        !             9: loops, to achieve the best performance.
        !            10:
        !            11: 2. Pairing of memory operations requires that the two issued operations refer
        !            12: to different cache banks.  The simplest way to insure this is to read/write
        !            13: two words from the same object.  If we make operations on different objects,
        !            14: they might or might not be to the same cache bank.
        !            15:
        !            16: STATUS
        !            17:
        !            18: 1. mpn_lshift and mpn_rshift run at about 6 cycles/limb, but the Pentium
        !            19: documentation indicates that they should take only 43/8 = 5.375 cycles/limb,
        !            20: or 5 cycles/limb asymptotically.
        !            21:
        !            22: 2. mpn_add_n and mpn_sub_n run at asymptotically 2 cycles/limb.  Due to loop
        !            23: overhead and other delays (cache refill?), they run at or near 2.5 cycles/limb.
        !            24:
        !            25: 3. mpn_mul_1, mpn_addmul_1, mpn_submul_1 all run 1 cycle faster than they
        !            26: should...

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>