Sobes.tech
Middle

Разкажи ми за правилата за работа на кеша.

sobes.tech AI

Отговор от AI

Кешът съхранява копия на данни, за да ускори достъпа до тях. Основни правила:

  1. Правило за локалност (Locality of Reference):

    • Временна локалност: Ако даден елемент от данни е бил използван наскоро, вероятно ще бъде използван отново в близко бъдеще.
    • Пространствена локалност: Ако елемент от данни е бил използван, вероятно и съседните елементи също ще бъдат използвани скоро.
  2. Политики за заместване на кеша (Cache Replacement Policies): Определят кой блок данни да бъде изтрит, когато кешът е пълен и трябва да се освободи място за нови данни. Често срещани политики:

    • FIFO (First-In, First-Out): Изтрива най-"стария" блок.
    • LRU (Least Recently Used): Изтрива блока, който е бил използван най-малко наскоро.
    • LFU (Least Frequently Used): Изтрива блока, който е бил използван най-малко често.
  3. Политики за писане в кеша (Cache Writing Policies): Определят кога промените в кеша да се синхронизират с основната памет.

    • Write-Through: Данните се записват едновременно в кеша и в основната памет. Осигурява съгласуваност, но е по-бавно.
    • Write-Back: Данните първо се записват само в кеша. Основната памет се актуализира по-късно, когато блокът бъде изтрит от кеша или явно маркиран като "мръсен" (променен). По-бързо е, но изисква механизъм за проследяване на промените.
  4. Обработка на пропуски в кеша (Cache Miss Handling): Определят как системата реагира, когато заявените данни липсват в кеша.

    • Системата извлича данните от следващото ниво на паметта (например, от основната памет).
    • Данните се поставят в кеша (възможно чрез замяна на съществуващ блок), след което се предоставят на процеса, който ги е поискал.
  5. Правила за когерентност на кеша (Cache Coherence Rules): Важни в системи с множество процесори, където няколко процесора могат да имат копия на едни и същи данни в своите локални кешове. Осигуряват съгласуваност на данните между всички кешове. Примери за протоколи: MSI, MESI.

  6. Правила за инвалидиране/актуализиране (Cache Invalidation/Update): Когато данните се променят на едно място (например, в кеша на процесор), трябва да се инвалидира (да се направи невалиден) копието в другите кешове или да се актуализира, за да се избегне използването на остарели данни.