CHAPITRE I.
Introduction à la méthodologie de
conception des architectures.
7
1.1. Objectifs
Les objectifs de ce chapitre :
• Présenter les démarches de conception d’une manière générale
• Présenter des rappels sur les circuits combinatoires et séquentiels
• Définir quelques architectures des calculateurs et les jeux d’instructions
• Présenter la méthodologie de conception des processeurs
1.2. Introduction
D’une manière générale, l’organisation
l d’un ordinateur est donné par un
microprocesseur, une mémoire centrale et des périphériques entrées/ sorties (figure 1)
Figure 1. Architecture des Ordinateurs
Nous décomposons le µP en un chemin pour véhiculer les données et une unité de
contrôle pour donner des commandes afin de satisfaire le fonctionnement du système
complet. (Figure 1)
1.3. Démarche de conception
Il s’agit de deux démarches de conception différentes :
• Démarche Descendante : connue par le nom « Top-Down Design » qui consiste à
un raffinement de chaque constituant depuis la spécification des besoins jusqu’à
couche silicium
• Démarche Ascendante : connue par le nom « Bottom-up Design » c’est uns
abstraction sur l’ensemble des constituants comme le montre la figure 2
8
Figure 2. Démarche de Conception
Les niveaux d’abstraction lors d’une conception matérielle sont donnés par la table 1,
Nous désignons par :
• Conception électrique : L’optimisation
L’optimisation des caractéristiques électriques
• Conception logique : L’optimisation des équations logiques
• Conception numérique : L’optimisation des traitements
• Conception architecturale : Le choix des fonctionnalités
• Conception fonctionnelle : l’optimisation des
es implémentations matérielles et
logicielles
• Conception système : L’optimisation conjointe des implémentations matérielles et
logicielles
9
Type Eléments de base Conception
Composants Conception électrique
discrets
SSI Conception logique
MSI Conception numérique
LSI Conception architecturale
VLSI Conception fonctionnelle
ULSI Conception système
Table 1 Niveaux d’abstraction pour une conception matérielle
1.4. Rappels sur la logique combinatoire
1.4.1. Fonctions Logiques
Nous rappelons que :
• Les variables d’entrées sont des variables logiques indépendantes
• Les variables de sorties sont des variables contenant l’état de la fonction après
évaluation des opérateurs logiques sur les variables d’entrées.
• Les Opérateurs logiques de base sont :
ET : z = u1.u2=u1u2, z est vrai si u1 est vraie et u2 est vrai
OU : z = u1+u2, z est vrai lorsque u1 est vrai ou u2 est vrai, ou les deux.
NON : z = u, z est vrai si u est fausse.
• Les portes logiques associées à ces opérateurs sont représentées comme suit :
10
Figure 3. Symboles des fonctions logiques de base
• Ces fonctions peuvent être réalisées par des opérateurs universels NAND e NOR,
leurs symboles sont :
Figure 4. Symboles des fonctions universelles
1.4.2. Les décodeurs : (n entrées, 2n sorties)
Nous rappelons qu’un décodeur est un dispositif qui pour chaque combinaison des
variables d’entrée, active la sortie correspondante.
Figure 5. Symbole d’un décodeur 3 vers 8
1.4.3. Les multiplexeurs
Un multiplexeur est un circuit à 2n entrées d’information (D0, D1…), n entrées
d’adresse A, B… et une sortie S. Les entrées d’adresse permettent la sélection d’une
entrée d’information pour transmettre son état à la sortie S.
Figure 6. Symbole logique d’un Multiplexeur 8 vers 1
11
1.4.4. Les démultiplexeurs
Un démultiplexeur distribue l’information d’entrée D vers l’une des 2n sorties (S0,S1…),
la sélection de la sortie concernée étant effectuée par n variables d’adresse. Il est
schématisé ainsi :
Figure 7. Symbole logique d’un Démultiplexeur 1 vers 8
1.4.5. Les réseaux logiques combinatoires
Toute fonction logique de n variables peut se mettre sous une forme de somme de
produits ou de produit de sommes. On peut donc utiliser une structure comportant
deux ensembles fonctionnels :
• Un ensemble d’opérateurs ET organisé sous forme d’une matrice qui génère
les produits des variables d’entrée, éventuellement complémentées.
• Un ensemble d’opérateur OU, appelé matrice OU, qui somme les produits.
La figure 8 illustre un exemple de réseau logique programmable
12
Figure 8. Réseau logique programmable avec matrices ET et OU programmables
1.5. Rappel sur la logique séquentielle
1.5.1. Horloges
La Synchronisation par horloge permet de spécifier à quel moment un élément qui
contient un état doit être mis à jour. Les instants de stabilités des valeurs d’un circuit
peuvent être un front ou un niveau comme le montre la figure 9
Figure 9. Instants de stabilité d’un circuit
Il existe deux types de synchronisation avec horloge :
• Synchronisation par niveau (haut ou bas)
• Synchronisation par front (montant ou descendent)
1.5.2. Bascule – bistable (synchrone)
La différence entre bistable et bascule est au moment où l’horloge provoque le
changement d’état actif, en effet pour :
• La bistable synchrone est caractérisée par un état modifié à chaque fois que
les entrées changent et que l’horloge est à 1)
13
Figure 10. Circuit logique d’une bistable D
Lorsque l’Horloge C = 1 ⇒ nouvelle valeur de D remplace l’ancienne valeur
• La bascule
ascule synchrone est caractérisée par un état n’est modifié que sur un
front d’impulsion de l’horloge)
Figure 11. Circuit logique d’une Bascule D
1.5.3. Banc de registres
onstruction du chemin de données
Pour la construction données, il est primordial d’utiliser un BANC DE
REGISTRES comportant au moins un décodeur
décodeur pour chaque port de lecture ou écriture
et un ensemble
nsemble de registres construits avec des bascules D.. le schéma bloc de ce banc de
registres est donné par la figure 12.
Figure 12. Symbole de banc de registres
14
La description détaillée du banc de registres met en évidence un décodeur, un
ensemble de registres à chargement parallèle, des multiplexeurs et des signaux de
contrôle (Figure 13)
Figure 13. Description détaillée du banc de registres
Chaque registre $ est constitué d’un ensemble de bascules D précédés par
multiplexeur à une entrée de commande C et le changement d’état est cadencé par le
front montant de l’horloge CLK
Figure 14. Registre $ intégré dans le µP MIPS
1.6. Théorie des architectures
1.6.1. Architectures des calculateurs
Il existe essentiellement deux types d'architectures de calculateur. Le premier s'appelle
l'architecture de Von Neumann et plus tard l'architecture de Harvard a été adoptée pour
concevoir des ordinateurs numériques.
15
[Link]. Architecture de VON NEUMANN
Cette architecture inclut un seul système de stockage unique (mémoire) pour stocker
des données ainsi que le programme à exécuter. Le processeur a besoin au moins de
trois cycles d'horloge pour compléter une instruction. Dans le premier cycle d'horloge, le
processeur reçoit l'instruction de la mémoire et la décode. Dans le second cycle, les
données requises sont extraites de la mémoire. Et dans le troisième cycle, le processus
est achevé par une phase d’exécution. C'est une architecture relativement plus ancienne
et elle a été remplacée par l'architecture de Harvard (Figure 15).
Figure 15. Architecture de VON NEUMANN
[Link]. Architecture de HARVARD
L’ordinateur a deux mémoires séparées pour stocker des données et un programme d’où
existence de deux bus de données DMD et PMD (Figure …) Le processeur peut terminer
la recherche de l’instruction et de la donnée dans un cycle si des stratégies de pipeline
appropriées sont mises en œuvre (Figure 2). La plupart des architectures informatiques
modernes sont basées sur l'architecture de Harvard.
Figure 16. Architecture de HARVARD
16
[Link]. Architectures de HARVARD modifié
Cette architecture de HARVARD a été améliorée dans le but d’avoir plus de performance
par ajout d’un DMA pour augmenter le taux de transfert de données vers la mémoire
sans passer par le microprocesseur dans le cas de son déconnexion et aussi par l’ajout
d’une mémoire cache dont le but est stocker les informations les plus fréquemment
utilisées par les logiciels et les applications lorsqu'ils sont actifs, cette architecture est
appelée HAVAARD MODIFIE (Figure…) souvent utilisée par les microcontrôleurs.
Figure 17. Architecture de HARVARD modifié
1.6.2. Architectures de jeux d’instructions ISA
Les performances des microprocesseurs sont définies par trois facteurs clés :
• le nombre d’instructions I
• le temps de cycles d’horloge T
• le nombre de cycles d’horloge par instruction. C
Cette performance se calcule par : I * C* T, Les valeurs de I et C se distinguent suivant
l’architecture des jeux d’instruction, nous distinguons trois types
• CISC (Complex Instruction Set Computer) : I faible, C grand
• RISC (Reduce Instruction Set Computer) : I élevé, C faible
• VLIW (Very Large Instruction Word) : I réduit car macro-instruction RISC, C faible
Cette dernière est une Famille d’ordinateurs dotés d’un Processeur à mot d’instruction
très long (> 128 bits) dont une instruction est équivalente à plusieurs instructions
indépendantes et les compilateurs génèrent un code en fonction des ressources
disponibles
17
[Link]. Architectures de jeu d’instructions Complexes CISC
C’est une architecture avec une grande variété d’instructions où le µP doit exécuter des
tâches complexes par instruction unique. Pour une tâche donnée, une machine CISC
exécute ainsi un petit nombre d’instructions mais chacune nécessite un plus grand
nombre de cycles d’horloge (Exemple:8086,68000…). Par le passé la conception de
machines CISC était la seule envisageable. En effet, vue que la mémoire travaillait très
lentement par rapport au processeur, on pensait qu’il était plus intéressant de
soumettre au microprocesseur des instructions complexes, plutôt que de coder une
opération complexe par plusieurs instructions plus petites (qui demanderaient autant
d’accès mémoire).
[Link]. Architectures de jeu d’instructions réduites RISC
Des études statistiques menées au cours des années 70 ont montré que les programmes
générés par les compilateurs se contentaient le plus souvent d'affectations, d'additions
et de multiplications par des constantes. Les instructions complexes doivent être
réalisées à partir de séquences basées sur les instructions élémentaires, ce qui
nécessite un compilateur très évolué dans le cas de programmation en langage de haut
niveau (Exemple : MIPS,SPARC…).
[Link]. Synthèse entre RISC et CISC
Comme synthèse, la différence entre ces deux architectures est présentée par le tableau
suivant
Architecture RISC Architecture CISC
• instructions simples ne prenant • instructions complexes prenant
qu’un seul cycle plusieurs cycles
• instructions au format fixe • instructions au format variable
• décodeur simple (câblé) • décodeur complexe
• beaucoup de registres (microcode)
• seules les instructions LOAD et • peu de registres
STORE ont accès à la mémoire • toutes les instructions sont
• peu de modes d’adressage susceptibles d’accéder à la
• compilateur complexe mémoire
• beaucoup de modes d’adressage
• compilateur simple
Tableau 2 : Différence entre RISC et CISC
18
La figure 18 illustre un exemple comparatif entre les deux architectures
Figure 18. Exemple de différence entre RISC et CISC
Dans ce que se suit, nous intéressons à l’ensemble de jeu d’instruction MIPS.
1.7. Processus de conception des processeurs pour jeu d’instructions
MIPS
Pour créer un chemin de données qui nous permet d’exécuter l’ensemble des
instructions MIPS. Nous devons respecter les étapes suivantes : Chaque instruction est
donnée en fonction des transferts des registres.
Le chemin de données doit permettre le transfert des informations
entre les registres.
Le chemin de données inclut la mémoire programme.
Le Choix d’un ensemble de composants nécessaires (UAL MUX,
Banc de Registre…) pour le chemin de données et établissement de
la méthodologie horloge.
L’assemblage des différents composants pour la satisfaction des
besoins.
La détermination les points de contrôles nécessaires pour
effectuer le transfert des registres.
L’assemblage de la logique de contrôle. (séquenceur)
19