ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6788
Скачиваний: 22
376
Подібним чином збільшення ємності кеш пам'яті зменшує кількість ємнісних промахів, але збільшує час звернення при попаданні.
Для зменшення кількості конфліктних промахів потрібно збільшувати асоціативність кеш пам'яті, але, як показує практика, більша 4 кількість блоків в одному секторі кеш пам'яті з використанням частково-асоціативного відображення збільшує затрати обладнання без видимого виграшу, та збільшує час звернення при попаданні.
Часто для суттєвого зменшення кількості конфліктних промахів, в першу чергу для кеш пам'яті з прямим відображенням, використовують додаткову кеш пам'ять малого розміру (8-16 блоків), в якій зберігаються останні заміщені в кеш пам'яті блоки.
Для зменшення значення коефіцієнта промахів використовується попередня вибірка з основної пам'яті блоків, до яких може бути звернення. При цьому можуть застосовуватись як апаратні, так і програмні засоби попередньої вибірки. При використанні апаратних засобів зазвичай при промаху додатково до вибірки відсутнього в кеш пам'яті блоку вибирається наступний, або кілька наступних блоків. Це дає виграш, оскільки процесор не чекає на попередньо вибраний блок. Такий підхід може бути використаний як до кеш пам'яті даних, так і команд, але є більш ефективним для кеш пам'яті команд. При використанні програмних засобів до програми, або до компілятора, додаються спеціальні команди попередньої вибірки.
Для зменшення значення коефіцієнта промахів використовуються також спеціальні підходи по оптимізації компіляторів, зокрема об'єднання даних та команд у блоки, об'єднання циклів, черговість циклів, злиття масивів і т. д.
В останніх комп'ютерах для підвищення ефективності кеш пам'яті вводяться більш складні механізми її функціонування за рахунок ускладнення контролера та організації внутрішньої пам'яті. Це, зокрема, створення так званої неблокуючої кеш пам'яті, яка при наявності промаху продовжує взаємодію з процесором, використовуючи механізм невпорядкованого виконання або спеціальні розряди в асоціативних регістрах, будучи при цьому багато блоковою, та реалізація пріоритетності читання над записом.
10.3. Організація обміну інформацією між основною та зовнішньою пам'яттю
10.3.1. Статичний та динамічний розподіл пам'яті
Сучасні комп'ютерні системи є багатопрограмними. В них одночасно виконується велика кількість різних програм. Відповідно й 'їх операційні системи є орієнтованими на забезпечення багатопрограмної роботи.
Через обмежену ємність основної пам'яті, а також розміщення в ній, крім програм користувача, програм операційної системи, всі програми в багатопрограмних комп'ютерних системах не можуть розміщуватись в основній пам'яті.
Але в цьому немає великої необхідності, так як в певний момент часу виконується не вся програма, а певна її частина. Тому основна пам'ять використовується для зберігання активних частин виконуваних програм, а решта інформації зберігається в зовнішній пам'яті. При цьому може виникнути необхідність заміни тих частин виконуваних програм, які стали неактивними. Звідси випливає потреба розподілу пам'яті між програмами.
377
Якщо вся необхідна основна пам'ять для програм призначається до початку їх виконання - це статичний розподіл пам'яті. Цей тип розподілу основної пам'яті використовувався в перших комп'ютерах. Кожний програміст наперед замовляв потрібну йому ємність основної пам'яті. Зрозуміло, що статичний розподіл основної пам'яті не є досконалим. З одного боку, неефективно використовується пам'ять, так як важко наперед передбачити потрібну ємність основної пам'яті, а з іншого боку, на програміста покладається проблема заміни інформації в основній пам'яті.
В сучасних багатопрограмних комп'ютерних системах використовується динамічний розподіл пам'яті, відповідно до якого основна пам'ять розподіляється між програмами під час 'їх виконання. Для цього при підготовці цільових програм використовуються умовні адреси, а в процесі виконання програми комп'ютер перетворює умовні адреси в виконавчі, виділяючи програмі місце в пам'яті. Найчастіше це здійснюється з використанням апаратних засобів, щоб прискорити звернення до пам'яті. Існує декілька способів динамічного розподілу пам'яті. Далі розглянемо два методи динамічного розподілу основної пам'яті: за допомогою базових адрес та сторінкової організації.
10.3.2. Розподіл основної пам'яті за допомогою базових адрес
Відповідно до методу динамічного розподілу пам'яті за допомогою базових адрес кожній програмі виділяється деяка область основної пам'яті, і, крім того, програма пишеться з використанням умовних адрес. Для цього кожній програмі ставиться у відповідність базова адреса, що встановлюється операційною системою. При всіх зверненнях до пам'яті базова адреса додається на суматорі CM (рис. 10.15) до умовної адреси, визначеної програмою, утворюючи виконавчу адресу пам'яті.
Як тільки деяка програма стає активною, операційна система знаходить для неї місце в пам'яті і встановлює в регістрі базової адреси відповідне число (базову адресу). Недоліки розподілу пам'яті за допомогою базових адрес:
-
необхідність розміщувати програму в послідовних комірках основної пам'яті, що призводить до неефективного її використання;
-
необхідність вводити програми в основну пам'ять повністю (або ті її частини, в яких використовується одна базова адреса);
378
■ фрагментація пам'яті, тобто її.поділ на використовувані і не використовувані частини (іншими словами - наявність в пам'яті дірок).
Як приклад на рис. 10.16а наведено розподіл основної пам'яті між трьома програмами А, В, С в деякий момент часу. Після завершення виконання програми В (рис. 10.16b) в пам'яті вивільнилося місце, яке разом з областю пам'яті D (вільні області В та D виділені штриховими лініями) є більшим за розміром, ніж потрібно програмі Е, однак ця програма не може бути записаною до основної пам'яті, оскільки вона є більшою за кожну з областей В та Е, які розміщені в пам'яті не підряд.
Виходом з цієї ситуації є, наприклад, переміщення програми із області С ближче до області А, що дозволяє вивільнити місце програмі Е, як це показано, наприклад, на рис. 10.17а.
Однак це пов'язано з втратами часу на переміщення програми, а часто і з необхідністю редагування програми і завантаження її заново, оскільки змінилися адреси.
Іншим варіантом є чекання, доки не звільниться область необхідної ємності, як це показано на рис. 10.17b, коли завершилось виконання програми А і з'явилось достатньо місця для програми Е. Виходить, що програма чекає своєї черги на завантаження до основної пам'яті, хоча є ділянки пам'яті великого розміру, але вони розміщені в різних областях основної пам'яті.
Таким чином, при використанні описаного способу розподілу в основній пам'яті завжди будуть наявні дірки, які в сумі можуть займати значну частину її ємності.
Відмічені недоліки методу динамічного розподілу пам'яті за допомогою базових адрес відсутні в другого методу динамічного розподілу пам'яті, а саме в віртуальній пам'яті з сторінковою організацією.
379
10.3.3. Віртуальна пам'ять
Принцип віртуальної пам'яті передбачає, що користувач при підготовці програми має справу не з багаторівневою фізичною основною пам'яттю, що є в комп'ютері і має фіксовану ємність, а з віртуальною (уявною) однорівневою пам'яттю, ємність якої дорівнює всьому адресному простору комп'ютера, визначеному розміром адрес в регістрі адреси.
Користувач розпоряджається всім адресним простором комп'ютера, незалежно від ємності основної пам'яті і вимог до неї з боку інших користувачів. На всіх етапах підготовки програма представлена в віртуальних (умовних) адресах. При виконанні програми віртуальні адреси перетворюються у фізичні. Користувач не знає, де знаходиться його програма - в основній чи в зовнішній пам'яті, і в якій області. Це встановлюється автоматично в ході обчислювального процесу, тобто шляхом динамічного розподілу пам'яті. При цьому, оскільки для виконання програми необхідно, щоб та частина активної інформації, на яку вказують віртуальні адреси, знаходилась в основній пам'яті, то в процесі виконання програми необхідно перетворювати віртуальні адреси в фізичні та переписувати активну інформацію до основної пам'яті.
За своєю суттю віртуалізація пам'яті - це спосіб реалізації ієрархічної організації пам'яті на рівні взаємодії основної та зовнішньої пам'яті.
Віртуальна організація пам'яті дозволяє здійснювати керування пам'яттю, коли виконується паралельно багато програм, з забезпеченням захисту даних та наданням в розпорядження кожної програми всього адресного простору комп'ютера.
При віртуальній організації пам'яті адреси, які формуються процесором, є віртуальними. Необхідним атрибутом віртуальної пам'яті є зовнішня пам'ять, яка здатна зберігати всю програму повністю.
Розглянемо приклад. Нехай процесор посилає до основної пам'яті віртуальну адресу 520 004 096, причому ємність основної пам'яті рівна 512МБ, а ємність зовнішньої пам'яті рівна 80 ГБ (рис. 10.18).
В комп'ютерах без застосування віртуальної пам'яті використовується пряма адресація. Тому звертання за вказаною адресою викликало б програмне переривання з таким повідомленням: "Адресована неіснуюча область пам'яті", оскільки вказана адреса виходить за межі основної пам'яті. В комп'ютерах з віртуальною пам'яттю виконується така послідовність кроків:
380
-
віртуальна адреса перетворюється у фізичну;
-
фізична адреса подається до фізичної пам'яті (основної або зовнішньої);
-
в фізичній пам'яті знаходиться відповідна фізичній адресі комірка;
-
до цієї комірки записується, або з неї зчитується, дане, причому, якщо ця комірка знаходиться в зовнішній пам'яті, то звернення до неї здійснюється через основну пам'ять шляхом перезапису інформації з зовнішньої пам'яті до основної.
10.3.4. Сторінкова організація пам'яті
10.3.4.1. Основні правила сторінкової організації пам'яті
Для спрощення перетворення віртуальних адресів в фізичні і позбавлення від фрагментації пам'яті, а крім того для прискорення обміну між основною та зовнішньою пам'яттю та вирішення питань захисту пам'яті, а також з метою реалізації принципу віртуальної пам'яті, використовується сторінкова організація пам'яті. Основні правила сторінкової організації пам'яті, які забезпечують ефективну взаємодію основної та зовнішньої пам'яті, є наступними:
-
Програми представляють в віртуальних (умовних) адресах віртуальної однорів-невої пам'яті, ємність якої дорівнює всьому адресному простору комп'ютера, визначеному розміром адрес в регістрі адреси.
-
Віртуальна пам'ять та фізична (основна та зовнішня) пам'ять розбиваються на сторінки рівного об'єму.
■ Сторінка - це деяка множина послідовно розміщених комірок пам'яті.
-
Сторінкам присвоюються номери.
-
Кожна фізична сторінка здатна зберігати вміст однієї віртуальної сторінки.
-
Нумерація комірок в обох сторінках (віртуальних і фізичних) однакова.
-
Базовою порцією інформації, яка переміщується між основною та зовнішньою пам'яттю, є вміст однієї сторінки.
-
Ідентичність вмісту відповідних сторінок основної пам'яті і зовнішньої пам'яті забезпечується використанням спеціальних методів оновлення вмісту сторінок основної пам'яті.
-
Заміщення вмісту сторінок в основній пам'яті вмістом сторінок з зовнішньої пам'яті здійснюється за правилами, які називають алгоритмом заміщення.
-
Взаємодія між сторінками віртуальної і фізичної пам'яті задається сторінковою таблицею.
-
Між різними процесами (програмами) розподіляється фізична (а не віртуальна) пам'ять.
■ Основна пам'ять динамічно розподіляється між різними процесами (програмами) посторінково.
Переваги сторінкової організації пам'яті:
-
не вимагаються додаткові переміщення програм в пам'яті, пов'язані з потребою звільнення місця через фрагментацію;
-
скорочується кількість пересилань між основною та зовнішньою пам'яттю, так як вміст сторінки завантажується лише при необхідності;