Storia della Playstation 1 - Benchmark tra Playstation 1 e Playstation 2

Transcript

Storia della Playstation 1 - Benchmark tra Playstation 1 e Playstation 2
Storia della Playstation 1
Progetto di Architettura degli Elaboratori – Prof. Leonardo Pasini
Corso di Laurea in Informatica – Scuola di Scienze e Tecnologie – Università di Camerino
Anno Accademico: 2011/2012
Fabio Pagnotta, Stefano Traini , Alessandro Di Carlo
1990-
&
• Nintendo dopo il successo della console
SNES voleva crearne una che leggesse
supporti magnetici.
• Sony e Philips avevano sviluppato due
diversi progetti di CD-ROM, Nintendo
decise di collaborare con la società
giapponese per la realizzazione della
nuova console grazie ad un buon
rapporto tra le due.
1991-
vs
• Nacque il progetto SNES-CD di
Nintendo e Sony.
• Sony, all’insaputa di Nintendo,
aveva in mente di realizzare una
propria console.
• Poco prima del lancio della SNESCD che doveva verificarsi a Maggio,
il presidente della Nintendo, Hiroshi
Yamauchi, venne a conoscenza del
piano di Sony, così al CES del 1991
strappò il contratto Nintendo-Sony e
annunciò la collaborazione con
Philips.
Lancio della ‘’
Play Station’’
• Dopo la disgiunzione tra le
due società giapponesi,
Nintendo decise di buttare
tutto il lavoro fatto fino a quel
momento, mentre Sony
continuò a sviluppare la
propria console.
• Ad Ottobre venne presentata
la ‘’Sony Play Station’’.
1992-1995
•
•
•
1992- Un accordo tra Sony e Nintendo
consentiva alla prima di montare il lettore
delle cartucce SNES sulla ‘’Sony Play
Station’’, e alla seconda di utilizzare
componenti hardware marchiate Sony.
1993- Sony realizzò che la tecnologia
SNES era ormai obsoleta e decise di
mantenere il solo lettore CD-ROM
1994- Dopo aver rinnovato hardware e
software a 32 bit e tolto lo spazio tra i
nomi, fu lanciata nel 1994 in Giappone
(successivamente nel 1995 in USA e in
Europa) la prima ‘’PlayStation’’.
Modelli della PlayStation
SCPH-100x che prevedeva un’uscita S-Video e una porta
parallela I/O;
SCPH-500x che rispetto alla precedente aveva eliminato
l’uscita S-Video;
SCPH-700x che esternamente era uguale alla precedente
ma a livello hardware furono apportate modifiche per
ridurre i costi di produzione (questi furono i modelli più
venduti);
SCPH-900x che aveva lo stesso hardware della 700x ma
esteriormente aveva eliminato la porta parallela I/O;
SCPH-300x o anche chiamata NetYaroze, era una
console dedicata alla creazione di giochi da parte dei
non professionisti, infatti, potevano essere programmati
giochi non più grandi di 1Megabyte, che potevano
essere usati solo sulla console in cui erano stati creati;
DTL-H100x e DTL-H120x rispettivamente di colore Blu e
Verde, furono due console destinate alle softwarehouse per lo sviluppo dei giochi.
2000 - Lancio della PSone
2006- Dismissione dal commercio
• Nel 2000 insieme all’ingresso
nel mercato della PlayStation2,
Sony decise di lanciare una
versione ridisegnata della
PlayStation chiamata PSone.
• Prima dell’uscita dal mercato
della PlayStation e della
PSone avvenuta nel 2006,
vennero vendute 104 milioni di
unità.
Architettura della Playstation 1
Progetto di Architettura degli Elaboratori – Prof. Leonardo Pasini
Corso di Laurea in Informatica – Scuola di Scienze e Tecnologie – Università di Camerino
Anno Accademico: 2011/2012
Fabio Pagnotta, Stefano Traini , Alessandro Di Carlo
Da cosa è composta ?
Unita di elaborazione:
 Cpu e Cop0 R3000A MIPS (32 bit ,33,86MHz,Instruction Cache
4kb,Data Cache 1kb).
 Gpu Gte Mdec
 Spu
Memorie:
 Memory Ram 2 Megabyte
 Memoria Video 1 Megabyte
 Memoria Spu 512 Kilobyte
 Due memory card da 128 Kilobyte l' una .
Dispositivi di Input/Output:
 CD-ROM.
 Controller
 Serial ,Parallel I/O.
 Memory Card.
R3000A RISC

