Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

Аппаратная реализация [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

Символ [ править ]

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

См. Также [ править ]

  • Прогноз ветвления
  • Кэш инструкций
  • Цикл обучения
  • Блок инструкции
  • Инструкционный конвейер
  • Регистр инструкций
  • Планирование инструкций
  • Слово состояния программы

Заметки [ править ]

  1. ^ Для современных процессоров концепция «где он находится в своей последовательности» слишком упрощена, посколькуможет возникнуть параллелизм на уровне команд и выполнение вне очереди.
  2. ^ В процессоре, где приращение предшествует выборке, ПК указывает на текущую выполняемую инструкцию. В некоторых процессорах ПК указывает на некоторое расстояние за пределами текущей инструкции; например, в ARM7 значение PC, видимое программисту, указывает за пределы текущей инструкции и за пределы слота задержки . [5]

Ссылки [ править ]

  1. ^ Мид, Карвер ; Конвей, Линн (1980). Введение в системы СБИС . Ридинг, США: Аддисон-Уэсли . ISBN 0-201-04358-0.
  2. ^ Принципы работы, тип 701 и сопутствующее оборудование (PDF) . IBM . 1953 г.
  3. ^ Гарри Кацан (1971), Компьютерная организация и система / 370 , Van Nostrand Reinhold Company , Нью-Йорк, США, LCCCN 72-153191
  4. ^ Зильбершатц, Авраам ; Гань, Грег; Галвин, Питер Б. (апрель 2018 г.). Понятия операционной системы . США: Wiley . С. 27, G-29. ISBN 978-1-119-32091-3.
  5. ^ "ARM Developer Suite, Руководство по сборщику. Версия 1.2" . ARM Limited . 2001 . Проверено 18 октября 2019 .
  6. ^ Джон Л. Хеннесси и Дэвид А. Паттерсон (1990), Компьютерная архитектура: количественный подход , Morgan Kaufmann Publishers , Пало-Альто, США, ISBN 1-55860-069-8 
  7. Перейти ↑ B. Randall (1982), The Origins of Digital Computers , Springer-Verlag , Berlin, D
  8. ^ C. Гордон Белл и Аллен Ньюэлл (1971), Компьютерные структуры: чтения и примеры , McGraw-Hill Book Company , Нью-Йорк, США
  9. ^ a b c Арнольд, Альфред (2020) [1996, 1989]. «E. Предопределенные символы» . Macro Assembler AS - Руководство пользователя . V1.42. Перевод Арнольда, Альфреда; Хильсе, Стефан; Кантак, Стефан; Селлке, Оливер; Де Томази, Витторио. п. Таблица Д.3: Предопределенные символы - Часть 3. архивация от оригинала на 2020-02-28 . Проверено 28 февраля 2020 . 3.2.12. WRAPMODE […] AS предполагает, что программный счетчик процессора не имеет полной длины в 16 бит, заданной архитектурой, а вместо этого имеет длину, которая в точности достаточна для адресации внутреннего ПЗУ. Например, в случае AT90S8515, это означает 12 бит, соответствующих 4 килобайтам или 8 килобайтам. Это предположение допускает относительные переходы от начала к концу ПЗУ и наоборот, что приведет к ошибке отсутствия перехода при использовании строгой арифметики. Здесь они работают, потому что биты переноса, полученные в результате вычисления целевого адреса, отбрасываются. […] В случае вышеупомянутого AT90S8515 эта опция даже необходима, потому что это единственный способ выполнить прямой переход через все адресное пространство […]
  10. ^ Уокер, BS (1967). Введение в компьютерную инженерию . Лондон, Великобритания: Лондонский университет Press . ISBN 0-340-06831-0.
  11. ^ FB Chambers, DA Duce и GP Jones (1984), Распределенные вычисления , Academic Press , Орландо, США, ISBN 0-12-167350-2 
  12. ^ Дуглас Хофштадтер (1980), Гедель, Эшер, Бах: вечная золотая коса , Penguin Books , Хармондсворт, Великобритания, ISBN 0-14-005579-7