Moin, in einem Projekt verwende ich einen Blackfin mit SDRAM. Leider enttaeuscht bisher die Geschwindigkeit mit der dieser den Algorithmus ausfuehrt und nun bin ich auf der Such nach der Ursache. Etwas beschleunigt hat es den Algorithmus bereits, dass er nun aus dem L1-Code-Speicher laeuft und alle wichtigen Variablen im L1-Data-Speicher liegen. Der Cache ist auch aktiviert, schafft aber wenig weg, weil wenig temporaere und raeumliche Koherenz beim Speicherzugriff vorliegt. Und hier scheint auch das Problem zu liegen, in den vielen Speicherzugriffen. Wie kann ich da optimieren? Es wird auf zwei lange zusammenhaengende Strings von char-Typen zugegriffen. Kann ich die in verschiedene Banks im SDRAM legen um den Zugriff zu beschleunigen, da dann nicht immer eine neue Row-Adresse geladen werden muss. Wird dies vom Blackfin unterstuetzt? Und wenn ja, wo liegen dann die Adressen? Ich verwende einen MT48LC16M16 mit A18 und A19 als BA0 und BA1. Gruss, Joern
Hi Joern, ich habe nur mal vor einer Weile ein Bandbreitenproblem mit dem PPI gehabt, da half es, die Verarbeitungs- und Einlese-Puffer in unterschiedlichen Banken abzulegen. Allerdings hatte das mit DMA bursts und Refresh-Zeiten zu tun - und es waren zwei Chips. Weiss gerade nicht, ob der Blackfin schlau genug ist, die Row-Zugriffe zusammenzufassen - gehe aber mal davon aus. Ich haette sonst mal versucht, die Daten irgendwie 'interleaved' im Speicher abzulegen. Ich nehme mal an, dass Du die irgendwoher gefuettert bekommst, also kannst Du ev. die DMA-Stroeme so programmieren, dass Datenstroeme 'A' und 'B' auf geraden/ungeraden Adressen abgelegt werden (X_MODIFY ist unser Freund :-) ) Gruss, - Strubi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.