How to Make Computer Programs Run Slower?


Christopher E. Lukas and Shubhendu S. Mukherjee


Recent research in computer science has focused on making computers faster. To the best of our knowledge, no research has yet examined how to make computer programs run slower. We plan to investigate this vast, unexplored field.

We believe a synergistic interaction between hardware and software is critical to making computer programs run slower. We are exploring both architectural and compiler techniques to meet this challenge. Our method is no different from traditional research in computer architecture and compilers. We identify key bottlenecks that make computers run faster and suggest radical innovations to make them slower.

The key bottlenecks in a computer are the processor speed and memory density. Fortunately, disks are sufficiently slow and memory speeds are unable to keep up with improvements in processor performance. To slow down processors, we have invented a key processor technology called BLUR (Branch and Loop with Unspeculative Rollback). Several researchers have observed that 90% of a program's execution time is usually spent in 10% of a program. Hence, BLUR identifies critical loops that account for 90% of the execution time and repeatedly executes them. To reduce memory density, we have invented new type of random-access memory called CRAM. CRAM uses a modulated, statistical filter that dynamically evicts portions of data without informing the user. We reduce the cost of CRAM by using a technique called Old Ram Usage (ORU), which uses old, slow, and low capacity RAM chips, instead of the state-of-the-art DRAMs.

To achieve effective slowdown, BLUR must be coupled with new developments in compiler technology. Collectively, we call these Slow-Optimizations (Sloptimizations). To date, we have developed two such Sloptimizations: the BSA (Bad Scheduling Algorithm) and DIM (Data Interlaving in Memory). BSA maximizes instruction latency by scheduling them poorly on BLUR. BSA's key idea is to sequentialize most instructions to avoid hiding any instruction latency. DIM slows down computers by interleaving data into memory in a bit by bit fashion. Consequently, software must reconstruct each byte from its constituent bits that are spread over several CRAM banks.

In summary, we have invented two key hardware techniques---BLUR and CRAM---and two Sloptimizing compiler techniques---BSA and DIM---to run computer programs slower. BLUR is not only slow, but also designed to allow compilers to make it even slower.

Many such other ideas can be readily envisioned, and we believe that our current research will provide a fundamental basis for further investigation into this fascinating field.


Copyright © 1997 by Christopher E. Lukas and Shubhendu S. Mukherjee. All rights reserved.