Ancora sulla sensazione di asteroide

di Uriel Fanelli

In questi giorni scrivo meno perche’ sono impegnato professionalmente, (e spendo tempo nell’esercitarmi con golang, visto che mi sto divertendo) nel senso che il futuro bussa alle porte e dopo un gran parlare le case automobilistiche iniziano a fare sul serio col M2M (Machine to Machine). Si tratta proprio dei momenti nei quali mi prende la sensazione di asteroide, e volevo spiegarla un attimo, mentre mi si spiega davanti agli occhi.

Sinora le case automobilisiche non avevano mai cercato di fare cose davvero informatiche. Hanno il loro IT, i loro centri di calcolo, i loro simulatori, e tutto quanto come e’ ovvio che sia, ma di informatica dentro le auto ne e’ entrata poca. Viene da ridere quando vi vendono l’auto “che ha il bluetooth” come se fosse scienza spaziale, quando insomma, il bluetooth il genere umano ce l’ha… “mica da mo’ “.

Sto iniziando a vedere il problema dal lato loro.

Sinora le case hanno avuto migliaia di ingegneri elettronici a costruire la circuitazione di bordo. Il nostro cliente ne ha circa 3300.

Questi elettronici stanno a progettare e a rendere “robusta” per anni di lavoro (tra una cosa e l’altra calcolano in 15 anni il tempo di vita di un’auto) , e quando intendono robusta intendono una cosa che regga ad urto, cambi di temperatura, umidita’, vibrazioni su ogni frequenza, e non tradisca mai.

Fanno un uso massivo di SoC , FPGA e Asic, come e’ ovvio che sia.

Ora, quali sono i requisiti di un SoC o di un Asic moderno?

Beh, costruirne uno e’ mostruosamente costoso, all’inizio. Solo la fonderia e’ un investimento da ~5 MILIARDI di Euro. C’e’ poi la fase di bench test , che e’ orribilmente costosa. Il processore viene descritto in un linguaggio di programmazione “descrittivo”, come Verilog, e poi viene “testato” praticamente in tutte le condizioni di uso.

Un tempo per fare questo si usavano “normali” simulatori, poi si vide che in alcune situazioni alcuni multiplexer ponevano dei problemi non polinomiali e si usarono tecniche diverse, sino alle reti neurali, e gli ultimi ritrovati fanno addirittura una verifica formale del processore (descritto come programma) , usando le logiche di Hoare L’uso delle logiche di Hoare rende davvero formale, ovvero matematico, il processo di test.

Quando si esce da questo genere di prova, il processore semplicemente NON-HA-BACHI.

Di quale complessita’ stiamo parlando? Se il processore i7 ha ~800 milioni di transistor, e supponiamo che si descriva il singolo transistor in Verilog, il metodo sarebbe valido per testare 800 milioni di righe, almeno.

In realta’ poi ci sono tutte le tecniche di sintesi, ma un processore come i7 mostra comunque piu’ complessita’ di un kernel di Linux, per dire.

Eppure, sebbene a costi ripugnanti per l’uomo comune (ci potete comprare un paesello di qualche decina di migliaia di abitanti, sino all’ultimo chiodo) , fare questa operazione e’ possibile.

Sia chiaro, non e’ fantascienza:

Morale: i chip vengono verificati formalmente, ovvero con un processo equivalente in bonta’ ad una dimostrazione matematica. In un chip che implementi SSL, per fare un esempio, un baco come Heartbleed non poteva passare questo genere di verifica.

Da qui potete capire che questi ingegneri, nell’ Automotive , quando comprano un prodotto che fa la tal cosa, hanno ottime ragioni per fidarsi. Se per esempio comprano un Asic con dentro il TCP/IP, il DNS e FTP, sanno che e’ stato testato in questo modo, per cui se ne possono fidare ciecamente, o quasi.

In pratica, essi vivono in una specie di mondo fatato nel quale il “software”, o meglio cio’ che noi chiamiamo “software”, semplicemente funziona. Sempre. Per definizione. E fa quello che si dice che fa, ovvero sino all’ultimo bit. Per questo nella vostra auto non ci sono DUE centraline, ma UNA. Trovatemi una sola applicazione mission-critical che non abbia ridondanza, nel mondo IT. Beh, per loro e’ normale. Perche’ dovrebbe rompersi?

