Newsgroup: it.comp.hardware.cpu
Titolo: E' + veloce il P4 o un PIII ???????????

un'evoluzione a 32bit!
no, il 65816 o giu' di li (ne esistono 3 modelli) usato anche in varie
console (tra cui il  pc engine e lo snes).
16bit e indirizzamento a 24 bit, un modo "6502-compatibile" ed una
versione e' anche compatibile pin to pin (naturalmente senza i 24 bit di
indirizzamento)...
poi, per i malati di mente, probabilmente e' ancora in commercio una
"cartuccia" per C64, con su un 65816 a 16MHz, slot per simm fino a 16MB di
ram ed interfaccia IDE per cd e hard disk...

Qualcuno definisce il 6502 un RISC ante-litteram.
dev'essere per quello che NON ha lo stack ;p
per essere un risc poi ha modi di indirizzamento troppo complessi (i vari
indici indiretti con X e Y ...)
cmq leggevo che il fetch dell'istruzione successiva veniva sovrapposto
all'esecuzione dell'istruzione corrente (quando possibile): se il calcolo
del pc non fosse dipeso dall'alu (ad 8 bit poi) sarebbe stato una bella
bestia.
(e se avesse avuto uno sp a 8 bit, e se avesse avuto piu' registri...)

 (e se avesse avuto uno sp a 8 bit, e se avesse avuto piu' registri...)
SP?
Saluti.
--
//  Xelloss dal portatile || in real life: Wilmer Ricciotti  \\
|  
wirix...@libero.it
 (elimina il demone per rispondermi)  |
|    ICQ: 3233084        IRC: Xelloss@AzzurraNet, @ChatNow    |
| Hardware Information & Technology: 
http://hit.edengames.net
 |
\_______Like the Phoenix I rise from the ashes of life________/

 SP?
Credo Stack Pointer... o no?
MaxArt

 Credo Stack Pointer... o no?
Per l'appunto, il registro S è a 8 bit...


 SP?
stack pointer, cmq volevo dire 16 (che noia rivedere gli stessi errori a 
distanza di mesi ^^; )

 ha pochissime istruzioni :)
Si, ma per essere RISC doveva eseguire tutte le istruzioni in un numero
fisso di cicli di clock invece ad esempio le istruzioni di branch richiedono
un ciclo in piu` se si supera la pagina quindi l'architettura NON e` RISC.
E` vero che R sta per Reduced ma se uno ha abbastanza transistor puo` fare
un RISC con migliaia di istruzioni al patto che ogn'una abbia una sua
circuiteria di esecuzione e non condivida parti con altre istruzioni gia` il
fatto che nel 6502 ci vogliono almeno 2 cicli per eseguire l'istruzione piu`
semplice (la NOP, un ciclo di fetch ed uno di esecuzione) indica che non e`
un processore RISC ma CISC infatti ad esempio l'istruzione LDA (carica
l'accumulatore) puo` trovarsi nei seguenti modi:
Immediato opcode $A9 cicli 2
Pagina-0 opcode $A5 cilci 3
Assoluto opcode $AD cicli 4
pagina 0,x opcode $B5 cicli 4
assoluto,x opcode $BD cilci 4 piu` uno se si supera la pagina
assoluto,y opcode $B9 cicli 4 piu` uno se si supera la pagina
indicizzato indiretto, y opcode $B1 cicli 5 piu` uno se si supera la pagina
indicizzato indiretto,x opcode $A1 cicli 6
ovvero piu` l'istruzione diventa complessa piu` aumentano i cicli necessari
all'esecuzione tipico dei processori CISC
Giovanni (uno che ancora manutiene programmi scritti per il 6502/65c02)

 Giovanni (uno che ancora manutiene programmi scritti per il 6502/65c02)
Saluti. Uno Xelloss che ha scritto un approssimativo emulatore 6502 (in
assembler MIPS)...


 assembler MIPS)...
