 | RISC: Encyclopedia II - RISC - Meanwhile...
RISC - Meanwhile...
While the RISC philosophy was coming into its own, new ideas about how to dramatically increase performance of the CPUs were starting to develop.
In the early 1980s it was thought that existing design was reaching theoretical limits. Future improvements in speed would be primarily through improved semiconductor "process", that is, smaller features (transistors and wires) on the chip. The complexity of the chip would remain largely the same, but the smaller size would allow it to run at higher clock rates. A considerable amount of effort was put into designing chips for parallel computing, with built-in communications links. Instead of making faster chips, a large number of chips would be used, dividing up problems among them. However history has shown that the original fears were not valid, and there were a number of ideas that dramatically improved performance in the late 1980s.
One idea was to include a pipeline which would break down instructions into steps, and work on one step of several different instructions at the same time. A normal processor might read an instruction, decode it, fetch the memory the instruction asked for, perform the operation, and then write the results back out. The key to pipelining is the observation that the processor can start reading the next instruction as soon as it finishes reading the last, meaning that there are now two instructions being worked on (one is being read, the next is being decoded), and after another cycle there will be three. While no single instruction is completed any faster, the next instruction would complete right after the previous one. The illusion was of a much faster system, and more efficient utilization of processor resources.
Yet another solution was to use several processing elements inside the processor and run them in parallel. Instead of working on one instruction to add two numbers, these superscalar processors would look at the next instruction in the pipeline and attempt to run it at the same time in an identical unit. However, this can be difficult to do, as many instructions in computing depend on the results of some other instruction.
Both of these techniques relied on increasing speed by adding complexity to the basic layout of the CPU, as opposed to the instructions running on them. With chip space being a finite quantity, in order to include these features something else would have to be removed to make room. RISC was tailor-made to take advantage of these techniques, because the core logic of a RISC CPU was considerably simpler than in CISC designs. Although the first RISC designs had marginal performance, they were able to quickly add these new design features and by the late 1980s they were significantly outperforming their CISC counterparts. In time this would be addressed as process improved to the point where all of this could be added to a CISC design and still fit on a single chip, but this took most of the late-80s and early 90s.
The long and short of it is that for any given level of general performance, a RISC chip will typically have many fewer transistors dedicated to the core logic. This allows the designers considerable flexibility; they can, for instance:
- increase the size of the register set
- implement measures to increase internal parallelism
- increase the size of caches
- add other functionality, like I/O and timers for microcontrollers
- add vector (SIMD) processors like AltiVec and Streaming SIMD Extensions (SSE)
- build the chips on older fabrication lines, which would otherwise go unused
- do nothing; offer the chip for battery-constrained or size-limited applications
Features which are generally found in RISC designs are:
- uniform instruction encoding (for example the op-code is always in the same bit position in each instruction, which is always one word long), which allows faster decoding;
- a homogenous register set, allowing any register to be used in any context and simplifying compiler design (although there are almost always separate integer and floating point register files);
- simple addressing modes (complex addressing modes are replaced by sequences of simple arithmetic instructions);
- few data types supported in hardware (for example, some CISC machines had instructions for dealing with byte strings. Others had support for polynomials and complex numbers. Such instructions are unlikely to be found on a RISC machine).
RISC designs are also more likely to feature a Harvard memory model, where the instruction stream and the data stream are conceptually separated; this means that modifying the addresses where code is held might not have any effect on the instructions executed by the processor (because the CPU has a separate instruction and data cache), at least until a special synchronization instruction is issued. On the upside, this allows both caches to be accessed simultaneously, which can often improve performance.
Many of these early RISC designs also shared a not-so-nice feature, the branch delay slot. A branch delay slot is an instruction space immediately following a jump or branch. The instruction in this space is executed whether or not the branch is taken (in other words the effect of the branch is delayed). This instruction keeps the ALU of the CPU busy for the extra time normally needed to perform a branch. Nowadays the branch delay slot is considered an unfortunate side effect of a particular strategy for implementing some RISC designs, and modern RISC designs generally do away with it (such as PowerPC, more recent versions of SPARC, and MIPS).
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 "Meanwhile...", under the G.N U Free Docmentation License. Please also see http://en.wikipedia.org/wiki |