Vous êtes sur la page 1sur 22

Microprocesseur et

Assembleur
Filière SUD
Cours basé sur deux livres:
• «Computer Organization & Design», 2e édition, Patterson &
Hennessy 1998
• couvre la plupart des sujets de ce cours
• Très bien écrit
• Basée principalement sur l'architecture MIPS R3000
• « ARM System-on-Chip Architecture », Steve Furber, 2000
• Fortement recommandé – très bon livre sur le processeur ARM
Tout ce que vous devez savoir sur l’informatique
(en tant qu’Ingénieur Cloud et IoT)
• Ce que l’enseignement de l’informatique n'est pas:
• L’informatique n’est pas seulement une question de programmation en C, Java, Python
ou d’autres langages
• L’informatique ne se résume pas à apprendre le code machine ou un code spécifique
d’un microprocesseur et son jeu d'instructions
• L'informatique ne consiste pas à apprendre à utiliser Office 2016 (ou 2019)
• ...
• L’enseignement de l’informatique devrait permettre d’ :
• Avoir un modèle (au niveau approprié) du fonctionnement d'un ordinateur (ou d’un
système de calcul)
• Avoir les capacités de concevoir et réaliser une bonne solution logicielle pour un
problème
• Être capable de gérer la complexité dans un système
• Être capable d'utiliser un ordinateur / un microprocesseur pour résoudre un problème
d'ingénierie
L’informatique comme discipline
• L'informatique ne concerne pas seulement un PC ou un Mac (ou une tablette ...)
• La plupart des microprocesseurs sont utilisés dans des applications embarquées
• Celles-ci vont d’un programme de quelques kilo-octets sur un simple microprocesseur 4 bits dans
une machine à laver à quelques Mo de code sur un processeur 32 (ou 64) bits sur un téléphone
mobile
• En tant qu'ingénieur (IoT), on sera plus intéressé par les applications embarquées, que par
exemple, la programmation de bases de données sur un ordinateur central IBM (dans une
banque?)
• Mais on garde un esprit généraliste ...
• L’informatique devrait être un outil pour nous aider à aborder ces disciplines mais pas une
fin en soi (Computer Science vs Engineering)
• En tant qu’ingénieur, on a besoin d’apprendre différentes aspects concernant le
MATERIEL ET le LOGICIEL
Compétences et connaissances attendues des
étudiants (dans un cadre plus large que ce cours)
• Compétences:
• Être capable de concevoir et d’écrire un programme assez volumineux dans
un langage procédural (ou objets) pour effectuer une tâche utile non
forcément numérique.
• Connaissances (cadre plus large que ce cours)
• Comprendre les principes de base du génie logiciel tels que:
• La méthodologie de conception descendante
• Modularité, encapsulation d’information, cohésion
• Les logiciels ne doivent pas simplement être écrits, mais conçus et «engineered»
• Test et documentation
Connaissances (Suite)
• Comprendre les concepts de structures de données, d’algorithmes et de paradigme
orienté-objet tels que:
• Structures de données de base - enregistrement, listes chaînées, arbres, files d'attente, tables, etc.
• Comment concevoir une structure de données pour améliorer l’efficacité des algorithmes et la
maintenabilité du code
• Quelques algorithmes couramment utilisés
• Notions d'efficacité et de complexité des algorithmes
• Concepts d’encapsulation dans le contexte d’une conception orientée objet
• Comprendre le fonctionnement d'un ordinateur. Cela devrait inclure:
• Quelques notions de base de l’architecture des ordinateurs et du jeu d’instructions de bas niveau
• Les principaux blocs à l'intérieur d'un PC
• La relation entre le matériel, les microprogrammes (par exemple, le BIOS), le système d’exploitation
et les applications logicielles
• Certains aspects de l’interfaçage tels que les entrées / sorties, pourquoi avoir besoin de
pilotes de périphériques, les interruptions et DMA.
Ce qu’on va voir dans ce cours
• Qu'est-ce qu'un ordinateur?
• Qu'est-ce que l'architecture ISA (Instruction Set Architecture)?
• Comment un ISA est-il implémenté dans le matériel? (au niveau abstrait)
• Arithmétique sur ordinateur
• Architecture du processeur - chemin de données et contrôle
• Pipelining simple dans les processeurs
• Hiérarchie de la mémoire de base
• Un ordinateur (simple) s'interfaçant avec des périphériques
• Processeurs embarqués (survol)
• Programmation en langage d'assemblage - une bonne partie du cours
Logiciel
Logiciel

Système Logiciel de Développement


Firmware
d’exploitation Développement Logiciel

• Assembleur / • Programmation
• BIOS
• Disques / Système Compilateur / procédurale /
• Bootstrap objets
de fichiers éditeur de liens
• Modes • Génie logiciel
• Ordonnanceur • Émulateur /
d’adressage • Structures de
• Droits et privilèges débugger
• Jeu d’instructions données
• Changement de • Profiler • Algorithmes
• Langage
contexte • IDE • Langages de
d’assemblage
• Librairies programmation
Matériel
Matériel

