diff --git a/Билеты/03 - Схема процессора (схема). Выполнение команд процессором. Операционные устройства. Типы операционных устройств с магистральной структурой. Устройство управления.md b/Билеты/03 - Схема процессора (схема). Выполнение команд процессором. Операционные устройства. Типы операционных устройств с магистральной структурой. Устройство управления.md index 2cacbdb..9a3c377 100644 --- a/Билеты/03 - Схема процессора (схема). Выполнение команд процессором. Операционные устройства. Типы операционных устройств с магистральной структурой. Устройство управления.md +++ b/Билеты/03 - Схема процессора (схема). Выполнение команд процессором. Операционные устройства. Типы операционных устройств с магистральной структурой. Устройство управления.md @@ -36,4 +36,6 @@ pun: "Как называют человека, который пожертво # Устройство управления -![[Глава 3. Процессор#Устройство управления]] \ No newline at end of file +^a29a65 + +![[Глава 3. Процессор#Устройство управления]] ^522375 \ No newline at end of file diff --git a/Билеты/04 - Микропрограммирование команд. Структура процессора с тремя внутренними шинами(схема). Микрокоманды и микропрограмма. Пример микропрограммы..md b/Билеты/04 - Микропрограммирование команд. Структура процессора с тремя внутренними шинами(схема). Микрокоманды и микропрограмма. Пример микропрограммы..md index a3a759f..11a317e 100644 --- a/Билеты/04 - Микропрограммирование команд. Структура процессора с тремя внутренними шинами(схема). Микрокоманды и микропрограмма. Пример микропрограммы..md +++ b/Билеты/04 - Микропрограммирование команд. Структура процессора с тремя внутренними шинами(схема). Микрокоманды и микропрограмма. Пример микропрограммы..md @@ -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 \ No newline at end of file diff --git a/Дополнительно/Глава 3. Процессор.md b/Дополнительно/Глава 3. Процессор.md index bfd1035..dc9a274 100644 --- a/Дополнительно/Глава 3. Процессор.md +++ b/Дополнительно/Глава 3. Процессор.md @@ -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 будет. При этом проходить сигнал дальше будет независимо от того, какой сигнал мы подали (тут это не транзистор, это какой-то мультиплексор) diff --git a/Приложения/Pasted image 20250106002341.png b/Приложения/Pasted image 20250106002341.png new file mode 100644 index 0000000..9a7eb4a Binary files /dev/null and b/Приложения/Pasted image 20250106002341.png differ