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

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

Версия 17:49, 10 февраля 2021


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

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

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

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

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

Программа будет обновляться по мере чтения курса

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