A dinamikus RAM gyorsasága és a nevetséges ötlet, hogyan lehet növelni azt

Egy kis történelem

A számítógépes technológia hajnalán a dinamikus memória elég jól működött a processzor frekvenciáján. Az első számítógépes tapasztalatom a "ZX Spectrum" számítógép klónjához kapcsolódott. Z80 processzor végeznek feldolgozási utasításokat átlagosan 4 ciklus per művelet, a két intézkedés elvégzéséhez használt a regenerációs a kupac, ami számunkra frekvencián 3,5 MHz, legfeljebb 875 000 művelet másodpercenként.

Azonban egy idő után a processzor frekvenciái olyan szintet értek el, ahol a dinamikus memória már nem tudott megbirkózni a terheléssel. Ennek kiegyenlítésére, köztes egy cache memória került bevezetésre, amely lehetővé teszi, hogy műveleteket végezni egy kis mennyiségű adat, hogy egyengessék a különbség a sebesség a processzor és a memóriát.

Nézzük meg, mi a számítógép RAM-ja most, és mit lehet vele tenni a számítógépes rendszer sebességének növelése érdekében.

Röviden a statikus és dinamikus memóriáról

A statikus memória cellája egy triggeren alapul, amely rendszerint az egyik "A" vagy "B" (A =! B) állapotban található. Az egyetlen cellához tartozó tranzisztorok minimális száma 6 darab, míg a nyomelemek összetettsége a cellákban nyilvánvalóan nem teszi lehetővé a statikus memória modulok készítését 1 koncert alatt, egy hagyományos 8-os modul árán.

Egy dinamikus memóriacellát tartalmaz egy kondenzátor, amely felelős az információ tárolásáért és egy tranzisztor, amely felelős a kondenzátor elkülönítéséért az adatbuszról. Amikor ezt a kondenzátort alkalmazunk, mint az elektrolit nem szerelt, és a parazita kapacitás p-n átmenetet képez a „szubsztrát” és tranzisztoros elektród (kifejezetten erre a célra megnövelt, általában megpróbálja megszabadulni ez). A hátránya, hogy a szivárgási áram a kondenzátor (önmagában is, és a legfontosabb tranzisztor), amiből nagyon nehéz megszabadulni, ráadásul a hőmérséklet emelkedésével jár, hogy növeli annak valószínűségét, hogy torzítja a tárolt információt. A megbízhatóság támogatása érdekében a dinamikus memória "regenerálódást" igényel, a tárolt adatok rendszeres frissítésével egy meghatározott időtartam alatt, amely alatt az információ megőrzi a megbízható értéket. Jellemző regenerálási idő 8 ms, míg több információ ritkábban frissíthető, nem ajánlott.

Más szempontból a működési elv azonos, és a következőkből áll:

