Счетчик команд - Program counter
В счетчик команд (ПК), обычно называемый указатель инструкции (IP) в Intel x86 и Itanium микропроцессоры, а иногда называли регистр адреса инструкции (IAR),[1] то счетчик команд,[2] или просто часть последовательности команд,[3] это регистр процессора это указывает, где компьютер находится в его программа последовательность.[nb 1]
Обычно ПК увеличивается после получения инструкция, и держит адрес памяти из ("точки to ") следующая инструкция, которая будет выполнена.[4][nb 2]
Процессоры обычно последовательно извлекают инструкции из памяти, но передача управления инструкции изменяют последовательность, помещая новое значение в ПК. Они включают ветви (иногда называемые прыжками), подпрограмма звонки и возвращается. Передача, обусловленная истинностью некоторого утверждения, позволяет компьютеру следовать другой последовательности при разных условиях.
Ветвь обеспечивает выборку следующей инструкции из другого места в памяти. Вызов подпрограммы не только разветвляется, но и сохраняет где-то предыдущее содержимое ПК. Возврат извлекает сохраненное содержимое ПК и помещает его обратно в ПК, возобновляя последовательное выполнение с инструкцией, следующей за вызовом подпрограммы.
Аппаратная реализация
В простом центральное процессорное устройство (CPU) ПК - это цифровой счетчик (откуда происходит термин «программный счетчик»), который может быть одним из нескольких аппаратных регистры. В цикл обучения[6] начинается с принести, в котором ЦП помещает значение ПК в адресная шина отправить его в память. Память отвечает, отправляя содержимое этой ячейки памяти на шина данных. (Это компьютер с хранимой программой модель, в которой одно пространство памяти содержит как исполняемые инструкции, так и обычные данные.[7]) После выборки ЦП переходит к казнь, предпринимая некоторые действия в зависимости от полученного содержимого памяти. В какой-то момент этого цикла ПК будет изменен так, чтобы следующая выполняемая инструкция была другой (обычно, увеличивалась так, чтобы следующая инструкция начиналась с адреса памяти, следующего сразу за последней ячейкой памяти текущей инструкции) .
Как и другие регистры процессора, ПК может представлять собой набор двоичных защелок, каждая из которых представляет один бит значения ПК.[8] Количество бит (ширина ПК) зависит от архитектуры процессора. Например, «32-битный» ЦП может использовать 32 бита, чтобы иметь возможность адресовать 232 единиц памяти. На некоторых процессорах ширина программного счетчика зависит от адресуемой памяти; например, некоторые Контроллеры AVR есть ПК, который оборачивается после 12 бит.[9]
Если ПК является двоичным счетчиком, он может увеличиваться при подаче импульса на его вход COUNT UP, или CPU может вычислить какое-то другое значение и загрузить его в ПК с помощью импульса на его вход LOAD.[10]
Чтобы идентифицировать текущую инструкцию, ПК может быть объединен с другими регистрами, которые идентифицируют сегмент или страница. Этот подход позволяет ПК иметь меньше битов, предполагая, что большинство интересующих модулей памяти находятся в непосредственной близости от него.
Последствия для машинной архитектуры
Использование ПК, который обычно имеет приращение, предполагает, что компьютер выполняет обычно линейную последовательность инструкций. Такой ПК занимает центральное место в фон Неймана архитектура. Таким образом, программисты пишут последовательный поток управления даже для алгоритмов, которые не обязательно должны быть последовательными. Результирующий "узкое место фон Неймана »Привели к исследованиям в области параллельных вычислений,[11] в том числе не фон Неймана или поток данных модели, в которых не использовался ПК; например, вместо того, чтобы указывать последовательные шаги, высокоуровневый программист может указать желаемый функция и программист низкого уровня может указать это, используя комбинаторная логика.
Это исследование также привело к способам ускорения работы обычных ЦП на базе ПК, в том числе:
- Конвейерная обработка, в котором различное оборудование в ЦП одновременно выполняет разные фазы нескольких инструкций.
- В очень длинное командное слово (VLIW) архитектура, в которой одна инструкция может достигать нескольких эффектов.
- Методы прогнозирования внеочередное исполнение и подготовить последующие инструкции для выполнения вне обычной последовательности.
Последствия в высокоуровневом программировании
Современные языки программирования высокого уровня по-прежнему следуют модели последовательного выполнения, и, действительно, общий способ выявления ошибок программирования - это «выполнение процедуры», в которой палец программиста идентифицирует точку выполнения, как это сделал бы ПК. Язык высокого уровня - это, по сути, машинный язык виртуальной машины,[12] слишком сложен, чтобы быть построенным как оборудование, но вместо этого имитировать или интерпретированный ПО.
Однако новые модели программирования выходят за рамки программирования с последовательным выполнением:
- При написании многопоточный программы, программист может записать каждый поток как последовательность инструкций без указания времени выполнения какой-либо инструкции относительно инструкций в других потоках.
- В событийно-ориентированное программирование, программист может написать последовательность инструкций для ответа на События без указания общей последовательности выполнения программы.
- В программирование потока данных, программист может написать каждый раздел вычислительной трубопровод без указания времени относительно других разделов.
Символ
Поставщики используют разные символы для обозначения счетчика программ в язык ассемблера программы. Хотя использование символа "$" преобладает в Intel, Зилог, Инструменты Техаса, Toshiba, NEC, Сименс и AMD документация процессора, Motorola, Rockwell Semiconductor, Технология микрочипов и Hitachi вместо этого используйте символ "*",[9] в то время как SGS-Thomson Microelectronics использует «ПК».[9]
Смотрите также
- Прогноз ветвления
- Кэш инструкций
- Цикл обучения
- Блок инструкции
- Инструкционный конвейер
- Регистр инструкций
- Планирование инструкций
- Слово состояния программы
Заметки
- ^ Для современных процессоров понятие «где именно в последовательности» слишком упрощено, так как параллелизм на уровне инструкций и внеочередное исполнение может возникнуть.
- ^ В процессоре, где приращение предшествует выборке, ПК указывает на текущую выполняемую инструкцию. В некоторых процессорах ПК указывает на некоторое расстояние за пределы текущей инструкции; например, в ARM7, значение ПК, видимое программисту, указывает за пределы текущей инструкции и за слот задержки.[5]
использованная литература
- ^ Мид, Карвер; Конвей, Линн (1980). Введение в системы СБИС. Ридинг, США: Эддисон-Уэсли. ISBN 0-201-04358-0.
- ^ Принципы работы, тип 701 и связанное с ним оборудование (PDF). IBM. 1953.
- ^ Гарри Кацан (1971), Компьютерная организация и система / 370, Компания Van Nostrand Reinhold, Нью-Йорк, США, LCCCN 72-153191
- ^ Зильбершац, Авраам; Гань, Грег; Гэлвин, Питер Б. (апрель 2018 г.). Понятия операционной системы. Соединенные Штаты: Wiley. С. 27, G-29. ISBN 978-1-119-32091-3.
- ^ "ARM Developer Suite, Руководство по сборщику. Версия 1.2". ARM Limited. 2001. Получено 2019-10-18.
- ^ Джон Л. Хеннесси и Дэвид А. Паттерсон (1990), Компьютерная архитектура: количественный подход, Издательство Morgan Kaufmann, Пало-Альто, США, ISBN 1-55860-069-8
- ^ Б. Рэндалл (1982), Истоки цифровых компьютеров, Springer-Verlag, Берлин, D
- ^ К. Гордон Белл и Аллен Ньюэлл (1971), Компьютерные структуры: литература и примеры, Книжная компания McGraw-Hill, Нью-Йорк, США
- ^ а б c Арнольд, Альфред (2020) [1996, 1989]. «E. Предопределенные символы». Macro Assembler AS - Руководство пользователя. V1.42. Перевод Арнольда, Альфреда; Хильсе, Стефан; Кантак, Стефан; Селлке, Оливер; Де Томази, Витторио. п. Таблица E.3: Стандартные символы - Часть 3. В архиве из оригинала на 2020-02-28. Получено 2020-02-28.
3.2.12. WRAPMODE […] AS предполагает, что программный счетчик процессора не имеет полной длины в 16 бит, заданной архитектурой, а вместо этого имеет длину, которая в точности достаточна для адресации внутреннего ПЗУ. Например, в случае AT90S8515, это означает 12 бит, соответствующих 4 килобайтам или 8 килобайтам. Это предположение допускает относительные переходы от начала к концу ПЗУ и наоборот, что приведет к ошибке отсутствия перехода при использовании строгой арифметики. Здесь они работают, потому что биты переноса, полученные в результате вычисления целевого адреса, отбрасываются. […] В случае вышеупомянутого AT90S8515 эта опция даже необходима, потому что это единственный способ выполнить прямой переход через все адресное пространство […]
- ^ Уокер, Б. С. (1967). Введение в компьютерную инженерию. Лондон, Великобритания: Лондонский университет печати. ISBN 0-340-06831-0.
- ^ Ф. Б. Чемберс, Д. А. Дуче и Г. П. Джонс (1984), Распределенных вычислений, Академическая пресса, Орландо, США, ISBN 0-12-167350-2
- ^ Дуглас Хофштадтер (1980), Гедель, Эшер, Бах: вечная золотая коса, Книги о пингвинах, Хармондсворт, Великобритания, ISBN 0-14-005579-7