Cache koherence

Kešatmiņu var izmantot, lai uzlabotu piekļuves veiktspēju konkrētam resursam. Ja vienam un tam pašam resursam ir vairāki šādi kešatmiņi, kā parādīts attēlā, tas var radīt problēmas. Kešatmiņas koherence jeb kešatmiņas saskaņotība attiecas uz vairākiem veidiem, kā nodrošināt, lai visos resursa kešatmiņā būtu vienādi dati un lai dati kešatmiņā būtu jēgpilni (to sauc par datu integritāti). Kešatmiņas saskaņotība ir īpašs atmiņas saskaņotības gadījums.

Var rasties problēmas, ja ir daudz kopīga atmiņas resursa kešatmiņas, jo datiem kešatmiņā var vairs nebūt jēgas vai arī vienā kešatmiņā var nebūt tādu pašu datu kā pārējos. Bieži sastopams gadījums, kad rodas problēma, ir procesoru kešatmiņa daudzprocesoru sistēmā. Kā redzams attēlā, ja augšējam klientam ir atmiņas bloka kopija no iepriekšējās nolasīšanas un apakšējais klients maina šo atmiņas bloku, augšējais klients var palikt ar nederīgu atmiņas kešatmiņu,par to nezinot. Kešatmiņas saskaņotība ir paredzēta, lai pārvaldītu šādus konfliktus un saglabātu konsekvenci starp kešatmiņu un atmiņu.

Vairāki koplietojamā resursa kešatmiņasZoom
Vairāki koplietojamā resursa kešatmiņas

Definīcija

Koherence nosaka, kā notiek lasījumi un rakstījumi uz vienu un to pašu atmiņas vietu. Kešatmiņas ir saskaņotas, ja ir izpildīti visi turpmāk minētie nosacījumi:

  1. Kad procesors P nolasa atrašanās vietu X, pēc ierakstīšanas šajā atrašanās vietā P ir jāsaņem vērtība, ko tas ierakstījis, ja neviens cits procesors šajā atrašanās vietā nav ierakstījis citu vērtību. Tas attiecas arī uz monoprocesoru sistēmām, tas nozīmē, ka atmiņa spēj saglabāt ierakstīto vērtību.
  2. Pieņemsim, ka ir divi procesori, P1 un P2, un P ir 1ierakstījis vērtību X1, un pēc tam P ir 2ierakstījis vērtību X2, ja P 1nolasa vērtību, tam ir jāsaņem P2 ierakstītā vērtība X2, nevis vērtība, ko tas ir ierakstījis, X1, ja starp abiem nav citu ierakstu. Tas nozīmē, ka atmiņas skats ir saskaņots. Ja procesori var nolasīt to pašu veco vērtību pēc P2 veiktā ieraksta, atmiņa nebūtu koherenta.
  3. Vienlaicīgi var veikt tikai vienu ierakstu uz noteiktu vietu atmiņā. Ja ir vairāki ieraksti, tiem jānotiek vienam pēc otra. Citiem vārdiem sakot, ja atrašanās vieta X ir saņēmusi divas dažādas vērtības A un B šādā secībā no jebkuriem diviem procesoriem, procesori nekad nevar nolasīt atrašanās vietu X kā B un pēc tam nolasīt to kā A. Vieta X ir jāskata ar vērtībām A un B šādā secībā.

Šie nosacījumi ir definēti, pieņemot, ka lasīšanas un rakstīšanas operācijas tiek veiktas uzreiz. Tomēr datoru aparatūrā tas nenotiek atmiņas aizkavēšanās un citu arhitektūras aspektu dēļ. Procesora X veikto ierakstu var nepamanīt procesora Y veiktais nolasījums, ja nolasījums tiek veikts ļoti īsā laikā pēc ieraksta veikšanas. Atmiņas konsekvences modelis nosaka, kad ierakstītajai vērtībai jābūt redzamai pēc tam, kad citi procesori izdod nolasīšanas instrukciju.

