Test_SPP
Go To Previous Page Audio Mechanic and Sound Breeder
Language : English Language : French

This page will be translated in english very soon,
thanks for your understanding.

TEST_SPP screen shot
Test SPP

Test Signal Processing Power.

Ce petit logiciel gratuit permet d'évaluer la puissance de traitement de votre configuration dans le domaine de l'audionumérique temps-réel sur PC. Faites juste un clic sur le bouton TEST_SPP et attendez environ une minute, les mesures s'affichent.

- SPP-1 : la puissance de calcul en valeur entière de votre système (puissance du CPU).

- SPP-2 : la puissance de calcul en valeur à virgule flottante de votre système (puissance du FPU).

- SPP-M : la puissance de MIX de votre système (puissance de la RAM et du BUS qui fait transiter les données en corrélation avec un calcul simple qui s'apparente à un mixage de signaux).

DOWNLOAD TEST_SPP
(83Kb ZIP file 13-Mar-2001).

Le concept Test SPP


TEST_SPP est un test simple qui permet d'apprécier la puissance de traitement numérique de votre ordinateur en situation réelle. Ce test se place donc dans les conditions d'un flux de données et mesure simplement le nombre de calculs typiques (nombre de cycles SPP) effectué dans le laps de temps imparti.

3 unités de mesure ont été définies : les cycles SPP-1, SPP-2 et SPP-M. Ces unités permettent bien sûre de comparer la puissance de deux ordinateurs, mais elles permettent aussi de relier cette puissance à un algorithme de traitement numérique, et dans une moindre mesure de la comparer avec la puissance des DSP.
Algorithme principale


L'algorithme de TEST_SPP mesure le temps d'une boucle simple. Comme montré ci-dessous dans l'exemple de code, on appelle une fonction qui traite une suite de 512 données (ou échantillons) et on passe la main au système via la fonction Sleep(0) :

QueryPerformanceCounter((LARGE_INTEGER*)&mstime_1);
while(test_in == TRUE)
{
   __ProcessFrameSPP2(&fx_obj,512);
   cyclecount++;
   Sleep(0);
}
QueryPerformanceCounter((LARGE_INTEGER*)&mstime_2);
//and of course ---------
cyclecount=cyclecount*512;
Les unités de mesure SPP


Par définition, le cycle SPP correspond au traitement nécessaire d'une cellule I.I.R. d'ordre 1 pour un échantillon (à 44.1 Khz ou à 48 Khz). C'est à dire 2 MOV (2 mouvements mémoires) 2 MUL (2 multiplications - une pour le coefficient une pour le coefficient compensateur) 1 ADD (une addition). On notera qu'un filtre basé sur une cellule IIR d'ordre 2 nécessitera environ 2 cycles SPP.

La définition du cycle SPP correspond au cycle 'assembleur' de certains DSP. C'est ce qui permettra de faire un semblant de comparaison de puissance avec d'autres types de processeurs. Comparaison qu'il faudra faire avec discernement, TEST_SPP mesure la puissance MINIMUM d'un PC.

Si certains DSP affichent des performances telles que 1000 ou 2000 cycles SPP, cette puissance reste comparable avec celle d'un PC, uniquement en terme de calcul pur. Sur un algorithme complet, il faut considérer d'autres aspects comme la gestion des données et les mouvements mémoires. Un DSP, pendant un cycle SPP, peut faire 1 ou 2 MOV (mouvement mémoire), voire 5 sur les meilleurs DSP. A contrario, un PC, pendant un cycle SPP, a le temps de transférer plusieurs dizaines (voire plusieurs centaines) de données.

Comme le montre le code source x86/x87 ci-contre, un cycle SPP sur PC nécessite un grand nombre d'instructions et donc un grand nombre de cycles machine. Entre la ligne 31 et la ligne 50, on peut évaluer ce nombre de cycles à une centaine (par exemple, une instruction de multiplication peut nécessiter 10, 20 cycles, voire plus). Cependant, face au DSP, un PC a plusieurs atouts : il est cadencé beaucoup plus vite (actuellement - Année 2004 - plusieurs Ghz à comparer avec les 100, 200 Mhz des DSP) et ses instructions ne consomment pas toutes le même nombre de cycles machines. De plus il est doté d'un cache surdimensionné (plusieurs centaines de Kbyte à comparer avec les quelques Kbyte d'un DSP).

Ces avantages font que pour des traitements qui se complexifient, nécessitant beaucoup d'accès mémoire aléatoires (une FFT 64000 points par exemple) ou nécessitant un grand nombre de paramètres ou de variables temporaires (comme pour 400 cellules d'equalisations IIR d'ordre 2 par exemple), le PC reste serein quand le DSP montre ses limites. C'est pourquoi dans la comparaison de deux processeurs de type différent, il faudra rester strictement dans le cadre du calcul pur.

SPP-2 Source Code


Ci-dessous le code de la fonction de traitement SPP-2. Le cycle SPP-2 correspond à toute la partie de code entre les lignes 30 et 51 :
void __ProcessFrameSPP2(LPT_SPP2_CONTEXT lpfx , DWORD nbSample)
{
00      float * lp_Sin;
01      float * lp_Sout;
02      float local_coeff_1;
03      float local_coeff_2;
07      float local_yy_z1;
05      float * lp_in_start,* lp_in_end;
06      float * lp_out_start,* lp_out_end;
07      //Get param in local
08      local_coeff_1 =lpfx->coeff_1;
09      local_coeff_2 =lpfx->coeff_2;
10      local_yy_z1   =lpfx->yy_z1;
11      lp_in_end     =lpfx->lp_in_end;
12      lp_out_end    =lpfx->lp_out_end;
13      lp_in_start   =lpfx->lp_in_start;
14      lp_out_start  =lpfx->lp_out_start;
15      lp_Sin        =lpfx->lp_Sin;
16      lp_Sout       =lpfx->lp_Sout;
17      //----------------------------------
18      __asm
19      {
20         push esi
21         push edi
22         push ebx
23         mov esi,DWORD PTR lp_Sin
24         mov edi,DWORD PTR lp_Sout
25         mov ebx,DWORD PTR lp_in_end
26         mov edx,DWORD PTR lp_out_end
27         //----------------------------
28         mov ecx,nbSample

30   cycle_again:
31            fld DWORD PTR [esi]
32            fld DWORD PTR local_yy_z1
33         add esi,0x00000004
34            fmul DWORD PTR local_coeff_1
35         cmp esi,ebx
36         jne SHORT circular_1_continue
37         mov esi, DWORD PTR lp_in_start
38   circular_1_continue:
39            fadd
40         mov eax,edi
41            fst DWORD PTR local_yy_z1
42         add eax,0x00000004
43            fmul DWORD PTR local_coeff_2
44         cmp eax,edx
45         jne SHORT circular_2_continue
46         mov eax,DWORD PTR lp_out_start
47   circular_2_continue:
48            fstp DWORD PTR [edi]
49         mov edi,eax
50         dec ecx
51         jnz cycle_again

52         //----------------------------
53         mov DWORD PTR lp_Sin,esi
54         mov DWORD PTR lp_Sout,edi
55         pop ebx
56         pop edi
57         pop esi
58      }
59      //re-set param according to new locals
60      lpfx->yy_z1=local_yy_z1;
61      lpfx->lp_Sin=lp_Sin;
62      lpfx->lp_Sout=lp_Sout;
}

Le cycle SPP-2 est programmé classiquement en entrelaçant instruction FPU et CPU dans un soucis d'optimisation. L'entrée et la sortie sont géré ici comme deux buffers circulaires, cette fonction étant usuellement câblée dans les DSP.
Unité SPP-M


L'unité SPP-M (M = Mix) mesure indirectement une moitié de cycle SPP-2 (MOV + MUL +ADD), par un processus qui simule une table de mixage à 'n' pistes. Pour cette mesure une console de mixage virtuelle est créée, et toutes ses pistes, après avoir subies un gain, sont accumulées dans un BUS de sortie, le tout par paquets de 512 échantillons. Notons que pour cette mesure, 6.5 Mfloat (26 Mega-Octets) sont alloués pour désavantager le cache du processeur au maximum.

SPP-M donne donc un nombre de pistes, ou plus exactement le nombre de signaux pondérés que votre ordinateur peut accumuler sur un BUS. Notons que le mixage au sens "musique" du terme, est généralement plus complexe, et ne se résume pas à la définition de notre unité SPP-M. Disons que SPP-M constitue une valeur théorique que l'on pourra mettre en relation avec des algorithmes qui utilisent l'accumulation (synthèse additive, convolutions, etc...).

Transfer Rate


Toujours pour la mesure SPP-M, le taux de transfert (affiché en bas du tableau) donne la quantité de données (en float 32bits) bougées par seconde. Ce taux ne donne pas la vitesse de transfert du BUS ou de la RAM, il donne simplement le nombre de mouvements mémoires effectué par seconde lors de la mesure SPP-M. Il est donc proportionnel à la valeur SPP-M.

Retenons que SPP-M est à peu près l'équivalent d'un demi cycle SPP-2 et que la logique voudrait que pour un SPP-2 donnée, SPP-M affiche le double. Et nous le verrons plus bas, quand nous parlerons de l'interprétation des données, la mesure SPP-M permet de vérifier la cohérence de la machine.

Interprétation des mesures


Les résultats qui nous intéressent sont ceux donnés par SPP-2 et SPP-M. Ce sont ceux qui donnent le plus d'informations. La mesure SPP-1 reste utile pour éventuellement comparer la puissance de calcul en valeurs entières et la puissance de calcul en valeurs à virgule flottante. Cependant l'intérêt reste limité tant la plupart des calculs numériques se font aujourd'hui en virgule flottante.

SPP-2 donne donc la puissance de calcul de votre machine en nombre de cycles par échantillon pour un flux audionumérique à 44.1 Khz ou 48 Khz. (Dans la suite du texte nous ne considèrerons que les valeurs relatives au flux 44.1Khz). Cette mesure est fonction de tous les paramètres de votre machine. La fréquence et le type de votre processeur, la vitesse de la mémoire RAM, du BUS, la taille du cache, ainsi que certaines options hardware (carte vidéo sur carte mère) ou du système d'exploitation (nombre et type de périphérique, pertinence et qualité des drivers). L'intérêt de cette mesure étant, rappelons le, de donner une idée de la puissance disponible en situation réelle.

SPP-M est en réalité une moitié de cycle SPP-2. L'intérêt de la grandeur SPP-M est d'être comparée à SPP-2 et de permettre ainsi d'apprécier la cohérence de la machine. En effet, si la mémoire n'est pas rapide, elle peut ralentir le processeur et SPP-M restera inférieur à 2x SPP-2. C'est ce qu'on voit ci-contre, sur les PIII 450 et PIII 900 dont la puissance mesurée est similaire car limité par la vitesse de la RAM (100 Mhz). Dans le cas du PIII 900 SPP-M devrait donner une valeur supérieure à 1200. A contrario, les mesure du P4 3Ghz donne des résultats cohérents, avec un SPP-M largement supérieure à deux fois SPP-2. On peut aussi remarquer que SPP-M est supérieure à deux fois SPP-1, donc ne limite pas non plus la puissance de calcul du CPU. Il faut dire que la RAM du P4 est à 400Mhz sur carte mère FSB 800 Mhz.

Exemples de mesures


Intel P4 3Ghz (WIN XP)
SPP-1 mono 44100Hz 3023 SPP/smp
SPP-2 mono 44100Hz 1748 SPP/smp
SPP-M mono 44100Hz 7093 tracks
Transfer rate 594 Mf

Intel PIII 900 (WIN 2000)
SPP-1 mono 44100Hz 485 SPP/smp
SPP-2 mono 44100Hz 600 SPP/smp
SPP-M mono 44100Hz 954 tracks
Transfer rate 80 Mf

Intel PIII 450 (WIN98)
SPP-1 mono 44100Hz 447 SPP/smp
SPP-2 mono 44100Hz 552 SPP/smp
SPP-M mono 44100Hz 895 tracks
Transfer rate 75 Mf

Intel Pentium 200Mhz (WIN95)
SPP-1 mono 44100Hz 123 SPP/smp
SPP-2 mono 44100Hz 170 SPP/smp
SPP-M mono 44100Hz 254 tracks
Transfer rate 21 Mf

Intel Pentium 120 Win NT4
SPP-1 mono 44100Hz 85 SPP/smp
SPP-2 mono 44100Hz 122 SPP/smp
SPP-M mono 44100Hz 163 tracks
Transfer rate 13 Mf
Conclusion et Recommandations


TEST_SPP, dans le domaine du traitement audionumérique, est relativement pratique pour évaluer la puissance d'un PC dans son entier. Il permet en outre d'ajuster sa configuration pour obtenir le maximum de puissance. Par exemple, pour le cas des cartes vidéo sur carte mère (utilisant une partie de la RAM du PC), on peut constater des différence de 10 à 20% sur la mesure de SPP-2 entre une résolution 16bit couleurs et 24 ou 32bits.

Côté recommandations, on fera le test à un moment où l'ordinateur ne fait rien de spécial (pas de copie de fichiers, de traitement batch ou de services divers). L'erreur de mesure est évalué à 5% environ. On ne se formalisera donc pas sur une différence de résultats de cette ampleur.

TEST_SPP livre un résultat pessimiste de la puissance de votre machine. D'abord parce que ce test ne fait travailler qu'un seul THREAD (file d'exécution) sur un seul processeur. Ensuite parce que TEST_SPP n'utilise que des instructions CPU ou FPU et n'utilise pas les jeux d'instructions SIMD. Cependant TEST_SPP fournit un résultat cohérent qui suffit à donner une idée précise de ce que serait la puissance avec plusieurs processeur ou en utilisant le jeu d'instructions SSE.




Copyright V.Burel ©1998-2010. All rights reserved. All technical specifications and any informations specified on this web site may be subject to change without notice.