Кохерентност на кеша

Кешът може да се използва за подобряване на производителността при достъп до даден ресурс. Когато има няколко такива кеша за един и същ ресурс, както е показано на снимката, това може да доведе до проблеми. Кохерентност на кеша или Кохерентност на кеша се отнася до редица начини да се гарантира, че всички кешове на ресурса имат едни и същи данни и че данните в кешовете имат смисъл (нарича се цялостност на данните). Кохерентността на кеша е специален случай на кохерентността на паметта.

Възможно е да възникнат проблеми, ако има много кешове на общ ресурс на паметта, тъй като данните в кеша може вече да нямат смисъл или един кеш може вече да не съдържа същите данни като останалите. Често срещан случай, при който възниква проблемът, е кешът на процесорите в многопроцесорна система. Както може да се види на фигурата, ако горният клиент има копие на блок от паметта от предишно четене и долният клиент промени този блок от паметта, горният клиент може да остане с невалиден кеш на паметта,без да знае. Кохерентността на кеша има за цел да управлява такива конфликти и да поддържа съгласуваност между кеша и паметта.

Множество кешове на споделен ресурсZoom
Множество кешове на споделен ресурс

Определение

Кохерентността определя поведението на четенето и записването на едно и също място в паметта. Кешовете са кохерентни, ако са изпълнени всички изброени по-долу условия:

  1. Когато процесор P чете местоположение X, след като е записал в това местоположение, P трябва да получи стойността, която е записал, ако никой друг процесор не е записал друга стойност в това местоположение. Това е вярно и за монопроцесорните системи, то означава, че паметта е в състояние да запази записаната стойност.
  2. Да предположим, че има два процесора, P1 и P2, и P1 е записал стойност X1, а след това P е 2записал стойност X2, ако P 1прочете стойността, той трябва да получи стойността, записана от P2, X2, а не стойността, която той е записал, X1, ако няма други записи между двамата. Това означава, че изгледът на паметта е кохерентен. Ако процесорите могат да прочетат същата стара стойност след записа, извършен от P2, паметта няма да е кохерентна.
  3. В даден момент може да има само един запис на определено място в паметта. Ако има няколко записа, те трябва да се извършват един след друг. С други думи, ако местоположението X получи две различни стойности A и B в този ред, от които и да е два процесора, процесорите никога не могат да прочетат местоположението X като B и след това да го прочетат като A. Местоположението X трябва да бъде видяно със стойности A и B в този ред.

Тези условия са дефинирани, като се предполага, че операциите за четене и запис се извършват незабавно. Това обаче не се случва в компютърния хардуер поради закъснението на паметта и други аспекти на архитектурата. Запис от процесор X може да не бъде видян от четене от процесор Y, ако четенето се извършва в рамките на много малко време след извършването на записа. Моделът за съгласуваност на паметта определя кога записаната стойност трябва да бъде видяна от следващата инструкция за четене, направена от други процесори.

Механизми за кохерентност на кеша

  • Базираните на директория механизми за съгласуваност поддържат централна директория на кешираните блокове.
  • Проследяването е процес, при който всеки кеш следи адресните линии за достъп до места в паметта, които са в неговия кеш. Когато се наблюдава операция за запис към място, на което кешът има копие, контролерът на кеша обезсилва собственото си копие на следеното място в паметта.
  • При Snarfing контролерът на кеш паметта наблюдава както адреса, така и данните, като се опитва да актуализира собственото си копие на местоположението в паметта, когато втори главен контролер модифицира местоположението в основната памет.

Разпределените системи със споделена памет имитират тези механизми, за да могат да поддържат съгласуваност между блоковете памет в слабо свързани системи.

Двата най-разпространени типа съгласуваност, които обикновено се изучават, са Snooping и Directory-based. Всеки от тях има своите предимства и недостатъци. Протоколите Snooping обикновено са по-бързи, ако има достатъчно широка честотна лента, тъй като всички транзакции са заявка/отговор, които се виждат от всички процесори. Недостатъкът е, че не може да се мащабира. Всяка заявка трябва да бъде излъчена до всички възли в системата. С увеличаването на системата размерът на (логическата или физическата) шина и предоставяната от нея широчина на честотната лента трябва да нарастват. От друга страна, директориите обикновено имат по-дълги закъснения (при заявка/предаване/отговор с 3 скока), но използват много по-малко честотна лента, тъй като съобщенията са от точка до точка, а не се излъчват. Поради тази причина много от по-големите системи (>64 процесора) използват този тип кохерентност на кеша.

Въпроси и отговори

Въпрос: Какво представлява кохерентността на кеша?


О: Кохерентността на кеша се отнася до гарантирането, че всички кешове на даден ресурс имат едни и същи данни и че данните в кешовете са последователни (цялостност на данните).

В: Каква е целта на кохерентността на кеша?


О: Целта на кохерентността на кеша е да управлява конфликтите между няколко кеша на общ ресурс на паметта и да поддържа съгласуваност между кеша и паметта.

В: Какви могат да бъдат последствията от липсата на кохерентност на кеша?


О: Без кохерентност на кеша данните в кеша може да загубят смисъл или един кеш може да не разполага със същите данни като останалите, което може да доведе до непоследователност и грешки.

В: Кой е често срещаният случай, при който възникват проблеми с кохерентността на кеша?


О: Често срещан случай, при който възникват проблеми с кохерентността на кеша, е кешът на процесорите в многопроцесорна система.

В: Как работи кохерентността на кеша?


О: Кохерентността на кеша работи, като гарантира, че всички кешове на даден ресурс имат едни и същи данни и че данните в кешовете са последователни чрез различни методи.

В: Какво означава съгласуваност на паметта?


О: Кохерентността на паметта се отнася до последователността на данните в споделения ресурс на паметта.

Въпрос: Как кохерентността на кеша може да подобри производителността?


О: Кохерентността на кеша може да подобри производителността, като позволи по-бърз и по-ефективен достъп до даден ресурс.

AlegsaOnline.com - 2020 / 2023 - License CC3