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