DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT FIG. 1 shows an example of a system structure suitable for use with the current invention. A CPU 5 accesses a first memory 10 containing uncompressed data blocks 15. Blocks are transferred between the first memory 10 and a second memory 20, where the second memory could be at a lower level in the memory hierarchy, for example semiconductor RAM, disk storage, etc. To increase the number of blocks that can be stored in the second memory given a fixed second memory size, the blocks 25 are stored in compressed format in the second memory. For this purpose there is an n-way parallel compressor 30 to compress blocks when they are stored in the second memory, and an n-way parallel decompressor 40 to decompress blocks when they are stored in the first memory. The compressor and decompressor operate in a parallel fashion, as will subsequently be described, in order to satisfy inter-memory bandwidth requirements. In general, for higher degrees of parallelism, bandwidth is increased, thus in practice the degree of parallelism n will be chosen so as to satisfy the requirements of a particular system. FIG. 2 illustrates how an uncompressed block B (220) is compressed using n-way parallel compression, where for concreteness the case n=4 is shown. Block B is logically divided into four equal size components, referred to as sub-blocks, b1 (221), b2 (222), b3 (223) and b4 (224). The 4-way parallel compressor includes four distinct compressors 241, 242, 243, and 244. A splitter 230 routes data from sub-block b1 to compressor 1, from sub-block b2 to compressor 2, etc. The output of compressor 1 is logically a compressed sub-block b1, the output of compressor 2 is logically a compressed sub-block b2, etc. Because the degree of compression is variable, depending on the data, each compressed sub-block will in general be a different size. A catenator 250 constructs the compressed block B by first constructing a prefix area 265 which gives the starting point of each compressed sub-block in B, as determined by their compressed lengths, and then appending each compressed sub-block 261, 262, 263, 264
|