Flash-muisti

Flash-muisti on puolijohdemuisti, joka voidaan sähköisesti tyhjentää ja uudelleen ohjelmoida. Flash-muisti on haihtumaton muistityyppi (), jossa tieto säilyy virran katkaisun jälkeen. Flash-muistissa ei ole liikkuvia mekaanisia osia. 
Flash-muisteja käytetään yleensä laitteissa, joilta vaaditaan pientä kokoa, keveyttä ja vähäistä virrankulutusta, kuten kannettavissa MP3-soittimissa, matkapuhelimissa, digitaalikameroissa ja muistitikuissa. Flash-muistiin perustuvia piirejä käytetään nykyisin myös kiintolevynä tietokoneissa (SSD, Solid state drive).
Flash-muistit sopivat parhaiten sovelluksiin, joissa muistista luetaan paljon, mutta sinne kirjoitetaan vähän. Siksi ne soveltuvat "ohjelmamuisteiksi" laitteisiin, joissa muistipiirille tallennettu ohjelma saatetaan päivittää myöhemmin.
Yhden bitin tilan tallentava muistialkio koostuu MOSFET-tyyppisestä rakenteesta, jossa tavanomaisen hilan lisäksi on oksidikerroksella eristetty, kelluva hila. Ohjelmoitaessa bitti 0 kelluvaan hilaan injektoidaan sähkövaraus, joka estää virran kulun. Jos varaus puretaan, kanavan johtavuus kasvaa, ja muistialkio saa arvon 1.
Historia.
Fujio Masuoka Toshiballa keksi NAND flash-muistit 1980-luvun alussa. Masuoka esitti artikkelin muistisuunnittelustaan vuonna 1984, jonka jälkeen Intel aloitti kehityksen NOR logiikkaportteihin perustuvaan flash-muistiin.
Vuonna 2002 markkinoilla oli jo yhden gigabitin kokoisia flash-muistipiirejä.
Vuonna 2003 Intel kertoi ettei flash-muisti skaalautuisi 65 nanometrin alle. Myöhemmin yhtiö ilmoitti sen skaalautuvan 35 nanometriin. Vuonna 2007 Toshiba kertoi menetelmästä valmistaa flash-muistia 11 nanometrin tekniikalla.
Vaihtoehtoja flash-muistille kehitetään ja näitä ovat muun muassa FeRAM ja MRAM.
Tekniikka.
Flash-muisti tallentaa tietoa muistisoluihin, jotka muodostuvat kelluvan hilan transistoreista. NOR-flashissa jokaisen muistisolun yksi pää on kytketty lähdelinjaan ja toinen pää bittilinjaan, joka muistuttaa NOR-porttia. NAND-flashissa monta muistisolua (tyypillisesti kahdeksan solua) on kytketty sarjaan NAND-portin tapaan.
NOR-flashissa on tarpeeksi osoitelinjoja koko muistialueelle, joka tekee siitä nopean lukea ja jokainen bitti tiedetään toimivaksi. NOR-flashista voidaan suorittaa ohjelmakoodia suoraan. Haittapuolena on suurempi solun koko, joka johtaa suurempaan kustannukseen bittiä kohden ja hitaampaan kirjoitus- ja tyhjennysnopeuteen. NOR-flashissa on 16-bitin dataväylälle 27 osoitelinjaa, joka mahdollistaa hajasaannin.
NAND-flashissa on huomattavasti pienempi solun koko ja paljon nopeammat kirjoitus- ja tyhjennysnopeudet verrattuna NOR-flashiin. Haittapuolena ovat hitaammat lukunopeudet ja monimutkaisempi epäsuora lukeminen. Ohjelmakoodin suoritus NAND-flashista tapahtuu kopioimalla tiedot RAM-muistiin (), joka eroaa NOR-flashista. NAND-flashissa muistiväylä on multipleksattu ja käyttää 8- tai 16-bitin osoite/dataväylää sekä lisäsignaaleja.
NAND-flashia saa huomattavasti suuremmilla tiheyksillä ja halvemmalla kustannuksella per bitti ja NAND-flashia käytetään datan tallentamiseen. Molemmissa tyypeissä (NOR ja NAND) muisti järjestetään tyhjennettäviin lohkoihin, joka alentaa kustannuksia. NOR-flashissa jokaiseen tavuun on kirjoitettava nolla ennen kuin se voidaan tyhjentää, joka tekee tyhjentämisestä hitaampaa. Molemmissa tyypeissä lohkoon voidaan kirjoittaa vain kun se on tyhjä, jonka vuoksi hidas tyhjentäminen entisestään hidastaa NOR-flashiin kirjoittamista.
NOR-flashissa on aluksi suurempi virrankäyttö kun virta kytketään päälle, mutta valmiustilassa NOR-flashissa on alhaisempi virrankäyttö. NOR-flashilla on etu hajasaantiluvussa kun taas NAND-flashilla on etu kirjoituksessa.
Flash-muistityypit kärsivät "bitin kääntymisestä" tunnetusta ilmiöstä, joka on yleisempi NAND-flashissa kuin NOR-flashissa. NAND-flashissa on pieniä virheitä kauttaaltaan, joka johtuu valmistussaannista (). Osa muistisoluja vikaantuu käytön aikana, josta johtuen virheenkorjaus on välttämätön ominaisuus NAND-flashin kanssa. NOR-flashit voidaan toimittaa ilman huonoja lohkoja.
Käyttökerrat ja tiedon säilyvyys.
Flash-muistin kuhunkin lohkoon voidaan kirjoittaa ja tyhjentää tietyn "syklimäärän" verran sen elinkaaren aikana, johon vaikuttaa useita tekijöitä. Ohjenuorana MLC NAND-flash kestää noin kymmenen tuhatta sykliä kun taas SLC NAND-flash voi kestää sata tuhatta sykliä.
Tiedon säilyvyys muistissa vaihtelee ja riippuu olosuhteista, mutta ohjenuorana valmistajat ilmoittavat säilyvyysajaksi NAND-flashille 10 vuotta.
Lämpötila on merkittävä tekijä tiedon säilyvyydelle syklimäärän lisäksi: erittäin korkeat tai alhaiset lämpötilat heikentävät säilyvyyttä. Teollisuusympäristöihin suositellaan siihen suunnattua ratkaisua.
NOR-flashin käyttö ja säilyvyys voivat olla poikkeavat NAND-flashista.