Questa unità di elaborazione RISC è configurata con l' ordine Little
Endian ed è in grado di lavorare con word/half word /byte .
Oltre a questo contiene 32 registri da 32 bit , 1 registro PC da 32 bit e altri
due per la moltiplicazione a 64 bit o per la divisione .
Questa cpu lavora con una pipeline a 5 serventi.
IF
RD
ALU
MEM
WB
Vi sono due problemi con la pipeline:
1- Istruzione di salti.
2-Istruzione di caricamento di un registro e successivamente un
istruzione che coinvolga in lettura lo stesso registro.
Queste due problemi sono a carico del programmatore o in
alternativa dell' assemblatore .
Registri
Numero del registro
Nome
Uso
0
ZR
Costante zero
1
AT
Riservato all' assembler
2-3
V0-V1
Restituire i valori delle funzioni
4-7
A0-A3
I primi 4 parametri di una funzione
8-15
T0-T7
Registri Temporanei salvati dal chiamante.
16-23
S0-S7
Registri Non temporanei salvati dal chiamato.
24-25
T8-T9
Registri Temporanei salvati dal chiamante
26-27
K0-K1
Risevati all' Os Kernel
28
GP
Puntatore globale
29
SP
Puntatore allo stack
30
FP
Puntatore al frame
31
RA
Indirizzo di ritorno di una procedura.
HI
Parte più alta del risultato di una moltiplicazione a
64 bit/ Quoziente di una divisione .
LO
Parte più bassa del risultato di una
moltiplicazione a 64 bit/ Resto di una divisione
PC
Puntatore all' indirizzo della prossima istruzione
Formato delle istruzioni

