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 г. Архивировано (PDF) из оригинала 24.02.2005.
  5. ^ "8008 8 Bit Parallel Central Processor Unit User Manual" (PDF) . Intel. Ноябрь 1973. Архивировано (PDF) из оригинала 2007-10-04 . Получено 23 января 2014 .
  6. ^ "Руководство пользователя микрокомпьютерных систем Intel 8080" (PDF) . Intel. Сентябрь 1975 г. Архивировано (PDF) из оригинала 2010-12-06 . Получено 23 января 2014 г. .
  7. ^ "Справочное руководство программиста 80286 и 80287" (PDF) . Intel. 1987. Архивировано (PDF) из оригинала 2015-07-23.
  8. ^ ab "Руководства для разработчиков программного обеспечения для архитектур Intel 64 и IA-32". Intel. 4 декабря 2019 г.
  9. ^ «Руководство программиста по архитектуре AMD64. Том 1: Прикладное программирование» (PDF) . AMD . Октябрь 2013 г.
  10. ^ «Справочник по программированию расширений набора инструкций архитектуры Intel и будущих функций» (PDF) . Intel . Январь 2018 г.
  11. ^ F8, Предварительное руководство пользователя микропроцессора (PDF) . Fairchild. Январь 1975 г.
  12. ^ F8 Руководство по программированию (PDF) . Fairchild MOS Microcomputer Division. 1977.
  13. ^ "Справочное руководство по процессору Nios II Classic" (PDF) . Altera . 2 апреля 2015 г.
  14. ^ "Справочное руководство по процессору Nios II Gen2" (PDF) . Altera. 2 апреля 2015 г.
  15. ^ "M6800 Programming Reference Manual" (PDF) . Motorola . Ноябрь 1976. Архивировано (PDF) из оригинала 2011-10-14 . Получено 18 мая 2015 .
  16. ^ "Motorola M68000 Family Programmer's Reference Manual" (PDF) . Motorola. 1992 . Получено 10 ноября 2024 .
  17. ^ "Руководство по программированию CUDA C". Nvidia. 2019. Получено 9 января 2020 г.
  18. ^ Цзя, Чжэ; Маджиони, Марко; Штайгер, Бенджамин; Скарпацца, Даниэле П. (2018). «Анализ архитектуры графического процессора NVIDIA Volta с помощью микробенчмаркинга». arXiv : 1804.06826 [cs.DC].
  19. ^ Control Data 6000 Series Computer Systems, Reference Manual (PDF) . Control Data Corporation. Июль 1965 г.
  20. ^ Принципы работы IBM System/360 (PDF) . IBM.
  21. ^ IBM System/370, Принципы работы (PDF) . IBM. 1 сентября 1975 г.
  22. ^ z/Архитектура, принципы работы (PDF) (Седьмое изд.). IBM. 2008.
  23. ^ "IBM Enterprise Systems Architecture/370 и System/370 - Vector Operations" (PDF) . IBM. SA22-7125-3 . Получено 11 мая 2020 г. .
  24. ^ "Микропроцессор IBM S/390 G5" (PDF) .
  25. ^ "Домашняя страница MMIX".
  26. ^ "Series 32000 Databook" (PDF) . National Semiconductor . Архивировано (PDF) из оригинала 2017-11-25.
  27. ^ Архитектура Intel Itanium, Руководство разработчика программного обеспечения, Том 3: Справочник по набору инструкций Intel Itanium (PDF) . Intel. Май 2010 г.
  28. ^ Уивер, Дэвид Л.; Джермонд, Том (ред.). Руководство по архитектуре SPARC, версия 9 (PDF) . Санта-Клара, Калифорния: SPARC International, Inc.
  29. ^ Power ISA Version 3.1B (PDF) . OpenPOWER Foundation. 14 сентября 2021 г.
  30. ^ Blackfin Processor, Справочник по программированию, Версия 2.2 (PDF) . Analog Devices. Февраль 2013 г.
  31. ^ "Архитектура набора инструкций блока синергического процессора, версия 1.2" (PDF) . IBM. 27 января 2007 г.
  32. ^ Леонард, Тимоти Э., ред. (1987). Архитектура VAX, справочное руководство (PDF) . Книги DEC.
  33. ^ Справочное руководство по архитектуре Alpha (PDF) (Четвертое издание). Compaq Computer Corporation. Январь 2002 г.
  34. ^ "Изучение сборки 65816". Super Famicom Development Wiki . Получено 14 ноября 2019 г.
  35. ^ "Стандарт вызова процедур для архитектуры ARM" (PDF) . ARM Holdings . 30 ноября 2013 г. . Получено 27 мая 2013 г. .
  36. ^ "2.6.2. Набор регистров состояния большого пальца". Техническое справочное руководство по ARM7TDMI . ARM Holdings .
  37. ^ Архитектура набора инструкций Arm A64, Armv8, для профиля архитектуры Armv8-A (PDF) . Arm. 2021.
  38. ^ Архитектура MIPS64 для программистов, том II: набор инструкций MIPS64 (PDF) . RISC-V Foundation. 12 марта 2001 г. Получено 6 октября 2024 г.
  39. ^ Waterman, Andrew; Asanovi, Krste, ред. (май 2017 г.). RISC-V, Руководство по набору инструкций, Том I: ISA на уровне пользователя, Версия документа 2.2 (PDF) . RISC-V Foundation.
  40. ^ «Справочник по архитектуре Epiphany» (PDF) .