Domanda

Ho una domanda (come me) ...

ma ... se ho un algoritmo scelto scritto in C o C ++ o qualsiasi codice che si desidera ... fissa un compilatore è possibile determinare il numero di istruzioni, ma questi intructions sono diversi tra loro: x ADD, y MUL , z MOV, f FADD, t FMUL (F sta per mobile) ... c'è una metodologia o un'equazione o qualcos'altro che permette di scrivere il numero di istruzioni in numero di "istruzione equivalente" per confrontare algoritmo diverso? C'è qualcuno di voi che l'uso di questo tipo di metrica? si tratta di una spazzatura?

Grazie

Marco

Parte 2: So che dipends su un massimo e l'architettura in generale. Il mio problema è quello di determinare un tempo di esecuzione di diversi algoritmi implementati su differenti architetture di nucleo morbido. Sull'asse y devo scrivere volta, sull'asse x il numero di istruzione e il punto del grafico sono parametrizzata dal tipo di architettura (scusate per il mio inglese). Ma su x-axix Penso che sia meglio usare qualcosa come numero di "istruzione equivalente" ...

E 'un'idea spazzatura?

È stato utile?

Soluzione

Non riesco a capire il problema. La velocità di esecuzione dipende non solo le istruzioni, ma sulle dipendenze tra istruzione anche. I microprocessori possono eseguire diverse istruzioni allo stesso tempo dato questa istruzioni non dipendono l'uno dall'altro. La possibilità di eseguire più istruzioni in un momento diverso da un processore all'altro. Ecco perché questo compito è davvero specifica per l'hardware, non può essere risolto una volta per tutte.

Tutto quello che puoi fare è grafico una linea temporale di esecuzione delle istruzioni e cicli del processore. cicli del processore possono essere asse y, le istruzioni possono essere asse x. Avrai problemi che predicono riscontri nella cache e manca e il tempo di esecuzione di molte istruzioni variano notevolmente a seconda della cache colpi / miss. Siate pronti a spendere un sacco di tempo con i manuali di processori.

Altri suggerimenti

Si dovrebbe tener conto di pipelining e tutti i tipi di altre complessità, molti dei quali varia in base processore. In altre parole, non posso vedere che sia particolarmente utile anche se è fattibile.

Ci sono anche cose che l'algoritmo non sarebbe in grado di dirvi, come il numero di Cache Misses ci sarà, ecc - questi potrebbero essere molto più importante del numero di istruzioni grezzo <. / p>

Non è spazzatura, è solo vaga. Per andare da Algoritmo per il codice sorgente in codice oggetto al core ... così tanti dettagli inchiodare, ognuno dei quali può avere importanti implicazioni sulle prestazioni.

Date un'occhiata a Hennessey & Patterson di "Architettura Computer, un approccio quantitativo"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top