FPL FAST Tech Summit London January 20061 FAST Technical Crash course public CFASTSerdes() { } /// /// Gets the presence map for a tag. /// /// CODEC being.

Slides:



Advertisements
Similar presentations
TOPIC : MIME (Multipurpose Internet Mail Extensions ) By: Cecilia Gomes COSC 541,DATA COMMUNICATION SYSTEMS & NETWORKS Instructor: Prof. Anvari (SEU)
Advertisements

Lecture 4 Sending and Receiving Messages Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Geometry Compression Michael Deering, Sun Microsystems SIGGRAPH (1995) Presented by: Michael Chung.
SIMS-201 Compressing Information. 2  Overview Chapter 7: Compression Introduction Entropy Huffman coding Universal coding.
Huffman Encoding Dr. Bernard Chen Ph.D. University of Central Arkansas.
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Variable Length Coding  Information entropy  Huffman code vs. arithmetic.
Representations Example: Numbers –145 –CVL – –91 –
CSCI 3 Chapter 1.8 Data Compression. Chapter 1.8 Data Compression  For the purpose of storing or transferring data, it is often helpful to reduce the.
1 Lecture 2  Input-Process-Output  The Hello-world program  A Feet-to-inches program  Variables, expressions, assignments & initialization  printf()
Representing Information as Bit Patterns
Text Operations: Coding / Compression Methods. Text Compression Motivation –finding ways to represent the text in fewer bits –reducing costs associated.
1 Lecture 3 Bit Operations Floating Point – 32 bits or 64 bits 1.
Introduction to Computers and Programming. Some definitions Algorithm: –A procedure for solving a problem –A sequence of discrete steps that defines such.
Internet Networking Spring 2004
8 November Forms and JavaScript. Types of Inputs Radio Buttons (select one of a list) Checkbox (select as many as wanted) Text inputs (user types text)
CS-341 Dick Steflik Introduction. C++ General purpose programming language A superset of C (except for minor details) provides new flexible ways for defining.
Document and Query Forms Chapter 2. 2 Document & Query Forms Q 1. What is a document? A document is a stored data record in any form A document is a stored.
Transmission Characteristics 1. Introduction (Information Interchange codes) 2. Asynchronous and Synchronous Transmissions 3. Error detection (bit errors)
Data Representation Kieran Mathieson. Outline Digital constraints Data types Integer Real Character Boolean Memory address.
Sunday, June 28, 2015 Abdelali ZAHI : FALL 2003 : XML Schemas XML Schemas Presented By : Abdelali ZAHI Instructor : Dr H.Haddouti.
Expressions An expression is a sequence of operands and operators that reduces to a single value expression operator operand An operator is a language-specific.
2015/7/12VLC 2008 PART 1 Introduction on Video Coding StandardsVLC 2008 PART 1 Variable Length Coding  Information entropy  Huffman code vs. arithmetic.
Introduction to Computers and Programming. Some definitions Algorithm: Algorithm: A procedure for solving a problem A procedure for solving a problem.
CHAPTER 6 FILE PROCESSING. 2 Introduction  The most convenient way to process involving large data sets is to store them into a file for later processing.
1 CMSC 132: Object-Oriented Programming II Java Constructs Department of Computer Science University of Maryland, College Park.
15 September How Computers Work: Other Forms of Data.
Connecting with Computer Science 2 Objectives Learn why numbering systems are important to understand Refresh your knowledge of powers of numbers Learn.
CSE Lectures 22 – Huffman codes
Binary Representation and Computer Arithmetic
Data Communications and Networks
1 Part I: Machine Architecture 4 A major process in the development of a science is the construction of theories that are confirmed or rejected by experimentation.
STATISTIC & INFORMATION THEORY (CSNB134) MODULE 8 INTRODUCTION TO INFORMATION THEORY.
C Tokens Identifiers Keywords Constants Operators Special symbols.
Why does it matter how data is stored on a computer? Example: Perform each of the following calculations in your head. a = 4/3 b = a – 1 c = 3*b e = 1.
COMP 116: Introduction to Scientific Programming Lecture 28: Data types.
Floating Point. Agenda  History  Basic Terms  General representation of floating point  Constructing a simple floating point representation  Floating.
Latin America Electronic Trading Conference 2008 Sao Paolo, Brazilian Mercantile & Futures Exchanges The FAST Protocol SM Optimising the Communication.
 The amount of data we deal with is getting larger  Not only do larger files require more disk space, they take longer to transmit  Many times files.
