1. A method of encoding video, comprising the steps of: loading a set of pixel values into memory to define a first search space, the first search space defining a first plurality of columns of candidate video blocks to be compared to a first video block to be encoded during a first iteration of a motion estimation routine; performing the first iteration to compare the first video block to the candidate video blocks in the first search space, wherein performing the first iteration includes performing in parallel a plurality of difference computations between pixel values of the first video block to be encoded and pixel values of one of the candidate video blocks in the first search space, wherein the first video block comprises a macroblock that includes a plurality of microblocks, wherein the plurality of difference computations performed in parallel correspond to a row of one of the microblocks, wherein the microblocks include a plurality of rows, wherein performing the first iteration further includes generating a set of microblock difference values based on the computations, the microblock difference values respectively being indicative of differences between each of a plurality of microblocks that form the macroblock to be encoded and microblocks that form the candidate macroblock, and generating a macroblock difference value based on the computations, the macroblock difference value being indicative of a difference between the macroblock to be encoded and the candidate macroblock, wherein the macroblock difference value comprises a summation of the plurality of microblock difference values; and reloading a subset of the columns of candidate video blocks to define a second search space, the second search space defining a second plurality of columns of candidate video blocks to be compared to a second video block to be encoded during a second iteration of the motion estimation routine.