mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 09:10:10 +00:00
* Update 06. RISC-V architecture.md * Update 02. Instruments.md * Update 03. Digital arithmetics.md * Update 04. Operations units.md * Update 05. Sequencial logic.md * Update 07. RISC-V programming.md * Update 08. Singlecycle processor.md * Update 09. Multicycle processor.md * Update 10. Pipeline processor.md * Update 11. Pipeline hazards.md * Update Lectures/02. Instruments.md * Update Lectures/04. Operations units.md --------- Co-authored-by: Andrei Solodovnikov <VoultBoy@yandex.ru>
62 lines
14 KiB
Markdown
62 lines
14 KiB
Markdown
# Лекция 9. Многотактный процессор RISC-V
|
||
|
||
Основными минусами однотактного процессора являются: неэффективность использования аппаратуры и долгий тактовый импульс, ориентированный на выполнение самой длинной (долгой) инструкции.
|
||
|
||
Многотактная микроархитектура предполагает использование буферных (неархитектурных, то есть недоступных программисту) регистров, с целью уменьшения критического пути и поднятия таковой
|
||
частоты. При этом каждая инструкцию будет выполняться несколько более коротких тактов, используя разное количество тактов для реализации разных инструкций.
|
||
|
||
Благодаря выполнению инструкции за несколько тактов, в этой микроархитектуре получилось реализовать принстонскую архитектуру (она же фоннеймановская, то есть данные и программы хранятся в одной памяти) и уменьшить количество сумматоров, за счет выполнения всех вычислительных операций на одном АЛУ. Еще одним из основных отличий от однотактной реализации является устройство управления (Control Unit), которое, в отличии от основного дешифратора (Main Decoder) однотактного процессора, является последовательностным устройством, а не комбинационным. Это значит, что в устройстве управления есть элементы памяти, и он ведет себя как автомат состояний (конечный автомат). Control Unit, в зависимости от выполняемой инструкции формирует *последовательность* управляющих сигналов, обеспечивающих движение данных по тракту данных от секции к секции, такт за тактом, пока инструкция не будет выполнена.
|
||
|
||

|
||
|
||
Устройство управления (УУ) для такого процессора может быть построено одним из двух способов:
|
||
|
||
- на жесткой логике (в таком случае, УУ является классическим конечным автоматом. Это наиболее быстрая реализация УУ, однако, его сложнее проектировать и отлаживать, чем второй подход, а после производства и выпуска работу устройства нельзя скорректировать)
|
||
- устройство с микропрограммным управлением (по сути является маленьким программируемым устройством, хранящим последовательность управляющих сигналов для процессора в виде небольших микропрограмм, последовательно считываемых из управляющей памяти и выдаваемых на выходы Y — на схеме микроархитектуры отмечены синим цветом. Каждая инструкция процессора провоцирует запуск определенной микропрограммы из управляющей памяти).
|
||
|
||
Устройства с микропрограммным управлением (УМУ) сами могут быть построены одним из двух способов, отличающиеся способом адресации следующей микроинструкции:
|
||
|
||
- УМУ с принудительной адресацией
|
||
- УМУ с естественной адресацией
|
||
|
||
В первом случае в каждой микроинструкции помимо операционной части (где хранятся значения управляющих сигналов для процессора) присутствуют еще три поля: два поля адреса и поле признака, кодирующего информацию о том, какие флаги от операционных устройств надо проверить. Если флаги совпадают с указанными в микроинструкции, то следующей загружается микроинструкция по адресу из первого поля, в противном случае — из второго.
|
||
|
||
Такой подход плох тем, что одно поле адреса микроинструкции никогда не используется, так как всегда имеет смысл и выбирается только одно из двух. За счет этого увеличивается необходимый объем памяти, что приводит к замедлению скорости работы устройства (большая память = медленная память).
|
||
|
||

|
||
|
||
Альтернативный подход: УМУ с естественной адресации. В подобном устройстве микроинструкция состоит из 3 полей: операционная часть (либо адресная), поле флагов, которые надо проверить у операционных устройств и поле признака, сообщающее что сейчас в основной части (операция или адрес новой микроинструкции). В обычной ситуации, если поле признака равно 0, счетчик, в составе этого УМУ, с каждым таком увеличивается, указывая каждый раз на следующую микрокоманду. При этом в самой микрокоманде хранится операционная часть (управляющие сигналы для процессора). Но, если значения признака равно 1, это значит, что в микроинструкции вместо операционной части находится адрес, который будет загружен в счетчик, если флаги указанный в микрокоманде соответствуют флагам, поступаемых от операционных устройств.
|
||
|
||

|
||
|
||
Такой подход позволяет значительно уменьшить управляющую память, за счет чего она получится быстрее. Однако, микроинструкции ветвления, при таком подходе, требуют дополнительного такта на обработку (когда признак равен 1 нет операционной части).
|
||
|
||
Когда управляющая память хранит значения всех сигналов процессора в естественной форме, это называется *горизонтальным микропрограммированием*. Это значит, что, если устройство управления должно формировать, например, 50 управляющих сигналов для всех блоков процессора, то каждая микроинструкция будет включать в себя операционную часть длиной в 50 бит, то есть отдельный бит для каждого управляющего сигнала.
|
||
|
||
Горизонтальное микропрограммирование не требует наличие дешифратора на выходе УМУ, однако, для хранения всех значений сигнала потребуется относительно большая память, что повлияет на скорость ее работы. Альтернативой является *вертикальное микропрограммирование*, в котором каждой длинной последовательности сигналов (например, 50 в нашем примере) ставится в соответствие более короткая последовательность (например, из 10 бит). В таком случае на выходе УМУ требуется расположить дешифратор, который будет преобразовывать короткий код в длинный.
|
||
|
||
С одной стороны это уменьшает объем требуемой памяти (хорошо отражается на ее скорости), но дешифратор сам имеет задержку распространения сигнала, а значит уменьшает эффект от уменьшения ее объема.
|
||
|
||
Золотая середина — *квазивертикальное* (*горизонтально-вертикальное*) *микропрограммирование*, при котором стараются найти баланс между степенью сжатия микроинструкций и величиной дешифратора на выходе УМУ.
|
||
|
||
## Основные материалы лекции
|
||
|
||
1. [Ссылка](https://www.youtube.com/watch?v=xHefXrFNI0M) на видеозапись лекции
|
||
2. По вопросу синтеза многотактного процессора та же проблема с литературой. Либо смотреть запись лекции, либо ориентироваться на полный процесс синтеза многотактного процессора в тексте, но на примере архитектуры MIPS [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера* — весь параграф 7.4]
|
||
3. Про устройство управления с жесткой логикой и с микропрограммным управлением [***Кафедра ВТ***. *Микропроцессорные средства и системы* — Лекция 2.1]
|
||
|
||
## Дополнительные материалы для саморазвития
|
||
|
||
1. Более развернутое, однако при этом и более сухое, описание вариантов реализации устройства управления. В этом источнике, например, разбирается нанопрограммное управление, которое не затрагивалось на лекции, и есть пример реализации УУ на жесткой логике (тут, правда, это называется аппаратной логикой — суть одна) [***Орлов и Цилькер***. *Организация ЭВМ и систем* — Глава 4. три параграфа начинающиеся со слов 'Микропрограммный автомат…']
|
||
2. Еще один синтез многотактного процессора, но с архитектурой ARM. Похоже на RISC-V и MIPS, но со своими тонкостями. А еще, чтобы усвоить материал придется предварительно прочитать всю первую главу книги про архитектуру ARM [***Харрис и Харрис***. *Цифровая схемотехника и архитектура компьютера. Дополнение по архитектуре ARM* — весь параграф 2.4]
|
||
|
||
## Популярные материалы
|
||
|
||
1. [Обязательно к просмотру!](http://buthowdoitknow.com/cpu_model_intro.html) Рабочая модель процессора с многотактной микроархитектурой и устройством управления с жесткой логикой (с кольцевым счетчиком, все как положено). [Тут](http://buthowdoitknow.com/but_how_do_it_know_cpu_model.html) можно прямо в браузере написать программку и посмотреть потактово\покомандно ее исполнение, рассматривая откуда и куда идут сигнальчики, вникая в самую суть происходящего. Очень интересно и увлекательно.
|
||
|
||
Чтобы было понятней происходящее, надо прочесть [описание](http://buthowdoitknow.com/cpu_model_intro.html), либо нажать Details под [схемой](http://buthowdoitknow.com/but_how_do_it_know_cpu_model.html). Нажав на Load sample multiplying 5x5 в открывшемся окне, в окно программы загрузиться стандартный пример, за которым можно понаблюдать при первом ознакомлении с моделью.
|
||
|
||
А еще на странице проекта можешь найти вариант модели процессора на Excel.
|
||
|
||

|