stringtranslate.com

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

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