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 -