Windows x86 физическая память является 24-битной?

1072
George2

Я читаю новую книгу Windows Internals 5 об управлении памятью (глава 9 в разделе PAE расширения физических адресов). Упоминается «32-битная система представляет внутренние адреса с 24-битными физическими адресами» на стр. 770. Я полностью сбит с толку, и я думаю, что физическая память x86 должна быть также адресована 32-битной, и именно поэтому система называется 32 система.

Есть идеи, что не так?

5

3 ответа на вопрос

2
Preet Sangha

Вот больше подробностей о том, что означает загрузка / PAE из главы 7 книги Дэвида Соломона и Марка Руссиновича «Внутри Windows 2000».

Все процессоры семейства Intel x86, начиная с Pentium Pro, включают режим отображения памяти, называемый расширением физических адресов (PAE). При правильном наборе микросхем режим PAE обеспечивает доступ к 64 ГБ физической памяти. Когда x86 выполняется в режиме PAE, модуль управления памятью (MMU) делит виртуальные адреса на четыре поля.

MMU по-прежнему реализует каталоги страниц и таблицы страниц, но над ними существует третий уровень, таблица указателей каталогов страниц . Режим PAE может адресовать больше памяти, чем стандартный режим трансляции, не из-за дополнительного уровня трансляции, а потому, что PDE и PTE имеют ширину 64 бита, а не 32 бита. Система представляет физические адреса внутри с 24 битами, что дает x86 возможность поддерживать максимум 2 ^ (24 + 12) байтов или 64 ГБ памяти

Редактировать: как говорит Джордж Так 24 бита номеров страниц представляют 24 + 12 = 36 бит байтовых адресов. Это расширение адреса в 32-битном нормальном пространстве.

Да, Preet, это почти точные слова в Windows Internals 5, я запутался в том, что «система представляет физические адреса внутри с 24 битами», как вы цитировали, я путаюсь, если физическая память адресуется 24-битной, то макс. из 2 ^ 24 = 16M уникальных местоположений (в данном случае это байты), как мы можем адресовать 4G? 15 лет назад 1
@ George2, эта часть системы связана с целыми страницами памяти. Таким образом, 24 бита номеров страниц представляют 24 + 12 = 36 бит байтовых адресов. RBerteig 15 лет назад 1
К сожалению, я удалил свой дополнительный бит :-) Preet Sangha 15 лет назад 1
«24 бита номеров страниц» - что вы подразумеваете под номером страницы? PFN (номер фрейма страницы)? Если да, не могли бы вы сообщить мне, где утверждается, что PFN является 24-битным, пожалуйста? Это должна быть очень полезная информация. George2 15 лет назад 0
@ Приветствую, из приведенной вами формулы - «24 + 12 = 36 бит», я думаю, 24 означает номер страницы (номер кадра страницы), а 12 означает смещение внутри страницы? Если да, не могли бы вы сообщить мне, где утверждается, что PFN является 24-битным, пожалуйста? Это должна быть очень полезная информация. George2 15 лет назад 0
Первые реализации PAE поддерживали только 24-битные номера кадров страниц, следовательно, 64 ГБ ОЗУ. Фактически первая версия Windows, которая поддерживала PAE, официально не поддерживала так много, потому что, когда она была впервые поставлена, не было доступных материнских плат, которые могли бы принять больше, чем 32 ГБ, так что это то, что поддерживала MS, но процессор мог делать 64 ГБ. Когда AMD определила архитектуру x86-64, они расширили формат PTE с 24-разрядных PFN до 40-разрядных, даже в режиме совместимости, чтобы их могли использовать как 32-разрядные, так и 64-разрядные ОС. Intel последовала их примеру с процессорами Intel64. ... Jamie Hanrahan 6 лет назад 0
Если вы хотите найти ссылки, документирующие 24-битные PFN, вам, вероятно, понадобится найти более старые версии Руководства разработчика программного обеспечения Intel x86. Ищите те, которые были опубликованы до появления x86-64. Jamie Hanrahan 6 лет назад 0
1
Rom

Я читаю главу «Расширение физических адресов» (PAE) в четвертом издании Windows Internals (стр. 435–437) и не могу найти ссылку на 24 бита. Существует ссылка на 25 битов, используемых для адреса базовой страницы, что означает, что адресуемое пространство становится 2 ^ (12 + 25) = 128 ГБ. Но мы вернемся к этому. Сначала давайте посмотрим, как линейный адрес преобразуется в физический адрес (и это прекрасно описано в книге): линейный адрес разбивается на три части:

  • 12 младших битов смещены в пределах страницы, обращаясь к любому байту на странице 4 КБ;
  • следующие 10 битов являются индексом записи в таблице страниц (PTE), которая содержит базовый адрес (физический адрес первого байта) страницы;
  • старшие 10 битов являются индексом записи в таблице каталогов страниц (PDE), которая содержит базовый адрес для PTE.

Каждый элемент в PTE и PDE содержит 32-битную запись, 20 бит которой содержат физический адрес страницы или таблицы следующего уровня соответственно. Другие 12 битов - это флаги, описывающие страницу или таблицу (читаемые / записываемые / исполняемые и т. Д.). Так работали 80386, x486 и Pentium.

Теперь Pentium Pro и более новые процессоры при работе в режиме PAE используют записи шириной 64 бита в таблицах PDE и PTE. В этих записях может быть использовано до 40 бит для кодирования базового адреса страницы в памяти. Это означает, что режим PAE теоретически может адресовать 2 ^ 40 страниц (1T страниц) размером 2 ^ 12 (4 КБ каждая). Общее теоретическое адресное пространство составляет 2 ^ (40 + 12) = 2 ^ 52 = 4 Петы байтов. Однако операционные системы не используют все эти 40 бит. Например, Windows использует только 24 из них, что приводит к общему адресуемому адресному пространству в 2 ^ (24 + 12) = 2 ^ 36 = 64 Гбайт.

Очевидно, что разные версии (разновидности) Windows используют разное количество битов в этой таблице, что кажется немного странным. Согласно 4-му изданию рассматриваемой книги, в этом случае используется 25 бит, что увеличивает адресное пространство до 128 Гб, и это также подтверждается этой страницей . Это является источником несоответствия между 4-м и 5-м изданием, упомянутым выше.

Для более подробного объяснения того, как происходит перевод, посмотрите на страницы 4-17 и 4-18 (глава 4.4.2) Руководства разработчика программного обеспечения Intel 64 и IA32 Architectures.

О, да, и система называется 32-битной не потому, что она адресует 2 ^ 32 байта. Это потому, что он работает в режиме, когда внутренние регистры имеют ширину 32 бита (что уже не всегда верно, но достаточно близко к реальности). Если бы адресное пространство определяло имя ОС, то DOS была бы 20-битной ОС, а старые Mac были бы 24-битной ОС

Да, у меня такое же мышление. Но я не думаю, что Марк ошибается. :-) 15 лет назад 0
Спасибо, Ром, меня интересуют ваши замечания: «Существует ссылка на 25 бит, используемых для адреса базовой страницы, что означает, что адресуемое пространство становится 2 ^ (12 + 25) = 128 ГБ.», Я думаю, 25 означает физическую память адрес представлен 25-битным, но 12 означает что? George2 15 лет назад 0
0
ennuikiller

Это относится к отображению 32-разрядного виртуального адресного пространства в 24-разрядное физическое адресное пространство. Обычно 20-битный номер виртуальной страницы преобразуется в 12-битный номер физической страницы, а оставшиеся биты смещаются на страницу.

Да, но физическое адресное пространство не было 24-разрядным со времен 80286, то есть середины восьмидесятых, почти 25 лет назад. Rom 15 лет назад 2
Привет ennuikiller, я запутался, ты имеешь в виду, что физическая память адресуется 24-битной, если да, мы могли бы адресовать максимум 2 ^ 24 = 16M уникальных местоположений (байтов в этом случае). 15 лет назад 0
Привет, Ром, если физическая память адресована 24-битной, то, по твоим расчетам, можно адресовать максимум 2 ^ 24 = 16M уникальных местоположений (в данном случае байтов), как мы можем обратиться к 4G? 15 лет назад 0
@ George2, см. Приведенную ниже цитату из «Внутри Windows 2000». В основном каждая физическая страница может адресовать до 16 миллионов ennuikiller 15 лет назад 1
@ George2: В том-то и дело: физическая память имеет 32-разрядную ширину на 32-разрядных процессорах (собственно, Pentium и более новые 32-разрядные чипы могут адресовать 36-разрядные, IIRC). Мой комментарий должен был указать, что физический размер шины не может быть 24-битной шириной Rom 15 лет назад 1
@ennuikiller, я читаю книгу Windows Internals 5, и она нацелена на Windows Server 2008. Как вы думаете, в среде Windows Server 2008 физическая память адресована 24-разрядной? 15 лет назад 0
@ennuikiller, я думаю, что я спрашиваю, и Марк рассказывает о том, что физическая память представлена ​​24-битной, но вы говорите об уровне страницы - «В основном каждая физическая страница может адресовать до 16M», мы говорим об одном и том же ? 15 лет назад 0
Привет @Rom, спасибо за ваши комментарии. Я хочу обсудить, почему физическая память представлена ​​24-битной, как упомянуто Марком? Если физическая память внутренне представлена ​​24-разрядной, то, как вы рассчитали, во всей системе может быть адресовано только 16 М физической памяти. Любые комментарии? 15 лет назад 0