17.01.2013 Views

MIPS R10000 Microprocessor User's Manual - SGI TechPubs Library

MIPS R10000 Microprocessor User's Manual - SGI TechPubs Library

MIPS R10000 Microprocessor User's Manual - SGI TechPubs Library

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

20 Chapter 1.<br />

1.7 Implications of <strong>R10000</strong> Microarchitecture on Software<br />

Superscalar Instruction Issue<br />

The <strong>R10000</strong> processor implements the <strong>MIPS</strong> architecture by using the following<br />

techniques to improve throughput:<br />

• superscalar instruction issue<br />

• speculative execution<br />

• non-blocking caches<br />

These microarchitectural techniques have special implications for compilation and<br />

code scheduling.<br />

The <strong>R10000</strong> processor has parallel functional units, allowing up to four<br />

instructions to be fetched and up to five instructions to be issued or completed<br />

each cycle. An ideal code stream would match the fetch bandwidth of the<br />

processor with a mix of independent instructions to keep the functional units as<br />

busy as possible.<br />

To create this ideal mix, every cycle the hardware would select one instruction<br />

from each of the columns below. (Floating-point divide, floating-point square<br />

root, integer multiply and integer divide cannot be started on each cycle.) The<br />

processor can look ahead in the code, so the mix should be kept close to the ideal<br />

described below.<br />

Column A Column B Column C Column D Column E<br />

FPadd FP mul FPload add/sub add/sub<br />

FPdiv FPstore shift mul<br />

FPsqrt load branch div<br />

store logical logical<br />

Data dependencies are detected in hardware, but limit the degree of parallelism<br />

that can be achieved. Compilers can intermix instructions from independent code<br />

streams.<br />

Version 2.0 of January 29, 1997 <strong>MIPS</strong> <strong>R10000</strong> <strong>Microprocessor</strong> <strong>User's</strong> <strong>Manual</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!