Некоторые ARM процессоры не имеют встроенного MMU. По каким-то причинам производители процессоров зачастую не встраивают поддержку страничной виртуальной памяти в свои устройства, а заменяют её на более простые технологии.
Вопросов на эту тему несколько:
1. Какие причины заставляют разработчиков отказываться от MMU?
2. Каким образом Linux может работать на архитектурах, не поддерживающих виртуальную память?
3. Какова сложность подсистемы MMU на кристалле и разбирался ли кто-нибудь с принципами её работы?
Хотелось бы услышать мнение о возможности сделать MMU, поддерживающий несколько размеров страниц. Например - 1Кб, 2Кб, 4Кб, 8Кб, 16Кб, 32Кб, 64Кб, 128Кб, 256Кб, 512Кб, 1Мб, 2Мб, 4Мб, 16Мб. Т.е. процессор должен поддерживать одновременно все перечисленные размеры страниц.
И ещё один вопрос, возможно ли, хотя бы теоретически, имея исходниый код какого-либо микропроцессора на VHDL/Verilog, добавить к его системе команд свою команду? Насколько это сложно, если бы такую задачу поставили вам? Время, цена вопроса?
Вообще-то я лукавил, говоря насчёт одной команды - одна команда, которая выполняет микропрограмму, которая меняет значение многих регистров, может копировать блоки памяти и осуществляет синхронизацию.
Интерес пока праздный, но в будущем хотелось бы заняться этим.
Наконец, прошу ссылок на различные реализации CPU, вне зависимости от архитектур и лицензий.