Инженер 2.1 (СИ) - Нерский Эд
Шрифт:
Интервал:
Закладка:
…
Я ехал и размышлял о наблюдении видящих. А что если здесь, в придуманных сценах или, как они называют, в астрале, можно не только видения строить? Может быть можно плести плетения? Или чародейским способом атаковать? Нужно попробовать потренироваться с Корой в паре. Для пробы я создал конструкта, который иногда думает о страшном зубастом крокодиле, который ходит на задних лапах, высматривая наблюдателей. Этот крокодил-тиранозавр питается теми, кто смотрит на него. Может быть вреда не нанесёт, так хоть напугает?
— Я не видела тебя во время боя, только результаты твоих действий. — напомнила о своём существовании Кора.
— Я же говорил, я оборотнем воевал. Нападающие тоже меня не видели и это сильно сбило их с толку.
— Странно это, я должна была тебя видеть.
— На самом деле, скорее всего, ты меня видела, но не думала, что это я. Или не смотрела вверх. Я летал над всем этим безобразием.
— Вот оно что! Наверное я правда не смотрела вверх. Куда мы едем?
— В Цехин. Наш план не изменился. Думаю ближе к нему можно будет найти другой караван. Да и мы так быстрее доберёмся. Ты подумала над моим предложением о поездке в Юрбэ?
— Да. Только надо решить как мне вернуться. Фургона нет.
— Чего проще? Возьми нож и нацарапай на седле своего лорга что-нибудь. Потом вернёшься к нему. Дать тебе пару телепортов?
— Нет. Только один. Если удастся у Инроргна получить телепорт, то я верну его тебе.
— Я не требую его возвращать. — сказал я.
— Я знаю. Ты ведёшь себя как демон, а должно быть наоборот…
— Тогда не будем медлить. Отправляйся прямо сейчас!
Немного повозившись, чтобы обеспечить себе возможность вернуться, Кора отправилась домой, а я привязал её лорга к седлу своего и поехал дальше.
Дорогой я занялся модификацией своих перфокарт. Нужно было сделать так, чтобы одна перфокарта могла использовать другую, как подпрограмму. У меня, увы, всё ещё не было полноценного компьютера.
Я сделал однобитный сумматор на одной перфокарте. Два цифровых входа, два цифровых выхода — результат и переполнение. Затем, сделал другую перфокарту, плетующую сто двадцать восемь таких сумматоров. Получился сумматор моего будущего ALU. После этого я сделал однобитную ячейку памяти и так же масштабировал её до регистра размером в сто двадцать восемь бит.
Поскольку, на начальном этапе я собираюсь делать процессор с минимальным набором команд, то экспериментальные сборки плетений я отлаживал не на ста двадцати восьми, а всего на четырёх битах.
Я решил, что все ядра моего будущего компьютера, как и Радио-86РК, будут тактироваться от многофазного генератора. Таким образом, никогда не будет ситуации, что в одну ячейку памяти придёт больше одного процессора и случится логическая гонка.
Тот кто посмотрит на мою архитектуру скажет: “это можно было бы сделать с одним ядром, работающем на большей частоте!”. И я соглашусь с ним. Да одно ядро, переключая свой контекст с задачи на задачу может делать то же самое. А мои ядра, по сути — это и есть аппаратная поддержка переключения контекста с задачи на задачу.
Поддержку прерываний я решил не делать и, таким образом, ядро моего CPU радикально упрощается.
Я сплёл четырёхбитный прототип шины данных, сделал регистр адреса и занялся мультиплексором, переключающим внутреннее содержимое ALU в зависимости от кода на входе. Это самая сложная и плохо масштабируемая часть.
У меня не было отладочных средств, но зато я мог остановить генератор тактовой частоты и рассматривать получившуюся систему в статике. Этакий аппаратный дебагер.
Первая команда, которую я сделал — это загрузка адресного регистра значением. Фактически это команда перехода. JUMP по абсолютному адресу. Когда, спустя неделю, у меня получился процессор умеющий переходить по адресу, то я как ребёнок баловался программами “перейти по адресу 2, перейти по адресу 0”. Такая минимальная версия моего процессора, помещалась на двадцати семи металлических пластинках-перфокартах. Заменив константы в шести из них, я могу сделать из четырёхбитного компьютера сто двадцати восьми битный.
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})На плетение четырёхбитного одноядерного прототипа, умеющего выполнять только одну команду, мой Радио-86РК тратит около тридцати секунд. Это вместе с шестнадцатью ячейками памяти. Полноценный прототип будет, видимо, собираться значительно дольше, но зато потом он начнёт строить сам себя и наступит сингулярность развития моего вычислительного потенциала.
После команды JUMP я пришёл всё-таки к необходимости делать систему прерываний, либо придумывать альтернативу. Если мой процессор дойдёт до неизвестного кода команды, то хотелось бы иметь возможность писать программы-эмуляторы. Так же без прерываний не обойтись, если я захочу программно останавливать код на том или ином CPU. Вместо того, чтобы делать систему прерываний, я решил упростить себе жизнь и добавил ещё один регистр, куда копируется регистр адреса и программа после этого просто переходит в фиксированное место. Сейчас там нет никакой программы, но в будущем, по мере расширения моего ассемблера, я смогу вписать там эмулятор новой функциональности. Причина прерывания просто отображается в некоторых битах регистра адреса. Ещё в регистре статуса я выделил место под константу с версией моего процессора, её можно использовать при создании эмуляторов.
Помимо регистра статуса, у каждого CPU есть управляющий регистр. Записывая различные биты в него, CPU можно сбросить, прервать и остановить.
Это всё, что я успел сделать, пока ехал в направлении к Цехину без Коры. Она почему-то задерживалась, и, подъехав к городу на расстояние видимости, я организовал лагерь из которого обследовал его конструктами.
Огромное количество полтергейстов, кружащих вокруг, сразу же бросилось в глаза. Их здесь было, вероятно, штук сто! Они летали около границы города, но не могли преодолеть антиэлементальную защиту.
Эта защита имела как бы два уровня: внешний город — более слабая и внутренний город — более сильная.
Одна и та же дорога
Караван, с которым Маас отправился в Цехин, проходил через Хано.
Придя в город, в котором он провёл последний десяток лет, он первым делом подал заявку на встречу с Араргом.
Затем добрался до своей пирамиды и открыл дверь в свою каморку. Он не был здесь вечность! Казалось, что это не его комната. Присев за стол, он разглядывал быт будто бы другого человека. События последних месяцев вытеснили всю прежнюю жизнь из его мыслей куда-то на периферию. Что-то стало забываться. Только воздух, запахи здесь всколыхнули в нём какой-то кусочек ностальгии по прошлому.
Помывшись, Маас отправился спать, а утром его разбудил курьер от Арарга. Почему-то он предлагал встретиться у Хано, вместо того, чтобы назначить приём в своём кабинете. Хотя назначенного времени оставалось около часа, Маас решил отправиться туда немедленно и подождать на месте.
Длинная каменная скамья окружала Хано со всех сторон и являлась границей дальше которой фиолетовая мана не распространялась. Место, где посидеть, здесь всегда можно было найти. Народу обычно было не много, а уйти в ту или иную сторону можно было на несколько километров. Чтобы обойти Хано кругом нужно было потратить несколько часов, если не целый день.
Усевшись лицом к вулкану он растянул ауру на максимальную ширину собирая ману в свой накопитель. Понемногу в его голове выстраивался план, о том, как осуществить задуманное архимагом. Нужно купить несколько артефактов, которые помогут не подставиться в случае провала.
— Ты наверное думаешь: “Почему здесь?” — отвлёк его от мыслей голос шефа.
— У меня есть предположения, но это не сильно и важно. Надо так надо.
— Ну-ка, Озвучь?! — усмехнулся демон, присаживаясь рядом.
— Астральное наблюдение? Вы хотите, чтобы наблюдающие за нашим центром управления не могли подслушать?
— В точку! Ну рассказывай, зачем хотел меня видеть?
— Во-первых, хочу сказать, что меня завербовал Руархид для выполнения той же работы.