title: Slipstream (microprocessore)
text: # Slipstream (microprocessore)
  
  Nell'architettura dei processori lo slipstream è una tecnica di progettazione volta a velocizzare l'esecuzione dei programmi eliminando le istruzioni non essenziali. È una forma di esecuzione speculativa.
  
  Le istruzioni non essenziali sono quelle istruzioni che non modificano il flusso del programma, che non modificano dati in memoria o che tornano sempre vero. Inoltre nel caso di istruzioni di salto quasi sempre uno dei due rami viene seguito in modo preponderante e quindi si può staticamente assegnare sempre vera la condizione e verificare in seguito la correttezza della condizione.
  
  Dato che la speculazione coinvolge lo splistream generalmente il processore viene visto come due componenti che valutano due flussi di istruzioni in parallelo. Uno è il flusso A, un flusso ottimizzato tramite l'eliminazione delle istruzioni inutili mentre il secondo flusso che chiameremo R è il codice completo delle istruzioni. Il flusso A sarà più rapido del flusso R e quindi incontrerà prima le situazioni di stallo, tipo gli accessi alla memoria non coperti dalla cache. Il flusso A richiederà le istruzioni o i dati mancanti e quando il flusso R arriverà allo stesso punto le istruzioni saranno già in cache e quindi il flusso R non sarà rallentato. In sostanza il flusso A effettuerà un'azione di prefetch nascondendo tutti i ritardi d'accesso alla memoria. Studi evidenziano un aumento delle prestazioni del 20%.
  
  Il problema principale di questo approccio è realizzare un flusso A più veloce del flusso R ma sufficientemente accurato da accedere alle locazioni che effettivamente il flusso R utilizzerà. Inoltre il processore dovrà controllare il flusso A in modo da impedire al flusso di precedere eccessivamente il flusso R altrimenti la dimensione della cache non sarebbe sufficiente a contenere i due flussi di istruzioni.
  
  