Memory Systems: Cache, DRAM, Disk

Computers are used for work, entertainment, information distribution, financial services, and numerous other tasks. Different applications exhibit different tolerances for the integrity of the data being processed: for example, a floating -point error in a bank account record is not considered acceptable, whereas a handful of odd-colored pixels in the middle of a video stream might go completely unnoticed by the user and have no effect at all. In data-critical applications such as financial databases or electronic commerce, it is imperative that the data's integrity be assured; otherwise, information can become corrupted silently and propagated widely. Accordingly, server systems used in data-critical applications typically ensure the integrity of their memory at all stages: in the register file, in the caches, in the DRAM system, and in the disk system.
Data failures can be attributed to flaws in the operating system or application software; electronic noises that are transient and unpredictable in nature; electrostatic shock, or electro-mechanical as well as mechanical failures in a subsystem of the computer. Many failures will happen to data words that go unused or are written over before being read. Many failures occur in the low-order bits of large numbers and, even if used in a computation, are not mathematically significant; thus, they do not affect the final result. Nonetheless, systems that must ensure the integrity of their data take the conservative stance of protecting against all possible failures, even if many are actually benign. As has already been seen in previous chapters, such as...