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

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
Строка 1: Строка 1:
Курс по магистерской программе Дискретные управляющие системы и их приложения (группа 518/2).
+
[[Категория:Лекционные курсы кафедры МК]]
 +
[[Категория:Магистерская программа Дискретные управляющие системы и их приложения]]
  
= Общая информация =
+
Обязательный курс для студентов группы 518/2.
  
== Руководители курса ==
+
Руководитель: [[Подымов Владислав Васильевич| Подымов В.В.]]
[[Шуплецов Михаил Сергеевич| Шуплецов М.С.]], [[Подымов Владислав Васильевич| Подымов В.В.]]
+
  
== Критерии оценки ==
+
Актуальность информации: '''весенний семестр 2017/2018 учебного года'''.
  
Курс содержит пять обязательных тем:
+
= Общая информация и критерии оценки =
 +
 
 +
Курс содержит шесть обязательных блоков:
 
# конвейер,
 
# конвейер,
# внеочередное исполнение команд,
 
 
# кэш-память,
 
# кэш-память,
 
# виртуальная память,
 
# виртуальная память,
# прерывания и стек.
+
# прерывания,
 +
# внеочередное исполнение команд,
 +
# лекционные и лабораторные занятия от представителей компании [https://www.baikalelectronics.ru/ АО "Байкал Электроникс"].
  
Для получения оценки '''"Отлично"''' требуется покрыть каждую тему практикой или ответом на экзамене (''теорией'').
+
Каждый из первых пяти блоков может быть сдан одним из двух равноценных способов:
При этом хотя бы '''две''' темы должны быть покрыты практикой.
+
* выполнением практического задания по написанию кода на языке Verilog;
Каждая непокрытая тема снижает итоговую оценку на один балл.
+
* устным ответом на экзамене.
  
В спорных случаях на итоговую оценку влияет ответ по шестой теме:
+
Последний блок сдаётся посещением пар, посвящённых этому блоку, и прилежным выполнением лабораторных заданий на этих парах.
* ввод/вывод и простейшие протоколы передачи данных.
+
  
= Практика =
+
По итогам проведения курса выставляется оценка
 +
* '''"Отлично"''', если сданы все блоки, и при этом хотя бы один из пяти первых блоков сдан выполнением практического задания.
 +
* '''"Хорошо"''', если сдан последний блок и четыре из пяти первых блоков.
 +
* '''"Удовлетворительно"''', если сданы четыре блока.
 +
* '''"Неудовлетворительно"''', если сдано менее четырёх блоков.
  
''В этом разделе будут появляться требования к покрытию тем курса практикой.''
+
= Практические задания =
  
Покрытие темы практикой - это написание кода на языке Verilog, реализующего понятия темы.
+
Выполнение практического задания - это написание кода на языке Verilog и программная симуляция этого кода.
Реализацию можно
+
* выслать на почты ''обоих'' руководителей курса,
+
* выложить в свой git-репозиторий, ''отдельно убедившись, что оба руководителя приглашены в репозиторий'', или
+
* выложить в неглавную ветку git-репозитория "mips_simplified_processor".
+
  
По умолчанию все темы реализуются для однотактового или, по желанию, более сложно устроенного процессора, поддерживающего набор инструкций, содержащий:
+
Все задания сформулированы для однотактового или, по желанию, более сложно устроенного процессора, система команд которого включает:
* хотя бы одну арифметико-логическую R-инструкцию,
+
* хотя бы одну арифметико-логическую команду на трёх регистрах,
* хотя бы одну арифметико-логическую I-инструкцию,
+
* хотя бы одну арифметико-логическую команду на двух регистрах с константой в коде команды,
 
* хотя бы одну инструкцию условного ветвления,
 
* хотя бы одну инструкцию условного ветвления,
 
* инструкцию безусловного ветвления,
 
* инструкцию безусловного ветвления,
* инструкцию чтения из памяти в регистр,
+
* инструкцию чтения из памяти в регистр и
 
