NOR vs. NAND: So You Think You Know the Music?

Jotka ovat viettäneet edes vähän aikaa kaivelemalla oivalluksia sulautetuista tallennustekniikoista, tietävät tämän: Internetin tälle nimenomaiselle aiheelle omistettu alatila on tulvillaan lyhyitä NOR- ja NAND-flash-tekniikoita vertailevia artikkeleita. Jotkut niistä ovat erittäin hyvin kirjoitettuja ja todella valaisevia. Mutta aivan liian usein pelkkä tylsä, kuiva ja asiayhteyttä vailla oleva sisältö jättää sinut kaipaamaan enemmän. Ellei sitten ole mitään muuta? Ellei nämä muutamat palat runsaasti toistettua materiaalia ole kaikki, mitä voi tietää? Me emme usko niin.

Tämä kolmas artikkeli flash-tallennusta käsittelevässä esittelysarjassamme (ks. osat 1 ja 2) on oma versiomme ”NOR vs. NAND” -klassikosta. Versio, joka toivottavasti kohottaa ymmärrystäsi näistä laajalle levinneistä tallennustekniikoista ja auttaa sinua tekemään parempia suunnittelupäätöksiä. Tästä huolimatta tämä artikkeli ei ole opettavainen, itsenäinen johdantoteksti. Se on pikemminkin tavanomaisen johdannon täydennys, jossa käsitellään NOR- ja NAND-flash-tekniikoihin liittyviä näkökohtia, jotka mielestämme jätetään liian usein huomiotta. Jos NOR- ja NAND-flash-tekniikat ovat sinulle täysin uusia, saatat haluta ensin tutustua neutraalimpaan materiaaliin, kuten Wikipedian samaa aihetta käsitteleviin artikkeleihin. Toisaalta, jos sinulla on jo laaja tietämys näistä tekniikoista, saatat silti löytää tästä artikkelista hyödyllisiä (ehkä jopa yllättäviä) tiedonmurusia.

Beyond Numbers

Taulukossa 1 vertaillaan NOR- ja NAND-flash-tekniikoita vierekkäin eri suorituskykymittareiden perusteella. Vaikka nämä luvut voivat vaihdella merkittävästi todellisissa laitteissa, ne ovat uskottavia ja voivat toimia arvokkaana vertailukohtana.

NOR NAND
Kirjoitusläpijuoksutuskyky 1 MB/s 10 MB/s
Lukuteho 40 MB/s 30 MB/s
Lukuteho Pyyhkäisyteho 0.1 MB/s 300 MB/s
Tyhjennä-Kirjoituksen läpimenoteho 100 KB/s 10 MB/s
Luennan rakeisuus Byte Sivu (4KiB tyypillisesti)
Write Granularity Byte (tyypillinen) Page (4 KiB tyypillinen)
Erase Granularity Block (64 KiB tyypillinen) Lohko (256 KiB tyypillinen)
Kirjoituksen energiankulutus 1uJ/byte 10nJ/byte
Lukemisen energiankulutus 1nJ/byte 1nJ/byte
Pyyhkimisen energiankulutus 600nJ/byte 0.2nJ/byte

Taulukko 1. Todennäköiset NOR- ja NAND-flash-ominaisuudet

Mutta niin hyödyllisiä kuin ne ovatkin, luvut ilman asianmukaista tulkintaa ovat merkityksettömiä, ellei suorastaan harhaanjohtavia. Raakasuorituskykyluvut sopivat hyvin markkinointiin, koska ne on helppo ilmoittaa ja ymmärtää (ainakin pintapuolisesti), mutta sovellussuunnittelun kannalta ne eivät sisällä paljonkaan relevanttia tietoa.

Kuvitetaanpa, mitä tarkoitamme konkreettisella esimerkillä: kirjoitussuorituskyvyt. Taulukosta 1 käy ilmi, että kirjoittaminen on paljon nopeampaa NAND-muistissa kuin NOR-muistissa. Itse asiassa tämä on valheellinen väite, joka nousee esiin aivan liian usein. Toki siinä on jonkin verran perää. Mutta se on myös täysin pelkistävä ja tasoittaa tietä huonoille suunnittelupäätöksille. Katsotaanpa tarkemmin.

NOR-flash mahdollistaa tavutason kirjoitusoikeudet. NAND-muistitikulla sen sijaan on paljon karkeampi kirjoitusrakeisuus. NAND-flashissa tietoja voidaan kirjoittaa vain sivuina, tyypillisesti 4 KiB kerrallaan NAND SLC:ssä (8 KiB tai enemmän NAND MLC:ssä). Jos kyseessä on pieni kirjoituskäyttö (esimerkiksi 512 tavua), koko sivu on ladattava RAM-muistiin, muutettava ja kirjoitettava takaisin. Loppujen lopuksi kirjoitetaan enemmän dataa kuin todellisuudessa muutetaan. Tätä ilmiötä kutsutaan yleisesti kirjoitusvahvistukseksi. (Hyvin uskottavassa) esimerkissämme kirjoitusvahvistus on 8 (4 kiibin sivu/512 tavun käyttö). Jos työtaakkaa hallitsevat tällaiset pienet käyttöoikeudet, efektiivinen kirjoitusläpimenoteho laskee kahdeksankertaiseksi. Tämä on melko paljon. Mutta on vielä muutakin.

Ennen kuin tietoja voidaan kirjoittaa, tiedostojärjestelmän (tai tietokannan) on ensin löydettävä ne. Hakuprosessi voi olla enemmän tai vähemmän tehokas riippuen muun muassa tiedostojärjestelmästä ja käytettävissä olevan välimuistin määrästä. Jokaiseen kirjoituskäyttöön liittyy kuitenkin yleensä oma osuutensa vastaavista lukukäytöistä. NOR-flash-muistissa lukukäyttö on erittäin nopeaa. Niille on ominaista lähes nollaviive ja erittäin suuri läpäisykyky. Tärkeintä on, että lukukäyttö tapahtuu tavutasolla. Tämä on erityisen hyödyllistä tiedonhakuprosessin kannalta, koska tiedostojärjestelmien sisäiset rakenteet koostuvat yleensä pienistä ja hajanaisista tiedonpalasista.

Toisaalta satunnaiset lukukäyttöoikeudet NAND-flashissa ovat huomattavasti hitaampia. Ja aivan kuten kirjoitusoikeudet, ne suoritetaan sivutasolla. Pienten käyttökertojen osalta tämä aiheuttaa jonkin verran tuhlausta, koska koko sivu on joka tapauksessa ladattava. Tämä lisäkustannus, jota kutsutaan lukuvahvistukseksi, rajoittaa NAND-muistitikun kirjoitussuorituskykyä, mikä ei käy heti ilmi taulukosta 1.

Yhteenvetona nähdään, että NOR- ja NAND-tekniikoiden nettokirjoitussuorituskyky (eli luku-/kirjoitusvahvistus ja haun yleiskustannus huomioon ottaen) ei eroa toisistaan niin paljoa kuin raa’at suorituskykyluvut aluksi näyttävät osoittavan. Mikä tärkeintä, se tekee selväksi, että perusteellista suorituskyvyn arviointia ei voida tehdä ottamatta huomioon sovelluksen käyttötapoja, mukaan lukien käytön koko ja jakautuminen koko datajoukossa.

Grass is Green, Sky is Blue, NOR Is For Code, NAND Is For Data

Täällä on sitkeä harhaluulo, jonka kuulemme silloin tällöin, että NOR-flash on koodia varten, kun taas NAND-flash on dataa varten. On totta, että NOR-flashia käytetään yleisemmin koodin tallentamiseen kuin NAND-flashia. Tähän on kaksi pääsyytä. Ensinnäkin tavutason tarkkuus mahdollistaa koodin suorittamisen paikan päällä, mikä on kiistaton etu pienissä sulautetuissa järjestelmissä. Toiseksi pienissä ja keskisuurissa laiteohjelmistoissa (esimerkiksi alle 64 Mt) NOR on yksinkertaisesti taloudellisesti järkevämpi, koska pienimmät saatavilla olevat NAND-laitteet ovat huomattavasti kalliimpia.

Tämän sanottuaan monet asiakkaamme käyttävät NOR-flashia tietojen tallentamiseen. Ja hyvästä syystä. Lukuintensiivisissä sovelluksissa NOR tarjoaa huomattavasti suuremman läpäisykyvyn kuin NAND. Jopa sovelluksissa, joissa on paljon kirjoitustyötä, NOR voi olla järkevä valinta. Koska NOR-muistitietoihin voidaan päästä tavu-tasolla ja niiden lukunopeus on suuri, ne soveltuvat erityisen hyvin työtehtäviin, joita hallitsevat pienet satunnaiset kirjoitusoikeudet. Jopa siinä määrin, että nettokirjoitussuorituskyky voi lähestyä (joskus jopa ylittää) NAND-flashilla saavutetun suorituskyvyn. Tämä on erityisen tärkeää pienten tietokokonaisuuksien kohdalla, joissa taloudelliset perustelut kallistavat ehdottomasti NOR-flashia suosivaa tasapainoa.

Tahdotko lisää?

Se, mitä olemme käsitelleet tässä artikkelissa, on tuskin jäävuoren huippu. Toivottavasti olemme kuitenkin osoittaneet, miten NOR- ja NAND-flash-tekniikat eroavat toisistaan sovellussuunnittelun näkökulmasta ja miten raakoja suorituskykylukuja voidaan tulkita parempien suunnittelupäätösten tekemiseksi.

Jos haluat lukea lisää NOR- ja NAND-flash-tekniikoista, suorituskyvyn arvioinnista ja muista edistyneistä tallennustiloihin liittyvistä aiheista, TREEspan-käyttäjän käsikirja sisältää runsaasti sekä yleistä että TREEspan-tiedostojärjestelmää (TSFS) koskevaa tietoa.

Vastaa

Sähköpostiosoitettasi ei julkaista.