Accélération (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Speedup (homonymie).

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[modifier | modifier le code]

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

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},

  • 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},

  • ρ 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[modifier | modifier le code]

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

S_\text{latence} = \frac{L_1}{L_2} = \frac{T_1C_2}{T_2C_1},

  • Slatence est l'accélération en latence de l'architecture 2 par rapport à l'architecture 1 ;
  • L1 est la latence de l'architecture 1 ;
  • L2 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[modifier | modifier le code]

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

S_\text{débit} = \frac{D_2}{D_1} = \frac{\rho_2A_2T_1C_2}{\rho_1A_1T_2C_1} = \frac{\rho_2A_2}{\rho_1A_1}S_\text{latence},

  • Sdébit est l'accélération en débit de l'architecture 2 par rapport à l'architecture 1 ;
  • D1 est le débit de l'architecture 1 ;
  • D2 est le débit de l'architecture 2.

Efficacité[modifier | modifier le code]

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 programme 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 un efficacité de 1/ln(s) qui temps 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.

Notes et références[modifier | modifier le code]

Références[modifier | modifier le code]

  1. Milo Martin, « Performance and Benchmarking » (consulté le 5 juin 2014)
  2. John L. Hennessy et Patterson David A., Computer Architecture: A Quantitive Approach, Waltham, MA, Morgan Kaufmann,‎ 2012, 46–47 p. (ISBN 978-0-12-383872-8)
  3. Jean-Loup Baer, Microprocessor Architecture: From Simple Pipelines to Chip Multiprocessors, New York, Cambridge University Press,‎ 2010, 10 p. (ISBN 978-0-521-76992-1)

Annexes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]