1. A computer-implemented method of implementing a packet processing system, the method comprising: receiving a user input specifying a first function and a second function; automatically generating a high level programming language description of a packet processing application comprising a packet data storage unit, wherein packet units are stored within the packet data storage unit at locations determined according to the first function and the second function; and storing the high level programming language description; wherein the packet data storage unit comprises rows configured to store packet units in which the rows are mapped to potential values of the first function and ordering of packet units within each row is determined by the second function.