ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6689
Скачиваний: 8
68
Глава 2. Организация компьютерных систем
сор содержал один конвейер, a Pentium — два конвейера из пяти стадий. Похожая
схема изображена на рис. 2.4, но разделение функций между второй и третьей ста-
диями (они назывались декодирование 1 и декодирование 2) было немного дру-
гим. Главный конвейер
(u-конвейер)
мог выполнять произвольные команды. Вто-
рой конвейер
(v-конвейер)
мог выполнять только простые команды с целыми
числами, а также одну простую команду с плавающей точкой (FXCH).
С1
Блок
выборки
команд
С2
Блок
декодирования
Блок
декодирования
СЗ
Блок
выборки
операндов
Блок
выборки
операндов
С4
Блок
выполнения
команд
С5
Блок
возврата
Блок
выполнения
команд
Блок
возврата
Рис. 2.4. Двойной конвейер из пяти стадий с общим отделом вызова команд
Имеются сложные правила определения, является ли пара команд совмести-
мой для того, чтобы выполняться параллельно. Если команды, входящие в пару,
были сложными или несовместимыми, выполнялась только одна из них (в и-кон-
вейере). Оставшаяся вторая команда составляла затем пару со следующей коман-
дой. Команды всегда выполнялись по порядку. Таким образом, Pentium содержал
особые компиляторы, которые объединяли совместимые команды в пары и могли
порождать программы, выполняющиеся быстрее, чем в предыдущих версиях. Изме-
рения показали, что программы, производящие операции с целыми числами, на
компьютере Pentium выполняются почти в два раза быстрее, чем на 486-м, хотя
у него такая же тактовая частота. Вне всяких сомнений, преимущество в скорости
появилось благодаря второму конвейеру.
Переход к четырем конвейерам возможен, но это потребовало бы создания гро-
моздкого аппаратного обеспечения (отметим, что компьютерщики, в отличие от
фольклористов, не верят в счастливое число три). Вместо этого используется дру-
гой подход. Основная идея — один конвейер с большим количеством функцио-
нальных блоков, как показано па рис. 2.5. Pentium II, к примеру, имеет сходную
структуру (подробно мы рассмотрим его в главе 4). В 1987 году для обозначения
этого подхода был введен термин
суперскалярная архитектура.
Однако подобная
идея нашла воплощение еще более 30 лет назад в компьютере CDC 6600. CDC 6600
вызывал команду из памяти каждые 100 не и помещал ее в один из 10 функцио-
нальных блоков для параллельного выполнения. Пока команды выполнялись, цен-
тральный процессор вызывал следующую команду.
Отметим, что стадия 3 выпускает команды значительно быстрее, чем стадия 4
способна их выполнять. Если бы стадия 3 выпускала команду каждые 10 не, а все
функциональные блоки выполняли бы свою работу также за 10 не, то на четвертой
стадии всегда функционировал бы только один блок, что сделало бы саму идею
конвейера бессмысленной. В действительности большинству функциональных
блоков четвертой стадии для выполнения команды требуется значительно больше
Процессоры
69
времени, чем занимает один цикл (это блоки доступа к памяти и блок выполнения
операций с плавающей точкой). Как видно из рис. 2 5, на четвертой стадии может
быть несколько АЛУ.
С1
Блок
выборки
команд
С2 СЗ
/
Блок
декодирования
Блок
выборки
операндов
/
С4
АЛУ
АЛУ
Блок
загрузки
Блок
сохранения
W
с5
1
Блок
возврата
Блок
с плавающей
точкой
Рис. 2.5. Суперскалярный процессор с пятью функциональными блоками
Параллелизм на уровне процессоров
Спрос на компьютеры, работающие все с более и более высокой скоростью, не пре-
кращается. Астрономы хотят выяснить, что произошло в первую микросекунду
после большого взрыва, экономисты хотят смоделировать всю мировую экономи-
ку, подростки хотят играть в 3D интерактивные игры со своими виртуальными
друзьями через Интернет. Скорость работы процессоров повышается, но у них
постоянно возникают проблемы с быстротой передачи информации, поскольку
скорость распространения электромагнитных волн в медных проводах и света
в оптико-волоконных кабелях по-прежнему остается 20 см/нс, независимо от того,
насколько умны инженеры компании Intel. Кроме того, чем быстрее работает про-
цессор, тем сильнее он нагревается
1
, и нужно предохранять его от перегрева.
Параллелизм на уровне команд помогает в какой-то степени, но конвейеры
и суперскалярная архитектура обычно увеличивают скорость работы всего лишь
в 5-10 раз. Чтобы улучшить производительность в 50, 100 и более раз, нужно
разрабатывать компьютеры с несколькими процессорами. Ниже мы ознакомимся
с устройством таких компьютеров.
Это не совсем точно Есть масса живых примеров, противоречащих этому высказыванию Тепловы-
деление, конечно, зависит от частоты переключений элементов, но оно зависит и от размеров этих
элементов, и от напряжения, от которого они работают. —
Примеч научи ред
70
Глава 2. Организация компьютерных систем
Векторные компьютеры
Многие задачи в физических и технических науках содержат векторы, в против-
ном случае они имели бы очень сложную структуру. Часто одни и те же вычисле-
ния выполняются над разными наборами данных в одно и то же время. Структура
этих программ позволяет повышать скорость работы благодаря параллельному
выполнению команд. Существует два метода, которые используются для быстро-
го выполнения больших научных программ. Хотя обе схемы во многих отношени-
ях схожи, одна из них считается расширением одного процессора, а другая — па-
раллельным компьютером.
Массивно-параллельный процессор (array processor)
состоит из большого
числа сходных процессоров, которые выполняют одну и ту же последовательность
команд применительно к разным наборам данных. Первым в мире таким процес-
сором был ILLIAC IV (Университет Иллинойса). Он изображен на рис. 2.6. Перво-
начально предполагалось сконструировать машину, состоящую из четырех секто-
ров, каждый из которых содержит решетку 8x8 элементов процессор/память. Для
каждого сектора имелся один блок контроля. Он рассылал команды, которые вы-
полнялись всеми процессорами одновременно, при этом каждый процессор исполь-
зовал свои собственные данные из своей собственной памяти (загрузка данных
происходила во время инициализации). Из-за очень высокой стоимости был построен
только один такой сектор, но он мог выполнять 50 млн операций с плавающей точкой
в секунду. Если бы при создании машины использовалось четыре сектора и она
могла бы выполнять 1 млрд операций с плавающей точкой в секунду, то мощность
такой машины в два раза превышала бы мощность компьютеров всего мира.
Блок управления
Команды широковещания
В В В В В В В В 1
В
из
• • •
пз
• о
•
ПЗ СЗ
О
CZJ
CD I I
Процессор
Память
Решетка 8x8 из элементов
процессор/память
из
сз пз пз пз
ПЗ ПЗ ПЗ ПЗ ПЗ ПЗ ПЗ
в в в в в в в в
в в в в в в в в
Рис.
2.6. Массивно-параллельный процессор ILLIAC IV
Для программистов
векторный процессор (vector processor)
очень похож на
массивно-параллельный процессор (array processor). Как и массивно-параллель-
ный процессор, он очень эффективен при выполнении последовательности опера-
ций над парами элементов данных. Но, в отличие от первого (array processor), все
операции сложения выполняются в одном блоке суммирования, который имеет
Процессоры 71
конвейерную структуру. Компания Cray Research, основателем которой был Сей-
мур Крей, выпустила много векторных процессоров, начиная с модели Cray-1 (1974)
и по сей день. Cray Research в настоящее время входит в состав SGI.
Оба типа процессоров работают с массивами данных. Оба они выполняют одни
и те же команды, которые, например, попарно складывают элементы для двух век-
торов. Но если у массив но-параллельного процессора (array processor) есть столько
же суммирующих устройств, сколько элементов в массиве, векторный процессор
(vector processor) содержит
векторный регистр,
который состоит из набора стан-
дартных регистров. Эти регистры последовательно загружаются из памяти при
помощи одной команды. Команда сложения попарно складывает элементы двух
таких векторов, загружая их из двух векторных регистров в суммирующее устрой-
ство с конвейерной структурой. В результате из суммирующего устройства выхо-
дит другой вектор, который или помещается в векторный регистр, или сразу ис-
пользуется в качестве операнда при выполнении другой операции с векторами.
Массивно-параллельные процессоры (array processor) выпускаются до сих пор,
но занимают незначительную сферу компьютерного рынка, поскольку они эффек-
тивны при решении только таких задач, которые требуют одновременного выпол-
нения одних и тех же вычислений над разными наборами данных. Массивно-па-
раллельные процессоры (array processor) могут выполнять некоторые операции
гораздо быстрее, чем векторные компьютеры (vector computer), но они требуют
большего количества аппаратного обеспечения, и для них сложно писать програм-
мы. Векторный процессор (vector processor), с другой стороны, можно добавлять к
обычному процессору. В результате те части программы, которые могут быть пре-
образованы в векторную форму, выполняются векторным блоком, а остальная часть
программы — обычным процессором.
Мультипроцессоры
Элементы массивно-параллельного процессора связаны между собой, поскольку
их работу контролирует один блок управления. Система нескольких параллель-
ных процессоров, разделяющих общую память, называется
мультипроцессором.
Поскольку каждый процессор может записывать или считывать информацию из
любой части памяти, их работа должна согласовываться программным обеспече-
нием, чтобы не допустить каких-либо пересечений.
Возможны разные способы воплощения этой идеи. Самый простой из них —
наличие одной шипы, соединяющей несколько процессоров и одну общую память.
Схема такого мультипроцессора показана на рис. 2.7,
а.
Такие системы произво-
дят многие компании.
Нетрудно понять, что при наличии большого числа быстро работающих про-
цессоров, которые постоянно пытаются получить доступ к памяти через одну и ту
же шину, будут возникать конфликты. Чтобы разрешить эту проблему и повысить
производительность компьютера, были разработаны различные модели. Одна из
них изображена на рис. 2.7,
б.
В таком компьютере каждый процессор имеет свою
собственную локальную память, которая недоступна для других процессоров. Эта
память используется для программ и данных, которые не нужно разделять между
несколькими процессорами. При доступе к локальной памяти главная шина не
используется, и, таким образом, поток информации в этой шине снижается. Воз-
можны и другие варианты решения проблемы (например, кэш-память).
72
Глава 2. Организация компьютерных систем
Совместно
используемая
память
Центральный
процессор
Центральный
процессор
Центральный
процессор
Центральный
процессор
Шина
Блоки локальной памяти
Совместно
используемая
память
Шина
Рис. 2.7. Мультипроцессор с одной шиной и одной общей памятью {а); мультипроцессор,
в котором для каждого процессора имеется собственная локальная память (б)
Мультипроцессоры имеют преимущество перед другими видами параллельных
компьютеров, поскольку с единой разделенной памятью очень легко работать.
Например, представим, что программа ищет раковые клетки на сделанном через
микроскоп снимке ткани. Фотография в цифровом виде может храниться в общей
памяти, при этом каждый процессор обследует какую-нибудь определенную об-
ласть фотографии. Поскольку каждый процессор имеет доступ к общей памяти,
обследование клетки, которая начинается в одной области и продолжается в дру-
гой, не представляет трудностей.
Мультикомпьютеры
Мультипроцессоры с небольшим числом процессоров (< 64) сконструировать до-
вольно легко, а вот создание больших мультипроцессоров представляет некото-
рые трудности. Сложность заключается в том, чтобы связать все процессоры с па-
мятью. Чтобы избежать таких проблем, многие разработчики просто отказались
от идеи разделенной памяти и стали создавать системы, состоящие из большого
числа взаимосвязанных компьютеров, у каждого из которых имеется своя собствен-
ная память, а общей памяти нет. Такие системы называются мультикомпьютерами.
Процессоры мультикомпьютера отправляют друг другу послания (это несколько
похоже на электронную почту, но гораздо быстрее). Каждый компьютер не обязатель-
но связывать со всеми другими, поэтому обычно в качестве топологий используются