DDR SDRAM működése
2022-08-04T15:43:07+02:00
2022-08-04T21:24:53+02:00
2022-08-04T21:24:53+02:00
  • Akkor szólj a jogtulajdonosoknak , hogy rosszul nevezték el, mert felezett frekvencia és nem duplázott sebesség.

    Ja, hogy nem felezték a sebességet, az ugye nem számít. A sebességhez nem nyúltak.
    Mutasd a teljes hozzászólást!
  • Az ugyanaz. 1 órajel alatt 2 adatátvitel = felezett órajel: az órajel frekvenciája fele az adatátvitelének. Vagyis pont felezett órajel. Írtam is mi volt a probléma, amit megkerültek.
    Mutasd a teljes hozzászólást!
  • A DDR azt jelenti, hogy az órajele felezve van: 

    Nem. Double Data Rate (Dupla adatátviteli sebesség). Egyetlen órajelciklus alatt megduplázott I/O műveletet hajt végre a memória. Annak idején a memória órajelének emelése problémákat okozott. Megkerülték a problémát. 
    A nagyobb szám mindig jobb alapon, nem a fizikai órajelet adják meg a memória paraméterei között, hanem az átvitt adatmennyiséghez szükséges elméleti, duplázás nélküli órajelet.

    A teszt programok viszont a valódi órajelet mutatják. Szoktak jönni a kérdések. Mit csináljak, mert a memóriák fele sebességen dolgoznak. Ebből a szempontból nem jó a megoldás, de ez már így fog maradni.
    Mutasd a teljes hozzászólást!
  • Egy mai modern 3200 MHz-es ECC Registered w/parity DDR4 memória időzítése 22-22-22, Row Cycle Time (tRCmin) 45.75ns (min.), Row Active Time (tRASmin) 32ns (min.): Kingston Server Premier: KSM32RD4/32HDR, KSM32RD4/64MER. A DDR azt jelenti, hogy az órajele felezve van: 1600 MHz-es, és órajelenként 2 adatátvitel van. Enélkül az órajelvezetéken 3200 MHz lenne, a többin meg legfeljebb 1600 MHz, mivel ugye ha állandóan 0-s vagy állandóan 1-es bit van az nem rezgés, csak ha 0, 1 felváltva: 1 periódushoz legalább 2 adatátvitel kell. Így az órajelvezeték impedanciája nem nő meg (váltóáramú ellenállás az önindukció miatt), nem kell erősebben árnyékolni, stb. DDR-nél volt 2,5-es késleltetésű, így ez a 22 órajel 1600 MHz-es órajel, vagyis 44 órajel 3200 MHz-en. Az angol Wikipédián írták hogy DDR-nél ez a felezett órajelre vonatkozik. DRAM-nál bitenként 1 kondenzátor tárolja az információt, és 1 tranzisztor kapcsolja rá a vezetékére amin lehet írni/olvasni: van egy bemenő vezeték, mely megadja a tranzisztornak hogy zárjon vagy szakadás legyen, és van egy kimenő vezeték. A bitek egy téglalap alapú táblázatban vannak, a vezetékek mint egy négyzetrács. A bit cím a sor és oszlop sorszámából áll, nem egyszerre kell megadni, előbb az egyiket, utána a másikat: ha mondjuk a tranzisztorok bemeneti vezetéke, a vezérlés vízszintes, a tranzisztorok kimenete, az író/olvasó vezeték függőleges, akkor előbb a sorcímet kell megadni, majd 44 órajel múlva az oszlopcímet, újabb 44 órajel múlva megérkezik a kiolvasás eredménye, újabb 44 órajel kell a sor lezárásához, hogy másik sort lehessen olvasni. Hát ez bizony egy 33 MHz-es buszú 80486DX-hez való, ma csak SSD-nek elegendő sebesség, amire persze nem alkalmas mert áram nélkül felejt. Amikor megadjuk a sorcímet, a sorban az összes tranzisztor rákapcsolja a kondenzátort az író/olvasó vezetékre.

    Csakhogy elvileg az a DRAM 3200 millió adatátvitelt tud másodpercenként, vagyis 25,6 GB/s-et. Memóriateszteknél se az 1/8 GB/s látszik. A hasznos adata 64 bites. Akkor elvileg ez belül 128*64 bites buszú lenne? Ugye a működési elvből adódóan nem lehet, hogy megadom a címet, 44 órajelet várni kell rá, de a következő órajelnél már megadom az újabb címet. A címző tranzisztorok kimenete se terhelhető egyszerre több ezer tranzisztorral: ugye a sorban az összes tároló tranzisztor rá van kötve, ami rengeteg. Ez a bitenkénti 1 tranzisztor ugye ahhoz kell, hogy az a bit van-e kiválasztva vagy nem. Másrészt van önindukció miatti késleltetés is, meg a kondenzátorok kapacitása is véges, és ugye amikor rákapcsolják az író/olvasó vezetékre, akkor a több ezer tárolócella hosszú vezetéket fel kell töltenie elektromosan ami szintén idő az ellenállás meg az önindukció miatt is, meg a kondenzátor ugye részben kisül miatta hogy a töltése a vezetékre kerül. Tehát a 44 órajel alatt végig tartani kell a címző vonalat bekapcsolva, az össze többi sorét kikapcsolva, különben elrontja az egészet. Utána újabb 44 órajel az oszlopok közül a bit kiválasztása: ha eközben változna meg, akkor szintén elrontaná. Szóval ha jól értem, belül ez olyan mint a RAID 0, csak nem 2 egységgel hanem 128-cal. Mivel egyszerre 8 B-ot visz át, a cím alsó 3 bitje amúgy sincs, olvasáskor mindig az egészet olvassuk ki, íráskor mind a 8 byte-ra egyesével meg kell mondani kell-e írni: 8 vezetéken. A 3 bit levágása után megmaradó cím alsó 7 bitje választhatja ki hogy a 128 darab egység közül melyikben van a kellő adat: amit írunk/olvasunk. Ekkor már valóban el lehet vele érni a 25,6 GB/s-et: 3200 millió adatátvitel/másodperc. Szekvenciálisnál ez nyilvánvaló, véletlenszerűnél is egész jó, mivel a cím alsó helyiértékű bitjei általában véletlenszerűek, ennél javítható a sebesség ha nem 128 hanem 256 darabra daraboljuk a memóriát. Jól sejtem hogy így van? Ha nem, akkor hogy? Sajnos fogalmam sincs hogy van. A cache-vonalak 64 B-osak manapság a PC-kben, ez ugye 8 egység: a 128 rész 16*8 egységre bontható: 1 8*64 bites tartományon belül mind a 8 egységnél ugyanaz a cím, de a 16 darab tartomány közül egy másik tartományban már lehet más cím, és az is lehet hogy az egyikben olvasunk, a másikban írunk: mintha 16 darab független DRAM modul lenne: nem kell mind a 128 független legyen, elég 8-asával. Szóval azt kellene megmagyarázni, hogy ilyen nagy késleltetéssel hogy jön ki, hogy a sávszélesség nem romlik le.

    A w/parity-t se találtam meg mit jelent, de elvileg DDR4-től kezdve a pufferelt memóriák cím- és vezérbusza paritásvédett, gondolom azt.
    Mutasd a teljes hozzászólást!
Címkék
abcd