Emotion Engine

Da Wikipedia, l'enciclopedia libera.
Emotion Engine

L'Emotion Engine è una CPU sviluppata e fabbricata da Sony in collaborazione con Toshiba per la console Sony PlayStation 2.

Il microprocessore è formato da:

  • un core basato su di un'architettura di tipo MIPS;
  • due unità di elaborazione vettoriale (VPU);
  • un'interfaccia grafica (GIF);
  • un'unità DMA a 10 canali;
  • un controllore della memoria;
  • un'unità di elaborazione delle immagini (Image Processing Unit);
  • un'interfaccia di Input/Output.

Descrizione[modifica | modifica sorgente]

Nel cuore dell'Emotion Engine c'è un core MIPS, superscalare a due vie, basato principalmente sull'architettura MIPS III ISA, ma che include anche alcune istruzioni definite dal MIPS IV ISA.

L'esecuzione delle singole istruzioni avviene in modalità in order, cioè in ordine, contrariamente ad altri processori in cui l'esecuzione avviene out-of-order (esecuzione fuori ordine).

Internamente il core consiste di due unità logico aritmetiche (ALU) da 64 bit e di una unità di calcolo a virgola mobile (FPU) a precisione singola (32 bit). Sia le pipeline dati delle ALU, che quella della FPU constano di 6 stadi per l'esecuzione delle istruzioni.

Per rifornire di dati e di istruzioni le unità di esecuzione, sono presenti due differenti memorie cache ed una memoria RAM scratchpad. La cache di istruzioni e quella dei dati sono indicizzate virtualmente ed etichettate fisicamente, mentre la RAM scratchpad risiede in una memoria separata. Un Translation Lookaside Buffer (TLB) combinato per dati ed istruzioni a 48 doppi valori (double entry) si occupa della traduzione degli indirizzi virtuali.

La predizione delle diramazioni è ottenuta con una cache branch target address a 64 ingressi e una branch history table integrata nella cache delle istruzioni.

La penalità causata dall'errata previsione della branch è di 3 cicli dovuti alla pipeline corta formata da 6 stage.

Le due VPU (VPU0 e VPU1) forniscono la maggior parte delle prestazioni dell'Emotion Engine in virgola mobile. Ogni VPU è caratterizzata da 32 registri da 128 bit, 16 ALU da 16 bit, 4 unità FMAC, una unità FDIV e una memoria locale per i dati. La memoria dei dati per la VPU0 è da 4KB mentre la memoria dei dati per la VPU1 è da 16KB. Per raggiungere un'alta larghezza di banda, la memoria dei dati delle VPU è connessa direttamente alla GIF, ed entrambe le memorie dei dati possono essere lette direttamente dall'unità DMA. Un singolo vettore delle istruzioni è composto da 4 valori in virgola mobile a precisione singola da 32 bit, che rispetta lo standard IEEE, che sono distribuiti alle 4 unità FMAC in precisione singola (32 bit) per l'elaborazione. L'Emotion Engine non è un processore a 128 bit dato che non elabora valori a 128 bit, ma solo un insieme di 4 valori da 32 bit che entrano in un registro a 128 bit. Lo schema è simile alle estensioni SSEx di Intel. Le unità FMAC hanno una latenza delle istruzioni di 4 cicli, ma, dal momento che hanno una pipeline da 6 stage, hanno un throughput di un ciclo per istruzione. L'unità FDIV ha una pipeline da 9 stage e può eseguire un'istruzione ogni sette cicli.

Le comunicazioni tra il core MIPS, le due VPU, la GIF, il controller di memoria e le altre unità è gestita da un bus dati interno da 128 bit che funziona a metà della frequenza di clock della CPU. A 300 MHz, il bus dati interno fornisce una larghezza di banda massima teorica di 2,4 GiB/s. I trasferimenti DMA su questo bus avvengono in pacchetti di 8 parole da 128 bit, raggiungendo un picco di 2 GiB/s. L'Emotion Engine si interfaccia direttamente al sintetizzatore grafico (Graphics Synthesizer) tramite il GIF ed un bus dedicato da 64 bit a 150 MHz con una larghezza di banda massima teorica di 1,2 GiB/s.

La comunicazione tra l'Emotion Engine e la RAM avviene attraverso due canali di DRDRAM e il controller di memoria, che si interfaccia al bus dati interno. I due canali di DRDRAM hanno una larghezza di banda massima teorica di 3,2 GiB/s, circa il 33% di banda in più rispetto alla larghezza di banda del bus interno dei dati. Per questo, il controller della memoria manda nel buffer i dati inviati dai canali DRDRAM così la banda extra può essere utilizzata dalla CPU.

A fornire le comunicazioni tra l'Emotion Engine e il processore di Input Output (POI), l'interfaccia di Input Output si interfaccia ad un bus da 32 bit di Input Output a 37,5 MHz con una larghezza di banda massima teorica di 150 MB/s per il bus dati interno. Da notare che questa interfaccia fornisce una larghezza di banda di gran lunga più vasta di quanto è richiesto dai dispositivi di ingresso/uscita della PlayStation.

Le prime versioni di PlayStation 3 si caratterizzavano di un Emotion Engine sulla scheda madre per ottenere la retrocompatibilità con i titoli PlayStation e la PlayStation 2. Tuttavia, nelle successive versioni di Playstation 3, compresa la distribuzione iniziale PAL, è stato eliminato l'Emotion Engine per abbassare i costi. Al suo posto, per consentire la retrocompatibilità è utilizzata l'emulazione software.

Specifiche[modifica | modifica sorgente]

  • Frequenza di clock: 294 MHz, 299 MHz (versioni successive)
  • Instruction Set: III MIPS, MIPS IV Subset, 107 Istruzioni Vettoriali
  • Core basato su MIPS: 2 Issue, 2 ALU a 64 Bit, 1 Floating Point Unit, Pipeline a 6 stages
  • Cache Istruzioni: 16 KiB, Set Associativa a 2 vie
  • Cache Dati: 8 KiB, Set associativa a 2 vie
  • Scratchpad RAM: 16 KiB
  • Translation Lookaside Buffer: 48 valori combinati di istruzioni/dati
  • Vector Processing Unit: 4 unità FMAC, 1 unità FDIV
  • Registri delle Vector Processing Unit: 32 registri da 128 bit
  • Unità di elaborazione di immagini: MPEG2 macroblock layer decoder
  • Direct Memory Access: 10 Canali
  • Bus dati interno: 128 bit, 150 MHz, 2 GiB/s massima larghezza di banda effettiva
  • Bus memoria: 2 canali da 16 Bit, 400 MHz DRDRAM, 3,2 GiB/s larghezza di banda massima teorica
  • Processo di fabbricazione: 0,25 µm (0,18 µm effective LG, 4 Layer Metal, CMOS)
  • VDD Tensione: 1,8 V
  • Consumo di energia: 15 W a 1,8 V
  • Numero di Transistor: 10,5 milioni
  • Superficie del Die: 240 mm²
  • Chip Packaging: PBGA a 540 Contatti

Capacità teoriche[modifica | modifica sorgente]

  • Virgola mobile: 6,2 miliardi di operazioni al secondo in singola precisione (32 Bit) in virgola mobile
  • Trasformazione di prospettiva: 66 milioni di poligoni al secondo
  • Con luci e nebbia: 36 milioni di poligoni al secondo
  • Superficie di Bezier Patch: 16 milioni di poligoni al secondo
  • Decompressione di immagine: 150 milioni di pixel al secondo

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica