Математические модели и методы проектирования архитектуры сверхбольших интегральных схем — различия между версиями

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
м
 
(не показаны 2 промежуточных версий 1 участника)
Строка 6: Строка 6:
 
Руководитель: [[Подымов Владислав Васильевич| Подымов В.В.]]
 
Руководитель: [[Подымов Владислав Васильевич| Подымов В.В.]]
  
Актуальность информации: '''весенний семестр 2018/2019 учебного года'''.
+
Актуальность информации: '''весенний семестр 2019/2020 учебного года'''.
  
= Общая информация и критерии оценки =
+
Для доступа к материалам курса (слайдам лекций, тексту практических заданий, критериям оценки, ...) обратитесь к [[Подымов Владислав Васильевич| Подымову В.В.]].
  
Курс содержит шесть обязательных блоков:
+
= Рабочая программа для устного опроса =
# конвейер,
+
# кэш-память,
+
# виртуальная память,
+
# прерывания и ввод-вывод,
+
# внеочередное исполнение команд.
+
 
+
Каждый из блоков может быть сдан одним из двух равноценных способов:
+
* выполнением практического задания по написанию кода на языке Verilog;
+
* устным ответом перед подведением итогов курса.
+
 
+
Для получения зачёта все блоки должны быть сданы, при этом хотя бы два - выполнением практического задания.
+
 
+
= Практические задания =
+
 
+
Выполнение практического задания - это написание кода на языке Verilog и программная симуляция этого кода.
+
 
+
Все задания сформулированы для однотактового или, по желанию, более сложно устроенного процессора, система команд которого включает:
+
* хотя бы одну арифметико-логическую команду на трёх регистрах,
+
* хотя бы одну арифметико-логическую команду на двух регистрах с константой в коде команды,
+
* хотя бы одну команду условного ветвления,
+
* команду безусловного ветвления,
+
* команду чтения из памяти в регистр и
+
* команду записи в память из регистра.
+
 
+
== Конвейер ==
+
 
+
Реализовать процессор с конвейером, корректно разрешающим все конфликты (hazards) и содержащим:
+
# пять "классических" стадий выполнения команды;
+
# пересылку значений (bypass) хотя бы для одного типа конфликтов чтения после записи (read-after-write hazard);
+
# спекулятивное исполнение для ускоренного разрешения конфликтов по управлению, возникающих при выполнении команд условного ветвления.
+
 
+
== Кэш-память ==
+
 
+
Реализовать кэш данных.
+
Допускается реализация как над однотактовым процессором (''в связи с задержками из-за промахов кэша он станет многотактовым''), так и над конвейеризованным процессором.
+
Моделируемая пропускная способность основной памяти данных - одно слово за такт.
+
Требования к кэш-памяти:
+
# хотя бы два слова в строке,
+
# хотя бы восемь строк.
+
 
+
Остальные детали реализации кэша могут выбираться любым способом.
+
Рекомендуется выбрать для реализации кэш прямого отображения.
+
 
+
== Виртуальная память ==
+
 
+
Реализовать TLB возле кэша данных.
+
Реализация должна включать в себя:
+
# кэш данных с виртуальной адресацией,
+
# таблицу страниц не менее чем на 8 записей,
+
# базовый регистр для таблицы страниц,
+
# команды заполнения записей в таблице,
+
# трансляцию адресов в командах работы с памятью,
+
# работу со страницами размером не менее 4-х слов.
+
 
+
Детали реализации, включая формат новых команд, точное устройство таблицы, точный алгоритм трансляции и способ решения возникающих проблем виртуализации (наподобие проблемы синонимичности - aliasing), выбираются любым способом.
+
 
+
== Прерывания ==
+
 
+
Реализовать механизм точных прерываний.
+
Реализация должна включать в себя:
+
# конвейер,
+
# обработчик прерываний в памяти инструкций по произвольно выбранному адресу, который можно "вшить" в схему процессора,
+
# хотя бы одно внешнее прерывание, возникающее при появлении единицы в сигнале irq, подаваемом процессору извне наряду с clock и reset,
+
# прерывание по неверному коду команды,
+
# прерывание по переполнению в АЛУ хотя бы для одной арифметико-логической команды,
+
# хотя бы одну команду явного вызова прерывания,
+
# идейно корректное продолжение работы процессора по завершении прерывания.
+
 