6502 o 65c02 ?
Giovanni

 6502 o 65c02 ?
6502... almeno credo... non so esattamente quali istruzioni e modi di
indirizzamento abbia aggiunto il 65c02, ho solamente seguito alla lettera
una guida di riferimento...
Saluti.


 una guida di riferimento...
La versione "c" aveva qualche differenza, credo
nell'aritmetica BCD, nella gestione "edge triggered"
dei segnali (invece di "level triggered") e
dovrebbe essere CMOS.
bye,
-- 
  Piergiorgio Sartor

 un ciclo in piu` se si supera la pagina quindi l'architettura NON e` RISC.
Se il 6502 non e` RISC, cos'e` lo Z80?
In realta` la "C" di RISC puo` essere
"C"omputer oppure "C"cycles.
Nel caso, semplificativo, del 6502, vale
in secondo caso, soprattutto in confronto
con lo Z80.
bye,
-- 
  Piergiorgio Sartor

 con lo Z80.
Beh in ogni caso il fatto che il 6502 fosse "più risc" dello Z80 (ammesso
che lo fosse) non autorizza a chiamarlo RISC...


 che lo fosse) non autorizza a chiamarlo RISC...
Le definizioni possono essere relative.
Nel caso delle due CPU in questione, i concetti
di RISC o CISC non esistevano ancora, quindi,
in realta`, non sarebbe possibile classificarli,
secondo questi criteri.
Pero`, avendo una visione un po' meno ristretta,
mi pare chiaro che il 6502 sia RISC e lo Z80 CISC.
bye,
-- 
  Piergiorgio Sartor

 Se il 6502 non e` RISC, cos'e` lo Z80?
Sono tutti e due CISC, di cui uno (6502) meno  potente dell'altro. 
L'architettura del 6502 è ASSOLUTAMENTE CISC! Non si deve confondere con il 
fatto che ha relativamente 'poche' istruzioni!
-- 
People who deal with bits should expect to get bitten.  - Jon Bentley
News 2000 [v 2.06] - 
http://www.akapulce.net/socket2000

 fatto che ha relativamente 'poche' istruzioni!
Non so se siano poche, so che usano pochi cicli
che paragonate allo Z80, il che rende il 6502 RISC.
Per quello che puo` valere una definizione a posteriori...
bye,
-- 
  Piergiorgio Sartor

 conclusione alcuna, peraltro.
Non c'č storia! Manco le I/O aveva il 6502...
P.S.
Sono uno spectrumista, capirai.
-- 
Never put off till run-time what you can do at compile-time.  - D. Gries


 Sono uno spectrumista, capirai.
Aaaah! Ora si spiega tutto...
Comunque non c'era paragone, il 6502 era
di gran lunga piu` veloce :-)
(Io avevo il C64...)
bye,
-- 
piergiorgio

 di RISC o CISC non esistevano ancora, 
Il primo a montare un processore RISC fu l'Archimedes.
-- 
"C'è chi si domanda se Mosè sia stato una vittima della radioattività"
(post su IDM)
it.cultura.classica: 
http://digilander.iol.it/mmanca

 un RISC con migliaia di istruzioni al patto che ogn'una abbia una sua
RISC e CISC si riferiscono (almeno in origine) esclusivamente al set di 
istruzioni, non alle  caratteristiche interne. l'approccio RISC consente 
di "risparmiare" area,  ma e' una conseguenza della scelta del set di 
istruzioni.

 considerato RISC almeno per la modalità BCD...
e che c'entra ? quella e' una caratteristica dell'ALU. allora i processori 
col moltiplicatore hardware (o anche microprogrammato, che e' anche 
peggio...) ?

 peggio...) ?
