Settings

Theme

Direct Memory Access computing machine RP2040

people.ece.cornell.edu

181 points by threeme3 3 years ago · 18 comments

Reader

jevinskie 3 years ago

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

https://github.com/jowinter/dmacu

alexisread 3 years ago

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 3 years ago

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 3 years ago

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

RantyDave 3 years ago

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 3 years ago

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

    • RantyDave 3 years ago

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

kamranjon 3 years ago

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

  • convolvatron 3 years ago

    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 3 years ago

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

  • Dork1234 3 years ago

    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 3 years ago

      > 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 3 years ago

        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 3 years ago

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

  • argulane 3 years ago

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

azinman2 3 years ago

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

drfuchs 3 years ago

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