In the latter half of the twentieth century, there began a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, no single device has come to represent the information revolution more than the digital electronic computer. The development of computer systems has surely been a revolution. Each year, computer systems grow faster, store more data, and provide more applications to their users.
A modern computer system typically comprises one or more central processing units (CPUs) and supporting hardware necessary to store, retrieve and transfer information, such as communications buses and memory. It also includes hardware necessary to communicate with the outside world, such as input/output controllers or storage controllers, and devices attached thereto such as keyboards, monitors, tape drives, disk drives, communication lines coupled to a network, etc. The CPU is the heart of the system. It executes the instructions which comprise a computer program and directs the operation of the other system components.
From the standpoint of the computer's hardware, most systems operate in fundamentally the same manner. Processors are capable of performing a limited set of very simple operations, such as arithmetic, logical comparisons, and movement of data from one location to another. But each operation is performed very quickly. Programs which direct a computer to perform massive numbers of these simple operations give the illusion that the computer is doing something sophisticated. What is perceived by the user as a new or improved capability of a computer system is made possible by performing essentially the same set of very simple operations, but doing it much faster. Therefore continuing improvements to computer systems require that these systems be made ever faster.
A computer's CPU operates on data stored in the computer's addressable main memory. The memory stores both the instructions which execute in the processor, and the data which is manipulated by those instructions. In operation, the processor is constantly accessing instructions and other data in memory, without which it is unable to perform useful work. The design of the memory subsystem and speed at which it operates are critical issues in the overall performance of any computer system.
Memory is typically embodied in a set of integrated circuit modules. The time required to access memory is not only a function of the operational speed of the memory modules themselves, but of the speed of the path between the processor and memory. As computers have grown more complex, this path has consumed a larger share of the access time. Early computers had but a single processor and a relatively small memory, making the path between processor and memory relatively direct. Large modern systems typically contain multiple processors, multiple levels of cache, complex addressing mechanisms, and very large main memories to support the data requirements of the system. In these systems, it is simply not possible for direct paths to exist from every processor to every memory module. Complex bus structures support the movement of data among various system components. Often, data must traverse several structures between the processor and the actual memory module. As the number of processors and size of memory grows, these is sues become more acute.
In order to obtain production economies of scale and reduce the cost of computing, integrated circuit memory modules have become a commodity item, having standardized external interfaces, memory capacities, and other parameters. Other computer system components which access memory, such as memory controllers, buses, repeaters, and so forth, are designed to work with these standardized memory chips. Standardization requires that certain aspects of the external interface design be fixed for a period of time, although there may be improvements to internal design. While a design is fixed, technological capabilities as well as product demand in the computer industry will continue to evolve. At some point, this evolution of capabilities and expectations will justify a new generation of memory chips designed to standards more appropriate to the current level of technology and the requirements of the industry.
Design of standardized memory modules can be optimized for any of various computer architectures and uses. It is expected that future demand will be driven largely by high-volume, smaller, general purpose computer systems, such as single-user desktops and laptops, and special-purpose devices, such as game systems, video systems, and so forth, referred to generally as low-end systems. So-called “mainframe” computer systems and other large systems will continue to be manufactured, but they will account for a relatively small proportion of total memory chip demand. It is therefore reasonable to assume that future memory module standards will be driven by the needs of the low-end, high volume market, and will be optimized for use in the devices typical of that market.
If design of future standardized memory modules is optimized for low-end systems, these modules may be inefficient when used in larger systems having different design parameters. It would be possible to design a separate set of memory modules for use in larger systems, but this would lose the economies of scale available in using high-volume, standardized memory modules, and substantially increase the cost of larger systems.
A need exists for improved memory subsystem design techniques which make it possible to use standardized memory modules in a broad range of systems and at the same time meet the operating requirements of different types of systems without undue loss of efficiency.