Правда ли, что SD / MMC-карта выравнивается при помощи собственного контроллера?


51

Я не могу найти достоверную информацию об этом. У меня нет полной спецификации оборудования SD / MMC Card.

Это правда? Мое высокоуровневое приложение не должно быть связано с выравниванием износа при работе с этими картами?

РЕДАКТИРОВАТЬ

Может ли кто-нибудь подтвердить, что выравнивание износа гарантируется спецификацией SD? Я хочу быть уверен, потому что похоже, что большинство производителей делают это, но это не требуется спецификацией.


5
Не все производители флэш-носителей вкладывают средства в алгоритмы выравнивания износа. Выравнивание износа более распространено в твердотельных накопителях, где производители лидируют на рынке из-за алгоритмов.
Четан Бхаргава

Ответы:


43

Я работаю в компании, которая раньше была членом ассоциации SD, мы знакомы со спецификацией 2.0 (SDHC). В спецификации SD-карты НЕТ записи для выравнивания износа. Это полностью зависит от производителя SD, чтобы справиться с этим, если они того пожелают. Мы видели, что некоторые, вероятно, делают, в то время как другие очень не делают (остерегайтесь супер дешевой поддельной карты SD). SDXC, возможно, изменил это, чтобы включить выравнивание износа, но я не уверен в этом. К сожалению, единственный способ показать это - получить официальные спецификации. Вы можете найти его в Интернете, скорее всего, но ассоциация SD действительно хочет, чтобы вы заплатили за это.

В качестве дополнительного примечания: если взять карту объемом 2 ГБ и снова и снова начинать писать, то в среднем около 10 ТБ до того, как карта перестает работать и больше не доступна для записи. Кроме того, SD-карты не сообщат вам, когда данные плохие, то есть не вернут ошибку ввода-вывода, как жесткий диск ПК. Это может не быть проблемой для встроенных проектов, так как 10 ТБ - это МНОГО данных, но это может быть фактором для кого-то.


2
Я предполагаю, что, хотя это не входит в спецификацию, компании все еще хотят сделать это, чтобы сохранить свою репутацию хорошей. В то время как супердешевые подделки не заботятся о репутации, они продают людям, которые надеются дешеветь на все. Это звучит разумно?
Kellenjb

1
@Kellenjb Это очень разумное предположение, и я лично согласился бы с вами. Однако, поскольку этого нет в спецификации, и очень маловероятно, что он получит доступ к контроллерам SD какого-либо конкретного производителя, это не может быть доказано. За прошедшие годы мы провели много испытаний, некоторые крупные бренды работают намного лучше, чем другие. Это могут быть различия во внутренних алгоритмах или их полное отсутствие.
Крис Баннсен,

4
Дешевые подделки не будут заботиться, даже если это в спецификации. Это не сразу видно клиенту, оно МОЖЕТ отсутствовать. Мы говорим о людях, которые продают свинцовые вилки в качестве микросхем. Я не слышал о карточках известных брендов, которые не выравнивали износ, но полагаю, что это возможно.
Даррон

@KrisBahnsen Можете ли вы уточнить, что на самом деле возвращает SD-карта при наличии неисправимой ошибки? Я очень заинтересован в этом. Нет ли вообще способа обнаружить это состояние?
Фред Бассет

3
@fredbasset, способ зомби нить;) Прошло много времени с тех пор, как я работал с любой SD-картой. Однако сами карты SD IIRC возвращают все, что они чувствуют. Некоторые из более новых в сочетании с приличными драйверами могут обнаружить ошибку ввода-вывода. Однако, возможно, старые SD-карты просто вернут плохие данные, которые были сохранены в NAND, и назовут их хорошими. Однако, если запись не может быть завершена, это вернет ошибку ввода-вывода.
Крис Бансен,

23

Это верно! Карты MicroSD содержат флеш-чип NAND, связанный с (ARM) микроконтроллером, заключенным в черный пластик. http://www.bunniestudios.com/blog/?p=898 объясняет.

В конце следующего поста http://www.bunniestudios.com/blog/?p=918 Bunnie утверждает, что интеграция контроллера, вероятно, стоит дешевле, чем предварительное тестирование флэш-памяти.

Цитировать руководство по продукту SD-карты SanDisk: «1.9 Выравнивание износа. Выравнивание износа является неотъемлемой частью функциональности пула стирания SD-карты с использованием памяти NAND». Вы можете прочитать все это в таблице данных для фирменной карты SanDisk .


1
Банни Хуан определенно заслуживает доверия для меня!
Викачу

Это приятно знать, но я буду ждать кого-то, кто сможет прояснить этот вопрос на основе формальной спецификации этой технологии.
ivarec

2
Digikey показал мне эту бесполезную брошюру SanDisk, когда я попытался найти таблицу данных. В Wintec и Swissbit радиокомпоненты были лучше, и как отмечалось выравнивание износа. Можете ли вы дать ссылку на эту таблицу данных, размещенную на Digikey?
Кевин Вермеер