C'entra perché complica la logica e quindi rallenta l'esecuzione
(potenzialmente).
E' solo l'ennesima dimostrazione che un processore "RISC ante litteram" non
poteva esistere... magari puoi dire che non è nemmeno un CISC nel vero senso
della parola... in effetti la polemica RISC vs. CISC trattava di ben altri
tipi di processori. Definiamolo allora "pre-CISC", nel senso che non ha un
instruction set complesso, ma è comunque orientato verso la complessità. Del
resto in quel periodo si era convinti che potenziare l'ISA anche a costo di
complicarla portasse ad automatici benefici in prestazioni e quindi è ovvio
che fossero orientati in questa direzione. I RISC non erano neanche
nell'aria.
Saluti.


 che fossero orientati in questa direzione. I RISC non erano neanche
Questo e` vero ed infatti abbiamo, ancora una
volta, lo Z80, che segue quella strada.
bye,
-- 
  Piergiorgio Sartor

 di gran lunga piu` veloce :-)
No, no  e poi no! ;-)
-- 
The purpose of computing is insight, not numbers.  - Hamming


 Il 6502? Orientato verso la complessita`?
Sì, contiene embrionalmente tutte le caratteristiche che hanno portato ai
CISC. Non è complesso, ma è più facile modificarlo in CISC che non in RISC.


 CISC. Non č complesso, ma č piů facile modificarlo in CISC che non in RISC.
Con 3 registri, pure asimmetrici?
Non direi, secondo me e` piu` facile farlo andare
verso un RISC.
Basta mettergli un pipeline a 5 (o forse 3?) stadi
e diventa RISC, esegue ogni istruzione in un ciclo.
bye,
-- 
  Piergiorgio Sartor

 e diventa RISC, esegue ogni istruzione in un ciclo.
Non mi sembra una motivazione sufficiente a definirlo RISC...


 Non mi sembra una motivazione sufficiente a definirlo RISC...
E piu` che sufficiente... :-)
Sempre considerando l'epoca, si intende, ed il metro
di paragone disponibile (Z80).
Il 6502 e` semplice e veloce, questo lo rende RISC,
ma ovviamente non e` paragonabile ad un RISC vero.
bye,
-- 
  Piergiorgio Sartor

 ma ovviamente non e` paragonabile ad un RISC vero.
Ancora non sono d'accordo, queste sono definizioni a posteriori; la
filosofia RISC non ha nemmeno sfiorato la mente dei progettisti del 6502;
pur essendo più semplice dello Z80 rimane ben piantato nella categoria dei
CISC, o meglio dei pre-CISC, che non erano veramente "complex" solamente per
i limiti dei processi produttivi dell'epoca.


 i limiti dei processi produttivi dell'epoca.
E` sempre relativo, uno all'altro.
bye,
-- 
  Piergiorgio Sartor

C'è diversità di vedute, quindi non si approda a una soluzione. Alla fine
dei conti, però, una cosa rimane: il 6502 somiglia a molti CISC e a nessun
RISC che conosco. Che è il motivo per cui lo chiamo pre-CISC.


 RISC che conosco. Che è il motivo per cui lo chiamo pre-CISC.
