Почему быстрый доступ к регистрам ЦП?

Переменные регистров - это хорошо известный способ получить быстрый доступ ( register int i ). Но почему регистры находятся на вершине иерархии (регистры, кэш, основная память, вторичная память)? Каковы все вещи, которые делают доступ к регистрам таким быстрым?

17
задан Timwi 19 August 2010 в 03:24
поделиться

5 ответов

Регистры являются основной частью ЦП, а большая часть набор команд ЦП будет адаптирован для работы с регистрами, а не с ячейками памяти. Для доступа к значению регистра обычно требуется очень мало тактов (вероятно, всего 1), как только осуществляется доступ к памяти, все становится более сложным, задействуются контроллеры кеша / шины памяти, и операция займет значительно больше времени.

10
ответ дан 30 November 2019 в 12:13
поделиться

Регистры - это, по сути, внутренняя память ЦП. Таким образом, доступ к регистрам проще и быстрее, чем любой другой доступ к памяти.

2
ответ дан 30 November 2019 в 12:13
поделиться

Регистры - это схемы, которые буквально подключены непосредственно к АЛУ, содержащему схемы для арифметических операций. Каждый такт блок регистров ядра процессора может передавать полдюжины или около того переменных в другие схемы. На самом деле, блоки в тракте данных (АЛУ и т.д.) могут передавать данные друг другу напрямую, через обходную сеть, которая в некотором смысле образует уровень иерархии над регистрами - но они все еще используют номера регистров для адресации друг друга. (Управляющая секция полностью конвейеризованного процессора динамически сопоставляет блоки датапата с номерами регистров.)

Ключевое слово register в C не делает ничего полезного, и вы не должны его использовать. Компилятор решает, какие переменные и когда должны быть в регистрах.

20
ответ дан 30 November 2019 в 12:13
поделиться

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

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

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

0
ответ дан 30 November 2019 в 12:13
поделиться

Меньшие ячейки памяти обычно быстрее, чем большие; им также может потребоваться меньшее количество бит для адресации. 32-битное командное слово может содержать три четырехбитных адреса регистров и иметь много места для кода операции и других вещей; один 32-битный адрес памяти полностью заполнил бы командное слово, не оставив места ни для чего другого. Кроме того, время, необходимое для адресации памяти, увеличивается со скоростью, более чем пропорциональной журналу размера памяти. Доступ к слову из 4-гигабайтной области памяти займет в десятки, если не сотни раз больше времени, чем доступ к слову из регистрового файла из 16 слов.

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

1
ответ дан 30 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: