SoC: Come funzionano e a cosa servono?

Con l’ avanzare del progresso ci siamo ritrovati ad avere in mano atrezzi sempre piu’ complessi e paradossalmente sempre piu’ trasparenti verso i nostri confronti ( il piu’ delle volte… ) ma essendo lo scopo di questo Blog dedicato all’ esposizione delle mie riflessioni in questo post voglio fare in modo di approfondire cio’ che ultimamente si da sempre piu’ per scontato per tutti coloro che ci leggono e che non si accontentano di ignorare il progresso !

Ebbene si’ mi riferisco proprio a cio’ che spingono i nostri acrocchi ultra tecnologici !

E non abbiate timore di continuare a leggere poiche’ vi assicuro, in partenza, che non vi annoiero’ facendo esclusivamente bislacchi confronti prestazionali con futili Benchmark fatti da persone “che ne sanno abbastanza” per persone che “non ne sanno una beneamata ceppa” ma bensi’ tentero’ di spiegarvi nel modo piu’ comprensibile e conciso possibile le differenze fra le varie proposte offerte dalle moderne aziende ed il loro impatto nell’ avanzamento medesimo delle piattaforme Software che li usano e di conseguenza nelle nostre vite. Dunque oggi si parla di di 3 aziende in particolare:

  • Apple;
  • Samsung;
  • Qualcomm.

Iniziamo con Qualcomm !

Qualcomm col suo Snapdragon 800 ci (ri)propone la “logica” dell’ Hotplug, essa in stato normale rende disponibile un solo Core, che aumentano nel caso un apposito SCRIPT decida di aumentarli.

Da considerare e’ che per modificare lo script bisogna possedere conoscenze di ALTO livello !

Come certamente saprete gli Snapdragon montano quasi tutti il sistema operativo Android o dei Fork di esso che utilizzano Linux e cioe’ un Kernel di natura estremamente Multitasking che, di conseguenza, lavora meglio con piu’ core e se nell’ uso normale invece di farlo lavorare con tutti i core a disposizione lo costringi a vederne solo uno potrete intuire senza troppi sforzi che ci saranno delle inefficenze poiche’ Linux per smistare i carichi usa uno Scheduler, ovvero lancia un Task per un periodo breve, allo scopo di controllare “quanto core ha usato”, lo invia al core principale ma se nel mentre si attiva un altro core gli tocchera’ ovviamente rifare tutto lo scheduling e spostare parte del codice che si trovava nell’ altro core caricandolo nel nuovo core.

Tutto cio’ ovviamente SPRECA continuamente un sacco di risorse.

Ma l’ effetto peggiore e’ la creazione di tempi morti nel quale certe istruzioni vengono parallelizzate ed il kernel purtroppo deve reinventarsi tutto da capo…

Ora vi domanderete come mai, tecnicamente, usano l’ hotplug, giusto ?

Beh, perche’ se lasciassero attivi tutti e 4 i core Krait, anche se a bassissima frequenza, il consumo energetico sarebbe ovviamente esagerato, quindi hanno optato per questa vetusta soluzione Software che comunica al driver della CPU di spegnere i core e tentando comunque di metterci una “pezza” sopra usando il Simultaneous Multi Processing ( SMP ), presente anche nei Tegra ( … ), il quale fa si’ che sia possibile gestire indipendentemente i singoli core e spegnerli se al termine dell’ elaborazione dei carichi non c’ e’ ne sono altri, ogni core ha una sua unita’ di alimentazione con una sua tensione operativa, dunque uno o piu’ core possono essere a massima frequenza con massimo voltaggio insieme ad altri con una frequenza minima a voltaggio minimo.
Pero’ l’ asincronismo del SMP ha un dazio non indifferente perche’ al posto di avere un solo modulo per tutti i core si aggiungono tanti moduli quanti sono i core presenti e cio’ si paga in transistor da alimentare, se poi il tutto viene anche sfruttato male come in questo caso non e’ solo un danno energetico ma anche economico poiche’ alza i costi di produzione per vantaggi nulli.

Adesso passiamo a Samsung !

Samsung con l’ Exynos 5420 ( Octa ) offre una proposta molto interessante nel complessivo dell’ offerta nel mercato Hardware Android poiche’ sfrutta il Power Gating, una “soluzione”, pensata da Intel tempo fa, che spegne fisicamente le aree dei Cluster se non sono in uso !

Cio’ avviene “passivamente” e cioe’ il chip stesso si spegne automaticamente se non ha del carico in quella determinata area !