In realta` il 6502 non somiglia a niente, cosi` come
lo Z80, dato che le definizioni sono successive e
non tengono conto di cosa c'era prima.
Quindi non e` possibile fare classificazioni, pero`,
ripeto, _relativamente_ alle CPU dell'epoca ed avendo
una visione un po' ampia della cosa, il 6502 e` piu`
RISC di uno Z80, quindi, se proprio dobbiamo fare
distinzioni, il 6502 e` RISC, lo Z80 CISC.
Ma, ripeto, non si puo` fare una distinzione in base
alle attuali CPU RISC/CISC.
Ti dico persino che la definizione CISC non esisteva
prima dei RISC, quindi anche questa e` "virtuale",
per tutte le CPU, anche complesse, pre-RISC.
Vedi MC68000 o tutta la famiglia x86.
bye,
-- 
  Piergiorgio Sartor

 Vedi MC68000 o tutta la famiglia x86.
Non sono d'accordo, come ho già detto, perché per me RISC o non RISC è una
questione di ISA, e quindi visto che i primi RISC si confrontavano e
contrapponevano con determinate architetture come 68k e x86, la definizione
"CISC" è retroattiva fino al 68000 e all'8086.
Spero di mettere d'accordo tutti e chiudere l'argomento dicendo che Z80 e
6502 sono processori "non-CISC non-RISC" e che il 6502 è più semplice (e non
più RISC) dello Z80 :-).


 più RISC) dello Z80 :-).
OK, OK, di sicuro non sono VLIW :-)
bye,
-- 
  Piergiorgio Sartor

 dovrebbe essere CMOS.
no, ha delle istruzioni in piu` tipo phx e phy, inca e deca assenti nella
versione nmos, comunque non solo quelle ha anche la BRA incondizionata, una
serie di istruzioni bit oriented, etc, io lo so bene perche` ho dovuto
debuggare programmi scritti in 65c02 con un disassemblatore per 6502 e
quindi i codici nuovi li conosco tutti bene quando ne incontavo uno per un
pezzo dovevo debuggare a mente, le BRA incondizionate le sostituivo con BNE,
BEQ, BCC o BCS quando possibile per poi non avere problemi con il
disassembler, ovviamente all'epoca usavo un assembler ad un passo con
indirizzi di memoria assoluti.
Giovanni

 serie di istruzioni bit oriented, etc, io lo so bene perche` ho dovuto
Ok perfetto, allora il mio emulatore emulava solo il 6502 ;).


 miss, per non parlare degli stalli delle pipeline...
Va bene, forse l'esempio del ciclo sull' overflow di pagina non era
l'esempio giusto ma quello dell'istruzione LDA che in dipendenza
dell'indirizzamento sorgente impiega dai 2 ai 6 cicli di clock si, la LDA e`
complessa e quindi il 6502 anche se povero di istruzioni (dopotutto e` un
microprocessore datato Giugno 1975) NON e` un processore RISC. Dopotutto e`
cugino del motorola 6800 da cui e` nato nel 1977 il 6809, bel processore i
registri e le istruzioni erano un super set del 6800 ( e del 6502!!!) con in
piu` il registro U (User stack) molto utile per allocare dinamicamente
l'area di lavoro delle subroutines, che poi si e` evoluto nel Settembre del
1979  nel 68K.
Ed anche se qualcuno in questo thread ha messo in dubbio che un processore
che abbia  l'istruzione MOVE con i seguenti modi di indirizzamento non sia
CISC:
Data register direct
Address register direct
Address resister indirect
Postincrement register direct
Postdecrement register indirect
Register indirect with displacement
Register indirect with index
Absolute short
Absolute long
Program counter relative with displacement
Program counter relative with index
immediate
con i primi 7 indirizzamenti codificati nei bit da 3 a 5 (source) e nei bit
da 6 a 8 (destination)
Per me il 68K e` il prototipo dei processori CISC (e ortogonali) ed il 6502
e` un suo prozio.
Giovanni

 Ok perfetto, allora il mio emulatore emulava solo il 6502 ;).
Come il 99% degli emulatori a PC
Giovanni

 no, ha delle istruzioni in piu` tipo phx e phy, inca e deca assenti nella
Sei sicuro sia il 65c02 e non il 6510 o 6511?
(O quell'altro che usava l'Apple ///?).
Tra l'altro, una cosa interessante del 6502,
sono le istruzioni non documentate.
Ci sono "strane" istruzioni, che altro non sono
che la combinazione di istruzioni standard, fatte
a mano, secondo il "bit pattern" dell'opcode.
Il che fa pensare che vi sia un collegamento
diretto tra i bit e l'attivazione dei vari
componenti del chip.
bye,
-- 
  Piergiorgio Sartor

 componenti del chip.
Quindi e` un CISC giusto??
Quando e` uscito nel 1975 era un processore complessisimo, le dimensioni dei
transistorn all'epoca si misuravano ad occhio o sbaglio? :-)
Giovanni

 transistorn all'epoca si misuravano ad occhio o sbaglio? :-)
Lo Z80 era sempre piu` complesso ed anche come
concetto di progettazione era di gran lunga
piu` CISC del 6502.
bye,
-- 
  Piergiorgio Sartor

 Quindi e` un CISC giusto??
