русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Регистры процессора

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

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

Регистры управления и регистры состояния. Используются в процессоре для контроля над выполняемыми операциями; с их помощью привилегированные программы операционной системы могут контролировать ход выполнения других программ.
Для разделения регистров на эти две категории не существует определенного признака. Например, на некоторых машинах оператор имеет возможность следить за состоянием программного счетчика, а на других — нет. Однако такое разделение удобно при дальнейшем рассмотрении.

 

 

Регистры процессора, доступные пользователю

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

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

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

Сегментный регистр. При сегментной адресации память разделяется на блоки (сегменты), состоящие из различного количества машинных слов. Адрес ячейки памяти складывается из адреса сегмента и смещения относительно начала сегмента. Имея представление о таком режиме адресации, легче будет усвоить материал, изложенный в главе 7, "Управление памятью", в которой обсуждаются методы управления памятью. При этом режиме адресации базовый адрес сегмента (его начало) хранится в одном из регистров. Таких регистров может быть несколько; например, один — для операционной системы (т.е. использующийся при выполнении процессором кода операционной системы), другие — для исполняющихся в данный момент приложений.

Регистр стека. При стековой адресации1 выделяется специальный регистр, в котором размещен указатель на вершину стека. Этот режим адресации позволяет использовать некоторые команды, в которых отсутствует поле адреса, например push и pop.
В некоторых машинах вызов процедуры или подпрограммы приводит к автоматическому сохранению содержимого всех доступных пользователю регистров, чтобы по возвращении их можно было восстановить. Процедура сохранения и восстановления, являющаяся составной частью команды вызова и возврата, выполняется процессором. Такой подход позволяет процедурам использовать регистры независимо друг от друга.

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

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

Таким образом, в зависимости от типа машины функция сохранения и восстановления может выполняться либо аппаратно, либо программно.

 

Управляющие регистры процессора и регистры состояния

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

Конечно, у разных типов машин организация регистров отличается; для их классификации также используется различная терминология. Здесь приводится довольно полный список типов регистров и дается их краткое описание. Кроме ранее упомянутых регистров, MAR, MBR, I/OAR и I/OBR, важными для выполнения команд являются следующие.

Программный счетчик (program counter — PC). Содержит адрес команды, которая должна быть выбрана из памяти.

Регистр команд (instruction register — IR). Содержит последнюю выбранную из памяти команду.

В состав всех процессоров входит также регистр (или набор регистров), известный под названием регистра слова состояния программы (program status word — PSW). В нем, как правило, содержатся коды условий и другая информация о состоянии, например бит разрешения/запрещения прерываний или бит режима системный/пользовательский.

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

В машинах, в которых используются различные виды прерываний, может быть предусмотрено несколько регистров прерываний с указателями на каждую программу обработки прерываний. Если при реализации некоторых функций (например, вызова процедуры) используется стек, процессор должен иметь регистр — указатель стека. Для аппаратного обеспечения управления памятью (см. главу 7, "Управление памятью") нужны свои регистры. И, наконец, регистры часто используются при управлении операциями ввода-вывода.

На устройство и организацию управляющих регистров и регистров состояния влияют несколько факторов. Одним из них является поддержка операционной системы. Различные виды управляющей информации используются операционной системой по-разному. Если разработчик процессора имеет ясное представление об операционной системе, которая будет работать с этим процессором, он сможет так спланировать организацию регистров, чтобы обеспечить аппаратную поддержку ряда возможностей, таких, как защита памяти или переключение пользовательских программ.

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

Просмотров:

Вернуться в оглавление:Операционные системы




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.