Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

Размер [ править ]

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

Типы [ править ]

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

  • Доступные пользователю регистры могут быть прочитаны или записаны машинными инструкциями. Чаще всего доступные пользователю регистры делятся на регистры данных и регистры адреса.
    • Данные зарегистрировать ы может содержатьчисловые значения данныхтакие какцелое число, а в некоторых архитектурах, значенияплавающей точкой, а такжесимволы, небольшиебитовые массивыи другие данные. В некоторых старых и младших процессорах специальный регистр данных, известный какаккумулятор, неявно используется для многих операций.
    • Адресного регистр сек владенияадреси используются командамикоторые косвенно доступосновной памяти.
      • Некоторые процессоры содержат регистры, которые могут использоваться только для хранения адреса или только для хранения числовых значений (в некоторых случаях используются в качестве индексного регистра , значение которого добавляется как смещение от некоторого адреса); другие позволяют регистрам хранить любой вид количества. Существует большое количество возможных режимов адресации , используемых для определения эффективного адреса операнда.
      • Указатель стека используется для управления стека во время выполнения . Редко другие стеки данных адресуются с помощью специальных адресных регистров, см. Стековую машину .
    • Регистры общего назначения ( GPR ) могут хранить как данные, так и адреса, т. Е. Они представляют собой комбинированные регистры данных / адресов; в некоторых архитектурах регистрового файл является унифицированным такчто GPRs может хранить числа с плавающей точкой , а также.
    • Регистры состояния содержатзначения истинности, которыечасто используются для определения того, следует ли выполнять какую-либо инструкцию.
    • Регистры с плавающей запятой (FPR) хранятчисласплавающей запятойво многих архитектурах.
    • Регистры констант содержат доступные только для чтения значения, такие как ноль, единица или числопи.
    • Векторные регистры содержат данные длявекторной обработки,выполняемойинструкциямиSIMD(одна инструкция, несколько данных).
    • Специальные регистры ( SPR ) хранят состояние программы; они обычно включают счетчик программ , также называемый указателем команд, и регистр состояния ; счетчик программ и регистр состояния могут быть объединены врегистр слова состояния программы (PSW). Вышеупомянутый указатель стека иногда также включается в эту группу. Встроенные микропроцессоры также могут иметь регистры, соответствующие специализированным аппаратным элементам.
    • В некоторых архитектурах регистры, зависящие от модели (также называемые машинными регистрами ), хранят данные и настройки, относящиеся к самому процессору. Поскольку их значения связаны с конструкцией конкретного процессора, нельзя ожидать, что они останутся стандартными между поколениями процессоров.
    • Регистры диапазона типов памяти (MTRRs)
  • Внутренние регистры - регистры, недоступные для инструкций, используемые внутри для операций процессора.
    • Регистр инструкций , содержащий инструкцию, которая выполняется в данный момент.
    • Регистры, связанные с извлечением информации из ОЗУ , набор регистров хранения, расположенных на отдельных микросхемах от ЦП:
      • Регистр буфера памяти (MBR), также известный какрегистр данных памяти(MDR)
      • Регистр адреса памяти (MAR)
  • Архитектурный регистр- Регистры, видимые программному обеспечению, определенному архитектурой, могут не соответствовать физическому оборудованию, если переименование регистров выполняется нижележащим оборудованием.

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

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

Примеры [ править ]

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

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

Использование [ править ]

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

См. Также [ править ]

  • Кеш процессора
  • Распределение регистров
  • Зарегистрировать файл
  • Регистр сдвига

Ссылки [ править ]

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