Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 2730

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>5.&nbsp;Processeurs auxiliaires des machines Linux</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.68.1" name="generator"><link rel="start" href="index.html" title="Le traitement en parall&egrave;le sous Linux"><link rel="up" href="index.html" title="Le traitement en parall&egrave;le sous Linux"><link rel="prev" href="ar01s04.html" title="4.&nbsp;SIMD Within A Register&nbsp;: SWAR (Ex&nbsp;: utilisation de MMX)"><link rel="next" href="ar01s06.html" title="6.&nbsp;D'int&eacute;r&ecirc;t g&eacute;n&eacute;ral"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">5.&nbsp;Processeurs auxiliaires des machines Linux</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s04.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ar01s06.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N1143E"></a>5.&nbsp;Processeurs auxiliaires des machines Linux</h2></div></div></div><p>
M&ecirc;me si cette approche n'est plus &agrave; la mode depuis quelques temps,
il reste virtuellement impossible aux autres m&eacute;thodes de maintenir &agrave;
la fois prix bas et performances &eacute;lev&eacute;es, chose habituellement rendue
possible par l'utilisation d'un syst&egrave;me Linux, lorsqu'il s'agit
d'h&eacute;berger dans la machine une unit&eacute; de calcul d&eacute;di&eacute;e. Le probl&egrave;me est
que la prise en charge logicielle de ces outils est tr&egrave;s limit&eacute;e.
Nous serons plus ou moins livr&eacute;s &agrave; nous m&ecirc;mes.
</p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N11443"></a>5.1.&nbsp;Un PC Linux est une bonne station d'accueil</h3></div></div></div><p>
En g&eacute;n&eacute;ral, les processeurs secondaires tendent &agrave; se sp&eacute;cialiser dans
l'ex&eacute;cution de fonctions bien sp&eacute;cifiques.
</p><p>
Avant de se sentir d&eacute;courag&eacute;s parce que livr&eacute;s &agrave; nous-m&ecirc;mes, il est
utile de comprendre que, bien qu'il puisse &ecirc;tre difficile de le pr&eacute;parer
&agrave; recevoir un syst&egrave;me particulier, un PC sous Linux reste l'une des rares
plate-formes qui se pr&ecirc;tent convenablement &agrave; cet usage.
</p><p>
Un PC forme un bon syst&egrave;me d'accueil pour deux raisons&nbsp;: La premi&egrave;re est sa capacit&eacute;
&agrave; &eacute;voluer ais&eacute;ment et de fa&ccedil;on peu on&eacute;reuse. Les ressources telles que
la m&eacute;moire, les disques, le r&eacute;seau et autres peuvent &ecirc;tre ajout&eacute;es
vraiment tr&egrave;s facilement &agrave; un PC. La seconde est sa facilit&eacute; d'interfa&ccedil;age.
Non seulement les prototypes de cartes ISA et PCI sont largement r&eacute;pandus
et disponibles, mais le port parall&egrave;le fournit &eacute;galement des performances
raisonnables dans une interface discr&egrave;te. L'adressage s&eacute;par&eacute; des entr&eacute;es&nbsp;/&nbsp;sorties
de l'architecture IA32 facilite &eacute;galement l'interfa&ccedil;age en offrant
une protection de ces adresses au niveau du port individuel.
</p><p>
Linux est &eacute;galement un bon syst&egrave;me d'exploitation pour l'h&eacute;bergement de
syst&egrave;mes d&eacute;di&eacute;s. La libre et compl&egrave;te disponibilit&eacute; du code source, et les
nombreux manuels de programmation avanc&eacute;e constituent &eacute;videment une aide
tr&egrave;s pr&eacute;cieuse. Mais Linux apporte &eacute;galement une gestion des t&acirc;ches pratiquement
temps-r&eacute;el. Il existe m&ecirc;me une version fonctionnant en vrai temps-r&eacute;el.
Mais une chose peut-&ecirc;tre plus importante encore est le fait que, m&ecirc;me
dans un environnement Unix complet, Linux sait prendre en charge des outils
de d&eacute;veloppement &eacute;crits pour fonctionner sous MS-DOS ou Windows. Les programmes
DOS peuvent &ecirc;tre ex&eacute;cut&eacute;s dans un processus Unix en utilisant
<code class="literal">dosemu</code>, qui dresse une machine virtuelle prot&eacute;g&eacute;e
qui peut litt&eacute;ralement ex&eacute;cuter du code MS-DOS. La prise en charge des programmes
Windows 3.xx sous Linux est encore plus directe&nbsp;: certains 
logiciels libres comme
<a href="http://www.winehq.org" target="_top"><code class="literal">wine</code></a>
simulent Windows 3.11<sup>[<a href="#ftn.N11458" name="N11458">26</a>]</sup>

suffisamment bien pour permettre &agrave; la plupart des programmes
Windows d'&ecirc;tre ex&eacute;cut&eacute;s correctement sur une machine Unix &eacute;quip&eacute;e de 
X-Window.

</p><p>
Les deux sections suivantes donnent des exemples de syst&egrave;mes parall&egrave;les
auxiliaires que j'aimerais voir &ecirc;tre exploit&eacute;s sous Linux&nbsp;:
</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1145E"></a>5.2.&nbsp;Avez-vous essay&eacute; le DSP&nbsp;?</h3></div></div></div><p>
Un march&eacute; prosp&egrave;re s'est d&eacute;velopp&eacute; autour des puces DSP (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Digital
Signal Processing</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">Traitement Num&eacute;rique du Signal</span>&nbsp;&raquo;) &agrave; hautes performances. Bien
qu'elles soient en g&eacute;n&eacute;ral con&ccedil;ues pour &ecirc;tre embarqu&eacute;es dans des syst&egrave;mes d&eacute;di&eacute;s &agrave;
des usages bien sp&eacute;cifiques, elles peuvent aussi &ecirc;tre utilis&eacute;es comme de tr&egrave;s bons
ordinateurs parall&egrave;les annexes. Voici pourquoi&nbsp;:
</p><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Plusieurs d'entre elles, comme le TMS320 de
<a href="http://www.ti.com" target="_top">Texas Instruments</a> et la famille
SHARC d'<a href="http://www.analog.com" target="_top">Analog Devices</a> sont
con&ccedil;ues pour permettre l'assemblage de machines parall&egrave;les
en n'utilisant que tr&egrave;s peu, voire aucun circuit logique interm&eacute;diaire.
</p></li><li><p>
Ces puces sont bon march&eacute;, sp&eacute;cialement au niveau du co&ucirc;t par MIP ou par
MFLOP. Prix des circuits de gestion logique de base compris, on peut trouver
un processeur DSP pour le dixi&egrave;me du prix du processeur d'un PC, &agrave; performances
comparables.

</p></li><li><p>
Elle ne n&eacute;cessitent que peu de puissance et ne dissipent pas beaucoup de
chaleur. Cela signifie qu'il est possible d'alimenter toute une poign&eacute;e de processeurs
de ce type avec une simple alimentation PC conventionnelle, et de les enfermer
dans le bo&icirc;tier d'un PC sans transformer celui-ci en haut-fourneau.

</p></li><li><p>
La plupart des jeux d'instructions des DSP contiennent des choses assez
exotiques et que les langages de haut niveau (c'est-&agrave;-dire&nbsp;: comme le
C) ne sont pas &agrave; m&ecirc;me d'utiliser correctement. Par exemple, l'&laquo;&nbsp;<span class="quote">adressage de
bit invers&eacute;</span>&nbsp;&raquo;. En utilisant des syst&egrave;mes parall&egrave;les inclus dans une machine,
il est possible de compiler et d'ex&eacute;cuter directement la plupart du code sur
cette machine, tout en confiant l'ex&eacute;cution des quelques algorithmes consommant
la plupart du temps syst&egrave;me aux DSP, par l'entremise d'un code particuli&egrave;rement soign&eacute;
et optimis&eacute; &agrave; la main.

</p></li><li><p>
Ces DSP ne sont pas vraiment con&ccedil;us pour faire fonctionner un syst&egrave;me d'exploitation
UNIX ou assimil&eacute;, et ne sont g&eacute;n&eacute;ralement pas non plus adapt&eacute;s &agrave; une utilisation
autonome comme processeur g&eacute;n&eacute;ral d'un ordinateur. Le syst&egrave;me de gestion de la m&eacute;moire,
par exemple, est insuffisant pour beaucoup d'entre eux. En d'autres mots, ils sont bien
plus efficaces lorsqu'ils sont int&eacute;gr&eacute;s au sein d'une machine h&ocirc;te plus polyvalente
&hellip; telle qu'un PC sous Linux.
</p></li></ul></div>

