Почетна » како да » Када се кеш меморије процесора враћа на главну меморију?

    Када се кеш меморије процесора враћа на главну меморију?

    Ако тек почињете да учите како ради вишејезгрени процесори, кеширање, кохерентност кеш меморије и меморија, у почетку може изгледати помало збуњујуће. Имајући то у виду, данашња постова за питања и одговоре СуперУсер-а имају одговоре на занимљиво питање читатеља.

    Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.

    Питање

    Читач СуперУсер ЦармелоС жели да зна када се кеш ЦПУ-а враћа у главну меморију:

    Ако имам ЦПУ са две језгре и свака језгра има свој Л1 кеш, да ли је могуће да Цоре1 и Цоре2 истовремено кеширају исти дио меморије? Ако је могуће, каква ће бити вриједност главне меморије ако су Цоре1 и Цоре2 уредили своје вриједности у кешу?

    Када се кеш процесора испразни у главну меморију?

    Одговор

    Допринос СуперУсер Давид Сцхвартз, слеске и Кимберли В имају одговор за нас. Прво горе, Давид Сцхвартз:

    Ако имам ЦПУ са две језгре и свака језгра има свој Л1 кеш, да ли је могуће да Цоре1 и Цоре2 истовремено кеширају исти део меморије истовремено?

    Да, перформанс би био страшан да то није случај. Размотрите две нити које покрећу исти код. Ви желите тај код у оба Л1 кеша.

    Ако је могуће, каква ће бити вриједност главне меморије ако су Цоре1 и Цоре2 уредили своје вриједности у кешу?

    Стара вриједност ће бити у главној меморији, што неће бити важно јер је ни једно језгро неће прочитати. Пре избацивања модификоване вредности из кеша, она мора бити записана у меморију. Обично се користи нека варијанта МЕСИ протокола. У традиционалној имплементацији МЕСИ, ако је вредност модификована у једном кешу, она не може бити присутна у свим другим кешима на истом нивоу.

    Следи одговор из слеске:

    Да, имају два кеш кеша исте регије меморије која се може десити и заправо је проблем који се у пракси често појављује. Постоје различита решења, на пример:

    • Два кеша могу да комуницирају како би се уверили да се не слажу
    • Можете имати неку врсту супервизора који надгледа све предмеморије и ажурира их у складу с тим
    • Сваки процесор надгледа меморијске области које је кеширао, а када детектује писање, он избацује (сада неважећи) кеш

    Проблем се назива кохерентност кеша, а чланак о Википедији на тему има леп преглед проблема и могућих решења.

    И наш коначни одговор од Кимберли В:

    Да бисте одговорили на питање у наслову поста, то зависи од тога који је протокол за кеширање. Ако је то повратно писање, кеш ће бити враћен само у главну меморију када контролер кеша нема избора него да стави нови блок кеша у већ заузети простор. Блок који је раније заузимао простор је уклоњен и његова вредност се враћа у главну меморију.

    Други протокол је писање. У том случају, кад год се блокира кеш пише на нивоу н, одговарајући блок на нивоу н + 1 је ажуриран. Концепт је сличан попуњавању формулара са угљеничним папиром испод; све што пишете на врху копира се на доњем листу. Ово је спорије јер очигледно укључује више операција писања, али су вриједности између кеша конзистентније. У схеми за повратак, само највиши кеш меморије би имао најновију вредност за одређени блок меморије.


    Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.

    Кредит за слике: Лемсипматт (Флицкр)