Gibt es SD-Karten, die für das Lesen / Schreiben einzelner Blöcke optimiert sind?


7

Ich habe im Laufe der Jahre SD-Karten für mehrere eingebettete Anwendungen verwendet. Da die Karten jedoch größer geworden sind, sind die Lese- und Schreibgeschwindigkeiten für einzelne Blöcke gesunken. Ich vermute, das liegt hauptsächlich daran, dass die Seiten immer größer werden. Die meisten SD-Stacks führen keine Lese- / Schreibvorgänge mit mehreren Blöcken durch. Daher können wir in eingebetteten Anwendungen niemals Megabyte pro Sekunde erhalten, wie Sie es mit einem PC tun können. Ein Teil davon ist auf die Taktraten zurückzuführen, die wir verwenden können, aber der größte Teil 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 andere Vorschläge gibt, um diese Grenze zu umgehen, bin ich ganz Ohr. In meiner Anwendung wäre es jedoch aus verschiedenen Gründen SEHR schwierig, mehrere Blockanforderungen zu implementieren.


Sicherlich besteht die Grenze darin, dass der Column Scan Charge / IO-Controller auf der Karte über einen Streaming-Modus für zusammenhängende und vorgeplante Blocktafeln verfügt und dass Sie die Karte irgendwie dazu bringen, SD v0.90.1-Kompatibilitätsaufgaben zu erledigen oder ein Timing zu bevorzugen, das wirklich nervt 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 ausgeführt wird?
Thrangalucchian

Antworten:


2

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

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

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


Ein Flash-Controller muss sich normalerweise mit Löschblöcken befassen, die viel größer als eine logische Seite sind. Wenn eine Seite geschrieben wird, werden die alten Daten nicht sofort gelöscht, sondern zur Wiederherstellung markiert. Wenn genügend Seiten in einem Löschblock zur Wiederherstellung markiert sind, wird der Inhalt des Blocks in einen leeren Block verschoben, woraufhin der alte Block gelöscht werden kann. Je größer der Löschblock ist, desto länger dauert der Vorgang, desto seltener muss er jedoch ausgeführt werden . Ich würde erwarten, dass das Firmware-Design innerhalb des Flash-Controllers einen viel größeren Leistungsunterschied macht als ...
Supercat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.