Mälukontroller

**Mälukontroller** (ingl. *Memory Controller*) on digitaalahel, mis haldab sisenevat ja väljuvat andmevoogu arvuti põhimälust. Mälukontroller võib olla eraldiseisev kiip või integreeritud mõnda teise kiipi, näiteks mikroprotsessorisse, siis nimetatakse seda **integreeritud mälukontrolleriks** (ingl. *Integrated Memory Controller* ehk *IMC*). Mälukontrollerit kutsutakse vahel ka mälukiibi kontrolleriks (*MCC*) või mälukontrolleri üksuseks (*MCU*).
## Ajalugu

Inteli mikroprotsessoreid kasutavates arvutites on traditsiooniliselt rakendatud mälukontrollereid, mis asuvad emaplaatide põhjasillal. Paljud modernsemad mikroprotsessorid (näiteks Compaqi Alpha 21364, AMD Athlon 64 ja ka Opteron seeria, IBMi POWER5, Sun Microsystemsi UltraSPARC T1 kui ka tänapäevased Inteli Core i5 ja Core i7 mikroprotsessorid) omavad integreeritud mälukontrollerit, mis lühendavad mälu latentsusaega.

Kuigi integreeritud mälukontroller võib tõsta süsteemi üldist võimekust, piiritleb see mikroprotsessori kindlale mälutüübile (või kindlatele mälutüüpidele), mistõttu tuleb riistvara uute mälutüüpide toetamiseks ümber projekteerida. Näiteks DDR2 SDRAM mälu kasutusevõtmisel tuli AMD turule uute Athlon 64 protsessoritega, millel olid teistsuguse füüsilise pistikuga (tuntud kui sokkel AM2) uued DDR2 kontrollerid ja mis sobisid ainult DDR2 mälu kasutavatele emaplaatidele. Kui mälukontroller pole kiipi integreeritud, siis saab sama keskprotsessorit paigaldada uuele emaplaadile, millel on uuendatud ainult põhjasild.

Mälukontrolleri integreerimine ühele kiibile ei ole uus idee. Mõned 1990. aastatel loodud mikroprotsessorid (näiteks DEC Alpha 21066 ja ka HP PA-7300LC) omasid integreeritud mälukontrollereid, kuna eraldiseisva kontrolleri kaotamine vähendas süsteemi loomise kulusid.

Osad keskprotsessorid on disainitud kasutama mälukontrollereid kui kiibistikust eraldi seisvaid komponente. Näiteks IBM-i POWER8 kasutab väliseid Centaur kiipe, mis on paigutatud DIMM-moodulitesse ning käituvad mälupuhvritena, L4-vahemäluna ja ka mälukontrollerina. Praegused Centauri kiibid on mõeldud kasutama DDR3-mälu, kuid tuleviku variandid saavad kasutada DDR4- või mõnd muud mälutehnoloogiat, ilma et oleks vaja vahetada POWER8 kiipi ennast.

## Eesmärk

Mälukontrollerid sisaldavad loogikat, mis on vajalik andmete lugemiseks ja kirjutamiseks DRAM-i ning ka selle värskendamiseks. Ilma pideva värskendamiseta andmed kaovad, sest kondensaatorid tühjenevad lühikese aja jooksul ning nende abil salvestatud informatsioon kaob. Lisaks reguleerib mälukontroller ka seda, milliseid pesi kasutatakse täisvõimsusel ja millised on ooterežiimis.

Andmete kirjutamine ja lugemine dünaamilises muutmälus toimub õige rea ning veeru valimisega vastavalt andmete aadressidele ning nende edastamine multiplekserile. Sealt edasi valib dünaamilises muutmälus olev demultiplekser õiged mäluaadressid ning tagastab andmed samuti läbi multiplekseri, et konsolideerida andmeid ja vähendada operatsiooniks vajalikku siinilaiust.

Siinilaius tähendab mälupesaga ühenduses olevate rööpsete siinide arvu. Mälukontrollerite siinilaius algab 8-bitist esimestes süsteemides kuni 512-bitini keerulistemates süsteemides ja graafikakaartides (tüüpiliselt rakendatud kui neli 64-bitist üheaegselt rööbiti töötavat mälukontrollerit).

