Чому в архітектурі x86 чому менше бітів для віртуального адресного простору, ніж фізичного?


11

Я читав цю статтю про 64-бітові обчислення, і вона згадує:

Наприклад, архітектура AMD64 станом на 2011 рік дозволяла 52 біт для фізичної пам'яті та 48 біт для віртуальної пам'яті

Я б подумав, що було б більше сенсу передбачити більше віртуальної пам'яті, ніж фізична пам'ять, так чому ж насправді навпаки?

Питання про бонус: Що означає "дозволити" 52 або 48 біт на 64-бітній архітектурі? Для чого використовуються інші біти?


Для x86 невикористані біти VA повинні бути розширенням знаку MSbit VA. (ARM AArch64 надає можливість дозволити апаратне ігнорування 8 MSbit, щоб їх було зручно використовувати для тегів. Процесор Azul Systems Vega - частина пристрою Java - за умови тегів використовувався 16 біт VA). У таблиці сторінок зарезервовані біти ПА повинні бути нульовими (насамперед для того, щоб програмне забезпечення не намагалося їх використовувати та порушувало сумісність з пізнішим обладнанням).
Пол А. Клейтон

Відповіді:


11

Ось зображення таблиці сторінок AMD64 (з посібника з програмування архітектури AMD, т. 2, ред. 3.23, 2013, стор. 132).

Таблиця сторінок AMD64 Longmode

"Природний" розмір сторінки в архітектурі AMD64 становить 2 12 = 4096 байт. (Є режими, де ви можете мати 2 21 = 2 Мбайт сторінки, але ми зараз їх ігноруємо.)

Кожен запис сторінки-таблиці (PTE) (або, залежно від рівня, який називається PDE, PDPE або PML4E) становить 64 біт = 2 3 байти. Тож є 2 9 записів на сторінці. Таким чином, 4 рівня таблиці сторінки отримують 4х9 + 12 = 48 біт віртуальної адреси за процес. Ходити по таблиці сторінки дорого, тому вони не розширяться до 5 або 6 рівнів, якщо / до тих пір, поки не буде попит споживачів.

Я не впевнений, чому вони вирішили обмежити 52-бітну фізичну адресу. Це може бути збільшено до 63 біт у майбутньому. За цінами жовтня 2013 року (близько 1 дол. США / Гігабіт на 4Gbit чіпи) коштуватиме понад 32 000 000,00 доларів США для побудови пам’яті 2 52 байтів, тому пройде деякий час, перш ніж виникне якийсь значний попит на збільшення обмеження фізичної адреси. Існують всілякі причини, чому ви хочете зберегти фізичні адреси якомога менше: наприклад, теги TLB та кешу повинні містити фізичні адреси, наприклад.

Не обов'язково назад, що є більше фізичної пам'яті, ніж віртуальної. Віртуальна пам’ять - це процес, а фізична пам'ять поділяється на всі процеси. Таким чином, сервер з 48-бітовими віртуальними адресами та 2 52 байтами пам'яті може підтримувати 16 одночасних процесів і все ще гарантує, що не потрібно міняти місцями.


Можливо, варто відзначити, що архітектори комп’ютера навчилися вимагати верхніх бітів, які використовуються апаратними засобами, як правило, шляхом розширення знаків, щоб відповідати загальному використанню негативних адрес для ОС ("Для чого використовуються інші біти?"). Крім того, за допомогою кешування вхідних файлів Ln більшу частину часу не потрібно повністю проходити 5-рівневою таблицею. Біти PTE 52:62 зарезервовані для програмного забезпечення, тому їх не можна використовувати для фізичних адрес, не порушуючи сумісності, обмежуючи сторінки 4KiB 52-бітним ПА. Також Лінус Торвальдс знаменито вирує проти PAE (VA> PA, схоже, спрощує "традиційний" дизайн ОС).
Пол А. Клейтон

"Це може бути збільшено до 63 біт у майбутньому." Ну, ні, не без зміни структури таблиці сторінок. Наразі, біти 52 до 62 PxE зарезервовані для використання операційної системи. І ОС використовують їх (Windows використовує це поле для "індексу списку робочих наборів"), тому архітектори процесорів не вільні розширювати в них поле PFN. Звичайно, можливо, у майбутньому буде такий варіант, що нагадує ПАЕ, який міняв би структуру ПТ так, щоб забезпечити більше біт PFN, але це було б суттєвою архітектурною зміною.
Джеймі Ханрахан

3

Кілька моментів, які слід врахувати, фізична оперативна пам’ять дорога. Звичайно, 16 Гб дешевше, коли 4 Гб було лише кілька років тому, але 2 ^ 64 (16 екзабайтів) смішно великі.

Таким чином, розширення AMD на x86 для x64 "дозволило" до 2 ^ 52, обмеживши регістри . Це робить дві речі, знижує вартість процесорів і покращує продуктивність. Більше реєстрів, які не використовуються, означає, що є багато порожнього простору, який ще потрібно враховувати під час операцій.

І, якщо ви не хлопець з математики ... Різниця між трьома розмірами величезна! Я не гуру математики, але за десятковою кількістю 52 біт це приблизно .02% від 64 біт. 48 біт - це 6% від 52. (хтось перевіряє мою математику?)

Що стосується того, чому AMD дозволив більше фізичної оперативної пам’яті, ніж віртуальної, у статті йдеться про те, що AMD думав про сервери. Сервери потребують великої кількості фізичної ОЗУ. Віртуальна ОЗУ занадто повільна, щоб підтримувати середні серверні програми для сотень чи тисяч співробітників.

Мої власні думки: Ми покинули час, коли оперативна пам’ять була крихітною, і жорсткі диски повинні були підтримувати оперативну пам’ять. Ціна в оперативній пам’яті впала до точки, коли середня людина може вкласти більше, ніж достатньо оперативної пам’яті. Візьміть типові програми, такі як Office, для якого потрібно 1-2 Гб оперативної пам’яті. Мій комп'ютер 7 років тому міг це впоратися. Хоча зі швидкістю читання і запису на диск, я б сподівався, що мені ніколи не довелося отримати 7GB-гігабайт з віртуальної пам'яті (використовуючи стару філософію PM * 2.5).

Я також можу лише припустити, що AMD хотів залишити місце для реєстрів, які використовують фізичні регістри ОЗУ, як ОЗУ на інтегрованих графічних процесорах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.