Czy to prawda, że ​​karta SD / MMC wyrównuje zużycie we własnym kontrolerze?

51

Nie mogę znaleźć żadnych wiarygodnych informacji na ten temat. Nie mam pełnej specyfikacji sprzętu karty SD / MMC.

Czy to prawda? Moja aplikacja na wysokim poziomie nie musi się martwić wyrównywaniem zużycia podczas pracy z tymi kartami?

EDYTOWAĆ

Czy ktoś może potwierdzić, że wyrównanie zużycia jest gwarantowane przez specyfikację SD? Chcę mieć pewność, ponieważ wygląda na to, że robi to większość dostawców, ale nie jest to wymagane przez specyfikację.

Ivarec
źródło
5
Nie wszyscy producenci Flash Media inwestują w algorytmy wyrównywania zużycia. Wyrównanie zużycia jest bardziej rozpowszechnione na dyskach SSD, na których producenci przodują na rynku ze względu na algorytmy.
Chetan Bhargava

Odpowiedzi:

43

Pracuję dla firmy, która była członkiem stowarzyszenia SD, znamy specyfikację 2.0 (SDHC). Specyfikacja karty SD NIE ma pozycji do wyrównywania zużycia. Jest to całkowicie zależne od producenta SD, który sobie z tym poradzi, jeśli tak zdecydują. Widzieliśmy, że niektórzy prawdopodobnie tak robią, inni nie. SDXC mogło to zmienić, aby uwzględnić wyrównanie zużycia, ale nie jestem tego pewien. Niestety jedynym sposobem, aby naprawdę to pokazać, jest uzyskanie oficjalnej specyfikacji. Najprawdopodobniej można go znaleźć w Internecie, ale stowarzyszenie SD naprawdę chce, abyś za to zapłacił.

Na marginesie, wzięcie karty 2 GB i zapisanie jej zaczyna się od nowa w kółko średnio około 10 TB, zanim karta się wyczerpie i nie będzie już można jej zapisać. Ponadto karty SD nie powiadomią Cię, gdy dane będą złe, tzn. Nie zwróci błędu we / wy, jak na dysku twardym komputera. Może to nie stanowić problemu dla projektów osadzonych, ponieważ 10 TB to DUŻO danych, ale dla kogoś może to być czynnik.

Kris Bahnsen
źródło
2
Zakładam, że nawet jeśli nie ma tego w specyfikacji, firmy nadal chcą to zrobić, aby utrzymać dobrą reputację. Podczas gdy super tanie podróbki nie dbają o reputację, sprzedają je ludziom, którzy chcą wszystko tanio. Czy to brzmi rozsądnie?
Kellenjb,
1
@Kellenjb To bardzo rozsądne założenie, a ja osobiście zgodziłbym się z tobą. Ponieważ jednak nie ma go w specyfikacji i uzyskanie dostępu do projektów kontrolerów SD poszczególnych producentów jest bardzo mało prawdopodobne, nie można tego naprawdę udowodnić. Przez lata przeprowadziliśmy wiele testów, niektóre główne marki osiągają znacznie lepsze wyniki niż inne. Mogą to być różnice w wewnętrznych algorytmach lub całkowity ich brak.
Kris Bahnsen,
4
Tanie podróbki nie będą obchodzić, nawet jeśli jest w specyfikacji. Nie jest to od razu widoczne dla klienta, MOŻE go brakować. Mówimy o ludziach, którzy sprzedają wtyczki ołowiu jako IC. Nie słyszałem o karcie z marką, która nie wyrównywała zużycia, ale przypuszczam, że jest to możliwe.
darron
@KrisBahnsen, czy możesz wyjaśnić, co karta SD faktycznie zwraca, gdy wystąpi nieodwracalny błąd? Jestem tym bardzo zainteresowany. Czy w ogóle nie ma możliwości wykrycia tego stanu?
fred basset
3
@fredbasset, sposób na zombie wątek;) Minęło trochę czasu, odkąd wykonałem jakąkolwiek pracę z kartą SD. Jednak same karty SD IIRC zwrócą fizycznie wszystko, na co mają ochotę. Niektóre nowsze w połączeniu z przyzwoitymi sterownikami mogą wykryć błąd IO. Jednak może ze starszych kart SD po prostu zwróci złe dane, które były przechowywane w NAND i nazwie to dobrym. Chociaż jeśli zapis nie jest w stanie zakończyć, zwróci błąd IO.
Kris Bahnsen
23

To prawda! Karty MicroSD zawierają mikroukład NAND flash połączony z mikrokontrolerem (ARM) zamkniętym w czarnym plastiku. http://www.bunniestudios.com/blog/?p=898 wyjaśnia.

Pod koniec kolejnego postu http://www.bunniestudios.com/blog/?p=918 Bunnie twierdzi, że zintegrowanie kontrolera prawdopodobnie kosztuje mniej niż przetestowanie flasha przed czasem.

Cytując instrukcję obsługi karty SD firmy SanDisk: „1.9 Wyrównanie zużycia. Wyrównanie zużycia jest nieodłączną częścią funkcji kasowanie danych na karcie SD za pomocą pamięci NAND”. Możesz przeczytać całość w arkuszu danych karty marki SanDisk .

współpracownik
źródło
1
Bunnie Huang jest dla mnie zdecydowanie wiarygodny!
vicatcu
Dobrze wiedzieć, ale poczekam na kogoś, kto może wyjaśnić to pytanie na podstawie formalnej specyfikacji tej technologii.
ivarec
2
Digikey pokazał mi tę bezużyteczną broszurę SanDisk, kiedy próbowałem wyszukać arkusz danych. Dane techniczne Wintec i Swissbit były lepsze i oba wspominały o wyrównaniu zużycia. Czy możesz połączyć się z tym arkuszem danych hostowanym przez Digikey?
Kevin Vermeer
Są o wiele lepsze niż stary SanDisk.
stolarz
Wintec nie był świetny, ale nowy SanDisk jest najlepszy z całej gamy! Dzięki za edycję.
Kevin Vermeer
19

Tak, karty SD / MMC mają kontrolery, które wyrównują zużycie. Jeśli nie, możesz je zniszczyć w ciągu kilku minut z niewłaściwymi wzorami zapisu.

To jest problem dla niektórych osadzonych projektów. Najwyraźniej nie ma (najwyraźniej) sposobu, aby wiedzieć, które sektory mogą zostać zrównane z zużyciem w dowolnym momencie, więc cykl zasilania w niewłaściwym czasie może zniszczyć dane w dowolnym miejscu na karcie, bez względu na to, gdzie MYŚLISZ, że piszesz. (nie pytaj skąd wiem :))

Karty SD muszą być używane z systemem, który gwarantuje czyste zamknięcie systemu (lub przynajmniej, że zapisy są dozwolone), w przeciwnym razie nastąpi (ostatecznie) utrata danych.

EDYTOWAĆ

Problem polega na tym, że proces wyrównywania zużycia jest całkowicie ukryty. Dowolny sektor na dysku może zostać przeniesiony w dowolnym momencie (zamieniony z zapisaną stroną), a jeśli nastąpi awaria zasilania w trakcie tego procesu, losowy sektor może zostać uszkodzony.

Chociaż istnieją względnie bezpieczne sposoby na wdrożenie tego ruchu, nie ma go w żadnej specyfikacji, więc nie można ufać, że karta to zrobi. Możesz przetestować jedną kartę, sprawić, by działała, a następnie producent może zmienić implementację bez zmiany numeru części i jesteś zepsuty.

Z testów wynika, że ​​kontroler moich kart SD wcale NIE robi tego w bezpieczny sposób.

Mogę spojrzeć na kartę SD o wysokiej niezawodności, którą widziałem reklamowaną specjalnie pod kątem tolerancji na awarię zasilania ... ale wtedy musisz zaufać producentowi, że zrobi to poprawnie, a ja nie. Naprawdę chcę bezpośredniej kontroli nad wymazywaniem stron. Nadal próbuję to rozgryźć.

