H-2
authorPaul Kocialkowski <contact@paulk.fr>
Mon, 4 May 2015 20:01:26 +0000 (22:01 +0200)
committerPaul Kocialkowski <contact@paulk.fr>
Mon, 4 May 2015 20:01:26 +0000 (22:01 +0200)
aspects-informatique.tex
biblio.bib
main.tex

index dc9e67a..c4a0f88 100644 (file)
@@ -189,7 +189,7 @@ Cette grandeur est donc une grandeur à considérer pour l'optimisation du temps
 
 Cependant, bien qu'un algorithme puisse être perfectible, sa vitesse d’exécution sera toujours limitée par les capacités matérielles de la machine sur laquelle on le lance. En effet, le processeur d'un ordinateur traite un certain nombre d'opérations (ou instructions) les unes à la suite des autres, cadencé par une horloge. Certains processeurs disposent d'instructions particulières, qui combinent parfois plusieurs opérations élémentaires en une(c'est par exemple le cas des extensions \bsc{NEON} dans les processeurs \bsc{ARM} tels que celui de la Cubieboard2.\\
 
- Le temps d’exécution d'un programme peut donc dépendre des paramètres suivants :
+ Le temps d’exécution par le processeur d'un programme peut donc dépendre des paramètres suivants :
 \begin{itemize}
        \item[--] les extensions utilisées pour les instructions
        \item[--] les optimisations effectuées par le compilateur (par exemple, certaines opérations sont redondantes et peuvent-être éliminées durant la phase d'optimisation), afin de réduire le nombre d'instructions
@@ -209,33 +209,23 @@ L'amélioration des performances passe donc nécessairement par un travail sur c
 
 \subsection{Limites à la montée en fréquence et parallélisme}
 
-La méthode d'augmentation des fréquence a pu porter ses fruits pendant quelques années, et permet effectivement d'améliorer les performances des processeurs. En revanche, il devient de plus en plus difficile d'améliorer les fréquences, et à partir des années 2000 il a fallu commencer à s'orienter vers d'autres moyens pour rendre les processeurs plus performants. Les causes de ces limitations à la montée en fréquence sont multiples, et la majorité sont liés à des phénomènes physiques problématiques.
+Si l'augmentation des fréquence en vue d'augmenter les performances d'exécution des programmes a pu porter ses fruits pendant plusieurs années, il devient de plus en plus difficile d'augmenter ces fréquences. Ainsi, à partir des années 2000, il a été nécessaire de s'orienter vers d'autres moyens pour rendre les processeurs plus performants. Les causes de ces limitations à la montée en fréquence sont multiples, et la majorité sont liés à des phénomènes physiques, qui posent un certain nombre de problèmes :\\
 
-Premièrement, la miniaturisation des transistors à amener à la diminution des dimensions des fils d'interconnexion. Or le \emph{temps d'interconnexion}, c'est-à-dire le temps nécessaire pour le l'information transite d'un transistor à un autre, reste globalement constant. La finesse atteinte dans la gravure des processeurs ne permet donc plus à l'information de se propager, en effet distance et temps sont liés par la vitesse de propagation du signal électrique.
-% chiffres pour illustrer ?
+Premièrement, la miniaturisation des transistors amène à la diminution des dimensions des fils d'interconnexion. Or le \emph{temps d'interconnexion}, c'est-à-dire le temps nécessaire pour que l'information transite d'un transistor à un autre, reste globalement constant. Malgré la finesse atteinte dans la gravure des processeurs, il n'est plus possible que l'information se propage dans les circuits en un temps imposées par de très hautes fréquences, puisque ce temps est directement fonction de la vitesse physique de propagation du signal électrique et la distance à parcourir ($v = \frac{d}{t}$), l'une étant constante et l'autre ayant atteint ses limites.\\
 
-Ensuite, le second problème est d'ordre énergétique, en effet un transistor consomme de l'énergie (et en dissipe) à chaque commutation, ainsi on peut facilement voir que la consommation électrique et la dissipation d'énergie sont proportionnelles aux produit du nombre de transistor dans le circuit par la fréquence de l'horloge. Avec des grandes fréquences, les processeurs sont gourmands en énergie et en dissipent beaucoup sous forme de chaleur : ils s'échauffent et sont de plus en plus compliqué à refroidir. Les systèmes de refroidissement à air utilisés dans les ordinateurs personnels ne suffisent plus.
+Le second problème est d'ordre énergétique, en effet un transistor consomme de l'énergie (et en dissipe) à chaque commutation, ainsi on peut facilement voir que la consommation électrique et la dissipation d'énergie sont proportionnelles aux produit du nombre de transistor dans le circuit par la fréquence de l'horloge. Avec de très hautes fréquences, les processeurs sont gourmands en énergie et en dissipent beaucoup sous forme de chaleur : ils s'échauffent et sont de plus en plus compliqué à refroidir (nécessaire pour éviter la fusion des matériaux). Les systèmes de refroidissement à air utilisés dans les ordinateurs personnels ne suffisent plus.\\
 