Veramente, questa è una caratteristica eminentemente RISC :-): semplice
decodifica dell'istruzione. Ma vale anche per tutti i processori più vecchi
e quindi più semplici... per chi progetta una CPU un formato istruzione
complesso è un'autentica scocciatura (e il costo dell'unità di decodifica
sale...).


 a microcodice ed e` CISC.
Perché, tutti gli ultimi x86? Qui stiamo ribaltando la frittata :-).
Un RISC ha un formato istruzione semplice, ogni bit dell'istruzione (a
lunghezza fissa) ha non piů di due o tre possibili funzioni, dalla
decodifica banale. La decodifica via microcodice č completamente inutile. Un
CISC ha formati istruzione piů complessi, quindi spesso per semplificare la
logica si usa il microcodice.


 logica si usa il microcodice.
Esatto.
bye,
-- 
  Piergiorgio Sartor

 Come il 99% degli emulatori a PC
Se sei in grado di fornirmi documentazione per le istruzioni specifiche del
65c02 ci metto un attimo ad aggiornare l'emulatore :-) (non che serva a
molto, in realtà... è un progetto che mi è stato chiesto per l'università,
altrimenti perché mai l'avrei scritto in assembler MIPS??)
Saluti :-).


 altrimenti perché mai l'avrei scritto in assembler MIPS??)
Curiosita`: hai dei dati prestazionali?
Cioe` quanto piu` veloce (o piu` lento) va
di un vero 6502?
Ovviamente con le proprie considerazioni sul
clock del MIPS e del 6502.
bye,
-- 
  Piergiorgio Sartor

 clock del MIPS e del 6502.
Beh non ho fatto test del genere, e se volessi farli mi scontrerei con
diversi problemi...
a) come dicevo, è scritto in assembler MIPS R2000/3000, e io non ho una
macchina MIPS. Lo stesso emulatore che uso al momento (SPIM) è stato
progettato a scopi *evidentemente* didattici... quel minimo di emulazione di
BIOS/OS che contiene si limita alla stampa di messaggi a video e
all'allocazione dinamica di memoria
b) il mio emulatore di 6502 può eseguire semplici programmini, ma emula il
solo processore (quindi niente periferiche, nemmeno di base come monitor o
tastiera) e trascura tutta la parte relativa alla gestione degli interrupt
(la documentazione al riguardo era scarsa e quindi le istruzioni BRK, RTI e
i flag B e I non sono stati richiesti). Per essere precisi manca anche la
rilevazione degli overflow, ma quella potrei sistemarla in 10 minuti. In
ogni caso, anche se non ci fossero questi problemi, se provassimo a prendere
del codice 6502 "vero" (cioè non il programma di calcolo del MCD che abbiamo
usato come test :-)) probabilmente scoveremmo una certa quantità di altri
bug dovuti o a semplice disattenzione o a particolarità del 6502 di cui non
ho tenuto conto per ignoranza. Manca inoltre l'emulazione di tutte le
istruzioni non documentate.
c) non ho del codice 6502 "vero" per fare dei test di performance
attendibili
Certamente se mi interessasse davvero potrei mettermi a sistemare tutti
questi dettagli ma... beh l'ho scritto in assembler MIPS... anche se fossi
un fanatico del 6502, a che mi servirebbe un emulatore di 6502 per
processori MIPS??? :-)
P.S.: naturalmente se vuoi dare un'occhiata posso farti avere sorgenti e
documentazione... non aspettarti nulla di eccezionale, comunque fa il suo
lavoro ;).
Saluti.


 istruzioni non documentate.
E l'emulazione della modalità BCD, stavo dimenticando...


 lavoro ;).
Grazie, ma ero solo curioso di sapere se
per caso aveva qualche rapporto prestazionale.
Si possono trarre conclusioni interessanti
dalle prestazioni degli emulatori di CPU.
bye,
-- 
piergiorgio

 dalle prestazioni degli emulatori di CPU.
Se le conclusioni che vuoi trarre sono generali, credo che esistano un buon
numero di emulatori di sistemi basati sul 6502... :-)


 numero di emulatori di sistemi basati sul 6502... :-)
Un problema e` che spesso si tratta di emulatori
di sistemi completi, tipo C64, quindi non e`
facile isolare la parte CPU da tutto il resto.
Poi ero curioso di vedere com MIPS si comporta.
bye,
-- 
piergiorgio

 altrimenti perché mai l'avrei scritto in assembler MIPS??)
ho trovato questa pagina con le istruzioni del 65c02
www.zophar.net/tech/files/6502ref.html
ma che fatica sono anche andato al sito della Conexant (credevi che la
Rockwell fosse morta e sepolta?) ma ha cancellato il suo passato, ora fra i
prodotti ci solo sono modem.
Giovanni
Ps
I datasheet ufficiali si trovano in questo libro "1984 Data Book,
Semiconductor Products Division, Rockwell International" se vuoi ti posso
fotocopiare quello che ti serve e mandartelo in email, considera che ci sono
altre varianti del 6502 sempre rockwell come il R65c59, R65c102 e R65c112

 ho trovato questa pagina con le istruzioni del 65c02
Grazie mille ;)


 Quindi e` un CISC giusto??
no: sono i RISC che hanno le istruzioni (insieme e codifica) studiate per 
mantenere semplice il decoder. in realta' nessuno (tranne intel, 
evidentemente) e' cosi' stupido da impegolarsi con codifiche impossibili: 
ci sono esempi famosi di CISC con caratteristiche analoghe (es: i pdp11, 
anche se non avevano istruzioni "non documentate", almeno come le 
intendiamo oggi).
riassumiamo:
il 6502 e' CISC se guardiamo i modi di indirizzamento.
lo Z80 e' CISC se consideriamo le istruzioni specifiche (cicli, 
manipolazione stringhe in memoria o I/O ...). i modi di indirizzamento 
sono meno complessi che nel 6502 (ma comunque "CISC").
confrontando 68000 e 8086 si ottengono piu' o meno gli stessi risultati. 
io, personalmente, sono portato a considerare piu' CISC i processori con 
istruzioni superflue (e non modi di indirizzamento superflui), come lo Z80.

 
www.zophar.net/tech/files/6502ref.html
ci sono anche quelle non documentate ?
si trovano le differenze tra i vari 6502 (anche riguardo alle 
istruzioni non documentate) ?

 1 che servivano a switchare i banchi di memoria
hai mica dettagli sui bit delle porte analoghe del processore montato nel 
commodore 16 e nel plus  ?

 istruzioni non documentate) ?
Quelle del 6502 li trovi qui
www.s-direktnet.de/homepages/k_nadj/opcodes.html#c64
alcune solo utili ed interessanti tipo la
RLA ind
che corrisponde alla sequenza
ROL ind
AND ind
molto usata nell'implementazione di operazioni aritmetiche.
Giovanni

 commodore 16 e nel plus  ?
no ma in rete si trovano, una volta ho trovato anche una pagina con anche le
macchine mai messe in commercio, google dovrebbe bastare. Li ho avuti tutti
e due e facevano pieta` la commodore non aveva capito il perche` il C64
aveva avuto successo, non aveva senso fare delle macchine con un basic
potenziato non compatibili con il software esistente.
Giovanni

 no ma in rete si trovano,
no, in rete NON si trovano... io cerco solo e soltanto informazioni sulla
CPU, con particolare riferimento alle due porte specificate.
gli emulatori, al solito, emulano solo quel che vogliono...