Я читал эту статью о 64-разрядных вычислениях, и она упоминает:
Например, архитектура AMD64 по состоянию на 2011 год допускала 52 бита для физической памяти и 48 бит для виртуальной памяти
Я думаю, что было бы разумнее предусмотреть больше виртуальной памяти, чем физической памяти, так почему же на самом деле все наоборот?
Дополнительный вопрос: что значит «разрешить» 52 или 48 бит в 64-битной архитектуре? Для чего используются другие биты?
Ответы:
Вот изображение таблицы страниц AMD64 (из Руководства программиста по архитектуре AMD, том 2, версия 3.23, 2013, стр. 132).
«Естественный» размер страницы в архитектуре AMD64 составляет 2 12 = 4096 байт. (Существуют режимы, в которых вы можете иметь 2 21 = 2 Мбайт страниц, но сейчас мы их проигнорируем.)
Каждая запись таблицы страниц (PTE) (или, в зависимости от уровня, называемого PDE, 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 одновременных процессов и при этом гарантированно не менять местами.
источник
Несколько моментов, которые нужно учитывать, физическая оперативная память стоит дорого Конечно, 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 хотела оставить место для регистров, которые используют регистры физической ОЗУ, например ОЗУ на встроенных графических процессорах.
источник