De af jer, der har brugt bare den mindste mængde tid på at grave rundt efter indsigt i indlejrede lagringsteknologier, ved dette: Den del af internettet, der er afsat til netop dette emne, er oversvømmet med korte artikler, der sammenligner NOR- og NAND-flashteknologier. Nogle er meget velskrevne og virkelig oplysende. Men alt for ofte efterlader den blotte ophobning af intetsigende, tørt og kontekstløst indhold en med et ønske om mere. Medmindre der måske ikke er mere? Medmindre disse få stykker materiale, der gentages i massevis, er alt, hvad der er at vide? Det tror vi ikke.
Denne tredje artikel i vores introduktionsserie (se del 1 og del 2) om flashlagring er vores egen version af klassikeren “NOR versus NAND”. En version, der forhåbentlig vil løfte din forståelse af disse udbredte lagringsteknologier og hjælpe dig med at træffe bedre designbeslutninger. Når det er sagt, er denne artikel ikke en didaktisk, selvstændig, introducerende tekst. Den er snarere et supplement til den sædvanlige introduktion og dækker aspekter af NOR- og NAND-flashteknologierne, som efter vores mening alt for ofte ignoreres. Hvis du er helt ny i NOR- og NAND-flashteknologier, bør du måske først gennemgå mere neutralt materiale som f.eks. Wikipedias artikler om samme emne. Hvis du derimod allerede har et omfattende kendskab til disse teknologier, kan du stadig finde nyttige (og måske endda overraskende) oplysninger i denne artikel.
Beyond Numbers
Tabel 1 er en side-by-side-sammenligning af NOR- og NAND-flashteknologierne baseret på forskellige ydelsesmålinger. Selv om disse tal kan variere betydeligt på tværs af de faktiske enheder, er de plausible og kan tjene som en værdifuld reference.
NOR | NAND | |
---|---|---|
Skrivning gennemløb | 1 MB/s | 10 MB/s |
Læse gennemløb | 40 MB/s | 30 MB/s |
Slet gennemløb | 0.1 MB/s | 300 MB/s |
Slet-Write Throughput | 100 KB/s | 10 MB/s |
Read Granularity | Byte | Page (4KiB typisk) |
Skriv granularitet | Byte (typisk) | Side (4 KiB typisk) |
Sletning af granularitet | Blok (64 KiB typisk) | Blok (256 KiB typisk) |
Skrivning af energiforbrug | 1uJ/byte | 10nJ/byte |
Læs energiforbrug | 1nJ/byte | 1nJ/byte |
Slet energiforbrug | 600nJ/byte | 0.2nJ/byte |
Tabel 1. Plausible NOR- og NAND-flashkarakteristika
Men uanset hvor nyttige de er, er tal uden en korrekt fortolkning meningsløse, hvis ikke ligefrem misvisende. Rå ydelsestal er gode til markedsføring, fordi de er lette at oplyse og forstå (i det mindste overfladisk), men de indeholder ikke mange relevante oplysninger set ud fra et anvendelsesdesignperspektiv.
Lad os illustrere, hvad vi mener, ved hjælp af et konkret eksempel: skriveydelserne. Tabel 1 viser, at det er meget hurtigere at skrive på NAND end på NOR. Faktisk er dette en speciel påstand, som dukker op igen alt for ofte. Selvfølgelig er der en vis sandhed i den. Men den er også fuldstændig reducerende og baner vejen for dårlige designbeslutninger. Lad os se nærmere på det.
NOR-flash giver mulighed for skriveadgang på byte-niveau. NAND har på den anden side en meget grovere skrivegranularitet. På NAND-flash kan data kun skrives i sider, typisk 4 KiB ad gangen for NAND SLC (8 KiB eller mere for NAND MLC). I tilfælde af en lille skriveadgang (f.eks. 512 bytes) skal en hel side indlæses i RAM, ændres og skrives tilbage. I sidste ende skrives der flere data, end der faktisk ændres. Dette fænomen betegnes almindeligvis som skriveforstærkning. I vores (meget plausible) eksempel er skriveforstærkningen 8 (4 KiB side/512-byte adgang). I en arbejdsbyrde, der er domineret af sådanne små adganger, vil den effektive skrivegennemstrømning falde 8 gange. Det er ret meget. Men der er mere.
Hvor data kan skrives, skal et filsystem (eller en database) først finde dem. Opslagsprocessen kan være mere eller mindre effektiv, bl.a. afhængigt af filsystemet og mængden af tilgængelig cache. Alligevel kommer hver skriveadgang typisk med sin andel af tilsvarende læseadgang. På NOR-flash er læsetilgangene meget hurtige. De er kendetegnet ved en latenstid på næsten nul og en meget høj gennemstrømning. Det vigtigste er, at læsetilgangene udføres på byte-niveau. Dette er særlig fordelagtigt for datasøgningsprocessen, fordi filsystemers interne strukturer har en tendens til at bestå af små og spredte datastykker.
På den anden side er tilfældige læseadgang på NAND-flash betydeligt langsommere. Og i lighed med skrivetilgangene udføres de på sideniveau. For små adganger fører dette til en vis mængde spild, da der alligevel skal indlæses en hel side. Dette ekstra overhead, der kaldes læseforstærkning, begrænser skriveydelsen på NAND, hvilket ikke er umiddelbart indlysende, når man ser på tabel 1.
Samlet set kan vi se, at de respektive nettoskriveydelser (dvs. når der tages højde for læse-/skriveforstærkning og opslagsoverhead) for NOR- og NAND-teknologier ikke er så vidt forskellige, som de rå ydelsestal umiddelbart synes at indikere. Vigtigst af alt gør det klart, at man ikke kan foretage en grundig vurdering af ydeevnen uden at tage hensyn til applikationens adgangsmønstre, herunder adgangsstørrelsen og -fordelingen over hele datasættet.
Græs er grønt, himlen er blå, NOR er til kode, NAND er til data
Der er en hårdnakket misforståelse, som vi af og til hører om, at NOR-flash er til kode, mens NAND-flash er til data. Det er rigtigt, at NOR-flash er mere almindeligt anvendt end NAND-flash til lagring af kode. Der er to hovedårsager til dette. For det første giver adgangsgranularitet på byte-niveau mulighed for at udføre kode på stedet, hvilket er et ubestrideligt aktiv for små indlejrede systemer. For det andet giver NOR for små til mellemstore firmwarestørrelser (f.eks. under 64 Mbits) simpelthen mere mening rent økonomisk, da de mindste tilgængelige NAND-enheder er betydeligt dyrere.
Det sagt bruger mange af vores kunder NOR-flash til datalagring. Og det er der en god grund til. I tilfælde af læseintensive applikationer giver NOR et betydeligt højere gennemløb end NAND. Selv for applikationer med tunge skrivearbejdsbelastninger kan NOR være et fornuftigt valg. Med adgang på byte-niveau og høj læsehastighed er NOR særligt velegnet til arbejdsbelastninger, der domineres af små tilfældige skrivetilgange. Op til et punkt, hvor nettoskrivepræstationer kan nærme sig (nogle gange endda overgå) dem, der opnås på NAND-flash. Dette er især relevant for små datasæt, hvor det økonomiske argument tilsammen definitivt tipper balancen til fordel for NOR-flash.
Vil du have mere?
Det, vi har dækket i denne artikel, er knap nok toppen af isbjerget. Forhåbentlig har vi dog vist, hvordan NOR- og NAND-flashteknologier adskiller sig fra hinanden ud fra et anvendelsesdesignperspektiv, og hvordan rå ydelsestal kan fortolkes for at træffe bedre designbeslutninger.
Hvis du ønsker at læse mere om NOR- og NAND-flashteknologier, ydelsesvurdering og andre avancerede lagringsrelaterede emner, indeholder TREEspan-brugermanualen et væld af oplysninger, både generelle og specifikke for TREEspan File System (TSFS).