Un test ALU per la CPU!


Con questo articolo, un pò di tempo fa decisi di intraprendere lo sviluppo di un’ applicazione di test in C++ con l’aiuto della serie di Fibonacci. Naturalmente si tratta di una versione semplice del programma che potrete modificare in qualsiasi momento poichè, il codice è svincolato da qualsiasi forma di licenza proprietaria.


Il progetto: un benchmark per la CPU.

Il programma di test nasce con l’intenzione di misurare le prestazioni della CPU nel calcolo intero, sfruttando le unità ALU (Unità Aritmetico Logica) disponibili. L’obiettivo è lo sviluppo di un software di “benchmarking” della CPU valido per tutte le architetture, e facilmente “trasportabile” in qualsiasi piattaforma Windows, Linux e così via…

I risultati ottenuti con il test dipendono essenzialmente dalla capacità di calcolo delle unità ALU, e dal tempo impiegato per processare il valore N=42 immesso come valore di riferimento nel codice sorgente (naturalmente lo potrete modificare).

 

La serie di Fibonacci: sveliamo il mistero.

Dopo numerosi viaggi nel mondo Arabo, Leonardo Fibonacci detto Leonardo Pisano (Pisa 1175 -1240 ) pubblicò nel 1202 la sua opera più importante: il Liber abaci; Il libro diffuse il sistema decimale nel mondo occidentale, e portò in Europa una ventata di nuove conoscenze matematiche.

Con il Liber Abaci, Fibonacci introdusse la serie numerica omonima, che si può ritrovare in natura in numerosi esempi (tra i quali l’approssimazione del Rapporto Aureo, la struttura dei grappoli d’uva, e così via).

La serie di Fibonacci è una successione di interi che inizia dalla coppia di numeri (1,1) in cui l’elemento successivo è calcolato come somma degli ultimi due.

Facciamo un esempio:

Il primo numero è 1, e il secondo numero è 1.
Il terzo numero corrisponde a:
2= 1 + 1
Il numero 2 è dato dalla somma dei numeri 1 (primo numero) e 1 (secondo numero).
Per il quarto numero è dato dalla somma del secondo numero più il terzo numero e cioè:
3=2+1
Il quinto numero è dato dalla somma del quarto numero più il terzo numero (in sintesi, dalla somma degli ultimi due numeri), e quindi:
5=3+2
e gli altri di seguito:
8=5+3
13=8+5
21=13+8

Quindi il primo elemento della serie è Fib(0) = 1, mentre il secondo elemento è Fib(1) = 1.
Il terzo elemento sarà dato dalla seguente:
Fib(2) = Fib(0) + Fib (1) che in questo caso risulta così:
Fib(2) = 1+1 = 2
Quindi in generale possiamo dire che:

Fib (n) = Fib(n-1) + Fib (n-2) con n>1

Il valore della funzione Fib è definito in termini della funzione stessa, e per tale motivo la funzione è detta ricorsiva.

 

Fibonacci e il test ALU C++

Per chiarire ulteriormente il codice del programma descritto in questo articolo cerchiamo di capire cosa succede se inseriamo un valore di N uguale a 3 (di default il valore di N è uguale a 42).

Dalla figura successiva appare evidente che la funzione fib(N) termina quando incontra i casi base zero, e uno. Nel caso fib(3), il nostro programma C++ restituisce il valore 1 in caso di fib(1), e il valore 0 in caso di fib(0), e quindi fib(3) è uguale a 2.

Un benchmark per la CPU

Figura 1
(Esempi di calcolo N=3 con Fibonacci)


Per N uguale a 5, fib(5) è uguale a 5 (provate a verificare tale valore), sapendo che fib(5) = fib(4)+fib(3), e a sua volta fib(4) è uguale a fib(3)+fib(2), mentre fib(3) = fib(2)+fib(1) e via dicendo.

Rating: 3.0. From 1 vote.
Please wait...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

3 × 1 =