feat: дополнен конспект по 3 главе
В новой информации все, что требуется для билета 4
@ -0,0 +1,5 @@
|
||||
---
|
||||
tags:
|
||||
- служебное/в_процессе
|
||||
pun: Пуля, попавшая в школьного учителя, вышла и зашла как положено
|
||||
---
|
||||
@ -163,4 +163,105 @@
|
||||
- Адресная часть обеспечивает формирование адресов операндов в основной памяти. Состоит из:
|
||||
- операционного узла устройства управления (ОПУУ), который формирует исполнительные адреса операндов команды
|
||||
- регистра адреса (похоже используется именно для обращения в память, если надо)
|
||||
- счетчика команд (похоже это rip)
|
||||
- счетчика команд (похоже это rip)
|
||||
|
||||
## Типы микропрограммных автоматов
|
||||
|
||||
По типу микропрограммного автомата определяется тип всего устройства управления. Есть у нас:
|
||||
|
||||
- Микропрограммный автомат с жесткой логикой
|
||||
- Микропрограммный автомат с программируемой логикой
|
||||
|
||||
> [!comment]- Примечание билетёра о различиях
|
||||
> Если не вдаваться в детали, то помогает аналогия из курса схемача. Есть разные виды интегральных схемок.
|
||||
>
|
||||
> В первом виде тебе приносят камень, ты один раз загружаешь в него прошивку... и все, он такой на веки вечные и не изменится больше, как ты молоточком не стучи
|
||||
>
|
||||
> Во втором виде можно перепрошивать эту плисину сколько угодно раз, хоть до посинения
|
||||
>
|
||||
> Так вот, в общем случае первый тип работает намного быстрее и стабильнее, а сами такие чипы получаются дешевле, но при разработке или при ограниченности бюджетов прошивать каждый раз новый кристалл и в случае ошибки его выбрасывать выходит слишком дорого, поэтому разрабатывают на программируемых чипах.
|
||||
>
|
||||
> Вот тут ситуация сходная
|
||||
## Микропрограммный автомат с жесткой логикой
|
||||
|
||||
Производитель один раз и на века соединил контакты в логической схеме, что на один и тот же вход процессоры этого аппарата, как бы мы с ними не колдовали, будут выдавать одни и те же сигналы управления
|
||||
|
||||
![[Pasted image 20250104190627.png]]
|
||||
|
||||
Очевидно, что для той же операции сложения, когда мы смотрели выше на стробы, нам потребовалось существенно больше одного такта, так что здесь помимо кода операции мы постоянно смотрим на то, какой по счету пришел тактовый импульс от начала команды и после реализации всего КОП'а мы сбрасываем счетчик тактов.
|
||||
|
||||
*Преподаватель отмечает, что для такой реализации желательно, чтобы для каждого КОП'а был свой собственный вход, чего добиваются дешифратором*
|
||||
|
||||
> [!comment]- Комментарий билетёра о "логических схемах формирования сигналов управления"
|
||||
> В данном случае реализация будет самая лобовая - например у нас есть выходы C1, C2, C3, C4. Мы смотрим берем провод от I1 (на рисунке) и протягиваем сигнал с него во все выходы, на которые он должен повоздействовать, но не просто, а через логическое И, а к этому логическому И протягиваем все тактирующие импульсы T1, T2, T3, на которых сигнал должен дойти до выхода. Все, устройство собрано, а формулау него что-то вроде `C1 = (I1 and T1) or (I1 and T4) or (I3 and T1) or (I3 and T2)`
|
||||
>
|
||||
> То есть мы просто протянули все инструкции, которые задействуют выход C1 через такты, на которых эти инструкции должны выдавать 1 и вуа ля, мы собрали простейшую логическую схему (при чем не думаю, что в реальном процессоре все это реализовано сильно иначе)
|
||||
|
||||
## Микропрограммный автомат с программируемой логикой
|
||||
|
||||
В таком типе автоматов между входом в виде КОП'а и тактовых импульсов, и выходом в виде управляющих сигналов появляется прослойка - **микропрограмма**
|
||||
|
||||
В микропрограммном автомате с жесткой логикой мы один раз намертво соединяли контакты, что означает, что последовательность действий для выполнения, например, сложения, надо реализовать аппаратно электрическими схемами, вычитания - тоже логическими схемами. То есть **абсолютно каждая операция в устройстве управления должна быть реализована аппаратно**. В целом сейчас, когда расходы на аппаратные комплектующие относительно маленькие, так и делают, однако в свое время это было неимоверно дорого
|
||||
|
||||
Микропрограммы решали эту проблему. Сами по себе они состояли только из узкого набора команд, которые железо могло выполнить напрямую, а в совокупности позволяли выполнять все команды, доступные процессору. Условно появление `shr` запускало целую микропрограмму, которая постепенно передвигала все биты так, чтобы выполнилась команда `shr`. На схеме это выглядит так
|
||||
|
||||
![[Pasted image 20250104194436.png]]
|
||||
|
||||
*Tут приверду отрывок методички. Он вполне понятно все объясняет*
|
||||
|
||||
"Запуск микропрограммы выполнения операции осуществляется путем передачи кода операции из регистра команды на вход преобразователя, в котором код операции (КОП) преобразуется в начальный адрес микропрограммы. Выбранная по этому адресу из памяти микропрограмм микрокоманда заносится в регистр. Микрокоманда содержит КОП и адресную часть. КОП поступает на дешифратор и формирует управляющие сигналы, адрес передается для формирования адреса следующей микрокоманды. Этот адрес может зависеть от флагов, КОП, внешних устройств"
|
||||
|
||||
## Пример процессора с 3 шинами и его микропрограммирования
|
||||
|
||||
Микрокоманд в УУ может быть много, но все они, как правило, принадлежат к одному из двух типов:
|
||||
|
||||
1. GATE - стробирование (подача управляющих сигналов)
|
||||
2. TEST - анализа (проверка битов в регистрах)
|
||||
|
||||
Все микрокоманды считываются с ПЗУ (обычно встроенного) с тактовой частотой процессора (то есть несколько миллиардов команд в секунду). Размер одной команды называется *словом*.
|
||||
### Микрокоманда GATE
|
||||
|
||||
![[Pasted image 20250105230320.png]]
|
||||
|
||||
При выполнении этой команды УУ просто подает соответствующие нули и единицы на свои выходы (по схеме понятно)
|
||||
### Микрокоманда TEST
|
||||
|
||||
![[Pasted image 20250105230420.png]]
|
||||
|
||||
### Объем микрокода и размер микрокоманд
|
||||
|
||||
|
||||
Из того, что GATE использует для каждого выхода УУ отдельный бит, можно сделать вывод, что этих битов в этом микропрограммном слове %%термин сам придумал, не используйте%%должно быть никак не меньше, чем количество выходов на процессоре, а также еще один, отведенный под *признак* (синий квадратик на схемах)
|
||||
|
||||
Также необходимо, чтобы в команда TEST могла проверить любой интересующий ее бит в любом регистре. Так что разрядность ограничена снизу еще и этим параметром
|
||||
|
||||
На практике оказывается, что дав возможность записать в команду любой набор битов, мы выясняем, что для реализации вообще всего талмуда интел нам требуется, скажем 64 комбинации. Другие мы не использовали ни разу. Встает вопрос - а зачем всю эту радость хранить, это же отжирает у нас место, которое, напомню, дорогое
|
||||
|
||||
Поэтому пришли к примерно такой куче мала:
|
||||
|
||||
![[Pasted image 20250105232919.png]]
|
||||
|
||||
Суть в том, что микрокоды (те самые наборы битов, которых у нас мало, но которые примерно по 100 бит каждое), мы храним в нанопамяти, а в микропамяти мы храним условно "адреса" нужных намкодов в нанопамяти, при этом каждый адрес у нас совсем небольшой (на схеме 6 бит, потому что 64 микрокода в нанопамяти, а $2^{6} = 64$)
|
||||
|
||||
### Процессор с тремя внутренними шинами
|
||||
|
||||
*Ну вот и то, ради чего мы работали все это время*
|
||||
|
||||
![[Pasted image 20250105233200.png]]
|
||||
|
||||
Вот эту схему надо запомнить наизусть походу (по крайней мере в билете написано "(схема)")
|
||||
|
||||
Вот на этой вот схемке в разных узелочках вы можете видеть стрелочки, над некоторыми даже есть цифры. Так вот, эти стрелочки - проводочки, а эта шняга работает как транзистор - пускает дальше сигнал или не пускает (на уровне модели, что там препод имел в виду - бог его рассудит)
|
||||
|
||||
Далее. Магистрали здесь обозначены AB (A BUS), BB (B BUS), CB (C BUS). Вот этот набор в правом нижнем углу предлагаю считать обрубком нормального АЛУ. (в методичке кстати за АЛУ принят только сумматор, но не суть). Как видно к сумматору стрелки не идет, из чего я предположу, что сложим мы 2 числа вообще в любом случае, а вот подавая единицы на другие стробы в АЛУ можно регулировать, будет ли операция. 0 - не будет, 1 будет. При этом проходить сигнал дальше будет независимо от того, какой сигнал мы подали (тут это не транзистор, это какой-то мультиплексор)
|
||||
|
||||
#### Как мы будем эту радость кодить?
|
||||
|
||||
А кодить мы это будем, записывая на стробики с какими номерами мы подаем 1, а на какие 0, формируя следующую таблицу
|
||||
|
||||
![[Pasted image 20250105233756.png]]
|
||||
|
||||
%%Сверху представлена таблица, как можно закодить вычитание на этом обрубке. Тут я этому уделять внимание не буду, это в билете будет нормально написано%%
|
||||
|
||||
Как вы понимаете, препод поскупился дать номер вообще всем стробам, поэтому над некоторыми стрелочками номера есть, над другими нет. *Во время ответа на билет, если вы запомнили эту схему повыше, сами там их понумеруйте как вам больше нравится, таблица будет все равно отвратная*
|
||||
|
||||
|
||||
BIN
Приложения/Pasted image 20250104190627.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
Приложения/Pasted image 20250104194436.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
Приложения/Pasted image 20250105230320.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
Приложения/Pasted image 20250105230420.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
Приложения/Pasted image 20250105232919.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
Приложения/Pasted image 20250105233200.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
Приложения/Pasted image 20250105233756.png
Normal file
|
After Width: | Height: | Size: 26 KiB |