Разным файловым системам требуется разное количество оперативной памяти в системе, которая их использует. Система, которая должна записать файл в файловую систему FAT, теоретически может обойтись с одним 512-байтовым буфером, хотя производительность будет довольно ужасной. Расширение до двух или трех 512-байтовых буферов значительно улучшит ситуацию. Выход за рамки этого несколько улучшил бы ситуацию, и получение оптимальной производительности от карты большего размера потребовало бы большего объема памяти, чем получение оптимальной производительности от карты меньшего размера, но камера, которая включала только достаточное количество буферов для достижения оптимальной эффективности с картами меньшего размера, все еще могла бы работать с большими, хотя и менее эффективно.
Более сложная проблема заключается в том, что стандарты карт памяти указывают, что каждая карта ведет себя как пронумерованный набор из 512-байтового сектора, который может быть прочитан и записан независимо в произвольной последовательности, но это не то, как данные хранятся в фишки внутри карт. Микросхемы памяти, используемые на обычной карте памяти, делятся на 528-байтовые страницы; те, в свою очередь, сгруппированы в блоки по 256 или более. Как только страница написана, она не может быть переписана без стирания ее и всех других страниц в ее блоке. Теоретически SD-карта могла бы выполнить запрос на запись 512-байтового сектора, скопировав в RAM все данные в своем блоке, стерев блок и записав весь блок обратно, но с новыми данными в одном секторе. , На практике производительность была бы ужасной. Вместо этого, запись сектора приведет к тому, что SD-карта выберет пустую страницу, запишет туда данные вместе с номером сектора и различной вспомогательной информацией (страницы с причинами 528 байт, а не 512) и каким-то образом отследит, что это правильная место для данных. Когда пустых страниц становится мало, контроллер идентифицирует блок, чьи страницы были в основном заменены страницами, написанными более недавно, копирует все еще текущие страницы из этого блока в пустые блоки, а затем стирает весь теперь избыточный блок , Вся эта логика полностью обрабатывается самой картой, без какого-либо вмешательства камеры.
Вся эта логика означает, что в дополнение к FAT32 или другой файловой системе, видимой камерой, SD-карта должна иметь свою собственную систему распределения и управления блоками. Любые проблемы, которые возникают в этой системе, могут привести к потере данных, независимо от того, какая система находится поверх нее. Теоретически, многие карты памяти предназначены для обеспечения того, чтобы даже в случае неожиданного отключения питания во время какой-либо операции карта могла либо откатить состояние карты до того состояния, которое было до начала операции, либо запустить ее до завершения если все необходимые данные были записаны, а карта просто удаляла лишние данные). К сожалению, карты отличаются тем, насколько хорошо они реализуют такую логику. Если неожиданная потеря мощности приводит к засорению таблиц управления хранением карты, программное обеспечение, которое понимает внутреннюю работу таких таблиц, может восстановить данные, которые невидимы для любого программного обеспечения, которое просто использует основанный на секторах интерфейс чтения-записи.
Лично я думаю, что для Консорциума SD было бы лучше указать файловую систему, независимую от FAT32, или, как минимум, указать, что даже если карта должна быть читаемой как том FAT32, она должна быть записана с использованием файла протокол связи. Карта, которая знает, какие группы секторов являются членами каждого файла, могла бы оптимизировать свои процедуры дефрагментации вокруг этого, а также могла бы лучше защищать от потери данных, чем карта, которая должна была представлять диск как набор независимых 512-байтовых байтов. секторы, но, к лучшему или к худшему, дело обстоит иначе.