Pero’ il kernel Linux ha sempre tutti i core a disposizione nel momento di smistare i carichi e se non li usa, o se non usa una porzione del core, il Chip non la alimenta. Viene semplicemente lanciato lo scheduling, prendendo il carico ed affidandolo al core meno in uso, cosi’ il Kernel cerca di sfruttare ogni core disponibile dando un carico leggero a tutti e spalmandolo il piu’ possibile senza aver bisogno di spostare i carichi.
L’ Octa puo’ vantare un’ abbastanza buona efficenza energetica senza incidere troppo nelle prestazioni grazie al sistema Big.Little, progettato da ARM, che permette di avere sempre un ottimo rendimento perche’ quando il carico e’ basso ( ~50/60 % del tempo di utilizzo… ) viene affidato ai core con architettura Cortex-A7 che a parita’ di prestazioni ha un’ efficienza maggiore di qualunque altro core ARMv7 mentre se il carico supera una certa percentuale di intensita’ interviene il Cluster Migration che affida TUTTO ai potenti core Cortex-A15 con la fregatura che anche i carichi leggeri ed ignobili vanno in Cortex-A15, consumando…

Da considerare che con il Core Migration c’ e’ comunque un TEMPO MORTO nel passaggio dall’ architettura Cortex-A7 al Cortex-A15.

Ed in fine ma non per importanza e’ il turno di Apple !

Apple col SoC A7 presenta la prima CPU ARM a 64 Bit nel mercato consumer !

Ovviamente gran parte dei vantaggi che ha portato l’ A7 sono dovuti all’ estrema specificita’ dell’ implementazione medesima di Apple. I core della CPU posseggono un’ architettura chiamata Cyclone, la quale si pensava inizialmente che fosse una piena razionalizzazione ed esemplificazione della, gia’ eccezionale ma ormai obsoleta, architettura Swift della CPU nel SoC A6 tuttavia Apple ci ha stupiti per l’ ennesima volta rivoluzionando ed innovando TUTTO con un progetto tutto nuovo !

Ergo: Cyclone NON e’ un derivato dei Cortex-A5x di ARM ed il che sarebbe anche stato impossibile nel periodo di lancio degl’ iDevice poiche’ gli stessi Cortex erano/sono ancora in Beta…

L’ ISA ( Istruction Set Architecture ) proprietaria e’ un’ intelligente implementazione di ARMv8, e per dare un’ idea generale ma non esaustiva potremmo paragonarlo ad un ibrido fra AArch32AArch64, denominato semplicemente ARM64 da Apple, oltretutto e’ stata pensata anche per non generare inutile frammentazione infatti le precedenti App compilate a 32 Bit sono compatibili senza necessita’ di virtualizzazione.
Passare a 64 Bit per Apple e’ stato sicuramente un’ ottimo salto generazionale, non trascurabile dalla concorrenza, poiche’ cio’ ha portato ad un aumento delle performance non indifferente rendendo per giunta il compilatore ( Xcode ) in grado di ottimizzare al meglio la parallelizazione delle istruzioni facendo entrare in gioco:

  1. La GPU PowerVR Quad Core G6430 col relativo supporto alle OpenGL ES 3.0 !

  2. Ed il Micro-Controllore M7, derivato dalla famiglia Cortex-M3 !

    Esso e’ stato “partorito” dal SoC A6 infatti e’ stato separato dal SoC e continua ad usare un ISA a 32 Bit per perseguire il risparmio energetico, ed elaborera’ una matrice matematica coi vari sensori, quali:

    • Accelerometro Bosch Sensortec a 3 assi;
    • Giroscopio STMicroelectronics a 3 assi;
    • Magnetometro AKM a 3 assi.

    Cio’ allo scopo di produrre un orientamento assoluto relativo alla posizione del dispositivo, utilizzando il Filtro di Kalman ed evitando di dover andare a sfruttare l’ energeticamente piu’ esigente CPU principale per dei calcoli ignobili infatti interfacciandosi colla nuova API di iOS 7 CoreMotion, apre il futuro ad una nuova classe di Applicazioni e Servizi che renderanno il nostro iDevice sempre piu’ personale !

    Attenzione: il M7 e’ stato definito da Apple come un coprocessore per mere esigenze comunicative ma non lo e’ nell’ accezione che comunemente si da al termine, di fatti e’ un tanto semplice quanto sofisticato integrato con funzioni specifiche.

Ed il raddopio dei registri permette inoltre di ridurre la “pressione” fatta sugli stessi poiche’ tutte le operazioni “pesanti” computabili nei sistemi Unix-Like sono fatte nativamente a 64 Bit alche’ per effettuare la stessa operazione con una CPU a 32 Bit ci vogliono il doppio dei cicli di clock… Problema che la precedente CPU nel SoC A6 “eludeva” con un OverClock dinamico, il quale raddoppiava da 1.3 a 2.6 GHz, arginando i tempi morti… In oltre c’ e’ stato un lavoro enorme di ottimizzazione fatto su Obj-C che con ARM64 ha implementato i Tagged Pointer, praticamente il puntatore vero e proprio occupa solo i primi 33 bit del puntatore a 64 bit mentre i restanti 31 vengono usati per immagazzinare informazioni che prima venivano immagazzinate in strutture dati esterne che richiedevano ulteriori accessi alla memoria ed elaborazioni, come ad esempio il reference counting all’ oggetto direttamente sul puntatore. Dai primi benchmarck che son stati fatti allocare memoria a 32 bit impiega 380 ns mentre a 64 Bit ci ha impiegato solo 200 ns e questo e’ solo un esempio di quello che ha fatto sul framework !

Il passaggio a 64 Bit e’ stato importante anche per supportare le operazioni del TouchID, il quale essendo un sensore capacitivo e non ottico per funzionare fa una rapresentazione matematica dello strato sottocutaneo della pelle, i valli:

Eh no compari, non vi ruba l’ impronta come il vetusto Atrix… Scontenti ?
Con buona pace per Obama & Co..

E trasferisce i dati scansionati tramite un collegamento diretto all’ enclave hardware, denominato “Secure Word”, del SoC A7 dove esegue colla tecnologia Neon operazioni di decripting, le quali sono a 64/128 Bit, restituendo al “Normal Word” dell’ A7 semplicemente un “si” od un “no” tramite l’ unica porta logica di uscita esistente. Infatti AArch64 offre anche nuove capacita’ avanzate a Neon per soddisfare lo standard IEEE754-2008 come la possibilita’ per i vettori di gestire i valori in virgola mobile a doppia precisione e un nuovo numero di istruzioni d’ arrotondamento.

In definitiva…

QUALCOMM traendo il grosso dei suoi guadagni da Android cerca di aumentare la pontenza dei core perche’, come tutti sappiamo, le App su Android sono virtualizzate ed il Play Store trae una grossa fetta dei suoi profitti dai giochini ( 80 % ) e cio’ implica che i produttori sceglieranno solo i SoC che meglio soddisferanno i bisogni consumer delle persone normali al quale devono vendere i loro accrocchi e Krait e’ veramente una buona architettura da questo punto di vista pur essendo, piu’ che altro, una piu’ semplice ma comunque sofisticata customizzazione dei Cortex di ARM…

Pero’ quest’ azienda rincorre l’ Hotplug per permettere ai produttori di avere un “migliore” controllo dei loro terminali e facilitargli i piani di obsolescenza programmata ma rilasciando i driver Open per conquistarsi i favori delle comunity.

SAMSUNG persegue l’ obbiettivo di imporre un porprio sistema di condivisione preferenziale saturando il mercato con terminali “tester” – praticamente quasi tutta la serie galaxy… – e perseguendo l’ obiettivo di fare piu’ multitasking possibile con il suo unico vero prodotto degno di nota:


Il Samsung Galaxy Note…

Ma, al momento, non ha alcun controllo ne’ sul hardware perche’ usa i progetti di ARM ( o peggio ancora, si rivolge a Qualcomm… ), ne’ tantomeno sul software poiche’ deve aspettare che Big G metta le mani su android per aggiornare il Kernel Linux alla versione 3.10 che introdurra’ l’ Heterogeneus Multi Processing, supportato a livello hardware solo dall’ Exynos 5420 presente nel Note 3 e successivi…

Gli altri verranno abbandonati coi loro problemi hardware !

Esso finalmente fara’ in modo che TUTTI e 8 i core saranno fisicamente diponibili per il kernel che potra’ smistare i carichi semplici sui Cortex-A7 e quelli potenti sui Cortex-A15 mandando ovviamente in idle i core non in uso alimentando solo in relazione al carico ed eliminando la migrazione fra i core quindi annullando anche quel tempo morto ed eliminando la necessita’ di mandare anche i carichi ignobili agli esosi Cortex-A15 !

Insomma, in poche parole Samsung e’ un “OPERAIO” non un “ARCHITETTO”…

Attualmente, nella fascia alta, non vale la pena scegliere un Exynos in confronto ad uno SnapDragon 800 poiche’ tutti i vantaggi vengono vanificati dal Cluster Migration tant’ e’ che Samsung non li vende neanche in occidente per non perdere i clienti della fascia alta ed ARM ha floppato alla grande coll’ architettutara Cortex-A15, la quale secondo me pare piu’ essere “Server-Horiented”, consumando paurosamente.

