On 3/3/2014 5:16 PM, John Kasunich wrote:

<massive in-line snippage>

> Can we agree that on a single core system, slow threads should never
> steal the CPU from fast threads, and web browsers should never steal
> the CPU from any "real-time" threads?  Even if you are only doing
> simulated real-time?

Even on a single core system, there are more ways to implement thread
scheduling than "you can shake a stick at".  The important issue is the
code operates correctly under the implemented scheduling scheme.  The
"right" scheduler is the one that works for your application.

That said, I don't have an issue with your proposal, although terms like
"fast", "slow", and "real-time" should probably be rephrased in terms of
relative thread priorities.

> It would be foolish to try to implement a ringbuffer or other fairly
> heavy-weight protocol in an FPGA.  Instead, you define a register
> map by which the slow task controls the fast hardware.  Ideally
> every register is independent and the FPGA does the right thing
> regardless of what order you write them in.
> 
> In some cases, there may be groups of registers that need to be
> atomic.  It isn't uncommon to have double-buffers with a strobe
> or similar signal that tells the FPGA to transfer from the first set
> to the second set in parallel.

I totally disagree.  I work with FPGA systems on a daily basis, and
would be completely crippled if you remove ringbuffers (and their
identical twins: FIFOs and queues) from my "bag of tricks".  These
constructs are used extensively in my designs for the exact same reasons
we need them in the new real-time layers:  Communicating chunks of data
atomically across clock domains (or threads / scheduling contexts in
software).  These constructs are non-blocking, and serve to isolate
various timing domains from each other while providing for highly
efficient transfers of data/messages/whatever.

-- 
Charles Steinkuehler
char...@steinkuehler.net

------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to