- •2. Арифметико-логические устройства. Определение, структура, подход к проектированию, основные уравнения работы алу (пример синтеза выражения). Особенности знаковой и беззнаковой арифметики.
- •4. Особенности представления чисел в форматах с фиксированной и плавающей запятой. Особенности аппаратной реализации арифметических операций над числами в форматах с фиксированной и плавающей запятой.
- •5. Архитектура системы команд. Система команд и способы адресации операндов. Классификация архитектур по сложности кодирования инструкций (risc, cisc). Уровни абстракции представления микропроцессора.
- •7. Процессоры с однотактным, многотактным и конвейеризированным устройствами управления. Особенности построения. Достоинства и недостатки каждой из реализаций.
- •9.Подход к проектированию однотактного процессора на примере архитектуры risc-V. Сравнение с другими подходами к реализации микроархитектуры.
- •10.Подход к проектированию многотактного процессора на примере архитектуры risc-V. Сравнение с другими подходами к реализации микроархитектуры.
- •11. Подход к проектированию конвейерного процессора на примере архитектуры risc-V. Сравнение с другими подходами к реализации микроархитектуры.
- •12. Структурные конфликты и способы их минимизации. Конфликты по данным, их классификация и примеры реализаций механизмов их обходов.
- •13. Сокращение потерь на выполнение команд перехода и методы минимизации конфликтов по управлению.
- •14. Методы повышения производительности процессоров: суперскалярность, суперконвейерность, гипертрейдинг, внеочередное исполнение команд, переименовывание регистров и т.П.
- •Суперскалярность
- •Внеочередное выполнение команд
- •Переименовывание регистров
- •16. Иерархия памяти: причины, зависимости, следствия. Статическое и динамическое озу. Организация систем памяти в микропроцессорных системах.
- •17. Принципы организации кэш-памяти. Способы отображения данных из озу в кэш-память. Варианты построения.
- •18. Виртуальная память. Принципы функционирования и способы организации виртуальной памяти. Tlb.
- •19. Когерентность кэш. Примеры реализации когерентности кэш-памяти: VI, msi, mesi.
- •19.1 Параллелизм уровня потоков
- •19.2 Синхронизация
- •19.3 Потоково-безопасное программирование
- •19.4 Синхронная связь
- •Мультиядерность
- •Когерентность кэш л18 47:24
- •Поддержка когерентности
- •Реализация когерентности
- •Оптимизация msi: e-Состояние (Exclusive)
- •21. Механизм граничного сканирования регистров. Jtag. Области применения.
- •22. Обмен информацией между элементами в микропроцессорных системах. Организация шинного обмена. Виды и иерархии шин.
- •Иерархияшин
- •Вычислительная машина с двумя видами шин
- •Вычислительная машина с тремя видами шин
- •23. Арбитр магистрали. Алгоритмы и схемы арбитража. Методы повышения эффективности шин.
- •Отдельная шина системы ввода-вывода
- •Модули ввода-вывода
- •Конфигурации пдп(dma)
- •27. Микроконтроллеры. Определение, виды, характеристики, особенности построения и применения.
- •29.Классификации архитектур параллельных вычислительных систем: Флинна, по способу организации памяти. Нетрадиционные вычислители.
14. Методы повышения производительности процессоров: суперскалярность, суперконвейерность, гипертрейдинг, внеочередное исполнение команд, переименовывание регистров и т.П.
Суперконвейерность.
Суперконвейер - конвейерный процессор с числом стадий больше 10.
Суть в том, чтобы разделить стадии обычного конвейера на ещё меньшие стадии.
Суперконвейер в теории может быть быстрее конвейера, но это зависит от эффективности устранения его конфликтов
Суперскалярность
Обычный, скалярный процессор - процессор который работает с одной порцией данных за одну инструкцию.
Суперскалярный процессор - процессор, поддерживающий так называемый параллелизм на уровне инструкций (процессор способен исполнять из одного общего потока инструкций сразу несколько штук) за счет включения в состав его вычислительного ядра нескольких одинаковых исполнительных устройств.
Векторные процессоры - от обычных отличаются тем, что в них стоит несколько исполнительных устройств, данные в которые загружаются одновременно. Операндами здесь выступают упорядоченные массивы данных (векторы), над которыми выполняется ОДНА и та же операция (например, поэлементное сложение или вычитание).
Скалярные процессоры, в отличие от векторных, могут выполнять разные операции в один и тот же момент времени.
Пример реализации суперскалярного процессора:
Микроархитектура очень похожа на конвейерный процессор. Разница в том, что для того, чтобы обрабатывать две инструкции за раз, нам нужно расширить количество портов регистрового файла и количество АЛУ в два раза. А также желательно использование двух портов на чтение в Data Memory для возможности параллельного выполнения двух инструкций чтения (в противном случае при выполнении этих двух операций подряд будет возникать структурный конфликт; при выполнении, например, чтения из Data Memory и вычислительной инструкции конфликт возникать не будет)
При максимальной загрузке двухканального суперскалярного процессора и идеальной пропускной способности параметр cpi = 0.5 (cycle per instruction) или ipc = 2 (instruction per cycle). Пример на картинке:
Но на практике идеальных суперскалярных процессоров не бывает.
На картинке изображён такой пример шестиканального суперскалярного процессора:
Поэтому для увеличения загрузки суперскалярного процессора применяются различные подходы.
Внеочередное выполнение команд
Базовый блок в программном коде - часть кода, в начале и конце которой стоят условные переходы, а внутри код исполняется линейно (не содержит условные переходы). В пределах базового блока можно сортировать инструкции так, как нам угодно, для повышения производительности, но следя за тем, чтобы при этом не появлялись конфликты.
Синими стрелками показано, какой конфликт появился бы, если бы очередь команд была составлена неправильно:
При внеочередном выполнении команд бывает такое, что две инструкции подряд хотят записать результат операции в один и тот же регистр. На первый взгляд, это глупо, но на практике это может быть нужно для формирования исключительных ситуаций (например, переполнения, при котором управление передаётся ОС).
Просто так изменить очередь исполнения этих команд нельзя, так как произойдёт WAW-конфликт. Поэтому существует понятие squashing - запрет команде записывать результат в память. При использовании squashing процессор сначала выполнит команду sub, запишет результат её выполнения в память, а через какое-то время выполнит add, но запретит ей записывать свой результат в память
В данном примере результат команды sub запишется в регистр t0