Teres-1t.ru

Инженерные решения
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Счетчик команд — Program counter

Счетчик команд — Program counter

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

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

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

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

Содержание

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

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

Читайте так же:
Кран с фильтром для счетчика

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

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

Визуализация цикла обучения

Ciclo Instrucción Unidad Control

  • Получить или захватить: В котором инструкция захватывается из ОЗУ и копируется в процессор.
  • Декодирование или декодирование: В котором ранее захваченная инструкция декодируется и отправляется исполнительным блокам.
  • Выполнили: Если инструкция разрешена, а результат записан во внутренние регистры процессора или в адрес памяти RAM

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

Первый этап цикла обучения: выборка

Получить процесс

  1. Программный счетчик или Программный счетчик: Что указывает на следующую строку памяти, где находится следующая инструкция процессора. Его значение увеличивается на 1 каждый раз, когда завершается полный цикл команд или когда команда перехода изменяет значение программного счетчика.
  2. Регистр адреса памяти: MAR копирует содержимое ПК и отправляет его в ОЗУ через адресационные контакты ЦП, которые соединены с адресными контактами самого ОЗУ.
  3. Регистр данных памяти или регистр данных памяти : В случае, если ЦП должен выполнить чтение памяти, MDR копирует содержимое этого адреса памяти во внутренний регистр ЦП, который является временным регистром передачи, прежде чем его содержимое будет скопировано в регистр команд. MDR, в отличие от MAR, подключается к выводам данных RAM, а не к контактам адресации, и в случае инструкции записи содержимое того, что вы хотите записать в RAM, также записывается в MDR.
  4. Реестр инструкций: Заключительной частью этапа выборки является запись инструкции в регистр инструкций, из которого блок управления процессором копирует ее содержимое для второго этапа цикла инструкций.

Эти 4 подэтапа происходят во всех процессорах, независимо от их полезности, архитектуры и двоичной совместимости или того, что мы называем ISA.

устройство управления

Устройство управления

  • Они отвечают за координацию движения и порядок, в котором данные перемещаются внутри и вне процессора, а также за различные подблоки, которые за это отвечают.
  • В общем, считается, что блоки этапа захвата или Fetch являются частью оборудования, которое мы называем блоком управления, и это оборудование также называется Front-End процессора.
  • Он интерпретирует инструкции и отправляет их различным исполнительным устройствам, к которым он подключен.
  • Он передается различным ALU и исполнительным блокам процессора, которые действуют
  • Он отвечает за захват и декодирование инструкций, а также за запись результатов в регистры, кеши или в соответствующий адрес ОЗУ.
Читайте так же:
Водомерный узел манометр до счетчика

Код операции-режим-адрес

Блок управления декодирует инструкции, и он делает это, потому что каждая инструкция на самом деле является своего рода предложением, в котором сначала идет глагол, а затем прямой объект или объект, на котором выполняется действие. Субъект в конечном итоге исключается на этом внутреннем языке компьютеров, поскольку понимается, что это сам компьютер выполняет его, поэтому каждое число битов представляет собой предложение, в котором первые 1 и 0 соответствуют действию, а единицы Далее идут данные или расположение данных, которыми нужно управлять.

Второй этап: декодирование

Decodificación Instrucciones

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

Например, на диаграмме выше у нас есть диаграмма процессора всего с 8 инструкциями, которые могут быть закодированы только 3 битами. Каждая из инструкций после декодирования отправляется различным исполнительным блокам, которые их разрешат.

Блок управления Ciclo Instrucción

Maqueta Tren Ciclo Instrucción

Этот цикл команд является самым сложным из всех и определяет тип архитектуры. В зависимости от того, есть ли у нас сокращенный или сложный набор инструкций, это повлияет на характер блока управления, в зависимости от формата инструкции или от того, сколько одновременно обрабатывается на этапе декодирования, и, следовательно, блок управления будет иметь разная природа. Другой.

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

Третий этап: Выполнить

1 бит ALU

  • Инструкции по перемещению долота: В котором осуществляется управление порядком битов, содержащих данные.
  • Арифметические инструкции: Там, где выполняются математические и логические операции, они решаются в так называемых ALU или арифметико-логических устройствах.
  • Инструкции по прыжкам: В котором изменяется следующее значение программного счетчика, что позволяет использовать код рекурсивно.
  • Инструкция к памяти: Они используются процессором для чтения и записи информации из системной памяти.
