Регистры процессора: быстродействующая память для обработки данных
Processor register
Регистры процессора: быстрое хранилище данных для операций. Узнайте о назначении, архитектуре и роли регистров в работе компьютера и обработке информации.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Быстродоступная рабочая память, доступная как часть цифрового процессора.
Quickly accessible working storage available as part of a digital processor
Регистр процессора – это быстродоступное место хранения, доступное процессору компьютера. Регистры обычно состоят из небольшого объема быстрой памяти, хотя некоторые регистры имеют специализированные аппаратные функции и могут быть только для чтения или только для записи. В компьютерной архитектуре регистры, как правило, адресуются механизмами, отличными от основной памяти, но в некоторых случаях им может быть назначен адрес памяти, например, в DEC PDP 10 и ICT 1900. Почти все компьютеры, независимо от использования архитектуры загрузки/хранения, загружают элементы данных из большей памяти в регистры, где они используются для арифметических операций, побитовых операций и других операций, а также подвергаются манипуляциям или тестируются машинным кодом. Затем измененные элементы часто сохраняются обратно в основную память либо той же инструкцией, либо последующей. Современные процессоры используют статическую или динамическую оперативную память в качестве основной памяти, к которой обычно обращаются через один или несколько уровней кэша. Регистры процессора обычно находятся на вершине иерархии памяти и обеспечивают самый быстрый способ доступа к данным. Термин обычно относится только к группе регистров, которые непосредственно кодируются как часть инструкции, как определено набором инструкций. Однако современные высокопроизводительные процессоры часто имеют дубликаты этих "архитектурных регистров" для повышения производительности за счет переименования регистров, что позволяет выполнять параллельное и спекулятивное выполнение. Архитектура x86 начала использовать эти методы примерно в 1995 году с выпуском процессоров Pentium Pro, Cyrix 6x86, Nx586 и AMD K5. Когда компьютерная программа многократно обращается к одним и тем же данным, это называется локальностью ссылок. Хранение часто используемых значений в регистрах может быть критически важным для производительности программы. Выделение регистров выполняется либо компилятором на этапе генерации кода, либо вручную программистом на языке ассемблера.
A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read only or write only. In computer architecture, registers are typically addressed by mechanisms other than main memory, but may in some cases be assigned a memory address e. g. DEC PDP 10, ICT 1900. Almost all computers, whether load/store architecture or not, load items of data from a larger memory into registers where they are used for arithmetic operations, bitwise operations, and other operations, and are manipulated or tested by machine instructions. Manipulated items are then often stored back to main memory, either by the same instruction or by a subsequent one. Modern processors use either static or dynamic RAM as main memory, with the latter usually accessed via one or more cache levels. Processor registers are normally at the top of the memory hierarchy, and provide the fastest way to access data. The term normally refers only to the group of registers that are directly encoded as part of an instruction, as defined by the instruction set. However, modern high performance CPUs often have duplicates of these "architectural registers" in order to improve performance via register renaming, allowing parallel and speculative execution. Modern x86 design acquired these techniques around 1995 with the releases of Pentium Pro, Cyrix 6x86, Nx586, and AMD K5. When a computer program accesses the same data repeatedly, this is called locality of reference. Holding frequently used values in registers can be critical to a program's performance. Register allocation is performed either by a compiler in the code generation phase, or manually by an assembly language programmer.
Размер
Регистры обычно измеряются количеством битов, которые они могут хранить, например, "8-битный регистр", "32-битный регистр", "64-битный регистр" или даже больше. В некоторых наборах команд регистры могут работать в различных режимах, разделяя свою память на меньшие части (например, 32 бита на четыре 8-битных), в которые можно одновременно загружать и обрабатывать несколько элементов данных (вектор или одномерный массив данных). Обычно это реализуется путем добавления дополнительных регистров, которые отображают свою память в больший регистр. Процессоры, способные выполнять отдельные инструкции над несколькими элементами данных, называются векторными процессорами.
Registers are normally measured by the number of bits they can hold, for example, an "8 bit register", "32 bit register", "64 bit register", or even more. In some instruction sets, the registers can operate in various modes, breaking down their storage memory into smaller parts (32 bit into four 8 bit ones, for instance) to which multiple data (vector, or one dimensional array of data) can be loaded and operated upon at the same time. Typically it is implemented by adding extra registers that map their memory into a larger register. Processors that have the ability to execute single instructions on multiple data are called vector processors.
Использование
Количество регистров, доступных на процессоре, и операции, которые можно выполнять с их использованием, существенно влияют на эффективность кода, генерируемого оптимизирующими компиляторами. Число Стралера дерева выражений определяет минимальное количество регистров, необходимое для вычисления этого дерева выражений.
The number of registers available on a processor and the operations that can be performed using those registers has a significant impact on the efficiency of code generated by optimizing compilers. The Strahler number of an expression tree gives the minimum number of registers required to evaluate that expression tree.