Tuohon DDR4 vs DDR5 keskusteluun vielä sen verran että kyseessä on huomattavasti isommasta hypystä kuin DDR3 -> DDR4.
DDR5 tuplaa purskepituuden 8 tavusta 16 tavuun, ja tämän lisäksi jakaa kanavat 1x64B -> 2x32B.
Se kanavan koon puolitus oli pakko tehdä, jotta 64 tavun välimuistilinjoja käyttävillä prossuilla siitä muistista saadaan mitään hyötyä.
Se ei ole "tämä on lisäparannus muun päälle" vaan "pakollinen paha että se muu saadaan käytännössä toimimaan"
Näiden lisäksi tulee toki näitä perus valmistustekniikoiden parannusten mukaantuomia tiheysparannuksia ja muuta kivaa.
... ja sillä valmistustekniikan parannuksella ei ole mitään tekemistä itse muistityypin kanssa. Ihan yhtä lailla voidaan DDR4sta tehdä uusilla valmistustekniikoilla.
On turha tuijottaa muistien CAS-arvoja ja verrata niitä edelliseen muistisukupolveen, kun CL-viiveeseen törmää näiden ym. muutosten myötä huomattavasti harvemmin.
Miksi siihen törmäisi harvemmin?
Jokainen välimuistilinja on prossulla tasan saman kokoinen kuin ennenkin, ja ennen jokaisen välimuistilinjan hakua pitää CAS-osoite lähettää muistille.
Ja sekä DDR4lla että DDR5lla onnistuu tietääkseni sen liukuhihnoitus että seuraavaa CAS-osoitetta lähetetään kun edellisen data on tulossa.
Muille viiveille kuin CAS-viiveelle voikin pitää paikkaansa, kun useammalla kanavalla ja kokonaisbankkimäärällä voidaan pitää useampaa sivua auki yhtä aikaa. yms.
Ja prosessorilla suoritettava koodi ei näe kaistaa. Prosessorilla suoritettava koodi näkee sen, koska sen tekemä muistihaku valmistuu. Eli ainoa mikä merkitsee on viive.
Kaistan merkitys on vaan siinä, että jos muistiaccesia ei voida heti tehdä kun väylä on varattuna, viivettä tulee sille accessille lisää kun se joutuu odottelemaan väylän vapautumista.
CAS-viive (mitattuna absoluuttisena aikana, ei muistiväyläkellojaksoina) korreloi ihan suoraan sen kanssa, missä ajassa prossu voi sen datan sieltä muistista normaalissa tilanteessa saada, paljon enemmän kuin mikään teoreettinen kaistalukema.
CAS, RAS, RFC ja muihin ajoituksiin ja niiden aiheuttamiin viiveisiin kun ei törmätä kuin purskeiden välissä. Purskepituuden tuplaus siis parhaassa tapauksessa puolittaa näiden ajoitusten merkityksen.
Tätä "parasta tapausta" vaan ei koskaan normaaleilla PC-prosessoreilla tapahdu, koska purskepituuden tuplauksen ja kanavan leveyden puolituksen vaikutukset kumoavat toisensa. Että noita osoite- ja kontrollisignaaleita voitaisiin lähettää harvemmin, tarvisi tuplata välimuistilinjan pituus. Ja tätä ei ihan heti ole näköpiirissä kun AMD esim. meni lisäämään Zeniin "CLZERO"-käskyn joka on speksattu operoimaan nimenomaan 64-tavun välimuistilinjoilla. Tuolla käskyllä AMD siis käytännössä lukitsi x86-64n välimuistilinjan pituuden 64 tavuun myös tuleville prossuilleen.
Efektiivinen kaistanleveys nousee myös huomattavasti, koska erillisillä 2x32B kanavilla esim. cache line hakuja voidaan tehdä rinnakkain, eikä yksi haku nappaa itselleen koko kanavaa.
Molemmilla muistityypeillä koko 64 tavun välimuistilinja siirretään yhdessä muistin sisäisessä kellojaksossa.
Mutta joo, niitä siirtoja voidaan nyt DDR5lla tehdä kahta rinnakkain.
Mutta kun muisteilla joka tapauksessa on prossun näkökulmasta parinsadan kellojakson viive, niin paljonko on normaalikäytössä ongelma siitä, että jälkimmäinen odottaa sen yhden muistikellon, muutaman CPU-kellon verran ylimääräistä silloin harvoin kun niitä yritetään tehdä se kaksi rinnakkain?
Toki on olemassa jotain tilanteita, joissa muistista kopioidaan suuria datamääriä toiseen paikkaan, mutta nämä ovat aika harvinaisia tilanteita.
Tässä siis floodataan muistia täysin satunnailla accesseilla joiden välillä ei ole mitään riippuvuuksia. Tämä on melko epärealistinen tilanne. Ja tässä tuo teoreettista kaistaparannusta suurempi hyöty taidetaan saada lähinnä siitä, että tuplamäärällä kanavia saadaan tuplamäärää sivuja pidettyä yhtä aikaa auki.
Nuo muistin "floodaustilanteet" on yleensä jollain melko säännöllisellä patternilla, jossa haetaan sitä dataa peräkkäisistä osoitteista. Ja silloin hyödytään vähemmän DDR5n tuplamäärästä avoimia sivuja ja suuremmasta osoite-/komentokaistasta kun DDR4llakin saadaan homma liukuhihnoitettua mukavasti.
Ja sitten kun vaihdettaisiinkin siten, että nuo muistihaut ovat riippuvaisia toisistaan, esim. linkatun listan läpikäynti, nämä kääntyisi aivan toisenpäisiksi.
Lähinnä tämä tämän benchmarkin tilanne on relevantti jossain servereissä joissa ajetaan montaa kaistaa enemmän käyttävää täysin toisistaan riippumatonta softaa yhtä aikaa.
Onhan se DDR5 "kehittyneempI" kuin DDR4 mutta tässä on tosiaan benchmarkit vain yhdestä ääritilanteesta joka nimenomaan korostaa DDR5n hyötyjä ja jätetään sille epäedulliset tilanteet benchmarkkaamatta
DDR3 -> DDR4 hyppy voidaan työpöytäkäyttäjän näkökulmasta tiivistää kaistanleveyden parannukseen viiveen kustannuksella (ja myöhemmin se viive kurottiin umpeen). Purskepituus pysyi samana, kanavat pysyivät samana, virrankulutusta saatiin alas alhaisemien jännitteiden myötä. Pienet suorituskykyparannukset liittyen prefetchiin ja memory bankkien struktuuriin olivat loppujen lopuksi marginaalisia, suurin osa parannuksista tuli aluksi kasvaneen kaistan myötä, myöhemmin sitten myös tiukempien ajoitusten myötä. Täten suorituskykyero samalla nopeudella ja viiveillä varustettujen DDR3 ja DDR4 muistien välillä on hyvin pieni, kun taas ero DDR4 ja DDR5 muistien välillä on valtava.
Teknisesti erojen kannalta se on suurempi, tosimaailman suorituskyvyn kannalta kyseenalaisempi. Koska näissä uudistuksissa on myös enemmän haittapuolia.