Как рождаются компьютеры 1/3

Источник: журнал «Техника – молодёжи», №9, 1976 год.

Журнал шефствует над Институтом кибернетики АН УССР. С директором института Героем Социалистического Труда, лауреатом Ленинской и Государственной премий академиком Виктором Михайловичем ГЛУШКОВЫМ беседует наш корреспондент Геннадий Максимович.

I. Машину проектирует машина

– Виктор Михайлович, в своё время, говоря о заводах-автоматах, вы подчеркнули, что одной из первых областей, где необходимо их использовать, является производство ЭВМ. Всем известно, что и проектирование, и создание компьютеров дело весьма сложное. Что предпринимается сейчас для автоматизации этих процессов?

– Ещё совсем недавно компьютеры проектировались главным образом на основе инженерной интуиции. Как ни странно, но в период, когда создавались первые ЭВМ, эта самая, казалось бы, передовая область техники не имела даже какой-либо своей научно обоснованной базы для проведения расчётов. Можете представить, какие испытания выпали на долю первопроходцев...

Когда проектируется, скажем, подъёмный кран, то здесь важную роль играют такие «чисто механические детали», как расчёты прочности, кинематических схем и т. д. В компьютерах же подобные параметры и сегодня, как правило, не рассчитывают. Ведь в них, за исключением магнитных дисков или лент, движущихся частей практически нет. Вопросы механической прочности тоже не стоят... Электронные схемы в то время умели рассчитывать, однако для совершенно других целей. Скажем, были известны приёмы расчёта усилителя, чтобы он пропускал нужную полосу частот и не искажал человеческого голоса... Но создатели вычислительных машин столкнулись с проблемами совершенно иного порядка, для решения которых какого-либо математического аппарата попросту не существовало.

Так что ЭВМ первого поколения создавались, по существу, безо всякой теоретической «платформы». Конечно, какие-то данные из электротехники (скажем, зависимость падения напряжения от величины сопротивления) использовались. Однако электротехника не давала ответа на самые главные вопросы, связанные с теми функциями, которые ЭВМ должны были выполнять, – логические операции, память, системы команд и так далее.

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

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

Над этой коренной проблемой работали специалисты разных стран. Мы были знакомы с опытом, рождённым мировой практикой, но решили развивать в своём институте принципиально новое направление, которое поначалу оспаривалось многими авторитетами. Однако то, что мы стали пионерами, не удивительно: ведь и машины мы взялись проектировать необычные. При проектировании традиционных компьютеров что главное? Ввести в них наборы каких-то операций (сложение, умножение и т. д.). Как эти операции выполняются, человеку известно. Ну ещё надо перевести все числа из десятеричной системы в двоичную, чтоб оперировать «нулём» и «единицей», – тоже не проблема.

Мы же в создании машин взяли курс на развитие их так называемого внутреннего интеллекта.

ЭВМ, как понятно любому, от природы глупа. Вот когда вы начините её хотя бы минимумом программ, которые по крайней мере смогут управлять её собственной работой, тогда она превратится в электронный мозг. А до того перед вами просто металлические ящики, начинённые транзисторами, тиристорами, проводами. Желательно, конечно, наряду с системой «самоуправления» вложить в компьютер и несколько большее содержание: ввести в него программы решения ряда традиционных задач (скажем, в математике – суммирование рядов, решение типовых систем интегральных и дифференциальных уравнений). Но это существа вопроса не меняет.

Принципиальное же наше разногласие с господствовавшей в то время точкой зрения заключалось в ином. Большинство специалистов считало, что внутренний язык компьютера должен быть элементарно, предельно прост, а вот язык, на котором пишутся программы, усложняйте сколь вам угодно. Но в таком случае между задаваемой программой и собственно машиной необходимо «посадить переводчика». А это специальное и сложное устройство, которому нужна своя программа. На создание её поройуходит целых два-три года. Сегодня сторонники традиционной схемы пришли к такому парадоксу, что математическое обеспечение (включая транслятор и другие устройства с программами, обеспечивающими работу машины, проще говоря – «вспомогательный персонал») обходится едва ли не дороже, чем сам компьютер. К тому же и качество перевода зачастую оставляет желать лучшего.

Мы же поставили перед собой задачу уменьшить разрыв, взаимное «непонимание» между внешним (на котором отдаются приказы) и внутренним (который знает машина) языками. А для этого необходимо повышать изначальный интеллект ЭВМ.

– Верно ли я понял, Виктор Михайлович, что ваш институт решил добиться того, чтобы в конечном счёте с компьютером можно было разговаривать на нормальном человеческом языке запросто, как со своим приятелем?

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

Задачу увеличить изначальный интеллект компьютера мы – впервые в мире – практически реализовали на наших компьютерах серии «МИР». «Проминь», первая машина этой серии, была запущена в серийное производство в 1961 году. Спустя четыре года появилась «МИР-1», затем – «МИР-2» и в 1974 году – «МИР-3».

При проектировании подобных ЭВМ опора на одну лишь инженерную интуицию была бы слишком шаткой. Поэтому нам, как никому, требовались принципиально новые, автоматизированные методы проектирования. Нам удалось довольно много сделать в этом направлении. Разработанные в институте методы оказались полезны и для тех, кто проектировал традиционные машины. Возьмём хотя бы сроки. Если ранее аппаратуру, занимавшую большой шкаф, бригада из двадцати-тридцати человек проектировала в течение года, то теперь три-четыре проектанта справляются с такой работой за каких-то полторы-две недели. Далее, ЭВМ, спроектированная нашими методами, получается более экономичной, с меньшим числом элементов, отличается возросшим быстродействием, да и места занимает в полтора-два раза меньше. Короче говоря, практически все её параметры заметно улучшаются.

– Виктор Михайлович, а какие именно процессы взяли вы под прицел в первую очередь, приступив к созданию автоматизированной системы проектирования?

– Прежде всего мы занялись автоматизацией процессов, связанных с математическим обеспечением, разработкой программ. Почему именно с них? Да потому, что, как я уже говорил, без матобеспечения компьютер ещё не компьютер. Идея здесь заключалась в следующем.

Математики издавна пользуются своими излюбленными математическими языками, – скажем, языком формул, графиков. Однако для машины такая азбука всё равно что грамота за семью печатями. Поэтому для перевода тех же формул в машинные коды были разработаны так называемые символические языки. Пользуясь ими, компьютер теперь стал понимать, что, допустим, первая команда означает: «Возьми из памяти число А1», вторая – «Возьми число В1», третья – «Сложи их!» и четвёртая – «Отправь результат в память!». Так вот, машину научили строить программы, которые позволяли автоматически вводить такие простейшие формулы в ЭВМ. А там уж она сама, оперируя «нулями» и «единицами», комбинировала их по собственному разумению (конечно, в соответствии с начально заданной программой)... Как видите, компьютер стал превращаться в помощника человека при проектировании ЭВМ.

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

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

– Виктор Михайлович, я понимаю, что математическое обеспечение – вещь необходимая. Но программы программами, а машина-то, как вы сами сказали, состоит из транзисторов, тиристоров, проводов. Их компоновка – это, видимо, и есть задача автоматизированной системы проектирования компьютеров?

– Вы не совсем правы. Я считаю, что автоматизация проектирования математического обеспечения – это одно из звеньев, причём весьма ответственных звеньев, единой системы. Однако не подумайте, что мы всё внимание сосредоточили только лишь на этом звене. Параллельно учёные развивали теорию, позволившую подойти к автоматизированному проектированию отдельных блоков, небольших электронных узлов ЭВМ.

Я говорю о «Теории автоматов», первые работы по которой появились в начале пятидесятых годов. К сожалению, методы, развивавшиеся тогда, позволяли оперировать лишь с ограниченным числом отдельных состояний машинной памяти. В лучшем случае речь шла о том, чтобы различать в такой памяти сто-двести разных состояний какого-то предмета или процесса. Но, скажем, для такой простой, на наш взгляд, операции, как различение одного конкретного человеческого лица на фоне других лиц, нужен объём памяти в сотни раз больший.

Итак, это была лишь заря автоматизации проектирования самих вычислительных машин. Предстояло, во-первых, создать специальный математический аппарат для решения проблемы в полном объёме, во-вторых научить компьютер пользоваться этим аппаратом, чтобы машина стала помощником человека в создании автоматизированной системы.

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

Результаты проделанной работы были внедрены в ряде проектных организаций. В 1964 году, эта работа по «Теории автоматов» и её применению для автоматизации проектирования машин была удостоена Ленинской премии.

– Судя по тому, что вы назвали созданную систему «малой», работа продолжалась и дальше?

