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

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

Версия 16:17, 13 февраля 2020


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

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

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

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

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

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