Автор: Пользователь скрыл имя, 13 Ноября 2011 в 18:59, курсовая работа
Идея параллельной обработки данных не нова. Можно считать, что она возникла еще на заре человеческой цивилизации, когда оказалось, что племя может успешно бороться за выживание, если каждый его член выполняет свою часть общей работы.
В ближайшее время под эффективным использованием аппаратных средств компьютера будут пониматься применение параллельных алгоритмов. Это связано с замедлением темпов роста тактовой частоты микропроцессоров и быстрым распространением многоядерных микропроцессоров.
Для эффективной реализации конвейера должны выполняться следующие условия:
Количество сегментов называют глубиной конвейера. Важным условием нормальной работы конвейера является отсутствие конфликтов, приводящих к простоям конвейера. Для этого объекты, поступающие в конвейер, должны быть независимыми. Если, например, операндом является результат предыдущей операции, возникают периоды работы конвейера ("конвейерные пузыри"), когда он пуст. "Пузырь" проходит по конвейеру, занимая место, но не выполняя при этом никакой полезной работы.
Теоретически, максимально достижимое увеличение быстродействия, которое можно получить с помощью конвейера данных, определяется формулой ,
где п — количество операндов, загружаемых в конвейер, d — глубина конвейера.
Цикл выполнения команды состоит из нескольких шагов:
1. Выборка команды.
2. Декодирование
команды, вычисление адреса
3. Выполнение команды.
4. Обращение к памяти.
5. Запись результата в память.
Эти
шаги могут выполняться на устройствах,
организованных в конвейер (рис. 16),
тогда обработка следующей
Рисунок 16
Для того чтобы задействовать все сегментов конвейера, требуется такт. После этого достигается максимальная производительность.
Казалось
бы, увеличение числа сегментов будет
увеличивать и скорость выполнения
команд, однако с ростом глубины
конвейера увеличиваются
Простой конвейера команд вызывается ситуацией, когда очередную команду из потока команд нельзя загрузить в конвейер сразу, а по какой-либо причине приходится ожидать несколько тактов. Если очередная команда в соответствующем ей такте не может быть выполнена, говорят о конфликте. В этом случае команда ожидает своей очереди, а пропускная способность конвейера падает. Ожидать своей очереди приходится и всем последующим командам. Команды, уже загруженные в конвейер, продолжают выполняться.
Принято выделять три типа конфликтов:
Причиной структурных конфликтов является одновременный запрос на использование одного ресурса несколькими командами. Избежать частого повторения структурных конфликтов можно, дублируя некоторые ресурсы, используя разделение кэш-памяти для данных и команд и т. д. Однако это усложняет конструкцию процессора и значительно повышает его стоимость.
Конфликты по данным являются следствием логической зависимости команд между собой и происходят, если для выполнения очередной команды требуется результат выполнения предыдущей команды. В этом случае команда не будет выполняться до тех пор, пока предыдущая команда не завершит свое выполнение и не передаст ей свой результат.
Конфликты
по управлению вызываются наличием в программах
условных конструкций. Выполняемая ветвь
условного оператора определяется только
после вычисления условия ветвления. Если
учесть, что в программах до трети операторов
являются ветвлениями, потери производительности
вследствие простоев по управлению могут
быть большими. Условные переходы труднее
поддаются оптимизации, но и здесь имеются
способы повышения производительности
конвейера при обработке условных переходов.
2.5 Суперскалаярные процессоры
Показателем эффективности работы конвейера является среднее количество тактов на выполнение команды (CPI — Cycles Per Instruction). Чем меньше эта величина, тем выше производительность процессора. Идеальной величиной является 1, однако значение CPI может быть и меньше единицы, если в одном такте параллельно выполняются несколько команд. Параллельное выполнение команд реализовано в суперскалярных процессорах и процессорах со сверхдлинным командным словом.
Это позволяет делать и конвейер, но при этом команды должны находиться на различных стадиях обработки (в разных сегментах конвейера). Суперскалярный процессор не только включает возможность конвейерной обработки, но и позволяет одновременно выполнять несколько команд в одном сегменте конвейера. Несколько команд одновременно могут выполняться в течение одного такта.
Суперскалярные процессоры используют параллелизм на уровне команд путем дублирования функциональных устройств и передачи в них нескольких команд из общего потока. Прежде всего, используют несколько конвейеров, работающих параллельно. Правда, параллельное выполнение команд в суперскалярных процессорах не всегда возможно. Это может быть следствием любой из трех причин.
Для разрешения возможных конфликтов используют методы внеочередной выборки и завершения команд, прогнозирование переходов, условное выполнение команд и др.
В суперскалярных процессорах используется динамическое распределение команд, причем порядок их выборки может не совпадать с порядком следования в программе, но при этом, разумеется, результат выполнения должен совпадать с результатом строго последовательного выполнения. Для эффективной реализации данного подхода последовательность команд, из которой производится выборка, должна быть достаточно большой — требуется довольно большое окно выполнения (Window of Execution).
Окно выполнения — это набор команд, которые являются кандидатами на выполнение в данный момент. Любая команда из этого окна может быть взята для исполнения с учетом вышеупомянутых ограничений. Количество команд в окне должно быть максимально большим.
Основными
компонентами суперскалярного процессора
являются устройства для интерпретации
команд, снабженные логикой, позволяющей
определить, являются ли команды независимыми,
и достаточное число
В
суперскалярном процессоре в одном
такте может выполняться
Почти
все современные
2.6 Процессоры с сокращенным набором команд (RISC)
В
основе RISC-архитектуры (RISC — Reduced Instruction
Set Computer) процессора лежит идея увеличения
скорости его работы за счет упрощения
набора команд. Противоположную тенденцию
представляют CISC-архитектуры, процессоры
со сложным набором команд (CISC —
Complete Instruction Set Computer). Основоположником
архитектуры CISC является компания IBM, а
в настоящее время лидером
в данной области является Intel (процессоры
Pentium). Идеи RISC-архитектуры
В
основу RISC-архитектуры положены следующие
принципы и идеи. Набор команд должен
быть ограниченным и включать только
простые команды, время выполнения
которых после выборки и
Сложные
команды RISC-процессором выполняются
дольше, но их количество относительно
невелико. Простые команды CISC-процессором
выполняются не очень быстро, что
объясняется сложностью реализации
команд в данной архитектуре. В RISC-процессорах
небольшое число команд адресуется
к памяти. Выборка данных из оперативной
памяти требует более одного такта.
Большая часть команд работает с
операндами, находящимися в регистрах.
Все команды имеют
Несмотря на упомянутые преимущества RISC-архитектуры, нет простого и однозначного ответа на вопрос о том, что лучше — RISC или CISC. Так, например, для RISC-архитектуры характерны повышенные требования к оперативной памяти. Примером CISC-процессора является процессор Pentium (количество команд более 200, длина команды 1—11 разрядов, имеется 8 регистров общего назначения), а в качестве примера RISC-процессора можно привести SunSPARC (количество команд около 50, длина команды 4 разряда, имеется 520 регистров общего назначения).