30. The method of claim 23 , further comprising: preprocessing the stream of data to perform an initial compression; analyzing the preprocessed stream of data in order to identify sequences of data that occur more than once; calculating for each instance of such a repeating sequence of data, how much intervening data occurs in the preprocessed stream of data between the instance and a previous instance; carrying out a local dictionary encoding process comprising, for each repeating sequence of data for which the sum of the size of the intervening data and the size of the sequence of data does not exceed a predetermined threshold value, replacing the sequence of data with a reference to a location in an internal memory of a local dictionary decoder at which the previous instance may be found during decoding of the stream of data by the local dictionary decoder; and forwarding the output of the local dictionary encoding process to a global dictionary encoding process comprising replacing at least a portion of the remaining repeating sequences with references to a location in an external memory to be used by a global dictionary decoder at which a representation of the repeating sequence may be found during decoding of the stream of data by the global dictionary decoder.
30. The method of claim 23 , further comprising: preprocessing the stream of data to perform an initial compression; analyzing the preprocessed stream of data in order to identify sequences of data that occur more than once; calculating for each instance of such a repeating sequence of data, how much intervening data occurs in the preprocessed stream of data between the instance and a previous instance; carrying out a local dictionary encoding process comprising, for each repeating sequence of data for which the sum of the size of the intervening data and the size of the sequence of data does not exceed a predetermined threshold value, replacing the sequence of data with a reference to a location in an internal memory of a local dictionary decoder at which the previous instance may be found during decoding of the stream of data by the local dictionary decoder; and forwarding the output of the local dictionary encoding process to a global dictionary encoding process comprising replacing at least a portion of the remaining repeating sequences with references to a location in an external memory to be used by a global dictionary decoder at which a representation of the repeating sequence may be found during decoding of the stream of data by the global dictionary decoder. 31. The method of claim 30 , wherein the predetermined threshold value is determined according to a capacity of the internal memory.