Jump to content

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

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

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

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

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

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

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

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

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

Если ПК представляет собой двоичный счетчик, он может увеличиваться при подаче импульса на его вход СЧЕТ ВВЕРХ, или ЦП может вычислить какое-то другое значение и загрузить его в ПК с помощью импульса на его вход ЗАГРУЗКА. [11]

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

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

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

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

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

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

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

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

Примечания [ править ]

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

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

  1. Перейти обратно: Перейти обратно: а б Хейс, Джон П. (1978). Компьютерная архитектура и организация . МакГроу-Хилл. п. 245. ИСБН  0-07-027363-4 .
  2. ^ Мид, Карвер ; Конвей, Линн (1980). Введение в системы СБИС . Ридинг, США: Аддисон-Уэсли . ISBN  0-201-04358-0 .
  3. ^ Принципы работы, тип 701 и сопутствующее оборудование (PDF) . ИБМ . 1953.
  4. Гарри Кацан (1971), Компьютерная организация и система / 370 , Van Nostrand Reinhold Company , Нью-Йорк, США, LCCCN 72-153191
  5. ^ Зильбершац, Авраам ; Ганье, Грег; Гэлвин, Питер Б. (апрель 2018 г.). Концепции операционной системы . США: Уайли . стр. 27, Г-29. ISBN  978-1-119-32091-3 .
  6. ^ «ARM Developer Suite, Руководство по ассемблеру. Версия 1.2» . АРМ Лимитед . 2001 . Проверено 18 октября 2019 г.
  7. ^ Джон Л. Хеннесси и Дэвид А. Паттерсон (1990), Компьютерная архитектура: количественный подход , Morgan Kaufmann Publishers , Пало-Альто, США, ISBN   1-55860-069-8
  8. ^ Б. Рэндалл (1982), Истоки цифровых компьютеров , Springer-Verlag , Берлин, D
  9. ^ К. Гордон Белл и Аллен Ньюэлл (1971), Компьютерные структуры: материалы для чтения и примеры , McGraw-Hill Book Company , Нью-Йорк, США
  10. ^ Арнольд, Альфред (2020) [1996, 1989]. «E. Предопределенные символы» . Макро Ассемблер AS – Руководство пользователя . В1.42. Перевод Арнольда, Альфреда; Хильзе, Стефан; Кантак, Стефан; Селлке, Оливер; Де Томази, Витторио. п. Таблица E.3: Предопределенные символы – Часть 3. Архивировано из оригинала 28 февраля 2020 г. Проверено 28 февраля 2020 г. 3.2.12. WRAPMODE […] AS будет считать, что программный счетчик процессора имеет не полную длину в 16 бит, заданную архитектурой, а длину, достаточную для обращения к внутреннему ПЗУ. Например, в случае AT90S8515 это означает 12 бит, что соответствует 4 Ксловам или 8 Кбайтам. Это предположение допускает относительные ответвления от начала ПЗУ к концу и наоборот, что может привести к ошибке вне ветвления при использовании строгой арифметики. Здесь они работают, потому что биты переноса, возникающие в результате вычисления целевого адреса, отбрасываются. […] В случае вышеупомянутого AT90S8515 эта опция даже необходима, поскольку это единственный способ выполнить прямой переход через всё адресное пространство […]
  11. ^ Уокер, Б.С. (1967). Введение в компьютерную инженерию . Лондон, Великобритания: Издательство Лондонского университета . ISBN  0-340-06831-0 .
  12. ^ Ф. Б. Чемберс, Д. А. Дуче и Г. П. Джонс (1984), Распределенные вычисления , Academic Press , Орландо, США, ISBN   0-12-167350-2
  13. ^ Дуглас Хофштадтер (1980), Гёдель, Эшер, Бах: вечная золотая коса , Penguin Books , Хармондсворт, Великобритания, ISBN   0-14-005579-7
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ae1bf984d06582f8ed6c99d1b56ba6eb__1715332980
URL1:https://arc.ask3.ru/arc/aa/ae/eb/ae1bf984d06582f8ed6c99d1b56ba6eb.html
Заголовок, (Title) документа по адресу, URL1:
Program counter - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)