darron
źródło
4
Zobacz moją opublikowaną odpowiedź. Ponieważ algorytmy wyrównywania zużycia zależą od producenta, może nie być to tabaka. Dobry algorytm wyrównywania zużycia najpierw przeniesie dane, a następnie oznaczy je jako dobre, a następnie odrzuci oryginalne dane. Może to stanowić problem na niektórych kartach, a może nie na innych. SD to bardzo brzydka konstrukcja, gdy dojdziesz do jej sedna.
Kris Bahnsen
2
Tak, to jest gówniany standard, jeśli o mnie chodzi. To bardzo denerwujące, że tak wszechobecny standard przechowywania pamięci byłby z natury zawodny.
darron
2
@jpc: Może wtedy zrobię wpis na blogu. Mam wrażenie, że nie jest to często brane pod uwagę. Sam nie zdawałem sobie sprawy z konsekwencji, dopóki nie było za późno. Walczyłem z tym, rozmawiałem z producentem mojej karty SD itp. Nie ma innego rozwiązania niż zminimalizować czas zapisu. Teraz piszę do NAND flash i kopiuję do SD raz dziennie tak szybko, jak to możliwe. Istnieją karty SD zaprojektowane tak, aby były „odporne” na przypadkowe awarie zasilania, ale nie jestem pewien, czy nawet te są całkowicie godne zaufania.
darron
2
@fred basset Dziwnie, specyfikacja kart przemysłowych wydaje się ulec zmianie od czasu napisania tej odpowiedzi. I był widząc karty microSD o gwarancji na zapisy (w dzienniku, jak sądzę) ... teraz, robią żadnego takiego roszczenia. Rozmawiając z producentem, używają teraz superkapsów ... ale tylko na kompaktowe karty flash mają dla nich miejsce. Bezpieczne wykonywanie zadań znacznie obniża wydajność. Mówią, że w jakiś sposób zapewniają wystarczającą moc tworzenia kopii zapasowych, aby ukończyć zapis. Biorąc pod uwagę, jak skomplikowane są nowoczesne ARM SBC ... naprawdę trudno to zrobić, jeśli projekt referencyjny dostawcy tego nie robi. Żadne, o czym wiem.
darron 27.04.13
2
@freq basset Używam UBI i UBIFS. Wygląda na to, że działa dobrze ... Mam wiele systemów działających od lat bez żadnych problemów.
darron
12

Każdy typ karty SD wykorzystujący dowolny typ konwencjonalnej pamięci flash NAND będzie musiał korzystać z pewnego rodzaju wirtualizacji sektorowej, ponieważ żadne konwencjonalne urządzenie flash NAND nie obsługuje usuwania pojedynczych sektorów 512-bajtowych, a żadne konwencjonalne urządzenie flash NAND o znacznych rozmiarach byłby w stanie uzyskać wydajność, która była rzędu wielkości nawet marginalnie akceptowalnej, gdyby każda próba zapisu sektora wymagała od urządzenia skopiowania wszystkich sektorów w bloku kasowania tego sektora (nawet do pamięci RAM), a następnie skasowania bloku i zapisu wszystkie sektory z powrotem. Większość technik wirtualizacji sektorowej jest z natury nieco wyrównująca zużycie. Spodziewałbym się, że największym problemem różnic w jakości urządzeń i podróbek będzie zakres, w jakim urządzenie aktywnie próbuje wyrównać poziomowanie między blokami, w przeciwieństwie do zwykłego przydziału pseudolosowego bloku i nadziei, że przyniesie on akceptowalnie zbliżone do jednolitych wyniki. W praktyce spodziewałbym się, że w większości przypadków wystarczający byłby nawet losowy / mający najlepsze wyniki przydział.

