2016-12-12 1 views
1

Я не понимаю, почему слово всегда содержит байты по мощности 2. Почему он не может содержать 5 байтов или 6 байтов?Почему слово в памяти всегда содержит 2^n число байтов?

+1

Простота вычисления адреса, мощность 2 означает, что простого смещения битов достаточно для вычисления байтовых адресов и т. Д. –

+0

На некоторых архитектурах, которые загружают или сохраняют размер без питания, есть несколько инструкций. например Внутренний 80-битный плавающий формат x87 может быть загружен/сохранен со специальной версией [FLD] (http://www.felixcloutier.com/x86/FLD.html) и [FSTP] (http: //www.felixcloutier. ком/x86/FST: FSTP.html). x86 - косвенные косвенные переходы в 32-битном режиме нагрузки 2 + 4 байта. Но это исключения, а не правило, по причине, о которой говорил Ису. –

ответ

2

Это не всегда так. В прошлом были машины с 18 бит (PDP-8) 18 бит (PDP-7) 36 бит (PDP-10) или даже 60 бит (CDC 6600)

Даже сегодня есть машины с нечетными размерами. Семейство PIC 16xxxx от Microchip хранит инструкции в 14-битных словах, в то время как серия 24xxxx использует 24-разрядные инструкции. Это, однако, специализированные встроенные чипы, а не машины общего назначения.

По большей части все перемещено в два режима. Большим толчком для этого стал старый IBM 360, в котором было введено знакомое (хотя и несколько устаревшее) 32-битное слово, содержащее 4 восьмеричных байта.

Эта комбинация мощности двух слов и мощности двух байтов на слово делает адресацию целых/указателей и символов простой и эффективной.

Современные машины просто обновили это до 64-битных слов с 8-битными байтами на слово, сохраняя это полезное преимущество.

+0

Есть ли какой-либо из этих примеров, которые вы упоминаете, имеет адресную память? Если память адресована только по словам, то вычисления адресов никогда не должны масштабироваться по количеству бит в слове или количеству октетов в слове. (например, у машины может быть только 12-битная шина памяти?) –

+0

Большинство машин тогда, где машины с адресами слов. PDP-10, однако, может разбить слово на 6 шестибитных «байтов» или 5 семибитных с потерянным битом или 4 восьмеричными байтами с 4 потерянными битами или 4 девятьмибайтными байтами. Специальные инструкции, которые использовали для этого, и программист должен был обрабатывать границы слов и другие проблемы с адресацией. Фактически, слово может быть подразделено на любое количество полей переменных бит, если они соответствуют 36-битовому слову. –

+0

Хм, так что я думаю, если бы вы хотели N-го символа в строке, вам нужно было бы разделить N на не-power-of-2, чтобы получить адрес слова, в котором содержался персонаж, который вы искали:/думали, что адресно-адресная память будет в основном избегать масштабирования с помощью факторов, не имеющих силы 2, но, возможно, не для программного обеспечения, пытающегося эффективно использовать память. –

Смежные вопросы