[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/