Memory controller including a hardware compression and decompression engine for managing system memory
Abstract
An integrated memory controller (IMC) which includes data compression and decompression engines for improved performance. The memory controller (IMC) of the present invention preferably sits on the main CPU bus or a high speed system peripheral bus such as the PCI bus and couples to system memory. The IMC preferably uses a lossless data compression and decompression scheme. Data transfers to and from the integrated memory controller of the present invention can thus be in either two formats, these being compressed or normal (non-compressed). The IMC also preferably includes microcode for specific decompression of particular data formats such as digital video and digital audio. Compressed data from system I/O peripherals such as the hard drive, floppy drive, or local area network (LAN) are decompressed in the IMC and stored into system memory or saved in the system memory in compressed format. Thus, data can be saved in either a normal or compressed format, retrieved from the system memory for CPU usage in a normal or compressed format, or transmitted and stored on a medium in a normal or compressed format. Internal memory mapping allows for format definition spaces which define the format of the data and the data type to be read or written. Software overrides may be placed in applications software in systems that desire to control data decompression at the software application level. 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 requirements and reduced bandwidth requirements. This also increases system bandwidth and hence increases system performance. Thus the IMC of the present invention is a significant advance over the operation of current memory controllers.
Claims
exact text as granted — not AI-modifiedI claim:
1 . A method for managing memory in a system including a CPU, a system memory for storing applications and data, and a memory controller coupled between the CPU and the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression engine, the method comprising:
the memory controller receiving an uncompressed block of data to be stored in the system memory, wherein the system memory is a volatile memory which stores at least a portion of its data in a compressed format; the hardware compression engine in the memory controller compressing the uncompressed block of data to produce a compressed block of data; the memory controller storing the compressed block of data in the system memory after said compressing the uncompressed block of data.
2 . The method of claim 1 ,
wherein said compressing the block of data and storing the compressed block of data in the system memory utilizes less space in the system memory than storing the uncompressed block of data in the system memory.
3 . The method of claim 1 ,
wherein said receiving comprises the memory controller receiving the uncompressed block of data from the system memory.
4 . The method of claim 1 ,
wherein said receiving comprises the memory controller receiving the uncompressed block of data from the CPU.
5 . The method of claim 1 ,
wherein the system includes a nonvolatile memory; wherein said receiving comprises the memory controller receiving the uncompressed block of data from the nonvolatile memory.
6 . The method of claim 1 ,
wherein the memory controller includes a hardware decompression engine; the method further comprising: the memory controller receiving the compressed block of data from the system memory; the hardware decompression engine in the memory controller decompressing the compressed block of data to produce an uncompressed block of data; and the memory controller providing the uncompressed block of data.
7 . The method of claim 6 ,
wherein said providing comprises the memory controller providing the uncompressed block of data to the CPU.
8 . The method of claim 6 ,
wherein said providing comprises the memory controller providing the uncompressed block of data to the nonvolatile memory.
9 . The method of claim 1 ,
wherein the system memory stores a portion of its data in an uncompressed format.
10 . The method of claim 9 ,
wherein the system memory stores most recently used data in an uncompressed format.
11 . The method of claim 1 ,
wherein the system memory stores least recently used data in a compressed format.
12 . The method of claim 1 ,
wherein the memory controller includes a hardware compression/decompression engine.
13 . The method of claim 1 ,
wherein the hardware compression engine performs lossless compression; wherein the hardware compression engine in the memory controller compressing the uncompressed block of data comprises the hardware compression engine in the memory controller performing lossless compression on the uncompressed block of data to produce the compressed block of data.
14 . The method of claim 1 ,
wherein the uncompressed block of data comprises CPU application data.
15 . (New) A method for managing memory in a system including a CPU, a system memory for storing applications and data, and a memory controller coupled between the CPU and the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware decompression engine, the method comprising:
the memory controller receiving a compressed block of data from the system memory, wherein the system memory is a volatile memory which stores at least a portion of its data in a compressed format; the hardware decompression engine in the memory controller decompressing the compressed block of data to produce an uncompressed block of data; the memory controller providing the uncompressed block of data after said decompressing the compressed block of data.
16 . The method of claim 15 , further comprising:
storing the compressed block of data in the system memory prior to said receiving; wherein said storing the compressed block of data in the system memory utilizes less space in the system memory than storing the block of data in the system memory in an uncompressed format.
17 . The method of claim 15 ,
wherein said providing comprises the memory controller storing the uncompressed block of data in the system memory.
18 . The method of claim 15 ,
wherein said providing comprises the memory controller providing the uncompressed block of data to the CPU.
19 . The method of claim 15 ,
wherein the system includes a nonvolatile memory; wherein said providing comprises the memory controller providing the uncompressed block of data to the nonvolatile memory.
20 . The method of claim 15 ,
wherein the memory controller includes a hardware compression engine; the method further comprising: the memory controller receiving the uncompressed block of data; the hardware compression engine in the memory controller compressing the uncompressed block of data to produce a compressed block of data; and the memory controller storing the compressed block of data in the system memory.
21 . The method of claim 20 ,
wherein said receiving the uncompressed block of data comprises the memory controller receiving the uncompressed block of data from the CPU.
22 . The method of claim 20 ,
wherein said receiving the uncompressed block of data comprises the memory controller receiving the uncompressed block of data from the nonvolatile memory.
23 . The method of claim 15 ,
wherein the system memory stores a portion of data in an uncompressed format.
24 . The method of claim 15 ,
wherein the system memory stores most recently used data in an uncompressed format.
25 . The method of claim 15 ,
wherein the system memory stores least recently used data in a compressed format.
26 . The method of claim 15 ,
wherein the memory controller includes a hardware compression/decompression engine.
27 . The method of claim 15 ,
wherein the hardware decompression engine performs lossless decompression; wherein the hardware decompression engine in the memory controller decompressing the compressed block of data comprises the hardware decompression engine in the memory controller performing lossless decompression on the compressed block of data to produce the uncompressed block of data.
28 . The method of claim 15 ,
wherein the compressed block of data comprises CPU application data.
29 . (New) A method for managing memory in a system including a CPU, a system memory for storing applications and data, and a memory controller coupled between the CPU and the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression engine, the method comprising:
the memory controller receiving an uncompressed block of data from the system memory, wherein the system memory is a volatile memory which stores at least a portion of its data in an uncompressed format; the hardware compression engine in the memory controller compressing the uncompressed block of data to produce a compressed block of data; the memory controller storing the compressed block of data in the system memory after said compressing the uncompressed block of data.
30 . The method of claim 29 ,
wherein said compressing the block of data and storing the compressed block of data in the system memory utilizes less space in the system memory than storing the uncompressed block of data in the system memory.
31 . (New) A method for managing memory in a system including a CPU, a system memory for storing applications and data, and a memory controller coupled between the CPU and the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware decompression engine, the method comprising:
the memory controller receiving a compressed block of data from the system memory, wherein the system memory is a volatile memory which stores at least a portion of its data in a compressed format; the hardware decompression engine in the memory controller decompressing the compressed block of data to produce an uncompressed block of data; the memory controller storing the uncompressed block of data in the system memory after said decompressing the compressed block of data.
32 . The method of claim 31 ,
wherein said decompressing the compressed block of data and storing the uncompressed block of data in the system memory utilizes more space in the system memory than storing the compressed block of data in the system memory.
33 . (New) A system with improved memory management, the system comprising:
a CPU; a system memory, wherein the system memory is a volatile memory which stores at least a portion of its data in a compressed format; and a memory controller coupled to the CPU and to the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression engine; wherein the memory controller is operable to receive an uncompressed block of data to be stored in the system memory; wherein the hardware compression engine in the memory controller is operable to compress the uncompressed block of data to produce a compressed block of data; wherein the memory controller is operable to store the compressed block of data in the system memory after the hardware compression engine compresses the uncompressed block of data.
34 . (New) A system with improved memory management, the system comprising:
a CPU; a system memory, wherein the system memory is a volatile memory which stores at least a portion of its data in a compressed format; and a memory controller coupled to the CPU and to the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware decompression engine; wherein the memory controller is operable to receive a compressed block of data from the system memory; wherein the hardware decompression engine in the memory controller is operable to decompress the compressed block of data to produce an uncompressed block of data; wherein the memory controller is operable to provide the uncompressed block of data to a device after the hardware decompression engine decompresses the compressed block of data.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.