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

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





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

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

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

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

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

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


Еще от автора Сергей Владимирович Суханов
Начало

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


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

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


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

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


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

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


Становление

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


Рекомендуем почитать
Восставшая природа

Природа всегда сильнее человека, потому что легко обойдется без него. Чего не скажешь о людях, которые не способны и дня прожить без того, что дает природа. Но что будет, когда силам планеты, настоящим силам, а не нашим придумкам вроде денег и славы, надоест человеческая цивилизация? Смогут ли выжить те, кто искренне считал себя венцом творения? Где пройдет грань между человеком — частью этого мира и человеком — разрушителем? Рассказ «Восставшая природа» дает ответы на эти вопросы. А еще дает надежду на то, что природа все же мудра и милосердна.


Владеющий

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


Кейдж

…Европа, 1936 год. «Над всей Испанией безоблачное небо», иностранные войска вступают на испанскую землю, эхо близкой войны докатывается даже до маленького французского города Авалан. Вот-вот разверзнется небо… Американский журналист Крис Грант по прозвищу Кейдж ищет тему для репортажа на земле Грааля и, сам того не ожидая, переступает границу, за которой — нелегкий выбор. Гауптштурмфюрер СС Харальд Пейпер свой выбор давно уже сделал и теперь по заданию Гиммлера становится подпольщиком. Пылает Рейхсканцелярия, фиолетовым огнем горит планета Аргентина, негромко звучит прощальное танго…


Сад Дьявола

Они думали, что смогут противостоять американскому флоту хотя бы 1945 года… Хрена с два! Попытавшись изменить историю, соединение российского тихоокеанского флота, попавшее в 1945 год, огребло по полной программе, и даже ядерное оружие ему не помогло. Фрегат «Адмирал Головко» всемогущие американцы потопили, вообще стреляя наугад, а после применения ядерной боеголовки крейсер «Киров» куда-то оперативно пропал, бросив эсминец «Орлан» на съедение американской палубной авиации. У которой есть целая одна первая в мире управляемая бомба.


Республика - победительница

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


Восьмой страж

Настал День Испытаний. День, который наступает без предупреждения. День, когда все младшие и старшие школьники Академии Пил подвергаются интенсивным физическим и психологическим испытаниям, чтобы выявить, готовы ли они выпуститься и стать тайными агентами правительства. Аманда и ее бойфренд Эйб — лучшие ученики, и только что они выдержали тридцать шесть часов испытаний. Но они младшие школьники и не ждут выпуска. Это должно произойти в следующем году — они планируют вместе присоединиться к ЦРУ.Но когда объявляют выпускников, результаты шокируют.