Электроника:Цифровая электроника/Принципы цифровых вычислений/Микропроцессоры

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Макаров В. (valemak) Контакты:</br>* Habr: @vakemak</br>* Сайт: www.valemak.com</br>Перевёл статей: 656.
Проверка/Оформление/Редактирование: Мякишев Е.А.


Микропроцессоры[1]

Такие первопроходцы информатики, как Алан Тьюринг и Джон фон Нейман, постулировали, что для того, чтобы вычислительное устройство было действительно полезным, оно должно не только генерировать определённые выходные данные в соответствии с запрограммированными инструкциями, но также должно иметь возможность записывать данные в память и иметь возможность действовать с этими данными позже.

И этапы выполнения программы, и обработанные данные должны находиться в общем «пуле» памяти, что проторило дорогу концепции компьютера с хранимой в памяти программой. Теоретическая машина Тьюринга использовала ленту с последовательным доступом, которая хранила данные для чтения схемой управления, схема управления перезаписывала данные на ленту и/или проматывала ленту в новую позицию для считывания дополнительных данных.

Современные компьютеры используют устройства памяти с произвольным доступом вместо лент с последовательным доступом, выполняющих, по существу, то же самое, но с бо́льшими возможностями.

Полезной иллюстрацией может служить ранняя технология автоматического управления станками. Это так называемые разомкнутые системы управления, называемые иногда просто ЧПУ (числовое программное управление), управляющие движением станков (токарных или фрезерных), следуя инструкциям, запрограммированным в виде отверстий в бумажной ленте.

Лента прокручивается в одном направлении через механизм «считывания», и машина слепо следует инструкциям на ленте, независимо от каких-либо других (внешних) условий. Хотя эти устройства устраняли необходимость в том, чтобы оператор-человек руководил каждым движением станка, их полезность была ограничена.

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

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

Переход от простого считывателя ленты к схеме управления с конечным состоянием дал устройству своего рода память, которую можно было использовать для отслеживания того, что оно уже сделало (посредством обратной связи некоторых битов данных с битами адресации), поэтому, по крайней мере, программист может обеспечить, чтобы схема запоминала «состояния», в которых может находиться станок (например, «включена подача СОЖ» или учёт положения инструмента). Однако ещё было куда расти.

Окончательный подход состоит в том, что программа даёт инструкции, включающие запись новых данных в память для чтения/записи (ОЗУ), которые программа могла бы легко вызывать и обрабатывать. Таким образом, система управления могла бы записывать то, что она сделала, и любые изменения процесса, обнаруживаемые датчиками, почти так же, как человек-механик может заносить заметки или измерения в блокнот для дальнейшего использования в своей работе. Это то, что называется современным ЧПУ или числовым программным управлением с обратной связью.

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

Это было бы практично только в том случае, если бы компьютерная программа хранилась в том же «пуле» доступной для записи памяти, что и данные. Интересно отметить, что понятие самомодифицирующейся программы до сих пор считается передовым в информатике.

Бо́льшая часть компьютерного программирования опирается на довольно фиксированные последовательности инструкций, при этом отдельное поле данных является единственной информацией, которая изменяется.

Чтобы облегчить подход с хранимой программой, нам требуется устройство, которое намного сложнее, чем простой КА, хотя применяются многие из тех же принципов. Во-первых, нам нужна память для чтения/записи, к которой можно легко получить доступ: это достаточно легко сделать.

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

Наконец, нам нужно устройство, которое контролирует, как и где данные передаются между памятью, АЛУ и внешним миром. Этот так называемый блок управления – самая загадочная часть головоломки, состоящая из буферов с тремя состояниями (для направления данных в шины и из шин) и логики декодирования, которая интерпретирует определённые двоичные коды как инструкции для выполнения.

Инструкции могут быть примерно такими: «сложить число, хранящееся по адресу памяти 0010, с числом, хранящимся по адресу памяти 1101», или «определить чётность данных по адресу памяти 0111». Выбор того, какие двоичные коды представляют, какие инструкции блоку управления декодировать, в значительной степени произволен, точно так же, как выбор того, какие двоичные коды использовать для представления букв алфавита в стандарте ASCII, был в значительной степени произвольным.

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

Объединение этих компонентов (память чтения/записи, АЛУ и блок управления) приводит к созданию цифрового устройства, которое обычно называют процессором. Если используется минимальный объём памяти, а все необходимые компоненты содержатся на одной интегральной схеме, то устройство называется микропроцессором. В сочетании с необходимой схемой поддержки управления шиной он известен как центральный процессор или ЦП.

Работа ЦП суммируется в так называемом цикле выборки/выполнения. Выборка означает чтение инструкции из памяти для декодирования блоком управления. Небольшой двоичный счётчик в ЦП (известный как программный счётчик или указатель инструкций) содержит значение адреса, по которому следующая инструкция хранится в основной памяти.

Блок управления отправляет это двоичное значение адреса в адресные строки основной памяти, и выходные данные памяти считываются блоком управления для отправки в другой регистр временного хранения. Если выбранная инструкция требует чтения большего количества данных из памяти (например, при сложении двух чисел мы должны прочитать оба числа, которые должны быть добавлены, из основной памяти или из какого-либо другого источника), блок управления соответствующим образом обращается к местоположению запрошенных данных и направляет вывод данных в регистры АЛУ.

Затем блок управления выполняет инструкцию, сигнализируя АЛУ делать с двумя числами всё, что было запрошено, и направлял результат в другой регистр, называемый аккумулятором. Тогда инструкция «выбрана» и «выполнена», поэтому теперь блок управления увеличивает программный счётчик для перехода к следующей инструкции, и цикл повторяется.

Микропроцессор (ЦПУ, центральный процессор управления)
Программный счётчик
(увеличивает значение адреса, отправляемое во внешнюю микросхему памяти для получения следующей инструкции)
Адресная шина
(к оперативной памяти)
Блок управления
(декодирует инструкции, считанные из программы в памяти, обеспечивает двухсторонний поток данных с АЛУ, внутренними регистрами и внешними устройствами)
Шина управления
(для всех устройств, совместно использующих адреса и/или шины данных; разрешает все коммуникации по шине)
Арифметико-логическое устройство (АЛУ)
(выполняет все математические расчёты и логические функции)
Регистры
(небольшая память для чтения/записи для хранения кодов инструкций, кодов ошибок, данных АЛУ и т.д., включает «накопитель»)
Шина данных
(из оперативной памяти и других внешних устройств)

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

Это особенно верно для арифметических действий (вроде нахождения экспоненты), которые включают повторные выполнения («итерации») более простых функций. Только представьте себе огромное количество шагов, необходимых центральному процессору для обновления битов информации для графического отображения в игре-симуляторе полёта!

Единственное, что делает этот утомительный процесс практичным, это тот факт, что микропроцессорные схемы способны повторять цикл выборки/выполнения с огромной скоростью. В некоторых конструкциях микропроцессоров существует минимальное количество программ, хранящихся в специальной внутренней памяти ПЗУ устройства (называемой микрокодом), которые обрабатывают все подшаги, необходимые для выполнения более сложных математических операций. Таким образом, для выполнения задачи необходимо прочитать только одну инструкцию из ОЗУ программы, и программисту не нужно пытаться сообщить микропроцессору, как выполнять каждый сиюминутный шаг. По сути, это процессор внутри процессора; программа, работающая внутри программы.

См.также

Внешние ссылки