Calcolatori elettronici/I processori

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
CopertinaCalcolatori elettronici/Copertina
  1. L'evoluzione dei sistemi di elaborazioneCalcolatori elettronici/L'evoluzione dei sistemi di elaborazione
  2. Il progetto di circuiti logiciCalcolatori elettronici/Il progetto di circuiti logici
  3. I processoriCalcolatori elettronici/I processori
  4. Architettura 8086Calcolatori elettronici/Architettura 8086
  5. Unità di controlloCalcolatori elettronici/Unità di controllo
  6. Introduzione alle memorieCalcolatori elettronici/Introduzione alle memorie
  7. Le memorie ad accesso casualeCalcolatori elettronici/Le memorie ad accesso casuale
  8. Le memorie cacheCalcolatori elettronici/Le memorie cache
  9. Le memorie ad accesso serialeCalcolatori elettronici/Le memorie ad accesso seriale
  10. La memoria virtualeCalcolatori elettronici/La memoria virtuale
  11. La gestione dei dispositivi input/outputCalcolatori elettronici/La gestione dei dispositivi input/output
  12. Intel 8255Calcolatori elettronici/Intel 8255
  13. Intel 8259Calcolatori elettronici/Intel 8259
  14. I busCalcolatori elettronici/I bus
  15. Le architetture a pipelineCalcolatori elettronici/Le architetture a pipeline
  16. Assembler 8086
IntroduzioneCalcolatori elettronici/Introduzione
  1. Informazioni generaliCalcolatori elettronici/Informazioni generali
  2. Istruzioni di trasferimento datiCalcolatori elettronici/Istruzioni di trasferimento dati
  3. Istruzioni aritmeticheCalcolatori elettronici/Istruzioni aritmetiche
  4. Istruzioni per il controllo del flussoCalcolatori elettronici/Istruzioni per il controllo del flusso
  5. Istruzioni per la manipolazione dei bitCalcolatori elettronici/Istruzioni per la manipolazione dei bit
  6. Le procedureCalcolatori elettronici/Le procedure
  7. Istruzioni per il controllo del processoreCalcolatori elettronici/Istruzioni per il controllo del processore
  8. Formato delle istruzioni macchina, tempi di esecuzioneCalcolatori elettronici/Formato delle istruzioni macchina, tempi di esecuzione

Il processore è un dispositivo capace di:

L'importanza di ciascuna di queste capacità dipende dalla destinazione d'uso del processore.

Elaborazione delle istruzioni[modifica]

Wikipedia-logo-v2.svg Per approfondire su Wikipedia, vedi la voce Ciclo di fetch-execute.

Fase di fetch[modifica]

L'instruction set è l'insieme delle operazioni che il processore è in grado di eseguire. A ogni operazione corrisponde una certa istruzione in memoria (es. ADD). Durante la fase di fetch il processore legge una di queste istruzioni dalla memoria tramite un bus esterno:

  1. il Program Counter (PC) contiene l'indirizzo di memoria della nuova istruzione da leggere;
  2. l'Address Register (AR) passa il nuovo indirizzo dal PC alla memoria;
  3. la memoria restituisce la porzione di codice corrispondente all'indirizzo specificato dal processore;
  4. il Data Register (DR) memorizza[1] nell'Instruction Register (IR) la porzione di codice proveniente dalla memoria, pronta ad essere decodificata ed eseguita dal processore;
  5. il PC viene aggiornato all'indirizzo dell'istruzione successiva a quella letta.

Fase di esecuzione[modifica]

L'unità di controllo, tramite il bus interno, dopo aver ricevuto l'istruzione dall'IR, ha il compito di pilotare i vari moduli, cioè fornire segnali di controllo ad essi, per le operazioni ad es. di caricamento degli operandi, esecuzione delle istruzioni, acquisizione dei risultati, ecc. La ALU è il modulo che esegue una serie di operazioni aritmetiche/logiche su operandi. I registri AC forniscono gli operandi alla ALU e ricevono i risultati delle operazioni.

All'interno di ogni istruzione si possono identificare delle microistruzioni elementari (es. accesso ai registri, fetch, ecc.), ciascuna delle quali richiede un colpo di clock.

Il tempo di esecuzione di un'istruzione, misurato in colpi di clock, dipende da:

  • tipo di istruzione: quale istruzione eseguire (es. MOV, ADD)?
  • tipo di operandi: l'operando si trova nei registri (accesso più veloce) o in memoria (ritardo del fetch)?
  • modo di indirizzamento: l'indirizzo passato è diretto (es. VAR) o richiede una somma (es. vett[DI])?

Gli operandi di una generica istruzione possono essere contenuti nei registri (Rx) o nella memoria (M[xx]), a seconda di ciò che è richiesto dall'operazione letta dalla memoria. I registri sono dei moduli di memoria costituiti da flip-flop che risiedono all'interno del processore. Anche se il numero di registri è finito, il tempo di accesso a un registro è molto minore del tempo di accesso a una cella di memoria, a causa dei colpi di clock necessari durante l'operazione di fetch. Il compilatore di C decide automaticamente se utilizzare i registri o la memoria, privilegiando quando possibile i primi: nel caso in cui l'operando si trova in memoria, durante la fase di esecuzione dell'operazione è necessario effettuare un ulteriore fetch per l'operando.

Per ridurre i tempi di esecuzione, mentre l'execution unit esegue un'operazione la bus interface unit si occupa del fetch dell'istruzione successiva.

Note[modifica]

  1. Il DR viene usato in generale per il trasferimento di dati tra la memoria e il processore: un ulteriore segnale di controllo indica se l'operazione che deve effettuare la memoria è la lettura o la scrittura.