10

Я читал эту статью о 64-разрядных вычислениях, и она упоминает:

Например, архитектура AMD64 по состоянию на 2011 год допускала 52 бита для физической памяти и 48 бит для виртуальной памяти

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

Дополнительный вопрос: что значит "разрешить" 52 или 48 бит в 64-битной архитектуре? Для чего используются другие биты?

2 ответа2

10

Вот изображение таблицы страниц AMD64 (из Руководства по программированию для архитектуры AMD, том 2, версия 3.23, 2013, стр. 132).

AMD64 Longmode страница таблицы

"Естественный" размер страницы в архитектуре AMD64 составляет 2 12 = 4096 байт. (Существуют режимы, в которых вы можете иметь 2 21 = 2 Мбайт страниц, но сейчас мы их проигнорируем.)

Каждая страница-Элемент таблицы (PTE) (или, в зависимости от уровня называется ФДЭ, PDPE или PML4E) составляет 64 бит = 2 3 байта. Таким образом, есть 2 9 записей на странице. Таким образом, 4 уровня таблицы страниц дают вам 4x9+12 = 48 бит виртуального адреса на процесс. Ходить по таблице страниц стоит дорого, поэтому они не расширятся до 5 или 6 уровней, если / пока не появится потребительский спрос.

Я не уверен, почему они выбрали 52-битный физический адрес. Это может быть расширено до 63 бит в будущем. В ценах октября 2013 года (около 1 долл. США / Гигабит для чипов 4 Гбит) на создание 2 52- байтовой памяти потребуется более 32 000 000,00 долл. США, поэтому пройдет некоторое время, прежде чем возникнет значительная потребность в увеличении предела физических адресов. Существует множество причин, по которым вы хотите, чтобы физические адреса были как можно меньше: например, теги TLB и кеша должны содержать физические адреса.

Не обязательно назад, что физической памяти больше, чем виртуальной. Виртуальная память - это процесс, а физическая память используется всеми процессами. Таким образом, сервер с 48-битными виртуальными адресами и 2 52 байтами памяти может поддерживать 16 одновременных процессов и при этом гарантированно не менять местами.

3

Несколько моментов, которые нужно учитывать, физическая оперативная память стоит дорого Конечно, 16 ГБ теперь дешевле, чем 4 ГБ всего несколько лет назад, но 2 ^ 64 (16 эксабайт) смехотворно велики.

Таким образом, расширения AMD для x86 для x64 "позволили" до 2 ^ 52 путем ограничения регистров. Это делает две вещи, снижает стоимость процессоров и повышает производительность. Больше регистров, которые не используются, означает, что есть много пустого пространства, которое все еще должно учитываться во время операций.

И, если вы не математик парень ... Разница между тремя размерами огромна! Я не математический гуру, но по десятичному разряду 52 бита это примерно 0,02% от 64 бита. 48 бит - это 6% от 52. (кто-нибудь проверяет мою математику?)

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

Мои собственные мысли: мы оставили время, когда оперативной памяти было крошечное, и жесткие диски должны были поддерживать оперативную память. Цена в ОЗУ упала до такой степени, что среднестатистическая персона может поставить более чем достаточно ОЗУ. Возьмите типичные приложения, такие как Office, которые требуют 1-2 ГБ оперативной памяти. Мой компьютер 7 лет назад мог справиться с этим. Хотя со скоростью чтения и записи на диск, я надеюсь, мне никогда не приходилось извлекать файл размером 7 ГБ из виртуальной памяти (используя старую философию PM * 2.5).

Я также могу только предположить, что AMD хотела оставить место для регистров, которые используют регистры физической ОЗУ, например ОЗУ на встроенных графических процессорах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .