Accélération (informatique)
# Accélération (informatique)

En architecture informatique, l'accélération (speedup en anglais) est une mesure du gain de performance entre deux systèmes traitant le même problème. Plus techniquement, c'est le gain de vitesse d'exécution d'une tâche exécutée par deux architectures similaires disposant de ressources différentes. La notion d'accélération a été établie par la loi d'Amdahl, qui se penchait principalement sur le calcul parallèle. Cependant, l'accélération peut être utilisée plus généralement pour montrer l'effet sur les performances lors de n'importe quelle amélioration des ressources.

## Définitions

L'accélération peut être définie pour deux grandeurs différentes : la latence et le débit.

La latence d'une architecture est l'inverse de la vitesse d'exécution d'une tâche :

    $L={\frac {1}{v}}={\frac {T}{C}},$

où

* v la vitesse d'exécution de la tâche ;
* T le temps d'exécution de la tâche ;
* C la charge d'exécution de la tâche.

Le débit d'une architecture est le taux d'exécution d'une tâche :

    $D=\rho vA={\frac {\rho AC}{T}}={\frac {\rho A}{L}},$

où

* ρ est la densité d'exécution (p. ex. : le nombre d'étages d'un pipeline d'instruction pour une architecture à pipeline) ;
* A est la capacité d'exécution (p. ex. : le nombre de processeurs pour une architecture parallèle).

La latence se mesure généralement en secondes par unité de charge d'exécution. Le débit se mesure généralement en unités de charge d'exécution par seconde. Une autre unité courante de débit est l'instruction par cycle (IPC). Son inverse, le cycle par instruction (CPI), est une autre unité courante de latence.

L'accélération est sans dimension et définie différemment pour les deux types de grandeurs de manière à être une mesure cohérente.

### Accélération en latence

L'accélération en latence est définie par la formule suivante :

    $S_{\text{latence}}={\frac {L_{1}}{L_{2}}}={\frac {T_{1}C_{2}}{T_{2}C_{1}}},$

où

* $S_{latence}$ est l'accélération en latence de l'architecture 2 par rapport à l'architecture 1 ;
* $L_1$ est la latence de l'architecture 1 ;
* $L_2$ est la latence de l'architecture 2.

L'accélération en latence peut être prédite par la loi d'Amdahl ou la loi de Gustafson.

### Accélération en débit

L'accélération en débit est définie par la formule suivante :

    $S_{\text{débit}}={\frac {D_{2}}{D_{1}}}={\frac {\rho _{2}A_{2}T_{1}C_{2}}{\rho _{1}A_{1}T_{2}C_{1}}}={\frac {\rho _{2}A_{2}}{\rho _{1}A_{1}}}S_{\text{latence}},$

où

* $S_{débit}$ est l'accélération en débit de l'architecture 2 par rapport à l'architecture 1 ;
* $D_1$ est le débit de l'architecture 1 ;
* $D_2$ est le débit de l'architecture 2.

## Efficacité

Soit S l'accélération de l'exécution d'une tâche et s l'accélération de l'exécution de la partie de la tâche bénéficiant de l'amélioration des ressources d'une architecture. Une accélération linéaire ou accélération idéale est obtenue lorsque S = s.

L'efficacité est une mesure de l'utilisation des ressources du système amélioré définie par

    $\eta ={\frac {S}{s}}.$

Sa valeur est typiquement comprise entre 0 et 1. Les programmes avec une accélération linéaire et ceux exécutés sur un seul processeur ont une efficacité de 1, tandis que beaucoup de programmes difficilement parallélisable ont une efficacité de 1/ln(s) qui tend vers 0 lorsque le nombre de processeurs A = s augmente.

En ingénierie, les courbes d'efficacité sont plus souvent utilisées dans les graphiques que les courbes d'accélération, car

* toutes les zones dans le graphique sont utilisées (alors qu'avec les courbes d'accélération la moitié du graphique est perdue) ;
* il est plus facile de constater la pertinence de l'amélioration du système ;
* il n'est pas nécessaire de tracer une courbe d'accélération idéale.

En marketing, les courbes d'accélérations sont davantage utilisées, principalement parce qu'elle monte vers la droite et donc apparaissent meilleures pour un public moins averti.

