1. A method for partitioning a data block comprising: determining a first boundary condition for the data block at a first data position using a first algorithm; determining whether a boundary is needed based on a result of the first algorithm; and determining the boundary location using a second algorithm if the first algorithm result indicates the boundary is needed.