Читайте так же:
Счетчик банкнот docash 430

Другой момент — это форматы инструкций, поскольку инструкция может применяться к данным, скаляру или нескольким данным одновременно, что мы знаем как SIMD. В заключение и в зависимости от формата данных существуют разные типы ALU для выполнения арифметических инструкций, например, сегодня у нас есть целые числа и блоки с плавающей запятой как дифференцированные блоки.

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

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

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

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

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

Содержание

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

Читайте так же:
Сервисный центр по ремонту счетчика банкнот

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

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

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

Создателем арифметико-логических устройств считается Джон фон Нейман, разработчик компьютеров ЭНИАК (электронных числовых вычислителей).

Уже в 1945 году им были опубликованы первые научные работы по своему стартовому изобретению — компьютеру EDVAC. В следующем году он уже работал вместе со своими коллегами над созданием такого устройства в Принстонском институте перспективных исследований.

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

составные части арифметико логического устройства

Флаги регистра SREG

Флаги регистра SREG

Флаг I (бит 7): Global Interrupt Enable (Флаг глобального разрешения прерываний)

Для включения прерываний флаг I должен быть установлен. Затем управление включением отдельных прерываний выполняется в отдельных регистрах управления. Если флаг I сброшен, ни одно из прерываний не включено, независимо от настроек отдельного прерывания. Флаг I очищается аппаратным обеспечением после завершения прерывания (автоматически сбрасывается), а устанавливается инструкцией RETI для включения последующих прерываний. Флаг I также может быть установлен и очищен инструкциями SEI и CLI, как описано в документации.

Читайте так же:
Схема подключения бокса счетчика

Благодаря автоматическому сбросу этого флага во время выполнения подпрограммы обработки прерывания запрещается (и исключается) возникновение других прерываний. Если бы это не делалось, то могло бы возникнуть очень большое количество рекурсивных вызовов (что в итоге привело бы к зависанию).

Разрешаются прерывания обычно вручную при возврате из обработчика прерываний.

Флаг T (бит 6): Bit Copy Storage (Хранение Копируемого Бита)

Инструкции копирования бита (Bit Copy), то есть инструкции BLD (Bit LoaD) и BST (Bit STore), используют флаг T как источник или приёмник при операциях с битом. Бит из регистра в Регистре Файла (Register File) можно скопировать в бит Т с помощью инструкции BST, а состояние флага Т можно скопировать в бит регистра Регистра Файла при помощи команды BLD.

Флаг H (бит 5): Half Carry Flag (Флаг половинного переноса)

Флаг полупереноса H указывает на полуперенос в некоторых арифметических операциях. Полуперенос полезен в арифметике BCD.

Флаг полупереноса ведёт себя также, как флаг обычного переноса, только он связан с младшей тетрадой. Например,

При выполнении этой операции будет установлен флаг полупереноса, так как произошёл перенос из третьего бита (старшего бита младшей тетрады).

Более подробно об этом в описании набора команд процессора.

Флаг S (бит 4): Sign Bit (Флаг знака)

S = N (+) V (исключающее или между флагами N и V)

Флаг S равен итогу операции исключающего или между флагом отрицательного результата N и флагом переполнения V. Более подробно об этом в описании набора команд процессора.

Флаг V (бит 3): Two’s Complement Overflow Flag (Флаг переполнения дополнительного кода)

Флаг V поддерживает арифметику дополнения до двух. Более подробно об этом в описании набора команд процессора.

Флаг N (бит 2): Negative Flag (Флаг отрицательного значения)

Флаг N указывает на то, что результат арифметической или логической операции был отрицательным. Более подробно об этом в описании набора команд процессора.

Флаг Z (бит 1): Zero Flag (Флаг нуля)

Флаг Z указывает на то, что результат арифметической или логической операции равен нулю. Более подробно об этом в описании набора команд процессора.

Флаг C (бит 0): Carry Flag (Флаг переноса)

Флаг C указывает на перенос при арифметической или логической операции. Более подробно об этом в описании набора команд процессора.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector