Linux запущен на Intel 4004, первом коммерческом микропроцессоре
Продемонстрирован успешный запуск ядра Linux с rootfs-окружением из Debian на разработанном в 1971 году 4-разрядном процессоре Intel 4004, который считается первым коммерчески выпускаемым микропроцессором на одном кристалле. Процессор включал 2300 транзисторов, поддерживал 46 инструкций и обеспечивал производительность на уровне 60 тысяч операций в секунду.
Для запуска программ на реальной системе вначале была сформирована простейшая плата, состоящая из микропроцессора Intel 4004, тактового генератора Intel 4201, чипа оперативной памяти Intel 4002–1, размером 20 байтов, контроллера постоянной памяти Intel 4289 и микроконтроллера ATMEGA48, симулирующего постоянную память. В процессе развития проекта была подготовлена более сложная плата, поддерживающая чтение данных с SD-карты и дополнительно включающая память для размещения Linux-окружения, запускаемого в эмуляторе. Кроме того, для проведения экспериментов и упрощения разработки на современных системах был написан эмулятор чипа Intel 4004.
Так как архитектура Intel 4004 имеет серьёзные ограничения и может адресовать лишь 4 КБ постоянной памяти, вместо прямого запуска Linux была использована идея написания эмулятора процессора MIPS R3000, на котором может работать Linux. Работу усложняло то, что для Intel 4004 не существует и не может быть создано компиляторов для языка Си, поэтому эмулятор пришлось создавать на ассемблере. Таким образом, работа была организована так, что непосредственно на чипе Intel 4004 запускался эмулятор, который в свою очередь выполнял окружение на базе ядра Linux.
MIPS выбран как оптимальный вариант для эмуляции, укладывающийся в ограничения Intel 4004 и размер доступной памяти. Например, созданию эмулятора ARM мешал возникающий сдвиг операндов, RISCV — запутанные режимы адресации, x86 — большой расход памяти на декодирование инструкций, PPC — общая усложнённость эмуляции при небольшом размере памяти.
Из-за малой производительности Intel 4004 эмулятор получился очень медленным — обработка каждой виртуальной секунды в эмулируемом окружении требовало почти 4 часов вычислений на реальной системе с процессором Intel 4004. Например, выполнение тестового приложения для отрисовки множество Мандельброта с разрешением 13×40 при использовании вычислений с плавающей запятой заняло 30 дней, а при использованием целочисленной арифметики — 9 часов.
После внесения дополнительных оптимизаций загрузка Linux в подготовленной конфигурации заняла более 8 дней. При записи полного видео загрузки использовалось ускорение в 120 раз (одна секунда на видео соответствует 2 минутам работы эмулируемого процессора MIPS). Для желающих повторить эксперимент опубликованы спецификация и схема платы, образ Linux-системы и код сопутствующего инструментария, эмуляторов MIPS R3000 и Intel 4004, загрузчиков и анализатора шины MCS-04.
Источник: http://www.opennet.ru/opennews/art.shtml? num=61904
© OpenNet