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