асоціативно, ті будь-який сектор з ОП може бути поміщений в будь сектор кеша. Таким чином, в процесі роботи АЛУ звертається в пошуках чергової команди до ОП, в результаті чого, в кеш завантажується (у разі відсутність там блоку, що містить цю команду), цілий сектор інформації з ОП, причому за принципом локальності, за рахунок цього досягається значне збільшення швидкодії системи.
Ієрархічна модель кеш-пам'яті
Як правило, кеш-пам'ять має багаторівневу архітектуру. Наприклад, в комп'ютері з 32 Кбайт внутрішньої (у ядрі ЦП) і 1 Мбайт зовнішньої (в корпусі ЦП або на системній платі) кеш-пам'яті перша буде вважатися кеш-пам'яттю 1-го рівня (L1), а друга - кеш-пам'яттю 2-го рівня (L2). У сучасних серверних системах кількість рівнів кеш-пам'яті може доходити до чотирьох, хоча найбільш часто використовується двох-або трирівнева схема. p> У деяких процесорних архітектур кеш-пам'ять 1-го рівня розділена на кеш команд (Instruction Cache, I-cache) і кеш даних (Data Cache, D-cache), причому необов'язково однакових розмірів. З точки зору схемотехніки простіше і дешевше проектувати роздільні I-cache і D-cache: вибірку команд проводить I-box, а вибірку даних - Е-box і F-box, хоча в обох випадках задіюються А-box і С-box. Всі ці блоки великі, і забезпечити їм одночасний і швидкий доступ до одного кешу проблематично. Крім того, це неминуче вимагало б збільшення кількості портів доступу, що також ускладнює завдання проектування. p> Так як I-cache і D-cache повинні забезпечувати дуже низькі затримки при доступі (це справедливо для будь-якого кеша L1), доводиться жертвувати їх обсягом - зазвичай він становить від 16 до 32 Кбайт. Адже чим менше розмір кешу, тим легше домогтися низьких затримок при доступі. p> Кеш-пам'ять 2-го рівня, як правило, уніфікована, тобто може містити як команди, так і дані. Якщо вона вбудована в ядро ​​ЦП, то говорять про S-cache (Secondary Cache, вторинний кеш), в іншому випадку - про B-cache (Backup Cache, резервний кеш). У сучасних серверних ЦП обсяг S-cache становить від одного до декількох мегабайт, a B-cache - до 64 Мбайт. Якщо дизайн ЦП передбачає наявність вбудованої кеш-пам'яті 3-го рівня, то її іменують T-cache (Ternary Cache, третинний кеш). Як правило, кожний наступний рівень кеш-пам'яті повільніше, але більше попереднього за обсягом. Якщо в системі присутній B-cache (як останній рівень моделі кеш-пам'яті), то він може контролюватися як ЦП, так і набором системної логіки. p> Якщо в момент виконання деякої команди в регістрах не опиниться даних для неї, то вони будуть затребувані з найближчого рівня кеш-пам'яті, тобто з D-cache. У разі їх відсутності в D-Cache запит направляється в S-cache і т. д. У гіршому випадку дані будуть доставлені безпосередньо з пам'яті. Втім, можливий і ще більш сумний варіант, коли підсистема управління віртуальною пам'яттю операційної системи (ОС) встигає витіснити їх у файл підкачки на жорсткий диск. У разі доставки з оперативної пам'яті втрати часу на отримання потрібних даних можуть складати від десятків до сотень тактів ЦП, а в разі знаходження даних на жорсткому диску мова вже може йти про мільйони тактів. br/>
Асоціативність кеш-пам'яті
Одна з фундаментальних характеристик кеш-пам'яті - рівень асоціативності - відображає її логічну сегментацію. Справа в тому, що послідовний перебір всіх рядків кеша в пошуках необхідних даних зажадав би десятків тактів і звів би немає весь виграш від використання вбудованої в ЦП пам'яті. Тому осередки ОЗУ жорстко прив'язуються до рядків кеш-пам'яті (у кожному рядку можуть бути дані з фіксованого набору адрес), що значно скорочує час пошуку. З кожною клітинкою ОЗУ може бути пов'язано більше одного рядка кеш-пам'яті: наприклад, n-канальна асоціативність (n-way set associative) позначає, що інформація за деякою адресою оперативної пам'яті може зберігатися в п місць кеш-пам'яті. p> Вибір місця може проводитися за різними алгоритмами, серед яких найчастіше використовуються принципи заміщення LRU (Least Recently Used, заміщається запис, запитана в останній раз найбільш давно) і LFU (Least Frequently Used, запис, найменш часто запитувана), хоча існують і модифікації цих принципів. Наприклад, повністю асоціативна кешпамять (fully associative), в якої інформація, що знаходиться за довільним адресою в оперативній пам'яті, може бути розміщена у довільній рядку. Інший варіант - пряме відображення (Direct mapping), при якому інформація, яка знаходиться за довільним адресою в оперативній пам'яті, може бути розміщена тільки в одному місці кеш-пам'яті. Природно, цей варіант забезпечує найбільшу швидкодію, тому що при перевірці наявності інформації контролеру доведеться "зазирнути" лише в один рядок кеша, але і найменш ефективний, оскільки при записі контролер не буде вибирати "Оптимальне" місце. При однаково...