Э. Таненбаум - Архитектура компьютера (1127755), страница 151
Текст из файла (страница 151)
Добавьте макросы к ассемблеру, который вы должны были написать, выполняя предыдущее задание. Глава 8 Параллельные компьютерные архитектуры Скорость работы компьютеров становится все выше, но и предъявляемые к ним требования постоянно растут. Астрономы пытаются воспроизвести всю историю Вселенной с момента большого взрыва и до сегодняшнего дня. Фармацевты хотели бы разрабатывать новые лекарственные препараты с помощью компьютеров, не принося в жертву легионы крыс. Разработчики летательных аппаратов могли бы получать лучшие результаты, если бы вместо строительства огромных аэродинамических труб моделировали свои конструкции на компьютере.
Если говорить коротко, какими бы мощными ни были компьютеры, их возможностей никогда не хватит для решения многих нетривиальных задач (особенно научных, технических и промышленных). Хотя тактовая частота постоянно растет, скорость коммутации нельзя увеличивать бесконечно. Главной проблемой остается скорость света — невозможно заставить протоны и электроны двигаться быстрее.
Из-за высокой теплоотдачи компьютеры превратились в кондиционеры. Наконец, поскольку размеры транзисторов постоянно уменыпаются, в конце концов наступит время, когда каждый транзистор будет состоять из нескольких атомов, поэтому основной проблемой могут стать законы квантовой механики (например, принцип неопределенности Гейзенберга). В результате, чтобы иметь возможность решать более сложные задачи, разработчики обратились к компьютерам параллельного действия (далее — параллельные компьютеры).
Невозможно построить компьютер с одним процессором и временем цикла в 0,001 нс, но зато можно построить компьютер с 1000 процессорами, время цикла каждого из которых составляет 1 нс. И хотя быстродействия каждого процессора во втором случае очевцдно мало, теоретически мы должны получить требуемую производительность. Параллелизм можно вводить на разных уровнях. На самом низком уровне он может быть реализован в процессоре за счет конвейеризации и суперскалярной архитектуры с несколькими функциональными блоками.
Скрытого параллелизма можно добиться путем значительного удлинения слов в командах. Посредством дополнительных функций можно «научить» процессор одновременно обрабатывать несколько программных потоков. Наконец, можно установить на одной микросхеме несколько процессоров. Однако все эти приемы, вместе взятые, способны повысить производительность максимум в 10 раз по сравнению с классическими последовательными решениями.
На следующем уровне возможно внедрение в систему внешних плат ЦП с улучшенными вычислительными возможностями. Как правило, в подключаемых процессорах реализуются специальные функции, такие как обработка сетевых пакетов, обработка мультимедийных данных, криптография и т. д. Производи- 598 Глава 8. Параллельные компьютерные архитектуры тельность специализированных приложений за счет этих функций может быть повышена в 5 — 10 раз. Чтобы повысить производительность в сто, тысячу или миллион раз, необходимо свести воедино многочисленные процессоры и обеспечить их эффективное взаимодействие.
Этот принцип реализуется в виде больших мультипроцессорных систем и мультикомпьютеров (кластерных компьютеров). Естественно, объединение тысяч процессоров в единую систему порождает новые проблемы, которые нужно решать. Наконец, в последнее время появилась возможность интеграции через Интернет целых организаций. В результате формируются слабо связанные распределенные вычислительные сетки, или решетки. Такие системы только начинают развиваться, но их потенциал весьма высок.
Когда два процессора или обрабатывающих элемента находятся рядом и обмениваются большими объемами данных с неболыпими задержками, они называются сильно связанными (г(яЫу сопр1ед). Соответственно, когда два процессора или обрабатывающих элемента располагаются далеко друг от друга и обмениваются небольшими объемами данных с большими задержками, они называются слабо связанными (1оозе1у соцр1ей). В данной главе мы обсудим принципы разработки систем этих форм параллелизма и рассмотрим ряд примеров. Начав с сильно связанных систем, для которых характерен внутрипроцессорный параллелизм, мы постепенно перейдем к слабо связанным системам и в завершающей части главы поговорим о распределенных вычислительных системах.
Примерный спектр рассматриваемых тем иллюстрирует рис. 8.1. Собственная память Общая память Компьютер Сопроцессор Ы~ ЦП Основной процессор Сильно связанные системы Слабо связанные системы Рис. 8.1. Внутрипроцессорный параллелизм (а); сопроцессор (б); мультипроцессор (в); мультикомпьютер (г); слабо связанная распределенная вычислительная система (д] Параллелизм постоянно оказывается темой горячих дискуссий, в связи с чем в этой главе необычно много ссылок — в основном, на недавние работы по заданной теме.
Дополнительнь1е ссылки на работы ознакомительного характера можно найти в соответствующем разделе главы 9. Внутрипроцессорный параллелизм 599 Внутрипроцессорный параллелизм Один из очевидных способов увеличить производительность микросхемы состоит в том, чтобы заставить ее выполнять болыпе операций в единицу времени.
В этом разделе мы рассмотрим некоторые приемы повышения быстродействия за счет параллелизма на уровне микросхемы, в частности, параллелизм на уровне команд, многопоточность и размещение на микросхеме нескольких процессоров. Все эти методики хоть и отличаются друг от друга, но в той или иной степени помогают решить задачу. Их роднит базовый принцип — «уплотнение» операций во времени. Параллелизм на уровне команд Низкоуровневый параллелизм достигается, в частности, вызовом нескольких команд за один тактовый цикл. Процессоры, в которых реализуется этот принцип, делятся на две категории: суперскалярные и У(.1%'. Те и другие уже упоминались в предыдущих главах, но сейчас этот материал нелишне повторить. Схема суперскалярного процессора приведена на рис. 2.5.
В наиболее распространенных конфигурациях команда должна быть готова к исполнению в определенной точке конвейера. Суперскалярные процессоры способны за один тактовый цикл вызывать несколько команд. Число фактически вызываемых команд зависит как от конструкции процессора, так и от текущей ситуации.
Аппаратные ограничения диктуют максимальное число одновременно вызываемых команд— обычно от двух до шести. К тому же, если для выполнения команды нужен недоступный функциональнгяй блок или еще не полученный результат выполнения другой команды, такая команда не будет вызвана даже при наличии физической возможности. Другой вид параллелизма на уровне команд реализуется в процессорах со сверхдлинным командным словом (Чету (.оп8 1пзтгцсйоп Ъ'огб, УЕ1%').
В своем первоначальном исполнении У)1%'-системы, действительно, отличались длинными словами с командами, обращавшимися к нескольким функциональным блокам. Для примера рассмотрим конвейер, изображенный на рис. 8.2, а. Он включает в себя пять функциональных блоков и способен одновременно выполнять две целочисленные операции, одну операцию с плавающей точкой, одну команду загрузки и одну команду сохранения.
В одной команде этой Ъ'1.1%'-системы содержится пять кодов операций и пять пар операндов — по одному коду и одной паре на каждый функциональный блок. С учетом того, что код операции занимает 6 бит, регистр — 5 бит, а ячейка памяти — 32 бита, общая длина команды может достигать 134 бита, что, согласитесь, немало. Однако такое решение было признано неудачным. Дело в том, что не все команды могли обращаться к соответствующим функциональным блокам, в результате в изобилии появлялись бессмысленные пустые операции (рис.
8.2, б). В современных У(.1%'-системах должен быть предусмотрен какой-либо механизм маркировки связок команд, например, для этого может использоваться бит «завершения связки» (рис. 8.2, в). Процессор может выбрать и запустить связку целиком. Задача по подготовке связок команд, которые могут выполняться совместно, решается компилятором. 600 Глава 8. Параллельные компьютерные архитектуры Пустая операция ---(.- (--'ь- ПЕ-8 )-ЕьЗ (-Е(.- ((Е-8 ---(.- --(.ЕЗ НьЛУ-команда завершения связки Связка Рис. 8.2. Конвейер процессора (а); последовательность Нкао-команд (б); поток команд с отмеченными связками (в) Фактически в Ъ'1.1уу'-системах решение проблемы совместимости команд переносится с периода исполнения на стадию компиляции.
В результате аппаратное обеспечение упрошается и удешевляется. Кроме того, поскольку в работе компилятора нет жестких временных ограничений, связки команд формируются более осмысленно, нежели если бы зто происходило в период исполнения. К сожалению, ввести в практику столь радикальные преобразования архитектуры процессора очень сложно, что подтверждается более чем умеренными темпами распространения процессора 1гапшш.
Нелишне заметить, что параллелизм на уровне команд не является единственно возможной формой низкоуровневого параллелизма. Существует также параллелизм на уровне памяти, предусматривающий одновременное исполнение в памяти множества операций (42).
Внутрилроцессорный параллелизм 601 У1.1%-процессор Тп Мед! а В главе 5 на примере процессора 1гапшш 2 мы уже сталкивались с архитектурой Ъ'Е1%'. Теперь познакомимся с другим Ъ"Е1%'-процессором — Тг)Мейа производства компании РЫ11рз. ТгтМейа — это встроенный процессор лля устройств обработки изображений, а также аудио- и видеустройств, таких как СП-, ПЧЕ)- и МРЗ-плееры, устройства записи С() и 1)Ъ'1), интерактивные телевизоры, цифровые фотокамеры, видеокамеры и т. д. Учитывая специализацию, нет ничего удивительного в многочисленных отличиях Тг)Мейа от 1гап)шп 2 — универсального процессора для высокопроизводительных серверов.