Hubbry Logo
R10000R10000Main
Open search
R10000
Community hub
R10000
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
R10000
R10000
from Wikipedia
NEC VR10000.

The R10000, code named T5, is a RISC microprocessor implementation of the MIPS IV instruction set architecture (ISA) developed by MIPS Technologies, Inc. (MTI), then a division of Silicon Graphics, Inc. (SGI). The chief designers are Chris Rowen and Kenneth C. Yeager. The R10000 microarchitecture is known as ANDES, an abbreviation for Architecture with Non-sequential Dynamic Execution Scheduling. The R10000 largely replaces the R8000 in the high-end and the R4400 elsewhere. MTI was a fabless semiconductor company; the R10000 was fabricated by NEC and Toshiba. Previous fabricators of MIPS microprocessors such as Integrated Device Technology (IDT) and three others did not fabricate the R10000 as it was more expensive to do so than the R4000 and R4400.

History

[edit]

Described in press reports during 1992 as MIPS Computer Systems' "next generation RISC part", the R10000 was originally scheduled for delivery in 1994 and intended to form the basis of a family of products, each of which requiring substantially less development effort to bring to market than the core technology itself while incrementally improving performance.[1] During 1993, MIPS Technologies sought to bring its licencees' resources to bear on the design of the R10000 and related products, with MIPS, Integrated Device Technology, LSI Logic, NEC, Performance Semiconductor, Siemens and Toshiba collectively planning to invest a reported $150 million in this next generation.[2] The R10000 was eventually unveiled in October 1994 by MIPS and its silicon partners NEC and Toshiba, emphasising the product's potential applications in multiprocessing and massively parallel configurations, and claiming a projected performance of 300 SPECint92, 600 SPECfp92 at 200 MHz.[3]

The R10000 was introduced in July 1995 at clock frequencies of 175 MHz and 195 MHz. A 150 MHz version was introduced in the O2 product line in 1997, but discontinued shortly after due to customer preference for the 175 MHz version. The R10000 was not available in large volumes until later in the year due to fabrication problems at MIPS's foundries. The 195 MHz version was in short supply throughout 1996, and was priced at US$3,000 as a result.[4]

On 25 September 1996, SGI announced that R10000s fabricated by NEC between March and the end of July that year were faulty, drawing too much current and causing systems to shut down during operation. SGI recalled 10,000 R10000s that had shipped in systems as a result, which impacted the company's earnings.

In 1997, a version of R10000 fabricated in a 0.25 μm process enabled the microprocessor to reach 250 MHz.

Users

[edit]

Users of the R10000 include:

Description

[edit]
NEC VR10000 die shot.

The R10000 is a four-way superscalar design that implements register renaming and executes instructions out-of-order. Its design is a departure from previous MTI microprocessors such as the R4000, which is a much simpler scalar in-order design that relies largely on high clock rates for performance.

The R10000 fetches four instructions every cycle from its instruction cache. These instructions are decoded and then placed into the integer, floating-point or load/store instruction queues depending on the type of the instruction. The decode unit is assisted by the pre-decoded instructions from the instruction cache, which append five bits to every instruction to enable the unit to quickly identify which execution unit the instruction is executed in, and rearrange the format of the instruction to optimize the decode process.

Each of the instruction queues can accept up to four instructions from the decoder, avoiding any bottlenecks. The instruction queues issue their instructions to their execution units dynamically depending on the availability of operands and resources. Each of the queues except for the load/store queue can issue up to two instructions every cycle to its execution units. The load/store queue can only issue one instruction. The R10000 can thus issue up to five instructions every cycle.

Integer unit

[edit]

The integer unit consists of the integer register file and three pipelines, two integer, one load store. The integer register file is 64 bits wide and contains 64 entries, of which 32 are architectural registers and 32 are rename registers which implement register renaming. The register file has seven read ports and three write ports. Both integer pipelines have an adder and a logic unit. However, only the first pipeline has a barrel shifter and hardware for confirming the prediction of conditional branches. The second pipeline is used to access the multiplier and divider. Multiplies are pipelined, and have a six-cycle latency for 32-bit integers and ten for 64-bit integers. Division is not pipelined. The divider uses a non-restoring algorithm that produces one bit per cycle. Latencies for 32-bit and 64-bit divides are 35 and 67 cycles, respectively.

Floating-point unit

[edit]

The floating-point unit (FPU) consists of four functional units, an adder, a multiplier, divide unit and square root unit. The adder and multiplier are pipelined, but the divide and square root units are not. Adds and multiplies have a latency of three cycles and the adder and multiplier can accept a new instruction every cycle. The divide unit has a 12- or 19-cycle latency, depending on whether the divide is single precision or double precision, respectively.

The square root unit executes square root and reciprocal square root instructions. Square root instructions have an 18- or 33-cycle latency for single precision or double precision, respectively. A new square root instruction can be issued to the divide unit every 20 or 35 cycles for single precision and double precision respectively. Reciprocal square roots have longer latencies, 30 to 52 cycles for single precision (32-bit) and double precision (64-bit) respectively.

The floating-point register file contains sixty-four 64-bit registers, of which thirty-two are architectural and the remaining are rename registers. The adder has its own dedicated read and write ports, whereas the multiplier shares its with the divider and square root unit.

