Файл: Мельник А. Архітектура комп\'ютера.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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.