MemóriacacheMemóriacache Már egy 25 Mhz-es 80386 gépnél problémát jelentett a pro- cesszor adatellátása. Ezt az intel ugynevezett várakozási ciklusok bevezetésével oldotta meg. A processzort lényegében várako- zásra kényszeritik amíg a szükséges adatok meg nem érkeznek a memóriából. Olyan memóriarendszerhez amely mentes a várakozási ciklusoktól olyan memóriaelemekre lenne szükség,amelyek elérési idelye kevesebb mint 25 milliárdod másodperc. A gyártott olcsó DRAK-ok ,SDRAM-ok azonban erre nem képesek. A modern processzorok csak cache-sel gyorsított memóriával érhetik el tényleges sebességüket. A nagyszámítógépek világában már bevált megoldások a PC-kben is megjelentek. Érdekes megnézni , hogyan működnek, és mire képesek a memóriacache-ek. A modern rendszerekben amig az adat eljut a processzorig, több memórián is áthalad. Első lépcsőként kiolvasódik az operatív tárból,ahonnan eljut a második szintű cache-be. Ezután az első zsintű cache-be,a processzor belső cache-ébe ér,ahonnan a processzor kiveszi és végrehajtja vele a műveletet. Ebből a művelet sorból látszik,hogy amíg pontosan egymás után lévő adatokat olvasunk (szekvenciális olvasás ), addig a memória- cache-ek csak lassítják a beolvasást. Ha viszont ugyanarra a kód- -vagy adatblokkra egymás után többször is szükségünk van, érez- hetővé válik a valódi gyorsító hatás. Abban at esetben tapasztalhatjuk a legnagyobb gyorsulást, ha az adatrészlet elfér a processzor belső tárában. Ha ennél nagyobb adattömbről van szó, amelynek csak a külső cache nyújt elegendő helyet, akkor kisebb a gyorsitás A belsô memóriacache elônyei kézenfekvôek. Ha a processzornak utasításokra vagy adatokra van szüksége, akkor elôször ellenôrzi a cache tartalmát. Ha ott megvannak az adatok, akkor cache-találatról (cache-hit) beszélünk. Ellenkezô esetben -- tehát ha nincs találat (cache-miss) -- elkerülhetetlenné válik a lényegesen lassúbb DRAM memóriához való fordulás. A cache tehát akkor fejti ki teljes kapacitását, ha gyakrabban kell használni ugyanazokat az adatokat (feltéve, hogy azok a cache-ben vannak). Pontosan ez a helyzet nagyon gyakran a programok úgynevezett lokalitása miatt. Ez azt jelenti, hogy a CPU általában egymás után (szekvenciálisan) hajtja végre az utasításokat, és ritkán ""ugrik" más programrészekre, igen gyakran használja ugyanazokat a memóriaterületeket. Ha például szövegszerkesztôben egy hosszabb szövegen dolgozva megváltoztatjuk a dokumentum sorszélességét, akkor a programnak minden egyes sorban újra el kell végeznie a tördelést. A tördelést végzô programrészlet csak egyszer fog betöltôdni a cache-be, és itt már állandóan jelen van, ezért rendkívül gyorsan végrehajtható. Mivel a CPU belsô cache-ében lévô 8 Kbyte-nyi hely nem elegendô nagy programrészek vagy adattömegek számára, ezért a modern alaplapokon beépítettek egy külsô (second level, második szintľ) memóriacache-t is a processzor és a lassú memória közé. A külsô cache átlagos elérési ideje 25 ns (lásd a Szerkezet és mľködés grafikát). Megjegyzendô, hogy a 386-os processzorokkal csak külsô, tehát CPU-n kívüli cache-t lehet használni -- ezeket ma már minden 386DX processzorú gépbe beépítik. A 486-os alaplapokon maximum négy, egyenként 64 vagy 128 Kbyte-os cache-bank van, összesen tehát 512 Kbyte-ig bôvíthetô rajtuk a külsô cache. Ha a processzor nem találja meg a belsô cache-ben a kívánt információkat, akkor elôször megkísérli ezeket a külsô cache-bôl lehívni, és csak azután kezdi el olvasni a viszonylag lassú memóriát. Kívánatos tehát a gyakran használt adatokat lehetôleg a belsô cache-ben, illetve a külsô cache-ben tartani, hiszen csak így lehet ezeket elérni várakozási ciklusok nélkül. A kért és a cache-ben meg nem található byte-okat azonban elôször ki kell olvasni a memóriából. E folyamat során tehát a cache-memóriák ugyanazt az információt tartalmazzák, mint a fômemória. De nem különálló byte-ok, hanem egy teljes tömb, az úgynevezett cache-line kerül átvitelre. A cache-line szélessége megegyezik az adatbusz, illetve a memóriabusz szélességével, vagy azok többszöröse. A 486-os esetében 16 byte. A tömbökre tagolással kevesebb idôt vesz igénybe, ha késôbbi táreléréseknél ellenôrizni kell, hogy az adatok vagy a programkódok már benne vannak-e a cache-ben vagy sem. îrástól olvasásig Miután a CPU feldolgozta az információkat, el kell raktározni a számítási mľvelet végeredményét. A PC-ken erre két különbözô eljárás terjedt el. Az egyik a write-through, a másik a write-back (lásd a Szerkezet és mľködés grafikát). A write-through módszernél a cache-en keresztül minden egyes írás azonnal bekerül a fômemóriába. Ezt a módszert sok alaplap használja. Az információkat a CPU azonnal átadja a külsô cache-nek és a RAM-nak is. Az eljárás hátránya: a cache-be való minden írás egyben memóriához való fordulást is jelent, és a processzornak várnia kell, amíg az írásmľvelet be nem fejezôdik. Ezt a késedelmet kerülik el a write-back rendszerek. A write-back módszernél ha az adat már a cache-ben van, akkor az eredmény is ott raktározódik el. Az ilyen írástalálatnál (write-hit) tehát nincs szükség a lassú memória elérésére. Csak akkor tárolódnak az adatok a memóriában, ha az adat nincs benne a cache-ben. Ezenkívül minden cache-line pót biteket is tartalmaz, amelyek jelzik, hogy a bennük lévô információ vissza van-e már írva a memóriába. Ezek az úgynevezett ""piszkos" (dirty) avagy ""módosított" (modified) bitek, amelyek jelzik, hogy vissza kell írni a cache tartalmát a memóriába, mielôtt egy teljes cache-line kicserélôdik. Az intelligens merevlemez-vezérlôk például önállóan, közvetlenül hozzáférhetnek a memóriához anélkül, hogy igénybe vennék a CPU-t. Ha a memóriacache által ""lefedett" területre írnak valamit, akkor összhangba kell hozni a cache és a memória tartalmát (szinkronizálás). A write-back eljárás emiatt sokkal nagyobb munkát igényel a hardvertôl, ami az alaplapok árában is jelentkezik (körülbelül 50 márkányi a többletköltség). Azonban megéri ez a befektetés. A legújabb, Pentiumra épülô rendszereknél mutatkozik meg, hogy milyen nehéz az együttmľködés a processzor, a cache és a chipkészlet között. Ezeknek a gépeknek gondjaik vannak a modern PCI chipkészletekkel a write-back rendszereken. Csak a write-through módban tökéletes az összjáték a processzor és a PCI chipek között, de ez 10%-kal csökkenti a gépek sebességét a write-backhez képest.
fred1144