Вот Вам вопрос: Как заставить операционную систему, впервые появившуюся 33 года назад, работать на процессоре, который почти на два десятилетия старше – 1971 года? Оказывается, ответ заключается в том, чтобы заставить древний чип эмулировать то, чему всего 36 лет, очистить программное обеспечение до самого необходимого, а затем просто ждать почти пять дней, пока ядро загрузится.
Хотя сам проект не имеет очевидной практической цели, работа Дмитрия Гринберга (через Ars Technica) заслуживает искреннего восхищения. Если Вы регулярно читаете наши новости об аппаратном обеспечении, то это имя может быть Вам знакомо – это тот самый волшебник-хакер, который портировал Doom для запуска на значке посетителя Def Con.
Но тот проект меркнет по сравнению с последним проектом Гринберга. Короче говоря, ему удалось заставить ядро Debian Linux загрузиться на 4-битном процессоре Intel 4004, первом коммерчески производимом микропроцессоре. Даже по стандартам 1970-х годов, 4004 был самым простым.
Имея всего 2 600 транзисторов для работы, он может выполнять крайне ограниченное число операций (в основном, только сложение и вычитание, и никаких логических операций), и хотя у него удивительное количество регистров (всего 16), он не поддерживает аппаратные прерывания, что делает любую многозадачность несколько проблематичной!
На самом деле, это слишком простой чип для запуска Linux, и именно здесь Гринберг проявил настоящую изобретательность. Имея в распоряжении всего 4 кБ оперативной памяти, он разработал программу для эмуляции процессора MIPS R3000 на 4004. Этот чип относится к той же эпохе, что и первоначальная версия Linux, поэтому он был естественным выбором для задачи эмуляции, хотя добиться этого было далеко не просто.
Но с помощью дополнительной аппаратной эмуляции и множества компонентов, соответствующих эпохе, Гринберг собрал собственную печатную плату с базовым дисплеем, чтобы доказать, что Linux действительно запускается в командной строке. Единственная реальная проблема во всем этом – вопрос скорости.
Даже с 5%-ным разгоном тактовая частота 4004 составляет 790 кГц (да, именно так. килограммгерц, не мега или giga) работает отчаянно медленно. Первоначальные прогнозы о том, сколько времени потребуется для загрузки ядра (фундаментального ядра операционной системы), дали цифру чуть меньше девяти дней! После долгих доработок и маленьких хитростей Гринберг добился снижения этого показателя до 4,76 дней.
Если Вы посмотрите видео выше, то увидите, как часы ноутбука проносятся мимо – видеозапись загрузки и работы Linux значительно ускорена, поскольку даже если бы YouTube позволял видеороликам иметь продолжительность несколько дней, я не думаю, что кто-то смог бы просмотреть их до конца в режиме реального времени!
Весь проект – это чертовски большое достижение. Конечно, он не имеет абсолютно никакого практического применения, но кого это волнует? Это дань огромной изобретательности и решимости талантливого и трудолюбивого инженера. Я подозреваю, что единственная проблема, которая сейчас стоит перед Гринбергом, – это как можно превзойти это. О, я знаю – конечно же, это должен быть Doom. Интересно, сможет ли он заставить его работать со скоростью 30 кадров в минуту (кадров в месяц)?