Shop OBEX P1 Docs P2 Docs Learn Events
High transfer rate (MB/s) to a propeller, but how ? — Parallax Forums

High transfer rate (MB/s) to a propeller, but how ?

AleAle Posts: 2,363
edited 2007-11-27 22:16 in Propeller 1
Well, first let describe the problem:

- I want (so many things...) to implement a large memory model (designed by me) to the propeller. But before everyone jumps in and tell me about the other two existing (in some way) models, let me say what (I think) is unique about mine: I does not execute from HUB memory. It loads the program from a external SRAM/DRAM.

So, here comes the problem: The propeller is quite fast interpreting... assembler (let's call it that way), so why inventing some other language if we already have something that fast (To that conclusion I came after some deep studies). But I think hat HUB RAM is too precious to be *wasted* in holding a program.

Now the problem: How to transfer megabytes per second in fast bursts to the propeller, I mean to COG's memory ?

I envisioned 2 ways, a normal, bit-bangling COG that accesses an external 8 bit SRAM. That gives around 8 instructions per read byte.
An "assisted" way. Just outputting the addresses, a external CPLD generates all signals to read a SRAM (or DRAM) and sends synchronously data to the propeller, at 4 bytes every 8 clocks (using 16 bit mode).

Does anyone have any other idea ? (Using an ARM or Coldfire or xx processor instead, is by definition, out of the question). smilewinkgrin.gifroll.gif

Comments

  • hippyhippy Posts: 1,981
    edited 2007-11-27 20:55
    "Using an ARM or Coldfire or xx processor instead, is by definition, out of the question"

    But what if xx were another Propeller, or just another Cog of the same propeller ? Can you afford to allocate some Hub memory as a cache, filled by another Cog with some flagging between the two when you need another page.
  • AleAle Posts: 2,363
    edited 2007-11-27 21:29
    I thought about that, some kind of L2 cache. I do not think that that will really speed things up. But of course, that will allow for multitasking, in a easier way, OTOH, till it is tested... I do not know how well/fast can it perform. Is all bound to implement a LMM assembler. I will modify the one I wrote and add the small "differencies" introduced by this model. let's see what happens.

    I was referring to forget the idea of LMM completly, and the propeller, and focus on some other micro. The idea is to do something like this with the propeller.

    Thanks !
  • Bill HenningBill Henning Posts: 6,445
    edited 2007-11-27 22:16
    Hi Ale,

    I considered doing something like this for my lmm, however while it would allow for more code/data, it would pretty much be tied to one cog (sharing it is possible, but requires semaphores, synchronizing cogs etc - messy), and it would be slower than using hub memory - especially for non-sequential execution.

    A good starting point for your experimentation would be the Hydra's memory expander.

    Hippy's suggestion to page into/out of hub memory (use it as a cache) is a good one, and is the direction I was leaning in when looking into adding more memory to my props.

    Bill
    Ale said...
    I thought about that, some kind of L2 cache. I do not think that that will really speed things up. But of course, that will allow for multitasking, in a easier way, OTOH, till it is tested... I do not know how well/fast can it perform. Is all bound to implement a LMM assembler. I will modify the one I wrote and add the small "differencies" introduced by this model. let's see what happens.

    I was referring to forget the idea of LMM completly, and the propeller, and focus on some other micro. The idea is to do something like this with the propeller.

    Thanks !
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com - a new blog about microcontrollers
Sign In or Register to comment.