2016-12-17 5 views
-1

Почему длина регистра (в битах), на которой работает ЦП, не динамически/вручную/произвольно настраивается? Это сделает компьютер медленнее, если он будет регулироваться таким образом?Почему статическая длина регистра в любом ЦП

Представьте, что у вас было 8-битное целое число. Если вы можете отрегулировать длину регистров процессора до 8 бит, то CPU должен будет пройти только первые 8 бит вместо того, чтобы расширять 8-разрядное целое до 64 бит, а затем пройти через все 64 бита.

+0

Аппаратные средства, как правило, работает на всех битах параллельно в любом случае. 64-разрядный xor не медленнее, чем 8-бит xor. Только несколько операций на некоторых процессорах медленнее для большего размера операнда. (x86 имеет переменный размер операнда, хотя ширина регистра является фиксированной. См. http://agner.org/optimize/ для таблиц инструкций и особенно смотря на задержку/пропускную способность для MUL и DIV (зависит от операнда) vs. почти все остальное (постоянное).) –

ответ

0

Архитектуры, такие как ARM (предположительно другие также) поддерживают half precision floats. Идея состоит в том, чтобы делать то, что вы спекулировали, и объяснил @ Маргарет. С половинной точностью поплавков вы можете упаковать два значения поплавка в один регистр, тем самым создавая меньшую пропускную способность за счет снижения точности.

Ссылка:

[1] АРМ

[2] НКУ

1

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

Однако некоторые архитектуры позволяют программисту работать с меньшей частью регистра или парными регистрами.
x86 делает это, например, с add al, 9 (использует только 8 бит 64-разрядного rax) и div rbx (пары rdx:rax для формирования 128-битного регистра). Причина, по которой эта схема не настолько размыта, заключается в том, что она поставляется с множеством компромиссов.

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

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

Доступ к частичным регистрам полезен для программиста, чтобы развернуть количество доступных регистров, например, если алгоритм работает с 16-разрядными данными, программист может использовать один физический 64-разрядный регистр для хранения четырех элементов и работают на них независимо (но не параллельно).
ISA, которые имеют инструкции с переменной длиной, также могут извлечь выгоду из использования частичного регистра, поскольку обычно это означает меньшие непосредственные значения, например, и инструкция, которая устанавливает регистр для определенного значения, обычно имеет непосредственный операнд, который соответствует размеру загружаемого регистра (хотя RISC обычно подписывает-расширяет или нулевое - расширяет его).