supercat
źródło
Bardzo możliwe, że „poziom zużycia” implementowany przez niektórych producentów jest spowodowany przez sam interfejs NAND i blokowanie sektora / sektora do blokowania wirtualizacji.
Kris Bahnsen
1
@KrisBahnsen: Oczekuję, że producenci, którzy twierdzą, że poziom zużycia jest aktywnie monitorować względne zużycie różnych bloków i wiek zawartych w nich danych, a jeśli okaże się, że bloki z danymi o długim okresie użytkowania znajdują się w blokach o znacznie mniejszym zużyciu niż średnia, dane z tych bloków zostaną przeniesione do bloków o większym zużyciu (aby najprawdopodobniej zminimalizować przyszłe zużycie tych bloków). Może to poprawić 10-krotnie żywotność urządzenia, które w 95% wypełnione jest danymi, które nigdy się nie zmieniają, a pozostałe 5% przestrzeni jest często ubijane.
supercat,
Zgadzam się, jeśli reklamują to, wyobrażam sobie, że dokonaliby pewnego rodzaju rzeczywistego wyrównywania zużycia. Jestem trochę negatywny w stosunku do całego tematu, za co przepraszam; Zostałem ugryziony kilka razy przez dziwactwa SD.
Kris Bahnsen,
1
@KrisBahnsen: Moim zdaniem największym problemem jest model wirtualizacji, który zakłada liniową wiązkę następujących po sobie sektorów 512-bajtowych. Interfejs z DOSem może być wygodny, ale tak naprawdę nie pasuje dobrze do istniejącego sprzętu ani do tego, czego naprawdę chce oprogramowanie hosta. Otwórz numery bloków do 64 bitów i pozwól, aby były arbitralnie niesekwencyjne, a następnie zadbaj o to, aby pliki były zawsze przechowywane w logicznie kolejnych blokach. Aby usunąć plik, usuń jego zakres bloków.
supercat
2
To prawdopodobnie najlepsza odpowiedź. Podejrzewam, że tak właśnie wszyscy to robią. Jeśli się nad tym zastanowić, nie można zrobić deterministycznego wyrównywania zużycia za pomocą jakiegokolwiek naprawdę zaawansowanego algorytmu, ponieważ sama historia zużycia musiałaby być przechowywana gdzieś na tej samej karcie, a ta część zawiodłaby jako pierwsza. Randomizowane wyrównanie jest jedyną praktyczną możliwością. Nie jestem przekonany, że dyski SSD są mądrzejsze. Mogą po prostu mieć więcej zapasowych buforów, choć z pewnością istnieje możliwość, że przechowują one bardzo zgrubne (a zatem rzadko aktualizowane) informacje o zużyciu.
Nimrod
7

Sandisk ma białą księgę, która wyjaśnia logikę wyrównywania zużycia na swoich kartach, a następnie podaje szacunkowe czasy życia karty w wielu scenariuszach. Streszczenie: jeśli nie wbijesz karty non-stop, będzie to trwało dekady.

Michael Slade
źródło
Link jest martwy, a treść wydaje się być usunięta - bo może ujawniła zbyt wiele?
Cuadue,
6
@Cuadue Link jest dostępny. Na wypadek awarii strona jest teraz archiwizowana pod adresem web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/…
Lekensteyn
2

Warto zauważyć, że pomimo tego wiele urządzeń ma uszkodzone karty SD i microSD, szczególnie te o wysokiej gęstości, jeśli bateria jest słaba lub telefon ulega awarii / wyłącza się itp. Podejrzewam, że problemem jest nieodpowiednia regulacja napięcia zasilającego, ponieważ jest to dobrze znane na niektórych kartach (kaszel Ad t / kaszel), co powoduje zjawisko nieczytelnej karty w niektórych zewnętrznych czytnikach, ale działa dobrze na mikrosilnikach dostarczanych przez niektóre sklepy komputerowe.

W tej chwili jestem w trakcie odzyskiwania karty z tą usterką, co dziwne, większość danych można odzyskać, ale niektóre sektory nie zmieniają się przy każdej próbie. Czy samo poziomowanie zużycia może być przyczyną winy? (tak, wypróbowałem wiele czytników, ten sam błąd!)

Zagadka
źródło
0

Miał też pewne sukcesy „nukowania” kart zombie, tj. Takich, które nie ukończą formatu lub są tylko do odczytu. Działa tylko na niewielki procent, ale są one znacznie bardziej wrażliwe niż większość „oficjalnych” wytycznych dotyczących efektu.

Tak potraktowana karta testowa trwała pełne cztery miesiące, zanim ponownie się zepsuła, gdyby nie urządzenie, którego użyto do zasilania głośnego napięcia, żywotność mogłaby być dłuższa.

Conundrum5642Z
źródło
1
Przez „nukowanie” masz na myśli umieszczenie go w kuchence mikrofalowej? Przy jakiej mocy i jak długo?
0x6d64,
Uh, nie :-) Dlaczego też to zrobić, skoro wyładowanie jarzeniowe (RF) miałoby podobny efekt i byłoby o wiele mniej niebezpieczne niż metoda, którą zastosowałem? Okazuje się, że karty USB są znacznie bardziej czułe ze względu na brak metalowej obudowy z jednej strony.
Conundrum5642Z
Nie mogę potwierdzić ani zaprzeczyć, że nukowanie odnosi się do używania „gadżetu” 5642 + HVPS ze względów prawnych. Jednak działało to wielokrotnie, a technika ta jest obecnie znana, ponieważ opublikowałem ją na HaD itp.
Conundrum