PandoraSuechtig said:
wejp said:
Das ist so nicht ganz richtig. Controller in SD-Karten sind darauf optimiert mit einem FAT-Dateisystem benutzt zu werden. Wie genau die Interna von den Controllern aussehen ist unklar, aber es ist ja bekannt, dass sich das verwenden anderer Dateisysteme nachteilig auf die Lebenserwartung auswirken kann (und das nicht aufgrund von Journaling oder atime-Zugriffen - das Selbe gilt ja auch für andere nicht-Journaling-Dateisysteme). Ob sich dieses "Wissen" des Controllers über FAT darauf beschränkt, wo das Inhaltsverzeichnis liegt, oder ob mehr Details über das Dateisystem genutzt werden ist unklar.
Mich würde eine Quelle hierfür sehr interessieren!!!
Ich werde versuchen das wiederzufinden. Ich meine es mal vor längerer Zeit in einer c't gelesen zu haben. Ich muss meine alten c'ts mal danach durchsuchen.
Und mir ist endlich das Killerargument eingefallen warum der Controller die FAT Informationen nicht nutzen kann für WL:
Würde er die Blöcke im FS verschieben und die FAT-Tabelle anpassen würde diese nicht mehr mit dem OS-Cache übereinstimmen. Die Verteilung der Blöcke muss nach aussen vor und nach einer "Umstellung" gleich aussehen. Er muss daher ein internes Mapping führen zwischen der "äusseren/logischen" und der "internen/realen" Verteilung.
So hatte ich es nicht gemeint und es ist so auch höchst wahrscheinlich gar nicht realisiert, wenn der Controller das FS berücksichtigt. Viel mehr kann der Controller die Charakteristiken von FAT nutzen um intelligent Blöcke zu beschreiben. Z.B. könnte der Controller Teile die besonders oft von FAT-FS neu beschrieben werden, häufiger in andere Bereiche schreiben oder der Controller könnte feststellen, welche Blöcke vom FS aktuell nicht benutzt werden und diese bevorzugt für das WL verwenden, da dann nichts umkopiert werden muss. Das darf für das Dateisystem natürlich nicht sichtbar sein, aber für die genannten Beispiele wäre das auch nicht nötig. Die Zuordnung zwischen logischen und physikalischen Adressen des Flash-Speichers muss natürlich immer vor dem FS versteckt werden. Du hast ganz sicher recht damit, dass der Controller niemals das Dateisystem selbst verändern wird. Das bedeutet aber nicht gleich, dass der Controller Wissen über Eigenschaften des FS nicht zu Nutze machen kann.
Ein Replace sollte nur stattfinden, wenn der Block schon zu oft benutzt wurde (usage count pro Block sollte schon vorhanden sein). Bis dahin kann er ruhig öfters beschrieben werden. Das Schreiben auf dem Medium erfolgt ja nicht gleichmässig, sondern gewisse Blöcke werden extrem oft beschrieben, genau diese würden dann z.B. 1000x normal überbeschrieben, dann beim 1001 Write ausgetauscht und der "neue" Block wieder 1000x beschrieben. Wozu bei "Jedem Schreibzugriff" umkopieren???
So war es nicht gemeint. Nicht bei jedem Schreibzugriff, sondern bei jedem Schreibzugriff, der durch WL auf einen anderen Block umgeleitet werden soll, müsste der Inhalt umkopiert werden. Ich vermute mal stark, dass intelligente WL-Algorithmen genau das nicht machen werden (1000 mal beschreiben und ab einem bestimmten Zählerstand einen anderen Block wählen), sondern versuchen werden die Schreibzugriffe möglichst gleichmäßig zu streuen, wenn möglich. Ich vermute auch, dass es keinen Zähler für jeden Block gibt, wie oft dieser beschrieben wurde. Das würde die Performance beim Schreiben ja nochmal deutlich reduzieren, da dieser Zähler bei jedem Schreibzugriff zunächst gelesen und dann wieder geschrieben werden müsste.
wejp said:
Du vergisst bei deiner Rechnung, dass vom WL-Algorithmus Blöcke umkopiert werden müssten, so dass eben nicht mehr 10000 tatsächlich nutzbare Schreibvorgänge je Block übrig bleiben würden.
Guter Einwand, das vermindert das Ergebnis dann etwa im Promille Bereich.
Dass das nur Änderungen im Promillebereich bewirken würde, ist reine Spekulation.
Schlussfrage: Spielt Fragmentierung bei Flashmedien überhaupt eine Rolle, da Seekzeiten hier um ein vielfaches kleiner als bei magnetischen Platten sind??
Fragmentierung sollte genau aus dem von dir genannten Grund so gut wie keine Rolle spielen.
EDIT: Ich habe mir gerade mal den Thread im englischen Forum durchgelesen. Squidge hat in jedem Fall mit zwei Punkten absolut Unrecht: 1) CF-Karten machen auch Wear-Leveling und der Controller ist bei den Karten eingebaut, da die Teile ja nichts anderes als IDE/ATA-Geräte sind.
2) Festplatten haben auch "Wear-Leveling". Jede Festplatte hat einen Reservebereich, der verwendet wird, wenn Bereiche der Platte kaputtgehen. Das kann man sich ja sogar über die SMART-Informationen anzeigen lassen, wie oft das schon passiert ist.