Это намного лучше, чем старый SanDisk.
Joeforker

Wintec не был отличным, но новый SanDisk - лучший из всех! Спасибо за редактирование.
Кевин Вермеер

19

Да, карты SD / MMC имеют контроллеры, которые выполняют выравнивание. Если они этого не сделали, вы могли бы уничтожить один в считанные минуты с неправильными образцами записи.

Это на самом деле проблема для некоторых встроенных проектов. Совершенно невозможно (очевидно) узнать, какие сектора могут быть выровнены в любой момент, поэтому цикл питания в неподходящее время может уничтожить данные в любом месте карты, где бы вы ни думали, что пишете. (не спрашивайте, откуда я знаю :))

SD-карты должны использоваться с системой, которая гарантирует чистое отключение системы (или, по крайней мере, запись разрешена), иначе может произойти потеря данных.

РЕДАКТИРОВАТЬ

Проблема в том, что процесс выравнивания износа полностью скрыт. ЛЮБОЙ сектор на диске может быть перемещен в любое время (поменялся местами с записанной страницей), и в случае сбоя питания в середине этого процесса случайный сектор может быть поврежден.

Хотя есть достаточно безопасные способы для реализации этого шага, это не в какой-либо спецификации, поэтому вы не можете поверить, что карта сделает это. Вы можете протестировать одну карту, заставить ее работать, тогда производитель может изменить реализацию, не меняя номер детали, и вы облажались.

После тестирования контроллер моей SD-карты НЕ делает это безопасным способом.

Я могу посмотреть на SD-карту «высокой надежности», которую я рекламировал специально для обеспечения устойчивости к сбоям питания ... но тогда вы должны доверять производителю, чтобы сделать это правильно, а я нет. Я действительно хочу прямой контроль над стиранием страниц. Я все еще пытаюсь понять это.


4
Смотрите мой опубликованный ответ. Так как алгоритмы выравнивания износа находятся на усмотрении производителя, они могут не соответствовать требованиям. Хороший алгоритм выравнивания износа сначала переместит данные, затем пометит эти данные как хорошие, а затем соберет исходные данные. Это может быть проблемой для некоторых карт, а может и для других. SD - очень уродливый дизайн, когда вы дошли до сути.
Крис Баннсен,

2
Да, для меня это дерьмовый стандарт. Очень досадно, что такой вездесущий стандарт хранения памяти был бы настолько ненадежным по своей природе.
Даррон

2
@jpc: Может тогда я сделаю запись в блоге. У меня такое впечатление, что это не часто рассматривается. Я не осознавал последствий, пока не стало слишком поздно. Я боролся с этим, говорил с моим производителем SD-карты и т. Д. Нет другого решения, кроме как минимизировать время записи. Теперь я пишу на NAND flash и копирую на SD раз в день так быстро, как только могу. Есть SD-карты, разработанные, чтобы быть «устойчивыми» к случайным сбоям питания, но я не уверен, что даже они полностью заслуживают доверия.
Даррон

2
@fred basset Как ни странно, технические характеристики промышленных карт изменились с момента написания этого ответа. Я был видеть карты MicroSD с гарантией на записи (журнал, я думаю) ... теперь, они не делают такого требования. Говоря с производителем, они сейчас используют суперкапы ... но только компактные флеш-карты имеют для них место. Безопасные действия слишком сильно снижают производительность. Они говорят, чтобы просто каким-то образом обеспечить достаточное резервное питание для завершения записи. Учитывая, насколько сложны современные ARM SBC ... это действительно трудно сделать, если эталонный дизайн поставщика не делает этого. Никто из тех, кого я знаю, не делал.
Даррон

2
@freq basset Я использую UBI & UBIFS. Кажется, это работает хорошо ... У меня было много систем, запущенных в течение многих лет без проблем.
Даррон

12

Любой тип SD-карты, использующий любой тип обычной флэш-памяти NAND, должен будет использовать некоторый тип виртуализации секторов, поскольку ни одно обычное флэш-устройство NAND не может поддерживать стирание отдельных 512-байтовых секторов, и ни одно обычное флэш-устройство NAND значительного размера был бы в состоянии привести к производительности, которая была в пределах порядка даже незначительно приемлемой, если бы каждая попытка записи сектора требовала, чтобы устройство скопировало все сектора в блоке стирания этого сектора (даже в ОЗУ), затем стерло блок и записало все сектора назад. Большинство методов виртуализации секторов по своей природе несколько выравнивают износ. Я ожидал бы, что самой большой проблемой различия между качественными устройствами и подделками будет степень, в которой устройство активно пытается выровнять выравнивание между блоками, по сравнению с простым использованием псевдослучайного распределения блоков и надеждой, что это даст приемлемо близкие к однородным результаты. На практике я ожидал бы, что даже случайное распределение / надежда на лучшее было бы адекватным в большинстве случаев.


