Gibt es SD-Karten, die für Einzelblock-Lese-/Schreibvorgänge optimiert sind?

Ich habe im Laufe der Jahre SD-Karten für mehrere eingebettete Anwendungen verwendet. Da die Karten jedoch größer geworden sind, sind die Einzelblock-Lese- und Schreibgeschwindigkeiten gesunken. Ich vermute, dass dies hauptsächlich daran liegt, dass die Seitengrößen immer größer werden. Die meisten SD-Stacks führen keine mehrfachen Block-Lese-/Schreibvorgänge durch, und daher können wir in eingebetteten Anwendungen niemals Megabyte pro Sekunde erhalten, wie Sie es mit einem PC können. Ein Teil davon ist auf die Taktraten zurückzuführen, die wir verwenden können, aber das meiste ist auf die Zeit zurückzuführen, die zum Lesen und Schreiben einzelner Blöcke benötigt wird. Kennt jemand SD-Karten, die dafür "optimiert" sind? Wenn es noch andere Vorschläge gibt, um dieses Limit zu umgehen, bin ich ganz Ohr. In meiner Anwendung wäre es jedoch aus verschiedenen Gründen SEHR schwierig, mehrere Blockanforderungen zu implementieren.

Das Limit ist sicherlich, dass der Column Scan Charge/IO-Controller auf der Karte einen Streaming-Modus für zusammenhängende und vorgeplante Blöcke hat und dass Sie die Karte irgendwie dazu bringen, SD v0.90.1-Kompatibilitäts-Sachen zu machen oder ein Timing zu bevorzugen, das wirklich nickt seine Erwartungen? Wenn ich nur wüsste, mit welcher Atmel-Serie Sie genau 1 Pin zum Lesen von SDHC-Karten hätten! Müssen wir Ihrer Anwendung mitteilen, wie die SD-Karten-E/A erfolgt?

Antworten (1)

SD-Karten mit kleinerer Kapazität bieten häufig eine bessere Leistung für Einzelblock-Schreibvorgänge, da ihre Löschseitengröße kleiner ist. Wenn Sie auf die Karte schreiben, selbst wenn Sie nur ein einzelnes Byte schreiben, muss der interne Controller der Karte möglicherweise eine ganze Seite (oft 4K) in einen Puffer lesen, Ihr einzelnes Byte ändern, die Flash-Seite löschen und dann das Ganze schreiben zurück zum Flash-Speicher. Daher haben Karten mit einer kleineren Löschseitengröße weniger Nachteile für kleine Schreibvorgänge an zufälligen Adressen.

Welchen Mikrocontroller verwendest du? SdFatLab funktioniert auf AVRs und unterstützt mehrere Block-Lese-/Schreibvorgänge. Ihre Dateien müssen sich in zusammenhängenden Blöcken auf der SD-Karte befinden, um sie nutzen zu können.

Sehen Sie sich einige Diskussionen und Benchmarks unter http://elm-chan.org/docs/mmc/mmc_e.html an

Ein Flash-Controller muss typischerweise mit Löschblöcken umgehen, die viel größer als eine logische Seite sind; Beim Schreiben einer Seite werden die alten Daten nicht sofort gelöscht, sondern zur Reklamation markiert. Wenn genügend Seiten in einem Löschblock zur Wiedergewinnung markiert sind, wird der Inhalt des Blocks in einen leeren Block verschoben, woraufhin der alte Block gelöscht werden kann. Je größer die Löschblockgröße ist, desto länger dauert dieser Vorgang, aber desto seltener muss er ausgeführt werden . Ich würde erwarten, dass das Firmware-Design im Flash-Controller einen viel größeren Leistungsunterschied ausmacht als ...