Ancora sulla sensazione di asteroide

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 davveroinformatiche. 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 612mesi, 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. HTTPe’ 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.