Расширенный поиск  

Новости:

Автор Тема: Почему нельзя заполнять карту памяти "под завязку"  (Прочитано 5060 раз)

0 Пользователей и 1 Гость просматривают эту тему.

SM

  • Administrator
  • Легенда
  • *****
  • Спасибо: 2 раз(а)
  • Оффлайн Оффлайн
  • Сообщений: 2.019
  • ОЗТ: 109077
  • г. Томск

Никогда не заполняйте карту памяти полностью, «под завязку». Это сказывается на ней пагубно. Или сразу читаться перестанет, или потеряете часть записанной информации. Причём, во втором случае вы это можете не сразу обнаружить – один из файлов запортится. Выявится это только при обращении к нему. В любом случае, необходимо оставлять процентов десять от общей ёмкости незаполненными. В случае применения карточки в автонавигаторе, ещё больше. На это есть, как минимум, две причины. Постараюсь объяснить их последовательно.

1  Flash накопитель общего применения

Для понимания сути проблемы придётся слегка окунуться в историю.

В основе любого flash накопителя (CD, SD, MMC, SSD) лежит микросхема (или несколько) в которую непосредственно записывается (считывается) информация. С внешним миром она соединена при помощи встроенного в устройство контроллера.

Своё родство flash технология ведёт от ультрафиолето-стираемых кристаллов. Старожилы ещё помнят КР573РФ2. Такой здоровенный кирпич из белой керамики, с позолоченными ногами и слюдяной линзой на «крыше».

Элементарной ячейкой памяти (битом) в ней служил полевой транзистор с плавающим затвором. Затвор играл роль одной обкладки конденсатора, а транзистор - другой. При разряженном конденсаторе транзистор открыт, при заряженном - закрыт. Таким образом, в ячейку можно было записать ноль или единицу. Время саморазряда этого конденсатора определяло длительность хранения информации в кристалле.

Дабы минимизировать токи утечки в ячейке, затвор сделали полностью изолированным. Без каких либо внешних связей. Это позволило увеличить время саморазряда (хранения) до нескольких лет. А разряжать затвор предлагалось при помощи ионизирующего излучения – ультрафиолета. Ставили микросхему под лампу минут на 10 – 20 (помните про окошко на «крыше») и всё записанное в неё ранее стиралось. Во всех байтах прочитывались FF. Запись новой информации происходила при помощи встроенного автомата насыщением зарядом ячеек с нулями.

Таким образом – кристалл стирался весь целиком, а записывался побайтно.

Время шло, схемотехника кристаллов развивалась. Ультрафиолето-стираемые микросхемы дали две линии потомства. Обе из них по-своему замечательные. Но долгое время не признававшие родства между собой. Одна ветвь – EEPROM – электрически перепрограммируемая память. Другая – Flash.
Кстати, надо заметить, сейчас наметилась тенденция смыкания этих ветвей.

Сейчас нас интересует только ветвь Flash. Про EEPROM как ни будь в другой раз :)
От своего прародителя flash технология первого поколения унаследовала ячейку на основе транзистора с плавающим затвором. Конструктора додумались, как с помощью электрического импульса разряжать затворы, не прибегая к ультрафиолету. Отсюда, кстати, и само название flash – вспышка. Но, в наследство перешло и большинство ограничений. Кристалл по-прежнему можно было стирать только весь сразу целиком.

Следующим шагом в развитии явилось разделение всего массива памяти на сектора, каждый из которых был снабжён своим автоматом стирания. Теперь стало возможным «дозаписывать» байты. Этот механизм применяется до сих пор. Именно с ним связано то, что любая flash читается быстро, а записывается медленно. Ведь для записи одного байта надо произвести целый ряд последовательных операций:
-  считать сектор в кэш;
-  заменить в кэше байт;
-  стереть сектор;
-  записать сектор обновлённым кэшем.

Но не всё так грустно! Большое количество независимых автоматов стирания позволило распараллелить процессы - пока один сектор стирается, другой читается, третий пишется, а четвёртый готовится к записи.

Тут следует сказать про один существенный недостаток присущий всем транзисторам с плавающим затвором – при каждом цикле стирания / записи в нём происходят необратимые изменения. Причины этого объяснять не стану. Это потребует ещё несколько страниц текста. Просто поверьте на слово – из-за этого явления любой flash кристалл имеет ограниченное допустимое количество операций перезаписи.

Первые варианты микросхем имели могучие затворы с большой площадью. Насыщать их приходилось мучительно долго. Зато и гарантированное количество циклов перезаписи для них было 1 000 000 (миллион раз). Но, на одном кристалле их помещалось до обидного мало. Intel выпускала микросхемы на 64 – 256 килобит.

