Vous êtes sur la page 1sur 5

ESB 223

Chapitre 2 : L’architecture de base


1. Introduction
En informatique, le terme architecture désigne l’organisation des éléments d’un système et les
relations entre ces éléments. L’architecture logicielle concerne l’organisation de différents
programmes entre eux. L’architecture matérielle concerne l’organisation des différents dispositifs
physiques que l’on trouve dans un ordinateur. Dans les deux cas, cette organisation se base sur le
principe de décomposition. Il existe deux grandes types d’architecture de base :

- L’architecture Von Neumann, conçue par John Von Neumann à la fin des années 1940,
- L’architecture de Harvard, basée sur un relais de Harvard Mark I qui utilisait des systèmes
de mémoire séparés.

2. Principe de décomposition
Il consiste à effectuer un découpage en couches de complexités croissantes. La Figure 1 présente
un tel découpage dans le cas général de machines au sens de “dispositifs capables d’effectuer un
ensemble d’opérations élémentaires”. Une opération élémentaire d’un niveau supérieur est ainsi
décomposée en une suite d’opérations élémentaires du niveau inférieur. Le passage d’une suite
d’opérations (“programme”) d’un niveau n au niveau inférieur n-1 consistera en une traduction de
chaque opération de la suite du niveau n en la suite correspondante de niveau n-1.

Le principe de décomposition est utilisé pour la résolution de problèmes (algorithmique) ; le niveau


inférieur était le langage programmation (Python, C++, Java etc.) Lui-même, le niveau supérieur était
relatif au problème traité (Gérer un bon de commande, gérer de réservation de billet, etc.).

S’agissant des langages de programmation, ce principe est également utilisé dans la définition de
machines virtuelles de haut niveau: la définition d’un jeu d’instructions d’une machine fictive permet
de faire abstraction des machines réelles et d’assurer simplement la portabilité des programmes (Java
Virtual Machine de Sun Microsystems, Common Language Interface de Microsoft .Net, ou encore
Python Virtual Machine de CPython). S’agissant de l’architecture des ordinateurs, la Figure 2 présente
la décomposition traditionnelle du fonctionnement d’un ordinateur. Le niveau supérieur est ici par
exemple le langage Python (et plus généralement les langages de programmation), le niveau le plus
bas est celui des circuits électroniques (transistors/portes logiques).

YUSSUFA 1
ESB 223

- Niveau 5: langages de haut niveau - traduits en niveau 4 par des compilateurs


- Niveau 4: langage d’assemblage - langage symbolique du jeu d’instructions associé au
processeur
- Niveau 3: système d’exploitation - la gestion des processus (programmes en cours
d’exécution) et des entrées/sorties est dévolue au système d’exploitation, on y accède par
des suites d’instructions spécifiques (appels systèmes)
- Niveau 2: langage machine - langage binaire du jeu d’instructions du processeur
- Niveau 1: microprogramme - une instruction machine est elle-même décomposée en une
suite de micro-instructions
- Niveau 0: circuits - circuits combinatoires, séquentiels, horloges, ..., pilotés par les micro-
instructions

Les 3 niveaux supérieurs de la Figure 2 concerne l’architecture logicielle, les 3 niveaux inférieurs
concerne l’architecture matérielle. Notez que matériel et logiciel sont conceptuellement équivalents:
toute opération effectuée par logiciel peut l’être directement par matériel et toute instruction
exécutée par matériel peut être simulée par logiciel. La frontière entre matériel et logiciel (symbolisée
par le trait rouge) est donc arbitraire, et son choix est essentiellement facteur de coût. C’est à cette
frontière que l’on définit un processeur par la spécification du jeu d’instructions du processeur, de la
représentation binaire de ces instructions et de leur sémantique (“ce qu’elles font”). S’y ajoute
également la spécification d’une représentation symbolique des instructions, les mnémoniques, qui
constitueront le langage d’assemblage. Pour exprimer ces spécifications, il est nécessaire de disposer
d’un modèle formel de la structure d’un ordinateur et d’un processeur.

3. Modèle de Von Neumann


Le modèle d’architecture de la plupart des ordinateurs actuels provient d’un travail effectué par
John Von Neumann pendant le seconde guerre mondiale. L’objectif était la mise au point de
calculateurs pour établir les tables de tirs de pièces d’artillerie. Ce modèle a été conçu avec une
structure de stockage unique afin de conserver les instructions et les données (en entrée ou produites)
lors du traitement ou calcul. La plupart des systèmes à microprocesseur se servent du modèle
d’architecture de Von Neumann comme modèle de base (Voir Figure 3).

Fig. :3 Architecture de Von Neumann (schéma éclaté)

YUSSUFA 2
ESB 223

Une machine suivant le modèle de Von Neumann est constituée de:

- Une unité centrale composée d’une unité de calcul (Unité Arithmétique et logique UAL) et
d’une unité de contrôle
- Une mémoire centrale composée d’un ensemble de cellules stockant des nombres binaires
représentant les programmes et les données
- Un ensemble de périphériques permettant à la machine d’interagir avec le monde extérieur
- Un canal de communications entre ces trois entités, appelé Bus, communément composé
de simples fils

Ces éléments cités ci-dessus sont reliés à base des voies de communication appelées : Bus.

4. Principes de la machine de Von Neumann


- Machine universelle contrôlée par un seul programme
- Données et programme en mémoire (binaire)
- Exécution séquentielle par défaut
- Possibilité de tests, boucles et sauts conditionnels
- Architecture SISD (Single Instruction Single Data)
 Une UC traite une séquence d’instructions
 Une UAL traite une séquence de données

