Текст
                    PARALLEL COMPUTERS
Arhitecture, programming
and algorithms
R W Hockney
Department of Computer Science,
University of Reading
C R Jesshope
Department of Electronics,
University of Southampton
Adam Hilger Ltd, Bristol

R Хокни К. Джессхоуп ПАРАЛЛЕЛЬНЫЕ ЭВМ Архитектура, программирование и алгоритмы Перевод с английского Д. И. Абашкина Под редакцией Е. П. Курочкина’ Москва „Радио и связь” 1986
ББК 32.973.2 Х70 УДК 681.3 Редакция переводной литературы X 2405000000-132 046 (01)-86 150-86 © 1981 R. W. Hockney and С. R. Jesshope ©Перевод на русский язык, предисловие к русскому изданию, примечания переводчика, дополнительный список литературы. Издательство ’’Радио и связь”, 1986.
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ Вторая половина XX века характеризуется интенсивным вторжением вы- числительной техники в различные сферы человеческой деятельности. Широ- кое использование ЭВМ коренным образом изменило методы сбора, обработ- ки, хранения и передачи информации. Традиционная машина фон Неймана, появившаяся много лет назад, в прин- ципе, до настоящего времени не претерпела существенных изменений, но, несмотря на это, производительность вычислительных машин постоянно рос- ла, и особенно интенсивно в последние годы. Этим мы обязаны главным образом достижениям в области технологии. Увеличение степени интеграции элементов, сокращение связей между ними, повышение скорости их рабо- ты — вот основные пути повышения быстродействия ЭВМ. Еще каких-нибудь тридцать лет назад скорость вычислительной машины в несколько тысяч операций в секунду казалась фантастически недосяга- емой, тогда как сейчас разговор идет уже о производительности в 109 опера- ций в секунду. В таких областях, как исследования в ядерной физике, поиск полезных ископаемых, метеорологический прогноз, медицинская диагностика и мно- гих других, требуются сложные математические расчеты с большой скоро- стью вычислений. Сюда следует отнести также достаточно широкий класс задач оптимизации процессов управления в современных сложных системах, многие из которых до сих пор не имеют удовлетворительных решений вслед- ствие ограниченной производительности существующих ЭВМ. Другими сло- вами, без использования сверхмощных ЭВМ многие сложные задачи, возни- кающие перед развитым человеческим обществом, не могут быть решены в пределах разумного периода времени. Безусловно, развитие фундаменталь- ных наук позволит повысить производительность машин, но уже давно ясно, что без новых принципов организации работы средств вычислительной тех- ники получить новый необходимый скачок в увеличении производительно- сти ЭВМ невозможно. Многолетний поиск путей ускорения обработки дан- ных привел к, казалось бы, ’’странному” выводу, что достижение высокой производительности в настоящее время зависит не столько от скорости ра- боты самой ЭВМ, сколько от принципиальных улучшений архитектуры ма- шины и методов обработки. Сравнительно простой, на первый взгляд, и дав- но известный принцип распараллеливания работ породил две достаточно сложные проблемы: способ организации взаимодействия компонентов си- стемы и ее программное обеспечение. Вполне понятно, что чем более высо- кую производительность мы собираемся получить от такой системы парал- лельной обработки, тем сложнее преодолеть эти проблемы.
В предлагаемой читателю книге речь пойдет не о параллельно функциони- рующих в системе ЭВМ, а о вычислительных машинах параллельного прин- Ципа функционирования, ЭВМ с высокой и даже, как сейчас говорят, со (сверхвысокой производительностью, или же, в соответствии с уже бытую- щим термином, о суперкомпьютерах. Книга посвящена вопросам изучения самых современных архитектур вычислительных машин, теории параллель- ных вычислений, быстрым алгоритмам обработки данных и параллельным языкам программирования. Нельзя не отметить удачный подбор материала авторами, которые являются видными специалистами в области вычисли- тельной техники. Интересующийся читатель, с одной стороны, может найти много весьма полезных сведений о современных ЭВМ (CRAY-1, CYBER 205, DAP и др.), а с другой — получить достаточно детальное представление об использовании численных методов, алгоритмов и различных языков про- граммирования обработки данных на параллельных ЭВМ. Новейшие архитектуры вычислительных машин группируются вокруг концепции параллельной обработки. Разработка и применение таких вычис- лительных систем требуют больших знаний по аппаратному обеспечению, Структурам программного обеспечения и взаимодействию между параллель- ными вычислительными алгоритмами. Существенно возрастает значение при- кладных программ, написанных на языке ассемблера и оптимизирующих Использование машинных ресурсов, которые для достижения высокой про- изводительности все чаще будут встраиваться в программы пользователя. Приобретают важность рекомендации о целесообразности применения тех или иных языковых конструкций. Кроме того, распараллеливание алгорит- мов должно соответствовать структурным особенностям машины, для кото- рой они предназначены. Или, в двух словах, чтобы эффективно использовать суперкомпьютер, необходимо изменить подход к работе математика и про- граммиста и, что более важно, к стилю мышления. Работа математика и про- граммиста становится более машинно-зависимой, чем это было до настояще- го времени. Безусловно, это обстоятельство является недостатком, от кото- рого все время пытались избавиться, создавая языки высокого уровня. Ко- нечно, работы в этом направлении будут развиваться, но даже сейчас игра стоит свеч. То, что может дать применение таких ЭВМ, окупит все труды и затраты с лихвой. Именно по этой причине компьютеры пятого поколения будут строиться по новым параллельным архитектурам. Следует отметить, что в процессе подготовки перевода возникло доста- точно много вопросов, связанных с подбором терминов и понятий — эквива- лентов на русском языке в рассматриваемой новой и бурно развивающейся области — вычислительной технике, однако можно надеяться, что терминоло- гические трудности не помешают читателю разобраться в сути вопросов, ос- вещаемых авторами. Излагаемый в книге материал, благодаря детальности и ясности изложе- ния, несомненно, представляет значительный интерес для специалистов, ра- ботающих в области вычислительной техники и программирования, и расши- ряет круг имеющейся на русском языке литературы по вычислительным ма- шинам, позволяя познакомиться с достижениями в этой области. Д-р техн, наук Е. П. Курочкин 6
Посвящается разработчикам ЭВМ ПРЕДИСЛОВИЕ Данная книга является первым томом новой серии монографий, посвя- щенных важным аспектам вычислительной науки (computer science), кото- рые имели и имеют существенное значение в определении будущей модели вычислений. После быстрых перемен, происшедших за последние два десяти- летия, не наблюдается никаких признаков спада; в действительности все ука- зывает на то, что изменения, ожидаемые в течение следующих десяти лет, окажутся еще более значительными, особенно с введением новых форм архи- тектуры ЭВМ, ставшей широко доступной вследствие достижений в полупро- водниковой технологии, и слиянием средств вычислительной техники со средствами передачи информации. Таким образом, такие предметы обсужде- ния, как суперкомпьютеры и параллельные алгоритмы, локальные сети, во- просы защиты и секретности являются сейчас особенно важными для практи- кующего научного работника и инженера, и назначение данной серии — предоставить материал по этим и другим темам. Следует особо подчеркнуть, что это первая монография, затрагивающая аспекты параллельной обработки; некоторые векторные и матричные про- цессоры уже являются коммерчески доступными, а прошедшие несколько лет демонстрировали неослабевающие усилия в области разработки, реали- зации и анализа параллельных алгоритмов. Параллельные процессоры уже использовались в широком диапазоне применений, включая метеорологию, белковую кристаллографию, динамическое программирование и оптимиза- цию, обработку сигналов и исследования в молекулярной электронике. Бла- годаря развитию вычислительных сетей средства параллельной обработки становятся доступными все возрастающему числу научных работников и ин- женеров, и в настоящей работе, ориентированной прежде всего именно на них и студентов соответствующих специальностей, дается общий обзор пред- мета и показаны возможные подходы для реализации этих мощных методов. М. Г. Роджерс
ВСТУПЛЕНИЕ Восьмидесятые годы, вероятно, будут десятилетием параллельных ЭВМ, и цель этой книги — дать введение в предмет. Хотя, начиная с 50-х годов, мно- гие компьютеры представляли собой примеры параллельной или одновремен- ной работы, только в 1974 — 1975 гг. появились первые ЭВМ, в которых спе- циально предусматривалось использование параллелизма для эффективной работы с векторами и массивами чисел. Эти машины базировались либо на параллельном выполнении различных подфункций арифметической опера- ции, организованной подобно заводской линии сборки (такие конвейерные ЭВМ, как STAR фирмы CDC и ASC фирмы Texas Instruments), либо на ду- блировании целых арифметических устройств (процессорных матриц, таких как ILLIAC IV). Несмотря на то что в этих ранних проектах существовало много проблем, в 1980 г. несколько основных фирм-изготовителей ЭВМ пред- ложили параллельные компьютеры уже для широкой продажи. Основными примерами являются конвейерные машины CRAY-1 (фактически впервые установлена в 1976 г.) и CYBER 205 фирмы CDC, процессорные матрицы DAP фирмы ICL и BSP фирмы Burroughs. К сожалению, пока мы готовили этот материал, фирма Burroughs, столкнувшись с проблемами производства BSP, сняла свой проект, хотя прототип машины был уже готов. Однако про- ект по-прежнему остается очень интересным и позволяет глубже понять спе- цифику данной области. Конвейерные разработки становятся также попу- лярными в качестве процессоров, подключаемых к мини-ЭВМ для обработ- ки сигналов или анализа сейсмических данных, а также в качестве приспо- соблений для систем на базе микро-ЭВМ. Примерами таких разработок явля- ются машины FPS АР-120В, FPS-164, Data General АР/130 и IBM 3838. Причина введения параллелизма в перечисленные разработки состояла в том, что увеличение только быстродействия электрических цепей не может обеспечить требуемой производительности. Это также очевидно иэ анализа вариантов, выполненных для предполагаемого проекта NASF (National Aeronautics Simulation Facility) по заказу Научно-исследовательского цент- ра Эймса (NASA). В основе проекта лежит использование ЭВМ с производи- тельностью 109 операций с плавающей точкой в секунду. Фирма CDC предла- гает для такой ЭВМ четыре высокопроизводительных конвейерных устрой- ства, тогда как проект фирмы Burroughs представляет собой матрвду из 512 задублированных арифметических устройств. С разработкой схем сверхвы- сокой степени интеграции (СБИС) и соответствующей технологии появи- лась возможность создавать очень большие матрицы простых процессорных элементов (ПЭ). Система DAP (4096 ПЭ) фирмы ICL и параллельный про- цессор МРР фирмы Goodyear Aerospace являются первыми процессорными 8
матрицами, которые, пе-видимому, будут разработаны в течение 80-х годов с использованием всех преимуществ технологии СБИС. Можно утверждать, что перечисленные проекты представляют интерес только для больших на- учных лабораторий и, вероятно, не окажут влияния на основную массу поль- зователей ЭВМ. Однако опыт показывает, что достижения в архитектуре ЭВМ, изготовленных вначале для научных целей, все-таки становятся затем частью общего направления вычислительной техники. Следовательно, потребность во все большем параллелизме при проекти- ровании ЭВМ (т. е. требование к достижению более высокой производитель- ности, чем та, которую может дать только увеличение скорости в отдельных цепях) в сочетании с технологией СБИС в процессе реализации их проектов, вероятно, приведет к тому, что параллелизм станет доминирующим в разви- тии архитектуры ЭВМ 80-х годов. Цель данной книги — объяснить принципы и дать классификацию как конвейерно-, так и матрично-подобным проектам, показать, как эти принципы были фактически реализованы в ряде успешно действующих проектов (в машинах CRAY-1, CYBER 205, FPS АР-120В, DAP и BSP), и сравнить производительность различных проектов по ряду выпол- няемых функций (операции с матрицами, быстрое преобразование Фурье, ре- шение уравнения Пуассона). С появлением архитектур с высокой степенью параллелизма возникла проблема разработки цифровых алгоритмов, эффек- тивно реализуемых с помощью этих архитектур, и машинных языков, по- средством которых можно было бы выразить эти алгоритмы. Мы полагаем, что алгоритмические и языковые аспекты параллелизма важны так же, как и архитектурные, поэтому специально для них выделили несколько глав. Для нашего изложения, которое возможно окажется новым, характер- ной является концепция двухпараметрического описания производительно- сти ЭВМ: в дополнение к обычной максимальной производительности, выра- жающейся числом операций с плавающей точкой в секунду (г»), мы ввели понятие полупроизводительности (n^i), представляющей длину вектора, требуемого для достижения половины максимальной производительности. Данную переменную можно также рассматривать как меру степени паралле- лизма проекта, и ее значение варьируется от нуля для последовательной ЭВМ до бесконечности для бесконечной процессорной матрицы. Таким образом, второй параметр прекрасно классифицирует проекты параллельных ЭВМ и его можно охарактеризовать числом. Он отвечает на вопрос: какова степень параллелизма моего компьютера? При всей важности можно выделить еще тот факт, что «1^2 также количественно определяет выбор наиболее эффек- тивного алгоритма. Вследствие этого он также отвечает на вопрос: какой ал- горитм является наилучшим для использования на моем параллельном ком- пьютере? Мы также ввели систему обозначения алгебраического вида, кото- рая позволяет выражать общую архитектуру ЭВМ в одной строке. Таким об- разом, устраняется потребность в многословных описаниях и облегчается классификация проектов посредством дополнения общего описания фор- мулой. Большинство материала книги было подобрано для лекционного курса’’Пе- редовая архитектура компьютеров”, читаемого на факультете в Репингском университете. В течение последних пяти лет этот курс информатики и вычис- лительной техники эволюционизировал в 40-лекционный цикл, и именно от- 9
сутствие подходящего учебника явилось предпосылкой к написанию данной книги. Этот лекционный курс дается как дополнительный для студентов третьего года обучения, но он был бы полезен и как специализированный курс на уровне магистра физико-математических наук или как учебный ма- териал для студентов-соискателей на звание доктора философии, готовящих диссертацию по общему направлению применения параллельных вычислений. В процессе подготовки рукописи мы обсуждали ее с многими людьми и получили ряд критических замечаний. Среди них мы хотели бы упомянуть наших коллег из Редингского университета, в частности, Джима Крейджи, Джона Грэхема, Роджера Лоудера, Джона Огдена, Джона Робертса, Ширли Уильямс и Генри Кемэдьяна из Саутгемптонского университета. Доктор Эван Пейдж — вице-президент Редингского университета и редактор серии — профессор Майк Роджерс из Бристольского университета своими советами по- могли улучшить рукопись. Мы также получили очень существенную помощь в виде фотоснимков и информации от представителей фирм-изготовителей ЭВМ, среди которых хотим поблагодарить Пита Фландерса, Дэвида Ханта и Стюарта Редэвея из Центра научных исследований и новых разработок фир- мы ICL (г. Стивенидж, Великобритания), Джона Смолбоуна из фирмы ICL (г. Юстон, Великобритания), профессора Дениса Паркинсона из фирмы ICL и Колледжа королевы Марии (Лондонский университет), Стюарта Дрейто- на, Мика Дангверта и Джефа Тейлора из фирмы CRAY Research (г. Брэк- нелл, Великобритания), Дэвида Баркая и Найджел Пейн из фирмы Control Data Corporation (Великобритания), Патрицию Конвей, Нейл Линкольн и Чака Пёрселла из фирмы CDC (г. Миннеаполис, шт. Миннесота), Дж. Г. Остина из фирмы Burroughs (г. Паоли) и Г. Тиллота из фирмы Burroughs (Лондон), К. Т. Микелсона из фирмы Goodyear Aerospace (г. Акрон, шт. Огайо) и Джона Хати, Дзвида Хеда и Стива Макхэма из фирмы Floating Point Systems (г. Брэкнелл, Великобритания). Многие ошибки были исправлены мисс Джил Дикинсон (в настоящее время миссис Контла), которая напеча- тала рукопись с присущим ей мастерством. Мы посвятили эту книгу разработчикам ЭВМ, потому что без их вдохно- вения и преданности у нас не было бы такого интересного разнообразия про- ектов для изучения, классификации и применения. Разработка любого ком- пьютера неизбежно является следствием усилий коллектива, но мы хотели бы выразить особую благодарность Сеймуру Крею, Нилу Линкольну, Джорд- жу О’Лири и Стюарту Редэв ею, которые были генеральными конструкторами ЭВМ, выбранных нами для детального изучения. Р. Хокни К. Джессхоуп
1. ВВЕДЕНИЕ Широкомасштабный параллелизм является принципиальным новшеством, появившимся в проекте многочисленных коммерчески доступных ЭВМ в 80-годах. В вводной главе мы проследим историю его развития (см. разд. 1.1), затем изложим принципы, которые можно было бы использовать для класси- фикации этих параллельных компьютеров (см. разд. 1.2), и охарактеризуем их относительную производительность (см. разд. 1.3). Чтобы достичь эффек- тивного использования таких параллельных ЭВМ, программист должен ос- мыслить общую организацию вычислительной системы, которую мы склон- ны описывать в качестве ее архитектуры, т. е. число и тип процессоров, моду- ли памяти и каналы ввода-вывода, и как эти устройства управляются и вза- имодействуют. Главы 2 и 3 посвящены описанию архитектуры двух основ- ных классов параллельных компьютеров: конвейерной ЭВМ и процессорной матрицы. Было бы непрактичным дать доступное описание всех проектов по этим категориям, поэтому мы выбрали, главным образом, коммерчески до- ступные машины, которые поступают или, вероятно, поступят на рынок в значительном объеме и которые существенно отличаются друг от друга, что- бы проиллюстрировать различные подходы к одной и той же проблеме. Кон- вейерные ЭВМ представлены машинами CRAY-1, CYBER 205 и EPS АР-120В (см. гл. 2); процессорные матрицы — машинами DAP фирмы ICL и BSP фир- мы Burroughs (см. гл. 3). В процессе обсуждения перспективных разрабо- ток мы рассматриваем основы технологии и другие проектные ограничения в параллельных компьютерах, и далее описываем два исследовательских проекта, выполняемых по заданию NASA с ориентацией на архитектуру 80-х годов (см. гл. 6). Новые архитектурные особенности требуют новых машинных языков и цифровых алгоритмов в том случае, если пользователь желает реализовать преимущества этих разработок. В случае применения параллельных ЭВМ, ко- торые предназначены в первуЬ очередь для эффективной работы с одномер- ными или двумерными списками данных, это наиболее естественно достига- ется путем введения математической концепции вектора или матрицы в ма- шинный язык и анализа алгоритмов с точки зрения их пригодности для вы- полнения операции над векторами данных. Кроме того, хороший машинный язык в очень сильной степени облегчает процесс программирования, и в свя- зи с этим гл. 4 посвящена параллельным языкам с ориентацией на стандарт- ный Фортран (см. разд. 4.3), описанию машинного (см. разд. 4.4) и проблем- ного параллелизма (см. разд. 4.5). Пригодность параллельных компьютеров зависит от разработки или выбора подходящих параллельных алгоритмов, и в' гл. 5 мы учреждаем принципы, характеризующие алгоритмы для парал- лельной ЭВМ. Эти принципы используются впоследствии при выборе алгорит- 11
мов для рекурсий, матричного умножения, трехдиагональных линейных уравнений, преобразований и некоторых уравнений в частных производных. Хотя наше представление базируется всецело на ситуации примерно 1980 г., мы постараемся установить принципы, которыми читатель мог бы пользо- ваться по мере дальнейшего развития архитектуры ЭВМ. Наша цель — на- учить читателя оценивать новые проекты посредством классификации их ар- хитектуры и определения производительности и, как следствие этого, уметь выбирать алгоритмы и языки, пригодные для решения определенных проблем. 1.1. ИСТОРИЯ ПАРАЛЛЕЛИЗМА Мы начинаем обсуждение истории параллелизма в архитектуре ЭВМ с рас- смотрения времени, требуемого для выполнения простой арифметической операции, например умножения с плавающей точкой, за период с момента появления в 1951 г. коммерческой машины UNIVAC1. Сокращение време- ни можно проследить по рис. 1.1, откуда видно в грубом приближении деся- тикратное увеличение скорости вычислений арифметических операций за Рис. 1.1. Эволюция быстродействия компьютеров: увеличение в 10 раз каждые 5 лет каждые пять лет. Такой поразительный рост быстродействия ЭВМ стал воз- можным вследствие усовершенствования технологических процессов изго- товления компонентов аппаратного обеспечения в сочетании со все возраста- ющей степенью параллелизма на всех уровнях архитектуры ЭВМ. В первом поколении вычислительных машин 50-х годов в качестве ком- мутирующих элементов использовались электронные лампы с временем за- держки вентиля1 приблизительно 1 мкс. Они были заменены примерно в * Время задержки вентиля - время, затрачиваемое на прохождение сигнала от вхо- да одного логического вентиля до входа следующего [236]. Цифры указывают порядок величины времени задержки. 12
1960 г. дискретными германиевыми транзисторами (время задержки поряд- ка 0,3 мкс) в таких машинах второго поколения, как IBM 7090. Приблизи- тельно в 1965 г. были внедрены биполярные интегральные схемы;(ИС) с ма- лым уровнем интеграции, содержащие несколько вентилей на кремниевом кристалле с временем задержки около 10 нс на вентиль. Они все время со- вершенствовались, и к 1975 г. время задержки достигало уже менее 1 нс на вентиль. С появлением полупроводниковой МОП-технологии (металл — оки- сел — полупроводник), плотность размещения элементов значительно возро- сла, хотя скорость распространения сигнала снизилась в 5 — 10 раз. К началу 80-х годов были выпущены микропроцессоры с производительностью, рав- ной приблизительно ламповым ЭВМ первого поколения, и размещавшиеся на кремниевом кристалле площадью несколько квадратных миллиметров. Эти достижения техники, очевидно, сделают возможным реализацию различ- ных архитектур с высокой степенью параллелизма, которые ранее оставались на уровне теоретических исследований. За период с 1950 по 1975 гг. быстродействие элементов, измеряемое как величина, обратная времени задержки вентиля, увеличилось приблизительно в 103 раза, тогда как производительность ЭВМ, измеряемая как величина, обратная времени умножения, увеличилась в 10s раза. Дополнительное уве- личение быстродействия стало возможным благодаря архитектурным усо- вершенствованиям, главным образом, введению параллелизма, который яв- ляется основным предметом изучения данной книги. Более детальное обсуж- дение технологических разработок и их влияние на проект ЭВМ дается в гл. 6. Технологические разработки, включая некоторые интересные прогнозы на 80-е годы, раскрываются Р. Терном в книге Computer in the 1980 [236]. Вли- яние этих технологических достижений на проект ЭВМ, в частности, исполь- зуемых в высокопроизводительной машине для научных исследований, опи- сывается более полно в готовящемся к выходу из печати томе этой серии — Паркинсон Д., Supercomputers. Наше обсуждение скорее сосредоточено на ор- ганизационных аспектах введения параллелизма, а не на деталях его внедре- ния в аппаратное обеспечение. В проведенном сравнении не учитывается возможность совмещения раз- личных арифметических н логических операций, н поэтому мы допускаем выборочное сравнение тактового периода в качестве меры быстродействия технологии с числом арифметических операций в секунду на определенной задаче в качестве меры производительности. В работе [250] приводится вре- мя выполнения операции, равное 18л мс, для оценки последовательности из членов (2л арифметических операций) на машине EDSAC1 [249], у которой тактовый период составлял 2 мкс. Это обеспечивало среднюю скорость вы- числений 100 арифметических операций в секунду, которую мы можем срав- нить с производительностью в 130 млн. операций в секунду у машины CRAY-1 [194] для матричного умножения. Тактовый период у CRAY-1 составляет 12,5 нс, т. е. общая производительность компьютера за время, равное прибли- зительно трем десятилетиям, возросла в 106 раз, причем в 160 раз только вследствнеусовершенствования технологии. Можно также заметить качествен- ные улучшения в арифметических операциях: переход от 36-разрядных ариф- метических операций с фиксированной точкой на машине EDSAC1 к 64-раз- рядным арифметическим операциям с плавающей точкой у CRAY-1. 13
Общая архитектура ЭВМ первого поколения определяется как последова- тельная и базируется на фундаментальных принципах ЭВМ с запоминаемой программой, которые были изложены в работе [31]. Обычно структуру та- кой ЭВМ относят для простоты к организации вычислительной машины по фон Нейману. Машина такого рода содержит устройство ввода-вывода, за- поминающее устройство для хранения как данных, так и команд, устрой- ство управления для интерпретации команд и арифметическое устройство (АУ) для обработки данных. Два последних устройства входят в централь- ный процессор (ЦП). Важной особенностью в представляемой ситуации яв- ляется то, что операции в компьютере (например, выборка из памяти или за- несение в память, арифметическая или логическая операция, ввод или вы- вод) выполняются последовательно друг за другом. Параллелизм относится к способности частичного совмещения или одновременного выполнения мно- гих этих операций. Принципиальные способы введения параллелизма в архитектуру ЭВМ под- робно описываются в разд. 1.2. Вкратце их можно сформулировать так: а) конвейерная обработка — применение методом линии сборки с целью улучшения производительности арифметического и управляющего устройств; б) функциональная обработка — предоставление нескольким независи- мым устройствам возможности выполнения различных функций, таких как операции логики, сложения или умножения, обеспечивая взаимодействие с различными данными; в) матричная обработка — обусловливает наличие матрицы идентичных процессорных элементов с общей системой управления, где все элементы вы- полняют одну и ту же операцию, но с различными данными, хранящимися в их собственной памяти, т. е. жестко связанные пошаговые операции; г) мультипроцессорная обработка — осуществляется несколькими процес- сорами, каждый из которых имеет свои собственные команды, и все взаимо- действуют друг с другом через общее поле памяти. Безусловно, в отдельных проектах могут объединяться некоторые или все эти характерные черты параллельной обработки. Например, процессорная матрица в качестве ПЭ может иметь конвейерные арифметические устрой- ства, или одно функциональное устройство в компьютере, содержащем мно- жество таких устройств, может представлять собой процессорную матрицу. До 1980 г. проекты мультипроцессоров строились, в основном, на прин- ципах соединения нескольких независимых ЭВМ с целью максимизации про- пускной способности вычислительной системы. Безусловно, зто представля- ет интерес, но лежит вне сферы данной книги. Поэтому мы будем приводить примеры мультипроцессоров в том случае, если они реализуют часть паралле- лизма ЭВМ, а читателю, желающему углубить знания по мультипроцессорам с точки зрения производительности систем в более широком смысле, реко- мендуем обратиться к обзорам Ф. Энслоу [65, 66] и сборнику статей [120]. Появление дешевого микропроцессора примерно в 1975 г. сделало реали- стичной концепцию большого числа соединенных микропроцессоров, совмест- но работающих над решением одной задачи, и такие системы в 80-е годы, ве- роятно, будут приобретать все большее значение. Уже предложен и реализо- ван ряд экспериментальных систем. Вопросы принципов параллелизма и их влияния на проект ЭВМ (арифметические устройства, структуру памяти, гра- 14
фик прохождения команд, устройство ввод-вывод, мультипроцессорную об- работку и мультипрограммирование) очень хорошо рассмотрены в работе [152]. Эта книга рекомендуется для дополнительного чтения по принципам параллелизма. В нашем представлении истории параллелизма мы не стараемся дать пол- ный обзор, а хотим сфокусировать внимание только на тех разработках, ко- торые отражали существенные шаги по введению параллелизма. Мы не стара- лись упомянуть все машины или доклады, а отобрали только те машины, ко- торые либо достигли значительного объема продаж, либо оказали существен- ное влияние на дальнейшее развитие вычислительной науки, и поэтому упо- минаются только некоторые из научных докладов, имевших наибольшее вли- яние на это развитие. Основные тенденции и сходства, обусловленные введе- нием параллелизма в архитектуру ЭВМ, демонстрируются на рис. 1.2. Здесь мы выборочно описываем основные направления развития компьютеров. Чи- татели, интересующиеся дополнительной информацией по ранней истории компьютеров, в основном до 1950 года, могут обратиться к работам [95, 184]. В особо ценном историческом обзоре [190] описывается развитие вы- числительных машин от ENIAC (1946 г.) до CDC 7600 (1968 г.). Детальная информация по архитектуре многих компьютеров, о которой мы упоминали, дается в книге К. Белла и Э. Ньюэлла [18], в которую включены статьи по наиболее важным семействам ЭВМ. В ней рассматриваются вопросы проекти- рования и исторические подробности, которые трудно найти где-либо еще, за период приблизительно с 1950 по 1970 гг. Другие машины (MU5, ATLAS, IBM 370, UNIV AC 1100, DEC 10, CRAY-1) описываются в специальном выпус- ке, посвященном архитектуре ЭВМ [2]. Полезные краткие сообщения по ар- хитектуре большинства коммерчески доступных компьютеров даются в се- рии докладов по вычислительной технике [8]. 1.1.1. Параллелизм до 1960 г. Предполагают, что первое упоминание о параллелизме в проекте компьютера обнару- жено в публикации генерала Л. Менебриа под названием Набросок аналитической маши- ны, изобретенной Чарльзом Бэббиджем [142, 162], датируемой октябрем 1842 г. Опи- сывая программу аналитической машины, он пишет: ’’Во-вторых, экономия времени. Чтобы убедиться в этом, нам нужно вспомнить хотя бы то, что перемножение двух чисел, где каждое состоит из 20 цифр, потребует в луч- шем случае три минуты. Более того, в случае выполнения длинной серии идентичных вычислений, подобных предыдущему и необходимых для формирования цифровых таб- лиц, машина может быть введена в действие с целью выдачи нескольких результатов од- новременно, что очень существенно сократит весь объем процессов”. По всей видимости, способность выполнять параллельную операцию не была включе- на ипи реализована в окончательном проекте вычислительной машины Бэббиджа. Одна- ко совершенно ясно, что идея использовать параллелизм для улучшения производитель- ности машины, пришла в голову Бэббиджу на 100 лет раньше, чем техника достигла та- кого состояния, когда ее реализация стала возможной. В своей работе по автоматиче- ским дифференциальным и аналитическим машинам, которая была продиктована по- требностью создания достоверных астрономических таблиц [11 - 13, 184], Чарльз Бэб- бидж, без сомнения, был пионером многих фундаментальных идей в области обработки данных. 15
По Холланду Мультипроцессорные матрицы По Бастоу и др. Рис. 1.2. Эволюционное дерево, отражающее архитектурные связи и их влияние на разработку компьютеров с начала 50-х до середины 80-х гг. Числа в скобках показывают производительность компьютера (Мфлоп/с) при его разумном использовании. Сплошными линиями ука- заны проект и фирма-изготовитель, звездочкой - поставка первой операционной системы; штриховые линии отражают архитектурные взаимосвязи 16
В первых компьютерах с запоминаемой программой — EDSACb Кембриджском университете [249] и EDVAC в университете шт. Пенсильвании (закончен в 1952 г.) - и их коммерческих производных (например, UNIV АС 1 [63]) использовались запомина- ющие устройства на ртутных линиях задержки емкостью в жалкие 100 слов. Поскольку в такой памяти последующие биты числа поступают на считывающую головку в виде временной последовательности, начинающейся с наименьшего значащего бита, было со- вершенно естественно и выгодно выполнять арифметические операции над двумя чис- лами поразрядно. Например, операция сложения двух 32-раз рядных чисел осуществля- лась за 32 машинных цикла посредством простых схем, способных только складывать один бит с другим. Арифметические операции, выполняемые таким образом, называют- ся разрядно-последовательными, и целью первоначального применения параллелизма в ЭВМ было увеличение скорости вычислений путем параллельного выполнения арифме- тических операций над всеми разрядами числа. Интересно заметить, что последовательная организация АУ рассматривалась как одно из преимуществ, полученных с внедрением электронных компонентов в компьютеры, которые ранее выполняли арифметические действия параллельно. К примеру, Бэббидж считал неприемлемой последовательную арифметику для своей дифференциальной ма- шины из-за большого времени выполнения операций [13, 162]. Она должна была выпол- нять арифметические действия над 50 десятичными числами параллельно. Типичный на- стольный калькулятор 40-х годов обрабатывал около 12 десятичных чисел параллельно. Высокое быстродействие электронных компонентов по сравнению с механическими и электромеханическими компонентами в ранних машинах позволило увеличить произво- дительность ЭВМ в 103 - 10* раз с одновременной экономией затрат на оборудование, что стимулировало именно последовательную обработку данных. Ламповой ЭВМ первого поколения, в которой использовались свойства параллель- ной работы, была опытная машина АСЕ (Automatic Computing Engine) и ее коммерчес- кий вариант DEUCE (Digital Electronic Universal Calculating Engine) фирмы English Electric. Проект опытной машины АСЕ [251] был принят во время посещения Национальной фи- зической лаборатории Великобритании в 1947 г. доктором X. Хаски, который был по- следователем идей доктора Э. Тьюринга [235], и реализован в 1951 г. Эта машина, со- держащая 11 ртутных линий задержки емкостью 32 32-разрядных слова каждая, имела время вычисления 1 мс. В ней использовалось АУ разрядно-последовательного действия с тактовым периодом 1 мкс на один бит. Интересная особенность заключалась в приме- нении устройства считывания с перфокарт перфоратора, устройства умножения, име- ющего возможность работать параллельно с остальными устройствами машины, и ис- пользование команд (которые сейчас мы классифицировали бы как векторные), вы- полняющих ограниченный ряд операций над всеми 32 числами, находящимися в линии задержки. Например, процессор мог осуществлять десятично-двоичное или двоично-де- сятичное преобразование, пока производилось считывание строк перфоратором. Кроме того, упорядочение знака, необходимое при знаковом умножении, осуществлялось сумматором за 2 мс, в течение которых устройство умножения выполняло беззнаковое перемножение. Это является примером функционального параллелизма. Команду мож- но было поддерживать в активном состоянии (повторно действующем) в течение 32 тактовых периодов, что позволяло, например, вычислять сумму всех чисел линии задержки с помощью одной команды. Это, в свою очередь, часто использовалось для подсчета контрольных сумм и являлось одним из самых ранних примеров векторной команды. В производственном варианте машины DEUCE [91], которая появилась в 1954 г., быстродействующее запоминающее устройство было расширено до 12 линий задержки и поддерживалось вспомогательной памятью на магнитном барабане емкостью 8000 слов. Принцип параллелизма можно также обнаружить при передаче с/на барабан, так как в это же время могут выполняться вычисления в остальных устройствах маши- ны. Кроме того, на DEUCE был установлен автономный аппаратный делитель с фикси- рованной точкой (длительность операции 2 мс), который подобно устройству умноже- 17
ния мог работать параллельно с остальными устройствами машины. Однако он исполь- зовал те же регистры, что и устройство умножения. В машине DEUCE, в качестве регист- ров быстрого доступа устанавливались три линии задержки слова одиночной длины, три линии задержки слова двойной длины и две линии задержки слова учетверенной длины. Одна линия задержки слова одиночной длины и одна линия задержки слова двойной длины были подсоединены к сумматорам с фиксированной точкой и, кроме того, могли быть использованы в качестве аккумуляторов. Разрядно-параллельная арифметика стала реализуемой в проекте ЭВМ с момента из- готовления статического запоминающего устройства с произвольным доступом (ЗУПВ), из которого все разряды слова удобно считывать параллельно. Первая эксперименталь- ная машина, использующая параллельную арифметику, была завершена в Институте новейших исследований (IAS) в 1952 г., за которой в 1953 г. последовала первая ком- мерческая ЭВМ с параллельной арифметикой IBM 701. В обеих машинах применено электростатическое электронно-лучевое ЗУ, изобретенное Ф. Вильямсом и Т. Килбёр- ном [252], и вслед за этими машинами через несколько лет появились первые ЭВМ с па- мятью на магнитных сердечниках. Наиболее удачной из них, без сомнения, была машина IBM 704, около 150 экземпляров которой было продано. Эта машина имеланетолько па- раллельную арифметику, но в ней впервые было применено аппаратное АУ с плаваю- щей точкой. Таким образом обеспечивалось значительное увеличение быстродействия по сравнению с предыдущими машинами, которые если и позволяли производить арифме- тические операции с плавающей точкой, то только посредством программного обеспе- чения. Первая машина IBM 704 начала работать в 1955 г., а последняя была выключена в 1975 г. Удивительная история этой ламповой машины первого поколения, которая вы- полняла полезную работу в течение 20 лет, описывается Р. Маклолином [157]. В машине IBM 704, а также в других машинах этого времени все данные, считывае- мые устройством ввода или заносимые в устройство вывода, проходили через регистр арифметического устройства, мешая тем самым выполнению полезных арифметических операций во время ввода или вывода. Первоначально в состав оборудования входило оперативное устройство считывания с перфокарт (150 - 250 карт./мин), перфоратор карточный (100 карт/мин) и построчное печатающее устройство (150 строка/мин). Вскоре они были заменены магнитными лентопротяжными устройствами в качестве ос- новных устройств оперативного ввода-вывода (15000 символ/с, что, по крайней мере, в 100 раз быстрее, чем у перфокарточного устройства ввода или построчного печатающе- го устройства). Автономные средства перфокарты — лента и лента-печатающее устрой- ство устанавливались на отдельную ЭВМ ввода-вывода IBM 1401. Однако эти скорости магнитной ленты были все еще в 1000 раз меньше, чем скорость обработки данных про- цессором, и поэтому ввод-вывод мог быть главным узким местом в общей производи- тельности машины IBM 704 и вычислительной установки в целом. Проблема ввода-вывода была, по крайней мере частично, решена посредством предо- ставления возможности арифметическому и логическому устройствам ЭВМ работать па- раллельно со считыванием и распечаткой данных. В связи с этим была добавлена специ- альная ЭВМ, названная каналом ввода-вывода, которая предназначалась для передачи данных к медленному периферийному оборудованию или от него, такому, как устрой- ство считывания с перфокарт, накопитель на магнитных лентах, построчно-печатающее устройство для обмена с основной памятью ЭВМ. Один раз смоделированная главным устройством управления передача больших блоков данных могла выполняться под управлением канала ввода-вывода, в то время как АУ продолжало выполнять полезную работу. Для канала ввода-вывода имелся набор команд, специально предназначенный для операций ввода-вывода,"устройство обработки этих команд и регистры. В 1958 г. машина IBM 704 была дополнена шестью такими каналами и переименована в IBM 709. Она представляла собой первый вариант установки для мультипроцессорной обработки. В ней все еще использовались электронные лампы для коммутирующей логики, поэто- му она имела короткую жизнь, так как к тому времени транзисторы уже стали надеж- 18
ными элементами. Машина IBM 709 была реконструирована на основе транзисторной технологии и выпущена на рынок в 1959 г. уже как IBM 7090. Эта машина и ее моди- фикации (IBM 7094 и 7094 II) были чрезвычайно удачными - их было-продано около 400 экземпляров. На начальной стадии разработки любого нового устройства обычно выискивают как можно больше новейших идей и проектов, затем следует период, для которого харак- терны крупные вложения в один определенный тип проекта. После этого дальнейшие нововведения будут очень затруднены вследствие увеличения объема этих вложений. Такая модель хорошо просматривается на примере разработки автомобильного двигате- ля с использованием различных принципов, известных к 1900 г. и заложенных в бензи- новые, паровые и ротационные двигатели. Результатом крупных вложений явилось соз- дание бензинового двигателя внутреннего сгорания, и сейчас вряд ли можно предста- вить что-либо другое. Подобно этому многие новые архитектурные принципы проекта ЭВМ обсуждались в 50-х годах, хотя до 1980 г. только системы, базирующиеся на одном потоке команд и данных, пользовались успехом на рынке. Однако кажется вероятным, что технология сверхбольших интегральных схем и появление дешевых микропроцес- соров создадут возможности для реализации этих некоторых архитектур в 80-х годах. В 1952 г. К. Леондес и М. Рубиноф [151] описали многооперационную ЭВМ на базе ротационной памяти на магнитном барабане- Машина DINA была цифровым анализато- ром для решения уравнений Лапласа, диффузии и волновых уравнений. Подобная кон- цепция была изложена позднее К. Зусом [258] в проекте ’’действующей вычислитель- ной машины”. Принцип пространственно соединенных матриц процессоров был установ- лен фон Нейманом, который показал, что над двумерным массивом элементов вычисле- ний с 29 состояниями можно выполнять все операции, поскольку он моделирует поведе- ние машины Тьюринга. За этой теоретической разработкой последовали предложения практического проекта по Унгеру [238], который считается прародителем машины SOLOMON, ILLIAC IV и ICL DAP, появившихся в 70-х годах. Подобным образом сообщение Дж. Холанда [108], описывающее совокупность про- цессоров, в которой каждый подчиняется своему потоку команд, можно рассматривать как первый широкомасштабный мультипроцессорный проект и предшественник более поздних микропроцессорных проектов [38, 174], являющихся аналогами проектов, предлагавшихся 20 лет назад. Косвенный двоичный и-куб, предложенный М. Пизом, был эскизным проектом для 2” микропроцессоров, топологически соединенных в виде одно-, двух-, ... и «-мерного куба, пригодного для разнообразных цифровых алгорит- мов, таких как быстрое преобразование Фурье. Показано, что можно использовать бо- лее 16384 процессора (п = 14). Гиперкуб, объявленный ассоциациями IMS [159], бази- ровался на принципах М. Пиза: он составлял 4-мерный куб с двумя микропроцессорами в каждом узле - один для межузловой связи, а другой для манипулирования данными. 1.1.2. Быстродействующие скалярные компьютеры Скалярный компьютер — это машина, которая имеет команды для мани- пулирования элементами данных, содержащих только одиночные числа, то- гда как векторная ЭВМ имеет кбманды для манипулирования элементами данных, содержащих упорядоченный набор чисел, т. е. вектор. История раз- работки быстрых скалярных компьютеров в 60 - 70-х годах представляет собой историю введения все большего параллелизма в общий проект после- довательных ЭВМ с одним потоком команд —. одним потоком данных, та- ких как IBM 7090, которая стала в известной степени стандартной архитекту- рой к концу 50-х годов. Машина, которая оказала глубокое влияние как на архитектуру, так и на программное обеспечение, это ATLAS [109, 110, 138, 146, 218]. Машина бы- 19
ла задумана в Манчестерском университете примерно в 1956 г. и спроектиро- вана объединенной производственно-университетской группой под руковод- ством проф. Килбурна. Прототип компьютера был разработан в университете в 1961 г., а первая производственная модель была завершена в 1963 г. фир- мой Ferranti (ставшей затем частью, фирмы International Computers and Tabulators, которая позднее стала называться International Computers Limi- ted). Машина ATLAS известна главным образом тем, что в ней впервые была применена комплексная мультипрограммная операционная систе- ма, основанная на большой виртуальной одноуровневой памяти и системе прерывания. Операционная система организовывала распределение ресурсов для программ, находящихся на различных стадиях выполнения. Область вир- туального адреса представлялась пользователю в виде одноуровневого ЗУ емкостью примерно в 106 слов, которое автоматически трансформировалось в обращения к многоуровневой физической памяти, состоящей из накопите- ля на магнитных сердечниках (16 кслов, где к = 1024), на магнитном бара- бане (96 кслов) и на магнитной ленте, которая использовалась в качестве вспомогательной памяти. Это стало возможным благодаря организации страничной системы хранения, которая пересылает информацию между раз- личными уровнями иерархии памяти в виде блоков, называемых страница- ми и содержащих по 512 слов. Система прерывания давала возможность мед- ленным устройствам ввода-вывода работать автономно и прерывать вычисле- ния в процессоре только в случае необходимости. В дополнение к указанным организационным улучшениям в машине AT- LAS был впервые использован принцип параллелизма для повышения произ- водительности вычислений. Двухмикросекундная основная память на сер- дечниках была разделена на четыре независимых банка (названных стеком), вследствие чего стала возможной при благоприятных обстоятельствах парал- лельная выборка двух команд и их двух операндов за один цикл памяти. Арифметические операции выполнялись разрядно-параллельным способом [137]. Функциональный параллелизм был представлен в виде отдельного ав- тономного 24-разрядного сумматора для индексных вычислений, названного арифметическим В-устройством, в дополнении к основному арифметическо- му устройству с фиксированной и плавающей точкой, в котором производи- лась обработка с 48 разрядами (40 разрядов — мантисса и 8 разрядов — поря- док степени 8), с использованием одного главного накапливающего сумма- тора. К арифметическому В-устройству были подключены 128 24-разрядных индексных регистра (называемых блоками индекс-регистров) на быстро пе- ремагничивающихся сердечниках с временем цикла 0,7 мкс. Команды были одноадресными и специфицировали операцию между содержимым адреса и содержимым главного накапливающего сумматора. Сорок восемь разрядов команды содержали 10-разрядный код функции, 24-разрядный адрес сердеч- ника и два 7-разрядных адреса индекс-регистров. Адрес операнда получался путем сложения содержимого одного или обоих специфицированных индекс- регистров с основным адресом. Принцип конвейерной обработки использо- вался для совмещения следующих фаз выполнения команд: выборки коман- ды, вычисления 24-разрядного адреса операнда в В-устройстве выборки опе- ранда и 48-разрядной арифметической операции в главном накапливающем сумматоре. Об эффективности конвейерной обработки можно судить на при- 20
мере серии операций с плавающей точкой, где время, равное 6 мкс на каж- дую операцию при последовательном выполнении всех фаз команды, сокра- щено при конвейерной обработке в среднем до 1,6 мкс на операцию. За один промежуток времени выполняются различные шаги 2 — 4 команд. Соответ- ствующее время выполнения команды умножения с плавающей точкой бы- ло равно 5 мкс, а среднее время выполнения команды программы на языке Фортран составляло приблизительно 3 мкс. Логические схемы машины AT- LAS (фирмы Ferranti) были реализованы на дискретных германиевых тран- зисторах и диодах с типичным временем задержки 12 мс/вентиль. Всего в ЭВМ было применено около 80 000 транзисторов. Чтобы эффективно исполь- зовать принципы параллелизма, точнее множество арифметических устройств, регистров и ЗУ, необходимо осуществлять опережающий просмотр потока команд с целью выяснения, какие команды могут выполняться одновре- менно без изменения логики программы. Обнаружив такой параллелизм в программе, необходимо далее установить график поступления команд в АУ с целью выполнения операций наиболее оптимальным образом. Оба эти аспекта опережающего просмотра рассмотрены в работе [136] и использу- ются в большинстве быстродействующих скалярных компьютеров, таких как CDC 6600 и IBM 360/91. Постепенное введение функционального параллелизма и конвейерной об- работки можно проследить на примере развития концепции последователь- ной ЭВМ в фирме Control Data Corporation под влиянием Сеймура Р. Крея — одного из основателей компании в 1957 г., вице-президента и генерального конструктора. Машина CDC 6600, первые поставки которой относятся к 1964 г., была первой ЭВМ, главной особенностью проекта которой было ис- пользование функционального параллелизма [230]. Разработку машины до- статочно хорошо описал Дж. Торнтон, бывший ответственным за наиболь- шую часть детально разработанного проекта, в книге Desing of a Computer - The Control Data 6600. В состав машины CDC 6600 входило запоминающее устройство на магнитных сердечниках с временем выборки 1 мкс, разделен- ное на 32 независимых банка, которые могли работать параллельно; 10 от- дельных функциональных устройств умножения (задублированных), деле- ния, сложения, сложения двойных слоев, операций сдвига, логики, перехода и инкремента (задублировано); 10 периферийных процессоров, формиру- ющих гибкие связи с медленными устройствами ввода-вывода. Десять пери- ферийных процессоров, работающих с одним АУ и устройством управления в режиме разделения времени, осуществляли выполнение программ с данны- ми, хранящимися в отдельных блоках памяти. Поэтому логически они рабо- тали как независимые процессоры и представляли собой примеры мульти- процессорной обработки. Чтобы удовлетворить спрос научного рынка, все арифметические устройства были выполнены с плавающей точкой (60-раз- рядные слова) за исключением устройства инкремента (выполнялось только 18-разрядное сложение и вычитание), которое предназначалось для подсчета циклов и целочисленных адресных вычислений. Машина CDC 6600 имела та- кой огромный успех, что сумела захватить значительную часть научного рын- ка, где ранее господствовали машины 7090 и 7094 фирмы IBM. В 1969 г. фирма Control Data выпустила машину CDC 7600, явившуюся усовершен- ствованным вариантом машины CDC 6600. По быстродействию машина 21
CDC 7600 приблизительно в четыре раза превосходила CDC 6600, так как тактовый период был сокращен со 100 до 27,5 нс. Десять последовательно- организованных функциональных устройств машины CDC 6600 были замене- ны восемью конвейерно-функциональными устройствами и одним последо- вательным устройством деления, которое не могло быть конвейерным. Вследствие высокого быстродействия конвейерных устройств отпала необ- ходимость в дублировании устройств умножения и инкремента. Кроме того, был добавлен блок для подсчета числа единиц в слове. Архитектуры машины CDC 6600 (переименованной в CYBER 70 модель 74) и CDC 7600 (переиме- нованной в CYBER 70 модель 76) являются двумя наиболее удачными архи- тектурами, разработанными для научного рынка. Свыше 50 экземпляров этих машин было введено в эксплуатацию. История производства вычислительных машин фирмы IBM в течение 60 - 70-х годов отражает последовательное внедрение все большей степени парал- лелизма. Разработка началась в 1956 г. с подписания контракта с Лос-Ала- мосской научной лабораторией на создание компьютера с производительно- стью в 100 раз выше, чем у IBM 704, и велась с огромным энтузиазмом. Этот компьютер, названный STRECH [24, 59], продавался на рынке как IBM 7030. Его принципиально новыми свойствами были: опережающий просмотр для считывания, декодирования, вычисления адресов и предварительная выбор- ка операндов нескольких команд; разделение памяти на два независимых банка, из которых можно было передавать данные в арифметические устрой- ства параллельно. Максимальная скорость пересылки данных в память и из нее при этом увеличивалась на коэффициент, равный числу банков памяти. Это было первым применением параллелизма в запоминающем устройстве и позволяло лучше сопрягать относительно медленную память на магнитных сердечниках с более быстродействующим процессором. Почти во всех после- дующих больших ЭВМ применялась банковская память (иногда называемая памятью с расслоением) такого рода. Первая вычислительная машина STRECH была поставлена в Лос-Аламос в 1961 г., но цели проекта все же не были до- стигнуты. Ее производство фактически оказалось для компании убыточным и после того, как были изготовлены семь систем (одна была установлена в Научночясследовательском центре атомного оружия в Олдемастоне, Велико- британия) , ЭВМ была снята с производства. Потенциальным покупателям си- стемы тогда продавалась более медленная, но широкоизвестная серия 7090 фирмы IBM. После опыта с системой STRECH казалось, что фирмы IBM потеряла вся- кий интерес к высокоскоростным вычислениям. В 1964 г. она объявила о серии 360, но в ней не было машины, по производительности сравнимой с машиной CDC 6600, выпущенной в том же году. Драматический успех машин CDC 6600, которыми заменялись машины IBM 7090, и превращение в связи с этим большинства крупных научных центров в конкурентов заставило фирму IBM принять ответные меры. Однако только в 1967 г. в машине IBM 360/91 [17] была достигнута производительность в два раза больше той, которой обладала машина CDC 6600. Эта ЭВМ имела средство опережающего про- смотра, заимствованное у системы STRECH, а также, как и в CDC 6600, в ней использовались отдельные исполнительные устройства для вычислений с пла- вающей точкой и целочисленных адресных вычислений, каждое из которых 22
было конвейерным и могло работать параллельно. Кроме того, был приме- нен принцип конвейеризации для увеличения скорости обработки команд, последовательных операций выборки, декодирования команд, адресных вы- числений и выборки операндов, которые совмещались с последующими командами. Таким образом, несколько команд находились одновременно на различных стадиях выполнения по мере их прохождения через конвейер. Од- нако в 1969 г. появилась вычислительная машина CDC 7600, которая превос- ходила по производительности машину IBM 360/91 почти в два раза. Ответом фирмы IBM был выпуск в 1971 г. машины 360/195, которая имела сравни- мую с CDC 7600 производительность. В машине IBM 360/195 [163] сочета- лась архитектура машины IBM 360/91 с кэш-памятью, которая применялась в машине IBM 360/85. Идея введения быстродействующей буферной памяти (или кэш-памяти) между медленной основной памятью и арифметическими регистрами возвращает нас к вычислительной машине ATLAS фирмы Ferranti [78]. В полупроводниковой кэш-памяти (360/85) емкостью 32 768 слов с временем выборки 162 нс содержались самые последние используемые дан- ные в виде блоков по 64 байта. Если данные, затребованные командой, от- сутствовали в кэш-памяти, тогда блок, содержащий их, выбирался из более медленной основной памяти (памяти на магнитных сердечниках емкостью 4 Мбайта и временем выборки 756 нс, поделенной на 16 независимых бан- ков) и заменял в кэш-памяти наименее часто используемый блок. Было об- наружено, что во многих вычислениях большого объема обращения к памяти концентрируются вокруг ограниченных областей адресного пространства. В этом случае большинство обращений будет производиться к данным, находя- щимся в быстрой кэш-памяти и, следовательно, производительность медлен- ной памяти емкостью 4 Мбайта будет выше той, которой обладает быстрая кэш-память. В 1970 г. Джин Амдаль, который был главным архитектором серии IBM 360 [5], организовал свою компанию (Amdahl Corporation) для производ- ства ЭВМ, которые были бы совместимыми с машинами IBM 360 по системе команд и могли бы использовать программное обеспечение фирмы IBM. Эти машины явились важным шагом в развитии вычислительной техники и па- раллелизма. Машина этого ряда AMDAHL 470V/6 была первой, в которой применялись большие интегральные схемы (БИС) в качестве логических схем процессора (биполярные ЭСЛ-схемы с плотностью 100 схем на кристал- ле) . По этой причине эту машину иногда называют компьютером четвертого поколения. Шесть таких машин были выпущены в 1975 г., из которых пер- вые две были установлены в NASA и Мичиганском университете. С использо- ванием БИС размеры машины сократились примерно на одну треть размера сопоставимой машины IBM 360/168, в которой использовались схемы с го- раздо меньшим уровнем интеграции. Несмотря на то, что арифметические устройства в этой машине не были конвейерными, высокая пропускная спо- собность достигалась посредством конвейерной обработки команд. Выполне- ние команд делилось на 12 подопераций, для которых применялись 10 от- дельных схем. В случае беспрепятственного потока новая команда может вы- бираться через два тактовых периода (или 64 нс), следовательно, до шести команд одновременно могут находиться в различных фазах выполнения (иными словами, в параллельном выполнении). Применение быстродейству- 23
ющей биполярной буферной или кэш-памяти емкостью 16 кбайт (время вы- борки 65 нс) позволило улучшить эффективное время обращения к основной памяти емкостью до 8 Мбайт на МОП-структурах (время выборки 650 нс). 1.1.3. Конвейерные векторные ЭВМ В 1972 г. Сеймор Крей покинул фирму Control Data и организовал свою компанию Cray Research с целью выпуска самой быстродействующей ЭВМ в мире. В чрезвычайно короткое время — за четыре года — была спроектирова- на и изготовлена машина CRAY-1, первая модель которой была поставлена в Лос-Аламосскую научную лабораторию в 1976 г. Вычислительная машина CRAY-1 [58, 194] продолжала тенденции развития машин CDC 6600 и 7600. В ней были предусмотрены 12 функциональных устройств, в настоящее вре- мя все конвейерные, самый короткий тактовый период в 12,5 нс и биполяр- ная память из 16 банков емкостью 1 млн. слов с временем цикла 50 нс. Прин- ципиальная особенность заключалась в введении восьми векторных регист- ров, где в каждом можно было хранить 64 числа с плавающей точкой (дли- ной 64 разряда), и набора приблизительно 32 машинных команд для манипу- лирования и выполнения арифметических действий над этими векторами. Три функциональных устройства резервировались для векторных операций (сдвига, логики и сложения) и еще три предусматривались для скалярных команд (сложения с плавающей точкой, умножения и обратной аппроксима- ции) . Машина CRAY-1 относится к векторным компьютерам и выбрана нами для подробного анализа в разд. 2.2. Это была первая конвейерная векторная ЭВМ, имевшая коммерческий успех; было заключено около 14 торговых сделок в течение первых четырех лет после введения его в эксплуатацию. Из- меряемая скорость машины CRAY-1 регулярно достигала 130 Мфлоп/с1 (миллионов операций с плавающей точкой в секунду) на соответствующих задачах (например, перемножения матриц). Двумя другими конвейерными векторными компьютерами, созданными до появления машины CRAY-1, являются машины STAR 100 фирмы CDC и ASC фирмы Texas Instruments [103, 228]. Машина STAR 100 [100] была за- думана примерно в 1964 г. как процессор для векторов с набором команд, базирующимся на языке Айверсона APL [121], который вместе с конвейер- ной обработкой был в состоянии поддерживать скорость обработки на уров- не 100 Мфлоп/с с длинными векторами, являющимися широко распростра- ненными для многих научных задач в Ливерморской лаборатории им. Ло- уренса (LLL). Разработка проекта началась в 1967 г. после получения согла- сия от лаборатории и длилась шесть лет, до 1973 г., когда начала функциони- ровать первая машина, а в 1974 - 1975 гг. в Ливерморскую лабораторию бы- ли поставлены две машины. У машины было два существенных недостатка, один был обусловлен выбранной технологией, а другой был заложен в са- мом проекте, что привело к замедлению разработки и от которых не могли избавиться с момента начала работы (середины 60-х годов) до момента из- готовления. Полупроводниковая память уже превосходила по параметрам используемую в машине память на магнитных сердечниках с временем вы- 1 Mflop/s - millions of floating point operations per second. 24 I
борки 1,2 мкс, а тактовый период машины (80 нс) был довольно большим по сравнению с конкурирующими ЭВМ, выпущенными к моменту изготовле- ния STAR 100 в середине 70-х годов. Более того, последовательные ЭВМ с лучшей организацией, такие как CDC 7600 и IBM 360/195, имели гораздо бо- лее быстрые арифметические устройства для выполнения скалярных опера- ций и операций над любыми векторами, за исключением длинных векторов. Машина STAR 100 могла производить обработку быстрее, чем ее более уни- версальные конкуренты, только в случае операции с векторами нескольких сотен или тысяч элементов и то при очень тщательно подготовленной про- грамме. Поэтому было изготовлено четыре машины, которые поступили в правительственные лаборатории (две в LLL и одна в NASA), и поддержива- лись фирмой в качестве эксплуатационного средства в сети связи CYBERNET. Ни один экземпляр машины STAR 100 не поступил на рынок. Несмотря на эти недостатки, машина STAR 100 была полностью переведена на БИС с ис- пользованием полупроводниковой памяти и поступила на рынок в 1979 г. как CYBER 203Е [134]. Затем она была переименована в CYBER 205 и сей- час является серьезным конкурентом машины CRAY-1. Мы рассматриваем ее в качестве второго примера конвейерной архитектуры в разд. 2.3. Вычисли- тельная машина CYBER 205 отличается от CRAY-1 обработкой всех вектор- ных команд, поступающих в/из основной памяти (в машине CYBER 205 нет векторных регистров); в ней имеются многочисленные универсальные кон- вейеры (в противоположность специализированным конвейерам в CRAY-1). Первые экземпляры были проданы Метрологическому центру Великобрита- нии в 1981 г. Разработка машины ASC [245] фирмы TI была начата примерно в 1966 г. как ЭВМ для высокоскоростной обработки сейсмических данных, включая очень частое применение преобразований Фурье [245]. Это был интересный проект, базирующийся на одном, двух или четырех идентичных универсаль- ных конвейерах, причем каждый мог выполнять все элементарные команды над векторными операциями. Команды выбирались из одного или двух бло- ков обработки команд. Поэтому здесь мы имеем еще один пример мульти- процессорной обработки. Полупроводниковая память состояла из восьми банков и имела время цикла 320 нс. Проектная скорость, равная 50 Мфлоп/с при четырех магистралях, работающих в оптимальном режиме, была теоре- тически достижимой. Число арифметических магистралей и блоков команд варьировалось в зависимости от требований покупателя. Первая работающая машина TIAS появилась в 1973 г., и было изготовлено около семи экземпля- ров, большинство из которых использовалось фирмой и ее компаньонами. Были заключены самые значительные торговые сделки: на разработку четы- рехмагистральной конфигурации (в единственном экземпляре) для геофизи- ческой лаборатории динамики жидкости в г. Принстоне и двухмагистральной конфигурации для научно-исследовательской лаборатории ВМС, г. Вашинг- тон. Однако после установки семи систем фирма Texas Instruments прекра- тила производство этой ЭВМ. Так же, как и в машине STAR 100, ее слабым местом являлось скалярное устройство, которое было существенно медлен- нее, чем у конкурирующих ЭВМ, подобных CDC 7600. 25
1.1.4. Проект SOLOMON и другие разработки Главной вехой в истории параллелизма, конечно, является статья Д. Слот- ника и соавторов [208], названная SOLOMON computer. Эта концепция ЭВМ описана также Дж- Грегори и Р. Макрейнолдсом [89] и возвращает нас об- ратно к идеям С. Унгера [238]. В проекте SOLOMON Simultaneous Operation Linked Ordinal Modular Network) описывается двумерная матрица, состоя- щая из 32 х 32 процессорных элементов, каждый из которых обладал памя- тью емкостью 128 32-разрядных чисел и АУ с последовательно-разрядной обработкой под управлением одиночного потока команд центрального уст- ройства управления. В противоположность развивающемуся направлению последовательный компьютер - векторный конвейерный компьютер концеп- ция проекта SOLOMON представляла собой радикальное изменение в пони- мании архитектуры ЭВМ и имела существенное влияние как на научно-иссле- довательскую работу в области ЭВМ, так и на ее проектирование. Компьютер SOLOMON никогда не был изготовлен в том виде, как это описывалось в статье 1962 г., но на его основе были созданы не только машины ILLIAC IV и процессорные матрицы с плавающей точкой РЕРЕ фирмы Burroughs, но также системы STARAN, фирмы Goodyear Aerospace и DAP фирмы ICL, представляющие собой матрицы одноразрядных процессоров и часто назы- ваемые ассоциативными процессорами. В 1966 г. Управление перспективных исследований (ARPA) министерства обороны США заключило контракт с Иллинойским университетом на проект машины типа SOLOMON, которая затем стала известна как ILLIAC IV. Пер- воначальный проект описывается Д. Слотником в важном сообщении „Не- обычные системы”, [206], а также в работах [15, 156]. Компьютер должен был состоять из четырех квадрантов и в каждом предусматривалось свое устройство управления, интерпретирующее один поток команд для 64 ПЭ. Каждый ПЭ должен был содержать 2000 64-разрядных слов в тонкопленоч- ной памяти, а все процессорные элементы каждого квадранта сгруппировы- вались в матрицу 8x8. Четыре квадранта объединялись посредством парал- лельной шины ввода-вывода и поддерживались вспомогательной памятью большой емкости на магнитном диске, из которого можно считывать задания и в который можно заносить результаты. Предусматривалось выполнение операций с плавающей точкой каждый из 256 ПЭ в течение 240 нс, вследствие чего планируемая максимальная скорость должна была составлять 1 Гфлоп/с. Хотя только один квадрант был изготовлен, а максимальная скорость обра- ботки равнялась приблизительно 50 Мфлоп/с, выпуск машины ILLIAC IV оказал значительное влияние на развитие технологии и архитектуры ЭВМ. Проект фактически изготовленной машины ILLIAC IV и ее использования в реальных приложениях описываются в работах [70, 207]. Извилистая история машины ILLIAC IV описана Г. Фолком в статье [67]. Эта машина была первой, в которой применялись полупроводниковые кри- сталлы памяти (256-разрядные логические вентили фирмы Fairchild) для ос- новного запоминающего устройства; выявились недостатки памяти на тон- ких пленках, предложенных в самом начале. Первоначально планируемое число вентилей на кристалле равнялось приблизительно 20 (средняя степень интеграции), но потом пришлось сократить их примерно до 7 (малая степень 26
интеграции). Все это можно целиком приписать решению быть первым в ис- пользовании новых и более быстродействующих ЭСЛ-схем, отказавшись от отработанной транзисторно-транзисторной логики. В машине ILLIAC IV так- же впервые использовались 15-слойные печатные платы и методы машинного проектирования межсоединений и их развязки. Производство машины ILLIAC IV (сокращенной до одного квадранта) было поручено фирме Burroughs и в 1972 г. машина была поставлена в научно-исследовательский центр NASA (шт. Калифорния). Однако только в 1975 г. практически она была введена в эксплуатацию. Тактовый период ее удлинился с 40 нс, заложенных в проек- те, до 80 нс, что соответственно привело к снижению скорости выполнения всех операций. Возможно, машину ILLIAC IV рассматривают как неудачу, так как ее сто- имость в четыре раза выше первоначальной (по контракту), а достигнутая производительность почти в 10 раз ниже запланированной. Однако ее влия- ние было огромным, и мы, вероятно, увидим в архитектурах ЭВМ восьмиде- сятых годов большую схожесть с архитектурой ILLIAC IV, поскольку техно- логия значительно продвинулась вперед, что дает возможность сделать такие архитектуры практически выполнимыми. Машина ILLIAC IV была слишком претенциозной для технологических возможностей своего времени. Объем программного обеспечения ЭВМ, разрабатываемого совместно с разработкой машины ILLIAC IV, также был значительным. В него входило четыре языка, которые выражали параллелизм ЭВМ: алголоподобные TRAN QUIL [1] и GLYPNIR [147], паскалеподобный TRANQUIL [175] и фортраноподобный GFD FORTRAN [210]. Велась большая работа по разработке пригодных ал- горитмов для широко используемых математических задач, содержащих па- раллелизм, таких как обработка матриц и решение уравнений в частных про- изводных (см., например [141]). Фирма Burroughs сыграла главную роль в разработке матричноподобных параллельных процессоров. Все началось с машины ILLIAC IV, для которой фирма Burroughs была подрядчиком по изготовлению системы в период 1969 — 1973 гг. Далее фирма участвовала в разработке параллельного про- цессора РЕРЕ для вооруженных сил США (поставка началась в 1976 г.) и кульминационным моментом стала объявленная в 1977 г. разработка процес- сора BSP (Burroughs Scientific Processor), которая представлялась доволь- но рискованным коммерческим предприятием с целью выхода на общий на- учный рынок и вступлением в конкурентную борьбу с проектами кон- вейерных ЭВМ фирмы Cray Research (CRAY-1) и Control Data Corporation (CYBER 205). Рассмотрим связь проектов PEPE и BSP c ILLIAC IV. Машина ILLIAC IV предназначалась для решения уравнений в частных производных и представ- ляет собой матрицу, состоящую из 8 х 8 процессорных элементов, для обра- ботки 64-разрядных слов с плавающей точкой, причем каждый ПЭ, содержа- щий собственную память емкостью 2 кслов и работающий в синхронном ре- жиме с ближайшими соседними ПЭ, управляется одним потоком команд, прошедшим обработку в центральном устройстве управления. Система РЕРЕ (Parallel Element Processor Ensemble) была предназначена для управления системой радиолокационного обнаружения и противоракетной обороны [20, 46, 242]. Началом разработки системы РЕРЕ явились работы, проводимые 27
фирмой Bell Labs, по созданию адресуемой по содержимому (ассоциативной) памяти с распределенной логикой [149], пригодной для обработки чисел с плавающей точкой [48], что привело к созданию примерно в 1972 г. экспери- ментальной машины (РЕРЕ IC) с 16 32-разрядными процессорными элемен- тами для операций с плавающей точкой [47]. Промышленный образец маши- ны, изготовленный в полном объеме фирмой Burroughs, представлял систе- му из 288 ПЭ с низкой степенью связности, где каждый содержал три процес- сора (по одному для ввода радиолокационных сигналов, обработки данных и вывода сигналов управления), управляемых в синхронном режиме тремя устройствами управления (по одному на каждый тип процессора в ПЭ). Эти три устройства управления подключались к трем стандартным каналам вво- да-вывода машины CDC 7600, которая являлась главной для всей системы. Во время работы каждый идентифицированный флажок становился ответ- ственным за один ПЭ и, вследствие того, что отсутствовали упорядоченные соединения между этими флажками, не было никаких прямых связей между ПЭ. В случае необходимости связь между ПЭ устанавливалась через блоки па- мяти устройств управления. Как тогда говорилось, матрица процессоров по- лучала инструкции, почему и было придумано слово ансамбль для такой структуры. Поскольку каждый ПЭ имел скорость обработки слов с плава- ющей точкой 1 Мфлоп/с, то вся система РЕРЕ могла бы обладать потенциаль- но максимальной скоростью вычислений в 288 Мфлоп/с. По более реалистич- ным оценкам она составляет примерно 100 Мфлоп/с [242]. Вариант системы РЕРЕ на 36 ПЭ был поставлен в 1976 г. в исследовательский центр перспек- тивной техники ПРО (в г. Хантсвилле, шт. Алабама). Одной из проблем, связанной с машиной ILLIAC IV, является задержка, возникающая при маршрутизации длинных соединений для пересылки дан- ных через матрицу, обусловленная ограниченным числом соединений между 64 процессорами и 64 банками памяти ПЭ (каждый ПЭ имеет связь только с ближайшими соседними ПЭ). В коммерческом проекте BSP фирма Burroughs сократила число процессоров до 16, а число банков памяти до 17 [10, 125], что сделало возможным установление соединений между любым процессо- ром и любым банком памяти посредством ’’выравнивающей сети”. Выбор числа банков памяти, отличного от числа процессоров, позволяет использо- вать алгоритмы отображения, сокращающие число конфликтов памяти, кото- рые могут возникать при обычных операциях с матрицами. Сами ПЭ пред- ставляют собой последовательно-организованные процессоры с плавающей точкой с временем выполнения операции сложения или умножения 320 нс для получения 16 результатов (по одному в каждом ПЭ). Полагают, что тща- тельно продуманное совмещение операций считывания, записи и арифмети- ки вместе с предоставлением общего банка памяти для соединений с ПЭ поз- волит устранить большинство узких мест в системе. В связи с этим спроекти- рованная система BSP при решении большинства задач могла бы обеспечить большую долю своей максимальной скорости обработки 50 Мфлоп/с. Систе- ма BSP подробно рассматривается в разд. 3.4, с 1980г. ни один экземпляр ее не был продан на рынке. Управление перспективного планирования НИР (ARPA) и NASA совмест- но организовали институт новых методов вычислений (IAC) с целью под- держки машины ILLIAC IV. В 1977 г. институт опубликовал предложения на 28
проект машины, названной PHOENIX [71], которая должна заменить ILLIAC IV в середине 80-х годов. Сотрудники института предвидели потребность в машине с производительностью 1О10 оп./с для решения трехмерных задач аэродинамического потока с достаточной разрешающей способностью. Про- ект PHOENIX можно было бы описать как 16 машин ILLIAC IV, каждая из которых выполняет операции своего потока команд под управлением цент- рального устройства управления (УУ). Если каждый ПЭ сможет выдавать ре- зультат через 100 нс (благоразумное допущение с учетом технологии 1980 г.), то все 1024 ПЭ смогут обеспечить необходимую производительность 101и оп./с. Кроме того, NASA поручило фирмам CDC и Burroughs подготовить два других проекта на создание машин, которые заменят ILLIAC IV и сформиру- ют средство цифрового аэродинамического моделирования NASF в середине 80-х годов [211]. Проект фирмы CDC базируется на сверхскоростной четы- рехконвейерной машине CYBER 205, работающей в синхронном режиме, и пятого конвейера в качестве оперативного резерва, который может быть под- ключен в случае обнаружения ошибки. Каждый конвейер может выдавать один 64-разрядный результат или два 32-разрядных результата каждые 8 нс. Поскольку каждый результат может быть сформирован в процессе выполне- ния соответствующих трех операций, то максимальная скорость вычислений будет составлять 3 Гфлоп/с. Кроме того, в состав машины входит быстрый скалярный процессор с длительностью такта 16 нс. Проект фирмы Burroughs можно рассматривать как усовершенствование архитектуры системы BSP, которая базируется на 512 ПЭ, подключаемых к 521 банку памяти (ближайшее простое число, большее 512). В отличие от ILLIAC IV здесь каждый ПЭ имеет свой собственный процессор команд. Од- ни и те же команды выдаются всем процессорам, но ЭВМ разрешает их вы- полнение в различной последовательности, в соответствии с ситуацией, зави- сящей от данных программы, которые могут быть неодинаковыми в разных процессорах. При наличии 512 процессоров и планируемом времени выпол- нения операций сложения с плавающей точкой, равном 240 нс, и умножения, равном 360 нс, можно ожидать максимальной скорости обработки около 1 — 2 Гфлоп/с. Планируется применить ЭСЛ-схемы с тактовым периодом 40 нс. Первоначальный проект машины SOLOMON [208] представлял собой матрицу 32 х 32 одноразрядных процессоров с 4096-разрядной памятью в каждом, которые выполняли арифметические действия над 1024 числами па- раллельно в разрядно-последовательном режиме. Его описание нашло доста- точно точное отражение в опытной модели системы DAP фирмы ICL, которая в 1972 г. начала разработку, а в 1976 г. получила заказ на ее изготовление [73, 186]. Первый промышленный образец был установлен в Колледже королевы Марии (Лондонский университет) в 1980 г. Он включал в себя матрицу 64 х 64 ПЭ и модуль памяти главной машины 1CL 2980. Как и в проекте SOLOMON и ILLIAC IV, процессорные элементы, собранные в виде двухмер- ной матрицы, подключаются только к ближайшим соседним элементам. Пер- воначально в системе DAP применялись схемы малой степени интеграции, со- держащие 16 ПЭ и их память на одной печатной плате. Схемы большой сте- пени интеграции с четырьмя ПЭ на кристалле позволяют создавать большие матрицы, и уже предложены системы DAP, содержащие 1282 или 25 62 ПЭ. Мы подробно рассматриваем DAP фирмы ICL в разд. 3.3. Важное свойство 29
технического проекта машины DAP состоит в том, что логические схемы про- цессорного элемента устанавливаются на той же печатной плате, что и относя- щаяся к нему память. Привлекательной представляется идея разработки ПЭ и его памяти на одном кристалле СБИС. При использовании модели фон Ней- мана логика и память находятся как концептуально, так и конструктивно в различных блоках (или даже отдельных стойках), что приводит к достаточно серьезным осложнениям, если не обеспечивается соответствующая скорость передачи данных между этими блоками. В машине DAP, как это следует из самого названия системы, логика распределена в устройстве памяти, сосед- ствуя с данными, которыми она должна оперировать. С появлением СБИС- технологии, позволяющей получать приблизительно 10s логических вентилей на кристалле, размещение логических схем в памяти стало практически осу- ществимым. Действительно, это необходимо, в частности, для решения проб- лем, связанных с межсоединениями кристаллов. Г. Стоун [212] предложил компьютер с функциональной памятью (logic- in-memory), или памятью с встроенной логикой, в котором каждый из 16 сегментов килобайтной кэш-памяти машины IBM 360/85 должен был обла- дать специализированной логикой, что давало бы возможность производить параллельную обработку 16 сегментов. Эту память можно было бы использо- вать в качестве ассоциативной или для параллельного выполнения простых арифметических операций над 16 элементами. В некотором приближении это было предложением по созданию некой системы DAP с 16 ПЭ без внутренних связей между процессорами. У. Кауц предложил компьютер с памятью, обла- дающей большей функциональной способностью, названной улучшенной ас- социативной памятью (АСАМ); память обладала более широкими возмож- ностями и содержала специальные схемы для выполнения операций сорти- ровки, обращения матриц, быстрого преобразования Фурье, корреляции и т. д. [135]. Конструкция кристаллов БИС должна была быть в виде регуляр- ных матриц с универсальными логическими средствами, реализующими, по возможности аппаратно, специальные алгоритмы, созданные для параллель- ных вычислений, например быстрого преобразования Фурье [172] и обраще- ния матриц [171]. 1.1.5. Ортогональные и ассоциативные ЭВМ Другой работой, повлиявшей на развитие принципов параллелизма, яви- лась статья У. Шумана, в которой описана организация ’’ортогонального ком- пьютера” [200, см. также 201]. Арифметические устройства обычного после- довательного компьютера выбирают данные из памяти последовательно в форме слов (например, 32-разрядных чисел с плавающей точкой), и к 1960 г. в большинстве ЭВМ, предназначенных для научных исследований, осуще- ствлялась параллельная обработка разрядов слова. Такую процедуру можно описать как пословно-последовательную обработку данных. У. Шуман выяс- нил, что во многих задачах поиск информации осуществлялся по нескольким разрядам каждого слова, вследствие чего пословно-последовательная обра- ботка была эффективна. Поэтому он предлагал осуществлять обращение к памяти в ортогональном направлении, т. е. ко всем словам разрядными сек- циями. Если разряды памяти представить в виде двухмерной матрицы с чис- 30
лом разрядов, равным fc-слову, которое формирует к-ю горизонтальную сто- рону, тогда /-разрядная секция представляет собой разрядную последователь- ность, сформированную из /-го разряда каждого числа, т. е. /-й вертикальный столбец матрицы. В ортогональном компьютере один ПЭ предназначается для каждого слова памяти, а все разряды разрядной секции могут обрабатывать- ся параллельно. Это называется разрядно-последовательной и пословно-па- раллельной обработкой. В ортогональной ЭВМ предусматривается ’’горизон- тальный блок” для выполнения пословно-последовательной разрядно-парал- лельной операции и отдельный ’’вертикальный блок” для разрядно-последо- вательной/ пословно-параллельной операции. Идея параллельного тестирования слов привела к мысли о создании ассо- циативной или адресуемой по содержимому памяти, в которой элемент отыс- кивается по той части своего содержимого, которая соответствует заданной битовой комбинации (или маске), а не по адресу ячейки памяти. В полно- стью ассоциативной памяти отсутствуют средства обращения к элементу дан- ных по его позиции в запоминающем устройстве. Однако во многих систе- мах используются обе формы адресации. Множество различных процессоров на основе ассоциативных устройств рассмотрено в работах [233, 257]. Для более полного изучения читатель может обратиться к книгам [76, 232]. Мы будем рассматривать только два процессора (OMEN и STARAN), которые были предназначены для продажи. Серия машин OMEN (Orthogonal Mini EmbedmeNt), созданных фирмой Sanders Associates для обработки сигналов и описанных Л. Хигби [98], пред- ставляла собой коммерческую реализацию концепции ортогонального ком- пьютера. В серии OMEN-60 использовалась машина PDP-11 в качестве обычно- го горизонтального арифметического устройства и матрица на 64 ПЭ в каче- стве вертикального ассоциативного АУ, которое работало с байтовыми, а не разрядными секциями. В зависимости от модели машина обладала по выбо- ру либо разрядно-последовательной арифметикой с восемью разрядами па- мяти в каждом ПЭ, либо аппаратно реализованной арифметикой с плава- ющей точкой с восемью 16-разрядными регистрами и пятью регистрами мас- ки. Между ПЭ встраивалась логика для изменения последовательности бай- тов в секции на обратную или для выполнения полной тасовки или цикли- ческого сдвига. Еще одной ЭВМ, унаследовавшей ортогональные концепции, была STARAN фирмы Goodyear Aerospace, которая была задумана в 1962 г., закончена в 1972 г., а к 1976 г. было продано четыре экземпляра [17]. В машине STARAN применялась типичная конструкция из четырех матричных модулей, управля- емых последовательной машиной PDP-11; каждый модуль содержал 256 про- цессорных элементов и общую память емкостью от 64 кбит до 64 Мбит. В от- личие от проекта SOLOMON память в Машине STARAN не закреплялась за определенным ПЭ. Вместо этого между ПЭ и памятью была вставлена гибкая коммутационная сеть (FLIP). Программа управления посредством 256-раз- рядного кода выбирает из памяти 256-разрядную секцию в виде специфици- рованной комбинации. Эта выбранная комбинация могла, например, обра- титься к запоминающему устройству в виде многомерного массива с пере- менной размерностью или переформировывать данные в последовательность, необходимую для БПФили других важных цифровых алгоритмов. Соединения 31
между ПЭ формировались посредством пересылки 256-разрядных секций че- рез сеть FLIP, и, таким образом, за минимальное время достигалась высоко- эффективная гибкая установка внутренних соединений в зависимости от за- дач программиста. Машина STARAN, подобно другим разрядно-ориентиро- ванным компьютерам, была наиболее эффективной при выполнении опера- ций логики и целочисленной арифметики со словами укороченной длины. На- иболее приемлемой является цифровая обработка изображений, при которой образ делится на миллионы (6 — 12)-разрядных пикселов (элементов изо- бражения) . Первый образец машины STARAN был установлен на Римской базе ВВС с целью именно такого использования. Было предложено использо- вать ЭВМ также для решения задач управления воздушным движением. Концепции машины STARAN и DAP были объединены в предложениях фирмы Goodyear Aerospace по созданию машины МРР (Massively Parallel Processor), которая включала в себя матрицу 132 х 128 одноразрядных дву- мерно соединенных ПЭ. Эта машина предназначена, главным образом, для обработки фотоснимков, поступающих со спутника со скоростью 106 пик- сел/с. Восьми- и двенадцатиразрядная целочисленная арифметика предназна- чена для выполнения операций со скоростью в несколько гигаопераций с пла- вающей запятой в секунду, а 32-разрядная арифметика с плавающей точкой — со скоростью от 200 до 400 Мфлоп/с. 1.1.6. Дешевые специализированные ЭВМ Другим направлением развития ЭВМ, включающим параллелизм, была разработка относительно дешевых специализированных ЭВМ для обработки массивов данных, которые часто называют матричными процессорами. Заме- тим, что в данном контексте это название не подразумевает построения архи- тектур ЭВМ на базе матриц процессоров; фактически в большинстве проек- тов используется принцип конвейеризации. Основными применениями этих ЭВМ являются обработка сигналов, анализ сейсмологических данных, наибо- лее широко используемый алгоритм, с ориентацией на который проектирует- ся аппаратное обеспечение быстрого преобразования Фурье. Первыми такими процессорами были усовершенствованные 16-разрядные микропроцессоры, в которых осуществлялась параллельная выборка как данных, так и команд. Для достижения производительности примерно 5 х 104 оп./с была применена биполярная технология. Следующей фазой разработки явилось проектирова- ние специализированных ’’функциональных ящиков” для БПФ и подобных алгоритмов. Функциональные ящики, в которых используется параллелизм, фактически содержат многочисленные сумматоры и устройства перемноже- ния, соединенные в соответствии с применяемым алгоритмом. Управление функциональными ящиками осуществляется посредством микропрограмм, устанавливаемых на заводе. Такие машины были очень негибкими, но они могли обеспечить почти 10-кратное увеличение производительности, доведя ее приблизительно до 0,5 Моп./с (миллионов операций в секунду). В 1973 г. появилось новое поколение матричных процессоров, в которых многочисленные устройства обработки, объединенные внутри ограниченным числом шин данных, работали в асинхронном режиме под общим контролем центрального устройства управления. Таким образом, достигалась скорость 32
обработки примерно 5 Моп./с, однако асинхронная работа создавала две боль- шие проблемы, связанные с синхронизацией и невоспроизводимостью состо- яний при проверке программ. К наиболее успешным матричным процессорам относится АР-120В фирмы Floating Point Systems, которая обратилась вновь к принципу синхронной ра- боты [94]. Компания была основана в 1970 г., а машина выпущена в 1976 г., и к 1980 г. было установлено примерно 1000 таких систем. Матричный про- цессор АР-120В, который мог быть подключен либо к мини-ЭВМ, либо к большой ЭВМ в качестве главной, выполняла арифметические действия с плавающей точкой над 38-разрядными числами в отдельных конвейерных устройствах умножения и сложения, а счетные и адресные вычисления осуще- ствлялись в независимом устройстве целочисленной арифметики. Три запо- минающих устройства (для данных, таблиц и программ) и два сверхопера- тивных ЗУ на регистрах обеспечивались многочисленными соединениями, проложенными между каждой памятью и каждым устройством арифметики. Все узлы машины управлялись в течение каждого тактового цикла с помо- щью 64-разрядной команды, которая обеспечивала точно воспроизводимые состояния и в отличие от многих ранее выпущенных машин давала возмож- ность запрограммировать ЭВМ для разнообразного применения. Таким обра- зом, происходило развитие специализированного направления разработки ма- шины с дешевым универсальным процессором обработки матриц. Типичная скорость обработки составляет 5 — 10 млн./с, приблизительная стоимость — 50 000 фунтов стерлингов (цена на 1980 г.). Эти вычисления являются высо- коэффективными в стоимостном отношении и поэтому многие расчеты, яв- ляющиеся в настоящее время недопустимо дорогими в сфере промышлен- ного производства, станут обыденным явлением. Во многих отношениях АР-120В можно рассматривать как машину CRAY-1 для ’’неимущих”, кото- рая обладает одной десятой быстродействия и одной пятнадцатой ее стоимо- сти. Общая архитектура обеих машин очень схожа: она базируется на много- численных независимых конвейерных функциональных устройствах. В 1980 г. фирма FPS объявила о производстве присоединенного процессора EPS-164, который представляет 64-разрядный вариант машины АР-120В с оперативной памятью, расширенной до 1,5 ° 106 64-разрядных слов. Скорость обработ- ки осталась прежней. Машина АР-120В фирмы EPS детально разбирается в разд. 2.4. 1.2. КЛАССИФИКАЦИЯ ПРОЕКТОВ При обсуждении истории параллелизма мы смогли убедиться, что было предложено большое разнообразие различных параллельных архитектур, зна- чительная часть которых была реализована, по крайней мере, эксперимен- тально. Однако попытки навести некоторый порядок в этом вопросе посред- ством классификации проектов не имели успеха, и на 1980 г. отсутствовала какая-либо полезная и приемлемая классификационная схема или соответ- ствующая нотация. Тем не менее мы приведем систематику М. Флинна [74] и Дж. Шора [202] в подразд. 1.2.2 и 1.2.3 соответственно, поскольку обе эти классификации обсуждались достаточно широко, и немалая часть относящей- ся к ним терминологии вошла в состав языка вычислительной науки. Пробле- Зак I /99 33
мой для этих классификаций является то, что некоторые хорошо отработан- ные архитектуры, в частности, пользующаяся большим успехом конвейерная ЭВМ, не совсем подходят для них, а другие, такие как машина DAP фирмы ICL, могут в равной степени подходить для нескольких различных групп. Один из подходов состоит в том, чтобы сосредоточить внимание на принципи- альных способах внедрения параллелизма в архитектуру реальных ЭВМ, т. е. на конвейерной обработке, дублирование процессоров и функциональном па- раллелизме. Само это разделение, появившееся как техническая реальность, формирует основу систематики, которой легче пользоваться, чем теорети- ческими концепциями Флинна и Шора. Первая стадия разработки любой удач- ной классификации — это попытка описать достоверно точно и кратко глав- ные характерные черты определенной архитектуры, а это требует приемле- мой нотации. Поэтому в подразд. 1.2.4 мы приводим такую нотацию, кото- рая дает возможность описать архитектуру в пределах одной строки текста. Для обсуждения архитектуры ЭВМ она играет такую же важную роль, какую играет химическая формула больших молекул в химии. Далее эта нотация применяется в подразд. 1.2.5 для получения структурной классификации последовательной и параллельной ЭВМ, обсуждаемых в этой книге. 1.2.1. Уровни параллелизма Как показывает история, параллелизм, применяемый для повышения эф- фективности ЭВМ с момента появления самых ранних проектов, использо- вался на нескольких определенных уровнях, которые можно было классифи- цировать следующим образом: 1. Уровень заданий: а) между заданиями; б) между фазами задания. 2. Программный уровень: а) между частями программы; б) в пределах циклов DO. 3. Командный уровень: между фазами выполнения команд. 4. Арифметический и разрядный уровень: а) между элементами вектор- ной операции; б) внутри логических схем арифметического устройства. На самом высоком уровне назначение вычислительной установки — в мак- симизации скорости обработки заданий. При упрощенном анализе каждое задание можно рассматривать как задание, поделенное на несколько последо- вательных фаз, каждая из которых требует различных программ и ресурсов системы. Типичными фазами могут быть: ввод исходной программы на язы- ке Фортран с диска или магнитной ленты; компиляция программы в объект- ный код; связь объектного кода с различными библиотечными подпрограм- мами; выполнение результирующего модуля; распечатка выходных файлов. Любая операция ввода-вывода является очень медленной по сравнению с вы- полнением программы, вследствие чего любая большая вычислительная си- стема обеспечивается несколькими каналами ввода-вывода или периферий- ными процессорами, которые могут осуществлять ввод-вывод параллельно с выполнением программ, а также комплектом дисководов и лентопротяжных устройств. Большинство систем имеет один процессор для выполнения про- грамм, но некоторые содержат два или более процессоров. Назначение опера- ционной системы (название, присвоенное машинной программе, которая управляет работой ЭВМ) — организовать разделение системных ресурсов 34
между различными заданиями. Обычно несколько программ (например, 5 — 10) размещается в быстродействующей памяти ЭВМ и, если имеется один процессор, только одна будет находиться в стадии выполнения. Как только этой программе потребуется медленное устройство ввода-вывода, например, чтение с диска, эта операция запускается в канал и выполняется другая про- грамма. Первая программа находится в режиме ожидания, пока не поступят необходимые данные; и затем управление вновь передается ей. Аналогично другие программы обязаны находиться в режиме ожидания. Таким образом, ввод-вывод одного задания совмещается с выполнением другого; в динами- ческом режиме случается, что для выполнения заданий в зависимости от тре- бований в определенное время коллективно используется ЭВМ. Вследствие отсутствия в таких операционных системах внутренней логичес- кой взаимозависимости выполнения программ, необходимо предусмотреть в них, чтобы различные фазы одного задания выполнялись последовательно и чтобы любой оператор ввода-вывода программы выполнялся, прежде чем начнет выполняться следующий. При некоторых обстоятельствах програм- мист может обеспечивать управление своими операциями ввода-вывода и ор- ганизовывать поблочное считывание данных из вспомогательной памяти. В этом случае он может использовать буферизацию для совмещения операций ввода-вывода своей программы с выполнением самой программы. К приме- ру, при тройной буферизации используются два канала и три блока данных присутствуют в запоминающем устройстве. Одновременно производятся сле- дующие действия: новый блок считывается в буфер 1 через канал ввода; но- вые значения, полученные процессором в результате работы с блоком дан- ных, помещаются в буфер 2; предыдущий блок вычисленных значений пере- писывается из буфера 3 через канал вывода. При вычислениях предусматри- вается циклическое изменение назначения буфера. Из изложенного мы можем уяснить для себя, что главным требованием архитектуры ЭВМ при распараллеливании на уровне заданий, является предо- ставление правильно сбалансированного набора дублированных ресурсов, ко- торые подходят под общую классификацию функционального параллелизма, широко используемого в вычислительной системе. При этом очень важно, чтобы во всех частях системы осуществлялось хорошее управление уровнем активности, чтобы можно было определить узкие места и в зависимости от обстоятельств расширять (или сокращать) ресурсы. Далее мы покажем типы параллелизма, которые могут возникать во время выполнения программы, представляющей одну из фаз заданий, рассмотрен- ных выше. В такой программе возможно разбиение кода на секции, которые являются совершенно независимыми друг от друга, и могут выполняться па- раллельно на различных процессорах и в мультипроцессорной среде (напри- мер, множество объединенных микропроцессоров). Некоторые секции неза- висимого кода могут распознаваться на основе логического анализа исходно- го кода, другие, представляющие зависимые данные, являются неизвестными До тех пор, пока не будет выполнена программа. В некоторых случаях раз- личные операции цикла могут быть независимыми друг от друга, даже если различные тракты проходят через условные операторы, содержащиеся в цик- ле. В этом случае в каждый микропроцессор засылается полный код, и раз- личные прогоны цикла выполняются параллельно благодаря наличию микро- 35
процессоров. Такая ситуация возникает при вычислениях методом Монте- Карло для невзаимодействующих частиц, которые часто применяются при расчетах в ядерной технике. Проблемы увязки программирования с такими объединенными микропроцессорами представляют собой активную сферу современных научно-исследовательских работ, и мы ожидаем, что в 80-е го- ды такие системы войдут в эксплуатацию. Все фирмы-изготовители ЭВМ, предназначенных для операций с вектора- ми чисел (Burroughs, Texas Instruments, CRAY), выпустили компьютеры Фортрана, которые распознают, когда цикл DO может быть заменен одной или несколькими векторными командами. Распознавание программным обеспечением этого определенного цикла DO представляется простым ска- лярным набором векторных операций и поэтому выполняется гораздо эф- фективнее машинными командами, ориентированными на такие операции. Характерной чертой архитектуры может быть использование либо конвейер- ных арифметических устройств в случае конвейерных векторных ЭВМ (на- пример, CYBER 205 и CRAY-1), либо дублированных процессорных элемен- тов в случае процессорной матрицы (например, DAP и BSP). На более низком уровне, как мы уже упоминали, обработку любой коман- ды можно разделить на несколько подопераций, а для совмещения подопера- ций разных команд можно использовать конвейерную обработку. Конвейер- ная обработка такого рода широко применяется во всех быстродействующих скалярных процессорах (например, ICL 2900, AMDAHL 470V/6) и в некото- рых процессорных матрицах (например, BSP). Обработка части команды от- ражает производительность АУ; эти части, в свою очередь, могут быть поде- лены на подоперации, обрабатываемые конвейерным методом (см. подразд. 1.3.1), и поэтому представляют пример параллелизма более низкого уровня. На самом низком уровне в самом АЛУ у нас имеется выбор: выполнять арифметические действия либо разрядно-последовательным способом, либо параллельно над всеми разрядами числа. Существуют промежуточные вариан- ты: например, можно производить логические операции над всеми разрядами байта1 параллельно, а выборку байтов числа последовательно. Такое решение проблем параллелизма на арифметическом и разрядном уровнях было пред- метом активных разработок в компьютерах первого поколения в 50-х годах. После того как примерно в 1955 г. арифметические действия с плавающей точкой стали стандартными, о параллелизме на самом низком уровне было повсеместно забыто. Однако с появлением в конце 70-х годов микропроцес- сора, который можно рассматривать как ЭВМ первого поколения на одном или нескольких кристаллах, это решение вновь стало важным. Более того, в желании изготавливать большие матрицы процессорных элементов, эффек- тивные в стоимостном отношении, виден возврат к разрядно-последователь- ной арифметике в некоторых больших ЭВМ, таких как STARAN и DAP. 1.2.2. Систематика Флинна М- Флинн основывает свою макроскопическую классификацию параллель- ной архитектуры не на структуре машин, а скорее на том, как в машине ее 1 Один байт - последовательность из восьми двоичных цифр (разрядов). 36
команды увязываются с обрабатываемыми данными. Поток определяется как последовательность элементов (команд или данных), выполняемая или обрабатываемая процессором. В соответствии с тем, являются ли потоки команд или данных одиночными или множественными, возникли четыре больших класса: 1. ОКОД — один поток команд — один поток данных. Это является пред- ставлением обычной последовательной ЭВМ фон Неймана, в которой имеется один поток команд (и поэтому практически только одно устройство обра- ботки команд), где каждая арифметическая команда инициирует, одну ариф- метическую операцию с одним потоком данных,’ логически связанных аргу- ментов и результатов. Не играет роли, применяется ли конвейерная обработ- ка для повышения скорости обработки команд или арифметических опера- ций. Это как раз то, что мы ранее называли последовательной скалярной ЭВМ, примерами которой являются CDC 6600 (неконвейерная); CDC 7600 (кон- вейерная арифметика); AMDAHL 470/6 (конвейерная обработка команд). 2. ОКМД — один поток команд — много потоков данных. В таких ЭВМ со- храняется один поток команд, но уже векторных, которые инициируют мно- гочисленные операции. Каждый элемент вектора рассматривается как член отдельного потока данных, исключая вырожденный случай векторов единич- ной длины, т. е. имеется много потоков данных. Этот класс поэтому включа- ет в себя все машины с векторными командами. Опять же не имеет значения, как реализована векторная обработка: посредством конвейеров или с помо- щью матриц процессоров. Примеры: машина CRAY-1 (конвейерная вектор- ная ЭВМ); ILLIACIV (процессорная матрица); DAP (процессорная матрица); OMEN-64 (процессорная матрица). 3. МКОД — много потоков команд — один поток данных. Этот класс, по- видимому, вакантен, так как подразумевается, что несколько команд рабо- тают одновременно с одним элементом данных. Хотя Флинн и указывает, что этот класс включает специализированную организацию потока, использую- щую много потоков команд с одиночной последовательностью данных, но никаких примеров по данному классу не приводит [74]. 4. МКМД — много потоков команд — много потоков данных. Много пото- ков команд предусматривают существование нескольких устройств обработ- ки команд и, следовательно, необходимо несколько потоков данных. Поэто- му этот класс включает в себя все формы мультипроцессорных конфигура- ций - от объединенных больших ЭВМ до больших матриц микропроцессоров. С нашей точки зрения трудность пользования вышеизложенной классифи- кационной схемы состоит в том, что она слишком широка: приписывает все параллельные ЭВМ, кроме мультипроцессорных, к классу ОКМД, т. е. все изучаемые в этой книге ЭВМ, и не указывает никакого различия между кон- вейерной ЭВМ и процессорной матрицей, архитектуры которых полностью различны. Так происходит потому, что классификация проводится по широ- кой функции (будет ли обеспечено выполнение явных векторных команд) и не является классификацией проекта (т. е. архитектуры). Подобно этому можно расклассифицировать все церкви в одну группу, потому что они пред- ставляют места богослужения. Конечно, это является широкой, имеющей си- лу группировкой, которая отделяет церкви от жилых домов, но она не пред- ставляется полезной архитектору, который желает выделить различия между 37
разными стилями церковной архитектуры по форме и украшению сводов и окон. В этой книге мы, подобно архитектору, заинтересованы в изучении де- талей организации и, следовательно, нуждаемся в более точной классификации. Кроме того, классификация является запутанной вследствие неопределен- ности в отношении потока данных. Это привело к тому, что конвейерная век- торная ЭВМ была помещена в класс ОКОД [ЮЗ], поскольку она обрабаты- вала один поток векторных данных, в класс ОКМД [74], как объяснялось выше, и в классы ОКМД и МКМД [86], так как в ЭВМ имелось конвейерное арифметическое устройство, которое можно рассматривать как эквивалент для параллельного выполнения множества команд над одиночным вектор- ным потоком данных или над множественным скалярным потоком. Даже если Флинн был прав, полагая, что конвейерная векторная ЭВМ попадает в класс ОКОД, указанная путаница наводит многих на мысль рассматривать та- кую ЭВМ как располагающуюся за пределами этой классификации. Поэтому, независимо от намерения Флинна, следующие термины и понятия стали обще- используемыми на языке научных работников в области ЭВМ: ОКМД — синоним матрицы процессоров, работающих в синхронном режи- ме под действием общего УУ. Заметим, что этот термин применяется, чтобы отделить архитектуру матричной структуры от конвейерной, и не включает в себя конвейерную ЭВМ. МКМД - синоним матрицы объединенных процессоров, каждый из кото- рых подчиняется своему собственному потоку команд, как указывалось в первоначальном определении Флинна. 1.2.3. Систематика Шора Классификация Шора, в отличие от классификации Флинна, базируется на том, как построена машина из своих составных частей. Было определено шесть различных типов машин, различаемых по цифровому обозначению (рис. 1.3). Машина I — обычная архитектура по фон Нейману с одним устройством, управления, устройством обработки (УО), памятью команд (ПК) и памятью данных (ПД). Все разряда слова выбираются из единственной ПД для их па- раллельной обработки в УО. Устройство обработки может содержать множе- ство функциональных устройств, которые могут быть, а могут и не быть конвейерными; поэтому зта группа включает в себя как конвейерную ска- лярную (например, CDC 7600), так и конвейерную векторную ЭВМ (напри- мер, CRAY-1), архитектурная схожесть которых уже отмечалась. Машина II — это машина I, за исключением того, что считывание данных из ПД производится из разрядной секции всех слов памяти, а не из всех раз- рядов одного слова, и УО организовано для выполнения операций разрядно- последовательным способом. Если память рассматривать как двумерную ма- трицу разрядов, где каждая строка содержит одно слово, то машина II счи- тывает вертикальную секцию разрядов, тогда как машина I — горизонталь- ную секцию. Примерами являются машины DAP фирмы ICL и STARAN. Машина III представляет собой комбинацию машин I и II. В ней содержит- ся двумерная память, из которой считывание можно осуществлять либо сло- вами, либо разрядными секциями; горизонтальное УО (гор. ОУ) обрабаты- 38
Рис. 1.3. Схематическое представление шести классов машин по Шору: I - пословно-последовательная, разрядно-параллельная; II — пословно-параллельная разрядно-последовательная; III (= I + II) — ортогональный компьютер; IV — несвязан- ная матрица; V - связанная матрица; VI - матрица с встроенной в памятьлогикой [202] вает слова, а вертикальное (верт. ОУ) — разрядные секции. В двух словах, она представляет собой ортогональную машину Шумана [201]. Как машину DAP, так и STARAN можно запрограммировать на выполнение функций ма- шина III, но поскольку они не имеют отдельных ОУ для обработки слов и разрядных секций, их нельзя отнести к этому классу. Серия машин OMEN-60 фирмы Sanders Associates является реализацией машины III с точным соот- ветствием упомянутому определению [98]. Машина IV получается путем дублирования УО и ПД машины I (называ- емых процессорными элементами), а команды к этому ансамблю ПЭ выда- ются единственным устройством управления. Хорошо известным примером является машина РЕРЕ. Отсутствие соединений между ПЭ ограничивает при- менимость машины, но делает дальнейшее наращивание ПЭ относительно простым. Машина V представляет собой машину IV с дополнительным оборудова- нием, в котором ПЭ устанавливаются в линию и обеспечиваются соединения каждого ПЭ с ближайшими соседними ПЭ. Это означает, что любой ПЭ может обращаться к словам в своей памяти и памяти непосредственных соседей. Примером такой машины является ILLIAC IV, в которой предусмотрена кратчайшая связь между каждым восемью ПЭ. Машина VI. Все машины I - V придерживаются концепции отдельной па- 39
мяти данных и устройств обработки вместе с шиной данных или коммутиру- ющим элементом между ними и, исключая некоторые реализации однораз- рядных процессоров машины II (например, DAP), содержат ПЭ и ПД на од- ной плате ИС. Машина VI, названная матрицей с функциональной памятью (памятью с встроенной логикой), представляет собой другой подход, преду- сматривающий распределение логики процессора по всему запоминающему устройству. Примерами могут служить как простые ассоциативные запоми- нающие устройства, так и сложные ассоциативные процессоры. Забыв на вре- мя о трудном случае с конвейерной векторной ЭВМ, мы можем сделать вы- вод, что машины II - V являются разновидностями ОКМД класса Флинна, и что машина I соответствует классу ОКОД. Однако, конвейерная векторная ЭВМ, для которой несомненно нужна своя категория, неудовлетворительно отражена в этой классификации, поскольку мы находим ее в той же группе, куда помещена конвейерная .скалярная ЭВМ без внутреннего распараллели- вания, не говоря уже о требовании к выполнению арифметических действий разрядно-параллельным способом. Мы также считаем эту классификацию не- удовлетворительной, так как классы машин обозначаются числами, которые не имеют никакого мнемонического или порядкового значения. Во многом она схожа с такой классификацией, в которой рептилии описаны как живот- ные класса VI и которую никак нельзя считать полезной для зоолога. 1.2.4. Структурная нотация Первым шагом при выработке классификационной схемы является опре- деление приемлемой нотации. Она должна быть более детальной, чем у Флин- на или Шора, чтобы иметь возможность дифференцировать ЭВМ, описыва- емые в этой книге, и обязательно учитывать успешные конвейерные проек- ты. Эта нотация является структурной и основывается на стенографии, ука- зывающей число блоков команд, исполнительных устройств и блоков памя- ти, способ их внутренней связи и тип управления. В этом отношении нотация очень похожа на химическую формулу, но описание ЭВМ более сложно: на- пример, в химии существует только один тип атома углерода1, тогда как в ЭВМ мы должны различать множество типов исполнительного устройства (целочисленной арифметики, арифметики с плавающей точкой, конвейерно- го, разрядно-последовательного и т. д.). Точное математическое определение синтаксиса нотации дается в нормальной форме Бэкуса (НФБ) в приложе- нии 1. Ниже мы приводим описание в виде руководства с примерами и даем семантику нотации. Нотация рассматривает ЭВМ как ряд функциональных устройств, манипу- лирующих данными, соединенными магистралями данных, и работающих под управлением блоков команд. Запишем простейший пример последова- тельной ЭВМ фон Неймана в структурной нотации: С = 1[Е-М], которая означает, что машина С должна иметь одно устройство обработки команд I, управляющее устройствами, заключенными в квадратные скобки. 1 Заметим, что все три естественно возникающих изотопа углерода имеют одну и ту же электронную структуру и поэтому одни и те же химические свойства. 40
Этими устройствами являются: одно устройство исполнения Е, выполняю- щее арифметические действия и соединенное единственной магистралью дан- ных (обозначением является тире) с одним небанковским блоком памяти М. Из приведенного примера можно видеть, что наша нотация схожа в глав- ном с уровневой нотацией коммутации процессор — память Белла и Ньюэл- ла [18], но имеет некоторые важные отличия, которые делают ее более при- емлемой для нашей цели. Наша главная цель — дать возможность кратко опи- сать общую архитектуру одной или несколькими строками в алгебраическом виде, который пригоден для распечатки, вывода на экран и ввода в машину в виде программы. В частности, нам нужна лаконичная нотация для матриц процессоров с переменной размерностью и размером, и более всего мы инте- ресуемся числом и типом устройств, манипулирующих данными, и способом их управления. Подробное описание нашей структурной нотации разбирается под следу- ющими заголовками: А. Устройства (правила 1 — 10) — описываются символы, применяемые для представления устройств и объединения их в группы. Б. Соединения между устройствами (правила 11-16) — приводится нота- ция для каналов данных и способ описания комплексных сетей. В. Комментарии (правило 17) — описывается возможность включения до- полнительной информации гибким и открытым способом. Г. Управление устройствами (правила 18-20) - определяются различные типы управления, с помощью которого набор устройств превращается в ком- пьютер. Д. Примеры — указывается, как можно описать различные ЭВМ. А. Устройства 1. Символы, представленные ниже в алфавитном порядке, обозначают раз- личные типы устройств, которые входят в состав ЭВМ или процессора: В— устройства исполнения целочисленных, с фиксированной точкой арифметических и логических операций. С — компьютер представляет собой комбинацию устройств,включающих, по крайней мере, одно устройство I. Ch — канал ввода-вывода, который может передавать данные в интерфейс устройства ввода-вывода и память или принимать из них независимо от других устройств. D — устройство ввода-вывода, например считывающее устройство с пер- фокарт, дисковод, дисплей. Назначение устройства дается в качестве комментария в скобках. Е — устройство исполнения, которое манипулирует данными, т. е. выпол- няет арифметические, логические и разрядно-манипуляционные функции с потоками данных. Оно подразделяется на блоки F и В и часто называется арифметическо-логическим устройством, Г — устройство выполнения арифметических действий с плавающей точкой. Н — магистраль данных или устройство коммутации. Передает данные без изменений, не переформировывает порядок элементов данных (например, есть FLIP в машине STARAN). 41
I — устройство команд, которое декодирует одиночный поток команд и передает (или выдает) команды устройствам исполнения операций, где и выполняются эти команды. Оно управляет последовательно- стью прохождения команд с помощью счетчика команд. Очень часто называется устройством обработки команд (IPU). 10 — интерфейс устройства ввода-вывода, который производит выборку данных из устройства и загружает их в локальный регистр, или на- оборот. М — одномерное устройство памяти, где хранятся данные и команды, на- пример, регистры, буферная, оперативная память, память на магнит- ных дисках. О - двумерная или ортогональная память. Р — процессор, определяемый как любой набор устройств, включающий устройства Е, но не включающий устройство I. U— неспецифированное устройство; этот символ используется, когда ни одна из вышеуказанных категорий не применяется. Назначение уст- ройства определяется комментарием в скобках, стоящих вслед за сим- волом. Примерами могут служить различные промежуточные устрой- ства управления в сложной системе. 2. Конвейерная обработка обозначается строчной буквой р, которая сле- дует за символом устройства или структуры, заключенным в фигурные скобки. Это означает, что некоторые или все операции либо подоперации, вы- полняемые устройством или структурой, совмещены во времени, например: 1р конвейерное устройство команд; Ер конвейерное устройство исполнения операций; [Е <---,----> М}р структура, в которой операция считывания из па- мяти, арифметическая операция и запись в память совмещаются. 3. Векторные команды, если они имеются в наборе команд, могут быть обозначены строчной буквой v, следующей за символом устройства I. Для процессорных матриц, в которых все команды представляют операции с век- торами, символ понимается как само собой разумеющееся и поэтому опуска- ется, например: Ipv конвейерное устройство команд с векторными командами; Iv устройство с векторными командами, которое не является конвейер- ным. 4. Различные устройства одного и того же рода могут быть выделены по- средством целого числа, например: Epl одно конвейерное устройство исполнения операций; ЕрЗ три конвейерных устройства исполнения операций. 5. Подстановка применяется с целью придания ясности в иерархической но- тации. Например, разные типы, обозначенные по правилу 4, должны быть опре- делены последующими уравнениями, разделяемыми точкой с запятой, т.е.: 1[Е1,Е2]; Е1= ; Е2= . 6. Множественные устройства. Число устройств одного и того же рода, ко- торое может работать одновременно, указывается в самом начале целым чис- 42
лом. Заметим, в частности, что устройство комплексное и многоцелевого на- значения не учитывается более одного раза, если оно выполняет только по одной операции друг за другом, например: Е одиночное многофункциональное устройство для операций умно- жения, сложения, логических и т. д., выполняющее по одной опе- рации последовательно как в машине IBM 7090; 10Е 10 независимых функциональных устройств для операции умноже- ния, сложения, логических и т. д., которые могут работать одно- временно, как в машине CDC 6600. 7. Дублирование обозначается чертой над символом или над структурой, заключенной в фигурные скобки { } ; указывает, что все устройства в груп- пе являются идентичными, например: 64Р = 64 {Е М} 64 идентичных процессорных элемента, как в машине ILLIAC IV. 8. Группы устройств обозначаются фигурными скобками { } , внутри которых указаны устройства. Если устройства разделяются запятой (разде- литель одновременности), то они могут работать одновременно и, следова- тельно, параллельно. Если же устройства разделяются косой чертой (раздели- тель последовательности), то они могут работать только по одному, т. е. по- следовательно, например: |4Fp, 2В} четыре конвейера для арифметических действий с плаваю- щей точкой и два неконвейерных устройства целочисленной арифметики, которые могут работать одновременно. {Е1/Е2/ЕЗ} три исполнительных устройства, которые могут работать последовательно. Применяется только один тип разделителя в любом наборе, ограниченном фигурными скобками, хотя множественное устройство подразумевает одно- временную операцию, например: {3F1/B1} три АУ с плавающей точкой, работающих од- новременно относительно друг друга, но по- следовательно с АУ с фиксированной точкой; 3F1 = {F (+), F (*), F (=)} три АУ с плавающей точкой — сумматор, уст- ройство сдвига и делитель, работающие одно- временно; В1 = {В (+)/В (сдвиг)} АУ с фиксированной точкой содержит сумма- тор и сдвигающее устройство, которые работа- ют последовательно. В указанных выше символах в круглых скобках дается комментарий (см. правило 17). 9. Число разрядов, которыми устройство оперирует параллельно, указыва- ется подстрочным индексом, например: lie 16-разрядное устройство обработки команд; Еб4 64-разрядное устройство исполнения. Для блоков памяти применяется следующая нотация. Отметим, что каждый раздел памяти, работающий независимо (т. е. каждый банк), рассматривает- 43
ся как отдельное запоминающее устройство. Звездочка обозначает умноже- ние, например: «Mw * ь одномерная память, разделенная на п банков, содержащих по w слов из b разрядов в каждом, причем выбранные b разря- дов пересылаются параллельно; М1К * 32 блок одномерной памяти емкостью 1024 32-разрядных слова; 8М64* 64 восемь векторных регистров машины CRAY-1, содержащих по 64 64-разрядных числа каждый; Ow двухмерная, ортогональная память из w слов по b разрядов, пересылка из которой осуществляется либо пословной секци- , ей по b разрядов, либо разрядной секцией по w разрядов. 10. Характеристическое время, которое ассоциируется с операцией устрой- ства, обозначается надстрочным индексом; единица измерения — наносекун- ды, если не уговаривается дополнительно в тексте, например: I40 устройство обработки команд с тактовым периодом 40 нс; Е200 устройство исполнения со средним временем операции 200 нс; М650 устройство памяти с временем выборки 650 нс. Б. Соединения между устройствами 11. Связь посредством шины данных указывается следующими соедини- тельными знаками: - соединения неспецифированного типа; < - симплексное соединение влево; — > симплексное соединение вправо; < — > дуплексное соединение; < —/— > полудуплексное соединение. При симплексном соединении данные могут передаваться только в указан- ном направлении, при дуплексном — в обоих направлениях одновременно. При полудуплексном соединении данные могут передаваться в любом направ- лении, но не одновременно. Используя разделитель одновременности и после- довательности, получаем: < — > сокращение выражения {<-,—>} , < -/- > сокращение выражения {<-/—>}. Указанные тире могут быть продублированы (или напечатаны в виде ли- нии произвольной длины), чтобы улучшить вид структурного описания, на- пример: Е--------->М; Е----------->М; Е<--/-->М. Таким образом, множественное тире в этой нотации семантически и логи- чески эквивалентно одиночному. Стрелки можно напечатать, использовав символы < (меньше чем), и > (больше чем). Заметим, что в качестве разде- лителя структурных выражений используется точка с запятой (как в Алго- ле 60). Ширина шины данных в битах может быть записана под соединитель- ным знаком в формате ’’число битов данных” (дополнительно) ’’число адрес- ных банков”, т. е. 44
100 шина данных, по которой передаются 64 разряда данных и 64+16 16 разрядов адреса каждые 100 нс. 8“‘> симплексное соединение вправо, ширина шины которого со- ставляет 8 разрядов. Множественные шины данных описываются с помощью множителя и звез- дочки (*) как в Фортране. Для выделения алгебраической группы использу- ются фигурные скобки, так как круглые зарезервированы для комментари- ев, например: < —----------- > четыре идентичных дуплексных шины данных с 64 4* {64+16} разрядами данных и 16 разрядами адреса в каждой. Комплексный канал или коммутатор данных специфицируется идентифи- катором магистрали и объясняется в последующем определении, например: Е НЗ-М; Н3 = {{ Правая сторона такого обозначения должна содержать описания только кана- лов данных. 12. Последовательные соединения представляют собой цепь устройств, свя- занных шинами данных. Выражение Е - Ml — М2 — М3 описывает набор уст- ройств, в которых электрические цепи логически соединены последовательно. 13. Параллельные соединения представляют собой параллельное логичес- кое соединение электрической цепи, которое описывается при помощи разде- лителя одновременности (,) или последовательности (/) между символами устройств (или описаниями параллельных цепей). Общий список должен быть заключен в фигурные скобки { }. Большую гибкость можно получить путем введения символа отсутствия соединения (| ). Устройство может со- единяться за пределами фигурных скобок следующим образом: U -U IU -и- Символ отсутствия соединения может быть опущен, если не возникает ника- кой неопределенности, например, когда в любом случае не с чем осущест- влять соединение: — {U1,U2, U3} соединение за скобками не специфицировано; соединение за скобками влево, соединение вправо отсутствует; соединение за скобками вправо, соединение влево отсутствует; соединение за скобками вправо и влево. группа устройств, которая может работать одновременно, подсоединенная неспецифи- цированным способом к шине данных слева; группа устройств, работающая с неспецифи- цированными соединениями с шинами дан- ных влево и вправо последовательно; три одновременно работающих параллельных канала, которые можно изобразить как: — U1— -{Ul/U2/U3|- -{ui-, —U2—, —U3—} — иг —1)5-- 45
- {-U1-, IU2-, -U3-1 как и в предыдущем случае, только у U2 нет соединения влево, т. е.: <— U1 — иг — —1)5 — _ J-U1-/-U2-/-U3- J три параллельных различных канала, работа- ющих поочереди. Поскольку здесь есть раз- ница во времени, зто выражение можно запи- сать только так, как было показано в тре- тьем примере. Чтобы проиллюстрировать применение описаний каналов взамен простых устройств и гнездования таких параллельных соединений; рассмотрим комп- который можно записать как |U7-, U8-, U9-, U10-} - { { —U6—/<— } 1 _ {-U1-, I U2-, -U3-U4-, -U5 !}/->} -U11, где каналы, обозначенные стрелками, являются однонаправленными и аль- тернативными. 14. Точки соединений специфицируются строчными буквами внутри или на конце соединительных знаков, например: Е-а-М, U<—/—>q. Они, возможно, понадобятся для спецификации длинных соединений или структур, которые невозможно представить так, как в последнем подразде- ле. Например, структура изображающая три машины Cl - СЗ, соединенные с пятью банками памяти Ml — М5, наиболее ясно описывается выражением 46
с = {ci — (a, b, с [a-Ml, а-М2,’с-М3, Ь-М4,п-М5 где точки соединения а, b и с обозначены в соответствии с банками памяти. Мы обращаем внимание на использование перечня точек соединений в скоб- ках в случае множественных соединений. Поскольку любое соединение мож- но описать таким способом, точки соединения предоставляют средство описа- ния произвольных сетей различных устройств. 75. Матрицы процессоров в большинстве случае строятся в виде много- мерных прямоугольных или квадратных матриц. Поэтому естественно обо- значать такие устройства множителем, предшествующим описанию процессо- ра. Звездочка применяется нами для обозначения умножения (как в Фортра- не) , а показатели — как указание соответствия, например, 128*64Р 642Р матрица из 8192 идентичных процессоров, организованная в виде массива 128 х 64; матрица процессора 64 х 64; четырехмерный гиперкуб с 16 узлами, в каждом узле разме- щаются две ЭВМ. Степень связности между процессорами может быть задана надстрочным индексом у фигурных j или квадратных [ ] скобок в форме ”с - пп”. Она означает, что процессоры могут передавать данные прямо в процессоры или принимать данные от процессоров, включая ого ближнего соседа. Если с = 0, то непосредственное соединение отсутствует, например: машина РЕРЕ, содержащая 288 несвязанных про- цессоров, в каждом по три устройства исполне- ния и блок памяти; машина DAP с соединениями к четырем процес- сорам по принципу ”к первому ближнему со- седу”, 288{ЗЕ-М )°~пп С[642Р]1 " ™ .2 — Ш1 машина CLIP, предназначенная для обработки изображений [78], в которой соединения уста- новлены к двум ближайшим соседям, т. е. к восьми соседям: Другие, более сложные модели соединений можно специфицировать в ка- честве комментариев в круглых скобках. 16. Перекрестные соединения (координатные сети и Другие сети коммута- ции) между многочисленными устройствами исполнения и блоками памяти указываются перекрестием. Детали сети соединений будут объяснены отдель- 47
но. Время передачи и разрядную ширину можно приписывать, как было по- казано выше. Например: Ip [16F х 17М] машина BSP, содержащая 16 устройств исполне- ния операций с плавающей точкой, подключае- мых координатным переключателем к 17 бан- кам памяти. Символ перекрестия можно дублировать для улучшения удобства чтения. Та- кие множественные перекрестия логически и семантически идентичны оди- ночному кресту. Точную работу переключателя можно обозначить посред- ством дополнительного описания коммутирующих функций в качестве ком- ментария в круглых скобках (см. правило 17). Например, выражение иЕ х ([-^-\2к + ||х| k + 2fc-11 к, к= 1,.. ., log2«) х шМ представляет перестановку с замещением, рассматриваемую в подразд. 3.2.1 и показанную на рис. 3.13. В указанном выше выражении [/] — это целочис- ленная наименьшая функция f, а |х| означает, что аргумент берется по моду- лю 2^ (см. разд. 3.2). В качестве альтернативы для достижения большей яс- ности можно применять подстановку, например: «ЕхНЗхшМ; НЗ=Н(|х| jt + J. В. Комментарии Данная нотация является представлением с открытым окончанием, т. е. можно везде добавлять комментарии для уточнения назначения устройства или соединения. 17. Комментарии заключаются в круглые скобки и содержат выборочную дополнительную информацию о непосредственно предшествующем символе. Эта информация может иметь любой синтаксис, например: Ml10 (биполяр.) — М2400 (МОП) — М3мс> (диск) иерархия памяти; Fp(*, ЭСЛ) конвейерное уст- ройство умноже- ния с плавающей точкой на ЭСЛ-схе- мах; 1р (4 сегм.) [ ] четырехсегмент- ный конвейер команд. Отмечаем также применение комментария в надстроечном индексе, чтобы показать устройства с нестандартным временем. Символ неспецифицирован- ного устройства (U) позволяет охарактеризовать любое устройство, напри- мер: U (2803) устройство управления IBM 2803. В случае соединений данных круглые скобки вставляются между двумя тире или перекрестиями, например: Е — (полумильная коаксиальная линия) — М; Е х (сеть Бэняна) х М. 48
Применяются следующие символы: b — бит и В — байт с обычными префик- сами устройств SI и общепринятыми понятиями К = 1024, М = К2; Г = К3, Т=К4. Г. Управление устройствами Набор устройств, работающих под управлением потока команд, состав- ляет ЭВМ. 18. ЭВМ и процессоры. В соответствии с данной нотацией мы условно счи- таем, что ЭВМ представляет собой группу устройств, которые могут обраба- тывать команды, и поэтому содержат, по крайней мере, одно устройство I. В контексте общей архитектуры устройство I, являясь программируемым, обрабатывает поток команд пользователя. При этом определении микропро- цессор более удобно описывать как микро-ЭВМ. Самая простейшая ЭВМ опи- сывается как С = I [Е — М]. Процессор представляет собой набор устройств, которые могут обрабаты- вать данные, но он сам не обрабатывает поток команд пользователя. Поэто- му в нем содержится устройство Е, но отсутствует устройство I. Самый про- стейший случай Р = Е — М. Для широкоиспользуемой терминологии процес- сорная матрица такое определение процессора подходит для матрицы уст- ройств Е — М, работающих под общим управлением внешнего устройства I, как это сделано в машине DAP. Приведенное обозначение не является абсолютно четким, потому что мно- гие устройства, которые мы бы рассматривали как исполнительные, факти- чески управляются микропрограммами, команды которых обрабатываются устройством Е. С точки зрения общей архитектуры, которая представляет для нас наибольший интерес, важный вопрос состоит в том, является ли уст- ройство программируемым пользователем. Если это так, то мы его рассмат- риваем как устройство, содержащее устройство I. Если оно не программиру- ется пользователем, то устройство I отсутствует, даже если оно предполагает определенный внутренний поток микрокоманд. По аналогии, с точки зрения общей архитектуры, мы описываем только программируемые регистры как часть описания ЭВМ, даже если имеется много других внутренних регистров в компьютере (например, между каскадами конвейерного устройства испол- нения) . Нет причин отказываться от этой нотации при детальном описании внут- ренней структуры микропрограммируемого универсального арифметическо- го конвейера или микропроцессора. В этом случае описываются все внутрен- ние регистры, независимо программируемые или непрограммируемые, а устройство обработки микропрограмм было бы целесообразно классифици- ровать как устройство I. Поэтому вполне понятно, что значение устройства I обусловлено применением данной нотации и становится ясным из вспомога- тельного текста. 19. Степень управления, используемая устройством I или С, указывается квадратными скобками управления. Управляемые устройства перечисляются внутри квадратных скобок и разделяются запятой, если они работают одно- временно, или наклонной чертой, если они работают последовательно, на- пример: П [412 [64Р ] ] главное устройство обработки команд (П ), управляющее четырьмя квадрантами, каж- 49
дый содержащий устройство команд (12), который управляет 64 идентичными про- цессорами, как и в первоначальных проек- тах машины ILLIAC IV; Ip [Cl, С2, СЗ] конвейерное устройство команд, управля- ющее тремя компьютерами, которые мо- гут работать одновременно; Cl [Epl/Ep2]; Cl = I [В — М] управляющая машина С1, которая выпол- няет булевы операции и содержит память; управляет двумя конвейерными исполни- тельными устройствами, работающими по- следовательно. 20. Тип управления, реализуемый устройством I или С, можно дополни- тельно указать строчными буквами в виде приписки снизу у квадратных ско- бок управления. В этой книге описанию ЭВМ соответствуют ниже указанные режимы. Другие режимы можно описать в виде комментариев: управляемые устройства имеют более одного генератора тактовых импульсов; генераторы не синхронизированы, и связь между устрой- ствами должна координироваться флажками и согласованными протоколами ’’рукопожа- тия”1 ; одиночная составная команда управляет рабо- той набора различных устройств за каждый тактовый период, например, машиной АР-120В фирмы FPS; набор идентичных процессоров, управляемых синхронно для выполнения одной и той же операции одновременно, например, машина DAP фирмы ICL; команды выдаются устройством исполнения сразу же по мере освобождения необходимого блока или регистра, например, ЭВМ CRAY-1. асинхронный (а) горизонтальный (h) синхронный (1) выдача по готовности (г) Примеры: I[10F, ЮС]г C[64P]t I [4С] (описание управления) машина CDC 6600, имеющая 10 различных независимых функциональных АУ с плава- ющей точкой и 10 идентичных ЭВМ ввода- вывода; команды выдаются по мере го- товности устройств. машина ILLIAC IV, имеющая 64 идентич- ных процессора, управляемых в синхрон- ном режиме. четыре ЭВМ, управляемые устройством I, способ управления которого описан в ком- ментарии в круглых скобках. 1 Обмен определенными сигналами при установлении связи. - Прим, перев. 50
Д. П р и м е р ы Чтобы проиллюстрировать применение вышеизложенной нотацйи, приведем описа- ния разных ЭВМ в виде одного уравнения или одной строки. Детали описания могут различаться в соответствии с потребностями. Для ясности иерархическое описание пред- почтительнее выполнять с помощью нескольких уравнений в виде описания общей архи- тектуры, приводимой в первом уравнении, и деталей, занесенных подстановкой в после- дующие уравнения, если необходимо опуститься до уровня индивидуальных регистров. Для более сложных структур может потребоваться расширение формулы до второго из- мерения, как это делается в структурной химической формуле. С (Z80 + память) =С(Z80) ?Ммк ; C(Z80) = Hso [В8FM,8 *8] С (INTEL 8086) = 18 [В,6 - М,3 *8 ] Гб М,м, ,6 С(EDSAC1) = I [В, - М]; М =М512*3s С (IBM 7090) = l[F36 - М] C(CDC 6600) = 1[10Е- 32М- ЮР]Г; 10Е ={4F60, бв} C(CDC 7600) =1[9Ер М16Р]г; 9Ер = {3Fp, 6В }; М = 32М1 - 8М2 С(1ВМ 360/195) = lp54 [2С - 32М1160 (1 КВ) - 16М 2800]; 2С = {Cl, С2}; С1 = I [3Fp — М] ; С2 = 1 [в - М] С (CRAY-1) = Iv12 [12Ер12 - 16М50] г; 12Ер ={ 3Fp„, 9в} C(CYBER 205) = Iv“ [4Fp64 - 512М’’К *_32] С (TIASC (21PU, 4 конвейера)) = 21pv [2Fp] - 8М 8Р C(1LLIAC1V (4 квадранта)) = С1 [4С280 [64Р"]]1-nn ]; Р = 1/600 _ w400 1 *64 М2К*64 ________ С (РЕРЕ) = С1 [31 [288{ ЗЕ - М }] °'nn]; Cl = C(CDC 7600) C(BSP) = lp[16F X 17M]j С (64 X 64 ICL DAP) =С [642Р] ‘-nn; Р = В, - М„к С (STARAN) = 1 [32 [256В, X О256 *256 ] ] -М С (OMEN =64) =!,„ [64В, - О64 *,6 -Е,6]1 С (HYPERCUBE) = 1 [24С]; С =С (2 * INTEL 8080) Региональная звездообразная вычислительная сеть в юго-восточной Англии: С Эссекс С (Кент) С(298О, Оксфорд) с (7600, Лондон) - 0(2970, Саутхемптон) С (,19O»S, Рединг) C(PRIME,Суррей) С(Суссекс) , или и качестве альтернативы С(7б00. Лондон) - {-С(2980, Оксфорд), -С(Эссекс), - С(Кент), -С(2970, Саут- хемптон), С (Суссекс), -С (PRIME, Суррей), -C(1904S, Рединг)}. ”Ьензолыюе" кольцо из 6 компьютеров 51
или в качестве альтернативы {-С-С-С-С-С-С-,-} или 2 {-С-С-С-}. 1.2.5. Структурная систематика Теперь с помощью вышеизложенной нотации приступим к формулирова- нию структурной систематики как последовательных, так и параллельных ЭВМ. Общая структурная схема показана на рис. 1.4, затем она подразделяет- ся на структурные схемы последовательных (рис. 1.5) и параллельных (рис. 1.6 и 1.7) ЭВМ. На этих рисунках изображены древовидные структуры, и по- этому существует только один маршрут — от вершины схемы до любого класса ЭВМ, который определен в нижней строке. Машина, которую требует- ся отнести к определенному классу, должна обладать всеми свойствами, ука- занными в прямоугольниках, которые лежат на пути достижения характери- стики ЭВМ. Хорошо известная ЭВМ каждого класса указывается вместе с ка- ноническим определением класса в структурной нотации и описательным на- званием ЭВМ в этом классе. Некоторые большие ЭВМ неизбежно будут обла- дать свойствами, принадлежащими более чем одному классу. Тогда придется решать, какое свойство является доминирующим. Мы надеемся, что это об- стоятельство будет относительно редким и что приводимая классификация является достаточно точной, чтобы дифференцировать такие ЭВМ, которые следует описывать отдельно. Подраздел высшего уровня (см. рис. 1.4) базируется на числе устройств I, и сначала мы выделяем все ЭВМ с множеством устройств I в классе мульти- компьютеров. Этот класс в дальнейшем не делится, так как находится вне Рис. 1.4. Грубая классификация архитектур ЭВМ 52
Рис. 1.5. Классификация последовательных уникомпьютеров в соответствии со струк- турной нотацией из подразд. 1.2.4 Рис. 1.6. Параллельные компьютеры на основе функционального параллелизма и конвей- ерной обработки (классификация компьютеров, рассматриваемых в книге) 53

сферы этой книги. Машины с одним устройством I затем делятся на ЭВМ с одним неконвейерным устройством Е и ЭВМ с множеством устройств Е и/или конвейерными устройствами Е. Вспомнив, что устройство Е может вы- полнять только одну функцию последовательно (даже если оно в состоянии вычислять множество функций), структура с одним неконвейерным устрой- ством (см. рис. 1.5) подразумевает последовательную работу и все последо- вательные ЭВМ, тогда как структура с множеством устройств Е или конвей- ерной обработкой допускает различные типы совмещения и предусматрива- ет семейство параллельных уникомпьютеров (см. рис. 1.6 и 1.7). Следующий уровень подразделения базируется на типе арифметических действий, выполняемых устройствами Е. Разница в сложности между одно- разрядным АУ (менее 10 логических вентилей) и устройством арифметики с плавающей точкой (много тысяч логических вентилей) настолько велика, что трудно указать качественно сопоставимое различие. Дополнительное ме- сто, необходимое для схем, выполняющих арифметические действия с пла- вающей точкой, также обусловливает разные ограничения на сборку матриц процессоров в отличие от матриц с одноразрядными процессорами. Соответ- ственно, матрицы процессоров с плавающей точкой и матрицы одноразряд- ных процессоров отличаются по технологии изготовления, внешнему оформ- лению и свойствам. Чтобы показать историческую эволюцию последователь- ных ЭВМ, этот класс был разделен на класс целочисленной арифметики и класс арифметики с плавающей точкой, где первый класс делится на после- довательную и параллельную арифметику. Эта сторона классификации пред- ставляет не только исторический интерес, поскольку она включает в себя первые поколения микропроцессоров (например, 8-разрядный микропро- цессор) . На рис. 1.6 показано внедрение функционального параллелизма и конвей- ерной обработки в традиционную концепцию последовательной ЭВМ. Преж- де всего мы дифференцируем по классам ЭВМ с конвейерными устройства- ми Е или без них. Слева располагается неконвейерная многоэлементная ска- лярная ЭВМ, такая как CDC 6600, которая достигает своей производительно- сти всецело за счет функционального параллелизма. В правой части конвей- ерные компьютеры сначала разделяются на компьютеры с явными векторны- ми командами или без них. Мы считаем разделение необходимым, чтобы определить высокопроизводительные компьютеры, такие как CDC 7600, от конвейерных векторных компьютеров, таких как CRAY-1. В других отноше- ниях эти машины чрезвычайно схожи. Конвейерные компьютеры с вектор- ными командами далее делятся на ЭВМ с отдельными специализированными конвейерами для каждого типа арифметических операций (например, CRAY-1) и ЭВМ с одним или более универсальными конвейерами, причем каждый спо- собен выполнять более одного типа операций (например, CYBER 205). Кон- вейерные компьютеры только со скалярными командами подразделяются на ЭВМ, в которых одна команда управляет всеми устройствами за каждый цикл (горизонтальное управление как в FPS АР-120В), и ЭВМ, в которых команды выдаются устройствами по мере их готовности к выполнению опе- раций (как в CDC 7600). Другой вариант получения параллелизма с помощью дублирования про- цессоров, работающих под действием синхронного управления, указан на 55
рис. 1.7. Опять же, эта структура ЭВМ подразделяется на класс с арифмети- кой с плавающей точкой и класс с малым числом разрядов (таким образом, включая синхронную матрицу 8-разрядных микропроцессоров). Следующее подразделение имеет отношение к соединениям между процессорами: будут они несоединенньщи (т. е. связность с = 0) или соединенными с соседними процессорами (с > 1) в виде одномерного массива. Другие виды соединений попадают в общий класс процессоров с перекрестными соединениями и па- мятью. Для структур с малым числом разрядов, по-видимому, имеет смысл идентифицировать несоединенные процессоры как классическую ассоциатив- ную ЭВМ, и не забыть упомянуть ЭВМ с ортогональной памятью. Во многих ЭВМ можно запрограммировать обращение как к пословным, так и разряд- ным секциям, но ЭВМ, подходящая нашему определению ортогональной ма- шины, должна иметь отдельные пословно-секционные и разрядно-секцион- ные процессоры. Иными словами, она должна быть специально сконструиро- вана как ортогональная ЭВМ, чтобы попасть в этот класс. 1.3. ХАРАКТЕРИСТИКА ПРОИЗВОДИТЕЛЬНОСТИ В предыдущем разделе мы познакомились с классификацией многих раз- нообразных архитектур вычислительных машин — от простого последова- тельного скалярного микропроцессора, включая многоэлементные конвейер- ные векторные компьютеры, до процессорной матрицы с высокой степенью дублирования. Несмотря на то, что эти проекты имеют мало общего, цель данного раздела — определить два параметра, с помощью которых можно охарактеризовать производительность всех компьютеров и рассматривать последовательный, конвейерно- и матрично-подобные процессоры скорее как различные части непрерывного спектра проектов, 'а не как представителей принудительно различных компьютеров. Конечно, такой упрощенный под- ход можно рассматривать только как описание первого порядка, но мы нахо- дим его вполне достаточным для количественной характеристики класса компьютеров и, следовательно, для определения наиболее оптимальных ал- горитмов. Чтобы получить это простое общее описание всех последователь- ных и параллельных компьютеров, мы должны прежде всего остановиться более подробно на принципиальных способах увеличения быстродействия арифметических устройств. 1.3.1. Последовательная, конвейерная и матричная архитектуры На рис. 1.8 показаны различные способы выполнения арифметической операции при последовательной, конвейерной и матричной архитектурах. В качестве примера возьмем задачу сложения двух векторов с плавающей точкой xi и yi (z = 1, 2, . . . , и), в результате которой получается вектор суммы zi = хг- + yj (z = 1, 2, . . . , п). Операция сложения любой пары ука- занных элементов (х = ех2Риу=/х 2<?) может быть поделена на четыре подоперации, которые для простоты имеют одинаковое время выполнения. Это — 1) сравнение порядков, например, формы (р - q); 2) сдвиг х по отно- шению у, (р - q) устанавливает порядок для выравнивания двоичных точек; 3) сложение мантиссы х с мантиссой у; 4) нормализация результата z по- 56
y=f*z4 x=e*Zp Сложение Сравнение порядков (р — q) Сдвиг Сложение Нормализация Совмещение подопераций Дублирование устройств Рис. 1.8. Сравнение последовательной, конвейерной и матричной архитектур средством сдвига влево до тех пор, пока первая цифра, неравная нулю, не ока- жется рядом с двоичной точкой. В последовательной ЭВМ четыре подопера- ции с парой элементов и у, должны заканчиваться выдачей первого ре- зультата z ], прежде чем вторая пара элементов будет занесена в арифмети- ческое устройство. Последовательное вычисление результирующего вектора иллюстрируется в средней части рис. 1.8, где по вертикали сверху вниз под- разумевается временная ось. Если I представляет собой число подопераций (в нашем случае I = 4), а т — время выполнения каждой из них (обычно так- товый период), тогда время выполнения операции с вектором длиной п со- ставляет ^посл -I тп> (1 1а) а максимальная скорость выдачи результатов равна г°°посл = (1-!б) Можно заметить, что при последовательной операции схемы, выполняю- щие одну из I подопераций, находятся в активном состоянии в течение 1/Z общего времени. Это по своей сути является неэффективным, что становит- 57
ся еще более очевидным, если мы проведем поучительную аналогию с линией сборки автомобилей. Подоперации, необходимые для получения суммы двух чисел, аналогичны подоперациям производства автомобиля, например: 1) скрепить болтами кузов с шасси, 2) установить двигатель, 3) установить ко- леса и 4) прикрепить двери. Последовательная операция соотносится только с одной группой рабочих, занятых в определенный момент времени, и в этом случае только один автомобиль находится на линии сборки. Из нашего при- мера ясно, что 75 % рабочих на линии сборки являются неработающими. Эффективность автомобильной линии сборки достигается посредством возможности начинать сборку нового автомобиля на «подоперации 1), как только первый автомобиль перейдет на подоперацию 2). При таком способе сборка нового автомобиля начинается через единицу времени т и, когда ли- ния заполнится, автомобиль будет выпускаться через единицу времени т. Мы часто говорим о подоперациях, которые формируют конвейер. В нашем при- мере в любое время на конвейере находятся четыре автомобиля на различ- ных стадиях сборки, и никто из рабочих на линии сборки не является незаня- тым. Этот принцип, используемый для увеличения скорости выдачи резуль- татов в конвейерном арифметическом устройстве, иллюстрируется в левой части рис. 1.8. Временная диаграмма показывает, что увеличение скорости достигается путем совмещения (например, одновременным или параллель- ным выполнением) разных подопераций с различными параметрами аргумен- тов. Отсюда время выполнения операции с вектором длиною п равно ^конв _ к (и — 01т > (1.2а) где st — фиксированное время запуска, которое требуется для установки конвейера на запрос векторов, например вычисление первого и последнего адресов для каждого вектора, и других издержек операции. Оно также вклю- чает в себя фиксированное время для передачи чисел между памятью и ариф- метическим конвейером. Параметр I представляет собой число стадий или сегментов в конвейере и, следовательно, различен для разных арифметичес- ких операций. При заполнении и, как следствие этого, бесперебойной работе конвейер выдает каждый тактовый период т один результат, откуда г =7-*. (1.26) оо: :онв v 7 Сравнивая это равенство с уравнением (1.16) , можно видеть, что конвейер- ная обработка операции увеличивает скорость не более чем на множитель I — число совмещенных подопераций. Из сказанного очевидно, что любые операции, которые могут быть грубо подразделены на разные подоперации, можно выполнять конвейерным спо- собом. Наиболее общим примером является конвейерная обработка команд, в которой совмещаемыми операциями могут быть: 1) декодирование команд; 2) вычисление адресов операндов; 3) инициирование выборки операндов; 4) пересылка команды в функциональное устройство и 5) выборка следу- ющей команды. К машинам с устройствами конвейерной обработки команд относятся IBM 360/91 (одна из самых первых), ICL 2980, AMDAHL 470V/6. В других ЭВМ, таких как BSP, производится конвейерная обработка на бо- лее макроскопическом уровне; осуществляется совмещение операций: 1) выборки из памяти; 2) неконвейерной арифметической операции и 3) зане- сения результатов. Машины с арифметическим конвейером могут и не иметь 58
векторных команд в своем наборе (например, CDC 7600, IBM 360/195). К наиболее известным машинам с арифметическими конвейерными и вектор- ными командами относятся CDC STAR 100 (первая), ее производные: CYBER 205, TIASC и CRAY-1. Другим способом увеличения быстродействия АУ является дублирование устройств исполнения и формирования матрицы процессорных элементов, работающих под общим управлением одного потока команд. Все ПЭ одно- временно выполняют одну и ту же операцию, но только с различными данны- ми, находящимися в их собственной памяти. Если имеется Nтаких процессо- ров и N < и, то можно заслать первую пару аргументов (хг-, уг) в ПЭ, а пер- вые N результатов получить одновременно через промежуток времени, затра- чиваемый на одну параллельную операцию над всеми элементами массива, скажем (в нашем примере равно 4т). Затем можно загрузить следующие .V элементов и произвести параллельные вычисления в течение следующих временных единиц Тц . Этот процесс повторяется до тех пор, пока не будут вычислены все элементы. В правой части рис. 1.8 показана временная диа- грамма, и мы делаем вывод, что время, необходимое для вычисления векто- ра длиной п в такой процессорной матрице, равно 'матриц («Ж (1-За) 'оомаТр=Л'Л||> С1’36) где [х] — предельная функция х, представляющая собой наименьшее целое число, которое равно или больше х. Функция показывает число повторов мат- ричной операции, необходимых в случае, если элементов вектора больше, чем процессоров в матрице. Скорость выдачи результатов максимальна, когда векторная длина п представляет собой целое кратное числа процессо- ров, и это означает увеличение быстродействия в N раз по сравнению с этой же операцией, выполненной на последовательной ЭВМ при использовании одинакового типа АУ. ЭВМ выпускались как в виде моделей с относительно малым числом неконвейерных процессоров с плавающей точкой (ILLIAC [V (64 ПЭ), BSP (16 ПЭ)), так и моделей с гораздо большими матрицами простых одноразрядных процессоров (STARAN (256 ПЭ) и ICL DAP (4096 ПЭ)). Последняя альтернатива становится особенно привлекательной в слу- чае реализации технологии СБИС, которая идеально подходит для широко- масштабного дублирования простой логики. Существуют непосредственные предпосылки создания матриц на коммерчески доступных «-разрядных мик- ропроцессорах (титгично п = 4, 8, 16). Кроме того, с точки зрения заданной производительности всегда имеется выбор между несколькими высоко опти- мизированными арифметическими конвейерами и большой матрицей более простых процессоров. Этот контраст можно проследить на последовательно- сти следующих конкурирующих коммерческих проектов: CRAY-1 (два кон- вейера с плавающей точкой), BSP (матрица из 16 неконвейерных процессо- ров с плавающей точкой) и ICL DAP (матрица из 4096 одноразрядных про- цессоров) . Идеи конвейерной обработки и дублирования могут быть концеп- туально объединены в матрицу конвейерных процессоров. К 1980 г., несмо- тря на то, что есть примеры применения большого числа конвейеров (напри- мер, CDC. CYBER 205), примеры конвейеров с внутренними соединениями в виде многомерных матриц отсутствовали. 59
Хорошее представление принципов конвейерной обработки и дублирова- ния даются в работе [88]. Более подробный обзор конвейерных архитектур, включая рассмотрение нескольких реальных проектов, приводят в работе [183], технические аспекты реализации эффективной конвейерной обработ- ки в цифровых системах можно найти в работе [133]. Обзор по дублирован- ным архитектурам приводится в работах [232, 233]. 1.3.2. Производительность векторных операций В качестве унифицированного критерия для различных архитектур, опи- санных в предыдущем подразделе, мы будем использовать производитель- ность ЭВМ, достигаемую при выполнении одной арифметической операции с вектором длиной п. Это наиболее близко подходит к следующей общей фор- муле времени операции Г, как функции от длины вектора: t (n+nt/2). (1.4а) Параметры Пу2 и полностью характеризуют производительность аппа- ратной части идеализированной универсальной ЭВМ и дают описание первого порядка любого реального компьютера. Эти характеристические параметры Называются: а) длиной полупроизводительности, и^2 — длиной вектора, при которой достигается половина максимальной производительности; б) максимальной или асимптотической производительностью, гж — макси- мальной скоростью вычисления устройств на эквивалентных скалярных опе- рациях в секунду. Для вычислительных универсальных машин она асимпто- тически возникает для векторов бесконечной длины, отсюда и подстрочный индекс. Общая единица измерения скорости выполнения операций с плава- ющей точкой имеет размерность мегафлоп/с, или Мфлоп/с, т. е. миллион опе- раций с плавающей точкой в секунду. Д. Калахан и У. Эймс [40] также рекомендовали охарактеризовать произ- водительность посредством общей формулы, как, например, (1.4а). Пара- метр Пу/2 был введен Р. Хокни [103], чтобы охарактеризовать эффектив- ность векторных операций. При получении средних значений п ^2 и г„ из временного выражения по- следовательности векторных операций важно помнить, что t определяется как время, приходящееся на операцию с вектором длиной п. Таким образом, если на а векторных арифметических операций затрачивается время Т = Ъ + сп, тогда t = Т/а = с (п + bjc^a. Следовательно, при сравнении с равенством (1.4а) получаем г«, = ajc, пЦг = Ь/с, (1.4в) откуда ясно, что при увеличении скорости всех схем компьютера в f раз (по- средством деления Ъ и с naf), например, путем уменьшения тактового пери- ода, увеличивается асимптотическая производительность во столько же раз, но не изменяется п ^2 Смысл этих параметров совершенно различен. Максимальная производи- тельность (г„), главным образом, характеризует используемую технологию 60
ЭВМ. Это — масштабный коэффициент, относящийся к характеристике опре- деленной архитектуры ЭВМ и отражающий технологию, используемую для реализации определенной архитектуры. К тому же, если мы будем рассматри- вать коэффициенты производительности (определяемые величиной, обратно пропорциональной времени выполнения операции) при различных алгорит- мах для одной ЭВМ, то увидим, что г „ анулирует значимость наилучшего ал- горитма и не играет никакой роли в его выборе. Поэтому этот параметр не фигурирует при рассмотрении алгоритмов в гл. 5. Длина полупроизводительности (и t/2 ) представляет собой критерий степе- ни параллелизма в архитектуре ЭВМ. Мы убедимся, что он меняется от О (для последовательных компьютеров без распараллеливания операций) до бесконечности для бесконечной процессорной матрицы. Следовательно, этот критерий дает количественную однопараметрическую единицу измерения сте- пени параллелизма в архитектуре ЭВМ. Поскольку параметр не представ- лен как множитель в выражении (1.46), то относительная производитель- ность различных алгоритмов на ЭВМ определяется значением пу2. Можно сказать, что векторная длина (или средняя длина) п оценивает степень параллелизма задачи, а отношение v = «i/2/« определяет, насколько парал- лельным является компьютер для определенной задачи. Если v = 0 или мало, то наилучшим будет алгоритм, разработанный для последовательной струк- туры, а если v велико, то наиболее подходящий алгоритм, разработанный для высокораспараллеленной структуры, окажется наиболее приемлемым. Поэтому гл. 5 главным образом посвящена рассмотрению влияния и ^2 или v на производительность алгоритма. 1.3.3. Измерение п и г„ Длину полупроизводительности и максимальную производительность луч- ше всего рассматривать как экспериментально определяемые величины, по- лученные посредством хронометрирования производительности компьютера на тест-программе, такой как CALL SECOND<Т1> CALL SECOND(Т2) Т0=Т2-Т1 DO 20 N=1fNMAX CALL SECOND(Tl) DO 10 1=1 fN 10 A(I)=B(I)*C(I) CALL SECOND(T2) 20 T=T2-T1-TO или на ее эквиваленте в кодах ассемблера. Цикл DO I в этом примере про- граммы на Фортране заменяется векторной командой с помощью векторизу- ющего компилятора. Для получения точного хронометрирования необходи- мо замерить и вычесть издержку ТО, приходящуюся на вызов подпрограм- мы. NMAX представляет собой максимальную длину вектора, SECOND — подпрограмму, учитывающую время в секундах, затрачиваемое процессо- ром. Тогда зависимость времени t от длины вектора п будет представлять 61
Рис. 1.9. Зависимость значений п^2 и компьютера от производительности как функции длины вектора (данные взяты из работы [134] для двухкон- вейерного компьютера CDC CYBER 2ОЗЕ; njp = 100, = 100 Мфлоп/с) собой, как показано на рис. 1.9, восходящую прямую. Отрицательный отре- зок координатной оси п, отсекаемый этой линией, дает значение п 2/2, а обрат- ное значение тангенса наклона прямой — . Результаты, приведенные для машины CDC CYBER 203Е, являются типич- ными для конвейерной. Мы можем получить значение Пц2 из временных данных, предоставляе- мых фирмами-изготовителями. Его можно определить из типичного уравне- ния (1.2а): Г =t[s+ Z + (л — 1)], " (1.6а) откуда, сравнивая с уравнением (1.4а), получаем для конвейерной ЭВМ n1/2=s+l-l, (1.66) =т~1. (1.6в) Поскольку длина конвейера I зависит от выполняемой операции, мы по- лагаем, что и^2 не будет абсолютной константой для определенного ком- пьютера. В некоторой степени она будет зависеть от выполняемых операций и от того, как используется ЭВМ. В частности, заметим, что любые лишние служебные символы, вводимые компилятором, будут появляться в виде программного дополнения к значению s, что, как следствие, приведет к уве- личению значения ny2. Несмотря на эти оговорки, мы рассматриваем n^2 как необходимую характеристику векторной производительности. Для последовательных ЭВМ, сравнив временное уравнение (1.1а) с об- щей формулой (1.4а), получаем «1/2 =0игоо = (/г)-1. (1.6г) Характеристика матрицы процессоров по параметру П\/2 представляется менее очевидной, так как временная формула (1.3а), как показано на рис. 1.10, является дискретной. Для получения наилучшей характеристики необ- ходимо выделить два класса в зависимости от того, меньше или больше век- торная длина п числа процессоров N в матрице. Если п < N, то матрица за- полняется полностью или частично только один раз. Таким образом, время выполнения параллельной операции не зависит от и и равно Гц. При таких об- стоятельствах, с учетом стоящей задачи, матрица ведет себя так, как если бы 62
Рис. 1.10. Время векторного вычисления длиной п на матрице из N процессов (сплош- ная линия); ближайшее линейное приближение (штриховая линия) показывает, что и = N/2 и г матрице = Nit]], где Tjj - время выполнения одной параллельной операции на она содержала бесконечное число процессоров. Соответственно, правильный предел в общей формуле получится, если выбирать «1/2 =о°иг0О/п1/2 =Гц* длял<Л: (1.7а) Если п> N, процессор придется заполнять несколько раз, и наилучшая ха- рактеристика достигается, если мы воспользуемся в качестве общей аппрок- симации линией, которая отражает усредненный режим матрицы. На рис. 1.10 она представлена штриховой линией, проходящей через середины ступенек, которые отражают реальную производительность. Из отсекаемого отрезка на координатной оси и тангенса угла наклона этой линии получаем п1/2 = 7У/2итоо =1У/Гц дляи>1У. (1-76) Более сложная ситуация возникает в случае использования матрицы конвей- ерных процессоров, например в проекте NASF фирмы CDC (см. гл. 6). В этом случае фактическое время выполнения операции задается как t = r[(s +1 - 1) + [л/А] ], (1.8a) где TV — число идентичных арифметических конвейеров, st — время запуска, а I — число сегментов каждого конвейера. Чтобы лучше осознать этот резуль- тат, надо представить систему в виде одного конвейера, выполняющего под- операции с суперсловами, каждое из которых содержит Nчисел. Тогда [n/7V] представляет собой число таких суперслов, которые следует обработать, и заменяет п в конвейерном уравнении (1.6а). Эта временная зависимость при- ведена на рис. 1.11 (сплошная линия) вместе с общей аппроксимацией (штри- ховая линия), откуда мы делаем вывод, что п i/2 = N (« +1 = 0,5) и гж = TV/т. (1.86) Пренебрегая несущественной разницей между 1 и 0,5 в формулах (1.66) и (1.86) для njy2, видим, что дублирование конвейеров 7Vpa3 приводит к уве- личению в N, как и ожидалось, не только максимальной скорости, но также длины полупроизводительности. Второй результат также следовало бы ожи- 63
Рис. 1.11. Мера значений для матрицы из Nконвейеров: сплошной линией показаны фактические временные данные, штриховой - аппроксимирующее общее описание. Здесь ni/2 = 5,5A,r«, =N/r ns +1 =6 дать, если интерпретировать п i/2 как суммарный параллелизм в системе, на- пример, общее число предметов, которые изготавливаются параллельно. То- гда следует ожидать, что суммарный параллелизм//конвейеров равен парал- лелизму одного конвейера, умноженному на N. 1.3.4. Спектр компьютеров Параметры и применяются нами для количественного сравнения параллелизма и максимальной-производительности всех компьютеров. Для наибольшей наглядности следует рассмотреть относительное положение раз- личных компьютеров на плоскости (ni/2, На такой диаграмме, которая изображена на рис. 1.12 и которую можно рассматривать как спектр компью- теров, отмечено большинство машин, упоминаемых в этой книге. Вычисли- тельную машину на диаграмме можно представить только одной точкой, если не учитывать того, что в большинстве случаев ее можно использовать в раз- личных режимах с разной степенью параллелизма. Поэтому мы видим, что одна ЭВМ часто отображается сплошной линией, соединяющей точки, харак- теризующие различные режимы работы. Мы также указываем направленны- ми штриховыми линиями проекты ЭВМ, которые представляют эволюцион- ное развитие. Поскольку используется логарифмический масштаб, мы про- извольно изображаем последовательные проекты (п1/2 = 0) на линиии1/2 = = 1. Это является вполне обоснованным, так как для ЭВМ, запрограммиро- ванных на последовательную обработку векторов, все-таки значение ма- ло и не равно нулю. Мы отмечали, что дублирование процессора в //раз приводит к увеличе- нию как И1у2, так и поэтому проекты ЭВМ, связанные между собой спо- собом дублирования, выстраиваются в виде диагональной линии под углом приблизительно 45й. Примерами являются скалярные, векторные и матрич- ные режимы работы машины ICL DAP (в самом низу), одно-, двух- и четы- рехконвейерные варианты машины TIASC, двух- и четырехконвейерные ва- рианты CYBER 205 (в середине диаграммы) и эволюция проекта BSP на 16 64
' „О , Моп/с 104 г 10 3 Триады • Burroughs I NASF J 32' 40 нс / /GDC NASF Ю нс / /(8-конвейерная), / Г | Триады 32' + 8’ целых чисел 10 2 10 0,1 Триады 64 2 1 . 'ж 4-конвейер- ;,»*✓ная 32 64г DAP CRAY-1 64’/ Триады Х-конвейерная 64' 2-конвейерная 32 Операции с векторами / / _ -У. .• jx / типа регистр// 2-конвеиерная 64 ч ЖЛ регистр/ /\Триады 4 ?онаяеИ4./>^с ’ Z •опера.-1ШАС1У/уая^/ хии с вектора//?? •'/я' v ли типа Х/С<у амять- аО память д>/4^ CRAY-1 64'12,5нс Одно конвейерная .160 /ДР-120В Щ7 нс скалярные' 7600 /операции BSP (скалярные операции, 80 нс) 0,01. х 2" целых чисел •. в преобразовании । Ррйдера * 8 целых чисел ,«1282 / DAP Скаляр X. матрица^! , 32', с плаваю-1 х„;щей точкойхИ Векторный режим Скалярный режим 10 102 105 п1/2 1 Рис. 1.12. Двумерный спектр ЭВМ, на плоскости (Пу2,г„) . Сплошные линии отражают разработки, обусловленные увеличением дублирования. Все операции, за исключением тех, где это указано, с плавающей точкой; значок ’’штрих” при цифрах обозначает число разрядов в представлении числа 3 Зак. 1799 65
ПЭ в проект NASF фирмы Burroughs на 512 ПЭ. Усовершенствование техно- логии, в частности, достижение более короткого тактового периода, привело к увеличению гж, оставив .без изменения что отражено на диаграмме вертикальным перемещением. Это достаточно наглядно показано на примере эволюции машины CYBER 205 (тактовый период 20 нс) в проект NASF фир- | мы CDC (тактовый период 10 нс). При сокращении времени запуска проис- | ходит уменьшение и наблюдается перемещение влево на диаграмме. Это | также способствует переходу от проекта CYBER 205 к проекту NASF фир- i мы CDC. Показанный диапазон иллюстрирует изменение компьютеров от медлен- ных арифметических устройств с большой степенью дублирования в маши- не ICL DAP (пу2 велико) до компьютеров с несколькими высокопроиз- водительными конвейерными арифметическими устройствами, например CRAY-1 (и^2 мало). Можно ожидать приблизительно одинакового коэффи- циента максимальной производительности, выраженной в миллионах опера- ций с плавающей точкой в секунду, от DAP-матрицы (128 х 128) и машины CRAY-1, однако длина полу производительности этих машин отличается на два порядка величины и они имеют совершенно различные особенности программирования. CRAY-1 в приближении обладает характеристиками по- следовательной машины (и^2 мало), a DAP почти относится к бесконечно распараллеленной машине (П]/2 велико). Поэтому эти две машины на диа- грамме разнесены по горизонтали на большое расстояние. Таким образом, горизонтальная ось перекрывает полный диапазон архитектур: от последова- тельной в левой части до высокораспараллеленной в правой. Кроме того, в подразд. 1.3.6 доказано, что компьютер решает эффективно только задание длиной вектора, превышающей и^2. Следовательно, чем больше «1/2, тем ограниченней набор задач, которые ЭВМ может решать эффективно. В этом смысле можно считать, что вдоль оси/?1/2 мы имеем распределение от наибо- . лее универсальных ЭВМ в левой части до наиболее специализированных в правой. Значение спектра (п у2, гт ) можно лучше оценить, если провести анало- гию с различными методами транспортирования. Цель транспортной систе- мы — перевозить как можно больше людей на наибольшее расстояние за на- именьшее время; единицей измерения является число пассажиро-километ- ров в час. Эта переменная соответствует параметру . В то же время сте- пень параллелизма или пц2 представляет собой число пассажиров, перевози- мых в одиночном транспортном средстве параллельно. На рис. 1.13 пред- ставлен спектр (и 1/2, ) большинства транспортных систем — от пешехода, лошади, автомобиля, корабля и самолета до ракетного транспорта будущего. Мы четко видим, что данный вид техники соответствует различным диаго- нальным линиям и что каждый тип транспорта развивался посредством уве- личения размеров транспортных средств (как п у2 и гж путем дублирования) до некоторого естественного предела. Аналогичные линии для компьютеров на рис. 1.12 отражают постоянное отношение г^/пщ или постоянную произ- водительность в зависимости от степени параллелизма устройства. Это отно- шение, которое мы называем удельной производительностью и обозначаем Лоо, является лучшей характеристикой определенного типа архитектуры ЭВМ, чем максимальная производительность или длина полупроизводитель- 66
Пешеход _________ J ...-J------------L. - - I 1 10 1O2 1O3 104 Число пассажиров /7 Рис. 1.13. Двумерный спектр транспортных систем, изображенный по аналогии с рис. 1.12 ности, рассматриваемые в отдельности. Желательно иметь большое отноше- ние, так как для достижения требуемой производительности понадобится меньшая степень параллелизма. Приведем максимальные значения удельной производительности (Мфлоп/с) для ряда архитектур ЭВМ: CDC 7600, CRAY-1.............................. 10 BSP, Burroughs NASF..............................7 CYBER 205, CDC NASF..............................1-4 T1ASC............................................0,4 STAR, 100........................................0,2 ICL, DAP.........................................0,008 - 0,04 Мультипроцессоры (на 1980г.), например, AMD АМ9511 ~0,008 - 0,02 1.3.5. Производительность программ До сих пор мы рассматривали только максимальную производительность процессора на мнимых векторах бесконечной длины. Можно использовать 3* 67
Рис. 1.14. Векторная эффективность вы- числения на универсальной ЭВМ как функция длины вектора; фактическая скорость обработки равна максимальной скорости, умноженной на эффектив- ность Рис. 1.15. Векторная эффективность вычислений на процессорной матрице (сплошная линия) и их аппроксими- рующее представление на универсаль- ной ЭВМ (штриховая линия) общую временную формулу (1.4а) для определения некоторых других чи- сел, которые характеризуют производительность ЭВМ на реальных програм- мах с конечными длинами векторов: а) средняя производительность г =n/t =г^1(1 + х~1), (1.9а) гдех = (n/ni/2); б) векторная эффективность т? =г/г«, = (1 +х-1)-1. (1-96) Связь между векторной эффективностью и длиной вектора изображена на рис. 1.14, где показано (изопределения отметим, что Т] = 0,5 при п = и1/2), что эффективность асимптотически приближается к единице по мере того, как длина вектора стремится к бесконечности. Эффективность достигает 90 % при п = 9л^2 . Для процессорных матриц кривая фактической эффектив- ности представляется дискретной, как показано на рис. 1.15 сплошной лини- ей. Штриховая линия, отражающая общую для данного класса аппроксима- цию при /iiy2 = jV/2, дает хорошее усреднение эффективности такой вычисли- тельной машины. Поучительно было бы рассмотреть производительность ЭВМ на векторах, которые могут быть как длинными, так и короткими по сравнению со зна- чением ее полупроизводительности. Для длинных векторов (п >> ni/2 и х-><х>) из выражений (1.4а) и (1.9а) получаем t =nlr„-, г =г„. (1.9в) Таким образом, время выполнения пропорционально длине вектора, а производительность является константой. В другом случае для коротких векторов (и < < ni/2 и х -* 0) t = тт"1; г =it„n. (1.9г) Следовательно, время выполнения постоянно, а производительность пропор- циональна длине вектора. Поэтому мы считаем, что представляет собой 68
соответствующий коэффициент качества при использовании ЭВМ на длинных векторах, тогда как отражает коэффициент качества при использовании ЭВМ на коротких векторах. Если при анализе производительности неудобно применять выражение (1.9а) (например, в пределах интеграла), то можно воспользоваться прямыми линиями (1.9в) и (1.9г) для областей п >/?i/2 и п < и 1/2 соответственно, чтобы хотя бы приблизительно рассмотреть зависи- мость от длины вектора. Многие параллельные компьютеры, кроме матрицы обработки векторов или конвейера с «1/2 > 0 и максимальной скоростью обработки гжу , содер- жат скалярное устройство с Hi/2 = 0 и максимальной скоростью обработки s. Граничная длина вектора лв представляет собой длину вектора, выше которой векторный процессор затрачивает меньше времени на выполнение операции с вектором, чем скалярный процессор. Используя общую формулу (1.4а), получаем лв=я1/2/(Л<-1), (1.10) где Rx = ra>y/ra>s — отношение максимальной скорости векторной обработ- ки к максимальной скорости скалярной обработки; обе измеряются числом элементов в секунду. Зависимость (1.10) изображена на рис. 1.16. Вообще Рис. 1.16. Влияние отношения макси- мальной скорости векторной обработки к максимальной скорости скалярной обработки на граничную длину вектора говоря, желательно иметь малое значение лв, иначе векторный процессор бу- дет полезен для очень ограниченного числа задач. Выражение (1.10) показы- вает, что этого можно достигнуть при малом значении п^2 или большом от- ношении скоростей векторной и скалярной обработки. В табл. 1.1 приводят- ся значения граничной длины вектора и другие параметры для некоторых ЭВМ. Таблица 1.1. Характеристические параметры некоторых параллельных компьютеров Компьютер П1/2 г^.Мфлоп/с До» "в 64' CRAY-1 10 — 20 80 13 1,5-3 48' BSP 25 - 150 50 20 1 - 8 Двухконвейерный 64' CDC CYBER 205 100 100 10 И Одноконвейерный 64' TIASC 30 12 4 7 69
Окончание табл. 1.1 Компьютер П1/2 Too, Мфлоп/с "в 64' CDC STAR 100 150 25 12 12 32' (64 X 64) ICL DAP 2048 16 400 5 Примечание. Знак обозначает разрядность. Поскольку отношение векторной скорости к скалярной обычно является значительным (порядка 10), общая производительность на реальной про- грамме зависит от доли v эквивалентных скалярных арифметических опера- ций (которые мы будем называть основными операциями), выполняемых с помощью векторных команд, по сравнению с теми, которые выполняются посредством скалярных команд. Мы будем рассматривать зто отношение как долю векторизованных арифметических операций. Тогда среднее время, приходящееся на каждую основную операцию, будет t =vtv + (1 -v)ts, (1.11а) где tv и rs — среднее время, необходимое для выполнения основной опера- ции посредством соответственно векторной или скалярной команды. Ско- рость выполнения г = г"1 максимальна при полной векторизации (г = 1, t = tv), отсюда доля максимально реализуемого выигрыша, получаемого с помощью части (г) векторизованных арифметических операций, есть g =г1Гу = [А +у(1 -Я)]-1 (1.116) где R =rvjrs = tjty =Ra>Ti — отношение реальной векторной скорости к ска- лярной для определенной задачи и представляет собой функцию длины век- тора от эффективности т). На рис. 1.17 показана зависимость g от v при раз- личных значениях R. Вполне понятно, что при большом значении R наиболь- шая часть арифметики должна быть векторизованной, если необходимо полу- чить ощутимый выигрыш в производительности. Достижение таких уровней Рис. 1.17. Влияние части вектори- рованных арифметических опе- раций на долю максимально ре- ализуемого выигрыша при раз- личных отношениях векторной скорости к скалярной рые должны быть векторизованы для получения половины максимально реализуемого выигрыша как функция отношения фактической векторной скорости к скалярной 70
векторизации может быть не очень трудным, как кажется, потому что введе- ние одной команды для вектора длиной п векторизует п основных операций, где п может быть очень велико, В качестве меры требуемой векторизации мы вводим v ii2 как часть арифметики, которая должна быть векторизована, что- бы получить половину максимально реализуемого выигрыша. Из выражения (1.116) получаем у1/2 = (Я-2)/(Я-1), (1.12а) которое в пределах больших значений R становится v Ч2 =1 -R'1. (1.126) Эта зависимость показана на рис. 1.18. 1.3.6. Производительность установки Для оценки производительности параллельного компьютера, когда указа- на смесь заданий определенной вычислительной установки, необходимо уз- нать что-нибудь о характеристиках заданий. Давайте определим функцию рас- пределения/(л), так чтобы f(n)dn представляла часть основных операций установки, которые можно выполнять с помощью векторных команд при длине вектора п - п + dn. Тогда по определению 7/(ri)dn = 1. К сожалению, у нас очень мало сведений о виде этой функции, которая может существенно отличаться для различных установок. В университетской среде можно было бы ожидать, что f (и) имеет максимум для чрезвычайно малых значений п (скажем, 10 — 100), соответствующих многочисленным относительно малым заданиям студентов, тогда как для центра прогнозирования погоды значение f (п), вероятно, будет наибольшим при и, равном нескольким тысячам узлов сетки имитационной модели прогнозирования погоды. Более того, не следует допускать, что характеристика рабочей загрузки [формы/(и)] останется не- изменной в случае замены компьютера, обслуживающего всю установку. Ра- бочая загрузка компьютера всегда является функцией свойств и характери- стик ЭВМ. После замены компьютера всегда будет происходить постепенная адаптация рабочей загрузки, обычно направленная на улучшение производи- тельности машины. Безнадежно неэффективные задания будут отброшены, переведены куда-либо еще или перепрограммированы в соответствии с новой ЭВМ. Однако, несмотря на эти оговорки, мы предположим, что функция f (п) известна и остается постоянной. Оценки производительности установки, базирующиеся на этих допущениях, должны быть на всякий случай пессими- стичными. В дальнейшем изложении мы концентрируем внимание на произ- водительности арифметических устройств и полностью игнорируем узкие места, которые могут встретиться при вводе-выводе данных. Это можно обо- сновать тем, что параллельные компьютеры, по всей вероятности, рассматри- ваются как системы, в которых достижение наилучщей лроизводительности АУ является основной целью, а также тем, что устранение узких мест при вводе-выводе представляется хорошо выясненной и, как мы полагаем, отра- ботанной процедурой. Если рассматриваемый в системе компьютер обладает максимальной про- изводительностью гсх и длиной полупроизводительности п 1/2, то средняя век- 71
торная производительность, которая может быть достигнута этим компью- тером при рабочей загрузке, специфицированной по f (п), есть Р=гоор, (1.13а) где средняя векторная эффективность п = (/ 1 f(ri)dn ,-i 77 ' (1.136) Для последовательного компьютера (т?1/2 = 0) средняя производитель- ность при рабочей нагрузке равна максимальной производительности (77 = = 77' = 1, Р = г^). При других значениях Пуг средняя векторная эффектив- ность отражает постепенное ухудшение максимальной производительности вследствие того, что степень параллелизма компьютера не равна нулю. Из-за недостатка в знаниях о функции распределения/(и) в последующем обсуждении мы только иллюстративно рассматриваем тип анализа произво- дительности системы на арифметических операциях, который в принципе можно осуществить. В ожидании большей информации мы предполагаем, что f (п) представляет собой константу в диапазоне от минимальной длины век- тора (единица) до максимальной (лпгах) • Следовательно, /(«) н max I)’1 1 < 77 < 77max, (1.14а) max’ откуда, проинтегрировав, получаем ^=(1 + 7Г2П2Ь11ППтах)"1 * (1.146) max 1 %«тах/(«1/2 1П77тах), 771/2 77тах »1. (1.14b) На рис. 1.19 иллюстрируется соотношение (1.146) для разных значений т?тах. Оно показывает, что эффективность АУ резко снижается, если степень параллелизма ЭВМ 77^2 превышает максимальную длину вектора, и падает на несколько процентов от своего максимального значения, если степень па- раллелизма ЭВМ соответствует 10, помноженному на максимальную длину вектора. Чтобы количественно охарактеризовать вышеупомянутый эффект, под- считаем значение п^2/птах, выше которого rj < 0,5- Из уравнения (1.14в) получаем (771/2/т7 max)i/2 (Алах О/(лтах^п лтах)• (115) Это соотношение, иллюстрируемое на рис. 1.20, показывает, что если умень- шение производительности более чем в два раза нежелательно, тот7^2 маши- ны не должны превышать нескольких десятых максимальной длины вектора для тех задач, которые машина должна решать. Этот режим вызван тем, что компьютер не решает эффективно задачи, в которых длина вектора меньше w 1/2 (см. рис. 1.14), и, как следствие, среднюю производительность можно поддерживать на высоком уровне, если только имеется мало задач этой кате- гории. В случае последовательного компьютера («1/2 = 0,77"= 1) максимально возможная производительность достигается при любой рабочей нагрузке. Производительность компьютера со скромной степенью параллелизма (ска- 72
Рис. 1.20. Зависимость степени парал- лелизма, необходимой для достижения средней векторной эффективности, п = = 0,5 от максимальной длины вектора Рис. 1.19. Зависимость средней вектор- ной эффективности от степени парал- лелизма при различных значениях мак- симальной длины вектора жем, < 10) будет относительно нечувствительна к характеру рабочей на- грузки, предусмотренной для данной ЭВМ. С другой стороны, при высокой степени паралллелизма компьютера (значение велико) может быть до- стигнута высокая производительность только в случае, если в рабочей на- грузке преобладают задания, у которых п Это значит, что при боль- шой степени параллелизма ЭВМ является более специализированной. По этой причине предпочтительнее было бы иметь более высокую производи- тельность без дополнительного параллелизма, однако на любом этапе эволю- ции вычислительной техники дополнительный параллелизм — это цена, кото- рую приходится платить за высокую производительность. 2. КОНВЕЙЕРНЫЕ ЭВМ 2.1. ВЫБОР И СРАВНЕНИЕ В этой главе мы подробно разбираем архитектуру, технологию и произво- дительность трех конвейерных вычислительных машин: CRAY-1, CDC CYBER 205 и FPS АР-120В. Эти машины выбраны вследствие того, что они являются коммерчески доступными, известными и, по всей вероятности, представляют интерес для наших читателей. Первым успешным векторным компьютером был CRAY-1 и к 1981 г. было продано и установлено около 40 экземпляров. Машина CYBER 205, созданная на основе машины CDC STAR 100, имеет длин- ную историю. Несмотря на то, что ЭВМ была готова только в 1981 г., она, ве- роятно, окажет существенное влияние на рынок. Обе эти ЭВМ относятся к классу больших и дорогих машин стоимостью несколько миллионов фунтов стерлингов и предназначались для удовлетворения потребностей больших на- 73
циональных научных лабораторий, где абсолютная производительность, а не стоимость или соотношение стоимость/производительность является показатель качества, по которому сравниваются ЭВМ. Первоначально они применялись для расчетов боевых средств и моделирования прогноза пого- ды, для которых никакой более дешевый инструмент не был пригоден. Мы приводим эти две машины также и для того, чтобы показать интересные раз- личия между их общими архитектурами. Машина CRAY-1 по своим размерам является небольшой и содержит 12 специализированных конвейеров для вы- полнения различных арифметических операций. Векторные регистры вклю- чены для минимизации обращений к основной памяти и уменьшения числа узких мест вследствие небольшой скорости обмена с основной памятью. Ма- шина CYBER 205 обладает большой скоростью обмена с основной памятью и базируется на одно-, двух- или четырехконвейерных устройствах, всегда ра- ботающих с основной памятью. Вследствие этого размеры машины суще- ственно возросли, а длина полупроизводительности увеличилась в 10 раз по сравнению с машиной CRAY-1. Третья машина, АР-120В, выбрана как наиболее удачная из относительно дешевых - (50 - 100) тыс. фунтов стерлингов по ценам 1980 г., которые первоначально предназначались в качестве дополнения к мини-ЭВМ для улуч- шения производительности АУ с плавающей точкой. К 1980 г. было продано свыше 1500 таких машин, которые применялись главным образом для обра- ботки сигналов и анализа сейсмических данных. Несмотря на то, что они об- ладают только одной десятой абсолютной асимптотической производитель- ности (Гоо) больших машин, они в 10 раз эффективнее в стоимостном отно- шении. Поэтому машина АР-120В и другие, аналогичные ей, привлекают вни- мание предприятий с ограниченными ассигнованиями на мини-ЭВМ, но для которых существует потребность в больших объемах расчетов с плавающей точкой. Много интересных особенностей можно увидеть в архитектуре маши- ны АР-120В, в том числе параллельное синхронное управление всеми устрой- ствами посредством одной команды. Существуют много компьютеров, которые можно было бы описать в дан- ной главе, например Texas Instruments Advanced Scientific Computer (про- ект. с множеством новых свойств, но сейчас не имеющих продолжения), CDC STAR 100 (сейчас модернизирована и схожа с CYBER 205), IBM 3838 для матриц (не программируемая пользователем) или АР/130 фирмы Data General (предназначена для удовлетворения тех же требований, что и машина EPS АР-120В). Некоторые из этих ЭВМ кратко описаны в гл. 1, другие более полно - Д. Паркинсоном [168]. Наш выбор компьютера может быть в ка- кой-то степени произвольным, но мы надеемся, что он окажется успешным. Далее при сравнении мы будем рассматривать: физическое размещение, чтобы дать понятие о размерах и внешнем виде машины; общую архитекту- ру, чтобы оценить основную память, магистрали данных, скорость передачи и вычислительные элементы; технологию, чтобы осознать, например, уро- вень интеграции; набор команд, чтобы дать представление о его богатстве; программное обеспечение, чтобы оценить его возможности, и, наконец, про- изводительность, оцениваемую параметрами хж тлп^, получаемыми, где это возможно, с помощью прогона программ на ЭВМ. Дополнительной причиной выбора машин CRAY-1, CYBER 205 и АР-120В было то, что авторы имели воз- можность прогнать свои программы на этих машинах. 74
2.2. КОМПЬЮТЕР CRAY-1 Машина CRAY-1 выпускается фирмой Cray Research1 в Чиппева Фолс, шт. Висконсин, США. Первый экземпляр был поставлен в Лос-Аламосскую науч- ную лабораторию, шт. Нью-Мексико, в феврале 1976 г. Кроме документации, выпущенной компанией, имеются отдельные публикации Р. Хокни [103], Р. Рассела [194] иМ. Дангуэрта [58], в которых приводится описание маши- ны и ее производительности. Полезным документом также является статья, помещенная в сборнике докладов по электронной обработке данных [9]. Данные по машине CRAY-1 взяты из справочного руководства по вычисли- тельной системе CRAY-1 [49]. 2.2.1. Физическое размещение Самой поразительной особенностью машины CRAY-1 является ее неболь- шие размеры. На рис. 2.1 показана машина в своей минимальной конфигура- ции вместе с мини-ЭВМ ECLIPSE фирмы Data General, работающей в каче- стве периферийной ЭВМ, устройством считывания с перфокарт, дисководом и печатающим устройством для ввода и вывода. Машина состоит из централь- ной цилиндрической стойки диаметром 1,37 м, высотой 1,98 ми диаметром в основании на уровне пола, равным приблизительно 2,74 м. Центральная стойка делится на три 90° -ных сегмента, в каждый из которых входят четыре клинообразных стойки, содержащих до 144 схемных модулей. Каждый мо- дуль содержит пару печатных плат, смонтированных на противоположных сторонах медной теплоотводящей пластины. Пластины вставляются в верти- кальные литые алюминиевые штанги охлаждения (рис. 2.2). Выступающие вертикальные части центральной стойки, которые можно видеть на рис. 2.2, и есть охлаждающие штанги. Фреон циркулирует по трубкам из нержавею- щей стали, вставленным в штанги охлаждения, которые, таким образом, охлаждаются до 21°С. Температура медной пластины поддерживается на уровне 25° С, а модуля - 48 — 54° С. Сиденья вокруг основания машины CRAY-1 закрывают источники питания и некоторые трубопроводы, подсоеди- ненные к системе фреонового охлаждения. И, наконец, в систему охлажде- ния входят два компрессора на 25 т хладагента, размещенные вне помеще- ния, где установлена ЭВМ. Электродвигатель мощностью 150 кВт, также ус- танавливаемый вне этого помещения, обеспечивает трехфазное первичное напряжение 208 В (400 Гц). Общая мощность, потребляемая ЭВМ, составля- ет 128 кВт, большая часть которой затрачивается на фреоновую систему ох- лаждения. На рис. 2.3 показана печатная плата размером 15,2 х 20,3 см с интеграль- ными схемами, помещенными в корпус. Платы имеют пять слоев, из кото- рых два внешних используются для цепей прохождения сигналов, а три внут- ренних - для подведения напряжения — 5,2 и —2 В и заземления. Каждая плата может содержать до 144 кристаллов и приблизительно 300 резисторов, 1 Штабквартира: 1440 Northland Drive, Mendota Heights, Minnesota 55120, USA, Отде- ление в Великобритании: Cray Research (UK) Ltd, Seymour House, The Courtyard, Denmark Street. Wokingham Berkshire, RGII 2BB. 75
Рис. 2.1. Машина CRAY-1 (на переднем плане) с минимальной конфигурацией, мини-ЭВМ фирмы Data General в качестве периферийной машины (на заднем плане), считывающим устройством с перфокарт, дисководом и устройством печати (воспроизводится с разре- шения фирмы Cray Research) Рис. 2.2. Вертикальная колонка печатных плат в машине CRAY-1 (воспроизводится с разрешения фирмы Cray Research)
(KF'' • >Ч .» J. 14, - , 1SI I । k- I « { 1» 1 I I, i » ; t | f « (' ’ < I » ‘ 1 I 1 И. t • : < ♦ * * 1 n в? яи m ми s ем n s* M Att M ; wB ?!£•& WMM* WMmI WS3I fli ММ* МММ ! ' йёйййй ; СТИвшЗ CE3W ^Pr rffr W ’ ’’ . . , *• Mhitl «шаХХ -; SIQSlEs ЕЯЕВ SS whjiiij. чМВ WFPf7ЯЯЯ» ’ i i • 1 '»"“" '< < J- \ - If \ ’ f У Л : ‘ д—-^r» .„ ,La‘ —»—-£? XL2L й^й<1 ^LIX. iXj^K йЦмг Mfc 1 : ЭЭЗЭ Ш8ЙЕ BBSS ; fe-1 . ; ! t У1 I.; th- .^i,l ааХашХ Ллцмав* jkj-l-л, t < ; I ; «□□3 BSSsES BSSS ' ’ TTfr тТГ .lr'*T T’W Hw t^T ?? | TH г- НЧ* fJJ1’ j ; •’ • i. <: а¥$до*Х UftXJL Хжш№ ? ’’ ’ • Ш : :A > * < ;; < ; ЗЭЗЙ ЙЗЁ6 ECEfe ^2 f Ш1 MS& ,5a»4 SBI МММ hm яа&& i «Цр СЯ Ем^ в* W* Mi iiPi вл fflti Mi 3ps f№ Д? ° » ^ЧгН ууМ* i^W тг^г W™* Mwr «яяь Pm* tFi®* IWm ’ Амв <Ш» <« мА ИЛ isA MA Рис. 2.3. Печатная плата размером 15,2 X 20,3 см с интегральными схемами (воспроиз- водится с разрешения фирмы Cray Research) скомпонованных в блоки. Во всех модулях применяются пять типов ИС, по- мещенных в герметичные плоские 16-выводные корпусы, и два типа резисто- ров. Машина содержит всего 1662 модуля 113 различных типов. Высокая производительность машины CRAY-1 достигается отчасти за счет компактного расположения печатных плат, что приводит к укорачиванию цепей прохождения сигнала и сокращению задержки распространения. Это можно видеть на рис. 2.4, на котором показано назначение печатных плат в различных частях трех сегментов центральной стойки. В левом и правом сег- ментах находится основная память машины, а в центральном — центральный процессор с соответствующими регистрами. Конвейеры, выполняющие опе- рации умножения с плавающей точкой, сложения и обратного преобразова- ния вместе со скалярными устройствами и устройствами адресной арифме- тики занимают верхнюю часть центрального сегмента. В нижней части распо- лагаются буферы команд и логические схемы выдачи команд, векторные блоки и регистры, каналы ввода-вывода. Назначение этих устройств более подробно рассматривается в подразд. 2.2.2. Емкость подставляемой основ- ной памяти может составлять 0,25, 0,5 или 1 Мелов, а также 2 или 4 Мелов в 77
Память, 0г5 Мелов Центральный процессор _________А___________ Память, 0,5 Мелов Конвейер уш с плавающей _Г «ожения точкой Конвейер сложения с плавающей точкой Сложение с фиксированной точкой Скалярные регистры Регистры А Обратная аппрокси- мация Устройство скалярного сдвига Управление доступом к памяти Адресный сумматор Устройство умножения с фиксиро- ванной точкой Устройство обработки 1 команд БСР | Устройство перемножения Часы Регистр длины вектора БМР БМР Устройство векторного сдвига Программный счетчик Регистр следую - щей команды Устройство контроля по четности Устройство векторного сложения Буфер команд Устройство векторных логических операций Устройство контроля по четности о 2 Устройство пересылки вектора в функциональные устройства Векторные регистры Vo — V7 13 9 5 1 Устройство ввода-вывода 3 7 11 15 БСР Рис. 2.4. Размещение устройства памяти и логических схем в центральной стойке маши- ны CRAY-1 машине CRAY-1. Она делится на 16 банков памяти с максимальной емкостью по 64 К 16-разрядных слов. Каждый модуль секции памяти обслуживает один разряд слова, следовательно, для хранения всех слов емкостью по 64 разряда для данных и 8 разрядов для контроля ошибок в одном банке тре- буется 72 модуля. Поэтому один банк размещается в одной половине верти- кальной колонки (называемой шасси). Номера банков памяти указаны на рис. 2.4. В каждом банке бит младшего разряда (БМР) хранится в середине колонки, а бит старшего разряда (БСР) располагается либо вверху, либо внизу. Различная емкость памяти достигается путем изменения числа или ем- кости кристаллов памяти на плате. 78
2.2.2. Архитектура Архитектура машины CRAY-1 изображена на рис. 2.5. В целом она включа- ет в себя основную память, получающую данные и снабжающую данными на- бор скалярных и векторных регистров. Арифметические и логические опера- ции выполняют 12 независимых функциональных устройств, взаимодейству- ющих с регистрами. Максимальная емкость основной памяти машины CRAY-1, составляющая 106 1 64-разрядных слов, хранящихся в полупроводниковой памяти с време- нем выборки и цикла 50 нс, подразделяется на 16 банков памяти, которые могут работать одновременно. Емкость была увеличена до 4 Мелов в машине CRAY-1S и подразделяется на 8 или 16 банков памяти. Длительность рабоче- го цикла равна 12,5 нс, следовательно, после поступления запроса банк памя- ти будет занят в течение четырех рабочих циклов. Пока банк занят запросом, обращения к нему нельзя осуществлять, но можно обращаться к другим бан- кам, которые не заняты, с интервалом в один рабочий цикл. Следовательно, максимальные возможности основной памяти оцениваются выдачей одного 64-разрядного слова каждым из 16 банков памяти через каждые 50 нс, т. е. со скоростью 320 Мслов/с, которая, как принято говорить, является скоро- стью обмена с памятью. Однако только одна четвертая часть этой пропуск- ной способности имеется в распоряжении для передачи данных (80 Мслов/с). Имеются также четыре буфера команд, каждый из которых содержит 64 16-разрядных командных слова и подсоединяется к памяти посредством 64- разрядной шины данных. Следовательно, по шине данных, подключенной между основной памятью и буферами команд, может передаваться четыре 64-разрядных слова за рабочий цикл, что соответствует скорости обмена 320 Мслов/с, т. е. в точности максимальной способности памяти к передаче слов. Эти максимальные способности используются, когда все команды вы- бираются из отдельных банков памяти и если последующие команды хранят- ся в следующих друг за другом ячейках памяти. Однако ширина шины данных между регистрами и основной памятью со- ставляет только 64 разряда. Таким образом, скорость передачи может варьи- роваться от максимальной, равной передаче одного 64-разрядного слова за тактовый период (пропускная способность шины данных — 80 Мслов/с или 0,25 максимальной способности памяти к передаче данных) в случае выбор- ки слов из отдельных банков памяти, до минимальной, равной одному слову за четыре тактовых периода (20 Мслов/с), когда слова выбираются из одно- го банка. Следующие друг за другом адреса памяти распределяются в после- дующих банках памяти, поэтому, за исключением двух случаев, когда адреса поступают с инкрементом 8 или 16, при котором скорость уменьшается соот- ветственно в два или четыре раза, имеется возможность поддержания макси- мальной скорости. Цепь данных между основной памятью и регистрами машины можно мыс- ленно представить себе как одиночный конвейер шириной 64 разряда, по ко- торому можно передавать данные из основной памяти в регистры, или наобо- 1 Фактически максимальная емкость основной памяти равна 220 (-1 048 576) слов; имеющееся несущественное отличие мы игнорируем. 79
Регистр Р ( 24 разряда) SEEDED 8 разрядов на [ Ветвление | Буфер О Г”Чз О *16- 1 64-разрядное слово Исправление ошибок [ Управление 63 320 Мслов/с_________ 4 слова/тактовый период <( 4 магистрали X 64 разряда) Прерывание Управление Буферы команд 64 16-разрядных команд в каждом в целом 256-командный стек Длина вектора (7 разрядов) Целочисленное сложение Целочисленное умножение Кристалл 4/5 вентиля И АО А1 А2 АЗ А4 А5 А6 АТ Адресные регистры (24 разряда) 6-нс кристалл 1 X 16 Целочисленное сложение Сдвиг Логические операции 60 61 52 S3 54 Подсчет совокупностей Сложение с плавающей точкой S5 S6 S7 Сдвиг ВО 81 82 83 |1 слово/такто- вый период 1—80 * Мслов/с 862 В 63 Адресные буферные регистры (24 разряда) 1 слово/ 2 тактовых периода Скалярные регистры (64 разряда) ТО Т1 Т2 ТЗ Т62 Т63 1 слово /так|- товый пе- риод 1 Мслово Порт, 320 Мслов/с Биполярная память Мслов/с Цикл памяти 50 нс Скалярные _______ буферные регистры (64 разряда) (64 разряда) Обратная аппроксимация Целочисленное сложение Логические операции 12 функциональных устройств Умножение с плавающей точкой О V0 62. 65 1 слово/2 тактовых периода 1 слово/тактовый период (16 банков) Векторные регистры ( 64-разрядные элементы) 12 каналов 1 слово / 100 нс Ю Мспов / с 12 каналов А-регистр Ю6 64-разрядных слов) Прерывание Управление вводом-выводом Рис. 2.5. Структурная схема архитектуры машины CRAY-i (тактовый период - 12,5 нс длина слова - 64 разряда)
рот, но не допускается выполнение этих операций одновременно. Длина кон- вейера составляет 11 тактовых периодов. Упомянутые скорости обмена дан- ными между регистрами и основной памятью являются низкими для ЭВМ с такой скоростью выполнения арифметических операций, как у машины CRAY-1. Если при выполнении арифметической операции (например, умно- жения с плавающей точкой, когда имеются два аргумента и один результат), все данные должны считываться из основной памяти и засылаться обратно в нее, то скорость обмена с памятью должна быть в три раза больше скорости вычислений. Максимальная скорость вычислений у CRAY-1 составляет 160 Мфлоп/с (80 млн. операций умножения и 80 млн. операций сложения в се- кунду) , откуда требуемая скорость обмена на вышеупомянутой основе со- ставляет 480 Мслов/с. Хотя скорость обмена с памятью почти удовлетворяет этому требованию, ограниченная ширина шины данных, подключенной к ре- гистрам, позволяет использовать для вычислений только 80 Мслов/с. Таким образом, машина CRAY-1 в лучшем случае обладает только одной шестой пропускаемой способности, которая необходима для поддержания ее вычис- лительных возможностей. Очевидным улучшением было бы расширение ши- ны данных, подключаемой к регистрам, до 256 разрядов, что позволит ис- пользовать для вычислений максимальную скорость обмена с памятью, в слу- чае передачи команд. Машина, конечно, проектировалась на той основе, что многие операции могут выполняться с размещающимися в регистрах данны- ми до того, как результаты будут выданы обратно в основную память. Обыч- но такой результат можно достичь с помощью тщательного программирова- ния на ассемблере, но производительность, получаемая на Фортран-програм- мах, часто меньше ожидаемой вследствие низкой пропускной способности цепи регистр—основная память. В регистрах применяется 6-нс логика, восемь 24-разрядных адресных регистров (АО — А7), восемь 64-разрядных скаляр- ных регистров для операций с плавающей точкой (SO — S7) и восемь вектор- ных регистров для операций с плавающей точкой (V0 — V7). Каждый век- торный регистр содержит до 64 64-разрядных чисел с плавающей точкой. Кроме этого между адресными регистрами и основной памятью устанавли- вается 64 буферных регистра (24-разрядных регистров, ВО - В63) и 64 бу- ферных регистра между скалярными регистрами и основной памятью (64- разрядных регистров, ТО — Т63). Основная память может засылать данные либо в регистры А и S с максимальной скоростью, равной одному слову за каждые два рабочих цикла (40 Мслов/с), либо в регистры В, Т и V с макси- мальной скоростью, равной одному слову за тактовый период (80 Мслов/с). Буферные регистры используются для хранения промежуточных результа- тов, которые могут передаваться в регистры А и S за один тактовый период. Двенадцать функциональных устройств получают данные и выдают их только в регистры A, S, V и векторный регистр маски (VM). Функциональ- ные устройства, которые могут работать одновременно, делятся на четыре группы (табл. 2.1). Время такта т, равное 12,5 нс, подразделяются на восемь интервалов задержки вентиля по 1,56 нс каждый (включая задержку распро- странения) . Все функциональные устройства являются конвейерными и мо- гут воспринимать новый набор аргументов каждый новый тактовый период. Время работы устройства представлено в виде длины конвейера в наносекун- дах или числом тактовых периодов. Поэтому значение т целочисленного ум- 81
Таблица 2.1 Функциональное устройство Время работы, нс Число такто- вых периодов Адресное (24-разрядное) 1) целочисленное сложение 25 2 2) целочисленное перемножение 75 6 Скалярное (64-разрядное) 3) целочисленное сложение 37,5 3 4) операция сдвига 27 или 37,5 2 или 3 5) логическая операция 12,5 1 6) подсчет совокупностей 37,5 или 50 3 или 4 АУ для операций с плавающей точкой 7) сложение 75 6 8) умножение 87,5 7 9) обратное преобразование 175 14 Векторное (64-разрядное) 10) целочисленное сложение 37,5 3 11) сдвиговая операция 50 4 12) логическая операция 25 2 Операции Основной памяти (64-разрядные) загрузка скалярного регистра из основной памяти 137,5 11 загрузка векторного регистра из основной памяти 87,5 7 ножения является переменной величиной от I (см. подразд. 1.3.1). В случае скалярных команд оно представляет время, отсчитываемое с момента выда- чи команды до момента, когда результат скалярной операции после занесе- ния в регистр результатов готов для работы с другой командой. В случае векторной команды требуется дополнительный тактовый период для пере- сылки каждого операнда из векторного регистра на ’’верхушку” функци- онального устройства и еще один цикл для передачи каждого элемента ре- зультата со ’’дна” конвейера в векторный регистр результатов. Следователь- но, имеем временную формулу векторной команды на обработку п элементов: t = (/ + 2 + п)т. (2.1а) Сравнивая (2.1а) с общей формулой (1.6), видим, что время запускай дли- на полупроизводительности для векторных операций регистр — регистр зада- ется соответственно s = 3, и1/2 =s +/ - 1 =1 +2. (2.16) Адресные устройства предназначены для адресных, индексных и других не- громоздких вычислений с целыми числами, примерное значение которых меньше 16 • 106. Арифметические действия с этими числами выполняются в дополнительном коде. Данные выбираются из регистров Айв них же засыла- ются обратно. Скалярное устройство оперирует исключительно с 64-разряд- ными данными регистров S и, за исключением подсчета совокупностей, вы- дают результаты в регистры S. Арифметические операции целочисленного 82
сложения выполняются в дополнительном коде. Сдвиговые операции выпол- няются либо с 64-разрядным содержимым регистра S (время работы устрой- ства — два тактовых периода), либо со 128 разрядами цепочки из двух сое- диненных регистров (время работы устройства - 3 тактовых периода). Ло- гическое устройство выполняет побитовые манипуляции с 64-разрядными ве- личинами и является частью модулей, содержащих регистры S. По этой при- чине нет необходимости в выводе данных из модулей регистров S и функция может быть выполнена за один тактовый период. Устройство подсчета сово- купностей отсчитывает число бит, имеющих единицу в операнде (время рабо- ты устройства — 4 тактовых периода) или число нулей, предшествующих первой единице операнда (время работы устройства — 3 тактовых периода). Результирующий 7-разрядный счет засылается в регистр А. Векторные устройства выполняют операции с операндами двух регистров V или регистра V и S. Результат заносится в регистр V или в векторный ре- гистр маски. Пары последующих операндов передаются в функциональное устройство каждый рабочий цикл. Соответствующий результат появляется на выходе устройства на I тактовых периодов позже, где I — время работы функционального устройства. После этого скорость выдачи результатов бу- дет равна одному результату за тактовый период. Число элементов, обраба- тываемых при такой векторной операции, равно числу, занесенному в 7-раз- рядный регистр длины вектора (VL). Используемые элементы — это 0, 1, 2, . . . и т. д. вплоть до специфицированного числа. Управление векторными операциями производится 64-разрядным векторным регистром маски, при- чем и-й бит маски соответствует и-му элементу векторного регистра. Ре- гистр VM используется совместно с командами отличия элементов вектора или слияния двух векторов в один (см. подразд. 2.2.4). Векторное устрой- ство целочисленного сложения выполняет поэлементное сложение и вычита- ние 64-разрядных целых чисел в дополнительном коде. Векторное устрой- ство сдвига смещает 64-разрядное содержимое элементов вектора или 128- разрядное содержимое пар элементов смежных векторов. Отсчет числа сдви- гов хранится в регистре команд или регистре А. Векторное логическое уст- ройство выполняет побитовые логические операции с элементами вектора и, кроме того, организует 64-разрядные маски в регистре VM. Три функциональных устройства с плавающей точкой выполняет как ска- лярные, так и векторные арифметические операции с плавающей точкой. Аргументы и результаты поэтому могут находиться в регистрах S или V. В 64-разрядном числе с плавающей точкой со знаком отводится 48 разрядов на мантиссу, обеспечивающую точность примерно в 14 десятичных цифр, и 16 двоичных разрядов на порядок, что обеспечивает диапазон представления нормализованных десятичных чисел примерно от 10”2500 до 1О+2500. Сложе- ние, умножение и деление с плавающей точкой выполняется в отдельных уст- ройствах. Деление выполняется в устройствах обратной аппроксимации и умножения посредством итерационной процедуры. Такой подход позволяет использовать конвейерную обработку на операции умножения. Алгоритм деления для вычисления отношения двух скалярных величин S1/S2 реализуется четырьмя машинными командами со следующими дей- ствиями; Устройство RA S3 = 1/S2 обратная аппроксимация (2.2а) 83
S4 = (2 — S3 * S2) обратная итерация (2.26) Устройство -sS5 = Sl*S3 умножение на числитель (2.2в) умножения S6 = S4*S5 коррекция результата (2.2г) Эта процедура нам знакома как итерация Ньютона обратной величины S2. Это та же самая проблема, что и нахождение нуля функции f(x) = S2 - х"1, (2.3а) которая имеет производную /(х) =х-2. (2.36) Итерация Ньютона определяется из выражения х<"+1) =х(п) -f(x(^)lf\x(^), (2.3в) откуда x("+D = (2-S2*x("))x(«), (2.3г) где п — номер итерации. В вышеуказанной программе команда (2.2а) фор- мирует аппроксимацию обратной величины S2 с помощью устройства обрат- ного преобразования. Значение этой аппроксимации заносится в S3 и соот- ветствует х<"> в выражениях (2.Зв,г). Команда итерации обратной величи- ны (2.26) выполняется устройством умножения с плавающей точкой, кото- рое посредством одной команды вычисляет содержимое в скобках в выраже- нии (2.3г). Команда умножения (2.2в) умножает первоначальное значение аппроксимации (S2)'1 на числитель S1, команда умножения (2.2г) исполь- зует коррекцию, специфицированную по выражению (2.3г). После одной итерации результат представляется с точностью до 47 разрядов, т. е., по суще- ству, имеется полная разрядность 48-разрядной мантиссы. Умножение на чис- литель до выполнения коррекции вызвано тем, что команды (2.26) и (2.2в), хотя и используют одно и то же устройство, могут начинаться в последующие тактовые периоды, тогда как команде (2.2г), если она прошла первой, приш- лось бы ожидать окончания работы команды (2.26), поскольку для ее выпол- нения необходимо значение S4. С учетом упорядочения выражений (2.2) деле- ние завершается через 29 тактовых периодов, что соответствует 2,7 Мфлоп/с. Если команды (2.2) заменить векторными и расположить в порядке (2а, 2в, 26, 2г), то команды (2.2а) и (2.2в) можно связать в цепочку (см. далее). Поэлементное деление двух векторов может выполняться с асимптотической средней скоростью 27 Мфлоп/с. В компьютере CRAY-1 применяются либо однопакетные (16-разрядные), либо двухпакетные (32-разрядные) команды. Перед выполнением команды располагаются в четырех буферах, каждый из которых может содержать 64 однопакетные команды или эквивалентные комбинации команд различ- ной длины. Буферы заполняются циклически из основной памяти. В случае отсутствия в буферах необходимой команды следующий буфер в течение цикла полностью заполняется одним 64-разрядным словом (4 пакета), вы- бираемым параллельно из каждого банка памяти. Имеющийся 22-разрядный счетчик программ (Р) содержит адрес следующей выполняемой команды, 16-разрядный пакет следующих команд (NIP) для хранения следующей коман- ды, 16-разрядный пакет текущих команд (CIP) для хранения команды, ожи- 84
дающей вывода, и 16-разрядный пакет ’’нижней” части команд для хранения второго пакета двухпакетной текущей команды. Команда может быть выдана (например, передана функциональному уст- ройству для выполнения) в случае незанятости блока предыдущей опера- цией и если необходимые регистры ввода и результата не зарезервированы другими командами, выполняемыми в данный момент. Разные команды ус- танавливают различное резервирование тех регистров, которые они исполь- зуют; за подробностями следует обратиться к руководству по работе маши- ны CRAY-1 [49]. В общих чертах векторная команда резервирует на длитель- ность выполнения операции векторный регистр вывода, а векторный регистр ввода — до момента, пока последний элемент не поступит на ’’вершину” кон- вейера. Однако если векторная команда использует скалярный регистр, то он не резервируется, так как копия скаляра находится в функциональном устройстве. Следовательно, содержимое скалярного регистра может изме- няться в течение тактового периода после выдачи векторной команды. Ана- логично этому содержимое регистра длины вектора имеется в функциональ- ном устройстве и регистр VL может быть изменен непосредственно после вы- дачи команды. Отсюда следует, что команды с различной длиной вектора мо- гут выполняться одновременно. В случае скалярных команд резервируется только регистр результатов, чтобы предотвратить считывание его содержимо- го другими командами прежде, чем оно было обновлено. Особенностью архитектуры машины CRAY-1 является способность органи- зовывать цепочку из серии векторных операций для совместной работы в ка- честве одного непрерывного конвейера [131]. Это стало возможным вслед- ствие устранения резервирования векторной командой регистра результатов в течение тактового периода, когда первый результат сходит с конвейера. Временным интервалом цепочки здесь обозначается период, который состоит из времени работы функционального устройства и двух тактовых периодов после выдачи векторной команды. Если команде, ожидающей вывода в CIP, необходим свободный регистр, то она может быть выдана в течение общего временного интервала с выборкой результатов, поступающих из первого конвейера команд непосредственно в свой конвейер, не ожидая, когда пер- вая команда завершит арифметические действия со всеми своими элемента- ми. Различие между бесцепочечной и цепочечной операциями иллюстрирует- ся на рис. 2.6. На верхней диаграмме показано время, приходящееся на вы- полнение трех команд в случае отсутствия цепочки. Время выполнения бесцепочечной операции при последовательности из m векторных команд равно m t =SiT[s/-+4 + (п- 1)]. (2.4а) Выразим его как время, приходящееся на одну векторную операцию, f/w =rJ1(«i/2+«), (2.46) где средняя асимптотическая производительность Г»=т-1, (2.4в) 85
Рис. 2.6. Временная диаграмма для трех бесце- почечных векторных операций а, b и с (а) и для тех же операций, если они сцеплены вместе (б). В этом примере s + I =10ии=50. Время обработ- ки fc-ro элемента определяется горизонтальным отрезком проведенной от к-го устройства на вер- тикальной оси. а средняя длина полупроизводительности +/г- -l) = (s+ / -1). В случае т цепочечных операций имеем: t =г[?1 (ty + /г) + («-!)]• Применяя временное выражение (2.46), но теперь для Ъ = тт~1, получаем __ т n1/2 = S (S; +/;•) - 1 = W(s + /) - 1. (2.4г) (2.5а) (2.56) (2.5в) Вторые части равенств в выражениях (2.4г) и (2.5в) представляют собой результат, получаемый при допущении, что все конвейеры имеют одинако- вые время запуска и конвейерную длину, как это примерно и есть на самом деле. Из сказанного мы видим, что в среднем поведение последовательности бесцепочечных векторных операций является таким же, как и поведение оди- ночной операции. Однако если т векторных операций объединить в цепочку, то как асимптотическая производительность, так и длина полупроизводи- тельности увеличиваются в т раз. Этот эффект отмечался ранее в гл. 1 как результат дублирования процессоров. При наличии цепочки он возникает вследствие того, что т конвейеров работают одновременно, увеличивая тем самым как производительность (г^), так и степень параллелизма («1/2). В случае бесцепочечной операции конвейеры работают последовательно и поэто- му средняя скорость вычислений или степень параллелизма не изменяется. Устройство ввода-вывода машины CRAY-1 состоит из 24 каналов ввода- вывода (12 для ввода и 12 для вывода). Эти каналы делятся на четыре груп- 86
пы по шесть каналов в каждой. Каждой группе присваивается квант време- ни, который сканируется один раз каждые четыре тактовых периода для за- проса памяти. Группы 16-разрядных данных размещаются в 64-разрядных блочных регистрах в каждом канале. Максимальная скорость передачи дан- ных - 64-разрядное слово в течение 100 нс (10 Мслов/с) на канал. В случае, если восемь каналов являются одновременно активными с максимальной скоростью, достигается максимальная пропускная способность памяти, рав- ная 80 Мслов/с. Эта теоретически максимальная скорость ограничивается скоростью периферийных устройств и другими действиями при обращении к памяти из центр'ального процессора (ЦП). Для удобства можно кратко описать архитектуру компьютера CRAY-1 при помощи алгебраически выраженной структурной нотации, рассмотренной в подразд. 1.2.4. Игнорируя устройство ввода-вывода и подробности регистро- вых соединений, краткое описание, представляющее существенные свойства машины, будет выглядеть так: С (CRAY-1) = Iv^s32 (12Ер - М2^16М1^К *64 (осн.) ], М2(регистры) ={ 8Мб4 *64 (векторн.), 72М1 * 64 (скалярн.), 72Mi*24 (адресн.) }, 12Ер (функциональные устройства) = {3Fp64> 7Вр64, 2Вр24 }. Дополнительно всю сложность цепей данных и устройства ввода-вывода в соответствии с рис. 2.5 можно выразить так: С(CRAY-1) = II [ {3Fp — {Р2,РЗ},Р1,24Р4}-^_ а- 16М|$К II = {Ivl^s2 — 4Мб4*1б 256 а I 3Fp = { Fp64 (+). FpM (*), Fp64 CO } Pl (адрес) = {Bp24 (+), Bp24 (*) } - M8 *24 (А) - { -М64 * 24 (В) Р2(скалярн.) = 4Вр — М8*64 (S) - {-М64 * 64 (Т) 4Вр = { Вр64 (+), Вр64 (сдвиг, оп.), ВРб4 (лог. оп.), Вр64 (отсчет совок.) } РЗ (векторн.) = { Вр64 (+), Врм (сдвиг, оп.), Врм (лог. оп.) } -8M64 * 64 (V)-^- 24Р4(1/О) =4{б {D-IO-{Mm,2M24} В 1979 г. фирма CRAY объявила о создании компьютеров серии CRAY-1S, в которых существенно расширены возможности устройства ввода-вывода по сравнению с первоначальной машиной CRAY-1. Серия CRAY-1S представ- ляет собой семейство из 12 усовершенствованных вычислительных систем на основе процессора CRAY-1 с расширением основной памяти до 4 Мелов и че- тырьмя процессорами ввода-вывода с быстродействием 80 млн. команд/с. Процессоры ввода-вывода — это мощная подсистема ввода-вывода, которая 87
освобождает процессор CRAY-1 от обработки прерываний и функций буфери- зации данных. Подсистема ввода-вывода может обрабатывать до 48 каналов ввода-вывода, из которых 16 могут быть блок-мультиплексными каналами, совместимыми с машинами фирмы IBM. Подсистема включает в себя буфер- ную память на МОП-структурах емкостью 0,5 или 1 Мелов и подключает пе- риферийные устройства к центральной памяти CRAY-1 по каналу с пропуск- ной способностью 850 Мбит/с. Подсистема ввода-вывода размещается в до- полнительном 90°-ном сегменте, состоящем из четырех стоек модулей, ко- торый завершал бы цилиндр машины CRAY-1. Однако чтобы иметь доступ к внутреннему монтажу, дополнительный сегмент выполняется как отдель- но стоящее устройство. 2.2.3. Технология Машина CRAY-1 предназначалась для продажи большим научно-исследова- тельским центрам в качестве дополнения или замены существующих ком- пьютеров, таких как CDC 7600 и IBM 360/195. В отличие от машины ILLIAC IV, которая была пионером в разработке некоторых технологических при- емов (см. подразд. 1.1.4), здесь не было предпринято попыток к экспери- ментам с новой технологией; применение любой технологии, которая не бы- ла тщательно проверена и отработана, привело бы к риску срыва выпуска ма- шины через четыре года. Короткий период проектирования все же означает, что выбор компонентов был сделан примерно в 1973 г., гораздо позже при- нятия решения для конкурентных машин TIASC и CDC STAR 100. Следова- тельно, для машины CRAY-1 были выбраны известные технологические про- цессы, а новые свойства машины проявились главным образом в ее архи- тектуре. Основная память емкостью 1 Мелов компьютера CRAY-1 строилась наБИС- кристаллах 1024 х 1, разработанных фирмой Fairchild по изопланарной тех- нологии. Специально подобранные кристаллы имеют максимальное время цикла считывания — записи 50 нс. В машине CRAY-1 используются кристаллы полупроводниковой памяти емкостью 4 кбит, благодаря чему максимальная емкость памяти возрастает до 4 Мелов в одном и том же физическом про- странстве. Дешифраторы, адреса, совместимые по уровням сигналов со стан- дартными логическими уровнями ЭСЛ-схем (см. ниже), монтируются в кор- пус. Буферы команд машины CRAY-1, а также регистры В, Т и V собираются на полупроводниковых регистровых кристаллах 16 х 4 с временем цикла считывания — записи 6 нс, который хорошо вписывается в рабочий цикл 12,5 нс. Регистры А и S строятся из 5/4 НЕ—И ЭСЛ-вентилей временем за- держки 1 нс, которые используются также для логических схем процессора (см. ниже). В компьютере используются два типа ЭСЛ-схем с различным быстродей- ствием. В процессоре, за малым исключением, применяется логический крис- талл одного типа. Этот кристалл, имеющий один пятивходовый и один четы- рехвходовый логический вентиль (5/4-вентиль), обеспечивает на выходе как обычные, так и инверсные сигналы, которые управляют загрузкой. Все ре- гистры-защелки, сумматоры, вычитающие устройства и т. д. формируются на этом основном быстродействующем логическом кристалле, время задержки 88
вентиля которого составляет 0,5 — 1 нс. Время перехода от нижнего уровня напряжения к верхнему (длительность фронта) равно 1 нс или менее. Более медленный вариант 5/4-вентиля, изготовленного по ЭСЛ-технологии (фирмы Motorola), является самым подходящим для обеспечения адресной нагрузоч- ной способности по выходу в модуле памяти, поскольку предъявляются низ- кие требования к источнику питания. В машине применяются два типа тантало-нитридных резисторных модуля: модуль 120-Ом резисторов с центральным отводом, разбивающим общий ре- зистор на два по 60 Ом, и модуль 300-Ом резисторов с отводом на два рези- стора с сопротивлением 120 и 180 Ом. Все соединения на печатной плате представляют линии передачи и шины для подключения к источнику напря- жения питания —2 В, которые шунтируются 60-Ом оконечным резистором. С целью минимизации шума от источника питания —2 В все неиспользуемые выводы логического вентиля закорачиваются таким же способом на 60-Ом резисторы. На практике для этой цели используется только 20 % всех рези- сторов. В отличие от кристалла 5/4-логического вентиля, на кристаллах ре- гистров и памяти не предусмотрены выводы двух сигналов обычного и ин- вертированного. Чтобы избежать замыкания при разбалансировке нагруз- ки источника питания —2 В, зти устройства подключаются к источнику пита- ния —5,2 В через эквивалентный резистор Тевенена с сопротивлением 300 Ом. Соединения между модулями осуществляются скрученными парами про- водов, исполняющих роль линий передачи. Для снижения взаимного влияния по одному проводу пропускают основной сигнал, а по другому — этот же сиг- нал в инверсной форме. Все модули соединяются проводниками длиной 0,305 - 1,37 м, которые подходят к запаянной гильзе. В машине CRAY-1 общая длина внутренних проводников составляет примерно 96,561 км. Это привело к созданию проводных шин шириной около 152,4 мм, которые яв- ляются неотъемлемой частью центрального цилиндра. Управление всеми модулями осуществляется с помощью однофазной сети с тактовым перио- дом 12,5 нс. Все линии передачи, по которым проходит тактовый сигнал от центрального источника к индивидуальным модулям, подбираются одинако- вой длины, чтобы тактовый импульс поступал во все модули одновремен- но. С началом тактового периода внутри каждого модуля вырабатывается импульс длительностью 3 нс для управления логикой в этом модуле. 2.2.4. Набор команд Набор команд машины CRAY-1 состоит приблизительно из 120 команд (в большинстве случаев 7-разрядный код операций, но не на всех командах). Большинство команд является 3-адресными, которые определяют источник двух входных операндов и пункт назначения результата. Поскольку все функциональные устройства работают по принципу регистр - регистр, требу- ется только 3 бита для определения источника или пункта назначения. Следо- вательно, код операции и три адресата хорошо вписываются в 16-разрядную однопакетную команду. Все команды, кроме 18, являются однопакетными. Команды обращения к адресу основной памяти (22 разряда) для передачи блока или перехода требуют два пакета и являются 32-раз рядными. Коман- дам, содержащим 22-разрядные константы для пересылки в регистры А или S, также необходимы два пакета. 89
Команды предусматривают ряд операций (логических, сдвиговых, перехо- да) и арифметических действий с целыми числами и числами с плавающей точкой, выполнение которых следует ожидать от определенного класса 12 функциональных устройств. Приведем примеры в нотации языка ассемблера (CAL). Формат команды: ||^|Л|г’|/|Л 11 т 11 g или (g|h) - поле кода операции ||4|3|3|3|3 11 16 разрядов 11 11 Пакет 1 11 Пакет 2 11 Команды считывания/записи-. В/Л, Аг , АО Считывание (Аг) слов из (АО) в В/Л-регистр АО Т/Л, Аг Запись (Аг) слов из Т/Л-регистра в (АО) Аг exp, Ah Считывание из ( (А/г) + jkm) в Аг (АО = 0, jkm = ехр) ехр, А/г Si Запись (Sz) в ((А/г) + jkm) (АО = 0,jkm = ехр) V/ , АО, Ак Считывание (VL) слов из (АО) в V/ с инкремен- том (АЛ) АО, Ак V/ Занесение (VL) слов из V/ в (АО) с инкрементом (АЛ) Аг S/ Пересылка содержимого (S/) в (Аг) В jk Аг Пересылка содержимого (Аг) в В/Л Sz Т/Л Пересылка содержимого (Т/Л) в Sz Команды управления: J В/Л Переход к (В/Л) R ехр Обратный переход к ijkm(= ехр)-, подключение В00 к счетчику команд JSZ ехр Переход к ijkm( = ехр), если (SO) = 0 JAP ехр Переход к ijkm ( = ехр), если (АО) положительно Команды логики: Sz S/ &Sk Логическое произведение (Sj) и (8Л); результат в Sz Vz S/ ! Vk Логическая сумма (S/) и (УЛ); результат в Vz SO Sz <exp Сдвиг содержимого (Sz) влево на jk (= ехр) пози- ций; результат в SO Sz Si S/ < АЛ Сдвиг содержимого пары регистров (Sz’ Sj) влево на (АЛ) позиций; результат в Sz Команды арифметики: Sz exp Пересылка jkm ( = exp) в Sz Аг Aj + АЛ Целочисленная сумма (А/) и (АЛ); результат в Аг Sz Sj * 5Л Целочисленное произведение (S/) и (8Л); результат в Sz Vz Sj * БУЛ Произведение с плавающей точкой (S/) и (УЛ); ре- зультат в Vi Sz /HS/ Обратная аппроксимация с плавающей точкой содер- жимого (Sj); результат в Sz Vz V/ * 1УЛ Двоичное произведение (V/) и (УЛ); результат в Vz. Обратная итерация 90
Смешанный тип'. VL Ak Пересылка содержимого (Ак) в VL Si VM Пересылка содержимого (VM) в Si Si RT Пересылка отсчета реального времени в Si Ai PS/ Подсчет совокупностей в (S/); результат в Ai Ai zs/ Подсчет нулей старших разрядов в (S/); результат в Ai В приведенном описании круглые скобки, заключающие название регист- ра, обозначают содержимое этого регистра, а сочетание букв ехр (от expres- sion — выражение) может быть заменено простым арифметическим выраже- нием, значение которого размещается в команде. Две команды машины CRAY-1 заслуживают специального объяснения. Установка маски — 64 разряда векторного регистра маски (VM) соответ- ствуют один к одному 64 элементам векторного регистра. Если элемент удовлетворяет условию, то соответствующий разряд VM устанавливается в единицу, в противном случае он обнуляется. Условиями являются: нуль, не нуль, положительный или нуль, отрицательный. Таким образом, VM, V5, Z устанавливает разряд VM в 1, когда элементы V5 равны нулю, VM, V7, Р устанавливает разряд VM в 1, если элементы V7 положитель- ны или нули. Слияние векторов — содержимое двух векторных регистров V/ и Nk сли- вается в один результирующий вектор Vi в соответствии с маской регистра.- VM. Если Z-й разряд VM — единица, то Z-й элемент V/ становится Z-м элемент- том регистра результатов, в противном случае Z-й элемент Nk становится Z-м элементом регистра результатов. В качестве альтернативы V/ может быть скалярным регистром. Значение регистра длины вектора определяет число сливаемых элементов. Таким образом, Vi V/ ! Vk & VM сливает V/ и Vk в Vi в соответствии с комби- нацией в VM, V7 S2 ! V6 & VM сливает S2 и V6 в V7 в соответствии с комби- нацией в VM. Цепь команд маски и слияния — обеспечить условные вычисления с век- торными командами. Рассмотрим к примеру вычисление, DO 3 1=1,N - IF (C(D) 2.1.1 1 A(I>=EXPRESSION 1 GOTO 3 2 A(I>=EXPRESSION 2 3 CONTINUE в котором A (I) должно принимать значение выражения 1, ecm С {Г) — нуль или положительно, или значение выражения 2, если С(7) — отрицательно. Ес- ли мы допустим, что А (Г) и С (Г) занесены в элемент (I - 1) векторных ре- гистров соответственно V3 и V4, a VL содержит значение N (для простоты предположим N< 64), то вышеуказанная программа с помощью векторной команды может быть реализована в следующем виде: 1) вычислить выражение 1 для всех элементов и поместить в VI; 91
2) вычислить выражение 2 для всех элементов и поместить в V2; 3) VM V4, Р установить разряд VM в 1, если элемент V4 > 0; 4) V3V1 ! V2 & VM слить VI и V2 в соответствии с VM. Отметим, что при данном методе выражение 1 и выражение 2 должны быть вычислены для всех элементов, даже если только 77 из 2V результатов будут использованы в конечном слитом векторе V3. Вполне понятно, что приходит- ся напрасно проделывать арифметические действия, но зто дает возможность везде использовать векторные команды. Как вариант, программу (2.7) мож- но реализовать на Фортране с помощью скалярных команд, при этом следу- ет учитывать поэлементно знак С(7) и вычислять, как указано, либо выраже- ние 1, либо выражение 2, но не оба. В этом случае нет необходимости в вы- полнении ненужных арифметических действий, однако используемая скаляр- ная арифметика является более медленной, чем векторная арифметика пер- вого метода. Совершенно очевидно, что существует некая граничная длина вектора, выше которой метод слияния векторов является более быстрым, чем вычисление с помощью скалярных команд. Две ситуации вызывают особые проблемы в параллельных компьютерах. Их можно описать как операции рассылки и сбора, которые можно было бы определить следующей Фортран-программой: 7) Рассылка ио 1 1=ьи (2.8а) 1 X(INDEX(I) >=Y(I> 2) Сбор DO 1 1=1(2.86) 1 Y(I>=X(INDEX(I>> v ’ В любом случае целочисленный массив INDEX содержит набор индексов, которые могут специфицировать адреса, произвольно разбросанные в основ- ной памяти компьютера. Операции рассылки распределяет упорядоченный набор элементов Y (7) по всей памяти в соответствии с комбинацией адресов в массиве INDEX. И наоборот, операция сбора собирает разбросанные эле- менты X и сортирует их в упорядоченный массив Y. Такие операции имеются в задачах сортировки, переформирования, как, например, при расшифровке разрядно-реверсивного порядка в быстром преобразовании Фурье (см. разд. 5.5.2), в задачах распределения зарядов (операция рассылки) и на этапах ин- терполяции поля (операция сбора) в программе моделирования на основе модели измельчения сетки [109]. В отличие от некоторых других векторных компьютеров (например, CY- BER 205, см. подразд. 2.3.4) машина CRAY-1 не имеет специальных команд для реализации операций рассылки и сбора. Фортран-программа (2.8а) обыч- но реализуется путем поблочного считывания массива Y из основной памяти в регистры Т группами по 64 элемента с последующей скалярной записью че- рез регистр S поэлементно в массив X, размещающийся в основной памяти на основе списка индексов, содержащихся в регистрах А. Аналогично этому программа (2.86) обычно реализуется посредством ряда скалярных считы- ваний из X и последующей передачи блока в Y. Производительность машины CRAY-1 на операциях рассылки и сбора, следовательно, зависит от скорости скалярного доступа к памяти и рассматривается в подразд. 2.2.6. 92
2.2.5. Программное обеспечение Основное программное обеспечение машины CRAY-1 (на 1980 г.) включа- ет в себя операционную систему, редактор текста, ассемблер, Фортран-ком- пилятор и прикладные пакеты программ, таких как NASTRAN. В состоянии разработки находится Паскаль-компилятор, рассматриваемый как второй язык высокого уровня. Операционная система (ОС), тщательно поддержива- емая по возможности более простой, предоставляет операционную систему пакетного режима, обеспечивающую до 63 заданий в мультипрограммной сре- де. Файлы заданий, поступающие из периферийной ЭФМ по фазомодулиро- ванной линии связи данных, обрабатываются, а затем после завершения за- дания возвращаются обратно в периферийный компьютер. В привычном смысле ОС организует управление ресурсами, удаленный и локальный ввод заданий, связь с оператором и каскадирование данных между основной па- мятью и периферийными устройствами. Кроме того, выдается файл регистра- ции, содержащий список всех управляющих операторов и задач, в которых они встречаются. Для машины CRAY-1 была написана интерактивная система разделения времени, которая используется в Ливерморской лаборатории им. Лоуренса. Фортран-компилятор машины CRAY-1 (CFT) воспринимает набор расши- ренного Фортрана 1966, утвержденного Американским национальным инсти- тутом стандартов (ANSI) [239]. Предусматривается поддержание его на са- мом современном уровне с ориентацией на будущие стандарты ANSI, вклю- чая любые векторные конструкции общего вида, по которым будет достиг- нуто соглашение. Компилятор во многом удовлетворяет стандарту ANSI 1977, и, как полагают, будет удовлетворять полному стандарту ANSI FOR- TRAN-1977 в 1981 г. Свойство расширенного набора (или супернабора) оз- начает, что многие широкоиспользуемые расширения стандарту ANSI-Фор- трана, сделанные фирмами IBM и CDC, воспринимаются компилятором, что делает перенесение существующих Фортран-программ на машину CRAY-1 гораздо менее утомительной процедурой, чем это было бы в другом случае. В отличие от фирмы CDC фирма CRAY Research не ввела никаких собствен- ных векторных конструкций в компилятор CFT, предпочитая ожидать согла- шения по стандарту ANSI. Однако компилятор генерирует векторную про- грамму для циклов DO на последовательном Фортране при определенных условиях. Первоначально основными факторами, сдерживающими вектори- зацию циклов, было присутствие операторов GO, ТО, IF и CALL в цикле DO. Эти условия более полно разбираются в гл. 4, где, по возможности, эти огра- ничения на векторизацию будут устраняться по мере усовершенствования компилятора. Для улучшения эффективности прохождения наиболее крити- ческих частей программы в CAL-ассемблере можно запрограммировать от- дельные подпрограммы. С помощью символьного выражения в языке CAL, примеры которого приводятся в подразд. 2.2.4, можно использовать все ха- рактерные особенности программного обеспечения машины. Разносторон- ний набор псевдо- и макрокоманд пополняет набор команд ПО машины. 93
2.2.6. Производительность Производительность любой ЭВМ зависит от способа ее использования, и машина CRAY-1 не является исключением из этого правила. Далее мы уви- дим, что производительность данной машины может варьироваться от 2,5 до 153 Мфлоп/с в зависимости от обстоятельств. В результате наблюдений мож- но сказать, что самая быстрая скорость выполнения операций с плавающей точкой достигается при тщательно оптимизированной программе на CAL- ассемблере для задач с высокой степенью параллелизма, таких как перемно- жение матриц. Если применить метод среднего произведения (см. подразд. 5.3.2), тогда все независимые внутренние произведения, соответствующие одному столбцу результирующей матрицы, формируются параллельно, и этот процесс повторяется для Nстолбцов. Операции векторного умножения и сложения, необходимые для накопления ^внутренних произведений, мож- но объединить (сделать цепочечными), и если последовательные элементы столбца хранятся в последующих ячейках памяти, то можно избежать кон- фликтов памяти. При таких обстоятельствах нам следует ожидать, что необ- ходимое для перемножения двух (и х и) матриц время t =у-{« [2л(« +«1/2) +<2] +с}, (2.9) где первый член в квадратных скобках представляет собой время, требуемое для вычисления одного столбца результата, a d — дополнительная величина, соответствующая подготовке столбца для вычисления (очистки векторного аккумулятора и занесения коэффициентов умножения в регистры). Такая операция повторяется для всех п столбцов. Кроме этого учитывается время установки (с) для инициации матричной операции. Мы можем получить г и и^2, преобразовав выражение (2.9), которое бы- ло уточнено в результате проведенного хронометрирования: fl”) =тЧ« +«1/2), (2.10а) где /(и) = (Г-)3)/и2-a/и; a=J/r00,j3 =с/г00. (2.106) На рис. 2.7 показана зависимость fn от и. Тангенсы угла наклона прямой и отрезки, отсекаемые на координатной оси, дают соответственно значения и и^2. На рис. 2.7, а дана характеристика для оптимизированной векторной программы с организацией цепочки. При и>30иа = /3 = 0 получается пря- мая асимптотическая линия, хотя для приемлемого согласования с прямой линией при п < 30 требуются а = 110, /3 = 0. Тангенс угла наклона и отрезок, отсекаемый этой прямой, дают гх = 153 Мфлоп/с, п1/2 = 7, (2-11) для цепочечной векторной программы, написанной на ассемблере. Машина CRAY-1 имеет два конвейера с плавающей точкой (сложения и умножения), каждый из которых способен выдавать результаты со скоростью 80 Мфлоп/с, следовательно, максимальная производительность компьютера CRAY-1 со- ставляет 160 Мфлоп/с. Это так, поскольку благодаря свойству цепочки два 94
Рис. 2.7. Измеренные значения и^2 и г„ компьютера CRAY-1 для хорошо составленной программы на ассемблере перемножения двух матриц порядка п: а) векторные команды со сцеплением; подпрограмма МХМ компьютера CRAY-1, со- ставленная Р. Нельсоном (г„ = 153 Мфлоп/с, и^2 = 7) ; б) использование только ска- лярных команд в программе Р. Хокни и Г. Гренандера (г„ = 12,3 Мфлоп/с, и^2 = 3) конвейера могут работать одновременно. Результаты (2.11) показывают, что эта максимальная скорость почти достижима и что данная программа удач- но использует функциональный параллелизм машины посредством организа- ции цепочки. Чтобы оценить разницу в производительности между векторной и скаляр- ной программами, тщательно запрограммировали операцию перемножения матриц на CAL-ассемблере, применив только скалярные команды. В этом случае был использован метод внутренних произведений (см. подразд. 5.3.1). Значения п2 внутренних произведений вычислялись последовательно, а зна- чения t/п2 — время, приходящееся на каждое внутреннее произведение, — фиксировались по отношению к п. Тангенс угла наклона и отсекаемый отре- зок на рис. 2.7 составляют г», = 12,3 Мфлоп/с, п 1/2 = 3 (2.12) для скалярной программы на ассемблере. Таким образом, мы видим, что от- ношение наилучшей производительности ЭВМ CRAY-1, использующей вектор- ные команды, к ее производительности при использовании скалярных команд может достигать приблизительно 10. Отметим, что при п ^2 =7 для хорошо составленной векторной программы CRAY-1 ведет себя подобно последова- тельной ЭВМ. При генерации программы через компилятор всегда вводятся некоторые дополнительные символы, которых можно избежать при тщательно запро- граммированной программе на ассемблере. Такие символы будут появлять- ся в виде уменьшения и увеличения п ^2. В качестве простого теста мы за- мерили цикл DO для поэлементного умножения двух векторов длиною п, как в указанной ранее программе (1.5) (см. подразд. 1.3.3). На рис. 2.8 при- ведена зависимость времени выполнения операций (?) от длины вектора п, мы обращаем внимание на существенные издержки, равные примерно 1 мкс для инициирования цикла и 0,5 мкс для инициирования дальнейших шагов через интервалы, равные 64 элементам — длине векторных регистров.Штрихо- вая линия, соответствующая средней производительности для Фортран-про- граммы, дает 95
п Рис. 2.8. Измеренные значения и г„ компьютера CRAY-1 для векторизованной Фор- тран-программы поэлементного перемножения двух векторов длиной п. Временные ин- тервалы отмечены через каждые 64 элемента, которые соответствуют перезагрузке век- торных регистров (данные взяты из статьи J. Craigie, опубликованной в журнале Private communication, 1980, 16.04; получены при использовании версии компилятора 1,08) = 22 Мфлоп/с, п1/2 = 18. (2.13) Поучительно рассмотреть временную диаграмму в этом простом цикле. Иллюстрация приводится на рис. 2.9. Вначале время затрачивается на уста- новку счетчиков цикла. Затем для каждой группы из 64 элементов, а на ран- ней стадии для любых оставшихся элементов выполняются команды с мо- мента ti по ts Это соответсвует данным, приведенным в табл. 2.2. Рис. 2.9. Временная диаграмма (не в масштабе) для векторной операции типа память- память, построенная по нотации из рис. 2.6 Таблица 2.2 Команда Запрос операции Окончание операции (1) Считывание следующих 64 элементов Y в регистр VI 0 11 + т (2) Считывание следующих 64 элементов Z в регистр V2 11 + т 23 + 2т (3) Векторное умножение: V3 =V1 * FV2, объединяется в цепочку с командой (2) 23+ т 31 + 2т (4) Запись V3 в следующие 64 элемента X 31 + т 42 + Зт 96
Мы отметили время выдачи каждой команды (на рис. 2.9 измеряемое от И) и время окончания работы команды. Кроме того, при выполнении цикла, как правило, т = 64, за исключением случая, когда т представляет собой число оставшихся элементов, меньших 64. Для управления циклом потребу- ются некоторые команды перехода и операций с целыми числами, но их на временной диаграмме можно игнорировать, потому что они выполняются па- раллельно с вышеуказанными в независимом адресном или скалярном блоке целочисленного сложения и в процессоре команд. Следовательно, общее вре- мя умножения векторов произвольной длины по принципу память — память в машине CRAY-1 составляет t = LSU + 42 [и/64] + Зи тактовых периодов, (2.14) где LSU — время команд установки цикла. Второй член увеличивает t на 42 т = 0,52 мс на каждые 64 элемента. Это согласуется с отмеренными шагами (и), равными 64, 128 и 196 на рис. 2.8. Между этими шагами t линейно воз- растает с увеличением п со скоростью одного результата в течение трех так- товых периодов или 27 Мфлоп/с. Это согласуется с градиентом сплошной ли- нии между разрывами на рис. 2.8. Указанная производительность существенно меньше ранее отмечаемого максимума (160 Мфлоп/с) по нескольким причинам. Во-первых, предусма- тривается только одна операция и поэтому максимальная производитель- ность одного конвейера не может превышать 80 Мфлоп/с. Во-вторых, для обеспечения операции умножения требуется два запоминающих устройства для считывания и одно для записи. Поскольку имеется только один конвейер памяти, то только одна из этих операций с запоминающим устройством мо- жет быть сцеплена с операцией умножения; на рис. 2.9 это выполнено с коман- дами (2) и (3) во время t3. Все это составляет три конвейерные операции, которые должны быть выполнены последовательно (две операции с памятью и одна комбинированная память — умножение). Если бы все эти операции были бы с плавающей точкой, то была бы зафиксирована производитель- ность, равная 80 Мфлоп/с. Но поскольку только одна из трех операций явля- ется с плавающей точкой, производительность снижается примерно в 3 раза — до 27 Мфлоп/с. Мы уже указывали на низкую скорость обмена с памятью (80 Мслов/с), как основное узкое место в машине CRAY-1, что вызывает снижение произ- водительности (отмечалось в предыдущем подразделе). Если бы в качестве алтернативы были предоставлены три независимых конвейера памяти, при- меняя простую буферную структуру, все три операции с памятью могли бы выполняться одновременно с операцией умножения и измеряемое время со- кратилось бы до t =LSU +11 [и/64] + и тактовых периодов. (2.15) Если, в общем виде, мы выразим время как t = LSU + LON [n/nr] +tea,n, (2.16) где LON — издержки цикла, то tea> будет представлять время на элемент, а пТ - число элементов в векторном регистре. Общая штриховая линия соот- ветствует t=r~1(n+n1/2), (2.17а) 4 Зак. 1799 97
где =иг (LON + rVeoo)’^-1, (2'17б> и1/2 = nr(LSU + LOH/2)(LON + «rfe„)-1. (2.17в) Эти выражения показывают, как при использовании более длинного век- торного регистра увеличивается производительность и как при меньшем вре- мени установки и издержки цикла снижается п щ. Соответствие между мини- мальными временными интервалами (см. рис. 2.9) и замеренными результа- тами тангенса угла наклона и шага (т. е. ?£ОО и LON) показывает, что про- грамма, генерируемая компилятором, не может быть улучшена внутри цик- ла. Но время установки цикла может быть сокращено ориентировочно с 46 до 15 тактовых периодов путем сохранения только того кода, который абсо- лютно необходим для данной задачи. Используя выражение (2.17) для оди- ночно-функциональной операции память - память в коде ассемблера, полу- чим результирующие значения гх =22Мфлоп/с, = 10. (2.18) Таким образом, остается без изменений, а уменьшается почтив 2 ра- за [см. (2.13)]. Операции рассылки и сбора, написанные в кодах Фортрана (2.8), должны выполняться в машине CRAY-1 посредством цикла скалярных команд. Для задачи сбора на Фортране была вычислена следующая формула временно'го интервала: t = 37 + 32п тактовых периодов. (2 19) Множитель п варьируется от 31 до 33 тактовых периодов на элемент в зави- симости от того, чему равен INDEX (7) :/или 16/. В первом случае конфлик- ты банков памяти отсутствуют, а во втором происходят при каждом обраще- нии, так как все обращения осуществляются к одному и тому же банку па- мяти. В формуле (2.19) мы зафиксировали среднее значение. Переформиро- вав ее, получим t = 32(и + 1,1) тактовых периодов. (2.20а) Отсюда, для операции сбора имеем гх = 2,5 Мфлоп/с, nip = 1.1. (2.206) Эта программа отражает возможную наихудшую производительность ма шины CRAY-1. Применив программу на ассемблере, можно добиться суще- ственных улучшений. Библиотека подпрограмм SCILIB машины CRAY-1 со- держит хорошо запрограммированную подпрограмму как для операции рас- сылки, так и сбора [50]. Временной отрезок для подпрограмм GATHER (сбор) составляет t = 16O + 1Q« = 10(л + 16) тактовых периодов, (2.21а), (2,216) откуда г», = 8 Мфлоп/с, и =16. (2.21 в) Это в 3,2 раза быстрее, чем в Фортран-программе. Т. Джордан и К. Фонг [132] определили три уровня производительности машины CRAY-1, которые соответствуют экспериментам, описанным выше: 98
1) скалярная производительность достигается при использовании про- граммы только со скалярными командами и регистров А, В, S и Т; 2) векторная производительность достигается при использовании про- граммы с векторными командами, скорость выполнения которых ограничи- вается скоростью обмена с памятью; 3) сверхвекторная производительность достигается при использовании программы с векторными командами, скорость выполнения которых ограни- чивается готовностью векторных регистров или функциональных устройств. В приведенных примерах скалярная производительность, равная 12 Мфлоп/с, отмечалась при использовании скалярной программы перемно- жения матриц, векторная производительность была зафиксирована при по- элементном перемножении векторов по принципу память — память, а сверх- векторная производительность, равная 153 Мфлоп/с, при использовании про- граммы, написанной на векторном ассемблере для перемножения матриц. О производительности машины CRAY-1 до сих пор мы судили на основе хорошо подобранных искуственных простых примеров и обнаружили, что производительность составляет 2,5 — 153 Мфлоп/с. Этот широкий диапазон дает довольно небольшое представление о производительности, которую сле- дует ожидать в реальных задачах. В связи с этим мы приводим в табл. 2.3 Таблица 2.3. Время, необходимое для выполнения характерных задач на машинах CRAY-1, CYBER 205 (2-коцвейерная, 64-разрядиая) и FPSAP-120B; примерная произ- водительность указана в скобках; все приведенные значения хронометрировались. Тип компьютера Перемноже- ние матриц 64 X 64 Обращение матриц 64 X 64 Прямое БПФ 4096 комп- лексных чи- сел11 Уравнение Пуассона (сетка 128 X 128) БПФ 1024 действитель- ных чисел на Фортране71 CRAY-1 CDC CYBER 205 FPS АР-120В (с быстрой па- мятью) 3,8а (138) 9,7Д(54) 1183 (4,4) 32,6® (16) 11,0я (47) 309й (1,7) 4,24в (54) 3,54е (62) 22,7К (8) 12,5Г (23) _ж 27 8Л (4,1) 4,8 (4,7) 7,1 (3,2) 70 (0,32) Примечания: а) Подпрограмма МХМ, написанная Р. Нельсоном на CRAY-1 CAL. б) Подпрограмма MINV на CRAY-1 CAL. в) Подпрограмма CFFT2, написанная В. Петерсеном на CRAY-1 CAL; алгоритм Тем- пертона (основание 2). г) FACR (/) алгоритм, реализованный к. Темпертоном [22б]. д) Значения оценивались М. Кассисом (журнал Private communication). е) Значение замерялось 4 раза для преобразования 1024 комплексных чисел. ж) Данные отсутствуют. з) Подпрограмма MMUL математической библиотеки EPS АР [81]; вычислялось по временной формуле. и) Подпрограмма MATINV математической библиотеки EPS АР [в 1]; интерполиро- вано из таблицы, t = 1,18л3 мкс. к) Подпрограмма CFFTB математической библиотеки EPS АР [81]; из таблицы (основание 4). л) Фортран-программа FOUR 67 [102, 104]. м) Оценивалось для MFT-метода на основе,подпрограммы ERFFT2 двумерного БПФ в математической библиотеки АР [82]. н) Операций: по основанию 2 =2,24 X 10s', по основанию 4 = 1,84 X 10s [26, с. 193]. 4* 99
значения производительности машины CRAY-1 и других компьютеров, рас- сматриваемых в этой главе, для более сложных задач. Случай перемножения матриц соответствует сверхвекторной производительности, которую, вероят- но, можно реализовать только при решении относительно небольшого числа простых и с высокой степенью параллелизма задач, содержащих малое число логических операций. Более сложные задачи, но еще с более высокой степе- нью параллелизма, наиболее вероятно попадут в диапазон векторной произ- водительности (скажем, 20 — 50 Мфлоп/с). Последним примером является Фортран-программа, написанная для последовательной ЭВМ, которая вслед- ствие наличия условных операторов в ее циклах DO регенерирует векторную программу для машины CRAY-1. Производительность на этой программе, составляющая порядка 5 Мфлоп/с, может быть выбрана в качестве предста- вителя скалярной производительности машины, которая может быть благо- разумно ожидаемым минимумом для любой существующей программы, пе- реносимой с последовательной ЭВМ. Прогон той же Фортран-программы на машине CDC 7600 занимает 8 мс [104], т. е. ее производительность в 1,75 ни- же, чем у CRAY-1 при работе с невекторизованной программой. Этот экспе- римент представляется достаточно символичным. 2.3. КОМПЬЮТЕР CYBER 205 ФИРМЫ CDC Машина CYBER 205 производится фирмой Control Data Corporation1 (Сент-Пол, шт. Миннесота, США). Машина была создана в 1980 г„ а первый экземпляр был установлен в Британском метеорологическом центре, г. Брек- нелл в 1981 г. Машина отражает кульминацию долгосрочной программы ис- следования и развития, которая началась с проекта и поставки компьютера CDC STAR 100в период 1965 — 1975 гг. (см. подразд. 1.1.3). В процессе экс- плуатации машины были обнаружены недостатки, которые сделали ее непри- влекательной для некоторых потенциальных покупателей [103]. Это было обусловлено главным образом применением технологии середины 60-х годов в ЭВМ, которая была выставлена на продажу в середине 70-х годов. Перечис- лим эти недостатки: 1) Медленная основная память — память на магнитных сердечниках (вре- мы выборки 1200 нс) очень медленная по сравнению с полупроводниковыми ЗУ на МОП-структурах (время выборки приблизительно 160 нс), предлага- емыми в некоторых других машинах. 2) Медленная скалярная арифметика — примерно в четыре раза медлен- нее, чем у других конкурирующих машин, например, CDC 7600 и IBM 360/195 [Ю4]. 3) Длительное время запуска вектора — от 3 до 7 мкс, привели, как след- ствие, ~ 100. Отсюда производительность, близкая к идеальному макси- муму в 50 Мфлоп/с, например при векторном сложении, достигалась только на векторах с несколькими тысячами элементов [134, рис. 1]. 4) Единичный инкремент вектора — машина предназначена для эффектив- ной обработки векторов, последовательные элементы которых хранятся в 1 Штабквартира корпорации: РО Box 0, Minneapolis, Minnesota 55440, USA. Предста- вительство в Великобритании: Control Data House, 179/199 Shaftesbury Avenue, London WC2H 8AR. 100
последующих ячейках памяти (так называемый соприкасающийся вектор с единичным инкрементом адреса между элементами вектора). Производи- тельность машины в других режимах хранения снижается. Вышеуказанные недостатки машины STAR 100 были учтены фирмой CDC, которая предприняла дерзкий шаг к разработке новой БИС-технодогии и модернизации всей машины на ее основе, а также к некоторым улучшени- ям в архитектуре. Одновременно было принято важное решение сохранить набор команд и общую организацию машины STAR 100, поддерживая, та- ким образом, обширное программное обеспечение, разработанное для STAR 100. Программа модернизации также давала возможность совершенствовать существующие машины STAR 100. Фирма Control Data Corporation разрабатывала БИС-технологию, соответ- ствующие методы автоматизированного проектирования и моделирования примерно с 1973 г. В период с 1974 по 1976 г. средства тестирования БИС у машин класса CDC 6400 были успешно реконструированы применительно ю новой БИС-технологии. Это привело к дальнейшему изучению и разработке новых методов компоновки и охлаждения и соответствующим финансовым ассигнованиям в 1975 г. на модернизацию STAR 100. Процесс разбивается на две стадии. 1) CYBER 203 — в которой память STAR 100 на сердечниках заменялась на 80-нс полупроводниковую память и добавлялся скалярный блок на но- вых БИС с тактовым периодом 20 нс для повышения производительности скалярных операций и операций с короткими векторами. Два векторных конвейера и потоковое устройство машины STAR 100 с тактовым периодом 40 нс остались без изменения. Об этой машине было объявлено в 1979 г.; в ней были учтены интересы различных государств, использующих CYBER 203 в сети CYBERNET фирмы CDC. В машине CYBER 203 были преодолены пер- вые два недостатка, а также уменьшено число изменений времени запуска вектора, вызываемых конфликтами памяти. Однако не произошло никаких изменений в отношении п и не устранен недостаток единичного инкремен- та вектора. Машина на стадии инженерного проекта обозначалась как STAR 100А. 2) CYBER 205 — это машина CYBER 203 с модернизированными и усовер- шенствованными векторными конвейерами и потоковым устройством на БИС с тактовым периодом 20 нс. Первоначально машина была известна как STAR 100С, а затем как CYBER 203Е [134]. Однако эта разработка впослед- ствии называлась CYBER 205. В этой машине число конвейеров может быть увеличено до четырех, емкость памяти до 4 Мелов, а число каналов ввода-вы- вода до 16. Окончательный вариант ЭВМ, хотя и сохранил общую архитекту- ру машины STAR 100, является полностью новым с технической и техноло- гической точек зрения. Она является только второй машиной, в которой при- менялись БИС на ЭСЛ-кристаллах, первой была AMDAHL 470 (см. подразд. 1.1.3). Вследствие увеличения скорости векторных конвейеров и быстродей- ствия памяти уменьшено абсолютное значение времени запуска вектора при- близительно с 3 (для операции сложения на STAR 100) до 1 мкс (для опера- ций как сложения, так и умножения на CYBER 205) и, таким образом, был устранен третий из вышеуказанных недостатков. Однако несмотря на улуч- шения производительности, относительная значимость времени запуска век- 101
тора, измеряемая через Пу2 для одиночной команды, осталась на уровне 100 (см. подразд. 2.3.6) и, кроме того, сохранился единичный инкремент векто- ра. Это вызвано тем, что оба свойства являются характерными особенностя- ми архитектуры (которая осталась неизменной), а не технологии, на базе которой строится ЭВМ. Тем не менее производительность команд рассыл- ки — сбора и сжатия — слияния, применяемых для формирования и расшире- ния векторов единичного инкремента, была существенно увеличена, что об- легчило тем самым проблему векторов единичного инкремента. Кроме того, имеется возможность совмещения (в отсутствии конфликтов памяти) вре- мени выполнения одной векторной операции с временем запуска следующей векторной команды, сберегая тем самым 17 тактовых периодов между по- следующими векторными операциями. Таким образом, пу2 сокращается на величину, эквивалентную последовательности векторных операций. 2.3.1. Физическое размещение Внешний вид двухконвейерной машины CYBER 205 и структурная схема различных блоков показаны на рис. 2.10 и 2.11. Машина сфотографирована со стороны, соответствующей левой части схемы, приведенной на рис. 2.11. Основная память размещается в двух или четырех клинообразных шкафах по 106 64-разрядных слов в каждом. Скалярная секция, содержащая устрой- ство обработки команд, представляет собой ядро машины. К одному концу секции подсоединяется запоминающее устройство через интерфейс памяти, а к другому — векторный процессор. Последний включает в себя один, два или четыре векторных арифметических конвейера с плавающей точкой, секцию векторного потока и строк и секцию ввода— вывода, установки заданной величины вектора и исправлений. В целом машина с памятью емкостью Рис. 2.10. Внешний вид компьютера CDC CYBER 205; слева показаны устройства обра- ботки векторного потока и строк, справа - конвейеры для операций с плавающей точ- кой (воспроизводится с разрешения фирмы Control Data Corporation) 102
Рис. 2.11. Структурная схема различных устройств компьютера CDC CYBER 205 (вос- производится с разрешения фирмы Control Data Corporation) 4 Мелов занимает площадь приблизительно 7,01 х 5,79 м. Система охлажде- ния основной центральной части ЭВМ с памятью емкостью 1 Мелов состоит из двух конденсирующих устройств на 30 т охлаждающей жидкости, кото- рые устанавливаются отдельно. Питание поступает от одной 250-кВт автогене- раторной установки. Тепловая мощность рассеяния составляет примерно 118 кВт. Для системы с памятью емкостью 4 Мелов необходима вспомога- тельная 80-кВт автогенераторная установка и 90 т охлаждающей жидкости. В качестве резервного оборудования придается также 250-кВт генератор. Ма- шина CYBER 205 проектировалась для совместной работы с периферийной системой, типичными представителями которой являются машины CYBER 170, CDC 6000 или фирмы IBM. 2.3.2. Архитектура Основные устройства и магистрали данных машины CYBER 205 показаны на рис. 2.12. Начнем с запоминающего устройства, показанного в правой ча- 103
Рис. 2.12. Структурная схема архитектуры машины CDC CYBER 205, отражающая устройства, основные узлы и магистрали данных 104
сти рисунка. Каждая секция емкостью 1 Мелов подключена к интерфейсу па- мяти через 512-разрядную магистраль данных. Такое значение (512) извест- но как суперслово. Оно эквивалентно 8 64-разрядным словам или 16 32-раз- рядным полусловам и является единицей обращения к памяти. По каждой магистрали памяти может выполняться либо чтение, либо запись с макси- мальной скоростью в одно суперслово за один тактовый период 20 нс. Поэто- му скорость обмена с памятью составляет 400 Мслов/с на 106 слов, что в пять раз больше, чем в машине CRAY-1. Память имеет время цикла и выбор- ки 80 нс или четыре тактовых периода. Каждое 1 Мслово организовано в 16 стеков памяти, каждый из которых имеет стековую магистраль данных к ин- терфейсу памяти. Последовательные адреса выбираются из последующих сте- ков, что позволяет осуществлять параллельную выборку одного суперслова. Каждый стек делится на восемь независимых банков, содержащих по 16К 39-разрядных полуслова: 32 разряда для данных и 7 разрядов для SECDED1 — исправления одиночной ошибки и обнаружения двойной. Коллективное ис- пользование банками одиночной стековой магистрали данных обусловлено тем, что она используется только на последнем тактовом цикле обращения к памяти. Несмотря на то что адресация памяти может быть побитовой, бай- товой (8 разрядов), полусловом (32 разряда) или словом, обращение к па- мяти для векторов осуществляется суперсловом (512 разрядов), словом или полусловом. Блок интерфейса памяти организует запросы к памяти в суперслова, слова или полуслова за каждые 20 нс, а затем компонует и пере- дает эти данные через 128-разрядные магистрали в скалярную и векторную секции. Связь с остальной частью машины осуществляется по трем магистра- лям считывания и двум магистралям записи; блок интерфейса памяти, со- держащий буфер на одно суперслово, взаимодействует с каждой магист- ралью (Rl, R2, R3 для считывания и Wl, W2 для записи). Блок интерфейса памяти соединяется со скалярной, векторной секциями и секцией ввода-вы- вода через 10 128-разрядных магистралей данных, каждая из которых обла- дает скоростью передачи в 128 разрядов затактовый период, что обеспечива- ет максимальную общую скорость передачи, 1000 Мслов/с. В скалярной секции считывание производится из буферов R1 и R3, а запись — в буфер W1. Все магистрали данных к векторной секции также про- ходят через скалярную секцию, где производится SECDED-контроль и опре- деление приоритета для запросов к памяти. Включение SECDED-контроля в архитектуру существенно увеличило среднее время наработки на отказ. Ска- лярная секция содержит конвейер команд с максимальной скоростью выда- чи одна команда за 20-нс тактовый период т. Трехадресные команды выбира- ются из стека, который может содержать до 128 32-разрядных команд или 64 64-разрядных команд, либо их смеси, эквивалентные по общей длине. Как векторные, так и скалярные команды декодируются в конвейере выдачи команд, направляющем декодированные векторные команды в векторный блок на выполнение. Выдача декодированных скалярных команд в скаляр- ные арифметические функциональные блоки контролируется системой ре- зервирования, для которой принципиальными условиями работы являются: 1) конфликт на уровне исходного операнда — команда, которой необхо- 1 SECDED - Single error correction and double detection. 105
дим результат предыдущей команды в качестве ввода, должна ожидать го- товность операнда; 2) конфликт на уровне, выходного операнда — команда, результат кото- рой направляется к тому же регистру результатов, что и результат ранее выданной команды, должна ожидать окончания выполнения предыдущей команды. Шестнадцать адресных регистров результатов содержат адреса регистро- вых файлов для операндов вывода ранее выданных команд, которые задер- живаются операндами любой команды, находящейся в состоянии ожидания до тех пор, пока не возникнет конфликт. Арифметическая часть скалярной секции включает в себя устройство счи- тывания - записи и пять независимых арифметических функциональных уст- ройств, которые выбирают данные и выдают их в файл из 256 64-разрядных регистров. Устройство считывания — записи выполняет пересылку данных между регистровыми файлами и основной памятью. Периоды работы уст- ройств (время цикла г = 20 нс) приведены в табл. 2.4. Таблица 2.4 Функциональное устройство Время работы, нс Число такто- вых периодов Считывания-записи 300 15 Сложения-умножения 100 5 Умножения 100 5 Логическое 60 3 Одиночного цикла 20 1 Деления, вычисления квадратного корня, преобразования: для 64 разрядов 1080 54 для 32 разрядов 600 30 Указанные временные периоды устройств представляют собой общее вре- мя, необходимое для вычисления 32- или 64-разрядных результатов; все уст- ройства, за исключением последнего, являются конвейерными и могут выби- рать новый набор аргументов каждый тактовый период. Однако заметим, что регистровый -файл может представлять в лучшем случае только одну новую пару аргументов за тактовый период, и, по всей вероятности, именно этот фактор ограничивает скорость обработки в скалярной секции в целом. По- скольку устройства деления, вычисления квадратного корня и преобразова- ния не являются конвейерными, то новые аргументы воспринимаются толь- ко каждые 54 тактовых периода. Результат от любого устройства может по- ступать непосредственно на вход любого устройства во время кратковремен- ного останова, вследствие чего не требуется дополнительного времени на за- несение результатов в регистр и выборку их для использования в следующей арифметической операции. В указанных тактовых периодах для каждого уст- ройства учитывается кратковременный останов, и поэтому в них не включе- но время на занесение результатов в регистры или память. Регистровый файл может предоставлять в лучшем случае два операнда для текущей команды с одновременным занесением одного результата от предыдущей команды в те- 106
чение каждого тактового периода. Это считается вполне достаточным для обеспечения скалярной производительности на уровне 45 Мфлоп/с при пико- вом значении, равном одной команде за каждые 20 нс, или 50 Мфлоп/с. Доступ к основной памяти контролируется устройством считывания - записи, который действует как конвейер и может воспринимать одно значе- ние считывания из памяти за каждый тактовый период или одно значение записи в память за каждые два тактовых периода. В устройстве имеется бу- фер, обеспечивающий шесть запросов на считывание и три на запись. Слово произвольной выборки может быть считано из памяти и занесено в регистро- вый файл в течение 300 нс при условии незанятости памяти. Если она занята, то к этому времени прибавляется еще дополнительные 80 нс. У машины CRAY-1 время запроса на загрузку или занесения, осуществляемые каждые два тактовых периода, составляет 0,25 нс, время ответа — 137,5 нс плюс мак- симум 50 нс, если память занята. Операции над векторами чисел или строками символов выполняются в векторной секции, которая включает в себя один, два или четыре конвейера с плавающей точкой и строковое устройство, которые ’’запитываются” пото- ками данных в потоковом устройстве. В отличие от машины CRAY-1 здесь нет векторных регистров и все векторные операции производятся по типу основ- ная память — основная память, вследствие чего данные совершают круговое перемещение длиной 15,24 м вместо 1,83 м в машине CRAY-1. Это различие частично объясняет гораздо более длительное время запуска вектора у маши- ны CYBER 205. Вектор может включать в себя до 65 635 последовательно ад- ресованных элементов. Если необходимые данные не являются последова- тельно хранимыми, то требуемые элементы могут быть выбраны с помощью вектора управления разрядами - один разряд для каждого слова вектора. Тогда эта операция выполняется только для элементов, соответствующий управляющий разряд которых равен единице. Все элементы последовательно хранимого вектора должны быть считаны из памяти, даже если будут произ- водиться только ограниченные операции. Однако если управляющий вектор содержит небольшое число единиц, специфицируемые элементы длинного вектора могут быть выбраны посредством операции сжатия и перезаписаны последовательно. После этого последовательные операции с новым вектором сжатия выполняются более эффективно. При сложении для наибольшей эффективности команды рассылки — сбора реализуются посредством мик- ропрограммы в потоковом блоке. Команды производят обращения к памяти произвольно в соответствии с индексным списком или периодически (через равные интервалы). Данные поступают из основной памяти тремя входными потоками: А и В — два потока чисел с плавающей точкой, (М, X, Y) — один для векторов управления и символьных строк. Имеются также два выходных потока: С — для чисел с плавающей точкой и R - для символьных строк. Каждый из этих потоков имеет ширину в 128 разрядов и распределяется потоковым блоком на 128-разрядные потоки данных для конвейеров с плавающей точкой и 16-разрядные потоки — для символьного блока. Каждый из идентичных конвейеров с плавающей точкой (Pl — Р4 на рис. 2.12) включает в себя пять отдельных конвейерных функциональных устройств для операций сло- жения, умножения, сдвига и сложения, которые соединены с аппаратурой об- 107
Результат С . Рис. 2.13. Общая организация одного из четырех конвейеров для операций с плавающей точкой в компьютере CDC CYBER 205. Машина может содержать один, два или четыре таких идентичных универсальных конвейера (воспроизводится с разрешения фирмы Control Data Corporation) мена данными (см. рис. 2.13). Операции деления и вычисления квадратного корня выполняются в устройстве умножения. Каждое устройство подключа- ется к аппаратуре обмена данными через три 128-разрядных магистрали данных (две входные А и В и одна выходная С). Эти магистрали обеспе- чивают скорость передачи 100 млн. 64-разрядных результатов в секунду (100 млн. рез./с) на каждое устройство. Однако сами устройства способны выдавать результаты только со скоростью, равной 50 млн. рез./с для 64-раз- рядной операции и 100 млн. рез./с для 32-разрядаой операции. Для простых векторных команд, использующих одно устройство, аппаратура обмена дан- ными подсоединяет два входных потока А и В и выходной поток С к соот- ветствующему функциональному устройству, что приводит к асимптотичес- кой скорости операции конвейера 50 Мфлоп/с (64-разрядная операция) и 100 Мфлоп/с (32-разрядная операция). Если две последовательные вектор- ные команды, использующие различные устройства, содержат один операнд, который является скаляром, и предшествуют команде выбора соединения, то происходит ’’сцепление”. Выходной поток от первого используемого уст- ройства подается аппаратурой обмена данных на вход второго устройства. При таком способе два устройства работают одновременно, две команды действуют как одиночная векторная команда без промежуточного обраще- ния к основной памяти. Примерами таких триадическихопераций1 являются: 1 Триадическая операция - это операция с тремя входными аргументами, например А + В *С; диадическая операция - операция с двумя входными аргументами, например А + В. 108
вектор + скаляр * вектор, (вектор + скаляр) * вектор, которые часто встречаются в матричных задачах (например, скалярное про- изведение двух векторов методом среднего произведения, см. подразд. 5.3.2). Это свойство играет ту же роль, что и сцепление в машине CRAY-1, но является более ограниченным. В машине CYBER 205 в лучшем случае две операции могут быть сцеплены, причем один из операндов должен быть скаляром. На таких сцепленных триадах асимптотическая производитель- ность конвейера с плавающей точкой возрастает до 100 и 200 Мфлоп/с для 64-разрядаой и 32-разрядной арифметики соответственно. Поэтому макси- мальная асимптотическая производительность машины CYBER 205 для сцеп- ленных триад при 32-разрядной арифметике и четырех конвейерах достига- ет 800 Мфлоп/с. , На рис. 2.14 более подробно изображена организация конвейеров сложе- ния и умножения. Как видно из рис. 2.14, а, операция сложения поделена на семь основных подопераций. Вокруг сегмента ’’сложение” введена обратная связь (или кратковременный останов), чтобы дать возможность прибавлять ненормализованный результат сложения одного элемента векторной опера- ции к следующему элементу вектора. Это свойство используется в команде б) Рис. 2.14. Структурная схема основных секций (а) устройства сложения с плавающей точкой и (6) конвейерного устройства умножения в машине CDC CYBER 205 (воспро- изводится с разрешения фирмы Control Data Corporation) 109
интервала, которая формирует вектор Cl + I =Q +5; Со = А. При следующем кратковременном останове нормализованный результат С потока сложения заносится вновь в качестве ввода операнда В. Результат поступает на вход операнда В на восемь периодов позже того, как операнды поступили на кон- вейер, следовательно, имеется возможность накопления C;- + g = Cj +AI +g. Это свойство используется при суммировании всех элементов вектора и в коман- дах скалярного или внутреннего произведения. Конвейер умножения (рис. 2.14 6) имеет аналогичный кратковременный останов (задержка на 7 такто- вых периодов), используемый для вычисления произведения всех элементов вектора. Асимптотическая скорость операции умножения равна 50 Мфлоп/с (64-разрядная арифметика) или 100 Мфлоп/с (32-разрядная арифметика) на конвейер и 4 млн. оп./с (64-разрядная арифметика) или 15,35 Мфлоп/с (32-разрядная арифметика) на конвейер для операции деления. В качестве вспомогательного варианта имеется возможность ускорения операции деле- ния, что позволяет удвоить асимптотическую скорость этой операции. Строковый блок выполняет все разрядно-логические и символьно-стро- ковые операции с последовательностями (например, векторами) битов или байтов. Он также обрабатывает управляющий вектор, связанный с маскиро- ванием операций с плавающей точкой. Все магистрали данных, подходящие к строковому блоку, имеют 16-разрядную ширину. Две магистрали (X и Y) предназначены для ввода данных и одна магистраль (М) — для маски управ- ляющих битов. Магистраль R предназначена для выхода потока данных. Ско- рость выдачи результатов на разрядно-логических операциях у CYBER 205 равна 800 Мбит/с. Основной комплект CYBER 205 содержит восемь портов ввода-выво- да, каждый из которых имеет ширину в 32 разряда и скорость передачи 200 Мбит/с. Дополнительно может быть установлен второй набор из восьми портов ввода-вывода, что позволяет увеличить общую максимальную про- пускную способность ввода-вывода до 3200 Мбит/с. Каждый канал ввода-вы- вода содержит 4096-разрядный буфер-регистр. Все каналы совместно исполь- зуют последующий буферный регистр ввода-вывода, который подключен к устройству сопряжения памяти через 128-разрядную шину считывания дан- ных (R3) и 128-разрядную шину занесения данных (W2). На любом уровне (векторном или скалярном) эксплуатации процессора обеспечивается пол- ная скорость ввода-вывода. Любой канал ввода-вывода может быть исполь- зован устройством управления техобслуживанием (УУТ), который обеспе- чивает связь с оператором для обслуживания, управления системой (вклю- чая первоначальный запуск) и контроль. УУТ состоит из блока управления, построчно-печатающего устройства, дисковода и интерфейса с каналом. При работе в автономном режиме УУТ считывает диагностические подпрограммы с диска и выводит результаты их работы на дисплей; в оперативном режиме УУТ осуществляет контроль за работой процессора в реальном времени и отображает на дисплее его состояние. Воспользовавшись структурной нотацией из подразд. 1.2.4, можно кратко описать архитектуру машины CYBER 205 в следующем виде: C(CYBER 205) = lpv23°2>64 [{Ер, Р2, РЗ }io^M24-^4Ml?°M фб4 Ml (осн.) = {sn 16М3128к*з2 }; МЗ(стек) = •[ ^8М1бКф3г 110
Ер (вектор) = {4Fp, ВрЗ } - Вр45-»1й; М2 (буфер) = 5Mi *5i2 Fp = Ррз2,64 (+>*,=, V~) ВрЗ (строк) = Bi6 (бит, байт); Вр4 (поток) = Вр (рассылка—сбор) Р2 (скаляр) =5Ер1з»ё4 256М1^45^ 5Epl = {FP64 (+), Fpe4 (♦), Ер(1 - цикл), Врм (лог), FpM (V.-b) РЗ (I/O) = 16 {D32IO32M32} 32M32W8 (I/O буфер)2*j28 2.3.3. Технология Основной выигрыш от примененной в компьютере CYBER 205 технологии получен за счет новых БИС, методов компоновки и охлаждения логических схем и ЭВМ. Как пример, приведем на рис. 2.15 общий вид 15-слойной печат- ной платы арифметического устройства, на которой может быть размещена матрица из (10 х 15) кристаллов БИС. Основной характерной чертой являет- ся наличие горизонтальной охлаждающей трубки с циркулирующим фрео- ном, которая 10 раз проходит через плату. Кристаллы БИС устанавливаются в керамические держатели размером 12,7 х 17,78 х 2,54 мм и закрепляются непосредственно на охлаждающих трубках, которые поддерживают темпера- туру кристалла на уровне 55 ± 1°С. На рис. 2.16 показан техник, заменя- Рис. 2.15. Печатная плата арифметического устройства в машине CYBER 205. Фреоно- вый хладагент циркулирует в трубках 6,35 X 6,35 мм, к которым крепятся кристаллы БИС. Каждая 15-слойная плата может содержать до 15 кристаллов БИС (воспроизводит- ся с разрешения фирмы Control Data Corporation) 111
Рис. 2.16. Увеличенный вид печатной платы машины CYBER 205, на которой техник за- меняет кристалл БИС из 168 переключателей, смонтированный на керамическом держа- теле; горизонтальные ламели - трубки охлаждения (воспроизводится с разрешения • фирмы Control Data Corporation) Рис. 2.17. Различные держатели, разъемы и зажимы, которые применяются для крепле- ния 12,7 X 17,8 мм кристалла БИС в керамическом корпусе к трубкам охлаждения. В центре показана печатная плата, иа которой смонтированы два кристалла (воспроиз- водится с разрешения фирмы Control Data Corporation) 112
о о О О О О О О О о О о - «» а га и « п я 8 6 ч г о а о о о о о о о о о о 25 3 ?1 19 17 19 И 9 1 5 Э 1 27 29 31 53 35 57 41 43 43 47 49 51 О О О О О О О О О О О о 26 30 32 34 56 38 42 44 46 48 50 52 О О О О О О о о О о о о Паз Вид сверху Точки контроля контактов 2 4 6 8 ГО 12 14 16 18 20 22 2* 26 Соединитель (2) 52 50 46 46 44 42 40 58 36 3 4 32 30 28 Вид снизу 13-контактные ряды (2) _>7-контактные ряды (2) ""6-контактные ряды Рис. 2-18. Вид сверху и снизу БИС кристалла, установленного на керамическом держате- ле (слева); последовательность установки БИС-матрицы на охлаждающей трубке и пе- чатной плате (справа) (воспроизводится с разрешения фирмы Control Data Corporation) ющий кристалл БИС, кроме того, видны многочисленные пустые держатели для кристаллов, прикрепленные к трубкам с охлаждающей жидкостью. На рис. 2.17 представлены различные разъемы и держатели, с помощью которых ке- рамический корпус с кристаллом крепится к трубке; на рис. 2.18 показан про- цесс сборки. Непосредственный термический контакт с охлаждающей трубкой осуществляется через медную контактную пластину на керамическом держа- теле. Кристалл БИС имеет 52 внешних контакта, которые подводятся к бо- ковой и нижней частям керамического держателя (названного БИС-матри- цей, см. рис. 2.18, слева). Два разъема, по одному на каждой боковой сторо- не керамического держателя, содержащие по 26 контактов каждый, вставля- ются в печатную плату (см. рис. 2.17, в центре и рис. 2.18, справа) и прижи- маются пластиковым держателем. БИС-матрица вставляется в держатель и фиксируется металлическим пружинным зажимом. Чтобы дать понятие об уменьшении размеров, достигнутом применением БИС, укажем, что вся ска- лярная секция L (см. рис. 2.10 и 2.11) размещается в стойке длиной пример- но 2,134 м и содержит 16 БИС. В кристаллах БИС используются биполярные транзисторные ЭСЛ-схемы. Каждый кристалл БИС представляет матрицу из 168 ЭСЛ-переключателей (эквивалентных приблизительно 300 логическим вентилям). Субнаносекундные задержки вентиля достигнуты благодаря то- му, что произведение мощность х задержка вентиля составляет примерно 6 пДж. В машине используется всего 29 различных кристаллов БИС. Приме- нение БИС в процессоре позволило сократить потери мощности и облегчить эксплуатацию машины. Кроме, того, вследствие сокращения числа внешних соединений кристалла, надежность была улучшена примерно в шесть раз. Мощность рассеяния каждой БИС в 10 раз меньше требуемой мощности бо- лее раннего варианта на ИС с малой степенью интеграции. 113
Рис. 2.19. Стойки памяти емкостью 106 64-разрядных слов в машине CYBER 205. В цент- ре расположены два отделения интерфейса памяти, слева и справа от интерфейса - сек- ции памяти; в правой секции памяти можно видеть восемь стеков памяти общей емко- стью 0,5 • 10е слов. Машина CYBER 205 может содержать 1, 2 или 4 таких устройства по 10е слов Рис. 2.20. Стек памяти компьютера CYBER 205 содержит две входные платы, одну вы- ходную и 16 плат памяти. Один банк памяти емкостью 16К 32-разрядных полуслов размещается на двух платах памяти (воспроизводится с разрешения фирмы Control Data Corporation) 114
Рис. 2.21. Плата памяти компьютера CYBER 205, в которой предусмотрена параллельная обработка 20 разрядов (воспроизводится с разрешения фирмы Control Data Corporation) O «» I < » 4 X -4 X л , * <x *» л л* v it it it it it * ж и м RKiBVIBHII '2 t HKMHIHBHBWM яг iiiiiiiiii -$' h * в вв is* ' B'BBBBBBBBB • ф. mb iMB мяв ямв ямв мяв «ив.. яяв явв «ив mtt » « HR Mr Mi- W Mi Ml -MF Mi > g|> 'Ш* ЦВ» ШГ f И , Д iWi Ж *1Д1!44ЛЛ4ДДЖ^ • ИИП “м > . |Шн11111нп!Жгат1нппГн11и L * f s В основной памяти компьютера CYBER 205 применяются кристаллы полу- проводниковой памяти емкостью 4К с временем цикла и выборки 80 нс. Для вспомогательной логики используются ЭСЛ-схемы, выполненные на кристал- лах емкостью 100К. В двух секциях памяти, каждая емкостью 10е 64-разряд- ных слов, содержится по восемь стеков памяти (рис. 2.19). На рис. 2.20 по- казан крупным планом стек, который хранит 128К 32-разрядных полуслов в восьми независимых банках памяти. Стек содержит две платы ввода, одну плату вывода и 16 плат памяти. Охлаждение осуществляется посредством фреоновых пластин охлаждения, проложенных между платами. От групп из четырех 4К-разрядных кристаллов памяти, размещенных на плате памяти (рис. 2.21), считывается параллельно 20 или 19 разрядов слова. Одна пара плат памяти формирует банк памяти, в котором предусмотрен параллельный доступ к 39 разрядам (32 разряда для данных и 7 SECDED разрядов) — по одному разряду от 39 кристаллов памяти. Адрес памяти определяет, к како- му из 16К разрядов из группы по четыре 4К-разрядных кристаллов произво- дится обращение. После того как сделано обращение, в течение 80 нс банк не может обрабатывать другой запрос, так как это будет обращение к тем же кристаллам памяти. Однако поскольку имеется восемь банков на 16 платах, то следующий запрос к памяти может быть обработан в течение следующего тактового периода (через 20 нс после первого запроса) другим банком. Об- ращение к памяти обычно осуществляется суперсловами, т. е. 16 последова- тельными 32-разрядными адресами. Параллельное обращение к 512 разрядам суперслова достигается путем параллельной выборки 32 разрядов из 16 сте- ков памяти. Если запросы к последовательным суперсловам производятся к различным банкам, то их можно обрабатывать со скоростью одного запро- 115
са за тактовый период, обеспечивая максимальную скорость выдачи данных 25,6 «10* бит/с или 400 • 10® 64-разрядных слов в секунду. В машинах с па- мятью емкостью 2 и 4 Мелов секция, содержащая по 10® слов, как указыва- лось выше, работает независимо. Управление работой скалярной и векторной секциями в машине CYBER 205 осуществляется микропрограммой, которая хранится в памяти, разме- щающейся на вспомогательных логических платах, содержащих до 90 ЭСЛ- кристаллов емкостью 100К. Одна такая плата, расположенная горизонталь- но на верхней части БИС-платы, показана на рис. 2.15. Все запоминающие устройства (128 32-разрядный стек команд и 256 64-разрядный регистровый файл) собираются на вспомогательных платах из ЭСЛ-кристаллов емкостью 100К. Эти элементы памяти имеют время цикла чтение—запись 10 нс, в кото- ром учитывается время задержки ЭСЛ-вентиля, равное 1 нс. 2.3.4. Набор команд Набор команд компьютера CYBER 205 имеет довольно богатые возможно- сти, но прежде всего необходимо обсудить систему адресации и форматы арифметики. Машина CYBER 205 имеет виртуально-адресную систему памя- ти. Поле виртуального адреса в команде составляет 48 разрядов и представ- ляет собой адрес индивидуального бита в виртуальной памяти. Таким обра- зом, можно производить обращение к 2,8 • 1014 битам, 3,5 • 1013 байтам, 8,8 • 1012 32-разрядным полусловам или 4,4 • 1012 64-разрядным словам виртуальной памяти. С другой стороны, физическая основная память имеет максимальную емкость 4,2 • 10® 64-разрядных слов. Операционная система пересылает программы и данные в основную память в виде коротких (дли- ной 512, 2К или 8К 64-разрядных слов) или длинных страниц по 64К 64-раз- рядных слов. Перевод виртуального адреса памяти в физический выполняет- ся в скалярной секции с помощью 16 ассоциативных регистров. В регистрах располагаются ассоциативные слова, которые содержат виртуальный и соот- ветствующий физический адреса 16 последних использованных страниц. Все они могут сравниваться в течение тактового периода на соответствие между виртуальным адресом в команде, по которой должна производиться обработ- ка, и виртуальными адресами страницы в ассоциативном слое. Если соответ- ствие отсутствует, то сравнение продолжается в таблице позиций, которая представляет собой расширение списка ассоциативных слов в основной памя- ти. Если имеется соответствие, то виртуальный адрес переводится в физи- ческий и выполнение программы продолжается. Если страница не найдена, состояние программы автоматически сохраняется в памяти и заносится в программу контроля, чтобы передать управление другому заданию. Арифметические операции с плавающей точкой могут выполняться либо с 32-разрядными полусловами, либо с полными 64-разрядными. Числа пред- ставляются в виде С х 2Е, где коэффициент С и показатель Е являются целы- ми числами, представленными в дополнении до 2. При 32-разрядном форма- те Е состоит из 8, а С - из 24 разрядов, обеспечивая числовой диапазон от ± 10“27 до +10+4°. При 64-разрядном формате Е содержит 16, а С - 48 разря- дов, обеспечивая диапазон чисел от +10“ 8616 до +10+8®44. Двоичная точка как показателя, так и коэффициента располагается в крайней правой части сво- 116
его разрядного поля, так как они оба являются целыми числами, а знаковый разряд размещается в крайней левой части поля. Число является нормализо- ванным, если знаковый разряд коэффициента отличен от ближайшего разря- да справа. Результаты двойной точности записываются в виде двух чисел оди- накового формата в качестве результата одиночной длины и рассматривают- ся как нижний и верхний результаты. С ними можно раздельно производить операции. Другой характерной особенностью является предоставление ариф- метики значимости. В этом режиме результат операции с плавающей точкой сдвигается таким образом, что число значащих цифр равно числу значащих цифр наименьшего значащего операнда. Команды компьютера CYBER 205 — трехадресные длиной 32 или 64 разря- да, имеют 12 различных форматов; 219 различных команд можно разделить на следующие категории (число команд каждой категории указано в скоб- ках) : Регистровые (60) Индексные (9) Перехода (29) Векторные (28) Разреженного вектора (11) Векторные макро (15) Строковые (1) Логические строковые (8) Нестандартные (51) Управления (7) В данном коротком обзоре мы не пытались описывать все команды, но все-таки постарались показать особенности набора команд на примерах наи- более интересных. Регистровые команды манипулируют данными, находящимися в 256 64- разрядном регистровом файле в виде либо 32-разрядных полуслов, либо 64-разрядных полных слов в зависимости от команды. Регистры R, S и Т предназначены для 8-разрядных регистровых чисел. Разряды слова нумеру- ются слева направо, начиная от нуля. Примеры регистровых команд: ADDX R, S, Т Прибавить адресную часть (т. е. разряды 16 — 63) регистра R к регистру S и занести в регистр Т. EXPH R, Т Выбрать порядок длиною в полуслово из регистра R и поместить в наименее значащие разрядные позиции регистра Т. Индексные команды загружают и манипулируют 16-, 24- или 48-разрядны- ми порциями регистров: IS R, 116 Увеличить правые 48 разрядов регистра А с 16 до 31 разряда на 16-разрядный операнд 116 32-разрядной команды. Команды перехода можно использовать для сравнения или проверки оди- ночных разрядов, 48-разрядных индексов, 32- или 64-разрядных операндов с плавающей точкой. По результатам сравнения определяется, продолжать ли программе работу со следующей последовательной командой или перей- ти к другой программной последовательности. CFPEQ А, X [Д У] Сравнение на равенство 64-разрядных чисел реги- стров А и X. Если сравнение удачное, то выпол- няется переход к ячейке, которую определяет со- держимое [Д У]. 117
Векторные команды выполняют операции над упорядоченными наборами чи- сел, которые хранятся в последовательных ячейках памяти. Обозначенная операция выполняется поэлементно, а результат заносится в последователь- ный набор ячеек памяти. Максимальная длина такого вектора составляет 65 535 элементов. Вектор специфицируется в команде путем выдачи чисел (по 8 разрядов каждое) из пары регистров, например [А, X] или [01, 02]. Первый регистр содержит базовый адрес (48 разрядов) и длину поля (16 разрядов) вектора, второй регистр содержит 16-разрядное смещение базово- го адреса, определяющее начало вектора. Векторная команда также включа- ет в себя номер регистра (8 разрядов), который содержит адрес начала уп- равляющего вектора (48 разрядов). Управляющий вектор представляет со- бой разрядный вектор, содержащий одну разрядную позицию для каждого элемента векторных операндов. Он используется для управления (или мас- кирования) занесением результата векторной операции. Например, может потребоваться, чтобы осуществлялось занесение элементов, для которых со- ответствующий управляющий бит — единица (или нуль). Регистры А, В, С, X, Z предназначены для чисел в диапазоне 00 - FF в шестнадцатеричной систе- ме счисления: MPYUV [А, X], [Л, У], С, Z Умножает вектор, специфицированный ре- гистрами [А, X], на вектор, специфициро- ванный регистрами [8, У], при управляю- щем векторе, специфицированном регист- ром Z. Выходной вектор специфицируется регистром С. При условии смещения выход- ной вектор размещается в регистре С + 1. Векторные команды включают в себя операции сложения, вычитания, ум- ножения, деления (используя либо верхнюю, либо нижнюю часть результатов с двойной длиной, нормализованную арифметику или арифметику значимо- сти) , функции максимума и минимума из APL [121], сжатие и расширение чисел между 64- и 32-разрядными формами с плавающей точкой, вычисление квадратного корня, усечение, объединение и разделение коэффициента и по- рядка для чисел с плавающей точкой. Если вектор содержит много нулевых или близких к нулю элементов, то предоставляется специальный формат данных. Такой вектор можно сжать в разреженный вектор, который специфицируется порядковым вектором и вектором данных. Порядковый вектор — это двоичный вектор с позицией двоичного разряда для каждого элемента полного вектора. Наличие ненуле- вого элемента идентифицируется единичным битом, а нулевого элемента - нулевым битом. При наличии позиций всех ненулевых элементов, идентифи- цированных порядковым вектором, вектору данных нужно только записать значения ненулевых элементов в том порядке, в котором они присутствуют в полном векторе. Разреженный вектор определяется в команде посредством выдачи чисел из пары регистров. Первый из регистров содержит базовый ад- рес вектора данных, а второй — базовый адрес и длину поля порядкового вектора. С такими разреженными векторами можно выполнять операции сложения, вычитания, умножения и деления, например: 118
ADDNS [A, X], [jB, У], [C, Z] Нормализованное сложение разреженно- го вектора, специфицированного регист- рами [А, У], с разреженным вектором, специфицированным регистрами [В, У]; результат заносится в виде разреженного вектора, специфицированного регистра- ми [С, Z]. Разреженные векторы можно формировать посредством векторных команд сравнения, например: CMPEQ [А, X], [В, У], Z Сравнить и сформировать порядковые векто- ры: если Ап = Вп, разряд Z1^ равен 1, в против- ном случае Zn = 0; далее следует векторная операция сжатия, например: CPSV А, С, Z Сжать вектор А в вектор С под управлением порядково- го вектора Z. Разреженный вектор может быть расширен до полного вектора, например: MRGV А, В, С, Z Слить вектор А с вектором В под управлением поряд- кового вектора Z. Если вектор В состоит полностью из нулей, то результирующий вектор С представляет собой расширенную форму разреженного вектора А; если Zn = 1, Сп = следующий элемент А; если Zn = 0, Сп - следующий элемент В. Аналогичной командой, которая не расширяет векторы, является коман- да маски: MASK А, В, С, Z Сформировать выходной вектор С из соответствую- щих элементов А или В в зависимости от значения со- ответствующего бита в управляющем векторе Z: если/„ = 1,С„ =Ап; если Zn = 0, Сп =Вп. Векторные команды сравнения, сжатия, слияния и маски представляют собой примеры нестандартных команд. Другие команды этой категории включают в себя отсчет реального времени, подсчет единиц в поле, моделиро- вание отказов, нахождение максимального или минимального элемента в векторе, слияние битовых и байтовых последовательностей, сканирование для поиска определенного байта. Другим набором команд, представляющих интерес, являются векторные макрокоманды, которые с помощью одной команды выполняют несколько наиболее часто встречающихся операций в числовом анализе. Макрокоман- ды реализуются микропрограммой и выполняют операции, для которых обычно требуется подпрограмма команд. Во всех случаях элементы, вклю- ченные в операцию, выбираются управляющим вектором Z. Ап, Вп, Сп обозначают n-й элемент вектора с плавающей точкой, специфицирован- ной словами в регистрах А, В, С соответственно; Zn обозначает я-й разряд порядкового или управляющего вектора, специфицированного словом в регистре/. 119
Примеры: ADJMEAN [A, X],C,Z Смежное среднее: Cn = (А„т1 +A„)/2. AVG У], C, Z Среднее: C„ = (A„ +B„)/2. DELTA [A, X],C,Z Дельта или числовое дифференцирова- ние: Сй = (Ап + 1 -А„). DOTV [A, X],[B,Y],C,Z Скалярное произведение двойной дли- ны (ZAnBn), записанное в регистры С иС+ 1. SUM [A, X]C,Z Сумма элементов А (с двойной длиной) в регистрах С и С + 1. VREW [A,X],C,Z Пересылка вектора А в регистр С с представлением элементов в обратном порядке. Периодические операции или стохастические операции рассылки и сбора (см. подразд. 2.2.4) в машине CYBER 205 выполняются посредством одиноч- ных команд. Они используют элементы или группы, переданные в/из основ- ной памяти или регистрового файла. Например: VTOVX [А, Х],В, С Пересылка типа вектор — индексированный век- тор; В -> С, индексированный по А. VXTOV [А, X], В, С Пересылка типа индексированный вектор — век- тор; В, индексированный по А -> С. Списки индексов, которые используются для указанных команд, генериру- ются любым наиболее удобным способом, но имеется также и специальная команда поиска, которая может оказаться полезной для этих целей. Например: SRCHEQ А, В, С, Z Отыскание равенства и формирование списка ин- дексов. Ап сравнивается со всеми элементами В до того момента, пока не будет найдено равен- ство. Число безуспешных сравнений до ’’попада- ния в цель” заносится в Сп. Эта операция повто- ряется со всеми элементами А. Подсчитанные зна- чения Сп фактически представляют собой индек- сы элементов, удовлетворяющих условию равен- ства. Сравнение можно ограничить до определен- ных элементов с помощью управляющего векто- ра Z. Приведем пример другой формы команды поиска для отыскания одиноч- ного индекса. SELLT [А, Л], [В, У], С, Z Отбирает по условию ’’меньше чем”: соот- ветствующие элементы А и В сравниваются по очереди, начиная с первого элемента. Ин- декс первой пары, который удовлетворяет условию (в данном случае Ап <Вп), поме- щается в регистр С. Пары элементов пропус- каются или включаются в соответствии с разрядами управляющего вектора Z. 120
Строковые команды выполняют операции с последовательностями дан- ных в форме 8-разрядных байтов. Они представляют собой символы 256-сим- вольного набора, включающего, к примеру, ASCII и EBCDIC стандарты. В от- дичие от CYBER 203 в компьютере CYBER 205 реализована только одна такая байт-ориентированная команда: MOVL [А, У], [С, У], 18 Байты А смещаются влево и становятся бай- тами С. Дополнения из байта 18 заводятся справа. Логические строковые операции выполняют операции с последовательно- стями одиночных бит. В отдельных командах предоставляются восемь логи- ческих операций, например: AND [А, X], [В, У], [С, Z] Логическая побитовая операция И с разря- дами А и В и соответствующим формирова- нием разрядов в С. NOR [А, У], [Д К], [С, Z] Операция НЕ исключающего ИЛИ с разряда- ми Л и В и формированием разрядов в С. Команды управления функционируют только в случае, если машина нахо- дится в режиме контроля. Эти команды используются операционной систе- мой при считывании и занесении ассоциативных слов в абсолютные адреса памяти для управления системой виртуальной памяти и для прерываний. Эти команды, если нет программного сбоя, в программе пользователя не выпол- няются. 2.3.5. Программное обеспечение Программное обеспечение (ПО), применяемое в машине CYBER 205, яв- ляется развитием написанного для машины CDC STAR 100 и находилось в эксплуатации на STAR 100, CYBER 203 или CYBER 205 с 1974 г. Основными элементами ПО являются: 1. CYBER 205-OS — пакетная интерактивная операционная система; 2. CYBER 200 FORTRAN - векторизующий компилятор для основного языка высокого уровня; 3. CYBER 200 МЕТА — язык ассемблера, который дает возможность ис- пользовать все свойства аппаратного обеспечения машины; 4. CYBER утилиты — включают в себя загрузчик, средства редактирования и ведения файлов. Операционная система (ОС) CYBER 200 предназначена для обработки па- кетных и интерактивных обращений, осуществляемых либо локально, либо из удаленных участков через периферийную ЭВМ, такую как CYBER 170 се- рии 700. Массовая память выполнена на дисковых устройствах CDC 819 (ем- костью — 4800 Мбит, средней скоростью передачи данных — 36,8 Мбит/с, сред- ним временем позиционирования — 50 мс), подключенных к каналам дан- ных CYBER 205. В распоряжении каждого пользователя-программиста имеет- ся память емкостью до 2,2 • 1012 64-разрядных слов. Такие программы хра- нятся в системе массовой памяти и пересылаются в физическую память ком- пьютера (с максимальной емкостью 4 • 106 64-разрядных слов) в виде стра- 121
ниц. Работа ОС заключается в выделении физической, памяти для соответ- ствующих страниц и распределения их между несколькими программами пользователей с тем, чтобы программы выполнялись в мультипрограммиру- емой среде. Операционная система достигает этого с помощью команд в ре- жиме управления, изменяя ассоциативные слова в соответствующих регист- рах и таблице страниц. Операционная система выполнена с высокой степенью модульности и связь между различными частями осуществляется посред- ством сообщений. Большая часть ОС размещается в периферийной ЭВМ. Толь- ко ядро и пейджер постоянно находятся в памяти CYBER 205. Ядро управля- ет выделением времени активным заданиям и передачей сообщений различ- ным частям ПО. Пейджер управляет размещением памяти и обменом стра- ницами. Другая часть операционной системы, называемая виртуальной, заносит за- дания в ОС с пакетных или интерактивных терминалов и удаляет задания из памяти, если они закончились или стали неактивными. Сообщения ввода-вы- вода от активных заданий обрабатываются операционной системой и пересы- лаются в устройство ввода-вывода для реализации операций. Кроме этого выполняются задачи по анализу работы машины. Программа оператор обес- печивает интерактивную связь с оператором, который имеет возможность: вывести на экран дисплея информацию о заданиях пользователей и отчетно- сти; завершить, приостановить и возобновить задания; просмотреть табли- цы системы; вообще управлять потоком заданий, проходящим через ЭВМ. Компилятор CYBER 200 FORTRAN включает в себя стандарт ANSI Х3.9— 1966 с расширениями, предоставляющий пользователю возможность исполь- зовать векторные и строковые средства аппаратного обеспечения машины CYBER 205. Были добавлены некоторые средства, которые согласуются со стандартом ANSI Х3.9—1978 и были стандартизованы в ранних компилято- рах фирмы CDC (NAMELIST I/O, ENCODE/DECODE, BUFFER IN и BUFFER OUT). Компилятор содержит автоматический векторизатор, который заме- няет циклы DO либо векторными командами, либо соответствующими под- программами STACKLIB (см. ниже), где такое замещение не ведет к измене- нию логики программы. Кроме того, в компиляторе CYBER 200 FORTRAN имеется оптимизатор, который перераспределяет график прохождения ска- лярных команд, чтобы получить наиболее оптимальное использование ска- лярных регистров и конвейерных функциональных скалярных устройств, обеспечивая, таким образом, максимальный функциональный параллелизм без вмешательства пользователя. Векторные операции специфицируются дескрипторами, которые определя- ют векторы. Они переводятся непосредственно в формат машинных команд, описанный в подразд. 2.3.4. Спецификация вектора осуществляется с помо- щью указания имени массива, начального индекса и длины. Таким образом, заданный массив А, А (10; 100) означает вектор, который начинается в ячей- ке Л (10) и имеет длину в 100 элементов. Дескрипторы могут использовать- ся в неявном виде в пределах выражений или в виде динамического описа- ния. Приведем несколько примеров DIMENSION А (1000)В<1000) DESCRIPTOR AD.BD 122
С (1) ПО ОБ'ЯВЛЕНИЮ ASSIGN AD,A'1;999) ASSIGN BD>B(2r999) AD=BD*2.0 С (2) НЕЯВНОЕ ИСПОЛЬЗОВАНИЕ ДЕСКРИПТОРОВ А(1;999)=В(2;999)*2.0 В обоих случаях матрица элементов В (2), . . . , В (1000) умножается на два и заносится в ячейки Л (1), .... А (999). В случае (1) дескрипторы ис- пользуются на месте наименования массива в арифметическом операторе, в случае (2) элементы массива, которые будут использованы, специфицируют- ся в арифметическом операторе. Обращение к командам в компьютере CYBER 205 можно производить с помощью специальных вызовов подпрограмм в форме CALL Q8ADDX (В, S, Г), которые, например, генерируют одиночную машинную команду ADDX R, S, Т. Мнемонику других машинных команд можно записать в аналогич- ном виде с зарезервированными буквами Q8 в виде префикса и использовать в качестве вызова подпрограмм для генерации одиночной команды в том месте Фортран-программы, где этот вызов подпрограммы осуществляется. В качестве дополнительной возможности можно включить программу поль- зователя на ассемблере в программу, написанную на Фортране, объединив подпрограмму, сгенерированную на ассемблере CYBER 200 в качестве внеш- него обращения, с программой на Фортране во время загрузки программных частей. Некоторые часто встречающиеся диадические и триадические операции с векторами, включая рекурсивные операции, были искусно запрограммирова- ны и являются доступными с помощью вызовов специальных подпрограмм из библиотеки подпрограмм STACKLIB. 1) Сложить рекурсивный VI CALL Q8A010(A<2)rB(2)гА(1)fN-1) эквивалентно DO 1 I»2.N 1 A(I)-B(I)+A(I-1) 2) Умножить - Сложить CALL Q8KA400(A(2)>С»8(2)>В((2)»N-1) эквивалентно DO 1 I=2rN 1 A(I)=C*B(I)+D(I) 3) Вычесть - Умножить Рекурсивный VI (обратный порядок) CALL Q8SM013 (ACN-2) »BCN-2) »С (N-2) г A (N-l) ,N-D эквивалентно DO 1 I=2.N J=(N+1)-I 1 A(J>=B(J)-(C(J)«A(J+1)) 123
В приведенных выражениях буквы, следующие за Q8, идентифицируют тип включенной арифметической операции, а цифровой код указывает, явля- ются операнды скалярными или векторными и какой операнд рекурсивный. Программа на МЕТА-ассемблере для машины CYBER 205 генерирует пере- распределяемый двоичный код из мнемонических машинных команд, про- цедур, функций и смешанных директив. Тем самым предоставляется доступ ко всем средствам аппаратного обеспечения машины. Директивы дают воз- можность программисту управлять процессом трансляции. Некоторые свой- ства транслятора: возможность условной компоновки для селективной тран- сляции; генерация реентерабельной программы, которой одновременно мо- гут воспользоваться несколько пользователей без ее дублирования; способ- ность переопределять всю мнемонику или любую мнемоническую команду; возможность определения символа набора (или списка) данных; атрибуты таких наборов могут быть присвоены и уточнены программистом. Процесс ассемблирования осуществляется за два прохода. При первом проходе интер- претируются все операторы, значениям присваиваются символы, а ячейкам назначается каждый оператор. Во время второго прохода удовлетворяются внешние обращения и обращения к элементу программы, встречающемуся по ходу выполнения программы, осуществляется сбор данных и производит- ся двоичный вывод и выдача распечаток результатов трансляции. Программы на ассемблере по структуре являются модульными и могут состоять из нес- кольких подпрограмм, которые объединяются вместе программой LOADER. Программа LOADER представляет собой одну из утилит операционной си- стемы. Она выбирает перераспределяемый двоичный код, выданный Фор- тран-компилятором или МЕТА-ассемблером, увязывает его с вызванными подпрограммами библиотеки и выдает исполнительный программный файл. Пользователь может контролировать характеристики программного файла и может, например, специфицировать загрузку определенных подпрограмм в виде подпрограмм в малой или большой виртуальной странице. Исходные файлы в системе программного обеспечения компьютера CYBER 205, вклю- чающей в себя компилятор, ассемблер и программы пользователей, записы- ваются в память в формате перфокарт в качестве программных файлов, ко- торые можно создавать, редактировать и поддерживать с помощью утилиты UPDATE. Объектные двоичные файлы могут быть отредактированы объект- ным библиотечным редактором. Вся вышеуказанная деятельность по ведению файлов, подготовке заданий к вводу-выводу выполняется на периферийной ЭВМ, возлагая тем самым на машину CYBER 205 решение основных задач, связанных с громоздкими вы- числениями. Аппаратная связь периферийной ЭВМ и CYBER 205 контролиру- ется программным обеспечением связи, которые предоставляет многочислен- ным периферийным ЭВМ возможность одновременной работы. 2.3.6. Производительность В табл. 2.5 указаны производительность некоторых векторных операций при выполнении 64-разрядных арифметических операций с плавающей точ- кой на компьютере CYBER 205. Сразу же отметим, что значение длины полу- производительности (Л1/2), за исключением операций рассылки — сбора, 124
Таблица 2.5. Ожидаемая векторная производительность компьютера CYBER 205, ин- терпретируемая в терминах г„ и Пф для рида команд (64-разрядных операций). Факти- ческая производительность в среде мультипрограммирования может быть несколько от- личной от этих значений. Команда Время, тактовые периоды Too, Mon /с «1/2 Сложение полных векторов 51 + 0,52V 100 102 Перемножение полных векторов 52 + 0,52V 100 104 Сложение разреженных векторов 88 + 1/16 + 72V/16 891 156 Перемножение разреженных векторов 88 +1/16 + 72V/16 73г 128 Скалярное произведение 116+1 100 116 Произведение элементов 126 + 1 50 126 Максимум или минимум элементов 86+1 50 86 Сжатие 52 + 0,51 100 104 Маскирование или слияние 56 + 0,52V 100 112 Произвольная рассылка 83 + 1,252V 40 66 Произвольный сбор 69 + 1,252V 40 55 Векторная реляционная 56 + 0,52V 100 112 1 I <2N 2 I <4N Примечания: 1— число элементов входного вектора или векторов, N— число элементов выходного вектора. близка к 100, т. е. в 5 - 10 раз больше, чем у CRAY-1. Поскольку значение п 1/2 определяет наилучший используемый алгоритм (см. гл. 5), может воз- никнуть необходимость применения на этих двух машинах различных алго- ритмов, несмотря на то, что обе они принадлежат к общей категории кон- вейерных векторных ЭВМ. Для большинства команд асимптотическая ско- рость операций (/•„) составляет 100 Моп./с (или Мфлоп/с) по сравнению с 80 Мфлоп/с для таких же диадических операций на CRAY-1. Эта скорость па- дает до 40 - 50 Моп./с для команд рассылки — сбора, поиска максимума — минимума и произведения элементов. На компьютере CRAY-1 зги операции выполняются с применением скалярных подпрограмм при скорости 10Моп./с В этом подразделе мы сравниваем производительность двухконвейерного компьютера CYBER 205 и компьютера CRAY-1 при выполнении арифмети- ческих действий с одинаковой точностью в 64 разряда. Существуют два спо- соба увеличения производительности машины CYBER 205. Один - это сниже- ние точности арифметических операций с плавающей точкой до 32 разрядов, другой - увеличение числа конвейеров с двух до четырех. В обоих случаях удваивается число результатов, выдаваемых в определенное время. Выполне- ние обоих действий, т. е. 32-разрядных арифметических операций на четырех- конвейерной ЭВМ, приводит к увеличению в 4 раза числа результатов за одно и то же физическое время. Если для выдачи п результатов на двухконвейер- ной машине при 64-разрядных арифметических операций время t =г~1(п+п1/2), (2.22) то оно также является временем для работы с вектором длиной п' = сп, где 125
Рис. 2.22. Временные кривые, позволя- ющие определить и л2/2 для компью- тера CDC CYBER 205 [134] с = 2 или 4 в указанных выше случаях. Произведя в уравнении (2.22) заме- ну, получаем t = r~l (п/с + пщ) = (2.23а) = (с^)-1 (и' + сИ1/2). (2.236) В новой ситуации (обозначенной штрихом) по определению имеем t = (r:yl(n' + n\/2) (2.23в) и, сравнивая с уравнением (2.236), получаем п' = craa,n\l2=cni/2. (2.23г) Следовательно, удвоение или учетверение длины вектора, обрабатываемой в течение заданного времени, приводит к увеличению в 2 или 4 раза какгте, так и пу2. Этот эффект соответствует данным М. Кассиса [134], приводи- мым на рис. 2.22, где изображена временная кривая для диадического век- торного сложения или поэлементного умножения в форме С = А оп В (оп — сокращение от слова операция) на двухконвейерной машине CYBER 205 с 64-разрядными арифметическими операциями (кривая А: г„ = 100 Мфлоп/с, «1/2 = 100) и кривая для той же операции на двухконвейерной машине CY- BER 205 с 32-разрядными арифметическими операциями или на четырехкон- вейерной CYBER 205 с 64-разрядными арифметическими операциями. (Кри- вая В: г„ = 200 Мфлоп/с, «1/2 =200). На рис. 2.22 изображена также кривая С для четырехконвейерной машины CYBER 205 при 64-разрядной цепочечной триадической операции, такой как D = А + В * с, (2-24) где вектор В умножается на скаляр с и затем поэлементно складывается с вектором А. Время, необходимое на выполнение команды выборки цепей, не учитывается. Следовательно, наибольшая из издержек, влияющих на «1/2> связана с операцией чтения и записи чисел в основную память, которые в гру- бом приближении приводят к удвоению длины конвейера, но существенно не изменяет «1/2. Однако значение удваивается несмотря на то, что две опе- рации следует учитывать для каждого результата, заносимого в память. Рас- 126
смотрим другой вариант. Пусть временным уравнением для векторной опе- рации умножения или сложения будет t=r(n+s+l— 1), (2.25а) где s — время чтения и записи в память, 1 — длина арифметического конвей- ера. В компьютере CYBER 205 s > I > 1, откуда г =т~1, пц2 =s + 1 —l^s. (2.256) Если две такие операции будут сцеплены, то временным уравнением для каж- дой векторной операции будет / = т(и + s + 2Z — 1)/2, (2.26а) откуда г = 2т~1 и пц2 = s + 21 — 1 « s. (2.266) Таким образом, как и отмечалось ранее, удваивается, а «1/2 приблизи- тельно остается неизменной. Это показывают кривые В и С на рис. 2.22. На практике и 1/2 увеличивается примерно на 50 %, что связано с временем, необ- ходимым для выполнения команды выбора связи, которые мы игнорировали. Результаты приведенных оценок и и i/2 суммированы для компьютеров CYBER 205 и CRAY-1 в табл. 2.6. Сравнение этих машин представляется за- труднительным, так как их производительность строго зависит от решаемой задачи, способа ее организации и программирования. Поэтому дальнейшее обсуждение будет проводиться с указанием типа сравнения. Читателю посове- туем сначала убедиться, уместны ли известные данные по производительности для его задачи, прежде чем использовать их в формулах, приводимых далее, и не делать общих выводов на основании чисел, которые мы даем в качестве примеров. В табл. 2.6 мы благожелательно рассматриваем обе ЭВМ и предпо- лагаем, что компьютер CYBER 205 работает с соприкасающимися векторами, а программа для компьютера CRAY-1 организована так, что в среднем прихо- Таблица 2.6. Абсолютная асимптотическая производительность гте, длина полупро- изводительиости п,/2 и асимптотическая удельная производительность =гаа/п112 для компьютерои CYBER 205 и CRAY-1. Предполагается, что операции выполняются с со- прикасающимися векторами в компьютере CYBER 205 и в среднем осуществляется од- но обращение к памяти за одну операцию в компьютере CRAY-1 Тип компьютера Число разря- дов Гоо, Мфлоп/с Мфлоп/с й1 диади- ческая операция триади- ческая операция диади- ческая операция триади- ческая операция 2-конвейерный 64 100 100 200 1 2 300-350 CYBER 205 32 200 200 400 1 2 100-117 4-конвейерный 64 200 200 400 1 2 100-117 CYBER 205 32 400 400 800 1 2 75-88 CRAY-1 64 10-20 80 160 4-8* 8-16* - 1 Диапазон чисел соответствует принятому значению л,/2, равному 10 или 20, для компьютера CRAY-1. 127
100 Рис. 2.23. Производительность двухконвейерного компьютера CYBER 205 (штриховая линия) и CRAY-1 (сплошная линия) как функция длины вектора при условии выпол- нения обеими машинами 64-разрядных арифметических операций дится не более одного обращения к основной памяти за одну операцию с пла- вающей точкой. Если эти допущения нарушаются, как это может быть на многих реальных задачах, производительность обеих ЭВМ снижается на соот- ветствующие коэффициенты. Из данных табл. 2.6 видно, что компьютер CYBER 205 обладает более высокой асимптотической абсолютной производительностью = 100 — 800 Мфлоп/с против 80 - 160 Мфлоп/с у CRAY-1),xoth CRAY-1 имеет более высокую асимптотическую удельную производительность (лм =4 — 8 Мфлоп/с против 1 - 2 Мфлоп/с у CYBER 205). Поскольку гх соответствует произво- дительности на длинных, а — на коротких векторах (см. подразд. 1.3.5), то имеем ситуацию, когда одна машина является лучшей при работе с длин- ными векторами, а другая — с короткими. В качестве примера сравним двухконвейерную машину CYBER 205 с машиной CRAY-1 при выполнении ими 64-разрядных диадических операций, и если обратимся к рис. 2.23, то увидим, как это отличие следует интерпретировать. На рисунке изображена средняя производительность двух машин как функция длины обрабатыва- емых векторов, вычисленная с помощью уравнения (1,9а). Для очень длин- ных векторов, гораздо больших, чем значение п ц2 (т. е. в самой правой части диаграммы), производительность приближается к асимптотическому значе- нию, и компьютер CYBER 205 является более быстрым. Однако для корот- ких векторов компьютер CRAY-1 обладает более высокой производитель- ностью, так как его меньшее значение п ц2 дает возможность приблизиться к собственной асимптотической производительности быстрее, чем в компьюте- ре CYBER 205. Следовательно, существует длина вектора п, выше которой компьютер CYBER 205 обладает более высокой средней производительно- стью, чем CRAY-1; при длине вектора линий й производительность CRAY-1 выше, чем у CYBER 205. Значение п можно найти, проведя манипуляции с уравнением (1,9а): «=«1(Д)(1-7)/(а-1), (2.27) где а = r^/г^1^ и у = . Верхний индекс (2) относится к CYBER 205, индекс (1) - к CRAY-1. Выражение (2.27) использовалось для вычисления п во всех режимах ра- боты компьютера CYBER 205. При допущениях относительно производитель- 128
ности, используемых в табл. 2.6, можно заключить, что длины векторов дол- жны быть равны примерно 100 и более, если мы хотим, чтобы компьютер CYBER 205 превзошел CRAY-1. Перселл в своей работе (журнал Private сот- \ munication, 1980) указал, что значение п чрезвычайно чувствительно к значе- ниям Г» и и 1/2. Основываясь на данных, полученных в Лос-Аламосской науч- ной лаборатории и Ливерморской лаборатории им. Лоуренса для среднего от семи вычислений по типу память — память, где каждое включает в себя от од- ной до пяти векторных операций, получаем следующие средние значения: CRAY-1 л» =56Мфлоп/с, =30 CYBER 205 г» = 138 Мфлоп/с, п1/2 = 125 (2-конвейерный, 64-разрядный) CYBER 205 гх = 261 Мфлоп/с, nlf2 = 234 (4-конвейерный, 64-разрядный) При этих значениях длина вектора п существенно уменьшается: CYBER 205 (2-конвейерный, 64-разрядный) Я =35; (2 285'1 CYBER 205 (4-конвейерный, 64-разрядный) п - 26. Интересно пронаблюдать эффект дальнейшего увеличения числа конвейе- ров в CYBER, взяв, скажем, р конвейеров. Тогда = 50р Мфлоп/с, п&> = 50р, я£2) = 1 Мфлоп/с (неизменно), далее при 20 получаем а = 0,625р, у = 0,25 (неизменно), откуда и = ЗООр/(5р — 8), (2.29а) значение которой стремится к 60 по мере того, как р -* °°. Таким образом, на основании данных нашего примера находим, что увеличение числа конвей- еров не может привести к п ниже 60. Если г£2\ п $ а я^21 и у — констан- ты, то при р -> °° имеем «->(1-тК(1М2). (2.296) Поскольку у - константа, а - производительность исходного компьюте- ра (в данном случае CRAY-1), можно заключить, что единственный способ уменьшить это лимитирующее значение п состоит в увеличении удельной про- изводительности машины я£2-*. Это означает, что абсолютная производитель- ность должна быть увеличена без увеличения пу2. Важный вывод, который следует отсюда, заключается в том, что этого нельзя достигнуть путем дубли- рования устройств или снижения длины арифметической операции, посколь- ку в обеих случаях как r„ t так и пц2 увеличиваются в одинаковое число раз, а я^, остается неизменной. Удельную производительность я^ можно, в прин- ципе, увеличить, сократив издержки в конвейере или тактовый период (см. подразд. 1.3.2). Однако в этом случае, по всей вероятности, потребуется до- рогая технология. 5 Зак. 1799 129
2.4. КОМПЬЮТЕР АР-120В ФИРМЫ FPS Компьютер FPS АР-120В выпускается фирмой Floating Point Systems’ в Бивертоне, близ Портленда, шт. Орегон, США. Фирма была основана К. Вин- нингстадом в 1970 г. с целью производства недорогих и одновременно высо- копроизводительных машин с плавающей арифметикой в качестве приставки к мини-ЭВМ. Начиная с 1971 г. фирма выпускала машины с плавающей ариф- метикой, входящие в состав машин других фирм-изготовителей (например, Data General). Первой машиной, выпущенной на рынок с маркой компании, была АР-120В и поставки ее начались в 1976 г. К 1980 г. было установлено приблизительно 1650 таких машин, в том числе примерно 200 в Европе. Эта машина называется матричным процессором (МП), так как она предназначе- на для эффективной обработки матриц чисел. Стимулом для ее разработки явилась большая потребность нефтедобывающей промышленности в ЭВМ, производящих быструю обработку огромных объемов сейсмических данных. Эта машина является конвейерной, а ее архитектура, представляющая ряд не- зависимых специализированных конвейеров, не работающих с общей памя- тью, в целом напоминает архитектуру машины CRAY-1. Можно было бы сказать, что машина АР-120В является мини- или миди-ЭВМ по отношению к CRAY-1. Так же как и CRAY-1, машина АР-120В может служить ЭВМ без дан- ных, которая должна подключаться к главной ЭВМ. Для стыковки АР-120В с большинством европейских и американских мини-ЭВМ выпускаются интер- фейсы. Модифицированный вариант машины с большей емкостью памяти, на- зываемый AP-190L, предназначен для использования в качестве приставки к большим ЭВМ, таким, как ЭВМ серии IBM 370. Внутренняя архитектура ЭВМ и временные зависимости являются такими же, что и у машины АР-120В. Тог факт, что машина называется матричным процессором, не означает, что она состоит из процессорной матрицы, как, например, распределенный матрич- ный процессор DAP фирмы ICL (см. гл. 3). К сожалению, существует некото- рая путаница в понятии ’’матричный процессор”, поэтому мы стараемся избе- гать его использования в этой книге. Основные публикации с описанием ком- пьютера, FPS, АР-120В были сделаны В. Виттмейером [255] иДж.Хартом [94]. Более подробную информацию можно почерпнуть из документов фирмы. В 1980 г. фирма Floating Point Systems сообщила о разработке машины FPS-164 в качестве наследника машины АР-120В, первые поставки которой были запланированы на 1981 г. Общая архитектура машины очень схожа с ар- хитектурой АР-120В, а тактовые частоты и временные интервалы идентичны, поэтому наше дальнейшее обсуждение в значительной степени будет относить- ся к этой машине. В компьютере FPS-164 были сделаны следующие принци- пиальные улучшения: 1) 64-разрядные арифметические операции с плавающей точкой по сравне- нию с 38-разрядными у компьютера АР-120В; 2) 32-разрядные целочисленные арифметические операции по сравнению с 16-разрядными у АР-120В; * Штабквартира: 3601 SW Murray Boulevard, Beaverton, Oregon 97223, USA. Представ вительство в Великобритании: Dudley House, High Street, Bracknell, Berkshire. 130
3) 24-разрядная адресация по сравнению с 16-разрядной адресацией у АР-120В; 4) кэш-память, загружающаяся иэ основной памяти, содержит 1024 коман- ды 64-разрядных слов; заменяет память программ в компьютере АР-120В и дает возможность организовывать более гибкое прохождение программ; 5) наличие синхронизатора временных программ, отсутствующего, к со- жалению, у АР-120В; 6) 256-регистровый стек вызова подпрограмм и 32 адресных регистра; 7) основная память расширена до 1,5 64-разрядных Мелов (12 Мбайт). 2.4.1. Физическое размещение Машина FPS АР-120В высотой 737,6 мм размещена в стойке шириною 482,6 мм, изготовленной по стандарту EIA (Ассоциации предприятий элект- ронной промышленности). На рис. 2.24 показана небольшая установка, объе- диняющая машину PDP 11/34, используемую в качестве главной машины и размещающейся в нижней части стойки под АР-120В, два дисковода, считыва- ющее устройство с магнитной ленты и выходное печатающее устройство. Уп- равляющий телетайп или устройство отображения на рисунке не показаны. Масса машины - примерно 72,58 кг и потребляемая мощность менее 1,3 кВт против с 115 кВт потребляемых машиной CRAY-1. Охлаждение — вынужден- ное воздушное с помощью вентиляторов, которые крепятся на шасси. Поэто- му один человек может перенести и включить машину, вставив штепсель в стандартную 13-амперную внутреннюю розетку питания. В отличие от маши- Рис. 2.24. Общий вид машины FPS АР-120В (воспроизводится с разрешения Д. Хеда и фирмы Floating Point Systems) ' Рис. 2.25. Вид сзади машины FPS АР-120В (воспроизводится с разрешения Д. Хеда и фирмы Floating Point Systems) 5* 131
Рис. 2.26. Две печатные платы машины FPS АР-120В: слева логическая плата буферно- го устройства управления, которая декодирует команды; справа плата из памяти про- грамм, где хранятся команды (воспроизводится с разрешения Д. Хеда фирмы Floating Point System) ны CRAY-1 и CYBER 205 для работы машины АР-120В не требуется дополни- тельного охлаждающего оборудования и набора автогенераторов. На рис. 2.25 показан вид сзади машины АР-120В с частично выдвинутой печатной платой. Вентиляторы, которые можно видеть в верхней части, про- гоняют воздух через вертикально установленные печатные платы размером 381 х 254 мм. Шасси рассчитано на 28 печатных плат, которые подбираются в соответствии с требованиями устройств памяти и ввода-вывода. На рис. « 2.26 более детально показаны две шестислойные печатные платы. Три слоя предназначены для цепей сигналов и три — для цепей источников питания (+5 В и +12 В). Источники питания, которые не показаны на рис. 2.25, уста- навливаются на отдельной панели питания, которая занимает заднюю часть 737-мм пространства стойки за печатными платами. 2.4.2. Архитектура Общая архитектура компьютера АР-120В показана на рис. 2.27. Она бази- руется На многочисленных запоминающих устройствах специального назна- чения, подпитывающих два конвейерных арифметических устройства через многочисленные магистрали данных. Машина управляется синхронно от од- ного тактового генератора с периодом 167 нс. Это означает, что состояние машины после выполнения последовательности операций всегда известно и воспроизводимо. Следовательно, операцию машины можно в точности смоде- лировать период за периодом, при этом работа машины не нарушается от не- которых временных неопределенностей, которые вызывали серьезное не- удобство у некоторых разработанных ранее компьютеров, содержащих так- товые генераторы, управляющие несколькими независимыми устройствами. Между устройствами памяти и конвейерами проложены многочисленные ма- гистрали данных с целью минимизации задержек и устранения проблемы не- разрешенных передач по одному каналу при одновременной пересылке не- 132
Рис. 2.27. Общая архитектура FPS АР-120В (воспроизводится с разрешения фирмы Floating Point Systems) 133
скольких сообщений. Такие проблемы возникают, если несколько устройств коллективно используют одиночную магистраль данных. На рис. 2.27 показаны запоминающие устройства: память программ, со- держащая до 4К 64-разрядных слов для хранения программ (время цикла 50 нс); сверхоперативная память (S-pad) на 16 16-разрядных регистрах для хранения адресов и индексов; память таблиц (время цикла 167 нс, либо по- стоянная, либо обычная память чтение — запись), содержащая до 64К 38-раз- рядных слов для хранения часто используемых констант, например таблиц синуса и косинуса при вычислении преобразования Фурье; два набора (до- полнительных данных X и Y) по 32 38-разрядных регистра для хранения вре- менных результатов с плавающей точкой; и память основных данных для 38- разрядных слов (плюс три разряда для контроля по четности) с непосред- ственной адресацией к 64К словам и дополнительным 4-разрядным адресом страницы, расширяемой до 1 Мелов. Каждый из двух входов сумматора и умножителя с плавающей точкой подключается к отдельной 38-разрядной магистрали данных. На эти четыре независимые магистрали могут подаваться данные из памяти основных данных, памяти дополнительных данных и памя- ти таблиц. По трем другим 38-разрядным магистралям данных передаются результаты от двух конвейеров обратно на их входы или в память дополни- тельных данных, либо в память основных данных. Эти магистрали дают воз- можность считывать операнд из каждой памяти дополнительных данных и записывать результат в каждую память дополнительных данных в течение од- ного машинного цикла. Адрес обоих устройств памяти дополнительных дан- ных задается содержимым адресного регистра дополнительных данных (ДРА). Относительная адресация (от —4 до +3) адреса каждой памяти дополнитель- ных данных осуществляется внутри команды в индексных полях дополни- тельных данных XR, YR, XW, YW (см. подразд. 2.4.4). Основная память состоит из модулей емкостью 8К (или 32К в зависимо- сти от типа кристалла), каждый из которых организуется в виде пары неза- висимых банков памяти, где один банк предназначен для нечетных адресов, а другой — для четных. Стандартная память имеет время выборки/цикла 500 нс, дополнительная память имеет время цикла 333 нс. Последовательные обращения к одному и тому же банку памяти (например, все нечетные адре- са меньше 8К) должны разделяться, по крайней мере, тремя тактовыми пе- риодами при использовании стандартной памяти или двумя тактовыми пери- одами при использовании быстрой памяти. Однако два последовательных об- ращения к разным банкам памяти (например, два соседних адреса нечетного или четного банка или два четных адреса с разницей в 8К и поэтому различ- ные модули) можно выполнять в последующие тактовые периоды. Чередова- ние обращений к нечетным и четным банкам памяти, как это обычно проис- ходит при выборке последовательных элементов длинного вектора, может происходить со скоростью одного обращения за тактовый период для быст- рой памяти, обеспечивая доступ к одному и тому же банку каждые 333 нс (что соответствует возможностям кристалла памяти) и эффективное мини- мальное время цикла в целом между запросами к памяти 167 нс. Для стан- дартной памяти эту скорость следует поделить пополам, чтобы получить эф- фективное время цикла памяти, равное 333 нс, для оптимального последова- тельного обращения. Если происходит неоднократное обращение к одному и 134
тому же банку, то время цикла составляет 500 нс (три тактовых периода). Поэтому фирма-изготовитель описывает память как память с расслоением с временем цикла 167 нс для быстрой памяти или 333 нс для стандартной па- мяти, хотя физическое время цикла кристаллов памяти составляет 333 и 500 нс соответственно. Проводя сравнение с другими машинами, следует все же помнить, что ранее мы ссылались на время цикла кристаллов памяти как на меру их качества (например, 50-нс основная память машины CRAY-1 орга- низована в банки и обеспечивает время цикла при расслоении в 12,5 нс). Ес- ли происходит обращение к той части памяти, которая занята, то машина ос- танавливает выполнение операции до тех пор, пока память не освободится. Команды в компьютере АР-120В 64-разрядные и каждая команда управля- ет работой всех устройств машины. Таким образом, в наборе команд (см. подразд. 2.4.4) существует в этом смысле только одна команда с полями, которая управляет каждой из 10 функций; совмещение некоторых полей исключает определенные комбинации функции. Такой принцип управления рассматривается как горизонтальная микропрограмма. Обработка команд осуществляется с максимальной скоростью одной команды за тактовый пе- риод, т. е. 6 млн. команд в секунду. Но поскольку каждая команда управля- ет многими операциями, это эквивалентно более высокой скорости обычной машины, где команды управляют только одним устройством. Модуль сверхоперативной памяти содержит независимое 16-разрядное арифметико-логическое устройство (АЛУ) для вычисления адресов, подсче- та циклов и индексов в своих 16 16-разрядных регистрах. Выполняемые опе- рации: целочисленное сложение и вычитание, логические операции И, ИЛИ и эквивалентность; операции сдвига и разрядной инверсии для использования в преобразованиях Фурье (см. разд. 5.5). Все эти операции занимают один тактовый период. Отсутствует аппаратное обеспечение для умножения. Эти целочисленные операции выполняются параллельно с вычислениями с плава- ющей точкой в конвейерах. Конвейеры сложения и умножения с плавающей точкой могут выбирать новую пару операндов каждый тактовый период и выдавать результат за каж- дый тактовый период. Таким образом, максимальная скорость генерации ре- зультатов составляет 6 млн. оп./с на конвейер или 12 Мфлоп/с, если данные подавать на оба конвейера. При'решении реальных задач производительность составляет 4 — 8 млн. оп./с (см. подразд. 2.4.6). Длина конвейера умноже- ния - три тактовых периода (500 нс), а конвейера сложения - два тактовых периода (333 нс). Кроме того, конвейер сложения выполняет логические операции И, ИЛИ и эквивалентность, нахождение абсолютного значения, пре- образования масштаба и чисел из формата знак — величина в формат с допол- нением до 2. Работу конвейеров сложения и умножения поясняют рис. 2.28 и 2.29, на которых показаны возможный источник и места назначения операндов, два регистра ввода (Al, А2 или Ml, М2), частные операции, выполняемые на каждой ступени конвейеров, и буферные регистры для хранения частных промежуточных результатов. Машина АР-120В не имеет аппаратного устрой- ства деления и деление с плавающей точкой выполняется программным обес- печением путем вычисления аппроксимирующего полинома. 135
А1 Нуль DPX DPY ТМ FM FA DPX DPY MD Нуль Д2 I_____। I I__________I_____L. J_______I____I____I____I____I А1 А2 Выравнивание дробей и сложение Буфер Нормализация и округление (FA) f I ГП I М2 А2 MI DPX DPY Рис. 2.28. Конвейер двухступенчатого сложения машины FPS АР-120В. Обозначения воз- можных источников операндов и мест назначения результатов соответствуют принятым на рис. 2.27. Между ступенями для хранения промежуточных результатов предусмотре- ны буферы (воспроизводится с разрешения фирмы Floating Point Systems) DPX DPY TM FM FA DPX DPY MD 1 М1 М2 Начальное произведение дробей Ступень 1 Буфер 2 Конечное произведение дробей Ступень 2 Буфер 3 Сложение порядков, нормализация и округление Ступень 3 (FM) M1 A1 MI DPX DPY Рис. 2.29. Конвейер трехступенчатого умножения машины FPS АР-120В. Система обо- значений аналогична принятой на рис. 2.27 (воспроизводится с разрешения фирмы Floating Point Systems) Арифметика с плавающей точкой выполняется в 38-разрядном формате (10-разрядный порядок, основание счисления 2, и 28-разрядная мантисса, представленная дополнением до 2). Динамический диапазон такого представ- ления равен 10±153 и обеспечивается выполнение вычислений с точностью до восьми десятичных разрядов. Это существенно больше, чем точность 32-раз- рядного формата с основанием 16 у машин фирмы IBM (10±78 и шесть деся- тичных разрядов). Во время выполнения арифметической операции заносят- ся дополнительные числа защиты, чтобы минимизировать потери точности. 136
При передаче чисел между главной ЭВМ и компьютером АР-120В осущест- вляется преобразование формата числа главной ЭВМ и внутреннего 38-раз- рядного формата машины АР-120В. Ввод и вывод в машину АР-120В осуществляется через порт ввода-вывода (ЮР) или через общий программируемый порт ввода-вывода (GPIOP). Порт ЮР обеспечивает 16- или 38-разрядный доступ к памяти основных данных компьютера АР-120В, осуществляя, как и требуется, пропуски циклов памя- ти. Скорость передачи данных в матричный процессор достигает 1,5 Мслов/с, а из матричного процессора — 1,3 Мслов/с. Для аналого-цифрового ввода, подключения дисплеев и стандартных периферийных устройств используется 16-разрядный порт. 38-разрядный порт также содержит полный сумматор и может переключаться перемычками в соответствии с различными преобразо- ваниями формата данных. Так же, как и общий порт ввода-вывода, его мож- но использовать для связи одного компьютера АР-120В с другим. Порт ЮР занимает одну печатную плату в АР-120В и может обеспечивать подключение до 256 внешних устройств. Программируемый канал ввода-вывода GPIOP обеспечивает непрерывную передачу со скоростью до 3 Мслов/с с преобразо- ванием формата в процессе передачи, включая преобразование формата с фиксированной точкой в формат с плавающей точкой. В GPIOP-порте содер- жатся два микропроцессора с быстродействием 18 млн. оп./с и в целом он за- нимает три печатные платы. GPIOP-порт используется главным образом для сопряжения с дисками, дисплеями в режиме реального времени, видеокаме- рами и другими компьютерами. Воспользовавшись структурной нотацией из подразд. 1.2.4, можно запи- сать архитектуру машины АР-120В со стандартной памятью основных данных емкостью 64К в следующем виде: С (АР-120В) = И Ц Fp38 (+), Fp38 (*) } ——- {pi, Ml - a, М2, М3, P2} ] h f ч I- ' f A 3o t / la 11= {US7 -M4} Pl(S-Pad) =Bi6 -MI6,I6 Ml (осн. данных) = 8 {2M^3g (МОП)} М2 (таблиц) =Мв4к*з8 М3 (дополнительных данных X, Y) = 2М32 *38 М4 (программ) = М^ #64 (биполяр.) Р2(ЮР) =256D-IOj6 — а. 2.4.3. Технология Поскольку при проектировании машины АР-120В в первую очередь стре- мились обеспечить высокую надежность при четком понимании всех эксплуа- тационных ограничений, в ней применены только хорошо проверенные ком- поненты и технология. В результате средняя наработка аппаратуры на отказ составляет несколько месяцев в году. Логика машины выполнена на низко- вольтных ТТЛ-схемах с диодами Шотки и с уровнем интеграции от несколь- ких вентилей до нескольких сотен вентилей на кристалл. Типичная задержка ТТЛ-вентиля составляет 3-5 нс. Различные регистры компьютера также из- готовлены по этой технологии. К ним относятся сверхоперативные регистры, регистры дополнительных данных и стек выдачи подпрограмм. В 50-нс памя- 137
ти источника программ и 167-нс памяти таблиц используется полупроводни- ковые кристаллы с диодами Шотки емкостью 1К, тогда как в более медлен- ной и с большей емкостью памяти основных данных используются МОП-кри- сталлы памяти емкостью 4К или 16К. Интересно сравнить машины CRAY-1 и АР-120В с точки зрения техноло- гии, быстродействия и потребляемой мощности, так как они в этом смысле представляют две противоположности. В машине CRAY-1 используются высо- коскоростная и высоковольтная ЭСЛ-технология с субнаносекундным вре- менем задержки вентиля и тактовым периодом 12,5 нс, что приводит к необ- ходимости в применении фреоновой системы охлаждения для обеспечения общей мощности потребления 115 кВт. В машине АР-120В применяется глав- ным образом низковольтная технология, и, как следствие, тактовый период возрастает до 167 нс. Однако это дает возможность применить воздушное охлаждение и ограничить общую потребляемую мощность приблизительно на уровне 1,3 кВт. 2.4.4. Набор команд У машины FPS АР-120В нет непосредственных векторных команд. Вместо этого каждый тактовый период выдается 64-разрядная команда, содержащая поля, которые управляют работой всех устройств ЭВМ в течение этого такто- вого периода. Например, если поле FM (см. ниже), управляющее конвейером умножения, активизировано (т. е. 51 разряд команды находится в состоянии ’’единица”), то все данные в конвейере умножения продвигаются вперед на следующую ступень. Следовательно, конвейер должен быть активизирован три раза, чтобы ’’протолкнуть” одну пару аргументов полностью через трех- ступенчатый конвейер и тем самым завершить одну операцию умножения. Дальнейшая активизация конвейера производится для каждого последующе- го элемента векторной операции. Как правило, это делается в пределах цик- ла. Формат одиночной универсальной команды приводится на рис. 2.30. Но- тация источников данных и пунктов назначения соответствует рис. 2.27. С полным описанием команд читатель может познакомиться в справочнике по процессору машины АР-120В [79]. Чтобы описать работу команды, приве- дем примеры использования полей данных. 1) Группа сверхоперативных команд (управление 16-разрядным целочис- ленным АЛУ и 16-разрядными регистрами) : SOP специфицирует диадическую сверхоперативную операцию, напри- мер, ADD, SUB, MOV, AND, OR, FQUIV (сложение, вычитание, пе- ресылка, И, ИЛИ, эквивалентность соответственно); операнды — регистры SPS и SPD; результат заносится в SPD. SPS определяет номер (4 разряда) 16-разрядного исходного регистра. В если 1, выполняется обратное преобразование разрядов исходно- го регистра перед выполнением операции. SPD определяет номер 16-разрядного регистра назначения. SH специфицирует одиночный сдвиг влево или вправо, либо двойной сдвиг вправо после операции. S0P1 специфицирует одноместные операции над данными в регистре SPD при SOP = 0, например инкремент (+1), декремент (-1) или дополнение SPD регистра. 138
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1В 19 20 21 22 23 24 2 5 26 27 2В 29 30 31 В SOP SH SPS SPD FADD А1 А2 C0ND DISP группа сверхоперативных команд Группа команд сумматора Группа команд перехода S0P1 FADD1 SPEC операция Ввод-вывод 32 3334 353637 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 DPX DPY DPBS XR YR XW YW FM М1 М2 MI МА DPA ТМА Группа команд дополнительных данных Группа команд умножения Группа команд памяти Значение Рис. 2.30. Поля данных 64-разрядной команды машины FPS АР-120В. Эта команда управляет работой всех устройств в течение каждого тактового периода (воспроизво- дится с разрешения фирмы Floating Point Systems) SPEC выдает команды управления, условия и перехода. 2) Группа команд сумматора с плавающей точкой; FADD специфицирует диадические операции, например FADD, FSUB, AND, OR, FQUIV с данными в Al и А2. Промежуточные резуль- таты пересылаются на один сегмент дальше по конвейеру в сле- дующий буферный регистр. А1 источник данных, загружаемых в регистр первого входа сумма- торов, например FM (вывод умножителя), DPX, ТМ. А2 источник данных, загружаемых на второй вход сумматора. FADD1 специфицирует одноместные операции над данными в А2 при FADD = 0, например, преобразует А2 в формат целого числа, знак - величина или дополнительный код; принимает абсолют- ное значение. 3) Группа команд ввода-вывода (управляет вводом-выводом, передает данные в/от шины), например: DPBS -»SPD пересылает содержимое шины памяти дополнительных данных в место назначения сверхоперативной памяти. DPBS -►TMA пересылает содержимое шины памяти дополнительных данных в адресный регистр памяти таблиц. SPEN ^PNLBS выполняет вывод из сверхбыстродействующего блока на шину панели. INTA прерывает информацию; адрес устройства заносится в DPBS. 139
4) Группа команд перехода : COND выдает условие для перехода, например, всегда по флажку, по арифметической ошибке; обратный переход из подпрограммы при FA или SPFN =, >, > 0. 0. DISP если условие перехода истинно, следующий адрес равен текущему +DISP —16, относительный переход от —16 к +15. 5) Группа команд памяти дополнительных данных (управляет передачей в/из устройств памяти дополнительных данных X и Y): DPA выдает текущий адрес дополнительных данных. DPX выполняет загрузку дополнительных данных X из DPBS.FAiuihFM. DPY выполняет загрузку дополнительных данных Y из DPBS, FA или FM. DPBS выбирает DPX, DPY, MD, SPFN или ТМ для передачи данных в ши- ну дополнительных данных. XR данные регистра дополнительных данных с адресом DPA + XR — 4 пересылаются в DPX. YR данные регистра дополнительных данных с адресом DPA + YR - 4 пересылаются в DPY. XW содержимое DPX пересылается в регистр дополнительных данных с адресом DPA + XW - 4. YW содержимое DPY пересылается в регистр дополнительных данных с адресом DPA + YW - 4. 6) Группа команд устройства умножения с плавающей точкой; FM означает умножение или отсутствие операции. Промежуточные ре- зультаты пересылаются на одну стадию дальше по конвейеру в следу- ющий буферный регистр. Ml обеспечивает загрузку из FM, DPX, DPY или ТМ. М2 обеспечивает загрузку из FA, DPX, DPY или MD. 7) Группа команд памяти (управляет передачей данных в/из памяти ос- новных данных и таблиц): Ml обеспечивает загрузку входного регистра памяти из FA, FM или DPBS. МА выполняет операцию инкремента или декремента регистра адреса памяти на единицу, или считывания SPFN и инициирования цикла памяти данных. DPA выполняет операцию инкремента или декремента адреса памяти до- полнительных данных на единицу, или установки адреса от SPFN. ТМА то же, что и DPA, но для памяти таблиц. 2.4.5. Программное обеспечение Программное обеспечение для машины АР-120В, за исключением драйве- ров устройств, написано на Фортране IV и, следовательно, компиляция может производиться на различных главных ЭВМ. Программное обеспечение можно подразделить на 1) операционную систему; 2) программное обеспечение для разработки программ; 3) прикладные библиотеки. 140
Память источника Память главной ЭВМ Рис. 2.31. Схема работы управляющей программы APEX во время выполнения про- грамм (воспроизводится с разрешения фирмы Floating Point Systems). Пересылка команд АР-120В и данных между главной ЭВМ и машиной АР-120В производится под управле- нием программы APEX Операционная система состоит из управляющей программы APEX и набо- ра диагностических подпрограмм APTEST. Управляющая программа управ- ляет передачей данных между главной ЭВМ и АР-120В, осуществляет пере- сылку МП-программы из главной ЭВМ в память источника программ (ps) и инициирует выполнение программ в магнитном процессоре. Работа програм- мы APEX иллюстрируется на рис. 2.31. В большинстве программ пользовате- лей, написанных на Фортране, производятся обращения либо к программам математической библиотеки АР-120В, либо подпрограммам, составленным пользователем из команд АР-120В для обработки массивов на машине АР- 120В. Сама программа APEX представляет собой подпрограмму, составляю- щую часть скомпилированной Фортран-программы, работающей на главной ЭВМ. Она содержит таблицу, регистрирующую ячейку и содержимое всех МП-программ, которые уже были загружены в память программного источ- ника МП. Команды АР-120В для каждой МП-программы хранятся в памяти главной ЭВМ как часть каждой подпрограммы. Если допустить, что подпро- граммы 1 и 2 уже вызывались, то следующая последовательность событий по мере выполнения Фортран-программы в главной ЭВМ будет такова: 1) Фортран-программа обращается к используемой МП-подпрограмме 3 (VADD); 2) подпрограмма 3 вызывает АРЕХ-программу; 3) отыскивается таблица памяти источника программ; программа 3 не на- ходится в памяти источника программ; 141
4) APEX передает команды АР-120В из главной ЭВМ в память програм- много источника; 5) корректировка таблицы памяти источника программ; 6) APEX инициирует выполнение подпрограммы 3 в АР-120В. Данные из главной ЭВМ передаются в компьютер посредством вызова подпрограммы APPUT, а результаты передаются обратно с помощью подпро- граммы APGET. Обе подпрограммы также обращаются к программе APEX для контроля передачи. С началом выполнения программы в матричном про- цессоре программа передает управление Фортран-программе обращений, на- ходящейся в главной ЭВМ, которая затем может продолжать другие вычисле- ния, не связанные с МП. Если встречается обращение к другой МП-подпро- грамме раньше, чем выполнилось предыдущее обращение, APEX будет ожи- дать до тех пор, пока завершится первое обращение. Программное обеспечение для разработки программ включает в себя: 1) математическую библиотеку, содержащую свыше 250 вызываемых Фор- тран-программ для обработки массивов. Подпрограммы написаны в коде ас- семблера и тщательным образом оптимизированы. Примерами стандартной библиотеки являются: VADD, VMUL SVE, DOTPR MMUL, MUTINV CFFT, ACORT поэлементное сложение и умножение векторов; сумма векторных элементов и скалярное произведение; перемножение матриц и инверсия; быстрое преобразование Фурье комплексных чисел и автокорреляция. Кроме того, имеется математическая библиотека улучшенного типа, в ко- торой содержатся подпрограммы для генерации функций, двоичного поиска, трехдиагонализации, диагонализации, решения вещественных и комплексных разреженных систем уравнений и решения обычных дифференциальных урав- нений посредством интегрирования методом Рунге — Кутта. 2) APAL - ассемблер для программы АР-120В, который транслирует про- граммы на главной ЭВМ с последующим выполнением ее в матричном про- цессоре. 3) APLOAD- увязывает отдельные объектные модули APAL в одиночный модуль для выполнения на МП. 4) APSIM, APDBUG — имитирует МП-программу и дает возможность отла- дить ее в указанном порядке на главной ЭВМ или МП. 5) VFC— соединитель векторных функций; объединяет многочисленные обращения к подпрограммам математической библиотеки в одиночное обра- щение, тем самым сокращая издержки на обращение. 6) ар FORTRAN — компилятор, работающий на главной ЭВМ, который воспринимает Фортран IV и выдает программу для выполнения на МП. Вышеуказанное программное обеспечение дает возможность подготовить программы разнообразными способами. Эти методы, расположенные в по- рядке снижения быстродействия при выполнении операций и облегчения про- цесса подготовки программ, будут иметь следующую последовательность: APAL-ассемблер, соединитель векторных функций, подпрограммы математи- ческой библиотеки и ар FORTRAN. Имеются следующие прикладные библиотеки: 1) SIGLIB — библиотека для обработки сигналов с подпрограммами для 142
расчетов гистограмм, окон Хэннинга, корреляций, передаточных и когерент- ных функций и т. д. 2) IMP — библиотека обработки изображений с подпрограммами для дву- мерного быстрого преобразования Фурье и свертки, фильтрации изображе- ний и т. д. 3) AML1B — математическая библиотека расширенного типа с подпрограм- мами для генерации функций, интегрирования методом Рунге - Кутта, реше- ния разреженных матриц и нахождения характеристических чисел матриц. 2.4.6. Производительность Машина АР-120В не содержит часы реального времени и поэтому невоз- можно точно замерить время выполнения программ. Попытки измерить его с помощью часов в главной ЭВМ давали обычно неточные и разные результа- ты, что обусловлено влиянием операционной системы главной ЭВМ. Это осо- бенно заметно при использовании системы в режиме разделения времени. По- этому при оценке производительности машины АР-120В мы вынуждены по- лагаться на временную формулу, которая приводится в документах матема- тической библиотеки АР-120В. В документе, которым мы пользовались, при- водится временная формула, тесно связанная с формулой (1.4а), определя- ющей и «1/2 [80]. Небольшие отличия, встречающиеся в более поздних до- кументах [81, 82], являются несущественными. Теоретическое хронометри- рование таких машин вследствие присущего им синхронного принципа рабо- ты является достаточно достоверным, хотя отсутствие часов реального вре- мени очень осложняет оптимизацию больших программ. Детальное хрономе- трирование больших программ очень скоро становится утомительным и при- водит к ошибкам. Альтернативой является имитация выполнения МП-про- граммы на главной ЭВМ с помощью программы APSIM (см. подразд. 2.4.5). Эта программа выдает теоретический временной интервал прохождения про- граммы, но опять же может оказаться неприемлемой для хронометрирова- ния больших программ, поскольку работает в 1 000 раз медленнее, чем сама программа, выполняемая на АР-120В. Воспользовавшись документами математической библиотеки [80], мы да- ем временную формулу для ряда простых векторных операций и на основа- нии их оценок определяем значения «1/2 и г„. Мы приводим временную фор- мулу для стандартной памяти (время цикла кристалла 500 нс) и даем в скоб- ках улучшенные значения для быстрой памяти (время цикла кристалла 333 нс). В случае, если имелось небольшое изменение временного интервала вследствие выбора нечетных или четных ячеек памяти для векторов, мы бра- ли минимальное значение временного интервала. Ни одно из других значений временного интервала не изменяет существенно характер машины и поэтому ими можно пренебречь. 7) Пересылка вектора CALL VMOV (А, I, С, К, N) Пересылка вектора А в С по типу память — память; /Си/- инкременты па- мяти между последующими элементами А и С соответственно. Для 7Vопера- ций время Г = 2/3 (А + 1) мкс, откуда =1,5 (3) Мфлоп/с, п1/2 = 1. Отме- 143
тим, что эта операция ограничивается быстродействием памяти и скорость пе- редачи удваивается для быстрой памяти. Однако тип памяти не влияет на л^. 2) Векторное сложение CALL VADD (А, I, В, J, С, К, N) CmK *~BmJ + AmI>m = 0, 1, . . ., А- 1. Для А операций время t = N+ 1 мкс, поэтому r„ = 1 (2) Мфлоп/с, пу2 = 1. 3) Векторное умножение CALL VMUL (А, I, В, J, С, К, N) CmK*-BmJ*Amrm=Q’ Для N операций время t = N + 2 мкс, следовательно, г» = 1 (2) Мфлоп/с, «1/2 = 2. 4) Векторное деление CALL VDIV (А, I, В, J, С, К, N) CmK=BmjlAmrm=^^---N-^ Для А операций время t - 1,83 (А+ 3) мкс, откуда = 0,55(0,55) Мфлоп/с, «1/2 = 3, и мы видим, что арифметические действия доминируют в вычисле- нии, и поэтому более быстрая память не дает увеличения в производитель- ности. 5) Векторная показательная функция CALL VEXP (А, I, С, К, N) С’шА^ехр(Ля/),щ=0,1,...,А-1. Время для N показательных функций: t = 4,87 (А + 0,3) мкс, следовательно, г.» = 0,2 Мфлоп/с, «1/2 =0,3. б) Скалярное произведение CALL DOTPR (А, I, В, J, С, N) 7V-1 С<~ S А т *В т. m = o ml mJ Для 2А операций время t = •} (А+ 2) мкс, откуда г„ = 3 (6) Мфлоп/с,«i/2 =2. Вышеуказанный набор временных интервалов и производительностей, ко- торый можно считать типичным для простых векторных операций типа па- мять — память, показывает, что только небольшая часть потенциальной про- изводительности, равной 12 Мфлоп/с, может быть реализована на таких опе- рациях. Это происходит вследствие того, что скорость обмена с памятью не- достаточна для обеспечения скорости обработки типа память — память для этого множества. Одиночная векторная операция имеет два входных вектор- ных операнда и один выходной результирующий вектор. Поэтому для скоро- сти обработки типа память — память в 12 Мфлоп/с требуется скорость обме- на с памятью 36 Мслов/с. Стандартная память компьютера АР-120В имеет скорость обмена 2 — 3 Мслов/с в зависимости от того, производятся ли обра- щения к одному и тому же банку памяти или попеременно к различным бан- кам. Аналогично этому, быстрая память имеет скорость обмена 3-6 Мслов/с. Таким образом, очевидно, что скорость обмена с памятью составляет только приблизительно одну десятую того, что необходимо для поддержания работы конвейеров сложения и умножения с данными из основной памяти. Наиболее вероятным ограничением в реализации скоростей быстрой обра- ботки на машине АР-120В является малая скорость обмена с памятью. Чтобы скорость обмена с памятью не превратилась в узкое место, необходимо, по крайней мере, выполнять за каждое обращение к памяти две арифметические операции при наличие быстрой памяти или четыре операции за одно обраще- 144
ние к памяти для стандартной памяти. Эти условия реализуются при исполь- зовании более сложных алгоритмов: перемножения матриц (1,5« оп/обраще- ние), быстрого преобразования Фурье (примерно в целом log2« операций за обращение). Целесообразно более детально рассмотреть алгоритм БПФ, поскольку он является основным алгоритмом, на решение которого ориентированы маши- ны, аналогичные АР-120В. Все операции алгоритма относятся к типу’’бабоч- ка” [см. (5.87)]: с = а + мФ, (2.30а) d=a-wb, (2.306) где а и Ъ - комплексные элементы из основной памяти, а с и d — комплекс- ные результаты, заносимые в основную память. Комплексная константа w может постоянно храниться в регистре. Для уравнений (2.30) требуется одно комплексное умножение (s = w * b) и два комплексных сложения (а + s, а — - s) для четырех обращений к памяти за комплексными числами. Это экви- валентно 10 реальным арифметическим операциям для восьми реальных об- ращений памяти или 1,25 операций/обращение. Все рассмотренное выше от- носится к преобразованию по основанию 2 и показывает, что этот алгоритм не дает достаточного числа операций за обращение, чтобы обеспечить заня- тость конвейера. Объединяя два уровня БПФ, получаем алгоритм по основа- нию 4 и увеличиваем число операций за обращение к памяти до 2,5, которое представляет собой число, удовлетворяющее вышеуказанным условиям для быстрой памяти. Мы обнаружили, что подпрограмма CFFT математической библиотеки, использующая алгоритм по основанию 4, обеспечивает произво- дительность 8 Мфлоп/с (см. табл. 2.3). Производительность других алгорит- мов, показанных в той же таблице, лежит в диапазоне 2 — 4 Мфлоп/с. Найденные выше значения длины полупроизводительности пщ = 1 — 3, по- казывают, что хотя машина АР-120В и имеет много свойств, характерных для параллельной обработки, ееповедение практически очень схоже с поведе- нием последовательного компьютера. В этом отношении машина аналогична компьютеру CRAY-1 (л^ 10) и полностью отлична от машины CYBER 205 («1/2 100) idihICLDAP («1/2 Ю00). Выбор наилучшего алгоритма обыч- но определяется по значению «1/2 (см. гл. 5), и мы ожидаем, что алгоритм, оптимизированный для работы на последовательном компьютере, также хо- рошо работает и на машине АР-120В. Однако, как подчеркивалось выше, про- изводительность программы может в большей степени зависеть от управле- ния обращениями к памяти, чем от проблемы, связанной с длиной вектора, которую рассматривают в соответствии со значениями . 3. ПРОЦЕССОРНЫЕ МАТРИЦЫ 3.1. ЧТО ТАКОЕ ПРОЦЕССОРНАЯ МАТРИЦА? В этой главе мы достаточно тщательно выбираем общее определение про- цессорной матрицы, чтобы объединить ряд направлений в проектировании. В подразд. 1.2.4 была представлена структурная нотация, согласно которой 145
процессор определялся как ЭВМ без устройства управления (УУ). Это подра- зумевает определение процессорной матрицы как идентичной матрицы таких процессоров. Управление такой матрицей обычно осуществляется одиночным УУ, которое, как правило, декодирует и транслирует команды всем процес- сорам матрицы. Таким образом, все процессоры обычно выполняют одну и ту же операцию за одно и то же время. Существуют две основные причины для такой формы дублирования. Пер- вая — экономическая; построить N процессоров с одним УУ дешевле, чем N аналогичных ЭВМ. Вторая причина связана с проблемами межпроцессор- ной связи; в матрице, работающей в синхронном режиме, можно более пол- но использовать полосу пропускания. Однако встречаются ситуации, когда желательно иметь некую форму авто- номного управления отдельным процессором. В наиболее общем виде такая автономия осуществляется за счет простого булева переключателя, эффек- тивно блокирующего или разблокирующего команды, которые поступают из устройства управления. Для более сложного управления, чем простое вклю- чение — выключение, каждый процесср должен быть снабжен своим соб- ственным УУ. Такой подход поддерживался в некоторых матричных проек- тах [37, 71, 174], из которых, хотя их и следует называть процессорными матрицами, ни один не включен в наше обсуждение. Чтобы понять, как сконструированы процессорные матрицы, определим их компоненты и затем попытаемся установить взаимосвязь между ними. В большинстве процессорных матриц можно идентифицировать следующие главные компоненты: (1) ряд процессоров (Р); (2) ряд банков памяти (М); (3) некая форма сети связи; (4) некая форма локального управления; (5) некая форма общего управления. Эти определения умышленно оставлены расплывчатыми, так как индивиду- альные компоненты в различных проектах процессорных матриц могут суще- ственно отличаться. 3.1.1. Общая организация Способы объединения компонентов и их взаимодействия формируют ос- новную часть описания архитектуры процессорной матрицы. Описание завер- шается определением отдельных компонентов. Поэтому имеется возмож- ность сделать обобщение по типовым структурам, присутствующим в проек- тах процессорных матриц. Вероятно, самая простейшая и, конечно, наиболее общая обнаруженная структура содержит ряд идентичных процессоров и банков памяти. Тогда каждый процессор может непосредственно соединяться со своей секцией па- мяти. Связь между процессором и присвоенным ему банком памяти будет осуществляться посредством сети соединений, которая объединяет все эти процессоры. Такая организация иллюстрируется на рис. 3.1, где коммутиру- ющая сеть изображена как отдельный компонент, подключаемый к процессо- рам с помощью входов и выходов. В общем смысле при такой организации 146
Банк памяти Рис. 3.1. Типовая структура процессорной матрицы с одинаковым числом процессоров и банков памяти Управляющий процессор Рис. 3.2. Типовая структура процессорной матрицы, предусматривающая различное чи- сло банков памяти и процессоров 147
коммутирующая сеть обычно распределена между различными процессорами. Обычно прйнимается альтернативный подход, когда используется более сложная сеть коммутации. При таком подходе коммутатор устанавливается между процессорами и банками памяти. Такая конфигурация устраняет ха- рактерное свойство собственности между процессорами и памятью. При раз- ных положениях коммутатора определенный процессор будет подключаться к различным банкам памяти. Это позволяет объединить в матрицу различные номера банков памяти и процессоров, что весьма желательно в определенных обстоятельствах (см. подразд. 3.1.3). Однако, выбрав такую организацию, коммутатор должен обеспечивать подключение каждого процессора к каждо- му банку памяти, хотя, как правило, все возможные отображения и не бу- дут реализовываться. Второй подход представлен на рис. 3.2. 3.1.2. Распределение мощностей обработки Одна из главных и наиболее спорных проблем в проекте процессорной матрицы — распределение мощности обработки. Проекты выпускались с раз- личным числом процессоров — от нескольких десятков до многих тысяч. Очевидно, при заданной стоимости чем сложнее процессор, тем меньше их число можно объединять в матрицу. Это представляет собой классическую проблему компромисса между мощностью отдельного процессора и разме- ром процессорной матрицы. Тогда какие факторы влияют на его решение? Одним из важных факторов, который уже обсуждался в гл. 1, является ориентация параллельного компьютера на определенный набор задач. Чем вы- ше уровень параллелизма компьютера, тем более специализированным он становится. Это действительно существенный аргумент, так как если степень параллелизма задачи меньше, чем у компьютера, то падает эффективность машины. Этот аргумент следует принимать во внимание для большого ряда применений, поскольку для них существуют параллельные алгоритмы. Вы- бор этих алгоритмов описывается в гл. 5. Очевидно, невозможно, зная толь- ко размер и тип задачи, дать количественную оценку степени параллелизма. Однако для большого класса задач степень параллелизма, в котором суще- ствует потребность, превышает размер самых больших матриц, созданных к 1980 г. Более того, объем этих задач, вероятно, будет увеличиваться по ме- ре увеличения мощностей обработки и для процессоров с постоянной струк- турой будет изменяться с размером матрицы. Например, для определенного класса задач может оказаться желательной малая степень параллелизма, и эта потребность не будет удовлетворена с по- мощью небольших матриц сверхмощных процессоров, где используется от- носительно дорогая аппаратура с АУ с плавающей точкой. Для других задач следует принимать во внимание степень параллелизма, которая эффективна при широкомасштабных и других вычислениях. Во всех простейших процессорах используется разрядно-последователь- ный подход, поэтому многие тысячи таких процессоров могут быть объеди- нены без существенных затрат на основе относительно простой технологии (состояние дел примерно на 1980 г.). При таком способе мощность обработ- ки распределяется равномерно на каждую разрядную секцию данных, кото- рые должны обладать высокой степенью параллелизма. Можно видеть, что 148
X У S с 0 0 оо 0 1 10 10 10 11 0 1 Рис. 3.3. Полусумматор (а) и сумматор (б) на базе вентилей и соответствующие табли- цы истинности: X и У — входные разряды, S и С — разряды суммы и переноса, Р и G — состояния рас- пространения и генерации при определенной степени параллелизма этот подход обеспечивает эффектив- ное использование аппаратуры для всех форм данных (булевых, символь- ных, целочисленных, с плавающей точкой). Можно также показать, что для определенных логических элементов этот подход обеспечивает максималь- ную вычислительную мощность. Рассмотрим в качестве простой задачи сложение ряда пар ^-разрядных чи- сел (скажем, N, где N> b) при наличии Ъ одноразрядных полных суммато- ров с временем задержки rFA. На рис. 3.3 приводятся таблицы истинности для сумматора и полусумматора, показано, как полный сумматор можно сконструировать из двух полусумматоров, и изображено размещение логи- 149
b разрядов Рис. 3.4. Параллельный сумматор или сумматор со сквозным переносом ческих схем полусумматора. Время задержки полусумматора равно 2rd, где rd — время задержки одного вентиля, а сумматора трА = 4rd. Одно из решений задачи — объединение полных сумматоров в цепочку, ко- торая затем будет складывать все биты слова. Эту цепочку, изображенную на рис. 3.4, иногда называют параллельным сумматором. Однако можно видеть, что процесс не параллельный, а последовательный. Результат на выходе любо- го одноразрядного сумматора определяется только спустя время грА, кото- рый далее будет необходим в качестве ввода во вторую половину следующе- го сумматора цепочки. Более подходящее определение этого сумматора — сумматор со сквозным переносом. Общая задержка tT для й-разрядного сло- жения со сквозным переносом задается формулой Гг ={(Й + 1)ТРА. (3.1) Следовательно, пренебрегая временем обращения к памяти, время решения нашей задачи будет равно значению, вычисленному по (3.1) и умноженному наТУ. Обозначим это время Тт : Tr =|W)rFA. (3.2) При разрядно-секционном подходе каждый одноразрядный сумматор ис- пользуется как независимый блок, который осуществляет параллельное сло- жение разрядов различных слов. Перенос от одного шага должен храниться в регистре для ввода при следующем шаге. Это показано на рис. 3.5. Время сложения каждой разрядной секции (гь) задается значением трА: 'b='FA. (3.3) Общее время решения задачи при разрядно-секционном подходе: Тъ= тйгРА, (3.4) где значение [... ] обозначает округленную целочисленную функцию. 150
, л Память b - 1 разряд Одно слово разряд 0 Разрядная секция XYS X Y S ХУ S XX S Рис. 3.5. Параллельное разрядно-секционное сложение Можно видеть, что разрядно-секционный подход, если не учитывать время обращения к памяти, на порядок быстрее, чем параллельное сложение или сложение с ускоренным переносом. Даже если принять во внимание обраще- ние к памяти, разрядно-секционный подход все равно оказывается более привлекательным. Например, добавив время обращения к памяти (тм) к равенствам (3.1) и (3.3), получим следующее соотношение времен решения данной задачи: Гг _ +0’5(f>+ Tb [N/b] (brM + rFA) Выражение упрощается, если N представляет собой целое кратное от й: ТГ1ТЪ= [TM+<W(fe+l)rFA]/(7M + 7FA). (3.5) Очевидно, если 7М > > 71?д, то при разрядно-секционном подходе практи- чески не получаем никакого выигрыша. Очевидно, это является наиболее ве- роятной причиной того, почему в начале 50-х годов машины развивались как разрядно-параллельные, пословно-последовательные. Интересно было бы по- смотреть, как прогрессировала бы история вычислений, если бы имело место только небольшое несоответствие между технологией изготовления памяти и логических схем в 50-х годах. Сегодня экономичнее строить память и логику по одной технологии и да- же на одном кристалле БИС. Поэтому отношение в уравнении (3.5) суще- ственно больше единицы даже для слов самых скромных размеров. На этом наше обсуждение не кончается, хотя, вполне очевидно, что при последова- 151
тельной обработке будет весьма часто увеличиваться быстродействие благо- даря использованию новых методов. Это необходимо, например, в рекурси- ях, как показано в гл. 5, где описываются параллельные алгоритмы. Сложе- ние двух b-разрядных чисел является классическим случаем рекурсивного алгоритма и может быть вычислено за log2Z> шагов, что является нижней гра- ницей [254]. Тогда каким образом это можно осуществить с помощью логических эле- ментов? Ключ к решению лежит в определении двух состояний на стадии пол- пути в полном сумматоре. Состояния называются распространением и генера- цией и обозначены на рис. 3.3 Р и G соответственно. На основе двух входных данных, которые должны суммироваться, определяются два состояния: ге- нерация переноса и распространение переноса. Задав пару таких состояний, довольно просто можно определить новое состояние распространения и гене- рации для комбинированной пары. Например, при заданных Ро, Рх и Go, Gr новые (выходные) Р1 hG' определяются как G' =G! V(AAGo), Р' =Gi V(PiAA>)- (3.6) Вычислив их и учтя перенос на входе (С), можно определить перенос из этого состояния на выходе: С' =G' V(CAP'). (3.7) На рис. 3.6 показана топология блока ускоренного переноса, построенного на основе уравнений (3.6) и (3.7). Задержка возникновения С' в такой схе- ме составляет rCL = 4rd, где rd — задержка одного вентиля. Такие блоки, скомпонованные в виде древовидной структуры, образуют сумматор с уско- ренным переносом. Это иллюстрируется на рис. 3.7 для 8-разрядного слова. Можно видеть, что д целом требуется b полных сумматоров и b — 1 блоков ускоренного переноса. Задержка в такой схеме для Ъ > 2 определяется вре- менем получения бита старшего разряда суммы: tc = J TFA + (log2ft - 1)tCl> (3-8) где tcl — задержка выдачи С* в одиночном блоке ускоренного переноса (см. рис. 3.6). Это дает большое превосходство над уравнением (3.1) для ти- пичных значений b за счет удвоения числа аппаратных средств. Однако для задачи сложения N A-разрядных пар чисел, как можно видеть из уравнения 152
Рис. 3.7. Восьмиразрядный сумматор с ускоренным переносом: CL - устройство уско- ренного переноса; FA - полный сумматор (см. также рис. 3.3 и 3.6) (3.9), это все равно медленнее, чем при использовании раз рядно-секционно- го метода: _ ГМ + + to&^)rFA (3.9) ТЪ rM + TFA Здесь задержки в блоке ускоренного переноса (rCL) преобразованы в экви- валентные задержки полного сумматора (трА). Аналогичные методы можно применять для быстрого умножения [244], но опять же за это приходится расплачиваться увеличением числа необходи- мых логических вентилей. Таким образом, мы показали, что существуют методы для построения более сложной аппаратуры и что, несмотря на относи- тельное увеличение стоимости, эффективность этих методов никогда не бу- дет соответствовать эффективности разрядно-секционного подхода (если только не будет иметь место > > ТрА) • Это не означает, что в любой аппаратуре следует применять разрядно-сек- ционный подход; для одиночных скалярных операций необходимо использо- вать более сложную аппаратуру. Следовательно, распределение мощности об- работки зависит от нескольких факторов, из которых соотношение стои- мость — производительность и ожидаемая степень параллелизма рабочей на- грузки являются наиболее важными. ЗА .3. Организация памяти Основной характерной особенностью архитектуры процессорной матрицы является способ организации памяти. Как память подключается к процессо- рам и как осуществляется ее адресация — две важные особенности этой орга- низации. 153
Рассмотрим первую ситуацию, изображенную на рис. 3.1, где каждый про- цессор подключается к своему разделу памяти. Такое представление отража- ет самую простейшую конфигурацию и здесь остается только рассмотреть, как происходит адресация памяти. Команды, выдаваемые устройством уп- равления, обычно содержат одинаковый адрес для всех процессоров. Вопрос состоит в том, разрешить ли индивидуальному процессору обрабатывать этот адрес с помощью своего индексного регистра. Такое построение использовалось в машине ILLIAC IV — одной из первых изготовленных процессорных матриц. В этой машине программист мог уста- новить индексный регистр в каждом процессоре на основе доступной локаль- ной информации и затем использовать его для выбора ’’неплоской” секции памяти матрицы. Это важно для многих классов задач, так как часто позво- ляет сократить объем обработки данных [128]. Машина ICL DAP не представляет такой возможности, но зато она имеет разрядно-последовательную арифметику; для модификации адреса потребо- валось бы 12-разрядное сложение (4К-памяти). Соответственно требуется много циклов памяти для модификации адреса, что обусловлено эффектом сквозного переноса. Чтобы выполнить модификацию адреса в реальное вре- мя, необходима более совершенная аппаратура, и чтобы удовлетворить это- му требованию Дж. Робертс предложил несколько проектов процессора на СБИС [188]. В этих проектах для модификации адреса применяются сумма- торы с ускоренным переносом и сохраняется разрядно-последовательный подход для выполнения арифметических операций. Организация памяти, показанная на рис. 3.2, обычно ассоциируется с более сложной сетью коммутации или ориентации. Если коммутатор помещен меж- ду процессорами и памятью, то требуется более богатый набор отображений. Более того, это становится еще важнее, когда адресация к каждому банку памяти осуществляется независимо. Конфликты на уровне банков памяти — один из основных недостатков любой параллельной организации памяти. Это относится как к совмещенной структуре или структуре с расслоением в векторных процессорах, так и к па- раллельной структуре в процессорных матрицах. Для иллюстрации на рис. 3.8 показана матрица 4x4, хранящаяся в четырех банках параллельной памяти. Можно видеть, что обращение к строкам матрицы А можно осуществлять без конфликтов, но все данные столбца матрицы А располагаются в одном и том же банке памяти. Поэтому выборку этих данных нельзя выполнять па- раллельно. При наличии сети коммутации, которая может подключать все банки па- мяти -к одному процессору, очень желательно иметь структуру памяти или данных, при которой обращение к строкам, столбцам и другим основным подструктурам в виде матриц можно осуществлять без конфликтов. Одним из основных методов достижения этой цели является применение асиммет- ричных схем хранения. На рис. 3.9 показана такая схема для нашей матрицы 4x4. Она обеспечивает бесконфликтный доступ к строкам и столбцам, хо- тя для диагоналей матрицы А конфликты сохраняются. Более общие асим- метричные схемы исследовали П. Бадник и Д. Как [29] и Г. Шапиро [198]; они рассмотрели случаи простого числа банков памяти или числа, которое не является степенью 2. Позднее А. Деб [53] представил пример асимметричной 154
A*t,1 A<t,5 ^3,1 Аъ,г лз,з ^3,4 А2,1 Аг,г A2.i A2.i, -41,1 А1,2 Л1,3 ^1,4 0 12 3 Банк памяти А%2 'Чз 4,4 А 4,1 Ai,S ^3,4 4,1 4,2 А2,А 4,1 А2,2 А 2,3 ^1,1 4,2 4,4 0 12 3 Рис. 3.8. Схема хранения, обеспечива- ющая бесконфликтный доступ к стро- кам, но не к столбцам матрицы 4X4 Банк памяти Рис. 3.9. Асимметричная схема хранения, обеспечивающая бесконфликтный доступ как к строкам, так и столбцам матрицы 4X4 схемы (4x4), которая обеспечивает бесконфликтный доступ к строкам, столбцам и обеим основным диагоналям. Однако она не обеспечивает бес- конфликтный доступ ко всем циркулянтным диагоналям [127]. Фирма Burroughs в своем проекте BSP разработала организованную струк- туру памяти на основе асимметричных схем, описанных в работе [29]. Прин- ципиальной особенностью этой структуры является память с простым числом банков памяти, которая дает возможность бесконфликтного доступа ко всем линейным подмассивам, определяемым начальным адресом и дистан- цией пропуска. Исключением бесконфликтного доступа является случай, ко- гда дистанция пропуска и число банков памяти имеют общий множитель. Это имеет место только тогда, когда дистанция пропуска представляет собой зна- чение, кратное простому числу банков памяти. В качестве примера проиллюстрируем такую организационную структуру для матрицы 4x4. Вместо того, чтобы иметь четыре банка памяти для четы- рехпроцессорной матрицы, мы выберем число 5 старшим простым числом. Вообще говоря, для достижения в структуре памяти степени параллелизма Nвыберем простое числом так, чтобыМ> >N. Тогда адрес каждого элемен- та матрицы задается равенством (3.10), где а — соответствующий линейный адрес элемента: Банк памяти: д = |а |м> Адрес в банке: i = [a/jV], ( • ) где |/| дает наименьшую целочисленную функцию/, a \fg| — значение/ по модулю g. В табл. 3.1 приводятся отображения этих адресов для нашего при- мера матрицы 4x4, его иллюстрация дается на рис. 3.10. Вероятно, это пло- хой пример, так как один из основных наборов подмассивов прямых диаго- налей вызывает конфликты памяти. Для матрицы N х N прямая диагональ имеет дистанцию пропуска N + 1, которая в нашем примере равна числу 5, т. е. числу банков памяти. Однако обращение ко всем другим линейным под- массивам, строкам, столбцам и обратным диагоналям может осуществлять- ся без конфликтов. В качестве примера рассмотрим обращение к строке 2 155
данной матрицы. Начальный адрес, равный 1, и дистанция пропуска, равная 4, определяют линейный адрес каждого элемента этой строки. Следовательно, а = (1,5,9,13), и, применив уравнение (3.10), получаем д,- (1> 0, 4, 3) и соответственно i = (0,1,2,3). Таблица 3.1. Отображение матрицы 4X4 Элемент вектора А Линейный адрес Номер банка па- мяти Адрес в банке Элемент вектора А Линейный адрес Номер банка па- мяти Адрес в банке 1,1 0 0 0 1,3 8 3 2 2,1 1 1 0 2,3 9 4 2 3,1 2 2 0 3,3 10 0 2 4,1 3 3 0 4,3 11 1 2 1,2 4 4 1 1,4 12 2 3 2,2 5 .0 1 2,4 13 .3 3 3,2 6 1 1 3,4 14 4 3 4,2 7 2 1 4,4 15 0 3 Банк памяти Рис. 3.10. Схема хранения с использова- нием простого числа банков памяти (5), которая обеспечивает бесконфликтный доступ ко всем линейным подмассивам (строкам, столбцам и т. д.) матрицы 4X4 при условии, что последующие элементы не разделены по 5 При выборке подмассива д определяется вектор отображения, который можно использовать для подключения коммутирующей сети с целью ориен- тировки банков памяти на соответствующие процессоры. Индексный вектор i используется для модификации базового адреса. Следует отметить, что ин- дексные компоненты вектора i соответствуют банкам памяти, указанным в д, и поэтому, чтобы задать индекс в команде банка памяти, порядок их дол- жен быть изменен в соответствии с д. Взглянув на рис. ЗЛО, можно убедить- ся, что вышеуказанные векторы действительно выбирают строку 2 в нашей матрице. 3.1.4. Организация управления Хотя идея иметь регулярную матрицу процессоров, выполняющих одну и ту же операцию над различными данными, и отражена в проекте процессор- ной матрицы, очень часто требуется некоторая форма автономного управле- 156
ния отдельным процессорным элементом. Эта потребность возникает из не- обходимости иметь независимые разветвления данных в пределах потока команд, который обычно можно представить рядом кодовых последователь- ностей или случаев. Простейший случай, эквивалентный одиночной конструкции ”if... then”, дал самое общее решение проблемы автономного управления. Это решение, впервые реализованное в машине ILLIAC IV и впоследствии в матрицах ICL DAP и Burroughs BSP, предусматривает использование одного одноразрядно- го регистра флажка в каждом процессоре. Таким образом, управление пред- ставляет собой процесс транслирования команд в матрицу, выполняемый од- ним устройством управления, а затем каждый процессор делает выбор - выполнять или не выполнять команду в зависимости от того, установлен или не установлен бит флажка. Действия аппаратуры обычно сводятся к тому, разрешить ли на основе разрядного флажка циклы записи в память или ре- гистры, т. е. хотя процессор и может выполнять транслированную команду, полученные результаты не будут занесены, если не установлен этот бит. Сле- довательно, содержимое регистров режима или флажкового разряда состав- ляет общую маску, которая определяет действие транслированной команды. Под влиянием СБИС-технологии проблема управления находится в про- цессе переосмысливания (см. подразд. 6.2.1). Хотя общее управление предо- ставляет самое простое решение, оно все-таки имеет недостатки как в кон- струкции, так и в использовании. Основной конструктивной проблемой яв- ляется нагрузочная способность сигналов управления по выходу к многим процессорам, которые можно распределять по относительно большой площа- ди, но которые должны быть синхронизированы. Это было основной пробле- мой в реализации проекта машины ILLIAC IV, которая привела непосред- ственно к снижению тактовой частоты с 25 до 12,5 МГц и позднее до 10 МГц. Недостаток использования происходит от самой сущности включения - вы- ключения автономного управления. В нескольких проектах процессорных матриц рассматривались альтернати- вы к упрощению общего или вещательного управления [37, 71, 174]. В пред- ложенных вариантах предусматривается необходимость выполнения декоди- рования некоторых команд в процессорном элементе. Эти альтернативные структуры управления можно грубо разбить на две категории в зависимости от объема управления, возлагаемого на процессоры матрицы. Полная процессорная независимость. При любой управляющей структуре должна существовать некая форма глобального управления, которая, по крайней мере, когда требуется, инициирует, останавливает и синхронизирует процессоры. Если такая структура содержит только глобальное управление, то мы говорим, что каждый процессор в данной матрице имеет полную неза- висимость. Он должен содержать собственный блок команд, который незави- симо декодирует собственную программу. По терминологии из подразд. 1.2.4 матрицу следует рассматривать как матрицу компьютеров. Такой тип структуры был предложен для решения многочисленных часто встречающихся задач, в которых имеется много случаев особой обработки независимых данных [37, 71]. Фирма Burroughs выбрала этот подход для удовлетворения требований NASA (1000 Мфлоп/с) к проекту создания сред- ства цифрового аэродинамического моделирования (см. подразд. 6.3.2). 157
Проект состоит из 512 компьютеров с АУ с плавающей точкой, подключае- мых через две самонастраивающиеся сети к 521 банку памяти (521 — следу- ющее простое число, которое больше 512). Каждый компьютер в матрице может полностью декодировать команды, хотя все они будут выполнять од- ну и ту же программу. Преимущество такого построения заключается в том, что каждый процессор следит за своей независимой магистралью по програм- ме и в соответствии с ней осуществляет переходы над своими данными. Ожи- дается, что большинство этих временных операций будут производиться с их собственными локальными данными, которые, возможно, будут представ- лять копию глобальных данных, содержащихся в основной 521-банковской памяти. Тогда синхронизация потребуется только при или после обновления глобальной базы данных. Синхронизация выполняется с помощью простого флажка в каждом компьютере, который сканируется общим устройством управления. Микропрограммное управление. Эту управляющую структуру не так-то просто расклассифицировать с помощью структурной нотации из подразд. 1.2.4, так как управление будет иметь более одного уровня и будет достаточ- но гибким на более высоких уровнях. Простейшим примером является двух- уровневая управляющая структура, типичная для многих проектов процес- сорных матриц, которая основана на дублировании микропроцессоров [174]. Первый уровень управления — общий, на нем производится декодирование команд и транслирование их в матрицу; на этом уровне матрица синхронизи- руется. На более низком уровне микропроцессор интерпретирует команду и генерирует микрокоманды. Важно Отметить, что задаваемая команда может быть интерпретирована в микропроцессоре различными способами. Напри- мер, последовательность микрокоманд будет загружаться далее вниз во все запоминающие устройства микропроцессорного управления в виде процесса инициализации для выполнения, и микропроцессор может выбирать различ- ные последовательности в зависимости от требуемой локальной обработки. Таким образом, общее управление является глобальным, а его интерпрета- ция локальной. Так как последовательности микрокоманд могут быть раз- личной длины, синхронизация достигается с помощью системы флажков или, что предпочтительнее, с помощью опережающего просмотра последователь- ностей более длинных микрокоманд в любой.заданной команде. 3.2. СЕТИ КОММУТАЦИИ 3.2.1. Введение Сети коммутации представляют основу проекта процессорной матрицы [203] и построение их очень важно для эффективного использования мат- риц. По этой причине мы посвятили целый раздел этому компоненту архи- тектуры процессорной матрицы. Сети коммутации также представляют со- бой важную часть в архитектуре вычислительных машин и связи, особенно если учесть сильную склонность к распределенным вычислительным систе- мам. Однако мы попытаемся представить этот предмет, осветив преимуще- ственно вопросы применения взаимосвязей процессорных матриц и последу- ющую обработку данных. В отношении подробностей по другим применени- 158
Рис. 3.11. Все возможные отображения трех входов на два выхода: а) один ко многим; б) один к одному Рис. 3.12. Два представления коорди- натного переключателя на четыре вхо- да и четыре выхода ям и современной библиографии читатель может обратиться к обзорной статье [ 154}. Сети коммутации представляют множество взаимосвязей или отображе- ний между двумя наборами узлов, входами и выходами. Для N входов и М выходов существуют Д'! четко определяемых отображений от входов до вы- ходов, где под термином ’’четко определяемый” мы подразумеваем, что каж- дый выход определяется одним и только одним входом. На рис. 3.11 изобра- жены четко определяемые отображения между тремя входами и двумя выхо- дами. Сеть, выполняющую все NM таких отображений, мы будем называть обобщенной соединительной сетью (GCN). Если мы ограничимся классом отображений один к одному, то будут су- ществовать TV! четко определяемых таких отображений. На рис. 3.11 также показан поднабор отображений один к одному; они передают данные от од- ного входа только на один выход. Чтобы такие отображения не были пусты- ми, для этого класса должно быть, по крайней мере, столько же входов, сколько и выходов. Сеть, которая выполняет зтиУУ! отображений, мы будем называть соединительной сетью (CN). Наиболее очевидный способ реализации обобщенной соединительной се- ти — это создание так называемой полной или завершенной координатной се- ти, где каждый вход может быть скоммутирован на любой выход. Это иллю- стрируется с помощью двух представлений на рис. 3.12. На первом отображе- нии (рис. 3.12, а) ребра представляют наборы входов и выходов, а узлы — пересечения или коммутаторы. Альтернативное представление дается с по- мощью двудольного графа (рис. 3.12,6), где узлы представляют множество входов и выходов, а ребра - пересечения. Полное пересечение представляет 159
собой общую форму сети коммутации, хотя число необходимых точек пере- сечений равно NM, поскольку между каждым входом и выходом требуется одна точка пересечения. Поэтому при большом Л^зта сеть становится очень дорогой. В процессорных матрицах практическим ограничением для N явля- ется значение 24 или 25, тогда как число процессоров может достигать 214 или более. Сети такого рода использовались в проекте BSP фирмы Burroughs — однас2У= 16иЛ/= 17, другая сМ = 16и2У= 17. Другие сети коммутации базируются либо на многочисленных малых вза- имосвязанных координатных сетях, либо на неполных координатных сетях. О них разговор пойдет несколько позже; вначале мы должны представить нотацию и определить некоторые перестановки, которые существенно упро- стят рассмотрение,- 3.2.2. Некоторые основные перестановки Перестановка упорядоченного набора из N узлов определяется функцией тт(х), где х и тг(х) - целые числа в диапазоне 0 < х, тт(х) — 1. Функция тт(х) также должна быть взаимнооднозначной. Например, функция е(к)(х) = [х/2к]2к+\\х\2к + 2к~1\2к определяет перестановку с замещением (рис. 3.13). Полагают, что наиболее простой способ охарактеризовать перестановки — это рассмотреть двоичное представление*. Таким образом, x={bn, Ьп_х......й1} =/,и2"-* +йи_12"-2+ ... + *! представляет двоичный адрес элемента в наборе. Перестановки набора вхо- дов теперь можно обозначить посредством операций или перестановок их двоичных адресов. Эта нотация дает хороший результат и использовалась в некоторых докладах, связанных с вопросами обработки данных и маршру- тизации сетей [72, 164, 167].. Перестановка с замещением. Указанная выше перестановка с замещением сейчас может быть более просто определена в двоичном представлении х: (3.11) Черта обозначает дополнение данного бита. Следовательно, к-я перестановка с замещением определяется дополнением &-го разряда двоичного представле- ния х ООО» * ООО • ч у ООО •—ч у—»000 о о 1 —• о 0 1 • » о 01 //~* ° 01 01 0 •--чу • 0 1 О •--• 01 О •—СхХ/У—• °1 0 01 1 --А- о 1 1 •-------< X—, 01 1 О 1 1 1 О О •-чу-----• 1 О О •—ч у-• 1 О О •—\XSO\S-* 1 О о 1 о 1 •-<х-----• 1 о 1 •--• 1 0 1 •— 1 О 1 11 0* V * 1 1 0 *—/х—* 11 ° *—11 ° 111 •--S'-• 1 1 1 •—' • 11 1 ' X—• 11 1 Е(1) 6(2) е(3) Рис. 3.13. Перестановки с замещением 160
Рис. 3.14. Перестановки с полной тасовкой Перестановки типа полной тасовки. Название ’’полная тасовка” происхо- дит от того, что перестановка выполняется посредством разрезания одного набора на два и чередованием этих двух наборов как при полной тасовке карт (рис. 3.14). Эта перестановка соответствует устройству циклического сдвига влево двоичного представления х: а(х) = .....bt,b„}. (3.12) k-я перестановка подтасовки и k-я перестановка надтасовки мо- гут быть также охарактеризованы циклическими сдвигами влево на наи- меньшие и наибольшие значащие к разрядов соответственно: ° (к) (х) = {Ьп,- • • >Ьк+1,Ьк_г,... ,bltbk} , (3.13) а(Л) (х) = .. ., bn_k+l, bn. bn_k>..., Ь.} . (3.14) Они иллюстрируются на рис. 3.14 для п = 3 и к = 2. Ясно, что а(и) (х) =а(и) (х) =а(х), а(1) (х) = о(1) (х) =х. На рис. 3.14 можно видеть, что при подтасовке (наименьших значащих разрядах) набор рассматривается как ряд поднаборов, выполняющих пол- ную тасовку в каждом поднаборе. Несмотря на то, что при надтасовках тасу- ется весь набор, полоса тасуемых данных увеличивается. Перестановка типа "бабочка” (рис. 3.15) характеризуется двоичным пред- ставлением х с перестановкой последнего и первого бита: = ьп_1,. ..,b2,bn\. (3.15) Рис. 3.15. Перестановка типа’’бабочка” (а) н разрядно-реверсивные (6) 6 Зак. 1799 161
Рис. 3.16. Перестановки со смещением Как и при тасовке, мы можем обозначить к-ю подбабочку и к-ю надбабочку х. В к-й подбабочке меняется к-й и первый разряды, а в к-й надбабочке — и-й и (и - к + 1)-й разряды: 0(fc)O) = (ЗЛ6) ^{х}={Ъп.к+г,...,Ъп_к+2,Ьп,Ъп_к,...,ЪД. (3.17) Примеры под- и надбабочек приведены на рис. 3.15 для и = 3и£ = 2. И опять: 0(и) (х) = 0(я) (х) = $(х), (х) = 0(1) (х) =х. Разрядно-реверсивная перестановка, как можно судить по названию, ха- рактеризуется изменением порядка разрядов на обратный в двоичном пред- ставлении х: p(x) = {bl,b2,...,bn}. (3.18) Одно из применений, где встречается данная перестановка, — алгоритм быстрого преобразования Фурье (см. разд. 5.5). Как и в предыдущих двух перестановках, к-я подразрядная и к-я надраз- рядная инверсии могут быть обозначены также наименьшими и наибольшими значащими к разрядами величины х: Р(к) (*) = {bn,---,bk+l,bl,b2,...,bk}, (3.19) ) (х) - {bn_k+l, Ьп_к+2...Ьп, Ъп_к,..., bi} . (3.20) На рис. 3.15 иллюстрируется разрядная инверсия для и = 3. Однако, как это будет показано далее, когда мы будем рассматривать алгебру перестано- вок, две перестановки не всегда являются эквивалентными. Перестановка со смещением. Эта последняя перестановка характеризуется весьма просто, не прибегая к разрядному представлению х: а(х) = |х+Н2П. (3.21) Снова определим под- и надсдвиги наименьших и наибольших значащих к разрядов двоичного представления значения х. В переводе на разрядное пред- ставление х уравнение (3.21) обозначает двоичное сложение над «-разрядным полем без учета переполнения. Поэтому под- и надсдвиги можно обозначить как 162
«(*)« = !*+V (3-22) (х) = |x + 2"-*I2?i. (3.23) Это иллюстрируется на рис. 3.16 для п = 3 и к = 2. 3.2.3. Алгебра перестановок Чтобы создавать более сложные перестановки и устанавливать равнознач- ность, будем объединять простые перестановки и манипулировать ими. Фак- тически этот процесс описывается посредством алгебры функций. Например, мы объединяем две функции, написав выражение р (а (х) ), которое описыва- ет перестановку, определяемую полной тасовкой с последующей разрядной инверсией. На языке двудольных графов это эквивалентно привязке выхо- дов тасовки к входам разрядной инверсии. Чтобы упростить выражения и одновременно сохранить ощущение потока данных слева направо в двудоль- ных графах, указанное выше выражение сократим до ар. У этой формы имеет- ся предшественник в комбинации операторов на языке APL [122]. Как в любой алгебре, нам потребуется единичная или тождественная пере- становка, которую мы обозначим как /. Эта перестановка сохраняет порядок входного множества: 1(х)=х. (3.24) Определив тождественную перестановку, мы теперь можем обозначить ин- версию отображения. Например, инверсия полной тасовки обозначается а”1 и оо~1 = а~1 а = /. Обратное отображение можно понять, прочитав двудольный граф справа налево. Применяя алгебру перестановок, учредим некоторые важные тождества. В большинстве случаев эти тождества можно проверить, рассматривая двоич- ное представление х. Первое тождество относится к взаимосвязям между к-й под- и надпереста- новкой, где для общей перестановки тг имеется зависимость: 7г(А) =akit(k)O-k. (3.25) Теперь приведем группу тождеств, которая имеет отношение к описанным выше инверсиям перестановок: е(Л) =е(*)’ (3.26а) Р(к) =Р(к)> (3.266) &(к) =Р(к)’ (3.26в) “<*> '“ж’. (3.26г) (3.26д) Другая группа тождеств относится к взаимосвязям между различными пе- рестановками: е(к) = ° (к)а (\)а (к)’ (3.27а) 6* 163
a(k) ~^(i) (3.276) р (к) =а(1) • •'°(к)' (3.27в) Последняя группа тождеств относится только к первым подперестановкам: а(1)=Л (3.28а) Р(1) =i, (3-286) 0(1) =i. (3.28b) В качестве примера применения этой алгебры и указанных тождеств опи- шем то, что отражено на рис. 3.15 для п = 3 и р = (3. Из уравнений (3.276) и (3.27в) запишем: р(з) = (1)^(2)^ (з)" Поскольку 0^ является тождественной перестановкой [см. (3.28в)], а 0,*. представляет свою собственную инверсию [см. (3.26в)],то р =0(3)- 1В общем смысле для произвольного к можно установить только следую- щую взаимосвязь для разрядно-реверсивной перестановки: р(к) = ^(з)^(1) •••0(4)0(i) ***0(5) ***0(1) ***0(Л)* 3.2.4. Однокаскадные сети или переключатели Однокаскадные сети состоят из определенного числа или одного каскада переключателей. Так, в P-процессорной матрице сети, как правило, состоят из одной матрицы из Р многовходовых переключателей. Можно видеть, что такую форму сети можно легко разбить на части с переключателями, встро- енными в аппаратные средства процессоров. Такая форма сети обычно ассо- циируется со структурами матриц, типичный пример которых показан на । рис. 3.1. Однокаскадные сети ограничиваются сложностью их создания, и поэтому i они могут обеспечивать только ограниченный ряд перестановок. Другие бо- лее общие перестновки должны устанавливаться итерационно. Таким обра- зом, например, если сеть обеспечивает перестановку со смещением а, то для выполнения а (п -*), где а" = а2 потребуется итераций в сети. Теперь рассмотрим ряд однокаскадных сетей, описывающих свои пере- ключатели с точки зрения набора перестановок, который они могут генери- ровать. Так, выражение SW={7r1,7r2,...,7rw} описывает переключатель SW, выполняющий т перестановок тгг или тг2 по тгт. При вещательном управлении1 такой переключатель потребует log2w? управляющих битов, тогда как при независимом управлении только log2w независимых битов потребовалось бы для каждого из Р процессоров матри- цы. В нашем обсуждении мы предполагаем, что Р = 1Р, если только оно не оговаривается по-другому. 1 Имеется в виду управление по принципу трансляции, например, в радиовещании. - Прим. ред. 164 &
Рис. 3.17. Кольцевая сеть Рис. 3.18. Сеть типа ”к ближайшему соседу” (NN (р) Кольцевая сеть. Это самая простейшая из всех сетей с ненаправленным по- током информации и состоящая из кольца процессоров. Эта сеть показана на рис. 3.17; она представляет собой незаконченный координатный переключа- тель, который описывается как R = {i', • Сеть типа ’’к ближнему соседу”. Сеть такого рода представляет собой про- .165
стое расширение кольцевой сети и обеспечивает двухсторонний поток инфор- мации (рис. 3.18) пописывается как ™={а’(Р)’г‘’а(Р)Ь Конструирование такой сети достаточно просто и дешево, но она не совсем подходит для большого числа процессоров. Тем не менее ее можно обобщить для нескольких размерностей. Например, если Р = Q* и Q = 24, то ^-мерную сеть ”к ближайшему соседу” можно описать следующим образом: NV "Р"' ч......4 В машине ICL DAP применяется такая сеть с^ = 2и^ = 6: “(«> “о,, .< “(0 • “<и>“(.> } Здесь перестановки можно рассматривать как сдвиг на север, юг, восток и запад по двумерной сетке с закольцованными краями. В машине ILLIAC IV также применяется коммутирующая сеть ”к ближайшему соседу” при q = 3, хотя описываемая здесь периодичность несколько другая: = {<% “о) а(б) ’ “(6) > '> “(6) ’ ff(6) “(3) <\б) } Интересно отметить, что произойдет, если выбрать предельный случай сети ”к ближайшему соседу” при к = р = log2P. Здесь q = 1 и из уравнения (3,27а) получаем: NN(P) ={e(D’Z ПРИ/= 1> •••>*}• Это — описание двоичного гиперкуба, структура которого состоит из гипер- куба р размерностей с двумя процессорами с каждой стороны. Он иллю- стрируется на рис. 3.19 для р = 3; можно видеть, что к-е замещение эквива- лентно обмену информации через к-ю плоскость симметрии (показана к = 1 плоскость). Сети с полной тасовкой. Полная тасовка была выполнена в виде переста- новки, которая используется в коммутирующей сети [144,145,213]. Рассмот- рим переключатель полной тасовки, который иллюстрируется на рис. 3.20: {’«-У'’’<„>) Можно видеть, что зта сеть представляет собой не очень удачный переклю- чатель, так как он оставляет несоединенными четыре поднабора процессоров. Вследствие этого была предложена сеть с замещением и полной тасовкой [213] и сеть ”к ближайшему соседу” с полной тасовкой [90]. Они характе- ризуются ниже и иллюстрируются рис. 3.21 для N= 8 PSE= {»(,', PSSN ={«->, Как и в случае переключателя ”к ближайшему соседу”, выражения обоих переключателей можно записать для нескольких размерностей. Однако в пре- дельном случае при к = р оба переключателя эквивалентны двоичному ги- перкубу. 166
Рис. 3.19. Иллюстрация двоичного гиперкуба с восемью узлами; показана первая плоскость сим- метрии — Выходы Рис. 3.20. Сеть полной тасовки PSqj Выходы Рис. 3.21. Сеть полной тасовки с замещением, PSEq-j и есть ”к ближайшему соседу” с полной тасовкой, PSNN/n; штриховые линии показывают преобразование PSE/,, в PSNN(1) k 167
3.2.5. Некоторые свойства однокаскадных сетей Однокаскадные сети или переключатели можно применять итерационно для моделирования соединительной сети, которая, как отмечалось ранее, мо- жет выполнять всеР! взаимооднозначных отображений вход-выход. Под ите- рацией мы имеем в виду, что после одного прохода через коммутатор выход данного процессора будет подключен к входу той же или другой коммутиру- ющей установки. Таким образом, для заданной сети важно знать, сколько итераций потребуется, чтобы установить отображение. Вероятно, это будет влиять на скорость вычислений, особенно, если потребуется большое число итераций. Для сравнения сетей, о которых говорилось выше, введем понятие рас- стояния в сети. Например, расстояние между двумя узлами в сети i и / ха- рактеризуется числом необходимых итераций для установки отображения i . Далее введем две меры расстояния, которые представляют собой функ- цию данной сети и дают некоторое ощущение эффективности сети. Эти значе- ния впервые были описаны К. Джессхоупом [127,128] и использовались для определения временных оценок при обработке данных в процессорных мат- рицах [126, 128]. Максимальное расстояние D... для ^-мерной сети показывает максималь- ное расстояние между двумя любыми узлами сети. Это — мера эффективно- сти сети для задач, которые используют глобальную связь. При одномерном переключателе R процессор, наиболее отдаленный от процессора i, является процессором i + 1, а для переключателя NN этим процессором является про- цессор i +N/2. Индуктивный аргумент, введенный К. Джессхоупом [127], отражает пересчет по к, как показано в табл. 3.2. Для сетей с полной тасов- кой проще рассматривать двоичное представление адреса узлов. Так, для пе- реключателя PSE узел i = { Ъ , Ъ^_ j,..., bv} является наиболее удаленным для узла / = { bq, bq_1, . . . , di} . Следовательно, это отображение может быть выполнено посредством q - 1 полных тасовок (сдвиг разрядов влево) и q замещений первого порядка (дополнение первого бита). Для переключа- теля PSNN наиболее удаленными являются узлы i и /, где/ = {10101 ...}. Это также требует q — 1 полных тасовок, но только <?/2 сдвигов (прибавить единицу к z) • Конечно, максимальное расстояние/^. > в PS-переключателе — бесконечность. Все эти результаты сведены в табл. 3.2. Таблица 3.2. Характеристики однокаскадных сетей Наименование параметра Переключатель R(fc) NN(fc) PS(fc) PSE(Jk) PSNN(Jfc) Максимальное расстояние, Нагрузочная спо- собность по вы- *(е - о kQ/2 oo - 1) k(q + [q/2] - 1) ходу,К()к) k(Q - 1) k(Q - 1) oo k(2q - 1) < - 1) 168
Копирование f Замещение Тасовка Сдвиг (7 -* 7 + 1) । ; ,\\\\ I Z+1 Z+2 Z+3 z+4 z+5 Z+6 Z+7 Рис. 3.22. Иллюстрация алгоритма рас- хождения одиночного элемента данных по всем узлам кольцевой сети R сети ”к ближнему соседу” NN^ (О или Рис. 3.23. Иллюстрация алгоритма рас- хождения одиночного элемента данных по всем узлам сети полной тасовки с за- мещением PSE (j) ____». Мера нагрузочной способности по выходу, входу. Мера нагрузочной спо- собности по выходу, входу указывает значение необходимого расстояния, на которое распространяется единица информации ко всем узлам сети, или ее обратное значение — получение (сбор) информации. Эта мера очень важна для многих алгоритмов, построенных по принципу ’’разделяй и властвуй” (см. гл. 5). Такое отображение потребует ряд параллельных перестановок (возможно, с помощью булева управления). Например, для одномерного NN- или R-переключателя алгоритм приводится на рис. 3.22. Можно видеть, что общее число перестановок со смещением для одной размерности состав- ляет Q — 1 = 1 + 2+ 4 + ... + 2/2. На рис. 3.23 для PSE и PSNN переключате- лей сетей приводится алгоритм на языке двоичного представления i при i = - 0. Этот алгоритм симметричен и работает одинаково хорошо для всех уз- лов, хотя узлы, посещаемые более одного раза, не являются одними и теми же. Следовательно, число необходимых перестановок для генерации адресов всех узлов из узла i описываются q — 1 тасовками и q замещениями. Для по- лучения симметричного алгоритма из переключателя PSNN замещение долж- но быть смоделировано парой маскированных сдвигов (2? сдвигов). Однако Для некоторых узлов в переключателе PSNN можно обнаружить более быст- рые зависимые от узлов алгоритмы, в которых не применяется маскирова- ние. Полученные результаты также приводятся в табл. 3.2. 169
Чтобы сравнить эффективность описанных сетевых переключателей, рас- смотрим все возможные конфигурации 4096-процессорной матрицы. Для этого нам также потребуется грубая оценка стоимости данной конфигура- ции. Так, мы допускаем стоимостную функцию С, характеризуемую числом перестановок, которые может сделать переключатель, исключая тождествен- ную перестановку (т. е. С = т — 1). Оценки и С приводятся в табл. 3.3 для 4096-процессорной матрицы. Можно видеть, что если к = р, то все одно- каскадные сети эквивалентны. Видно, что переключатели PSE и PSNN очень эффективны, обеспечивая наибольшую эффективность сети в стоимостном отношении при к = 1. Хотя для переключателей R и NN возможно общее уве- личение эффективности, обусловленное переходом от одной к двум размер- ностям, дальнейшее увеличение размерности приводит только к уменьшению показателя производительности — стоимости. Таблица 3.3, Максимальное расстояияе D^-y в 4096-процессориой матрице к Q R(fc) NN(fc) PSE(fc) PSNN(fc) ок С Dk С ок С Dk С 1 4096 4095 1 2048 2 23 3 17 4 2 64 126 2 64 4 22 6 16 8 3 16 45 3 24 6 21 9 15 12 4 8 28 4 16 8 20 12 16 16 6 4 18 5 12 12 18 18 12 24 12 2 12 6 12 12 12 12 12 12 3.2.6. Многокаскадные сети С помощью многокаскадных сетей можно создавать более дешевый вари- ант законченного координатного переключателя, когда необходима полная соединительная сеть. Эти сети базируются на ряде взаимосвязанных коорди- натных переключателей, наиболее общий и!з которых строится на основе (2 х х 2)-координатного переключателя. Этот коммутатор, показанный на рис. 3.24, может генерировать две перестановки и два отображения вещания. Если один бит будет использоваться для управления этим переключателем, то будут выбираться только перестановки, показанные на рис. 3.24. Приме- няя матрицу из N/2 таких переключателей, мы можем описать переключатель с замещением £-го порядка, для которого требуются N/2 управляющих би- тов, как: Е(к) ={e(fc)’z } = а(к)Е(1)а{кУ ' (3.29) Если используются два управляющих бита для каждого (2 х 2) -коорди- натного переключателя, то можно сгенерировать все четыре отображения, по- казанные на рис. 3.24. Расширяя уравнение (3.29), можно задать обобщен- ный переключатель с замещением к-го порядка, для которого требуются N управляющих битов: GE(*) = Iе (к) >1 (ку и (к)' i 1 = ° (к) GE(i) ° (к) (3.30) 170
Рис. 3.24. Коммутирующий элемент 2 X 2 и отображения Q 1 О 1 Рис. 3.25. Сеть Беиеса: а — приведение координатного пере- ключателя TV X N к двум координат- ным переключателям N/2 X N/2 и двум переключателям с замещением; б — двоичная сеть Бенеса с полным приве- дением и упрощением Здесь I и и — над- и подотображения передачи, которые описываются так: ‘(к) W = M(fc) ={ bn’---’bk+l’°’ Соединительные сети. В. Бенес [19] показал, что законченный (TVxTV)-ко- ординатный переключатель можно свести к двум (N/2 х 2V/2) -координатным переключателям с двумя Мвходовыми переключателями с замещением, как указывалось выше. Такая структура показана на рис. 3.25, а. Охарактеризо- вывая (Nх N) -координатный переключатель как , где п = io&N, можно записать: Х(л) = Х(П.1У (3.31) 171
Очевидно, зто приведение можно продолжить, прибегнув к помощи уравне- ния рекурсии: Х(”) Е(л)E(n-i)Е(„_2) ... EpjX(pEp) •. .Е(Л). (3.32) Его можно составить из модулей, используя взаимосвязь в уравнении (3.29) : Х(») =ff(«)E(Off(n) • •-ff(2)E(i)ff(2) • • •ff(n)E(i)°(n1)- И последнее, приведение можно упростить, отметив, что предварительная и последовательная перестановки входов и выходов переключателя только переопределяют порядок этих множеств. Следовательно, мы получаем выра- жение для сети Бенеса в двоичной форме [150]: В(п) =Х(„) =E(i)»(n)E(i)O(n1_1) • • • ст(2)Е(1)СТ(2) ' • • а(«)Е(1)' Эта сеть иллюстрируется на рис. 3.25, б. По определению — это полная соеди- нительная сеть, обеспечивающая 7V! возможных перестановок; более того, если мы обобщим ее, применив переключатель , то могут быть созда- ны все четко определяемые отображения. Сети с замещением и тасовкой. Другим классом сетей, не относящихся к полностью соединительным сетям, являются так называемые сети с замеще- нием и тасовкой. Здесь описываются четыре такие сети: омега-сеть [147], сеть косвенного двоичного И-куба [174], сеть Бзняна [85] и R-сеть [167]. Они идентифицируются ниже соответственно £2, С, Y и R: ^(П) = (ff(n) Е(1) )”> С(«) = Е( 1) В (2) Е(1) 3 (3) • • • 3(Р)Е(1)ар > У(Л) =Е(1)В(2)Е(1)В(3) . . .В(/?)Е(1), R(«) = Е(1) °(п) Е(1) а(П-1) • - СТ(2) Е(1) СТ(«) - Можно видеть, что сеть Бзняна представляет собой только двоичный куб без тасовки и что R-сеть описывается первой половиной двоичного переклю- чателя Бенеса с последующей тасовкой. Другой интересной деталью, которую доказал Д. Паркер [167], является взаимоотношение между S2, С и R, кото- рое дает следующее равенство: П(п) =С(«) =R(n) =Y(«)a(«)- Омега-сеть и сеть двоичного и-куба иллюстрируется на рис. 3.26. Несмотря на то, что зти переключатели не являются полными соединительными сетями, они все-таки обеспечивают очень широкий класс перестановок, пригодный для многих применений в процессорной матрице. Кроме операций над сеткой и математическими матрицами их очень хорошо использовать для быстрого преобразования Фурье и связанных с ним алгоритмов [173], а также для ме- тодов сортировки [16]. Управление в многокаскадных сетях. Эта область является одной из на- именее изученной в теории коммутации. Многокаскадные соединительные сети требуют О (Mog2A) битов информации, чтобы создать переключатель с замещением и сгенерировать определенное отображение. Запись управляю- щих слов, хотя бы для ограниченного набора имеющихся отображений, не 172
Рис. 3.26. Сети тасовки с замещением: а — омега-сеть; б — сеть косвенного двоичного п-куба дает ощутимых результатов. Например, запись управления для вычисления только перестановок со смещением потребует О (A2 log 2 Л) битов, что уже яв- ляется неприемлемым для большой матрицы процессоров. Выход из положения видится в вычислении управляющих слов для опре- деленной перестановки. По методу А. Ваксмана [243] можно вычислить управляющее слово для определенной перестановки с помощью последова- тельного алгоритма за О (Mog2A) шагов, которые можно сократить до О (Л), применив параллельный алгоритм [230]. Однако и зто неприемлемо, так как вычисления составили бы основную часть времени задержки коммутации. Однако существуют алгоритмы, по которым можно вычислять необходи- мое управление, но только для ограниченного ряда перестановок. Такие ал- горитмы можно найти в работах [150, 167]. Другой вариант — это статисти- ческое использование сети посредством создания пакета данных, который со- держит адрес места назначения части данных в виде последовательности из O(log2A) управляющих битов. Далее управляющий бит устанавливает опре- деленный обменный переключатель и обнуляется после прохождения данных. Такой подход требует более гибкую управляющую структуру [37]. 3.3. МАТРИЧНЫЙ ПРОЦЕССОР DAP ФИРМЫ ICL 3.3.1. Общий обзор проекта и технологии Распределенный матричный процессор DAP фирмы ICL представляет со- бой проект, в котором сбалансированы вычислительная мощность и недоро- гая технология. Он представляет собой относительно дешевое изделие, име- ющее очень широкий диапазон производительности в зависимости от приме- нения [186]. Проектирование экспериментальной машины DAP было начато в 1974 г., и проект был аналогичен проекту SOLOMON [89], который представлял собой двумерную матрицу из 1024 одноразрядных процессоров. Однако бла- годаря проекту DAP было внесено два новых вклада в формулу машины SOLOMON, которые должны были принести ей успех как жизнеспособной машине. Первый из вкладов — это свойство аппаратуры эффективно секциониро- вать матрицу в двух ортогональных направлениях. Ряд имеющихся в глав- 173
ном управляющем устройстве (MCU) регистров соответствует любому на- правлению и устанавливается относительно любого направления DAP-матри- цы. Это достигается с помощью двух ортогональных магистралей данных, ко- торые пронизывают строки и столбцы из процессорных элементов. В этих ма- гистралях каждый бит соответствует биту регистра MCU, оконечной нагруз- кой которого является либо строка, либо столбец DAP-матрицы. Каждый ПЭ;/- будет иметь одноразрядную магистраль, идущую непосредственно к разрядам i и / регистра MCU. По этим магистралям производится сбор и ве- щание данных к секциям DAP-матрицы, что обеспечивает большую гибкость машины DAP при работе с данными. Второй вклад, сделанный проектом DAP, является скорее теоретическим и связан со способом объединения DAP в законченную систему. Машина DAP предназначена не только для эмуляции модуля памяти универсального ком- , пьютера фирмы ICL, но также и для автономной обработки данных парал- лельным способом. Название машины DAP происходит от самой ее концеп- ции, поскольку мощность обработки распределяется с использованием памя- ти обычного компьютера. Аппаратное обеспечение экспериментальной машины DAP, выполненное менее чем за два года после начала работ над проектом, представляло матри- цу из 32 х 32 процессорных элементов, где каждый ПЭ имел память емко- стью 1К. Примерно через шесть лет в 1980 г. фирма поставила заказчикам первые три производственные модели. Эта машина состоит из большой мат- рицы, содержащей 4096 ПЭ и имеющей ту же геометрию, что и эксперимен- тальная ЭВМ, причем каждый ПЭ имеет память емкостью 4К. Это дает в це- лом память емкостью 2 Мбайт, которая подключена к одной из машин верх- него уровня ряда ICL 2900. Между экспериментальной и производственной * машинами существуют некоторые отличия, но здесь мы будем рассматривать только производственный вариант. (Экспериментальная машина была впер- вые описана в работе [185], а оценки по некоторым применениям даны в ра- боте [73].) В отличие от некоторых суперкомпьютеров, обеспечивающих повышенные скорости коммутации, соображения по топологии машины DAP и ее техни- ческим параметрам не являются критическими. Первые производственные образцы строились на базе относительно скромной технологии с низкими уровнями интеграции. Имеются планы по использованию более высоких уровней интеграции, что сделало бы доступным изготовление больших DAP- матриц (увеличение памяти и/или числа процессоров). Соответствующая машина DAP сконструирована из блоков по 16 процес- соров и соответствующей памяти, которые монтируются на одной печатной плате размерами 30,0 х 17,8 см. Она содержит примерно 80 16-контактных ТТЛ-схем с типичным уровнем интеграции 10 — 40 вентилей на кристалле. При задержке одного вентиля, равной 5 нс, обеспечивается общий тактовый цикл 200 нс, включая время обращения к памяти. Вся память для одного процессора выполнена на одном кристалле, в настоящее время на статичес- ких МОП-структурах емкостью 4К. Так, 256 плат, составляющих секцию матрицы машины DAP, вместе с платами устройства управления и управле- ния доступом к памяти главной ЭВМ размещаются в одной стойке с воздуш- ным охлаждением, которая занимает площадь приблизительно 1,86 — 2,79 м2 174
Рис. 3.27. Внешний вид устройства памяти DAP-матрицы и устройства доступа (воспро- изводится с разрешения фирмы ICL) (рис. 3.27). Стоимость всей DAP-системы составляет примерно 500 тыс. фун- тов стерлингов, не считая стоимость главной ЭВМ серии 2900. Однако следу- ет заметить, что в любом случае дополнительная память, предоставляемая ма- шиной DAP, составляет существенную часть этой стоимости. В 1980 г. были разработаны планы использования БИС с четырьмя процес- сорами на кристалле. Это привело бы к сокращению числа кристаллов в 4 ра- за по сравнению с DAP-матрицей существующего типа или теоретически да- ло бы возможность разместить DAP-матрицы размером 128 х 128 в стойке с размерами, аналогичными существующим. Проект DAP явно претендует на СБИС-технологию [158], так как его структура является регулярной. Эти и другие соображения рассматриваются в гл. 6. 3.3.2. Архитектура Поскольку проект сильно структурирован, то при описании архитектуры DAP мы будем придерживаться подхода ’’сверху — вниз”. На самом верхнем уровне мы можем рассматривать объединение машины DAP в главную вы- числительную систему 2900 в качестве устройства памяти. На рис. 3.28 представлена структурная схема типичной системы 2900, ко- торая состоит из процессора командных программ и контроллера доступа к памяти, подключаемых к различным запоминающим устройствам. Одним или несколькими ЗУ может быть машина DAP, которая предоставляет па- мять общепринятым способом и может быть проинструктирована процессо- ром командных программ на выполнение своей DAP-программы. Можно пользоваться памятью машины DAP и во время ее работы посредством задей- ствования неиспользованных циклов памяти. Защита DAP-программы и дан- 175
Рис. 3.28. Взаимосвязь машины DAP с главной машиной системы 2900: SMAC — контроллер множественного доступа к памяти; DAC — контроллер доступа ма- шины DAP; MCU — главное устройство управления ных достигается с помощью различных разрешений на обращение. Например, для защиты данных и программы в машине DAP можно указать только опе- рации считывания и считывания исполнительных сегментов соответственно. Контроллер доступа к памяти обеспечивает доступ к периферийным уст- ройствам, а также предоставляет средства поблочной передачи между устрой- ствами памяти.Таким образом, если машину DAP рассматривать как вычис- лительное ядро системы для переработки большого объема числовых дан- ных, то обыкновенную память можно рассматривать как быстрое вспомога- тельное запоминающее устройство для DAP со средствами предварительной и последующей обработки с помощью процессора командных программ. На следующем уровне структуры мы рассматриваем само устройство DAP. На рис. 3.29 отражены основные компоненты и магистрали данных. Сопря- жение с системой 2900 обеспечивается с помощью контроллера доступа к DAP и магистрали столбцов, в которой отводится один разряд для каждого столбца процессоров матрицы. Следовательно, одно 64-разрядное слово си- стемы 2900 соответствует строке в DAP-памяти. Инкремент адреса системы 2900 вначале обеспечивает приращения вниз по столбцам DAP-матрицы и да- лее в адресном поле DAP размером 4К. Магистраль столбцов также обеспечи- вает цепь между строками DAP-матрицы и MCU-регистрами и ее можно ис- пользовать для модификации данных и/или команд. Магистраль столбцов представляет собой цепь MCU для выборки DAP-команд из DAP-памяти. Команды хранятся по две на каждую строку памяти; в течение одного такто- вого цикла из памяти выбирается одна строка. При определенных условиях команды можно занести в буфер команд для повторного выполнения. Под- робности, связанные с командами и их выполнением, приводятся в подразд. 3.3.3. Из рис. 3.29 можно также видеть, что магистраль строк соединяет DAP- матрицу с MCU-регистрами в ортогональном направлении. Магистраль строк 176
Рис. 3.29. Основные компоненты машины DAP содержит один разряд для каждой строки процессоров матрицы и применя- ется исключительно для передачи данных в/из MCU-регистров. И последнее, на самом низком уровне структуры DAP можно идентифици- ровать различные компоненты и тины данных, которые включают в себя один процессорный элемент. Он показан на рис. 3.30; для простоты понимания многие внутренние шины данных опущены. Более полно они будут рассмат- риваться в подразд. 3.3.3. Матрица имеет двумерные соединения - каждый ПЭ связан с четырьмя соседними элементами. Их можно определить направ- лениями компаса - С, Ю, В и 3. Неопределенные соединения на краю матри- цы характризуются выполняемой командой. Геометрия команды либо пла- нарная, либо циклическая для строк и столбцов. Планарная геометрия харак- теризует ввод на краях, тогда как циклическая обеспечивает периодические соединения в строках и столбцах матрицы. Геометрию строк и столбцов мож- но устанавливать независимо. Внутри процессора содержатся три одноразрядных регистра, два мульти- плексора и одноразрядный сумматор. Регистр А обеспечивает программиру- емое управление работой процессорного элемента; если устанавливается ре- гистр соответствующей активности, то производится всего лишь разблокиров- ка определенных команд памяти. В регистре А также имеется входной триг- гер-фиксатор для быстрого объединения масок управления. С помощью входного фиксатора А содержимое регистра ’’складывается” с входными данными. К другим регистрам относится аккумулятор (Q) и регистр хране- ния переноса (С). Сумматор складывает содержимое Q, С, а также ввода в процессорный элемент, выдавая на выходах результаты суммы и переноса, которые записы- 177
Память 4К X 1 бит Один бит в/от > MCU-магистралей Мультиплексор вывода A Q С Перенос/связь с соседним ПЭ - Одноразрядный | сумматор | ______________________________ I Рис. 3.30. Процессорный элемент машины DAP ваются соответственно в регистры Q и С. Исключение составляет случай, ко- гда выполняется операция сложения команд памяти. На выполнение команд этого семейства затрачивается 1,5 цикла. В течение этого времени произво- дится считывание операнда и запись разряда суммы обратно в ту же ячейку (большинство команд выполняется за один цикл; см. ниже), экономя, та- ким образом, половину цикла за период сложения с использованием аккуму- лятора, за которым следует команда на хранение содержимого аккумулято- ра. Это свойство было введено уже после создания опытной модели с целью увеличения скорости внутреннего цикла программы умножения, в пределах которой выполняются повторные сдвиги и сложения с одной и той же ячейкой. Мы заканчиваем описание архитектуры упоминанием об обнаружении ошибок. В проекте предусмотрен контроль по четности в процессорных эле- ментах (на рисунках не показан). Этот контроль производится как над функ- циями памяти, так и логическими функциями [112]. При работе в качестве памяти системы 2900 используется полный код Хэмминга с обнаружением ошибки, который обеспечивает коррекцию одиночной ошибки и обнаруже- ние двойной ошибки в каждых 64 разрядах считываемых данных. 3.3.3. Набор команд Выполнение команд в машине DAP обычно состоит из двух фаз — цикла выборки и цикла выполнения. Каждый из этих циклов составляет 200 нс. Од- нако, если команда появляется после и в пределах области действия специ- 178
о 31 Код операции MCU-регистр Инверт Регистр модификатора Инкр. Адрес или направление и геометрия Декр. Номер строки/ столбца или отсчет числа сдвигов 9 3 13 17 1 7 а) U 63 51 63 Рис. 3.31. Форматы команд и модификаторов: а — команда; б - модификатор адреса; в — модификатор сдвига альной команды аппаратного обеспечения цикла DO, то первая фаза выборки команды будет выполняться только один раз для всех N повторений дей- ствия цикла. Команда цикла DO содержит два поля данных: поле длины, ко- торое указывает область действия цикла, и поле отсчета, которое может быть модифицировано и определяет периодичность выполнения цикла. Макси- мальная длина цикла составляет 60 команд, а максимальное число циклов - 254. В командах цикла могут содержаться адреса, увеличивающиеся или уменьшающиеся на 1 при каждом проходе. Поэтому цикл DO является очень полезным при создании программного обеспечения для работы со словами данных. Скорость выполнения команд составляет асимптотически одну коман- ду цикла за каждый тактовый период по сравнению со скоростью, равной од- ной команде за каждые 1,5 тактовых периода, если приходится выбирать команды для каждого выполнения (две команды выбираются через один цикл выборки). Поле большинства команд машины DAP изображено на рис. 3.31, а. Код операции и поле инверсии эффективно специфицируют команду. Бит инвер- сии создает пару команд, которые являются идентичными, за исключением того, что один из входов команды инвертируется. Команды, например QA и QAN, являются связанной парой, которая загружает Q-регистр содержи- мым A-регистра. Команда инвертирует ввод. Многие DAP-команды имеют такие комплементарные пары. Два других одноразрядных поля определяют, должна ли .DAP-команда содержать адрес, увеличиваемый или уменьшаемый внутри цикла DO. Два трехразрядных поля специфицируют регистры MCU. Первое устанав- ливается, если требуется регистр данных, а второе, если необходима модифи- кация команды. Два оставшихся поля дают либо адрес памяти, либо испол- 179
нительный адрес сдвига в командах сдвига. Эти поля можно модифицировать посредством регистра MCU, выбранного в поле модификатора. Команда, которая выполняет обращение к памяти, содержит два 7-разряд- ных адресных поля. Одно из них специфицирует номер строки или столбца, а другое - 7-разрядное смещение в памяти. Эти адреса складываются с содер- жимым регистра-модификатора (рис. 3.31,6) и формируют абсолютный ад- рес. Ввод в адрес памяти разрешается только командой обращения к стро- кам. Для команд обращения к столбцам номер столбцов урезается до шести разрядов, чтобы обеспечить значение по модулю 64. В командах, которые осуществляют сдвиг данных через матрицу ПЭ, два адресных поля специфицируют относительный адрес в матрице. Одно поле ис- пользуется для спецификации геометрии и направления сдвига, другое - в качестве отсчета сдвигов. Оба они могут быть модифицированы содержимым регистра MCU, имеющим формат, указанный на рис. 3.31, в. Возможными на- правлениями могут быть: собственно сам ПЭ, С, Ю, В и 3. Геометрия обла- дает четырьмя возможностями, обеспечивающими геометрию строк и столб- цов, которая может быть независимо установлена планарной или циклической. При любой форме адресации, если поле модификатора установлено в нуль, никакая модификация не производится. Следовательно, регистр нуля не может быть использован в качестве модификатора. Мы не собираемся описывать здесь все типы команд; интересующемуся читателю следует обратиться к руководству по языку ассемблера APAL DAP [117]. Но мы все-таки попытаемся суммировать команды по группам (табл. 3.4) и показать на рис. 3.32 концептуальные шины данных, создаваемые эти- ми командами. На рисунке штриховыми линиями показано управление, осу- ществляемое регистром активности. Таблица 3.4. Краткое описание DAP-команд Регистр — регистр Регистр — память Одноразрядное сложение В сумматоре или полусумматоре сумма в Q перенос в С Векторное сложение сложение с ускоренным переносом Q-Q + C Пересылка Регистр - регистр внутри ПЭ, содержит сдвиговые команды MCU/матрица Считывание из MCU-регистров, селектив- ная передача или запись в/нз Q и А Одноразрядное сложение; результат в память В сумматоре или полусумматоре сумма в память, перенос в С Считывание/запись Загружает из и заносит в Q- и А-регистры (столбцы строк или всю плоскость па- мяти) MCU/память Считывание нз MCU-регистров, селектив- ная передача или запись в/нз памяти MCU только Управления, логики и арифметики с MCU-регистрами 180
Рис. 3.32. Концептуальные магистрали данных в процессорном элементе машины DAP 33.4. Режимы обработки и отображения памяти Обычным режимом обработки в машине DAP является разрядно-последо- вательный режим с параллельной обработкой 4096 слов. Поэтому микропро- грамма сложения будет использовать средства аппаратного обеспечения цик- ла DO для выборки последующих бит данных, которые должны быть сопря- гающимися в памяти. Кроме того, процессорные элементы DAP можно переформировать для па- раллельного сумматора или сумматора со сквозным переносом (рис. 3.4) (ПЭ могут быть связаны между собой в любом направлении). Следователь- но, возможна параллельная обработка 64 64-разрядных слов. Сквозной пере- нос распространяется в течение каждого тактового периода более чем на од- ну разрядную позицию, при этом, по крайней мере, гарантируются четыре разрядные позиции. Эти два режима реализуются программным обеспечением DAP. Однако ап- паратное обеспечение машины DAP обладает большей гибкостью, и полный спектр режимов обработки располагается между этими двумя максимальны- ми режимами. Эти режимы требуют соответствующего секционирования сло- ва данных и объединения разрядно-последовательных и разрядно-параллель- ных методов. Они суммированы в табл. 3.5 для пословного и поразрядного параллелизма для 32-разрядного целочисленного сложения (максимальная скорость обработки приводится для максимального пословного параллелиз- 181
ма). Можно видеть, что максимальная скорость обработки достигается при разрядно-последовательном режиме, но максимумы снова достигаются при использовании 4-разрядной секции. Обменяется это тем, что за один такто- вый цикл осуществляется перенос на четыре позиции. Можно видеть, что ско- рость обработки после этого падает почти линейно вследствие последователь- ного процесса сквозного переноса при операции сложения. Таблица 3.5. Краткие сведения о режимах обработки иа машине для 32-разрядного целочислеииого сложения Пословный параллелизм Разрядный параллелизм Число циклов на раз- рядный параллелизм Максимальная ско- рость обработки, Моп/с 40961 1 3 213 769 - 1344 2 4 53 257 - 768 4 2 60 129 - 256 8 1,1 35 65 - 128 16 0,7 29 64" 32 0,4 25 1 Реализовано фирмой ICL. Все эти различные режимы обработки требуют различных отображений данных в памяти машины DAP. Мы рассмотрим только те отображения, ко- торые реализованы на системах 2900 и DAP. Для этого применим двоичную форму адресного пространства х в DAP: х = I&24,..., • • • > b^lbf,,..., &i }. Поскольку память в машине DAP является трехмерной, мы разбили адрес на три поля, которые соответствуют целым числам на координатных осях, изображенных на рис. 3.33: х = { кЦ/i } . Можно видеть, что по условию приращения вначале получает номер строки г, затем номер столбца/ и последним получает приращение адрес памяти к. Обозначив адресное поле через х, можем просто описать отображение па- мяти посредством перестановки или отображения над х. Вначале рассмотрим отображение памяти системы 2900 или главной ЭВМ. Не следует рассматривать адрес на разрядном уровне, так как пер- вые w разряды адреса будут определять местонахождение разрядов слова из 2й’ разрядов. В системе 2900 доступ к дан- ным производится через магистраль столбцов (см. рис. 3.29), поэтому раз- рядный адрес будет отображаться на числовом поле столбца. Следовательно, Рис. 3.33. Трехмерная структура ЕАР- памяти 182
хранение данных в системе 2900 описывается перестановкой Hw (х) для слов длиной 2W (w < 6) : Hw(x) = {..., bi3!b6,... ,bw+1,bw>.. ., bi/bn,. .., bi}. В системе DAP при обработке слов требуется аналогичное отображение хранения. Однако для 32-разрядных слов необходима, по крайней мере, од- на позиция ПЭ для подавления сквозного переноса. Таким образом, ком- пактное размещение 32-разрядных и меньших слов не представляется воз- можным. Этот режим обработки на машине DAP называется векторным, так как 64-словные векторы могут быть обработаны одновременно. Отображе- ние хранения для этого режима описывается перестановкой Vw (х) для слов длиной 2W (w < 6) : Vw(x) - |, bw+il0,. . ., 0 , bw,. .., bi/bw+6,. . ., bw+l }. Так элементы вектора отображаются по номеру строк г. Обычно в машине DAP производится обработка матриц размером 64 х 64, в которых разряды слова обрабатываются разрядно-последовательным спо- собом. Этот режим называется матричным, и отображение памяти описывает- ся перестановкой Mw (х) для слов длиной 2W: Mw(x) - ^..., bw,..., bi,... ibw* 13,..., bw^^ibWJf(s,, bw+1 у. Следовательно, элементы матрицы вначале отображаются по номеру стро- ки /, а затем по номеру столбца. Это обеспечивает нормальное хранение ос- новного столбца, которое ассоциируется со строками и столбцами Фортран- матрицы. Можно видеть, что преобразование одного режима в другой выполняется посредством серий перестановок типа ’’бабочка”, которые осуществляются с использованием сдвигов с маскированием, выполняемых в аппаратном обеспечении машины DAP [72]. В машине DAP имеется двумерная коммути- рующая сеть ”к ближнему соседу”, которая выполняет сдвиговые перестанов- ки и сдвиговые перестановки с инверсией со строками и столбцами матрицы. Это можно описать с помощью набора перестановок, указанных в разд. 3.2: SDAp4 <412)^6) °(12) ’ aW’/’a(6)’a6(12)a(6)aa2)}- Ниже приводится два разных способа описания этих перестановок, где ли- бо используется номер строки и столбца, либо географически определяется сдвиг, как это принято в языках DAP, т. е. $dap = {. ~ 1'64’ ~ 1164’ х’ + Ч 64, I/ + 1164} > или SDAp = { сдвиг на В, сдвиг на Ю, сам, сдвиг на С, сдвиг на 3 } . Переключатель может пересылать данные со скоростью одного сдвига за тактовый период. По команде аппаратуры производится копирование содер- жимого Q-регистра, и эта команда содержит счет сдвигов, число которых пре- вышает единицу. Поля направлений и геометрий в команде и/или в модифи- каторе определяют направление и геометрию сдвига. Для действий с данными кроме переключателя используются магистрали строк и столбцов. Они могут применяться для выборки строки памяти для 183
хранения в MCU-регистре. Содержимое MCU-регистров может быть селектив- но занесено обратно в память в виде строки или столбца, либо может быть транслировано по всей матрице шириной в строку или столбец. Эта операция может выполняться со скоростью, равной одной выбранной и записанной строке, либо операции транслирования за каждые 2,5 тактовых периода. Это свойство дополняет в дальнейшем набор перестановок, предоставляемый ком- мутирующей сетью. Например, выборка векторной секции объекта при мат- ричном режиме и перестановка данных может быть выполнена с использо- ванием этих магистралей за 2,5 тактовых периода на бит; это незначительно медленнее, чем при операции копирования типа матрица — матрица (2 такто- вых периода на бит). 3.3.5. Система Поскольку машина DAP представляет собой однородную ЭВМ серии 2900 и не является вспомогательной вычислительной машиной для работы с база- ми данных, то ее пользователи имеют в своем распоряжении все системные средства, общедоступные в системе 2900. Отдельные DAP системы так же легко объединяются в систему 2900, как и аппаратура DAP в машину 2900. Вся DAP-программа рассматривается пользователем как часть программы, имеющей все возможности общего программного обеспечения, предусмот- ренные для других языков в системе 2900. В качестве примера рассмотрим типичную прикладную программу. На рис. 3.34 показана общепринятая последовательность этапов заданий. Неко- торые прикладные программы написаны здесь на DAP-Фортране, чтобы ис- пользовать повышенную мощность обработки машины DAP (см. гл. 4). Первый этап обычно представляет собой строку входных файлов для зада- ния. Это осуществляется через периферийные устройства системы 2900 с по- мощью системного файла и библиотек утилит. Следующим этапом будет компиляция, считывание и выполнение задания. Подпрограммы Фортрана об- щей системы и DAP-Фортрана компилируются раздельно, но считываются вместе; сегменты DAP-программы считываются в DAP-память, а сегменты системы 2900 считываются там, где это наиболее удобно. Связь между под- программами DAP-Фортрана и Фортрана общей системы осуществляется че- рез общие блоки COMMON, которые также считываются в DAP-память. Обработка инициируется обычным способом с помощью управления от главной Фортран-программы. Она обычно вызывает системные подпрограм- мы и подпрограммы ввода для создания базы данных задания, которое могло бы включать в себя скромный объем данных для предварительной об- работки в системе 2900. Когда это выполнено, управление передается одной из подпрограмм ввода DAP-Фортрана, которая в свою очередь может вызы- вать другие подпрограммы DAP-Фортрана, выдающие определенные парамет- ры или использующие блоки COMMON как средство связи. Периодически или после завершения работы управление передается обратно системе 2900 для последующей обработки и вывода. И последнее, системные утилиты сно- ва используются для манипулирования и контроля вывода результата задания. В первом выпуске программного обеспечения машины DAP переход уп- равления между системой 2900 и DAP был строго последовательным. В то 184
Рис. 3.34. Управление и потоки данных в DAP-программах время как машина DAP обрабатывала часть одного задания, система 2900 подготавливалась к обработке другого. Однако ожидается, что более позд- ние версии операционной системы и аппаратуры будут обеспечивать одновре- менное выполнение одного задания системой 2900 и машиной DAP. Это по- влечет за собой создание асинхронных механизмов ввода-вывода и даст воз- можность обрабатывать DAP-задания действительно в интерактивном режиме. Язык DAP-Фортран, базовый параллельный язык Фортран, описывается в некоторых подробностях в подразд. 4.4.2. Предусмотрен также язык ассемб- лера машины DAP-APAL, сопрягаемый с языками Фортран и DAP-Фортран. Применение языка APAL дает небольшое преимущество перед применением стандартных подпрограмм системы (являющиеся высоко оптимизированны- ми) на арифметических операциях с плавающей точкой. Однако, если найти алгоритмы, в которых используется разрядный принцип процессорных эле- ментов, то с помощью программирования на уровне ассемблера можно повы- сить производительность сразу на несколько порядков [62]. 3.3.6. Производительность Поскольку машина DAP состоит из разрядно-последовательных ПЭ, вся арифметика должна быть встроена в программное обеспечение. Для нормаль- ного режима обработки матриц, содержащих 4096 элемента, на машине DAP 185
арифметика будет базироваться на последовательностях одиночно-разрядных операций. Это означает, что будет существовать строгая зависимость произво- дительности от длины слова представления данных. Для целочисленной ариф- метики пропорциональность определяется длиной слова и длиной слова в квадрате для операций сложения и умножения соответственно. Для вычисле- ний с плавающей точкой эта пропорциональность маскируется в какой-то мере дополнительными издержками, вызванными действиями с порядком и мантиссой. Тем не менее, в отношении производительности эта зависимость от длины слова проявляется как с хорошей, так и с плохой стороны. Плохой стороной является то, что работа, требующая чрезвычайно большой точности, выполняется на машине DAP довольно медленно; хорошая сторона заключа- ется во взаимодополнении - в некоторых приложениях, требующих только коротких слов, можно достигать сотен миллионов операций в секунду. Однако для большинства задач 32-разрядные вычисления с плавающей точ- кой дают приемлемую точность, поэтому в табл. 3.6 мы привели временные интервалы именно для этой точности. Они взяты из работы [186] и представ- ляют временные интервалы оптимизированных подпрограмм, предусмотрен- ных для арифметических действий/Эти цифры можно также использовать для получения достаточно точных оценок временного интервала прохожде- ния программ, написанных на DAP-Фортране, поскольку в машине DAP при использовании языка высокого уровня издержки минимальны. Это объяс- няется высокой скоростью, с которой машина DAP может выполнять дей- ствия с данными с временным интервалом для разных операций (см. табл. 3.6). Скорость обмена с памятью данных машины DAP примерно в 4 — 6 раз больше, чем у машины CRAY-1. Таблица 3.6. Арифметические подпрограммы машины DAP (32-разрядная точность), X, Y и Z - вещественные (4096 элементов) ; IX, IY и IZ - целые (4096 элементов) ; S - вещественный скаляр. Операция | Время, мкс Скорость обработ- ки, Моп/с Операция Время, мкс Скорость обработ- ки, Моп/с Z<-X 17 241 Z«-X/Y 330 12 z«-x*s 40-130 32-102 Z ч- MAX (X, Y) 33 124 Z <- X * * 2 125 33 Z ч- MOD (Z) 1 4096 Z<-X+ Y 150 27 IZ4-IX+ IY 22 186 Z ч- SQRT (X) 170 24 S ч- SUM (X) 280 175 Z<-X*Y 250 16 S ч- MAX (X) 48 85 Z <- LOG (X) 285 14 Прохождение некоторых из этих арифметических подпрограмм замеря- лось на программах, написанных на DAP-Фортране, для установления меры дополнительных издержек для языка высокого уровня. Эти замеренные вре- менные интервалы приводятся в табл. 3.7. Можно видеть, что диапазон издер- жек составляет менее 10 % для операций с одиночными матрицами (4096 эле- ментов) и увеличивается примерно до 20% для циклов DO, выполняющих- операции с десятью матрицами (40 960 элементов). Цифры отражают эконо- 186
Таблица 3.7. Длительность арифметических операций в DAP-Фортране (32-разряд- ная точность). X, Y и Z - вещественные, S - вещественный скаляр. (Давиые представ- лены Кренджн) Операция 4096 элементов 40 960 элементов Время, мкс Скорость, Мфлоп/с Время, мкс Скорость, Мфлоп/с Z <- Х+ Y 152 27 1848 22 Z - X* Y 272 15 3048 13 Z- X * S1 112-200 20-37 1368-2272 18-20 Z <- Х**2 152 27 1816 23 Z «- SORT (X) 192 21 2208 19 7. X/Y 376 П 4080 10 1 Используются значения S = 2 и S = е для минимальных н типичных значений соот- ветственно. мию, которую можно получить от использования языка ассемблера и подпро- грамм арифметики системы. Гораздо большую экономию можно получить, если использовать алгорит- мы разрядного уровня. Примеры этого иллюстрируются в табл. 3.6, где неко- торые операции дают, казалось бы, противоречивые скорости выполнения операций. Вероятно, наиболее эффективной является операция суммирова- ния матриц из 4096 элементов. Можно было бы ожидать, что для получения результата потребуется примерно 12 операций сложения с плавающей точкой (log24096 = 12), одИако требуется менее двух! Другими примерами являют- ся операции вычисления квадратного корня и логарифма, где производится большое число умножений с плавающей точкой при итерационном выполне- нии. Некоторые алгоритмы, применяемые для этих функций, описываются в работах [73,87]. Чтобы провести сравнение первого порядка между машинами, рассматри- ваемыми в гл. 2 и 3, мы выбрали ряд примеров, по которым можно провести сравнение временных интервалов. Для машины DAP они приводятся в табл. 3.8. Все цифры даются только для 32-разрядных операций с плавающей точ- кой. Таблица 3.8. Сравнительные параметры для различных вычислений иа машине DAP Операция Время, мкс Скорость, Мфлоп/с Перемножение матриц 64 X 64 30 17 Обращение (полный переворот) матриц 64 X 64 52 17 Ы1Ф 4096 комплексных чисел 15 15 Решение уравнения Пуассона для сетки 128 X 128 14 48* * Используется 33-разрядное представление целочисленного теоретико-числового пре- образования. 187
Вероятно, наиболее характерные цифры относятся к обращению матриц и решению уравнения Пуассона. Хотя программа обращения матриц, исполь- зуемая для этого примера, осуществляет полный переворот, уменьшение про- изводительности, наблюдаемое у машины DAP, является минимальным. Ре- шение уравнения Пуассона представляет интерес, поскольку в данной про- грамме используется теоретико-числовое преобразование, которое позволяет оптимизировать аппаратное обеспечение DAP. Следует отметить, что числа, представленные в табл. 3.8, наполовину составляют издержки, возникающие при манипулировании данными. Для более крупных сеток эти издержки со- кращаются, например, для сетки 643 можно было бы достичь быстродей- ствия примерно в 100Моп/с. 3.3.7. Структурное описание машины DAP Применив структурную нотацию, представленную в подразд. 1.2.4, мы мо- жем описать машину DAP с помощью следующих выражений: C(2900 + DAP) =1р[{Р1,Р2} х {рМ1,<?М2} ], Pl = Р (командный процессор программ), Р2 = Р (контроллер доступа к памяти), М1 = М (обыкновенная память), M2(DAP) =I[642{ В!-М }1/’пп . 3.4. МАШИНА BSP ФИРМЫ BURROUGHS 3.4.1. Обзор проекта и технологии Процессор для научных исследований фирмы Burroughs (BSP) целиком базировался на опыте, который фирма приобрела, будучи основным подряд- чиком проекта ILLIAC IV. На этот раз фирма сделала свой проект, который, несмотря на схожесть с ILLIAC IV, должен устранить основные узкие места, имевшиеся у его предшественника [125]. На первый взгляд проект BSP не кажется амбициозным. По сравнению с возможным быстродействием машины ILLIAC IV, равным 80—100 Мфлоп/с, быстродействие машины BSP может достигать только 50 Мфлоп/с. Это обес- печивается с помощью 16 процессоров, которые примерно в два раза мощ- нее, чем один из 64 процессоров ILLIAC. Однако при более внимательном рассмотрении мы находим, что тогда как в машине ILLIAC удается поддер- живать производительность, равную четверти максимальной, в тщательно сконструированной машине BSP можно поддерживать высокий процент своей максимальной производительности. Фактически основы проекта BSP долж- ны были обеспечить создание машины с использованием стандартной техно- логии, для которой программирование осуществлялось бы исключительно на языке высокого уровня и которая могла бы постоянно поддерживать производительность на уровне 20 — 40 Мфлоп/с. Одна из основных проблем, решенных фирмой Burroughs, состояла в под- держании большой базы данных ЭВМ, которая соответствовала бы произво- дительности процессорной матрицы. Это было очень серьезным ограниченн- ее
ем для машины ILLIAC IV, в которой имелось запоминающее устройство с произвольной выборкой ЗУПВ емкостью только 128 кслов, поддерживае- мое большой и ненадежной дисковой памятью [70]. В противоположность этому в машине BSP имелось ЗУПВ емкостью 1 — 8 Мелов, поддерживаемое быстрой электронной файловой памятью. Несмотря на небольшие размеры, фирма Burroughs организовала центральную память BSP так, что к многим регулярным поднаборам матрицы стало возможным параллельное обраще- ние без конфликта. Другие уроки, которые фирма Burroughs извлекла из своего опыта с ма- шиной ILLIAC IV, относятся к организации управляющего процессора — еще одно слабое место в проекте ILLIAC IV. Тогда как машина ILLIAC IV имела буферную память с малой емкостью и ограниченную мощность обработки, в машине BSP предусмотрена память емкостью 256 кслов для программ и дан- ных и более сложный скалярный процессор в дополнение к управляющему процессору. Вероятно, последний извлеченный урок — очень высокая стоимость кон- струкции ILLIAC IV [67]. Стремление к использованию в проекте и кон- струкции компьютера ILLIAC IV самой совершенной технологии сделало ее очень дорогой, ненадежной и очень трудной в эксплуатации. Машина BSP спроектирована на базе более скромной технологии (по сегодняшним стан- дартам) , которая обеспечивает большую эффективность проекта. Логическое устройство BSP построено на ЭСЛ-схемах, которые применя- ются и в других производственных машинах фирмы Burroughs. Одна четы- рехслойная печатная плата содержит примерно 200 кристаллов и устанавли- вается в раму с водяным охлаждением, называемую островом. 30 островов в трех ярусах составляют стойку с приблизительными размерами 1,5 х 0,76 х х 1,8 м. Все логическое устройство, за исключением запоминающих уст- ройств, находится в шести таких стойках, и общее число кристаллов дости- гает приблизительно 36 000. Центральное и файловое устройства памяти вы- полнены на статических МОП-кристаллах емкостью 4 кбит и ПЗС-кристаллах емкостью 64 кбит. В зависимости от конфигурации память BSP занимает площадь 31,22 — 70,89 м2. Стоимость ее будет свыше 5 млн. дол., включая стоимость главной вычислительной системы. 3.4.2. Архитектура Подробности BSP, описанные здесь, взяты из литературы [10, 32 - 35]. Однако, поскольку к 1980 г. первые экземпляры машины BSP были изго- товлены и проверены, можно считать, что не ожидается никаких существен- ных изменений в производственных образцах. На рис. 3.35 показана общая структурная схема системы BSP. Можно видеть, что она отображает типич- ную ситуацию типа ’’периферийный процессор — процессор баз данных”, ко- торую можно обнаружить во многих суперкомпьютерных системах. Перифе- рийная машина, или управляющий системой, согласно терминологии фирмы Burroughs, состоит из одного или нескольких центральных процессоров (ЦП), жестко связанных с процессорами ввода-вывода (ПВВ). Типичная установка может иметь, например, машину В7811 (один ЦП и один ПВВ) или машину с двойной конфигурацией В7821 (два ЦП и два ПВВ). В последнем 189
Терминалы и периферийные устройства Центральный процессор 1 Процессор ввода-вывода 1/4 Мслов/с 112 бит/160 нс Контроллер файловой памяти 12,5 Мслов/с ПЗС-файловая память 8—64 Мслова | Центральный | I процессор 2 I । Процессор । (ввода-вывода 2 I Устройство управления и память (256 К) Матрица арифметических устройств и 87811 или В7821 Управляющий системой BSP память (1—8 Мелов) Рис. 3.35. Взаимодействие BSP с главной машиной В7800 случае оба процессора ввода-вывода сопрягаются с BSP, хотя только один бу- дет активным в определенное время. Второй интерфейс предусматривается для переконфигурирования системы в случае использования ее в качестве вспомогательной. Интерфейс между управляющим системой и машиной BSP обеспечивается через две магистрали данных: медленную и быструю. Медленная магистраль (500 кбайт/с) осуществляет сопряжение процессора ввод-вывода непосред- ственно с устройством управления BSP и используется для передачи сообще- ний и управления между двумя системами. Вторая (быстрая) магистраль данных (1/4 Мслов/с) обеспечивает сопряжение процессора ввода-вывода с контроллером файловой памяти и используется для передачи программ и файлов данных для обработки на машине BSP. Следовательно, файловая па- мять представляет собой буферный интерфейс между основной и вспомога- тельной системами для широкополосной связи. Файловая память представляет единственную область, в которой фирма Burroughs отошла от политики применения испытанной и проверенной тех- нологии. Практически она была первой, объявившей об использовании тех- нологии приборов с зарядовой связью (ПЗС) для создания массовой файло- вой памяти (384 Мбайт). ПЗС-устройства представляют собой твердотельные сдвиговые регистры, в которых данные хранятся в виде заряда МОП-конден- саторов. Поскольку в них предусмотрен последовательный доступ, то при выборке данных они имеют время ожидания, характерное для циклической памяти. Фактически для восстановления заряда необходимо, чтобы данные в ПЗС-устройствах постоянно циркулировали. Однако ПЗС-память гораздо предпочтительнее памяти на дисках. Время доступа ПЗС-памяти составляет примерно 0,5 мс по сравнению с 10 — 5 0 мс у самых совершенных накопите- лей на магнитных дисках (НМД). Кроме того, можно достигать очень высо- 190
ких скоростей передачи путем параллельной работы с многими устройства- ми. В системах с НМД это очень дорого и трудно в виду наличия перемеща- ющихся частей. Работу твердотельных устройств можно синхронизировать с помощью датчика времени для получения идеальной синхронизации и, следо- вательно, очень высокой скорости обмена. Файловая память для машины BSP изготавливается фирмой Fairchild Semiconductor с использованием 64- 103-разрядного ПЗС-кристалла, раз- работанного этой фирмой. Память содержит до 64 Мелов с инкрементом по 4 Мслова. Каждые 160 нс можно осуществлять обращение к двум словам (каждое слово состоит из 48 разрядов плюс 8 разрядов на код с обнаруже- нием ошибок), при среднем времени выборки 660 мкс. Это обеспечивает максимальную скорость передачи 12,5 Мслов/с, которая составляет одну восьмую скорости обмена с памятью матрицы. При построении такой большой памяти была подмечена одна неожиданная деталь — увеличение вероятности разрушения данных, возможно, обуслов- ленное бомбардировкой альфа-частиц [10]. Это явление устраняется исполь- зованием кодов с исправлением одиночной ошибки й с обнаружением двой- ной ошибки (SECDED). Было установлено, что неэффективно проверять и корректировать данные только при обращении (общепринятая практика в других устройствах памяти). Так как ПЗС-устройства требуют периодичес- кого обновления для восстановления заряда, то для поддержания мощности вычислений SECDED-логика была встроена в эту цепь перезаписи, которая синхронизируется с частотой, равной одной четверти частоты обращения (3,1 МГц). Файловая память является одним из трех основных компонентов машины BSP. Два других компонента — управляющий процессор и процессорная мат- рица — иллюстрируются на рис. 3.36 и описываются далее. Управляющий процессор. Управляющий процессор машины BSP содержит четыре асинхронных блока, распределяющих между собой управление матри- цей, график прохождения заданий, управление вводом-выводом и файловой памятью, устранение ошибок и, последнее, связь команд между управляю- щим системой и машиной BSP. Управляющий процессор содержит МОП-память емкостью 256 кслов и временем цикла 160 нс. В этой памяти размещаются как скалярные, так и векторные команды, а также скалярные данные. С файловой памятью она со- единяется магистралью данных, которая может работать с полной пропуск- ной способностью 12,5 Мслов/с. Блок управления матрицей может записы- вать массив данных обратно непосредственно в память управляющего про- цессора, но предварительно данные команд проходят обработку в скаляр- ном процессоре. Блок скалярной обработки представляет собой обычный регистр-ориенти- рованный процессор, который посредством идентичной аппаратуры обраба- тывает то, что находится в 16 арифметических устройствах матрицы (АУМ). Однако он отличается от АУМ тем, что имеет свой процессор команд, кото- рый считывает и декодирует команды, хранящиеся в памяти управляющего процессора. Скалярный процессор содержит 16 48-разрядных универсальных регист- ров с циклом синхронизации 80 нс. Он выполняет как цифровые, так и не- 191
Рис. 3.36. Структурная схема управляющего процессора и матричной секции. Машины BSP с указанием магистралей данных цифровые операции, а также арифметические действия с плавающей точкой с максимальной скоростью в 1,5 Мфлоп/с. Одна из основных задач скалярно- го процессора - предварительная обработка векторных команд. Она включа- ется в себя оптимизацию, профилактическую проверку риска искажения век- торов и вставку различных полей данных в формат векторных команд. Для этих операций используются 16 120-разрядных буферов векторных данных, каждый из которых может содержать дескриптор векторных команд. Выпол- ненные команды передаются в устройство управления матрицей, которое ор- ганизует очередность команд, окончательно декодирует и транслирует микро- программное управление в матричную секцию машины BSP. Устройство обслуживания и управления, как можно видеть из рис. 3.36, обеспечивает интерфейс между управляющей системой и остальными частями управляющего процессора. Он связан с процессором ввода-вывода управля- ющего системы и обеспечивает инициализацию и обслуживание. Устройство управления и обслуживания получает команды и данные от управляющего системой. Следует отметить, что управляющий процессор полностью совмещен с мат- ричной секцией машины BSP. После инициализации очередь команд в блоке управления матрицей должна надежно и постоянно поддерживать обработку 192
в матричной секции. Скалярный процессор может независимо производить обработку скалярных команд и предварительную обработку векторных команд. Такой подход был впервые применен в проекте ILLIAC IV, где для совмещения операций потребовалась тщательная кодировка на языке ассемб- лера. Здесь же скалярный процессор и аппаратура блока управления матри- цей обеспечивают необходимую оптимизацию времени прогона. Конвейер матрицы. Матричная секция машины BSP содержит четыре бло- ка, которые циклически формируют пятиэлементный конвейер. Этот конвей- ер выполняет следующие действия: а) считывание операндов из параллельной памяти; б) выравнивание данных операндов в соответствии с требованиями ариф- метических устройств; в) выполнение операции; г) выравнивание данных результатов в соответствии с требованиями бан- ков памяти; д) занесение результатов в параллельную память. Эти операции совмещаются с последующими наборами из 16 элементов, вы- бираемыми векторными командами, которые обрабатываются устройством управления матрицей. Число тактовых периодов (длительностью 160 нс), не- обходимое для каждой из этих задач, зависит от числа операндов и выполня- емых операций. Совмещение в этом конвейере контролируется посредством шаблонов, в которых указывается степень совмещения для этих задач. Обра- ботка шаблонов и векторных команд описывается в подразд. 3.4.3. Следует указать, что хотя матричная секция и является конвейерной в ма- кроскопическом смысле, сами элементы не являются конвейерными. Ариф- метические устройства фактически универсальны и управляются одиночной вещательной микрокомандной последовательностью. Управляющее слово имеет ширину более 100 разрядов и обеспечивает прямой доступ к примитив- ным функциям АУ, которые кроме операций с плавающей точкой имеют об- ширный набор операций для действий с полями и редактирования. Они вклю- чают в себя специальные операции преобразования формата Фортрана. Операции сложения и умножения с плавающей точкой, требующие два так- товых периода по 160 нс, выполняются с максимальной скоростью обработ- ки одного АУ, равной в З^Мфлоп/с. Следовательно, матрица из 16 таких АУ обеспечивает пиковую скорость 50 Мфлоп/с, как отмечалось ранее. Обе опе- рации, вычисление квадратного корня и деление с плавающей точкой, реали- зуются посредством итерации Ньютона — Рафсона с использованием постоян- ных запоминающих устройств (ПЗУ), которые обеспечивают аппроксимацию первого порядка. Применяемое в машине BSP 48-разрядное слово (исторически сложилось) содержит 36 разрядов мантиссы, обеспечивающей точность до 10 — 11 деся- тичных цифр. 11-разрядный двоичный порядок дает диапазон чисел ±1О±307. Используемые аккумуляторы и регистры двойной длины позволяют аппарат- но реализовать арифметические действия с двойной точностью. Параллельная память в матричной секции BSP содержит 17 банков памяти с временем цикла 160 нс; 17 — это следующее старшее простое число, кото- рое больше 16 (числа процессоров). Такая структура при подключении к полностью связанным сетям обеспечивает бесконфликтный доступ ко всем 7 Зак. 1799 193
линейным векторам при условии, что инкремент между элементами в памяти не является кратным простому числу 17. Этот метод доступа описывался в подразд. 3.1.3. Связанные сети, применяемые в машине BSP, представляют собой полные координатные переключатели с логикой обнаружения и исправления оши- бок. Эти переключатели также имеют время цикла 160 нс. Любому приемни- ку BSP с большим числом процессоров и с памятью большей емкостью (на- пример, 64 и 67, 128 и 131), вероятно, будут необходимы многокаскадные сети по экономическим причинам. Векторные команды, обработанные блоком управления матрицей, могут содержать 1—4 операций (1—5 наборов операндов), выдавая одиночный векторный или скалярный результат. Применение таких команд высокого уровня способствует улучшению оптимизации использования аппаратуры не только на уровне регистров, но и на соответствующих шаблонах с целью мак- симизации совмещения в конвейере. Можно видеть, что полный баланс ис- пользования элементов конвейера достигается в случае триадических опера- ций, например А = В оп. С оп. ti. Здесь четыре обращения к памяти с временем по 160 нс и две операции (+, — или *) могут быть полностью совмещены за 320 нс. Однако сети маршрути- зации ввода и вывода обладают резервом времени: используются только три и один из четырех циклов соответственно. 3.4.3. Обработка команд Как было видно в предыдущем подразделе, управление и работа матрич- ной секции машины BSP на самом деле очень сложна. Теперь мы попытаем- ся уяснить и точно понять, как машина BSP координирует и обрабатывает команды. Это понимание не является необходимым для эффективного программи- рования на BSP, так как машина представляет собой процессор языка высо- кого уровня (Фортран), который обеспечивает оптимизацию и преобразова- ние программы пользователя за время прогона. Для этой цели необходимо, чтобы сложный управляющий процессор поддерживал высокую загрузку се- ти конвейера, т. е. обеспечивал: а) выборку операндов; б) выравнивание операндов; в) выполнение операции; г) выравнивание результатов; д) зане- сение результатов. С точки зрения языка Фортран наиболее оптимальной конструкцией для использования многочисленных арифметических устройств является вложен- ный набор циклов DO. Фактически векторные операции машины BSP базиру- ются на одном или двух вложенных циклах DO. Однако большинство циклов DO содержит некоторое рабочее разложение параметров, вследствие чего вы- сокоуровневый дескрипторный формат BSP для векторных операций может также содержать рабочие параметры. Эти машинные команды принимают форму векторных операций типа па- мять — память, где операнды представляют собой одно- или двумерные мас- сивы произвольной длины (тома). Одна команда может содержать до четы- 194
рех различных операторов и до пяти различных операндов. Например, про- грамма на Фортране по 10 I=2>N-1 DO 10 J=2,N-1 10 NEWD(I,J) = (B(I-lr J)+B(I>J-l)+B(b J+l)+B(I+l,J))/4.0 компилируется, как правило, в одну высокоуровневую BSP-команду. В зави- симости от рабочей переменной N эта команда генерирует последователь- ность управляющих сигналов для каждого набора из 16 элементов. Эти сиг- налы управляют памятью, обеими сетями ориентации и арифметическими устройствами. Более того, управляющие сигналы согласуются по времени с целью оптимизации совмещения в конвейере матричной секции. Кроме одноместных, диадических, тетрадных и пентадных операций, преду- смотренных в наборе BSP-команд, существует также ряд форм специальных векторных команд, из которых наиболее важными являются следующие: Векторно-скалярные операции Приведение с одиночной точностью Приведение с двойной точностью Последовательность Сжатие Расширение Слияние Произвольная выборка Произвольное занесение Скалярное произведение Рекурсия (полная) Рекурсия (последняя) Пересылка данных А *- В on S S <-А1 + Л2 + А3 +... +Ап Так же как и предыдущее, но толь- ко все с двойной точностью А{ <~Ai + А3 + ... +А{ А В (под булевым управлением) А *- В (под булевым управлением) А *- В или С (под булевым управле- нием) А«-В(1) А(1)<В S Л j *В\ + А2 *Bi + ... + Ап *Вп Ai^CifAj <-Ai_1*BJ- + Cj Последний член в вышеуказанной последовательности Память управления < — > парал- лельная память Формат BSP-команд, изображенный на рис. 3.37, включает в себя поля дли- ны цикла, тип команд и используемые операции, дескрипторы для каждого операнда и результата. Дополнительно могут быть также специфицированы булевы векторы для операндов и результатов. Проиллюстрируем поток уп- равления при обработке этой команды, выполняющей матричное умножение, на примере рис. 3.37. Во-первых, следует обратить внимание на то, что код специфицирует трой- ной вложенный цикл DO. Следовательно, эта команда размещается внутри никла в скалярном коде и после обработки в скалярном процессоре будет генерировать 32 копии этой команды с записанными в параметрической фор- ме исходными полями. Эти поля будут устанавливаться скалярным процес- сором до тех пор, пока сама команда будет располагаться в 120-разрядных буферах векторных данных. После того как команда собрана полностью, она передается в блок управления матрицей для дальнейшей обработки и выпол- нения. Этот блок, по существу, представляет собой конвейер, который про- веряет входные команды и переводит их в управляющие сигналы. 7* 195
DO 10 К = 1, 32 DO 10 J = 1, 128 DO 10 I = 1, 64 10 C(l, J) = C(l, J) + A( I, K) • В (K, J) Длина и тип векторной < команды Внутренняя длина 64 Внешняя длина 128 Триадический тип Операции + Ж Флажки Синхронизация Повтор для К = 1,32 Базовый адрес Размер Начало Внутренний пропуск Внешний пропуск А 2048 (/С-1)*- 64 1 0 Дескрипторы трех операндов В 4096 /С- 1 0 32 С 8192 0 1 64 Дескриптор результата с 8192 0 1 • 64 Рис. 3.37. Формат высокоуровневого машинного языка BSP и векторных дискрипторов: программа на Фортране (вверху); векторная BSP-форма (внизу) На первой ступени этого конвейера собирается последовательность из дес- крипторов, выдаваемых скалярным блоком обработки в одиночное общее описание операций. Определяется также любая зависимость между последо- вательными векторными командами. После завершения этой обработки ре- зультирующий пакет устанавливается в очередь, называемую памятью шаблон- ных дескрипторов, где он ожидает своего выполнения. Описание операций на этой стадии все еще находится на программно-матричном уровне. Оно тран- слируется на операции с наборами из 16 элементов только на последней сту- пени обработки команды. Эта операция выполняется блоком управления шаблонами, который выбирает для операции соответствующую последова- тельность микрокоманд, повторяет циклически процедуру после декремента и инкремента адресов и подсчитывает число циклов. Для любого заданного типа команд существуют различные микрокоманд- ою управляющие последовательности, которые хранятся в ПЗУ и называют- ся шаблонами. Процессор управления шаблонами выбирает оптимальный шаблон на каждой ступени выполнения команды. Эти управляющие сигналы также называются шаблонами, так как они устанавливают области в кон- вейерно-временном пространстве матрицы, которые наилучшим образом от- вечают требованию максимального использования конвейера. 196
Такт Выборка (запись) Маршрут Оп. Маршрут Запись (выборка) А*В А* В C+R OR 1 Выборка А I Г 2 Выборка В А 3 Выборка С В 4 | С 5 6 7 в Запись С Рис. 3.38. Два шаблона для выполнения операции С=С+А*Вна машине BSP. Эти ша- блоны показывают тактовые периоды, которые требуются в BSP-конвейере. Выборка и запись производятся в одну память и поэтому не могут быть совмещены, следователь- но, требуется второй шаблон, который резервирует цикл памяти для предыдущего шаб- лона На рис. 3.38 приведены два шаблона, которые можно применить для вы- полнения команды нашего примера (рис. 3.37). Они определяют необходи- мое число циклов для каждой секции конвейера и зависимость на совмеще- ние этих циклов. Вследствие того, что конвейер формирует кольцевую сеть, а память используется как для выборки, так и для записи, должны быть сде- ланы некоторые ограничения, которые показаны штриховыми линиями. Эти области нельзя совмещать. Второй шаблон (см. рис. 3.38) соответствует ин- тервалу между выборкой А и В; он предназначен для снятия ограничения, накладываемого выполнением предыдущего шаблона. Возвращаясь к нашему примеру, можем увидеть, как блок управления шаблонами выбирает соответствующий шаблон и осуществляет приращение адресов. Это показано на рис. 3.39. Мы предполагаем, что первый шаблон за- пускает конвейер. Поэтому узел управления выберет первый из двух шабло- нов, показанных на рис. 3.38, поскольку он минимизирует число необходи- мых тактов. Вследствие отсутствия каких-либо ограничений для выборки следующего набора из 16 операндов этот же шаблон используется во второй 197
5(1,1) А 0(17:52,1) В А(55:46,1) Такт Выборка Маршрут Оп. Маршрут Запись 1 А(1:16,1) | 2 5 (1,1) А 3 С(1:16,1) В 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 С 5(1,2) С(1:16,2) * * 0(49:64,1) А (1:16,1) ' 5(1,1) С (53:48,1) А(49:64,1) В С в с Рис. 3.39. Пример совмещения шаблона. Выполняется операция перемножения матриц (см. также рис. 3.37 и 3.38) раз. Отметим, что здесь арифметическое устройство является критическим. Все последующие шаблоны относятся ко второй разновидности, которая учи- тывает ограничение, накладываемое циклом записи. Можно видеть, что с это- го момента используются все циклы памяти и АУ. На рис. 3.39 также иллюстрируются проектные ограничения на совмеще- ние ввода данных в память и вывода их из памяти. Можно увидеть, что хотя используются все циклы памяти и АУ, обе сети маршрутизации находятся в рабочем состоянии. Для каждого цикла памяти используется только один цикл, но операции маршрутизации и памяти не могут быть совмещенны- ми вследствие того, что маршрутизация представляет собой операцию, кото- рая выполняется после выборки из памяти и является предварительной пе- ред операцией занесения в память. Следовательно, требуются две коммутиру- ющие сети и они обе всегда находятся в работе, предоставляя управляющему блоку для совмещения только циклы памяти и арифметического устройства. Чтобы завершить этот раздел, рассмотрим, что происходит между коман- дами, так как это очень важно для производительности машины BSP на ко- ротких векторах. Предположим, что после программы примера матричного умножения следует следующий цикл: DO 20 1-1,200 20 D(I)=E(])*F(I> 198
Выборка Маршрут On. Маршрут Запись 199
Матричное управляющее устройство BSP будет выяснять, существуют ли какие-либо последующие зависимости между последовательными команда- ми и если отсутствует риск для вектора, то он произведет совмещение этих команд. Для нашего примера это показано на рис. 3.40. Можно видеть, что при выполнении этой векторной команды ограничением является память и что во время совмещения, когда используются два шаблона, показанные на рис. 3.41, заняты все циклы памяти. Аналогично этому, если бы преобладала работа АУ, то для оптимизации использовались бы все его циклы. 3.4.4. Обнаружение и исправление ошибок Блок контроля и техобслуживания в управляющем процессоре имеет за- дание на обнаружение ошибок в машине BSP. Он получает информацию от са- моконтролирующейся аппаратуры и передает ее управляющему системой для регистрации и принятия любого исправляющего действия. Однако машина BSP будет пытаться избавиться от большинства отказов, прежде чем ей потребуется помощь управляющего системы. Она необходима только в случае тяжелых ошибок, которые нельзя исправить или которые продолжают существовать при повторной попытке выполнения команды. Ко- гда это имеет место, программное обеспечение техобслуживания работает на управляющего системы, который благодаря блоку управления техобслужи- ванием проверяет многочисленные магистрали данных и регистры, осуще- ствляет диагностику состояний и схем. К легким ошибкам относятся такие, которые автоматически обнаружива- ются и исправляются. Для их устранения встраивается защита во все устрой- ства памяти BSP-системы. Защита трех основных устройств памяти — файло- вой, управляющих разрядов и параллельной — осуществляется посредством введения кодов Хэмминга в каждые 48 разрядов данных. При этом обеспе- чивается исправление одноразрядной и обнаружение двухразрядной ошибки (SECDED). Как уже отмечалось, файловая память строится на основе энерго- зависимой технологии (ПЗС) и поэтому в ней должна постоянно осущест- вляться циркуляция данных. Вследствие этого логика исправления ошибок SECDED встроена в эту циркулирующую сеть. В других запоминающих уст- ройствах посредством кода Хэмминга контролируется только обращение к данным. Свойства невосприимчивости к ошибкам в BSP-управляющем процессоре включают в себя серьезный рабочий контроль ошибок, который обычно осу- ществляется программным обеспечением. Результатом многих обнару- женных ошибок является автоматическая повторная попытка выполнения команды. В сжатой форме это отражено на рис. 3.42. В арифметических устройствах (и скалярном процессоре) автоматический контроль АЛУ осуществляется с помощью остаточной арифметики по моду- лю 3. На рис. 3.43 показано, как генерируются и контролируются коды Хэм- минга и коды по модулю 3. Любое обнаружение арифметической ошибки по модулю 3 дает сигнал устройству управления матрицей, который автомати- чески делает повторную попытку выполнения команды. Устройство управле- ния контролирует выполнение команды по шаблонам, поэтому оно точно знает, где произошел сбой. При обнаружении сбоя вся векторная команда 200
Рис. 3.42. Краткое описание профилактического обнаружения ошибок, выполняемого устройством управления машины BSP Рис. 3.43. Краткое описание профилактического обнаружения ошибок, осуществляемо- го в матричной секции BSP 201
выполняется вновь. Запись в память будет запрещена до тех пор, пока шаб- лон сбоя не будет повторно выполнен. Фирма Burroughs утверждает, что такая комбинация обнаружения и ис- правления ошибок приводит к тому, что среднее время наработки на отказ равняется примерно 22 — 40 ч в зависимости от емкости конфигурируемой памяти. Кроме того, регистрация ошибок и программное обеспечение техоб- служивания сокращают среднее время на ремонт до 2 — 4 ч. Эти цифры явля- ются впечатляющими для машины такого типа (до 4 • 109 бит хранимой ин- формации). 3.4.5. Система Подход фирмы Burroughs, ориентированный на создание процессоров с ис- пользованием языка высокого уровня, нашел свое отражение в проекте BSP, где программирование осуществляется целиком на Фортране. Векторизую- щий кросскомпилятор устанавливается на ’’управляющем” системой В7800. В этом компиляторе предусмотрено также множество полезных параллель- ных конструкций. Более полно они разбираются в подразд. 4.5.1. ’’Управляющий” системы можно использовать в интерактивном режиме для всех операций исходного редактирования на Фортране и компиляции. Здесь также можно производить манипуляции с входными и выходными файлами с помощью функций файловых утилит. После того как программа и файлы данных обработаны, устанавливается график прохождения BSP-задания в па- кетном режиме. Программа и файлы данных будут передаваться в файловую память BSP для ожидания выполнения. Далее производится запуск BSP-за- дания, которое обычно прогоняется до полного завершения. Имеются сред- ства для возвращения задания обратно в файловую память, но они обычно используются только для обеспечения аварийного смещения с целью прого- на высокоприоритетных заданий. Фирма Burroughs называет этот режим монопрограммирования вычисли- тельной оболочкой. Это означает, что задания проходя предварительную и последующую стадии по отношению к памяти, и находясь в памяти, обычно содержат только одно ядро в BSP для полного выполнения. Таким образом, для поддержания полной загрузки BSP в любое время в файловой памяти должен находиться ряд BSP-программ и их файлы данных. Другой характерной чертой режима монопрограммирования является то, что программы должны использовать асинхронный ввод-вывод для совмеще- ния своих собственных задержек ввода-вывода. Асинхронные средства вво- да-вывода устанавливаются с использованием языка BSP-Фортран. При ско- рости передачи из файловой памяти немногим более десятой части скорости обмена с основной памятью задержки ввода-вывода не будут сказываться на времени прогона задания на BSP. Таким образом, фирма Burroughs надеется поддерживать эффективное использование BSP без дополнительных систем- ных издержек. Управление машинами В7800 и BSP осуществляется посредством алголо- подобного управляющего языка. Этот язык потока операций (WFL) приме- нялся фирмой Burroughs на протяжении многих лет. Сейчас он включает в себя различные варианты для компиляции BSP-программ, загрузки и раз- 202
Рис. 3.44. Управление и потоки данных в типовой BSP-программе грузки файловой памяти и прогона заданий на машине BSP. Общий поток информации при прогоне заданий на машине BSP иллюстрируется рис. 3.44. Следует отметить, хотя подготовка программ может выполняться интерак- тивно, работа BSP-заданий осуществляется в пакетном режиме. Это соответ- ствует концепции вычислительной оболочки, принятой фирмой Burroughs для своего научного процессора. 3.4.6. Производительность Вся концепция проекта BSP заключается в постоянном поддержании высо- кой производительности без прерываний от устройства ввода-вывода и систе- мы. Если рассматривать производительность BSP без учета этого, то цифры могут сбить с толку. Фирма Burroughs не гналась за большой производи- тельностью, которая не могла бы быть обеспечена; она спроектировала ЭВМ, в которой постоянно может поддерживаться производительность на уровне 50 — 100 % максимальной. И это достигается несмотря на то, что программи- рование производится исключительно на Фортране. Время выполнения основных операций арифметическими устройствами машины BSP приводится в табл. 3.9. Здесь следует отметить, что издержки, связанные с этими операциями (например, операциями с памятью и выравни- ванием данных), до некоторой степени совмещены. Поэтому приведенные цифры отражают поддерживаемую в ЭВМ производительность. В качестве примера укажем, что для операций +, — и * машина BSP может производить 203
Таблица 3.9. Операции иа машине BSP Операция Время для 16 опера- ции, нс Скорость выполнения диадических операций, Мфлоп/с Скорость выполнения триадических операций, Мфлоп/с + 320 33 50 — 320 33 50 * 320 33 50 4- 1280 12,5 12,5 2080 7,7 7,7 вычисления типа память — память для триадических операций с постоянной скоростью 50 Мфлоп/с. Для диадических операций, при которых ограничи- ваются параметры памяти, возможна постоянная скорость 33 Мфлоп/с. Поскольку издержки совмещаются в конвейере, с векторными операци- ями ассоциируется отсутствие или очень малое время запуска. Объяснение этому явлению лежит в способности машины BSP к совмещению даже разно- родных операций. Это можно проиллюстрировать с помощью рис. 3.45 и 3.46, где показаны временные интервалы векторных операций различной длины. На рис. 3.45 приведена зависимость для конвейера, который искус- ственно очищался др и после одиночной векторной операции. Можно видеть, что «1/2, равное 150, обусловлено временем запуска, что согласуется с време- нем работы конвейера кольцевой сети. Однако при обычном использовании последующие векторные операции совмещаются с помощью шаблонных дес- крипторов. Этот эффект отображен на рис. 3.46, откуда можно видеть, что значение «1/2 уменьшилось до 25. Приведенные цифры взяты из результатов хронометрирования на лос-ала- мосском тесте векторных процессоров, который состоит из векторных Рис. 3.45. Временные интервалы вектор- ных операций машины BSP для одиноч- ной векторной команды с конвейером, обнуляемым до и после выполнения операции; = 150, = 50 Мфлоп/с (временные значения воспроизводятся с разрешения фирмы Burroughs) Рис. 3.46. Временные интервалы век- торных операций машины BSP (стабиль- ное состояние с совмещением последу- ющих векторных операций); п^2 = 25, = 48 Мфлоп/с (временное значения воспроизводятся с разрешения фирмы Burroughs) 204
команд для многочисленных операций. Чтобы показать, на какие малые зна- чения снижается производительность, рассмотрим числа для некоторых при- ложений, представленных, в табл. 3.10. Скорость перемножения матриц 64 х х 64 достигает почти 100 %-ной максимальной производительности в машине BSP, так же как и в машине CRAY-1. Однако следует отметить, что это число соответствует времени прогона Фортран-программы. Производительность ма- шины CRAY-1 даже при хорошо составленной Фортран-программе снижается в 5 раз, а если программа не векторизуема (алгоритм внутреннего произве- дения) , то в 50 раз. На машине BSP все разумно составленные Фортран-про- граммы дают, как правило, число, указанное в таблице, поскольку оптими- зация (включая переформирование цикла) осуществляется с использовани- ем аппаратуры управления. Таблица 3.10. Сравнительные параметры для различных вычислений на машине BSP Операция Время, мс Скорость вычислений, Мфлоп/с Перемножение матриц 64 X 64 12,1 43 Обращение матриц 64 X 64 109 6,4 БПФ 4096 комплексных чисел 9,1 26,9 Решение уравнения Пуассона для сетки 128 X 128 4,77* 33,8 Время на итерацию по SOR-методу. Другие приложения, показанные в табл. 3.10, также отражают высокую максимальную производительность машины BSP. 3.4.7. Структурное описание машины BSP На основании структурной нотации из подразд 1.2.4 мы можем описать машину BSP следующими выражениями: С (BSP) = С (В7800) [Pl, Cl - М (файловая память)] - С2 Pl = Р (Процессор контроля и техобслуживания) С1 =1[Р-М] С2 = 1р[16Р — {х (координатный переключатель) х >,< х координатный переключатель) х } - 17М } р] /. 4. ПАРАЛЛЕЛЬНЫЕ ЯЗЫКИ 4.1. ОБЩИЕ ПРИНЦИПЫ 4.1.1. Знакомство с параллелизмом Язык высокого уровня был разработан как средство программирования для представления алгоритмов в сжатой и машинно-независимой форме. Происхождение двух из наиболее известных языков - Фортран и Алгол - 205
относится к 50-м годам, и вследствие этого отражает структуру машин тех лет — компьютеров, выполняющих последовательность операций с отдельны- ми элементами скалярных данных. Поэтому программирование на этих язы- ках требует разложения алгоритма на последовательность шагов, каждый из которых выполняет операцию со скалярным объектом. Результирующее упорядочение вычисления часто является произвольным, например, при сло- жении двух матриц не существенно, в каком порядке объединяются соответ- ствующие элементы, однако упорядочение должно подразумеваться в после- довательном языке программирования. Это упорядочение не только умень- шает лаконичность алгоритма, но также может помешать эффективному его выполнению. Рассмотрим программу сложения двух матриц, написанную на Фортране: DO ю J=1,N DO 10 1=1 rN 10 CONTINUE Здесь обращение к элементам матриц А и В производится в соответствии с установленным порядком столбца, который по определению отражает поря- док их хранения. На многих компьютерах выполнение программ не было бы таким эффективным, если бы этот порядок не был реверсивным. Если упо- рядочение не закодировано, то компилятор сам может выбрать наиболее эффективное упорядочение для объектной машины. Более того, если в архи- тектуре машины был бы заложен параллелизм, то некоторые или все опера- ции можно было бы выполнять без анализа неопределенности. Язык АПЛ [121] - первый широко используемый, в котором в последо- вательной форме отражался параллелизм, хотя его цель состояла в обеспе- чении краткого описания задач, а не их параллельного вычисления. Айверсон выбрал математические концепции и нотации и на их основе создал язык программирования. Однако основное отличие между математическим описа- нием алгоритма и выполняемой программой лежит в описании и обработке структур данных. Язык АПЛ обладает мощными средствами манипулирова- ния данными. В гл. 2 и 3 рассмотрены новые разработки архитектуры ЭВМ. Паралле- лизм в той или иной форме применяется в этих архитектурах для выполне- ния команд в машине. Поэтому в области вычислений (почти через два деся- тилетия после Айверсона) возникла потребность в выражении параллелиз- ма в алгоритме. 4.1.2. Разработка параллелизма Чтобы проиллюстрировать потребность, упомянутую выше, рассмотрим разработку программы с момента постановки задачи до ее выполнения в ма- шинном коде на объектной машине. Можно выделить четыре стадии (число в скобках указывает степень параллелизма, обнаруживаемую на этой стадии) : а) выбор подходящего алгоритма для задачи (Р); б) выражение алгоритма на языке высокого уровня (L); в) компилирование языка в машинно-читаемую объектную програм- му (О); 206
г) выполнение программы на объектной машине (ЛГ). Степень параллелизма представляет собой число независимых операций, которые могут быть выполнены одновременно (см. подразд. 5.1.2). При идеальной ситуации степень параллелизма не должна увеличиваться по мере процесса разработки. Мы называем это принципом сохранения параллелиз- ма, т. е. P>L можно видеть, что этот принцип является желатель- ным. Чтобы перевести параллельный процесс в последовательность шагов, тре- буется только произвольное упорядочение независимых операций. Однако, чтобы преобразовать последовательный процесс в параллельный, требуется провести анализ. В процессе анализа необходимо проверить, является ли на деле упорядочение произвольным и отсутствуют ли последовательные зави- симости в этом процессе. Таким образом, важно сохранить параллелизм ал- горитма и выразить его, насколько это возможно, на языке высокого уровня. 4.1.3. Получение параллелизма Описанный выше анализ для достижения параллелизма из последователь- ных конструкций часто называют векторизацией. Подробно он описывается в разд. 4.3 и, хотя этот подход не является идеальным, он использовался не- которыми фирмами-изготовителями в качестве средства защиты капитало- вложения, которое пользователь сделал в ранее написанную после- довательную программу. Стоимость программного обе- спечения очень велика и, вероят- но, будет продолжать расти, тогда как стоимость аппаратного обеспечения будет падать. Вслед- ствие этого пользователи не бу- дут испытывать желания перепи- сывать программу с использова- нием параллельных конструкций особенно если учесть, что не вы- работано никаких стандартов на параллельные языки. Машина GRAY-1 представля- ет собой хороший пример под- хода к векторизации. Программа пишется на последовательном Фортране (т. е. L = 1). Однако Рис. 4.1. Изменение степени паралле- лизма прн подготовке программы; а — идеальный вариант сохранения параллелизма; б — векторизующие языки; в — представление проблем- но-распараллеленных языков; г — ог- раничения распараллеленных языков 207
собственный уровень параллелизма машины равен 64, и поэтому О =М = 64. В такой ситуации любой параллелизм алгоритма теряется при выражении на языке высокого уровня и, следовательно, должен быть восстановлен с по- мощью компилятора. Графически это изображено на рис. 4.1, где представ- лены идеальные ситуации (а), потеря и регенерация параллелизма (б). Этот подход следует рассматривать только как временное средство под- держания неразрывности при переходе к параллельной ЭВМ. Однако очень часто векторизующий компилятор не будет предоставлять параллельных структур в качестве альтернативы векторизации. Следовательно, вся новая разработка программы должна быть выполнена на последовательном языке, которая в дальнейшем только укрепит последовательный подход к програм- мированию и, кроме того, может привести к запутыванию приемов програм- мирования. Векторизация часто предполагает вмешательство программиста, так как многие зависимости могут быть выяснены в процессе работы маши- ны. Перепись программы, чтобы избежать этого, часто приводит к запутан- ным конструкциям, которые ’’прячут” основной алгоритм и осложняют со- провождение программы, 4.1.4. Выражение параллелизма Данный подход олицетворяет принцип сохранения параллелизма, указан- ный в подразд 4.1.2 — ’’выжимать” из алгоритма столько параллелизма, сколько это возможно и, естественно, выражать это в параллельных кон- струкциях для определенного языка. Таким образом, L = Р и параллельно Р > М. Очевидно, степень параллелизма (Р) в задаче может варьироваться в процессе выполнения программы. Чтобы согласовать изменения степени параллелизма, в языке должны присутствовать рабочие конструкции в до- полнение к любым описательным конструкциям, которые также могут вы- ражать степень параллелизма. Этот класс языка графически иллюстрируется на рис. 4.1, в и разбирается более детально в разд. 4.2 и 4.5. 4.1.5. Ограничение параллелизма К сожалению, наиболее общий класс языков, отражающий параллелизм, выражает его согласно тому ограничению на параллелизм, которое заложено в объектной машине. В данном случае L = О = М и желательно иметь Р > L . Это показано на рис. 4.1, г. Очевидно, эти языки, по определению, не являют- ся мобильными. Они эволюционизировали в отсутствие всякого стандарта на параллельную обработку как наиболее простые и наиболее эффективные языки, реализуемые на данной машине. Они являются эффективными, пос- кольку здесь полностью исключаются неэффективные конструкции. Кроме того, программист вынужден осознать степень параллелизма машины и по- этому, наиболее вероятно, будет избегать серьезного рассогласования струк- тур данных в его задаче. Однако, ввиду того, что все большее число компью- теров (и языков) становятся доступными, острее встает проблема совме- стимости программ между ними [253]. 208
4.2. ПАРАЛЛЕЛЬНЫЕ КОНСТРУКЦИИ В этом разделе будут определены и рассмотрены различные параллельные конструкции. Мы приведем примеры этих конструкций на основе фортрано- подобного синтаксиса. Все конструкции, взятые вместе, формируют расши- рение для этого языка, который будет позднее использован в примерах. Оче- видно, любое такое расширение должно включать в себя неизменный базис- ный язык. В любом заданном языке обнаруживаются существующие отображения по принципу один к многим между параллельными и последовательными конструкциями. Поэтому, переходя от последовательно запрограммирован- ного к параллельно программируемому алгоритму, мы ожидаем сокращения объема используемой программы. Это очень важный довод, поскольку он побуждает вносить изменения в последовательный и параллельный языки. Фактически нет причин, по которым не следует реализовывать на ЭВМ парал- лельные языки; ведь, в конце концов, последовательность — это частный случай параллельности, а не наоборот. Поэтому параллельные конструкции должны предполагать сжатое выражение параллельной операции за счет огра- ниченного объема дополнительного синтаксиса. 4.2.1. Массивы как объекты данных В языках последовательного программирования типы данных описывают- ся как скаляры или как индексированные множества скаляров, называемые массивами. Массивы формируют основу нотации для выполнения последова- тельностей идентичных скалярных операций посредством использования пе- ременных управления и приведенных индексов (например, циклы DO в Фор- тране) . Если эти последовательности операций независимы, то можно приме- нять параллельную обработку. Поэтому естественно продолжить использо- вание массива в качестве основы параллельных конструкций в языке. Суще- ствуют три основных подхода, где были предприняты такие попытки. (7) Массивы как последовательные объекты. В данном подходе массивы описываются в качестве последовательности скаляров, как и в последова- тельном языке. Затем на параллелизм указывается в теле программы путем спецификации набора индексов, в соответствии с которыми операция может быть выполнена. Этот подход едва ли можно считать идеальным, но он ис- пользовался в одном из первых расширений фортрана, реализованном на ма- шине CDC STAR 100 [41]. (2) Массивы как параллельные объекты данных. Этот подход является на- иболее общим и рассматривается как вариант в любом стандарте на обработ- ку массивов. Здесь все массивы описываются как особые объекты данных заданной категории (размерности). Следовательно, любое обращение к мас- сиву будет подразумевать весь массив. Необходимо отметить, что этот под- ход не отменяет использования массива в качестве набора последовательных объектов, как отмечалось выше, поскольку можно воспользоваться индекса- цией для понижения ранга объектов посредством выборки. Поэтому, напри- мер, если задан трехмерный массив А, то говорят, что ранг равен 3, и любое обращение к одному имени массива А будет подразумевать параллельное об- 209
ращение ко всем элементам. Индексация по любой одной размерности в мас- сив А может быть рассмотрена как операция выборки, которая понижает ранг А на единицу. Таким образом, если все три размерности индексированы, из А выбираются скалярные величины или объекты данных ранга 0. Более подробно о механизме выборки см. в подразд. 4.2.2. Следует отметить, что эта концепция уже встречалась в последовательных языках; например, в Фортране обращение к имени массива в операторе READ и WRITE подразуме- вает обращение по всем элементам этого массива. Такой параллельный подход был предложен в качестве расширения фор- трана для использования на машине CRAY-1 [246]. (3) Массивы как смесь последовательных и параллельных объектов. Не- смотря на то, что изложенный подход является наиболее общим, во многих расширениях языков содержится компромисс. В них ограничивается число размерностей, по которым массив можно рассматривать как параллельный объект. Любые следующие размерности должны быть индексированы в теле программы, тем самым предоставляя наборы объектов параллельного масси- ва ограниченных размерностей. Этот смешанный подход был адаптирован ед- ва ли не на всех процессорных матрицах, где число размерностей, по кото- рым можно осуществить параллельное обращение, соответствует размеру и конфигурации аппаратуры. Этот подход обеспечивает возможность разделе- ния параллельного и последовательного доступов, имеющихся в запомина- ющих устройствах процессорной матрицы, но зависит от типа ЭВМ. Примеры такого подхода можно обнаружить в языках CFD [210], GLYP- NIR [148] и ACTUS [177] — во всех языках, которые были предложены или реализованы для ILLIAC IV. Языки CFD и GLYPNIR оперируют одномерны- ми массивами из 64 элементов, которые преобразуются в матрицу для про- цессоров ILLIAC IV. Язык ACTUS является более общим, но первоначаль- ная реализация, разработанная для ILLIAC IV, позволяла проводить парал- лельное обращение только к одномерному массиву на Паскале. Другой при- мер этого смешанного подхода обнаруживается в DAP-Фортране [115, 116], где параллельное обращение к массиву можно производить либо по первой, либо по первым двум размерностям. И опять же, эти первые две размерно- сти должны соответствовать размеру DAP-матрицы. Как DAP-Фортран, так и CFD рассматриваются в разд. 4.4. 4.2.2. Выборка объектов массива Если допустить, что массив определен как в (2) и (3) в качестве объекта распараллеленных данных, то необходимо подумать о механизмах индекса- ции как о методах понижения ранга или выборки. Следовательно, в преде- лах языка можно манипулировать секциями и поднаборами объектов масси- ва, которые сами могут быть объектами распараллеленного массива. Суще- ствует много методов, из которых некоторые имеют противоречивые зна- чения. (7) Выборка объектов пониженного ранга. Этот механизм, по всей веро- ятности, наиболее важный, так как он обеспечивает убывающую совмести- мость с основным последовательным языком. По своей простоте он эквива- лентен индексации в последовательном языке. Различие заключается в том, 210
что если задан объект массива, скажем ранга п, то все объекты массива пони- женного ранга также являются атомарными элементами этого языка, К при- меру, векторы строк и столбцов, скаляры являются достоверными атомар- ными объектами, которые представляют собой выборку из двумерного мас- сива или матрицы. Векторы строк и столбцов выбираются посредством ин- дексации в одной и только одной размерности массива, а скаляр — с помо- щью индексации в обеих размерностях массива. Так, если на Фортране зада- ется двумерный (N х N) массив или матрица А, то: а) А относится ко всей матрице; б) А (7), относится к I-й строке матрицы А (вектор); в) A (J ) от- носится к J-му столбцу матрицы А (также вектор); г) относится, как и ожидалось, к /-, J-му элементу матрицы А (скаляр). В некоторых языках синтаксис такого механизма выборки выделяется специальным символом (обычно звездочкой), который устанавливается в позиции, где индекс обычно опускается. Этот символ принимается как селек- тор всей размерности. Таким образом, упомянутые выше примеры можно записать: а) А или А (*, *); б) А (I, *); в) А (*, J). Однако вследствие своей элегантности и простоты элизия (отсутствие) ин- декса будет применяться во всех следующих примерах, если не будет описан специальный синтаксис. (2) Выборка диапазона значений. Часто необходимо выбрать диапазон зна- чений из заданной индексом позиции. Следовательно, вместо понижения ран- га объекта массива уменьшается размер этого объекта. Поэтому диапазон должен специфицировать поднабор всего диапазона размерности. Это можно описать, как и при управлении циклом, двумя или тремя целыми числами или целочисленными выражениями. Они, как правило, специфицируют на- чальный индекс, вспомогательный индекс приращения и граничный индекс, которые используются в качестве селектора в одной размерности массива. Таким образом, если задана используемая в упомянутом примере матрица Ах А, то с помощью выражения А(2:А— 1, 2:А— 1) можно осуществить вы- борку внутренних точек матрицы, а с помощью выражения А (1: (2) А, 1:3)- выбрать первые три элемента из всех нечетных строк. В обоих примерах ис- пользуемый синтаксис представляет собой начало, шаг (:) и границу, где шаг, если его значение опущено, предполагается равным единице. Эти меха- низмы выборки понижения ранга и диапазона иллюстрируются на рис. 4.2 для массива 8x8. (2) Выборка с помощью целочисленных массивов. Простой механизм вы- борки, описанный в (1), дается как особый случай более знакомой последо- вательной индексации. Также можно спорить, что то же самое справедливо для индексации с объектами массива и что это должно быть частным слу- чаем знакомой косвенной индексации, обнаруживаемой в последовательных языках. К сожалению, существуют, по крайней мере, два способа использо- вания этой косвенной адресации, и они не могут быть представлены одним и тем же синтаксисом. Один метод дает линейное отображение или топологическое произведение линейных отображений над несколькими размерностями. Это показано ниже с помощью знакомых последовательных конструкций, где IV и JV являются векторами целых чисел, описывающих отображения: 211
Рис. 4.2. Пример выборки из массива 8X8: а — понижающая ранг; б — сужающая диапазон a) A(I, JV (/)); б) А (IV (У), JV (J)). Здесь с помощью выражения а) обеспечивается линейное отображение вто- рой размерности матрицы А, а с помощью выражения б) дается топологичес- кое произведение линейных отображений в обеих размерностях матрицы А. Очевидно, если эти выражения используются параллельно с элизией индекса а) А(, JV),6) A(IV,JV), то результирующие массивы относятся к тому же рангу, что и А, но имеют область в выбранной размерности, которая задается вектором отображения. Полученное отображение может быть типа один к многим, однако все значе- ния элементов вектора отображения должны лежать в диапазоне использу- емой размерности. Таким образом, если А — массив Nx N, а IV и JV — векто- ры области М , то все элементы из IV и JV должны быть меньше или равны N, и с помощью выражения а) дается массив Nx М, а выражения б) — массив М х М. Оба они представляют отображения элементов массива А. Другой равно допустимый метод дает проекцию на одну размерность массива или более. Это представляет собой понижающую ранг операцию, что показано ниже с помощью аналогичных последовательных конструкций. Здесь любое JV — это целочисленный вектор, a JM —целочисленный массив, из которых оба описывают секцию массива, которая проецируется на остав- шиеся размерности: в) А(У, JV (У)); г) В(У,/,Ш(У,У)). Важный момент, который следует здесь отметить, это то, что индексный вектор JV и индексный массив JM имеют ту же форму, что и секция масси- ва, которую они выбирают, и индексируются таким же образом. Не представ- ляется возможным дифференцировать два применения косвенной индекса- ции, так как выражения в) и г) с помощью элизии индекса создают следу- ющие параллельные конструкции: в) A(,JV); г) В(,, JM). Можно видеть, что параллельная конструкция, приведенная в выражении в), идентична той, которая задается выражением а), но они имеют полностью отличные значения. Если А представляет собой массив N х N, а В - массив 212
NX NX N, toJV должен быть TV-элементным вектором, a JM — массивом JV X TV. С помощью обоих выражений понижается ранг масси- вов, которые они индексируют, как если бы они были скалярами. Хотя е f д h t j к I т п о р полученная секция не является ла- минарной, она проецируется на вы- черчиваемые размерности. И снова значения элементов индексного массива должны быть меньше или равны области размерности, из ко- торой они выбирают. На рис. 4.3 иллюстрируются эти два метода для массива 4X4. В подразд. 4.2.7 будет показано, что вариант проекции этой струк- туры, используемый совместно с другой конструкцией, дает возмож- ность приспособить общий метод отображения. Вполне очевидным выбором семантики для этой кон- струкции является проекция. Это соглашение принято во всех приме- рах, если только не определено ка- кое-то другое. Возможно использо- вание этого метода выборки сов- IV 11 1 1 3~] JV |з 2 1 | с) A(IV) =о| а Л с Z | S) A(,IV) =ф| a g i —о~| A(IV,) A(JV,IV) Рис. 4.3. Пример выборки из массива А с помощью целочисленных векторов (IV и JV): а — проекционная Выборка; б — общее отображение на одной н двух размерно- стях массива местно с другими методами индексации в других размерностях массива, включая другие индексные массивы. Однако все индексные массивы долж- ны соответствовать выборке выдаваемого массива. Таким образом, выраже- ние TABLE (, , I,J, К) представляет собой обусловленную выборку из мас- сива TABLE, даже если I, J и К — целочисленные массивы. Вообще I,J и К должны быть либо целочисленными скалярами, либо целочисленными мас- сивами, которые согласуются с выдаваемой секцией (т. е. теми размерностя- ми, в которых обозначается вся область). Концепция соответствия более де- тально разбирается в подразд. 4.2.3. (4) Выборка с помощью объектов булевых массивов. В другом механиз- ме выборки, который можно применить к объектам массива, используются соответствующие логические массивы или выражения. Выборка осуществля- ется в зависимости от значения истинности логического селектора. Таким об- разом, i-й элемент может быть выбран из одномерного массива посредством индексации его одномерным булевым массивом со значением ’’истинно” в z-м элементе. Массивы, безусловно, должны согласовываться. Аналогично можно было бы использовать тот же самый булев массив для выбора векто- ра строки либо столбца из двумерного массива или матрицы. Эти примеры показаны на рис. 4.4. Во всех приведенных примерах используется эта форма индексации как механизм выборки понижения ранга. К примеру, DAP-Фортран настоятельно 213
LV 0001 0000 Рис. 4.4. Пример выборки из массива 8X8 с помощью логического вектора LV требует такого ограничения. Однако можно, хотя и нежелательно, расширить эту форму индексации так, что она ста- нет сужением области. В этом случае упомянутый выше булев вектор будет иметь ряд элементов, установленных в положение ’’истинно”, и выборка дает объект одного и того же ранга, но толь- ко с теми элементами, которые отобра- ны по значению ’’истинно”. Аналогич- ные методы можно было бы использо- вать для селективного обновления объ- екта массива. Более подробно эти ме- тоды рассматриваются в подразд. 4.2.6. (5) Индексация сдвига, строго гово- ря, не является механизмом выборки, однако, поскольку такая процедура часто реализуется как метод индекса- ции, она включена в данный раздел для полноты изложения. Эта процедура представляет механизм выравнивания и может использоваться для сдвига или циклического сдвига объектов массива по заданной размерности. Хороший пример этого использования можно уви- деть в методах сеточной релаксации (см. подразд. 5.6.1), где каждый узел в сетке корректируется по некоторому среднему от своих соседних узлов. В самом простейшем случае узел принимает среднее значение своих четырех ближайших соседей в двумерной системе. Это можно выразить следующим выражением (нотация взята из DAP-Фортрана) А = (А(+,) + А(-,) + А(, —) + А(,+))/4. Все элементы А обновляются одновременно в соответствии с четырьмя со- седними элементами, выбранными путем сдвига массива А влево (+) и впра- во (—) в каждой размерности. Для внутренних значений А это эквивалентно последовательной структуре, указанной ниже, потому что параллельное вы- ражение оценивается для всех значений одновременно. ПО 10 1=2,N-1 ПО 10 J=2,N~1 10 ANEW (I, J) = (A <1+1. J) +ACI-1. J) +A (I, J-l) +A (I r J+l)) /4 DO 20 1=2,N-1 П0 20 J=2,N-1 20 A(I,J)-ANEW<I,J) Наиболее естественно при написании этой последовательности было бы за- менить запись ANEW (I, J) на A (I, в цикле 10, Однако она представляет рекурсию и при оценивании использует как старые, так и новые значения А, 214
о оо о о- 0- о - о - 0 0 0 0 Рис. 4.5. Возможные топологические геометрии в двух размерностях с использованием плоскостной и круговой геометрией сдвига массива: а — плоскостная; б — цилиндрическая (ось С — Ю) ; б — цилиндрическая (ось В — 3) ; г --тороидальная определенные упорядочением цикла. Аналитики опознают это как отличие между релаксациями Гаусса - Сейдла и релаксациями Якоби. Краевые эффекты, как правило, рассматриваются отдельно в последова- тельной программе. Однако это можно сделать и в параллельной конструк- ции, приняв некоторую геометрию. Например, размерность может рассматри- ваться как циклическая, где переключение будет круговым, или как планар- ная, где сдвиги будут оканчиваться соответствующими занесениями нулей. Комбинации этих геометрий двумерного массива иллюстрируются на рис. 4.5. На рисунке представлены планарная, цилиндрическая и тороидальная то- пологические поверхности. Синтаксис, указанный в упомянутом примере, очевидно, ограничен сдви- гами только на одну позицию в каждом направлении, поскольку дополнение целого числа к символам ”+” и создаст безусловную выборку из масси- ва А. Возможности сдвига более, чем на одну позицию были реализованы в параллельных языках с помощью символа селектора всей размерности, на- пример, *, где выражение А(* — N) означает сдвиг массива А по первой раз- мерности на N позиций вправо. Дополнительно для реализации этой кон- струкции были введены операции или функции выравнивания. 4.2.3. Представление массивов и соответствие Если все массивы в языке задаются как объекты данных, необходимо вве- сти некоторые правила, которыми руководствуются при представлении мас- сивов. Самым основным из них является способ взаимодействия операций с от- дельными элементами объектов массива. При объединении массивов с ариф- 215
метическими реляционными или логическими двоичными операторами пред- полагается, что все соответствующие элементы двух массивов объединяются одним и тем же оператором, как бы выполняются одновременно. Подобно этому, унарные операторы относятся ко всем элементам в объекте массива. Результатами таких операций также являются объекты массива. Определив операции между массивами таким образом, можно построить представление массивов как в последовательных языках, используя принятые правила со- ответствующего типа: первоочередность оператора и размещение скобок. Од- нако до сих пор два из наиболее важных соображений, представляющих со- бой правила, имеющие отношение к размеру и форме объектов массива как операндам выражений, были опущены. Они являются основными при кон- струировании языка. Если два объекта не будут содержать одинакового числа элементов, описа- ние операции элементных массивов становится двусмысленным. Этого мож- но избежать, установив способ совмещения операндов вместе со значением, которое задано неописанным элементом. Например, операнды массива могут быть выравнены по их первым или последним элементам линейно или раз- мерность за размерностью. Неописанным элементам может быть присвоено значение 1 или 0 либо левое неопределенное дополнение. Можно видеть, что в целом такая ситуация нежелательна. Альтернативой этому является ограни- чение всех пар операндов в представлении на соответствие. Это можно уста- новить здесь, сказав, что два операнда должны иметь одинаковый ранг и оди- наковую область в соответствующих размерностях. Ограничив представление таким образом, можно осуществить гораздо более жесткий контроль за по- явлением ошибок как во время компиляции, так и во время работы. Это до- статочно четко иллюстрируется на примере перемножения матриц в подразд. 4.2.7. Однако, введя такое ограничение, необходимо будет ввести конструк- ции, которые предоставят возможность сжатия, расширения или переформи- рования массивов с целью их соответствия. При таком способе это бремя бу- дет неизбежно возложено на программиста, чтобы точно оговорить способ согласования массивов. Методы индексации, обсуждающиеся выше, предо- ставят некоторые из этих механизмов для этой цели, остальные должны быть получены в виде дополнительных операторов или функций в пределах этого языка. 4.2.4. Обработка массивов для получения соответствия Здесь будет применена функциональная нотация для иллюстрации некото- рых операций, необходимых для обработки объектов массивов с целью их соответствия. Функции, приведенные ниже, потребуются в той или иной фор- ме в любом языке, которому необходимо, чтобы операнды массива были со- гласованы. (7) Функция понижения ранга. Как было показано, ранг объекта массива может быть понижен посредством индексации или выборки. Другим спосо- бом, при котором он может быть понижен, является повторное использова- ние двоичного оператора между всеми элементами в одной размерности мас- сива. Он, безусловно, может быть описан на языке как последовательность операций, однако это не дает возможности использования параллелизма для 216
понижения ранга. Например, сумма из Nэлементов может быть получена при параллельном выполнении шагов выражения log2A (см. подразд. 5.2.2). В табл. 4.1 дается перечень наиболее общих операций понижения ранга, где каждая имеет два параметра, массив и размерность, по которой будет выпол- нено понижение. Эти функции должны также обеспечивать понижение ранга по всем размерностям массива, если это необходимо. В языке АПЛ аналогич- ные фуньЯщи представляются в виде составных операторов, где оператор ©/обеспечивает понижение ранга с помощью двоичного оператора @. Синтак- сис объединенных операторов рассматривается в последнем сообщении К. Айверсона [122]. Т аблнца 4.1. Функции приведения в расширениях на Фортране для операций с масси- вами. А — целое или вещественное, В — логическое число. Необходимо также предус- мотреть расширение действия этих функций для всех размерностей, вероятно, опуская второй параметр. Функция Операция Приведение SUM (А, к) + ?А((,,. • • , ik ‘f> lk PROD (А, к) * П .4(i, ip lk AND (В, к) А и B(i,,... , if) lk OR (В, к) V или B(z,,.... ... , ip ‘k МАХ (А, к) max {4(1,,. .. ,i^ ip} lk MIN (А, к) min {A(i,,.'. (/)} lk (2) Функции повышения ранга. Часто для достижения соответствия необ- ходимо повысить ранг объекта. Наиболее часто эта процедура используется в операциях между скалярами и массивами. Часто ее называют транслировани- ем при параллельном вычислении, потому что экземпляр скаляра является вещательным как второй операнд для каждого элемента массива. В более об- щем смысле это действие можно рассматривать как сжатие скаляра посред- ством повторения в согласующийся массив. Этот частный пример не являет- ся двусмысленным и мог бы просто означать ослабление правила, которое требует соответствия между операндами; при ослаблении правила имеется возможность произвольно смешивать скаляры и массивы в пределах выра- жений. Однако в наиболее общем случае это не совсем так. Операции между век- торами и матрицами, к примеру, могут быть выполнены посредством опера- ции повторения вектора либо в качестве строки, либо в качестве столбца, чтобы добиться соответствия с матрицей. В общем, существует Of вариантов, при которых г-мерный ’’квадратный” массив может быть деформирован в и-мерный ’’квадратный” массив, где С1 =-----------. r г ! (и - г)! 217
Если массивы имеют различные области в каждой размерности, число воз- можностей может быть ограничено, либо оно обратится в нуль. Однако за- манчиво ввести это деформирование как явную операцию или функциональ- ный вызов, чтобы обеспечить контроль за ошибками. Пример перемножения матриц снова иллюстрирует это в подразд 4.2.6. Всего одна функция требует- ся для выполнения деформирования посредством повторения. Так, XPND (А, к, А) представляет собой массив, сформированный путем повторения N раз вектора А по своей /с-й размерности. Например, если V — вектор из Nэлемен- тов, то XPND (V, 1, N) — матрица N х N, сформированная повторением V в качестве строк матрицы, a XPND (V, 2, А) сформирована повторением V в качестве столбцов матрицы. Любое деформирование может быть выполнено посредством повторного использования этой одной простой функции. (5) Переформирующая конструкция. Другой конструкцией, которая не- обходима для достижения соответствия, является переформирование струк- тур данных. Иногда необходимы операции между массивами различных раз- мерностей, но содержащих одинаковое общее число элементов. Хорошим примером является алгоритм быстрого преобразования Фурье (см. подразд. S.S.2), в котором для простоты линейный массив из А элементов рассматри- вается как трехмерный массив переменных. Это иллюстрируется на одном примере программирования в подразд. 4.2.7. Фактически переформирование в этом примере можно было бы осуще- ствить повторным описанием линейного массива, введенного в качестве ар- гумента для подпрограммы. Это, однако, является одной из неясных обла- стей в описании на Фортране. Поскольку основное внимание будем уделять формам массивов, которые должны согласовываться, например, в выражениях и назначениях, важнее описать формы объектов массива, введенных в подпрограммы. Выдаваемое обращение должно содержать информацию относительно формы или размер- ности массива. В этом случае, если подпрограммы объединяются, то можно обнаруживать ошибки, относящиеся к несоответствию пар параметров и ар- гументов. Для параметра и аргумента, которые должны согласовываться, требуется, чтобы только формы или размерности этих объектов были одинаковыми. Поэтому на Фортране параметр массива для подпрограммы обычно описыва- ет главный подмассив введенного аргумента. В таком варианте параметри- зованный поднабор области в каждом измерении может выбираться динами- чески в пределах подпрограммы. Допустив, что оператор DIMENSION (размер) определяет динамический диапазон в подпрограмме, нербходим оператор для изменения формы масси- ва относительно своего описания. Для этого мы вводим оператор МАР, кото- рый имеет формат оператора размера, но может рассматриваться как испол- нительный оператор, устанавливающий повторное преобразование объявлен- ного объекта массива. Следует допустить, что это преобразование произво- дится в порядке один к одному, чтобы дать точное определение. Например, если мы рассмотрим перечень размерностей nlt . .., п объек- та массива А (иь . . . , и ), то этот список обозначает форму и отображение Р А по упорядоченному набору Д ячеек данных (не обязатеЛьно соприка- 318
сающихся). Элемент из этого набора локализуется с помощью индексного списка z'i, . . . , ip, который применяется для генерации функции отображе- ния /D, определяющей позицию элемента в наборе: р-i К~ 1 Оператор МАР обычно повторно описывает эту функцию преобразования по тому же упорядоченному набору элементов с помощью MAP-списка т1,... ...,mq в МАР-операторе: МАРА (mi,... ,mq). Он повторно описывает форму А так, что задается новый индексный список i j....iq и любой элемент выбирается из набора новой функцией отображе- ния /м: fM (й, • • • ,iq) =Zi + Wj (12 - 1) + . . . + Tl mk(iq ~ D- Можно видеть, что отображение не.является полностью установленным, если не существует равенства Р Ч П пк = П тк. k=i к=1 Следует заметить, что для /D не нужно характеризовать отображение по смежному набору ячеек хранения. Это связано с тем, что упорядоченный на- бор элементов, по которому определяется/D, может также представлять ото- бражение (уменьшенное в диапазоне) массива, введенного в подпрограмму. Следовательно, может существовать абсолютный и параметризованный спи- сок размерностей, из которого последний представляет чисто концепцию вре- мени компиляции, которая определяет соответствие и может быть использо- вана для генерации отображений адресов. В последовательном компьютере эти функции отображения адресов ред- ко используются для вычисления адресов. Однако на некоторых параллель- ных машинах повторное отображение физических данных может реально по- требоваться для обеспечения параллелизма. Ниже дан пример использования оператора МАР; он переформировывает линейный массив в две размерности: DIMENSION А(Д) МАР А(Л/2, 2) Можно видеть, что повторное отображение А охарактеризовано не полно- стью, если А имеет нечетное значение. Последний элемент А не определяется в МАР-операторе вследствие прерывания целочисленного деления. 219
4.2.5. Индексация выражений С введением параллелизма в язык сами выражения стали значимыми объ- ектами массива с заданной формой. Поэтому для осуществления выборки из выражения требуется общезначимая операция, использующая те же методы индексации, которые описаны в подразд. 4.2.2. Эта выборка, вероятно, по- требуется только с использованием функциональной формы и только для то- го, чтобы избежать лишних назначений временным переменным. Выборка может быть осуществлена последующим выражением с парой скобок, содер- жащих требуемый селектор. Поэтому выражение рассматривается в точности как объект массива. Этот случай описывается в подразд. 4.2.7 в первом при- мере программирования. 4.2.6. Присвоение массива На некоторой стадии значение выражения массива должно быть присвоено переменной массива. Операция присвоения, подобно всем другим операциям, является основной, и, используя те же аргументы, что и для оценки выраже- ния, результат выражения должен соответствовать переменной массива. Од- нако степень соответствия может быть снижена в случае присвоения скаляр- ного выражения переменной массива, так как эта операция не имеет дву- смысленности. Чтобы достичь соответствия на стадии присвоения, можно воспользоваться всеми механизмами выборки, описанными в подразд. 4.2.2 для выборочного обновления переменной массива. Исключением является операция индексации сдвига, выполняемая с тем же успехом над выраже- нием, которое должно получить присвоение, в случае, если необходимо выравнивание. К примеру, векторное выражение может быть выборочно присвоено стро- ке или столбцу матрицы посредством записи: А (/,) = < соответствующее векторное выражение > или А (, J) = < соответствующее векторное выражение >. Селективное присвоение с помощью булева массива или выражения пред- ставляет собой особенно мощный метод. Фактически он заменяет многие условные присвоения, обрабатываемые с помощью конструкции IF THEN ELSE. Этот метод иногда называют маскированием, так как булев массив может рассматриваться как маска, управляющая присвоением. Например, аб- солютное значение А может выдаваться отрицанием своего только отрица- тельного элемента, как указано ниже: A (A. LT.0) =-А. 4.2.7. Примеры программирования В предыдущих разделах были описаны конструкции, которые можно ис- пользовать в качестве расширения языка Фортран для параллельных вычис- лений. Применяемые здесь конструкции иллюстрируют, как параллельная 220
кодировка может дать сжатую и лег- ко понимаемую интерпретацию алго- ритма. Некоторые из примеров пов- торяются в последующих разделах, чтобы продемонстрировать синтак- сис или ограничения некоторых су- ществующих параллельных компиля- торов. Рассматриваются три приме- ра: задача общего одномерного ото- бражения, алгоритм матричного ум- ножения и алгоритм быстрого пре- образования Фурье. (1) Общее отображение. Эту зада- чу можно достаточно четко проиллю- стрировать с помощью выборки сло- ва или фразы из алфавита. Так, за- дан одномерный массив символов ALPHABET (27), который содержит буквы от А до Z и пробелы, и мы хо- тим выбрать слово или фразу WORD (Л) из этого алфавита, использовав при этом целочисленный массив INDEX (N), который указывает на соответствующие буквы в алфавите. Запомните, что допустимая кос- венная индексация относится к про- Индекс 1 2 1 5 21 19 | XPND(ALPHABET, 2,б) А А А А А А В 6 В В В В С С С С С С • • • S S S S S S т т т т т т и и и и и и V V V V V V ww W W W W X X X X X X Y Y Y У Y Y Z Z Z Z Z Z р' Л X & Слово А В А С U S Рис. 4.6. Структуры данных, обрабаты- ваемые в соответствии с примером про- граммирования общего отображения екции или рангопонижающему типу, а не является требуемым здесь общим отображением. Поэтому метод заключается в расширении алфавита в дву- мерный объект посредством W-разового повторения. Затем можно будет выбрать слово путем индексации первой размерности с помощью N элемен- тов массива INDEX. Обрабатываемые структуры иллюстрируются на рис. 4.6. Учитывая сказанное, можно написать следующую программу: FUNCTION WORD (ALPHABET,INDEX,N) CHARACTER ALPHABET(27),WORD(N) INTEGER INDEX(N) WORD=XPND(ALPHABET,2,N)(INDEX,) RETURN END (2) Матричное умножение. Второй приводимый пример представляет пе- ремножение матриц. Он показывает соответствие между математической и программной нотациями. Отметим, что в этом примере все NLM умножений выражены параллельно без потери общности алгоритма. FUNCTION MATMULT(A,B,N,L,M) REAL A(N,M),B(M,L),MATMULT(N,L) C С МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ЗАДАЧИ ПРИВЕДЕНО ДЛЯ 221
c И 13=1»...,L по с М с С MATMUL.T(I1,I3)=\ А »В С / 11,12 12’13 С С ПРОГРАММА ОЧЕНЬ CXOIA С МА TMUL T=SUM(XPND(А,3,L)»XPNH(R,1,N),2) RETURN EMU XPND (А,3,0 XPND(B,1,A/) MATMULT Рис. 4.7. Структуры данных, обрабатываемые в соответствии с примером программиро- вания перемножения матриц Произведение образуется первым расширением массивов А и В, поэтому они становятся трехмерными объектами (рис. 4.7). На первом расширении массив А повторен как первые две размерности, на втором - массив В пов- 222
торен как последние две размерности. Можно видеть, что оба эти обращения к XPND выдают согласующие массивы [т. е. оба имеют форму (N, М, £)]. Произведение этих массивов затем сжимается посредством суммирования по средней размерности [т. е. для всехМ подпространств формы (N, L) ], выда- вая требуемый результат — матрицу TVx L, которая присваивается оператору MATMULT. Заметим, что в этой форме при описании неквадратных матриц любая ошибка в спецификации селекторов соответствующих размерностей (1,2 или 3) приводит к ошибке компиляции, поскольку соответствия не бу- дет ни при умножении, ни при присвоении. Такое выражение алгоритма подразумевает отсутствие какой-нибудь по- следовательности (это возложено на компилятор), поэтому здесь все четыре варианта алгоритма (см. подразд. 5.3.1 - 5.3.4) могут быть извлечены из одной программы. Представляет интерес также то, что в этой функциональ- ной форме программа полностью прибегает к блочному структурированному описанию с открывающимися и закрывающимися скобками, указывающими начало и конец: 1 2 3 4 MATMULT=SUM( XPND(A«3,L) « XPND(Pri,N> »2) (3) Быстрое преобразование Фурье. В подразд. 5.5.2 приводятся рекур- сивные уравнения, которые определяют БПФ как последовательность част- ных преобразований, специфицированных по двумерной структуре перемен- ных [см. уравнение (5.88) ]. Смещение между элементами, объединенными в этих уравнениях, может быть также рассмотрено как третья размерность длиною 2, которая делит пополам диапазон первой размерности. Это дает возможность перехода от уравнения (5.88) к следующим уравнениям: для последовательности / = 0, 1, .... Q - 1 для всех к= 1,.. ., 2‘ для всех i = 1,.. ., п/2 +1 IQ к , IQ f (i,!,k) = f (i,l,k)+^21 + i f (i,2,k) ILliI IQ k , <0. f (i,2,k) = f (i, l, k) -w , f (i,2,k) 2' +1 конец конец повтор Теперь это преобразование представляет тривиальную операцию, если вы- ражать ее в наших параллельных конструкциях, применив функцию RECUR (как на рис. 5.13, 5.14 и 5.16). Функция выполняет за один проход всю по- следовательность по /. FUNCTION RECUR(F«W>L>N) COMPLEX F(N) »W(N) «RECUR<N) I2L-2»»L N2L=N/I2L N2Li=N2L/2 223
MAP F (N2LH2» I2L) >W (N2Lr I2L) jRECUR <N2Li >2,12L) F( >2» )=XPND(U(1,),1,N2L1)»F( ,2» ) RECUR( »i> )=F( ,1, )+F( >2> ) RECUR( ,2» l=F( ,1, )-F( ,2, ) RETURN END Эта программа при работе с вызовом последовательности, присваиваю- щей F значение RECUR, обеспечивает преобразование на плоскости. Она ис- пользует временную память, определяемую значимой функцией массива и выдает преобразование значения в разрядно-реверсивном порядке. Читателю в качестве упражнения предоставляется возможность перекодировать функ- цию, руководствуясь графическим представлением на рис. 5.12, для выдачи результатов в естественном порядке. Снова следует отметить, что в этом описании алгоритма объединены все три схемы, представленные в разд. 5.5. Схема А получается, если последова- тельности компилятора — последняя размерность массивов, а схема В, если последовательности компилятора — первая размерность массивов. Однако, если обеспечивается достаточно эффективный параллелизм в машине, то по- следовательность по любой размерности уступает место параллельной (PA- RAFT) схеме (см. подразд. 5.5.4). Следовательно, при наличии приемлемого компилятора можно сгенерировать эффективную машинную программу для полного спектра компьютеров, у которых п ц2 варьируется от 1 до Д'. 4.2.8. Стандарты В разд. 4.2 делалась попытка приблизительно определить стандарты поль- зователей, ориентированные на расширение языка Фортран для параллельных вычислений. Однако не существует ни американского, ни какого-либо другого действующего стандарта, относящегося к этой проблеме. Имеется комитет, рассматривающий очередной стандарт США, в котором должны быть даны ре- комендации в этой области, однако никаких отчетов не было выпущено. Кро- ме того,специальный комитет (специальная комиссия) министерстваобороны США (ACCLWG) разбирает требования к языку Фортран. Как раз в этот мо- мент был опубликован предварительный отчет [111] .включающий описание средств обработки массивов. Этот отчет и предложенный язык [246, 247] точно согласуются с идеями, представленными здесь. Одно основное отличие заключается в использовании косвенно индексированных наборов. Мы пола- гаем, что наиболее общим применением, как уже указывалось, будет приме- нение проекции или рангопонижающей выборки. Как было показано, ее мож- но использовать для создания варианта общего отображения, но не наоборот. В отсутствие стандартов фирмы-изготовители либо приняли консерватив- ный подход, либо пошли по более машинно-независимому пути. Например, компилятор CRAY-1 Фортран остался верным действующим стандартам ANSI [239, 240] и обеспечивает возможность распараллеливания с помощью мето- да векторизации, который описывается в разд. 4.3. С другой стороны, фирма ICL разработала полезный набор параллельных конструкций для языка DAP, но, как подразумевает название, вставила туда много машинно-зависимых средств (см. разд. 4.4). Два наиболее общих расширения для Фортрана опи- сываются в разд. 4.5, BSP-Фортран и VECTRAN; VECTRAN является экспе- риментальным расширением языка IBM-Фортран IV. 224 4.3. ВЕКТОРИЗУЮЩИЕ КОМПИЛЯТОРЫ 4.3.1. Основные методы Векторизующие компиляторы выбирают программу, написанную на по- следовательном языке, и, где возможно, генерируют из последовательности операций параллельные машинные команды. Этот процесс можно рассматри- вать как оптимизацию или преобразование, обычно выполняемое в исходной программе или некой компактной промежуточной форме. Например, компи- лятор новой ЭВМ для научных исследований ASC NX выполняет оптимиза- | цию на представлении направленного графа в исходной программе. ' Однако для простоты будем рассматривать только исходную программу, i Вполне понятно, что наиболее вероятными местами при отыскании приемле- мых последовательностей операций являются повторяющиеся вычисления или циклы DO в Фортране. Поэтому векторизующий компилятор будет ана- лизировать циклы DO или более внутренний цикл, или, по возможности, еще более внутренний. Компилятор машины ASC NX анализирует гнезда трех циклов и, если за- висимостей не обнаруживается, формирует машинную команду на выполне- ние тройственного цикла. Векторизующий компилятор ЭВМ для научных ис- ! следований BSP анализирует вложенные циклы DO. Он переупорядочивает циклы, если один из внутренних циклов содержит зависимость. В целом преобразование, выполняемое над одним или несколькими цик- лами DO, представляет собой .изменение в предполагаемой последовательно- сти или порядке выполнения. В последовательном языке предполагаемым порядком является пооператорное упорядочение для каждого заданного зна- чения индекса цикла. Для параллельного вычисления требуется порядок, при котором каждый оператор выполняется для всех заданных индексных зна- чений до того, как следующий оператор будет выполняться для каких-то других. Это преобразование может быть сделано только в том случае, если отсут- ствует обратная связь внутри оператора и между любыми операторами в цик- ле. Определение и анализ этих зависимостей является основной задачей в векторизации. 4.3.2. Препятствия к векторизации Было бы поучительным взглянуть на различные конструкции, которые могут препятствовать процессу векторизации или блокировать его. Некото- рые из этих конструкций ’’фундаментально” не векторизуемы, тогда как другие являются ’’трудными” конструкциями для векторизатора с точки зрения анализа. (7) Операторы условных зависимостей и перехода. Процесс векторизации может сдерживаться циклами, которые содержат операторы IF и передачу управления. Однако многие одно- и мультиоператорные условные зависимо- сти могут быть сделаны параллельными (с некоторой сопутствующей поте- рей эффективности). Например, простой цикл ПО 10 I=1tN 10 IF (A(I).LT.O) ACI)=-A<I) о Зак 1799
сокращается в параллельную конструкцию (см. подразд. 4.2.2) A(A.LT.O)=-A Возможно векторизовать одиночные и более сложные мультиоператорные условные зависимости, используя методы маскирования. (2) Последовательные зависимости. Здесь раскрывается широчайшая об- ласть возможных препятствий к векторизации. Некоторые зависимости обус- ловлены упорядочением операторов, другие — рекурсивной сущностью вы- числения. Первая категория может быть легко векторизована переупорядо- чением операторов и использованием временной памяти. Рассмотрим про- стой пример DO 10 I=2,N A(I-l)=NEW(I) 10 OLD(I)=A(I) Это может выглядеть изобретательным, но представляет собой типичную конструкцию индексации, которая может воспрепятствовать векторизации. Хотя она и не является рекурсивной, простое использование преобразований упорядочения приведет к неправильным результатам. При неявном упорядо- чении старые значения из А(/) заносятся в OLD (7); при упорядочении пре- образованием новые значения из А (Г), т. е. NEW(/ + 1), заносятся в OLD(/). Проблема тогда представляется простым хронированием, и поэтому хоро- ший компилятор может переупорядочить это вычисление или предоставить временную память для старых значений А (Г). Следующие эквивалентные циклы векторизуются: D0 10 1=2,N OLD(I)=A(I) 10 A(I-i)=NEW(I) DO 10 1=2,N T(I)=A(I) A(1-1)=NEH(I) 10 OLD(I)=T(I) Истинная рекурсивная конструкция аналогична указанному примеру и может быть выражена в одну строчку или спрятана с помощью множествен- ных присвоений. Приведем два примера: DO 10 1=2,N Т=А (1-1) «в (I) 10 А([)=Т+С(1) DO 10 1=2,N 10 A(I) =(А(1-1)+1(1+1))/2 Это примеры линейных рекурсий первого порядка, которые не могут быть векторизованы без пересортировки по специальным алгоритмам (см. разд. 5.2). Вообще для конструкций, эквивалентных этой: D0 10 г= ... 2’6
A(I)=A(I+OFFSET) где OF FSET является целочисленной переменной, векторизация запрещена. Это потому, что компилятор не может векторизовать такую структуру, если он не в состоянии определить, что OF FSET имеет тот же знак, что и инкре- мент цикла, и потому, что нет совмещения левой и правой сторон присвое- ния. Поэтому конструкция, возможно, векторизуема в принципе, но не на практике. (3) Нелинейная и косвенная индексация. Некоторые индексные выраже- ния также могут препятствовать векторизации. Простая линейная комбина- ция индексных переменных цикла не должна вызывать никаких проблем, ес- ли только нет аппаратных ограничений. Однако, если индексные выражения нелинейны или содержат косвенные ссылки, то векторизация превращается в нетривиальный процесс. Приведем примеры индексных выражений, кото- рые могли бы сдерживать векторизацию: (IV (7)). В первом случае, если бы I или J были инвариантными в пределах рас- сматриваемого цикла, то выражение было бы линейным и векторизуемым. В противном случае оно не векторизуемо. (4) Вызовы подпрограмм в циклах. Последним препятствием к вектори- зации, рассматриваемой здесь, является включение подпрограмм или вызо- вов функций, описанных пользователем, в цикл. Они не векторизуются, так как подпрограммы, главным образом, компилируются отдельно, и у компи- лятора не хватает необходимой информации для проведения анализа. 4 3.3. Компилятор CRAY-1 CFT Компилятор CRAY-1 CFT для фортрана относительно прост. Он анализирует только внутренние циклы без какого-либо переупорядочения и просто опре- деляет, насколько безопасно векторизовать цикл. Поэтому компилятор час- то требует вмешательства программиста для выполнения преобразований в исходной программе, что позволяет углубить векторизацию. Некоторые из этих преобразований описываются в документе фирмы CRAY по преобразо- ванию Фортрана для компилятора CFT [99]. Преобразования включают уда- ления всех условных операторов из внутренних циклов, переупорядочение операторов, чтобы избежать последовательных зависимостей, и переупорядо- чение циклов DO, чтобы устранить зависимости от самых внутренних циклов. Аналогично большинству средств программного обеспечения, компилятор CFT постоянно пересматривается. До недавнего времени использование вре- менных значений скаляров в циклах также препятствовало векторизации. Следующие основные изменения в этом компиляторе, без сомнения, будут включать векторизацию для некоторых условных циклов, а также расшире- ние с целью приведения языка к стандартам ANSI 1977 [58]. 8* 227
4.3.4. Векторизующий компилятор BSP Несмотря на то, что компилятор BSP содержит много параллельных кон- струкций (см. подразд. 4.5.1), он также обладает векторизующей способно- стью. Эта комбинация дает двойное преимущество прогонять существующие последовательные программы с использованием векторизующей способно- сти и/или точно переписывать программу на параллельные конструкции. Векторизатор BSP [10] значительно более совершенен, чем компилятор CFT. Он анализирует несколько уровней вложенных циклов и может выпол- нять некоторые преобразования порядка над операторами и циклами DO. Кроме того, компилятор векторизует циклы, содержащие линейные рекур- сии первого порядка, а также некоторые циклы, содержащие оператор IF. Следующие примеры векторизующей способности компилятора BSP-Фортра- на взяты из трудов [10]. Преобразование векторизации выражено на языке BSP параллельных конструкций (см. подразд. 5.5.1). С ЦИКЛ, СОДЕРЖАНИИ ОПЕРАТОР IF ПО 2 1=1,N-1 IFCH.GT.3) А(1>=А(1+1>+С<1> 2 CONTINUE С ПИКЛ IF ВЕКТОРИЗОВАН WHERE (M.GT.3)A(1:N-1>=A(2:N)+C(1:N-1> С УСЛОВНЫЙ МУЛЬТИОПЕРАТОР ВО 3 1=1,N IF (A <I). LT-BCD) GOTO 31 С(I)-E(I>+2 A(I)=0 GOTO 3 31 C(I>=F(I> 3 CONTINUE С . МУЛЫИОПЕРАТОРНЫИ ПИКЛ ВЕКТОРИЗОВАН LOGICAL L(N) L =A <1:N>.GE.B(1:N) WHERE (L) ГК) C(1:N)-E(1:N)+2 A <1:N> = 0 OTHERWISE C(1 :N>=F(1:N) ENOWHERE С МУЛЫИОПЕРАТОРНЫИ ПИКЛ С НЕВЕКТОРИЗУЕМОИ РЕКУРСИЕЙ ВО 4 1=2,100 A (I) =B(I) < 1 С<1> =П(3-1> 4 F <Т> nd) =С (1) +А (I) 4 F(I)=0(I'+2 228
С ЧАСТИЧНАЯ ВЕКТОРИЗАЦИЯ А (2:1О0)-В(2:100)+1 ВО 1=2’100 С(I)=B(1-1)+Е(I) Л (I)=С(I) +А (I) END DO F(2:100)=П(2:100)+2 С ЦИКЛ» ТРЕБУЮЩИЙ ПЕРЕУПОРЯДОЧИЕАНИЯ ОПЕРАТОРОВ ПО 5 1=1»N А (I) =Е(1)+С (I) С (I)=В(J-1) 5 BCD =2*А (1+1) С ВЕКТОРИЗАЦИЯ С ПЕРЕУПОРЯДОЧИВАНИЕМ И ВРЕМЕННЫМ СОХРАНЕНИЕМ REAL TEMP(N) TEMP(1:N)=A(2:N+1) A(1:N)=B(1:N)+C(1:N) B(1:N)=2*TEMP(1;N) С(1:N)=B(0:N-1) С НИКЛг ТРЕБУЮЩИЙ ПЕРЕУПОРЯДОЧИВАЮТ DO 6 I=bN DO 6 J=1>N DO 6 K=1’L A(I>J+liK)=B(I> J-l>K) 6 B(IjJfK)=A(IjJ>K) С ВЕКТОРИЗАЦИЯ С ПЕРЕУПОРЯДОЧИВАНИЕМ DO 7 J=lrN A( 1 :M>J+l’1:L)=B(1;MjJ-lr1:L) 7 B(1:M’J>1:L)=A(1:M»J’1:L) В последнем примере рекурсия в J была изолирована, а самые внутренние и внешние циклы в М и L были векторизованы. Отметим, что, хотя аппарат- ное обеспечение компилятора BSP и может обрабатывать линейную рекурсию первого порядка, процесс векторизации рекурсии осуществляется только в случае, если не может быть выполнено никакой другой векторизации над за- данным набором циклов DO. Причина заключается в том, что эффективность параллельного вычисления рекурсии первого порядка не является 100%-ной (см. разд. 5.2). Сравнение приведенных примеров с компилятором CRAY-1 CFT показы- вает, что фирма Burroughs является более искушенной в этой области авто- матической векторизации. Это очевидно из трех последних примеров, где для компилятора CFT преобразования должны делаться вручную. Другим преимуществом компилятора BSP является анализ процесса век- торизации, который выдается в качестве диагностического отсчета компиля- тора. Это предоставляет средство обучения для программиста, не имеющего опыта в параллельных структурах и методах программирования. 229
4.4. МАШИННО-РАСПАРАЛЛЕЛЕННЫЕ КОМПИЛЯТОРЫ Выражение машинно-распараллеленных компиляторов отвечает в большей или меньшей степени определенной архитектуре машины. Язык обычно вы- ражает подлежащий рассмотрению параллелизм компьютера, главным обра- зом, матрицы процессоров. В этом разделе рассматриваются два компилято- ра: CFD [209, 210], Фортрано-подобный язык для машины ILLIAC IV и DAP- фортран [115] — язык на основе Фортрана, используемый на машине ICL DAP. В обоих языках массивы могут объявляться как объекты параллельных данных. Однако они ограничены, так как уровень параллелизма ограничива- ется размерами соответствующих процессорных матриц: 64 процессора в ма- шине ILLIAC IV и 4096 — в машине DAP текущего производства. В дополне- ние к этому ограничению CFD дает очень смутное представление о многих характерных особенностях и ограничениях машины ILLIAC IV. Хотя машинно-распараллеленные языки по своей сущности и не являются переносимыми, они стали следствием истинной потребности пользователей. Потребность заключается в выражении задачи на параллельном языке высо- кого уровня и получения сгенерированной эффективной машинной програм- мы. Опыт работы с ILLIAC IV подтверждает это. Для машины ILLIAC IV были разработаны три системы различных язы- ков, являющиеся кросс-компиляторами. Это — CFD и GLYPNIR [148] (язык на основе Алгола), оба выражающие машинный параллелизм. Последний раз- работанный векторизующий компилятор назывался IVTRAN [160]. В обзоре [177] говорится, что выражение машинно-распараллеленных языков исполь- зовалось весьма широко, a CFD среди них — фаворит. Это удивительно, по- скольку CFD и GLYPNIR были в основном новыми языками. Язык IVTRAN был диалектом Фортрана с небольшими добавлениями. Обзор также показал, что факторами, влияющими на выбор языка, являются простота программи- рования, легкость доступа и быстрое выполнение. Машина ILLIAC IV была все же одной из первых параллельных машин. Сейчас в связи со все увеличи- вающимся числом устанавливаемых параллельных ЭВМ мобильность снова становится первейшей проблемой при проектировании языка. 4.4.1. Компилятор CFD Этот компилятор, предназначенный для машины ILLIAC IV, очень неудач- но отображает архитектурные свойства машины. В особенности зто наглядно проявляется при описании переменных на этом языке. t (7) Массивы и объекты скалярных данных. Прежде всего необходимо дать краткое заключение об аппаратурном обеспечении машины ILLIAC IV, чтобы получить соответствующее представление. ILLIAC IV — это матрица из 64 процессоров с плавающей точкой, каждый из которых имеет свою соб- ственную память, и все они управляются одиночным устройством управле- ния. Устройство управления содержит ограниченную память (64 ячейки) и относительно простое АЛУ. Оно выдает команды и, если потребуется, ска- лярные данные в матрицу процессорных элементов. В языке CFD переменная процессорного элемента должна быть массивом, первая размерность которого состоит из 64 элементов, обрабатываемых па- 230
раллельно. Переменные УУ являются скалярами в этом языке. Приведем некоторые примеры их описания: » CU INTEGER I,J,K » CU REAL А,В(10) » РЕ REAL AV(*), BV(*,100) » РЕ INTEGER IV(») Символ * означает селектор всей размерности (только первой размерно- сти) и указывает диапазон из 64 элементов, отображенных на матрице про- цессоров. Все арифметические операции с плавающей точкой выполняются над матрицами ПЭ, хотя скаляр из УУ может быть транслирован через матри- цу как один операнд для матричной операции. Переменные УУ используются, главным образом, для управления последо- вательностью выполнения операций в рамках программы и должны быть эк- вивалентны абсолютным ячейкам в памяти УУ. Несмотря на существующие ограничения, вследствие простоты арифметического устройства УУ блок об- работки УУ может применяться для вычислений индексов и переменных уп- равления циклом. Целочисленные переменные и константы могут быть объе- динены только с помощью арифметических операторов ”+” и ” и только в простых выражениях, не содержащих скобок. В следующем разделе программы иллюстрируется с помощью вышеука- занных описаний типичная обработка переменных УУ и ПЭ. Отметим, что все не присвоенные операторы в языке должны быть отмечены звездочкой (сим- вол *) в столбце 6. С УПРАВЛЕНИЕ ЦИКЛОМ РЕАЛИЗОВАНО В XX к=о * D0 20 1=1»10 • DO 10 J=l»10 K1=K+J С ПЛАВАОЦАЯ АРИФМЕТИКА» РЕАЛИЗОВАННАЯ В ПЭ 10 BV(*»K1)=BV(*»K1)+AV(*)*B(J) С ВСПОМОГАТЕЛЬНОЕ УПРАВЛЕНИЕ ЦИКЛОМ (XX) 20 К=К+10 (2) Управление условными зависимостями. Существуют два метода уп- равления условными зависимостями в языке CFD. Первый из них является глобальным или методом управления потоком, где используются операторы IF, имеющие одно значение истинности. Из приводимых примеров второй ил- люстрирует уменьшение массива значений истинности ПЭ: » IF(/.GT.X)BV(*,/) = AV(») » IF (. ANY. (AV(*). LT. 0.0)) RETURN Вторая форма управления условными зависимостями дает возможность автономной работы отдельным процессорным элементам. Каждый процес- сор имеет бит определения режима или переключатель, который осуществля- ет разблокировку цикла записи для определенных регистров или запомина- ющего устройства. Этот переключатель и другие одноразрядные регистры в каждом процессорном элементе могут устанавливаться в единицу от логи- 231
ческих операций или операций сравнения. Язык CFD содержит три глобаль- ные булевы векторные переменные: MODE, MBIT1 и MBIT2, тем самым зер- кально отражая аппаратное обеспечение. Эти переменные могут быть предва- рительно установлены или динамически присвоены. Дадим некоторые приме- ры установки переменной MODE: * MODE = ON » MODE = ON. TURN OFF. 1,64 *MBIT1 = (AV(*). LT. 0.0) * MODE = MODE. AND. MBIT1 Следует заметить, что в языке CFD не существует безусловного присвое- ния массива. Присвоением всегда управляет значение переменной MODE. (7) Выборка и индикация. Выборку в языке CFD можно производить из первой или подчиненной ограничениям размерности с целью получения ска- ляра, который может быть присвоен переменной УУ. Другие размерности мо- гут быть индексированы для выборки из наборов параллельных массивов. Существуют две следующие формы индексации в CFD: индексация сдвига и независимая процессорная индексация. Индексация сдвига определяется расстоянием сдвига и направлением, соответствующим селектору всей раз- мерности. С помощью выражения AV (* + J) выполняются сдвиги элементов AV (*) на J мест влево, а с помощью»выражения AV (* - К) — на А- мест вправо. Геометрия массива является периодической в одной размерности с процессорным элементом /, связанным с поднабором } = { (z ± 1, i ± 8) по модулю 64} . В языке CFD для сдвига + J AV (7) *- AV ( (/ + J) по модулю 64). Если |7| > 4, то аппаратное обеспечение автоматически вырабатывает сдви- ги на ±8, чтобы сохранить расстояние в сети маршрутизации. Другая особен- ность аппаратного обеспечения, заложенная в языке CFD, — возможность каждого процессора независимо индексировать свою собственную память. Это проявляется в языке как форма проекции косвенной адресации, описан- ной в подразд. 4.2.2. Такая выборка все же не является рангопонижающей, так как с ее помощью производится выборка в пространстве памяти или неподчиненной ограничениям размерности массива. Поэтому с помощью вы- ражения AV (*, IV(*)) выбирается элемент AV (/, IV (7)) в процессорном элементе I. (4) Примеры программирования. Первые два примера, которые давались в подразд. 4.2.7, повторяются здесь на языке CFD. Они иллюстрируют язык, а также то, как проблема отображается в аппаратном обеспечении. Для про- блемы общего отображения, поскольку никаких символьных типов в CFD не имеется, будем полагать, что буквы алфавита хранятся в первых 27 элемен- тах целочисленного массива процессорных элементов ALPHABET (*). Внут- ренняя кодировка не приемлема для решения этой проблемы. Алгоритм пе- ресылает эти данные в память УУ с помощью средства передачи блока и за- тем транслирует их обратно для генерации таблицы размерами 64 х 27. Эта выборка реализуется с помощью независимой индексации CFD. Отметим, 232
что этот пример является достоверным только для .'V> 64, причем последние 64 —Nэлементов массива WORD(*) должны быть заполнены пробелами. * FUNCTION WORD(ALPHABET,INDEX,N> * PE INTEGER ALPHABET(*),INDEX(»',WORD(*) * PE INTEGER TABLE '*<>?) * SCRATCH TABLE * CU INTEGER I,CUFLOCK(32) » EQUIVALENCE(1,1),(°,CUBlOCR<1') * TRANSFER(32) CUBLOCK(1)-ALPHABI I<1) W0RD(x)=0 MODE-OFF. TURN ON. l.TO.N * DO 10 1=1,27 10 . TABLE <*, I)-CUB1 OCK (I) WORD(x)-TA BL E(x, 1NDF X <x)) x RETURN x END Например, при матричном умножении значения N, L и М должны быть меньше или равны 64. Алгоритм, запрограммированный на языке CFD, ба- зируется на методе среднего произведения (см. подразд. 5.3.2). Передача блока здесь снова используется для загрузки строки из А в память УУ после- дующего использования в скалярных произведениях векторов. Однако, по- скольку для программы CFD доступны только 58 из 64 ячеек управления, внутренний цикл следует разбивать надве фазы из 32 иМ— 32 соответственно: зо * SUBROUTINE MATMULT(А,В,С,L,М,N) х РЕ REAL A(x,N),D((х,М)<C(x,N) х CU REAL AR0W(32) х CU INTEGER J,K,L,M,N,K1,K2 x EQUIVALENCE (1, J) (2,F),(3,L),(4,M>,(5,N), x (6,KI),(7,K2),<9,AR0W(l)) MODE-OFF. TURN ON. l.TO.L KI =32 » IF (M.LE.32) K1=M K?=M-32 x DO 20 J=1,N x TRANSFER(32) AROW(1)=A(1,J) C(x,j)-0 x DO 10 K=1,K1 C (x, J) =C (x > j)+AROU (Ю *B (x ,K) X TF (M.LE.32) GOTO 30 x TRANSFEROR) AROW(1)-A(33,J) x DO 20 K=33.K7 C(x,J)=C<x,J)+AROW(K)xB(x,K) x RETURN x END Эти примеры показывают, как CFD — язык, сильно зависимый от маши- ны, ограничивает применимость данного алгоритма. Для матричного пере- множения матриц больших,чем 64 х 64, как правило, требуется другая про- грамма. Кроме того, механика алгоритма представляется чем-то смутным, связанным с другими свойствами машинно-зависимого языка. 4.4.2. Компилятор DAP-Фортран Язык DAP-Фортран [115, 116] отличается от CFD тем, что его синтаксис проще и относительно свободен от второстепенных машинно-зависимых свойств. Если бы не тот факт, что уровень параллелизма ограничивается раз- 233
мерами машины DAP по первой или двум первым размерностям переменных массива, язык представлял бы хороший поднабор конструкций, описанных в разд. 4.2. Однако вследствие ограничений степени параллелизма объекты параллельных данных могут быть рассмотрены в языке как новые типы. Для DAP-матрицы N х Nвектор имеет диапазон из Означений по одиночной размерности, а матрица — диапазон из Nзначений по двум размерностям. При- своения и выражения, содержащие эти типы данных, вычисляются параллель- но, как описывалось в подразд. 4.2.3 и 4.2,6 (см. описание аппаратного обес- печения машины DAP в разд. 3.3). (J) Объекты данных. В языке DAP-Фортран массивы описываются обыч- ным способом с помощью оператора DIMENSION или TYPE, однако векторы указываются по умолчании по их первой размерности, а матрицы — по пер- вым двум размерностям. Эти размерности подчинены ограничениям и прини- мают размер DAP из N элементов для вектора и jVx УУдля матрицы. Наборы из этих объектов могут также описываться с помощью других размерностей; DIMENSION V( ), VSET(,4) REAL M(,), MSET(„4) В примерах приведены одиночный вектор V и векторный набор VSET из четырех векторов, за которыми следует матрица М и матричный набор MSET из четырех матриц. Размерности, не подчиненные ограничениям, предназначе- ны только для последовательного доступа и отображения в DAP-памяти. Де- тали этого отображения разбирались в подразд. 3.3.4. Эти размерности обо- значаются точно так же, как в стандартном Фортране. Поскольку параллельные размерности ограничены размерами DAP-матри- цы, объекты подобного типа согласуются. При смешивании объектов различ- ного типа все же следует применять деформацию. Язык DAP-Фортран допус- кает деформацию скаляров в типичный вектор и матрицу и предоставляет функции для деформации векторов в типичную матрицу. Две функции MATR и МАТС выдают матрицы, сформированные повторением вектора со- ответственно в качестве строк или столбцов матрицы. (2) Механизмы выборки из размерностей с ограничениями в языке DAP- Фортран используют целые, логические и целочисленные векторные индексы (см. подразд. 4.2.2). Векторная или косвенная индексация может быть ис- пользована в качестве проекции всех строк или столбцов. Этот метод все же не может применяться в размерностях без ограничений, как зто может быть сделано в языке CFD. Вся выборка из размерностей с ограничениями является рангопонижаю- щей, за исключением процедуры селективного обновления (см. подразд. 4.2.6). Поэтому выборка из матрицы дает либо одиночный вектор, либо оди- ночный скаляр, а выборка из вектора всегда дает скаляр. Механизм выборки по диапазону отсутствует, и логическая выборка должна воспроизводить единственный результат. Приведем примеры этих механизмов выборки для следующих описаний: REAL М(,), V( ) INTEGER ) LOGICAL ML(,),VL( ) 234
М(/,) строка/вМ, М (, J) столбец J в М, М (/, J) элемент I, J в М, И(/) элемент / в V, М (VL) строка в М, М (, VL) столбец в М, М(ML) элемент в М, K(VL) элемент в V, М (VI) вектор, содержащий М (VI(/), /) в элементе /, М (, VI) вектор, содержащий М (/, VI(/)) в элементе /. В этих примерах вектор и логические матрицы должны иметь один и тот же набор элементов в массиве TRUE, а целочисленный вектор VI должен иметь все свои элементы в диапазоне от 1 до N. Индексация в языке DAP- фортран обобщается посредством размещения в указанных примерах при- годных выражений вместо переменных. В качестве операции индексации с помощью символа + или — в любой из размерностей с ограничением может применяться маршрутизация. Приве- дем примеры: V (+) сдвигает V на одну позицию влево, V (—) сдвигает V на одну позицию вправо, М (+,) сдвигает М на одну позицию на север, М (, —) сдвигает М на одну позицию на юг, М (, +) сдвигает М на одну позицию на запад, М (, — ) сдвигает М на одну позицию на восток, М(+) сдвигает М на одну позицию влево; рассматривается как длин- ный вектор, М (—) сдвигает М на одну позицию вправо; рассматривается как длин- ный вектор. Сдвиги более, чем на одну позицию, выражаются с помощью функций. (3) Присвоение массивов. Выражение индексации в левой части присвое- ния указывает, какая выбранная часть переменной должна быть обновлена. Это селективное присвоение может быть применено для согласования при- своений, например векторное выражение может быть присвоено любой обще-. значимой выборке вектора из матрицы. Кроме того, выборка может также допускать обновление диапазона значений, где выражение и левая часть со- гласуются. В этом случае в выборке указывается только, какие элементы, должны быть присвоены и какие оставлены без изменений. К примеру, рас- смотрим использование логической матрицы или логической векторной ин- дексации: М (LM) = < матричное выражение >; М (LV) = < матричное выражение >. В обоих случаях ограничения, которые были установлены в правой части индексации, более не действуют. Логическая матрица LM или логический вектор LV могут содержать более одного элемента истинности. Поэтому LM выбирает набор элементов, которые должны быть обновлены, a LV — набор векторов строк. В обоих случаях элементы, выбранные для обновления, бе- рутся на основе соответствующих элементов в выражении матрицы, а те, ко- торые не выбраны, остаются неизменными. 235
(4) Функции. Ввиду того, что выражения на языке DAP-Фортран могут быть матрично- или векторно-значными, описание подпрограмм функций бы- ло расширено и включило в себя матрично-значные и векторно-значные функ- ции, а также более обычные скалярно-значные функции. Тип функций описы- вается в операторе функции. Так, real matrix function maltmult описывает функцию MALTMULT, которая выдает вещественный матрично- значимый результат. Кроме расширения функции, описываемой пользователем, стандартные или встроенные функции Фортрана были сделаны полиморфными. Они выда- ют значения одинакового типа в виде аргумента вместе с типами матриц и векторов, вычисляемыми параллельно. Другие встроенные функции, введен- ные в DAP-Фортран, включают в себя функции манипулирования данными, сдвига, селекции и понижения ранга. Функции понижения работают с любой или обеими ограниченными размерностями посредством арифметических, реляционных или логических операторов. Приведем несколько примеров: ALL Операция .AND. со строками и столбцами ANY Операция .OR. со строками и столбцами ANDROWS Операция .AND. со строками ORCOLS Операция .OR. со строками SUM Операция + со строками и столбцами МАХР Операция > со строками и столбцами (дает только логи- ческую позицию). (5) Примеры. В примере общего отображения программа для DAP-Фор- тран выглядит очень похожей на ту, которая приводится для общих парал- лельных конструкций (см. подразд. 4.2.7). Это обусловлено размером ото- бражения задач на матрицу DAP или ограниченными размерностями в DAP- фортран. Однако, как и в языке CFD, программа хорошо работает только для 7V< 64. Массивы ALPHABET и WORD должны также дополняться пробе- лами до длины 64 CHARACTER VECTOR FUNCTION WORD(ALPHABET»INDEX) CHARACTER ALPHABET( ) INTEGER INDEX( ) WORD=(MATC(ALPHABET))(INDEX») RETURN END Отметим, что в соответствии с требованиями синтаксиса индексируемое выражение должно быть заключено в скобки. (6) Пример матричного перемножения. Из-за ограниченных размеров про- грамма, приводимая ниже, перемножает матрицы меньших размеров или рав- ных размеру DAP. Вариант используемого алгоритма представляет собой ал- горитм внешнего произведения, который имеет уровень параллелизма N2 (см. подразд. 5.3.3). REAL MATRIX FUNCTION MATMULT(A»B»N) REAL A(,)»B(.) INTEGER K»N MATMULT=O 236
DO 10 K=bN 10 MATHULT=HATMULT+HATC(A(,K))*MATR(B(K,)) RETURN END На языке DAP-Фортран можно также придумать вариант общего выраже- ния матричного перемножения для матриц размером 16 х 16 (16 является кубическим корнем из 642 ) : HATHULT(ROW(I3).AND.COL(J3))=SUH-4-SQUARE( HATC-4-S0UARE (АН 1» Ji) » MATR-4-SQUARE(BfI2>J2) ,I3»J3> где SUM-4-SQUARE, MATC-4-SQUARE и MATP-4-SQUARE - функции, опи- санные пользователем [129], которые имитируют DAP размером 163 с помо- щью симметричного низкого порядка DAP-матрицы размером 642 [128]. 4.5. ПРОБЛЕМНО-РАСПАРАЛЛЕЛЕННЫЕ КОМПИЛЯТОРЫ В этом разделе описываются два компилятора, которые выбирают наибо- лее общий маршрут для параллельного Фортрана. Используемые конструк- ции в обоих компиляторах аналогичны тем, которые были очерчены в разд. 4.2, где описанный параллелизм относится к проблеме пользователей, а не к аппаратному обеспечению определенного компьютера. Структуры данных пользователя описывают начальную степень параллелизма с выборкой и рас- ширением этих структур, повторно описывающих параллелизм во время вы- полнения программы. Из двух рассматриваемых компиляторов один - BSP-Фортран [10, 36] - представляет собой изделие для объявленного параллельного компьютера. Другой — VECTRAN представляет собой экспериментальное расширение в IBM Фортране для векторной и матричной обработки [169, 170]. 4.5.1. Компилятор BSP Векторизующие возможности компилятора BSP на нераспараллеленной программе уже обсуждались в разд. 4.3. Здесь будут описаны параллельные конструкции. (7) Массивы как объекты данных. Компилятор BSP-Фортран содержит множество конструкций, аналогичных тем, которые описаны в разд. 4.2. По- этому здесь будет сделан упор на отличия. Массивы рассматриваются так же, как и ранее, — в качестве параллельных объектов данных. Выборка из масси- вов в основном та же, за исключением того, что знак используется в ка- честве селектора всей размерности, а селектор диапазона специфицируется тройкой целых чисел илй целочисленными выражениями, разделенные дво- еточиями. Основное различие в индексации относится к способу описания косвенной индексации. В компиляторе BSP-Фортран принято множество об- щих отображений, которое исключает предпочитаемую нами проекцию. 237
Приведем несколько примеров, которые представляют выборку из дву- мерного массива А (100, 100). А выбирает весь массив, А(ЛГ, *) выбирает строку Лгиз А, A.(N, 1 :100 : 2) выбирает нечетные элементы из строкиN, A (N, V) специфицирует отображение, определенное по строке N целочисленным вектором V. (2) Оператор ARRAY. Для обеспечения большей гибкости предоставля- ется более мощный механизм выборки. Он принимает описательную форму, которая предусматривает точное название разреженной или плотной выборки из заданного массива. Проиллюстрируем формат оператора ARRAY, описывающего ROWN как динамический поднабор матрицы, рассматриваемой в упомянутых примерах: ARRAY ROWN(3=1:100) A(N»3) Компилятору сообщается, что ROWN идентифицирован как поименован- ный раздел массива A, N — рабочая переменная, которая динамически опре- деляет ROWN, a J — фактическая переменная границ, специфицирующая про- тяженность в одной размерности этого идентифицированного массива. Вооб- ще может быть специфицировано более одной размерности путем указания списка фиктивных переменных и соответствующих диапазонов. Это свойство оператора ARRAY может заменить многие манипуляционные функции, которые бы потребовались в его отсутствие в параллельном языке. Эти функции включают в себя деформацию, трансляцию и некоторое пере- формирование. Индексное выражение главного массива может быть пред- ставлено любой линейной комбинацией граничных фиктивных переменных и использовано в идентифицированном списке размерностей массива. Приве- дем несколько примеров для матрицы А (100, 100). ARRAY DI AGA (1=1:100) А(Ы) 1 TRANA(I=i8100»J=i:100) A(3»I) 2 MATl-ROWN(I=i:100»3=i;100) A(N, J) 3 MAT2-R0WN(I=i:10»J=i:10) A(Nr(3-1)*10+1) Отображения DIAGA и TRANA понятны сами по себе, тогда как отображе- ния МАТ 1-ROWN и MAT2-ROWN являются более сложными. МАТ 1-ROWN - это матрица 100 х 100, идентифицированная строкообразным повторением jV-й строки массива А. Второе отображение, MAT2-ROWN — матрица 10 х 10, снова идентифицированная строкой N массива А, но переформированная с помощью большого упорядочения по столбцам. Следует отметить, что иден- тифицированные матрицы являются фиктивными массивами и поэтому не требуют хранения. Оператор просто дает информацию компилятору, относя- щуюся к концептуальному отображению элементов в главном массиве А. (3) Представление массива и присвоение. Все операнды (за исключением скаляров) должны согласовываться в матричных выражениях и присвоени- ях. Это не вызывает никаких проблем, учитывая силу оператора ARRAY, ко- торый может производить выборку, переформирование или деформацию объектов массивов. Индексация выражений также может быть выполнена с 238
помощью оператора ARRAY, так как идентифицированные массивы также могут быть индексными. Присвоения условным зависимостям обеспечиваются на языке посред- ством структуры WHERE . .. OTHERWISE . . . ENDWHERE, которая аналогич- на последовательной конструкции IF . . . THEN .. . ELSE . . . ENDIF. Формат для одиночного присвоения имеет вид WHERE (A.LT-O) А=-А а для групп операторов он становится WHERE (A.LT.O) ВО OTHERWISE ENDWHERE (4) Другие свойства. Другие свойства компилятора BSP-Фортран включа- ют в себя конструкцию сбора — рассылки, асинхронный ввод-вывод и при- своение коммутированию. Последнее является выражением свойства аппара- туры, а первые два настроены на архитектурные и проектные свойства BSP. Механизм сбора - рассылки в языке необходим, чтобы наилучшим обра- зом использовать относительно небольшую степень параллелизма аппаратуры BSP. Поскольку большинство векторных операций требует множества по- следовательных шагов в 16-процессорной матрице, имеет смысл собрать вме- сте операнды операции с разреженными векторами и затем использовать свойства матрицы с наибольшей эффективностью. Свойство сбора — рассыл- ки использует мощность координатного коммутатора в BSP, который может выполнять сложные отображения, необходимые для сжатия активных эле- ментов при разреженных вычислениях. (5) Примеры. Так как косвенная индексация реализуется в форме обще- го отображения, первый пример из подразд. 4.2.7 становится тривиальным для реализации. Поэтому дается единственная программа перемножения матриц; ARRAYENf*»*) MATMULT(ArBfN,L»M) DIMENSION A(N»M)» B(MiL) ARRAY XF'NDA(I=i:N,J=i:M>K=i:L) A(bJ) XPNDB(I=1:N,J=1:M,K=1:L) A(J»K) MATMULT’O DO 10 J=1>M 10 MATMULT=MATMULT+XPNDA(«rJ,*)*XPNDB<»> RETURN END Существуют несколько интересных моментов, которые иллюстрируются в этой программе. Первый относится к матрично-значной функции, которая имеет специфицированную размерность, а не диапазон. Следовательно, кон- троль на соответствие во время компиляции при таком присвоении невозмо- жен. Другой момент связан с тем, что функция SUM в компиляторе BSP- фортран не предоставляет вариант суммирования по заданной размерности 239
многомерного массива. Поэтому, хотя структуры данных представлены (концептуально) в виде N х М х L, суммирование по второй размерности выполняется последовательно. Это не ставит машину BSP, имеющую малое значение п , в невыгодное положение, но для ЭВМ с большей степенью па- раллелизма может потребоваться большая распараллеленность алгоритма. 4.5.2. Язык VECTRAN VECTRAN представляет собой экспериментальное расширение языка IBM- Фортран для обработки массивов и векторов [169, 170]. Этот язык также отражает многие принципы и конструкции, которые обсуждались в разд. 4.2. (7) Массивы как объекты данных. VECTRAN рассматривает также все массивы или секции массивов как объекты данных, способ применения ко- торых в выражениях описывался ранее. Характерные черты, которые выде- ляют этот язык среди приведенных конструкций, относятся к способу опи- сания соответствия. Соответствие представляет собой концепцию процесса компиляции и бази- руется на определяемой концепции диапазона. Говорят, что матрично-знач- ные объекты согласуются, если они имеют одинаковый диапазон. Тем не менее, диапазон объекта описывается оператором RANGE, кото- рый в языке VECTRAN заменяет оператор DIMENSION. (2) Оператор RANGE. Единственным различием между операторами RANGE и DIMENSION является спецификация списка диапазона для задан- ной группы массивов. В этом списке определяется понятие диапазона, при этом согласовывается константа или переменная с каждой размерностью мас- сива в группе. Поэтому в списке должно быть столько элементов, сколько размерностей в каждом массиве. Следовательно, выражение RANGE/NfH/A(100,100)тВ(100т100) согласовывает диапазон N с первой размерностью массивов А и В, и диапа- зон М со второй размерностью А и В. Эти переменные могут устанавливать- ся динамически и затем определять число элементов при каждом обращении к любой секции в А или В. К примеру, если бы для N было установлено зна- чение 5, а для М — 10, то А специфицирует главный подмассив 5 х 10 в А; А(*, 5) специфицирует в 5-м столбце в А только первые 5 элементов; А (10, *) специфицирует в 10-й строке в А только первые 10 элементов. Эти секции иллюстрируются на рис. 4.8. Отметим, что селектор (например, указанное значение 10) может быть вне специфицированного диапазона для заданной размерности. Тогда в языке VECTRAN диапазон объекта опреде- ляется путем спецификации диапазона в нижнем индексе позиции, в которой содержится селектор всего диапазона *. Так же как в языке BSP-Фортран, выбранная форма косвенной индексации является вариантом общего отображения. Таким образом, при использовании ее с заданной размерностью диапазон этой размерности берется по диапазону вектора индексации. Язык VECTRAN также допускает операции сдвига, ко- торые специфицируются в виде целочисленного выражения, за которым сле- 240
Рис. 4.8. Выборка VECTRAN-массива с диапазоном А множества 5 X 10 (V -5, -10); достоверная выборка может осуществляться и вне этого диапазона дует селектор всего диапазона. Кроме того, знак, предшествующий этому се- лектору, указывает на прямой или обратный порядок выборки элементов. Отрицательный знак указывает отображение обратного порядка по заданно- му диапазону (сдвига). Следовательно, А(— *) по диапазону 4 эквивалентно А (V), где V — целочисленный вектор, содержащий значения 4, 3,2, 1. (5) Идентификация вторичных массивов. Описание вторичных или фик- тивных массивов аналогично описанию в BSP-Фортран с помощью оператора ARRAY. Однако здесь этот оператор является исполнительным, который идентифицирует переформирование или отображение родительского или главного массива. Для иллюстрации оператора IDENTIFY в VECTRAN здесь приводятся те же самые примеры, которые были даны для оператора ARRAY в BSP-Фор- тран (см. подразд. 4.5.1). IDENTIFY/100/DIAGA(I)=А (Ы) IDENTIFY/ЮО» 100/TRANA <1, J)=A (Jr I) IDENTIFY/100» 100/HATi-R0WN(bJ)=A(N>J) IDENTlFY/lOi 10/HAT2-R0WN(I.J)=A(N(J-i>»10+I) Можно видеть, что диапазон идентифицированного массива специфициру- ется с помощью списка диапазонов так же, как в операторе RANGE. Диапа- зон также может быть задан в виде целочисленной переменной, специфициру- ющей динамическое отображение, которое ограничивается так же, как в BSP-Фортран линейной комбинацией фиктивных переменных с индексами. 241
(4) Условное присваивание. Для условного присваивания в языке VECT- RAN употребляется конструкция WHEN . . . OR, которая не является блоч- но-структурированной. Она базируется на соответствующем логическом вы- ражении, поэтому из условия WHEN(A.LT.O) А=-А получаем абсолютное значение А. К тому же оператору можно добавить опе- ратор условия OR: WHEN(DIV.LT.1.E6) А=А/1.Е6 OR A=A/DIV В языке VECTRAN также введен оператор АТ, аналогичный оператору WHEN, но подразумевающий последовательное вычисление последующего выражения. Не совсем понятна причина его включения в качестве расшире- ния для параллельного языка, поскольку это может только запутать пробле- му, так как оператор подразумевает итерацию в порядке столбцов основной памяти. (5) Другие свойства. Язык VECTRAN, который схож во многих отноше- ниях с языком BSP-Фортран, также содержит механизмы сбора — рассылки в форме операторов РАСК и UNPACK. Однако, что, вероятно, более важно, он все же предоставляет некоторые манипуляционные функции в виде специ- альных операторов массивов — как унарных, так и бинарных. Эти свойства являются приемниками языка АПЛ [111]. Поэтому оператор .Т. является новым оператором транспозиции. Это при- ставочный оператор, который не предусматривает повторного отображения до тех пор, пока не будет сделано точное присвоение транспортированного массива. Аналогичным образом введены операторы приведения для общих функций приведения, например для суммирования — оператор +/ и для про- изведения — оператор */. Введены также операции перемножения матриц и внутреннего произведения в виде двоичных операторов и .,. соответ- ственно. (6) Примеры. Здесь снова будет рассмотрен пример перемножения мат- риц, так как косвенная индексация реализуется в форме общего отображе- ния. Операция перемножения может быть очень просто запрограммирована с помощью оператора .*., поэтому пример, который проходит через весь этот раздел, приводится к одной простой операции: DIMENSION A(N»M)»С(NrL) L • C=A.».B 4.6. МОБИЛЬНОСТЬ На основании изложенного в последних трех разделах этой главы стано- вится ясным один момент — при отсутствии какого-либо стандарта на сред- ства обработки массивов в Фортране каждая фирма-изготовитель выбирает 242
свой собственный путь. Чтобы проиллюстрировать это, рассмотрим простые условные конструкции, имеющиеся в некоторых из описанных языков. Возь- мем цикл на стандартном Фортране DO 10 1=1>64 10 IF (A(I).LT,1.0E-4> A(I>=1.0E-<S Для машины CRAY-1, несмотря на то, что язык CFT представляет собой стандартный Фортран, обычно используется одна из нестандартных функций слияния, иначе цикл не векторизуется, например DO ю 1=1 10 A(I>=CV«GP(A(I>Н.ОЕ-6»1.0Е-6-А(I)) В языке STAR-Фортране используется аналогичный нестандартный функ- циональный подход, но с аргументами векторов, например BITC1г 1:64)=А(1»1:64).LT.1.ОЕ-6 А(1 -1:64) =t)8MCTRL (1.0E-6,BIT(1,1:64) !А(1,1:64) В языке DAP-Фортране применяется логическое векторное выражение в качестве индекса левой части, например A(A.LT.1.ОЕ-6)=1.ОЕ-6 В языке BSP-Фортране на месте последовательного оператора IF употреб- ляется конструкция WHERE, например WHERE (A.LT.1.ОЕ-6) А=1.0Е-6 И последнее, в языке VECTRAN применяется аналогичная конструкция, где используется ключевое слово WHEN, например WHEN (A.LT.1.ОЕ-6) А=1.0Е-6 Остается только гадать, какая из этих конструкций будет включена в сле- дующий стандарт ANSI, если вообще что-то будет включено. Так как появление следующего стандарта на Фортран не ожидается до конца 80-х годов, проблемы, с которыми покупатели столкнутся при перено- се программ с одной параллельной ЭВМ на другую, вероятно, будут самыми важными. Существуют два возможных решения этой проблемы, ни одно из которых не обладает большим преимуществом. 4.6.1. Метод стандартного Фортрана Очевидно, стандартный Фортран является средой, в которой (можно наде- яться) осуществляется перенос программ [239, 240]. Однако он имеет серь- езные недостатки. Векторизация часто будет тормозиться, если в программу не будут включены неявные конструкции или нестандартные средства. Это показано в приведенном примере и рассматривалось в подразд. 4.3.2. На компьютерах, которые имеют относительно небольшое значение И]/2 и приемлемую скалярную производительность, штраф, оплачиваемый за от- сутствие векторизации всей программы, является минимальным, а метод стандартного Фортрана — благоразумным. Однако это не относится к ЭВМ с 243
большим значением «i/2. Здесь одиночный распараллеленный оператор, ко- торый не осуществляет векторизацию, может полностью преобладать в вы- числении. Эти два метода иллюстрируются на примере машин CRAY-1 и ICL DAP, у которых значения п^2 отличаются на два порядка. Метод стандартного Фор- трана целесообразно использовать на машине CRAY-1, но, как правило, он дает очень плохие результаты, если реализован на такой машине, как DAP. 4-6.2. Трансляция типа источник — источник Второй подход к мобильности представляет автоматическую трансляцию программы с одного диалекта Фортрана на другой. Преимущества такого подхода очевидны: сейчас можно четко выразить алгоритмы в параллельных конструкциях с трансляцией различных диалектов Фортрана, осуществляе- мой программным обеспечением. Квадратического увеличения числа транс- ляторов как функции числа диалектов можно избежать, воспользовавшись описанными в работе [253] методами, предусматривающими стандартный промежуточный язык, с помощью которого выполнялась бы трансляция. Недостаток такого подхода лежит в стоимости ПО и потере эффективно- сти, которую следует ожидать при этом процессе. Транслятор в лучшем слу- чае будет работать только как ’’средний” программист для объектной маши- ны и может практически давать даже худшие результаты вследствие алгорит- мических ограничений. В текущем поколении параллельных компьютеров и компиляторов алго- ритмы, к сожалению, сильно зависят от архитектуры, отсюда требуемая про- цедура трансформации между ними становится, не тривиальной. Наиболее очевидные отличия заложены в машинном параллелизме, но другие факторы, такие как отношение скалярной и векторной скоростей обработки, будут также влиять на тип выбранного алгоритма для заданной машины. Более хитроумные факторы, которые предусматривают сбалансированность маши- ны, предоставляют средства, которые использует программист. В этом про- цессе они будут инвариантными трансляции, поэтому, если алгоритм не бу- дет запрограммирован на высоком уровне, трансляция будет неизменно вы- давать неправильные результаты. Такие выводы были сделаны авторами при полуавтоматическом переводе программы с языка CFD (ILLIAC IV) на язык CFT (CRAY-1). Хотя есте- ственный параллелизм этих двух машин идентичен (64), временной интер- вал прохождения программы на CRAY-1 был разочаровывающим вследствие других архитектурных особенностей. Поэтому не существует ясного решения проблемы мобильности, такое со- стояние будет сохраняться, по крайней мере, до того момента, пока некото- рый стандарт на расширение обработки массивов на Фортране не станет обще- признанным. Вполне очевидно, что это зависит не от фирм-изготовителей и тех, кто винит их; в конце концов, большая доля истины заложена в старом изречении: ” Мобильные программы определяются потенциальными клиен- тами”. Вероятно, сейчас настало время, чтобы сообщество пользователей объявило об этом во всеуслышание. В небольших секциях сообщества поль- зователей уже была осуществлена некоторая обнадеживающая кооперация 244
[Ill, 246]. Однако общие перспективы будут оставаться довольно туманны- ми до тех пор, пока комитет ANSI X3J3 не опубликует свои предложения. Даже и тогда, когда алгоритм будет закодирован на надлежащем абстракт- ном уровне, оставляющем программиста без работы, перспективы решения проблемы мобильности будут еще не до конца ясными. 5. ПАРАЛЛЕЛЬНЫЕ АЛГОРИТМЫ 5.1. ОБЩИЕ ПРИНЦИПЫ Для получения от любого компьютера оптимальной производительности необходимо, чтобы программа соответствовала архитектуре машины. Это всегда так было, даже в случае с последовательными компьютерами, и оста- ется в силе до сих пор. Именно по этой причине корректно написанная про- грамма на ассемблере, которая учитывает структуру машины, может пре- восходить по производительности программу, составленную самыми совер- шенными компиляторами. Что изменилось с появлением параллельного ком- пьютера, так это соотношение между производительностью хорошо и плохо составленной вычислительной программы. Это соотношение, как правило, не превышает двух или трех для последовательного, тогда как для парал- лельных компьютеров это соотношение нередко составляет 10 и более. Вот так просто существенно поднялись ставки в игре составления программ. В этой главе мы не пытаемся дать обзор параллельных алгоритмов по всем основным областям численного анализа — такая задача потребовала бы издания отдельного тома. Вместо этого мы выбрали ряд связанных задач, ил- люстрирующих рассуждения, которые, по всей вероятности, являются важ- ными при выборе алгоритма. Кроме того, мы покажем, как можно простым способом с помощью принципов, изложенных в гл. 1, производить анализ относительной производительности алгоритмов. В разд. 5.2 мы начнем с простой задачи нахождения суммы множества чисел, а затем расширим эти методы до решения рекурсий общего вида первого порядка. Перемножение матриц является другой простой задачей (см. разд. 5.3), демонстрирующей множество подходов, каждый из которых соответствует определенному ти- пу параллельной ЭВМ. Тридиагональные системы уравнений (см. разд. 5.4) и трасформируемые функции возникают очень часто и заслуживают специаль- ного рассмотрения. Результаты, полученные в двух последних разделах, затем используются в разд. 5.6 для анализа различных итерационных и прямых методов решения уравнений в частных производных. В этом разделе делается главный упор на методы быстрого преобразования, которые применяются для определенных классов простых дифференциальных уравнений в част- ных производных, таких как уравнение Пуассона. Из многих областей, ко- торые мы не рассматриваем ввиду нехватки места, наиболее важным, веро- ятно, являются оптимизация, извлечение корня, обычные дифференциальные уравнения, полные и разреженные линейные уравнения общего вида, обра- щение матриц и вычисление собственных значений. Читатель для рассмотре- ния некоторых из этих тем может обратиться к работам' [97, 161, 180]. 245
5.1.1. Производительность Обозначим производительность программы ЭВМ как величину, обратно пропорциональную времени процессора1, затрачиваемую на выполнение программы. Другими словами, высокопроизводительная программа дости- гает своей цели за наименьшее время. Поэтому в этом контексте основной целью является минимизация времени, затрачиваемого процессором на реше- ние задачи. Производительность ЭВМ можно оценить — с точки зрения мини- мальной стоимости определенной вычислительной системы или минималь- ного использования памяти. Интересно отметить, что в ЭВМ первого поколения, например, в машине EDSAC с общей емкостью быстрой памяти только в 512 слов [250] наибо- лее важным критерием проекта было минимальное использование памяти, и поэтому были придуманы специальные алгоритмы, например вариация Гилла в методе Рунге — Кутта для решения обычных дифференциальных уравнений [84]. Важно также осознать, что цель минимального времени вы- полнения на параллельных ЭВМ не всегда является синонимом выполнению минимального числа арифметических операций способом, который приме- нялся на последовательной ЭВМ. Это будет очевидно из примеров, приво- димых далее в этой главе, и возникает ввиду того, что прибавки в скорости, являющиеся результатом увеличения объема выполняемых параллельных операций в алгоритме, могут перевесить стоимость введения дополнительных арифметических операций. Поэтому, несмотря на то, что наиболее эффектив- но измерять производительность аппаратуры ЭВМ через число выполняемых операций с плавающей точкой в секунду, такая мера не всегда приемлема при оценке производительности алгоритма на параллельной ЭВМ. Производительность машинной программы зависит как от ее соответствия цифровой процедуре, известной как алгоритм, который применяется для ре- шения задачи, так и от мастерства, с которым этот алгоритм реализуется на ЭВМ программистом или компилятором во время работы по кодировке. В данной главе мы рассматриваем алгоритмы, подходящие для решения ряда общих задач на параллельных компьютерах. Если степень параллелизма в алгоритме соответствует степени параллелизма компьютера, то почти на- верняка опытный программист может написать высокопроизводительную программу. Однако рассмотрение деталей программирования для какой-ли- бо определенной ЭВМ лежит вне сферы данной книги, и читатель может обра- щаться к справочным руководствам по программированию на его индивиду- альную ЭВМ. Для большинства параллельных ЭВМ предусматривается векто- ризующий компилятор с языка высокого уровня, обычно Фортрана с расши- рениями возможностей для обработки массивов или без них (см. гл. 4). Следует осознавать возможности потенциальной производительности на та- ком языке. В большинстве случаев будет необходимо кодировать ключевые части программы на языке ассемблера, а следовательно, управлять всеми архитектурными особенностями машины, чтобы достичь предельной произ- 1 Время процессора - время, в течение которого вычислительные устройства ЭВМ (арифметические и логические) задействованы на выполнение программы. Оно не вклю- чает в себя время на операции ввода и вывода. 246
водительности (например, супервекторную производительность на машине CRAY-1 (см. гл. 2). 5.1.2. Параллелизм На любом уровне алгоритма параллелизм его обозначается как число ариф- метических независимых операций, которые поэтому могут выполняться па- раллельно, т. е. совместно или одновременно. В конвейерном компьютере данные для операций обычно описываются как векторы, а выполняемая опе- рация — как одна векторная команда. Тогда параллелизм — это то же самое, что и дайна вектора. В матрице процессоров данные для каждой операции размещаются в различных процессорных элементах матрицы, и операции над всеми элементами выполняются одновременно в ответ на интерпретацию од- ной команды в главном устройстве управления. Уровень параллелизма при таком способе представлен числом обрабатываемых параллельно элементов данных. Параллелизм может оставаться постоянным на всех уровнях алго- ритма (как в случае перемножения матриц в разд. 5.3) или может изменять- ся от уровня к уровню (как в случае SERICR, последовательная форма цик- лического приведения в подразд. 5.4.3). Архитектура параллельных компьютеров ориентирована, в основном, на достижение наибольшей производительности на операции с векторами опре- деленной длины (т. е. определенным числом элементов). Мы будем рассмат- ривать это как естественный параллелизм машины. Например, машина ICL DAP (матрица 64 х 64) обеспечивает три типа памяти и режимов арифмети- ки для векторов, соответственно, одномерный (горизонтальное хранение и скалярный режим), дайною 64 (горизонтальное хранение и векторный ре- жим) и длиной 4096 (вертикальное хранение и матричный режим). Хотя эти режимы получаются с помощью программного обеспечения, их выбирают в соответствии с размерами аппаратуры DAP-матрицы, поэтому они составля- ют три уровня естественного параллелизма, каждый из которых обладает своим собственным уровнем производительности (см. разд. 3.3). В конвей- ерных компьютерах без векторных регистров, таких как CYBER 205, сред- няя производительность [см. (1.9) ирис. 1.14] монотонно возрастает по мере увеличения длины вектора, и можно говорить, что естественный параллелизм аппаратного обеспечения является продолжительным, насколько это возмож- но (до максимальной длины вектора, допускаемой аппаратным обеспечени- ем машины, т. е. 64К — 1). В конвейерных компьютерах с векторными реги- страми, такими как CRAY-1, производительность будет наибольшей для длин векторов, которые представляют собой кратные числа от числа элементов, хранящихся в векторном регистре. Для CRAY-1 с векторными регистрами, содержащими 64 элемента вектора, естественный параллелизм равен 64 и кратным числам. Главная задача хорошего программиста-аналитика — найти метод реше- ния, который отражает наилучшее соответствие между параллелизмом алго- ритма и естественным параллелизмом компьютера. 247
5.1.3. Паракомпьютер и эффективность Для оценки производительности матриц процессоров Дж. Шварц ввел кон- цепцию паракомпьютера [197]. Этот компьютер представляет собой беско- нечную матрицу процессорных элементов типа ОКМД, где ПЭ могут парал- лельно обращаться за любым элементом данных к общей памяти. На таком компьютере любой алгоритм имеет свою максимальную производительность, поскольку устранены обычные причины его неэффективной работы. Пара- компьютер не ’’страдает” задержками на коммутацию и конфликтами памя- ти (см. подразд. 5.1.4 и 5.1.5) и имеет подходящие процессорные элементы. Несмотря на то, что этот паракомпьютер никогда не будет построен, он пред- ставляет собой полезную концепцию для оценки производительности алго- ритма и практических матриц процессоров. Например, можно обозначить параэффективность как _ время выполнения на паракомпьютере Р время выполнения на реальном компьютере где мы допускаем, что процессорные элементы на паракомпьютере и реаль- ном компьютере имеют одну и ту же производительность аппаратного обес- печения. Можно также воспользоваться соотношением времен выполнения на пара- компьютере для двух алгоритмов в качестве относительной меры их произ- водительности. Однако эта мера не может быть хорошим отражением относи- тельной производительности на реальных компьютерах, потому что в ней не учитывается время, необходимое для пересылки данных между удаленными процессорными элементами матрицы (коммутационные задержки). Г. Грош воспользовался концепцией паракомпьютера, чтобы сравнить производитель- ность разных алгоритмов для решения уравнений Пуассона на матрицах про- цессоров с различными способами внутренних соединений между процессор- ными элементами [90]. Он сравнил общеизвестные соединения типа ”к бли- жайшему соседу”, имеющиеся в машине ICL DAP (см. разд. 3.3), с длитель- ной коммутацией и без нее, возникающие при внутренних соединениях по типу полной перегруппировки, как предложил Г. Стоун [213]. Хотя концепция паракомпьютера была изобретена для сравнения матриц процессоров, ее можно увязать с конвейерными процессорами. Паракомпью- тер соответствует конвейерному процессору с нулевым временем запуска, отсутствием конфликтов на уровне банков памяти и длиной полупроизводи- тельности «1/2 В, стремящейся к бесконечности. Вспомнив, что = s + I — — 1 [см. (1.66)], где s — время запуска иI — число совмещаемых подфунк- ций, можно видеть, что приближение к паракомпьютеру происходит по мере увеличения Z, степени параллелизма операции в конвейере. С другой стороны, можно обозначить полностью последовательный процессор как конвейерный процессор, только с одной подфункцией (т. е. арифметические устройства не сегментированы), который также имеет нулевое время запуска и не имеет конфликтов памяти. Следовательно, полностью последовательный процессор соответствует конвейерному процессору с п^г = 0. Практические конвейер- ные проекты с конечным числом подфункций и, следовательно, конечным значением п тогда лежат между полностью последовательным процессором 248
и паракомпьютером в зависимости от длины полупроизводительности. Та- ким образом, мы получаем спектр компьютера, описанный в подразд. 1.3.4 и показанный на рис. 1.12. 5.1.4. Задержка коммутации Мы уже упоминали, что время, необходимое для распределения данных между различными процессорными элементами в матрице процессоров, мо- жет оказывать влияние на параэффективность алгоритмов на таких компью- терах. Эти задержки коммутации могут быть относительно несущественны- ми, если время типичной арифметической операции гораздо больше време- ни пересылки данных между парой процессорных элементов, — как, напри- мер, в случае арифметики с плавающей точкой на машине ICL DAP. Однако, если время арифметической операции соизмеримо с временем коммутации, последнее играет важную роль в определении производительности алгоритма и не может быть проигнорировано. Это имеет место в ICL DAP при работе с короткими словами и целочисленной арифметикой, как, например, в случае обработки изображений. Например, К. Джессхоуп показал, что при реализа- ции теоретико-числового преобразования на машине ICL DAP задержки ком- мутации могут превышать половину времени выполнения алгоритма [126]. В работах К. Джессхоупа приводятся также другие результаты по маршрути- зации данных [127,128]. 5.1.5. Конфликты на уровне банков памяти Задержки коммутации представляют проблему для процесса объединения всех данных из различных частей памяти в одном процессоре. Аналогичная проблема в типичных векторных конвейерных ЭВМ, таких как CRAY-1, отно- сится к конфликтам памяти, которые могут иметь место, когда данные из банковской памяти такой машины переносятся к одному из конвейерных арифметических устройств. Хотя память таких машин часто описывают как большую память с произвольным доступом емкостью 106 слов, такое описа- ние является обманчивым. Совершенно невозможно обеспечить раздельные параллельные соединения между миллионом слов и конвейерным устрой- ством. На практике такие ЗУ делятся на относительно небольшое число неза- висимых банков. В машине CRAY-1 с памятью емкостью 106 слов имеется 16 таких банков по 64 Келов, причем все банки могут обслуживать одновре- менно свой запрос к памяти. Все банки имеют нумерацию от 0 до 15 и упоря- дочиваются циклически в числовой последовательности (банк 0 следует за банком 15). Смежный вектор — это вектор, в котором последовательные элементы вектора хранятся в последующих и потому различных банках па- мяти. Поэтому такие элементы могут выбираться последовательными такто- выми импульсами машины. Это является максимальной скоростью выбор- ки данных (упоминалась как пропускная способность одного слова за так- товый период) и соответствует максимальной скорости, с которой данные могут быть восприняты арифметическим конвейерным устройством. Гово- рят, что задержки при банковской структуре имеют место, если фактическая скорость передачи меньше максимальной. Это происходит тогда, когда за- 249
прос памяти осуществляется к банку, который еще занят обслуживанием предыдущего запроса. Такое явление известно как конфликт на уровне бан- ка памяти. В машине CRAY-1 при обслуживании запроса памяти банк памяти находит- ся в состоянии занятости в течение четырех тактовых периодов, и в течение этого времени второй запрос к тому же банку не может быть воспринят. Од- нако запросы к другим незанятым банкам можно осуществлять в последу- ющие тактовые циклы. Вполне очевидно, что каждый четвертый элемент смежного вектора может выбираться с максимальной скоростью, поскольку запросы к любому банку возникают с интервалами в четыре тактовых пери- ода, и банк просто освобождается от своего предыдущего запроса. Однако, если запросы, производимые в последующие тактовые периоды, делались бы к каждому восьмому элементу вектора, они поступали бы в каждый банк каждые два тактовых периода, тогда как банк все еще оставался бы занятым предыдущим запросом. Поэтому, несмотря на то, что последующие значения хранятся в различных банках памяти, каждый восьмой элемент вектора мо- жет быть доступен со скоростью, равной половине максимальной. Каждый шестнадцатый элемент вектора заносится в тот же самый банк памяти, и по- следующие значения этих элементов могут быть доступны, в лучшем случае, каждые четыре тактовых периода, т. е. со скоростью, равной четверти макси- мальной. Поэтому вполне очевидно, что при выборе алгоритма для машины с бан- ковской памятью требуется проявлять осторожность, чтобы избежать кон- фликтов на уровне банков памяти. К сожалению, множество хороших число- вых алгоритмов базируется на рекурсивном делении пополам или удваива- нии и включают в себя последующие обращения к данным, разнесенным в ячейках памяти по степени два (например, БПФ, см. подразд. 5.5.2). Существует общепринятая практика матричной обработки с матрицами, у которых число строк и столбцов представляет степень два. Поскольку чис- ло банков памяти обычно выбирается также по степени два, конфликты на уровне банков памяти могут возникать очень легко. Они являются причиной, по которой на CRAY-1 не достигается сверхвекторная производительность. Такие конфликты можно минимизировать, если тщательно учитывать раз- мещение матрицы в памяти. Рассмотрим матрицу 16 х 16, занесенную стол- бец за столбцом с интервалом расчленения памяти в 16 банков. Это представ- ляет обычный способ хранения, обеспечиваемый Фортран-компилятором. Последовательные элементы1 любого столбца, либо прямой или обратной ди- агонали, могут выбираться с максимальной скоростью, так как они хранятся в различных банках памяти. Однако все элементы одной строки хранятся в том же банке и не могут быть выбраны в последовательности для строковых операций без конфликтов памяти. Эту проблему можно решить с помощью ПО, добавив к матрице фиктивную строку и столбец. Тогда она записывает- ся, как если бы это была матрица 17 х 17. К последующим элементам любо- го столбца (интервал хранения один банк), любой строки (интервал 17 бан- ков) или прямой диагонали (интервал 18 банков) можно обращаться без конфликтов памяти. Только обращение к обратной диагонали (интервал 16 банков) приводит к конфликтам памяти, но этот способ является довольно редким при обработке матриц. 250
В общепринятых случаях, упоминавшихся выше, конфликты памяти ми- нимизируются, если число банков памяти выбирается как простое число. В машине BSP (см, разд. 3.13) принят такой подход при построении аппаратно- го обеспечения и содержится 17 банков памяти. Для упоминавшегося выше примера матрицы 16x16 доступ ко всем строкам, столбцам и диагоналям производится без конфликтов. Важным свойством простого числа банков памяти (отличного от 2) является то, что обращения к элементам вектора, разнесенным по степени два, повторно имевшие место как в алгоритмах по- следовательного удвоения, не могут быть обращениями к одному и тому же банку памяти. 5.2. РЕКУРСИИ Рекурсия — это последовательность вычислений, при которых значение са- мого последнего терма в последовательности зависит, от одного или несколь- ких ранее вычисленных термов. Численный анализ изобилует рекурсиями: при решении линейных уравнений методом исключения Гаусса; при манипу- ляциях с матрицами, где требуется внутреннее произведение векторов; во всех итерационных методах, поскольку более точное приближение к реше- нию вычисляется из предыдущих аппроксимаций; во всех решениях обыч- ных дифференциальных уравнений по времени, так как последующие значе- ния зависят от найденных за более ранние интервалы времени; в граничных методах для решения дифференциальных уравнений в пространстве. Вычисление рекурсии составляет определенную проблему для параллель- ного компьютера, потому что даже в самом определении задается последова- тельность вычисления и, по-видимому, за интервал времени может быть вы- числен только один член, что не обеспечивает условий для параллельного вы- числения. Не нужно говорить, что проблему следует перефразировать (за счет введения дополнительных арифметических операций) так, чтобы была возможность параллельного вычисления, и мы сначала будем разъяснять ее на языке простой задачи вычисления частных сумм последовательности чи- сел (см. подразд. 5.2.1 и 5.2.2). В подразд. 5.2.3 мы рассматриваем введение параллелизма (т. е. векторизации) в общую линейную рекурсию первого порядка. 5.2.1. Последовательная сумма Общая линейная рекурсия первого порядка может быть выражена как вы- числение последовательности ху- из рекуррентного соотношения Xj =ajXj _i+dj для/ = 1, 2,..., л, (5.2) заданных значений х0, ах,..., ап и dx,dn. Не будет никакой потери общ- ности и существенной простоты, если мы допустим, что х0 = «1 = 0. Это мо- жет быть сделано, если мы переобозначим dt как d{ + Я1Х0, и тогда это пред- положение верно. Как и в специальном случае (а;- = 1), вначале мы рассматриваем вычисле- ние частных сумм Ху, определяемых как 251
Рис. 5.1. Маршрутизация по методу / частных сумм восьми чисел, х,- = S последовательных сумм при формировании всех d^, j -1, . . . , 8. Вертикальная ось соответствует времени, горизонтальная - ячейке памяти или номеру процессорного элемента. Маршру- тизация данных в памяти указывается стрелкой / х, = S d для/ = 1, 2,.. . ,п, (5.3) к=1 К где Xj - сумма первых / чисел в последовательности di . Частные суммы можно вычислить достаточно просто из рекурсии х. =x]_i+d. для/ =1,2, ...,л, (5.4) Этот метод вычислений последовательных сумм можно реализовать с по- мощью (п — 1) сложений в простой программе на Фортране : Х(1>=П(1> ПО 1 J=2.N (5.5) 1 X(J)=X(J-1)+D(J> Соотношение между способом хранения данных, арифметическими опера- циями и временем можно изобразить на диаграмме маршрутизации. Такая диаграмма для данного алгоритма показана на рис. 5.1 при п = 8. Имеющаяся последовательность вычислений перемещается снизу вверх; операции, которые могут вычисляться в параллель, показаны на одном и том же уровне. Ясно, что на каждом временном уровне может быть выполнена только одна операция (степень параллелизма = 1), и мы говорим, что алго- ритм последовательных сумм имеет п — 1 сложений со степенью параллелизма 1. (5.6) Чтобы дать количественную оценку схеме перемещения, предположим, что горизонтальная ось на рис. 5.1 указывает относительное размещение дан- 252
ных в памяти последовательной или конвейерной ЭВМ, а в случае матрицы процессоров — число процессорных элементов. Переменные одной и той же горизонтальной позиции не всегда переписывают друг друга. Если переписи не требуется, то переменные могут храниться также в различных ячейках од- ного и того же процессорного элемента матрицы процессоров или в другой последовательности ячеек в последовательной или конвейерной ЭВМ. Единичная операция параллельной маршрутизации означает параллельный сдвиг всех элементов массива в соседние ПЭ. При простейшем случае связно- сти типа ”к ближайшему соседу” в одномерной матрице процессоров это мо- жет быть сдвиг всех элементов одного ПЭ вправо или влево. В двумерной матрице процессоров типа ICL DAP при единичной параллельной маршрути- зации производится сдвиг всех элементов двумерной матрицы данных, кото- рая соответствует матрице процессоров, к их ближайшим соседним ПЭ на се- вере, юге, востоке или западе. В матрице процессоров хранение после парал- лельной операции может быть запрещено в зависимости от состояния бита ак- тивности в каждом ПЭ. Поэтому число элементов, реально сдвинутых после параллельной операции маршрутизации, находится под управлением про- граммы. Мы обозначаем число фактически сдвинутых элементов (т. е. воз- можности операции параллельного сдвига) как параллелизм операции мар- шрутизации. Изучение рис. 5.1 показывает, что алгоритм последовательных сумм тре- бует маршрутизации одной единицы вправо на каждом временно'м уровне. Только одно число (значение суммы, накопленной к данному моменту) за- нято сдвигом, следовательно, степень параллелизма составляет 1. Это под- тверждается тем фактом, что имеется только одна наклонная стрелка, указы- вающая сдвиг одного числа на каждом временном уровне. Поэтому алгоритм требует п — 1 операций маршрутизации со степенью параллелизма 1. (5-7) 5.2.2. Каскадная сумма Альтернативный параллельный подход к вычислению частных сумм наибо-. лее просто понять из диаграммы маршрутизации алгоритма. Она изображена на рис. 5.2 для п = 8; алгоритм называется методом каскадных частных сумм. Набор из п аккумуляторов сначала загружается данными, которые должны суммироваться. На первом уровне копия содержимого аккумулято- ров сдвигается на одну позицию вправо и складывается с несдвинутым со- держимым аккумуляторов, чтобы сформировать сумму данных от смежных пар. На следующем уровне процесс повторяется, но со сдвигом на две пози- ции вправо, тем самым получая сумму от групп по четыре числа. Поскольку производятся сдвиги, в левую часть, как и полагается, заносятся нули. В об- щем, на /-временно'м уровне выполняется сдвиг на 21 позиций, и на уровне / = login аккумуляторы содержат требуемые частные суммы. Метод каскадных частных сумм можно выразить на простом Фортранопо- добном языке векторов: х=р DO 1 L=l,L082N (5 8) 1 X=X+SHIFTR(X»2»»(L-1>> V 253
ПЭ, ПЭ, ПЭ3 ПЭ, ПЭ, ПЭ6 пэ7 пэ8 Рис. 5.2. Схема маршрутизации формирования частных сумм по методу параллельных каскадных сумм. Нули заносятся слева по мере сдвига вектора аккумуляторов вправо. Если требуется только общая сумма х8, то нужно выполнить только операции, показан- ные зачерненными кружками и толстыми линиями. где X и D — векторы из п элементов, знак (+) — параллельное сложение по п элементам, a SHIFTR (X, L) — векторная функция, которая помещает ко- пию вектора X, полученную смещением L ячеек памяти вправо, во времен- ный вектор SHIFTR. Элементов вектора X не касаются. Поэтому метод кас- кадных частных сумм требует log2 л сложений со степенью параллелизма п. (5.9а) Если мы предполагаем связность типа ”к ближайшему соседу”, то на уровне I потребуется 2,_ 1 единичных операций маршрутизации, что дает в целом 1 + 2 + 4 + ... + л/2 или п - 1 операций маршрутизации со степенью параллелизма п. (5.96) Каждая операция алгоритма каскадных частных сумм имеет максимально возможную степень параллелизма л, и в этом смысле может быть описана как 100%-ный параллельный алгоритм. Общее число скалярных арифмети- ческих операций, однако, увеличилось с и — 1 для метода последовательных сумм до Hlog2H. Поэтому увеличение степени параллелизма от 1 до л проис- ходит за счет существенного увеличения числа скалярных арифметических операций. Для л = 1024, например, метод каскадных частных сумм требует девяти скалярных сложений. В последовательной ЭВМ, которая может вы- полнять последовательно только одно сложение, метод каскадных частных сумм, очевидно, никогда не будет заслуживать внимания. В матрице процес- соров или конвейерном процессоре следует учитывать, будет ли увеличение производительности, которую эти процессоры получат, выполняя п скаляр- ных сложений параллельно, достаточным, чтобы перевесить увеличение обще- го объема арифметических операций (см. подразд. 5.2.3). 254
Алгоритм каскадных частных сумм значительно упрощается в каждом специальном случае, когда требуется только один результат общей суммы (в нашем случае х8). На рис. 5.2 жирными линиями и зачерненными кружка- ми отмечены те схемы перемещения и арифметические операции, которые связаны с подсчетом х8, и они составляют только небольшую часть операций, которые требуются для вычисления всех частных сумм. Вычисления, связан- ные с общей суммой, формируют двоичное дерево (в виде каскада), где чис- ло операций, и отсюда параллелизм, делятся пополам на каждом I уровне вычисления. Приняв для простоты, что п — степень 2, число операций для ме- тода каскадной общей суммы составляет одно сложение со степенью параллелизма и2-( для I =1,2,..., log2«. (5.10а) Следовательно, число скалярных сложений в алгоритме составляет и/2 + и/4+ ... + 2+ 1 =п - 1, (5.106) и мы замечаем, что алгоритм каскадной общей суммы имеет такое же число скалярных операций, что и метод последовательных сумм, несмотря на то, что реорганизация вычисления в двоичное дерево позволила ввести парал- лельную операцию. Этот метод общей суммы является алгоритмом, который обычно называют методом каскадной суммы. 5.2.3. Относительная производительность Теперь сравним относительную производительность методов последова- тельных и каскадных сумм для обобщенного параллельного компьютера, описываемого значениями и (см. подразд. 1.3.2). Это описание ком- пьютера предполагает наличие бесконечной памяти и отсутствие конфликтов на уровне банков памяти; хотя на практике это нарушается, такие допуще- ния дают хорошую первоначальную основу для выбора алгоритма. Програм- мист, отвечающих за подсчет сумм на реальном компьютере, должен, конеч- но, тщательно учитывать свойства его памяти. При сравнении используем ко- эффициент качества: (5.11а) (5.116) р _ производительность каскадной суммы производительность последовательной суммы р _ время выполнения последовательной суммы время выполнения каскадной суммы Время для выполнения <7/ арифметических операций с параллелизмом р; на компьютере с асимптотической производительностью и длиной полу- производительности п получаем из общей формулы (1.4а) +?,)• (5.12а) Различные типы компьютеров, характеризуемые значением длины полу- производительности [см. (1.6) и (1.7)]: 0 - 1 «i/2-i дуг последовательный компьютер конвейерный компьютер матрица из ^процессоров, и > N, паракомпьютер, или матрица процессоров, п < N. (5.126) 255
Алгоритм можно описать, задавая значения qt ир1 для ?тах стадий мето- да: I = 1,2,..., I . Тогда время выполнения алгоритма равно ^шах _ _ t = Д rjq (п 1/2 + Р/) =г"‘ q(n1/2 + р), (5.13а) где общее число параллельных арифметических операций ^тах q = S q,. (5.136) Z=1 ' Эти параллельные операции эквивалентны s скалярным операциям, где ^тах s = Ъ qfr (5.14а) и мы обозначаем средний параллелизм алгоритма как p=s/q. (5.146) Производительность алгоритма (б) по отношению к алгоритму (а) на од- ном и том же компьютере находится из уравнений (5.116) и (5.13а). Исполь- зуя индексы для идентификации алгоритма в каждом параметре, получим р_ <7(а) («1/2+Р(а)) " «/^(п^+Р^)’ (5.14в) где мы замечаем, что асимптотическая производительность пропадает и не влияет на относительную производительность алгоритма на одном и том же компьютере. Асимптотическая производительность безусловно влияла бы на относительную производительность двух алгоритмов, если бы каждый вы- полнялся на другом компьютере или на других устройствах той же машины (например, скалярных и векторных блоках в конвейерном). Здесь ограни- чимся рассуждениями до выбора наилучшего алгоритма для определенного компьютера или определенного блока многоблочного компьютера. Чтобы расширить такое сравнение на другие ситуации, нужно воспользоваться урав- нениями (5.116) и (5.13а) с соответствующими значениями г„, ип^. Используя вышеуказанные соотношения для алгоритма каскадной общей суммы, из уравнения (5.10а) получаем: <7, = 1>Р/ =«2 1, Zmax = log2n, откуда q = log2n, 5=л-1,р = (л- l)/log2n. (5.15a) Для алгоритма последовательной суммы получаем <7/ “ 1 > Р; “ 1 > /щах = п — 1, откуда q =п - l,s =п - 1,Т> = 1. (5.156) Производительность алгоритма каскадной общей суммы по отношению к последовательной сумме поэтому составляет: 256
(п - 1) (и1/2 + 1) _____ log2n [n1/2 + (n - l)/log2n] (5.15в) P > 1 дляп> 2ип1/2 > 0. Здесь мы выяснили, что метод каскадной общей суммы имеет большую производительность, чем последовательной суммы (Р> 1) для любой знача- щей длины вектора (п > 2) на любой параллельной ЭВМ («1/2 > 0), и равную производительность с методом последовательной суммы (Р = 1) для всех по- следовательных ЭВМ (пд2 - 0) и для случая п = 2, который требует только одну скалярную арифметическую операцию и поэтому не обеспечивает воз- можности для параллельного выполнения. Конечно, этот результат и ожидал- ся, так как оба алгоритма имеют одинаковое число скалярных арифмети- ческих операций, а присущая методу каскадной общей суммы параллельная операция будет всегда обеспечивать преимущество этому алгоритму на лю- бом параллельном компьютере. Если поставленная проблема требует подсчета всех частных сумм, то нам следует воспользоваться методом каскадных частных сумм. Для этого метода <7Z = =п, /тах =log2n, откуда q = log2n, s = nlog2n, p" = n, (5.16a) а производительность по отношению к методу последовательной суммы зависимость Рп (и) от п для пщ = 0,8, 100, °°; значения 8 и Р (и) - Qfrl/zjJl- (5.166) и>/1 } (log2n) (п1/2 +п) 1 Это сравнение не так наглядно, так как число эквивалентных скалярных операций в методе каскадных частных сумм больше, чем в методе последова- тельных сумм. Возможность компенсации этой дополнительной работы с по- мощью дополнительной скорости параллельной операции будет зависеть как от длины вектора п, так и от значения пц2 компьютера. Чтобы количествен- но изобразить относительную производительность, мы начертим на рис. 5.3 100 выбраны иэ соображения'"того, что у наиболее реальных конвейерных компьютеров длина полупроизводительности лежит между этими значениями. Значение 8 является типичным для векторных компьютеров, таких как CRAY-1, где век- торные операции производятся между быстродействующими регистрами. Значение 100 обычно типично для векторных компьютеров, таких как CDC CYBER 205, где векторные операции осуществляются с данными, занесенны- ми в оперативную память. В последнем случае время выборки данных из па- мяти прибавляется к длине векторного конвейера, что приводит к увеличе- нию «1/2. Кривая для п1/2 =0 всегда лежит ниже единицы и показывает, что каскадная сумма не является наилучшим алгоритмом на последовательном компьютере. Кривая для п^2 = °° всегда лежит выше единицы и означает об- 9 Зак. 1799 257
Рис. 5.3. Производительность алгоритма каскадных частных сумм по сравнению с про- изводительностью алгоритма последовательных сумм для последовательного компью- тера (А); компьютеров сл,^ =8 (В) ил^2 =100 (С); паракомпьютера (D) и беско- нечной процессорной матрицы (Е), в которой скорость выполнения операции маршру- тизации в десять раз быстрее, чем арифметической операции ратное, — каскадная сумма представляет наилучший алгоритм на параком- пьютере. Кривая для «1/2 =100 показывает, что метод каскадных сумм яв- ляется наилучшим для компьютеров с большими значениями п цг, по край- ней мере, для большинства обычно встречающихся значений п (скажем, < 10 000). Однако заметим, что для п > 1000 значение Лоо (и) начинает уменьшаться и окончательно упадет ниже единицы, показывая, что в случае достаточно большого и алгоритм последовательных сумм имеет наилучшую производительность. ‘ Для большого п >> «1/2 >5 можно показать, продифференцировав урав- нение (5.166), что отношение максимальной производительности равно: Лпах = Л= («1) («1/2 + l)/(«i + «1/2) * 0,693(«i/2 + l)7«i, (5.17а) которое получается при и = и i, так что Л, («1) = («1/2 + l)loge2 = 0,693(«1/2 + 1). (5.176) Значение «1 можно найти, вычислив значение правой части уравнения (5.176) и локализовав точку, в которой Рх достигает этого значения на рис. 5.3. Также можно показать, что Р< 1, когда 258
10g2« >«1/2 + 1 ИЛИ n>n2 =2(и*л+1). (5.17в) Таким образом, для конвейерного компьютера с Пу2 >5 мы пришли к со- вершенно неожиданному результату, что логарифм последовательных сумм всегда наилучший (Р< 1) для достаточно длинных векторов (п > н2). Гра- ничной точкой для машины типа CRAY-1 (и1(,2 = 8) является п2 ~ 500, а для машин с «1/2 =» 100 и2 25 Ю30 . Алгоритм каскадной суммы имеет наилучшую производительность (Р> 1) от п = п2 до очень малых значений и, когда снова алгоритм последовательной суммы является наилучшим. Этот нижний предел составляет п С 3 для и > > 8 и и = 4 для и1(/2 =5. Для и1(/2 <4 Pmax< h следовательно, метод после- довательных сумм является наилучшим для всех значений п. Это и не удиви- тельно, так как для таких малых значений п 1(,2 конвейерная машина обладает малым уровнем параллелизма, и работа его во многом схожа с работой по- следовательного компьютера. Если алгоритм выбирается для матрицы процессоров, необходимо тща- тельно учитывать влияние неизбежных операций маршрутизации на время выполнения. В зависимости от относительного времени маршрутизации вы- бирается алгоритм, поскольку время для таких маршрутизаций может со- ставлять существенную долю (или быть доминирующим) времени выполне- ния. Если время маршрутизации в у раз быстрее времени арифметических операций, т. е. время выполнения одной параллельной арифметической операции у =---------------------------------------------------------------. время выполнения одной параллельной операции маршрутизации (5.18а) то отношение времени, затраченное при маршрутизации, к времени, затрачен- ному на арифметическую операцию GR/?A), составляет (fR/^A\ = У"1 для последовательной суммы, (5.186) (^пЛд)~„ (И) ДЛЯ каскадной частной суммы. (5.18в) v к а ср 00 Типичное значение у равняется 10, следовательно, маршрутизация, по всей вероятности, никогда не будет серьезной проблемой при использовании ме- тода последовательных сумм. Однако этот метод, вероятно, не будет приме- няться на матрицах процессоров, потому что (п) > > 1 для всех п (см. рис. 5.3). Для более предпочтительного метода каскадных частных сумм уравнение (5.18в) показывает, что время, затрачиваемое на маршрутизацию, будет превышать время, затрачиваемое на арифметику, если п>п3, (5.18г) приР^ (и3) =у. На рис. 5.3 показано, что для у = 10 п3 =» 60. Из этого становится ясно, что маршрутизация будет доминировать при подсчете каскадной частной сум- мы (метод, предпочтительный с точки зрения параллелизма), если этим ме- тодом воспользоваться на длинных векторах (например, и ~ 10 000). Мы можем выразить относительную производительность методов каскад- 9* 259
ных частных сумм и последовательных сумм, учитывающих эффект мар- шрутизации: Ло,7(«) =Ло(«)(7+1)/[7 + Ло(«)1; (5.19а) р=о,7(") =?+1 даяП>>"з. (5.196) Кривая Е для Рт 10, изображенная на рис. 5.3, показывает, что для п < 1000 относительная производительность типовой матрицы процессоров спадает из-за маршрутизации до значений, близких к тем, которыми обладают кон- вейерные компьютеры с «1/2 = 100. Для больших значений п, гораздо боль- ших, чем значение и3, отношение производительностей достигает предельно- го значения (у + 1). Оно больше единицы и показывает, что для любого зна- чения у на большой матрице процессоров алгоритм каскадной частной суммы обладает большей производительностью, чем алгоритм последовательной, да- же с учетом маршрутизации. Один из способов сведения к нулю времени, затрачиваемого на маршрути- зацию, заключается в установлении соединений большого радиуса между про- цессорами. В упоминавшемся ранее вводном анализе мы приняли для про- стоты одномерную матрицу с соединениями ”к ближайшему соседу”. Одна- ко многие большие матрицы процессоров конфигурируются в виде двумер- ных или многомерных матриц. Например, машина ICL DAP имеет конфигу- рацию в виде двумерной матрицы 64 х 64 процессоров. Если их рассматри- вать как одиночный вектор из 4096 элементов, записанных в матрице строка за строкой, то результатом одиночной операции маршрутизации для соедине- ний ”к ближайшему соседу” между смежными столбцами является сдвиг на 64 позиции. Более общий случай маршрутизации данных в ^-мерных матри- цах рассматривается в подразд. 5.5.5 и в работах К. Джессхоупа [126 - 128]. Другие способы межсоединений, такие как полная перегруппировка, предпо- лагают другие соединения большого радиуса (см. подразд. 3.2.4 и 3.2.5). Чи- тателю предлагается рассмотреть влияние таких соединений на сравнения, сделанные выше. 5.2.4. Циклическая редукция Общую линейную рекурсию первого порядка [см. (5.2)] можно вычис- лить последовательно с помощью описания рекурсии следующей программой на Фортране: X(1)=А(1)«X(0)+D (1) DO 1 J=2fN 1 X (J) =А (J) »X(J-1) +D( J) (5.20) Она требует 2n арифметических операций co степенью параллелизма 1, (5.21а) и маршрутизаций со степенью параллелизма 1. (5.216) Диаграмма маршрутизации для последовательного алгоритма приводится на рис. 5.4. Для простоты мы выделяем разные типы арифметических опера- ций, хотя они могут иметь различное время выполнения. Отношение времени умножения к времени сложения редко превышает двойку и очень часто близ- 260
рис. 5.4. .Схема маршрутизации для последова- тельного вычисления рекурсии общего вида пер- вого порядка при и = 4. Переменные, указанные в фигурных скобках, заносятся в один и тот же ПЭ; один ПЭ используется для вычисления каж- дого члена рекурсии ко к единице. В частности, на конвейерном компьютере как каналы сложения, так и умножения при заполнении выдают один результат за каждый тактовый период. Для п > п i/2 среднее время операции сложения или умножения почти одно и то же. В числовом анализе, особенно когда пытаются ввести параллелизм в задачу, ши- роко применяется параллельный алгоритм, эквивалентный методу каскадных сумм и известный как циклическая редукция. К примеру, мы снова воспользуемся им для решения трехдиагональных систем алгебраических уравнений парал- лельным способом (см. подразд. 5.4.3). Исходная рекурсия [см. (5.2)] увя- зывает соседние члены в последовательность, т. е. х}- с х. Основная идея циклической редукции заключается в объединении смежных членов рекурсии таким образом, чтобы получить соотношение между каждым предыдущим и последующим членами последовательности, т. е. увязать Xj с х-_2. Считает- ся, что это соотношение также является линейной рекурсией первого поряд- ка, несмотря на то, что и коэффициенты различны, и соотношение установлено между чередующимися членами. Соответственно, процесс можно повторить (в циклическом виде) для получения рекурсий, связывающих каждый чет- вертый член, каждый восьмой и т. д. Если рекурсия устанавливает соотноше- ние между каждым из п членов (т. е. после log2« уровней редукции), значе- ние в каждой точке последовательности соотносится только со значением, лежащим вне известного диапазона, или с нулем, отсюда и было найдено ре- шение. Когда этот метод применяется на последовательных ЭВМ, число ис- пользуемых уравнений рекурсий на каждом последующем уровне делится пополам - отсюда термин ’’циклическая редукция”. На параллельной ЭВМ мы заинтересованы в поддержании параллелизма на высоком уровне и фак- тически не будем уменьшать число уравнений, используемых на каждом уровне. Поэтому такое название алгоритма является чем-то запутанным. Теперь будем составлять алгебру метода циклической редукции. Запишем исходное рекуррентное соотношение для двух последующих членов xi ~ aiXi -1 + di ’ (5.22а) x/-i =aj-ixj-2+dj-l- (5-226) Подставив уравнение (5.226) в уравнение (5.22а), получим xj = (5.23а) = а(1)х + б?.(1>, . (5.236) 7 7 2 / 261
где уравнение (5.236) представляет собой рекурсию первого порядка между перемежающимися членами последовательности с новым множеством коэф- фициентов : а^ = а.а. , d^ = a.d. +d.. (5.23в) 1 1 1 -1 / / /-1 1 Повторное применение изложенного выше процесса можно кратко выра- зить приведенными уравнениями для уровня /; индексы обозначают номер уровня: 1 =0, 1, . . 7=1,2,.. , 10g2«, , ., п, (5.24а) где д (0 = д (1 ->)</ у 1 / (5.246) d^ =d^1 + d(l-i>, 1 (5.24в) и исходные а (°) = а., d.(0) = d.. / Г 1 ! (5.24г) Если индекс любого a., d. или х. попадает вне обозначенного диапазона 1 < j < п, то получаем правильный результат, приравняв его значение нулю. Когда все I = log2n ссылок, относящиеся к х. _2i = х. _п в уравнении (5.24а), находятся вне обозначенного диапазона, то решением рекурсии является х. = d(1°g2”\ (5.24д) Следовательно, по этому методу должны последовательно генерироваться коэффициенты ар и dp, описанные уравнением (5.246, в), до тех пор пока не будет найден Это и является решением рекурсии. На первый взгляд может показаться, что уравнение (5.24в) не может быть распараллелено. В конце концов, уравнение для dp имеет внешне то же са- мое описание, что и уравнение для исходной последовательной рекурсии, и связывает d. с dj_x. Основное различие между уравнением (5.24в) и исход- ной рекурсией (5.22а) заключается в том, что все значения dp~li nd^-^ъ правой части (5.24в) являются известными, вычисленными на предыдущем уровне (/ - 1). Эти d(l -1> являются переменными, отличными от dp левой части. Поэтому последний коэффициент i = 1, . . . , и) может быть вычислен посредством одиночной параллельной операции или векторной команды. Эти связи поясняются диаграммами маршрутизации для вычисле- ния ар (рис. 5.5) и dp (рис. 5.6). На этих диаграммах мы показали только фактически используемые зна- чения а.(I) и dp, а также необходимые арифметические операции. Мы отме- чаем, что требуется примерно только половина значений dp. В частности, никаких значений не требуется на уровне I = 3. Степень параллелизма изменя- ется примерно от п на начальном уровне и приблизительно до п/2 на конеч- ном уровне. На конвейерных компьютерах, которые имеют переменную дли- ну вектора, это, как правило, приводит к увеличению производительности, сокращая длину вектора до корректного значения на каждом уровне. В ма- 262
ПЭ2 ПЭз ПЭ4 пэ5 пэ„ пэ7 пэ8 Рис. 5.5. Схема маршрутизации для уравнения (5.24 6); фициентов аФ параллельное вычисление коэф- по алгоритму циклической редукции, применяемому для линейной ре- курсии общего вида первого порядка в случае п = 8 Рис. 5.6. Схема маршрутизации для уравнения (5.24в); параллельное вычисление коэф- фициентов d^ по алгоритму циклической редукции, применяемому для линейной ре- курсии общего вида первого порядка. Значения а Ф получаются из вычисления, пока- занного на рис. 5.5, которое выполняется параллельно с вычислением, иллюстрирован- ным на данном рисунке 263
трицах процессоров с п < А'ил и в паракомпьютере, где длина вектора не влия- ет на время выполнения, параллелизм можно поддерживать равным п на каждом уровне, загружая все а. = 0 для — п/2 < 1 и d. =0 для — п < 0, или в другом случае попытаться значения, лежащие вне диапазона, выбрать равными нулю. Вполне вероятно, что очень сложно оценить производительность алгорит- ма циклической редукции, принимая во внимание факт уменьшения степени параллелизма на каждом уровне. Однако мы можем получить нижнюю гра- ницу, предположив, что степень параллелизма остается на каждом уровне равной п и что все аФ подсчитаны. Тогда средний параллелизм составляет [(л - 1) + (п - 2) + . + (и - V ) +... + n/2]/log2H = л [1 — (1 -n-,)/log2n], отсюда асимптотически для большого л имеем: 31og2« арифметических операций со степенью параллелизма л, 2(л — 1) операций маршрутизации со степенью параллелизма л. (5.25) В качестве упражнения мы предоставляем читателю возможность выпол- нить анализ, аналогичный тому, который был сделан для методов последова- тельных и каскадных сумм, полностью приняв во внимание уменьшение сте- пени параллелизма на каждом уровне. Рассмотренная выше рекурсия общего вида первого порядка превращается в каскадную сумму для специального случая а. = 1 при 2 < j < л, где все перемножения выполняются в соответ- ствии с рис. 5.6, а рис. 5.5 становится лишним. Алгоритм циклической редукции может быть реализован в векторной форме на Фортране посредством программы: х=о DO 1 L=1fL0G2N X=A*SHIFTR<Xr2**(L-l>>+Х (5.26а) 1 A=A«SHIFTR(A»2**<L-1)) • (5.266) где X, D и А объявлены как векторы. При реализации этой программы мы указываем, что адреса основной памяти вектора X и вектора SHIFTR, кото- рые необходимы для вычисления оператора (5.26а), разделены банками па- мяти, число которых равно степени два. То же самое имеет силу и для векто- ра А в операторе (5.266). Вероятно, конфликты на уровне банков данных (см. разд. 5.15) будут серьезным препятствием для быстрого вычисления алгоритма циклической редукции на последовательных и конвейерных ком- пьютерах с числом банков памяти, равным степени 2, поэтому при работе на машине BSP вследствие выбора простого числа банков (17) мы не сталкива- емся с этой проблемой (см. подразд. 3.1.3). 5.3. МАТРИЧНОЕ УМНОЖЕНИЕ Матричное умножение является простейшим примером перемножения матриц и достаточно хорошо иллюстрирует различные способы реструктури- рования алгоритма с целью соответствия архитектуре компьютера, на которой этот алгоритм должен выполняться. Математически элементы С7. . матрицы произведения связаны с элементами А. . нВ. . перемножаемых матриц урав- нением 264
п CiJ=klAiAr (5-27) где первый индекс означает номер строки, а второй — номер столбца. 5.3.1. Метод внутреннего произведения Для перемножения матриц на последовательных ЭВМ неизменно приме- няется гнездо из трех циклов DO в Фортран-программе, которая отражает прямую трансляцию вышеупомянутого определения, т. е. во 1 J=1fN DO i K=1,N (5.28a) i c< ,j>=c< >J)+A< .k)*b<k>j) (5.286) где мы предполагаем, что все элементы C(I, J) матрицы перед занесением программы устанавливаются в нуль. Оператор присваивания в программе (5.286) формирует внутреннее произведение i-й строки матрицы А и /-го столбца матрицы В. Это специальный случай последовательного вычисления суммы множества чисел, которое описывалось в разд. 5.2 (пусть dk =At в уравнении (5.3), когда хп = Cj j). Поэтому у нас есть выбор, вычислять ли последовательно, как в программе (5.28), или применить метод каскадных сумм. Рассуждения являются теми же самыми, что приводились в разд. 5.2. В некоторых ЭВМ предусмотрены команды ’’внутреннего или скалярного произведения” (например, CYBER 205, см. табл. 2.2), и использование это- го метода следует учитывать при любых сравнениях. Однако вычислениям произведения матриц присуща большая степень па- раллелизма, чем в случае одиночной суммы, так как перемножение матриц включает в себя вычисление п2 внутренних произведений, которое может вы- полняться последовательно по п (метод среднего произведения) или по п2 (метод внешнего произведения). 5.3.2. Метод среднего произведения Метод среднего произведения получается путем перестановки порядка циклов DO в программе (5.28). Если мы переставим цикл по строкам (I) в самую внутреннюю позицию, у нас получится программа, которая подсчи- тывает параллельно внутреннее произведение по всем элементам столбца С: DO 1 J=1fN DO 1 K=1fN DO 1 I=1fN 1 C(If J)=C<I,J)+A(IfK)»B(KfJ) (5.29a) (5.296) Члены в цикле по I могут вычисляться параллельно, поэтому цикл (5.296) может быть заменен векторным выражением. Во вполне очевидной нотации программа может быть записана как: DO 1 I=1fN DO 1 J=1fN (5.30а) 265
DO 1 K=1,N 1 C(I,J)=C(I,J)+A(I,K)*B(K,J) (5.306) где C (, J ) и А (, Я”) — векторы, составленные из J-го и fC-го столбцов мат- риц С и А. Сложение, +, представляет собой параллельное сложение л элемен- тов, а умножение, *, — умножение скаляра В (К, J) на вектор А (, К). По- этому степень параллелизма программы среднего произведения равна п по сравнению с 1 у исходного метода внутреннего произведения. Это получи- лось с помощью процесса изменения порядка циклов DO. Отметим, что мы могли бы переместить J цикл в середину, обеспечив тем самым вычисления всех внутренних произведений строки в параллель. Однако элементы столб- ца матрицы обычно хранятся в смежных ячейках памяти (в Фортране приня- то столбцевое хранение по столбцам), следовательно, конфликты на уровне банков памяти уменьшатся, если векторные операции будут производиться над векторами столбцов. Поэтому программа (5.30) предпочтительнее. Метод среднего произведения при программировании на ассемблере счи- тается наилучшей программой для машины CRAY-1, поскольку достигается наивысшая векторная производительность 138 Мфлоп/с. Она подразумевает, что в среднем примерно две арифметические операции выполняются за так- товый период (одна операция за тактовый период эквивалентна производи- тельности 80 Мфлоп/с). Это становится возможным вследствие того, что в операторе (5.306) можно сцепить операции умножения и сложения для рабо- ты в качестве составной конвейерной одиночной операции, выдающей один элемент результирующего вектора С (, J ) за тактовый период. Считается, что метод среднего произведения обеспечивает более высокую производительность, чем метод внутреннего произведения даже на машинах, таких как CDC 7600, не имеющих явно выраженных векторных команд, ко- торые не классифицируются как параллельные. Но машина CDC 7600 содер- жит конвейерные арифметические устройства, а их производительность воз- растает, если обращения к АУ поступают в регулярной форме, как в последо- вательной программе (5.296) для векторных операций. Эта идея использова- лась во множестве тщательно оптимизированных подпрограмм на ассембле- ре под названием STACKLIB (см. подразд. 2.3.5) и написанных в Ливермор- ской лаборатории им. Лоуренса. Эти подпрограммы выполняют различные диадические и триадические векторные операции, такие как оператор ” век- тор + скаляр х вектор” в программе (5.306), и достигают увеличения произ- водительности примерно в два раза по сравнению с программой, написанной для последовательных вычислений, например (5.286). 5.3.3. Метод внешнего произведения Метод внешнего произведения получается путем вынесения цикла по К в программе (5.28) наружу, т. е. по 1 k=i,n (5.31а) DO 1 1 = 1,N DO 1 J=1,N 1 C(I,J)=C(I,J)+A(bK)»B(K,J) (5.316) 266
Код (5.316) можно заменить матрично-подобным одиночным оператором, где один член внутреннего произведения подсчитывается в параллель для всех п2 элементов С. Применяя нотацию, представленную в гл. 4, где С обо- значает всю матрицу, можем написать: DO 1 K=1»N 1 С=С+А< гК)*В(К» ) (5.32) где операция умножения представляет собой поэлементное перемножение матрицы п х п, созданной путем дублирования К-ro столбца матрицы А, и матрицы п х п, созданной дублированием К-it строки матрицы В. Операция представляет собой поэлементное сложение в матрице п х п. На языке DAP- Фортран это выражается DO 1 K=1»N 1 С=С+МАТС(А( fK)*MATR(B(K, )) (5.33) где подпрограмма-функция МАТС (X) формирует матрицу, все столбцы ко- торой представлены вектором X. Аналогично этому MATR (X) формирует матрицу, все строки которой представлены вектором X. Для выполнения программы необходимы две функции, в противном случае деформация век- тора в матрицу становится двусмысленной (см. подразд. 4.2.3). Метод внешнего произведения лучше всего подходит для матрицы процес- соров, которая имеет те же размеры, что и математические матрицы, напри- мер, перемножение матриц 64 х 64 на машине ICL DAP с процессорной мат- рицей 64 х 64. В этом случае параллелизм аппаратуры в точности соответ- ствует параллелизму алгоритма. Вследствие того, что параллелизм увеличил- ся с л до п2 по сравнению с методом среднего произведения, метод внешне- го произведения, вероятно, также будет более предпочтительным на конвей- ерных компьютерах с большим значением n i/2. В случае матриц 64 х 64 дли- на вектора увеличивается с 64 для среднего произведения до 4096 для внеш- него произведения. Отношение производительности для метода внешнего произведения (Ро) к производительности для метода среднего произведения (Рт) равно отношению времени выполнения л векторных операций длиною л к времени выполнения одной векторной операции длиною л2: Л/'Лг = l"("+"w)l/("1 ♦'«> (1 +«ip/«)/(l +П|/г/«) » .Р при »,,,=»>!. (5 34а) [л1/2/л При Л2 > Л !/2 > п. Для л = 64 имеем р [1,12 при л1/2 = 8, —— =< 2,5 при л!/2 = 100, (5.346) Лп 13 при л !/2 = 1 000. Вполне понятно, что для компьютеров с малыми значениями л^2, таких как CRAY-1, практически нет никакого отличия между этими двумя метода- ми. Кроме того, возможность работать с векторными регистрами и исполь- зовать свойство сцепления отдают предпочтение методу среднего произведе- ния. Однако метод внешнего произведения имеет очевидные преимущества на конвейерных компьютерах в последнем случае, когда л2 > л > л. 267
5.3.4. Применение л3-параллелизма Интересную комбинацию методов, обсуждавшихся с целью введения па- раллелизма, применили К. Джессхоуп и Дж. Крейджи [129] при рассмотре- нии перемножения матриц на процессорных матрицах, которые не соответ- ствуют размеру математических матриц (см. также [139]). Например, как лучше всего вычислить произведение двух матриц 16 х 16 на машине ICL DAP с матрицей 64 х 64. Очевидно, было бы очень расточительно принять ме- тод внешнего произведения и воспользоваться только одной шестнадцатой частью имеющихся в наличии процессоров. К. Джессхоуп и Дж. Крейджи заметили, что в произведении двух п х п матриц имеется л3 умножений [л2 внутренних произведений, каждый с л перемножениями; см. (5.27) ], и что все эти произведения могут вычислять- ся одновременно со степенью параллелизма л3. Сумма л членов всех л2 внут- ренних произведений может быть получена за log2n шагов также со степенью параллелизма л3 с помощью метода каскадных сумм. Эквивалентная про- грамма на Фортране выглядит следующим образом: DO 1 I=1»N DO 1 J=1,N DO 1 K=lrN 1 C(l.J»K)=A<i>JrK)«<bJrK) (5.35a) DO 2 L=lrL0G2N K1=2**<L-1) DO 2 K=1»N-K1 DO 2 J=1.N DO 2 I=1»N 2 C<bJ»K)=C<I»J.K)+C<bJrK+Kl) (5.356) Цикл (5.35a) выполняет все л3 перемножений, а цикл (5.356) подсчитывает каскадную сумму. После выполнения четырех вложенных циклов (5.356) C(I, J) элемент произведения помещается в ячейку С (I,J, 1). Воспользовав- шись параллельной конструкцией, обрисованной в общих чертах в разд, 4.2, упомянутую программу в сжатой форме выразим следующим одиночным оператором: C=SUH(XPND<A»3»N)«XPND<B»1»N)»2) (5.35в) Для случая с матрицами 16 х 16 на машине ICL DAP с матрицей 64 х 64 имеем л = 16 и л3 = 4096, следовательно, параллелизм алгоритма точно соот- ветствует параллелизму аппаратуры. Три индекса матриц в программе (5.35) преобразовываются в два индекса процессорной матрицы какой-то регуляр- ной формы. Чтобы сократить маршрутизацию во время вычисления каскад- ной суммы, надо хранить все значения с одинаковыми индексами (/ и J) по- ближе друг к другу. Такое отображение имеет вид: С (I, J, К) хранится в ПЭ (4/ + К14,4J + MOD (К, 4) ), (5.36) где индексы процессорного элемента обозначают номер строки и номер столбца ПЭ и должны расцениваться как Фортран-операторы. Результат тако- 268
ГО отображения заключается в том, что 16 значений с одинаковыми первыми двумя индексами хранятся в компактной матрице 4x4 процессорных эле- ментов, и маршрутизация во время суммирования приводится к минимуму. Длинную маршрутизацию, которая необходима в процессе расширения мат- риц А и В, можно эффективно осуществлять на машине ICL DAP с помощью Средства вещания (см. разд. 3.31). Кроме того, можно оптимизировать в опе- раторе (5.35в) функцию SUM, воспользовавшись разрядно-уровневыми ал- горитмами. 5.4. ТРЕХДИАГОНАЛЬНЫЕ СИСТЕМЫ Трехдиагональные системы образуют очень важный класс линейных алге- браических уравнений. Они неоднократно встречаются в виде разностных ап- проксимаций в дифференциальных уравнениях со вторыми производными; например, в уравнениях гармонических колебаний, Гельмгольца, Лапласа, Пуассона и диффузии. Соответственно эффективные методы для решения та- ких уравнений лежат в основе многих важных числовых алгоритмов для ре- шения вышеупомянутых уравнений: например, линейно-итерационные мето- ды, такие как ADI и SLOR, метод быстрого фурье-анализа FACR и метод Бу- немана для решения определенных классов этих уравнений. Некоторые из этих методов разбираются позднее в разд. 5.6. К сожалению, многие методы, например метод исключения Гаусса, которые оказались наиболее эффектив- ными на последовательных компьютерах, представляют собой последователь- ные алгоритмы и поэтому не подходят для использования на параллельных компьютерах. В этом разделе мы обсуждаем проблему введения параллелиз- ма в эти методы и, выборочно, принятие новых алгоритмов, таких как ци- клическая редукция, которые по своей сущности обладают большей степе- нью параллелизма. При разработке этих методов мы можем воспользоваться опытом, который приобрели при изучении векторизации рекурсий в разд. 5.2. 5.4.1. Исключения Гаусса Трехдиагональное множество общего вида алгебраических уравнений мож- но записать: 269
или в матрично-векторной нотации: Ах = к. (5.38) Алгоритм исключения Гаусса может быть сформулирован в следующем виде: (7) Прямое исключение wj =Cj/Z>1, w,- =c./(Z>. -a.w.-^i =2,3,...,n-l, e. =W./C. (5.39a) (5.396) И gi =k1/b1, Si =(ki -‘Vi-JKbf i = 2,3,...,n, (5.39b) или Si = (ki ~aiSi-^ep (5.39r) или Si =(ki -aiSi-Jwilcr (5.39д) (2) Обратная подстановка хп = gn’ xi =si ~ wixi +i’ ' = (« - 1), (« ~ 2)..1. (5.39е) На стадии прямого исключения вычисляются два вспомогательных векто- ра, w и е, которые представляют собой функции только коэффициентов в матрице А. Эти векторы являются коэффициентами в треугольной декомпо- зиции матрицы А в произведение нижней треугольной матрицы L и верхней треугольной матрицы U; A = LU, (5.40) где Воспользовавшись этой декомпозицией, можно выразить решения урав- нения (5.37) для правой части к в виде двух стадий: Lg=k, (5.41а) Ux = g. (5.416) 270
Отсюда получаем Ах = LUx = Lg = к, что и требовалось. Стадия прямого ис- ключения (5.39г) представляет собой выражение в составной форме уравне- ния (5.41а), а стадия обратной подстановки, уравнение (5.39е), — выраже- ние уравнения (5.416). Во время этого процесса вектор g применяется для перезаписи к, а вектор решения х применяется для перезаписи g, поэтому по- явление промежуточного вектора g не подразумевает дополнительной памяти. Если вспомогательные векторы предварительно не подсчитаны, то вычис- ляем уравнения (5.39а) и (5.39в) вместе, за которыми следует уравнение (5.39е). Знаменатель (Ь{ - a(.w(. ) вычисляется только один раз, для чего требуется в целом 8и скалярных арифметических операций. Однако, если должно решаться несколько уравнений с одной и той же левой частью матри- цы А, но различными векторами правой части к, число операций при условии, что два вспомогательных вектора w и е вычислены и хранятся в памяти, мо- жет быть сокращено до 5п. В этом случае мы применяем для предваритель- ных подсчетов уравнения (5.39а) и (5.396), а при получении решения для каждой правой части - уравнения (5.39г) и (5.39е). Если предварительно подсчитан только один вектор w, уравнение (5.396) опускается и использу- ются уравнения (5.39д) и (5.39е). Число скалярных арифметических опера- ций увеличивается до би, но происходит все же экономия памяти. Если три- диагональная система возникает из конечной разности второй производной на регулярной сетке, то а. = с. = 1. В этом случае е(. = и»-, и алгоритм суще- ственно упрощается: Wi = cl/bl, w. = (Ь{-w. , i =2,3,.. .,п - 1-, (5.42а) g^kjbi, gj = (* -gj _j)w., i =2,3,..,,n; (5.426) xn = gn’ x. =g{ - W(X{ i =n - 1, n - 2,..., 1. (5.42b) Число скалярных операций здесь уменьшается до 6п без предварительных вычислений и до 4и с предварительным вычислением одиночного вектора w. Все три цикла (5.39а, в,е) или уравнения (5.42) алгоритма исключения Гаусса представляют собой последовательные рекурсии, которые должны вычисляться последовательно по одному члену. Следовательно, степень па- раллелизма алгоритма равна 1. Если еще учесть тот факт, что обращения к элементам вектора производятся с единичным инкрементом и что число арифметических операций минимизировано, то все это делает алгоритм иде- ально пригодным для последовательных ЭВМ. В равной степени при отсут- ствии всякого параллелизма алгоритм не может использовать свойства па- раллелизма аппаратуры ЭВМ. Поэтому этот алгоритм является наиболее не- пригодным для решения одиночной трехдиагональной системы уравнений на параллельной ЭВМ. Однако, если мы столкнемся с решением множества т независимых трех- диагональных систем (скажем, т = 64), как это часто имеет место в решении дифференциальных уравнений с частными производными (см. разд. 5.6), то исключение Гаусса будет наилучшим алгоритмом, применяемым на парал- лельной ЭВМ. В этом случае все т систем решаются в параллель, используя переформирования всех переменных алгоритма, которые встречаются в трех- 271
диагональных системах, в векторы длиной т. Например, переменная w. ста- | новится вектором {w, k; к = 1, ..., mj , где w. k — значение w. в к-й трехди- | агональной системе. Когда это сделано, все скалярные операции в уравнении 1 (5.39) становятся векторными операциями с длиною вектора т. Все опера- 1 торы полностью векторизованы, поэтому достигается максимальная вектор- j ная производительность. Таким образом, мы получаем как минимальное чис- 1 ло арифметических операций (выбрав процедуру Гаусса), так и максималь- 1 ный параллелизм. Отметим, что эти две цели не могут быть осуществимы од- | повременно (см. например, разд. 5.2 о рекурсиях). Основной недостаток это- 1 го метода состоит в том, что требуется ш-кратное увеличение общей памяти | по сравнению с решением трехдиагональных систем последовательно по од- 1 ной. Вопросы выбора между этими двумя вариантами разбираются далее в | подразд. 5.4.4. ] 5.4.2. Рекурсивное удвоение | С целью введения параллелизма в последовательный алгоритм Гаусса бы- ло предложено несколько методов, среди которых исключительно заметным является алгоритм рекурсивного удвоения Стоуна [214]. Мы будем рассмат- ривать разновидность его улучшенного алгоритма [215]. Производитель- ность нескольких таких алгоритмов, полученная на конвейерной машине CDC STAR [100], приводится в работе [143]; другое сравнение между алго- ритмами на машинах CDC 7600 и CDC STAR 100 дается в работе [153]. Рассмотрение алгоритма Гаусса, приведенное в уравнениях (5.39а, г, е) или в уравнениях (5.42), показывает, что алгоритм состоит иэ трех рекурсий. Рекурсии для g. и х. являются линейными и первого порядка и поэтому мо- гут быть подсчитаны посредством циклической редукции с использованием метода, приведенного в подразд, 5.2.4, для линейной рекурсии первого по- рядка общего вида. Никаких дальнейших рассуждений не требуется. Рекур- сия для w., хотя и является двучленной, представляет собой нелинейную ре- курсию, так как связывает w. с (bt - a.w. )-1. Поэтому для введения па- раллелизма в рекурсию нельзя использовать циклическое редуцирование в непосредственной форме. Однако это можно сделать после некоторых пре- образований. Рекурсия для w.: Wi =c1/fe1, wi =ci/(bi ~aiwi -i)’ z = 2, 3,...,«- 1. (5.43a) Если допустим (5.436) и пер формируем, то получим aiyi-i + biyi + ciyi+i =0’ ' = 2, 3,...,«-1, (5.44а) при Ji = 1,у2 =_ci/bi. (5.446) Неудивительно, что уравнение (5.44а) представляет собой однородную форму исходных уравнений. Это линейная рекурсия второго порядка (или трехчленная). Следовательно, задача нахождения w. является той же самой, 272
что и задача решения исходных уравнений. В подразд. 5.4.3 мы покажем, как воспользоваться непосредственно циклической редукцией для решения та- ких рекурсий. Алгоритм рекурсивного удвоения, хотя и использует цикли- ческую редукцию, как мы сейчас покажем, действует несколько иначе: Из соображения общности будем решать рекурсию второго порядка; (5.45а) (5.456) или а.у. + Ъ.у. + с.у. = к., t Z — 1 I I t I +1 I Уравнение (5.45a) можно выразить в следующем виде: V,- = Qv(- _ j + h., i = 2, 3,..., п - 1, где (5.45в) при ( 1 Vi = у —Сх/Ьх I Уравнение (5.45в) представляет собой линейную рекурсию первого по- рядка для вектора v(. в уравнении общего вида (5.2), за исключением того, что коэффициент умножения здесь является матрицей. Рекурсию можно ре- шить с помощью процедуры циклической редукции, описанной в подразд. 5.2.4 для скалярных рекурсий, с соответствующей интерпретацией векторов и матриц. Приняв h. = 0, находим v. и вычисляем yf, тогда из уравнения (5.436) вычисляем w.. Это завершает алгоритм рекурсивного удвоения для параллельного вычисления LU декомпозиции трехдиагональной системы посредством рекурсий исключения Гаусса. Может показаться, что исходные уравнения можно решать этим методом, так как они те же, что и уравнение (5.45а). Однако этот подход ошибочен ввиду отсутствия начального значения для v;-, поскольку трехдиагональная система возникает из дифференциальных уравнений с частными производны- ми второго порядка с граничными условиями на двух концах (т. е. можно считать известными у и У„ + 1)- Однако рекурсия может быть вычислена только поступательно °при условии, что заданы начальные условия для двух смежных значений, скажем, у0 и у i, и начальное значение для Vi. Если такие начальные значения имеются, указанный выше метод все же обеспечивает па- раллельное решение рекурсии второго порядка общего вида. Это было бы так, если бы уравнения возникали из задачи с начальным условием второго порядка1, а не из краевой задачи, представленной к рассмотрению. Такая задача называется также задачей Коши. - Прим, перев. 273
Чтобы оценить число операций, мы сделаем приближение, что параллелйзм остается везде на уровне п. Тогда, пренебрегая постоянными членами, имеем: 181og2« операций для получения v. 31og2« операций для получения g. 31og2H операций для получения х. В целом 241og2« операций со степенью параллелизма п. (5.46а) Следовательно, время выполнения алгоритма на компьютере с длиною по- лупроизводительности П 1/2 ZRD ~ 24 ("1/2 + ")10g2«- (5.466) 5.4.3. Циклическая редукция Циклическая редукция впервые была применена в работе Р. Хокни [101] в сотрудничестве с Голабом для решения трехдиагональных уравнений. Этот метод был реализован на последовательном компьютере IBM 7090 и ему бы- ло отдано предпочтение перед методом исключения Гаусса, так как в цик- лической редукции более четко выражены периодические граничные усло- вия, устраняющие потребность в вычислении вспомогательных векторов. Ре- шаемые уравнения возникали из разностной аппроксимации для уравнения Пуассона и содержали одинаковые коэффициенты во всех точках сетки. Эти уравнения подробно рассматриваются в разд. 5.6. Для удобства число точек сетки, а следовательно, и число уравнений принимается равным степени два. Как показано в работах [220, 222, 223], ни одно из этих ограничений не яв- ляется необходимым для этого метода. Однако здесь для простоты мы при- мем, что п = п — 1, где п' = 2q и q — целое число, и будем решать проблему коэффициентов, описанных в уравнении (5.37). Написав три прилежащих уравнения, получим для i = 2, 4,..., и' — 2: + bi_iXi-i +Ci-iXi =ki-1 aixi-i + b^i + CfXi+i =ki, (5-47) ai+iXi + Z?i+iXi+i + ci+iX!+2 = fci+i Специальные конечные уравнения будут корректно включены, если мы установим х0 = х , = 0. Если первое из этих уравнений умножить на а. = = -a./b. а последнее на у. = — c./fe.+1, и эти три уравнения сложить, все ссылки на переменные х. и х. + j уничтожаются. Тогда получаем а^х. +Ь^х.+с^х. =кр\ (5.48а) I 1-2 I I I I +2 1 где <)= а.а. _v с/» = у.е. +1, = Ь. + «.с. + ум. + 1, kV = к. + + а.к. +у.к. . (5.486) I I - 1 I I +1 274
Уравнения (5.48) имеют отношение к каждой второй переменной, и, если они написаны для i = 2, 4....п' — 2, являются трехдиагональным множе- ством уравнений того же вида, что и исходные уравнения (5.47), но с други- ми коэффициентами (а , Ь с . В грубом приближении число уравне- ний было поделено пополам. Вполне понятно, что процесс можно рекурсив- но повторять до тех пор, пока после log2 (л’) — 1 уровней редукции остается только центральное уравнение для i =п'12\ <Vo + ^п'р + <?/2 = кУр > (5.49а) где настроечный индекс г = log2 (и') — 1 указывает уровень редукции. По- скольку х0 =х'п = 0, решение для центрального уравнения получается посред- ством деления хп'/2 = kn^pl^rf/2- (5.496) Теперь оставшиеся неизвестные могут быть найдены из процедуры заме- щения. Поскольку нам известны х0- хп’/2 .и хп' > то неизвестные промежуточ- ные значения могут быть найдены из уравнений на уровне г — 1, использовав х,=(*Г ” - для i = н?4 и Зл'/4. Замещение процедуры повторяется до тех пор, пока окончательно с помощью иходных уравнений не будут найдены все нечетные неизвестные. Следовательно, процедура циклической редукции включает в себя рекур- сивное вычисление новых коэффициентов и правых частей для уровней I = = 1, 2,.... q - 1 из с*’ <5'50) где 7, = W+7(/-i) Ki = 2‘ сшагОм2? дол’ - - 2Z, с первоначальными значениями at® = a., = Z>; и = с. с последу- ющим замещением решения для I = q, q - 1,..., 2, 1 из (S.si) где / = 2(Z-1) с шагом 2(Z-1) дол' -2(Z-1) их0 =xn> = 0, когда они имеют место. Диаграмма маршрутизации этого алгоритма изображена на рис. 5.7 для п = 8. Для удобства обозначим вектор n. = (а., cjt к.), чтобы указать все значения, вычисляемые по уравнениям (5.50). Число задействованных операций при вычислении уравнений (5.50) равно 12 со степенью параллелизма п'2'1 — 1 для I =1,2,..., log2 (л ) — 1. (5.52) 275
РИС марЩРутизации по последовательному алгоритму циклической редук- ции (SbRICR)jma п - 8. Прямоугольники обозначают вычисление уравнения (5.50), ромбики - вычисление (5.51). Подсчитанные переменные заносятся внутрь квадрати- ков с обозначением Р(- = (а{, Ь/, с/, к;) Время, необходимое для этой части расчета на компьютере с длиной полу- производительности п уз, пропорционально loMn')-i ?5,5О = 12 £ (и1/2 + п'2~'-1) = 1=1 (5.53а) - lz [н + П 1 /2 log2 (п ) Н1/2 — log2(«') — 1]. В этих уравнениях содержатся члены только порядка п' и log2^,1 следова- тельно, для иi/2 > 1 и log2w’ > 1 приблизительно имеем fs,so = 12(и' +H1/2log2«'). (5.536) Вычисление уравнения (5.51) требует 5 операций со степенью параллелизма п2-/ для I = log2n',..., 2, 1. Отсюда log2n' / f5.51 = 5 £ л,/2 + п2 1=1 ' = 5[n'+n1/2log2(n')-l] = (5.546) = 5(и'+ и1/2 log2«'). (5.54в) 276
Рис. 5.8. Схема маршрутизации по параллельному алгоритму циклической редукции (PARACR) для п’ =8; Ро = (0, 1, 0, 0) - специальный вектор Только что описанный способ выполнения циклической редукции имеет наименьшее число скалярных арифметических операций и, следовательно, является наилучшим вариантом для последовательного компьютера. Поэто- му будем называть этот алгоритм последовательным вариантом циклической редукции, сокращенно SERICR. Общее время его выполнения пропорцио- нально rSERICR =ts’so +ts^1 ~ 17(n’ +«i/21og2«')- (5.55) На матрицах процессоров желательно поддерживать параллелизм на как можно более высоком уровне, и поддержание параллелизма на уровне п во всей фазе редукции достигается другим методом выполнения циклической редукции. На последнем уровне редукции решения для всех переменных отыскиваются параллельно, за исключением центрального значения в SERICR и фаза замещения не требуется. Так как этот метод наиболее пригоден для паракомпьютера, назовем его параллельным вариантом циклической редук- ции, или кратко PARACR. Диаграмма маршрутизации для параллельного варианта показана на рис. 5.8. На каждом уровне уравнения редукции для всех п уравнений решаются параллельно. Трудность, по-видимому, возникает тогда, когда требуются данные, которые не попадают в описанный диапазон 1 < i < п. Однако мож- но увидеть, что правильный результат получается, если примем (5.56а) 277
или p/Z) = (0, 1,0,0). Вставив эти специальные значения в уравнение (5.48а), приходим к урав- нению 1 xi = 0 для i < 0 и i > п + 1, (5.566) I которое дает правильные граничные значения. Теперь можем рассматривать '] либо решение исходного конечного множества уравнений, либо, как вариант, I решение расширенного бесконечного множества с коэффициентами (5.56а). 1 Это равнозначно только суммирующим уравнениям, таким как (5.566), вне j диапазона исходной проблемы. Любая точка зрения равно справедлива, но последняя больше подходит для параллельного варианта циклической редук- ‘ ции, так как она описывает необходимые значения р. и х. вне первоначально обозначенной проблемы. После подсчета (фактически требуются только значения Ь. и fc.). Значение х. получается из уравнения (5.51) : х{ = . (5.57) Члены в х в правой части уравнения (5.51) отсутствуют, так как на этом уровне редукции они лежат вне диапазона 1 < i < п и по уравнению (5.566) равны нулю. 1 Вполне понятно, что число операций в алгоритме PARACR составляет | 12 [log2 (и') - 1] со степенью параллелизма и (5.58а) j j и время выполнения пропорционально ? rpARACR = 12(nV2+n) DogaC”) - 1 1 12(«1/2+H)log2«'. (5.586) i Достоинство алгоритма циклической редукции заключается в том, что при 1 определенных обстоятельствах процесс редукции может быть остановлен до 1 завершения без потери точности. Это становится возможным, если трехдиаго- 1 нальная система является достаточно диагонально доминирующей. Обозна- | чим диагональное доминирование исходной системы уравнений (5.47) через 1 5 — минимальное значение отношений \b. \/\а. | и |&. |. Тогда можем рас- смотреть решение более простого множества уравнений постоянных коэффи- циентов ах. +foc. +ах/+1 =fc. (5.59) ’ с ]b/a] =5, которое равно исходному, или решению с меньшим диагональ- I ным доминированием. Если это более простое множество уравнений можно I будет решать с достоверной аппроксимацией, то исходные уравнения будут I решены более точно. Рекурсия циклической редукции (5.50) для этого слу- чая — а W = а, тогда a(Z) =_(fl(z-0)2//,(Z-i); 1 (5.60а) , , , , ( I = 1, 2, ..., log2 (и’) — 1, й(/) -2(a(/_I))2/Z>(/_1),J (5.606) где подстрочный индекс i опущен, потому что коэффициенты для всех урав- нений являются одинаковыми, и мы воспользуемся тем фактом, что с® = = а',\ Разделив уравнение (5.606) на уравнение (5.60а), получим рекуррент- ное соотношение для диагонального доминирования: 278
S<0) = 8, 8(1) = |Z>(/) |/|a(/)|, = I (SC'"1))2 -21, I = 1,2, ...,log2(n) -1. (5.61a) Следовательно, если первоначальное диагональное доминирование б > 2, то диагональное доминирование будет расти по квадратичному закону, по крайней мере, так же быстро, как в уравнении (5.61а) и §(0 ~ §2 для§>>2. (5.616) Разностная аппроксимация уравнения Гельмгольца d2y/dx2 — = s (х) (5.62а) для разделения сетки h равна <р.-j - (2 + 0/г2)^. +.£. +1 = s.h2. (5.626) Откуда 5=2 + (ЗЛ2, (5.62в) и для /3 > 0 дифференциальные уравнения удовлетворяют условию увеличе- ния диагонального доминирования с глубиной редукции. Уравнения гармо- ник, которые получаются при решении дифференциальных уравнений с част- ными производными, представляют собой важное множество уравнений, за- мещающих последние (см. подразд. 5.6.2). Если на любой стадии редукции инверсия диагонального доминирования превосходит требуемую точность (или используется округление в компьюте- ре) , и известно, что решение должно быть порядка единицы, то редукция мо- жет быть закончена. Уравнение решения (5.51) имеет вид v ± (х (/ +х (5.63а) i —2' > i +2 ' и по предварительному условию членами х в правой части по сравнению с ле- вой частью можно пренебречь. Тогда решение на этом уровне может быть найдено простым делением х. /ЬС-Я (5.636) с использованием широко известного алгоритма PARACR или замещением по алгоритму SERICR. Для большого 8 (скажем, больше 3) уровень I, на котором может быть прекращена редукция, приблизительно получается из уравнения (5.616): 8>^^821 (5.64а) где е — допустимая относительная ошибка уравнения или I = log2 [(log2 е“1) / (log25) ] = = log2 (log2e~I) - log2 (log23). (5.646) Первый член показывает, что большие требования к точности (больше е-1) приводят к увеличению уровней редукции, второй член показывает, как уменьшается число уровней по мере увеличения диагонального доминирова- ния. Если 8 близко к двум, должна вычисляться полная рекурсия (5.61а). В любом случае практический подход заключается в измерении диагонально- 279
го доминирования 5 на каждом уровне редукции от значений а и и прекращении рекурсии, если удовлетворяется уравнение (5.64а). Конечно, в алгоритме нет никакой экономии времени, если только не вы- полняется условие I < log2 (п) — 1 (максимальное число уровней для пол- ной редукции). Это приводит к тому, что усеченная редукция может обеспе- чивать экономию времени, когда п’>п, (5.65а) где п = 21 = (log2e"*)/(log2S) дляи'>> 1. (5.656) Если возьмем пример е = 2”20 10'6 (32-разрядная одиночная точность на IBM 360) и S = 4 (как в уравнениях колебаний из подразд. 5.6.2), то по- лучим I = 3,32, п = 10. (5.65в) Отсюда понятно, что усеченная редукция может обеспечивать заслуживаю- щую внимания экономию времени, даже для малого числа уравнений при ус- ловии, что они являются достаточно диагонально доминирующими. Простой тест на условие (5.64а), по всей вероятности, стоит включать в любую под- программу циклической редукции. Экономия времени может быть значи- тельной, если вычисляются сотни или тысячи уравнений. 5.4.4. Выбор алгоритма Теперь рассмотрим проблемы, связанные с выбором наилучшего алгорит- ма для решения т трехдиагональных систем, каждая из которых является множеством п уравнений с п неизвестными. Имеющиеся альтернативы и вы- воды в большей степени схожи с теми, которые возникают при выборе наи- лучшего алгоритма для любой задачи на параллельном компьютере. Мы снова сравниваем производительность алгоритма на компьютере с конечной длиной полупроизводительности Как обычно, предполагаем наличие бесконеч- ной памяти без конфликтов на уровне банков. Для последовательного компьютера у нас есть только одно соображение — минимизация арифметических операций. Для параллельного компьютера имеется много больше вариантов, и выбор наилучшего метода становится более сложным. Для ранее упомянутой проблемы т трехдиагональных си- стем можно взять наилучший последовательный алгоритм и испробовать его с т системами в параллель, или взять наилучший параллельный алгоритм для решения одной системы и применить его последовательно или параллельно к т системам. В последнем случае происходит еще большее усложнение, так как наилучший параллельный алгоритм будет зависеть от уровня имеющего- ся в компьютере параллелизма аппаратуры (т. е. значения п у2) На последо- вательном компьютере первый вариант невозможен, и поскольку все эти компьютеры имеют одинаковое значение (равное 0), число вариантов сокращается. Начнем с рассмотрения наилучшего алгоритма для решения одной трех- диагональной системы из п уравнений. Воспользовавшись уравнениями (5.466), (5.586) и (5.55) и игнорируя несущественное различие между л'и 280
п, обнаружим, что производительности Г1 и средний параллелизм ~р кон- курирующих алгоритмов будут: (а) для RD — рекурсивного удвоения PRDa С24 (« + «1/2)log2«] ’ PRD=«; (5.66а) (б) для PARACR - циклической редукции с длиною вектора, поддержива- емой на уровне п и без замещения стадии, PPARACRa t12(« + «i/2)log2n]- 1, PparACr=«; (5-666) (в) для SERICR — циклической редукции с длиною вектора, делящейся по- полам на каждом уровне редукции и включающей в себя замещение стадии, PSERICR a [17(« +«i/21og2«)]"‘, PSERiCR =«/log2«. (5.66b) Здесь мы также игнорируем возможную экономию времени при усеченной редукции, которая, безусловно, должна приниматься во внимание, если систе- мы будут строго диагонально доминирующими. Алгоритм рекурсивного удвоения имеет меньшую производительность, чем любой вариант циклической редукции, и в дальнейшем рассматриваться не будет. Безусловно, он бы применялся, если бы потребовалось отыскать LU декомпозицию уравнений. Для поставленной задачи практического реше- ния уравнений метод циклической редукции всегда лучше. Поэтому пробле- ма состоит в выборе между параллельным и последовательным варианта- ми циклической редукции (PARACR и SERICR соответственно). Параллельный вариант имеет лучшую или равную производительность, когда PpARACR > ^SERICR ’ что дает соотношение п1/2 >2,4 л(1 - l,42/log2n). (5.67а) Равенство дает граничную линию равной производительности. Она пред- ставлена на рис. 5.9 вместе с областями диаграммы, где у каждого алгорит- ма есть преимущество перед другим. Для большойимеем: п = 0,42И1/2. (5.676) Это показывает, что для паракомпьютера (и|;, = °°) параллельный вари- ант, PARACR, является наилучшим алгоритмом для всех п порядков уравне- ний (отсюда и название варианта). Для конечных значений п всегда существует некая величина п (« 0,42л щ), больше которой последовательный вариант является лучшим. Этот результат аналогичен полученному для решения рекурсий в под- разд. 5.2.3. Значение«1у2 обозначает меру сте- пени параллелизма аппаратуры. Если в опре- Рис. 5.9. Выбор наилучшего алгоритма для решения одиночной трехдиагональной системы п уравнений на компьютере с длиной полупроизводительиости п ,/2: SERICR - циклическая редукция с уменьше- нием длины вектора; PARACR - циклическая ре- 1 дукция без уменьшения длины вектора 281
деленном случае длина вектора гораздо больше этой величины, то компьютер будет работать как последовательная машина, т. е. степень параллелизма а компьютера слишком мала, чтобы влиять на производительность. При таких f обстоятельствах будет уместен критерий производительности на последова- * тельном компьютере, т. е. наилучшим алгоритмом является тот, который со- держит наименьшее число скалярных арифметических операций - последова- 4 тельный вариант циклической редукции (SERICR). Если как вариант перед нами стоит проблема решения множества т трех- диагональных систем, где для каждого из п уравнений у нас есть выбор, при- менять ли с т системами последовательный (SERICR) или параллельный (PARACR) метод на параллельных или последовательных машинах, либо ис- пользовать наилучший последовательный метод (рекурсию гауссова исклю- чения, описанную в подразд. 5.4.1) параллельно со всеми системами. Для компьютера с большим естественным параллелизмом (> тп), например больших матриц процессоров (ICL DAP) или конвейерных компьютеров с большой «1/2 (CYBER 205), наилучшим алгоритмом, вероятно, будет ал го- ' ритм с наибольшим уровнем параллелизма. Для таких случаев мы сравниваем гауссово исключение, применяемое параллельно ко всем системам (MULTGE) j со степенью параллелизма т, с методами SERICR аг и PARACRpar, в кото- i рых указанный алгоритм циклической редукции используется параллельно во всех системах. Производительность и средний параллелизм для этих ва- риантов: ^MULTGE а [%п(.т + i/г) ] Р MULTGE т> (5.68а) ^PARACR^ [(^П+Пхр)^]-1, P PARACR paf = mn< (5.686) /’sERICRpar°Cl17(W,2+,2U210g2«)r1- ^SERICR par=W10g2«. (5.68В)' Попарно приравнивая эти выражения, получаем уравнения для линии рав- ной производительности на плоскости (п, т/п^). Кроме того, приводимые ниже неравенства показывают область плоскости, предпочтительную для каж- дого алгоритма: t i ^MULTGE ^PARACR’ КОГда t par <. / ,7^ ^^‘(л)70^ > 0-67/log2« Прин-- (5.69a) J ^MULTGE ^^SERICRp^’ К0Гда | m ^8 17 loe2n I >°.89при«^°°; (5.696) | /fSl RlCRpar ^^PARACRp^’ К0Гда I 282
Рис. 5.10. Выбор наилучшего алгоритма для решения т трехдиагональных си- стем п уравнений для компьютеров с большим естественным параллелизмом ( > тп) Рис. 5.11. Выбор наилучшего алгоритма для ре- шения т трехдиагональных систем п уравнений для компьютера с ограниченным уровнем па- раллелизма, равным приблизительно т или п > 0,42л'1 при л (5.69в) n1/2 n(121ogzn-17) r v Линии, описанные уравнением (5.69) и показанные на рис. 5.10, делят па- раметрическую плоскость на области, в которых каждый из трех методов имеет наилучшую производительность. Она похожа на химическую диаграм- му фаз и существует даже ’’тройственная точка” с координатами и1/2 == 7, И1/И1/2 0,13, где эти три алгоритма имеют одинаковую производительность. Мы полагаем, что при л1/2 = 00 (паракомпьютер) PARACRpai является, как и ожидалось, наилучшим алгоритмом для всех п. Однако для конечного зна- чения «iy2 и т < 0,l«iy2 всегда существует некое значение п, больше которо- го алгоритм SERICR предпочтительнее. Если число систем т больше п 1/2, счи- таем, что применение хорошего последовательного алгоритма для параллель- ного решения с т системами всегда является наилучшим. Как показано на диаграмме, при более сложном варианте в области 0,1 < ш/нрг < 1 можно использовать все три алгоритма. Для компьютеров с ограниченным уровнем параллелизма, примерно рав- ным п или т. имеющийся параллелизм является недостаточным, чтобы при- менять алгоритм SERICR или PARACR параллельно. Обычно это относится к таким машинам, как CRAY-1 (естественный параллелизм которой равен 64) при решении 64 трехдиагональных систем длиною 64. В этом случае мы долж- ны сравнивать SERICR^ и PARACR^ (где упомянутый алгоритм цикли- ческой редукции используется последовательно в т системах) с наилучшим последовательным методом, используемым параллельно (MULTGE). Про- изводительность и средний параллелизм для этих случаев таковы: ^PARACRа [12m (н + н1/2) log2«] ’1, РРАКАСК^=«, (5.70а) /’.SERICRseqa [17m(«+H1/2log2H)]-', РSERICRseq='7/1°S2'7' <5’706) На рис. 5.11 сравниваются эти два алгоритма в MULTGE для случая п 1/2 = = 100. Вертикальная линия, разделяющая параллельный (PARACR^) и по- 283
следовательный (SERICR™) методы циклической функции, получается из равенства в уравнении (5^67а) или рис. 5.9, и это справедливо для всех т. Множественное исключение Гаусса будет иметь производительность, лучшую или равную производительности при параллельном варианте циклической ре- дукции, применяемой последовательно, если PMULTGE ^PARACR^ или когда m>«1/2 [(l,Slog2(n) - 1) + (l,5ny2log2n)/n]-1 >0,67n/log2n прииуг^00. (5.70в) Аналогично находим, что MULTGE лучше SERICR^, когда ^MULTGE ^SERICR или когда [1,125 + 2,125(п 1/2log2n)/п]~1, (5.70г) Грубо говоря, полагаем, что многочисленное применение последователь- ного гауссова алгоритма является наилучшим, когда число систем превыша- ет одну десятую числа уравнений в каждой системе. Это справедливо для большинства приложений, возникающих из решений дифференциальных уравнений с частными производными (см. разд. 5.6). Существует относитель- но малая часть диаграммы, отдающая предпочтение параллельному варианту циклической редукции, которая уменьшается по мере увеличения п ^2. И в са- мом деле, при Пщ < 10 PARACR^ никогда не будет наилучшим алгоритмом. 5.5. ПРЕОБРАЗОВАНИЯ Математические преобразования играют важную роль в математическом и численном анализе. Среди них наиболее важным является конечное преобра- зование Фурье [25] и родственное теоретико-числовое преобразование (ТЧП), так как специально для их вычисления существуют быстрые алгоритмы. При алгоритме быстрого преобразования Фурье (БПФ) (см. подразд. 5.5.1) вы- числяются все компоненты преобразования п значений данных после 0 (nlog2n) вещественных скалярных операций, по сравнению с 0 (и2) таких операций для других преобразований. Теоретико-числовое преобразование не только имеет логарифмический счет числа операцийБПФ (см. подразд. 5.5.6), но также обладает преимуществом применения операции только целочислен- ного сложения и сдвига; операции умножения отсутствуют. Поэтому ТЧП особенно хорошо подходит для использования на разрядно-ориентированных архитектурах, таких как DAP или STARAN (см. гл. 3). Перечислим некоторые применения преобразования Фурье. (а) Фурье-преобразование данных как функция времени (анализ временных рядов) для определения спектра частот. Фурье-преобразование представля- ет собой наилучший способ вычисления авто- и кросс-корреляций таких вре- менных рядов, а при сглаживании данных в интервале частот получаются на- илучшие результаты (например, редукция или исключение сильно зашумлен- ных частот). (Для подробного ознакомления см. работу [23].) 284
(б) Фурье-преобразование данных как функция пространства, чтобы полу- чить спектр волновых чисел. Во многих физических ситуациях волновой ана- лиз приводит к самому ясному пониманию явления (например, осознаванию, что определеннее длины волн не стабильны). Любая линейная система (или малые возмущения нелинейной системы) может быть полностью описана, ес- ли задать ей уравнение дисперсии, т. е. частоту колебания как функцию вол- нового числа возмущения. Вполне понятно, что для большого числа волно- вых чисел и частот измерение этого соотношения требует фурье-анализа как в пространстве, так и во времени. (в) Пространственные корреляции между частицами, например в жидкости, описываются парными (и более высокого порядка) корреляционными функ- циями, т. е. вероятность, что две частицы разделяются расстоянием, оценива- ются как функции этого расстояния. Физические измерения посредством рентгеновской и нейтронной дифракции определяют структурный фактор, который представляет собой преобразование Фурье пространственной корре- ляции. Многие преобразования, от волнового числа до координатного про- странства, требуются для интерпретации экспериментов. (г) Моделирование частиц методом молекулярной динамики [106], трасси- ровка орбит большого количества атомов в жидкости. Интерпретация дина- мических свойств жидкости и ее сравнение с теорией лучше всего понимается через динамический структурный фактор. Это обеспечивается фурье-анали- зом координат частиц в пространстве и времени. (д) Решение линейных дифференциальных уравнений с частными производ- ными часто отыскавается в диапазоне волновых чисел (так называемый ме- тод Галеркина или спектральный метод [166]). Появление нелинейных чле- нов обусловлено преобразованием координатного пространства, выполнени- ем нелинейного взаимодействия и далее преобразованием обратно в диапазон волновых чисел. Вполне понятно, что такие методы возможны, если только существуют и используются быстрые методы вычисления преобразований, (е) Как частный случай (д), полагают, что некоторые быстрые методы для решения уравнения Пуассона дискретного вида для простых геометрий ба- зируется на частном фурье-преобразовании даннных с помощью БПФ (на- пример, алгоритм FACR, который рассматривается в подразд. 5.6.2 [101]). При таких обстоятельствах основное требование заключается в параллельном выполнении многочисленных фурье-преобразований, например, при преобра- зовании данных каждой из 64 линий в сетке 64 х 64 параллельно. В метеоро- логическом приложении применяется полунеявная временно-квантованная процедура, где необходимо осуществлять тысячи реальных преобразований Фурье за квант времени [226]. (ж) Решение многих задач поля можно выразить в виде свертки исходного распределения с функцией влияния1, которая описывает воздействие на ре- шение точечного источника. Воспользовавшись теоремой свертки, получаем как эквивалент, что фурье-преобразование решения есть не что иное, как произведение (волнового числа на волновое число) фурье-преобразования источника и фурье-преобразования функции влияния. Решение может быть найдено: (1) выполнением преобразования источника, (2) умножением его 1 Называется также функцией Грина. - Прим, перев. 285
на преобразование функции влияния, которое может быть предварительно вычислено и записано, и, наконец (3), выполнением обратного преобразова- ния для получения источника. С появлением БПФ такой метод является един- ственно практичным и широко использовался при вычислении гравитацион- ного потенциала, обусловленного изолированной системой звезд, т. е. галак- тикой [28, 61, 102], и при вычислении электростатического взаимодействия в ионных кристаллах по Р3М алгоритму [6, 60, 106]. На этом список приложений ни в коей мере не заканчивается. Другие при- ложения, включающие в себя цифровую фильтрацию, вычисление ковариа- ции и спектральных плотностей, усреднение и сглаживание, преобразование Лапласа, рассматриваются в работе [43]. 5.5.1. Быстрое преобразование Фурье Быстрое преобразование Фурье — это общий термин группы методов для быстрого вычисления конечного фурье-преобразования (или фурье-анализа): —г 1 п~1 f-— S exp(—2irijk/n)f., ОСкСп —1, (5.71а) «7=0 7 где fj - - множество п комплексных данных, которые следует трансформиро- вать, а — множество п комплексных гармонических амплитуд, получен- ных в результате преобразования. Прямое вычисление выражения (5.71а) потребовало бы п комплексных умножений и п комплексных сложений на одну гармонику или в целом 8н2 вещественных арифметических операций для вычисления всех п гармоник. Значение алгоритма БПФ заключается в том, что он уменьшает это число операций примерно до 5nlog2« веществен- ных арифметических операций. Поэтому отношение производительности БПФ к прямому вычислению (ПВ) на последовательном компьютере состав- ляет Рбпф/Рпв = 8«2/(5и1°ё2«) «/l«g2«. (5.716) Это отношение изменяется приблизительно от 18 (и = 128) до 102 (и = 1024), или примерно до 5 • 104 (н ~ 106). Это и не удивительно, поскольку опубли- кование метода БПФ Дж. Кули и Дж. Тьюки [45] привело к истинной рево- люции в численных методах. Хотя Дж. Кули, П. Льюис и П. Велш [43] и ссы- лаются на ранние работы, содержащие описание nlog2H-методов [52, 193,216, 229], но они не были общеизвестными. До 1965 г. считалось, что преобразо- вание Фурье содержит п2 вычислений, которыми можно пользоваться только в редких случаях, и, как правило, их избегали; после 1965 г. оно стало отно- сительно дешевым процессом, на несколько порядков быстрее, чем предпо- лагалось ранее. Преобразование (5.71а) имеет инверсию (или фурье-синтез) f - S exp(2m/k/H)/fe, - 1, (5.72а) ' fc=o которая может быть доказана с помощью соотношения ортогональности П- 1 , S ехр[2я1к(/-/ )/и] =и5..,, (5.726) к=о " 286
где 8^., — 8-символ Кронекера: (о / =#/ , (5.72в) Отбросив коэффициент и-1 в уравнении (5.71а), который может быть включен вне подпрограммы для преобразования Фурье, прямое и обратное преобразование можно выразить как у 0</<«-1, (5.73а) Ук /=о " 7 где ехр(—2тп/н) при анализе, (5.736) со п ехр(+2тп/д) при синтезе. (5.73в) (5.74а) Связь отрицательного знака с фурье-анализом и положительного знака с фурье-синтезом произвольная. Мы придерживались правил теории передачи сообщений и данных работы [25]. Вполне ясно, что выбор не существен и может быть сделан по соответствующему выбору ain. Алгоритм в обоих слу- чаях один и тот же. Являясь корнем «-степени из единицы, соп имеет такое важное свойство: =1 и поэтому , ,HS+r _ (. ,n\Sr t = t где s и t — целые числа. Выражения (5.736, в) также показывают, что общий коэффициент может быть изъят или вставлен как в подстрочный, так и над- строчный индекс сот без изменения своего значения, например: w”/2 =41/2=w” = -i. (5.746) Часто случается, что преобразуемая функция является вещественной, ска- жем gj, и преобразования выражаются на языке синусов и косинусов. Поэто- му, предположив, что п — четное, имеем = ±[а0+а ,,(-1)7 ] +”^ 1 [a.cos(2njk/n) + 8. sin(2W«) ], (5.75а) 5у 2 k=i л п где а, = — S* g cos(2tt/&/«), (5.756) К nj=o ' 8. = — £. sin(27rA/w). (5.75в) К п ] =о Коэффициенты ак и Ьк вещественного преобразования очень просто связаны с вещественной и мнимой частями комплексного преобразования (5.71а) g: bfe = -2Im(g*). (5.75г) Поэтому вещественное преобразование может быть получено посредством выполнения комплексного преобразования длиной п над данными, у кото.- 287
рых вещественная часть — gj, а мнимая — нуль. Вещественная и мнимая части первых п/2 гармоник комплексного преобразования дают коэффициенты ве- щественного преобразования по уравнению (5.75г). Вторыеп/2 гармоник бу- дут лишними, поскольку являются комплексными сопряженными первых п/2 гармоник: g~n~k= (gk)* = Re(gk) -ilm(gfe), Q<k<n/2. (5.76) Вполне ясно, что указанный метод вычисления вещественного преобразо- вания является расточительным, поскольку половина входных данных равна нулю (все мнимые части), а половина результатов не содержит никакой но- вой информации и поэтому отбрасывается. Число скалярных вещественных арифметических операций в этом случае составляет 5nlog2п. Более экономный метод выполнения вещественного преобразования за- ключается в обозначении четных значений вещественных входных данных в качестве вещественных частей преобразуемой функции и нечетных значений вещественных входных данных в качестве мнимых частей, т. е. fj = g2j +fc2/ + 1, 0<j<n/2-\. (5.77) Комплексное преобразование fj имеет длину п/2 и занимает 2ynlog2n ска- лярных вещественных операций. Тогда коэффициенты вещественного пре- образования находятся следующим образом: (а) Вычисление для к = 1,2,..., и/4 - 1 преобразований п/2 четных и п/2 нечетных значений : четные К X g2j к + (/ , нечетныек = ^ 2 g2+1<^2 =^\fk - (7"/2“Ъ*]> fl J _0 *>} 1 ’»/ ** *’•1 (5.78а) (5.786) где звездочка обозначает комплексное сопряжение. (б) Вычисление для к = 1,2,..., и/4 — 1 промежуточного преобразования Ск длиной п/2: Ск = четные к + нечетные к, (5.79а) Ск = четные к — а>кнечетные\ (5.796) С/4 = (7"/4)*- <5-79в) (в) И наконец, получение коэффициентов вещественного преобразования из: а0 = Re(/°) + Im(/°> an/2=Retf°> ~ ak=Re(Ck>’ 1 I k=l,...,n/2-l. bk = ~im(Ck4 (5.80a) (5.806) (5.80b) Число вещественных скалярных арифметических операций составляет 2jnlog2n + З|и, где второй член возникает из последующей манипуляции с в уравнениях (5.78) - (5.80). Вычисление рядов Фурье (5.75а) из коэффициентов (5.756, в) может 288
|5ыть выполнено путем реверсирования упомянутой процедуры в следующем Виде: (а) Установка Со=а0, Cn/2=fln/2’> Ск = ак - \Ък, к = 1, 2,..., п/2 - 1. (б) Вычисление четные ^=|(С+С* fe) 7 Н=1,2, . ..,и/4 —1. нечетные* =|(Ск - C*/2_fc) w/J _(в) __ fk = четные * + i нечетные к, I _ У к = 1, 2,..., п/4 — 1, fn!2-k_ (четные* _ i нечетные^)* j а также f п/4 _ Г** J и/4’ (5.81а) (5.816) (5.82а) (5.826) (5.83а) (5.836) (5.83в) (5.83г) Далее вычисляем комплексный фурье-синтез из п/2 комплексных значе- ний fk. Результирующие п/2 комплексные значения содержат требуемые синтезированные значения в последующих вещественных и мнимых частях, следовательно, ff +ig2i + i, j =0,1,...,«/2-1. (5.83Д) Указанная выше процедура включает в себя предварительную обработку п вещественных данных в соответствующие п/2 комплексные значения, ко- торые затем преобразуются с помощью комплексного БПФ. Как и в ана- лизе, число вещественных скалярных арифметических операций составляет 2ynlog2n + Зуи. Вычисление вещественных фурье-преобразований рассматривается в рабо- тах [22, 43]. Другой подход, включающий в себя свертывание данных перед умножением на синусы и косинусы, разбирается в работе Р. Хокни [102]. Последний метод представляет собой слияние методов ручных вычислений, как это делается, например, в работах [191, 192, 248] с БПФ-подобной ре- курсией, и обеспечивает в дополнение к периодическому преобразованию, описанному выше, конечные преобразования синусов и косинусов. Послед- ние вместе с преобразованием Лапласа рассматриваются в работе [44]. Дру- гие важные публикации по БПФ представлены в работах [26, 83, 204, 205, 237]. Цель данной главы — только показать основные особенности алгорит- ма БПФ и обсудить некоторые соображения, влияющие на его реализацию на параллельных компьютерах. По этой причине будем ограничивать наше об- суждение частным (по основанию 2) случаем, для которого п = 2<? (где q — целое число), хотя алгоритм можно эффективно использовать с любым п, которое является произведением малых простых чисел, преимущественно многократно повторяющихся. Такие алгоритмы смешанного основания опи- 10 Зак. 1799 2 89
сываются в работах [205, 224]. Тип двоичного алгоритма, особенно хорошо подходящего для параллельной обработки, был дан М. Пизом [172], а срав- нение производительности нескольких упомянутых алгоритмов на машине CRAY-1 было сделано К. Темпертоном [226]. Существует также тип алгорит- ма, где п расщепляется на коэффициенты, отличающиеся друг от друга и представляющие собой взаимно простые элементы [229]. Реализация быст- рых алгоритмов по основанию 2 на матрицах процессоров рассмотрена К. Джессхоупом [126]. 5.5.2. Получение БПФ Ключ к образованию алгоритма БПФ лежит в соответствующем выраже- нии промежуточных частных преобразований. Здесь мы приняли выражение, применяемое Дж. Робертсом [188], хотя нотация и была слегка изменена. Частные преобразования п данных • • ,fn_r на уровне / преобразова- ния выражаются <5-84а) 7=0 где Л А: = 0, 1,..., 2Z — 1, (5.846) i = 0, 1, . . ,,п2~1— 1. (5.84в) Эти выражения описывают набор из п2~1 преобразований. Каждое пре- образование выделяется своим идентифицирующим числом /, являющимся: индексом первых данных, по которым вычисляется преобразование. Остав- шиеся данные для преобразования отделяются от первых интервалом п2~!. Длина каждого преобразования равна 21. Следовательно, ft представляет к-ю гармонику i-ro преобразования на уровне 11\ Когда / = 0, имеем j = к= 0 и (О) Т° i =0, 1,. . . ,п - 1. (5.85а) Отсюда результаты преобразования нулевого уровня представляют собой первоначальные данные. На уровне / = q, где q = log2n, имеем i = 0 и (</) и-i = (5-856) ;=О Следовательно, на уровне log2^ существует только одно частное преобра- зование, которое пропорционально необходимому полному преобразованию со всеми исходными п данными. _ Также желательно рассматривать частные преобразования ft как эле- менты двумерной матрицы из 21 строк и и2~? столбцов, сформированных посредством записи гармоник каждого частного преобразования в виде век- тора-столбца и расположением этих векторов-столбцов рядом друг с другом. Тогда мы начнем на нулевом уровне с одиночной строки данных и закончим Ч В тексте будем употреблять только нотацию 190
на уровне log2n одиночным столбцом результатов. При переходе от одного уровня к следующему число столбцов делится пополам, а число строк удва- ивается. Принятие такой точки зрения не означает, что частные преобразова- ния необходимо хранить в компьютере в виде двумерной матрицы перемен- ных. В языке Фортран неизменно используется одномерная индексация, и мы увидим, что происходит экономия памяти, если гармонические амплитуды будут вычисляться в перегруппированном, а не в их естественном порядке. Двумерную индексацию можно применять, если в параллельных конструк- циях языка имеются и эффективно реализованы, как показано в подразд. 4.2.7, необходимые средства. Арифметические операции можно выполнить, решая рекурсии для част- ных преобразований на уровне 1+1 относительно преобразований на уровне/: g+D 2Z+1_! ftk= Е w2'+i-^n2-(?+!)+/• (5.86a) 7-0 Разделив сумму на две части и задав j = 2s + t при s = 0, 1, . . . , 2l nt = = 0,1, получаем g+1-) 2Z-1 1 fl k= E £ W2*+l •^(2s + r)n2-0+l) + 7‘ (5.866) s = 0 t=0 Поскольку мы обозначили co , 2Z + 1 как 2/ + 1-й корень из единицы, имеем: (5.86в) (5.87а) где на последнем шаге мы удалили общий коэффициент 2 из подстрочного и надстрочного индексов второго коэффициента. Подставив уравнение (5.86в) в (5.866) и записав отдельно члены для t = 0 и 1, получаем: (7+1) 2г-1 2*-1 fik- Е ^2lfm2-l+j + “>2(1+1) Е “>Sklf^a~l+i+n2-^ + l> s-0 s=0 Отсюда (z+D (i) (£) 77к = Лк+^2жЛк+„2-о+1)- Замена к на к + 21 дает: 0+1) 0) (р. Tk + 2!= fik~ W21+l^ + »2-g+1)’ поскольку(Z)7T+2Z= ИЗ уравнения (5.84а), и “>ki+l = w21+l W2?+1 = W2Z+1 = —а)к/ + 1- На последнем шаге уравнения (5.87в) мы изъяли общий коэффициент 2Z из надстрочного и подстрочного индексов первого коэффициента и воспользо- вались фактом, что о>2 = — 1. В заключение следует сказать, что формула БПФ Кули — Тьюки [45] зада- ется так: 10* 291 (5.876) (5.87в)
(z+l) (О (О ~~ё^к _ 7к , к fk h Ji + W2*+l J{ + n2-(l+1) (Z+l) (Z) (0 —r-k+2Z ~jrk , ,k ~7k ^7 - fj W2Z+1 A+n2-0+1) (5.88a) для 1 = 0, 1,... ,q~ 1, (5.886) где к = 0, 1, . . . , 2l - 1 и i = 0, 1,..., n2" - 1 с начальным условием (°)у ° = f. Результат преобразования находится из 1 (<?) fk = ~fok. (5.88в) Если 0^0Jk перезаписывает ^fk, а (1*0 f к+21 перезаписывает , то преобразование может быть выполнено ”на месте”, без по- I +пг~ 1 *' требности во вспомогательной памяти. Однако конечные гармоники тогда получаются в обратном двоичном порядке. Иными словами, если к = к х x2q~1+k 22<?“2 + . .. + ki 2 + к0, где к - p-я цифра в двоичном представ- лении к, тоЧта гармоника будет размещаться в ячейке где к' =к0 х х 2(1~1 + к\2?~г + ... + к 22 + к Если за гармоническим анализом должен следовать синтез, который реверсирует вышеупомянутые шаги, то отпадает потребность в рассортировке гармоник по естественному порядку. Этот случай встречается при решении задачи поля методом свертки. Однако, если гармоники требуются в качестве вывода, должен быть вставлен шаг сортировки после основного алгоритма. Такую сортировку часто называют разрядно-обратной, поскольку гармоники приходят и в разрядно-реверсив- ном порядке. Кроме того, если устранить перезапись посредством помеще- ния результатов рекурсии во вторую матрицу, то сортировка, как это пока- зано на диаграмме потоков данных на рис. 5.12, может выполняться на каждом уровне. Уравнения (5.88) быстрого преобразования Фурье могут быть реверсиро- ваны для решения на уровне I относительно уровня Z+ 1; тогда обратное преобразование выглядит следующим образом: (Z) /(Z+l) (Z+1) \ + V+2J> (Z) /(Z+l) (Z+l) ) 7 k , - 1 < i~k I f k — f k+2 i Ji+n2-(M)-2a>2M\ JI > (5.89a) для l = q-l,q~2.........0, (5.896) где к = 0,1,..., 2l~1 и z = 0,1,... , n2“ - 1 с начальным условием (5'89в) Синтезированные результаты находятся из (0) f = f.°, i =0, 1, ... ,п - 1. (5.89г) Рассмотрение уравнений (5.89) показывает, что конечный результат не из- менится, если в уравнении (5.89в) опустить коэффициент п, а в уравнениях 292
1=0 1=1 1 = 2 1=5 Рис. 5.12. Схема потока данных для формулы Кули-Тьюки быстрого преобразования Фурье. Ромбики показывают вычисление рекурсии (5.88); цифра в ромбике указыва- ет степень п корня из единицы, которая используется как фазовый коэффициент (по Темпертону [224]) (5.98а) и (5.896) - коэффициент 1/2. Это равнозначно занесению коэффици- ента Т1 в правую часть выражения частного преобразования (5.48а). Поскольку обратное преобразование может быть преобразовано в прямое преобразование путем замены со на со-1, изменением ролей f и / и умноже- нием на и'1 в удобном месте, уравнения (5.89) также дают другую формулу для прямого преобразования (Z) (Z+l) G+1) , Тк=Тк + Tfc+2 (1) /а+1) (г+1) т, 1 z ' к Г kJr‘ где к = 0,1,..., 2l - 1 и i = 0, 1,. . (<?) ^о=4- Найденные результаты имеют вид: (0) Г ff- (5.90а) ч для l = q — l,q — 2, ..., 0, Z) (5.906) ., п2~ — 1 с начальными значениями (5.90в) (5.90г) 293
Это формула Джентельмена - Сэнда [83] быстрого преобразования Фурье. БПФ может базироваться либо на рекурсиях (5.88), либо на уравнениях (5.90). Реализация также отличается по способу хранения, выбранному для промежуточных частных преобразований. Например, М. Урих пользуется уравнениями (5.88) [237], а М. Пиз - уравнениями (5.90) [172]. 5.5.3. Векторизация Методы реализации БПФ на векторных конвейерных компьютерах можно проиллюстрировать, рассмотрев программу на Фортране алгоритма Кули — Тьюки для уравнений (5.88), которая приводится на рис. 5.13. Эта програм- ма включает в себя программу управления (вверху), которая вызывает под- программу RECUR (внизу) для вычисления рекурсии (5.88). Подпрограмма RECUR (F, G, W, L, N), один раз проделав рекурсивные вычисления для L =1 с входными данными комплексного вектора F, заносит выходные данные в комплексный вектор G. Вектор W содержит степени п корня из единицы, С ГЛАВНАЯ УПРАВЛЯВШАЯ ПРОГРАММА N=2*»L0G2N ВО 10 Ll=l,L0G2N,2 CALL RECUR <F,G,W,L1-1,N) IF<L1.EQ.L0G2N) STOP 10 CALL RECUR(G,F,W,L1 STOP SUBROUTINE RECUR(F,G,W,L,N> COMPLEX F(N),G(N),W(N)»V<N),WK I2L=2**L I2L1=2*I2L N2L1-=N/12L1 INC1=I2L IFO..GE.2) INC1=INC1+1 INC2=I2L1 IF<L+1.GE,2) INC2=INC2+1 INC3=N2L1*INC1-INC1 INC4=I2L-INC2 DO 20 K1=1,I2L WK=W(N2LUtKl-N2Ll + l) DO 20 11=1,N2L1 V(II)=WK*F<INC1*I1+K1+INC3) G(INC2*I1+K1-INC2)=F <INC1«11+K1-INC1)+0(11) 20 G<INC2*I1+K1-INC4)=F(INCU41+K1-INCI)-V(Il) RETURN END Рис. 5.13. Управляющая программа (вверху) и подпрограмма RECUR для схемы А (вни- зу) с векторизацией цикла DO II 294
a N = n представляет общее число комплексных переменных. На последую- щих уровнях входные и выходные данные перемежаются между массивами F и G и поэтому обращения к подпрограмме RECUR в программе управле- ния осуществляются попарно. Поскольку F и G являются различными векто- рами, выходные данные никогда не перезаписывают входные. Это дает воз- можность поддерживать естественный порядок гармоник и позволяет боль- шинству компиляторов векторизовать операторы в цикле DO II. Мы предпо- лагаем, что вектор W был ранее загружен в соответствии со степенью/? кор- ня из единиц, так что со*записано в W (к + 1) (5.91а) и частные преобразования расположены так, что (£) F j записано в F или G (2li + к+ 1). (5.916) Другими основными Фортран-переменными являются LI = I + 1, К1 = £ + + 1, II = i + 1, I2L = 2l, N2L1 = п2' L2L1 = 2/+1, N2L2 = h2’(U2). LOG2N = log2n. Операторы в цикле DO 20 представляют собой реализацию рекурсии Кули — Тьюки (5.88). Чтобы показать возможность векторизации, они написаны по отношению к переменным управления циклом со всей ин- дексацией в явном виде. В соответствии с написанным большинство компи- ляторов, как правило, заменит цикл DO 20 II векторной командой. По- скольку вектор W не представляет функцию от II, он заменяется скаляром WK в более внутреннем цикле, который может быть реализован командами типа вектор = вектор + скаляр * вектор. Длина вектора равна п2~ и уменьшается при каждом обращении к подпрограмме RECUR, принимая значения п/2, п/4, . . . , 4, 2, 1. Интервал хранения между последующими элементами вектора F, к которым происхо- дят обращения в цикле DO II, составляет 21 и принимает значения 1, 2, 4, 8, 16, ... , п/2. Следовательно, на более поздних шагах алгоритма в ЭВМ с чис- лом банков памяти, равным числу в степени 2, будут возникать конфликты на уровне банков памяти. Например, на машине CRAY-1 будут конфликты при / > 2 или интервалов, которые представляют собой кратное от четырех комплексных или восьми вещественных чисел. Упомянутые конфликты на уровне банков памяти можно устранить за счет дополнительной памяти с небольшой емкостью, добавив единицу к ин- тервалам хранения INC1 и INC2 для I > 2. Это повышает требование к памя- ти на 1/4; но интервалы хранения между последующими элементами вектора F будут 1,2, 5, 9, 17,..., п/2 + 1 на уровнях I = 0, 1, 2, 3, 4,... , log2 (и) 1- Эта модификация типа хранения происходит в операторах IF, как раз перед циклом DO 20. В цикле DO 20 выполняются десять вещественных скалярных арифмети- ческих операций, следовательно, на компьютере с длиной полупроизводи- тельности /?1/2 время выполнения этого алгоритма (который назовем схемой А) пропорционально 295
SUBROUTINE RECUR(F»G»U»L,N) COMPLEX F(N)»G(N)»V(N)»U(N) I2L=2**L I2L1=2*I2L N2L1=N/I2L1 INC1=I2L IF(L.GE.2) INC1=INC1+1 INC2=I2L1 IFCL+1.GE.2) INC2=INC2+1 INC3=N2L1»INC1-INCI INC4=I2L-INC2 DO 20 I1=1»N2L1 DO 20 K1=1»I2L V(K1)=U(N2L1*K1-N2L1+1)»F(INC1»I1+K1+INC3) G(INC2*I1+K1-INC2)=F(INC1«Il+K1-INC1>+V(KI) 20 G(INC2*I1+K1+INC4)=F(INC1*I1+K1-INC1)-V(Ki) RETURN END Рис. 5.14. Подпрограмма RECUR для схемы В с векторизацией цикла DO К1 log2(n)-l , \ ТА= I 10k2+n2-<'+1) 2* = 1=0 ' ' log2(n)—1 log2(n)-l = 10л1/2 2l + 5п У 1 = z=o 1=0 (5.92а) (5.926) = 10n1/2(«-l) + 5nlog2«. (5.92в) Последний член в уравнении (5.92в) представляет собой счет обычных по- следовательных операций для алгоритма БПФ (примем и1/2 = 0), а первый член показывает влияние параллелизма аппаратуры через значение п 1/2. Вполне очевидно, что циклы DO К1 и DO II приведенной программы мож- но поменять местами без изменения действий операторов в цикле DO 20. Ес- ли это сделать, как показано на рис. 5.14, то цикл DO К1 становится самым внутренним и заменяется векторными командами. Длина вектора равна У или 1, 2, 4,..., и/2 в последующих проходах, а интервал хранения — п2~ (,+ или п/2, п/4, • , 4, 2, 1. Конфликты на уровне банка данных представляют серьезную проблему на ранних шагах этого алгоритма, но от них можно из- бавиться способом, описанным выше. Переменная W сейчас представляет со- бой вектор во внутреннем цикле, а умножение — команду ’’вектор * вектор”. Время выполнения этого алгоритма (схема В) пропорциональна log2(n)-l гв= У 10(n1/2+2^2-(,+ 1) = 1=0 log2(n)-l log2(n)-l = 10и1/2 £ п2~^ + 5п £ 1. 1=0 (=0 (5.93а) (5.936) Задав /' = log2 (п) - 1 - I и реверсируя порядок первого суммирования, получаем 296
log2(n)-l Гв = 10п1/2 £ 2 +5nlog2n = 1 = 0 (5.93b) = 10n1/2(n - 1) + 5nlog2n = (5.93r) = tA. . (5.93д) Здесь мы обнаруживаем, что если решение алгоритма довести до заверше- ния, то две альтернативные схемы выполняются за одинаковое время. Одна- ко они имеют различные характеристики. Схема А начинает с длинных век- торов, длина которых уменьшается по мере работы алгоритма, тогда как схе- ма В начинает с коротких векторов, длина которых увеличивается по мере работы алгоритма. Производительность любого параллельного компьютера улучшается по мере увеличения длины вектора, поэтому комбинированный алгоритм напрашивается сам собой, т. е. выполнять БПФ первых р уровней по схеме А, а последних q — р уровней по схеме В. Этот комбинированный алгоритм выполняется за время (р-1 log2(n)-i \ £ 2Z+ £ + 5nlog2n = (5.94а) = 10п1/2(2р + п2~р - 2) + 5пlog2п. (5.946) Продифференцировав уравнение (5.946) по р, находим условие для мини- мального времени выполнения dtA + B/dp = 10n1/2loge2(2p - п2~р) = 0. (5.95а) Отсюда 2Р =п/2р> 2гр =п (5.956) p=^-log2n. (5.95в) При таком оптимальном выборе р максимальная длина вектора составля- ет 2Р = -/п (или V п/2, если п не кратно четырем), а время выполнения (до- пуская п кратное четырем) задается, как tA + в = 20лi/2 (-Jn - 1) +5«log2«. (5.96) Этот тип алгоритма был разработан независимо Дж. Робертсом [188] и К. Темпертоном [226]. Вариант Темпертона базируется на рекурсии Джен- тельмена - Сэнди (5.90) и формирует основную подпрограмму CFFT2, напи- санную В. Петерсоном [148] на CAL-ассемблере для научной библиотеки компьютера CRAY-1. В любой эффективный алгоритм обычно встраиваются два следующих упрощения. Они относятся к множителям со* 1+1 , которые имеют- = п l+i ся в рекурсиях Кули — Тьюки и Джентельмена — Сэнди. Когда к =0, множи- тель равен единице, и можно избежать ненужного умножения на это значение, написав отдельный цикл для этого случая. В вычислении первого уровня частных преобразований при I = 0 в рекурсиях (5.88) это явление встречает- ся при каждом вычислении уравнений (5.88). На других уровнях оно встре- чается при первом использовании уравнений. При вычислении второго уров- 297
Рис. 5.15. Схема потока данных для преобразования по степени четыре для п = 16. Ром- бики показывают вычисление рекурсии (5.97). Число в ромбике указывает степень п корпя из единицы, которая используется При вычислении константы а ня частных преобразований, когда I = 1 в уравнениях (5.88), к = 0,1, множи- тели равны 1 и i. Поскольку умножение на i просто меняет вещественную и мнимую части и изменяет знак вещественной части, также не требуется при вычислении преобразований второго уровня никаких операций перемноже- ния. И снова оправдан отдельный цикл. Некоторый объем арифметических операций можно сэкономить, если чис- ло трансформируемых элементов п делится на коэффициент, равный че- тырем [205]. Тогда есть возможность объединить два приложения рекур- сии в одиночную рекурсию, включающую в себя четыре входных значения и четыре выходных значения Если предположить, что п составляет число, кратное четырем, и, следовательно, log2n — четное число, преобразование может быть выполнено путем вычисления рекурсии для / = 1,3, 5, . .., log2 (и) - 1, для к = 0, 1. . . . .y2z - 1; I =0, 1, . . ., и2, 298
(7-1) (7-1) а °2Н1 Л + |П2-Ь 6~Ш2Н1 Лч«2-'’ (1-1) Зк —f~k С Ш2?+1 Л+|„2-/’ (5.97a) (1-1) d = ft к +b, g = a+с , (5.976) Р-Р е = к — b, h = а — с, J 1 7 1 (5.97b) (Hl) (Z+1) , fik = d+g, ~f~k+^1 ~e + ih, (5.97r) (Hl) , (Hl) , fik+2=d-g, ftk + ^2 =e-ih. (5.97д) Диаграмма потоков данных для преобразования по степени числа 4 (п = = 42) показана на рис. 5.15. Вычисление рекурсии (5.97) требует три комп- лексных умножения для подсчета а, Ь, с и восемь комплексных сложений, имеющихся в уравнениях (5.976, в, г, д). Это составляет 34 вещественных операции для 41og2« значений I и и/4 комбинаций к и i. В целом это состав- ляет 4,25nlog2n вещественных операций по сравнению с 5nlog2n для преобра- зования по степени числа 2, или 15 %-ную экономию. При I = 1, к = 0 все мно- жители равны единице, и, как в случае преобразования по степени числа 2, оправдано применение специальной программы, чтобы избежать ненужного умножения. Преобразования по степени числа 2 и по степени числа 4 можно легко объединить, чтобы обеспечить эффективное преобразование по любой степени числа 2, которое сначала устраняет из п все коэффициенты, равные четырем, и затем, если необходимо, устраняет конечный коэффициент, рав- ный двум. 5.5.4. Параллельная реализация В матрицах процессоров достигается существенная прибавка в производи- тельности, если можно получить степень параллелизма алгоритма, соответ- ствующую степени параллелизма аппаратуры матрицы, т. е. числу процессо- ров в матрице. Алгоритмы, рассмотренные в подразд. 5.5.3, имеют степень параллелизма в диапазоне п/2 — \fn и поэтому являются не очень пригодны- ми для реализации на матрицах процессоров, которые имеют фиксированное число процессоров, а следовательно, и фиксированную степень параллелизма. Если, однако, цикл DO К1 и цикл DO II из рис. 5.13 или рис. 5.14 объединить в одиночный цикл, то все арифметические действия могут быть выполнены с фиксированной степенью параллелизма п. Если такой параллелизм соответ- ствует матрице (например, преобразование 4096 значений на ICL DAP 64 х х 64), то достигается идеальный случай. 299
SUBROUTINE RECUR(F,G,UrLrN) COMPLEX F(N) ,G(N) ,V(N) ,U(N) »U(N) ,E(N) I2L=2**L I2L1--2*I2L N2L1=N/I2L1 INC1=I2L INC2=I2L1 INC3=N2L1»INC1-INC1 INC4=I2L-INC2 DO 20 K1=1,I2L DO 20 11=1,N2L1 U(INC2*I1+K1-INC2)=F(INC1*I1+K1-INC1) U(1NC2*I1+K1+INC4)=F(INC1»I1+K1-INC1) E(INC2*I1+K1-INC2)=F(INC1*I1+K1+INC3) E(INC2*I1+K1+INC4)= -F<INC1*I1+K1+INC3) V(INC2*I1+K1-INC2)=W(N2L1«K1-N2L1+1) 20 V(INC2*I1+K1+INC4)=W<N2L1*K1-N2L1+1) DO 30 J=1,N E( J) =V (J) *E (J) 30 G(J)=U (J)+E(J) RETURN END Рис. 5.16. Подпрограмма RECUR для алгоритма PARAFT с длиной вектора ^в цикле DO 30 Мы назовем упомянутый алгоритм PARAFT, поскольку он наиболее при- годен для выполнения на паракомпьютере. Детали подпрограммы RECUR приводятся на рис. 5.16. Цикл DO 20 не содержит никаких арифметических операций и состоит только из пересылок данных, которые необходимы для подготовки к арифметическим действиям, выполняемым в цикле DO 30. Комплексные массивы U и Е представляют копии массива данных F с изме- ненным знаком, соответствующим отрицательному знаку в уравнении (5.886). Комплексный массив V содержит копии множителей в соответству- 2,+1 ющем месте, так что все п умножений уравнений (5.88) в первом операторе цикла DO 30 могут выполнятся параллельно. Далее второй оператор цикла DO 30 выполняет все п сложений уравнений (5.88) параллельно. Как описывалось в предыдущем разделе, при первых двух обращениях к подпрограмме RECUR, когда I = 0 и 1, не производится никаких веществен- ных умножений. Обычно специальная программа для этих случаев и преобра- зование по степени числа 4 по возможности объединяются в эффективную программу. При оценке времени выполнения алгоритма следует учитывать маршрутизацию, присутствующую в цикле DO. В процессорных матрицах, где арифметика достаточно медленная по сравнению с маршрутизацией, как, например, в ICL DAP, цикл DO 20 занимает небольшую часть времени выпол- нения. Например, маршрутизация данных составляет 10 — 20 % общего вре- мени при выполнении 1024 комплексных преобразований на ICL DAP (мат- рица 32 х 32) [73]. В матрицах с более мощными процессорами цикл марш- 300
рутизации DO 20 будет играть отно- сительно большую роль. Некоторые процессорные матрицы имеют спе- циальные соединения маршрутиза- ции и схемы, предназначенные для осуществления эффективной марш- рутизации, необходимой при быст- ром преобразовании Фурье. При- мерами служат машины STARAN и BSP (см. гл. 3). Рассмотрение рис. 5.16 показы- вает, что алгоритм PARAFT требует одно комплексное умножение и од- но комплексное сложение, которые должны выполняться на каждом уровне со степенью параллелизма п. Это эквивалентно восьми вещественным операциям со степенью параллелиз- ма п на log2n уровнях; считая маршрутизацию не существенной, время вы- полнения пропорционально ^PARAFT = 8(л1/2 +«)log2n. п Рис. 5.17. Области плоскости (и, т/п^), характеризующие более высокую произ- водительность при параллельном реше- нии т систем уравнений длиной п (5,98а) Сравнив уравнение (5.98а) с временем для схемы А + В в уравнении (5.96), находим, что PARAFT имеет более высокую производительность, чем А + В, если «i/г > 3nlog2n/ [20(\Лн - 1) - 81og2п]. (5.986) На рис. 5.17 показаны области на плоскости (п, и7Д),в которых отдается предпочтение тому или иному алгоритму для одиночного преобразования (для га = 1). В усредненном смысле (см. подразд. 1.3.3) приведенные рассуждения с достаточной точностью применимы к конвейерным компьютерам и процес- сорными матрицами. Существуют также другие альтернативы. К. Джессхоуп [126] показал, что комбинация этих двух методов имеет преимущество на процессорной матрице, если длина преобразования превосходит размер мат- рицы. В этом случае длина преобразования последовательно делится пополам с помощью А + В схемы до тех пор, пока длина передачи не станет меньше, чем размер матрицы. На этой стадии алгоритм PARAFT завершает преобра- зование. При столкновении с проблемой вычисления т независимых преобразова- ний длиной п каждый подход следует выбирать в зависимости от желаемой степени параллелизма. Сначала рассмотрим методы, которые имеют макси- мальную степень параллелизма, и сравним производительности А + В-схемы и PARAFT при их параллельном использовании в т преобразованиях. Эти ме- тоды подходят для машин с большим значением естественного параллелизма, например CYBER 205 и ICL DAP. Время выполнения: Г,. в) = 20И1/2 (у/~п - 1) + 5raHlog2H, (5.99а) 'А ’ par ^PARAFT = 8 (и1/2 + ra/?)log2H. (5.996) 301
Сравнив эти выражения с уравнением (5.13а), увидим, что их средний параллелизм равен: - _ m«log2H р (А + в> par 4(\/и—1) ’ (5.99в) (5.99г) (5.99д) Р PARAFT тП- par Уравнения (5.99) показывают, что (А + В) -алгоритм имеет лучшую производительность, когда т 20(Уй~- 1) -81og2H «1/2 3Hlog2H Области плоскости (и, т/п-^), в которых отдается предпочтение тому или иному методу, показаны на рис. 5.17. Мы видим, что (А + В) -схема предпочтительнее, когда либо число преобразований, либо длина Преобразо- ваний становится большим. Если, как вариант, отдается предпочтение ограничению параллелизма ал- горитма примерно до п или т, то можно задать вопрос,-что будет являться преимуществом — повторение наилучшего алгоритма для одиночного пре- образования т раз, либо использование наилучшего последовательного алгоритма и параллельного его выполнения над т системами (алгоритм MULTFT). Наилучшим последовательным алгоритмом является либо схема А, либо схема В с = 0, которые требуют 5rtlog2H вещественных скаляр- ных арифметических операций. Алгоритм MULTFT имеет степень паралле- лизма Р multpt = т и выполняется за время ^MULTFT — (^ i/2 +^r)log2n. (5.100а) При использовании последовательно т раз ст различными трансформиру- емыми системами другие алгоритмы будут выполняться за время ZfA + B) ="г[20и1/2«й - 1)+5и1оё2и], v f seq ^PARAFT — + ^)log2AZ, seq и co средним параллелизмом ftlog2K - P (A + B) seq 4(хЛГ-1) ’ P PARAFTseq -n- Из этих временных интервалов заключаем, что алгоритм MULTFT будет превосходить по производительности (А + В) seq-cxeMy, если т> 2?_____________ 4 (\Гп - 1) ’ и алгоритм PARAFT^, если m > 0,625и/и1/2 «1/2 1 + 0,375и/И]/2 Сплошная кривая на рис. 5.18 отражает уравнение (5.101а) и показывает на плоскости (и, т) область, на которой MULTFT или (А + В) seq-cxeMa име- (5.1006) (5.100в) (5.100г) (5.101а) (5.1016) 302
Рис. 5.18. Выбор наилучшего алгоритма для вычисления т быстрых преобразо- ваний Фурье, каждое длиной п, на ком- пьютере с естественным параллелизмом (приблизительно т или п), для которо- го схема А + В является наилучшим ме- тодом вычисления одиночного преобра- зования (см. рис. 5.17) Рис. 5.19. Выбор наилучшего алгоритма для вычисления быстрого преобразова- ния Фурье, каждое длиной п, на компью- тере с естественным параллелизмом (приблизительно п или т), для которо- го алгоритм PARAFT является наилуч- шим методом вычисления одиночного преобразования (см. рис. 5.17) ет более высокую производительность. Мы отмечаем, что уравнение (5.101а) независимо от п ^2 и одиночная кривая относится ко всем компьютерам. Гру- бо говоря, мы делаем вывод, что если число систем, которые должны быть преобразованы, превышает одну дусятую длины систем, то полезно использо- вать наилучший последовательный алгоритм со всеми системами в параллель, а не наилучший параллельный алгоритм с каждой системой последовательно. К. Темпертон [226] сравнил реальную производительность двух Фортран- программ на машине CRAY-1 для алгоритмов, сравнимых с MULTFT и (А + + В) ^-схемой. Его измерения отмечены кружочками и штриховой линией. Тенденция темпертоновского изменения согласуется с предсказаниями про- стой теории, приведенной выше, и придет в абсолютное соответствие, если предсказанная скорость алгоритма MULTFT по отношению к (А + B)sc - схеме будет увеличена в 2 — 3 раза. Такбй режим вполне возможен, так как алгоритм имеет гораздо более простую индексацию, чем (А + B)sCq-cxeMa (инкремент самого внутреннего векторизованного цикла по т системам все- гда единица), и поэтому обращение к памяти производится наиболее удоб- ным способом. На рис. 5,19 представлено аналогичное сравнение между алгоритмом MULTFT и последовательным применением алгоритма PARAFT к т преобра- зованиям, Рисунок относится к тому случаю, когда мы сделали вывод из рис. 5.17, что алгоритм PARAFT является наилучшим для выполнения оди- ночного преобразования. Следующие ограничительные значения могут ока- заться полезными: С0,625л л<<л1/2 т =< [0,454л 1/2 л=л1/2 (5.102а) (5.1026) 303
и для большого п предельное значение т достигает т = 1,67«i/2, п>>пу2. (5.102b) 5.5.5. Рассуждения о маршрутизации Вышеупомянутые сравнения были сделаны при допущении, что задержки маршрутизации не играют существенной роли во время выполнения. Такие задержки влияют только на производительность процессорных матриц, для которых, по всей вероятности, алгоритм PARAFT будет наилучшим для вы- полнения арифметических операций (см. рис. 5.17). Поэтому проблему мар- шрутизации мы будем обсуждать только для этого алгоритма. Задержка мар- шрутизации, очевидно, будет зависеть от типа связности между процессора- ми в матрице. По этой причине рассматриваем общий класс таких процес- сорных соединений, которые имеются у большинства выпускаемых матриц ’ процессоров. Здесь будем придерживаться работы К. Джессхоупа [126], ко- торый дает полный анализ быстрых преобразований с основанием 2 на про- цессорных матрицах. Более поздние результаты исследований по маршрути- зации и транспортизации в процессорных матрицах приводятся в работах К. Джессхоупа [127, 128]. В дополнение к сказанному, в работе Д.Нассими и С. Сэни [164] рассматривается реализация разрядно-реверсивной и полной перегруппировки. Давайте возьмем процессорную матрицу из Р процессоров, построенную в виде декартовой ^-мерной матрицы с Q процессорами в каждом координат- ном направлении,тогда P = Qk (5.103а) и в соответствии с установившейся практикой берем Q по степени 2: 2 = 29, 4 = 1,2,... (5.1036) Каждый процессор имеет доступ к данным, расположенным в своей соб- ственной памяти, и данным, которые находятся у непосредственных соседей в каждом координатном направлении. Отметим, в частности, что диагональ- ные соединения отсутствуют. Для случая 4 > 2 этот тип связности требует 2к соединений к каждому процессору и кР шин данных для всей матрицы, если мы предполагаем, что шина данных может использоваться для передачи в лю- бом направлении. Для случая 4 = 1 вышеуказанные расчеты делятся пополам. На краях матрицы процессоры в каждой размерности соединяются в пери- одическом смысле. Если I — координатное направление, аг'/ — координата в I направлении, то периодичность означает, что все координаты интерпретиру- ются по модулю Q, отсюда OCi/Cg- 1, I = 1, 2,... ,к, (5.104а) а связность типа ”к ближайшему соседу” означает, что процессоры подключа- ются, если их координаты отличаются на ±1 в одном и только в одном коор- динатном направлении. Мы хотим воспользоваться упомянутой выше ^-мерной матрицей как па- мятью для одномерного массива данных-^/,, i = 1,..., п}, который должен быть преобразован. Чтобы избежать осложнений, будем предполагать, что 304
число процессоров равно количеству данных. Пронумеровав последователь- но процессоры по 1-, 2-, . .., к-й размерности, получаем последовательность: i =ii +i2Q + i3Q2 + -.. + ikQk~1, (5.1046) а связность ”к ближайшему соседу” подразумевает, что процессор I подклю- чен к процессору (i ±1) по модулю Q, (i ± Q) по модулю Q2,... ± 2fc-1) по модулю 2*. (5.104в) Следующие компьютеры попадают в упомянутый выше класс связности: a) ILLIAC IV Р = 64, к = 2, Q = 8, q = 3, и процессор i соединяется с процес- сором (i ± l,i ± 8) по модулю 64. Заметим, что хотя внутренние соедине- ния являются двумерными, с точки зрения краевых соединений матрица рас- сматривается как периодическая одномерная структура. Строго говоря, по этой причине машина не попадает в этот класс; б) ICL DAP Р = 4096, к = 2, Q = 64, q = 6, и процессор i соединяется с про- цессорами (i ± 1) по модулю 64, (i ± 64) по модулю 4096; в) Гиперкуб (двоичный) Р = 16, к = 4, Q = 2, q = 1, и процессор i соединя- ется с процессорами (i ± 1) по модулю 2, (г ± 2) по модулю 4, (i ± 4) по модулю 8, (z ± 8) по модулю 16. Таким образом, проблема создания кР шин данных, когда число процессо- ров велико, ограничивает размерность практической матрицы до двух. Са- мый высокий уровень связности задается гиперкубом, который принимает Q = 2, 3 или 4 и к = 4 [159]. Компьютеры, которые не попадают в упомяну- тый выше класс, относятся к ЭВМ, обеспечивающим диагональные соедине- ния в сети. Например, в машине CLIP (Университетский колледж, Лондон [55 — 57]) обеспечиваются соединения к восьми ближайшим соседям в дву- мерной матрице, тогда как по нашему определению допускаются соединения только к ближайшим четырем процессорам. В алгоритме PARAFT маршрутизация всецело осуществляется в цикле DO 20 (см. рис. 5.16), в котором на каждой стадии происходит частичное пе- реупорядочение. В первом и третьем операторах значения F, разнесенные на N2L1 = nj2l +1, перемещаются так, чтобы находиться друг под другом. Ана- логичный сдвиг и отрицание происходят во втором и четвертом операторах. Если возьмем случай алгоритма Кули — Тьюки без переупорядочения, то ал- горитм PARAFT можно упростить и перефразировать в следующем виде: для I = 0, 1,..., log2 (и) - 1 do. (5.105а) (а) Разблокировать четные группы nl^ + i процессоров и умножить на предварительно записанный массив векторов фазы. (б) Указать маршрут для всех узлов н/2/ + 1 данных через линейно-связан- ную сеть по модулю 2и/2/+1 и занести их во временную рабочую область. Если в сети по модулю 2и/У + 1 не существует циклических соединений, то этот шаг должен выполняться за два маскированных шага — маршрутиза- ция нечетных и четных групп из n/2l + 1 элементов в противоположных на- правлениях. (в) Разблокировать нечетные группы и/2/ + 1 процессоров и изменить знак рабочей области. (г) Сложить рабочую область с массивом данных Конец 305
В приведенной формулировке число единичных операций маршрутизации составляет и/2; и/4, и/8,.... 4, 2, 1 (5.1056) по мере того, как I принимает значения от 0 до log2 (л) — 1. ЕслиР процес- соров соединены в линейный массив (т. е. к = 1), то общее число операций маршрутизации составляет: А(1) = и/2 + 2(л/4 + н/8 + ,. . . ,+2 + 1) = (5.106а) = л/2 + 2(л/2 — 1) = Зп/2 — 2. (5.1066) Первый член в управлении (5.106а) учитывает, что при I = 0 периодич- ность массива позволяет получать требуемую маршрутизацию путем одиноч- ной маршрутизации влево или вправо на п/2 позиций. Множитель 2 во вто- ром члене учитывает, что на шаге (6) четные и нечетные группы маршрути- зируются в разных операциях. Если массив многомерный, и, как мы предполагаем, данные в точности заполняют процессорную матрицу, то первое относительное перемещение данных наи/2 векторных элементов может быть сделано маршрутизацией про- цессоров Q/2 по /с-й размерности, второе перемещение на п/4 — маршрути- зацией 2/4 по к-й размерности. Все последующие маршрутизации по к-й размерности продолжаются на половину предыдущего значения до тех пор, пока маршрутизация не примет значение единицы. Пройдя маршрут с поло- винным шагом, мы должны обратиться к перемещению по (к — 1)-й размер- ности на величину 2/2, которая также продолжается, пока маршрутизация не примет значение единицы. Пройдя этот маршрут, мы должны приступить к перемещению по (к — 2)-й размерности и т. д., до тех пор пока не будут ис- пользованы все размерности. Это иллюстрируется на рис. 5.20 для матрицы (16 х 16) процессоров. Очевидно, этот процесс требует маршрутизаций, чис- ло которых равно уравнению (5.106а), если п заменить на Q для каждой из к-й размерностей. Соответственно общее число маршрутизаций комплекс- ных чисел для к-й связности составляет R(k) = k(3Q/2 - 2). (5.107а) Минимальное число таких комплексных маршрутизаций имеет место, ес- ли 2 = 2 (случай двоичного гиперкуба), где R(k) = < = log2P=log2«. (5.1076) Число операций, приходящееся на комплексную маршрутизацию, которое требуется на других компьютерах, по уравнению (5.107а) составляет: (a) ’’ILLIAC IV”1 Р = п = 64. 2 = 8, к = 2, (П = 20 = 3,31og2«. (5.108а) (б) ICL DAP Р = п = 4096, 2 = 64, к = 2, R(1} = 188 = 15,71og2« (5.1086) 1 Кавычки обозначают гипотетическую машину типа ILLIAC IV с двумерной перио- дической краевой связностью. 306
Рис. 5.20. Величина и направление мар- 5 шрутизаций, необходимых для вычисле- ния преобразования 2’ =256 значений на процессорной матрице 16X16. / =0,1,... . . . , 7 — переменная управления циклом в операторе (5.105а). Уровень частного преобразования, вычисленного после сдвига, / + 1 8 или, поскольку k = (\og2n)/q, для 4 частного случая п=Р 2 R(k) —2_ log2„ (5.108в) 0 ч. /-0 /=1 /=2 /=5 /-7 /=6 /=5 /=4 Число вещественных параллельных арифметических операций после выше- упомянутых параллельных комплексных маршрутизаций составляет 81og2« [см. (5.98)]. Поэтому, если мы предполагаем, что параллельная операция маршрутизации в у раз быстрее, чем параллельная арифметическая операция, то опять же для п=Р /R _ время на маршрутизацию _ 2(32/2 - 2) t А время на арифметические операции 2yq начальный коэффициент два учитывает, что каждая комплексная марш- рутизация в уравнении (5.108в) представляет собой перемещение двух веще- ственных чисел. Для рассматриваемых компьютеров имеем приблизительно: (a) ’’ILLIAC IV” у = 2, fR/fА = 42 %, (5.1096) (б) ICL DAP 7 = 20, t^JtA = 19 %, (5.109b) (в) Гиперкуб 7 = Ю, rR/fA = 2>5 % • (5.109г) Поэтому кажется, что задержки маршрутизации, хотя и значительные, не являются доминирующими при вычислении комплексного преобразования Фурье на практических проектах процессорных матриц и могут быть справед- ливо проигнорированы при первой оценке производительности алгоритмов быстрого преобразования. Однако, как мы увидим в подразд. 5.5.6, обратное справедливо для вычисления теоретико-числового преобразования на опреде- ленных типах процессорных матриц. В общем, маршрутизация будет доминировать над арифметикой, когда > 1, или вспомнив, что q = log22, когда 32/2 - 2 > 471og22, (5.110а) или для большого 2, когда 2/log22 > 2>677. (5.1106) 307
Рис. 5.21. Линейная размерность Q процессорной матрицы, выше которой время задержки на марш- рутизацию превышает время выполнения арифме- тических операций в БПФ Кривая 1 — вычисление преобразования Фурье в комплексной арифметике; 2 — преобразование Рейдера в целочисленной арифметике по модулю Тогда для наименьшей степения два имеем: ' 32, если 7 = 2, 64, если 7 = 4, ‘ 256, если 7 = 10, 512, если 7 = 20. (5.110b) Этот результат, приведенный на рис. 5.21, не зависит от размерности мат- рицы процессоров и показывает, что, вероятно, вследствие задержек марш- рутизации не целесообразно строить матрицы с линейной размерностью боль- ше нескольких сотен, в зависимости от значения 7. На самом деле, чем более комплексным является процессор, и отсюда значение 7 меньше, тем меньших массивов следует придерживаться, чтобы маршрутизация не стала доминиру- ющей по времени выполнения. Малые значения 7 будут также иметь место в разрядно-ориентированных компьютерах, таких как ICL DAP на целочислен- ной арифметике с короткими словами (скажем, восьмиразрядными слова- ми, когда 7^2), как это может происходить при обработке изображений (см. подразд. 5.5.6). Показанный результат очень важен, потому что появление СБИС-техноло- гии с 104 или более логическими элементами на кристалле, делает возмож- ным производство сверхбольших матриц. Такие большие матрицы привлека- тельны с точки зрения стоимости и могут, по-видимому, обеспечивать очень высокую производительность. Однако приведенный результат показывает, что при рассмотрении реальных алгоритмов следует осознавать ограничения, накладываемые по мере того, как линейные размерности становятся боль- шими. Несмотря на то, что мы затронули проблему маршрутизации специаль- но для алгоритма БПФ, очень схожие маршрутизации имеют место во многих параллельных алгоритмах, например в параллельном алгоритме для вычисле- ния рекурсии первого порядка (см. подразд, 5.2.2). Поэтому результат спра- ведлив в общем случае. Чтобы сконцентрировать внимание на сущности маршрутизации, мы пред- положим, что выполняется одиночное одномерное преобразование длиной, равной числу имеющихся процессоров. Для рассмотрения задержек маршру- тизации при множественных и многомерных преобразованиях, в которых нет обязательного соответствия размеру процессорной матрицы, читатель может обратиться, в частности, к работам [126, 127]. 308
5.5.6. Теоретико-числовые преобразования Теоретико-числовые преобразования, в частности, числовые преобразова- ния Ферма имеют важные приложения в обработке изображений и при реше- нии дифференциальных уравнений в частных производных, и с этой точки зрения были рассмотрены Дж. Иствудом и К. Джессхоупом [62]. Эти пре- образования использовались Дж. Поллардом [179], К. Рейдером [182], Р. Агарвалом и К. Берусом [3] преимущественно для цифровой обработки сигналов. Они играют роль, аналогичную преобразованию Фурье, когда ариф- метические операции выполняются по модулю F = 22f + 1, t — t-e число Фер- ма, и функциональные значения обозначаются целыми числами 0,1,..., Г — — 1 (последовательность чисел). В этом случае ТПЧ можно описать как х, = S а~к> х- (по модулю/7.), (5.111а) */=0 1 ‘ которое имеет инверсию х. =п~1 S oft х. (по модулю F ), (5.1116) 1 к=о К т где а - л-й корень из единицы (по модулю F). Поэтому о" = 1. Сравнивая уравнения (5.111) с определением конечного преобразования Фурье (5.73) и (5.74), видим, что а имеет те же самые свойства в цепи целых значений, что и ш в области комплексных чисел. Следовательно, все быстрые алгоритмы, которые были разработаны для преобразования Фурье (см. под- разд. 5.5.2 - 5.5.5), можно применять с равным успехом для вычисления ТПЧ при условии, что арифметические операции выполняются по модулю F . Отметим, однако, что оно обычно ассоциируется с масштабным коэффи- циентом и"1 в обратном преобразовании (5.1116). Это представляет собой обратную условность тому, что использовалось для фурье-преобразования, где коэффициент ассоциировался с прямым преобразованием (5.71а). Целочисленные функции а*/ и являются ортогональными, анало- гично функциям (Что можно легко доказать: п -1 , п -1 , X oftoTk,= £ (5.112а) /=о /=о Просуммировав геометрические ряды и использовав тот факт, что а” = = 1, получаем п-1 £ ak,a~k/ = —г—г,-----=0, если k*k'. (5.1126) 7=0 а -1 Возвращаясь к выражению (5.112а), непосредственно получаем п-1 п-1 п-1 L а’а (а°) = L 1 = л, если k=k'. (5.112в) 7=0 /=о 7=0 Это свойство аналогично отношению ортогональности (5.726). На рис. 5.22 изображены функции oft = . 309
вом преобразовании Рейдера для t = 2 Функциональные значения лежат в диапазоне 0, 1, . . . , F2 - J = 16 и представлены пя- тью битами. Длина преобразования составляет п = 6(п~‘ = 15), и к =0, 1.п - 1=7. Функции для к > 4 представляют собой зеркальное отражение функций для 8 — к отно- сительно вертикальной оси/ = 4 Наиболее полезные типы числовых преобразований Ферма возникают, ко- гда а представляет собой степень 2, и которые называются преобразованиями Рейдера [182]. В этом случае все операции умножения на а в уравнении (5.111) могут выполняться посредством сдвига, что позволяет писать особо быстрые компьютерные программы. Существует также связь между двоич- ным числом (бит), используемым в числовом представлении, и длиной п преобразования. Целые числа в диапазоне 0, 1, . . . , F — 1 = 2 , где b = 2f, требуют b + 1 бит для их представления, поскольку число 2й = — 1 по моду- лю F (единица с последующими b нулями) включено в этот диапазон. Все другие числа диапазона могут быть представлены b битами. Если а = 2, длина преобразования, в целом, составляет n = 2b = 2t+l, (5.113а) и его обратное значение, которое требуется в уравнении (5.1116), задается л’1 =Ff _2z’-(f-1). (5.1136) Если двоичные числа нумеруются от 0 до Ь, начиная с наименьшего знача- щего числа, то п~1 имеет единицы в нулевом разряде и в разрядах от Ъ — 1 до b — 1 — t включительно. Чтобы доказать уравнение (5.1116), подсчитаем ил"1 = 2f+1^Ff- 2b-(f+1>) = 2f+1Fr- 2Ь, и поскольку 2й =Ff - 1, пп"1 = 2?T1Ff - (Ff — 1) = (2r+1 - l)Ff + 1 = 1 по модулю^. (5.113в) 310
Некоторые интересные частные случаи: а = 2, t - 3, b = 8, число разрядов = 9, п = 16, п~1 = 28 + 1 — 24, (5.114а) а = 2, t = 4, Ъ = 16, число разрядов = 17, п = 32, п~1 = 216 + 1 — 211, (5.1146) а = 2, / = 5, Z> = 32, число разрядов = 33, п = 64, п~1 = 232 + 1 — 226, (5.114в) а = 2, t - 6, Ъ = 64, число разрядов = 65, п = 128, и”1 = 2е4 + 1 — 257 . (5.114г) Теоретико-числовое преобразование может выполняться над вещественны- ми переменными, если вначале они будут отмасштабированы до допустимого целочисленного диапазона, а затем дискретизированы до ближайшего цело- численного значения. В этом случае ошибка дискретизации составляет при- мерно 2~Ь, а для более высокой точности следует воспользоваться большим значением Ь. Далее, если длина преобразования слишком велика, ее можно поделить пополам, возведя в квадрат а, тогда а = 4, п = Ьип 1 = - 2 Например, а = 4, t = 6, b = 64, число разрядов = 65, п = 64, п~1 = 2м + 1 — 258, (5.115а) и, повторив процесс, а = 16, t = 6, Ь - 64,число разрядов = 65, п = 32, и-1 = 2м + 1 — 259. (5.1156) Таким образом, имеется возможность выбора точности Ь, длины преобра- зования п и корня из единицы а приемлемых в большинстве случаев. Полезность числового преобразования Ферма критически зависит от эф- фективности выполнения необходимых арифметических действий по моду- лю F. Многие компьютеры выполняют арифметические операции в допол- нительном коде, где в разрядах b представлена арифметика по модулю 2й = = Ft — 1. Для преобразования ее в арифметику по модулю F мы должны вычитать единицу из суммы двух чисел при обнаружении переноса из бита высшего порядка, за исключением случая, когда все разряды от 0 до Ъ — 1 представлены нулями. 2Ь Этот последний случай выражает достоверный результат и представляет или —1 по модулю F . Если компьютер имеет только Ъ разрядов для пред- ставления целого числа, то для выражения этого числа следует использовать несколько иной способ, в котором вспомогательная логическая переменная связана с каждым числом. Мы должны аналогично прибавлять единицу к от- рицательному числу, в дополнительном коде или к разнице двух чисел, если результат отрицателен. Умножение на произвольное число по модулю Ft вы- полняется путем вычитания b разрядов высокого порядка 2Ь-разрядного произведения из Ь разрядов более низкого порядка. Отметим, что Ft = 2b + 1 содержит только два бита, один — в позиции наименьшего значащего разряда в b разрядах высокого порядка. Поэтому указанная операция представляет собой то же, что и нормализация произведения до допустимого целочислен- ного диапазона путем вычитания Ft до тех пор, пока все разряды высокого порядка не будут представлены нулями. И снова, для вхождения 2й и для 311
умножения на 2Ь имеет место частный случай. Умножение на а. выполняется посредством сдвига с последующей нормализацией, как описывалось выше. Понятно, что арифметика по модулю F требует нескольких критериев и частных случаев, и мало вероятно, что теоретико-числовые преобразования будут иметь какие-либо преимущества в быстродействии перед преобразова- нием Фурье на компьютерах, в которых предусмотрена плавающая арифме- тика, встроенная в аппаратные средства. На разрядно-последовательных и разрядно-адресуемых компьютерах, таких как DAP и STARAN, в которых не предусмотрена плавающая арифметика, встроенная в аппаратные средства, эта ситуация радикально отлична, ибо в этих случаях специальные арифмети- ческие подпрограммы кодируются для арифметики по модулю микропро- граммно на разрядном уровне. В частности, от вероятных сдвигов, возника- ющих при умножении на а, можно избавиться посредством адресации соот- ветствующих разрядов памяти, и любое умножение на ofi будет длиться не более чем одиночное вычитание, которое необходимо для нормализации. Сравнение между арифметикой по модулю F и плавающей арифметикой на машине ICL DAP показано в табл. 5.1. Вполне очевидно, что на этой машине время выполнения арифметических операций по модулю примерно в 10 раз быстрее, чем арифметических операций с плавающей точкой. Таблица 5.1. Сравнение арифметических операций по модулю Fs = 232 + 1 и веще- ственных операций с плавающей точкой (32-разрядный IBM формат) на машине ICL DAP для 4096 результатов на 64 X 64 матрице процессоров Тип операции Время выполнения арифметических операций, мкс по модулю Fs [б2] с плавающей точкой [186]- Сложение 36 150 Вычитание 30 150 Умножение 24* 250 Маршрутизация 10 10 Умножение по степени 2. Если преобразование Рейдера подсчитывается тем же способом, который используется в методе PARAFT для преобразования Фурье (см. подразд. 5.5.4), то для каждого из log2H уровней алгоритма будет выполняться одна параллельная операция сложения и одна параллельная операция умножения (по степени два). Поэтому общее число арифметических операций по моду- лю F, каждая с уровнем параллелизма п, для ^-мерной матрицы п = 2* = = 2qk процессоров (см. подразд. 5.5.5) составляет А = 21og2M = 2kq. (5.116а) Требования к маршрутизации идентичны требованиям в алгоритме PARAFT, т. е. Л =*(32/2-2), (5.1166) и отношение времени маршрутизации к времени выполнения арифметичес- ких операций для преобразования Рейдера составляет 312
rR/rA = (3Q/2-2)/(27<7), (5.116b) где у — отношение времени выполнения операции арифметики по модулю F к времени выполнения одиночной операции маршрутизации. Обращаясь к табл. 5.1, видим, что при 7 = 3 для 33-разрядной обработки с t = 5 на маши- не ICL DAP (к = 2, Q = 64, q = 6) имеем: А = 188, А = 24, Д/А = 7,8, (5.117а) rR/rA = 261 %. (5.1176) Следовательно, время операции маршрутизации преобладает над временем арифметических операций при вычислении преобразований Рейдера на ICL DAP и аналогичных машинах. Время, затрачиваемое на маршрутизацию, будет равно или превышать вре- мя, затрачиваемое на арифметику, когда 32/2-2>27<7, (5.118а) или для большого Q, когда e/log2e> 1,337. (5.1186) Кривая равенства и областей (Q — 7) плоскости, в которых доминирую- щими являются маршрутизация или арифметика, показаны на рис. 5.21. Мож- но видеть, что для эффективного расчета преобразования Рейдера линейные размеры процессорной матрицы следует поддерживать как можно меньши- ми. Поскольку 7, по всей вероятности, будет менее четырех для арифметики по модулю, линейные размеры более 32 приведут к алгоритмам, у которых доминирующим будет время, затрачиваемое на реорганизацию данных в па- мяти, а не на выполнение полезных расчетов над данными. Указанный выше анализ базируется на преобразовании, равном размеру процессорной матрицы. Однако при решении трехмерных дифференциальных уравнений в частных производных преобразование, по всей видимости, будет гораздо больше, чем размер матрицы. Для этого случая издержки, возника- ющие из-за маршрутизации, существенно снижаются. Например, 261 %-ная издержка, которая приведена в уравнении (5.1176) для 64 х 64 преобразова- ния, становится всего 25 %-ной издержкой для 64 х 64 х 64 преобразования на машине ICL DAP [126]. Несмотря на то что маршрутизация может преобладать над арифметикой, общая производительность преобразования Рейдера значительно превышает производительность преобразования Фурье на таких машинах, как ICL DAP. Если мы сравним объем арифметических операций, необходимых для пре- образования п целых значений в преобразовании Рейдера, с требуемым объе- мом для преобразования п вещественных значений (т. е. н/2 комплексных значений) в преобразовании Фурье, то обнаружим 21og2« параллельных опе- раций по сравнению с 41og2H операций. Более того, в табл. 5.1 видим, что каждая арифметическая операция по модулю в преобразовании Рейдера ре- ализуется примерно в 10 раз быстрее, чем соответствующая операция с пла- вающей точкой в преобразовании Фурье. На этой основе для преобразования Рейдера можно ожидать максимального превышения в скорости примерно в 20 раз по сравнению с преобразованием Фурье. Реальные значения будут меньше этого максимального из-за издержек, обусловленных маршрутиза- 313
цией, которые одинаковы для обоих преобразований. Например, при трех- мерном преобразовании 32 х 32 х 16 значений на машине ICL DAP (32 х х 32) с использованием одного и того же быстрого алгоритма по основанию 2 преобразование Рейдера занимало 50 мс, а преобразование Фурье — 700 мс [62]. Соотношение скорости здесь равно 14 в пользу преобразования Рейде- ра, и это не противоречит упомянутым оценкам. 5.6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЧАСТНЫХ ПРОИЗВОДНЫХ При рассмотрении решения дифференциальных уравнений в частных про- изводных (ДУЧП) на параллельных компьютерах мы можем опираться на результаты, полученные ранее в этой главе для решения тридиагональных си- стем (см. разд. 5.4) и вычисления преобразований (см. разд. 5.5). Почти все обоснованные числовые методы для решения ДУЧП, успешно применяемые на последовательных компьютерах с 50-х годов, включают в себя повторное решение независимых трехдиагональных систем или повторное преобразова- ние независимых множеств данных. Такие методы хорошо подходят для эф- фективной реализации на параллельных компьютерах, так как независимые системы или независимые преобразования могут вычисляться в параллель. Поэтому проблема заключается не во внесении параллелизма в известный последовательный метод, как это было в предыдущих разделах данной гла- вы, а в соответствии естественного параллелизма компьютера существующе- му параллелизму алгоритма. Например, алгоритм решения трехмерной зада- чи п х п х п сетки может быть выражен в отношении операций с уровнем па- раллелизма либо п, п2,либо п3. Выбор наиболее подходящего метода для определенного компьютера пре- дусматривает распознавание того, какой из этих трех уровней параллелизма наиболее близко подходит естественному параллелизму ЭВМ. Сначала (см. подразд. 5.6.1) мы описываем общую итерацию (или релак- сационные методы) в двух размерностях, поскольку ими можно воспользо- ваться для решения наиболее общего линейного ДУЧП с произвольными ко- эффициентами. Мы доказываем важное положение, что метод одновременно- го регулирования всех точек (метод Якоби), который имеет максимальный уровень параллелизма п2, нельзя применять из-за его чрезвычайно медлен- ной сходимости. Об этом необходимо помнить, если нам потребуются мето- ды с максимальным параллелизмом, однако не следует игнорировать факт длительного вычисления результатов при использовании числового анализа сходимости, как это указывается, например, в работах [75, 241]. Здесь ре- комендуется метод последовательной повторной релаксации с нечетным /чет- ным упорядочением и ускорением Чебышева вследствие его превосходных свойств сходимости, если уровень параллелизма будет уменьшен вдвое. Этот метод можно применять по точкам (SOR) или по строкам (SLOR), причем интересно отметить, что мы находим первый метод наиболее приемлемым на таких машинах, как ICL DAP, а последний - на машинах типа CRAY-1. Наиболее известный алгоритм SOR с упорядочением по строке является на первый взгляд последовательным процессом. Однако Д. Хант показал, как он может быть использован в параллель, оперируя перемежающимися диагональными строками по типу конвейера [ИЗ]. Уровень параллелизма 314
достигает п2/2, если число итераций гораздо больше п. Г. Грош исследовал вопросы применения многорешетчатых итерационных методов на параллель- ных компьютерах [90]. Другим хорошим итерационным методом, который мы рассматриваем, является неявный метод перемежающихся направле- ний (ADI). Решение простых ДУЧП с постоянными коэффициентами (например, уравнения Пуассона V2<р = р), в простых областях (таких, как квадрат или прямоугольник), с простыми граничными условиями (задаются значения, угол наклона или периодичность) имеют важные приложения во многих об- ластях физики и техники. В частности, для решения этого класса проблемы имеются в наличии быстрые прямые (т. е. неитерационные) методы, основан- ные на БПФ, которые описываются в подразд. 5.6.2. Быстродействие этих методов делает возможным временно-зависимое моделирование, например движения звезд в галактиках, электронов в полупроводниковых приборах и атомов в твердых телах и жидкостях [181]. Повторяем, алгоритмам, кото- рые вначале были разработаны для последовательных компьютеров, присущ параллелизм, и они могут быть реализованы без изменения на параллельных вычислительных машинах. В первых двух разделах итерационные и прямые методы рассматриваются относительно двумерных задач вследствие простоты представления и вслед- ствие того, что такие задачи хорошо вписываются в возможности современ- ных (80-х годов) и потому часто возникающих компьютеров. Однако допол- нительное быстродействие, связанное с появлением параллельного компью- тера, впервые позволяет решать трехмерные задачи с приемлемой разреша- ющей способностью (скажем, 643 сетки). Поэтому в подразд. 5.6.3 мы рас- сматриваем некоторые из альтернативных стратегий, которые возможны при решении таких трехмерных задач. 5.6.1. Итерационные методы: SOR, SLOR, ADI Наиболее общий вид ДУЧП второго порядка в двух размерностях можно представить так: а (х’ в(-х> у) 1?+С(х’у) 17~+в(х> у)^+ + Е(х,у)<р = р(х,у), (5.119а) где коэффициенты А, В, С, D, Е - произвольные функции позиции. Это урав- нение включает в себя основные уравнения математической физики и техни- ки (уравнения Гельмгольца, Пуассона, Лапласа, Шредингера и диффузии) в общепринятых координатных системах [декартовой (х, у), полярной (г, 6»), цилиндрической (г, z), аксиальносимметричной сферической (г, 6) и сфери- ческой поверхности (0, <р)]. Если уравнение (5.119а) продифференцировать по п х п сетке точек с помощью стандартных процедур [75], получим множе- ство алгебраических уравнений, каждое из которых имеет отношение к зна- чениям переменных по пяти соответствующим точкам сетки: а + b + с ip + г/ , + в u? =f (5.1196) p,qYp,q-l p,q^p,q^l P.q^P-uq р/Гр+ЪЧ Р.Ч р,Ч р.Ч v где целочисленные индексы р, q = 1, .. ., п обозначают точки сетки в направ- 315
пениях х и у соответственно. Коэффициенты а, Ь, с, due изменяются от точ- у ки к точке сетки и относятся к функциям А, В, С, D, Е, и для разделения то- чек сетки в запутанном случае можно использовать частную разностную ап- проксимацию. Переменная в правой части f представляет собой линейную комбинацию значений р (х, у) в точках сейси вблизи (р, q). В простейшем случае она является значением р (х, у) в точке сетки (р, q). Итерационные процедуры описываются сначала предположительными зна- чениями <рр? во всех точках сетки и дифференциальным уравнением (5.1196) как базис для подсчета уточненных значений. Процесс повторяется, и, если успешно, то значения <р стремятся к результатам решения уравнения (5.1196) во всех точках сетки. В самой простой процедуре значения <р во всех точках сетки одновременно настраиваются на значения, которые они бы имели по уравнению (5.1196), если допустить, что все соседние значения <р правильные, т. е. ф в каждой точке сетки заменяется новым значением: f — а ф — Ъ ф — с ф —йф ф^(1=-£>1____MW-J________р,<гр,<1-и P,q*P-w p,q*p+i.q (5.120) Поскольку замена должна производиться одновременно, то все значения <р в правой части являются ’’старыми” значениями от последней итерации, а отмеченные звездочкой значения в левой части — ’’новыми” и, наверное, уточненными значениями. Этот метод одновременного перемещения впервые был рассмотрен К. Яко- би и часто называется методом Якоби [123]. Он идеально подходит для ре- ализации на параллельных компьютерах. Одновременное выравнивание оз- начает, что для всех точек сетки уравнение (5.120) может выполняться па- раллельно с максимально возможным уровнем параллелизма п2. Типичное значение п = 32 4- 256, так что уровень параллелизма изменяется примерно от 1000 до 64 000. Это приводит к достаточно длинным векторам с точки зре- ния эффективной обработки на конвейерных ЭВМ. С другой стороны, для процессорных матриц, таких как ICL DAP, сетку можно выбирать из сообра- ( жений точного соответствия матрице ПЭ или простого кратного от числа ПЭ | в матрице, что дает возможность активизировать все процессы в компьютере j [например, решение задачи сетки 64 х 64 на машине ICL DAP, (64 х 64 ПЭ) ]. Более того, все обозначенные переменные в уравнении выравнивания (5.120) являются ближайшими соседями в матрице ПЭ, и поэтому обращения к ним можно осуществлять без операции маршрутизации. Очевидно, когда проекти- ровалась машина ICL DAP, имелся в виду этот тип приложения. Тот факт, что одиночная итерация метода одновременной замены может быть эффективно реализована на параллельных компьютерах, совсем не оз- начает, что он является хорошим методом для использования, так как необ- ходимо учитывать число итераций, требуемых для получения удовлетвори- тельной сходимости. Скорость сходимости нельзя просто найти для общего уравнения (5.1196), но хорошо известны аналитические результаты для про- стого случая уравнения Пуассона в квадрате с нулевыми граничными значе- ниями (условие Дирихле). Это соответствует принятию apq = bpq = = = = 1 и ер ц = —4 для всех точек сетки и часто называется модельной за- дачей. Мы подчеркиваем, что фактически итерационные методы никогда не применяются для решения модельной задачи, поскольку методы прямого 316 1
преобразования (см. подразд. 5.6.2), по крайней мере, в 10 раз быстрее. Мо- дельная задача приводится здесь только для того, чтобы показать ожидаемую скорость сходимости при использовании итерационных методов для решения общего дифференциального уравнения (5.1196), в котором нельзя восполь- зоваться методами быстрого преобразования. Можно показать [241], что асимптотически после большого числа итера- ций коэффициент, по которому норма1 вектора ошибок уменьшается при каждой итерации метода Якоби, задается в виде: Xj =cos(7r/«) ~ 1 - |я2/и2. (5.121а) Этим коэффициентом сходимости Xj можно воспользоваться для подсчета числа итераций If, необходимых для уменьшения погрешности на коэффици- ент 10-₽: t* =p/log2Xj « 2/(тт2 log10e)^«2 ~рп2/2. (5.1216) Таким образом, самое скромное уменьшение ошибки в 10~3 на типичной 128 х 128 сетке обычно требует 24 000 итераций. Такая медленная сходи- мость делает метод Якоби бесполезным для практических вычислений, даже если он чрезвычайно пригоден для реализации на параллельных компьютерах. Наиболее широко используемым итерационным методом на последова- тельных компьютерах является метод последовательной повторной релакса- ции'или SOR. В этом методе взвешенное среднее от ’’старых” и отмеченных звездочкой значений используется как ’’новое” значение СГе = + (1 - ш)Срое ’ (5Л22а) где аз — постоянный коэффициент релаксации, обычно лежащий в диапазоне 1 < со < 2, который выбирается из соображения увеличения скорости сходи- мости. Можно показать, что для модельной задачи наилучшая скорость схо- димости достигается при 2 1+ (1 _р2)1/г ’ (5.1226) когда X = азь — 1 и где р — коэффициент сходимости соответствующей итера- ции Якоби. Отсюда для модельной задачи р = cos(tt/h) обычно точки сетки обрабатываются последовательно точка за точкой и строка за строкой, как при чтении слов книги или печатании на пишущей машинке страницы текста. Улучшенные сходимости связаны с тем, что новые значения, как только их вычислили, заменяют старые; следовательно, значения в правой части уравне- ния (5.120), используемые для вычисления <р*, представляют собой смесь старых и новых значений, и уравнение (5.120) нельзя решать для всех точек в параллель, как это можно было делать в методе Якоби. Поэтому может по- казаться, что метод SOR хотя и обладает лучшими свойствами сходимости, представляет, по существу, последовательный метод и не пригоден для реали- зации на параллельных компьютерах. Однако Д. Хант показал, как можно ис- 1 Сумма по всем точкам сетки квадрата разности между аппроксимированным и точ- ным решениями уравнений. 317
Рис. 5.23. Тип родственных данных в различных итерационных методах: а — точечно-последовательная перерелаксэция (SOR), б — последовательно-построчная перерелаксэция (SLOR), в и г - неявный метод перемежающихся направлений (ADI). Прямой метод многократного преобразования Фурье (MFT) объединяет данные тем э^е способом, что и ADI. Общие данные, показанные линией со стрелкой, родственно связа- ны либо в преобразовании Фурье, либо в трехдиагональной системе уравнений пользовать принцип макроскопической конвейерной обработки для реализа- ции SOR с максимальным уровнем параллелизмам2/2 [ИЗ]. К счастью, улучшенная сходимость SOR-метода может быть получена и для других методов прореживания точек сети. Одной из лучших процедур яв- ляется нечетное/четное упорядочение с чебышевским ускорением. По этому методу точки сетки делятся на две группы: четной или нечетной является сумма р + q. Это показано на рис. 5.23, а, где четные точки обозначены кру- жочками, а нечетные — крестиками. Этот метод возобновляет половину ите- раций, во время каждой из которых выравнивается только половина точек (выборочно нечетное и четное множество точек) в соответствии с уравнения- ми (5.120) и (5.122). Кроме того, значение со изменяется в каждой полуите- рации в соответствии с ы° = 1, . w(V2) =l/(l-fp2), (5.123а) W(f + V2) =1/(1 -_Lp2W ), Г = 1 , 1, . . . . , 4 где надстрочный индекс t обозначает номер итерации. Можно показать, что 318
при большом t со стремится к пределу а/°°) = постоянному коэффици- енту релаксации, который проходит через всю трехдиагональную SOR-npo- цедуру уравнения (5.1226). Коэффициент асимптотической сходимости поэтому является одинаковым для обоих методов формулирования SOR и задается, как XSOR=w6-l ^1-2тг/и. (5.1236) Следовательно, число итераций для уменьшения погрешности до уровня 10-р равно: ZSOR ~ npl(27r:°gioe) ир/3. (5.123в) На основании уравнения (5.123в) делаем вывод, что уменьшение погрешно- сти до уровня 10-3 на 128 х 128 сетке потребовало бы 128 итераций по срав- нению с 24 000 для метода Якоби. Важность использования хорошо сходя- щихся итерационных методов вполне очевидна. Можно также показать [241], что максимальная норма вектора погрешностей связана с убыванием в чебы- шевском ускоренном SOR-методе переменной со, о которой только что гово- рилось, тогда как она может и часто увеличивается на ранних стадиях трехди- агонального SOR с постоянной со и упорядочением по строке [102, рис. 7 и 9]. Поскольку чебышевский SOR-метод не требует дополнительных арифме- тических операций и содержит более предпочтительные исходные свойства снижения погрешностей, кажется, нет серьезных причин для того, чтобы не всегда им пользоваться. Чебышевский SOR-метод имеет дополнительные преимущества при рас- смотрении его реализации на параллельных компьютерах. Мы отмечали в уравнении (5.120), что обозначенное звездочкой значение в нечетной точке сетки зависит только от старых значений в соответствующих четных точках, которые были подсчитаны во время последней полуитерации. Таким обра- зом, все нечетные точки могут быть выравнены в параллель при уровне па- раллелизма п2/2 за время одной полуитерации и аналогично все четные точ- ки — в параллель в течение следующей полуитерации. Следовательно, время для одной полной итерации на компьютере с длиной полупроизводительно- сти п 1/2 пропорционально ti =24(и1/2 + и2/2), (5.124а) поскольку уравнения (5.120) и (5.122а) требуют 12 арифметических опера- ций на одну точку сетки (заметим: 1 - ш предварительно вычислено и хра- нится как одиночная константа). Как вариант, SOR-метод может быть реали- зован с уровнем параллелизма и/2, выражая вектор в виде п/2 нечетных (или четных) значений в строке сетки и проходя последовательно по п строкам. Время полной итерации тогда пропорционально t2 =24л(и1/2 +и/2). (5.1246) Другая стратегия для чебышевской повторной релаксации иллюстрирует- ся на рис. 5.23, б. Точки делятся на нечетные и четные множества по стро- кам, как показано штриховыми и сплошными линиями. Уравнение выравни- вания (5.120) записано для всех точек строки в предположении, что все точки в строке выше и в строке ниже правильные. Тогда обозначенные звездочкой значения вычисляются построчно для р = ], 2,. .., п из уравнения 319
с / + е qf* +d =f -а <р ~ь у . Q.jzoj p.q'p-l.q p,q^p,q p.q'p+i.q p,q p,q p>q~l p,q p,q + l Уравнение (5.125) является трехдиагональной системой для всех обозначен- ных звездочками значений в строке с правой частью, зависящей от известных значений строки, расположенной выше и ниже. Чебышевская ускоренная последовательно-построчная перелаксация (SLOR) действует строкообраз- ным способом с использованием уравнений (5.122) и (5.123а), только здесь р — коэффициент сходимости метода Якоби, выполняемый строкообразным способом, для модельной задачи составляет: р = соз(тг/п)/[2 - cos(?r/n)] -1 -тг2/п2. (5.126а) Применение уравнения (5.1226) с исправленным значением р приводит к XsiOR = ШЬ ~ 1 “ 1 " О/")’ (5.1266) (5.126в) □LUK oUK Таким образом, асимптотически число итераций, необходимых для задан- ной редукции погрешности в SLOR-методе, составляет 2"1/2 = 0,7 числа итера- ций, требуемых в SOR-методе. Следовательно, по SLOR-методу требуется решение п/2 трехдиагональных систем длиною п в каждой полуитерации. Если системы будут решаться в па- раллель по наилучшему последовательному алгоритму (MULTGE-процедура из подразд. 5.4.4 с т = nj2), уровень параллелизма будет составлять п/2, и время выполнения на машине полной итерации t3 =24h(hi/2 +и/2). (5.127а) При получении оценки мы брали четыре арифметические операции на каж- дую точку для формирования правой части уравнения (5.125) в дополнение к восьми операциям на каждую точку, предназначенным для решения общей трехдиагональной системы. Коэффициент 2 вводится потому, что полная ите- рация состоит из двух полуитераций. Альтернативно эти системы можно ре- шать с параллелизмом на уровне п2 /2, вычисляя системы в параллель по па- раллельному PARACR -алгоритму (см. подразд. 5.4.4). Тогда машинное время на каждую итерацию =2 (п1/2 +п2/2) (4+ 121og2п), (5.1276) где слагаемое 4 в последнем множителе учитывает вычисление правых ча- стей, а логарифмический член — решение трехдиагональной системы по PARACR-алгоритму [см. (5.666)]. Мы видели, что как SOR-метод, так и SLOR-метод может быть реализован с параллелизмом на уровне либо п/2, либо п2/2. Которая из этих реализаций будет наилучшей, зависит, главным образом, от того, какое из двух значений (п/2 или п2/2) ближе к естественному параллелизму аппаратуры компьюте- ра. Мы будем рассматривать два экстремальных случая - ICL DAP с есте- ственным параллелизмом 64 х 64 и CRAY-1 с естественным параллелизмом 64. Вероятно, практические конечно-разностные сетки с приемлемой разре- шающей способностью будут содержать 32 - 256 точек сетки в каждой раз- мерности. Следовательно, совершенно естественно использовать соответствие уровня параллелизма машины CRAY-1 со стороны сетки и алгоритмов с уровнем параллелизма п или п/2. С другой стороны, еще более естественно 320 воспользоваться соответствием уровня параллелизма компьютера ICL DAP с двумя размерностями задачи и алгоритмами с уровнем параллелизма п2 или и2/2. Этот выбор становится еще более убедительным, если учесть тот факт, что процессоры в машине ICL DAP соединены проводами в виде дву- мерной матрицы. Выбрав уровень параллелизма, который наилучшим образом подходит компьютеру, можно задаться вопросом, какой из двух алгоритмов (чебы- шевский SORhhh SLOR) будет наилучшим для использования. На компьюте- ре CRAY-1 при уровне параллелизма п/2 SOR-алгоритм будет наилучшим, если Г2<Г3/-/1, (5.128а) где коэффициент учитывает наилучшую сходимость SLOR-метода. По- скольку Г2 = t3 [см. (5.1246) и (5.127а)], условие (5.128а) не может нико- гда быть выполнено, и мы делаем вывод, что SLOR-метод всегда будет наи- лучшим на машине CRAY-1. Выберем другой путь, когда время на каждую итерацию при вычислении с уровнем параллелизма п/2 одинаковое, следовательно, выигрывает SLOR- метод вследствие более быстрой сходимости. Для машины ICL DAP при уровне параллелизма п2 /2 обнаруживаем, что SOR-алгоритм будет наилучшим, если ti<t4ly/~2 (5.1286) или 24 < >/2 (4+ 121og2n). (5.128в) Это условие удовлетворяется при п > 2, т. е. для всех приемлемых сеток. По- этому мы считаем SOR-метод наилучшим для реализации на машине ICL DAP. Это объясняется тем, что параллельное решение трехдиагональных уравне- ний посредством циклической редукции, которая необходима, если мы при- меним SLOR-метод, вводит дополнительную арифметику, которая не требу- ется в более простой SOR-схеме. Лучшая сходимость у SLOR-метода не в со- стоянии ее компенсировать. Последним итерационным методом, который будет рассмотрен, является неявный метод перемежающихся направлений, или ADI. Он иллюстрируется на рис. 5.23, виг. При использовании этого метода для решения дифференци- альных уравнений (Ц + Lp<P = P> (5.129а) где L* и Ly - матрицы, представляющие конечно-разностные операторы в направлениях х и у, решение получается итерационным способом путем при- ближенной оценки tp° и неоднократного решения уравнений С1 +'-„Ц)*’(" + 1/2) = 0 ~rnLy^(n) +rnq’ (5.1296) С1 +rnLy^(n + 1) = (1 -^„Ч)/-1/2) +rnq, (5.129b) где n = 0, 1, . . . , — номер итерации, а параметр г , который изменяется за каждое двойное прореживание, корректируется для улучшения сходимости аппроксимаций к решению <р. Если будем иметь дело с общими линей- ными ДУЧП второго порядка (см. (5.119а)), то Lx и Lj, будут представлять собой трехдиагональные матрицы. Уравнение (5.1296) включает в себя вы- 1 1 Зак, 1799 321
числение правой части за счет семи операций на каждую точку сетки с после- дующим решением п независимых трехдиагональных систем (одна для каж- дой горизонтальной линии сетки), каждая из которых длиною п (см. рис. 5.23, в). Вполне понятно, что эти системы могут решаться в параллель с уров- нем параллелизма либо п, либо п2, как в случае SLOR-метода. Итерация за- вершается выполнением аналогичного процесса, при котором решение трех- диагональных систем осуществляется по каждой вертикальной линии сетки (см. рис. 5.23,г). Если воспользоваться уровнем параллелизма п (например, на CRAY-1), применив MULTGE-метод, то машинное время для полной итерации ts = 30и(и1/2 + и). (5.130а) С другой стороны, при уровне параллелизма п2 (например, у ICL DAP) и использовании PARACRpar-метода машинное время ?б =2(и1/2+и2)(7+121og2H). (5.1306) Тот факт, что сначала производится обращение к данным по горизонталь- ным строкам, а затем по вертикальным, может усложнить реализацию ADI- метода на некоторых компьютерах. Если сетка записана так, что смежные элементы в вертикальных линиях являются смежными в памяти компьютера (фортрановское столбцеобразное хранение), то решение уравнения (5.1296) не будет представлять никаких проблем, потому что инкремент между эле- ментами вектора равен единице (запомните, прогоняем вектор через все ре- шаемые системы). Однако при решении уравнения (5.129в) инкремент меж- ду элементами вектора будет равен числу переменных в столбце. Если п — степень двух, то конфликты на уровне банков памяти могут представлять определенную проблему даже в таких компьютерах, как CRAY-1, который допускает инкременты, отличные от единицы. Эту проблему можно решить путем записи сетки, как если бы она имела длину столбца на единицу боль- ше, чем его фактическая длина. С другой стороны, на таких компьютерах, как CDC CYBER 205, который допускает векторы только с инкрементом единицы, второй шаг ADI-метода может быть выполнен только после поворо- та всей сетки памяти. Цена такой обработки может сделать ADI-метод не при- влекательным для таких машин по сравнению с SLOR-методом, где обраще- ние к данным производится только в горизонтальном направлении. Опыт ис- пользования ADL и SLOR-методов разнообразен, и поэтому не существует априорного способа определения, какой из них будет наиболее эффектив- ным для определенной задачи. Возможно, необходимо применить оба метода. 5.6.2. Прямые методы: MFT, FACR (/) Прямыми методами являются те, с помощью которых получают решения через конечное число шагов или арифметических операций. Поскольку не производится никаких итераций, их эффективность не зависит от первона- чально ожидаемого решения или от способности правильного суждения, ко- гда прекратить итерацию. С другой стороны, прямые методы для решения об- щего линейного разностного уравнения (5.1196) могут быть применены только к относительно грубым сеткам, содержащим примерно до тысячи то- чек, что не обеспечивает эффективного выполнения большого объема парал- 322
дельных вычислений. Поэтому будем рассматривать специальные, имеющие- ся в наличии, методы преобразования для решения уравнения Пуассона в квадрате или прямоугольнике с простыми граничными условиями: *p,q-i Р'Я + i P-I.q ^p + i,q p,q p.q p, q =0, 1,. .. ,n - 1, (5.131) в котором коэффициенты постоянны и заданы: apq - b q = cpq = d =1 и е = —4. Эти методы часто называемые быстрым эллиптическим преобра- зованием или RES-алгоритмами, на порядок быстрее, чем итерационные ме- тоды, описанные в подразд. 5.6.1, и могут применяться к сеткам, содержа- щим 10 000 или более точек. Алгоритмы RES представляет по своей сущно- сти методы с высокой степенью параллелизма и, следовательно, хорошо под- ходят для архитектур параллельных компьютеров. Быстрое эллиптическое преобразование было рассмотрено П. Шварцтраубером [221] и Р. Хокни [105], сравнение производительности различных алгоритмов для последова- тельных компьютеров было выполнено Р. Хокни [102, 104] и К. Темперто- ном [225], а для параллельных компьютеров — Г. Грошем [90] и К. Темпер- тоном [226, 227]. Быстрые эллиптические преобразования описываются как методы с чис- лом операций порядка nlog2« или, лучше того [например, FACR(Z) -метод, порядка «log2 (log2«) ], как методы, которые сразу же вносят осложнения в алгоритмы быстрого преобразования (см. разд. 5.5). Самый простейший ме- тод получается посредством выполнения двойного преобразования Фурье из уравнения (5.131): [2cos (2пк/п) + 2cos(2ri/п) - 4] <рк’1 = Jk’1, (5.132a) где _ 1 n -1 £ ^p,q exp [~2m(kp +lq)/n], (5.1326) n p,q = O n — 1 Vp,q= £ Pp'q exp [+2.m(kp +lq)ln], k,l = 0 (5.132b) и аналогично для7k,! и fnn- Уравнение (5.132a) обеспечивает подсчет ампли- туд фурье-гармоник для решения , разделив гармоники правой части, на известные числовые коэффициенты в квадратных скобках. Поэтому следующий метод множественного преобразования Фурье (MFT) напрашива- ется сам собой: (а) Фурье-анализ f с помощью БПФ, f (б) Параллельное деление уравнения (5.132а) на [...], (5.133) — к I (в) Фурье-синтез ’ с помощью БПФ, -к,1 * ^P.q' Как двойной анализ Фурье, так и синтез, из соображения удобства может выполняться в два этапа - сначала преобразование всех данных в направле- 11 323
нии х, как на рис. 5.23, в, а затем преобразование результирующих данных по строкам в направлении у, как на рис. 5.23, г. Это можно увидеть, переформи- ровав эквивалентно уравнение (5.1326) 1п—1/1п—1 \ <рк,1 = — £ 1~ £ V’p.q ехр(-2ni/cp/n)j ехр(-2-nilq/n), (5.134) «д = О''«р = О / где внутреннее суммирование представляет собой преобразование по х, а внешнее суммирование — преобразование по у. При объяснении мы предпо- лагали двойные периодические граничные условия. Однако условия Дирихле (заданное значение) могут достигаться, если будет применено конечное пре- образование синуса, условия Неймана (заданный градиент), если будет ис- пользоваться конечное преобразование косинуса. Эти уточнения не влияют на проблемы, связанные с параллельной реализацией. Все построчные преобразования в уравнении (5.134) являются независи- мыми и могут быть выполнены параллельно с уровнем параллелизма п или и2. В первом варианте мы выполняем параллельно п вещественных преобра- зований, используя наилучший последовательный алгоритм, т. е. MULTFT-ме- тод уравнения (5.100а) с т = п. Поэтому общее время алгоритма ?multft = 4 х | х 5n(n1/2 + n)log2 п = (5.135а) = 10n(n1/2 + n)log2n. (5.1356) Коэффициент четыре в уравнении (5.135а) возникает из необходимости преобразования всех точек четыре раза (анализ и синтез в направлениях х и у), а коэффициент 1/2 — вследствие того, что мы делаем вещественные, а не комплексные преобразования. В качестве варианта, если мы выполняем в па- раллель п преобразований по параллельному РАРАРТраг-алгоритму, то уро- вень параллелизма равен п2 и fpARAFTpar = 4 х | х 8(п1/2 + n2)log2n = (5.136а) = 16(n1/2+n2)log2n. (5.1366) Выбор уровня параллелизма (п или и2) будет одинаково целесообразным, как и ранее при выборе итерационных методов. Мы обычно предполагаем ис- пользование параллелизма с уровнем п на таких компьютерах, как CRAY-1, и с уровнем п2 на таких компьютерах, как ICLDAP. Определив, что оба уров- ня параллелизма одинаково приемлемы для аппаратуры компьютеров, как, например, для CDC CYBER 205, мы можем задать вопрос, какой алгоритм является наилучшим. Алгоритмы PARAFTpar будут иметь более высокую производительность, если fMULTFT > fPARAFTpar’ (5.137а) откуда Л1/2/п>6п/(16 + 10п). (5.1376) Области («1/2/и, п) плоскости, которые более предпочтительны для ис- пользования того или иного алгоритма в соответствии с уравнением (5.1376), показаны на рис. 5.24. Мы видим, что для векторов любой разумной длины (скажем, п > 10), если (гцр/п) > 5, предпочтителен PARAFTpar-метод. Ины- 324
Рис. 5.24. Области плоскости (п^2/п, л), предпо- чтительные для реализации MFT-метода либо по ал- горитму MULTFT, либо по алгоритму PARAF!" „ par ми словами, не удивительно, что, если ком- пьютер ’’выглядит” параллельным по отно- шению к масштабу вектора (п1/2 п/2), то предпочтителен тот алгоритм, который ориентирован на максимизацию уровня па- раллельной операции. Множественное преобразование Фурье также применяется в решении родственных задач, которые формулируются как сверт- ки. Например, потенциал в точке сетки мо- жет быть выражен как сумма вкладов от источников, находящихся во всех других точках сетки, помноженная на известную функцию влияния или функ- цию Грина G, которая представляет собой только функцию разделения меж- ду исходной и потенциальной точками сетки. Так, = <5138) s=o г=о Этот способ выражения задачи применим, когда источники формируют изолированный пучок, и единственным граничным условием является равно- мерное разложение потенциала до бесконечности. Примером такой задачи яв- ляется расчет потенциала группы или галактики звезд [102], где G — куло- новское взаимодействие г-1, а г — разделение между точками источника и потенциала. Указанное выше выражение также применяется в Р3М-методе [106] для расчета потенциала в больших системах взаимодействующих ионов. Уравнение (5.138) эквивалентно утверждению, что потенциал представ- ляет собой свертку исходного распределения/по функции G. Теорема сверт- ки [25] гласит, что Фурье-преобразование свертки пропорционально произве- дению преобразования Фурье свернутых элементов. Поэтому, преобразовав уравнение (5.138), получаем: ^рк-! =n2Gk-!fk-!, к, 1 = 0, 1. (5.139а) Метод решения заключается в следующем: — /г I /р q .БФП^,/ (5.1396) Это - то же самое, что и процедура (5.133) с умножением на функцию G,заме- няющим деление на [...] из уравнения (5.132а). При реализации (5.1396) мож- но воспользоваться алгоритмом MULTFT или PARAFT, как описывалось выше. Метод преобразования, обрисованный в предыдущих разделах, опирает- ся только на существование теоремы свертки для преобразования много- кратной суммы (5.138) в простое параллельное умножение в уравнении (5.139а). Из уравнения (5.111) можно легко показать, что теоретико-число- вое преобразование Ферма также имеет теорему свертки. Поэтому метод, описываемый уравнением (5.1396), можно применять, заменив БПФ на ТЧП 1 1в Зак. 1799 325
и плавающую арифметику на целочисленную арифметику по модулю (см. подразд. 5.5.6). Детали этого метода рассмотрены Дж. Иствудом и К. Джес- схоупом и рекомендованы для решения определенных трехмерных ДУЧП на таких компьютерах, как ICL DAP [62]. Р. Джеймс и Д. Паркинсон [124] оце- нили эффективность этого метода при решении уравнения Пуассона для гра- витационной задачи на 65 х 65 х 65 сетке. Одним из первых и наиболее успешных быстрых эллиптических преобра- зований является метод фурье-анализа и циклической редукции или FACR- алгоритм [101, 102, 227]. Он был разработан для минимизации объема ариф- метических операций на последовательных компьютерах путем уменьшения объема фурье-преобразования и при оптимальном использовании (см. [106] ) имеет асимптотическое число операций, равное 4,5«2log2 (log2«). Алгоритм FACR также оказывается высокоэффективным на параллельных компью- терах. Дискретное уравнение Пуассона (5.131) можно переписать в виде строки: +A^ + ^+i <7=0, 1,-..,и-1, (5.140) где элементы векторов столбцов af соответственно представляют значе- ния потенциала и правой части по $-й горизонтальной линии сетки. Матрица А является п х п трехдиагональной матрицей с диагональю —4 и верхней и нижней диагоналями единицы. Именно эта матрица представляет вычисление разностей дифференциальных уравнений в х направлении. Если умножим каждое уравнение четной строки, схожее с уравнением (5.140), на — А и прибавим уравнение для нечетной строки сверху и нечетной строки снизу, то получим множество уравнений, объединяющих только чет- ные строки: (5.141а) где А(1) =21 -А2 =(>/2 I +А)(л/2 I - А). (5.1416) Это составляет один уровень циклической редукции (по строке) исход- ных уравнений. Результирующие уравнения (5.141а) численно представляют только половину (только четные строки) и имеют ту же форму, что и исход- ные уравнения (5.140). Процесс циклической редукции может быть рекур- сивно повторен, выдавая сокращенные множества уравнений для каждой четвертой, восьмой, шестнадцатой и так далее строки на уровнях г = 2, 3, 4 и т. д. На каждом уровне существует центральная матрица А(г^ , которая мо- жет быть выражена как произведение 2Г трехдиагональных матриц: 2Г К2к — А0= П (А-&1), fc = 2coS(— / . (5.142) к=1 Х 2 ' Факторизация для г = 1 показана непосредственно во втором равенстве уравнения (5.1416). Если циклическую редукцию прекратить на уровне г = 7, то результирую- щими уравнениями будут: ^-21+ А<'Ч + <7 = (0,1,.. .) х 2'. (5.143а) 326
Решая эти уравнения с применением фурье-анализа в направлении х по векторам, приходим к независимым гармоническим уравнениям для каждой гармоники к: ^-2i + ^kq+^+2i = fr к-0, (5.1436) где К*. — константа для каждой гармоники, зависящая от граничных условий в направлениих и корней уравнения (5.142). Уравнения (5.1435) являют- ся/: трехдиагональными системами длиной п2~1 и легко решаются. Процеду- ра решения уравнения (5.143а) такова: , БПФ решение , БПФ у анализ 7 4 уравнений (5.1436) 4 синтез V51 •’в-) После нахождения решения для каждой 2г-й строки из уравнения (5.МЗв) промежуточные строки могут быть заполнены последовательно из уравнений промежуточных уровней A(r) </> =№~ г~Ч> Г,дляг =1 - 1,1 -2,. .., 0. (5.144) 4 4 q-2 q + 2 В приложении к неизвестным строкам будет обнаружено, что значения в правой части уравнения (5.144) являются значениями, которые были найдены на предыдущем более низком уровне. Вследствие факториза- ции (5.142) решение уравнения (5.144) требует последовательного решения 2Г трехдиагональных систем. Рассмотренный выше алгоритм называется FACR(/), где аргумент пока- зывает число уровней циклической редукции, которые выполняются прежде, чем будут решаться уравнения по фурье-анализу. Р. Хокни [102] показал в числовом отношении, а П. Шварцтраубер [221] доказал аналитически, что существует оптимальное значение I = I* ъ Iog2 х х (log2и), которое приводит к минимальному общему числу арифметических операций. Чем больше циклическая редукция (увеличивающая /), тем мень- ше объем преобразований Фурье (всего несколько строк, для которых его нужно выполнить). Однако это приводит к необходимости решения допол- нительных трехдиагональных систем по уравнению (5.144), чтобы заменить промежуточные строки. Поэтому точное положение оптимального I * зависит от относительной эффективности машинных программ, используемых для БПФ и решения трехдиагональных систем. Лучшая программа БПФ приводит к меньшему I *, а лучшее трехдиагональное преобразование — к большему I *. Наилучшей стратегией, вероятно, будет написание машинной программы для общего I и измерение оптимального значения. Это было проделано К. Там- пертоном [226, 227] с помощью программы PSOLVE на машинах IBM 360/195 (оптимальное I * = 2) и CRAY-1 (оптимальное I * = 2 в скалярном режиме, / * = 1 в векторном режиме). Вполне очевидно, что внедрение параллелизма в реализацию FACR(/) приводит к меньшему значению оптимального /*. Мы увидим, что этот эмпирический результат достаточно хорошо согласует- ся с простыми теоретическими оценками производительности, которые мы приводим ниже. Из сказанного очевидно, что если взять циклическую редукцию до уровня I =» log2H, останется решить только одно уравнение для центральной линии. 11в* 327
По форме оно совпадает с уравнением (5.144), где значения в правой части, в зависимости от граничных условий, являются либо известными граничны- ми значениями, либо теми же, что и значения строки в левой части. Поэтому уравнение может решаться без использования фурье-анализа, как это дела- лось для всех промежуточных строк. Этот метод полной строковой цикли- ческой редукции (CLCR), который может быть описан как FACR(log2«)- процедура, был разработан О. Бунеманом [30], который показал, что за счет дополнительных арифметических операций можно сделать процедуру числен- но стабильной. Позднее был разработан теоретический анализ числовой ста- бильности строковой циклической редукции [39]. Метод FACR(/) может быть запрограммирован либо в нестабильной фор- ме циклической редукции, описанной выше, либо по стабилизированной процедуре Бунемана, и это имеет безусловное влияние на оптимальное зна- чение I *. На практике установлено, что нестабилизированная редукция мо- жет быть применена для малых значений /( = 1, 2), используемых по методу FACR (/), а стабилизированная редукция должна употребляться, если выбра- на циклическая редукция с завершением по I, типовое значение которой ле- жит в диапазоне 5 - 7. Поскольку метод CLCR работает со значением /, кото- рое далеко от оптимального, и требует дополнительных арифметических опе- раций для стабилизации, здесь мы его не рассматриваем больше. Несмотря на эти факты, которые были известны и опубликованы в 1970 г., разработка метода CLCR преобладала в литературе по числовому анализу в течение 70-х годов (см., например, [221]), Относительная производительность пол- ной редукции CLCR и частной редукции FACR(Z) была положена в основу теста при проведении ’’соревнования” между примерно 20 разными пуассо- новскими преобразованиями в Карлсруе в 1977 г. [196]. Оно было ’’выйгра- но” темпертоновской программой PSOLVE (стабилизированный PACR(3)- алгоритм), которая оказалась быстрее в 1,8 раза, чем наилучшая программа, использующая полную циклическую редукцию. Интересно отметить, что из- меренная ошибка, округленная во всем вычислении, фактически была мень- ше для ’’нестабилизированной” FACR(l)-процедуры РОТ1, чем для стабили- зированной программы. Все указанные результаты, отдающие предпочтение FACR (/)-методу, были получены на последовательных компьютерах. Мы от- мечаем, что аргументы против использования полной редукции становятся еще более весомыми при рассмотрении реализации на параллельных компью- терах. Теперь кратко опишем этапы FACR (/)-алгоритма и укажем время его вы- полнения на параллельных компьютерах с длиной полупроизводительно- сти «1^2. Типы родственных данных на различных этапах иллюстрируются на рис. 5.25 для случая FACR (1)-алгоритма, в котором имеется один уровень редукции. (а) Модификация RHS (правой части) для г = 1,2, . . . ,1 производится па- раллельно для п2~г строк с помощью обобщения уравнения (5.141в), а именно: (5Л45а) Выполняются (3 • 2Г-1 + 2)« арифметических операций на каждую строку: 328
Рис. 5.25. Типы родственных данных на различных этапах FACT (1)-алгоритма. Общие показанные стрелками данные родственно связаны либо в преобразовании Фурье, либо в трехдиагональной системе уравнений I ?а= £ («1/2+«2”')(3х 2'"'1+2)п; (5.1456) (б) БПФ-анализ над пТ1 строками производится параллельно по MULTFT- алгоритму. Каждое преобразование вещественно и имеет длину п: = («1/2 +n2~‘)2±nlog2n. (5.145в) (в) Решение гармонических уравнений, представленных в виде и-трехдиаго- нальных уравнений, каждое из которых имеет длину п2~г. Решаются парал- лельно по MULTGE-алгоритму. ?в = 5(Иу2 + n)n2~Z. (5.145г) Старший коэффициент взят равным пяти, а не восьми, потому что уравнение (5.1436) имеет два коэффициента, равных единице (а. = ci = 1). (г) БПФ-синтез над п2-1 строками осуществляется параллельно по MULTFT- алгоритму. Каждое преобразование вещественно и имеет длину и: ?г = («i/г+«2"Z)2|nlog2n. (5.145д) 329
(д) Заполнение промежуточных строк производится посредством решения уравнений (5.144), содержащих (2 + 5 » 2г)п операций на каждую строку, над и2“ + строками для г = I — 1,1 — 2,.. ., 0: 1-1 гд“ Y. (ni/2 + п2 ^+1'*)(5х 2Г + 2)п = (5.145е) i = £ («1/2 +п2'г)(5х 2''-1 + 2>. (5.145ж) Г = 1 Следовательно, полное время для выполнения FACR (I) -алгоритма i fFACR = £ («1/2 + «2~')(8х 2’’-1 + 4)п + Г = 1 + 5(nln + n2-z)nlog2« + 5(«1/2 + п)п2~1. (5.146а) Вычисляя суммы, получаем время на каждую точку: п 2^facr ~ [4/ + 4 + (1 + 5 log2 п)2~1] + [41 + 8 х 21 - 8 + 5 х 2~l + 51og2n], (5.1466) где первое выражение в квадратных скобках представляет счет числа1 обыч- ных операций на последовательном компьютере, а выражение во вторых квадратных скобках учитывает эффект реализации на параллельном компью- тере. Отметим, что в первом случае имеется минимум для положительного I =* log2 (log2n), тогда как во втором случае — равномерное увеличение с уве- личением I. Таким образом, для параллельных компьютеров с «1/2 > О мини- мум ?{ дск перемещается к меньшему /, как утверждалось ранее. В табл. 5.2 показан оптимальный выбор для большинства вероятных диа- пазонов «!/2 и п. Можно увидеть, что I = 3 будет встречаться очень редко, только для последовательных машин (n i/2 = 0), и что в параллельной среде уровни редукции 0, 1 и 2 — наиболее вероятны. Эта таблица отражает неста- билизированный FACR-алгоритм. Применение стабилизированной редукции приводит к увеличению стоимости вычисления циклической редукции и, сле- довательно, к снижению оптимального значения I. Действительно, К. Темпер- тон [226] отмечал оптимальное значение I = 1 для п = 32, 64 и 128 на машине CRAY-1 при использовании стабилизированного FACR (Г) -алгоритма. Интерес- но отметить, что FACR (1)-процедуру, которую сейчас находят оптимальной для параллельных компьютеров 80-х гг., следует считать вариантом первого опубликованного RES-алгоритма [101]. 1 Р. Хокни [102, 105] приводит значение 4,51 в качестве старшего члена в первой квадратной скобке, потому что для решения трехдиагональных систем предполагалась скалярная циклическая редукция (6 операций на точку) вместо гауссова исключения, как предполагалось здесь (5 операций на точку). Другие допущения имеют небольшие и несущественные различия для этого уравнения. 330
Таблица 5.2. Интервалы на (п /п), в которых различные уровни циклической ре- дукции I дают минимальное время выполнения для дестабилизированного FACR (?)-ал- горитма в соответствии с уравнением (5.1466) п Интервалы на 1 =3 1 =2 Z =1 Z =0 32 — 0-0,13 0,13-0,95 0,95 - ~ 128 0-0,014 0,014-0,27 0,27-1,47 1,47 -> °° 1024 0-0,067 0,067-0,47 0,47-2,26 2,26 -> “ Все обсуждение FACR (I) -процедуры было проведено при допущении, что уровень параллелизма пропорционален и. В качестве упражнения мы предо- ставляем возможность читателю рассмотреть случай, где используемый уро- вень параллелизма пропорционален п2. В этом случае БПФ и трехдиагональ- ные системы решаются параллельно по наилучшим параллельным алгорит- мам тем же способом, который был рассмотрен для уровня параллелизма п2 на алгоритмах MFT и SLOR. Следует сделать допущение для простых коэф- фициентов, имеющихся в уравнении Пуассона, которые поэтому приводят к уменьшению числа операций для методов PARAFT и PARACR в этом частном случае. • 5.6.3. Трехмерные методы Число разных стратегий для решения трехмерного эквивалента дифферен- циального уравнения (5.1196) велико. Здесь укажем только наиболее очевид- ные возможности и предоставим читателю самому оценить наилучшую про- цедуру для его цели с помощью результатов, приведенных в подразд. 5.6.1 и 5.6.2 в зависимости от того, что ему больше подходит. Итерационные методы следует рассматривать только для случая общих коэффициентов. Точечный метод SOR явно обобщается до трех размерно- стей. Методом построчной релаксации SLOR также можно воспользоваться в трех размерностях, предположив, что все окружающие строки правильные и осуществляя коррекцию строки. Корректировка всей плоскости значений в предположении, что смежные плоскости правильные (т. е. последователь- но плоскостная перелаксация, SPOR), может осуществляться, если имеется программа для решения плоскости значений. Это, конечно, представляет со- бой двумерную задачу из подразд. 5.6.1 и 5.6.2, для которой следует выбрать соответствующий метод. Он может быть итерационным, если коэффициенты общие, либо прямым методом, если двумерная задача представлена двумер- ным уравнением Пуассона. Вполне понятно, что выбор наилучшего метода будет строго зависеть от коэффициентов дифференциального уравнения. Су- ществует преимущество при решении многих возможных размерностей за- дачи прямыми методами. Оно будет возможным для любой размерности, которая имеет только четные производные, дифференцированные по равно- мерной сетке. 331
В общем случае при обсуждении прямых методов в трех размерностях мы ограничимся решением дискретного уравнения Пуассона [обобщение уравне- ния (5.131) до трех размерностей]. Следующие возможности напрашивают- ся сами. (a) MFT — можно воспользоваться методом многократного преобразова- ния Фурье (5.133) или (5.1396), если заменить двухмерное преобразование, которое рассматривалось ранее, трехмерным. Этот метод был применен в Р3М алгоритме Р. Хокни и Дж. Иствуда [106]. Минимальное'время выпол- нения для этого метода не указывается, но он обычно применяется, когда обстоятельства требуют знания трехмерного волнового спектра источника, который вычисляется по этому алгоритму. Это часто имеет место в физике плазмы. (б) FACR(l) — этот метод обобщается до трех размерностей, если мы за- меним одномерное преобразование Фурье в направлении х двумерным пре- образованием в (х, z) плоскости. Тогда циклическая редукция выполняется плоскостно-образным способом в направлении у. Поскольку сейчас стои- мость преобразования Фурье на каждую точку возросла в два раза (данные должны преобразовываться как в направлениях х, так и z), оптимальное зна- чение I будет больше, чем для двухмерного случая. (в) Одномерное преобразование - если выполнить одномерное преобра- зование Фурье, скажем, в направлении z, то каждая гармоника будет удовлет- ворять условию дискретного уравнения Гельмгольца (\z2<p — k$=f) в двух других размерностях. Его можно решить с помощью любого преобразования Гельмгольца. Если это будет FACR (/)-процедура с преобразованием Фурье в направлении х и циклической редукцией в направлении у, то фактически мы имеем вновь изобретенный вариант случая (б). При рассмотрении реализации перечисленных вариантов на определенных компьютерах необходимо учитывать использование параллелизма с уровнем п, п2 и и . В простейшем случае многократного преобразования Фурье мы можем преобразовывать параллельно п строк длиною п по наилучшему по- следовательному алгоритму и повторять это п раз во всех трех направлениях. С другой стороны, мы можем преобразовывать параллельно п2 строк длиною п по наилучшему последовательному алгоритму и повторять это во всех на- правлениях. И последнее, мы можем преобразовывать параллельно п2 строк по параллельному алгоритму PARAFT и получить уровень параллелизма п3. Аналогичные рассуждения можно применить к уровням параллелизма, ис- пользуемого при реализации итерационных методов. Вполне понятно, что здесь не хватает места, чтобы изложить и сравнить эти варианты, однако все необходимые данные и принципы были изложены читателю в этой главе ра- нее, так что для своей определенной задачи он сможет проделать это самосто- ятельно. 6. ПЕРСПЕКТИВНЫЕ РАЗРАБОТКИ Как мы видели в предыдущих главах, параллелизм привел к возникнове- нию основных новых тенденций не только в архитектуре машин, но также в алгоритмах и языках. Параллельные языки были последним препятствием 332
для принятия четкого и широкомасштабного параллелизма в компьютерных системах. Во время написания этой книги в комитете ANSI X3J3 близился к завершению процесс подготовки стандартов для параллельного Фортрана. Таким образом, параллелизм стал приемлемым как необходимое сред- ство (желаемое или нет) для достижения большей вычислительной мощно- сти. Мы ограничимся главным образом архитектурными соображениями, хо- тя не будем игнорировать и влияние параллелизма на алгоритмы и приложе- ния, так как последнее является основной движущей силой постоянного спроса на все увеличивающуюся вычислительную мощность. Во введении к этой книге мы видели, что увеличение вычислительной мощности происходило в среднем в десять раз за каждые пять лет или около того (см. рис. 1.1). Это было обусловлено спросом на вычислительную мощ- ность и нет никаких причин полагать, что этот спрос вдруг будет снижен. Факты говорят о том, что спрос на большую вычислительную мощность все время растет. Недавно министерство обороны США выпустило программу разработки СБИС-процессоров с производительностью 3 • 109 операций в се- кунду [219]. Другие серьезные приложения, например моделирование ис- точников энергии, погоды и климата, компьютерная томография, также тре- буют большей вычислительной мощности [217]. Как и любое новое направление, применение параллелизма в вычислитель- ных системах началось с высоких требований компьютерного рынка. Боль- шая научная вычислительная машина или суперкомпьютер, как, по-видимо- му, ее сейчас называют, дорого стоит, но она обеспечивает соответствующую уровню технологии производительность (в настоящее время примерно 100 Мфлоп/с). Однако, как это было со всеми разработками, которые ока- зываются эффективными в стоимостном отношении, эти машины вскоре найдут надлежащее место на более общем рынке и станут приемлемыми в более широком диапазоне применений. Поэтому в будущем мы выделили две области развития. Первая представля- ет постоянный спрос на новое поколение суперкомпьютеров (> 100Мфлоп/с), который будет преследовать нас до середины 80-х годов. Второй областью развития является более широкое применение параллелизма в компьютер- ных системах. Оно будет тесно связано с последними достижениями в обла- сти схемной интеграции, ведущей к СБИС [119, 158]. Предвестником этой второй области развития является недавнее сообщение фирмы Video Vector Dynamics Limited о разработке микросистемы, в которой используются идеи, применяемые и проверенные в суперкомпьютерах. Изделие представляет собой матрицу, содержащую до 16 конвейерных арифметических устройств, стоимостью менее 10 ООО фунтов стерлингов и мощностью в 20 раз большей, чем у машины PDP 11/34. Мы будем рассматривать развитие новых суперкомпьютеров в разд. 6.3, но вначале познакомимся с некоторыми основами проектирования цифро- вых систем. В разд. 6.1 разбираются технологические аспекты, а разд. 6.2 ка- сается некоторых проектных требований и ограничений. В обоих разделах представлены основы для новых разработок. 333
6.1. ТЕХНОЛОГИЯ 6.1.1. Характеристика Мы умышленно перенесли обсуждение вопросов технологии в последнюю главу о будущих разработках. Это сделано потому, что технология часто яв- ляется движущей силой в реализации новых компьютерных архитектур. По- следние достижения в области проектирования интегральных схем, в частно- сти возможного сейчас уровня интеграции, предусматривает реализацию мно- гих новых архитектурных идей. Кроме того, технология становится ключевым компонентом для некото- рых из тех параметров, которые мы описывали. В частности, удельная произ- водительность параллельного компьютера, приведенная в подразд. 1.3.4 как производительность, приходящаяся на единичный уровень параллелизма, в сильной степени зависит от технологии. Основные усилия будут направлены на увеличение быстродействия цепей. Быстродействие может измеряться временем задержки распространения сигнала для одного логического венти- ля rd. Другие косвенные зависимости будут представлены в отношении мощ- ности рассеяния, так как это является основным фактором при определении плотностей компоновки и уровней интеграции. Мощность, приходящаяся на каждый вентиль, PD, составляет необходи- мую статическую мощность и мощность переходного процесса. В случае ло- гического вентиля с высокой нагрузочной способностью требование к стати- ческой мощности не является существенным, и вентиль тратит мощность только в момент переключения. Поэтому здесь требования к мощности бу- дут представлять функцию от тактовой частоты. Другая логика называется логикой с низкой нагрузочной способностью, и здесь требования к мощности переключения незначительны по сравнению с требованиями, предъявляемы- ми к статической мощности. В целом, требования к мощности изменяются в зависимости от выхода логической схемы, поэтому обычно задается средняя мощность рассеяния. В любой технологии всегда будет существовать некий компромисс между мощностью и задержкой вентиля, так как чем быстрее переключается уст- ройство, тем сложнее им управлять. Значение рабочей точки на графике за- держки при заданном напряжении иногда указывается при выпуске продук- ции, но, как вариант, оно может быть изменено с помощью внешних резисто- ров кристалла. Произведение представляет собой другой параметр, свя- занный с определенной технологией, который дает меру энергии переключе- ние вентиля, например ESW = TdPD- (6>1) Чтобы проиллюстрировать важность энергии переключения или мощности рассеяния, рассмотрим мощностные требования применительно к одиночной интегральной схеме (ИС). В целом предел мощности для одиночной ИС со- ставляет приблизительно 2 Вт, хотя он может быть более чем удвоен, если ис- пользовать корпус с теплоотводом и по возможности жидкостным охлажде- нием. Однако, допустив 2 Вт на корпус, сколько вентилей может быть со- 334
брано на одном кристалле? Для вентиля с низкой нагрузочной способностью это задается уравнением: (6.2) где РD - средняя мощность рассеяния на вентиль. В случае вентилей с высокой нагрузочной способностью рассеяние мощно- сти будет зависеть от средней тактовой частоты каждого вентиля f . Таким образом, предположив два перепада логических уровней за один цикл, N будет ограничено: s Средняя тактовая частота вентиля будет в основном меньше,чему системы, так как не во всех вентилях будут происходить перепад уровней за каждый тактовый период. Это особенно важно для технологии изготовления запоми- нающего устройства, где только к нескольким ячейкам памяти производит- ся обращение за время каждого цикла памяти. Указанные соотношения обоб- щены в табл. 6.1 и 6.2. Таблица 6.1. Допустимые уровни интеграции для различных энергий переключения и частот тактирования при использовании вентиля с высокой нагрузочной способностью. Таблица 6.2. Возможные уровни интеграции при использовании вентиля с низкой на- грузочной способностью как функции средней мощности рассеяния PD, мВт 200 20 2 0,2 0,02 N g 10 10’ 103 104 10s МИС СИС БИС СБИС Существуют и другие причины, которые ограничивают число вентилей в одном кристалле, из которых наиболее серьезной является площать вентиля. Площадь вентиля представляет собой решающий фактор, влияющий на сто- имость кристалла и определяющий размеры кремниевой пластины. Посколь- 335
База (управляющий База Эмиттер электрод) и М ии \Гл 1 1 J _______р ' \ __________ Примеси п-типа / \ Управляемый ток Коллектор Управляемый ток 6} Рис. 6.1. Поперечное сечение двух основных переключающих транзисторов: а — биполярного и б — полевого ку минимальные размеры устройства приближаются к пределу в 1 мкм, бо- лее серьезную проблему представляют внутренние соединения. Например, при МОП-технологии с минимальными размерами 1 мкм толщина алюминие- вых проводников все еще сохраняется на уровне 5 мкм. Следовательно, имеем три параметра, которые характеризуют определен- ную технологию: время задержки вентиля т^, мощность рассеяния одного вентиля Рд (как вариант, энергия переключения Esw = и площадь вентиля. При дальнейшем рассмотрении воспользуемся этими параметрами, чтобы указать при сравнении преимущества той или иной технологии. Кроме того, покажем, как достижения в методах обработки будут влиять на эти па- раметры применительно к определенной технологии. Технологии, которые мы рассматриваем, грубо можно разделить на две категории: логические схе- мы на основе биполярных транзисторов и логические схемы на полевых тран- зисторах, в частности канальных МОП-транзисторах. В последних токовый поток проходит в плоскости кристалла, тогда как при биполярной техноло- гии токи текут перпендикулярно поверхности между двумя областями, ко- торые были легированы различными примесями (рис. 6.1). Свободные элек- троны вводятся в кремниевую кристаллическую решетку посредством при- месей и-типа, а свободные дырки создаются в решетке введением примесей p-типа. Дырки, представляющие собой отсутствие электрона, могут передви- гаться и создавать токи как свободные электроны, но, безусловно, в проти- воположном направлении. Однако они обладают меньшей подвижностью. Вследствие того, что границами между этими областями можно управлять с большой степенью точности ( ~ 0,1 мкм) в сравнении с плоскостными раз- мерами ( ~ 5 мкм), это делает биполярную технологию более скоростной. Внутри этих двух больших категорий в зависимости от схем, материалов и особенностей обработки существует много различных технологий. Например, многие из экспериментальных технологий предусматривают новые стадии обработки, что приводит к уменьшению размеров приборов, а следователь- но, мощностей увеличению быстродействия (см. подразд. 6.1.4). 6.1.2. Биполярные технологии (ТТЛ, ЭСЛ, И2 Л) Три основные биполярные технологии представлены транзисторно-тран- зисторной логикой (ТТЛ), эмиттерно-связанной логикой (ЭСЛ) иинтеграль- 336
но-инжекционной логикой (И2 Л). ЭСЛ-схемы иногда еще называют токопе- реключательной логикой, а И2 Л — совмещенной транзисторной логикой. ТТЛ-схемы были первыми логическими ИС. В 1984 г. фирма Texas Instru- ments объявила о выпуске первого семейства ТТЛ-схем. Основным вентилем в этом семействе является вентиль НЕ—И, для которого уровни напряжения О и 2 В соответствуют логически 0 и 1. Эти ТТЛ-схемы являются достаточно медленными и имеют большую мощность рассеяния; вследствие этого они фактически вышли из употребления. Однако другие серии ТТЛ-схем, а имен- но с диодами Шотки и маломощные ТТЛ-схемы с диодами Шотки, являются все еще конкурентоспособными в области малой и средней степени инте- грации. В ТТЛ-схемах используются биполярные транзисторы в режиме насыще- ния, и скорость их переключения сдерживается накапливающимися задерж- ками, а не временем передачи. Запомните, что биполярные приборы могут иметь субмикронные активные области и поэтому, как правило, обеспечива- ют высокое быстродействие. В ТТЛ-схемах с диодами Шотки диоды Шотки ограничивают уровень насыщения. Это обеспечивает существенно лучшие времена задержки и делает эту технологию конкурентноспособной для широ- кого диапазона применений. Однако для удовлетворения высоких требова- ний к быстродействию традиционно используются ЭСЛ-схемы. ЭСЛ-схемы представляют другое семейство биполярной логики, где тран- зисторы предохраняются от попадания в режим насыщения. Ток коммутиру- ется в цепи базы ЭСЛ-схемы, которая является логическим инвертором. Ин- вертор можно расширить для получения двойного вентиля ИЛИ/НЕ-ИЛИ. Логические 0 и 1 представлены соответственно уровнями напряжения —1,7 и —0,8 В. ЭСЛ-схемы часто выпускаются по заказу для удовлетворения задан- ных заказчиком требований. Однако это не означает, что весь кристалл бу- дет изготовлен по спецификации заказчика. Такие кристаллы содержат регу- лярную матрицу из вентилей ИЛИ/HE—ИЛИ и отвечают требованиям заказ- чика только на окончательной стадии изготовления. Межсоединения для определенной схемы формируются с помощью шаблона на кремниевом кри- сталле. Только они обычно представляют собой этап, выполняемый по тре- бованию заказчика. Такие матрицы общеизвестны под названием незакончен- ных логических матриц. Принципиальным достоинством ЭСЛ-схем является очень малое время за- держки вентиля, которое может достигать 0,5 нс для готовых компонент. Другое преимущество этой технологии — большой коэффициент нагрузоч- ной способности по выходу, хотя за это приходится расплачиваться быстро- действием. Недостатки ЭСЛ- схем заключаются в большой мощности рассе- яния (до 25 мВт на вентиль) для субнаносекундных задержек и относитель- но большой площади ветиля (> 104 мкм2). Поэтому в настоящее время ЭСЛ-схема представляется хорошим кандидатом для БИС. В типовом корпу- се содержится примерно 100 вентилей. Третьей биполярной технологией, которую мы рассмотрим, является И2 Л- технология. Это относительно недавняя технология, одна из наиболее пер- спективных для СБИС. С момента знакомства с ней (в 1972 г.) как новой концепцией в биполярных логических схемах [21, 92] эта технология разви- валась чрезвычайно быстро. Она уже посягает на рынок МОП-схем, особенно 337
a) Рис. 6.2. И3 Л-переключательные схемы: а — базовый И2Л-инвертор; б — вентиль ИЛИ на трех инверторах для маломощных применений. Одним из основных достоинств И2 Л является чрезвычайно низкая мощность рассеяния и высокая плотность компоновки, что делает ее идеальной для СБИС. Одним из основных факторов, определя- ющих такое положение, является отсутствие каких бы то ни было интеграль- ных резисторов в схеме, что дает дополнительную возможность варьировать рабочую мощность вне кристалла. Рабочая точка на кривой зависимости за- держки от мощности может выбираться в широком диапазоне путем измене- ния внешнего сопротивления источника в соответствии с определенным при- менением. Практически нет причин для того, чтобы рабочая точка оставалась постоянной для определенного применения; она может меняться динамически. При медленной работе (т^ ~ 100 пс) И2Л-схемы рассеивают меньшую мощность, чем схемы любого другого логического семейства (Рп^ 1 мВт), за исключением, пожалуй, КМОП-технологии (см. подразд. 6.1.3). Поэтому, завершая рассмотрение спектра мощностей, можно указать, что произведе- ние задержки вентиля на мощность составляет менее 0,1 пДжи это значение существенно не увеличивается до тех пор, пока задержки не достигнут 10 нс. Здесь значение произведения задержки на мощность увеличивается пример- но до 1 пДж. Базовая И2 Л-схема содержит р-п-р транзистор, который генерирует посто- янный ток (через внешний нагрузочный резистор), поступающий на базу многоколлекторного переключающего транзистора. Логический вход, 0 или 1, соответствует закороченной или разомкнутой цепи в базе данного транзи- стора. Базовый вентиль (рис.6.2, а) представляет собой инвертор, посколь- ку, если цепь базы закорочена, то транзистор находится в выключенном со- стоянии, обеспечивая на выходе разомкнутое состояние цепи, а если цепь ба- зы будет разомкнута, ток включит транзистор, закорачивая тем самым его выходы на землю. С помощью трех инверторов, как показано на рис. 6.2, б, можно сконструировать вентиль ИЛИ. Логику работы можно легко прове- рить, отметив, что логический 0 (закороченная цепь) является доминиру- ющим на выходе двухвходового вентиля. Заманчивость И2Л-технологии заключается в том, что р-п-р/п-р-п транзи- сторы собираются на одной трехмерной структуре, имеющей только 2 + f контактов, где f - требуемая нагрузочная способность по выходу. Для И2 Л- технологии это обеспечивает очень высокую плотность компоновки, которая совместно с произведением малой мощности на задержку вентиля делает И2Л-технологию очень обнадеживающим кандидатом для СБИС. Применяя 338
проводники шириною 5 мкм, в одном квадратном миллиметре кремния можно разместить 1000 инверторов с f = 4. В табл. 6.3 обобщены храктеристики И2 Л-, ЭСЛ- и ТТЛ-технологий. Таблица 6.3. Характеристики биполярных технологий Тип технологам Типовые параметры Т^ЧС Рд, мВт 7/дПДж А , мкм g ТТЛ Шотки 3 20 60 ~104 Маломощные ТТЛ Шотки 6 2 12 ~104 ЭСЛ 0,5-2 10-50 ~20 (2-4) о Ю4 И’Л >5 < 0,2 < 1 300 6.1.3. МОП-технологии (р-МОП, n-МОП и КМОП) Полевой транзистор является относительно простым прибором, в котором поле, создаваемое электродом затвора, управляет потоком тока в канале между электродами истока и стока. Наиболее общее название полевого тран- зистора — МОП-транзистор (металл — окисел — полупроводник). В дальней- шем металл был заменен поликристаллическим кремнием, что дало возмож- ность применить металл на втором уровне межсоединений. Канал представля- ет собой легированный кремний п- или p-типа, что определяет тем самым n-МОП и р-МОП технологию. Несмотря на простоту изготовления, p-МОП тех- нология была повсеместно вытеснена n-МОП технологией вследствие более высокого быстродействия. В третьей основной МОП-технологии используются как п-, так и р-МОП транзисторы. Она называется комплементарной МОП-технологией или КМОП. Она является перспективной для СБИС, поскольку имеет хорошие характе- ристики мощности рассеяния. Основное преимущество всех МОП-технологий — относительная просто- та производственных процессов и высокая плотность компоновки. Поэтому МОП-технология применялась почти во всех без исключения приложениях БИС, обеспечивая тем самым выпуск чрезвычайно недорогих изделий (на- пример, микропроцессоров и больших кристаллов памяти). К недостаткам МОП-приборов относится их малое быстродействие (табл. 6.4). Для указан- ного вентиля задержка линейно зависит от коэффициента нагрузочной спо- собности по выходу и поэтому трудно привести типовые параметры. Однако следует отметить, что типовые быстродействующие схемы синхронизируются с частотой приблизительно 20 МГц. Базовый n-МОП вентиль представляет собой инвертор (p-МОП вентиль идентичен n-МОП, но имеет противоположную полярность). Этот вентиль имеет два транзистора, один из которых всегда находится во включенном со- стоянии либо посредством смещения, как в логических схемах с использова- нием режима обогащения, либо управления процесса, как в логических схемах с использованием режима обеднения. Следовательно, этот транзистор ведет себя как постоянный резистор с большим сопротивлением, тогда как 339
+5 В Таблица 6.4. Характеристики типо- вых МОП-технологий Тип Типовые параметры техноло- гии Ъ- нс Ъ’ мВт rZo’ пДж А , S г мкм' р- к аналь- ная 10 1 10 300 ^-каналь- ная 5 1 5 300 КМОП 5 -0,011 < 1 500 Зависит от частоты тактирования П VT2 (всегда вкл.) : R = 1Q0 к U вых U ----------1 Г VtJ вкл- : Л = 1 к вх I L 11 выкл. : R = Ю’ Рис. 6.3. Схема МОП-инвертора второй работает как переключатель (рис. 6.3). Работа вентиля достаточно проста: два транзистора работают как резисторная цепь, обеспечивающая распределение напряжения между источником питания и землей. Поэтому, когда транзистор VTi включен (£7 х = 5 В), напряжение £7 примерно рав- но потенциалу земли (£7 ~ 0), а когда транзитор VTi выключен (£7 х ~ — 0), £7 приблизительно равно потенциалу источника питания (£7 5 В). С помощью двух переключающих транзисторов (VT1A и *Т1В), включенных последовательно или параллельно (рис. 6.4), можно сконстру- ировать вентили НЕ-И и НЕ-ИЛИ. Благодаря большому внутреннему сопротивлению МОП-приборы потреб- ляют очень малую мощность. Например, когда транзистор VTi включен (£7ВХ ~ 5 В), общее сопротивление между источником питания и землей, как правило, составляет 100 кОм. Поэтому при использовании пятивольтового источника PD = 0,25 мВт, и аналогично, если VTi выключен, PD = 2,5 нВт. Следовательно, нетрудно заметить, что и-канальные МОП-вентили потребля- ют существенную мощность только тогда, когда на выходе имеется низкий потенциал; значения пиковой мощности при переходных процессах несуще- ственны. Типовые значения параметров для МОП-схем приводятся в табл. 6.4. Рис. 6-4. Комбинация МОП-транзисторов для получения сдвоенных функций входной логики: а - вентиль НЕ—И; б — вентиль НЕ-ИЛИ 340
Рис. 6.5. Логические КМОП-схемы: а — базовый инвертор; б — вентиль НЕ—ИЛИ Плотность компоновки базового n-МОП инвертирующего вентиля при ис- пользовании 5-мкм проводников примерно такая же, что и у И2Л-вентиля, т. е. составляет 1000 вентилей на квадратный миллиметр. Однако в отличие от И2 Л-технологии более сложное конструирование вентилей требует незна- чительной дополнительной площади на кристалле кремния. В и-канальных МОП-схемах, поскольку транзистор VT2 не переключается, а работает только как пассивный резистор, имеется асимметрия в длительно- сти переднего и заднего фронтов, которые присущи этой технологии. Гово- рят, что спад — это активный процесс и обычно занимает 5 — 10 нс, тогда как подъем — пассивный, который требует 50 — 100 нс (см. рис. 6.6, а) харак- теристики. В КМОП-схемах отсутствует длительная задержка при подъеме логическо- го уровня, так как в этих схемах предусмотрен активный процесс как при подъеме, так и при спаде. Поскольку в р-канальных МОП-схемах полярности тока и напряжения противоположны полярности в «-канальных МОП-схемах, то они могут применяться как комплементарные пары для формирования ба- зового инверторного вентиля (рис. 6.5, а). Такое свойство позволяет форми- ровать почти симметричный инвертор (существуют некоторые отличия в под- вижности носителей), в котором включается только один вентиль. С помо- щью двух комплементарных пар транзисторов создаются вентили НЕ—И и НЕ-ИЛИ. В вентиле НЕ-И, изображенном на рис. 6.5 б, транзисторы р-ти- па включены параллельно, транзисторы «-типа — последовательно. Вентиль НЕ—ИЛИ создается из последовательно включенных транзисторов p-типа и параллельно включенных транзисторов «-типа. Другая привлекательная черта КМОП-технологии заключается в том, что потребление тока происходит только во время переключения (рис. 6.6, б). В этом" довольно просто удостовериться, если вспомнить, что в комплемен- тарной паре один транзистор всегда выключен. Мощность рассеяния пред- ставляет собой функцию от средней скорости тактирования. Это дает огром- ное преимущество при изготовлении схем памяти, причем существующие «-канальные МОП-схемы по мощности рассеяния приближаются к тепловому барьеру (примерно 1 - 2 Вт на корпус [256]). КМОП-схемы имеют немного меньшую плотность компоновки, чем «-МОП, и они более дорогие в изготов- лении. Однако, по мере того, как «-МОП процессы все более усложняются, 341
Время,нс Рис. 6 6. Динамические характеристики коммутирующих вентилей на полевых транзи- сторах: а - «-МОП; б — КМОП. Штриховая линия соответствует U , сплошная — I ВЫХ ст КМОП-технология становится все более конкурентноспособной и, вероятно, будет основной в 80-х годах. Один недостаток, присущий всем МОП-процессам и отсутствующий у би- полярных приборов, заключается в том, что эти схемы не могут работать при повышенных температурах. У МОП-приборов быстродействие снижается в два раза при увеличении температуры до 100°С. Это означает, что МОП-тех- нология более жестко ограничена мощностью рассеяния в 1 — 2 Вт на корпус, тогда как биполярные технологии не имеют такого жесткого ограничения. 6.1.4. Методы масштабирования Параллельные компьютеры, особенно проекты с большим дублированием, соответствуют новой революции, которая происходит в микроэлектронной промышленности. К 1985 г. ожидается сверхбольшая степень интеграции: 105 или даже 10б вентилей в одной интегральной схеме [181]. Причиной яв- ляются постоянные достижения в области изготовления интегральных схем, в частности улучшение разрешающей способности печати или ’’нанесения” схем на поверхность кремния. Цифры, которые приводились в предыдущих разделах, базируются на ус- тановившихся производственных процессах, в которых используется метод контактной печати, обеспечивающий минимальные размеры порядка 4 — 5 мкм. В более поздних достижениях используется проекционная печать с ультрафиолетовым излучением ( ~ 2 мкм); современный уровень техноло- 342
гии использует непосредственное формирование схемы на кремниевой пла- стине с помощью электронного луча [118, 119]. Это позволяет довести ми- нимальные размеры до 1 мкм или менее. Эффекты линейного уменьшения размеров полупроводниковых приборов представляют огромный интерес, а для МОП-транзисторов они также пред- ставляют правила поддержания работы приборов в надлежащем режиме, ко- рыми рукодствовались в течение некоторого периода времени [54, 107]. При коэффициенте масштабирования К > 1, если все вертикальные и горизон- тальные размеры будут пересчитаны по 1//С, а концентрация примесей леги- рования подложки — по К, то, учитывая уровни напряжения, также пересчи- танные по 1/К, можно привести к соответствующему масштабу характери- стики приборов [96]: Ток прибора, I.................................................К~' Задержка распространения, Tj...........................................К~' Мощность рассеяния, Рр................................................. Произведение задержки на мощность, Уп.................................. Сопротивление, R.......................................................К Плотность тока в межсоединениях, Дж....................................К Плотность компоновки....................................................№2 Плотность выделяющейся мощности........................................1 Падение напряжения, IR.................................................1 Константа R С..........................................................1 Как мы уже видели, желательно уменьшать задержку распространения, но не за счет увеличения рассеиваемой мощности. При этих правилах масштаби- рования задежка изменяется в масштабе 1/К, а рассеиваемая мощность на каждый прибор в масштабе 1/К2, что весьма удобно. Однако следует отме- тить, что плотность размещения увеличивается на 1/К2 и поэтому плотность выделяющейся мощности остается той же самой. Следовательно, можно уве- личить плотность размещения путем изменения масштаба приборов, не опа- саясь приблизиться к барьеру теплового рассеяния. При таком масштабировании все же существуют проблемы, так как плот- ность тока увеличивается на коэффициент К, что может усложнить проблемы обеспечения надежности. Если плотности тока станут слишком высокими, металлизированные соединения будут мигрировать вместе с потоком тока. Другие проблемы возникают от того, что масштаб напряжения должен из- меняться в соответствии с масштабом приборов, уменьшая тем самым гра- ницу между логическими уровнями. Уровни шумов остаются постоянными, на уровне тепловой энергии дискретных частиц, а это может составить очень серьезную проблему. Масштабирование приборов без масштабирования на- пряжения приводит к К3 -увеличению плотности выделяющейся мощности. Последняя проблема при изменении масштаба приборов состоит в увели- чении относительного размера и задержки у требуемого устройства для уп- равления внешним окружением. Поэтому полное преимущество масштабиро- вания достигается только внутри кристалла; как только сигналы выходят за пределы кристалла, эффективность результатов масштабирования снижается. Хотя изменение масштаба очень привлекательно и может казаться неогра- ниченным, существуют определенные фундаментальные ограничения, обус- ловленные квантовой структурой физических явлений. В некоторых подроб- 343
Минимальный размер, мкм Рис. 6.7. Смоделированное масштаби- рование времени задержки распро- странения для И2 Л- и ЭСЛ-различных МОП-вентилей [93] Рис. 6.8. Смоделированное масштабирова- ние произведения задержки распростране- ния на потребляемую мощность для ЭСЛ-, И2 Л-и различных МОП-вентилей [93] ностях эти ограничения обсуждаются в работе [158]. На практике к этим ограничениям не следует приближаться до тех пор, пока ’’усадка” приборов не достигнет 0,25-мкм размера. В противоположность сказанному, масштабирование для биполярных - транзисторов не является таким точным и хорошо описанным. Биполярные транзисторы могут быть изменены в масштабе, без изменения масштаба вер- тикальных размеров; в действительности было бы очень сложно при суще- ствующих технологиях изменить масштаб этого размера в большой степени. Поскольку время пролета в биполярных транзисторах зависит от вертикаль- ного размера, время задержки распространения в ЭСЛ-схемах не будет мас- штабироваться линейно с горизонтальными размерами. Тем не менее, прои- зойдет некоторое уменьшение времени задержки распространения вслед- ствие емкостных эффектов, а масштабирование мощности будет похоже на масштабирование в МОП-приборах. В последнем сообщении К. Харта и соавторов [93] рассматривалось моде- лирование как биполярных, так и МОП-приборов по мере уменьшения их линейных размеров. Их результаты кратко представлены на рис. 6.7 и 6.8. Экспериментальные приборы с субмикронными размерами подтверждают эти смоделированные тенденции [например, 68, 195]. Трудно сказать, на- сколько быстро такие приборы будут приняты в производство. Кажущиеся простыми правила масштабирования предполагают многие усовершенствова- ния в технологии обработки, кроме того, существует очень серьезный этап подготовки — от экспериментальных приборов до выпуска производствен- ной продукции СБИС. 344
6.1.5. Другие технологии Хотя в предыдущих разделах об этом и не упоминалось, существует мно- го новых технологий, которые начинают входить в силу. Они включают в себя некоторые достижения масштабирования, а также новые особенности обработки. Например, МОП-приборы сейчас изготавливают из кремния, вы- ращенного на сапфире, а биполярные приборы успешно выполняют с поли- кремниевыми эмиттерами. Эти структуры, созданные по новым методам, для которых требуется только одна операция совмещения шаблона [199], со- держат полупроводниковые приборы с задержкой вентиля 100 пс и вполне приемлемой энергией переключения. Однако эти технологии не представляют собой радикального отхода от установившихся технологий, скорее всего это две вспомогательные технологии. Обе они рассматриваются с точки зрения применений быстродействующих БИС. Первая представляет собой технологию полевого транзистора, в которой используется арсенид галлия (GaAs). Полевые транзисторы из арсенида галлия переключаются существенно быстрее, чем их кремниевый соперник вследствие чрезвычайно высокой подвижности электронов, которая в 5 — 10 раз выше, чем у кремниевых приборов. Арсенид галлия в течение многих лет применялся в отдельных СВЧ устройствах. Однако нужны большие капи- таловложения, прежде чем он станет соперником кремния для изготовления СБИС. Начальная разработка технологии арсенида галлия не была конкурент- носпособной, поскольку она нуждалась в методах современной технологии, таких как ионное легирование и высокоточная эпитаксия. Можно, конечно, отметить, что эта технология имеет хорошо отработанный одномикронный процесс. Все же теперь, когда эти совершенные методы стали общеприняты- ми в обработке кремния, арсенид галлия является жизнеспособной альтерна- тивой для некоторых цифровых приложений. Процесс обработки GaAs все еще имеет недостатки, но, вероятно, воз- можность увеличения скорости в 5 — 10 раз превысит чашу весов. Читатель может обратиться к отчету [64], в котором рассматривается эта технология более подробно. Все-таки на основе именно этой технологии были изготовле- ны 1-мкм приборы со средней степенью интеграции с задержкой 100 пс/вен- тиль и мощностью рассеяния менее 1 мВт. Вторая технология, которая имеет большие предпосылки, но большие трудности реализации и эксплуатации — это приборы на джозефсоновском переходе. Джозефсоновский переход базируется на трех физических явлени- ях: сверхпроводимости, туннельном эффекте и эффекте Джозефсона [155]. Базовый прибор (рис. 6.9) представляет собой многослойную структуру из изолирующего окисла, заключенного между двумя полосками сверхпро- водящего металла. При охлаждении ниже температуры порога сверхпроводи- мости (например, 7,2 К для проводника) в окисле создается небольшой сверхпроводящий барьер, через который могут туннелировать электроны. Эти условия были изложены Джозефсоном, который предлагал управлять сверхпроводимостью с помощью магнитного поля или электрического потен- циала. Следовательно, током, проходящим через этот вентиль, можно управ- лять, а вольт-амперные характеристики имеют ту же самую нелинейность, ка- кая обнаружена в полупроводниковом приборе. Привлекательность этих 345
Токовая петля Изолирующий окисел Пластина заземлении Рис. 6.9. Поперечное сечение сверхпроводящего коммутирующего прибора на эффекте Джозефсона приборов заключается в очень малом времени переключения, которое изме- ряется десятками пикосекунд. Фирма IBM очень серьезно рассматривала в своих исследовательских про- граммах вопросы технологии приборов с джозефсоновским переходом и ее исследователи создали логические схемы с временем 40 пс на вентиль и мощ- ностью рассеивания, измеряемой в милливаттах. У этих вентилей значение произведения задержки распространения на мощность составляет менее 2 • 10'4 пДж. Результаты по этому эксперименту были опубликованы вместе с другими отчетами по компьютерной технологии с использованием джозеф- соновского перехода в специальном выпуске [114]. Несмотря на все преимущества в отношении произведения задержки рас- пространения на мощность, технология с джозефсоновским переходом не лишена недостатков. Для работы таких приборов требуется сверхмощная интенсивная охлаждающая среда (около 4К), которая обеспечивается по- средством испарения, последующего сжижения и охлаждения газа гелия. Это ставит очень серьезные ограничения с точки зрения организации ввода-выво- да и технического обслуживания компьютера на приборах Джозефсона. Эти проблемы не являются непреодолимыми, но, вероятно, потребуются как ар- хитектурные, так и технологические изменения в стандартной производ- ственной области фирмы IBM. Здесь мы подошли к более серьезной проблеме, которая не свойственна технологии с джозефсоновским переходом, но которая затрагивает все сверх- скоростные технологии логических схем. Это — проблема связи как внутри кристалла, так и вне его. По мере увеличения быстродействия логических вентилей проблема распространения сигнала становится все более острой. При переключении вентиля за 10 пс длина проводника, равная 1 см на кри- сталле, представляет 10-вентильную задержку. Задержки вне кристалла на сверхвысоких частотах создают даже еще большие проблемы. Фактически сверхпроводящие соединения в приборах на джозефсоновских переходах от- носятся к положительным достижениям. Эта проблема будет присуща и вы- соко распараллеленным архитектурам, поскольку в них данные и процессо- ры поддерживаются физически связанными. Хорошие архитектуры для СБИС-проекта требуют множества дублированных простых ячеек с просты- ми и регулярными внутренними соединениями. Этот вопрос является фунда- ментальным в последних направлениях технологии СБИС [77]. 346
6.1.6. Краткие выводы На рис. 6.10 приводится обобщенное графическое отображение многих технологий, рассмотренных в этом разделе. Отображение выполнено в виде зависимости обратного значения времени задержки вентиля от обратного значения мощности рассеяния на вентиль. Это дает понятие о быстродействии Рис. 6.10. Сравнение различных технологий для производства логических элементов и уровнях интеграции, разрешенных с точки зрения тепловых ограничений. Отмеченные технологии в большинстве своем представляют стандартный, а не. экспериментальный процесс; исключение составляют две технологии, представляющие еще экспериментальные процессы и на рисунке отмеченные знаками вопроса. - 6.2. ПРОЕКТНЫЕ ОГРАНИЧЕНИЯ 6.2.1. Вычисления - это связь Теперь попытаемся определить те области, которые будут критическими в проекте будущих параллельных компьютеров. Одна проблема, возникаю- щая вновь в этой книге, относится к средствам связи. Вычисления — это хра- нение, связь и обмен данными; и по мере увеличения размера системы связь становится наиболее важным фактором в вычислениях. В гл. 2, 3 и 5 мы видели, что связь является основой при проектировании как компьютера, так и алгоритма. Кроме того, в разделе по технологии мы 347
намекнули на проблемы связи, обнаруженные на уровне кристалла. Поэтому проблема связи не исчезнет, когда мы перейдем к С Б ИС-технологии; она, по существу, просто переместится с системного уровня на микроэлектрон- ный. Следовательно, связь является ключом к любому успешному компью- терному проекту. Связь в электронном цифровом компьютере представляет собой ’’прора- стание клетки” на уровне распространения высокочастотных электронных сигналов по проводам, печатным схемам или в примесных образцах крем- ния. Уяснение того факта, что на распространение этих сигналов между раз- личными компонентами в компьютере требуется конечное время, вскрыло ужасное состояние в одном из первых проектов Манчестерского университе- та. При конструировании первого компьютера ATLAS специалисты Манчес- терского университета столкнулись с серьезными проблемами временных интервалов. С тех пор физическое размещение компьютера становится все более и более важным, и сейчас ему уделяется основное внимание при про- ектировании. В машине CRAY-1 учитывается это проектное ограничение, и все особен- ности машины ориентированы на минимизацию и выравнивание задержек распространения. Наиболее очевидной из этих особенностей является порази- тельно необычная форма шкафа (см. рис. 2.1). Топологически ее можно рас- сматривать как трансформацию прямоугольного шкафа, приводящая к умень- шению длины монтажных соединений. На рис. 6.11 показана трансформация одинаковой площади, которая аналогична тому, что применяется в машине CRAY. Можно видеть, что размер плоскости монтажных соединений сокра- тился наполовину. Идеальной формой будет полная сферическая симметрия, так как она полностью минимизирует длину проводов. Вероятно, CRAY-2 придет к такой форме! Другими особенностями машины CRAY-1, которые приводят к миними- зации задержки распространения, являются подборка линий передачи, име- ющих резистивную нагрузку, и чрезвычайно высокая плотность размещения кристаллов. Эти особенности влекут за собой существенные проблемы в ох- лаждении; свыше 100 кВт тепловой энергии должно отводиться из шкафа объемом 2,8 м3. Такая плотность мощности примерно равноценна тому, ес- ли бы мы опустили l-кВт нагревательный электрический элемент в консерв- ную коробку из под печенья и по- пытались бы поддерживать темпера- туру ее на уровне немного выше комнатной. Даже при таком ловком способе охлаждения 50 % тактового периода, равного 12,5 нс, приходит- ся на допустимую задержку рас- пространения. Рис. 6.11. Преобразование площади с со- хранением ее постоянства, примененное с целью сокращения длины проводов в задней плоскости 348
(6.4) Чтобы дать понятие о масштабах этой проблемы, рассмотрим следующее: в самой идеальной линии передачи сигналы проходят со скоростью света (300 000 км/с, т. е. немногим менее 0,3 м/нс). На практике линии передачи обладают емкостью и сопротивлением, вследствие чего скорость распростра- нения сигнала снижается. Для 7?С-цепи распространение сигналов описывает- ся уравнением диффузии: dU <Ри rc—— = dt dx где R и С — сопротивление и емкость на единицу длины. Задержка диффузии изменяется по квадратичному закону вместе с длиной при постоянных R и С и является критической задержкой распространения сигнала в кристалле. К. Мид и Л. Конвей подсчитали згу задержку для проводников в типичных МОП-приборах и получили следующие цифры для 1-см соединений [158]. В металлических линиях задержка составляет 0,1 нс, тогда как в поликрем- нии или кремнии с примесями — 200 и 100 нс соответственно. Параллелизм — средство для минимизации влияния этой задержки. Это достигается несколькими путями. С использованием все большего паралле- лизма снижается потребность в схемах с большим быстродействием. Кроме того, в параллельной структуре связь может быть выполнена в виде моду- лей. Связь процессор-память в архитектуре, такой как у компьютера DAP, является хорошим примером, так как процессор и его память размещают- ся на одной плате (в будущем — в одном кристалле). Это решает проблему локальной, но не разрешает проблему глобальной связи. Матрицы типа ОКМД вещают управляющую информацию из центрального устройства управления; это означает, что управление в таких структурах осуществляется через гло- бальную связь. Примерно 30 % от 200-нс тактового цикла машины DAP от- водится на эту задержку связи. Другой метод, позволяющий избавиться от серьезных проблем, вызван- ных задержкой, лежит в организации конвейерной обработки. Поток данных может быть организован по конвейерному принципу путем буферизации ин- формации в различных узлах сети. Сети с коммутацией пакетов являются примером конвейерной связи очень большого масштаба. Этот метод был с успехом применен в проекте BSP, где при обращении к памяти все операции выравнивания и Обработки данных совмещаются (см. разд. 3.4). Ответ на решение проблем глобальной связи лежит в объединении этих двух методов с использованием структурированной информации и аппара- турного обеспечения. Структурированная информация не является чем-то новым в науке об ЭВМ, структурный подход к программированию пропа- гандировался в течение десяти лет [51]. Объединение ее со структурирован- ной аппаратурой может дать решение проблемы глобальной связи. Пробле- ма управления иллюстрируется на рис. 6.12. На верхнем уровне иерархии информация пропускается с относительно низкой частотой и большой за- держкой. На низшем уровне иерархии декодированная информация прохо- дит с высокой частотой и малой задержкой. В случае необходимости между этими двумя уровнями могут быть организованы другие уровни. Важным моментом в такой структуре является то, что если произведение частоты на задержку будет поддерживаться примерно постоянным, тогда 349
Макроуправление Процессорные элементы Рис. 6.12. Идеализированная структура управления, применение которой сокращает за- траты на глобальную связь в сверхбольших процессорных матрицах каждый слой может быть совмещен со следующим. Это обеспечивает парал- лельную конвейерную иерархическую структуру, которая имеет свойства глобальной связи со структурированной информацией. Хотя это и может решить проблему управления, но имеется множество алгоритмов, которым необходима глобальная связь с неструктурированны- ми данными. Перемножение и обращение матриц представляет два таких при- мера, где глобальная связь является свойством алгоритма. На языке древовидной структуры (см. рис. 6.12) это означает, что элемен- ты хранимых данных во всех нижних узлах должны пробегать по всему дереву с целью распространения ко всем узлам. При обращении и перемножении мат- риц каждому результирующему элементу необходима информация от всех элементов исходных матриц. Эта проблема глобальной связи данных, вероят- но, станет одним из основных ограничений в вычислениях вследствие неодно- родности управления; несмотря на то, что данные могут быть структуриро- ваны, их физический объем не может быть уменьшен за счет семантики. По- этому, возвращаясь к древовидной структуре на рис. 6.12, отметим, что если передача данных должна быть глобальной, то полоса пропускания на высших уровнях дерева должна быть больше, чем на низших. Многие утверждают, что от глобальной связи данных можно избавиться посредством выбора приемлемого алгоритма, например, при итерационном обращении матриц требуется обмен данными только на локальном уровне. Однако здесь свойство глобальной связи данных было разложено на состав- ные элементы и возложено на локальные связи. Хорошо известен факт, что порядок сходимости зависит от размера системы. Именно это свойство гло- бальной связи напоминает вновь о ее существовании. 6.2.2. Организация памяти Организация памяти — это область, в которой связь особенно важна. По- этому неудивительно, что иерархия играет основную роль в структурах памя- 350
ти. Низкочастотное обращение осуществляется к файлам, находящимся на медленно вращающихся устройствах массовой памяти. На следующем уров- не оперативной памяти компьютера хранятся массивы и другие структуры. И, наконец, регистры и (при наличии) кэш-памяти используются для обра- щения к отдельным элементам данных. При прохождении через эту иерархию частота обращений увеличивается, а задержка обращений снижается. Даже са- мые лучшие кристаллы памяти организованы по иерархическому принци- пу [187]. Такая иерархия регистров — кэш-оперативная память необходима, даже ес- ли бы все они были изготовлены на основе одной и той же технологии и, сле- довательно, имели бы одно и то же присущее этой технологии время задерж- ки. Причина заключается в том, что чем больше емкость памяти, тем медлен- нее выборка. Дополнительные задержки обусловлены вводом дополнитель- ной логикой декодирования и, что вероятно более важно, задержками на пе- редачу. Задержки при обращении зависят от емкости памяти по логарифми- ческому закону, а задержки на передачу изменяются с изменением длины (например, N1'2 - для планарных, №/3 - для кубических структур). Уже отмечалось, что в кристалле задержки на передачу в планарных структурах можно оптимизировать применением иерархических структур, которые да- ют логарифмический закон изменения задержки [187]. Эти тенденции являются одной из главных проблем в создании все боль- ших последовательных машин, ибо для запоминающих устройств емкостью в миллион слов памяти доступа отличается на порядок величины. Введение параллелизма и конвейерной обработки опять является решением проблемы доступа, но это произошло до того, как параллелизм стал применяться в об- работке данных. В памяти с расслоением (называемой также памятью с бан- ками или фазированием) используются принципы конвейерной обработки. Можно производить обращение к нескольким банкам памяти, совмещая их работу. Например, если имеется память с циклом в С секунд, к которой мы хотим иметь доступ каждые т секунд, то память должна быть поделена на р бан- ков, где (6.5) а обращение к этим банкам должно осуществляться либо параллельным, ли- бо последовательно-совмещенным способом с доступом к другому банку данных каждые г секунд. Последнее расслоенное обращение иллюстрируется Рис. 6.13. Структура памяти с расслоением 351
Рис. 6.14. Временная диаграмма, показывающая совмещенный доступ к независимым банкам памяти с расслоением ние к банкам в определенной последовательности, возможна любая переста- новка повторяемых циклов в этой последовательности. Расслоение банков осуществляется по принципу разделения ячеек памяти на адресные биты низкого или высокого порядка. Например, в двухмерной памяти расслоение низкого порядка обычно дает четные и нечетные адреса в разных банках, тогда как расслоение высокого порядка дает самые младшие адреса в одном банке с самыми старшими адресами в другом. Параллельная организация накладывает строгие адресные ограничения на хранимые данные и поэтому будут необходимы такие средства манипулиро- вания данными, как выравнивание сети или межпроцессорная связь. Память с расслоением имеет преимущество при последовательной органи- зации, поскольку при выборке последовательности несоприКасающихся яче- ек данных может использоваться полная пропускная способность памяти при условии отсутствия конфликтов памяти. Мы говорили, что, банковская па- мять является критической, если р = С/т, и в этом случае данные, которые разделяются любым кратным числом любых коэффициентов, кратных р, вызовут конфликт. Если р > С/т, мы говорим, что это избыточная банков- ская память. Такая ситуация помогает избежать конфликты, так как они бу- дут происходить в данными, разделенными коэффициентами, кратными р, которые больше или равны рт/С. Кроме того, в случае использования боль- шого простого числа банков памяти можно минимизировать конфликты бан- ков. Конфликты тогда происходят с данными, разделяемыми коэффициента- ми, кратными этому большому простому числу. Недостатком памяти с рас- слоением является то, что она подвергается штрафу в виде времени запуска для операции выборки. Стоимость памяти и время запуска определяют прак- тические пределы на число банков памяти с расслоением для любой системы. В табл. 6.5 сравниваются краткие характеристики структур памяти ком- пьютеров, описанных в предыдущих разделах. Чтобы охарактеризовать за- 352
поминающую систему, мы ввели йонятие скорости обмена с памятью т*, которая представляет собой максимальную асимптотическую скорость обме- на с памятью. Единица измерения задается числом бит в секунду. Эта величи- на тесно связана с величиной гх (см. подразд. 1.3.3), и в следующем разделе мы описываем параметр, который увязывает эти две величины и дает меру сбалансированности определенной системы. Таблица 6.5. Краткие характеристики структур памяти компьютеров, описанных в гл. 2 и 3 Наименование параметра Тип компьютера CRAY-1 CYBER 205 АР-120В DAP BSP Цикл памяти, нс Уровень параллелиз- 50 80 333а 200 160 ма, бит 64 512 38 4096 768 Банки памяти с расслое- 16(L)6 8(L) 2(L) 0 0 нием 1 - 4 (Н) 1 -8(H) Время запуска (циклы памяти) Скорость обмена, Ь^, 2-3 ~10в 1г 0 2 Гбит/с 5,12я п • 25,6е 0,228 20,5 4,8 указывает расслоение высокого Вариант с быстрой памятью (медленная — S00 нс) . (L) указывает расслоение низкого порядка; (Н) порядка. в Трудно выделить время запуска памяти и арифметического конвейера. г Время запуска для адресации в пределах одной страницы емкостью 64 К/слов. д Из смежных ячеек памяти код выбирается за четыре интервала данной скорости. е п — число сконфигурированных банков высокого порядка. Из табл. 6.6 можно видеть, что процедура выборки из памяти с расслоени- ем очень похожа на конвейерную операцию, поскольку имеется время запус- Таблица 6.6. Характеристические параметры компьютеров, описанных в гл. 2 и 3 Наименование параметра Тип компьютера CRAY-1 CDC CYBER 205а FPS АР-120В ICLDAP Burroughs BSP «1/2 10-20 100- 200 2-3 2048 >8б г Мфлоп/с 160в 200в 12в 27г 50 т , Гбит/с 5,12 25,6 0,228 20,5 4,8 w, бит 64 64 38 32 48 М 4 I 4 1,3 1 а Два конвейера с памятью емкостью Ю6 слов. 6 Компьютер имеет характеристики конвейерной и матричной машины. в Только для триадических операций; для одноместных операций эта скорость умень- шается вдвое. г Сложение с плавающей точкой. 353
ка, после которого данные могут выбираться со скоростью одного слова за тактовый период. В параллельных запоминающих устройствах без расслое- ния, в которых выборка ряда слов производится в параллель, часто исполь- зуются коммутирующие сети для выравнивания данных. Эти сети могут быть конвейерными и иметь время запуска, присущее таким сетям. Именно это обусловливает время запуска в структуре памяти компьютера. 6.2.3. Выборка данных и выравнивание Как мы видели, часто необходимо применять параллелизм при организа- ции памяти с целью достижения ее приемлемой пропускной способности. Од- нако, как только начинается использование параллелизма в структурах памя- ти, сразу же происходит расчленение памяти и ограничивается доступ. Ограничения, накладываемые при выборке, можно наблюдать и в обыч- ных компьютерах, где память построена главным образом по пословному принципу. Это иллюстрируется на рис. 6.15, а для памяти емкостью w слов и длиною каждого слова Ь. Выборка ограничивается набором из b разрядов, который составляет слово. Никакой другой набор из b разрядов не может быть выбран в параллель. Однако эта ситуация не является слишком ограни- чивающей, поскольку в целом данные организованы пословно. Хотя можно производить выборку и обработку двоичных данных в виде коротких слов ( < b бит), но это уже неэффективно. Но в этой неэффективной обработке имеются все же исключения, которые можно найти в компьютерах, предназначенных для эффективной обработки символьной информации. Здесь многие символы упаковываются в слово, за- писываются и обрабатываются параллельно. Хотя и существует ограничение выборки, оно, как правило, не столь очевидно. Параллельно риогут выбирать- ся только последовательно записанные символы, но тогда структуры сим- вольных данных являются, как правило, линейными (поперечные слова ис- ключены) . Поэтому здесь обычно ни с какими проблемами не сталкиваются. Для числовой обработки, где применяется пословный параллелизм, ситуа- ция несколько другая. На рис. 6.15, б показана несколько отличная структу- ра памяти, в которой для улучшения скорости обмена с памятью выборка s Рис. 6.15. Различные структуры (w X 6)-разрядной памяти: а — пословно-секционная; б — суперсловно-секционная; в — разрядно-секционная s разрядов 354
полных слов осуществляется параллельно. Разрядная часть s*b часто называ- ется суперсловом. Такая структура имеется в машине CDC STAR 100 и ком- пьютерах серии CYBER 200, а также в пословно-ориентированных процессор- ных матрицах. Такая организация позволяет осуществлять выборку последо- вательно записанных слов с максимальной скоростью обмена. Однако струк- туры данных в цифровых вычислениях не являются, как правило, линейны- ми; многомерные структуры возникают в сеточных и матричных задачах. Ответ на проблему ограничения выборки лежит в предоставлении некото- рой аппаратной поддержки для манипулирования структурами данных. На- пример, в машине CDC CYBER 205 предоставляются аппаратные команды, которые реализуют наиболее общее преобразование данных, произвольный сбор/рассылку. For i = 1,... ,N В(Г(0)=А(0 end Однако эта операция может быть выполнена с одной пятой максимальной пропускной способности. В пословно-ориентированных процессорных матрицах подход, принятый в целях избежания ограничений при выборке, как правило, отличен. В целом, обеспечение осуществляется таким образом, что адрес, который соответству- ет каждому банку памяти, может быть установлен индивидуально. Поэтому можно производить выборку из неламинарных секций памяти. Вследствие того, что слова выбираются в параллель, обработка также производится в параллель; могут потребоваться перестановки выбранных суперслов. По этой причине предусматриваются коммутирующие сети, которые произво- дят выравнивание данных. Если сеть будет полностью соединительной (см. разд. 3.2), то выборка будет ограничиваться только конфликтами на уровне банков. Хороший пример такого подхода можно обнаружить в машине BSP. Однако величина s, как будет видно позднее, ограничена. Различные структуры, которые обычно имеют разные идеологии в выбор- ке и выравнивании, можно обнаружить в разрядно-секционных параллель- ных компьютерах. Здесь выбранная секция памяти состоит из х разрядов и содержит только по одному разряду от каждого слова. Как правило, х очень велико и измеряется в тысячах. Разряды, формирующие слово, выбираются последовательно (рис. 6.15, в). Примером такого подхода являются машина DAP фирмы ICL (см. разд. 3.3) и машина МРР фирмы Goodyear Aerospace (см. разд. 6.3). Эта структура ортогональна той, которая показана на рис. 6.15, а, или может быть аналогичной ей при условии х = w. Вследствие того, что х существенно больше, сеть выравнивания или маршрутизации, имеющая- ся в таких структурах, в целом весьма проста, и многие маршруты в такой сети необходимы просто для выполнения большинства перестановок данных. Чтобы рассмотреть эффективность организации памяти и ее влияние на об- щую производительность системы, мы ввели параметр д, с помощью которого измеряется ухудшение параметров памяти в зависимости от производитель- ности. Для машин с возможностью полной выборки мы характеризуем этот параметр как отношение скорости обработки к скоростиобмена с памятью: 355
(6.6) и = 2wr Im , где г °° измеряется числом операций в секунду над поразрядными словами, а — числом бит в секунду. Множитель 2 является в какой-то мере произ- вольным и представляет число обращений к памяти за одну операцию. Ниже указывается число обращений, необходимых для различных операций типа память — память, например, два требуются для одноместных и триадических операций, что, следовательно, дает справедливое усреднение. Одноместная операция...........................................2 обращения Диадическая ”...............................................3 Триадическая ”...............................................2 Тетрадная ”..............................................1,67 ” Пентадная ”...............................................1,5 ” Для хорошо сбалансированной системы параметр д < 1. Если д > 1, то го- ворят, что компьютер имеет ограниченную память, и максимальная произво- дительность, по всей вероятности, будет уменьшена в д раз. В системах, которые не обладают возможностями полной выборки, ско- рость обмена с памятью будет ограничиваться средствами манипулирования данными. Например, на машине CYBER 205 рассылка и сбор выполняются с использованием 1/5 скорости обмена с памятью, что приводит к увеличению д в 5 раз. На процессорных матрицах с одноуровневыми сетями обычно тре- буется много итераций для определения правильной перестановки данных (см. подразд. 3.2.4). Поэтому скорость обмена с памятью будет ограничи- ваться структурой и быстродействием коммутирующей сети. В подразд. 3.2.5 мы установили значение максимального расстояния сети, D .. . Теперь, если мы воспользуемся им для определения среднего расстоя- ния; которое должен пройти один операнд, мы получим модифицированный параметр: М = 2D(k)wr°°lm°°- (6-7) Здесь т°° представляет собой пропускную способность коммутирующей се- ти, которая может или не может быть такой же, как у памяти. В табл. 6.6 дается перечень уже рассмотренных важных параметров для компьютеров, описанных в предыдущих главах; воспользовавшись уравне- нием (6.6) или (6.7), где это лучше подходит, мы дополнили этот список па- раметром памяти. Можно видеть, что компьютеры CYBER 205, DAP и BSP являются хорошо сбалансированными машинами с точки зрения выборки из памяти для пре- дусмотренной проектом скорости обработки. Предполагаем, что производи- тельность этих машин не должна существенно ухудшиться даже при исполь- зовании языков высокого уровня. Машины CRAY-1 и АР-120В имеют коэф- фициент д = 4. Чтобы быть справедливыми, следует указать, что обе машины имеют регистрюриентированные команды (в отличие от машины CYBER 205 и BSP) и в них предусмотрены векторные регистры. Однако для поддержа- ния разумной доли максимальной производительности необходимы прием- лемые алгоритмы и ручная оптимизация. Следует отметить, что число, указанное для машины CYBER 205, приво- дится для сопрягающихся слов в памяти. В зависимости от алгоритма при 356
манипулировании данными могут возникать издержки, которые приведут к увеличению д до 5. Скорость гх на компьютере DAP также может варьиро- ваться в зависимости от приложений (см. подразд. 3.3.6). Например, для 32-разрядного Целочисленного сложения г = 186 млн./с, которое дает д «9. В обоих случаях именно издержки при манипулировании данными долж- ны быть оптимизированы, чтобы обеспечить существенную долю максималь- ного быстродействия. Вопросы манипулирования данными на DAP-подобных матрицах подробно освещаются в трудах К. Джессхоупа [126 — 128], а на машине CYBER 205 - в труде Дж. Кассиса [134]. 6.2.4. Масштабирование параллелизма Мы уже обсуждали некоторые проблемы, связанные с параллельными ком- пьютерами и быстрой технологией; здесь мы хотим обратить внимание на проблемы, относящиеся к масштабированию параллелизма. Технология не предусматривает увеличения мощности вычислений на порядок, которое мы обычно ожидаем примерно через каждые пять лет. Уровни интеграции все время будут увеличиваться, и это в свою очередь приведет к более дешевым и, вероятно, более специализированным системам, рассмотрению которых посвящен подразд. 6.2.5. Здесь мы затронем вопросы масштабирования па- раллелизма в архитектурах, подобных тем, которые рассматривались в гл. 2 и 3. Например, уже изготавливаются матрицы из 4000 процессоров; но дадут ли 40 000-процессорные матрицы десятикратное увеличение вычислительной мощности? Кроме того, в конвейерных компьютерах применяется уже мно- жество конвейеров с целью увеличения производительности; может ли эта тенденция продолжаться бесконечно? Вероятно, первый вопрос, который следует задать при обсуждении, таков: может ли большой уровень параллелизма эффективно использоваться на за- дачах пользователей. Для компьютеров с малым значением п (CRAY-1 и BSP) проблем с использованием дополнительного параллелизма не существу- ет, так как уже эффективно используются другие машины с большими уров- нями параллелизма. Это означает, что такие архитектуры не пригодны для масштабирования (будет рассмотрено позже). Для компьютеров с большим значением «ip случай с использованием дополнительного параллелизма не так очевиден, поскольку большая часть проблемного параллелизма уже экс- плуатируется. Важный вопрос, который все же следует рассмотреть: зачем необходимо увеличивать вычислительную мощность? Она, как правило, не- обходима для более сложных или более совершенных вычислительных моде- лей, которые в целом приводят к увеличению степени параллелизма задачи. Например, в сеточных задачах мы можем перейти от двухмерного к трехмер- ному представлению проблемы; в качестве альтернативы можно увеличить число узлов сетки в каждой размерности. В обоих случаях, если методы ре- шения будут параллельными, больше потенциального параллелизма будет вовлечено для решения этой проблемы. Поэтому в приложениях, для реше- ния которых уже применяются компьютеры с высокой степенью параллелиз- ма, большая вычислительная мощность и больший уровень параллелизма мо- гут совмещаться. 357
Сейчас рассмотрим влияние масштабирования параллелизма на характери- стики производительности некоторых типовых архитектур. Для этого вос- пользуемся уже описанными параметрами, характеризующими параллельные компьютеры: г^, т^, иц (см. подразд. 1.3.2 и 6.2.3). Мы учитываем от- клонения в этих параметрах при масштабировании параллелизма по коэффи- циенту К ( > 1). Предполагаем, что размер памяти также масштабируется с помощью коэффициента К, поскольку любое увеличение вычислительной мощности должно соответствовать увеличению размера памяти. Кроме того, мы предполагаем отсутствие усовершенствований в технологии. Вначале рассмотрим параметр Пц2, поскольку, по определению, он будет масштабным совместно с коэффициентом К. Это вполне очевидно в матрице процессоров, так как представляет собой число процессорных элемен- тов. Ситуация становится не совсем ясной, когда Пц2 измеряется с момента запуска или полным временем конвейера. Однако, как было показано в подразд. 2.3.6 [см. (2.22) и (2.23) ], масштабирование числа конвейеров по К также масштабирует по К параметры и п1/2. В любом компьютере гх будет линейно увеличиваться с изменением К только при том допущении, что все остальные параметры остаются постоян- ными. Однако для определенной технологии с увеличением К будут возра- стать издержки связи. Так, если мы предположим, что гх изменяется обрат- но пропорционально т, времени тактового цикла, и что доля 8 в г является допустимой для глобальной связи, то можем установить масштабирование для гх. Глобальная связь в идеальном случае будет изменяться по закону К1'3, а в наихудшем — линейно с изменением К. Поэтому предполагаем из- менение по К1'2, что не противоречит случаю с планарными соединениями. Следовательно, изменение т от К задается формулой: т' = т(1 -8 + 8К1'2). (6.8) Отклонение гж в зависимости от Л* определяется по формуле: 1+5 (Kl/2 - 1) ’ (6'9) Для К = 10 и 5 =0,3 масштабирование производительности будет осуще- ствляться с коэффициентом 6 [из (6.9) ], хотя при К < 10 это не является неприемлемым. Следует учитывать, что эффекты являются совокупными, и для К = 10, 5 = 0,3 увеличение производительности составит менее 30. Следо- вательно, как правило, крупномасштабное увеличение степени параллелизма дает возможность извлечь пользу из изменений в архитектуре. Одним таким примером является декомпозиция управления в иерархической структуре (см. подразд. 6.2.1). Если рассмотрим скорость обмена с памятью то обнаружим, что мас- штабирование сильно зависит от архитектуры. В матрицах процессоров оно в конечном итоге будет ограничиваться соединительной сетью. В машине BSP, например, применяются полные координатные переключатели, и мы предполагаем, что в скором времени они достигнут своего критического ресурса. Стоимость сети будет увеличиваться в К2, поскольку будет увеличи- 358
ваться физический размер переключателя. Следовательно, если мы восполь- зуемся аргументом, аналогичным тому, который использовался для гх, то получим следующую зависимость для : / ixtrt ТП —----------22---- “ l + 8(/C—1)' (6.10) Здесь 8 представляет собой часть времени цикла переключения, допустимого для глобальной связи, которая может быть относительно большой. Можно видеть, что если переключатель и не является ограничивающим фактором для скорости обмена с памятью, он вскоре станет им, так как предельное увеличение скорости обмена определяется значением 8-1. Кроме того, сто- имость такого переключателя скоро станет непомерно высокой. Альтернативой полному координатному переключателю является много- уровневая полная соединительная сеть (см. подразд. 3.2.6). Здесь стоимость и размер сети будут изменяться в зависимости от значения Alog2/6 и до того момента, когда разные уровни переключателей не будут объединены с ис- пользованием конвейерных методов, задержка в сети будет увеличиваться с увеличением log2 А". Это обеспечивает масштабирование пропускной способ- ности от tflog^. Однако, если допущение сделано и для глобальной связи, получаем: ,_______________________________ °° log2/f[l+i8(/f1/2log2/f-1)] • ( } Однако еще не было случая использования многоуровневых сетей в кон- струкциях процессорных матриц. Все же в двух последних проектах такая возможность исследовалась [37, 71]. Последнее проектное исследование да- ло очень детальную оценку стоимости и быстродействия 1024-узловой с 20- разрядной шириной полной соединительной сети [69]. Стоимость сети, в ос- нове которой лежала субнаносекундная ЭСЛ-технология с последовательны- ми 20-разрядными полями 80-разрядного слова, составляла примерно 1 - 2 млн. дол. Даже при конвейерной обработке задержка при передаче 80-раз- рядного слова в сети оценивалась в 200 — 300 нс. В заключение рассмотрим фиксированные одноуровневые сети, такие как сеть типа ”к ближнему соседу”. Ее можно масштабировать, пока поддержи- вается фиксированная пропускная способность тх, поскольку связь локаль- ная. Однако, если мы будем учитывать эффективную пропускную способ- ность, используемую для расчета д в подразд. 6.2.3, то мы должны также при- нять во внимание расстояние в сети. В подразд. 3.2.5 мы вывели выражение для максимального расстояния в сети типа ”к ближайшему соседу”: = *<2/2, где к — размерность переключателя, a Q.— число узлов в одной размерности. Так, для эффективной пропускной способности (те), характеризуемой как , мы можем определить более приемлемое масштабирование ско- рости обмена с памятью по К: т'е= KmJKl/k. (6.12) В матрицах процессоров, таких как DAP, которые имеют двумерные се- ти типа ”к ближайшему соседу”, масштабирование более предпочтительно, 359
чем там, где используются полные соединительные сети. Однако это масшта- бирование все же менее привлекательно, чем изменение, которое задается длягте в уравнении (6.9). Оно характеризует общее масштабирование: I А*1 и. М= l+SfK1^- 1) • (6ЛЗ) i Имея в виду этот результат, вновь убеждаемся в важности связи в проекте процессорных матриц. Одноуровневые коммутационные сети типа тасовки были предложены для минимизации издержек связи в проекте процессорных матриц. Хотя эти сети и приводят к сокращению концептуальных расстояний в сети, это происходит за счет физических соединений. Поэтому глобальная связь вызо- вет дополнительные издержки при изменении масштаба этих сетей. Хотя ms масштабируется только как обратный логарифм от К для определенного тх, значение будет изменяться в масштабе таким же образом, что и гт> по- скольку подразумевается глобальная связь. Тогда общее масштабирование для коммутирующей сети типа тасовки задается уравнением: » __________Кт_е__________ е log2/C[l +6(К-1/2 - 1)] • <6-14) Опять же это менее приемлемо, чем изменение , а масштабирование д ха- рактеризуется, как д' =Mlog27f. (6.15) В процессорных матрицах, независимо от проекта, изменение масштабов параллелизма приводит к проблеме глобальной связи. Сейчас, если мы начнем рассматривать конвейерные архитектуры, то обна- ружим очень схожие результаты. Дублирование конвейеров либо в виде универсальных устройств, либо в виде специальных устройств обеспечивает масштабирование для гх в соответствии с уравнением (6.9). Тогда как же масштабируется пропускная способность памяти? В машине CYBER 205 вы- борка ограничивается векторами, элементы которых хранятся в смежных ячейках. Вследствие этого простое изменение масштабов параллелизма памя- ти опять приведет к масштабированию пропускной способности памяти со- гласно уравнению (6.9). Однако при структуре памяти, которая применяется в машине CRAY-1 и обеспечивает возможность неограниченного доступа (кон- фликты на уровне банков памяти исключены), масштабирование представ- ляется чем-то более запутанным. Для изменения масштаба скорости обмена с памятью следует промасшта- бировать по К число фазируемых банков. Это вводит, кроме задержек гло- бальной связи, еще дополнительные издержки в логическое устройство выбо- ра банков и в адресацию. В результате логическое устройство выбора банков работает подобно коммутирующей сети в матрице процессоров. Мы отмеча- ли в подразд. 6.2.3, что компьютер CRAY-1 является машиной с ограниченной скоростью обмена с памятью. Поэтому любое увеличение уровня параллелиз- ма без реорганизации памяти может только обострить эту ситуацию. Все упомянутые в данном подразделе зависимости масштабирования не следует рассматривать как нечто абсолютное для определенного компьютера, поскольку всегда будут присутствовать слабые и критические места в любом 360
проекте. Однако они все-таки указывают на тенденции и области, которые, вероятно, будут становиться критическими по мере увеличения уровня па- раллелизма. Во всех описанных архитектурах мы видели, что глобальная связь, вероятно, станет одной из главных проблем в любом проекте будуще- го суперкомпьютера. 6.2.5. Другие подходы Мы обсудим вопросы изменения масштабов параллелизма в типовых ар- хитектурах существующих вычислительных машин. Однако последние техно- логические достижения, в частности в СБ ИС-технологии, делают привлека- тельными реализацию новых архитектур. Некоторые предложенные к рас- смотрению проекты идут по пути смягчения проблемы глобальной связи. Мы преднамеренно не конкретизируем это в виду того, что в приложениях, где необходима глобальная связь данных, не дается четкого решения этой проблемы. К таким приложениям относятся все сеточные и матричные задачи. Одним из методов, использующих параллелизм без жесткой структуры управления, является метод вычисления на основе потока данных [234]. Ар- хитектура Неймана или обычного компьютера с хранимой программой бази- руется на управляющем потоке, где команды выполняются (по возможно- сти параллельно) под действием потока управления, содержащегося в про- грамме. В компьютерах на основе потока данных поток данных используется для инициирования выполнения команды. При этом команда будет ставиться на очередь для выполнения только после того, как все операнды этой коман- ды ’’прибыли” и активизировали ее. Результат работы команды, в свою оче- редь, будет послан вперед и ’’ликвидирован” другими командами. Можно ви- деть, что такой подход исключает потребность в глобальном управлении и синхронизации. Кроме того, при таком подходе достаточно точно обрабаты- ваются зависимости данных, так как команды не могут выполняться до тех пор, пока их операнды не станут доступными. Этот общий подход на основе потока данных пропагандировался при по- строении больших регулярных матриц внутренне связанных процессоров. В этом случае поступление данных от соседнего процессора интерпретируется как изменение состояния своей среды, что приводит к инициированию некото- рых действий. Такие системы называются самосинхронизирующимися. Этот метод описывается более подробно в работе [158]. В работах [77, 140] пропа- гандируется такой метод в случае использования СБИС-технологии. Г. Кунг называет такие матрицы процессоров систолическими, поскольку они напо- минают работу сердца, которое перекачивает символы данных во внутренне связанной системе процессорных узлов. Процессоры в таких матрицах тре- буются очень простые, выполняющие конечный ряд изменений состояния в зависимости только от их непосредственного окружения. Поэтому К. Фостер и Г. Кунг предвидят создание распределенной системы из кристаллов высо- коспециализированных СБ ИС-матриц, соединенных некоей сетевой или шин- ной структурой. Такая разновидность подхода иллюстрируется на рис. 6.16, где специализированные устройства могут быть, например, устройствами согласования отображений, процессорами БПФ, матричными инверторами и т. д. Такая система чрезвычайно эффективна в стоимостном отношении, но, 12 Зак. 1799 361
Традиционная система Специализированные СБИС-процессорные матрицы Рис. 6.16. Изображение специализированных СБИС-матриц, объединенных посредством шинной или сетевой системы как правило, имеет ограниченные приложения. Она обычно подходит для среды с относительно больший числом малых и разных заданий, но ей было бы очень трудно координировать и обрабатывать одиночные большие прило- жения, которые имеются, например, в метеорологии. Для таких приложений нужна сконцентрированная мощность обработки суперкомпьютера. 6.3. БУДУЩИЕ СУПЕРКОМПЬЮТЕРЫ Ж В этом разделе рассмотрим две исследовательские работы и попытаемся В’ понять, как три фирмы-изготовителя удовлетворяют требования проектиро- ДМ вания суперкомпьютера в 80-х гг. Одна проектная исследовательская рабо- та началась в 1975 г. в Научно-исследовательском центре Эймса (NASA) с изучения вычислительных требований для широкомасштабного моделирова- аК| ния аэродинамических структур. Конечным результатом этой работы должно ИВ’ явиться создание суперкомпьютера, который предполагается использовать в fb, качестве основного инструмента для проектирования аэрокосмического ЦЕ транспорта. Он должен называться средством для цифрового аэродинами- И ческого моделирования (NASF). Исследования вычислительных требований базировались на решении урав- нений вязкости Навье — Стокса, описывающих внутреннее движение в жид- К кости в трех размерностях. Предсказывалось, что для вычислений потребует- К ся база данных емкостью 40 Мелов и скорость обработки 1000 Мфлоп/с. Ин- К/ тересно отметить, что эта скорость вычислений была одной из целей проекта № машины ILLIAC IV. Были также высказаны предположения, что имеющееся |№ сейчас аппаратное обеспечение не в состоянии обеспечить такую производи- НМ тельность к началу 80-х гг. Поэтому центр NASA дал подряд на проведение Ж работ первой стадии контракта, которая составляет разработку архитектуры. Ж Эти контракты, предназначенные для изучения возможности конструирова- S ния такого суперкомпьютера к середине 80-х гг., были заключены с фирмами Л Burroughs, Control Data. Результаты этих двух исследований подробно при- водятся в двух отчетах подрядчиков [37, 42]; предлагаемые архитектуры 4 машины рассматриваются ниже. /4 6.3.1. Проект NASF фирмы CDC । Как и ожидалось, исследование проекта фирмы CDC для NASF представ- f ляет собой разновидность серии CYBER 200. NASF-секция для переработки 362 J
большого объема числовых данных содержит пять конвейерных векторных устройств (четыре плюс одно запасное). Одиночный конвейер, показанный на рис. 6.17, подобно машинам серии CYBER 200 может выдавать два 32-раз- рядных результата или один 64-разрядный. Можно видеть, что большинство узлов в конвейере продублировано: два первичных сумматора, две схемы пе- ремножения, две схемы образования дополнения и два конечных суммато- ра. Это дублирование преследует две цели. Если должна выполняться простая операция (например, перемножение или сложение векторов), дублирование обеспечивает полную проверку дублирующей аппаратуры. Помимо таких операций могут выполняться более сложные, так как один результат может быть сформирован от одной из трех операций с плавающей точкой (каждый конвейер подпитывается четырьмя входными векторными потоками). В лю- бой момент, когда дублирующее устройство не используется независимыми операндами, оно контролирует работу своего партнера. При таком варианте работы в случае обнаружения ошибки автоматически включается пятое кон- вейерное устройство, и дефектное устройство освобождается для оператив- ного ремонта. Конвейеры синхронизируются с 8-нс периодом, следовательно, четыре 64-разрядных результата выдаются каждые 8 нс. Это обеспечивает основную производительность 500 Мфлоп/с, которая может быть удвоена для 32-раз- рядных слов. Однако, поскольку каждый результат может формировать- ся от одной из трех операций с плавающей точкой, максимальная произ- водительность достигает 1,5 Гфлоп/с для 64-разрядных результатов и 3 х х 109 Гфлоп/с для 32-разрядных результатов. На рис. 6.18 приводится общая архитектура CDC NASF с указанием шири- ны всех магистралей. Так же как и в машине CYBER 205, здесь имеется от- дельное скалярное устройство. Однако схожесть компьютера CYBER 205 с CDC NASF, предназначенного для обработки баз данных емкостью до 40 Мелов, на этом заканчивается. В заключение, укажем, что имеющаяся здесь память делится на три уровня: сверхбыстродействующая ЭСЛ-память емкостью до 8 Мелов, промежуточная память емкостью до 32 Мелов и ПЗС-память после- довательного доступа емкостью до 128 Мелов. Основным дополнением к архитектуре CYBER здесь являются устройства преобразования памяти. Они представляют собой эффективные устройства выравнивания данных, которые установлены, чтобы ’’перехитрить” ограни- ченный доступ к векторам, что присуще машинам ряда CYBER 200. Векторы, элементы которых размещаются в несопрягающихся ячейках памяти, можно сделать сопрягающимися одним из способов: при загрузке из промежуточ- ной в основную память, из основной памяти в основную или из промежуточ- ной в промежуточную память. Легко видеть, что архитектура стала еще более сложной. Практически не- обходимы ресурсы в виде машины серии CYBER 200, с помощью которой можно осуществить проектирование и проверку проектов NASF. 12* 363
Рис. 6.17. Одиночный конвейер проекта NASF фирмы CDC [211] Вспомогатель- ная память 64 Мслова Возможен вари- ант с 32 или 128 Мсловами gg 64 ф ф Блок обмена SW 16 Г 256 Внутренняя память 16 Мелов RW4 -—(256 RW3><, -—{256. Возможен вариант с 32 Мсловами IM §)М <=>RW3 256)—• Состояние занятости Блок управления потоком М2 М1 Устройство основного отображения Устройство обмена с памятью -i—<512 Устройство внутреннего отображения MR 2^ ---<512 Приведение в готовность Скалярное устройство VR1 512 VR2 512 VR1 512 Устройство в вода-вы вода 10 Данные техобслуживания и управления в / от всех устройств MR3 IU Основная память 8 Мелов ММ VS SR1 5 векторных устройств Устройство векторного потока 520 SR2 520 320 320 320 AW2 320 AW1 SR3 SR4 Каналы последовательных данных максимально 56 I Приведение в готовность Рис. 6.18. Общая архитектура проекта фирмы CDC, отражающая основные магистрали данныхи их ширину [211]
6.3.2. Проект NASF фирмы Burroughs Фирма Burroughs в своем проекте NASF поступает точно так же, как фир- ма CDC, — расширяет свое производство, и NASF представляет собой процес- сорную матрицу, в которой многие черты заимствованы из проектов ILLIAC IV и BSP. Однако имеются два основных отличия, которые обусловлены проблемами связи. Проект NASF содержит матрицу из 512 процессоров с плавающей арифме- тикой и подобно BSP имеет простое число банков памяти — 521, которое яв- ляется следующим простым числом, большим 512. Чтобы воспользоваться такой конфигурацией памяти и процессоров для обеспечения бесконфликт- ного доступа, следует использовать полностью соединительную сеть. В маши- не BSP применены два координатных переключателя, однако стоимость коор- динатных переключателей, обеспечивающих подключение 512 процессоров к 521 банку памяти, была бы астрономической. Поэтому фирмы Burroughs была вынуждена рассмотреть альтернативу с многоуровневыми сетями, что явилось одним из основных ограничений в проекте NASF. В окончательном проекте [37] применяется пара омега-сетей, названных верхней и нижней [147]. В виду того, что имеется 521 банк памяти и что омега-сеть конфигури- руется по степени 2, каждая соединительная сеть имеет переключатель 1024 х х 1024. Поэтому каждый процессор соединяется с двумя портами в каждой сети. Первые 512 банков памяти подключаются к портам сети с помощью разрядно-инверсного адреса, оставшиеся банки памяти распределяются про- извольно среди неиспользуемых портов. Как мы указывали в предыдущем разделе, управление процессорными матрицами при работе в синхронном режиме может вызвать серьезные про- блемы в связи. Чтобы избежать этого, фирма Burroughs отказалась от пре- дыдущих проектов матриц процессоров. Каждый процессор будет иметь свой собственный блок команд и выполнять свою собственную программу асинхронно. Программа в каждом процессоре, вероятно, будет одной и той же, но будет выполняться независимо, допуская зависимые переходы данных в соответствии с потоком управления. Вследствие этого управление сетью также должно быть асинхронным. Омега-сеть может быть самопоисковой. Например, пакеты адресованных данных могут располагаться в одном узле, а затем продвигаться к пункту их назначения. Это предусматривает наличие очередей в межсекциях сети с соответствующей стратегией продвижения данных. Приоритеты доступа к высшей сети противоположны приоритетам доступа к низшей, и если доступ не может быть обеспечен к одной из них, то его автоматически пытаются осу- ществить к другой. Время цикла сети составляет 120 нс, в три раза больше, чем 40-нс цикл каждого процессора. Структурная схема проекта NASF дается на рис. 6.19, а на рис. 6.20 приво- дится схема одиночного процессора. Память также разделена иерархически. Каждый процессор имеет локальную память емкостью 16К, что дает общую емкость памяти 8 • 106 48-разрядных слов. 521 банк памяти называют рас- ширяемой памятью (РП). В этих банках применяются МОП ОЗУ общей ем- костью 34 Мелов. И последнее, так же как в машине BSP, здесь имеется па- мять базы данных на ПЗС, которую можно сконфигурировать до 256 Мелов. 366
2,2 -109 бит/с Память базы данных В файловую память ПБД контроллер РПО РП1 Расширяемая память РП52о 12,8 1011 бит/с (пропускная способность кабеля) В / от процессорной системы обслуживания (SPS) Процессор Процессор 2 CN буфер Соединительная сеть 2,8- 10й бит/с Процессор 511 Координатор Диагностический контроллер В / от процессорной системы обслуживания Устройство Е Память Рис. 6.19. Общая архитектура проекта NASF фирмы Burroughs, отражающая основные магистрали данных и ширину полосы [211] Аналогично проекту фирмы CDC фирма Burroughs смоделировала свою концепцию NASF и продемонстрировала возможность достижения целей проекта, предъявленных центром NASA. Основное, что было проиллюстриро- вано в обоих проектах, — это то, что выборка и выравнивание корректных векторных данных составляют главную проблему. Поскольку компьютеры приходится ’’проталкивать” через претенциозные барьеры производительно- сти, то эта проблема может быть только еще более усложнена. Вероятно, от- вет лежит в создании все более специализированных архитектур, где требуе- мая связь может быть оптимизирована как в логическом, так и физическом проекте. Чтобы подчеркнуть важность сложившейся ситуации, мы просим читателя подумать о выполнении простых процедур типа ”к ближайшему соседу” на компьютере NASF-проекта фирмы Burroughs. Одним таким примером явля- ется метод последовательной релаксации (см. подразд. 5.6.1), где каждая операция требует синхронизированной коммутации данных в соединительной сети. Очевидно, это была не единственная программа, которая рассматрива- лась на стадии разработки проекта NASF фирмой Burroughs. 367
В / от координатора 11 ' через платы нагрузочных Память процессора множителей по выходу 368
6.3.3. Компьютер МРР фирмы Goodyear Aerospace Мощный параллельный процессор (МРР — massively parallel processor) фирмы Goodyear Aerospace проектируется в ответ на другую программу NASA. Требованием является создание компьютера для обработки изображе- ний, получаемых со спутника LANDSAT-D, предпочтительно в реальном мас- штабе времени. Этот спутник имеет пропускную способность передачи дан- ных более 106 пикселей (элементов изображений) в секунду и в зависимо- сти от необходимой обработки для каждого пикселя требуется 100 — 10 000 операций. Поэтому требованием к скорости обработки является обеспечение быстродействия свыше 1000 миллионов операций в секунду. Вследствие того, что информация пикселей состоит главным образом из коротких целых чисел (например, 8-разрядное слово), выбор архитектуры вполне очевиден — DAP-подобная структура с параллельной обработкой дан- ных разрядно-секционным методом. Фирма Goodyear Aerospace фактически выбрала именно этот подход, но применила большую матрицу (128 х 128) с незначительно более сложным одноразрядным процессором. На рис. 6.21 приводится общая архитектура системы МРР с указанием ос- новных компонентов и внутренних соединений. Основное отличие МРР от DAP заключается в вводе и выводе данных из матрицы. Ввод-вывод в DAP осуществляется с помощью суперструктуры в виде главной системы 2900. Рис. 6.21. Общая архитектура машины МРР фирмы Goodyear Aerospace (воспроизводит- ся с разрешения фирмы Goodyear Aerospace) 369
В МРР данные, поступающие либо от отдельной главной ЭВМ, либо от неко- его интерфейса ввода, проходят слева направо через столбцы матрицы. По- этому каждая строка работает как 128-разрядный сдвиговый регистр. В дополнение к межпроцессорным соединениям ввода-вывода следует указать, что каждый процессор также подключается к своим ближайшим со- седям посредством программируемых краевых соединений. Цепи соедине- ний данных с одиночным процессором иллюстрируется на рис. 6.22. Следует Данные в смежный ПЭ Рис. 6.22. Соединения, имеющиеся в одном процессорном элементе машины МРР фирмы Goodyear Aerospace (воспроизводится с разрешения фирмы Goodyear Aerospace) Рис. 6.23. Одиночный процессорный элемент машины МРР фирмы Goodyear Aerospace (воспроизводится с разрешения фирмы Goodyear Aerospace) 370
отметить, что в отличие от DAP в машине МРР отсутствуют средства вещания селективной строки или столбца. Вместо этого предусматривается средство общего вещания по логическому дереву ИЛИ, которое применено для сокра- щения объема общей информации, используемой для управления. На рис. 6.23 показана структурная схема одиночного процессора, где А, В, С, Р, G и S — одноразрядные регистры. Можно видеть, что главное разли- чие между ним и элементом (см. подразд. 3.3.2) заключается в наличии про- граммируемого сдвигового регистра. Он применяется для уменьшения вре- мени операции перемножения, выполняемой посредством операции сдвига и сложения. Процессорный элемент имеет время цикла 100 нс — половину то- го, что у машины DAP, но МРР может выполнять перемножение 32-разряд- ных чисел с плавающей точкой в 16 раз быстрее, чем DAP. Можно ожидать, что размеры матриц и тактовый период отличаются в 8 раз. Дополнительный коэффициент 2 возникает из оптимизации алгоритма и памяти с помощью сдвигового регистра. В табл. 6.7 приведены проектные значения производи- тельности компьютера МРР для различной разрядности. Легко видеть, что 8-разрядная арифметика вполне удовлетворяет проектным требованиям. Таблица 6.7. Скорость выполнения операций, гх (Моп/с), иа машине МРР фирмы Goodyear Aerospace при различной длине слов. А — матрица 128 X 128, S - скаляр. Операция А + А А *А $ *А С 8-разрядиымн целыми 6553 1861 2340 С 12-разрядиыми целыми 4428 910 1260 С 32-разрядиыми с плавающей точкой 430 216 373 Фирма Goodyear Aerospace предлагает для МРР СБИС-проект на базе КМОП-технологии. Примерно половина ПЭ логики потребуется для сдвиго- вого регистра, но даже в этом случае восемь ПЭ будет размещаться в одном 52-контактном кристалле СБИС. Память для четырех процессоров будет вы- полняться на одном кристалле емкостью 4 кбит, следовательно, для восьми ПЭ секций матрицы потребуется только три кристалла. Это следует сравни- вать с примерно пятью кристаллами на один ПЭ в первых производственных экземплярах DAP. Вследствие этого проект МРР должен обеспечить сверх- эффективную стоимость компьютера. Интересно посмотреть, как этот про- ект будет развиваться и станет ли он коммерчески жизнеспособным. Большой успех его и других параллельных компьютеров, конечно, будет зависеть от необходимости принятия параллелизма для обеспечения эффек- тивных высокопроизводительных вычислений. Мы надеемся, что эта книга развеяла некоторые мифы в отношении параллельных компьютеров и помо- гла читателю забыть укоренившиеся в течение трех десятилетий положения в пользу последовательного программирования и последовательных языков. 371
ПРИЛОЖЕНИЕ Ниже описан синтаксис структурной нотации для компьютерной архитектуры в нор- мальной форме Бэкуса, как это уже применялось в сообщении по Алголу 60 [14]. Угло- вые скобки ( < > ) разделяют металингвистические термины, а вертикальная черта ( | ) разграничивает варианты (читается как ИЛИ). Двойное двоеточие с равенством (: : =) следует читать как МОЖЕТ БЫТЬ. А.1. Смешанный тип < пустой > : := < цифра > : := 0|1121314|516|7|819 < строчная буква > : := a|b|c|d|e|f |g |h |i |j |k|1 |m|n|o|p|q|r |s|t |u|v |w|x|y |z | < конвейерный > : := = pl < пустой > < SI префикс > ; := K|M|C|T < пустой > < беззнаковое целое > : := < цифра > | < беззнаковое целое > < цифра > < показатель > : := < беззнаковое целое > | < пустой > | < строчная буква > < множитель > : : = < строчная буква > | < беззнаковое целое > < SI префикс > | < без- знаковое целое > • < беззнаковое целое > < коэффициент > : := < множитель > п0казатель> | < коэффициент > * < коэффи- циент > < комментарий > : := ( < любая последовательность символов >) I < пустой > < разделитель операторов > : := ; < оператор > : := < описание > | < описание магистрали > | < структура > Примеры: < пустой > ; := < цифра > : := 3; 9 < строчная буква > : := с; z < конвейерный > : := ; р < беззнаковое целое > : := 34; 128 < показатель > : := ; 2; s < множитель > : := п ; 16; 8G < коэффициент > : := п * т; 642 ;п * 128 * 32’ < комментарий > : := ; (биполярная ЭСЛ) А.2. Е устройства < Е символ > : := В |Ch |D|Е| F |IO|Р|U < Е идентификатор > : := < Е символ > < конвейерный > | < Е идентификатор > < цифра > < время операции в нс > : := < множитель > | < комментарий > < разрядная ширина операции > : := < множитель > | < разрядная ширина операции >, < множитель > | < комментарий > < Е устройство > : := < Е идентификатор >< вРемя операции в нс > < комен_ г < разрядная ширина операции > тарий > Примеры: < Е идентификатор > : := Е; F12; Вр46 < время операции в нс > : := t; (4 миллисекунды) < разрядная ширина операции > : := Ь; (4 байта) ; 12, 32 < Е устройство > : := Е; F12*°°(*) 372
А.З. М-устройства < М символ >::= М|О < М идентификатор > : := < М символ > < конвейерный > | < М идентификатор > < циф- ра > < время выборки в нс > : := < множитель > | < комментарий > < число слов > : := < множитель > * | < число слов > < число слов > | < комментарий > * < число разрядов в выбираемом слове > : := < множитель > | < комментарий > < размер памяти > : := < число слов >< число разрядов в выбираемом слове > | < комментарий > < М устройство > : := < М идентификатор > < разм^^амя™*1^ НС > < комментарий > Примеры: < М идентификатор > : := Мр; Ml; М2; М3; 016 < время выборки в нс > : := 100; (4 миллисекунды) < число слов > : := n *; (1, 2 или 4 Мбайт) < число разрядов в выбираемом слове > : := Ь; 32 < размер памяти > : := n* b; п * 32; ; п*; *32; 2К*8 *64 < М устройство > : := М; О16”»32; М2К ф8(2716 ППЗУ); М8ф64,64 Л.4. Компьютеры < символ управления > : : = l|lv |С|Cv < идентификатор управления > : := < символ управления >< конвейерный > | < иден- тификатор управления >< цифра > < время такта в нс > : := < множитель > | < комментарий > < число разрядов в команде > : := < множитель > | < число разрядов в команде >, < множитель > | < комментарий > < связность > : := < множитель > - пп | < комментарий > < тип управления > : := a|h|l|r| < комментарий > < управляемые элементы > : := [ < структура > ] < “®^С™Летия > । < пустой > < компьютер > : := < идентификатор управления > 5 в₽емя такта в нс > г т г < число разрядов в команде > < комментарий >< управляемые элементы > Примеры: < идентификатор управления >::=!; Ivp 3;Cv 12 < управляемые элементы >: := ; [64Р]; [Cl [64p], С2]; [lOFp - 4М] < связность > : := (двумерная шестиугольная сетка); с - пп; 2 — пп < тип управления > : := a; h; 1; г; ; < компьютер >: := Cl [642p]f-nn; Cl [16F X 17М] ; С4250 ; Ivp [lOFp - 4М], ; IvpJtaa А.5. Тракты данных < идентификатор магистрали > : := Н < беззнаковое целое > < комментарий > | < комментарий > < время на каждое слово в нс > : := < множитель > | < комментарий > < разрядность данных > : := < множитель > | < комментарий > < разрядность адреса > : := < множитель . < число трактов > : := < множитель > | < > | < комментарий > комментарий > 373
< размер тракта > : < число трактов > * { < разрядность данных > + < разрядность адреса > } I < число трактов > * < разрядность данных > | < разрядность данных > | < разрядность данных > + < разрядность адреса > < шина данных > : := < шина данных > < время на каждое слово в нс > < размер тракта > I < шина данных > - | - < время на каждое слово в нс > перекрестное соединение > : := х < размер тракта > | < перекрестное соединение > X | X < перекрестное соединение > < соединение > : := < шина данных > | < шина данных > < идентификатор магистра- ли > < шина данных > | < перекрестное соединение > | < перекрестное соедине- ние > < идентификатор магистрали > < перекрестное соединение > < отсутствие соединения > : := | < симплекс влево >::=<< соединение > < симплекс вправо > : := < соединение > > < дуплекс > : := < симплекс влево > > | < симплекс влево > , < симплекс вправо > < полудуплекс > : := < симплекс влево > / < симплекс вправо > < тракт данных > : := < соединение > | < симплекс влево > I < симплекс вправо > | < дуплекс > | < полудуплекс > | < отсутствие соединения > < описание магистрали > : := < идентификатор магистрали > = < структура > Примеры: < идентификатор магистрали > : := Н: НЗ (скрученная пара) < время на каждое слово в нс > : := t; 12.5; (1 мс) < разрядность данных > : := 64; п < разрядность адреса > : := 16; а < число трактов > : := 4; п < размер тракта > : := 4 * }б4 + 16 } ; 4 *64; 64; 64 + 16 100 < шина данных > : := -; -7—77—77- 4 *64 + 16 < перекрестное соединение > : := X ; XXX < соединение > : := -НЗ (скрученная пара)-; XX (сеть Бэняна) XX; - НЗ - < отсутствие соединения > : := | < симплекс влево >::=<------; < X X ; <-; <Х < симплекс вправо > : :=---->; X X >; - > ; X > 150 < дуплекс - - >; < - -- - > < полудуплекс >::=<-/->; <------------Н2-----/-----НЗ---------> < тракт данных > : := | ; - >;-; X < описание магистрали > : := НЗ = >,<-}/< 24 } А.6. Структуры < устройство > : := < Е устройство > | < М устройство > < компьютер > | < строчная буква > < основная > : = < устройство > | / структура}*) связность > । < (. J \ конвейерная структура > < конвейерная > < вспомогательная > : := < основная > | < коэффициент > < основная > | < коэффи- циент > < основная > | < пустой > 374
< структура > : := < вспомогательная > | < структура > < тракт данных > < вспомо- гательная > < параллельный перечень > : := < структура > | < параллельный перечень > , < струк- тура > < последовательный перечень > : := < структура > | < последовательный перечень > / < структура > < перечень > : := < параллельный перечень > | < последовательный перечень > < параллельная структура > : := [< перечень >} < связность > < описание > : := < вспомогательная > = < структура > Примеры: < устройство > : := Е; М8*64; С[64Р]; а < основная > : — {-E-M-ajp^ {-El Е2 } ; { Е1/Е2/ЕЗ }; IO < вспомогательная > : := 16 *322 Р < структура > : := -Е - М - а; {Е - {—Ml - М2 - , - -М3}- а; { 322 PJ 1-пп < параллельный перечень > : := I, Е, М < последовательный перечень > : := ЗЕ1/Е2/ЕЗ < параллельная структура > : := £ I, Е, М { ЗЕ1/Е2/ЕЗ } ; I -Е - , | М } < описание > : := ЗЕ1 = { Е(+), Е(*), Е(+) } ; Е2 = { F (*)/F (+)/В} ; С = I [64Р],2-™; Ml = {-М- , - - > } -М}^64
СПИСОК ЛИТЕРАТУРЫ Аббревиатура соответствует правилам Британского института стандар- тов (1975 г.), которые также являются стандартом Американского на- ционального института стандартов. Их придерживалась фирма INSPEC при подготовке Физических реферативных журналов, издаваемых Институтом инженеров-электриков, Лондон. 1. Abel N Е, Budnik Р Р, К иск D J, Muraoka Y, Northcote R S and Wilhelmson R В 1969 TRANQUIL: A language for an array processing computer AFIPS Conf. Proc. 34 57-75 2. ACM 1978 Special issue on computer architecture Commun. Assoc. Comput. Mach. 21 (1) 3. Agarwal R C and Burrus C S 1974 Fast convolution using Fermat number trans- forms with application to digital filtering IEEE Trans. Acoustics, Speech and Signal Processing ASSP-22 87-97 4- 1975 Number theoretic transforms to implement fast digital convolution Proc. IEEE 63 550-60 5. Amdahl G M, Blaauw G A and Brooks F P Jr 1964 Architecture of the IBM System/360 IBM J. Res. Dev. 8 87-101 6. Amini M and Hqckney R W 1979 Computer simulation of melting and glass formation in a potassium chloride microcrystal J. Non-Cryst. Solids 31 447-52 7. Anderson D W, Sparacio F J and Tomasulo R M 1967 The IBM System/360 Model 91: machine philosophy and instruction handling IBM J. Res. Dev. 11 8-24 8. Auerbach 1976a Auerbach Corporate EDP Library of Computer Technology Reports (18 volumes) (Pennsauken, NJ: Auerbach Publishers, Inc.) 9. ---- 1976b Cray Research Inc. CRAY-1 Auerbach Corporate EDP Library of' Computer Technology Reports (Pennsauken, NJ: Auerbach Publishers, Inc.) 10. Austin J H Jr 1979 The Burroughs Scientific Processor Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 1—31 11. Babbage C 1822 A note respecting the application of machinery to the calcula- tion of astronomical tables Mem. Astron. Soc. 1 309 12. 1864 Passages from the Life of a Philosopher (Longman, Green, Longman, Roberts and Green), reprinted 1979 (New York: Augustus M Kelly) 13. Babbage H P 1910 Babbage’s Analytical Engine Mon. Not. Roy. Astron. Soc. 70 517-26, 645 14. Backus J W, Bauer F L, Green J, Katz C, McCarthy J, Naur P, Perlis A J, Rutishauser H, Samelson K, Vauquois B, Wegstein J H, van Wijngaarden A and Woodger M 1960 Report on the algorithmic language ALGOL60 Numer. Math. 2 106-36 15. Barnes G H, Brown R M, Kato M, Kuck D J, Slotnick D L and Stokes R A 1968 The ILLIAC IV computer IEEE Trans. Comput. C-17 746—57 16. Batcher К E 1968 Sorting networks and their applications AFIPS Conf. Proc. 32 307-14 17. 1979 The STARAN Computer Infotech State of the Art Report: Super- computers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech 376
Inti. Ltd) 33-49 18. Bell C G and Newell A 1971 Computer Structures: Readings and Examples (New York: McGraw-Hill) 19 Benes V 1965 Mathematical Theory of Connecting Networks and Telephone Traffic (New York: Academic Press) 20 Berg R O, Schmitz H G and Nuspl S J 1972 PEPE — an overview of architecture, operation and implementation Proc. IEEE Natl. Electron. Conf. 27 312—7 21. Berger H H and Wiedman S К 1972 Merged-transistor-logic MTL — a low cost bipolar logic concept IEEE J. Solid St. Circuits SC-7 340—6 22. Bergland G D 1968 A fast Fourier transform algorithm for real-valued series Commun. Assoc. Comput. Mach. 11 703—10 23. Blackman R В and Tukey J W 1959 The Measurement of Power Spectra (New York: Dover Publications, Inc.) 24. Bloch E 1959 The engineering design of the STRETCH computer Proc. East. Joint Comp. Conf. (New York: Spartan Books) 48—58 25. Bracewell R 1965 The Fourier Transform and Its Applications (New York: McGraw-Hill) 26. Brigham E О 1974 The Fast Fourier Transform (Englewood Cliffs, NJ: Prentice- Hall) 27. British Standards Institution 1975 The abbreviation of titles of periodicals: part 2. Word-abbreviation listBr. Stand. Specif. BS4148, Part 2 28. Brownrigg D R К 1975 Computer modelling of spiral structure in galaxies PAD Thesis, University of Reading 29. Budnik P and Kuck D J 1971 The organisation and use of parallel memories IEEE Trans. Comput. C-20 1566-9 3O. Buneman О 1969 A compact non-iterative Poisson-solver Stanford University Institute for Plasma Research Report No 294 31. Burks A W, Goldstine H H and von Neumann J 1946 Preliminary discussion of the logical design of an electronic computing instrument in John von Neumann, Collected Works vol. 5 ed. A H Taub (Oxford: Pergamon) 35—79 32. Burroughs 1977a Burroughs scientific processor — file memory Burroughs Document 61391В 33.----- 1977b Burroughs scientific processor — overview, perspective, architecture Burroughs Document 613 91A 34.----- 1977c Burroughs scientific processor — fault tolerant features Burroughs Document 61391C 35. 1977d Burroughs scientific processor — control program Burroughs Document 61391D 36 ---- 1977e Burroughs scientific processor — implementation of FORTRAN Burroughs Document 61391E 37. 1979 Final report NASF feasibility study NASA Contractor Report NAS2-9897 38. Bustos, E, Lavers J D and Smith К C 1979 A parallel array of microprocessors — an alternative solution to diffusion problems COMPCON '79 (Fall) Digest 380—9 39. Buzbee В L, Golub G H and Neilson C W 1970 On direct methods for solving Poisson’s equations SIAM J. Numer. Anal. 7 627—56 40. Calahan D A and Ames W G 1979 Vector processors: models and applications IEEE Trans. Circuits and Systems CAS-26 715—26 41. CDC 1978 STAR FORTRAN language, version 2, reference manual CDC Publication 60386200 42,----- 1979 Final report feasibility study for NASF NASA Contractor Report 377
NAS2-9896 43. Cooley J W, Lewis PAW and Welch P D 1967 The fast Fourier transform algorithm and its applications IBM Research Paper RC-1743 (Yorktown Heights NY IBM Watson Research Center) 44. 1970 The fast Fourier transform algorithm: programming considera- tions in the calculation of sine, cosine and Laplace transforms J. Sound and Vibrations 12 315—37 45. Cooley J W and Tukey J W 1965 An algorithm for the machine calculation of complex Fourier series Math. Comput. 19 297—301 46. Cornell J A 1972 Parallel processing of ballistic missile defense radar data with PEPE COMPCON ’72 Digest 69-72 47. Crane В A, Gilmartin M J, Huttenhoff J H, Rux P T and Shively R R 1972 PEPE computer architecture COMPCON ’72 Digest 57—60 48. Crane В A and Githens J A 1965 Bulk processing in distributed logic memory IEEE Trans. Electron. Comput. EC-14 186—96 49. Cray 1976 CRAY-1 computer system, reference manual Cray Research Inc. Publication 2240004 50.----- 1980 CRAY-1 computer systems library reference manual Cray Research Inc. Publication SR-0014 51. Dahl О J, Dijkstra E W and Hoare CAR 1972 Structured Programming (New York: Academic) 52. Danielson G C and Lanczos C 1942 Some improvements in practical Fourier analysis and their application to x-ray scattering from liquids J. Franklin Inst. 233 365-80 and 435-52 53. Deb A 1980 Conflict free access of arrays: a counter example Information Processing Letts 10 20 54. Dennard R H, Gaesslen F H, Kuhn L and Yu H N 1974 Design of ion implanted MOSFETS with very small physical dimensions IEEE J. Solid State Circuits SC-9 256-68 55. Duff M J В 1978 The review of the CLIP image processing system Proc. Natl. Comput. Conf. (USA) 1055-60 56. 1980a CLIP-4 Image Processing Computers ed. T S Huang (Berlin: Springer-Verlag) 57- 1980b CLIP-4 Special Computer Architecture for Pattern Processing ed. К S Fu (Boca Raton, Florida: CRC Press) 58. Dungworth M 1979 The CRAY-1 computer system Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 51—76 59. Dunwell S W 1956 Design objectives for the IBM STRETCH computer Proc. East. Joint Comp. Conf. (New York: Spartan) 20—2 60. Eastwood J W 1976 Optimum P3M algorithms for molecular dynamic simulations Computational Methods in Classical and Quantum Physics ed. M В Hooper (London: Advance Publications Ltd) 206—28 61. Eastwood J W and Brownrigg D R К 1979 Remarks on the solution of Poisson’s equation for isolated systems/. Comput. Phys. 32 24—38 62. Eastwood J W and Jesshope C R 1977 The solution of elliptic partial differential equations using number theoretic transforms with application to narrow or limited computer hardware Comput. Phys. Commun. 13 233—9 63. Eckert J P Jr, Weiner J R, Welsh H F and Mitchell H F 1951 The UNIVAC system, in Bell and Newell 1971 157—69 64. Eden R C, Welch В M, Zucca R and Long S I 1979 The prospects for ultra- 378
highspeed VLSI GaAs digital logic IEEE Trans. Electron. Devices ED-26 299-317 65. Enslow P H Jr (ed.) 1974 Multiprocessors and Parallel Processing (New York: Wiley) 66.------ 1977 Multiprocessor organization — a survey Comput. Surv. 9 103—29 67. Falk H 1976 Reaching for the gigaflop IEEE Spectrum 13(10) 65—70 68. Fang F F and Rupprecht H S 1975 High performance MOS integrated circuits using ion implanted techniques IEEE J. Solid St. Circuits SC-10 205-1 1 69. Feierbach G and Stevenson D 1977 A feasibility study of programmable switch- ing networks for data routing Institute for Advanced Computation, California, USA, Phoenix Report 3 70. 1979a The ILLIAC IV Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockey (Maidenhead: Infotech Inti Ltd) 77-92 71. 1979b The Phoenix project Infotech State of the Art Report: Super- computers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 91-115 72. Flanders P M 1980 Musical bits — a generalised method for a class of data move- ments on the DAP ICL RADC Document CM-70 73. Flanders P M, Hunt D J, Reddaway S F and Parkinson D 1977 Efficient high speed computing with the distributed array processor High Speed Computer and Algorithm Organisation (London: Academic) 113-28 74. Flynn M J 1972 Some computer organizations and their effectiveness IEEE Trans. Comput. C-21 948—60 75. Forsythe G E and Wasow W R 1960 Finite-difference Methods for Partial Differential Equations (London: Wiley) 76. Foster С C 1976 Content-Addressable Parallel Processors (New York: Van Nostrand Reinhold) 77. Foster M J and Kung H T 1980 The design of special-purpose VLSI chips IEEE Computer 13(1) 26-40 78. Fotheringham J 1961 Dynamic storage allocation in the ATLAS computer, including use of backing store Commun. Assoc. Comput. Mach. 4 435 — 6 79. FPS 1976a Processor Handbook Publication 7259-02 (Beaverton, Oregon: Floating Point Systems Inc.) gQ ------ 1976b AP-120B Math Library Publication 7288-02 (Beaverton, Oregon: Floating Point Systems Inc.) gl ------ 1979a AP Math Library Vol. 2 Publication 860-7288-005 (Beaverton, Oregon: Floating Point Systems Inc.) 32. 1979b AP Math Library Vol. 3 Publication 860-7288-006 (Beaverton, Oregon, USA: Floating Point Systems Inc.) 83. Gentleman W M and Sande G 1966 Fast Fourier transforms - for fun and profit, 1966 Fall Joint Computer Conference AFIPS Proc. 29 563—78 84. Gill S 1951 A process for the step-by-step integration of differential equations in an automatic digital computing machine Proc. Cambridge Philos. Soc. 47 96-108 85. Goke L R and Lipovski G J 1973 Banyan networks for partitioning multi- processor systems 1st Annual Symp. on Computer Architecture (IEEE/ACM), Florida 1 21-8 86. Gorsline G W 1980 Computer Organization (Englewood Cliffs, NJ: Prentice-Hall) 87. Gostick R W 1979 Software and algorithms for the distributed array processor ICL Tech. J. 1 116-35 379
88. Graham W R 1970 The parallel and pipeline computers Datamation 16 (4) 68-71 89. Gregory J and McReynolds R 1963 The SOLOMON computer IEEE Trans. Electron. Comput. EC-12 774—81 90. Grosch G E 1979 Performance analysis of Poisson solvers on array computers Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 149—81 91. Haley A C D 1956 DEUCE: a high speed general purpose computer Proc. IEE 103 Part B, Suppl. 2, 165-73 92. Hart К and Slob A 1972 Integrated injection logic: a new approach to LSI lEEE'J. Solid State Circuits SC-7 101—9 93. Hart PAH, Van’t Hof T and Klaassen F M 1979 Device down scaling and expected circuit performance IEEE Trans. Electron. Devices ED-26 421 — 9 94. Harte J 1979 The FPS AP-120B array processor Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 183—203 95. Hartree D R 1950 Calculating Instruments and Machines (Cambridge: Cambridge University Press) 96. Hayes J 1980 MOS scaling IEEE Computer 13 (1) 8-13 97. Heller D 1978 A survey of parallel algorithms in numerical linear algebr,a SIAM Rev. 20 740-77 98. Higbie L C 1972 The OMEN computers: associative array processors COMPCON ’72 Digest 287-90 99.----- 1979 Vectorisation and conversion of FORTRAN programs for the CRAY-1 (CFT) compiler Cray Research Inc., Document 2240207 100. Hintz R G and Tate D P 1972 Control Data STAR-100 processor design COMPCON '72 Digest 1-4 101. Hockney R W 1965 A fast direct solution of Poisson’s equation using Fourier analysis/. Assoc. Comput. Mach. 12 95—113 102. 1970 The potential calculation and some applications Methods Comput. Phys. 9 135-211 103. 1977 Supercomputer architecture Infotech State of the Art Conference: Future Systems Chairman F Sumner(Maidenhead: Infotech Inti Ltd) 65—93 104. 1978 Computers, compilers and Poisson solvers Computers, Fast Elliptic Solvers, and Applications ed. U Schumann (London: Advance Publications) 75-97 105. 1980 Rapid elliptic solvers Numerical Methods in Applied Fluid Dynamics ed. В Hunt (London: Academic Press) 1—48 106. Hockney R W and Eastwood J W 1981 Computer Simulation Using Particles (New York: McGraw-Hill) 107. Hoeneisen В and Mead C A 1972 Fundamental limitations in microelectronics Solid State Electron. 15 819—29 108. Holland J H 1959 A universal computer capable of executing an arbitrary number of subprograms simultaneously Proc. East. Joint Comput. Conf. 16 108-13 109. Howarth D J, Jones P D and Wyld M T 1962 The ATLAS scheduling system Comput. J. 5 238—44 110. Howarth D J, Payne R В and Sumner F H 1961 The Manchester University ATLAS operating system, Part II: User’s description Comput. J. 4 226-9 111. Hue S (Chairman) 1979 FORTRAN language requirements Fourth Report of the Language Working Group of the Advanced Computing Committee, 380
Department of Energy, USA 112. Hunt D J 1978 UK Patent Application No. 45858/78 113. —— 1979 Application techniques for parallel hardware Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 205—19 114. IBM 1980 Josephson computer technology IBM J. Res. Dev. 24 (2) 11 5.ICL 1979a DAP: FORTRAN language reference manual ICL Tech. Pub. TP 6918 116.----- 1979b DAP: Introduction to FORTRAN programming ICL Tech. Pub. TP 6755 117.----- 1979c DAP: APAL language ICL Tech. Pub. TP 6919 118. IEEE 1978 Special issue on fine line devices IEEE Trans. Electron. Devices ED-25 (4) 119.----- 1979 Special issue on VLSI IEEE Trans. Electron. Devices ED-26 (4) 120.Infotech 1976 Multiprocessor systems Infotech State of the Art Report: Multi- processor Systems ed. С H White (Maidenhead: Infotech Inti Ltd) 12 1.Iverson К E 1962 A Programming Language (London: Wiley) 122------ 1979 Operators ACM Trans. Program. Lang. Syst. 1 161—76 123. Jacobi C G J 1845 Uber eine Neue Auflosungsart der bei der Methode der Kleinsten Quadrate Vorkommenden Linearen Gleichungen A str. Nachr. 22 (523)297-306 124. James R A and Parkinson D 1980 Simulation of galactic evolution on the ICL distributed array processor IUCC Bull. Cambridge University Library 2 111-4 125. Jensen C 1978 Taking another approach to supercomputing Datamation 24 (2) 159-75 126. Jesshope C R 1980a The implementation of fast radix-2 transforms on array processors IEEE Trans. Comput. C-29 20—7 127.----- 1980b Some results concerning data routing in array processors IEEE Trans. Comput. C-29 659—62 128.----- 1980c Data routing and transpositions in processor arrays ICL Tech. J. 2191-206 129. Jesshope C R and Craigie J A I 1980 Small is O.K. too (another matrix algorithm for the DAP) DAP Newsletter 4 7—12 130. Jesshope C R and Hockney R W'1979 Analysis and Bibliography Info tech State of the Art Report: Supercomputers vol. 1 (Maidenhead: Infotech Inti Ltd) 131. Johnson P M 1978 An introduction to vector processing Comput. Design 17 (2) 89-97 132. Jordan T L and Fong К 1977 Some linear algebraic algorithms and their performance on the CRAY-1 High-Speed Computer and Algorithm Organiza- tion ed. D J Kuch et al (New York: Academic Press) 313—6 133. Jump J R and Ahuja S R 1978 Effective pipelining of digital systems IEEE Trans. Comput. C-27 855—65 134. Kascic M J Jr 1979 Vector processing on the CYBER 200 Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti. Ltd) 237—70 135. Kautz W H 1971 An augmented content-addressed memory array for implemen- tation with large-scale integration J. Assoc. Comput. Mach. 18 19—31 136. Keller R M 1976 Look-ahead processors Comput. Surv. 7 177—95 137. Kilburn T, Edwards DBG and Aspinall D 1960 A parallel arithmetic unit using a saturated transistor fast-carry circuit Proc. IEE Part В 107 573—84 381
138-Kilbum T, Edwards DBG, Lanigan M J and Sumner F H 1962 One-level storage system Inst. Radio Eng. Trans. EC-11 (2) 223—35 Reprinted in Bell and Newell 1971 Ch 23, 276-90 139-Kilburn T, Howarth D J, Payne R В and Sumner F H 1961 The Manchester University ATLAS operating system Part I: Internal Organization Comput. J. 4 222-5 140-Kimura T 1979 Gauss-Jordan elimination by VLSI mesh-connected processors Infotech State of the Art Report: Supervomputers vol.2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 273—90 141.Kuck D J 1968 ILLIAC IV software and application programming IEEE Trans. Comput. C-17 758-70 142.----- 1977 A survey of parallel machine organisation and programming Comput. Surv. 9 29-59 143-Lambiotte J R Jr and Voight R G 1975 The solution of tridiagonal linear systems on the CDC STAR-100 computer ACM Trans. Math. Software 1 308-29 144. Lang T 1976 Interconnections between processors and memory modules using the shuffle exchange network IEEE Trans. Comput. C-25 496—503 145. Lang T and Stone H S 1976 A shuffle-ex change network with simplified control IEEE Trans. Comput. C-25 55—65 146. Lavington S H 1978 The Manchester Mark I and ATLAS: a historical perspective Commun. Assoc. Comput. Mach. 21 4—12 147. Lawrie D H 1975 Access and alignment of data in an array processor IEEE Trans. Comput. C-24 1145—55 148. Lawrie D H, Layman T, Baer D and Randal J M 1975 GLYPNIR —a programming language for ILLIAC IV Commun. Assoc. Comput. Mach. 17 157—64 149. Lee C Y and Pauli M C..1963 A content addressable distributed logic memory with applications to information retrieval Proc. IEEE 51 924—32 150-Lenfant J 1978 Parallel permutations of data: a Benes network control algorithm for frequently used bijections IEEE Trans. Comput. C-27 637—47 151-Leondes C and Rubinoff M 1952 DINA — a digital analyser for Laplace, Poisson, diffusion and wave equations AIEE Trans. Commun. and Electron. 71 303—9 152. Lorin H 1972 Parallelism in Hardware and Software: Real and Apparent Concurrency (Englewood Cliffs, NJ: Prentice-Hall) 153. Madsen N and Rodrigue G 1976 A comparison of direct methods for tridiagonal systems on the CDC STAR-100 Preprint UCRL-76993 Lawrence Livermore Laboratory Rev. 1 154. Masson G M, Gingher G C and Nakamura S 1979 A sampler of circuit switching networks IEEE Computer 12 (6) 32—48 155-Matisoo J 1980 Overview of Josephson technology logic and memory IBM J. Res. Dev. 24 113-29 156. McIntyre D 1970 An introduction to the ILLIAC IV computer Datamation 16 (4) 60-7 157. McLaughlin R A 1975 The IBM 704: 36-bit floating-point money maker Datamation 21 (8) 45—50 158. Mead C A and Conway L A 1980 Introduction to VLSI Systems (Reading, MA: Addison Wesley) 159. Millard W 1975 Hyperdimensional дР collection seen functioning as mainframe Digital Design 5 (11) 20 160-MilIstein R E 1973 Control structures in ILLIAC IV FORTRAN Commun. Assoc. Comput. Mach. 16 622—7 382
161. Miranker W L 1971 A survey of parallelism in numerical analysis SIAM Rev. 13 524-47 162. Morrison P and Morrison E 1961 Charles Babbage and his Calculating Engines (New York: Dover Publications Inc) 163. Murphey J О and Wade R M 1970 The IBM 360/195 Datamation 16 (4) 72-9 164. Nassimi D and Sahni S 1980 An optimal routing algorithm for mesh-connected parallel computers/. Assoc. Comput. Mach. 27 6—29 165. von Neumann J 1966 A system of 29 states with a general transition rule Theory of Self-Reproducing Automata ed. A W Burks (Urbana, Ill: University of Illinois Press) 305—17. Paper first published 1952 166. Orszag S A 1971 Numerical simulation of incompressible flows within simple boundaries, I: Galerkin (Spectral) Representations Stud. Appl. Math. 50 293-327 167. Parker D S Jr 1980 Notes on shuffle/exchange-type switching networks IEEE Trans. Comput. C-29 213—22 168. Parkinson D 1982 Supercomputers (Bristol: Adam Hilger) 169. Paul G and Wilson MW 1975 The VECTRAN language: an experimental language for vector/matrix array processing IBM Research Rep. 320—34 170. 1978 An introduction to VECTRAN and its use in scientific applications programming Proc. 1978 LASL Workshop on Vector and Parallel Processors LA-7491-C 171. Pease M C 1967 Matrix inversion using parallel processing J. Assoc. Comput. Mach. 14 75.7—64 172. 1968 An adaptation of the fast Fourier transform for parallel processing J. Assoc. Comput. Mach. 15 252—64 173 ---- 1969 Organisation of large scale Fourier processors/. Assoc. Comput. Mach. 16 474-82 174. 1977 The indirect binary n-cube microprocessor array IEEE Trans. Comput. C-26 458—73 175. Perrott R H 1978 Scientific computing in the 1980s: programming languages Nat. Bureau Standards 17th Ann. Tech. Symp. Tools for Improved Computing 65-69 176. 1979 A language for array and vector processors ACM Trans. Prog. Lang. Syst. 1 117-95 177. Perrott R H and Stevenson D К 1979 A survey of ILLIAC IV programming languages and their uses (Sunnyvale, CA: Institute for Advanced Computation) 178. Petersen W P 1978 Complex fast Fourier transform binary Radix subroutine (CFFT2) CRA Y Research Inc. Publication 2240203 179. Pollard J M 1971 The fast Fourier transform in a finite field Math. Comput. 25 365-74 180. Poole W G Jr and Voight R G 1974 Numerical algorithms for parallel and vector computers: an annotated bibliography Comput. Rev. 15 379—88 181. Queyssac D 1979 Projecting VLSI’s impact on microcomputers IEEE Spectrum 16(5)38-41 182. Rader С M 1972 Discrete convolution via Mersenne transforms IEEE Trans. Comput. C-21 1269-73 183. Ramamoorthy С V and Li H F 1977 Pipeline architecture Comput. Surv. 9 61-102 184. Randell В (ed.) 1975 The Origins of Digital Computers - Selected Papers 2nd edn (Berlin: Springer-Verlag) 185. Reddaway S F 1973 DAP - a distributed array processor 1st Annual Symp. on 383
Comput. Architecture (IELE/ACM), Florida 186. 1979 The DAP approach Infotech State of the Art Report: Super- computers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 311-29 187. Rem M and Mead C A 1979 Highly concurrent structures with global communication IEEE J. Solid State Circuits SC-14 455 — 62 188. Roberts J D 1977 A fast discrete Fourier transform algorithm suitable for a pipeline vector process University of Reading Computer Science Report RCS 82 189- 1980 How to design super DAPs? University of Reading Computer Science Report RCS 140 190. Rosen S 1969 Electronic computers: an historical survey Comput. Surv. 1 7-36 191 Runge C 1903 Uber die Zerlegung einer Empirische Gegebener Periodischer Funktionen in Sinuswellen Z. Math. Phys. (Ger) 48 443-56 192. 1905 Uber die Zerlegung einer Empirischen Funktion in Sinuswellen? Z. Math. Phys. (Ger) 52 117-23 193. Runge C and Konig H 1924 Die Grundlehren der Mathematischen Wissenschaften Band XI Vorlesungen uber Numerisches Rechnen (Berlin: Springer) 194. Russell R M 1978 The CRAY-1 computer system Commun. Assoc. Comput. Mach. 21 63-72 195-Sakai T, Yamamoto Y, Kobayashi H Y, Ishitani T and Sudo T 1979 Elevated electrode integrated circuits IEEE Trans. Electron. Dev. ED-26 379—84 196. Schumann U (ed.) 1978 Computers, Fast Elliptic Solvers and Applications (London: Advance Publications) 197. Schwartz J T 1980 Ultracomputers A CM Trans. Prog. Lang. Syst. 2 484-521 198. Shapiro HD 1978 Theoretical limitation on the efficient use of parallel memories IEEE Trans. Comput. C-27 421-8 199-Shibata H, Iwasaki H, Yamada K, Oku T and Tarui Y 1979 A new fabrication method of small-dimension devices - multiple-wall self-aligned devices IEEE Trans. Electron. Dev. ED-26 604-10 200- Shooman W 1960 Parallel computing with vertical data AFIPS Conf. Proc. 110-5 201. 1970 Orthogonal processing Parallel Processor System Techniques and Applications (New York: Spartan Books) 202. Shore J E 1973 Second thoughts on parallel processing Comput. Elect. Eng. 1 95-109 203-Siegel H J 1979 Interconnection networks for SIMD machines IEEE Computer 12(6)57-65 204. Singleton R C 1967 On computing the fast Fourier transform Commun. Assoc. Comput. Mach. 10 647-54 2O5 ----- 1969 An algorithm for computing the mixed radix fast Fourier transform IEEE Trans. Audio Electroacoustics 17 93—103 206. Slotnick D L 1967 Unconventional systems A FTPS Conf. Proc. 30 477—81 207. 1971 The fastest computer Set. Am. 224 (2) 76—87 208. Slotnick D L, Borck W C and McReynolds RC 1962 The SOLOMON computer AFIPS Conf. Proc. 22 97-107 209. Stevens К G Jr 1974 CFD — a FORTRAN based language for ILLIAC IV Reference Manual (Moffet Field, CA: NASA Ames Research Center) 210. 1975 CFD - a FORTRAN-like language for the ILLIAC IV SIGPLAN Not. 10 (3) 72-80 384
211. 1979 Numerical aerodynamic simulation facility project Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti Ltd) 331—42 212. Stone H S 1970 A logic-in-memory computer IEEE Trans. Comput. C-19 73-8 213. 1971 Parallel processing with the perfect shuffle IEEE Trans. Computers C-20 153-61 214. 1973 An efficient parallel algorithm for the solution of a tridiagonal system of equations/. Assoc. Comput. Math. 20 27—38 215. 1975 Parallel tridiagonal solvers Assoc. Comput. Mach. Trans. Math. Soft-ware 1 289-307 216. Stumpff К 1939 Tafeln und Aufgaben zur Harmonischen Analyse und Periodo- grammrechnung (Berlin: Springer) 217. Sugarman R 1980 Superpower computers IEEE Spectrum 17 (4) 28-34 218. Sumner F H, Haley G and Chen E C Y 1962 The central control unit of the ATLAS computer Proc. IFIP Congr. 657-62 219. Sumney L W 1980 VLSI with a vengeance IEEE Spectrum 17 (4) 24-7 220. Swarztrauber P N 1974 A direct method for the discrete solution of separable elliptic equations SIAM J. Numer. Anal. 11 1136-50 221. 1977 The methods of cyclic reduction, Fourier analysis and the FACR algorithm for the discrete solution of Poisson’s equation on a rectangle SIAM Rev. 19 490-501 222. Sweet R A 1974 A generalised cyclic-reduction algorithm SIAM J. Numer. Anal. 11 506-20 223. 1977 A cyclic-reduction algorithm for solving block tridiagonal systems of arbitrary dimension SIAM J. Numer. Anal. 14 706-19 224. Temperton C 1977 Mixed radix fast Fourier transforms without reordering ECMWF report No. 3 European Centre for Medium-range Weather Fore- casting, Shinfield Park, Reading, Berks, UK 225. 1979a Direct methods for the solution of the discrete Poisson equation: some comparisons J. Comput, Phys. 31 1—20 226. 1979b Fast Fourier transforms and Poisson solvers on the CRAY-1 . Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and R W Hockney (Maidenhead: Infotech Inti. Ltd) 359—79 227. 1980 On the FACR(Z) algorithm for the discrete Poisson equation/. Comput. Phys. 34 314—29 228. Theis D J 1974 Vector supercomputers IEEE Computer 7 (4) 52-61 229. Thomas L H 1963 Using a computer to solve problems in physics Application of Digital Computers (New York: Ginn and Company) 230. Thompson C D 1977 Generalised connection networks for parallel processor intercommunication Dept, of Computer Science Report Carnegie-Mellon University, USA 231. Thornton J E 1964 Parallel operation in the control data 6600 AFIPS Conf. Proc. 26 (II) 33-40 232. 1970 Design of a Computer - The Control Data 6600 (Glenview, Illinois: Scott, Foresman and Company) 233. Thurber К J 1976 Large-scale Computer Architectures: Parallel and Associative Processors (Rochelle Park, NJ: Hayden) 234. Thurber К J and Wald L D 1975 Associative and parallel processors Comput. Surv. 7 215-55 235. Treleaven P C 1979 Exploiting program concurrency in computing systems IEEE Computer 12 (1) 42—50 385
236. Turing S 1959 Alan M Turing (Cambridge: W Heffer and Sons Ltd) 237. Turn R 1974 Computers iri^he 1980s (New York: Columbia University Press) 238. Uhrich M L 1969 Fast Fourier transforms without sorting IEEE Trans. Audio Electroacoustics 17 170—2 239-Unger S H 1958 A computer oriented towards spatial problems Proc. Inst. Radio Eng. (USA) 46 1744-50 240. USAS 1966 USA standard FORTRAN USAS X3.9 1966 (New York: USA Standards Institute) 241. 1978 USA standard FORTRAN USA X3.9 1978 (New York: USA Standards Institute) 242. Varga R S 1962 Matrix Iterative Analysis (Englewood Cliffs, NJ: Prentice-Hall) 243. Vick C R and Cornell J A 1978 PEPE architecture — present and future AFIPS Conf..Proc. 47 981-1002 244. Waksman A 1968 A permutation network/. Assoc. Comput. Mach. 15 159—63 245. Waser S 1978 High speed monolithic multipliers for real-time digital signal processing IEEE Computer 11 (10) 19—29 246. Watson W J 1972 The Texas Instruments advanced scientific computer COMPCON '72 Digest 291-4 247. Wetherell C 1980a Array processing for FORTRAN Lawrence Livermore Laboratory Computer Documentation UCID-30175 248. 1980b Design considerations for array processing languages Software Practice and Experience 10 265—71 249. Whittaker E T and Robinson G 1944 Calculus of Observations (Glasgow: Blackie) 260-83 250. Wilkes M V and Renwick W 1949 The EDSAC, an electronic calculating machine J. Sci. Instrum. 26 385—91 251. Wilkes M V, Wheeler D J and Gill S 1951 The Preparation of Programs for an Electronic Digital Computer (Cambridge, MA: Addison-Wesley) 252. Wilkinson J H 1953 The pilot ACE Computer Structures: Readings and Examples Ch. 11 ed. C G Bell and A Newell (New York: McGraw-Hill) 193—9 253. Williams F C and Kilburn T 1949 A storage system for use with binary digital computing machines Proc. IEE 96 (3) 81 —100 254. Williams S A 1979 The portability of programs and languages for vector and array processors Infotech State of the Art Report: Supercomputers vol. 2 ed. C R Jesshope and RW Hockney (Maidenhead: Infotech Inti Ltd) 382—93 255. Winograd S 1967 On the time required to perform multiplication / Assoc. Comput. Mach. 14 793—802 256. Wittmayer W R 1978 Array processor provides high throughput rates Comput. Design 17(3)93-100 257. Wollesen D L 1980 CMOS LSI — the computer component process of the 80s IEEE Computer 13 (2) 59—67 258. Yau S S and Fung H S 1977 Associative processor architecture — a survey Comput. Surv. 9 3—27 259-Zuse К 1958 Die Feldrechenmaschine Math. Tech. Wirt-Mitteilungen (Wien) 5(4)213-20 СПИСОК РАБОТ, ПЕРЕВЕДЕННЫХ НА РУССКИЙ ЯЗЫК 4. Агарвал Р., Баррас К. Теоретико-числовые преобразования для быстрого вычисле- ния цифровой свертки. - ТИИЭР, 1975, v. 63, № 4, с. 6 - 20. 65. Мультипроцессорные системы и параллельные вычисления/Под ред. Ф. Энслоу: Пер. с англ. - М.: Мир, 1976. - 326 с.
ОГЛАВЛЕНИЕ Стр. Предисловие к русскому изданию..............................................5 Предисловие............................................................... 7 Вступление...............................................................• • 8 1. Введение...............................................................11 1.1. История параллелизма..............................................12 1.1.1. Параллелизм до 1960 г........................................15 1.1.2. Быстродействующие скалярные компьютеры.......................19 1.1.3. Конвейерные векторные ЭВМ....................................24 1.1.4. Проект SOLOMON и другие разработки...........................26 1.1.5. Ортогональные и ассоциативные ЭВМ............................30 1.1.6. Дешевые специализированные ЭВМ...............................32 1.2. Классификация проектов............................................33 1.2.1. Уровни параллелизма..........................................34 1.2.2. Систематика Флинна...........................................36 1.2.3. Систематика Шора.............................................38 1.2.4. Структурная нотация..........................................40 1.2.5. Структурная систематика......................................52 1.3. Характеристика производительности.................................56 1.3.1. Последовательная, конвейерная и матричная архитектуры........56 1.3.2. Производительность векторных операций........................60 1.3.3. Измерение лф и ..............................................61 1.3.4. Спектр компьютеров...........................................64 1.3.5. Производительность программ..................................67 1.3.6. Производительность установки.................................71 2. Конвейерные ЭВМ..................................................... 23 2.1. Выбор и сравнение.................................................73 2.2. Компьютер CRAY-1..................................................75 2.2.1. Физическое размещение........................................75 2.2.2. Архитектура..................................................79 2.2.3. Технология...................................................88 2.2.4. Набор команд.................................................89 2.2.5. Программное обеспечение......................................93 2.2.6. Производительность...........................................94 2.3. Компьютер CYBER 205 фирмы CDC....................................100 2.3.1. Физическое размещение.......................................102 2.3.2. Архитектура..................................................ЮЗ 2.3.3. Технология....................................................Ш 2.3.4. Набор команд................................................116 2.3.5. Программное обеспечение.....................................121 2.3.6. Производительность..........................................124 387
2.4. Компьютер АР-120В фирмы FPS......................................130 2.4.1. Физическое размещение.......................................131 2.4.2. Архитектура.................................................132 2.4.3. Технология..................................................137 2.4.4. Набор команд................................................138 2.4.5. Программное обеспечение.....................................140 2.4.6. Производительность..........................................143 3. Процессорные матрицы.................................................145 3.1. Что такое процессорная матрица?...................................145 3.1.1. Общая организация...........................................146 3.1.2. Распределение мощностей обработки...........................148 3.1.3. Организация памяти..........................................153 3.1.4. Организация управления......................................156 3.2. Сети коммутации....................................;..............158 3.2.1. Введение....................................................158 3.2.2. Некоторые основные перестановки.............................160 3.2.3. Алгебра перестановок........................................163 3.2.4. Однокаскадные сети или переключатели........................164 3.2.5. Некоторые свойства однокаскадных сетей......................168 3.2.6. Многокаскадные сети.........................................170 3.3. Матричный процессор DAP фирмы 1CL.................................173 3.3.1. Общий обзор проектаи технологии.............................173 3.3.2. Архитектура.................................................175 3.3.3. Набор команд................................................178 3.3.4. Режимы обработки и отображения памяти.......................181 3.3.5. Система.....................................................184 3.3.6. Производительность..........................................185 3.3.7. Структурное описание машины DAP.............................188 3.4. Машина BSP фирмы BURROUGHS...................................... 188 3.4.1. Обзор проекта и технологии..................................188 3.4.2. Архитектура.................................................189 3.4.3. Обработка команд............................................194 3.4.4. Обнаружение и исправление ошибок............................200 3.4.5. Система.....................................................202 3.4.6. Производительность..........................................203 4. Параллельные языки...................................................205 4.1. Общие принципы...................................................205 4.1.1. Знакомство с параллелизмом..................................205 4.1.2. Разработка параллелизма.....................................206 4.1.3. Получение параллелизма......................................207 4.1.4. Выражение параллелизма......................................208 4.1.5. Ограничение параллелизма....................................208 4.2. Параллельные конструкции.........................................209 4.2.1. Массивы как объекты данных..................................209 4.2.2. Выборка объектов массива....................................210 4.2.3. Представление массивов и соответствие.......................215 4.2.4. Обработка массивов для получения соответствия...............216 4.2.5. Индексация выражений........................................220 4.2.6. Присвоение массива..........................................220 4.2.7. Примеры программирования....................................220 4.2.8. Стандарты...................................................224 388
4.3. Векторизующие компиляторы.......................................225 4.3.1. Основные методы.............................................225 4.3.2. Препятствия к векторизации..................................225 4.3.3. Компилятор CRAY-1 CFT.......................................227 4.3.4. Векторизующий компилятор BSP................................228 4.4. Машинно-распараллеленные компиляторы............................230 4.4.1. Компилятор CFD..............................................230 4.4.2. Компилятор DAP-Фортран......................................233 4.5. Проблемно-распараллеленные компиляторы...........................237 4.5.1. Компилятор BSP..............................................237 4.5.2. Язык VECTRAN................................................240 4.6. Мобильность.....................................................242 4.6.1. Метод стандартного Фортрана.................................243 4.6.2. Трансляция типа источник - источник.........................244 5. Параллельные алгоритмы..............................................245 5.1. Общие принципы...................................................245 5.1.1. Производительность..........................................246 5.1.2. Параллелизм.................................................247 5.1.3. Паракомпьютер и эффективность...............................248 5.1.4. Задержка коммутации.........................................249 5.1.5. Конфликты на уровне банков памяти...........................249 5.2. Рекурсии.........................................................251 5.2.1. Последовательная сумма......................................251 5.2.2. Каскадная сумма.............................................253 5.2.3. Относительная производительность............................255 5.2.4. Циклическая редукция........................................260 5.3. Матричное умножение..............................................264 5.3.1. Метод внутреннего произведения..............................265 5.3.2. Метод среднего произведения.................................265 5.3.3. Метод внешнего произведения.................................266 5.3.4. Применение п’-параллелизма..................................268 5.4. Трехдиагональные системы........................................269 5.4.1. Исключения Гаусса......................................... 269 5.4.2. Рекурсивное удвоение........................................272 5.4.3. Циклическая редукция........................................274 5.4.4. Выбор алгоритма.............................................280 5.5. Преобразования..................................................284 5.5.1. Быстрое преобразование Фурье................................286 5.5.2. Получение БПФ...............................................290 5.5.3. Векторизация................................................294 5.5.4. Параллельная реализация.....................................299 5.5.5. Рассуждения о маршрутизации.................................304 5.5.6. Теоретико-числовые преобразования.........................309 5.6. Дифференциальные уравнения в частных производных................314 5.6.1. Итерационные методы: SOR, SLOR. ADI.......................315 5.6.2. Прямые методы: MFT, FACR (Z)..............................322 5.6.3. Трехмерные методы......................................'• • 331 6. Перспективные разработки............................................332 6.1. Технология......................................................334 6.1.1. Характеристика............................................334 6.1.2. Биполярные технологии (ТТЛ, ЭСЛ, И2 Л)....................336 389
6.1.3. МОП-технологии (p-МОП, n-МОР и КМОП)........................339 6.1.4. Методы масштабирования......................................342 6.1.5. Другие технологии...........................................345 6.1.6. Краткие выводы..............................................347 6.2. Проектные ограничения............................................347 62.1. Вычисления - это связь......................................347 6.2.2. Организация памяти..........................................350 6.2.3. Выборка данных и выравнивание...............................354 6.2.4. Масштабирование параллелизма................................357 6.2.5. Другие подходы..............................................361 6.3. Будущие суперкомпьютеры..........................................362 6.3.1. Проект NASF фирмы CDC.......................................362 6.3.2. Проект NASF фирмы Burroughs.................................366 6.3.3. Компьютер МРР фирмы Goodyear Aerospace......................369 Приложение...............................................................372 Список литературы........................................................376 Список работ, переведенных на русский язык...............................386
Хокни Р., Джессхоуп К. Х70 Параллельные ЭВМ. Архитектура, программирование и алго- ритмы: Пер. с англ. - М.: Радио и связь, 1986. — 392 с.: ил. В книге английских авторов рассмотрены основные вопросы органи- зации параллельной обработки данных, проанализированы возникающие при этом проблемы, а также пути их решения. Описаны некоторые сов- ременные параллельные ЭВМ со сверхвысокой производительностью. Показаны особенности организации вычислительного процесса в парал- лельных системах, рассмотрены языки параллельного программирова- ния и характерные параллельные алгоритмы, дан их сравнительный ана- лиз при использовании в различных типах ЭВМ. Для инженерно-технических работников, специализирующихся в об- ласти вычислительной техники. 240500000043!^^ 046 (01)-86 ББК 32.973.2