Concetti Chiave

  • Le tecniche per migliorare le CPU includono l'aumento della frequenza di clock, dell'ampiezza di parola e dello spazio di indirizzamento.
  • Le architetture tradizionali hanno raggiunto un limite di prestazioni, spingendo la ricerca verso modelli non Von Neumann con elaborazione parallela.
  • Le architetture parallele si classificano in SISD, SIMD, MISD e MIMD, ognuna con specifici metodi di gestione delle istruzioni e dei dati.
  • L'esecuzione fuori ordine consente alla CPU di eseguire istruzioni in parallelo, migliorando l'efficienza attraverso un'analisi delle dipendenze.
  • Il precaricamento aiuta i processori a caricare in anticipo dati o istruzioni in cache, garantendo coerenza e validità per ottimizzare le prestazioni.

Tecniche di miglioramento delle CPU

Le caratteristiche delle CPU e dei sistemi di elaborazione dati possono essere migliorate a tal fine esistono diverse tecniche. Gli interventi possibili attuati in passato sono stati: l’aumento progressivo della frequenza di clock, l’aumento dell’ampiezza di parola e l’aumento dello spazio di indirizzamento. L’aumento progressivo della frequenza di clock a parità di comportamento rende più veloci le elaborazioni. L’aumento dell’ampiezza di parola si ottiene incrementando il numero di bit elaborati contemporaneamente. L’aumento dello spazio di indirizzamento si ottiene incrementando il numero di celle indirizzabili.

Limiti delle architetture tradizionali

Gli interventi mirati all’aumento dell’ampiezza di parola e all’aumento dello spazio di indirizzamento, nell’evoluzione delle architetture sono giunti purtroppo ad un punto in cui non era più possibile ottenere prestazioni migliori. La ricerca informatica si è orientata allora in un’altra direzione di sviluppo, chiamata in generale con il termine di architetture non Von Neumann, nella quale sono state introdotte funzioni di elaborazione parallele che consentono di aumentare la velocità di elaborazione a parità di frequenza di clock.

Classificazione delle architetture parallele

Ricordiamo brevemente una classificazione delle architetture in base al grado di parallelismo che rendono possibile:

  • tipo SISD, acronimo di Single Instruction Single Data, dove un unico processore esegue un’unica istruzione per volta e può prelevare e depositare in memoria un solo dato per volta;
  • tipo SIMD, acronimo di Single Instruction Multiple Data, permette di eseguire contemporaneamente la stessa operazione su più dati, è molto utile per le operazioni multimediali;
  • tipo MISD acronimo di Multiple Instruction Single Data, consente di avviare l’esecuzione di diverse istruzioni, ognuna sui propri dati; pertanto, mentre si esegue un’istruzione si può cominciare ad elaborare la successiva;
  • tipo MIMD acronimo di Multiple Instruction Multiple Data, si tratta di una’architettura relativa ai sistemi multiprocessori.
  • Evoluzione delle tecniche di elaborazione

    L’elaborazione delle operazioni da parte della CPU si è evoluta passando attraverso diverse tecniche quali: l’esecuzione fuori ordine, il precaricamento, la speculative execution, la pipeline, le tecnologie superscalari, la Branch prediction.
    Questa tecnica indica la capacità delle CPU di eseguire istruzioni senza rispettarne necessariamente l’ordine imposto dal codice che le contiene. In pratica la CPU analizza le istruzioni che dovrà eseguire, andando ad individuare quelle che non hanno vincolo sequenziale le quali vengono fatte eseguire in parallelo. Il metodo di esecuzione fuori ordine prevede prima di tutto che il programma venga caricato con istruzioni seriali, poi le istruzioni vengono analizzate e riordinate tenendo conto delle dipendenze, successivamente vengono eseguite in parallelo e poi riordinate prima di provvedere al salvataggio dei dati in memoria.

    I processori implementano delle unità che analizzano il codice cercando di prevedere in anticipo quali dati o istruzioni serviranno al processore, provvedendo inoltre al loro caricamento in cache prima del loro reale impiego. Alcune architetture prevedono istruzioni specifiche per indicare quali blocchi precaricare ma la maggior parte delle architetture, non essendo dotate di queste istruzioni, devono basarsi solamente sull’ispezione del codice in tempo reale. Questa tecnica deve garantire coerenza e validità dei dati stessi; perciò, se un dato viene precaricato è importante che nessuna istruzione lo modifichi prima del suo effettivo utilizzo. Eventuali criticità dovute ad una forzatura rendono il precaricamento dei dati e delle istruzioni molto complesso da implementare in hardware senza un supporto diretto del set di istruzioni.

    Domande da interrogazione

    1. Quali sono le principali tecniche per migliorare le prestazioni delle CPU?
    2. Le tecniche principali includono l'aumento della frequenza di clock, dell'ampiezza di parola e dello spazio di indirizzamento, che rendono le elaborazioni più veloci e aumentano il numero di dati elaborati contemporaneamente.

    3. Qual è il limite delle architetture tradizionali nella progettazione delle CPU?
    4. Le architetture tradizionali hanno raggiunto un punto in cui non è più possibile ottenere prestazioni migliori attraverso l'aumento dell'ampiezza di parola e dello spazio di indirizzamento, portando alla ricerca di architetture non Von Neumann.

    5. Come si classificano le architetture parallele?
    6. Le architetture parallele si classificano in base al grado di parallelismo in SISD, SIMD, MISD e MIMD, ognuna con caratteristiche specifiche per l'esecuzione delle istruzioni e la gestione dei dati.

    7. Quali tecniche di elaborazione sono state sviluppate per le CPU?
    8. Le tecniche di elaborazione includono l'esecuzione fuori ordine, il precaricamento, la speculative execution, la pipeline, le tecnologie superscalari e la Branch prediction, che migliorano l'efficienza nell'esecuzione delle istruzioni.

    9. Qual è la funzione del precaricamento nelle CPU?
    10. Il precaricamento consente di caricare in cache dati e istruzioni prima del loro utilizzo, migliorando l'efficienza, ma deve garantire coerenza e validità dei dati per evitare conflitti durante l'esecuzione.

    Domande e risposte

    Hai bisogno di aiuto?
    Chiedi alla community