feat: билет 4 доведен до какого-то состояния
This commit is contained in:
@ -36,4 +36,6 @@ pun: "Как называют человека, который пожертво
|
||||
|
||||
# Устройство управления
|
||||
|
||||
![[Глава 3. Процессор#Устройство управления]]
|
||||
^a29a65
|
||||
|
||||
![[Глава 3. Процессор#Устройство управления]] ^522375
|
||||
@ -3,3 +3,90 @@ tags:
|
||||
- служебное/в_процессе
|
||||
pun: Пуля, попавшая в школьного учителя, вышла и зашла как положено
|
||||
---
|
||||
## Устройство управления
|
||||
|
||||
Если вы не помните про то, как микропрограммный автомат связан с устройством управления, перечитайте прошлый билет, а точнее его [[03 - Схема процессора (схема). Выполнение команд процессором. Операционные устройства. Типы операционных устройств с магистральной структурой. Устройство управления#^a29a65|последний абзац]]
|
||||
|
||||
## Микропрограммирование команд
|
||||
|
||||
Есть 2 основных вида микропрограммных автоматов, по названиям которых дается название всему УУ.
|
||||
|
||||
![[Глава 3. Процессор#^CU-types-list]]
|
||||
|
||||
Первый один раз и на века спаивается производителем (подробнее можно почитать [[Глава 3. Процессор#^846e1e|тут]]), его, как понимаете, не покодишь, а вот второй вполне можно.
|
||||
|
||||
*Я кратко резюмирую написанное [[Глава 3. Процессор#Микропрограммный автомат с программируемой логикой|тут]]*
|
||||
|
||||
Микрокоманды разбивают большую команду (`add rax, [rbx + 4 * rcx - 40]`) на маленькие шаги, чтобы не приходилось вообще все опкоды реализовывать аппаратно, это позволяло в свое время не слабо экономить на аппаратных частях процессора. Реализация примерно такая:
|
||||
|
||||
![[Глава 3. Процессор#^struct-image]]
|
||||
|
||||
![[Глава 3. Процессор#^f2908e]]
|
||||
|
||||
## Структура процессора с 3 шинами
|
||||
|
||||
*будет еще раз затронута при микропрограммировании, но раз препод расставил вопросы в таком порядке, приведу ее и тут*
|
||||
|
||||
![[Глава 3. Процессор#^b0a065]]
|
||||
|
||||
Запоминать эту радость надо, видимо, наизусть, но попытаюсь облегчить это дело, сдобрив пониманием:
|
||||
|
||||
> [!comment]- Примечение билетёра о том, почему модель такая, какая она есть
|
||||
> **Можете не читать это, а просто заучить, я не заставляю**
|
||||
>
|
||||
> В общем-то здесь просто минимальная модель процессора, какая вообще возможна (и с оговорками). Меньше ее сделать нельзя по двум причинам:
|
||||
>
|
||||
> - На ней будет показываться микропрограммирование, что закрепляет часть элементов
|
||||
> - Без остальных частей не заведется ни один уважающий себя процессор
|
||||
>
|
||||
> Сначала рассмотрим "обрубок АЛУ" как я его называю. Ранее по билетам%%укажи где%% я упоминал, что минимальный процессор должен уметь в операции сложения, сдвига и инверсии. Ну короче вот они все тут и стоят
|
||||
>
|
||||
> Любой процессор должен иметь счетчик команд для того, чтобы хотя бы просто идти вперед по списку команд.
|
||||
>
|
||||
> Регистр адреса нужен банально как дополнение к счетчику команд, чтобы формировать адреса операндов, без него совсем тяжко
|
||||
>
|
||||
> 2 регистра нужны, потому что архитектура у нас регистровая, а не стековая или еще какая, поэтому все операции через регистры, а значит регистров как минимум больше одного. Больше двух для целей демонстрации тоже смысла делать не было, вот препод и не нарисовал
|
||||
>
|
||||
> Буферный регистр придется запомнить, потому что он нужен во операциях сдвига или подобном, чтобы предотвращать гонки (race condition), когда результат операции может меняться из-за того, что в одном месте ток пришел на 3 наносекунды позже
|
||||
>
|
||||
> Константная единица нужна, чтобы можно было при демонстрации прибавить кол к какому-нибудь числу. Теоретически она выплевывает что-то типа $00 \dots 001$
|
||||
>
|
||||
> Память оставлю без комментариев - мы никуда без оперативы
|
||||
|
||||
Касаемо назначения циферок и как это дело микропрограммировать будем рассматривать [[#Пример микропрограммы|дальше]]
|
||||
## Микрокоманды и микропрограмма
|
||||
|
||||
![[Глава 3. Процессор#Микрокоманды и микропрограммы]]
|
||||
|
||||
## Пример микропрограммы
|
||||
|
||||
*Тут обращаемся к нашей схеме*
|
||||
|
||||
![[Глава 3. Процессор#^b0a065]]
|
||||
|
||||
И вставлю сюда же чуть более обстоятельные объяснения:
|
||||
|
||||
![[Глава 3. Процессор#Процессор с тремя внутренними шинами]]
|
||||
|
||||
*Теперь я постараюсь объяснить, зачем тут каждый из шагов*
|
||||
|
||||
Во-первых оставлю отрывок из методички о том, как это объясняет препод:
|
||||
|
||||
![[Pasted image 20250106002341.png]]
|
||||
|
||||
%%*Того, что было написано в методичке маловато для того, чтобы закодить этот алгоритм, поэтому придется реализовать его вам самостоятельно. Ну или пишите - попробую реализовать его, но сейчас как будто бы билетов еще много впереди*%%
|
||||
|
||||
Теперь что касается строк таблицы (вместо "Регистр 1" и "Регистр 2" буду писать R1, R2):
|
||||
|
||||
1. Подать R1 на BB, подать R2 на AB, выполнить суммирование
|
||||
2. Сумму поместить в регистр R1
|
||||
3. Снова сложить R1 и R2 (повторяет шаг 1)
|
||||
4. Поместить результат сложения в R2
|
||||
5. Подать на BB вместо содержимого регистра кучу единиц, а на AB положить R1, инвертировать оба значения и результат сложить
|
||||
6. Результат сложения в R1
|
||||
|
||||
Тут по идее 3 разных программы:
|
||||
|
||||
1. R1 = R1 + R2
|
||||
2. R2 = R1 + R2
|
||||
3. R1 = not R1
|
||||
@ -172,6 +172,8 @@
|
||||
- Микропрограммный автомат с жесткой логикой
|
||||
- Микропрограммный автомат с программируемой логикой
|
||||
|
||||
^CU-types-list
|
||||
|
||||
> [!comment]- Примечание билетёра о различиях
|
||||
> Если не вдаваться в детали, то помогает аналогия из курса схемача. Есть разные виды интегральных схемок.
|
||||
>
|
||||
@ -184,6 +186,8 @@
|
||||
> Вот тут ситуация сходная
|
||||
## Микропрограммный автомат с жесткой логикой
|
||||
|
||||
^846e1e
|
||||
|
||||
Производитель один раз и на века соединил контакты в логической схеме, что на один и тот же вход процессоры этого аппарата, как бы мы с ними не колдовали, будут выдавать одни и те же сигналы управления
|
||||
|
||||
![[Pasted image 20250104190627.png]]
|
||||
@ -207,11 +211,15 @@
|
||||
|
||||
![[Pasted image 20250104194436.png]]
|
||||
|
||||
^struct-image
|
||||
|
||||
*Tут приверду отрывок методички. Он вполне понятно все объясняет*
|
||||
|
||||
"Запуск микропрограммы выполнения операции осуществляется путем передачи кода операции из регистра команды на вход преобразователя, в котором код операции (КОП) преобразуется в начальный адрес микропрограммы. Выбранная по этому адресу из памяти микропрограмм микрокоманда заносится в регистр. Микрокоманда содержит КОП и адресную часть. КОП поступает на дешифратор и формирует управляющие сигналы, адрес передается для формирования адреса следующей микрокоманды. Этот адрес может зависеть от флагов, КОП, внешних устройств"
|
||||
"Запуск микропрограммы выполнения операции осуществляется путем передачи кода операции из регистра команды на вход преобразователя, в котором код операции (КОП) преобразуется в начальный адрес микропрограммы. Выбранная по этому адресу из памяти микропрограмм микрокоманда заносится в регистр. Микрокоманда содержит КОП и адресную часть. КОП поступает на дешифратор и формирует управляющие сигналы, адрес передается для формирования адреса следующей микрокоманды. Этот адрес может зависеть от флагов, КОП, внешних устройств" ^f2908e
|
||||
|
||||
## Пример процессора с 3 шинами и его микропрограммирования
|
||||
# Пример процессора с 3 шинами и его микропрограммирования
|
||||
|
||||
## Микрокоманды и микропрограммы
|
||||
|
||||
Микрокоманд в УУ может быть много, но все они, как правило, принадлежат к одному из двух типов:
|
||||
|
||||
@ -231,7 +239,7 @@
|
||||
### Объем микрокода и размер микрокоманд
|
||||
|
||||
|
||||
Из того, что GATE использует для каждого выхода УУ отдельный бит, можно сделать вывод, что этих битов в этом микропрограммном слове %%термин сам придумал, не используйте%%должно быть никак не меньше, чем количество выходов на процессоре, а также еще один, отведенный под *признак* (синий квадратик на схемах)
|
||||
Из того, что GATE использует для каждого выхода УУ отдельный бит, можно сделать вывод, что этих битов в этом микропрограммном слове %%термин сам придумал, не используйте%%должно быть никак не меньше, чем количество выходов на процессоре, а также еще один, отведенный под *признак* (голубой квадратик на схемах)
|
||||
|
||||
Также необходимо, чтобы в команда TEST могла проверить любой интересующий ее бит в любом регистре. Так что разрядность ограничена снизу еще и этим параметром
|
||||
|
||||
@ -243,15 +251,15 @@
|
||||
|
||||
Суть в том, что микрокоды (те самые наборы битов, которых у нас мало, но которые примерно по 100 бит каждое), мы храним в нанопамяти, а в микропамяти мы храним условно "адреса" нужных намкодов в нанопамяти, при этом каждый адрес у нас совсем небольшой (на схеме 6 бит, потому что 64 микрокода в нанопамяти, а $2^{6} = 64$)
|
||||
|
||||
### Процессор с тремя внутренними шинами
|
||||
## Процессор с тремя внутренними шинами
|
||||
|
||||
*Ну вот и то, ради чего мы работали все это время*
|
||||
|
||||
![[Pasted image 20250105233200.png]]
|
||||
![[Pasted image 20250105233200.png]] ^b0a065
|
||||
|
||||
Вот эту схему надо запомнить наизусть походу (по крайней мере в билете написано "(схема)")
|
||||
|
||||
Вот на этой вот схемке в разных узелочках вы можете видеть стрелочки, над некоторыми даже есть цифры. Так вот, эти стрелочки - проводочки, а эта шняга работает как транзистор - пускает дальше сигнал или не пускает (на уровне модели, что там препод имел в виду - бог его рассудит)
|
||||
Вот на этой вот схемке в разных узелочках вы можете видеть стрелочки, над некоторыми даже есть цифры. Так вот, эти стрелочки - проводочки, а эта шняга работает как транзистор - пускает дальше сигнал или не пускает (это на уровне модели, что там препод имел в виду - бог его рассудит)
|
||||
|
||||
Далее. Магистрали здесь обозначены AB (A BUS), BB (B BUS), CB (C BUS). Вот этот набор в правом нижнем углу предлагаю считать обрубком нормального АЛУ. (в методичке кстати за АЛУ принят только сумматор, но не суть). Как видно к сумматору стрелки не идет, из чего я предположу, что сложим мы 2 числа вообще в любом случае, а вот подавая единицы на другие стробы в АЛУ можно регулировать, будет ли операция. 0 - не будет, 1 будет. При этом проходить сигнал дальше будет независимо от того, какой сигнал мы подали (тут это не транзистор, это какой-то мультиплексор)
|
||||
|
||||
|
||||
BIN
Приложения/Pasted image 20250106002341.png
Normal file
BIN
Приложения/Pasted image 20250106002341.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
Reference in New Issue
Block a user