Выбрать главу

Я сделал однобитный сумматор на одной перфокарте. Два цифровых входа, два цифровых выхода — результат и переполнение. Затем, сделал другую перфокарту, плетующую сто двадцать восемь таких сумматоров. Получился сумматор моего будущего ALU. После этого я сделал однобитную ячейку памяти и так же масштабировал её до регистра размером в сто двадцать восемь бит.

Поскольку, на начальном этапе я собираюсь делать процессор с минимальным набором команд, то экспериментальные сборки плетений я отлаживал не на ста двадцати восьми, а всего на четырёх битах.

Я решил, что все ядра моего будущего компьютера, как и Радио-86РК, будут тактироваться от многофазного генератора. Таким образом, никогда не будет ситуации, что в одну ячейку памяти придёт больше одного процессора и случится логическая гонка.

Тот кто посмотрит на мою архитектуру скажет: “это можно было бы сделать с одним ядром, работающем на большей частоте!”. И я соглашусь с ним. Да одно ядро, переключая свой контекст с задачи на задачу может делать то же самое. А мои ядра, по сути — это и есть аппаратная поддержка переключения контекста с задачи на задачу.

Поддержку прерываний я решил не делать и, таким образом, ядро моего CPU радикально упрощается.

Я сплёл четырёхбитный прототип шины данных, сделал регистр адреса и занялся мультиплексором, переключающим внутреннее содержимое ALU в зависимости от кода на входе. Это самая сложная и плохо масштабируемая часть.

У меня не было отладочных средств, но зато я мог остановить генератор тактовой частоты и рассматривать получившуюся систему в статике. Этакий аппаратный дебагер.

Первая команда, которую я сделал — это загрузка адресного регистра значением. Фактически это команда перехода. JUMP по абсолютному адресу. Когда, спустя неделю, у меня получился процессор умеющий переходить по адресу, то я как ребёнок баловался программами “перейти по адресу 2, перейти по адресу 0”. Такая минимальная версия моего процессора, помещалась на двадцати семи металлических пластинках-перфокартах. Заменив константы в шести из них, я могу сделать из четырёхбитного компьютера сто двадцати восьми битный.

На плетение четырёхбитного одноядерного прототипа, умеющего выполнять только одну команду, мой Радио-86РК тратит около тридцати секунд. Это вместе с шестнадцатью ячейками памяти. Полноценный прототип будет, видимо, собираться значительно дольше, но зато потом он начнёт строить сам себя и наступит сингулярность развития моего вычислительного потенциала.

После команды JUMP я пришёл всё-таки к необходимости делать систему прерываний, либо придумывать альтернативу. Если мой процессор дойдёт до неизвестного кода команды, то хотелось бы иметь возможность писать программы-эмуляторы. Так же без прерываний не обойтись, если я захочу программно останавливать код на том или ином CPU. Вместо того, чтобы делать систему прерываний, я решил упростить себе жизнь и добавил ещё один регистр, куда копируется регистр адреса и программа после этого просто переходит в фиксированное место. Сейчас там нет никакой программы, но в будущем, по мере расширения моего ассемблера, я смогу вписать там эмулятор новой функциональности. Причина прерывания просто отображается в некоторых битах регистра адреса. Ещё в регистре статуса я выделил место под константу с версией моего процессора, её можно использовать при создании эмуляторов.

Помимо регистра статуса, у каждого CPU есть управляющий регистр. Записывая различные биты в него, CPU можно сбросить, прервать и остановить.

Это всё, что я успел сделать, пока ехал в направлении к Цехину без Коры. Она почему-то задерживалась, и, подъехав к городу на расстояние видимости, я организовал лагерь из которого обследовал его конструктами.

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

Эта защита имела как бы два уровня: внешний город — более слабая и внутренний город — более сильная.

Одна и та же дорога

Караван, с которым Маас отправился в Цехин, проходил через Хано.

Придя в город, в котором он провёл последний десяток лет, он первым делом подал заявку на встречу с Араргом.

Затем добрался до своей пирамиды и открыл дверь в свою каморку. Он не был здесь вечность! Казалось, что это не его комната. Присев за стол, он разглядывал быт будто бы другого человека. События последних месяцев вытеснили всю прежнюю жизнь из его мыслей куда-то на периферию. Что-то стало забываться. Только воздух, запахи здесь всколыхнули в нём какой-то кусочек ностальгии по прошлому.