Adesso immaginate questi signori, che vengono dal pianeta “l’algoritmo funziona” ed entrano nel mondo IT. Cercando dei software affidabili per fare l’ OS automotive.

E immaginate che , corroborati da anni di lavoro su SoC e Asic che semplicemente funzionano si trovano con gente che gli dice:

  • Che bisogna ridondare perche’ il guasto capita sempre.
  • Che comunque il baco e’ inevitabile, e in 15 anni se ne scopriranno un sacco, qualsiasi software comprino.
  • Che devono ragionare di cambiare il software per fare delle patch ogni 612 mesi, come ogni software di questo mondo.

Ovviamente credono di essere finiti in qualche incubo.

E’ come se Bosch dicesse loro che l’auto deve tornare al concessionario ogni 6 mesi per le patch. Oppure che dopo l’ultimo upgrade – obbligatorio – la centralina e’ troppo lenta e devono cambiare modello altrimenti non va abbastanza in fretta per l’auto.

Delirio.

La verita’ e’ che esistono sistemi embedded capaci di fare questo, come quelli che vanno sui satelliti artificiali, che non sono proprio proprio semplici da manutenere. Ma a parte il fatto che l’ OS si aggiorna a distanza anche sui satelliti, almeno sui piu’ recenti, sinora nessuna casa ha ancora corso il rischio di fornire una scatolina che:

  • Venga installata su ~10 milioni di auto /anno
  • Lavori per 15 anni
  • Abbia una percentuale di guasti/fermi inferiore a E, con “E” nello stesso ordine di un motore d’auto.
  • Nei primi anni di garanzia questa percentuale scenda a un numero microscopico, a patto di eseguire un diagnostico.

Sono state interpellate case di software MOLTO, MOLTO, MOLTO famose per il loro “software affidabile”.

Ma si e’ scoperto che il software e’ cosi’ affidabile perche’ viene venduto con sistemisti al seguito (mainframe), perche’ viene ridondato abbestia (cluster) , e perche’ c’e’ di continuo una presenza di monitoring e call duty (controlli industriali vari).

Niente che si possa implementare su un’auto.

Cosi’ le case vogliono trasformare le auto in una specie di cyborg con le ruote, ma hanno un problema serio: arriva al pettine il nodo del millennio, ovvero che non esiste nessuna legge di Moore per il software

La legge di Moore, nel mondo dell’hardware, ha sempre mantenuto le proprie promesse. Non solo per i processori. Paragonate un CRT del 1995 con un retina del 2015. Paragonate la potenza di una CPU, di una scheda di rete, di una scheda grafica, di un hard disk, di un controller per i dischi, QUALSIASI MALEDETTA COSA, e scoprirete che il mondo dell’hardware ha prodotto roba SEMPRE MIGLIORE nel tempo. Il mondo del silicio, cioe’, si e’ evoluto BENE e TANTO

Il mondo del software, invece? Evoluto? Windows aveva una barra “start” in basso nel 1995, e ne ha una oggi. Apple aveva una barra in alto e un cestino nel desktop nel 1995, e ne ha uno ora. Il sistema operativo piu’ usato nell’embedded si ispira a Unix, una roba che ha 44 anni.

E’ piu’ affidabile? Alzi la mano chi ha mai visto MS DOS in crash. Poi chi ha visto Windows 8 in crash. Uhm. La seconda che ho detto.

E’ piu’ sicuro? Uhm. Non direi.

E’ piu’ leggero? Fate girare un sistema operativo moderno su una macchina del 1995 e mi saprete dire.

Ma allora in cosa e’ migliorato il software? In niente, o quasi.

Il software fa schifo.

Ed e’ questo che salta fuori oggi, mentre si inizia a fare SUL SERIO con gli IoT, con la “internet delle cose”. Se vogliamo mettervi un computer nella lavatrice, ed essere sicuri che non vi mandera’ a fuoco la casa, dobbiamo metterne due? Ed eseguire manutenzione a tutte le lavatrici vendute ogni 68 mesi per un upgrade? Sul serio? Scherziamo?

