Fernando_96
Ominide
4 min. di lettura
Vota

Concetti Chiave

  • Le architetture non Von Neumann migliorano la velocità di elaborazione con funzioni parallele, superando i limiti delle tecniche tradizionali come l'aumento della frequenza di clock.
  • Le architetture possono essere classificate in base al parallelismo: SISD, SIMD, MISD, MIMD, ognuna con vantaggi specifici per l'elaborazione dei dati.
  • L'esecuzione fuori ordine permette alla CPU di riorganizzare le istruzioni per eseguirle in parallelo, aumentando l'efficienza senza seguire l'ordine originale del codice.
  • Il precaricamento prevede e carica dati e istruzioni nella cache prima del loro utilizzo, richiedendo coerenza dei dati per evitare modifiche indesiderate.
  • Le tecniche avanzate come pipeline, superscalari, speculative execution e branch prediction supportano l'efficienza delle CPU moderne.

Indice

  1. Architetture non Von Neumann, tecniche di elaborazione, l’esecuzione fuori ordine, il precaricamento
  2. Esecuzione fuori ordine
  3. Il precaricamento

Architetture non Von Neumann, tecniche di elaborazione, l’esecuzione fuori ordine, il precaricamento

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. 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.
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.
  • 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.

    Esecuzione fuori ordine

    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.

    Il precaricamento

    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 tecniche principali per migliorare le prestazioni delle CPU?
    2. Le tecniche principali includono l'aumento della frequenza di clock, l'aumento dell'ampiezza di parola, l'aumento dello spazio di indirizzamento e l'adozione di architetture non Von Neumann con elaborazione parallela.

    3. Cosa si intende per architetture non Von Neumann?
    4. Le architetture non Von Neumann si riferiscono a sistemi che introducono funzioni di elaborazione parallele per aumentare la velocità di elaborazione senza aumentare la frequenza di clock.

    5. Quali sono i tipi di architetture basate sul parallelismo?
    6. I tipi di architetture basate sul parallelismo includono SISD, SIMD, MISD e MIMD, ognuna con un diverso approccio all'esecuzione di istruzioni e dati.

    7. Come funziona l'esecuzione fuori ordine?
    8. L'esecuzione fuori ordine permette alla CPU di eseguire istruzioni in parallelo, analizzando e riordinando le istruzioni in base alle dipendenze, per poi eseguirle e riordinarle prima del salvataggio in memoria.

    9. Qual è il ruolo del precaricamento nei processori?
    10. Il precaricamento prevede l'analisi del codice per prevedere e caricare in anticipo dati o istruzioni in cache, garantendo coerenza e validità dei dati per migliorare l'efficienza del processore.

    Domande e risposte

    Hai bisogno di aiuto?
    Chiedi alla community