Академик В.А. Мельников о проблемах создания вычислительной техники (1987 год)

— Владимир Андреевич, вами написано предисловие к переводу на русский язык тематического выпуска трудов американского Института инженеров по электротехнике и радиоэлектроникеt на обложке которого написано: «Супер ЭВМ: воздействие на развитие науки и техники». Не могли бы вы прокомментировать это название?

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

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

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

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

— Что, кроме развития элементной базы, обусловило рождение этих замечательных машин?

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

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

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

— А могут ли и дальше схемы становиться все более компактными?

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

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

Поэтому дальнейшая борьба за увеличение производительности ЭВМ разворачивается сейчас на другом направлении.

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

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

— Неужели столь простая идея не приходила в голову создателям вычислительных машин?

— Конечно, в той или иной форме она высказывалась и использовалась и раньше. Но тут, видимо, мне следует сделать некоторое отступление, своего рода краткий экскурс в историю попыток распараллеливания вычислений, в противном случае, боюсь, не все из ваших читателей полностью разберутся в сути дела.

Пусть нам доступна некоторая элементная база, созданная трудом специалистов по микроэлектронике. Каждый вентиль работает с максимально достижимой на данном этапе развития техники скоростью. Как создать на ее основе эффективно работающую вычислительную структуру?

В машине есть устройство, своего рода внутренние часы, которое заставляет все многочисленные узлы работать строго синхронно, по тактам. Такт — это машинная единица времени. За один такт в машине выполняются содержательные элементарные действия. При прохождении сигнала каждый из переключательных элементов, вентилей, на очень короткое время задерживает его. Поэтому есть определенное соотношение между временем задержки на одном вентиле и длительностью машинного такта. Соотношение это в разные периоды развития элементной базы менялось, и сейчас его можно считать приблизительно равным 1:10, то есть если время задержки в каждом вентиле схемы равно одной наносекунде (одной миллиардной доле секунды, сокращенно «нс»), то машинный такт при использовании таких схем может составить 10 нс. Тогда, чтобы ЭВМ обладала производительностью в 100 миллионов операций в секунду, надо, чтобы на каждом такте был всегда получен результат выполнения очередной операции. Еще совсем недавно такое требование считалось бы, безусловно, невыполнимым.

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

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

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

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

Буферы постоянно подкачиваются — одни команды и операнды удаляются из них, другие загружаются.

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

— Но как обеспечить такую постоянную загрузку? Ведь это чрезвычайно непросто...

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

Так и с конвейером. Желание эффективно использовать конвейерную организацию вычислений привело к мысли о векторной обработке.

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

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

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

Вопросы задавала К. Левитина (корреспондент журнала «Знание-Сила»)