– Да, это так. Та система действовала неплохо, однако не надо забывать, что сами ЭВМ постоянно усложнялись, а значит, проектировать их становилось всё труднее. Наша система автоматизировала далеко не все этапы, её математический аппарат годился для проектирования лишь сравнительно небольших блоков. А чтобы охватить структуры машины в целом, учесть все сложнейшие преобразования в системах команд, требовался качественно иной подход. Конечно, в принципе, так сказать, теоретически, и «малая» система годилась для решения таких задач. Однако для практической работы потребовался бы компьютер с невообразимым, фантастическим быстродействием. Ведь по нашей методике полагалось оперировать каждым состоянием в отдельности. Скажем, у вас есть десять ячеек памяти. Каждая может запомнить либо «нуль», либо «единицу». Тогда число возможных состояний такого блока из десяти ячеек равно 210 (1024). С таким-то количеством справиться легко. А если ячеек не десять, а сто? Тогда число возможных состояний будет уже 2100 – астрономическая величина! Перебрать их (что требовалось по старой методике) в разумный срок не сможет и сверхмашина с колоссальным быстродействием.

Итак, требовался принципиально новый математический подход к самой постановке проблемы. С тем чтобы можно было иметь дело хотя бы с ячейками, а не с каждым состоянием в отдельности. Задача оказалась крепким орешком. Но примерно в 1967 году мне удалось нащупать к ней подход.

Потребовалось развить и новый раздел математики, который мы назвали «Теорией дискретных преобразователей».

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

– Виктор Михайлович, верно ли я помял, что благодаря двухосновной алгебре удалось построить такую программу, по которой компьютер может сам, хотя и с подсказкой опытного проектировщика, разрабатывать новые ЭВМ?

– Не совсем так. Конечно, созданные нами методы позволили существенно облегчить, упростить, ускорить некоторые этапы проектирования. Но подчёркиваю – лишь некоторые. Хотя практика показала, что с помощью двухосновной алгебры можно проектировать компьютеры вместе со всем необходимым математическим обеспечением. Это серьёзное достижение.

Однако самым ценным я считаю, что мы сумели с помощью новой методики сделать первый шаг к тому, чтобы «поверить алгеброй гармонию», а говоря языком научным – подвести математический аппарат под интуицию. Как вы знаете, в нашем мозгу есть области деятельности сознательной и подсознательной. Именно по этой причине про одни свои действия (скажем, построение фразы по правилам грамматики) мы можем сказать, почему производим их именно так, а не иначе, однако про другие действия (рождение поэтической строки) такого сказать мы не можем... Я объясню вам, как произвёл умножение одного числа на другое. Но спросите меня, как я отличаю среди других именно ваше лицо. По ушам или глазам? Спрячьте всё остальное – и я растеряюсь: вы ли это?.. По усам? Но если даже вы их сбреете, то я всё равно вас узнаю. Это и означает, что процесс узнавания совершается в такой области мозга, которая прямо сознанием не контролируется, – в области подсознательной, которая очень много значит в нашей жизни.

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

Однако с появлением двухосновной алгебры мы получили возможность выбирать только те операции, которые являются для данного процесса наиболее существенными, определяющими. Именно этой вновь открывшейся возможностью наша автоматизированная система проектирования и отличается от всех подобных, известных на сегодня систем. Конечно, я должен сознаться, что для выполнения такой сложной процедуры, как распознавание человеческого лица, наша алгебра пока требует таких сложных и больших машин, каковых пока ещё не существует. Однако стоим мы на верном пути.

– Вы обстоятельно рассказали о том, как проектируются отдельные блоки будущей ЭВМ. Однако в ней существуют и различные системы связи между отдельными элементами. Как проектируются эти связи, схемы движения потоков информации, «снующих» из одних частей машины в другие?

– Это ещё одна сторона автоматизации проектирования. Я имею в виду общесистемный подход. К проектированию машины я приступаю с так называемого системного уровня. Я ещё не знаю, как будут выполняться в ЭВМ те или иные операции, а потому рисую только то, что у меня будет в ней объединяться. Скажем, решаю, что компьютер будет работать с шестнадцатью магнитными лентами. Магнитофонами, на которых записывается необходимая информация, будет автоматически управлять сама машина. Далее, ЭВМ нужно снабдить двадцатью сводными и печатающими устройствами, шестью узлами памяти и многим другим. Все эти устройства я представляю простыми кубиками. Их набирается несколько десятков. Легко понять, что вариантов их совместной работы может быть достаточно много. Поэтому необходимо заранее планировать движение потоков информации.

