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

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
м
 
(не показаны 11 промежуточные версии 1 участника)
Строка 6: Строка 6:
 
Руководитель: [[Подымов Владислав Васильевич| Подымов В.В.]]
 
Руководитель: [[Подымов Владислав Васильевич| Подымов В.В.]]
  
Актуальность информации: '''весенний семестр 2018/2019 учебного года'''.
+
Актуальность информации: весенний семестр 2023/2024 учебного года.
  
= Общая информация и критерии оценки =
+
Для доступа к материалам курса (слайдам лекций, тексту практических заданий, критериям оценки, ...) обратитесь к [[Подымов Владислав Васильевич| Подымову В.В.]].
  
Курс содержит шесть обязательных блоков:
+
= Рабочая программа для устного опроса =
# конвейер,
+
# кэш-память,
+
# виртуальная память,
+
# прерывания и ввод-вывод,
+
# внеочередное исполнение команд.
+
  
Каждый из блоков может быть сдан одним из двух равноценных способов:
+
''Программа будет обновляться по мере чтения курса''
* выполнением практического задания по написанию кода на языке Verilog;
+
* устным ответом перед подведением итогов курса.
+
  
Для получения зачёта все блоки должны быть сданы, при этом хотя бы два - выполнением практического задания.
+
# Однотактовый процессор и архитектура.
 
+
#* Что такое процессор и что такое его архитектура.
= Практические задания =
+
#* Архитектура системы команд (instruction set architecture) и микроархитектура (microarchitecture).
 
+
#* Примеры архитектур систем команд, устройство команд MIPS.
Выполнение практического задания - это написание кода на языке Verilog и программная симуляция этого кода.
+
#* Основные элементы процессора: счётчик команд (program counter, PC), память команд (instruction memory, IM), блок регистров (регистровый файл, register file, RF), арифметико-логическое устройство (АЛУ, arithmetic logic unit, ALU), память данных (data memory, DM).
 
+
#* Операционный и управляющий автоматы однотактового процессора.
Все задания сформулированы для однотактового или, по желанию, более сложно устроенного процессора, система команд которого включает:
+
# Конвейер (conveyor).
* хотя бы одну арифметико-логическую команду на трёх регистрах,
+
#* "Классические" стадии выполнения команд (ступени конвейера): выборка (считывание) команды (instruction fetch, IF); декодирование команды (instruction decode, ID); считывание операндов (operand read, OR); выполнение (execution, EX); доступ к памяти (memory access, MEM); запись в регистр (writeback, WB).
* хотя бы одну арифметико-логическую команду на двух регистрах с константой в коде команды,
+
#* Латентность (latency) и производительность (throughput).
* хотя бы одну команду условного ветвления,
+
#* Конфликты (hazards): структурные, по данным, по управлению.
* команду безусловного ветвления,
+
#* Способы разрешения конфликтов.
* команду чтения из памяти в регистр и
+
#* Виды конфликтов по данным: чтение после записи (read-after-write, RAW), запись после чтения (WAR), запись после записи (WAW).
* команду записи в память из регистра.
+
#* Прямая подача результата (пересылка значений, продвижение данных, bypass).
 
+
#* Спекулятивное исполнение команд (исполнение по предположению, speculation).
== Конвейер ==
+
#* Конвейер в операционном автомате процессора.
 
+
# Общая организация памяти.
Реализовать процессор с конвейером, корректно разрешающим все конфликты (hazards) и содержащим:
+
#* Современное устройство ячеек памяти.
# пять "классических" стадий выполнения команды;
+
#* Современная организация доступа к ячейкам памяти.
# пересылку значений (bypass) хотя бы для одного типа конфликтов чтения после записи (read-after-write hazard);
+
#* Область применения различных видов памяти.
# спекулятивное исполнение для ускоренного разрешения конфликтов по управлению, возникающих при выполнении команд условного ветвления.
+
#* Характеристики производительности памяти: латентность, частота доступа, пропускная способность, время доступа, время передачи, время цикла.
 
+
# Кэш-память (cache).
== Кэш-память ==
+
#* Пространственная и временная локальность доступа к памяти (temporal locality, spatial locality).
 
+
#* Основные понятия: строка (block, line), тэг (tag), попадание (hit), промах (miss), конфликты (conflicts), вытеснение (замещение, eviction).
Реализовать кэш данных.
+
#* Производительность кэша: частоты и задержки, связанные с попаданиями и промахами кэша.
Допускается реализация как над однотактовым процессором (''в связи с задержками из-за промахов кэша он станет многотактовым''), так и над конвейеризованным процессором.
+
#* Виды кэша: прямого отображения (direct-mapped), полностью ассоциативный (associative, fully-associative), полуассоциативный (множественно-ассоциативный, set-associative).
Моделируемая пропускная способность основной памяти данных - одно слово за такт.
+
#* Классификация промахов кэша (three Cs).
Требования к кэш-памяти:
+
#* Политика вытеснения (eviction policy).
# хотя бы два слова в строке,
+
#* Политика записи (write policy). Сквозная запись (writethrough) и отложенная запись (обратная запись, writeback).
# хотя бы восемь строк,
+
#* Иерархия кэш-памяти, эксклюзивный (exclusive) и инклюзивный (inclusive) кэш.
# полуассоциативность: индекс строки - хотя бы два бита, и хотя бы две строки для каждого индекса.
+
#* Оптимизация доступа к кэш-памяти: конвейеризация, кэш вытеснения (victim cache), буфер записи (write buffer), предвыборка (prefetching), многопортовый (multiport) кэш, банки (banks) кэш-памяти, неблокирующий (nonblocking) кэш.
 
+
#* Кэш-память в операционном автомате процессора с конвейером.
Остальные детали реализации кэша могут выбираться любым способом.
+
# Виртуальная память (virtual memory).
 
+
#* Физическая (абсолютная) и логическая (виртуальная) адресация.
== Виртуальная память ==
+
#* Сегменты и страницы.
 
+
#* Таблицы страниц (таблицы страничного преобразования, page tables), каскады таблиц.
Реализовать TLB возле кэша данных.
+
#* Буфер ассоциативной трансляции (translation lookaside buffer, TLB).
Реализация должна включать в себя:
+
#* Виртуальная и физическая кэш-память, проблема синонимичности (aliasing).
# кэш данных с виртуальной адресацией,
+
#* Таблицы страниц и буфер ассоциативной трансляции в операционном автомате процессора.
# таблицу страниц не менее чем на 8 записей,
+
# Прерывания (interrupts).
# базовый регистр для таблицы страниц,
+
#* Общее понятие прерывания, точное (precise) прерывание.
# команды заполнения записей в таблице,
+
#* Тонкости терминологии: прерывания, исключения (exceptions), ловушки (traps) и т.п.
# трансляцию адресов в командах работы с памятью,
+
#* Классификация точных прерываний: синхронные и асинхронные (synchronous, asynchronous), вызываемые и вынужденные (user-requested, coerced), маскируемые и немаскируемые (maskable, nonmaskable) и т.п.
# работу со страницами размером не менее 4-х слов.
+
#* Обработчик прерываний (interrupt handler).
 
+
#* Регистр прерываний (cause register).
Детали реализации, включая формат новых команд, точное устройство таблицы, точный алгоритм трансляции и способ решения возникающих проблем виртуализации (наподобие проблемы синонимичности - aliasing), выбираются любым способом.
+
#* Точка коммита (точка фиксации, commit point).
 
+
#* Влияние прерываний на устройство других архитектурных элементов.
== Прерывания ==
+
#* Реализация прерываний в операционном автомате процессора.
 
+
# Ввод-вывод.
Реализовать механизм точных прерываний.
+
#* Виды шин ввода-вывода.
Реализация должна включать в себя:
+
#* Ввод-вывод в системе команд и через память (memory-mapped).
# конвейер,
+
#* Управляющий регистр (control register) и регистр данных (data register) ввода-вывода.
# обработчик прерываний в памяти инструкций по произвольно выбранному адресу, который можно "вшить" в схему процессора,
+
#* Механизмы ожидания готовности ввода-вывода: поллинг (polling), обмен по прерыванию.
# хотя бы одно внешнее прерывание, возникающее при появлении единицы в сигнале irq, подаваемом процессору извне наряду с clock и reset,
+
# Внеочередное исполнение команд (out-of-order execution).
# прерывание по неверному коду команды,
+
#* Параллелизм на уровне команд (instruction-level parallelism, ILP) и сравнение производительности процессора с очередным (in-order) и внеочередным исполнениями команд.
# прерывание по переполнению в АЛУ хотя бы для одной арифметико-логической команды,
+
#* Конфликты конвейера при введении внеочередного исполнения.
# хотя бы одну команду явного вызова прерывания,
+
#* Табличный алгоритм (scoreboarding): стадии конвейера, буфер команд (instruction buffer), конфликты и их разрешение, производительность.
# идейно корректное продолжение работы процессора по завершении прерывания.
+
#* Алгоритм Томасуло (Tomasulo algorithm): стадии конвейера, буфер команд, станции резервирования, конфликты и их разрешение, производительность.
 
+
#* Внеочередная выбора с учётом прерываний: уточнение стадий конвейера, буфер переупорядочивания (reorder buffer, ROB), очередь чтения-записи (load-store queue, LSQ).
Детали механизма обработки прерываний могут выбираться любым способом.
+
 
+
== Внеочередное исполнение команд ==
+
 
+
Реализовать внеочередное исполнение команд согласно алгоритму Томасуло.
+
Реализация должна корректно исполнять произвольные входные программы и содержать:
+
# конвейер,
+
# команду умножения целых чисел (формат - такой же, как у всех арифметико-логических команд на трёх регистрах, код операции можно определить произвольно),
+
# отдельное арифметико-логическое устройство, умножающее два целых числа за '''3 такта'''.
+
 
+
Общую шину данных в алгоритме Томасуло можно реализовать любым способом - например, на основе мультиплексоров и дешифраторов.
+
 
+
= Рабочая программа для устного ответа на экзамене =
+
 
+
# Конвейер:
+
#* пять классических стадий выполнения команд (выборка, декодирование, исполнение, доступ к памяти, запись в регистр),
+
#* латентность и производительность,
+
#* конфликты (структурные, по данным, по управлению),
+
#* пересылка значений,
+
#* спекулятивное исполнение.
+
# Общая организация памяти:
+
#* современное устройство ячеек памяти,
+
#* современная организация доступа к ячейкам памяти,
+
#* область применения различных видов памяти,
+
#* характеристики производительности памяти: латентность, частота доступа, пропускная способность, время доступа, время передачи, время цикла.
+
# Кэш-память:
+
#* пространственная и временная локальность доступа к памяти,
+
#* основные понятия: строка, тэг, попадание, промах, конфликты и вытеснение,  
+
#* производительность кэша: частоты и задержки, связанные с попаданиями и промахами кэша,
+
#* виды кэша: прямого отображения, полностью ассоциативный, полуассоциативный,
+
#* классификация промахов кэша (''Three Cs''),
+
#* политика вытеснения и политика записи,
+
#* иерархия кэш-памяти, эксклюзивный и инклюзивный кэш,
+
#* оптимизация доступа к кэш-памяти: конвейеризация, кэш вытеснения (''victim cache''), буфер записи, предвыборка, многопортовый кэш, банки кэш-памяти, неблокирующий кэш.
+
# Виртуальная память:
+
#* физическая (абсолютная) и виртуальная адресация,
+
#* трансляция адресов, страницы памяти, таблицы страниц, каскады таблиц,
+
#* механизмы защиты доступа к памяти,
+
#* буфер ассоциативной трансляции,
+
#* виртуальная и физическая кэш-память, проблема синонимичности (aliasing),
+
#* хэшированные таблицы страниц.
+
# Прерывания:
+
#* общее понятие прерывания, точное прерывание,
+
#* прерывания, исключения и ловушки,
+
#* обработчик прерываний, механизмы обработки прерываний,
+
#* классификация точных прерываний: синхронные и асинхронные, вызываемые и вынужденные, маскируемые и немаскируемые, возобновляемые и терминальные,  
+
#* влияние прерываний на устройство других архитектурных концепций.
+
# Ввод-вывод:
+
#* виды шин ввода-вывода,
+
#* способы организации ввода-вывода (включение в систему команд, ввод-вывод через память),
+
#* управляющий регистр и регистр данных ввода-вывода,
+
#* механизмы ожидания готовности ввода-вывода: поллинг, прерывания.
+
# Внеочередное исполнение команд:
+
#* параллелизм на уровне команд и сравнение производительности процессора с внеочередным и очередным исполнениями команд,
+
#* конфликты конвейера при введении внеочередного исполнения,
+
#* табличный алгоритм: стадии конвейера, буфер команд, конфликты и их разрешение, производительность,
+
#* алгоритм Томасуло: стадии конвейера, буфер команд, станции резервирования, конфликты и их разрешение, производительность.
+

