OpenWiki

Palm NVFS

Edit this page (last edited March 29, 2005)
Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
  • Введение
  • Как было раньше?
  • Новая флеш-память
  • Как организована память в TT5 и Treo 650 ?
  • Как соотносятся различные области памяти?
  • Как действует кэш?
  • Известные минусы NVFS
  • Жизнь после смерти или что происходит после нажатия на кнопку питания?
  • Формат хранилища (тех.)
  • Почему так криво? (тех.)
  • Введение

    Новые устройства от Pa1mOne предложили новую концепцию использования памяти. Популярные статьи на новостных сайтах породили целую мифологию вокруг новых устройств. Настоящая статья пытается объяснить как TT5 и Treo 650 в действительности используют память.

    Как было раньше?

    Напомню организацию памяти на остальных устройствах с Palm OS.

    Вся память находится в адресном пространстве и делится на две области: динамическая куча и хранилище. В хранилище хранятся базы. Базы состоят из отдельных записей, каждая из которых хранится в отдельном блоке памяти. Динамическая куча используется для рабоих данных запущенной программы. Программы тоже хранятся как базы. Принцип организации программы позволяет не копировать исполняемый код в динамическую кучу, а исполнять его из записи в базе. Такое исполнение называется XIP, eXecution in place, стоит учесть что у термина есть и другое значение.

    Для программиста работа с записью и временным блоком памяти совершенно аналогична, это позволяет считывать данные непосредственно из записи.

    Такая организация очень экономна и позволяет использовать минимум памяти. Так, модель Clie NX-60 имеет 4Mb динамической кучи и 12Mb для хранилища.

    Эта память отличается от флеш-памяти на MMC / SD / CF / MS карточке, которая выглядит для устройства как диск с файловой системой FAT. Память на карточке несколько "чужеродна" для Palm OS, в частности программы на карте не могут выставлять алармы и вызывать свои кондуиты при хотсинке. Исполнить программу с карты невозможно, ее нужно предварительно скопировать в хранилище и только после этого запустить.

    Новая флеш-память

    Даже сейчас оперативная память дорога и требует сравнительно много энергии. Современные технологии предлагают дешевую альтернативу в виде NAND флеш-памяти. Эта память аналогична используемым в картах памяти, но в отличии от них встаивается напрямую в устройство и может использовать более быструю шину для обмена данными. NAND-память сохраняет свое состояние после отключения питания и стоит значительно дешевле.

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

    Второе ограничение - невозможность изменения одного байта. Области могут быть перезаписаны блоками по 512 байт. (На самом деле все запутаннее - можно изменять битики с 1 на 0, но не больше 10 раз на блок. Маловероятно, что изменения данных будут именно такими).

    Как организована память в TT5 и Treo 650 ?

    В новых моделях есть оба вида памяти - и динамическая (DRAM) и NAND-флеш.

    NAND-флеш делится на

    Оперативная память резделяется на

    Как соотносятся различные области памяти?

    То что раньше называлось ROM, в котором хранилась Palm OS и встроенные программы, теперь хранится во флеше. Образ ROM распаковывается из флеша при ресетах и копируется в свою область в памяти. Именно это и обуславливает долгое время загрузки новых устройств.

    Хранилище баз теперь хранится во флеше. Но поскольку к нему нельзя доступиться то запрашиваемые записи баз копируется в кэш и предоставляются программам для чтения и модификации. При закрытии базы и при выключении устройства модифицированные записи записываются обратно во флеш.

    Файловое пространство представляет из себя обычный RAM-диск и не отличается от SD-карты по способу работы.

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

    Организация хранилища в NAND-флеше называется NVFS (Non-volatile File System).

    "Олдовые" пользователи пальм помнят, что во времена Palm OS 4 существовали RAM Expanders, такие как AutoCard?, PiDirect? и MsMount?. Эти программы эмулировали псевдо-файлы, содержимое которых находилось на карточке. NVFS является хаком над Palm OS, который точно так же эмулирует отсутствующие в оперативной памяти файлы.

    Как действует кэш?

    Рассмотрим работу классической программы MemoPad?. Перечислим операции с базами, выполняемые при работе

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

    Известные минусы NVFS

    Жизнь после смерти или что происходит после нажатия на кнопку питания?

    Вспомним классические пальмы. При нажатии на кнопку питания происходило следующее:

    Отключение питания приводило к потере данных из памяти, в том числе и из хранилища и вызывало hard reset.

    Новые устройства декларируют сохранность данных. Как показали опыты, TT5 в выключенном состоянии дольше держит заряд. Но это вовсе не означает, что устройству не нужно подпитывать DRAM. Почему?

    Потому что программы могут запускаться только из оперативной памяти. А что там у нас лежало перед выключением? Можем ли мы это стереть?

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

    Формат хранилища (тех.)

    В каком формате содержатся данные в хранилище? Хранилище - это еще один VFS диск с файловой системой FAT. В каталоге /PALM_DM хранятся базы, каждая в своем файле. В отличии от обычого VFS-диска файл - это не образ .prc файла, это структура, хранящая указатели на отдельные ресурсы и ресурсы, выровненные на 512-байтовую границу.

    Такая структура была выбрана для эффективной работы с ресурсами. При использовании стандартного "плоского" prc файла для увеличения ресурса в середине пришлось бы сдвигать все последующие записи в файле.

    Почему так криво? (тех.)

    Технические специалисты задают вопрос - а почему так "неграмотно" организовано хранение данных? почему не использовали существующие файловые системы для флеша: JFFS или YAFFS? На мой взгляд это обусловлено следующими факторами.

    Представим себе, что разработчики упаковали несколько записей в один блок. Чем это чревато?

    Скорее всего PalmOne частично реализует хранение нескольких записей в одном блоке, но только для редкоизменяющихся баз. Разработчик должен будет явно указывать режим сохранения новых записей.

    Palm Notes | Recent Changes | Title Index | User Preferences | Random Page | Help
    Edit this page | View other revisions
    Print this page | View XML
    Find page by browsing, searching or an index
    Edited March 29, 2005 (diff)
    Valid XHTML 1.0!Valid CSS!