Минимальные возможности процессора для загрузки Linux - PullRequest
1 голос
/ 30 сентября 2019

Я нахожусь в процессе разработки собственного процессора. Это конвейерный пятиступенчатый процессор. В конечном счете, мы хотим загрузить Linux на нем. Каковы минимальные возможности, которые должен иметь пользовательский процессор для загрузки полноценной ОС, такой как Linux?

Обратите внимание, что на данном этапе я не спрашиваю о шагах, необходимых для переноса Linux на мой пользовательский процессор. На данном этапе я хочу знать только, какие функциональные возможности должен поддерживать мой процессор, чтобы иметь возможность загружать такие ОС, как Linux.

1 Ответ

3 голосов
/ 01 октября 2019

Виртуальная память (пейджинг) и уровни привилегий ядра и ядра являются основными, которых у игрушечного процессора может не быть. Я думаю, что были порты Linux без них, например, 8086 или 286 (не i386), но это не совсем правильный Linux.

Также, конечно, прерывание по таймеру и, вероятно, атомные нагрузки /хранит как минимум 32-битные целые числа. Вероятно, также атомарный тест и набор и, возможно, другие примитивы RMW, или, по крайней мере, LL / SC. Возможно, если ваш ISA только 16-битный, вы можете избежать только 16-битной атомарности, потому что это по-прежнему ширина указателя, но IDK, если что-то будет зависеть от 32-битных volatile хранилищ или загрузок, являющихся атомарными. Я думаю, что Linux может использовать SeqLock для публикации 64-битных или 128-битных обновлений временных меток от прерывания таймера и тому подобного.

(Для портирования вам понадобится GCC-совместимый C-компиляторкоторые могут быть нацелены на ваш ISA, и некоторые рукописные асмы. И какой-то драйвер, который вы можете использовать в качестве консоли, например, последовательный порт.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...