Intel 82PM45 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
-------

Mälukontrolleri tõttu tekkinud pudelikael CPU ja perifeeriaseadmete vahel
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 1990ndatel 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
------

1. ↑  Comptia A+ Certification Exam Guide, Seventh Edition, by Mike Meyers, sõnastikus: "Chip that handles memory requests from the CPU."
2. ↑  Adam G Neat (2004). ""Maximizing Performance and Scalability with IBM WebSphere"". *apress* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
3. ↑  Joel M. Tendler (20.01.2014). ""An introduction to POWER8 processor"" (PDF). *IBM Corporation* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
4. ↑  Prof. Onur Mutlu (2013). ""Computer Architecture: Main Memory (Part II)"" (PDF). *Carnegie Mellon University* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
5. ↑  NXP (15.04.2004). ""Memory Controller"" (PDF). *NXP* (ENG). Originaali (PDF) arhiivikoopia seisuga 4.05.2016. Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
6. ↑  John Carter, Wilson Hsieh, Leigh Stoller, Mark Swansony, Lixin Zhang, Erik Brunvand, Al Davis, Chen-Chi Kuo, Ravindra Kuramkote, Michael Parker, Lambert Schaelicke, Terry Tateyama (1999). ""Impulse: Building a Smarter Memory Controller"" (PDF). *University of Utah* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: mitu nime: autorite loend (link) CS1 hooldus: tundmatu keel (link)
7. ↑  Intel (juuni 2013). ""2nd Generation Intel® Core™ Processor Family Desktop, Intel® Pentium® Processor Family Desktop, and Intel® Celeron® Processor Family Desktop"" (PDF). *Intel* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
8. ↑  Intel (september 2014). ""2nd Generation Intel® Core™ Processor Family Mobile and Intel® Celeron® Processor Family Mobile"" (PDF). *Intel* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)
9. ↑  Igor Skochinsky (2014). ""Secret of Intel Management Engine"". *SlideShare* (ENG). Vaadatud 29.04.2016.`{{netiviide}}`: CS1 hooldus: tundmatu keel (link)