5. Mémoire centrale
La mémoire centrale de l’ordinateur est constituée d’un ensemble ordonné de 2m cellules, chaque
cellule contenant un mot de n bits. Ces mots permettent de conserver indifféremment programmes
et données. On accède à n’importe laquelle de ces cellules au moyen de son adresse, nombre entier
compris dans l’intervalle [0, 2m-1]. Cet accès est en temps constant quelle que soit la valeur de l’adresse
(accès direct). Pour communiquer avec la mémoire, le bus est subdivisé en un bus d’adresse et un bus
de données. IL existe deux types d’accès:

 La lecture transfère sur le bus de données le mot contenu dans la cellule dont l’adresse est
située sur le bus d’adresse.
 L’écriture transfère dans la cellule dont l’adresse est sur le bus d’adresse, le mot contenu
sur le bus de données.

6. Périphériques
Les périphériques, ou organes d’Entrée/Sortie(E/S), permettent à l’ordinateur de communiquer avec
l’homme ou d’autres machines, et de mémoriser massivement des données ou des programmes dans
des fichiers. Ils se présentent à l’unité centrale le plus souvent sous la forme de plages d’adresses
mémoire dans lesquelles sont accessibles les registres de contrôle et d’état des contrôleurs de
périphériques.

Exemples : Périphériques d’entrés nous avons le clavier, la souris, etc.

Périphériques de sortis nous avons l’écran, imprimante, etc.

7. Unité centrale de traitement


L’unité centrale (ou processeur) est responsable de l’exécution du programme de l’ordinateur: elle
exécute séquentiellement les instructions stockées en mémoire centrale sous forme de code binaire.
Elle regroupe:

YUSSUFA 3
ESB 223

 Un ensemble de registres R1, R2,..., Rk: un registre est une mémoire de travail pour le
processeur, en général de même largeur qu’un mot mémoire. Leur accès est directement codé
dans les instructions machine. Ils sont utilisés comme opérandes et résultats de calculs, ou
encore pour stocker des adresses en mémoire. Leur présence est indispensable en raison de
la relative lenteur de la mémoire centrale par rapport à la vitesse du processeur.
 Une unité de calcul: elle réalise les opérations arithmétiques (addition, soustraction,
multiplication, division) et logiques (et logique, ou logique, non logique, opérations bit-à-bit,
décalages/rotations). Les opérations flottantes sont souvent réalisées par une seconde unité
de calcul spécialisée. En plus du résultat en lui-même, ces unités calculent également des
indicateurs booléens (drapeaux): résultat nul, résultat non nul, retenue, dépassement de
capacité. Ces unités ont en général deux opérandes en entrée et fournissent un résultat en
sortie. Par construction elles calculent en permanence, fournissant un nouveau résultat
presque immédiatement après la modification d’une des opérandes.
 Un ensemble de bus internes au processeur: ils relient entre eux les registres, les entrées des
unités de calcul et leurs sorties. Des interrupteurs permettent de commander le passage des
données entre les registres et les bus. L’ensemble registres, UAL et bus internes constituent le
chemin de données. Les commandes (interrupteurs, UAL, mémoire, ...) s’appelent des signaux
de contrôle.
 Une unité de contrôle: elle contrôle dans le temps les unités de calcul et les interrupteurs pour
exécuter effectivement chaque instruction machine. Elle a en charge également l’exécution
séquentielle du programme: le programme étant stocké en mémoire centrale, l’unité de
contrôle dispose d’un registre spécial CP appelé compteur de programme, qui contient
l’adresse de la prochaine instruction à exécuter. L’unité de contrôle répète indéfiniment le
cycle instruction donné par l’algorithme suivant:
- Lire le mot stocké à l’adresse mémoire donnée par le registre CP et le stocker dans un
second registre spécial RI, appelé registre instruction
- Incrémenter le compteur de programme CP
- Décoder l’instruction stockée dans RI, aller chercher les opérandes éventuels en
mémoire, faire réaliser le calcul éventuel par l’unité de calcul et stocker le résultat
dans un registre ou en mémoire

8. Les bus et décodage d’adresses


a) Les bus
Pour qu’il y ait communication entre les différents composants de l’architecture de base, il faut
nécessairement des systèmes de communication entre eux, appelés Bus. Un bus est un ensemble de
fils qui assure la transmission du même type d’information. Il en existe de 3 grands types de bus à
savoir :

- Un bus de données: qui assure le transfert des informations entre le microprocesseur et son
environnement, et inversement. Son nombre de lignes est égal à la capacité de traitement du
microprocesseur.
- Un bus d'adresses: qui permet la sélection des informations à traiter dans un espace mémoire
(ou espace adressable). Par exemple l’adresse d’une donnée à aller chercher en mémoire ;

YUSSUFA 4
ESB 223

- Un bus de commande ou de contrôle: constitué par quelques conducteurs qui assurent la


synchronisation des flux d'informations sur les bus des données et des adresses. Exemples :
écriture d’une donnée en mémoire, lecture d’une donnée en mémoire.

Figure 3 : Les bus


b) Décodage d’adresses
La multiplication des périphériques autour du microprocesseur oblige la présence d’un décodeur
d’adresse chargé d’aiguiller les données présentes sur le bus de données. En effet, le microprocesseur
peut communiquer avec les différentes mémoires et les différents boîtiers d’interface. Ceux-ci sont
tous reliés sur le même bus de données et afin d’éviter des conflits, un seul composant doit être
sélectionné à la fois.

Chaque composant d’une carte micro-programmée doit être accessible par le CPU. Par
exemple, si le CPU est en train de sauvegarder une variable, il faut que le composant RAM
soit sélectionné et que les autres composants soient inhibés. Afin d’ordonner le système, une
plage d’adresses est réservée à chaque composant. La fonction ayant pour tâche l’attribution
des adresses s’appelle « décodage d’adresses »

YUSSUFA 5

Vous aimerez peut-être aussi