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