Архитектура и язык ассемблера MIPS

Описание

Название
Архитектура и ассемблер процессоров MIPS
  • Расширенный курс: Особенности архитектуры и программирования MIPS-процессоров
Title
MIPS systems architecture and assembler
  • MIPS processor programming and architecture features
Аннотация
Архитектура процессоров MIPS — пожалуй, наиболее стройная и понятная из всех ныне действующих распространённых архитектур вычислительных систем. В курсе прослеживается связь между конкретной организацией процессора и общими принципами построения вычислительных систем. Планируется решение задач на языке ассемблера с последующей проверкой в системе EJudge. В учебном процессе используются как эмуляторы, так и полноценные системы на базе микропроцессоров семейства «Байкал-Т».
Annotation
MIPS is probably the most coherent ISA among the current popular architectures, so we use it to illustrate basic principles of computational systems. Course practice includes assembly language programming with automatic EJudge checking and involves both emulators and real Baikal-T hardware.
Требования к уровню знаний слушателей
Дискретная математика в объёме первого курса бакалавриата ВМК МГУ.

Материалы

Тема

Дата

Конспект

Запись

Срок сдачи
д/з

1

Как они превратили арифмометр в ЭВМ и почему у них так получилось?

2019-02-15

Тематический план курса

  1. Введение:
    • Требования к алгоритмически полному вычислителю
    • Превращение вычислительного прибора в ЭВМ
      • хранение данных и инструкций в памяти
      • адрес как способ референции данных и инструкций
      • последовательное выполнение инструкций
      • подмена адреса следующей инструкции для организации условных и итеративных вычислений
    • ⇒ Архитектура фон Неймана как исторический казус
    • Общий принцип развития ЭВМ:
      1. появление новой задачи,
      2. победа одного-двух частных решений этой задачи,
      3. «канонизация» этих решений (legacy).
    • (!) Установка и работа с MARS

    • Понятие о машинном коде и языке ассемблера. Достоинства языка ассемблера:
      • Однозначность порождаемого кода
      • Мнемоничность команд
      • Двухпроходное вычисление меток
      • Удобное представление данных
      • Макро, многофайловая сборка, библиотеки и пр.
  2. Общая структура системы команд MIPS.
    • Принципы RISC:
      • отсутствие вычислительно сложных инструкций,
      • фиксированная длина инструкции,
      • большое количество регистров общего назначения,
      • ограничения на работу непосредственно с оперативной памятью как с медленным устройством
    • …и их реализация в MIPS:
      • + отсутствие дублирующих инструкций, псевдоинструкции
      • + трёхадресность,
      • + разделение памяти данных и команд,
      • + оптимизация под конвейер (см. далее)
      • удобство чтения/написания инструкций ассемблера и неудобство чтения машинного кода человеком (упаковка битов, псевдоинструкции и т. п.)

      • т. н. исключения — нормальное состояние программы, а не ошибка
    • Организация системы команд MIPS32:
      • (на лекции не перечисляются все команды, даются только примеры, подбор команд по таблице — это ДЗ)

      • 32 регистра общего назначения, доступа к специализированных регистрами нет (в т. ч. нет регистра флагов!)

      • 3 базовых типа команд (с 26-битной частью адреса, с 16-битной и безадресные)
      • знаковая и беззнаковая арифметика; регистры LO/HI для умножения/деления; побитовые операции
      • условная пересылка и сравнение
      • работа с памятью (в т. ч. псевдоинструкции типа li)

      • переходы
    • Пример программ для Mars
  3. Работа с линейной моделью памяти
    • Понятие о конвенциях. Конвенция по использованию регистров.
    • Линейная модель памяти MARS
    • Метки в коде программы на языке ассемблера
    • Директивы ассемблера по организации и размещению данных и кода, выравнивание
    • Пример решения Д/З для EJudge


  1. Стек и подпрограмммы, конвенции на этот счёт
  2. Системные вызовы. Системные вызовы MARS.
  3. Математический сопроцессор.
  4. Исключения. Обработка исключений в MARS.
  5. Прерывания и внешние устройства (порты, MMIO, DMA).

  6. Увеличение быстродействия работы программы. Кэш.
  7. Увеличение быстродействия работы программы. Предсказание переходов. Упреждающее выполнение.

  8. Увеличение быстродействия процессора. Суперскалярная архитектура. Конвейер.
  9. Увеличение быстродействия процессора. Векторные операции.

  10. Возможности ассемблера: директивы, макросы, многофайловая сборка.
  11. Поддержка многозадачности. Виртуальная память.

  12. Многопроцессорные архитектуры. Блокировки доступа и когерентность кешей. Виртуализация.

  13. Моделирование структур данных

Ссылки


CategoryLectures