Архитектура ЭВМ. Лекция 3: Кодирование и тип инструкций процессора.

Архитектура ЭВМ. Лекция 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-разрядную память.
  • Подаем адрес номер регистра, получаем данные из обычной памяти.

Интерфейс Записи

  • Гарвардское устройство: возможность чтения и записи данных по адресу.
  • Сигнал подается для записи данных, если не запрещена запись, данные будут сохранены.

Соединение Элементов Тракта Данных

Объединение элементов тракта данных для передачи команд и адресов.

Объединение Элементов

  • Разложение элементов в последовательность для передачи адреса и команды.
Video description

В данной лекции освещается вопрос проектирования процессора, а именно набора его регистров и команд. Разбирается структура команд, их типы, как базовые конструкции языка высокого уровня преобразуются в машинные инструкции. Лектор: Кирилл Кринкин Другие полезные материалы: https://online.osll.ru/useful