# Fonctionnement d'un ordinateur

Dans ce cours, vous allez apprendre quels sont les composants d'un ordinateur et comment ceux-ci fonctionnent. Ce cours commencera par des choses simples, comme le binaire, pour arriver progressivement jusqu'au fonctionnement des derniers processeurs, en passant par plein de choses passionnantes comme l'assembleur, les mémoires caches, etc. Ce cours est accessible à n'importe qui, sans prérequis, mais se veut cependant assez complet et riche en informations.
    Terminé
* Une version imprimable du livre « Fonctionnement d'un ordinateur » est disponible. (voir/ modifier)
* Une version PDF de ce livre est disponible.
    L'auteur du livre tient à remercier vivement Dominus Carnufex et Vayel, qui se sont chargés de la relecture et de la correction orthographique d'une ancienne version de ce cours. Merci à eux pour le travail titanesque qui a été fourni.

## Le codage des informations

* L'encodage des données
* Le codage des nombres
* Les codes de détection/correction d'erreur

## Les circuits électroniques

* Les portes logiques
* Les transistors et portes logiques
* Les circuits intégrés

### Les circuits combinatoires

* Les circuits combinatoires
* Les circuits de masquage
* Les circuits de sélection
* Les circuits de calcul logique et bit à bit

### Les circuits séquentiels

* Les bascules : des mémoires de 1 bit
* Les circuits synchrones et asynchrones
* Les registres et mémoires adressables
* Les circuits compteurs et décompteurs
* Les timers et diviseurs de fréquence

### Les circuits de calcul et de comparaison

* Les circuits de décalage et de rotation
* Les circuits pour l'addition et la soustraction
* Les unités arithmétiques et logiques entières (simples)
* Les circuits pour l'addition multiopérande
* Les circuits pour la multiplication et la division
* Les circuits de calcul flottant
* Les circuits de comparaison

### Les autres circuits

* Les circuits de génération d'aléatoire
* Les circuits de conversion analogique-numérique

## L'architecture d'un ordinateur

* L'architecture de base d'un ordinateur
* La hiérarchie mémoire
* La performance d'un ordinateur
* La loi de Moore et les tendances technologiques
* Les techniques de réduction de la consommation électrique d'un processeur

## Les bus et liaisons point à point

* Les bus et liaisons point à point (généralités)
* Les encodages spécifiques aux bus
* Les liaisons point à point
* Les bus électroniques
* Quelques exemples de bus et de liaisons point à point

## Les mémoires RAM/ROM

* Les différents types de mémoires
* L'interface d'une mémoire électronique
* Le bus mémoire

### La micro-architecture d'une mémoire adressable

* Les cellules mémoires
* Le plan mémoire
* Le contrôleur mémoire interne
* Les mémoires évoluées

### Les mémoires primaires

* Les mémoires ROM : Mask ROM, PROM, EPROM, EEPROM, Flash
* Les mémoires SRAM synchrones
* Les mémoires RAM dynamiques (DRAM)
* Le contrôleur mémoire externe

### Les mémoires exotiques

* Les mémoires associatives
* Les mémoires FIFO et LIFO

## Le processeur
### L'architecture externe

* Langage machine et assembleur
* La pile d'appel et les fonctions
* Les interruptions et exceptions
* Les registres du processeur
* L'encodage des instructions
* Les jeux d'instructions
* Le modèle mémoire : alignement et boutisme
* Un exemple de jeu d'instruction : l'extension x87

### La micro-architecture

* Les composants d'un processeur
* Le chemin de données
* L'unité de chargement et le program counter
* L'unité de contrôle

### Les jeux d'instruction spécialisés ou exotiques

* Les processeurs de traitement du signal
* Les architectures actionnées par déplacement

### La mémoire virtuelle et la protection mémoire

* L'espace d'adressage du processeur
* Le partage de l'espace d'adressage : avec et sans multiprogrammation
* L'abstraction mémoire et la mémoire virtuelle

## Les entrées-sorties et périphériques

* Les méthodes de synchronisation entre processeur et périphériques
* L'adressage des périphériques
* La mémoire virtuelle des périphériques
* La carte mère, chipset et BIOS
* Les périphériques et les cartes d'extension

## Les mémoires de stockage

* Les mémoires de masse : généralités
* Les disques durs
* Les solid-state drives
* Les disques optiques
* Les technologies RAID

## La ou les mémoires caches

* Les mémoires cache
* Le préchargement
* Le Translation Lookaside Buffer

## Le parallélisme d’instructions

* Le pipeline
* Les pipelines de longueur fixe
* Les pipelines de longueur variable

### Les accès mémoire et le pipeline

* Les accès mémoires et le pipeline
* Les caches non-bloquants

### Les branchements et le front-end

* Les exceptions précises et branchements
* La prédiction de branchement
* Les optimisations du chargement des instructions

### L’exécution dans le désordre

* Les dépendances de données et l'exécution dans le désordre
* Le renommage de registres
* La désambigüisation de la mémoire
* Annexe : Le scoreboarding et l'algorithme de Tomasulo

### L'émission multiple

* Les processeurs superscalaires
* Les processeurs VLIW et EPIC
* Les architectures dataflow

## Les architectures parallèles

* Les architectures parallèles
* Les architectures multiprocesseurs et multicœurs
* Les architectures multithreadées et Hyperthreading
* Les architectures à parallélisme de données
* Les architectures parallèles exotiques
* La cohérence des caches
* Les sections critiques et le modèle mémoire

## Annexes

* Les mémoires historiques
* Le matériel réseau
* Les architectures neuromorphiques
* La tolérance aux pannes
* Les circuits réversibles

## Liens vers ressources externes
### Sur wikilivres

* Les cartes graphiques, un livre du même auteur qui aborde spécifiquement l'architecture des cartes vidéo.
* Monter un PC, pour une approche bien plus pratique et utile.
* Les systèmes d'exploitation, un cours qui explique l'interaction entre systèmes d'exploitation et matériel. Le sujet (les systèmes d'exploitation) est si lié au matériel informatique qu'il peut être vu comme un prolongement du présent cours, ou tout du moins comme un très bon complément.
* Électronique numérique : logique, un cours d'électronique numérique, disponible sur Wikilivre. Un excellent complément pour les premiers chapitres du cours.

### Liens divers

* Stack Computers: the new wave : un livre sur les architectures à pile.
* Capability-Based Computer Systems : un livre sur les architectures à capacités.
* Museum of analog computing. Ce site en anglais parle d'un sujet qui n'a pas été abordé dans ce livre : les calculateurs analogiques.