Почему регистры процессора быстро доступны? - PullRequest
16 голосов
/ 19 августа 2010

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

Ответы [ 5 ]

19 голосов
/ 19 августа 2010

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

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

9 голосов
/ 19 августа 2010

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

2 голосов
/ 19 августа 2010

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

1 голос
/ 20 августа 2010

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

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

0 голосов
/ 19 августа 2010

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

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

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

...