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:
Documenti analoghi
benchmarking ps1/ps2 - Benchmark tra Playstation 1 e Playstation 2
1.2.1 Compito svolto da ogni componente :...............................................................................4
1.2.2 Programmi utilizzati: ..................................................