Otellini Keynote Highlights
Document Sample


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
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
Features
Basic –Read-only
Attribute –64bit
–Designed with CE requirements in
s mind
Compressi –4KB-4GB compression block size
on –Page by page uncompression map for
XIP
Flexible –MTD (NAND/NOR)
Mount –block device
–split across XIP NOR and non-XIP
NAND
Tools –GPL mkfs.axfs
–Supported propriety image builder
available
Onmedia Format
Super Block Superblock
Region Descriptor – Points to many
region
Region Descriptor descriptor
Region Descriptor Region
Descriptor
File Info – Describes /
points to one
region
XIP Region
Regions
– Each data type
Compressed Region / table has
own region
– permissions,
Data inode
Flow Node Index Node Type Table
XIP Region
XIP Compressed
Index 0 cblock Offset Table
Index 1
Compressed Region
cnode Offset Table
Index 2
Uncompressed cblock
Index 0 Index 1 Index 2 Index 3
Application Virtual Pages
Index 1 Index 3
Mount Options
mount –t axfs –o block_dev=/dev/mtd1 /dev/mtd0 /mnt/axfs
/dev/sda0 ~/file.axfs /dev/mtd0 /dev/mtd0 /dev/mtd0
(-o loop) (NAND) (NOR) (NOR)
AXFS
Image
AXFS Part 1
AXFS AXFS AXFS
Image (MMAP)
Image Image Image
/dev/mtd1
(NAND)
AXFS
Image
Part 2
(IO)
Image Size Comparison
CRAMFS(XIP)
AXFS(XIP)
JFFS2
CRAMFS
Squashfs
AXFS
0 16 32 48
MB
~1 year old Opie build from OpenEmbedded
Total Memory Used
JFFS2
SquashFS
AXFS
0 32 64 96
MB Rootfs size RAM used
Fitting into Real Chips
JFFS2
SquashFS
AXFS
0 32 64 96
MB Rootfs size RAM used
Performance: direct
comparison
PXA270 – 520 MHz (CPU)
– 208 MHz (memory clock)
– 104 MHz (SDRAM bus)
– 52 MHz (NOR flash bus)
– xipImage
Linux-2.6.22 – CONFIG_PREEMPT=y
– MTD updated to Sept 25 git
pull
– “mem=24MB” in kernel
commandline
Opie build
– OpenEmbedded
– ~1 year old
Performance: Direct
Comparison
Root Filing System Comparison Video at:
http://www.youtube.com/watch?v=fu6Yj7iK
EiA
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
App launch time
200
175
150
125
Time (s)
100
75
50
25
0
AXFS JFFS2 CRAMFS SquashFS AXFS JFFS2 CRAMFS SquashFS
24MB of RAM 32MB of RAM
Shuttle Video Launch Time (s) PDF Reader Launch Time (s)
Webbrowser Launch Time (s) SDL Quake Launch Time (s)
Get documents about "