</p><p>
Bien que de nombreux modems et cartes son contiennent des processeurs DSP
accessibles par des pilotes Linux, les grands profits arrivent avec l'utilisation de
syst&egrave;mes parall&egrave;les int&eacute;gr&eacute;s comprenant au moins quatre processeurs DSP.
</p><p>
M&ecirc;me si la s&eacute;rie TMS320 de Texas Instruments, sur <a href="http://dspvillage.ti.com" target="_top">http://dspvillage.ti.com</a>, est populaire depuis un bon moment, les syst&egrave;mes de ce type &eacute;tant
disponibles sont encore peu nombreux. Il existe &agrave; la fois une version
uniquement enti&egrave;re et une version virgule flottante du TMS320. Les
anciens mod&egrave;les utilisaient un format de virgule flottante en simple pr&eacute;cision assez
inhabituel, mais les nouveaux g&egrave;rent &agrave; pr&eacute;sent les formats IEEE. Les anciens TMS320C4x
(ou simplement &laquo;&nbsp;<span class="quote">C4x</span>&nbsp;&raquo;), accomplissaient jusqu'&agrave; 80 MFLOP en utilisant le format de
nombre en virgule flottante simple pr&eacute;cision sp&eacute;cifique &agrave; TI. En comparaison, un seul
&laquo;&nbsp;<span class="quote">C67x</span>&nbsp;&raquo; apportera jusqu'&agrave; 1 GFLOP en simple pr&eacute;cision et 420 MFLOP en double pr&eacute;cision
au format IEEE, en utilisant une architecture &agrave; base de VLIW nomm&eacute;e VelociTI. Non seulement
il est ais&eacute; de configurer un groupe de circuits de ce type pour en faire un multiprocesseur,
mais un de ces circuits, le multiprocesseur &laquo;&nbsp;<span class="quote">'C8x</span>&nbsp;&raquo;, formera &agrave; lui seul un processeur
principal &agrave; technologie RISC accusant 100 MFLOP au format IEEE, et dot&eacute; soit de deux, soit
de quatre DSP esclaves int&eacute;gr&eacute;s.
</p><p>
L'autre famille de processeurs DSP qui ne soit pas simplement utilis&eacute;e
ces temps-ci par quelques rares syst&egrave;mes en parall&egrave;le est SHARC (ou
&laquo;&nbsp;<span class="quote">ADSP-2106x</span>&nbsp;&raquo;), d'<a href="http://www.analog.com/" target="_top">Analog Devices</a>.
Ces circuits peuvent &ecirc;tre configur&eacute;s en un multiprocesseur &agrave; m&eacute;moire partag&eacute;e
form&eacute; par 6 processeurs sans n&eacute;cessiter de logique externe pour les associer, et
peuvent aussi former de plus grands syst&egrave;mes gr&acirc;ce &agrave; des circuits de liaison de
4 bits. Les syst&egrave;mes au-del&agrave; de celui-ci sont essentiellement destin&eacute;s aux applications
militaires, et reviennent assez cher. Toutefois, 
<a href="http://www.iced.com/" target="_top">Integrated Computing Engines, Inc.</a> produit un petit jeu de deux cartes PCI assez int&eacute;ressant, nomm&eacute; GreenICE. Cette
unit&eacute; contient un r&eacute;seau de 16 processeurs SHARC, et affiche une vitesse de pointe
d'1.9 GFLOP au format IEEE simple pr&eacute;cision. GreenICE co&ucirc;te moins de 5000 dollars.
</p><p>
&Agrave; mon avis, les circuits DSP parall&egrave;les int&eacute;gr&eacute;s m&eacute;riteraient une plus grande attention
de la part du petit monde du calcul en parall&egrave;le sous Linux&hellip;
</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N114A8"></a>5.3.&nbsp;Calcul &agrave; l'aide des FPGA et circuits logiques reconfigurables</h3></div></div></div><p>

