Введение

Быстродоступная рабочая память, доступная как часть цифрового процессора.

Регистр процессора – это быстродоступное место хранения, доступное процессору компьютера. Регистры обычно состоят из небольшого объема быстрой памяти, хотя некоторые регистры имеют специализированные аппаратные функции и могут быть только для чтения или только для записи. В компьютерной архитектуре регистры, как правило, адресуются механизмами, отличными от основной памяти, но в некоторых случаях им может быть назначен адрес памяти, например, в DEC PDP 10 и ICT 1900. Почти все компьютеры, независимо от использования архитектуры загрузки/хранения, загружают элементы данных из большей памяти в регистры, где они используются для арифметических операций, побитовых операций и других операций, а также подвергаются манипуляциям или тестируются машинным кодом. Затем измененные элементы часто сохраняются обратно в основную память либо той же инструкцией, либо последующей. Современные процессоры используют статическую или динамическую оперативную память в качестве основной памяти, к которой обычно обращаются через один или несколько уровней кэша. Регистры процессора обычно находятся на вершине иерархии памяти и обеспечивают самый быстрый способ доступа к данным. Термин обычно относится только к группе регистров, которые непосредственно кодируются как часть инструкции, как определено набором инструкций. Однако современные высокопроизводительные процессоры часто имеют дубликаты этих "архитектурных регистров" для повышения производительности за счет переименования регистров, что позволяет выполнять параллельное и спекулятивное выполнение. Архитектура x86 начала использовать эти методы примерно в 1995 году с выпуском процессоров Pentium Pro, Cyrix 6x86, Nx586 и AMD K5. Когда компьютерная программа многократно обращается к одним и тем же данным, это называется локальностью ссылок. Хранение часто используемых значений в регистрах может быть критически важным для производительности программы. Выделение регистров выполняется либо компилятором на этапе генерации кода, либо вручную программистом на языке ассемблера.

Размер

Регистры обычно измеряются количеством битов, которые они могут хранить, например, "8-битный регистр", "32-битный регистр", "64-битный регистр" или даже больше. В некоторых наборах команд регистры могут работать в различных режимах, разделяя свою память на меньшие части (например, 32 бита на четыре 8-битных), в которые можно одновременно загружать и обрабатывать несколько элементов данных (вектор или одномерный массив данных). Обычно это реализуется путем добавления дополнительных регистров, которые отображают свою память в больший регистр. Процессоры, способные выполнять отдельные инструкции над несколькими элементами данных, называются векторными процессорами.

Использование

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