De av er som har spenderat minsta lilla tid på att leta efter insikter om inbäddad lagringsteknik vet detta: den del av Internet som ägnas åt detta ämne är översvämmad av korta artiklar där NOR- och NAND-flashteknik jämförs. Vissa är mycket välskrivna och verkligt upplysande. Men alltför ofta lämnar den rena ackumulationen av intetsägande, torrt och kontextlöst innehåll en att man vill ha mer. Om inte, kanske, det inte finns något mer? Om inte dessa få bitar av överflödigt upprepat material är allt som finns att veta? Vi tror inte det.
Denna tredje artikel i vår introduktionsserie (se del 1 och del 2) om flashlagring är vår egen version av klassikern ”NOR kontra NAND”. En version som förhoppningsvis kommer att höja din förståelse för dessa utbredda lagringstekniker och hjälpa dig att fatta bättre konstruktionsbeslut. Med detta sagt är den här artikeln inte en didaktisk, självständig introduktionstext. Den är snarare ett komplement till den vanliga introduktionen och tar upp aspekter av NOR- och NAND-flashtekniken som enligt vår mening alltför ofta ignoreras. Om du är helt ny i NOR- och NAND-flashteknik kanske du först vill gå igenom mer neutralt material som Wikipedias artiklar om samma ämne. Om du å andra sidan redan har omfattande kunskaper om dessa tekniker kan du ändå hitta användbar (och kanske till och med överraskande) information i den här artikeln.
Beyond Numbers
Tabell 1 är en jämförelse sida vid sida av NOR- och NAND-flashteknikerna utifrån olika prestandamått. Även om dessa siffror kan variera avsevärt mellan faktiska enheter är de rimliga och kan fungera som en värdefull referens.
NOR | NAND | |
---|---|---|
Skrivgenomströmning | 1 MB/s | 10 MB/s |
Läsningsgenomströmning | 40 MB/s | 30 MB/s |
Släckningsgenomströmning | 0.1 MB/s | 300 MB/s |
Radera-Genomströmning vid skrivning | 100 KB/s | 10 MB/s |
Granularitet vid läsning | Byte | Sida (4KiB typiskt) |
Skrivning av granularitet | Byte (typiskt) | Sida (4 KiB typiskt) |
Släckning av granularitet | Block (64 KiB typisk) | Block (256 KiB typisk) |
Skrivning av energiförbrukning | 1uJ/byte | 10nJ/byte |
Läs energiförbrukning | 1nJ/byte | 1nJ/byte |
Släck energiförbrukning | 600nJ/byte | 0.2nJ/byte |
Tabell 1. Plausibla NOR- och NAND-flashegenskaper
Men hur användbara de än är, är siffror utan en korrekt tolkning meningslösa, om inte rent av vilseledande. Råa prestandasiffror är bra marknadsföring eftersom de är lätta att ange och förstå (åtminstone ytligt sett), men de innehåller inte mycket relevant information ur ett perspektiv av applikationsdesign.
Låt oss illustrera vad vi menar genom ett konkret exempel: skrivprestanda. Tabell 1 visar att skrivning är mycket snabbare på NAND än på NOR. I själva verket är detta ett falskt påstående som dyker upp alltför ofta. Visst finns det en viss sanning i det. Men det är också ytterst reducerande och banar väg för dåliga konstruktionsbeslut. Låt oss ta en närmare titt.
NOR flash tillåter skrivåtkomst på byte-nivå. NAND, å andra sidan, har en mycket grövre skrivgranularitet. På NAND-flash kan data endast skrivas i sidor, vanligtvis 4 KiB åt gången för NAND SLC (8 KiB eller mer för NAND MLC). Vid en liten skrivåtkomst (säg 512 byte) måste en hel sida laddas in i RAM, ändras och skrivas tillbaka. I slutändan skrivs mer data än vad som faktiskt ändras. Detta fenomen kallas vanligen för skrivförstärkning. I vårt (mycket troliga) exempel är skrivförstärkningen 8 (4 KiB sida/512 bytes åtkomst). Med en arbetsbelastning som domineras av sådana små åtkomster skulle den effektiva skrivgenomströmningen minska åtta gånger. Detta är ganska mycket. Men det finns mer.
För att data kan skrivas måste ett filsystem (eller en databas) först hitta dem. Sökprocessen kan vara mer eller mindre effektiv beroende på bland annat filsystemet och mängden tillgänglig cache. Ändå kommer varje skrivåtkomst vanligtvis med sin andel motsvarande läsåtkomster. På NOR-flash är läsåtkomsterna mycket snabba. De kännetecknas av en latenstid nära noll och mycket hög genomströmning. Viktigast av allt är att läsåtkomst sker på byte-nivå. Detta är särskilt fördelaktigt för datasökningsprocessen eftersom filsystemens interna strukturer tenderar att bestå av små och utspridda datastycken.
Å andra sidan är slumpmässiga läsåtkomster på NAND-flash betydligt långsammare. Och i likhet med skrivåtkomster utförs de på sidnivå. För små åtkomster leder detta till ett visst slöseri eftersom en hel sida ändå måste laddas in. Denna ytterligare överkostnad, som kallas läsförstärkning, begränsar skrivprestanda på NAND, något som inte är omedelbart uppenbart när man tittar på tabell 1.
Om vi sammanfattar allt detta ser vi att NOR- och NAND-teknikernas respektive nettoprestanda för skrivning (dvs. med hänsyn tagen till läs- och skrivförstärkning och överkostnad för sökning) inte skiljer sig så mycket åt som de råa prestandasiffrorna först tycks visa. Viktigast av allt är att det blir tydligt att en grundlig prestandabedömning inte kan göras utan att ta hänsyn till applikationens åtkomstmönster, inklusive åtkomststorlek och fördelning över hela datamängden.
Gräset är grönt, himlen är blå, NOR är till för kod, NAND är till för data
Det finns en ihärdig missuppfattning som vi då och då hör om att NOR-flash är till för kod medan NAND-flash är till för data. Det är sant att NOR flash används oftare än NAND flash för kodlagring. Det finns två huvudskäl till detta. För det första möjliggör åtkomstgranularitet på byte-nivå exekvering av kod på plats, vilket är en obestridlig tillgång för små inbyggda system. För det andra, för små till medelstora firmware-storlekar (säg under 64 Mbits) är NOR helt enkelt mer ekonomiskt förnuftigt eftersom de minsta tillgängliga NAND-enheterna är betydligt dyrare.
Det sagt, många av våra kunder använder NOR-flash för datalagring. Och av goda skäl. När det gäller läsintensiva tillämpningar erbjuder NOR en betydligt högre genomströmning än NAND. Även för tillämpningar med tung skrivbelastning kan NOR vara ett rimligt val. Med åtkomst på byte-nivå och hög läsgenomströmning lämpar sig NOR särskilt väl för arbetsbelastningar som domineras av små slumpmässiga skrivåtkomster. Upp till en punkt där nettoskriftprestanda kan närma sig (ibland till och med överstiga) den som erhålls med NAND-flash. Detta är särskilt relevant för små datamängder, där de ekonomiska argumenten sammantaget gör att balansen definitivt tippar över till förmån för NOR flash.
Vill du ha mer?
Vad vi har behandlat i den här artikeln är knappt toppen av isberget. Förhoppningsvis har vi dock visat hur NOR- och NAND-flashteknikerna skiljer sig åt ur ett programdesignperspektiv och hur råa prestandasiffror kan tolkas för att fatta bättre designbeslut.
Om du vill läsa mer om NOR- och NAND-flashteknik, prestandabedömning och andra avancerade lagringsrelaterade ämnen innehåller TREEspan-användarmanualen en mängd information, både allmän och specifik för TREEspan File System (TSFS).