bertocar ha scritto:Beh a parte i termini (chip e fast) anche se guardiamo una scheda video di un pc ha la sua memoria dedicata.
OK, ma la memoria video della scheda video ha una banda di memoria di un ordine di magnitudo superiore rispetto a quanto ha a disposizione la CPU con la sua RAM.
Qui non c'è alcun vantaggio a dividere le due RAM al momento, visto che sono esattamente le stesse fisicamente.
La configurazione che ho pensato era per rendere il processore video piu' autonomo possibile visto che non si dovra' limitare ad emulare amiga ma lo dovremo potenziare in futuro.
YAGNI. Come potenziarlo in futuro lo vedremo... in futuro.
Al momento pensiamo a mettere le basi per realizzare intanto un clone di Amiga (1200).
Poi lo potenzieremo adeguatamente, e lo faremo col tempo e nei modi giusti.
Consideriamo inoltre che un mc (memorycontroller) come xbox non e' proprio semplicissimo da implementare...
Non sono esperto, ma si tratterebbe semplicemente di dare una priorità maggiore alle varie periferiche, a seconda del loro "peso" / importanza.
E' una cosa a cui comunque si deve pensare, perché l'Amiga funziona proprio così.
Qui ci sarebbe soltanto da aggiungere la CPU alle varie periferiche, con la priorità più bassa però.
Per semplicita' creo un bus FAST a cui accede solo la cpu per le sue elaborazione e n bus chip (l'fpga della cpu ha spazio in termini di i/o per questo) che i coprocessori possono utilizzare tranquillamente senza compromettere la cpu in termini di timing.
Non curarti di questo. Se i coprocessori sono nati, è perché erano in grado di eseguire certe operazioni molto più velocemente rispetto alla CPU.
Per questo la CPU ha sempre avuto una priorità più bassa. Poi con la fast ram (quella vera, però!) sappiamo che la CPU si slegava dall'accesso alla chip ram, e quindi poteva svolgere suoi calcoli.
Ma fino a che punto questo era veramente comodo? A mio avviso non lo era. Da programmatore di videogiochi Amiga ti posso dire che avrei preferito di gran lunga avere tutta la banda di memoria chip+fast a disposizione dei coprocessori, anche se la CPU rimaneva a "morire di fame", perché era il tallone d'Achille del sistema. O comunque il meno importante in assoluto a livello di utilizzo della banda.
In ogni caso il sistema permetteva di rilasciare un ciclo di clock alla CPU ogni 3 (parlo della chip ram), se si voleva che la CPU avesse comunque qualche ciclo di clock a disposizione (quando ne faceva richieste, ovviamente; altrimenti il chipset si fregava tutti gli accessi alla chip-ram).
Questo, sempre per una questione di compatibilità col software esistente, va implementato, e a mio avviso lo si continuerebbe a utilizzare anche per dare alla CPU un po' di cicli di clock se necessario. A discrezione del programmatore, che sa cosa gli serve in quel momento.
Le SRAM costano notevolmente piu' delle DRAM perche' mantengono i dati senza necessita' di refresh; sono piu' lente ma non necessitano di mc.
Pensavo che fossero anche molto più veloci delle DRAM.
In questo caso, preferirei delle DRAM al posto delle SRAM. Tanto anche l'Amiga usava le DRAM, e il chipset gestiva anche il loro refresh (c'erano degli slot allocati apposta nella riga di raster). Anche questo da emulare per una corretta compatibilità.
Ho chiesto una quotazione a cypress per comporre 512m e valuto.
Sarebbe possibile avere un bus unico da 128 bit? 32+32+32+32 insomma.
Ci sarebbe un risparmio per la logica d'indirizzamento e accesso, perché non si tratterebbe di 4 bus completamente diversi, che quindi in un certo momento possono far richieste a 4 locazioni (e chip di memoria) completamente diversi.
Le mie considerazioni sono perche' il mio progetto (mi piacerebbe dire il nostro) punta a creare una piattaforma che sia notevolmente piu' potente degli amiga classic ma senza stravolgerne le basi.
Considera che, in fin dei conti, l'Amiga base aveva la memoria unificata. Le configurazioni più diffuse (Amiga 1000, 500, 2000, 500+, 600, 1200) avevano tutte un solo tipo di memoria a disposizione (chip ram; la slow-ram in realtà non era fast-ram, ma in realtà chip-ram non indirizzabile dal chipset, ma il cui accesso era regolato come la chip-ram; in pratica era il peggio dei due tipi di memoria), e i programmatori che hanno scritto videogiochi l'hanno fatto tenendo conto di ciò.
Ed è su questo che punterei, personalmente: memoria unificata. Quanto meno a livello di banda di memoria. Sarà poi il programmatore a decidere come sfruttarla adeguatamente.
Macchine che chiunque puo' programmare, anche in assembly e divertendosi.
Per questo il 68000 (meglio 68020, ovviamente) è l'ideale.
A volte accendo il mio A500, inserisco un floppy e al boot presentano gia' grafica e musica dopo aver letto 2 track e penso: questo era un sistema che permetteva tutto!
Già. Bei tempi!
Quali sono i limiti? cpu lenta, grafica non adatta ai tempi e audio da aggiornare
Allora prepariamoci la strada!
CPU mooolto piu' potente, capacita' grafica per arrivare magari anche a fullhd e audio migliorato e abbiamo un amiga degno del 2012 che non sara' mai come un pc i7 e mai nemmeno lontanamente come una console... d'altronde se volessi scrivere una demo per ps3 non lo posso fare! E se voglio giochi superipercurati (che a me non piacciono forse perche' cresciuto con i c64) mi compro una ps3...
Questa e' la mission che ci siamo posti.... speriamo di riuscirci anche grazie a il contributo di chi vuole
Io cercherò di darvi dei suggerimenti, tenendo conto della mia esperienza nello sviluppo di videogiochi per Amiga, ma in generale del mio interesse nell'ambito delle architetture degli elaboratori.
Una domanda al volo: non sarebbe meglio un solo FPGA da 50K LE anziché due da 25K LE ciascuno? Posto che il costo del primo sia soltanto leggermente superiore alla somma dei due.