The term Emotion Engine (EE) actually covers the main MIPS R5900 processor, the Vectors Units (VUs) and the Graphics Synthesizer. The EE Core is the R5900 processor, this description will just use ‘EE’ to denote the MIPS R5900.
As already explained, the EE is a MIPS R5900 processor clocked at around 294 MHz with 32 MB memory attached to it. You might already be familiar with MIPS processors from the Nintendo 64, PSOne or PSP. The EE FPU does not support 64-bit doubles, only 32-bit floats. The reason behind this is that the VUs only supports 32-bit floats and it would not be efficient performance-wise to do calculations with doubles, if you had to cast them to floats before sending them off to the VU’s, not to mention the lost precision.
What makes the EE different from other MIPS processors is that it has Multimedia Instructions (MMI), these are specialized instructions that do 128-bit data operations. The EE’s General Purpose Registers are 128-bit wide. The MMIs are quite handy when you work with data that gets sent of to to either the VUs or the GS.
The two VUs are connected to the EE, the VU0 more tightly than the VU1. The VU0 is not connected to the GS, like the VU1. You can use the VU0 in two modes, macro or micro. Macro means that you inline the VU0 instructions along with the rest of your EE code and in micro you create a microprogram which you then upload the the VU0 and execute. The VU1 only works in micro mode.
In the first 1 MB region of the EE memory sits the EE kernel, which is loaded from the BIOS at startup. The kernel contains a lot of system calls which can be invoked using the syscall instruction. Among the system calls are functions for threads, interrupts, thread synchronization, etc. The kernel is very basic and does not contain any system calls for handling I/O, except for a few system calls which are able to load EE programs (extension .ELF) which use I/O internally. PS2SDK supports all the known system calls.