Settings

Theme

Direct Memory Access computing machine RP2040

people.ece.cornell.edu

181 points by threeme3 · 18 comments

Reader

9 threads
jevinskie

Also check out the weird machine for an ARM PL080 DMA engine.

https://github.com/jowinter/dmacu

alexisread

Funnily enough, Amiga and ST blitters did a similar thing a few years back. Notably they were not much faster than the CPU (the 68030 was faster) but the main advantage was the bit shifting as well as the byte transfer functions in parallel with the CPU, that gave them an edge

londons_explore

This is a rather nice route for malicious code to hide itself... A full trace of what the CPU is up to could never find this.

londons_explore

So this seems to only use 3 DMA channels... So by using all 12, you could have 4 additional "cores".

RantyDave

Huh, so DMA controllers do a lot more than I thought they did. A question though: don't we need a "jump if zero" or similar in order to be Turing complete? I see a loop instruction but nothing that could be considered an "if"... https://developer.arm.com/documentation/ddi0424/d/instructio...

  • detaro

    The article has a clear paragraph explaining how they do conditional jumps?

    • RantyDave

      Ah. Gotcha. Sorry, my brain cleared between reading the article and the arm documentation.

kamranjon

Does this have any practical application or is it more intended to show that it is possible?

  • convolvatron

    its super cute.

    but it turns out to be really useful to allow remote devices to run limited code without interrupting the host. distributed reduction is the easiest application to think of.

bullen

Is this the same as the PIO or are those separate?

  • Dork1234

    You can push the DMA access into the PIO for some real fun. Just wish the PIO had a bit more logic/registers.

    https://gregchadwick.co.uk/blog/playing-with-the-pico-pt4/

    • monocasa

      > Just wish the PIO had a bit more logic/registers.

      Seriously. I'd kill for PIOv2 to be some RV32E subset. Hell, I'd take stripped of normal LD/ST instructions if that made it easier for them.

      • mgsouth

        Ah, you want a Propeller [1]. Basically 64 really smart digital + A/D I/O pins driven by eight 32-bit I/O processors. Enough oomph to build an entire system out of. Quirky, loads of fun if you're into cycle-counting. Not cheap, though--$18 [edit: $13 Digikey] qty 1. :(

        [1] https://www.parallax.com/propeller-2

        • monocasa

          That's one good example. The TI Sitara and OMAP PRUs in the Beagle(Board|Bone|etc.) boards are another example.

  • argulane

    This is seperate from the PIO. It is using the DMA engine to do computation at similar speed to AVR Arduino.

azinman2

Is this a class project? I’m very impressed!

drfuchs

Yeah! I/O Channel Processors are back, baby! Now, if only I could find my IBM 370/168 POP manual around somewhere…

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection