Pipeline-Facility

Vista la buona accoglienza ricevuta dall’iniziativa, benvenuti alla seconda puntata della rubrica più seguita dalle casalinghe che vogliono fare colpo sul tecnico informatico.

Bene, dopo avervi parlato di come ottimizzare il prelievo abusivo dai conti corrente, oggi facciamo i bravi e onesti uomini di casa e andiamo ad affrontare un annoso problema delle giovani coppie moderne:

i mestieri di casa al rientro dal lavoro

Sì, perchè dopo esserci rotti la minchia tutto il giorno al lavoro cercando di spiegare il concetto di tauromachia al primo utonto di turno la giornata non è finita:
schematizziamo così nel modo seguente le attività domestiche che ci separano dal divano, assegnando ad ognuno di esse un tempo richiesto.

  • Lavare il pavimento 0.3h 
  • Doccia 0.2h
  • Svuotare lavastoviglie 0.2h (che chiameremo Sl)
  • Cucinare la pasta 0.5h
  • Riempire la lavastoviglie 0.3h (che chiameremo Rl)
  • Rapporto sessuale 0.1h (Coniglietto Veloce™, lo chiameremo RS)

Consideriamo però il fatto che siamo una giovane coppia e che quindi, alcune di queste (doccia), verranno raddoppiate.

Altre vanno fatte in contemporanea invece.

[spoiler]Anche i più ottusi di voi possono capire che sto parlando del carico della lavastoviglie.[/spoiler]
Tutte queste attività le chiamiamo processi così facciamo una bella figura con la nostra icona sexy ( il tecnico informatico, qualora non fosse chiaro).
E’ ora facile calcolare che il tempo totale che ci separa dall’ appoggiare il culo sul divano è questo:

0.3 + (0.2 * 2) + 0.2 + 0.5 + 0.3 + (0,1 *2) = 1.8 ore.

Ma come procederebbe un informatico? Come ottimizzerebbe questi processi un “Sacerdote del nuovo millennio”?

E soprattutto: qualcuno si è già posto questa domanda?

 

 

 

Le pipeline

Ovviamente sì! E, consigliato da Marzullo, si è pure dato una risposta:

pipeline

Il termine lo possiamo tadurre con “tubatura” anche se a mio avviso “catena di montaggio” rende meglio l’idea.

In Informatica la pipeline dati è una tecnologia utilizzata nell’architettura hardware dei microprocessori dei computer per incrementare il throughput, ovvero la quantità di istruzioni eseguite in una data quantità di tempo, parallelizzando i flussi di elaborazione di più istruzioni.

Fonte Wikipedia

 

In realtà l’idea alla base, come sempre, è piuttosto banale:
Visto che ho due mani, mentre eseguo un processo non posso fare anche altro?

un processo per mano

Vi sembrerà forse una cosa scontata ma fino a qualche decennio fa un qualsiasi computer avrebbe svolto i processi nel loro ordine stabilito impiegandoci quindi 2 ore circa di elaborazione.

La pipeline infatti, pur essendo un concetto vecchio (nasce nella metà degli anni 60), trova utilizzo intensivo solo negli anni 90, con l’avvento del Pentium 4 per la precisione.

 

 

 

Pipeline Vs Unità di calcolo

Ma facciamo un po’ di chiarezza. L’errore più comune è quello di confondere gli stadi della pipeline (quindi, nel nostro esempio, il numero di mani ) con le unità di calcolo.

In realtà sono 2 tecnologie totalmente differenti che però vanno di pari passo nelle CPU moderne.

Tutto molto bello, ma non abbiamo ancora risposto alla domanda di prima:

Visto che ho due mani, mentre eseguo un processo non posso fare altro?

La risposta è “dipende!” Ok, è una risposta del cazzo.

Dove non arriva Vishnu® c’è Mago Merlino!

Ma il mondo informatico non è tanto diverso da quello reale e tutti converrete con me che posso anche chiamarmi Vishnu® ma non potrò mai caricare la lavastoviglie mentre pulisco il pavimento del soggiorno, no??!!

Quello può farlo solo Mago Merlino.

Ma potrei, per esempio, vestirmi mentre mi lavo i denti.

Parallelizzare processi compatibili come quest’ultimo esempio è appunto una pipeline.

E per i processi incompatibili? Beh, bisogna trovare un convivente disposto a dividersi i lavori di casa.

In termine informatico, bisogna avere un’altra CPU.

 

 

 

L’importanza della progettazione

