как определить, сколько адресов памяти может генерировать процессор

#memory #cpu-architecture #memory-address

Вопрос:

Допустим, компьютер может содержать слово размером 26 бит, мне любопытно знать, сколько адресов памяти может генерировать процессор?

Я думаю, что максимальное число, которое он может содержать, будет 2^26 — 1 и может иметь 2^26 уникальных адресов памяти.

Мне также любопытно знать, что если, допустим, каждая ячейка в памяти имеет размер 12 бит, то сколько байтов памяти может адресовать этот процессор?

Насколько я понимаю, в большинстве случаев процессор может содержать до 32 бит, что составляет 4 байта, а каждый байт-8 бит. Однако в этом случае каждый байт будет равен 12 битам, и процессор сможет адресовать 2^26/12 байта памяти. Можно ли это с уверенностью сказать?

Ответ №1:

Я думаю, что максимальное число, которое он может содержать, будет 2^26 — 1 и может иметь 2^26 уникальных адресов памяти.

Я согласен. Обычно мы называем это размером адресного пространства.


Что касается следующего вопроса:

В наши дни термин «байт», как правило, означает 8 бит, поэтому 12 бит будут означать 1,5 байта. Однако это вопрос терминологии, которая в далеком прошлом менялась.

Итак, я бы сказал, что 2 26 12-битных слов способны удерживать/хранить 2 26 * 1,5 байта, хотя они не могут быть адресованы по отдельности и должны быть упакованы и распакованы для доступа к отдельным байтам.

Компьютер DEC PDP-8 был 12-разрядным компьютером и адресуемым к словам, поэтому существовало несколько схем хранения символов: два 6-разрядных символа в 12-разрядном слове, а также 1 и 1/2 8-разрядных символов в 12-разрядном слове, поэтому три 8-разрядных символа в двух 12-разрядных словах.

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

Комментарии:

1. Существует термин, который всегда означает 8 бит, «октет». Если мы рассматриваем возможность 12-битных байтов (что несколько разумно для 12-битных ячеек памяти), было бы неплохо сказать «октет». (Более подробно в вопросе, хотя тот факт, что они даже задают несколько вопросов, подразумевает, что они предполагают 8-битные байты, в противном случае это вопрос с подвохом, если ячейка памяти всегда составляет 1 байт по определению, независимо от того, сколько бит.)