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

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

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

- Ну да - подпрогаммы.

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

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

Да, "устаревшая" восьмибитная машина уже довольно сильно отстала от последующих поколений - они у нас появлялись каждый квартал - как по расписанию. Причем мы пока законсервировали систему команд центрального процессора - RISC на тридцать команд - а и хватит - сложение-вычитание, умножение-деление, битовые и-или-исключающее или-не, сдвиги вправо-влево, загрузка-выгрузка пользовательских регистров (РОН) - их было 16 штук, и системных - этих было также 16 - для симметрии, но пока использовалось только три - счетчик команд, указатель стека и регистр признаков - там пока использовался только младший бит - он и больше-меньше, он и переполнение - потом будем все разносить, ну в последних версиях появился регистр маски прерываний. И еще команды управления - безусловные и условные переходы - прямые или через регистр. Вызов подпрограмм и возврат был реализован программно, несколькими командами - сохранить нужные пользовательские регистры (нужность решалась по разному - программистом в вызывающей программе либо в вызываемой подпрограмме), счетчик команд, и выполнить безусловный переход - по прямому адресу, если процедура находилась в самой программе, или через регистр, если в общей библиотеке, а возврат - восстановить регистры и счетчик команд - все сохранения - с изменением указателя стека - такого же системного регистра - отдельными командами - то есть программисту надо было очень внимательно считать - на сколько его изменять - отдельных команд сохранения в стек и вытаскивания из него, как например в х86 с его push/pop, не было. Но это позволяло не дергать лишний раз сумматор - нарастить регистр один раз на все сохранения - и все. Подобными способами мы экономили транзисторы на схему управления.

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