Kešatmiņas koherences mehānismi

  • Uz direktoriju balstīti saskaņotības mehānismi uztur centrālo direktoriju ar kešētajiem blokiem.
  • Snooping ir process, kurā katra kešatmiņa uzrauga adrešu rindas, lai noteiktu piekļuves atmiņas vietām, kas ir tās kešatmiņā. Ja tiek novērota rakstīšanas operācija uz vietu, kuras kopija ir kešatmiņas kopijā, kešatmiņas kontrolieris anulē savu kopiju no izsekojamās atmiņas vietas.
  • Snarfing ir gadījums, kad kešatmiņas kontrolieris uzrauga gan adresi, gan datus, mēģinot atjaunināt savu atmiņas vietas kopiju, kad otrs galvenais kontrolieris maina vietu galvenajā atmiņā.

Sadalītās koplietojamās atmiņas sistēmas imitē šos mehānismus, lai varētu saglabāt konsekvenci starp atmiņas blokiem brīvi saistītajās sistēmās.

Divi visbiežāk pētītie saskaņotības veidi parasti ir Snooping un Directory-based. Katram no tiem ir savas priekšrocības un trūkumi. Snooping protokoli parasti ir ātrāki, ja ir pieejams pietiekams joslas platums, jo visi darījumi ir pieprasījums/atbilde, ko redz visi procesori. Trūkums ir tas, ka snooping nav mērogojams. Katrs pieprasījums ir jānosūta visiem sistēmas mezgliem. Palielinoties sistēmai, (loģiskās vai fiziskās) kopnes izmēram un tās nodrošinātajam joslas platumam ir jāpalielinās. No otras puses, direktorijām parasti ir garāki kavējumi (ar 3 lēcienu pieprasījumu/pārsūtīšanu/atbildi), bet tās izmanto daudz mazāku joslas platumu, jo ziņojumi tiek sūtīti no punkta uz punktu, nevis pārraidīti. Šā iemesla dēļ daudzās lielākās sistēmās (>64 procesori) izmanto šāda veida kešatmiņas koherenci.

Jautājumi un atbildes

J: Kas ir kešatmiņas koherence?


A: Kešatmiņas saskaņotība nozīmē nodrošināt, ka visos resursa kešatmiņas kešatmiņas kešās ir vienādi dati un ka dati kešatmiņā ir konsekventi (datu integritāte).

J: Kāds ir kešatmiņas saskaņotības mērķis?


A: Kešatmiņas saskaņotības mērķis ir pārvaldīt konfliktus starp vairākiem kopīga atmiņas resursa kešatmiņas resursiem un saglabāt konsekvenci starp kešatmiņu un atmiņu.

J: Kādas var būt sekas, ja netiek nodrošināta kešatmiņas saskaņotība?


A: Ja nav kešatmiņas saskaņotības, datiem kešatmiņā var zust jēga vai vienā kešatmiņā var nebūt tādu pašu datu kā pārējos, kas var izraisīt nekonsekvenci un kļūdas.

J: Kāds ir biežākais gadījums, kad rodas problēmas ar kešatmiņas saskaņotību?


A: Bieži sastopams gadījums, kad rodas problēmas ar kešatmiņas saskaņotību, ir procesoru kešatmiņa daudzprocesoru sistēmā.

J: Kā darbojas kešatmiņas saskaņotība?


A. Kešatmiņas saskaņotība darbojas, ar dažādām metodēm nodrošinot, ka visiem resursa kešatmiņas kešatmiņas resursiem ir vieni un tie paši dati un ka dati kešatmiņas kešatmiņā ir konsekventi.

J: Ko nozīmē atmiņas saskaņotība?


A. Atmiņas saskaņotība attiecas uz datu konsekvenci koplietojamās atmiņas resursā.

J: Kā kešatmiņas saskaņotība var uzlabot veiktspēju?


A. Kešatmiņas saskaņotība var uzlabot veiktspēju, nodrošinot ātrāku un efektīvāku piekļuvi noteiktam resursam.

AlegsaOnline.com - 2020 / 2023 - License CC3