ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6787
Скачиваний: 22
381
■ зменшуються вимоги до ємності основної пам'яті, так як до неї завантажуються лише активні частини програми.
Про сторінкову організацію пам'яті говорять, що вона є прозорою, тобто програміст може працювати, не звертаючи уваги на факт її існування.
10.3.4.2. Реалізація сторінкової організації пам'яті
Відповідно до наведених вище правил сторінкової організації пам'яті спочатку потрібно розділити віртуальну та фізичну пам'ять на сторінки рівного об'єму, присвоїти цим сторінкам номери, та встановити відповідність між цими сторінками, як це для прикладу показано на рис. 10.19, де об'єм сторінки вибрано рівним 4КБ, а відповідні віртуальним сторінкам А, В, С, D фізичні сторінки розміщені як в основній, так і в зовнішній пам'яті. При цьому відразу необхідно зауважити, що довільній віртуальній сторінці може відповідати довільна фізична сторінка, тобто відповідність між сторінками є повністю асоціативною.
Нехай віртуальна пам'ять має ємність V=2V слів, та поділена на 2к віртуальних сторінок, кожна з яких має об'єм 2s слів, тобто розрядність віртуальної адреси v = k + s, де k - адреса (номер) віртуальної сторінки, s - номер слова в сторінці. Тоді формат віртуальної адреси буде мати вид, представлений на рис. 10.20.
Аналогічно, нехай основна пам'ять має ємність М=2т слів, та поділена на 2і віртуальних сторінок, кожна з яких має об'єм 2s слів, тобто розрядність адреси основної пам'яті m = 1 + s, де 1 - адреса (номер) сторінки основної пам'яті, s - номер слова в сторінці. Тоді формат адреси основної пам'яті буде мати вид, представлений на рис. 10.21.
382
Подібним чином, нехай зовнішня пам'ять має ємність Е=2е слів, та поділена на 2Р віртуальних сторінок, кожна з яких має об'єм 2sслів, тобто розрядність адреси основної пам'яті e = р + s, де р - адреса (номер) сторінки зовнішньої пам'яті, s - номер слова в сторінці. Тоді формат адреси зовнішньої пам'яті буде мати вид, представлений на рис. 10.22.
Порядок перетворення адрес (номерів) віртуальних сторінок у фізичні задається у вигляді сторінкової таблиці, що вказує відповідність віртуальних і фізичних сторінок. Сторінкова таблиця формується, і при необхідності змінюється, операційною системою.
Процедура звернення до пам'яті така: номер віртуальної сторінки вибирається з віртуальної адреси і використовується як вхід в сторінкову таблицю, яка вказує номер фізичної сторінки (рис. 10.23).
Слово сторінкової таблиці складається з трьох основних полів (про допоміжні поля буде сказано пізніше):
■ перше поле, яке займає один
розряд, вказує тип пам'яті. Коли в цьому
полі запи
сано 0, це говорить про
те, що сторінка відсутня в основній
пам'яті. Коли записано 1 - це
говорить
про те, що сторінка наявна в основній
пам'яті. Цей розряд зазвичай
називають
розрядом наявності (РН,
або valid bit
V).
■ адреса сторінки в основній пам'яті (коли РН = 1). Якщо сторінка знаходиться в зовнішній пам'яті - це поле ігнорується.
■ адреса сторінки в зовнішній пам'яті
(коли РН = 0). За цією адресою вибирають
вміст
сторінки із зовнішньої пам'яті та
загружають до основної пам'яті. Крім
того, ро
биться відповідний запис
в сторінковій таблиці, а після використання
ця сторінка буде
повернута назад в
зовнішню пам'ять.
383
Перетворення віртуальної адреси у фізичну виконується так, як показано на рис. 10.24. Тобто номер віртуальної сторінки за допомогою сторінкової таблиці замінюється на номер фізичної сторінки, а номер слова в межах сторінки залишається без змін, причому залежно від значення розряду наявності (РН) формується або адреса основної пам'яті, або адреса зовнішньої пам'яті.
Перетворення віртуальної адреси у фізичну тут здійснюється відповідно до рис. 10.26.
Вище було розглянуто питання розподілу пам'яті, коли виконується лише одна програма. Насправді сучасні комп'ютери є багатопрограмними. В цьому випадку при сторінковій організації пам'яті кожна програма має свою віртуальну пам'ять з адресацією від нуля і до максимальної адреси, яка допускається розрядною сіткою. Так як написання різних програм проводиться незалежно одна від одної, вони можуть виконуватись в одних і тих самих віртуальних адресах, які повинні належати до різних фізичних сторінок. Отже, сторінкова таблиця повинна враховувати також належність віртуальної сторінки різним програмам. Тобто номер фізичної сторінки є функцією двох змінних - номера віртуальної сторінки, та номера програми, як це показано на рис. 10.25. Іншими словами, для кожної програми має бути своя сторінкова таблиця.
384
10.3.4.3. Апаратна реалізація сторінкової таблиці
Вибір слова з пам'яті при сторінковій організації вимагає двох циклів звернення: спочатку до сторінкової таблиці, а потім до фізичної адреси пам'яті. Якщо сторінкова таблиця зберігається в основній пам'яті, це в два рази сповільнює вибірку слова. Тому часто сторінкову таблицю зберігають в швидкій пам'яті невеликої ємності. Склад і можливості цієї пам'яті залежать від вибраного правила побудови сторінкової таблиці:
-
кожній віртуальній сторінці відповідає одна стрічка сторінкової таблиці. В стрічці є номер фізичної сторінки, який зберігає дану віртуальну сторінку;
-
кожній фізичній сторінці відповідає одна стрічка сторінкової таблиці, що зберігається в даній фізичній сторінці.
В першій структурі входом в сторінкову таблицю є номер віртуальної сторінки і номер програми, як це показано на рис рис. 10.26, і вона будується як пам'ять з довільним доступом на основі мікросхем напівпровідникової пам'яті.
Кількість програм та віртуальних сторінок може бути досить великою. Наприклад, при використанні 32-розрядної адреси та сторінок об'ємом 16КБ, кількість записів в сторінковій таблиці для однієї програми буде рівною 232/214 = 218 = 256К. Тоді об'єм сторінкової таблиці буде рівним (враховуючи формат кожного запису) 256К*4Б = 1 МБ, що складає 64 сторінки основної пам'яті, причому і цю цифру ще потрібно помножити на кількість програм. Тобто ємність пам'яті сторінкової таблиці такого типу також буде великою, причому ця пам'ять буде повільною. Крім того, в дійсності необхідно зберігати значно менше записів, так як записи є малорозрядними.
В деяких комп'ютерах в цій пам'яті зберігається лише одна сторінкова таблиця, яка належить активній програмі. Решта сторінкових таблиць зберігаються в основній пам'яті. При зміні циклу активності операційна система відправляє в основну пам'ять дану сторінкову таблицю і завантажує нову. Крім того, сторінкова таблиця також може бути поділена на сторінки, тобто можуть бути використані багаторівневі сторінкові таблиці, як це показано на рис. 10.27.
385
Тут спочатку іде звернення до сторінкової таблиці першого рівня, а з неї до сторінкової таблиці другого рівня. Як видно з рисунка, взамін однієї сторінкової таблиці об'ємом 2м записів (кількість записів рівна кількості сторінок в пам'яті), тут потрібна одна сторінкова таблиця першого рівня з 1024 записами, та 1024 сторінкові таблиці другого рівня з такою ж кількістю записів. Однак при цьому додається ще одне звернення до пам'яті.
В другій структурі довжина сторінкової таблиці визначається лише кількістю фізичних сторінок в основній пам'яті і не залежить від числа цільових програм. Ємність пам'яті зменшується, проте ускладнюється структура - застосовується асоціативна пам'ять, що дозволяє вибирати дані за 'їх змістом, а не за місцезнаходженням. Але, як було показано вище, кількість фізичних сторінок в сучасних комп'ютерах є досить великою, що робить проблематичним застосування асоціативної сторінкової таблиці. В зв'язку з цим, в сучасних комп'ютерах поступають наступним чином: виділяють сторінковій таблиці область в основній пам'яті, хоча це приводить до подвоєння часу звернення, та використовують додаткову кеш пам'ять, яку називають буфером перетворення з передісторією (TLB - Translation Look-aside Buffer). Використання TLB дозволяє зменшити час перетворення віртуальних адрес у фізичні. Він будується як кеш пам'ять та може бути організованим за принципом прямого, асоціативного та частково-асоціативного відображення. При кожному перетворенні номера віртуальної сторінки в номер фізичної сторінки результат заноситься в TLB: номер фізичної сторінки до асоціативного регістра, а номер віртуальної сторінки - до регістрів тегів. Таким чином, до TLB попадають результати декількох останніх операцій перетворення адрес. При кожному зверненні до основної пам'яті спочатку потрібна віртуальна сторінка шукається в TLB, і при попаданні номер відповідної фізичної сторінки береться з цього буфера. Якщо зафіксовано промах, то процедура перетворення адрес здійснюється за допомогою сторінкової таблиці, яка зберігається в основній пам'яті, після чого номер віртуальної та фізичної сторінок заноситься до TLB. Структура TLB, побудованої як повністю асоціативна кеш пам'ять, наведена на рис. 10.28.