Регистры
Важно еще раз отметить, что далеко не все имеющиеся регистры непосредственно доступны программе. Так, в системе команд х86 предусмотрено всего восемь регистров общего назначения, но современные суперскалярные реализации этой архитектуры (Pentium II, Athlon и т. д.) имеют более сотни физических регистров и несколько арифметико-логических устройств. Логика предварительной выборки дешифрует несколько команд и назначает исполнение этих команд на свободные АЛУ, по мере их поступления, с использованием свободных регистров, не нарушая связи по данным между последовательными командами.
Рис. 6.2. Регистры общего назначения в системе команд х86
Количество регистров и их устройство в различных процессорах различны. В некоторых из них, например, в процессоре семейства машин PDP, все регистры абсолютно равноправны. В других, наоборот, каждый регистр обладает определенными уникальными свойствами, что не позволяет использовать вместо него другой. К указанному типу относятся все процессоры семейства Intel.
При наличии большого количества регистров существует два подхода к их выбору:
1. каждый код операции работает только со своим регистром.
2. ортогональная система команд.Все команды могут работать с любыми регистрами. Номер регистра при этом кодируется специальным битовым полем в коде команды.
При всех недостатках первого подхода, ортогональная система команд создает проблему: увеличение количества регистров оказывается невозможным, так как требует расширения битового поля номера регистра, а изменение размера битовых полей команд - это нарушение бинарной совместимости.
предыдущаяследующая