È vero che una scheda SD / MMC consuma il livellamento con il proprio controller?


51

Non riesco a trovare alcuna informazione affidabile al riguardo. Non ho le specifiche complete dell'hardware della scheda SD / MMC.

È vero? La mia applicazione di alto livello non deve preoccuparsi del livellamento dell'usura quando si lavora con queste carte?

MODIFICARE

Qualcuno potrebbe confermare che il livellamento dell'usura è garantito dalle specifiche SD? Voglio essere sicuro, perché sembra che la maggior parte dei venditori lo faccia, ma non è richiesto dalle specifiche.


5
Non tutti i produttori di supporti flash investono in algoritmi di livellamento dell'usura. Il livellamento dell'usura è più diffuso negli SSD in cui i produttori sono leader del mercato grazie agli algoritmi.
Chetan Bhargava,

Risposte:


43

Lavoro per un'azienda che era membro dell'associazione SD, conosciamo le specifiche 2.0 (SDHC). Le specifiche della scheda SD NON hanno voci per il livellamento dell'usura. Ciò dipende completamente dal produttore della SD per gestirlo se lo desidera. Abbiamo visto che alcuni probabilmente lo fanno, mentre altri no (attenzione alle schede SD knock-off super economiche). SDXC potrebbe averlo modificato per includere il livellamento dell'usura, ma non ne sono sicuro. Sfortunatamente, l'unico modo per dimostrare che è mettere le mani sulle specifiche ufficiali. Puoi trovarlo online molto probabilmente, ma l'associazione SD vuole davvero che tu lo paghi.

Come nota a margine, prendere una scheda da 2 GB e scriverla cominciando a finire ripetutamente in media circa 10 TB prima che la carta sia morta e non sia più scrivibile. Inoltre, le schede SD non ti faranno sapere quando i dati non sono corretti, ovvero non restituiranno un errore I / O come farà un hard disk del PC. Questo potrebbe non essere un problema per i progetti incorporati poiché 10 TB sono MOLTI di dati, ma potrebbero essere un fattore per qualcuno.


2
Suppongo che anche se non è nelle specifiche, le aziende vogliono ancora farlo per mantenere una buona reputazione. Mentre i knock-off super economici non si preoccupano della reputazione, vendono a persone che cercano di andare a buon mercato su tutto. Sembra ragionevole?
Kellenjb,

1
@Kellenjb È un presupposto molto ragionevole e sono personalmente d'accordo con te. Tuttavia, poiché non è nelle specifiche, ed è molto improbabile che ottenga l'accesso ai progetti di controller SD di un determinato produttore, non è davvero possibile provarlo. Nel corso degli anni abbiamo fatto molti test, alcuni dei marchi più importanti hanno prestazioni molto migliori di altri. Potrebbe trattarsi di differenze negli algoritmi interni o della completa mancanza di essi.
Kris Bahnsen

4
I knockoff economici non se ne cureranno anche se sono nelle specifiche. Non è immediatamente visibile al cliente, POTREBBE mancare. Stiamo parlando di persone che vendono plug in piombo come circuiti integrati. Non ho sentito parlare di una carta di marca che non ha indossato il livellamento, ma suppongo sia possibile.
darron,

@KrisBahnsen puoi approfondire cosa restituisce effettivamente la scheda SD in caso di errore non recuperabile? Sono molto interessato a questo. Non c'è modo di rilevare questa condizione?
fred basset,

3
@fredbasset, modo di zombie il thread;) È passato un po 'di tempo da quando ho fatto qualsiasi lavoro con la scheda SD. Tuttavia, le stesse schede SD IIRC restituiranno fisicamente qualunque cosa vogliano. Alcuni di quelli più recenti combinati con driver decenti potrebbero essere in grado di rilevare un errore IO. Tuttavia, le vecchie schede SD potrebbero restituire solo dati errati archiviati in NAND e chiamarli buoni. Tuttavia, se una scrittura non è in grado di completarsi, verrà restituito un errore IO.
Kris Bahnsen,

23

È vero! Le schede MicroSD contengono un chip flash NAND collegato a un microcontrollore (ARM) incapsulato in un po 'di plastica nera. http://www.bunniestudios.com/blog/?p=898 spiega.

Alla fine del post di follow-up http://www.bunniestudios.com/blog/?p=918 Bunnie ritiene che l'integrazione del controller probabilmente costa meno del test del flash in anticipo.

Citando il manuale del prodotto della scheda SD SanDisk: "1.9 Livellamento dell'usura. Il livellamento dell'usura è una parte intrinseca della funzionalità di pooling di cancellazione della scheda SD, utilizzando la memoria NAND." Puoi leggere tutto nel foglio dati per una scheda del marchio SanDisk .


1
Bunnie Huang è decisamente abbastanza credibile per me!
Vicatcu

Buono a sapersi, ma aspetterò qualcuno che possa illuminare questa domanda in base alle specifiche formali di questa tecnologia.
Ivarec,

2
Digikey mi ha mostrato questa inutile brochure SanDisk quando ho provato a cercare una scheda tecnica. I fogli dati di Wintec e Swissbit erano migliori ed entrambi menzionavano il livellamento dell'usura. Puoi collegarti a quel foglio dati ospitato da Digikey?
Kevin Vermeer,

Questi sono molto meglio del vecchio SanDisk.
Joeforker

Il Wintec non era eccezionale, ma il nuovo SanDisk è il migliore del gruppo! Grazie per la modifica.
Kevin Vermeer,

19

Sì, le schede SD / MMC hanno controller che indossano il livellamento. In caso contrario, potresti distruggerne uno in pochi minuti con schemi di scrittura sbagliati.

Questo è in realtà un problema per alcuni progetti integrati. Non c'è assolutamente modo (apparentemente) di sapere quali settori potrebbero essere soggetti a usura in qualsiasi momento, quindi un ciclo di accensione al momento sbagliato può distruggere i dati ovunque sulla carta, indipendentemente da dove PENSI che stai scrivendo. (non chiedere come lo so :))

Le schede SD devono essere utilizzate con un sistema che garantisca un arresto del sistema pulito (o almeno che le scritture possano essere completate), altrimenti si verificherà (alla fine) la perdita di dati.

MODIFICARE

Il problema è che il processo di livellamento dell'usura è completamente nascosto. QUALSIASI settore sul disco potrebbe essere spostato in qualsiasi momento (scambiato con la pagina scritta), e se il potere dovesse fallire nel mezzo di quel processo quel settore casuale potrebbe essere danneggiato.

Mentre ci sono modi ragionevolmente sicuri per implementare questa mossa, non è in alcuna specifica, quindi non puoi fidarti che la carta lo farà. Potresti testare una scheda, farla funzionare, quindi il produttore potrebbe cambiare l'implementazione senza cambiare il numero di parte e sei fregato.

Dai test, il controller delle mie schede SD NON lo fa in modo sicuro.

Potrei esaminare una scheda SD "ad alta affidabilità" che ho visto pubblicizzata appositamente per la tolleranza all'interruzione dell'alimentazione ... ma poi devi fidarti del produttore per farlo correttamente, e io no. Voglio davvero il controllo diretto sulla cancellazione della pagina. Sto ancora cercando di capirlo.


4
Vedi la mia risposta postata. Poiché gli algoritmi di livellamento dell'usura dipendono dal produttore, potrebbero non essere all'altezza. Un buon algoritmo di livellamento dell'usura sposta prima i dati, quindi li contrassegna correttamente, quindi raccoglie i dati originali. Questo potrebbe essere un problema su alcune carte, forse non su altre. SD è un design molto brutto quando arrivi in ​​fondo.
Kris Bahnsen

2
Sì, è uno standard di merda per quanto mi riguarda. È molto fastidioso che uno standard di archiviazione di memoria così diffuso sia così intrinsecamente inaffidabile.
darron,

2
@jpc: forse farò un post sul blog allora. Ho l'impressione che non sia considerata spesso. Non ho realizzato le implicazioni da solo fino a quando non era troppo tardi. Ho combattuto con questo, ho parlato con il produttore della mia scheda SD, ecc. Nessuna soluzione se non quella di ridurre al minimo i tempi di scrittura. Ora scrivo su NAND Flash e copio su SD una volta al giorno il più velocemente possibile. Ci sono schede SD progettate per essere "resistenti" a interruzioni di corrente casuali, ma non sono sicuro che anche queste siano completamente affidabili.
Darron,

2
@fred basset Stranamente, le specifiche sulle schede industriali sembrano essere cambiate da quando è stata scritta questa risposta. Mi stavo vedendo schede microSD con garanzie sulla scrittura (Journaled, credo) ... ora, non fanno tale rivendicazione. Parlando con un produttore, stanno usando le supercaps ora ... ma solo le schede flash compatte hanno spazio per loro. Fare le cose in sicurezza riduce troppo le prestazioni. Stanno dicendo di fornire in qualche modo abbastanza potenza di backup per completare una scrittura. Considerando la complessità dei moderni SBC ARM ... è davvero difficile da fare se il progetto di riferimento del fornitore non lo fa. Nessuno che io sappia fare.
darron,

2
@freq basset Sto usando UBI e UBIFS. Sembra funzionare bene ... Ho avuto molti sistemi in esecuzione per anni senza problemi.
darron,

12

Qualsiasi tipo di scheda SD che utilizza qualsiasi tipo di memoria flash NAND convenzionale dovrà utilizzare un tipo di virtualizzazione di settore, poiché nessun dispositivo flash NAND convenzionale può supportare la cancellazione di singoli settori a 512 byte e nessun dispositivo flash NAND convenzionale di dimensioni significative sarebbe in grado di produrre prestazioni che erano entro un ordine di grandezza di essere persino marginalmente accettabile se ogni tentativo di scrivere un settore richiedesse al dispositivo di copiare tutti i settori nel blocco di cancellazione di quel settore (anche su RAM), quindi cancellare il blocco e scrivere tutti i settori indietro. La maggior parte delle tecniche di virtualizzazione settoriale sono intrinsecamente un po 'livellanti dall'usura. Mi aspetto che il problema più grande della varianza tra dispositivi di qualità e knock-off sarà la misura in cui un dispositivo tenta attivamente di uniformare il livellamento tra i blocchi, rispetto al semplice utilizzo dell'allocazione di blocchi pseudo-casuali e alla speranza che si ottengano risultati accettabilmente vicini all'uniforme. In pratica, mi aspetterei che anche l'allocazione casuale / speranza per la migliore sarebbe adeguata nella maggior parte dei casi.


Potrebbe benissimo essere che il "livellamento dell'usura" implementato da alcuni produttori sia causato dalla stessa interfaccia NAND e dal blocco a settore / settore per bloccare le virtualizzazioni.
Kris Bahnsen

1
@KrisBahnsen: mi aspetto che i produttori che dichiarano il livellamento dell'usura monitorino attivamente l'usura relativa dei diversi blocchi e l'età dei dati in essi contenuti e se si riscontrano blocchi con dati di lunga durata in blocchi con un'usura molto inferiore alla media, il i dati di tali blocchi verranno spostati in blocchi che presentavano maggiore usura (in modo da ridurre, molto probabilmente, l'usura futura di tali blocchi). Ciò potrebbe migliorare di 10 volte la vita utile di un dispositivo riempito per il 95% con dati che non cambiano mai, mentre il restante 5% di spazio viene sfornato frequentemente.
supercat

Sono d'accordo, se lo pubblicizzano immagino che farebbero una sorta di vero livellamento dell'usura. Sono un po 'negativo sull'intero argomento per il quale mi scuso; Sono stato morso alcune volte dalle stranezze di SD.
Kris Bahnsen

1
@KrisBahnsen: Penso che il problema più grande sia un modello di virtualizzazione che presuppone un insieme lineare di settori a 512 byte numerati consecutivamente. Potrebbe essere stato conveniente interfacciarsi con DOS, ma non si adattava bene all'hardware esistente, né a ciò che il software host vuole davvero. Aprire i numeri di blocco a 64 bit e consentire loro di essere arbitrariamente non consecutivi, quindi disporre di file sempre memorizzati in blocchi logicamente consecutivi. Per eliminare un file, eliminare il suo intervallo di blocchi.
supercat

2
Questa è forse la risposta migliore. Sospetto che sia così che lo fanno tutti. Se ci pensate, non c'è modo di livellare in modo deterministico l'usura con alcun tipo di algoritmo veramente sofisticato perché la storia dell'usura stessa dovrebbe essere memorizzata da qualche parte sulla stessa carta e quella parte fallirebbe prima. Il livellamento casuale è l'unica possibilità pratica. Non sono convinto che gli SSD siano più intelligenti. Possono semplicemente avere più buffer di sostituzione, anche se è certamente possibile che memorizzino informazioni sull'usura molto grossolane (e quindi raramente aggiornate).
Nimrod,

7

Sandisk ha un white paper che spiega la logica di livellamento dell'usura nelle sue carte e continua a fornire stime sulla vita della carta in una serie di scenari. Riepilogo: a meno che tu non stia martellando la carta ininterrottamente, durerà decenni.


Il link è morto e il contenuto sembra essere stato cancellato - perché ha rivelato troppo, forse?
Cuadue,

6
@Cuadue Il collegamento è accessibile. Nel caso in cui si rompa, la pagina è archiviata ora su web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/…
Lekensteyn

2

È interessante notare che, nonostante ciò, molti dispositivi danneggiano le schede SD e microSD, specialmente quelle ad alta densità se la batteria è scarica o il telefono si arresta in modo anomalo / si spegne / ecc. Ho il sospetto che il problema sia una regolazione inadeguata dell'alimentazione di tensione poiché questo è ben noto su alcune schede (tosse Ad t / tosse) per provocare il fenomeno di una scheda illeggibile su alcuni lettori esterni ma funziona bene sulla micro varietà fornita da alcuni negozi di computer.

Al momento sto recuperando una scheda con questo errore, stranamente la maggior parte dei dati è recuperabile, ma alcuni settori non pensano che questo cambi ad ogni tentativo. Lo stesso livellamento dell'usura potrebbe essere imputabile? (sì, ho provato più lettori, stessa colpa!)


0

Ha avuto anche alcune carte zombi "nuking" di successo, cioè quelle che non completano un formato o sono di sola lettura. Funziona solo su una piccola percentuale ma sono molto più sensibili della maggior parte delle linee guida "ufficiali" all'effetto.

Una scheda di prova così trattata è durata ben quattro mesi prima di fallire di nuovo, se non fosse stata per il dispositivo utilizzato per fornire tensione rumorosa la vita avrebbe potuto essere più lunga.


1
"Nuking" intendi metterlo nel microonde? A quale potenza e per quanto tempo?
0x6d64

Uh, no :-) Perché farlo anche quando una scarica a bagliore (RF) avrebbe un effetto simile e sarebbe molto meno pericolosa del metodo che ho usato? Si scopre che le schede US sono molto più sensibili a causa della mancanza di un involucro di metallo su un lato.
Conundrum5642Z

Non posso confermare o negare che il nuking si riferisca all'uso di un "gadget" 5642 + HVPS per motivi legali. Tuttavia ha funzionato ripetutamente e la tecnica è ora nota come l'ho pubblicata su HaD ecc.
Conundrum,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.