Il mondo IoT deve convincere l’hardware a fare le cose che fanno i nostri computer. Allora io sono un consulente e vado da una grande azienda a parlare di domotica. Mettiamo interruttori IoT ovunque, lampadine IoT ovunque, facciamole comunicare, e con un bel server controlliamo le luci ottimizzando i consumi, prenotando l’accensione delle sale riunione solo quando c’e’ la riunione eccetera.

Fico?

Fico. Ma poi devi spiegare che non e’ UN server. Sono due, ridondati. Serve a garantire continuita’. E poi hanno bisogno di alarming. E poi hanno bisogno di sistemisti di supporto.
Sapete cosa vi diranno i manager?

Che installano dei pannelli solari per risparmiare energia, e la vostra domotica ve la ficcate nel culo: un interruttore manuale non costa quasi nulla di contratti di assistenza, non si guasta quasi mai, funziona di sicuro, non ha bisogno di replicazione, di software o di sistemisti, allarmi e replicazione.

Certo, se poteste andare con una scatolina di controllo che la piazzate e ve la dimenticate sarebbe diverso. Ma del resto, se esistesse il sistema operativo che lo piazzate e ve lo dimenticate, non avremmo quel che abbiamo oggi. Se esistesse la suite office che la installiamo e ce ne dimentichiamo, non saremmo ad usare quel che usiamo. E se esistesse una scatolina che fa tutto questo in hardware, la installiamo e la dimentichiamo, oggi l’informatica sarebbe molto diversa.

Stiamo entrando nel mondo dell’ IoT e non abbiamo i software adatti. IoT inplica almeno il pareggio della qualita’ tra software ed hardware, ma se il silicio e’ praticamente perfetto, il software fa cagare.

Sono anni che nel mondo dell’auto si cerca di portare il computer nell’auto. E sono anni che gli ingegneri scuotono la testa dicendo “se solo ci fossero i software che ci servono”.

Ma adesso non possono piu’ tirarsi indietro. L’ e-call , di cui avevo parlato in passato, e’ stato approvato e se per questo basta un “volgare” chip GSM da due lire, questo momento rappresenta uno spartiacque. Lo IoT e’ ormai LEGGE. E’ nella mente di tutti.

Tutti vogliono le auto intelligenti. E siccome si sa che il primo arrivato vincera’, tutti ci stanno provando come dei forsennati.

E stanno fallendo.

E il problema non e’ MAI l’ hardware. MAI il silicio

C’e’ una certa disperazione, e come consulenti siamo chiamati, ovviamente, a portare lumi. E sapete cosa stiamo consigliando?

Di usare gli SoC.

Sulle schede grafiche attuali c’e’ abbastanza codice da costruire finestre per un’interfaccia grafica. Hanno gia’ le primitive per ruotare solidi, disegnare pulsanti e tutto. Sulle schede RAID ci sono SoC e ASIC che hanno tutte le primitive per gestire un filesystem. Le schede di rete montano SoC per TCP/IP, ethernet, GSM, LTE. HTTP e’ negli ASIC mica da mo . Ma che cavolo se ne fanno di un “sistema operativo? e del “middleware?”

C’e’ gia’ tutto, su silicio. E le proposte per l’ IoT cominciano a fioccare

Volete Java su silicio? Eccovelo
Volete sicurezza? ARM Trustzone. Tutto silicio e niente spine.

Sia chiaro: non sono io l’ unico a dire che le cose andranno a cambiare: se ne sono gia’ accorti. E stanno gia’ nascendo soluzioni che sono, su silicio, delle vere e proprie macchine all purposes, comprese delle funzionalita’ che di solito assegnamo ad un sistema operativo, e molte di quelle che di solito ci aspettiamo da un applicativo server.

Il significato?

Il significato e’ semplice: o chi scrive software si da una mossa, oppure tutti, e non solo le case automobilistiche, si rivolgeranno al mondo del silicio. Le case di auto ormai a cercare una software house ci hanno rinunciato. Tutte. Faranno tutto su silicio.

