Kyllä.
Muistista haetaan kerralla sellaisen burstin pituinen määrä dataa, mitä kyseinen muististandardi tukee.
Muististandardit tukevat monen eri kokoisia accesseja. Ja muisteja voidaan laittaa eri määrä rinnakkain.
Sen sijaan pienin datamäärä mitä välimuistit pystyvät käsittelemään ja josta pitämään kirjaa on tasan sen välimuistilihkon koko.
Välimuisti ei koskaan pyydä mitään muuta määrää dataa ulommalta muistilta, kuin välimuistilinjansa verran.
Prosessorin muistiohjaimet ja välimuistit suunnitellaan tuon kanssa yhteensopivaksi.
64 tavun välimuistilinja, jota on käytetty kaikissa x86-prosessoreissa >10 vuotta ja tullaan (hyvin todennäköisesti) käyttämään vielä monta vuotta tulevaisuudessakin, on yhteensopiva kaikkien tunnettujen , nykyisten ja tulevien JEDECin standardoimien keskusmuistiksi tarkoitetujen muistityyppien kanssa.
DDR5n tapauksessa itse asiassa homma menee nimenomaan sitenpäin, että muististandardia on nimenomaan "tuunattu" JOTTA se toimisi järkevästi myös 64 tavun välimuistilinjojen kanssa.
Ja prosessorin välimuistilinjan koko ei ole asia jota vaihdetaan kuten muistityyppiä tai sukkia. Se vaikuttaa kaikkeen siinä välimuistin kirjanpidossa, se vaikuttaa välimuistin koherenttiusprotokollaan. Ja koska data- ja käskyvälimuistien pitää pysyä koherentteina keskenään, se vaikuttaa selvästi myös käskynhakuun ja mm. siihen, miten hypyt ja niiden kohteet kannattaa olla alignoituna muistissa että ne on nopeita. Välimuistin lohkokokoa voidaan helposti vaihtaa vain kun koko ydin menee aivan uusiksi.
Ja Zenissä jopa lisättiin käsky (clzero) joka kirjoittaa yhden välimuistilinjan verran nollia, eli välimuistilinjan koko käytännössä paljastettiin softalle; Jos välimuistilinjan koko muuttuu, tämän käskyn toiminta muuttuu.
Samsung meni omaan Mongoose M1-ARM-ytimeensä 128 tavun lohkokoon, kun sen kanssa "little"nä käytettävässä Cortex A53ssa on vain 64 tavun lohkokoko. Tästä seurasi aika ilkeitä bugeja Exynos 8890-piirillä.
Exploding batteries to the left, exploding code to the right
www.theregister.co.uk
Tuo burstin pituus merkittäviltä osin määrittää sen muistin nopeuden, sillä peruskelloa ei voi määrättömästi nostaa.
Tässä ollaan hyvin oikeilla jäljillä, tosin en ole varma, onko asian kaikkia yksityiskohtia kuitenkaan aivan täysin ymmärretty.
Tässä on siis kyse siitä, kuinka monta kertaa leväempi sisäinen dataväylä (ja pienempi datansiirtotaajuus) muistilla sisäisesti on vs sen väylän datansiirtotaajuus ja leveys. Tälle käyetään termiä prefetch mikä on harhaanjohtava koska tällä on myös toinen täysin erilainen merkitys välimuisteista puhuttaessa.
Tämä ei kuitenkaan suoraan lukitse burstin pituutta. Se ainoastaan
asettaa minimin sille, kuinka lyhyellä burstilla saadaan tehtyä
kaistan kannalta optimaalisia siirtoja ilman että kikkaillaan useamman bankin kanssa
Eli, DDR2-400 toimii ulkoisesti 200 MHz kellotaajuudella, siirtäen dataa nousevalla ja laskevalla reunalle (400 MHz datansiirtotaajuus) mutta sisäisesti 100 MHz taajuudella. Kun muistista haetaan yhtään mitään, yhtä ulkoisen väylän bittiä kohden haetaan ja sisäisesti siiretään yhden sisäisen kellojakson aikana neljästä rinnakkaisesta paikasta 4 bittiä(prefetch=4n). Nämä voidaan sitten siirtää piiriltä ulos kahden ulkoisen kellojakson (neljän ulkoisen kellonreunan) aikana eli samassa ajassa.
DDR3-800 toimii sitten ulkosesti 400 MHz kellotaajuudella, siirtäen dataa nousevalla ja laskevalla reunalle (800 MHz datansiirtotaajuus) mutta sisäisesti 100 MHz taajuudella. Kun muistista haetaan yhtään mitään, yhtä ulkoisen väylän bittiä kohden haetaan ja sisäisesti siiretään yhden sisäisen kellojakson aikana kahdeksasta rinnakkaisesta paikasta 8 bittiä(prefetch=8n). Nämä voidaan sitten siirtää piiriltä ulos neljän ulkoisen kellojakson (kahdeksan ulkoisen kellonreunan) aikana eli samassa ajassa.
Mutta tämä pätee vain DDR3een asti.
DDR4ssa edelleen itse muistisoluista haetaan yhdellä accessilla yhtä muistiväylän bittiä kohden vain 8 bittiä kerrallaan(prefetch=8n), mutta ulkoinen väylä käy silti selvästi suuremmalla nopeudella kuin 8x datansiirtotaajuudella. Ja se, miten se muistiväylä saadaan työllistettyä sen loppuajan siitä yhdestä pitkästä sisäisestä kellojaksosta on, siellä suoritetaan
seuraava burst-siirto jonka data tulee toisesta bank groupista; DDR4 tukee neljää bank grouppia; Kun kaksi erillistä accessia osuu eri bank grouppeihin, niiden datat voidaan hakea saman sisäisen kellojakson aikana muistisoluista ja tunkea saman sisäisen kellojakson aikana peräkkäin ulos ulkoiselle väylälle.
Burstin pituus oli DDR2:ssa 4 siirtoa
Väärin. DDR2n bursin pituus on
vähintään 4 siirtoa. Se voi olla myös enemmän, ainakin 8.
Prefetch on DDR2ssa 4n.
ja DDR3:n sekä DDR4:n kanssa 8 siirtoa.
Väärin, se voi olla myös 4 (burst chop mode), mutta tämä tarkoittaa vaan sitä, että muistisoluista jo haetusta datasta heitetään puolet mäkeen ja ilmeisesti kaista puolittuu.
Verrattuna siihen, että data, jota ei tarvita, heitettäisiin mäkeen vasta siirron jälkeen toisessa päässä tällä kuitenkin säästetään virtaa tapauksissa, joissa muistiväylän ja välimuistin välinen konfiguraatio on epäoptimaalinen.
En ole varma, onnistuuko DDR4lla myös 4-mittaiset burstit neljään eri bank grouppiin, jolloin kaista ei tässä tilanteessa kärsi, mikäli accessit oikeasti sattuu osumaan neljään eri bank grouppiin.
Prefetch on DDR3ssa ja DDR4ssa 8n.
DDR5 käyttää oletusarvoisesti 16. pituista burstia
Nyt tajusit vihdoin lisätä "oletusarvoisesti"-sanan joka tekee väitteestäsi toden.
Tosin siinä on myös 32-pitkä moodi.
ja on oletettavaa, että prosessoriarkkitehtuuri / muistiohjaimet suunnitellaan myös sitä tukemaan.
Se 64 tavun välimuistilohko, jota on käytetty jo >10 vuotta, tukee sitä. 32-bittisillä muistikanavilla, joihin DDR5n myötä siirrytään.
Olisi varsin typerää, jos näin ei tehtäisi.
Välimuistin lohkokoko ja musitiohjaimen suunnittelu on toisistaan jossai määrin erillisiä asiota, ja se, kumpi vaikuttaa kumpaan, menee täysin toisinpäin: Muistiohjain suunnitellaan siten, että se palvelee sitä välimuistia mahdollisimman hyvin, kun välimuistin lohkokoko on ensin lyöty lukkoon.
Ja DRAM-muistiohjain suunnitellaan aina nimenomaan jollekin muistityypille että se
toimii, ja on aivan itsestäänselvyys, että se optimoidaan toimimaan nopeasti sillä muistyypillä, jota se tukee.
Sen sijaan siinä, kumpi vaikuttaa kumpaan myös välillä välimuistilinjan koko vs muististandardii homma välimuistilinjojen koon kanssa menee käytännössä nykyään siten, että muististandardi (DDR5-DIMMin kanavan leveys) tuunattiin siten että se toimii optimaalisesti 64 tavun välimuistilinjojen kanssa.
Nythän yhtään DDR5-muistillista x86-prosessoria ei ole julkistettu ja kaikki mitä sinä (tai minä) sanot on spekulaatiota.
Erottelen kyllä kommenteissani hyvin selvästi spekulaation ja faktat toisistaan, ja kaikki mitä sanoin tuossa edellisessä viestissäni on faktaa, ei spekulaatiota.
Sinä sen sijaan sekoitat
minimiburstin pituuden ja burstin pituuden, ja sinä täällä spekuloit siitä mitä mielestäsi pitää muuttaa
tai jopa on pitänyt muttaa, vaikka tosiasia on, että ei ole muutettu.
Väännetään vielä rautalankaa:
Kun dataa haetaan yhdellä 64-bittisellä kanavalla, 64-tavuisen välimuistilinjan siirtämiseen tarvitaan 8 peräkkäistä siirtoa.
Tämän voi tehdä DDR2lla, DDR3lla ja DDR4lla yhdellä 8-mittaisella burstilla.
Kun data on interleavattu kadelle kahdelle 64-bittiselle kanavalle, 64-tavuisen välimuistilinjan siirtämiseen tarvitaan 4 peräkkäistä siirtoa
Tämän voi tehdä DDR2lla yhdellä 4-mittaisella burstilla.
Tämän voisi tehdä DDR3lla ja DDR4lla chop-modessa 4-mittaisella burstilla, mutta (nyt alkaa spekulaatio)
käsittääkseni näin ei yleensä tehdä, vaan DDR3n ja DD4n kanssa tällaisten kahden kanavan välillä interleavausta ei prosessoreilla tehdä, vaan data interleavataan siten, että kokonainen välimuistilinja on aina yhdessä kanavassa ja seuraava seuraavassa, ja tällöin voidaan käyttää optimaalista 8-mittaista burstia.
Kun dataa haetaan yhdellä 32-bittisellä kanavalla, 64-tavuisen välimuistilinjan siirtämiseen tarvitaan 16 siirtoa.
Tämän voi tehdä DDR5lla yhdellä 16-mittaisella burstilla.
Standardeissa DDR5-simmeissä yhden kanavan leveys on kavennettu 32 bittiin, juuri sen takia, että maailma on täynnä prosessoreita joiden välimuistilinja on 64 tavua.
Todennäköisin käytännön toteutustapa lienee on, että koska DDR5 tukee kahta muistikanavaa per DIMM, tehdään siirto (ja bursti) kerrallaan vain yhdellä kanavalla, joka vastaa nykyistä prosessorin välimuistilinjaa. Näin molemmat kanavat voivat hakea yhtäaikaa tietoa toisiaan haittaamatta vaikkapa eri ytimien tarpeisiin, eikä välimuistiarkkitehtuuriin tarvitse tällä tasolla koskea. DDR5 käytännössä tuplaa muistikanavien määrän DDR4:een.
Kyllä, oikeastaan sama mitä kirjoitin yllä.
Kyllä, mutta tuplasyvyisellä burstilla ja kahdella kanavalla saa DDR5-muisti siirrettyä potentiaalisesti yhden muistinhakulantenssin aikana kaksinkertaisen määrän tietoa (DDR5-6400 vs DDR4-3200). Kuten yllä on mainittu, jaetaan DIMM kahtia ja tehdään kaksi hakua yhtäaikaa eri paikkoihin muistia, mikä on yhä kasvavan ydinmäärän kanssa toimiva tapa lisätä suorituskykyä.
Se yksittäinen datamöykky mikä sieltä DDR5-DIMMiltä haetaan on edelleentasan saman kokoinen, 64 tavua.
Siirtyminen DDR5een ei siis yhdessäkään PCssä muuta kerralla siirretyn datan määrää yhtään, kuten ei myöskään vaikuttanut siirtyminen mihinkään muuhunkaan aiempaan muistityyppiin.
Sen siirtämiseen vaan DDR5lla tarvitaan vain puolet sen yhden DIMMin pinneistä, ja sinne saman DIMMiin toiseen kanavaan voi olla samaan aikaan täysin rinnakkainen access menossa.
Aiemmat muistityyppivaihdokset taas vaikutti vain siihen, että se sama datamäärä siirrettiin lyhemmässä ajassa.
En väittänytkään prosessorin prefetchin siitä muistityypistä parantuvan, vaan sanoin nopeamman muistityypin yhdessä paremman prefetchin kanssa lisäävän tehoa. Mitä paremmin prosessori osaa ennakoida tulevat haut ja hakee tiedon valmiiksi, sitä vähemmän suorat muistihaut haittavat liukuhihnan etenemistä.
Liian aggressiivisella välimuisti-prefetcherillä on aina huomattava riski heittää välimuistista mäkeen myös sellaista dataa, jota oikeasti tarvittaisiinkin aiemmin kuin sitä prefechattua dataa.
Prefetch ei ole mikään magic bullet joka vaihtaa kaistaa viiveeseen ilman haittavaikutuksia.