Formato delle istruzioni:
I-type:(Immediate type)
Codice
operazione
Registro Sorgente
Registro
Destinazione o Condizione
Indirizzo di spostamento.
16 bit
5 bit
5 bit
6 bit
J-type: (Jump type)
Codice
operazione
Indirizzo di riferimento.
6 bit
26 bit
R-type: (Register type)
Codice
Registro
operazione Sorgente
6 bit
5 bit
Registro
Obbiettivo o
Condizione
Registro di
destinazione
5 bit
5 bit
Numero di
spostamenti
5 bit
Funzione
6 bit
Istruzioni
Tipo:
Tipo istruzione:
Istruzioni:
Istruzioni di Load &Store
I-type
LB,LBU,LH,LHU,LW,LWL,LW
R,SB,SH,SW,SWL,SWR
Istruzioni computazionali.
I-type,R-type
ADD,ADDIU,SLTI,SLTIU,
ANDI,ORI,XORI,LUI,ADD,AD
DU,SUB,SUBU,SLT,SLTU,A
ND,OR,XOR,NOR,SLL,SRL,
SRA,SLLV,SRLV,SRAV,MULT
,MULTU,DIV,DIVU,MFHI,MFL
O,MTHI,MTLO
Istruzioni di salto.
I-type,R-type,J- J,JAL,JR,JALR,BEQ,BNE,BL
EZ,BGTZ,BLTZ,BGEZ,BLTZ
type
AL,BGEZAL
Istruzioni Speciali
R-type
SYSCALL,BREAK
Memoria Ram
La ram viene gestita in maniera virtuale grazie all' utilizzo del Cop0.
Ci sono tre modi per utilizzare la Ram .
Kuseg0:
Kernel (64KB)[0x0000_0000-0x0000_ffff]
User Memory (1,9MB)[0x0001_0000-0x001f_ffff]
Kseg0:
Kernel (64KB)[0x8000_0000-0x8000_ffff]
User Memory (1,9MB)[0x0001_0000-0x001f_ffff]
Kseg1:
Kernel (64KB)[0xa000_0000-0xa000_ffff]
User Memory (1,9MB)[0xa001_0000-0xa01f_ffff]
Kuseg0,Kseg0,Kseg1
Kuseg0:
Il primo segmento rappresenta un area di memoria ad accesso diretto
sulla ram fisica.
Kseg0:
Questo segmento permette di accedere sempre alla stessa area fisica
solo che quest' area è finalizzata alla memorizzazione.
Kseg1:
Questo segmento permette di accedere sempre alla stessa area fisica
solo che quest' area non è finalizzata alla memorizzazione .
Convertire un indirizzo virtual in uno fisico:
Questo tipo di compito spetta al Cop0, il quale prende i primi 20 bit da
sinistra verso destra(VPN) e li associa ad un indirizzo (PFN) mentre il
resto dell' indirizzo viene lasciato invariato (offset).
La memoria che permette questa associazione si chiama
TLB(Translation Lookaside Buffer).
Oltre a questo lavoro il cop0 gestisce anche le eccezioni in fase di
accesso alla memoria.
Da virtual address a P.address
Cop0
La cop0 permette di gestire la memoria , eccezioni
,interrupt di sistema e breakpoint.
Questa unità è composta da 16 registri tra cui per 4 per il
TLB , 5 per i breakpoint , 4 per le eccezioni e altri 3 per
descrivere l' hardware e la situazione della cop0.
Per quanto riguarda la gestione delle eccezioni la cop0
permette di usare vettori di interruzione sia residenti in
ROM che in RAM.
CP0
IF
CP0
RD
ICACHE/Ram
ALU
MEM
WB
DCACHE/Ram
Cop0 Registri
Nome
Uso
Descrizione
Index
Read/Write
Punta a una delle entrate TLB
Random
Read
Punta a un entrata (casuale) nella quale avviene una corretta traslazione.
TBL low/High
Read/Write
Descrivono un operazione di Read/Write.
Break PC
Read/Write
Rappresenta un indirizzo di breakpoint nel quale il programma si ferma .
Breakpoint Data
Read/Write
Questo indirizzo rappresenta l' indirizzo di breakpoint in fase di lettura e di
scrittura .
BreakPoint Pc mask
Read/Write
Questo valore viene messo in and con il PC e viene confrontato
con il Break PC.
BreakPoint Data Mask
Read/Write
Questo valore viene messo in and con l' indirizzo del dato e
viene confrontato con il Breakpoint Data.
BreakPoint Control
Read/Write
Questo dato permette di dire quale tipo di breakpoint viene util. .
Context/Badv
Read
Questi due registri contengono l' indirizzo dell' eccezione.
Cause
Read
Descrive la recente eccezione .
EPC
Read
Questo valore rappresenta l' indirizzo di ritorno dopo l'
eccezione.
Processor ID
Read
Questo valore descrive la Cop0.
PID Mask
Read/Write
Pid del processo in esecuzione .
Sys status Reg.
Read/Write
Questo valore descrive se il cop0 è utilizzabile o meno ,l'uso
degli interrupt ecc..
Lista delle eccezioni:
Tipo di interrupt
Interrupt
Reset
Passa il controllo a un vettore di eccezione che si trova all'
inizio della memoria Bios.
Errore del Bus
Viene invocato questo tipo di interrupt quando vi avviene un
evento esterno del tipo : bus timeout ,backplane error...
Errore di Indirizzo Errore di lettura /scrittura di un dato non conforme a un byte
half word word oppure indirizzo non in User Mode.
Overflow
Superato il range consentito.
System Call
Viene chiamata una syscall
Breakpoint
Viene chiamata break.
Istruzione non
definita
Istruzione con codice operativo riservato o indefinito.
Cooprocessore non
utilizzabile
CU non è stato attivo.
TLB Mancante
TLB non è valido .
TLB Modificato
Durante un operazione di store un bit non è settato.
Interrupt
Interrupt hardware o software attivo.
Cop0 &TLB Istruzioni
Istruzione
Descrizione
LWC0 rt,offset(base)
Carica il dato dell' indirizzo sul registro rt .
SWC0 rt,offset(base)
Carico il contenuto del registro rt sull' indirizzo .
MFC0 rt,rd
Copia un registro della cpu(rt) in uno del cop0(rd).
MTC0 rt,rd
Copia un registro del cop0(rd) in uno della cpu(rt).
COP0 cpfun
Esegue un operazione (data dal valore di cpfun) la cop0.
TLBR
Vengono caricati i registri TLBlow e TLBhigh grazie al registro index.
TLBWI
Viene caricato il registro Index partendo da TLBlow e TLB high.
Viene ripristinato lo status register e di norma viene chiamato
alla fine di una routine di “risposta” a un eccezione(vettore di
interruzione).
REF
Altri spazio di indirizzi (non collegati alla ram)
Indirizzi
Spazio
0x1f00_0000-0x1f00_ffff Parallel Port (64K)
0x1f80_00000x1f80_03ff
0x1f80_10000x1f80_2fff
0xbfc0_0000-0xbfc7_ffff
Scratch Pad (1K)
Uso
Questi indirizzi permettono la
comunicazione tra unità periferiche
esterne con la ps1.
Lo scratch pad non è altro che una
cache dati .
Hardware Register Questi indirizzi permettono di andare a
(8K)
lavorare su registri di unità di
elaborazione esterne (vedi gpu ecc.)
Bios (512K)
Quest' area è dedicata alle syscall che
permettono di accedere al disco ecc.. .
Gpu(Graphics Process Unit)
La gpu ha 1 mb di frame buffer nel quale vi risiedono i pixel e le varie primitive .
Oltre a questo megabyte di buffer la gpu contiene una texture cache di 2kb che
permette di incrementare le prestazioni della gpu.
Malgrado lo spazio messo a disposizione sia 1Mb non tutto viene dato alla
gestione dello schermo .
Le risoluzioni supportate sono 256x240, 320x240, 384x240, 512x240,
640x240, 256x480, 320x480, 512x480 e 640x480.
Queste risoluzioni possono essere visualizzate interlacciate /non interlacciate e
con formato del colore a 24 bit o a 16bit ( di cui uno per la trasparenza).
Nel frame buffer i pixel sono rappresentati con 2 byte(fatta eccezione per la
texture)
S
15
BLUE
14
GREEN
10|9
RED
5|4
0
Comunicazione con la GPU
 Comunicazione con la gpu:
Ci sono due modi per comunicare con la gpu :
1.Tramite la cpu .
2.Tramite il dma (dalla ram).
 Contenuto inviato alla Gpu:
Il programma invia una lista ordinata chiamata (Ordering Table) alla GPU.
Questa struttura contiene delle primitive .
 Che cosa sono le primitive?
Una primitiva può essere :
-Poligoni a 3 o a 4 vertici ( supporta l' utilizzo del gourad shaded)
-Rettangoli (x,y,larghezza ,altezza)
-Sprite
-Linea
-Punti
Alcuni aspetti di queste primitive


I poligoni a 4 vertici sono disegnati come due poligoni da 3 vertici.
I rettangoli come gli sprite sono disegnati più velocemente rispetto ai
poligoni
 Le primitive texture sono contenute in delle page texture
(larghe 256x256 pixel nel formato di 15 bit ,
128x128 a 8 bit e 64x64 a 4 bit ).
 Le primitive texture sono :Sprite e poligoni.
Come accennato prima possono usare tre tipi di formato .
1- 15 bit diretti (quello descritto precedentemente )
2- 8 bit CLUT (Color lookup table)
I1
IO
15
8|7
0
3- 4 bit CLUT(Color lookup table)
I3
15
I2
12|11
I1
8|7
IO
5|4
0
IO ,I1,I2,I3 : sono indici
che fanno riferimento a
un colore nella CLUT .
Comunicazione tra CPU/GPU e viceversa.
Nella GPU ci sono tre registri hardware :

0x1f80_1814 (Gpu control/status):
1-Il registro di status permette di leggere la configurazione della
gpu(modalità di visualizzazione , DMA ,larghezza schermo ecc.)

2-Il registro di control permette una volta settato di eseguire
comandi come Reset Gpu , Reset Command buffer e tanto altro
ancora …
 0x1f80_1810 (Gpu data ):
serve per lo scambio di informazioni tra CPU /Gpu e GPU/Cpu.
Questi registri sono a 32bit.
CPU
GPU
DMA (Direct Memory Access)
Il DMA è una tecnica che permette a qualunque unità di elaborazione permette di poter
interloquire direttamente con la RAM(o viceversa) senza passare per la CPU .
Ci sono 7 canali che permettono di scegliere il dispositivo con cui interloquire:
Indirizzo
Canale
Dispositivo
0x1f80_1080
0
MDECin
0x1f80_1090
1
MDECout
0x1f80_10a0
2
GPU(list+image data)
0x1f80_10b0
3
CD-ROM
0x1f80_10c0
4
SPU
0x1f80_10d0
5
Parallel input/output
0x1f80_10e0
6
GPU OTC(clear the ordering
table)
Registri Dma

Channel- 0x1f80_10f0:
Questo registro permette di abilitare un canale o l' altro .
Per abilitare un canale o un altro basta settare a uno il bit
3*(C+1) Dove C è il canale che vogliamo settare .
Ad esempio se vogliamo settare il canale della Spu il cui numero è 4 dobbiamo
sommare 1 e moltiplicare per 3 (3*5=15).
 Address-(Base Address):
Questo registro rappresenta l' indirizzo del DMA (1 colonna).
 Size-(Base Address+4):
La prima metà del registro (dal 31esimo bit al 16esimo) rappresenta il numero di
blocchi che si possono leggere .
La seconda metà del registro (dal 15esimo bit al bit 0) rappresenta la grandezza di
ogni singolo blocco .
 Enable-(Base Address+8):
Permette di abilitare o disabilitare il DMA e di stabilire quale direzione stabilire
(Memoria → Dispositivo | Dispositivo → Memoria)
GTE(Geometry Trasformation Engine)
Questa unita è il cuore dell' elaborazione 3D .
Ha 32 registri per il controllo di un operazione (Control register) e altrettanti 32
per svolgere operazioni(Data register).
Per lavorare con questi registri ci sono istruzioni che permettono lo scambio tra
registri della cpu e Data register della cop2 ovvero MFC2 e MTC2 ( viceversa
), mentre per lo scambio tra registri della cpu e Control register le istruzioni
sono CFC2 e CTC2 (viceversa).
Per eseguire le operazioni della GTE si usa COP2 con un valore come parametro
che specifica il tipo di istruzione da eseguire (per ulteriori informazioni guardi
il link:[da mettere]).
-Rotazione di matrici .
-Traslazione di vettori.
-Prodotto tra vettori.
-Interpolazioni….
MDEC(Motion Decoder)
Questo decoder permette di decomprimere un file JPEG , in un formato decompresso
(composto da rgb) .
La MDEC è in grado di lavorare con blocchi 16x16 .
Per potersi interfacciare con il controller dobbiamo usare il dma attraverso il channel 0
e 1 (il primo per i blocchi compressi e il secondo per i blocchi decompressi).
Per poter gestire questa unità ci sono due registri :
 0x1f80_1820 – mdec0.
Questo registro definisce il formato del colore e la trasparenza applicata all' immagine
decompressa.
 0x1f80_1824 – mdec1
In lettura permette di sapere informazioni utili ad esempio se la MDEC è ancora in fase
di compressione o meno .
In scrittura permette il reset della MDEC.
SPU (Sound Processing Unit)
Questa unità ha un buffer di 512Kb, gestisce 24 canali .
Per ogni canale viene applicato un filtro ADSR.
Questo permette di effettuare alcune modifiche a livello audio(volume...).
Queste operazioni si possono effettuare modificando i registri:
1-0x1f90_1c00- 0x1f90_1d7f:Area dedicata ai canali.
In questo spazio abbiamo uno start address che permette di dire in quale
indirizzo della memoria del sound si trova il suono e tanti altri registri
che permettono di modificare il volume ecc..(ADSR).
2-0x1f901da2:Questo registro permette di indicare dove inizia l' area
degli effetti(ovvero l'area che contiene alcuni effetti ad esempio echo
ec..)
3-0x1f801d84-0x1f801d86:Regolazione del volume.
4-0x1f801d88-0x1f801d8a:Abilitazione voci
5-0x1f801d8c-0x1f801d8e:Disabilitazione voci
Comunicazione tra CPU e SPU
Per trasferire i dati dalla cpu alla memoria spu(senza dma) si utilizzano i registri
hardware:
SPU_STATUS2(0x1f80_1dae)- il quale ci dice cosa sta svolgendo la spu(fase di
attesa , fase di trasferimento).
SPU_ADDRESS(0x1f80_1da6)- il quale rappresenta l' indirizzo su cui scrivere i
dati.
SPU_DATA(0x1f80_1da8)- il quale rappresenta il dato da scrivere .
SPU_CONTROL(0x1f80_1daa)- il quale oltre a svolgere l' abilitazione dell' spu si
occupa dell' abilitazione della scrittura dei dati .
Per gestire l'abilitazione della spu, degli effetti... si usa il registro control
(0x1f801daa).
L' spu gestisce separatamente il volume del CD (attraverso l' utilizzo di registri
0x1f901db0,0x1f901db2,0x1f901db4,0x1f901db6 e le prime locazioni di memoria
della spu).
CPU
SPU
CD-ROM
Il cd-rom ha due velocità 1x e 2x che permettono di lavorare a 176K/sec e a
352K/sec .
Per gestire il cd-rom si usano 4 registri :
CDREG0(0x1f80_1800)-permette di inviare un comando , di richiederne il
risultato, di leggere se il trasferimento del comando è stato svolto
correttamente e di conoscere il tipo del comando .
CDREG1(0x1f80_1801)-permette di scegliere il comando da inviare e di leggere l'
eventuale comando.
CDREG2(0x1f80_1802)-permette di scegliere gli argomenti da inviare .
CDREG3(0x1f80_1803)-permette di gestire interrupt del cd(Data ready, command
complete acknowledge, end of data detected, error detected).
Lettore CD
Lista comandi CD-ROM
I comandi che vengono eseguiti sono di tipo:
-Sincronismo:Sync (0x00) Nop(0x01)
-Informazioni legate al cd :SetMode(0x0E permette di gestire la
velocità..),Getparam(0x0F permette di restituire informazioni riguardanti la
modalità , lo status ecc..)
-Lettura dei dati:Setloc(0x02 inserisce la futura posizione della testina in una
posizione),ReadN(0x06 legge i dati con interrupt), GetLocL(0x10 ritorna gli
ultimi byte dell' ultimo settore), SeekL(0x15 sposta la testina sulla locazione
settata da SetLoc)
-Gestione delle traccie audio:Play(0x03 permette di leggere i dati i quali vengono
caricati sulla spu),Forward and Backward (0x04 e 0x05 cambia la traccia)
,Mute and Demute (abilita e disabilita streaming sulla spu), GetLocP(0x11 è
l'equivalente di GetLocL per l'audio), GetTN(restituisce il numero delle traccie
audio), GetTD(0x14 restituisce la traccia corrente).
-Gestione del motore:Standby(0x07 permette di stoppare tutte le letture e
scritture), Stop Motor (0x08 permette di stoppare il motore). Pause (0x09
equivalente di Standby solo che mantiene la posizione della testina),Init(0x0A
Mode=00,Standby)
-SottoTest:Test(0x19 esegue alcuni sottocomandi tra cui ritorno del codice di
protezione e reset).
Gamepad
La comunicazione tra Joypad e cpu è data dall' utilizzo delle syscall (InitPAD
,StartPAD ,....) oppure dall 'utilizzo dei registri STATUS (0x1f801044),
CTRL(0x1f80104A)e DATA(0x1f801040).
La comunicazione avviene tramite un clock con frequenza 250KHz.
La porta di comunicazione seriale è composta da 8 pin raggruppabili nei seguenti
gruppi:
-Data : ritorna i dati delle memory card/pad.
-Comando :invia il comando da eseguire.
-Alimentazione :7Volt ,Massa e 3,6 Volt.
-Selezione :Seleziona quale pad/memory abilitare o meno .
-Clock :Permette una trasmissione sincrona.
Connettore PSX
Gamepad
Memory card
Una memory card della ps1 possiede 128Kbyte EPROM.
Il tempo di lettura/scrittura è di 10kb/s e di norma supporta 15000
scritture .
La trasmissione a livello elettrico è molto simile a quella del joystick.
File system memory card
Serial-Parallel Input/Output
La porta seriale permette di trasferire informazioni a un massimo di 256Kb.
La comunicazione con serial I/O avviene tramite registri o tramite syscall .
Questa comunicazione oltre a giocare in multiplayer permette anche di usare l'
altra playstation come unità alternativa di elaborazione raddoppiando così la
capacità di calcolo.
La porta parallela in realtà viene considerata una porta di espansione .
Questa accede a tutto ciò che è connesso al bus .
Un utilizzo comune di questa porta è dato dal Gameshark (per trucchi) e Action
Replay(per altri dispositivi non ufficiali ).
Per comunicare con questa porta la psx mette a disposizione 64Kb di
indirizzamento (vedi memoria).
Parallel I/O
Serial I/O
Storia della Playstation 2
Progetto di Architettura degli Elaboratori – Prof. Leonardo Pasini
Corso di Laurea in Informatica – Scuola di Scienze e Tecnologie – Università di Camerino
Anno Accademico: 2011/2012
Fabio Pagnotta, Stefano Traini , Alessandro Di Carlo
2000 - Lancio della
•
In contemporanea all’uscita della
PSone Sony lanciò sul mercato la sua
seconda console: la PlayStation2 che
fu prodotta in diverse colorazioni ma le
due più famose furono la versione
‘’Black’’ e la versione ‘’Silver’’.
•
Non fu subito un successo per tre
motivi:
- tools di sviluppo inadeguati;
- problemi di esportazione;
- costo troppo elevato.
2004 - L’ascesa della
•
Tuttavia nel 2004 le vendite della nuova
console di Sony incrementarono
vertiginosamente grazie a tre fattori :
1. Rilascio di nuovi tools di sviluppo;
2. Incremento di titoli destinati ad un
pubblico adulto che portò la console
ad essere uno strumento usato da
tutta la famiglia;
3. Uscita della PS2 Slim, una versione
ridisegnata della PlayStation2.
Il grande successo della
•
La seconda console marchiata Sony
fu la piattaforma videoludica più
venduta del mondo, toccando quota
153 milioni di vendite
•
Sony sancì la sua dismissione dal
commercio l’8 novembre 2012.
Progetto di Architettura degli Elaboratori – Prof. Leonardo Pasini
Corso di Laurea in Informatica – Scuola di Scienze e Tecnologie – Università di
Camerino
Anno Accademico: 2011/2012
Alessandro Di Carlo, Fabio Pagnotta, Stefano Traini
Da cosa è composta?
Unità di elaborazione:




