RP2040 DMA Hack створює ще одне «ядро ЦП»

RP2040 DMA Hack створює ще одне «ядро ЦП»

Вихідний вузол: 1908807

[Брюс Ленд] з Корнельського університету буде знайомим багатьом читачам Hackaday, пошук на сайті за запитом «ECE4760» відкриє багато цікавих тем щодо вбудованого програмування. Щороку [Брюс] випускає ще більше робіт студентів, на нашу велику радість. Цей проект на основі RP2040 є трохи більш абстрактним, ніж деякі попередні роботи, і демонструє ще одну реалізацію старішого хаку для використання Апаратне забезпечення DMA RP2040 як ще одне ядро ​​ЦП. У той час як основним фокусом підсистеми RP2040 DMA є переміщення даних між просторами пам’яті з мінімальним втручанням ЦП, блоки керування DMA мають досить складну поведінку. Це дозволяє реалізовувати повний ЦП Тьюринга виключно за допомогою апаратного забезпечення DMA та невеликої кількості пам’яті.

Метод зв’язує три з дванадцяти каналів DMA і, за оцінками, має подібну продуктивність до «Arduino», але [Брюс] не уточнює, яка з різноманітних моделей це може бути. Але кого взагалі це хвилює? Програмування центрального процесора полягає в тому, щоб використовувати поведінку апаратного забезпечення, яке відображає всю пам’ять і націлюється DMA. Наприклад, ЦП може хитати контакти GPIO, використовуючи DMA для запису значень у периферійний адресний простір. Основний потік можна побачити на зображенні вище. DMA0 використовується як програмний лічильник, який вказує DMA1 на масив керуючих блоків DMA, послідовність яких кодує деякі «кодів операцій» моделі ЦП. DMA0 з’єднує (передає керування) DMA1, який зчитує блоки керування та відповідно налаштовує себе. DMA1 виконує будь-яке запрограмоване переміщення даних, зв’язується з DMA2, який, у свою чергу, перепрограмує програмний лічильник DMA0, щоб вказувати на наступний блок у списку, який повинен виконати DMA1.

Використовуючи також DMA1 для зміни наступних керуючих блоків DMA1 (там відбувається самозміна коду!), система може реалізувати більш корисні операції, такі як додавання, логічні операції та умовне розгалуження. Операції, викликані транспортом у певних тіньових регістрах увімкнути атомарне встановлення, скидання та операції XOR. Усі розумні речі та чудовий студентський проект, у якому я брав участь. [Брюс] вказує на папір (з використанням Pi2) від Воркшоп WOOT 2015 що може запропонувати краще пояснення всього цього процесу.

Якщо вам все ще цікаво, хто такий [Брюс Ленд], і ви хочете трохи ознайомитися з цими темами, тоді перегляньте наше попереднє висвітлення. Якщо ця теоретична інформація трохи важка (тобто нудна), то деякі проекти мають більш практичну спрямованість, наприклад критичне завдання сортування кеглів за кольором.

Ескіз зображення: Томас Глау, CC BY-SA 4.0.

Часова мітка:

Більше від Рубати день