To appear in the Memory Wall Workshop to be held in conjunction with the 27 th Ann. Int. Sym. On Computer Architecture (ISCA’2000) Vancouver, B.C., June 11, 2000. 1 Operating System Support for Fast Hardware Compression of Main Memory Contents Bulent Abali and Hubertus Franke IBM T.J.Watson Research Center P.O.Box 218, Yorktown Heights, NY 10598 {abali,frankeh}@us.ibm.com Abstract A novel computer system hardware has been built for compressing main memory contents. This presents to the operating systems an expanded real memory larger than the physically available memory. Two to one or better compression ratio has been observed for most applications. As the compression ratio of applications dynamically changes so does the real memory size that is managed by the OS. In this paper, we describe and evaluate the operating system techniques developed for compressed memory systems that can deal with such dynamically changing memory size conditions. 1. Introduction Data compression techniques are extensively used in computer systems to save storage space or bandwidth. Both hardware and software based compression schemes are used for storing data on magnetic media or for transmitting data over network links. While compression techniques are prevalent in various forms, hardware compression of main memory contents has not been used to date. Recent advances in parallel compression- decompression algorithms coupled with improvements in silicon density and speed now makes main memory compression practical [1,2]. A high-end, Pentium based, server class compressed memory hardware has been designed and built at IBM Research [8]. In this paper, we describe and evaluate the operating system principles developed for compressed memory systems. We will often use the term “expanded memory” for the “real memory”, since compression increases the effective memory size and we will use the term “compressed memory” for the “physical memory” backing this expanded memory. Memory footprints of large number of applications show that main memory contents can be compressed by a factor of 2 to 1 or more in most cases. Only few applications’ data, which are already compressed or encrypted, cannot be further compressed. Two to one compression effectively doubles the amount of memory at the same cost, or in cost sensitive applications gives the same amount of memory at ½ the cost. The compressed memory architecture adds one more level to the conventional memory hierarchy. A distinction between “real” and “physical” addresses is made. Real addresses are the conventional memory addresses seen on the processor chip's external bus. Physical addresses are used for addressing the compressed memory. The compressed memory controller chip performs real to physical address translation. Standard operating systems, for example Windows NT and Linux, run on the new architecture with no changes for the most part. However, a boundary condition exists where compressed memory may be exhausted due