 | RISC: Encyclopedia II - RISC - RISC design philosophy
RISC - RISC design philosophy
In the late 1970s research at IBM (and similar projects elsewhere) demonstrated that the majority of these "orthogonal" addressing modes were ignored by most programs. This was a side effect of the increasing use of compilers to generate the programs, as opposed to writing them in assembly language. The compilers in use at the time only had a limited ability to take advantage of the features provided by CISC CPUs; this was largely a result of the difficulty of writing a compiler. The market was clearly moving to even wider use of compilers, diluting the usefulness of these orthogonal modes even more.
Another discovery was that since these operations were rarely used, in fact they tended to be slower than a number of smaller operations doing the same thing. This seeming paradox was a side effect of the time spent designing the CPUs, designers simply did not have time to tune every possible instruction, and instead tuned only the most used ones. One famous example of this was the VAX's INDEX instruction, which ran slower than a loop implementing the same code.
At about the same time CPUs started to run even faster than the memory they talked to. Even in the late 1970s it was apparent that this disparity was going to continue to grow for at least the next decade, by which time the CPU would be tens to hundreds of times faster than the memory. It became apparent that more registers (and later caches) would be needed to support these higher operating frequencies. These additional registers and cache memories would require sizeable chip or board areas that could be made available if the complexity of the CPU was reduced.
Yet another part of RISC design came from practical measurements on real-world programs. Andrew Tanenbaum summed up many of these, demonstrating that most processors were vastly overdesigned. For instance, he showed that 98% of all the constants in a program would fit in 13 bits, yet almost every CPU design dedicated some multiple of 8 bits to storing them, typically 8, 16 or 32, one entire word. Taking this fact into account suggests that a machine should allow for constants to be stored in unused bits of the instruction itself, decreasing the number of memory accesses. Instead of loading up numbers from memory or registers, they would be "right there" when the CPU needed them, and therefore much faster. However this required the instruction itself to be very small, otherwise there would not be enough room left over in the 32-bits to hold reasonably sized constants.
It was the small number of addressing modes and commands that resulted in the term Reduced Instruction Set. This is not an accurate terminology, as RISC designs often have huge command sets of their own. The real difference is the philosophy of doing everything in registers and loading and saving the data to and from them. This is why the design is more properly referred to as load-store. Over time the older design technique became known as Complex Instruction Set Computer, or CISC, although this was largely to give them a different name for comparison purposes.
Thus the RISC philosophy was to make smaller instructions, implying fewer of them, and thus the name "reduced instruction set". Code was implemented as a series of these simple instructions, instead of a single complex instruction that had the same result. This had the side effect of leaving more room in the instruction to carry data with it, meaning that there was less need to use registers or memory. At the same time the memory interface was considerably simpler, allowing it to be tuned.
However RISC also had its drawbacks. Since a series of instructions is needed to complete even simple tasks, the total number of instructions read from memory is larger, and therefore takes longer. At the time it was not clear whether or not there would be a net gain in performance due to this limitation, and there was an almost continual battle in the press and design world about the RISC concepts.
Other related archives29000, 4-letter acronyms, 6502, 68000, 8086, 88000, ALU, AMD, ARM, AS/400, Acorn Archimedes, Advanced RISC Machine, AltiVec, Andrew Tanenbaum, Apple Macintosh, CDC 6600, CISC, CPU, CPU design, Classic RISC pipeline, Complex Instruction Set Computer, Computer architecture, Computing acronyms, DARPA, DEC Alpha, Data General Nova, David Patterson, Freescale, Game Boy Advance, Gamepark, HP/PA, Harvard memory model, Hewlett-Packard, IBM, IBM 801, IBM RT-PC, INMOS Transputer, Intel, John L. Hennessy, MIPS, MIPS Computer Systems, Microsoft, Motorola, Nintendo, Nintendo 64, Nintendo DS, PA-RISC, POWER, Palm, Inc., PlayStation, PlayStation 3, PowerPC, Pyramid Technology, R2000, RNA-induced silencing complex, Revolution, SGI, SIMD, SPARC, SPECfp, SPECint, Seymour Cray, Sony, Stanford University, Streaming SIMD Extensions, Sun, Sun Microsystems, UC Berkeley, UK, UltraSPARC, VAX, VLSI, Xbox 360, ZISC, Zilog Z80, addressing mode, addressing modes, assembly language, battery, bits, branch delay slot, byte, cache, caches, compiler, compilers, complex numbers, computer architecture, embedded processors, floating point, game consoles, i860, i960, iSeries, instruction set architecture, instructions, integer, machine code, memory, memory access, microcontrollers, microprocessor, minicomputer, paradox, parallel computing, pipeline, programs, proprietary, register windows, registers, semiconductor, strings, supercomputer, superscalar, transistors, word, workstation, x86, x86-64
 Adapted from the Wikipedia article "RISC design philosophy", under the G.N U Free Docmentation License. Please also see http://en.wikipedia.org/wiki |