1. BENVENUTO SU CONSOLE TRIBE

    Benvenuto, stai navigando nella nostra community come ospite

    Avere un account su Console Tribe ti permetterà di creare e partecipare alle discussioni e al mercatino, organizzare tornei e partite online, iniziare conversazioni personali con gli altri giocatori del forum e di utilizzare tutte le funzioni di questo sito.

    Registra il tuo account in meno di 5 secondi, se vuoi puoi sfruttare i login social via Facebook, Google Plus o Twitter.

Cpuinfo da linux su PS3

Discussione in 'Ps3 Linux' iniziata da xmat, 12 Giugno 2007.

  1. javajix

    javajix Tribe Member

    Registrato:
    3 Luglio 2007
    Messaggi:
    793
    "Mi Piace" ricevuti:
    0
    Punteggio:
    16
    Località:
    Ancona
    Ciao a tutti,
    questo è il mio primo post :)

    IBM e SONY hanno creato un sistema di vritualizzazione del hardware per evitare che
    tramite linux si sblocchino meccanismi di protezione.

    Per questo motivo Linux non vede l'hardware effettivo della PS3 (ad eccezione delle porte USB) ma dell'hardware virtuale con delle caratteristiche predefinite.

    Il processore grafico GPU non fà parte della macchina virtuale di IBM e
    quindi non puo' essere usato da Linux.

    Per quando riguarda la CPU (Cell/BE) essa è composta da 1 PPE e 8 unità di calcolo, nella PS3 le unità di calcolo utiizzabili sono solo 7, la 8 viene disabilitata.

    La disattivazione del ottavo core è dovuta al fatto che IBM vende a Sony le CPU a prezzi molto bassi e tali CPU non hanno superato i test di qualità ed hanno un core non funzionante che quindi viene disattivato di default, chiaramente SONY ne è a conoscenza.

    IBM vende dei server con CPU Cell a costi di molto superiori a quelli della PS3, chiaramente le cpu hanno tutti gli 8 core funzionanti.

    Riepilogando da linux vediamo la PPE (la cpu general purpose) senza problemi, per poter utlizzare le 7 unità di calcolo bisogna sviluppare il software con le librerie di sviluppo fornite da IBM: http://www.ibm.com/developerworks/power/library/pa-linuxps3-1/

    Come vedete dal link sopra ci sono degli esempi di listati in C che utilizzano tali librerie:

    Codice:
    #include <stdio.h>
    #include <libspe.h>
    
    //This global is for the SPE program code itself.  It will be created by
    //the embedspu program.
    extern spe_program_handle_t calculate_distance_handle;
    
    //This struct is used for input/output with the SPE task
    typedef struct {
    	float speed;     //input parameter
    	float num_hours; //input parameter
    	float distance;  //output parameter
    	float padding;   //pad the struct a multiple of 16 bytes
    } program_data;
    
    int main() {
    	program_data pd __attribute__((aligned(16)));  //aligned for transfer
    
    	//GATHER DATA TO SEND TO SPE
    	printf("Enter the speed at which your car is travelling in miles/hr: ");
    	scanf("%f", &pd.speed);
    	printf("Enter the number of hours you have been driving at that speed: ");
    	scanf("%f", &pd.num_hours);
    
    	//USE THE SPE TO PROCESS THE DATA
    	//Create SPE Task
    	speid_t spe_id = spe_create_thread(0, &calculate_distance_handle, &pd, NULL,
    	 -1, 0);
    	//Check For Errors
    	if(spe_id == 0) {
    		fprintf(stderr, "Error creating SPE thread!\n");
    		return 1;
    	}
    	//Wait For Completion
    	spe_wait(spe_id, NULL, 0);
    
    	//FORMAT THE RESULTS FOR DISPLAY
    	printf("The distance travelled is %f miles.\n", pd.distance);
    	return 0;
    }
    Come vedete dal listato all' inizio viene inclusa la libreria libspe.h che serve appunto per utilizzare le unità di calcolo.

    Dubito quindi che i programmi attualmente presenti nelle varie distro linux usino le unità di calcolo ma solo la PPE.

    Attualmente solo il client per Folding@Home che gira sul Game-OS (la dashboard della sony) utilizza le unità di calcolo.

    Spero di aver fatto un po' di chiarezza.
  2. Razer(x)

    Razer(x) Tribe Member

    Registrato:
    14 Gennaio 2007
    Messaggi:
    5.255
    "Mi Piace" ricevuti:
    1
    Punteggio:
    36
    vorrai dire folding@home :D ;)
  3. javajix

    javajix Tribe Member

    Registrato:
    3 Luglio 2007
    Messaggi:
    793
    "Mi Piace" ricevuti:
    0
    Punteggio:
    16
    Località:
    Ancona
    Corretto, grazie ho scritto di fretta...... si capisce anche dalla sintassi :D
  4. Razer(x)

    Razer(x) Tribe Member

    Registrato:
    14 Gennaio 2007
    Messaggi:
    5.255
    "Mi Piace" ricevuti:
    1
    Punteggio:
    36
    Tranquillo

    Ps ti do il BENVENUTO da parte del forum :)
  5. nonnoSocrate

    nonnoSocrate Tribe Member

    Registrato:
    11 Aprile 2007
    Messaggi:
    191
    "Mi Piace" ricevuti:
    0
    Punteggio:
    16
    Finalmente, approfittando del we scorso, ho potuto dare uno sguardo al manuale "CBE programming handbook", ed ho scoperto innanzitutto che debbo scusarmi con gli utenti di questo forum per aver diffuso notizie inesatte, lette su internet e che avevo bevuto solo perchè credibili. Da adesso in poi quando scriverò qualcosa, per evitare questi dolorosi (per me) malintesi, cercherò di evidenziare ciò che sono mie illazioni, notizie documentate o voci di cui non si riesce a risalire alla fonte.
    Fatte le doverose scuse espongo quello che ho appreso dalla lettura del manuale.
    Innazitutto i 2 pinguini: il processore PPE è un processore quasi doppio (il software lo vede effettivamente doppio) nel senso che l'architettura del processore è effettivamente duplicata, ma molte parti sono in comune tra i 2 core, così il processore non è proprio un dual core ma lo sembra e Linux lo interpreta come tale.
    Gli SPE hanno una loro propria architettura che non è quella PPC, non si tratta di DSP (Digital Signal Processor) ma di veri e propri processori con architettura a 128 bits (ha 128 registri, ciascuno di 128 bit); essi interpretano le istruzioni ed usano i dati che sono contenuti nella loro LS (Local Store) di 256Kbyte; le istruzioni debbono considerare anche la gestione delle interruzioni e dei collegamenti tra la SPE e la PPE o tra le SPE, in pratica deve essere fornito alle SPE un mini sistema operativo oltre al programma da interpretare.
    Il CBE (Cell Broadband Engine) ha 3 livelli di gestione: il normale "problem state", l'usuale "supervisor state" ed uno stato detto "hypervisor state" che sovrintende alla gestione reale dell'HW. La procedura "power on reset" imposta il funzionamento della macchina in "hypervisor mode", così che se si vuole si può fornire al processore il sistema adatto sulla flash ed avere il controllo completo della macchina (mia illazione). Il software che la macchina interpreta all'accensione è l'ipervisore; questo può facilmente allocare le SPE, così come le risorse a vari sistemi operativi che vengono caricati: la gestione degli SPE si attua impostando adeguati bit in registri di controllo relativi all' MMIO (Memory Mapped Input-Output) ed attraverso i comandi MFC (Memory Flow Controller).
    Quindi può essere credibile, come ha scritto javajix, che la Sony disattivi di proposito una SPE (anche se in genere i difetti si manifestano a più elevati livelli di clock, per cui operando a 2,8 GHz invece che a 3,2 forse tutte le SPE potrebbero essere funzionanti).
    Altra cosa: la lettura del manuale mi ha confermato che la gestione della memoria virtuale è molto simile (e per quello che ricordo quasi uguale) alla gestione dei sistemi IBM dal 370 in poi; in base a questo ipotizzo che l'ipervisore che viene fornito sia un derivato (molto stretto) del sistema VM dei mainframes (che mi dato da mangiare e mi ha fatto divertire lavorando) e la cui conoscenza mi consente di poter fare molte illazioni. Per esempio la gestione dei dispositivi (sempre in base alla mia illazione) può essere fatta in 2 modi: il dispositivo è dedicato alla macchina virtuale (VM) e pertanto l'ipervisore si incarica soltanto di tradurre gli indirizzi dei dati e d i comandi dalla VM al dispositivo, oppure il dispositivo può essere virtualizzato, quindi in gestione a cui tutte le macchine virtuali partecipano, nel qual caso l'ipervisore in genere dà una visione limitata a ciascuna macchina virtuale, simulando per ciascuna di esse il dispositivo (per esempio un disco è simulato assegnando sezioni di disco a ciascuna VM e traducendo gli indirizzi dei settori aggiungendo quello fornito dalla VM a quello di inizio della parte dedicata alla VM). Nel caso di Linux su PS3 sembra che i dispositivi USB e di memoria esterna (SD etc...) siano dispositivi dedicati e quindi sotto il pieno controllo di Linux, mentre la scheda grafica sia soltanto "virtualizzata".