Quantcast
Channel: Recent posts
Viewing all articles
Browse latest Browse all 33

Considerazioni sul processore Intel Atom

$
0
0

When porting to the netbook platform one observes a vast improvement in the available resources, namely in the sheer power of the ATOM CPU. La prima cosa che gli sviluppatori si chiedono è "Come posso sfruttare tutta questa potenza?”. In quest'articolo seguiremo un percorso simile ed esploreremo i principali fattori da considerare quando si tratta di utilizzare questa nuova disponibilità di prestazioni della CPU.

Derivando dai telefoni mobili con processori integrati ARM*/RISC nell'intervallo dei 600 MHz, il processore Intel® Atom™ offre, oltre a un clock più veloce, anche funzioni aggiuntive che gli conferiscono quelle caratteristiche di potenza di elaborazione pura e di basso consumo che sono molto apprezzate dagli utenti. Anche il processore Intel® Atom™, alla pari del famoso processore Pentium®, è disponibile in molti modelli diversi.

La piattaforma dei netbook, visto che comprende più modelli di processore Intel® Atom™, è perciò la prima area da considerare nel processo di porting. Affinché il porting dell'applicazione avvenga correttamente è essenziale utilizzare tutte le potenzialità del processore Intel® Atom™ facendo contemporaneamente attenzione ai rischi di perdere prestazioni.

Richiesta di informazioni sulla CPU

Prima di entrare nel vivo della questione, occorre chiedersi con cosa si sta lavorando. È importante cioè chiarire che si sta lavorando con un processore Intel® Atom™, sapere di che modello è e la velocità a cui opera. Sono informazioni che possono essere recuperate in svariati modi. In Windows si hanno le seguenti opzioni.

  • Metodo SDK _cpuid della piattaforma
  • Utilizzare WMI (Windows Management Instrumentation)
  • Richiamare le informazioni tramite il Registro di sistema

Qui di seguito è riportato un semplice esempio di come estrarre il modello, la famiglia e lo stepping del processore, usando il metodo _cpuid in Visual Studio* 2008:

#include <stdio.h>
#include "cpuid.h"

void main(void)
{
    _p_info info;

    _cpuid(&info);

    printf("v_name:\t\t%s\n", info.v_name);
    printf("model:\t\t%s\n", info.model_name);
    printf("family:\t\t%d\n", info.family);
    printf("stepping:\t%d\n", info.stepping);
}

_cpuid() 

Dettagli: http://msdn.microsoft.com/en-us/library/hskdteyh%28VS.80%29.aspx

Contenuto del download: http://download.microsoft.com/download/B/A/D/BADA8219-9761-498D-85B4-4565C28F4DB8/crt/cpuid.zip.exe

