Mail Archives: djgpp/1996/11/13/10:40:04
I am making some performance measurements of the PCI bus. I have a
test program which writes/reads 1MB of data to a PCI device, and I
time this with uclock(). Currently I have the following code:
  t_start = uclock();
  _farsetsel(memdesc);
  for(adr=start; adr<start+0x00100000;adr+=4)
  {
    _farnspokel(adr, 0xa55a0ff0); 
  }
  t_stop = uclock();
The results are 60 MB/s for writing and 7.5 MB/s for reading. It seems
that the code is efficient enough, because unrolling the loop doesn't
gain anything. Remark the high number for writing: this is because I
write to consecutive addresses which can be combined to bursts on the
PCI bus.
With movedata(), I only get 35 MB/s and 6.7 MB/s. I have noticed that
movedata() uses a repnz movesl instruction. Why is this worse ? 
According to 18.4 of the FAQ, movedata should be better !
If anyone has or wants more information on this, please mail me.
----
Koen Van Herck
Electronic Design Engineer
E-mail: Koen DOT VanHerck AT barco DOT com
 BBBB    AAA   RRRR    CCC   OOO     B A R C O   V I S U A L   S Y S T E M S
 B   B  A   A  R   R  C     O   O    A division of  Barco Projection Systems
 B BB   A AAA  R RR  C    OO  O  OO   
 B   B  A   A  R   R  C     O   O    Noordlaan 5      Tel +32 (0)56 36 85 71
 BBBB   A   A  R   R   CCC   OOO     B-8520 Kuurne    Fax +32 (0)56 36 83 55
- Raw text -