10-Sep Fall 2001: copyright ©T. Pearce, D. Hutchinson, L. Marshall Sept Representing Information in Computers:  numbers: counting numbers,
Matlab Training Session 10: Loading Binary Data Course Website: Training Sessions.htm.
 JAVA Compilation and Interpretation  JAVA Platform Independence  Building First JAVA Program  Escapes Sequences  Display text with printf  Data.
DATA REPRESENTATION, DATA STRUCTURES AND DATA MANIPULATION TOPIC 4 CONTENT: 4.1. Number systems 4.2. Floating point binary 4.3. Normalization of floating.
Compression.  Compression ratio: how much is the size reduced?  Symmetric/asymmetric: time difference to compress, decompress?  Lossless; lossy: any.
1 Source Coding and Compression Dr.-Ing. Khaled Shawky Hassan Room: C3-222, ext: 1204, Lecture 5.
The LZ family LZ77 LZ78 LZR LZSS LZB LZH – used by zip and unzip
1 Classification of Compression Methods. 2 Data Compression  A means of reducing the size of blocks of data by removing  Unused material: e.g.) silence.
Huffman coding Content 1 Encoding and decoding messages Fixed-length coding Variable-length coding 2 Huffman coding.
ISBN Chapter 6 Data Types Introduction Primitive Data Types User-Defined Ordinal Types.
Huffman Codes Juan A. Rodriguez CS 326 5/13/2003.
Copyright © – Curt Hill Types What they do.
Slides created by: Professor Ian G. Harris Hello World #include main() { printf(“Hello, world.\n”); }  #include is a compiler directive to include (concatenate)
A Simple Java Program //This program prints Welcome to Java! public class Welcome { public static void main(String[] args) { public static void main(String[]
Main Index Contents 11 Main Index Contents Complete Binary Tree Example Complete Binary Tree Example Maximum and Minimum Heaps Example Maximum and Minimum.
Chapter2 Constants, Variables, and Data Types. 2.1 Introduction In this chapter, we will discuss –constants (integer, real, character, string, enum),symbolic.
Chapter 3 Data Representation. 2 Compressing Files.
Data Representation. How is data stored on a computer? Registers, main memory, etc. consists of grids of transistors Transistors are in one of two states,
Page 1KUT Graduate Course Data Compression Jun-Ki Min.
Fixed-point and floating-point numbers Ellen Spertus MCS 111 October 4, 2001.
10-1 JXTA Messages Learning Objectives ● This module will help you... – Develop applications and services which exchange messages either through.
PROTOCOL BASICS. 2 Introduction In chapter 3: Circuits and techniques can be employed to transmit a frame of information between 2 DTEs Error detection.
Selected Topics in CI I Genetic Programming Dr. Widodo Budiharto 2014.
Binary, Decimal and Hexadecimal Numbers
INTRODUCTION c is a general purpose language which is very closely associated with UNIX for which it was developed in Bell Laboratories. Most of the programs.
ELECTRONIC MAIL SECURITY
Student: Ying Hong Course: Database Security Instructor: Dr. Yang
ELECTRONIC MAIL SECURITY
Presenting information as bit patterns
Faculty of Cybernetics, Statistics and Economic Informatics –
Storing Integers and Fractions
ASN.1 Compiler for text-based protocols!
Presentation transcript:

