logo
AOM / Мельник А

4.2.3. Взаємодія процесора з пам'яттю в комп'ютері з простою системою команд

Відомий так званий парадокс пам'яті - пам'ять може мати малий об'єм, проте бути швидкою і задовольняти вимоги процесора щодо швидкодії, або мати відносно великий об'єм і бути повільною. Немає пам'яті відносно великої і, водночас, швидкої. Ставити за­раз питання про основну пам'ять, об'єм якої задовольняє системного програміста (сис-

145

темні програми) є, безперечно, нереальним завданням. Об'єму основної пам'яті завжди не вистачає і, можливо, не вистачатиме.

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

Важливим є той факт, що звернення процесора до пам'яті завжди локалізовано в не­великому діапазоні змін її адрес. Саме він і дозволяє застосовувати ієрархічну систему пам'яті, аби розв'язати невідповідність швидкодій процесора і системи пам'яті з одним рів­нем ієрархії. Між процесором і основною пам'яттю розташована кеш пам'ять (рис. 4.7) - це швидка буферна пам'ять невеликого об'єму. Кеш пам'ять працює на близькій тактовій частоті до процесора і не пригальмовує його роботу. Кеш (cacheу перекладі з англій­ської - тайник) лишається прозорою для програміста, тому що система команд процесо­ра, як правило, не містить команд роботи з кеш пам'яттю.

При поясненні роботи кеш пам'яті можна допустити, що процесор також не «ба­чить» кеш і генерує адреси пам'яті так, ніби кеш пам'яті не має. Проте кеш пам'ять, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запису, а коли треба, то надає процесору швидкі копії інформаційних кодів, які тимчасово збері­гає у власній робочій пам'яті. Якщо кеш пам'ять спроможна підмінити собою основну пам'ять (у понад 96-98 відсотків випадків), тоді вона за рахунок власних ресурсів задо­вольняє запит процесора. Процесор не пригальмовується і продовжує працювати на по­вній швидкості. Коли «підміна» основної пам'яті неможлива (менше від двох-чотирьох відсотків випадків), тоді кеш пам'ять залучає до роботи основну пам'ять, обмін з якою суттєво пригальмовує процесор.

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

146

рішення про спроможність задовольнити конкретний процесорний запит без залучення до обміну повільної основної пам'яті.

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

Для зберігання даних і команд використано розділені кеш пам'яті даних і команд Гар­вардської архітектури. В свою чергу, кеш пам'яті зв'язані з єдиною пам'яттю Принстон­ської архітектури. Ясно, що обмін в підсистемі "основна пам'ять - кеш пам'ять даних» є двостороннім, а в підсистемі «основна пам'ять - кеш пам'ять команд" - одностороннім.

Можна побачити, що наведена структура ефективно поєднала риси Принстонської та Гарвардської архітектур.

Надалі при розгляді принципів виконання команд в процесорі будемо розглядати і його взаємодію з основною пам'яттю через кеш пам'ять команд та даних.