Часть 9. Космик и зомби
Детство
Детство
ДетствоУ меня была мысль, что я сделаю четыре миллиарда ядер CPU и с их помощью сплету память моего компьютера. Но если разложить количество задуманных ячеек памяти на эти четыре миллиарда ядер, то получится, что каждое ядро должно сплести 2^96 ячеек. Совершенно очевидно, что ни о каком разумном сроке построения такой системы речи вести не получится. Орион-128 будет создаваться миллионы если не миллиарды лет.
После того, как я сделал четырёхядерный прототип, я сразу же протестировал его работу, отладил на нём часы и… задумался.
Выходов из ситуации немного. Первый вариант — каждое ядро моего CPU плетёт 16-128, ну в крайнем случае 1024 ядер CPU и столько же ячеек памяти. Ядра, вступившие в работу в начале, конечно сплетут больше, но в среднем, получается, чтобы сделать компьютер за разумное время соотношение ячеек и ядер нужно брать приблизительно таким.
Второй вариант — компромиссный. Сплести 4 миллиарда ядер, а затем оставить 2 миллиарда ядер вечно плести ячейки памяти. Один CPU сейчас плетёт одну ячейку памяти около 40 секунд. Это с учётом всей инфраструктуры: селектор адреса и так далее. Получается, что два миллиарда CPU будут плести приблизительно 50 миллионов ячеек в секунду. С учётом того, что у меня пока нет даже ни одного компилятора или интерпретатора с какого-либо языка программирования, то я конечно не скоро смогу догнать растущий на четыре терабайта в сутки предел-ограничение по памяти.
Но, с учётом того, что я буду программировать один, ну максимум Кора и конструкты в чём-то помогут, то программировать буду неоптимально. И, например, алгоритм сжатия видео я вряд ли напишу самостоятельно. А видео, я, разумеется, собираюсь и писать и обрабатывать. Вполне может оказаться, что памяти когда-нибудь станет не хватать.
В общем я подумал-подумал и решил, что пусть Орион-128 имеет 2 в 128 степени ядер CPU. Одно ядро, плюс одна ячейка памяти расчётно строится у меня за двадцать пять минут. Таким образом, весь компьютер может быть построен за двое с хвостиком суток! Что интересно: регистровой памяти в таком компьютере будет существенно больше чем просто памяти!
Решив двигаться в этом направлении, мы с Корой засели за доделку перфокарт (я продолжаю называть это перфокартами).
Мы доработали управляющий регистр каждого CPU и сделали по аналогии с шиной данных ещё одну шину, позволяющую любому CPU обратиться к управляющему регистру любого CPU: так можно остановить или запустить программу на другом процессоре. Добавили в каждый CPU регистр работы со стеком, а так же команды перехода по относительному (плюс-минус указанное количество ячеек) адресу. Теперь любой кусок программы, можно свободно копировать в другое место и от этого она не перестанет работать.