Salve a tutti, ho bisogno di un aiuto.
Sapete mica dirmi quale relazione c'è tra velocità della CPU e velocità del clock in termini di esecuzione dell'istruzione macchina, in tutti gli esempi che ho trovato un giro si parla sempre di velocità di esecuzione dell'istruzione pari a FOSC/4(velocità di clock) non si fa mai riferimento alla velocità della CPU. Sapete spiegarmi il motivo? Supponendo di avere più o meno lo stesso codice ,e la stessa identica frequenza di clock , ma diverse velocità di CPU , l'istruzione verrebbe eseguita con velocità maggiore sulla macchina con velocità CPU maggiore?
Grazie
Relazione tra MIPS e clock
Moderatore:
Paolino
3 messaggi
• Pagina 1 di 1
0
voti
3
voti
Davide90 ha scritto:Sapete mica dirmi quale relazione c'è tra velocità della CPU e velocità del clock in termini di esecuzione dell'istruzione macchina
Non c'è nessuna relazione.
Il valore in MIPS indica quanti milioni di operazioni (di tipo integer) vengono eseguite dal processore in un secondo. Ovvero, per esempio, quante addizioni di due numeri da n bit possono essere realizzate.
A dipendenza dell'architettura del processore, l'ALU ci metterà piú o meno cicli di clock per eseguire ogni singola addizione.
Facciamo un esempio concreto: in un moderno Cortex-M3 è implementato l'instruction set Thumb-2, in cui la moltiplicazione di due interi da 32 bit avviene in un unico ciclo di clock. Se il microcontroller lavora a 16 MHz e noi eseguissimo solo moltiplicazioni, avremmo 16 MIPS.
Ora prendiamo uno storico Intel 8080. Qui non abbiamo nessun supporto per i numeri a 32 bit, quindi dobbiamo effettuare la moltiplicazione in un loop che su 8 bit prende circa 10000 (!) cicli. L'8080 lavorava a 2 MHz, ma immaginiamo di mettere la stessa architettura su un processo CMOS odierno in modo da portarlo anche lui a 16 MHz. In tal caso avremmo clock uguali, ma solo 0.0016 MIPS.
Come detto, questo esempio numerico si basa sull'assunzione (idiota) che noi si facciano solo moltiplicazioni a 32 bit tutto il tempo. In realtà la cosa è ancora piú complicata perché un programma viene tradotto dal compiler in una serie di istruzioni. A dipendenza del compiler, questo avviene in maniera piú o meno efficiente. Nel mondo reale, ci sono principalmente tre "programmi" usati per determinare la performance di un processore: Whetstone (per applicazioni generiche, operazioni miste), Dhrystone (come Whetstone, ma senza operazioni floating point) e Linpack (solo floating point, roba per clusters e numerica).
Ci sono poi operazioni (come la divisione) che non durano sempre lo stesso numero di cicli, dipende dagli operandi.
Come vedi è un bel pasticcio.
Boiler
3 messaggi
• Pagina 1 di 1
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


