System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
First Claim
1. A method for managing memory accesses in a system including a CPU, a system memory for storing applications and data, and a memory controller coupled to the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression and decompression engine, the method comprising:
- determining a replacement block of data in the system memory, wherein the system memory is a volatile memory which stores uncompressed data currently being used for execution by the CPU, wherein the uncompressed data includes most recently used data;
the memory controller compressing said replacement block of data;
the memory controller storing said compressed replacement block of data in said system memory after said compressing said replacement block of data;
wherein said compressing said replacement block of data and storing said compressed replacement block of data in said system memory operates to free up at least a portion of said system memory.
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 of 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 normal or compressed format, retrieved from the system memory for CPU usage in normal or compressed format, or transmitted and stored on a medium in 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 bottlenecks 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.
397 Citations
80 Claims
-
1. A method for managing memory accesses in a system including a CPU, a system memory for storing applications and data, and a memory controller coupled to the system memory, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression and decompression engine, the method comprising:
-
determining a replacement block of data in the system memory, wherein the system memory is a volatile memory which stores uncompressed data currently being used for execution by the CPU, wherein the uncompressed data includes most recently used data;
the memory controller compressing said replacement block of data;
the memory controller storing said compressed replacement block of data in said system memory after said compressing said replacement block of data;
wherein said compressing said replacement block of data and storing said compressed replacement block of data in said system memory operates to free up at least a portion of said system memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 73, 74)
the CPU initiating an access of data; and
the memory controller performing said access of data in the system memory.
-
-
3. The method of claim 2, further comprising:
marking said data as most recently used data.
-
4. The method of claim 2, wherein the CPU initiating an access of data comprises the CPU initiating a read of requested data in the system memory, wherein the memory controller performing said access of data in the system memory includes:
the memory controller providing said requested data to the CPU.
-
5. The method of claim 4, further comprising:
marking said requested data as most recently used data.
-
6. The method of claim 4, wherein the requested data resides in the system memory in a compressed format, wherein the memory controller providing said requested data to the CPU includes:
-
the memory controller decompressing said requested data after the CPU initiating the access to produce uncompressed requested data; and
the memory controller storing said uncompressed requested data in the system memory.
-
-
7. The method of claim 4, wherein the computer system includes a non-volatile memory coupled to the memory controller, wherein the requested data resides in the nonvolatile memory, wherein the memory controller performing said access of data comprises:
-
the memory controller accessing said requested data from the non-volatile memory;
the memory controller storing said requested data in the system memory; and
the memory controller providing said requested data to the CPU.
-
-
8. The method of claim 4, wherein the computer system includes a non-volatile memory coupled to the memory controller, wherein the requested data resides in the nonvolatile memory in a compressed format, wherein the memory controller performing said access of data comprises:
-
the memory controller accessing said requested data from the non-volatile memory;
the memory controller decompressing the requested data to produce uncompressed requested data;
the memory controller storing said uncompressed requested data in the system memory; and
the memory controller providing said requested data to the CPU.
-
-
9. The method of claim 2, wherein the CPU initiating an access of data comprises the CPU initiating a write of first data to the system memory, wherein the memory controller performing said access of data in the system memory comprises:
-
the memory controller writing said first data to the system memory;
the method further comprising;
marking said first data as most recently used data.
-
-
10. The method of claim 2, wherein the CPU initiating an access of data comprises the CPU initiating a write of first data to the system memory, wherein the memory controller performing said access of data in the system memory comprises:
-
the memory controller compressing the first data to produce compressed first data; and
the memory controller writing said compressed first data to the system memory.
-
-
11. The method of claim 2, wherein the system memory stores application data used by the CPU for executing one or more applications;
-
wherein the CPU initiating an access of data comprises the CPU initiating an access of application data in the system memory; and
wherein the memory controller performing said access of data in the system memory comprises the memory controller accessing the application data in the system memory.
-
-
12. The method of claim 2, wherein the computer system includes a display, wherein the system memory stores graphics data used for presenting images on the display;
-
wherein the CPU initiating an access of data comprises the CPU initiating an access of graphics data in the system memory; and
wherein the memory controller performing said access of data in the system memory comprises the memory controller accessing the graphics data in the system memory.
-
-
13. The method of claim 1, wherein the system memory stores application data used by the CPU for executing one or more applications;
wherein the replacement block of data in the system memory comprises application data.
-
14. The method of claim 1, wherein the computer system includes a display, wherein the system memory stores graphics data used for presenting images on the display;
wherein the replacement block of data in the system memory comprises graphics data.
-
15. The method of claim 1, wherein the memory controller compressing said replacement block of data comprises the memory controller performing a lossless compression on said replacement block of data.
-
16. The method of claim 1, wherein the memory controller compressing said replacement block of data comprises the memory controller performing a lossy compression on said replacement block of data.
-
17. The method of claim 1, wherein said determining a replacement block of data in the system memory comprises determining a least recently used block of data in the system memory.
-
18. The method of claim 1, wherein said determining a replacement block of data in the system memory comprises determining a true least recently used block of data in the system memory.
-
19. The method of claim 1, wherein said determining a replacement block of data in the system memory comprises determining a pseudo least recently used block of data in the system memory.
-
73. The method of claim 1, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
74. The method of claim 1, wherein the data includes application code and application data.
-
20. A method for managing data accesses in a system including a CPU, a system memory for storing data, a memory controller coupled to the system memory, and a non-volatile memory coupled to the memory controller, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression and decompression engine, the method comprising:
-
determining a replacement block of data in the system memory, wherein the system memory is a volatile memory which stores uncompressed data currently being used for execution by the CPU, wherein the uncompressed data includes most recently used data;
the memory controller compressing said replacement block of data;
the memory controller transferring said compressed replacement block to the non-volatile memory for storage after said compressing said replacement block of data;
wherein said compressing said replacement block of data and transferring said compressed replacement block of data to the non-volatile memory operates to free up at least a portion of said system memory. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 75, 76)
the CPU initiating an access of data in the system memory; and
the memory controller performing said access of data in the system memory.
-
-
22. The method of claim 21, further comprising:
marking said data as most recently used data.
-
23. The method of claim 21, wherein the CPU initiating an access of data in the system memory comprises the CPU initiating a read of requested data in the system memory, wherein the memory controller performing said access of data in the system memory includes:
the memory controller providing said requested data to the CPU.
-
24. The method of claim 23, further comprising:
marking said requested data as most recently used data after said storing said requested data in the system memory.
-
25. The method of claim 23, wherein the requested data resides in the system memory in a compressed format, wherein the memory controller providing said requested data to the CPU includes:
-
the memory controller decompressing said requested data after the CPU initiating the access; and
the memory controller storing said uncompressed requested data in the system memory.
-
-
26. The method of claim 23, wherein the requested data resides in the nonvolatile memory, wherein the memory controller providing said requested data to the CPU includes:
-
the memory controller accessing said requested data from the non-volatile memory; and
the memory controller storing said requested data in the system memory.
-
-
27. The method of claim 23, wherein the requested data resides in the nonvolatile memory in a compressed format, wherein the memory controller providing said requested data to the CPU includes:
-
the memory controller accessing said requested data from the non-volatile memory;
the memory controller decompressing the requested data to produce uncompressed requested data; and
the memory controller storing said uncompressed requested data in the system memory.
-
-
28. The method of claim 21, wherein the CPU initiating an access of data in the system memory comprises the CPU initiating a write of first data to the system memory, wherein the memory controller performing said access of data in the system memory comprises:
-
the memory controller writing said first data to the system memory;
the method further comprising;
marking said first data as most recently used data.
-
-
29. The method of claim 21, wherein the CPU initiating an access of data in the system memory comprises the CPU initiating a write of first data to the system memory, wherein the memory controller performing said access of data in the system memory comprises:
-
the memory controller compressing the first data to produce compressed first data; and
the memory controller writing said compressed first data to the system memory.
-
-
30. The method of claim 21, wherein the system memory stores application data used by the CPU for executing one or more applications;
-
wherein the CPU initiating an access of data in the system memory comprises the CPU initiating an access of application data in the system memory; and
wherein the memory controller performing said access of data in the system memory comprises the memory controller accessing the application data in the system memory.
-
-
31. The method of claim 21, wherein the computer system includes a display, wherein the system memory stores graphics data used for presenting images on the display;
-
wherein the CPU initiating an access of data in the system memory comprises the CPU initiating an access ofai data in the system memory; and
wherein the memory controller performing said access of data in the system memory comprises the memory controller accessing the graphics data in the system memory.
-
-
32. The method of claim 20, wherein the system memory stores application data used by the CPU for executing one or more applications;
wherein the replacement block of data in the system memory comprises application data.
-
33. The method of claim 20, wherein the computer system includes a display, wherein the system memory stores graphics data used for presenting images on the display;
wherein the replacement block of data in the system memory comprises graphics data.
-
34. The method of claim 20, wherein the memory controller compressing said replacement block of data comprises the memory controller performing a lossless compression on said replacement block of data.
-
35. The method of claim 20, wherein the memory controller compressing said replacement block of data comprises the memory controller performing a lossy compression on said replacement block of data.
-
36. The method of claim 20, wherein said determining a replacement block of data in the system memory comprises determining a least recently used block of data in the system memory.
-
37. The method of claim 20, wherein said determining a replacement block of data in the system memory comprises determining a true least recently used block of data in the system memory.
-
38. The method of claim 20, wherein said determining a replacement block of data in the system memory comprises determining a pseudo least recently used block of data in the system memory.
-
75. The method of claim 20, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
76. The method of claim 20, wherein the data includes application code and application data.
-
39. A system with improved memory access management, the system comprising:
-
a CPU;
a system memory, wherein the system memory is a volatile memory for storing data, wherein the data includes uncompressed data currently being used for execution by the CPU, wherein the uncompressed data includes most recently used data; 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/decompression engine;
wherein the memory controller is operable to access a replacement block of data in the system memory, compress said replacement block of data, and store said compressed replacement block of data in said system memory, wherein said compression of said replacement block of data and storage of said compressed replacement block or data in said system memory operates to free up at least a portion of said system memory. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 77, 78)
wherein the CPU is operable to initiate an access of data in the system memory; wherein the memory controller is operable to perform said access of data in the system memory.
-
-
41. The system of claim 40,
wherein said data is marked as most recently used data. -
42. The system of claim 40, wherein the CPU is operable to initiate a read of requested data in the system memory;
wherein, in performing said access of data in the system memory, the memory controller is operable to provide said requested data to the CPU.
-
43. The system of claim 42, wherein the requested data resides in the system memory in a compressed format;
wherein, in providing said requested data to the CPU, the memory controller is operable to decompress said requested data to produce uncompressed requested data and store the uncompressed requested data in the system memory.
-
44. The system of claim 42, wherein the system further includes:
-
a non-volatile memory coupled to the memory controller, wherein the requested data resides in the non-volatile memory;
wherein, in providing said requested data to the CPU, the memory controller is operable to access said requested data from the non-volatile memory and store said requested data in the system memory.
-
-
45. The system of claim 42, wherein the system further includes:
-
a non-volatile memory coupled to the memory controller, wherein the requested data resides in the non-volatile memory in a compressed format;
wherein, in providing said requested data to the CPU, the memory- controller is operable to access said requested data from the non-volatile memory, decompress the requested data to produce uncompressed requested data, and store said uncompressed requested data in the system memory.
-
-
46. The system of claim 40, wherein the CPU is operable to initiate a write of first data to the system memory;
wherein, in performing said access of data in the system memory, the memory controller is operable to write said first data to the system memory.
-
47. The system of claim 40, wherein the CPU is operable to initiate a write of first data to the system memory;
wherein, in performing said access of data in the system memory, the memory controller is operable to compress the first data to produce compressed first data and write said compressed first data to the system memory.
-
48. The system of claim 39, wherein the system memory stores application data used by the CPU for executing one or more applications;
wherein the data comprises application data.
-
49. The system of claim 39, wherein the system firther includes a display;
-
wherein the system memory stores graphics data used for presenting images on the display;
wherein the data comprises graphics data.
-
-
50. The system of claim 39, wherein the compression/decompression engine comprised in the memory controller is operable to perform a lossless compression on said replacement block of data.
-
51. The system of claim 39, wherein the compression/decompression engine comprised in the memory controller is operable to perform a lossy compression on said replacement block of data.
-
52. The system of claim 39, wherein the replacement block of data comprises a least recently used block of data in the system memory.
-
53. The system of claim 39, wherein the replacement block of data comprises a true least recently used block of data in the system memory.
-
54. The system of claim 39, wherein the replacement block of data comprises a pseudo least recently used block of data in the system memory.
-
55. The system of claim 39, wherein the system comprises a computer system.
-
77. The system of claim 39, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
78. The system of claim 39, wherein the data includes application code and application data.
-
56. A system with improved memory access management, the system comprising;
-
a CPU;
a system memory, wherein the system memory is a volatile memory for storing data, wherein the data includes uncompressed data currently being used for execution by the CPU, wherein the uncompressed data includes most recently used data;
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/decompression engine; and
a non-volatile memory coupled to the memory controller;
wherein, in response to the access, the memory controller is operable to access a replacement block of data in the system memory, compress said replacement block of data, and transfer said compressed replacement block of data to the non-volatile memory, wherein said compression of said replacement block of data and transfer of said compressed replacement block of data to the non-volatile memory operates to free up at least a portion of said system memory. - View Dependent Claims (57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 79, 80)
wherein the CPU is operable to initiate an access of data in the system memory; wherein the memory controller is operable to perform said access of data in the system memory after freeing up said at least a portion of said system memory.
-
-
58. The system of claim 57,
wherein said data is marked as most recently used data. -
59. The system of claim 57, wherein the CPU is operable to initiate a read of requested data in the system memory;
wherein, in performing said access of data in the system memory, the memory controller is operable to provide said requested data to the CPU.
-
60. The system of claim 59, wherein the requested data resides in the system memory in a compressed format;
wherein, in providing said requested data to the CPU, the memory controller is operable to decompress said requested data and store said uncompressed requested data in the system memory.
-
61. The system of claim 59,
wherein the requested data resides in the non-volatile memory; wherein, in providing said requested data to the CPU, the memory controller is operable to access said requested data from the non-volatile memory and store said requested data in the system memory.
-
62. The system of claim 59,
wherein the requested data resides in the non-volatile memory in a compressed format; wherein, in providing said requested data to the CPU, the memory controller is operable to access said requested data from the non-volatile memory, decompress the requested data to produce uncompressed requested data, and store said uncompressed requested data in the system memory.
-
63. The system of claim 57, wherein the CPU is operable to initiate a write of first data to the system memory;
wherein, in performing said access of data in the system memory, the memory controller is operable to write said first data to the system memory.
-
64. The system of claim 57, wherein the CPU is operable to initiate a write of first data to the system memory;
wherein, in performing said access of data in the system memory, the memory controller is operable to compress the first data to produce compressed first data and write said compressed first data to the system memory.
-
65. The system of claim 56, wherein the system memory stores application data used by the CPU for executing one or more applications;
wherein the data comprises application data.
-
66. The system of claim 56, wherein the system further includes a display;
-
wherein the system memory stores graphics data used for presenting images on the display;
wherein the data comprises graphics data.
-
-
67. The system of claim 56, wherein the compression/decompression engine comprised in the memory controller is operable to perform a lossless compression on said replacement block of data.
-
68. The system of claim 56, wherein the compression/decompression engine comprised in the memory controller is operable to perform a lossy compression on said replacement block of data.
-
69. The system of claim 56, wherein the replacement block of data comprises a least recently used block of data in the system memory.
-
70. The system of claim 56, wherein the replacement block of data comprises a true least recently used block of data in the system memory.
-
71. The system of claim 56, wherein the replacement block of data comprises a pseudo least recently used block of data in the system memory.
-
72. The system of claim 56, wherein the system comprises a computer system.
-
79. The system of claim 56, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
80. The system of claim 56, wherein the data includes application code and application data.
Specification