CentraleSupélecDépartement informatique
Plateau de Moulon
3 rue Joliot-Curie
F-91192 Gif-sur-Yvette cedex
Principes de fonctionnement des ordinateurs

Code : 3IF2020, 24 HPE (40 HEE)

Objectif

L’objectif de ce module est de démystifier le fonctionnement d’un ordinateur, en décrivant le fonctionnement des différents éléments qui le composent. On fera notamment découvrir aux étudiants comment tout calcul complexe se réduit à un enchaînement d’opérations élémentaires sur des bits, comment les structures de contrôle des langages de programmation peuvent être réalisées à l’aide des instructions d’un microprocesseur, et comment le processeur interagit avec son environnement via des périphériques. L’apprentissage est principalement axé sur la pratique, avec la conception d’un microprocesseur simple dans un simulateur, et la programmation d’un microcontrôleur équipé de périphériques simples.

Compétences acquises dans ce module :

  • analyser le fonctionnement d’un processeur
  • analyser les interactions entre un processeur et son environnement (mémoire, périphériques, interruptions)
  • déterminer l’impact des structures de contrôle des langages de programmation sur l’exécution des programmes
  • être capable de décrypter la fiche descriptive d’une carte ou d’un ordinateur.

Logiciels nécessaires

  • Java 1.8 ou ultérieur (pour exécuter LogiSim). Installez de préférence le kit de développement (JDK), vous en aurez besoin par la suite. La licence d'utilisation de Java par Oracle a changé à partir de la version 1.9, vous pouvez installer la version OpenJDK à la place de celle d'Oracle.
  • Python 3 avec le module pyparsing (pour l'assembleur de la machine de cours) et pyserial (pour communiquer avec la pyboard).
  • Mieux que l'assembleur rudimentaire écrit en Python, il existe un éditeur Eclipse qui génère le listing et le code machine à chaque fois que vous enregistrez un fichier .arm. Pour l'installer dans Eclipse, ajoutez l'update site MiniARM update site avec pour adresse https://wdi.centralesupelec.fr/boulanger/misc/mini-arm-update-site et installez ce qui s'y trouve. Vous pouvez aussi installer directement une version d'Eclipse avec tous les plug-ins nécessaires pour cette année.
  • L'éditeur Thonny (solution simple pour communiquer avec diverses cartes Micropython)
  • L'éditeur Mu (solution simple pour communiquer avec la pyboard, mais peut poser des problèmes avec les fichiers trop longs)

Notez que l'image Docker fredblgr/docker-webtop-3asl que vous pouvez lancer sur votre machine grâce aux scripts start-3asl.sh ou start-3asl.ps1, ou exécuter sur MyDocker, contient Logisim, mais ne vous permettra pas de vous connecter à la Pyboard. Utilisez donc Thonny pour cela.

Logisim

Vous trouverez ci-dessous les versions de Logisim pour (en cas de problème de version de Java ou autre, utilisez le .jar qui fonctionne partout) :

Toute plateforme
logisim.jar, enregistrez le fichier où vous voulez, l'application se lance en double-cliquant le .jar.
Mac OS
logisim+.zip, décompressez cette archive et placez l'application Logisim+ où vous voulez, par exemple dans le dossier Applications de votre Mac. Comme cette application n'est pas siognée par un développeur officiellement enregistré auprès d'Apple, MacOS refusera d'exécuter l'application. Vous devrez donc faire un clic droit et sélectionner "Ouvrir", jusqu'à ce que l'application se lance.
Linux
logisim-linux.tgz, décompressez l'archive, placez le dossier Logisim là où vous le souhaitez, puis, dans un terminal, placez vous dans ce dossier et exécutez la commande ./install.sh. Il suffit ensuite de double-cliquer sur le fichier Logisim pour lancer l'application.
Windows
logisim-windows.exe

Enseignants

Séances

  • séance 1 : cours, de l'introduction à la conception d'un processeur
  • séance 2 : premier bureau d'étude (logique, arithmétique, circuits séquentiels, chemin de données)
  • séance 3 : cours, fin de la conception d'un processeur, codage en langage d'assemblage
  • séance 4 : 2e bureau d'étude (conception d'un microprocesseur)
  • séance 5 : 3e bureau d'étude (programmation en langage d'assemblage, appels de fonctions, récursion)
  • séance 6 : cours, mémoires, entrées-sorties, interruptions, systèmes d'exploitation
  • séance 7 : 4e bureau d'étude (Micropython : entrées-sorties simples, interruptions)
  • séance 8 : 5e bureau d'étude (Micropython : entrées-sorties, notion de pilote de périphérique, interface avec un coupleur)

Bureaux d'étude

  • Premier BE : logique combinatoire, bascules, registres, chemin de données d'un processeur
  • Deuxième BE : conception d'un microprocesseur
  • Troisième BE : traduction de quelques constructions Python en langage d'assemblage
  • Quatrième BE : entrées-sorties simples, interruptions
  • Cinquième BE : entrées-sorties, notion de pilote de périphérique

Informations complémentaires

Ressources

Ouvrages

Andrew Tanenbaum, Architecture de l'ordinateur, 4e édition, 2001

Andrew Tanenbaum, Structured Computer Organization, 6th edition, 2012

John Hennessy, David Patterson, Computer Organization and Design: The Hardware/Software Interface, 5th edition, 2013

John Hennessy, David Patterson, Organisation et conception des ordinateurs : l'interface matériel/logiciel, 1994

John Hennessy, David Patterson, Computer Architecture: A Quantitative Approach, 5th edition, 2011