Koduleht » kuidas » Millal on CPU vahemälu flused peamällu?

    Millal on CPU vahemälu flused peamällu?

    Kui hakkate lihtsalt õppima, kuidas mitmetuumalised protsessorid, vahemälu, vahemälu sidusus ja mälu toimivad, võib alguses tunduda veidi segane. Seda silmas pidades on tänasel SuperUser Q&A postil vastused uudishimulikule lugeja küsimusele.

    Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.

    Küsimus

    SuperUser-lugeja CarmeloS tahab teada, millal CPU vahemälu loputatakse peamällu:

    Kui mul on kaks südamikku omav CPU ja igal südamikul on oma L1-vahemälu, siis kas Core1 ja Core2 on vahemälu sama mälu osa samal ajal? Kui see on võimalik, siis milline on peamälu väärtus, kui nii Core1 kui ka Core2 on oma väärtused vahemälus muutnud?

    Millal CPU vahemälu loputatakse peamällu?

    Vastus

    SuperUser'i toetajad David Schwartz, sleske ja Kimberly W on meile vastused. Esiteks, David Schwartz:

    Kui mul on kaks südamikku omav CPU ja igal südamikul on oma L1-vahemälu, siis kas Core1 ja Core2 on vahemälu sama mälu osaga samal ajal?

    Jah, tulemus oleks kohutav, kui see nii ei oleks. Vaatleme kahte sama koodiga lõnga. Sa tahad seda koodi mõlemas L1 vahemälus.

    Kui see on võimalik, siis milline on peamälu väärtus, kui nii Core1 kui ka Core2 on oma väärtused vahemälus muutnud?

    Vana väärtus jääb peamällu, mis ei ole oluline, sest kumbki südamik seda ei loe. Enne muudetud väärtuse väljalülitamist vahemälust tuleb see kirjutada mällu. Tavaliselt kasutatakse MESI protokolli mõnda varianti. MESI traditsioonilises rakenduses, kui väärtust muudetakse ühes vahemälus, ei saa see üldse olla ühelgi teisel vahemälul samal tasemel.

    Järgneb sleske vastus:

    Jah, kaks vahemälu vahemälu sama mälupiirkonnaga võib juhtuda ja see on tegelikult probleem, mis praktikas palju esineb. On mitmeid lahendusi, näiteks:

    • Kaks vahemälu saavad suhelda, et veenduda, et nad ei nõustu
    • Teil võib olla mingisugune juhendaja, kes jälgib kõiki vahemälu ja uuendab neid vastavalt
    • Iga protsessor jälgib mälupiirkondi, mida see on vahemällu salvestanud, ja kui ta tuvastab kirja, viskab see välja (nüüd kehtetu) vahemälu

    Probleemi nimetatakse vahemälu sidususeks ja selle teema Wikipedia artiklil on kena ülevaade probleemist ja võimalikest lahendustest.

    Ja meie lõplik vastus Kimberly W:

    Küsimusele vastamiseks oma postituse pealkirjas sõltub see sellest, milline on vahemällu salvestamise protokoll. Kui see on tagasipöördumine, siis puhverdatakse vahemälu tagasi ainult põhimällu, kui vahemälu kontrolleril pole muud valikut, kui panna uus vahemälu juba kasutatavasse ruumi. Varem hõivatud plokk eemaldatakse ja selle väärtus kirjutatakse tagasi peamällu.

    Teine protokoll on kirjutamine. Sellisel juhul kirjutatakse vahemälu plokk igal ajal tasemele n, vastav plokk tasandil n + 1 uuendatakse. Mõiste on sarnane süsinikpaberiga vormi täitmisega; allpool olevale lehele kopeeritakse kõik, mida kirjutad peal. See on aeglasem, sest see hõlmab ilmselt rohkem kirjutamisoperatsioone, kuid vahemälude vahelised väärtused on järjekindlamad. Tagasipöördumisskeemil oleks ainult kõige kõrgema taseme vahemäluga konkreetse mälu ploki jaoks kõige ajakohasem väärtus.


    Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.

    Krediidi krediit: Lemsipmatt (Flickr)