[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] FSLFIFO
Hi Simon,
Simon Tam wrote:
I have only one FSL link in my design. I believe the tasklet in the
driver loops around all 8 FIFOs however. So I changed the
MAX_FSLFIFO_COUNT from 8 to 1 hoping this will improve the performance.
But it seems that did not make any difference by looking at the object
code. I still see the put statements for each of the 8 FSL links. And
the performance did not improve. I wonder if there is a better way to
make the link faster if I am only using one FIFO.
The performance issue is not related to the number of configured FSL
channels (that just saves you a bit of memory more than anything else),
instead it's just a limitation of the driver architecture and the
original FSL instruction semantics.
If you look at the code, we have to use non-blocking FSL operations, and
check the result each time. This is slow. Also, it's polled rather
than interrupt driven - that's slow and inefficient.
One of our students created an interrupt-driven version of the driver -
you hook the FSL channel's HAS_DATA signal to the interrupt controller -
but I'll have to dig it out. The code needs some cleanup as well. But,
from memory the performance and latency is quite a lot better.
Regards,
John
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/