Se si preferisce usare WMI, ecco un esempio di come usare WMI in .NET (C#):

using System.Management

public void DisplayCPUDetails()
{
    ManagementClass mgmt = new ManagementClass("Win32_Processor");
    ManagementObjectCollection objCol = mgmt.GetInstances();
    
    // Loop through all processors
    foreach (ManagementObject obj in objCol)
    {
        Response.WriteLine("ID",obj.Properties["ProcessorId"].Value.ToString());
        Response.WriteLine ("DeviceID",obj.Properties["DeviceID"].Value.ToString());
        Response.WriteLine ("Socket", obj.Properties["SocketDesignation"].Value.ToString());
        Response.WriteLine ("Manufacturer", obj.Properties["Manufacturer"].Value.ToString());
        
         // Clean up
        obj.Dispose();
    }
}

Dettagli WMI: http://msdn.microsoft.com/en-us/library/aa394373%28VS.85%29.aspx

Nota: sebbene i "netbook Intel® Atom™" siano effettivamente la piattaforma di destinazione dei programmi Intel AppUpSM, non vogliamo escludere la possibilità che altri processori eseguano il nostro codice. Esistono numerosissimi casi in cui un'app integrata nell'SDK Intel® Atom™ potrebbe essere eseguita su una CPU non Intel® Atom™ (debug, test di accettazione utenti e così via). Nel caso si avessero dubbi di natura tecnica si consiglia di avvisare l'utente che l'applicazione è progettata per essere usata con un processore Intel® Atom™, altrimenti potrebbe non funzionare nel modo previsto.

Linea di prodotti dei processori Intel® Atom™

È importante notare che esistono numerosi modelli di processore Intel® Atom™. Vanno da 800 MHz a 2,13 GHz con molte velocità intermedie. Evito di proposito di inserire qui una lunga tabella con i modelli dei processori, rimandando invece al sito Web ufficiale di Intel per queste informazioni. Ciò che è importante notare è che le prestazioni disponibili potrebbero variare in modo notevole in funzione della CPU Intel® Atom™ del netbook usato dal cliente. Se l'applicazione fa un uso molto intensivo del processore, valutare la possibilità di inserire nei metadati dello store Intel AppUpSM un avviso di esclusione di responsabilità o i requisiti consigliati. In questo modo si evitano ulteriori insoddisfazioni dei clienti che, al contrario, saranno felici di essere stati correttamente informati.

Elenco delle CPU Intel® Atom™: http://ark.intel.com/ProductCollection.aspx?familyID=29035

Comportamento adattivo

Permettendo all'applicazione di riconoscere il processore, si apre anche la possibilità di far operare l'applicazione in base ai dati della CPU rilevati e così migliorare l'esperienza dell'utente. Quale comportamento dovrebbe cambiare l'applicazione quando è eseguita su una CPU più lenta? Cosa potrebbe fare l'applicazione quando è eseguita su una CPU più veloce (pensare al multi-threading, a una codifica di qualità più elevata e così via)?

È semplicemente irragionevole pensare di ottenere dai netbook basati su Intel® Atom™ prestazioni allo stesso livello delle workstation di fascia alta. Dobbiamo prestare attenzione all'esperienza dell'utente in quanto dipende dalle capacità di prestazioni di ciascun modello di processore Intel® Atom™. Ed è anche vero l'opposto: la maggiore potenza di elaborazione, che spesso abbiamo a disposizione, deve essere utilizzata nei limiti consentiti dalle diverse circostanze.

Un buon esempio di quest'affermazione è un'applicazione che esegue la conversione dei file multimediali. Il codificatore sottostante ha molti parametri, ciascuno dei quali influisce sull'output e il carico della CPU. Se l'attivazione del parametro XYZ fa sì che l'applicazione impieghi cinque volte di più rispetto a quando è eseguita con il processore Intel® Atom™ modello 123, possiamo intervenire con modifiche e così migliorare drasticamente l'esperienza dell'utente.

Insieme dinamico di funzioni

Ognuno di noi desidera che la propria applicazione funzioni al meglio per i clienti. Assicurando un'esperienza utente ricettiva ci assicuriamo una clientela fedele e soddisfatta. Che cosa fare allora quando la CPU è il collo di bottiglia di una particolare funzione?

Invece di ridurre la base dei potenziali clienti, negando l'accesso all'applicazione in base ai requisiti della CPU, possiamo abilitare l'applicazione in modo che si adatti alle risorse disponibili della CPU offrendo un insieme di funzioni limitato. Occorre limitare o escludere la funzione in questione senza influire sull'usabilità complessiva dell'applicazione.

Un primo esempio di questa tecnica potrebbe essere quello di un'applicazione che consente all'utente di scegliere la frequenza con cui eseguire una funzione. Per le CPU Intel® Atom™ di velocità inferiore si potrebbero invece limitare le impostazioni disponibili e offrire un insieme di opzioni più realistiche.

Cicli di offload alla GPU

Non dobbiamo dimenticare che la CPU Intel® Atom™, sebbene efficiente e potente, è pur sempre una risorsa limitata. Anche se la maggior parte delle piattaforme mobili si limita all'esecuzione di un solo processo e/o applicazione alla volta, il netbook si comporta come qualsiasi altro laptop in cui le risorse sono sempre condivise.

Sono stati scritti molti libri su come creare del codice ottimizzato con cui concordo completamente quando si tratta della soddisfazione dei clienti. Nel considerare l'applicazione mentre è in esecuzione sulla piattaforma netbook, ricordarsi di scaricare più lavoro possibile dalla CPU alla GPU. L'ideale è far eseguire alla GPU le operazioni che supporta e così liberare preziosa potenza di elaborazione della CPU. Scaricando lavoro sulla GPU si otterrà un'esperienza utente più fluida e l'applicazione non sarà considerata una "monopolizzatrice di risorse".

Risorsa GPU: http://appdeveloper.intel.com/it-it/blog/2010/01/20/optimize-your-game-intel-integrated-graphics-adapters

Nota: spesso tendiamo a usare nelle nostre applicazioni il modello di eventi con moduli standard (MouseDown, LostFocus e così via) per le funzionalità di animazione e di trascinamento della selezione. Fare attenzione quando, ai fini della programmazione, si spostano i controlli nel modulo, perché troppe chiamate a this.Invalidate() causano problemi di prestazioni della CPU. È possibile eseguire la migrazione se si dispone delle risorse di sviluppo che permettono di utilizzare DirectX*, OpenGL* o anche WPF* e la sua compilazione in funzioni di animazione.


Viewing all articles
Browse latest Browse all 33

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>