stringtranslate.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

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

Ссылки

  1. ^ ab Hayes, John P. (1978). Архитектура и организация компьютера . McGraw-Hill. стр. 245. ISBN 0-07-027363-4.
  2. ^ Мид, Карвер ; Конвей, Линн (1980). Введение в системы СБИС . Рединг, США: Addison-Wesley . ISBN 0-201-04358-0.
  3. ^ Принципы работы, тип 701 и связанное с ним оборудование (PDF) . IBM . 1953.
  4. ^ Гарри Катзан (1971), Организация компьютеров и система/370 , Van Nostrand Reinhold Company , Нью-Йорк, США, LCCCN 72-153191
  5. ^ Бейтс, Мартин (2011). «Операция микроконтроллера». Микроконтроллеры PIC . Elsevier. стр. 27–44. doi :10.1016/b978-0-08-096911-4.10002-3. ISBN 978-0-08-096911-4. Счетчик программ (PC) — это регистр, который отслеживает последовательность программы, сохраняя адрес текущей выполняемой инструкции. Он автоматически загружается нулем при включении или сбросе чипа. При выполнении каждой инструкции PC увеличивается на единицу, чтобы указать на следующую инструкцию.
  6. ^ Зильбершатц, Абрахам ; Ганье, Грег; Гэлвин, Питер Б. (апрель 2018 г.). Концепции операционных систем. США: Wiley . стр. 27, G-29. ISBN 978-1-119-32091-3.
  7. ^ "ARM Developer Suite, Assembler Guide. Версия 1.2". ARM Limited . 2001. Получено 18 октября 2019 г.
  8. ^ Джон Л. Хеннесси и Дэвид А. Паттерсон (1990), Архитектура компьютера: количественный подход , Morgan Kaufmann Publishers , Пало-Альто, США, ISBN 1-55860-069-8 
  9. ^ Б. Рэндалл (1982), Происхождение цифровых компьютеров , Springer-Verlag , Берлин, D
  10. ^ C. Gordon Bell и Allen Newell (1971), Computer Structures: Readings and Examples , McGraw-Hill Book Company , Нью-Йорк, США
  11. ^ Arnold, Alfred (2020) [1996, 1989]. "E. Предопределенные символы". Macro Assembler AS – Руководство пользователя. V1.42. Перевод Arnold, Alfred; Hilse, Stefan; Kanthak, Stephan; Sellke, Oliver; De Tomasi, Vittorio. стр. Таблица E.3: Предопределенные символы – Часть 3. Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 . 3.2.12. WRAPMODE […] AS будет предполагать, что счетчик программ процессора не имеет полной длины в 16 бит, заданной архитектурой, но вместо этого имеет длину, которая точно достаточна для адресации внутреннего ПЗУ. Например, в случае AT90S8515 это означает 12 бит, что соответствует 4 Ксловам или 8 Кбайт. Это предположение допускает относительные переходы от начала ПЗУ к концу и наоборот, что привело бы к ошибке выхода из ветвления при использовании строгой арифметики. Здесь они работают, поскольку биты переноса, полученные в результате вычисления целевого адреса, отбрасываются. […] В случае вышеупомянутого AT90S8515 эта опция даже необходима, поскольку это единственный способ выполнить прямой переход через полное адресное пространство […]
  12. ^ Уокер, Б.С. (1967). Введение в вычислительную технику . Лондон, Великобритания: University of London Press . ISBN 0-340-06831-0.
  13. ^ FB Chambers, DA Duce и GP Jones (1984), Распределенные вычисления , Academic Press , Орландо, США, ISBN 0-12-167350-2 
  14. ^ Дуглас Хофштадтер (1980), Гёдель, Эшер, Бах: вечная золотая коса , Penguin Books , Хармондсворт, Великобритания, ISBN 0-14-005579-7