(одна голова - хорошо, а две...?)

Михаил Борисов

Многопроцессорные системы смело шагнули в быт. Вместе с появлением нового поколения процессоров Intel практически все поставщики поспешили предложить своим потребителям двух-, а то и четырехпроцессорные настольные и подстольные (deskside) системы, в основном в качестве серверов, но не всегда. Некоторые Pentium Pro-системы предназначены для употребления в качестве рабочих станций, там, где требуется особенная вычислительная прыть.

Интерес к многопроцессорным системам впервые возник тогда, когда появились микропроцессоры. Идея сделать массивную вычислительную систему на базе дешевой массовой элементной базы поразила воображение и уже не покидала умы творцов. После появления 486-х к процессорам Intel стали относиться более серьезно. Даже советские ученые-кибернетики, находящиеся далеко в стороне от торной дороги всеобщей компьютеризации, приложили руку к созданию параллельных архитектур на микропроцессорах. В наиболее обостренной форме эта идея посещала светлые головы разработчиков систем, которые традиционно называются персональными, в периоды технологического застоя, когда хорошо был виден и казался близким горизонт. Чтобы нарастить мощность системы, проще всего было добавить еще процессоров и оказаться если не "впереди планеты всей" то, по крайней мере, впереди основных одноклассников-конкурентов. Там, где системы изначально ориентировались на применение "за пределами мира ПК", это еще получалось, особенно если производитель имел смелость настаивать именно на таком применении (маркетинговой группе Sequent, например, удалось убедить потребителей серверов баз данных в том, что системы на процессорах Intel достойны применения в качестве соответствующей платформы). Так как имеющие повсеместное хождение DOS/Windows и Novell не умели работать с несколькими процессорами и в Перспективе вряд ли научились бы, приходилось пробовать другие, менее привычные потребителю вышеупомянутого класса (UNIX, конечно, другого-то для Intel и вовсе не было), что естественно не могло сказаться на продаваемости изделия. Были испробованы и другие пути. Устанавливали интеллектуальный контроллер ввода-вывода, с собственным процессором и небольшим кэшем - вот вам и двухпроцессорная система. Еще можно добавить опять-таки интеллектуальный контроллер накопителей - получится трехпроцессорная система. Естественно, вычислительной производительности это не повышало, но на эффективность работы сервера могло и повлиять. Основной расцвет систем такого сорта пришелся на середину - конец эпохи 486-х, когда еще 100 МГц казались недостижимыми, а слухи о 200 МГц процессорах Alpha компании Digital казались фантастикой.

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

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

Гигагерцовые амбиции Digital чужды простому смертному. Ему бы чего попроще. А вот, получите - многопроцессорные системы Pentium Pro. Они, конечно, не слишком быстрые, но зато многопроцессорные. И даже можно подобрать такую задачу, при которой второй процессор дать выигрыш. Заметный, хотя и не слишком. Процентов на 30. Чаще, правда, не дает, ну и что, есть ведь, когда дает. Про четыре процессора (интересно, почему парами - не потому ли, что и 640) пока не слышно, но, наверное, скоро услышим.

Производители систем на процессорах Intel не одиноки в своем горе. Многопроцессорные "неомакинтоши" тоже хороши. Своей ценой.

Задача построения моногопроцессорных систем и оптимизации их производительности уходит корнями в глубь веков. Как построить систему так, чтобы все процессоры были загружены полностью и работали одновременно? То, как обеспечить равномерное распределение, когда есть много задач, исполняемых одновременно, - более или менее понятно. Задачи раздаются в порядке поступления, на основе предположения, что в среднем все они одинаковые. В основном это получается. А если задача большая, но одна? И на отдельные процессы не делится? Поступали по-всякому. Например, при обработке больших изображений делили их на столько кусков, сколько в наличие процессоров, и каждый кусок считали отдельно. Потом склеивали. Накладные расходы на деление/склейку и на соблюдение краевых условий не слишком мешали, правда только в том случае, если картинка большая, а процессоров мало. Если много или маленькая, накладные отжирали столько, что становилось неинтерес- . но. В любом случае, операционная система должна все это уметь и быть по крайней мере многопроцессорной.

У UNIX получается неплохо. У NT - иногда. У Windows 95 получается скверно. У MacOS тоже. Тем более, что и та, и другая ориентированы в основном на персональные применения, то есть на такие, когда решается почти одна-единственная задача, если не считать всякую мелочь. У файл-серверов проблемы сходные. Основная их задача как можно быстрее перекачать информацию с дисков в сеть. Во-первых, эту задачу трудно распараллелить, во-вторых, процессор здесь и вовсе лишний - только хлопоты от него. Конечно, если файл-сервер используется одновременно в качестве шлюза, маршрутизатора, моста и контроллера RAID, ситуация меняется, но это уже другая история... Как и в случае с сервером приложений или базами данных.

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

Михаил Борисов - издатель "Computerworld Россия".
С ним можно связаться по электронной почте: mike@osp.ru.

Поделитесь материалом с коллегами и друзьями