Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LK_MashZavYP_Akchurin_2011.pdf
Скачиваний:
237
Добавлен:
10.06.2015
Размер:
9 Мб
Скачать

Факторы, снижающие эффективность конвейера:

Простой конвейера, когда некоторые ступени не используются (например, адресация и выборка операнда из ОЗУ не нужны, если команда работает с регистрами).

Ожидание: если следующая команда использует результат предыдущей, то последняя не может начать выполняться до выполнения первой (это преодолевается при использовании внеочередного выполнения команд — out- of-order execution).

Очистка конвейера при попадании в него команды перехода (эту проблему удаётся сгладить, используя предсказание переходов).

Некоторые современные процессоры имеют более 30 ступеней в конвейере, что увеличивает производительность процессора, однако приводит к большому времени простоя (например, в случае ошибки в предсказании условного перехода). Не существует единого мнения по поводу оптимальной длины конвейера: различные программы могут иметь существенно различные требования.

Процессор с одним конвейером называется скалярным.

1.7. Суперскалярная архитектура

Процессор, построенный по суперскалярной архитектуре, имеет 2 (или больше) конвейера для выполнения команд. Это позволяет одновременно выполнять 2 (или больше) команды. Чтобы лучше понять целесообразность применения суперскалярной архитектуры в процессоре, давайте рассмотрим предыдущий пример конвейерной обработки, в котором мы для упрощения предполагали, что этап выполнения команды (Э4) длится всего 1 машинный такт. А что же

18

произойдет, если этап выполнения команды Э4 длится 2 машинных такта? Тогда в работе конвейера возникнут сбои, как показано на рисунке.

Процессор не сможет перейти к фазе выполнения Э4 команды K2, пока он полностью не завершит фазу выполнения команды K1. В результате цикл выполнения команды К-2 увеличится на 1 машинный такт, т.е. на время ожидания освобождения конвейера на этапе Э4. По мере поступления на конвейер дополнительных команд, некоторые его ступени будут работать вхолостую (на рисунке они выделены серым цветом).

Для борьбы с простоями оборудования используются нескольео конвеййеров. В процессоре Intel Pentium было применено 2 конвейера. Он стал первым процессором семейства IA-32, построенным по суперскалярной архитектуре. В процессоре Pentium Рго впервые было применено 3 конвейера.

Продолжим рассмотрение нашего примера шестиступенчатого конвейера и введем в него еше один (т.е. второй) конвейер. Как и раньше мы будем предполагать, что фаза выполнения команды Э4 длится 2 машинных такта. Как показано на рисунке, команда с нечетным номером поступает на u-конвейер, а команда с четным номером — на v-конвейер. Подобный подход позволяет ликвидировать простои в работе конвейера.

19

В МП с такой архитектурой применяется распараллеливание исполнения команд между несколькими конвейерами, причём решение о параллельном ис-

полнении команд принимается аппаратурой процессора на этапе исполне-

ния. Эффективное использование такой архитектуры требует специальной оптимизации машинного кода в компиляторе для генерации пар независимых команд (когда результат одной команды не является аргументом другой).

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

В типичной суперскалярной машине аппаратура может осуществлять выдачу от 1 до 8 команд в одном такте. Обычно эти команды должны быть независимыми и удовлетворять некоторым ограничениям, например таким, что в каждом такте не может выдаваться более одной команды обращения к памяти. Если какаялибо команда в потоке команд является логически зависимой или не удовлетворяет критериям выдачи, на выполнение будут выданы только команды, предшествующие данной. Поэтому скорость выдачи команд в суперскалярных машинах является переменной

20

1.8. Архитектура VLIW

Архитектуры VLIW (Very Long Instruction Word) используют очень длинное слово команды. Отличаются от суперскалярной архитектуры тем, что решение о рас-

параллеливании принимается компилятором на этапе генерации кода, а не аппаратурой на этапе исполнения. Команды очень длинны и содержат явные инструкции по распараллеливанию нескольких субкоманд на несколько устройств исполнения.

VLIW процессором в его классическом виде является Itanium. Разработка эффективного компилятора для VLIW является сложнейшей задачей. Преимущество VLIW перед суперскалярной архитектурой заключается в том, что компилятор может быть более развитым, нежели устройства управления процессора, и он способен хранить больше контекстной информации для принятия более верных решений по оптимизации.

VLIW - архитектура процессоров с несколькими вычислительными устройствами. Характеризуется тем, что одна инструкция процессора содержит несколько операций, которые должны выполняться параллельно. Задача распределения между ними работы решается программно

1.9. Архитектуры CISC, RISC

Архитектура CISC – это классическая архитектура. В ней использована полная система команд (около 300 команд), из которых практически используется третья часть. В настоящее время применяется для совместимости с созданными ранее программами.

Пример использования - иямикроконтроллер MCS-51 (Intel 8051) . Для него существует кросс-ассемблер ASM51, выпущенный корпорацией MetaLink. Кроме того, многие фирмы — разработчики программного обеспечения, такие как IAR или Keil, представили свои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективным благодаря удобному набору директив и наличию среды программирования, объединяющей в себе профессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.

Архитектура RISC – это современная архитектура. В ней использована сокращенная система команд (около ё00 команд), из которых практически все используются. Наиболее употребим реализация AVR. На данный момент существуют 2 компилятора производства Atmel (AVRStudio 3 и AVRStudio4). Вторая версия — попытка исправить не очень удачную первую.

21

1.10. Ассемблеры 1.10.1. Программа Ассемблер

Ассемблер (assembler — сборщик) — компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.

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

Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные и непривязанные друг к другу части машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью программы-компоновщика («линкера») может быть скомпонован исполнимый файл.

Ассемблеры для DOS. Наиболее известными ассемблерами для операцион-

ной системы DOS являлись Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был попу-

лярен простой ассемблер A86.

Ассемблеры для Windows. При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником !tE), позволившее создавать программы для выполнения в среде Windows. Последняя известная версия TASM — 5.3, поддерживающая инструкции MMX, на данный момент включена в Turbo C++ Explorer. Но официально развитие программы полностью остановлено.

22

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]