Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции АКС / лекции АКС / Лекция 9. СТРУКТУРА ПРОЦЕССОРА.doc
Скачиваний:
186
Добавлен:
26.02.2016
Размер:
4.51 Mб
Скачать

Программно доступные регистры

Программно доступные регистры, в свою очередь, можно разделить на че­тыре категории:

• регистры общего назначения (или универсальные регистры);

• регистры данных;

• регистры адреса;

• регистры кодов условий.

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

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

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

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

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

Перед конструктором процессора встает несколько вопросов, связанных с организацией регистров. Первый из них — следует ли отдать предпочтение универсальным программно доступным регистрам или специализировать их на выполнение определенного круга функций. Мы уже касались этого вопро­са в предыдущей главе, поскольку он связан и с проблемой проектирования системы команд. Если в процессоре существуют специализированные регист­ры, то их применение специфицируется неявно через код операции, который требует участия в определенной операции именно такого-то регистра и ника­кого другого. Явная спецификация операнда при такой организации может только уточнить, какой именно из группы регистров одинакового назначения будет использоваться при выполнении данной команды (если специализиро­ванные регистры объединены в группы по назначению). В результате сохра­няется пространство в коде команды для другой информации. С другой сто­роны, любая специализация ограничивает программиста в использовании ре­сурсов процессора. Поэтому не существует однозначного решения этой проблемы, пригодного на все случаи жизни, но в последних разработках все четче прослеживается тенденция к более узкой специализации регистров.

Другой вопрос, встающий перед конструктором процессора, — сколько регистров включить в его состав. Опять же с ответом на него связан и фор­мат команд — чем больше регистров, тем больший размер поля специфика­ции регистров в команде. Принято считать, что оптимальное количество про­граммно доступных регистров находится в диапазоне от 8 до 32 . Чем меньше регистров в процессоре, тем чаще придется обра­щаться к оперативной памяти, а значит медленнее будет выполняться про­грамма. Тем не менее увеличение количества регистров свыше определенного порога не приводит к дальнейшему сокращению частоты обращения к памя­ти, а значит затраты на их включение в процессор не окупаются . Но в последних разработках процессоров с RISC-архитектурой конструкторы стали применять новый подход, который влечет за собой по­вышение эффективности работы процессора при включении в его состав со­тен регистров.

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

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

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

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