Mõned mälukontrollerid (näiteks PowerQUICC II protsessorisse integreeritud kontroller) on võimalik samaaegselt ühendada eri tüüpi seadmetega, sealhulgas SDRAM, SRAM, ROM ja MMIO. Igaüks neist vajab veidi erinevat juhtsiini, kuid mälukontroller esitleb neid protsessorile kui tüüpilise süsteemisiini või esisiinina. Mõned mälukontrollerid (näiteks PowerQUICC II protsessoris olev kontroller) sisaldab vigade leidmise ja parandamise riistvara.

Üksikud eksperimentaalsed mälukontrollerid omavad lisaks esimesel tasemel olevale mäluhaldus üksuse poolt aadressite tõlgendamisele ka teist taset aadresside tõlgendamiseks.

Teatud Intel Core protsessoritesse paigaldatud mälukontrollerid pakkusid mälu skrämblimise võimalust, ehk võimaldati muuta põhimällu kirjutatavad kasutaja andmeid pseudojuhuslikeks mustriteks. Nii välditakse ekspertiisil ja pöördprojekteerimisel põhinevat andmete analüüsi DRAM-is, et ära hoida külmkäivitusründeid. See võimalus disainiti mitte turvalisuse tagamiseks, vaid DRAM-iga seotud elektriliste probleemide lahendamiseks, seetõttu ei saa seda pidada rangelt krüptograafilise turvalisuse tagamiseks.

## Variandid
### DDR-mälu

DDR-mälukontrollerid (DDR – Double Data Rate) on kasutusel DDR SDRAM-i juhtimiseks, kus andmeid edastatakse nii langeva kui tõusva mälu taktsignaali frondi ajal. DDR-kontrollerid on keerukama ehitusega kui ühekordse kiirusega sünkroon-DRAM-kontrollerid, kuid lubavad edastada kahekordset andmemahtu ilma mälupesa taktsignaali või siini laiust muutmata.

### Kahekanaliline mälu

Kahekanalilise mälu kontrollerid on mälukontrollerid, kus DRAM-seadmed on eraldatud kahe siini abil, et lubada kahel mälukontrolleril luua ühendust paralleelselt. See kahekordistab siini teoreetilist andmeside kiirust. Teoreetiliselt on võimalik ehitada ka rohkem kanaleid (ideaalses lahenduses kanal iga DRAM-i pesa kohta), aga kuna suur juhtmete arv, suurenev müra ja vajadus selle järele, et paralleelse ühenduse juhtmed oleks ühepikkused, tähendab see, et uusi kanaleid on väga raske lisada.

### Täielikult puhverdatud mälu

Täielikult puhverdatud mälu süsteemide korral paigaldatakse mälupuhver igale mälumoodulile (mida täielikult puhverdatud muutmälu kasutamisel kutsutakse FB-DIMMiks), mis erinevalt tavalistest mälukontrolleritest, kus kasutusel paralleelühendus RAMiga ühendumiseks, kasutab jadaühendust ühendumaks mälukontrolleriga. Selline lahendus vähendab mäluseadmete emaplaadile paigaldamiseks vajalike juhtmete hulka (lubades kasutada vähem kihte, mis omakorda tähendab, et ühele plaadile on võimalik lisada rohkem mäluseadmeid), seda küll suureneva latentsuse arvelt. Latentsuse suurenemine on tingitud sellest, et rohkem aega kulub DRAM-ilt loetud paralleelinformatsiooni teisendamiseks jadainformatsiooniks, mida saaks kasutada FB-DIMM kontroller ja ka tagasiteisendamine emaplaadil olevale mälukontrollerile.

Teoorias on võimalik panna FB-DIMM-mälupuhvri seadmed kasutama ükskõik milliseid DRAM-i pesi. See võimaldab ehitada mälukontrollereid, mis saavad hakkama kõikide DRAM-i pesadega, aga vastav tehnoloogia on veel arendusjärgus.

### Välkmälu kontroller

Mitmed välkmäluseadmed, näiteks USB-mälupulgad, sisaldavad kiibil välkmälu kontrollerit. Välkmälu ei vaja pidevat värskendamist ja salvestatud andmed säilivad ka olukorras, kui toide on eemaldatud. Välkmälu ei sobi muutmäluseadmeks, kuna on olemuselt muutmälust aeglasema ligipääsuga ja muutub pärast mõnda miljonit kirjutamistsüklit kasutamatuks.

## Vaata ka
*Muutmälu
*Keskprotsessor

## Viited