Propustnost RAM (obecně i konkrétně Raspberry Pi 3)

lenon

Propustnost RAM (obecně i konkrétně Raspberry Pi 3)
« kdy: 15. 11. 2017, 21:24:16 »
Zdravím, jakou má bandwidth paměti Raspberry pi 3 a dvojka?
Osazena je RAM1: 1 GiB   (Elpida B8132B4PB-8D-F) LPDDR2 RAM  na 900 MHz DDR (450MHz). Nemohu se ale dobrat šířky sběrnice, je to 32bitů (4 bajty)?
Našel jsem info zde, kde je
Clock    DDR  Width    Max
450    900   x4     3600
V datasheetu to je data rate: 800 Mb/s/pin (pro 400 Mhz,  pro 450 by to bylo 900 Mbps) .
Je opravdu u ARM šířka paměti 32 bitů? Rozlišuje se tam taky dual channel?



Pak by mě zajímalo druhé zařízení také na ARMU, které má 14.9 GBps při 933 MHz na LPDDR3. Jelikož LPDDR3 má dvojnsobný prefetch oproti 2, tak na pin to musí být 1866 MT/s (Mbps). To znamená, že tam musí být  64 pinů. Je to možné?


A do třetice mě zajímá DDR4 paměť. Jaktože dosahuje zdvojnásobení přenosové rychlosti, ačkoli prefetch zůstal nezměněn( jako DDR3 8n, DDR2 4 ,DDR1 2) "DDR3 SDRAM gives a transfer rate of (memory clock rate) × 4 (for bus clock multiplier) × 2 (for data rate) × 64 (number of bits transferred) / 8 (number of bits/byte). "

Dokonce zde je vidět nějaká nelogičnost. (memory clock na první pohled je shodně s DDR3, ale v komentáři tabulky je, že má stejný prefetch jako DDR3).
Tak jak tedy DDR4 zdvojuje přenosovou rychlost jinak než DDR3,2,1?

« Poslední změna: 20. 11. 2017, 08:46:45 od Petr Krčmář »


PetrM

Re:propustnost RAM (obecně i konkrétně Raspberry pi 3)
« Odpověď #1 kdy: 16. 11. 2017, 08:54:56 »
Vzhledem k tomu, že RPi používá RAM a procesor na sobě, není tam možnost použít jinou šířku sběrnice, než má ta paměť.

Dual channel je v tomhle případě hardwarový nesmysl. Tam by bylo ptřeba mít dvě nezávislý paměťový sběrnice a RAMky, to se v téhle konfiguraci nedá udělat.

Co se frekvence týká, je tam zrada. Přístup do SDRAM (SDR i DDR) probíhá v burstech. Burst začíná zápisem adres (dva cykly, řádek a sloupec). Pak je nějaká doba, než to paměť zpracuje a nic se neděje (dejme třeba čtyři cykly, ať se to dobře počítá). Tomu se říká letence. A pak už na sběrnici proletí burst třeba osmi slov. Doba na vybavení dat z paměťové matice je konstantní, takže při zvýšení frekvence interface je potřeba nastavit na řadiči větší latenci - pokud zvedneme frekvenci o 25%, ze čtyř prázdných cyklů by bylo pět a ze čtrnácti cyklů pro čtení burstu jsi na patnácti. Takže obyčejnou trojčlenkou propustnost nedostaneš.

A krom toho, propustnost pamětí závisí silně na tom, jak nekonfiguruješ řadič (a co vlastně řadič podporuje). Delší burst znamenají vyšší propustnost pro data, ale pokud lezeš pro necachovaný malý data /třeba int64ky), tak zase víc dat zahazuješ a zbytečně taáš, co nepotřebuješ...

Krom toho, procesor je pod NDA a těžko říct, co vlastně podporuje. Už jsem byl v situaci, kdy RAMa podporovala 133MHz, zle procesor dával na výběr 100 nebo 150MHz...25% propustnosti RAM zůstalo nevyužito, protože tvůrce procesoru byl debil.