Välkmälu (inglise keelesflash memory) on säilmälu, milles andmed säilivad ka toite väljalülitamise järel. Välkmälu on elektriliselt kustutatava ja programmeeritava püsimäluEEPROM erikuju (Flash EEPROM), mida ei kustutata mitte baithaaval, vaid suurte plokkidena.
Välkmälu on kompaktne, suure andmemahutavusega, väikese energiatarbega ja suhteliselt odav valmistada. Välkmälule kui elektroonilisele seadmele on omane suur lugemiskiirus (kuigi väiksem kui muutmälul) ja liikuvate osade puudumise tõttu suur löögi- ja vibratsioonikindlus. Seetõttu on välkmälu laialt kasutusel suuremahulise kompaktse andmesalvestina kas eraldi seadmena (mälupulk, mälukaart) või säilmäluna kaasaskantavates seadmetes (digikaamerates, mobiiltelefonides, mängukonsoolides) ja järjest rohkem arvuti pooljuhtkettanakõvaketta asemel või sellega kombineeritult.
Nüüdisaegsete tehnoloogiate puhul eeldatakse, et salvestatud andmed säilivad välkmälus vähemalt kümmekond aastat. See teeb need andmekandjana võrreldavaks CDga või isegi kõvakettaga, mille sisu tänapäevase ülikõrge salvestustiheduse tõttu samuti vananeb.
Välkmälu oluliseks puudusteks on piiratud tööiga (seda eriti NAND-mälul), sest iga kustutus-kirjutuskord kulutab mäluelemente. Samuti on mäluelemendid tundlikud tugevate elektrostaatiliste väljade suhtes.
Intel nägi Masuoka leiutises suurt potentsiaali ja esitles esimest NOR-tüüpi välkmälukiipi 1988. aastal.[2] NOR-tüüpi välkmälul on piiratud kustutamis- ja kirjutamiskiirus, aga see on varustatud täielike aadressi- ja andmesiinidega, mis tähendab, et suvalise adresseeritava üksuse poole on võimalik otse pöörduda. Esimestel CompactFlash-mälukaartidel oli NOR-tüüpi mälu, hiljem hakati kasutama odavamat NAND-tüüpi mälu.
Toshiba tutvustas NAND-välkmälu 1987. aastal konverentsil International Electron Devices Meeting. Sellisel mälul on lühike kustutamis- ja kirjutamisaeg. Iga mäluelement vajab kiibil vähe pinda, mis võimaldab elemente tihedalt pakkida ja seetõttu on hind biti kohta madal. Kuid NAND-mälu puhul ei ole võimalik suvalise aadressi poole otse pöörduda, vaid andmeid tuleb lugeda plokkidest, milles võib olla sadu või isegi tuhandeid bitte. Selle omaduse poolest sarnaneb NAND-mälu teiste selliste sekundaarsalvestitega nagu kõvakettad ja optilised andmekandjad.
Välkmälus säilitab andmeühikut (bitt) MOSFET-transistoriga sarnanev elektronseadis, millel on ilma väljaviiguta lisaelektrood – ujupais (ingl floating gate). See paikneb juhtpaisu all ja on lätte ning neelu vahelisest kanalist eraldatud õhukese dielektrikukihiga. Transistori elektroode sobivalt pingestades kantakse ujupaisule elektrone, mille tulemusena omandab see negatiivse elektrilaengu, mis võib jääda püsima pikaks ajaks (aastateks). Laengu olemasolu või puudumine ujupaisul määrab mäluelementi salvestatud biti väärtuse. Sellist transistori hakati mäluelementides kõigepealt kasutama PROM-tüüpi püsimälus.
Transistoristruktuuride omavahelise ühendusviisi järgi mälumassiivis eristatakse kaht tüüpi välkmälu: NOR Flash ja NAND Flash. Nimetused NOR ja NAND seostuvad vastavate loogikaelementide nimetustegaja.
NOR- ja NAND-mälud
NOR kasutab klassikalist kahemõõtmelist ristuvate rea- ja veerujuhtmetega maatriksit, kus igale ristumiskohale vastab ühe transistoriga mäluelement. Seejuures on reajuhe ühendatud transistori neeluga ja veerujuhe juhtpaisuga. Niisugune ühendusviis võimaldab otse pöörduda iga adresseeritava mälukoha juurde, kuid vajab rohkesti kiibipinda. NOR-mälule on iseloomulik lühike pöördusaeg ja seetõttu suur lugemiskiirus.
NAND kasutab kolmemõõtmelist massiivi. Selle aluseks on samasugune NOR-maatriks, kuid ühe transistori asemel on igasse ristumiskohta jadamisi ühendatud suur hulk transistore, kusjuures igaühel on eraldi väljaviik juhtpaisu pingestamiseks. Niiviisi saavutatakse oluliselt suurem paigutustihedus, sest iga elemendi juurde on vaja viia ainult üks juhe – paisujuhe. Siiski muutub kirjutamise ja lugemise algoritm keerukamaks ja sellest tulenevalt pikeneb pöördusaeg. Iga jadaühenduses transistorirühm vajab ka kaht lisatransistori rühma ühendamiseks bitiliinile. NAND-mälule on omane väike voolutarve.
Ühe biti lugemiseks antakse otsingule vastava mäluelemendi transistori juhtpaisule positiivne pinge. Ilma laenguta ujupaisuga elemendis läbib vool transistori ja väljundsignaal on väärtusega 1. Negatiivselt laetud ujupaisu korral on kanal suletud (mittejuhtiv) ning lätte ja neelu vahel ei saa voolu tekkida, mistõttu on väljundsignaali väärtus 0.
NAND-struktuuris antakse samaaegselt paisupingega teiste järjestikku ühendatud transistoride paisudele selline minimaalne pinge, et need oleksid juhtivad signaali 1 läbilaskmiseks.
Andmete salvestamine
Vajalike bittide salvestamiseks on vajalik, et piisava suurusega elektrilaeng jõuaks adresseeritava mäluelemendi ujupaisule. Selleks tuleb juhtpaisule anda küllalt kõrge negatiivse pinge impulss. Samamoodi on võimalik ka laeng ujubaasist eemaldada, nüüd aga positiivse pingega. Mäluelemendi transistori ujubaas on vaja laengust vabastada selleks, et sellessei saaks uut bititväärtust sisestada.
Nii NOR- kui ka NAND-mälusse kirjutatakse andmed kahes etapis: esmalt eemaldatakse kõigilt ülekirjutatavatelt elementidelt laeng (neile antakse bitiväärtus 1) ja seejärel viiakse vajalikud mäluelemendid olekusse 0 neile laengu andmisega.
Kui NOR-tüüpi välkmälu saab lugeda/kirjutada suvaliselt aadressilt / suvalisele aadressile, siis NAND-mälus on kustutamine võimalik vaid tervete plokkidena. Üldjuhul seatakse kõik bitid plokis väärtusele 1. Kui hakatakse kirjutama tühjale plokile, on iga bitt selles plokis seadistatav (programmeeritav). Kuid pärast seda, kui bitt seatakse väärtusele 0, võib seda seada väärtusele 1 ainult pärast terve ploki kustutamist. Teisisõnu pakub NAND-tüüpi välkmälu võimalust lugeda ja kirjutada suvalisele aadressile, aga kustutada on võimalik ainult tervete plokkidena. Ühe biti võib kirjutada üle, aga ainult siis, kui sellel on veel väärtus 1. Näiteks, kui on olemas plokk 1111, võib sellesse kirjutada 1011, siis 1001, siis 0001, ja lõpuks 0000. Pärast seda on kirjutamiseks vaja terve plokk kustutada.
Andmete kirjutamisel kasutatavad suhteliselt kõrge pinge ja tugeva voolu impulsid kahjustavad vähehaaval ujupaisu eraldavat dielektrikut, mis panebki lõpuks piiri kirjutuskordade arvule. Andmete lugemine mäluelementi ei kahjusta.
Enamik NOR-välkmälu kasutavatest seadmetest on garanteeritud vastu pidama sada tuhat kuni miljon kustutamise ja kirjutamise tsüklit, enne kui seadme töövõime hakkab halvenema.[4] NAND-mälu vastupidavus on oluliselt väiksem, mõned tuhnded tsüklid.
Välkmälul põhineval pooljuhtkettal puuduvad kõvaketaste mehaanilised piirangud. Seepärast on SSD-ketas (ingl. Solid-State Drive) hea asendus kõvakettale, sest on kiirem, müratu ja energiasäästlik. SSD-mäluseadmed on kompaktsuse ja ökonoomsuse tõttu sobivad kasutamiseks kaasaskantavates seadmetes. Järjest laieneb pooljuhtketaste kasutus ka RAID- ja SAN-arhitektuure kasutavates arvutites ning serverites.
SSD-ketaste hind on järjest alanenud. Ka lähenevad nad kirjutustsüklite arvu poolest praegustele kõvaketastele.[5][6]
On olemas hübriidsed tehnoloogiad, näiteks ReadyBoost, mis kasutavad SSD ja HDD paremaid omadusi.
Mälumahu suurendamine
Kuna välkmälul on lihtne struktuur ja järjest kasvab vajadus suurema mahu järele, püütakse pidevalt vähendada välkmälus kasutatavate komponentide mõõtmeid, seda eriti NAND-mälu osas. Kui mäluelemendi suurus jõuab tehnoloogiliselt minimaalse piirini, saab edaspidine tiheduse suurenemine baseeruda ühte elementi mahtuvate bittide arvu suurendamise teel. Nii ongi kasutusel MLC- ja TLC-elemendid, mis mahutavad vastavalt kaks või kolm bitti.
Uurimisjärgus on mitmed uued tehnoloogiad (näiteks FeRAM (ferroelektriline mälu) ja MRAM (magnetoresistiivne mälu), mis võivad tulevikus hakata välkmälu asendama.[7]