stringtranslate.com

Регистр процессора

Описание уровня передачи регистров (RTL) 8-битного регистра с подробной реализацией, показывающее, как можно хранить 8 бит данных.

Регистр процессора — это быстро доступное место, доступное процессору компьютера . [1] Регистры обычно состоят из небольшого объема быстрой памяти , хотя некоторые регистры имеют определенные аппаратные функции и могут быть доступны только для чтения или только для записи. В компьютерной архитектуре регистры обычно адресуются с помощью механизмов, отличных от основной памяти , но в некоторых случаях им может быть назначен адрес памяти, например DEC PDP-10 , ICT 1900 . [2]

Почти все компьютеры, независимо от архитектуры загрузки/сохранения или нет, загружают элементы данных из большей памяти в регистры, где они используются для арифметических операций , побитовых операций и других операций, а также управляются или проверяются машинными инструкциями . Манипулируемые элементы затем часто сохраняются обратно в основную память либо с помощью той же инструкции, либо с помощью следующей. Современные процессоры используют в качестве основной памяти либо статическое , либо динамическое ОЗУ , причем доступ к последней обычно осуществляется через один или несколько уровней кэша .

Регистры процессора обычно находятся на вершине иерархии памяти и обеспечивают самый быстрый способ доступа к данным. Этот термин обычно относится только к группе регистров, которые непосредственно закодированы как часть инструкции, как определено набором команд . Однако современные высокопроизводительные процессоры часто имеют дубликаты этих «архитектурных регистров» для повышения производительности за счет переименования регистров , что позволяет выполнять параллельное и спекулятивное выполнение . Современный дизайн x86 приобрел эти методы примерно в 1995 году с выпусками Pentium Pro , Cyrix 6x86 , Nx586 и AMD K5 .

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

Размер

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

Типы

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

Аппаратные регистры аналогичны, но находятся вне процессоров.

В некоторых архитектурах (таких как SPARC и MIPS ) первый или последний регистр в файле целочисленных регистров является псевдорегистром, поскольку он запрограммирован так, чтобы всегда возвращать ноль при чтении (в основном для упрощения режимов индексации), и его нельзя перезаписать. . В Alpha это также делается для файла регистров с плавающей запятой. В результате этого в файлах регистров обычно указывается, что они содержат на один регистр больше, чем их реальное количество; например, котируются 32 регистра, если только 31 из них соответствует приведенному выше определению регистра.

Примеры

В следующей таблице показано количество регистров в нескольких основных архитектурах ЦП. Обратите внимание, что в x86 -совместимых процессорах указатель стека ( ESP) считается целочисленным регистром, хотя существует ограниченное количество инструкций, которые можно использовать для работы с его содержимым. Подобные предостережения применимы к большинству архитектур.

Хотя все перечисленные ниже архитектуры различны, почти все они имеют базовую структуру, известную как архитектура фон Неймана , впервые предложенную венгерско-американским математиком Джоном фон Нейманом . Примечательно также, что количество регистров на графических процессорах намного больше, чем на центральных процессорах.

Применение

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

Смотрите также

Рекомендации

  1. ^ «Что такое регистр процессора?». Образовательные: интерактивные курсы для разработчиков программного обеспечения . Проверено 12 августа 2022 г.
  2. ^ «Обзор методов проектирования и управления файлом регистров ЦП» .
  3. ^ «Справочное руководство по аппаратному обеспечению компьютерной системы Cray-1» (PDF) . Крейские исследования . Ноябрь 1977 г. Архивировано (PDF) из оригинала 7 ноября 2021 г. Проверено 23 декабря 2022 г.
  4. ^ «Руководство пользователя микрокомпьютера MCS-4» (PDF) . Интел. Февраль 1973 года.
  5. ^ «Руководство пользователя 8-битного параллельного центрального процессора 8008» (PDF) . Интел. Ноябрь 1973 года . Проверено 23 января 2014 г.
  6. ^ «Руководство пользователя микрокомпьютерных систем Intel 8080» (PDF) . Интел. Сентябрь 1975 года . Проверено 23 января 2014 г.
  7. ^ «Справочное руководство программиста 80286 и 80287» (PDF) . Интел. 1987.
  8. ^ ab «Руководства для разработчиков программного обеспечения для архитектур Intel 64 и IA-32» . Интел. 4 декабря 2019 г.
  9. ^ «Руководство программиста по архитектуре AMD64, том 1: Прикладное программирование» (PDF) . АМД . Октябрь 2013.
  10. ^ «Расширения набора команд архитектуры Intel и справочник по программированию будущих функций» (PDF) . Интел . Январь 2018.
  11. ^ F8 Руководство по программированию (PDF) . Подразделение микрокомпьютеров Fairchild MOS. 1977.
  12. ^ «Справочное руководство по процессору Nios II Classic» (PDF) . Альтера . 2 апреля 2015 г.
  13. ^ «Справочное руководство по процессорам Nios II Gen2» (PDF) . Альтера. 2 апреля 2015 г.
  14. ^ «Справочное руководство по программированию M6800» (PDF) . Моторола . Ноябрь 1976 года . Проверено 18 мая 2015 г.
  15. ^ «Справочное руководство программиста семейства Motorola M68000» (PDF) . Моторола. 1992 год . Проверено 13 июня 2015 г.
  16. ^ «Руководство по программированию на CUDA C» . Нвидиа. 2019 . Проверено 9 января 2020 г.
  17. ^ Цзя, Чжэ; Маджиони, Марко; Штайгер, Бенджамин; Скарпацца, Даниэле П. (2018). «Анализ архитектуры графического процессора NVIDIA Volta с помощью микробенчмаркинга». arXiv : 1804.06826 [cs.DC].
  18. ^ «IBM Enterprise Systems Architecture/370 и System/370 — векторные операции» (PDF) . ИБМ. SA22-7125-3 . Проверено 11 мая 2020 г.
  19. ^ «Микропроцессор IBM S/390 G5» (PDF) .
  20. ^ "Домашняя страница MMIX" .
  21. ^ «Справочник данных серии 32000» (PDF) . Национальный полупроводник .
  22. ^ «Архитектура набора команд синергетического процессорного блока, версия 1.2» (PDF) . ИБМ. 27 января 2007 г.
  23. ^ «Изучение сборки 65816» . Вики-сайт разработки Super Famicom . Проверено 14 ноября 2019 г.
  24. ^ «Стандарт вызова процедур для архитектуры ARM» (PDF) . АРМ Холдингс . 30 ноября 2013 года . Проверено 27 мая 2013 г.
  25. ^ «2.6.2. Набор регистров состояния большого пальца» . Техническое справочное руководство ARM7TDMI . АРМ Холдингс .
  26. ^ «Стандарт вызова процедур для 64-битной архитектуры ARM» (PDF) . АРМ Холдингс. 22 мая 2013 года . Проверено 27 мая 2013 г.
  27. ^ «Справочник по архитектуре Epiphany» (PDF) .