Я понимаю, что внутренние используемые механизмы в карточке могут значительно увеличить время жизни карточки. Но мне нужно понять на что минимально рассчитывать, как это оценить.
Вопрос №1
как можно посчитать степень износа, если предположить что :
размер стираемого блока-128К
размер используемого диска- 16GB, то есть 125К блоков
время жизни блока - 1000 стираний
Тогда в худшем случае (на каждое обновление переносится целый блок):
количество обновлений = 125К блоков * 1000 стираний = 125M = 125e6
при количестве обновлений 1 в секунду: получаем время жизни карточки 125e6 секунд, это 1446 дней.
Это правильная оценка?
-------------------------------------------
Вопрос: №2
Что именно я должен считать обновлением, чтобы определить насколько сильно я изнашиваю эту карту?
Ведь нельзя считать таким обновлением просто добавление информации на то место сектора/страницы/блока, которое до этого было 0xFF ?
Я считаю, что обновление- это изменение, которое требует стирания блока. Я прав?
(Хороший пример такого обновления- это запись в FAT при изменении файла)
-------------------------------------------
Вопрос №3:
А как контроллер Флеш поймет, что данные в хвосте блока это мусор, а не данные, которые нужно переносить? Видимо, никак. И тогда получается, что на каждую запись сектора карточка будет тащить целый новый блок?
Как этого можно избежать? Почистить неиспользуемые сектора в FF? Дать команду стирания чего-нибудь там?
Есть какой-то способ помочь карточке, иначе ведь совсем катастрофа с ресурсом?
У меня, кстати, получается именно эта проблема: я писал по 40 секторов в секунду. Если предположить что контроллер карточки каждый раз занимался переносом блоков, то получаю ресурс 36 дней, что очень похоже на мой случай (у меня вышло немного больше, но может и ресурс блока немного больше чем 1К стираний).
-------------------------------------------
Вопрос №4:
Кэширование и запись на карточку большими кусками, скажем, 128К, поможет?
Upd: поиск помог найти вот это, буду копать туда:
Цитата
Alex11, Jul 14 2014, 22:27
Мы довольно много экспериментировали с SD в разных режимах. Во-первых, там есть команда мультисекторной записи. При этом небольшая пауза возникает только после записи многих секторов (но не факт, что после всех, запрошенных в команде). Кроме того, особенно при работе с не свежеформатированной карточкой, у нее возникают паузы до 0.5 сек на внутренние нужды - стирание блоков и переписывание частично заполненных. Реально помогает только запись блоками по 64 - 128 кБ в зависимости от карты.