Si l'objectif final du traitement en parall&egrave;le reste l'atteinte des plus 
hautes vitesses possibles, et bien pourquoi ne pas fabriquer du mat&eacute;riel 
sur mesure&nbsp;? Nous connaissons tous la r&eacute;ponse&nbsp;: Trop cher, 
trop long &agrave; d&eacute;velopper, le mat&eacute;riel ainsi con&ccedil;u devient inutile lorsque 
l'algorithme change m&ecirc;me de fa&ccedil;on minime, et c&aelig;tera. Cependant, les 
r&eacute;centes avanc&eacute;es faites dans le domaine des FPGA 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Field Programmable Gate 
Array</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">R&eacute;seaux Logiques Programmables 
&agrave; effet de Champ</span>&nbsp;&raquo;) ont r&eacute;duit &agrave; n&eacute;ant la plupart de ces 
objections. Aujourd'hui, la densit&eacute; des portes logiques est suffisamment 
&eacute;lev&eacute;e pour qu'un processeur entier puisse &ecirc;tre int&eacute;gr&eacute; dans un seul 
FPGA, et le temps de reconfiguration (ou de reprogrammation) d'un de ces 
FPGA a &eacute;galement chut&eacute; &agrave; un niveau o&ugrave; l'on peut raisonnablement 
reconfigurer le circuit m&ecirc;me entre deux phases d'un m&ecirc;me algorithme.

</p><p>
Il ne faut pas avoir froid aux yeux pour utiliser ces techniques&nbsp;: Il
faudra travailler avec des langages de description mat&eacute;rielle tels que
le VHDL pour configurer les FPGA, tout comme &eacute;crire du code de bas niveau
pour programmer les interfaces avec le syst&egrave;me d'accueil Linux. En revanche,
le co&ucirc;t des FPGA est assez bas, sp&eacute;cialement pour les algorithmes op&eacute;rant
sur des donn&eacute;es enti&egrave;res et de pr&eacute;cision normale (ce qui ne repr&eacute;sente en fait
qu'un surensemble restreint de tout ce &agrave; quoi le SWAR s'applique bien), ces FPGA
peuvent effectuer des op&eacute;rations complexes &agrave; peu pr&egrave;s aussi vite qu'on peut les
leur transmettre. Par exemple, de simples syst&egrave;mes &agrave; base de FPGA ont accus&eacute; des
performances sup&eacute;rieures &agrave; celles des supercalculateurs lors de recherches sur
des bases de donn&eacute;es g&eacute;n&eacute;tiques.
</p><p>
Il existe plusieurs compagnies produisant du mat&eacute;riel appropri&eacute; &agrave; base de FPGA,
mais les deux suivantes en sont un bon exemple&nbsp;:
</p><p>

Virtual Computer Company propose toute une gamme de produits utilisant 
des FPGA Xilinx &agrave; base de SRAM et reconfigurables dynamiquement. Leur 
&laquo;&nbsp;<span class="quote">Virtual ISA Proto Board</span>&nbsp;&raquo; 8/16 bits co&ucirc;te moins de 2000 
dollars.

</p><p>
L'ARC-PCI d'Altera (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Altera Reconfigurable Computer</em></span></span>&nbsp;&raquo;, sur bus PCI), sur <a href="http://www.altera.com/html/new/pressrel/pr_arc-pci.html" target="_top">http://www.altera.com/html/new/pressrel/pr_arc-pci.html</a>, est un type de carte similaire, mais utilisant les FPGA d'Altera et un
bus PCI comme interface plut&ocirc;t qu'un bus ISA.
</p><p>

Bon nombre de ces outils de conception, langages de description 
mat&eacute;rielle, compilateurs, routeurs, et c&aelig;tera, sont livr&eacute;s sous forme 
d'un code objet qui ne fonctionne que sous DOS ou Windows. Nous 
pourrions simplement conserver une partition DOS/Windows sur notre PC 
d'accueil et red&eacute;marrer lorsque nous en avons besoin. Toutefois, la 
plupart de ces outils peuvent probablement fonctionner sous Linux en 
utilisant <code class="literal">dosemu</code> ou des &eacute;mulateurs Windows tels que 
<code class="literal">wine</code>.

</p></div><div class="footnotes"><br><hr align="left" width="100"><div class="footnote"><p><sup>[<a href="#N11458" name="ftn.N11458">26</a>] </sup>

N.D.T.&nbsp;: WINE a &eacute;volu&eacute; avec le temps et reconna&icirc;t naturellement
les versions plus r&eacute;centes de ce syst&egrave;me d'exploitation.

</p></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s04.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s06.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">4.&nbsp;SIMD <span class="foreignphrase"><em class="foreignphrase">Within A Register</em></span>&nbsp;: SWAR (Ex&nbsp;: utilisation de MMX)&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;6.&nbsp;D'int&eacute;r&ecirc;t g&eacute;n&eacute;ral</td></tr></table></div></body></html>