-Dernièrement, on a vu que la fréquence a rapidement augmenté, en revanche la fréquence de la mémoire n'a pas suivi la même évolution. La différence entre ces deux quantités devient tellement importante que la fréquence du processeur ne peut être exploitée par la mémoire : en phase de lecture ou d'écriture de la mémoire, beaucoup de cycles d'horloges sont gâchés car il ne se passe rien.
+Il n'est donc plus possible d'augmenter les fréquences et donc de diminuer le facteur $\tau$ dans l'équation \eqref{eq:tempsexec}. On tentera alors de réduire le nombre $c$ de cycles par instruction. Pour cela, une solution consistera à augmenter le nombre d'instructions qui s'exécutent simultanément : on parle alors de parallélisme. Cette solution n'est effectivement applicable qu'à condition que le processeur soit capable de gérer plusieurs instructions simultanément. Cela implique alors une certaine conception du processeur, avec une duplication des circuits logiques effectuant le traitement de ces instructions : on parle de cœur du processeur. Ainsi, un processeur capable de parallélisme est qualifié de multi-cœur.\\
 
-Comme le facteur $\tau$ ne peut plus être beaucoup diminué, dans l'équation \eqref{eq:tempsexec} l'idée est de tenter de réduire le nombre $c$ de cycles par instruction. Pour cela on peut choisir d'augmenter le nombre d'instruction qui s'exécutent simultanément. La solution qui a été adoptée est le concept de \emph{parallélisme}, dont l'idée principale est d'exécuter différentes séquence d'instructions en même temps. Un processeur qui est capable de gérer des instructions simultanées est dit \emph{multithread}. On peut intégrer cette méthode de façon logicielle ou bien matérielle. 
-
-Le principe est de pouvoir gérer différents fils d'exécution (ou \emph{thread} en anglais) en même temps, 
-
-%pdf mec LABRI (sur portable)
-* Au bout d'un moment, ça pose problème
-* augmenter le CPI
-* Du coup on a plusieurs coeurs en même temps => parallelisme
-+ def multi-threading avec rapport au multi-processus
-* diminue énergie dissipée par effet Joule
+Le système d'exploitation s'exécutant sur le processeur sera en charge de distribuer les processus en cours d'exécution sur les différents cœurs du processeur, permettant ainsi un gain en efficacité globale du système. Au sein d'un programme, il est également possible d'exécuter plusieurs fonctions en parallèle au sein de fils d'exécution séparés (ou \textit{threads} en Anglais), qui pourront être exécutés sur des cœurs séparés. Cette technique de programmation fonctionne d'ailleurs avec un seul cœur, de la même manière que différents processus sont exécutés avec une impression de simultanéité avec un seul cœur (un seul processus n'est véritablement exécuté à la fois, mais le système d'exploitation alterne rapidement les processus).\\
 
+Les ordinateurs utilisant des processeurs multi-cœurs sont désormais très courants sur le marché et de nos jours, il s'agit même de la norme. Ce n'est pas seulement le cas sur les ordinateurs traditionnels, puisque les appareils mobiles tels que les smartphones ou les tablettes sont également dotés de processeurs multi-cœurs. C'est de même le cas pour différents autres formats d'ordinateurs, y compris les ordinateurs à carte unique tels que la Cubieboard2. La Cubieboard2 est d'ailleurs la seconde itération de la série Cubieboard, utilisant un SoC \bsc{A20} à deux cœurs alors que la première itération utilise un SoC \bsc{A10} monocœur. La Cubieboard2 est donc également intéressante du point de vue du parallélisme.\\
 
