Микропроцессоры
Первые пионеры информатики, такие как Алан Тьюринг и Джон фон Нейман, постулировали, что для того, чтобы вычислительное устройство было действительно полезным, оно не только должно иметь возможность генерировать определенные выходные данные, продиктованные запрограммированными инструкциями, но и записывать данные. в память и иметь возможность действовать с этими данными позже.
И этапы программы, и обработанные данные должны были находиться в общем «пуле» памяти, уступая место метке компьютера с хранимой программой . Теоретическая машина Тьюринга использовала ленту с последовательным доступом, которая будет хранить данные для считывания схемой управления, схемы управления перезаписывают данные на ленту и / или перемещают ленту в новое положение для чтения дополнительных данных.
Современные компьютеры используют устройства памяти с произвольным доступом вместо лент с последовательным доступом, чтобы выполнять по сути то же самое, но с более широкими возможностями.
Полезной иллюстрацией является ранняя технология автоматического управления станками. Называется разомкнутым , а иногда просто NC (числовое управление), эти системы управления будут управлять движением станка, такого как токарный станок или фрезерный станок, следуя инструкциям, запрограммированным в виде отверстий на бумажной ленте.
Лента будет проходить в одном направлении через механизм «чтения», и машина будет слепо следовать инструкциям на ленте, не обращая внимания на какие-либо другие условия. Хотя эти устройства устраняли необходимость в том, чтобы оператор-человек направлял каждое движение станка, их полезность была ограничена.
Поскольку машина не видела реального мира, только следуя инструкциям, записанным на ленте, она не могла компенсировать изменяющиеся условия, такие как расширение металла или износ механизмов.
Кроме того, программист на магнитной ленте должен был четко понимать последовательность предыдущих инструкций в программе станка, чтобы избежать неприятных обстоятельств (таких как указание станку переместить сверло в сторону, пока оно все еще вставлено в отверстие в работе). поскольку у устройства не было памяти, кроме самой ленты, которая была доступна только для чтения.
Обновление с простого считывателя ленты до конструкции управления с конечным состоянием дало устройству своего рода память, которую можно было использовать для отслеживания того, что оно уже было сделано (посредством обратной связи некоторых битов данных с битами адреса), так что, по крайней мере, программист может решить, что схема запоминает «состояния», в которых может находиться станок (например, «СОЖ включен» или положение инструмента). Однако все еще есть возможности для улучшения.
Окончательный подход состоит в том, чтобы программа давала инструкции, которые включали бы запись новых данных в память чтения / записи (RAM), которые программа могла бы легко вызвать и обработать. Таким образом, система управления может записывать то, что она сделала, и любые обнаруживаемые сенсором изменения процесса, почти так же, как человек-машинист может записывать заметки или измерения в блокноте для использования в будущем в своей работе. Это то, что называется ЧПУ или числовым программным управлением с замкнутым циклом .
Инженеры и ученые-информатики с нетерпением ожидали возможности создания цифровых устройств, которые могли бы модифицировать их собственное программирование, во многом так же, как человеческий мозг адаптирует силу межнейронных связей в зависимости от окружающего опыта (вот почему сохранение памяти улучшается при повторных исследованиях, и поведение изменяется в результате обратной связи).
Это было бы практично только в том случае, если бы компьютерная программа хранилась в том же «пуле» записываемой памяти, что и данные. Интересно отметить, что идея самомодифицирующейся программы по-прежнему считается передовой в компьютерных науках.
Большая часть компьютерного программирования опирается на довольно фиксированные последовательности инструкций, при этом отдельное поле данных - единственная информация, которая изменяется.
Чтобы упростить подход с использованием хранимых программ, нам требуется устройство, которое намного сложнее простого конечного автомата, хотя применимы многие из тех же принципов. Во-первых, нам нужна память для чтения / записи, к которой можно будет легко получить доступ:это достаточно просто сделать.
Чипы статической или динамической RAM хорошо справляются со своей задачей и стоят недорого. Во-вторых, нам нужна какая-то логика для обработки данных, хранящихся в памяти. Поскольку стандартные и логические арифметические функции очень полезны, мы можем использовать арифметико-логическое устройство (ALU), такое как пример ПЗУ таблицы поиска, рассмотренный ранее.
Наконец, нам нужно устройство, которое контролирует, как и где данные передаются между памятью, ALU и внешним миром. Это так называемый блок управления - это самая загадочная часть головоломки, состоящая из буферов с тремя состояниями (для направления данных на шины и от них) и логики декодирования, которая интерпретирует определенные двоичные коды как инструкции для выполнения.
Примеры инструкций могут выглядеть примерно так:«сложить число, хранящееся по адресу памяти 0010, с числом, хранящимся по адресу памяти 1101», или «определить четность данных в адресе памяти 0111». Выбор того, какие двоичные коды представляют, какие инструкции для блока управления декодировать, в значительной степени произвольный, так же как выбор двоичных кодов для представления букв алфавита в стандарте ASCII был в значительной степени произвольным.
Однако теперь ASCII является международно признанным стандартом, тогда как коды команд блока управления почти всегда зависят от производителя.
Объединение этих компонентов вместе (память для чтения / записи, ALU и блок управления) приводит к созданию цифрового устройства, которое обычно называют процессором . . Если используется минимальный объем памяти и все необходимые компоненты содержатся в одной интегральной схеме, она называется микропроцессором . . В сочетании с необходимой схемой поддержки управления шиной он известен как центральный процессор . , или ЦП.
Работа ЦП суммируется в так называемом цикле выборки / выполнения . . Получить означает чтение инструкции из памяти для декодирования блоком управления. Небольшой двоичный счетчик в ЦП (известный как программный счетчик или указатель инструкции ) содержит значение адреса, по которому следующая инструкция сохраняется в основной памяти.
Управляющий модуль отправляет это значение двоичного адреса в адресные строки основной памяти, а выходные данные памяти считываются управляющим модулем для отправки в другой регистр хранения. Если выбранная инструкция требует чтения дополнительных данных из памяти (например, при сложении двух чисел мы должны прочитать оба числа, которые должны быть добавлены из основной памяти или из какого-либо другого источника), блок управления соответствующим образом адресует местоположение запрашиваемые данные и направляет вывод данных в регистры ALU.
Затем управляющий модуль выполнит команду, сигнализируя ALU о том, что нужно сделать то, что было запрошено с двумя числами, и направит результат в другой регистр, называемый аккумулятором . . Теперь инструкция была «выбрана» и «выполнена», поэтому блок управления теперь увеличивает счетчик программы для перехода к следующей инструкции, и цикл повторяется.
Микропроцессор (ЦП) -------------------------------------- | ** Счетчик программ ** | | (увеличивает значение адреса, отправленное в | | микросхемы внешней памяти для выборки | ==========> Адресная шина | следующая инструкция) | (в оперативную память) -------------------------------------- | ** Блок управления ** | <=========> Шина управления | (декодирует инструкции, прочитанные из | (для всех устройств, использующих | программа в памяти, разрешает поток | адресные и / или информационные шины; | данных в и из ALU, внутренние | арбитражное решение для всех автобусных коммуникаций | регистры и внешние устройства) | катионы) -------------------------------------- | ** Арифметико-логический блок (ALU) ** | | (выполняет все математические | | вычисления и логические | | функции) | -------------------------------------- | ** Регистры ** | | (небольшая память чтения / записи для | <=========> шины данных | коды инструкций, | (из оперативной памяти и др. | коды ошибок, данные ALU и т. д .; | внешние устройства) | включает "аккумулятор") | --------------------------------------
Как можно догадаться, выполнение даже простых инструкций - утомительный процесс. Блоку управления необходимо выполнить несколько шагов для выполнения простейших математических процедур.
Это особенно верно для арифметических процедур, таких как экспоненты, которые включают повторное выполнение («итераций») более простых функций. Только представьте себе, какое количество шагов необходимо внутри ЦП, чтобы обновить биты информации для графического дисплея в игре-симуляторе полета!
Единственное, что делает такой утомительный процесс практичным, - это то, что микропроцессорные схемы могут повторять цикл выборки / выполнения с большой скоростью.
В некоторых конструкциях микропроцессоров минимальные программы хранятся в специальной памяти ПЗУ, встроенной в устройство (называемой микрокодом ), которые обрабатывают все подэтапы, необходимые для выполнения более сложных математических операций. Таким образом, для выполнения задачи из ОЗУ программы нужно считывать только одну инструкцию, и программисту не нужно пытаться указывать микропроцессору, как выполнять каждый минутный шаг. По сути, это процессор внутри процессора; программа, работающая внутри программы.
Промышленные технологии