Memory controller including compression/decompression capabilities for improved data access
First Claim
1. 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;
the CPU requesting data from the system memory, wherein the requested data resides in the non-volatile memory and does not reside in the system memory;
the memory controller receiving the request for data;
the memory controller requesting the data from the non-volatile memory in response to the memory controller receiving the request for data and in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
transferring the compressed data from the non-volatile memory to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
the memory controller decompressing the compressed data received from the non-volatile memory to produce uncompressed data; and
the memory controller providing the uncompressed data to the CPU after the memory controller decompressing the compressed 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.
347 Citations
89 Claims
-
1. 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;
the CPU requesting data from the system memory, wherein the requested data resides in the non-volatile memory and does not reside in the system memory;
the memory controller receiving the request for data;
the memory controller requesting the data from the non-volatile memory in response to the memory controller receiving the request for data and in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
transferring the compressed data from the non-volatile memory to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
the memory controller decompressing the compressed data received from the non-volatile memory to produce uncompressed data; and
the memory controller providing the uncompressed data to the CPU after the memory controller decompressing the compressed data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
the memory controller providing the uncompressed data to the system memory after the memory controller decompressing the compressed data.
-
-
3. The method of claim 2, wherein the memory controller providing the uncompressed data to the CPU occurs contemporaneously with the memory controller providing the uncompressed data to the system memory.
-
4. The method of claim 2, wherein the memory controller provides the uncompressed data to the CPU after the memory controller provides the uncompressed data to the system memory.
-
5. The method of claim 1, further comprising
the memory controller determining that the requested data resides in the non-volatile memory and does not reside in the system memory in response to the memory controller receiving the request for data; wherein the memory controller requests the data from the non-volatile memory in response to the memory controller determining that the requested data resides in the non-volatile memory.
-
6. The method of claim 1, further comprising:
-
the memory controller accessing uncompressed data from the system memory;
the memory controller compressing said uncompressed data to produce compressed data after said accessing;
the memory controller providing said compressed data to the non-volatile memory; and
the non-volatile memory storing said compressed data.
-
-
7. The method of claim 1, wherein the compressed data is transferred from the non-volatile memory through one or more buses to the memory controller in the compressed format.
-
8. The method of claim 1, wherein the data comprises CPU application data.
-
9. The method of claim 1, further comprising:
marking the uncompressed data as most recently used data.
-
10. The method of claim 1, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
11. The method of claim 1, wherein the data includes application code and application data.
-
12. A method for managing data accesses in a system including a CPU, a system memory for storing 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;
the CPU requesting data from the system memory;
the memory controller receiving the request for data;
the memory controller accessing the data from the system memory in response to the memory controller receiving the request for data, wherein the data comprises compressed data stored in the system memory in a compressed format;
the memory controller decompressing the compressed data received from the system memory to produce uncompressed data; and
the memory controller providing the uncompressed data to the CPU after the memory controller decompressing the compressed data. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21)
the memory controller providing the uncompressed data to the system memory after the memory controller decompressing the compressed data.
-
-
14. The method of claim 13, wherein the memory controller providing the uncompressed data to the CPU occurs contemporaneously with the memory controller providing the uncompressed data to the system memory.
-
15. The method of claim 13, wherein the memory controller provides the uncompressed data to the CPU after the memory controller provides the uncompressed data to the system memory.
-
16. The method of claim 12, further comprising
the memory controller determining that the requested data resides in the system memory in a compressed format after the memory controller receiving the request for data; wherein the memory controller accesses the compressed data from the system memory and decompresses the compressed data in response to the memory controller determining that the requested data resides in the system memory in a compressed format.
-
17. The method of claim 12, further comprising:
-
the memory controller accessing uncompressed data from the system memory;
the memory controller compressing said uncompressed data to produce compressed data after said accessing; and
the memory controller storing said compressed data in the system memory.
-
-
18. The method of claim 12, wherein the data comprises CPU application data.
-
19. The method of claim 12, further comprising:
marking the uncompressed data as most recently used data.
-
20. The method of claim 12, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
21. The method of claim 12, wherein the data includes application code and application data.
-
22. A computer system including a memory controller having an embedded hardware compression/decompression engine, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, 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;
a memory controller coupled to the system memory and to the CPU, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression/decompression engine for compressing and/or decompressing data transferred to or from said system memory;
a non-volatile memory for storing data, wherein the non-volatile memory is coupled to the memory controller;
wherein 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;
wherein the CPU is operable to request data from the system memory, wherein the requested data resides in the non-volatile memory and does not reside in the system memory;
wherein the memory controller is operable to;
receive the request of the data;
request the data from the non-volatile memory in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
wherein the non-volatile memory is operable to transfer the compressed data to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
wherein the memory controller is further operable to;
decompress the compressed data received from the non-volatile memory to produce uncompressed data; and
provide the uncompressed data to the CPU after the memory controller decompresses the compressed data. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
wherein the memory controller is further operable to determine that the requested data resides in the non-volatile memory and does not reside in the system memory in response to the memory controller receiving the request for data; wherein the memory controller requests the data from the non-volatile memory in response to the memory controller determining that the requested data resides in the non-volatile memory.
-
-
27. The computer system of claim 22, wherein the memory controller is further operable to:
-
access uncompressed data from the system memory;
compress said uncompressed data to produce compressed data after said accessing; and
provide said compressed data to the non-volatile memory; and
wherein the non-volatile memory is operable to store said compressed data.
-
-
28. The computer system of claim 22, further comprising:
-
one or more buses coupled between the non-volatile memory and the system memory;
wherein the compressed data is transferred from the non-volatile memory through one or more buses to the memory controller in the compressed format.
-
-
29. The computer system of claim 22, wherein the data comprises CPU application data.
-
30. The computer system of claim 22, wherein the uncompressed data is operable to be marked as most recently used data.
-
31. The computer system of claim 22, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
32. The computer system of claim 22, wherein the data includes application code and application data.
-
33. A computer system including a memory controller having an embedded hardware compression/decompression engine, the computer system comprising:
-
a CPU;
system memory, wherein the system memory is a volatile memory which stores data used by said CPU for executing one or more applications, 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 system memory and to the CPU, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a compression/decompression engine for compressing and/or decompressing data transferred to or from said system memory;
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 the system memory, wherein said compression of said replacement block of data and storage of said compressed replacement block of data in the system memory operates to free up at least a portion of the system memory;
wherein the CPU is operable to request data from the system memory;
wherein the memory controller is operable to;
receive the request for the data;
access the requested data from the system memory in response to the memory controller receiving the request for the data, wherein the data comprises compressed data stored in the system memory in a compressed format;
decompress the compressed data received from the system memory to produce uncompressed data; and
provide the uncompressed data to the CPU. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42)
wherein the memory controller is further operable to provide the uncompressed data to the system memory after the memory controller decompresses the compressed data. -
35. The computer system of claim 34, wherein the memory controller provides the uncompressed data to the CPU contemporaneously with the memory controller providing the uncompressed data to the system memory.
-
36. The computer system of claim 34, wherein the memory controller provides the uncompressed data to the CPU after the memory controller provides the uncompressed data to the system memory.
-
37. The computer system of claim 33, wherein the memory controller is further operable to determine that the requested data resides in the system memory in a compressed format after the memory controller receives the request for data;
wherein the memory controller accesses the compressed data from the system memory and decompresses the compressed data in response to the memory controller determining that the requested data resides in the system memory in a compressed format.
-
38. The computer system of claim 33, wherein the memory controller is operable to:
-
access uncompressed data from the system memory;
compress said uncompressed data to produce compressed data after said access; and
store said compressed data in the system memory.
-
-
39. The computer system of claim 33, wherein the data comprises CPU application data.
-
40. The computer system of claim 33, wherein the uncompressed data is operable to be marked as most recently used data.
-
41. The computer system of claim 33, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
42. The computer system of claim 33, wherein the data includes application code and application data.
-
-
43. A memory controller, comprising:
-
an embedded hardware compression/decompression engine for compressing and decompressing data; and
memory control logic operable to couple to a system memory for controlling access to 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;
wherein the memory controller is operable to;
compress a replacement block of data;
transfer the compressed replacement block to a non-volatile memory for storage after compressing the replacement block of data;
wherein said compression of the replacement block of data and transfer of the compressed replacement block of data to the non-volatile memory operates to free up at least a portion of the system memory;
wherein the memory controller is further operable to;
receive a request of data;
determine that the requested data does not reside in the system memory;
request the data from the non-volatile memory in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
receive the compressed data from the non-volatile memory in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is received by the memory controller in the compressed format;
decompress the compressed data received from the non-volatile memory to produce uncompressed data; and
provide the uncompressed data in response to the request. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50, 51, 52)
wherein the memory controller receives the request from a requestor; wherein the memory controller provides the uncompressed data to the requestor in response to the request.
-
-
45. The memory controller of claim 44,
wherein the memory controller is further operable to provide the uncompressed data to the system memory after the memory controller decompresses the compressed data. -
46. The memory controller of claim 45, wherein the memory controller provides the uncompressed data to the requestor contemporaneously with the memory controller providing the uncompressed data to the system memory.
-
47. The memory controller of claim 45, wherein the memory controller provides the uncompressed data to the requestor after the memory controller provides the uncompressed data to the system memory.
-
48. The memory controller of claim 43, wherein the memory controller is further operable to:
-
access uncompressed data from the system memory;
compress said uncompressed data to produce compressed data after said accessing; and
provide said compressed data to the non-volatile memory.
-
-
49. The memory controller of claim 43, wherein the memory controller is a system memory controller comprised in a computer system for controlling system memory functions of the computer system.
-
50. The memory controller of claim 43, wherein the memory controller is further operable to mark the uncompressed data as most recently used data.
-
51. The memory controller of claim 43, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
52. The memory controller of claim 43, wherein the data includes application code and application data.
-
53. A memory controller, comprising:
-
an embedded hardware compression/decompression engine for compressing and decompressing data; and
memory control logic operable to couple to a system memory for controlling access to 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;
wherein the memory controller is operable to;
compress a replacement block of data;
store the compressed replacement block of data in the system memory after compression of the replacement block of data;
wherein said compression of the replacement block of data and storage of the compressed replacement block of data in the system memory operates to free up at least a portion of the system memory;
wherein the memory controller is further operable to;
receive a request for data, wherein the requested data comprises compressed data stored in the system memory in a compressed format;
determine that the requested data resides in the system memory in a compressed format;
access the compressed data from the system memory in response to the request;
decompress the compressed data received from the system memory to produce uncompressed data; and
provide the uncompressed data to a CPU. - View Dependent Claims (54, 55, 56, 57, 58, 59, 60, 61, 62)
wherein the memory controller receives the request from a requestor; wherein the memory controller provides the uncompressed data to the requestor in response to the request.
-
-
55. The memory controller of claim 54,
wherein the memory controller is further operable to provide the uncompressed data to the system memory after the memory controller decompresses the compressed data. -
56. The memory controller of claim 55, wherein the memory controller provides the uncompressed data to the requester contemporaneously with the memory controller providing the uncompressed data to the system memory.
-
57. The memory controller of claim 55, wherein the memory controller provides the uncompressed data to the requester after the memory controller provides the uncompressed data to the system memory.
-
58. The memory controller of claim 53, wherein the memory controller further operable to:
-
access uncompressed data from the system memory;
compress said uncompressed data to produce compressed data after said accessing; and
store said compressed data in the system memory.
-
-
59. The memory controller of claim 53, wherein the memory controller is a system memory controller comprised in a computer system for controlling system memory functions of the computer system.
-
60. The memory controller of claim 53, wherein the memory controller is further operable to mark the uncompressed data as most recently used data.
-
61. The memory controller of claim 53, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
62. The memory controller of claim 53, wherein the data includes application code and application data.
-
63. 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 useable for execution by the CPU;
the hardware compression engine in 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;
the CPU requesting data from the system memory, wherein the data being requested resides in the non-volatile memory and does not reside in the system memory;
the memory controller receiving the request for data;
the memory controller requesting the data from the non-volatile memory in response to the memory controller receiving the request for data and in response to the data not residing in the system memory, wherein the data being requested comprises compressed data stored in the non-volatile memory in a compressed format;
transferring the compressed data from the non-volatile memory to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
the decompression engine in the memory controller decompressing the compressed data received from the non-volatile memory to produce uncompressed data; and
the memory controller providing the uncompressed data to the CPU after the memory controller decompressing the compressed data. - View Dependent Claims (64, 65, 66, 67, 68, 69, 70, 71, 72)
the memory controller providing the uncompressed data to the system memory after the memory controller decompressing the compressed data.
-
-
65. The method of claim 64, wherein the memory controller providing the uncompressed data to the CPU occurs contemporaneously with the memory controller providing the uncompressed data to the system memory.
-
66. The method of claim 64, wherein the memory controller provides the uncompressed data to the CPU after the memory controller provides the uncompressed data to the system memory.
-
67. The method of claim 63, further comprising
the memory controller determining that the data being requested resides in the non-volatile memory and does not reside in the system memory in response to the memory controller receiving the request for data; wherein the memory controller requests the data from the non-volatile memory in response to the memory controller determining that the data being requested resides in the non-volatile memory.
-
68. The method of claim 63, wherein the data being requested comprises the replacement block of data.
-
69. The method of claim 63, wherein the compressed data is transferred from the non-volatile memory through one or more buses to the memory controller in the compressed format.
-
70. The method of claim 63, further comprising:
marking the uncompressed data as most recently used data.
-
71. The method of claim 63, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
72. The method of claim 63, wherein the data includes application code and/or application data.
-
73. 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:
-
the memory controller accessing first uncompressed data from the system memory;
the memory controller compressing said first uncompressed data to produce first compressed data after said accessing;
the memory controller providing said first compressed data to the non-volatile memory; and
the non-volatile memory storing said first compressed data;
wherein said compressing said first uncompressed data and providing said first compressed data to the non-volatile memory operates to free up at least a portion of said system memory;
the CPU requesting data from the system memory, wherein the requested data resides in the non-volatile memory and does not reside in the system memory;
the memory controller receiving the request for data;
the memory controller requesting the data from the non-volatile memory in response to the memory controller receiving the request for data and in response to the data not residing in the system memory, wherein the data being requested comprises second compressed data stored in the non-volatile memory in a compressed format;
transferring the second compressed data from the non-volatile memory to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the second compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
the memory controller decompressing the second compressed data received from the non-volatile memory to produce second uncompressed data; and
the memory controller providing the second uncompressed data to the CPU after the memory controller decompressing the second compressed data. - View Dependent Claims (74, 75, 76)
wherein the CPU requesting data from the system memory comprises the CPU requesting the first uncompressed data from the system memory; wherein the second uncompressed data is the first uncompressed data; and
wherein the second compressed data is the first compressed data.
-
-
75. The method of claim 73, further comprising:
the memory controller providing the second uncompressed data to the system memory after the memory controller decompressing the second compressed data.
-
76. The method of claim 73,
wherein the system memory stores least recently used data in the system memory in a compressed format.
-
77. A computer system including a memory controller having an embedded hardware compression/decompression engine, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory is a volatile memory which stores data least recently used by the CPU in a compressed format;
a memory controller coupled to the system memory and to the CPU, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression/decompression engine for compressing and/or decompressing data transferred to or from said system memory;
a non-volatile memory for storing data, wherein the non-volatile memory is coupled to the memory controller;
wherein the memory controller is operable to access a replacement block of data, 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 more efficiently use said system memory;
wherein the CPU is operable to request data from the system memory, wherein the requested data resides in the non-volatile memory and does not reside in the system memory;
wherein the memory controller is operable to;
receive the request of the data;
request the data from the non-volatile memory in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
wherein the non-volatile memory is operable to transfer the compressed data to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
wherein the memory controller is further operable to;
decompress the compressed data received from the non-volatile memory to produce uncompressed data; and
provide the uncompressed data to the CPU after the memory controller decompresses the compressed data. - View Dependent Claims (78, 79, 80)
one or more buses coupled between the non-volatile memory and the system memory;
wherein the compressed data is transferred from the non-volatile memory through one or more buses to the memory controller in the compressed format.
-
-
80. The computer system of claim 77, wherein the uncompressed data is operable to be marked as most recently used data.
-
81. A computer system including a memory controller having an embedded hardware compression/decompression engine, the computer system comprising:
-
a CPU;
system memory which stores data used by said CPU for executing one or more applications, wherein the system memory is a volatile memory which stores data least recently used by the CPU in a compressed format;
a memory controller coupled to the system memory and to the CPU, wherein the memory controller performs memory control functions for the system memory, wherein the memory controller includes a hardware compression/decompression engine for compressing and/or decompressing data transferred to or from said system memory;
a non-volatile memory for storing data, wherein the non-volatile memory is coupled to the memory controller;
wherein the memory controller is operable to access uncompressed data, compress said uncompressed data to produce compressed data after said accessing, and provide said compressed 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 more efficiently use said system memory;
wherein the CPU is operable to request data from the system memory, wherein the requested data resides in the non-volatile memory and does not reside in the system memory;
wherein the memory controller is operable to;
receive the request of the data;
the data from the non-volatile memory in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
wherein the non-volatile memory is operable to transfer the compressed data to the memory controller in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is transferred from the non-volatile memory to the memory controller in the compressed format;
wherein the memory controller is further operable to;
decompress the compressed data received from the non-volatile memory to produce uncompressed data; and
provide the uncompressed data to the CPU after the memory controller decompresses the compressed data.
-
-
82. A memory controller, comprising:
-
a hardware compression/decompression engine for compressing and decompressing data; and
memory control logic operable to couple to a system memory for controlling access to the system memory, wherein the system memory is a volatile memory which stores data useable for execution by the CPU, wherein the system memory stores least recently used data in a compressed format;
wherein the memory controller is operable to;
compress a replacement block of data;
transfer the compressed replacement block to a non-volatile memory for storage after compressing the replacement block of data;
wherein said compression of the replacement block of data and transfer of the compressed replacement block of data to the non-volatile memory operates to free up at least a portion of the system memory;
wherein the memory controller is further operable to;
receive a request of data;
determine that the requested data does not reside in the system memory;
request the data from the non-volatile memory in response to the data not residing in the system memory, wherein the data comprises compressed data stored in the non-volatile memory in a compressed format;
receive the compressed data from the non-volatile memory in response to the memory controller requesting the data from the non-volatile memory, wherein the compressed data is received by the memory controller in the compressed format;
decompress the compressed data received from the non-volatile memory to produce uncompressed data; and
provide the uncompressed data in response to the request. - View Dependent Claims (83, 84, 85, 86, 87, 88, 89)
wherein the memory controller receives the request from a requestor; wherein the memory controller provides the uncompressed data to the requestor in response to the request.
-
-
84. The memory controller of claim 83,
wherein the memory controller is further operable to provide the uncompressed data to the system memory after the memory controller decompresses the compressed data. -
85. The memory controller of claim 84, wherein the memory controller provides the uncompressed data to the requestor after the memory controller provides the uncompressed data to the system memory.
-
86. The memory controller of claim 82, wherein the memory controller is a system memory controller comprised in a computer system for controlling system memory functions of the computer system.
-
87. The memory controller of claim 82, wherein the memory controller is further operable to mark the uncompressed data as most recently used data.
-
88. The memory controller of claim 82, wherein the memory controller comprises a hardware compression engine and a hardware decompression engine.
-
89. The memory controller of claim 82, wherein the data includes application code and application data.
Specification