Forum: Mikrocontroller und Digitale Elektronik RAM mit der höchsten Datenrate je IO.


von Gustl B. (-gb-)


Lesenswert?

Hallo,

ich suche einen oder mehrere RAM Bausteine die möglichst wenige IOs vom 
FPGA brauchen und trotzdem eine hohe Datenrate im Burst haben.

Bedingungen:
- Ich habe nur eine Bank an einem Artix7 für das RAM frei.
- Es sollte auf 6 Lagen routbar sein und keine Blind oder burried Vias 
und auch keine tented oder plugges Vias benötigen, auch keine Microvias.

Anforderung an die Datenrate im Burst ist eben möglichst hoch.

Wenn ich HyperRAM verwende bekomme ich 400 MByte/s bei 12 IOs. Wenn ich 
da mehrere Steine parallel verbaue dann kann ich ein paar IOs einsparen 
die nicht timingkritisch sind wie Reset und CS#. Jedenfalls:

HyperRAM > 266 MBit/s je IO, 1,6 GByte/s wenn ich 4 davon an eine Bank 
anschließe.

Wie sieht das bei DDR RAM aus oder diesen QDDR SRAM Steinen?
An eine Bank würde z. B. der MT41K512M8XX-107, DDR3, 8 Bit Daten, 
passen. Da finde ich aber leider nix zu der Datenrate. Der Stein belegt 
dann die ganze Bank, also schon viele IOs, was kommt da ja IO bei rüber 
an Daten/Zeit?

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Gustl B. schrieb:
> HyperRAM > 266 MBit/s je IO, 1,6 GByte/s wenn ich 4 davon an eine Bank
> anschließe.

Da können die aktuellen schon um einiges mehr:

...and with a data rate of up to 18 Gbit/s per pin

https://en.wikipedia.org/wiki/GDDR6_SDRAM

DDR5 supports a speed of 51.2 GB/s per module

https://en.wikipedia.org/wiki/DDR5_SDRAM

Was du noch einfach an deinen FPGA drangebunden bekommst dürfte die viel 
größere Frage sein und nicht nach "RAM mit der höchsten Datenrate je IO" 
(den du nur mit einigen wenigen Spezial-Chips überhaupt so schnell 
angesteuert bekommst).

von Stefan F. (Gast)


Lesenswert?

Das sind aber schwammige Anforderungen:

> möglichst wenige IOs
Ich wette es gibt welche, die nur einen Pin brauchen.

> und trotzdem eine hohe Datenrate im Burst haben.
Möglichst schnell ist jeder Chip aus seiner Sicht.

> Wenn ich HyperRAM verwende bekomme ich 400 MByte/s bei 12 IOs.
Würde das denn reichen? Wahrscheinlich nicht, sonst hättest du nicht 
gefragt.

Woran scheitert dieses HyperRAM denn, zu viele Pins oder zu langsam? Wo 
sind deine Grenzen des Akzeptablen?

von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> z. B. der MT41K512M8XX-107, DDR3, 8 Bit Daten,
> passen. Da finde ich aber leider nix zu der Datenrate. Der Stein belegt
> dann die ganze Bank, also schon viele IOs, was kommt da ja IO bei rüber
> an Daten/Zeit?

steht gleich auf der ersten Seite des Datenblatts: Data Rate = 1866MT/s
MT steht für "Mega-Transfer". Also 1866 Mbit/s pro IO. 1866MByte/s pro 
Baustein mit 8 IOs.

Aber wenn dir die Pins am FPGA ausgehen: hast du dann noch die rund 20 
Pins übrig, die du für Commands und Adressen des Bausteins brauchst? Und 
schaffst du auf den verfügbaren Pins das Timing für das DDR3-Interface?

Bei anderen FPGAs von Xilinx gibt es den MIG (Memory Interface 
Generator) als Assistenten. Wenn der für deinen Artix 7 auch verfügbar 
ist, kannst du ja mal schauen, ob er dein DRAM-Interface unterbringen 
könnte.

von Gustl B. (-gb-)


Lesenswert?

Irgend W. schrieb:
> Was du noch einfach an deinen FPGA drangebunden bekommst dürfte die viel
> größere Frage sein und nicht nach "RAM mit der höchsten Datenrate je IO"

Und genau das war in meiner Frage enthalten. Mit IO meine ich auch nicht 
Datenpin, sondern insgesamt IO. Wenn also ein DRAM z. B. 40 IOs hat und 
8 davon Datenpins sind, dann teile die Transferrate trotzdem durch 40.

Stefan ⛄ F. schrieb:
> Ich wette es gibt welche, die nur einen Pin brauchen.

