Регистры общего назначения

Перед разработчиками архитектуры процессора встает несколько вопросов, связанных с организацией набора регистров:

1. Универсальные регистры или регистры с частичной специализацией на выполнение определенного круга функций?

2. Универсальные регистры для хранения данных любых форматов или специализированные регистры в соответствии с определенными типами данных?

3. Количество регистров.

4. Разрядность регистров и размещение в регистрах данных, разрядность которых превышает разрядность регистров.

Универсальные регистры или регистры с частичной специализацией на выполнение определенного круга функций?

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

В архитектурах, которые были разработаны еще в 70-х годах 20-го столетия (например, в архитектуре фирмы Intel IA-32), часть регистров общего назначения являлись истинно универсальными, а часть специализированными.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: