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

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

Версия 16:56, 26 апреля 2019


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

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

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

Общая информация и критерии оценки

Курс содержит шесть обязательных блоков:

  1. конвейер,
  2. кэш-память,
  3. виртуальная память,
  4. прерывания и ввод-вывод,
  5. внеочередное исполнение команд.

Каждый из блоков может быть сдан одним из двух равноценных способов:

  • выполнением практического задания по написанию кода на языке Verilog;
  • устным ответом перед подведением итогов курса.

Для получения зачёта все блоки должны быть сданы, при этом хотя бы два - выполнением практического задания.

Практические задания

Выполнение практического задания - это написание кода на языке Verilog и программная симуляция этого кода.

Все задания сформулированы для однотактового или, по желанию, более сложно устроенного процессора, система команд которого включает:

  • хотя бы одну арифметико-логическую команду на трёх регистрах,
  • хотя бы одну арифметико-логическую команду на двух регистрах с константой в коде команды,
  • хотя бы одну команду условного ветвления,
  • команду безусловного ветвления,
  • команду чтения из памяти в регистр и
  • команду записи в память из регистра.

Конвейер

Реализовать процессор с конвейером, корректно разрешающим все конфликты (hazards) и содержащим:

  1. пять "классических" стадий выполнения команды;
  2. пересылку значений (bypass) хотя бы для одного типа конфликтов чтения после записи (read-after-write hazard);
  3. спекулятивное исполнение для ускоренного разрешения конфликтов по управлению, возникающих при выполнении команд условного ветвления.

Кэш-память

Реализовать кэш данных. Допускается реализация как над однотактовым процессором (в связи с задержками из-за промахов кэша он станет многотактовым), так и над конвейеризованным процессором. Моделируемая пропускная способность основной памяти данных - одно слово за такт. Требования к кэш-памяти:

  1. хотя бы два слова в строке,
  2. хотя бы восемь строк.

Остальные детали реализации кэша могут выбираться любым способом. Рекомендуется выбрать для реализации кэш прямого отображения.

Виртуальная память

Реализовать TLB возле кэша данных. Реализация должна включать в себя:

  1. кэш данных с виртуальной адресацией,
  2. таблицу страниц не менее чем на 8 записей,
  3. базовый регистр для таблицы страниц,
  4. команды заполнения записей в таблице,
  5. трансляцию адресов в командах работы с памятью,
  6. работу со страницами размером не менее 4-х слов.

Детали реализации, включая формат новых команд, точное устройство таблицы, точный алгоритм трансляции и способ решения возникающих проблем виртуализации (наподобие проблемы синонимичности - aliasing), выбираются любым способом.

Прерывания

Реализовать механизм точных прерываний. Реализация должна включать в себя:

  1. конвейер,
  2. обработчик прерываний в памяти инструкций по произвольно выбранному адресу, который можно "вшить" в схему процессора,
  3. хотя бы одно внешнее прерывание, возникающее при появлении единицы в сигнале irq, подаваемом процессору извне наряду с clock и reset,
  4. прерывание по неверному коду команды,
  5. прерывание по переполнению в АЛУ хотя бы для одной арифметико-логической команды,
  6. хотя бы одну команду явного вызова прерывания,
  7. идейно корректное продолжение работы процессора по завершении прерывания.

Детали механизма обработки прерываний могут выбираться любым способом.

Внеочередное исполнение команд

Реализовать внеочередное исполнение команд согласно алгоритму Томасуло. Реализация должна корректно исполнять произвольные входные программы и содержать:

  1. конвейер,
  2. команду умножения целых чисел (формат - такой же, как у всех арифметико-логических команд на трёх регистрах, код операции можно определить произвольно),
  3. отдельное арифметико-логическое устройство, умножающее два целых числа за 3 такта.

Общую шину данных в алгоритме Томасуло можно реализовать любым способом - например, на основе мультиплексоров и дешифраторов.

Рабочая программа для устного ответа на экзамене

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