Када се кеш меморије процесора враћа на главну меморију?
Ако тек почињете да учите како ради вишејезгрени процесори, кеширање, кохерентност кеш меморије и меморија, у почетку може изгледати помало збуњујуће. Имајући то у виду, данашња постова за питања и одговоре СуперУсер-а имају одговоре на занимљиво питање читатеља.
Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.
Питање
Читач СуперУсер ЦармелоС жели да зна када се кеш ЦПУ-а враћа у главну меморију:
Ако имам ЦПУ са две језгре и свака језгра има свој Л1 кеш, да ли је могуће да Цоре1 и Цоре2 истовремено кеширају исти дио меморије? Ако је могуће, каква ће бити вриједност главне меморије ако су Цоре1 и Цоре2 уредили своје вриједности у кешу?
Када се кеш процесора испразни у главну меморију?
Одговор
Допринос СуперУсер Давид Сцхвартз, слеске и Кимберли В имају одговор за нас. Прво горе, Давид Сцхвартз:
Ако имам ЦПУ са две језгре и свака језгра има свој Л1 кеш, да ли је могуће да Цоре1 и Цоре2 истовремено кеширају исти део меморије истовремено?
Да, перформанс би био страшан да то није случај. Размотрите две нити које покрећу исти код. Ви желите тај код у оба Л1 кеша.
Ако је могуће, каква ће бити вриједност главне меморије ако су Цоре1 и Цоре2 уредили своје вриједности у кешу?
Стара вриједност ће бити у главној меморији, што неће бити важно јер је ни једно језгро неће прочитати. Пре избацивања модификоване вредности из кеша, она мора бити записана у меморију. Обично се користи нека варијанта МЕСИ протокола. У традиционалној имплементацији МЕСИ, ако је вредност модификована у једном кешу, она не може бити присутна у свим другим кешима на истом нивоу.
Следи одговор из слеске:
Да, имају два кеш кеша исте регије меморије која се може десити и заправо је проблем који се у пракси често појављује. Постоје различита решења, на пример:
- Два кеша могу да комуницирају како би се уверили да се не слажу
- Можете имати неку врсту супервизора који надгледа све предмеморије и ажурира их у складу с тим
- Сваки процесор надгледа меморијске области које је кеширао, а када детектује писање, он избацује (сада неважећи) кеш
Проблем се назива кохерентност кеша, а чланак о Википедији на тему има леп преглед проблема и могућих решења.
И наш коначни одговор од Кимберли В:
Да бисте одговорили на питање у наслову поста, то зависи од тога који је протокол за кеширање. Ако је то повратно писање, кеш ће бити враћен само у главну меморију када контролер кеша нема избора него да стави нови блок кеша у већ заузети простор. Блок који је раније заузимао простор је уклоњен и његова вредност се враћа у главну меморију.
Други протокол је писање. У том случају, кад год се блокира кеш пише на нивоу н, одговарајући блок на нивоу н + 1 је ажуриран. Концепт је сличан попуњавању формулара са угљеничним папиром испод; све што пишете на врху копира се на доњем листу. Ово је спорије јер очигледно укључује више операција писања, али су вриједности између кеша конзистентније. У схеми за повратак, само највиши кеш меморије би имао најновију вредност за одређени блок меморије.
Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.
Кредит за слике: Лемсипматт (Флицкр)