Процессор
Процессор является основой любого компьютера. Это большая микросхема, содержащая внутри себя сотни тысяч или даже миллионы элементов. Современные процессоры чрезвычайно сложны и могут содержать несколько уровней построения и описания. Так, можно различать внешние команды процессора в том виде, в котором они используются в программах и записываются в оперативной памяти, и внутренний микрокод, применяемый для реализации внешних команд. Процессор может содержать внутри себя устройства, предназначенные для ускорения работы, — конвейер команд, устройство опережающей выборки из памяти, кеш-память и т.п.
Рассмотрим лишь самые общие принципы построения и работы процессора, которые одинаковы как для примитивных, так и для самых современных процессоров.
Любой процессор имеет устройство, выполняющее команды, и собственную внутреннюю память, реализованную внутри микросхемы процессора. Она называется регистрами процессора. Имеется 3 типа регистров:
общие регистры хранят целые числа или адреса. Размер общего регистра совпадает с размером машинного слова и в 32-разрядной архитектуре равен четырем байтам. Число общих регистров и их назначение зависит от конкретного процессора. В большинстве Ассемблеров к ним можно обращаться по именам R0, R1, R2, . Среди общих регистров имеются регистры специального назначения: указатель стека SP (Stack Pointer), счетчик команд PC (Program Counter) и др.;
регистр флагов содержит биты, которые устанавливаются в единицу или в ноль в зависимости от результата выполнения последней команды. Так, бит Z устанавливается в единицу, если результат равен нулю (Zero), бит N — если результат отрицательный (Negative), бит V — если произошло переполнение (oVerflow), бит С — если произошел перенос единицы из старшего или младшего разряда (Carry), например, при сложении двух целых чисел или при сдвиге. Значения битов в регистре флагов используются в командах условных переходов;
плавающие регистры содержат вещественные числа. В простых процессорах аппаратная поддержка арифметики вещественных чисел может отсутствовать. В этом случае плавающих регистров нет, а операции с вещественными числами реализуются программным путем.
Команды, или инструкции, процессора состоят из кода операции и операндов. Команда может вообще не иметь операндов или иметь один, два, три операнда. Команды с числом операндов большим трех встречаются лишь в процессорах специального назначения (служащих, например, для обработки сигналов) и в обычных архитектурах не используются. Чаще всего применяются двухадресные и трехадресные архитектуры: к двухадресным относятся, к примеру, все процессоры серии Intel 80×86, к трехадресным — серии Motorola 68000. В двухадресной архитектуре команда сложения выглядит следующим образом:
т.е. один из аргументов команды является одновременно и ее результатом. Этот аргумент называется получателем (destination). Аргумент, который не меняется в результате выполнения команды, называется источником (source). Среди программистов нет единого мнения о том, в каком порядке записывать аргументы при использовании Ассемблера, т.е. в символической записи машинных команд. Например, в Ассемблере «masm» фирмы IBM для процессоров Intel 80×86 получатель всегда записывается первым, а источник вторым. Ассемблер «masm» используется в операционных системах MS DOS и Windows. В Ассемблере «as», который входит в состав компилятора «gcc» и используется в системах типа Unix (Linux и т.п.), получатель всегда является последним аргументом. Та же команда сложения записывается в «as» как
что означает сложить Y и X и результат записать в X.
В трехадресной архитектуре команда сложения имеет 3 операнда:
Получателем в трехадресной архитектуре обычно является третий аргумент, т.е. в данном случае сумма X+Y записывается в Z.
Операндами команды могут быть регистры или элементы памяти. В действительности, конечно, процессор всегда сначала копирует слово из памяти в регистр, который может быть либо явно указан в команде, либо использоваться неявно. Операция всегда выполняется с содержимым регистров. После этого результат может быть записан в память либо оставлен в регистре. Например, при выполнении команды увеличения целого числа на единицу
в случае, когда операнд X является словом оперативной памяти, содержимое слова X сначала неявно копируется во внутренний регистр процессора, затем выполняется его увеличение на единицу, и после этого увеличенное значение записывается обратно в память.
Имеется несколько способов задания операнда, находящегося в оперативной памяти, они называются режимами адресации. Это
абсолютная адресация — когда в команде указывается константа, равная адресу аргумента;
косвенная адресация — когда в команде указывается регистр, содержащий адрес аргумента;
относительная адресация — адрес аргумента равен сумме содержимого регистра и константы, задающей смещение;
индексная адресация с масштабированием — адрес аргумента равен сумме содержимого базового регистра, константы, задающей смещение, а также содержимого индексного регистра, умноженного на масштабирующий множитель. Масштабирующий множитель может принимать значения 1, 2, 4, 8. Этот режим удобен для обращения к элементу массива.
Бывают и другие, более изощренные, режимы адресации, когда, например, адрес аргумента содержится в слове, адрес которого содержится в регистре (так называемая двойная косвенность).
Устройства управления. Регистры процессора
Коды операций команд программы воспринимаемой управляющей частью МП расшифрованный и преобразованный в ней, дают информацию о том какие операции надо выполнить, где в памяти расположены данные, куда надо направить результат, где расположена следующая за выполняемой команда.
УУ в строгой последовательности в рамках тактовой и цикловой временных интервалах работы МП осуществляет: выборку команды, интерпретацию ее с целью анализа формата, служебных признаков и вычисление адреса операнда, установление номенклатуры и временной последовательности, всех функциональных управляющих сигналом, генерацию управляющих импульсов и передачу их на управляющую шину функциональных частей микро ЭВМ и вентилей между ними. Анализ результата операции и изменение своего состояния так чтобы определить месторасположение (адрес) следующей команды.
Такт – минимальный рабочий интервал в течении которого совершается одно элементарное действие.
Цикл – интервал времени в течении которого выполняется одна машинная операция.
В МП используется 2 метода выборки совокупности функциональных управляющих сигналов программы и микропрограммы.
В программных устройствах управления каждой операции соответствует свой набор логических схем. Управление реализацией микрооперации достигается за счет однажды соединенных между собой логических схем — ЭВМ с жесткой логикой управления.
УУ с микропрограммной реализацией
— в ЗУ разряд выходного кода определяет появление определенного функционального сигнала управления, поэтому каждой микрооперации ставится в соответствие свой информационный код – микрокоманда.
Набор микрокоманд называется – микропрограммами.
К микропрограммам предъявляют требования функциональной полноты и минимальности.
1) для обеспечения возможности разработки микропрограмм любых машинных операций
2) уменьшение объема используемого оборудования
Принцип микропрограммного управления включает следующие позиции:
1) любая операция реализуемая устройством является последовательностью элементарных действий — микроопераций
2) для управления порядком следований микроопераций используются логические условия
3) процесс выполнения операции в устройстве описывается в форме алгоритма, представляемого в терминах микроопераций и логических условий называемого микропрограммой
4) микропрограмма используется как форма представления функций устройств, на основе, которой определяется структура, и порядок функционирования устройства во времени.
Регистры – устройство, предназначенное для временного хранения данных ограниченного размера, (важная характеристика: высокая скорость приема и выдачи данных), обычный регистр имеет ту же разрядность, что и машинное слово.
Регистр обладающий способностью перемещать содержимое своих разрядов называется сдвиговым.
Если при сдвиге последний разряд переходит в 1й, то регистр называется циклическим сдвиговым.
Регистры общего назначения (РОН) – регистры сверхоперативной памяти или регистровый файл (РФ) – общее название для регистра который временно содержит данные передаваемые в память или принимаемые из нее.
Регистр команд (РК) – служит для размещения текущей команды которая находится в нем в течении текущего цикла процесса.
Регистр (РАГ), счетчик (СчАК), адреса команды – регистр содержащий адрес текущей команды.
Регистр адреса (РА) – содержит адрес одного из операндов выполняемой команды (регистров может быть несколько).
Регистр числа (РЧ) – содержит операнд выполняемой команды (может быть несколько).
Регистр результата (РР) – предназначается для хранения результата выполнения команды.
Сумматор – регистр, осуществляющий операции сложения.
Аккумулятор – регистр, хранящий промежуточные данные.
Регистр состояния (регистр плага) – здесь хранится информация об особых результатах завершения команды, каждый бит является значимым.
РЕЖИМЫ АДРЕСАЦИИ
При выполнении программы многим командам требуется доступ к памяти для выборки данных, записи промежуточных и окончательных результатов вычислений. Для любого такого обращения, что уже отмечалось выше, в команде необходимо как-то указать адрес операнда. Поэтому способ формирования адресов операндов в значительной степени определяет способность ЭВМ эффективно осуществлять обработку информации. Объем памяти в ЭВМ постоянно растет и поэтому существенной становится проблема сокращения длины команды. Для преодоления ограничений по длине команды и повышения эффективности обработки информации в ЭВМ имеется множество режимов адресации, которые позволяют
a) определять полный адрес памяти меньшим числом бит, тем самым, сокращая длину команды;
b) обращаться к ячейкам памяти, адреса которых вычисляются во время выполнения программы, что обеспечивает удобный доступ к данным различной структуры;
c) вычислять адрес памяти относительно позиции команды или относительно другого объекта таким образом, что программу можно загружать в любую область памяти без всяких изменений адресов в программе.
Рассмотрим основные способы формирования адресов операндов в современных ЭВМ и опишем их основные особенности.
Непосредственная адресация. В этом самом простом режиме адресации операнд, подлежащий обработке, размещается непосредственно в самой команде и передается в процессор следом за выборкой кода операции команды. Данный режим адресации применяется тогда, когда операндом является константа, не изменяющаяся во время выполнения программы. Примером применения такого режима адресации может служить загрузка некоторого адреса в регистр процессора.
Абсолютная или прямая адресация. Этот режим адресации также достаточно прост. Часть команды является адресом операнда в памяти. Из-за своей простоты этот режим используется во многих ЭВМ. Этот способ адресации достаточно быстр, так как при поиске адреса не требуется никаких дополнительных вычислений. Однако указание полного прямого адреса операнда в команде требует много бит, особенно в ЭВМ с большим объемом адресного пространства. Кроме этого стоит отметить, что если в командах программы указаны полные адреса ее операндов, программа оказывается “жестко привязанной” к конкретным адресам памяти. Это не всегда оправдано, так как часто желательно иметь возможность размещать программы в произвольных участках памяти достаточного размера, к тому же иногда возникает необходимость переместить программу на другое место в памяти. Поэтому для устранения этих недостатков многие ЭВМ используют короткие разновидности прямой адресации (см. ниже относительную адресацию). Такие методы адресации обеспечивают доступ к ограниченной части адресного пространства.
Регистровая адресация. В данном режиме операнд находится в одном из регистров процессора и в команде просто указывается номер требуемого регистра. Команда с регистровой адресацией будет достаточно короткой. Кроме того, для выборки операндов процессору не требуется достаточно длительная операция обращения к памяти, поскольку регистры встроены в сам процессор. По этим причинам команды с регистровой адресацией являются самыми “быстрыми” командами. Для увеличения скорости работы программ необходимо стремиться к тому, чтобы часто используемые данные по возможности постоянно находились в регистрах центрального процессора.
Регистровая косвенная адресация. В этом режиме адресации регистр или пара регистров процессора содержат адрес операнда, и в команде указывается номер регистра с адресом. Адрес может храниться в специализированном указательном регистре или регистре общего назначения. Этот способ адресации получил очень широкое распространение и по быстродействию приближается к прямой адресации, так как адрес содержится внутри регистра процессора и для его выборки не требуется производить сравнительно длительную операцию обращения к памяти. Загрузка указательных регистров производится либо с использованием непосредственной адресации, либо адрес вычисляется в процессе работы программы, что требуется при просмотре массивов, в процедурах передачи данных и т.д.
Адресация с автоуменьшением или автоувеличением. При адресации с автоувеличением адрес операнда вычисляется практически так же, как и при косвенной регистровой адресации. После выборки операнда, адрес, находящийся в регистре процессора автоматически увеличивается на 1 для указания следующего байта, на 2 — для указания поля из двух байт и т.д., при этом размер операнда определяется кодом операции. Отличие адресации с автоуменьшением состоит в том, что перед выборкой операнда содержимое регистра уменьшается на 1, 2 и т.д. в соответствии с размером операнда. Эти два типа адресации позволяют эффективно обрабатывать массивы однотипных данных.
Примерами такой адресации являются цепочечная адресация в процессоре 8086 или автоинкрементная и автодекрементная адресация в процессорах СМ. По существу разновидностью этого метода адресации является также стековая адресация. В процессорах СМ использование автоинкрементного режима по отношению к программному счетчику (который обладает там теми же свойствами, что и любой регистр общего назначения) позволяет получить абсолютный режим адресации.
Неявная или подразумеваемая адресация. При таком способе адресации в команде явно не указывается адрес одного или нескольких операндов. Операнды в командах с неявной адресацией могут находиться, например, в выделенных для этой команды регистрах процессора, или некоторый выделенный и заранее известный регистр процессора может содержать адрес операнда. Примерами команд с неявной адресацией могут служить многие команды микропроцессоров семейства 8086. Рассмотрим команду организации цикла со счетчиком повторения. В этой команде не указывается явно, какой из регистров содержит счетчик цикла и предполагается, что перед выполнением команды счетчик цикла размещен в регистре — счетчике процессора (регистре CX). Другой пример — команды пересылки блоков данных, которые имеются у многих процессоров (например, REP MOVSB в 8086). Адреса операндов в этой команде явно не указываются и определяются двумя индексными регистрами процессора, куда они должны быть предварительно загружены. При выборке операндов неявно используется адресация с автоувеличением или автоуменьшением.
Индексная адресация удобна для обращения к массивам и таблицам. Для образования исполнительного адреса к адресной
Относительная адресация. Основное назначение относительной адресации — преодолеть недостатки прямой адресации, сохранив при этом ее внешнюю простоту и эффективность. При относительной адресации в команде указывается не полный адрес операнда, а сокращенный адрес, обычно называемый смещением. В процессе выполнения команды полный адрес операнда вычисляется путем суммирования смещения, указанного в команде с некоторой величиной, которая называется базовым адресом. Существует два способа расширения адреса, указанного в короткой форме.
Первый способ называется самоопределяющейся относительной адресацией. В этом случае смещение, указанное в команде, складывается с адресом самой команды (обычно это текущее содержимое программного счетчика). Такой способ широко используется в командах условной передачи управления многих процессоров. Анализ программ показывает, что команды условной передачи управления чаще всего осуществляют переход на небольшое расстояние (до плюс — минус 100 — 200 байт). Поэтому во многих ЭВМ адрес перехода хранится в виде числа со знаком — короткого (8 бит) смещения целевого адреса относительно адреса команды ветвления (программного счетчика). При выполнении команды смещение просто суммируется с программным счетчиком. Применение относительной адресации в данном случае сокращает длину команды и повышает скорость ее выполнения. Другим примером может служить относительная адресация в процессорах СМ. В командах с относительной адресацией содержится смещение, которое при вычислении адреса операнда суммируется с содержимым программного счетчика. Отметим, что при таком способе адресации не нужно явно указывать, откуда брать базовый адрес (в качестве него всегда выступает программный счетчик). Поэтому этот способ адресации иногда называют неявным базированием.
Второй вид относительной адресации называется базовой адресацией. При базовой адресации смещение, указываемое в команде, складывается с базовым адресом, хранящимся в регистре базы процессора (см. рис. 15). Смещение обычно имеет длину меньше, чем длина базового адреса, которая, в свою очередь, должна быть такой, чтобы в качестве базового можно было указать любой из возможных адресов. В качестве регистра базы может использоваться специализированный регистр базы или один из регистров общего назначения. В любом случае одна из команд программы должна явно загрузить в регистр базы значение базового адреса и, кроме того, программист должен тем или иным способом указать, какой из регистров выступает в качестве базового. Поэтому этот способ адресации часто называют адресацией с явным базированием.
Разновидностью базовой адресации является сегментная адресация, применяемая в процессорах семейства 8086. Так как процессор 8086 может обрабатывать числа длиной 16 бит, все его адресные регистры являются 16-ти битными. Это обеспечивает доступ к адресному пространству размером 2 16 = 65536 байт или 64К байт (1К = 1024). Такой блок непосредственно адресуемой памяти называется сегментом. Любой исполнительный адрес формируется в виде суммы базового адреса начала сегмента (он всегда кратен 16) и смещения до нужной ячейки внутри сегмента. Базовый адрес сегмента задается 16-битной величиной, хранимой в сегментном регистре. Физический 20- разрядный адрес памяти (см. рис. 16) получается суммированием содержимого сегментного регистра умноженного на 16 (умножение двоичного числа на 16 эквивалентно сдвигу влево на 4 разряда) и 16-разрядного смещения относительно начала сегмента. Используя 20-разрядные адреса, процессор 8086 может адресовать память объемом 2 20 = 1024К = 1048576 = 1М байт. Сегменты жестко не привязываются к определенным адресам памяти и могут частично или полностью перекрываться. Термин сегментная адресация введен для того, чтобы подчеркнуть, что размер сегментного регистра хранящего базовый адрес сегмента меньше длины физического адреса, в то время как термин базовая адресация обычно подразумевает, что длина базового регистра равна или больше длины физического адреса памяти.
Основными достоинствами относительной адресации и ее разновидностей является, во-первых, то, что длина указываемого в команде адреса меньше длины физического адреса, а это позволяет сократить длину команд, во-вторых, программа с относительной адресацией не зависит от конкретного места ее расположения в памяти. При изменении положения программы в памяти достаточно только правильно настроить регистры, содержащие базовые адреса.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Регистры процессора типы кратко
Регистр процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).
Регистр представляет собой цифровую электронную схему, служащую для временного хранения двоичных чисел. В процессоре имеется значительное количество регистров, большая часть которых используется самим процессором и недоступна программисту. Например, при выборке из памяти очередной команды она помещается в регистр команд. Программист обратиться к этому регистру не может. Имеются так же регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы (например управляющие регистры и теневые регистры дескрипторов сегментов). Этими регистрами пользуются в основном разработчики операционных систем.
Содержание
IP (англ. Instruction Pointer ) — регистр, обозначающий смещение следующей команды относительно кодового сегмента.
IP — 16-битный (младшая часть EIP)
EIP — 32-битный аналог
Сегментные регистры — Регистры указывающие на сегменты.
CS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.
Регистры данных — служат для хранения промежуточных вычислений.
RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15 — 64-битные
EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP — 32-битные (extended AX)
AX, BX, CX, DX — 16-битные
например, AH — high AX — старшая половинка 8 бит
AL — low AX — младшая половинка 8 бит
RAX | RBX | RCX | RDX | ||||||||||||
—— | EAX | —— | EBX | —— | ECX | —— | EDX | ||||||||
—— | —— | AX | —— | —— | BX | —— | —— | CX | —— | —— | DX | ||||
—— | —— | AH | AL | —— | —— | BH | BL | —— | —— | CH | CL | —— | —— | DH | DL |
Регистр флагов EFLAGS — содержит текущее состояние процессора.
Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:
- С последовательным приёмом и выдачей информации — сдвиговые регистры.
- С параллельным приёмом и выдачей информации — параллельные регистры.
Сдвиговые регистры представляют собой последовательно соединённую цепочку триггеров. Основной режим работы — сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.
По назначению регистры различаются на:
- аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
- флаговые — хранят признаки результатов арифметических и логических операций;
- общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
- индексные — хранят индексы исходных и целевых элементов массива;
- указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
- сегментные — хранят адреса и селекторы сегментов памяти;
- управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.
Счётчик команд
IP (англ. Instruction Pointer ) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.
Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.
Регистр IP является 16-разрядным регистром-указателем. Кроме него, в состав регистров этого типа входят SP (англ. Stack Pointer — указатель стека) и BP (англ. Base Pointer — базовый указатель).
Например, CS содержит значение 2CB5[0]H , в регистре IP хранится смещение 123H .
Адрес следующей инструкции, подлежащей исполнению вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:
2CB50H + 123H = 2CC73H
Таким образом, адрес следующей инструкции для исполнения равен 2CC73H .
При выполнении текущей инструкции процессор автоматически изменяет значение в регистре IP, в результате чего регистровая пара CS:IP всегда указывает на следующую подлежащую исполнению инструкцию.
Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP. В данном случае IP является младшей частью этого регистра (первые 16 разрядов). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором (селектор указывает не на сам сегмент в памяти, а на его дескриптор сегмента в таблице дескрипторов).
В 64-разрядных процессорах используется свой регистр-указатель инструкций — RIP.
Младшей частью этого регистра является регистр EIP.
На основе RIP в 64-разрядных процессорах введён новый метод адресации RIP-relative. В остальном работа RIP аналогична работе регистра EIP.
Процессор является основой любого компьютера. Это большая микросхема, содержащая внутри себя сотни тысяч или даже миллионы элементов. Современные процессоры чрезвычайно сложны и могут содержать несколько уровней построения и описания. Так, можно различать внешние команды процессора в том виде, в котором они используются в программах и записываются в оперативной памяти, и внутренний микрокод, применяемый для реализации внешних команд . Процессор может содержать внутри себя устройства, предназначенные для ускорения работы, — конвейер команд, устройство опережающей выборки из памяти, кеш-память и т.п.
Рассмотрим лишь самые общие принципы построения и работы процессора, которые одинаковы как для примитивных, так и для самых современных процессоров.
Любой процессор имеет устройство, выполняющее команды, и собственную внутреннюю память , реализованную внутри микросхемы процессора. Она называется регистрами процессора. Имеется 3 типа регистров:
- общие регистры хранят целые числа или адреса. Размер общего регистра совпадает с размером машинного слова и в 32-разрядной архитектуре равен четырем байтам. Число общих регистров и их назначение зависит от конкретного процессора. В большинстве Ассемблеров к ним можно обращаться по именам R0 , R1 , R2 , . Среди общих регистров имеются регистры специального назначения: указатель стека SP ( Stack Pointer ), счетчик команд PC ( Program Counter ) и др.;
- регистр флагов содержит биты, которые устанавливаются в единицу или в ноль в зависимости от результата выполнения последней команды. Так, бит Z устанавливается в единицу, если результат равен нулю (Zero), бит N — если результат отрицательный (Negative), бит V — если произошло переполнение (oVerflow), бит С — если произошел перенос единицы из старшего или младшего разряда ( Carry ), например, при сложении двух целых чисел или при сдвиге. Значения битов в регистре флагов используются в командах условных переходов;
- плавающие регистры содержат вещественные числа. В простых процессорах аппаратная поддержка арифметики вещественных чисел может отсутствовать. В этом случае плавающих регистров нет, а операции с вещественными числами реализуются программным путем.
Команды, или инструкции, процессора состоят из кода операции и операндов. Команда может вообще не иметь операндов или иметь один, два, три операнда. Команды с числом операндов большим трех встречаются лишь в процессорах специального назначения (служащих, например, для обработки сигналов) и в обычных архитектурах не используются. Чаще всего применяются двухадресные и трехадресные архитектуры: к двухадресным относятся, к примеру, все процессоры серии Intel 80×86 , к трехадресным — серии Motorola 68000. В двухадресной архитектуре команда сложения выглядит следующим образом:
т.е. один из аргументов команды является одновременно и ее результатом. Этот аргумент называется получателем (destination). Аргумент , который не меняется в результате выполнения команды, называется источником (source). Среди программистов нет единого мнения о том, в каком порядке записывать аргументы при использовании Ассемблера, т.е. в символической записи машинных команд. Например, в Ассемблере » masm » фирмы IBM для процессоров Intel 80×86 получатель всегда записывается первым, а источник вторым. Ассемблер » masm » используется в операционных системах MS DOS и Windows . В Ассемблере » as «, который входит в состав компилятора «gcc» и используется в системах типа Unix (Linux и т.п.), получатель всегда является последним аргументом. Та же команда сложения записывается в » as » как
что означает сложить Y и X и результат записать в X .
В трехадресной архитектуре команда сложения имеет 3 операнда:
Получателем в трехадресной архитектуре обычно является третий аргумент , т.е. в данном случае сумма X+Y записывается в Z .
Операндами команды могут быть регистры или элементы памяти. В действительности, конечно, процессор всегда сначала копирует слово из памяти в регистр , который может быть либо явно указан в команде, либо использоваться неявно. Операция всегда выполняется с содержимым регистров. После этого результат может быть записан в память либо оставлен в регистре. Например, при выполнении команды увеличения целого числа на единицу
в случае, когда операнд X является словом оперативной памяти, содержимое слова X сначала неявно копируется во внутренний регистр процессора, затем выполняется его увеличение на единицу, и после этого увеличенное значение записывается обратно в память .
Имеется несколько способов задания операнда, находящегося в оперативной памяти, они называются режимами адресации. Это
- абсолютная адресация — когда в команде указывается константа, равная адресу аргумента ;
- косвенная адресация — когда в команде указывается регистр, содержащий адрес аргумента ;
- относительная адресация — адрес аргумента равен сумме содержимого регистра и константы, задающей смещение;
- индексная адресация с масштабированием — адрес аргумента равен сумме содержимого базового регистра, константы, задающей смещение, а также содержимого индексного регистра, умноженного на масштабирующий множитель. Масштабирующий множитель может принимать значения 1, 2, 4, 8. Этот режим удобен для обращения к элементу массива.
Бывают и другие, более изощренные, режимы адресации, когда, например, адрес аргумента содержится в слове, адрес которого содержится в регистре (так называемая двойная косвенность).
CISC и RISC-процессоры
Существует два подхода к конструированию процессоров. Первый состоит в том, чтобы придумать как можно больше разных команд и предусмотреть как можно больше разных режимов адресации. Процессоры такого типа называются CISC-процессорами, от слов Сomplex Instruction Set Computers. Это, в частности, Intel 80×86 и Motorola 68000. Противоположный подход состоит в том, чтобы реализовать лишь минимальное множество команд и режимов адресации, процессоры такого типа называются RISC-процессорами, от слов Reduced Instruction Set Computers. Примеры RISC-процессоров: DEC Alpha, Power PC, Intel Itanium .
Казалось бы, CISC-процессоры должны иметь преимущество перед RISC-процессорами, но на самом деле все обстоит строго наоборот. Дело в том, что простота набора команд процессора облегчает его конструирование, в результате чего удается достичь следующих целей:
- все команды выполняются исключительно быстро, причем за одинаковое время, т.е. за фиксированное число тактов работы процессора;
- значительно поднимается тактовая частота процессора;
- намного увеличивается количество регистров процессора и объем кеш -памяти;
- удается добиться ортогональности режимов адресации, набора команд и набора регистров. Это означает, что нет каких-либо выделенных регистров или режимов адресации: в любых (или почти любых) командах можно использовать произвольные регистры и режимы адресации независимо друг от друга. Следует отметить, что к памяти могут обращаться лишь команды загрузки слова из памяти в регистр и записи из регистра в память, а все арифметические команды работают только с регистрами;
- простота команд позволяет эффективно организовать их выполнение в конвейере ( pipeline ), что значительно ускоряет работу программы.
Пункты 3 и 4 по достоинству оценят те, кому пришлось программировать на Ассемблере Intel 80×86 , имеющем ряд ограничений на использование регистров и режимы адресации, к тому же и регистров в нем очень мало.
RISC-архитектуры обладают неоспоримыми преимуществами по сравнению с CISC-архитектурами — быстродействием, низкой стоимостью, удобством программирования и т.д. — и практически не имеют недостатков. Существование CISC-процессоров в большинстве случаев объясняется лишь традицией и требованием совместимости со старым программным обеспечением. Впрочем, существует и третий вариант — процессоры, которые по сути являются RISC-процессорами, но эмулируют внешнюю систему команд устаревших процессоров, например, современные процессоры Intel Pentium.
Алгоритм работы компьютера
Среди всех регистров процессора в любой архитектуре всегда имеется два выделенных регистра: это регистр PC, что означает Program Counter , по-русски его называют счетчиком команд, и регистр SP — Stack Pointer , т.е. указатель стека. Иногда регистр PC обозначают как IP, что означает Instruction Pointer , указатель инструкции. (Команды процессора часто называют инструкциями.)
В фон-Неймановской архитектуре , по которой построены все современные компьютеры, программа, состоящая из машинных команд, содержится в оперативной памяти. Регистр PC всегда содержит адрес команды, которая будет выполняться на следующем шаге. Алгоритм работы процессора выглядит следующим образом:
В простейшем случае, когда выполняется линейный участок программы, команды выбираются из памяти и выполняются последовательно, а содержимое регистра PC монотонно возрастает. Выполнение команды, однако, может приводить к изменению регистра PC . Таким образом организуются безусловные и условные переходы в программе, нарушающие последовательный порядок выполнения команд. С помощью команд условных и безусловных переходов реализуются конструкции ветвления и цикла. Команда перехода представляет собой либо прибавление константы к содержимому PC (константа может быть положительной или отрицательной), либо загрузку в PC адреса элемента памяти со всеми возможными режимами адресации. Первый способ используется для реализации переходов внутри подпрограммы (внутри функции в терминах языка Си), второй — для перехода к подпрограмме. Впрочем, гораздо чаще в последнем случае используется команда call вызова подпрограммы, которая дополнительно запоминает точку возврата в регистре или в аппаратном стеке.
Прерывания – это готовые процедуры, которые компьютер вызывает для выполнения определённой задачи.
Возможности процессора по переключению своей работы с выполнения одной задачи на другую при наступлении некоторого события. Под прерыванием понимают возникновение события, требующего реакции процессора.
Обработка прерывания – заключается в том, что приостанавливается выполнение текущей задачи (программы) и процессор приступает к выполнению другой задачи, по завершении которой продолжает выполнение исходной. Очевидно, что разным событиям (прерываниям) соответствуют разные программы обработки прерываний.
Прерывания делятся на следующие категории:
Внешние аппаратные прерывания, возникающие вне процессора и поступающие от различных устройств и блоков ЭВМ (нажатие клавиши, нарушения в работе оборудования и т.п.);
Внутренние аппаратные прерывания, вырабатываемые самим процессором (деление на ноль, переполнение разрядной сетки и т.п.)
Программные прерывания, инициируемые выполняемой программой. Эти прерывания задаются программистом в программе путем записи специальных команд.
Прерывания различаются по степени важности (приоритетам или уровням). Одновременное поступление в процессор прерываний одного уровня не допускается. Поэтому, максимальное число последовательно поступающих прерываний, которое может отложить, а затем обработать процессор – число уровней прерываний.
Процессор состоит из ячеек, в которых обрабатываются данные. Ячейки процессора называют регистрами.
Регистром называется функциональный узел, осуществляющий прием, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приема и выдачи информации различают 2 типа регистров:
§ с последовательным приемом и выдачей информации— сдвиговые регистры.
§ с параллельным приемом и выдачей информации— параллельные регистры.
Регистр процессора – блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самим процессором и большой частью недоступен программисту: например, при выборке из памяти очередной команды она помещается врегистр команд, к которому программист обратиться не может.
§ Имеются также регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы, например, управляющие регистры и теневые регистры дескрипторов сегментов. Этими регистрами пользуются в основном разработчики операционных систем.
Регистры могут быть восьмиразрядные (в такой регистр помещаются 8 бит, т.е. 1 байт), шестнадцатиразрядные (в такой регистр помещается два байта или говорят машинное слово), 32-разрядные (помещается двойное слово).
Каждый процессор имеют свою систему команд. У каждой команды есть свой код, который называют код операции.
Машинные команды, которые обрабатывает процессор, состоят из двух основных частей:
Код операции показывает, какую именно операцию из системы команд процессора надо выполнить, а в адресной части содержится адрес данных, над которыми будет выполняться эта операция.
К процессору подходят магистрали передачи сигналов:
*адресная шина – соединяет процессор с оперативной памятью (устройство управления);
*шина данных – по ней в регистры процессора передается содержимое ячеек памяти и отправляются результаты обработки назад в оперативную память;
*шина управления – осуществляет передачу управляющих импульсы (устройство управления).
Процессор содержиттактовый генератор – устройство, которое синхронизирует работу всех устройств и определяет скорость работы процессора.
Процессор содержит двенадцать 16-разрядных программно-адресуемых регистров, которые принято объединять в три группы: регистры данных, регистры-указатели и сегментные регистры. Кроме того, в состав процессора входят счетчик команд и регистр флагов (рис.1)
В группу регистров данных включаются четыре регистра АХ, ВХ, СХ и DX. Программист может использовать их по своему усмотрению для временного хранения любых объектов (данных или адресов) и выполнения над ними требуемых операций. При этом регистры допускают независимое обращение к старшим (АН, ВН, СН и DH) и младшим (AL, BL, CL и DL) половинам.
Классификация регистров процессора
Разные регистры процессора имеют разное назначение:
регистры данных– для сохранения данных и результатов.
счетчик команд– для хранения адреса команды.
регистр команд– для хранения команды.
адресный регистр– для хранения адреса данных.
Существуют специальные регистры для самопроверок процессора:
сегментные регистры – регистры, указывающие на сегменты.
регистр флагов FLAGS (16 бит) / EFLAGS (32 бита) / RFLAGS (64 бита) – содержит текущее состояние процессора.
Сдвиговые регистры представляют собой последовательно соединенную цепочку триггеров. Основной режим работы сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.
По назначению регистры различаются на:
Аккумулятор – используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
Флаговые – хранят признаки результатов арифметических и логических операций, содержат текущее состояние процессора;
Общего назначения – хранят операнды арифметических и логических выражений, индексы и адреса;
Индексные – хранят индексы исходных и целевых элементов массива;
Указательные – хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
Сегментные – хранят адреса и селекторы сегментов памяти;
Управляющие – хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.
АХ состоит из АН (старшая часть) и AL (младшая часть).
· регистр АХ служит для временного хранения данных (регистр аккумулятор), часто используется при выполнении операций сложения, вычитания, сравнения и других арифметических и логических операций;
· регистр ВХ служит для хранения адреса некоторой области памяти (базовый регистр), а также используется как вычислительный регистр;
· регистр СХ иногда используется для временного хранения данных, но в основном служит счетчиком, в нем хранится число повторений одной команды или фрагмента программы;
· регистр DX используется главным образом для временного хранения данных, часто служит средством пересылки данных между разными программными системами, а также используется в качестве расширителя аккумулятора для вычислений повышенной точности и при умножении и делении.
Регистры сегментов – это 16-разрядные регистры, которые позволяют организовать память в виде совокупности четырех различных сегментов.
· CS – регистр программного сегмента (сегмента кода) определяет местоположение части памяти, содержащей программу, то есть выполняемые процессором команды;
· DS – регистр информационного сегмента (сегмента данных) идентифицирует часть памяти, предназначенной для хранения данных;
· SS – регистр стекового сегмента (сегмента стека) определяет часть памяти, используемой как системный стек;
· ES – регистр расширенного сегмента (дополнительного сегмента) указывает дополнительную область памяти, используемую для хранения данных
Регистр процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).
Регистр представляет собой цифровую электронную схему, служащую для временного хранения двоичных чисел. В процессоре имеется значительное количество регистров, большая часть которых используется самим процессором и недоступна программисту. Например, при выборке из памяти очередной команды она помещается в регистр команд. Программист обратиться к этому регистру не может. Имеются так же регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы (например управляющие регистры и теневые регистры дескрипторов сегментов). Этими регистрами пользуются в основном разработчики операционных систем.
Основные регистры процессора, совместимого с Intel 386
IP (англ. Instruction Pointer ) — регистр, обозначающий смещение следующей команды относительно кодового сегмента.
IP — 16-битный (младшая часть EIP)
EIP — 32-битный аналог
Сегментные регистры — Регистры указывающие на сегменты.
CS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.
Регистры данных — служат для хранения промежуточных вычислений.
RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15 — 64-битные
EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP — 32-битные (extended AX)
AX, BX, CX, DX — 16-битные
например, AH — high AX — старшая половинка 8 бит
AL — low AX — младшая половинка 8 бит
RAX | RBX | RCX | RDX | ||||||||||||
—— | EAX | —— | EBX | —— | ECX | —— | EDX | ||||||||
—— | —— | AX | —— | —— | BX | —— | —— | CX | —— | —— | DX | ||||
—— | —— | AH | AL | —— | —— | BH | BL | —— | —— | CH | CL | —— | —— | DH | DL |
Регистр флагов EFLAGS — содержит текущее состояние процессора.
Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:
- С последовательным приёмом и выдачей информации — сдвиговые регистры.
- С параллельным приёмом и выдачей информации — параллельные регистры.
Сдвиговые регистры представляют собой последовательно соединённую цепочку триггеров. Основной режим работы — сдвиг разрядов кода от одного триггера к другому на каждый импульс тактового сигнала.
По назначение регистры различаются на:
- аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
- флаговые — хранят признаки результатов арифметических и логических операций;
- общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
- индексные — хранят индексы исходных и целевых элементов массива;
- указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стэка);
- сегментные — хранят адреса и селекторы сегментов памяти;
- управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.
См. также
Примечания
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «Регистры процессора» в других словарях:
Архитектура процессора — количественная составляющая компонентов микроархитектуры вычислительной машины (процессора компьютера) (например, регистр флагов или регистры процессора), рассматриваемая IT специалистами в аспекте прикладной деятельности. С точки зрения… … Википедия
Кэш процессора — Кэш микропроцессора кэш (сверхоперативная память), используемый микропроцессором компьютера для уменьшения среднего времени доступа к компьютерной памяти. Является одним из верхних уровней иерархии памяти[1] … Википедия
Кэш центрального процессора — Кэш (англ. cache[1], произносится kæʃ кЭш) промежуточный буфер с быстрым доступом, содержащий копию той информации, которая хранится в памяти с менее быстрым доступом, но с наибольшей вероятностью может быть оттуда запрошена. Доступ к данным в… … Википедия
Моделезависимые регистры — (Model Specific Registers, MSR) cпециальные регистры процессоров архитектуры x86, наличие и назначение которых варьируется от модели к модели процессора. Программно доступны при помощи команд RDMSR и WRMSR. Адресуются 32 битным индексом,… … Википедия
Регистр (цифровая техника) — У этого термина существуют и другие значения, см. Регистр. 4 х разрядный сдвиговый регистр, преобразователь последовательного кода в параллельный и обратно Регистр последовательное или параллельное … Википедия
РОН (электроника) — Регистр процессора сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора … … Википедия
Регистр (вычислительная техника) — Регистр процессора сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора … … Википедия
Motorola 6809 — > Центральный процессор Процессор Motorola 6809E с рабочей частотой 1 МГц, выпущен в 1983 году … Википедия
Иерархия памяти — Пирамида иерархии памяти. По левой грани обозначены размер и емкость, по центру требование постоянного электропитания и длительность хранения, справа пример памяти данного уровня, скорос … Википедия