Перелом. Часть 3 - [46]

Шрифт
Интервал





Причем то, что этот компьютер был собран на рассыпухе, давало и свои плюсы. Так, исследователи добавили блок аппаратного умножения-деления - до этого эти операции выполнялись подпрограммами, а сам процессор был настолько "старым", что даже не имел проверки опкодов, поэтому любые подпрограммы, что исследователи брали из уже напрограммированных библиотек, требовалось проверять на наличие операций умножения и деления и заменять их на вызовы подпрограмм. В новых-то процессорах, даже если какая-то операция не была реализована аппаратно, выдавалось прерывание, так что компьютер мог сэмулировать ее программным путем - собственно, подобным образом мы в дальнейшем и обеспечивали совместимость сверху-вниз - с выпуском новых команд в новых процессорах для старых процессоров писались подпрограммы эмуляции этих команд. Да, работало медленнее, но работало. Хотя такое требовалось и нечасто - как правило библиотеки и программы компилировались под конкретные процессоры и программная эмуляция выстреливала только в случаях, когда что-то упустят при конфигурировании библиотек конкретной машины.

Тем более что в первые годы типов машин было немного, и поддерживать старые процессоры можно было сравнительно легко, к тому же с появлением специализированных вычислителей компиляция все-равно шла под конкретные конфигурации аппаратуры - в первые годы у нас практически не было кода, позволявшего автоматически определить набор вычислителей и раскидать по ним куски вычислений - эта работа выполнялась программистом. Скажем, написана программа моделирования тепловых потоков конкретного двигателя. В ней есть циклы интенсивных вычислений. И в программе они написаны из расчета работы на обычном процессоре. А тут - получат новую ЭВМ с двумя конвейерными вычислителями - и программисты меняют код - вместо циклов вставляют куски пересылки данных в векторные регистры каждого из вычислителей, затем - заполнение их регистров и запуск вычислений конкретного куска. А после - вставляют команды опроса регистров статуса этих вычислителей - отлавливают окончание работы, и затем - отправку новых кусков данных. Позднее перешли на прерывания, чтобы не тратить время основного процессора - а это снова перепрограммирование, причем уже на асинхронку, что всегда сложнее, так как требует разрисовки и отслеживания графа состояний и переходов.

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

В дальнейшем у нас так и шло - при появлении новых видов оборудования программирование под него сначала шло в таком ручном режиме, но постепенно выявляли закономерности, которые и перекладывались в код, все больше автоматизирующий перепрограммирование одних и тех же программ. А через некоторое время появились вычислители, способные брать данные сразу из памяти и туда же их возвращать - и снова было перепрограммирование - теперь основной код задавал в регистрах только начальные адреса векторов - с данными и с маской условий, количество элементов, а также адрес, куда надо помещать результат - и вычислитель сам все забирал, вычислял, помещал в память и выдавал прерывание "все готово". Причем адреса надо было указывать физические, а не виртуальные - первые вычислители не работали с виртуальной памятью, соответственно, и операционке надо было следить, чтобы ненароком не отсвопить эти блоки из памяти на жесткий диск - а это снова дополнительное программирование - на этот раз - закрепление участков памяти. Но это было делом будущего.

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

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


Еще от автора Сергей Владимирович Суханов
Перелом. Часть 1

Русские долго запрягают, но быстро едут? Ну так "Поехали!".


Перелом. Часть 4

Большинство нормальных попаданцев, оказавшись в сорок первом, стараются попасть к Сталину и помочь переломить ход войны. Вот только как к нему попасть? И надо ли вообще это делать…?


Начало

Большинство нормальных попаданцев, оказавшись в сорок первом, стараются попасть к Сталину и помочь переломить ход войны. Вот только как к нему попасть? И надо ли вообще это делать…?


Перелом. Часть 2

Русские долго запрягают, но быстро едут? Ну так "Поехали!".


Становление

После создания Западно-Русской ССР пути назад отрезаны, остается только держать удар.


Рекомендуем почитать
Каждый мародер желает знать…

Однажды в какой-то реальности российский император выбрал в жены не ту принцессу, и локомотив мировой истории покатился по совершенно другим рельсам… Я вернулся в Петербург, отслужив три года по контракту. Вот только привыкнуть к прежней жизни у меня не вышло. Так что я сел на поезд и поехал в Сибирь. В поисках новой жизни или нового себя. По дороге неведомый стрелочник отправил мой вагон по другим рельсам и в совершенно другую реальность. Нет, поезд привез меня в Сибирь. Только Сибирь оказалась совсем другая.


Йомсвикинг

993 год. На глазах юного Торстейна убивают его отца, а сам он попадает в рабство. Так начинается непростой путь будущего корабела и война. Волею судьбы он оказывается в гуще исторических событий, ведь власть в норвежских землях постепенно захватывает новый конунг, огнем и мечом насаждающий христианскую веру, стейну представится возможность увидеть как самого властителя, так и его противников, но в своем стремлении выжить любой ценой, найти старшего брата и отомстить за смерть отца он становится членом легендарного братства йомсвикингов, которых одни называли убийцами и разбойниками, а другие – благородными воинами со своим нерушимым кодексом чести.


Marquis von Emden

Продолжение книги "Starkvs Tigris". Предупреждаю читателей по-хорошему, чтобы проходили мимо и не мешались под ногами. Ничего особого не будет - то же самое, только дальше по сюжету. Россию не спасаем, демократию не вводим, крепостных не освобождаем. Отдельно взятый попаданец просто живёт, без великих задач и целей. Режим изложения - диктаторский, авторский беспредел - имеется. Все вокруг кочумеки и недотыкомоки и только я - Великий Кормчий.


Принцепс

Альтернативная история Ричарда Львиное Сердце. Продолжение "Стратега".


Цой: черный квадрат

Что было бы с Виктором Цоем, если бы он не погиб 15 августа 1990 года? Свою версию событий предлагает главный редактор журнала «FUZZ» Александр Долгов в фантастической киноповести «Цой. Черный квадрат». Захватывающая как крутой вираж фантасмагория молниеносно перемещает читателя во времени и пространстве, не давая опомниться.В книгу также включены интервью с Виктором Цоем и другими культовыми персонами рок-сообщества.


Женщина в зеркале

Александр Виссарионович Абашели (1884–1954) — один из лучших мастеров современной грузинской поэзии. Он был художником повседневно обогащавшим свое творчество чутким восприятием нашей современности, он был прежде всего поэтом-мыслителем, вникающим в жизнь, воспринимающим ее «глазами разума».Его роман «Женщина в зеркале» является первой попыткой в грузинской литературе создать значительное произведение научно— фантастического жанра.В некоторые теоретические положения и технические расчеты легшие в основу романа А.