Разкажи ми за правилата за работа на кеша.
sobes.tech AI
Отговор от AI
Кешът съхранява копия на данни, за да ускори достъпа до тях. Основни правила:
-
Правило за локалност (Locality of Reference):
- Временна локалност: Ако даден елемент от данни е бил използван наскоро, вероятно ще бъде използван отново в близко бъдеще.
- Пространствена локалност: Ако елемент от данни е бил използван, вероятно и съседните елементи също ще бъдат използвани скоро.
-
Политики за заместване на кеша (Cache Replacement Policies): Определят кой блок данни да бъде изтрит, когато кешът е пълен и трябва да се освободи място за нови данни. Често срещани политики:
- FIFO (First-In, First-Out): Изтрива най-"стария" блок.
- LRU (Least Recently Used): Изтрива блока, който е бил използван най-малко наскоро.
- LFU (Least Frequently Used): Изтрива блока, който е бил използван най-малко често.
-
Политики за писане в кеша (Cache Writing Policies): Определят кога промените в кеша да се синхронизират с основната памет.
- Write-Through: Данните се записват едновременно в кеша и в основната памет. Осигурява съгласуваност, но е по-бавно.
- Write-Back: Данните първо се записват само в кеша. Основната памет се актуализира по-късно, когато блокът бъде изтрит от кеша или явно маркиран като "мръсен" (променен). По-бързо е, но изисква механизъм за проследяване на промените.
-
Обработка на пропуски в кеша (Cache Miss Handling): Определят как системата реагира, когато заявените данни липсват в кеша.
- Системата извлича данните от следващото ниво на паметта (например, от основната памет).
- Данните се поставят в кеша (възможно чрез замяна на съществуващ блок), след което се предоставят на процеса, който ги е поискал.
-
Правила за когерентност на кеша (Cache Coherence Rules): Важни в системи с множество процесори, където няколко процесора могат да имат копия на едни и същи данни в своите локални кешове. Осигуряват съгласуваност на данните между всички кешове. Примери за протоколи: MSI, MESI.
-
Правила за инвалидиране/актуализиране (Cache Invalidation/Update): Когато данните се променят на едно място (например, в кеша на процесор), трябва да се инвалидира (да се направи невалиден) копието в другите кешове или да се актуализира, за да се избегне използването на остарели данни.