Вполне возможно, что «выравнивание износа», которое внедряют некоторые производители, вызвано самим интерфейсом NAND и блокированием сектора / сектора для блокировки виртуализаций.
Крис Бансен,

1
@KrisBahnsen: Я ожидаю, что производители, которые заявляют о выравнивании износа, будут активно отслеживать относительный износ различных блоков и возраст данных в них, и если обнаружится, что блоки с долгоживущими данными находятся в блоках с гораздо меньшим износом, чем в среднем, данные из этих блоков будут перемещены в блоки с большим износом (чтобы, скорее всего, минимизировать будущий износ этих блоков). Это может увеличить в 10 раз срок полезного использования устройства, которое на 95% заполнено данными, которые никогда не меняются, в то время как оставшиеся 5% пространства часто занимаются.
суперкат

Я согласен, если бы они рекламировали это, я думаю, что они сделали бы какое-то реальное выравнивание износа. Я немного негативен по поводу всей темы, за которую я прошу прощения; Меня несколько раз укусили причуды СД.
Крис Бансен,

1
@KrisBahnsen: Самая большая проблема, я думаю, - это модель виртуализации, которая предполагает линейный набор последовательно пронумерованных секторов по 512 байт. Возможно, было бы удобно взаимодействовать с DOS, но он не очень хорошо подходит ни для существующего оборудования, ни для того, чего действительно хочет программное обеспечение хоста. Откройте номера блоков до 64 битов и дайте им быть произвольно непоследовательными, а затем организуйте, чтобы файлы всегда сохранялись в логически последовательных блоках. Чтобы удалить файл, удалите его диапазон блоков.
суперкат

2
Это, возможно, лучший ответ. Я подозреваю, что так все это делают. Если вы подумаете об этом, нет никакого способа выполнить детерминированное выравнивание износа с помощью какого-либо действительно сложного алгоритма, потому что сама история износа должна быть сохранена где-то на той же карте, и эта часть потерпит неудачу в первую очередь. Рандомизированное выравнивание является единственной практической возможностью. Я не уверен, что SSD более умны. Они могут просто иметь больше запасных буферов, хотя вполне возможно, что они хранят очень грубую (и, следовательно, редко обновляемую) информацию об износе.
Нимрод

7

У Sandisk есть белая бумага, которая объясняет логику выравнивания износа в их карточках, и продолжает давать оценки срока службы карточки в ряде сценариев. Краткое содержание: если вы не бьете карту без остановки, это продлится десятилетия.


Ссылка мертва, и контент, кажется, был удален - возможно, из-за слишком большого количества информации?
Cuadue

6
@Cuadue Ссылка доступна. На всякий случай, если он сломается, страница архивируется сейчас по адресу web.archive.org/web/20150326122100/http://ugweb.cs.ualberta.ca/…
Лекенстейн,

2

Интересно отметить, что, несмотря на это, многие устройства портят карты памяти SD и microSD, особенно карты высокой плотности, если батарея разряжена или телефон выходит из строя / выключается / и т.д. Я подозреваю, что проблема заключается в неадекватном регулировании подачи напряжения, так как это хорошо известно на некоторых картах (кашель Ad t / кашель), что приводит к явлению нечитаемой карты на некоторых внешних считывателях, но отлично работает на микро-разнообразии, предоставляемой некоторыми компьютерные магазины.

Сейчас я нахожусь в процессе восстановления карты с этой ошибкой, как ни странно, большинство данных можно восстановить, но некоторые секторы нет, хотя это меняется при каждой попытке. Может ли быть виновата сама нивелировка износа? (да перепробовал несколько читателей, одна и та же вина!)


0

Также были успешные «ядерные» карты зомби, то есть те, которые не завершают формат или доступны только для чтения. Работает только на небольшой процент, но они гораздо более чувствительны, чем большинство «официальных» руководств к действию.

Тестовая карта, обработанная таким образом, продолжалась целых четыре месяца, а затем снова выходила из строя, если бы не устройство, которое использовалось для подачи шумового напряжения, срок службы мог бы быть больше.


1
Под «бомбардировкой» вы подразумеваете помещение в микроволновку? При какой мощности и как долго?
0x6d64

Э-э, нет :-) Кроме того, зачем это делать, когда тлеющий разряд (РЧ) будет иметь такой же эффект и будет намного менее опасным, чем метод, который я использовал? Оказывается, что карты USB намного более чувствительны из-за отсутствия металлического корпуса на одной стороне.
Conundrum5642Z

Я не могу подтвердить или опровергнуть, что ядерное оружие относится к использованию «гаджета» 5642 + HVPS по юридическим причинам. Однако, это работало неоднократно, и техника теперь известна, поскольку я опубликовал это на HaD и т. Д.
Conundrum
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.