title: Trace scheduling
text: # Trace scheduling
  
  La trace scheduling o schedulazione a traccia è una tecnica di ottimizzazione utilizzata dai compilatore per migliorare le prestazioni dei programmi informatici.
  
  Il compilatore con questa tecnica riarrangia le istruzioni macchina al fine di migliorare l'esecuzione parallela delle istruzioni. La trace scheduling è una tra le più diffuse tecniche di ottimizzazione.
  
  Questa tecnica fu sviluppata da Josh Fisher mentre era docente all'Università Yale, la tecnica permise di sviluppare compilatori efficienti per microprocessori VLIW. La tecnica converte i loop in sequenze statiche di codice sfruttando lo srotolamento dei cicli e la predizione statica dei salti. Il compilatore aggiunge delle istruzioni che recuperano il caso di errata predizione del salto. Questo permette di separare i blocchi di istruzioni che probabilmente verranno eseguite da gruppi di istruzioni difficilmente prevedibili. Le istruzioni "prevedibili" poi possono essere arrangiate in parallelo per velocizzarne l'esecuzione.
  
  