« Fonctionnement d'un ordinateur/Les jeux d'instructions » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 186 :
Parmi ces jeux d'instructions spécialisés, on peut citer les fameux jeux d'instructions '''Digital Signal Processor''', aussi appelés des DSP. Nous reviendrons plus tard sur ces processeurs dans le cours, un chapitre complet leur étant dédié, ce qui fait que la description qui va suivre sera quelque peu succinte. Ces DSP sont des processeurs chargés de faire des calculs sur de la vidéo, du son, ou tout autre signal. Dès que vous avez besoin de traiter du son ou de la vidéo, vous avez un DSP quelque part, que ce soit une carte son ou une platine DVD. Ces DSP ont souvent un jeu d'instruction similaire aux jeux d'instructions RISC, avec quelques instructions supplémentaires spécialisées pour faire du traitement de signal. On peut par exemple citer l'instruction phare de ces DSP, l'instruction MAD, qui multiplie deux nombres et additionne un 3éme au résultat de la multiplication. De nombreux algorithmes de traitement du signal (filtres FIR, transformées de Fourier) utilisent massivement cette opération. Ces DSP possèdent aussi des instructions dédiées aux boucles, ou des instructions capables de traiter plusieurs données en parallèle (en même temps). De plus, les DSP utilisent souvent des nombres flottants assez particuliers qui n'ont rien à voir avec les nombres flottants que l'on a vu dans le premier chapitre. Certains DSP supportent des instructions capable d'effectuer plusieurs accès mémoire en un seul cycle d'horloge : ils sont reliés à plusieurs bus mémoire et sont donc capables de lire et/ou d'écrire plusieurs données simultanément. L'architecture mémoire de ces DSP est une architecture Harvard, couplée à une mémoire multi-ports. Les caches sont rares dans ces architectures, quoique parfois présents.
 
Certains processeurs sont carrément conçus pour un langage de programmation en particulier. On appelle ces processeurs, conçus pour des besoins particuliers, des '''processeurs dédiés'''. HistoriquementPar exemple, lesl'ALGOL-60, premiersle processeursCOBOL deet cele typeFORTRAN étaientont deseu processeursleurs dédiésarchitectures audédiées. langageLes LISP,fameux un''Burrough vieuxE-mode'' langageB5000/B6000/B7000 fonctionnelétaient autrefoisspécialement utilisé,conçus maispour aujourd'huiexécuter peude usitél'ALGOL-60. DeLeurs telscousins processeursB2000/B3000/B4000 datentétaient deseux annéesconçus 1970pour etle étaientCOBOL. utilisésLe dansFORTH, ce qu'on appelaitun des machinespremiers LISP.langages Cesà machinespile LISPde étaienthaut capablesniveau, d’exécuterpossède certainesde fonctionsnombreuses deimplémentations basehardware duet langageest directementun dansdes leurrares circuitslangages :de elleshaut possédaientniveau notammentà unavoir ''garbageété collector''directement câblé dansen sesassembleur circuitssur ainsicertains queprocesseurs. desPar instructionsexemple, machineson supportantpeut unciter typagele déterminéprocesseur àFC16, l’exécutioncapable d’exécuter nativement du FORTH. D'autresDes langages fonctionnels ont aussi eu droit à leurs processeurs dédiés. : leLe prolog en est un bel exemple., Autreavec langageles quisuperordinateurs ade eu5ème l'honneurgénération d'avoirqui seslui propresétaient processeursdédié. dédiésOn :peut leaussi FORTH,citer unles desmachines premiersLISP, langagesdédiés àau pilelangage deLISP, hautqui niveau.datent Cedes langageannées possède1970. deElles nombreusesétaient implémentationscapables hardwared’exécuter etcertaines estfonctions unde desbase raresdu langageslangage dedirectement hautdans niveauleur àcircuits avoir: étéelles directementpossédaient câblénotamment enun assembleur''garbage surcollector'' certainscâblé processeurs.dans Parses exemple,circuits onainsi peutque citerdes leinstructions processeurmachines FC16,supportant capableun d’exécutertypage nativementdéterminé duà FORTHl’exécution.
 
Les processeurs dédiés ont eu leur heure de gloire au début de l'informatique, à une époque où les langages de haut niveau venaient d'être inventés. A cette époque, les compilateurs n'étaient pas performants et ne savaient pas bien optimiser le code machine. Les programmes compilés faisaient un mauvais usage des instructions machines, ne savaient pas bien utiliser les modes d'adressages adéquats, manipulaient assez mal les registres, etc. Il était alors rationnel, pour l'époque, de rapprocher le code machine cible et le langage de programmation de haut niveau. De nombreuses architectures dédiés ont ainsi étés inventées, avant que les concepteurs se rendent compte des défauts de cette approche. A l'heure actuelle, les algorithmes des compilateurs se sont améliorés et savent nettement mieux utiliser le matériel. Ils produisent du code machine efficace, ce qui rend les architecture dédiées bien moins intéressantes. Si on ajoute les défauts de ces architectures dédiées, par étonnant que les architectures dédiées aient presque disparues. Les défauts en question ne sont pas nombreux, mais assez simples à comprendre. Premièrement, elles sont très rapides pour un langage de programmation en particulier, mais sont assez mauvaises pour les autres, d'où un problème de "compatibilité". Ajoutons à cela que les langages de programmation peuvent évoluer, devenir de moins en moins populaires/utilisés, ce qui rend la création d'architectures généralistes plus pertinente. Enfin, les architectures dédiées sont évidemment des processeurs CISC, pour implémenter les nombreuses fonctionnalités des langages évolués. Et les défauts des CISC sont assez rédhibitoires à l'heure actuelle.