The divide and square root units use the SRT algorithm. The MIPS IV ISA has a multiply–add instruction. This instruction is implemented by the R10000 with a bypass — the result of the multiply can bypass the register file and be delivered to the add pipeline as an operand, thus it is not a fused multiply–add, and has a four-cycle latency.

Caches

[edit]

The R10000 has two comparatively large on-chip caches, a 32 KB instruction cache and a 32 KB data cache. The instruction cache is two-way set-associative and has a 128-byte line size. Instructions are partially decoded by appending four bits to each instruction (which have a length of 32 bits) before they are placed in the cache.

The 32 KB data cache is dual-ported through two-way interleaving. It consists of two 16 KB banks, and each bank are two-way set-associative. The cache has 64-byte lines, uses the write-back protocol, and is virtually indexed and physically tagged to enable the cache to be indexed in the same clock cycle and to maintain coherency with the secondary cache.

The external secondary unified cache supported capacities between 512 KB and 16 MB. It is implemented with commodity synchronous static random access memory (SSRAM). The cache is accessed via its own 128-bit bus that is protected by 9-bits of error correcting code (ECC). The cache and bus operate at the same clock rate as the R10000, whose maximum frequency was 200 MHz. At 200 MHz, the bus yielded a peak bandwidth of 3.2 GB/s. The cache is two-way set associative, but to avoid a high pin count, the R10000 predicts which way is accessed.

Addressing

[edit]

MIPS IV is a 64-bit architecture, but to reduce cost the R10000 does not implement the entire physical or virtual address. Instead, it has a 40-bit physical address and a 44-bit virtual address, thus it is capable of addressing 1 TB of physical memory and 16 TB of virtual memory.

Avalanche system bus

[edit]

The R10000 uses the Avalanche bus, a 64-bit bus that operates at frequencies up to 100 MHz. Avalanche is a multiplexed address and data bus, so at 100 MHz it yields a maximum theoretical bandwidth of 800 MB/s, but its peak bandwidth is 640 MB/s as it requires some cycles to transmit addresses.

The system interface controller supports glue-less symmetrical multiprocessing (SMP) of up to four microprocessors. Systems using the R10000 with external logic can scale to hundreds of processors. An example of such a system is the Origin 2000.

Fabrication

[edit]

The R10000 consists of approximately 6.8 million transistors, of which approximately 4.4 million are contained in the primary caches.[5] The die measures 16.640 by 17.934 mm, for a die area of 298.422 mm2. It is fabricated in a 0.35 μm process and packaged in 599-pad ceramic land grid array (LGA). Before the R10000 was introduced, the Microprocessor Report, covering the 1994 Microprocessor Forum, reported that it was packaged in a 527-pin ceramic pin grid array (CPGA); and that vendors also investigated the possibility of using a 339-pin multi-chip module (MCM) containing the microprocessor die and 1 MB of cache.[6]

Derivatives

[edit]

The R10000 was extended by multiple successive derivatives. All derivatives after the R12000 have their clock frequency kept as low as possible to maintain power dissipation in the 15 to 20 W range so they can be densely packaged in SGI's high performance computing (HPC) systems.

R12000

[edit]
NEC VR12000 die shot.

The R12000 is a derivative of the R10000 started by MIPS and completed by SGI. It was fabricated by NEC and Toshiba. The version fabricated by NEC is called the VR12000. The microprocessor was introduced in November 1998. It is available at 270, 300 and 360 MHz. The R12000 was developed as a stop-gap solution following the cancellation of the "Beast" project, which intended to deliver a successor to the R10000. R12000 users include NEC, Siemens-Nixdorf, SGI and Tandem Computers (and later Compaq, after their acquisition of Tandem).

The R12000 improves upon the R10000 microarchitecture by: inserting an extra pipeline stage to improve clock frequency by resolving a critical path; increasing the number of entries in the branch history table, improving prediction; modifying the instruction queues so they take into account the age of a queued instruction, enabling older instructions to be executed before newer ones if possible.

The R12000 was fabricated by NEC and Toshiba in a 0.25 μm CMOS process with four levels of aluminum interconnect. The use of a new process does not mean that the R12000 was a simple die shrink with a tweaked microarchitecture; the layout of the die is optimized to take advantage of the 0.25 μm process.[7][8] The NEC fabricated VR12000 contained 7.15 million transistors and measured 15.7 by 14.6 mm (229.22 mm2).

R12000A

[edit]

The R12000A is a derivative of the R12000 developed by SGI. Introduced in July 2000, it operates at 400 MHz and was fabricated by NEC a 0.18 μm process with aluminum interconnects.

R14000

[edit]

The R14000 is a further development of the R12000 announced in July 2001. The R14000 operates at 500 MHz, enabled by the 0.13 μm CMOS process with five levels of copper interconnect it is fabricated with. It features improvements to the microarchitecture of the R12000 by supporting double data rate (DDR) SSRAMs for the secondary cache and a 200 MHz system bus.[9]

R14000A

[edit]

The R14000A is a further development of the R14000 announced in February 2002. It operates at 600 MHz, dissipates approximately 17 W, and was fabricated by NEC Corporation in a 0.13 μm CMOS process with seven levels of copper interconnect.[9]

R16000

[edit]

The R16000, code-named "N0", is the last derivative of the R10000. It is developed by SGI and fabricated by NEC in their 0.11 μm process with eight levels of copper interconnect. The microprocessor was introduced on 9 January 2003, debuting at 700 MHz for the Fuel and also used in their Onyx4 Ultimate Vision.[10] In April 2003, a 600 MHz version was introduced for the Origin 350. Improvements are 64 KB instruction and data caches.

R16000A

[edit]

The R16000A refers to R16000 microprocessors with clock rates higher than 700 MHz. The first R16000A is an 800 MHz version, introduced on 4 February 2004. Later, a 900 MHz version was introduced, and this version was, for some time, the fastest publicly known R16000A—SGI later revealed there were 1.0 GHz R16000s shipped to selected customers. R16000 users included HP and SGI. SGI used the microprocessor in their Fuel and Tezro workstations; and the Origin 3000 servers and supercomputers. HP used the R16000A in their NonStop Himalaya S-Series fault-tolerant servers inherited from Tandem via Compaq.

R18000

[edit]

The R18000 is a canceled further development of the R10000 microarchitecture that featured major improvements by Silicon Graphics, Inc. described at the Hot Chips symposium in 2001. The R18000 was designed specifically for SGI's ccNUMA servers and supercomputers. Each node would have two R18000s connected via a multiplexed bus to a system controller, which would interface the microprocessors to their local memory and the rest of the system via a hypercube network.

The R18000 improved the floating-point instruction queues and revised the floating-point unit to feature two multiply–add units, quadrupling the peak FLOPS count. Division and square-root would be performed in separate non-pipelined units in parallel to the multiply–add units. The system interface and memory hierarchy was also significantly reworked. It would have a 52-bit virtual address and a 48-bit physical address. The bidirectional multiplexed address and data system bus of the earlier models would be replaced by two unidirectional DDR links, a 64-bit multiplexed address and write path and a 128-bit read path. The paths could be shared with another R18000 through multiplexing. The bus could also be configured in the SysAD or Avalanche configuration for backwards compatibility with R10000 systems.

The R18000 would have a 1 MB four-way set-associative secondary cache to be included on-die; supplemented by an optional tertiary cache built from single data rate (SDR) or double data rate (DDR) SSRAM or DDR SDRAM with capacities of 2 to 64 MB. The L3 cache would have its cache tags, equivalent to 400 KB, located on-die to reduce latency. The L3 cache would be accessed via a 144-bit bus, of which 128 bits are for data and 16 bits for ECC. The L3 cache's clock rate would be programmable.

The R18000 was to be fabricated in NEC's UX5 process, a 0.13 μm CMOS process with nine levels of copper interconnect. It would have used 1.2 V power supply and dissipated less heat than contemporary server microprocessors in order to be densely packed into systems.

Notes

[edit]

References

