Newsgroup: it.comp.hardware.cpu
Titolo: Architetture CISC e RISC

Ciao a tutti.
Mi devo documentare con molto dettaglio sui set di istruzioni CISC e RISC. 
Ho cercato il materiale in rete ma ho trovato sempre il solito dibattito 
CISC vs RISC e niente di specifico per quel che riguarda le caratteristiche 
di ogni set di istruzioni. Sapreste consigliarmi qualche link o magari 
qualche libro?
Grazie mille 


Prova su 
www.lithium.it
ci sono articoli di ottimo livello scritti anche da professori 
universitari. Se frequenti una universita' allora puoi andare in una 
qualunque biblioteca e prendere un libro di architettura degli 
elaboratori per saperne di piu' (esattamente di libri non ne conosco, in 
ogni caso puoi provare a scrivere con google "caratteristiche 
architettura risc/cisc" o "cisc/risc architecture specs".
-- 
Ciao
Riccardo

Non vorrei dire una cazzata, ma sui datasheet dei processori tipo P4 e
PowerPC dovresti trovare tutto.

 PowerPC dovresti trovare tutto.
No io ho visto quelli del PM dothan e non c'e' niente, anche su quelli 
dell'athlon xp e 64 non c'e' niente, quindi...
forse sul data sheet del 4004 o 8008 trovi molto.
-- 
Ciao
Riccardo

Guarda, mi hai incuriosito e ho dato un occhio.
In google ho dato un occhio con una ricerca tipo:
"set di istruzioni x86"
Una panoramica dei comandi puri e semplici la trovi a:
http://www.fazzino.it/instset.php?language=italian
Istruzioni x86 dall'8086 al pentium 4
In Wikipedia puoi trovare questo:
http://it.wikipedia.org/wiki/Instruction_set
Che è una base di partenza invece su varie architetture.
Ti consiglio di dare un occhio a PowerPC, x86 e Java Virtual MAchine, non
approfondiscono molto ma sono interessanti.
Qualcos'altro in inglese puoi trovarlo qui:
http://webster.cs.ucr.edu/AoA/index.html
Il sito è the Art of Assembly Language.
Qui invece hai tutto tutto tutto sull'architettura IA-32 Intel:
http://www.intel.com/design/pentium4/manuals/index_new.htm#sdm_vol1
In particolare il PDF:
ftp://download.intel.com/design/Pentium4/manuals/25366817.pdf
Dovrebbe essere quello che riguarda il codice dell'ISA dell'architettura
IA-32
Qui invece per l'architettura Power:
http://www-128.ibm.com/developerworks/views/power/libraryview.jsp?type_by=Standards
Altra cosina interessante è questa serie di Slide sull?ISA degli x86.
http://www.mfn.unipmn.it/~giuliana/ARCHII/ISA.zip
Si tratta di appunti universitari abbastanza chiari.
Questa invece tratta proprio delle tematiche CISC e RISC. Confronti, non
scontri.
http://www-micro.deis.unibo.it/~romani/Dida03/lezioni/micro.pdf
Questo è abbastanza interessante perchè confronta le architetture, con
esempi di codice e analisi dei vantaggi e svantaggi dell'una e dell'altra
nelle applicazioni.
Dai, ho buttato un pò di carne sul fuoco...

 da un core puramente risc.
Osservazione però. CISC non vuol dire x86, è importante, CISC è un tipo di
architettura, NON l'architettura x86.

comunque andiamo ad operare con un ISA CISC.
i k6 nexgen prevedevano anche la possibilita' di usare  direttamente
l'isa risc-86, amd pero' ha tolto questa funzione quando se ne e'
impossessata (presumibilmente non aveva la capacita' di gestire
un'intera isa, scrivere i compilatori, scrivere tutta la
documentazione, gestirne la diffusione via marketing pesante ecc...)
-- 
    (iao!!oai)                                    (ICQ: 10860566)
    //.aurizio
[WARNING!: togliete _nessuno_ per rispondere]
    Coloro che sono disposti a farsi togliere alcune liberta' 
essenziali per ottenere un piccolo, temporaneo senso di sicurezza
non meritano ne liberta' ne sicurezza. [B. Franklin]

