Самый низкий и самый высокий адрес в памяти, где наименьшая доступная единица составляет 4 байта

Был задан вопрос: "Каков самый низкий и самый высокий адрес, учитывая 2^10 байт памяти, в которых 4-байтовое слово является наименьшей адресуемой единицей?"

Наименьший адрес равен 0 Ключ ответа имеет наибольший адрес 2^10-4. Я думал, что это будет (2^10-1)/4, так как каждые 4 байта адресованы?

3 ответа

Я думаю, что человек, который сделал вопрос, запутался в своем собственном определении. Действительно, если "наименьшая адресуемая единица" - это "4-байтовое слово", то из 2^10 байтов следует, что 2^8 разных адресов, что означает, что самый высокий адрес равен 2^8-1 или 255.

В типичных компьютерных архитектурах это не так. Наименьшая адресуемая единица фактически является байтом (поскольку все адреса представляют количество байтов от "начала"), но действительные адреса - это только те, которые делятся на 4. Таким образом, 0 является действительным адресом, а 4 является действительным адресом, но пытается использование 3 приведет к исключению. Кстати, это называется "выравнивание", и для разных команд может потребоваться различное выравнивание, которое может варьироваться от 1 до 128, а иногда и больше. Обычно это степень 2, потому что с ними легко работать.

Я предполагаю, что вопрос был действительно о выравниваниях, но это было сформулировано неуклюжим способом. Вы также можете попытаться спросить об этом своего учителя, который должен уметь что-то прояснить.

Таким образом, у вас есть 2^10 байтов, что составляет 1024 байта, что составляет 1 МБ. Теперь ваша память выровнена на 4 байта, поэтому первый адрес будет: 0x4, а последний адрес будет 1020/4 = 255, что равно 0xFF в шестнадцатеричном формате.

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

Другие вопросы по тегам