- •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.Классификации архитектур параллельных вычислительных систем: Флинна, по способу организации памяти. Нетрадиционные вычислители.
19. Когерентность кэш. Примеры реализации когерентности кэш-памяти: VI, msi, mesi.
Когерентность кэш: В многопроцессорной системе у каждого процессора существует свой собственный кэш. Все кэш-памяти работают с одной общей памятью.
Когерентность кэш - синхронизация актуальных данных во всех кэш-памятях.
19.1 Параллелизм уровня потоков
Поток - неделимая в плане распараллеливания часть выполняемой программы (процесса).
Разделение вычислений между несколькими исполнительными потоками
несколько независимых последовательных потоков, которые конкурируют за общие ресурсы (память, устройства ввода/вывода).
○ Несколько последовательных потоков, которые взаимодействуют друг с другом.
Коммуникационная модель.
Общая память (Shared Memory).
■ Единое адресное пространство.
■ Неявная связь с помощью загрузки и сохранения в память.
○ Обмен сообщениями (Message Passing).
■ Раздельное адресное пространство.
■ Явная связь путем отправки и получения сообщений.
19.2 Синхронизация
● Необходимость в синхронизации возникает каждый раз, когда в системе существуют параллельные процессы.
○ Вилки и соединения (Fork and Join): параллельный процесс может подождать, пока не произойдет несколько событий
(Выполнение далее не произойдет, пока оба
процесса P1 и P2 не завершатся. Их необходимо синхронизировать).
○ Производитель и потребитель (Producer-Consumer): потребительский процесс должен ждать, пока процесс производителя не произведет данные
(Потребитель не может быть запущен раньше
чем производитель произведет данные).
○ Взаимное исключение: ОС должна гарантировать, что ресурс используется только одним процессом в данный момент времени.
19.3 Потоково-безопасное программирование
Многопоточные программы могут выполняться на одном процессоре с помощью таймшеринга.
Каждый поток выполняется некоторое время (Прерывание по таймеру), а затем ОС переключается на другой поток.
Потоково-безопасные многопоточные программы ведут себя одинаково вне зависимости от того, выполняются и они на нескольких процессорах или на одном процессоре.
Мы будем предполагать, что каждый поток имеет свой собственный процессор для запуска.
19.4 Синхронная связь
Решения:
Буфер FIFO
Буфер FIFO ослабляет ограничения, связанные с синхронизацией. Производитель может опередить потребителя на N значений. (N - глубина буфера).
Мультиядерность
Каждое ядро имеет свой program counter и может выполнять разные участки программы.
Современные процессоры обычно имеют от 2 до 8 ядер, где каждое ядро имеет собственный кэш для повышения производительности
Ядра могут использоваться совместно для ускорения работы приложения. (Использование многопоточности).
Ядра взаимодействуют друг с другом через память. (За их синхронизацию отвечают, допустим, семафоры)
Когерентность кэш л18 47:24
Когерентность кэша — свойства кэш-памяти, означающее целостность данных, хранящихся в локальных кэшах, разделяемой системы.
Каждая ячейка кэша имеет флаги, описывающие, как ее состояние соотносится с состоянием ячейки с таким же адресом в других процессорах системы.
Необходимо создать иллюзию единой общей памяти, даже если многоядерные системы имеют несколько приватных(собственных) кэшей.
Информация в приватных кэшах обновляется ядрами и эта обновленная информация должна быть доступна всем другим кэшам, которые собираются использовать эту информацию.