2011-01-31 6 views
7

Se stavi scrivendo un libro di testo e dovessi decidere su un design della CPU per parlare di determinati problemi, sceglieresti RISC o CISC? Pro per RISC, beh, sai: più pulito, più facile e così via. Contro per RISC: dovrei usare un emulatore, poche CPU nel mercato, rispetto a x86, e quindi meno impatto rispetto a se avessi scelto una CPU RISC pura come ARM o SPARC. Sono strappato, anche se mi sto appoggiando a x86 e CISC ... molti pro, contro: non RISC, e tutti quei libri come Henessy e altri. e altri adorano RISC! Quindi, in sintesi: sceglieresti RISC o CISC (x86)? Grazie.cisc versus risc

+0

@James: rispetto a x86. hai numeri? forse posso inventarmi un caso. –

+1

Qual è l'argomento del libro di testo? Per quale tipo di pubblico/lettore? – ChrisW

+1

Chiede 15 anni di ritardo. I giorni in cui l'architettura del motore di esecuzione interna aveva qualche somiglianza con il set di istruzioni sono finiti da tempo. Google "micro-ops". –

risposta

3

Pubblico generale (o programmatore) generico suggerisco x86. Indipendentemente dal linguaggio con cui hanno familiarità, gli stessi elementi costanti come per e se o il concetto di funzioni possono essere facilmente dimostrati con istruzioni x86.

Asm è abbastanza astratto, non ha prezzo se possono collegare le nuove conoscenze alla loro comprensione della programmazione esistente. (Potrebbe persino aiutarli a scrivere un codice di qualità migliore).

Non penso che scegliere x86 significhi che devi includere tutte le istruzioni. Il livello successivo può essere quello di intodurre la rappresentazione del codice macchina di alcune strutture ASM, ma solo quando sono comode con i loro mnemonici.

11

Stai parlando in modo specifico del design del processore x86 o di una specifica funzionalità di progettazione che è più diffusa in x86 di qualsiasi altra cosa? No? Quindi vai con un'architettura RISC.

Tutto ciò che si ottiene con x86 è che la meccanica x86 oscurerà qualsiasi punto si stia tentando di realizzare.

+0

+1, ma: perché lo oscurerebbe? Inoltre, quale sarebbe il mio ambiente di sviluppo se fossi andato con RISC? –

+4

@Dervin: il set di istruzioni x86 è terribilmente complesso. Le istruzioni a larghezza variabile da sole servirebbero per oscurare ogni punto che vorresti fare su cache e prefetching, accessi di memoria non allineati, istruzioni con involucro speciale, * istruzioni singole diabolicamente complesse *, fondamentalmente un sacco di cruft che non è necessario per quello che sei in realtà insegnando. –

+0

Grazie. La stessa domanda che ho chiesto a Blackbear ... cosa pensi che dovrebbe essere il mio ambiente di sviluppo? –

4

Preferisco RISC, perché hanno veloce e piccole istruzioni. Sono più economici di quelli della CISC e hanno molti registri in più. E alcune istruzioni dei processori CISC, ad esempio Intel xchg o scas, , movs e cmps utilizzate con rep sono così particolari che molti compilatori non le usano mai, quindi averle è solo uno spreco di silicio e denaro.
E, parlando di registri, anche se i processori RISC hanno bisogno di più istruzioni per realizzare ciò che un CISC farebbe con uno solo, hanno così tanti registri che (penso) la memoria è accessibile meno frequentemente su un RISC. Sto parlando come un "programmatore" CISC, da quando ho imparato su x86 di Intel e talvolta ho a disposizione solo 6 registri di uso generale, che sono spesso ridotti a 3 o 4 in loop (ecx è andato, con edi o esi o entrambi), può essere molto difficile. Sebbene l'assembly stesso tenda a nascondere la vera natura del codice, penso (ricorda che sono cresciuto con l'x86) che l'assembly RISC è più difficile da capire a causa della maggiore quantità di istruzioni necessarie.

+0

Se fossi andato con RISC avrei dovuto usare un emulatore, cosa suggerisci che dovrebbe essere il mio ambiente di sviluppo? –

+0

@Dervin Thunk: controlla questa domanda: http://stackoverflow.com/questions/265846/small-risc-emulator – BlackBear

+0

@Dervin Thunk: Non ho mai provato la programmazione su RISC, quindi non posso suggerirti qualcosa di interessante. Ma prova a fare un'altra domanda qui. ;) – BlackBear

1

Se il requisito principale per un progetto è la sicurezza, non la capacità poiché la sicurezza spesso rappresenta un compromesso per la capacità, quindi propongo di utilizzare l'architettura RISC. Un firewall che ad esempio utilizza l'assemblatore x86 era noto per avere un problema di sicurezza che l'implementazione RISC come l'assemblatore SPARC non aveva. Pertanto, le specifiche per il progetto più sicuro potrebbero essere l'uso dell'assembly SPARC poiché è noto per essere un ambiente sicuro e anche se non si sa che è un ambiente sicuro ci sono così poche persone che possono programmare l'assemblaggio SPARC rispetto all'assemblaggio x86 quindi il numero di aggressori che potrebbero programmare una violazione della sicurezza sarebbe inferiore se l'esecuzione di un firewall è un'architettura RISC.

Quindi dico che se si sta parlando di un'applicazione firewall, probabilmente dovrebbe essere un'architettura RISC.