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 a request for a first block of data;
in response to determining that the requested first block of data is stored in the system memory in the compressed format, the memory controller identifying a second block of data stored in the system memory in the uncompressed format, wherein said identifying is based at least in part on a determined likelihood that the identified second block of data will be accessed;
the memory controller receiving the uncompressed second block of data from the system memory, wherein the system memory is a volatile memory that stores at least a portion of data in a compressed format and stores at least a portion of data in an uncompressed format;
the hardware compression engine in the memory controller freeing a portion of the system memory by compressing the second block of data to produce a compressed second block of data and storing the compressed second block of data in the system memory;
the hardware compression engine in the memory controller decompressing the first block of data;
the memory controller storing the decompressed requested first block of data in the system memory in the uncompressed format; and
the graphics engine in the memory controller performing graphical operations using at least a portion of the decompressed first block of data, wherein said performing graphical operations includes;
mapping a first area of the system memory to first information related to a first graphic display window of a display, wherein adjusting the location within the display of the first graphic display window is accomplished without moving the first information to an area of the system memory other than the first area; and
mapping a second area of the system memory to second information related to a second graphic display window of the display, wherein adjusting the location within the display of the second graphic display window is accomplished without moving the second information to area of the system memory other than the second area;
wherein the first area and the second area are not identical.
5 Assignments
0 Petitions
Accused Products
Abstract
An integrated memory controller (IMC) preferably sits on the main CPU bus or a high speed system peripheral bus and couples to system memory. The IMC may use a lossless data compression and decompression scheme for improved performance. The IMC may also include microcode for specific decompression of particular data formats such as digital video and digital audio. Compressed data may be decompressed in the IMC and stored into system memory or saved in the system memory in compressed format. Internal memory mapping may allow for formal definition spaces which may 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.
63 Citations
22 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 a request for a first block of data; in response to determining that the requested first block of data is stored in the system memory in the compressed format, the memory controller identifying a second block of data stored in the system memory in the uncompressed format, wherein said identifying is based at least in part on a determined likelihood that the identified second block of data will be accessed; the memory controller receiving the uncompressed second block of data from the system memory, wherein the system memory is a volatile memory that stores at least a portion of data in a compressed format and stores at least a portion of data in an uncompressed format; the hardware compression engine in the memory controller freeing a portion of the system memory by compressing the second block of data to produce a compressed second block of data and storing the compressed second block of data in the system memory; the hardware compression engine in the memory controller decompressing the first block of data; the memory controller storing the decompressed requested first block of data in the system memory in the uncompressed format; and the graphics engine in the memory controller performing graphical operations using at least a portion of the decompressed first block of data, wherein said performing graphical operations includes; mapping a first area of the system memory to first information related to a first graphic display window of a display, wherein adjusting the location within the display of the first graphic display window is accomplished without moving the first information to an area of the system memory other than the first area; and mapping a second area of the system memory to second information related to a second graphic display window of the display, wherein adjusting the location within the display of the second graphic display window is accomplished without moving the second information to area of the system memory other than the second area; wherein the first area and the second area are not identical.
-
-
2. A system, comprising:
-
a CPU; a system memory configured to store uncompressed data and compressed data, wherein the system memory is a volatile memory; 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 configured to; in response to receiving a request for a first block of data, determine whether the first block of data is stored in the system memory as compressed data; in response to determining that the first block of data is stored in the system memory as compressed data, identify a second block of data stored in the system memory as uncompressed data based at least in part on a determined likelihood that the second block of data will be accessed; free a portion of the system memory by compressing the second block of data to produce a compressed second block of data and storing the compressed second block of data in the system memory; decompress the first block of data and store the decompressed first block of data in the system memory; and perform graphical operations using at least a portion of the decompressed first block of data to produce video display data, wherein the graphical operations include; mapping a first area of the system memory to first information related to a first graphic display window of a display, wherein adjusting the location within the display of the first graphic display window is accomplished without moving the first information to an area of the system memory other than the first area; and mapping a second area of the system memory to second information related to a second graphic display window of the display, wherein adjusting the location within the display of the second graphic display window is accomplished without moving the second information to area of the system memory other than the second area; wherein the first area and the second area are not identical. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method, comprising:
-
a memory controller receiving a request for a first block of data, wherein the memory controller is coupled to a system memory storing uncompressed data and compressed data, wherein the system memory is a volatile memory; the memory controller determining whether the first block of data is stored in the system memory as compressed data; in response to determining that the first block of data is stored in the system memory as compressed data, the memory controller identifying a second block of data stored in the system memory as uncompressed data, wherein the identifying is based at least in part on a determined likelihood that the second block of data will be accessed; the memory controller freeing a portion of the system memory by compressing the second block of data and storing the compressed second block of data in the system memory; the memory controller decompressing the first block of data and storing the decompressed first block of data in the system memory; and the memory controller performing graphical operations using at least a portion of the decompressed first block of data, wherein said performing graphical operations includes; mapping a first area of the system memory to first information related to a first graphic display window of a display, wherein adjusting the location within the display of the first graphic display window is accomplished without moving the first information to an area of the system memory other than the first area; and mapping a second area of the system memory to second information related to a second graphic display window of the display, wherein adjusting the location within the display of the second graphic display window is accomplished without moving the second information to area of the system memory other than the second area; wherein the first area and the second area are not identical. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
Specification