Почему быстро регистрируются регистры процессора?

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

Ответы

Ответ 1

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

Ответ 2

Регистры представляют собой схемы, которые буквально подключены непосредственно к ALU, который содержит схемы для арифметики. Каждый тактовый цикл, блок регистров ядра ЦП может подавать полдюжины или около того переменных в другие схемы. Фактически, единицы в datapath (ALU и т.д.) Могут напрямую передавать данные друг другу через обходную сеть, что в некотором роде формирует уровень иерархии над регистрами, но они все еще используют номера регистров для адресации друг друга. (Раздел управления полностью конвейерного процессора динамически отображает блоки данных для регистрации номеров.)

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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

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