Architecture du Hiérarchie de la Interfaces


Autres interfaces
processeur mémoire utilisateur

• Architecture des • Architecture


ordinateurs • Hiérarchie de la d’affichage • Interruptions
• Exécution des mémoire • Gestion des • Direct Memory
instructions • Caches évènements du Access (DMA)
• Flot de données • Interfaces mémoire clavier • Protocoles de
• Flot de contrôle • Stockage et • Gestion des communication
• Prédiction des disques évènements de la • Poignée de
branches souris
• Bus mémoire main
• … • Bus d’affichage
Qu’est-ce que l’architecture des ordinateurs
?
Elevé
Application
Système
Compilateur d’exploitation
d’abstraction

Architecture du jeu d’instruction (ISA)


Niveaux

Architecture du processeur Système d’E/S


Conception numérique
Bas Conception des circuits VLSI

• Clé: Instruction Set Architecture (ISA) – Archi. Du jeu d’instruction


• Différents niveaux d’abstraction
Niveaux de représentation dans les
ordinateurs
Programme dans un Langage de
programmation de haut niveau temp := v[k];
v[k] := v[k+1];
Compilateur v[k+1] := temp;
Programme dans un Langage
d’assemblage lw $15, 0($2)
lw $16, 4($2)
Assembleur sw $16, 0($2)
sw $15, 4($2)
Programme dans un Langage
Machine
0000 1001 1100 0110 1010 1111 0101 1000
Interprétation 1010 1111 0101 1000 0000 1001 1100 0110
Machine 1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
Control Signal Specification
Qu'est-ce que le «Instruction Set
Architecture (ISA)»?
“. . . les attributs d'un système [informatique] tel que vu par le
programmeur, c'est-à-dire la structure conceptuelle et le comportement
fonctionnel, distincts de l’organisation des flux de données et de contrôle, de
la conception logique et de la mise en œuvre physique. "
Amdahl, Blaaw et Brooks, 1964
• ISA comprend: -
• Organisation du stockage programmable
• Types de données et structures de données: codages et représentations
• Formats d'instruction
• Jeu d'instructions (ou de codes d'opération)
• Modes d'adressage et d'accès aux éléments de données et instructions
• Conditions exceptionnelles
Instruction Set Architecture (ISA)
• Une abstraction très importante
• interface entre le matériel et les logiciels de bas niveau
• standardise les instructions, les modèles de bits du langage machine, etc.
• avantage: différentes implémentations de la même architecture
• désavantage: empêche parfois l’utilisation de nouvelles innovations
Vrai ou Faux: La compatibilité binaire est extrêmement importante?
• Architectures de jeux d'instructions modernes:
• ARM, 80x86 / Pentium / K6 / x86_64, PowerPC, DEC Alpha, MIPS, SPARC, HP
Facteurs influençant les architectures
informatiques
Technologie
Applications

Architecture d’un Langages de


ordinateur programmation

Système
d’exploitation Connaissances
Technologie: Densité logique (processeurs)

Source: https://fr.wikipedia.org/wiki/Loi_de_Moore#/media/File:Loi_de_Moore.png
• « Le nombre de transistors double tous les 36 mois » - Loi de Moore
(Plus vraiment valable)
Améliorations de la technologie des circuits
intégrés numériques

Capacité Vitesse
Logic 2x tous les 3 ans 2x tous les 3 ans
DRAM 4x tous les 3 ans 1.4x tous les 10 ans
Disque 4x tous les 3 ans 1.4x tous les 10 ans
Améliorations de la vitesse des processeurs
Coût d'un processeur
• Coût IC = Coût du dé + Coût de test + Coût d'emballage
• Coût de l'emballage: dépend des broches, de la dissipation thermique
Puce Coût du dé Package Test et Total
Pins Type Coût assemblage

386DX $4 132 QFP $1 $4 $9


486DX2 $12 168 PGA $11 $12 $35
PowerPC 60 $53 304 QFP $3 $21 $77
HP PA 7100 $73 504 PGA $35 $16 $124
DEC Alpha $149 431 PGA $30 $23 $202
SuperSPARC $272 293 PGA $20 $34 $326
Pentium $417 273 PGA $19 $37 $473
Amélioration de la performance du
microprocesseurs par rapport aux autres

• Les microprocesseurs prennent le relais (vrai ou faux?)


Organisation interne

• Principaux composants d'un système informatique typique


Un système informatique typique avec E / S
Résumé
• Tous les ordinateurs sont constitués de cinq composants
• Processeur: (1) chemin de données et (2) chemin de contrôle
• (3) mémoire
• (4) Périphériques d'entrée et (5) Périphériques de sortie
• Toutes les « mémoires » ne sont pas égales
• Cache: mémoire rapide (mais chère) placée plus près du processeur
• Mémoire principale: mémoire moins chère - on peut en avoir plus
• Les périphériques d’entrée et de sortie (E / S) ont l’organisation la
moins régulière
• Large gamme de vitesse: graphiques vs clavier
• Large gamme d’exigences: rapidité, standard, coût, etc.

Vous aimerez peut-être aussi