Счетчик команд - Program counter

Передняя панель компьютера IBM 701, представленного в 1952 году. Индикаторы в центре отображают содержимое различных регистров. Счетчика команд находится в нижнем левом углу.

Программный счетчик ( PC ), обычно называемый указатель команд ( IP ) в Intel x86 и Itanium микропроцессоров , а также иногда называют регистр адреса инструкции ( IAR ), то счетчик команд , или только часть секвенсор команд, является регистр процессора , который указывает, где находится компьютер в своей программной последовательности.

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

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

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

Аппаратная реализация

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

Подобно другим регистрам процессора, ПК может представлять собой набор двоичных защелок, каждая из которых представляет один бит значения ПК. Количество бит (ширина ПК) зависит от архитектуры процессора. Например, «32-битный» CPU может использовать 32 бита, чтобы иметь возможность адресовать 2 32 единицы памяти. На некоторых процессорах ширина программного счетчика зависит от адресуемой памяти; например, у некоторых контроллеров AVR есть ПК, который завершает работу после 12 бит.

Если ПК является двоичным счетчиком, он может увеличиваться при подаче импульса на его вход COUNT UP, или CPU может вычислить какое-то другое значение и загрузить его в ПК с помощью импульса на его вход LOAD.

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

Последствия для машинной архитектуры

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

Это исследование также привело к способам ускорения работы обычных ЦП на базе ПК, в том числе:

Последствия в программировании высокого уровня

Современные языки программирования высокого уровня по-прежнему следуют модели последовательного выполнения, и, действительно, общий способ выявления ошибок программирования - это «выполнение процедуры», в которой палец программиста идентифицирует точку выполнения, как это сделал бы ПК. Язык высокого уровня - это, по сути, машинный язык виртуальной машины, слишком сложный для создания аппаратного обеспечения, но вместо этого эмулируемый или интерпретируемый программным обеспечением.

Однако новые модели программирования выходят за рамки программирования с последовательным выполнением:

Символ

Поставщики используют разные символы для обозначения счетчика программ в программах на ассемблере . В то время как использование символа «$» распространено в документации процессоров Intel , Zilog , Texas Instruments , Toshiba , NEC , Siemens и AMD , Motorola , Rockwell Semiconductor , Microchip Technology и Hitachi вместо этого используют символ «*», тогда как SGS-Thomson Микроэлектроника использует «ПК».

Смотрите также

Заметки

Ссылки