* инструкцию записи в память из регистра.  
 
* инструкцию записи в память из регистра.  
  
 
== Конвейер ==
 
== Конвейер ==
  
Реализация конвейера должна корректно разрешать все конфликты (hazards) и содержать:
+
Реализовать процессор с конвейером, корректно разрешающим все конфликты (hazards) и содержащим:
# пять классических стадий выполнения инструкции;
+
# пять "классических" стадий выполнения инструкции;
 
# пересылку значений (bypass) хотя бы для одного типа конфликтов чтения после записи (read-after-write hazard);
 
# пересылку значений (bypass) хотя бы для одного типа конфликтов чтения после записи (read-after-write hazard);
 
# спекулятивное исполнение для ускоренного разрешения конфликтов по управлению, возникающих при исполнении инструкций условного ветвления.
 
# спекулятивное исполнение для ускоренного разрешения конфликтов по управлению, возникающих при исполнении инструкций условного ветвления.
 
== Внеочередное исполнение команд ==
 
 
Реализация внеочередного исполнения команд должна корректно исполнять произвольные входные программы и содержать:
 
# конвейер,
 
# команду умножения целых чисел (формат - такой же, как у всех R-инструкций, младшие 6 бит можно определить произвольно либо согласно известным стандартам),
 
# отдельное арифметико-логическое устройство, умножающее два целых числа за '''3 такта''' работы конвейера,
 
# внеочередное исполнение согласно алгоритму Томасуло.
 
 
Общую шину данных в алгоритме Томасуло можно реализовать на основе мультиплексоров и демультиплексоров или любым другим способом, обеспечивающим широковещательную рассылку значений.
 
  
 
== Кэш-память ==
 
== Кэш-память ==
  
Реализовать кэш данных (''кэш инструкций - по желанию'').
+
Реализовать кэш данных.
Допускается реализация как над однотактовым процессором (''в связи с задержками из-за промахов кэша он станет многотактовым''), так и над конвейером.
+
Допускается реализация как над однотактовым процессором (''в связи с задержками из-за промахов кэша он станет многотактовым''), так и над конвейеризованным процессором.
Можно считать, что пропускная способность основной памяти данных - одно слово за такт.
+
Моделируемая пропускная способность основной памяти данных - одно слово за такт.
 
Требования к кэш-памяти:
 
Требования к кэш-памяти:
 
# хотя бы два слова в строке,
 
# хотя бы два слова в строке,
Строка 76: Строка 68:
 
# таблицу страниц не менее чем на 8 записей,
 
# таблицу страниц не менее чем на 8 записей,
 
# базовый регистр для таблицы страниц,
 
# базовый регистр для таблицы страниц,
# инструкции заполнения записей в таблице,
+
# команды заполнения записей в таблице,
 
# трансляцию адресов в командах работы с памятью,
 
# трансляцию адресов в командах работы с памятью,
 
# работу со страницами размером не менее 4-х слов,
 
# работу со страницами размером не менее 4-х слов,
# защиту от доступа за пределы доступной виртуальной памяти и за пределы выбранной страницы - например, полную остановку работы процессора, игнорирование недопустимой инструкции или фиксированные действия процессора наподобие увеличения значения в заданном регистре вместо доступа к памяти.
+
# защиту от доступа за пределы доступной виртуальной памяти и за пределы выбранной страницы - например, полную остановку работы процессора, игнорирование недопустимой инструкции или фиксированные действия процессора наподобие увеличения значения заданного регистра вместо доступа к памяти.
  
Детали реализации, включая формат новых команд, наличие механизмов обработки алиасинга, точное устройство таблицы и точный алгоритм трансляции, выбираются любым способом.
+
Детали реализации, включая формат новых команд, точное устройство таблицы, точный алгоритм трансляции и способ решения проблем виртуализации (наподобие проблемы синонимичности - aliasing), выбираются любым способом.
  
 
== Прерывания ==
 
