www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/11/13/10:40:04

Date: Wed, 13 Nov 1996 16:24:22 GMT
From: kvhk AT ivs4 DOT barco DOT com (Koen Van Herck)
Message-Id: <9611131624.AA20092@ivs4.>
To: djgpp AT delorie DOT com
Subject: movedata() or farnspokel()
Reply-To: Koen DOT VanHerck AT barco DOT com

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019