« PlayStation 2 Architecture (index)

PlayStation 2 Architecture

Chapter 3: CPU


Table of Contents

  1. The leader
    1. Outperforming success
    2. High-end for the masses
    3. A special order for Sony
  2. A recognisable memory choice
  3. Preventing past mishaps
  4. Other interesting bits

At the heart of this console, we find a powerful package called Emotion Engine (EE), a joint project by Toshiba and Sony running at ~294.91 MHz .

Image
The Emotion Engine, as seen on the first motherboard revision of this console.

This chipset contains numerous components, one of them being the main CPU. The rest are at the CPU's disposal to speed up certain tasks. For this analysis, we'll divide the EE into three sections:

The leader

In a nutshell, the main CPU is a MIPS R5900, an exclusive MIPS core designed for this console. You may recall how Sony started venturing into MIPS silicon with the very first PlayStation (where we can find a MIPS R3000A second-sourced from LSI). For the next generation, we've got a MIPS 'R5900'... but what does that name mean for us?

To understand what's hidden behind these new numbers, let's take a look at some history surrounding that era.

Outperforming success

The MIPS R4000 was a popular CPU series adopted by a wide range of systems, including a close competitor. Thanks to its success, MIPS brought a once-unaffordable range of advancements (64-bit computing, 8-stage pipelines, and so forth) to the masses.

Fast forward, the next big leap arrived in 1995, with the release of the R10000. Now under the funding of SGI, MIPS produced a new processor that took the R4000's parallelism capabilities miles further, debuting techniques like :

Such innovation came at the cost of a complex design, however, and the final product was anything but cheap. SGI only bundled it with high-end equipment, and any attempt to bring it to a home console was out of the question.

High-end for the masses

Even before it reached the market, MIPS was already aware of the commercial limitations of the R10000. So, they hired Quantum Effect Devices (QED) to develop an affordable version of the R10000 for the mid- to low-end market.

As a company founded by former MIPS employees, QED was in the business of designing variants of MIPS cores for the budget sector. They had previously engineered the R4600 Orion, a cut-back version of the R4000, in a similar fashion to the VR4300 (found in the Nintendo 64). Orion was also tailored for Windows NT workstations .

In the end, QED came back with a new core called the R5000. It was a continuation of Orion, but was marketed as a cheaper alternative to the R10000, with significant cutbacks :

Consequently, this became an ideal CPU for powering modest equipment, such as SGI's low-end workstations. In any case, notice that the cut-down pipeline could still perform concurrent floating-point operations, as if QED had planned to keep the CPU as an attractive product for vector/3D applications. You'll soon see that another company quickly took note of that, as well.

As a side note, it's curious to observe that, on the other side of the pond, there were similar advancements in the opposite direction: ARM joined forces with DEC in the pursuit of lifting ARM chips into the high-end market.

Now that we've seen the state of the industry, let's turn to Sony's partners.

A special order for Sony

Toshiba had been a MIPS and QED licensee for some time , and was no stranger to commercialising MIPS packages. The company was also manufacturing their own MIPS-compatible core, called TX39 , derived from the MIPS R3000 . At one point, Sony and Toshiba joined forces to produce a CPU exclusively tailored to Sony's upcoming console.

This was a tremendous benefit for Toshiba: very often CPUs are required to fulfil a wide range of requirements from different stakeholders, and in doing so it constrains opportunities for specialisation. Now, there was only a single purpose: 3D gaming. Thus, leaving plenty of room for all kinds of innovation.

Image
CPU lineage leading to the R5900.

That being said, Toshiba ended up grabbing their TX39 design and combining it with ideas from their upcoming TX49 core, the R5000, and vector accelerators. The new core was called R5900 and introduced the following '3D' enhancements :

Aside from these, we also find other improvements that developers may welcome as well:

Moreover, the core is complemented by a dedicated Floating-Point Unit (FPU) - identified as 'COP1' - that accelerates operations with 32-bit floating-point numbers (also known as floats in C). This is a peculiar block, as it doesn't follow the IEEE 754 standard, most notably because it lacks support for infinity (which is computed as 0 instead) . Apart from that, it features 32 32-bit registers.

A recognisable memory choice

Next to the Emotion Engine are two blocks of 16 MB of RAM, giving a total of 32 MB of main memory. The type of memory used is Rambus DRAM or 'RDRAM' (déjà vu!), which is accessed through a 16-bit bus.

Image
The two RDRAM chips next to the Emotion Engine.

At first, this can be a little disappointing to hear, considering the internal bus of the Emotion Engine is as wide as 128 bits. However, the RAM chips are strategically arranged using a dual-channel architecture, where both chips are connected through two independent 16-bit buses (one bus per chip) to improve data throughput. The resulting setup provides a theoretical 3.2 GB/sec, so rest assured that memory latency is not an issue in this console!

Image
Memory design of the Emotion Engine. You can guess where the congestion will emerge.

At one corner of the Emotion Engine, there is a powerful Direct Memory Access Controller (DMAC) that transfers data between main memory and Scratchpad, or between main memory and any component inside the EE.

Data transfers are carried out in batches of 128 bits, but here is the interesting part: every eight batches, the main bus is temporarily unlocked. This leaves a small window in which to perform other DMA transfers in parallel (up to ten), or to let the CPU use the main bus. This modus operandi is called slice mode, and is one of the many modes available on this DMA unit. Bear in mind that, while slice mode reduces stalls on the main bus, it does so at the cost of slowing down the overall DMA transfer.

Preventing past mishaps

Whether we want it or not, with the amount of traffic flowing through the Emotion Engine, this design will eventually suffer the consequences of the Unified Memory Architecture or 'UMA'. That is, multiple independent components trying to access main memory at the same time, causing congestion. Well, to tackle these issues, Sony alleviated the constant demand for memory by:

This sounds very convenient for applications that can benefit from cache, but what about those tasks, such as manipulating Display Lists, which shouldn't consume cache at all? Luckily, the CPU provides a different memory access mode called UnCached, which only uses the Write Back Buffer. As a result, it won't waste cycles correcting the cache (product of cache misses).

Furthermore, the UnCached accelerated mode is also available. This one adds a buffer for speeding up the reading of adjacent addresses in memory.

Other interesting bits

Inside the same Emotion Engine package, there is yet another processor called Image Processing Unit or 'IPU', this time designed for image decompression. As the successor to the MDEC, the IPU can be useful when a game needs to decode an MPEG2 movie without jamming the main CPU.

Long story short, the game sends compressed image streams to the IPU (hopefully using DMA), which then decodes them into a format that the GPU can display. The PS2's operating system also relies on the IPU for DVD playback.

Finally, the IPU can also process compressed high-resolution textures, reducing CPU usage and the amount of data that needs to be transferred.


Previous: 2. A quick introduction

Next: 4. Co CPUs


Rodrigo Copetti © 2026 RSS Feed

Switch to modern edition

Home · Writings · Support · About author · About website