20Aug

Millal on CPU-i vahemälu praamitud mälu juurde?

Kui hakkate lihtsalt õppima, kuidas multi-core protsessori, vahemällu salvestamise, vahemälu ja mäluga toimib, võib see esialgu natuke segadust tekitada. Seda silmas pidades on tänapäeva SuperUseri Q ja postitusel vastused uudishimuliku lugeja küsimusele.

tänapäeva küsimus &Vastuste seanss tuleb meile viisakalt SuperUseriga - Q & A veebisaitide kogukonnapõhise grupi Stack Exchange jagunemisest.

Küsimus

SuperUser-lugeja CarmeloS tahab teada, millal CPU-i vahemälu pestakse peamälu juurde:

Kui mul on kahe südamikuga CPU ja igal südamel on oma L1-vahemälu, on võimalik, et Core1 ja Core2 mõlemad vahemälluosa mälust samal ajal? Kui see on võimalik, siis milline on peamälukaardi väärtus, kui nii Core1 kui ka Core2 on oma väärtusi vahemällu muutnud?

Millal on CPU-i vahemälu, mis pääseb peamälule tagasi?

Vastus

SuperUseri toetajad David Schwartz, sleske ja Kimberly W on meie jaoks vastanud. Esiteks, David Schwartz:

Kui mul on kahe südamikuga CPU ja igal südamel on oma L1 vahemälu, kas Core1 ja Core2 mõlemad mõlemad mälu samaaegselt vahemällu salvestavad?

Jah, jõudlus oleks kohutav, kui see nii ei oleks. Kaaluge kahte niit, mis käitavad sama koodi. Tahad seda koodi mõlemas L1 vahemälus.

Kui see on võimalik, siis milline on peamälukaardi väärtus, kui nii Core1 kui ka Core2 on oma väärtusi vahemällu muutnud?

Vana väärtus jääb põhimälu, mis ei oma tähtsust, kuna kumbki tuum ei loe seda. Enne vahemällu muudetud väärtuse väljavõtmist tuleb see kirjutada mällu. Tavaliselt kasutatakse MESI protokolli mõnda varianti. MESI traditsioonilisel rakendamisel, kui väärtust muudetakse ühes vahemälus, ei pruugi see olla samal tasemel üheski teises vahemikus.

Järgneb sleske vastus:

Jah, võttes kaks vahemällu vahemälu, võib juhtuda sama mälu piirkond ja see on tegelikult probleem, mis praktikas väga palju esineb. Näiteks on olemas mitmesugused lahendused:

  • . Kaks vahemällu saavad suhelda, et veenduda, et nad ei nõustu
  • -ga. Võib olla mingisugune juhendaja, mis jälgib kõiki vahemällu ja uuendab neid vastavalt.
  • Iga töötleja jälgib vahemällu salvestatud mäluaspekte jakui see tuvastab kirjutamise, siis see viskab välja selle( praegu kehtetu) vahemälu

Probleemi nimetatakse vahemälu sidususeks ja Wikipedia artiklil sellel teemal on hea ülevaade probleemist ja võimalike lahenduste leidmisest.

Ja meie viimane vastus Kimberly W-st:

Selleks, et vastata teie postituse pealkirjas olevale küsimusele, sõltub sellest, milline on vahemällu salvestamise protokoll. Kui see on tagasi lükatud, tühjendatakse vahemälu ainult peamise mällu, kui vahemälu kontrolleril pole muud valikut kui asetada uus vahemälu blokeerida juba kasutuses olevas ruumis. Blokeering, mis eelnevalt ruumi hõivas, eemaldatakse ja selle väärtus kirjutatakse tagasi peamälule.

Teine protokoll on kirjutamisõigus. Sellisel juhul uuendatakse vahemälu blokeering igal tasemel n , n + 1 vastav plokk on uuendatud. See on põhimõtteliselt sarnane vormi täitmisega, mille all on kilepaber;Kõik, mida kirjutad ülaosas, kopeeritakse alloleval lehel. See on aeglasem, kuna see hõlmab ilmselt rohkem kirjutamisoperatsioone, kuid vahemällu salvestatud väärtused on järjepidevamad. Tagasi kava korral peaks ainult kõrgeima taseme vahemälu olema konkreetse mäluploki jaoks kõige värskem väärtus.

Kas teil on seletamiseks midagi lisada? Helistage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Tutvu täieliku arutelu teemaga siit.

pildikrediit: Lemsipmatt( Flickr)