Das ist auch OK. Die Datenrate muss passen. Beim HyperRAM komme ich auf 
ca. 266 MBit/s je IO. Wenn also der Speicher mit nur einem IO mehr als 
266 MBit/s schafft, dann hänge ich statt dem HyperRAM mit 12 IOs 12 mal 
diesen Speicher mit nur einem IO hin und bin in Summe schneller.

Stefan ⛄ F. schrieb:
> Würde das denn reichen? Wahrscheinlich nicht, sonst hättest du nicht
> gefragt.

Genau. Ich möchte möglichst schnell.

Stefan ⛄ F. schrieb:
> Woran scheitert dieses HyperRAM denn, zu viele Pins oder zu langsam? Wo
> sind deine Grenzen des Akzeptablen?

Die Grenzen hatte ich geschrieben, Artix7 und eine Bank ist frei.
Der RAM soll unter Anderem als Samplespeicher für einen LA oder ein DSO 
dienen. Da ich beim LA 2 GByte/s reinbekommen kann maximal wäre auch 
eine Burst Datenrate >= 2GByte/s fein. Weniger ist schon auch OK, aber 
ich will schnon das Schnellste verwenden das ich da anschließen kann.

Achim S. schrieb:
> steht gleich auf der ersten Seite des Datenblatts: Data Rate = 1866MT/s
> MT steht für "Mega-Transfer". Also 1866 Mbit/s pro IO. 1866MByte/s pro
> Baustein mit 8 IOs.

Nein, der hat deutlich mehr als 8 IOs. Wenn der nur 8 IOs hätte könnte 
ich davon 5 Stück an eine Bank anschließen. Hier kann ich nur einen 
anschließen und die Bank ist belegt.
Beim HyperRAM kann ich 4 an eine Bank anschließen. Das sind 48 IOs in 
Summe und 1,6 GByte/s.

Achim S. schrieb:
> Aber wenn dir die Pins am FPGA ausgehen: hast du dann noch die rund 20
> Pins übrig, die du für Commands und Adressen des Bausteins brauchst? Und
> schaffst du auf den verfügbaren Pins das Timing für das DDR3-Interface?

Mir gehen die Pins nicht aus, ich habe eine ganze Bank.
Tja wie das mit dem Timing aussieht weiß ich nicht.

Achim S. schrieb:
> Also 1866 Mbit/s pro IO.

Wenn das stimmt, dann geht das beim Artix nicht. Aber der Baustein ist 
im MIG auswählbar. Seltsam. Sind das wirklich 1866 MBit/s je Datenpin 
oder ist das nur die Hälfte? Der Artix7 kann knapp über 1 GBit/s je Pin.

Achim S. schrieb:
> Wenn der für deinen Artix 7 auch verfügbar
> ist, kannst du ja mal schauen, ob er dein DRAM-Interface unterbringen
> könnte.

Ja, das kann er. Den Stein oben kann er unterbringen. Ist nur die Frage 
welche Datenrate der dann tatsächlich macht.

von Stefan F. (Gast)


Lesenswert?

Gustl B. schrieb:
>> Würde das denn reichen? Wahrscheinlich nicht, sonst hättest du nicht
>> gefragt.

> Genau. Ich möchte möglichst schnell.

Möglichst schnell ist keine valide Anforderung - das ist ein 
Gummiband-Begriff den sich jeder nach belieben auslegen kann.

von Gustl B. (-gb-)


Lesenswert?

Stefan ⛄ F. schrieb:
> Möglichst schnell ist keine valide Anforderung

Und wieso? Kannst du das auch begründen?

Stefan ⛄ F. schrieb:
> das ist ein
> Gummiband-Begriff den sich jeder nach belieben auslegen kann.

Nein. So schnell wie möglich sagt ganz klar das was eben mit den 
genannten Einschränkungen maximal möglich ist.

Mir wären 2 GByte/s recht. Aber das bekomme ich da wohl nicht hin. Und 
jetzt suche ich eine Lösung die da möglichst nahe rankommt.

Wenn ich nur sage 2 GByte/s als Anforderung, dann kommt als Aussage dass 
das nicht geht. Toll. Ist eben keine harte Anforderung.

von Flagellum (Gast)


Lesenswert?

Um mal etwas um die Ecke denken zu lassen, wäre eine PCIe SSD als 
Speicher auch andenkbar?

Das läuft dann eher über die GTP als über die GPIO, der zweitkleinste 
Artix bringt 4 davon mit. macht bis zu 5Gbps.

https://www.xilinx.com/products/silicon-devices/fpga/artix-7.html#productTable

OK, ich weiss, ist blockorientiert und nicht wirklich randon access ... 
aber schön schlank was die anzahl der Pins betrifft.

https://forums.xilinx.com/t5/PCIe-and-CPM/Using-not-recommended-GTP-locations-for-PCIe-gen-2-x4-on-Artix-7/td-p/826481

von Gustl B. (-gb-)


Lesenswert?

