34. The method of claim 33 , wherein the preprocessing comprises encoding using at least one of the following methods: run-length encoding, Huffman encoding, delta encoding and dictionary-based encoding.
33. The method of claim 23 , comprising: preprocessing the stream of data to perform an initial compression; and carrying out a local dictionary encoding process to provide a local dictionary encoded data stream suitable for decoding by a local dictionary decoder, wherein: the local dictionary decoder is configured to make accesses to an internal local dictionary memory, an output from the local dictionary decoder provides the input for the local dictionary memory, which stores only a most recent portion of the output, and the local dictionary encoding process comprises: analyzing the preprocessed data to identify sequences of data that occur more than once, and calculating for each instance of such a repeating sequence whether a previous instance of the same sequence will be entirely stored in the local dictionary memory at the point in time when the later instance is encountered during decoding and, if so, replacing each the instance with a reference to a location in the local dictionary memory at which the previous instance will be available during decoding, and forwarding the local dictionary encoded stream of data as input to a global dictionary encoding process, the global dictionary encoding process providing a global dictionary encoded data stream suitable for decoding by a global dictionary decoder, wherein: the global dictionary decoder is configured to make accesses to an external global dictionary memory, and the global dictionary decoding process comprises: analyzing the local dictionary encoded data to identify sequences of data that occur more than once, and replacing at least a subset of the repeating sequences with references to locations in the global dictionary memory at which representations of the sequences will be available during decoding.