Code di istruzioni
# Code di istruzioni

In informatica le code di istruzioni sono dei sistemi che aumentano le prestazioni della CPU o processore riducendo i tempi di estrazione delle istruzioni dalla memoria.

Normalmente, le code di istruzioni sono interposte tra memoria e processore. Quest'ultimo può effettuare delle operazioni di inserimento, di estrazione e di svuotamento della coda a seconda delle circostanze (in genere lo svuotamento avviene in occasione di un branch).

Ovviamente è importante sottolineare che l'inserimento di un dato all'interno della coda è effettuabile a patto che questa non sia piena e di conseguenza anche l'estrazione può essere effettuata a patto che la coda non sia vuota.

Vediamo nel seguito alcuni esempi di tipo di coda.

## FIFO

Una coda di istruzione di tipo FIFO permette di prelevare, seguendo lo schema First In First Out (Primo ad entrare, primo ad uscire) i dati nell'ordine in cui sono stati inseriti. Dopo ogni prelievo dell'istruzione dalla coda, le precedenti istruzioni, vengono shiftate verso destra. Questo tipo di coda è utilizzata dal processore Intel 80386.

## Circolari

Le code circolari sono caratterizzate dalla presenza di due puntatori che puntano rispettivamente all'ultimo elemento inserito nella coda e al primo che eventualmente è possibile estrarre. Ogni volta che viene inserito un elemento all'interno della coda si utilizza il puntatore all'ultimo elemento della coda e il tutto viene gestito ulizzando degli appositi algoritmi di gestione delle code circolari. Questo tipo di coda permette di risparmiare sulle operazioni di shift verso che destra che sono obbligatorie nel modello precedente di coda

## Parallel-in Serial-out

Questo tipo di coda è molto utile quando è a disposizione una memoria che fornisce in una sola lettura più istruzioni che vengono memorizzate direttamente all'interno di una coda di questo tipo. In uscita vi è solo un puntatore che permette di prelevare le istruzioni in uscita.

