1. A sub-block parser configured with a variable sized window, where the variable sized window is used by the parser to parse a block of data into smaller sub-blocks of data by passing the variable sized window over the block of data to identify sub-block boundary locations, where the smaller sub-blocks of data are mutually exclusive subsets of the block of data, where a window location is defined by b[k−A+1 . . . k+B], b being the block of data, k being an integer, A being an integer, and B being and integer greater than A, and where a sub-block is defined by the location of two boundaries placed by the parser at two different window locations, where A and B vary as a function of an attribute of the block of data being parsed.
1. A sub-block parser configured with a variable sized window, where the variable sized window is used by the parser to parse a block of data into smaller sub-blocks of data by passing the variable sized window over the block of data to identify sub-block boundary locations, where the smaller sub-blocks of data are mutually exclusive subsets of the block of data, where a window location is defined by b[k−A+1 . . . k+B], b being the block of data, k being an integer, A being an integer, and B being and integer greater than A, and where a sub-block is defined by the location of two boundaries placed by the parser at two different window locations, where A and B vary as a function of an attribute of the block of data being parsed. 2. The sub-block parser of claim 1 , where the sub-block parser increases the information density of the data block to be parsed before parsing the data block.