Systems and methods for masking latency of memory reorganization work in a compressed memory system
First Claim
Patent Images
1. A computer system, comprising:
- a main memory comprising first and second memory regions having different access characteristics;
a memory controller to manage the main memory and to allow access to stored data items in the main memory, wherein the memory controller implements a memory reorganization process comprising an execution flow of process steps for accessing a data item that is stored in one of the first or second memory region, and storing the accessed data item in the other one of the first or second memory region; and
a local buffer memory operated under control of the memory controller to temporarily buffer data items to be written to the main memory and data items read from the main memory during the memory reorganization process,wherein the memory controller temporarily suspends the execution flow of the memory reorganization process between process steps, if necessary, according to a priority schedule, and utilizes the local buffer memory to temporarily store data that is to be processed when the memory reorganization process is resumed.
1 Assignment
0 Petitions
Accused Products
Abstract
Computer memory management systems and methods are provided in which data block buffering and priority scheduling protocols are utilized in compressed memory systems to mask the latency associated with memory reorganization work following access to compressed main memory. In particular, data block buffers and priority scheduling protocols are implemented to delay and prioritize memory reorganization work to allow resources to be used for serving new memory access requests and other high priority commands.
-
Citations
25 Claims
-
1. A computer system, comprising:
-
a main memory comprising first and second memory regions having different access characteristics; a memory controller to manage the main memory and to allow access to stored data items in the main memory, wherein the memory controller implements a memory reorganization process comprising an execution flow of process steps for accessing a data item that is stored in one of the first or second memory region, and storing the accessed data item in the other one of the first or second memory region; and a local buffer memory operated under control of the memory controller to temporarily buffer data items to be written to the main memory and data items read from the main memory during the memory reorganization process, wherein the memory controller temporarily suspends the execution flow of the memory reorganization process between process steps, if necessary, according to a priority schedule, and utilizes the local buffer memory to temporarily store data that is to be processed when the memory reorganization process is resumed. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A compressed memory system, comprising:
-
a processor, a first cache associated with the processor, a memory controller associated with the cache, a plurality of block buffers associated with the memory controller; and a storage unit associated with the memory controller, the storage unit comprising an uncompressed memory portion for storing uncompressed data and a compressed memory portion for storing compressed data; wherein each of the plurality of block buffers can store compressed data read from the compressed memory portion, or store uncompressed data read from the uncompressed memory portion; wherein the memory controller can decompress the compressed data in the each of the plurality of block buffers to generate decompressed data, and write buffered decompressed data to the uncompressed memory portion; wherein the memory controller can compress uncompressed data to generate buffered compressed data and write the buffered compressed data to the compressed memory portion. - View Dependent Claims (18, 19, 20, 21, 22, 23)
-
-
24. A method of storing and retrieving compressed data in a compressed memory system, the compressed memory system comprising a processor, a cache associated with the processor, a memory controller associated with the cache, a storage unit associated with the memory controller, and a plurality of block buffers associated with the memory controller, the storage unit comprising an uncompressed memory portion and a compressed memory portion, the method comprising the steps of:
-
reading a first compression translation table (CTT) entry for a block of compressed data; reading the block of compressed data from the compressed memory portion of the storage unit based on the first CTT entry; storing the read block of compressed data in a first of the plurality of block buffers; decompressing the stored block of compressed data; writing the decompressed block of compressed data to the uncompressed memory portion of the storage unit; reading a second CTT entry for a block of uncompressed data; reading the block of uncompressed data from the uncompressed memory portion of the storage unit based on the second CTT entry; storing the read block of uncompressed data in a second of the plurality of block buffers; compressing the stored block uncompressed data; and writing the compressed block of uncompressed data to the compressed memory portion of the storage unit.
-
-
25. A method of storing and retrieving compressed data in a compressed memory system, the compressed memory system comprising a processor, a cache associated with the processor, a memory controller associated with the cache, a storage unit associated with the memory controller, and a plurality of block buffers associated with the memory controller, the storage unit comprising an uncompressed memory portion and a compressed memory portion, the method comprising the steps of:
-
reading a first compression translation table (CTT) entry for a block of compressed data; reading the block of compressed data from the compressed memory portion of the storage unit based on the first CTT entry; decompressing the read block of compressed data; storing the decompressed block of compressed data in a first of the plurality of block buffers; writing the decompressed block of compressed data from the first of the plurality of block buffers to the uncompressed memory portion of the storage unit; reading a second CTT entry for a block of uncompressed data; reading the block of uncompressed data from the uncompressed memory portion of the storage unit based on the second CTT entry; compressing the read block uncompressed data; storing the compressed block of uncompressed data in a second of the plurality of block buffers; and writing the compressed block of uncompressed data from the second of the plurality of block buffers to the compressed memory portion of the storage unit.
-
Specification