- kezdeti mintában memória vonalak vezet a hozzáférést az összes tartalmát helyeztünk egy puffer húr, amely tovább megy a munka, vagy megy a fellebbezés multiplexelő oszlopok (régi, lassú megközelítés);
- a kért adatot továbbítjuk a fogadó eszköz (általában a CPU), vagy módosított készletét a sejtek, amikor egy írási műveletet (van egy kis különbség, a közvetlen módosítása a kiválasztott sorcellában áll a statikus memória módosított pufferrel vonalat egy dinamikus memória, és csak ezután végezzük writeback' a teljes vonal tartalma egy speciális hurokban);
- a lezárás és a változás a memória vonalakat, így azonos eltér a különböző típusú memória, a statikus képesség, hogy azonnal változtatni a húr, ha az adat nem változott, szükség van a puffer a húr tartalmát a dinamikus memória szükséges rögzíteni a helyén, és csak akkor, akkor válasszon egy másik vonal.

Ha a számítógépes technológia hajnalán minden olvasási vagy írási művelet teljes memóriaciklussal végződik:

- a vonal kiválasztása;
- olvasási / írási művelet a cellából;
- A sor módosítása / újbóli kiválasztása.

A "szinkron memória a la DDRX" chipek modern működése a következő:

- a vonal kiválasztása;
- vonalak cellájának olvasása / írása 4-8 bites / szóban lévő csoportokban (többszöri hozzáférés egy soron belül megengedett);
- A vonal lezárása a rendelkezésre álló információk bevitelével;
- A sor módosítása / újbóli kiválasztása.

Egy ilyen megoldás lehetővé tette, hogy mentse a hozzáférési idő, amikor, miután elolvasta az értéke „1” sejt tesz szükségessé, sejtek „2, 3, 4 vagy 7„ugyanabban-line, akár azonnal az olvasási művelet, Vissza kell írni a megváltoztatott érték .

Fontos megjegyezni, hogy a DDR memória két frekvenciával rendelkezik:

- az alapórai frekvencia, amely meghatározza a parancs továbbításának sebességét és az időzítést;
- Az adatátvitel tényleges frekvenciája (az órajel frekvenciájának kétszerese, amelyet memóriamodulokkal jelöltek meg).

A memóriavezérlő integrálása növelte a memória alrendszer teljesítményét a közbenső átviteli kapcsolat kiküszöbölésével. A memóriacsatornák növelése során ezt figyelembe kell venni az alkalmazás részében, például a négycsatornás üzemmód bizonyos fájlhelyekkel nem növeli a teljesítményt (12 és 14 konfiguráció).


Egy összekapcsolt lista egy elemének feldolgozása különböző lépésekkel (1 lépés = 16 bájt)

Most egy kis matematika

Processzor: a processzorok működési frekvenciái elérik az 5 GHz-et. A gyártók szerint az áramköri megoldások (csővezetékek, jóslatok és egyéb trükkök) óránként egy oktatást biztosítanak. A számítások lekerekítéséhez vegyük figyelembe az órajel frekvenciáját 4 GHz-en, ami egy műveletet biztosít 0,25 ns-nek.

RAM: vegyük például a DDR4-2133 új formátumú RAM-ot, 15-15-15-ös időzítéssel.

feldolgozó
Kapcsolat = 4 GHz
Takt = 0,25 ns (kombinációban, egy művelet végrehajtásának ideje "feltételes").

Memória DDR4-2133
Kapcsolat = 1066 MHz
Fdata = 2133 MHz
tapintat = 0,94 ns
tdata = 0,47 ns
SPDmax = 2133 MHz * 64 = 17064 MB / s (adatátviteli sebesség)
tRCmin = 50 ns (a két soros aktiválás közötti minimális idő)

Az adatgyűjtés ideje

A regiszterekből és a gyorsítótárból adatokat lehet adni a munkaciklus alatt (regiszterek, 1. szintű gyorsítótár) vagy több órai ciklus késleltetésével a 2. és 3. szint gyorsítótárához.

A RAM esetében a helyzet rosszabb:

- a vonalválasztás ideje: 15 clk * 0.94 ns = 14 ns
- az oszlopkiválasztási parancsból származó adatok lekérésének ideje: 15 clk * 0.94 ns = 14 ns
- a vonal zárási ideje: 15 clk * 0,94 ns = 14 ns (aki gondolta volna)

Ebből következik, hogy a memóriahelyről adatokat kérő parancs (ha a gyorsítótár nincs benne) közötti idő változhat:

14 ns - az adatok a kiválasztott sorban vannak;
28 ns - az adatok egy nem kijelölt sorban vannak, feltéve, hogy az előző sort már lezárták (a blokk "üres" állapotban van);
42-50 ns - az adatok egy másik sorban vannak, és az aktuális vonalat le kell zárni.

A feldolgozandó műveletek száma (a fent említettek szerint) a processzor ezen idő alatt 56 (14 ns) és 200 (50 ns vonalváltozás). Külön érdemes megjegyezni, hogy az idő az oszlop kiválasztása parancsot, és megkapta a teljes adatcsomagot adunk a gyorsítótár sort terhelés késleltetés 8 bites csomag * 0,47 ns = 3.76 ns. Az esetre, amikor az adat elérhető lesz „program” csak betöltése után a gyorsítótár sort (ki tudja, hogy bármi a fejlesztők órajele processzor, memória specifikáció lehetővé teszi, hogy a szükséges adatokat előre), akkor kap egy másik 15-ig, és hiányzott ciklus.

Egy munka, egy tanulmányt memória sebességét, az eredmények azt mutatták, hogy egy teljesen „megsemmisíteni” memória sávszélesség csak lehetséges, a folyamatábra a memória-hozzáférés esetében a véletlen hozzáférésű növeli a feldolgozási idő (például egy láncolt lista a 32 bites mutató és három bináris szavak közül az egyik frissítve) 4-10 (szekvenciális hozzáférés) a 60-120 ns (műszak sor), ami a különbség a feldolgozási sebesség 12-15 alkalommal.

Adatfeldolgozási sebesség

A kiválasztott modulhoz 17064 MB / s csúcs sávszélesség van. Ez a 4 GHz-es frekvencián lehetővé teszi a 32 bites szavak óránkénti feldolgozását (17064 Mb / 4000 MHz = 4.266 bájt / óra). Itt a következő korlátozások kerülnek bevezetésre:

- A gyorsítótár betöltésének kifejezett ütemezése nélkül a processzor kénytelen lesz készenlétben állni (minél nagyobb a frekvencia, annál inkább a kernel egyszerűen csak vár az adatokra);
- a ciklusok "olvasási módosítási rekordjában" a feldolgozási sebesség felére csökken;
- a többmagos processzorok megosztani a magok memória sávszélesség, és a helyzet akkor, ha a versengő kérelmek (degenerált eset), a memória teljesítmény romolhat a „200-szor (sorok változik) * X mag”.

17064 MB / s / 8 mag = 2133 MB / s magonként az optimális esetben.
17064 MB / s / (8 mag * 200 kihagyott művelet) = 10 MB / s a ​​degenerált esethez.

A műveletek fordításakor 8-magos processzorhoz jutunk: 15-től 400 műveletig egy adatbájt feldolgozásához, vagy 60-tól 1600 művelet / ciklusig 32 bites szó feldolgozásához.

Véleményem szerint lassan valahogy. A DDR3-1333 9-9-9-es memóriához képest, ahol a teljes ciklusidő kb. 50 ns, de az időzítés különbözik:

- Az adatokhoz való hozzáférési idő 13,5 ns-re (1,5 ns * 9 óraciklusra) csökkent;
- egy 6 ns (0,75 * 8 helyett 3,75 ns) és egy memóriával való véletlen hozzáférésű csomag nyolcszólagos csomagjának átviteli ideje, az adatátviteli sebesség különbsége gyakorlatilag eltűnik;
- a csúcssebesség 10 664 MB / s.

Nem túl messzire. A helyzetet egy kicsit megmentette a "bankok" jelenléte a memóriamodulokban. Minden „bank” egy különálló memória tábla, ami külön kell kezelni, amely lehetővé teszi, hogy cserélje ki a sorban egy bank míg van egy olvasási / írási adatokat egy sor másik, csökkenti az üresjárati időt lehetővé teszi „score” adatcsere busz szemgolyó optimalizált körülmények között.

Valójában itt nevetséges ötletekre mentünk

memória táblázat egy előre meghatározott számú oszlopok egyenlő 512, 1024 2048 bit. Tekintettel a ciklusidő az aktiváló vonalak 50 ns, megkapjuk a potenciális adatsebesség: "1 / 0,00000005 * 512 oszlopok * 64 bites szó = 81 920 MB / s" helyett a jelenlegi 17 064 MB / s (163 840 és 327 680 MB / s az 1024 és 2048 oszlop soraihoz). Mondd, „csak egyszer 5 (4,8) gyorsan”, amire én válaszolni: „Ez az árfolyam, ha az összes konkurens kérések címzett ugyanaz a memória bank, és a lehetőséget, hogy a rendelkezésre álló sávszélesség növekedésével arányosan a bankok száma, és nőtt a hossza az egyes sorok a táblázat (növelését vonja maga az operációs vonal hossza), ami viszont nyugszik elsősorban a sebesség adatcsere busz. "

Módjának megváltoztatása adatcsere igényel átadása minden tartalmát a cache vonal az alsó szinten, ami szükséges, hogy osztja a cache szinten, nem csak a sebesség, hanem a gyorsítótár méretének sor. Például felismerték a „hossz” gyorsítótár-sor N-edik szint (oszlop 512 * 64 szóméret) 32768 bit, akkor számának csökkentésével az összehasonlítási műveletek, hogy növelje a teljes számát gyorsítótár vonalak és ennek megfelelően növeli a maximális oltalmi körét. De ha egy párhuzamos busz cache-ben ezt a méretet, akkor kap egy csökkenése az üzemi frekvencia, amelyből meg lehet alkalmazni más megközelítést szervezetek cache, ha megszeged az említett «Jumbo» Többsoros cache blokk hossza mentén a felső gyorsítótár sor és kicserélni a kis részletekben is az operációs frekvenciát elmenti a hozzáférési késleltetés lépésenként: a cache sor keresése, és a kívánt "szó" kiválasztása a megtalált sorban.

Ami a kommunikációt a gyorsítótár és a fő memória: szükség van az adatok átvitelét a referencia-kamatláb a sorok egy bank, vagy amelynek bizonyos mértékű terjesztésére kéri a különböző bankok. Ezen kívül van nehézség hozzáférési idő adatok vonalak elhelyezett, különböző területeken, soros átvitel mellett a kezdeti késleltetése, a minta vonal adatátviteli késleltetés függ a szám a „csomag” az adatok, és az átviteli sebesség. Még a rambus megközelítés sem képes megbirkózni a megnövelt terheléssel. A helyzet lehetne megmenteni az átmenetet egy soros busz (eltérés) miatt további csökkentését adat bit, akkor növeli a teljesítményt sebességű I csökkenti az idő közötti átadását az első és az utolsó bit adat, alkalmazza a határvonal átviteli több csatornán keresztül. Ez lehetővé teszi egy csatorna alacsonyabb órajelének használatát.

Értékeljük egy ilyen csatorna sebességét:

1 / 0.00000005 ns = 20 MHz (a vonalváltás gyakorisága egy blokkon belül)
20 MHz * 32,768 bit = 655,360 Mbps
Azonos adatbusz-méretű differenciális átvitel esetén:
655 360 Mbit / s / 32 csatornán = 20 480 Mbit / s csatornánként.

Ez a sebesség, mint elfogadható a villamos jel (10 Gb / s jel beágyazott szinkronizáció 15 méterre álló, miért és 20 Gbit / s a ​​külső órajel 1 méterrel nem mester), de szükséges további növelése az átviteli sebességet, hogy csökkenti az átviteli késleltetés közötti az első és az utolsó bit információt esetleg növelni a kapacitást, a képességét, hogy integrálni az optikai átviteli csatorna, de ez a kérdés az áramkört, nincs sok tapasztalata az ilyen frekvenciákat.

majd Ostap felmerült

Megváltoztatása a koncepció vetítés cache és a memória között, hogy az „a fő memória köztes ultragyors blokk tároló” tolódik a jóslat terhelési adatokat a áramkört a vezérlő a feldolgozó algoritmus (és ezért jobb, ha tudja, hol lomanetsya egy idő után nyilvánvalóan nem memória vezérlő), amely viszont növeli a külső réteg gyorsítótárát, anélkül, hogy ez veszélyeztetné a teljesítményt.

Ha megy tovább, akkor tovább módosíthatja a koncepció orientáció processzor egy „context switch működtető”, hogy „munkakörnyezet program.” Egy ilyen változás jelentősen javítja a biztonságot kód megadásával a program egy sor funkciók adott egyedi eljárás belépési pontja, az elérhető adatok elhelyezését régió feldolgozásra, és a hardver felügyeleti képességek arra, hogy hívja egy adott funkciót a többi folyamatra. Egy ilyen változás is lehetővé tennék hatékonyabb felhasználását a többmagos processzorok megszüntetésével összefüggésben kapcsolási részére patakok és eseményfeldolgozásra egy külön szál a rendelkezésre álló környezet „folyamat”, amely lehetővé teszi a hatékonyabb felhasználása 100+ nukleáris rendszerek.

Ui A bejegyzett védjegyek vagy szabadalmak véletlenszerű használata véletlen. Minden eredeti ötlet elérhető az "anthill" licencszerződés alapján.