Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - MIPS
Forum - C/C++ - MIPS

Avatar
marco250483 (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/01/2009

Segnala al moderatore
Postato alle 17:50
Martedì, 27/01/2009
Ciao a tutti,

volevo farvi una domanda.

E' possibile, una volta scritto un codice C avere un'idea di quale sia il processore migliore sul quale farlo girare? Nel senso, ho un codice C, devo decidere che processore usare; esiste un fattore di merito (che si basi sul codice già prodotto) che mi fa discernere un processore piuttosto che un altro?.

In partenza credevo di ricavermi i MIPS e cercare un processore che garantisse il valore desiderato ma credo che questa "pensata" abbia un problema di fondo...non posso calcorare i MIPS senza aver deciso quale processore (e quindi quale compilatore) utilizzare...giusto no? in caso contrario potreste darmi qualche spiegazione?

Grazie

Marco


PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 18:49
Martedì, 27/01/2009
secondo me la cosa più semplice è compilare il codice per diverse architetture, dopodichè provarlo cronometrandolo e quindi stabilire una graduatoria... direi che quello che chiedi infatti si presta ad una valutazione sperimentale piuttosto che a un calcolo.. anche perchè ci sono molti fattori che entrano in gioco!

molti compilatori (per esempio il gcc) permettono di compilare utilizzando delle particolari ottimizzazioni o addirittura di fare del cross-compile, cioè produrre codice macchina specifico x una architettura diversa da quella in uso! compilando in questo modo otterrai eseguibili diversi e raccogliendo i dati dalle loro esecuzioni forse puoi ottenere delle informazioni interessanti per i tuoi scopi.

ps.
avolte si può scrivere codice "in funzione" di una specifica architettura su cui verrà eseguito.. se per esempio si sa a priori che il programma girerà su un sistema multiprocessore allora sarà una buona scelta quella di parallelizzare il più possibile il flusso di esecuzione del programma, in modo da sfruttare le caratteristiche di parallelismo che nn sarebero così marcate su un sistema monoprocessore.


La conoscenza non ha mai fatto del male a nessuno. Caso mai hanno fatto del male quelli che hanno impiegato MALE la loro conoscenza. La conoscenza deve essere libera e quando dico libera intendo "free as freedom" e non "free as a free beer".
PM Quote
Avatar
marco250483 (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/01/2009

Segnala al moderatore
Postato alle 14:36
Mercoledì, 28/01/2009
Grazie mille per la risposta,

però volevo chiederti se non esiste un qualche tool che mi possa fare una stima (certo a spanne) di quanto un mio programma ( o anche un certo algoritmo) possa richiedere in termini di MIPS o qualche altra unità di misura?

Il mio problema effettivo è avere una stima di quanto appunto un mio algoritmo o pezzo di codice richiede in termini di operazioni...

Grazie ancora per la disponibilità

Marco

PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 18:18
Mercoledì, 28/01/2009
di tool non ne conosco.. mi disp

cmq di solito si fa un'analisi asintotica del numero di operazioni... per esempio se è un algoritmo di ordinamento sappiamo che per ordinare n dati farà circa O(n log n) operazioni, no?

se vuoi informazioni più dettagliate sulla tua cpu ti conviene usare un programma di benchmark...


La conoscenza non ha mai fatto del male a nessuno. Caso mai hanno fatto del male quelli che hanno impiegato MALE la loro conoscenza. La conoscenza deve essere libera e quando dico libera intendo "free as freedom" e non "free as a free beer".
PM Quote
Avatar
marco250483 (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/01/2009

Segnala al moderatore
Postato alle 18:28
Mercoledì, 28/01/2009
Si, capisco l'esempio il problema è che non utiliizando un metodo del genere, nel momento in cui non ho solo ordinamenti, risulta moooolto lungo e complicato.
Il problema mio però non è a livello di CPU, non è a livello di hardware ma a livello di software. So che esistono dei tool che permettono di testare la funzionalità dell'hardware ma il mio problema è sul software; per quello cerco dei tool in grado di stimare i MIPS del software indipendentemente da che uP uso.

Grazie

Help!!!

Ciao

PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 19:18
Mercoledì, 28/01/2009
i mips = million instruction per second dipendono dall'hw!! il software (teoricamente) dovrebbe funzionare sia su 8080 che su un quadcore... dovrebbe cambiare solo il tempo di esecuzione!


La conoscenza non ha mai fatto del male a nessuno. Caso mai hanno fatto del male quelli che hanno impiegato MALE la loro conoscenza. La conoscenza deve essere libera e quando dico libera intendo "free as freedom" e non "free as a free beer".
PM Quote
Avatar
marco250483 (Normal User)
Newbie


Messaggi: 4
Iscritto: 27/01/2009

Segnala al moderatore
Postato alle 20:05
Mercoledì, 28/01/2009
Si si, lo so che dipende dall'hardware e dal compilatore ma a me interessa un tool che mi possa dire l'effort (a spanne si, ma un valore) legato al codice/algoritmo (uno dei due).Io parlavo di MIPS perchè molti processori sono caratterizzati dai MIPS (o di DMIPS)...se un tool riesce a tirarmi fuori una qualsiasi unità di misura che poi in qualche modo di riesce a confrontare con i MIPS o qualsiasi caratteristica del uP tanto meglio.

Ringrazio sempre per la disponibilità

Qualcuno ha informazioni in merito o può darmi una mano come già hanno fatto tutti quelli che mi hanno risposto?

Grazie

Marco

PM Quote