Azok, akik a legcsekélyebb időt is eltöltötték a beágyazott tárolási technológiákkal kapcsolatos betekintések keresésével, tudják: az internet e témának szentelt alterét elárasztják a NOR és NAND flash technológiákat összehasonlító rövid cikkek. Némelyik nagyon jól megírt és valóban tanulságos. De túl gyakran előfordul, hogy az unalmas, száraz, kontextus nélküli tartalom puszta felhalmozódása miatt többre vágyik az ember. Hacsak, talán, nincs semmi több? Hacsak nem ez a néhány, bőségesen ismételt anyagdarab az egyetlen, amit tudni lehet? Mi nem így gondoljuk.
A flash-tárolókról szóló bevezető sorozatunk (lásd az 1. és 2. részt) e harmadik cikke a “NOR kontra NAND” klasszikus saját verziója. Egy olyan változat, amely remélhetőleg emeli az Ön megértését ezekkel a széles körben elterjedt tárolási technológiákkal kapcsolatban, és segít jobb tervezési döntéseket hozni. Ennek ellenére ez a cikk nem egy didaktikus, önálló, bevezető jellegű szöveg. Inkább a szokásos bevezető kiegészítése, amely a NOR és NAND flash technológiák olyan aspektusait tárgyalja, amelyeket véleményünk szerint túl gyakran figyelmen kívül hagynak. Ha teljesen újak a NOR- és NAND-flash-technológiák, érdemes először átnézni egy semlegesebb anyagot, például a Wikipedia ugyanerről a témáról szóló cikkeit. Másrészt, ha már széleskörű ismeretekkel rendelkezik ezekről a technológiákról, akkor is találhat hasznos (sőt, talán meglepő) információmorzsákat ebben a cikkben.
A számokon túl
Az 1. táblázat a NOR és NAND flash technológiák egymás melletti összehasonlítását mutatja be különböző teljesítménymutatók alapján. Bár ezek a számok jelentősen eltérhetnek a tényleges eszközök között, hihetőek, és értékes referenciaként szolgálhatnak.
NOR | NAND | |
---|---|---|
Átírási sebesség | 1 MB/s | 10 MB/s |
Read Throughput | 40 MB/s | 30 MB/s |
Erase Throughput | 0.1 MB/s | 300 MB/s |
Letörlés-Írási teljesítmény | 100 KB/s | 10 MB/s |
Read Granularity | Byte | Page (4KiB tipikus) |
Write Granularity | Byte (tipikus) | Page (4 KiB tipikus) |
Erase Granularity | Block (64 KiB tipikus) | Block (256 KiB tipikus) |
Energiafogyasztás írása | 1uJ/byte | 10nJ/byte |
Read energiafogyasztás | 1nJ/byte | 1nJ/byte |
Erase energiafogyasztás | 600nJ/byte | 0.2nJ/bájt |
1. táblázat. Plauzibilis NOR és NAND flash jellemzői
De bármennyire is hasznosak, a számok megfelelő értelmezés nélkül értelmezhetetlenek, ha nem egyenesen félrevezetőek. A nyers teljesítményszámok jó marketingcélokat szolgálnak, mert könnyen kimondhatók és érthetők (legalábbis felületesen), de az alkalmazás tervezése szempontjából nem hordoznak sok releváns információt.
Azt, amire gondolunk, egy konkrét példán keresztül szemléltetjük: az írási teljesítmény. Az 1. táblázatból kiderül, hogy az írás sokkal gyorsabb a NAND-on, mint a NOR-on. Valójában ez egy álságos állítás, amely túl gyakran bukkan fel újra. Persze, van benne némi igazság. De teljesen reduktív is, és rossz tervezési döntésekhez vezet. Nézzük meg közelebbről.
A NOR flash lehetővé teszi a bájtszintű írási hozzáférést. A NAND ezzel szemben sokkal durvább írási granularitással rendelkezik. A NAND flashen az adatok csak oldalakban írhatók, a NAND SLC esetében jellemzően egyszerre 4 KiB (a NAND MLC esetében 8 KiB vagy több). Egy kisebb írási hozzáférés (mondjuk 512 bájt) esetén egy egész oldalt kell betölteni a RAM-ba, módosítani és visszaírni. Végül több adatot írnak ki, mint amennyit ténylegesen módosítottak. Ezt a jelenséget általában írási erősítésnek nevezik. A mi (nagyon valószínű) példánkban az írási erősítés 8 (4 KiB oldal/512 byte hozzáférés). Egy ilyen kis hozzáférések által dominált munkaterhelés esetén a tényleges írási teljesítmény 8-szoros csökkenést szenvedne el. Ez elég sok. De van még más is.
Az adatok írása előtt egy fájlrendszernek (vagy adatbázisnak) először meg kell találnia azokat. A keresési folyamat többé-kevésbé hatékony lehet, többek között a fájlrendszertől és a rendelkezésre álló gyorsítótár mennyiségétől függően. Mégis, minden egyes írási hozzáférés jellemzően a megfelelő olvasási hozzáférésekkel jár. NOR flash esetén az olvasási hozzáférések nagyon gyorsak. Közel nulla késleltetés és nagyon nagy áteresztőképesség jellemzi őket. A legfontosabb, hogy az olvasási hozzáférések bájtszinten történnek. Ez különösen előnyös az adatkeresés szempontjából, mivel a fájlrendszerek belső struktúrái általában kis és szétszórt adatdarabokból állnak.
Ezzel szemben a NAND flashen a véletlenszerű olvasási hozzáférések jelentősen lassabbak. És az írási hozzáférésekhez hasonlóan ezek is oldalszinten történnek. A kis hozzáférések esetében ez némi pazarláshoz vezet, mivel mindenképpen egy egész oldalt kell betölteni. Ez az olvasási erősítésnek nevezett többletköltség korlátozza a NAND írási teljesítményét, ami az 1. táblázat alapján nem tűnik fel azonnal.
Az egészet összevetve azt látjuk, hogy a NOR és a NAND technológiák nettó írási teljesítménye (azaz az olvasási/írási erősítés és a keresési többletköltség figyelembevételével) nem különbözik annyira, mint azt a nyers teljesítményszámok elsőre sugallják. A legfontosabb, hogy világossá teszi, hogy alapos teljesítményértékelés nem végezhető el az alkalmazás hozzáférési mintáinak figyelembevétele nélkül, beleértve a hozzáférés méretét és eloszlását a teljes adathalmazon.
Grass is Green, Sky is Blue, NOR Is For Code, NAND Is For Data
Van egy makacs tévhit, amelyet időről időre hallunk, miszerint a NOR flash a kódra, míg a NAND flash az adatokra való. Való igaz, hogy a NOR flash-t gyakrabban használják kód tárolására, mint a NAND flash-t. Ennek két fő oka van. Először is, a byte-szintű hozzáférési granularitás lehetővé teszi a kód helyben történő végrehajtását, ami vitathatatlan előny a kis beágyazott rendszerek esetében. Másodszor, a kis és közepes méretű firmware-ek esetében (mondjuk 64 MBit alatt) a NOR egyszerűen gazdaságosabb, mivel a legkisebb elérhető NAND-eszközök lényegesen drágábbak.
Ezzel együtt sok ügyfelünk használ NOR flash-t adattárolásra. És jó okkal. Az olvasásigényes alkalmazások esetében a NOR lényegesen nagyobb áteresztőképességet kínál, mint a NAND. Még a nagy írási terhelést igénylő alkalmazások esetében is ésszerű választás lehet a NOR. A bájtszintű hozzáférés és a nagy olvasási átbocsátóképesség révén a NOR különösen alkalmas a kis véletlenszerű írási hozzáférések által dominált munkaterhelésekhez. Egészen addig a pontig, ahol a nettó írási teljesítmény megközelítheti (néha meg is haladhatja) a NAND flashen elért teljesítményt. Ez különösen fontos a kis adathalmazok esetében, ahol a gazdasági érvek összesítve határozottan a NOR flash javára billentik a mérleget.
Még többet szeretne?
Amit ebben a cikkben leírtunk, az aligha a jéghegy csúcsa. Remélhetőleg azonban megmutattuk, hogy a NOR és a NAND flash technológiák hogyan különböznek az alkalmazások tervezése szempontjából, és hogyan lehet a nyers teljesítményszámokat értelmezni a jobb tervezési döntések meghozatalához.
Ha többet szeretne olvasni a NOR és a NAND flash technológiákról, a teljesítményértékelésről és más, a tárolással kapcsolatos fejlett témákról, a TREEspan felhasználói kézikönyvben rengeteg általános és a TREEspan fájlrendszerre (TSFS) vonatkozó információt talál.