Da questo capiamo che bisogna considerare la natura dei processi e la loro eventuale interdipendenza. Mi pare logico che non posso scaricare la lavastoviglie prima di caricarla!
O ancora: tra i due processi di cui sopra devo necessariamente infilare la cottura della pasta, perchè senza la pentola proveniente dalla lavastoviglie non posso farlo.
Detto in termini informatici:

  • Il prcesso cucina ha bisogno come input di un output del processo “Sl”
  • Il processo “Rl” ha bisogno come input di un output del processo “cucina”

 

 

 

La società patriarcale

Ma facciamo degli esempi: come avrebbe gestito i processi un processore Anteguerrico® (licenza poetica del mio collega redneck) ?

1cpuQuesto è l’esempio di un classico nucleo familiare patriarcale, tanto in voga ancora oggi dalle mie parti.

In pratica abbiamo una sola unità di calcolo (= persona che fa i mestieri): l’uomo si sbraga sul divano ruttando e scorreggiando™ e la donna fa, in un certo ordine, tutti i processi assegnati.

Come potete immaginare il tempo di elaborazione non è altro che la somma dei tempi dei singoli processi.

Quindi 1,8 ore

Da notare come il processo “RS” non può essere eseguito in parallelo.

Essendo una società patriarcale praticamente verrà interamente gestito dalla donna che prima fa un servizietto all’ uomo e successivamente si arrangia come meglio riesce.

Non c’è molto da dire, se non che in ambito informatico questa cosa non esiste più!

Per quanto riguarda l’ambito antropologico beh…. le cattive abitudini sono dure a morire quindi non so che dirvi.

 

 

 

La collaborazione stupida

Avete presente quando collaborate con qualcuno e vi sembra di buttare via un sacco di tempo? Bene, non è una sensazione.

2cpu

Il grafico dimostra come non sempre ( quasi mai aggiungo) raddoppiando la manodopera si raddoppia la produzione.

Vediamo nello specifico il nostro caso (per semplificare assegniamo un processo per uno alternativamente):

  • la donna pulisce il pavimento
  • intanto l’uomo fa la doccia.
  • Il processo successivo lo assegniamo alla donna che quindi si laverà anch’essa
  • il prossimo passo è svuotare la lavastoviglie. Lo assegniamo all’uomo.
  • Ora bisogna cucinare la pasta. Bene, incarichiamo la donna di farlo.
  • L’uomo attende così svariati minuti prima che tutto sia pronto cosicchè lui possa rimettere nella lavastoviglie il materiale impiegato. 
  • Ci siamo quasi: una volta che la lavastoviglie è carica possiamo, con entrambe le unità di calcolo libere, fare una bella trombata di 10 minuti.

Ma quanto ci abbiamo messo?

Tanto! 1,4 ore!

Raddoppiando la manodopera abbiamo avuto un incremento delle prestazioni di pochi punti percentuali.

Pollice verso per la collaborazione stupida!

 

 

 

Collaborazione con pipeline

Eccoci ai giorni nostri. Una moderna coppia di conviventi utilizza entrambe le agevolazioni offerte dalla tecnologia e procede nel seguente modo.

2cpupipe
  • La donna svuota la lavastoviglie. Conscia del fatto che, senza la pentola, non si può procedere al passo successivo.  
  • Una volta estratta la pentola la riempe di acqua e la mette a bollire*
  • Intanto l’uomo ha cominciato a pulire il pavimento.
  • La donna si trova con le mani libere perchè il processo “cucina” non richiede particolari attenzioni se non il buttare la pasta al momento giusto. Cosi’ inizia fare la doccia.
  • L’uomo nel mentre ha iniziato anch’esso a lavarsi, avendo terminato di pulire il pavimento.
  • Trovandosi entrambi in doccia dicono: Già che ci siamo non potremmo fare una sveltina? [del]No ho mal di testa![/del] Why not?
  • L’uomo finisce il processo doccia 6 minuti prima della donna, giusto in tempo per buttare la pasta**
  • A questo punto bisogna solo caricare la lavastoviglie. Lo assegno a chi mi pare tanto entrambi sono liberi.

*= Pdf alert: nel grafico ho stimato che la pentola salti fuori dalla lavastoviglie a metà processo. E’ una stima del tutto esemplificativa.

**= Pdf alert: ai processi “metti acqua a bollire” e “butta la pasta” ho assegnato un tempo di computazione trascurabile.

Cronometro alla mano abbiamo fatto centro:

in meno di un’ora (0.9) ho finito tutte le faccende domestiche.

Addirittura, se potessimo spezzare il processo Cl e affidarne ogni metà ad un convivente diverso potremmo risparmiare ancora qualcosa….ma qui il discorso si complica e siamo già contenti così, no?

Volete ancora di più mi dite? Umh… io meglio di così non riesco a fare, ma Elio ha pensato a voi:

Mettetevi una scopa in culo e ramazzate la stanza!

 

 

Note & info

Non lesinate sugli insulti per i grafici, me li merito!