Forum: Mikrocontroller und Digitale Elektronik STM32H735 - Hyperram vs. SDRAM


von Kalli L. (knl)


Lesenswert?

Guten Tag,

im Moment beschäftige ich mich mit dem Entwurf einer Hardware auf Basis 
eines STM32H735. Da schon abzusehen ist, dass der interne Flash nicht 
ausreichen wird, wollte ich einen externes RAM anbinden, aus dem auch 
Code ausgeführt werden soll.
Nun stehe ich vor der Entscheidung, ob ich den RAM als
-  SDRAM mit 16 Bit Anbindung (166MHz) oder
-  per Octo SPI (Hyperbus/Hyperram) (200Mhz DDR) anbinde
hat jemand schon Erfahrung zu dem Thema?

Die Fragen die mich beschäftigen:
Wie gut kann der Code im externen RAM per SWD „gedebuged“ werden?
Wie sieht die Langzeit-Verfügbarkeit von SDRAM aus?
Die Application-Prozessoren von ST besitzen mittlerweile ein 
DDR3/4-Interface.
Welcher Speicher hat bei der Codeausführung geschwindigkeitsmäßig die 
Nase vorne?

Schöne Grüße,
Kalli

von Falk B. (falk)


Lesenswert?

Kalli L. schrieb:
> im Moment beschäftige ich mich mit dem Entwurf einer Hardware auf Basis
> eines STM32H735. Da schon abzusehen ist, dass der interne Flash nicht
> ausreichen wird, wollte ich einen externes RAM anbinden, aus dem auch
> Code ausgeführt werden soll.
> Nun stehe ich vor der Entscheidung, ob ich den RAM als
> -  SDRAM mit 16 Bit Anbindung (166MHz) oder
> -  per Octo SPI (Hyperbus/Hyperram) (200Mhz DDR) anbinde
> hat jemand schon Erfahrung zu dem Thema?
>
> Die Fragen die mich beschäftigen:
> Wie gut kann der Code im externen RAM per SWD „gedebuged“ werden?

Wahrscheinlich genau so gut wie im internen Flash, ist ja aus CPU-Sicht 
alles eins.

> Wie sieht die Langzeit-Verfügbarkeit von SDRAM aus?

Naja, endlich. Auch mobiler SDRAM ist schon lange auf dem absteigenden 
Ast. Kann aber auch sein, daß der sich in den Nischen noch 10 Jahre und 
länger hält.

> Welcher Speicher hat bei der Codeausführung geschwindigkeitsmäßig die
> Nase vorne?

Vermutlich der SDRAM, denn der der hat rein rechnerisch mehr Bandbreite 
16 Bit x 166 MHz = 2.65Gbit/s, der Hyperbus nur 8x200= 1.6Gbit/s. Da 
liegen natürlich noch Pufer (Cache) dazwischen, je nach Testfall kann 
man mehr oder weniger Unterschiede sehen. Kleine Codestücken, welche in 
den Cache passen, machen wahrscheinlich keinen Unterschied.

von Roger S. (edge)


Lesenswert?

Falk B. schrieb:
>> -  per Octo SPI (Hyperbus/Hyperram) (200Mhz DDR) anbinde
> der Hyperbus nur 8x200= 1.6Gbit/s. Da

DDR -> 3.2Gbps

von Andreas M. (amesser)


Lesenswert?

Kalli L. schrieb:
> Welcher Speicher hat bei der Codeausführung geschwindigkeitsmäßig die
> Nase vorne?

Das kommt darauf an wie gut die Caches funktionieren, wie linear der 
Code abläuft und wie die Daten liegen. Hyperram ist dafür gedachte 
größere Datenblöcke am Stück zu lesen oder zu schreiben. Was er gar 
nicht gut kann sind wahlfreie Zugriffe. Je nach den Zugriffsmustern 
helfen da Caches ein bischen drüber hinweg. Das "Problem" beim Hyperram 
ist, das es keine separaten Adressleitungen gibt. Wenn ein Zugriff 
sequentiell erfolgt ist das ohne größere Auswirkungen, weil der Hyperram 
intern die Adresen inkrementiert. Ansonsten muss vor jedem Zugriff halt 
immer erst die Adresse übertragen werden und Wartezyklen eingeschoben 
werden. Das drückt dann den Durchsatz massiv.

Aus dem STM Forum:

https://community.st.com/t5/stm32-mcus-products/stm32h735-hyperbus-speed-byte-vs-word-32bit-vs-qspi/td-p/107150

Dort gibt es alle möglichen Ergebnisse :-) Du solltest das ganze also 
mit Deinem Code/Anwendungsfall testen. Alles andere ist Spekulation.

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.