E se questo succede, e’ assolutamente possibile che tra 10 anni il mondo sara’ invaso dalla “internet of things”, ma questo NON significhi AFFATTO che gli sviluppatori di software ed i programmatori lavoreranno di piu’.

Potrebbe significare che NON lavoreranno AFFATTO.

E gia’ oggi, qualche segno della tendenza a portare su silicio si nota: a chi sa fare verifica di SoC, Asic & co, per trovare lavoro basta cercare con google

Ecco il vostro asteroide.

di Uriel Fanelli

PS: questo pezzo e le altre magnifiche elargizioni di saggezza di Uriel sono analizzate su un altro blog degli Untermenschen che curano questo specchio.
PPS: pezzo automagicamente caricato da Fornello!

Annunci

15 pensieri su “Ancora sulla sensazione di asteroide

  1. MA LOL. I post tecnici sono i più divertenti: sono visionari, assurdi, incoerenti, ridicoli e…apocalittici.

    Difatti il Nostro non si esime dal profetizzare:

    e’ assolutamente possibile che tra 10 anni il mondo sara’ invaso dalla “internet of things”, ma questo NON significhi AFFATTO che gli sviluppatori di software ed i programmatori lavoreranno di piu’.

    Potrebbe significare che NON lavoreranno AFFATTO.

    Sta cosa dei 10 anni gli piace. “Fra 10 anni accadrà questo”, “fra 10 anni potrebbe succedere quest’altro”.
    Insomma: LOL al quadrato.

    Mi piace

  2. E quindi magicamente se il mio programma è integrato nell’hardware posso dimostrare che sia senza bachi, mentre se lo carico in RAM no?

    Del resto i teoremi scolpiti sulla pietra hanno dimostrazioni più certe di quelli scritti su carta.

    Mi piace

    • io spero che intendesse dire che con un “programma hardware” elimini i bachi tipo errori di trasmissione (bit che cambiano a caso, errori di lettura ecc.).
      Perchè se fai un programma che passa iun valore alla funzione logaritmo e a volte questo valor epuò esser enegativo, ti troverai un errore, silicio o no. Idem se applichi Pitagora a un pentagono (sicuramente ti restituirà un numero… ma di cosa stiamo parlando?)

      Mi piace

      • Non solo. Assumendo di voler implementare un algoritmo arbitrario completamente a porte logiche, ad un certo livello di complessità si arriva semplicemente ad aver costruito un processore speciale in grado di eseguire un singolo programma. A questo punto, diventa un programma a tutti gli effetti, e diventa estremamente difficile provarne la correttezza formale, né più né meno che se fosse un programma che gira su un processore.

        Liked by 1 persona

  3. Uno che di mestiere lavora nell’informatica NON PUÒ confondere hardware e software in questa maniera. Il primo collegamento punta ad un articolo che parla di portare dei pezzi di una libreria “simile a SSL” (e, tra l’altro comicamente obsoleta) ad un derivato dello Z80. Il secondo punta ad un sistema basato su 8051 che è dotato di serie di uno stack TCP/IP (e che di fatto in silicio ha solo l’acceleratore di checksum). Il collegamento dentro ad altera parla del sistema operativo (pessimo) che altera fornisce per i NIOS II. E vogliamo parlare del fatto che usa il termine SoC non capendo evidentemente nemmeno cosa significa?!

    Liked by 1 persona

  4. Non so, se già nell’ultimo periodo, prima di essere bannato, notavo parecchie incongruenze e sbroc, oppure è da quando leggo, qui, commenti divergenti dalle sue opinioni, probabilmente entrambi, che alcuni passaggi, mi sembrano scritti senza cognizione della materia.
    ok, ok, non ho indicato nulla ma c’è già tanta carne a cuocere, volevo solo riportare una sensazione.

    Mi piace

  5. Non so, se già nell’ultimo periodo, prima di essere bannato, notavo parecchie incongruenze e sbroc, oppure è da quando leggo, qui, commenti divergenti dalle sue opinioni, probabilmente entrambi, che alcuni passaggi, mi sembrano scritti senza cognizione della materia.
    ok, ok, non ho indicato nulla ma c’è già tanta carne a cuocere, volevo solo riportare una sensazione.

    Mi piace

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...