FPL FAST Tech Summit London January FAST Technical Crash course public CFASTSerdes() { } /// /// Gets the presence map for a tag. /// /// CODEC being used for the serialisation /// Tag /// Presence map public override uint get_map(CCodec Codec, uint tag) { int pos = (int) (CCodec.get_tag_slot(tag) + Codec.Config.pmap_offset); Debug.Assert(pos <= CCodec.MAX_TAG); if (pos >= Codec.map_size) return 0; if ((Codec.map_data [pos / 7] & (0x40 >> pos % 7)) != 0) return 1; else return 0; }

How does FAST work? Technical Crash Course Kevin Houstoun Global Message Consultant HSBC Without code Co Chair Global FIX Technical Committee

FPL FAST Tech Summit London January Agenda FAST Vocabulary FAST Transfer Encoding Fields SBIT Details Messages FAST Field Encoding FAST Templates FAST Field Data Types An Example

FPL FAST Tech Summit London January FAST Protocol Characteristics Basic Feature Set Optimized for message streams Content aware (requires knowledge about message structure) Byte-oriented binary representation Variable-length fields Each message contains one or more fields A presence map enables efficient use of default values Several ways of deriving default values Empirically validated Very fast processing (encoding / decoding) High compression ratios on tested exchange feeds Simple implementation Extensible

FPL FAST Tech Summit London January FAST Protocol Layers

FPL FAST Tech Summit London January FAST Vocabulary (1) A data stream consists of a sequence of messages. A message consists of a sequence of one or more fields. A field consists of a sequence of one or more bytes. Wire format refers to the byte representation that is used to transfer data on the wire. Encoding is the process of translating to wire format. Decoding is the process of translating from wire format. A CODEC (enCOder/DECoder) provides support for encoding or decoding a stream of messages.

FPL FAST Tech Summit London January FAST Vocabulary (2) A byte consists of seven data bits and a stop bit (the ‘SBIT’) that when set indicates the byte is the last byte of a field. A presence map (‘PMAP’) is a field that is interpreted as a vector of bits, one bit (‘PBIT’) for each field in a message. A field operator enables previous values to be reused.

FPL FAST Tech Summit London January FAST Transfer Encoding – Fields 7 bits 14 bits 21 bits nn bits

FPL FAST Tech Summit London January FAST Transfer Encoding – SBIT Details SBIT coding provides space efficient delimitation of fields More compact than byte delimiter for fields shorter than 7 bytes Empirical data shows average FAST field sizes of ~2 bytes ~33% more compact than a byte delimiter at 2 bytes Serialization of SBIT format is simple and efficient There are exceptional cases when SBIT coding is suboptimal Byte vector can be used for these cases

FPL FAST Tech Summit London January FAST Transfer Encoding – Messages The tail of a pmap may be compressed The number of fields in a message depends on the pmap content A message may be as short as one byte (an empty pmap)

FPL FAST Tech Summit London January FAST Field Data Types Unsigned Integer Signed Integer Scaled Number ASCII String Bit Vector The FAST transport representation supports unlimited size fields. Implementations will likely limit the supported size to match the native data representation in applications.

FPL FAST Tech Summit London January Unsigned Integer Transfer Representation Value(hex)Seven Data Bits per Byte (bin)Len F FFF FFFFF FFFFFFF FFFFFFFF

FPL FAST Tech Summit London January Signed Integer Transfer Representation Value(hex)Seven Data Bits per Byte (bin)Len F FFF FFFFF FFFFFF FFFFFFF FFFFFFFF FFFFFFC FFFFE FFF F

FPL FAST Tech Summit London January Scaled Number Transfer Representation A scaled number is represented using an exponent and a mantissa number = mantissa * 10 ^ exponent The mantissa and exponent are represented as signed integers A base 10 exponent is used to provide exact decimal representation Examples MantissaExponentValue 0-1*10^0 = *10^-2 = *10^4 = 10000