[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
The R10000 is a 64-bit superscalar (RISC) that implements the (ISA). Developed by , Inc., and code-named "T5," it features dynamic , capable of fetching and decoding up to four instructions per cycle while supporting to tolerate branch mispredictions and hide memory latencies. Introduced in 1996, the processor was fabricated using a 0.35 μm process, with a die size of 298 mm² containing 6.8 million transistors, and initial clock speeds reaching 200 MHz, later scaling to 250–275 MHz in subsequent revisions. Key architectural elements include five fully pipelined execution units (two integer arithmetic logic units, two floating-point adders, and one floating-point multiplier), with 64 physical registers each for integers and floating-point operations, and a non-blocking hierarchical memory system comprising 32 KB two-way set-associative primary instruction and caches, paired with a configurable secondary cache of 512 KB to 16 MB. This design enables high performance in integer and floating-point workloads, achieving peak SPEC95 integer scores of 9 and floating-point scores of 19 at 200 MHz. The R10000's emphasis on out-of-order issue and precise made it suitable for demanding applications, outperforming its predecessor, the R8000, by 70–100% in superscalar configurations. The processor found primary use in high-end workstations and servers from , Inc. (SGI), including the Indigo² IMPACT series, O₂ workstations (particularly later models with 195–250 MHz variants), and Challenge/Power Challenge systems supporting up to four processors. It also powered specialized systems like the Cenju-4 , which scaled to 1,024 processors for tasks. Despite early production issues requiring replacements in 1996, the R10000 solidified MIPS's position in the workstation market, influencing subsequent designs like the R12000.

Development and History

Design Origins

The microprocessor was developed by , as a next-generation RISC processor under the internal "T5". The project was led by chief designers Chris Rowen and Kenneth C. Yeager, who aimed to advance MIPS's processor lineup for applications. This design evolved from earlier MIPS processors, particularly the R8000 and R4400, by shifting from in-order execution to a superscalar, out-of-order to address performance bottlenecks in scalar workloads. The series, introduced in 1991, had highlighted limitations in and efficiency for demanding tasks, prompting MIPS to pursue dynamic scheduling and in the early . Conceptual work on the R10000 began around this period to overcome these constraints and deliver sustained clock without relying solely on superpipelining. Key initial goals included full implementation of the MIPS IV instruction set architecture (ISA), support for 64-bit addressing, and optimization for high-end workstations such as those from (SGI). These objectives positioned the R10000 to enable superior integer and floating-point throughput in graphics-intensive and scientific computing environments, marking a significant step in MIPS's evolution toward aggressive superscalar designs.

Announcement and Production

The MIPS R10000 microprocessor was first described in press reports during 1992 as the next-generation RISC processor from MIPS Computer Systems, positioned as a significant advancement over existing designs. It served as the successor to the R4400 in MIPS's product lineup. Formal details were unveiled by MIPS Technologies at the Microprocessor Forum in late 1994, where it was introduced as a 64-bit superscalar processor targeting high-end applications. Production of the R10000 involved partnerships with Electronics and for fabrication, leveraging their expertise in high-volume semiconductor manufacturing. Samples became available in the second half of 1995, with volume shipments beginning in the first quarter of . Initial clock speeds were 175 MHz and 195 MHz, enabling substantial performance gains for tasks. The processor targeted high-performance computing markets, particularly Inc. (SGI) systems such as the Challenge server line for supercomputing and the Indigo² workstations for graphics-intensive applications. Early adoption focused on these platforms, where the R10000 powered scalable environments and advanced visualization, establishing it as a key enabler for scientific and workloads.

Challenges and Revisions

The MIPS R10000 faced significant production challenges shortly after its initial deployment, culminating in a major in September 1996. Systems equipped with early R10000 processors fabricated by , including SGI's Indigo 2 workstations and Challenge servers shipped between March and July 1996, suffered from defective oxide layers that caused excessive current draw and intermittent system shutdowns. These faults did not result in computational errors or but led to unreliable operation under load, prompting SGI to recall approximately 10,000 affected units for replacement. The issue stemmed from manufacturing variations at 's facilities, while processors from were unaffected. Following the recall, NEC resumed full production of defect-free chips on the 0.35-micron process. In 1997, a shrunken version of the R10000 fabricated using a 0.25-micron CMOS process was introduced, enabling higher clock speeds reaching 250 MHz by late 1997, representing a roughly 28% increase over earlier 195 MHz models. The recall and associated fabrication issues damaged MIPS Technologies' reputation and strained partnerships, particularly with SGI, contributing to a stock downgrade and widespread negative press. In response, SGI accelerated development of derivative designs, such as the R12000, which built on the R10000 core with architectural tweaks for better performance and reliability. These events also imposed substantial costs, estimated at $10 million for the recall alone, and caused production delays that limited early market availability and allowed competitors to gain ground in high-end computing.

Architecture Overview

Instruction Set Implementation

The R10000 microprocessor fully implements the 64-bit MIPS IV instruction set architecture (ISA), serving as a superset of the MIPS III ISA to enable advanced 64-bit integer and floating-point operations. This extension builds upon prior architectures by incorporating new instructions tailored for multimedia processing and 3D graphics workloads, such as fused multiply-add operations (e.g., MADD.D and MSUB.D for double-precision floating-point) and fast reciprocal approximations (e.g., RECIP.D and RSQRT.D). These additions facilitate efficient computation of transformations, lighting, and texture mapping in graphics pipelines by reducing instruction count and latency for common vector and matrix operations. Backward compatibility is a core design principle of the MIPS IV ISA in the R10000, ensuring seamless execution of binaries compiled for MIPS I, II, and III without recompilation or modification. The processor supports both 64-bit and 32-bit addressing modes, allowing it to run legacy 32-bit applications in a while leveraging full 64-bit capabilities for new software. This includes retention of all prior instructions, such as those for MIPS III's 64-bit integer loads/stores (e.g., LD and SD), alongside processor modes that restrict execution to earlier ISA subsets if required. Instruction encoding and decoding in the R10000 adhere strictly to RISC principles, utilizing fixed-length 32-bit instructions in three primary formats: R-type for register-register operations, I-type for immediate and load/store instructions, and J-type for jumps. The load-store separates memory access from computation, with all arithmetic confined to registers, promoting simplicity and pipelinability; for instance, floating-point instructions are encoded via the COP1 opcode (17) with a format field specifying precision (e.g., .D for double). New MIPS IV encodings, such as the COP1X field for extended floating-point instructions (e.g., indexed loads like LDXC1), reuse unused space without disrupting legacy decoding.

Execution Pipeline

The R10000 features a superscalar, pipeline designed to achieve high instruction throughput by dynamically scheduling instructions across multiple execution units while handling dependencies and control hazards. This design implements the MIPS IV instruction set through a that separates the and floating-point execution paths, enabling greater parallelism by allowing independent operation of these units with dedicated queues, register files, and datapaths. The pipeline consists of six main stages: fetch (F), dispatch (D), issue (S), execute (X), complete (C), and retire (R). In the fetch stage, up to four instructions are fetched per cycle from the instruction cache, with the first three stages dedicated to instruction fetch to hide cache access latency. Dispatch allocates resources such as reservation stations, reorder buffer entries, and physical registers, while the issue stage reads operands and dispatches ready instructions out-of-order to five fully pipelined execution units, supporting up to four issues per cycle. Execution occurs in functional units with variable latencies (one cycle for integer operations, up to three for floating-point), followed by completion where results are written to the physical register file, and retirement which commits results in program order to maintain precise exceptions. Speculative execution is supported to tolerate delays, with instructions fetched and executed beyond unresolved ; mispredictions trigger using checkpoints in the reorder buffer. prediction employs a 512-entry branch history table (BHT) with two-bit saturating counters, achieving approximately 87% accuracy on SPECint92 benchmarks, supplemented by a four-entry stack for call/return handling. Central to dependency management and precise is the 32-entry reorder buffer, known as the active list, which tracks instruction order, renames logical registers to physical ones, and ensures results are committed in-order despite out-of-order completion. This mechanism buffers up to 32 in-flight instructions, resolving data hazards via reservation stations and enabling the to sustain up to 4 (IPC) under ideal conditions with minimal stalls.

Register and Renaming System

The MIPS R10000 features separate s for and floating-point operations to support its model. The consists of 64 physical 64-bit registers, corresponding to 32 general-purpose logical registers (GPRs, r0 through r31) plus the HI and LO registers, which are treated as additional logical registers for multiply/divide results, for a total of 33 logical registers. The floating-point includes 64 physical 64-bit registers for 32 logical registers (f0 through f31). These physical registers provide twice the capacity of the logical registers, enabling the processor to track multiple in-flight instructions without data hazards. Register renaming in the R10000 resolves write-after-read () and write-after-write (WAW) hazards by dynamically mapping logical register specifiers to unused physical registers during the decode stage. This mechanism allows up to four instructions to be renamed in parallel each cycle, with source operands translated via read ports on the map tables and destination registers allocated from free lists. The map table is a 33-entry by 6-bit multiport RAM with 16 read ports and 4 write ports, while the floating-point map table has 32 entries with the same port configuration. Free lists for both and floating-point registers are implemented as 4-parallel, 8-deep circular FIFOs, which supply available physical register indices and are replenished as instructions retire. Physical register zero is reserved to indicate uninitialized values, preventing false dependencies on undefined states. To support precise exceptions and rapid recovery from mispredicted branches, the R10000 employs shadow registers that snapshot the map tables and other key state information upon decoding a instruction. These shadows enable quick restoration of the architectural state without full pipeline flush, minimizing penalty cycles for control hazards. The mechanism integrates with an active list—a reorder buffer equivalent—that holds up to 32 entries tracking all outstanding instructions in program order. Upon instruction completion, the active list retires results by updating the map tables to commit physical register mappings, freeing retired registers back to the free lists while ensuring in-order commitment for architectural visibility. This integration maintains speculation safety and enables context switching by preserving committed state separately from speculative mappings.

Processing Units

Integer Unit

The integer unit in the MIPS R10000 microprocessor features three dedicated pipelines for handling non-floating-point operations: the Load/Store pipeline (ALU1), the Integer Multiply pipeline (ALU2), and the Branch/Jump pipeline. These pipelines enable superscalar execution, allowing up to two integer instructions to issue per cycle in conjunction with the overall out-of-order design. The unit supports the 64-bit MIPS IV instruction set, processing arithmetic, logical, and control-flow tasks with a focus on high throughput and low latency for typical operations. The Load/Store pipeline (ALU1) performs 64-bit arithmetic operations such as and , logical operations including , and XOR, and variable shifts (logical, arithmetic, and rotate). It also calculates effective addresses for memory accesses and executes simple branches and jumps. Most operations in this pipeline have a single-cycle execution latency, with results available for dependent instructions after one additional cycle. The load/store mechanism uses 64-bit data paths and supports misaligned accesses via two interleaved 16 KB cache banks, enabling non-blocking operation and up to four outstanding misses. This pipeline integrates directly with the primary data cache for efficient access, supporting 32-byte cache lines and write-back policies. The Integer Multiply pipeline (ALU2) specializes in and division, handling both 32-bit and 64-bit operands to produce double-precision results where applicable. Integer multiply instructions exhibit a latency of 9-10 cycles for 32-bit and 34-35 cycles for 64-bit, allowing the result to be forwarded to dependent operations after this period, while division latencies are longer due to iterative algorithms (66-67 cycles for 32-bit). This cannot issue in the same cycle as certain other instructions, such as branches, to manage . The /Jump pipeline prioritizes control-transfer instructions, using ALU1 hardware for condition evaluation and target computation, with a predicted branch accuracy of around 87% based on a two-level adaptive predictor. Mispredicted branches incur a 2-3 cycle penalty, depending on cache state, and the pipeline supports delayed slots as per the . Overall, the integer unit's pipelines interface with a 64-entry register file via renaming to resolve dependencies and sustain out-of-order issue from a 16-entry queue.

Floating-Point Unit

The floating-point unit (FPU) of the R10000 comprises four dedicated functional units: one pipelined , one pipelined multiplier, and separate non-pipelined units for division and square-root operations. These units enable high-throughput processing for scientific and engineering workloads by supporting parallel execution of floating-point instructions independent of the integer pipeline. The FPU fully complies with the standard for both 32-bit single-precision and 64-bit double-precision arithmetic, including support for fused multiply-add (FMA) operations introduced in the MIPS IV instruction set. FMA combines multiplication and addition in a single instruction to reduce rounding errors and improve precision for iterative algorithms common in numerical simulations. Latencies vary by operation and precision: additions and subtractions complete in 2 cycles, multiplications in 2 cycles, while FMA operations complete in 4 cycles; divisions and square roots range from 12 cycles for single precision to 19 cycles for double precision, reflecting the iterative nature of the non-pipelined units. All pipelined units achieve a 1-cycle repeat rate, allowing sustained throughput of one operation per cycle once initiated. The 32-entry floating-point uses 64-bit registers, which can pack two 32-bit single-precision values for software-emulated vector operations and consists of 64 physical registers via renaming, enhancing efficiency in applications requiring parallel single-precision computations without dedicated SIMD hardware. A dedicated 16-entry floating-point issue queue decouples the FPU from the integer execution units, permitting out-of-order scheduling and of FP instructions to mask long-latency operations like division. This design prioritizes balanced performance across precision levels, with bypass networks ensuring results are available to dependent instructions after the minimum latency without stalling the .

Memory Subsystem

On-Chip Caches

The R10000 integrates separate primary caches for instructions and directly on the chip to minimize latency and support its superscalar execution model. The instruction cache measures 32 KB and is organized as a 2-way set-associative with 64-byte cache lines, enabling efficient prefetching and alignment handling for up to four instructions per cycle across any word boundary within a line. This design facilitates high-bandwidth fetches, with the cache capable of delivering at rates sufficient to sustain the processor's peak issue rate for instruction stream delivery from the memory subsystem. The data cache is similarly 32 KB and 2-way set-associative but uses smaller 32-byte lines to balance latency and bandwidth for load and store operations. It operates under a write-back policy, where modified data remains in the cache until or explicit writeback, reducing bus compared to write-through alternatives. Additionally, the data cache supports non-blocking loads, permitting multiple outstanding misses and allowing the load/store unit to issue subsequent memory operations without stalling the on a single miss. Both caches maintain coherence states compatible with the , tracking modified, exclusive, shared, and invalid lines to ensure data consistency across multiprocessor configurations without requiring on-chip snoop logic for primary-level operations. This integration with the load/store unit enables the R10000 to tolerate effectively.

Secondary Cache Interface

The MIPS R10000 microprocessor features a dedicated interface for an external unified secondary (L2) cache, enabling integration of up to 16 MB of cache in a two-way set-associative with configurable 64- or 128-byte cache lines. This external cache complements the on-chip primary by providing larger capacity for improved access latency in high-performance systems. The interface includes dedicated pins for cache control, such as a 128-bit data bus (SCData[127:0]), a 19-bit address bus (SCAAddr[18:0]/SCBAddr[18:0]), and a 26-bit tag bus (SCTag[25:0]), along with control signals like SCADCS*, SCADWr*, and clock inputs (SCClk[5:0]). It employs a synchronous protocol using standard registered SRAMs, supporting write-back operations and the MESI (Modified, Exclusive, Shared, Invalid) cache coherency protocol to maintain consistency. Snoop support is integrated through external tag handling and intervention/invalidate requests, allowing the secondary cache controller to respond to coherency probes without stalling the processor core. Bandwidth capabilities reach a peak of 3.2 GB/s via the 128-bit interface at a 200 MHz secondary cache clock , derived from the system clock through programmable divisors (options include ratios of 1:1, 2:3, 1:2, 2:5, or 1:3). The interface supports pipelined, non-blocking accesses with up to four outstanding read requests, facilitating overlapped refills for efficient data transfer. Configuration of the secondary cache is managed through control registers in Coprocessor 0, particularly the Config register, which includes mode bits for cache size (SCSize[18:16], supporting 512 KB to 16 MB in powers of two), line size (SCBlkSize, selectable as 64 or 128 bytes), clock divisors (SysClkDiv and SCClkDiv), and ECC enablement (bit 22). These options allow system designers to tailor the interface to specific SRAM components and performance requirements during reset initialization.

Interconnect and Fabrication

Addressing and Virtual Memory

The MIPS R10000 microprocessor supports a 44-bit , enabling up to 16 terabytes of , which is translated to a 40-bit space of 1 terabyte through its (TLB). This design accommodates the demands of while limiting translation overhead by focusing on the lower 44 bits of the virtual address for mapping. The employs segmentation to separate user and kernel regions, enhancing and isolation. In user mode, processes access the kuseg (2 gigabytes in 32-bit mode) or xkuseg (16 terabytes in 64-bit mode) segments exclusively, while kernel mode permits access to these user segments plus privileged kernel segments like kseg0 (cached physical addresses), kseg1 (uncached physical addresses), and xkseg (2 terabytes of kernel virtual space). The TLB facilitates this by using the virtual page number from the segmented to perform lookups, supporting page sizes from 4 KB to 16 MB in powers of four for flexible memory allocation. Protection is enforced through TLB entry attributes, including valid (V) bits to indicate mapped pages, dirty (D) bits to track modifications for write-back, and access control tied to processor mode—user-mode attempts to access kernel segments or invalid pages are blocked. These mechanisms, combined with coherency attributes, prevent unauthorized access and maintain cache consistency without hardware-level segmentation beyond mode enforcement. When a TLB miss or protection violation occurs during load/store operations, the processor generates a exception, invoking the kernel's TLB miss handler to traverse the , install the missing entry, and restore execution state precisely. This software-managed approach ensures efficient handling of virtual-to-physical translations in multitasking environments.

Avalanche Bus

The Avalanche Bus serves as the proprietary 64-bit split-transaction for the MIPS R10000 microprocessor, enabling interconnection with subsystems and peripherals at clock frequencies ranging from 50 to 100 MHz. This design delivers a peak bandwidth of 800 MB/s in a single direction, equivalent to 1.6 GB/s in full-duplex operation, by transferring 64 bits of data per clock cycle. The bus protocol operates on a request-response model, utilizing transaction tags to track and order multiple operations without blocking subsequent requests; it supports up to eight outstanding transactions concurrently for improved latency tolerance. Burst transfers are facilitated for data blocks up to 128 bytes, optimizing throughput for common workloads such as cache refills and I/O operations. In multiprocessor environments, the Avalanche Bus incorporates coherency extensions through a directory-based protocol, enabling glueless across multiple R10000 processors while maintaining cache consistency. The interface employs 128 signals in total, with address and data to efficiently share pins and reduce complexity in system integration.

Physical Design and Manufacturing

The MIPS R10000 was fabricated on a 0.35 μm process with four layers of metal interconnect by and , yielding a die measuring 16.64 mm by 17.934 mm, or 298 mm² in area. This implementation incorporated 6.8 million transistors, including approximately 4 million dedicated to the on-chip primary cache arrays. The 3.3 V process technology enabled reliable high-speed operation at frequencies up to 250 MHz while maintaining electrical integrity through optimized clock and power distribution networks. The chip was housed in a 599-pin ceramic land grid array (CLGA) package, which supported the required I/O connectivity for integration into multiprocessor systems. At its initial 200 MHz clock speed, the R10000 dissipated approximately 30 W of power, with higher-speed variants reaching up to 40 W; this level of consumption necessitated robust management, including heat spreaders and in host systems to prevent throttling during sustained workloads. Early production runs encountered yield challenges stemming from variations in gate oxide thickness, which caused localized thinning and excessive current leakage, particularly in NEC-fabricated processors while Toshiba-produced units were unaffected, leading to a widespread recall of affected units in 1996. Process refinements by the fabricators subsequently improved manufacturing yields, enabling broader availability and scaling to derivatives like the R12000, which adopted a 0.25 μm CMOS process for reduced die size and higher frequencies up to 300 MHz.

Applications and Performance

System Integrations and Users

The R10000 microprocessor found its primary applications in (SGI) workstations and servers, where it powered for graphics-intensive and scientific workloads. In workstations, it was integrated into the Indigo² IMPACT series, announced in 1996 with clock speeds up to 195 MHz, enabling advanced and visualization tasks under . Similarly, the workstation, introduced shortly thereafter, utilized single or dual R10000 processors at speeds ranging from 175 MHz to 250 MHz, supporting for professional rendering and simulation environments. On the server side, the scalable Origin 2000 system employed the R10000 as its core processor, allowing configurations from deskside units to large clusters with up to 512 processors interconnected via a cc-NUMA architecture, facilitating in and . Beyond SGI, the R10000 saw adoption by several other vendors in specialized UNIX-based systems. incorporated it into its EWS4800 workstation series, particularly models supporting 64-bit MIPS architectures for engineering and development applications running UX/4800. Pyramid Technology (later Pyramid) used the R10000 in its Reliant RM series servers, including the RM600 and planned RM2000, which supported up to 24-way configurations with NUMA interconnects for parallel processing in enterprise environments. (subsequently Compaq and HP) deployed dual R10000 processors in its NonStop Himalaya S72000 fault-tolerant servers, emphasizing reliability for with memory capacities up to 2 GB per unit. The R10000's deployments extended to supercomputing clusters, notably through SGI's Origin 2000 platforms, which appeared on the list and powered large-scale simulations into the early . In graphics rendering, SGI systems with the R10000 remained staples for and until around 2002, when newer derivatives began phasing it out. During the 1990s, integrations like these helped position MIPS architectures, including the R10000, as a in the UNIX market, particularly for high-end use.

Benchmark Results and Capabilities

The MIPS R10000 exhibited robust performance in early superscalar benchmarks, particularly at its initial 195 MHz clock speed. It delivered approximately 300 SPECint92 and 600 SPECfp92 in projected evaluations, scaling from an estimated 1.5 SPECint92 per MHz and strong floating-point execution capabilities. These figures positioned it competitively against contemporaries like the 200 MHz Pentium Pro, which scored 366 SPECint92 and 283 SPECfp92, with the R10000 showing superior floating-point results due to its dual-issue FP units and low-latency operations. The processor's architecture highlighted strengths in floating-point throughput, enabling efficient handling of compute-intensive workloads such as CAD simulations and 3D graphics rendering, where sequential dependencies were common. Conversely, it faced challenges in branch-intensive code, where mispredicted branches incurred significant penalties from its out-of-order recovery mechanisms, reducing effective issue rates in control-flow heavy applications like compilers or database queries. At launch, the R10000 offered notable power efficiency, achieving around 10 SPECint92 per watt with a typical of 30 under load. Relative to the prior R8000 (rated at 108 SPECint92 at 75 MHz), the R10000 provided over 2× improvement in integer performance, driven by its wider superscalar dispatch and deeper pipelines.

Derivatives

R12000 and R12000A

The R12000, developed by (SGI) following the spin-off of in 1998, was introduced in November 1998 as the first major derivative of the R10000 . Fabricated on a 0.25 μm four-layer-metal process by and , it was released at clock speeds of 270 MHz, 300 MHz, and 360 MHz to address performance needs in SGI's and server lines. Key architectural enhancements over the R10000 included an expanded instruction reordering window from 32 to 48 entries, enabling better and a 50% increase in pending instructions for improved superscalar throughput. Additionally, branch prediction was significantly upgraded with a quadrupled history table size to 2,048 entries using a and the addition of a 32-entry two-way set-associative branch target buffer (BTB), reducing misprediction penalties and boosting overall . On-chip caches remained at 32 KB for instructions and 32 KB for data, both two-way set-associative, while secondary cache support was optimized for up to 4 MB without through a doubled way-prediction table. The R12000A, released in 2000, built on this foundation with a higher clock speed of 400 MHz and fabrication on an advanced 0.18 μm process, allowing for greater efficiency in SGI's evolving systems. It incorporated enhanced features, dissipating approximately 20 W at peak—about one-third less than the 200 MHz R10000—through optimized voltage scaling and reduced dynamic power in the stages. These improvements maintained compatibility with the MIPS IV instruction set while supporting (DDR) SSRAM for secondary caches, which helped mitigate bandwidth limitations in high-performance configurations. Both processors were integral to SGI's product ecosystem, powering the Octane2 workstation introduced in 2000 with single or dual 400 MHz R12000A CPUs and 2 MB to 8 MB secondary caches per processor for graphics-intensive applications. In the server domain, the R12000A equipped the Origin 3000 series, where each node featured two or four 400 MHz processors with 8 MB secondary caches, enabling scalable NUMA architectures for up to 512 processors in clustered environments focused on scientific and visualization.

R14000 Series

The R14000 series represents a clock-scaled of the R10000 , with the initial R14000 released in 2001 operating at 500 MHz on a 0.13 μm process with . This processor maintained compatibility with the Bus interconnect while introducing optimizations for higher frequencies. Key enhancements included secondary cache latency of 10–12 cycles and expanded support for external L2 caches up to 16 MB, enabling better handling of larger memory hierarchies in environments. In , SGI introduced the R14000A, a refined variant clocked at 600 MHz using a shrunk 0.13 μm process that lowered power dissipation to approximately 17 . This upgrade allowed for denser integration and improved without altering the core pipeline or instruction set, focusing instead on manufacturing advancements for sustained performance in demanding workloads. The R14000A was offered as a drop-in upgrade for existing SGI systems, priced at $5,500 per unit. These processors found primary application in SGI's upgraded server and lines, notably powering the Fuel visual released in early 2002, which paired the R14000 or R14000A with VPro graphics for professional visualization and engineering tasks. They also enhanced scalability in Origin 3000 and Onyx4 systems, supporting configurations from single-node setups to large-scale clusters. At 600 MHz, the R14000A delivered SPECint2000 base performance of 483 and SPECfp2000 base of 499 in single-processor configurations, demonstrating strong floating-point capabilities suitable for scientific simulations while maintaining balanced integer throughput. These metrics underscored the series' efficiency in memory-intensive applications, with the larger L2 support contributing to reduced cache misses in real-world deployments.

R16000 and Later Variants

The R16000, introduced by in early 2003, represented the pinnacle of the R10000 derivative line with a base clock speed of 700 MHz and fabrication on a 0.11 μm using . It retained the 64-bit, 4-way superscalar architecture of prior models, including 32 KB two-way set-associative L1 instruction and data caches, , and a dual-issue capable of one multiply-add per cycle, while achieving low power dissipation around 20 . The R16000A variant, launched in 2004, scaled clock frequencies to 800 MHz and beyond, reaching up to 1 GHz in select configurations, without fundamental changes to the core or . This enabled higher performance in compute-intensive workloads, with systems supporting up to four processors and 3.2 GB/s via the NUMAlink interconnect. The R18000 was envisioned as the next iteration, targeting 1.2 GHz on a 0.13 μm process with nine interconnect layers, featuring a 1 MB on-chip L2 cache, dual floating-point units each supporting add, multiply, or multiply-add operations per cycle, and expanded virtual addressing up to 52 bits. Although detailed at the Hot Chips 13 conference in 2001, the design was not brought to production amid Silicon Graphics' pivot to processors. These processors powered ' concluding MIPS-based platforms, such as the Origin 3000 server series scalable to 1024 CPUs, the Onyx 3000 visualization systems, and deskside workstations including and Tezro, before the architecture's phase-out in favor of Itanium-equipped Altix and Prism systems. The R16000 series thus marked the termination of the R10000 evolutionary path under MIPS IV, with no subsequent adoption of MIPS V extensions in this lineage.

References

  1. Next, MIPS R10000 clock speed was increased 28% to 250 MHz, yielding an improvement in application. CPU performance of typically 25%, and the introduction of E- ...
Add your contribution
Related Hubs
User Avatar
No comments yet.