CPU Emotion Engine da 300 MHz (con cooprocessore Vector Unit 0 & Vector Unit 1;
cooprocessore FPU; CID)
GPU (Graphics Synthesizer)
SPU
I/O CPU
Memorie:






RAM 32Mb (Direct RDRAM)
RAM VIDEO 4Mb
RAM I/O 2Mb
RAM SPU 2Mb
2 memory card
2 cache memory (CPU) da 16Kb (istruzioni) e da 24Kb (dati)
Dispositivi di I/O:





CD-ROM/DVD
2 porte proprietarie per il controller (joystick)
2 porte USB
Uscita Video
Supporto FireWire/Ethernet/Infrarossi
Bus di sistema
Bus della CPU:

Memory Bus Bandwidth: 3.2 Gb per secondo
Bus del Graphics Synthesizer:

DRAM Bus width: 2560-bit (composto da tre bus indipendenti: 1024-bit write, 1024-bit
read, 512-bit read/write)
BUS del I/O Processor:

Sub Bus: 32-bit

CPU Core
 128-bit CPU RISC (MIPS IV subset)
 300 MHz clock
 32 Mb main memory

Cache
 16 Kb Instruction Cache

8 Kb Data Cache
○ Piccola cache poichè la maggioranza dei dati sono trasferiti in maniera dinamica
quindi non è necessario che sostino nella cache per lunghi periodi di tempo
 16 Kb Scratch Pad
