MEMORY CONTROLLER INCLUDING A HARDWARE COMPRESSION AND DECOMPRESSION ENGINE FOR MANAGING SYSTEM MEMORY AND GRAPHICAL OPERATIONS
First 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 and a graphics 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 is configured to store at least a portion of its data in a compressed format;
the graphics engine in the memory controller performing graphical operations on a first portion of the uncompressed block of data to produce a processed block of data;
the hardware compression engine in the memory controller compressing a second portion of the uncompressed block of data to produce a compressed block of data; and
the memory controller storing the compressed block of data and the processed block of data in the system memory after said performing graphical operations on the first portion of the uncompressed block of data and said compressing the second portion of the uncompressed block of data.
5 Assignments
0 Petitions
Accused Products
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.
91 Citations
39 Claims
-
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 and a graphics 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 is configured to store at least a portion of its data in a compressed format; the graphics engine in the memory controller performing graphical operations on a first portion of the uncompressed block of data to produce a processed block of data; the hardware compression engine in the memory controller compressing a second portion of the uncompressed block of data to produce a compressed block of data; and the memory controller storing the compressed block of data and the processed block of data in the system memory after said performing graphical operations on the first portion of the uncompressed block of data and said compressing the second portion of the uncompressed block of data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. 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 and a graphics engine, the method comprising:
-
the memory controller receiving a compressed block of data from the system memory, and also receiving compressed video data, 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, and decompressing the compressed video data to produce uncompressed video data; the graphics engine in the memory controller manipulating the uncompressed video data to produce display video data; the memory controller providing the uncompressed block of data and the display video data after said decompressing the compressed block of data and the compressed video data, wherein said providing comprises the memory controller storing the uncompressed block of data in the system memory. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33)
-
-
34. 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 and a graphics 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 graphics engine in the memory controller performing graphical operations on at least a first portion of the uncompressed block of data to produce a processed uncompressed block of data; and the memory controller storing the processed uncompressed block of data in the system memory after said decompressing the compressed block of data and said performing the graphical operations. - View Dependent Claims (35)
-
-
36. 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 and a graphics engine; wherein the memory controller is operable to receive an uncompressed block of data from the system memory; wherein the graphics engine in the memory controller is operable to perform graphical operations on a first portion of the uncompressed block of data to produce a processed block of data; wherein the hardware compression engine in the memory controller is operable to compress a second portion of 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 and the processed block of data in the system memory after the graphics engine performs graphical operations on the first portion of the uncompressed block of data and the hardware compression engine compresses the second portion of the uncompressed block of data.
-
-
37. 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 and a graphics engine; wherein the memory controller is operable to receive a compressed block of data from the system memory and is further operable to receive compressed video data; 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 and is further operable to decompress the compressed video data to produce uncompressed video data; wherein the graphics engine in the memory controller is operable to manipulate the uncompressed video data to produce display video data; wherein the memory controller is operable to provide the uncompressed block of data to the system memory after the hardware decompression engine decompresses the compressed block of data; and wherein the memory controller is operable to provide the display video data to a video display. - View Dependent Claims (38)
-
-
39. 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 between the CPU and the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller comprises circuitry operable to perform compression and decompression of data, and graphical operations; wherein the memory controller is operable to receive; uncompressed blocks of data from the system memory; and compressed blocks of data from the system memory; wherein the circuitry in the memory controller is operable to; compress at least a first portion of the uncompressed blocks of data to produce additional compressed blocks of data; decompress the compressed blocks of data to produce additional uncompressed blocks of data and uncompressed video data; and perform graphical operations on at least a second portion of the uncompressed blocks of data and the uncompressed video data to produce video display data; wherein the memory controller is operable to; provide the additional compressed blocks of data to the system memory after the circuitry compresses the at least first portion of the uncompressed blocks of data; provide the additional uncompressed blocks of data to the system memory after the circuitry decompresses the compressed blocks of data; and provide the video display data to a video display.
-
Specification