Нужны были большие ёмкости. Путь только один – утаптывать, уменьшая площадь затвора. Появились кристаллы на 8 – 64 килобайт. Но, как сами понимаете, при этом количество циклов перезаписи существенно уменьшилось. Типичным являлся показатель 100 000 циклов.

И этого оказалось мало. Подзатворную ёмкость ещё раз уменьшили на порядок. Теперь на кристалл стало входить до 512 килобайт. А количество перезаписей упало до 10 000. Это на самом деле очень мало. Представьте, например, Навител пишет трек по точке каждую секунду. 10 000 секунд это всего чуть более трёх часов работы. И за это время флэшка должна загнуться окончательно? Но, мы ведь знаем, это не так. Живёт себе годами.

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

Кстати, наличие контроллера динамического перераспределения адресов, делает бессмысленной операцию дефрагментации для flash накопителей. Запустив дефрагментатор, вы увидите как он честно примется за свою работу. На экране начнут перемещаться плосочки, файлики собираться воедино, к началу свободного поля. Но это всё фикция! Дефрагментатор думает, что работает с физическими секторами, а, на самом деле, контроллер подсовывает ему всего лишь виртуальные их отображения. И как бы дефрагментатор не старался собрать всё в кучу, реальное распределение байтов по площади кристалла flash останется прежним (равномерным).

Но надо понимать – для работы контроллера виртуальной адресации необходим некоторый объём свободной незанятой памяти для кэширования и размещения таблицы перекрёстных ссылок. Своей у него нет, и он использует «общую». Поэтому всегда должен оставаться некоторый запас незанятого пространства.

А что произойдёт если записать в карточку файл байт-в-байт совпадающий с её объёмом? Контроллер всё равно будет размещать свои таблицы. А, поскольку, приоритет у него выше, то он залезет на любое понравившееся ему место. Хорошо, если просто на какой ни будь файл. Вы его (файл) просто потеряете. Хуже, если на пространство служебных регистров. Которые, кстати, находятся там же, в общем массиве. В этом случае произойдёт общий сбой и карточка перестанет читаться.

Проявляется это самым разнообразным образом. В большинстве случаев, карточка тихо умирает, превращаясь в просто кусок пластмассы. Но, мне приходилось сталкиваться со случаями, когда после сбоя системных регистров карточка заражалась манией величия и начинала утверждать, что её емкость, аж 420 Гигабайт! Естественно, общаться ни с кем после этого не хотела.

Поскольку, как уже упоминал, любые flash накопители построены на одних и тех же микросхемах, то эти рассуждения касаются их всех. Справедливости ради надо заметить – в разной степени. Если в дополнительном контроллере USB Flash заложен алгоритм отслеживания таких критических ситуаций, то загнать его в состояние накаута гораздо сложнее. В SD карточках защита реализована не полностью. Срабатывает не всегда. А, вот, в MMS карточках её вообще нет. Поэтому они самые ненадёжные в ряду хранителей наших данных.


2  Flash карточка в автонавигаторе

Теперь, как и обещал, остановлюсь на применении flash карточки в автонавигаторах. По большому счёту, PNA отличаются от PDA только отсутствием внутренней энергонезависимой памяти. Она им ни к чему. Эта специфика заставляет хранить все изменяемые служебные файлы навигационной программы на внешнем диске. В качестве внешнего диска в PNA выступает flash карточка. Туда же записываются и пользовательские данные – треки, путевые точки, маршруты.

Раз эти файлы могут изменяться независимо от вашего участия и не спрашивая у вас разрешения, значит, они запросто могут заполнить всё оставшееся пространство на карточке. И вы, закономерно, попадаете в пункт 1 моего описания.

Следовательно, на карте, применяемой в автонавигаторе, необходимо оставлять свободным гораздо больше места. Я бы посоветовал не менее одной трети от общего объёма.

Успехов вам всем, и да пребудут сохранными ваши данные! :)
« Последнее редактирование: Август 08, 2009, 12:12:00 от SM »
Записан
Ericsson T10s -> Nokia 3310 -> Siemens A52 -> Siemens M55 -> Siemens M65 -> Nokia 6630 -> Nokia N73 -> Samsung Galaxy SII -> Samsung Galaxy Note II
Автомобильная навигация: HP iPAQ hx4700 -> Mitac Mio C725
 
 

Страница сгенерирована за 0.025 секунд. Запросов: 21.