Скажем, если вы сделаете пропускной канал излишне широким, то обойдётся он довольно дорого, а основную часть времени будет простаивать. Если же его пропускная способность окажется низкой, недостаточной, то отдельные части машины будут «стоять в очереди» и ждать, пока он освободится.

До недавнего времени подобные задачи оптимизации не всегда удавалось решать успешно, хотя мы и пользовались теорией массового обслуживания, разработанной применительно к самым элементарным случаям. Простейшие задачи, решаемые с помощью этой теории, можно проиллюстрировать на таком примере. Предположим, в парикмахерской работает один парикмахер, тратящий на клиента в среднем двадцать минут. С учётом восьмичасового рабочего дня получим, что он может обслужить двадцать четыре клиента. Но, как это и бывает в жизни, поток клиентов не запрограммируешь: в силу тех или иных причин они не смогут появляться у дверей парикмахерской ровно через двадцать минут друг после друга. Так вот вам вопрос: сколько парикмахеров надо усадить за работу, чтобы обслужить в течение дня сто клиентов, но при условии, что очередь не должна превышать двух человек? Если вы просто поделите сто на двадцать четыре, то получите примерно четыре. Согласуясь с этим, посадите четырёх парикмахеров – и увидите, что очередь выросла до... двенадцати человек. Выходит, тут нужно слегка пошевелить мозгами. Теория массового обслуживания и родилась как раз из такого рода задач.

Математические методы организации в тех или иных потоках оптимального числа обслуживающих единиц давно уже разработаны. Они позволяют иметь заданную длину очереди или же полностью её ликвидировать с вероятностью 0,9. Эта теория вполне пригодна для электронных машин простейших конфигураций. Однако для нынешних компьютеров математика, к сожалению, теории массового обслуживания не придумала. И потому подобные задачи высокой сложности приходится решать путём моделирования.

В компьютер вводится датчик случайных чисел, и машина приступает к так называемому имитационному моделированию. То есть если обратиться к примеру, у ЭВМ в памяти «сидят» четыре парикмахера, и по датчику случайных чисел «заходят» клиенты, желающие побриться и постричься. Распределяются места, образуется очередь... Короче, всё делается как в натуре. Это и называется имитационным моделированием. Машина, не пользуясь какими-либо математическими формулами, может за несколько секунд перебрать уйму вариантов рабочего дня парикмахера и предложить наилучший. Конечно, в столь простом случае, как парикмахерская, можно обойтись и формулой из теории массового обслуживания. Но имитационное моделирование тем и хорошо, что оно применимо в любых случаях – даже там, где формулы не выручают.

Чтобы пользоваться этим методом, нужно тоже создать специальный язык, описывающий процессы, происходящие при моделировании. В нем есть такие термины, как «очередь», «скорость передачи информации», «объем буфера» («предбанника» в парикмахерской, где сидят ожидающие) и т. д. Все эти термины ретранслятор переводит и сообщает имитационной модели уже на машинном языке. Потом вы начинаете «играть» с моделью, пока не выберете приемлемую, устраивающую вас структуру. Для этой цели нами был разработан первый отечественный язык.

– Насколько я понял, с помощью этого метода вполне можно моделировать различные процессы, в том числе и не имеющие прямого отношения к компьютерам?

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

Не так давно был разработан новый язык, значительно расширивший сферу применения имитационного моделирования. Если раньше мы могли проигрывать только дискретные процессы (два, десять, сто ли автомобилей, но непременно целочисленный ряд), то в новый язык введены и некоторые непрерывные процессы. Допустим, работает атомный реактор, в котором какие-то параметры непрерывно то возрастают, то уменьшаются (скажем, мощность). Прежнему языку такие процессы были «не по зубам», новый же позволяет их моделировать.

Теперь мы можем моделировать ЭВМ в едином комплексе с объектом управления. Если она командует работой химического реактора, то мы теперь способны смоделировать и саму машину, выясняя, как она будет справляться со своими управленческими обязанностями, и химический реактор, прогнозируя, что и как будет в нём в данный момент происходить. Перспективы тут открываются весьма заманчивые...

– Виктор Михайлович, а как в натуре выглядит созданная в вашем институте система автоматизированного проектирования, каков её внешний вид?

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

Продолжение в следующем номере журнала.




www.etheroneph.com