200 likes | 387 Views
AXFS Advanced XIP Filing System Jared Hulbert Numonyx April 15, 2008. Agenda. Goal/History Features Architecture Test Results Kernel Integration. Project Goals. Supportable solution for application XIP Fine grained control on compression Flexible use of all system memories
E N D
AXFS Advanced XIP Filing System Jared Hulbert Numonyx April 15, 2008
Agenda • Goal/History • Features • Architecture • Test Results • Kernel Integration
Project Goals • Supportable solution for application XIP • Fine grained control on compression • Flexible use of all system memories • NOR, NAND, RAM
What is Application XIP? • eXecute In Place of userspace code • Run code from where it is stored on Flash • Saves memory • No paging = higher performance • “I thought the kernel supported XIP?” • Yes, for ext2 with specialized hardware • Yes, for kernel code segments (xipImage)
Why a New Filesystem? • CRAMFS XIP patches used to work BUT... • ~9 years old and haven’t been merged??? • patches broke, real bad, every year • File level compression choice • SquashFS? New, better compression BUT… • Block device oriented architecture • Didn’t see how to fit new concepts into arch
Superblock Points to many region descriptor Region Descriptor Describes / points to one region Regions Each data type / table has own region permissions, file names, file node info, file data, etc. Onmedia Format Super Block Region Descriptor Region Descriptor Region Descriptor File Info XIP Region Compressed Region
XIP Region Index 0 Index 1 Index 2 Uncompressed cblock Index 0 Index 1 Index 2 Index 3 cblock Offset Table Compressed Region cnode Offset Table Index 3 Index 1 Data Flow inode Node Index Node Type Table XIP Compressed Application Virtual Pages
Mount Options mount –t axfs –o block_dev=/dev/mtd1 /dev/mtd0 /mnt/axfs /dev/mtd0 (NOR) /dev/mtd0 (NOR) ~/file.axfs (-o loop) /dev/sda0 /dev/mtd0 (NAND) AXFS Image AXFS Image Part 1 (MMAP) AXFS Image AXFS Image AXFS Image /dev/mtd1 (NAND) AXFS Image Part 2 (IO)
Image Size Comparison ~1 year old Opie build from OpenEmbedded
PXA270 Linux-2.6.22 Opie build 520 MHz (CPU) 208 MHz (memory clock) 104 MHz (SDRAM bus) 52 MHz (NOR flash bus) xipImage CONFIG_PREEMPT=y MTD updated to Sept 25 git pull “mem=24MB” in kernel commandline OpenEmbedded ~1 year old Performance: direct comparison
Performance: Direct Comparison Root Filing System Comparison Video at: http://www.youtube.com/watch?v=fu6Yj7iKEiA
Performance: realistic comparison • Started with commercial phone • PXA270, 48MB RAM, 32MB NOR, 96MB NAND • 297 MHz (CPU) / 97 MHz (SDRAM bus) /48 MHz (NOR flash bus) • code in CRAMFS from NOR • data in NAND • “XIP” • code in AXFS from NOR • data in NAND • “SnD” • code in CRAMFS from NAND • data on NAND
Performance: realistic comparison XIP vs. SND: Realistic Performance Comparison Video at: http://www.youtube.com/watch?v=HUqFrA4FYd0
Kernel Integration Status • Patches • VM_MIXEDMAP / pageless XIP patchset • just got in –mm tree • 2.6.26? • Physaddr in mtd->point() • Waiting on dwmw2 • Todo Features • Added compression options (LZO, LZMA, etc) • brd RAM disk support
Resources • Git tree git://git.infradead.org/home/jehulber/axfs.git • Sourceforge site http://axfs.sf.net