Fiche synthétique de soutien à la formation (et à l'autoformation)  "Architecture des ordinateurs".

auteur : Denis Bouhineau (Denis.Bouhineau@imag.fr), Université de Grenoble.

À qui s'adresse ce document ?

Stagiaires en formation ISN à l'UFR IM²AG et à distance, ce document présente la formation "Architecture des ordinateurs".

Prérequis

L'enseignement d'"Architecture des ordinateurs" est à la frontières de divers disciplines en informatique et hors informatique (physique, électronique, logique, compilation, programmation, système d'exploitation, réseau), chacune de ces disciplines peut être vue comme un prerequis ou comme une piste pour de futurs et possibles appronfondissements.

En première approche, l'enseignement s'appuie sur une connaissance "commune"  de la logique et de la programmation.

Objectifs

Savoirs : les connaisssances visée concernent les représentations binaires des informations (en particulier des nombres), les circuits logiques (combinatoires et séquentiels), le fonctionnement d'un ordinateur (selon l'architecture de von Neumann) et la notion de langage machine (algorithmique de base, passage de paramètres, notion de compilation).

Savoir-faire : savoir traduire sous la forme d'un circuit combinatoire et/ou séquentiel (selon le cas), et en langage machine de petits algorithmes, évaluer leur complexité ; modéliser le comportement d'un ordinateurs à l'aide d'un automate interpréteur de langage machine.

Connaissances et outils pédagogiques : représentations binaires (entiers naturels en binaire pur, entiers relatifs en complément à 2, réels selon la norme IEEE 754) ; circuits combinatoires (portes logiques de base, petits circuits, algorithmique des circuits menant aux additionneurs, par exemple) ; circuits séquentiels (modélisation des automates, circuits à flots de données, décomposition Partie Contrôle/Partie Opérative) ; architecture de von Neumann (automate de d'interpétation du langage machine, chemin de données) ; langage machine (maitrise partielle d’un assembleur particulier, par ex : celui des machines ARM, éléments de compilation, édition de lien, relocation et exécution).

Guide de lecture

L'"architecture des ordinateurs" est une discipline relativement stable d'où une relative solidité et uniformité de sa présentation dans les livres généralistes disponibles en bibliothèque ou sur internet. La taille des livres, souvent impressionante, n'est pas un signe de qualité mais de complétude, elle témoigne de l'ampleur du programme à aborder et de la diversité des détails qui peuvent être observés. De petits livres, ou même telle partie de livre pourra comporter l'essentiel (c'est le pari du chapitre "Architecture" du livre pour enseignants ISN rédigé sous la coordination de Gilles Dowek [référence 1]) et pourra se révéler de bonne qualité. Un livre un peu ancien pourra également être de bonne qualité, la partie centrale de ce qui constitue cet enseignement est connu depuis près de 50 ans. Un livre plus moderne pourra aborder, certes, des avancés récentes dans la conception des ordinateurs "modernes" mais pour la plupart celles-ci seront hors programme (et souvent, pas toujours aussi récentes que cela) ; un lecteur interressé pourra retrouver ces "avancées" dans les livres spécialisés, rédigés pour les experts, visant un processeur particulier, ou sur internet, par exemple sous wikipédia.

Attention cependant, exception faite peut-être du livre pour les élèves [référence 2], la plupart des livres sur l'"Architecture des ordinateurs" concerne un public "averti", au minimum de bagages scientifiques, des connaissances en logique et en programmation sont utiles. Il manque probablement un livre de vulgarisation portant sur l'ensemble de la discipline "Architecture des ordinateurs" (ponctuellement, il existe des vulgarisations pour telle ou telle partie, mais sans vue d'ensemble, ni complétude). Pour autant la discipline n'est pas intrinséquement particulièrement difficile (en premier abord), mais l'accumulation des concepts rend son exposé complexe et probablement trop long pour un ouvrage de vulgarisation.

Bibliographie

[référence 1] Introduction à la science informatique : Pour les enseignants de la discipline en lycée informatique, Gilles Dowek (coordination de l’ouvrage collectif) Collection Repères pour agir, CRDP Académie de Paris. 2011.

[référence 2] Informatique et sciences du numérique Spécialité ISN en terminale S.
Gilles Dowek, Jean-Pierre Archambault, Emmanuel Baccelli, Claudio Cimelli, Albert Cohen, Christine Eisenbeis, Thierry Viéville, Benjamin Wack

[référence 3] Architectures logicielles et matérielles. Paul Amblard, Jean-Claude Fernandez, Fabienne Lagnier, Florence Maraninchi, Pascal Sicard, and Philippe Waille. Dunod, 2000.

[référence 4] Architecture de l'ordinateur. Andrew Tanenbaum,

[référence 5] Computer System a programmer perspective, O'Hallaron & Bryant.

[référence 6] Computer Organization and Design : The Hardware/Software Interface. David A. Patterson and John L. Hennessy.  Morgan Kaufmann, 4e edition, 2011.

[référence 7] Arithmétique des ordinateurs. Jean-Michel Muller. Masson, 1989.

Travail pratique

Travail pratique, la question est délicate ... Globalement, le programme d'enseignement comporte trois parties (circuit, automate d'interprétation de langage machine, langage machine), pour chaque partie il existe des environnements pouvant permettre un travail pratique, mais ces environnements sont souvent spécialisés, spécifiques à l'enseignement d'"Architecture des ordinateurs" et demande un temps de prise en main conséquent. Pour une formation courte, il est donc peu envisageable de se lancer dans des travaux pratiques (au risque sinon, de perdre son temps pour un maigre résultat, car c'est l'une des autres raisons de ce manque d'ambition : les résultats obtenus sont souvent réduits, voire très réduits, en particulier au regard de l'investissement nécessaire pour les obtenir). Un bémol peut-être pour les environnements de simulation de circuits logiques (mais cela ne représente qu'une petite partie du programme, et ce ne sont que des simulations).

Exemple de logiciels pour la partie circuit :

[logiciel 1] diglog, http://www.cs.berkeley.edu/~lazzaro/chipmunk/

[logiciel 2] logisim, http://ozark.hendrix.edu/~burch/logisim/

À la place, des manipulations de plus haut niveaux pourront être imaginées qui mettent en lumière les concepts existant au niveau machine, et des vidéos illustrant les enseignements pourront être recherchés sur internet, par exemple sur le fonctionnement d'un ordinateur (à un niveau d'abstraction suffisament élevé).

Exemple de vidéos :

[vidéo 1] sur ASM et procesim  : http://www.youtube.com/playlist?list=PL141E706BFCCA78E1

 

Histoire des sciences - Vie courante - Anomalies

Quelques éléments de contexte peuvent être trouvés pour la discipline "Architecture des ordinateurs" dans son histoire, la vie courante et les anomalies (bug ou virus). -en très bref, 3 pistes à déveloper- : (1) L'histoire de l'informatique est récente (les premiers ordinateurs ont été construits à la fin de la seconde guerre mondiale), cette proximité permet de nombreux travaux de relecture et de compréhension/traduction. (2) L'ordinateur est omni présent, l'informatique embarquée (les microprocesseurs cachées un peu partout) encore plus. Il y a de quoi sortir des applications purement mathématiques ou algorithmiques (les plus évidentes) (3) L'informatique, c'est aussi beaucoup d'anomalies (bug, virus), malheureusement, à tous les niveaux ; cependant, ces anomalies peuvent aussi perçues comme des chemins vers la connaissance. Du mal, on peut tirer du bien (?).

Activités

La formation en Architecture comporte
- un préalable (les représentations binaires de l'information, en particulier des entiers),
- 3 thèmes majeurs (dont 1 de moindre taille) et
- des pistes à explorer s'il reste du temps.

Sur la base de 10 temps à consacrer à cette matière, 1 temps pourrait être consacré à la représentation binaire de l'information, 3 aux circuits, 1 à la machine de von Neumann et aux automates d'interprétation du langage machine, 3 au langage machine, et s'il reste du temps 2 temps pour l'histoire de l'informatique, la vie courante et les anomalies (ces notions peuvent être aussi abordées au cours des autres moments).

Pour les préalables pas de commentaires.

Circuits

Voir pdf d'exercices.

Comment se faire ses propres exercices ? Prendre un petit algorithme (calcul de la racine carré, calcul des termes de la suite de Fibonnaci, calcul du pgcd par la méthode des différences, tracé de droite, élévation à la puissance, ...), c'est à dire, un algorithme ayant peu de structures de données, une boucle et une conditionnelle, et chercher à produire un circuit qui réalise la même fonction ; trois variantes peuvent en général être imaginées, la variante combinatoire, la variante séquentielle sous forme d'un circuit à flot de données, la variante séquentielle sous forme d'une décomposition PC-PO. L'objectif à atteindre à la fin de cette partie, c'est d'obtenir le début d'une pratique usuelle de traduction quasi automatique d'un algorithme en circuit (circuits ou algorithmes : cela doit être la même chose).

L'exercice de base, pour la traduction d'un algorithme simple avec une boucle, peut consister à ne faire que le corps de la boucle (cela donnera un circuit combinatoire, en général). Pour compléter l'exercice on peut ajouter le mécanisme de "boucle" (le circuit devient alors généralement séquentiel), puis les initialisations et la sortie de boucle. Enfin, pour être complet, on peut faire dessiner des chronogrammes de l'exécution de la solution obtenue et faire une étude de la complexité du résultat obtenu (en particulier, si on a résolu le problème 3 fois, avec trois type de circuits différents [combinatoire, séquentiel type flot de données, séquentiel type PC/PO], on peut comparer les 3 solutions)

Automate interpréteur de langage machine

C'est une partie parfois oubliée des livres, parfois présentée sous le nom "chemin de donnée", parfois sur le terme "chemin d'exécution". Plus réduite que les autres parties principales, c'est pourtant une partie  essentielle à la compréhension du mode de fonctionnement d'un ordinateur.

C'est une partie délicate, car elle se trouve logiquement entre circuit et assembleur, mais demande de connaître un peu de deux pour être bien comprise : dans un cours allant dans le sens circuit>automate>assembleur ou dans le sens inverse, cette partie arrive toujours avant de connaitre la suite (et qui est nécessaire) ... Si quelqu'un trouve un autre ordre logique ...

Les exercices sur cette partie sont souvent similaires, techniques et longs à exposer.

Pour diverses raisons, le travail sur cette partie peut donc être réduit, et comporter un recherche de vidéo montrant le cycle de base d'un ordinateur (quand il est décrit finement, on voit l'action de l'automate interpréteur de langage machine) suivie d'une analyse de ce qui ce passe.

Exemple : http://www.youtube.com/watch?v=bVSkvr89zoo ou http://www.youtube.com/watch?v=hBnMCe0Du6o ou http://www.youtube.com/watch?v=c06WxAvD4Nk ou ...

Sinon, pour ceux qui veulent vraiment travailler cette partie il y a quelques exercices à la fin des examen...  (et + pour comprendre les avancées en matière d'exécution d'instructions assembleur)

Langage machine

Il y a une source infinie d'exercices : prendre un algorithme, le coder dans un langage de bas niveau (C par exemple), puis le traduire en assembleur. Mais attention, ne pas prendre d'algorithme trop compliqué ...

La source est infinie, comme le nombre d'algorithmes.

Pour avoir quelques exemples d'exercices voir pdf.

 

Il serait intéressant aussi de pouvoir faire tourner quelques programmes, mais c'est beaucoup moins simple qu'il peut y paraitre, la mise en place d'un environnement satisfaisant est souvent couteuse. j'ai placé ici : http://www.youtube.com/playlist?list=PL141E706BFCCA78E1 quelques vidéo pour ll'utilisation d'un langage machine, en l'occurence langage assembleur ARM. Si vous connaissez un autre langage machine, ARM est probablement proche (les langages machines sont similaires), et vos expérimentations ou programmations pratiques pourront tout aussi bien se faire avec ce langage.

 

Histoire de l'informatique, vie courante et anomalies

sur l'histoire : voir pdf d'exercices + recherche sur internet "premier ordinateur", "premier langage", ou "histoire de l'informatique" ...

sur les anomalies, la vie courante : voir le cours du collège de France, http://www.college-de-france.fr/site/gerard-berry/

Modifié le: mardi 20 novembre 2012, 18:40