Il processore esegue principalmente due compiti: esegue le istruzioni e interagisce con il mondo esterno. Ciascuna istruzione si compone di due fasi:
• Fetch: il codice viene prelevato e letto dalla memoria
• Execute: il codice viene decodificato e eseguito.
L’esecuzione di ciascuna istruzione implica l’avvio di alcune microistruzioni, ciascuna delle quali è eseguibile in un proprio tcpu. Il numero di registri influenza molto il tempo di esecuzione di ciascuna istruzione, se sono molti si parla di register-file.
Negli ultimi anni si sono contrapposti due modelli di microprocessori:
• CISC (IBM 370), con un set di istruzioni sempre più ampio e complesso, in grado di raggiungere quasi i linguaggi di alto livello. Le istruzioni non sono più veloci perché richiedono HW complesso. Hanno un tempo di latenza per gli Interrupt maggiore.
• RISC (Motorola 80000, SPARC, Power PC, ARM 7,9), con un set di istruzioni molto ridotto un elevato numero di registri e una pipeline particolarmente ottimizzata (un’operazione per colpo di CK). Le istruzioni RISC sono complesse come quelle CISC e quindi possono essere realizzati con la tecnica micro programmata. Esistono due sole istruzioni che coinvolgono la memoria primaria (LOAD e STORE) e quindi possono essere particolarmente ottimizzate e saranno le uniche a prevedere dei meccanismi per specificare l’indirizzo in memoria a cui accedere (pochi metodi di indirizzamento). Il basso numero di operazioni eseguibili porta a una possibilità maggiore di eseguire operazioni in // e ad un’unità di controllo più semplice. I compilatori per RISC sono semplici, i codici sono più corti e snelli, perché comportano un numero minore di fetch.
I processori superscalari sono in grado di portare a termine più di un’istruzione per colpo di CK. Internamente contengono una pipeline simile a quella dei RISC, solo che ad alcuni stadi corrispondono più unità in parallelo. Le unità che in parallelo possono svolgere le stesse operazioni oppure avere altri scopi. I problemi sorgono in caso di eccezione. Il processore può decidere:
• Eccezioni precise: di completare l’esecuzione delle operazioni precedenti a quella che ha scatenato l’eccezione. Può mandare in stallo la pipeline, devono essere presenti dei registri in cui salvare i risultati provvisori.
• Eccezioni imprecise: di completare tutte le operazioni presenti in pipeline. Hanno bisogno di molta logica per evitare dead lock.
Per le immagini Ringraziamo ©poluz
| < Prec. | Succ. > |
|---|






