20Aug

Mikor a CPU memóriája visszatért a fő memóriába?

click fraud protection

Ha csak most kezdjük megtanulni, hogyan működnek a többmagos CPU-k, a gyorsítótárazás, a gyorsítótár-koherencia és a memória, először kissé zavarónak tűnhet. Ezzel kapcsolatban a mai SuperUser Q & A bejegyzésben válaszolhatunk egy furcsa olvasó kérdésére.

A mai kérdés &A válaszüzenet a SuperUser - a Stack Exchange megosztottságának köszönhetően - a Q & A webhelyek közösségi szintű csoportosítása.

Kérdés

SuperUser olvasó A CarmeloS tudni szeretné, ha a CPU gyorsítótárát visszaviszi a fő memóriába:

Ha van egy CPU két maggal és mindegyik mag rendelkezik saját L1 gyorsítótárral, lehetséges, hogy a Core1 és a Core2 is ugyanarra a cache-reegyidejűleg a memória egy része is? Ha lehetséges, mi lesz a fő memória értéke, ha mind a Core1, mind a Core2 szerkesztette az értékeket a gyorsítótárban?

Mikor van a CPU gyorsítótárja a fő memóriába?

A válasz

A SuperUser közreműködők David Schwartz, sleske és Kimberly W válaszolnak ránk. Először is, David Schwartz:

instagram viewer

Ha van egy CPU két maggal és minden mag rendelkezik saját L1 gyorsítótárral, lehetséges, hogy a Core1 és a Core2 egyidejűleg ugyanabban a memóriában tárolják a memóriát?

Igen, a teljesítmény szörnyű lenne, ha nem így lenne. Tekintsünk két szálat ugyanazt a kódot. A kódot mindkét L1 gyorsítótárban meg szeretné kapni.

Ha lehetséges, mi lesz a fő memória értéke, ha mind a Core1, mind a Core2 szerkesztette az értékeket a gyorsítótárban?

A régi érték a fő memóriában lesz, ami nem számít, mivel sem a mag nem fogja olvasni. A módosított értéknek a gyorsítótárból való kilépéséig a memóriába kell írni.Általában a MESI protokoll néhány változatát használják. A MESI hagyományos megvalósításában, ha egy értéket egy gyorsítótárban módosítanak, egyáltalán nem jelenhet meg ugyanazon a szinten más cache-ben.

A válasz a sleske-től:

Igen, két gyorsítótár cache memóriaterület megtörténhet, és ténylegesen egy probléma, ami sokat jelent a gyakorlatban. Vannak különböző megoldások, például:

  • A két gyorsítótár kommunikálni tud, hogy nem értenek egyet
  • Van valamilyen felügyelő, amely figyeli az összes gyorsítót, és frissíti őket megfelelően
  • Minden processzor figyeli a tárolt memóriaterületeket, ésamikor észleli az írást, kiüríti a( most érvénytelen) gyorsítótárat

A problémát cache-koherenciának nevezik, és a témáról szóló Wikipedia-cikkek áttekintik a problémát és a lehetséges megoldásokat.

És a Kimberly W:

végső válaszja A kérdést a bejegyzés címében válaszoljuk, attól függ, hogy mi a gyorsítótárazási protokoll. Ha visszaolvasásra kerül, akkor a gyorsítótár csak a fő memóriába kerül vissza, ha a gyorsítótár-vezérlőnek nincs más választása, mint hogy új cache blokkot helyezzen a már foglalt helyre. A blokk, amelyik korábban elfoglalta a helyet, eltávolításra kerül, és értéke vissza van írva a fő memóriába.

A másik protokoll átírás. Ebben az esetben, ha a gyorsítótár blokk n szinten van írva, az n + 1 megfelelő blokkja frissítésre kerül. Hasonló a fogalom, hogy ki kell töltenie egy formanyomtatványt, amelynek szénpapírja van;bármit is írsz a tetejére, az az alábbi lapra másolódik. Ez lassabb, mert nyilvánvalóan több írási műveletet igényel, de a gyorsítótár közötti értékek következetesebbek. A visszaváltási sémában csak a legmagasabb szintû gyorsítótár rendelkezik az adott memóriablokk legfrissebb értékével.

Van valami, amit hozzá kell adnod a magyarázathoz? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.

képarány: Lemsipmatt( Flickr)