|

|
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).
TELECHARGER TEST_SPP (83Ko 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.
|
|
|