+
Детали механизма обработки прерываний могут выбираться любым способом.
+
 
+
== Внеочередное исполнение команд ==
+
 
+
Реализовать внеочередное исполнение команд согласно алгоритму Томасуло.
+
Реализация должна корректно исполнять произвольные входные программы и содержать:
+
# конвейер,
+
# команду умножения целых чисел (формат - такой же, как у всех арифметико-логических команд на трёх регистрах, код операции можно определить произвольно),
+
# отдельное арифметико-логическое устройство, умножающее два целых числа за '''3 такта'''.
+
 
+
Общую шину данных в алгоритме Томасуло можно реализовать любым способом - например, на основе мультиплексоров и дешифраторов.
+
 
+
= Рабочая программа для устного ответа на экзамене =
+
  
 
# Конвейер:
 
# Конвейер:

Текущая версия на 16:17, 13 февраля 2020


Обязательный курс для студентов группы 518/2.

Руководитель: Подымов В.В.

Актуальность информации: весенний семестр 2019/2020 учебного года.

Для доступа к материалам курса (слайдам лекций, тексту практических заданий, критериям оценки, ...) обратитесь к Подымову В.В..

Рабочая программа для устного опроса

  1. Конвейер:
    • пять классических стадий выполнения команд (выборка, декодирование, исполнение, доступ к памяти, запись в регистр),
    • латентность и производительность,
    • конфликты (структурные, по данным, по управлению),
    • пересылка значений,
    • спекулятивное исполнение.
  2. Общая организация памяти:
    • современное устройство ячеек памяти,
    • современная организация доступа к ячейкам памяти,
    • область применения различных видов памяти,
    • характеристики производительности памяти: латентность, частота доступа, пропускная способность, время доступа, время передачи, время цикла.
  3. Кэш-память:
    • пространственная и временная локальность доступа к памяти,
    • основные понятия: строка, тэг, попадание, промах, конфликты и вытеснение,
    • производительность кэша: частоты и задержки, связанные с попаданиями и промахами кэша,
    • виды кэша: прямого отображения, полностью ассоциативный, полуассоциативный,
    • классификация промахов кэша (Three Cs),
    • политика вытеснения и политика записи,
    • иерархия кэш-памяти, эксклюзивный и инклюзивный кэш,
    • оптимизация доступа к кэш-памяти: конвейеризация, кэш вытеснения (victim cache), буфер записи, предвыборка, многопортовый кэш, банки кэш-памяти, неблокирующий кэш.
  4. Виртуальная память:
    • физическая (абсолютная) и виртуальная адресация,
    • трансляция адресов, страницы памяти, таблицы страниц, каскады таблиц,
    • механизмы защиты доступа к памяти,
    • буфер ассоциативной трансляции,
    • виртуальная и физическая кэш-память, проблема синонимичности (aliasing),
    • хэшированные таблицы страниц.
  5. Прерывания:
    • общее понятие прерывания, точное прерывание,
    • прерывания, исключения и ловушки,
    • обработчик прерываний, механизмы обработки прерываний,
    • классификация точных прерываний: синхронные и асинхронные, вызываемые и вынужденные, маскируемые и немаскируемые, возобновляемые и терминальные,
    • влияние прерываний на устройство других архитектурных концепций.
  6. Ввод-вывод:
    • виды шин ввода-вывода,
    • способы организации ввода-вывода (включение в систему команд, ввод-вывод через память),
    • управляющий регистр и регистр данных ввода-вывода,
    • механизмы ожидания готовности ввода-вывода: поллинг, прерывания.
  7. Внеочередное исполнение команд:
    • параллелизм на уровне команд и сравнение производительности процессора с внеочередным и очередным исполнениями команд,
    • конфликты конвейера при введении внеочередного исполнения,
    • табличный алгоритм: стадии конвейера, буфер команд, конфликты и их разрешение, производительность,
    • алгоритм Томасуло: стадии конвейера, буфер команд, станции резервирования, конфликты и их разрешение, производительность.