Счетчик программ

редактировать

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

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

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

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

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

Содержание
  • 1 Аппаратная реализация
  • 2 Последствия в архитектуре машины
  • 3 Последствия в высокоуровневом программировании
  • 4 Символ
  • 5 См. Также
  • 6 Примечания
  • 7 Ссылки
Аппаратная реализация

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

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

Если ПК является двоичным счетчиком, он может увеличиваться при подаче импульса на его вход COUNT UP, или ЦП может вычислить какое-то другое значение и загрузить его в ПК с помощью импульса на вход ЗАГРУЗКИ.

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

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

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

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

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

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

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

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

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

См. Также
Примечания
Ссылки
Последняя правка сделана 2021-06-02 07:48:23
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте