ITMO-Study-Note

Лабораторная работа №3. Опыты

Цель:

Лабораторные работы проводят при помощи проекта wrench:

Содержание лабораторной работы:

  1. Реализация заданных вариантом алгоритмов на заданных архитектурах (см. документацию wrench):
    • аккумуляторная архитектура acc32,
    • CISC архитектура m68k,
    • стековая архитектура f32a,
    • RISC архитектура risc-iv-32.
  2. Подготовка принципиальной схемы заданной вариантом для одного из используемых процессоров.
  3. Защита реализованных алгоритмов (включая понимание архитектуры процессора, её достоинств и недостатков) и схемы.

Ваш вариант будет приведён в ведомости. Расшифровка варианта приведена в файле: variants.md, где приведён код на языке Python и набор тестов. Вам необходимо написать эквивалентные алгоритмы на заданной архитектуре с учётом следующих требований:

  1. Если ввод не соответствует области определения – вернуть -1.
  2. Если результат не может быть корректно рассчитан (результат не может быть представлен в рамках машинного слова) – вернуть результат заполненный байтами со значениями 0xCC.
  3. Ввод должен подаваться через ячейку памяти 0x80.
  4. Вывод должен подаваться в ячейку памяти 0x84.
  5. Входное значение и результат по умолчанию — машинное слово в 32 бита, если не указано иное.
  6. Исходный код должен быть отформатирован (вручную или при помощи wrench-fmt).
  7. Журнал работы не должен быть обрезан (используйте конфигурацию с пониманием).
  8. Требования, специфичные для ISA:
    • f32a: использовать процедуры;
    • risc-iv-32: использовать вложенных процедур1, с целью демонстрации работы со стеком. Где применимо – рекомендуется рекурсивное решение задачи.
    • m68k: необходимо использовать различные режимы инструкций и способы адресации. Использовать вложенные процедуры и стек.
  9. При использовании процедур требуется выработать способ именования меток, помогающий видеть структуру кода.

Формат занятия (или его части), посвящённого данной лабораторной работе:

  1. Защита лабораторных работ.
  2. Когда все выполненные лабораторные работы завершены — классическая консультация, где преподаватель ответит на ваши и в случае необходимости свои вопросы.

Процедура сдачи лабораторной работы:

  1. Ваша реализация алгоритма и формата отчёта загружаются на сайт wrench.edu.swampbuds.me, где подвергается автоматическому тестированию.
  2. В случае успешного прохождения тестов – сохраните ссылку на страницу отчёта.
    • Тестовые наборы и модели процессоров будут уточняться и дополняться в течение семестра. Будьте готовы, что ваша реализация может “сломаться”.
    • Тестовые наборы и система симуляции могут содержать ошибки. В таком случае обращайтесь к преподавателю на лабораторных занятиях и консультациях, исправим.
  3. Приходите на лабораторное занятие со ссылками на алгоритмы. Проходите защиту.
    • ВАЖНО: сохраняйте копии загруженных данных. В любой момент может потребоваться повторная загрузка.

Каждый алгоритм и схема сдаются отдельно. Если на занятии несколько учащихся – по одной за раз. Повторная сдача одного результата в течение дня запрещена.

Оценивание реализации алгоритмов:

  1. 8 баллов – успешная реализация алгоритма и достойные ответы на вопросы:
    • объяснение алгоритма;
    • объяснение инструкций;
    • объяснение принципов формирования машинного кода из ассемблера;
    • объяснение специфики системы команд процессора;
    • и т.п.
  2. 5 баллов – успешная реализация алгоритма и частичные ответы на вопросы.
  3. 0 баллов – отсутствие реализации алгоритма и/или корректных ответов на вопросы.

Оценивание схемы:

  1. 8 баллов – корректное отображение схемы и достойные ответы на вопросы, включая возможную вариативность предложенной схемы и связанные с этим компромиссы.
  2. 7 баллов – корректное отображение схемы и достойные ответы на вопросы:
    • объяснение принципов работы схемы и процессора;
    • объяснение порядка выполнения той или иной инструкции данного процессора;
    • объяснение принципов работы с памятью и регистрами, вводом/выводом;
    • и т.п.
  3. 5 баллов – корректное отображение схемы и частичные ответы на вопросы. Демонстрация на элементах схемы специфики вашего варианта.
  4. 0 баллов – отсутствие корректной схемы и/или корректных ответов на вопросы.

ВАЖНО: оценка может быть снижена если:


Типовые вопросы для защиты:

  1. Что такое метка (label)?
  2. Откуда рассчитываются значения меток (label)?
  3. Как вывести в отчёте состояние регистра Acc в hex формате?
  4. Назначение alignment (неиспользуемый буфер в секции данных)?
  5. acc32 Зачем определены дублирующиеся инструкции load_addr и load?
  6. acc32 Переполнение и перенос. Overflow и Carry флаги, иные способы обработки.
  7. acc32 Какие Load* операции можно выкинуть чтобы сохранить возможности процессора?
  8. Что такое Memory Mapped IO?
  9. Что будет, если процессор попытается прочитать инструкцию из адреса ввода-вывода?
  10. Что означает инструкция ...? Объясните что происходит в строках ....
  11. Как сократить объём машинного кода? Какие ограничения/проблемы это создаст?
  12. risc-iv Что означает конструкция 0(t1)? Зачем она нужна?
  13. risc-iv Почему для загрузки слова регистр нужно две инструкции?
  14. f32a Почему в F32a удобно использовать процедуры?
  15. f32a Extended arithmetic mode. Назначение и использование.
  16. Как бы вы итерировались по массиву слов? По массиву структур?
  17. Особенности кодирования инструкций, плотность кода, проблемы доступа.
  18. Как вы можете сократить объём машинного кода? Продемонстрируйте.
  19. risc-iv Работа со стеком. Выделение памяти, передача данных в/из процедур.
  20. schema Как будет выглядеть Nop и как он будет выполняться?
  21. schema Как будет выглядеть Jmp и как он будет выполняться?
  22. schema Как будет выглядеть Add и как он будет выполняться?
  23. schema Как работает внутри регистровый файл?
  24. schema Как работает внутри Memory Mapped I/O?
  25. schema Есть ли регистры в Control Unit?

Чек лист перед защитой:

  1. Убедитесь, что код соответствует требованиям и работа оформлена правильно (в том числе ссылка и доступность схемы).
  2. Комментарии должны быть полезными. Ваш код должен оставаться читаемым.
  3. Вы должны понимать каждую строку кода и уметь объяснить, зачем она нужна.
  4. При сдаче работы по определённой архитектуре необходимо быть готовым отвечать по всем её инструкциям и особенностям, а не только по тем, что использовались в лабораторной.
  5. Будьте готовы объяснить, почему выбранное решение лучше альтернатив, и что будет при другом подходе.
  6. После фраз “я уже забыл”, “не знаю, т.к. по варианту мне не нужно было” и им подобных оценка будет снижена.
  7. Длительная задержка с ответом, посторонние шумы или печатание во время защиты считаются нарушением, работа может быть не принята.
  8. Если ваша работа имеет признаки нейронки или похожа на чью-то другую, возможно произвольное количество вопросов.
  9. Нарушение порядка (влезание без очереди, просьбы “дослать в лс”) фиксируются в журнале.
  10. При наличии ошибок или нарушений требований работа может быть не принята без объяснений.
  1. Одна процедура вызывает другую процедуру.