
- •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.Классификации архитектур параллельных вычислительных систем: Флинна, по способу организации памяти. Нетрадиционные вычислители.
4. Особенности представления чисел в форматах с фиксированной и плавающей запятой. Особенности аппаратной реализации арифметических операций над числами в форматах с фиксированной и плавающей запятой.
Из лекции:
Модуль это просто число по модулю (в десятичной 2.375)
Прямой код этот тот же модуль, только старший бит отвечает за знак, 1 - значит минус
(-2.375)
Дополнительный код - инвертируем число по модулю и добавляем единицу к младшему разряду
Все числа имеют фиксированную длину и количество знаков после запятой. То есть в четырехразрядную целую часть мы никак не можем записать число 16
Число с плавающей точкой состоит из 3 частей
1 бит для знака, 8 бит для экспоненты и 23 бита для мантиссы
Число 228 представлено как 11100100, но так как старший бит всегда 1, то его мы убираем, запоминаем и сдвигаем число на 1 влево, в мантиссу записывается
1100100..00
В биты для экспоненты, используя смещение, записываем число 127 + 7, такой способ упрощает аппаратуру и проще сравнивать числа
Аппаратная реализация сложения, умножения и деления чисел с плавающей точкой:
5. Архитектура системы команд. Система команд и способы адресации операндов. Классификация архитектур по сложности кодирования инструкций (risc, cisc). Уровни абстракции представления микропроцессора.
Системой команд (СК) вычислительной машины называют полный перечень команд, которые способна выполнять данная ВМ.
Система команд (instruction set) — это совокупность команд, или инструкций, выполнение которых на аппаратном уровне поддерживает процессор.
Различают шесть основных способов адресации операндов:
∙непосредственная;
∙прямая;
∙регистровая;
∙косвенно-регистровая;
∙косвенно-регистровая со смещением; ∙относительная.
Под архитектурой системы команд (АСК) принято определять те средства вычислительной машины, которые видны и доступны программисту.
Классификация архитектуры системы команд
Классификация по составу и сложности команд
Пытаясь преодолеть семантический разрыв, разработчика ВМ в настоящее время выбирают один из трех подходов и, соответственно, один из 3 типов АСК: ● архитектура с полным набором команд: CISC (Complex Instruction Set Computer);
архитектура с сокращенным набором команд: RISC (Reduced Instruction Set Computer);
архитектура с командными словами сверхбольшой длины: VLIW (Very Long Instruction Word).
Уровни представления микропроцессорной системы
Микропроцессорная система может быть описана, например, на одном из следующих уровней абстрактного представления: 1) "черный ящик"; 2) структурный; 3) программный; 4) логический; 5) схемный .
На уровне "черного ящика" микропроцессорная система описывается внешними спецификациями; перечисляются внешние характеристики.
Структурный уровень создается компонентами микропроцессорной системы: микропроцессорами, запоминающими устройствами, устройствами ввода/вывода, внешними запоминающими устройствами, каналами связи. Микропроцессорная система описывается функциями отдельных устройств и их взаимосвязью, информационными потоками.
Программный уровень разделяется на два подуровня: команд процессора и языковой. Микропроцессорная система интерпретируется как последовательность операторов или команд, вызывающих то или иное действие над некоторой структурой данных.
Логический уровень присущ исключительно дискретным системам. На этом уровне выделяются два подуровня: переключательных схем и регистровых пересылок.
Сxемный уровень образуется резисторами и конденсаторами. Показателями поведения системы на этом уровне служат напряжение и ток, представляемые в функции времени или частоты.
6. Компиляция программ с языков высокого уровня в машинные коды (представления условных операторов, циклов и вызова подпрограмм на примере языка ассемблера RISC-V). Трансляция, ассемблирование, компоновка.
RISC (Reduced Insrtuction Set Computer) — архитектура с сокращённым набором команд. В таких архитектурах поддерживается относительно небольшой набор простых инструкций (обычно до 100), притом все они имеют одинаковый размер. RISC также является load/store архитектурой, это значит, что для того, чтобы выполнить какую-либо операцию над данными, их необходимо предварительно разместить в регистровом файле. Все операции происходят только с данными в регистровом файле, а для доступа к основной памяти используются специальные инструкции типа load и store.
В подавляющем большинстве случаев, современные программы пишутся на языках высокого уровня. Процессоры не понимают языков высокого уровня, поэтому компиляторы переводят текст (программу), написанный на языке высокого уровня в последовательность простых инструкций языка ассемблера. После этого, программу на языке ассемблера переводят в последовательность машинных команд — то, что понятно процессору.
Условные операторы
Условный оператор if реализуется за счёт использования инструкций условного перехода.
Циклы
Оператор цикла while также реализуется за счёт применения инструкций условного перехода.
Процедуры (они же функции или подпрограммы) – это повторно используемые фрагменты кода, реализующие вычисления определённой задачи. Использование процедур позволяет абстрагироваться и повторно использовать один и тот же код, но с разными входными параметрами. Большие программы состоят из подпрограмм, включающих в себя другие подпрограммы и так далее.
Программа, которая вызывает подпрограмму называется вызывающей. Подпрограмма которую вызывают называется вызываемой подпрограммой. Вызывающая программа использует тот же набор регистров, что и вызываемая, поэтому: либо вызывающая, либо вызываемая должна сохранять регистры вызывающей в памяти и восстанавливает их, когда процедура завершает своё выполнение.
Пример вызова подпрограммы с сохранением сохраняемых регистров на стек
Компиляция программ с языков высокого уровня происходит в несколько этапов. Сначала высокоуровневый код компилируется в код на языке ассемблера, который затем ассемблируется в машинный код и сохраняется в виде объектного файла. Компоновщик, также называемый редактором связей или линкером (linker), объединяет полученный объектный код с объектным кодом библиотек и других файлов, в результате чего получается готовая к исполнению программа. На практике, большинство компиляторных пакетов выполняют все три шага: компиляцию, ассемблирование и компоновку. Наконец, загрузчик загружает программу в память и запускает её.
Ассемблирование - это процесс преобразования исходного кода на языке ассемблера в машинный код, который может быть выполнен процессором. Для ассемблирования программы на языке ассемблера RISC-V требуется использовать специальные ассемблеры, которые понимают инструкции этой конкретной архитектуры. Процесс ассемблирования включает в себя преобразование мнемоник ассемблерных инструкций в бинарный формат, понятный процессору архитектуры RISC-V.
Компоновка (linking) - это процесс объединения объектных файлов, полученных в результате компиляции программы, в единый исполняемый файл или динамическую библиотеку. Этот процесс включает в себя создание таблиц символов, разрешение зависимостей, вычисление адресов функций и переменных, а также создание заголовков и других структур данных, необходимых для работы программы.
Трансляция - процесс преобразования программы на высокоуровневом языке программирования в эквивалентную программу на низкоуровневом языке, как, например, трансляция программы на языке ассемблера в машинный код.