Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
First Claim
1. A method for storing data in a memory in a computer system the method comprising:
- receiving uncompressed data;
determining a compression mode for the data, wherein the compression mode comprises one of lossless compression, lossy compression, or no compression;
selectively compressing the uncompressed data, wherein said compressing is selectively performed in response to the compression mode for the data;
storing the data in the memory;
creating a header after said determining the compression mode for the data, wherein the header includes compression mode information indicating the compression mode of the first data, wherein the compression mode information indicates a decompression procedure for decompression of the compressed first data; and
wherein said storing the data in the memory includes storing the header in the memory with the data.
5 Assignments
0 Petitions
Accused Products
Abstract
An integrated memory controller (IMC) including MemoryF/X Technology which includes data compression and decompression engines for improved performance. The memory controller (IMC) of the present invention preferably selectively uses a combination of lossless, lossy, and no compression modes. Data transfers to and from the integrated memory controller of the present invention can thus be in a plurality of formats, these being compressed or normal (non-compressed), compressed lossy or lossless, or compressed with a combination of lossy and lossless. The invention also indicates preferred methods for specific compression and decompression of particular data formats such as digital video, 3D textures and image data using a combination of novel lossy and lossless compression algorithms in block or span addressable formats. To improve latency and reduce performance degradations normally associated with compression and decompression techniques, the MemoryF/X Technology encompasses multiple novel techniques such as: 1) parallel lossless compression/decompression; 2) selectable compression modes such as lossless, lossy or no compression; 3) priority compression mode; 4) data cache techniques; 5) variable compression block sizes; 6) compression reordering; and 7) unique address translation, attribute, and address caches. The parallel compression and decompression algorithm allows high-speed parallel compression and high speed parallel decompression operation. The IMC also preferably uses a special memory allocation and directory technique for reduction of table size and low latency operation. The integrated data compression and decompression capabilities of the IMC remove system bottle-necks and increase performance. This allows lower cost systems due to smaller data storage, reduced bandwidth requirements, reduced power and noise.
340 Citations
16 Claims
-
1. A method for storing data in a memory in a computer system the method comprising:
-
receiving uncompressed data; determining a compression mode for the data, wherein the compression mode comprises one of lossless compression, lossy compression, or no compression; selectively compressing the uncompressed data, wherein said compressing is selectively performed in response to the compression mode for the data; storing the data in the memory; creating a header after said determining the compression mode for the data, wherein the header includes compression mode information indicating the compression mode of the first data, wherein the compression mode information indicates a decompression procedure for decompression of the compressed first data; and wherein said storing the data in the memory includes storing the header in the memory with the data. - View Dependent Claims (2)
-
-
3. A method for compressing data and storing the compressed data in a memory in a computer system, the method comprising:
-
receiving uncompressed first data; compressing the uncompressed first data to produce compressed first data, wherein said compressed first data has a first size; determining if the first size of the compressed first data is greater than an allocated memory block size of a first allocated memory block; creating a header, wherein the header includes an overflow indicator indicating whether the first size of the compressed first data is greater than the allocated memory block size; and storing the compressed first data and the header in the memory. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A computer system including a memory controller having an embedded compression/decompression engine, the computer system comprising:
-
a CPU; system memory which stores data used by said CPU for executing one or more applications; a memory controller coupled to said system memory and said CPU, wherein said memory controller performs memory control functions for said system memory, wherein said memory controller includes said compression/decompression engine comprised in said memory controller for compressing and decompressing data transferred to or from said system memory; wherein said memory controller is operable to; receive uncompressed first data; selectively compress the uncompressed first data to produce compressed first data according to a compression mode; create a header, wherein the header includes compression mode information indicating the compression mode of the first data, wherein the compression mode information indicates a decompression procedure for decompression of the compressed first data; and
store the compressed first data and the header in the memory.
-
-
16. A method for compressing data and storing the compressed data in a memory in a computer system, the method comprising:
-
allocating a memory block, wherein the memory block is allocated according to a pre-determined compression ratio; receiving uncompressed first data having a first size; receiving one or more destination addresses indicating a storage destination of the first data in the allocated memory block;
compressing the uncompressed first data to produce compressed first data having a second smaller size;storing the compressed first data in the allocated memory block at the one or more destination addresses; determining if the compressed first data fits within the allocated memory block; and allocating an overflow memory block if the compressed first data does not fit within the allocated memory block.
-
Specification