FPL FAST Tech Summit London January A Transfer Encoding Example BeginStr SeqNum SenderID SendingTime Price Symbol 8=FIX.4.4|34=10000|49=CLIENT1|52= :06:58.100|44=1200|55=FOO1| 8=FIX.4.4|34=10001|49=CLIENT1|52= :06:58.200|44=1210|55=FOO1| 8=FIX.4.4|34=10002|49=CLIENT1|52= :06:58.300|44=1190|55=BAR2| Original size 71 bytes FIX.4.4|10000|CLIENT1| :06:58.100|1200|FOO1| FIX.4.4|10001|CLIENT1| :06:58.200|1210|FOO1| FIX.4.4|10002|CLIENT1| :06:58.300|1190|BAR2| FIX.4.4nnCLIENT :06:58.100nnFOO1 FIX.4.4nnCLIENT :06:58.200nnFOO1 FIX.4.4nnCLIENT :06:58.300nnBAR2 Implicit Tagging 54 bytes (-24%) SBIT Encoding 48 bytes (-33%) Binary Encoding 43 bytes (-39%) FIX CLIENT :06: FOO1 FIX CLIENT :06: FOO1 FIX CLIENT :06: BAR2

FPL FAST Tech Summit London January Field Operators Constant – Always the same value Increment – Frequently previous value incremented by one Copy – Frequently the same as the previous value Delta – Values differ slightly Default – Frequently a specific value

FPL FAST Tech Summit London January A Field Encoding Example BeginStr SeqNum SenderID SendingTime Price Symbol 8=FIX.4.4|34=10000|49=CLIENT1|52= :06:58.100|44=1200|55=FOO1| 8=FIX.4.4|34=10001|49=CLIENT1|52= :06:58.200|44=1210|55=FOO1| 8=FIX.4.4|34=10002|49=CLIENT1|52= :06:58.300|44=1190|55=BAR2| Original size 71 bytes 10000|CLIENT1| :06:58.100|1200|FOO1| 1|200|10|FOO1| 2|300|-20|BAR2| Field Encoding First message = 46 bytes (-35%) Subsequent messages = 14 bytes (-80%) Default Copy Or Constant Increment Delta x2

FPL FAST Tech Summit London January Compact Notation 8s!FIX.4.4|9u|35s!X|49s=|34u+1|268u Template Entry FIX Field NameField Encode Operation Data TypeDescription of Operation 8s!FIX4.4BeginStringDefault ValueStringDefault BeginString to the string value of “FIX4.4” 9uBodyLengthNoneUnsigned integerAlways explicitly specify the value of BodyLength 35s!XMessageTypeDefault ValuestringDefault MessageType to the string value of “X” 49s=SenderCompIDCopy CodeStringCopy SenderCompID from the prior occurrence 34u+1SequenceNumberIncrementUnsigned integerIncrement SequenceNumber by +1 from the prior occurrence 268uNoMDEntriesNoneUnsigned integerAlways explicitly specify the value of NoMDEntries 279u=MDUpdateActionCopy CodeUnsigned IntegerCopy MDUpdateAction from the prior occurrence 269s=MDEntryTypeCopyCodeStringCopy MDEntryType from the prior occurrence 55s=SymbolCopyCodeStringCopy Symbol from the prior occurrence 167s=SecurityTypeCopyCodeStringCopy SecurityType from the prior occurrence 270F-MDEntryPriceDelta ValueScaled NumberCalculate the difference from the prior occurrence of MDEntryPrice 271F-MDEntrySizeDelta ValueScaled NumberCalculate the difference from the prior occurrence of MDEntryPrice 346u-NumberOfOrdersDelta ValueUnsigned integerCalculate the difference from the prior occurrence of NumberOfOrders 276s=QuoteConditionCopyCodeStringCopy QuoteCondition from the prior occurrence 277s=TradeConditionCopyCodeStringCopy TradeCondition from the prior occurrence

FPL FAST Tech Summit London January Template Exchange Basic Methods for Template Exchange Out-of-band Basic text file that may be downloaded from a website or ed from the sender to receiver Side-band Templates are transmitted on a continual basis or in response to request Templates are best represented using clear text In-band Templates are transmitted as part of the primary data feed and the receiver must pick them out of the feed

FPL FAST Tech Summit London January Summary FAST Vocabulary FAST Transfer Encoding Fields SBIT Details Messages FAST Field Encoding FAST Templates FAST Field Data Types An Example