Aus zwei Gründen nein:

Das ist eine normale FPGA Bank, also keine GTPs oder so.
Und dann müsste ich über das PCIe noch NVME sprechen. Klar, kann ich für 
das Hobbyprojekt auch noch schnell implementieren, aber dann werde ich 
erst in vielen Jahren fertig. Einen IP der bezahlbar ist habe ich noch 
nicht gesehen.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Gustl B. schrieb:
> Und wieso? Kannst du das auch begründen?

Habe ich doch begründet. Lies die Sätze mal zuende, bevor du sie 
erwiderst.

von Gustl B. (gustl_b)


Lesenswert?

Nö sehe ich anders. Es gibt für die genannten Bedingungen tatsächlich 
einen schnellsten Speicher und selbst wenn nicht dann ist möglichst 
schnell ein valides Ziel.

Wenn man etwas baut, dann gibt es da manchmal Eigenschaften die positiv 
wären und auch je mehr davon um so positiver. Da setzt man sich doch 
nicht vorher ein Limit. Wenn ich ein Seil entwickeln würde, dann wäre ja 
höhere Tragkraft umso besser. Da macht es keinen Sinn ein Limit zu 
setzen wenn vielleicht doch noch mehr geht.

Und hier möchte ich möglichst schnell Daten in Speicher zu bekommen. Ob 
das ein RAM Baustein ist oder mehrere ist egal. Muss aber alles an eine 
Bank passen. Daher auch die Metrik als Datenrate je Pin.

von Achim S. (Gast)


Lesenswert?

Gustl B. schrieb:
> Sind das wirklich 1866 MBit/s je Datenpin oder ist das nur die Hälfte?
> Der Artix7 kann knapp über 1 GBit/s je Pin.

Gustl B. schrieb:
> Mit IO meine ich auch nicht Datenpin, sondern insgesamt IO

na das war nicht unbedingt selbsterklärend. Da nur die Datenpins 
wirklich als IOs laufen, die anderen Pins aber nur in einer Richtung. 
kannst ja ein paar Adressleitungen fest auf 0 Klemmen. reduziert zwar 
den verfügbaren Speicher, aber dafür spart es Anschlüsse am FPGA ;-) 
wirksamer ist aber den Baustein in x16 statt in x8 zu nehmen. nur 8IOs 
mehr, aber ein Faktor 2 in der Datenrate.

Gustl B. schrieb:
> Sind das wirklich 1866 MBit/s je Datenpin oder ist das nur die Hälfte?

das DRAM läuft mit einem Takt von knapp 1GHz, und jeder Datenpin 
überträgt 2bit pro Takt (DDR steht hier für Double Data Rate)

von Gustl B. (-gb-)


Lesenswert?

Achim S. schrieb:
> wirksamer ist aber den Baustein in x16 statt in x8 zu nehmen. nur 8IOs
> mehr, aber ein Faktor 2 in der Datenrate.

Ja, aber dann passt lässt sich der mit dem MIG nicht mehr in eine Bank 
stecken.

Laut https://www.xilinx.com/support/answers/63775.html müssten 1333 Mb/s 
je Datenpin drinnen sein. Aber der MIG lässt mich nur 1066 Mb/s 
einstellen, trotz richtigem Speedgrade.

Jedenfalls ... 1333 MByte/s ist weniger als 4 HyperRAMs die zusammen ja 
1,6 GByte/s schaffen und ebenfalls in eine Bank passen.

Gibt es andere schnelle Speicher die ich mir angucken könnte?
Kann man beim DDR3 einige Steuersignale dauerhaft auf 1 oder 0 lassen 
und so IOs am FPGA sparen? Oder anders:
Kann man es schaffen einen DDR3 mit 16 Bit Datenbreite an nur eine Bank 
anzuschließen und weiterhin den ganzen Speicher zu nutzen?

von Flo (Gast)


Lesenswert?

https://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_2/ug586_7Series_MIS.pdf

ab Seite 213 auch ein Pinout Beispiel für 1Gb 16bit DDR3 an einer Bank 
vll.
eine passende Anregung?

von Gustl B. (-gb-)


Lesenswert?

Wohooo! Danke! Das funktioniert tatsächlich wenn man auch noch 
https://www.xilinx.com/support/answers/45588.html beachtet.

Was ich seltsam finde ist, dass an den Clock Pins der Bank keine Clocks 
angeschlossen werden müssen. Die kann man für normale Signale verwenden 
und die Clocks vom DDR3 RAM kann man mit normalen IOs verbinden. Warum 
auch immer.

Noch eine Frage:
Wenn ich die Clocks "Reference Clock" und "System Clock" intern im FPGA 
anliefere, können die auch von einer anderen Bank kommen und aus einer 
PLL/MMCM? Ich vermute dass das erlaubt ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.