Il corso ha come obiettivi lo studio e l'analisi delle principali tecniche su cui si basa la realizzazione dei moderni sistemi di elaborazione dell'informazione ad alte prestazioni. Partendo dai requisiti per il disegno e la progettazione dei set di istruzioni moderni, si passa all'individuazione delle principali tecniche di realizzazione dei processori. Durante tale percorso verrà utilizzato un approccio in cui set di istruzioni e realizzazione del processore sono elementi fortemente correlati. Obiettivo principale delle tecniche sviluppate è di ridurre al minimo le penalizzazioni dovute alla struttura hardware del processore, fino ad arrivare ad un modello di esecuzione in cui l'ordinamento di esecuzione non è più dato dal modo in cui il codice è stato scritto, ma dal modo in cui l'informazione viene elaborata secondo il flusso di dati previsto dal programmatore. È così possibile realizzare sistemi in grado di estrarre automaticamente il parallelismo intrinseco (ILP) con architetture che permettono l'esecuzione simultanea di più istruzioni nello stesso ciclo di clock. Durante il corso verranno mostrati esempi di applicazioni ai principali processori ad uso generale (Architetture INTEL e RISC), così come a processori ad uso particolare (DSP, processori grafici e multimediali, processori di I/O). Nell'ultima parte del corso verranno illustrate le direzioni principali che potranno interessare i processori delle generazioni future, sia per quanto riguarda le architetture basate sull'approccio algoritmico (come nel caso delle architetture VLIW) sia rispetto a quelle che utilizzano approcci non algoritmici (come i processori neurali o fuzzy).
Programma del corso: