Dual core – come quando perché

23 marzo 201121 commenti

Molto spesso leggo post sul forum relativi ai dual core, i dubbi vantaggi e paure sui consumi raddoppiati. Sono qui per svelare arte e mestiere di questa tecnologia, partendo da cenni storici, passando per la comprensione di come una CPU riesce a gestire più applicazioni alla volta, fino ad arrivare a perché i dual core siano il futuro non solo delle prestazioni, ma anche di una migliore fruizione delle batterie dei nostri dispositivi.

Partiamo da cenni storici: i computer sono nati come enormi macchine in grado di eseguire un solo programma alla volta, e già allora era un miracolo che non si inceppassero (ad esempio a causa di scarafaggi fritti tra le bobine). Il loro processore era in grado di operare una sola operazione alla volta, quindi se il programma aveva un ciclo infinito, non aveva nessuna possibilità di interromperlo ed il solo modo per interrompere il processo era quello di spegnere il sistema manualmente. Tutto questo ad oggi avviene “under the hood” senza che l’utente debba compier azione grazie ai sistemi operativi, ma come fanno a girare assieme ai programmi? Specialmente con i processori ad un solo core, se riescono a gestire un solo comando alla volta – e fidatevi, questo è esattamente quel che accade – come mai riusciamo ad eseguire già due programmi alla volta?

Esistono più vie per conseguire questo risultato, hardware o software, una delle quali è l’hyper-threading della Intel, in grado di far eseguire più programmi non simultaneamente, ma in modo alternato. In ogni caso quel che sto per scrivere è alla base di qualsiasi tecnologia, incluso lo scheduling, questa volta gestito via software dal sistema operativo. Senza andare nei dettagli tecnici, questo tipo di tecnologie permette di dare ad ogni programma un determinato, piccolissimo periodo di tempo d’esecuzione (scandito da un certo numero di clock o da altri fattori che possono essere decisi al momento dello sviluppo dell’OS o parametrizzati nei software), se questo viene superato il programma viene congelato e rimesso in coda d’esecuzione. I processori, che viaggiano a velocità per il cervello umano fantastiche, riescono quindi a dare l’illusione che più programmi girino assieme.

Per caricare un programma all’interno di un processore bisogna caricare l’operazione e i relativi dati dalla RAM all’interno di memorie speciali all’interno della CPU, i registri, e prima di raggiungerli passano per la (o le, in caso di processori evoluti) cache. Una volta che il dato viene elaborato, il risultato viene depositato a sua volta in RAM o in altri registri e la prossima azione viene caricata all’interno della CPU, continuando il flusso del programma.

Ogni passaggio di dati genera calore, prodotto di scarto di un meccanismo altrimenti a consumo zero. Questo calore è dovuto al passaggio di corrente all’interno dei circuiti della RAM, del BUS (corridoio di comunicazione) e della CPU (registri, unità logica, cache…). Ora, se è vero, come lo è, che i programmi non vengono eseguiti uno dopo l’altro, ma continuano a contendersi il processore, il calore accumulato non è più soltanto quello generato dai singoli programmi, ma anche quello generato dal continuo spostare dei dati dai registri della CPU alla RAM e viceversa solo per mantenere lo stato del programma e non farlo avviare da capo ogni volta.

Ed è qui che entrano in gioco i processori multi-core. Gli ingegneri hanno pensato: perché non far eseguire due operazioni simultaneamente, piuttosto che farli alternare di continuo? Ovviamente lo scheduling e implementazioni hardware sono sempre e comunque alla base dei processori moderni, ma questi riescono a gestire il doppio (dual core), il quadruplo (quad core) o anche più operazioni al secondo, letteralmente dimezzando o più i tempi di esecuzione.

Così come nei computer, anche i processori di ultima generazione per tablet e smartphone utilizzano questa tecnologia, creata grazie al processo di miniaturizzazione dei circuiti, permettendo lo stesso numero di operazioni di una CPU di vecchia generazione al costo dimezzato di clock. Per fare un esempio pratico (e teorico) un ipotetico Nexus One dotato della stessa capacità di calcolo, ma dotato di un processore dual core, avrebbe una CPU che girerebbe a 500 Mhz, più lento di un HTC Magic, ma molto più performante sotto due punti di vista:

  • Un processore che gira a frequenze inferiori necessita di minore energia
  • Se si svolgono due lavori simultanei, si dimezzerà il calore dovuto alla tecnologia hyper-threading

Ecco svelato quindi l’arcano sui processori Dual Core. Ma non tutto ciò che luccica è oro, specialmente per Android 2.3 “Gingerbread” e precedenti. Vi starete chiedendo perché prima vi abbia detto dei miracoli del dual core per poi dire che non è una cosa buona. Il problema risiede alla capacità del sistema operativo di gestire questi dual core. È come mettere un motore di una ferrari con un cambio di una 500: anche se il primo è in grado di sviluppare 400 cavalli, il secondo non gli permetterà di ingranare la giusta marcia. Mi spiego meglio: se il sistema operativo ignora le facoltà del processore, questo continuerà a girare in modo tradizionale.

Bisogna quindi che il sistema operativo capisca e comprenda il suo motore per poterlo sfruttare e questo avverrà non prima della versione 2.4 “Gingerbread”, o già adesso con 3.0 Honeycomb. Inoltre anche i programmi dovranno essere scritti per sfruttare più operazioni in simultanea e ciò avverrà su due livelli: il primo prevede una compilazione per un sistema che sfrutta il multi-core (ossia compilare per Android 2.4) per rendere multi-core compatibile l’interfaccia grafica e le basi degli eventi, il secondo invece prevede una modifica sostanziale del codice del programma per sfruttare appieno questi processori (ossia sapere che si possono sfruttare tranquillamente fino a 4 flussi di lavoro indipendenti).

Quindi il consiglio finale è: non comprate telefonini dotati di processori dual-core, non ne valgono la pena fino a quando uscirà Android 2.4 (previsto tra 1-2 mesi), non spendete neanche una marea di soldi per i primi, se avete un cellulare ancora performante, le prime app “serie” e completamente ottimizzate per tali processori cominceranno a comparire sul market non prima di 4-6 mesi. L’unica eccezione sono i tablet nati con Honeycomb: le applicazioni per tablet, senza considerare ovviamente le google apps, infatti sono già sviluppate con il multi-core in testa e quindi l’acquisto di tale hardware, se si vuole affrontare un costo così grande, è giustificato.

Quindi, riassumendo, il processore multi-core permette innanzi a tutto di diminuire i costi energetici viaggiando a frequenze inferiori per le stesse prestazioni e, se sfruttati a dovere, un notevole decremento di calore (ossia energia di scarto e quindi sprecata).

Dual Core, the way it’s meant to be played!

  • Ottimo articolo. Comunque, parlando di cellulari, i dual core sono già fantascienza… Presto, nel corso dell’anno, verranno presentati i primi quad core.

    Prima del 2012 dovrò cestinare il mio i5 e rimpiazzarlo con un terminale android :P

    • dontworryjohn

      Eh già andrea tra un paio di anni avremo un i5 in tasca!

  • io stavo dando un occhiata ad un netbook con Tegra2 che intende commercializzare Sony quest’estate, 11.6″ , 1GB di ram , 16GB di flash, WWAN, BT, WiFi e ChromeOS , completamente “no moving part” come piace a me .

  • Fciavatta

    …continuiamo cosí…con tutti queste radiazioni addosso al corpo. Poi ci si lamenta dell’infertilitá giovanile… se non dei tumori…

    • Sommopastore

      Certo è proprio quella la causa dell’infertilità giovanile, non i jeans stretti LOL

      • Fciavatta

        in rete ci sono milioni di articoli, te ne passo solo uno:

        http://www.antologiamedica.it/2010/12/24/le-radiofrequenze-dei-telefonini-riducono-la-fertilita-maschile-danneggiando-gli-spermatozoi/

        liberi di autodanneggiarvi come vi pare, per caritá

        • Master89

          Post senza senso in questo thread.

          Il fatto che il processore sia single core o dual core non influisce minimamente con le frequenze emesse, anzi, le due cose sono totalmente scorrelate.
          Ci si può fare male con l’ultimo Android uscito cosiccome con un Nokia di 10 anni fa, anzi, forse fa più male quest’ultimo…

          In ogni caso il fatto che faccia male è un’ ipotesi, non dimostrata, nè smentita, e nessuno obbliga a tenere il telefono in tasca. Personalmente non ce l’ho quasi mai nei pantaloni, anche perché sti cosi sono delle padelle scomode da tenere nei jeans…

        • Smb

          Se esistessero studi fatti come si deve, ora leggeremmo l’apposita avvertenza sui cellulari, o ne sarebbe vietato l’uso. Per cui i milioni di articoli possono anche essere 1milione + 1 scritto da me che varrebbe quanto tutti gli altri.

  • Smb

    Ancora con questa storia del calore, scommettiamo che l’autore di questo articolo e’ lo stesso che ha… diciamo… “spiegato”… come funziona il task manager? Il calore non e’ la causa di qualcosa, e’ il sintomo!

    • Scusa, dove c’è scritto che il calore è la causa? C’è scritto che il calore è causato da…e non che il calore genera qualcosa….

      • Smb

        Se leggi e capisci il senso di quello che e’ scritto…..
        Questo tizio non capisce il calore come effetto secondario dell’attivita’ elettrica, ma come causa del dispendio energetico, come dire hai la febbre perche’ hai la temperatura alta, NO, hai la febbre perche’ hai una malattia e la reazione immunitaria alla malattia e’ la febbre; quando ti fai curare, la temperatura e’ l’ultimo degli effetti che ti interessa, ti interessa curare la CAUSA non la semplice temperatura.
        Poi riporto: “Se si svolgono due lavori simultanei, si dimezzerà il calore dovuto alla tecnologia hyper-threading” quindi vedi che incentra tutto sul calore? A parte che l’hyper-threading non c’entra niente ed e’ stato gia’ detto….
        Altre corbellerie: secondo l’autore di questo articolo basta un secondo processore ed ecco qui che non serve piu’ il multitasking software (quindi il cambio di contesto, etc) perche’ ora c’e’ il secondo processore che fa il secondo task che dovrebbe eseguire con artifici vari il primo, quindi risparmiando il cambio contesto si risparmia energia…. MAGARI!!
        1) MAGARI bastasse un secondo processore! Il sistema operativo troppe ne fa di operazioni “concorrenti”, mica solo 2 alla volta! Di cambi contesto ne avrai sempre e comunque a bizzeffe!
        2) MAGARI fosse gratuita l’implementazione hardware/software di piu’ core! La seconda CPU non la vuoi alimentare? Non consuma energia? E tutta la logica software che separa il lavoro nei vari core e ne raggruppa i risultati, non sono attivita’ che consumano energia?
        3) come qualcuno ha gia’ detto, non e’ certo l’operazione di scheduling quella che consuma energie, ma l’esecuzione vera e propria dei processi. Il cambio di contesto nella maggior parte delle volte equivale a cambiare qualche puntatore e basta, non e’ che sposti megabytes di dati ad ogni cambio di task, cambi semplicemente il puntatore ai registri, all’istruzione da eseguire, e alla memoria dati, i dati sono gia’ li’ parcheggiati, non vanno spostati.
        Evitiamo di infierire oltre vah.

        • baldanx

          Riprendo i passaggi interessati:
          “Ogni passaggio di dati genera calore, prodotto di scarto di un meccanismo altrimenti a consumo zero. Questo calore è dovuto al passaggio di corrente all’interno dei circuiti della RAM, del BUS (corridoio di comunicazione) e della CPU (registri, unità logica, cache…)”
          “l calore accumulato non è più soltanto quello generato dai singoli programmi, ma anche quello generato dal continuo spostare dei dati dai registri della CPU alla RAM e viceversa”
          “Se si svolgono due lavori simultanei, si dimezzerà il calore dovuto alla tecnologia hyper-threading”
          “il processore multi-core permette innanzi a tutto di diminuire i costi energetici viaggiando a frequenze inferiori per le stesse prestazioni e, se sfruttati a dovere, un notevole decremento di calore (ossia energia di scarto e quindi sprecata)”

          Questo pare italiano corretto solo a me o cosa?

          • Smb

            Se dovevi rispondere semplicemente copiando/incollando l’articolo potevi anche fare qualcosa di diverso e piu’ utile…

    • Koala04

      Sai che stavo per scrivere la stessa cosa?

  • Checo79

    che marea di cazzate

    hyperthrreading che centra?
    calore? lo switch del contesto, perchè così si chima occupa una frazione di cicli di clock rispetto al task vero e proprio.
    poi sembra che un thread magicamente mandi il carico al 50% e 50% su due cpu, e questo è vero in minima parte solo se il programma è multithreading, ovvero quasi nessuno su android.

  • Anonimo

    finalmente una chiara e semplice spiegazione che chiarisce diversi punti, ma la cosa fondamentale e che ora comprare un dialogo corso, tipo ogni dialogo, non ha proprio senso.

    • Smb

      Eh??? Infatti non si capisce niente in quello che hai scritto, ti devo dar ragione nell’unica cosa che si capisce: “non ha proprio senso” (quello che hai scritto)….

  • Raffaele

    Io continuo a vederla come un’operazione di marketing.
    Già oggi sui desktop/portatili i programmi multicore si contano sulle dita di una mano, figuriamoci un povero sviluppatore indipendente che deve sbattersi per ottimizzare il tutto

    • Smb

      No, il vantaggio in velocita’ c’e’ ed e’ innegabile, dici bene che non tutti si mettono li’ a sviluppare programmi ottimizzati per core multipli, spesso nemmeno serve, ma
      1) dove servira’ vedrai che i programmatori lo faranno: programmi (giochi?) grossi, pesanti, che diversamente girerebbero troppo lentamente
      2) anche senza programmi specificatamente progettati, considera sempre che sono molti i processi che girano “contemporaneamente”, gia’ il solo fatto che cosi’ hanno 2 cpu da spartirsi invece che 1 fa si’ che l’intero sistema giri piu’ rapidamente.

  • Frozen

    L’articolo è scritto in maniera molto superficiale, ma al di là delle mancanze tecniche/teoriche è stata data una decente infarinatura di hardward-software e applicazioni per utenti che non capiscono molto di scienza dell’informazione.
    Il punto, al di là di quello che è scritto, è che un processore dual core si guadagna SEMPRE in prestazioni ( anche se non sia ha un OS o un app progettata per il multitheading / multitasking) ma il guadagno varia molto da come viene gestito il software ( a livello hardware con architetture parallelle non si ha mai un guadagno del 50% in prestazioni, infatti si deve utilizzare parte dei cicli di clock per la sincronizzazione e la verifica incrociata dei risultati).
    Quindi spendere chessò 600 € ora non conviene per un telefono dual core, ma questo non significa che un Optimus One è meglio di un Optimus Dual Core!
    Il dual core però ha davanti a sè una infinità di possibilità per migliorare il calcolo e la fluidità generale. Che poi francamente tutta questa potenza servirà e sarà utilizzata specificatamente per far girare giochi sempre più complessi,un telefono cellulare, nella mia ottica funziona benissimo anche con un processore multitask da 600mhz.

    • Frozen

      ps: in tutto il discorso fatto ovviamente si hanno maggiori prestazioni, ma si hanno di conseguenza maggiori consumi.(non vengono raddoppiati comunque)