"Roberto" <gioe...@NOSPAMlibero.it> ha scritto nel messaggio
news:5zWdf.37086$65.11...@twister1.libero.it...

Ti posso suggerire alcuni libri che possiedo, anche se un pò vecchiotti:
1) 80386 Programmatore - Jackson
2) PowerPC 601 - RISC Microprocessor User's Manual
3) Pentium Processor User's Manual - Volume 3: Architecture and Programming
Manual
Il primo l'ho acquistato in libreria, mentre gli altri 2 li ho trovati, a
fatica, direttamente dal fornitore che distribuisce ufficialmente i manuali
Intel in Italia. Prova, se ti interessa, a telefonare ad Intel Italia per
fatti dare il numero di telefono di chi li distribuisce ora.

 "set di istruzioni x86"
grazie mille
quello che trovavo era spesso il solito dibattito cisc vs risc.
Devo analizzare a fondo l'argomento trattando anche i vari studi scientifici 
che sono in atto al giorno d'oggi quindi penso che i links del post 
precedente mi saranno molto utili ;-)
Roberto 


RISC e CISC sono piu due "filosofie di progettazione" che roba
riducibile a dei set d'istruzioni ben precisi.
Tra le cpu piu note che piu si avvicinano al modello RISC ideale
ci sarebbero le prime MIPS (ma anche loro con certe "furbate"
tipo lo slot di esecuzione dopo ogni jump, che poi sono
state corrette).
L. Micheletto

Scusa, non volevo intendessi un tono secco, era solo una puntualizzazione...
Adesso non ricordo bene, però di Cisc forse ci sono Amd, Intel, Via e penso
pure Transmeta, il resto dei contendenti sono stati tutti assorbiti. E tutti
è vero, utilizzano l'ISA x86. Era solo però per non generalizzare dicendo
Cisc è x86. Io intendevo Cisc è anche x86, non solo. Con Cisc si intendono
le architetture che adottano una strategia di operazioni complesse che
durano più e più cicli di clock.
Poi diciamo anche che, per quanto ad esempio Athlon64 architetturalmente sia
un RISC a tutti gli effetti, noi comunque abbiamo a che fare sempre e
comunque con un ISA CISC, quindi è un processore CISC.
Di Risc ne esistono a milioni, invece, i più famosi sono i Power. Ad esempio
con l'introduzione di Altivec di IBM nei Power, si è aggiunta un unità di
calcolo vettoriale, che di conseguenza ha introdotto un set di istruzioni
proprio per la manipolazione dei vettori. Fondamentalmente si tratta di un
unità a 128 bit che può operare da 4 a 8 trasformazioni per ciclo di clock.
Ogni istruzione di questo nuovo set viene elaborata dal processore Power in
un solo ciclo di clock.
Inoltre si sono usate le istruzione SIMD, che non sono di CISC o RISC, che
non indicano istruzioni più complesse, ma semplicemente una politica di
usare una singola istruzione su dati multipli.
Questo intendevo ieri, le differenze sono tante, radicate e non
semplicemente sulla struttura dell'operazione. è proprio concettuale la
differenza.

Beh, adesso cerco di documentarmi bene, non posso parlare con sicurezza di
codice x86_64. Quel che so è che la distinzione tra le due si può fare su
due livelli:
-architettura
-set di istruzioni
in architettura è una scelta di costruire CPU che abbiano come principio che
ogni istruzione del microcodice venga eseguita in un unico ciclo di clock.
Ne consegue un set di istruzioni che ha operazioni tutte di t di esecuzione
pari a 1 ciclo di clock. Qualunque essa sia, Booleana, I/O, Matematiche,
Vettoriali...
Questa è la distinzione che so essere alla base delle due filosofie. Tu mi
dici che x86_64 e RISC, però se io invio il codice MOV BX,AX che è dell'ISA
8086 all'Athlon64 questo interpreta il codice esattamente, però questo
codice non è RISC. E per definizione, se l'ISA di un RISC contiene solo
operazioni di t=1 ciclo di clock, allora Athlon64 non è RISC.
Dobbiamo quindi distinguere tra scelte architetturali interne e quello che
invece è il sistema con cui abbiamo a che fare. Noi con Athlon64, sempre
come esempio, andiamo a scrivere con un ISA che è x86 compatibile, quindi
l'ISA di un architettura che è nata e si è sviluppata basandosi su un
architettura CISC.
La mia afferamazione che di Risc ne esistono a milioni, è dovuta solo dal
fatto che attualmente abbiamo un panorama che vede poche architetture CISC e
tante RISC, di cui, almeno recentemente penso che sia PowerPC e sui derivati
come le CPU di Xbox360 e PS3 il rappresentante più illustre, senza nulla
togliere ad Alpha e alla fetta di storia che ha scritto.

 togliere ad Alpha e alla fetta di storia che ha scritto.