○ Se è richiesta una maggiore DCACHE, viene usato lo Scratch Pad
○ Richiesto 1 ciclo di clock per l’accesso
L’Emotion Engine utilizza gli stessi registri della Playstation 1
analizzata in precedenza, con l’unica differenza che la prima ha un
processore a 32 bit mentre la seconda ha un processore da 64 bit.
Set di Istruzioni
La Playstation 2,rispetto alla sua antecedente ha un set più ampio di istruzioni. Tali set sono
esposti in queste tabelle:
Addizione e Sottrazione fra interi
Inst.
Description
ADD
Add
ADDI
Add immediate
ADDIU
Add immediate unsigned
ADDU
Add unsigned
DADD
Doubleword add
Addizione e sottrazione Floating Point
Inst.
Description
Add.S
Single Floating Point
add
Adda.S
Single Floating Point
add to Accumulator
Sub.S
Single Floating Point
substract
Suba.S
Single Floating Point
substract to
Accumulator
Vadd
Addition
Divisione e Moltiplicazione fra interi
Inst.
Description
Div
Divide
Divu
Divide unsigned
Mult
Multiply
Multu
Multiply unsigned
Div 1
Divide 1
Divisione e Moltiplicazione in Floating Point
Inst.
Description
Div.S
Single Floating Point
Divide
Mul.S
Single Floating Point
Multiply
Mula.S
Single Floating Point
Multiply to Accumulator
Vdiv
Floating Divide
Vmul
Multiply
Vector Unit 0
Questa unità vettoriale agisce, come la FPU, da coprocessore per la CPU e quindi
può essere assimilata ad una delle pipeline logiche della CPU. Essa è composta
da:
•32 registri da 128 bit per le operazioni su FP a singola precisione; 16 registri da 16
bit per le operazioni su interi;
•una unità di load e store (LSU), una ALU per interi, un generatore di numeri
casuali (RNG) ect;
•una cache per istruzioni e una per dati entrambe da 4 KB;
Vector Unit 1

