Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Direct Memory Access computing machine RP2040 (cornell.edu)
181 points by threeme3 on Jan 21, 2023 | hide | past | favorite | 17 comments



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

https://github.com/jowinter/dmacu


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


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.


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


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...


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


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


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


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.


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


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/


> 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.


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


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


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


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


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




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: