logo
AOM / Мельник А

10.2.3. Забезпечення ідентичності вмісту блоків кеш пам'яті і основної пам'яті

Як ми вже бачили вище, в процесі обчислень процесор не лише зчитує з кеш пам'яті наявну інформацію, але і записує нову, оновлюючи тим самим вміст блоків кеш пам яті, які є копіями вмісту відповідних блоків основної пам'яті. Виникає ситуація, коли вміст блоку кеш пам яті та відповідного блоку основної пам яті перестають співпадати, що створює проблему необхідності фіксування та усунення цього неспівпадіння шляхом оновлення вмісту комірок основної пам'яті Для подолання цієї проблеми в комп'ютерах з кеш пам яттю використовуються два методи оновлення вмісту блоків основної пам яті: метод наскрізного запису і метод зворотного запису

За методом наскрізного запису перш за все оновлюється вміст комірки основної пам'яті. Якщо в кеш пам яті існує копія вмісту цієї комірки, то вона також оновлюється. Якщо ж в кеш пам'яті відсутня потрібна копія, то, або з основної пам'яті в кеш пам'ять пересилається вміст блоку, в якому знаходиться оновлене слово (наскрізний запис з ві­дображенням), або цього не робиться (наскрізний запис без відображення).

366

Метод наскрізного запису, про який вище вже згадувалось, передбачає одночасний запис операнда в комірку з тією ж адресою як кеш, так і основної пам'яті. Основна пе­ревага методу наскрізного запису полягає в тому, що коли вміст деякого блоку в кеш пам яті має бути заміщений, то його можна не повертати в основну пам'ять, оскільки його копія там вже є. Метод достатньо простий в реалізації. На жаль, ефект від викорис­тання кеш пам'яті (скорочення часу доступу) стосовно операцій запису тут відсутній. Даний метод застосований в мікропроцесорах i486 фірми Intel.

Певний виграш дає модифікація методу наскрізного запису, відома як метод буфе-ризованого наскрізного запису. Інформація спочатку записується в кеш пам ять і в спе­ціальний буфер, що працює за схемою FIFO.Запис в основну пам'ять проводиться вже з буфера, а процесор, не чекаючи її закінчення, може відразу ж продовжувати свою ро­боту. Звичайно, відповідна логіка керування повинна піклуватися про те, щоб своєчасно очищувати заповнений буфер. При використанні буферизації процесор повністю звіль­няється від роботи з основною пам'яттю

Згідно з методом зворотного запису, слово заноситься лише в кеш пам ять. Якщо вмісту потрібного блоку в кеш пам'яті немає, то він спочатку пересилається з основної пам яті, після чого запис все одно виконується виключно в кеш пам'ять. При заміщенні вмісту блоку його попередній вміст необхідно заздалегідь переслати у відповідне місце основної пам'яті. Для методу зворотного запису, на відміну від методу наскрізного за­пису, характерним є те, що при кожному зчитуванні з основної пам яті здійснюються два пересилання вмісту блоків між основною і кеш пам'яттю

Ефективність зворотного запису підвищується при використанні біта модифікації. Відповідно до методу зворотного запису з бітом модифікації, коли в якомусь блоці кеш пам яті проводиться заміщення вмісту, встановлюється пов'язаний з цим блоком біт мо­дифікації (прапорець). При заміщенні вміст блоку з кеш пам яті переписується в осно­вну пам'ять лише тоді, коли його біт модифікації встановлений в 1. Такий метод вико­ристовується, наприклад, в мікропроцесорах класу i486 і Pentiumфірми Cyrix.

В середньому зворотний запис на 10 % ефективніший за наскрізний запис, але для його реалізації потрібні додаткові апаратні витрати. З іншого боку, практика показує, що операції запису складають менше 30 % від загальної кількості звернень до пам яті. Таким чином, відмінність за швидкодією між розглянутими методами невелика

Крім розглянутих вище методів забезпечення ідентичності вмісту блоків кеш пам яті та основної пам'яті існують й інші методи, пов'язані з тим, що пристрої введення/ви­ведення можуть безпосередньо обмінюватися інформацією з основною пам яттю без участі процесора, а значить і кеш пам'яті. Тобто в основну пам ять з пристрою введення, минувши процесор, заноситься нова інформація і невірною стає копія, що зберігається в кеш пам'яті. Запобігти подібній неузгодженості дозволяють два підходи: забезпечити введення будь-якої інформації в основну пам'ять з проведенням відповідних змін в кеш пам яті, або здійснювати доступ до основної пам'яті лише через кеш пам'ять