La VU1 è dotata di tutte le caratteristiche della VU0 con la differenza di una
cache dati e istruzioni da 16 KB ciascuna in ragione della maggiore quantità
di dati che deve trattare rispetto alla VU0 e di una unità Elementary
Functional Unit (EFU) che è destinata alla computazione elementare
geometrica.

La VU1 può inviare la Display List alla GIF in tre diverse modalità (o
seguendo la terminologia Sony tramite tre differenti percorsi): tramite il bus
principale, direttamente dalla VIF oppure direttamente dalla cache dati della
VU1. Come questi trasferimenti avvengano non è comunque svelato dalla
Sony ma sono stati predisposti per non saturare con la gran mole di dati delle
trasformazioni geometriche il bus principale.
Controller alla memoria di
accesso diretta (DMAC)

Direct Memory Access Controller (DMAC)
 Contiene 10 canali
 Controlla I trasferimenti di dati tra la memoria
principale e I processori/scratch pad
 Larghezza di banda del bus di 2.4Gb/sec.
 Il trasferimento dei dati non rimangono in fase di
stallo nella CPU, ciò rappresenta un aumento
delle prestazioni.
 I trasferimenti devono essere allineati a 128bit.
Approfondimento memoria diretta
Gli indirizzi fisici di memoria dell’ Emotion Engine possono contenere massimo 2 Gb di dati. Essi sono
divisi in due segmenti chiamati KSEG 0 e KSEG 1. I registri presentati nella tabella seguente sono
lunghi 32 bit se non diversamente specificato:
Module
Address
Name
Contents
TIMER
0x1000_0000
0x1000_0010
0x1000_0020
....................
TO_COUNT
TO_MODE
TO_COMP
…………..
TIMER 0 counter value
TIMER 0 mode/status
TIMER 0 compare
value
………………
IPU
0x1000_2000
0x1000_2010
0x1000_2020
…………….
IPU_CMD
IPU_CTRL
IPU_BP
……………….
IPU command
IPU control
IPU input FIFO control
……………..
GIF
0x1000_3000
0x1000_3010
0x1000_3020
……………..
GIF_CTRL
GIF_MODE
GIF_STAT
………….
GIF control
GIF mode setting
GIF status
……………..
VIF 0
0X1000_3800
0X1000_3810
0X1000_3820
……………..
VIF0_STAT
VIF0_FBRST
VIF0_ERR
……………
Status
Operation Control
Error Status
…………………
“Graphics Synthesizer”



Il suo compito è quello di restituire la lista delle primitive che l'Emotion
Engine invia ad esso.
Contiene 4Mb di memoria DRAM embedded per la memorizzazione di
frame buffer,Z buffer e texture
Supporta punti, triangoli, strisce, linee e poli-line
Memoria locale GS
Il GS utilizza quattro aree per il disegno. La CPU deve garantire aree di
dati (buffer) nella memoria locale prima di iniziare il disegno.
IL FRAME BUFFER
Zona per il disegno. I pixel memorizzano il risultato di ciò che viene
realizzato.
 Z BUFFER
Zona per il disegno. Memorizza il valore Z dei risultati del disegno.
 TEXTURE BUFFER
Memorizza i dati relativi alla struttura dell’immagine
 CLUT BUFFER
Memorizza la tabella “Color Look Up” usata quando la texture è un colore
index

Differenza tra registri “General
Purpose” e “Registri Privilegiati”
Esistono due tipi di registri nel Graphics
Synthetizer : i registri general purpose e i
registri privilegiati.
I registri general purpose sono registri di sola
scrittura,mentre i registri privilegiati possono
avere un accesso di tipo lettura/scrittura
Registri General Purpose del GS
I registri General Purpose sono principalmente utilizzati per impostare le informazioni di
vertice, l'ambiente di disegno e la trasmissione tra i buffer per le primitive di disegno. Tutti
loro sono registri di sola scrittura.
Tra i registri che impostano l’ambiente di disegno, quelli con i nomi nel formato “ XXX_1
e XXX_2 “ sono progettati per avere due contesti come raffigurato dalla tabella seguente:
FRAME
(FRAME_1,FRAME_2)
ZBUF
(ZBUF_1,ZBUF_2)
TEX0
(TEX0_1,TEX0_2)
TEX1
(TEX1_1,TEX1_1)
MIPTBP1
(MIPTBP1_1,MIPTBP1_2)
MIPTBP2
(MIPTBP2_1,MIPTBP2_2)
CLAMP
(CLAMP_1,CLAMP_2)
TEST
(TEST_1,TEST_2)
ALPHA
(ALPHA_1,ALPHA_2)
XYOFFSET
(XYOFFSET_1,XYOFFSET_2)
SCISSOR
(SCISSOR_1,SCISSOR_2)
Registri Privilegiati del GS
Vi sono anche i Registri Privilegiati:
1.
System Control/Status register
2.
PCRTC Setting Register
3.
Event ID Register


Poiché i registri privilegiati e i registri General Purpose vengono mappati in diversi spazi, i
loro indirizzi di registro possono essere duplicati. Inoltre, a differenza dei registri General
Purpose, che hanno solo accesso in scrittura, alcuni dei registri privilegiati possono avere
accesso in lettura/scrittura. Per chiarimenti, le seguenti informazioni si aggiungono ai nomi
di registro:
(r/w) Read/Write
(w) Write Only
Sound: SPU2
-Numero di voci:
- 48 Canali più voci definibili
- voci programmabili in software
-Frequenza di campionamento: 44.1 KHz o 48 KHz
(selezionabili)




L’SPU2 è un processore di sintesi audio che è composto da due
nuclei. L’SPU2 contiene anche una memoria locale e un I/O esterno. I
due nuclei sono adibiti a:
Riprodurre i suoni dati in input
Processare voci
Dare in output tutti i suoni processati
Eseguire l’elaborazione digitale di effetti
I nuclei (CORE1 e CORE 2) sono i componenti di base dell’ SPU2
ciascuno avente una funzione di generazione di suono con 24 voci.Essi
operano ad una frequenza di 36.864 MHz.
I/O Processor
-CPU: Attuale PlayStation CPU
-Frequenza di clock: 33.8 MHz or 37.5 MHz (selezionabili)
-Banda passante SubBus: 32 Bit
-Interfaccie: Porte IEEE1394, Universal Serial Bus (USB) ,
Comunicazione via PC-Card PCMCIA,Ethernet
-Media: DVD-ROM (CD-ROM compatibile)
La Playstation 2 e Internet
Fondamentale novità rispetto alla Playstation 1
è la possibilità di collegare la Playstation 2 ad
internet.
Tale collegamento è possibile solo con una
periferica esterna chiamata “Network Adaptor”.
Metodi di collegamento ad Internet
Connessione diretta:
Connessione Condivisa:
Connessione tramite Router:
Connessione Wireless:
Collegate tramite Lan: