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

Я читаю новую книгу, Windows Internals 5 об управлении памятью (глава 9 в разделе Physical Address Extension PAE). Это упоминается "32-разрядная система, представляет физические адреса внутренне с 24 битами" на странице 770. Я полностью смущен, и я думаю, что x86 физическая память должна быть также обращена 32-разрядным, и это - почему систему называют 32-разрядной системой.

Какие-либо идеи что не так?

5
задан 26.02.2011, 01:07

3 ответа

Вот больше деталей о том, что начальная загрузка/PAE означает из Главы 7 книги "В Windows 2000" David Solomon и Mark Russinovich.

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

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

Править: Как George говорит, Таким образом, 24 бита номеров страниц представляют 24+12=36 биты адресов байта. Это - расширение адреса по 32 бита нормального пространства.

2
ответ дан 07.12.2019, 18:13

Я читаю главу Расширения физического адреса (PAE) в выпуске Windows Internals Fourth (страницы 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 = 4Peta байты. Однако операционные системы не используют все эти 40 битов. Например, Windows только использует 24 из них, который ведет для составления адресуемого адресного пространства 2 ^ (24 + 12) = 2 ^ 36 = 64G байты.

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

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

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

1
ответ дан 07.12.2019, 18:13

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

0
ответ дан 07.12.2019, 18:13

Теги

Похожие вопросы