Почему ОС не может использовать целые 64-битные адреса для адресации? Почему только 48 бит?
Я читаю "Понимание ядра Linux".
Пейджинг для 64-разрядных архитектур
Как мы видели в предыдущем разделов, двухуровневый пейджинг используется 32-разрядными микропроцессорами. Однако двухуровневый пейджинг не является подходит для компьютеров, 64-битная архитектура. Позвольте использовать мысленный эксперимент, чтобы объяснить, почему:
Начните с принятия стандартного размера страницы из 4 КБ. Поскольку 1 КБ охватывает диапазон адресов 2 10 4 КБ охватывает 2 12адресов, поэтому поле "Смещение" равно 12 биты. Это оставляет до 52 бит линейный адрес, подлежащий распределению между таблицей и справочником поля. Если мы сейчас решили использовать только 48 из 64 бит для адресации (это ограничение оставляет нас с удобное адресное пространство на 256 ТБ!), остальные 48-12 = 36 бит будут должны быть разделены между таблицей и Поля каталога. Если мы сейчас примем решение зарезервировать 18 бит для каждого из этих двух полей, как Каталог страниц, так и Таблицы страниц каждого процесса должны включают 2 18 записей, которые больше, чем 256 000 записей.
-
"Если мы теперь решили использовать только 48 из 64 бит для адресации". Зачем? и почему только 48 бит? Почему не какой-то другой номер?
-
Хорошо, я просто обычный пользователь ПК и программист. Его просто трудно поверить в меня, что 32-битная адресация, то есть 4 ГБ (более 2 ГБ /3 ГБ, чтобы быть более правильной) адресное пространство для каждого процесса является пределом. Если вы действительно столкнулись с этим ограничением. Просьба привести пример.
-
Что это за ограничение для окон?
-
Я знаю, что виртуальная память!= контакты физической памяти и процессора не имеют ничего общего с виртуальной памятью. Это совершенно другой вопрос. Как узнать количество адресных контактов (= размер адресной шины) для процессора. http://ark.intel.com спецификации процессора не включают эту спецификацию.
Ответ:
См. Paul Betts ответ для разумного ответа на первый вопрос.
Ответы
Ответ 1
"Если теперь мы решим использовать только 48 из 64 бит для адресации". Зачем? и почему только 48 бит? Почему не какой-то другой номер?
Системные архитекторы делают компромиссы. 256TB кажется более чем достаточным местом для 1 адресного пространства процесса. Помните виртуальный адрес!= Физический адрес, и, вообще говоря, каждый процесс имеет собственное адресное пространство.
Пока указатели имеют 64 бита, это скорее проблема производительности, чем что-либо еще. Если и когда 48 бит станет ограничением, OS может быть изменена, чтобы использовать больше бит 64-разрядного адресного пространства без нарушения несовместимости приложения. На данный момент архитекторы просто покупают себе очень удобное время.
Возможно, это связано с возможностями виртуальной адресации на стороне процессора, так как у многих процессоров теперь блоки управления памятью для обработки виртуальных → отображение физической памяти.
Как узнать количество адресных контактов (= размер адресной шины) для процессора. http://ark.intel.com спецификации процессора не включают эту спецификацию.
Это по большей части не имеет значения. Это способ для процессора реализовать различные схемы физической адресации. 64-битный процессор мог бы получить внешние шины адресов/данных для своего полного адресного пространства с помощью буфера 64, 32, 16, 8, 4, 2 или 1 адреса, если шина является синхронной, а биты адреса мультиплексируются во времени. Опять же, виртуальный адрес!= Физический адрес; 64-битная виртуальная адресация может быть реализована с 48-битными или 32-битными физическими адресами (просто чтобы вы были ограничены словами 2 48 или 2 32).
update:, если вы действительно хотите это знать, вам нужно посмотреть на таблицу данных каждого процессора. Например. Intel Core 2 Duo - раздел 4.2 таблицы содержит информацию о сигналах - адресная шина имеет ширину 36 бит (но на самом деле 33 сигнальные линии, ширина данных составляет 64 бит = 8 байт, поэтому другие 3 строки, вероятно, не нужны при правильном выравнивании данных)
Хорошо, я просто обычный пользователь ПК и программист. Его просто трудно поверить мне, что 32-битная адресация, то есть 4 ГБ (2 ГБ /3 ГБ, чтобы быть более правильной) адресное пространство на процесс является пределом. Если вы действительно столкнулись с этим ограничением. Просьба привести пример.
Два слова: файлы с отображением памяти.
Ответ 2
Ни один из этих ответов не прав, причина, по которой ОС не использует полные 64-битные значения, состоит в том, что таблицы страниц будут намного больше (64-разрядные уже до 3 уровней таблиц страниц), и нет разумно заплатить дополнительное косвенное направление, достаточно 48 бит. 48-бит также удобен, потому что вы получаете некоторые дополнительные биты для хранения флагов (маркировка указателей)
Ответ 3
Никакая текущая конструкция x86-64 не использует 48 бит для этого - так что это удобное число для выбора, и это автоматически то же самое ограничение на Windows тоже.
Ответ 4
Его просто трудно поверить мне, что 32-битная адресация, то есть 4 ГБ (более 2 ГБ /3 ГБ, если быть более правильным) адресное пространство на процесс является пределом. Если вы действительно столкнулись с этим ограничением. Просьба привести пример.
Это более эффективно (быстрее) для получения данных из ОЗУ, чем для его получения с диска.
Скорость SQL-сервера частично зависит от того, сколько данных (например, сколько его страниц индекса и данных) он может хранить в ОЗУ, а не на диске.
Таким образом, базы данных SQL (например) могут быть быстрее на машинах с объемом памяти более 4 ГБ.
То же самое относится к другим типам серверов (например, файловые серверы, HTTP-прокси и т.д.), которые могут быть быстрее, если они могут иметь большие кеши оперативной памяти.
Ответ 5
Я думаю, что самый простой ответ - закон moore.
Закон Мура в основном говорит о том, что ИС сокращают вдвое каждые 18 месяцев. Есть несколько способов интерпретировать это: объем памяти, установленный на ПК, как правило, удваивается каждые 18 месяцев. Эффективная скорость удваивается (по крайней мере, если вы берете ядра * МГц, а не только МГц).
Во всяком случае, у нас просто закончилось 32-битное адресное пространство, поэтому переход с 32 до 48 означает, что с аппаратной стороны мы выделили пространство расширения для примерно 16 итераций закона Мура, который работает примерно до 20 лет.
Im довольно уверен, что, хотя некоторые ПК могут быть перенесены на 10-летнюю марку, 20-летний запас расширения кажется достойным компромиссом: компьютеры через 20 лет будут отличаться - они не будут использовать одни и те же процессоры и RAM-шины, как и другие 20 лет назад. Проектирование более чем 20-летнего запаса прочности в интерфейс - это просто глупо над разработкой, которая никогда не увидит использование в любом случае.
И его не так уж и мало, что существующее оборудование действительно рискует быть устаревшим слишком рано.
Ответ 6
Его просто трудно поверить мне, что 32-битная адресация, то есть 4 ГБ (более 2 ГБ /3 ГБ, если быть более правильным) адресное пространство на процесс является пределом. Если вы действительно столкнулись с этим ограничением. Просьба привести пример.
Он больше не существует (за исключением некоторых персональных компьютеров старых сотрудников), но я работал над набором программного обеспечения под названием RealiMation еще в конце 1990-х - начале 2000-х годов. Это был 3D-движок реального времени для визуализации и моделирования. Один из наших клиентов регулярно создавал очень подробные модели, которые поражают ограничение памяти на 2 ГБ. Мы будем загружать текстуры "на лету", когда и когда это необходимо, и должны были добавить код для проверки отказа памяти, чтобы мы могли продолжить отображение модели, хотя и нетекстурированной.
Ответ 7
Из аппаратного обеспечения другое соображение - это выравнивание.
Как только вам понадобится тип данных более 4 байтов, скажем, 6, вам нужно поместить их на 8-байтовые границы, чтобы получить их в одной команде. Если вы не выровняете, вам нужно выполнить маскировку и смещение бит и добавить проверки для этого в (сборке) кода.
Многие люди были недовольны переключением на 64-битное, что их программы потребляли гораздо больше памяти. Им понадобились бы 48-битные указатели, и если бы ограничения на выравнивание отсутствовали, производители процессоров, вероятно, создали бы 48-битную архитектуру.
Обратите внимание: если вы так голодны для памяти, что хотите, чтобы ваши указатели составляли 6 байтов, есть способы сделать это. Но есть штраф за время исполнения.