- •Содержание
- •Лекционный курс модуль Вводный
- •1. Цели и задачи курса
- •2. Микропроцессор и микропроцессорная система
- •3. Основные понятия и определения
- •4. Характеристики микропроцессоров
- •5. Классификация микропроцессоров
- •6. Эволюция микропроцессоров
- •Модуль I. Организация микропроцессорной системы
- •1. Основные типы архитектур микропроцессорных систем. Фон-неймановская (принстонская) и гарвардская архитектуры. Организация пространств памяти и ввода-вывода.
- •5. Прямой доступ к памяти. Организация прямого доступа к памяти. Контроллер пдп.
- •6. Память микропроцессорной системы. Функции памяти. Архитектура и иерархия памяти. Организация кэш-памяти. Виртуальная память.
- •Увеличение разрядности основной памяти
- •Память с расслоением
- •Использование специфических свойств динамических зупв
- •Страничная организация памяти
- •Сегментация памяти
- •Модуль II. Универсальные микропроцессоры
- •1. Определение понятия «архитектура». Архитектура системы команд. Классификация процессоров cisc и risc. Определение понятия "архитектура"
- •Архитектура системы команд. Классификация процессоров (cisc и risc)
- •2. Методы адресации и типы данных. Типы команд. Команды управления потоком команд. Методы адресации
- •Типы команд
- •Команды управления потоком команд
- •3. Конвейеризация и параллелизм. Конвейерная организация обработки данных. Простейшая организация конвейера и оценка его производительности.
- •Простейшая организация конвейера и оценка его производительности
- •Конфликты по данным, остановы конвейера и реализация механизма обходов
- •Классификация конфликтов по данным
- •Конфликты по данным, приводящие к приостановке конвейера
- •Методика планирования компилятора для устранения конфликтов по данным
- •Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
- •Снижение потерь на выполнение команд условного перехода
- •5. Проблемы реализации точного прерывания в конвейере. Обработка многотактных операций и механизмы обходов в длинных конвейерах Проблемы реализации точного прерывания в конвейере
- •Обработка многотактных операций и механизмы обходов в длинных конвейерах
- •Конфликты и ускоренные пересылки в длинных конвейерах
- •Поддержка точных прерываний в длинных конвейерах
- •Параллелизм уровня команд: зависимости и конфликты по данным
- •Параллелизм уровня цикла: концепции и методы
- •Основы планирования загрузки конвейера и разворачивание циклов
- •7. Зависимости. Классификация зависимостей и их применение. Устранение зависимостей по данным и механизмы динамического планирования. Зависимости. Их классификация и применение.
- •Устранение зависимостей по данным и механизмы динамического планирования Основная идея динамической оптимизации
- •Динамическая оптимизация с централизованной схемой обнаружения конфликтов
- •Другой подход к динамическому планированию - алгоритм Томасуло
- •Дальнейшее уменьшение приостановок по управлению: буфера целевых адресов переходов
- •9. Одновременная выдача нескольких команд для выполнения и динамическое планирование.
- •10. Архитектура машин с длинным командным словом (vliw). Средства поддержки большой степени распараллеливания.
- •Средства поддержки большой степени распараллеливания
- •Обнаружение и устранение зависимостей
- •Программная конвейеризация: символическое разворачивание циклов
- •Трассировочное планирование
- •Аппаратные средства поддержки большой степени распараллеливания
- •Условные команды
- •Выполнение по предположению (speculation)
- •11. Архитектура epic.
- •Модуль III. Микроконтроллеры и специализированные микропроцессоры
- •2. Специализированные микропроцессоры. Цифровые процессоры обработки сигналов.
- •Модуль Заключительный Перспективы развития микропроцессорной техники.
- •Лабораторный курс
- •7 Семестр. Лабораторная работа 1.
- •Лабораторная работа 2.
- •Лабораторная работа 3.
- •Лабораторная работа 4.
- •8 Семестр. Лабораторная работа 1.
- •1. Общие сведения
- •2. Настройка и запуск Code Composer Studio (simulation)
- •3. Особенности проектирования в иср Code Composer Studio
- •4. Реализация проекта в иср Code Composer Studio
- •5. Тестирование проекта в иср Code Composer Studio
- •6. Аппаратная реализация проекта в иср Code Composer Studio
- •Лабораторная работа 2.
- •1. Подключение файлов ввода/вывода с помощью точек зондирования
- •2. Работа с файлами по средствам функций языка с
- •3. Работа с dsp/bios для генерации звукового сигнала платой dsk5510
- •Лабораторная работа 3.
- •1 Цифровая фильтрация
- •2. Реализация ких фильтра на симуляторе dsk5510
- •3. Реализация ких фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Лабораторная работа 4.
- •1. Фильтры с бесконечной импульсной характеристикой – бих
- •2. Реализация бих фильтра на симуляторе dsk5510
- •Фильтр низкой частоты с нормальной частотой среза 0.1
- •Фильтр низкой частоты с нормальной частотой среза 0.2
- •Полосовой фильтр с нормальной частотой среза 0.165 – 0.33
- •3. Реализация бих фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Фильтр низкой частоты с нормальной частотой среза 0.1
- •Фильтр низкой частоты с нормальной частотой среза 0.2
- •Полосовой фильтр с нормальной частотой среза 0.165 – 0.33
- •Оценка работы студентов. Рейтинговая система.
- •1. Общие положения
- •2. Организация рейтингового контроля успеваемости студентов дневной формы обучения
- •3. Выставление оценок по рейтинговой системе
- •4. Организация рейтингового контроля успеваемости студентов заочной формы обучения
- •Учебно-методические материалы Основная литература
- •Дополнительная литература
Аппаратные средства поддержки большой степени распараллеливания
Методы, подобные разворачиванию циклов и планированию трасс, могут использоваться для увеличения степени доступного параллелизма, когда поведение условных переходов достаточно предсказуемо во время компиляции. Если же поведение переходов не известно, одной техники компиляторов может оказаться не достаточно для выявления большей степени параллелизма уровня команд. В этом разделе представлены два метода, которые могут помочь преодолеть подобные ограничения. Первый метод заключается в расширении набора команд условными или предикатными командами. Такие команды могут использоваться для ликвидации условных переходов и помогают компилятору перемещать команды через точки условных переходов. Условные команды увеличивают степень параллелизма уровня команд, но имеют существенные ограничения. Для использования большей степени параллелизма разработчики исследовали идею, которая называется "выполнением по предположению" (speculation), и позволяет выполнить команду еще до того, как процессор узнает, что она должна выполняться (т.е. этот метод позволяет избежать приостановок конвейера, связанных с зависимостями по управлению).
Условные команды
Концепция, лежащая в основе условных команд, достаточно проста: команда обращается к некоторому условию, оценка которого является частью выполнения команды. Если условие истинно, то команда выполняется нормально; если условие ложно, то выполнение команды осуществляется, как если бы это была пустая команда. Многие новейшие архитектуры включают в себя ту или иную форму условных команд. Наиболее общим примером такой команды является команда условной пересылки, которая выполняет пересылку значения одного регистра в другой, если условие истинно. Такая команда может использоваться для полного устранения условных переходов в простых последовательностях программного кода.
Например, рассмотрим следующий оператор:
if (A=0) {S=T;};
Предполагая, что регистры R1, R2 и R3 хранят значения A, S и T соответственно, представим код этого оператора с командой условного перехода и с командой условной пересылки.
Код с использованием команды условного перехода будет иметь следующий вид:
BEQZ R1,L
MOV R2,R3
L:
Используя команду условной пересылки, которая выполняет пересылку только если ее третий операнд равен нулю, мы можем реализовать этот оператор с помощью одной команды:
CMOVZ R2,R3,R1
Условная команда позволяет преобразовать зависимость по управлению, присутствующую в коде с командой условного перехода, в зависимость по данным. (Это преобразование используется также в векторных машинах, в которых оно называется if-преобразованием – if-convertion). Для конвейерной машины такое преобразование позволяет перенести точку, в которой должна разрешаться зависимость, от начала конвейера, где она разрешается для условных переходов, в конец конвейера, где происходит запись в регистр.
Одним из примеров использования команд условной пересылки является реализация функции вычисления абсолютного значения: A = abs (B), которая реализуется оператором
if (B<0) {A=-B} else {A=B}.
Этот оператор if может быть реализован парой команд условных пересылок или командой безусловной пересылки (A=B), за которой следует команда условной пересылки (A=-B).
Условные команды могут использоваться также для улучшения планирования в суперскалярных или VLIW-процессорах. Ниже приведен пример кодовой последовательности для суперскалярной машины с одновременной выдачей для выполнения не более двух команд. При этом в каждом такте может выдаваться комбинация одной команды обращения к памяти и одной команды АЛУ или только одна команда условного перехода:
LW R1,40(R2) ADD R3,R4,R5
ADD R6,R3,R7
BEQZ R10,L
LW R8,20(R10)
LW R9,0(R8)
Эта последовательность теряет слот операции обращения к памяти во втором такте и приостанавливается из-за зависимости по данным, если переход невыполняемый, поскольку вторая команда LW после перехода зависит от предыдущей команды загрузки. Если доступна условная версия команды LW, то команда LW, немедленно следующая за переходом (LW R8,20(R10)), может быть перенесена во второй слот выдачи. Это улучшает время выполнения на несколько тактов, поскольку устраняет один слот выдачи команды и сокращает приостановку конвейера для последней команды последовательности.
Для успешного использования условных команд в примерах, подобных этому, семантика команды должна определять команду таким образом, чтобы не было никакого побочного эффекта, если условие не выполняется. Это означает, что если условие не выполняется, команда не должна записывать результат по месту назначения, а также не должна вызывать исключительную ситуацию. Как показывает вышеприведенный пример, способность не вызывать исключительную ситуацию достаточно важна: если регистр R10 содержит нуль, команда LW R8,20(R10), выполненная безусловно, возможно вызовет исключительную ситуацию по защите памяти, а эта исключительная ситуация не должна возникать. Именно эта вероятность возникновения исключительной ситуации не дает возможность компилятору просто перенести команду загрузки R8 через команду условного перехода. Конечно, если условие удовлетворено, команда LW все еще может вызвать исключительную ситуацию (например, ошибку страницы), и аппаратура должна воспринять эту исключительную ситуацию, поскольку она знает, что управляющее условие истинно.
Условные команды определенно полезны для реализации коротких альтернативных потоков управления. Тем не менее полезность условных команд существенно ограничивается несколькими факторами:
Аннулируемые условные команды (т.е. команды, условие которых является ложным) все же отнимают определенное время выполнения. Поэтому перенос команды через команду условного перехода и превращение ее в условную будет замедлять программу всякий раз, когда перенесенная команда не будет нормально выполняться. Важное исключение из этого правила возникает, когда такты, используемые перенесенной невыполняемой командой, были бы в любом случае холостыми (как в вышеприведенном примере с суперскалярной обработкой). Перенос команды через команду условного перехода существенно базируется на предположении о направлении перехода. Условные команды упрощают реализацию такого переноса, но не устраняют время выполнения, которое будет затрачено при неправильном предположении.
Условные команды наиболее полезны, когда условие может быть вычислено заранее. Если условие и условный переход не могут быть отделены друг от друга (из-за зависимости по данным при определении условия), то условная команда не поможет, хотя все еще может оказаться полезной, поскольку она задерживает момент времени, когда условие должно стать известным, почти до конца конвейера.
Использование условных команд ограничено, когда в поток управления вовлечено больше одной простой альтернативной последовательности команд. Например, при переносе команды через пару команд условного перехода необходимо, чтобы она оставалась зависимой от обоих условий, что требует либо спецификации в команде сразу двух условий (маловероятная возможность), либо вставки дополнительных команд для вычисления конъюнкции условий.
Условные команды могут давать некоторые потери скорости по сравнению с безусловными командами. Это может проявиться либо в большем количестве тактов, необходимых для выполнения таких команд, либо в уменьшении общей частоты синхронизации машины. Если условные команды являются более дорогими с точки зрения скорости выполнения, то их следует использовать осмысленно.
По этим причинам во многих современных архитектурах используется небольшое число условных команд (наиболее популярными являются команды условных пересылок), хотя некоторые из них включают условные версии большинства команд (таблица 22).
Таблица 24 – Условные команды в современных архитектурах
Alpha |
HP-PA |
MIPS |
PowerPC |
SPARC |
Условная пересылка |
Любая команда типа регистр-регистр может аннулировать следующую команду, делая ее условной |
Условная пересылка |
Условная пересылка |
Условная пересылка |