== Прерывания ==
Строка 87: Строка 79:
 
Реализация механизма точных прерываний должна включать в себя:
 
Реализация механизма точных прерываний должна включать в себя:
 
# конвейер,
 
# конвейер,
# обработчик прерываний в памяти инструкций по произвольно выбранному адресу, который можно "вшить" в дизайн,
+
# обработчик прерываний в памяти инструкций по произвольно выбранному адресу, который можно "вшить" в схему процессора,
# хотя бы одно внешнее прерывание, возникающее при появлении единицы в сигнале, подаваемом процессору извне наряду с clock и reset,
+
# хотя бы одно внешнее прерывание, возникающее при появлении единицы в сигнале irq, подаваемом процессору извне наряду с clock и reset,
# прерывание по неверному коду инструкции,
+
# прерывание по неверному коду команды,
# прерывание по переполнению в АЛУ,
+
# прерывание по переполнению в АЛУ хотя бы для одной арифметико-логической команды,
 
# хотя бы одну инструкцию явного вызова прерывания,
 
# хотя бы одну инструкцию явного вызова прерывания,
# корректный возврат из прерывания к следующей выполняемой инструкции,
+
# идейно корректное продолжение работы процессора по завершении прерывания.
# либо произвольный выбор приоритетов прерываний с вложенной обработкой, либо блокирование вложенных прерываний до возврата из обработчика.
+
  
= Теория =
+
Точный алгоритм обработки прерываний (например, наличие приоритетов или вложенной обработки прерываний) может выбираться любым способом.
  
В отличие от практики, выполняющейся в течение всего семестра, экзамен проходит по завершении курса, и потому предполагает знание у сдающего всех ключевых тем курса.
+
== Внеочередное исполнение команд ==
При ответе ключевой темы на экзамене требуется также и знание приложений понятий этой темы к другим ключевым темам.
+
  
== Рабочая программа ==
+
Реализация внеочередного исполнения команд должна корректно исполнять произвольные входные программы и содержать:
 +
# конвейер,
 +
# команду умножения целых чисел (формат - такой же, как у всех арифметико-логических команд на трёх регистрах, младшие 6 бит можно определить произвольно),
 +
# отдельное арифметико-логическое устройство, умножающее два целых числа за '''3 такта''',
 +
# внеочередное исполнение команд согласно алгоритму Томасуло.
  
''Здесь будет появляться список ключевых понятий и тем для ответа на экзамене.''
+
Общую шину данных в алгоритме Томасуло можно реализовать любым способом - например, на основе мультиплексоров и демультиплексоров.
 +
 
 +
= Теория =
  
 +
Список понятий и тем для устного ответа на экзамене:
 
# Конвейер:
 
# Конвейер:
 
#* пять классических стадий исполнения инструкции (выборка, декодирование, исполнение, доступ к памяти, запись в регистр),
 
#* пять классических стадий исполнения инструкции (выборка, декодирование, исполнение, доступ к памяти, запись в регистр),
Строка 110: Строка 107:
 
#* пересылка значений,
 
#* пересылка значений,
 
#* спекулятивное исполнение.
 
#* спекулятивное исполнение.
# Внеочередное исполнение команд:
 
#* параллелизм на уровне инструкций и сравнение производительности процессора с внеочередным и очередным исполнениями инструкций,
 
#* конфликты конвейера при введении внеочередного исполнения,
 
#* табличный алгоритм: стадии конвейера, буфер инструкций, конфликты и их разрешение, производительность,
 
#* алгоритм Томасуло: стадии конвейера, буфер инструкций, станции резервирования, конфликты и их разрешение, производительность.
 
 
# Общая организация памяти:
 
# Общая организация памяти:
 
#* современное устройство ячеек памяти,
 
#* современное устройство ячеек памяти,
Строка 135: Строка 127:
 
#* буфер ассоциативной трансляции,
 
#* буфер ассоциативной трансляции,
 
