Как работают Микропроцессоры. Часть 2. Логика микропроцессора.

logik

Для того чтобы разобраться в том, как микропроцессор работает, заглянем в него изнутри, узнаем о логике, используемой в нем, поговорим об ассемблере - родном языке микропроцессора, и других вещах, которые инженеры могут предпринять, чтобы усилить скорость работы процессора.

В основном микропроцессор выполняет набор машинных команд, которые говорят ему, что делать. Основанный на инструкциях, микропроцессор выполняет три основные задачи:

Используя его ALU (Арифметически-Логическое устройство), микропроцессор может выполнять математические операции, такие как дополнение, вычитание, умножение и разделение. Современные микропроцессоры содержат полные наборы команд (препроцессоры) для операций с плавающей запятой, которые могут выполнить чрезвычайно сложные операции с большим количеством чисел после запятой.

Микропроцессор может переместить данные от одной ячейки памяти до другой.

Микропроцессор может принять решение о переходе к новому набору инструкций, основываясь на определенных обстоятельствах и применимых к ним инструкциях.


Микропроцессор может выполнять очень сложные вещи, используя перечисленные выше три основных вида деятельности.

Далее приведу рисунок, на котором показано схематичное представление чрезвычайно простого микропроцессора, способного к выполнению наших трех основных задач:

scheme_proc

Этот микропроцессор имеет:

Адресную шину (может быть 8, 16, 32 и 64 бита шириной), которая назначает адреса в памяти.

Шину данных (может быть 8, 16, 32 и 64 бита шириной), которая может отправлять данные в память либо получать данные из памяти.

Read (чтение) и Write (запись) каналы необходимые, чтобы сообщить микропроцессору о том, что нужно от памяти системе и приложениям.

Канал часов, позволяет тактовому импульсу упорядочивать процессор.

Канал сброса, сбрасывает счетчик команд, чтобы обнулить процессор, так же служит для выполнения перезапусков процессора.

Предположим, что адресные шины и шины данных в нашем примере 8 битов шириной.

Компоненты этого простого микропроцессора такие:

Регистры A, B и C являются просто фиксаторами, сделанными из триггеров (транзисторов).

Защелка адреса точно так же как регистры A, B и C является транзистором способному к быстрому изменению состояния (да-нет-да-нет 1-0-1-0).

Счетчик команд - фиксатор с дополнительной возможностью постепенно увеличиться на 1 когда необходимо, и также сбросить значения в случае специальных инструкций.

ALU может быть столь же простым как 8-разрядный сумматор (калькулятор), основными действиями которого будет добавить, вычесть, умножить и разделить 8-разрядные значения.

Тестовый регистр - специальный фиксатор, который может содержать значения для сравнения, выполняемых в ALU команд. ALU обычно сравнивает два числа и определяет, равны ли они или нет, если одно больше чем другое, то… и т.д. Тестовый регистр может также содержать бит переноса от последней стадии сумматора. Он хранит эти значения в триггерах, и затем декодер инструкции может использовать их, при принятии решений.

Так же на схеме есть шесть полей, отмеченных как "буфер 3-х состояний". Буфер с тремя состояниями может передать 1 (истина), 0 (ложь), или он может просто разъединиться (вообразите переключатель, который полностью разъединяет линию от провода). Буфер с тремя состояниями позволяет многократным выводам соединяться с проводом, но только одним из них, чтобы фактически давать 1 или 0 не смешивая их на линию.

Регистр команд и декодер инструкций отвечают за управление всеми другими компонентами микропроцессора.

Хотя в этой схеме я и не указал, но еще были бы строки управления исходящие от декодера инструкций, которые будут выглядеть так:

  • скажите регистру А фиксировать значение в настоящий момент на шине данных;
  • скажите регистру B фиксировать значение в настоящий момент на шине данных;
  • скажите регистру C фиксировать значение, в настоящий момент на выходе с ALU;
  • скажите регистру счетчика команд фиксировать значение в настоящий момент на шине данных;
  • скажите адресному регистру фиксировать значение в настоящий момент на шине данных;
  • скажите регистру команд фиксировать значение в настоящий момент на шине данных;
  • скажите счетчику команд постепенно увеличиваться;
  • скажите счетчику команд обнулиться;
  • активируйте любой из шести буферов с тремя состояниями (шесть отдельных строк);
  • скажите ALU выполнить вычисления;
  • скажите тестовому регистру фиксировать тестовые биты ALU;
  • активируйте строку RD;
  • активируйте строку WR; и т.д.

Вход в декодер инструкции осуществляется битами от тестового регистра и канала часов, так же как и битами из регистра команд.

СТАТЬИ

МАНУАЛЫ

СХЕМЫ