+Il existe cependant d'autres limites à l'augmentation des performances des ordinateurs,\\indépendamment des considérations relatives aux processeurs : c'est particulièrement le cas des accès en mémoire, qui peuvent prendre un temps très grand devant le traitement des opérations. C'est une des raisons qui conduit à introduire plusieurs types de mémoires au sein d'un ordinateur. On trouve alors une mémoire de stockage des données, dite mémoire morte, lente d'accès (en particulier pour l'écriture) mais disponible en grandes quantités et une mémoire dédiée à l'exécution des programmes, dite mémoire vive, considérablement plus réactive mais coûteuse à produire et donc disponible en faibles quantités. Un grand nombre d'accès à la mémoire morte pourra donc avoir l'effet de « goulot d'étranglement » et considérablement réduire les performances d'exécution du programme.
 
 \subsection{Explicitation du gain en efficacité et contraintes}
 
-Les ordinateurs utilisant des processeurs multi-cœurs sont désormais très courants sur le marché et de nos jours, il s'agit même de la norme. Ce n'est pas seulement le cas sur les ordinateurs traditionnels, puisque les appareils mobiles tels que les smartphones ou les tablettes sont également dotés de processeurs multi-cœurs. C'est de même le cas pour différents autres formats d'ordinateurs, y compris les ordinateurs à carte unique tels que la Cubieboard2. La Cubieboard2 est d'ailleurs la seconde itération de la série Cubieboard, utilisant un SoC \bsc{A20} à deux cœurs alors que la première itération utilise un SoC \bsc{A10} monocœur. La Cubieboard2 est donc également intéressante du point de vue du parallélisme.\\
-
-Cependant, si la multiplicité des cœurs permet d'exécuter plusieurs programmes réellement en simultané, il est courant qu'un seul programme requiert toutes les capacités de la machine tant la tâche qu'il accomplie complexe. Si ce programme n'est pas prévu pour fonctionner sur plusieurs fils distincts, le calcul ne sera effectué que sur un seul cœur et l'avantage du multi-cœur sera en grande partie perdu, si ce n'est que le autres cœurs permettront de garantir une utilisation fluide du système pendant ce calcul lourd. Il est cependant bien souvent souhaitable de réduire la durée du calcul au détriment de l'utilisabilité immédiate de l'ordinateur.\\
+Si la multiplicité des cœurs permet d'exécuter plusieurs programmes réellement en simultané, il est courant qu'un seul programme requiert toutes les capacités de la machine tant la tâche qu'il accomplie complexe. Si ce programme n'est pas prévu pour fonctionner sur plusieurs fils distincts, le calcul ne sera effectué que sur un seul cœur et l'avantage du multi-cœur sera en grande partie perdu, si ce n'est que le autres cœurs permettront de garantir une utilisation fluide du système pendant ce calcul lourd. Il est cependant bien souvent souhaitable de réduire la durée du calcul au détriment de l'utilisabilité immédiate de l'ordinateur.\\
 
 On va donc chercher à écrire et utiliser des programmes utilisant le nombre maximal de cœurs disponibles, ou pour le moins qui offrent à l'utilisateur cette possibilité, bien souvent en lui permettant de choisir le nombre de fils d'exécution (qui seront répartis sur les différents cœurs) à utiliser. Néanmoins, tous les algorithmes de ne prêtent pas forcément bien à un découpage en plusieurs fils s'exécutant sur plusieurs cœurs simultanément. En effet, exécuter plusieurs calculs en parallèle suppose que ces calculs sont indépendants entre eux. Hors, le cas général est plutôt le traitement d'un problème avec des étapes logiques qui dépendent respectivement des étapes précédentes. Il n'est donc pas toujours possible de paralléliser les calculs. Certaines grandes familles d'algorithmes pourront au contraire bien s'y prêter, comme c'est le cas des algorithmes de type « diviser pour régner » qui découpent les problèmes en sous-problèmes indépendants plus petits. On pourra alors traiter chaque sous problème sur un cœur séparé. Il est cependant inévitable de rassembler les calculs effectués en parallèle afin d'obtenir un résultat cohérent. Selon les problèmes, cette étape peut être triviale ou au contraire prendre un temps signification, qui ne pourra être effectué que sur un cœur.\\
 
index 35318fd..5d86014 100644 (file)
@@ -49,7 +49,7 @@ note={https://fr.wikipedia.org/wiki/I2C}
 @misc{CubieboardDiagram,\r
 author={Cubietech},\r
 title={Cubieboard Block Diagram},\r
-note={http://dl.cubieboard.org/hardware/cubieboard_block_diagram.pdf}\r
+note={http://dl.cubieboard.org/hardware/cubieboard\_block\_diagram.pdf}\r
 }\r
 \r
 @misc{A20UserManual,\r
index c4df8a0..1faacdc 100644 (file)
--- a/main.tex
+++ b/main.tex
@@ -28,7 +28,7 @@
 \newcommand{\citenotepage}[2]{\footnote{\label{#1-#2-\thepage}Référence bibliographique \cite{#1} page #2}}
 \newcommand{\citenotepageagain}[2]{\footnotemark[\getrefnumber{#1-#2-\thepage}]}
 \newcommand{\toldat}[1]{\footnote{\label{#1-\thepage}Cette notion sera détaillée dans la partie \ref{#1} en page \pageref{#1}.}}
-\newcommand{\acrotrad}[2]{\footnote{#1 en Anglais, soit #2 en Français.}}
+\newcommand{\acrotrad}[2]{\footnote{\textit{#1} en Anglais, soit #2 en Français.}}
 
 \captiondelim{~--~}
 \renewcommand{\figurename}{\textbf{Figure}}