#* виртуальная и физическая кэш-память,
 
#* виртуальная и физическая кэш-память,
#* хэшированные таблицы страниц,
+
#* хэшированные таблицы страниц.
 
# Прерывания:
 
# Прерывания:
 
#* общее понятие прерывания, точное прерывание,
 
#* общее понятие прерывания, точное прерывание,
Строка 142: Строка 134:
 
#* классификация точных прерываний: синхронные и асинхронные, вызываемые и вынужденные, маскируемые и немаскируемые, возобновляемые и терминальные,  
 
#* классификация точных прерываний: синхронные и асинхронные, вызываемые и вынужденные, маскируемые и немаскируемые, возобновляемые и терминальные,  
 
#* влияние прерываний на устройство других архитектурных концепций.
 
#* влияние прерываний на устройство других архитектурных концепций.
# Стек:
+
# Внеочередное исполнение команд:
#* программный и аппаратный стек,
+
#* параллелизм на уровне инструкций и сравнение производительности процессора с внеочередным и очередным исполнениями инструкций,
#* физическое размещение стека и организация работы с ним на уровне системы команд,
+
#* конфликты конвейера при введении внеочередного исполнения,
#* инструкции вызова функции и возврата из функции (jal, jr), фреймы стека, регистры работы со стеком,
+
#* табличный алгоритм: стадии конвейера, буфер инструкций, конфликты и их разрешение, производительность,
#* специализация регистров, соглашения о вызове функций и принципы "правильной" работы со стеком.
+
#* алгоритм Томасуло: стадии конвейера, буфер инструкций, станции резервирования, конфликты и их разрешение, производительность.
# Ввод/вывод:
+
#* виды организации ввода/вывода: порты ввода/вывода, ввод/вывод через память,
+
#* управляющий регистр и регистр данных,
+
#* механизмы ожидания готовности устройств ввода-вывода: поллинг, прерывания,
+
# Простейшие протоколы передачи данных:
+
#* понятие шины передачи данных, классификация шин передачи данных (по использованию тактового сигнала, по принципу выбора передающего устройства),
+
#* протокол UART, сеанс связи, стартовый бит, стоповый бит, бит чётности, стандарт RS-232,
+
#* протокол SPI, модель ведущего и ведомого, сигнал выбора чипа (''chip select''), сигналы MISO/MOSI,
+
#* протокол I2C, идентификация устройств, сообщения, двусторонняя связь, арбитраж ведущих устройств.
+
 
+
[[Категория:Лекционные курсы кафедры МК]]
+
[[Категория:Магистерская программа Дискретные управляющие системы и их приложения]]
+

Версия 20:07, 8 февраля 2018


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

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

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

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

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

  1. конвейер,
  2. кэш-память,
  3. виртуальная память,
  4. прерывания,
  5. внеочередное исполнение команд,
  6. лекционные и лабораторные занятия от представителей компании АО "Байкал Электроникс".

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

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

Последний блок сдаётся посещением пар, посвящённых этому блоку, и прилежным выполнением лабораторных заданий на этих парах.

По итогам проведения курса выставляется оценка

  • "Отлично", если сданы все блоки, и при этом хотя бы один из пяти первых блоков сдан выполнением практического задания.
  • "Хорошо", если сдан последний блок и четыре из пяти первых блоков.
  • "Удовлетворительно", если сданы четыре блока.
  • "Неудовлетворительно", если сдано менее четырёх блоков.

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

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

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

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

Конвейер

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

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

Кэш-память

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

  1. хотя бы два слова в строке,
  2. хотя бы восемь строк,
  3. полуассоциативность: индекс строки - хотя бы два бита, и хотя бы две строки для каждого индекса.

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

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

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

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

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

Прерывания

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

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

Точный алгоритм обработки прерываний (например, наличие приоритетов или вложенной обработки прерываний) может выбираться любым способом.

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

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

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

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

Теория

Список понятий и тем для устного ответа на экзамене:

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