ZIO - The Ultimate I/O Framework Federico Vaga - - PowerPoint PPT Presentation

zio the ultimate i o framework
SMART_READER_LITE
LIVE PREVIEW

ZIO - The Ultimate I/O Framework Federico Vaga - - PowerPoint PPT Presentation

ZIO - The Ultimate I/O Framework Federico Vaga (federico.vaga@gmail.com), Alessandro Rubini (rubini@gnudd.com) 2013-02-02 Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com) What is ZIO? ZIO is an I/O framework for


slide-1
SLIDE 1

ZIO - The Ultimate I/O Framework

Federico Vaga (federico.vaga@gmail.com), Alessandro Rubini (rubini@gnudd.com) 2013-02-02

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-2
SLIDE 2

What is ZIO? ZIO is an I/O framework for Linux. Its main targets are: big laboratories industrial applications high performance boards multi-function boards (Input/Output Analog/Digital)

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-3
SLIDE 3

Example Board: [CERN] FMC ADC http://www.ohwr.org/projects/fmc-adc-100m14b4cha 100 MSPS 14bit 4 channels

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-4
SLIDE 4

Example Board: [CERN] FMC FINE DELAY http://www.ohwr.org/projects/fmc-delay-1ns-8cha TDC Resolution: 28ps Precision (std. dev): 55ps Delay Resolution: 10ps Precision: 100ps

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-5
SLIDE 5

Features Both input and output Sharp timestamps (better than 1ns) Large number of peripherals (bus) Small overhead (currently 0.35us) Large data items per trigger shot Fully described data (allows off-line work) Easy device configuration (sysfs) Mmap support for applications Hot-swapping for both trigger and buffer Supporting kernel v2.6.24 onwards Well documented

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-6
SLIDE 6

The Block All data transfers are block-based the block fully describes an acquisition it contains both data and metadata (control)

bl C D bl C D

The block is overall blue

Control Cyan Data Darker

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-7
SLIDE 7

The Control

V v A a sequence nsamples ssize nbits fam type host-identification device-id cset chan device name tstamp: secs tstamp: ticks tstamp: bins mem-addr reserved flags trigger name TLV record for optional extra information This area hosts attributes for the device and for the currently active trigger. Device and trigger are each characterized by 16 "standard" attrs and 32 "extended" attrs. A bit-mask states which attrs are active. Each attribute is a 32-bit word

0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x1F0

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-8
SLIDE 8

All Characters in ZIO

L F S B T P

Luser Lemon Fops Forest Socket Salmon Buffer Brown Trigger Tomato Periph. Purple

N

Network Neutral

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-9
SLIDE 9

Modules Peripheral: it handles physical data transfers Buffer: it stores blocks Trigger: it starts/stops acquisition

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-10
SLIDE 10

The Char Device Pipeline

L F B T P

write store_block push_block raw_io data_done retr_block read retr_block pull_block raw_io data_done store_block

alloc_block free_block alloc_block free_block

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-11
SLIDE 11

Demo Time

DEMO

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-12
SLIDE 12

Next Features Double Buffering

streaming no driver changes

Monitoring

sniffing support for external application no interference with actual I/O

Socket Interface

a single fd controls several channels remote devices, local drivers

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)

slide-13
SLIDE 13

Links http://www.ohwr.org/projects/zio git://ohwr.org/misc/zio.git http://www.ohwr.org/[...]/zio-manual-130121-v1.0.pdf

Federico Vaga (federico.vaga@gmail.com),Alessandro Rubini (rubini@gnudd.com)