Mentre Apple provvedendo sia al software che ad hardware, con ovvi costi maggiori, si pone in vantaggio rispetto ai competitor mettendosi in condizione di fare scelte dinamiche e senza compromessi, non insegue l’ utenza ma crea nuovi bisogni in essa.
Il passaggio a 64 Bit non e’ stato comunque indolore ed ha portato anche un po’ di svantaggi poiche’ i puntatori file sono più grandi, dunque i sistemi di prefetcing, cache, ram ed insomma tutto ha meno opportunita’ di allocare informazioni.
L’ aumento della quantita’ d’ uso della RAM ovviamente c’ e’ pero’ 1 GB di RAM LPDDR3 non incidera’ sull’ esperienza utente e ne’ sara’ un collo di bottiglia vistoso dato che per compensare Apple ha modificato il modo in cui il framework a 64 Bit alloca gli oggetti in memoria rispetto a quello 32 Bit, che migliora anche per le app non convertite a 64 Bit, ottenendo cosi’ una minore occupazione di memoria ed anche piu’ velocita’ alche’ risulta nei fatti relativamente inferiore e se si riesce a far girare video in vero Slow Motion a risoluzione HD vuol dire che basta ed avanza, non mi sembra il caso di fare superfluo allarmismo. Personalmente avrei preferito qualcosa in piu’ ed Apple e’ sempre stata avida con la RAM perche’ e’ con essa che fa i margini compiendo anche i suoi piani di obsolescenza programmata.


( diagramma preso da AnandTech )

Attualmente iOS e’ un sistema “meno multitasking possibile”. E’ semplicemente pensato in modo diverso, ha una gestione della priorita’ dei processi che da precedenza al Panning ( tocco ), le App in background vengono chiuse perche’ Apple ha deciso di eliminare il garbage collector coll’ obiettivo di minimizzare il consumo di risorse mentre l’ utente sta facendo altro infatti tutto e’ delegato al sistema e le operazioni vengono fatte in Background anche se l’ app e’ chiusa. Comunque direi che questa e’ una polemica che sara’ sicuramente superata con le prossime versioni di iOS poiche’ esso avra’, con tutta probabilita’, la compressione della RAM introdotta con OS X Maveriks e la memoria virtuale nel Cloud grazie all’ ISA a 64 Bit che permettera’ di mappare in memoria fino a 2^64 Bit di RAM  !

E per risolvere l’ aumento della pressione sulla cache hanno aggiunto una SRAM di 4 MB esternamente alla CPU:


( Pianta dell’ A7 presa da Chipworks )

Ok, non e’ all’ altezza di una cache nella CPU maggiore ma esse piu’ sono grandi, piu’ scaldano ( Consumando… ) e meno dissipano ( Throttling… ), metterne 2/3 MB non risolverebbe comunque ed oltre i 3 MB che io sappia attualmente non si puo’ andare negl’ ARM, personalmente la trovo la soluzione migliore sia in termini di latenze che per limitare il consumo energetico per evitare il piu’ possibile colli di bottiglia generati dal Cache Miss dato che accedere alla memoria principale e’ assurdamente piu’ lento e nello smartphone/tablet non abbiamo di certo esigenze talmente pesanti da far preferire il risparmio energetico ad un aumento, per di piu’ sempre insufficente, di cache per inseguire latenze ( di pochissimo… ) inferiori per prestazioni relativamente maggiori…

Abbiamo bisogno di uno “Xeon” sul cellulare ?

Il kernel ( e non solo… ) di iOS 7 pero’ e’ ancora troppo immaturo, tant’ e’ che Apple non ha ancora rilasciato i sorgenti di iOS. Cio’ mi sembra abbastanza normale considerando che hanno usato Darwin OS 14.0.0, ricompilato a 64 Bit e con GUI stravolta in tempi ristrettissimi ( 8 mesi… ). Il tutto e’ instabile, pieno di bug e probabilmente verra’ risolto solo col prossimo iOS tuttavia non c’ e’ da preoccuparsi dato che nell’ informatica vige la dura Legge Di Murphy:

“Un software senza bug e’ un software OBSOLETO !”

Dunque, in fine, vi domando…

Tutto cio’ e’ innovativo SI’ o NO ?

Rifletteteci…

Annunci

3 pensieri su “SoC: Come funzionano e a cosa servono?

  1. Pingback: SoC: Come funzionano? | EgoSistema

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...