Архитектура ЭВМ. Лекция 3: Кодирование и тип инструкций процессора.
Создание компьютера: Проектирование и Архитектура
Обзор раздела: В этом разделе рассматривается процесс создания компьютера, начиная с базовых блоков и принципов управления.
Создание компьютера
- Курс по созданию простого компьютера, который будет разбираться на протяжении нескольких лекций.
- Обсуждение риска в проектировании компьютера и важности понимания его структуры.
- Разговор о том, как компьютер хранит и обрабатывает данные через устройства управления.
Проектирование Архитектурного Состояния
Обзор раздела: В данном разделе рассматривается определение архитектурного состояния и системы команд в процессе проектирования компьютера.
Определение Архитектурного Состояния
- Задачи определения архитектурного состояния и системы команд для построения процессора.
- Обсуждение архитектуры процессора, включая систему команд и интерфейс для выполнения операций над данными.
Регистры и Исполнительный Контекст
Обзор раздела: В этой части обсуждаются регистры, исполнительный контекст и операции над данными в рамках архитектуры процессора.
Регистры и Исполнительный Контекст
- Роль регистров в хранении данных для выполнения операций над ними.
Память и регистры в процессоре
Обзор раздела: В данном разделе рассматривается устройство памяти и регистров в процессоре, а также их взаимосвязь.
Устройство памяти
- Память устроена с использованием шины адресов и шины данных.
- Регистровый файл содержит степени двойки регистров.
- Разрядность регистра всегда является степенью двойки.
Работа с регистрами
- Каждый провод кодирует 0 или 1, обеспечивая степень двойки для количества проводов.
- Разработчик сам выбирает количество и назначение регистров.
Именование и использование регистров
Обзор раздела: Здесь обсуждается принцип именования, использования и группировки регистров в процессоре.
Именование регистров
- Регистры могут быть равноправными или относиться к определенным группам (например, общего назначения).
- Существуют специальные регистры для указателей, управления памятью и других целей.
Программирование на ассемблере
- Использование ассемблера для работы с конкретными байтами и операциями над регистрами.
- Названия регистров определяются разработчиком архитектуры процессора.
Проектирование процессора
Обзор раздела: Обсуждение выбора имён для регистров при проектировании процессора.
Выбор имён для регистров
Проектирование системы команд процессора
Обзор раздела: В данном разделе рассматривается проектирование системы команд процессора и ассемблерный язык.
Проектирование системы команд
- Разработчики могут переименовывать инструкции в соответствии с архитектурой.
- Показ задачи построения процессора и его командного набора.
- Описание регистрового файла и ассемблерного языка.
- Сравнение кода на языке C и ассемблере для понимания работы процессора.
Кодирование инструкций в ассемблере
Обзор раздела: Здесь рассматривается кодирование инструкций в ассемблере и работа с операндами.
Кодирование инструкций
- Объяснение работы с операндами в коде на языке C и преобразовании их в инструкции для процессора.
- Пример кодирования перемещения данных из памяти в регистр через ассемблер.
- Использование регистров для выполнения математических операций на примере сложения.
Группировка инструкций процессора
Обзор раздела: Рассмотрение группировки инструкций процессора для оптимизации работы.
Группировка инструкций
- Объяснение необходимости группировки инструкций для упрощения работы процессора.
- Разделение инструкций на классы по структуре операций и использованным регистрам.
Кодирование различных типов инструкций
Обзор раздела: Изучение способов кодирования различных типов инструкций для эффективной работы процессора.
Кодирование типов инструкций
- Анализ форматов операций, поддерживаемых процессором, и возможность деления на группы.
Создание команд для кодирования процессора
Обзор раздела: В данном разделе рассматривается процесс создания команд для кодирования процессора.
Создание команд
- Для кодирования 32 регистров необходимо 5 бит.
- Команды должны содержать определенные поля, зарезервированные для будущего использования.
- Код операции в каждой машинной команде должен содержать часть, определяющую вид операции (сложение, вычитание и т. д.).
- Некоторые опкоды отвечают за инверсию или выбор результата вычислений.
Процесс кодирования команд
Обзор раздела: Здесь описывается процесс кодирования команд для работы с ALU.
Процесс кодирования
- Существует набор инструкций, которые позволяют управлять потоком вычислений.
- Кодируются арифметические операции и указываются регистры для операндов и результатов.
- Операнды обозначены как source и destination, что помогает определить местоположение данных.
Конвертация чисел и работа с командами
Обзор раздела: Рассматривается конвертация чисел и принцип работы с командами.
Конвертация чисел
- Числа могут быть сконвертированы из шестнадцатеричной системы в другие форматы для работы с ALU.
- Immediate позволяет получить данные напрямую из команды без обращения к регистрам.
Управление потоком выполнения программ
Обзор раздела: Обсуждается управление потоком выполнения программ через переходы.
Управление потоком
- Программа может содержать переходы и вызовы функций для управления выполнением.
Перепрыгивание на адрес в программе
Обзор раздела: Объясняется процесс перепрыгивания на адрес в программе.
Перепрыгивание на адрес
Основы кодирования инструкций
Обзор раздела: В этом разделе рассматривается основы кодирования инструкций в риск-процессорах и принципы работы машинного слова.
Кодирование инструкций
- Риск-процессоры имеют команды одинакового размера, что упрощает работу с ними.
- Схема кодирования инструкции в x86 представляет собой обход регистра, обход регистра с immediate значением и обход числа.
- После байтов для обхода могут следовать модификатор доступа к памяти или к регистру.
Интерпретация инструкций
Обзор раздела: Здесь описывается процесс интерпретации инструкций и сложности, связанные с длиной их выполнения.
Интерпретация
- Невозможно предсказать размер инструкции заранее, что затрудняет оптимизацию выполнения.
- Различные процессоры (MEPIS 32, MIPS, ARM, x86) имеют разные подходы к интерпретации инструкций.
Кодирование операций
Обзор раздела: Обсуждение методов кодирования арифметических операций в риск-процессорах.
Арифметические операции
- Арифметические операции закодированы по аналогии со сложением и вычитанием для других видов операций.
Работа с числами
Обзор раздела: Объясняется работа с положительными и отрицательными числами при кодировании операций.
Представление чисел
- Для хранения отрицательных чисел используется дополнительный код.
Метки в программировании
Обзор раздела: Обсуждение использования меток в ассемблерном программировании для управления потоком выполнения.
Использование меток
Понимание работы с регистрами в ассемблере
Обзор раздела: В данном разделе рассматривается работа с регистрами в ассемблере и условные переходы.
Работа с регистрами
- Обозначение регистров символом доллара, запись значений в регистры.
- Исправление примера по работе с рагистрами.
Условные переходы
- Определение условного перехода при выполнении определенного условия.
- Использование специального регистра флагов для хранения информации о предыдущих операциях.
Передача параметров через стек в программировании
Обзор раздела: Рассмотрены механизмы передачи параметров через стек в программировании.
Параметры через стек
- Передача параметров функций через стек.
- Хранение локальных переменных и автоматических переменных в стеке.
Вызов функций
- Рекурсивный вызов функций и сохранение копий переменных.
Автоматические переменные и стек фреймы
Обзор раздела: В этом разделе рассматривается работа с автоматическими переменными и стек фреймами в контексте вызова функций.
Автоматические переменные
- Автоматические переменные связаны с конкретным вызовом функции.
- Возвращаемое значение обычно одно, но есть языки, где можно возвращать много значений.
- В ассемблере типа elise возвращаемое значение всегда одно.
Стек фреймы
- Значение возвращается обычно через регистр или указатель на ячейку памяти.
- При возврате из функции происходит сброс стека до начального состояния.
Хранение чисел: little endian vs big endian
Обзор раздела: Рассмотрены концепции хранения чисел little endian и big endian в памяти компьютера.
Little Endian vs Big Endian
- Little endian - младший байт числа хранится первым; Big endian - старший байт находится первым.
- Различия в порядке хранения байтов оказывают влияние на интерпретацию данных.
Программа от кода до выполнения
Обзор раздела: Объясняется процесс превращения программы от написания кода до её выполнения на процессоре.
Программа от кода до выполнения
- Программа переводится из ассемблера в машинный код для выполнения на процессоре.
Рид Дейта и Интерфейс Записи
В этом разделе рассматривается 32-разрядная Рид Дейта и интерфейс записи данных.
Рид Дейта
- Р.д. представляет собой 32-разрядную память.
- Подаем адрес номер регистра, получаем данные из обычной памяти.
Интерфейс Записи
- Гарвардское устройство: возможность чтения и записи данных по адресу.
- Сигнал подается для записи данных, если не запрещена запись, данные будут сохранены.
Соединение Элементов Тракта Данных
Объединение элементов тракта данных для передачи команд и адресов.
Объединение Элементов
- Разложение элементов в последовательность для передачи адреса и команды.