[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [microblaze-uclinux] FSLFIFO
Hi John,
The latest version of MicroBlaze (v7) added many new FSL instructions to improve the usage in RTOS environment.
The new features are:
- Blocking FSL instructions are interruptible.
- Dynamical FSL instructions, the FSL interface number is taken from a register value.
- Can force FSL instructions to not be interruptible without the need for entering a critical section.
- Can take an exception if there is a mismatch on the FSL control bit for a GET instruction.
- The maximum number of FSL interfaces increased to 16
There is a new MicroBlaze option to enable this extension to FSL (disable by default).
Using these new instructions should help improve the performance of the FSL driver.
Göran
-----Original Message-----
From: owner-microblaze-uclinux@xxxxxxxxxxxxxx [mailto:owner-microblaze-uclinux@xxxxxxxxxxxxxx] On Behalf Of John Williams
Sent: Monday, March 24, 2008 11:47 PM
To: microblaze-uclinux@xxxxxxxxxxxxxx
Subject: 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/
___________________________
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/