Cos’è il pipelining in informatica?

Il termine ha alcuni usi diversi, ma per lo più hanno in comune l'idea di eseguire una sequenza di passi in modo sovrapposto. Un paio di esempi:

  • Instruction pipelining: Un microprocessore ha bisogno di eseguire diverse fasi per elaborare un'istruzione: fetch, decodifica, esecuzione, accesso alla memoria, scrittura nel registro. Con il pipelining, dopo che la prima istruzione completa la fase di fetch, passa alla decodifica, e la seconda istruzione inizia il fetch. Mentre queste due vanno avanti, la terza istruzione inizia il fetch. In qualsiasi momento, ci potrebbero essere cinque istruzioni, ognuna in un diverso stadio della pipeline. (Alcuni eventi, come la mancanza di una cache di memoria, possono "bloccare" la pipeline, perché uno stadio impiega troppo tempo per completarsi per qualche istruzione)
  • Query pipelining: In un processore di query per database, c'è un albero di operatori, come filter, join e union. In alcuni casi, un operatore può iniziare a produrre risultati al suo genitore prima di aver consumato tutto il suo input. Per esempio, le righe che vengono filtrate da una tabella possono essere passate ad un operatore di unione mentre vengono esaminate. Così l'operatore di unione può iniziare l'esecuzione prima che l'operatore di filtraggio abbia completato.