~ubuntu-branches/ubuntu/oneiric/gnupg2/oneiric-updates

« back to all changes in this revision

Viewing changes to mpi/i586/README

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Viehmann
  • Date: 2008-10-04 10:25:53 UTC
  • mfrom: (5.1.15 intrepid)
  • Revision ID: james.westby@ubuntu.com-20081004102553-fv62pp8dsitxli47
Tags: 2.0.9-3.1
* Non-maintainer upload.
* agent/gpg-agent.c: Deinit the threading library before exec'ing
  the command to run in --daemon mode. And because that still doesn't
  restore the sigprocmask, do that manually. Closes: #499569

Show diffs side-by-side

added added

removed removed

Lines of Context:
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...