Sarebbe piu corretto dire che le cpu attuali sono andate oltre alla
suddivisione RISC vs. CISC, puntando sempre piu sulla miglior
combinazioni di caratteristiche "paganti" in termini di prestazioni
o di efficienza (non necessariamente di esecuzione).
Per esempio l'ARM e' probabilmente il "RISC" piu diffuso (se hai un
GSM o un UMTS e' molto probabile che ci sia un core ARM dentro), ma
sin dal principio c'e' stato chi storceva il naso a classificare
come RISC una cpu che permetteva l'esecuzione condizionale
di quasi tutte le sue istruzioni.
Attualmente gli ARM supportano *due* set d'istruzioni ed eventuali
estensioni per coprocessori ed il secondo set d'istruzioni
e' stato aggiunto per aumentare l'efficienza nell'utilizzo
della memoria da parte dei programmi.
Ci sono poi i "piccoli roditori" tipo il PIC della Microchip
pure essi diffusissimi, che piu che come RISC sono stati progettati
pure essi in termini di prestazioni/costo.
Non parliamo poi della "famiglia" 8051 e degli altri 8bit tipo
Z80 e 6502 ancora molto diffusi grazie al fatto che con essi
si puo continuare a proporre soluzioni embedded il cui software
e' stato scritto qualche decennio fa (quello che non devi riscrivere
e' tutto guadagno e zero spese); quei "cricetini" ad 8 bit sono
sopravvissuti a cpu CISC e RISC decisamente molto piu blasonate.
L. Micheletto

 Frena il mulo. Il codice x86_64 e' a lunghezza fissa, dunque risc. Puo'
Non e` che la lunghezza fissa sia fondamentale per
definire un RISC.
Tra l'altro ha x86_64 un set di istruzioni "ortogonale"?
Non mi pare, ma potrei sbagliare.
bye,
-- 
piergiorgio

 o di efficienza (non necessariamente di esecuzione).
Ma no, dai, ISA x86 == CISC.
Ci sono alcuni punti fissi, per esempio quanti tipi di
indirizzamento disponibili, set di istruzioni ortogonale
(o meno), lunghezza fissa o variabile, numero di istruzioni,
etc., etc.
Chiaramente vi sono casi in cui la distinzione puo` sfuggire,
magari un DSP ha poche istruzioni, ma indirizzamenti complessi,
magari una MAC non si puo` considerare un'instruzione elementare,
magari l'ISA e` ortgonale, etc.
bye,
-- 
piergiorgio

 tutti i risc.
Puo` essere che tutti i RISC abbia istruzioni a lunghezza
fissa, ma non e` detto che tutte le CPU con istruzioni a
lunghezza fissa siano RISC.
E` chiaro adesso, cosa volevo dire?
E` condizione necessria, ma non sufficiente.
Forse non puoi avere un RISC, se la CPU ha istruzioni a
lunghezza variabile, ma sicuramente esistono CPU con
istruzioni a lunghezza fissa che sono CISC.
bye,
-- 
piergiorgio

 Fammi un esempio di siffatto cisc.
Un qualunque CISC che abbia 4 tipi di indirizzamento diverso.
Come detto prima, RISC implica alcune cosette, oltre la
lunghezza fissa. Per esempio ortogonalita` dell'ISA e numero
ridotto di metodo di indirizzamento.
E se x86_64 ha istruzioni a lunghezza fissa, quello e` l'esempio
che cercavi.
bye,
-- 
piergiorgio