Текущая версия на 10:59, 9 февраля 2024


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

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

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

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

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

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

  1. Однотактовый процессор и архитектура.
    • Что такое процессор и что такое его архитектура.
    • Архитектура системы команд (instruction set architecture) и микроархитектура (microarchitecture).
    • Примеры архитектур систем команд, устройство команд MIPS.
    • Основные элементы процессора: счётчик команд (program counter, PC), память команд (instruction memory, IM), блок регистров (регистровый файл, register file, RF), арифметико-логическое устройство (АЛУ, arithmetic logic unit, ALU), память данных (data memory, DM).
    • Операционный и управляющий автоматы однотактового процессора.
  2. Конвейер (conveyor).
    • "Классические" стадии выполнения команд (ступени конвейера): выборка (считывание) команды (instruction fetch, IF); декодирование команды (instruction decode, ID); считывание операндов (operand read, OR); выполнение (execution, EX); доступ к памяти (memory access, MEM); запись в регистр (writeback, WB).
    • Латентность (latency) и производительность (throughput).
    • Конфликты (hazards): структурные, по данным, по управлению.
    • Способы разрешения конфликтов.
    • Виды конфликтов по данным: чтение после записи (read-after-write, RAW), запись после чтения (WAR), запись после записи (WAW).
    • Прямая подача результата (пересылка значений, продвижение данных, bypass).
    • Спекулятивное исполнение команд (исполнение по предположению, speculation).
    • Конвейер в операционном автомате процессора.
  3. Общая организация памяти.
    • Современное устройство ячеек памяти.
    • Современная организация доступа к ячейкам памяти.
    • Область применения различных видов памяти.
    • Характеристики производительности памяти: латентность, частота доступа, пропускная способность, время доступа, время передачи, время цикла.
  4. Кэш-память (cache).
    • Пространственная и временная локальность доступа к памяти (temporal locality, spatial locality).
    • Основные понятия: строка (block, line), тэг (tag), попадание (hit), промах (miss), конфликты (conflicts), вытеснение (замещение, eviction).
    • Производительность кэша: частоты и задержки, связанные с попаданиями и промахами кэша.
    • Виды кэша: прямого отображения (direct-mapped), полностью ассоциативный (associative, fully-associative), полуассоциативный (множественно-ассоциативный, set-associative).
    • Классификация промахов кэша (three Cs).
    • Политика вытеснения (eviction policy).
    • Политика записи (write policy). Сквозная запись (writethrough) и отложенная запись (обратная запись, writeback).
    • Иерархия кэш-памяти, эксклюзивный (exclusive) и инклюзивный (inclusive) кэш.
    • Оптимизация доступа к кэш-памяти: конвейеризация, кэш вытеснения (victim cache), буфер записи (write buffer), предвыборка (prefetching), многопортовый (multiport) кэш, банки (banks) кэш-памяти, неблокирующий (nonblocking) кэш.
    • Кэш-память в операционном автомате процессора с конвейером.
  5. Виртуальная память (virtual memory).
    • Физическая (абсолютная) и логическая (виртуальная) адресация.
    • Сегменты и страницы.
    • Таблицы страниц (таблицы страничного преобразования, page tables), каскады таблиц.
    • Буфер ассоциативной трансляции (translation lookaside buffer, TLB).
    • Виртуальная и физическая кэш-память, проблема синонимичности (aliasing).
    • Таблицы страниц и буфер ассоциативной трансляции в операционном автомате процессора.
  6. Прерывания (interrupts).
    • Общее понятие прерывания, точное (precise) прерывание.
    • Тонкости терминологии: прерывания, исключения (exceptions), ловушки (traps) и т.п.
    • Классификация точных прерываний: синхронные и асинхронные (synchronous, asynchronous), вызываемые и вынужденные (user-requested, coerced), маскируемые и немаскируемые (maskable, nonmaskable) и т.п.
    • Обработчик прерываний (interrupt handler).
    • Регистр прерываний (cause register).
    • Точка коммита (точка фиксации, commit point).
    • Влияние прерываний на устройство других архитектурных элементов.
    • Реализация прерываний в операционном автомате процессора.
  7. Ввод-вывод.
    • Виды шин ввода-вывода.
    • Ввод-вывод в системе команд и через память (memory-mapped).
    • Управляющий регистр (control register) и регистр данных (data register) ввода-вывода.
    • Механизмы ожидания готовности ввода-вывода: поллинг (polling), обмен по прерыванию.
  8. Внеочередное исполнение команд (out-of-order execution).
    • Параллелизм на уровне команд (instruction-level parallelism, ILP) и сравнение производительности процессора с очередным (in-order) и внеочередным исполнениями команд.
    • Конфликты конвейера при введении внеочередного исполнения.
    • Табличный алгоритм (scoreboarding): стадии конвейера, буфер команд (instruction buffer), конфликты и их разрешение, производительность.
    • Алгоритм Томасуло (Tomasulo algorithm): стадии конвейера, буфер команд, станции резервирования, конфликты и их разрешение, производительность.
    • Внеочередная выбора с учётом прерываний: уточнение стадий конвейера, буфер переупорядочивания (reorder buffer, ROB), очередь чтения-записи (load-store queue, LSQ).